使用非易失性存储器来实施非易失性计数器的方法和系统与流程

文档序号:16188694发布日期:2018-12-08 05:28阅读:237来源:国知局
使用非易失性存储器来实施非易失性计数器的方法和系统与流程

本发明涉及一种使用非易失性存储器来实施非易失性计数器的方法。

背景技术

电子装置中的非易失性、非递减计数器中存在许多应用。举例来说,出于安全性检查或为了避免计数器发生重算攻击,可使用此类计数器来对集成电路(ic)装置对打印盒上电的次数计数从而对打印次数计数,以作为对打印盒的防伪测量。随着增加在电子装置中使用例如电可擦除可编程只读存储器(eeprom)的非易失性存储器,在非易失性存储器中实施非易失性、非递减计数器变得合乎期望。

使用非易失性存储器来实施计数器的一种解决方案是实施将值存储在存储器单元中的二进制计数器。然而,在执行了数个编程周期之后,某些类型的非易失性存储器中的存储器单元可能会损耗并变得不可靠。在非常庞大的计数的情形中,可以在存储器单元损耗并变得不可靠之前执行的编程周期数目可以是限制因素。通常,将针对每一计数对存储最低有效位的存储器单元编程或擦除存储最低有效位的存储器单元,这将导致存储最低有效位的存储器单元比非易失性存储器中的其它存储器单元更早地损耗或变得不可靠。因此,相较于可以对供存储最低有效位否则可能使计数损毁的存储器单元执行的编程周期的数目,使用存储器单元可能会损耗并变得不可靠的一种类型的非易失性存储器的计数器通常不可以计数得更高。



技术实现要素:

根据本发明的实施例,公开一种使用非易失性存储器来实施非易失性计数器的方法。在实施例中,所述方法涉及分配以下操作:将计数器的低位字跨越所述非易失性存储器中的存储器阵列中的存储器单元存储在非易失性存储器中;和将所述计数器的另外位在所述非易失性存储器中存储在所述存储器阵列外部的存储器单元中,其中基于所述计数器的较高位来针对每一计数确定所述存储器阵列中存储所述低位字的部位。

在第二实施例中,一种将所述计数器的所述低位字存储在非易失性存储器中的操作涉及:当将位设置成1时,对所述存储器阵列中的存储器单元编程;和当将被设置成1的位设置成0时,擦除所述存储器阵列中的存储器单元。

在另一实施例中,所述存储器阵列包括数目至少等于所述低位字中的位的数目的存储器页面。

在另一实施例中,在执行将所述计数器的所述低位字存储在非易失性存储器中的操作之前,所述方法涉及:从所述存储器阵列外部的存储器页面读取所述计数器的所述另外位;根据所述另外位确定x偏移和y偏移;和从等于所述y偏移的存储器单元位置处的存储器单元开始从所述存储器阵列读取所述低位字,所述存储器单元在索引等于所述x偏移的所述存储器阵列内的存储器页面上。

在另一实施例中,所述方法进一步涉及:从至少一个冗余存储器页面读取所述计数器的所述另外位;从等于y偏移的存储器单元位置处的存储器单元开始读取所述低位字,所述存储器单元在页面索引等于所述x偏移的冗余存储器阵列中的存储器页面上;比较从所述至少一个冗余存储器页面读取的所述位与从所述至少一个存储器页面读取的位;以下操作中的至少一个:在从所述至少一个冗余存储器页面读取的所述位的二进制值高于从所述至少一个存储器页面读取的位的二进制值的情况下,将从所述至少一个冗余存储器页面读取的所述位写入到所述至少一个存储器页面;和在从所述至少一个冗余存储器页面读取的所述位的所述二进制值低于从所述至少一个存储器页面读取的所述位的所述二进制值的情况下,将从所述至少一个存储器页面读取的所述位写入到所述至少一个冗余存储器页面;比较从所述冗余存储器阵列读取的低位字与从所述存储器阵列读取的所述低位字;以及以下操作中的至少一个:在从所述冗余存储器阵列读取的所述低位字的二进制值高于从所述存储器阵列读取的所述低位字的二进制值的情况下,将从所述冗余存储器阵列读取的所述低位字写入到所述存储器阵列;和在从所述冗余存储器阵列读取的所述低位字的二进制值低于从所述存储器阵列读取的所述低位字的二进制值的情况下,将从所述存储器阵列读取的所述低位字写入到所述冗余存储器阵列。

