TWI497293B - 固態儲存裝置內之資料管理 - Google Patents
固態儲存裝置內之資料管理 Download PDFInfo
- Publication number
- TWI497293B TWI497293B TW099140110A TW99140110A TWI497293B TW I497293 B TWI497293 B TW I497293B TW 099140110 A TW099140110 A TW 099140110A TW 99140110 A TW99140110 A TW 99140110A TW I497293 B TWI497293 B TW I497293B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- solid state
- state storage
- write
- block
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
Description
本發明一般係關於固態儲存裝置(SSD)中的資料管理,具體而言,係關於控制SSD中的資料儲存與抹除程序的方法與設備。
固態儲存器係利用電子電路(一般係積體電路)而非習知磁性或光學媒體(例如光碟或磁帶),儲存資料的非揮發記憶體。如快閃記憶體裝置的SSD目前正革命性地改變資料儲存領域。相較於習知儲存裝置,此等裝置因為缺少移動元件而較穩定,且與硬碟機(HDD)相比,此等裝置因提供更大的頻寬、更省電的功能以及更好的隨機I/O(輸入/輸出)效能。
在SSD中,儲存器有許多儲存區或「儲存塊」,每區皆包含一組可寫入資料的儲存位置。以下將參照NAND為主的快閃記憶裝置來描述SSD的許多運作特性。然而,熟此技藝者當知,類似原則亦適用於其他類型的SSD。舉例而言,快閃記憶體係以許多包含資料寫入位置的儲存塊組合而成,稱作「頁」。一般快閃頁的大小係4 kB,且一般快閃塊係由64個快閃資料頁組合而成(因此為256 kB)。讀取與寫入作業係逐頁運作,而抹除作業僅可以逐塊運作。僅可在成功抹除快閃塊後才能寫入資料。自快閃胞將一個資料頁讀進快閃晶粒中的資料緩衝器一般需要15到25微秒。將資料頁寫入快閃胞需要約200微秒,而抹除快閃塊正常需要約2毫秒。由於抹除一個儲存塊所需的時間比讀取或寫入一個資料頁的時間來的長,因此會利用稱為「寫入非到位」的寫入方案來改進寫入的生產率與延遲。使用此方案時,已儲存的資料頁不會到位地更新於快閃儲存器,反而是將已更新的資料頁寫入另一個可用的快閃頁,並在儲存為每個資料頁的一部份的元資料中,設定一個有效性旗幟,以將相關的舊快閃頁標記為無效。
寫入非到位方案以及其他快閃儲存的特徵需要運作某些「清掃」作業,以作快閃儲存器的內部管理。舉例而言,在更新資料頁並讓舊資料頁無效時,需要後續程序消除無效資料,並釋放儲存位置給新輸入資料。此內部管理程序一般稱為「垃圾收集(garbage collection)」。垃圾收集程序包含選擇已使用的快閃塊,以及自該塊中回復所有仍有效的資料。有效資料頁會被複製到快閃儲存器中的另一個位置,接著抹除該塊。垃圾收集通常是根據儲存塊所包含的無效資料頁的數量選擇儲存塊。然而,垃圾收集與儲存塊抹除亦可當作其他內部管理程序的一部份運作,此等程序包含在固態儲存器內移動資料。內部管理程序的其中一個範例係耗損平均(wear-leveling)。此程序解決快閃記憶體的耗損特性。具體而言,在其儲存完整性開始降低前,快閃記憶體具有既定數量的寫入抹除週期。耗損平均程序是為了幫助在所有可用的快閃塊間平均分佈寫入抹除週期,以避免不平均的耗損,進而延長整體壽命。具體而言,耗損平均功能根據寫入抹除週期計數,掌管選擇新資料應寫入的儲存塊,以及在快閃記憶體內移動已儲存的資料,以釋放具有較低週期計數的儲存塊,並平均耗損。
資料放置與內部管理作業一般係由專屬控制設備(稱為快閃控制器)運作,快閃控制器係伴隨快閃儲存器。快閃控制器一般係管理快閃記憶體內的資料、控制所有內部管理作業、以及維護控制器記憶體內的位址元資料,以追蹤快閃儲存器中資料的位置。具體而言,快閃控制器執行一中間軟體層(稱作「LBA-PBA(邏輯塊位址-實體塊位址)」映射)(亦稱為「快閃解譯層(FTL)」或「LPN-FPN(邏輯頁碼-快閃頁碼)位址映射」)。此層以位址映射的方式維護元資料,將與上層(例如儲存系統中的檔案系統或主機)的輸入資料塊相關聯的邏輯位址,映射到快閃上的實體位址(快閃頁碼)。此軟體層隱藏快閃抹除前寫入的複雜性,並支援透明資料寫入與更新而無需抹除作業的介入。
SSD中所運作的內部管理功能導致所謂的「寫入放大」。寫入放大的發生是因為資料在儲存器內部移動,導致資料寫入作業的數量比SSD所收到的原始資料寫入請求的數量來的大。寫入放大係限制固態儲存裝置的隨機寫入效能與寫入持久壽命的其中一個重要課題。另一個重要課題是錯誤效能。錯誤校正(EC)編碼在SSD中係在寫入單元層增加冗餘的方式運作。具體而言,EC碼係替寫入每一頁的輸入資料或一頁內的每個區段的輸入資料進行運算,且此EC碼係與該輸入資料一同紀錄於該頁或該區段內。此編碼得以在各個資料頁內從錯誤作回復。然而,固態儲存系統可利用額外的EC編碼保護裝置層的失效。此編碼係透過以RAID(獨立裝置的冗餘陣列)陣列的方式管理許多裝置的集合,通常HDD儲存系統皆係使用此方式。利用類似RAID保護的SSD系統,係揭露於美國專利申請公開號US2008/0320214A1以及http://www.storagenewsletter.com/news/flash/sandforce-ssd-controllers中的「啟動Sandforce的SSD控制器」。在一情況下,儲存系統可使用多個SSD,每個SSD與管理其本身的邏輯儲存的控制器一同運作,如上述。SSD的組合可接著以類似RAID陣列的方式作較高層的管理。此系統的基本作業原則將參照圖1伴隨圖式作描述。
圖1係一範例類似RAID以SSD為主的儲存系統的方塊圖。在此系統中,多個SSD 2在儲存控制器3下運作,負責處理來自主機的讀/寫請求。每個SSD 2管理其內部儲存器4中的資料,已如上述。一般而言,儲存器4可包含一或多個儲存通道,每個通道具有一或多個晶片或許多晶片封裝,其中每個晶片可包含一或多個固態儲存晶粒。在儲存控制器3中,主機LBA(邏輯塊位址)空間係以邏輯性的方式作分區,且每個邏輯塊的一區段會配給各個SSD 2。此階段加增冗餘,進而得以增加RAID同位檢查。具體而言,儲存控器3 EC對每個輸入主機資料塊(對應一既定主機(「全局」)LBA)進行編碼,且產生的RAID同位檢查會新增到主機資料塊。編有同位檢查的資料塊接著被控制器3區分為「單元資料塊」。每個單元資料塊係在一個配置單元LBA(uLBA)下供應給各個SSD 2,作儲存之用。SSD組合中,全局LBA(gLBA)到uLBA的映射係由控制器3紀錄於gLBA-uLBA映射表。每個SSD儲存其個別的單元資料塊,並像往常一般將實體儲存位置紀錄在uLBA-PBA映射表。此程序的結果使RAID碼字分佈在SSD 2陣列間,如圖中虛線區域所示。這提供了另一層的EC編碼,以避免SSD層的失效。在每個SSD 2內,本區控制器運作儲存器4的內部管理,已如上述,但在此架構中,此功能及uLBA到PBA隨後的重新映射對儲存控制器3而言是透明的。
圖1繪示所謂的「外部RAID」組態,其中RAID碼字橫跨多個SSD,因此亦橫跨多個控制器。除了外部或替代RAID以外,本發明亦可利用一個「內部RAID」系統。內部RAID係實施於SSD控制器內。在此控制器中,LBA空間會作邏輯性的分區,且每個邏輯塊的一區段會分配給整個儲存空間中不同的子單元。本發明加上冗餘,新增內部的RAID同位檢查,以將內部RAID碼字分區並分佈在子單元的集合中。具體而言,內部RAID碼字係區分為子單元資料塊,且每個子單元資料塊在各個子單元的位址空間中配有一個子單元LBA(suLBA)。LBA到suLBA的映射係由控制器紀錄在LBA-suLBA位址映射中。每個子單元資料塊接著被儲存到位於實體儲存位置的各個儲存子單元,其位置係紀錄在該單元的suLBA-PBA映射中。此程序提供EC編碼,以避免SSD中子單元層的失效。如外部RAID系統,控制器在每個儲存子單元內獨立運作內部管理(垃圾收集、耗損平均等),使此功能與suLBA到PBA隨後的重新映射得以在比RAID編碼的邏輯塊層更低階的一層運作。
本發明之一面向提供固態儲存裝置的控制設備,其中固態儲存器包含可抹除塊,每個可抹除塊包含複數個資料寫入位置。控制設備包含記憶體與控制邏輯,適合運作:將輸入資料儲存在資料寫入位置的連續群組,每個群組包含寫入位置,係位於固態儲存器的複數個邏輯子區中每個子區中的一組可抹除塊內;對輸入資料編錯誤校正碼,使每個群組包含該群組中該輸入資料的錯誤校正碼;在記憶體中維護元資料,該元資料表示輸入資料在固態儲存器中的位置;維護儲存於每個資料寫入位置的資料的有效性表示;以及在抹除一儲存塊前,先自每個群組回復有效輸入資料,該群組包含該資料塊的寫入位置,並將回復的資料重新儲存為新輸入資料。
因此,在本發明之實施例中,控制設備所管理的儲存空間被邏輯性地區分成複數個邏輯子區,而輸入資料會被寫入至寫入位置的許多群組,此等群組係分佈在此等邏輯子區中。具體而言,在每個邏輯子區中,每個群組包含一或多個寫入位置,係在該子區的一組(一或多個)可抹除塊。本發明替每個群組中的輸入資料運算一EC碼,並替該輸入資料將該碼儲存於群組中。再者,本發明採用儲存塊抹除程序,以替每個群組回復有效資料。當需要抹除儲存塊時,例如在垃圾收集或其他內部管理功能期間,本發明會在抹除一儲存塊前,先自包含該儲存塊中的寫入位置的該群組或每個群組回復有效資料。如此回復的有效輸入資料接著在編有新EC碼的群組中,重新儲存為新輸入資料。藉此,本發明之實施例提供另一層的EC編碼(即在類似先前所述之頁內編碼的寫入位置內所運作的任何習知EC編碼之上),同時允許儲存器整體運作內部管理功能。因此,不同於類似上述RAID系統係實施於LBA到PBA映射之上,額外的EC編碼係運作於實體塊(PBA)層,而不是邏輯塊(LBA)層,且整個儲存區可基於內部管理目的作整體管理。透過在實體塊層運作EC編碼以及主要內部管理功能,本發明之實施例以高效能效率的方法避免儲存子區的失效。具體而言,EC編碼與內部管理程序之間的共同作用提供較高的錯誤校正率,並大量改善整體效能。舉例而言,本發明能改善錯誤保護,卻不影響效能,例如在增加寫入放大與降低持久性等方面,這些現象在高階進行編碼時都有可能會發生。因此,整體而言,實施本發明的控制設備在固態儲存裝置中提供了優良的效能。
一般而言,EC編碼程序可由系統性編碼(其中編碼程序的輸入資料不因編碼而改變,但會增加EC碼以取得輸出碼字)或非系統性編碼(其中編碼程序的輸入資料會由編碼嵌於輸出碼字中)實施。然而,理想的情況會利用系統性編碼,利用控制邏輯在每個群組中所儲存的輸入資料中增加該輸入資料的EC碼。
固態儲存器的資料寫入位置可為快閃記憶體裝置中的快閃頁。然而,一般而言,寫入位置可為SSD中資料可寫入整個儲存器中的任一區域。儲存器整體一般可包含以任何方式組態的儲存物品,從單一物品(例如晶片或晶粒)到多組物品。然而,一般的SSD具有複數個儲存通道,每個通道提供一儲存庫或儲存站,係包含一或多個儲存晶片的多個封裝,每個封裝具有一或多個固態晶粒。基於EC編碼目的在可用儲存器中所作的邏輯分區,可為整體儲存區的任一子組。舉例而言,在固態儲存裝置具有複數個儲存通道,而每個通道具有一組固態儲存單元(其中每個單元一般可包含一封裝、晶片、晶粒或任何其他儲存區)的實施例中,每個邏輯子區在各通道中可包含一組單元。(一般而言,除非另有說明,在此所指的物品組合可包含一或多個物品)。或者,舉例而言,每個邏輯子區可包含個別的儲存單元。
基於EC編碼目的,輸入資料係儲存於寫入位置的許多群組,其中每個群組在每個邏輯子區中包含一或多個寫入位置,係位於該子區的一組可抹除塊中。在較佳實施例中,一群組包含複數個寫入資料,位於每個子區的每個儲存塊中,每個儲存塊內的寫入位置係連續的(即,具有連續的實體位置)。一般而言,在任一子區中,一群組的寫入位置組合可包含大於或小於一可抹除塊內寫入位置的數量。然而,為了實作方便,每個子區中寫入位置的數量較佳為一儲存塊內寫入位置的數量的積分因數或倍數。在每個子區中一群組的寫入位置數量係小於儲存塊大小的情況,一個以上的群組可分享相同的儲存塊。在此情況下,若在一邏輯子區中分享一共同儲存塊的任一群組亦在每個邏輯子區中分享一共同儲存塊,即可簡化內部管理作業。
如上述,每個群組中輸入資料的EC碼係與該輸入資料一同儲存在該群組中。然而,在較佳實施例中,將輸入資料儲存於每個群組的寫入位置期間的多個連續階段,本發明會替該輸入資料運算一個暫時錯誤校正碼,並將之儲存於該群組。此暫時EC碼可在需要的時候用來回復部分完成的群組。再者,控制設備可有效地在電源中斷後,將暫時錯誤校正碼儲存於固態儲存器內,進而在電源失效時得以保存暫時碼。藉此避免電源與儲存子區同時失效。
本發明之第二面向,係提供包含固態儲存器的固態儲存裝置以及本發明之第一面向的控制設備,其儲存器包含可抹除塊,每個可抹除塊包含一組資料寫入位置。
本發明之第三面提供控制固態儲存裝置的方法,其中固態儲存器包含可抹除塊,每個可抹除塊包含複數個資料寫入位置。本方法包含:在資料寫入位置的連續群組中儲存輸入資料,每個群組包含寫入位置,係位於固態儲存器的複數個邏輯子區的每個子區中的一組可抹除塊內;將輸入資料編有錯誤校正碼,使每個群組包含該群組中該輸入資料的錯誤校正碼;在固態儲存裝置的記憶體中維護元資料,該元資料表示固態儲存器中輸入資料的位置;維護每個資料寫入位置中所儲存的資料的有效表示;以及在抹除一儲存塊前,先自該每個群組回復有效輸入資料,其群組包含該儲存塊的寫入位置,並將回復後的資料重新儲存為新輸入資料。
本發明亦提供電腦程式,其包含電腦程式碼手段,導致電腦運作本發明之第三面向的方法。熟此技藝者當知,「電腦」一詞係作最一般的使用,其包含具有實施電腦程式所需的資料處理功能的任何裝置、構件或系統。再者,實施本發明的電腦程式可具有一個獨立程式、或可為一較大程式中的一個元件,且可提供(例如實施)於電腦可讀媒體(例如磁片或電子傳輸以載入電腦)。電腦程式的程式碼手段可包含任何語言表示、代碼或註釋的一組指令,導致電腦直接運作本方法、或在(a)轉換成另一語言、代碼或註釋及/或(b)重製為不同型態後運作本方法。
圖2係實施本發明的範例SSD 5的方塊圖,其顯示以下所述之資料管理作業所涉及的主要元件。SSD 5具有固態儲存器6與控制設備(一般係以7表示)。在此範例中,儲存器6包含n個儲存通道Ch(1)到Ch(n),每個通道提供許多儲存單元的一個儲存庫8,即快閃儲存晶粒9。每個儲存庫8中的快閃晶粒組9一般可設置於一或多個晶片或晶片封裝,且可包含SLC(單層資料胞)晶粒、MLC(多層資料胞)晶粒、或其結合者。舉例而言,一或多個通道可提供MLC儲存,而剩餘的通道可提供SLC儲存。
SSD 5的控制設備7包含快閃控制器10型態的控制邏輯、負責服務裝置的資料讀取與寫入請求的讀/寫(R/W)介面(I/F) 11、以及負責與快閃儲存通道作資料通訊的快閃鏈結介面12。快閃控制器10一般係負責控制裝置5的作業、管理資料的讀寫以回應收到的請求、並處理快閃儲存器6的所有內部管理功能。快閃控制器10亦運作資料的EC編碼(與對應的解碼),如下述。一般而言,快閃控制器10的控制邏輯可實施於硬體、軟體或其結合者。舉例而言,控制邏輯可完全或部分由軟體實施,其軟體設定控制設備7的處理器運作所述功能。熟此技藝者當可自在此的描述中了解適用的軟體。EC編碼/解碼功能可由硬接線邏輯電路實施,其電路運作一般係受快閃控制邏輯的控制,熟此技藝者當知適用的電路。控制設備7更包含快閃控制器10運作中許多元資料的儲存,如下詳述。記憶體13一般可包含一或多個記憶體元件,其可包含不同類型的記憶體,包含例如SDRAM(同步動態隨機存取記憶體)。
一般而言,裝置5可直接與主機通訊,以負責讀/寫請求、或由較高階的控制器作管理,其高階控制器負責儲存系統中複數個裝置的主機請求。舉例而言,裝置5可形成類似RAID陣列的一部份,其中儲存控制器管理多個SSD,如圖1系統所示。因此,與輸入讀/寫請求中所指定的資料相關聯的邏輯位址可參照全局(主機)位址空間、或某些邏輯性較低階的位址空間。此等位址爾後將稱作LBA。
指定起始LBA與請求大小的資料寫入請求,透過R/W介面11非同步地到達控制設備7。在寫入程序期間,快閃控制器10控制將輸入資料塊寫入(對應到各LBA)快閃儲存器6,並運作二層EC編碼。第一個EC編碼層(爾後稱作「C1編碼」)係位於寫入單元層的習知編碼。隨著輸入資料被寫入儲存器6的各個快閃頁,EC編碼會對輸入資料進行運作,而結果碼(C1碼)將成為該頁所儲存的元資料的一部分。此元資料亦包含頁無效(PI)旗幟型態的有效性標示符。資料頁的PI旗幟係快閃控制器10正常控制作業的一部分,若基於某些原因,該頁中的資料被視為無效時(例如基於資料更新,如下詳述),則可由控制器設定此旗幟。資料頁元資料一般包含壞頁(BP)旗幟,若一資料頁被認定為無法使用時(例如顯示太多C1錯誤),快閃控制器10可設定此旗幟。此程序亦係以快閃控制器10正常控制功能的一部份運作。
快閃控制器10所運作的第二層EC編碼爾後將稱為「C2」編碼。實施C2編碼時,SSD 5的儲存區6會由快閃控制器10邏輯性地區分為複數個邏輯子區。在此範例中,有n個邏輯子區對應n個通道組合上的各儲存庫8。C2編碼係透過將輸入資料塊的串流寫入快閃頁的連續群組的方式運作。在此實施例中,每個群組的資料頁可分佈於儲存器6的所有邏輯子區中。具體而言,資料頁的每個群組在此稱為「步距(stride)」,其包含每個通道的儲存區8中的一組(或條「strip」)資料頁。每條資料頁一般包含預定數量的連續頁(即,具有連續PBA的頁),位於通道儲存區8的一或多個快閃塊中。每條資料頁在儲存區8中具有獨特的頁ID。為了方便,條ID可為條中第一頁的PBA。
輸入資料的儲存係透過將資料寫入每個步距,進而替C2編碼增加此階段的冗餘。圖3描述目前有效步距的寫入程序。輸入資料係被寫入步距中的每條資料頁,其中最後一條資料頁中(Ch(n)中)的一組資料頁係保留給該步距的C2碼。即,對於一既定步距中的輸入資料而言,快閃控制器10會運算該輸入資料的EC碼,並將此C2碼儲存於該步距的最後一頁中。C2編碼所使用的特定EC演算法並非本發明之重點。然而,在此範例中,C2碼係假設為XOR同位檢查碼。(在此可使用的另一個C2編碼系統係揭露於與此案一同申請的歐洲專利申請案,其申請人編號為CH9-2009-0046,相關內容包含在此供參考)。在該系統中,加入上述步距的C2碼包含複數個C2碼字的集體同位檢查碼,散佈在儲存子區8中。在一既定步距的寫入程序中,若快閃控制器10偵測到一個壞頁(即設定BP旗幟),則會跳過此頁,並繼續寫入步距的下一頁。當運算C2同位檢查時,控制器10所認定的任何壞頁全部為零。
一般而言,根據系統架構,一個既定步距的資料條可以連續或平行的方式被填滿。在本實施例中,儲存器6由通道作邏輯性分區,資料條可以平行方式寫入n個通道。在此情況,快閃控制器10在將輸入資料分配到資料條,並運算該步距的C2同位檢查之前,會先檢測有效步距中的壞頁。在任何情況下,資料寫入程序的影響是,將輸入資料分佈到步道裝置5的儲存通道中編有C2碼的步距。將資料條分配到特定步距,以及寫入作業中步距順序的選擇,係可以許多不同方式實施於控制器10,且熟此技藝者當知如何實作。此等特色並非本發明之重點,且無需在此贅述。然而,一般而言,在一既定通道中,每個資料條包含位於一或多個快閃塊中的資料頁。圖4與5顯示二個可能的步距組態。圖4中,C2條的大小為四頁。一單一步距係由圖中的箭頭作表示。假設一個快閃塊的大小為64頁,則每個儲存塊將包含16個不同步距的資料條。此16個資料條在所有通道中分享相同的儲存塊。分享通用的一組儲存塊的此組步距爾後稱為步距群組。附註,不同通道儲存區8中相同步距群組的儲存塊無須實體對齊。圖5顯示另一範例,其中條的大小為二個儲存塊。因此,每個步距在每個儲存通道中包含二個儲存塊,且在此一個步距群組包含單一步距。附註,每個通道儲存區8中相同步距的儲存塊無須實體相連。
儲存控制器10透過位址元資料將輸入資料的位置紀錄在儲存器6,其元資料係由控制器10保留在記憶體13。在此位址元資料包含LBA/PBA位址映射,表示與輸入資料塊相關聯的邏輯位址(LBA)及儲存器6中的實體位址(PBA)之間的映射。此一位址映射一般包含一或多個列表或其他資料結構,此結構係可用以決定儲存輸入資料塊的步距(以及其所包含的資料條)的實體位置。舉例而言,位址映射可在一列表中指明LBA到步距ID的映射,以及在另一列表中指明步距ID到資料條ID的映射,其中另一列表表示在一資料條中可找到每個LBA的PBA。然而,實際運作上,為了方便起見,較適合使用包含所有位址元資料的單一搜尋表。
熟此技藝者當知,透過將輸入資料分佈於編有EC碼的步距的儲存通道,C2編碼程序得以在資料頁層作保護的C1編碼之外,提供進一步的保護,避免各個通道中發生錯誤。通常每個資料寫入後,以及在回應讀取請求後或在內部管理作業期間讀出資料後,才會進行錯誤檢測,如下詳述。每當資料條包含無法透過C1錯誤校正程序作校正的資料頁或塊錯誤時,快閃控制器10會運作以下程序。新的資料條會選自相同的儲存區8,作為包含錯誤的資料條。此資料條將替代有問題的步距中的「壞資料條」。步距中其他的資料條係自記憶體13中的位址元資料作辨識,並讀取此等資料條的內容。壞資料條的內容會被讀取,而步距中其他資料條的內容會透過C2編碼演算法,重建壞資料條中的錯誤資料。重建後(錯誤校正後)的資料接著被寫入替換條,並更新位址元資料以反映修改後的步距結構。接著,舊、壞資料條的每個資料頁中會設定資料頁無效(PI)旗幟,以表示此等資料頁的內容無效。此等資料頁將在隨後垃圾收集程序期間被回收,如下述。
除了將C2碼儲存為儲存器6中步距的一部分以外,快閃控制器亦在各個步距寫入期間運算部分的C2碼。此等部份碼係在將輸入資料寫入每個步距的資料條期間,在連續階段中進行運算,較佳是在寫入一個資料條的每個資料頁後。具體而言,在每個資料頁寫入後,本發明會對目前步距中所儲存的輸入資料實施C2編碼,以取得一暫時EC碼、或「暫時同位檢查」給半完成的步距。此暫時同位檢查係由控制器10儲存於圖2的記憶體13中。實作上,儲存暫時同位檢查的特定記憶體元件可為硬接線C2編碼器電路的暫存器。在需要自半完成的步距的錯誤進行回復時即可用上此暫時同位檢查。再者,若快閃控制器10偵測到控制設備7的電源中斷,則控制器會在關機前,先將暫時錯誤校正碼(以及記憶體13中的其他元資料,包含目前的位址映射)複製到快閃儲存器6的可用區。藉此,得以在電源失效事件中保存暫時同位檢查,進而避免同步電源失效及儲存單元/通道錯誤。
當資料透過上述寫入非到位方案在快閃儲存器6中進行更新時,快閃控制器10會替透過LBA覆寫而更新的任一頁,設定資料頁無效(PI)旗幟。包含主機刪除的資料的資料頁亦可利用類似方式設定PI旗幟。儲存控制器10亦替每個步距群組維持一計數,表示整個步距群組中無效資料頁的數量。步距群組的此等PI計數係紀錄為記憶體13所維護的元資料的一部分。PI計數係用於控制器10所運作的內部管理作業期間,如下述。
雖然儲存器6替C2編碼作邏輯區分,已如上述,但儲存器的內部管理功能係整體運作。即,就內部管理而言,快閃控制器10將所有的分區(n個儲存通道)視為單一儲存個體。因此,涉及抹除儲存塊的內部管理功能(例如垃圾收集與耗損平均)係負責作跨區的C2編碼。具體而言,此程序期間,有效資料的回復係以步距群組為主(而非儲存塊)的方式運作。在抹除儲存塊以前,有效輸入資料會自步距群組中的每個步距中作回復,其中該群組包含該儲存塊的寫入位置。此作業將參照圖6的垃圾收集程序作進一步描述。
圖6的方塊圖顯示SSD 5中所運作的垃圾收集程序的主要步驟。當初始化垃圾收集(如圖中步驟20所示)時,快閃控制器10首先選擇欲抹除的儲存塊。在步驟21運作的此選擇,係根據記憶體13中替步距群組儲存的PI計數為主。具體而言,在步距群組中具有最高的PI計數的資料快可優先選作回收。選擇一步距群組後,於步驟22,快閃控制器自該步距群組的資料頁回復所有仍有效的資料。因此,資料係讀取自步距群組中尚未設定PI旗幟的所有資料頁。根據C1與C2碼,此程序可根據需求運作錯誤校正程序。被回復的有效資料可接著反餽為欲重新儲存於快閃儲存器6的輸入資料。因此,已回復的資料可重新儲存於新步距,如步驟23所示。於步驟24,快閃控制器10更新記憶體13中的位址映射,以反映新資料位置。舊的、已回收的步距群組的資料塊可接著被快閃控制器10抹除,如步驟25所示。控制器10可立即或隨後運作儲存塊抹除,以釋放此等儲存塊供新資料儲存。
如上所示,垃圾收集期間會回收一步驟群組的所有資料條。相同原則亦適用於在儲存塊抹除前需要移動快閃內的資料的任何內部管理程序,例如耗損平均程序。作為控制器10正常監控功能的一部分,顯示持久問題(太多C1錯誤)的資料塊可在回收程序期間被辨識並標示為「壞儲存塊」。此標示旗幟動作可根據快閃控制器10所維護的儲存塊錯誤計數,作為記憶體13內所儲存的元資料的一部分。藉此,控制器隨後的資料放置將不會使用被標記為壞的儲存塊。
熟此技藝者當知,與習知類似RAID系統不同的是,C2編碼係在SSD 5的實體儲存塊層運作,就內部管理而言,其整個儲存區係以一個體作管理。對LBA/PBA映射而言,在PBA層運作的C2編碼作業是透明的,且可避免資料頁、塊、晶片、資料庫及通道層發生完全失效。上述暫時C2碼的使用可避免同步電源與單位失效。透過以協同內部管理功能的方式運作C2編碼,如上述,SSD 5得以改進錯誤率並具有極優良的整體效能。具體而言,本發明改善錯誤效能卻不犧牲高階編碼的寫入放大與持久性。舉例而言,假設在每個情況會使用一個通道作冗餘,則SSD 5可與上述類似RAID以SSD為主的系統相比較。在SSD 5中,假設通道n是全部分配給C2碼,定義w1
為內部管理所導致的寫入放大(垃圾收集與耗損平均)。若為了方便,假設每條僅包含一頁,則每個資料頁寫入將會有(1+(1/(n-1))w1
個資料頁寫入,因為控制器替(n-1)個資料頁運算一個同位檢查頁,每個通道皆有一個同位檢查頁。相反地,類似RAID的系統,讓w2表示垃圾收集與耗損平均所導致的寫入放大,則每個資料頁寫入會有2w2
個資料頁寫入、一個資料頁與一個RAID同位檢查頁。再者,w1
<w2
,因為內部管理係「全局」地運作,所以會將所有的儲存通道視為一個統一儲存區。
在任一既定情況,透過適當選擇C2步距與資料條大小以及資料條大小與LBA大小的關,可進一步改善效率。此考量類似RAID應用所碰到的情況,如熟此技藝者所知。在本發明的某些實施例中,快閃控制器可用來動態調整作業中的C2資料條與步距大小。舉例而言,快閃控制器可根據預定標準(例如根據寫入請求的大小),在不同的資料條/步距大小間作交替。步距長度亦可隨著儲存塊變的越來越不穩定(例如因為耗損與老化)而減短。熟此技藝者當知本發明可作適當的潤飾。
熟此技藝者當知,上述實施例當可作進一步的改變與潤飾。舉例而言,雖然用作C2編碼的儲存器6的邏輯子區會與SSD 5中的儲存通道對齊,但一般而言此等子區可為可用儲存器的任何子組。例如,子區可替換地包含圖2中的各快閃晶粒9。C2碼當可儲存於任一儲存子區,且每個步距無須相同。再者,各C2碼字無須橫跨所有子區。舉例而言,在裝置5中,C2步距可替代地橫跨小於總量n的複數個通道,步距的整體集合係分佈於所有通道。在此情況,在C2錯誤校正程序中,選擇新資料條替換壞資料條時,新資料條可選自相同的儲存通道、或不包含相同步距中的一資料條的任何其他通道。步距長度亦可減短,藉此當儲存塊變的不穩定時,步距得以橫跨較少的通道,已如上述。
雖然本發明之實施例並不一定需要C1編碼,但有C1編碼較為理想。再者,雖然本發明具體描述NAND快閃裝置,但本發明當可採用其他類型的SSD。
熟此技藝者當可對上述範例實施例作其他修改與潤飾而不偏離本發明之範疇。
1...儲存系統
2...固態儲存裝置
3...儲存控制器
4...儲存器
5...固態儲存裝置
6...固態儲存器
7...控制設備
8...儲存庫
9...快閃晶粒組
10...快閃控制器
11...讀/寫介面
12...快閃鏈結介面
13...記憶體
一般而言,在此所述之特徵係參照本發明之一面向的一實施例,本發明之另一面向的實施例中亦可提供對應特徵。
本發明之較佳實施例將以範例方式伴隨圖式作描述,其中:
圖1係習知具有類似RAID編碼以SSD為主的儲存系統的示意圖;
圖2係實施本發明的固態儲存裝置的示意圖;
圖3繪示將輸入資料寫入分佈於圖2實施例中的儲存子區的一寫入位置群組;
圖4繪示一群組中寫入位置的一範例組態;
圖5繪示一群組中寫入位置的另一範例組態;以及
圖6繪示圖2的SSD中所運作的內部管理程序。
5...固態儲存裝置
6...固態儲存器
7...控制設備
8...儲存庫
9...快閃晶粒組
10...快閃控制器
11...讀/寫介面
12...快閃鏈結介面
13...記憶體
Claims (19)
- 一種包含固態儲存裝置的設備,其中該固態儲存裝置中的一固態儲存器包含可抹除塊,每個可抹除塊包含複數個資料寫入位置,該設備包含記憶體與控制邏輯,適於:將輸入資料儲存在連續之資料寫入位置群組,連續之該資料寫入位置群組中的每個資料寫入位置群組包含該固態儲存器的複數個邏輯子區的每個子區內的一組可抹除塊內的寫入位置;在該輸入資料編入錯誤校正碼,使每個資料寫入位置群組包含位於該資料寫入位置群組中的該輸入資料的一錯誤校正碼;在該記憶體中維護元資料,該元資料表示該固態儲存器中該輸入資料的一位置;維護儲存於每個資料寫入位置內的資料的有效性的一表示;在抹除一可抹除塊前,根據包含該可抹除塊中之寫入位置的該資料寫入位置群組中的包含無效資料之寫入位置的數量而從該組可抹除塊選擇該可抹除塊用於抹除;以及自包含該可抹除塊中的寫入位置的每個資料寫入位置群組回復有效資料從而形成已回復的有效資料,並將該已回復的有效資料重新儲存為新輸入資料。
- 如申請專利範圍第1項所述之設備,其中該控制邏輯適於在將輸入資料儲存於每個資料寫入位置群組的該寫入位置期間的連續階段,針對儲存於其中的該輸入資料運算一暫時錯誤校正碼。
- 如申請專利範圍第2項所述之設備,其中該控制邏輯適於將該暫時錯誤校正碼儲存於該固態儲存器,以回應該設備的電力中斷。
- 如申請專利範圍第1到3項之任一項所述之設備,其中該固態儲存裝置具有複數個儲存通道,每個通道具有一組固態儲存單元,以及其中該邏輯子區中的每一子區包含一個別通道中的該組固態儲存單元。
- 如申請專利範圍第1到3項之任一項所述之設備,其中該固態儲存器包含複數個儲存單元,以及該邏輯子區中的每個子區包含一個別儲存單元。
- 如申請專利範圍第1到3項之任一項所述之設備,其中該控制邏輯適於使每個資料寫入位置群組包含該資料寫入位置群組的每個可抹除塊中的一組連續的寫入位置。
- 如申請專利範圍第1到3項之任一項所述之設備,其中該控制邏輯適於使在一邏輯子區中分享一共用之可抹除塊的任何資料寫入位置群組,在每個邏輯子區中分享一共用之可抹除塊。
- 如申請專利範圍第1到3項之任一項所述之設備,其中該控制邏輯適於根據預定標準動態調整連續之該資料寫入位置群組中的一資料寫入位置群組中的該寫入位置的數量。
- 如申請專利範圍第1到3項之任一項所述之設備,其中該元 資料包含一位址映射,表示與各輸入資料塊相關聯的邏輯位址以及表示該固態儲存器中的寫入位置的實體位址間之一映射。
- 一種固態儲存裝置,包含一固態儲存器以及一控制設備,其中該固態儲存器包含可抹除塊,每個可抹除塊包含一組資料寫入位置,且該控制設備適於:將輸入資料儲存在連續之資料寫入位置群組,連續之該資料寫入位置群組中的每個資料寫入位置群組包含該固態儲存器的複數個邏輯子區的每個子區內的一組可抹除塊內的寫入位置;在該輸入資料編入錯誤校正碼,使每個資料寫入位置群組包含位於該資料寫入位置群組中的該輸入資料的一錯誤校正碼;在記憶體中維護元資料,該元資料表示該固態儲存器中該輸入資料的一位置;維護儲存於每個資料寫入位置內的資料的有效性的一表示;在抹除一可抹除塊前,根據包含該可抹除塊中之寫入位置的該資料寫入位置群組中的包含無效資料之寫入位置的數量而從該組可抹除塊選擇該可抹除塊用於抹除;以及自包含該可抹除塊中的寫入位置的每個資料寫入位置群組回復有效資料從而形成已回復的有效資料,並將該已回復的有效資料重新儲存為新輸入資料。
- 如申請專利範圍第10項所述之固態儲存裝置,其中該固態儲存裝置具有複數個儲存通道,每個通道具有一組固態儲存單元, 以及其中該邏輯子區中的每一子區包含一個別通道中的該組固態儲存單元。
- 如申請專利範圍第10項所述之固態儲存裝置,其中該固態儲存器包含複數個儲存單元,以及該邏輯子區中的每個子區包含一個別儲存單元。
- 如申請專利範圍第10項所述之固態儲存裝置,其中該元資料包含一位址映射,表示與各輸入資料塊相關聯的邏輯位址以及表示該固態儲存器中的寫入位置的實體位址間之一映射。
- 一種控制一固態儲存裝置的方法,其中該固態儲存裝置中的一固態儲存器包含可抹除塊,每個可抹除塊包含複數個資料寫入位置,該方法包含:將輸入資料儲存在連續之資料寫入位置群組,連續之該資料寫入位置群組中的每個資料寫入位置群組包含該固態儲存器的複數個邏輯子區的每個子區內的一組可抹除塊內的寫入位置;在該輸入資料編入錯誤校正碼,使每個資料寫入位置群組包含位於該資料寫入位置群組中的該輸入資料的一錯誤校正碼;在該固態儲存裝置的記憶體中維護元資料,該元資料表示該固態儲存器中該輸入資料的一位置;維護儲存於每個資料寫入位置內的資料的有效性的一表示;在抹除一可抹除塊前,根據包含該可抹除塊中之寫入位 置的該資料寫入位置群組中的包含無效資料之寫入位置的數量而從該組可抹除塊選擇該可抹除塊用於抹除;以及自包含該可抹除塊中的寫入位置的每個資料寫入位置群組回復有效資料從而形成已回復的有效資料,並將該已回復的有效資料重新儲存為新輸入資料。
- 如申請專利範圍第14項所述之方法,更包含:在將輸入資料儲存於每個資料寫入位置群組的該寫入位置期間的連續階段,針對儲存於其中的該輸入資料運算一暫時錯誤校正碼。
- 如申請專利範圍第14項所述之方法,更包含:將該暫時錯誤校正碼儲存於該固態儲存器,以回應該固態儲存裝置的電力中斷。
- 一種電腦程式,包含程式碼,儲存於一非暫態電腦可讀儲存媒介,其中該程式碼執行於一電腦時,導致該電腦:將輸入資料儲存在連續之資料寫入位置群組,連續之該資料寫入位置群組中的每個資料寫入位置群組包含一固態儲存器的複數個邏輯子區的每個子區內的一組可抹除塊內的寫入位置;在該輸入資料編入錯誤校正碼,使每個資料寫入位置群組包含位於該資料寫入位置群組中的該輸入資料的一錯誤校正碼;在記憶體中維護元資料,該元資料表示該固態儲存器中該輸入資料的一位置;維護儲存於每個資料寫入位置內的資料的有效性的一表示; 在抹除一可抹除塊前,根據包含該可抹除塊中之寫入位置的該資料寫入位置群組中的包含無效資料之寫入位置的數量而從該組可抹除塊選擇該可抹除塊用於抹除;以及自包含該可抹除塊中的寫入位置的每個資料寫入位置群組回復有效資料從而形成已回復的有效資料,並將該已回復的有效資料重新儲存為新輸入資料。
- 如申請專利範圍第17項所述之電腦程式,其中該程式碼更導致該電腦:在將輸入資料儲存於每個資料寫入位置群組的該寫入位置期間的連續階段,針對儲存於其中的該輸入資料運算一暫時錯誤校正碼。
- 如申請專利範圍第17項所述之電腦程式,其中該程式碼更導致該電腦:將該暫時錯誤校正碼儲存於該固態儲存器,以回應該固態儲存器的電力中斷。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP09179746 | 2009-12-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201131359A TW201131359A (en) | 2011-09-16 |
TWI497293B true TWI497293B (zh) | 2015-08-21 |
Family
ID=43799541
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW099140110A TWI497293B (zh) | 2009-12-17 | 2010-11-19 | 固態儲存裝置內之資料管理 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8904261B2 (zh) |
CN (1) | CN102656567B (zh) |
DE (1) | DE112010003887B4 (zh) |
GB (1) | GB2488457B (zh) |
TW (1) | TWI497293B (zh) |
WO (1) | WO2011073939A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI622924B (zh) * | 2016-05-31 | 2018-05-01 | 晨星半導體股份有限公司 | 資料儲存方法及資料儲存裝置 |
Families Citing this family (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102656566B (zh) * | 2009-12-17 | 2015-12-16 | 国际商业机器公司 | 固态存储系统中的数据管理 |
TWI497293B (zh) | 2009-12-17 | 2015-08-21 | Ibm | 固態儲存裝置內之資料管理 |
US11789631B2 (en) * | 2010-11-29 | 2023-10-17 | Pure Storage, Inc. | Utilizing metadata storage trees in a vast storage network |
US9483398B2 (en) * | 2010-11-29 | 2016-11-01 | International Business Machines Corporation | Partitioning data for storage in a dispersed storage network |
JP5917163B2 (ja) * | 2011-01-27 | 2016-05-11 | キヤノン株式会社 | 情報処理装置、その制御方法及びプログラム並びに記憶媒体 |
KR101778782B1 (ko) * | 2011-04-08 | 2017-09-27 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US9026845B2 (en) * | 2012-05-15 | 2015-05-05 | Dell Products L.P. | System and method for failure protection in a storage array |
CN103176858B (zh) * | 2013-03-11 | 2017-05-03 | 北京忆恒创源科技有限公司 | 具有多个固态盘的存储设备 |
CN103218270B (zh) * | 2013-03-11 | 2016-08-17 | 北京忆恒创源科技有限公司 | 具有多个固态盘的计算机 |
US9009397B1 (en) * | 2013-09-27 | 2015-04-14 | Avalanche Technology, Inc. | Storage processor managing solid state disk array |
US8966164B1 (en) * | 2013-09-27 | 2015-02-24 | Avalanche Technology, Inc. | Storage processor managing NVME logically addressed solid state disk array |
US8954657B1 (en) * | 2013-09-27 | 2015-02-10 | Avalanche Technology, Inc. | Storage processor managing solid state disk array |
US9218279B2 (en) | 2013-03-15 | 2015-12-22 | Western Digital Technologies, Inc. | Atomic write command support in a solid state drive |
CN103257902B (zh) * | 2013-04-10 | 2017-02-08 | 深圳市硅格半导体有限公司 | Nvram控制方法及系统 |
US9170938B1 (en) | 2013-05-17 | 2015-10-27 | Western Digital Technologies, Inc. | Method and system for atomically writing scattered information in a solid state storage device |
US9323617B2 (en) * | 2013-05-31 | 2016-04-26 | Hewlett Packard Enterprise Development Lp | Remap raid to maintain raid level |
KR102072829B1 (ko) | 2013-06-14 | 2020-02-03 | 삼성전자주식회사 | 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법 |
CN104424110B (zh) | 2013-09-10 | 2017-11-14 | Lsi公司 | 固态驱动器的主动回收 |
TWI585778B (zh) * | 2013-11-05 | 2017-06-01 | 威盛電子股份有限公司 | 非揮發性記憶體裝置的操作方法 |
US9911509B2 (en) * | 2013-12-06 | 2018-03-06 | Intel Corporation | Counter to locate faulty die in a distributed codeword storage system |
TWI523025B (zh) * | 2013-12-27 | 2016-02-21 | 慧榮科技股份有限公司 | 資料儲存裝置及其錯誤校正方法 |
US9323607B2 (en) | 2014-04-29 | 2016-04-26 | Seagate Technology Llc | Data recovery once ECC fails to correct the data |
JP6018725B2 (ja) * | 2014-06-27 | 2016-11-02 | 華為技術有限公司Huawei Technologies Co.,Ltd. | コントローラ、フラッシュメモリ装置及びデータをフラッシュメモリ装置に書き込む方法 |
US9529672B2 (en) | 2014-09-25 | 2016-12-27 | Everspin Technologies Inc. | ECC word configuration for system-level ECC compatibility |
US9959059B2 (en) * | 2014-10-20 | 2018-05-01 | Sandisk Technologies Llc | Storage error management |
EP3021208B1 (en) * | 2014-11-14 | 2019-01-09 | Dot Hill Systems Corporation | Method and apparatus for processing fast asynchronous streams |
CN104407813B (zh) * | 2014-11-20 | 2019-02-19 | 上海宝存信息科技有限公司 | 一种基于固态存储介质的raid系统及方法 |
CN105938419B (zh) | 2015-03-04 | 2019-05-14 | 慧荣科技股份有限公司 | 数据储存装置及其数据维护方法 |
TWI567550B (zh) * | 2015-03-04 | 2017-01-21 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料維護方法 |
US9766837B2 (en) | 2015-06-10 | 2017-09-19 | Micron Technology, Inc. | Stripe mapping in memory |
CN105159843B (zh) * | 2015-10-19 | 2018-07-31 | 深圳芯邦科技股份有限公司 | 一种基于超级块的多通道管理方法与系统 |
US20170179979A1 (en) * | 2015-12-18 | 2017-06-22 | Netapp, Inc. | Systems and Methods for Minimum Storage Regeneration Erasure Code Construction Using r-Ary Trees |
KR102533389B1 (ko) | 2016-02-24 | 2023-05-17 | 삼성전자주식회사 | 장치 수명을 향상시키는 데이터 저장 장치 및 이를 포함하는 raid 시스템 |
US10101939B2 (en) | 2016-03-09 | 2018-10-16 | Toshiba Memory Corporation | Storage system having a host that manages physical data locations of a storage device |
US9852025B2 (en) | 2016-03-29 | 2017-12-26 | Alibaba Group Holding Limited | Protecting data stored on a solid state drive |
US10452477B2 (en) | 2016-08-26 | 2019-10-22 | Netapp, Inc. | Multiple node repair using high rate minimum storage regeneration erasure code |
US10740294B2 (en) * | 2017-01-12 | 2020-08-11 | Pure Storage, Inc. | Garbage collection of data blocks in a storage system with direct-mapped storage devices |
CN108733313B (zh) * | 2017-04-17 | 2021-07-23 | 伊姆西Ip控股有限责任公司 | 利用预备盘建立多级闪速缓存的方法、设备和计算机可读介质 |
US10621084B2 (en) | 2018-03-05 | 2020-04-14 | International Business Machines Corporation | Efficient garbage collection in the presence of block dependencies |
US10740181B2 (en) | 2018-03-06 | 2020-08-11 | Western Digital Technologies, Inc. | Failed storage device rebuild method |
US10860446B2 (en) | 2018-04-26 | 2020-12-08 | Western Digital Technologiies, Inc. | Failed storage device rebuild using dynamically selected locations in overprovisioned space |
US10558565B2 (en) | 2018-05-29 | 2020-02-11 | Microsoft Technology Licensing, Llc | Garbage collection implementing erasure coding |
US10824526B2 (en) | 2018-08-03 | 2020-11-03 | Western Digital Technologies, Inc. | Using failed storage device in peer-to-peer storage system to perform storage-centric task |
US10901848B2 (en) | 2018-08-03 | 2021-01-26 | Western Digital Technologies, Inc. | Storage systems with peer data recovery |
US10831603B2 (en) | 2018-08-03 | 2020-11-10 | Western Digital Technologies, Inc. | Rebuild assist using failed storage device |
US11169726B2 (en) * | 2018-09-13 | 2021-11-09 | Toshiba Memory Corporation | Pool-level storage management |
US10824556B2 (en) | 2018-11-05 | 2020-11-03 | International Business Machines Corporation | Adaptive garbage collection (GC) utilization for grid storage systems |
US11182258B2 (en) | 2019-01-04 | 2021-11-23 | Western Digital Technologies, Inc. | Data rebuild using dynamic peer work allocation |
US10990316B2 (en) * | 2019-06-28 | 2021-04-27 | Western Digital Technologies, Inc. | Log-based storage for different data types in non-volatile memory |
US11467976B2 (en) * | 2020-07-30 | 2022-10-11 | Micron Technology, Inc. | Write requests with partial translation units |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101127004A (zh) * | 2007-09-24 | 2008-02-20 | 中兴通讯股份有限公司 | 一种在闪存上存取数据的系统及方法 |
US20080201392A1 (en) * | 2007-02-19 | 2008-08-21 | Hitachi, Ltd. | Storage system having plural flash memory drives and method for controlling data storage |
US20080288814A1 (en) * | 2007-05-16 | 2008-11-20 | Jun Kitahara | Apparatus for detecting and recovering from data destruction caused in an unaccessed memory cell by read, and method therefor |
TW200912643A (en) * | 2007-05-30 | 2009-03-16 | Schooner Information Technology | System including a fine-grained memory and a less-fine-grained memory |
US20090125671A1 (en) * | 2006-12-06 | 2009-05-14 | David Flynn | Apparatus, system, and method for storage space recovery after reaching a read count limit |
TW200921676A (en) * | 2007-09-25 | 2009-05-16 | Sandisk Corp | Nonvolatile memory with self recovery |
US20090287956A1 (en) * | 2008-05-16 | 2009-11-19 | David Flynn | Apparatus, system, and method for detecting and replacing failed data storage |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8341332B2 (en) | 2003-12-02 | 2012-12-25 | Super Talent Electronics, Inc. | Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices |
US8412879B2 (en) * | 2002-10-28 | 2013-04-02 | Sandisk Technologies Inc. | Hybrid implementation for error correction codes within a non-volatile memory system |
US8239735B2 (en) * | 2006-05-12 | 2012-08-07 | Apple Inc. | Memory Device with adaptive capacity |
JP4842719B2 (ja) * | 2006-06-28 | 2011-12-21 | 株式会社日立製作所 | ストレージシステム及びそのデータ保護方法 |
US8046660B2 (en) * | 2006-08-07 | 2011-10-25 | Marvell World Trade Ltd. | System and method for correcting errors in non-volatile memory using product codes |
KR101490327B1 (ko) * | 2006-12-06 | 2015-02-05 | 퓨전-아이오, 인크. | 뱅크 인터리브를 이용한 솔리드-스테이트 스토리지의 명령 관리 장치, 시스템 및 방법 |
US8019959B2 (en) * | 2007-02-09 | 2011-09-13 | Marvell World Trade Ltd. | Nonvolatile memory system |
US20080288712A1 (en) * | 2007-04-25 | 2008-11-20 | Cornwell Michael J | Accessing metadata with an external host |
US8095851B2 (en) * | 2007-09-06 | 2012-01-10 | Siliconsystems, Inc. | Storage subsystem capable of adjusting ECC settings based on monitored conditions |
WO2009097705A1 (de) | 2008-02-08 | 2009-08-13 | Domo Vision Ag | Gerät zum rühren, aufschäumen und gegebenenfalls erwärmen flüssiger nahrungsmittel |
US8843691B2 (en) * | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
US8744071B2 (en) * | 2009-04-20 | 2014-06-03 | Cleversafe, Inc. | Dispersed data storage system data encryption and encoding |
TWI428917B (zh) * | 2009-11-25 | 2014-03-01 | Silicon Motion Inc | 快閃記憶裝置、資料儲存系統、以及資料儲存系統之運作方法 |
CN102656566B (zh) * | 2009-12-17 | 2015-12-16 | 国际商业机器公司 | 固态存储系统中的数据管理 |
TWI497293B (zh) | 2009-12-17 | 2015-08-21 | Ibm | 固態儲存裝置內之資料管理 |
-
2010
- 2010-11-19 TW TW099140110A patent/TWI497293B/zh active
- 2010-12-16 GB GB1207325.0A patent/GB2488457B/en active Active
- 2010-12-16 US US13/516,053 patent/US8904261B2/en not_active Expired - Fee Related
- 2010-12-16 CN CN201080056683.2A patent/CN102656567B/zh active Active
- 2010-12-16 WO PCT/IB2010/055874 patent/WO2011073939A1/en active Application Filing
- 2010-12-16 DE DE112010003887.2T patent/DE112010003887B4/de active Active
-
2012
- 2012-09-14 US US13/617,571 patent/US9176817B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090125671A1 (en) * | 2006-12-06 | 2009-05-14 | David Flynn | Apparatus, system, and method for storage space recovery after reaching a read count limit |
US20080201392A1 (en) * | 2007-02-19 | 2008-08-21 | Hitachi, Ltd. | Storage system having plural flash memory drives and method for controlling data storage |
US20080288814A1 (en) * | 2007-05-16 | 2008-11-20 | Jun Kitahara | Apparatus for detecting and recovering from data destruction caused in an unaccessed memory cell by read, and method therefor |
TW200912643A (en) * | 2007-05-30 | 2009-03-16 | Schooner Information Technology | System including a fine-grained memory and a less-fine-grained memory |
CN101127004A (zh) * | 2007-09-24 | 2008-02-20 | 中兴通讯股份有限公司 | 一种在闪存上存取数据的系统及方法 |
TW200921676A (en) * | 2007-09-25 | 2009-05-16 | Sandisk Corp | Nonvolatile memory with self recovery |
US20090287956A1 (en) * | 2008-05-16 | 2009-11-19 | David Flynn | Apparatus, system, and method for detecting and replacing failed data storage |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI622924B (zh) * | 2016-05-31 | 2018-05-01 | 晨星半導體股份有限公司 | 資料儲存方法及資料儲存裝置 |
Also Published As
Publication number | Publication date |
---|---|
TW201131359A (en) | 2011-09-16 |
DE112010003887B4 (de) | 2020-03-12 |
GB2488457B (en) | 2018-01-03 |
CN102656567B (zh) | 2015-02-25 |
US20130013980A1 (en) | 2013-01-10 |
US8904261B2 (en) | 2014-12-02 |
GB2488457A (en) | 2012-08-29 |
US20120266050A1 (en) | 2012-10-18 |
CN102656567A (zh) | 2012-09-05 |
US9176817B2 (en) | 2015-11-03 |
DE112010003887T5 (de) | 2012-08-23 |
WO2011073939A1 (en) | 2011-06-23 |
GB201207325D0 (en) | 2012-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI497293B (zh) | 固態儲存裝置內之資料管理 | |
US11435799B2 (en) | Memory system and controller | |
JP5242264B2 (ja) | データ制御装置、ストレージシステムおよびプログラム | |
JP5525605B2 (ja) | フラッシュメモリモジュール | |
US10055294B2 (en) | Selective copyback for on die buffered non-volatile memory | |
JP4933269B2 (ja) | 不揮発性メモリおよびメモリプレーン配列を伴う方法 | |
US8108595B2 (en) | Storage apparatus and method of managing data storage area | |
US9026764B2 (en) | Memory system performing wear leveling based on deletion request | |
WO2009130848A1 (ja) | ストレージシステム及びストレージシステムの制御方法 | |
KR101678868B1 (ko) | 플래시 주소 변환 장치 및 그 방법 | |
JP2008204041A (ja) | ストレージ装置及びデータ配置制御方法 | |
KR20070007264A (ko) | 비순차 갱신 블록 관리를 구비한 비휘발성 메모리 및 방법 | |
JP6696280B2 (ja) | 情報処理装置、raid制御方法、およびraid制御プログラム | |
US20140075099A1 (en) | Control method and memory system of non-volatile semiconductor memory | |
KR20070007265A (ko) | 제어 데이터 관리를 구비한 비휘발성 메모리 및 방법 | |
KR20060134011A (ko) | 메모리 플레인 배열을 갖춘 비휘발성 메모리 및 방법 | |
KR20060121270A (ko) | 페이즈된 프로그램 실패 핸들링을 구비한 비휘발성 메모리 및 방법 | |
JP2007519996A6 (ja) | 不揮発性メモリおよびフェーズ化されたプログラム障害処理を伴う方法 | |
JP6817340B2 (ja) | 計算機 | |
JP2012037971A (ja) | メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 | |
JP2009211188A (ja) | メモリシステム |