TW202223884A - 單調計數器及其計數方法 - Google Patents
單調計數器及其計數方法 Download PDFInfo
- Publication number
- TW202223884A TW202223884A TW110142661A TW110142661A TW202223884A TW 202223884 A TW202223884 A TW 202223884A TW 110142661 A TW110142661 A TW 110142661A TW 110142661 A TW110142661 A TW 110142661A TW 202223884 A TW202223884 A TW 202223884A
- Authority
- TW
- Taiwan
- Prior art keywords
- storage block
- data
- bit
- current storage
- monotonic counter
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 25
- 230000006378 damage Effects 0.000 claims description 12
- 238000001514 detection method Methods 0.000 claims description 3
- 230000002159 abnormal effect Effects 0.000 abstract description 21
- 230000004044 response Effects 0.000 description 8
- 125000004122 cyclic group Chemical group 0.000 description 4
- 230000005856 abnormality Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000001502 supplementing effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000005055 memory storage 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
- 238000012795 verification 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:已切換新的儲存塊繼續進行計數,但還未開始擦除已寫滿的儲存塊;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的該計數方法的具體流程進行說明:
檢測步驟S101:檢測到單調計數器100發生了中斷。
具體地,單調計數器100會因為其發生掉電、重定、電壓不穩定以及其他異常情況而導致單調計數器100產生中斷。
第一判斷步驟S102:判斷當前儲存塊的資料位元是否寫滿。
重寫步驟S103:當第一判斷步驟S102的結果指示資料位元未寫滿時,在當前儲存塊的最後一個已儲存計數資料的資料位元中再次寫入資料。
需要說明的是,資料位元可以用n個0代表該單調計數器100的計數值加1,在重寫步驟S103中,再次寫入資料的方式可以包括在資料位元中進行補寫或重寫,以n為8,且在單調計數器100發生中斷前,最後一個已儲存計數資料的資料位元已寫入3個0為例:A:“在資料位元中進行補寫”,即在該資料位元上補寫5個0;或者,B:“在資料位元中進行重寫”,即將該資料位元中的8個0重新寫入,此處的8個0包含已寫入的3個0。
容易理解的是,該重寫步驟S103可以保證當單調計數器100產生中斷時,若單調計數器100中的儲存塊處於前文所述的“1”的狀態(1:正在進行計數的當前儲存塊未寫滿),在單調計數器100上電後,單調計數器100的讀寫操作不會出現異常。
進一步的,請參閱圖3,圖3是根據本發明而成的實施例所提供的單調計數器100的計數方法的進一步流程示意圖,如圖3所示,因為第一判斷步驟S102的判斷結果還包括“當前儲存塊的資料位元已寫滿”的情況,所以,在第一判斷步驟S102之後,還可以包括:
第二判斷步驟S104:當第一判斷步驟S102的結果指示資料位元已寫滿時,判斷是否將另一儲存塊切換為當前儲存塊;以及
擦除步驟S105:當第二判斷步驟S104的結果指示已將另一儲存塊切換為當前儲存塊時,對切換前的當前儲存塊進行擦除。
其中,另一儲存塊儲存有搬移資料,且搬移資料為已寫滿的當前儲存塊中所儲存的資料。
進一步的,在擦除步驟S105或重寫步驟S103之後,還包括:
計數步驟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因異常情況的出現而使其計數操作發生錯誤的問題出現。
除上述實施例外,本發明還可以有其他實施方式。凡採用等同替換或等效替換形成的技術方案,均落在本發明要求的保護範圍。
綜上所述,雖然本發明已將較佳實施例揭露如上,但上述較佳實施例並非用以限制本發明,本領域的普通技術人員,在不脫離本發明的精神和範圍內,均可作各種更動與潤飾,因此本發明的保護範圍以請求項界定的範圍為准。
100:單調計數器
110:控制器
111:中斷記錄模組
112:邏輯判斷模組
120:儲存塊
121:計數基位元
122:標識位元
123:校驗位元
124:資料位元
S101~S110:步驟
為了更清楚地說明本發明的技術方案,下面將對根據本發明而成的各實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1是根據本發明而成的實施例所提供的單調計數器的結構示意圖。
圖2是根據本發明而成的實施例所提供的單調計數器的計數方法的流程示意圖。
圖3是根據本發明而成的實施例所提供的單調計數器的計數方法的進一步流程示意圖。
100:單調計數器
110:控制器
111:中斷記錄模組
112:邏輯判斷模組
120:儲存塊
121:計數基位元
122:標識位元
123:校驗位元
124:資料位元
Claims (15)
- 一種單調計數器,包括一控制器以及多個儲存塊,該儲存塊包括一計數基位元、一標識位元、一校驗位元、以及用於儲存計數資料的一資料位元,該等多個儲存塊中具有一當前儲存塊,其中,該控制器包括: 一中斷記錄模組,用於記錄該單調計數器發生的中斷;以及 一邏輯判斷模組,用於在該單調計數器發生了該中斷並上電重定後,判斷該當前儲存塊的該資料位元是否寫滿,且當該資料位元未寫滿時,在該當前儲存塊的最後一個已儲存計數資料的該資料位元中再次寫入資料。
- 根據請求項1所述的單調計數器,其中,該再次寫入資料包括在該資料位元中進行補寫或重寫。
- 根據請求項1所述的單調計數器,其中,該邏輯判斷模組還用於當該資料位元已寫滿時,判斷是否將另一儲存塊切換為當前儲存塊,且當該切換已進行時,對切換前的該當前儲存塊進行擦除。
- 根據請求項3所述的單調計數器,其中,該邏輯判斷模組還用於在該當前儲存塊的最後一個已儲存計數資料的該資料位元中再次寫入資料或對切換前的該當前儲存塊進行擦除之後,在該當前儲存塊中第一個未儲存計數資料的該資料位元中寫入資料進行計數。
- 根據請求項3所述的單調計數器,其中,該邏輯判斷模組還用於在對該切換前的該當前儲存塊進行擦除之前,判斷切換前的該當前儲存塊是否已在進行擦除,且當擦除未進行時,破壞切換前的該當前儲存塊的該校驗位元,使該校驗位元與切換後的該當前儲存塊的該校驗位元不一致。
- 根據請求項5所述的單調計數器,其中,該邏輯判斷模組還用於當該切換未進行時,將另一儲存塊切換為該當前儲存塊。
- 根據請求項5所述的單調計數器,其中,該邏輯判斷模組還用於在進行破壞之前及/或進行切換之後,將當前計數值寫入切換後的該當前儲存塊的該計數基位元,並在切換後的該當前儲存塊中寫入該校驗位元以及該標識位元。
- 根據請求項1所述的單調計數器,其中,該中斷包括發生掉電或重定。
- 一種單調計數器的計數方法,其中該單調計數器包括多個儲存塊,該儲存塊包括一計數基位元、一標識位元、一校驗位元、以及用於儲存計數資料的一資料位元,該等多個儲存塊中具有一當前儲存塊,該計數方法包括: 檢測步驟,檢測到該單調計數器發生了中斷; 第一判斷步驟,判斷該當前儲存塊的該資料位元是否寫滿;以及 重寫步驟,當該第一判斷步驟的結果指示該資料位元未寫滿時,在該當前儲存塊的最後一個已儲存計數資料的該資料位元中再次寫入資料。
- 根據請求項9所述的計數方法,其中,再次寫入資料包括在該資料位元中進行補寫或重寫。
- 根據請求項9所述的計數方法,其中,在該第一判斷步驟之後,還包括: 第二判斷步驟,當該第一判斷步驟的結果指示該資料位元已寫滿時,判斷是否將另一儲存塊切換為該當前儲存塊;以及 擦除步驟,當該第二判斷步驟的結果指示已將該另一儲存塊切換為該當前儲存塊時,對切換前的該當前儲存塊進行擦除。
- 根據請求項11所述的計數方法,其中,在該擦除步驟或該重寫步驟之後,還包括: 計數步驟,在該當前儲存塊中第一個未儲存計數資料的該資料位元中寫入資料進行計數。
- 根據請求項11所述的計數方法,其中,在該擦除步驟之前,還包括: 第三判斷步驟,判斷切換前的該當前儲存塊是否已在進行擦除;以及 破壞步驟,當該第三判斷步驟的結果指示切換前的該當前儲存塊尚未進行擦除時,破壞切換前的該當前儲存塊的該校驗位元,使該校驗位元與切換後的該當前儲存塊的該校驗位元不一致。
- 根據請求項13所述的計數方法,其中,在該第二判斷步驟之後,還包括: 切換步驟,當該第二判斷步驟的結果指示未將該另一儲存塊切換為該當前儲存塊時,將該另一儲存塊切換為該當前儲存塊;以及 之後,執行該破壞步驟,破壞切換前的該當前儲存塊的該校驗位元,使該校驗位元與切換後的該當前儲存塊的該校驗位元不一致。
- 根據請求項14所述的計數方法,其中,在該破壞步驟之前及/或該切換步驟之後,還包括: 寫入步驟,將當前計數值寫入切換後的該當前儲存塊的該計數基位元,並在切換後的該當前儲存塊中寫入該校驗位元以及該標識位元。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011459160.4 | 2020-12-11 | ||
CN202011459160.4A CN112582009B (zh) | 2020-12-11 | 2020-12-11 | 单调计数器及其计数方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202223884A true TW202223884A (zh) | 2022-06-16 |
TWI805080B TWI805080B (zh) | 2023-06-11 |
Family
ID=75132109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110142661A TWI805080B (zh) | 2020-12-11 | 2021-11-16 | 單調計數器及其計數方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230315318A1 (zh) |
CN (1) | CN112582009B (zh) |
TW (1) | TWI805080B (zh) |
WO (1) | WO2022120940A1 (zh) |
Family Cites Families (15)
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 |
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 |
FR2846463A1 (fr) * | 2002-10-28 | 2004-04-30 | St Microelectronics Sa | Compteur monotone a base de cellules memoire |
CN1700642A (zh) * | 2005-05-25 | 2005-11-23 | 北京兆日科技有限责任公司 | 一种单调计数器的实现方法 |
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 |
FR2906380B1 (fr) * | 2006-09-27 | 2008-12-19 | Trusted Logic Sa | Systeme et procede de securisation de donnees. |
KR101047577B1 (ko) * | 2006-12-29 | 2011-07-08 | 샌디스크 코포레이션 | 서로 다른 사전충전 인에이블 전압들을 사용함으로써 프로그램 디스터브가 감소된 비휘발성 메모리 프로그래밍 |
JP5572683B2 (ja) * | 2012-10-11 | 2014-08-13 | 富士通テン株式会社 | エンジンの制御装置および制御方法 |
CN103295632A (zh) * | 2013-05-28 | 2013-09-11 | 中国电子科技集团公司第十研究所 | 防止意外掉电引起线性累计数据突变的方法 |
CN104657678B (zh) * | 2013-11-19 | 2018-01-09 | 北京兆易创新科技股份有限公司 | 应答保护单调计数器、读取方法及计数方法 |
US11012425B2 (en) * | 2018-12-28 | 2021-05-18 | Micron Technology, Inc. | Replay protection nonce generation |
CN111261214B (zh) * | 2020-04-30 | 2020-08-07 | 深圳市芯天下技术有限公司 | 应答保护单调计数器及管理其计数值的方法 |
-
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
Also Published As
Publication number | Publication date |
---|---|
TWI805080B (zh) | 2023-06-11 |
US20230315318A1 (en) | 2023-10-05 |
WO2022120940A1 (zh) | 2022-06-16 |
CN112582009A (zh) | 2021-03-30 |
CN112582009B (zh) | 2022-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4059472B2 (ja) | メモリカード及びメモリコントローラ | |
KR101522744B1 (ko) | 새로운 불량 블록 검출 | |
US6339546B1 (en) | Storage device counting error correction | |
KR101557572B1 (ko) | 메모리 회로들, 메모리에 액세스하는 방법 및 메모리를 복구하는 방법 | |
TWI638262B (zh) | 資料儲存裝置及應用於其上的操作方法 | |
TWI490869B (zh) | 應用於快閃記憶體的方法與相關的控制器 | |
JP2007310916A (ja) | メモリカード | |
TWI805080B (zh) | 單調計數器及其計數方法 | |
WO2017012507A1 (zh) | 一种数据恢复方法及装置 | |
WO2023093173A1 (zh) | 一种内存硬件故障检测方法、装置以及内存控制器 | |
KR100577988B1 (ko) | 오류 검출 능력이 강화된 플래시 메모리 및 다비트 오류검출 방법 | |
JP2003196165A (ja) | 不揮発性メモリ及びそのデータ更新方法 | |
JPH10302485A (ja) | フラッシュ・メモリを有する情報処理装置 | |
CN112582010B (zh) | 单调计数器及其操作方法 | |
JP2011018371A (ja) | メモリ記憶装置 | |
JP2008305507A (ja) | フラッシュメモリの状態検出方法 | |
JP2008305451A (ja) | フラッシュメモリの状態検出方法 | |
TWI774015B (zh) | 資料的寫入方法及其資料儲存裝置 | |
JPH11272566A (ja) | Nor型フラッシュメモリを用いた記憶装置 | |
CN117076343A (zh) | 或非门闪存存储器的区域管理方法、装置、设备及介质 | |
CN114968107A (zh) | 一种基于嵌入式***的数据存储模型及其方法 | |
CN117406910A (zh) | 数据存储方法、存储装置及计算机可读存储装置 | |
CN112582008A (zh) | 单调计数器及其操作方法 |