[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ā)生順序早于相應條目部分的對應時間戳部分。
[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ù)寫入與主機交互。
[0247] EC116)根據(jù)EC61、EC68、EC102或EC110所述的有形計算機可讀介質(zhì),其中主機是計算主機,并且進一步包括根據(jù)數(shù)據(jù)寫入來操作計算主機。
[0252] 經(jīng)啟用以按第二順序?qū)⒁幌盗袛?shù)據(jù)映射單元排列在NVM中的第二硬件邏輯電路,數(shù)據(jù)映射單元中的每一個與時間戳中的相應的一個相關(guān)聯(lián);
[0254] 其中與數(shù)據(jù)單元中的每一個相關(guān)聯(lián)的相應時間戳在與對應數(shù)據(jù)映射單元相關(guān)聯(lián)的相應時間戳處或之前。
[0255] EC120)根據(jù)EC119所述的裝置,其中第一硬件邏輯電路的至少一部分是共享硬件邏輯電路,該共享硬件邏輯電路也是第二硬件邏輯電路的至少一部分。
[0258] 數(shù)據(jù)單元中的前一個數(shù)據(jù)單元和后一個數(shù)據(jù)單元對應于至相應LBA中的同一個LBA的數(shù)據(jù)寫入中的數(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)的相應時間戳之后。
[0267] 經(jīng)啟用以將一系列數(shù)據(jù)存儲單元寫入非易失性存儲器(NVM)的第一硬件邏輯電路,數(shù)據(jù)存儲單元中的每一個與多個時間戳中的相應的一個相關(guān)聯(lián);
[0268] 經(jīng)啟用以將一系列數(shù)據(jù)映射單元寫入NVM的第二硬件邏輯電路,數(shù)據(jù)映射單元中的每一個與時間戳中的相應的一個相關(guān)聯(lián);
[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中。
[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ù)映射單元的第五硬件邏輯電路。
[0284] 經(jīng)啟用以根據(jù)存儲流將多個存儲單元寫入非易失性存儲器(NVM)的第一硬件邏輯電路,存儲單元中的每一個包括數(shù)據(jù)部分和對應時間戳部分;
[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,其中存儲接口標準包括以下各項中的一項或多項:
[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] 工作站計算機,
[0323] 存儲服務器,
[0324] 存儲附接網(wǎng)絡(luò)(SAN),
[0325] 網(wǎng)絡(luò)附接存儲(NAS)設(shè)備,
[0326] 直接附接存儲(DAS)設(shè)備,
[0327] 存儲器具,
[0328] 個人計算機(PC),
[0329] 膝上電腦,
[0331] 上網(wǎng)本電腦,
[0332] 平板設(shè)備或電腦,
[0333] 超極本電腦,
[0334] 電子閱讀設(shè)備(電子閱讀器),
[0335] 個人數(shù)字助理(PDA),
[0337] (手持式)全球定位系統(tǒng)(GPS)設(shè)備,
[0339] 汽車媒體控制系統(tǒng)或計算機,
[0340]
打印機、復印機或傳真機或多合一設(shè)備,
[0341] 銷售點(POS)設(shè)備,
[0342] 現(xiàn)金出納機,
[0343] 媒體播放器,
[0344] 電視機,
[0345] 媒體記錄器,
[0346] 數(shù)字視頻錄像機(DVR),
[0348] 蜂窩手機,無繩電話手機,以及
[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)的所有可能的修改和變更。