白丝美女被狂躁免费视频网站,500av导航大全精品,yw.193.cnc爆乳尤物未满,97se亚洲综合色区,аⅴ天堂中文在线网官网

首頁 / 專利庫 / 電腦零配件 / 筆記本電腦 / 非易失性存儲的自身日志記錄和層級一致性

非易失性存儲的自身日志記錄和層級一致性

閱讀:830發(fā)布:2024-02-23

專利匯可以提供非易失性存儲的自身日志記錄和層級一致性專利檢索,專利查詢,專利分析的服務。并且具有非易失性 存儲器 (NVM)的非易失性存儲系統(tǒng)提供自身日志記錄和層級一致性,從而啟動低延遲恢復和強制單元 訪問 握手。主機地址和NVM中的地址之間的映射經(jīng)由一個或多個映射條目來維持,從而啟用對寫入至NVM的主機數(shù)據(jù)的 位置 。NVM中存儲的對象包括足夠信息以恢復僅在對象本身內(nèi)的對象。NVM以一個或多個數(shù)據(jù)流、映射流和檢查點流的形式來管理。主機數(shù)據(jù)被寫入數(shù)據(jù)流,映射條目被寫入映射流,而映射條目和其他數(shù)據(jù)結(jié)構(gòu)的檢查點被寫入檢查點流。嵌入流中的時間標記使得能夠在恢復期間確定流的所選部分彼此不一致且將被丟棄。,下面是非易失性存儲的自身日志記錄和層級一致性專利的具體信息內(nèi)容。

1.一種系統(tǒng),包括:
用于按第一順序?qū)⒁幌盗袛?shù)據(jù)單元排列在非易失性存儲器(NVM)中的構(gòu)件,所述數(shù)據(jù)單元中的每一個與多個時間戳中的相應的一個相關(guān)聯(lián);
用于按第二順序?qū)⒁幌盗袛?shù)據(jù)映射單元排列在所述NVM中的構(gòu)件,所述數(shù)據(jù)映射單元中的每一個與所述時間戳中的相應的一個相關(guān)聯(lián);
其中,所述數(shù)據(jù)映射單元中的每一個包括所述數(shù)據(jù)單元中的對應的一個在所述NVM中的位置;并且
其中,與所述數(shù)據(jù)單元中的每一個相關(guān)聯(lián)的相應時間戳在與對應的數(shù)據(jù)映射單元相關(guān)聯(lián)的相應時間戳處或之前。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其中:
所述數(shù)據(jù)單元中的每一個與從主機至相應邏輯地址(LBA)的相應數(shù)據(jù)寫入對應;
所述數(shù)據(jù)單元的前一個數(shù)據(jù)單元和后一個數(shù)據(jù)單元對應于至相應LBA中的同一個LBA的所述數(shù)據(jù)寫入中的多個;并且
所述前一個數(shù)據(jù)單元不具有所述數(shù)據(jù)映射單元中的相關(guān)聯(lián)的一個數(shù)據(jù)映射單元。
3.根據(jù)權(quán)利要求1所述的系統(tǒng),進一步包括:
用于確定所述數(shù)據(jù)單元中的最新有效且連續(xù)的一個的構(gòu)件;
用于確定所述數(shù)據(jù)映射單元中的最新有效且連續(xù)的一個的構(gòu)件,其中與所述數(shù)據(jù)映射單元中的最新有效且連續(xù)的一個相關(guān)聯(lián)的相應時間戳在與所述數(shù)據(jù)單元中的最新有效且連續(xù)的一個相關(guān)聯(lián)的相應時間戳處或之前;
用于僅恢復直到所述數(shù)據(jù)映射單元中的最新有效且連續(xù)的一個為止的所述數(shù)據(jù)映射單元中的多個的構(gòu)件;并且
由此,與在與所述數(shù)據(jù)單元中的最新有效且連續(xù)的一個相關(guān)聯(lián)的相應時間戳之后的任何相應時間戳相關(guān)聯(lián)的任何所述數(shù)據(jù)映射單元都在恢復中被忽略。
4.一種系統(tǒng),包括:
用于將一系列數(shù)據(jù)存儲單元寫入非易失性存儲器(NVM)的構(gòu)件,所述數(shù)據(jù)存儲單元中的每一個與多個時間戳中的相應的一個相關(guān)聯(lián);
用于將一系列數(shù)據(jù)映射單元寫入所述NVM中的構(gòu)件,所述數(shù)據(jù)映射單元中的每一個與所述時間戳中的相應的一個相關(guān)聯(lián);
其中,所述數(shù)據(jù)映射單元中的每一個包括所述數(shù)據(jù)單元中的對應的一個在所述NVM中的位置;并且
其中,與所述數(shù)據(jù)存儲單元中的每一個相關(guān)聯(lián)的相應時間戳表示等于或老于由與對應的數(shù)據(jù)映射單元相關(guān)聯(lián)的相應時間戳表示的相對年齡的相對年齡。
5.根據(jù)權(quán)利要求4所述的系統(tǒng),其中:
所述數(shù)據(jù)存儲單元中的第一個對應于從主機至特定邏輯塊地址(LBA)的第一數(shù)據(jù)寫入;
所述數(shù)據(jù)存儲單元中的第二個對應于從所述主機至所述特定LBA的第二數(shù)據(jù)寫入;
所述第一數(shù)據(jù)寫入按時間順序在所述第二數(shù)據(jù)寫入之前;并且
所述數(shù)據(jù)映射單元中沒有一個與第一數(shù)據(jù)存儲單元對應。
6.根據(jù)權(quán)利要求4所述的系統(tǒng),其中,所述數(shù)據(jù)存儲單元的寫入根據(jù)第一順序并且所述數(shù)據(jù)映射單元的寫入根據(jù)第二順序。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),進一步包括:
用于根據(jù)所述第一順序確定所述數(shù)據(jù)存儲單元中的最新有效且連續(xù)的一個的構(gòu)件;
用于根據(jù)所述第二順序來確定與表示相對年齡的所述相應時間戳中的一個相關(guān)聯(lián)的所述數(shù)據(jù)映射單元中的最新有效且連續(xù)的一個的構(gòu)件,該相對年齡等于或老于由與所述數(shù)據(jù)存儲單元中的所述最新有效且連續(xù)的一個相關(guān)聯(lián)的相應時間戳表示的相對年齡;以及用于根據(jù)所述第一順序和所述第二順序來僅恢復直到所述數(shù)據(jù)映射單元中的所述最新有效且連續(xù)的一個為止的所述數(shù)據(jù)映射單元中的多個的構(gòu)件。
8.根據(jù)權(quán)利要求6所述的系統(tǒng),進一步包括:
用于根據(jù)所述第一順序確定所述數(shù)據(jù)存儲單元中的第一個的構(gòu)件,所述數(shù)據(jù)存儲單元中的第一個是所述數(shù)據(jù)存儲單元中的最新有效且連續(xù)的一個;
用于根據(jù)所述第二順序確定與表示相對年齡的所述相應時間戳中的一個相關(guān)聯(lián)的所述數(shù)據(jù)映射單元中的最新有效且連續(xù)的一個的構(gòu)件,該相對年齡等于或老于由與所述數(shù)據(jù)存儲單元中的最新有效且連續(xù)的一個相關(guān)聯(lián)的相應時間戳表示的相對年齡;
用于根據(jù)所述第一順序確定所述數(shù)據(jù)存儲單元中的第二個的構(gòu)件,所述數(shù)據(jù)存儲單元中的第二個是與表示相對年齡的所述相應時間戳中的一個相關(guān)聯(lián)的所述數(shù)據(jù)存儲單元中的最新的一個,該相對年齡等于或在預定量上先于由與所述數(shù)據(jù)映射單元中的最新有效且連續(xù)的一個相關(guān)聯(lián)的相應時間戳表示的相對年齡;以及
用于根據(jù)所述第一順序和所述第二順序來僅使用來自所述數(shù)據(jù)存儲單元中的第二個到所述數(shù)據(jù)存儲單元中的第一個的所述數(shù)據(jù)單元中的多個來恢復直到所述數(shù)據(jù)映射單元中的最新有效且連續(xù)的一個為止的所述數(shù)據(jù)映射單元中的多個的構(gòu)件。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),進一步包括:
用于針對先前未寫入所述NVM的數(shù)據(jù)映射單元中的每個修改的數(shù)據(jù)映射單元來識別與最舊更新相關(guān)聯(lián)的所述時間戳中的相應的一個時間戳的構(gòu)件,所述相應的一個時間戳等于與所述數(shù)據(jù)存儲單元中的特定的一個相關(guān)聯(lián)的相應時間戳,所述修改的數(shù)據(jù)映射單元包括特定的數(shù)據(jù)存儲單元的在所述NVM中的位置;以及
用于在寫入與所述相應時間戳中的一個相關(guān)聯(lián)的所述數(shù)據(jù)存儲單元中的一個時或之前,將先前未寫入所述NVM的所述修改的數(shù)據(jù)映射單元中的每一個寫入所述NVM的構(gòu)件,所述相應時間戳中的所述一個多于預定量地落后與所述修改的數(shù)據(jù)映射單元的最舊更新相關(guān)聯(lián)的相應時間戳。
10.一種系統(tǒng),包括:
用于根據(jù)存儲流將多個存儲單元寫入非易失性存儲器(NVM)的構(gòu)件,所述存儲單元中的每一個包括數(shù)據(jù)部分和對應時間戳部分;
用于根據(jù)映射流將多個映射單元寫入NVM的構(gòu)件,所述映射單元中的每一個包括條目部分和對應時間戳部分;
其中,至少一部分所述條目部分中的每一個使得能夠通過至少指定所述數(shù)據(jù)部分中的對應的一個來確定將相應的邏輯塊(LB)寫入NVM中的哪里;
其中,時間發(fā)生順序由時間戳部分表示,存儲單元時間戳部分根據(jù)關(guān)于彼此的時間戳順序單調(diào)遞增,并且映射單元時間戳部分根據(jù)關(guān)于彼此的時間戳順序單調(diào)遞增;并且其中,存在至少一個特定時間點,此時寫入至所述NVM的映射單元中的至少一個具有時間戳部分,該時間戳部分根據(jù)時間發(fā)生順序晚于在所述特定時間點寫入至所述NVM的所述存儲單元時間戳部分中的根據(jù)時間發(fā)生順序的最新的。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其中用于寫入所述存儲單元的構(gòu)件按與由所述存儲單元時間戳部分表示的時間發(fā)生順序?qū)臅r間順序?qū)懭胨龃鎯卧⑶矣糜趯懭胨鲇成鋯卧臉?gòu)件按與由所述映射單元時間戳部分表示的時間發(fā)生順序?qū)臅r間順序?qū)懭胨鲇成鋯卧?br/>12.根據(jù)權(quán)利要求10所述的系統(tǒng),進一步包括用于根據(jù)檢查點流將一個或多個檢查點單元寫入所述NVM的構(gòu)件,所述檢查點單元中的每一個包括映射部分和對應時間戳部分,并且檢查點時間戳部分根據(jù)關(guān)于彼此的時間戳順序單調(diào)遞增。
13.根據(jù)權(quán)利要求1、4或10所述的系統(tǒng),進一步包括用于與主機交互以通信從所述NVM讀取的信息和/或?qū)懭胫了鯪VM的信息的構(gòu)件。
14.根據(jù)權(quán)利要求13所述的系統(tǒng),其中用于交互的所述構(gòu)件與以下各項中的一個或多個兼容:
通用串行總線(USB)接口標準,
緊湊式閃存(CF)接口標準,
多媒體卡(MMC)接口標準,
嵌入式MMC(eMMC)接口標準,
Thunderbolt接口標準,
UFS接口標準,
安全數(shù)字(SD)接口標準,
記憶棒接口標準,
xD圖片卡接口標準,
集成驅(qū)動電子裝置(IDE)接口標準,
串行高級技術(shù)附件(SATA)接口標準,
外部SATA(eSATA)接口標準,
小型計算機系統(tǒng)接口(SCSI)接口標準,
串行連接小型計算機系統(tǒng)接口(SAS)接口標準,
光纖通道接口標準,
以太網(wǎng)接口標準,以及
快速外圍組件互連(PCIe)接口標準。
15.根據(jù)權(quán)利要求13所述的系統(tǒng),其中所述主機包括以下各項中的一個或多個:
計算機,
工作站計算機,
服務器計算機,
存儲服務器,
存儲附接網(wǎng)絡(luò)(SAN),
網(wǎng)絡(luò)附接存儲(NAS)設(shè)備,
直接附接存儲(DAS)設(shè)備,
存儲器件,
個人計算機(PC),
膝上電腦,
筆記本電腦,
上網(wǎng)本電腦,
平板設(shè)備或電腦,
超極本電腦,
電子閱讀設(shè)備(電子閱讀器),
個人數(shù)字助理(PDA),
導航系統(tǒng),
(手持式)全球定位系統(tǒng)(GPS)設(shè)備,
汽車控制系統(tǒng),
汽車媒體控制系統(tǒng)或計算機,
打印機、復印機或傳真機或多合一設(shè)備,
銷售點(POS)設(shè)備,
現(xiàn)金出納機,
媒體播放器,
電視機,
媒體記錄器,
數(shù)字視頻錄像機(DVR),
數(shù)碼相機,
蜂窩手機,
無繩電話手機,以及
電子游戲機
16.根據(jù)權(quán)利要求15所述的系統(tǒng),進一步包括所述主機的所有或任意部分。
17.根據(jù)權(quán)利要求1、4或10所述的系統(tǒng),進一步包括用于與包括所有或部分的所述NVM的一個或多個閃存交互的構(gòu)件。
18.根據(jù)權(quán)利要求17所述的系統(tǒng),其中用于交互的所述構(gòu)件與以下各項中的一個或多個兼容:
開放NAND閃存接口(ONFI),
切換模式接口,
雙倍數(shù)據(jù)速率(DDR)同步接口,
DDR2同步接口,
同步接口,以及
異步接口。
19.根據(jù)權(quán)利要求17所述的系統(tǒng),其中所述閃存中的至少一個包括以下各項中的一個或多個:
NAND閃存技術(shù)存儲單元,以及
NOR閃存技術(shù)存儲單元。
20.根據(jù)權(quán)利要求17所述的系統(tǒng),其中所述閃存中的至少一個包括以下各項中的一個或多個:
單層單元(SLC)閃存技術(shù)存儲單元,以及
多層單元(MLC)閃存技術(shù)存儲單元。
21.根據(jù)權(quán)利要求17所述的系統(tǒng),進一步包括所述閃存中的所有或任意的一個或多個。

說明書全文

非易失性存儲的自身日志記錄和層級一致性

[0001] 相關(guān)申請的交叉引用
[0002] 在所附的申請數(shù)據(jù)表、請求書和傳送信(視情況,如果有的話)中提出了對該申請的優(yōu)先權(quán)要求。在即時申請的類型所允許的范圍內(nèi),本申請為了所有目的通過引用而合并了以下申請,這些以下申請全部由在提出本發(fā)明時的即時申請共有:
[0003] 于2011年10月5日提交的美國臨時申請(案號為SF-10-06,并且序列號為61/543,707),第一署名發(fā)明人為Earl T.COHEN,且題為“SELF-JOURNALING AND HIERARCHICAL CONSISTENCY FOR NON-VOLATILE STORAGE”。

技術(shù)領(lǐng)域

[0004] 非易失性存儲技術(shù)及制造的進步對于提供成本、可盈利性、性能、效率和使用實用性的提高是必要的。

背景技術(shù)

[0005] 除非被明確認定為被公開或眾所周知,否則為了上下文、定義或比較的目的而包括的本文所提到的技術(shù)和概念不應被解釋為承認這些技術(shù)和概念是以前公知的或者是現(xiàn)有技術(shù)的一部分。為了所有目的,通過引用將本文中所引用的包括專利、專利申請和出版物的所有參考文獻(如有的話)的全部內(nèi)容無論是否明確結(jié)合都為了全部目的通過引用結(jié)合于此。

發(fā)明內(nèi)容

[0006] 本發(fā)明可以以多種方式實現(xiàn),例如作為處理、制造物、裝置、系統(tǒng)、組合物和諸如計算機可讀存儲介質(zhì)的計算機可讀介質(zhì)(例如,光學和/或磁性大容量存儲設(shè)備中的諸如磁盤的介質(zhì),或具有諸如閃存的非易失性存儲器的集成電路)或通過光學或電子通信鏈路發(fā)送程序指令的計算機網(wǎng)絡(luò)。具體實施方式提供了能實現(xiàn)在上文認定的領(lǐng)域中的成本的改善、盈利、性能、效率和使用實用性的提高的本發(fā)明的一種或多種實施方式的論述。具體實施方式包括用于促進對具體實施方式的其余部分的理解的介紹。該介紹包括根據(jù)本文描述的概念的系統(tǒng)、方法、制品和計算機可讀介質(zhì)中的一個或多個的示例性實施方式。如在結(jié)論中更詳細討論,本發(fā)明涵蓋所提出的權(quán)利要求的范圍內(nèi)的所有可能修改和變更。附圖說明
[0007] 圖1A示出了包括使用自身日志記錄和層級一致性來管理諸如閃存的SSD的非易失性存儲的控制器的固態(tài)磁盤(SSD)的實施方式的所選細節(jié)。
[0008] 圖1B示出了包括圖1A的SSD的一個或多個示例的系統(tǒng)的各種實施方式的所選細節(jié)。
[0009] 圖2示出了映射邏輯地址(LBA)的邏輯頁面號(LPN)部分的實施方式的所選細節(jié)。
[0010] 圖3示出了訪問在讀取單元地址的非易失性存儲器(NVM)以產(chǎn)生被組織為各種讀取單元的集體具有以讀取單元的量來測量的長度的讀取數(shù)據(jù)的實施方式的所選細節(jié)。
[0011] 圖4A示出了讀取單元的一個實施方式的所選細節(jié)。
[0012] 圖4B示出了讀取單元的另一實施方式的所選細節(jié)。
[0013] 圖5示出了具有大量域的報頭的實施方式的所選細節(jié)。
[0014] 圖6示出了多個NVM設(shè)備的塊、頁面和讀取單元的所選細節(jié)。
[0015] 圖7示出了R塊的實施方式的所選細節(jié)。
[0016] 圖8示出了經(jīng)由具有第一級映射(FLM)和一個或多個第二級映射(SLM)頁面的二級映射將LBA映射到NVM中所存儲的邏輯塊(LB)的實施方式的所選細節(jié)。
[0017] 圖9示出了包括寫入SLM和FLM信息以及各種形式的自身日志記錄和時間戳記錄的接收并將數(shù)據(jù)從主機寫入NVM的各種實施方式的所選細節(jié)。
[0018] 圖10示出了將主機和/或再循環(huán)數(shù)據(jù)、映射信息以及檢查點先進先出(FIFO)部分流至NVM的各種實施方式的所選細節(jié)。
[0019] 圖11示出了例如在故障之后恢復和/或重建FLM和SLM信息和其他NVM管理數(shù)據(jù)結(jié)構(gòu)的所選細節(jié)。
[0020] 附圖中的參考符號列表
[0021]
[0022]
[0023]
[0024]
[0025]
[0026]

具體實施方式