在另一实施例中,公开一种非易失性存储器。在实施例中,非易失性存储器涉及:存储器控制器;电耦接到存储器控制器的至少一个存储器页面;以及电耦接到存储器控制器的存储器阵列,其中存储器控制器被配置成通过将数据的低位字存储在存储器阵列中以及通过将数据的另外字节存储在所述至少一个存储器页面中,管理数据到非易失性存储器的流动,且其中将所述低位字存储在基于所述另外字节确定的所述存储器阵列中的部位处。

在另一实施例中,所述存储器控制器被进一步配置成:读取所述至少一个存储器页面的所述另外字节;根据所述另外字节确定x偏移和y偏移;以及从等于所述y偏移的存储器单元位置处的位开始从所述存储器阵列读取所述低位字,所述存储器单元在索引等于所述x偏移的页面上。

在另一实施例中,所述存储器控制器被进一步配置成:读取至少一个冗余存储器页面的字节;从等于y偏移的存储器单元位置处开始读取所述低位字,所述存储器单元在页面索引等于所述x偏移的冗余存储器阵列中的存储器页面上;比较从所述至少一个冗余存储器页面读取的所述字节与从所述至少一个存储器页面读取的字节;以下操作中的至少一个:在从所述至少一个冗余存储器页面读取的所述位的二进制值高于从所述至少一个存储器页面读取的位的二进制值的情况下,将从所述至少一个冗余存储器页面读取的所述位写入到所述至少一个存储器页面;和在从所述至少一个冗余存储器页面读取的所述位的所述二进制值低于从所述至少一个存储器页面读取的所述位的所述二进制值的情况下,将从所述至少一个存储器页面读取的所述位写入到所述至少一个冗余存储器页面;比较从所述冗余存储器阵列读取的低位字与从所述存储器阵列读取的所述低位字;以及以下操作中的至少一个:在从所述冗余存储器阵列读取的所述低位字的二进制值高于从所述存储器阵列读取的所述低位字的二进制值的情况下,将从所述冗余存储器阵列读取的所述低位字写入到所述存储器阵列;和在从所述冗余存储器阵列读取的所述低位字的所述二进制值低于从所述存储器阵列读取的所述低位字的所述二进制值的情况下,将从所述存储器阵列读取的所述低位字写入到所述冗余存储器阵列。

在另一实施例中,公开一种使用非易失性存储器来实施非易失性计数器的方法。在实施例中,所述方法涉及通过以下操作将多位计数器的低位字存储到由至少一个字节和非易失性存储器中的多个存储器页面形成的存储器阵列:确定具有初始值的x偏移并确定具有初始值的y偏移;将所述低位字存储在存储器单元位置处的存储器单元中以对应于页面索引等于所述x偏移的页面的存储器页面开始,所述存储器单元位置等于所述多个存储器页面中的存储器页面上的所述y偏移;在对所述存储器单元位置处的所述存储器单元的第一数目次更新等于所述y偏移之后,使所述x偏移递增;当使所述x偏移递增到大于所述多个存储器页面中的存储器页面的数目的值时,将所述x偏移重置成所述初始值并使所述y偏移递增;和反复地使所述x偏移递增并重置所述x偏移,同时使所述y偏移递增,直到所述y偏移等于所述多个存储器页面中的存储器页面内的最高存储器单元位置且所述x偏移等于所述多个存储器页面中的存储器页面的所述数目为止;以及将所述多位计数器的另外位存储到所述非易失性存储器中的至少一个存储器页面。

在另一实施例中,存储所述低位字中的位和所述另外位中的位中的至少一个涉及:对位编程以从0转变成1;和擦除位以从1转变成0。

在另一实施例中,所述多个存储器页面中的存储器页面的所述数目至少等于所述低位字中的位的数目。

在另一实施例中,在存储所述多位计数器的所述低位字并存储所述多位计数器的另外位之前,所述方法涉及:从所述非易失性存储器中的至少一个存储器页面读取所述多位计数器的另外位;根据所述另外位确定x偏移和y偏移;和从所述存储器阵列读取所述低位字以所述存储器单元位置处的位开始,所述存储器单元位置等于索引等于所述x偏移的页面上的所述y偏移。

