一种单调计数器的实现方法

文档序号:7614382阅读:313来源:国知局
专利名称:一种单调计数器的实现方法
技术领域
本发明涉及一种集成电路的设计技术,具体涉及的是一种在信息交互中利用安全芯片保证用户数据安全性的单调计数器实现方法,该实现方法能够有效延长芯片计数器的寿命。
背景技术
在现有技术的进行集成电路设计中,尤其是涉及安全性的集成电路设计时,经常需要提供单调计数器的功能,即计数器的计数值不会减少,只会增加。而提供单调计数器的目的是为了在远程信息交互时,如网上银行,用户发送的数据中加入永不重复的部分,从而防止攻击者从通讯线路中窃取用户的合法数据后,重新发送以冒充用户的身份,即防止重放攻击。由于在用户发送的数据中,在用户端记录为单调增加的数值,因此,服务器端在接收到用户的数据时首先对单调计数器的计数进行判断,如果等于或小于上次数值,则说明本数据并非真实有效的用户数据,可能是非法用户通过通讯线路窃取了用户的合法数据后,进行重放攻击。由此,单调计数器可以用于安全性认证方面。
对于单调计数器,通常的实现方案是首先提供硬件计数单元,使其能够以固定的时间间隔连续计数,之后提供非易失性存储器如“闪存(flash)”等,将计数单元每次的计数值存储在非易失性存储器的某一个位置中。这样,在每次单调计数器重新启动时,计数单元就可以从非易失性存储器中读出上一次的计数值,并从该值开始继续计数,从而达到不会减少、只会增加的“单调”计数功能。
但这种单调计数器实现方法的缺陷在于非易失性存储器如“闪存(flash)”等的擦写寿命相对较短,如10万次,若计数次数达到或超过此值,将会由于非易失性存储器的故障导致单调计数器不能正常工作。
如图1所示为现有的利用非易失性存储器进行计数的方式,该方式利用非易失性存储器的某一个“块”存储计数值。其中一个“块”是指不同的非易失性存储器根据各自的电气特性定义的一段连续的存储空间,本例子中的“块”长度为128字节。
在现有的计数器方式中,每当需要计数时,要先对整个存储计数值的“块”进行擦除操作,之后将新的计数值写入该“块”,这样就完成了一次完整的擦写过程。其中擦除操作必须对整个“块”进行,这是由目前非易失性存储器的硬件特性决定的。
如此,当计数达到10万次时,对非易失性存储器中该“块”的擦写过程就也进行了10万次,此时非易失性存储器中该“块”将不能继续正常工作,若需要继续计数,就必须利用非易失性存储器中的另一个“块”存储计数值。
这样非易失性存储器的存储寿命就很有限,容易造成硬件设备的消耗和浪费。

发明内容
针对现有的单调计数器实现方法的缺陷,本发明的目的是提供一种单调计数器的实现方法,使单调计数器在计数过程中,可以通过充分利用非易失性存储器的存储空间,达到延长非易失性存储器的擦写寿命,从而延长单调计数器计数次数的效果。
为达到以上目的,本发明采用的技术方案是一种单调计数器的实现方法,其用于一硬件计数单元以及一非易失性存储器中,并包括以下步骤设置固件程序,对硬件计数单元和非易失性存储器进行如下操作
a)在包含本硬件计数单元的硬件第一次启动时,将非易失性存储器中负责存储计数值的存储单元的数值赋为全1;b)将非易失性存储器进行分块,在负责存储计数值的块的相应位置写入一个0,直至该块计满0;c)对该块进行擦除操作,写数值为全1,并记录总的擦除次数,循环所述步骤b);d)所述计数值通过总的擦除次数×块字节长度×8+当前块中0的个数计算出。
所述的方法,其中,所述总的擦除次数记录在所述块字节中。
所述的方法,其中,所述非易失性存储器为FLASH存储器。
本发明的效果在于通过应用本发明所述的单调计数器实现方法,在存储计数值时,若计数间隔次数不大,则利用非易失性存储器的不同比特位存储计数值,从而既记录了计数值,又没有耗费非易失性存储器的擦写寿命,这样就能够大大提高单调计数器的计数次数,从而提高了整个集成电路系统的应用灵活性和稳定性。


