本發(fā)明是關(guān)于非揮發(fā)性存儲(chǔ)器的儲(chǔ)存裝置與控制器,且特別是關(guān)于具有異常狀況后修復(fù)功能的非揮發(fā)性存儲(chǔ)器的儲(chǔ)存裝置與控制器。
背景技術(shù):
快閃存儲(chǔ)器等非揮發(fā)性存儲(chǔ)器近年來(lái)快速發(fā)展,并且出現(xiàn)在各式各樣的電子裝置。目前看來(lái),接下來(lái)不管是容量或是技術(shù)的發(fā)展,還會(huì)繼續(xù)加強(qiáng)。一旦越來(lái)越多的數(shù)據(jù)被放在這類(lèi)的非揮發(fā)性存儲(chǔ)器,為了確保儲(chǔ)存數(shù)據(jù)的正確性與安全性,如果發(fā)生異常現(xiàn)象,例如突然斷電等,提供有效而且可靠的修復(fù)機(jī)制也就越來(lái)越重要。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種非揮發(fā)性儲(chǔ)存裝置,包括一非揮發(fā)性存儲(chǔ)器,劃分成多個(gè)實(shí)體區(qū)塊,每一實(shí)體區(qū)塊劃分成多個(gè)實(shí)體頁(yè);一連接界面,供連接至一主機(jī);以及一控制器,其中該控制器選定一個(gè)實(shí)體區(qū)塊作為一操作實(shí)體區(qū)塊,當(dāng)收到該主機(jī)的一寫(xiě)入命令,將對(duì)應(yīng)該寫(xiě)入命令的數(shù)據(jù)寫(xiě)入該操作實(shí)體區(qū)塊;當(dāng)該控制器在正常讀取該操作實(shí)體區(qū)塊時(shí),如果無(wú)法讀取數(shù)據(jù),會(huì)啟動(dòng)不同電位來(lái)進(jìn)行一重試機(jī)制,但在一異常狀態(tài)后進(jìn)行一修復(fù)操作時(shí),關(guān)閉該重試機(jī)制,透過(guò)一預(yù)設(shè)電位讀取該操作實(shí)體區(qū)塊上次最后寫(xiě)入的一實(shí)體頁(yè),并且檢查該實(shí)體頁(yè)的錯(cuò)誤驗(yàn)證碼,如果該錯(cuò)誤驗(yàn)證碼顯示有錯(cuò)誤發(fā)生,啟動(dòng)該重試機(jī)制用不同電位再嘗試重新讀取該實(shí)體頁(yè),并且重新程序化該實(shí)體頁(yè)。
本發(fā)明提供一種控制器,用于一非揮發(fā)性儲(chǔ)存裝置,該非揮發(fā)性儲(chǔ)存裝置包含一非揮發(fā)性存儲(chǔ)器與一連接界面,該非揮發(fā)性儲(chǔ)存器劃分成多個(gè)實(shí)體區(qū)塊,每一實(shí)體區(qū)塊劃分成多個(gè)實(shí)體頁(yè),該連接界面連接一主機(jī),其中該控制器選定一個(gè)實(shí)體區(qū)塊作為一操作實(shí)體區(qū)塊,當(dāng)收到該主機(jī)的一寫(xiě)入命令,將對(duì)應(yīng)該寫(xiě)入命令的數(shù)據(jù)寫(xiě)入該操作實(shí)體區(qū)塊;當(dāng)該控制器在正常讀取該操作實(shí)體區(qū)塊時(shí),如果無(wú)法讀取數(shù)據(jù),會(huì)啟動(dòng)不同電位來(lái)進(jìn)行一重試機(jī)制,但在一異常狀態(tài)后進(jìn)行一修復(fù)操作時(shí),關(guān)閉該 重試機(jī)制,透過(guò)一預(yù)設(shè)電位讀取該操作實(shí)體區(qū)塊上次最后寫(xiě)入的一實(shí)體頁(yè),并且檢查該實(shí)體頁(yè)的錯(cuò)誤驗(yàn)證碼,如果該錯(cuò)誤驗(yàn)證碼顯示有錯(cuò)誤發(fā)生,啟動(dòng)該重試機(jī)制用不同電位再嘗試重新讀取該實(shí)體頁(yè),并且重新程序化該實(shí)體頁(yè)。
附圖說(shuō)明
圖1舉例說(shuō)明根據(jù)本發(fā)明第一實(shí)施例的使用方式。
圖2舉例說(shuō)明根據(jù)發(fā)明第一實(shí)施例的一種實(shí)作示意圖。
圖3舉例說(shuō)明實(shí)體區(qū)塊與頁(yè)之間的關(guān)聯(lián)。
圖4舉例說(shuō)明邏輯區(qū)塊被分成三種區(qū)域。
圖5舉例說(shuō)明邏輯區(qū)塊跟實(shí)體區(qū)塊之間的對(duì)應(yīng)關(guān)系。
圖6舉例說(shuō)明邏輯區(qū)塊和實(shí)體區(qū)塊之間的關(guān)聯(lián)。
圖7例示一個(gè)NAND結(jié)構(gòu)快閃存儲(chǔ)器的存儲(chǔ)元件的一個(gè)區(qū)塊。
圖8是一個(gè)三層式儲(chǔ)存單元(TLC)的快閃存儲(chǔ)器儲(chǔ)存單元存放電量跟操作電壓的示意圖。
圖9例示如果對(duì)儲(chǔ)存單元施加操作電壓VT_1所可能發(fā)生的情形。
圖10例示在一次的讀取操作時(shí),依序使用7個(gè)不同的電壓對(duì)儲(chǔ)存單元進(jìn)行讀取操作。
圖11例示用來(lái)找CSB的方法。
圖12例示用來(lái)找MSB的方法。
圖13例示一種修復(fù)操作的實(shí)施例。
符號(hào)說(shuō)明
10:電腦; 12:隨身碟;
20:主機(jī); 22:數(shù)據(jù)儲(chǔ)存裝置;
24:存儲(chǔ)器模塊; 41:系統(tǒng)區(qū)塊群組;
43:數(shù)據(jù)區(qū)塊群組; 45:備用區(qū)塊群組;
102:USB傳輸介面; 201:管理模塊;
203:第一傳輸介面; 221:微控制器;
223:存儲(chǔ)器管理模塊; 225:重組編碼模塊;
227:第二傳輸介面; 229:緩沖存儲(chǔ)器;
231:第一模塊介面; 241:第二模塊介面;
243:控制電路; 245:存儲(chǔ)器區(qū)塊陣列;
130~132P、PB0~PB9:實(shí)體區(qū)塊;
P1~P12:頁(yè);
LB0~LB3:邏輯區(qū)塊;
1321、1322、P_1~P_N:數(shù)據(jù)頁(yè);
VG_0~VG_N:電壓;
M_1~M_K:存儲(chǔ)單元;
VT_1~VT_7、VT_1’~VT_7’:操作電壓;
VLSB、VCSB1、VCSB2、VMSB1~VMSB4:電壓;
L0~L7:區(qū)間;
1301、1303、1305、1307、1309、1311、1313:步驟。
具體實(shí)施方式
本發(fā)明的實(shí)施例是一種非揮發(fā)性儲(chǔ)存裝置跟其中的控制器,例如一種閃存外接碟或一種閃存外接硬盤(pán)。這個(gè)非揮發(fā)性儲(chǔ)存裝置可透過(guò)USB、SATA等連接界面連接到一主機(jī),作為該主機(jī)的存儲(chǔ)裝置。在非揮發(fā)性儲(chǔ)存裝置包含一個(gè)或多個(gè)非揮發(fā)性存儲(chǔ)器,也可包括一個(gè)或多個(gè)隨機(jī)讀取存儲(chǔ)器或傳統(tǒng)磁性硬碟。主機(jī)透過(guò)連接界面將存取命令,例如讀取或?qū)懭朊顐鞯竭@個(gè)非揮發(fā)性儲(chǔ)存裝置??刂破鞲鶕?jù)這些讀取或?qū)懭朊睿瑢?duì)于存儲(chǔ)器進(jìn)行操作。
為了加快閃存存儲(chǔ)器的整體存取速度或是減少耗損,可以透過(guò)設(shè)置一些隨機(jī)讀取存儲(chǔ)器作為快取或是緩存。換言之,有些數(shù)據(jù)并不是直接寫(xiě)入到閃存存儲(chǔ)器,而是暫時(shí)先寫(xiě)入到隨機(jī)讀取存儲(chǔ)器。另一種可能的做法是,將速度比較快的單層(SLC)閃存存儲(chǔ)器作為第一階的快取,另外配置比較便宜的多層(MLC)閃存存儲(chǔ)器實(shí)際存放大量數(shù)據(jù)。
在本發(fā)明的一個(gè)實(shí)施例中,對(duì)于單層閃存存儲(chǔ)器與多層閃存存儲(chǔ)器,在異常狀態(tài)結(jié)束后可根據(jù)其穩(wěn)定性采取不同的操作。具體來(lái)說(shuō),對(duì)于多層閃存存儲(chǔ)器在異常狀態(tài)結(jié)束后,對(duì)于先前的實(shí)體區(qū)塊,可以整個(gè)不再繼續(xù)寫(xiě)入,而采用新的實(shí)體區(qū)塊繼續(xù)進(jìn)行操作。
相對(duì)的,對(duì)于單層閃存存儲(chǔ)器,在異常狀態(tài)結(jié)束后,控制器需要對(duì)于先前實(shí)體區(qū)塊的最后實(shí)體頁(yè)進(jìn)行對(duì)應(yīng)的處理。
以下將先介紹這些實(shí)施例所可適用的架構(gòu),之后透過(guò)圖示解釋這些實(shí)施例的概念。
請(qǐng)參照?qǐng)D1,其舉例示范根據(jù)本發(fā)明第一實(shí)施例的使用示意圖。
電腦10具有USB傳輸介面102,并且電腦10透過(guò)USB傳輸介面102對(duì)隨身碟12進(jìn)行數(shù)據(jù)存取的操作。這個(gè)例子只是作為說(shuō)明,并非用于限制本發(fā)明的范圍。舉例來(lái)說(shuō),電腦10可替換成各種電子裝置,例如手機(jī)、平板電腦、電視、相機(jī)等各類(lèi)需要數(shù)據(jù)儲(chǔ)存裝置的電子設(shè)備。隨身碟12可替換成連接在電腦10外部的其他類(lèi)別外接儲(chǔ)存裝置,也可替換成固定安裝在電腦內(nèi)部的內(nèi)部?jī)?chǔ)存裝置。USB傳輸介面102可替換成各種數(shù)據(jù)傳輸介面,例如IEEE1394介面、SATA介面、MS介面、MMC介面、SD介面、CF介面、IDE介面、PCI介面等。
以隨身碟、外接硬碟或是內(nèi)接磁盤(pán)或是快閃盤(pán)為例,當(dāng)這些數(shù)據(jù)儲(chǔ)存裝置經(jīng)由傳輸介面被連接到電腦等電子裝置時(shí),電腦等電子裝置會(huì)對(duì)這些數(shù)據(jù)儲(chǔ)存裝置進(jìn)行數(shù)據(jù)讀取,以判斷這些數(shù)據(jù)儲(chǔ)存裝置是否已經(jīng)格式化。如果尚未格式化,電腦等電子裝置通常會(huì)詢問(wèn)使用者是否對(duì)數(shù)據(jù)儲(chǔ)存裝置進(jìn)行格式化操作。當(dāng)使用者決定對(duì)數(shù)據(jù)儲(chǔ)存裝置進(jìn)行格式化,電腦等電子裝置可發(fā)出命令給數(shù)據(jù)儲(chǔ)存裝置,由數(shù)據(jù)儲(chǔ)存裝置自行按照命令進(jìn)行格式化。另一種做法是,電腦等電子裝置會(huì)提供格式化所需的細(xì)節(jié)控制指令,例如在數(shù)據(jù)儲(chǔ)存裝置中建立檔案對(duì)照表、預(yù)設(shè)數(shù)值填寫(xiě)等等。
請(qǐng)參照?qǐng)D2,其舉例示范圖1對(duì)應(yīng)的裝置內(nèi)部架構(gòu)的一種實(shí)作方式。
主機(jī)20具有管理模塊201與第一傳輸介面203。主機(jī)20透過(guò)管理模塊201的硬件或軟體或軟體硬件的組合,經(jīng)由第一傳輸介面203存取數(shù)據(jù)儲(chǔ)存裝置22。這里提到的主機(jī)20可以對(duì)應(yīng)到圖1的電腦10。其中管理模塊201的范例包括在主機(jī)上執(zhí)行,負(fù)責(zé)檔案與數(shù)據(jù)儲(chǔ)存的操作系統(tǒng)、對(duì)應(yīng)的驅(qū)動(dòng)程序以及相關(guān)的控制電路的組合。
數(shù)據(jù)儲(chǔ)存裝置22則具有第二傳輸介面227、微控制器221、緩沖存儲(chǔ)器229、存儲(chǔ)器管理模塊223、重組編碼模塊225以及第一模塊介面231。數(shù)據(jù)儲(chǔ)存裝置22還具有存儲(chǔ)器模塊24,而存儲(chǔ)器模塊24則具有第二模塊介面241、控制電路243與存儲(chǔ)器區(qū)塊陣列245。
在這個(gè)范例中,第二傳輸介面227與主機(jī)20的第一傳輸介面203對(duì)應(yīng),提供例如機(jī)械、電子跟相關(guān)的信號(hào)傳輸處理。緩沖存儲(chǔ)器227作為數(shù)據(jù)儲(chǔ)存裝置22在讀出跟寫(xiě)入數(shù)據(jù)時(shí),作為信號(hào)傳輸過(guò)程的緩沖或是建構(gòu)快取架構(gòu)使用。整個(gè)數(shù)據(jù)儲(chǔ) 存裝置22的運(yùn)作則主要由微控制器221執(zhí)行預(yù)定的指令碼,在適當(dāng)?shù)臅r(shí)候產(chǎn)生適當(dāng)?shù)目刂菩盘?hào)來(lái)控制各個(gè)元件的操作。存儲(chǔ)器管理模塊223與重組編碼模塊225可透過(guò)電路硬件來(lái)實(shí)作,或透過(guò)電路配合給微控制器221執(zhí)行的指令碼進(jìn)行運(yùn)作,也可全部透過(guò)對(duì)應(yīng)的指令碼實(shí)作,由微控制器221執(zhí)行。
第一模塊介面231用來(lái)跟存儲(chǔ)器模塊24進(jìn)行溝通。存儲(chǔ)器模塊24內(nèi)的第二模塊介面241跟第一模塊介面231對(duì)應(yīng),控制電路243根據(jù)微控制器221的指令對(duì)存儲(chǔ)器區(qū)塊陣列245進(jìn)行存取。存儲(chǔ)器區(qū)塊陣列245可包括多個(gè)個(gè)快閃存儲(chǔ)器實(shí)體區(qū)塊。
存儲(chǔ)器管理模塊223包括處理邏輯跟對(duì)照表格,用來(lái)將存儲(chǔ)器區(qū)塊陣列245的實(shí)體區(qū)塊跟邏輯區(qū)塊進(jìn)行比對(duì)紀(jì)錄。此外,數(shù)據(jù)儲(chǔ)存裝置22也可以包括錯(cuò)誤更正模塊(未圖示)等。
其中,重組編碼模塊225負(fù)責(zé)對(duì)寫(xiě)入存儲(chǔ)器模塊24的原始數(shù)據(jù)進(jìn)行重組編碼,產(chǎn)生對(duì)應(yīng)的重組編碼數(shù)據(jù),以及對(duì)于從存儲(chǔ)器模塊24讀出的重組編碼數(shù)據(jù)進(jìn)行反重組編碼,以還原回原始數(shù)據(jù)的數(shù)值。這包括對(duì)于特定位置的位元進(jìn)行位置交換、反相部分位置的位元、對(duì)于奇數(shù)地址跟偶數(shù)地址的數(shù)據(jù)用不同的方式進(jìn)行反重組編碼等等。
重組編碼的目的可以包括數(shù)據(jù)的穩(wěn)定性。舉例來(lái)說(shuō),在快閃存儲(chǔ)器中,假如相鄰單元存放的數(shù)值相同,例如都是0或都是1,有可能會(huì)因?yàn)殡娮犹匦?,影響到?chǔ)存數(shù)據(jù)存放的穩(wěn)定性。換言之,透過(guò)進(jìn)行重組編碼,是相鄰單元存放的數(shù)字可以盡量是0與1交錯(cuò),就能增加數(shù)據(jù)存放的穩(wěn)定性。因此,具有重組編碼功能,就能使用成本更低的快閃存儲(chǔ)器,而仍能維持一定的儲(chǔ)存品質(zhì)。
重組編碼也可以基于各種其他的目的,例如避免存在數(shù)據(jù)儲(chǔ)存裝置的數(shù)據(jù)被未經(jīng)授權(quán)者讀取等等。重組編碼也可以使用任何目前已經(jīng)知道或日后開(kāi)發(fā)的各種編碼方式,只要能夠?qū)⒃紨?shù)據(jù)進(jìn)行編碼、解碼后再還原回原始數(shù)據(jù),都算是重組編碼的范圍。
請(qǐng)參照?qǐng)D3,其舉例說(shuō)明在快閃存儲(chǔ)器中,實(shí)體區(qū)塊與頁(yè)之間的關(guān)系。
在圖3中,總共有四個(gè)實(shí)體區(qū)塊PB1、PB2、PB3跟PB4。每個(gè)實(shí)體區(qū)塊里頭進(jìn)一步區(qū)隔成多個(gè)個(gè)頁(yè),P1、P2、P3到P12。在這個(gè)范例中,一個(gè)實(shí)體區(qū)塊對(duì)應(yīng)到12個(gè)頁(yè),當(dāng)然,在實(shí)際的設(shè)計(jì)中,一個(gè)實(shí)體區(qū)塊包括的頁(yè)數(shù)目可以作各種不同的調(diào)整。在不同的應(yīng)用環(huán)境中,有可能對(duì)于實(shí)體區(qū)塊、頁(yè)給予不同的名稱,或甚 至對(duì)于實(shí)體區(qū)塊跟頁(yè)進(jìn)行分組。這些都是熟悉此項(xiàng)技術(shù)領(lǐng)域的人所熟悉的,所以在此不再贅述。
對(duì)于快閃存儲(chǔ)器來(lái)說(shuō),例如NAND快閃存儲(chǔ)器或是NOR快閃存儲(chǔ)器,對(duì)于沒(méi)有使用過(guò)的快閃存儲(chǔ)器要進(jìn)行數(shù)據(jù)寫(xiě)入動(dòng)作前,實(shí)體區(qū)塊必須先進(jìn)行抹除動(dòng)作。抹除動(dòng)作以實(shí)體區(qū)塊作為基本單位,而寫(xiě)入則可以頁(yè)作為基本單位。經(jīng)過(guò)抹除過(guò)的實(shí)體區(qū)塊接著就能對(duì)想寫(xiě)入的頁(yè)進(jìn)行數(shù)據(jù)寫(xiě)入。然而,如果某個(gè)頁(yè)已經(jīng)被進(jìn)行寫(xiě)入操作,要再進(jìn)行寫(xiě)入操作的話,就必須先對(duì)包括這個(gè)頁(yè)的實(shí)體區(qū)塊進(jìn)行抹除的處理。
由于實(shí)體區(qū)塊的范圍大于頁(yè)的范圍,所以,如果要進(jìn)行上述曾經(jīng)寫(xiě)入過(guò)的頁(yè)再進(jìn)行寫(xiě)入時(shí),就必須先進(jìn)行數(shù)據(jù)的搬移。換言之,對(duì)于邏輯上同樣地址的數(shù)據(jù),可能在數(shù)據(jù)寫(xiě)入跟重新寫(xiě)入的過(guò)程,從一個(gè)實(shí)體區(qū)塊被搬移到另一個(gè)實(shí)體區(qū)塊。
接著,請(qǐng)參照?qǐng)D4,其示范一種將實(shí)體區(qū)塊進(jìn)行分類(lèi)的做法。
所有的實(shí)體區(qū)塊被區(qū)分成三類(lèi),系統(tǒng)區(qū)塊群組41、數(shù)據(jù)區(qū)塊群組43跟備用區(qū)塊群組45。系統(tǒng)區(qū)塊群組41包括用來(lái)存放邏輯區(qū)塊跟實(shí)體區(qū)塊的對(duì)照表、微控制器的指令碼、各種指標(biāo)等系統(tǒng)數(shù)據(jù)。除了系統(tǒng)區(qū)塊群組41,數(shù)據(jù)區(qū)塊群組43則指那些用來(lái)實(shí)際存放數(shù)據(jù)的實(shí)體區(qū)塊。備用區(qū)塊群組45則用來(lái)存放用來(lái)作數(shù)據(jù)搬移與備用的實(shí)體區(qū)塊。
如上所述,當(dāng)進(jìn)行對(duì)曾經(jīng)寫(xiě)過(guò)的頁(yè)要再進(jìn)行寫(xiě)入時(shí),需要先進(jìn)行抹除操作才能進(jìn)行。換言之,這個(gè)頁(yè)所處的實(shí)體區(qū)塊的其他頁(yè)的數(shù)據(jù)也要一起先復(fù)制到別的實(shí)體區(qū)塊,這個(gè)實(shí)體區(qū)塊就從備用區(qū)塊群組45中挑選。等數(shù)據(jù)復(fù)制到這個(gè)備用區(qū)塊群組45的實(shí)體區(qū)塊后,這個(gè)實(shí)體區(qū)塊被分類(lèi)到數(shù)據(jù)區(qū)塊群組43,而原先的實(shí)體區(qū)塊則經(jīng)過(guò)抹除操作被分類(lèi)到備用區(qū)塊群組45。
換言之,不但對(duì)應(yīng)到邏輯地址的實(shí)體區(qū)塊可能一直在改變,甚至哪個(gè)實(shí)體區(qū)塊對(duì)應(yīng)到哪個(gè)區(qū)域也在改變。因此系統(tǒng)必須紀(jì)錄邏輯區(qū)塊與實(shí)體區(qū)塊之間的對(duì)應(yīng)關(guān)系。
請(qǐng)參照?qǐng)D5,其例示邏輯區(qū)塊與實(shí)體區(qū)塊的對(duì)應(yīng)關(guān)系。在這個(gè)例子中,邏輯區(qū)塊LB0對(duì)應(yīng)到實(shí)體區(qū)塊PB5,邏輯區(qū)塊LB1對(duì)應(yīng)到實(shí)體區(qū)塊PB0,邏輯區(qū)塊LB2對(duì)應(yīng)到實(shí)體區(qū)塊PB6,而邏輯區(qū)塊LB3則對(duì)應(yīng)到實(shí)體區(qū)塊PB9。
數(shù)據(jù)儲(chǔ)存裝置可以透過(guò)對(duì)照表或其他方式來(lái)儲(chǔ)存這些對(duì)應(yīng)關(guān)系。
圖6舉例示范用一個(gè)對(duì)照表來(lái)紀(jì)錄邏輯區(qū)塊跟實(shí)體區(qū)塊之間的對(duì)應(yīng)關(guān)系。在圖6的例子中,邏輯區(qū)塊435對(duì)應(yīng)到實(shí)體區(qū)塊221,邏輯區(qū)塊212對(duì)應(yīng)到實(shí)體區(qū)塊779,邏輯區(qū)塊112對(duì)應(yīng)到實(shí)體區(qū)塊832,并且邏輯區(qū)塊554對(duì)應(yīng)到實(shí)體區(qū)塊21。
請(qǐng)參考圖7,其例示一個(gè)NAND結(jié)構(gòu)快閃存儲(chǔ)器的存儲(chǔ)元件的一個(gè)區(qū)塊(block)。在這個(gè)區(qū)塊中具有一定數(shù)目的數(shù)據(jù)頁(yè)(page),亦即P_0、P_1、P_2到P_N。每一個(gè)數(shù)據(jù)頁(yè)則具有M_0、M_1、M_2到M_K個(gè)存儲(chǔ)單元(cell)。透過(guò)對(duì)每數(shù)據(jù)頁(yè)設(shè)定適當(dāng)?shù)碾妷篤G_0、VG_1、VG_2到VG_N,可讀取存于每個(gè)儲(chǔ)存單元的浮動(dòng)閘(Floating Gate)的電位,進(jìn)而得到每個(gè)儲(chǔ)存單元所存放的數(shù)據(jù)。
對(duì)于單層式儲(chǔ)存單元(SLC)快閃存儲(chǔ)器來(lái)說(shuō),每個(gè)儲(chǔ)存單元只存放一個(gè)位元的數(shù)據(jù),也就是0或1。此時(shí),理論上,只要給每數(shù)據(jù)頁(yè)適當(dāng)?shù)囊粋€(gè)設(shè)定電壓VG_0、VG_1、VG_2到VG_N,就可以檢測(cè)出到底儲(chǔ)存單元存放的電量,而得出對(duì)應(yīng)的數(shù)據(jù)值。
相對(duì)的,假如是多層式儲(chǔ)存單元(MLC)快閃存儲(chǔ)器,針對(duì)一次的讀取動(dòng)作就需要施加多個(gè)不同的設(shè)定電壓,以判斷到底儲(chǔ)存單元里頭存放的電量到底是多少,而換算出實(shí)際存放的數(shù)據(jù)內(nèi)容。
圖8是一個(gè)三層式儲(chǔ)存單元(TLC)的快閃存儲(chǔ)器儲(chǔ)存單元存放電量跟操作電壓的示意圖。在這個(gè)示意圖中可看到,一個(gè)儲(chǔ)存單元根據(jù)儲(chǔ)存的電量落在L0、L1、L2...L7區(qū)間,而代表存放的位元數(shù)據(jù)分別為111,011,001,...110。
對(duì)于這樣的儲(chǔ)存單元,理論上,在施加VT_1的操作電壓時(shí),檢測(cè)電路可以判斷到底儲(chǔ)存單元存放的電量是屬于L0這一邊,也就是數(shù)據(jù)111,或是L1,L2,L3,L4,L5,L6,L7那一邊,也就是數(shù)據(jù)為111,011,001,101,100,000或110。
透過(guò)有次序的施加多個(gè)不同的電壓組合,理論上就可以判斷出所有三個(gè)位元的數(shù)據(jù),也就是最大位元MSB(Most Significant Bit)、CSB(Central Significant Bit)與LSB(Least Significant Bit)的數(shù)據(jù)內(nèi)容。
但是,如上所述,隨著半導(dǎo)體制程持續(xù)朝密集化以及微小化的方向發(fā)展,以及快閃存儲(chǔ)器為了降低成本或是使用時(shí)間越來(lái)越長(zhǎng),相關(guān)的電路以及存儲(chǔ)器儲(chǔ)存單元的穩(wěn)定性的問(wèn)題越來(lái)越大。
圖9例示一種可能的狀況,也就是如果對(duì)儲(chǔ)存單元施加操作電壓VT_1,有可能因?yàn)槲辉獱顟B(tài)間出現(xiàn)部分重迭或甚至位移,導(dǎo)致解讀出的數(shù)據(jù)發(fā)生不正確的情形。在這樣的情況下,就需要透過(guò)各種不同錯(cuò)誤校驗(yàn)方法,或是動(dòng)態(tài)調(diào)整操作電壓來(lái)解決數(shù)據(jù)判斷不準(zhǔn)確的問(wèn)題。
圖10例示在一次的讀取操作時(shí),依序使用7個(gè)不同的電壓對(duì)儲(chǔ)存單元進(jìn)行讀取操作,檢測(cè)儲(chǔ)存單元內(nèi)浮動(dòng)閘的電量,以判讀儲(chǔ)存單元存放的數(shù)據(jù)的LSB數(shù)值到底是0還是1。
從圖10可以清楚看到,如果儲(chǔ)存單元儲(chǔ)存的電量分布落在VLSB的左側(cè)L0,L1,L2,L3,代表LSB的內(nèi)容是0。相反的,如果是落在VLSB的右側(cè)L4,L5,L6,L7,則代表LSB的內(nèi)容是1。
由于在狀態(tài)間有重迭的問(wèn)題,因此,可依序施加不同的電壓VLSB,VLSB+D,VLSB-D,VLSB+2D,VLSB-2D,VLSB+3D,VLSB-3D。藉此,假如儲(chǔ)存單元的電量分布剛好落在例如VLSB+D與VLSB之間,就可以從檢測(cè)的結(jié)果得到一定的情報(bào)。
每次施加一個(gè)電壓可以得到一個(gè)位元結(jié)果,因此7次電壓就可以得到7個(gè)位元。這7個(gè)位元總共有八種可能的組合。由這7個(gè)位元對(duì)應(yīng)的位元序(bit sequence),可配合LDPC的解碼電路跟方法,用來(lái)計(jì)算校驗(yàn)碼以及用來(lái)找出正確的位元數(shù)據(jù),也就是利用所取得的軟資訊(soft information)搭配LDPC與BCH等方法,用來(lái)進(jìn)行錯(cuò)誤校驗(yàn)。
圖11例示用來(lái)找CSB的方法。由于CSB代表第二個(gè)位元,在圖5中可看到如果儲(chǔ)存單元的電量是落在L2,L3,L4,L5則代表儲(chǔ)存單元儲(chǔ)存的CSB是0。另一方面,如果儲(chǔ)存單元的電量落在L0,L1,L6,L7區(qū)間,則代表儲(chǔ)存單元儲(chǔ)存的CSB是1。在這樣的配置下,可以理解的是需要使用VCSB1與VCSB2兩個(gè)操作電壓來(lái)過(guò)濾出到底儲(chǔ)存單元的電量是落在哪個(gè)區(qū)間。
相似于上述的說(shuō)明,VCSB1與VCSB2也可以施加多個(gè)步進(jìn)調(diào)整量,依序多次用不同的電壓進(jìn)行讀取的動(dòng)作。每次讀取的結(jié)果產(chǎn)生位元序,可搭配LDPC與BCH等方法,用來(lái)進(jìn)行錯(cuò)誤校驗(yàn)。
圖12例示用來(lái)找MSB的方法。由于MSB代表最高的位元,在圖6中可看到如果儲(chǔ)存單元的電量是落在L0,L3,L4,L7區(qū)間,則代表儲(chǔ)存單元存放的MSB位元為1。相對(duì)的,假如儲(chǔ)存單元的電量是落在L1,L2,L5,L6區(qū)間,則代表儲(chǔ)存單元存放的MSB位元為0。
相似于上述的說(shuō)明,VMSB1,VMSB2,VMSB3,VMSB4也可以施加多個(gè)步進(jìn)調(diào)整量,依序多次用不同的電壓進(jìn)行讀取的動(dòng)作。每次讀取的結(jié)果產(chǎn)生位元序,可搭配LDPC與BCH等方法,用來(lái)進(jìn)行錯(cuò)誤校驗(yàn)。
在上述的各種架構(gòu)說(shuō)明后,以下配合圖示進(jìn)一步說(shuō)明本發(fā)明實(shí)施例在異常狀態(tài)后,進(jìn)行修復(fù)操作時(shí),如何找到先前有效寫(xiě)入的數(shù)據(jù)頁(yè),并進(jìn)行適當(dāng)?shù)牟僮?,以加?qiáng)數(shù)據(jù)的穩(wěn)定性。當(dāng)然,這樣的配置方法不限于一定要在異常狀態(tài)后才可以執(zhí)行。例如預(yù)定的數(shù)據(jù)檢查或修復(fù)工作也可以使用。
請(qǐng)參考圖13,其例示根據(jù)本發(fā)明實(shí)施例的一種做法,可快速找出先前最后一個(gè)有效寫(xiě)入的數(shù)據(jù)頁(yè)位置。
首先,取消重讀機(jī)制、錯(cuò)誤驗(yàn)證機(jī)制與重組編碼機(jī)制(步驟1301)。接著,參考能獲得的表格,用預(yù)設(shè)電位讀取可能是最后一個(gè)數(shù)據(jù)頁(yè)的內(nèi)容(步驟1303)。由于曾經(jīng)經(jīng)過(guò)異常狀態(tài),例如不正常的電源關(guān)閉,所以表格記載的最后一個(gè)數(shù)據(jù)頁(yè)的信息未必正確。在讀取數(shù)據(jù)后,進(jìn)行驗(yàn)證碼或更正碼(Error Correction Code)的操作(步驟1305)。如果檢查結(jié)果沒(méi)問(wèn)題的話,在下個(gè)數(shù)據(jù)頁(yè)寫(xiě)入空白數(shù)據(jù)(步驟1313)。
如果經(jīng)過(guò)檢查發(fā)現(xiàn)有問(wèn)題,則開(kāi)啟重讀機(jī)制,用不同的電位再嘗試讀取數(shù)據(jù)(步驟1307)。重讀后,再度檢查驗(yàn)證碼(步驟1309)。假如能通過(guò)的話,將正確數(shù)據(jù)再寫(xiě)入該數(shù)據(jù)頁(yè)(步驟1311)。最后,在下個(gè)數(shù)據(jù)頁(yè)寫(xiě)入空白數(shù)據(jù)(步驟1313)。
這樣的機(jī)制適合用于混雜單層(SLC)閃存存儲(chǔ)器與多層(MLC)閃存存儲(chǔ)器架構(gòu)的非揮發(fā)性儲(chǔ)存裝置。對(duì)于多層閃存存儲(chǔ)器會(huì)設(shè)置比較復(fù)雜的修復(fù)操作。相對(duì)的,對(duì)于穩(wěn)定性較高的單層閃存存儲(chǔ)器可以用上述的方法快速完成修復(fù)的操作工作。
綜上所述,本發(fā)明無(wú)論就目的、手段及功效,在在均顯示其迥異于已有技術(shù)的特征。但應(yīng)注意的是,上述諸多實(shí)施例僅為了便于說(shuō)明而舉例而已,本發(fā)明所主張的權(quán)利范圍自應(yīng)以權(quán)利要求書(shū)所述為準(zhǔn),而非僅限于上述實(shí)施例。