将从借助于本发明原理的例子而示出的结合附图进行的以下详细描述中显而易见本发明的实施例的其它方面和优点。

附图说明

图1描绘根据本发明的一般非易失性计数器电路的实施例的功能框图。

图2描绘24位计数器的寄存器和eeprom空间的功能图。

图3a到3d示出将低位字存储在根据本发明的实施例的二维存储器阵列中。

图4是用于使用eeprom来防止非易失性计数器电路发生电源故障的技术的流程图。

图5是根据本发明的实施例的用于使用eeprom来使非易失性计数器电路递增的技术的流程图。

图6是根据本发明的实施例的非易失性计数器电路的示意图。

在整个描述中,类似的附图标记可用以标明识别类似的元件。

具体实施方式

应容易理解,如本文中一般描述且在附图中示出的实施例的组件可以用各种各样不同的配置来布置和设计。因此,以下如图中所表示的各种实施例的更详细描述并非意图限制本公开的范围,而仅仅是表示各种实施例。虽然在图式中呈现了实施例的各种方面,但除非特别地指示,否则所述图式未必按比例绘制。

在不脱离本发明的精神或基本特性的情况下,可以其它特定形式实施本发明。所描述实施例应视为在所有方面均仅为示出性而非限制性的。因此,本发明的范围由所附权利要求书而不是由此详细描述来指示。在权利要求书的等效物的含义和范围内的所有变化都涵盖在权利要求书的范围内。

贯穿本说明书对特征、优点或相似语言的参考并不暗示可以使用本发明实现的所有特征和优点应该在或在本发明的任何单一实施例中。实际上,参考特征和优点的语言应理解成意味着结合实施例描述的特定特征、优点或特性包括在本发明的至少一个实施例中。因此,贯穿本说明书对特征和优点的论述以及相似语言可以但未必指代同一实施例。

此外,本发明的所描述特征、优点和特性可以用任何合适方式在一个或多个实施例中组合。相关领域的技术人员应认识到,鉴于本文中的描述,本发明可在无具体实施例的特定特征或优点中的一个或多个特征或优点的情况下实践。在其它情况下,可在某些实施例中辨识出可能不存在于本发明的所有实施例中的另外特征和优点。

贯穿本说明书对“一个实施例”、“实施例”或相似语言的参考意味着结合所指示的实施例描述的具体特征、结构或特性包括在本发明的至少一个实施例中。因此,贯穿本说明书的短语“在一个实施例中”、“在实施例中”和相似语言可能但未必全部指代同一实施例。

图1描绘根据本发明的非易失性计数器电路100的实施例的功能框图。可以将非易失性计数器电路集成到较大集成电路(ic)装置中。非易失性计数器电路可以包括在公共总线112上互连的非易失性存储器102、存储器控制器104、计数器106、计数器控制器逻辑108以及串行接口110。非易失性存储器可以是例如电可擦可编程只读存储器(eeprom),或可以单独地擦除并编程存储器单元的次数显著较低使得非易失性计数器电路的性能将受影响的任何其它类型的非易失性存储器(例如,可以单独地擦除并编程存储器单元的次数小于50,0000的存储器)。为简单起见,非易失性存储器将在本文中被称作eeprom,但涵盖其它类型的非易失性存储器。计数器可以是可以通过向非易失性计数器电路中的寄存器添加逻辑来实施的多位计数器。计数器控制器逻辑可以是管理如何将计数器的位传递到存储器控制器并存储到eeprom的存储器单元的数字电路。存储器控制器可以是管理数据从计数器控制器逻辑到eeprom的流动以供存储的数字电路。举例来说,当计数器第一次更新时,计数器可以将第一位设置成1(例如,二进制形式是1)并将所述位传递到存储器控制器,且存储器控制器可以管理所述位到eeprom的流动以供存储在第一存储器单元中。当计数器第二次更新时,计数器可以将第一位设置成0、将第二位设置成1(例如,10的二进制形式是2)并将第一位和第二位传递到计数器控制器逻辑和存储器控制器。可以擦除第一存储器单元,且可以对第二存储器单元编程。取决于计数器计数得多么高,可以添加另外位并将另外位写入到另外存储器单元。可以使用串行接口来将计数从非易失性计数器电路传递出,例如,待供集成有非易失性计数器电路的较大ic装置使用。

