電子計數(shù)器以及用于電子計數(shù)的方法
【專利摘要】本發(fā)明涉及電子計數(shù)器以及用于電子計數(shù)的方法。該電子計數(shù)器包括存儲單元的序列和增量邏輯,每個存儲單元都是非易失性的并且支持1狀態(tài)和0狀態(tài),計數(shù)器被配置成,在存儲單元的序列的存儲單元中,將計數(shù)器當前的計數(shù)狀態(tài)的至少一部分表示為1狀態(tài)和0狀態(tài)的模式;增量邏輯被配置成使1狀態(tài)和0狀態(tài)的模式前進到下一個模式,以表示計數(shù)器的增量,增量邏輯包括編程增量邏輯和擦除增量邏輯,增量邏輯被配置成在編程階段和擦除階段之間交替,在編程階段中,編程增量邏輯使模式前進;在擦除階段中,擦除增量邏輯使模式前進。
【專利說明】電子計數(shù)器以及用于電子計數(shù)的方法
【技術領域】
[0001]本發(fā)明涉及非易失性有限壽命存儲器中的電子計數(shù)器,該電子計數(shù)器包括存儲單元的序列和增量邏輯,每個存儲單元都是非易失性的并且支持I狀態(tài)和O狀態(tài),該電子計數(shù)器被配置成在存儲單元的序列的存儲單元中,將計數(shù)器當前的計數(shù)狀態(tài)的至少一部分表示為I狀態(tài)和O狀態(tài)的模式,以及增量邏輯被配置成使I狀態(tài)和O狀態(tài)的模式前進到下一個模式,以表示計數(shù)器的增量。
【背景技術】
[0002]在許多應用中,電子設備都需要非易失性的非遞減計數(shù)器。例如,可能需要這樣的計數(shù)器來跟蹤設備的使用量。例如,為了保修的原因,可能要跟蹤設備多久被上電一次。需要非易失性的非遞減計數(shù)器的另一個原因是出于安全的目的。例如,通過引用結合在本文中的申請?zhí)枮閁S2010 / 0318786,標題為“用于分布式系統(tǒng)的可信硬件組件”的美國專利申請公開了一種包括單調非遞減計數(shù)器的可信硬件組件。其他非遞減計數(shù)器的應用包括避免回滾攻擊,在回滾攻擊中,攻擊者試圖將整個設備回滾到以前的狀態(tài),例如以延長在數(shù)字權利下對內容的訪問。
[0003]在非易失性存儲器中,特別是在EEPROM存儲器中,實現(xiàn)計數(shù)器的一個特殊方面是,存儲器對它支持的程序擦除周期數(shù)可能有限制。
[0004]計數(shù)器的典型實現(xiàn)是二進制計數(shù)器,其中計數(shù)器的值存儲在非易失性存儲器中。二進制計數(shù)器的優(yōu)勢是需要最少的位數(shù)來支持特定的計數(shù)范圍。計數(shù)到2~n-l只需要η位的存儲單元。另一方面,使用二進制表示,計數(shù)器在每次增量時切換最不重要的位。這導致在EEPROM中,在最不重要的位中周期數(shù)非常高,可能會超過EEPROM的壽命(壽命是指EEPROM存儲單元直到存儲單元的使用壽命結束為止能夠被編程然后再被擦除的周期數(shù))。發(fā)生故障的設備很可能是、特別是η的值比較大的設備。
[0005]比二進制計數(shù)器值稍好一點的方法是使用格雷編碼,在格雷編碼中進行位編碼以便從一個計數(shù)器狀態(tài)變化到下一個計數(shù)器狀態(tài)時,只有一個位發(fā)生變化(并不總是最不重要的位)。這將使周期數(shù)分布的稍微好一些,但是與所使用的存儲單元的數(shù)量相比,周期的總數(shù)仍然非常高。即使使用平衡格雷編碼,對于η的值比較大的情況,位的變化數(shù)最終將會超過壽命,其中,在平衡格雷編碼中,位的變化在各個位上是分布不均的。
[0006]在復雜的系統(tǒng)如閃存中使用非常復雜的方法來均衡耗損。這些方法在編碼上需要比較大的付出,只適用于復雜的文件系統(tǒng)?;靖拍钍?“受損”的存儲單元被重新定位到其他存儲區(qū)域。
[0007]專利號為5231592的美國專利公開了在電可擦可編程只讀存儲器(EEPROM)上實現(xiàn)的已知的計數(shù)器。壽命為V的EEPR0M,每個存儲單元被設計為最多可以被擦除和編程V次。EEPROM被劃分成數(shù)字區(qū)域和N個計數(shù)區(qū)域,在N個計數(shù)區(qū)域中以二進制表示來存儲計數(shù)值,每個計數(shù)區(qū)域能夠存儲從O到V的計數(shù)值,數(shù)字區(qū)域用于以二進制表示來存儲數(shù)字,表示目前正在使用中的計數(shù)區(qū)域。計數(shù)區(qū)域被用于連續(xù)地存儲N*V次計數(shù),最大值為V~2。
【發(fā)明內容】
[0008]雖然已知的計數(shù)器能夠超出壽命計數(shù),而不會使各個存儲單元超出它們的壽命,但是這些已知的計數(shù)器有很多缺點。例如,根據(jù)上述設計的計數(shù)器不能超過V~2這個限制。此外,計數(shù)器需要大量的位數(shù)來實現(xiàn)計數(shù)。
[0009]至少由于這些原因,需要改進的計數(shù)器。
[0010]本發(fā)明提出的電子計數(shù)器包括存儲單元的序列和增量邏輯。存儲單元的序列中的每個存儲單元是非易失性的,并且支持I狀態(tài)和O狀態(tài)。I狀態(tài)可以被稱為“編程狀態(tài)”,O狀態(tài)可以被稱為“擦除狀態(tài)”。該計數(shù)器被配置成,在存儲單元的序列的存儲單元中,將計數(shù)器當前的計數(shù)狀態(tài)的至少一部分表示為I狀態(tài)和O狀態(tài)的模式。例如,計數(shù)器可以采用另外的存儲器,包括可能的另外的序列來表示計數(shù)狀態(tài)。
[0011]增量邏輯被配置成使I狀態(tài)和O狀態(tài)的模式前進到下一個模式,以表示計數(shù)器的增量。增量邏輯包括編程增量邏輯和擦除增量邏輯,增量邏輯被配置成在編程階段和擦除階段之間交替,在編程階段中,編程增量邏輯使模式前進;在擦除階段中,擦除增量邏輯使模式前進。編程增量邏輯被配置成將存儲單元的序列中的下一個存儲單元從O狀態(tài)編程為I狀態(tài)。當存儲單元的序列中的所有存儲單元都處于I狀態(tài)時,編程階段結束。擦除增量邏輯被配置成將存儲單元的序列中的下一個存儲單元從I狀態(tài)擦除成O狀態(tài)。當存儲單元的序列中的所有存儲單元都處于O狀態(tài)時,擦除階段結束。
[0012]對在存儲單元的序列中表示的計數(shù)狀態(tài)的部分的計數(shù)操作在整個計數(shù)周期中需要非常少的編程操作和擦除操作。在編程階段,每個存儲單元僅被編程一次,在擦除階段,每個存儲單元僅被擦除一次。用η來表示序列中的存儲單元的數(shù)量,計數(shù)器可以表示2η個不同的模式,即從O到(2η_1)計數(shù)。從計數(shù)開始直到計數(shù)器溢出的整個周期,即模式重復,每個存儲單元只需要一個壽命周期,一個壽命周期是一個編程操作和一個擦除操作。此外,計數(shù)器可以達到的最大值僅僅受被分配的存儲單元的數(shù)量的限制,而不受存儲單元的最大壽命的限制。
[0013]存儲單元的序列中的一個存儲單元被表示為最后一個存儲單元。存儲單元的序列中的一個存儲單元被表示為第一個存儲單元。除了最后一個存儲單元,每個存儲單元都有下一個存儲單元。序列可以被實現(xiàn)為一個或多個存儲器字或一個或多個存儲器字的部分。序列可以被實現(xiàn)為數(shù)組數(shù)據(jù)結構。
[0014]如果存儲單元具有有限的壽命,被表示為V,則每個存儲單元都可以被編程V次以及擦除V次。使用這樣的存儲單元,計數(shù)器可以從O到2η-1計數(shù)V次。該計數(shù)器因此可以
重復使用。
[0015]電子計數(shù)器特別適合在EEPROM存儲器中實現(xiàn)的計數(shù)器。在實施例中,存儲單元的序列中的存儲單元是EEPROM存儲單元。某些類型的EEPROM存儲單元具有有限的壽命,通常是100000次。我們將使用100000作為壽命的示例值。該計數(shù)器設計也適用于具有更高或更低壽命的存儲器。
[0016]在實施例中,計數(shù)器包括非易失性的高字存儲器和高字增量邏輯。高字存儲器用來存儲該計數(shù)器的計數(shù)狀態(tài)的不同部分。然而,使用二進制位數(shù)系統(tǒng)將計數(shù)狀態(tài)的這個部分編碼為二進制數(shù)。通常情況下,高字存儲器中的位是從最不重要的位到最重要的位排序。優(yōu)選地,高字存儲器與存儲單元的序列在同一個物理存儲器中實現(xiàn),雖然是在不同的位置上實現(xiàn)。
[0017]高字增量邏輯被配置成對高字存儲器中表示的二進制數(shù)執(zhí)行增量。在存儲單元的序列中表示的計數(shù)狀態(tài)的部分還可以被稱為低字。在典型的操作中,通過對低字執(zhí)行增量來對計數(shù)器執(zhí)行增量。當?shù)妥忠绯鰰r,低字計數(shù)器重新開始,例如低字計數(shù)器復位,并且高位字被增加。
[0018]選擇編程階段和擦除階段其中一個階段結束來觸發(fā)對高字執(zhí)行增量。例如,當編程階段結束時或擦除階段結束時,高字增量邏輯對高字執(zhí)行增量。計數(shù)器被配置成在編程階段和擦除階段中特定的一個階段結束時對高字執(zhí)行增量。
[0019]高字計數(shù)器是非常有效的,在這個意義上,它需要很少的存儲器來編碼大量的不同的模式。然而,由于使用二進制計數(shù),任何增量通過溢出潛在地改變多個存儲單元。在實施例中,用于在另外的存儲器中計數(shù)的存儲單元的數(shù)量是ceil (log(v) / log(2))。實際上,由于在每次增量時存儲單元或者是被編程或者是被擦除,而并不是同時被編程和擦除,因此可以計數(shù)到2v次而不會違反壽命要求,這意味著可以在上式中增加一個存儲器。
[0020]采用格雷編碼可以在一定程度上提高高字計數(shù)器的壽命。變化的存儲單元最好散布在整個存儲器中。在對格雷編碼的不同選擇中,平衡格雷編碼是實現(xiàn)這一點的一個不錯的選擇。但是,請注意,并不是必須要使用格雷編碼。使用更傳統(tǒng)的二進制位數(shù)系統(tǒng)可以大大簡化設計。
[0021]將低壽命但是高存儲大小效率的高字計數(shù)器與高壽命但是低存儲大小效率的低字計數(shù)器相結合是相當有效的,其中低壽命就是指不能經(jīng)常重復使用。通過增加存儲單元的序列中的存儲單元的數(shù)目,計數(shù)器可以被配置成計數(shù)到任何期望的最大值。
[0022]增量邏輯可以被配置成,從存儲單元的序列中的最后一個存儲單元的狀態(tài)來確定存儲單元的序列當前的階段。如果最后一個存儲單元是處于O狀態(tài),則當前的階段是編程階段。如果最后一個存儲單元是處于I狀態(tài),則當前的階段是擦除階段。
[0023]在實施例中,計數(shù)器包括多個低字計數(shù)器。計數(shù)器可以包括存儲單元的多個序列,存儲單元的多個序列中的每個存儲單元是非易失性的并且支持I狀態(tài)和O狀態(tài),計數(shù)器被配置成在存儲單元的多個序列中的存儲單元中,將計數(shù)器當前的計數(shù)狀態(tài)的多個子狀態(tài)表示為I狀態(tài)和O狀態(tài)的模式,用表示序列是非激活的模式來配置存儲單元的多個序列中除了一個以外的所有序列,用與表示序列是非激活的模式不同的模式來配置存儲單元的多個序列中的一個序列,該模式是全I狀態(tài)或全O狀態(tài)。增量邏輯被配置成確定存儲單元的多個序列中沒有存儲非激活模式的激活序列,并且增量邏輯被配置成使激活序列前進到下一個模式,在下一個模式達到非激活模式時,增量邏輯進一步使存儲單元的多個序列中的下一個序列前進。
[0024]將存儲單元組織成多個序列而不是單一序列有很多優(yōu)點。多個序列顯著地擴大了實施者優(yōu)化設計的自由度。例如,可以在存儲器上使用多個序列實現(xiàn)計數(shù)器,該計數(shù)器不能單獨變位。EEPROM存儲器通常被組織在字中(例如,在16位字中);對字進行擦除即僅僅是對16位的一組組位進行擦除。在這樣的組中的所有單個位被設置之前,編程單個位的操作可能會導致嚴重妨礙所需的擦除操作。多個序列的多個最后一個存儲單元或者甚至所有最后一個存儲單元可以被存儲在同一個存儲器字中。因此,可以通過相對少的存儲器訪問,很快地獲得多個序列中轉變要被更新的序列的位置。
[0025]在實施例中,存儲單元的多個序列被存儲在可寫的非易失性存儲器的多個存儲器字中,每個存儲器字包括多個位,存儲器字的多個位的每個位實現(xiàn)多個序列的不同序列的存儲單元。雖然不是必要的,如果存儲器字中的位數(shù)等于多個序列中的序列數(shù),則可以減少激活序列中的變化數(shù)。如果存儲器在存儲器字級別上支持編程操作和擦除操作,則該實施例是特別有利的。字中的位數(shù)對于所有字都是相同的;對于多個存儲器,位數(shù)等于8、16、32或64。
[0026]也可以通過增量邏輯來確定一個序列是否是激活的。例如,增量邏輯可以被配置成,從第一個存儲單元和最后一個存儲單元的狀態(tài)來確定多個序列中的一個序列當前的階段。由于這個原因,也有利于將多個第一個存儲單元或所有第一個存儲單元都放置在相同的存儲器字中。
[0027]在實施例中,計數(shù)器包括另外的高字存儲器,該另外的高字存儲器是非易失性的,其中高字增量邏輯被配置成:確定高字存儲器和另外的高字存儲器哪一個存儲器存儲較高的數(shù),哪一個存儲器存儲較低的數(shù),對較高的數(shù)執(zhí)行增量,以及將增量后的較高的數(shù)寫入存儲較低的數(shù)的存儲器。以這種方式,即使在寫入過程中計數(shù)器斷電,也總是存在有效的高字,即增強了撕裂安全。
[0028]在實施例中,高字存儲器以及可選的另外的高字存儲器包括頭部。頭部可以包括高字計數(shù)狀態(tài)的固定模式或高字計數(shù)狀態(tài)的校驗和。這允許檢測撕裂,即意外斷電。
[0029]為了找到下一個要編程或擦除的存儲單元,增量邏輯被配置成執(zhí)行二進制搜索,以找到下一個存儲單元。優(yōu)選地,使用具有兩個指針的二進制搜索。
[0030]即使計數(shù)器是非易失性的,也可以通過使用一些易失性的存儲器來提高它的效率。例如,計數(shù)器可以包括易失性的索引存儲器。索引存儲器存儲指向存儲單元的序列中表示下一個存儲單元的存儲單元的索引。增量邏輯被配置成在執(zhí)行增量時對索引存儲器執(zhí)行增量。在啟動時例如通過對序列進行二進制搜索或線性搜索,對索引進行初始化。在實施例中,索引存儲器包括另外的索引,該另外的索引指向多個序列中的激活序列。索引存儲器可以被實現(xiàn)為寄存器、SRAM等。為了清楚起見,不需要實現(xiàn)索引存儲器,因為更新計數(shù)狀態(tài)所需的所有信息都包含在非易失性存儲器中,即都包含在序列和高字中。然而,在快速的易失性存儲器中跟蹤將要發(fā)生下一個更新的位置,可以改善更新的運行時間。可以在計數(shù)器上電時更新索引存儲器,或者在計數(shù)器上電后第一次增量之前的某個時刻更新索引存儲器。
[0031]可以在EEPROM中實現(xiàn)計數(shù)器所需的存儲器,例如多個序列和/或高字存儲器。
[0032]計數(shù)器是一種電子裝置,例如便攜式電子設備,可以作為便攜式移動電子裝置諸如移動電話的一部分。通過采用應對措施使計數(shù)器屏蔽未經(jīng)授權的訪問,計數(shù)器可以作為安全的非遞減計數(shù)器的一部分,在此不對這些應對措施進行進一步討論。計數(shù)器可以是諸如機頂盒、計算機、電視等電子設備的一部分。
[0033]本發(fā)明的另一個方面涉及一種用于電子計數(shù)的方法,其中計數(shù)器當前的計數(shù)狀態(tài)的至少一部分在存儲單元的序列中的存儲單元中被表示為I狀態(tài)和O狀態(tài)的模式。該方法包括:使存儲單元的序列的I狀態(tài)和O狀態(tài)的模式前進到下一個模式,以表示計數(shù)器的增量,計數(shù)器的增量在編程階段和擦除階段之間交替,其中,在編程階段中,將存儲單元的序列中的下一個存儲單元從O狀態(tài)編程為I狀態(tài),當存儲單元的序列中的所有存儲單元都處于I狀態(tài)時,編程階段結束,在擦除階段中,將存儲單元的序列中的下一個存儲單元從I狀態(tài)擦除成O狀態(tài),當存儲單元的序列中的所有存儲單元都處于O狀態(tài)時,擦除階段結束。
[0034]根據(jù)本發(fā)明的方法可以采用如下方式來實現(xiàn):作為計算機實現(xiàn)的方法在計算機上實現(xiàn),或者在專用硬件中實現(xiàn),或者采用這兩種方式相結合實現(xiàn)。用于根據(jù)本發(fā)明的方法的可執(zhí)行代碼可以被存儲在計算機程序產(chǎn)品中。計算機程序產(chǎn)品的實例包括存儲器設備,光存儲設備,集成電路,服務器,在線軟件等。優(yōu)選地,計算機程序產(chǎn)品包括存儲在計算機可讀介質上的非臨時性程序代碼裝置,用于當所述計算機程序產(chǎn)品在計算機上執(zhí)行時,執(zhí)行根據(jù)本發(fā)明的方法。
[0035]例如,在系統(tǒng)上包括非易失性存儲器,即EEPR0M,以及處理器。該處理器可以執(zhí)行存儲在非易失性存儲器中的軟件,該軟件控制計數(shù)器,計數(shù)器的計數(shù)狀態(tài)作為軟件被存儲在存儲器的不同部分中。這樣的計數(shù)器可以對各種事情計數(shù),例如,啟動次數(shù),執(zhí)行的加密操作的次數(shù),簽名次數(shù),對存儲系統(tǒng)重寫的次數(shù)。包括安全計數(shù)器的計數(shù)器應用非常廣泛。
【專利附圖】
【附圖說明】
[0036]圖1是說明計數(shù)器100的方框圖。
[0037]圖2是說明存儲單元的序列的內容的表。
[0038]圖3是說明計數(shù)器300的方框圖。
[0039]圖4是說明存儲單元的多個序列的內容的表。
[0040]圖5是說明支持存儲單元的多個序列的存儲器結構的表。
[0041]圖6示出了計數(shù)方法600的流程圖。
[0042]應該注意,在不同的圖中參考標號相同的項目具有相同的結構特征和相同的功能,或者是相同的信號。如果已經(jīng)對這樣的項目的功能和/或結構進行了解釋,則沒有必要在詳細說明中對它們進行重復說明。
【具體實施方式】
[0043]本發(fā)明允許多種不同形式的實施例,本文中描述的以及附圖中示出的各個實施例是用來說明本發(fā)明的原理,而并不是用來將本發(fā)明限制為本文中所描述的以及附圖中所示的具體實施例。
[0044]圖1說明了計數(shù)器100。計數(shù)器100包括非易失性的存儲器110和計數(shù)器邏輯140,非易失性的存儲器110例如是EEPROM存儲器,存儲器110和計數(shù)器邏輯140通過存儲器接口 115連接起來,存儲器接口 115允許計數(shù)器邏輯140對存儲器110進行讀取和寫入操作。
[0045]在計數(shù)器100的一個版本中,計數(shù)器邏輯140被實現(xiàn)為半導體電路。然而,計數(shù)器邏輯140還可以包括處理器執(zhí)行軟件,該處理器執(zhí)行軟件例如也存儲在存儲器110中。用軟件來實現(xiàn)可能會使計數(shù)器比較慢,另一方面,用軟件來實現(xiàn)可以降低制造成本。如果計數(shù)器是安全的、非遞減計數(shù)器的一部分,則優(yōu)選用電路來實現(xiàn)。也可以采用混合解決方案,一部分在專用硬件上運行,一部分在軟件上運行。例如,可以實現(xiàn)存儲單元的序列以及硬件,在硬件中實現(xiàn)增量。當存儲單元的序列溢出時,產(chǎn)生中斷,這會導致軟件程序更新高字。更新高字是相對比較少見的,所以較低的成本對于稍微差一點的運行時間性能,這是有利的權衡。
[0046]存儲器110包括存儲單元的序列120。在這個存儲單元的序列120中,示出了三個存儲單元:122,124,126。存儲單元可以是存儲器字的一部分。存儲單元不一定是獨立尋址的,即讀取一個存儲單元可能意味著讀取包括在該字中的所有其他存儲單元。通常情況下,存儲器接口 115所包括的數(shù)據(jù)線的數(shù)量與存儲器的字寬相同。每個存儲單元都具有有限的壽命,用V表示。這意味著,存儲單元被設計成可以被編程V次以及可以被擦除V次。存儲單元的序列120也可以被稱為低字。
[0047]計數(shù)器邏輯140包括增量邏輯150,增量邏輯150被配置成使低字的計數(shù)狀態(tài)前進,也就是使存儲單元的序列120的計數(shù)狀態(tài)前進。計數(shù)狀態(tài)被存儲在存儲器130和存儲單元的序列120中。增量邏輯150可以被配置成接收使表示計數(shù)器100前進的信號。計數(shù)器100可以被配置成只支持增量I。然而,計數(shù)器可以被配置成例如通過反復地增加I以允許更大的增量,這種情況可以被優(yōu)化。
[0048]在技術上,計數(shù)器甚至可以被配置成例如通過執(zhí)行增量的逆運算來支持減量操作。然而,這會導致壽命的問題,因為受減量操作影響的存儲單元被寫入的次數(shù)要比其他存儲單元更多。這意味著,減量操作將減少計數(shù)器的計數(shù)上限。尤其是經(jīng)常進行減量操作是有害的。
[0049]增量邏輯150包括階段確定器152。計數(shù)狀態(tài)的前進是在一系列編程操作和一系列擦除操作中交替進行的,一系列編程操作被稱為編程階段,一系列擦除操作被稱為擦除階段。階段確定器152確定將要在哪個階段使計數(shù)狀態(tài)前進。
[0050]可以選擇首先進行編程階段,然后是擦除階段,或者其他方式。的確,在一般情況下,通過將所有的I狀態(tài)和O狀態(tài)反相,就可以有效地實現(xiàn)在存儲單元序列120中計數(shù)的計數(shù)器。我們將描述的計數(shù)器100首先是編程階段,然后是擦除階段,但是請注意,這個順序是可以顛倒的(如果使用了多個序列,即使對于每個序列,這個順序都是可以顛倒的)。
[0051]增量邏輯150包括編程增量邏輯154和擦除增量邏輯156 ;取決于階段判斷器152的判斷,編程增量邏輯154正在編程階段中使用,擦除增量邏輯156正在擦除階段中使用。
[0052]存儲器110包括高字存儲器130。高字存儲器130也可以在物理上不同的存儲器上實現(xiàn)。存儲器110可以包含位模式,代表以二進制表示的數(shù)字。為了對高字存儲器130執(zhí)行增量,計數(shù)器邏輯140包括高字增量邏輯160。在實施例中,高字增量邏輯160可以被實現(xiàn)為“加I”操作。在更先進的實施例中,高字增量邏輯160以撕裂安全模式(tearing-safemanner)對高字存儲器130進行寫入操作。高字增量邏輯160被配置成從增量邏輯150接收表示低字溢出的信號,在這種情況下,高字增量邏輯160執(zhí)行增量,即使高字存儲器130加1,增量邏輯150在開始模式中建立存儲單元的序列120。
[0053]即使使用了多個序列,高字的使用也是可選的。在這種情況下,存儲單元的序列120可以被用作計數(shù)器,該計數(shù)器具有較小的范圍,但是可以被經(jīng)常重復使用。如果高字存儲器130被省略,則高字增量邏輯160也可以被省略。
[0054]增量邏輯150被配置成檢測溢出。在這種情況下,擦除階段是最后的階段,并且當存儲單元的序列120中的所有存儲單元再次處于O狀態(tài)時,例如,通過擦除增量邏輯156,給高字增量邏輯160發(fā)信號,溢出被檢測到。[0055]圖2中示出了如何可以更新存儲單元的序列120的內容。在圖2中,時間向下推移。位于每行最左邊的位是第一位,最右邊的位是最后一位。通常情況下,人們希望在存儲器110中以自然順序來實現(xiàn)存儲單元的序列,即以線性的順序來實現(xiàn)存儲單元的序列,然而也可以選擇任意排列。
[0056]最初,初始化器(圖中未示出)已經(jīng)擦除了存儲器130和存儲單元的序列120的內容,即所有的存儲單元都處于O狀態(tài)。計數(shù)器在編程階段啟動。
[0057]隨著編程階段210的進行,越來越多O狀態(tài)的存儲單元被編程為I狀態(tài)的存儲單元,直到到達某個時刻,所有的存儲單元都是I狀態(tài)。在這個時刻,編程階段210結束并且擦除階段220開始。隨著擦除階段220的進行,越來越多I狀態(tài)的存儲單元被擦除成O狀態(tài)的存儲單元,直到到達某個時刻,所有的存儲單元都是O狀態(tài)。請注意,以這種方式獲得的所有狀態(tài)都是不同的。如果在存儲單元的序列120中有η個存儲單元,則支持2η個不同的狀態(tài)。如果需要的話,可以將存儲單元的序列120中的內容轉換成單調遞增的整數(shù)。可以使用將從O到2η-1的整數(shù)分配給按照這個順序在序列中出現(xiàn)的不同模式的任意方案。一種方法是按照從第一個存儲單元到最后一個存儲單元的順序,將從O到(η-1)的數(shù)字分配給存儲單元。在編程階段中第一個O的位置表示該整數(shù),在擦除階段中第一個I的位置加η表示該整數(shù)。以這種方式從O計數(shù)到2η-1。請注意,隨著計數(shù)器周期從開始位置(在這種情況下,所有存儲單元的狀態(tài)都是O)到溢出(所有存儲單元的狀態(tài)第一次又全都是O),所有存儲單元已經(jīng)被編程和擦除了一次。例如,計數(shù)器100可以包括請求邏輯,請求邏輯被配置成:接收請求,確定由計數(shù)狀態(tài)表示的整數(shù),以及響應該請求輸出被確定的數(shù)字。
[0058]如果高字存儲器130中包含值a并且存儲單元的序列120可以被表示為值b,如上所述,則計數(shù)器的值可以被表示為a*(2n)+b。請注意,許多應用不要求實際值,只是計數(shù)器的內容不會減少。在這種情況下,只需要選擇足夠大的高字存儲器130和存儲單元的序列120,以避免模式重復。例如,希望避免回滾攻擊的安全存儲,或者需要隨機數(shù)以避免重放攻擊的協(xié)議可以使用這樣的計數(shù)器。
[0059]在表200的最后一行之后,存儲單元的序列120再次返回到全O狀態(tài),結束擦除階段。在這個時候,增量邏輯150給高字增量邏輯160發(fā)信號,以對高字存儲器130執(zhí)行增量。
[0060]在操作過程中,計數(shù)器邏輯140可以首先接收初始化信號,將存儲單元的序列120以及可選地將高字存儲器130設置成開始模式,在這種情況下,所有存儲單元的狀態(tài)都是0,但是也可以有其他的選擇,例如所有存儲單元的狀態(tài)都是I,或者高字存儲器130是0,但存儲單兀的序列120都是1,等等。
[0061]增量信號通常是來自計數(shù)器100的外部來源,當增量邏輯150接收到增量信號時,階段確定器152確定要使用的階段。當單個存儲單元的序列120被使用時,階段確定器152可以從最后一個單元,即最后一個存儲單元126來確定階段。如果最后一個值是0,則該階段是編程階段,否則則是擦除階段。這一點也可以從表200中看出來。
[0062]接下來,取決于被確定的階段,階段確定器152發(fā)信號以使編程增量邏輯154或擦除增量邏輯156執(zhí)行增量。如果編程增量邏輯154被選中,則編程增量邏輯154確定值為O的第一個存儲單元,并對其進行編程操作。如果擦除增量邏輯156被選中,則擦除增量邏輯156確定值為I的第一個存儲單元,并對其進行擦除操作。通過對存儲單元的序列120進行線性搜索,可以找到第一個轉變。[0063]計數(shù)器100可以包括轉變發(fā)現(xiàn)器(圖中未示出),該轉變發(fā)現(xiàn)器包括低指針和高指針。低指針被初始化以指向第一個存儲單元,高指針指向最后一個存儲單元。如果低指針和高指針指向的存儲單元中的值相等,則第一個存儲單元將被改變。否則,選擇低指針和高指針之間的存儲單元,優(yōu)選的,選擇與(高指針+低指針)/ 2最近的存儲單元。如果被選中的存儲單元與低指針相同,則低指針被改變?yōu)橹赶虮贿x中的存儲單元。如果被選中的存儲單元與高指針相同,則高指針被改變?yōu)橹赶虮贿x中的存儲單元。當?shù)椭羔樅透咧羔樦g相差為I時,該算法結束。在這個時候,高指針指向要被改變的存儲單元。
[0064]轉變發(fā)現(xiàn)器可以與階段確定器152組合起來。這是有效的,因為階段確定器152也可能需要訪問最后一個存儲單元以確定階段。另外,如果使用了多個序列,則第一個存儲單元可以被用于確定激活序列,因此通過結合這些步驟,可以進一步提高效率。
[0065]一旦已經(jīng)發(fā)現(xiàn)了轉變,則下一個不同的存儲單元或第一個存儲單元被倒置,即,編程增量邏輯將存儲單元編程為1,擦除增量邏輯擦除存儲單元。正如所指出的,編程增量邏輯和擦除增量邏輯之間共享了一些功能,例如發(fā)現(xiàn)轉變的功能,即找到下一個要被寫的存儲單元的功能。
[0066]作為進一步的效率,特別是如果希望在計數(shù)器100或其中使用了計數(shù)器100的系統(tǒng)上電和斷電之間,對計數(shù)器執(zhí)行多個增量時,計數(shù)器邏輯140可以在寄存器或SRAM中包括易失性的索引存儲器。索引存儲器可以被用于跟蹤作為增量的一部分要被改變的下一個存儲單元。索引存儲器可以使用二進制表示。例如,如果存儲單元的序列120包含1024位,例如,每個都是16位的64字的序列,則對于索引存儲器來說,10位就足夠了,即16位的寄存器或16位的SRAM。
[0067]擦除增量邏輯156進一步被配置成確定最后一個存儲單元被擦除。在這個時候,擦除增量邏輯156為高字增量邏輯160生成信號以對高字存儲器130執(zhí)行增量。
[0068]下面是將計數(shù)器100配置成非重復計數(shù)器的一個方法。用M表示計數(shù)器期望的最大值。在正常使用過程中,計數(shù)器將不會超過M。選擇位數(shù),例如選擇存儲單元的位數(shù)為ceil (log(v) / log(2))或更高。如果M〈v,則不需要存儲單元的序列120。否則,選擇存儲單元的序列120中的存儲單元的數(shù)量為ceil (Μ / (2*v))或更高。ceil表示向上取整函數(shù)。
[0069]例如,如果Μ=2*10~8,ν=10-5,則可以將高字存儲器130取為17位的存儲器,如果使用16位字的話,則可以四舍五入成32。對于存儲單元的序列120,可以使用1000個存儲單元(位),如果使用16位字的話,則可以四舍五入到1008,或者更方便是使用1024個存儲單元(位)。計數(shù)器可以計數(shù)至少2*η*ν個不同的計數(shù)狀態(tài)(例如從數(shù)字O到2*ν*η-1),而不會違反壽命限制。
[0070]盡管計數(shù)器的增量邏輯高效并且硬件的成本低,這是顯著地接近最佳方案的??紤]m個存儲單元每個存儲單元的壽命都是V。存儲在m個存儲單元中的計數(shù)狀態(tài)的增量需要在每次增量時,至少一個存儲單元被編程或被擦除。由于可能總共只有2mv次變化,這意味著,理論上最多可以有2mv個不同模式可以被用于m個存儲單元所進行的計數(shù),例如,可以從I數(shù)到2mv。利用具有l(wèi)og(v) / log(2)位高字以及在存儲單元的序列中具有m-log(v) /log(2)位的計數(shù)器設計,可以計數(shù)到v*2*(m-log(v) / log(2)),即2vm_C_v?;蛘邠Q句話說,這個計數(shù)器支持減去一個常數(shù)C_v的相同范圍,該常數(shù)C_v僅僅取決于V。隨著η趨于無窮大,理論上的最大值和所獲得的最大值之間的比率任意地趨近I。
[0071]圖3是說明更復雜的計數(shù)器300的方框圖。計數(shù)器300具有與計數(shù)器100相同的基本設計,除了計數(shù)器300使用位的多個序列310和高字來表示計數(shù)狀態(tài),以及使用邏輯來支持這個變化。圖中示出的三個序列是:存儲單元的序列120以及其他兩個序列320和330。也可以是兩個序列或多于三個序列。多個序列可以被存儲在存儲器110中??梢允褂么械拇鎯ζ髟L問(讀/寫),例如,16位或32位的塊可以被編程/擦除。
[0072]計數(shù)器300通過序列進行計數(shù),在每個時刻,一個序列是激活的并且所有其他序列是非激活的。一旦一個序列從激活變?yōu)椴患せ睿瑒t下一個序列激活。當最后一個序列變?yōu)椴患せ顣r,存儲單元的多個序列310溢出,高字被增量并且第一個序列將再次變?yōu)榧せ睢?br>
[0073]計數(shù)器300通過首先確定激活序列來執(zhí)行增量。確定激活序列的一種方法是將存儲單元的序列中的一種特定模式指定為非激活模式。例如,可以將全O或者全I模式指定為非激活模式。用來標識激活流的一個特別有效的方法是,使用所有全O模式作為非激活模式,使激活流首先進入編程階段,然后進入擦除階段。這樣做的優(yōu)點是在擦除階段結束時,該序列自動在非激活模式中結束。同樣,也可以將全I模式作為非激活模式,從擦除階段開始,在編程階段結束。對于所有序列,選擇需要是相同的。為了簡化起見,我們假設全O模式是非激活模式。
[0074]計數(shù)器邏輯140包括增量邏輯350,增量邏輯350與增量邏輯150類似,但是增量邏輯350具有額外的邏輯:激活序列確定器352和溢出邏輯354。激活序列確定器352被配置成確定存儲單元的多個序列310中哪個序列不包含非激活模式。應當確定出準確的一個序列。該信息被轉發(fā)到階段確定器152,使被確定的序列前進,就像在計數(shù)器100中那樣。然而,當擦除增量邏輯156確定擦除階段結束時,一個信號被轉發(fā)到溢出邏輯354,而不是直接被轉發(fā)到高字增量邏輯160。溢出邏輯354執(zhí)行兩個任務。首先,將多個序列中的下一個序列從非激活變?yōu)榧せ?。例如,如果非激活模式是?,可以將I狀態(tài)編程到下一個序列的第一個存儲單元;這樣確保精確的一個序列是激活的。如果當前的序列是最后一個序列,則使第一個序列激活,并且產(chǎn)生一個信號以指示高字增量邏輯160使高字存儲器130前進。
[0075]計數(shù)器300還可以包含初始化器(圖中未示出)。初始化器可以將高字存儲器130設置為零。初始化器將非激活模式寫入每個序列,例如全O模式,并且將第一激活模式寫入第一個序列,例如除了第一個存儲單元以外都是O。
[0076]圖4示出了說明序列320、330和120的內容的表400。時間向下前進,左邊是第一個存儲單元,右邊是最后一個存儲單元。第一行是緊接在初始化之后。全O模式被用來指示非激活序列。首先進行編程階段,然后是擦除階段。其他選擇也是可以的。每一行對應計數(shù)器的增量。
[0077]表400被劃分成三個部分:在標記為I的部分中,存儲單元的序列320是激活序列,在標記為II的部分中,存儲單元的序列330是激活序列,在標記為III的部分中,存儲單元的序列120是激活序列。在部分I中,可以看到,只有存儲單元的序列320在前進,首先通過編程階段410,然后通過擦除階段420。在部分I的擦除階段420結束時,非激活模式被寫入存儲單元的序列320,并且通過使存儲單元的序列330前進,存儲單元的序列330進入到激活模式。注意,這也可以通過編程增量邏輯來實現(xiàn)。只有當激活序列從一個序列移動到下一個序列時,執(zhí)行兩個存儲單元的改變。有趣的是,如果存儲器110是雙端口存儲器,則這些更新是可以同時進行的。
[0078]在部分II中,只有存儲單元的序列330被更新,再一次首先通過編程階段410,然后通過擦除階段。同時,存儲單元的序列320和存儲單元的序列120處于非激活狀態(tài)430。當擦除階段結束時,使下一個序列激活。
[0079]在某些時候,最后一個序列結束擦除階段。溢出邏輯354發(fā)現(xiàn)這個時刻,然后溢出邏輯354將使高字存儲器130前進。請注意,高字存儲器130在部分I和II結束時不前進。
[0080]請注意,激活序列確定器352可以僅僅從第一個存儲單元和最后一個存儲單元確定序列是否是激活的。如果非激活的模式是全O或全I,則如果第一個狀態(tài)和最后一個狀態(tài)都是全O或全1,該序列是非激活的。有趣的是,對于激活序列,可以從最后一個存儲單元根據(jù)下表確定接下來將要執(zhí)行的操作的類型(假設非激活模式是全O):
[0081]
第一個存儲單元 I最后一個存儲單元I狀態(tài)
ο?非激活
I?激活,編程階段
--激活,擦除階段
I?激活,擦除階段
[0082]這意味著,激活序列確定器352和階段確定器152可以共享一些實現(xiàn)和數(shù)據(jù),例如,檢索最后一個存儲單元的值。
[0083]計數(shù)器100和300是為了大部分的撕裂安全。更新計數(shù)器100中的存儲單元的序列120已經(jīng)是撕裂安全,因為僅僅執(zhí)行了一個操作。只要當激活序列被轉移時,下一個序列在當前的序列變?yōu)榉羌せ钪白優(yōu)榧せ睿敲锤卤?00中的存儲單元的多個序列310也是撕裂安全的。例如,在上述系統(tǒng)中,溢出邏輯354在擦除操作之前執(zhí)行編程操作。通過加入高字的撕裂安全的實施,這兩個計數(shù)器都可以被改進。
[0084]為了實現(xiàn)撕裂安全,可以在存儲器110中實現(xiàn)額外的高字存儲器。這樣就具有兩個高字存儲器HWl和HW2 (圖中未示出),可以在一個操作中向每個高字存儲器都寫入數(shù)據(jù),例如兩個32位的數(shù)字。兩個高字存儲器其中一個總是具有當前值,另一個被用于寫入新的值。在成功操作的情況中,新的值是最近的一個值。如果需要的位比高字存儲器中存在的位少,例如對于100000次的壽命,只需要17位,但是高字存儲器中存在32位,則可以將特殊模式寫入到不用于計數(shù)狀態(tài)的位中,即寫入到(例如5個)最重要的位中。特殊模式表示計數(shù)器的值具有有效的內容?;蛘撸部梢詫懭胄r灪?,即存儲在高字存儲器中的計數(shù)狀態(tài)的CRC-8值。如果需要的話,字剩余的位也可以有不同使用,或保持為0,或被忽略。
[0085]如果兩個計數(shù)器具有有效的頭部,則它們的內容應當相差1,這總是真的,因為兩個高位計數(shù)器其中一個被增量,另一個被寫。例如,如果初始化器將HWl初始化為0,并將HW2初始化為-1。或者如果要避免負數(shù),則將HWl初始化為1,將HW2初始化為O。在后一種情況中,高字的值應該被減去I。更復雜的格雷編碼可以被用于高字計數(shù)器,但是沒有必要實現(xiàn)200萬個周期的最大計數(shù)。[0086]下面給出高字計數(shù)器更新的詳細過程:
[0087]I)通過檢查頭部值并找出哪一個是更高的一個,來定義兩個32位字的當前有效的高字計數(shù)器狀態(tài)。
[0088]a)如果HWl的頭部值有效并且HW2的頭部值有效并且HW1=HW2+1
[0089]1)PTR=2
[0090]2)如果HWl的頭部值有效并且HW2的頭部值有效并且HW1+1=HW2
[0091]a) PTR=I
[0092]3)如果LW溢出并且PTR=I
[0093]a) HW1<=HW2+1 (EEPR0M 寫)
[0094]b)檢查寫入值和頭部,報告狀態(tài)
[0095]4)如果LW溢出并且PTR=2
[0096]a) HW2<=HW1+1 (EEPR0M 寫)
[0097]b)檢查寫入值和頭部,報告狀態(tài)
[0098]其中PTR表示指針。
[0099]多個序列320、330和120可以按照如下所示的方式被存儲在存儲器110中。多個序列中的每一個序列的第一位被存儲在第一個字中。多個序列中的每一個序列的第二位被存儲在第二個字中。多個序列中的每一個序列的第i位被存儲在第i個字中。優(yōu)選的,序列數(shù)少于或等于字中的位數(shù),最優(yōu)選的是二者相等。然而,如果序列數(shù)比字中的位數(shù)多,則可以將更多的字結合在一起,例如所謂的雙字。在實施例中,并不改變激活序列的多個序列的每個編程操作將全O字變成僅具有一個I的字。并不改變激活序列的多個序列的擦除操作將具有一個I的字變成全O序列。這一實現(xiàn)使編程/擦除操作很少,即使存儲器并不是獨立尋址的。
[0100]圖5示出了存儲器映射500,這是對存儲單元的多個序列310進行存儲的一種方法。在圖5所示的存儲器映射500中,64個存儲單元的16個序列每個都被存儲在存儲器中,被組織成16位字。該存儲器可以是具有16位字大小的EEPROM存儲器。存儲器可以具有100000次的有線壽命。
[0101]存儲單元的多個序列310被存儲在64X 16位的矩陣中,存儲器和16位將被表示為列(colO(LSB)至col 15 (MSB),也表示為c0...cl5)。64個字(頁)將被表示為行(rowO至row63,也表示為r0...r63)。下面給出在存儲器映射500中計數(shù)的過程:
[0102]I)初始狀態(tài):64X 16位的數(shù)組被初始化,以致c0 / r0存儲單元為I。這等于計數(shù)器狀態(tài)O (假定高字(HW)為0)。
[0103]2)利用只寫操作,colO的所有后面的行被編程(填滿1,直到整列都具有I)。該狀態(tài)代表計數(shù)器的值63。
[0104]3)然后,我們開始第一行rowO的只擦除操作(仍然是第O列)。這代表計數(shù)器的值64。
[0105]4)隨后,整個colO被擦除,直到我們到達計數(shù)器的值126,其中只有cO / r63具有I。
[0106]請注意:到現(xiàn)在為止,我們已經(jīng)循環(huán)(編程+擦除)了整個colO (64個存儲單元),并且達到了計數(shù)器的值126。[0107]5)現(xiàn)在,我們從(3010到(3011,將1寫入1'0¥0,另外從(:010中擦除剩余的1。計數(shù)器的值現(xiàn)在是127。(在擦除之前編程允許實現(xiàn)撕裂安全)。
[0108]6)按照與之前相同的過程繼續(xù)對整個coll進行處理,直到計數(shù)器的值達到253。
[0109]請注意:到現(xiàn)在為止,我們已經(jīng)循環(huán)(編程+擦除)了整個colO和coll (128個存儲單元),并且計數(shù)器的值達到253。
[0110]7)對所有列進行相同的處理,直到計數(shù)器的值達到2031,其中僅在cl5 / r63中是I。
[0111]請注意:現(xiàn)在所有64X16 (1024)位都循環(huán)(編程+擦除)了一次。
[0112]8)現(xiàn)在是溢出,導致高字被增量(在下面的章節(jié)中將更加詳細地描述這個過程)。最后的步驟是對cO / rO進行編程,以再次使低字計數(shù)器的值為0,并擦除存儲單元cl5 /r63。
[0113]下面給出對存儲單元的多個序列310中的當前的計數(shù)器值進行解碼的過程:
[0114]對低字的當前的計數(shù)器值進行解碼的任務按如下所示進行,以減少讀取訪問(對存儲器的讀取訪問比對存儲器的寫入/擦除更快),其中低字的當前的計數(shù)器值始終是在O和2031之間。主要的任務是在一列中找到1_>0轉變或者是0->1轉變的行地址。然后,這與當前的計數(shù)器有關。搜索算法可以如下面所示:
[0115]I)找到在iowO和/或row63中具有I的列(這需要最多32個周期)一此列X表示計數(shù)器偏移了 X*127。`
[0116]2)在該列中使用二進制搜索算法找到第Y行,第Y行具有轉變,取決于是1->0(A=0)或0->1(Α=1)轉變,加到結果的計數(shù)器的值中:Y+A*63。(請注意:如果該列全是1,則 Y=63,A=0)
[0117]低字計數(shù)器的值LW=X*127+Y+A*63。
[0118]通常執(zhí)行只寫操作或只擦除操作。如果完成一列,要執(zhí)行兩個操作(擦除前一列的最后一位)。即使由于像立即斷電等一些問題導致寫入操作失敗,計數(shù)器也增加。如果在列變化過程中,在擦除前一列的最后一行中的I之前寫入值1,則所提出的思想實現(xiàn)了自動的安全撕裂,這是因為在所有其他情況中,一次只有一個存儲單元被寫入。
[0119]有趣的是,通過選擇行數(shù)即多個序列的數(shù)目為2的冪次加1,在這種情況下總數(shù)是65,可以顯著地簡化計算,因為所需的乘法運算是2的冪次,可以通過移位來實現(xiàn),而不需要用乘法器來實現(xiàn)。
[0120]請注意,可以采用其他方法來管理多個序列。
[0121]圖6示出了計數(shù)方法600的流程圖。所示的方法可以在像計數(shù)器100這樣的系統(tǒng)上執(zhí)行。該方法可以擴展到多個序列,撕裂安全改進等,如上所示。
[0122]在步驟610中,高字和低字被初始化,例如高字存儲器130和存儲單元的序列120被初始化,在這種情況下是被擦除。在步驟620中,該方法等待接收增量信號。當接收到增量信號時,在步驟630中確定是編程階段還是擦除階段。這可以從易失性的存儲器中獲得,或者可以從低字存儲器本身例如從最后一個存儲單元來確定。如果該階段是編程階段,則在步驟640中,處于O狀態(tài)的第一個存儲單元被編程。這樣的存儲單元一定是存在的。如果這樣的存儲單元不存在,則發(fā)生錯誤,可以啟動適當?shù)腻e誤恢復。在擦除階段的情況下,則在步驟650中,處于I狀態(tài)的第一個存儲單元被擦除。如果擦除導致低字存儲器中出現(xiàn)全O模式,則在步驟670中高字被增量。在這兩個分支中,該方法可以返回到步驟620,等待下一個增量信號。
[0123]可以采用許多不同的方式來執(zhí)行該方法,這對于本【技術領域】的技術人員而言將是顯而易見的。例如,可以改變步驟的順序,或者一些步驟可以并行執(zhí)行。而且,在兩個步驟之間可以插入其他方法步驟。插入的步驟可以是對本文中描述的方法的細化,或者可以與該方法無關。而且,在下一個步驟開始之前,給定的步驟可以還未完全結束。
[0124]可以使用軟件來執(zhí)行本發(fā)明的方法,該軟件包括使處理器系統(tǒng)執(zhí)行方法600的指令。軟件可以只包括由系統(tǒng)的特定子實體執(zhí)行的那些步驟。該軟件可以被存儲在適當?shù)拇鎯橘|中,諸如:硬盤,軟盤,存儲器等。該軟件可以作為信號沿導線,或無線的,或者使用數(shù)據(jù)網(wǎng)絡如互聯(lián)網(wǎng)被發(fā)送。該軟件可以被下載和/或在服務器上遠程使用。
[0125]將會理解,本發(fā)明也可以延伸到計算機程序,特別是載體上或載體中的適用于實施本發(fā)明的計算機程序。該計算機程序的形式可以是源代碼,目標代碼,代碼中間源代碼和目標代碼,諸如部分編譯形式,或者是適合于實施本發(fā)明的方法的任何其他形式。與計算機程序產(chǎn)品有關的實施例包括與至少一個所述方法的每個處理步驟相對應的計算機可執(zhí)行指令。這些指令可以被細分成子例程和/或被存儲在可以靜態(tài)或動態(tài)鏈接的一個或多個文件中。與計算機程序產(chǎn)品有關的另外的實施例包括與所述至少一個系統(tǒng)和/或產(chǎn)品的每個部分相對應的計算機可執(zhí)行指令。
[0126]應當注意,上述實施例是用來說明本發(fā)明,而不是用來限制本發(fā)明,本領域技術人員能夠設計出許多替代實施例。
[0127]在權利要求中,置于括號之間的任何標號不得被解釋為限制權利要求。在本文中使用的動詞“包括”并不排除權利要求中所列出的元件或步驟以外的其他元件或步驟。“一”或“一個”并不排除多個的情況。本發(fā)明可以由包括若干不同元件的硬件來實現(xiàn),也可以由合適的計算機程序來實現(xiàn)。在列舉了若干裝置的產(chǎn)品權利要求中,這些裝置可以由硬件的一個組成部分實現(xiàn)。記載在不同從屬權利要求中的某些技術手段并不表示這些技術手段不能結合起來得到有益的技術效果。
【權利要求】
1.一種電子計數(shù)器,其特征在于,包括: 存儲單元的序列,每個存儲單元都是非易失性的并且支持I狀態(tài)和O狀態(tài),計數(shù)器被配置成,在存儲單元的序列的存儲單元中,將計數(shù)器當前的計數(shù)狀態(tài)的至少一部分表示為I狀態(tài)和O狀態(tài)的模式,以及 增量邏輯,被配置成使I狀態(tài)和O狀態(tài)的模式前進到下一個模式,以表示計數(shù)器的增量,增量邏輯包括編程增量邏輯和擦除增量邏輯,增量邏輯被配置成在編程階段和擦除階段之間交替,在編程階段中,編程增量邏輯使模式前進;在擦除階段中,擦除增量邏輯使模式前進,其中, 編程增量邏輯被配置成將存儲單元的序列中的下一個存儲單元從O狀態(tài)編程為I狀態(tài),當存儲單元的序列中的所有存儲單元都處于I狀態(tài)時,編程階段結束, 擦除增量邏輯被配置成將存儲單元的序列中的下一個存儲單元從I狀態(tài)擦除成O狀態(tài),當存儲單元的序列中的所有存儲單元都處于O狀態(tài)時,擦除階段結束。
2.根據(jù)權利要求1所述的計數(shù)器,其特征在于,包括: 非易失性的高字存儲器,計數(shù)器被配置成在高字存儲器中表示計數(shù)器的計數(shù)狀態(tài)的另外的部分, 高字增量邏輯,用于使高字存儲器中表示的計數(shù)狀態(tài)的部分前進,計數(shù)器被配置成在存儲單元的序列溢出時,由高字增量邏輯來執(zhí)行增量,存儲單元的序列溢出是通過以下方法來確定的: 編程階段結束,或 擦除階段結束。
3.根據(jù)權利要求1所述的計數(shù)器,其特征在于, 非易失性的高字存儲器表示二進制數(shù),并且高字增量邏輯被配置成根據(jù)二進制位數(shù)系統(tǒng)對另外的存儲器執(zhí)行增量,或者 非易失性的高字存儲器以格雷編碼表示位模式,并且高字增量邏輯被配置成根據(jù)格雷編碼使該位模式前進到下一個位模式。
4.根據(jù)在前的任一項權利要求所述的計數(shù)器,其特征在于,包括: 存儲單元的多個序列,存儲單元的多個序列中的每個存儲單元都是非易失性的并且支持I狀態(tài)和O狀態(tài),計數(shù)器被配置成在存儲單元的多個序列的存儲單元中,將計數(shù)器當前的計數(shù)狀態(tài)的多個子狀態(tài)表示為I狀態(tài)和O狀態(tài)的模式。
5.根據(jù)權利要求4所述的計數(shù)器,其特征在于,用表示序列是非激活的模式來配置存儲單元的多個序列中除了一個序列以外的所有序列,用與表示序列是非激活的模式不同的模式來配置存儲單元的多個序列中的一個序列,該模式是全I狀態(tài)或全O狀態(tài),其中, 增量邏輯被配置成確定存儲單元的多個序列中沒有存儲非激活模式的激活序列,并且增量邏輯被配置成使激活序列前進到下一個模式,在下一個模式達到非激活模式時,增量邏輯進一步使存儲單元的多個序列中的下一個序列前進。
6.根據(jù)權利要求2或3所述的計數(shù)器,其特征在于,包括另外的高字存儲器,該另外的高字存儲器是非易失性的,其中高字增量邏輯被配置成: 確定高字存儲器和另外的高字存儲器中哪一個存儲器存儲較高的數(shù),哪一個存儲器存儲較低的數(shù),對較高的數(shù)執(zhí)行增量,以及 將增量后的較高的數(shù)寫入存儲較低的數(shù)的存儲器。
7.根據(jù)在前的任一項權利要求所述的計數(shù)器,其特征在于,增量邏輯被配置成從存儲單元的序列中的最后一個存儲單元的狀態(tài)來確定當前的階段,其中, 如果最后一個存儲單元是處于O狀態(tài),則當前的階段是編程階段,以及 如果最后一個存儲單元是處于I狀態(tài),則當前的階段是擦除階段。
8.根據(jù)在前的任一項權利要求所述的計數(shù)器,其特征在于,增量邏輯被配置成執(zhí)行二進制搜索以找到下一個存儲單元。
9.根據(jù)在前的任一項權利要求所述的計數(shù)器,其特征在于,包括:易失性的索引存儲器,用于存儲指向存儲單元的序列中的表示下一個存儲單元的存儲單元的索引,增量邏輯被配置成在執(zhí)行增量時對索引存儲器執(zhí)行增量。
10.根據(jù)權利要求4或5所述的計數(shù)器,其特征在于,存儲單元是大型非易失性存儲器中的存儲單元,大型非易失性存儲器被組織在多個存儲器字中,其中存儲單元的多個序列中的多個最后一個存儲單元在相同的存儲器字中。
11.根據(jù)在前的任一項權利要求所述的計數(shù)器,其特征在于,存儲單元的序列中的存儲單元是EEPROM存儲單元。
12.根據(jù)在前的任一項權利要求所述的計數(shù)器,其特征在于,高字存儲器是EEPROM存儲器。
13.根據(jù)在前的任一項權利要求所述的計數(shù)器,其特征在于,存儲單元的多個序列中的所有存儲單元部是EEPROM存儲單元。
14.一種用于電子計數(shù)的方法,其特征在于,計數(shù)器當前的計數(shù)狀態(tài)的至少一部分在存儲單元的序列的存儲單元中被表示為1狀態(tài)和O狀態(tài)的模式,該方法包括; 使存儲單元的序列的1狀態(tài)和O狀態(tài)的模式前進到下一個模式,以表示計數(shù)器的增量,計數(shù)器的增量在編程階段和擦除階段之間交替,其中, 在編程階段中,將存儲單元的序列中的下一個存儲單元從O狀態(tài)編程為1狀態(tài),當存儲單元的序列中的所有存儲單元都處于1狀態(tài)時,編程階段結束, 在擦除階段中,將存儲單元的序列中的下一個存儲單元從1狀態(tài)擦除成O狀態(tài),當存儲單元的序列中的所有存儲單元部處于O狀態(tài)時,擦除階段結束。
15.一種電子設備,其特征在于,包括權利要求1-13中任一項所述的計數(shù)器。
【文檔編號】H03K21/40GK103701458SQ201310431950
【公開日】2014年4月2日 申請日期:2013年9月22日 優(yōu)先權日:2012年9月27日
【發(fā)明者】馬丁·費爾德霍弗, 弗朗茨·阿姆特曼, 森克·奧斯特敦, 艾莉希亞·達孔塞桑 申請人:Nxp股份有限公司