專利名稱:存儲器系統(tǒng)和控制存儲器系統(tǒng)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及包括非易失性半導(dǎo)體存儲器的存儲器系統(tǒng)以及控制存儲器系統(tǒng)的方法。
背景技術(shù):
一些個人計(jì)算機(jī)(PC)采用硬盤設(shè)備作為二級存儲設(shè)備。在這種PC中,已知用于 備份在硬盤設(shè)備中存儲的數(shù)據(jù)以防止數(shù)據(jù)由于一些故障而無效的技術(shù)。例如,當(dāng)檢測到 改變硬盤設(shè)備中的數(shù)據(jù)的行為時(shí),提取作為數(shù)據(jù)在改變之前的備份副本的快照,并產(chǎn)生對 于數(shù)據(jù)作出改變的日志。然后,在每個特定時(shí)間重復(fù)提取新快照、使得在提取新快照之前 在過去提取的日志無效、以及生成新日志的處理(例如,見專利文檔1 美國專利申請?zhí)亻_ No. 2006/0224636的說明書)。在數(shù)據(jù)由于某些原因變?yōu)闊o效的情況下,可通過參照快照和 日志來恢復(fù)數(shù)據(jù)。近年來,作為易失性半導(dǎo)體存儲設(shè)備的NAND型閃存的容量急劇增加。結(jié)果,作為 安裝有NAND型閃存的存儲器系統(tǒng)的固態(tài)驅(qū)動器(SSD)引起注意。閃存具有相比于磁盤驅(qū) 動器例如高速和重量輕的優(yōu)點(diǎn)。然而,在專利文檔1中公開的技術(shù)不能夠像在具有硬盤設(shè) 備作為二級存儲設(shè)備的PC中存儲的數(shù)據(jù)的備份的情況那樣,應(yīng)用于在具有NAND型閃存作 為二級存儲設(shè)備的這種PC中存儲的數(shù)據(jù)的備份。這是因?yàn)閼?yīng)用多值存儲器技術(shù)(其中等 于或大于2的多條數(shù)據(jù)(多值數(shù)據(jù))可在一個存儲器單元中存儲)來增加NAND型閃存的 容量(例如,見專利文檔2 日本專利申請?zhí)亻_No. 2004-192789)。
發(fā)明內(nèi)容
本發(fā)明的一個方面提供一種存儲器系統(tǒng),包括第一存儲單元,其為易失性的;第 二存儲單元,其為非易失性的,并且連接至所述第一存儲單元;讀取/寫入控制單元,其基 于管理表執(zhí)行從所述第二存儲單元的數(shù)據(jù)讀取以及向所述第二存儲單元的數(shù)據(jù)寫入,在所 述管理表中,邏輯地址與所述第二存儲單元中的數(shù)據(jù)存儲位置關(guān)聯(lián);日志控制單元,其將所 述管理表傳送至所述第一存儲單元,并且在更新所述第一存儲單元上的所述管理表的事件 發(fā)生時(shí),將所述管理表的更新前后的差異信息作為差異日志存儲至所述第一存儲單元中; 日志反映單元,其執(zhí)行提交處理,所述提交處理用于將所述差異日志存儲于所述第二存儲 單元中,并且在建立第一條件時(shí),在存儲于所述第一存儲單元中的所述管理表中反映所述 差異日志;操作狀態(tài)管理單元,其在系統(tǒng)啟動之后在所述日志反映單元將所述差異日志存 儲至所述第二存儲單元之前,將第一日志存儲至所述第二存儲單元中;并且在執(zhí)行正常系 統(tǒng)暫停時(shí),將第二日志存儲至所述第二存儲單元中;以及管理信息恢復(fù)單元,其檢測存儲于 所述第二存儲單元中的所述第一日志、所述差異日志、和所述第二日志中的至少一個;并且 判斷是否執(zhí)行正常系統(tǒng)暫停。
圖1是SSD 100的配置實(shí)例的框圖。圖2A和2B是示出在NAND存儲器芯片中包括的一個物理塊的配置實(shí)例和四元數(shù) 據(jù)存儲系統(tǒng)中的閾值分布的示意圖。圖3是驅(qū)動控制電路的硬件內(nèi)部配置實(shí)例的框圖。圖4是處理器的功能配置實(shí)例的框圖。圖5是在NAND存儲器和動態(tài)隨機(jī)存取存儲器(DRAM)中形成的功能配置的框圖。圖6是示出LBA邏輯地址的視圖。圖7是示出數(shù)據(jù)管理單元中的管理表的配置實(shí)例的視圖。圖8是概念性示出快照和日志的產(chǎn)生狀態(tài)的視圖。圖9是示出寫入高速緩存(WC)中的寫入處理的流程圖。圖10是示出從WC至主要存儲區(qū)(MS)的寫入處理的操作過程的流程圖。圖11是示出從WC至MS的寫入處理的操作概念的示意圖。圖12是示出低密度磁軌從WC至前段存儲區(qū)(K)的寫入處理的操作過程的流程圖。圖13是示出低密度磁軌從WC至FS的寫入處理的操作概念的示意圖。圖14是示出從FS至中間段存儲區(qū)(IS)的數(shù)據(jù)重新定位的操作過程的流程圖。圖15是示出從FS至IS的數(shù)據(jù)重新定位的操作概念的示意圖。圖16是示出IS中的重組處理和緊縮處理的操作過程的流程圖。圖17是示出其他管理表的視圖。圖18是示出本發(fā)明中存在的基本部分的配置的功能框圖。圖19是示出存儲活動日志、待用日志、和差異日志的過程的流程圖。圖20A和20B是示出當(dāng)執(zhí)行正常斷電序列時(shí)和當(dāng)發(fā)生異常斷電時(shí)活動日志和待用 日志的視圖。圖21是示出片段空閑塊(FFB)的概念圖。圖22是示出在系統(tǒng)啟動時(shí)由數(shù)據(jù)管理單元執(zhí)行的處理的流程圖。圖23是安裝有SSD的PC的全景圖。圖M是安裝有SSD的PC的系統(tǒng)配置實(shí)例的視圖。
具體實(shí)施例方式配置多值存儲器的存儲器單元具有包括疊柵結(jié)構(gòu)的場效應(yīng)晶體管結(jié)構(gòu),其中柵極 絕緣膜、浮置柵極電極、柵極間絕緣膜、和控制柵極電極依次堆疊在通道區(qū)上,并且可根據(jù) 在浮置柵極電極中聚集的電子的數(shù)目設(shè)置多個閾值電壓。為了能夠基于多個閾值電壓執(zhí)行 多值存儲,需要使與一條數(shù)據(jù)相應(yīng)的閾值電壓的分布極其狹窄。由例如PC的主機(jī)裝置記錄的數(shù)據(jù)具有時(shí)間局部性和空間局部性。因此,當(dāng)記錄數(shù) 據(jù)時(shí),如果將數(shù)據(jù)直接記錄在從外部指定的地址中,重寫(即擦除處理)在時(shí)間上集中在特 定區(qū)域中,并且擦除次數(shù)的偏差增加。因此,在使用NAND型閃存的存儲器系統(tǒng)中,執(zhí)行用于 相等地分散數(shù)據(jù)更新扇區(qū)的稱為耗損平衡的處理。在耗損平衡處理中,例如,將主機(jī)裝置指 定的邏輯地址解譯成非易失性半導(dǎo)體存儲器的物理地址,從而相等地分散數(shù)據(jù)更新扇區(qū)。在這樣的地址解譯中,數(shù)據(jù)的存儲位置通常通過使用管理表來管理,例如,表示從外部提供的邏輯地址(LBA)和指示在NAND型閃存上存儲的數(shù)據(jù)的位置的物理地址之間的 地址解譯表。在啟動時(shí),管理表從非易失性NAND型閃存加載到存儲器(例如動態(tài)隨機(jī)存取 存儲器(DRAM))上,其每當(dāng)寫入數(shù)據(jù)時(shí)被更新。在地址解譯表中的相應(yīng)關(guān)系需要例如通過 備份技術(shù)(例如使用斷電時(shí)的相應(yīng)關(guān)系的快照和日志)來備份。在SSD中,當(dāng)在數(shù)據(jù)的寫入期間(即使在未授權(quán)的斷電時(shí))不期望地發(fā)生斷電時(shí), 有必要保持管理信息的一致性并可靠地保護(hù)其中已經(jīng)記錄的數(shù)據(jù)。因此,在SSD中也需要 容易并且可靠地檢測是執(zhí)行了正常斷電序列還是執(zhí)行了不正確的斷電序列的方法。以下參照附圖詳細(xì)說明根據(jù)本發(fā)明的存儲器系統(tǒng)的示例性實(shí)施例。本發(fā)明不限于 這些實(shí)施例。以下參照
本發(fā)明的實(shí)施例。在以下說明中,具有相同功能和配置的組件 通過相同數(shù)字和標(biāo)號來指示。僅當(dāng)必要時(shí)執(zhí)行組件的附加說明。首先,定義在說明書中使用的術(shù)語。物理頁NAND型閃存中可共同寫入和讀出的單位。邏輯頁在SSD中設(shè)置的寫入和讀出單位。邏輯頁與一個或多個物理頁關(guān)聯(lián)。物理塊NAND型閃存中可獨(dú)立擦除的最小單位。物理塊包括多個物理頁。邏輯塊在SSD中設(shè)置的擦除單位。邏輯塊與一個或多個物理塊關(guān)聯(lián)。邏輯塊包 括多個邏輯頁。扇區(qū)來自主機(jī)的最小訪問單位。例如,扇區(qū)大小為512字節(jié)⑶。簇SSD中用于管理“小數(shù)據(jù)(細(xì)粒度數(shù)據(jù)),,的管理單位。簇的大小等于或大于 扇區(qū)的大小,并且被設(shè)置為等于主機(jī)的操作系統(tǒng)(OS)采用的文件系統(tǒng)的數(shù)據(jù)管理單位或 邏輯頁大小。例如,可設(shè)置簇的大小,從而作為簇大小兩倍或更大自然數(shù)倍數(shù)的大小為邏輯 頁的大小。磁軌SSD中用于管理“大數(shù)據(jù)(粗粒度數(shù)據(jù))”的管理單位。磁軌的大小被設(shè)置, 使得作為簇大小兩倍或更大自然數(shù)倍數(shù)的大小為磁軌的大小。例如,可將磁軌的大小設(shè)置 為等于邏輯塊的大小。空閑塊(FB)其中不包括有效數(shù)據(jù)并且不被分配用途的邏輯塊。空閑塊包括以下 兩個類型,即完全空閑塊(CFB)和片段空閑塊(FFB)。完全空閑塊(CFB)需要執(zhí)行擦除操作以用于重用的空閑塊。在執(zhí)行擦除操作之 后,可從位于邏輯塊頂部的邏輯頁執(zhí)行寫入。片段空閑塊(FFB)剩余沒有數(shù)據(jù)寫入其中的邏輯頁并且可以在不執(zhí)行擦除操作 的情況下重用的空閑塊??梢栽跊]有數(shù)據(jù)寫入其中的剩余邏輯頁中執(zhí)行寫入。壞塊(BB) :NAND型閃存上的由于大量錯誤而不可用作存儲區(qū)域的物理塊。例如, 將沒有正常完成擦除操作的物理塊登記為壞塊BB。寫入效率在特定期間,邏輯塊相對于從主機(jī)寫入的數(shù)據(jù)量的擦除量的統(tǒng)計(jì)值。寫 入效率越小時(shí),NAND型閃存的損耗度越小。有效簇存儲與邏輯地址相應(yīng)的最新數(shù)據(jù)(簇大小的數(shù)據(jù))的簇。無效簇作為具有相同邏輯地址的數(shù)據(jù)寫入在不同位置中的結(jié)果,存儲沒有被引 用的非最新數(shù)據(jù)(簇大小的數(shù)據(jù))的簇。有效磁軌存儲與邏輯地址相應(yīng)的最新數(shù)據(jù)(磁軌大小的數(shù)據(jù))的磁軌。
無效磁軌作為具有相同邏輯地址的數(shù)據(jù)寫入在不同位置中的結(jié)果,存儲沒有被 引用的非最新數(shù)據(jù)(磁軌大小的數(shù)據(jù))的磁軌。多級單元(MLC)模式正常使用能夠多值化存儲的NAND型閃存中的上部頁和下部 頁來執(zhí)行寫入的模式。通過將MLC模式下使用的一個或多個物理塊關(guān)聯(lián)來配置MLC模式的 邏輯塊。偽單級單元(SLC)模式僅使用能夠多值化存儲的NAND型閃存中的下部頁來執(zhí)行 寫入的模式。通過將偽SLC模式中使用的一個或多個物理塊關(guān)聯(lián)來配置偽SLC模式的邏輯 塊。在擦除操作之后,甚至可在MLC模式下使用在偽SLC模式下使用一次的物理塊。(第一實(shí)施例)圖1是SSD 100的配置實(shí)例的框圖。SSD 100經(jīng)由存儲器連接接口(例如高級技 術(shù)配件接口(ATA I/FO連接至主機(jī)設(shè)備1(以下主機(jī)1),例如PC或中央處理單元(CPU) 核,并用作主機(jī)1的外部存儲器。SSD 100可經(jīng)由通信接口 3(例如RS232C I/F)向用于調(diào) 試和制造檢查的裝置200發(fā)送數(shù)據(jù)和從其接收數(shù)據(jù)。SSD 100包括作為非易失性半導(dǎo)體存 儲器的NAND型閃存(以下NAND存儲器)10、作為控制器的驅(qū)動控制電路4、作為易失性半 導(dǎo)體存儲器的DRAM 20、電源電路5、用于狀態(tài)顯示的發(fā)光二極管(LED) 6、檢測驅(qū)動器中的 溫度的溫度傳感器7、和保險(xiǎn)絲8。電源電路5根據(jù)從主機(jī)1端上的電源電路提供的外部直流電源生成多個不同內(nèi)部 直流電源電壓,并且將這些內(nèi)部直流電源電壓提供至SSD 100中的各個電路。電源電路5 檢測外部電源的上沿,生成通電重設(shè)信號,以及將通電重設(shè)信號提供至驅(qū)動控制電路4。保 險(xiǎn)絲8提供在主機(jī)1端上的電源電路和SSD 100中的電源電路5之間。當(dāng)從外部電源電路 提供過量電流時(shí),保險(xiǎn)絲被斷開,以防止內(nèi)部電路的故障。在這種情況下,NAND存儲器10包括4個并行操作元件IOa至10d,其執(zhí)行4個并 行操作。并行操作元件IOa至IOd通過4個通道(chO至ch3)連接至驅(qū)動控制電路4。并 行操作元件IOa至IOd中的每個包括多個存儲體(在這種情況下,4個存儲體(存儲體0至 存儲體幻),其能夠執(zhí)行存儲體交錯。每個存儲體包括多個NAND存儲器芯片(在這種情況 下,2個存儲器芯片(芯片0和芯片1))。每個存儲器芯片分成例如面0和面1的兩個區(qū), 其每個包括多個物理塊。面0和面1包括彼此獨(dú)立的外圍電路(例如行解碼器、列解碼器、 頁緩沖器、和數(shù)據(jù)高速緩存),并且可通過使用雙倍速模式同時(shí)執(zhí)行擦除、寫入、和讀取。這 樣,NAND存儲器10的每個NAND存儲器芯片可使用多個面執(zhí)行多個通道的并行操作、多個 存儲體的存儲體交錯操作、以及雙倍速模式的并行操作。每個存儲器芯片可分成4個面,或 者可在沒有劃分的情況下被配置。DRAM 20用作在主機(jī)1和NAND存儲器10之間的數(shù)據(jù)傳送的高速緩存以及用于工 作區(qū)的存儲器。在用于DRAM 20的工作區(qū)的存儲器中,存儲通過在啟動等時(shí)間加載NAND存 儲器10中存儲的各個管理表獲得的主表(快照)、作為管理表的改變差異的日志信息及其 類似者。可使用鐵電隨機(jī)存取存儲器(FeRAM)、磁阻隨機(jī)存取存儲器(MRAM)、相變隨機(jī)存取 存儲器(PRAM)代替DRAM 20。驅(qū)動控制電路4經(jīng)由DRAM 20執(zhí)行在主機(jī)1和NAND存儲器 10之間的數(shù)據(jù)傳送控制,并且控制SSD 100中的各個組件。驅(qū)動控制電路4向用于狀態(tài)顯 示6的LED提供用于狀態(tài)顯示的信號。驅(qū)動控制電路4還具有從電源電路5接收通電重設(shè) 信號以及向自身電路和SSD 100中的各個單元提供時(shí)鐘信號的功能。
通過將多個物理塊安排為數(shù)據(jù)擦除的單位來配置每個NAND存儲器芯片。圖2A 是示出在NAND存儲器芯片中包括的一個物理塊的配置實(shí)例的等效電路圖。每個物理塊包 括沿著X方向依次排列的(P+1)個NAND串(ρ是等于或大于0的整數(shù))。在各個(p+1)個 NAND串中包括的選擇晶體管STl的漏極分別連接至位線BLO至BLp,并且柵極共同連接至 柵極線S⑶。此外,選擇晶體管ST2的源極共同連接至源線SL,并且柵極共同連接至柵極線 SGS。每個存儲器單元晶體管MT包括金屬氧化物半導(dǎo)體場效應(yīng)晶體管(MOSFET),其包 括在半導(dǎo)體襯底上形成的堆疊柵極結(jié)構(gòu)。堆疊柵極結(jié)構(gòu)包括經(jīng)由柵極絕緣膜在半導(dǎo)體襯底 上形成的電荷存儲層(浮置柵極電極)和經(jīng)由柵極間絕緣膜在電荷存儲層上形成的控制柵 極電極。在存儲器單元晶體管MT中,閾值電壓根據(jù)在浮置柵極電極中聚集的電子的數(shù)目改 變。存儲器單元晶體管MT根據(jù)閾值電壓的差存儲數(shù)據(jù)。存儲器單元晶體管MT可倍配置為 存儲一個比特,或者可倍配置為存儲多值(等于或大于兩個比特的數(shù)據(jù))。存儲器單元晶體管MT不限于具有浮置柵極電極的結(jié)構(gòu),并且可以是例如金屬氧 氮氧化矽(M0N0Q型的結(jié)構(gòu),其可通過使得作為電荷存儲層的氮化物膜接口捕獲電子來調(diào) 節(jié)閾值。類似地,MONOS結(jié)構(gòu)的存儲器單元晶體管MT可被配置為存儲一個比特,或者可倍 配置為存儲多值(等于或大于兩個比特的數(shù)據(jù))。在每個NAND串中,將(q+Ι)個存儲器單元晶體管MT設(shè)置在選擇晶體管STl的源 極和選擇晶體管ST2的漏極之間,從而使其電流路徑串聯(lián)連接。換句話說,存儲器單元晶體 管MT在Y方向串聯(lián)連接,從而存儲器單元晶體管MT的相鄰晶體管共享擴(kuò)散區(qū)域(源極區(qū) 域或漏極區(qū)域)。存儲器單元晶體管MT的控制柵極電極以從位于大部分漏極端上的存儲器單元晶 體管MT的順序分別連接至字線mi)至WLq。因此,與字線mi)連接的存儲器單元晶體管MT 的漏極連接至選擇晶體管STl的源極。與字線WLq連接的存儲器單元晶體管MT的源極連 接至選擇晶體管ST2的漏極。在物理塊的NAND串之間,字線Wi)至WLq共同連接存儲器單元晶體管MT的控制 柵極電極。換句話說,在塊中的相同行中出現(xiàn)的存儲器單元晶體管MT的控制柵極電極連接 至相同字線WL。與相同字線WL連接的(P+1)個存儲器單元晶體管MT看作一個頁(物理 頁)。通過每個物理頁執(zhí)行數(shù)據(jù)寫入和數(shù)據(jù)讀出。在所述塊之間,位線BLO至BLp共同連接選擇晶體管STl的漏極。換句話說,在多 個塊中的相同列中出現(xiàn)的NAND串連接至相同位線BL。圖2B是例如在一個存儲器單元晶體管MT中存儲兩個比特的四元數(shù)據(jù)存儲模式下 的閾值分布的示意圖。在四元數(shù)據(jù)存儲模式下,可在存儲器單元晶體管MT中存儲由上部頁 數(shù)據(jù)“χ”和下部頁數(shù)據(jù)“y”定義的四元數(shù)據(jù)“xy”中的任一個。作為四元數(shù)據(jù)“xy”,例如,以存儲器單元晶體管MT的閾值電壓的順序分配數(shù)據(jù) “11”、“01”、“00”、和“10”。數(shù)據(jù)“11”是存儲器單元晶體管MT的電壓閾值為負(fù)的擦除狀態(tài)。 數(shù)據(jù)分配的規(guī)則不限于此。配置可以是在一個存儲器單元晶體管MT中存儲3個或更多個 比特。在下部頁寫入操作中,根據(jù)下部比特?cái)?shù)據(jù)“y”的寫入在具有數(shù)據(jù)“11”的存儲器 單元晶體管MT中選擇性寫入數(shù)據(jù)“ 10” (處于經(jīng)擦除狀態(tài))。在上部頁寫入之前數(shù)據(jù)“ 10”的閾值位于在上部頁寫入之后數(shù)據(jù)“01”和數(shù)據(jù)“00”的閾值分布的中間附近,并且可寬于 在上部頁寫入之后的閾值分布。在上部頁寫入操作中,對于數(shù)據(jù)“ 11,,的存儲器單元和數(shù)據(jù) “10”的存儲器單元選擇性應(yīng)用上部比特?cái)?shù)據(jù)“X”的寫入。在存儲器單元中寫入數(shù)據(jù)“01” 和數(shù)據(jù)“00”。在偽SLC模式下,僅使用下部頁來執(zhí)行寫入。下部頁寫入快于上部頁寫入。圖3是驅(qū)動控制電路4的硬件內(nèi)部配置實(shí)例的框圖。驅(qū)動控制電路4包括數(shù)據(jù)訪 問總線101、第一電路控制總線102、和第二電路控制總線103??刂普麄€驅(qū)動控制電路4的 處理器104連接至第一電路控制總線102。其中存儲用于引導(dǎo)NAND存儲器10中存儲的各 個管理程序(FW 固件)的引導(dǎo)程序的引導(dǎo)ROM 105經(jīng)由ROM控制器106連接至第一電路 控制總線102。從如圖1所示的電源電路5接收通電重設(shè)信號并向各個單元提供重設(shè)信號 和控制信號的時(shí)鐘控制器107連接至第一電路控制總線102。第二電路控制總線103連接至第一電路控制總線102。從如圖1所示的溫度傳感 器7接收數(shù)據(jù)的I2C電路108、向用于狀態(tài)顯示6的LED提供用于狀態(tài)顯示的信號的并行 IO(PIO)電路109、和控制RS232C I/F 3的串行IO(SIO)電路110連接至第二電路控制總 線 103。ATA接口控制器(ΑΤΑ控制器)111、第一檢錯和糾錯(ECC)電路112、NAND控制器 113、和DRAM控制器114連接至數(shù)據(jù)訪問總線101和第一電路控制總線102兩者。ATA控 制器111經(jīng)由ATA接口 2向主機(jī)1發(fā)送數(shù)據(jù),以及從其接收數(shù)據(jù)。用作數(shù)據(jù)工作區(qū)和固件 擴(kuò)展區(qū)的靜態(tài)隨機(jī)存取存儲器(SRAM) 115經(jīng)由SRAM控制器116連接至數(shù)據(jù)訪問總線101。 當(dāng)啟動在NAND存儲器10中存儲的固件時(shí),通過在引導(dǎo)ROM 105中存儲的引導(dǎo)程序?qū)⒐碳?傳送至SRAM 115。NAND控制器113包括NAND I/F 117,其執(zhí)行與NAND存儲器10對接的對接處理; 第二 ECC電路118 ;和直接存儲器訪問(DMA)傳送控制的DMA控制器119,其執(zhí)行NAND存儲 器10和DRAM 20之間的訪問控制。第二 ECC電路118執(zhí)行第二校正碼的編碼,以及執(zhí)行第 一糾錯碼的編碼和解碼。第一 ECC電路112執(zhí)行第二糾錯碼的解碼。第一糾錯碼和第二糾 錯碼是例如漢明(Hamming)碼、博斯-查德胡里-霍昆格姆(Bose Chauduri Hocquenghem) (BCH)碼、里德-所羅門(Reed Solomon) (RS)碼、或低密度奇偶校驗(yàn)(LDPC)碼。第二糾錯 碼的糾錯能力高于第一糾錯碼的糾錯能力。例如,在國際專利申請PCT/JP2008/063344或 國際專利申請PCT/JP2008/063345中公開了涉及這種糾錯的技術(shù),并且其內(nèi)容合并在本申 請中。如圖1所示,在NAND存儲器10中,4個并行操作元件IOa至IOd經(jīng)由均用于多個 比特的4個通道(kh)并行連接至驅(qū)動控制電路4中的NAND控制器113,從而可并行激勵 4個并行操作元件IOa至10d。每個通道的NAND存儲器10分成能夠存儲體交錯的4個存 儲體,并且可同時(shí)訪問每個存儲器芯片的面0和面1。因此,可在用于每個通道的多達(dá)8個 物理塊0個存儲體X2個面)上幾乎同時(shí)執(zhí)行例如寫入的處理。例如,在美國專利申請公 開No. 12/558965中公開涉及這樣的存儲體交錯的技術(shù),并且其全部內(nèi)容合并在本申請中。圖4是通過處理器104實(shí)現(xiàn)的固件的功能配置實(shí)例的框圖。由處理器104實(shí)現(xiàn)的 固件的功能大致分成數(shù)據(jù)管理單元120、ATA命令處理單元121、安全管理單元122、引導(dǎo)加 載器123、初始化管理單元124、和調(diào)試支持單元125。數(shù)據(jù)管理單元120經(jīng)由NAND控制器113和第一 ECC電路112控制在NAND存儲器
1110和DRAM 20之間的數(shù)據(jù)傳送和關(guān)于NAND存儲器10的各個功能。ATA命令處理單元121 經(jīng)由ATA控制器111和DRAM控制器114與數(shù)據(jù)管理單元120協(xié)作執(zhí)行在DRAM 20和主機(jī) 1之間的數(shù)據(jù)傳送處理。安全管理單元122與數(shù)據(jù)管理單元120和ATA命令處理單元121 協(xié)作管理各種安全信息。當(dāng)電源開啟時(shí),引導(dǎo)加載器123從NAND存儲器10將管理程序(固件)加載到SRAM 115上。初始化管理單元123執(zhí)行在驅(qū)動控制電路4中的各個控制器和電路的初始化。調(diào) 試支持單元125處理經(jīng)由RS232C接口從外部提供的用于調(diào)試的數(shù)據(jù)。數(shù)據(jù)管理單元120、 ATA命令處理單元121、和安全管理單元122是通過處理器104執(zhí)行在SRAM 115中存儲的 各個管理程序?qū)崿F(xiàn)的主要功能單元。在本實(shí)施例中,主要說明通過數(shù)據(jù)管理單元120實(shí)現(xiàn)的功能。數(shù)據(jù)管理單元120執(zhí) 行例如以下功能,ATA命令處理單元121請求作為存儲設(shè)備的NAND存儲器10和DRAM 20 (響 應(yīng)于來自主機(jī)的各種命令,例如寫入請求、高速緩存清空請求、和讀取請求),在從主機(jī)給出 的邏輯地址和NAND存儲器10的物理地址之間的相應(yīng)關(guān)系的管理,通過快照和日志對于管 理信息的保護(hù),使用DRAM 20和NAND存儲器10進(jìn)行快速和高度有效的數(shù)據(jù)讀出和寫入功 能,和確保NAND存儲器10的可靠性。圖5是在NAND存儲器10和DRAM 20中形成的功能框的視圖。在DRAM 20上配置 的寫入高速緩存(WC) 21和讀取高速緩存(RC) 22插入在主機(jī)1和NAND存儲器10之間。WC 21在其中臨時(shí)存儲來自主機(jī)1的寫入數(shù)據(jù)。RC 22在其中臨時(shí)存儲來自NAND存儲器10的 讀取數(shù)據(jù)。通過數(shù)據(jù)管理單元120將NAND存儲器10中的塊分配給前段存儲區(qū)(FS 前存 儲)12、中間段存儲區(qū)(IS:中間存儲)13、和主存儲區(qū)(MS:主存儲)11的各個管理區(qū),以減 少在寫入期間對于NAND存儲器10的擦除的量。FS 12以簇為單位(S卩“小單位”)來管理 來自WC 21的數(shù)據(jù),以及在短時(shí)間段存儲小數(shù)據(jù)。IS 13以簇為單位(S卩“小單位”)來管理 來自FS 12的溢出,以及在長時(shí)間段存儲小數(shù)據(jù)。MS 11以磁軌為單位(即“大單位”)管 理來自WC 21、FS 12、和IS 13的數(shù)據(jù)。例如,在國際專利申請PCT/JP08/073950中或國際 專利申請PCT/JP08/067600中公開了以這個方式通過在每個管理區(qū)中分配NAND存儲器10 中的塊來管理他們的技術(shù),并且其全部內(nèi)容合并在本申請中。詳細(xì)說明圖5中所示的各個組件的特定功能配置。當(dāng)主機(jī)1執(zhí)行對于SSD 100的 讀取或?qū)懭霑r(shí),主機(jī)1經(jīng)由ATA I/F 2輸入邏輯塊尋址(LBA)作為邏輯地址。如圖6所示, LBA是將從0的序號附加在扇區(qū)(大小512B)的邏輯地址。在本實(shí)施例中,作為用于圖5 中所示的組件的WC 21、RC 22、FS 12、IS 13、和MS 11的管理單元,定義了用等于或大于 LBA的第(s+1)低階比特的位串按序形成的簇地址以及用等于或大于LBA的第(s+t+Ι)低 階比特的位串按序形成的磁軌地址。在本實(shí)施例中,磁軌和邏輯塊的大小相同。邏輯塊是 與NAND存儲器10的芯片上的多個物理塊關(guān)聯(lián)的虛擬塊。在本實(shí)施例中,邏輯塊與用于若 干并行通道(在這種情況下,如圖1中所示4個通道)的物理塊關(guān)聯(lián)。以類似方式,邏輯頁 與用于4個通道的物理頁關(guān)聯(lián)。從屬于相同存儲體的物理塊選擇邏輯塊,以有效地使用存 儲體交錯。<讀取高速緩存(RC) 22>RC 22是響應(yīng)于來自主機(jī)1的讀取請求臨時(shí)存儲來自NAND存儲器10 (FS 12、IS 13和MS 11)的讀取數(shù)據(jù)的區(qū)域?;旧蠌腞C 22執(zhí)行向主機(jī)1的傳送。當(dāng)執(zhí)行從WC 21向NAND存儲器10的數(shù)據(jù)寫入時(shí),使具有相同邏輯地址的RC 22上的數(shù)據(jù)無效。〈寫入高速緩存(WC)21>WC 21是響應(yīng)于來自主機(jī)1的寫入請求臨時(shí)存儲來自主機(jī)1的寫入數(shù)據(jù)的區(qū)域。 以簇為單位來管理WC 21上的數(shù)據(jù),并且以扇區(qū)為單位來執(zhí)行有效數(shù)據(jù)的寫入和管理。當(dāng) WC 21的資源變得不足時(shí),將WC 21上存儲的數(shù)據(jù)清空至NAND存儲器。當(dāng)在與來自主機(jī)1 的RC 22上的數(shù)據(jù)相同的邏輯地址中執(zhí)行寫入時(shí),在WC 21上存儲最新數(shù)據(jù)。因此,當(dāng)在 WC 2URRC 22和NAND存儲器10上存在與相同邏輯地址相應(yīng)的數(shù)據(jù)時(shí),該數(shù)據(jù)按WC 21、RC 22、和NAND存儲器10的順序?yàn)樾碌?,從而WC 21上的數(shù)據(jù)倍優(yōu)先化以返回至主機(jī)1?!粗鞔鎯^(qū)(MS)IDMS 11以磁軌為單位執(zhí)行數(shù)據(jù)管理,并且大部分用戶數(shù)據(jù)存儲在MSll中。將WC上 具有許多有效簇的磁軌(高密度磁軌)從WC 21直接寫入MS 11。此外,將無法由FS 12和 IS 13管理的數(shù)據(jù)輸入至MS 11。使LBA與輸入至MS 11的磁軌的LBA相同的磁軌在邏輯 塊中無效,并且釋放這個邏輯塊。使屬于LBA與輸入至MS 11的磁軌的LBA相同的磁軌的 簇在FS 12、IS 13中無效,并且釋放其中所有簇?zé)o效的邏輯塊。MS 11由MLS模式的多個 邏輯塊組成。在本實(shí)施例中,磁軌與邏輯塊的大小相同,從而在FS 12或IS 13中執(zhí)行的額 外記錄處理以及在IS 13中執(zhí)行的緊縮(用于僅收集有效簇以生成新邏輯塊和釋放無效簇 部分的處理)在MS 11中是不必要的。如果磁軌大小小于邏輯塊大小,則可將在FS 12和 IS 13中執(zhí)行的額外記錄處理以及在FS 13中執(zhí)行的緊縮應(yīng)用于MS 11。<前段存儲區(qū)(FS) 12>FS 12是適配先進(jìn)先出(FIFO)結(jié)構(gòu)的緩沖器,其中數(shù)據(jù)以簇為單位來管理,并且 輸入是收集多個簇的邏輯頁為單位來執(zhí)行。首先,將WC 21上具有較小數(shù)目的有效簇的磁 軌(低密度磁軌)寫入至FS 12中。FS 12具有FIFO結(jié)構(gòu),其中按數(shù)據(jù)寫入的次序來配置 邏輯塊。當(dāng)將LBA與FS 12中存在的簇的LBA相同的簇輸入至FS 12時(shí),足以使FS 12中 的簇?zé)o效,并且不執(zhí)行重寫。使LBA與輸入至FS 12的簇的LBA相同的簇在邏輯塊中無效, 并且釋放邏輯塊中的所有簇?zé)o效的邏輯塊。將存儲于達(dá)到FS 12的FIFO結(jié)構(gòu)的末端的邏 輯塊中的簇看作來自主機(jī)1的具有低重寫可能性的簇,并且在IS 13的管理下將該邏輯塊 整個重寫定位至IS 13。在本實(shí)施例中,F(xiàn)S 12是由偽SLC模式的多個邏輯塊組成,以加速 寫入。FS 12可由MLC模式的多個邏輯塊組成。具有高更新頻率的數(shù)據(jù)在通過FS 12時(shí)為 無效的并且僅具有低更新頻率的數(shù)據(jù)從FS 12溢出,使得FS 12可使具有低更新頻率的數(shù) 據(jù)與具有高更新頻率的數(shù)據(jù)分離。因此,有可能降低緊縮在后續(xù)段的IS 13中頻繁發(fā)生的 可能性。<中間段存儲區(qū)(IS) 13>IS 13是用于存儲具有低重寫可能性的簇的緩沖器,并且以與FS 12相同的方式 以簇為單位來執(zhí)行數(shù)據(jù)的管理。當(dāng)將LBA與IS 13中存在的簇的LBA相同的簇輸入至FS 12和IS 13時(shí),足以使IS 13中的簇?zé)o效,并且不執(zhí)行重寫。以與FS 12類似的方式,IS 13 具有列表結(jié)構(gòu),其中從首先倍寫入數(shù)據(jù)的邏輯塊(從首先根據(jù)FS 12重寫定位的邏輯塊) 依次配置邏輯塊;然而,不同于FS 12的是,IS 13執(zhí)行緊縮。當(dāng)IS 13的容量飽和或用于 FS 12和IS 13的管理表飽和時(shí),執(zhí)行緊縮(從IS 13收集有效簇并且將其重寫至IS 13) 或重組(將FS 12和IS 13的簇整合至磁軌中并且將其清空至MS 11)。在本實(shí)施例中,IS13是由MLC模式和偽SLC模式的邏輯塊的混合物組成。換句話說,從FS 12重新定位至IS13的塊是偽SLC模式的邏輯塊;然而,當(dāng)在IS 13中執(zhí)行緊縮時(shí),將該塊重寫至MLC模式的 邏輯塊。當(dāng)FS 12是由MLC模式的邏輯塊組成時(shí),IS 13也僅由MLC模式的邏輯塊組成。圖7是示出用于數(shù)據(jù)管理單元120控制和管理圖5中所示的各個組件的管理表的視圖。用于管理DRAM 20的表包括RC管理表23、WC磁軌表M、WC磁軌信息表25、WC高密 度磁軌信息表26、和WC低密度磁軌信息表27。用于管理NAND存儲器10的表包括磁軌表 30、簇目錄表31、簇表32、簇塊信息表33、和邏輯至物理解譯表40。用于管理NAND存儲器 10的表分成前向查詢地址解譯中所涉及的表和反向查詢地址解譯中所涉及的表。前向查詢 地址解譯是用于從數(shù)據(jù)的LBA獲得實(shí)際存儲該數(shù)據(jù)的(邏輯塊地址+簇位置)。反向查詢 地址解譯是用于從(邏輯塊地址+簇位置)獲得數(shù)據(jù)的LBA。<RC 管理表 23>RC管理表23是用于管理從NAND存儲器10傳送至RC 22的數(shù)據(jù)。<WC磁軌表對>WC磁軌表M是用于從LBA查詢關(guān)于在WC 21上存儲的數(shù)據(jù)的WC磁軌信息的散列 表,并且包括針對每個索引的多個項(xiàng)目(標(biāo)簽),所述每個索引是LBA的磁軌地址的最低有 效位(LSB)的少量比特。每個標(biāo)簽存儲LBA磁軌地址和指向與磁軌地址對應(yīng)的WC磁軌信 息的指針。<WC磁軌信息表25>WC磁軌信息表25包括WC磁軌最近最少使用(LRU)信息表25a,用于通過使用LRU 的雙向連接列表來管理已存取WC磁軌信息的時(shí)間的排序;和WC磁軌空閑信息表25b,其管 理空閑WC磁軌信息數(shù)目。當(dāng)將數(shù)據(jù)從WC 21清空至NAND存儲器10時(shí),通過使用WC磁軌 LRU信息表2 獲取最早的已存取磁軌。WC磁軌信息對應(yīng)于在WC 21中存在的多個磁軌之一。該WC磁軌信息包括以下內(nèi)容(1)在WC 21中存在的磁軌地址、磁軌中的WC 21上的有效簇的數(shù)目、指示每個簇 是否有效的信息、和WC中指示W(wǎng)C 21中的每個簇的位置的簇位置信息;(2)指示在一個簇中包括的多個扇區(qū)之間存儲有效數(shù)據(jù)的扇區(qū)的信息(扇區(qū)位 圖);以及(3)磁軌狀態(tài)信息(例如,有效、無效、在從ATA的數(shù)據(jù)傳送期間、和在NAND存儲器 中寫入期間)。在WC磁軌信息中,在存在有效簇的存儲位置處管理在自身磁軌中存在的簇 地址的LSB(t)比特;然而,管理簇地址的方法是任意的。例如,可管理在自身磁軌中存在的 簇地址的LSB(t)比特自身(參見圖6)。<WC高密度磁軌信息表沈>WC高密度磁軌信息表沈用于管理待寫入至MS 11中的高密度(磁軌中有效簇的 數(shù)目等于或大于特定百分比)磁軌信息,并且管理關(guān)于高密度磁軌及其數(shù)目的WC磁軌信息O<WC低密度磁軌信息表27>WC低密度磁軌信息表27用于管理待寫入至FS 12中的低密度(磁軌中有效簇的 數(shù)目小于特定百分比)磁軌信息,并且管理低密度磁軌的簇的總數(shù)。
〈磁軌表30(前向查詢)>磁軌表30是用于從LBA的磁軌地址獲得磁軌信息的表。磁軌信息包括以下內(nèi)容(1)邏輯塊地址(指示在其中存儲磁軌的數(shù)據(jù)的邏輯塊的信息);(2)簇目錄數(shù)目(當(dāng)磁軌中的數(shù)據(jù)的至少一部分存儲于FS 12或IS 13中時(shí)變得 有效并且當(dāng)磁軌中的數(shù)據(jù)存儲于FS 12或IS 13中時(shí)指示針對每個磁軌而存在的簇目錄表 的表數(shù)目的信息);以及(3)FS/IS簇的數(shù)目(指示磁軌中存儲于FS 12或IS 13中的簇的數(shù)目并且用于確 定是否指向重組的信息)?!创啬夸洷?1(前向查詢)>簇目錄表31是用于在磁軌中的數(shù)據(jù)存儲于FS 12或IS 13中時(shí)追蹤邏輯塊的中 間表。針對每個磁軌提供簇目錄表31。登記于每個簇目錄表31中的簇目錄信息是由指示 簇表32的表數(shù)目的信息(簇表數(shù)目信息)的陣列組成。一條信息選自通過LBA的簇地址 的LSB(t)比特中的少量上部比特排列于一個簇目錄表31中的多條簇表數(shù)目信息中。簇目錄表31包括簇目錄LRU表31a,其用于通過使用LRU的雙向連接列表以寫 入時(shí)間作為參考來管理該簇目錄信息(簇表數(shù)目信息的陣列)以及相應(yīng)磁軌地址的時(shí)間排 序;以及簇目錄空閑信息表31b,其通過雙向連接列表來管理空閑簇目錄以及相應(yīng)磁軌地 址?!创乇?2(前向查詢)>簇表32是與簇目錄表31有關(guān)并且管理邏輯塊中的簇位置的表,當(dāng)將磁軌中的數(shù) 據(jù)存儲于FS 12或IS 13中時(shí)數(shù)據(jù)存儲于該簇位置處。經(jīng)由簇目錄表31間接地從磁軌表 30參考簇表32。簇表32實(shí)際上是針對多個簇的(邏輯塊地址+簇位置)的陣列。一條信 息選自通過LBA的簇位置的LSB (t)比特中的少許下部比特排列于一個簇表32中的(邏輯 塊地址+簇位置)的多條簇表數(shù)目信息。簇表32也在其中包括簇塊信息的數(shù)目和關(guān)于簇 位置的信息作為一個陣列。<簇塊信息表33 (反向查詢)>簇塊是邏輯塊之間以簇為單位存儲數(shù)據(jù)的塊。簇塊信息是用于管理FS12和IS 13 的邏輯塊的信息,并且指示存在于邏輯塊中的簇的類型。按FS12和IS 13中的FIFO的次 序來耦合多個簇塊信息作為雙向連接列表。簇塊信息包括以下內(nèi)容(1)邏輯塊地址;(2)有效簇的數(shù)目;以及C3)邏輯中包括的簇的LBA。簇塊信息表33包括用于管理空閑信息的簇塊信息表33a、針對FS 12的簇塊信息 表33b、以及針對IS 13的簇塊信息表33c。簇塊信息表33a管理未使用的簇塊信息,簇塊 信息表3 管理FS 12中包括的簇塊信息,以及簇塊信息表33c管理IS 13中包括的簇塊 信息。作為雙向連接列表來管理簇塊信息表33a至33c中的每個。反向查詢地址解譯的主 要用途為IS 13的緊縮。使用反向查詢地址解譯來檢查在作為緊縮目標(biāo)的邏輯塊中存儲的 簇的類型,以及將數(shù)據(jù)重寫至不同位置。因此,在本實(shí)施例中,反向查詢地址解譯僅將以簇 為單位存儲數(shù)據(jù)的FS 12和IS 13用作目標(biāo)。
<邏輯至物理解譯表40 (前向查詢)>邏輯至物理解譯表40是用于管理關(guān)于邏輯塊地址和物理塊地址之間的解譯及其 類似物的信息的表。對于每個邏輯塊地址,邏輯至物理解譯表40包括指示屬于邏輯塊的多 個物理塊地址的信息、指示邏輯塊地址的擦除次數(shù)的信息、以及關(guān)于簇塊信息數(shù)目的信息。 為了將某個LBA的數(shù)據(jù)重寫至不同位置,需要使原始簇塊中的LBA無效,從而需要從LBA追 蹤簇塊。因此,將簇塊信息的標(biāo)識符存儲在邏輯至物理解譯表40的邏輯塊的管理信息中。(快照和日志)通過每個管理表所管理的管理信息,可使主機(jī)中使用的LBA、SSD 100中使用的邏 輯NAND地址(邏輯塊地址+偏移)以及NAND存儲器10中使用的物理NAND地址(物理塊 地址+偏移)彼此關(guān)聯(lián),從而可執(zhí)行主機(jī)1與NAND存儲器10之間的數(shù)據(jù)交換。以上管理表中用于NAND存儲器管理的表(例如圖7中所示的磁軌表30、簇目錄表 31、簇表32、簇塊信息表33、和邏輯至物理解譯表40)存儲于非易失性NAND存儲器10的特 定區(qū)中。在啟動時(shí),將存儲于NAND存儲器10中的每個管理表加載至易失性RAM 20的工作 區(qū)(其由數(shù)據(jù)管理單元120使用)上,從而更新每個管理表。加載至DRAM 20的每個管理 表稱為主表。即使當(dāng)電源關(guān)閉時(shí),需要將主表恢復(fù)至電源關(guān)閉之前的狀態(tài),從而需要將主表 存儲在非易失性NAND存儲器10的系統(tǒng)??煺罩甘綨AND存儲器10上的整個非易失性管理 表。直接將加載至NAND存儲器10上的主表存儲于NAND存儲器中的操作也表示為“提取快 照”。日志指示管理表的改變差異。如果針對主表的每個更新獲取快照,則處理速度變慢, 并且NAND存儲器10中的寫入的次數(shù)增加,從而通常僅將作為改變差異的日志記錄在NAND 存儲器10中。在主表中反映日志并將其存儲在NAND存儲器10中的操作也稱為“提交”。圖8是示出在數(shù)據(jù)更新時(shí)的快照和日志的更新狀態(tài)的視圖。當(dāng)數(shù)據(jù)管理單元120 更新數(shù)據(jù)時(shí),將對主表進(jìn)行的改變累積于DRAM 20上的日志(以下為“DRAM日志”)中。依 據(jù)管理表的類型,直接更新主表,并將更新內(nèi)容累積于DRAM日志中,或在不直接改變主表 的情況下將更新內(nèi)容記錄于固定在DRAM日志上的改變區(qū)中。當(dāng)執(zhí)行數(shù)據(jù)讀出或數(shù)據(jù)寫入 時(shí),除了主表外,還參考累積的DRAM日志。在數(shù)據(jù)更新變穩(wěn)定之后,提交日志。在提交處理中,必要時(shí)在主表中反映DRAM日 志的內(nèi)容,并且進(jìn)一步將其存儲于NAND存儲器10中以使其為非易失性。在例如處于正常 斷電序列中以及用于日志的存儲區(qū)變得不足時(shí)的情況下,將快照存儲于NAND存儲器10中。 在完成將日志或快照寫入NAND存儲器10中時(shí),完成使管理表為非易失性的處理。例如,在 國際專利申請PCT/JP2009/052597中公開了用于以此方式使管理信息為非易失性的技術(shù), 并且其全部內(nèi)容合并在本申請中?!醋x取處理〉簡要地解釋讀取處理。當(dāng)從ATA命令處理單元121輸入讀取命令和作為讀出地址 的LBA時(shí),數(shù)據(jù)管理單元120搜遍RC管理表23和WC磁軌表M以檢查與該LBA對應(yīng)的數(shù) 據(jù)是否存在于WC 21或RC 22中。在高速緩存命中的情況下,數(shù)據(jù)管理單元120讀出WC 21 或RC 22的對應(yīng)于該LBA的數(shù)據(jù),并且將該數(shù)據(jù)發(fā)送至ATA命令處理單元121。如果在RC 22或WC 21中不存在命中,則數(shù)據(jù)管理單元120搜索作為搜索目標(biāo)的 數(shù)據(jù)存儲于NAND存儲器10的哪個部分中。如果數(shù)據(jù)存儲于MS 11上,則數(shù)據(jù)管理單元120 追蹤LBA —磁軌表30 —邏輯至物理解譯表40,以獲得MS上的數(shù)據(jù)。另一方面,如果數(shù)據(jù)存儲于FS 12或IS 13上,則數(shù)據(jù)管理單元120追蹤LBA —磁軌表30 —簇目錄表31 —簇表 32—邏輯至物理解譯表40,以獲得FS 12或IS 13上的數(shù)據(jù)?!磳懭霐?shù)據(jù)〉(WC21中的處理)接下來,根據(jù)圖9中所示的流程圖簡要地說明寫入處理。在寫入處理中,當(dāng)從ATA 命令處理單元121輸入寫入命令和作為寫入地址的LBA時(shí)(步驟S100),數(shù)據(jù)管理單元120 將由該LBA指定的數(shù)據(jù)寫入WC 21中。具體地,數(shù)據(jù)管理單元120判斷在WC 21中是否存 在對應(yīng)于寫入請求的空閑區(qū)(步驟Sl 10),并且在WC 21中存在空閑區(qū)時(shí)將由該LBA指定的 數(shù)據(jù)寫入WC中(步驟S150)。另一方面,當(dāng)WC 21不具有對應(yīng)于寫入請求的空閑區(qū)時(shí),數(shù)據(jù)管理單元120通過參 考用于DRAM管理的各種管理表來清空來自WC 21的數(shù)據(jù),以將其寫入NAND存儲器10中, 由此產(chǎn)生空閑區(qū)。具體地,數(shù)據(jù)管理單元120檢查磁軌中的有效簇的數(shù)目(步驟S120),確 定磁軌(其中磁軌中的有效簇的數(shù)目少于特定百分比)作為低密度磁軌,并且將其作為簇 大小的數(shù)據(jù)清空至作為清空目的地的FS 12(步驟S140)。當(dāng)清空目的地為FS12時(shí),以邏輯 頁為單位寫入次貴重的數(shù)據(jù)簇。在步驟S120的判斷中,當(dāng)判斷磁軌中的有效簇的數(shù)目等于或大于特定百分比時(shí), 這個磁軌倍確定為高密度磁軌,并且作為磁軌大小的數(shù)據(jù)倍清空至作為清空目的地的MS 11(步驟S130)。當(dāng)清空目的地為MS 11時(shí),將磁軌大小的數(shù)據(jù)直接寫入整個邏輯塊中。當(dāng) 存在多個作為寫入目標(biāo)的邏輯塊時(shí),通過使用雙倍速模式或存儲體交錯來改善傳送效率。這樣,在WC 21中產(chǎn)生空閑區(qū)之后,將由LBA指定的數(shù)據(jù)寫入WC 21中(步驟 S150)。根據(jù)寫入WC 21中的數(shù)據(jù)或清空至NAND存儲器10的數(shù)據(jù)來更新用于DRAM管理的 各種管理表。(從 WC 21 至 MS 11 的寫入)接下來,根據(jù)圖10和圖11說明高密度磁軌的從WC 21至MS 11的寫入處理。圖 10為示出其操作過程的流程圖,以及圖11為示出其操作概念的示意圖。以如下的過程來執(zhí)行對MS 11的寫入。除了為清空目標(biāo)的高密度磁軌之外,數(shù)據(jù) 管理單元120可選擇可通過利用存儲體交錯來對其并行執(zhí)行寫入的多個高密度磁軌。1.數(shù)據(jù)管理單元120在DRAM 20上產(chǎn)生磁軌的數(shù)據(jù)影像(填補(bǔ)處理)(步驟 S200)。具體地,從NAND存儲器10讀出不存在于WC 21中的簇和不保持WC 21中的所有扇 區(qū)的簇,以將其與WC 21中的數(shù)據(jù)整合。2.數(shù)據(jù)管理單元120固定來自MS 11的CFB的邏輯塊(磁軌塊)(步驟S210)。磁 軌塊為邏輯塊中以磁軌為單位在其中存儲數(shù)據(jù)的塊。3.數(shù)據(jù)管理單元120將步驟S200中產(chǎn)生的磁軌的數(shù)據(jù)影像寫入步驟S210中固定 的邏輯塊中(步驟S220)。4.數(shù)據(jù)管理單元120檢查來自該磁軌的LBA的磁軌信息,將該磁軌信息與對應(yīng)于 寫入的邏輯塊的邏輯塊地址關(guān)聯(lián),以及將其登記于用于NAND存儲器管理的所需表中(步驟 S230)。5.數(shù)據(jù)管理單元120使WC 21和NAND存儲器10中的舊數(shù)據(jù)無效(步驟S240)。 具體地,數(shù)據(jù)管理單元120使WC 21中被清空至MS 11的高速緩存數(shù)據(jù)以及NAND存儲器10中用于步驟S200的填補(bǔ)處理中的數(shù)據(jù)在管理表上從有效狀態(tài)變?yōu)闊o效狀態(tài),從而使其無 效。(從 WC 21 至 FS 12 的寫入)接下來,根據(jù)圖12和圖13說明低密度磁軌的從WC 21至MS 11的寫入處理。圖 12為示出其操作過程的流程圖,以及圖13為示出其操作概念的示意圖。向FS 12的寫入通過以下操作來執(zhí)行在DRAM 20上產(chǎn)生簇的數(shù)據(jù)影像(填補(bǔ)處 理)以及通過使用偽SLC模式在新固定的邏輯塊(簇塊)中以邏輯頁為單位執(zhí)行寫入。作 為待固定的邏輯塊,將具有能夠進(jìn)行寫入的等于或大于待寫入的數(shù)據(jù)影像的邏輯頁的FFB 優(yōu)先化。如果FFB不存在,則使用CFB。以如下過程來執(zhí)行FS 12中的寫入。用于將低密度磁軌的數(shù)據(jù)從WC 21寫入至FS 12的邏輯塊(簇塊)稱為FS輸入 緩沖器(FSIB)。除了為清空目標(biāo)的低密度磁軌之外,數(shù)據(jù)管理單元120可涉及其他低密度 磁軌,使得待寫入的簇?cái)?shù)據(jù)量與偽SLC模式的邏輯塊邊界一致。1.數(shù)據(jù)管理單元120判斷低密度磁軌中的從WC 21輸入的總數(shù)據(jù)量(步驟S300)。 當(dāng)所判斷的總數(shù)據(jù)量較小時(shí)(即,當(dāng)有效簇的數(shù)目小于特定閾值時(shí)),數(shù)據(jù)管理單元120將 其中可寫入數(shù)據(jù)的FFB固定為FSIB(步驟S310)。2.當(dāng)數(shù)據(jù)管理單元120判斷低密度磁軌中的從WC 21輸入的總數(shù)據(jù)量較大時(shí) (即,當(dāng)有效簇的數(shù)目等于或大于特定閾值時(shí)),數(shù)據(jù)管理單元120將CFB固定為FSIB (步 驟S320)。此時(shí),將能夠并行寫入數(shù)據(jù)的多個邏輯塊固定為FSIB。3.數(shù)據(jù)管理單元120產(chǎn)生待寫入DRAM 20上的簇的數(shù)據(jù)影像(步驟S330)。具體 地,對于不保持WC 21中的所有扇區(qū)的簇,數(shù)據(jù)管理單元120從NAND存儲器10讀出不存在 于WC 21上的扇區(qū)的數(shù)據(jù),以將其與WC 21上的扇區(qū)的數(shù)據(jù)整合。4.數(shù)據(jù)管理單元120將WC 21上的簇以及工作區(qū)上所產(chǎn)生的簇影像寫入FSIB中 (步驟 S340)。5.數(shù)據(jù)管理單元120將這個FSIB上的簇塊信息添加至針對FS的簇塊信息表 33b (步驟 S350)。6.數(shù)據(jù)管理單元120將低密度磁軌上的寫入至FSIB中的簇目錄信息與對應(yīng)磁軌 地址重新插入至簇目錄LRU表31a的末端(步驟S360)。(從FS12至IS 13的重新定位)接下來,根據(jù)圖14和圖15說明從FS 12至IS 13的數(shù)據(jù)重新定位。圖14為示出 其操作過程的流程圖,以及圖15為示出其操作概念的示意圖。數(shù)據(jù)管理單元120判斷在FS 12的管理下邏輯塊的數(shù)目是否超過邏輯塊的特定最 大數(shù)目(步驟S400)。如圖15所示,當(dāng)在FS 12的管理下邏輯塊的數(shù)目超過邏輯塊的特定 最大數(shù)目時(shí),數(shù)據(jù)管理單元120將從FS 12溢出的邏輯塊直接重新定位至IS 13。在本實(shí)施 例中,F(xiàn)S 12是由偽SLC模式的多個邏輯塊組成,并且偽SLC模式的邏輯塊是從FS 12直接 重新定位至IS 13。根據(jù)溢出邏輯塊中有效簇的數(shù)目及其類似物通過如下規(guī)則來確定一處 理單位中待重新定位的邏輯塊的數(shù)目(步驟S410)。從FS 12的最早邏輯塊添加經(jīng)重新定位的邏輯塊,從而溢出邏輯塊中的簇的總數(shù) 目變得接近于MLC模式的邏輯塊的邊界(即,接近于一個邏輯塊的簇的數(shù)目Ot)或其倍數(shù) (m Χ2、πι為自然數(shù)))。例如,當(dāng)溢出邏輯塊中的簇的數(shù)目為21與2"之間的值時(shí),作為重
18新定位目標(biāo)的邏輯塊的數(shù)目增加,從而簇的數(shù)目接近于2t+1 (包括2t+1)。使得簇的數(shù)目接近 于MLC模式的一個邏輯塊的邊界,以在緊縮之后在邏輯塊中容納盡可能多的有效簇。當(dāng)簇的數(shù)目超過可同時(shí)在IS 13中經(jīng)過緊縮的簇的數(shù)目ζ時(shí),設(shè)定邏輯塊的數(shù)目, 使得簇的數(shù)目等于或小于這個簇的數(shù)目ζ。將上限設(shè)置為在一個處理中待重新定位的邏輯塊的數(shù)目。設(shè)定這個極限,用于防 止在IS 13的管理下邏輯塊的數(shù)目的臨時(shí)增加。將由此確定為重新定位目標(biāo)的邏輯塊從FS 12重新定位至IS 13(步驟S420)。(IS 13中的緊縮和重組)接下來,根據(jù)圖16中所示的流程圖說明IS 13中的緊縮處理和重組處理。數(shù)據(jù)管理單元120判斷在IS 13的管理下邏輯塊的數(shù)目是否超過邏輯塊的特定最 大數(shù)目(步驟S500)。當(dāng)在IS 13的管理下邏輯塊的數(shù)目超過邏輯塊的特定最大數(shù)目時(shí), 數(shù)據(jù)管理單元120執(zhí)行對MS 11的數(shù)據(jù)重新定位(重組處理)以及緊縮處理,以抑制在IS 13的管理下邏輯塊的數(shù)目使其等于或小于邏輯塊的最大數(shù)目(步驟S510)。當(dāng)數(shù)據(jù)擦除單 位(邏輯塊)與數(shù)據(jù)管理單位(簇)不同時(shí),根據(jù)NAND存儲器10的重寫的進(jìn)程,無效數(shù)據(jù) 使邏輯塊為多孔的(porous)。當(dāng)處于該多孔狀態(tài)的邏輯塊增加時(shí),實(shí)質(zhì)上可用的邏輯塊減 少,并且無法有效地使用NAND存儲器10的存儲區(qū)。因此,執(zhí)行用于收集有效簇并將其重寫 在不同邏輯塊中的稱為緊縮的處理。重組處理是將FS 12和IS 13的簇的整合至磁軌中并 將其清空至MSll的處理。隨后,更詳細(xì)地說明這個實(shí)施例的基本部分。如圖17所示,用于NAND存儲器管理 的表包括完整空閑塊管理表(CFB管理表)300、片段空閑塊管理表(FFB管理表)310、活動 塊管理表(AB管理表)320、和壞塊管理表(BB管理表)330,其不同于圖7中所示的管理表。CFB管理表300用于管理CFB。CFB是FB,其在使用之前立即擦除邏輯塊,并且在 擦除狀態(tài)下被寫入,并且可將數(shù)據(jù)從位于邏輯塊頂部的邏輯頁寫入其中。在本實(shí)施例中,在 MS 11、FS 12和IS 13中使用CFB。CFB管理表300包括兩種結(jié)構(gòu),即,返回列表和獲取列 表。返回FIFO列表用于保持在特定時(shí)間段期間沒有使用的邏輯塊以及釋放邏輯塊,并且按 照擦除次數(shù)來排序。在接收到CFB的獲取請求后提供分配列表,并且按照擦除的次數(shù)來排 序(具有較少次數(shù)的邏輯塊位于列表的頂部)。根據(jù)擦除的次數(shù)將返回列表220a推出的塊 插入至分配列表的中間。當(dāng)請求CFB的分配時(shí),數(shù)據(jù)管理單元120從分配列表的頂部取出 CFB,并且分配該CFB。FFB管理表310用于管理FFB。該FFB是邏輯塊,其中盡管將無效數(shù)據(jù)一直寫入至 邏輯頁的中間,但剩余邏輯頁處于擦除狀態(tài),并且可另外將數(shù)據(jù)寫入至剩余邏輯頁。在FS 12和IS 13中使用FFB。在FFB管理表310中,作為針對每一數(shù)目個空閑邏輯頁的雙向列 表來管理用作FFB的邏輯塊地址。FFB管理表310管理用于辨別寫入數(shù)據(jù)的邏輯頁(無效 頁)和沒有寫入數(shù)據(jù)的邏輯頁(未使用的頁)的信息。AB管理表320是邏輯塊(活動塊AB)的列表,其中將用途從FB分配至MS 11、FS 12和IS 13,并且各個項(xiàng)目保持邏輯塊地址。將最先登記的邏輯塊定位于頂部。例如,AB管 理表用于刷新處理。BB管理表330用于以構(gòu)成邏輯塊的個體物理塊為單位來管理壞塊BB。例如,在BB 管理表330中,將無法正常完成數(shù)據(jù)擦除的物理塊登記為壞塊BB。
圖18是本實(shí)施例中的基本部分的功能配置的框圖。NAND存儲器10在其中存儲 用戶數(shù)據(jù)(存儲單元)201,例如存儲用戶數(shù)據(jù)的MS IUFS 12和IS 13;除了圖7和圖17 中所示的管理表中用于DRAM管理的表之外,用于NAND存儲器管理的各種表(圖7中的磁 軌表30、簇目錄表31、簇表32、簇塊信息表33、邏輯值物理解譯表40、CFB管理表300、FFB 管理表310、AB管理表320、和BB管理表330) 202,其存儲于NAND存儲器10上的特定存儲 區(qū)中作為快照;以及NAND日志203,其包括差異日志(作為NAND管理表202的更新前后的 差異的信息)、活動日志、和待用日志,如在NAND管理表202中所述NAND日志203存儲于 NAND存儲器10上的特定存儲區(qū)(非易失性日志區(qū))中。DRAM 20包括用作WC 21和RC 22的區(qū)域。此外,DRAM 20包括存儲主表204的區(qū) 域,主表204是在DRAM 20上加載的NAND管理表202。此外,DRAM 20包括存儲DRAM日志 205的區(qū)域,所述DRAM 205包括在更新主表204時(shí)更新前后的差異信息的差異日志,以及活 動日志和待用日志。作為數(shù)據(jù)管理單元的控制器120包括讀取和寫入控制單元210、日志控制單元 211、日志反映單元212、操作狀態(tài)管理單元213、和管理信息恢復(fù)單元214。本發(fā)明的每個實(shí) 施例中的每個功能框可通過硬件和軟件中的任一個或組合來實(shí)現(xiàn)。因此,以下大體上從每 個功能框的功能的觀點(diǎn)來解釋每個功能框,從而清楚看出每個功能框是硬件和軟件中的任 一個。所述功能是實(shí)現(xiàn)為硬件還是軟件依據(jù)特定實(shí)施例或施加于整個系統(tǒng)上的設(shè)計(jì)約束。 對于每個特定實(shí)施例,本領(lǐng)域普通技術(shù)人員可通過各種方法實(shí)現(xiàn)這些功能,并且確定這個 實(shí)現(xiàn)包括在本發(fā)明的范圍內(nèi)。讀取和寫入控制單元210基于主表204和DRAM日志205控制讀出和寫入。例如, 讀取和寫入控制單元210根據(jù)從主機(jī)1經(jīng)由主機(jī)I/F 2輸入的命令和邏輯地址來執(zhí)行對于 DRAM 20 (WC 21)的數(shù)據(jù)寫入和從DRAM 20 (RC 22)的數(shù)據(jù)讀出。此外,例如,讀取和寫入控 制單元210基于邏輯至物理解譯表40及其類似物執(zhí)行從DRAM 20 (WC 21)至NAND存儲器 10的數(shù)據(jù)寫入以及從NAND存儲器10至DRAM 20 (RC 22)的數(shù)據(jù)讀出。例如,日志控制單元211執(zhí)行用于在系統(tǒng)啟動時(shí)將作為主表204的存儲于NAND存儲器10中的各種NAND管理 表(快照)202傳送至DRAM 20的處理;用于累積和存儲差異日志的處理,所述差異日志是當(dāng)更新主表204的事件發(fā)生時(shí) (例如當(dāng)讀取和寫入控制單元210執(zhí)行對于NAND存儲器10的數(shù)據(jù)寫入時(shí))DRAM日志205 中的在主表204的更新前后的差異信息;以及用于在建立特定條件時(shí)(例如,當(dāng)正常斷電序列發(fā)生或DRAM 20上的日志存儲區(qū) (用于存儲DRAM日志205的區(qū)域)變得不足時(shí))將DRAM20上的主表存儲于NAND存儲器 10中作為快照的快照處理。當(dāng)建立特定條件時(shí)(例如,當(dāng)DRAM 20中的日志的量(DRAM日志205的量)達(dá)到某 一量或達(dá)到在經(jīng)更新的管理表(主表204)之間實(shí)現(xiàn)匹配的點(diǎn)時(shí)),日志反映單元212另外 將DRAM日志205存儲于包括NAND存儲器10中的邏輯塊的NAND日志(非易失性日志)203 中,并且執(zhí)行用于在主表204中反映DRAM日志205的提交處理。當(dāng)執(zhí)行快照處理或提交處 理時(shí),使已累積于DRAM 20上的DRAM日志205無效。用于存儲該日志的邏輯塊可以是偽 SLC模式下的邏輯塊,以實(shí)現(xiàn)高速度。
操作狀態(tài)管理單元213執(zhí)行用于檢測不正確斷電的日志記錄處理,其中在系統(tǒng)啟 動之后在日志反映單元212將第一差異日志記錄于NAND日志203之前將指示系統(tǒng)正在運(yùn) 行的活動日志記錄于NAND日志203中,并且當(dāng)執(zhí)行正常系統(tǒng)暫停時(shí),指示系統(tǒng)暫停的待用 日志在差異日志或活動日志之后記錄于NAND日志203中。管理信息恢復(fù)單元214執(zhí)行用于在系統(tǒng)啟動時(shí)基于活動日志和待用日志的經(jīng)記錄狀態(tài)來檢測NAND日志203 中的活動日志、差異日志和待用日志中的至少一個,并且判斷上次執(zhí)行了正常系統(tǒng)暫停還 是執(zhí)行了不正確斷電序列的處理;以及用于在判斷執(zhí)行了不正確斷電序列時(shí)改變管理表從而釋放所有FFB并且在隨后 將經(jīng)釋放的所有FFB用作CFB的處理。圖19是示出存儲活動日志、待用日志和差異日志的過程的流程圖。操作狀態(tài)管理 單元213管理作為系統(tǒng)的SSD 100是處于SSD正在運(yùn)行的活動狀態(tài)還是SSD暫停的待用狀 態(tài)以作為電力模式信息。假設(shè)在電力開啟(將電力供應(yīng)至電源電路5,產(chǎn)生內(nèi)部電源和通電重設(shè)信號,并且 初始化驅(qū)動控制電路4,從而系統(tǒng)啟動)之后,操作狀態(tài)管理單元213立即將SSD 100的操 作狀態(tài)識別為待用狀態(tài)(SllOO)。在電力開啟(待用狀態(tài))之后,在接收到具有數(shù)據(jù)管理單元120從主機(jī)1訪問NAND 存儲器10的可能性的命令后(例如,在初始化完成時(shí),在請求激活時(shí),以及在請求數(shù)據(jù)訪問 時(shí)),操作狀態(tài)管理單元213將活動日志存儲于NAND日志203中,并且隨后,將SSD 100的 操作狀態(tài)轉(zhuǎn)變?yōu)榛顒訝顟B(tài)(步驟S1101)。當(dāng)一時(shí)間發(fā)生使得需要更新主表204時(shí)(例如,當(dāng)執(zhí)行對于NAND存儲器10的數(shù) 據(jù)寫入時(shí)),日志控制單元211將差異日志(其為主表204的更新前后的差異信息)累積于 DRAM日志205中(步驟SllO2)。當(dāng)建立特定條件時(shí),日志反映單元212另外將DRAM日志205(差異日志)存儲于 包括NAND存儲器10的邏輯塊的NAND日志203中,并且執(zhí)行用于在主表204中反映DRAM 日志205的提交處理(步驟Sl 103)。在來自主機(jī)1的暫停請求(待用請求)時(shí),操作狀態(tài)管理單元213執(zhí)行用于將WC 21上的數(shù)據(jù)寫入NAND存儲器10中以使數(shù)據(jù)非易失性的清空處理。與清空處理一起,日志 控制單元211將差異日志(其為主表204的更新前后的差異信息)累積于DRAM日志205 中(步驟Sl 104)。日志反映單元212另外將DRAM日志205(差異日志)存儲于包括NAND存儲器10 的邏輯塊的NAND日志203中,并且執(zhí)行用于在主表204中反映DRAM日志205的提交處理。 此外,當(dāng)建立特定條件時(shí),日志控制單元211執(zhí)行快照處理(步驟S1105)。操作狀態(tài)管理單元213將SSD 100的操作狀態(tài)轉(zhuǎn)變?yōu)榇脿顟B(tài),并且在差異日志 之后將待用日志存儲于NAND日志203中。在正常地寫入待用日志之后,SSD 100可執(zhí)行正 常斷電序列(步驟Sl 106)。圖20A示出當(dāng)執(zhí)行正常斷電序列時(shí)在下一次系統(tǒng)啟動時(shí)的NAND日志203的狀態(tài), 以及圖20B示出當(dāng)發(fā)生不正確斷電時(shí)在下一次系統(tǒng)啟動時(shí)的NAND日志203的狀態(tài)。如圖20A所示,在正常斷電的情況下,首先記錄活動日志,接下來記錄差異日志(差異日志可能不存在),并且最后記錄待用日志。由此,在正常序列的情況下,在待用狀態(tài) 下不更新數(shù)據(jù)。因?yàn)樵诮邮盏絹碜灾鳈C(jī)1的暫停請求之后執(zhí)行該正常斷電序列,所以不執(zhí) 行活動狀態(tài)下的斷電。在電力開啟之后,管理信息恢復(fù)單元214在初始化處理中從NAND存儲器10讀取 NAND日志203,并且從前部開始掃描其內(nèi)容。通常,內(nèi)容從活動日志開始,接著差異日志,接 著為待用日志,并且隨后重復(fù)這個序列,并且最終該內(nèi)容以待用日志結(jié)束。當(dāng)首先記錄活動 日志并且最后記錄待用日志時(shí),管理信息恢復(fù)單元214判斷執(zhí)行了正常斷電序列。另一方面,如圖20B所示,在不正確斷電的情況下,僅存在活動日志,并且不在最 后記錄待用日志。即,通過存儲活動日志可檢測不正確斷電,其中“執(zhí)行向NAND存儲器10 中的寫入,然而,日志的提交還未完成”。當(dāng)識別到最后日志并非待用日志(為活動日志或 差異日志)時(shí),管理信息恢復(fù)單元214判斷存在不正確的斷電。在不存在活動日志并且僅存在待用日志的情況下,在電力開啟之后,當(dāng)在將第一 差異日志記錄于NAND日志203之前發(fā)生不正確的斷電時(shí),由于先前的正常斷電而最后記錄 待用日志,因此不能將不正確斷電與正常斷電辨別開。因此,如在本實(shí)施例中,有可能通過 使用活動日志和待用日志以簡單配置來檢測不正確斷電。接下來說明在管理信息恢復(fù)單元214判斷不正確的斷電已發(fā)生時(shí)所執(zhí)行的處理。 在MLC NAND存儲器中,當(dāng)將上部頁添加至已記錄數(shù)據(jù)的物理塊時(shí),過去記錄的下部頁的內(nèi) 容可能丟失,并且在不限于SLC/MLCNAND存儲器的NAND存儲器中,在相對于一個物理頁執(zhí) 行寫入之后,可能無法讀取該物理塊中的數(shù)據(jù)。為了解決這些可能性,在本實(shí)施例中,采用 FFB,其為邏輯塊,其中盡管將無效數(shù)據(jù)一直寫入至邏輯頁的中間,但剩余邏輯頁處于擦除 狀態(tài)(如圖21所示)。在該FFB中,相對于剩余邏輯頁執(zhí)行額外寫入。在本實(shí)施例中,在 FS 12和IS 13中采用FFB。當(dāng)作FS 12和IS 13來管理的FFB中的無效數(shù)據(jù)是FS 12和 IS 13中的最初有效的數(shù)據(jù),然而,其從WC 21重寫至例如MS 11的另一處,并且在該邏輯塊 中變得無效。為了實(shí)現(xiàn)對FFB的額外寫入,在圖7所示的針對各個邏輯塊的簇塊信息表33中管 理用于辨別在擦除后已寫入數(shù)據(jù)的邏輯頁(有效頁)與沒有寫入數(shù)據(jù)的未使用頁的信息 (FFB管理表310中管理的FFB管理信息)。需要將FFB管理信息寫入至NAND存儲器10中 以使FFB管理信息為非易失性,從而可在SSD 100的斷電期間使用信息。然而,當(dāng)不正確的斷電發(fā)生同時(shí)將數(shù)據(jù)寫入至FFB中并且將FFB管理信息寫入至 NAND存儲器10中以使信息為非易失性(提交)時(shí),出現(xiàn)問題。具體地,在下次啟動SSD時(shí), 在將數(shù)據(jù)寫入至具有未使用頁的FFB中的某一邏輯頁中之后,當(dāng)在將數(shù)據(jù)提交至NAND存儲 器10之前發(fā)生不正確斷電時(shí)(已將數(shù)據(jù)寫入至FFB管理信息的邏輯頁中),F(xiàn)FB管理信息 處于未寫入狀態(tài),盡管數(shù)據(jù)實(shí)際上已寫入至FFB中。在這個狀態(tài)下,為了管理的目的,將邏 輯頁看作未寫入(未使用)的,因此,嘗試重新將數(shù)據(jù)寫入至邏輯頁中,并且可能發(fā)生寫入 錯誤(數(shù)據(jù)錯亂)。因此,在日志或快照已寫入至NAND存儲器10中的時(shí)間點(diǎn),管理表變?yōu)榉且资浴?當(dāng)在將日志或快照寫入至NAND存儲器10中之前執(zhí)行不正確斷電序列時(shí),在下一次啟動時(shí), 管理表的狀態(tài)返回至上次提交的時(shí)間點(diǎn)。應(yīng)注意,雖然管理表的狀態(tài)返回,但NAND存儲器 10中的FFB的額外記錄狀態(tài)不返回。
圖22是示出在系統(tǒng)啟動時(shí)由數(shù)據(jù)管理單元120執(zhí)行的處理的流程圖。管理信息恢復(fù)單元214在系統(tǒng)啟動時(shí)檢測NAND日志203中的活動日志、差異日志 和待用日志中的至少一個,并且基于活動日志和待用日志的經(jīng)記錄狀態(tài)來判斷上次執(zhí)行正 常系統(tǒng)暫停還是執(zhí)行不正確的斷電(步驟S1200)。當(dāng)判斷執(zhí)行了正常系統(tǒng)暫停(步驟S1200為“是”)時(shí),管理信息恢復(fù)單元214基 于最新快照和差異日志來恢復(fù)管理表(主表204和DRAM日志205)(步驟S1201)。當(dāng)判斷執(zhí)行了不正確斷電(步驟S1200為“否”)時(shí),管理信息恢復(fù)單元214編輯 和改變這些條FFB管理信息,從而在下次寫入數(shù)據(jù)時(shí),在擦除邏輯塊之后執(zhí)行寫入。具體 地,在不正確斷電之后,管理信息恢復(fù)單元214啟動時(shí)執(zhí)行用于將所有FFB重新定位至CFB 的處理,即,用于重新定位FFB管理表310中管理的所有邏輯塊(邏輯塊地址)使其在CFB 管理表300的控制下的處理。因此,解決了 FFB中的寫入狀態(tài)與FFB管理信息之間的不一 致性(步驟S1202)。在執(zhí)行用于將所有FFB重新定位至CFB的處理之后,管理信息恢復(fù)單元214基于 最新的快照和差異日志來恢復(fù)管理表(主表204和DRAM日志205)(步驟S1203)。日志反映單元212基于恢復(fù)的主表204和DRAM日志205再次獲取快照(步驟 S1204)。因?yàn)樵陬~外記錄之前僅將無效數(shù)據(jù)存儲于FFB中,所以即使在將邏輯塊重新定位 至CFB并且隨后將其擦除時(shí),也不存在問題。此外,在CFB的情況下,當(dāng)不正確斷電發(fā)生時(shí), NAND存儲器10中的CFB的管理表與狀態(tài)之間發(fā)生不一致,并且盡管數(shù)據(jù)已寫入至CFB中, 但CFB管理信息仍處于未寫入狀態(tài)的情形發(fā)生。然而,因?yàn)榫o接在寫入之前在CFB中執(zhí)行 擦除,所以上述寫入錯誤不發(fā)生。此外,當(dāng)檢測到不正確的斷電時(shí),再次獲取快照,以使非易 失性信息返回至穩(wěn)定狀態(tài)。在本實(shí)施例中,通過添加操作狀態(tài)管理單元213和管理信息恢復(fù)單元214來實(shí)現(xiàn) 對不正確斷電的檢測以及FFB中的寫入狀態(tài)與FFB管理信息之間的不一致的解決方法。在根據(jù)本實(shí)施例的SSD 100中,在系統(tǒng)啟動之后,在將第一差異日志記錄于NAND 日志203中之前,將指示系統(tǒng)正在運(yùn)行的活動日志記錄于NAND日志203中,并且在正常系 統(tǒng)暫停時(shí),在差異日志之后將指示系統(tǒng)暫停的待用日志另外記錄于NAND日志203中。在系 統(tǒng)啟動時(shí),基于NAND日志203中的活動日志和待用日志的經(jīng)記錄狀態(tài)來判斷上次已執(zhí)行正 常系統(tǒng)暫停還是已發(fā)生不正確斷電,由此能夠容易和可靠的檢測不正確的斷電。此外,在根據(jù)本實(shí)施例的SSD 100中,當(dāng)檢測到不正確的斷電時(shí),因?yàn)镕FB經(jīng)重新 定位而處于CFB的控制下,所以FFB中的寫入狀態(tài)與FFB管理信息之間的不一致得以解決, 并且可預(yù)先防止寫入錯誤的發(fā)生。因此,有可能使用NAND型閃存來構(gòu)建具有高可靠性的存 儲器系統(tǒng)。(第二實(shí)施例)圖23是安裝有SSD 100的PC 1200的實(shí)例的透視圖。PC 1200包括主體1201和 顯示單元1202。顯示單元1202包括顯示外殼1203和容納于顯示外殼1203中的顯示設(shè)備 1204。主體1201包括底盤1205、鍵盤1206、和作為定點(diǎn)設(shè)備的觸控板1207。底盤1205 在其中包括主電路板、光盤設(shè)備(ODD)單元、卡槽和SSD 100。
卡槽經(jīng)提供而鄰近于底盤1205的外圍壁。外圍壁具有面向卡槽的開口 1208。用 戶可經(jīng)由開口 1208將額外設(shè)備從底盤1205外部插入至卡槽中或從卡槽移除額外設(shè)備。SSD 100在安裝于PC 1200上的狀態(tài)下可用來替代傳統(tǒng)硬盤驅(qū)動器(HDD)或在插 入至PC 1200中包括的卡槽中的狀態(tài)下可用作額外設(shè)備。圖M是安裝有SSD 100的PC 1200的系統(tǒng)配置實(shí)例的視圖。PC 1200包括CPU 1301、北橋1302、主存儲區(qū)1303、視頻控制器1304、音頻控制器1305、南橋1309、基礎(chǔ)輸入/ 輸出系統(tǒng)只讀存儲區(qū)(BIOS-ROM) 1310、SSD 100、ODD單元1311、嵌入式控制器/鍵盤控制 器IC(EC/KBC) 1312、和網(wǎng)絡(luò)控制器1313。CPU 1301是用于控制PC 1200的操作的處理器,并且執(zhí)行從SSD 100載入至1303 上的操作系統(tǒng)。另外,當(dāng)ODD單元1311能夠?qū)?jīng)安裝的光盤執(zhí)行讀取處理和寫入處理中的 至少一個時(shí),CPU 1301執(zhí)行該處理。此外,CPU 1301執(zhí)行在BIOS-ROM 1310中存儲的系統(tǒng)BIOS。該系統(tǒng)BIOS是用于 控制PC 1200的硬件的計(jì)算機(jī)程序。北橋1302是將CPU 1301的本地總線連接至南橋1309的橋接設(shè)備。北橋1302具 有用于控制對主存儲器1303的訪問的存儲區(qū)控制器。此外,北橋1302具有執(zhí)行經(jīng)由加速通信端口(AGP)總線及其類似者與視頻控制器 1304通信和音頻控制器1305通信的功能。主存儲器1303在其中臨時(shí)存儲計(jì)算機(jī)程序和數(shù)據(jù),并且用作CPU1301的工作區(qū)。 例如,主存儲器1303例如由DRAM組成。視頻控制器1304是用于控制用作PC 1200的顯示監(jiān)視器的顯示單元1202的視頻 在線控制器。音頻控制器1305是用于控制PC 1200的揚(yáng)聲器1306的音頻重現(xiàn)控制器。南橋1309控制低管腳數(shù)(LPC)總線1314上的每個設(shè)備以及外圍組件互連(PCI) 總線1315上的每個設(shè)備。此外,南橋1309經(jīng)由ATA接口控制SSD 100,所述SSD 100為存 儲各種類型的軟件和數(shù)據(jù)PC 1200以扇區(qū)為單位對SSD 100進(jìn)行訪問。經(jīng)由ATA接口將寫入命令、讀取名、 清空命令及其類似者輸入至SSD 100。南橋1309具有控制對BI0S-R0M 1310和ODD單元1311的訪問的功能。EC/KBC 1312是單芯片微計(jì)算機(jī),用于電力管理的嵌入式控制器和用于控制鍵盤 (KB) 1206和觸控板1207的鍵盤控制器集成在所述單芯片微計(jì)算機(jī)中。EC/KBC 1312具有基于用戶對電力按鈕的操作來開啟/關(guān)閉PC 1200的功能。例 如,網(wǎng)絡(luò)控制器1313是通信設(shè)備,其執(zhí)行與例如因特網(wǎng)的外部網(wǎng)絡(luò)的通信。根據(jù)第二實(shí)施例的PC 1200將電力供應(yīng)至SSD 100,并且還發(fā)出暫停請求(待用請 求)至SSD 100。即使當(dāng)不正確地阻礙從PC 1200至SSD 100的電力供應(yīng)時(shí),也可預(yù)先防止 寫入錯誤的發(fā)生。對于本領(lǐng)域普通技術(shù)人員,將容易出現(xiàn)額外優(yōu)點(diǎn)和修改。因此,本發(fā)明在其較寬方 面中不限于這里所示和所述的特定細(xì)節(jié)和代表性實(shí)施例。因此,在不脫離如所附權(quán)利要求 及其等同物限定的一般性發(fā)明概念的精神或范圍的情況下可進(jìn)行各種修改。
權(quán)利要求
1.一種存儲器系統(tǒng),包括第一存儲單元,其為易失性的;第二存儲單元,其為非易失性的,并且連接至所述第一存儲單元;讀取/寫入控制單元,其基于管理表執(zhí)行從所述第二存儲單元的數(shù)據(jù)讀取以及向所述 第二存儲單元的數(shù)據(jù)寫入,在所述管理表中,邏輯地址與所述第二存儲單元中的數(shù)據(jù)存儲 位置關(guān)聯(lián);日志控制單元,其將所述管理表傳送至所述第一存儲單元,并且在更新所述第一存儲 單元上的所述管理表的事件發(fā)生時(shí),將所述管理表的更新前后的差異信息作為差異日志存 儲至所述第一存儲單元中;日志反映單元,其執(zhí)行提交處理,所述提交處理用于將所述差異日志存儲于所述第二 存儲單元中,并且在建立第一條件時(shí),在存儲于所述第一存儲單元中的所述管理表中反映 所述差異日志;操作狀態(tài)管理單元,其在系統(tǒng)啟動之后在所述日志反映單元將所述差異日志存儲至所 述第二存儲單元之前,將第一日志存儲至所述第二存儲單元中;并且在執(zhí)行正常系統(tǒng)暫停 時(shí),將第二日志存儲至所述第二存儲單元中;以及管理信息恢復(fù)單元,其檢測存儲于所述第二存儲單元中的所述第一日志、所述差異日 志、和所述第二日志中的至少一個;并且判斷是否執(zhí)行正常系統(tǒng)暫停。
2.如權(quán)利要求1所述的存儲器系統(tǒng),其中所述日志反映單元和所述操作狀態(tài)管理單元 另外將所述第一日志、所述差異日志和所述第二日志存儲至所述第二存儲單元中的非易失 性日志區(qū)域中,所述非易失性日志區(qū)域包括作為數(shù)據(jù)擦除單位的塊。
3.如權(quán)利要求2所述的存儲器系統(tǒng),其中所述操作狀態(tài)管理單元在所述系統(tǒng)啟動之后 在初始化已完成、請求激活或請求數(shù)據(jù)訪問的任一時(shí)間點(diǎn)將所述第一日志存儲至所述非易 失性日志區(qū)域中。
4.如權(quán)利要求2所述的存儲器系統(tǒng),其中所述操作狀態(tài)管理單元在從主機(jī)裝置接收到 系統(tǒng)暫停請求時(shí)將所述第二日志存儲至所述非易失性日志區(qū)域中。
5.如權(quán)利要求4所述的存儲器系統(tǒng),其中所述操作狀態(tài)管理單元在從主機(jī)裝置接收到 所述系統(tǒng)暫停請求時(shí)將所述第一存儲單元中的數(shù)據(jù)清空至所述第二存儲單元中。
6.如權(quán)利要求1所述的存儲器系統(tǒng),其中所述管理信息恢復(fù)單元在所述第二日志未存 儲于所述第二存儲單元中時(shí)判斷未執(zhí)行所述正常系統(tǒng)暫停。
7.如權(quán)利要求2所述的存儲器系統(tǒng),其中所述管理信息恢復(fù)單元在所述第二日志未存 儲于所述非易失性日志區(qū)域的末端時(shí)判斷未執(zhí)行所述正常系統(tǒng)暫停。
8.如權(quán)利要求1所述的存儲器系統(tǒng),其中所述第一條件包括以下條件中的至少一個 存儲于所述第一存儲單元的所述差異日志的量達(dá)到特定值的情況;以及所述管理表的更新 達(dá)到一點(diǎn),在該點(diǎn)處實(shí)現(xiàn)一致的情況。
9.如權(quán)利要求1所述的存儲器系統(tǒng),其中所述日志控制單元執(zhí)行快照處理,所述快照 處理用于在建立第二條件時(shí)將存儲于所述第一存儲單元中的所述管理表存儲至所述第二 存儲單元中。
10.如權(quán)利要求9所述的存儲器系統(tǒng),其中所述第二條件包括以下情況中的至少一個 執(zhí)行所述正常系統(tǒng)暫停的情況;以及所述第一存儲單元中所述差異日志的存儲區(qū)域變得不足的情況。
11.如權(quán)利要求1所述的存儲器系統(tǒng),其中所述日志反映單元在執(zhí)行所述提交處理之 后使存儲于所述第一存儲單元中的所述差異日志無效。
12.如權(quán)利要求9所述的存儲器系統(tǒng),其中所述日志控制單元在執(zhí)行所述快照處理之 后使存儲于所述第一存儲單元中的所述差異日志無效。
13.如權(quán)利要求1所述的存儲器系統(tǒng),其中所述第二存儲單元包括第一塊,在執(zhí)行擦除操作之后從頂部頁在所述第一塊中執(zhí)行 寫入;以及第二塊,在所述第二塊中寫入無效數(shù)據(jù)直到頁的中間,并且在不執(zhí)行所述擦除操 作的情況下另外對于沒有數(shù)據(jù)寫入于其中的頁執(zhí)行寫入;以及所述管理信息恢復(fù)單元在判斷未執(zhí)行所述正常系統(tǒng)暫停時(shí)改變所述管理表,以釋放所 述第二塊并將其用作所述第一塊。
14.如權(quán)利要求2所述的存儲器系統(tǒng),其中所述第二存儲單元包括第一塊,在執(zhí)行擦除操作之后從頂部頁在所述第一塊中執(zhí)行 寫入;以及第二塊,在所述第二塊中寫入無效數(shù)據(jù)直到頁的中間,并且在不執(zhí)行所述擦除操 作的情況下另外對于沒有數(shù)據(jù)寫入于其中的頁執(zhí)行寫入;以及所述管理信息恢復(fù)單元在判斷未執(zhí)行所述正常系統(tǒng)暫停時(shí)改變所述管理表,以釋放所 述第二塊并將其用作所述第一塊。
15.如權(quán)利要求6所述的存儲器系統(tǒng),其中所述第二存儲單元包括第一塊,在執(zhí)行擦除操作之后從頂部頁在所述第一塊中執(zhí)行 寫入;以及第二塊,在所述第二塊中寫入無效數(shù)據(jù)直到頁的中間,并且在不執(zhí)行所述擦除操 作的情況下另外對于沒有數(shù)據(jù)寫入于其中的頁執(zhí)行寫入;以及所述管理信息恢復(fù)單元在判斷未執(zhí)行所述正常系統(tǒng)暫停時(shí)改變所述管理表,以釋放所 述第二塊并將其用作所述第一塊。
16.一種控制存儲器系統(tǒng)的方法,所述存儲器系統(tǒng)包括第一存儲單元,其為易失性 的;以及第二存儲單元,其為非易失性的,并且連接至所述第一存儲單元,所述方法包括讀取/寫入控制處理,用于基于管理表執(zhí)行從所述第二存儲單元的數(shù)據(jù)讀取以及向所 述第二存儲單元的數(shù)據(jù)寫入,在所述管理表中,邏輯地址與所述第二存儲單元中的數(shù)據(jù)存 儲位置關(guān)聯(lián);日志控制處理,用于將所述管理表傳送至所述第一存儲單元,并且在更新所述第一存 儲單元上的所述管理表的事件發(fā)生時(shí),將所述管理表的更新前后的差異信息作為差異日志 存儲至所述第一存儲單元中;日志反映處理,用于執(zhí)行提交處理,所述提交處理用于將所述差異日志存儲于所述第 二存儲單元中,并且在建立第一條件時(shí),在存儲于所述第一存儲單元中的所述管理表中反 映所述差異日志;操作狀態(tài)管理處理,用于在系統(tǒng)啟動之后在將所述差異日志存儲至所述第二存儲單元 之前,將第一日志存儲至所述第二存儲單元中;并且在執(zhí)行正常系統(tǒng)暫停時(shí),將第二日志存 儲至所述第二存儲單元中;以及管理信息恢復(fù)處理,用于檢測存儲于所述第二存儲單元中的所述第一日志、所述差異 日志、和所述第二日志中的至少一個;并且判斷是否執(zhí)行正常系統(tǒng)暫停。
17.如權(quán)利要求16所述的方法,其中所述日志反映處理和所述操作狀態(tài)管理處理包 括另外將所述第一日志、所述差異日志和所述第二日志存儲至所述第二存儲單元中的非 易失性日志區(qū)域中,所述非易失性日志區(qū)域包括作為數(shù)據(jù)擦除單位的塊。
18.如權(quán)利要求17所述的方法,其中所述操作狀態(tài)管理處理包括在所述系統(tǒng)啟動之 后在初始化已完成、請求激活或請求數(shù)據(jù)訪問的任一時(shí)間點(diǎn)將所述第一日志存儲至所述非 易失性日志區(qū)域中。
19.如權(quán)利要求17所述的方法,其中所述操作狀態(tài)管理處理包括在從主機(jī)裝置接收 到系統(tǒng)暫停請求時(shí)將所述第二日志存儲至所述非易失性日志區(qū)域中。
20.如權(quán)利要求19所述的方法,其中所述操作狀態(tài)管理處理包括在從主機(jī)裝置接收 到所述系統(tǒng)暫停請求時(shí)將所述第一存儲單元中的數(shù)據(jù)清空至所述第二存儲單元中。
21.如權(quán)利要求16所述的方法,其中所述管理信息恢復(fù)處理包括在所述第二日志未 存儲于所述第二存儲單元中時(shí)判斷未執(zhí)行所述正常系統(tǒng)暫停。
22.如權(quán)利要求17所述的方法,其中所述管理信息恢復(fù)處理包括在所述第二日志未 存儲于所述非易失性日志區(qū)域的末端時(shí)判斷未執(zhí)行所述正常系統(tǒng)暫停。
23.如權(quán)利要求16所述的方法,其中所述第一條件包括以下條件中的至少一個存儲 于所述第一存儲單元的所述差異日志的量達(dá)到特定值的情況;以及所述管理表的更新達(dá)到 一點(diǎn),在該點(diǎn)處實(shí)現(xiàn)一致的情況。
24.如權(quán)利要求16所述的方法,其中所述日志控制處理包括執(zhí)行快照處理,所述快照 處理用于在建立第二條件時(shí)將存儲于所述第一存儲單元中的所述管理表存儲至所述第二 存儲單元中。
25.如權(quán)利要求M所述的方法,其中所述第二條件包括以下情況中的至少一個執(zhí)行 所述正常系統(tǒng)暫停的情況;以及所述第一存儲單元中所述差異日志的存儲區(qū)域變得不足的 情況。
26.如權(quán)利要求16所述的方法,其中所述日志反映處理包括在執(zhí)行所述提交處理之 后使存儲于所述第一存儲單元中的所述差異日志無效。
27.如權(quán)利要求M所述的方法,其中所述日志控制處理包括在執(zhí)行所述快照處理之 后使存儲于所述第一存儲單元中的所述差異日志無效。
28.如權(quán)利要求16所述的方法,其中所述讀取/寫入控制處理包括管理所述第二存儲單元,所述第二存儲單元包括第一 塊,在執(zhí)行擦除操作之后從頂部頁在所述第一塊中執(zhí)行寫入;以及第二塊,在所述第二塊中 寫入無效數(shù)據(jù)直到頁的中間,并且在不執(zhí)行所述擦除操作的情況下另外對于沒有數(shù)據(jù)寫入 于其中的頁執(zhí)行寫入;以及所述管理信息恢復(fù)處理包括在判斷未執(zhí)行所述正常系統(tǒng)暫停時(shí)改變所述管理表,以釋 放所述第二塊并將其用作所述第一塊。
29.如權(quán)利要求17所述的方法,其中所述讀取/寫入控制處理包括管理所述第二存儲單元,所述第二存儲單元包括第一 塊,在執(zhí)行擦除操作之后從頂部頁在所述第一塊中執(zhí)行寫入;以及第二塊,在所述第二塊中 寫入無效數(shù)據(jù)直到頁的中間,并且在不執(zhí)行所述擦除操作的情況下另外對于沒有數(shù)據(jù)寫入 于其中的頁執(zhí)行寫入;以及所述管理信息恢復(fù)處理包括在判斷未執(zhí)行所述正常系統(tǒng)暫停時(shí)改變所述管理表,以釋 放所述第二塊并將其用作所述第一塊。
30.如權(quán)利要求21所述的方法,其中所述讀取/寫入控制處理包括管理所述第二存儲單元,所述第二存儲單元包括第一塊,在執(zhí)行擦除操作之后從頂部頁在所述第一塊中執(zhí)行寫入;以及第二塊,在所述第二塊中 寫入無效數(shù)據(jù)直到頁的中間,并且在不執(zhí)行所述擦除操作的情況下另外對于沒有數(shù)據(jù)寫入 于其中的頁執(zhí)行寫入;以及所述管理信息恢復(fù)處理包括在判斷未執(zhí)行所述正常系統(tǒng)暫停時(shí)改變所述管理表,以釋 放所述第二塊并將其用作所述第一塊。
全文摘要
在系統(tǒng)啟動之后,在將第一差異日志記錄于第二存儲單元中之前,將指示系統(tǒng)正在運(yùn)行的第一日志記錄于所述第二存儲單元中,并且在正常系統(tǒng)暫停時(shí),在所述差異日志之后,將指示所述系統(tǒng)暫停的第二日志記錄于所述第二存儲單元中,并且在系統(tǒng)啟動時(shí),基于所述第二存儲單元中的所述第一日志和所述第二日志的經(jīng)記錄狀態(tài)來判斷上次執(zhí)行了正常系統(tǒng)暫停還是執(zhí)行了不正確斷電序列,由此容易并且可靠地檢測不正確的斷電。
文檔編號G06F12/16GK102150142SQ20098013541
公開日2011年8月10日 申請日期2009年12月28日 優(yōu)先權(quán)日2008年12月27日
發(fā)明者宮本博暢, 山崎創(chuàng), 矢野浩邦, 米澤真司 申請人:株式會社東芝