在操作中,每当计数器更新时,计数器电路会通过对存储器单元编程或擦除存储器单元来更新eeprom中的第一存储器单元,而存储其它位的存储器单元可以不受每一计数影响(例如,当从二进制2转变成二进制3时,第二位仍然是“1”)。一般来说,具有更大有效性的每一位更新得没有继续进行的较低有效位频繁。因此,较低有效位比较高有效位更新得更频繁,这可能导致将位写入其中的eeprom中的存储器单元发生不均匀耗损。另外,可以对典型的eeprom存储器单元编程并擦除约100,000次(例如,各自为100,000次编程和100,000次擦除),之后存储器单元开始变得不可靠,且因此,最终计数(例如,计数器可以计数的最高值)受存储最低有效位的存储器单元可以更新(例如,编程和擦除)的次数限制。举例来说,24位计数器将限于计数200,000,此时将第一位写入其中的存储器单元将会被写100,000次,且可能会变得不可靠。然而,可能必须将值计数得高于最低有效位可以更新的次数。

根据本发明的实施例,使其中存储有最低有效位的存储器单元旋转可以增大最终计数。也就是说,代替使用单一存储器单元来存储所有计数的最低有效位,可以将最低有效位存储在阵列中的若干存储器单元中的一个中,使得可以使阵列中的每一存储器单元的耗损均衡。在实施例中,公开一种使用非易失性存储器来实施非易失性计数器的方法。在实施例中,所述方法涉及分配以下操作:将计数器的低位字跨越所述非易失性存储器中的存储器阵列中的存储器单元存储在非易失性存储器中;和将所述计数器的另外位在所述非易失性存储器中存储在所述存储器阵列外部的存储器单元中,其中基于所述计数器的较高位来针对每一计数确定所述存储器阵列中存储所述低位字的部位。在实施例中,低位字可以是单一位(例如,最低有效位)或任何其它数目个位(例如,形成一个字节的八个位)。因此,在非易失性存储器是eeprom的实施例中,可以跨越eeprom分配对eeprom的存储器单元的更新,从而使存储器单元的耗损均衡。在另一实施例中,存储低位字涉及擦除所设置的位(例如,将位从1更新到0)或对未设置位编程(例如,将位从0更新到1)。因此,通过仅使用半编程周期(例如,执行擦除或编程,但并非所述两者),存储器单元可以经更新以存储位的次数为常规eeprom的两倍多。另外,通过使存储器单元的耗损均衡且通过使用半写入周期,计数器的最终计数可大于一个存储器单元的更新限值。举例来说,通过使用上文所描述的技术,在到期之前,使用36个字节的存储器的24位计数器可以到达超过1600,0000的最终计数。

在另一实施例中,公开一种非易失性存储器。在所述实施例中,非易失性存储器包括:存储器控制器;电耦接到存储器控制器的至少一个存储器页面;以及电耦接到存储器控制器的存储器阵列,其中存储器控制器被配置成通过将数据的低位字存储在存储器阵列中以及通过将数据的较高字节存储在所述至少一个存储器页面中,管理数据到非易失性存储器的流动,且其中将所述低位字存储在基于所述较高字节确定的所述存储器阵列中的部位处。因此,随着计数增大且较高字节改变,其中存储有低位字的存储器控制器将会改变。因此,可以随计数而变地跨越存储器阵列中的存储器单元分配耗损,而无需将记录存储器单元耗损等级的另外表或信息存储在存储器阵列中。

图2描绘24位计数器的寄存器和eeprom空间的功能图。如图2中所描绘,计数器使用8位字,且来自24位计数器的值由三个字202-1到202-3组成。可以将低位字(例如,字202-3)存储在eeprom中的二维存储器阵列204中。任选地,还可将二维存储器阵列的冗余复本206存储在eeprom中。可以将较高位(例如,字202-1和202-2中的另外位)存储在如本领域中已知的eeprom中的一个或多个存储器页面208中。举例来说,如果存储器页面宽两个字节且字长八个位,那么可以将24位计数器较高的两个字存储在单一存储器页面中。任选地,还可将存储另外位的一个或多个存储器页面的冗余副本存储在冗余存储器页面210中。在实施例中,基于另外位确定供存储低位字的存储器阵列中的部位(例如,特定存储器单元),使得跨越存储器阵列中的eeprom的存储器单元分配更新操作。

