TWI712885B - 版本儲存裝置及其方法 - Google Patents
版本儲存裝置及其方法 Download PDFInfo
- Publication number
- TWI712885B TWI712885B TW105136337A TW105136337A TWI712885B TW I712885 B TWI712885 B TW I712885B TW 105136337 A TW105136337 A TW 105136337A TW 105136337 A TW105136337 A TW 105136337A TW I712885 B TWI712885 B TW I712885B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- memory
- compression value
- dcv
- differential compression
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一個實施例包含一種儲存裝置,其包括:記憶體;及控制
器,其包含耦接至記憶體的記憶體介面,控制器經配置以:接收要寫入至與儲存於記憶體中的第一資料及儲存於記憶體中的第一差分壓縮值相關聯的位址的寫入資料;基於寫入資料及第一資料計算第二差分壓縮值;將第二差分壓縮值儲存在記憶體中;及改變位址的關聯以參考第二差分壓縮值而非第一差分壓縮值。
Description
本申請案主張2016年1月15日申請的美國臨時專利申請案第62/279,655號的權益,其全部內容出於所有目的特此以引用的方式併入本文中。
本發明是有關於儲存裝置,且具體而言涉及版本(versioning)儲存裝置及其方法。
儲存裝置可能以會影響延時的方式工作。舉例而言,資料以頁為單位寫入至固態儲存裝置/驅動器(solid state storage device,SSD)。自多個頁建立區塊。快閃記憶體只能以區塊為單位擦除。若不再需要一個區塊中的一些頁,則將所述區塊中的其他有效頁讀取及寫入至另一區塊以釋放陳舊區塊。接著可以擦除陳舊區塊。此過程被稱作廢棄項目收集。
廢棄項目收集可能會增加儲存裝置的延時。具體而言,在執行廢棄項目收集時,SSD或許不能處理讀取及/或寫入請求。因
此,傳入的讀取/寫入請求可能會一直延遲至廢棄項目收集結束為止。
一些硬碟驅動器使用疊瓦式磁性記錄(shingled magnetic recording)。在疊瓦式磁性記錄的情況下,儲存媒體上的磁軌重疊。當儲存於一條磁軌中的資料被修改且所述磁軌被重寫時,重疊的磁軌必須亦被讀取及重寫。此等額外操作在執行時會增加延時。
一個實施例包含一種儲存裝置,其包括:記憶體;及控制器,其包含耦接至所述記憶體的記憶體介面,所述控制器經配置以:接收要寫入至與儲存於所述記憶體中的第一資料及儲存於所述記憶體中的第一差分壓縮值相關聯的位址的寫入資料;基於所述寫入資料及所述第一資料計算第二差分壓縮值;將所述第二差分壓縮值儲存在所述記憶體中;及改變所述位址的關聯以參考所述第二差分壓縮值而非所述第一差分壓縮值。
一個實施例包含一種方法,其包括:接收要寫入至與儲存於記憶體中的第一資料及儲存於所述記憶體中的第一差分壓縮值相關聯的位址的寫入資料;基於所述寫入資料及所述第一資料計算第二差分壓縮值;將所述第二差分壓縮值儲存在所述記憶體中;及改變所述位址的關聯以參考所述第二差分壓縮值而非所述第一差分壓縮值。
一個實施例包含一種系統,其包括:通信介面;及處理器,其藉由所述通信介面耦接至記憶體,所述處理器經配置以:接收要寫入至與儲存於耦接至所述處理器的儲存裝置中的第一資料及第
一差分壓縮值相關聯的位址的寫入資料;基於所述寫入資料及所述第一資料計算第二差分壓縮值;及改變所述位址的關聯以參考所述第二差分壓縮值而非所述第一差分壓縮值。
100、400、401、704、802:儲存裝置
102、402、602:控制器
104、500、708:記憶體
106、406、606:資料
108、408、408-2:DCV
109-1、208-1:DCV函數
109-2:DCV電路
110、210、210-1、210-2、310、410、610:映射表
111:記憶體介面
202-1、202-2、202-3:寫入請求
202-4:DCV清空存取
211、211-1、211-2、211-3、311、211、311-1、311-2、311-3、311-4:條目
204-1、304-1:資料記憶體
204-2、304-2:DCV記憶體
208-2、308-2:逆DCV函數
302、302-2:讀取請求
302-1:源讀取請求
404-1:非揮發性記憶體
404-2:揮發性記憶體
408-1:經快取DCV
412:快取記憶體
502-1、502-2:資料頁
504-1、504-2、504-3、504-4:DCV頁
600:固態儲存裝置
604-1:快閃記憶體
604-2:DRAM
604-3:SRAM
606-1:經快取資料
608-1:DCV
608-2:經快取DCV
702:主機
704:儲存裝置
706:通信鏈路
708:記憶體
710:儲存裝置驅動程式
800、902-1、902-2、902-N:伺服器
804:處理器
900:伺服器系統
904:管理器
1000:資料中心
1002-1、1002-2、1002-N:伺服器系統
1004:網路
1006-1、1006-2、1006-M:節點
圖1是根據一些實施例的儲存裝置的示意圖。
圖2A至圖2E是向根據一些實施例的儲存裝置寫入的示意圖。
圖3A至圖3E是自根據一些實施例的儲存裝置讀取的示意圖。
圖4A至圖4B是根據一些實施例的儲存裝置的示意圖。
圖5是根據一些實施例的儲存裝置中的頁大小的示意圖。
圖6是根據一些實施例的固態儲存裝置的示意圖。
圖7是具有根據一些實施例的版本儲存系統的系統的示意圖。
圖8是根據一個實施例的伺服器的示意圖。
圖9是根據一個實施例的伺服器系統的示意圖。
圖10是根據一個實施例的資料中心的示意圖。
實施例涉及版本儲存裝置及其方法。呈現以下描述以使熟習此項技術者能夠製造並使用實施例,且在專利申請及其要求
的情境下提供以下描述。對於本文所述的實施例及通用原理及特徵的各種修改將容易顯而易見。主要在特定實施中提供的具體方法、裝置及系統方面描述實施例。
然而,所述方法、裝置及系統亦將有效地適用於其他實施。諸如「一實施例」、「一個實施例」及「另一個實施例」的片語可以指相同或不同實施例及指多個實施例。將相對於具有某些組件的系統及/或裝置描述所述實施例。然而,所述系統及/或裝置可以包含比示出的更多或更少的組件,且在不脫離本發明的範圍的前提下,可以對組件的佈置及類型做出變化。亦將在具有某些操作的具體方法的上下文中描述實施例。然而,所述方法及系統可以根據具有不同及/或額外操作及不符合實施例的不同次序及/或並行的操作的其他方法操作。因此,實施例並不希望限於示出的具體實施例,而是應被賦予與本文所述的原理及新穎特徵相一致的最廣範圍。
在具有某些組件的具體系統或裝置的上下文中描述實施例。熟習此項技術者將容易認識到,實施例符合具有其他及/或額外組件及/或其他特徵的系統或裝置的使用。亦可以在單個元件的上下文中描述方法、裝置及系統。然而,熟習此項技術者將容易認識到所述方法及系統符合具有多個元件的架構的使用。
熟習此項技術者應理解,總體而言,此處使用的且尤其在所附申請專利範圍(例如,所附申請專利範圍的主體)中使用的術語總體上希望用作「開放性」術語(例如,術語「包含」應解釋為「包含但不限於」,術語「具有」應解釋為「至少具有」,術語「包含」應解釋為「包含但不限於」等)。熟習此項技術者將進一步理
解,若希望表示特定數目的所引入請求項陳述,那麼將在所述請求項中明確陳述此意圖,而在不存在此陳述的情況下,則不存在此意圖。舉例而言,為了幫助理解,所附的申請專利範圍可能使用介紹性的片語「至少一個」及「一或多個」來介紹請求項陳述。然而,使用此類片語不應解釋為暗示由不定冠詞「一個(種)」引入的一個請求項陳述會將含有此類所引入的請求項陳述的任何特定請求項限制成僅含有一個此類陳述的實例,即使當同一請求項包括介紹性片語「一個(種)或多個(種)」或「至少一個(種)」及不定冠詞(諸如「一個(種)」)時(例如「一個(種)」應解釋為意味著「至少一個(種)」);此對用於引入請求項陳述的定冠詞的使用同樣成立。此外,在使用類似於「A、B或C等中的至少一個」的慣用語的彼等例子中,總體上此種句子結構意在表示熟習此項技術者對所述慣用語的理解意義(例如「具有A、B或C等中的至少一個的系統」將包含但不限於具有單單A、單單B、單單C、A及B一起、A及C一起、B及C一起及/或A、B及C一起等的系統)。熟習此項技術者將進一步理解,無論是在說明、申請專利範圍還是附圖中,幾乎任何呈現兩種或兩種以上替代性術語的分離性詞語及/或片語應理解為涵蓋包含所述術語中的一者、所述術語中的任一者或兩種術語的可能性。舉例而言,片語「A或B」理解為包含「A」或「B」或「A及B」的可能性。
圖1是根據一些實施例的儲存裝置的示意圖。在一些實施例中,儲存裝置100包含控制器102及記憶體104。控制器102是經配置以管理儲存裝置100的操作的電路,且包含諸如通用處理器、數位信號處理器(digital signal processor,DSP)、特殊應用
積體電路、微控制器、可程式化邏輯裝置、分立電路、或類似裝置的組件。控制器102可以包含內部部分,諸如暫存器、快取記憶體、處理核心、或是類似的等,且亦可包含外部介面,諸如位址及資料匯流排介面、中斷介面、或是類似的等。雖然儲存裝置100中僅僅示出了一個控制器102,但是可以存在多個控制器102。此外,諸如緩衝器、記憶體介面電路、通信介面、或是類似等的其他介面裝置可以是儲存裝置100的部分,用於將控制器102連接至內部及外部組件。
在一些實施例中,控制器102包含通信介面,其包含使得儲存裝置100能夠通信的電路。例如,通信介面可以包含通用串列匯流排(universal serial bus,USB)、小型電腦系統介面(small computer system interface,SCSI)、高速周邊組件互連(peripheral component interconnect express,PCIe)、串列連接的SCSI(serial attached SCSI,SAS)、並行ATA(parallel ATA,PATA)、串列ATA(serial ATA,SATA)、高速NVM(NVM Express,NVMe)、通用快閃儲存器(universal flash storage,UFS)、光纖通道、以太網路、遠端直接記憶體存取(remote direct memory access,RDMA)、Infiniband或其他介面。使用此種通信介面,儲存裝置100可經配置以藉由相關聯的媒體與外部裝置及系統通信。在一些實施例中,控制器102經配置以藉由通信介面接收讀取及寫入請求。
記憶體104是任何能夠儲存資料的裝置。此處,對於儲存裝置100示出了一個記憶體104;然而,儲存裝置100中可以包含任何數目的記憶體104,包含不同類型的記憶體。記憶體104的實例包含動態隨機存取記憶體(dynamic random access memory,
DRAM)、根據諸如DDR、DDR2、DDR3、DDR4的各種標準的雙資料速率同步動態隨機存取記憶體(double data rate synchronous dynamic random access memory,DDR SDRAM)、靜態隨機存取記憶體(static random access memory,SRAM)、諸如快閃記憶體、自旋轉移力矩磁阻隨機存取記憶體(spin-transfer torque magentoresistive random access memory,STT-MRAM)、相變RAM、奈米浮動閘極記憶體(nanofloating gate memory,NFGM)或聚合物隨機存取記憶體(polymer random access memory,PoRAM)的非揮發性記憶體、磁性或光學媒體、或類似的等。
記憶體104經配置以儲存資料106、差分壓縮值(differentially compressed value,DCV)108及映射表110。如下文將進一步詳細描述,記憶體104可以包含多個記憶體裝置,且儲存於記憶體104中的資料可以藉由多種方式在此等裝置之間分配;然而,為方便起見,此處將把資料描述為儲存於單個記憶體104中。
控制器102包含記憶體介面111,其耦接至記憶體104。控制器102經配置以藉由記憶體介面111存取記憶體104。記憶體介面111可以包含命令、位址及/或資料匯流排的介面,控制器102及記憶體104藉由此等匯流排通信。雖然示出記憶體104與控制器102分開,但是在一些實施例中,記憶體104的諸如快取記憶體、SRAM等的部分是控制器102的一部分。控制器102可以包含內部通信匯流排,諸如處理核心的內部組件、外部通信介面、快取記憶體等可以藉由所述內部通信匯流排通信。
資料106表示已儲存於儲存裝置100中的資料。如下文
將進一步詳細描述,DCV 108表示當與相關聯資料106組合時表示儲存於儲存裝置100中的當前資料的資料。在一些實施例中,DCV 108是大小小於對應資料106的大小的值。舉例而言,資料106及DCV 108可以各自儲存於不同大小的頁中。在此實例中,用於資料106的頁的大小是8K位元組。相反,用於對應的DCV 108的頁的大小是4K位元組。雖然使用具體大小作為實例,但是在其他實施例中,大小是不同的。
控制器102經配置以接收寫入請求及要寫入至與儲存於記憶體104中的資料106及儲存於記憶體104中的第一DCV 108相關聯的位址的寫入資料。映射表110包含具有例如邏輯位址、實體位址、DCV位址/值、或類似的資訊的條目以在位址/值或其他資訊之間形成關聯。映射表110可以使用頁、區塊或混合映射策略;然而,本文中的實例將使用區塊映射進行說明。
控制器102經配置以使用儲存於映射表110中的資料以識別與邏輯位址相關聯的實體位址、DCV 108、或類似。舉例而言,在藉由通信介面接收讀取或寫入請求與邏輯位址之後,控制器102經配置以存取映射表110以讀取與邏輯位址相關聯的條目。在一些實施例中,控制器102經配置以存取儲存映射表110的內部快取記憶體;然而,在其他實施例中,控制器102經配置以存取外部記憶體,諸如DRAM。
控制器102經配置以在與邏輯位址相關聯的實體位址處讀取儲存於記憶體104中的資料106。控制器102經配置以基於包含於寫入請求中的寫入資料及自實體位址讀取的資料106計算DCV。此計算基於儲存在實體位址處的資料106與傳入寫入資料
之間的差異產生DCV。此外,所述計算產生大小小於自實體位址讀取的資料106及/或寫入資料的DCV。
可以藉由多種方式計算DCV。在一些實施例中,控制器102經配置以在軟體或內部電路中計算DCV。DCV函數109-1表示控制器102的此操作。意即,在控制器102已接收到寫入資料及來自實體位址的讀取資料106之後,控制器102經配置以使用寫入資料及來自記憶體104的讀出資料106執行數學計算以產生DCV。在其他實施例中,控制器102使用外部電路計算DCV。舉例而言,控制器102經配置以將寫入資料及讀取資料引導至DCV電路109-2,且,作為回應,DCV電路109-2經配置以產生DCV。DCV電路109-2包含算術單元、查找表、輸入/輸出緩衝器、或類似的以計算DCV且與控制器102及/或記憶體104介接。用虛線示出DCV電路109-2以指示其可以用作控制器102的DCV函數109-1的替代方案或組合方案。
可以使用控制器102直接或間接藉由DCV電路109-2執行的多種函數產生DCV。在一些實施例中,所述函數是簡單的減法運算。在其他實施例中,所述函數是更複雜的散列函數。在其他實施例中,可以建立記錄,其指示哪些位已經翻轉(flipped)。在一些實施例中,所述函數可被稱為「差分」(diff)函數。在具體實施例中,所述函數經優化以減小DCV的大小。在一些實施例中,所述函數包含壓縮函數以減小差異大小。
控制器102亦經配置以藉由DCV電路109-2直接或間接執行一個函數,所述函數是DCV函數的逆向函數。逆向DCV函數是使用源資料及自源資料及不同資料產生的DCV作為輸入以再
生不同資料的函數。因此,藉由維護資料106及DCV 108,藉由逆向DCV函數可以獲得不同資料。
控制器102經配置以將所計算的DCV儲存在記憶體104中。舉例而言,控制器102經配置以將計算的DCV與DCV 108一起儲存在記憶體104中。然而,如下文將進一步詳細描述,在其他實施例中,在與DCV 108一起儲存之前,可以在記憶體104的一或多個其他部分中快取DCV。
控制器102經配置以改變位址的關聯以參考所計算的DCV而非與位址相關聯的更早DCV。如下文將進一步詳細描述,當讀取與位址相關聯的資料106時,現在將存取新的DCV而非更早的DCV。換言之,在一些實施例中,僅僅維護一個DCV以表示與位址相關聯的資料。
在一些實施例中,記憶體104的至少一部分相對於寫入具有不對稱的效能。舉例而言,基於快閃記憶體的儲存裝置不允許就地寫入。必須為寫入分配新的區塊,且,為了為將來的寫入做準備,必須擦除先前區塊。在具有疊瓦式磁性記錄的儲存裝置中,向與一條磁軌重疊的另一條磁軌寫入包含重寫所述重疊的磁軌。如下文將進一步詳細描述,藉由使用DCV,可以減少不對稱效能的影響。
圖2A至圖2E是向根據一些實施例的儲存裝置寫入的示意圖。將使用圖1的儲存裝置100作為實例。參看圖1及圖2A,在一些實施例中,映射表210對應於儲存於記憶體104中的映射表110。映射表210包含多個條目211。每個條目211包含用於邏輯區塊位址(logical block address,LBA)、實體區塊位址(physical
block address,PBA)及DCV指示的欄位。雖然使用了具體的欄位作為實例,但是在其他實施例中,可以存在其他欄位及/或欄位可以採用不同的形式。此處,舉例而言,邏輯及實體位址與區塊相關聯;然而,在其他實施例中,邏輯及實體位址可以與區塊內的頁或記憶體104的其他組織結構相關聯。在其他實施例中,諸如實體位址的單個位址可能是僅有的位址。
在映射表210中,兩個條目211-1及211-2是預先存在的條目。當接收到對新邏輯區塊位址的寫入請求202-1時,控制器102建立新條目211-3。在此實例中,新條目211-3是用於邏輯區塊位址1。控制器102已經使邏輯區塊位址1與實體區塊位址23相關聯。然而,因為與實體區塊位址相關聯的僅有的資料是傳入資料D(例如,資料D與新檔案相關聯),所以並不計算DCV。意即,資料記憶體204-1中的實體位址23處不存在有效資料。DCV欄位中的「x」表示不存在DCV或者DCV並不有效的指示。在一些實施例中,旗標表示DCV是否存在或有效。在其他實施例中,欄位的具體位址/值可以被定義為DCV不存在或並不有效的指示。在其他實施例中,DCV欄位可能並非條目211-3的一部分。DCV不存在或者並不有效的指示可以採用其他形式。
因為寫入請求202-1與新條目211-3相關聯,所以控制器102經配置以將資料D儲存在資料記憶體204-1的實體區塊位址23中。此資料記憶體204-1表示記憶體104的儲存資料106的部分。因此,建立參考儲存於資料記憶體204-1中的資料的新的有效條目211-3。雖然描述向資料記憶體204-1寫入資料D,但是在其他實施例中,在向資料記憶體204-1提交資料D之前,先作為寫
入的一部分執行各種緩衝、快取、或類似的。
參看圖1及圖2B,在一些實施例中,接收到新的寫入請求202-2。同樣,寫入請求202-2是針對邏輯區塊位址1。然而,因為存在條目211-3,所以資料已經儲存於資料記憶體204-1的相關聯的實體區塊位址中,即,來自圖2A的資料D。因此,此寫入請求202-2意在用新資料D'更新儲存於邏輯區塊位址1中的資料。
不同於上文相對於圖2A描述的資料D的原始寫入,此處,資料D'並不寫入至資料記憶體204-1的實體區塊位址23。控制器102經配置以確定映射表210中是否存在條目211。在一些實施例中,控制器102將寫入請求的邏輯區塊位址與現有條目211的邏輯區塊位址比較。若發現匹配,則已發生先前寫入且資料記憶體204-1中存在資料。控制器102經配置以讀取儲存於相關聯的實體區塊位址中的資料D。此處,控制器102自實體區塊位址23讀取。自資料記憶體204-1讀出如先前在圖2A中描述而寫入的資料D。
寫入請求202-2的新資料D'及來自資料記憶體204-1的現有資料D用作DCV函數208-1的輸入。DCV函數208-1表示控制器102如上文所述計算DCV所執行的操作。DCV函數208-1經配置以基於新資料D'及現有資料D產生DCV'。此處,用撇號標記DCV'以指示此DCV'可以與資料D組合以產生資料D'。
控制器102經配置以將新DCV'儲存在DCV記憶體204-2中。在一些實施例中,控制器102經配置以將DCV位址儲存在映射表210中的條目211-3的DCV欄位中。此處,用下劃線示出0x12的值以指示所述值是新的或者已改變。在其他實施例中,可
能不使用DCV記憶體204-2,且DCV'可以儲存於條目211-3的DCV欄位中。舉例而言,DCV可以相對較小,因此,在條目211中儲存DCV的額外儲存空間量可以相對較小。無論如何,條目211-3現在具有邏輯區塊位址、實體區塊位址及DCV的關聯。
參看圖1及圖2C,在一些實施例中,控制器102接收到另一寫入請求202-3。此寫入請求202-3是向邏輯區塊位址1寫入新資料D"的請求。同樣,控制器102經配置以嘗試在映射表210中尋找匹配。此處,存在條目211-3。類似於圖2B,控制器102經配置以自條目211-3中指示的實體區塊位址23讀取資料D。資料D自資料記憶體204-1輸出。
寫入請求202-3的新資料D"及來自資料記憶體204-1的現有資料D用作DCV函數208-1的輸入。DCV函數208-1經配置以基於新資料D"及現有資料D產生新DCV"。具體而言,DCV"的產生並不涉及在圖2B中寫入的資料D'的中間狀態。因為資料D是在實體區塊位址23處儲存於資料記憶體204-1中的資料,所以所關注的差異是資料D與要寫入的資料即資料D"之間的差異。控制器102經配置以將所得DCV"儲存在DCV記憶體204-2中。控制器102經配置以使用條目211-3的DCV欄位中的DCV位址用新DCV"覆寫預先存在的DCV'。因此,條目211-3中的DCV欄位現在參考新DCV"。
參看圖1及圖2D,操作可以類似於相對於圖2C描述的彼等操作。然而,在一些實施例中,向DCV記憶體204-2寫入DCV"可能會得到新DCV位址。舉例而言,若在快閃記憶體中實施DCV記憶體204-2,則可以將新DCV"寫入至DCV記憶體204-
2中的不同於儲存DCV'的頁的一個頁。新DCV位址是DCV記憶體204-2中的儲存DCV"的位址。在條目211-3中,新位址表示為0x21且帶下劃線以指示DCV欄位中的變化。
雖然將在DCV記憶體204-2中的相同位址處更新記憶體位置或者用新位址更新條目211-3用作如何改變邏輯區塊位址與DCV的關聯如何變化以參考新DCV的實例,但是在其他實施例中,關聯的變化可能是不同的。舉例而言,在一些實施例中,控制器102經配置以在映射表中(諸如在DCV欄位中)儲存DCV"。儲存於條目211-3中的DCV'可以替換成DCV"。
參看圖1及圖2E,在一些實施例中,控制器102經配置以接收DCV清空存取202-4。此處,DCV清空存取202-4指示類似於上述各圖的邏輯區塊位址1。映射表210處於類似於圖2D的映射表210的初始狀態210-1。
同樣,控制器102經配置以存取條目211-3且自資料記憶體204-1中的相關聯的實體區塊位址23讀取資料D。然而,控制器102經配置以使用DCV欄位存取儲存於DCV記憶體204-2中的DCV"。此處,控制器102經配置以使用DCV位址存取DCV記憶體204-2。
控制器102經配置以向逆DCV函數208-2供應DCV"及資料D。逆DCV函數208-2表示如上文所述組合資料與DCV以產生資料的經更新版本的函數。此處,DCV函數208-2使用資料D及DCV"重新建立資料D"。控制器102經配置以將資料D"儲存在資料記憶體204-1中代替資料D。將映射表210更新成狀態210-2。此處條目211-3經更新以指示不存在有效DCV,表示為「x」。
因此,如上文在圖2B中所述,控制器102可以處理對邏輯區塊位址1的後續寫入。
由於上述操作,經常修改的資料對於帶有具有不對稱效能的記憶體104的儲存裝置的效能的影響減少。舉例而言,一致地修改的資料可以包含小於整個資料集的5%。使用200GB作為實例,僅僅可以一致地更新1%或2GB。DCV的大小較小,可以減少寫入的資料量。在一些應用中,大部分DCV可以是整個資料區塊的大小的大約20%。其餘部分的大部分仍然可以小於區塊的大小的50%。因此,在200GB實例中,可以寫入400MB至1GB的DCV。大小減小會得到空間效率且可以減少磨損。具體而言,將使用2GB新擦除區塊的更新現在可以使用400MB。對於給定容量的儲存裝置,減少對於新擦除區塊的要求,可以允許不太頻繁地執行廢棄項目收集且降低介質上的磨損頻率。
圖3A至圖3E是自根據一些實施例的儲存裝置讀取的示意圖。將使用圖1的儲存裝置100作為實例。在圖3A至圖3D中,為簡潔起見將省略對類似於圖2A至圖2E的元件的元件的描述。參看圖1及圖3A,映射表310表示在如圖2A中所述寫入資料之後的狀態。意即,已儲存於資料記憶體304-1及條目311-3中的資料D已添加至映射表310;然而,條目311-3包含DCV不存在或者並不有效的指示。
控制器102經配置以接收讀取請求302。此處,讀取請求302是讀取邏輯區塊位址1的請求。作為回應,控制器102經配置以存取映射表310且讀取實體區塊位址23。使用所述實體區塊位址,控制器102經配置以自資料記憶體304-1讀取資料D。控制器
102經配置以用資料D對讀取請求302做出回應。具體而言,因為條目311-3包含DCV不存在或並不有效的指示,所以控制器102經配置以用資料D不加修改地做出回應。
參看圖1及圖3B,在一些實施例中,當映射表310處於如圖2B中所述寫入資料之後的狀態時,控制器102可以接收到讀取請求302。意即,起初將資料D寫入至資料記憶體304-1且寫入經更新資料D',從而使得DCV'儲存於DCV記憶體304-2中。
因此,控制器102經配置以再次接收讀取請求302,且作為回應,藉由存取實體區塊位址23而自資料記憶體304-1讀取資料D。然而,當條目311-3中存在有效的DCV欄位時,控制器102經配置以存取DCV記憶體304-2以讀取DCV'。控制器102經配置以使用資料D及DCV'作為逆DCV函數308-2的輸入,以將資料D及DCV'組合成資料D'。控制器102經配置以用資料D'對讀取請求302做出回應。
雖然此種技術涉及讀取量的增加,但是讀取量增加的影響可能較小,甚至可以忽略。舉例而言,在一些實施例中,記憶體104的內部讀取頻寬高於儲存裝置100的外部介面頻寬。即使對於讀取效能的影響並非可以忽略的,讀取亦不會導致利用已擦除區塊、重寫鄰近磁軌、或類似的。因此,可能使讀取效能降低的操作的影響小於能減少延時、改良延時一致性、或類似的的相關操作。
參看圖1及圖3C,在一些實施例中,當映射表310處於如圖2C所述寫入資料之後的狀態時,控制器102可以接收到讀取請求302。意即,起初將資料D寫入至資料記憶體304-1,寫入經更新資料D'從而使得DCV'儲存於DCV記憶體304-2中,且寫入
另一經更新資料D",從而使得DCV"儲存於DCV記憶體304-2中。
控制器102再次經配置以存取條目311-3以獲得實體區塊位址23,使用實體區塊位址23存取資料記憶體304-1以存取資料D,且使用DCV位址存取DCV記憶體304-2。然而,因為資料D"是最近寫入至邏輯區塊位址1的資料,所以DCV"是在DCV記憶體304-2中可以獲得且存取的DCV。
控制器102經配置以使用DCV"及資料D作為逆DCV函數308-2的輸入以產生資料D"。控制器102經配置以用資料D"對讀取請求302做出回應。因此,即使存取了初始資料D,亦可以再生最近資料D"。具體而言,產生資料D"時未使用資料D'及相關聯DCV'。
如圖3A至圖3C中所示,控制器102經配置以基於DCV欄位是否指示DCV存在或有效而以不同方式工作。然而,在其他實施例中,控制器102可經配置以類似於圖3B及圖3C工作,即使當僅有初始資料儲存於資料記憶體304-1中時亦是如此。具體而言,條目311的DCV欄位可以初始化成指示標識DCV,無論是在DCV欄位本身中還是在DCV記憶體304-2內。標識DCV指示,當使用初始資料D作為對逆DCV函數308-2的輸入時產生資料D。因此,不管比較實際資料得到的DCV是否存在或有效,控制器102都可以執行基本上相同的操作。
參看圖1及圖3D,在一些實施例中,資料D的更早的初始版本是可以存取的。具體而言,控制器102可經配置以接收源讀取請求302-1。此處源讀取請求302-1參考邏輯區塊位址1。作為回應,控制器102經配置以存取資料記憶體304-1的實體區塊
位址23中的資料D,類似於相對於圖3A描述的存取。然而,條目311-3的DCV欄位是有效的,類似於圖3B及圖3C。意即,存在邏輯區塊位址1中的資料的經更新版本。不同於圖3B及圖3C,傳回初始資料D而非再生的當前資料D'或D"。因此,可以使用類似於源讀取請求302-1的一個請求或多個請求來讀取儲存在儲存裝置100上的資料的更早版本。
雖然使用自條目311-3的DCV欄位讀取DCV位址作為實例,但是在其他實施例中,是自條目311-3的DCV欄位讀取DCV值。舉例而言,可以自條目311-3讀取圖3B的DCV'及圖3C的DCV"。
參看圖1及圖3E,在一些實施例中,當映射表310處於如圖2C所述寫入資料之後的狀態時,控制器102可以接收到讀取請求302-2。意即,起初將資料D寫入至資料記憶體304-1,寫入經更新資料D',從而使得DCV'儲存於DCV記憶體304-2中,且寫入另一經更新資料D",從而使得DCV"儲存於DCV記憶體304-2中。然而,在此實施例中,維護一或多個中間DCV。在此實例中,DCV"是當前DCV;然而,亦維護DCV'。條目311-4中的0x55的額外參數表示DCV'的指示,即,其值或位址。
在此實例中,讀取請求302-2是對於LBA1'的請求。LBA1'將資料的狀態表示為資料D'。因此,控制器102經配置以存取DCV'位址,即DCV'儲存於DCV記憶體304-2中的位置的位址。因此,DCV'可以被存取且在逆DCV函數308-2中與資料D組合以產生資料D'。
雖然僅僅使用一個中間DCV(即,DCV')作為實例,但
是在其他實施例中,可以儲存任何數目的中間DCV。舉例而言,DCV(DCV'、DCV"、DCV'''及DCV'''')可以全部儲存於DCV記憶體304-2中。此等DCV中的每一者可以與資料D組合以分別產生諸如資料D'、D"、D'''及D''''的資料的稍後版本。
圖4A至圖4B是根據一些實施例的儲存裝置的示意圖。參看圖4A,在一些實施例中,儲存裝置400包含控制器402,其類似於圖1的儲存裝置100的控制器102。然而,儲存裝置400包含非揮發性記憶體404-1及揮發性記憶體404-2。非揮發性記憶體404-1的實例包含諸如快閃記憶體、STT-MRAM、相變RAM、NFGM或PoRAM、磁性或光學媒體、或類似的記憶體。揮發性記憶體404-2的實例包含DRAM、根據諸如DDR、DDR2、DDR3、DDR4的各種標準的DDR SDRAM、SRAM、或類似的。
控制器402經配置以將資料406儲存在非揮發性記憶體404-1中且將DCV 408儲存在揮發性記憶體404-2中。控制器402亦可經配置以將映射表410儲存在揮發性記憶體404-2中。
在一些實施例中,使用儲存裝置400使得一致的延時優先於一致性。因此,可以放鬆資料的一致性。舉例而言,幾個網際網路規模的應用將寬鬆界限內的一致性視為是可接受的。此種應用包含推特(tweets)及照片標籤(photo tagging)。然而,對於此種應用,延時的劇增可能是不可接受的。此等界限內的資料,表示為DCV 408,儲存於揮發性記憶體404-2中。控制器402經配置以將DCV 408的溢出沖洗至非揮發性記憶體404-1。在一些實施例中,控制器402經配置以如上文在圖2E中所述將DCV 408沖洗成非揮發性記憶體404-1的資料406。雖然揮發性記憶體404-2
可以受到電池、超級電容器或NVRAM的備用支援;然而,在一些實施例中,此備用並非必需的,因為導致DCV 408的損耗的故障將仍然在可接受的界限內。省去備用的電池、超級電容器或NVRAM可以減少儲存裝置400的成本。
在一些實施例中,在將資料提交至非揮發性記憶體404-1之前,可以使用快取記憶體412快取所述資料。舉例而言,來自圖2A至圖2D中描述的寫入請求的資料可以儲存於快取記憶體412中。無需使用圖2A至圖2D中描述的各種技術就能執行此儲存。然而,當資料自快取記憶體412移出、自快取記憶體412提交、或類似的情形時,可使用圖2A至圖2D中描述的技術。在具體實例中,可以藉由多個寫入請求更新儲存於快取記憶體412中的資料區塊。此等更新並不涉及計算DCV。當資料區塊要從快取記憶體412移出或提交時,可以如圖2A至圖2D所述基於資料移出或提交時的狀態產生DCV。
參看圖4B,在一些實施例中,儲存裝置401類似於圖4A的儲存裝置400。然而,在儲存裝置401中,控制器402經配置以在揮發性記憶體402-2中快取DCV,表示為經快取DCV 408-1。具體而言,控制器402經配置以在揮發性記憶體404-2中維護頻繁存取的DCV。控制器402經配置以使用快取算法、試探法、或類似的來確定要在快取記憶體中維護哪些DCV 408-1。控制器402經配置以將其他DCV 408-1傳送至儲存於非揮發性記憶體404-1中的DCV 408-2,且反之亦然。因此,在一些實施例中,可以快取頻繁存取的或大量存取的資料。此外,因為DCV 408-1的大小小於對應的資料406,所以若快取了實際資料,則可以在揮發性記憶
體404-2中維護更大數目的更新。
圖5是根據一些實施例的儲存裝置中的頁大小的示意圖。在一些實施例中,資料頁502及DCV頁504儲存於相同記憶體500中。此處,資料頁502-1及502-2及DCV頁504-1至504-4是儲存於記憶體500中的資料頁502及DCV頁504的實例。此處,示出DCV頁504較小以表示DCV的大小小於源資料。在此實例中,DCV頁504是資料頁502的大小的一半;然而,在其他實施例中,根據使用的具體DCV函數,DCV頁504的大小是不同的。
在一些實施例中,資料頁502及DCV頁504都可能會遭受相同的限制,諸如缺乏就地寫入,此等限制可能會增加延時。如上文所述,在DCV改變時總體上維護資料頁502,從而使得DCV頁的改變帶來延時的影響。然而,因為DCV頁504的大小較小,所以延時的影響可以減少。舉例而言,DCV頁504可以儲存於與資料頁502不同的區塊中。因此,當在DCV頁504中累積更多DCV時,可以對彼等區塊執行廢棄項目收集以恢復空閒區塊。因為DCV頁504較小,所以廢棄項目收集花費的時間可能較少及/或執行的頻率較少。此外,資料頁502保持有效的時間可能比DCV頁504長。因此,儲存資料頁502的區塊進行廢棄項目收集的可能性比儲存DCV頁504的區塊小。此外,因為DCV頁504快速失效的可能性可能更大,所以儲存DCV頁504的區塊中的更多頁將無效,從而減少了廢棄項目收集操作的時間,因為需要複製的有效頁將更少。
圖6是根據一些實施例的固態儲存裝置的示意圖。在一些實施例中,SSD 600包含控制器602,其類似於圖1的儲存裝置
100的控制器102。然而,SSD 600包含快閃記憶體604-1、DRAM 604-2及SRAM 604-3。控制器602經配置以將資料606及DCV 608-1儲存在快閃記憶體604-1中,在DRAM 604-2中快取DCV 608-2,且將映射表610儲存在SRAM 604-3中。雖然已描述了記憶體的具體配置,但是在其他實施例中,SSD 600在不同配置中包含不同記憶體,及/或資料606、DCV 608-1及608-2及映射表610的分佈是不同的。舉例而言,SSD 600可具有類似於圖1、圖4A及圖4B的配置。
儲存於快閃記憶體604-1中的資料606及DCV 608-1容易發生廢棄項目收集,其中擦除含有資料606及DCV 608-1的頁,從而潛在地帶來額外的延時。然而,如上文所述,DCV 608-1的大小小於對應的資料606。意即,快閃記憶體604-1中的用於儲存資料606的頁大於用於儲存DCV 608-1的頁。
使用DCV能減少SSD 600中的寫入修改(異地更新)。此舉使得可能需要回收的無效區塊最少。此舉又會降低廢棄項目收集的頻率。具體而言,SSD 600可能會處理大量更新的I/O處理量(諸如對於大資料及雲端應用),且廢棄項目收集頻率較低,因此較高延時的概率較低,且,具體而言,延時劇增的概率較低。具體地說,在對資料606進行寫入更新時,資料606的第一複本在快閃記憶體604-1中保持有效。在快閃記憶體604-1中且在DRAM 604-2中作為經快取DCV 608-2而被快取的DCV 608-1會增加快閃記憶體604-1中的頁的壽命,即使對於寫入更新繁重的工作負荷亦是如此。此外,如上文所述,可以獲得資料606的更早版本。除了改良延時之外,所述架構亦可以改良閃存單元的磨損。
具體而言,控制器602並不使先前頁無效且請求用於更新資料的新頁,而是經配置以在快閃記憶體604-1中使先前頁維持有效/現用,連同表示先前頁與更新之間的差異的DCV。在後續讀取操作時,先前頁及DCV被控制器602並行讀取且組合起來提供最新的頁。如上文所述,關於在哪裡儲存DCV(諸如在快閃記憶體604-1、DRAM 604-2、SRAM 604-3或此些記憶體的組合內)存在多種配置。另外,可以快取DCV,諸如藉由在DRAM 604-2上快取現用或「熱」頁DCV,且在快閃記憶體604-1上在DCV 608-1中維護持久的複本。
在一些實施例中,即使當讀取及寫入並非不對稱、具有相同使用量(same overhead)、或類似的時,本文所述的儲存裝置仍然可具有效能益處。具體而言,若寫入時間隨著寫入大小按比例縮放,且DCV的大小小於對應的資料區塊的大小,則寫入時間可以減少。
在一些實施例中,DRAM 604-2用於快取寫入請求及/或寫入資料。當處理涉及讀取資料606中的現有資料的寫入請求時,對應的資料606作為經快取資料606-1儲存於DRAM 604-2中。控制器602經配置以使用儲存於DRAM 604-2中的經快取資料606-1以作為對上述DCV函數的輸入。意即,控制器602並非自儲存於快閃記憶體604-1中的資料606中讀取資料,而是經配置以自儲存於DRAM 604-2中的經快取資料606-1中讀取資料。
在一些實施例中,快閃記憶體604-1劃分成平面及通道。SSD 600以頁的粒度讀取及寫入,且以區塊的粒度擦除,區塊的粒度可以包含幾個頁。映射策略限定轉譯的粒度,即,頁水平的映射
可能需要較大佔據空間但是提供更大程度的靈活性。區塊水平的映射可能使用較小的佔用面積,但是可能在置放態樣有限制性。已經提出了「混合」策略的幾種變化形式以利用基於頁的映射及基於區塊的映射的組合。映射表610中的映射可以使用任何此種映射技術。
雖然已作為一實例描述了SSD 600,但是在其他實施例中,可使用其他類型的儲存媒體,諸如疊瓦式磁性驅動器。具體而言,在疊瓦式磁碟上,寫入可能會與先前寫入的磁軌的一部分重疊。此舉會導致寫入效能降低,且亦導致覆寫鄰近磁軌。疊瓦式磁性驅動器藉由在韌體中加以管理而隱藏了此種複雜情況。寫入效能較低(當寫入至鄰近磁軌)時可能會導致不一致的延時,且是大多數雲端應用的關注點。如本文所述使用DCV能減少覆寫,因此對於更新密集型工作負荷提供一致的交易延時。
圖7是具有根據一些實施例的版本儲存系統的系統的示意圖。在一些實施例中,系統700包含主機702,其藉由通信鏈路706耦接至儲存裝置704。主機702是使用儲存裝置的資料儲存能力的系統,諸如通用處理器、數位信號處理器(DSP)、特殊應用積體電路、微控制器、可程式化邏輯裝置、分立電路、此類裝置的組合、或類似的。在一些實施例中,主機702是電腦、伺服器、工作站、或類似的。主機702經配置以執行軟體,例如作業系統及應用程式。主機702耦接至記憶體708。記憶體708包含用於主機702的操作記憶體及/或快取記憶體,諸如DRAM、根據諸如DDR、DDR2、DDR3、DDR4的各種標準的DDR SDRAM、SRAM、或類似的。雖然記憶體708示出為與主機702分開,但是在一些實施
例中,記憶體708是主機702的一部分。
通信鏈路706表示主機702及儲存裝置704經配置以用以通信的介質。舉例而言,通信鏈路706是諸如USB、SCSI、PCIe、SAS、PATA、SATA、NVMe、UFS、光纖通道、以太網路、RDMA、Infiniband或其他類似鏈路的鏈路。主機702及儲存裝置704中的每一者經配置以具有經由此種通信鏈路通信的介面。
在一些實施例中,儲存裝置704是如上文所述的儲存裝置,其類似於儲存裝置100、400、401及600,且配置成如諸如在圖2A至圖3D中所述而操作。主機702可經配置以向儲存裝置704讀取及寫入資料。儲存裝置704如上所述配置以使用DCV改良系統700的操作。
然而,在其他實施例中,主機702經配置以執行類似於上文相對於DCV所述的操作。舉例而言,主機702可以包含儲存裝置驅動程式710。儲存裝置驅動程式710表示可在與儲存裝置704一起工作的主機702上執行的軟體。
具體而言,儲存裝置驅動程式710經配置以執行類似於上文相對於DCV所述的操作。意即,藉由儲存裝置驅動程式710執行控制器102、402、602、或類似的執行的上述操作。此外,使用類似於記憶體104、404-2、604-2及604-3的至少一部分的記憶體708。意即,舉例而言,使用記憶體708儲存映射表110、410或610、DCV 108或408及/或經快取DCV 408-1或608-2。
在一些實施例中,映射表中可能不需要存在相對於圖2A至圖3D描述的邏輯區塊位址及實體區塊位址的關聯。儲存裝置驅動程式710可經配置以維持邏輯位址與DCV指示的關聯。意即,
儲存裝置驅動程式710經配置以使用類似於實體區塊位址的邏輯區塊位址以作為儲存初始資料D的指示。在一些實施例中,儲存裝置驅動程式710經配置以使用儲存裝置704以作為相對於圖2A-3D描述的資料記憶體204-1或304-1。
在一些實施例中,對於邏輯區塊位址,儲存裝置驅動程式710經配置以向儲存裝置704上的邏輯區塊位址寫入初始資料。儲存裝置驅動程式710經配置以在記憶體708中快取初始資料。在對資料進行後續改變時,儲存裝置驅動程式710經配置以使用經快取初始資料計算DCV且向儲存裝置寫入DCV。在其他實施例中,儲存裝置驅動程式710經配置以在記憶體708中維護DCV。上述任何DCV管理技術都可以用於儲存裝置驅動程式710中。
圖8是根據一個實施例的伺服器的示意圖。在此實施例中,伺服器800可以包含獨立伺服器、機架式伺服器(rack-mounted server)、刀片伺服器(blade server)、或類似的。伺服器800包含儲存裝置802及處理器804。處理器804耦接至儲存裝置802。雖然僅僅示出了一個儲存裝置802,但是可以存在任何數目的儲存裝置802。儲存裝置802可以是上述儲存裝置中的任一種。因此,可以改良伺服器800的效能。
圖9是根據一個實施例的伺服器系統的示意圖。在此實施例中,伺服器系統900包含多個伺服器902-1至902-N。伺服器902各自耦接至一個管理器904。伺服器902中的一或多個可以類似於上述伺服器800。
管理器904經配置以管理伺服器902及伺服器系統900的其他組件。在一個實施例中,管理器904可經配置以監視伺服
器902的效能。舉例而言,伺服器902中的每一者可以包含如上文所述的儲存裝置。
圖10是根據一個實施例的資料中心的示意圖。在此實施例中,資料中心1000包含多個伺服器系統1002-1至1002-N。伺服器系統1002可以類似於上文在圖9中所述的伺服器系統900。伺服器系統1002耦接至網路1004,諸如網際網路。因此,伺服器系統1002可以藉由網路1004與各種節點1006-1至1006-M通信。舉例而言,節點1006可以是用戶端電腦、其他伺服器、遠端資料中心、儲存系統、或類似的。
可使用其中一致效能是重要因素的實施例,諸如在雲端服務及大規模延時關鍵服務中。此種服務的實例包含資料分析、機器學習、音訊及視訊串流傳輸;然而,在其他實施例中,服務類型是不同的。一致延時可以是高優先級因素,且一些實施例使用採用寬鬆一致性要求的分佈式軟體堆疊以支援更可預測的效能。雖然諸如資源共用及排隊等幾個因素都會導致加載延時的不一致,但是SSD中的廢棄項目收集可能占到相當大的份額。
當前軟體堆疊可以使用複製法,但是此種方案無法解決問題的根本(諸如SSD內的廢棄項目收集),因此,所提供的增益是有限的。此外,複製本身成本更高,產生的網路流量增加,此可能進一步影響網路延時,且亦使用軟體層中的協調。
對於高速資料產生,可使用更快的資料分析。諸如搜尋引擎及社交媒體的在線服務的一個重要的設計目標是提供可預測的效能。在此情境中,平均回應時間可能並不代表效能;最差情況效能可能更受關注。回應時間的變化可能導致服務的組成部分中的
更高拖尾延時。因此,使用者可能會體驗到回應時間很長。根據工作負荷、SSD韌體策略而定,可能不頻繁或頻繁發生拖尾延時劇增,但是在大多數情況下,拖尾延時劇增足以損害使用者體驗及服務提供者在當前競爭激烈的市場中的聲譽。
拖尾延時的害處在諸如亞馬遜網路服務系統(Amazon AWS)及谷歌雲端(Google Cloud)的共用基礎結構上進一步加劇。幾家雲端供應商對此關注點都有共識,且認為在設計硬體/軟體系統架構時是重要難題之一。雖然諸如資源共用及排隊的幾個因素都會導致加載延時的不一致,但是SSD中的廢棄項目收集占到相當大的份額。由於快閃記憶體的特性不允許就地更新,所以SSD韌體異地寫入更新且使先前複本無效。為了回收空間,需要先擦除無效空間,接著才能重新寫入無效空間。然而,與讀取或寫入操作相比(以微秒計),擦除操作明顯更慢(以毫秒計),且通常以更粗糙的粒度進行。此處理構成SSD中的廢棄項目收集,且在執行廢棄項目收集時通道無法為讀取/寫入請求提供服務。因此,廢棄項目收集可能會嚴重影響關鍵操作的延時(及效能)。在一些情況下,在廢棄項目收集期間,讀取延時可能會增加100倍。此外,隨著SSD老化,廢棄項目收集器的運行更頻繁。
在雲端態樣重要的幾個應用類型都有繁重的寫入更新。模擬現實世界使用情況的一個此類實例是雅虎雲端服務基準測試(Yahoo Cloud Serving Benchmar,YCSB),此為用於評估雲端系統的基準測試程式組。在YCSB中提供的更新繁重的工作負荷中,存取比率可能是50%的讀取、0%的插入及50%的更新。電子商務應用是此種應用的實例,包含諸如儲存記錄使用者會話中的最近
動作、電子商務使用者的典型動作的操作。在此類別的應用中,由於SSD中的廢棄項目收集導致的拖尾延時效應可能在使用者回應時間中產生較高的延時。在另一工作負荷實例中,存取比率是95%的讀取、0%的插入及5%的更新。實例是社交媒體,即使較低的更新速率亦可能觸發GC且有悖服務級別的目標。舉例而言,對於照片標籤而言,添加標籤是更新,但是大多數操作都是讀取標籤。
大多數大資料及雲端應用將可縮放性及一致效能的優先級排在諸如交易(原子性、一致性、隔離性、耐久性或ACID)屬性的更傳統的態樣之前。強一致性的縮放性不強,且大多數雲端應用偏重更寬鬆的交易一致性且以一致的效能為目標。因此在大多數常用雲端規模分佈式堆疊上廣泛使用弱一致性模型。此舉在繁重負荷的高度並行的系統中提供I/O效能的明顯改良。
雖然所有雲端應用儲存大量資料,且設計成隨著資料佔用空間的增加而縮放,但是僅僅一個子組的存取頻率高於其他子組。此不均勻分佈代表資料中心中的「熱」(或#trending)資料存取模式。
本文所述的實施例可以用於多種應用,且提供延時減少及/或更一致的益處。上述雲端應用只是此種應用的實例。
雖然已經根據具體實施例描述了結構、裝置、方法及系統,但是熟習此項技術者將容易認識到對於所公開的實施例的許多變化是可能的,且任何變化因而應當被認為是在本文中所公開的結構、裝置及系統的精神及範圍內。因此,在不脫離所附申請專利範圍的精神及範圍的情況下,熟習此項技術者可以作出許多修改。
100:儲存裝置
102:控制器
104:記憶體
106:資料
108:DCV
109-1:DCV函數
109-2:DCV電路
110:映射表
111:記憶體介面
Claims (20)
- 一種儲存裝置,其包括:記憶體;及控制器,其包含耦接至所述記憶體的記憶體介面,所述控制器經配置以:接收要寫入至與儲存於所述記憶體中的第一資料及儲存於所述記憶體中的第一差分壓縮值相關聯的位址的寫入資料,所述第一差分壓縮值的決定是根據散列函數及壓縮函數在所述第一資料上的結果,其中所述第一差分壓縮值在對應初始的所述第一資料是無效的狀態;基於所述寫入資料及所述第一資料計算第二差分壓縮值;將所述第二差分壓縮值儲存在所述記憶體中,所述第二差分壓縮值的決定是根據散列函數及壓縮函數在所述寫入資料及所述第一資料上的結果;及改變所述位址的關聯以參考所述第二差分壓縮值而非所述第一差分壓縮值。
- 如申請專利範圍第1項所述的儲存裝置,其中所述控制器進一步經配置以:接收與所述位址相關聯的讀取請求;讀取所述第一資料;讀取所述第二差分壓縮值;組合所述第一資料與所述第二差分壓縮值以構成第二資料;及用所述第二資料對所述讀取請求做出回應。
- 如申請專利範圍第1項所述的儲存裝置,其中所述控制器進一步經配置以:接收與所述位址相關聯的讀取請求;讀取所述第一資料;及用所述第一資料對所述讀取請求做出回應。
- 如申請專利範圍第1項所述的儲存裝置,其中所述控制器進一步經配置以:維持所述位址與所述第一差分壓縮值的關聯;接收與所述位址相關聯的讀取請求;讀取所述第一資料;讀取所述第一差分壓縮值;組合所述第一資料與所述第一差分壓縮值以構成第三資料;及用所述第三資料對所述讀取請求做出回應。
- 如申請專利範圍第1項所述的儲存裝置,其中:所述位址被稱作邏輯位址;且所述控制器進一步經配置以:讀取所述第一資料;讀取所述第二差分壓縮值;組合所述第一資料與所述第二差分壓縮值以構成第二資料;儲存所述第二資料在所述記憶體中的實體位址中;及更新所述邏輯位址的所述關聯以參考儲存所述第二資料的所述實體位址。
- 如申請專利範圍第1項所述的儲存裝置,其中所述控制 器進一步經配置以維護在所述記憶體中包含多個條目的映射表,每個條目包含邏輯位址、實體位址及差分壓縮值的指示。
- 如申請專利範圍第1項所述的儲存裝置,其中:所述記憶體包括非揮發性記憶體及揮發性記憶體;且所述控制器進一步經配置以將所述第一資料儲存在所述非揮發性記憶體中,且將所述第二差分壓縮值儲存在所述揮發性記憶體中。
- 如申請專利範圍第7項所述的儲存裝置,其中所述控制器進一步經配置以將所述第二差分壓縮值自所述揮發性記憶體傳送至所述非揮發性記憶體。
- 如申請專利範圍第1項所述的儲存裝置,其中所述第一資料儲存於所述記憶體的無法執行就地寫入的至少一部分中。
- 如申請專利範圍第1項所述的儲存裝置,其中所述控制器進一步經配置以:接收寫入請求連同與儲存於所述記憶體中的資料不關聯的新位址;向所述記憶體寫入所述寫入請求的資料;及產生寫入至所述記憶體的所述資料與所述新位址的關聯。
- 一種版本儲存方法,其包括:接收要寫入至與儲存於記憶體中的第一資料及儲存於所述記憶體中的第一差分壓縮值相關聯的位址的寫入資料,所述第一差分壓縮值的決定是根據散列函數及壓縮函數在所述第一資料上的結果,其中所述第一差分壓縮值在對應初始的所述第一資料是無效的狀態; 基於所述寫入資料及所述第一資料計算第二差分壓縮值,所述第二差分壓縮值的決定是根據散列函數及壓縮函數在所述寫入資料及所述第一資料上的結果;儲存所述第二差分壓縮值在所述記憶體中;及改變所述位址的關聯以參考所述第二差分壓縮值而非所述第一差分壓縮值。
- 如申請專利範圍第11項所述的版本儲存方法,其進一步包括:接收與所述位址相關聯的讀取請求;讀取所述第一資料;讀取所述第二差分壓縮值;組合所述第一資料與所述第二差分壓縮值以構成第二資料;及用所述第二資料對所述讀取請求做出回應。
- 如申請專利範圍第11項所述的版本儲存方法,其進一步包括:接收與所述位址相關聯的讀取請求;讀取所述第一資料;及用所述第一資料對所述讀取請求做出回應。
- 如申請專利範圍第11項所述的版本儲存方法,其中:所述位址被稱作邏輯位址;且所述方法進一步包括:讀取所述第一資料;讀取所述第二差分壓縮值; 組合所述第一資料與所述第二差分壓縮值以構成第二資料;儲存所述第二資料在所述記憶體中的實體位址中;及更新所述邏輯位址的所述關聯以參考所述實體位址。
- 如申請專利範圍第11項所述的版本儲存方法,其進一步包括維護在所述記憶體中包含多個條目的映射表,每個條目包含邏輯位址、實體位址及差分壓縮值的指示。
- 如申請專利範圍第11項所述的版本儲存方法,其進一步包括:將所述第一資料儲存在非揮發性記憶體中;及將所述第二差分壓縮值儲存在揮發性記憶體中。
- 如申請專利範圍第16項所述的版本儲存方法,其進一步包括將所述第二差分壓縮值自所述揮發性記憶體傳送至所述非揮發性記憶體。
- 一種版本儲存系統,其包括:通信介面;及處理器,其藉由所述通信介面耦接至記憶體,所述處理器經配置以:接收要寫入至與儲存於耦接至所述處理器的儲存裝置中的第一資料及第一差分壓縮值相關聯的位址的寫入資料,所述第一差分壓縮值的決定是根據散列函數及壓縮函數在所述第一資料上的結果;基於所述寫入資料及所述第一資料計算第二差分壓縮值,所述第二差分壓縮值的決定是根據散列函數及壓縮函數在所述寫入資料及所述第一資料上的結果;及 改變所述位址的關聯以參考取代所述第一差分壓縮值的所述第二差分壓縮值。
- 如申請專利範圍第18項所述的版本儲存系統,其進一步包括:記憶體,其耦接至所述處理器;其中所述處理器進一步經配置以將所述第二差分壓縮值儲存在所述記憶體中。
- 如申請專利範圍第18項所述的版本儲存系統,其中所述處理器進一步經配置以將所述第二差分壓縮值儲存在所述儲存裝置中。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662279655P | 2016-01-15 | 2016-01-15 | |
US62/279,655 | 2016-01-15 | ||
US15/086,020 US10061523B2 (en) | 2016-01-15 | 2016-03-30 | Versioning storage devices and methods |
US15/086,020 | 2016-03-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201732602A TW201732602A (zh) | 2017-09-16 |
TWI712885B true TWI712885B (zh) | 2020-12-11 |
Family
ID=59313774
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105136337A TWI712885B (zh) | 2016-01-15 | 2016-11-09 | 版本儲存裝置及其方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10061523B2 (zh) |
JP (1) | JP6713934B2 (zh) |
KR (1) | KR102449585B1 (zh) |
CN (1) | CN107025070B (zh) |
TW (1) | TWI712885B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6982468B2 (ja) * | 2017-10-27 | 2021-12-17 | キオクシア株式会社 | メモリシステムおよび制御方法 |
KR102433101B1 (ko) * | 2017-11-06 | 2022-08-18 | 에스케이하이닉스 주식회사 | 반도체 장치 및 이를 포함하는 반도체 시스템 |
US10725983B2 (en) | 2017-12-29 | 2020-07-28 | Huawei Technologies Co., Ltd. | Systems and methods for database management using append-only storage devices |
CN109325266B (zh) * | 2018-08-29 | 2023-11-10 | 天津大学 | 面向在线云服务的响应时间分布预测方法 |
CN109445703B (zh) * | 2018-10-26 | 2019-10-25 | 黄淮学院 | 一种基于块级数据去重的Delta压缩存储组件 |
US11226774B2 (en) * | 2019-10-17 | 2022-01-18 | EMC IP Holding Company LLC | Deep data-compression |
US11989456B2 (en) * | 2019-12-31 | 2024-05-21 | Micron Technology, Inc. | Mobile storage random read performance estimation enhancements |
CN115705270A (zh) * | 2021-08-06 | 2023-02-17 | 富联精密电子(天津)有限公司 | 硬盘在位检测装置及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100241790A1 (en) * | 2009-03-18 | 2010-09-23 | Korea Advanced Institute Of Science And Technology | Method of storing data into flash memory in a dbms-independent manner using the page-differential |
TW201344564A (zh) * | 2011-12-22 | 2013-11-01 | Intel Corp | 矩陣乘法累積指令 |
US20140059279A1 (en) * | 2012-08-27 | 2014-02-27 | Virginia Commonwealth University | SSD Lifetime Via Exploiting Content Locality |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8688897B2 (en) | 2010-05-28 | 2014-04-01 | International Business Machines Corporation | Cache memory management in a flash cache architecture |
WO2013096934A1 (en) * | 2011-12-23 | 2013-06-27 | Akamai Technologies, Inc. | Host/path-based data differencing in an overlay network using a compression and differencing engine |
JP2015517697A (ja) | 2012-05-23 | 2015-06-22 | 株式会社日立製作所 | 二次記憶装置に基づく記憶領域をキャッシュ領域として用いるストレージシステム及び記憶制御方法 |
US10037285B2 (en) | 2014-01-14 | 2018-07-31 | Georgia Tech Research Corporation | Multi-tiered storage systems and methods for adaptive content streaming |
-
2016
- 2016-03-30 US US15/086,020 patent/US10061523B2/en active Active
- 2016-11-09 TW TW105136337A patent/TWI712885B/zh active
- 2016-12-27 KR KR1020160180318A patent/KR102449585B1/ko active IP Right Grant
-
2017
- 2017-01-10 JP JP2017001652A patent/JP6713934B2/ja active Active
- 2017-01-13 CN CN201710026009.3A patent/CN107025070B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100241790A1 (en) * | 2009-03-18 | 2010-09-23 | Korea Advanced Institute Of Science And Technology | Method of storing data into flash memory in a dbms-independent manner using the page-differential |
TW201344564A (zh) * | 2011-12-22 | 2013-11-01 | Intel Corp | 矩陣乘法累積指令 |
US20140059279A1 (en) * | 2012-08-27 | 2014-02-27 | Virginia Commonwealth University | SSD Lifetime Via Exploiting Content Locality |
Also Published As
Publication number | Publication date |
---|---|
JP2017126334A (ja) | 2017-07-20 |
US10061523B2 (en) | 2018-08-28 |
US20170206024A1 (en) | 2017-07-20 |
KR20170085951A (ko) | 2017-07-25 |
CN107025070B (zh) | 2019-07-16 |
JP6713934B2 (ja) | 2020-06-24 |
CN107025070A (zh) | 2017-08-08 |
KR102449585B1 (ko) | 2022-09-30 |
TW201732602A (zh) | 2017-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI712885B (zh) | 版本儲存裝置及其方法 | |
US9996542B2 (en) | Cache management in a computerized system | |
US10359954B2 (en) | Method and system for implementing byte-alterable write cache | |
US10521131B2 (en) | Storage apparatus and storage control apparatus | |
US9910777B2 (en) | Enhanced integrity through atomic writes in cache | |
US20140282514A1 (en) | Virtualization support for storage devices | |
EP3382557B1 (en) | Method and apparatus for persistently caching storage data in a page cache | |
US20140115244A1 (en) | Apparatus, system and method for providing a persistent level-two cache | |
TW201421240A (zh) | 資料儲存系統、資料結構及資料儲存方法 | |
US9104553B2 (en) | Extending cache for an external storage system into individual servers | |
US11188430B2 (en) | Determine whether to rebuild track metadata to determine whether a track format table has a track format code for the track format metadata | |
EP3446221B1 (en) | Adapted block translation table (btt) | |
US20190102306A1 (en) | Maintaining track format metadata for target tracks in a target storage in a copy relationship with source tracks in a source storage | |
US10747667B2 (en) | Memory management of multi-level metadata cache for content-based deduplicated storage | |
US11010091B2 (en) | Multi-tier storage | |
US9760577B2 (en) | Write-behind caching in distributed file systems | |
US11789917B2 (en) | Data deduplication in a storage system | |
US11586353B2 (en) | Optimized access to high-speed storage device | |
KR102403063B1 (ko) | 모바일 디바이스 및 모바일 디바이스의 메모리 관리 방법 | |
EP4220414A1 (en) | Storage controller managing different types of blocks, operating method thereof, and operating method of storage device including the same | |
US11663128B1 (en) | Techniques for performing metadata updates for cache consistency | |
Min et al. | Extending the lifetime of object-based NAND flash device with STT-RAM/DRAM hybrid buffer | |
US20230236737A1 (en) | Storage Controller Managing Different Types Of Blocks, Operating Method Thereof, And Operating Method Of Storage Device Including The Same | |
KR102065033B1 (ko) | 메모리 상에서 고속 데이터 저장 및 복원 방법 및 이러한 방법을 수행하는 메모리 | |
TW202349214A (zh) | 輸入/輸出裝置的位址變換預取出 |