專利名稱:電子設(shè)備的制作方法
電子設(shè)備本發(fā)明涉及一種電子設(shè)備,例如涉及諸如微控制器的計(jì)算設(shè)備。這樣的設(shè)備可能易受諸如斷電事件的中斷事件的影響。微控制器通常嵌入在其他系統(tǒng)中以提供局部控制,所述系統(tǒng)例如為汽車、電話、器具、機(jī)器、機(jī)器人、以及計(jì)算機(jī)系統(tǒng)的外圍設(shè)備。像這樣,微控制器可以被認(rèn)為是自含式系統(tǒng)(self-contained system),并且通常具有處理器、存儲(chǔ)器及外圍設(shè)備。當(dāng)然,可以用硬件等效地實(shí)現(xiàn)程序化微控制器的功能,而不是使處理器執(zhí)行代碼。鑒于可編程微控制器的多功能性,通??删幊涛⒖刂破魇莾?yōu)選的。雖然一些嵌入式系統(tǒng)是非常復(fù)雜的,但是許多嵌入式系統(tǒng)對(duì)于存儲(chǔ)器和程序長(zhǎng)度有最低要求,沒有操作系統(tǒng),并且軟件復(fù)雜性低。典型的輸入和輸出設(shè)備包括:開關(guān)、繼電器、螺線管、LED、小型或者定制的LCD顯示器、RF (射頻)設(shè)備、以及傳感器(例如,用于感測(cè)溫度、濕度或者亮度級(jí))。 嵌入式系統(tǒng)通常沒有鍵盤、屏幕、磁盤、打印機(jī)或者個(gè)人計(jì)算機(jī)的其他可識(shí)別的I/O設(shè)備,并且可能缺乏任何類型的人機(jī)交互設(shè)備??梢栽谶@樣的嵌入式系統(tǒng)中以及在具有人機(jī)交互設(shè)備的系統(tǒng)中使用本發(fā)明。將會(huì)理解的是,微控制器僅是在嵌入式應(yīng)用中有利的計(jì)算設(shè)備中的一種類型。本發(fā)明可以延伸至如通常在個(gè)人計(jì)算機(jī)中使用的諸如微處理器的其他類型的電子設(shè)備,或者延伸至其他更加通用的電子設(shè)備。眾所周知,微控制器是一種通常設(shè)置在單個(gè)集成電路上的小型電子設(shè)備??梢栽O(shè)置易失性存儲(chǔ)器和非易失性存儲(chǔ)器兩者。閃速存儲(chǔ)器(例如,NOR閃速存儲(chǔ)器)形式的程序存儲(chǔ)器以及一些RAM (隨機(jī)存取存儲(chǔ)器)經(jīng)常包括在芯片上。將會(huì)理解的是,易失性存儲(chǔ)器和非易失性存儲(chǔ)器都可以被設(shè)置成片外存儲(chǔ)器以及片上存儲(chǔ)器,或者可以被設(shè)置成片外存儲(chǔ)器來替代片上存儲(chǔ)器,并且將相應(yīng)地解釋本公開內(nèi)容。微控制器主要可以是數(shù)字裝置,或者可以是例如混合信號(hào)裝置,集成了控制非數(shù)字電子系統(tǒng)所需要的模擬部件。諸如微控制器的計(jì)算設(shè)備可以例如包括DAC (數(shù)字-模擬轉(zhuǎn)換器)和/或ADC (模擬-數(shù)字轉(zhuǎn)換器)部件。在許多微控制器系統(tǒng)中,需要將運(yùn)行時(shí)間數(shù)據(jù)存儲(chǔ)在非易失性存儲(chǔ)器中。該數(shù)據(jù)可以包括大量的不同尺寸的數(shù)據(jù)塊,所述數(shù)據(jù)塊在不同時(shí)間處以不同頻率變化(創(chuàng)建、更新、刪除)。隨機(jī)存取的EEPROM (電可擦可編程只讀存儲(chǔ)器)可能很適合這一需要。然而,微控制器通常包含閃速存儲(chǔ)器,而不是隨機(jī)存取的EEPR0M,因?yàn)殚W速存儲(chǔ)器在同等(comparable)的存儲(chǔ)容量上更便宜且更易于集成。閃速存儲(chǔ)器是一種非易失性計(jì)算機(jī)存儲(chǔ)技術(shù),其可以被電擦除和重新編程。閃速存儲(chǔ)器經(jīng)常用在存儲(chǔ)卡、USB閃速驅(qū)動(dòng)器和固態(tài)驅(qū)動(dòng)器中,用于通用存儲(chǔ)以及在計(jì)算機(jī)與其他數(shù)字產(chǎn)品之間傳遞數(shù)據(jù)。因?yàn)殚W速存儲(chǔ)器是非易失性的,所以不需要電力來維持所存儲(chǔ)的信息。此外,閃速存儲(chǔ)器提供了快速讀出-存取時(shí)間和良好的耐動(dòng)力沖擊性。閃速存儲(chǔ)器是一種特定類型的EEPR0M。雖然在技術(shù)上是一種類型的EEPR0M,但是術(shù)語(yǔ)“EEPR0M”通常用于具體表示能夠以非常小的部分或者塊(通常為字節(jié))進(jìn)行擦除的非閃速 EEPROM。類似于所有EEPR0M,閃速存儲(chǔ)器能夠以數(shù)據(jù)的相對(duì)小的部分被寫入,所述相對(duì)小的部分被稱為頁(yè)(這些頁(yè)通常具有針對(duì)具體存儲(chǔ)器的字長(zhǎng),并且不應(yīng)該與本文中稍后描述的虛擬頁(yè)混淆)。不同于可隨機(jī)存取的EEPR0M,所述頁(yè)不能被獨(dú)立地擦除,而是必須作為由大量頁(yè)組成的扇區(qū)來擦除。為了直接映射到非易失性數(shù)據(jù)的塊,這些扇區(qū)通常尺寸太大且計(jì)數(shù)不足。已經(jīng)努力通過將多個(gè)塊多次存儲(chǔ)到幾個(gè)大扇區(qū)來在閃速存儲(chǔ)器中仿真可隨機(jī)存取的EEPROM的能力。所得到的閃速存儲(chǔ)器系統(tǒng)可以被稱為虛擬EEPROM存儲(chǔ)器。為了擦除閃存扇區(qū)(flash sector),已經(jīng)認(rèn)識(shí)到需要將對(duì)應(yīng)于該閃存扇區(qū)的虛擬EEPROM的內(nèi)容的副本存儲(chǔ)在一些其他存儲(chǔ)器中。如果在擦除期間虛擬EEPROM的內(nèi)容要相對(duì)于突然斷電(例如與電源軌暫時(shí)斷連)是安全的,則該內(nèi)容的至少一個(gè)副本需要被一直存儲(chǔ)到閃速存儲(chǔ)器。因此,已經(jīng)確定,需要至少兩個(gè)閃存扇區(qū),以使得在數(shù)據(jù)被存儲(chǔ)到一個(gè)或更多個(gè)其他扇區(qū)的情況下,一個(gè)扇區(qū)可以被擦除。已經(jīng)確定,使用兩個(gè)相同的扇區(qū)、或者以交替順序使用/擦除的兩個(gè)相同的扇區(qū)組,可以進(jìn)行EEPROM仿真。因?yàn)樘摂MEEPROM的內(nèi)容被存儲(chǔ)到若干扇區(qū)中的一個(gè)或更多個(gè)扇區(qū),所以已經(jīng)確定仿真系統(tǒng)需要知道特定數(shù)據(jù)的最新副本被存儲(chǔ)在哪個(gè)扇區(qū)上。該信息不能被存儲(chǔ)在虛擬存儲(chǔ)器上,這是因?yàn)樵诘教摂M存儲(chǔ)器的第一次讀取嘗試之前需要該信息。用于該目的的手段包括扇區(qū)上的標(biāo)志或者魔語(yǔ)(magic-word),所述標(biāo)志或魔語(yǔ)識(shí)別包含標(biāo)志的扇區(qū)的狀態(tài)。作為另一可選方案,可以通過增加的索引來識(shí)別扇區(qū)。存在不同的分布數(shù)據(jù)方式。例如,可以將仿真的全部虛擬數(shù)據(jù)恰好一次存儲(chǔ)到一個(gè)扇區(qū),或者可以將仿真的全部虛擬數(shù)據(jù)分布在多于一個(gè)的扇區(qū)上。已經(jīng)確定,可以通過兩種不同的方法來實(shí)現(xiàn)扇區(qū)上的物理存儲(chǔ)器到虛擬存儲(chǔ)器的分配。第一種方法是靜態(tài)關(guān)系,即,將虛擬存儲(chǔ)器的特定范圍存儲(chǔ)在物理存儲(chǔ)器的專用范圍中,或者將物理存儲(chǔ)器的特定范圍專用于虛擬存儲(chǔ)器的特定子集。第二種方法是借助于關(guān)聯(lián)表的動(dòng)態(tài)關(guān)系。該方法在運(yùn)行時(shí)間期間將物理存儲(chǔ)器分配到虛擬存儲(chǔ)器,并且將關(guān)系存儲(chǔ)在表中。在這種情況下,物理存儲(chǔ)器可以由任何虛擬存儲(chǔ)器占用。表中的每個(gè)單獨(dú)關(guān)聯(lián)的物理位置也可以是動(dòng)態(tài)的。已經(jīng)確定,可以通過將全部的虛擬數(shù)據(jù)存儲(chǔ)在靜態(tài)分配的存儲(chǔ)器的塊中并且然后將小變化添加在動(dòng)態(tài)分配列表中,來將動(dòng)態(tài)分配與靜態(tài)分配結(jié)合。為了在寫入或者擦除期間保持相對(duì)于突然斷電(例如由于與電壓源斷連而導(dǎo)致的突然斷電)是安全的,已經(jīng)確定,下列序列是有用的:(1)標(biāo)記操作已啟動(dòng);(2)執(zhí)行操作;以及(3)然后標(biāo)記操作已完成。如果在讀出期間發(fā)現(xiàn)操作開始了但是沒有完成,則可以認(rèn)為由于突然斷電或者一些其他中斷事件而導(dǎo)致操作失敗。然后可以忽略受影響的數(shù)據(jù)??梢詮年P(guān)聯(lián)表中查找存儲(chǔ)到物理存儲(chǔ)器的動(dòng)態(tài)分配范圍的虛擬數(shù)據(jù)塊。因?yàn)榭赡苁孪炔恢狸P(guān)聯(lián)表中的每個(gè)關(guān)聯(lián)的位置,所以會(huì)需要針對(duì)有效條目來掃描表。這可以從最近的條目開始向著最早的條目來完成,以找出適合該關(guān)聯(lián)的最近的條目。與易失性數(shù)據(jù)中的錯(cuò)誤相比,非易失性存儲(chǔ)器上的錯(cuò)誤數(shù)據(jù)有嚴(yán)重得多的后果。這是因?yàn)橥ㄟ^例如借助 于看門狗(例如,必須被周期性地觸發(fā)以防止重置的硬件)進(jìn)行控制器的重置不可能恢復(fù)數(shù)據(jù)。因此,通常通過冗余代碼來保護(hù)非易失性數(shù)據(jù)免受較小的位錯(cuò)誤。不幸地,冗余代碼不足以檢測(cè)對(duì)閃速存儲(chǔ)器的擦除或者寫入是否被突然斷電或其他類似的中斷事件中斷,因?yàn)槭苡绊懙奈粚?huì)處于不可預(yù)測(cè)的狀態(tài)。這可以通過存儲(chǔ)到存儲(chǔ)器單元的、指示一些其他存儲(chǔ)器單元的狀態(tài)的標(biāo)志來完成。擦除閃存扇區(qū)要花很長(zhǎng)時(shí)間,并且在通過斷電被中斷的情況下會(huì)使存儲(chǔ)器的大范圍處于不可預(yù)測(cè)狀態(tài)。因此,從不完全擦除的閃存扇區(qū)中讀取毀壞的數(shù)據(jù)的風(fēng)險(xiǎn)很高。期望解決上述問題并提供改進(jìn)的電子設(shè)備。期望提供對(duì)由于中斷事件造成的錯(cuò)誤具有降低的敏感度的電子設(shè)備。期望保護(hù)非易失性數(shù)據(jù)不受這樣的損壞。期望提高相對(duì)于斷電的安全性或者相對(duì)于由于斷電造成的中斷的安全性。在閃存寫入或擦除操作通過斷電被中斷的情況下,存在可以影響虛擬數(shù)據(jù)的兩種主要錯(cuò)誤情形,即數(shù)據(jù)丟失和數(shù)據(jù)損壞。通過將數(shù)據(jù)恢復(fù)到先前的合法值,即沒有丟失或者損壞的值,可以緩和這些錯(cuò)誤情形。因此,期望檢測(cè)數(shù)據(jù)丟失或者數(shù)據(jù)損壞。還期望維持一個(gè)合法值,直到對(duì)應(yīng)的新數(shù)據(jù)變?yōu)楹戏橹?。換句話說,期望確定性地檢測(cè)由不完全執(zhí)行的閃存寫入或者閃存擦除操作所引起的數(shù)據(jù)丟失或者數(shù)據(jù)損壞,并且期望忽略不完全的或者損壞的數(shù)據(jù)。還期望在閃速存儲(chǔ)器中保存任何數(shù)據(jù)的先前的合法值,直到新的值被完全寫入為止,并且期望最新的且只有最新的合法值被認(rèn)為是當(dāng)前的“虛擬”數(shù)據(jù)。(Al)根據(jù)本發(fā)明的第一方面,提供了一種電子設(shè)備,包括:非易失性存儲(chǔ)器,其被配置成以存儲(chǔ)器部分寫入或者讀取,所述存儲(chǔ)器部分以一次一個(gè)扇區(qū)的方式被擦除,每個(gè)所述扇區(qū)包括多個(gè)所述部分,并且所述存儲(chǔ)器具有至少三個(gè)所述扇區(qū),所述扇區(qū)中的每個(gè)扇區(qū)適于與其他扇區(qū)無關(guān)地被擦除;以及控制裝置,其能夠操作以控制所述扇區(qū)的擦除,其中:所述控制裝置被配置成將關(guān)于擦除過程的擦除信息存儲(chǔ)在除了所述扇區(qū)中的目標(biāo)扇區(qū)之外的多個(gè)扇區(qū)中,以使得能夠檢查所述扇區(qū)中的這樣的信息以在中斷事件之后建立適當(dāng)?shù)幕謴?fù)過程,所述擦除過程包括擦除所述目標(biāo)扇區(qū)。這樣的中斷事件(例如斷電)可能發(fā)生在擦除過程期間。本電子設(shè)備有利地以魯棒的方式使得這樣的中斷事件能夠恢復(fù)。存儲(chǔ)器部分可以是小的存儲(chǔ)器部分,例如位、字節(jié)、字、頁(yè)。非易失性存儲(chǔ)器可以被配置成使得其可能以一次一個(gè)扇區(qū)的方式被擦除,每個(gè)扇區(qū)擦除實(shí)際上是單個(gè)動(dòng)作。電子設(shè)備可以例如是具有處理器的計(jì)算設(shè)備,或者可以是不具有處理器的硬件。設(shè)備可以是微控制器的一部分,或者可以是微控制器。例如,控制裝置可以是微控制器的一部分,而存儲(chǔ)器可以是微控制器的外部存儲(chǔ)器。設(shè)備可以包括微控制器的其他部分,例如,輸入/輸出端口和外圍設(shè)備。存儲(chǔ)器可以一次寫入到一個(gè)存儲(chǔ)器部分。存儲(chǔ)器可以例如是閃速存儲(chǔ)器,例如NOR閃速存儲(chǔ)器。多個(gè)扇區(qū)可以構(gòu)成扇區(qū)中的大多數(shù),例如以使得能夠進(jìn)行多數(shù)決定法。多個(gè)扇區(qū)可以構(gòu)成除了目標(biāo)扇區(qū)之外的所有扇區(qū)。存儲(chǔ)器可以具有至少四 個(gè)扇區(qū)。
針對(duì)擦除過程,控制裝置可以操作以將擦除信息存儲(chǔ)在所有扇區(qū)中。例如,當(dāng)準(zhǔn)備擦除目標(biāo)扇區(qū)時(shí),可以將這樣的擦除信息存儲(chǔ)在所有扇區(qū)中,并且在擦除目標(biāo)扇區(qū)之后,可以將擦除信息存儲(chǔ)在除了目標(biāo)扇區(qū)之外的扇區(qū)中的所有扇區(qū)中,以指示目標(biāo)扇區(qū)已經(jīng)被擦除。針對(duì)擦除過程,控制裝置可以操作以按照給定的順序?qū)⒉脸畔⒋鎯?chǔ)到有關(guān)的扇區(qū)。針對(duì)每個(gè)擦除過程可以采用相同的順序,例如使得在擦除過程的基礎(chǔ)上不需要存儲(chǔ)信息來識(shí)別所采用的順序。針對(duì)擦除過程,控制裝置可以操作以在有關(guān)的扇區(qū)中存儲(chǔ)相同的擦除信息。有利地,這可以使得不同的扇區(qū)中的擦除信息能夠容易地被比較,并且用于檢測(cè)不同(對(duì)推斷需要不同的恢復(fù)過程有用)。擦除信息本身可以識(shí)別目標(biāo)扇區(qū),或者一些其他信息可以識(shí)別目標(biāo)扇區(qū)。擦除信息(還)可以指示擦除過程的狀態(tài)。擦除信息可以識(shí)別目標(biāo)扇區(qū)和/或擦除過程的狀態(tài)。例如,每個(gè)有關(guān)的扇區(qū)中的擦除信息可以識(shí)別擦除過程是否已經(jīng)開始以及擦除過程是否已經(jīng)完成。因此不同的扇區(qū)中的擦除信息之間的差異可以使得能夠推斷扇區(qū)的狀態(tài)(以及由此適當(dāng)?shù)幕謴?fù)過程)。擦除信息可以存儲(chǔ)在針對(duì)這樣的擦除信息而保留的存儲(chǔ)器的區(qū)域中。擦除信息可以是除了數(shù)據(jù)頁(yè)中存儲(chǔ)的數(shù)據(jù)之外的信息或者附加到數(shù)據(jù)頁(yè)中存儲(chǔ)的數(shù)據(jù)的信肩、O控制裝置可以操作以在進(jìn)行擦除之前存儲(chǔ)這樣的擦除信息,所述擦除信息指示有待進(jìn)行擦除。這樣的信息可以有用地使得能夠確定擦除過程已經(jīng)開始(至少部分地)。類似地,控制裝置可以操作以在進(jìn)行擦除之后存儲(chǔ)這樣的擦除信息,所述擦除信息指示已經(jīng)進(jìn)行了擦除。這樣的信息可以有用地使得能夠確定擦除過程已經(jīng)完成(至少部分地)。在擦除之后,控制裝置可以操作以更`新在進(jìn)行所述擦除之前存儲(chǔ)在除了目標(biāo)扇區(qū)之外的扇區(qū)中的擦除信息進(jìn)行,以指示已經(jīng)進(jìn)行了擦除。也就是說,可以改變擦除信息??刂蒲b置可以被配置成在進(jìn)行擦除之前存儲(chǔ)這樣的擦除信息時(shí),通過將信息的η位目標(biāo)模式存儲(chǔ)在有關(guān)的扇區(qū)中的每個(gè)扇區(qū)的特定區(qū)域中來識(shí)別目標(biāo)扇區(qū),這些區(qū)域與目標(biāo)扇區(qū)相關(guān)聯(lián)。控制裝置可以被配置成在進(jìn)行擦除之前存儲(chǔ)這樣的擦除信息時(shí),通過將信息的η位非目標(biāo)模式存儲(chǔ)在有關(guān)的扇區(qū)中的每個(gè)扇區(qū)的特定區(qū)域中來將具體扇區(qū)識(shí)別為是除了目標(biāo)扇區(qū)之外的扇區(qū),這些區(qū)域與具體扇區(qū)相關(guān)聯(lián)。控制裝置可以被配置成在進(jìn)行擦除之前存儲(chǔ)這樣的擦除信息時(shí),通過將信息的η位未完成模式存儲(chǔ)在有關(guān)的扇區(qū)中的每個(gè)扇區(qū)的特定區(qū)域中來指示目標(biāo)扇區(qū)還沒有被擦除,這些區(qū)域用于指示是否已經(jīng)進(jìn)行了擦除??刂蒲b置被配置成在進(jìn)行了擦除之后存儲(chǔ)這樣的擦除信息時(shí),通過將信息的η位已完成模式存儲(chǔ)在有關(guān)的扇區(qū)中的每個(gè)扇區(qū)的特定區(qū)域中來指示目標(biāo)扇區(qū)已經(jīng)被擦除,這些區(qū)域用于指示是否已經(jīng)進(jìn)行了擦除。η的值可以等于I,或者可以大于I。η的值可以大于或等于2m+l,其中m為正整數(shù)(自然數(shù))。在實(shí)現(xiàn)方式中為了簡(jiǎn)單起見,目標(biāo)模式的位可以全部具有相同的邏輯值。同樣在實(shí)現(xiàn)方式中為了簡(jiǎn)單起見,非目標(biāo)模式的位也可以全部具有相同的邏輯值,例如與目標(biāo)模式的值相反的值。類似的考慮可以應(yīng)用于已完成模式和未完成模式。已完成模式和目標(biāo)模式可以彼此相同。未完成模式和非目標(biāo)模式可以彼此相同。當(dāng)然,可以采用更加復(fù)雜的模式。在η大于I并且可選地η大于或等于2m+l的情況下,其中m為正整數(shù)(自然數(shù)),控制裝置可以被配置成:如果有關(guān)的位中的大多數(shù)位與所述目標(biāo)模式匹配,則將從所述存儲(chǔ)器讀取的這樣的η位模式視為是目標(biāo)模式;或者如果這些位中的大多數(shù)位與所述非目標(biāo)模式匹配,則將從所述存儲(chǔ)器讀取的這樣的η位模式視為是非目標(biāo)模式;或者如果這些位中的大多數(shù)位與所述未完成模式匹配,則將從所述存儲(chǔ)器讀取的這樣的η位模式視為是未完成模式;或者如果這些位中的大多數(shù)位與所述已完成模式匹配,則將從所述存儲(chǔ)器讀取的這樣的η位模式視為是已完成模式。這樣的多數(shù)決定法可以有利地允許設(shè)備應(yīng)對(duì)位值的損壞。例如,在η大于或等于2m+l的情況下,設(shè)備可能能夠處理每個(gè)模式的m位的損壞。在實(shí)現(xiàn)方式中為了簡(jiǎn)單起見,對(duì)于每種所述模式,值η可以是相同的值。值η可以在模式之間不同,或者一種模式·可以具有與其他模式不同的的值η,導(dǎo)致更加復(fù)雜的實(shí)現(xiàn)方式。設(shè)想這樣的復(fù)雜的實(shí)現(xiàn)方式。上文所討論的存儲(chǔ)可以包括寫入到存儲(chǔ)器。這樣的存儲(chǔ)可以包括改變存儲(chǔ)器中已經(jīng)存在的值,或者使存儲(chǔ)器中已經(jīng)存儲(chǔ)的值不改變(或許通過重寫該值),如在要存儲(chǔ)的模式下適當(dāng)?shù)?。控制裝置可以操作以在擦除過程期間使目標(biāo)扇區(qū)被完全擦除。對(duì)于某些類型的存儲(chǔ)器,擦除可以包括在將目標(biāo)扇區(qū)的位中的所有位(所有位)擦除到已擦除狀態(tài)之前,將目標(biāo)扇區(qū)的位中的所有位寫入為已寫入狀態(tài)。擦除過程可以包括:將扇區(qū)作為用于擦除的目標(biāo);對(duì)識(shí)別所述目標(biāo)扇區(qū)的這樣的擦除信息進(jìn)行存儲(chǔ);擦除所述目標(biāo)扇區(qū);以及(然后)(在除了目標(biāo)扇區(qū)之外的扇區(qū)中)對(duì)指示已經(jīng)進(jìn)行了擦除的這樣的擦除信息進(jìn)行存儲(chǔ)??梢栽诓脸^程之前清理目標(biāo)扇區(qū),清理目標(biāo)扇區(qū)可以包括將所需的數(shù)據(jù)復(fù)制到另一扇區(qū),例如具有足夠的空間的最老的扇區(qū)。如果按頁(yè)存儲(chǔ)這樣的數(shù)據(jù),則可以逐頁(yè)地進(jìn)行復(fù)制??刂蒲b置可以操作以在中斷事件之后訪問存儲(chǔ)在扇區(qū)中的擦除信息,以及根據(jù)所訪問的信息在中斷事件之后建立適當(dāng)?shù)幕謴?fù)過程。例如,控制裝置可以被配置成:如果所訪問的信息指示扇區(qū)中的兩個(gè)或更多個(gè)扇區(qū)是目標(biāo)扇區(qū),則在中斷事件之后中止擦除過程。例如,根據(jù)所述訪問,控制裝置可以操作以:在沒有扇區(qū)存儲(chǔ)將具體扇區(qū)識(shí)別為用于擦除的目標(biāo)扇區(qū)的擦除信息時(shí),確定不需要恢復(fù)過程。這可以指示在完全的擦除過程之前或者之后發(fā)生中斷。作為另一個(gè)示例,根據(jù)所述訪問,控制裝置可以操作以:在扇區(qū)中的至少一個(gè)扇區(qū)的所訪問的擦除信息將具體扇區(qū)識(shí)別為用于擦除的目標(biāo)扇區(qū)并且扇區(qū)中的至少兩個(gè)扇區(qū)沒有存儲(chǔ)將具體扇區(qū)識(shí)別為用于擦除的目標(biāo)扇區(qū)的擦除信息時(shí),確定擦除過程的部分過程或全部過程要作為恢復(fù)過程被重復(fù)。這可以指示在擦除前或擦除后完成寫入所有期望的擦除信息之前發(fā)生中斷。關(guān)于這點(diǎn),控制裝置可以操作以:在對(duì)目標(biāo)扇區(qū)的訪問顯示目標(biāo)扇區(qū)沒有處于完全擦除狀態(tài)時(shí),確定擦除過程的至少所述擦除要作為恢復(fù)過程被重復(fù)。這可以指示在寫入所有期望的擦除信息之前,在實(shí)際擦除之前發(fā)生中斷。類似地,控制裝置可以操作以:在對(duì)目標(biāo)扇區(qū)的訪問顯示目標(biāo)扇區(qū)處于完全擦除狀態(tài)時(shí),確定存儲(chǔ)在扇區(qū)中的擦除信息要作為恢復(fù)過程被更新,以指示已經(jīng)進(jìn)行了擦除。這可以指示在寫入所有期望的擦除信息之前,在實(shí)際擦除之后發(fā)生中斷。作為另一個(gè)示例,根據(jù)所述訪問,控制裝置可以操作以:在(除了目標(biāo)扇區(qū)之外的)至少所述多個(gè)扇區(qū)的所訪問的擦除信息將具體扇區(qū)識(shí)別為用于擦除的目標(biāo)扇區(qū)時(shí),確定擦除過程的至少所述擦除要作為恢復(fù)過程被重復(fù)。這可以指示所有期望的擦除信息(在實(shí)際擦除之前)的寫入已經(jīng)完成,但是實(shí)際擦除被中斷。當(dāng)作為寫入過程的一部分,將期望的數(shù)據(jù)寫入到扇區(qū)中的一個(gè)扇區(qū)時(shí),控制裝置可以操作以:對(duì)該扇區(qū)進(jìn)行標(biāo)記,以指示寫入過程開始;將期望的數(shù)據(jù)寫入該扇區(qū);以及然后對(duì)該扇區(qū)進(jìn)行標(biāo)記,以指示寫入過程已經(jīng)完成。這可以使得能夠在中斷事件之后確定寫入過程的狀態(tài)。電子設(shè)備可以是微控制器的一部分或者甚至是微控制器。根據(jù)本發(fā)明的第二方面,提供了一種汽車(或者工業(yè)機(jī)器人或者機(jī)器),汽車包括根據(jù)本發(fā)明的上述第一方面的電子設(shè)備,所述設(shè)備被配置成控制汽車的系統(tǒng)。根據(jù)本發(fā)明的第三方面,提供了一種控制電子設(shè)備的方法,所述設(shè)備包括非易失性存儲(chǔ)器,其被配置成以存儲(chǔ)器部分寫入或者讀取,所述存儲(chǔ)器部分以一次一個(gè)扇區(qū)的方式被擦除,每個(gè)所述扇區(qū)包括多個(gè)所述部分,并且所述存儲(chǔ)器具有至少三個(gè)所述扇區(qū),所述扇區(qū)中的每個(gè)扇區(qū)適于與其他扇區(qū)無關(guān)地被擦除,所述方法包括:將關(guān)于擦除過程的擦除信息存儲(chǔ)在除了所述扇區(qū)中的目標(biāo)扇區(qū)之外的多個(gè)扇區(qū)中,以使得能夠檢查扇區(qū)中的這樣的信息以在中斷事件之 后建立適當(dāng)?shù)幕謴?fù)過程,所述擦除過程包括擦除所述目標(biāo)扇區(qū)。根據(jù)本發(fā)明的第四方面,提供了一種程序,該程序在電子設(shè)備的處理器上執(zhí)行時(shí)根據(jù)控制方法來控制所述設(shè)備,所述設(shè)備包括非易失性存儲(chǔ)器,其被配置成以存儲(chǔ)器部分寫入或者讀取,所述存儲(chǔ)器部分以一次一個(gè)扇區(qū)的方式被擦除,每個(gè)所述扇區(qū)包括多個(gè)所述部分,并且所述存儲(chǔ)器具有至少三個(gè)所述扇區(qū),所述扇區(qū)中的每個(gè)扇區(qū)適于與其他扇區(qū)無關(guān)地被擦除,所述方法包括:將關(guān)于擦除過程的擦除信息存儲(chǔ)在除了所述扇區(qū)中的目標(biāo)扇區(qū)之外的多個(gè)扇區(qū)中,以使得能夠檢查扇區(qū)中的這樣的信息以在中斷事件之后建立適當(dāng)?shù)幕謴?fù)過程,所述擦除過程包括擦除所述目標(biāo)扇區(qū)。(BI)根據(jù)本發(fā)明的第五方面,提供了一種電子設(shè)備,包括:存儲(chǔ)器,其被配置成以存儲(chǔ)器部分寫入或者讀取,所述存儲(chǔ)器部分以一次一個(gè)扇區(qū)的方式被擦除,該扇區(qū)或每個(gè)所述扇區(qū)包括多個(gè)所述部分,每個(gè)所述扇區(qū)具有由一個(gè)或更多個(gè)所述部分組成的多個(gè)頁(yè)槽,并且每個(gè)頁(yè)槽用于存儲(chǔ)數(shù)據(jù)頁(yè);以及控制裝置,其能夠操作以監(jiān)視該扇區(qū)或每個(gè)所述扇區(qū),以及(動(dòng)態(tài)即時(shí)地)根據(jù)這樣的監(jiān)視將用于存儲(chǔ)的下一個(gè)數(shù)據(jù)頁(yè)存儲(chǔ)到下一個(gè)可用頁(yè)槽。這種動(dòng)態(tài)寫入的形式可以致使存儲(chǔ)器靈活且高效??梢哉J(rèn)為短語(yǔ)“動(dòng)態(tài)即時(shí)”意味著“動(dòng)態(tài)地”或者“在操作期間”或者“一經(jīng)請(qǐng)求”、或者“即時(shí)地”或者“在用于存儲(chǔ)的下一個(gè)數(shù)據(jù)頁(yè)變成可用時(shí)”或者“沒有預(yù)先安排”。因此,“動(dòng)態(tài)即時(shí)地根據(jù)這樣的監(jiān)視”可以是指“基于頁(yè)槽的當(dāng)前使用性/可用性”。
存儲(chǔ)器部分可以是小的存儲(chǔ)器部分,例如位、字節(jié)、字、頁(yè)。存儲(chǔ)器可以被配置成使得其可能僅以一次一個(gè)扇區(qū)的方式被擦除,每個(gè)扇區(qū)擦除實(shí)際上是單個(gè)動(dòng)作。電子設(shè)備可以例如是具有處理器的計(jì)算設(shè)備,或者可以是不具有處理器的硬件。設(shè)備可以是微控制器的一部分,或者可以是微控制器。例如,控制裝置可以是微控制器的一部分,而存儲(chǔ)器可以是微控制器的外部存儲(chǔ)器。設(shè)備可以包括微控制器的其他部分,例如,輸入/輸出端口和外圍設(shè)備。存儲(chǔ)器可以一次寫入到一個(gè)存儲(chǔ)器部分。存儲(chǔ)器可以例如是非易失性存儲(chǔ)器,例如閃速存儲(chǔ)器(例如NOR閃速存儲(chǔ)器)。存儲(chǔ)器可以被設(shè)置成具有多個(gè)所述扇區(qū)(兩個(gè)、三個(gè)或更多個(gè)),盡管存儲(chǔ)器也可能只有一個(gè)扇區(qū)。控制裝置可以操作以對(duì)存儲(chǔ)在頁(yè)槽中的數(shù)據(jù)頁(yè)的狀態(tài)進(jìn)行監(jiān)視。這樣的狀態(tài)可以包括存儲(chǔ)在頁(yè)槽中的數(shù)據(jù)頁(yè)是有效的還是無效的。在存儲(chǔ)器包括多個(gè)扇區(qū)的情況下,控制裝置可以操作以監(jiān)視扇區(qū)的年齡,具體扇區(qū)的年齡等于自從該具體扇區(qū)被最后一次擦除起其他扇區(qū)或其他多個(gè)扇區(qū)被擦除的次數(shù)??刂蒲b置可以操作以將識(shí)別表(其可以更一般地稱為數(shù)據(jù)結(jié)構(gòu))存儲(chǔ)在扇區(qū)中的每個(gè)扇區(qū)中,每個(gè)識(shí)別表包括每個(gè)擦除另一個(gè)所述扇區(qū)的擦除過程的擦除信息條目,并且控制裝置可以操作以基于其各自的識(shí)別表中的條目數(shù)來確定扇區(qū)的年齡。這可能是追蹤扇區(qū)的年齡的簡(jiǎn)單且有效的方式,因?yàn)闂l目可能具有多于一個(gè)目的(例如,用于詳細(xì)描述擦除過程的狀態(tài),以及用于確定扇區(qū)的年齡)??刂蒲b置可以操作以動(dòng)態(tài)即時(shí)地將數(shù)據(jù)頁(yè)寫入扇區(qū),以及當(dāng)滿足一個(gè)或更多個(gè)給定(例如,預(yù)定的)條件時(shí),將扇區(qū)作為用于擦除過程的目標(biāo)。用于將具體扇區(qū)作為目標(biāo)的一個(gè)給定條件可以為扇區(qū)的識(shí)別表空閑條目不足。當(dāng)空閑條目的數(shù)目少于或者等于比具體扇區(qū)老的其他所述扇區(qū)的數(shù)目時(shí),可能存在空閑條目的不足。用于將具體扇區(qū)作為目標(biāo)的另一個(gè)給定條件可以為存儲(chǔ)器空閑頁(yè)槽不足,并且具體扇區(qū)具有少于給定數(shù)目的其中存儲(chǔ)的所需的數(shù)據(jù)頁(yè)。例如,具體扇區(qū)可以具有比空閑頁(yè)槽的數(shù)目少的所需的數(shù)據(jù)頁(yè)。用于將具體扇區(qū)作為目標(biāo)的另一個(gè)給定條件可以為存儲(chǔ)器空閑頁(yè)槽不足,并且具體扇區(qū)具有最少數(shù)目的其中存儲(chǔ)的所需的數(shù)據(jù)頁(yè)。 如果多于一個(gè)所述扇區(qū)滿足給定條件,控制裝置可以操作以將這些扇區(qū)中的最老的扇區(qū)作為用于擦除過程的目標(biāo)。在每個(gè)擦除過程之前,控制裝置可以操作以將任何所需的數(shù)據(jù)頁(yè)從有關(guān)的目標(biāo)扇區(qū)復(fù)制到另一扇區(qū)。這可以確保所有所需的頁(yè)(其可以是有效的或者無效的)保持存儲(chǔ)在存儲(chǔ)器中??刂蒲b置可以操作以將新的數(shù)據(jù)頁(yè)存儲(chǔ)到具有足夠的空閑容量的最老的所述扇區(qū)。控制裝置可以操作以逐頁(yè)地將新的數(shù)據(jù)頁(yè)存儲(chǔ)到該扇區(qū)內(nèi)最老的頁(yè)槽。針對(duì)該扇區(qū)或每個(gè)所述扇區(qū),所述控制裝置可以操作以使得用于在有關(guān)的扇區(qū)中存儲(chǔ)的連續(xù)的數(shù)據(jù)頁(yè)以給定的順序存儲(chǔ)在其頁(yè) 槽中。順序可以是從最老的頁(yè)槽到最新的頁(yè)槽,這可能實(shí)際上意味著按順序從扇區(qū)的一端到另一端。
控制裝置可以操作以將數(shù)據(jù)結(jié)構(gòu)(例如,查找表)存儲(chǔ)在所述存儲(chǔ)器外部,所述數(shù)據(jù)結(jié)構(gòu)詳述存儲(chǔ)在該扇區(qū)或每個(gè)扇區(qū)中的數(shù)據(jù)頁(yè),以及在確定要將用于存儲(chǔ)的下一個(gè)數(shù)據(jù)頁(yè)存儲(chǔ)到哪個(gè)頁(yè)槽時(shí)利用所述數(shù)據(jù)結(jié)構(gòu)。例如,數(shù)據(jù)結(jié)構(gòu)可以存儲(chǔ)在易失性存儲(chǔ)器,例如RAM中,該RAM可以是外部RAM。查找表可以是合適的這樣的數(shù)據(jù)結(jié)構(gòu)。哈希(hash)表和哈希映射、以及跳躍表是也會(huì)適合的數(shù)據(jù)結(jié)構(gòu)的示例。可選地,數(shù)據(jù)結(jié)構(gòu)在其存儲(chǔ)的信息中可以不具有或者具有低的冗余??梢愿鶕?jù)頁(yè)識(shí)別碼(或者根據(jù)頁(yè)特性)來組織(例如,排列)數(shù)據(jù)結(jié)構(gòu),這樣的碼識(shí)別數(shù)據(jù)頁(yè)??刂蒲b置可以操作以將關(guān)聯(lián)表(其也可以更一般地稱為數(shù)據(jù)結(jié)構(gòu))存儲(chǔ)在該扇區(qū)或每個(gè)扇區(qū)中 ,該關(guān)聯(lián)表或每個(gè)關(guān)聯(lián)表詳述存儲(chǔ)在其扇區(qū)中的頁(yè)。控制裝置可以操作以在確定用于存儲(chǔ)的下一個(gè)數(shù)據(jù)頁(yè)存儲(chǔ)到哪個(gè)頁(yè)槽時(shí)利用該關(guān)聯(lián)表或多個(gè)關(guān)聯(lián)表。該關(guān)聯(lián)表或每個(gè)關(guān)聯(lián)表可以詳述哪個(gè)數(shù)據(jù)頁(yè)存儲(chǔ)在其扇區(qū)的哪個(gè)頁(yè)槽中??刂蒲b置可以操作以在存儲(chǔ)新的數(shù)據(jù)頁(yè)時(shí),更新有關(guān)的關(guān)聯(lián)表。 該關(guān)聯(lián)表或每個(gè)關(guān)聯(lián)表可以包括每個(gè)占用的頁(yè)槽的條目,該條目或每個(gè)條目對(duì)應(yīng)于具體的頁(yè)槽,并且識(shí)別存儲(chǔ)在該頁(yè)槽中的數(shù)據(jù)頁(yè)??刂蒲b置可以操作以將用于每個(gè)新存儲(chǔ)的數(shù)據(jù)頁(yè)的新條目添加到有關(guān)的關(guān)聯(lián)表,以形成條目列表或者以擴(kuò)展現(xiàn)有的條目列表。因此,可以通過將新條目附加到現(xiàn)有的條目列表的末端來更新表(或其他數(shù)據(jù)結(jié)構(gòu)),而不需要改變?nèi)魏沃暗男畔ⅰ?梢酝ㄟ^頁(yè)識(shí)別碼來識(shí)別數(shù)據(jù)頁(yè),該頁(yè)識(shí)別碼可以是數(shù)字。電子設(shè)備可以包括硬件單元,所述硬件單元可操作以對(duì)該關(guān)聯(lián)表或每個(gè)關(guān)聯(lián)表進(jìn)行評(píng)估,以及針對(duì)一個(gè)或更多個(gè)頁(yè)槽指示下述中的至少一種:(a)頁(yè)槽是否為空閑;(b)頁(yè)槽是否已經(jīng)完全寫入有對(duì)應(yīng)的數(shù)據(jù)頁(yè);(c)頁(yè)槽是否包含無效的數(shù)據(jù)頁(yè)并且應(yīng)該被忽略;(d)存儲(chǔ)在頁(yè)槽中的數(shù)據(jù)頁(yè)的識(shí)別碼;(e)存儲(chǔ)在頁(yè)槽中的數(shù)據(jù)頁(yè)的識(shí)別碼是否在頁(yè)識(shí)別碼的給定的范圍內(nèi);以及(f)頁(yè)槽是否包含有效的數(shù)據(jù)頁(yè)。這樣的硬件支持可以加速對(duì)關(guān)聯(lián)表的評(píng)估,并且允許支持軟件更簡(jiǎn)單。例如,由于這樣的硬件,支持軟件可以具有更少的指令,例如包括更少的屏蔽、移位和/或比較操作。也可以需要更少的總線事務(wù)。這樣的硬件可以導(dǎo)致表評(píng)估的顯著加速??刂蒲b置可以操作以在確定將用于存儲(chǔ)的下一個(gè)數(shù)據(jù)頁(yè)存儲(chǔ)到哪個(gè)頁(yè)槽時(shí),考慮該扇區(qū)或每個(gè)扇區(qū)中存儲(chǔ)的所需的頁(yè)的數(shù)目。電子設(shè)備可以是微控制器的一部分,或者甚至是微控制器。根據(jù)本發(fā)明的第六方面,提供了一種汽車(或者工業(yè)機(jī)器人或者機(jī)器),汽車包括根據(jù)本發(fā)明的上述第五方面的電子設(shè)備,所述設(shè)備被配置成控制汽車的系統(tǒng)。根據(jù)本發(fā)明的第七方面,提供了一種控制電子設(shè)備的方法,所述電子設(shè)備包括存儲(chǔ)器,所述存儲(chǔ)器被配置成以存儲(chǔ)器部分寫入或者讀取,所述存儲(chǔ)器部分以一次一個(gè)扇區(qū)的方式被擦除,該扇區(qū)或每個(gè)所述扇區(qū)包括多個(gè)所述部分,每個(gè)所述扇區(qū)具有由一個(gè)或更多個(gè)所述部分組成的多個(gè)頁(yè)槽,并且每個(gè)頁(yè)槽用于存儲(chǔ)數(shù)據(jù)頁(yè),所述方法包括:監(jiān)視該扇區(qū)或每個(gè)所述扇區(qū);以及動(dòng)態(tài)即時(shí)地根據(jù)這樣的監(jiān)視,將用于存儲(chǔ)的下一個(gè)數(shù)據(jù)頁(yè)存儲(chǔ)到下一個(gè)可用頁(yè)槽。根據(jù)本發(fā)明的第八方面,提供了一種程序,該程序在電子設(shè)備的處理器上執(zhí)行時(shí)根據(jù)控制方法來控制所述設(shè)備,所述電子設(shè)備包括存儲(chǔ)器,所述存儲(chǔ)器被配置成以存儲(chǔ)器部分寫入或者讀取,所述存儲(chǔ)器部分以一次一個(gè)扇區(qū)的方式被擦除,該扇區(qū)或每個(gè)所述扇區(qū)包括多個(gè)所述部分,每個(gè)所述扇區(qū)具有由一個(gè)或更多個(gè)所述部分組成的多個(gè)頁(yè)槽,并且每個(gè)頁(yè)槽用于存儲(chǔ)數(shù)據(jù)頁(yè),所述方法包括:監(jiān)視該扇區(qū)或每個(gè)所述扇區(qū);以及動(dòng)態(tài)即時(shí)地根據(jù)這樣的監(jiān)視,將用于存儲(chǔ)的下一個(gè)數(shù)據(jù)頁(yè)存儲(chǔ)到下一個(gè)可用頁(yè)槽。(Cl)根據(jù)本發(fā)明的第九方面,提供了一種電子設(shè)備,包括:第一存儲(chǔ)器;作為非易失性存儲(chǔ)器的第二存儲(chǔ)器,其被配置成以存儲(chǔ)器部分寫入或者讀取,所述存儲(chǔ)器部分以一次一個(gè)扇區(qū)的方式被擦除,該扇區(qū)或每個(gè)所述扇區(qū)包括多個(gè)所述部分并且用于存儲(chǔ)多個(gè)數(shù)據(jù)頁(yè);以及控制裝置,其能夠操作以將詳述存儲(chǔ)在該扇區(qū)或每個(gè)扇區(qū)中的數(shù)據(jù)頁(yè)的數(shù)據(jù)結(jié)構(gòu)(例如,查找表)存儲(chǔ)在所述第一存儲(chǔ)器中,所述數(shù)據(jù)結(jié)構(gòu)基于所述數(shù)據(jù)頁(yè)的特性而被組織。這樣的數(shù)據(jù)結(jié)構(gòu)可以使得在運(yùn)行時(shí)間期間通過使用第一存儲(chǔ)器能夠有效地訪問第二存儲(chǔ)器。例如,可以基于數(shù)據(jù)頁(yè)的特性來索引數(shù)據(jù)結(jié)構(gòu),使得數(shù)據(jù)結(jié)構(gòu)可容易地訪問,然而,可以將對(duì)應(yīng)的頁(yè)以與數(shù)據(jù)頁(yè)的特性無關(guān)的順序存儲(chǔ)在第二存儲(chǔ)器中的任何地方。數(shù)據(jù)結(jié)構(gòu)可以免除針對(duì)頁(yè)來掃描第二存儲(chǔ)器的需要,除了在初始化查找表時(shí)。特性可以是頁(yè)識(shí)別碼。也就是說,可以通過對(duì)應(yīng)的頁(yè)識(shí)別碼來識(shí)別每個(gè)數(shù)據(jù)頁(yè),并且可以通過頁(yè)識(shí)別碼來組織數(shù)據(jù)結(jié)構(gòu)。對(duì)于單個(gè)頁(yè)或者頁(yè)的組,碼可以是單個(gè)的。特性可以是頁(yè)類型碼。也就是說,數(shù)據(jù)頁(yè)可以各自具有由對(duì)應(yīng)的頁(yè)類型碼所識(shí)別的類型,并且可以通過頁(yè)類型碼來組織數(shù)據(jù)結(jié)構(gòu)??梢砸淮位谝粋€(gè)特性來組織數(shù)據(jù)結(jié)構(gòu),而另一次基于不同的特性來組織數(shù)據(jù)結(jié)構(gòu)。電子設(shè)備可以例如是具有處理器的計(jì)算設(shè)備,或者可以是不具有處理器的硬件。設(shè)備可以是微控制器的一部分,或者可以是微控制器。例如,控制裝置可以是微控制器的一部分,而存儲(chǔ)器可以是微控制器的外部存儲(chǔ)器。設(shè)備可以包括微控制器的其他部分,例如,輸入/輸出端口和外圍設(shè)備。第一存儲(chǔ)器可以是隨機(jī)存取存儲(chǔ)器,使得查找表的每個(gè)條目是獨(dú)立于其他表?xiàng)l目可訪問的且可修改的。第一存儲(chǔ)器可以是易失性存儲(chǔ)器,并且可以是RAM。存儲(chǔ)器部分可以是小的存儲(chǔ)器部分,例如位、字節(jié)、字、頁(yè)。第二存儲(chǔ)器可以被配置成使得其可以僅以一次一個(gè)扇區(qū)的方式被擦除,每個(gè)扇區(qū)擦除實(shí)際上是單個(gè)動(dòng)作。第二存儲(chǔ)器可以一次寫入到一個(gè)存儲(chǔ)器部分。第二存儲(chǔ)器可以例如是閃速存儲(chǔ)器(例如NOR閃速存儲(chǔ)器)。第二存儲(chǔ)器可以被設(shè)置成具有多個(gè)所述扇區(qū)(兩個(gè)、三個(gè)或更多個(gè)),盡管第二存儲(chǔ)器也可能只有一個(gè)扇區(qū)。
查找表可以詳細(xì)說明或者包括存儲(chǔ)在該扇區(qū)或每個(gè)扇區(qū)中的數(shù)據(jù)頁(yè)的位置的信息,并且可以詳細(xì)說明或者包括存儲(chǔ)在該扇區(qū)或每個(gè)扇區(qū)中的數(shù)據(jù)頁(yè)的狀態(tài)的信息??梢酝ㄟ^頁(yè)識(shí)別碼來識(shí)別數(shù)據(jù)頁(yè),并且可以通過頁(yè)識(shí)別碼來排序(例如,索引)對(duì)應(yīng)于所述數(shù)據(jù)頁(yè)的查找表中的條目??刂蒲b置可以操作以按照給定的順序?qū)⒂糜诖鎯?chǔ)的連續(xù)的數(shù)據(jù)頁(yè)存儲(chǔ)在該扇區(qū)或多個(gè)扇區(qū)的頁(yè)槽中,使得頁(yè)在該扇區(qū)或多個(gè)扇區(qū)中被排列的順序取決于(對(duì)應(yīng)于,遵循,只取決于)這些頁(yè)被存儲(chǔ)的順序。這種排序可能與組織數(shù)據(jù)結(jié)構(gòu)的方式非常不同,并且因此數(shù)據(jù)結(jié)構(gòu)可能是比通過掃描該扇區(qū)或多個(gè)扇區(qū)更有效的用于訪問期望的數(shù)據(jù)頁(yè)的資源。控制裝置可以操作以關(guān)于具有在預(yù)定義范圍內(nèi)的頁(yè)識(shí)別碼的頁(yè)來存儲(chǔ)數(shù)據(jù)結(jié)構(gòu),所述范圍小于覆蓋所有可能的數(shù)據(jù)頁(yè)的范圍。當(dāng)然,控制裝置可以操作以關(guān)于所有可能的頁(yè)來存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)??刂蒲b置可以操作以關(guān)于當(dāng)前存儲(chǔ)在該扇區(qū)或多個(gè)扇區(qū)中的頁(yè)以及關(guān)于之前存儲(chǔ)在該扇區(qū)或多個(gè)扇區(qū)中的頁(yè)來存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)??刂蒲b置可以操作以基于所述數(shù)據(jù)結(jié)構(gòu)來控制對(duì)該扇區(qū)或每個(gè)扇區(qū)的訪問??刂蒲b置可以操作以在初始化階段期間生成所述數(shù)據(jù)結(jié)構(gòu),并且在初始化階段之后,可以操作以(動(dòng)態(tài)即時(shí)地)更新所述數(shù)據(jù)結(jié)構(gòu)的內(nèi)容,以反映該扇區(qū)或每個(gè)扇區(qū)中的變化。這可以使得在啟動(dòng)時(shí)(即,在初始化階段期間)只掃描一次該扇區(qū)或多個(gè)扇區(qū),然后數(shù)據(jù)結(jié)構(gòu)被保持最新,使得在運(yùn)行時(shí)間期間不需要掃描第二存儲(chǔ)器來定位期望的頁(yè)??刂蒲b置可以操作以將關(guān)聯(lián)表存儲(chǔ)在該扇區(qū)或每個(gè)所述扇區(qū)中,該關(guān)聯(lián)表或每個(gè)所述關(guān)聯(lián)表詳述存儲(chǔ)在其扇區(qū)中的頁(yè),并且其中,控制裝置可以操作以利用該關(guān)聯(lián)表或每個(gè)關(guān)聯(lián)表來在初始化階段期間生成數(shù)據(jù)結(jié)構(gòu)的內(nèi)容。控制裝置可以操作以動(dòng)態(tài)即時(shí)地更新該關(guān)聯(lián)表或每個(gè)關(guān)聯(lián)表的內(nèi)容,以反映該扇區(qū)或每個(gè)對(duì)應(yīng)的扇區(qū)中的變化。在中斷事件之后,控制裝置可以操作以在進(jìn)一步的初始化階段中利用該關(guān)聯(lián)表或每個(gè)關(guān)聯(lián)表來存儲(chǔ)新的數(shù)據(jù)結(jié)構(gòu)。電子設(shè)備可以包括 硬件單元,所述硬件單元可操作以對(duì)該關(guān)聯(lián)表或每個(gè)關(guān)聯(lián)表進(jìn)行評(píng)估,以及針對(duì)一個(gè)或更多個(gè)頁(yè)槽,指示下述中的至少一種:(a)頁(yè)槽是否為空閑;(b)頁(yè)槽是否已經(jīng)完全寫入有對(duì)應(yīng)的數(shù)據(jù)頁(yè);(c)頁(yè)槽是否包含無效的數(shù)據(jù)頁(yè)并且應(yīng)該被忽略;(d)存儲(chǔ)在頁(yè)槽中的數(shù)據(jù)頁(yè)的識(shí)別碼;(e)存儲(chǔ)在頁(yè)槽中的數(shù)據(jù)頁(yè)的識(shí)別碼是否在頁(yè)識(shí)別碼的給定的范圍內(nèi);以及(f)頁(yè)槽是否包含有效的數(shù)據(jù)頁(yè)。這樣的硬件支持可以加速對(duì)關(guān)聯(lián)表的評(píng)估,并且允許支持軟件更簡(jiǎn)單。例如,由于這樣的硬件,支持軟件可以具有更少的指令,例如包括更少的屏蔽、移位和/或比較操作。也會(huì)需要更少的總線事務(wù)。這樣的硬件可以導(dǎo)致表評(píng)估的顯著加速。該扇區(qū)或每個(gè)扇區(qū)可以具有多個(gè)頁(yè)槽,每個(gè)頁(yè)槽用于存儲(chǔ)所述數(shù)據(jù)頁(yè)。數(shù)據(jù)結(jié)構(gòu)可以是查找表。關(guān)聯(lián)表和識(shí)別表也可以更一般地被稱為數(shù)據(jù)結(jié)構(gòu)。哈希表和哈希映射、以及跳躍表是也會(huì)合適的數(shù)據(jù)結(jié)構(gòu)的示例??蛇x地,數(shù)據(jù)結(jié)構(gòu)在其存儲(chǔ)的信息中可以不具有或者具有低的冗余??梢愿鶕?jù)頁(yè)識(shí)別碼來組織(例如,排序)數(shù)據(jù)結(jié)構(gòu),這樣的碼識(shí)別數(shù)據(jù)頁(yè)。頁(yè)識(shí)別碼可以是頁(yè)識(shí)別號(hào)。電子設(shè)備可以是微控制器的一部分,或者甚至是微控制器。
根據(jù)本發(fā)明的第十方面,提供了一種汽車(或者工業(yè)機(jī)器人或者機(jī)器),所述汽車包括根據(jù)本發(fā)明的上述第九方面所述的電子設(shè)備,所述設(shè)備被配置成控制所述汽車的系統(tǒng)。根據(jù)本發(fā)明的第十一方面,提供了一種控制電子設(shè)備的方法,所述電子設(shè)備包括第一存儲(chǔ)器,并且包括作為非易失性存儲(chǔ)器的第二存儲(chǔ)器,其被配置成以存儲(chǔ)器部分寫入或者讀取,所述存儲(chǔ)器部分以一次一個(gè)扇區(qū)的方式被擦除,該扇區(qū)或每個(gè)所述扇區(qū)包括多個(gè)所述部分并且用于存儲(chǔ)多個(gè)數(shù)據(jù)頁(yè),所述方法包括:將包括存儲(chǔ)在該扇區(qū)或每個(gè)扇區(qū)中的數(shù)據(jù)頁(yè)的信息的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)在所述第一存儲(chǔ)器中,基于所述數(shù)據(jù)頁(yè)的特性來組織所述數(shù)據(jù)結(jié)構(gòu)。根據(jù)本發(fā)明的第十二方面,提供了一種程序,該程序在電子設(shè)備的處理器上執(zhí)行時(shí)根據(jù)控制方法來控制所述設(shè)備,所述電子設(shè)備包括第一存儲(chǔ)器,并且包括作為非易失性存儲(chǔ)器的第二存儲(chǔ)器,所述非易失性存儲(chǔ)器被配置成以存儲(chǔ)器部分寫入或者讀取,所述存儲(chǔ)器部分以一次一個(gè)扇區(qū)的方式被擦除,該扇區(qū)或每個(gè)所述扇區(qū)包括多個(gè)所述部分并且用于存儲(chǔ)多個(gè)數(shù)據(jù)頁(yè),所述方法包括:將包括存儲(chǔ)在該扇區(qū)或每個(gè)扇區(qū)中的數(shù)據(jù)頁(yè)的信息的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)在所述第一存儲(chǔ)器中,基于所述數(shù)據(jù)頁(yè)的特性來組織所述數(shù)據(jù)結(jié)構(gòu)。根據(jù)本發(fā)明的另外的方面,提供了將上述的方面中的一個(gè)或更多個(gè)方面結(jié)合的電子設(shè)備、方法和程序。電子設(shè)備方面的特征適用于方法和程序方面?,F(xiàn)在將僅通過示例的方式參考附圖,在附圖中:
圖1是實(shí)施本發(fā)明的電子設(shè)備的示意圖;圖2是圖1的設(shè)備的閃速存儲(chǔ)器的示意圖;圖3是對(duì)理解圖2的閃速存儲(chǔ)器的識(shí)別表中的條目有用的示意圖;圖4是與擦除 圖1的設(shè)備的扇區(qū)有關(guān)的不意圖;圖5是表示擦除過程的流程圖;圖6是表示頁(yè)關(guān)聯(lián)表中的條目與對(duì)應(yīng)的頁(yè)槽區(qū)域中的頁(yè)槽之間的關(guān)系的示意圖;圖7是對(duì)理解圖2的閃速存儲(chǔ)器的關(guān)聯(lián)表中的條目有用的示意圖;圖8是可以存儲(chǔ)在圖1的設(shè)備的RAM中的查找表的示意性表示;圖9是對(duì)理解查找表中的條目有用的不意圖;圖10是描繪用于填充(populate)查找表的方法的流程圖;圖11是描繪用于清理和擦除目標(biāo)扇區(qū)的方法的流程圖;圖12是表示將數(shù)據(jù)頁(yè)寫入三個(gè)扇區(qū)的示例序列的示意圖;圖13是實(shí)施本發(fā)明的另一電子設(shè)備的示意圖;圖14是圖13的設(shè)備的閃速存儲(chǔ)器的示意圖;圖15是對(duì)理解圖14的閃速存儲(chǔ)器的識(shí)別表中的條目有用的示意圖;圖16是與擦除圖13的設(shè)備的扇區(qū)有關(guān)的示意圖,并且還考慮了中止(abort)過程;圖17示出了可能在中斷之后遇到的扇區(qū)的識(shí)別表中的條目的可能組合;圖18是對(duì)理解圖14的閃速存儲(chǔ)器的關(guān)聯(lián)表(頁(yè)關(guān)聯(lián)表)中的條目有用的示意圖;以及圖19是適于提供硬件支持以加速評(píng)估關(guān)聯(lián)表的數(shù)據(jù)操作硬件的示意圖。
現(xiàn)在將通過一般實(shí)施方式來說明本發(fā)明的各個(gè)方面。如將會(huì)變得明顯的,本設(shè)備使得虛擬存儲(chǔ)器的塊能夠通過全動(dòng)態(tài)分配被加載并存儲(chǔ)到物理閃速存儲(chǔ)器(一種EEPROM仿真的形式)。該方法是有效的、可擴(kuò)展的且相對(duì)于突然斷電是安全的。圖1是實(shí)施本發(fā)明的電子設(shè)備(例如,計(jì)算設(shè)備)I的示意圖。電子設(shè)備I包括控制裝置2、閃速存儲(chǔ)器4和RAM6。例如,電子設(shè)備I可以是微控制器。閃速存儲(chǔ)器4是當(dāng)前可用的一種特定類型的存儲(chǔ)器,然而,在其他實(shí)施方式中,可以用下述非易失性存儲(chǔ)器來代替閃速存儲(chǔ)器4:該非易失性存儲(chǔ)器被配置成以小的存儲(chǔ)器部分寫入或者讀取,但必須以一次一個(gè)扇區(qū)的方式來擦除,每個(gè)扇區(qū)包括多個(gè)部分。RAM6是當(dāng)前可用的一種類型的存儲(chǔ)器,然而,在其他實(shí)施方式中,可以采用易失性存儲(chǔ)器或者非易失性存儲(chǔ)器,并且可以采用所存儲(chǔ)的表的條目可與其他表的條目無關(guān)地存取和修改的任何存儲(chǔ)器。為了便于理解,圖1被簡(jiǎn)化。例如,除了示出的這些部件之外,還可以設(shè)置其他部件。而且,為了簡(jiǎn)單起見,沒有再次示出用于數(shù)據(jù)和控制信號(hào)的在控制裝置2、閃速存儲(chǔ)器4及RAM6之間的連接。此外,閃速存儲(chǔ)器4和RAM6無需設(shè)置在與控制裝置2相同的芯片上,因?yàn)樗鼈兛梢允峭獠看鎯?chǔ)器。在這一方面,電子設(shè)備I可以表示微控制器與外部存儲(chǔ)器的結(jié)合??刂蒲b置2可以被實(shí)現(xiàn)為處 理器,且電子設(shè)備I可以被配置成在由控制裝置2執(zhí)行的軟件的控制下進(jìn)行操作。在此上下文中可以解釋本文中提及的軟件。本發(fā)明同樣可以使用以硬件實(shí)現(xiàn)的控制裝置2來實(shí)施,即不需要在處理器上執(zhí)行的軟件。在本實(shí)施方式中,閃速存儲(chǔ)器被布置成具有至少三個(gè)扇區(qū),但是其他實(shí)施方式可以具有不同數(shù)目(例如,更大數(shù)目或者更小數(shù)目)的扇區(qū)。如將會(huì)變得明顯的,設(shè)備I被配置成使用閃存扇區(qū)用于數(shù)據(jù)存儲(chǔ),并且在扇區(qū)擦除過程期間保護(hù)數(shù)據(jù)的完整性不受突然斷電影響。還在本實(shí)施方式中,數(shù)據(jù)被動(dòng)態(tài)即時(shí)地(on the fly)存儲(chǔ)到扇區(qū)。閃速存儲(chǔ)器用于仿真EEPR0M,以使得閃速存儲(chǔ)器用作虛擬的EEPR0M。因此,本文中引用了“虛擬”存儲(chǔ)器和“虛擬”地址,并且將會(huì)理解的是,通過將數(shù)據(jù)的頁(yè)存儲(chǔ)到扇區(qū)來在物理上實(shí)現(xiàn)具有虛擬地址的虛擬存儲(chǔ)器。圖2是閃速存儲(chǔ)器4的示意圖。閃速存儲(chǔ)器4被配置成具有三個(gè)扇區(qū)10,為了方便起見標(biāo)記為“扇區(qū)0”、“扇區(qū)I”和“扇區(qū)2”。閃速存儲(chǔ)器4還可以被配置成具有多于三個(gè)的扇區(qū),或者在本文中公開的某些方面中具有少于三個(gè)的扇區(qū)(例如,一個(gè)扇區(qū)或兩個(gè)扇區(qū))。每個(gè)扇區(qū)10被組織成具有三個(gè)主要區(qū)域,即識(shí)別表12、頁(yè)關(guān)聯(lián)表14和頁(yè)槽區(qū)16。區(qū)域12、14和16相對(duì)于彼此的尺寸將在實(shí)施方式之間變化,并且圖2中沒有表示出這種關(guān)系。例如,用于存儲(chǔ)頁(yè)槽的區(qū)域16可以比區(qū)域12和區(qū)域14的尺寸大許多倍。稍后,這些區(qū)域的用途將變得明顯。在本實(shí)施方式中,在每個(gè)扇區(qū)中設(shè)置了相同的存儲(chǔ)量,以使得所有扇區(qū)具有相同的尺寸。在其他實(shí)施方式中,扇區(qū)可以具有不同的尺寸。優(yōu)選地,在每個(gè)扇區(qū)中,每種類型的區(qū)域具有相同的尺寸。
還在本實(shí)施方式中,可以在擦除其它扇區(qū)的同時(shí)從扇區(qū)讀取或者寫入,例如,通過暫時(shí)地延緩擦除過程。然而,在其他實(shí)施方式中,可能不可以在擦除過程期間讀取和寫入。在本實(shí)施方式中,扇區(qū)彼此等同,如此同等地處理扇區(qū)。例如,在本實(shí)施方式中,沒有事先地專用于具體扇區(qū)的特殊功能。以下述順序“清理”(稍后將更詳細(xì)地討論該處理)和擦除扇區(qū):該順序是取決于扇區(qū)中包含的合法(即,所需的)數(shù)據(jù)的量在運(yùn)行時(shí)間期間(即,動(dòng)態(tài)即時(shí)地)計(jì)算的;該順序獨(dú)立于事先已知的任何值和所存儲(chǔ)的數(shù)據(jù)的虛擬地址。每個(gè)扇區(qū)10中的識(shí)別表12保存關(guān)于當(dāng)前的和先前的擦除過程的信息,例如指示這樣的過程的狀態(tài)。以這種方式,識(shí)別表12還保存關(guān)于所包含的或者所存儲(chǔ)的數(shù)據(jù)的“年齡”的信息。例如,可以認(rèn)為具體的扇區(qū)10的“年齡”等于自該具體的扇區(qū)被擦除起其他扇區(qū)被擦除的次數(shù)。在本實(shí)施方式中,將新數(shù)據(jù)寫入具有足夠的空閑存儲(chǔ)器的最老的扇區(qū),并且在該扇區(qū)內(nèi)寫入第一空閑頁(yè)槽(其將是最老的空閑頁(yè)槽)。也就是說,在本實(shí)施方式中,將新數(shù)據(jù)寫入從老扇區(qū)開始朝向新扇區(qū)(例如,下一個(gè)較新的扇區(qū))的具有足夠的空閑存儲(chǔ)器的下一個(gè)扇區(qū),并且在該扇區(qū)內(nèi)寫入第一空閑頁(yè)。還在本實(shí)施方式中,當(dāng)剩余的空閑閃速存儲(chǔ)器減少到配置的或者給定的(例如,預(yù)定的)量以下(例如,在多于至少一個(gè)完整扇區(qū)的量以下)時(shí),具有最少當(dāng)前數(shù)據(jù)的扇區(qū)被選擇用于清理。選擇用于清理和擦除的扇區(qū)將被稱為“目標(biāo)”扇區(qū)。在清理期間,將所有的合法(即,所需的)數(shù)據(jù)從目標(biāo)扇區(qū)復(fù)制到具有足夠的空閑存儲(chǔ)器的最老的扇區(qū)。在本實(shí)施方式中,逐頁(yè)地將所需的頁(yè)從目標(biāo)扇區(qū)復(fù)制到另一個(gè)扇區(qū)(“清理”),以使得一些頁(yè)可以在一個(gè)扇區(qū)上結(jié)束直到該扇區(qū)被填滿為止,而其余的頁(yè)在另一個(gè)(下一個(gè)較新的)扇區(qū)中。優(yōu)選地,應(yīng)該將多于一個(gè)完整的扇區(qū)的存儲(chǔ)量維持為空閑存儲(chǔ)器。如果空閑存儲(chǔ)器的量降低到小于一個(gè)完整扇區(qū)的量,則空閑存儲(chǔ)器可能潛在地小于清理扇區(qū)所需的空閑存儲(chǔ)器的量。如果空閑存儲(chǔ)器的量降低到一個(gè)完整扇區(qū)的量,則空閑存儲(chǔ)器可能潛在地與清理扇區(qū)所需的空閑存儲(chǔ)器的量相同,沒有留下空閑存儲(chǔ)器并導(dǎo)致清理完一個(gè)扇區(qū)接著下一個(gè)扇區(qū)的無限循環(huán)。通過監(jiān)視清理扇區(qū)所需的空間的量,可以具有在清理和擦除之前可以達(dá)到的變化的空閑存儲(chǔ)器的最小量。如前面所說明的,當(dāng)閃存扇區(qū)的擦除通過突然斷電而中斷時(shí),所包含的數(shù)據(jù)是不可預(yù)測(cè)的。在本實(shí)施方式中,在將位擦除成“已擦除狀態(tài)”之前,所述位必須被寫入成“已寫入狀態(tài)”,以避免過擦除。本實(shí)施方式被配置成是確定性安全的以不受突然斷電影響,而不是被配置成僅是在下述程度上魯棒的,該程度為不完全擦除的扇區(qū)被誤識(shí)別為沒有被擦除是非常不可能的。例如,可以考慮:僅從可能在擦除時(shí)被中斷的一個(gè)扇區(qū)中讀取提供了其100%的位不可預(yù)測(cè)的數(shù)據(jù)。因此,僅通過評(píng)估扇區(qū)的內(nèi)容,非常難以確定該扇區(qū)是否在擦除期間被中斷,即使實(shí)現(xiàn)了經(jīng)由標(biāo)志或者魔語(yǔ)的復(fù)雜的保護(hù)。此外,當(dāng)從第一扇區(qū)或者第二扇區(qū)可能在擦除時(shí)被中斷的兩個(gè)扇區(qū)中讀取時(shí),展現(xiàn)的數(shù)據(jù)的50%的位不可預(yù)測(cè)。再次,僅通過評(píng)估兩個(gè)扇區(qū)的內(nèi)容,非常難以確定這兩個(gè)扇區(qū)之一是否在擦除期間被中斷,即使實(shí)現(xiàn)了經(jīng)由標(biāo)志或者魔語(yǔ)的復(fù)雜的保護(hù)。當(dāng)從僅一個(gè)扇區(qū)可能在擦除時(shí)被中斷的三個(gè)或更多個(gè)扇區(qū)中讀取時(shí),展現(xiàn)的數(shù)據(jù)的〈34%的位不可預(yù)測(cè)。因此,可以通過評(píng)估三個(gè)或更多個(gè)扇區(qū)的內(nèi)容,來確定這三個(gè)或更多個(gè)扇區(qū)中的哪一個(gè)扇區(qū)在擦 除期間被中斷。
可以實(shí)現(xiàn)為算法(S卩,方法)的下列方法意圖決不將不完全擦除的扇區(qū)識(shí)別為有效。本實(shí)施方式利用識(shí)別表12以將關(guān)于目標(biāo)扇區(qū)(擦除過程的對(duì)象)的信息存儲(chǔ)在其他扇區(qū)中。然后,通過例如經(jīng)由多數(shù)決定法查找各個(gè)扇區(qū)中的信息之間的一致(例如,相關(guān)),可以進(jìn)行例如在中斷事件之后的當(dāng)前擦除狀態(tài)的檢測(cè)。識(shí)別表12基本上由多個(gè)條目組成,多個(gè)條目中的每個(gè)條目與特定擦除過程有關(guān)。當(dāng)扇區(qū)10被擦除時(shí),其識(shí)別表12中的所有條目被清除,并且針對(duì)每個(gè)后續(xù)擦除過程,在該表中生成條目。也就是說,當(dāng)開始新的擦除過程時(shí),一個(gè)條目被附加到每個(gè)識(shí)別表12(除了目標(biāo)扇區(qū)中的識(shí)別表)中的條目列表。因?yàn)樵诓徊脸嘘P(guān)扇區(qū)的其他內(nèi)容的情況下列表不能被擦除,所以只有生成的最后一個(gè)條目被認(rèn)為是有效的。圖3是對(duì)理解根據(jù)本實(shí)施方式的識(shí)別表12中的條目有用的示意圖。圖3 (a)、圖
3(b)、圖3 (C)和圖3 (d)中的每幅圖代表單個(gè)這樣的條目。圖3 (a)對(duì)理解每個(gè)條目的組成部分有用。每個(gè)條目由擦除完成標(biāo)志20 (在本實(shí)施方式中為I位寬)以及識(shí)別作為有關(guān)擦除過程的對(duì)象的扇區(qū)(目標(biāo)扇區(qū))的每一可用扇區(qū)的I位的項(xiàng)22、24、26、28組成。在圖3 (a)中,針對(duì)“扇區(qū)O”、“扇區(qū)I”和“扇區(qū)2”設(shè)置項(xiàng)22,24和26,與圖2—致,而項(xiàng)28僅被示出為使得清楚:如果設(shè)置有多于三個(gè)的扇區(qū)10,條目可以擴(kuò)展到具有用于另外的扇區(qū)10的項(xiàng)。在圖3 (b)、圖3 (c)和圖3 (d)中,為了與圖
2一致,僅示出了項(xiàng)22、24和26。如上所述,當(dāng)扇區(qū)10被擦除時(shí),其識(shí)別表12中的所有條目被清除。這可以通過使所有位為假(如與真相反)來表示。
當(dāng)然,“真”和“假”表示邏輯狀態(tài),并且這些邏輯狀態(tài)到物理值(高/低或者1/0)的映射取決于閃速存儲(chǔ)器4的硬件實(shí)現(xiàn)。示例性閃速存儲(chǔ)器可以在其已擦除狀態(tài)具有物理邏輯高,而在其已寫入狀態(tài)具有物理邏輯低。在這樣的閃速存儲(chǔ)器中可以將位從“已擦除”寫為“已寫入”,從“已寫入”寫為“已寫入”、或者從“已擦除”寫為“已擦除”,但是不可以將位從“已寫入”寫為“已擦除”(只可以通過擦除來實(shí)現(xiàn)這樣的轉(zhuǎn)變)。為了一致,在圖3 (b)中以及在其他附圖中,用已擦除值“O”表示假,而用已寫入值“ I”表示真,然而,這只是幫助理解本發(fā)明。因此,圖3 (b)代表?xiàng)l目被清除且(自前次擦除起)還未使用時(shí)的狀態(tài)。圖3 (c)代表已經(jīng)將“扇區(qū)I”作為擦除目標(biāo)時(shí)的狀態(tài),因此“扇區(qū)I”是目標(biāo)扇區(qū)。注意,已完成標(biāo)志為假,代表擦除過程還沒有完成。圖3 (d)代表“扇區(qū)I”(目標(biāo)扇區(qū))已經(jīng)被擦除的狀態(tài);注意,已完成標(biāo)志為真。在本實(shí)施方式中,當(dāng)扇區(qū)10 (目標(biāo)扇區(qū))要被擦除時(shí),新條目被附加到所有其他扇區(qū)10的識(shí)別表12。在本示例中,表中的空(未使用)條目具有已擦除閃存值“O”。因此,通過單一的閃存擦除操作來擦除和重置表。在將扇區(qū)10作為擦除目標(biāo)時(shí),通過寫入對(duì)目標(biāo)扇區(qū)進(jìn)行識(shí)別的一位來生成這些新條目中的每個(gè)條目。這個(gè)動(dòng)作既將表?xiàng)l目標(biāo)記為使用中,又識(shí)別目標(biāo)扇區(qū)。因?yàn)閮H需要一位,所以目標(biāo)扇區(qū)的編碼是“原子的”。也就是說,如果寫入一位通過斷電被中斷,則有關(guān)的閃存單元將進(jìn)入寫或者沒寫該位的狀態(tài)。不存在中間狀態(tài)。圖4是示出了用于擦除扇區(qū)10的示例的示意圖,在本實(shí)例中擦除“扇區(qū)2”。在圖4(a)和圖4 (b)中的每幅圖中,示出了有關(guān)的三個(gè)扇區(qū)的識(shí)別表12。將會(huì)理解的是,示出的表可僅代表識(shí)別表12的最上(即,最后的)條目空間,實(shí)際上可具有更多的條目。在圖4 Ca)中,在表的左側(cè)用箭頭指示在“扇區(qū)O”和“扇區(qū)I”的表中生成的最后的(最上面的)條目。這些條目在這些表中是有效的條目且是最新的條目,這些條目不全部為假(即,未使用),且這些條目的已完成標(biāo)志為假(即,要進(jìn)行擦除)。寫入這些條目中的索引2,指示“扇區(qū)2”是目標(biāo)扇區(qū)??梢钥闯觯凇吧葏^(qū)2”(即目標(biāo)扇區(qū))的識(shí)別表12中所有條目是已完成的(完成位為真)。因此,比較圖4 (a)中的識(shí)別表12,“扇區(qū)2”是“最老的”扇區(qū)10。圖4 (b)與圖4 (a)類似,以便于比較;在擦除過程完成之后示出了相同的條目空間。注意,在“扇區(qū)O”和“扇區(qū)I”的識(shí)別表12中用箭頭(同上)指示的條目現(xiàn)在已完成標(biāo)志為真。此外,注意,“扇區(qū)2”的識(shí)別表12已經(jīng)在擦除過程期間被清除,因?yàn)樗恰吧葏^(qū)2”的一部分。圖4 (b)的一個(gè)特征是:它代表在下一次擦除嘗試之前的有效狀態(tài),即,它有效地指示關(guān)于“扇區(qū)2”的 擦除過程是成功的。本發(fā)明的一個(gè)方面涉及檢測(cè)由于中斷事件而造成的不完全擦除過程、以及恢復(fù)過程。將關(guān)于本實(shí)施方式進(jìn)一步考慮該方面。圖5是表示根據(jù)本實(shí)施方式的擦除過程的流程圖。在步驟S2處過程開始,并且在步驟S4處將擦除扇區(qū)作為目標(biāo)。將會(huì)理解的是,在執(zhí)行步驟S2和步驟S4之前,必要時(shí)可以清理目標(biāo)扇區(qū),在清理期間將所有合法數(shù)據(jù)(即,所需數(shù)據(jù))從目標(biāo)扇區(qū)復(fù)制到具有足夠的空閑存儲(chǔ)區(qū)的最老的扇區(qū)。當(dāng)然,如果在目標(biāo)扇區(qū)上沒有存儲(chǔ)所需數(shù)據(jù),則不需要進(jìn)行清理。在本實(shí)施方式中,在步驟S2和步驟S4之前,即在其他扇區(qū)的識(shí)別表12中識(shí)別目標(biāo)扇區(qū)之前進(jìn)行任何所需要的清理。這是因?yàn)?如果序列被中斷,則應(yīng)該區(qū)別開清理步驟和擦除步驟。如果清理被中斷,則應(yīng)該另外清理扇區(qū)(讀取需要)。如果擦除被中斷,則應(yīng)該將扇區(qū)的內(nèi)容認(rèn)為是不可預(yù)測(cè)的(讀取禁止)??梢栽谏葏^(qū)被識(shí)別為是目標(biāo)扇區(qū)(通過標(biāo)記識(shí)別表)之前清理扇區(qū)。如果清理被中斷且另一個(gè)扇區(qū)被選擇用于下次清理,則沒有丟失數(shù)據(jù)。這是因?yàn)榍謇硎侵痦?yè)地(類似于寫入動(dòng)作)將同一“所需”數(shù)據(jù)從一個(gè)扇區(qū)寫入(復(fù)制)具有足夠的空間的最老的扇區(qū)的序列。在中斷的情況下,可能會(huì)浪費(fèi)一些頁(yè)槽。步驟S4的部分包含寫入到除了目標(biāo)扇區(qū)之外的每個(gè)扇區(qū)中的識(shí)別表12中的下一條目空間,用于將目標(biāo)扇區(qū)識(shí)別為作為目標(biāo)。上述的圖4 (a)是步驟S4完結(jié)時(shí)識(shí)別表的狀態(tài)的示例。在步驟S6處,然后擦除目標(biāo)扇區(qū),隨后,目標(biāo)扇區(qū)的所有位將為假(即,具有已擦除值“O”)。在步驟S8處,在除了目標(biāo)扇區(qū)之外的扇區(qū)的識(shí)別表12中設(shè)置已完成標(biāo)志,用于指示目標(biāo)扇區(qū)已經(jīng)被擦除。上述的圖4 (b)是步驟S8完結(jié)時(shí)識(shí)別表的狀態(tài)的示例。然后在步驟S9處結(jié)束過程,直到將來的這樣的過程為止。圖5所表示的擦除過程可能在任何時(shí)間不幸被中斷,例如通過突然斷電事件被中斷。這是由圖5中的箭頭30所指示的。具體地,如所指示的那樣,可以將中斷大體上分組為組A、組B、組C、組D和組E。在圖5的擦除過程被中斷之后,從閃速存儲(chǔ)器4的讀出可以使得能夠通過檢查識(shí)別表12的最后的條目來識(shí)別以下狀態(tài)及其原因。組A和組E—沒有扇區(qū)作為擦除目標(biāo)在組A的情況下,至第一識(shí)別表12的第一次寫入嘗試被中斷,并且對(duì)于識(shí)別目標(biāo)扇區(qū)的一位,寫入失敗。在組E的情況下,至最后一個(gè)表的最后一次寫入嘗試被中斷,并且對(duì)于識(shí)別目標(biāo)扇區(qū)的一位,寫入成功。可以將這兩種情況視作沒有擦除過程被中斷,因?yàn)樯葏^(qū)處于與沒有擦除過程正在進(jìn)行相同的狀態(tài)。也就是說,扇區(qū)將處于與擦除過程從未開始或者擦除過程已經(jīng)沒有中斷地結(jié)束相同的狀態(tài)。組B和組D—一個(gè)或更多個(gè)扇區(qū)將同一扇區(qū)作為擦除目標(biāo)且兩個(gè)或更多個(gè)扇區(qū)沒有將任何扇區(qū)作為目標(biāo)在組B的情況下,意圖被設(shè)置成識(shí)別目標(biāo)扇區(qū)(步驟S4)的識(shí)別表12中的一些但不是全部表?xiàng)l目被成功寫入,并且在到表的所有想要的條目完成之前發(fā)生中斷。在組D的情況下,意圖被設(shè)置成指示擦除(步驟S6)已經(jīng)完成的一些但不是全部表?xiàng)l目被成功寫入,并且在到表的所有想要的條目完成之前發(fā)生中斷。在這兩種情況下,識(shí)別表12的準(zhǔn)備被中斷。目標(biāo)扇區(qū)10的擦除沒有開始(組B)或者已經(jīng)完成(組D)。在兩種情況下都可以安全地讀取目標(biāo)扇區(qū)。讀取由目標(biāo)扇區(qū)的頁(yè)關(guān)聯(lián)表14識(shí)別的頁(yè)槽區(qū)1 6的任何頁(yè)槽都將顯示空或者已使用狀態(tài)。本文中稍后將更詳細(xì)地討論頁(yè)關(guān)聯(lián)表14與頁(yè)槽區(qū)16中的頁(yè)槽之間的關(guān)系。如本文中稍后將討論的那樣,在本實(shí)施方式中,準(zhǔn)備擦除(B卩,清理)的扇區(qū)將不包含空閑頁(yè)槽,并且最近擦除的扇區(qū)將不包含已使用的頁(yè)槽。因此,組B中斷可以與組D中斷區(qū)分開。在本實(shí)施方式中,在組B中斷的情況下,應(yīng)該部分地重復(fù)擦除過程(從步驟S4起-將會(huì)理解,在中斷之前將已經(jīng)部分地執(zhí)行了 S4,因此將需要完成S4。因此,僅那些還沒有將目標(biāo)扇區(qū)作為目標(biāo)的扇區(qū)需要重復(fù)S4)。在組D中斷的情況下,識(shí)別目標(biāo)扇區(qū)的識(shí)別表的所有條目的已完成標(biāo)志應(yīng)該被設(shè)置為真。同時(shí)應(yīng)該沒有其他扇區(qū)被擦除。組C一目標(biāo)扇區(qū)的擦除被中斷在這種情況下,扇區(qū)中的至少除了一個(gè)以外的所有的扇區(qū)將同一扇區(qū)作為擦除目標(biāo),并且作為目標(biāo)的扇區(qū)沒有將扇區(qū)作為擦除目標(biāo)、將一些其他扇區(qū)或者它本身作為擦除目標(biāo)。在組C的情況下,通過例如經(jīng)由多數(shù)決定法查找識(shí)別表12中的最后的條目之間的一致,可以識(shí)別目標(biāo)扇區(qū)。在本實(shí)施方式中,在可以擦除另一個(gè)扇區(qū)之前,應(yīng)該重復(fù)對(duì)該目標(biāo)扇區(qū)的擦除過程的一部分(從S6起)。同時(shí),應(yīng)該禁止從目標(biāo)扇區(qū)讀取,因?yàn)槟繕?biāo)扇區(qū)的內(nèi)容可能被損壞??梢宰x取所有其他扇區(qū)。如上所述,將會(huì)理解的是,上面關(guān)于組A至組E描述的任何對(duì)策的中斷將是導(dǎo)致落入這些組中的一組的情況的中斷。還應(yīng)注意,擦除過程的中斷將決不會(huì)導(dǎo)致耗用任何識(shí)別表12中的多于一個(gè)條目的空間,即,每個(gè)擦除過程將耗用每個(gè)非目標(biāo)扇區(qū)的識(shí)別表12中的恰好一個(gè)條目空間,而與中斷次數(shù)無關(guān)。例如,如果S4被中斷,則每個(gè)扇區(qū)的識(shí)別表12中的最后的條目將為“使用中”(把目標(biāo)扇區(qū)作為目標(biāo))或者已完成(還沒有定目標(biāo))。在S4的重復(fù)過程中將跳過已經(jīng)作為目標(biāo)的那些扇區(qū)的表。本發(fā)明的另一個(gè)方面涉及扇區(qū)中的數(shù)據(jù)存儲(chǔ)?,F(xiàn)在將關(guān)于本實(shí)施方式進(jìn)一步考慮
。與在硬件EEPROM中不同,本實(shí)施方式的仿真存儲(chǔ)器沒有被組織為連續(xù)范圍的固定尺寸數(shù)據(jù)字。而是,它被組織為不連續(xù)范圍的虛擬頁(yè)(每個(gè)虛擬頁(yè)可以占用閃速存儲(chǔ)器的多個(gè)物理頁(yè))。虛擬頁(yè)(為簡(jiǎn)單起見,“頁(yè)”)通過唯一索引(頁(yè)ID)來尋址,并且在本實(shí)施方式中,虛擬頁(yè)具有相同尺寸。例如通過支持軟件的靜態(tài)配置可以將頁(yè)尺寸定標(biāo)為任意值??梢栽谳^高層中通過已知手段來完成任意尺寸的虛擬塊到整數(shù)的頁(yè)的映射。在本實(shí)施方式中,每個(gè)扇區(qū)包含(S卩,被組織成)例如由支持軟件定義的一組頁(yè)槽,每個(gè)頁(yè)槽可以存儲(chǔ)一個(gè)虛擬頁(yè)。本實(shí)施方式中的頁(yè)槽包括有關(guān)扇區(qū)的頁(yè)關(guān)聯(lián)表14中的一個(gè)條目、以及足夠大以存儲(chǔ)該頁(yè)的虛擬數(shù)據(jù)的存儲(chǔ)器塊。圖6是表示頁(yè)關(guān)聯(lián)表14中的條目42與對(duì)應(yīng)的頁(yè)槽區(qū)16中的頁(yè)槽44之間的關(guān)系的示意圖。在本實(shí)施方式中,該關(guān)系是靜態(tài)的,使得頁(yè)關(guān)聯(lián)表14中的特定條目42與對(duì)應(yīng)的頁(yè)槽區(qū)16中的特定的預(yù)定頁(yè)槽44對(duì)應(yīng)。頁(yè)關(guān)聯(lián)表14中的每個(gè)條目42表示對(duì)應(yīng)的頁(yè)槽44的狀態(tài)。狀態(tài)可以是“空閑”,意味著頁(yè)槽不包含數(shù)據(jù),并且可以將頁(yè)寫入該頁(yè)槽44。狀態(tài)可以是“已分配”,意味著頁(yè)槽不包含數(shù)據(jù),但是禁止向該頁(yè)槽開始新的寫入嘗試。如果向頁(yè)槽的寫入通過例如斷電的中斷事件被中斷,則會(huì)出現(xiàn)這種狀態(tài)。
狀態(tài)可以是“有效”,在這種情況下,條目將帶有識(shí)別所存儲(chǔ)的頁(yè)的頁(yè)ID。該狀態(tài)可以意味著對(duì)應(yīng)的頁(yè)槽44包含由頁(yè)ID所識(shí)別的頁(yè)的數(shù)據(jù)。禁止在這種狀態(tài)下向頁(yè)槽寫入。狀態(tài)可以是“無效”,另外在這種情況下,條目將帶有頁(yè)ID。該狀態(tài)意味著具有頁(yè)ID的頁(yè)被刪除或者被更新,并且禁止向該頁(yè)槽寫入。實(shí)際上,該狀態(tài)意味著該頁(yè)被刪除,并且可以通過將該頁(yè)寫入“空閑”頁(yè)槽或者通過更新“有效”頁(yè)來達(dá)到該狀態(tài)。圖7是對(duì)理解根據(jù)本實(shí)施方式的關(guān)聯(lián)表14中的條目有用的示意圖。圖7 (a)至圖7 (g)中的每幅圖代表單個(gè)這樣的條目。圖7 (a)對(duì)理解每個(gè)條目的組成部分有用。每個(gè)條目由已使用標(biāo)志52、已完成標(biāo)志54、無效標(biāo)志56和頁(yè)ID58組成,在本實(shí)施方式中已使用標(biāo)志52、已完成標(biāo)志54和無效標(biāo)志56中的每個(gè)為I位寬。已使用標(biāo)志52是指示頁(yè)槽是否空閑的I位標(biāo)志,其中在本實(shí)施方式中已擦除狀態(tài)(假)指示頁(yè)槽空閑。無效標(biāo)志56是指示頁(yè)槽(即,由頁(yè)ID識(shí)別的頁(yè)的數(shù)據(jù))有效還是無效的I位標(biāo)志,其中在本實(shí)施方式中已擦除狀態(tài)(假)指示頁(yè)槽有效。已完成標(biāo)志54是指示頁(yè)槽是否已分配的I位標(biāo)志,其中在本實(shí)施方式中已擦除狀態(tài)(假)指示頁(yè)槽已分配。頁(yè)ID58是作為唯一地識(shí)別存儲(chǔ)在頁(yè)槽44中的虛擬頁(yè)的索引的整數(shù)。在本實(shí)施方式中,修改的(或者新的)頁(yè)總是被寫入第一空閑頁(yè)槽44,其中對(duì)應(yīng)的條目進(jìn)入有關(guān)的頁(yè)關(guān)聯(lián)表14的相關(guān)部分中。因此,頁(yè)ID被存儲(chǔ)到頁(yè)關(guān)聯(lián)表14中的相關(guān)條目42,而虛擬數(shù)據(jù)被存儲(chǔ)到相應(yīng)的頁(yè)槽44中的頁(yè)槽區(qū)域16。對(duì)于每個(gè)頁(yè),只有頁(yè)槽44中的(S卩,在該頁(yè)的那些頁(yè)槽中的最新的頁(yè)槽44中)有效或無效的最后一次(最近)發(fā)生事件(occurrence)代表該頁(yè)的當(dāng)前狀態(tài)和內(nèi)容。頁(yè)的較老版本(即,在較老的頁(yè)槽44中)被隱含地忽略。因此,有利的是,如果相同的頁(yè)在較新的槽中是有效的或者無效的,則不需要使老頁(yè)槽無效。沒有在任何頁(yè)槽中引用的頁(yè)被認(rèn)為在虛擬存儲(chǔ)器中不存在。取決于所采用的錯(cuò)誤通知范例(例如,通過支持軟件),讀取嘗試會(huì)導(dǎo)致錯(cuò)誤或者將返回默認(rèn)值。頁(yè)槽的無效狀態(tài)表示有關(guān)的頁(yè)實(shí)際上被擦除,即,該頁(yè)恢復(fù)到不存在狀態(tài)。當(dāng)需要擦除扇區(qū)時(shí),可以從副本排除無效頁(yè),因此,將來可以降低存儲(chǔ)器消耗。可以在運(yùn)行時(shí)間期間添加或者去除頁(yè)而不需要重新配置軟件的事實(shí)使得該方法可動(dòng)態(tài)擴(kuò)展。因此,圖7 (b)表示條目被清除且還沒有使用(自從扇區(qū)的前一次擦除起)時(shí)的狀態(tài),由于所有的值都為“O”。也就是說,條目為“空閑”。因?yàn)轫?yè)ID58部分的寬度可能在實(shí)施方式之間變化,所以在圖7 (b)中通常指示“O”值。圖7 (C)表示條目不再為空閑時(shí)的狀態(tài),由于已使用標(biāo)志52的值為“I”。也就是說,該條目為“已分配”。在圖7 (d)中,頁(yè)ID58部分填入有頁(yè)ID,該頁(yè)ID指示打算在有關(guān)的頁(yè)槽44中存儲(chǔ)的頁(yè)。圖7 (e)表示 條目為“有效”時(shí)的狀態(tài),由于已使用標(biāo)志52的值為“I”、頁(yè)ID58部分填入有頁(yè)ID且已完成標(biāo)志54的值為“I”。已完成標(biāo)志54表示相應(yīng)的頁(yè)槽44已經(jīng)成功地填入有在頁(yè)ID58部分中識(shí)別的頁(yè)的數(shù)據(jù)。因?yàn)闊o效標(biāo)志56的值為“0”,所以條目仍然有效。圖7 Cf)表示條目變成“無效”時(shí)的狀態(tài),由于無效標(biāo)志56的值現(xiàn)在為“I”而條目的其他部分沒有變化。圖7 (g)表示在擦除扇區(qū)之后條目已經(jīng)被清除時(shí)的狀態(tài),由于所有值再一次都為“O”。因此圖7 (g)與圖7 (b)—樣。在本實(shí)施方式中,如同扇區(qū)10的其他部分一樣,通過單次閃存擦除操作來完成擦除和重置頁(yè)關(guān)聯(lián)表14和頁(yè)槽區(qū)16。現(xiàn)在將考慮在本實(shí)施方式中數(shù)據(jù)被存儲(chǔ)在扇區(qū)中所借助的過程。當(dāng)要將頁(yè)寫入扇區(qū)時(shí),執(zhí)行以下序列。通過將“I”寫入相應(yīng)的頁(yè)關(guān)聯(lián)表14的相應(yīng)條目42中的已使用標(biāo)志52,來分配第一空閑頁(yè)槽44。然后,在第二寫入存取中將頁(yè)ID寫入頁(yè)關(guān)聯(lián)表14中的同一條目42。然后,將虛擬頁(yè)的內(nèi)容寫入頁(yè)槽區(qū)16中的頁(yè)槽44。最后,通過將“ I ”寫入已完成標(biāo)志44來將頁(yè)槽44表示為“有效”。當(dāng)要在扇區(qū)上使頁(yè)無效時(shí),執(zhí)行以下序列。通過將“I”寫入頁(yè)關(guān)聯(lián)表14中的相應(yīng)條目42中的無效標(biāo)志56,來將已經(jīng)包含頁(yè)的頁(yè)槽44表示為“無效”。在本實(shí)施方式中,這是通過重寫來完成的,然而,將會(huì)理解的是,在其他實(shí)施方式中(例如,其中由于硬件限制而不能重寫),可以通過寫入到頁(yè)關(guān)聯(lián)表14中的新條目42來實(shí)現(xiàn)相同的效果。例如,新條目可以設(shè)置有要被無效的頁(yè)的頁(yè)ID,并且寫入過程期間無效標(biāo)志56被給予值“I”。在這種情況下,可以認(rèn)為無效等同于關(guān)于執(zhí)行序列的寫入和不完全寫入的檢測(cè)(如上文所討論的,利用已完成標(biāo)志54。)如同本文中所描述的其他過程一樣,有可能數(shù)據(jù)存儲(chǔ)過程會(huì)通過諸如斷電的中斷事件被中斷。這樣的中斷可能導(dǎo)致頁(yè)槽44和相應(yīng)的條目42留在許多不同狀態(tài)中的一個(gè)狀態(tài)下。如果在已使用標(biāo)志52可能被寫入之前發(fā)生中斷,則頁(yè)槽44可能為“空閑”,即,沒有東西寫入頁(yè)槽44。在這種情況下,在中斷之后,頁(yè)槽44可以被安全地認(rèn)為是空閑的且重新使用,因?yàn)轫?yè)槽44還沒有被寫入。如果在寫入已使用標(biāo)志52之后,但是在寫入已完成標(biāo)志56之前,發(fā)生中斷,則頁(yè)槽44可能為“已分配”,S卩,已使用標(biāo)志52被寫入而已完成標(biāo)志56沒有被寫入。在這種情況下,頁(yè)槽44的一些位而不是全部位可能已經(jīng)被寫入。頁(yè)槽可能既不是重新使用的,也不能讀取。頁(yè)槽44應(yīng)該被忽略。如果在寫入已完成標(biāo)志56之后發(fā)生中斷,則頁(yè)槽44可能是“已完成”(有效或者無效),即,已完成標(biāo)志56被寫入。在這種情況下,存儲(chǔ)過程期望的所有位已被寫入。頁(yè)槽44可以被讀取而沒有數(shù)據(jù)損壞;S卩,可以安全地認(rèn)為頁(yè)槽44是“有效的”或者“無效的”。因此,可以檢測(cè)并處理這些狀態(tài)中的每個(gè)狀態(tài)。將會(huì)理解的是,本發(fā)明提供了一定程度的抗中斷魯棒性。頁(yè)槽44的寫入對(duì)于斷電引起的中斷是安全的。例如,上文詳細(xì)說明的過程(其可以被具體化為算法)決不會(huì)將不完全寫入的頁(yè)(被存儲(chǔ)在頁(yè)槽44中)識(shí)別為有效。此外,這樣的算法決不會(huì)將頁(yè)的過時(shí)版本識(shí)別為當(dāng)前版本,因?yàn)樵诒緦?shí)施方式中,由指示較新的數(shù)據(jù)的有效性的相同的位來指示所有較舊的版本的隱含失效。 應(yīng)當(dāng)理解的是,寫入過程的連續(xù)中斷可能會(huì)潛在地用已分配的頁(yè)槽44填充頁(yè)關(guān)聯(lián)表14的所有條目42。因此,虛擬存儲(chǔ)器可能進(jìn)入不可以寫入另外的數(shù)據(jù)的狀態(tài)。本實(shí)施方式被配置成安全地檢測(cè)該狀態(tài),以使得它對(duì)于斷電保持安全。這可以通過對(duì)剩余的空閑頁(yè)槽進(jìn)行計(jì)數(shù)并且通過禁止該數(shù)目的顯著變化來完成。這可使寫入變得不可能,但是好處是使已經(jīng)寫入的數(shù)據(jù)安全。作為另一個(gè)示例,作為預(yù)防性的對(duì)策,可以調(diào)整擦除(下文將進(jìn)一步討論)之前空閑頁(yè)槽的最小數(shù)目?,F(xiàn)在將考慮本實(shí)施方式中所采用的用于數(shù)據(jù)查找(即用于從包括全部扇區(qū)的虛擬存儲(chǔ)器中讀取數(shù)據(jù))的過程或算法。在初始化期間,檢測(cè)扇區(qū)的狀態(tài),并且這只需要在初始化階段完成。在初始化之后,已知哪個(gè)扇區(qū)包含有效數(shù)據(jù)以及扇區(qū)的年齡。按照他們的“年齡”對(duì)有效扇區(qū)排序,最老的在前。如上所述,可以通過檢查識(shí)別表12來評(píng)估扇區(qū)的“年齡”,越老的扇區(qū)在它們的識(shí)別表12中具有越長(zhǎng)的列表。為了找到頁(yè)的最近(S卩,最新)版本,對(duì)有效扇區(qū)10的頁(yè)關(guān)聯(lián)表14進(jìn)行評(píng)估。在本實(shí)施方式中,這不是針對(duì)每一頁(yè)逐一地重復(fù),而是針對(duì)一定范圍的頁(yè)一次完成。該范圍的大小通過軟件配置可伸縮,并且可以例如包括所有可能的頁(yè)。軟件采用RAM6中的緩沖區(qū),該緩沖區(qū)足夠大以包含將以下項(xiàng)與范圍中的每個(gè)虛擬頁(yè)相關(guān)聯(lián)的表:(I)有效性(頁(yè)是有效的還是無效的?);(2)可用性(頁(yè)槽為該頁(yè)而保留,即由該頁(yè)使用嗎?);(3)扇區(qū)索引(頁(yè)存儲(chǔ)在哪個(gè)扇區(qū)上?);以及(4)頁(yè)槽索引(頁(yè)存儲(chǔ)在有關(guān)的扇區(qū)內(nèi)的哪個(gè)頁(yè)槽中?)??梢詫AM6中的該表稱為查找表。圖8是可以存儲(chǔ)在RAM6中的查找表60的示意性表示。查找表60被配置成存儲(chǔ)關(guān)于頁(yè)范圍62中的頁(yè)的條目,在本實(shí)例中用于頁(yè)I至100。在圖8中,為簡(jiǎn)單起見僅示出了第一條目和最后一個(gè)條目;應(yīng)當(dāng)理解的是,所有的條目可以被填入。查找表60具有表格形式,表中的每一行是對(duì)應(yīng)于在第一列64中指出其頁(yè)ID的頁(yè)的條目。其他列用于指示頁(yè)是有效的66還是無效的68,以及頁(yè)存儲(chǔ)在哪個(gè)扇區(qū)70上和哪個(gè)頁(yè)槽72中??梢杂杀?0內(nèi)的表偏移(第一項(xiàng)(即條目)的索引)和位置(索引)來給出對(duì)應(yīng)于查找表60中的每個(gè)條目的頁(yè)ID。以這種方式,列64實(shí)際上可以是冗余的,并且在實(shí)際的實(shí)施方式中未實(shí)現(xiàn)。也就是說,RAM6內(nèi)的查找表60的位置和大小可以是已知的,例如預(yù)定義的,并且被存儲(chǔ)在軟件或其他硬件中,以使得可以經(jīng)由索引/偏移來訪問具體的頁(yè)的條目,而不是像這樣需要有頁(yè)ID列64。圖9是對(duì)理解根據(jù)本實(shí)施方式的查找表60中的條目有用的示意圖。圖9 (a)至圖9 (d)中的每幅圖代表單個(gè)這樣的條目。圖9(a)對(duì)理解每個(gè)條目的組成部分有用。每個(gè)條目由有效記錄66、可用記錄68、扇區(qū)記錄70和頁(yè)槽記錄72組成。當(dāng)然,像本實(shí)施方式中一樣,每個(gè)條目還可以明確地具有頁(yè)ID記錄64或者隱含地具有依靠其在查找表60中的位置的這樣的記錄。因此,圖9 (a)中的頁(yè)ID記錄64被示出為在圖9 (a)中是可選的(虛線),而在圖9 (b)至圖9 (e)中省略??梢允荌位記錄的有效記錄66指示在用記錄70和72所識(shí)別的頁(yè)槽44 (與關(guān)聯(lián)表?xiàng)l目42相關(guān)聯(lián)的)中頁(yè)是否是有效的,其中在本實(shí)施方式中已寫入狀態(tài)(真)表示頁(yè)是有效的??梢允荌位記錄的可用記錄68指示在用記錄70和72所識(shí)別的頁(yè)槽44 (與關(guān)聯(lián)表?xiàng)l目42相關(guān)聯(lián)的)中頁(yè)是否是可用的,其中在本實(shí)施方式中用已寫入狀態(tài)(真)表示頁(yè)是可用的??梢允钦麛?shù)的扇區(qū)記錄70指示有關(guān)的頁(yè)被存儲(chǔ)在有效扇區(qū)10中的哪個(gè)扇區(qū)上。類似地,也可以是整數(shù)的頁(yè)槽記錄72指示有關(guān)的頁(yè)被存儲(chǔ)在所識(shí)別的扇區(qū)10的哪個(gè)頁(yè)槽44中。在本實(shí)施方式中,將查找表60中的每個(gè)條目有效地預(yù)先分配給具體的頁(yè)。當(dāng)頁(yè)的狀態(tài)改變時(shí),在如以下將討論的初始化階段之后,該頁(yè)在查找表60中的條目可以相應(yīng)地改變。例如,由于寫入、復(fù)制和擦除動(dòng)作而發(fā)生改變。因此,圖9 (b)表示條目被清除且還沒有更新時(shí)的狀態(tài),因?yàn)樗械闹刀紴椤癘”。也就是說,在由扇區(qū)10在物理上設(shè)置的虛擬存儲(chǔ)器中有關(guān)的頁(yè)不存在。由于扇區(qū)記錄70和頁(yè)槽記錄72的寬度可以在實(shí)施方式之間變化,因此在圖9 (b)中通常指示“O”值。圖9 (C)表示頁(yè)在虛擬存儲(chǔ)器中是有效的且可用時(shí)的狀態(tài),用該條目中的扇區(qū)記錄70和頁(yè)槽記錄72指示頁(yè)的物理位置。在圖9 (c)中,扇區(qū)記錄70填入有扇區(qū)編號(hào)或索弓丨,指示頁(yè)被物理地存儲(chǔ)在該扇區(qū)10中。類似地,頁(yè)槽記錄72填入有頁(yè)槽編號(hào)或索引,指示頁(yè)被物理地存儲(chǔ)在有關(guān)的扇區(qū)10的該頁(yè)槽44中。
圖9 Cd)與圖9 (C)的相似之處在于,圖9 Cd)表示頁(yè)在虛擬存儲(chǔ)器中可用時(shí)的狀態(tài),用該條目中的扇區(qū)記錄70和頁(yè)槽記錄72指示頁(yè)的物理位置。然而,在圖9 (d)中,頁(yè)被指示為是無效的。圖9 (e)表示查找表60的摘錄,其中示出了與三個(gè)連續(xù)編號(hào)的頁(yè)有關(guān)的三個(gè)連續(xù)的條目?,F(xiàn)在將結(jié)合圖10來考慮在初始化階段期間將信息寫入查找表60所借助的過程?!愕卣f,在初始化階段期間有效扇區(qū)10的關(guān)聯(lián)表14被評(píng)估/掃描以填充查找表60。首先,通過將所有條目標(biāo)記為顯示有關(guān)的頁(yè)是無效的且不可用的來初始化表60本身。然后,將已排序列表中的第一個(gè)、“最老的”有效扇區(qū)10選擇作為當(dāng)前扇區(qū)。然后,對(duì)當(dāng)前扇區(qū)10的頁(yè)關(guān)聯(lián)表14從對(duì)應(yīng)于最老的頁(yè)槽44 (即,首先寫入的頁(yè)槽)的條目42開始向?qū)?yīng)于最新的頁(yè)槽44的條目42進(jìn)行遍歷。在本實(shí)施方式中,針對(duì)當(dāng)前扇區(qū)10可能在第一空閑頁(yè)槽44處停止這種遍歷,因?yàn)榘错樞驅(qū)懭腠?yè)槽,然而在其他實(shí)施方式中,可以遍歷整個(gè)頁(yè)關(guān)聯(lián)表14。如果當(dāng)前頁(yè)槽是有效的且頁(yè)ID在范圍內(nèi),則查找表60中的對(duì)應(yīng)于該頁(yè)的條目被更新以示出頁(yè)是有效的,可用的,位于當(dāng)前扇區(qū)上,并且位于當(dāng)前頁(yè)槽中。類似地,如果當(dāng)前頁(yè)槽是無效的且頁(yè)ID在范圍內(nèi),則查找表60中的對(duì)應(yīng)于該頁(yè)的條目被更新以示出頁(yè)是無效的,可用的,位于當(dāng)前扇區(qū)上,并且位于當(dāng)前頁(yè)槽中。
如果當(dāng)前頁(yè)槽被指示為是“已分配”,則跳過該頁(yè)槽。如果當(dāng)前頁(yè)槽被指示為是“空閑”,則其位置被存儲(chǔ)為是第一空閑頁(yè)槽且對(duì)該關(guān)聯(lián)表14的評(píng)估終止。在本實(shí)施方式中,因?yàn)榘凑諒淖罾系纳葏^(qū)向最新的扇區(qū)的順序?qū)㈨?yè)寫入頁(yè)槽,所以當(dāng)找到第一空閑頁(yè)槽時(shí)可以終止對(duì)關(guān)聯(lián)表14的掃描,因?yàn)樗衅渌?yè)槽都將是空閑的。如果還沒有考慮全部的有效扇區(qū),則將下一個(gè)有效扇區(qū)(已排序列表中的下一個(gè))選擇作為當(dāng)前扇區(qū)10并且如上所述對(duì)該扇區(qū)的關(guān)聯(lián)表14進(jìn)行遍歷。過程繼續(xù)進(jìn)行,直到已經(jīng)考慮了全部的有效扇區(qū)10。圖10是描繪用于在初始化階段期間填充查找表60的方法80的流程圖。方法80包括步驟S20至步驟S35。方法60在步驟S20處開始并且繼續(xù)進(jìn)行至步驟S21。在步驟S21中,通過將所有條目標(biāo)記為顯示有關(guān)的頁(yè)是無效的且不可用的來將表60初始化為標(biāo)準(zhǔn)狀態(tài)。然后,方法進(jìn)行至步驟S22。在步驟S22中,基于如上所述的已排序列表,將最老的有效扇區(qū)選擇作為當(dāng)前扇區(qū)10。然后,方法進(jìn)行至步驟S23。在步驟S23中,將當(dāng)前扇區(qū)中的最老的頁(yè)槽44選擇作為當(dāng)前頁(yè)槽44,并且檢查該頁(yè)槽在對(duì)應(yīng)的頁(yè)關(guān)聯(lián)表14中的條目42。然后,方法進(jìn)行至步驟S24。如果在步驟S24中確定當(dāng)前頁(yè)槽44不“空閑”(S24 ;否),則方法進(jìn)行至步驟S25。如果在步驟S25中確定當(dāng)前頁(yè)槽44不是“已分配”(S25 ;否),則方法進(jìn)行至步驟S26。如果在步驟S26中確定存儲(chǔ)在當(dāng)前頁(yè)槽44中的頁(yè)在范圍內(nèi)(S26 ;是),即如果該頁(yè)的頁(yè)ID在由查找表60處理的范圍內(nèi),則方法進(jìn)行至步驟S27。在步驟S27中,根據(jù)與當(dāng)前頁(yè)槽44有關(guān)的條目42確定所存儲(chǔ)的頁(yè)是“有效的”還是“無效的”。如果確定頁(yè)是“有效的”(S27 ;是),則方法進(jìn)行至步驟S28,在步驟S28中,查找表60中的針對(duì)該頁(yè)的條目被更新以顯示頁(yè)是有效的,可用的,位于當(dāng)前扇區(qū)10上并且位于該扇區(qū)10的當(dāng)前頁(yè)槽44中。另一方面,如果確定頁(yè)是“無效的”(S27 ;否),則方法進(jìn)行至步驟S29,在步驟S29中,查找表60中的針對(duì)該頁(yè)的條目被更新以顯示頁(yè)是無效的,可用的,位于當(dāng)前扇區(qū)10上并且位于該扇區(qū)10的當(dāng)前頁(yè)槽44中。在步驟S28或S29之后,方法進(jìn)行至步驟S30。如果在步驟S24中確定當(dāng)前頁(yè)槽44是“空閑的”(S24;是),則方法進(jìn)行至步驟S31,在步驟S31中,當(dāng)前頁(yè)槽被標(biāo)注為當(dāng)前扇區(qū)10中的第一“空閑”頁(yè)槽,并且然后方法進(jìn)行至步驟S30。如上所述,因?yàn)樵诒緦?shí)施方式中按照從最老的扇區(qū)向最新的扇區(qū)的順序?qū)㈨?yè)寫入頁(yè)槽,所以當(dāng)找到第一空閑頁(yè)槽時(shí)可以終止對(duì)關(guān)聯(lián)表14的掃描,因?yàn)樗衅渌?yè)槽都將是空閑的。因此,方法可以從步驟S31直接進(jìn)行至步驟S35 (如圖10中以虛線形式示出的),在步驟S35處方法結(jié)束。應(yīng)當(dāng)理解的是,圖10中從步驟S31到步驟S30的行進(jìn)可以確保掃描所有扇區(qū)。如果在步驟S25中確定當(dāng)前頁(yè)槽44為“已分配”(S25 ;是),則方法進(jìn)行至步驟S30。如果在步驟S26中確定存儲(chǔ)在當(dāng)前頁(yè)槽44中的頁(yè)不在范圍內(nèi)(S26 ;否),即,如果該頁(yè)的頁(yè)ID不在由查找表60處理的范圍內(nèi),則方法進(jìn)行至步驟S30。在步驟S30中,確定當(dāng)前頁(yè)槽44是否是要在當(dāng)前扇區(qū)10中考慮的最后一個(gè)頁(yè)槽44。這可以涉及檢查當(dāng)前頁(yè)槽44是否是該扇區(qū)中的第一空閑頁(yè)槽,或者在該扇區(qū)中遍歷是否已經(jīng)到達(dá)最后一個(gè)頁(yè)槽44。如果確定當(dāng)前頁(yè)槽44不是最后一個(gè)頁(yè)槽44 (S30 ;否),則方法進(jìn)行至步驟S32,在步驟S32中將當(dāng)前頁(yè)槽設(shè)定為是下一個(gè)較新的頁(yè)槽(比前一個(gè)當(dāng)前頁(yè)槽更新的頁(yè)槽),并且然后返回到步驟S24以使得可以考慮新的當(dāng)前頁(yè)槽。另一方面,如果確定當(dāng)前頁(yè)槽44是最后一個(gè)頁(yè)槽44 (S30 ;是),則方法進(jìn)行至步驟S33。在步驟S33中,確定當(dāng)前扇區(qū)10是否是要考慮的最后一個(gè)有效扇區(qū)10。這可以涉及檢查在已排序列表中沒有比當(dāng)前扇區(qū)更新的扇區(qū)10,或者例如檢查已經(jīng)考慮了所有的有效扇區(qū)10。如果確定當(dāng)前扇區(qū)10不是最后一個(gè)扇區(qū)(S33 ;否),則方法進(jìn)行至步驟S34,在步驟S34中,將當(dāng)前扇區(qū)設(shè)定為是下一個(gè)較新的有效扇區(qū)(比前一個(gè)當(dāng)前扇區(qū)更新的有效扇區(qū)),并且然后返回到步驟S23以使得可以考慮新的當(dāng)前扇區(qū)。另一方面,如果確定當(dāng)前扇區(qū)10是最后一個(gè)扇區(qū)10 (S33 ;是),則方法進(jìn)行至步驟S35,在步驟S35處方法結(jié)束。在初始化階段之后,通過更新查找表60來跟蹤將來對(duì)扇區(qū)的寫入或復(fù)制嘗試,使得查找表繼續(xù)提供扇區(qū)的內(nèi)容的最新記錄以及因此虛擬存儲(chǔ)器的最新記錄。例如,如果設(shè)置了多于一個(gè)的查找表60,則當(dāng)然可以按查找表60來執(zhí)行上述方法。將會(huì)理解的是,上述的方法是有效的。一旦在查找表60中引用了頁(yè),則可以容易地從表60中查出該頁(yè)在閃速存儲(chǔ)器4中的狀態(tài)和存儲(chǔ)位置,S卩,不需要遍歷頁(yè)關(guān)聯(lián)表14。優(yōu)選地,RAM中查找表60的存儲(chǔ)范圍足以引用所有的頁(yè)。在這種情況下,在初始化階段期間只需要遍歷一次頁(yè)關(guān)聯(lián)表14,這導(dǎo)致時(shí)間有效性并因此導(dǎo)致性能有效性?,F(xiàn)在將更詳細(xì)地考慮扇區(qū)10的清理和擦除,用于獲得新的空閑閃速存儲(chǔ)器同時(shí)保存所有的虛擬數(shù)據(jù)。該過程涉及以下階段:(1)決定要清理和擦除哪個(gè)扇區(qū)10 (即,選擇目標(biāo)扇區(qū)10);(2)清理目標(biāo)扇區(qū)10,S卩,將所有需要的有效頁(yè)和無效頁(yè)復(fù)制到另一個(gè)扇區(qū);以及(3)擦除目標(biāo)扇區(qū)以使其可用于存儲(chǔ)新數(shù)據(jù)。 將結(jié)合圖11來依次考慮這些階段。
圖11是描繪用于清理和擦除目標(biāo)扇區(qū)的方法90的流程圖。方法90包括步驟S40至步驟S50。步驟S40至步驟S46涉及階段(I),步驟S47和步驟S48涉及階段(2),步驟S49涉及階段(3)。將回想,當(dāng)閃速存儲(chǔ)器4中的空閑容量不足時(shí),進(jìn)行根據(jù)本發(fā)明的擦除過程。這樣的不足可以是識(shí)別表12中的一個(gè)或更多個(gè)識(shí)別表中的空間的不足,或者例如是頁(yè)關(guān)聯(lián)表14中的一個(gè)或更多個(gè)頁(yè)關(guān)聯(lián)表以及頁(yè)槽區(qū)域16中的一個(gè)或更多個(gè)頁(yè)槽區(qū)域的空間的不足。方法90在步驟S40處開始,在步驟S40中,存在空閑的閃速存儲(chǔ)器4的不足。被認(rèn)為是表示不足的空閑的閃速存儲(chǔ)器4的水平能夠例如以軟件或者硬件來預(yù)定義,或者動(dòng)態(tài)即時(shí)地調(diào)整(例如,以最大化性能)。然后方法進(jìn)行至步驟S41。步驟S41表示與選擇目標(biāo)扇區(qū)10有關(guān)的第一考慮(標(biāo)準(zhǔn))。如果扇區(qū)10快用完其識(shí)別表12中的空閑條目(S41 ;是),則將該扇區(qū)10選擇作為潛在的目標(biāo)扇區(qū)10,并且方法進(jìn)行至步驟S42。如果多個(gè)這樣的扇區(qū)有這種情況,則在步驟S42中將它們?nèi)窟x擇。當(dāng)空閑條目的數(shù)目等于或者小于比該扇區(qū)更老的扇區(qū)10的數(shù)目時(shí),可以認(rèn)為扇區(qū)10快用完這樣的空閑條目。然后,方法進(jìn)行至步驟S43。如果沒有有效扇區(qū)10快用完其識(shí)別表12中的空閑條目(S41 ;否),則方法進(jìn)行至步驟S44,在步驟S44中,選擇包含最少數(shù)目的需要被復(fù)制的合法(S卩,需要的)頁(yè)的扇區(qū)10。再次,如果多個(gè)這樣的扇區(qū)有這種情況,則在步驟S44中將它們?nèi)窟x擇。然后,方法進(jìn)行至步驟S43??梢哉J(rèn)為需要被復(fù)制的合法頁(yè)是:Ca)在虛擬存儲(chǔ)器內(nèi)部是“有效的”(用于該頁(yè)的最近的(即最新的)頁(yè)槽是有效的)并且用于該頁(yè)的最新的頁(yè)槽位于有關(guān)的扇區(qū)上的所有頁(yè);以及(b)在虛擬存儲(chǔ)器內(nèi)部是“無效的”(用于該頁(yè)的最近的(即最新的)頁(yè)槽是無效的)、用于該頁(yè)的最新的頁(yè) 槽位于有關(guān)的扇區(qū)上并且有關(guān)的扇區(qū)不是所有扇區(qū)中最老的扇區(qū)的所有頁(yè)。在這一點(diǎn)上,應(yīng)當(dāng)理解的是,如果較老的扇區(qū)包含同一頁(yè)的有效的頁(yè)槽,在新的無效版本被去除、導(dǎo)致數(shù)據(jù)損壞、以及由此導(dǎo)致檢查有關(guān)的扇區(qū)不是所有扇區(qū)中最老的扇區(qū)的步驟的情況下,則該頁(yè)的老狀態(tài)將被再次認(rèn)為是當(dāng)前版本。在步驟S43中,確定是否選擇了多個(gè)扇區(qū)。如果選擇了多個(gè)扇區(qū)(S43 ;是),則方法經(jīng)由步驟S45進(jìn)行至步驟S46,在步驟S45中,將它們中的最老的扇區(qū)認(rèn)為是所選擇的扇區(qū),而其余的扇區(qū)被忽略。然而,如果只選擇了一個(gè)扇區(qū)(S43 ;否),則方法直接進(jìn)行至步驟
546。在步驟S46中,將所選擇的單個(gè)扇區(qū)10認(rèn)為是目標(biāo)扇區(qū)。然后,方法進(jìn)行至步驟
547。在步驟S47中,將存儲(chǔ)在扇區(qū)中的并且需要保留的那些有效頁(yè)(合法頁(yè))復(fù)制到虛擬存儲(chǔ)器中的下一個(gè)空閑頁(yè)槽,即,另一個(gè)扇區(qū)10中。將回想起,在本實(shí)施方式中,新數(shù)據(jù)被寫入具有足夠的空閑存儲(chǔ)器的最老的扇區(qū)10。因此,在步驟S47中,在虛擬存儲(chǔ)器內(nèi)部是有效的(用于該頁(yè)的最新的頁(yè)槽是有效的)并且用于該頁(yè)的最新的頁(yè)槽位于目標(biāo)扇區(qū)上的所有頁(yè)被復(fù)制到下一個(gè)空閑頁(yè)槽。然后,方法進(jìn)行至步驟S48。在步驟S48中,將存儲(chǔ)在扇區(qū)中的并且需要保留的那些無效頁(yè)(合法頁(yè))復(fù)制到虛擬存儲(chǔ)器中的下一個(gè)空閑頁(yè)槽,即,另一個(gè)扇區(qū)10中。因此,在步驟S48中,在虛擬存儲(chǔ)器內(nèi)部是無效的(用于該頁(yè)的最新的頁(yè)槽是無效的)并且用于該頁(yè)的最新的頁(yè)槽位于目標(biāo)扇區(qū)上的所有頁(yè)被復(fù)制到下一個(gè)空閑頁(yè)槽,其中目標(biāo)扇區(qū)不是所有扇區(qū)中最老的扇區(qū)。上文已經(jīng)說明了檢查有關(guān)的扇區(qū)不是所有扇區(qū)中最老的扇區(qū)的步驟的原因。如以上詳細(xì)說明的那樣,可以使用頁(yè)關(guān)聯(lián)表14和/或查找表60來訪問并且評(píng)估目標(biāo)扇區(qū)和頁(yè)槽。應(yīng)當(dāng)理解的是,在將頁(yè)從目標(biāo)扇區(qū)復(fù)制到其他扇區(qū)時(shí),其中存儲(chǔ)的所有頁(yè)隱含地變成無效(因?yàn)槿缓笤趧e處存儲(chǔ)較新的版本)。在不尋常的情況下,步驟S47和S48還可以包括將任何空閑頁(yè)槽44標(biāo)記為無效,以達(dá)到目標(biāo)扇區(qū)沒有空閑頁(yè)槽的情況。在步驟S48之后,方法進(jìn)行至步驟S49,在步驟S49中,將目標(biāo)扇區(qū)擦除。實(shí)際上,在該步驟中,不包含以下項(xiàng)中的任何一個(gè)的最老的扇區(qū)被擦除:(1)空閑頁(yè)槽(以防止空扇區(qū)被再次擦除);(2)在虛擬存儲(chǔ)器內(nèi)部是有效的(用于該頁(yè)的最新的頁(yè)槽是有效的)并且用于該頁(yè)的最新的頁(yè)槽位于目標(biāo)扇區(qū)上的頁(yè);以及(3)在虛擬存儲(chǔ)器內(nèi)部是無效的(用于該頁(yè)的最新的頁(yè)槽是無效的)、用于該頁(yè)的最新的頁(yè)槽位于目標(biāo)扇區(qū)上并且目標(biāo)扇區(qū)不是所有扇區(qū)中最老的扇區(qū)的頁(yè)。上文已經(jīng)說明了檢查有關(guān)的扇區(qū)不是所有扇區(qū)中的最老的扇區(qū)的步驟的原因。作為上文關(guān)于圖5詳細(xì)說明的過程的一部分,通過擦除有關(guān)的整個(gè)扇區(qū)的閃存擦除操作來進(jìn)行擦除。上一次擦除的扇區(qū)變成最新的扇區(qū),因?yàn)樵撋葏^(qū)的識(shí)別表12將被清空。已擦除的扇區(qū)的頁(yè)關(guān)聯(lián)表14也將被清空。在本實(shí)施方式中,為了效率起見,盡可能快地開始步驟S49的擦除,即,一旦有不包含上文關(guān)于步驟S49所討論的項(xiàng)(I)至(3 )的扇區(qū)10 (目標(biāo)扇區(qū)),就開始步驟S49的擦除。因?yàn)樵陂W速存儲(chǔ)器4的擦除期間讀和寫訪問是可能的,所以數(shù)據(jù)存取的最大等待時(shí)間(latency)會(huì)遠(yuǎn)小于擦除所需的時(shí)間。讀訪問的最大等待時(shí)間與擦除所需的時(shí)間無關(guān),因?yàn)椴淮鎯?chǔ)額外的數(shù)據(jù)。`現(xiàn)在將考慮與組成虛擬存儲(chǔ)器的存儲(chǔ)量相比,關(guān)于在清理期間需要復(fù)制的存儲(chǔ)量的本文中提出的方法的有效性。在本實(shí)施方式中,物理存儲(chǔ)器分配是動(dòng)態(tài)的,使得事先不知道組成虛擬存儲(chǔ)器的存儲(chǔ)量。出于這種考慮,特定時(shí)間處的虛擬存儲(chǔ)器的大小可以被定義為是已經(jīng)被寫入至少一次的所有虛擬頁(yè)的和。也就是說,直到該時(shí)間已經(jīng)訪問的所有虛擬存儲(chǔ)器。 一些頁(yè)可能在此期間已經(jīng)無效,但是可能仍然耗用物理頁(yè)槽。針對(duì)這些頁(yè),可能存在標(biāo)記為無效的合法的物理頁(yè),該合法的物理頁(yè)隱藏了(通過是更新的)同一虛擬頁(yè)(非法的物理頁(yè))的較老的版本。在這種情況下,在清理期間應(yīng)該復(fù)制“合法的”無效頁(yè),以防止老的“非法”版本被再次認(rèn)為是“合法的”。如果已知合法頁(yè)沒有隱藏同一頁(yè)的非法版本(即,因?yàn)楹戏?yè)位于最老的扇區(qū)上),則在清理時(shí)不需要復(fù)制無效頁(yè)。因此,有許多需要被一直存儲(chǔ)的頁(yè),并且該數(shù)目等于或者大于物理存儲(chǔ)的有效頁(yè)的數(shù)目,且該數(shù)目等于或者小于組成虛擬存儲(chǔ)器的物理存儲(chǔ)頁(yè)的數(shù)目。期望這些頁(yè)在清理之后分布在η-1個(gè)扇區(qū)上(其中η為扇區(qū)的數(shù)目)(一個(gè)扇區(qū)預(yù)計(jì)為目標(biāo)扇區(qū),所以此時(shí)其缺少需要的頁(yè))。如先前所討論的那樣,在本實(shí)施方式中,算法將要復(fù)制最少數(shù)據(jù)的扇區(qū)選擇作為目標(biāo)扇區(qū),并且該數(shù)據(jù)不多于上述的所有存儲(chǔ)器的l/(n-l)??赡艽嬖谙率銮闆r:與在運(yùn)行時(shí)間期間相對(duì)小量的有效數(shù)據(jù)相比,在運(yùn)行時(shí)間期間大量的虛擬存儲(chǔ)器無效。在此情況下,虛擬存儲(chǔ)器非常大(當(dāng)隨著時(shí)間考慮時(shí)可能甚至大于物理存儲(chǔ)器),使得虛擬存儲(chǔ)器對(duì)于考慮效率是無用的引用。可以表明:存在對(duì)于需要在特定時(shí)間存儲(chǔ)的頁(yè)(有效的和無效的)的數(shù)目的限制。存在如下兩種情況。在下文中,η為扇區(qū)的數(shù)目,m為每個(gè)扇區(qū)的最大的頁(yè)槽數(shù),V為有效頁(yè)的數(shù)目。情況1:v〈=m在最壞的情況下,所有的有效頁(yè)被存儲(chǔ)到最老的扇區(qū),并且n-2個(gè)剩余扇區(qū)各自包含v-1個(gè)無效頁(yè)。注意,在清理時(shí)沒有復(fù)制最老的扇區(qū)上的無效頁(yè),使得它們可以被忽略。還應(yīng)注意,只要剩余的n-2個(gè)扇區(qū)中的一個(gè)扇區(qū)達(dá)到最老的扇區(qū)上有效頁(yè)的數(shù)目,將按照定義清理最老的扇區(qū),并且所包含的頁(yè)將移動(dòng)到具有足夠的空間的最老的扇區(qū)。因此,包含無效頁(yè)的扇區(qū)中的一個(gè)扇區(qū)變成最老的扇區(qū),并且下次將被清理,導(dǎo)致不復(fù)制無效頁(yè),然后下一個(gè)最老的扇區(qū)被清理,依此類推,直到去除以前無效的頁(yè)中的全部。在情況I中,最多有(n-2)*(v-1)個(gè)無效頁(yè)。因此,合法頁(yè)的和為(n-2) * (v-1) +V= (η-1) * (v-1) +1。情況2:v>=m在最壞的情況下,最老的扇區(qū)的所有頁(yè)包含有效頁(yè)(m個(gè)頁(yè)),且剩余的n-2個(gè)扇區(qū)各自包含m-Ι個(gè)合法頁(yè),其包含剩余的有效頁(yè)和無效頁(yè)。這意味著,在情況2中最多有(n-2)*(m-l)-(v_m)個(gè)無效頁(yè)。合法頁(yè)的和為(n-2) * (m-1) +m= (η-1) * (m_l) +1。因此,在清理期間需要復(fù)制的頁(yè)的整數(shù)小于或者等于min(v-l,m-1)。其不受虛擬存儲(chǔ)器的大小的限制。與必須復(fù)制全部虛擬存儲(chǔ)器的、只用兩個(gè)扇區(qū)的靜態(tài)的或者混合分配的方法相比,這在效率方面是有益的。在存在比裝在一個(gè)扇區(qū)上更多的有效虛擬存儲(chǔ)器的情況下,所提出的方法比只使用兩個(gè)扇區(qū)的系統(tǒng)更有效率,即使閃速存儲(chǔ)器的總和是一樣的。這是因?yàn)樵诒驹O(shè)備中,需要復(fù)制的頁(yè)的數(shù)目受限于裝在一個(gè)扇區(qū)中的頁(yè)的數(shù)目。如果數(shù)據(jù)速率被限制為個(gè)頁(yè)且f被限制為—6則寫訪問的最大等待時(shí)
*€€ ,
間關(guān)于,成線性,其中:tee為清理和擦除一個(gè)扇區(qū)所需的最大時(shí)間;f為在開始擦除的時(shí)
刻可用的空閑頁(yè)槽的數(shù)目;n為可用的扇區(qū)的數(shù)目;m為每個(gè)扇區(qū)的頁(yè)槽的數(shù)目;以及t為虛擬存儲(chǔ)器中的頁(yè)的總數(shù)目,即,t<=min(v-l, m-1)。應(yīng)當(dāng)理解的是,本實(shí)施方式在可擴(kuò)展性方面具有優(yōu)勢(shì)。可以通過軟件來配置觸發(fā)清理(以及由此擦除)的空閑頁(yè)槽的限制。優(yōu)選地,該限制為至少每個(gè)扇區(qū)的頁(yè)槽的數(shù)目。圖12是表示將數(shù)據(jù)頁(yè)寫入標(biāo)記為“扇區(qū)0”、“扇區(qū)I”和“扇區(qū)2”的三個(gè)扇區(qū)10的示例性序列的示意圖。圖12 (a)至圖12 (e)中的每幅圖示 出了三個(gè)扇區(qū)10中的每個(gè)扇區(qū)10的頁(yè)槽區(qū)
16(具有頁(yè)槽44)。為了簡(jiǎn)單起見,假定每個(gè)頁(yè)槽區(qū)16只有四個(gè)頁(yè)槽44,然而,應(yīng)當(dāng)理解的是,在實(shí)際的實(shí)施方式中,將有更多的頁(yè)槽。所示出的頁(yè)槽44中的每個(gè)頁(yè)槽或者填充有標(biāo)記“F”,指示其“空閑”,或者被給予數(shù)字標(biāo)記,指示其正存儲(chǔ)的頁(yè)的數(shù)目。而且,在圖12 (a)至圖12 (e)中的每幅圖中,在扇區(qū)的頁(yè)槽區(qū)16下方指出了有關(guān)的扇區(qū)的年齡。例如,在圖12 Ca)中,扇區(qū)O、扇區(qū)I和扇區(qū)2分別具有年齡2、年齡I和年齡O,指示扇區(qū)O是最老的扇區(qū)而扇區(qū)2是最年輕的扇區(qū)。圖12 (a)表示初始狀態(tài),其中扇區(qū)上的所有頁(yè)槽44都為“空閑”。扇區(qū)O、扇區(qū)I和扇區(qū)2分別具有年齡2、年齡I和年齡O。然后,逐頁(yè)地將虛擬頁(yè)0、2、4、1、3和5依次寫入閃速存儲(chǔ)器4,因此可以在圖12(b)中看出這些虛擬頁(yè)占用了扇區(qū)O (在寫入頁(yè)0、2、4和I時(shí)具有足夠的空間的最老的扇區(qū))和扇區(qū)I的一部分(在寫入頁(yè)3和5時(shí)具有足夠的空間的最老的扇區(qū))。寫入開始于最老的扇區(qū)中的最老的頁(yè)槽(最上面的),并且向著最新的扇區(qū)中的最新的頁(yè)槽(最下面的)逐個(gè)頁(yè)槽地進(jìn)行。然后虛擬頁(yè)O和I依次重寫入閃速存儲(chǔ)器4,因此可以在圖12 (c)中看出這些虛擬頁(yè)占據(jù)了扇區(qū)I中的最后兩個(gè)頁(yè)槽44。也就是說,逐頁(yè)地將它們寫入到具有足夠的空間的最老的扇區(qū)。在這時(shí),達(dá)到了空閑頁(yè)槽的限制(至少一個(gè)完整扇區(qū)),并且清理扇區(qū)O (最老的扇區(qū))。因?yàn)樘摂M頁(yè)O和I在扇區(qū)I中是有效的(并且因此在扇區(qū)O中是隱含地?zé)o效的),并且因?yàn)樯葏^(qū)O是最老的扇區(qū),所以在清理期間只需要從扇區(qū)O復(fù)制虛擬頁(yè)2和4(有效頁(yè))。可以在圖12 (d)中看出這兩個(gè)頁(yè)被寫入到具有足夠的空間的最老的扇區(qū),在本實(shí)例中是扇區(qū)
2。因此占用了扇區(qū)2中的前兩個(gè)頁(yè)槽44。由于扇區(qū)O不包含合法(B卩,需要的)數(shù)據(jù),因此扇區(qū)O可以被擦除。在圖12 Ce)中示出了擦除之后的狀態(tài)。 扇區(qū)O中的頁(yè)槽44現(xiàn)在再次為“空閑”。而且,因?yàn)樯葏^(qū)O剛被擦除,所以扇區(qū)O具有年齡0,而由于擦除操作,扇區(qū)I和扇區(qū)2的年齡增加I。將來的寫入將從扇區(qū)2 (其為具有足夠的空間的最老的扇區(qū))中的第一空閑頁(yè)槽開始,并且應(yīng)當(dāng)理解的是,將會(huì)以這種方式繼續(xù)寫入、清理和擦除。現(xiàn)在將闡述對(duì)上述的實(shí)施方式的修改,以幫助更好地理解本發(fā)明。為了理解本修改與上述實(shí)施方式之間的不同,返回參照識(shí)別表12,具體參照結(jié)合圖3說明的“原子”寫入,即,一次寫入單個(gè)位。再次簡(jiǎn)略地考慮圖3,在將扇區(qū)10作為用于擦除的目標(biāo)時(shí),通過寫入識(shí)別目標(biāo)扇區(qū)的一位來生成每個(gè)新的條目。這個(gè)動(dòng)作既將表?xiàng)l目標(biāo)記為使用中,又識(shí)別目標(biāo)扇區(qū)。因?yàn)橹恍枰晃?,所以目?biāo)扇區(qū)的編碼是“原子的”。也就是說,如果寫入一位被斷電所中斷,則有關(guān)的閃存單元將進(jìn)入該位被寫入或者沒有寫入的狀態(tài)。不存在中間狀態(tài)。本修改考慮了在閃速存儲(chǔ)器中寫入/存儲(chǔ)值時(shí)發(fā)生損壞的可能性。盡管從短期來看閃速存儲(chǔ)器一般是穩(wěn)定的,但是閃速存儲(chǔ)器隨著相當(dāng)長(zhǎng)的時(shí)間(例如,幾個(gè)月或者幾年)通常在一定程度上是不穩(wěn)定的,或者由于某些環(huán)境條件(例如,溫度極限)而造成的性能退化。因而,暴露于不同的環(huán)境條件(溫度、壓力、濕度、振動(dòng)等的極端條件)下或者老化的影響會(huì)使存儲(chǔ)器損壞。出于這種考慮,本修改考慮了下述情況,其中,將冗余代碼與標(biāo)志一起寫入(如圖3中所示出的,每個(gè)條目的項(xiàng)20、22、24、26和28中的每個(gè)項(xiàng)是這樣的標(biāo)志),以解決損壞的影響。因此,本修改考慮了使用多位這樣的標(biāo)志(即,具有內(nèi)置冗余的標(biāo)志)。本修改考慮了通過冗余代碼將相對(duì)于由斷電造成的中斷(或其他中斷事件)的魯棒性與保護(hù)不受較小的位錯(cuò)誤影響相結(jié)合。本修改還描述了如何將若干冗余代碼結(jié)合到一個(gè)數(shù)據(jù)字中,以使得該數(shù)據(jù)字可重新寫入,用于保護(hù)該數(shù)據(jù)字和其他存儲(chǔ)器不受突然斷電造成的中斷的影響,同時(shí)保護(hù)其不受例如I位錯(cuò)誤或者2位錯(cuò)誤的影響。注意,預(yù)先考慮了錯(cuò)誤糾正和檢測(cè)代碼(例如,具有附加的奇偶校驗(yàn)位的漢明碼),用于根據(jù)具有附加的冗余位的數(shù)據(jù)字來糾正I位錯(cuò)誤和/或檢測(cè)2位錯(cuò)誤。如同較早的實(shí)施方式一樣,本修改涉及通過全動(dòng)態(tài)分配將虛擬存儲(chǔ)器的塊加載并且存儲(chǔ)到物理閃速存儲(chǔ)器(被稱為EEPROM仿真)。該方法相對(duì)于突然斷電是安全的并且該方法可以在寫入序列期間可靠地檢測(cè)位錯(cuò)誤,并且可以在沒有被突然斷電中斷時(shí)檢測(cè)和/或糾正位錯(cuò)誤。出于簡(jiǎn)潔的原因,以下描述將主要集中在本修改與較早的實(shí)施方式之間的不同上,而不是重復(fù)較早的公開內(nèi)容的大量部分??梢哉J(rèn)為以上結(jié)合圖1和圖2詳細(xì)說明的設(shè)備和閃速存儲(chǔ)器架構(gòu)適用于本修改。然而,在本修改中,設(shè)置了至少四個(gè)扇區(qū),并且本修改中的識(shí)別表中的條目與圖3中描繪的條目不同。·圖13是實(shí)施本修改的電子設(shè)備(例如,計(jì)算設(shè)備)100的示意圖。電子設(shè)備100包括控制裝置102、閃速存儲(chǔ)器104和RAM106。這些元件可以與圖1中的對(duì)應(yīng)的元件對(duì)照,因此省略進(jìn)一步的描述。如上所述,在本實(shí)施方式中,閃速存儲(chǔ)器被布置成具有至少四個(gè)扇區(qū),但是其他實(shí)施方式可以具有不同數(shù)目(例如更大數(shù)目或更小數(shù)目)的扇區(qū)。數(shù)據(jù)被動(dòng)態(tài)即時(shí)地(例如,動(dòng)態(tài)地)存儲(chǔ)到扇區(qū)。圖14是閃速存儲(chǔ)器104的示意圖。閃速存儲(chǔ)器104被配置成具有四個(gè)扇區(qū)110,為了方便起見標(biāo)記為“扇區(qū)0”、“扇區(qū)1”、“扇區(qū)2”和“扇區(qū)3”。閃速存儲(chǔ)器4還可以被配置成具有多于四個(gè)扇區(qū),或者在本文中公開的一些方面中,少于四個(gè)扇區(qū)(例如,一個(gè)或兩個(gè)或三個(gè)扇區(qū))。每個(gè)扇區(qū)110被組織成具有三個(gè)主要的區(qū)域,即識(shí)別表112、頁(yè)關(guān)聯(lián)表114和頁(yè)槽區(qū)116。元件的這種布置可以與圖2中的布置對(duì)照,因此省略進(jìn)一步的描述。已經(jīng)關(guān)于圖2提供的描述通過進(jìn)行必要的修正而適用于圖14??梢詫?shí)現(xiàn)為算法(S卩,方法)的以下方法旨在決不將不完全擦除的扇區(qū)識(shí)別為有效。本實(shí)施方式利用識(shí)別表112來將關(guān)于目標(biāo)扇區(qū)(擦除過程的對(duì)象)的信息存儲(chǔ)在其他扇區(qū)中。然后如先前所描述的那樣,可以通過例如經(jīng)由多數(shù)決定法來查找各個(gè)扇區(qū)中的信息之間的一致(例如,相關(guān)),進(jìn)行例如在中斷事件之后的當(dāng)前擦除狀態(tài)的檢測(cè)。識(shí)別表12基本上由多個(gè)條目(其可以稱為槽)組成,多個(gè)條目中的每個(gè)條目與具體的擦除過程有關(guān)。當(dāng)扇區(qū)Iio被擦除時(shí),其識(shí)別表112中的所有條目被清除,并且針對(duì)每個(gè)后續(xù)擦除過程,在該表中生成條目。也就是說,當(dāng)開始新的擦除過程時(shí),將一個(gè)條目附加到每個(gè)識(shí)別表112 (包括目標(biāo)扇區(qū)中的識(shí)別表)中的條目列表。因?yàn)樵诓徊脸嘘P(guān)的扇區(qū)的其他內(nèi)容的情況下列表不能被擦除,所以只有生成的最后一個(gè)條目被認(rèn)為是有效的。
可以認(rèn)為該方法是增強(qiáng)方法,其除了在扇區(qū)的擦除期間保護(hù)數(shù)據(jù)不受突然斷電影響之外,還相對(duì)于已使用的表?xiàng)l目中的位錯(cuò)誤是安全的。在本實(shí)施方式中,如前所述,扇區(qū)識(shí)別表保存關(guān)于所包含的數(shù)據(jù)的“年齡”的信息。具體的扇區(qū)的“年齡”等于自從該具體的扇區(qū)被擦除起其他扇區(qū)被擦除的次數(shù)。在本實(shí)施方式中,至少直到已經(jīng)確定沒有發(fā)生中斷,或者直到在中斷之后已經(jīng)采取了恢復(fù)動(dòng)作,才使用冗余代碼處理。在可用的情況下,可以禁用錯(cuò)誤糾正代碼。換句話說,一旦確定使用本文中描述的方法已經(jīng)成功地寫入/擦除,或者一旦使用了如本文中所描述的中斷之后的恢復(fù)技術(shù),就可以使用冗余編碼技術(shù)(例如,以下關(guān)于圖18所討論的硬件 ECC)。
此外,重新寫入是可能的,S卩,已經(jīng)處于已寫入狀態(tài)的位可再次寫入為已寫入狀態(tài)(沒有中間的擦除),而不會(huì)產(chǎn)生錯(cuò)誤。此外,假定自然數(shù)m,并且假定扇區(qū)識(shí)別表中的標(biāo)志各自具有η位,其中n=2m+l。還假定,在由于除了不完全寫入之外的原因造成損壞的任何時(shí)候,扇區(qū)識(shí)別表中的所有標(biāo)志具有m位或更少的位。當(dāng)然,η可以大于2m+l,并且例如為偶數(shù);等式n=2m+l表示m相對(duì)于η的最大尺寸,其中可以使用本文中所考慮的多數(shù)決定法技術(shù)。因此將相應(yīng)地解釋本文中提供的等式。還在本實(shí)施方式中,設(shè)置了至少4個(gè)扇區(qū)。此外,扇區(qū)被給定順序,該順序在所有擦除過程中是靜態(tài)的(例如,硬連線的物理地址)??紤]到閃速存儲(chǔ)器通常將信息存儲(chǔ)在由浮柵晶體管制成的存儲(chǔ)單元陣列中,得出這些標(biāo)準(zhǔn)。當(dāng)中斷時(shí),可能這樣的單元將處于例如沒有完全寫入的浮動(dòng)狀態(tài),即,具有在真與假之間的劃分電平附近的儲(chǔ)存電荷電平。在此情況下,可以看到儲(chǔ)存值以無用且不可預(yù)測(cè)的方式隨著時(shí)間切換。例如由于以下原因,具有至少四個(gè)扇區(qū)且以給定的順序?qū)懭氲竭@些扇區(qū)是有用的。在具體的擦除過程中,可能有第一扇區(qū)正確地將用于該過程的目標(biāo)扇區(qū)以及另一扇區(qū)(由于在中斷的前一個(gè)這樣的過程之后的殘余浮動(dòng)狀態(tài))作為目標(biāo),第二扇區(qū)至第四扇區(qū)(目標(biāo)扇區(qū))中的一個(gè)扇區(qū)在擦除之后處于已擦除狀態(tài),其中至少兩個(gè)其他扇區(qū)將目標(biāo)扇區(qū)作為目標(biāo)。在這種情況下,雖然不能信任第一扇區(qū)的值,但是由于兩個(gè)扇區(qū)處于一致,可以在具體的擦除過程中斷之后執(zhí)行成功的恢復(fù)。圖15是對(duì)理解根據(jù)本修改的識(shí)別表112中的條目(槽)有用的示意圖。圖15(a)、圖15 (b)、圖15 (c)和圖15 (d)中的每幅圖代表單個(gè)這樣的條目。如先前所描述的那樣,扇區(qū)識(shí)別表中的每個(gè)條目識(shí)別擦除操作。當(dāng)開始新的擦除操作時(shí)將一個(gè)條目附加到列表。因?yàn)樵诓徊脸葏^(qū)的其他內(nèi)容的情況下列表也不能被擦除,所以只有最后一個(gè)條目有效。圖15 (a)對(duì)理解每個(gè)條目的組成部分有用。每個(gè)條目由擦除完成標(biāo)志120 (在本實(shí)施方式中為η位寬)和每個(gè)可用扇區(qū)的η位標(biāo)志122、124、126、128 (其識(shí)別作為有關(guān)的擦除過程的對(duì)象的扇區(qū)(目標(biāo)扇區(qū)))組成。在圖15 (a)中,項(xiàng)122、124、126和128被設(shè)置用于“扇區(qū)0”、“扇區(qū)1”、“扇區(qū)2”和“扇區(qū)3”,與圖14 一致(而如果設(shè)置了多于四個(gè)的扇區(qū)10,可以設(shè)置另外的標(biāo)志用于另外的扇區(qū)110)。為了在實(shí)現(xiàn)方式中簡(jiǎn)單起見,圖15 (a)中的標(biāo)志中的每個(gè)標(biāo)志為η位寬,S卩,它們具有相同的大小。標(biāo)志可以具有不同的大小(例如,每個(gè)標(biāo)志的η可以不同),這將導(dǎo)致更加復(fù)雜的實(shí)現(xiàn)方式。標(biāo)志還可以與具有一些其他目的的其他位鄰接或者與其一起存儲(chǔ)。如上所述,當(dāng)扇區(qū)被擦除時(shí),其識(shí)別表中的所有條目被清除。這可以用所有位為假來表示,與真相反。當(dāng)然,“真”和“假”表示邏輯狀態(tài),并且這些邏輯狀態(tài)到與物理值(高/低或者1/0)的映射取決于閃速存儲(chǔ)器4的硬件實(shí)現(xiàn)。盡管在圖3 (b)中和在其他較早的圖中,用已擦除值“O”表示假且用已寫入值“ I ”表示真,但是從這里開始使用字“真”和“假”本身。因此,圖15 (b)代表?xiàng)l目被清除且還沒有使用(自前一次擦除起)時(shí)的狀態(tài)。圖
15(c)代表已經(jīng)將“扇區(qū)I”作為用于擦除的目標(biāo)時(shí)的狀態(tài),因此“扇區(qū)I”是目標(biāo)扇區(qū)。注意,已完成標(biāo)志為假,代表擦除過程還沒有完成。圖15 (d)代表“扇區(qū)I”(目標(biāo)扇區(qū))已經(jīng)被擦除時(shí)的狀態(tài);注意,已完成標(biāo)志為真。標(biāo)志(η位)中的每個(gè)標(biāo)志是多數(shù)編碼的冗余。也就是說,當(dāng)標(biāo)志的位中的多于I(即,一半)的位為真時(shí),標(biāo)志被解釋為真,而當(dāng)標(biāo)志的位中的多于f (即,一半)的位為假時(shí),
標(biāo)志被解釋為假。因此,每個(gè)標(biāo)志可以容許高達(dá)Lf」個(gè)損壞位。下面的高斯括號(hào)(L」)表示地板函數(shù)。而且,如上所述,假定n=2m+l。閃存已擦除狀態(tài)表示表中的空的且還沒有使用的元素(條目)(所有標(biāo)志為假)。最后一個(gè)(有效的)條目為沒有完成的第一可用表?xiàng)l目(按寫入條目順序的最老的條目)。當(dāng)已完成標(biāo)志為真時(shí),認(rèn)為表?xiàng)l目已完成,而當(dāng)已完成標(biāo)志為假時(shí),認(rèn)為表?xiàng)l目未完成。如上所述,以固定的順序來進(jìn)行扇區(qū)識(shí)別表112的更新,例如,從具有最小的物理地址的扇區(qū)開始。為了簡(jiǎn)化進(jìn)一步的描述,該順序?qū)⒈患俣椤吧葏^(qū)0”、“扇區(qū)1”、“扇區(qū)2”,然后是“扇區(qū)3”。因?yàn)樵诟聵?biāo)志之前,每個(gè)標(biāo)志的位中的一些位可能處于已寫入狀態(tài)(真),或許由于損壞,所以可以通過重寫來進(jìn)行更新。
現(xiàn)在將描述本實(shí)施方式中所采用的擦除過程,并且應(yīng)當(dāng)理解的是,其與之前描述的擦除過程共享重要的相似性。當(dāng)扇區(qū)要被擦除時(shí),新條目被附加到所有的扇區(qū)的表中。通過寫入識(shí)別目標(biāo)扇區(qū)的η位(B卩,為真)來形成這些新條目中的每個(gè)條目。表中的空(未使用)的項(xiàng)或條目具有已擦除的閃存值。因此,通過單次閃存擦除操作來進(jìn)行擦除和重置表。圖16 (a)示出了用于擦除扇區(qū)的示例。扇區(qū)2將要被擦除。所有的扇區(qū)的表中的最后一個(gè)(最上面)條目被設(shè)置為索引2,指示扇區(qū)2為目標(biāo)扇區(qū)。為便于識(shí)別,這些最后的條目被示出為突出(emboldened),并且這些最后的條目是從底向頂讀取時(shí)沒有完成(已完成標(biāo)志為假)的第一條目。所有更高的(更后的)條目的全部標(biāo)志示出為假。在擦除完成之后,具有把扇區(qū)作為目標(biāo)的條目的這些扇區(qū)的已完成標(biāo)志被設(shè)置(SP,為真)。注意,在擦除期間目標(biāo)扇區(qū)(在本實(shí)例中為扇區(qū)2)的識(shí)別表被隱含地清除,因此不需要被設(shè)置為已完成。圖16 (b)示出了在擦除完成之后上述示例的表。圖16 (b)還示出了在下一次擦除嘗試之前的有效狀態(tài)。在圖16 (b)中,目標(biāo)扇區(qū)(即扇區(qū)2)的表被突出示出,其所有標(biāo)志為假。對(duì)于其他的扇區(qū),在16 (a)中突出的條目在圖16 (b)中被示出為已完成標(biāo)志為真。扇區(qū)2已經(jīng)被擦除。本實(shí)施方式還采用中止(或者正在中止)過程,在本文中也稱為無效過程。當(dāng)擦除過程的準(zhǔn)備階段被中止時(shí),存在多種情況(稍后將描述這樣的情況的識(shí)別)。在本實(shí)施方式中,除了針對(duì)若干標(biāo)志(即,指示多于一個(gè)的扇區(qū)為目標(biāo)扇區(qū))進(jìn)行等同于標(biāo)記目標(biāo)扇區(qū)的標(biāo)記、以及跳過(即,不進(jìn)行)對(duì)物理閃存扇區(qū)的擦除之外,以與擦除過程的方式類似的方式來進(jìn)行該中止過程。在中止過程的情況下,由此通過在表?xiàng)l目的每個(gè)表?xiàng)l目中將多于一個(gè)的扇區(qū)標(biāo)志寫入為真來進(jìn)行標(biāo)記。選擇了標(biāo)志中的哪個(gè)標(biāo)志是不相關(guān)的-優(yōu)選地,在每個(gè)表?xiàng)l目中標(biāo)記相同的標(biāo)志。因?yàn)榇颂幟枋龅闹兄惯^程依賴于對(duì)標(biāo)志進(jìn)行標(biāo)記(將它們?cè)O(shè)置為真),所以其要在標(biāo)記目標(biāo)扇區(qū)的階段期間進(jìn)行,并且可能只在該階段期間進(jìn)行。圖16 (C)不出了用于中止擦除準(zhǔn)備的不例:所有扇區(qū)的表中的最后一個(gè)(最上面)條目被設(shè)置為索引2和索引3,有效地指示扇區(qū)2和扇區(qū)3為目標(biāo)扇區(qū)并且因此不是指示需要中止。為了便于識(shí)別,這些最后的條目被突出示出,并且這些最后的條目是從底向頂讀取時(shí)沒有完成(已完成標(biāo)志為假)的第一條目。所有更高的(更后的)條目的全部標(biāo)志示出為假。在將所有扇區(qū)標(biāo)記用于中止之后,將已完成標(biāo)志(已完成標(biāo)志為真)與入到已經(jīng)在前一步中標(biāo)記的所有的條目。這是以與在上述的擦除過程中描述的方式相同的方式來進(jìn)行的,但是不擦除扇區(qū)。現(xiàn)在將詳細(xì)地考慮本實(shí)施方式中的不完全擦除的檢測(cè)。順便插 一句,注意,最后一個(gè)(有效的)條目為既不是空的也不是已完成(已完成標(biāo)志為假,指示沒有完成)的第一個(gè)表?xiàng)l目(即,最老的條目或者當(dāng)從圖16的底部向上讀取時(shí)到達(dá)的第一個(gè)條目)。 現(xiàn)在將考慮每個(gè)槽可以找到的各種值,從其中擦除過程沒有被中斷的情況開始。當(dāng)擦除過程沒有被斷電所中斷(B卩,擦除過程被成功地執(zhí)行)時(shí),自被擦除起還沒有被寫入的識(shí)別表的所有槽處于空狀態(tài)(這包括新擦除的扇區(qū)的所有槽、以及其他扇區(qū)的還沒有使用的所有槽)。這是因?yàn)?1.所有標(biāo)志為假,因?yàn)槊總€(gè)標(biāo)志的為真的位數(shù)
權(quán)利要求
1.一種電子設(shè)備,包括: 非易失性存儲(chǔ)器,其被配置成以存儲(chǔ)器部分寫入或者讀取,所述存儲(chǔ)器部分以一次一個(gè)扇區(qū)的方式被擦除,每個(gè)所述扇區(qū)包括多個(gè)所述部分,并且所述存儲(chǔ)器具有至少三個(gè)所述扇區(qū),所述扇區(qū)中的每個(gè)扇區(qū)適于與其他扇區(qū)無關(guān)地被擦除;以及 控制裝置,其能夠操作以控制所述扇區(qū)的擦除, 其中: 所述控制裝置被配置成將關(guān)于擦除過程的擦除信息存儲(chǔ)在除了所述扇區(qū)中的目標(biāo)扇區(qū)之外的多個(gè)扇區(qū)中,以使得能夠檢查所述扇區(qū)中的這樣的信息以在中斷事件之后建立適當(dāng)?shù)幕謴?fù)過程,所述擦除過程包括擦除所述目標(biāo)扇區(qū)。
2.根據(jù)權(quán)利要求1所述的電子設(shè)備,其中,所述多個(gè)扇區(qū)構(gòu)成除了所述目標(biāo)扇區(qū)之外的扇區(qū)中的所有扇區(qū)。
3.根據(jù)權(quán)利要求1或2所述的電子設(shè)備,其中,所述存儲(chǔ)器具有至少四個(gè)所述扇區(qū)。
4.根據(jù)上述權(quán)利要求中任一項(xiàng)所述的電子設(shè)備,其中,對(duì)于所述擦除過程,所述控制裝置能夠操作以將所述擦除信息存儲(chǔ)在所述扇區(qū)中的所有扇區(qū)中。
5.根據(jù)上述權(quán)利要求中任一項(xiàng)所述的電子設(shè)備,其中,對(duì)于所述擦除過程,所述控制裝置能夠操作以按照給定的順序?qū)⑺霾脸畔⒋鎯?chǔ)到有關(guān)的扇區(qū)。
6.根據(jù)權(quán)利要求5所述的 電子設(shè)備,其中,所述控制裝置被配置成針對(duì)每個(gè)擦除過程,按照相同的順序?qū)⑺霾脸畔⒋鎯?chǔ)到有關(guān)的扇區(qū)。
7.根據(jù)上述權(quán)利要求中任一項(xiàng)所述的電子設(shè)備,其中,所述擦除信息識(shí)別所述目標(biāo)扇區(qū)。
8.根據(jù)上述權(quán)利要求中任一項(xiàng)所述的電子設(shè)備,其中,所述控制裝置能夠操作以在進(jìn)行所述擦除之前存儲(chǔ)這樣的擦除信息,該擦除信息指示有待進(jìn)行所述擦除。
9.根據(jù)上述權(quán)利要求中任一項(xiàng)所述的電子設(shè)備,其中,所述控制裝置能夠操作以在進(jìn)行所述擦除之后存儲(chǔ)這樣的擦除信息,所述擦除信息指示已經(jīng)進(jìn)行了所述擦除。
10.根據(jù)權(quán)利要求8所述的電子設(shè)備,其中,在所述擦除之后,所述控制裝置能夠操作以更新在進(jìn)行所述擦除之前存儲(chǔ)在除了所述目標(biāo)扇區(qū)之外的扇區(qū)中的擦除信息,以指示已經(jīng)進(jìn)行了所述擦除。
11.根據(jù)上述權(quán)利要求中任一項(xiàng)所述的電子設(shè)備,其中,所述控制裝置被配置成在進(jìn)行所述擦除之前存儲(chǔ)這樣的擦除信息時(shí),通過將信息的η位目標(biāo)模式存儲(chǔ)在有關(guān)的扇區(qū)中的每個(gè)扇區(qū)的特定區(qū)域中來識(shí)別所述目標(biāo)扇區(qū),這些區(qū)域與所述目標(biāo)扇區(qū)相關(guān)聯(lián)。
12.根據(jù)上述權(quán)利要求中任一項(xiàng)所述的電子設(shè)備,其中,所述控制裝置被配置成在進(jìn)行所述擦除之前存儲(chǔ)這樣的擦除信息時(shí),通過將信息的η位非目標(biāo)模式存儲(chǔ)在有關(guān)的扇區(qū)中的每個(gè)扇區(qū)的特定區(qū)域中來將具體扇區(qū)識(shí)別為是除了所述目標(biāo)扇區(qū)之外的扇區(qū),這些區(qū)域與所述具體扇區(qū)相關(guān)聯(lián)。
13.根據(jù)上述權(quán)利要求中任一項(xiàng)所述的電子設(shè)備,其中,所述控制裝置被配置成在進(jìn)行所述擦除之前存儲(chǔ)這樣的擦除信息時(shí),通過將信息的η位未完成模式存儲(chǔ)在有關(guān)的扇區(qū)中的每個(gè)扇區(qū)的特定區(qū)域中來指示所述目標(biāo)扇區(qū)尚未被擦除,這些區(qū)域用于指示是否已經(jīng)進(jìn)行了所述擦除。
14.根據(jù)上述權(quán)利要求中任一項(xiàng)所述的電子設(shè)備,其中,所述控制裝置被配置成在進(jìn)行所述擦除之后存儲(chǔ)這樣的擦除信息時(shí),通過將信息的η位已完成模式存儲(chǔ)在有關(guān)的扇區(qū)中的每個(gè)扇區(qū)的特定區(qū)域中來指示所述目標(biāo)扇區(qū)已經(jīng)被擦除,這些區(qū)域用于指示是否已經(jīng)進(jìn)行了所述擦除。
15.根據(jù)權(quán)利要求11至14中任一項(xiàng)所述的電子設(shè)備,其中,η大于1,并且可選地η大于或等于2m+l,其中m為正整數(shù),并且其中,所述控制裝置被配置成:如果有關(guān)的位中的大多數(shù)位與所述目標(biāo)模式匹配,則將從所述存儲(chǔ)器讀取的所述η位模式視為是目標(biāo)模式;或者如果這些位中的大多數(shù)位與所述非目標(biāo)模式匹配,則將從所述存儲(chǔ)器讀取的所述η位模式視為是非目標(biāo)模式;或者如果這些位中的大多數(shù)位與所述未完成模式匹配,則將從所述存儲(chǔ)器讀取的所述η位模式視為是未完成模式;或者如果這些位中的大多數(shù)位與所述已完成模式匹配,則將從所述存儲(chǔ)器讀取的所述η位模式視為是已完成模式。
16.根據(jù)上述權(quán)利要求中任一項(xiàng)所述的電子設(shè)備,其中,所述擦除過程包括:將扇區(qū)作為用于擦除的目標(biāo);對(duì)識(shí)別所述目標(biāo)扇區(qū)的這樣的擦除信息進(jìn)行存儲(chǔ);擦除所述目標(biāo)扇區(qū);以及將指示已經(jīng)進(jìn)行了所述擦除的這樣的擦除信息存儲(chǔ)在除了所述目標(biāo)扇區(qū)之外的扇區(qū)中。
17.根據(jù)上述權(quán)利要求中任一項(xiàng)所述的電子設(shè)備,其中,在所述擦除過程之前,所述控制裝置能夠操作以將任何所需的信息從所述目標(biāo)扇區(qū)復(fù)制到另一所述扇區(qū)。
18.根據(jù)上述權(quán)利要求中任一項(xiàng)所述的電子設(shè)備,其中,所述控制裝置能夠操作以在所述中斷事件之后訪問存儲(chǔ)在所述扇區(qū)中的擦除信息,以及根據(jù)該訪問的信息在所述中斷事件之后建立適當(dāng)?shù)幕謴?fù)過程。
19.根據(jù)權(quán)利要求18所述的電子設(shè)備,其中,所述控制裝置被配置成:如果所訪問的信息指示所述扇區(qū)中的兩個(gè)或更多個(gè)扇區(qū)是所述目標(biāo)扇區(qū),則在所述中斷事件之后中止所述擦除過程。
20.根據(jù)權(quán)利要求18或19所述的電子設(shè)備,其中,根據(jù)所述訪問,所述控制裝置能夠操作以:在沒有扇區(qū)存儲(chǔ)將具體扇區(qū)識(shí)別為用于擦除的目標(biāo)扇區(qū)的擦除信息時(shí),確定不需要恢復(fù)過程。
21.根據(jù)權(quán)利要求18至20中任一項(xiàng)所述的電子設(shè)備,其中,根據(jù)所述訪問,所述控制裝置能夠操作以:在所述扇區(qū)中的至少一個(gè)扇區(qū)的所訪問的擦除信息將具體扇區(qū)識(shí)別為用于擦除的目標(biāo)扇區(qū)并且所述扇區(qū)中的至少兩個(gè)扇區(qū)沒有存儲(chǔ)將具體扇區(qū)識(shí)別為用于擦除的目標(biāo)扇區(qū)的擦除信息時(shí),確定擦除過程的部分或全部要作為恢復(fù)過程被重復(fù)。
22.根據(jù)權(quán)利要求21所述的電子設(shè)備,其中,所述控制裝置能夠操作以:在對(duì)所述目標(biāo)扇區(qū)的訪問顯示所述目標(biāo)扇區(qū)沒有處于完全擦除狀態(tài)時(shí),確定所述擦除過程的至少所述擦除要作為恢復(fù)過程被重復(fù)。
23.根據(jù)權(quán)利要求21或22所述的電子設(shè)備,其中,所述控制裝置能夠操作以:在對(duì)所述目標(biāo)扇區(qū)的訪問顯示所述目標(biāo)扇區(qū)處于完全擦除狀態(tài)時(shí),確定存儲(chǔ)在所述扇區(qū)中的擦除信息要作為恢復(fù)過程被更新,以指示已經(jīng)進(jìn)行了所述擦除。
24.根據(jù)權(quán)利要求18至23中任一項(xiàng)所述的電子設(shè)備,其中,根據(jù)所述訪問,所述控制裝置能夠操作以當(dāng)除了所述目標(biāo)扇區(qū)之外的至少所述多個(gè)扇區(qū)的所訪問的擦除信息將具體扇區(qū)識(shí)別為用于擦 除的目標(biāo)扇區(qū)時(shí),確定擦除過程的至少所述擦除要作為恢復(fù)過程被重復(fù)。
25.—種控制電子設(shè)備的方法,所述設(shè)備包括非易失性存儲(chǔ)器,其被配置成以存儲(chǔ)器部分寫入或者讀取,所述存儲(chǔ)器部分以一次一個(gè)扇區(qū)的方式被擦除,每個(gè)所述扇區(qū)包括多個(gè)所述部分,并且所述存儲(chǔ)器具有至少三個(gè)所述扇區(qū),所述扇區(qū)中的每個(gè)扇區(qū)適于與其他扇區(qū)無關(guān)地被擦除,所述方法包括: 將關(guān)于擦除過程的擦除信息存儲(chǔ)在除了所述扇區(qū)中的目標(biāo)扇區(qū)之外的多個(gè)扇區(qū)中,以使得能夠檢查所述扇區(qū)中的這樣的信息以在中斷事件之后建立適當(dāng)?shù)幕謴?fù)過程,所述擦除過程包括擦除所述目標(biāo)扇區(qū)。
26.一種程序,所述程序在電子設(shè)備的處理器上執(zhí)行時(shí)根據(jù)控制方法來控制所述設(shè)備,所述設(shè)備包括非易失性存儲(chǔ)器,所述非易失性存儲(chǔ)器被配置成以存儲(chǔ)器部分寫入或者讀取,所述存儲(chǔ)器部分以一次一個(gè)扇區(qū)的方式被擦除,每個(gè)所述扇區(qū)包括多個(gè)所述部分,并且所述存儲(chǔ)器具有至少三個(gè)所述扇區(qū),所述扇區(qū)中的每個(gè)扇區(qū)適于與其他扇區(qū)無關(guān)地被擦除,所述方法包括: 將關(guān)于擦除過程的擦除信息存儲(chǔ)在除了所述扇區(qū)中的目標(biāo)扇區(qū)之外的多個(gè)扇區(qū)中,以使得能夠檢查所述扇區(qū)中的這樣的信息以在中斷事件之后建立適當(dāng)?shù)幕謴?fù)過程,所述擦除過程包括擦除所述目標(biāo)扇區(qū)。
27.—種電子設(shè)備,包括: 存儲(chǔ)器,其被配置成以存儲(chǔ)器部分寫入或者讀取,所述存儲(chǔ)器部分以一次一個(gè)扇區(qū)的方式被擦除,該扇區(qū)或每個(gè)所述扇區(qū)包括多個(gè)所述部分,每個(gè)所述扇區(qū)具有由一個(gè)或更多個(gè)所述部分組成的多個(gè)頁(yè)槽,并且每個(gè)頁(yè)槽用于存儲(chǔ)數(shù)據(jù)頁(yè);以及 控制裝置,其能夠操作以監(jiān)視該扇區(qū)或每個(gè)所述扇區(qū)、以及動(dòng)態(tài)即時(shí)地根據(jù)這樣的監(jiān)視將用于存儲(chǔ)的下一個(gè)數(shù)據(jù)頁(yè)存儲(chǔ)到下一個(gè)可用頁(yè)槽, 其中: 所述控制裝置能夠操作以將關(guān)聯(lián)表存儲(chǔ)在該扇區(qū)或每個(gè)所述扇區(qū)中,該關(guān)聯(lián)表或每個(gè)所述關(guān)聯(lián)表詳述存儲(chǔ)在其扇區(qū)中的頁(yè); 該關(guān)聯(lián)表或每個(gè)所述關(guān)聯(lián)表包括每個(gè)占用的頁(yè)槽的條目,該條目或每個(gè)條目對(duì)應(yīng)于具體的頁(yè)槽,并且識(shí)別存儲(chǔ)在該頁(yè)槽中的數(shù)據(jù)頁(yè);以及 所述控制裝置能夠操作以將用于每個(gè)新存儲(chǔ)的數(shù)據(jù)頁(yè)的新條目添加到有關(guān)的關(guān)聯(lián)表,以形成條目列表或者擴(kuò)展現(xiàn)有的條目列表。
28.根據(jù)權(quán)利要求27所述的電子設(shè)備,包括硬件單元,所述硬件單元能夠操作以對(duì)該關(guān)聯(lián)表或每個(gè)所述關(guān)聯(lián)表進(jìn)行評(píng)估、以及針對(duì)一個(gè)或更多個(gè)所述頁(yè)槽指示下述中的至少一個(gè): (a)所述頁(yè)槽是否為空閑; (b)所述頁(yè)槽是否已經(jīng)完全寫入有對(duì)應(yīng)的數(shù)據(jù)頁(yè); (c)所述頁(yè)槽是否包含無效的數(shù)據(jù)頁(yè)并且應(yīng)該被忽略; Cd)存儲(chǔ)在所述頁(yè)槽中的所述數(shù)據(jù)頁(yè)的識(shí)別碼; Ce)存儲(chǔ)在所述頁(yè)槽中的所述數(shù)據(jù)頁(yè)的所述識(shí)別碼是否在頁(yè)識(shí)別碼的給定范圍內(nèi);以及 Cf)所述頁(yè)槽是否包含有效的數(shù)據(jù)頁(yè)。
29.一種控制電子設(shè)備的方法,所述電子設(shè)備包括存儲(chǔ)器,所述存儲(chǔ)器被配置成以存儲(chǔ)器部分寫入或者讀取,所述存儲(chǔ)器部分以一次一個(gè)扇區(qū)的方式被擦除,該扇區(qū)或每個(gè)所述扇區(qū)包括多個(gè)所述部分,每個(gè)所述扇區(qū)具有由一個(gè)或更多個(gè)所述部分組成的多個(gè)頁(yè)槽,并且每個(gè)頁(yè)槽用于存儲(chǔ)數(shù)據(jù)頁(yè),所述方法包括: 監(jiān)視該扇區(qū)或每個(gè)所述扇區(qū); 動(dòng)態(tài)即時(shí)地根據(jù)這樣的監(jiān)視,將用于存儲(chǔ)的下一個(gè)數(shù)據(jù)頁(yè)存儲(chǔ)到下一個(gè)可用頁(yè)槽;將關(guān)聯(lián)表存儲(chǔ)在該扇區(qū)或每個(gè)所述扇區(qū)中,該關(guān)聯(lián)表或每個(gè)所述關(guān)聯(lián)表詳述存儲(chǔ)在其扇區(qū)中的頁(yè)并且包括每個(gè)占用的頁(yè)槽的條目,該條目或每個(gè)條目對(duì)應(yīng)于具體的頁(yè)槽,并且識(shí)別存儲(chǔ)在該頁(yè)槽中的數(shù)據(jù)頁(yè);以及 將用于每個(gè)新存儲(chǔ)的數(shù)據(jù)頁(yè)的新條目添加到有關(guān)的關(guān)聯(lián)表,以形成條目列表或者擴(kuò)展現(xiàn)有的條目列表。
30.一種程序,所述程序在電子設(shè)備的處理器上執(zhí)行時(shí)根據(jù)控制方法來控制所述設(shè)備,所述電子設(shè)備包括存儲(chǔ)器,所述存儲(chǔ)器被配置成以存儲(chǔ)器部分寫入或者讀取,所述存儲(chǔ)器部分以一次一個(gè)扇區(qū)的方式被擦除,該扇區(qū)或每個(gè)所述扇區(qū)包括多個(gè)所述部分,每個(gè)所述扇區(qū)具有由一個(gè)或更多個(gè)所述部分組成的多個(gè)頁(yè)槽,并且每個(gè)頁(yè)槽用于存儲(chǔ)數(shù)據(jù)頁(yè),所述方法包括: 監(jiān)視該扇區(qū)或每個(gè)所述扇區(qū); 動(dòng)態(tài)即時(shí)地根據(jù)這樣的監(jiān)視,將用于存儲(chǔ)的下一個(gè)數(shù)據(jù)頁(yè)存儲(chǔ)到下一個(gè)可用頁(yè)槽;將關(guān)聯(lián)表存儲(chǔ)在該扇區(qū)或每個(gè)所述扇區(qū)中,該關(guān)聯(lián)表或每個(gè)所述關(guān)聯(lián)表詳述存儲(chǔ)在其扇區(qū)中的頁(yè)并且包括每個(gè)占用的頁(yè)槽的條目,該條目或每個(gè)條目對(duì)應(yīng)于具體的頁(yè)槽,并且識(shí)別存儲(chǔ)在該頁(yè)槽中的數(shù)據(jù)頁(yè);以及 將用于每個(gè)新存儲(chǔ)的數(shù)據(jù)頁(yè)的新條目添加到有關(guān)的關(guān)聯(lián)表,以形成條目列表或者擴(kuò)展現(xiàn)有的條目列表。
31.一種電子設(shè)備,包括: 第一存儲(chǔ)器; 作為非易失性存儲(chǔ)器的第二存儲(chǔ)器,所述非易失性存儲(chǔ)器被配置成以存儲(chǔ)器部分寫入或者讀取,所述存儲(chǔ)器部分以一次一個(gè)扇區(qū)的方式被擦除,該扇區(qū)或每個(gè)所述扇區(qū)包括多個(gè)所述部分并且用于存儲(chǔ)多個(gè)數(shù)據(jù)頁(yè),每個(gè)數(shù)據(jù)頁(yè)被對(duì)應(yīng)的頁(yè)識(shí)別碼所識(shí)別;以及 控制裝置,其能夠操作以將包括存儲(chǔ)在該扇區(qū)或每個(gè)扇區(qū)中的數(shù)據(jù)頁(yè)的信息的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)在所述第一存儲(chǔ)器中,所述數(shù)據(jù)結(jié)構(gòu)基于所述數(shù)據(jù)頁(yè)的特性而被組織, 其中: 其中所述數(shù)據(jù)結(jié)構(gòu)包括存儲(chǔ)在該扇區(qū)或每個(gè)扇區(qū)中的所述數(shù)據(jù)頁(yè)的位置的信息;以及所述控制裝置能夠操作以按照給定的順序?qū)⒂糜诖鎯?chǔ)的連續(xù)的數(shù)據(jù)頁(yè)存儲(chǔ)在該扇區(qū)或多個(gè)扇區(qū)的頁(yè)槽中,使得頁(yè)在該扇區(qū)或多個(gè)扇區(qū)中被排列的順序取決于這些頁(yè)被存儲(chǔ)的順序。
32.根據(jù)權(quán)利要求31所述的電子設(shè)備,其中,所述控制裝置能夠操作以將關(guān)聯(lián)表存儲(chǔ)在該扇區(qū)或每個(gè)所述扇區(qū)中,該關(guān)聯(lián)表或每個(gè)所述關(guān)聯(lián)表詳述存儲(chǔ)在其扇區(qū)中的頁(yè),并且其中,所述控制裝置能夠操作以利用該關(guān)聯(lián)表或每個(gè)關(guān)聯(lián)表來在初始化階段期間生成所述數(shù)據(jù)結(jié)構(gòu)的內(nèi)容。
33.根據(jù)權(quán)利要求32所述的電子設(shè)備,包括硬件單元,所述硬件單元能夠操作以對(duì)該關(guān)聯(lián)表或每個(gè)所述關(guān)聯(lián)表進(jìn)行評(píng)估,以及針對(duì)一個(gè)或更多個(gè)所述頁(yè)槽指示下述中的至少一個(gè): (a)所述頁(yè)槽是否為空閑; (b)所述頁(yè)槽是否已經(jīng)完全寫入有對(duì)應(yīng)的數(shù)據(jù)頁(yè); (c)所述頁(yè)槽是否包含無效的數(shù)據(jù)頁(yè)并且應(yīng)該被忽略; Cd)存儲(chǔ)在所述頁(yè)槽中的所述數(shù)據(jù)頁(yè)的識(shí)別碼; Ce)存儲(chǔ)在所述頁(yè)槽中的所述數(shù)據(jù)頁(yè)的所述識(shí)別碼是否在頁(yè)識(shí)別碼的給定范圍內(nèi);以及 Cf)所述頁(yè)槽是否包含有效的數(shù)據(jù)頁(yè)。
34.一種控制電子設(shè)備的方法,所述電子設(shè)備包括第一存儲(chǔ)器,并且包括作為非易失性存儲(chǔ)器的第二存儲(chǔ)器,所述非易失性存儲(chǔ)器被配置成以存儲(chǔ)器部分寫入或者讀取,所述存儲(chǔ)器部分以一次一個(gè)扇區(qū)的方式被擦除,該扇區(qū)或每個(gè)所述扇區(qū)包括多個(gè)所述部分并且用于存儲(chǔ)多個(gè)數(shù)據(jù)頁(yè),所述方法包括: 將包括存儲(chǔ)在該扇區(qū)或每個(gè)扇區(qū)中的數(shù)據(jù)頁(yè)的信息的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)在所述第一存儲(chǔ)器中,所述數(shù)據(jù)結(jié)構(gòu)基于所述數(shù)據(jù)頁(yè)的特性而被組織,并且所述數(shù)據(jù)結(jié)構(gòu)包括存儲(chǔ)在該扇區(qū)或每個(gè)扇區(qū)中的所述數(shù)據(jù)頁(yè)的位置的信息;以及 按照給定的順序?qū)⒂糜诖鎯?chǔ)的連續(xù)的數(shù)據(jù)頁(yè)存儲(chǔ)在該扇區(qū)或多個(gè)扇區(qū)的頁(yè)槽中,使得頁(yè)在該扇區(qū)或多個(gè)扇區(qū)中被排列的順序取決于這些頁(yè)被存儲(chǔ)的順序。
35.一種程序,所述程序在電子設(shè)備的處理器上執(zhí)行時(shí)根據(jù)控制方法來控制所述設(shè)備,所述電子設(shè)備包括第一存儲(chǔ)器,并且包括作為非易失性存儲(chǔ)器的第二存儲(chǔ)器,所述非易失性存儲(chǔ)器被配置成以存儲(chǔ)器部分寫入或者讀取,所述存儲(chǔ)器部分以一次一個(gè)扇區(qū)的方式被擦除,該扇區(qū)或每個(gè)所述扇區(qū)包括多個(gè)所述部分并且用于存儲(chǔ)多個(gè)數(shù)據(jù)頁(yè),所述方法包括: 將包括存儲(chǔ)在該扇區(qū)或每個(gè)扇區(qū)中的數(shù)據(jù)頁(yè)的信息的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)在所述第一存儲(chǔ)器中,所述數(shù)據(jù)結(jié)構(gòu)基于所述數(shù)據(jù)頁(yè)的特性而被組織,并且所述數(shù)據(jù)結(jié)構(gòu)包括存儲(chǔ)在該扇區(qū)或每個(gè)扇區(qū)中的所述數(shù)據(jù)頁(yè)的位置的信息;以及 按照給定的順序?qū)⒂糜诖鎯?chǔ)的連續(xù)的數(shù)據(jù)頁(yè)存儲(chǔ)在該扇區(qū)或多個(gè)扇區(qū)的頁(yè)槽中,使得頁(yè)在該扇區(qū)或多個(gè)扇區(qū)中被排列的順序取決于這些頁(yè)被存儲(chǔ)的順序。
全文摘要
一種電子設(shè)備,包括非易失性存儲(chǔ)器(4),其被配置成以存儲(chǔ)器部分寫入或者讀取,所述存儲(chǔ)器部分以一次一個(gè)扇區(qū)的方式被擦除,每個(gè)所述扇區(qū)(10)包括多個(gè)所述部分,并且所述存儲(chǔ)器具有至少三個(gè)所述扇區(qū),所述扇區(qū)中的每個(gè)扇區(qū)適于與其他扇區(qū)無關(guān)地被擦除;以及控制裝置,其能夠操作以控制扇區(qū)的擦除,其中所述控制裝置被配置成將關(guān)于擦除過程的擦除信息存儲(chǔ)在除了所述扇區(qū)中的目標(biāo)扇區(qū)之外的多個(gè)扇區(qū)中,以使得能夠檢查扇區(qū)中的這樣的信息以在中斷事件之后建立適當(dāng)?shù)幕謴?fù)過程,擦除過程包括擦除目標(biāo)扇區(qū)。
文檔編號(hào)G11C16/16GK103229245SQ201180046649
公開日2013年7月31日 申請(qǐng)日期2011年7月26日 優(yōu)先權(quán)日2010年7月28日
發(fā)明者理查德·蘭登巴赫, 馬克·維拉姆, 哈特穆特·斯特姆, 卡伊·迪芬巴赫 申請(qǐng)人:富士通半導(dǎo)體歐洲有限公司