图3a到3d示出可以如何将低位字存储在二维存储器阵列中。如图3a到3d中所示,低位字是低字节并存储在由表示出的存储器的32字节阵列中。如图3a中所示,表304具有16行和16列,然而可以将另外位350存储在另一页面或字节中。在阵列中,列306对应于eeprom中的存储器页面(由页面索引指示),且行308对应于页面内的存储器单元位置。单元(例如,单元310或单元312)对应于存储器单元位置处的存储器单元,存储器单元位置对应于存储器页面上的行并对应于单元的列。举例来说,在第一行并在第一列中的单元310对应于第一存储器页面上的第一存储器单元,而在第十六列并在第十六行中的单元对应于最后一个页面上的最后一个存储器单元(例如,最高存储器单元位置中的存储器单元)。如所示出,存储器阵列中存储器页面的数目等于低字节中位的数目的两倍,但技术涵盖其它配置,只要存储器阵列中存储器页面的数目至少等于低字节中位的数目即可(例如,至少八个页面)。

首先,基于计数器的另外位350来确定x偏移和y偏移。举例来说,可以读取另外位,且可以根据位11:8来确定x偏移,同时可以根据计数器的位15:12来确定y偏移。当计数器的计数小于256时,位15:8是零,如图3a中所示,且因此,确定x偏移和y偏移的值是零。随着发生计数事件且计数器经更新,计数器电路被配置成将低字节的一个位存储在对应于具有八个连续页面的y偏移的存储器单元中,所述八个连续页面以对应于x偏移的页面开始(例如,8个页面上的相同存储器单元位置)。在实施例中,通过在位值从0到1的情况下对存储器单元编程、在位值从1到0的情况下擦除位或在位值不发生改变的情况下忽略位,存储每一位。因此,每当计数器递增时,可以不执行完整的编程周期。

到到达计数255的时候,将按由对应于图3a中的每一存储器单元的单元中的值指示的次数来更新(例如,写入和擦除)八个存储器单元中的每一个。举例来说,第一存储器页面上的第一存储器单元310将已经更新128次(例如,写入128次且擦除128次),而第八存储器页面(例如,其中存储有最高有效位的页面索引为7的存储器页面)上的第一存储器单元312将仅更新一次(例如,1次编程)。

在对存储器单元进行预定义数目次更新(例如,编程和擦除)之后,使x偏移递增,且计数器被配置成将计数的低字节存储在存储器单元中,存储器单元以对应于从对应于y偏移的页面开始的页面中的x偏移的存储器单元开始。举例来说,如图3b中所示,在255个计数之后,将另外位的位八设置成1,且因此,将x偏移设置成1,而y偏移仍然是零。因此,不再针对接下来的256次计数而对其中存储有计数0到255的最低有效位的存储器单元310进行更新,而现在使用其中存储有计数0到255的第二位的存储器单元314来存储最低有效位,且可以将最高有效位存储在第九存储器页面上的存储器单元316中。因此,当计数器到达511时,存储器单元将已经更新如图3b中指示的次数。

因此,x偏移继续递增,直到计数器到达4,095为止。在实施例中,如果不再存在八个连续存储器页面(例如,如果将x偏移设置成9到15),那么所使用的页面可能会换。举例来说,可以将低字节的八个位存储在页面11、12、13、14、15、1、2和3上的存储器单元中,其中最低有效位被存储在页面11上的存储器单元中且最高有效位被存储在页面3上的存储器单元中。

如图3c中所示,一旦计数器到达4,095,另外位11:8都被设置成1,且每一存储器页面上的第一存储器单元将已经更新了255次。如图3d中所示,将另外位11:8设置成零,且将另外位12设置成1。因此,将x偏移重置成零,且将y偏移设置成1。接着将低字节的八个位存储在每一页面上的第二存储器单元中。举例来说,当计数器到达4,352时,存储器单元将已经更新了如由图3d指示的次数。x偏移将继续递增和重置,且y偏移将继续递增直到计数器到达计数65,535为止,此时每一存储器单元将已经更新了255次。

