相關(guān)申請(qǐng)的交叉引用
本申請(qǐng)要求于2016年1月15日提交的美國(guó)臨時(shí)專(zhuān)利申請(qǐng)62/279,655的權(quán)益,其內(nèi)容用于所有目的通過(guò)引用全部并入本文。
本公開(kāi)涉及存儲(chǔ)設(shè)備,尤其是,版本化存儲(chǔ)設(shè)備和方法。
背景技術(shù):
存儲(chǔ)設(shè)備可能以影響延遲的方式運(yùn)行。例如,數(shù)據(jù)以頁(yè)為單位寫(xiě)到固態(tài)存儲(chǔ)設(shè)備/驅(qū)動(dòng)器(ssd)。塊從多個(gè)頁(yè)創(chuàng)建。閃速存儲(chǔ)器(flashmemory)僅能以塊為單位擦除。如果不再需要塊中的一些頁(yè),則在該塊中的其他有效頁(yè)被讀取并寫(xiě)到另一個(gè)塊以釋放舊塊。然后舊塊可以被擦除。這個(gè)過(guò)程被稱(chēng)為垃圾回收。
垃圾回收可能增加存儲(chǔ)設(shè)備的延遲時(shí)間。特別是,當(dāng)執(zhí)行垃圾回收時(shí)ssd可能無(wú)法處理讀和/或?qū)懻?qǐng)求。其結(jié)果是,進(jìn)入的讀/寫(xiě)請(qǐng)求可能被延遲直到垃圾回收已完成。
某些硬盤(pán)驅(qū)動(dòng)器使用疊瓦式磁記錄(shingledmagneticrecording)。使用疊瓦式磁記錄,磁道在存儲(chǔ)介質(zhì)上重疊。當(dāng)存儲(chǔ)在磁道數(shù)據(jù)被修改,并且磁道被重寫(xiě)時(shí),重疊的磁道還必須能讀和重寫(xiě)。當(dāng)被執(zhí)行時(shí),這些額外的操作增加延遲。
技術(shù)實(shí)現(xiàn)要素:
實(shí)施例包括存儲(chǔ)設(shè)備,包括:存儲(chǔ)器;控制器,包括耦合到存儲(chǔ)器的存儲(chǔ)器接口,控制器被配置為:接收寫(xiě)數(shù)據(jù)以寫(xiě)到與存儲(chǔ)在存儲(chǔ)器的第一數(shù)據(jù)和存儲(chǔ)在存儲(chǔ)器中的第一差分壓縮值相關(guān)聯(lián)的地址;基于寫(xiě)數(shù)據(jù)和第一數(shù)據(jù)計(jì)算第二差分壓縮值;將第二差分壓縮值存儲(chǔ)在存儲(chǔ)器中;及以改變地址的關(guān)聯(lián)以引用第二差分壓縮值而不是第一差分壓縮值。
實(shí)施例包括一種方法,包括:接收寫(xiě)數(shù)據(jù)以寫(xiě)到與存儲(chǔ)在存儲(chǔ)器的第一數(shù)據(jù)和存儲(chǔ)在存儲(chǔ)器中的第一差分壓縮值相關(guān)聯(lián)的地址;基于寫(xiě)數(shù)據(jù)和第一數(shù)據(jù)計(jì)算第二差分壓縮值;將第二差分壓縮值存儲(chǔ)在存儲(chǔ)器中;以及改變地址的關(guān)聯(lián)以引用第二差分壓縮值而不是第一差分壓縮值。
實(shí)施例包括一種系統(tǒng),包括:通信接口;以及通過(guò)通信接口耦合到存儲(chǔ)器的處理器,該處理器被配置為:接收寫(xiě)數(shù)據(jù)以寫(xiě)到與存儲(chǔ)在存儲(chǔ)器的第一數(shù)據(jù)和存儲(chǔ)在存儲(chǔ)器中的第一差分壓縮值相關(guān)聯(lián)的地址;基于寫(xiě)數(shù)據(jù)和第一數(shù)據(jù)計(jì)算第二差分壓縮值;將第二差分壓縮值存儲(chǔ)在存儲(chǔ)器中;以及改變地址的關(guān)聯(lián)以引用第二差分壓縮值而不是第一差分壓縮值。
附圖說(shuō)明
圖1是根據(jù)一些實(shí)施例的存儲(chǔ)設(shè)備的示意圖。
圖2a至圖2e是根據(jù)一些實(shí)施例的寫(xiě)到存儲(chǔ)設(shè)備的示意圖。
圖3a至圖3e是根據(jù)一些實(shí)施例的從存儲(chǔ)設(shè)備讀取的示意圖。
圖4a至圖4b是根據(jù)一些實(shí)施例的存儲(chǔ)設(shè)備的示意圖。
圖5是根據(jù)一些實(shí)施例的存儲(chǔ)設(shè)備中的頁(yè)大小的示意圖。
圖6是根據(jù)一些實(shí)施例的固態(tài)存儲(chǔ)設(shè)備的示意圖。
圖7是根據(jù)一些實(shí)施例的具有版本化存儲(chǔ)系統(tǒng)的系統(tǒng)的示意圖。
圖8是根據(jù)實(shí)施例的服務(wù)器的示意圖。
圖9是根據(jù)實(shí)施例的服務(wù)器系統(tǒng)的示意圖。
圖10是根據(jù)實(shí)施例的數(shù)據(jù)中心的示意圖。
具體實(shí)施方式
該實(shí)施例涉及版本化存儲(chǔ)設(shè)備和方法。給出以下描述以使本領(lǐng)域的普通技術(shù)人員能夠制造和使用本實(shí)施例,并且以下描述是在專(zhuān)利申請(qǐng)及其要求的上下文中提供的。對(duì)實(shí)施例的各種修改以及本文所述的一般原理和特征將是顯而易見(jiàn)的。實(shí)施例主要是依據(jù)在特定的實(shí)現(xiàn)中提供的具體方法、設(shè)備和系統(tǒng)進(jìn)行說(shuō)明。
然而,所述方法、設(shè)備和系統(tǒng)將在其它的實(shí)現(xiàn)中有效地操作。諸如”實(shí)施例”、”一個(gè)實(shí)施例”和”另一實(shí)施例”可能指相同或不同的實(shí)施例以及多個(gè)實(shí)施例。將相對(duì)于具有特定組件的系統(tǒng)和/或設(shè)備描述實(shí)施例。然而,所述系統(tǒng)和/或設(shè)備可包括比示出的那些更多或更少的部件,并且可以對(duì)組件的布置和類(lèi)型做出變化而不脫離本公開(kāi)范圍。實(shí)施例也將在具有某些操作的特定方法的上下文中描述。然而,所述方法和系統(tǒng)可以根據(jù)與實(shí)施例不一致的具有不同和/或額外的操作以及不同順序和/或并行的操作的其他方法操作。因此,實(shí)施例并不旨在限于示出的具體實(shí)施例,而是將被賦予與本文所描述的原理和特征一致的最廣范圍。
實(shí)施例在具有某些部件的特定系統(tǒng)或設(shè)備的上下文中描述。本領(lǐng)域的普通技術(shù)人員將容易認(rèn)識(shí)到,實(shí)施例與具有其它和/或額外組件和/或其它特征的系統(tǒng)或設(shè)備的使用相一致。也可在單個(gè)元件的上下文中描述方法、設(shè)備和系統(tǒng)。然而,本領(lǐng)域的普通技術(shù)人員將容易認(rèn)識(shí)到,方法和系統(tǒng)與具有多個(gè)元件的體系結(jié)構(gòu)的使用相一致。
本領(lǐng)域技術(shù)人員將理解,在一般情況下,本文,特別是在所附權(quán)利要求(例如,所附權(quán)利要求的主體)所用的術(shù)語(yǔ)一般旨在作為“開(kāi)放式”術(shù)語(yǔ)(例如,術(shù)語(yǔ)“包括了”應(yīng)被理解為“包括了但不限于”,術(shù)語(yǔ)“具有”應(yīng)該被理解為“具有至少”,術(shù)語(yǔ)“包括”應(yīng)被理解為“包括但不限于”,等等)。本領(lǐng)域的人員還將理解,如果旨在指定所引入的權(quán)利要求陳述的特定數(shù)量,則這樣的意圖將明確地陳述,并且如果不存在這樣的陳述,則不存在這樣的意圖。例如,為幫助理解,下面的所附權(quán)利要求可以含有對(duì)引導(dǎo)性短語(yǔ)“至少一個(gè)”和“一個(gè)或多個(gè)”的使用,以引入權(quán)利要求的陳述。然而,即使當(dāng)相同的權(quán)利要求包括引導(dǎo)短語(yǔ)“一個(gè)或多個(gè)”或“至少一個(gè)”和諸如“一”或“一個(gè)”的不定冠詞(例如,“一”和/或“一個(gè)”應(yīng)被解釋為是指“至少一個(gè)”或“一個(gè)或多個(gè)”)時(shí),使用這樣的短語(yǔ)不應(yīng)被理解為暗示通過(guò)不定冠詞“一”或“一個(gè)”所引入的權(quán)利要求陳述會(huì)限制含有這樣引入的權(quán)利要求陳述為僅包含一個(gè)這樣的陳述的例子的任何特定權(quán)利要求;對(duì)于用于引入權(quán)利要求陳述的定冠詞的使用同樣適用。此外,在其中使用了類(lèi)似于“a、b或c等中的至少一個(gè)”的那些實(shí)例中,通常這樣的造句的意圖是本領(lǐng)域技術(shù)人員將理解該約定的某種意義上(例如,“具有a、b或c中的至少一個(gè)的系統(tǒng)”將包括但不局限于具有單個(gè)a、單個(gè)b、單個(gè)c、a和b兩者、a和c兩者、b和c兩者和/或a、b和c三者等的系統(tǒng))。本領(lǐng)域技術(shù)人員還將理解,無(wú)論在說(shuō)明書(shū)、權(quán)利要求書(shū)或附圖中,事實(shí)上任何表示兩個(gè)或多個(gè)可選術(shù)語(yǔ)的析取詞語(yǔ)和/或短語(yǔ),應(yīng)該被理解為旨在包括術(shù)語(yǔ)中的一個(gè)、術(shù)語(yǔ)中的任一個(gè)或術(shù)語(yǔ)兩者的可能性。例如,短語(yǔ)“a或b”將被理解為包括“a”或“b”或“a和b”的可能性。
圖1是根據(jù)一些實(shí)施例的存儲(chǔ)設(shè)備的示意圖。在一些實(shí)施例中,存儲(chǔ)設(shè)備100包括控制器102和存儲(chǔ)器104??刂破?02是被配置為管理存儲(chǔ)設(shè)備100的操作的電路,并且包括諸如通用處理器、數(shù)字信號(hào)處理器(dsp)、專(zhuān)用集成電路、微控制器、可編程邏輯器件、分立電路、這些設(shè)備的組合等的組件。控制器102可以包括諸如寄存器、高速緩沖存儲(chǔ)器、處理內(nèi)核等的內(nèi)部部分,還可以包括諸如地址和數(shù)據(jù)總線接口、中斷接口等的外部接口。盡管在存儲(chǔ)設(shè)備100中只示出了一個(gè)控制器102,但可以存在多個(gè)控制器102。此外,諸如緩沖區(qū)、存儲(chǔ)器接口電路、通信接口等的其它的接口設(shè)備,可以是存儲(chǔ)設(shè)備100的一部分,以連接控制器102到內(nèi)部和外部組件。
在一些實(shí)施例中,控制器102包括通信接口,其包括使存儲(chǔ)設(shè)備100能夠通信的電路。例如,通信接口可以包括通用串行總線(usb)、小型計(jì)算機(jī)系統(tǒng)接口(scsi)、外圍組件互連快速(pcie)、串行連接scsi(sas)、并行ata(pata)、串行ata(sata)、nvm快速(nvme)、通用快閃存儲(chǔ)(ufs)、光纖通道、以太網(wǎng)、遠(yuǎn)程直接存儲(chǔ)器訪問(wèn)(rdma)、無(wú)限帶寬或其它接口。使用這樣的通信接口,存儲(chǔ)設(shè)備100可以被配置為通過(guò)關(guān)聯(lián)媒介與外部設(shè)備和系統(tǒng)進(jìn)行通信。在一些實(shí)施例中,控制器102被配置為通過(guò)通信接口接收讀和寫(xiě)請(qǐng)求。
存儲(chǔ)器104是能夠存儲(chǔ)數(shù)據(jù)的任何設(shè)備。這里,示出了一個(gè)存儲(chǔ)器104作為存儲(chǔ)設(shè)備100;然而,在存儲(chǔ)設(shè)備100中可以包括任何數(shù)量的存儲(chǔ)器104,包括不同類(lèi)型的存儲(chǔ)器。存儲(chǔ)器104的例子包括動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、根據(jù)各種標(biāo)準(zhǔn)如ddr、ddr2、ddr3、ddr4的雙倍數(shù)據(jù)速率同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(ddrsdram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、諸如閃速存儲(chǔ)器的非易失性存儲(chǔ)器諸、自旋轉(zhuǎn)移力矩磁阻隨機(jī)存取存儲(chǔ)器(stt-mram)、相變r(jià)am,納米浮柵存儲(chǔ)器(nfgm)或聚合物隨機(jī)存取存儲(chǔ)器(poram)磁或光媒介等。
存儲(chǔ)器104被配置為存儲(chǔ)數(shù)據(jù)106、差分壓縮值(dcv(多個(gè)))108和映射表110。如將在下面進(jìn)一步詳細(xì)描述的,存儲(chǔ)器104可以包括多個(gè)存儲(chǔ)器設(shè)備存儲(chǔ),并且在存儲(chǔ)器104中的數(shù)據(jù)可以以各種方式分布在這樣的設(shè)備之中;然而,為了方便起見(jiàn),在這里數(shù)據(jù)將被描述為存儲(chǔ)在單個(gè)存儲(chǔ)器104中。
控制器102包括耦合到存儲(chǔ)器104的存儲(chǔ)器接口111??刂破?02被配置為通過(guò)存儲(chǔ)器接口111訪問(wèn)存儲(chǔ)器104。存儲(chǔ)器接口111可以包括控制器102和存儲(chǔ)器104通過(guò)其進(jìn)行通信的命令、地址和/或數(shù)據(jù)總線的接口。盡管存儲(chǔ)器104被示出為和控制器102分開(kāi),但在一些實(shí)施例中,存儲(chǔ)器104的部分,諸如高速緩沖存儲(chǔ)器、sra等,是控制器102的一部分??刂破?02可以包括內(nèi)部通信總線,諸如處理內(nèi)核、外部通信接口、高速緩沖存儲(chǔ)器等的內(nèi)部組件通過(guò)其進(jìn)行通信。
數(shù)據(jù)106代表已存儲(chǔ)在存儲(chǔ)設(shè)備100中的數(shù)據(jù)。如將在下面進(jìn)一步詳細(xì)描述的,dcv(多個(gè))108代表當(dāng)與相關(guān)聯(lián)的數(shù)據(jù)106相組合時(shí),代表存儲(chǔ)在存儲(chǔ)設(shè)備100中的當(dāng)前數(shù)據(jù)的數(shù)據(jù)。在一些實(shí)施例中,dcv108是具有小于相應(yīng)的數(shù)據(jù)106的大小的大小的值。例如,數(shù)據(jù)106和dcv108可以各自存儲(chǔ)在具有不同大小的頁(yè)中。在本例中,數(shù)據(jù)106的頁(yè)的大小為8k字節(jié)。相比之下,相應(yīng)的dcv108的頁(yè)大小為4k字節(jié)。盡管已使用特定的大小作為例子,在其他實(shí)施例中,大小是不同的。
控制器102被配置為接收帶有寫(xiě)數(shù)據(jù)的寫(xiě)請(qǐng)求以寫(xiě)到與存儲(chǔ)在存儲(chǔ)器104中的數(shù)據(jù)106和存儲(chǔ)在存儲(chǔ)器104中的第一dcv108相關(guān)聯(lián)的地址。映射表110包括具有諸如邏輯地址、物理地址、dcv地址/值的信息的條目以創(chuàng)建地址/值或其他信息之間的關(guān)聯(lián)。映射表110可以使用頁(yè)、塊或混合映射策略;然而,本文中的實(shí)施例將使用塊映射作為例子。
控制器102被配置為使用存儲(chǔ)在映射表110中的數(shù)據(jù)以識(shí)別與邏輯地址相關(guān)聯(lián)的物理地址、dcv108等。例如,在通過(guò)通信接口接收到帶有邏輯地址的讀或?qū)懻?qǐng)求之后,控制器102被配置為訪問(wèn)映射表110以讀取與邏輯地址相關(guān)聯(lián)的條目。在一些實(shí)施例中,控制器102被配置為訪問(wèn)存儲(chǔ)映射表110的內(nèi)部高速緩存存儲(chǔ)器;然而,在其他實(shí)施例中,控制器102被配置為訪問(wèn)例如dram的外部存儲(chǔ)器。
控制器102被配置為讀取存儲(chǔ)在與邏輯地址相關(guān)聯(lián)的存儲(chǔ)器104的物理地址上的數(shù)據(jù)106??刂破?02被配置為基于包括在寫(xiě)請(qǐng)求中的寫(xiě)數(shù)據(jù)和從物理地址讀取的數(shù)據(jù)106來(lái)計(jì)算dcv。該計(jì)算基于存儲(chǔ)在物理地址上的數(shù)據(jù)106和進(jìn)入的寫(xiě)數(shù)據(jù)之間的差生成dcv。此外,該計(jì)算生成具有大小比從物理地址讀取的數(shù)據(jù)和/或?qū)憯?shù)據(jù)106小的dcv。
可以以各種不同的方式來(lái)計(jì)算dcv。在一些實(shí)施例中,控制器102被配置為在軟件或內(nèi)部電路中計(jì)算dcv。dcv函數(shù)109-1代表控制器102的這個(gè)操作。也即,在控制器102已經(jīng)從物理地址接收到寫(xiě)數(shù)據(jù)和讀數(shù)據(jù)106之后,控制器102被配置為使用寫(xiě)數(shù)據(jù)和從存儲(chǔ)器104讀取的數(shù)據(jù)106來(lái)執(zhí)行數(shù)學(xué)計(jì)算以生成dcv。在其它實(shí)施例中,控制器102使用外部電路來(lái)計(jì)算dcv。例如,控制器102被配置為將寫(xiě)數(shù)據(jù)和讀數(shù)據(jù)引導(dǎo)到dcv電路109-2,并且作為響應(yīng),dcv電路109-2被配置為生成dcv。dcv電路109-2包括運(yùn)算單元、查找表、輸入/輸出緩沖器等,以計(jì)算dcv并與控制器102和/或存儲(chǔ)器104連接。dcv電路109-2以虛線示出以指示其可以作為控制器102的dcv函數(shù)109-1的替代和/或與其配合來(lái)使用。
可以使用由控制器102直接地或通過(guò)dcv電路109-2間接地執(zhí)行的各種函數(shù)生成dcv。在一些實(shí)施例中,函數(shù)是簡(jiǎn)單的減法操作。在其他實(shí)施例中,函數(shù)是更復(fù)雜的散列函數(shù)。在其它實(shí)施例中,可以創(chuàng)建記錄指示哪些位已翻轉(zhuǎn)。在一些實(shí)施例中,函數(shù)可以被稱(chēng)為“diff”函數(shù)。在特定的實(shí)施例中,函數(shù)被優(yōu)化以減小dcv的大小。在一些實(shí)施例中,函數(shù)包括壓縮函數(shù)以減小差別的大小。
控制器102還被配置為直接地或通過(guò)dcv電路109-2間接地執(zhí)行dcv函數(shù)的反函數(shù)。反dcv函數(shù)是使用源數(shù)據(jù)和從源數(shù)據(jù)以及差別數(shù)據(jù)生成的dcv作為輸入,以重新生成差別數(shù)據(jù)的函數(shù)。因此,通過(guò)保持?jǐn)?shù)據(jù)106和dcv108,可以通過(guò)反dcv函數(shù)獲得差別數(shù)據(jù)。
控制器102被配置為在存儲(chǔ)器104中存儲(chǔ)計(jì)算出的dcv。例如,控制器102被配置為將計(jì)算出的dcv和dcv(多個(gè))108存儲(chǔ)在存儲(chǔ)器104中。然而,如將在下面進(jìn)一步詳細(xì)描述的,在其他實(shí)施例中,在和dcv(多個(gè))108一起存儲(chǔ)之前,dcv可以被高速緩存在存儲(chǔ)器104中的一個(gè)或多個(gè)其他部分中。
控制器102被配置為改變地址的關(guān)聯(lián)來(lái)引用計(jì)算出的dcv而不是較早的與地址相關(guān)聯(lián)的dcv。如將在下面進(jìn)一步詳細(xì)描述的,當(dāng)讀取了與地址相關(guān)聯(lián)的數(shù)據(jù)106時(shí),現(xiàn)在將訪問(wèn)新的dcv而不是較早的dcv。換句話說(shuō),在一些實(shí)施例中,僅保持一個(gè)dcv以代表與地址相關(guān)聯(lián)的數(shù)據(jù)。
在一些實(shí)施例中,存儲(chǔ)器104的至少一部分具有相對(duì)于寫(xiě)的非對(duì)稱(chēng)的性能。例如,基于閃速存儲(chǔ)器的存儲(chǔ)設(shè)備不允許原地寫(xiě)。必須分配新的塊用于寫(xiě),并且為了準(zhǔn)備未來(lái)的寫(xiě),先前的塊必須被擦除。在具有疊瓦磁記錄的存儲(chǔ)設(shè)備中,向與另一磁道重疊的磁道寫(xiě)包括重寫(xiě)重疊的磁道。如將在下面進(jìn)一步詳細(xì)描述的,通過(guò)使用dcv(多個(gè)),可以減小不對(duì)稱(chēng)性能的效果。
圖2a至圖2e是根據(jù)一些實(shí)施例的向存儲(chǔ)設(shè)備寫(xiě)的示意圖。將使用圖1的存儲(chǔ)設(shè)備作為例子。參照?qǐng)D1和圖2a,在一些實(shí)施例中,映射表210對(duì)應(yīng)于存儲(chǔ)在存儲(chǔ)器104的映射表110。映射表210包括多個(gè)條目211。每個(gè)條目211包括用于邏輯塊地址(lba)、物理塊地址(pba)以及dcv的指示的字段。盡管已使用特定字段作為例子,但在其它實(shí)施例中,可以存在其他字段和/或字段可以采取不同的形式。例如,在這里,邏輯和物理地址與塊相關(guān)聯(lián);然而,在其他實(shí)施例中,邏輯和物理地址可以與塊中的頁(yè)或存儲(chǔ)器104的其他組織相關(guān)聯(lián)。在其他實(shí)施例中,單個(gè)地址,如物理地址,可以是僅有的存在的地址。
在映射表210中,兩個(gè)條目211-1和211-2是預(yù)先存在的條目。當(dāng)接收到向新的邏輯塊地址的寫(xiě)請(qǐng)求202-1時(shí),由控制器102創(chuàng)建新條目211-3。在本例中,新條目211-3用于邏輯塊地址1??刂破?02已將邏輯塊地址1與物理塊地址23相關(guān)聯(lián)。然而,由于與物理塊地址相關(guān)聯(lián)的唯一數(shù)據(jù)是輸入數(shù)據(jù)d,例如,數(shù)據(jù)d與新的文件相關(guān)聯(lián),所以dcv未被計(jì)算。也就是說(shuō),在數(shù)據(jù)存儲(chǔ)器204-1中的物理地址23上不存在有效的數(shù)據(jù)。dcv字段中的”x”代表dcv不存在或者無(wú)效的指示。在一些實(shí)施例中,標(biāo)志(flag)代表dcv是否存在或有效。在其他實(shí)施例中,字段的特定地址/值可被定義為dcv不存在或者無(wú)效的指示。在其他實(shí)施例中,dcv字段可以不是條目211-3的一部分。dcv不存在或者dcv是無(wú)效的指示可以采取其它形式。
由于寫(xiě)請(qǐng)求202-1與新條目211-3相關(guān)聯(lián),所以控制器102被配置為將數(shù)據(jù)d存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器204-1的物理塊地址23中。這個(gè)數(shù)據(jù)存儲(chǔ)器204-1代表其中存儲(chǔ)了數(shù)據(jù)106的存儲(chǔ)器104的一部分。因此,引用存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器204-1中的數(shù)據(jù),創(chuàng)建新的有效的條目211-3。雖然數(shù)據(jù)d被描述為被寫(xiě)到數(shù)據(jù)存儲(chǔ)器204-1,但在其他實(shí)施例中,在提交數(shù)據(jù)d到數(shù)據(jù)存儲(chǔ)器204-1之前,可以作為寫(xiě)的一部分執(zhí)行各種緩沖區(qū)、高速緩存等。
參照?qǐng)D1和圖2b,在一些實(shí)施例中,接收了新的寫(xiě)請(qǐng)求202-2。再次地,寫(xiě)請(qǐng)求202-2被導(dǎo)向到邏輯塊地址1。然而,由于條目211-3存在,所以在數(shù)據(jù)存儲(chǔ)器204-1的相關(guān)的物理塊地址中已經(jīng)存儲(chǔ)了數(shù)據(jù),即,圖2a的數(shù)據(jù)d。因此,該寫(xiě)請(qǐng)求202-2旨在以新數(shù)據(jù)d'更新存儲(chǔ)在邏輯塊地址1中的數(shù)據(jù)。
不同于如上相對(duì)于圖2a所描述的數(shù)據(jù)d的原始寫(xiě),這里,數(shù)據(jù)d'不寫(xiě)到數(shù)據(jù)存儲(chǔ)器204-1的物理塊地址23??刂破?02被配置為確定在映射表210中是否存在條目211。在一些實(shí)施例中,控制器102將寫(xiě)請(qǐng)求的邏輯塊地址與現(xiàn)存的條目211的邏輯塊地址進(jìn)行比較。如果發(fā)現(xiàn)了匹配,則先前的寫(xiě)已經(jīng)發(fā)生,并且在數(shù)據(jù)存儲(chǔ)器204-1中數(shù)據(jù)存在。控制器102被配置為讀取存儲(chǔ)在相關(guān)聯(lián)的物理塊地址中的數(shù)據(jù)d。這里,控制器102從物理塊地址23中讀取。如圖2a中所描述的先前寫(xiě)的數(shù)據(jù)d被從數(shù)據(jù)存儲(chǔ)器204-1中讀出。
寫(xiě)請(qǐng)求202-2的新數(shù)據(jù)d'和來(lái)自數(shù)據(jù)存儲(chǔ)器204-1的現(xiàn)有數(shù)據(jù)d被用作dcv函數(shù)208-1的輸入。dcv函數(shù)208-1代表如上所述的由控制器102執(zhí)行的計(jì)算dcv的操作。dcv函數(shù)208-1被配置為基于新數(shù)據(jù)d'和現(xiàn)有數(shù)據(jù)d生成dcv'。在這里,以撇號(hào)標(biāo)記dcv'以指示該dcv'可以與數(shù)據(jù)d組合以生成數(shù)據(jù)d'。
控制器102被配置為在dcv存儲(chǔ)器204-2中存儲(chǔ)新的dcv'。在一些實(shí)施例中,控制器102被配置為將dcv地址存儲(chǔ)在映射表210中的條目211-3的dcv字段中。這里,以下劃線示出0x12的值,以指示該值是新的或已改變。在其他實(shí)施例中,可以不使用dcv存儲(chǔ)器204-2并且可以在條目211-3的dcv字段中存儲(chǔ)dcv'。例如,dcv(多個(gè))可能相對(duì)較小,因此,用于在條目211中存儲(chǔ)dcv的額外的存儲(chǔ)器的量可以相對(duì)小。無(wú)論如何,條目211-3現(xiàn)在具有邏輯塊地址、物理塊地址和dcv的關(guān)聯(lián)。
參照?qǐng)D1和圖2c,在一些實(shí)施例中,控制器102接收到另一個(gè)寫(xiě)請(qǐng)求202-3。該寫(xiě)請(qǐng)求202-3是將新數(shù)據(jù)d'寫(xiě)到邏輯塊地址1的請(qǐng)求。再次地,控制器102被配置為試圖在映射表210中找到匹配。這里,條目211-3存在。與圖2b類(lèi)似,控制器102被配置為從由條目211-3所指示的物理塊地址23讀取數(shù)據(jù)d。數(shù)據(jù)d從數(shù)據(jù)存儲(chǔ)器204-1輸出。
寫(xiě)請(qǐng)求202-3的新數(shù)據(jù)d”和來(lái)自數(shù)據(jù)存儲(chǔ)器204-1的現(xiàn)有數(shù)據(jù)d被用作dcv函數(shù)208-1的輸入。dcv函數(shù)208-1被配置為基于新的數(shù)據(jù)d”和現(xiàn)有數(shù)據(jù)d生成新的dcv”。尤其是,新dcv”的生成不涉及在圖2b中寫(xiě)的數(shù)據(jù)d'的中間狀態(tài)。由于數(shù)據(jù)d是存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器204-1中的物理塊地址23的數(shù)據(jù),因此感興趣的差別是數(shù)據(jù)d和要寫(xiě)的數(shù)據(jù)即數(shù)據(jù)d”之間的差別??刂破?02被配置為在dcv存儲(chǔ)器204-2中存儲(chǔ)所得到的dcv”??刂破?02被配置為使用條目211-3的dcv字段中的dcv地址以使用新dcv”去覆蓋先前存在的dcv'。因此,在條目211-3中的dcv字段現(xiàn)在引用新dcv”。
參考圖1和圖2d,操作可以類(lèi)似于那些相對(duì)于圖2c描述的操作。然而,在一些實(shí)施例中,將dcv”寫(xiě)到dcv存儲(chǔ)器204-2可能會(huì)導(dǎo)致新的dcv地址。例如,如果dcv存儲(chǔ)器204-2在閃速存儲(chǔ)器中實(shí)現(xiàn),則新的dcv”可被寫(xiě)到與存儲(chǔ)dcv”頁(yè)不同的dcv存儲(chǔ)器204-2中的頁(yè)。新dcv地址是在其中存儲(chǔ)了dcv”的dcv存儲(chǔ)器204-2的地址。在條目211-3中,新地址由0x21代表并加了下劃線以指示dcv字段中的變化。
盡管已經(jīng)使用在dcv204-2存儲(chǔ)器中的相同地址更新存儲(chǔ)器位置或以新地址更新條目211-3作為如何改變邏輯塊地址與dcv的關(guān)聯(lián)來(lái)引用新dcv的例子,但在其他實(shí)施例中,關(guān)聯(lián)的變化可能不同。例如,在一些實(shí)施例中,控制器102被配置為將dcv”存儲(chǔ)在映射表中,例如在dcv字段中。存儲(chǔ)在條目211-3中的dcv'可以使用dcv”替代。
參照?qǐng)D1和圖2e,在一些實(shí)施例中,控制器102被配置為接收dcv沖刷訪問(wèn)(flushaccess)202-4。這里,dcv沖刷訪問(wèn)202-4指示與上述圖類(lèi)似的數(shù)字邏輯塊地址1。映射表210在類(lèi)似于圖2的映射表210的初始狀態(tài)210-1中。
再次地,控制器102被配置為訪問(wèn)條目211-3并從數(shù)據(jù)存儲(chǔ)器204-1中的相關(guān)聯(lián)的物理塊地址23并讀取數(shù)據(jù)d。然而,控制器102被配置為使用dcv字段來(lái)訪問(wèn)存儲(chǔ)在dcv存儲(chǔ)器204-2的dcv”。這里,控制器102被配置為使用dcv地址來(lái)訪問(wèn)dcv存儲(chǔ)器204-2。
控制器102被配置為將dcv”和數(shù)據(jù)d提供給反dcv函數(shù)208-2。反dcv函數(shù)208-2代表如上所述的組合數(shù)據(jù)和dcv以產(chǎn)生數(shù)據(jù)的更新的版本的函數(shù)。這里,dcv函數(shù)208-2使用數(shù)據(jù)d和dcv”重新創(chuàng)建數(shù)據(jù)d”??刂破?02被配置為在數(shù)據(jù)存儲(chǔ)器204-1中保存數(shù)據(jù)d”替代數(shù)據(jù)d。映射表210被更新為狀態(tài)210-2。這里更新了條目211-3以指示由”x”代表的有效的dcv不存在。因此,后續(xù)的向邏輯塊地址1的寫(xiě)可以由如上述圖2b的控制器102處理。
作為上述操作的結(jié)果,經(jīng)常修改的數(shù)據(jù)對(duì)帶有具有非對(duì)稱(chēng)性能的存儲(chǔ)器104的存儲(chǔ)設(shè)備的性能具有減小的影響。例如,被持續(xù)修改的數(shù)據(jù)可能包括不到5%的整個(gè)數(shù)據(jù)集。使用200gb為例,只有1%或2gb可能被持續(xù)地更新。較小大小的dcv(多個(gè))值減小了被寫(xiě)的數(shù)據(jù)量。在一些應(yīng)用中,dcv的大多數(shù)可能在數(shù)據(jù)的整個(gè)塊大小的20%的量級(jí)。其余的大多數(shù)可能仍然小于塊的大小的50%。因此,在200gb的例子中,可以寫(xiě)400mb到1gb的dcv。減小的大小導(dǎo)致空間效率并且可以減小磨損。特別是,本來(lái)要使用2gb的新擦除塊的更新現(xiàn)在可以使用400mb。對(duì)于存儲(chǔ)設(shè)備的給定容量,減小對(duì)新擦除塊的要求使得較不頻繁地執(zhí)行垃圾回收,并減小介質(zhì)上的磨損的頻率。
圖3a至圖3e是根據(jù)一些實(shí)施例的從存儲(chǔ)設(shè)備讀取的示意圖。將使用圖1的存儲(chǔ)設(shè)備100作為例子。在圖3a至圖3d中,為簡(jiǎn)潔起見(jiàn),省略了與圖2a至圖2e的元件類(lèi)似的元件的描述。參照?qǐng)D1和圖3a,映射表310代表在如圖2a所述的數(shù)據(jù)寫(xiě)后的狀態(tài)。也即,數(shù)據(jù)d已經(jīng)被存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器304-1中,并且條目311-3已被添加到映射表310;然而,條目311-3包括dcv不存在或者dcv是無(wú)效的指示。
控制器102被配置為接收讀請(qǐng)求302。在此,讀請(qǐng)求302是讀取邏輯塊地址1的請(qǐng)求。作為響應(yīng),控制器102被配置為訪問(wèn)映射表310并讀取物理塊地址23。使用該物理塊地址,控制器102被配置為從數(shù)據(jù)存儲(chǔ)器304-1讀取數(shù)據(jù)d。控制器102被配置為以數(shù)據(jù)d響應(yīng)讀請(qǐng)求302。特別地,因?yàn)闂l目311-3包括dcv不存在或dcv無(wú)效的指示,所以控制器102被配置為以未經(jīng)修改的數(shù)據(jù)d來(lái)響應(yīng)。
參照?qǐng)D1和圖3b,在一些實(shí)施例中,當(dāng)映射表310是在如圖2b中所述的數(shù)據(jù)寫(xiě)之后的狀態(tài)時(shí),控制器102可以接收讀請(qǐng)求302。即,數(shù)據(jù)d最初被寫(xiě)到數(shù)據(jù)存儲(chǔ)器304-1并且寫(xiě)了更新的數(shù)據(jù)d',導(dǎo)致dcv'存儲(chǔ)在dcv存儲(chǔ)器304-2中。
因此,控制器102被配置為再次接收讀請(qǐng)求302,并且作為響應(yīng),通過(guò)訪問(wèn)物理塊地址23來(lái)從數(shù)據(jù)存儲(chǔ)器304-1讀取數(shù)據(jù)。然而,因?yàn)樵跅l目311-3中存在有效的dcv字段,所以控制器102被配置為訪問(wèn)dcv存儲(chǔ)器304-2來(lái)讀取dcv'??刂破?02被配置為使用數(shù)據(jù)d和dcv'作為dcv函數(shù)308-2的輸入以組合數(shù)據(jù)d和dcv'成為數(shù)據(jù)d'。控制器102被配置為以數(shù)據(jù)d'響應(yīng)讀請(qǐng)求302。
雖然該技術(shù)涉及增加的讀取量,但該增加的讀出量具有小的,如果不是可忽略的影響。例如,在一些實(shí)施例中,存儲(chǔ)器104的內(nèi)部讀帶寬高于存儲(chǔ)設(shè)備100的外部接口帶寬。即使對(duì)讀性能具有不可忽略的影響,讀取也不會(huì)導(dǎo)致使用擦除過(guò)的塊、重寫(xiě)相鄰的磁道等。因此,能夠降低讀取性能的操作相比減小延遲、改善延遲一致性等相關(guān)聯(lián)的操作具有較小的影響。
參照?qǐng)D1和圖3c,在一些實(shí)施例中,當(dāng)映射表310是在如圖2c中所述的數(shù)據(jù)寫(xiě)之后的狀態(tài)時(shí),控制器102可以接受讀請(qǐng)求302。即,數(shù)據(jù)d最初被寫(xiě)到數(shù)據(jù)存儲(chǔ)器304-1,寫(xiě)更新的數(shù)據(jù)d'導(dǎo)致dcv'被存儲(chǔ)在dcv存儲(chǔ)器304-2中,并再次寫(xiě)更新的數(shù)據(jù)d”,導(dǎo)致dcv”被存儲(chǔ)在dcv存儲(chǔ)器304-2中。
控制器102被再次配置為訪問(wèn)條目311-3得到物理塊地址23,使用物理塊地址23來(lái)訪問(wèn)數(shù)據(jù)存儲(chǔ)器304-1以訪問(wèn)數(shù)據(jù)d,并使用dcv地址訪問(wèn)dcv存儲(chǔ)器304-2。然而,由于數(shù)據(jù)d”是最近被寫(xiě)到邏輯塊地址1的數(shù)據(jù),所以dcv'是可用并在dcv存儲(chǔ)器304-2中被訪問(wèn)的dcv。
控制器102被配置為使用dcv”和數(shù)據(jù)d作為反dcv函數(shù)308-2的輸入以生成數(shù)據(jù)d”??刂破?02被配置為以數(shù)據(jù)d”響應(yīng)讀請(qǐng)求302。因此,即使初始數(shù)據(jù)d被訪問(wèn),也可以再生成最近的數(shù)據(jù)d”。特別是,生成數(shù)據(jù)d”未使用數(shù)據(jù)d'和相關(guān)聯(lián)的dcv'。
如圖3a至圖3c所示,控制器102被配置為基于dcv字段是否指示dcv存在或有效來(lái)不同地操作。然而,在其他實(shí)施例中,即使只有初始數(shù)據(jù)被存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器304-1中,控制器102也可被配置為類(lèi)似于圖3b和圖3c來(lái)操作。特別是,無(wú)論是在dcv字段本身中或是在dcv存儲(chǔ)器304-2中,條目311的dcv字段都可以被初始化以指示身份(identity)dcv。當(dāng)和初始數(shù)據(jù)d一起被用作反dcv函數(shù)308-2的輸入時(shí),身份dcv指示,生成數(shù)據(jù)d。作為結(jié)果,不管與實(shí)際數(shù)據(jù)比較的dcv數(shù)據(jù)是否存在或有效,控制器102可以執(zhí)行基本相同的操作。
參照?qǐng)D1和圖3d,在一些實(shí)施例中,數(shù)據(jù)d的較早初始版本是可訪問(wèn)的。特別是,控制器102可以被配置為接收源讀請(qǐng)求302-1。這里,源讀請(qǐng)求302-1參照邏輯塊地址1。作為響應(yīng),控制器102被配置為類(lèi)似于相對(duì)于圖3a描述的訪問(wèn)來(lái)訪問(wèn)數(shù)據(jù)存儲(chǔ)器304-1的物理塊地址23中的數(shù)據(jù)d。然而,條目311-3的dcv字段是有效的,類(lèi)似于圖3b和圖3c。也即,在邏輯塊地址1中存在數(shù)據(jù)的更新版本。相比于圖3b和圖3c,被返回的是初始數(shù)據(jù)d而不是再生成的當(dāng)前數(shù)據(jù)d'或d”。因此,可以使用類(lèi)似源讀請(qǐng)求302-1的請(qǐng)求來(lái)讀取存儲(chǔ)在存儲(chǔ)設(shè)備100上的數(shù)據(jù)的早期版本。
雖然使用了從條目311-3的dcv字段讀取dcv地址作為例子,但在其他實(shí)施例中,dcv值是從條目311-3的dcv字段讀取。例如,圖3b的dcv'和圖3c的dcv”可以分別從條目311-3讀取。
參照?qǐng)D1和圖3e,在一些實(shí)施例中,當(dāng)映射表310是在如圖2c所述的數(shù)據(jù)寫(xiě)之后的狀態(tài)時(shí),控制器102可以接收讀請(qǐng)求302-2。也即,數(shù)據(jù)d最初被寫(xiě)到數(shù)據(jù)存儲(chǔ)器304-1,寫(xiě)更新數(shù)據(jù)d'導(dǎo)致dcv'被存儲(chǔ)在dcv存儲(chǔ)器304-2中,并且寫(xiě)進(jìn)一步更新的數(shù)據(jù)d”,導(dǎo)致dcv”被存儲(chǔ)在dcv存儲(chǔ)器304-2中。然而,在這個(gè)實(shí)施例中,保持了一個(gè)或多個(gè)中間dcv(多個(gè))。在這個(gè)示例中,dcv”是當(dāng)前dcv;然而,也保持了dcv'。在條目311至條目314中的附加參數(shù)0x55代表dcv'的指示,即其值或地址。
在本示例中,讀請(qǐng)求302-2是對(duì)lba1'的請(qǐng)求。lba1'代表例如數(shù)據(jù)d'的數(shù)據(jù)的狀態(tài)。因此,控制器102被配置為訪問(wèn)dcv'地址,其是其中dcv'在dcv存儲(chǔ)器304-2中存儲(chǔ)的位置的地址。結(jié)果是,dcv'可以被訪問(wèn)并在反dcv函數(shù)308-2中與數(shù)據(jù)d組合來(lái)生成數(shù)據(jù)d'。
雖然僅使用一個(gè)中間dcv,即,dcv',作為例子,但在其他實(shí)施例中,可以存儲(chǔ)任何數(shù)量的中間dcv(多個(gè))。例如,(多個(gè))dcv、dcv'、dcv”、dcv”'和dcv””全部可以被存儲(chǔ)在dcv存儲(chǔ)器304-2中。這些dcv(多個(gè))中的每一個(gè)可分別與數(shù)據(jù)d組合來(lái)生成諸如數(shù)據(jù)d'、d”、d”'和d””的更高版本的數(shù)據(jù)。
圖4a和圖4b是根據(jù)一些實(shí)施例的存儲(chǔ)設(shè)備的示意圖。參照?qǐng)D4a,在一些實(shí)施例中,存儲(chǔ)設(shè)備400包括類(lèi)似于圖1的存儲(chǔ)設(shè)備100的控制器102的控制器402。然而,存儲(chǔ)設(shè)備400包括非易失性存儲(chǔ)器404-1和易失性存儲(chǔ)器404-2。非易失性存儲(chǔ)器404-1的例子包括諸如閃速存儲(chǔ)器、stt-mram、相變r(jià)am、nfgm或poram、磁或光介質(zhì)等的存儲(chǔ)器。易失性存儲(chǔ)器的404-2例子包括dram、根據(jù)諸如ddr、ddr2、ddr3、ddr4的各種標(biāo)準(zhǔn)等的ddrsdram、sram等。
控制器402被配置為在非易失性存儲(chǔ)器404-1中存儲(chǔ)數(shù)據(jù)406并將在易失性存儲(chǔ)器404-2中存儲(chǔ)dcv408??刂破?02還可以被配置為將映射表410存儲(chǔ)在易失性存儲(chǔ)器404-2中。
在一些實(shí)施例中,存儲(chǔ)設(shè)備400的使用使得一致性延遲的優(yōu)先級(jí)高于一致性。因此,數(shù)據(jù)的一致性可以被放寬。例如,一些互聯(lián)網(wǎng)規(guī)模的應(yīng)用考慮放寬界限內(nèi)的一致性是可以接受的。這些應(yīng)用包括tweets和照片標(biāo)記。然而,對(duì)于這樣的應(yīng)用,延遲尖峰可能是不可接受的。在這些界限內(nèi)的數(shù)據(jù),如由dcv(多個(gè))408所表示的,被存儲(chǔ)在易失性存儲(chǔ)器404-2中??刂破?02被配置為沖刷(flush)dcv408的溢出(overflow)到非易失性存儲(chǔ)器404-1。在一些實(shí)施例中,控制器402被配置為如上述圖2e中描述的沖刷dcv408到非易失性存儲(chǔ)404-1的數(shù)據(jù)406。雖然易失性存儲(chǔ)器404-2可以由電池、超級(jí)電容器或nvram備份;然而,在一些實(shí)施例中,這樣的備份不是必要的,因?yàn)閷?dǎo)致dcv408的損失的故障將仍然在可接受的范圍內(nèi)。省略用于備份的電池、超級(jí)電容器或nvram可以降低存儲(chǔ)設(shè)備400的成本。
在一些實(shí)施例中,在提交數(shù)據(jù)到非易失性存儲(chǔ)器404-1之前可以使用高速緩存412高速緩存數(shù)據(jù)。例如,在圖2a至圖2d中描述的寫(xiě)請(qǐng)求的數(shù)據(jù)可以被存儲(chǔ)在高速緩存412中。沒(méi)有使用圖2a至圖2d中描述的各種技術(shù)來(lái)執(zhí)行該存儲(chǔ)。然而,當(dāng)數(shù)據(jù)被從高速緩存412中逐出、從高速緩存412中提交等時(shí),可以使用圖2a至圖2d中描述的技術(shù)。在特定的示例中,存儲(chǔ)在高速緩存412中的數(shù)據(jù)塊可以由多個(gè)寫(xiě)請(qǐng)求更新。這些更新不涉及dcv的計(jì)算。當(dāng)該數(shù)據(jù)塊是要被逐出或提交時(shí),基于當(dāng)它被逐出或被提交時(shí)數(shù)據(jù)的狀態(tài),可以如圖2a至圖2d中所述生成dcv。
參照?qǐng)D4b,在一些實(shí)施例中,存儲(chǔ)設(shè)備401類(lèi)似于圖4a的存儲(chǔ)設(shè)備400。然而,在存儲(chǔ)設(shè)備401中,控制器402被配置為在易失性存儲(chǔ)器402-2中高速緩存dcv(多個(gè)),其由高速緩存dcv408-1代表。具體地,控制器402被配置為保持在易失性存儲(chǔ)器404-2中頻繁訪問(wèn)的dcv(多個(gè))。控制器402被配置為使用高速緩存算法、啟發(fā)式算法等來(lái)確定在高速緩存中保持哪些dcv408-1。控制器402被配置為傳送其他dcv(多個(gè))408-1到存儲(chǔ)在非易失性存儲(chǔ)器404-1中的dcv408-2,反之亦然。其結(jié)果是,在一些實(shí)施例中,可以高速緩存被頻繁訪問(wèn)或重度訪問(wèn)的數(shù)據(jù)。此外,由于dcv(多個(gè))408-1的大小比相應(yīng)的數(shù)據(jù)406要小,所以被保持在易失性存儲(chǔ)器404-2中的更新的數(shù)量比如果高速緩存實(shí)際的數(shù)據(jù)更大。
圖5是根據(jù)一些實(shí)施例的存儲(chǔ)設(shè)備中的頁(yè)大小的示意圖。在一些實(shí)施例中,數(shù)據(jù)頁(yè)502和dcv頁(yè)504被存儲(chǔ)在相同的存儲(chǔ)器500中。這里,數(shù)據(jù)頁(yè)502-1和502-2以及dcv頁(yè)504-1到504-4是存儲(chǔ)在存儲(chǔ)器500中的數(shù)據(jù)頁(yè)502和dcv頁(yè)504的示例。這里,dcv頁(yè)504被示出為較小以代表相對(duì)于源數(shù)據(jù)的dcv的更小的大小。在這個(gè)例子中,dcv頁(yè)504是數(shù)據(jù)頁(yè)502的一半大??;然而,在其他實(shí)施例中,dcv頁(yè)504的大小取決于所使用的特定的dcv函數(shù)而不同。
在一些實(shí)施例中,數(shù)據(jù)頁(yè)502和dcv頁(yè)504兩者可能會(huì)受到同樣的限制,如缺乏原地寫(xiě),其可能會(huì)增加延遲。如上所述,通常保持?jǐn)?shù)據(jù)頁(yè)502而dcv變化,導(dǎo)致dcv頁(yè)的改變招致延遲影響。然而,由于dcv頁(yè)504在大小上更小,所以可以減小延遲影響。例如,dcv頁(yè)504可以被存儲(chǔ)在與數(shù)據(jù)頁(yè)502不同的塊中。因此,隨著更多dcv(多個(gè))在dcv頁(yè)504中累積,可以對(duì)那些塊進(jìn)行垃圾回收以恢復(fù)空閑塊。因?yàn)閐cv頁(yè)504較小,所以垃圾回收可能需要較少的時(shí)間和/或以較低的頻率執(zhí)行。此外,數(shù)據(jù)頁(yè)502可以比dcv頁(yè)504保持更長(zhǎng)有效。其結(jié)果是,存儲(chǔ)數(shù)據(jù)頁(yè)502的塊將比存儲(chǔ)dcv頁(yè)504的塊更不太可能經(jīng)歷垃圾回收。另外,由于dcv頁(yè)504可能更容易很快失效,所以在存儲(chǔ)dcv頁(yè)504的塊中更多頁(yè)將是無(wú)效的,因而由于較少有效頁(yè)需要被復(fù)制所以降低了垃圾回收操作的時(shí)間。
圖6是根據(jù)一些實(shí)施例的固態(tài)存儲(chǔ)設(shè)備的示意圖。在一些實(shí)施例中,ssd600包括類(lèi)似于圖1的存儲(chǔ)設(shè)備100的控制器102的控制器602。然而,ssd600包括閃速存儲(chǔ)器604-1、dram604-2和sram604-3。控制器602被配置為將數(shù)據(jù)606和dcv(多個(gè))608-1存儲(chǔ)在閃速存儲(chǔ)器604-1中、高速緩存dcv608-2在dram604-2中、并將映射表610存儲(chǔ)在sram604-3中。雖然已對(duì)特定的存儲(chǔ)器的配置進(jìn)行描述,但在其它實(shí)施例中,ssd600包括不同配置和/或不同數(shù)據(jù)606、dcv(多個(gè))608-1和608-2分布的不同存儲(chǔ)器,并且映射表610是不同的。例如,ssd600可以具有類(lèi)似于圖1、圖4a和圖4b的配置。
存儲(chǔ)在閃速存儲(chǔ)器604-1中的數(shù)據(jù)606和dcv608-1很容易受到其中包含數(shù)據(jù)606和dcv608-1頁(yè)被擦除的垃圾回收的影響,可能產(chǎn)生額外的延遲。然而,如以上描述的,dcv608-1的大小比相應(yīng)的數(shù)據(jù)606小。也就是說(shuō),閃速存儲(chǔ)器604-1中用于存儲(chǔ)數(shù)據(jù)606的頁(yè)比用于存儲(chǔ)dcv608-1的頁(yè)大。
使用dcv(多個(gè))降低了ssd600中的寫(xiě)修改(異地更新(out-of-placeupdate))。這導(dǎo)致最小化可能需要被回收的無(wú)效塊。這轉(zhuǎn)而降低垃圾回收的頻率。特別是,ssd600可以以更低的垃圾回收頻率和因此較低機(jī)會(huì)的更高延遲,尤其是延遲高峰,來(lái)處理諸如大數(shù)據(jù)和云應(yīng)用的更新i/o密集的流量。具體而言,在數(shù)據(jù)606寫(xiě)更新時(shí),數(shù)據(jù)606的第一副本在閃速存儲(chǔ)器604-1中保持有效。即使對(duì)于寫(xiě)更新密集的工作量,在閃速存儲(chǔ)器604-1中的以及高速緩存在dram604-2中的作為高速緩存的dcv608-2的dcv(多個(gè))608-1也能增加閃速存儲(chǔ)器604-1中的頁(yè)的壽命。此外,如上所述,數(shù)據(jù)606的早期版本是可用的。除了改進(jìn)延遲,該架構(gòu)也可以改善閃速單元磨損。
特別地,控制器602被配置為連同代表先前頁(yè)和更新之間差別的dcv一起,在閃速存儲(chǔ)器604-1中保持先前頁(yè)為有效/活躍,而不是使前一頁(yè)無(wú)效并請(qǐng)求更新數(shù)據(jù)的新頁(yè)。在隨后的讀操作時(shí),控制器602同時(shí)讀取先前的頁(yè)和dcv兩者并組合提供最新的頁(yè)。如上所述,存在在哪里存儲(chǔ)dcv的多種配置,例如在閃速存儲(chǔ)器604-1、dram604-2、sram604-3或這些存儲(chǔ)器的組合中。此外,dcv可以被高速緩存,諸如在dram604-2上高速緩存活躍或”熱”頁(yè)dcv(多個(gè)),并在閃速存儲(chǔ)器604-1中保持dcv608-1的持久副本。
在一些實(shí)施例中,即使當(dāng)讀取與寫(xiě)并非不對(duì)稱(chēng)、具有相同的開(kāi)銷(xiāo)等,本文描述的存儲(chǔ)設(shè)備仍然可能具有性能優(yōu)勢(shì)。尤其是,如果寫(xiě)次數(shù)隨著寫(xiě)的大小擴(kuò)展,并且dcv的大小小于對(duì)應(yīng)的數(shù)據(jù)塊的大小,則可以減少寫(xiě)時(shí)間。
在一些實(shí)施例中,dram604-2用于高速緩存寫(xiě)請(qǐng)求和/或?qū)憯?shù)據(jù)。當(dāng)處理寫(xiě)請(qǐng)求涉及數(shù)據(jù)606中的現(xiàn)有數(shù)據(jù)的讀取時(shí),對(duì)應(yīng)的數(shù)據(jù)606作為高速緩存數(shù)據(jù)606-1被存儲(chǔ)在dram604-2中??刂破?02被配置為使用存儲(chǔ)在dram604-2中的高速緩存數(shù)據(jù)606-1作為上述dcv函數(shù)的輸入。也即,控制器602被配置為從存儲(chǔ)在dram604-2中的高速緩存的數(shù)據(jù)606-1讀取數(shù)據(jù),而不是從存儲(chǔ)在閃速存儲(chǔ)器604-1中的數(shù)據(jù)606中讀取數(shù)據(jù)。
在一些實(shí)施例中,閃速存儲(chǔ)器604-1被分為平面和通道。ssd600以頁(yè)為粒度讀和寫(xiě),以塊為粒度擦除,塊可以包括多個(gè)頁(yè)。映射策略定義翻譯的粒度,即,頁(yè)級(jí)別的映射可能需要較大的印跡,但提供了較高程度的靈活性。塊級(jí)別的映射可以使用更小的印跡,但可能在布置上有限制性。已經(jīng)提出”混合型”策略的幾個(gè)變形以利用基于頁(yè)和塊映射兩者的組合。映射表610中的映射可以使用任何這樣的映射技術(shù)。
雖然已經(jīng)描述了ssd600作為例子,但在其他實(shí)施例中,也可以使用其它類(lèi)型的存儲(chǔ)介質(zhì),如疊瓦磁驅(qū)動(dòng)器(shingledmagneticdrive)。尤其是,在疊瓦磁盤(pán)上,寫(xiě)可能與先前寫(xiě)的磁道的一部分重疊。這導(dǎo)致寫(xiě)性能的降低,而且還導(dǎo)致覆蓋相鄰的磁道。疊瓦磁驅(qū)動(dòng)器通過(guò)在固件中管理這個(gè)問(wèn)題來(lái)隱藏該復(fù)雜性。較低的寫(xiě)性能(當(dāng)寫(xiě)到相鄰磁道時(shí))可能會(huì)導(dǎo)致不一致的延遲,并且是大多數(shù)云應(yīng)用的顧慮。使用如本文所述的dcv減小覆蓋,因此對(duì)更新密集型工作負(fù)載提供一致的處理延遲。
圖7是根據(jù)一些實(shí)施例的具有版本化存儲(chǔ)系統(tǒng)的系統(tǒng)的示意圖。在一些實(shí)施例中,系統(tǒng)700包括通過(guò)通信鏈路706耦合到存儲(chǔ)設(shè)備704的主機(jī)702。主機(jī)702是使用存儲(chǔ)設(shè)備的數(shù)據(jù)存儲(chǔ)容量的系統(tǒng),例如通用處理器、數(shù)字信號(hào)處理器(dsp)、專(zhuān)用集成電路、微控制器、可編程邏輯器件、分立電路、這些設(shè)備的組合等。在一些實(shí)施例中,主機(jī)702是計(jì)算機(jī)、服務(wù)器、工作站等。主機(jī)702被配置為執(zhí)行諸如操作系統(tǒng)和應(yīng)用程序的軟件。主機(jī)702被耦合到存儲(chǔ)器708。存儲(chǔ)器708包括用于主機(jī)702的可操作存儲(chǔ)器和/或高速緩存存儲(chǔ)器,如dram、根據(jù)諸如ddr、ddr2、ddr3、ddr4的各種標(biāo)準(zhǔn)的ddrsdram、sram等。盡管存儲(chǔ)器708被示為與主機(jī)702分開(kāi),但在一些實(shí)施例中,存儲(chǔ)器708是主機(jī)702的一部分。
通信鏈路706代表主機(jī)702和存儲(chǔ)設(shè)備704被配置為通過(guò)其通信的媒介。例如,通信鏈路706是如usb、scsi、pcie、sas、ata、sata、nvme、ufs、光纖通道、以太網(wǎng)、rdma、infiniband或其他類(lèi)似鏈接的鏈路。主機(jī)702和存儲(chǔ)設(shè)備704中的每一個(gè)被配置為具有通過(guò)這種通信鏈路進(jìn)行通信的接口。
在一些實(shí)施例中,如圖2a至圖3d,存儲(chǔ)設(shè)備704是如上所述的類(lèi)似于存儲(chǔ)設(shè)備100、400、401和600并被配置為如上所述操作的存儲(chǔ)設(shè)備。主機(jī)702可以被配置為讀和寫(xiě)數(shù)據(jù)到存儲(chǔ)設(shè)備704。存儲(chǔ)設(shè)備704被配置為如上所述的使用dcv以改進(jìn)系統(tǒng)700的操作。
然而,在其他實(shí)施例中,主機(jī)702被配置為相對(duì)于dcv的執(zhí)行類(lèi)似于如上所述的操作。例如,主機(jī)702可以包括存儲(chǔ)設(shè)備驅(qū)動(dòng)器710。存儲(chǔ)設(shè)備驅(qū)動(dòng)器710代表在主機(jī)702上的可執(zhí)行的操作存儲(chǔ)設(shè)備704的軟件。
特別地,存儲(chǔ)設(shè)備驅(qū)動(dòng)器710被配置為相對(duì)于dcv(多個(gè))執(zhí)行類(lèi)似于如上所述的操作。也即,上述由控制器102、402、602等執(zhí)行的操作由存儲(chǔ)設(shè)備驅(qū)動(dòng)器710執(zhí)行。另外,存儲(chǔ)器708被用于類(lèi)似于存儲(chǔ)器的104、404-2、604-2和604-3的至少一部分。也就是說(shuō),存儲(chǔ)器708被用于,例如,存儲(chǔ)映射表110、410或610,dcv(多個(gè))108或408,和/或高速緩存的dcv(多個(gè))408-1或608-2。
在一些實(shí)施例中,在映射表中不需要存在相對(duì)于圖2a至圖3d所描述的邏輯塊地址與物理塊地址的關(guān)聯(lián)。存儲(chǔ)設(shè)備驅(qū)動(dòng)器710可被配置為保持邏輯地址和dcv(多個(gè))的指示的關(guān)聯(lián)。也即,存儲(chǔ)設(shè)備驅(qū)動(dòng)器710被配置為類(lèi)似于物理塊地址使用邏輯塊地址作為初始數(shù)據(jù)d存儲(chǔ)位置的指示。在一些實(shí)施例中,存儲(chǔ)設(shè)備驅(qū)動(dòng)器710被配置為如相對(duì)于圖2a至圖3d所描述的使用存儲(chǔ)設(shè)備704作為數(shù)據(jù)存儲(chǔ)器204-1或304-1。
在一些實(shí)施例中,對(duì)于邏輯塊地址,存儲(chǔ)設(shè)備驅(qū)動(dòng)器710被配置為將初始數(shù)據(jù)寫(xiě)到存儲(chǔ)設(shè)備704上的邏輯塊地址。存儲(chǔ)設(shè)備驅(qū)動(dòng)器710被配置為將初始數(shù)據(jù)高速緩存在存儲(chǔ)器708中。當(dāng)隨后數(shù)據(jù)變化時(shí),存儲(chǔ)設(shè)備驅(qū)動(dòng)器710被配置為使用高速緩存的初始數(shù)據(jù)來(lái)計(jì)算dcv并將dcv寫(xiě)到存儲(chǔ)設(shè)備。在其它實(shí)施例中,存儲(chǔ)設(shè)備驅(qū)動(dòng)器710被配置為在存儲(chǔ)器708中保持dcv(多個(gè))。可以在存儲(chǔ)設(shè)備驅(qū)動(dòng)器710中使用任何上述的dcv管理技術(shù)。
圖8是根據(jù)實(shí)施例的服務(wù)器的示意圖。在本實(shí)施例中,服務(wù)器800可包括獨(dú)立的服務(wù)器、機(jī)架式服務(wù)器、刀片服務(wù)器等。服務(wù)器800包括存儲(chǔ)設(shè)備802和處理器804。處理器804耦合到存儲(chǔ)設(shè)備802。雖然僅示出了一個(gè)存儲(chǔ)設(shè)備802,但可能存在任何數(shù)量的存儲(chǔ)設(shè)備802。存儲(chǔ)設(shè)備802可以是任何上述的存儲(chǔ)設(shè)備。相應(yīng)地,服務(wù)器800的性能可以得到改進(jìn)。
圖9是根據(jù)實(shí)施例的服務(wù)器系統(tǒng)的示意圖。在本實(shí)施例中,服務(wù)器系統(tǒng)900包括多個(gè)服務(wù)器902-1至902-n。服務(wù)器902各自耦合到管理器904。服務(wù)器902中的一個(gè)或多個(gè)可以類(lèi)似于上面描述的服務(wù)器800。
管理器904被配置為管理服務(wù)器系統(tǒng)900的服務(wù)器902和其它組件。在實(shí)施例中,管理器904可被配置為監(jiān)視服務(wù)器902的性能。例如,服務(wù)器902中的每一個(gè)可以包括如上所述的存儲(chǔ)設(shè)備。
圖10是根據(jù)實(shí)施例的數(shù)據(jù)中心的示意圖。在本實(shí)施例中,數(shù)據(jù)中心1000包括多個(gè)服務(wù)器系統(tǒng)1002-1至1002-n。服務(wù)器系統(tǒng)1002可以類(lèi)似于上述圖9中的服務(wù)器系統(tǒng)900。服務(wù)器系統(tǒng)1002被耦合到諸如因特網(wǎng)的網(wǎng)絡(luò)1004。因此,服務(wù)器系統(tǒng)1002可以通過(guò)網(wǎng)絡(luò)1004與各個(gè)節(jié)點(diǎn)1006-1至1006-m通信。例如,節(jié)點(diǎn)1006可以是客戶端計(jì)算機(jī)、其他服務(wù)器、遠(yuǎn)程數(shù)據(jù)中心、存儲(chǔ)系統(tǒng)等。
可以使用實(shí)施例到諸如云和大規(guī)模延遲敏感這樣的其中一致性能是重要因素的服務(wù)中。這些服務(wù)的例子包括數(shù)據(jù)分析、機(jī)器學(xué)習(xí)、音頻和視頻流;然而,在其他實(shí)施例中,服務(wù)的類(lèi)型是不同的。一致性延遲可以是高優(yōu)先級(jí),并且一些實(shí)施例使用采用寬松的一致性要求的分布式軟件棧支持更可預(yù)測(cè)的性能。盡管有幾個(gè)因素導(dǎo)致加載延遲的不一致,如資源共享和隊(duì)列,但ssd(多個(gè))中的垃圾回收可能占了顯著的比重。
當(dāng)前的軟件堆??墒褂脧?fù)制,但該解決方案沒(méi)有解決諸如ssd(多個(gè))內(nèi)的垃圾回收的根本問(wèn)題,結(jié)果是,僅可以提供有限的增益。此外,復(fù)制固有地代價(jià)更高,導(dǎo)致增加的網(wǎng)絡(luò)流量,其可能進(jìn)一步影響網(wǎng)絡(luò)延遲,并且也使用軟件層的協(xié)調(diào)。
隨著大速率的數(shù)據(jù)生成,可以使用更快的數(shù)據(jù)分析。在諸如搜索引擎和社交媒體的在線服務(wù)中,一個(gè)重要的設(shè)計(jì)目標(biāo)是提供可預(yù)測(cè)的性能。在這樣的場(chǎng)景下,平均響應(yīng)時(shí)間可能無(wú)法代表性能;最壞情況下的性能可能受到更多顧慮。響應(yīng)時(shí)間的可變性可能引起在服務(wù)組件中的更高的尾延遲。其結(jié)果是,用戶可能會(huì)體驗(yàn)到長(zhǎng)響應(yīng)時(shí)間。根據(jù)工作量和ssd固件策略,尾延遲高峰可能偶爾或經(jīng)常發(fā)生,但在大多數(shù)情況下,可能足以危及用戶體驗(yàn)和當(dāng)前高度競(jìng)爭(zhēng)市場(chǎng)中的服務(wù)提供商的聲譽(yù)。
在共享基礎(chǔ)設(shè)施上尾延遲的不利進(jìn)一步加劇,如amazonaws和谷歌云。幾個(gè)云供應(yīng)商都有這種顧慮,并在設(shè)計(jì)硬件/軟件系統(tǒng)兩者的體系結(jié)構(gòu)時(shí),這是公認(rèn)的主要挑戰(zhàn)之一。盡管有幾個(gè)因素,諸如資源共享和排隊(duì),導(dǎo)致加載等待時(shí)間不一致,但在ssd(多個(gè))中的垃圾回收占據(jù)了顯著的比重。由于閃速存儲(chǔ)器的特性,其不容許原地更新,所以ssd固件在異地寫(xiě)更新,并使以前的副本無(wú)效。為了回收空間,在可被重新寫(xiě)之前無(wú)效空間需要被擦除。然而,相比于讀或?qū)懖僮?微秒),擦除操作(以毫秒為單位)顯著較慢,并且通常以粗粒度進(jìn)行。該過(guò)程構(gòu)成ssd(多個(gè))中的垃圾回收,并當(dāng)垃圾回收活動(dòng)時(shí)通道無(wú)法服務(wù)讀/寫(xiě)請(qǐng)求。因此,垃圾回收可能?chē)?yán)重地影響關(guān)鍵操作的延遲(和性能)。在一些情況下,在垃圾回收期間讀取延遲可能增加100倍。此外,隨著ssd老化,垃圾回收器更加頻繁地運(yùn)行。
在云中幾種突出的應(yīng)用類(lèi)型是寫(xiě)更新密集的。模擬真實(shí)世界的使用情況的一個(gè)這樣的例子是雅虎的云服務(wù)標(biāo)準(zhǔn)(ycsb),這是評(píng)估云計(jì)算系統(tǒng)的基準(zhǔn)套件。在ycsb中提供的一些更新密集工作量中,訪問(wèn)比可以是50%讀取、0%插入和50%更新。電子商務(wù)應(yīng)用是這樣的應(yīng)用的例子,包括諸如存儲(chǔ)在用戶會(huì)話中最近的行動(dòng)記錄,電子商務(wù)用戶的典型動(dòng)作的操作。在這種類(lèi)別的應(yīng)用中,由于ssd(多個(gè))中的垃圾回收的尾延遲效果可以造成用戶響應(yīng)時(shí)間的較高的延遲。在另一個(gè)工作量例子中,訪問(wèn)比率是95%讀取、0%插入和5%更新。一個(gè)例子是社交媒體,即使很小的更新比例也可以觸發(fā)gc及違反服務(wù)水平目標(biāo)。例如,對(duì)于照片標(biāo)記,加入標(biāo)記是更新,但大多數(shù)操作是讀取標(biāo)簽。
大多數(shù)大數(shù)據(jù)和云應(yīng)用使可擴(kuò)展性和一致性能的優(yōu)先級(jí)高于更傳統(tǒng)的方面,如事務(wù)(原子性、一致性、隔離性、耐用性或acid)屬性。強(qiáng)一致性不能很好地?cái)U(kuò)展,而且大多數(shù)云應(yīng)用傾向于具有穩(wěn)定性能的目標(biāo)的較為寬松的事務(wù)一致性。因此,弱一致性模型被廣泛使用于最流行的云規(guī)模分布式軟件棧。這提供了在高負(fù)荷、高并發(fā)系統(tǒng)中顯著的i/o性能的改進(jìn)。
雖然所有的云應(yīng)用存儲(chǔ)大量的數(shù)據(jù),并且被設(shè)計(jì)為隨著數(shù)據(jù)印跡的增加擴(kuò)展,但只有一個(gè)子集比其他的更頻繁地被訪問(wèn)。這種不均衡的分配代表數(shù)據(jù)中心的”熱”(或#trending)數(shù)據(jù)訪問(wèn)模式。
本文所述的實(shí)施例可以在各種應(yīng)用中使用,并提供減小的和/或更一致的延遲的益處。上述云應(yīng)用僅僅是這樣應(yīng)用的示例。
雖然已經(jīng)根據(jù)特定的實(shí)施例描述了結(jié)構(gòu)、設(shè)備、方法和系統(tǒng),本領(lǐng)域的普通技術(shù)人員將很容易地認(rèn)識(shí)到對(duì)所公開(kāi)的實(shí)施例的許多變化是可能的,因此任何變化應(yīng)被認(rèn)為在本公開(kāi)的結(jié)構(gòu)、設(shè)備和系統(tǒng)的精神和范圍之內(nèi)。相應(yīng)地,可以由本領(lǐng)域的普通技術(shù)人員作出許多修改而不脫離所附權(quán)利要求的精神和范圍。