CN112582009A - 单调计数器及其计数方法 - Google Patents
单调计数器及其计数方法 Download PDFInfo
- Publication number
- CN112582009A CN112582009A CN202011459160.4A CN202011459160A CN112582009A CN 112582009 A CN112582009 A CN 112582009A CN 202011459160 A CN202011459160 A CN 202011459160A CN 112582009 A CN112582009 A CN 112582009A
- Authority
- CN
- China
- Prior art keywords
- data
- bit
- memory block
- current
- monotonic counter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 34
- 230000000295 complement effect Effects 0.000 claims description 7
- 238000001514 detection method Methods 0.000 claims description 3
- 230000002159 abnormal effect Effects 0.000 abstract description 20
- 230000004044 response Effects 0.000 description 6
- 230000005856 abnormality Effects 0.000 description 5
- 125000004122 cyclic group Chemical group 0.000 description 4
- 230000006378 damage Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
- G11C16/16—Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3404—Convergence or correction of memory cell threshold voltages; Repair or recovery of overerased or overprogrammed cells
- G11C16/3409—Circuits or methods to recover overerased nonvolatile memory cells detected during erase verification, usually by means of a "soft" programming step
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
- G11C16/344—Arrangements for verifying correct erasure or for detecting overerased cells
- G11C16/345—Circuits or methods to detect overerased nonvolatile memory cells, usually during erasure verification
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K21/00—Details of pulse counters or frequency dividers
- H03K21/40—Monitoring; Error detection; Preventing or correcting improper counter operation
- H03K21/403—Arrangements for storing the counting state in case of power supply interruption
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Measurement Of Radiation (AREA)
- Indication In Cameras, And Counting Of Exposures (AREA)
Abstract
本发明提供了一种单调计数器,包括控制器以及多个存储块,存储块包括计数基位、标识位、校验位、以及多个数据位,多个存储块中具有一个当前存储块,其中,控制器包括:用于记录单调计数器发生的中断的中断记录模块;以及用于在单调计数器发生了中断并上电复位后,判断当前存储块的数据位是否写满,且当数据位未写满时,在当前存储块的最后一个已存储计数数据的数据位中再次写入数据的逻辑判断模块,从而当单调计数器有异常情况发生时,可以保证单调计数器所记录的计数数据被完整写入,有效地防止了单调计数器因异常情况的出现而使其计数操作发生错误的问题出现。
Description
技术领域
本发明涉及通讯技术领域,尤其涉及一种单调计数器及其计数方法。
背景技术
应答保护单调计数器(Replay Protection Monotonic Counter,RPMC)是指具有单调计数功能的计数器,在应答保护单调计数器中计入的数据后,应答保护单调计数器只会随着计数值的变化单调递增。通常应答保护单调计数器是与FLASH(快闪存储器)相结合,用于在数据存储过程中来保证读写数据的机密性和完整性。例如,应答保护单调计数器与FLASH结合用于确定存储器存储次数,当FLASH每进行一次数据的读写,就在单调计数器中增加一个计数值,因此为FLASH提供读写数据次数提供一个完整的数据记录;又如,在数据发送过程中,数据单调计数,保证数据的不重复性,进而可以提升数据发送的机密性。
但是,现有技术下的应答保护单调计数器,当有异常情况发生时(比如异常掉电、复位以及电压不稳定等),单调计数器的计数操作往往会出现错误。
发明内容
本发明提供了一种单调计数器及其计数方法,有效地防止了当异常情况发生时,单调计数器的计数操作出现错误的问题。
为了解决上述问题,本发明提供了一种单调计数器,所述单调计数器包括控制器以及多个存储块,所述存储块包括计数基位、标识位、校验位、以及用于存储计数数据的数据位,所述多个存储块中具有一个当前存储块,其中,所述控制器包括:
中断记录模块,用于记录所述单调计数器发生的中断;
逻辑判断模块,用于在所述单调计数器发生了所述中断并上电复位后,判断所述当前存储块的所述数据位是否写满,且当所述数据位未写满时,在所述当前存储块的最后一个已存储计数数据的所述数据位中再次写入数据。
进一步优选的,所述再次写入数据包括在所述数据位中进行补写或重写。
进一步优选的,所述逻辑判断模块还用于当所述数据位已写满时,判断是否将另一存储块切换为当前存储块,且当所述切换已进行时,对切换前的当前存储块进行擦除。
进一步优选的,所述逻辑判断模块还用于在所述当前存储块的最后一个已存储计数数据的所述数据位中再次写入数据或对所述切换前的当前存储块进行擦除之后,在所述当前存储块中第一个未存储计数数据的所述数据位中写入数据进行计数。
进一步优选的,所述逻辑判断模块还用于在对所述切换前的当前存储块进行擦除之前,判断所述切换前的当前存储块是否已在进行擦除,且当所述擦除未进行时,破坏所述切换前的当前存储块的所述校验位,使所述校验位与切换后的当前存储块的所述校验位不一致。
进一步优选的,所述逻辑判断模块还用于当所述切换未进行时,将所述另一存储块切换为当前存储块。
进一步优选的,所述逻辑判断模块还用于在进行所述破坏之前及/或进行所述切换之后,将当前计数值写入所述切换后的当前存储块的所述计数基位,并在所述切换后的当前存储块中写入所述校验位以及所述标识位。
进一步优选的,所述中断包括发生掉电或复位。
另一方面,本发明还提供了一种单调计数器的计数方法,所述单调计数器包括多个存储块,所述存储块包括计数基位、标识位、校验位、以及用于存储计数数据的数据位,所述多个存储块中具有一个当前存储块,所述计数方法包括:
检测步骤,检测到所述单调计数器发生了中断;
第一判断步骤,判断所述当前存储块的所述数据位是否写满;
重写步骤,当所述第一判断步骤的结果指示所述数据位未写满时,在所述当前存储块的最后一个已存储计数数据的所述数据位中再次写入数据。
进一步优选的,所述再次写入数据包括在所述数据位中进行补写或重写。
进一步优选的,在所述第一判断步骤之后,还包括:
第二判断步骤,当所述第一判断步骤的结果指示所述数据位已写满时,判断是否将另一存储块切换为当前存储块;
擦除步骤,当所述第二判断步骤的结果指示已将所述另一存储块切换为当前存储块时,对切换前的当前存储块进行擦除。
进一步优选的,在所述擦除步骤或所述重写步骤之后,还包括:
计数步骤,在所述当前存储块中第一个未存储计数数据的所述数据位中写入数据进行计数。
进一步优选的,在所述擦除步骤之前,还包括:
第三判断步骤,判断所述切换前的当前存储块是否已在进行擦除;
破坏步骤,当所述第三判断步骤的结果指示所述切换前的当前存储块尚未进行擦除时,破坏所述切换前的当前存储块的所述校验位,使所述校验位与切换后的当前存储块的所述校验位不一致。
进一步优选的,在所述第二判断步骤之后,还包括:
切换步骤,当所述第二判断步骤的结果指示未将所述另一存储块切换为当前存储块时,将所述另一存储块切换为当前存储块;
之后,执行所述破坏步骤,破坏所述切换前的当前存储块的所述校验位,使所述校验位与切换后的当前存储块的所述校验位不一致。
进一步优选的,在所述破坏步骤之前及/或所述切换步骤之后,还包括:
写入步骤,将当前计数值写入所述切换后的当前存储块的所述计数基位,并在所述切换后的当前存储块中写入所述校验位以及所述标识位。
本发明的有益效果为:本发明提供了一种单调计数器,包括控制器以及多个存储块,存储块包括计数基位、标识位、校验位、以及用于存储计数数据的数据位,多个存储块中具有一个当前存储块,其中,控制器包括:用于记录单调计数器发生的中断的中断记录模块,以及用于在单调计数器发生了中断并上电复位后,判断当前存储块的数据位是否写满,且当数据位未写满时,在当前存储块的最后一个已存储计数数据的数据位中再次写入数据的逻辑判断模块,从而当单调计数器有异常情况发生时,可以保证单调计数器所记录的计数数据被完整写入,从而可以有效地防止单调计数器因异常情况的出现而使其计数操作发生错误的问题出现。
附图说明
为了更清楚地说明本发明的技术方案,下面将对根据本发明而成的各实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明而成的实施例所提供的单调计数器的结构示意图。
图2是根据本发明而成的实施例所提供的单调计数器的计数方法的流程示意图。
图3是根据本发明而成的实施例所提供的单调计数器的计数方法的进一步流程示意图。
具体实施方式
下面将结合本发明而成的实施例中的附图,对本发明而成的实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明针对现有技术下的应答保护单调计数器,当异常情况发生时,应答保护单调计数器的计数操作出现错误的问题,根据本发明而成的实施例用以解决该问题。
容易理解的是,当应答保护单调计数器发生异常情况而导致其产生中断时,在其上电复位后,需要采取一些措施防止应答保护单调计数器在后续出现读取异常的情况。而在应答保护单调计数器有中断发生时,其内部进行计数操作的存储块会有四种可能出现的工作状态,分别是:1、正在进行计数的当前存储块未写满;2、正在进行计数的当前存储块已写满,但还未切换新的存储块继续进行计数;3、已切换新的存储块继续进行计数,但还未开始擦除已写满的存储块;4、已切换新的存储块继续进行计数,且正在进行擦除已写满的存储块的操作。
针对上述四种可能出现的情况,本发明提出了如下的措施。
请参阅图1,图1是根据本发明而成的实施例所提供的单调计数器100的结构示意图,从图1可知根据本发明而成的实施例的各组成部分,以及各组成部分的相对位置关系。
如图1所示,该单调计数器100包括控制器110以及多个存储块120,且每个存储块120包括计数基位121、标识位122、校验位123以及多个用于存储计数数据的数据位124,且多个存储块120中具有一个当前存储块,其中,控制器110具体可以包括:
中断记录模块111,该中断记录模块111用于记录单调计数器100发生的中断;
逻辑判断模块112,该逻辑判断模块112用于在单调计数器100发生了中断并上电复位后,判断当前存储块的数据位124是否写满,且当数据位124未写满时,在当前存储块的最后一个已存储计数数据的数据位124中再次写入数据。
需要说明的是,单调计数器100用以保证其对应的存储器读写数据的机密性和完整性,单调计数器100中的计数数据可以单调性地递增,而由于单调计数器100中每个存储块120的数据位124所能记录的数值有限,因此,当单调计数器100中的一个存储块120中的计数值达到上限后,会切换一个没有进行计数、或者进行过计数但计数数据已经被擦除的存储块120继续进行计数。在切换存储块120进行计数时,必须将切换前的存储块120的计数数据保存到切换后的存储块120中,以作为切换后的存储块120计数的基础,切换后的存储块120会在这个计数基础上继续进行计数,计数基位121就是用于记录上一个当前存储块写满切换时所计入的计数数据;
标识位122中记录的数据用于表征存储块120是否需要进行擦除及编程操作,具体地,标识位122只具有两种数据状态,一种数据状态表征存储块120需要进行擦除及编程操作(如00),一种数据状态表征存储块120已经进行擦除及编程、不需要再进行擦除及编程操作(如FF);
校验位123的有效性用于表征存储块120的计数基位121以及标识位122中的数据是否有效。具体地,计数基位121与标识位122会通过某种校验运算(譬如加法运算、奇偶运算、异或运算或循环冗余校验(cyclic redundancy check)运算)生成一数值,之后,将该数值与校验位123中的数值进行比较,若二值相等,则表征校验位123有效,也即,该校验位123对应的存储块120中的数据有效、未出现异常、也指示了该存储块是当前存储块;而若这二值不等,则表征校验位123无效,也即,该校验位123对应的存储块120中的数据无效、或发生了异常、也指示了该存储块不是当前存储块;
数据位124则是用于存储计数数据的单元,一般,为了增加存储块120的存储量、减少擦除次数,每个存储块120中会包括多个数据位124。
需要说明的是,数据位124可以用n个0代表该单调计数器100的计数值加1,当逻辑判断模块112判断出数据位124未写满后,会在当前存储块的最后一个已存储计数数据的数据位124中再次写入数据,再次写入数据的方式可以包括在数据位124中进行补写或重写,以n为8,且在单调计数器100发生中断前,最后一个已存储计数数据的数据位124已写入3个0为例:A、“在数据位124中进行补写”即,在该数据位124上补写5个0;或者,B、“在数据位124中进行重写”即,将该数据位124中的8个0重新写入,此处的8个0包含已写入的3个0。
容易理解的是,在逻辑判断模块112完成对数据位124的再次写入数据的操作之后,逻辑判断模块112会在当前存储块中第一个未存储计数数据的数据位124中写入数据进行计数。
容易理解的是,该逻辑判断模块112可以保证当单调计数器100产生中断时,若单调计数器100中的存储块120处于前文所述的“1”(1、正在进行计数的当前存储块未写满)的状态,在单调计数器100上电后,单调计数器100的读写操作不会出现异常。
进一步的,针对中断发生时,单调计数器100中的存储块120处于前文所述的“2”(2、正在进行计数的当前存储块已写满,但还未切换新的存储块继续进行计数)的状态,为保证单调计数器100上电后,单调计数器100的读写操作不会出现异常,根据本发明而成的实施例有如下解决方法:
当逻辑判断模块112判断出当前存储块的数据位124已写满时,逻辑判断模块112会判断是否将另一存储块120切换为当前存储块(其中,另一存储块120存储有搬移数据,且搬移数据为已写满的当前存储块中所存储的数据),且当该切换未进行时,逻辑判断模块112会将另一存储块120切换为当前存储块,之后,将当前计数值写入切换后的当前存储块的计数基位121,并在切换后的当前存储块中写入校验位123以及标识位122。
需要说明的是,上述当前计数值为当前存储块的数据位124以及计数基位121记录的数据之和,该记录的数据之和是指将前存储块的数据位124的值和所有数据位124中的值求和。在实际应用中,单调计数器100常和闪存一同使用,闪存每进行一次数据的读写,就在单调计数器100的当前存储块中的数据位写1,所以一个存储块120中所有的数据位124加上计数基位121的值等于当前计数值。举例来说,数据位124可以用n个0代表该单调计数器100的计数值加1(n为大于等于1的整数),当单调计数器100的计数基位是1000,n是8,数据位124有3个byte的0时,则当前时刻,该单调计数器100的当前计数值是1003。
进一步的,在上述“将当前计数值写入切换后的当前存储块的计数基位121,并在切换后的当前存储块中写入校验位123以及标识位122”的操作完成之后,逻辑判断模块112会破坏切换前的当前存储块的校验位123,使校验位123与切换后的当前存储块的校验位123不一致,以更好地将切换前的当前存储块与切换后的当前存储块区分开来。
需要说明的是,逻辑判断模块112的破坏操作,是将切换前的当前存储块的校验位123中的数据改写为与当前值不一样的任何一个值,如此一来,即便还没有进行切换前的当前存储块的擦除操作,切换前的当前存储块的计数基位121与标识位122计算得到的数值也与校验位123的值不等,即指示了该切换前的当前存储块不是接下来继续进行计数的存储块,保证了计数的正确性。
进一步的,在上述“破坏切换前的当前存储块的校验位123,使校验位123与切换后的当前存储块的校验位123不一致”的操作完成之后,逻辑判断模块112会对切换前的当前存储块进行擦除,之后,在切换后的当前存储块中第一个未存储计数数据的数据位124中写入数据进行计数。
进一步的,针对中断发生时,单调计数器100中的存储块120处于前文所述的“3”(3、已切换新的存储块继续进行计数,但还未开始擦除已写满的存储块)的状态,为保证单调计数器100上电后,单调计数器100的读写操作不会出现异常,根据本发明而成的实施例有如下解决方法:
当逻辑判断模块112判断出当前存储块的数据位124已写满,且逻辑判断模块112进一步判断出已将另一存储块120切换为当前存储块时,逻辑判断模块112会判断切换前的当前存储块是否已在进行擦除,当擦除未进行时,逻辑判断模块112会先完成对切换后的当前存储块的计数基位121、标识位122以及校验位123的写入,之后,逻辑判断模块112会破坏切换前的当前存储块的校验位123,使校验位123与切换后的当前存储块的校验位123不一致,以更好地将切换前的当前存储块与切换后的当前存储块区分开来。
需要说明的是,逻辑判断模块112的破坏操作,是将切换前的当前存储块的校验位123中的数据改写为与当前值不一样的任何一个值,如此一来,即便还没有进行切换前的当前存储块的擦除操作,切换前的当前存储块的计数基位121与标识位122计算得到的数值也与校验位123的值不等,即指示了该切换前的当前存储块不是接下来继续进行计数的存储块。
进一步的,在上述“破坏切换前的当前存储块的校验位123,使校验位123与切换后的当前存储块的校验位123不一致”的操作完成之后,逻辑判断模块112会对切换前的当前存储块进行擦除,之后,在切换后的当前存储块中第一个未存储计数数据的数据位124中写入数据进行计数。
进一步的,针对中断发生时,单调计数器100中的存储块120处于前文所述的“4”(4、已切换新的存储块继续进行计数,且正在进行擦除已写满的存储块的操作)的状态,为保证单调计数器100上电后,单调计数器100的读写操作不会出现异常,根据本发明而成的实施例有如下解决方法:
当逻辑判断模块112判断出当前存储块的数据位124已写满,且逻辑判断模块112进一步判断出已将另一存储块120切换为当前存储块,且判断出对切换前的当前存储块的擦除操作已在进行中时,逻辑判断模块112会再进行一次对切换前的当前存储块的擦除操作,以保证切换前的当前存储块中的数据被完全擦除。之后,在切换后的当前存储块中第一个未存储计数数据的数据位124中写入数据进行计数。
具体地,单调计数器100发生异常而出现的中断具体包括发生掉电、复位、电压不稳定以及其他异常情况而导致的中断。
区别于现有技术,本发明提供了一种单调计数器100,包括控制器110以及多个存储块120,存储块120包括计数基位121、标识位122、校验位123、以及用于存储计数数据的数据位124,多个存储块120中具有一个当前存储块,其中,控制器110包括:用于记录单调计数器100发生的中断的中断记录模块111,以及用于在单调计数器100发生了中断并上电复位后,判断当前存储块的数据位124是否写满,且当数据位124未写满时,在当前存储块的最后一个已存储计数数据的数据位124中再次写入数据的逻辑判断模块112,从而当单调计数器100有异常情况发生时,可以保证单调计数器100所记录的计数数据被完整写入,从而可以有效地防止单调计数器100因异常情况的出现而使其计数操作发生错误的问题出现。
请参阅图2,图2是根据本发明而成的实施例所提供的单调计数器100的计数方法的流程示意图,该计数方法应用于单调计数器100,且该单调计数器100包括多个存储块,每个存储块包括计数基位、标识位、校验位、以及用于存储计数数据的数据位,且多个存储块中具有一个当前存储块。
需要说明的是,单调计数器100用以保证其对应的存储器读写数据的机密性和完整性,单调计数器100中的计数数据可以单调性地递增,而由于单调计数器100中每个存储块的数据位所能记录的数值有限,因此,当单调计数器100中的一个存储块中的计数值达到上限后,会切换一个没有进行计数、或者进行过计数但计数数据已经被擦除的存储块继续进行计数。在切换存储块进行计数时,必须将切换前的存储块的计数数据保存到切换后的存储块中,以作为切换后的存储块计数的基础,切换后的存储块会在这个计数基础上继续进行计数,计数基位就是用于记录上一个当前存储块写满切换时所计入的计数数据;
标识位中记录的数据用于表征存储块是否需要进行擦除及编程操作,具体地,标识位只具有两种数据状态,一种数据状态表征存储块需要进行擦除及编程操作(如00),一种数据状态表征存储块已经进行擦除及编程、不需要再进行擦除及编程操作(如FF);
校验位的有效性用于表征存储块的计数基位以及标识位中的数据是否有效。具体地,计数基位与标识位会通过某种校验运算(譬如加法运算、奇偶运算、异或运算或循环冗余校验(cyclic redundancy check)运算)生成一数值,之后,将该数值与校验位中的数值进行比较,若二值相等,则表征校验位有效,也即,该校验位对应的存储块中的数据有效、未出现异常、也指示了该存储块是当前存储块;而若这二值不等,则表征校验位无效,也即,该校验位对应的存储块中的数据无效、或发生了异常、也指示了该存储块不是当前存储块;
数据位则是用于存储计数数据的单元,一般,为了增加存储块的存储量、减少擦除次数,每个存储块120中会包括多个数据位。
下面根据图2,对应用于单调计数器100的该计数方法的具体流程进行说明:
检测步骤S1O1:检测到单调计数器100发生了中断。
具体地,单调计数器100会因为其发生掉电、复位、电压不稳定以及其他异常情况而导致单调计数器100产生中断。
第一判断步骤S1O2:判断当前存储块的数据位是否写满。
重写步骤S1O3:当第一判断步骤S1O2的结果指示数据位未写满时,在当前存储块的最后一个已存储计数数据的数据位中再次写入数据。
需要说明的是,需要说明的是,数据位可以用n个0代表该单调计数器100的计数值加1,在重写步骤S1O3中,再次写入数据的方式可以包括在数据位中进行补写或重写,以n为8,且在单调计数器100发生中断前,最后一个已存储计数数据的数据位已写入3个0为例:A、“在数据位中进行补写”即,在该数据位上补写5个0;或者,B、“在数据位中进行重写”即,将该数据位中的8个0重新写入,此处的8个0包含已写入的3个0。
容易理解的是,该重写步骤S1O3可以保证当单调计数器100产生中断时,若单调计数器100中的存储块处于前文所述的“1”的状态(1、正在进行计数的当前存储块未写满),在单调计数器100上电后,单调计数器100的读写操作不会出现异常。
进一步的,请参阅图3,图3是根据本发明而成的实施例所提供的单调计数器100的计数方法的进一步流程示意图,如图3所示,因为第一判断步骤S1O2的判断结果还包括“当前存储块的数据位已写满”的情况,所以,在第一判断步骤S1O2之后,还可以包括:
第二判断步骤S104:当第一判断步骤S1O2的结果指示数据位已写满时,判断是否将另一存储块切换为当前存储块;
擦除步骤S105:当第二判断步骤S104的结果指示已将另一存储块切换为当前存储块时,对切换前的当前存储块进行擦除。
其中,另一存储块存储有搬移数据,且搬移数据为已写满的当前存储块中所存储的数据。
进一步的,在擦除步骤S105或重写步骤S1O3之后,还包括:
计数步骤S106:在当前存储块中第一个未存储计数数据的数据位中写入数据进行计数。
进一步的,在擦除步骤S105之前,还包括:
第三判断步骤S107:判断切换前的当前存储块是否已在进行擦除;
破坏步骤S108:当第三判断步骤S107的结果指示切换前的当前存储块尚未进行擦除时,破坏切换前的当前存储块的校验位,使校验位与切换后的当前存储块的校验位不一致。
需要说明的是,破坏步骤S108是为了更好地将切换前的当前存储块与切换后的当前存储块区分开来,具体地,在破坏步骤S108中,是将切换前的当前存储块的校验位中的数据改写为与当前值不一样的任何一个值,如此一来,即便还没有进行切换前的当前存储块的擦除操作,切换前的当前存储块的计数基位与标识位计算得到的数值也与校验位的值不等,即指示了该切换前的当前存储块不是接下来继续进行计数的存储块,保证了计数的正确性。
进一步的,若在第三判断步骤S107后,判断结果指示切换前的当前存储块的擦除操作已在进行中时,会直接执行擦除步骤S105,即,再进行一次对切换前的当前存储块的擦除操作,以保证切换前的当前存储块中的数据被完全擦除。
进一步的,因为第二判断步骤S104的判断结果还包括“尚未将另一存储块切换为当前存储块”的情况,所以,在第二判断步骤S104之后,还可以包括:
切换步骤S109:当第二判断步骤S104的结果指示未将另一存储块切换为当前存储块时,将另一存储块切换为当前存储块;
之后,执行破坏步骤S108,破坏切换前的当前存储块的校验位,使校验位与切换后的当前存储块的校验位不一致。
需要说明的是,因为在破坏步骤S108之前及/或切换步骤S109之后,需要完成对单调计数器100的计数基位、校验位以及标识位的写入,所以,在破坏步骤S108之前或切换步骤S109之后,还包括:
写入步骤S110:将当前计数值写入切换后的当前存储块的计数基位,并在切换后的当前存储块中写入校验位以及标识位。
需要说明的是,上述当前计数值为当前存储块的数据位以及计数基位记录的数据之和,该记录的数据之和是指将前存储块的数据位的值和所有数据位中的值求和。在实际应用中,单调计数器100常和闪存一同使用,闪存每进行一次数据的读写,就在单调计数器100的当前存储块中的数据位写1,所以一个存储块中所有的数据位加上计数基位的值等于当前计数值。举例来说,数据位可以用n个0代表该单调计数器100的计数值加1(n为大于等于1的整数),当单调计数器100的计数基位是1000,n是8,数据位有3个byte的0时,则当前时刻,该单调计数器100的当前计数值是1003。
容易理解的是,上述擦除步骤S105以及破坏步骤S108可以保证当单调计数器100产生中断时,若单调计数器100中的存储块处于前文所述的“2”(2、正在进行计数的当前存储块已写满,但还未切换新的存储块继续进行计数)、“3”(3、已切换新的存储块继续进行计数,但还未开始擦除已写满的存储块)以及“4”(4、已切换新的存储块继续进行计数,且正在进行擦除已写满的存储块的操作)的状态,在单调计数器100上电后,单调计数器100的读写操作不会出现异常,从而可以有效地防止单调计数器100因为发生了中断而使其计数操作出现错误的问题发生。
区别于现有技术,本发明提供了一种单调计数器100的计数方法,该计数方法应用于单调计数器100,且该单调计数器100包括多个存储块,每个存储块包括计数基位、标识位、校验位、以及用于存储计数数据的数据位,且多个存储块中具有一个当前存储块,该计数方法包括:检测到单调计数器100发生了中断,之后,判断当前存储块的数据位是否写满,若否,则在当前存储块的最后一个已存储计数数据的数据位中再次写入数据,从而当单调计数器100有异常情况发生时,可以保证单调计数器100所记录的计数数据被完整写入,从而可以有效地防止单调计数器100因异常情况的出现而使其计数操作发生错误的问题出现。
除上述实施例外,本发明还可以有其他实施方式。凡采用等同替换或等效替换形成的技术方案,均落在本发明要求的保护范围。
综上所述,虽然本发明已将优选实施例揭露如上,但上述优选实施例并非用以限制本发明,本领域的普通技术人员,在不脱离本发明的精神和范围内,均可作各种更动与润饰,因此本发明的保护范围以权利要求界定的范围为准。
Claims (15)
1.一种单调计数器,其特征在于,所述单调计数器包括控制器以及多个存储块,所述存储块包括计数基位、标识位、校验位、以及用于存储计数数据的数据位,所述多个存储块中具有一个当前存储块,其中,所述控制器包括:
中断记录模块,用于记录所述单调计数器发生的中断;
逻辑判断模块,用于在所述单调计数器发生了所述中断并上电复位后,判断所述当前存储块的所述数据位是否写满,且当所述数据位未写满时,在所述当前存储块的最后一个已存储计数数据的所述数据位中再次写入数据。
2.根据权利要求1所述的单调计数器,其特征在于,所述再次写入数据包括在所述数据位中进行补写或重写。
3.根据权利要求1所述的单调计数器,其特征在于,所述逻辑判断模块还用于当所述数据位已写满时,判断是否将另一存储块切换为当前存储块,且当所述切换已进行时,对切换前的当前存储块进行擦除。
4.根据权利要求3所述的单调计数器,其特征在于,所述逻辑判断模块还用于在所述当前存储块的最后一个已存储计数数据的所述数据位中再次写入数据或对所述切换前的当前存储块进行擦除之后,在所述当前存储块中第一个未存储计数数据的所述数据位中写入数据进行计数。
5.根据权利要求3所述的单调计数器,其特征在于,所述逻辑判断模块还用于在对所述切换前的当前存储块进行擦除之前,判断所述切换前的当前存储块是否已在进行擦除,且当所述擦除未进行时,破坏所述切换前的当前存储块的所述校验位,使所述校验位与切换后的当前存储块的所述校验位不一致。
6.根据权利要求5所述的单调计数器,其特征在于,所述逻辑判断模块还用于当所述切换未进行时,将所述另一存储块切换为当前存储块。
7.根据权利要求5所述的单调计数器,其特征在于,所述逻辑判断模块还用于在进行所述破坏之前及/或进行所述切换之后,将当前计数值写入所述切换后的当前存储块的所述计数基位,并在所述切换后的当前存储块中写入所述校验位以及所述标识位。
8.根据权利要求1所述的单调计数器,其特征在于,所述中断包括发生掉电或复位。
9.一种单调计数器的计数方法,所述单调计数器包括多个存储块,所述存储块包括计数基位、标识位、校验位、以及用于存储计数数据的数据位,所述多个存储块中具有一个当前存储块,其特征在于,所述计数方法包括:
检测步骤,检测到所述单调计数器发生了中断;
第一判断步骤,判断所述当前存储块的所述数据位是否写满;
重写步骤,当所述第一判断步骤的结果指示所述数据位未写满时,在所述当前存储块的最后一个已存储计数数据的所述数据位中再次写入数据。
10.根据权利要求9所述的计数方法,其特征在于,所述再次写入数据包括在所述数据位中进行补写或重写。
11.根据权利要求9所述的计数方法,其特征在于,在所述第一判断步骤之后,还包括:
第二判断步骤,当所述第一判断步骤的结果指示所述数据位已写满时,判断是否将另一存储块切换为当前存储块;
擦除步骤,当所述第二判断步骤的结果指示已将所述另一存储块切换为当前存储块时,对切换前的当前存储块进行擦除。
12.根据权利要求11所述的计数方法,其特征在于,在所述擦除步骤或所述重写步骤之后,还包括:
计数步骤,在所述当前存储块中第一个未存储计数数据的所述数据位中写入数据进行计数。
13.根据权利要求11所述的计数方法,其特征在于,在所述擦除步骤之前,还包括:
第三判断步骤,判断所述切换前的当前存储块是否已在进行擦除;
破坏步骤,当所述第三判断步骤的结果指示所述切换前的当前存储块尚未进行擦除时,破坏所述切换前的当前存储块的所述校验位,使所述校验位与切换后的当前存储块的所述校验位不一致。
14.根据权利要求13所述的计数方法,其特征在于,在所述第二判断步骤之后,还包括:
切换步骤,当所述第二判断步骤的结果指示未将所述另一存储块切换为当前存储块时,将所述另一存储块切换为当前存储块;
之后,执行所述破坏步骤,破坏所述切换前的当前存储块的所述校验位,使所述校验位与切换后的当前存储块的所述校验位不一致。
15.根据权利要求14所述的计数方法,其特征在于,在所述破坏步骤之前及/或所述切换步骤之后,还包括:
写入步骤,将当前计数值写入所述切换后的当前存储块的所述计数基位,并在所述切换后的当前存储块中写入所述校验位以及所述标识位。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011459160.4A CN112582009B (zh) | 2020-12-11 | 2020-12-11 | 单调计数器及其计数方法 |
PCT/CN2020/138227 WO2022120940A1 (zh) | 2020-12-11 | 2020-12-22 | 单调计数器及其计数方法 |
TW110142661A TWI805080B (zh) | 2020-12-11 | 2021-11-16 | 單調計數器及其計數方法 |
US18/328,741 US20230315318A1 (en) | 2020-12-11 | 2023-06-04 | Monotonic counters and counting methods by monotonic counter |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011459160.4A CN112582009B (zh) | 2020-12-11 | 2020-12-11 | 单调计数器及其计数方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112582009A true CN112582009A (zh) | 2021-03-30 |
CN112582009B CN112582009B (zh) | 2022-06-21 |
Family
ID=75132109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011459160.4A Active CN112582009B (zh) | 2020-12-11 | 2020-12-11 | 单调计数器及其计数方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230315318A1 (zh) |
CN (1) | CN112582009B (zh) |
TW (1) | TWI805080B (zh) |
WO (1) | WO2022120940A1 (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000339232A (ja) * | 1999-05-31 | 2000-12-08 | Oki Data Corp | 不揮発性メモリへのカウント値の書込み方法 |
EP1416498A1 (fr) * | 2002-10-28 | 2004-05-06 | STMicroelectronics S.A. | Compteur monotone à base de cellules mémoire |
US6836853B1 (en) * | 1999-12-31 | 2004-12-28 | Intel Corporation | Non-volatile memory based monotonic counter |
CN1700642A (zh) * | 2005-05-25 | 2005-11-23 | 北京兆日科技有限责任公司 | 一种单调计数器的实现方法 |
US20110162083A1 (en) * | 2006-09-27 | 2011-06-30 | Trusted Logic | System and method for securing data |
CN104657678A (zh) * | 2013-11-19 | 2015-05-27 | 北京兆易创新科技股份有限公司 | 应答保护单调计数器、读取方法及计数方法 |
US20150253220A1 (en) * | 2012-10-11 | 2015-09-10 | Fujitsu Ten Limited | Engine control apparatus and control method for the same |
CN111261214A (zh) * | 2020-04-30 | 2020-06-09 | 深圳市芯天下技术有限公司 | 应答保护单调计数器及管理其计数值的方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5155809A (en) * | 1989-05-17 | 1992-10-13 | International Business Machines Corp. | Uncoupling a central processing unit from its associated hardware for interaction with data handling apparatus alien to the operating system controlling said unit and hardware |
CN1168004C (zh) * | 1989-05-17 | 2004-09-22 | 国际商业机器公司 | 在数据处理***中提供容错环境和体系结构的装置 |
US5838614A (en) * | 1995-07-31 | 1998-11-17 | Lexar Microsystems, Inc. | Identification and verification of a sector within a block of mass storage flash memory |
TWI348653B (en) * | 2006-06-08 | 2011-09-11 | Via Tech Inc | Decoding of context adaptive binary arithmetic codes in computational core of programmable graphics processing unit |
KR101047577B1 (ko) * | 2006-12-29 | 2011-07-08 | 샌디스크 코포레이션 | 서로 다른 사전충전 인에이블 전압들을 사용함으로써 프로그램 디스터브가 감소된 비휘발성 메모리 프로그래밍 |
CN103295632A (zh) * | 2013-05-28 | 2013-09-11 | 中国电子科技集团公司第十研究所 | 防止意外掉电引起线性累计数据突变的方法 |
US11012425B2 (en) * | 2018-12-28 | 2021-05-18 | Micron Technology, Inc. | Replay protection nonce generation |
-
2020
- 2020-12-11 CN CN202011459160.4A patent/CN112582009B/zh active Active
- 2020-12-22 WO PCT/CN2020/138227 patent/WO2022120940A1/zh active Application Filing
-
2021
- 2021-11-16 TW TW110142661A patent/TWI805080B/zh active
-
2023
- 2023-06-04 US US18/328,741 patent/US20230315318A1/en active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000339232A (ja) * | 1999-05-31 | 2000-12-08 | Oki Data Corp | 不揮発性メモリへのカウント値の書込み方法 |
US6836853B1 (en) * | 1999-12-31 | 2004-12-28 | Intel Corporation | Non-volatile memory based monotonic counter |
EP1416498A1 (fr) * | 2002-10-28 | 2004-05-06 | STMicroelectronics S.A. | Compteur monotone à base de cellules mémoire |
CN1700642A (zh) * | 2005-05-25 | 2005-11-23 | 北京兆日科技有限责任公司 | 一种单调计数器的实现方法 |
US20110162083A1 (en) * | 2006-09-27 | 2011-06-30 | Trusted Logic | System and method for securing data |
US20150253220A1 (en) * | 2012-10-11 | 2015-09-10 | Fujitsu Ten Limited | Engine control apparatus and control method for the same |
CN104657678A (zh) * | 2013-11-19 | 2015-05-27 | 北京兆易创新科技股份有限公司 | 应答保护单调计数器、读取方法及计数方法 |
CN111261214A (zh) * | 2020-04-30 | 2020-06-09 | 深圳市芯天下技术有限公司 | 应答保护单调计数器及管理其计数值的方法 |
Also Published As
Publication number | Publication date |
---|---|
TWI805080B (zh) | 2023-06-11 |
US20230315318A1 (en) | 2023-10-05 |
WO2022120940A1 (zh) | 2022-06-16 |
TW202223884A (zh) | 2022-06-16 |
CN112582009B (zh) | 2022-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101522744B1 (ko) | 새로운 불량 블록 검출 | |
US6339546B1 (en) | Storage device counting error correction | |
TWI625735B (zh) | 記憶體管理方法以及儲存控制器 | |
TWI512742B (zh) | 非揮發性快閃記憶體擦除異常存儲塊修復方法和裝置 | |
TWI633428B (zh) | 資料儲存裝置與記憶體裝置之資料處理方法 | |
JP2002351685A (ja) | 不揮発性メモリのデータ更新方法及び制御装置 | |
RU2269814C2 (ru) | Способ надежной записи указателя для кольцевой памяти | |
CN114721602B (zh) | 一种基于FreeRTOS的Nor Flash滚动存储方法及装置 | |
JP2019096281A (ja) | データ記憶装置および関連する操作方法 | |
CN112270945B (zh) | 记录是否有擦除时掉电的方法、装置、存储介质和终端 | |
CN112582009B (zh) | 单调计数器及其计数方法 | |
JP3981268B2 (ja) | 不揮発性メモリ及びそのデータ更新方法 | |
CN111124739B (zh) | 用于非易失性存储器的防撕除保护*** | |
CN112582010B (zh) | 单调计数器及其操作方法 | |
CN114300026A (zh) | 一种单调计数器、计数方法、电子设备及存储介质 | |
KR20050064887A (ko) | 오류 검출 능력이 강화된 플래시 메모리 및 다비트 오류검출 방법 | |
US7353348B2 (en) | Nonvolatile memory and card reader provided with the same | |
JP4266742B2 (ja) | フラッシュメモリ搭載電子装置、そのメモリデータ管理方法およびプログラム | |
US20070274302A1 (en) | Data Storage Device, Memory Managing Method, and Program | |
JP2818628B2 (ja) | メモリカードにおけるデータ記録方法およびメモリカードシステム | |
CN112711378B (zh) | 数据储存方法及读写设备 | |
JPS6215686A (ja) | 使用者メモリの釈放方法および装置 | |
CN112582008A (zh) | 单调计数器及其操作方法 | |
JP2000076394A (ja) | 半導体メモリシステムの制御方法 | |
JPS60117472A (ja) | 磁気バブルメモリ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 430205 No.18, Gaoxin 4th Road, Donghu Development Zone, Wuhan City, Hubei Province Patentee after: Wuhan Xinxin Integrated Circuit Co.,Ltd. Country or region after: China Address before: 430205 No.18, Gaoxin 4th Road, Donghu Development Zone, Wuhan City, Hubei Province Patentee before: Wuhan Xinxin Semiconductor Manufacturing Co.,Ltd. Country or region before: China |
|
CP03 | Change of name, title or address |