可以将x偏移和y偏移都重置成零,可以将第十七位(未示出)设置成1,且可以重复图3a到3d中示出的过程。在实施例中,可以重复所述过程,直到计数器中的每一位已被设置成1为止。举例来说,当图2的24位计数器的位23:0都被设置成1时(例如,24位计数器已到达其最大计数),所述过程将停止重复,且存储器阵列中的每一存储器单元将已经更新了65,280次,所述次数小于在存储器单元损耗之前,通常可以对存储器单元执行的更新的次数。因此,通过使跨越二维存储器阵列存储最低有效位的存储器单元旋转,eeprom中的若干存储器单元的耗损可以均匀地分布。因此,可以将计数器的最终计数推送到比eeprom中的单一存储器单元可以更新的次数高的值。

防止发生电源故障

如上文参考图2所描述,计数器可以任选地被设计成防止发生电源故障。防止发生电源故障可以是有益的,这是因为攻击者可以能够在将计数存储到eeprom时通过诱发电源故障而利用计数器,所述电源故障可以中断编程周期并导致所存储的计数减小。举例来说,为了从255转变成256,擦除位7:0并写入位8。在实施例中,设想电源故障可以导致计数出差错的两种场景。第一种场景,在擦除期间可能会发生电源故障。举例来说,已经擦除位5:0,但位7和6保持设置。因此,代替被设置成256,计数将会减小到192。第二种场景,在擦除之后但在进行编程之前,电源故障可能会发生。因此,代替被设置成256,计数将会重置成0。

为了防止发生此类场景,当存储字节时,可以复制其中存储有字节的存储器页面(例如,源页面)以形成冗余副本(例如,冗余页面)。接着,可以比较源页面与冗余页面以确定正确的计数,且在存在偏差的状况下,可以将具有较高计数的页面写入到另一页面。举例来说,如果源页面具有计数0而冗余页面具有计数254,那么可以将冗余页面的计数写入到源页面。在擦除操作期间或在擦除操作之后但在编程操作完成之前去除电源的情况下,此情形可能会发生。相似地,如果源页面具有计数255而冗余页面具有计数0,那么可以将源页面写入到冗余页面。在编程操作期间去除电源的情况下,此情形可能会发生。

图4是用于使用eeprom来防止非易失性计数器电路发生电源故障的技术的流程图。在块402处,读取较高字节的页面(例如,源页面)。在实施例中,可能存在由计数器控制器逻辑或存储器控制器读取的单一页面或若干页面。在块404处,读取较高字节(例如,另外位)的冗余页面。在实施例中,冗余页面的数目等于在块402处读取的较高字节的页面的数目。在决策点406处,比较较高字节的页面(例如,源页面)与较高字节的冗余页面(例如,冗余页面)以确定其是否具有相同的计数。在实施例中,在页面上的位等于相同的二进制值的情况下,页面具有相同计数。如果页面不具有相同计数,那么在决策点408处,确定冗余页面是否具有比源页面低的计数。在块410处,如果冗余页面具有比源页面低的计数,那么将源页面写入到冗余页面。可替换的是,在块412处,如果冗余页面不具有比源页面低的计数,那么将冗余页面写入到源页面。在块410或412处重写页面之后,技术返回到块402,且读取源页面和冗余页面并再次进行比较。

如果页面现在具有相同计数,那么在块414处,从源存储器阵列读取低位字。在实施例中,在由较高字节指示的地址处,从源存储器阵列读取低位字。在块416处,从冗余存储器阵列读取低位字副本。在决策点418处,比较低位字和低位字副本以确定其是否是相同的计数。在实施例中,在低位字和低位字副本具有相同的二进制值的情况下,其具有相同的计数。如果所述字不具有相同的计数,那么在决策点420处,确定低位字副本是否具有比来自源存储器阵列的低位字低的计数。如果低位字副本具有比来自源存储器阵列的低位字低的计数,那么在块422处将源存储器阵列写入到冗余存储器阵列。可替换的是,如果低位字副本具有比来自源存储器阵列的低位字高的计数,那么在块424处将冗余存储器阵列写入到源存储器阵列。在块422或424处重写存储器阵列之后,技术返回到块414,且读取来自源存储器阵列的低位字和来自冗余存储器阵列的低位字副本并再次进行比较。如果存储器阵列现在具有相同的计数,那么低位字以及较高字节指示当前的计数,且在块426处,可以将当前的计数传递到非易失性计数器电路内的计数器,从而进行递增。