[0027] 以下將伴隨示出本發(fā)明的所選細節(jié)的附圖一起提供對本發(fā)明的一個或多個實施方式的詳細描述。將結(jié)合實施方式來描述本發(fā)明。本文的實施方式應被理解為僅是示例性的,本發(fā)明明確地不限于本文中的任何或所有實施方式或者受到其限制,且本發(fā)明涵蓋許多替代、修改和等同物。為避免闡述單調(diào),各種字標簽(諸如:第一、最后、某些、各種、進一步、其他、具體的、選擇、一些和顯著的)可應用于分開的實施方式組;如本文所使用的,這些標簽并明確地不意在表達質(zhì)量或任何形式的偏愛或偏見,而只是為了方便在獨立組之間區(qū)分。所公開的處理的一些操作順序在本發(fā)明的范圍內(nèi)是可變的。每當多個實施方式用于描述處理、方法和/或程序指令特征的變化的情況下,其他實施方式均被設(shè)想為根據(jù)預定的或動態(tài)確定的標準來執(zhí)行分別對應于多個實施方式中的多個的多個操作模式中的一個的靜態(tài)和/或動態(tài)選擇。大量具體細節(jié)在以下描述中提出,以提供對本發(fā)明的透徹理解。為示例的目的而提供細節(jié),且本發(fā)明在沒有一些或所有細節(jié)的情況下根據(jù)權(quán)利要求來實踐。為了清晰起見,與本發(fā)明相關(guān)的技術(shù)領(lǐng)域中已知的技術(shù)資料未被詳細描述,使得本發(fā)明未被不必要地模糊。
[0028] 緒論
[0029] 本緒論僅為便于更迅速理解具體實施方式而包括;因為任何緒論的段落必須是整個主題的縮略觀點且不表示詳盡或限制描述的意思,所以本發(fā)明不限于在緒論中提出的概念(包括明確的示例,如有的話)。例如,以下緒論僅對某些實施方式提供受空間和組織限制的概述信息。在整個說明書的其余部分中討論了許多其他實施方式(包括權(quán)利要求將最終采用的那些)。
[0030] 縮寫
[0031] 本文中所定義的各種簡略縮寫(例如,首字母縮寫詞)中的至少一些是指本文所使用的特定元件。
[0032]縮略語 描述
AHCI 高級主機控制器接口
API 應用程序接口
ATA 高級技術(shù)附件(AT附件)
BCH 博斯-喬赫里-霍克文黑姆碼
CAM 內(nèi)容可尋址存儲器
CD 光盤
CF 緊湊式閃存
CMOS 互補金屬化物半導體
CPU 中央處理器
CRC 循環(huán)冗余校驗
DAS 直接附接存儲
DDR 雙倍數(shù)據(jù)速率
DMA 直接存儲器訪問
DNA 直接NAND訪問
DRAM 動態(tài)隨機存取存儲器
DVD 數(shù)字多用途光盤或數(shù)字視頻光盤
DVR 數(shù)字視頻錄像機
ECC 錯誤校正碼
eMMC 嵌入式多媒體卡
eSATA 外部串行高級技術(shù)附件
FIFO 先進先出
FLM 一級映射
FUA 強制單元訪問
GPS 全球定位系統(tǒng)
HDD 硬盤驅(qū)動器
I/O 輸入/輸出
IC 集成電路
IDE 集成驅(qū)動電子裝置
JPEG 聯(lián)合圖像專家組
LAN 局域網(wǎng)
LB 邏輯塊
LBA 邏輯塊地址
LDPC 低密度奇偶校驗
LPN 邏輯頁面號
MLC 多層單元
MMC 多媒體卡
MPEG 運動圖像專家組
NAS 網(wǎng)絡(luò)附接存儲
NCQ 原生命令隊列
NVM 非易失性存儲器
ONA 優(yōu)化NAND訪問
ONFI 開放NAND閃存接口
OS 操作系統(tǒng)
PC 個人計算機
PCIe 快速外圍組件互連(快速PCT)
PDA 個人數(shù)字助理
PHY 物理接口
POS 銷售點
RAID 廉價/獨立磁盤冗余陣列
RASIE 獨立片冗余陣列
ReRAM 阻變隨機存取存儲器
RS 里德-索羅蒙碼
SAN 存儲附接網(wǎng)絡(luò)
SAS 串行連接小型計算機系統(tǒng)接口(串行SCSI)
SATA 串行高級技術(shù)附加(串行ATA)
SCSI 小型計算機系統(tǒng)接口
SD 安全數(shù)字
SDR 單倍數(shù)據(jù)速率
SLC 單層單元
SLM 二級映射
SMART 自監(jiān)測分析和報告技術(shù)
SRAM 靜態(tài)隨機存取存儲器
SSD 固態(tài)磁盤/驅(qū)動器
UFS 統(tǒng)一閃存存儲器
USB 通用串行總線
VF 虛擬函數(shù)
WAN 廣域網(wǎng)
[0033]
[0034] 某些非易失性存儲系統(tǒng)(諸如以閃存作為NVM實現(xiàn)的某些SSD)的第一挑戰(zhàn)是如何有效且可靠地為存儲在非易失性存儲系統(tǒng)的NVM中的數(shù)據(jù)提供數(shù)據(jù)完整性。第一挑戰(zhàn)的示例是在從主機(例如,計算主機或接口主機)至SSD發(fā)送寫入時到將寫入有關(guān)的所有效果保存在非易失性存儲系統(tǒng)的NVM(例如,閃存)中時,以一致的方式來維持與控制非易失性存儲系統(tǒng)(例如,SSD的控制器中包括的)相關(guān)的數(shù)據(jù)結(jié)構(gòu)。例如,寫入和保存之間發(fā)生的故障(例如,死機、電源故障或其中的SSD或電路的各種類型的故障)表示非易失性存儲系統(tǒng)能夠進行處理(例如,經(jīng)由一項或多項恢復技術(shù))以確保數(shù)據(jù)完整性的情形。
[0035] 第一挑戰(zhàn)的另一示例是有效處理高可用性應用程序的寫入(例如,具有FUA位組的SATA寫入),其中主機要求高可用性寫入(在文中其他地方有時稱為“FUA”寫入)被公認為僅在無錯誤地完成之后由存儲系統(tǒng)完成。如果高可用性寫入的延遲被最小化,則會產(chǎn)生較高的性能。要注意的是,除FUA寫入之外的全部(在本文其他地方有時稱為“非FUA”寫入)都被公認為在某些實施方式和/或使用場景下盡管完成,但在發(fā)生故障時甚至也無法保證非FUA寫入的某些數(shù)據(jù)保存在NVM中。設(shè)想實施方式支持高可用性寫入和各種協(xié)議中的其他類型的寫入,這些協(xié)議諸如SAS、SATA、光纖通道、PCIe和啟用主機與存儲系統(tǒng)之間的存儲通信的任何協(xié)議。
[0036] 某些NVM技術(shù)(諸如某些類型的NAND閃存)中的第二個挑戰(zhàn)是如何經(jīng)由閃存中的數(shù)據(jù)位置的可靠動態(tài)映射來可靠地獲得對某些非易失性存儲系統(tǒng)(例如,某些SSD實現(xiàn))來說足夠的性能。由于閃存僅在擦除之后可寫入,因此執(zhí)行動態(tài)映射。例如,當SSD從主機接收具體LBA的寫入時,分配新頁面(或在某些實施方式中,一個或多個頁面的一個或多個部分諸如一個或多個讀取單元)來存儲寫入的寫入數(shù)據(jù)。讀取單元的示例是與獨立較低級ECC處理兼容的閃存的最小部分(例如,單個讀取單元足以使用較低級ECC來校正單個讀取單元中的錯誤)。使具體LBA與新頁面(或一個或多個頁面的部分諸如一個或多個讀取單元)相關(guān)聯(lián)的映射經(jīng)更新使得從主機至具體LBA的未來讀取操作返回寫入數(shù)據(jù)。
[0037] 在某些實施方式中,動態(tài)映射經(jīng)由一級映射進行。例如,動態(tài)映射包括將LBA應用于單個表并獲得存儲有與LBA對應的數(shù)據(jù)的NVM中的位置。在某些實施方式中,映射經(jīng)由二級映射進行。例如,在概念上,動態(tài)映射包括將LBA應用于第一表(例如,F(xiàn)LM),獲得第二表的一部分(例如,SLM的一部分)的指針,并且然后將LBA應用于該部分并獲得存儲有與LBA對應的數(shù)據(jù)的NVM中的位置。
[0038] 第二挑戰(zhàn)的示例是即便例如在用于寫入的數(shù)據(jù)寫入和映射更新之間發(fā)生故障也要維持并管理映射。例如,在至少一部分情況下,如果在發(fā)生故障之前寫入數(shù)據(jù)保存在閃存中但映射(例如,與保存寫入數(shù)據(jù)對應的映射的一種或多種更新)沒有保存在閃存中,則執(zhí)行技術(shù)(諸如在重置和/或再次施加功率之后)以使得能夠從閃存中恢復保存的寫入數(shù)據(jù)的至少一部分。在某些實施方式和/或使用場景下,一旦將寫入數(shù)據(jù)非易失地保存就確認FUA寫入,與任何對應映射更新是否也非易失地保存無關(guān),這在某些情況下使得能夠改進性能。在另一情況下,如果映射(或映射的一種或多種更新)保存到閃存但對應寫入數(shù)據(jù)的至少一部分沒有保存到閃存(例如,由于故障),則執(zhí)行技術(shù)(諸如在重置和/或再次施加功率之后)以便識別映射(或映射的一種或多種更新)與已經(jīng)保存到閃存的數(shù)據(jù)不一致。例如,作出映射的一部分指向自擦除之后尚未被寫入或尚未被寫入對應寫入數(shù)據(jù)的閃存的一部分的確定。在又一情況下,如果在相關(guān)聯(lián)寫入數(shù)據(jù)和對應映射信息(或其任意更新)已經(jīng)保存在閃存中之后確認FUA寫入,則在某些實施方式和/或使用場景下,產(chǎn)生相對較大的性能損失。
相對較大的性能損失由于某些協(xié)議(例如,SATA)的有限的隊列、將寫入數(shù)據(jù)和映射信息寫入閃存的編程時間、以及減少寫入放大的積累映射寫入的能的降低中的一個或多個而出現(xiàn)。
[0039] 在某些實施方式和/或使用場景下,前述挑戰(zhàn)中的一個或多個通過應用于諸如用于SSD的非易失性存儲,或由SSD控制器或NVM(例如,閃存)控制器管理的自身日志記錄和/或?qū)蛹壱恢滦詠硖幚怼@?,當存在故障時,自身日志記錄和/或?qū)蛹壱恢滦缘慕M合使得能夠整體或部分地重建映射信息。在某些情況下,使用自身日志記錄和層級一致性技術(shù)重建映射信息比不使用該技術(shù)重建更有效。再如,自身日志記錄和層級一致性的組合使得能夠進行相對低延遲的FUA握手。
[0040] 在某些實施方式和/或使用場景下,自身日志記錄和/或?qū)蛹壱恢滦栽诟拍钌仙婕癗VM在其中進行管理的單元(例如,本文其他地方描述的R塊)、如何寫入NVM管理單元(例如,記錄帶)以及如何管理管理單元的寫入(例如,作為流)。R塊的示例是NVM塊的集合(例如,來自SSD中的每個NVM芯片(die)的一個塊,而塊中的NVM位置以條帶形式寫入)。帶的示例是信息連續(xù)寫入其中(例如,按具體的時間順序),且可選地填充有具有相似屬性和/或特性的信息的R塊的集合。流的示例是以下記錄帶(band),該記錄帶被管理使得在該記錄帶內(nèi)按與為了寫入NVM而出現(xiàn)信息的相同順序?qū)⑿畔懭隢VM(例如,在較晚的時間出現(xiàn)的信息之前寫入在較早的時間出現(xiàn)的信息)。在概念上,寫入作為流來管理的記錄帶的信息以按時間順序組織的類似FIFO的方式流入NVM。因為成功寫入具體NVM芯片在諸如電源故障的某些情況下是不可預測的,所以在流的末端寫入的數(shù)據(jù)在某些情況下具有“孔”。例如,流中的最后被寫芯片(在電源故障之前)成功寫入,但具有流的數(shù)據(jù)的較早部分的先前芯片沒有成功寫入,從而在先前芯片的位置產(chǎn)生了孔(例如,無效的、不可校正的和/或缺失的數(shù)據(jù))。
[0041] 某些實施方式以多個流來操作。例如,流包括主機數(shù)據(jù)(例如,與來自主機的寫入命令相關(guān)聯(lián)的寫入數(shù)據(jù))和再循環(huán)數(shù)據(jù)(例如,從NVM的一部分移至另一部分以使NVM的較大連續(xù)部分可使用的數(shù)據(jù))的一個或多個數(shù)據(jù)流。例如,流包括用于映射信息(諸如用于確定NVM具體主機寫入數(shù)據(jù)被存儲在哪里)的一個或多個映射流。例如,流包括用于存儲數(shù)據(jù)結(jié)構(gòu)的整個或部分圖像的一個或多個檢查點流,該數(shù)據(jù)結(jié)構(gòu)用于管理NVM數(shù)據(jù)存儲(諸如映射信息和使用統(tǒng)計數(shù)據(jù))。
[0042] 自身日志記錄使得能夠僅使用在具體對象中可用的信息來恢復與具體對象一致的信息。例如,主機數(shù)據(jù)與識別主機數(shù)據(jù)與哪些LBA對應的信息一起存儲在NVM中。再如,再循環(huán)數(shù)據(jù)與識別再循環(huán)數(shù)據(jù)與哪些LBA對應的信息一起存儲在NVM中。在某些實施方式和/或使用場景下,自身日志記錄連同知道被寫入的所有數(shù)據(jù)的順序一起,可以完全恢復映射信息和其他數(shù)據(jù)結(jié)構(gòu)(盡管很慢)。例如,讀取SSD的所有(自身日志記錄的)數(shù)據(jù)可以重建使LBA與NVM中的物理位置相關(guān)聯(lián)的映射。
[0043] 層級一致性使得能夠確定數(shù)據(jù)結(jié)構(gòu)的哪個版本由另一個數(shù)據(jù)結(jié)構(gòu)的哪個版本來管理,版本例如是由于單獨寫入和/或設(shè)置檢查點的信息導致的。例如,數(shù)據(jù)流優(yōu)先于映射流,而映射流優(yōu)先于檢查點流。故障導致來自流的信息彼此相對無序地存儲在NVM中。與流中的信息一起存儲的時間標記(例如,紀元報頭和/或時間戳)使得能夠確定存儲在NVM中的流信息的相對順序。在某些實施方式和/或使用場景下,與層級一致性相結(jié)合的自身日志記錄使得能夠完全、迅速恢復映射信息和其他數(shù)據(jù)結(jié)構(gòu)。例如,通過從映射流讀取映射的版本并使用僅從領(lǐng)先該映射版本的部分數(shù)據(jù)流獲得的更新來更新映射,來快速恢復使LBA與NVM中的物理位置相關(guān)聯(lián)的映射。
[0044] 在某些實施方式中,層級一致性使得能夠使用滾動檢查點。諸如映射的數(shù)據(jù)結(jié)構(gòu)的滾動檢查點在分開的相應時間保存數(shù)據(jù)結(jié)構(gòu)的部分的狀態(tài),使得在保存比數(shù)據(jù)結(jié)構(gòu)的滾動檢查點中的一個大的數(shù)字之后保存整個數(shù)據(jù)結(jié)構(gòu)。因為操作在滾動檢查點的保存之間繼續(xù),所以滾動檢查點中的每一個都是在數(shù)據(jù)結(jié)構(gòu)的相應部分被滾動檢查點保存的相應時間的數(shù)據(jù)結(jié)構(gòu)的相應部分的快照。然而,不一定存在已經(jīng)保存的整個數(shù)據(jù)結(jié)構(gòu)的單個的時間一致的副本。在某些實施方式和/或使用場景下,與時間戳結(jié)合的層級一致性使得能夠從比包含數(shù)據(jù)結(jié)構(gòu)的流具有層級優(yōu)先的其他流中的滾動檢查點和信息恢復整個數(shù)據(jù)結(jié)構(gòu)的單一的時間一致的副本。在進一步的實施方式和/或使用場景下,滾動檢查點的使用能夠諸如通過影響延遲、通過最小化正常處理由于檢查點設(shè)置導致的中斷和/或延時的持續(xù)時間,來使檢查點設(shè)置對系統(tǒng)行為的破壞性較小。
[0045] 在包括自身日志記錄和層級一致性的上下文中的恢復技術(shù)包括將檢查點存儲(滾動)至NVM,并且響應于故障,處理存儲的(滾動的)檢查點以重建跟蹤LBA至NVM位置一致的映射信息。
[0046] 在各種實施方式中,數(shù)據(jù)流(例如具有主機寫入數(shù)據(jù)和再循環(huán)數(shù)據(jù))的數(shù)據(jù)頁面、映射流(例如具有SLM條目或其更新)的映射頁面以及NVM中存儲的檢查點流(例如具有FLM條目或其更新)的檢查點頁面中的一個或多個是自身日志記錄的。例如,頁面(如果存在的話)包含確保單獨的數(shù)據(jù)結(jié)構(gòu)的一致性所需的信息。但這并不意味著對諸如由時間標記提供的時間觀有要求的數(shù)據(jù)結(jié)構(gòu)之間的一致性。數(shù)據(jù)帶(例如,包括數(shù)據(jù)頁面)和映射帶(例如,包括映射條目和/或更新)作為流來管理,并按時間順序(time order)組織(至少在流中)。
[0047] 在某些實施方式和/或使用場景下,諸如存儲在NVM中的每個主機頁面與包含主機頁面的主機頁面地址(諸如LBA)的報頭相關(guān)聯(lián)。因而,如果已將主機頁面寫入NVM,則相關(guān)聯(lián)的主機頁面地址(來自對應報頭)表示被寫入的主機頁面是哪個主機頁面。如果與主機頁面的寫入對應的SLM條目沒有記錄到NVM中(例如,在發(fā)生故障之前),則主機頁面本身包含足以重建SLM條目的信息(主機頁面地址)。在某些環(huán)境下,從數(shù)據(jù)容器重建數(shù)據(jù)的能力被稱為引用完整性。
[0048] 在某些實施方式中,層級一致性定義數(shù)據(jù)結(jié)構(gòu)的順序,使得在被單獨寫入和/或經(jīng)檢查點設(shè)置的多個數(shù)據(jù)結(jié)構(gòu)之中,可識別數(shù)據(jù)結(jié)構(gòu)中的最高優(yōu)先級數(shù)據(jù)結(jié)構(gòu)(或其一部分)。例如,當數(shù)據(jù)帶、映射帶和檢查點FIFO全部一致時(例如,全部按時間順序),數(shù)據(jù)帶優(yōu)先于映射帶,并且映射帶優(yōu)先于檢查點FIFO。
[0049] 根據(jù)各種實施方式,映射是以下各項中的一個或多個:使主機協(xié)議的LBA與NVM中的物理存儲地址相關(guān)聯(lián)的一級映射、二級映射、多級映射、直接映射、相關(guān)映射和任何其他構(gòu)件。例如,在某些實施方式中,二級映射包括使LBA的第一函數(shù)與多個二級映射頁面中的一個的NVM中的相應地址相關(guān)聯(lián)的一級映射,并且二級映射中的每一個使LBA的第二函數(shù)與對應于LBA的數(shù)據(jù)的NVM中的相應地址相關(guān)聯(lián)。在進一步的實施方式中,LBA的第一函數(shù)和LBA的第二函數(shù)的示例是除以每個二級映射頁面中所包括的條目的固定數(shù)量時獲得的商和余數(shù)。多個二級映射頁面統(tǒng)稱為二級映射。在本文中,對映射的一個或多個條目的引用指的是任意類型映射的一個或多個條目,該任意類型映射包括一級映射、二級映射的一級、二級映射的二級、多級映射的任意級或具有條目的任何其他類型的映射。
[0050] 根據(jù)各種實施方式,二級映射(或多級映射的較低級)的映射頁面的每一個滿足以下各項中的一項或多項:包括與其他映射頁面相同數(shù)量的條目;包括與至少一部分其他映射頁面不同數(shù)量的條目;包括與其他映射頁面相同粒度(granularity)的條目;包括與其他映射頁面具有不同粒度的條目、包括全部具有相同粒度的條目;包括具有多個粒度的條目;包括指定映射頁面的格式和/或布局的各報頭;以及具有表示映射頁面的條目的任何其他格式、布局或組織。例如,第一二級映射頁面具有每條目4KB的粒度規(guī)格,第二二級映射頁面具有每條目8KB的粒度規(guī)格并且只具有第一二級映射頁面的條目的多少的一半。
[0051] 在進一步的實施方式中,較高級映射的條目包括對應的較低級映射頁面的格式和/或布局信息。例如,一級映射中的每個條目包括相關(guān)聯(lián)的二級映射頁面中的條目的粒度規(guī)格。
[0052] 在某些實施方式中,映射包括多個條目,每個條目使一個或多個LBA與信息相關(guān)聯(lián),該信息選擇性地包括存儲有LBA數(shù)據(jù)的NVM中的各自的位置。例如,LBA規(guī)定了512B扇區(qū),并且映射中的每個條目與LBA的對齊的八扇區(qū)(4KB)區(qū)域相關(guān)聯(lián)。
[0053] 根據(jù)各種實施方式,映射的條目的信息包括以下各項中的一個或多個:NVM中的位置;NVM中讀取單元的地址;要讀取以獲得NVM中所存儲的相關(guān)聯(lián)的LBA的數(shù)據(jù)的讀取單元的數(shù)量;NVM中所存儲的相關(guān)聯(lián)的LBA的數(shù)據(jù)的大小,該大小的粒度任選地和/或可選地大于一個字節(jié);相關(guān)聯(lián)的LBA的數(shù)據(jù)不存在于NVM中的指示,諸如由于相關(guān)聯(lián)的LBA的數(shù)據(jù)被修整;相關(guān)聯(lián)的LBA的數(shù)據(jù)的屬性,包括施加給相關(guān)聯(lián)的LBA的數(shù)據(jù)的任何非標準修飾符;以及相關(guān)聯(lián)的LBA的數(shù)據(jù)的任何其他元數(shù)據(jù)、屬性或性質(zhì)。
[0054] 在某些實施方式中,NVM中的地址被分組為多個區(qū)域以減少表示其中一個地址所需的位數(shù)。例如,如果I/O設(shè)備的LBA被分成64個區(qū)域,并且NVM被分成64個區(qū)域(每個LBA區(qū)域?qū)粋€),則與具體LBA相關(guān)聯(lián)的映射條目需要的地址位少了6個,因為NVM中的區(qū)域中的一個能夠由具體LBA的區(qū)域確定。根據(jù)各種實施方式,LBA的區(qū)域和NVM的區(qū)域之間的關(guān)聯(lián)是以下各項中的一個或多個:相等、直接關(guān)聯(lián),諸如一對一的數(shù)值函數(shù)、查詢表、動態(tài)映射以及使兩組數(shù)字相關(guān)聯(lián)的任何其他方法。
[0055] 在各種實施方式中,NVM中的位置包括多個讀取單元中的一個的地址,以及讀取單元中的長度和/或跨度。長度是NVM中所存儲的多個數(shù)據(jù)項中的一個具體數(shù)據(jù)項的大小,該具體數(shù)據(jù)項與包括長度的映射的條目相關(guān)聯(lián)。根據(jù)各種實施方式,長度具有以下各項中的一項或多項的粒度:一字節(jié)、一個以上的字節(jié)、一個讀取單元、指定的一小部分讀取單元、根據(jù)數(shù)據(jù)項中的一個的最大允許壓縮率的粒度、以及用于跟蹤存儲使用量的任何其他粒度??缍仁谴鎯τ芯唧w數(shù)據(jù)項的相應部分的多個讀取單元,諸如整數(shù)個讀取單元。在進一步的實施方式和/或使用場景下,在讀取單元跨度中的第一讀取單元和/或讀取單元跨度中的最后讀取單元任選地和/或可選擇地存儲多個數(shù)據(jù)項中的一些或全部。在某些實施方式和/或使用場景下,長度和/或跨度被編碼地存儲,諸如通過將長度(在具有編碼的長度和/或跨度的上下文中有時稱為大?。┳鳛閷缍鹊难a償來存儲。在某些實施方式和/或使用場景下,未使用的長度和/或跨度的編碼對額外信息(諸如非標準修飾符的表示或諸如相關(guān)聯(lián)數(shù)據(jù)項是否存在于NVM中的表示)進行編碼。
[0056] 將NVM中的位置編碼為位置和長度使NVM中所存儲的數(shù)據(jù)的大小改變。例如,第一4KB區(qū)域被壓縮為400B大小,其完全存儲在單個讀取單元中,并具有一個讀取單元的長度,而第二4KB區(qū)域是不可壓縮的,跨越一個以上的讀取單元,并具有一個以上讀取單元的長度。在進一步的實施方式中,在與LBA的區(qū)域相關(guān)聯(lián)的存儲的讀取單元中具有長度和/或跨度使得能夠僅讀取NVM的所需部分來檢索LBA的區(qū)域的數(shù)據(jù)。
[0057] 在某些實施方式中,映射的每個條目包括信息,有時稱為元數(shù)據(jù),指定與條目相關(guān)聯(lián)的LBA的區(qū)域的屬性。在進一步的實施方式中,諸如通過使區(qū)域的多個LBA中的每一個具有分別的元數(shù)據(jù)規(guī)范,至少一部分元數(shù)據(jù)的粒度比區(qū)域的粒度細。根據(jù)各種實施方式,元數(shù)據(jù)包括可適用于和/或用于修改和/或控制與區(qū)域相關(guān)聯(lián)的NVM中的數(shù)據(jù)的寫入、訪問、讀取和/或再循環(huán)的一個或多個非標準修飾符。
[0058] 示例性實施方式
[0059] 作為具體實施方式的緒論的結(jié)束,接下來是一系列示例性實施方式,這些示例性實施方式包括明確列舉為“EC”(示例性組合)的至少一些實施方式,這些示例性實施方式根據(jù)本文描述的概念提供對各種實施方式類型的額外描述;這些示例并不意味著是彼此排斥的、詳盡的或限制性的;且本發(fā)明不限于這些示例性實施方式,而是涵蓋所公布的權(quán)利要求及其等同物的范圍內(nèi)的所有可能的修改和變更。
[0060] EC1)一種方法,包括:
[0061] 按第一順序?qū)⒁幌盗袛?shù)據(jù)單元排列在非易失性存儲器(NVM)中,數(shù)據(jù)單元中的每一個與多個時間戳中的相應的一個相關(guān)聯(lián);
[0062] 按第二順序?qū)⒁幌盗袛?shù)據(jù)映射單元排列在NVM中,數(shù)據(jù)映射單元中的每一個與時間戳中的相應的一個相關(guān)聯(lián);
[0063] 其中數(shù)據(jù)映射單元中的每一個包括數(shù)據(jù)單元中對應數(shù)據(jù)單元的NVM中的位置;并且
[0064] 其中與數(shù)據(jù)單元中的每一個相關(guān)聯(lián)的相應時間戳在與對應數(shù)據(jù)映射單元相關(guān)聯(lián)的相應時間戳處或之前。
[0065] EC2)根據(jù)EC1所述的方法,其中:
[0066] 數(shù)據(jù)單元中的每一個對應于從主機至相應邏輯塊地址(LBA)的相應數(shù)據(jù)寫入;
[0067] 數(shù)據(jù)單元中的前一個數(shù)據(jù)單元和后一個數(shù)據(jù)單元對應于至相應LBA中的同一個LBA的數(shù)據(jù)寫入中的數(shù)據(jù)寫入;并且
[0068] 前一個數(shù)據(jù)單元不具有數(shù)據(jù)映射單元中的相關(guān)數(shù)據(jù)映射單元。
[0069] EC3)根據(jù)EC1所述的方法,在電源故障之后,進一步包括:
[0070] 確定數(shù)據(jù)單元中的最新有效且連續(xù)的(相鄰的)數(shù)據(jù)單元;
[0071] 確定數(shù)據(jù)映射單元中的最新有效且連續(xù)的數(shù)據(jù)映射單元,其中與數(shù)據(jù)映射單元中的最新有效且連續(xù)的數(shù)據(jù)映射單元相關(guān)聯(lián)的相應時間戳在與數(shù)據(jù)單元中的最新有效且連續(xù)的數(shù)據(jù)單元相關(guān)聯(lián)的相應時間戳處或之前;
[0072] 僅將數(shù)據(jù)映射單元中的數(shù)據(jù)映射單元恢復至數(shù)據(jù)映射單元中的最新有效且連續(xù)的數(shù)據(jù)映射單元;并且
[0073] 其中在恢復中忽略與相應時間戳中的任意一個相關(guān)聯(lián)的數(shù)據(jù)映射單元中的任意一個,所述相應時間戳在與數(shù)據(jù)單元中的最新有效且連續(xù)的數(shù)據(jù)單元相關(guān)聯(lián)的相應時間戳之后。
[0074] EC4)根據(jù)EC1所述的方法,其中數(shù)據(jù)單元是數(shù)據(jù)存儲單元。
[0075] EC5)一種方法,包括:
[0076] 將一系列數(shù)據(jù)存儲單元寫入非易失性存儲器(NVM),數(shù)據(jù)存儲單元中的每一個與多個時間戳中的相應的一個相關(guān)聯(lián);
[0077] 將一系列數(shù)據(jù)映射單元寫入NVM,數(shù)據(jù)映射單元中的每一個與時間戳中的相應的一個相關(guān)聯(lián);
[0078] 其中數(shù)據(jù)映射單元中的每一個包括數(shù)據(jù)存儲單元中對應數(shù)據(jù)存儲單元的NVM中的位置;并且
[0079] 其中與數(shù)據(jù)存儲單元中的每一個相關(guān)聯(lián)的相應時間戳表示相對年齡(relative age),所述相對年齡等于或老于(older)與對應數(shù)據(jù)映射單元相關(guān)聯(lián)的相應時間戳表示的相對年齡。
[0080] EC6)根據(jù)EC5所述的方法,其中數(shù)據(jù)存儲單元的寫入符合第一順序并且數(shù)據(jù)映射單元的寫入符合第二順序。
[0081] EC7)根據(jù)EC5所述的方法,其中數(shù)據(jù)存儲單元根據(jù)第一順序布置在NVM中并且數(shù)據(jù)映射單元根據(jù)第二順序布置在NVM中。
[0082] EC8)根據(jù)EC1、EC6或EC7所述的方法,其中第一順序不同于第二順序。
[0083] EC9)根據(jù)EC5所述的方法,其中:
[0084] 數(shù)據(jù)存儲單元中的第一個對應于從主機至具體邏輯塊地址(LBA)的第一數(shù)據(jù)寫入;
[0085] 數(shù)據(jù)存儲單元中的第二個對應于從主機至具體LBA的第二數(shù)據(jù)寫入;
[0086] 第一數(shù)據(jù)寫入按時間順序在第二數(shù)據(jù)寫入前;并且
[0087] 數(shù)據(jù)映射單元中沒有一個與第一數(shù)據(jù)存儲單元對應。
[0088] EC10)根據(jù)EC6所述的方法,在事件之后,進一步包括:
[0089] 根據(jù)第一順序確定數(shù)據(jù)存儲單元中的最新有效且連續(xù)的一個;
[0090] 根據(jù)第二順序確定與表示相對年齡的相應時間戳中的一個相關(guān)聯(lián)的數(shù)據(jù)映射單元中的最新有效且連續(xù)的數(shù)據(jù)映射單元,所述相對年齡等于或老于與數(shù)據(jù)存儲單元中的最新有效且連續(xù)的一個相關(guān)聯(lián)的相應時間戳表示的相對年齡;以及
[0091] 根據(jù)第一和第二順序僅將數(shù)據(jù)映射單元中的數(shù)據(jù)映射單元恢復至數(shù)據(jù)映射單元中的最新有效且連續(xù)的數(shù)據(jù)映射單元。
[0092] EC11)根據(jù)EC6所述的方法,進一步包括:
[0093] 根據(jù)第一順序確定數(shù)據(jù)存儲單元中的第一個,所述第一個是數(shù)據(jù)存儲單元中的最新有效且連續(xù)的一個;
[0094] 根據(jù)第二順序確定與表示相對年齡的相應時間戳中的一個相關(guān)聯(lián)的數(shù)據(jù)映射單元中的最新有效且連續(xù)的數(shù)據(jù)映射單元,所述相對年齡等于或老于與數(shù)據(jù)存儲單元中的最新有效且連續(xù)的一個相關(guān)聯(lián)的相應時間戳表示的相對年齡;
[0095] 根據(jù)第一順序確定數(shù)據(jù)存儲單元中的第二個,所述第二個是與表示相對年齡的相應時間戳中的一個相關(guān)聯(lián)的數(shù)據(jù)存儲單元中的最新數(shù)據(jù)存儲單元,所述相對年齡等于與數(shù)據(jù)映射單元中的最新有效且連續(xù)的數(shù)據(jù)映射單元相關(guān)聯(lián)的相應時間戳表示的相對年齡或在此之前;以及
[0096] 根據(jù)第一和第二順序,僅使用來自數(shù)據(jù)存儲單元中的第二個的數(shù)據(jù)單元中的數(shù)據(jù)單元通過數(shù)據(jù)存儲單元中的第一個將數(shù)據(jù)映射單元中的數(shù)據(jù)映射單元恢復至數(shù)據(jù)映射單元中的最新有效且連續(xù)的數(shù)據(jù)映射單元。
[0097] EC12)根據(jù)EC11所述的方法,進一步包括:
[0098] 針對先前未寫入NVM的數(shù)據(jù)映射單元中的每個修改的數(shù)據(jù)映射單元來識別與最舊更新相關(guān)聯(lián)的時間戳中的相應時間戳,所述相應時間戳等于與數(shù)據(jù)存儲單元中的具體數(shù)據(jù)存儲單元相關(guān)聯(lián)的相應時間戳,修改的數(shù)據(jù)映射單元包括具體數(shù)據(jù)存儲單元的NVM中的位置;以及
[0099] 在寫入與相應時間戳中的一個相關(guān)聯(lián)的數(shù)據(jù)存儲單元中的一個處或之前,將先前未寫入NVM的修改的數(shù)據(jù)映射單元中的每一個寫入NVM,所述相應時間戳大于繼與修改的數(shù)據(jù)映射單元的最舊更新相關(guān)聯(lián)的相應時間戳之后的確定量。
[0100] EC13)根據(jù)EC10所述的方法,進一步包括相對于恢復忽略具有表示相對年齡的相應時間戳的數(shù)據(jù)映射單元中的任意一個,所述相對年齡小于數(shù)據(jù)存儲單元中最新有效且連續(xù)的數(shù)據(jù)存儲單元的相應時間戳表示的相對年齡。
[0101] EC14)根據(jù)EC10所述的方法,其中事件包括故障。
[0102] EC15)根據(jù)EC14所述的方法,其中故障包括以下各項中的一個或多個:
[0103] 電源故障,
[0104] 死機,以及
[0105] 電路故障。
[0106] EC16)根據(jù)EC4或EC5所述的方法,其中數(shù)據(jù)映射單元中的至少兩個包括相同位置,所述相同位置是數(shù)據(jù)單元的至少兩個數(shù)據(jù)單元的相同位置。
[0107] EC17)根據(jù)EC4或EC5所述的方法,進一步包括使用數(shù)據(jù)存儲單元中的至少一部分存儲與數(shù)據(jù)存儲單元相關(guān)聯(lián)的相應時間戳,以及使用數(shù)據(jù)映射單元中的至少一部分存儲與數(shù)據(jù)映射單元相關(guān)聯(lián)的相應時間戳。
[0108] EC18)根據(jù)EC4或EC5所述的方法,其中數(shù)據(jù)存儲單元的相應時間戳的足夠時間戳使用數(shù)據(jù)存儲單元進行存儲,使得數(shù)據(jù)存儲單元中的每一個與相應數(shù)據(jù)存儲單元的相應時間戳之間的關(guān)聯(lián)可通過讀取NVM來確定。
[0109] EC19)根據(jù)EC4或EC5所述的方法,其中數(shù)據(jù)存儲單元的相應時間戳的至少一部分中的每一個存儲在具有相關(guān)聯(lián)數(shù)據(jù)存儲單元的NVM中。
[0110] EC20)根據(jù)EC4或EC5所述的方法,其中數(shù)據(jù)映射單元的相應時間戳的足夠時間戳使用數(shù)據(jù)映射單元進行存儲,使得數(shù)據(jù)映射單元中的每一個與相應數(shù)據(jù)映射單元的相應時間戳之間的關(guān)聯(lián)可通過讀取NVM來確定。
[0111] EC21)根據(jù)EC4或EC5所述的方法,其中數(shù)據(jù)映射單元的相應時間戳的至少一部分中的每一個存儲在具有相關(guān)聯(lián)數(shù)據(jù)映射單元的NVM中。
[0112] EC22)根據(jù)EC4或EC5所述的方法,其中數(shù)據(jù)存儲單元中的具體數(shù)據(jù)存儲單元存儲在相應時間戳與具體數(shù)據(jù)存儲單元相關(guān)聯(lián)的NVM中,并且數(shù)據(jù)映射單元中的具體數(shù)據(jù)映射單元存儲在相應時間戳與具體數(shù)據(jù)映射單元相關(guān)聯(lián)的NVM中。
[0113] EC23)一種方法,包括:
[0114] 根據(jù)存儲流將多個存儲單元寫入非易失性存儲器(NVM),存儲單元中的每一個包括數(shù)據(jù)部分和對應時間戳部分;
[0115] 根據(jù)映射流將多個映射單元寫入NVM,映射單元中的每一個包括條目部分和對應時間戳部分;
[0116] 其中至少一部分條目部分中的每一個可以通過指定數(shù)據(jù)部分中的至少對應數(shù)據(jù)部分來確定將相應邏輯塊(LB)寫入NVM中的哪里;
[0117] 其中時間發(fā)生順序(temporal order)由時間戳部分表示,存儲單元時間戳根據(jù)彼此的相對時間戳順序單調(diào)遞增,并且映射單元時間戳根據(jù)彼此的相對時間戳順序單調(diào)遞增;并且
[0118] 其中當寫入NVM的映射單元中的至少一個具有時間戳部分時,存在至少一個具體時間點,所述時間戳部分根據(jù)時間發(fā)生順序晚于根據(jù)時間發(fā)生順序的在具體時間點時寫入NVM的存儲單元時間戳部分的最新時間戳部分。
[0119] EC24)根據(jù)EC23所述的方法,其中寫入存儲單元按與存儲單元時間戳部分表示的時間發(fā)生順序?qū)臅r間順序?qū)懭氪鎯卧?,并且寫入映射單元按與映射單元時間戳部分表示的時間發(fā)生順序?qū)臅r間順序?qū)懭胗成鋯卧?/div>
[0120] EC25)根據(jù)EC23所述的方法,進一步包括根據(jù)檢查點流將一個或多個檢查點單元寫入NVM,檢查點單元中的每一個包括映射部分和對應時間戳部分,并且其中檢查點時間戳部分根據(jù)彼此的相對時間戳順序單調(diào)遞增。
[0121] EC26)根據(jù)EC25所述的方法,其中檢查點單元的寫入按與檢查點時間戳部分表示的時間發(fā)生順序?qū)臅r間順序?qū)懭霗z查點單元。
[0122] EC27)根據(jù)EC25所述的方法,其中連續(xù)一組預定數(shù)量的檢查點單元至少包括條目部分符合于此的映射的整個檢查點。
[0123] EC28)根據(jù)EC27所述的方法,進一步包括至少部分基于映射部分和/或檢查點單元時間戳部分中的一個或多個的一個或多個部分來恢復映射。
[0124] EC29)根據(jù)EC28所述的方法,其中恢復進一步至少部分基于條目部分和/或映射單元時間戳部分中的一個或多個的一個或多個部分。
[0125] EC30)根據(jù)EC29所述的方法,其中恢復進一步至少部分基于數(shù)據(jù)部分和/或存儲單元時間戳部分中的一個或多個的一個或多個部分。
[0126] EC31)根據(jù)EC30所述的方法,其中數(shù)據(jù)部分中的每一個包括一個或多個數(shù)據(jù)單元以及對應的一個或多個報頭,報頭中的每一個識別數(shù)據(jù)單元中的相應對應數(shù)據(jù)單元和LB中的一個LB之間的相應映射,映射可以確定LB中的相應LB作為數(shù)據(jù)單元中的相應數(shù)據(jù)單元寫入NVM中的哪里,并且其中恢復進一步至少部分基于寫入NVM的存儲單元中包括的相應報頭中的一個或多個。
[0127] EC32)根據(jù)EC31所述的方法,其中條目部分中的具體條目部分確定相應LB的相應數(shù)據(jù)部分,相應數(shù)據(jù)部分包括報頭中的具體報頭,并且具體報頭識別數(shù)據(jù)單元中的具體數(shù)據(jù)單元和具體條目部分的相應LB之間的相應映射。
[0128] EC33)根據(jù)EC27所述的方法,其中映射是一級映射。
[0129] EC34)根據(jù)EC33所述的方法,進一步包括緩存和/或緩沖映射的至少一部分;并且其中映射部分中的至少一個的至少一部分符合緩存和/或緩沖。
[0130] EC35)根據(jù)EC27所述的方法,其中映射是包括第一級映射和第二級映射的二級映射,映射部分對應于第一級映射的部分,條目部分對應于第二級映射的條目。
[0131] EC36)根據(jù)EC35所述的方法,進一步包括緩存和/或緩沖第一級映射和/或第二級映射的至少一部分;并且其中映射部分和條目部分中的至少一個的至少一部分符合緩存和/或緩沖。
[0132] EC37)根據(jù)EC27所述的方法,其中映射部分中的每一個符合具有,根據(jù)時間發(fā)生順序,比相應映射部分的對應時間戳部分早的對應時間戳部分的所有條目部分。
[0133] EC38)根據(jù)EC25所述的方法,其中一個具體時間點是第一具體時間點,并且當寫入NVM的檢查點單元中的至少一個具有時間戳部分時,存在至少第二具體時間點,所述時間戳部分根據(jù)時間發(fā)生順序晚于根據(jù)時間發(fā)生順序的在第二具體時間點時寫入NVM的映射單元時間戳部分的最新時間戳部分。
[0134] EC39)根據(jù)EC25所述的方法,其中一個具體時間點是第一具體時間點,并且當寫入NVM的檢查點單元中的至少一個具有時間戳部分時,存在至少第二具體時間點,所述時間戳部分根據(jù)時間發(fā)生順序晚于根據(jù)時間發(fā)生順序的在第二具體時間點時寫入NVM的存儲單元時間戳部分的最新時間戳部分。
[0135] EC40)根據(jù)EC23所述的方法,其中多個存儲單元是第一多個存儲單元,存儲流是第一存儲流,并且進一步包括根據(jù)第二存儲流將第二多個存儲單元寫入NVM,第二存儲單元中的每一個包括數(shù)據(jù)部分和對應時間戳部分,并且第二存儲單元時間戳部分根據(jù)彼此的相對時間戳順序單調(diào)遞增。
[0136] EC41)根據(jù)EC40所述的方法,其中第二存儲單元的寫入按與第二存儲單元時間戳部分表示的時間發(fā)生順序?qū)臅r間順序?qū)懭氲诙鎯卧?/div>
[0137] EC42)根據(jù)EC40所述的方法,其中第二存儲單元中的至少一個按時間順序在第一存儲單元中的兩個之間寫入,并且至少一個第二存儲單元時間戳部分根據(jù)時間發(fā)生順序在兩個第一存儲單元時間戳部分之間。
[0138] EC43)根據(jù)EC40所述的方法,其中第一多個存儲單元的數(shù)據(jù)部分中的至少一個包括來自主機的與主機數(shù)據(jù)寫入命令相關(guān)的主機數(shù)據(jù),并且其中第二多個存儲單元的數(shù)據(jù)部分中的至少一個包括響應于再循環(huán)操作從NVM讀取的再循環(huán)數(shù)據(jù)。
[0139] EC44)根據(jù)EC23所述的方法,其中時間戳部分被編碼以便可以根據(jù)時間發(fā)生順序經(jīng)由比較后的時間戳部分的數(shù)值比較來比較時間戳部分。
[0140] EC45)根據(jù)EC44所述的方法,其中數(shù)值比較忽略比較后的時間戳部分的一個或多個連續(xù)最高有效位。
[0141] EC46)根據(jù)EC44所述的方法,其中如果比較后的存儲單元時間戳部分中的具體存儲單元時間戳部分在數(shù)值上與比較后的映射單元時間戳部分中的具體映射單元時間戳部分相同,則通過預先確定,當時間戳部分相同時,比較后的存儲單元時間戳部分早于比較后的映射單元時間戳部分,來確定比較。
[0142] EC47)根據(jù)EC46所述的方法,其中數(shù)值身份忽略比較后的時間戳部分的一個或多個連續(xù)最高有效位。
[0143] EC48)根據(jù)EC23所述的方法,其中條目部分中的每一個都符合具有對應時間戳部分的所有數(shù)據(jù)部分,所述時間戳部分根據(jù)時間發(fā)生順序早于相應條目部分的對應時間戳部分。
[0144] EC49)根據(jù)EC23所述的方法,其中存儲單元中的每一個以原子的方式寫入。
[0145] EC50)根據(jù)EC23所述的方法,其中映射單元中的每一個以原子的方式寫入。
[0146] EC51)根據(jù)EC23所述的方法,其中數(shù)據(jù)部分中的至少一個包括來自主機的與主機數(shù)據(jù)寫入命令相關(guān)的主機數(shù)據(jù)。
[0147] EC52)根據(jù)EC23所述的方法,其中數(shù)據(jù)部分中的至少一個包括響應于再循環(huán)操作從NVM讀取的再循環(huán)數(shù)據(jù)。
[0148] EC53)根據(jù)EC23所述的方法,其中數(shù)據(jù)部分中的每一個包括一個或多個數(shù)據(jù)單元和對應的一個或多個報頭,報頭中的每一個識別數(shù)據(jù)單元中的相應對應數(shù)據(jù)單元和LB中的一個LB之間的相應映射,映射可以確定LB中的相應LB作為數(shù)據(jù)單元中的相應數(shù)據(jù)單元寫入NVM中的哪里。
[0149] EC54)根據(jù)EC53所述的方法,其中報頭中的每一個連續(xù)寫入相應數(shù)據(jù)單元由相應報頭識別的NVM中。
[0150] EC55)根據(jù)EC2、EC9、EC43或EC51所述的方法,進一步包括根據(jù)數(shù)據(jù)寫入與主機交互。
[0151] EC56)根據(jù)EC55所述的方法,其中交互與存儲接口標準兼容。
[0152] EC57)根據(jù)EC2、EC9、EC43或EC51所述的方法,其中主機是計算主機,并且進一步包括根據(jù)數(shù)據(jù)寫入來操作計算主機。
[0153] EC58)根據(jù)ECl、EC5或EC23所述的方法,其中NVM包括一個或多個閃存。
[0154] EC59)根據(jù)EC58所述的方法,進一步包括經(jīng)由閃存接口與閃存交互。
[0155] EC60)一種有形計算機可讀介質(zhì),其中存儲有當由處理元件執(zhí)行時使處理元件執(zhí)行和/或控制包括以下各項的操作的一套指令:
[0156] 按第一順序?qū)⒁幌盗袛?shù)據(jù)單元排列在非易失性存儲器(NVM)中,數(shù)據(jù)單元中的每一個與多個時間戳中的相應的一個相關(guān)聯(lián);
[0157] 按第二順序?qū)⒁幌盗袛?shù)據(jù)映射單元排列在NVM中,數(shù)據(jù)映射單元中的每一個與時間戳中的相應的一個相關(guān)聯(lián);
[0158] 其中數(shù)據(jù)映射單元中的每一個包括數(shù)據(jù)單元中對應數(shù)據(jù)單元的NVM中的位置;并且
[0159] 其中與數(shù)據(jù)單元中的每一個相關(guān)聯(lián)的相應時間戳在與對應數(shù)據(jù)映射單元相關(guān)聯(lián)的相應時間戳處或之前。
[0160] EC61)根據(jù)EC60所述的有形計算機可讀介質(zhì),其中:
[0161] 數(shù)據(jù)單元中的每一個對應于從主機至相應邏輯塊地址(LBA)的相應數(shù)據(jù)寫入;
[0162] 數(shù)據(jù)單元中的前一個數(shù)據(jù)單元和后一個數(shù)據(jù)單元對應于至相應LBA中的同一個LBA的數(shù)據(jù)寫入中的數(shù)據(jù)寫入;并且
[0163] 前一個數(shù)據(jù)單元不具有數(shù)據(jù)映射單元中的相關(guān)數(shù)據(jù)映射單元。
[0164] EC62)根據(jù)EC60所述的有形計算機可讀介質(zhì),其中操作進一步包括:
[0165] 在電源故障之后,確定數(shù)據(jù)單元中的最新有效且連續(xù)的數(shù)據(jù)單元;
[0166] 在電源故障之后,確定數(shù)據(jù)映射單元中的最新有效且連續(xù)的數(shù)據(jù)映射單元,其中與數(shù)據(jù)映射單元中的最新有效且連續(xù)的數(shù)據(jù)映射單元相關(guān)聯(lián)的相應時間戳在與數(shù)據(jù)單元中的最新有效且連續(xù)的數(shù)據(jù)單元相關(guān)聯(lián)的相應時間戳處或之前;
[0167] 僅將數(shù)據(jù)映射單元中的數(shù)據(jù)映射單元恢復至數(shù)據(jù)映射單元中的最新有效且連續(xù)的數(shù)據(jù)映射單元;并且
[0168] 其中在恢復中忽略與相應時間戳中的任意一個相關(guān)聯(lián)的數(shù)據(jù)映射單元中的任意一個,所述相應時間戳在與數(shù)據(jù)單元中的最新有效且連續(xù)的數(shù)據(jù)單元相關(guān)聯(lián)的相應時間戳之后。
[0169] EC63)根據(jù)EC60所述的有形計算機可讀介質(zhì),其中數(shù)據(jù)單元是數(shù)據(jù)存儲單元。
[0170] EC64)一種有形計算機可讀介質(zhì),其中存儲有當由處理元件執(zhí)行時使處理元件執(zhí)行和/或控制包括以下各項的操作的一套指令:
[0171] 將一系列數(shù)據(jù)存儲單元寫入非易失性存儲器(NVM),數(shù)據(jù)存儲單元中的每一個與多個時間戳中的相應的一個相關(guān)聯(lián);
[0172] 將一系列數(shù)據(jù)映射單元寫入NVM,數(shù)據(jù)映射單元中的每一個與時間戳中的相應的一個相關(guān)聯(lián);
[0173] 其中數(shù)據(jù)映射單元中的每一個包括數(shù)據(jù)存儲單元中對應數(shù)據(jù)存儲單元的NVM中的位置;并且
[0174] 其中與數(shù)據(jù)存儲單元中的每一個相關(guān)聯(lián)的相應時間戳表示相對年齡,所述相對年齡等于或老于與對應數(shù)據(jù)映射單元相關(guān)聯(lián)的相應時間戳表示的相對年齡。
[0175] EC65)根據(jù)EC64所述的有形計算機可讀介質(zhì),其中數(shù)據(jù)存儲單元的寫入符合第一順序并且數(shù)據(jù)映射單元的寫入符合第二順序。
[0176] EC66)根據(jù)EC64所述的有形計算機可讀介質(zhì),其中數(shù)據(jù)存儲單元根據(jù)第一順序布置在NVM中并且數(shù)據(jù)映射單元根據(jù)第二順序布置在NVM中。
[0177] EC67)根據(jù)EC60、EC65或EC66所述的有形計算機可讀介質(zhì),其中第一順序不同于第二順序。
[0178] EC68)根據(jù)EC64所述的有形計算機可讀介質(zhì),其中:
[0179] 數(shù)據(jù)存儲單元中的第一個對應于從主機至具體邏輯塊地址(LBA)的第一數(shù)據(jù)寫入;
[0180] 數(shù)據(jù)存儲單元中的第二個對應于從主機至具體LBA的第二數(shù)據(jù)寫入;
[0181] 第一數(shù)據(jù)寫入按時間順序在第二數(shù)據(jù)寫入前;并且
[0182] 數(shù)據(jù)映射單元中沒有一個與第一數(shù)據(jù)存儲單元對應。
[0183] EC69)根據(jù)EC65所述的有形計算機可讀介質(zhì),其中操作進一步包括:
[0184] 在事件之后,根據(jù)第一順序確定數(shù)據(jù)存儲單元中的最新有效且連續(xù)的一個;
[0185] 在事件之后,根據(jù)第二順序確定與表示相對年齡的相應時間戳中的一個相關(guān)聯(lián)的數(shù)據(jù)映射單元中的最新有效且連續(xù)的數(shù)據(jù)映射單元,所述相對年齡等于或老于與數(shù)據(jù)存儲單元中的最新有效且連續(xù)的一個相關(guān)聯(lián)的相應時間戳表示的相對年齡;以及
[0186] 根據(jù)第一和第二順序僅將數(shù)據(jù)映射單元中的數(shù)據(jù)映射單元恢復至數(shù)據(jù)映射單元中的最新有效且連續(xù)的數(shù)據(jù)映射單元。
[0187] EC70)根據(jù)EC65所述的有形計算機可讀介質(zhì),其中操作進一步包括:
[0188] 根據(jù)第一順序確定數(shù)據(jù)存儲單元中的第一個,所述第一個是數(shù)據(jù)存儲單元中的最新有效且連續(xù)的一個;
[0189] 根據(jù)第二順序確定與表示相對年齡的相應時間戳中的一個相關(guān)聯(lián)的數(shù)據(jù)映射單元中的最新有效且連續(xù)的數(shù)據(jù)映射單元,所述相對年齡等于或老于與數(shù)據(jù)存儲單元中的最新有效且連續(xù)的一個相關(guān)聯(lián)的相應時間戳表示的相對年齡;
[0190] 根據(jù)第一順序確定數(shù)據(jù)存儲單元中的第二個,所述第二個是與表示相對年齡的相應時間戳中的一個相關(guān)聯(lián)的數(shù)據(jù)存儲單元中的最新數(shù)據(jù)存儲單元,所述相對年齡等于與數(shù)據(jù)映射單元中的最新有效且連續(xù)的數(shù)據(jù)映射單元相關(guān)聯(lián)的相應時間戳表示的相對年齡或在此之前;以及
[0191] 根據(jù)第一和第二順序,僅使用來自數(shù)據(jù)存儲單元中的第二個的數(shù)據(jù)單元中的數(shù)據(jù)單元通過數(shù)據(jù)存儲單元中的第一個將數(shù)據(jù)映射單元中的數(shù)據(jù)映射單元恢復至數(shù)據(jù)映射單元中的最新有效且連續(xù)的數(shù)據(jù)映射單元。
[0192] EC71)根據(jù)EC70所述的有形計算機可讀介質(zhì),其中操作進一步包括:
[0193] 針對先前未寫入NVM的數(shù)據(jù)映射單元中的每個修改的數(shù)據(jù)映射單元來識別與最舊更新相關(guān)聯(lián)的時間戳中的相應時間戳,所述相應時間戳等于與數(shù)據(jù)存儲單元中的具體數(shù)據(jù)存儲單元相關(guān)聯(lián)的相應時間戳,修改的數(shù)據(jù)映射單元包括具體數(shù)據(jù)存儲單元的NVM中的位置;以及
[0194] 在寫入與相應時間戳中的一個相關(guān)聯(lián)的數(shù)據(jù)存儲單元中的一個處或之前,將先前未寫入NVM的修改的數(shù)據(jù)映射單元中的每一個寫入NVM,所述相應時間戳大于繼與修改的數(shù)據(jù)映射單元的最舊更新相關(guān)聯(lián)的相應時間戳之后的確定量。
[0195] EC72)根據(jù)EC69所述的有形計算機可讀介質(zhì),其中操作進一步包括相對于恢復忽略具有表示相對年齡的相應時間戳的數(shù)據(jù)映射單元中的任意一個,所述相對年齡小于數(shù)據(jù)存儲單元中最新有效且連續(xù)的數(shù)據(jù)存儲單元的相應時間戳表示的相對年齡。
[0196] EC73)根據(jù)EC69所述的有形計算機可讀介質(zhì),其中事件包括故障。
[0197] EC74)根據(jù)EC73所述的有形計算機可讀介質(zhì),其中故障包括以下各項中的一個或多個:
[0198] 電源故障,
[0199] 死機,以及
[0200] 電路故障。
[0201] EC75)根據(jù)EC63或EC64所述的有形計算機可讀介質(zhì),其中數(shù)據(jù)映射單元中的至少兩個包括相同位置,所述相同位置是數(shù)據(jù)單元的至少兩個數(shù)據(jù)單元的相同位置。
[0202] EC76)根據(jù)EC63或EC64所述的有形計算機可讀介質(zhì),其中操作進一步包括使用數(shù)據(jù)存儲單元中的至少一部分存儲與數(shù)據(jù)存儲單元相關(guān)聯(lián)的相應時間戳,以及使用數(shù)據(jù)映射單元中的至少一部分存儲與數(shù)據(jù)映射單元相關(guān)聯(lián)的相應時間戳。
[0203] EC77)根據(jù)EC63或EC64所述的有形計算機可讀介質(zhì),其中數(shù)據(jù)存儲單元的相應時間戳的足夠時間戳使用數(shù)據(jù)存儲單元進行存儲,使得數(shù)據(jù)存儲單元中的每一個與相應數(shù)據(jù)存儲單元的相應時間戳之間的關(guān)聯(lián)可通過讀取NVM來確定。
[0204] EC78)根據(jù)EC63或EC64所述的有形計算機可讀介質(zhì),其中數(shù)據(jù)存儲單元的相應時間戳的至少一部分中的每一個存儲在具有相關(guān)聯(lián)數(shù)據(jù)存儲單元的NVM中。
[0205] EC79)根據(jù)EC63或EC64所述的有形計算機可讀介質(zhì),其中數(shù)據(jù)映射單元的相應時間戳的足夠時間戳使用數(shù)據(jù)映射單元進行存儲,使得數(shù)據(jù)映射單元中的每一個與相應數(shù)據(jù)映射單元的相應時間戳之間的關(guān)聯(lián)可通過讀取NVM來確定。
[0206] EC80)根據(jù)EC63或EC64所述的有形計算機可讀介質(zhì),其中數(shù)據(jù)映射單元的相應時間戳的至少一部分中的每一個存儲在具有相關(guān)聯(lián)數(shù)據(jù)映射單元的NVM中。
[0207] EC81)根據(jù)EC63或EC64所述的有形計算機可讀介質(zhì),其中數(shù)據(jù)存儲單元中的具體數(shù)據(jù)存儲單元存儲在相應時間戳與具體數(shù)據(jù)存儲單元相關(guān)聯(lián)的NVM中,并且數(shù)據(jù)映射單元中的具體數(shù)據(jù)映射單元存儲在相應時間戳與具體數(shù)據(jù)映射單元相關(guān)聯(lián)的NVM中。
[0208] EC82)一種有形計算機可讀介質(zhì),其中存儲有當由處理元件執(zhí)行時使處理元件執(zhí)行和/或控制包括以下各項的操作的一套指令:
[0209] 根據(jù)存儲流將多個存儲單元寫入非易失性存儲器(NVM),存儲單元中的每一個包括數(shù)據(jù)部分和對應時間戳部分;
[0210] 根據(jù)映射流將多個映射單元寫入NVM,映射單元中的每一個包括條目部分和對應時間戳部分;
[0211] 其中至少一部分條目部分中的每一個可以通過指定數(shù)據(jù)部分中的至少對應數(shù)據(jù)部分來確定將相應邏輯塊(LB)寫入NVM中的哪里;
[0212] 其中時間發(fā)生順序由時間戳部分表示,存儲單元時間戳根據(jù)彼此的相對時間戳順序單調(diào)遞增,并且映射單元時間戳根據(jù)彼此的相對時間戳順序單調(diào)遞增;并且[0213] 其中當寫入NVM的映射單元中的至少一個具有時間戳部分時,存在至少一個具體時間點,所述時間戳部分根據(jù)時間發(fā)生順序晚于根據(jù)時間發(fā)生順序的在具體時間點時寫入NVM的存儲單元時間戳部分的最新時間戳部分。
[0214] EC83)根據(jù)EC82所述的有形計算機可讀介質(zhì),其中寫入存儲單元按與存儲單元時間戳部分表示的時間發(fā)生順序?qū)臅r間順序?qū)懭氪鎯卧?,并且寫入映射單元按與映射單元時間戳部分表示的時間發(fā)生順序?qū)臅r間順序?qū)懭胗成鋯卧?/div>
[0215] EC84)根據(jù)EC82所述的有形計算機可讀介質(zhì),其中操作進一步包括根據(jù)檢查點流將一個或多個檢查點單元寫入NVM,檢查點單元中的每一個包括映射部分和對應時間戳部分,并且其中檢查點時間戳部分根據(jù)彼此的相對時間戳順序單調(diào)遞增。
[0216] EC85)根據(jù)EC84所述的有形計算機可讀介質(zhì),其中檢查點單元的寫入按與檢查點時間戳部分表示的時間發(fā)生順序?qū)臅r間順序?qū)懭霗z查點單元。
[0217] EC86)根據(jù)EC84所述的有形計算機可讀介質(zhì),其中連續(xù)一組預定數(shù)量的檢查點單元至少包括條目部分符合于此的映射的整個檢查點。
[0218] EC87)根據(jù)EC86所述的有形計算機可讀介質(zhì),其中操作進一步包括至少部分基于映射部分和/或檢查點單元時間戳部分中的一個或多個的一個或多個部分來恢復映射。
[0219] EC88)根據(jù)EC87所述的有形計算機可讀介質(zhì),其中恢復進一步至少部分基于條目部分和/或映射單元時間戳部分中的一個或多個的一個或多個部分。
[0220] EC89)根據(jù)EC88所述的有形計算機可讀介質(zhì),其中恢復進一步至少部分基于數(shù)據(jù)部分和/或存儲單元時間戳部分中的一個或多個的一個或多個部分。
[0221] EC90)根據(jù)EC89所述的有形計算機可讀介質(zhì),其中數(shù)據(jù)部分中的每一個包括一個或多個數(shù)據(jù)單元以及對應的一個或多個報頭,報頭中的每一個識別數(shù)據(jù)單元中的相應對應數(shù)據(jù)單元和LB中的一個LB之間的相應映射,映射可以確定LB中的相應LB作為數(shù)據(jù)單元中的相應數(shù)據(jù)單元寫入NVM中的哪里,并且其中恢復進一步至少部分基于寫入NVM的存儲單元中包括的相應報頭中的一個或多個。
[0222] EC91)根據(jù)EC90所述的有形計算機可讀介質(zhì),其中條目部分中的具體條目部分確定相應LB的相應數(shù)據(jù)部分,相應數(shù)據(jù)部分包括報頭中的具體報頭,并且具體報頭識別數(shù)據(jù)單元中的具體數(shù)據(jù)單元和具體條目部分的相應LB之間的相應映射。
[0223] EC92)根據(jù)EC86所述的有形計算機可讀介質(zhì),其中映射是一級映射。
[0224] EC93)根據(jù)EC92所述的有形計算機可讀介質(zhì),其中操作進一步包括緩存和/或緩沖映射的至少一部分;并且其中映射部分中的至少一個的至少一部分符合緩存和/或緩沖。
[0225] EC94)根據(jù)EC86所述的有形計算機可讀介質(zhì),其中映射是包括第一級映射和第二級映射的二級映射,映射部分對應于第一級映射的部分,條目部分對應于第二級映射的條目。
[0226] EC95)根據(jù)EC94所述的有形計算機可讀介質(zhì),其中操作進一步包括緩存和/或緩沖第一級映射和/或第二級映射的至少一部分;并且其中映射部分和條目部分中的至少一個的至少一部分符合緩存和/或緩沖。
[0227] EC96)根據(jù)EC86所述的有形計算機可讀介質(zhì),其中映射部分中的每一個符合具有,根據(jù)時間發(fā)生順序,比相應映射部分的對應時間戳部分早的對應時間戳部分的所有條目部分。
[0228] EC97)根據(jù)EC84所述的有形計算機可讀介質(zhì),其中一個具體時間點是第一具體時間點,并且當寫入NVM的檢查點單元中的至少一個具有時間戳部分時,存在至少第二具體時間點,所述時間戳部分根據(jù)時間發(fā)生順序晚于根據(jù)時間發(fā)生順序的在第二具體時間點時寫入NVM的映射單元時間戳部分的最新時間戳部分。
[0229] EC98)根據(jù)EC84所述的有形計算機可讀介質(zhì),其中一個具體時間點是第一具體時間點,并且當寫入NVM的檢查點單元中的至少一個具有時間戳部分時,存在至少第二具體時間點,所述時間戳部分根據(jù)時間發(fā)生順序晚于根據(jù)時間發(fā)生順序的在第二具體時間點時寫入NVM的存儲單元時間戳部分的最新時間戳部分。
[0230] EC99)根據(jù)EC82所述的有形計算機可讀介質(zhì),其中多個存儲單元是第一多個存儲單元,存儲流是第一存儲流,并且進一步包括根據(jù)第二存儲流將第二多個存儲單元寫入NVM,第二存儲單元中的每一個包括數(shù)據(jù)部分和對應時間戳部分,并且第二存儲單元時間戳部分根據(jù)彼此的相對時間戳順序單調(diào)遞增。
[0231] EC100)根據(jù)EC99所述的有形計算機可讀介質(zhì),其中第二存儲單元的寫入按與第二存儲單元時間戳部分表示的時間發(fā)生順序?qū)臅r間順序?qū)懭氲诙鎯卧?/div>
[0232] EC101)根據(jù)EC99所述的有形計算機可讀介質(zhì),其中第二存儲單元中的至少一個按時間順序在第一存儲單元中的兩個之間寫入,并且至少一個第二存儲單元時間戳部分根據(jù)時間發(fā)生順序在兩個第一存儲單元時間戳部分之間。
[0233] EC102)根據(jù)EC99所述的有形計算機可讀介質(zhì),其中第一多個存儲單元的數(shù)據(jù)部分中的至少一個包括來自主機的與主機數(shù)據(jù)寫入命令相關(guān)的主機數(shù)據(jù),并且其中第二多個存儲單元的數(shù)據(jù)部分中的至少一個包括響應于再循環(huán)操作從NVM讀取的再循環(huán)數(shù)據(jù)。
[0234] EC103)根據(jù)EC82所述的有形計算機可讀介質(zhì),其中時間戳部分被編碼以便可以根據(jù)時間發(fā)生順序經(jīng)由比較后的時間戳部分的數(shù)值比較來比較時間戳部分。
[0235] EC104)根據(jù)EC103所述的有形計算機可讀介質(zhì),其中數(shù)值比較忽略比較后的時間戳部分的一個或多個連續(xù)最高有效位。
[0236] EC105)根據(jù)EC103所述的有形計算機可讀介質(zhì),其中如果比較后的存儲單元時間戳部分中的具體存儲單元時間戳部分在數(shù)值上與比較后的映射單元時間戳部分中的具體映射單元時間戳部分相同,則通過預先確定,當時間戳部分相同時,比較后的存儲單元時間戳部分早于比較后的映射單元時間戳部分,來確定比較。
[0237] EC106)根據(jù)EC105所述的有形計算機可讀介質(zhì),其中數(shù)值身份忽略比較后的時間戳部分的一個或多個連續(xù)最高有效位。
[0238] EC107)根據(jù)EC82所述的有形計算機可讀介質(zhì),其中條目部分中的每一個都符合具有對應時間戳部分的所有數(shù)據(jù)部分,所述時間戳部分根據(jù)時間發(fā)生順序早于相應條目部分的對應時間戳部分。
[0239] EC108)根據(jù)EC82所述的有形計算機可讀介質(zhì),其中存儲單元中的每一個以原子的方式寫入。
[0240] EC109)根據(jù)EC82所述的有形計算機可讀介質(zhì),其中映射單元中的每一個以原子的方式寫入。
[0241] EC110)根據(jù)EC23所述的有形計算機可讀介質(zhì),其中數(shù)據(jù)部分中的至少一個包括來自主機的與主機數(shù)據(jù)寫入命令相關(guān)的主機數(shù)據(jù)。
[0242] EC111)根據(jù)EC82所述的有形計算機可讀介質(zhì),其中數(shù)據(jù)部分中的至少一個包括響應于再循環(huán)操作從NVM讀取的再循環(huán)數(shù)據(jù)。
[0243] EC112)根據(jù)EC82所述的有形計算機可讀介質(zhì),其中數(shù)據(jù)部分中的每一個包括一個或多個數(shù)據(jù)單元和對應的一個或多個報頭,報頭中的每一個識別數(shù)據(jù)單元中的相應對應數(shù)據(jù)單元和LB中的一個LB之間的相應映射,映射可以確定LB中的相應LB作為數(shù)據(jù)單元中的相應數(shù)據(jù)單元寫入NVM中的哪里。
[0244] EC113)根據(jù)EC112所述的有形計算機可讀介質(zhì),其中報頭中的每一個連續(xù)寫入相應數(shù)據(jù)單元由相應報頭識別的NVM中。
[0245] EC114)根據(jù)EC61、EC68、EC102或EC110所述的有形計算機可讀介質(zhì),其中操作進一步包括根據(jù)數(shù)據(jù)寫入與主機交互。
[0246] EC115)根據(jù)EC114所述的有形計算機可讀介質(zhì),其中交互與存儲接口標準兼容。
[0247] EC116)根據(jù)EC61、EC68、EC102或EC110所述的有形計算機可讀介質(zhì),其中主機是計算主機,并且進一步包括根據(jù)數(shù)據(jù)寫入來操作計算主機。
[0248] EC117)根據(jù)EC60、EC64或EC82所述的有形計算機可讀介質(zhì),其中NVM包括一個或多個閃存。
[0249] EC118)根據(jù)EC117所述的有形計算機可讀介質(zhì),其中操作進一步包括經(jīng)由閃存接口與閃存交互。
[0250] EC119)一種裝置,包括:
[0251] 經(jīng)啟用以按第一順序?qū)⒁幌盗袛?shù)據(jù)單元排列在非易失性存儲器(NVM)中的第一硬件邏輯電路,數(shù)據(jù)單元中的每一個與多個時間戳中的相應的一個相關(guān)聯(lián);
[0252] 經(jīng)啟用以按第二順序?qū)⒁幌盗袛?shù)據(jù)映射單元排列在NVM中的第二硬件邏輯電路,數(shù)據(jù)映射單元中的每一個與時間戳中的相應的一個相關(guān)聯(lián);
[0253] 其中數(shù)據(jù)映射單元中的每一個包括數(shù)據(jù)單元中對應數(shù)據(jù)單元的NVM中的位置;并且
[0254] 其中與數(shù)據(jù)單元中的每一個相關(guān)聯(lián)的相應時間戳在與對應數(shù)據(jù)映射單元相關(guān)聯(lián)的相應時間戳處或之前。
[0255] EC120)根據(jù)EC119所述的裝置,其中第一硬件邏輯電路的至少一部分是共享硬件邏輯電路,該共享硬件邏輯電路也是第二硬件邏輯電路的至少一部分。
[0256] EC121)根據(jù)EC119所述的裝置,其中:
[0257] 數(shù)據(jù)單元中的每一個對應于從主機至相應邏輯塊地址(LBA)的相應數(shù)據(jù)寫入;
[0258] 數(shù)據(jù)單元中的前一個數(shù)據(jù)單元和后一個數(shù)據(jù)單元對應于至相應LBA中的同一個LBA的數(shù)據(jù)寫入中的數(shù)據(jù)寫入;并且
[0259] 前一個數(shù)據(jù)單元不具有數(shù)據(jù)映射單元中的相關(guān)數(shù)據(jù)映射單元。
[0260] EC122)根據(jù)EC119所述的裝置,進一步包括:
[0261] 經(jīng)啟用以在電源故障之后確定數(shù)據(jù)單元中的最新有效且連續(xù)的數(shù)據(jù)單元的第三硬件邏輯電路;
[0262] 經(jīng)啟用以在電源故障之后確定數(shù)據(jù)映射單元中的最新有效且連續(xù)的數(shù)據(jù)映射單元的第四硬件邏輯電路,其中與數(shù)據(jù)映射單元中的最新有效且連續(xù)的數(shù)據(jù)映射單元相關(guān)聯(lián)的相應時間戳在與數(shù)據(jù)單元中的最新有效且連續(xù)的數(shù)據(jù)單元相關(guān)聯(lián)的相應時間戳處或之前;
[0263] 經(jīng)啟用以僅將數(shù)據(jù)映射單元中的數(shù)據(jù)映射單元恢復至數(shù)據(jù)映射單元中的最新有效且連續(xù)的數(shù)據(jù)映射單元的第五硬件邏輯電路;并且
[0264] 其中在恢復中忽略與相應時間戳中的任意一個相關(guān)聯(lián)的數(shù)據(jù)映射單元中的任意一個,所述相應時間戳在與數(shù)據(jù)單元中的最新有效且連續(xù)的數(shù)據(jù)單元相關(guān)聯(lián)的相應時間戳之后。
[0265] EC123)根據(jù)EC119所述的裝置,其中數(shù)據(jù)單元是數(shù)據(jù)存儲單元。
[0266] EC124)一種裝置,包括:
[0267] 經(jīng)啟用以將一系列數(shù)據(jù)存儲單元寫入非易失性存儲器(NVM)的第一硬件邏輯電路,數(shù)據(jù)存儲單元中的每一個與多個時間戳中的相應的一個相關(guān)聯(lián);
[0268] 經(jīng)啟用以將一系列數(shù)據(jù)映射單元寫入NVM的第二硬件邏輯電路,數(shù)據(jù)映射單元中的每一個與時間戳中的相應的一個相關(guān)聯(lián);
[0269] 其中數(shù)據(jù)映射單元中的每一個包括數(shù)據(jù)存儲單元中對應數(shù)據(jù)存儲單元的NVM中的位置;并且
[0270] 其中與數(shù)據(jù)存儲單元中的每一個相關(guān)聯(lián)的相應時間戳表示相對年齡,所述相對年齡等于或老于與對應數(shù)據(jù)映射單元相關(guān)聯(lián)的相應時間戳表示的相對年齡。
[0271] EC125)根據(jù)EC124所述的裝置,其中第一硬件邏輯電路的至少一部分是共享硬件邏輯電路,該共享硬件邏輯電路也是第二硬件邏輯電路的至少一部分。
[0272] EC126)根據(jù)EC124所述的裝置,其中數(shù)據(jù)存儲單元的寫入符合第一順序并且數(shù)據(jù)映射單元的寫入符合第二順序。
[0273] EC127)根據(jù)EC124所述的裝置,其中數(shù)據(jù)存儲單元根據(jù)第一順序布置在NVM中并且數(shù)據(jù)映射單元根據(jù)第二順序布置在NVM中。
[0274] EC128)根據(jù)EC124所述的裝置,其中:
[0275] 數(shù)據(jù)存儲單元中的第一個對應于從主機至具體邏輯塊地址(LBA)的第一數(shù)據(jù)寫入;
[0276] 數(shù)據(jù)存儲單元中的第二個對應于從主機至具體LBA的第二數(shù)據(jù)寫入;
[0277] 第一數(shù)據(jù)寫入按時間順序在第二數(shù)據(jù)寫入前;并且
[0278] 數(shù)據(jù)映射單元中沒有一個與第一數(shù)據(jù)存儲單元對應。
[0279] EC129)根據(jù)EC126所述的裝置,進一步包括:
[0280] 經(jīng)啟用以在事件之后根據(jù)第一順序確定數(shù)據(jù)存儲單元中的最新有效且連續(xù)的一個的第三硬件邏輯電路;
[0281] 經(jīng)啟用以在事件之后根據(jù)第二順序確定與表示相對年齡的相應時間戳中的一個相關(guān)聯(lián)的數(shù)據(jù)映射單元中的最新有效且連續(xù)的數(shù)據(jù)映射單元的第四硬件邏輯電路,所述相對年齡等于或老于與數(shù)據(jù)存儲單元中的最新有效且連續(xù)的一個相關(guān)聯(lián)的相應時間戳表示的相對年齡;以及
[0282] 經(jīng)啟用以根據(jù)第一和第二順序僅將數(shù)據(jù)映射單元中的數(shù)據(jù)映射單元恢復至數(shù)據(jù)映射單元中的最新有效且連續(xù)的數(shù)據(jù)映射單元的第五硬件邏輯電路。
[0283] EC130)一種裝置,包括:
[0284] 經(jīng)啟用以根據(jù)存儲流將多個存儲單元寫入非易失性存儲器(NVM)的第一硬件邏輯電路,存儲單元中的每一個包括數(shù)據(jù)部分和對應時間戳部分;
[0285] 經(jīng)啟用以根據(jù)映射流將多個映射單元寫入NVM的第二硬件邏輯電路,映射單元中的每一個包括條目部分和對應時間戳部分;
[0286] 其中至少一部分條目部分中的每一個可以通過指定數(shù)據(jù)部分中的至少對應數(shù)據(jù)部分來確定將相應邏輯塊(LB)寫入NVM中的哪里;
[0287] 其中時間發(fā)生順序由時間戳部分表示,存儲單元時間戳根據(jù)彼此的相對時間戳順序單調(diào)遞增,并且映射單元時間戳根據(jù)彼此的相對時間戳順序單調(diào)遞增;并且[0288] 其中當寫入NVM的映射單元中的至少一個具有時間戳部分時,存在至少一個具體時間點,所述時間戳部分根據(jù)時間發(fā)生順序晚于根據(jù)時間發(fā)生順序的在具體時間點時寫入NVM的存儲單元時間戳部分的最新時間戳部分。
[0289] EC131)根據(jù)EC130所述的裝置,其中第一硬件邏輯電路的至少一部分是共享硬件邏輯電路,該共享硬件邏輯電路也是第二硬件邏輯電路的至少一部分。
[0290] EC132)根據(jù)EC130所述的裝置,其中第一硬件邏輯電路按與存儲單元時間戳部分表示的時間發(fā)生順序?qū)臅r間順序?qū)懭氪鎯卧?,并且第二硬件邏輯電路按與映射單元時間戳部分表示的時間發(fā)生順序?qū)臅r間順序?qū)懭胗成鋯卧?/div>
[0291] EC133)根據(jù)EC130所述的裝置,進一步包括經(jīng)啟用以根據(jù)檢查點流將一個或多個檢查點單元寫入NVM的第三硬件邏輯電路,檢查點單元中的每一個包括映射部分和對應時間戳部分,并且其中檢查點時間戳部分根據(jù)彼此的相對時間戳順序單調(diào)遞增。
[0292] EC134)根據(jù)EC133所述的裝置,其中第三硬件邏輯電路按與檢查點時間戳部分表示的時間發(fā)生順序?qū)臅r間順序?qū)懭霗z查點單元。
[0293] EC135)根據(jù)EC133所述的裝置,其中連續(xù)一組預定數(shù)量的檢查點單元至少包括條目部分符合于此的映射的整個檢查點。
[0294] EC136)具有或參照存儲接口標準的任意前述EC,其中存儲接口標準包括以下各項中的一項或多項:
[0295] 通用串行總線(USB)接口標準,
[0296] 緊湊式閃存(CF)接口標準,
[0297] 多媒體卡(MMC)接口標準,
[0298] 嵌入式MMC(eMMC)接口標準,
[0299] Thunderbolt接口標準,
[0300] UFS接口標準,
[0301] 安全數(shù)字(SD)接口標準,
[0302] 記憶棒接口標準,
[0303] xD圖片卡接口標準,
[0304] 集成驅(qū)動電子裝置(IDE)接口標準,
[0305] 串行高級技術(shù)附件(SATA)接口標準,
[0306] 外部SATA(eSATA)接口標準,
[0307] 小型計算機系統(tǒng)接口(SCSI)接口標準,
[0308] 串行連接小型計算機系統(tǒng)接口(SAS)接口標準,
[0309] 光纖通道接口標準,
[0310] 以太網(wǎng)接口標準,以及
[0311] 快速外圍組件互連(PCIe)接口標準。
[0312] EC137)具有或參照閃存接口的任意前述EC,其中閃存接口與以下各項中的一項或多項兼容:
[0313] 開放NAND閃存接口(ONFI),
[0314] 切換模式接口,
[0315] 雙倍數(shù)據(jù)速率(DDR)同步接口,
[0316] DDR2同步接口,
[0317] 同步接口,以及
[0318] 異步接口。
[0319] EC138)具有或參照計算主機的任意前述EC,其中計算主機包括以下各項中的一項或多項:
[0320] 計算機,
[0321] 工作站計算機,
[0322] 服務器計算機,
[0323] 存儲服務器,
[0324] 存儲附接網(wǎng)絡(luò)(SAN),
[0325] 網(wǎng)絡(luò)附接存儲(NAS)設(shè)備,
[0326] 直接附接存儲(DAS)設(shè)備,
[0327] 存儲器具,
[0328] 個人計算機(PC),
[0329] 膝上電腦,
[0330] 筆記本電腦,
[0331] 上網(wǎng)本電腦,
[0332] 平板設(shè)備或電腦,
[0333] 超極本電腦,
[0334] 電子閱讀設(shè)備(電子閱讀器),
[0335] 個人數(shù)字助理(PDA),
[0336] 導航系統(tǒng),
[0337] (手持式)全球定位系統(tǒng)(GPS)設(shè)備,
[0338] 汽車控制系統(tǒng),
[0339] 汽車媒體控制系統(tǒng)或計算機,
[0340] 打印機、復印機或傳真機或多合一設(shè)備,
[0341] 銷售點(POS)設(shè)備,
[0342] 現(xiàn)金出納機,
[0343] 媒體播放器,
[0344] 電視機,
[0345] 媒體記錄器,
[0346] 數(shù)字視頻錄像機(DVR),
[0347] 數(shù)碼相機,
[0348] 蜂窩手機,無繩電話手機,以及
[0349] 電子游戲機。
[0350] EC139)具有或參照至少一個閃存設(shè)備的任意前述EC,其中至少一個閃存設(shè)備的至少一部分包括以下各項中的一項或多項:
[0351] NAND閃存技術(shù)存儲單元,以及
[0352] NOR閃存技術(shù)存儲單元。
[0353] EC140)具有或參照至少一個閃存設(shè)備的任意前述EC,其中至少一個閃存設(shè)備的至少一部分包括以下各項中的一項或多項:
[0354] 單層單元(SLC)閃存技術(shù)存儲單元,以及
[0355] 多層單元(MLC)閃存技術(shù)存儲單元。
[0356] EC141)具有或參照至少一個閃存設(shè)備的任意前述EC,其中至少一個閃存設(shè)備的至少一部分包括以下各項中的一項或多項:
[0357] 基于多晶硅技術(shù)的電荷存儲單元,以及
[0358] 基于氮化硅技術(shù)的電荷存儲單元。
[0359] EC142)具有或參照至少一個閃存設(shè)備的任意前述EC,其中至少一個閃存設(shè)備的至少一部分包括以下各項中的一項或多項:
[0360] 基于二維技術(shù)的閃存技術(shù),以及
[0361] 基于三維技術(shù)的閃存技術(shù)。
[0362] 系統(tǒng)
[0363] 在某些實施方式中,諸如SSD的I/O設(shè)備包括SSD控制器。SSD控制器充當SSD的主機接口和NVM之間的橋接器,并執(zhí)行經(jīng)由SSD的主機接口從計算主機發(fā)送的主機協(xié)議的命令。至少一部分命令指示SSD寫入并讀取具有分別從計算主機和向計算主機發(fā)送的數(shù)據(jù)的NVM。在進一步的實施方式中,SSD控制器經(jīng)啟用以使用映射來在主機協(xié)議的LBA和NVM中的物理存儲地址之間轉(zhuǎn)換。在進一步的實施方式中,映射的至少一部分用于I/O設(shè)備的私有存儲(對計算主機不可見)。例如,計算主機不可訪問的LBA的一部分被I/O設(shè)備用來管理對日志、統(tǒng)計或其他私有數(shù)據(jù)的訪問。
[0364] 在某些實施方式中,訪問NVM中不同大小配量的壓縮數(shù)據(jù)在某些使用場景下具有提高的存儲效率。例如,SSD控制器從計算主機接收(未壓縮)數(shù)據(jù)(例如,與磁盤寫入命令相關(guān)),壓縮該數(shù)據(jù),并將壓縮后的數(shù)據(jù)存儲到閃存中。響應于來自計算主機的后續(xù)請求(例如,與磁盤讀取命令相關(guān)),SSD控制器從閃存中讀取壓縮數(shù)據(jù),對壓縮數(shù)據(jù)進行解壓,并向計算主機提供未壓縮數(shù)據(jù)。根據(jù)不同大小量子將壓縮數(shù)據(jù)存儲在閃存中,量子大小由于壓縮算法、操作模式和各種數(shù)據(jù)的壓縮效率等而變化。SSD控制器通過查閱所包括的映射表對數(shù)據(jù)進行部分解壓以確定報頭存儲在閃存中的位置。SSD控制器解析從閃存獲得的報頭以確定適當?shù)模▔嚎s)數(shù)據(jù)存儲在閃存中的位置。SSD控制器對來自閃存的適當?shù)臄?shù)據(jù)進行解壓以產(chǎn)生未壓縮數(shù)據(jù)并將其提供給計算主機。在即時應用中,解壓(及其變型)與減壓(及其變型)同義。
[0365] 在各種實施方式中,SSD控制器包括與計算主機交互的主機接口、與NVM諸如閃存交互的接口以及用于控制接口并進行(和/或控制進行的各方面)壓縮和解壓,以及較低級冗余和/或糾錯、較高級冗余和/或糾錯及使用獨立硅元件的動態(tài)較高級冗余模式管理的電路。
[0366] 根據(jù)各種實施方式,某些主機接口與USB接口標準、CF接口標準、MMC接口標準、eMMC接口標準、Thunderbolt接口標準、UFS接口標準、SD接口標準、記憶棒接口標準、xD圖片卡接口標準、IDE接口標準、SATA接口標準、SCSI接口標準、SAS接口標準和PCIe接口標準中的一個或多個兼容。根據(jù)各種實施方式,計算主機是計算機、工作站計算機、服務器計算機、存儲服務器、SAN、NAS設(shè)備、DAS設(shè)備、存儲器具、PC、膝上電腦、筆記本電腦、上網(wǎng)本電腦、平板設(shè)備或電腦、超極本電腦、電子閱讀設(shè)備(諸如電子閱讀器)、PDA、導航系統(tǒng)、(手持式)GPS設(shè)備、汽車控制系統(tǒng)、汽車媒體控制系統(tǒng)或計算機、打印機、復印機或傳真機或多合一設(shè)備、POS設(shè)備、現(xiàn)金出納機、媒體播放器、電視機、媒體記錄器、DVR、數(shù)碼相機、蜂窩手機、無繩電話手機和電子游戲機中的所有或任意部分。在某些實施方式中,接口主機(諸如SAS/SATA橋接器)作為計算主機和/或作為計算主機的橋接器進行操作。
[0367] 在各種實施方式中,SSD控制器包括一個或多個處理器??刂破鲌?zhí)行固件以控制和/或進行SSD控制器的操作。SSD控制器與計算主機通信以發(fā)送并接收命令和/或狀態(tài)以及數(shù)據(jù)。計算主機執(zhí)行操作系統(tǒng)、驅(qū)動和應用程序中的一個或多個。計算主機與SSD控制器的通信任選地和/或可選地是經(jīng)由驅(qū)動和/或經(jīng)由應用程序進行的。在第一示例中,與SSD控制器的所有通信是經(jīng)由驅(qū)動進行的,并且應用程序向驅(qū)動提供驅(qū)動轉(zhuǎn)換為SSD控制器的具體命令的較高級命令。在第二示例中,驅(qū)動實現(xiàn)旁通模式并且使應用程序能夠經(jīng)由驅(qū)動向SSD控制器發(fā)送具體命令。在第三示例中,PCIe SSD控制器支持一個或多個虛擬函數(shù)(VF),從而啟用應用程序,一旦配置,就繞過驅(qū)動而與SSD控制器直接通信。
[0368] 根據(jù)各種實施方式,某些SSD與由磁性和/或光學非易失性存儲器(諸如,HDD、CD驅(qū)動器及DVD驅(qū)動器)所使用的形狀因數(shù)、電接口和/或協(xié)議兼容。在各種實施方式中,SSD使用零或零以上奇偶碼、零或零以上RS碼、零或零以上BCH碼、零或零以上維特比或其他格子碼及零或零以上LDPC碼。
[0369] 圖1A示出了包括使用自身日志記錄和層級一致性來管理非易失性存儲,諸如閃存的SSD控制器的SSD101的實施方式的所選細節(jié)。SSD控制器用于管理諸如經(jīng)由NVM元件(例如,閃存)實現(xiàn)的非易失性存儲。SSD控制器100經(jīng)由一個或多個外部接口110與主機(未示出)通信耦合。根據(jù)各種實施方式,外部接口110是以下各項中的一項或多項:SATA接口;SAS接口;PCIe接口;光纖通道接口;外部接口(諸如10千兆以太網(wǎng));任意前述接口的非標準版本;定制接口;或用于將存儲和/或通信和/或計算設(shè)備互連的任何其他類型的接口。例如,在某些實施方式中,SSD控制器100包括SATA接口和PCIe接口。
[0370] SSD控制器100進一步經(jīng)由一個或多個設(shè)備接口190與包括一個或多個存儲設(shè)備(諸如,閃存設(shè)備192的一個或多個示例)的NVM199通信耦合。根據(jù)各種實施方式,設(shè)備接口190是以下各項中的一項或多項:異步接口;同步接口;單倍數(shù)據(jù)速率(SDR)接口;雙倍數(shù)據(jù)速率(DDR)接口;DRAM兼容DDR或DDR2同步接口;ONFI兼容接口(諸如,ONFI2.2or ONFI3.0兼容接口);切換模式兼容閃存接口;任意前述接口的非標準版本;定制接口;或用于連接至存儲設(shè)備的任何其他類型的接口。
[0371] 在某些實施方式中,每一個閃存設(shè)備192具有一個或多個個別閃存芯片194。根據(jù)閃存設(shè)備192的具體閃存設(shè)備的類型,具體閃存設(shè)備192中的多個閃存芯片194任選地和/或可選地并行訪問。閃存設(shè)備192只表示經(jīng)啟用以與SSD控制器100通信耦合的一種類型的存儲設(shè)備。在各種實施方式中,任何類型的存儲設(shè)備都是可使用的,諸如SLC NAND閃存、MLC NAND閃存、NOR閃存、使用基于多晶硅或氮化硅技術(shù)的電荷存儲單元的閃存、基于二維或三維技術(shù)的閃存、只讀存儲器、靜態(tài)隨機存取存儲器、動態(tài)隨機存取存儲器、磁性存儲器、相變存儲器、賽道存儲器、ReRAM或任何其他類型的存儲器設(shè)備或存儲介質(zhì)。
[0372] 根據(jù)各種實施方式,設(shè)備接口190被組織為:一條或多條總線,其中每條總線具有閃存設(shè)備192的一個或多個示例;一個或多個總線組,其中每條總線具有閃存設(shè)備192的一個或多個示例,其中組中的總線通常被并行訪問;或至設(shè)備接口190的閃存設(shè)備192的一個或多個示例的任何其他組織。
[0373] 繼續(xù)圖1A,SSD控制器100具有一個或多個模塊,諸如主機接口111、數(shù)據(jù)處理121、緩沖器131、映射141、再循環(huán)器151、ECC161、設(shè)備接口邏輯191以及CPU171。圖1A中所示的具體模塊和互連僅僅表示一個實施方式,可以想到一些或所有模塊以及未示出的其他模塊的多種布置和互連。在第一示例中,在某些實施方式中,存在兩個或兩個以上主機接口111來提供雙通道。在第二示例中,在某些實施方式中,數(shù)據(jù)處理121和/或ECC161與緩沖器131組合。在第三示例中,在某些實施方式中,主機接口111直接與緩沖器131耦合,并且數(shù)據(jù)處理121任選地和/或可選地對于存儲在緩沖器131中的數(shù)據(jù)進行操作。在第四示例中,在某些實施方式中,設(shè)備接口邏輯191直接與緩沖器131耦合,并且ECC161任選地和/或可選地對于存儲在緩沖器131中的數(shù)據(jù)進行操作。
[0374] 主機接口111經(jīng)由外部接口110發(fā)送和接收命令和/或數(shù)據(jù),并且,在某些實施方式中,經(jīng)由標簽跟蹤113來跟蹤單獨命令的進程。例如,命令包括指定要讀取的數(shù)據(jù)的地址(諸如LBA)和量(諸如LBA配量,例如扇區(qū)的數(shù)量)的讀取命令;作為響應,SSD提供讀取狀態(tài)和/或讀取數(shù)據(jù)。再如,命令包括指定要寫入的數(shù)據(jù)的地址(諸如LBA)和量(諸如LBA配量,例如扇區(qū)的數(shù)量)的寫入命令;作為響應,SSD提供寫入狀態(tài)和/或請求寫入數(shù)據(jù)且隨后任選提供寫入狀態(tài)。對于又一示例,命令包括指定不再需要分配的一個或多個地址(諸如一個或多個LBA)的解分配命令(例如,修整命令);作為響應,SSD相應地修改映射且任選提供解分配狀態(tài)。在某些上下文中,ATA兼容TRIM命令是示例性解分配命令。對于又一示例,命令包括超級電容器測試命令或數(shù)據(jù)強化成功查詢;作為響應,SSD提供適當狀態(tài)。在某些實施方式中,主機接口111與SATA協(xié)議兼容,并且,使用NCQ命令而啟用以具有最多32條待處理命令,每條命令有表示為數(shù)字0至31的唯一標簽。在某些實施方式中,標簽跟蹤113經(jīng)啟用以使經(jīng)由外部接口110接收的命令的外部標簽與用于在SSD控制器100處理過程中跟蹤命令的內(nèi)部標簽相關(guān)聯(lián)。
[0375] 根據(jù)各種實施方式,揭示以下各項中的一個或多個:數(shù)據(jù)處理121任選地和/或可選地處理在緩沖器131與外部接口110之間發(fā)送的一些或所有數(shù)據(jù);以及數(shù)據(jù)處理121任選地和/或可選地處理存儲在緩沖器131中的數(shù)據(jù)。在某些實施方式中,數(shù)據(jù)處理121使用一個或多個引擎123來執(zhí)行以下各項中的一項或多項:格式化;重新格式化;轉(zhuǎn)碼;以及任何其他的數(shù)據(jù)處理和/或操控任務。
[0376] 緩沖器131存儲自設(shè)備接口190發(fā)送至外部接口110/自外部接口110發(fā)送至設(shè)備接口190的數(shù)據(jù),在某些實施方式中,緩沖器131另外存儲由SSD控制器100使用的系統(tǒng)數(shù)據(jù)(諸如某些或全部映射表)以管理閃存設(shè)備192的一個或多個情況。在各種實施方式中,緩沖器131具有以下各項中的一個或多個:用于臨時存儲數(shù)據(jù)的存儲器197;用于控制去往和/或來自緩沖器131的數(shù)據(jù)的移動的DMA133;用于提供較高級錯誤校正和/或冗余功能的ECC-X135;和其他數(shù)據(jù)移動和/或操控功能。較高級冗余功能的示例是類似于RAID的能力(例如,RASIE),其中冗余在閃存設(shè)備(例如閃存設(shè)備192的多個閃存設(shè)備)級和/或閃存芯片(諸如閃存芯片194)級上而非在磁盤級上。
[0377] 根據(jù)各種實施方式,揭示以下各項中的一個或多個:ECC161任選地和/或可選地處理在緩沖器131和設(shè)備接口190之間發(fā)送的一些或所有數(shù)據(jù);以及ECC161任選地和/或可選地處理存儲在緩沖器131內(nèi)的數(shù)據(jù)。在某些實施方式中,ECC161用于提供較低級錯誤校正和/或諸如根據(jù)一個或多個ECC計算的冗余功能。在某些實施方式中,ECC161實現(xiàn)以下各項中的一個或多個:CRC碼;漢明碼;RS碼;BCH碼;LDPC碼;維特比(Viterbi)碼;格子碼;硬判決碼;軟判決碼;基于擦除的碼;任何錯誤檢測和/或糾正碼;以及上述的任意組合。在某些實施方式中,ECC161包括一個或多個解碼器(諸如LDPC解碼器)。
[0378] 設(shè)備接口邏輯191經(jīng)由設(shè)備接口190控制閃存設(shè)備192的實例(instance)。設(shè)備接口邏輯191經(jīng)啟用以根據(jù)閃存設(shè)備192的協(xié)議將數(shù)據(jù)發(fā)送到或從閃存設(shè)備192發(fā)送數(shù)據(jù)。設(shè)備接口邏輯191包括調(diào)度193,從而經(jīng)由設(shè)備接口190可選地順序控制閃存設(shè)備192的實例。例如,在某些實施方式中,調(diào)度193經(jīng)啟用從而將對于閃存設(shè)備192的實例的操作排隊,并且當單獨的閃存設(shè)備192(或閃存芯片194)的實例可用時,選擇性地地將操作發(fā)送至單獨的閃存設(shè)備192(或閃存芯片194)的實例。
[0379] 映射141在用于外部接口110上的數(shù)據(jù)尋址與用于設(shè)備接口190上的數(shù)據(jù)尋址之間轉(zhuǎn)換,使用表143將外部數(shù)據(jù)地址映射至NVM199中的位置。例如,在某些實施方式中,映射141經(jīng)由由表143提供的映射將用于外部接口110上的LBA轉(zhuǎn)換成針對一個或多個閃存芯片192的塊和/或頁地址。對于自驅(qū)動制造或解分配起就未曾被寫入的LBA,該映射指向缺省值以傳回LBA是否被讀取。例如,在處理解分配命令時,修改該映射以使得對應于解分配的LBA的條目指向缺省值中的一個。在各種實施方式中,存在各種缺省值,其各自具有對應指針。多個缺省值使得能夠?qū)⒛承┙夥峙涞腖BA(諸如在第一范圍中)讀取為一個缺省值,同時其他解分配的LBA(諸如在第二范圍中)讀取為另一個缺省值。在各種實施方式中,缺省值由閃存、硬件、固件、命令和/或基元引數(shù)(primitive argument)和/或參數(shù)、可編程寄存器或其各種組合定義。
[0380] 在某些實施方式中,映射141使用表143從而在外部接口110上使用的地址和設(shè)備接口190上使用的數(shù)據(jù)尋址之間執(zhí)行和/或查詢轉(zhuǎn)換。根據(jù)各種實施方式,表143為以下各項中的一個或多個:一級映射;二級映射;多級映射;映射緩存;壓縮映射;一個地址空間至另一個地址空間的任何類型映射;以及上述的任意組合。根據(jù)各種實施方式,表143包括以下各項中的一個或多個:靜態(tài)隨機存取存儲器;動態(tài)隨機存取存儲器;非易失性存儲器;NVM(諸如閃存);緩存存儲器;片上存儲器;片外存儲器;和上述的任意組合。
[0381] 在某些實施方式中,再循環(huán)器151執(zhí)行垃圾收集。例如,在某些實施方式中,閃存設(shè)備192的實例包含在可重寫入之前必須擦除的塊。再循環(huán)器151經(jīng)啟用以例如通過掃描映射141保持的映射來確定閃存設(shè)備192的實例的哪些部分正在活躍地使用(例如,經(jīng)分配而非經(jīng)解分配),然后使閃存設(shè)備192的實例的未使用(例如,解分配)部分通過擦除未使用部分而可用于寫入。在進一步的實施方式中,再循環(huán)器151經(jīng)啟用以移動存儲在閃存設(shè)備192的實例內(nèi)的數(shù)據(jù),以使閃存設(shè)備192的實例的更大的連續(xù)部分可用于寫入。
[0382] 在某些實施方式中,閃存設(shè)備192的實例可選地和/或動態(tài)地經(jīng)配置、管理和/或使用以具有用于存儲不同類型和/或性質(zhì)的數(shù)據(jù)的一個或多個記錄帶。記錄帶的數(shù)目、布置、大小和類型可動態(tài)地改變。例如,將來自計算主機的數(shù)據(jù)寫入熱(活躍)記錄帶,而將來自再循環(huán)器151的數(shù)據(jù)寫入冷(較少活躍)記錄帶中。在某些使用場景下,如果計算主機寫入長的順序流,則熱記錄帶的大小增加,而如果計算主機隨機寫入或幾乎不寫入,則冷記錄帶的大小增加。
[0383] CPU171控制SSD控制器100的相應部分。CPU171包括CPU內(nèi)核172。根據(jù)各種實施方式,CPU內(nèi)核172為一個或多個單核或多核處理器。在某些實施方式中,CPU內(nèi)核172中的相應處理器內(nèi)核是多線程的。CPU內(nèi)核172包括指令和/或數(shù)據(jù)緩存器和/或存儲器。例如,指令存儲器包括能使CPU內(nèi)核執(zhí)行軟件(有時稱為固件)以控制SSD控制器100的指令。在某些實施方式中,CPU內(nèi)核172執(zhí)行的一些或所有固件存儲在閃存設(shè)備192的實例上(例如,如圖1B中的NVM199的固件106示出的)。
[0384] 在各種實施方式中,CPU171進一步包括:在經(jīng)由外部接口110接收的命令處于進程的同時來跟蹤和控制該命令的命令管理173;控制緩沖器131的分配和使用的緩沖器管理175;控制映射141的轉(zhuǎn)換管理177;控制數(shù)據(jù)尋址的一致性并避免諸如外部數(shù)據(jù)訪問和再循環(huán)數(shù)據(jù)訪問之間沖突的一致性管理179;控制設(shè)備接口邏輯191的設(shè)備管理181;控制身份信息的修改和通信的身份管理182;以及任選其他管理單元。根據(jù)各種實施方式,CPU171執(zhí)行的任何或所有管理功能是由硬件、軟件(諸如在CPU內(nèi)核172或經(jīng)由外部接口110連接的主機上執(zhí)行的固件)或其任何組合進行控制和/或管理的。
[0385] 在某些實施方式中,CPU171經(jīng)啟用以執(zhí)行其他管理任務,例如,以下各項中的一個或多個:收集和/或報告性能統(tǒng)計;實現(xiàn)SMART;控制電力排序、控制和/或監(jiān)測和/或調(diào)整電力消耗;對電力故障做出響應;控制和/或監(jiān)測和/或調(diào)整時鐘速率;以及其他管理任務。
[0386] 各種實施方式包括與SSD控制器100類似并且與各種計算主機的操作兼容的計算主機閃存控制器,諸如,經(jīng)由主機接口111和/或外部接口110適配。各種計算主機包括以下各項中的一個或其任何組合:計算機、工作站計算機、服務器計算機、存儲服務器、SAN、NAS設(shè)備、DAS設(shè)備、存儲器具、PC、膝上電腦、筆記本電腦、上網(wǎng)本電腦、平板設(shè)備或電腦、超極本電腦、電子閱讀設(shè)備(諸如電子閱讀器)、PDA、導航系統(tǒng)、(手持式)GPS設(shè)備、汽車控制系統(tǒng)、汽車媒體控制系統(tǒng)或計算機、打印機、復印機或傳真機或多合一設(shè)備、POS設(shè)備、現(xiàn)金出納機、媒體播放器、電視機、媒體記錄器、DVR、數(shù)碼相機、蜂窩手機、無繩電話手機和電子游戲機。
[0387] 在各種實施方式中,SSD控制器(或計算主機閃存控制器)的所有或任意部分在單個IC、多芯片IC的單芯片、多芯片IC的多個芯片或多個IC上實現(xiàn)。例如,緩沖器131在與SSD控制器100的其他元件相同的芯片上實現(xiàn)。再如,緩沖器131在與SSD控制器100的其他元件不同的芯片上實現(xiàn)。
[0388] 圖1B示出了包括圖1A的SSD的一個或多個示例的系統(tǒng)的各種實施方式的所選細節(jié)。SSD101包括經(jīng)由設(shè)備接口190與NVM199耦合的SSD控制器100。該圖示出了各類實施方式:直接與主機耦合的單個SSD,各自經(jīng)由相應外部接口分別直接與主機耦合的多個SSD,以及經(jīng)由相應互連元件間接與主機耦合的一個或多個SSD。
[0389] 作為直接與主機耦合的單個SSD的示例性實施方式,SSD101的一個示例經(jīng)由外部接口110直接與主機102耦合(例如,省略、繞過或穿過切換器/光纖/中間控制器103)。作為各自經(jīng)由相應外部接口直接與主機耦合的多個SSD的示例性實施方式,SSD101的多個示例中的每一個經(jīng)由由外部接口110直接與主機102耦合(例如,省略、繞過或穿過切換器/光纖/中間控制器103)。作為經(jīng)由相應互連元件間接與主機耦合的一個或多個SSD的示例性實施方式,SSD101的一個或多個示例中的每一個分別間接與主機102耦合。每個間接耦合經(jīng)由與切換器/光纖/中間控制器103耦合的外部接口110以及與主機102耦合的中間接口104的相應示例。
[0390] 包括切換器/光纖/中間控制器103的實施方式的某些實施方式還包括經(jīng)由存儲器接口180耦合且SSD可訪問的卡存儲器112C。在各種實施方式中,SSD、切換器/光纖/中間控制器103和/或卡存儲器中的一個或多個包括在物理可識別的模塊、卡或可插入元件(例如,I/O卡116)上。在某些實施方式中,SSD101(或其變型)對應于與作為主機102操作的起始器耦合的SAS驅(qū)動器或SATA驅(qū)動器。
[0391] 主機102經(jīng)啟用以執(zhí)行主機軟件115的相應元件,諸如OS105、驅(qū)動107、應用程序109和多設(shè)備管理軟件114的各種組合。虛線箭頭107D表示主機軟件←→I/O設(shè)備通信,例如,經(jīng)由驅(qū)動107及應用程序109(經(jīng)由驅(qū)動107或直接作為VF)自SSD101的示例中的一個或多個發(fā)送至OS105中的一個或多個及自O(shè)S105的一個或多個接收至SSD101的示例中的一個或多個的數(shù)據(jù)。
[0392] OS105包括和/或經(jīng)啟用以借助與SSD交互的驅(qū)動(概念上由驅(qū)動107示出)操作。Windows的各種版本(例如,95、98、ME、NT、XP、2000、Server、Vista及7)、Linux的各種版本(例如,Red Hat、Debian及Ubuntu)及MacOS的各種版本(例如,8、9及X)是OS105的示例。在各種實施方式中,驅(qū)動是借助標準接口和/或協(xié)議諸如SATA、AHCI或NVM Express)操作的標準和/或通用驅(qū)動(有時稱為“緊縮套裝”或“預安裝”),或者任選定制和/或供應商具體以啟用SSD101所具體的命令的使用。某些驅(qū)動器和/或驅(qū)動具有穿過模式以啟用應用級程序,諸如經(jīng)由最佳化NAND訪問(有時稱為ONA)或直接NAND訪問(有時稱為DNA)技術(shù)的應用程序,以將命令直接通信至SSD101,使得定制應用程序能夠甚至借助通用驅(qū)動使用SSD101所具體的命令。ONA技術(shù)包括以下各項中的一個或多個:非標準修飾符(提示)的使用;供應商具體命令的使用;非標準統(tǒng)計諸如根據(jù)可壓縮性的實際NVM使用的通信;以及其他技術(shù)。DNA技術(shù)包括以下各項中的一個或多個:提供對NVM的未經(jīng)映射讀取、寫入和/或擦除存儲的非標準命令或供應商具體命令的使用,諸如通過繞過I/O設(shè)備原本將進行的數(shù)據(jù)的格式化來提供對NVM的更直接訪問的非標準或供應商具體命令的使用;以及其他技術(shù)。驅(qū)動的示例是不具有ONA或DNA支持的驅(qū)動、ONA啟用的驅(qū)動、DNA啟用的驅(qū)動及ONA/DNA啟用的驅(qū)動。驅(qū)動的進一步示例是供應商提供、供應商開發(fā)和/或供應商增強驅(qū)動及客戶端提供、客戶端開發(fā)和/或客戶端增強驅(qū)動。
[0393] 應用級程序的示例是不具有ONA或DNA支持的應用程序、ONA啟用的應用程序、DNA啟用的應用程序及ONA/DNA啟用的應用程序。虛線箭頭109D表示應用程序I/O設(shè)備通信(例如,經(jīng)由驅(qū)動繞過或經(jīng)由用于應用程序的VF繞過),例如,ONA啟用的應用程序及與SSD通信(諸如不具有使用OS作為媒介物的應用程序)的ONA啟用的驅(qū)動。虛線箭頭109V表示應用程序←→I/O設(shè)備通信(例如,經(jīng)由用于應用程序的VF繞過),例如DNA啟用的應用程序和與SSD通信(諸如不具有使用OS或驅(qū)動作為媒介物的應用程序)的DNA啟用的驅(qū)動。
[0394] 在某些實施方式中,NVM199的一個或多個部分用于固件存儲,例如固件106。固件存儲包括一個或多個固件圖像(或其部分)。例如,固件圖像具有(例如)通過SSD控制器100的CPU內(nèi)核172執(zhí)行的固件的一個或多個圖像。再如,固件圖像具有(例如)在固件執(zhí)行期間有CPU內(nèi)核參考的常數(shù)、參數(shù)值及NVM設(shè)備信息的一個或多個圖像。固件的圖像對應于(例如)當前固件圖像及零或零以上先前(相對于固件更新)固件圖像。在各種實施方式中,固件提供通用、標準、ONA和/或DNA操作模式。在某些實施方式中,經(jīng)由任選由驅(qū)動通信和/或提供的密鑰或各種軟件技術(shù)來啟用固件操作模式中的一個或多個(例如,一個或多個API“未經(jīng)定”)。
[0395] 在缺少切換器/光纖/中間控制器的某些實施方式中,SSD經(jīng)由外部接口110直接與主機耦合。在各種實施方式中,SSD控制器100經(jīng)由其他控制器,諸如RAID控制器的一個或多個中間階層與主機耦合。在某些實施方式中,SSD101(或其變型)對應于SAS驅(qū)動器或SATA驅(qū)動器,且切換器/光纖/中間控制器103對應于擴展器,該擴展器又與起始器耦合,或可替代地,切換器/光纖/中間控制器103對應于橋接器,該橋接器經(jīng)由擴展器間接與起始器耦合。在某些實施方式中,切換器/光纖/中間控制器103包括一個或多個PCIe切換器和/或光纖。
[0396] 在各種實施方式中,諸如在其中主機102作為計算主機(例如,計算機、工作站計算機、服務器計算器、存儲服務器、SAN、NAS設(shè)備、DAS設(shè)備、存儲器具、PC、膝上電腦、筆記本電腦和/或上網(wǎng)本電腦)的某些實施方式中,計算主機任選經(jīng)啟用以與一個或多個本地和/或遠程服務器(例如,任選服務器118)通信(例如,經(jīng)由任選I/O&存儲設(shè)備/資源117以及任選LAN/WAN119)。例如,通信啟用SSD101元件的任意一個或多個的本地和/或遠程訪問、管理和/或使用。在某些實施方式中,通信完全地或部分地經(jīng)由以太網(wǎng)。在某些實施方式中,通信完全地或部分地經(jīng)由光纖通道。在某些實施方式中,LAN/WAN119表示一個或多個局域和/或廣域網(wǎng),諸如服務器場中的網(wǎng)絡(luò)、耦合服務器場的網(wǎng)絡(luò)、城域網(wǎng)和互聯(lián)網(wǎng)中的任意一個或多個。
[0397] 在各種實施方式中,SSD控制器和/或計算主機閃存控制器結(jié)合一個或多個NVM一起實現(xiàn)為非易失性存儲組件,諸如USB存儲組件、CF存儲組件、MMC存儲組件、eMMC存儲組件、Thunderbolt存儲組件、UFS存儲組件、SD存儲組件、記憶棒存儲組件和xD圖片卡存儲組件。
[0398] 在各種實施方式中,SSD控制器(或計算主機閃存控制器)的所有或任何部分或其功能在主機(例如,圖1B的主機102)中實現(xiàn),控制器要與該主機耦合。在各種實施方式中,SSD控制器(或計算主機閃存控制器)的所有或任何部分或其功能經(jīng)由硬件(例如,邏輯電路)、軟件和/或固件(例如,驅(qū)動軟件和/或SSD控制固件)或其任意組合來實現(xiàn)。例如,ECC單元(諸如,類似于圖1A的ECC161和/或ECC-X135)的功能或與該ECC單元相關(guān)聯(lián)的功能經(jīng)由軟件在主機上實現(xiàn)且部分經(jīng)由固件和硬件的組合在SSD控制器中實現(xiàn)。再如,再循環(huán)器單元(諸如類似于圖1A的再循環(huán)器151)的功能或與該再循環(huán)器單元相關(guān)聯(lián)的功能部分地經(jīng)由軟件在主機上實現(xiàn)且部分地經(jīng)由硬件在計算主機閃存控制器中實現(xiàn)。
[0399] 映射操作
[0400] 圖2示出了映射LBA的LPN部分的實施方式的所選細節(jié)。在某些實施方式中,讀取單元是可獨立讀取的最細粒度的NVM,諸如NVM的頁面的一部分。在進一步的實施方式中,讀取單元對應于(較低級)錯誤校正碼的校驗位(有時稱為冗余)和由校驗位保護的所有數(shù)據(jù)。例如,圖1A的ECC161經(jīng)由校驗碼諸如經(jīng)由LDPC碼來實現(xiàn)錯誤校正,并且讀取單元除由LDPC編碼位保護的數(shù)據(jù)位之外還對應于實現(xiàn)LDPC碼的編碼位。
[0401] 在某些實施方式中,映射141諸如經(jīng)由表143(如圖1A所示)將LBA211的LPN213部分映射成LPN的映射信息221。LPN的映射信息(諸如LPN的映射信息221)有時被稱為映射條目。據(jù)說映射141使LPN與對應映射條目相關(guān)聯(lián)。在各種實施方式中,映射經(jīng)由一個或多個相關(guān)查找,經(jīng)由一個或多個非相關(guān)查找,和/或經(jīng)由一個或多個其他技術(shù)。
[0402] 在某些實施方式中,SSD控制器100為潛在和/或活動主動使用中的每個LPN維持一個映射條目。
[0403] 在某些實施方式中,LPN的映射信息221包括相應讀取單元地址223和讀取單元的長度225。在某些實施方式中,存儲長度和/或跨度,諸如通過將長度存儲為相對于跨度的補償來在讀取單元的長度225的所有或任意部分中進行編碼。在進一步的實施方式中,第一LPN與第一映射條目相關(guān)聯(lián),第二LPN(不用于第一LPN,但引用大小與由第一LPN引用的邏輯頁面的大小相同的邏輯頁面)與第二映射條目相關(guān)聯(lián),并且第一映射條目的讀取單元中的相應長度不同于第二映射條目的讀取單元中的相應長度。
[0404] 在各種實施方式中,在同一時間點,第一LPN與第一映射條目相關(guān)聯(lián),第二LPN(不同于第一LPN)與第二映射條目相關(guān)聯(lián),并且第一映射條目的相應讀取單元地址與第二映射條目的相應讀取單元地址相同。在進一步的實施方式中,與第一LPN相關(guān)聯(lián)的數(shù)據(jù)和與第二LPN相關(guān)聯(lián)的數(shù)據(jù)都存儲在NVM199中的同一設(shè)備的同一物理頁面中。
[0405] 根據(jù)各種實施方式,讀取單元地址223與以下各項中的一個或多個相關(guān)聯(lián):NVM中的開始地址;NVM中的結(jié)束地址;任意前述的補償;以及用于識別與LPN213相關(guān)聯(lián)的NVM的一部分的任何其他技術(shù)。
[0406] 圖3示出了在讀取單元地址訪問NVM以產(chǎn)生被組織為相應讀取單元的讀取數(shù)據(jù),集體具有在讀取單元配量中測得的長度的實施方式的所選細節(jié)。根據(jù)各種實施方式,第一讀取單元313是以下各項中的一個或多個:在NVM的地址空間中具有最低地址的讀取數(shù)據(jù)311中的讀取單元之一;讀取單元的固定讀取單元;讀取單元的任意讀取單元;讀取單元的可變讀取單元;以及通過任何其他技術(shù)選擇的讀取單元之一。在各種實施方式中,通過讀取不超過由單位單元的長度225指定的數(shù)量的讀取單元來啟用SSD控制器100以訪問NVM199并產(chǎn)生讀取數(shù)據(jù)311。
[0407] 圖4A示出了讀取單元(諸如圖3的讀取單元313或315)作為讀取單元401A的一個實施方式的所選細節(jié)。在各種實施方式和/或使用場景下,報頭1441A至報頭N419A是連續(xù)的,并且由每個報頭識別的相應數(shù)據(jù)區(qū)域(諸如經(jīng)由相應補償)繼最后一個報頭之后是連續(xù)的。數(shù)據(jù)區(qū)域集體形成數(shù)據(jù)字節(jié)421A。按位置順序存儲數(shù)據(jù)區(qū)域,并且該位置順序匹配存儲報頭的位置順序。例如,鑒于第一報頭,在讀取單元開始時,第二報頭和第三報頭連續(xù)緊接著第一報頭。第一數(shù)據(jù)區(qū)域(通過第一報頭中的第一補償識別的)連續(xù)緊接著第三報頭。第二數(shù)據(jù)區(qū)域(通過第二報頭中的第二補償識別的)連續(xù)緊接著第一報頭。類似地,第三數(shù)據(jù)區(qū)域(通過第三報頭識別的)連續(xù)緊接著第二數(shù)據(jù)區(qū)域。
[0408] 圖4B示出了讀取單元(諸如圖3的讀取單元313或315)作為讀取單元401B的另一實施方式的所選細節(jié)。在各種實施方式和/或使用場景下,報頭標記(HM)410B是表示以下連續(xù)的報頭(報頭1411B、報頭2412B…報頭N419B)的數(shù)量的任選初始域(諸如1字節(jié)域)。數(shù)據(jù)區(qū)域(數(shù)據(jù)字節(jié)421B、數(shù)據(jù)字節(jié)422B…數(shù)據(jù)字節(jié)429B)分別由報頭(報頭1411B、報頭
2412B…報頭N419B)識別并按位置順序存儲,該位置順序與存儲報頭的位置順序相反。報頭開始于讀取單元的初端,而對應數(shù)據(jù)區(qū)域開始于讀取單元的末端。在某些實施方式中,數(shù)據(jù)區(qū)域中的數(shù)據(jù)字節(jié)(例如,數(shù)據(jù)字節(jié)421B、數(shù)據(jù)字節(jié)422B…數(shù)據(jù)字節(jié)429B)按遞增順序(匹配位置順序的字節(jié)順序)排列,而在其他實施方式中,數(shù)據(jù)字節(jié)沿相反順序(相對于位置反向的字節(jié)順序)排列。在某些實施方式中,報頭標記在讀取單元中使用,其中報頭和數(shù)據(jù)字節(jié)按同一位置順序存儲(例如,如圖4A所示)。
[0409] 在某些實施方式中,任選填充字節(jié)413A(或413B)符合與具體LPN相關(guān)聯(lián)的數(shù)據(jù)的粒度。例如,在某些實施方式中,如果數(shù)據(jù)字節(jié)421A(或集體為數(shù)據(jù)字節(jié)421B、數(shù)據(jù)字節(jié)422B…數(shù)據(jù)字節(jié)429B)具有少于固定量的剩余空間,諸如8字節(jié),在存儲與除了報頭1411A至報頭N419A(或報頭1411B、報頭2412B…報頭N419B)的最后一個報頭之后的所有報頭相關(guān)聯(lián)的數(shù)據(jù)之后,與最后報頭相關(guān)聯(lián)的LPN的數(shù)據(jù)開始于后續(xù)讀取單元。在進一步的實施方式中,最后報頭中的具體補償值(例如,所有補償值)表示與最后報頭相關(guān)聯(lián)的LPN的數(shù)據(jù)開始于后續(xù)讀取單元。
[0410] 圖5示出了具有大量域的報頭(諸如,圖4A的報頭1411A至報頭N419A或圖4B的報頭1411B至報頭419B中的任意一個)的實施方式的所選細節(jié)。在某些實施方式中,報頭為固定長度(例如,每個報頭的長度為相同數(shù)量的字節(jié))。報頭501包括域類型511、最后指示符513、標志515、LPN517、長度519和補償521。根據(jù)各種實施方式,報頭501包括和/或與紀元523相關(guān)聯(lián)和/或任選地和/或可選地附加有或前面加有紀元523。類型域識別數(shù)據(jù)字節(jié)的類別。例如,類型域表示數(shù)據(jù)字節(jié)的類別為主機數(shù)據(jù)(例如,邏輯頁面數(shù)據(jù))或系統(tǒng)數(shù)據(jù)(例如映射信息或檢查點信息)中的一個。最后域表示報頭是數(shù)據(jù)字節(jié)之前的最后報頭。在具有報頭標記的某些實施方式中,任選省略最后域。LPN域是報頭與其相關(guān)聯(lián)的LPN。LPN域啟用報頭解析以通過(例如)搜索報頭中LPN域與具體LPN匹配的報頭來確定與具體LPN相關(guān)聯(lián)的報頭中的具體報頭。長度域是數(shù)據(jù)字節(jié)的字節(jié)長度(例如,數(shù)據(jù)有多少字節(jié)在與報頭501相關(guān)聯(lián)的數(shù)據(jù)字節(jié)421A中)。在某些實施方式中,補償域中的補償根據(jù)具體粒度(例如,8字節(jié)粒度)進行取整。紀元域是識別對象的寫入順序的時間標記,相對于相同或不同流的其他對象,報頭是該對象的一部分。
[0411] 在各種實施方式中,與具體LPN相關(guān)聯(lián)的一部分或所有信息存儲在與具體LPN相關(guān)聯(lián)的映射條目、與具體LPN相關(guān)聯(lián)的報頭或這兩者中。例如,在某些實施方式中,長度519的一些或所有存儲在映射條目中,而不是報頭中。
[0412] 圖6示出了多個NVM設(shè)備(例如,一個或多個閃存芯片)的塊、頁面和讀取單元的所選細節(jié)。
[0413] 每個設(shè)備(諸如設(shè)備601,603…609中的任意一個)提供被組織為塊(諸如設(shè)備601的塊631,633…639;設(shè)備603的塊661,663…669;等等)的存儲。在某些實施方式中,每個設(shè)備包括整數(shù)個塊并且塊是擦除的最小配量。塊反之包括頁面(諸如塊631的頁面621,623…629;塊661的頁面651,653…659;等等)。在某些實施方式中,每個塊包括整數(shù)個頁面并且頁面是寫入的最小配量。頁面反之包括讀取單元(諸如頁面621的讀取單元611,
613…619;頁面651的讀取單元641,643…649;等等)。根據(jù)各種實施方式,揭示以下各項中的一項或多項:讀取單元是讀取和錯誤校正的最小配量;每個頁面包括整數(shù)個讀取單元;相關(guān)組的兩個或多個頁面包括整數(shù)個讀取單元;并且讀取單元任選和/或可選跨越頁面邊界。設(shè)備中的信息的讀取和/或?qū)懭敫鶕?jù)順序諸如“讀取單元優(yōu)先”順序或“頁面優(yōu)先”順序執(zhí)行。圖中所示的讀取單元的讀取單元優(yōu)先順序的示例開始于讀取單元611,接著是641,671,613,643,673,等等,結(jié)束于679。圖中所示的讀取單元的頁面優(yōu)先順序的示例開始于讀取單元611,接著是613,619,641,643,649,671,673,等等,結(jié)束于679。
[0414] 在各種實施方式中,閃存芯片601,603…609對應于圖1A的一個或多個獨立閃存芯片194中的相應。在某些實施方式中,設(shè)備601,603…609是不到NVM199的所有的一部分。例如,在各種實施方式中,數(shù)據(jù)在多組閃存芯片上被獨立條帶化,并且多組閃存芯片中的每一個可獨立訪問。
[0415] 在某些實施方式中,各種NVM管理功能(例如,讀取、循環(huán)、擦除、編程/寫入和/或與使用NVM有關(guān)的功能中的任意一個或多個)在邏輯片和/或段中執(zhí)行,有時稱為R塊。在各種實施方式中,R塊被舉例說明為例如閃存的相應芯片(例如,所有芯片,不包括完全地或部分地出現(xiàn)故障的芯片的所有芯片,和/或一個或多個所選子集的芯片)上的邏輯片或者段。例如,在具有R閃存芯片的閃存中,每個閃存芯片具有N個塊,每個R塊是總共N個R塊中的來自一起取出的每個閃存芯片的第i塊。再如,在具有R閃存芯片的閃存中,每個具有N個塊,每個R塊是總共N/2個R塊中的來自每個閃存芯片的第i和第(i+l)塊。對于又一示例,在具有多個雙平面設(shè)備的閃存中,每個R塊是來自每個雙平面設(shè)備的第i偶數(shù)塊和第i奇數(shù)塊。
[0416] 可以設(shè)想用于以R塊形式進行管理的閃存塊的其他布置,包括虛擬和物理塊地址之間的映射以確保即使某些塊不可操作,R塊也具有來自每個芯片的一個塊。在各種實施方式中,每個閃存芯片中的N個塊中的一部分被用作備用件使得虛擬和物理塊地址之間的映射具有備用(或者未使用)塊以取代R塊中有缺陷的塊。
[0417] 圖7示出了R塊的實施方式的所選細節(jié)。該圖示出了具有66個閃存芯片(閃存芯片710.65…710.0)的實施方式。示出了塊、頁面和塊以R塊進行管理。每個閃存芯片被示為具有N個塊(諸如閃存芯片710.65的塊710.65B0、塊710.65B1…塊710.65BB)。R塊的具體示例是每個R塊是來自每個閃存芯片的第i塊,綜合起來,諸如R塊760.0是來自閃存芯片710.65的塊710.65B0,來自閃存芯片710.64的塊0(未明確示出),…,至閃存芯片710.0的塊710.0B0。因此,總共具有N個R塊(R塊760.0,R塊760.1…R塊760.R)。R塊的另一具體示例是每個R塊是來自每個閃存芯片的第i和第i+1塊,綜合起來(例如,來自閃存芯片710.65的塊710.65B0和710.65B1,來自閃存芯片710.64的塊0和1,…,至來自閃存芯片710.0的塊710.0B0和710.0B1。因此,如果每個閃存芯片中具有N個塊,則具有N/2個R塊。
[0418] 在成對或按相關(guān)聯(lián)的組處理塊作為形成R塊的一部分的各種實施方式中,來自相關(guān)聯(lián)組的塊的每個塊的相應頁面也被視為單元,諸如用于寫入,形成較大的多塊頁面。例如,在具有偶數(shù)和奇數(shù)塊的各種雙平面實施方式中,偶數(shù)塊中的具體塊的第一頁面和奇數(shù)塊中的相關(guān)聯(lián)塊的第一頁面被視為用于寫入的單元,任選和/或可選作為用于讀取的單元。類似地,偶數(shù)塊中的具體塊的第二頁面和奇數(shù)塊中的相關(guān)聯(lián)塊的第二頁面被視為一個單元。根據(jù)各種實施方式,本文中所使用的NVM的頁面指的是以下各項中的一個或多個:NVM的單個頁面;NVM的多塊頁面;用于寫入的NVM的任選和/或可選被視為用于讀取的一個或多個單元頁面的多塊頁面;以及NVM的任何其他分組或關(guān)聯(lián)頁面。
[0419] 在某些實施方式中,由于忽略了故障(例如,不良)塊,因此不是所有R塊的大小都相同。例如,如果塊710.0B0有缺陷且不可用,則R塊760.0具有的塊比R塊760.1少一個。
[0420] 在某些實施方式中,每個R塊包含R塊報頭,諸如具體形式的報頭501,并且類型域指定R塊的類型(例如不是數(shù)據(jù)類型)。在進一步的實施方式中,R塊報頭在R塊中的多個塊中重復,諸如在R塊中的每個塊中的第一頁面中重復。根據(jù)各種實施方式,R塊報頭包括以下各項中的一個或多個:R塊類型;R塊記錄帶;R塊序列號;先前R塊編號和其他信息。R塊類型表示R塊中包含的信息的類型,諸如主機數(shù)據(jù)信息、映射信息或檢查點信息。R塊記錄帶指出多個記錄帶中的哪一個包括R塊。例如,R塊記錄帶指定熱數(shù)據(jù)記錄帶、冷數(shù)據(jù)記錄帶、映射記錄帶或檢查點記錄帶中的一個。R塊序列號針對所使用的每個R塊增加一次,并提供R塊創(chuàng)建的順序。在某些使用場景下,R塊序列號按照記錄帶,而在其他使用場景下,R塊序列號是綜合的。先前R塊編號使記錄帶中的給定記錄帶中的R塊能夠以相反的順序(時間向后推移)連接在一起。
[0421] 在某些實施方式中,恢復包括(諸如開始于)確定R塊中的每一個的R塊報頭,以及使用R塊報頭的內(nèi)容來確定每個記錄帶中的最后(最新寫入的)R塊。
[0422] 自身日志記錄和層級一致性
[0423] 子日志的示例是對象何時包括足夠信息以只恢復對象本身中的對象(例如,使用LBA對應的LB存儲LBA)。層級一致性的示例是經(jīng)由檢查被結(jié)構(gòu)化的另一數(shù)據(jù)的版本來確定要使用哪種版本的數(shù)據(jù)結(jié)構(gòu)。例如,具體時間標記識別的數(shù)據(jù)版本優(yōu)先于具體時間標記識別的映射版本,而該映射版本優(yōu)先于具體時間標記識別的檢查點版本。在某些實施方式和/或使用場景下,結(jié)合層級一致性技術(shù)使用自身日志記錄技術(shù)使得比沒有使用此等技術(shù)更有效地進行映射重建和/或低延遲FUA握手。
[0424] 在各種實施方式中,映射(從LBA至讀取單元,諸如圖1A的映射141的所有或任意部分)為一級映射、二級映射或多級映射,并且被實現(xiàn)為以下各項中的一個或多個:表、CAM、散列表、搜索樹、使密鑰(諸如LBA)與值(諸如讀取單元地址)相關(guān)聯(lián)的任意結(jié)構(gòu)或其任意組合。在某些實施方式中,映射包括保持頻繁訪問和/或廢條目的緩存。映射緩存被實現(xiàn)為表、CAM、散列表、搜索樹、使密鑰(諸如LBA)與值(諸如讀取單元地址)相關(guān)聯(lián)的任意結(jié)構(gòu)或其任意組合中的一個或多個。
[0425] 在各種實施方式中,經(jīng)由將長度存儲在與每個LBA相關(guān)聯(lián)的映射條目中,寫入數(shù)據(jù)被作為邏輯頁面、NVM的頁面、單一讀取單元或作為前述中的一個或多個進行存儲。主機以LB(由LBA尋址)的最細粒度提供寫入數(shù)據(jù)。在各種實施方式中,來自主機的LB任選和/或可選被壓縮并消耗不到一個讀取單元、一個讀取單元、一個以上讀取單元、非整數(shù)個讀取單元或其他尺寸。
[0426] 在進一步的實施方式中,主機提供比LB的粒度更細的粒度,諸如扇區(qū)粒度的寫入數(shù)據(jù)。例如,扇區(qū)為512B,并且每個LB包括8個連續(xù)扇區(qū)。數(shù)據(jù)大小小于LB的大小或具有僅導致具體LB的一部分被寫入的主機的寫入操作作為讀取-修改-寫入操作來處理。
[0427] 在某些實施方式中,使用讀取單元作為示例,映射使具體LBA與相應讀取單元地址和相應長度和/或跨度相關(guān)聯(lián),諸如在讀取單元中(例如,由映射141映射到讀取單元地址223和讀取單元的長度225的LBA211,如圖2所示,其中讀取單元225的長度編碼長度,作為具體LBA的數(shù)據(jù)的大小,和跨度,作為要讀取以獲得數(shù)據(jù)的讀取單元的數(shù)量)。存儲具體LBA引用的邏輯塊(LB),開始于由相應讀取單元地址尋址的NVM中的具體讀取單元并跨越使用相應寬度給出的多個讀取單元。例如,一個的跨度表示LB包含在具體讀取單元中。在各種實施方式和/或?qū)崿F(xiàn)中,具體讀取單元沒有存儲任何其他LB,或存儲小部分或一個或多個其他LB。
[0428] 具體讀取單元包括開始于具體讀取單元的一個或多個LB中的每一個的報頭(例如,圖4A的報頭1411A至報頭N419A以及圖4B的半透1441B、報頭2412B…報頭N419N)。報頭中的每一個包括LB的存儲在具體讀取單元中的相應LBA(例如,圖5的報頭501的LPN517和/或補償521)。例如,與具體LBA相關(guān)聯(lián)的報頭中的具體報頭包括具體LBA。在各種實施方式中,報頭包括其他信息諸如:發(fā)現(xiàn)LB的讀取單元的補償、LB上使用的壓縮類型的表示、按字節(jié)存儲的LB的長度以及其他信息。
[0429] 設(shè)想各種實施方式,諸如相對于數(shù)據(jù)組織和/或排序使用各種技術(shù)中的一個或多個來將報頭和數(shù)據(jù)存儲在讀取單元中,沒有開始LB的讀取單元中是否存在報頭,報頭是表示讀取單元開始還是結(jié)束,以及報頭是存儲在報頭分別對應的數(shù)據(jù)的第一讀取單元中還是最后讀取單元中。
[0430] 自身日志記錄屬性的示例是前面提到的存儲讀取單元中存儲的一個或多個LB的一個或多個LBA(諸如在讀取單元的一個或多個報頭中)。在將讀取單元寫入閃存之后,自身日志記錄屬性可以恢復LBA的映射信息和對應LB數(shù)據(jù)(例如,從報頭中),因為單獨處理讀取單元可以恢復映射信息。
[0431] 在各種實施方式和/或使用場景下,使用恢復技術(shù)(例如,響應于意外的功率損耗、故障或擾亂和/或防止將數(shù)據(jù)存儲到NVM的其他事件)。例如,通過定期寫出信息來維持檢查點以便可以全部或部分從故障中恢復。在某些實施方式中,檢查點具有多個條目,每個條目在活動流至非易失性存儲系統(tǒng)(例如,SSD的NVM)的一定程度上提供恢復信息。在各種實施方式中,相應檢查點條目包括不同類型的信息,諸如在不同時間記錄的不同檢查點信息。
[0432] 在某些實施方式中,寫入滾動檢查點,其中多個檢查點條目各自包括一個或多個數(shù)據(jù)結(jié)構(gòu)的一部分(諸如第一級映射的一部分和/或R塊使用計數(shù)表的全部)。滾動檢查點分配隨時間保存檢查點信息的成本(例如,性能成本、至NVM的額外寫入成本以及NVM的管理費成本)。在某些實施方式中,滾動檢查點可以只鎖定在檢查點創(chuàng)建期間經(jīng)檢查點設(shè)置的數(shù)據(jù)結(jié)構(gòu)的一部分,可以保留未鎖定的數(shù)據(jù)結(jié)構(gòu)的剩余部分,從而可供非檢查點使用。
[0433] 例如,在各種實施方式中,檢查點條目的至少一部分(但不一定是全部)包括空閑R塊列表(按打算使用空閑R塊的順序存儲)。檢查點經(jīng)寫入使得在恢復過程中,(a)檢查點可定位在NVM中,(b)可確定最新檢查點條目,(c)在某些實施方式中,檢查點按正向和/或反向時間順序可復制。例如,在NVM中,按FIFO順序?qū)z查點寫入具體位置(因此稍后的條目在較早的條目之后)。最后,寫入檢查點FIFO“隱藏”并使用較新的條目擦除和/或重寫最舊條目。寫入檢查點FIFO任選包括使用時間戳寫入以便可以確定檢查點條目的相應階段(例如,驅(qū)動FIFO中的最新和最舊條目)。在各種其他實施方式中,除FIFO之外的數(shù)據(jù)結(jié)構(gòu)(例如,往復式結(jié)構(gòu)、表和經(jīng)啟用以存儲檢查點條目的其他數(shù)據(jù)結(jié)構(gòu))用于存儲檢查點。盡管在某些實施方式中,檢查點FIFO是先進先出數(shù)據(jù)結(jié)構(gòu),但在其他實施方式中,檢查點FIFO使用其他結(jié)構(gòu),諸如隊列、流或按預定順序?qū)懭氲目呻S機訪問的結(jié)構(gòu)來實現(xiàn)。
[0434] 在某些實施方式中,在一個或多個數(shù)據(jù)流中寫入數(shù)據(jù)。因為主機提供寫入數(shù)據(jù),所以即使數(shù)據(jù)用于非連續(xù)區(qū)域(例如,非相關(guān)組的LBA),也可將寫入數(shù)據(jù)聚合到R塊中。寫入數(shù)據(jù)的數(shù)據(jù)流與主機寫入活動的日志類似,因為數(shù)據(jù)流記錄有主機寫入的數(shù)據(jù)(盡管不一定,但在所有實施方式中,數(shù)據(jù)按相同順序來自主機)。在各種實施方式中,再循環(huán)活動(從已經(jīng)全部和/或部分重寫的R塊再循環(huán)空閑空間)涉及再循環(huán)數(shù)據(jù)流,而主機寫入活動涉及與再循環(huán)數(shù)據(jù)流分開的主機數(shù)據(jù)流。在進一步的實施方式中,將主機數(shù)據(jù)寫入第一R塊,并將同時再循環(huán)數(shù)據(jù)寫入第二不同R塊。在某些使用場景下,將再循環(huán)(冷)數(shù)據(jù)與新寫入的(熱)數(shù)據(jù)分開是有利的。在進一步的實施方式中,主機數(shù)據(jù)的一些,諸如被確定為冷數(shù)據(jù)的主機數(shù)據(jù)的一部分被可選地寫入第二R塊。
[0435] 根據(jù)各種實施方式,定期及時創(chuàng)建檢查點條目,諸如響應于主機命令和/或響應于指定量的活動(例如,指定量的主機寫入數(shù)據(jù),指定量的映射引用,和/或指定量的廢映射信息)。在進一步的實施方式中,不同結(jié)構(gòu)在不同時間和/或根據(jù)不同規(guī)則進行檢查點設(shè)置。
[0436] 在各種實施方式中,檢查點包括一個或多個數(shù)據(jù)結(jié)構(gòu)中的一部分或全部,諸如:第一級映射、映射緩存、R塊使用表、R塊統(tǒng)計諸如擦除計數(shù)、其他統(tǒng)計諸如錯誤計數(shù)或基于R塊或其他累積的讀取干擾信息、空閑列表和非易失性存儲系統(tǒng)中使用的其他狀態(tài)信息和/或表。
[0437] 在某些實施方式中,全部或部分包括于一個或多個檢查點條目中的數(shù)據(jù)結(jié)構(gòu)用于恢復處理。在諸如具有滾動檢查點的進一步的實施方式中,多個檢查點條目用于恢復數(shù)據(jù)結(jié)構(gòu),諸如第一級映射。
[0438] 在一個示例中,在恢復過程中,檢查點FIFO用于查找檢查點FIFO的檢查點的條目中保存的空閑R塊的一個或多個列表中的一個。然后讀取空閑R塊的最新列表中的R塊以查找已經(jīng)使用R塊中的哪些(因為所使用的R塊不處于擦除狀態(tài),所以可以確定)。在某些使用場景下,在故障之前寫入R塊的一小部分,并且寫入的R塊的一小部分是可以恢復的。掃描空閑R塊的最新列表中的R塊中的讀取單元以查找讀取單元中的任何報頭。報頭包括表示讀取單元中存儲的LB的LBA。檢查映射(器可以確定LBA的數(shù)據(jù)存儲在NVM中的哪里)以確定映射中是否缺少任意LBA。例如,如果用于LBA之一的映射的條目指的是比在其中發(fā)現(xiàn)LBA的讀取單元舊的讀取單元。如果映射過期,則更新映射。在某些使用場景下,相同LBA在第一讀取單元中找到,隨后在第二讀取單元中找到,例如,當在檢查點期間不止一次寫入LBA時。因而,在該示例中,從概念上看,數(shù)據(jù)讀取單元依次在恢復期間進行處理,且在某些情況下,如果在讀取單元中的報頭中不止一次找到相同LBA,則在恢復期間不止一次更新映射中的相同條目。在另一個示例中,從概念上看,對數(shù)據(jù)讀取單元進行后向處理(而不是依次處理,例如前向處理)并且丟棄重復寫入相同LBA。
[0439] 各種技術(shù)用于使映射和寫入NVM的寫入數(shù)據(jù)同步。一些技術(shù)可適用于具有一級映射的實施方式,而其他技術(shù)可適用于具有二級或多級映射的實施方式。
[0440] 在某些實施方式中,通過將一部分或全部映射寫入檢查點條目來定期對映射進行檢查點設(shè)置。在某些實施方式中,將整個映射寫入檢查點FIFO。在其他實施方式中,將映射寫入NVM中的具體往復式位置(并且任選通過時間戳)。在其他實施方式中,NVM中表示將映射寫入NVM中的哪里的地址被寫入檢查點FIFO。在其他實施方式中,一次為映射檢查點設(shè)置一個部分,使得整個映射在多個檢查點條目上進行檢查點設(shè)置(例如,滾動檢查點)。在某些使用場景下,一次為映射檢查點設(shè)置一個部分可以降低對某些命令,諸如主機寫入命令的延遲的上限。
[0441] 在某些實施方式中,為了解決任何一致性問題,施加層級一致性寫入排序以確保一致性,例如,在將對應更新映射條目寫入NVM之前,總是將寫入數(shù)據(jù)寫入NVM。例如,在某些實施方式中,僅在寫入數(shù)據(jù)致力于NVM之后才更新映射條目,并且寫入數(shù)據(jù)包括記錄有寫入數(shù)據(jù)與此相關(guān)聯(lián)的LBA的報頭。在此期間,映射的未決定更新保持在另一個結(jié)構(gòu),諸如映射緩存中。在某些實施方式中,映射緩存包括表示條目是否“未決”的映射緩存中的每個條目的信息(例如,等待完成將寫入數(shù)據(jù)寫入NVM)。通過延遲更新經(jīng)檢查點設(shè)置的映射版本直至將寫入數(shù)據(jù)寫入NVM,映射的檢查點總是比寫入數(shù)據(jù)舊,并且明確定義了映射和寫入數(shù)據(jù)之間的一致性,因為來自寫入數(shù)據(jù)報頭的LBA映射信息優(yōu)先于來自映射的任何彼此矛盾的(舊的)信息。
[0442] 通過使用層級一致性寫入排序,映射(如NVM中存儲的且在恢復過程中恢復的)總是只包括比來自數(shù)據(jù)讀取單元的信息早的信息?;謴陀成淇偸潜葋碜曰謴蛿?shù)據(jù)讀取單元的任何數(shù)據(jù)舊,并且恢復數(shù)據(jù)讀取單元中的報頭(例如,根據(jù)檢查點FIFO中的空閑R塊的列表確定的)用于更新映射。
[0443] 在某些二級映射實施方式中,第二級映射條目定期存儲在NVM中。第二級映射頁面(其包括多個第二級映射條目)包括具有第一級映射索引的映射報頭,并且與第一級映射索引相關(guān)聯(lián)的FLM的條目指向第二級映射頁面。第一級映射索引為第二級映射頁面提供自身日志記錄屬性。層級一致性寫入排序經(jīng)擴展以便首先將寫入數(shù)據(jù)寫入NVM,在完成寫入數(shù)據(jù)的寫入之后,僅將包含與寫入數(shù)據(jù)相關(guān)聯(lián)的第二級映射條目中的具體映射條目的第二級映射頁面寫入NVM,并且在完成第二級映射頁面寫入之后,僅更新指向第二級映射頁面的第一級映射條目(指的是第二級映射頁面的更新位置)??臻eR塊的列表任選和/或可選包括用于存儲第二級映射條目以及寫入數(shù)據(jù)的R塊。在某些實施方式中,空閑R塊的一個列表用于第二級映射條目,空閑R塊的另一個列表用于數(shù)據(jù),并且R塊隔離中兩個列表之間。兩個列表可以從第二級映射頁面中的報頭中恢復第一級映射,類似于從數(shù)據(jù)讀取單元中恢復一級映射。因而,第一級映射的檢查點總是比恢復的第二級映射頁面舊(并且第一級映射使用恢復的第二級映射頁面中的報頭進行更新)。類似地,第二級映射頁面比寫入數(shù)據(jù)舊,并且第二級映射頁面使用恢復的數(shù)據(jù)讀取單元中的報頭來更新。
[0444] 在某些實施方式中,諸如在具有滾動檢查點的某些實施方式中,將額外日志報頭添加至數(shù)據(jù)讀取單元和/或映射讀取單元以便記錄檢查點事件。日志報頭包括新型記錄事件,并且信息用于幫助恢復。例如,將日志報頭寫入數(shù)據(jù)讀取單元以表示映射的一部分與數(shù)據(jù)流中的此點一致(例如,已經(jīng)進行檢查點設(shè)置)。
[0445] 在某些實施方式中,日志報頭表示在數(shù)據(jù)流中恢復過程追溯到什么時候開始。例如,使用滾動檢查點,并且在具有忽略一個或多個數(shù)據(jù)結(jié)構(gòu)的檢查點信息的某些檢查點條目的進一步的實施方式中,恢復開始使用對應于所有數(shù)據(jù)結(jié)構(gòu)全部進行檢查點設(shè)置的最新時間點的信息進行處理。例如,如果映射在N個檢查點條目上分成N塊進行檢查點設(shè)置,則在對應于對所有N塊映射進行檢查點設(shè)置之后的最新時間的數(shù)據(jù)頁面中的位置(稱為“最深處的點”)開始恢復。
[0446] 在某些實施方式中,日志報頭表示在某個點上一致的數(shù)據(jù)結(jié)構(gòu)的一部分。繼續(xù)上述映射恢復示例,在最深處的點,已經(jīng)對N塊映射中的第一片進行了檢查點設(shè)置(并且在稍后的時間里在數(shù)據(jù)流中沒有通過定義最深處的點進行檢查點設(shè)置)。繼第一塊映射之后并影響第一塊映射的所有更新適用于映射。然而,其他塊映射僅在遇到表示數(shù)據(jù)流中的后續(xù)數(shù)據(jù)尚未記錄在檢查點中的對應日志報頭之后才進行更新。
[0447] 在某些實施方式中,層級一致性數(shù)據(jù)和/或數(shù)據(jù)結(jié)構(gòu)的時間順序由時間戳和/或序列號確定。即,通過比較時間戳和/或序列號來確定是在對應更新映射條目之后還是在此之前將寫入數(shù)據(jù)寫入NVM。時間戳和/或序列號任選地和/或可選地例如在保持寫入/再循環(huán)數(shù)據(jù)、映射信息和/或檢查點條目的的相應流中輸出以提供流之間的更新順序的規(guī)范,該規(guī)范相對于執(zhí)行至NVM的物理寫入的順序是不變的。在進一步的實施方式中,時間戳和/或序列號在流中輸出作為特殊類型的報頭(稱之為紀元報頭)。每個紀元報頭包括當前時間戳和/或序列號(稱之為紀元)(例如,圖5的紀元523)。
[0448] 在各種實施方式中,紀元隨著每個數(shù)據(jù)寫入推進和/或增加,并且可唯一確定已經(jīng)進行數(shù)據(jù)寫入的順序。在進一步的實施方式中,由數(shù)據(jù)寫入中的具體數(shù)據(jù)寫入產(chǎn)生的數(shù)據(jù)結(jié)構(gòu)更新分配有具體數(shù)據(jù)寫入的紀元。當將數(shù)據(jù)結(jié)構(gòu)更新連同具體數(shù)據(jù)寫入的紀元一起寫入流時,具體數(shù)據(jù)寫入和數(shù)據(jù)結(jié)構(gòu)更新的順序由指定具體數(shù)據(jù)寫入的紀元和數(shù)據(jù)結(jié)構(gòu)更新的紀元的相應紀元報頭確定,與具體數(shù)據(jù)寫入和數(shù)據(jù)結(jié)構(gòu)更新被寫入NVM的順序無關(guān)。
[0449] 根據(jù)各種實施方式,紀元報頭根據(jù)以下各項中的一項或多項輸出:每一個數(shù)據(jù)寫入一次;僅使用某些數(shù)據(jù)寫入;定期在數(shù)據(jù)流中;每一個NVM頁面至少一次;以及每一個記錄帶切換一次。在具有單個數(shù)據(jù)記錄帶的第一示例中,每一個NVM頁面至少輸出紀元報頭一次,其使用數(shù)據(jù)流的數(shù)據(jù)寫入。在數(shù)據(jù)流的每個頁面中提供紀元報頭可以在無需讀取多個頁面的情況下確定頁面中的數(shù)據(jù)的紀元。在具有多個數(shù)據(jù)記錄帶(諸如熱記錄帶和冷記錄帶)的第二示例中,每一個NVM頁面至少輸出紀元報頭一次,其寫入與記錄帶無關(guān),另外無論先前的數(shù)據(jù)寫入是否是與當前數(shù)據(jù)寫入不同的記錄帶之一(稱之為記錄帶切換)。每一個記錄帶切換至少提供紀元報頭一次可以確定每個數(shù)據(jù)寫入的紀元,即使不是所有數(shù)據(jù)寫入都具有相應紀元報頭。進一步地,每一個記錄帶切換至少提供紀元報頭一次可以通過在記錄帶之間提供一致的寫入順序?qū)蓚€或兩個以上記錄帶,諸如熱記錄帶和冷記錄帶,視為單個流。
[0450] 在某些實施方式中,具有多個紀元序列。在第一示例中,分離紀元順序用于新寫入與再循環(huán)數(shù)據(jù)。數(shù)據(jù)結(jié)構(gòu)更新分配有來自一個或多個紀元序列的紀元,這主要取決于相關(guān)聯(lián)的數(shù)據(jù)寫入。在第二示例中,至NVM的數(shù)據(jù)寫入使用第一紀元(例如,來自第一紀元序列的第一紀元)蓋上時間戳,并且至NVM的第二級映射寫入使用第二紀元(例如,來自第二紀元序列的第二紀元)蓋上時間戳。第二級映射的更新分配有對應于相關(guān)數(shù)據(jù)寫入的第一紀元值,并且第一級映射的更新分配有對應于相關(guān)第二級映射寫入的第二紀元值。映射流任選和/或可選具有兩個類型的紀元報頭,一個用于第一紀元值,一個用于第二紀元值。
[0451] 盡管前文描述了映射的恢復,但其他數(shù)據(jù)結(jié)構(gòu)類似地可使用自身日志記錄和層級一致性恢復。例如,R塊使用計數(shù)表類似地可進行檢查點設(shè)置和恢復。在某些實施方式中,R塊使用計數(shù)包括每個R塊中的有源(不重寫)LB的數(shù)量的計數(shù)。
[0452] 自身日志記錄和層級一致性屬性同樣可適用于緩存(部分)數(shù)據(jù)結(jié)構(gòu)。例如,映射緩存包括映射的廢條目。在某些實施方式中,映射緩存條目中的每一個對應于多個第二級映射頁面中的一個,第二級映射頁面中的每一個包括多個第二級映射條目,并且如果具體映射緩存條目中的任意第二級映射條目是廢條目,則映射緩存條目中的具體映射緩存條目是廢條目。映射緩存根據(jù)層級一致性定期記錄在檢查點條目中(總而言之,以滾動檢查點的方式,或通過定期刷新映射緩存的廢條目)。在某些實施方式中,以每映射條目為基礎(chǔ)遵循層級一致性。繼續(xù)該示例,當將映射緩存的一部分保存在檢查點條目中時,只對與所完成的寫入數(shù)據(jù)(例如,通過致力于NVM而進行非易失性存儲的寫入數(shù)據(jù))對應的映射條目進行檢查點設(shè)置。例如,如果映射條目中的條目已經(jīng)更新并且對應數(shù)據(jù)尚未進行非易失性存儲,則延遲對更新的映射條目進行檢查點設(shè)置直至對應數(shù)據(jù)進行非易失性存儲為止。
[0453] 在某些實施方式中,映射緩存包括每個條目兩個讀取單元地址,例如層級一致性的讀取單元地址和未決讀取單元地址。對非易失性存儲系統(tǒng)的讀取訪問經(jīng)啟用以使用未決讀取單元地址來定位最新數(shù)據(jù)(例如,其存儲在通過待決至NVM的寫入的讀取單元尋址來訪問的數(shù)據(jù)緩存中)。然而,檢查點操作經(jīng)啟用以使用層級一致性的讀取單元地址。當將寫入數(shù)據(jù)寫入NVM中時,將受影響的映射緩存條目中的對應未決地址復制到層級一致性地址(然后可用于進行檢查點設(shè)置)。
[0454] 在各種實施方式中,映射緩存的多個條目中的每一個對應于多個第二級映射頁面中的一個,第二級映射頁面中的每一個包括多個第二級映射條目,并且如果具體映射緩存條目中的任意第二級映射條目是廢條目,則映射緩存條目中的具體映射緩存條目是廢條目。根據(jù)各種實施方式,映射緩存的廢條目中的每一個是以下各項中的一個或多個:與指定廢條目的最舊更新的紀元的時間戳相關(guān)聯(lián);與指定廢條目的最新更新的紀元的時間戳相關(guān)聯(lián);與當前數(shù)據(jù)寫入的紀元相關(guān)聯(lián)。在某些實施方式中,在指定廢條目的最舊更新的紀元的相關(guān)時間戳大于當前數(shù)據(jù)寫入的紀元之后的預定量之前,刷新廢條目中的每一個。在某些實施方式中,存儲在具有廢條目的刷新條目的NVM中的時間戳是與刷新廢條目相關(guān)聯(lián)的時間戳中的任意一個或多個。
[0455] 可能存在其他方案,諸如使用分開的層級一致性且未決映射緩存,諸如使用被復制至層級一致性映射緩存的未決映射緩存中的條目,因為所述條目被寫入NVM。
[0456] 在某些實施方式中,諸如用于動態(tài)映射LBA(即,當正在寫入LBA時)的映射緩存的動態(tài)結(jié)構(gòu)僅以檢查點設(shè)置的形式存在于NVM中。例如,結(jié)構(gòu),不同于映射本身,不具有永久存儲。例如,在某些實施方式中,只對映射緩存中的廢條目進行檢查點設(shè)置,并且如果映射緩存在擴展期間不具有廢條目(并且檢查點FIFO已經(jīng)隱藏),則不存在映射緩存的檢查點。因為動態(tài)結(jié)構(gòu)存在于檢查點中(在必要時),在恢復期間動態(tài)結(jié)構(gòu)同樣可以在故障之后重建。
[0457] 特定實施方式
[0458] 各種特定實施方式實現(xiàn)可適用于非易失性存儲系統(tǒng)中的自身日志記錄和層級一致性和/或與其相關(guān)的一項或多項技術(shù)。二級映射方案經(jīng)由寫入映射流和檢查點流進行管理,其中主機數(shù)據(jù)和再循環(huán)數(shù)據(jù)寫入一個或多個數(shù)據(jù)流?;謴投売成浞桨傅腇LM和SLM元件使用來自檢查點流的信息,隨后是來自映射流的信息,之后是來自數(shù)據(jù)流的信息。在恢復期間,數(shù)據(jù)流優(yōu)先于映射流,并且映射流優(yōu)先于檢查點流。
[0459] 圖8示出了作為LBA至NVM位置映射800的經(jīng)由具有FLM和一個或多個SLM頁面的二級映射將LBA映射到NVM中所存儲的LB的實施方式的所選細節(jié)。二級映射經(jīng)由與一個或多個第二級元件(從概念上講被示為單個元件SLM頁面820)耦合的第一級元件(FLM810)來實現(xiàn)。FLM包括多個條目(SLM頁面/長度810.1...SLM頁面/長度810.M)。FLM的每個條目指向SLM頁面(諸如SLM頁面820)中的一個。SLM頁面包括多個條目(LB頁面/長度820.1...LB頁面/長度820.N)。SLM頁面的每個條目指向數(shù)據(jù)開始的NVM中的位置(例如,至少存儲用于LBA的主機寫入數(shù)據(jù)的初端的讀取單元)。除法器(整數(shù)除法器822)例如從可編程硬件寄存器接收參數(shù)(SLM條目/SLM頁面(CSR)823)以除以輸入LBA,從而確定要選擇哪個FLM條目以及要選擇哪個SLM條目(其在所選FLM條目指向的SLM頁面內(nèi))。除法器與FLM和SLM頁面耦合。
[0460] 在各種實施方式中,該圖示圖1A的映射141和/或表143的所選細節(jié)或與其有關(guān)的所選細節(jié)。例如,在某些實施方式中,映射141和/或表143實現(xiàn)映射信息的一個或多個緩存,諸如FLM的一個或多個條目和/或SLM的一個或多個條目。FLM和/或SLM的整個圖像保持在NVM(例如,圖1A的NVM199)中,例如當緩存取代先前緩存的FLM和/或SLM條目時更新。在某些實施方式中,F(xiàn)LM和/或SLM整個圖像經(jīng)由滾動或往復式球檢查點來實現(xiàn),每個檢查點是各自整個映射圖像的一部分。
[0461] 在操作中,將LBA821出現(xiàn)給整數(shù)除法器822。除法器將LBA除以如SLM條目/SLM頁面(CSR)823提供的每個SLM頁面的SLM條目數(shù)量,從而得到商數(shù)(FLM索引822Q)和余數(shù)(SLM頁面索引822R)。商數(shù)用于選擇FLM條目中的一個,并讀取所選FLM條目的頁面域(SLM指針810S)。頁面域用于選擇SLM頁面中的一個(例如,SLM頁面820),并且余數(shù)用于(例如,作為補償)選擇所選SLM頁面的條目。所選SLM頁面條目的頁面域用于選擇NVM,諸如具體讀取單元中的具體位置,在該具體位置存儲有與所出現(xiàn)的LBA對應的LB的至少初端(LB指針820L)。在各種實施方式中,LB指針包括NVM的讀取單元的地址(例如,圖2的讀取單元地址223)。在某些實施方式中,每個SLM條目包括表示要讀取多少讀取單元才獲得FLM條目的頁面域指定的所有相應SLM頁面(例如,圖2的讀取單元的長度225)的長度域(例如,編碼大小和/或跨度)。
[0462] 在各種實施方式中,商數(shù)被用作訪問緩存器,諸如SLM頁面的全相關(guān)緩存器的密鑰。如果緩存器中存在具體SLM頁面命中,則在不訪問NVM的情況下在緩存器中找到具體SLM頁面的最新副本。在某些實施方式和/或使用場景下,對多個SLM頁面提供快速訪問使得對NVM的隨機訪問進行更有效的處理和/或使得對NVM的多個獨立流的連續(xù)數(shù)據(jù)訪問進行更有效的處理(例如,對LBA的第一區(qū)域的第一流的連續(xù)數(shù)據(jù)訪問穿插對LBA的第二區(qū)域的第二流的連續(xù)數(shù)據(jù)訪問)。
[0463] 圖9示出了接收并將數(shù)據(jù)從主機寫入NVM的各種實施方式的所選細節(jié)作為數(shù)據(jù)、映射和檢查點寫入處理900,包括寫入SLM和FLM信息,以及各種形式的自身日志記錄和時間戳記錄。處理還可適用于源自再循環(huán)操作的數(shù)據(jù)。處理從概念上看具有兩個部分,第一部分與適當?shù)闹鳈C(或再循環(huán))數(shù)據(jù)有關(guān)(接收并寫入數(shù)據(jù)910),第二部分與映射數(shù)據(jù)有關(guān)(創(chuàng)建并寫入映射條目920)。進一步地,對所示的操作中的所選操作進行檢查點設(shè)置(對元素進行檢查點設(shè)置995)。
[0464] 處理在收到主機寫入命令(或再循環(huán)操作數(shù)據(jù)產(chǎn)生)之后開始(開始901)。然后獲得主機(或再循環(huán))數(shù)據(jù)(從主機接收數(shù)據(jù)911)。然后諸如經(jīng)由壓縮、加密、填充和/或各種格式化操作轉(zhuǎn)換數(shù)據(jù)以便寫入NVM,(格式化數(shù)據(jù)912)。隨后,諸如經(jīng)由表示數(shù)據(jù)對應于哪個LBA的報頭將自身日志記錄信息插入數(shù)據(jù)中(自身日志記錄數(shù)據(jù)913)。在某些實施方式中,報頭包括長度和/或補償和/或其他信息,諸如如圖5所示。然后,諸如經(jīng)由報頭中的紀元域?qū)r間標記插入數(shù)據(jù)中(給數(shù)據(jù)蓋上時間戳914)。在各種實施方式中,插入時間標記作為具體類型的報頭。隨后,數(shù)據(jù)、報頭和時間標記與其他主機(或再循環(huán))數(shù)據(jù)和報頭信息聚合在一起(緩沖數(shù)據(jù)915)。當聚合足夠信息之后,將聚合信息寫入NVM(將數(shù)據(jù)寫入NVM916)。
[0465] 數(shù)據(jù)的格式化(格式化數(shù)據(jù)912)提供部分用于創(chuàng)建映射條目的信息,開始于二級映射的第二級(為數(shù)據(jù)創(chuàng)建SLM條目922),二級映射指向?qū)懭胗袛?shù)據(jù)的NVM中的位置,諸如讀取單元地址和讀取單元的長度。在某些實施方式中,部分通過確定數(shù)據(jù)寫入NVM中的哪里,如緩沖數(shù)據(jù)915確定,來提供創(chuàng)建映射條目的進一步信息。然后,諸如經(jīng)由提供對應于SLM條目的FLM索引的報頭將自身日志記錄信息插入條目中(自身日志記錄SLM條目923)。在某些實施方式中,報頭包括長度、補償和/或其他信息,諸如如圖5所示。隨后,諸如經(jīng)由報頭中的紀元域?qū)r間標記插入條目中(給SLM條目蓋上時間戳924)。在各種實施方式中,插入時間標記作為具體類型的報頭。然后,條目、報頭和時間標記與其他SLM條目和報頭聚合在一起(緩沖SLM條目925)。當聚合足夠信息之后,將聚合信息寫入NVM(將SLM條目寫入NVM926)。在某些實施方式中,聚合SLM條目至少部分經(jīng)由一個或多個緩存進行。
[0466] SLM條目的創(chuàng)建(為數(shù)據(jù)創(chuàng)建SLM條目922)通過創(chuàng)建指向SLM條目的FLM條目(為SLM條目創(chuàng)建FLM條目932)來提供部分用于完成映射條目的創(chuàng)建的信息。類似于SLM條目,存在自身日志記錄和時間標記插入(自身日志記錄FLM條目933和給FLM條目蓋上時間戳934),隨后緩沖并寫入NVM(緩沖FLM條目935和將FLM條目寫入NVM936)。在將數(shù)據(jù)、SLM條目和FLM條目寫入NVM之后(將數(shù)據(jù)寫入NVM916,將SLM條目寫入NVM926并將FLM條目寫入NVM936),處理完成(結(jié)束999)。
[0467] 在某些實施方式中,SLM條目被組織成SLM頁面并且將SLM頁面緩存在例如緩存器中,從而在將SLM頁面寫入NVM(自身日志記錄SLM條目923以將SLM條目寫入NVM926)之前啟用SLM頁面的條目的多個更新(為數(shù)據(jù)創(chuàng)建SLM條目922)。SLM頁面中的緩存SLM頁面中的每一個經(jīng)啟用以累積來自一個或多個數(shù)據(jù)寫入的更新,并且任選地和/或可選地直至相應緩存SLM頁面由緩沖器刷新才寫入NVM。根據(jù)各種實施方式,寫入具有緩存SLM頁面中的刷新SLM頁面的NVM的時間標記是以下各項中的一個或多個:對應于影響刷新SLM頁面中的條目的最新數(shù)據(jù)寫入的時間標記;對應于自緩存之后影響刷新SLM頁面中的條目的最早數(shù)據(jù)寫入的時間標記;對應于當前數(shù)據(jù)寫入的時間標記;以及對應于映射流的時間標記。
[0468] 在某些實施方式中,部分將FLM條目寫入NVM作為滾動檢查點的一部分,從而在將FLM的部分寫入NVM(自身日志記錄FLM條目933以將FLM條目寫入NVM936)之前啟用FLM的部分的條目的多個更新(為SLM條目創(chuàng)建FLM條目932)。FLM的部分中的每一個經(jīng)啟用以累積來自一個或多個SLM條目的更新,并且任選地和/或可選地直至制作FLM的部分的檢查點才寫入NVM(例如,作為滾動檢查點的一部分)。根據(jù)各種實施方式,寫入具有FLM的部分中的一個的NVM的時間標記是以下各項中的一個或多個:對應于影響FLM的部分中的條目的最新數(shù)據(jù)寫入的時間標記;對應于自對FLM的部分進行最后檢查點設(shè)置之后影響FLM的部分中的條目的最早數(shù)據(jù)寫入的時間標記;對應于當前數(shù)據(jù)寫入的時間標記;以及對應于映射流的時間標記,諸如具有FLM的部分中的對應更新的SLM條目的映射流中的時間標記。
[0469] 在各種實施方式中,例如經(jīng)由報頭插入的自身日志記錄信息包括在如圖4A、圖4B和圖5中所示的報頭中。在某些實施方式中,F(xiàn)LM信息的聚合至少部分經(jīng)由一個或多個緩存器進行,而與緩存(如果有的話)SLM信息無關(guān),或可替代地集合SLM信息的緩存。
[0470] 在各種實施方式和使用場景下,繼續(xù)進行從接收至寫入NVM的數(shù)據(jù)處理(格式化數(shù)據(jù)912以將數(shù)據(jù)寫入NVM916),其與從創(chuàng)建至寫入NVM的映射處理無關(guān)(為數(shù)據(jù)創(chuàng)建SLM條目922以將SLM條目寫入NVM926和/或為SLM條目創(chuàng)建FLM932條目以將FLM條目寫入NVM936)。進一步地,在各種實施方式和使用場景下,從創(chuàng)建至寫入NVM的SLM和FLM處理(分別為數(shù)據(jù)創(chuàng)建SLM條目922以將SLM條目寫入NVM926和/或為SLM條目創(chuàng)建FLM條目932以將FLM條目寫入NVM936)彼此獨立繼續(xù)進行。數(shù)據(jù)、SLM和FLM處理全部或部分彼此并行發(fā)生,僅由與創(chuàng)建SLM條目(格式化數(shù)據(jù)912以便為數(shù)據(jù)創(chuàng)建SLM條目922)和創(chuàng)建FLM條目(為數(shù)據(jù)創(chuàng)建SLM條目922以便為SLM條目創(chuàng)建FLM條目932)有關(guān)的相關(guān)性限制。
[0471] 在各種實施方式中,除了寫入數(shù)據(jù)之間的處理(接收并寫入數(shù)據(jù)910)和映射條目的處理(創(chuàng)建并寫入映射條目920的SLM和FLM有關(guān)部分)獨立(因而全部或部分并行或重疊)之外,910中的每一個中的處理和920的SLM和FLM有關(guān)部分完全或部分并行,重疊和/或流線進行。例如,接收第一主機數(shù)據(jù)(從主機911接收數(shù)據(jù))并同時格式化第一主機數(shù)據(jù)(格式化數(shù)據(jù)912),并行接收第二主機數(shù)據(jù)(從主機接收數(shù)據(jù)911)。再如,創(chuàng)建第一SLM條目(為數(shù)據(jù)創(chuàng)建SLM條目922),然后同時對第一SLM條目進行自身日志記錄處理(自身日志記錄SLM條目923),并行創(chuàng)建第二SLM條目(為數(shù)據(jù)創(chuàng)建SLM條目922)。進一步地,與創(chuàng)建第二SLM條目(和自身日志記錄第一SLM條目)并行創(chuàng)建第一SLM條目的FLM條目(為SLM條目創(chuàng)建FLM條目932)。
[0472] 在某些實施方式中,稍后的操作經(jīng)啟用以比在稍后操作之前開始的操作早完成。在第一示例中,沒有規(guī)定將至兩個不同記錄帶的數(shù)據(jù)寫入寫入NVM的順序。在第二示例中,緩存SLM頁面使得在更新來自比稍后數(shù)據(jù)希爾早的數(shù)據(jù)寫入的SLM條目之前,可以更新來自待寫入NVM的稍后數(shù)據(jù)寫入的SLM條目。
[0473] 在各種實施方式中,插入時間標記是可選的,任選的和/或被忽略(例如,忽略或僅可選地插入給數(shù)據(jù)蓋上時間戳914、給SLM條目蓋上時間戳924和給FLM條目蓋上時間戳934中的一項或多項)。進一步地,寫入映射信息被延遲直至完成數(shù)據(jù)信息的寫入(或?qū)懭胗成湫畔㈨憫谕瓿蓴?shù)據(jù)信息的寫入來執(zhí)行)。例如,將SLM條目信息記錄到NVM中等待完成將數(shù)據(jù)寫入NVM(例如,將SLM條目寫入NVM926取決于將數(shù)據(jù)寫入NVM916,如完成916C所示)。繼續(xù)該示例,將FLM條目信息記錄在NVM中等待完成將SLM信息寫入NVM(例如,將FLM條目寫入NVM936取決于將SLM條目寫入NVM926,如完成926C所示)?;謴吞幚硎褂脤懭隢VM的所有FLM信息,以及寫入NVM的所有SLM信息,因為直至事先寫入有FLM和SLM信息指向的數(shù)據(jù)信息才寫入FLM和SLM信息。因而,NVM上的數(shù)據(jù)和映射信息彼此一致。
[0474] 在某些實施方式中,選擇性插入時間標記。例如,不將連續(xù)時間標記插入NVM的相同頁面以便進行存儲在相同頁面中的連續(xù)數(shù)據(jù)寫入,僅插入時間標記中的第一個。時間標記的后續(xù)時間標記的值從第一時間標記的值和干預連續(xù)數(shù)據(jù)寫入的數(shù)量推斷而得。
[0475] 在各種實施方式中,插入時間標記,從而彼此獨立地,諸如完全或部分彼此并行或無序地寫入數(shù)據(jù)、SLM和FLM信息。在某些實施方式和/或使用場景下,獨立寫入可以比依賴寫入(例如,從概念上看由完成916C和完成926C所示)支持更有效的處理(例如,較低延遲和/或較高帶寬)。
[0476] 在具體操作場景下,數(shù)據(jù)寫入是NVM的數(shù)據(jù)流(例如將數(shù)據(jù)寫入NVM916是數(shù)據(jù)流),并且映射寫入是NVM的映射流和/或檢查點流(例如,將SLM條目寫入NVM926以及將FLM條目寫入NVM936分別是映射流和檢查點流)。延遲數(shù)據(jù)寫入中的一項或多項(諸如由于等待與寫入數(shù)據(jù)流沖突的擦除操作完成)。與此同時,映射流寫入中的至少一個與擦除操作全部或部分并行發(fā)生,使得與延遲寫入數(shù)據(jù)中的至少一部分對應的至少一個映射條目的寫入在寫入延遲寫入數(shù)據(jù)之前完成。隨后,完成擦除操作,然后完成延遲數(shù)據(jù)寫入。如果在完成延遲數(shù)據(jù)寫入之前存在故障,則后續(xù)恢復可基于數(shù)據(jù)和映射流中的時間標記的檢查來確定是否忽略與延遲數(shù)據(jù)寫入對應的任意映射流寫入。具體地,與延遲寫入對應的映射流寫入的時間標記在數(shù)據(jù)流寫入的最新(例如,最近或最新)之前(例如,更近或更新)。
[0477] 在各種實施方式中,插入映射信息的自身日志記錄是任選的和/或被忽略(例如,忽略自身日志記錄SLM條目923和自身日志記錄FLM條目933中的一個或多個)。
[0478] 在某些實施方式和/或使用場景下,對該圖的元素中的一個或多個進行檢查點設(shè)置(對元素進行檢查點設(shè)置995)。在相應時間點將檢查點寫入NVM以便在某些場景下支持更有效和/或更健壯的恢復處理。例如,聚合數(shù)據(jù)、SLM信息和FLM信息中的一個或多個(緩沖數(shù)據(jù)915、緩沖SLM條目925和緩沖FLM條目935)包括在檢查點中。在各種實施方式中,恢復處理使用檢查點中包括的時間標記來確定是否忽略檢查點的某些部分。例如,如果數(shù)據(jù)流的最新部分(對應于緩沖數(shù)據(jù)915)沒有比檢查點的最新SLM部分(對應于將SLM條目寫入NVM926)更晚的時間標記,則在恢復處理期間丟棄檢查點的最新SLM部分。
[0479] 圖10示出了流主機和/或再循環(huán)數(shù)據(jù)、映射信息和至NVM的檢查點FIFO部分的各種實施方式的所選細節(jié)。示出了R塊的三個流,一個用于數(shù)據(jù)寫入(數(shù)據(jù)R塊1020),一個用于更新SLM寫入(SLM(映射)R塊1030),一個用于數(shù)據(jù)結(jié)構(gòu)檢查點寫入,諸如FLM的部分(檢查點FIFOR塊1040),對應于相應數(shù)據(jù)、映射以及以流形式管理的檢查點記錄帶?!凹o元”元素對應于時間標記,例如,相應報頭中的時間戳(諸如圖5的紀元523所示)。在圖10中,根據(jù)相應流順序,時間從左至右為最不接近至最接近。進一步地,該圖還表示每個流中的寫入順序,諸如通過NVM的頁面受到寫入NVM的粒度的限制。具有NVM的頁面中的一個的元素從概念上看按示出的順序?qū)懭?,即使同時進行物理寫入。因而,數(shù)據(jù)R塊的元素按以下順序?qū)懭耄杭o元-11021E(最不接近),數(shù)據(jù)-11021、紀元-21022E,數(shù)據(jù)-21022、紀元-31023E,數(shù)據(jù)-31023(最接近)。映射R塊的元素按以下順序?qū)懭耄杭o元-11031E(最不接近),SLM-11031、紀元-21032E,SLM-21032、紀元-31033E,SLM-31033(最接近)。檢查點映射R塊的元素按以下順序?qū)懭耄杭o元-11041E(最不接近),F(xiàn)LM-11041、紀元-21042E,F(xiàn)LM-21042、紀元-31043E,F(xiàn)LM-31043(最接近)。
[0480] 數(shù)據(jù)R塊中的信息具有精確一致性,因為數(shù)據(jù)R塊中的信息確定已經(jīng)將什么有效存儲在NVM中。精確一致性指的是支持來自寫入NVM的數(shù)據(jù)結(jié)構(gòu)的最新部分的數(shù)據(jù)結(jié)構(gòu)的有效狀態(tài)的完全恢復的數(shù)據(jù)結(jié)構(gòu)(包括寫入NVM的數(shù)據(jù))的屬性。精確一致性與多個數(shù)據(jù)結(jié)構(gòu)之間的一致性不同。例如,兩個數(shù)據(jù)結(jié)構(gòu)各自具有精確一致性,但彼此不一致,因為數(shù)據(jù)結(jié)構(gòu)中的一個反映了其他數(shù)據(jù)結(jié)構(gòu)中不存在的狀態(tài)變化。在某些實施方式和/或使用場景下,恢復的目的是確定自最近可能時間起彼此同樣一致的數(shù)據(jù)結(jié)構(gòu)的精確想干版本。
[0481] 映射R塊中的信息是更新SLM頁面的類似FIFO的流,并且用于維持如至少部分存儲在映射R塊中的SLM的精確相干。在某些情況下,映射R塊中的信息與寫入NVM的數(shù)據(jù)不一致,諸如由于與數(shù)據(jù)R塊中的信息不一致的SLM頁面,例如由于比數(shù)據(jù)R塊中的對應信息更新的SLM頁面。
[0482] 檢查點R塊中的信息是FLM和其他數(shù)據(jù)結(jié)構(gòu)的部分或所有的FIFO(或流),并且用于維持FLM的精確想干和其他數(shù)據(jù)結(jié)構(gòu)的精確或近似想干。然而,類似于映射R塊,在某些情況下,檢查點R塊中的信息與其他R塊中的信息不一致,諸如比映射或數(shù)據(jù)R塊中的對應信息更新的FLM條目。
[0483] 在某些實施方式和/或使用場景下,檢查點FIFO中存儲的某些數(shù)據(jù)結(jié)構(gòu)僅大致想干或與其他數(shù)據(jù)結(jié)構(gòu)不一致。在第一示例中,針對NVM中的每個塊維持讀取干擾計數(shù),并且在多個部分中的檢查點FIFO中對讀取干擾計數(shù)進行檢查點設(shè)置,例如,隨時間均勻分布的一次四分之一的讀取干擾計數(shù)。當恢復讀取干擾計數(shù)時,恢復的讀取干擾計數(shù)不與使用中的讀取干擾計數(shù)的任意版本相干,因為四個部分中的每一個都來自不同時間點。在第二示例中,在檢查點FIFO中對R塊使用信息進行檢查點設(shè)置,但不需要對應時間戳?;謴瓦^程中恢復的R塊使用信息的最新版本是相干的,但在某些情況下,與其他數(shù)據(jù)結(jié)構(gòu)不一致。
[0484] 從概念上看,該圖表示恢復操作期間的流優(yōu)先級。R塊的數(shù)據(jù)流中的信息優(yōu)先于R塊的映射流中的信息,而R塊的映射流中的信息優(yōu)先于R塊的檢查點流中的信息。因為流之間的寫入排序良好(同時,在某些實施方式和/或使用場景下,流中的每一個中的寫入排序良好),所以需要額外信息來確定流之間的寫入的一致性排序。在各種實施方式和/或使用場景下,時間戳和/或時間標記,諸如紀元值,可以確定寫入多個記錄帶和/或流的相對順序。
[0485] 如圖所示,寫入R塊的數(shù)據(jù)流、映射流和檢查點流彼此一致,如下。數(shù)據(jù)寫入中的每一個在與相應數(shù)據(jù)寫入對應的相應SLM更新之前,反之,SLM更新中的每一個在任意相應檢查點寫入之前,檢查點寫入包括(例如,作為FLM條目)相應SLM更新的指針。具體地,SLM-11031映射至數(shù)據(jù)-11021,并且在寫入紀元-11031E和SLM-11031開始之前完成數(shù)據(jù)-11021的寫入。進一步地,F(xiàn)LM-11041包括SLM-11031的指針,并且在寫入紀元-11041E和FLM-11041開始之前完成SLM-11031的寫入。類似依賴性和寫入排序適用于數(shù)據(jù)-21022,紀元-21032E和SLM-21032,以及紀元-21042E和FLM-21042,以及數(shù)據(jù)-31023,紀元-31033E和SLM-31033,和紀元-31043E和FLM-31043。
[0486] 在某些實施方式中,R塊的流之間的一致性用如下紀元值表示。紀元-11031E與紀元-11021E相同,或可替代地表示紀元-11031E在紀元-11021E之后寫入。紀元-11041E與紀元-11031E相同,或可替代地表示紀元-11041E在紀元-11031E之后寫入。類似地,紀元-21032E與紀元-21022E相同(或表示在其之后寫入),并且紀元-21042E與紀元-21032E相同(或表示在其之后寫入)。類似地,紀元-31033E與紀元-31023E相同(或表示在其之后寫入),并且紀元-31043E與紀元-31033E相同(或表示在其之后寫入)。
[0487] 在各種實施方式和/或使用場景下,保留每個流中的寫入順序,如圖所示。然而,R塊的流之間的相對寫入時間不同于圖所示的。例如,在寫入數(shù)據(jù)-2開始之前(但在寫入數(shù)據(jù)-11021完成之后),完成寫入紀元-21032E和SLM-21032。因而,SLM-21032相對于數(shù)據(jù)-21022暫時不一致,如表示比紀元-21032E表示的舊的階段的R塊的數(shù)據(jù)流的最新寫入時間標記)紀元-11021E)所表示的。如果在完成寫入紀元-21022E和數(shù)據(jù)-21022之前出現(xiàn)故障,則SLM-21032的臨時不一致性就變得持久。為了解決不一致性,后續(xù)恢復處理可丟棄SLM-21032(基于比紀元-11021E更新的紀元-21032E)。再如,如果繼在寫入R塊的映射流中的對應SLM更新之前寫入R塊的檢查點流中的FLM條目之后是故障和后續(xù)恢復處理(在寫入對應SLM更新之前),則恢復處理丟棄FLM條目。
[0488] 該圖示出了與FLM的所有條目對應的檢查點R塊的流的區(qū)域(完成FLM1050)。該區(qū)域與分多個部分(例如,塊)對FLM進行檢查點設(shè)置的某些實施方式對應。如圖所示,三個任選和/或可選重疊的部分(FLM-11041、FLM-21042和FLM-31043)集體形成FLM的所有條目的檢查點,盡管部分中的每一個來自不同時間,并因此本身不是FLM的相干圖像?;謴吞幚斫?jīng)啟用以從FLM和其他數(shù)據(jù)結(jié)構(gòu)的檢查點恢復FLM的相干且一致的版本。類似地,恢復處理經(jīng)啟用以從映射流和其他數(shù)據(jù)結(jié)構(gòu)中的映射的可能不相干副本恢復映射的相干且一致的版本。
[0489] 在某些實施方式中,部分通過確保以原子單元來執(zhí)行具體數(shù)據(jù)結(jié)構(gòu)的多個相關(guān)更新和具體數(shù)據(jù)結(jié)構(gòu)的后續(xù)時間戳設(shè)置,至少相對于具體數(shù)據(jù)結(jié)構(gòu)的檢查點,來維持具體數(shù)據(jù)結(jié)構(gòu)的一致性。例如,考慮在檢查點FIFO中進行檢查點設(shè)置的R塊使用計數(shù)數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)流中的數(shù)據(jù)寫入的具體數(shù)據(jù)寫入與數(shù)據(jù)流中的對應紀元值相關(guān)聯(lián)。具體數(shù)據(jù)寫入提高了包含數(shù)據(jù)寫入的R塊的使用率,并且降低包含與相同LBA相關(guān)聯(lián)的先前數(shù)據(jù)寫入作為具體數(shù)據(jù)寫入的R塊的使用率。根據(jù)數(shù)據(jù)寫入更新R塊使用計數(shù)數(shù)據(jù)結(jié)構(gòu)包括三個操作:提高包含數(shù)據(jù)寫入的R塊的使用計數(shù);降低包含先前數(shù)據(jù)寫入的R塊的使用計數(shù);以及給具有具體數(shù)據(jù)希爾的對應紀元值的R塊使用計數(shù)數(shù)據(jù)結(jié)構(gòu)蓋上時間戳。如果R塊使用計數(shù)數(shù)據(jù)結(jié)構(gòu)的檢查點經(jīng)啟用以便在執(zhí)行三個操作中的至少一個之后以及在完成所有三個操作之前發(fā)生,檢查點可記錄R塊使用計數(shù)數(shù)據(jù)結(jié)構(gòu)的不一致版本,并且諸如在電源故障之后的R塊使用計數(shù)數(shù)據(jù)結(jié)構(gòu)的恢復會導致不反映恢復之后的R塊的實際使用的不一致值。相應地,在各種實施方式中,相對于檢查點以原子方式執(zhí)行根據(jù)每個數(shù)據(jù)寫入的R塊使用計數(shù)數(shù)據(jù)結(jié)構(gòu)的相應更新。
[0490] 圖11示出了例如在故障之后恢復和/或重建FLM和SLM信息(諸如圖2和圖8中的一個或多個中所示的)和其他NVM管理數(shù)據(jù)結(jié)構(gòu)的所選細節(jié)作為FLM和SLM恢復處理1100。恢復和重建操作與結(jié)合如圖9和圖10的一個或多個中所示的自身日志記錄和層級一致性技術(shù)的操作兼容。
[0491] 如圖11所示的處理響應于故障之后的事件,例如恢復/重建請求、軟或硬重置或開機而開始(開始1101)。定位檢查點R塊的最后(例如,最新寫入的)R塊,并定位最后檢查點R塊中的最后(例如,最新寫入的)信息(定位FIFO結(jié)束1111)。然后,對連續(xù)比最新寫入的早的檢查點R塊的部分進行處理直至重建FLM的整個圖像為止。在某些實施方式中,F(xiàn)LM重建處理包括定位最新的FLM部分以及定位最舊時間標記(定位最新FLM塊和最舊紀元1112),然后自最舊時間標記起重建FLM(自最舊紀元1113起恢復FLM)。在某些實施方式和/或使用場景下,F(xiàn)LM的一個或多個稍后部分由于孔,諸如由于在電源發(fā)生故障時無法完成的寫入,而不與較早部分連接在一起。在恢復期間丟棄不與較早部分連接在一起的部分。
[0492] 在基于檢查點R塊重建FLM之后,比重建FLM更新(根據(jù)使用更新存儲的時間標記)的任何SLM更新適用于FLM(根據(jù)SLM更新來更新FLM1114)。然后,針對比任何對應SLM條目(根據(jù)數(shù)據(jù)更新來更新SLM1115)更新(根據(jù)使用寫入數(shù)據(jù)存儲的時間標記)的任何數(shù)據(jù)寫入來更新SLM。然后完成處理(結(jié)束1199),并且FLM、SLM和其他數(shù)據(jù)結(jié)構(gòu)是相干且一致的,以便用于操作SSD的NVM。
[0493] 在某些實施方式中,通過確保在預定量的紀元值中(稱為映射刷新間隔)將緩存的任何修改SLM條目刷新到NVM來限制進行處理以更新SLM的寫入數(shù)據(jù)的量。例如,每個修改SLM條目(或每個修改SLM頁面)自最后刷新相應修改SLM條目(或SLM頁面)起跟蹤修改的最早紀元值,并在相應修改SLM條目(或SLM頁面)在最新數(shù)據(jù)寫入之后多達10,000個紀元值之前刷新相應修改SLM條目(或SLM頁面)。當從更新的數(shù)據(jù)寫入重建SLM時,僅將最新的大約10,000個數(shù)據(jù)寫入(如通過紀元值測得的)視為SLM更新,因為任何舊數(shù)據(jù)寫入已經(jīng)被寫入NVM。
[0494] 在某些實施方式中,恢復處理針對數(shù)據(jù)流、映射流和檢查點FIFO中的每一個確定相應最新有效紀元和相應最早所需的紀元?;謴吞幚韽脑跈z查點FIFO的最早所需紀元和檢查點FIFO的最新有效紀元之間發(fā)現(xiàn)的FLM的部分恢復FLM。在映射流中的最早所需紀元和映射流中的最新有效紀元之間的映射流中發(fā)現(xiàn)的SLM更新適用于FLM,以便FLM與映射流一致。來自在數(shù)據(jù)流中的最早所需紀元和數(shù)據(jù)流中的最新有效紀元之間的數(shù)據(jù)流中發(fā)現(xiàn)的數(shù)據(jù)寫入的更新然后適用于SLM,以便SLM與數(shù)據(jù)流一致。在各種實施方式和/或使用場景下,諸如當緩存不能保持恢復所需的所有更新時,將更新從數(shù)據(jù)流中的數(shù)據(jù)寫入應用于SLM任選地和/或可選地將SLM條目和/或頁面從緩存刷新到映射流。在恢復期間刷新的SLM條目和/或頁面更新FLM的條目,反之在恢復期間任選地和/或可選地將FLM的一個或多個部分寫入檢查點FIFO。在各種實施方式中,恢復處理的完成將“恢復完成”標記,諸如具體類型的報頭,寫入一個或多個流。
[0495] 在某些實施方式中,數(shù)據(jù)流中的最新有效紀元是數(shù)據(jù)流中的最后寫入紀元值(對應于數(shù)據(jù)流中的數(shù)據(jù)寫入),該最后寫入紀元值與恢復所需的數(shù)據(jù)流的所有前述部分連接在一起。映射流中的最新有效紀元是映射流中的最后寫入紀元值(對應于映射流中的SLM條目和/或頁面寫入),且在數(shù)據(jù)流中的最新有效紀元處或之前,該最后寫入紀元值與恢復所需的映射流的所有前述部分連接在一起。檢查點FIFO中的最新有效紀元是檢查點FIFO中的最后寫入紀元值(對應于檢查點FIFO中的FLM的一部分),且在映射流中的最新有效紀元處或之前,該最后寫入紀元值與恢復所需的檢查點FIFO的所有前述部分連接在一起。在進一步的實施方式中,檢查點FIFO中的最新有效紀元也與一個或多個其他數(shù)據(jù)結(jié)構(gòu)的連續(xù)檢查點相關(guān)聯(lián),諸如與R塊使用空間數(shù)據(jù)結(jié)構(gòu)相關(guān)聯(lián)。
[0496] 在某些實施方式中,檢查點FIFO中的最早所需紀元是FLM的最新部分的紀元值,以便在檢查點FIFO中的最早所需紀元和檢查點FIFO中的最新有效紀元中獲得FLM的一個完整(盡管不相關(guān))版本。映射流中的最早所需紀元是映射流中的最新SLM條目和/或頁面的紀元值,該最早所需紀元是在檢查點FIFO中的最早所需紀元處或之前。數(shù)據(jù)流中的最早所需紀元是最新數(shù)據(jù)寫入的紀元值,該最早所需紀元在映射流中的最新有效紀元之前不遲于映射刷新間隔。
[0497] 在某些實施方式和/或使用場景下,諸如當已經(jīng)存在故障時,在恢復期間發(fā)現(xiàn)數(shù)據(jù)流中的孔。在孔之前的信息是有效的,而繼孔之后的信息是無效的。任選將日志記錄添加到數(shù)據(jù)流中(例如在恢復期間)以表示孔和恢復表示的開始之間的信息是無效的,而在開始恢復表示之后的信息是新有效信息的開始。在各種實施方式中,恢復表示的開始是表示恢復處理的開始特殊類型的報頭,諸如日志報頭。
[0498] 在某些情況下,恢復處理為相對低延遲。例如,如果在相對較長的時間內(nèi)沒有寫入或再循環(huán)時故障是功率損耗,則不存在適用于FLM的SLM更新,并且不存在尚未在SLM中反映的數(shù)據(jù)寫入??商娲?,在其他情況下,恢復處理為相對高延遲。例如,如果故障使得檢查點R塊和/或映射R塊全部或基本上不一致,則讀取存儲有效數(shù)據(jù)信息的所有數(shù)據(jù)R塊以重建FLM,并且SLM也整體重建。在其他情況下,恢復處理為中間延遲。例如,如果故障使得檢查點R塊完好無損,并且相對較少的映射更新尚未在檢查點R塊中反映出來,并且相對較少的數(shù)據(jù)寫入也尚未在映射R塊中反映出來,則需要對FLM和SLM進行相對較少的重建。
[0499] 在各種實施方式中,圖6-11的一個或多個元件與圖1A的一個或多個元件對應或相關(guān)。例如,圖6的設(shè)備601,…,609中的一個或多個集體對應于NVM199的所有或部分。再如,圖7的閃存芯片710.65,…,710.0集體對應于閃存芯片194的示例。對于又一示例,圖10中所示的R塊的流存儲在NVM199的所有或部分中。在各種實施方式中,圖1A的一個或多個元件管理、控制和/或?qū)崿F(xiàn)與本文其他地方描述的自身日志記錄和/或?qū)蛹壱恢滦杂嘘P(guān)的技術(shù)的所有或任意部分。例如,CPU171的軟件執(zhí)行能力的一部分用于管理映射信息的恢復(例如,如圖11所示)。再如,緩沖器131的所有或部分實現(xiàn)如圖9中所述的緩沖的所有或任意部分。
[0500] 額外實現(xiàn)/實施方式信息
[0501] 在各種實施方式中,如圖8-11所述的操作和/或功能的所有或任意部分例如由一個或多個狀態(tài)機實現(xiàn)。狀態(tài)機的示例性實現(xiàn)包括硬件(例如,邏輯和/或電路、專用狀態(tài)機電路或硬連線控制電路)、軟件(例如,固件或微碼)或硬件和軟件的組合。在某些實施方式中,狀態(tài)機中的一個或多個至少部分經(jīng)由一個或多個硬件圖像、一個或多個驅(qū)動和/或一個或多個應用程序來實現(xiàn)。作為具體示例,狀態(tài)機中的一個或多個部分經(jīng)由圖1A的SSD控制器100、部分經(jīng)由CPU內(nèi)核172執(zhí)行的固件、部分經(jīng)由圖1B的固件106、部分經(jīng)由驅(qū)動107和/或部分經(jīng)由應用程序109來實現(xiàn)。
[0502] 在各種實施方式中,由圖8-11所述的操作和/或功能的所有或任意部分例如在一致性管理179、轉(zhuǎn)換管理177和/或圖1A的映射中的任意一個或多個的控制下和/或根據(jù)其中任意一個或多個經(jīng)由硬件和/或固件技術(shù)的任意組合來實現(xiàn)。
[0503] 示例性實現(xiàn)技術(shù)
[0504] 在某些實施方式中,由實現(xiàn)自身日志記錄和層級一致性以管理非易失性存儲(例如,使用閃存)的系統(tǒng),計算主機閃存控制器,和/或SSD控制器(諸如圖1A的SSD控制器100)執(zhí)行的操作的所有或任意部分的各種組合,和處理器、微處理器、片上系統(tǒng)、專用集成電路、硬件加速器或提供上述操作中的所有或部分的其他電路的部分由與計算機系統(tǒng)進行的處理兼容的規(guī)范來指定。該規(guī)范符合各種描述,例如,硬件描述語言、電路描述、網(wǎng)表描述、掩碼描述或布局描述。示例描述包括:Verilog、VHDL、SPICE、SPICE變體諸如PSpice、IBIS、LEF、DEF、GDS-II、OASIS或其描述。在各種實施方式中,處理包括解釋、編譯、模擬和合成的任何組合以生成、驗證或指定適于包括在一個或多個集成電路上的邏輯和/或電路。根據(jù)各種實施方式,每個集成電路可根據(jù)多種技術(shù)來設(shè)計和/或制造。該技術(shù)包括可編程技術(shù)(例如,場或掩碼可編程門陣列集成電路)、半定制技術(shù)(諸如整體或部分基于單元的集成電路)和全定制技術(shù)(諸如基本上專用的集成電路)及其任意組合,或與集成電路的設(shè)計和/或制造兼容的其他任何技術(shù)。
[0505] 在某些實施方式中,通過執(zhí)行和/或解釋一個或多個程序指令,通過解釋和/或編譯一個或多個源和/或腳本語言語句,或通過執(zhí)行通過編譯、轉(zhuǎn)換和/或解釋以編程和/或腳本語言語句表達的信息生成的二進制指令來進行所有或部分如計算機可讀介質(zhì)所述的操作的各種組合,該計算機可讀介質(zhì)存儲有一組指令。語句與任何標準的編程或腳本語言(例如,C、C++、Fortran、Pascal、Ada、Java、VBscript和Shell)兼容。一個或多個程序指令、語言語句或二進制指令任選存儲在一個或多個計算機可讀存儲介質(zhì)元件上。在各種實施方式中,一些、所有或相應部分的程序指令實現(xiàn)為一種或多種功能、例程、子例程、線內(nèi)例程、過程、宏或其部分。
[0506] 結(jié)論
[0507] 在該說明書中作出的某些選擇僅僅是便于制備文本和附圖,除非有相反的表示,否則這些選擇本身不應解釋為表達所述實施方式的結(jié)構(gòu)或操作相關(guān)的額外信息。選擇的示例包括:用于數(shù)字編號的設(shè)計的具體組織或分配以及用于識別和引用實施方式的特征和元件的元件標識符(例如,插圖編號或數(shù)字標志符)的具體組織或分配。
[0508] 詞語“包括(includes)”或“包括(including)”具體意在被理解為對描述開放式范圍的邏輯組的抽象,且并不指傳達物理包含物,除非后面明確跟隨詞語“之內(nèi)”。
[0509] 盡管為了描述和理解清晰的目的,已在一些細節(jié)中描述了上述實施方式,但本發(fā)明不限于所提供的細節(jié)。有許多本發(fā)明的實施方式。所公開的實施方式是示例性的,而不是限制性的。
[0510] 應理解,構(gòu)造、布置和使用的許多變化可能與說明書一致,且處于已公布的專利的權(quán)利要求的范圍內(nèi)。例如,互連和功能單位的位寬度、時鐘速率和所使用的技術(shù)的類型根據(jù)每個組件塊中的各種實施方式而可變。給于互連和邏輯的名稱僅是示例性的,且不應被解釋為限制所描述的概念。流程圖和流程圖過程、動作和功能元件的順序和布置根據(jù)各種實施方式可變化。同樣地,除非特別說明與此相反,否則指定的值范圍、使用的最高值和最低值或其他具體的規(guī)范(諸如閃存技術(shù)類型;以及寄存器和緩存器中的條目或級別的數(shù)量)僅是所描述那些實施方式,期望跟蹤實現(xiàn)技術(shù)的改進和變化,且不應被解釋為限制。
[0511] 可采用本技術(shù)已知的功能等效的技術(shù),而不是用于實現(xiàn)各種組件、子系統(tǒng)、操作、功能、例程、子例程、在線例程、程序、宏或其部分的那些所述技術(shù)。還應理解,實施方式中的許多功能方面可在硬件(即,一般專用電路)或軟件(例如,經(jīng)由編程的控制器或處理器的某些方式)中選擇性實現(xiàn),以作為取決于設(shè)計約束和更快處理的技術(shù)趨勢(促使先前在硬件中的功能遷移至軟件)和更高的集成密度(促使先前在軟件中的功能遷移至硬件)的實施方式的功能。各種實施方式中的具體變化包括但不限于:劃分的差異;不同的形狀因數(shù)和配置;使用不同的操作系統(tǒng)和其他系統(tǒng)軟件;使用不同接口標準、網(wǎng)絡(luò)協(xié)議或通信鏈路;以及當根據(jù)具體應用的獨特工程和商業(yè)限制實現(xiàn)在本文中描述的概念時預期的其他變化。
[0512] 已通過很好地超越需要用于所描述的實施方式的很多方面的最小實現(xiàn)的細節(jié)和環(huán)境背景描述了實施方式。本領(lǐng)域的普通技術(shù)人員將認識到,一些實施方式省略了公開的組件或特征,且無需改變剩余元件之間的基本合作。因此,應理解多數(shù)公開的細節(jié)不需要實現(xiàn)所描述的實施方式的各方面。在剩余元件可與現(xiàn)有技術(shù)相區(qū)別的范圍內(nèi),被省略的組件和特征不限于本文中所描述的概念。
[0513] 設(shè)計的所有這些變化是在由所描述的實施方式傳達的教學上的非實質(zhì)性變化。還應理解,本文中描述的實施方式對其他的計算和網(wǎng)絡(luò)應用具有廣泛的實用性,且并不僅限于所描述的實施方式的具體應用或行業(yè)。因此,本發(fā)明將被解釋為包括涵蓋在所公布的專利的權(quán)利要求的范圍內(nèi)的所有可能的修改和變更。
高效檢索全球?qū)@?/div>

專利匯是專利免費檢索,專利查詢,專利分析-國家發(fā)明專利查詢檢索分析平臺,是提供專利分析,專利查詢,專利檢索等數(shù)據(jù)服務功能的知識產(chǎn)權(quán)數(shù)據(jù)服務商。

我們的產(chǎn)品包含105個國家的1.26億組數(shù)據(jù),免費查、免費專利分析。

申請試用

分析報告

專利匯分析報告產(chǎn)品可以對行業(yè)情報數(shù)據(jù)進行梳理分析,涉及維度包括行業(yè)專利基本狀況分析、地域分析、技術(shù)分析、發(fā)明人分析、申請人分析、專利權(quán)人分析、失效分析、核心專利分析、法律分析、研發(fā)重點分析、企業(yè)專利處境分析、技術(shù)處境分析、專利壽命分析、企業(yè)定位分析、引證分析等超過60個分析角度,系統(tǒng)通過AI智能系統(tǒng)對圖表進行解讀,只需1分鐘,一鍵生成行業(yè)專利分析報告。

申請試用

QQ群二維碼
意見反饋