图1所示为现有的利用非易失性存储器进行计数的方式示意图;图2所示为本发明的利用非易失性存储器进行计数的方式示意图。
具体实施例方式
为使本发明的目的、技术方案和效果更加清楚,以下结合附图及实施例对本发明再做进一步详细的说明。
本发明的一种单调计数器的实现方法,其包括以下步骤提供硬件计数单元;提供非易失性存储器;通过固件内的程序,对硬件计数单元和非易失性存储器进行如下控制
在包含本计数器的硬件设备第一次启动时,将非易失性存储器中负责存储计数值的存储单元的数值赋为全1;将非易失性存储器中负责存储计数值的存储单元分为两个部分低位区和高位区。其中低位区的长度以比特为单位,其值是2的整数次幂,如8、16、32,依次类推;而高位区的长度以字节为单位,并与硬件计数单元可以表示的最大数据的字节长度相同。
当需要存储硬件计数单元的计数值时,首先将当前计数值作为二进制数也分为低位区和高位区两个部分。其中,低位区的比特长度根据非易失性存储器中负责存储计数值的存储单元的低位区来确定,即存储单元低位区长度是2的多少次幂,计数值低位区就取多少比特。而高位区就是整个计数值除去低位区的部分。
在将计数值分区后,比较计数值高位区和存储单元的高位区,若高位区数值相同,计数值低位区所表示的数值是几,就把存储单元的低位区的第几比特清0;若高位区数值不同,则首先重新将非易失性存储器中负责存储计数值的存储单元的数值赋为全1,再按照前述方法将计数值低位区写入存储单元,并将新的计数值高位区写入存储单元。
在包含本计数器的硬件在一次启动时,首先读取非易失性存储器中负责存储计数值的存储单元,根据读出的计数值初始化硬件计数单元,使其从读出的计数值+1的数值开始计数,以保证计数值不会减少,只会增加。
如图2所示是本发明的利用非易失性存储器进行计数的方式,该方式同样利用非易失性存储器的某一个“块”来存储计数值,并不额外需要存储空间。
在本发明的计数方式中,每当需要计数时,并不将计数值本身写入非易失性存储器,而是在负责存储计数值的“块”的相应位置写入一个‘0’,每计一次数就写入一个‘0’,注意此时只是进行了写操作,而没有进行擦除操作,所以并没有完成完整的擦写过程,没有消耗非易失性存储器的寿命。
当本例子中一个长128字节的“块”中的所有位置都写为‘0’,即已经计数1024次时,需要进行一次擦除操作,使该“块”又可以按照写‘0’的方式继续计数。而此时在非易失性存储器的其他位置记录下总的擦除次数。
通过公式擦除次数×块字节长度×8+当前块中‘0’的个数,可以随时方便的计算出当前的计数值。
由于每计数1024次才需要进行一次擦除操作,所以当负责存储计数值的“块”达到10万次的擦写寿命时,实际可以进行1024×10万=1亿零24万次计数。即,使计数次数达到了目前普通计数方式的1024倍,而若非易失性存储器的“块”长度为256字节,则本发明的计数次数就可以达到目前普通计数方式的2048倍,依此类推。
若为了减少对非易失性存储器的空间占用,还可以将总的擦除次数也存储在用于计数的“块”中,而若总的擦除次数需要4个字节的存储空间,则用于计数的空间会相应的减少为124个字节,这样仍然可以使计数次数达到目前普通计数方式的992倍,或者在非易失性存储器的“块”长度为256字节的情况下,达到目前普通计数方式的2016倍。
本发明的效果在于通过应用本发明所述的单调计数器实现方法,在存储计数值时,若计数间隔次数不大,则利用非易失性存储器的不同比特位存储计数值,从而既记录了计数值,又没有耗费非易失性存储器的擦写寿命,因为非易失性存储器要完成一次从1到0、再从0到1的过程才真正完成了一次擦写过程。这样就能够大大提高了单调计数器的计数次数,从而提高了整个集成电路系统的应用灵活性和稳定性。
权利要求
1.一种单调计数器的实现方法,其用于一硬件计数单元以及一非易失性存储器中,并包括以下步骤设置固件程序,对硬件计数单元和非易失性存储器进行如下操作a)在包含本硬件计数单元的硬件第一次启动时,将非易失性存储器中负责存储计数值的存储单元的数值赋为全1;b)将非易失性存储器进行分块,在负责存储计数值的块的相应位置写入一个0,直至该块计满0;c)对该块进行擦除操作,写数值为全1,并记录总的擦除次数,循环所述步骤b);d)所述计数值通过总的擦除次数×块字节长度×8+当前块中0的个数计算出。
2.根据权利要求1所述的方法,其特征在于,所述总的擦除次数记录在所述块字节中。
3.根据权利要求1所述的方法,其特征在于,所述非易失性存储器为FLASH存储器。
全文摘要
本发明的一种单调计数器的实现方法,其用于一硬件计数单元以及一非易失性存储器中,并包括以下步骤设置固件程序,对硬件计数单元和非易失性存储器进行如下操作在包含本硬件计数单元的硬件第一次启动时,将非易失性存储器中负责存储计数值的存储单元的数值赋为全1;将非易失性存储器进行分块,在负责存储计数值的块的相应位置写入一个0,直至该块计满0;对该块进行擦除操作,写数值为全1,并记录总的擦除次数,循环所述步骤b);所述计数值通过总的擦除次数×块字节长度×8+当前块中0的个数计算出。本发明方法能够大大提高单调计数器的计数次数,从而提高了整个集成电路系统的应用灵活性和稳定性。
文档编号H04L9/36GK1700642SQ20051003470
公开日2005年11月23日 申请日期2005年5月25日 优先权日2005年5月25日
发明者张璐, 张玮, 陈强, 朱广志 申请人:北京兆日科技有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1