图5是根据本发明的实施例的用于使用eeprom来使非易失性计数器电路递增的技术的流程图。在实施例中,技术以接收当前的计数开始。在块502处,接收当前的计数。在实施例中,在执行参考图4所描述的技术之后,接收当前的计数。在块504处,更新计数器以使计数递增。在实施例中,通过易失性触发器的级联而在非易失性计数器电路中实施计数器,所述易失性触发器通过如在下文参考图6所描述的另外电路耦接到存储器。在块506处,将计数器的较高字节写入到源页面。在块508处,将计数器的较高字节写入到冗余页面。在块510处,将计数器的低位字写入到源存储器阵列。在实施例中,使用较高字节来确定供写入低位字的部位。在实施例中,所述部位是存储低位字的位的存储器单元的地址或指示存储器阵列中存储最低有效位的存储器单元的索引。在块512处,将计数器的低位字写入到冗余存储器阵列。非易失性计数器接着保持闲置,直到计数器再次更新且技术在图4中的402处重新开始为止。

图6是根据本发明的实施例的非易失性计数器电路600的示意图。在所述例子中,所述电路包括控制器602、地址创建逻辑604和计数器逻辑606,以及用于将计数器位输出到存储器以供存储的另外电路元件。在实施例中,可以将控制器实施为有限状态机(fsm),其被配置成在用于读取计数器、应用递增值并将经更新的计数存储到存储器中的状态当中进行转变。地址创建逻辑可以是用于基于计数器的另外位来确定x偏移和y偏移的电路。可以使用d触发器来实施计数器逻辑,所述d触发器被布置成使得应用递增会引起涟波,所述涟波会使每一触发器更新。用于将计数器位输出到存储器的另外电路元件可以包括例如加法器608、移位器610以及被配置成输出计数器位以供写入到存储器的信号发生器612。在实施例中,可以将计数器电路集成到较大的集成电路中以接收输入并产生输出,例如图6中所描绘的输入和输出。

尽管以特定次序示出并描述了本文中的方法的操作,但可以更改每种方法的操作次序使得可以逆序执行某些操作,或使得可以至少部分地与其它操作并行地执行某些操作。在另一实施例中,可以间断的和/或交替的方式实施不同操作的指令或子操作。

还应注意的是,可以使用通过计算机执行的存储在计算机可用存储媒体上的软件指令实施所述方法的操作中的至少一些操作。作为一个例子,计算机程序产品的实施例包括存储计算机可读程序的计算机可用存储媒体,所述计算机可读程序当在计算机上执行时致使计算机执行如本文所描述的操作。

此外,本发明的至少部分的实施例可以采用从计算机可用或计算机可读媒体可存取的计算机程序产品的形式,所述计算机可用或计算机可读媒体提供程序代码用于由计算机或任何指令执行系统使用或结合计算机或任何指令执行系统使用。出于此描述的目的,计算机可用或计算机可读媒体可以是可以含有、存储、传达、传播或传送由指令执行系统、设备或装置使用或结合指令执行系统、设备或装置的程序的任何设备。

计算机可用或计算机可读媒体可以为电子、磁性、光学、电磁、红外或半导体系统(或设备或装置)或传播媒体。计算机可读媒体的例子包括半导体或固态存储器、磁带、抽取式计算机磁盘、随机存取存储器(ram)、只读存储器(rom)、硬磁盘和光盘。光盘的当前例子包括具有只读存储器的压缩光盘(cd-rom)、具有读/写的压缩光盘(cd-r/w)、数字视频光盘(dvd),以及蓝光光盘。

在以上描述中,提供各种实施例的特定细节。然而,可以在并没有这些特定细节的全部细节的情况下实施一些实施例。在其它情况下,为了简洁和清晰起见,详细描述某些方法、操作步骤、组件、结构和/或功能仅仅为了能够实现本发明的各种实施例。

尽管已经描述并且示出了本发明的特定实施例,但是本发明不限于如此描述和示出的部分的特定形式或布置。本发明的范围将由在此所附的权利要求书及其等效物所限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1