TW201403318A - 具耐用轉換層並能轉移暫存讓記憶體耐磨損的硬碟驅動器 - Google Patents

具耐用轉換層並能轉移暫存讓記憶體耐磨損的硬碟驅動器 Download PDF

Info

Publication number
TW201403318A
TW201403318A TW102121890A TW102121890A TW201403318A TW 201403318 A TW201403318 A TW 201403318A TW 102121890 A TW102121890 A TW 102121890A TW 102121890 A TW102121890 A TW 102121890A TW 201403318 A TW201403318 A TW 201403318A
Authority
TW
Taiwan
Prior art keywords
data
page
flash memory
host
block
Prior art date
Application number
TW102121890A
Other languages
English (en)
Inventor
Frank Yu
Abraham C Ma
Shimon Chen
Original Assignee
Infomicro Electronics Shenzhen Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/540,569 external-priority patent/US8959280B2/en
Application filed by Infomicro Electronics Shenzhen Ltd filed Critical Infomicro Electronics Shenzhen Ltd
Publication of TW201403318A publication Critical patent/TW201403318A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1068Adding 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2015Redundant power supplies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/109Sector level checksum or ECC, i.e. sector or stripe level checksum or ECC in addition to the RAID parity calculation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Abstract

本發明提供記憶體驅動器及藉由耐用轉換層增加記憶體驅動器耐用性的方法,在DRAM緩衝區內創建的耐用轉換層可提供臨時儲存,以減少快閃記憶體耗損。主機存取類型分為由記憶體管理、暫存檔案、檔案配置表和檔案資料緩衝區條目以及使用者資料檔案使用的分頁檔,SSS控制器則分配資料類型位元,分頁檔和暫存檔案不會被寫入快閃記憶體。壓縮部分頁面資料,由統一對照表(儲存著資料類型位元和DRAM的指向資料或表格指標)指向的子磁區對照表的對照磁區。壓縮部分磁區,以減少DRAM使用率及快閃記憶體耗損。DRAM中的備用區、交換區也可降低快閃記憶體耗損。

Description

具耐用轉換層並能轉移暫存讓記憶體耐磨損的硬碟驅動器
本發明與固態硬碟有關,尤其與固態硬碟的記憶體耐用性增加和壽命延長有關。
快閃記憶體廣泛用於電腦系統中的週邊儲存,亦用於可擕式設備的儲文裝置。1987年,東芝公司的Fujio Masuoka博士發明了NAND快閃記憶體(NAND Flash Memory)。快閃記憶體採用電子抹除式可複寫唯讀記憶體(Electrically-Erasable Programmable Read-Only Memory;EEPROM)單元。記憶體單元通常由雪崩電流程式設計,然後利用量子力學中的穿隧(穿過薄薄的氧化層)效應而被清除。不幸的是,在程式設計或清除的過程中,一些電子可能被困在薄薄的氧化層中。在一個恆定程式設計電壓的程式設計週期中,這些被困的電子將減少單元中儲存的電荷。通常情況下,都是透過升高程式設計電壓以補償受困電子。
由於快閃記憶體的密度和尺寸的增加,儲存單元的大小越來越小,包括穿隧氧化層在內的氧化物的厚度也有所降低。氧化物越薄,電荷越容易被俘獲,有時也越容易出現故障。NAND快閃記憶體的浮閘用來俘獲電子。浮閘中的電子的數量,可能會影響輸出的電壓位準。通過控制寫入過程中受困於耗盡層的電子的數目可以得到不同的電壓位準。更小的浮閘區域往往限制可被捕獲的電子(現在只有幾百個電子)的最大數量。由於程式設計/讀取干擾,電子可能洩漏到浮閘或被浮閘捕獲。電子數的變化會影響到電壓輸出位準的變化,進而改變讀取結果。
快閃記憶體能夠承受的程式設計-清除週期的數量約為10 萬次,因此正常讀寫條件下的應有較長使用壽命。然而,令人苦惱的是,更小更新的快閃記憶體單元的磨損速度更快,對於兩層單元的快閃記憶體可以承受少於1萬次程式設計-清除週期,而對於三層單元(Triple-Level Cells;TLC)的快閃記憶體可以承受大約600次程式設計-清除週期。如果目前的趨勢繼續下去,未來的快閃記憶體可能只允許300次程式設計-清除週期。如此低的耐用性可能會嚴重限制快閃記憶體的應用,並對固態磁碟的應用產生嚴重影響。
增加快閃記憶體的密度的方法之一就是將使每個儲存單元儲存一個以上的位元。儲存單元的不同電壓位準被分配給不同的多位值,如給一個二位元的單元分配四個電壓範圍。然而,雖然多層單元(Multi-Level-Cell;MLC)和三層單元快閃記憶體技術的雜訊容限降低了,但耐用性的問題卻更嚴重了。
預計未來,底層快閃記憶體技術的耐用性將越來越低。通過各種技術,記憶體驅動器可以補償底層快閃記憶體較低的耐磨損性。例如,記憶體驅動器上用於資料儲存的動態隨機儲存記憶體(Dynamic Random Access Memory;DRAM)緩衝區可以充當回寫快取,在主機對相同的資料位置執行寫入操作時,減少寫入底層快閃記憶體的次數。
我們期望記憶體驅動器能夠克服底層快閃記憶體裝置較低的磨損耐用性這個問題。我們希望的超級耐用的記憶體驅動器採用一系列先進的管理技術,這些管理技術使得到達快閃記憶體的寫入數量減少,從而減少底層快閃記憶體上程式設計-清除週期的數量。我們期望從低耐用性快閃記憶體構造出一個超耐用的記憶體驅動器。
本發明與記憶體驅動器的耐用性改進有關。通過給出下文的描述,旨在使本領域中的普通技術人員在特定應用及其要求下能夠製造和使用本發明。對優選實施例的各種修改對於那些本領域技術人員將是顯 而易見的,並且本文所定義的一般原則可以應用到其他實施例中。因此,本發明不限於展示的和描述的特定實施例,而是應被賦予與本文公開的原理和新穎性特徵相一致的最寬範圍。
通過阻止不必要的快閃記憶體寫入可減少底層快閃記憶體設備的磨損。記憶體驅動器中的DRAM緩衝器可以儲存那些並不需要永久儲存而因此並不需要被寫入到快閃記憶體的資料。DRAM不僅更快,還可以多寫超過一百萬次。1966年,DRAM由國際商業機器股份有限公司的羅伯特‧登納德發明。在用戶上網流覽或運行某些冗長的應用程式的時候,典型的主機會創建很多不重要的暫存檔案。發明人意識到,這些檔不需要被寫入快閃記憶體,以減少快閃記憶體的磨損度。
一個典型的系統也會頻繁覆蓋某些類型的資料。這些被頻繁覆蓋的資料最好儲存在記憶體驅動器的DRAM的緩衝器中,並根據一項規則(如基於流逝的時間,分配的容量等)或者根據斷電或電源故障複製到快閃記憶體。在停電的時候,將這些被頻繁覆蓋的資料儲存到快閃記憶體也可以顯著減少快閃記憶體設備的磨損。
這些被頻繁覆蓋的資料可能包括隨著新事件的出現而頻繁更新的登入檔。通常,在系統崩潰後,最新的副本會被檢查。檔案配置表(File Allocation Table;FAT)是另一個被頻繁覆蓋的位置,因為這個位置會隨著檔案被創建或擴展而得到更新。FAT是一個相對較小的記憶體部分,但是如果FAT的每一個更新都被複製到快閃記憶體,其頻繁的存取會增加快閃記憶體的磨損。檔案描述區塊(File Data Block;FDB)是一個被頻繁覆蓋的類似結構。FDB/FAT保留來自主機的檔案系統的中繼資料。將各種表格和DRAM緩衝器一起使用,創建中繼資料,將「檔案系統」儲存到DRAM和快閃記憶體。如果某個邏輯區塊位址(Logic Block Address;LBA)出現位址未對齊的情況,為提高存取時的寫入效率,在寫入FAT區域中的FAT/子對照表158或FDB區域中的FDB/子對照表中之前,邏輯區塊位址便會 被添加到一個偏移量使邏輯區塊位址得以和快閃記憶體30中的頁面位址邊界對齊。
需要根據規則(如基於流逝的時間,分配的容量等)或在斷電狀態/電能損耗的時候,將損壞區塊表、清除計數器、垃圾收集、對照表和記憶體驅動器產生的其他檔案儲存到快閃記憶體。也可以根據規則(如基於流逝的時間,分配的容量等)或在斷電狀態/電能損耗的時候,將快閃記憶體系統中繼檔儲存進DRAM緩衝器並複製到快閃記憶體,以減少快閃記憶體磨損。上面提到的表格和中繼檔是在通電的條件下被儲存進快閃記憶體的。設備初始化的時候,它們被載入到DRAM的緩衝器。隨後,主機資料的讀/寫改變了這些資料的內容。當出現斷電/電能損耗的情況時,那些無效的表格和中繼檔需要被寫入或備份到條帶單元裡的快閃記憶體中。在電源故障的時候,如果某個特定應用需要一個確切的系統復原點的話,寫入快取、先進先出(First in,First out;FIFO)緩衝器、資料登錄緩衝區(Data-in buffer;DIB)、耐用性備用/交換區塊(SPARE/SWAP block)以及其他記憶體驅動器緩衝器的主機資料也可以複製到快閃記憶體,以便於系統恢復。
另一種方法是確保DRAM的耐用轉換層(Endurance Translation Layer;ETL)中的有關資料被複製到MLC。在關閉電源的情況下,ETL中的有效資料副本可以保存在MLC裡。在通上電時,ETL中的資料可以從MLC重新載入到DRAM。通過記錄差異,可以修改拷貝的方法,從而減少複製的資料的數量,減少向MLC寫入資料。
DRAM緩衝器的ETL裡的部分對照表只有1組對照表的條目(共有N組對照表)。其他的N-1組對照表則儲存在快閃記憶體,在部分對照表發生遺漏的時候,它們才會被送至DRAM緩衝器。
主機的主要DRAM記憶體圖像常會被移到硬碟或記憶體驅動器中,而管理記憶體需要使用分頁檔。如果因為電源故障而導致頁面交換檔遺失,也沒有太大關係,因為系統需要重新開機、重新初始化記憶體 管理和分頁系統並刪除任何儲存的分頁檔。在電源關閉/電能損耗的時候,為了減少快閃記憶體磨損,這些分頁檔也可以儲存在DRAM緩衝器中,而並不一定要複製到快閃記憶體中。
主機向記憶體驅動器發出請求時,往往遵循資料類型的規則序列。例如,主機可以首先存取FAT,然後存取FDB,接著讀取或寫入某個資料檔案。這種迴圈序列可以幫助一個超耐用性的記憶體驅動器對資料類型進行分類。根據作業系統(Operating System;OS)的類型(Windows、Linux、iOS、Android設備等)不同,FAT總是在一個預先確定的的儲存位置。因此,對此範圍內的位址的存取屬於FAT類型的存取。FAT存取後是FDB存取。接下來存取的是使用者資料。因此,使用者資料可以被認定為緊隨FAT和FDB存取之後。耐用的記憶體驅動器對FDB進行檢查,找到檔案副檔名,因此可以以不同於使用者資料檔案的方式來檢測和處理暫存檔案。
當記憶體驅動器不去區分檔案類型時,每種類型的檔案都可以造成快閃記憶體磨損。無論什麼系統都會同等對待所有的資料。所有東西都被寫入快閃記憶體,至少在其進入DRAM緩衝器的時候,被另一段來自主機的、具有相同快取索引的資料逐出DRAM緩衝器時是如此的。通過識別資料類型及其對主機的意圖,然後只把正常操作期間的實際的使用者資料寫入到快閃記憶體,只將關鍵資料寫入快閃記憶體,然後按照電源故障的規則操作,這樣可以顯著降低快閃記憶體的寫入。
通過壓縮資料可以進一步減少快閃記憶體磨損。例如,快閃記憶體中不到一整頁面的資料(部分頁面數據)可以和其他部分頁面數據一起存放在快閃記憶體中的單個頁面中,而不是將部分頁面數據分別存在許多單獨的頁面中。還有一些資料檔案非常小,只有一個磁區或小於一個磁區。這些局部磁區檔,也可以放在一起。如果快閃記憶體容量和密度增加,頁面的大小也會增加。例如,一個快閃記憶體頁面可能是16個磁區, 每磁區512位元組,也可能是8千位元組(Kilo Byte;KB)。但是因為許多主機檔都非常小,小的資料檔案(如只有1 KB)儲存在單獨的快閃記憶體頁面中,將浪費大量的空間。將這些部分頁面檔放在一起,可以提高效率,並最終降低快閃記憶體的磨損。即使是一個大的檔,該檔案的最後一頁可能會和小檔一樣小,從而浪費了大量的空間。
和快閃記憶體頁面對齊相比,由於在不同時間在同一快閃記憶體頁面上的兩種不同寫入,來自主機的群集不對齊會造成不必要的寫入放大。此外,一次寫入就佔用一個快閃記憶體頁面,這可能會導致兩頁面的快閃記憶體被寫入。通過檢查FAT1表的起始位址,可以解決這一點。如果出現快閃記憶體頁面邊界不對齊,向FAT1起始位址之後的所有的LBA位址加入一個偏移量以降低寫入放大的影響,就可以實現對齊調整。
在一個不良的狀態中,DRAM緩衝器中可能存在軟體錯誤。可以使用一個額外的超容量對DRAM進行錯誤糾正碼(Error Correcting Code;ECC)同位,以增加可靠性。
本發明提出一種記憶體驅動器,包含一主機介面,係從一主機接收一主機讀取指令及一主機寫入指令;一動態隨機儲存記憶體緩衝器,係用於資料儲存;一快閃記憶體,在斷電時用於儲存資料,快閃記憶體有複數個可清除區塊且快閃記憶體有複數個可寫入頁面;一控制器,控制器根據主機介面接收的主機讀取指令及主機寫入指令做出反應,進而對快閃記憶體的存取和動態隨機儲存記憶體緩衝器的存取進行控制,控制器將一主機資料寫入動態隨機儲存記憶體緩衝器;一耐用轉換層,耐用轉換層在動態隨機儲存記憶體緩衝器內執行,且耐用轉換層由控制器進行控制以提供臨時儲存來減少快閃記憶體耗損;一資料寫入快取,在動態隨機儲存記憶體緩衝器內且由控制器管理,其中控制器並管理一非暫存資料;一獨立磁碟冗餘陣列結構,係在動態隨機儲存記憶體中用於資料分佈,獨立磁碟冗餘陣列結構通過複數個快閃記憶體通道寫入一新資料,獨立磁碟冗 餘陣列結構由控制器進行管理;及一備份電源,係在斷電時為動態隨機儲存記憶體緩衝器、快閃記憶體和控制器提供電力;其中,備份電源有足夠的容量,可令控制器根據一備份規則將耐用轉換層的一資料複製到快閃記憶體中。
上述所提到的記憶體驅動器,耐用轉換層在動態隨機儲存記憶體緩衝器中執行,其進一步包含:一頁面對照表,係儲存在動態隨機儲存記憶體緩衝器中並由控制器存取,頁面對照表有由一主機邏輯位址所選的複數個條目;複數份子磁區對照表,係儲存在動態隨機儲存記憶體緩衝器中並由控制器存取,每一子磁區對照表皆由一個頁面中磁區數所選擇的複數個磁區條目組成;其中,子磁區對照表中的每一磁區條目包括:一部分磁區位元,當磁區條目是主機的一完整磁區資料的一完整磁區條目,以及當磁區條目是主機的一部分磁區資料的一部分磁區條目;一頁面指標,用於指定動態隨機儲存記憶體緩衝器中的一頁面位置,頁面位址用於儲存完整磁區資料或部分磁區資料;一磁區識別符,當條目是一完整磁區條目時,用於識別頁面位置內的磁區;當條目是一部分磁區條目時,具有用於識別頁面位置內一起始位元組位置的一個位元組偏移量,位元組偏移量並同時具有用於指明一部分磁區資料長度的一個長度;其中完整磁區條目和部分磁區條目儲存在子磁區對照表中;一資料登錄緩衝區,儲存在動態隨機儲存記憶體緩衝器中並由控制器存取;其中一條帶單元的每頁面均包括完整頁面資料或分組的部分頁面資料;其中控制器允許一主機寫入資料儲存於資料寫入快取,然後根據一規則將條帶單元寫入快閃記憶體中。
上述所提到的頁面對照表中有一條目,條目包含:複數個資料類型位元,為條目選擇的邏輯位址而儲存的一資料類型;一指標,當全頁的一主機資料儲存在動態隨機儲存記憶體中,或當全頁主機資料儲存在快閃記憶體中時,指標在其中用於指定位置,其中當主機資料為部分頁面資料時,指標用於指出在子磁區對照表中用於儲存特定一子磁區對照表 的位置;其中,資料類型位元指從包含下列群組中選出的一資料類型:一檔案配置表條目;一檔案描述區塊條目;一分頁檔,由一主機記憶體管理器創建、將資料從主機的一主記憶體交換至記憶體驅動器;一暫存檔案,在一檔案配置表條目中由一檔案擴展標識,由主機上的一執行程式創建,暫存檔案在電源關閉、喪失時可以刪除;及一使用者檔案,用於為主機的一使用者儲存一使用者資料或一應用程式資料;其中控制器允許將使用者檔案複製到快閃記憶體,但不允許將暫存檔案寫入快閃記憶體,這樣,通過阻止將暫存檔案寫入快閃記憶體,可以減少快閃記憶體的耗損。
上述所提到的記憶體驅動器,其中耐用轉換層在動態隨機儲存記憶體緩衝器中執行,耐用轉換層進一步包含:一損壞區塊管理器,當快閃記憶體中的一個區塊被清除以生成一個清除區塊時,損壞區塊管理器啟動:一計數功能,係指對清除區塊中一個頁面內未清除位元的一數量進行統計;當未清除位元的數量超過一較低閾值,但不超過一較高閾值時,將頁面標記為一保護頁面,並增加為保護頁面儲存的一數量的錯誤糾正碼位元;一頁面標記功能,會在未清除位元的數量超過較高閾值時啟動,並標記頁面為一損壞頁面,並且不在損壞頁面中儲存主機資料;一重複功能,在清除區塊中的所有頁面重複計數功能及頁面標記功能;一損壞頁面計數功能,係用於計算清除區塊中的損壞頁面的一數量;及一區塊標記功能,當清除區塊的損壞頁面的一數量有超過一區塊閾值時啟動,將清除區塊標記為一損壞區塊,並且在損壞區塊中的任何頁面中均不儲存主機資料。
上述記憶體驅動器,其中耐用轉換層在動態隨機儲存記憶體緩衝器中執行,耐用轉換層進一步包含:一資料登錄緩衝器,儲存在動態隨機儲存記憶體緩衝器中,並由控制器存取;及一標準壓縮電路,包含壓縮主機寫入指令的方式、添加一頭文件以壓縮資料的方式、更新一壓縮對照表的方式;其中控制器還包含一個適配壓縮演算法,用以選擇一適當的演算法並根據設置的資料類型壓縮寫入資料;這樣,通過減小寫入資料 的大小,使快閃記憶體的寫入量更少,以便延長快閃記憶體的耐用性。
上述的記憶體驅動器,其中耐用轉換層在動態隨機儲存記憶體緩衝器中執行,耐用轉換層進一步包含:一自我監測、分析及報告技術功能,用以收集一快閃記憶體裝置的一健康資訊,其中記憶體驅動器的保固是根據客戶購買年限或記憶體驅動器的一總主機寫入數量而決定。
本發明另外提出一種藉由耐用轉換層增加記憶體驅動器耐用性的方法,能夠增加具有較短清除週期壽命的一快閃記憶體的耐用性,方法包含:當一主機介面接收一主機讀取指令或一主機寫入指令時,控制對快閃記憶體和一動態隨機儲存記憶體緩衝器的存取,並通過一控制器向動態隨機儲存記憶體緩衝器寫入一主機資料;在被一控制器控制的動態隨機儲存記憶體緩衝器內創建一耐用轉換層,並使用耐用轉換層提供暫時儲存,以減少快閃記憶體損耗;在動態隨機儲存記憶體緩衝器內分佈資料,在其中形成資料分佈的一獨立磁碟冗餘陣列結構,並通過快閃記憶體的複數個通道寫入一新資料,獨立磁碟冗餘陣列結構係由控制器管理;以一資料劃分管理器確認新資料類型為一非臨時資料或者為一臨時資料;及在斷電時以一備份電源為動態隨機儲存記憶體緩衝器、快閃記憶體及控制器供電,備份電源有足夠的容量,使得控制器可以根據一規則將耐用轉換層中的非臨時資料複製到快閃記憶體中。
上述的藉由耐用轉換層增加記憶體驅動器耐用性的方法進一步包含:以控制器管理儲存在動態隨機儲存記憶體緩衝器中的一資料寫入快取;寫入由一匹配條目中指標指定的動態隨機儲存記憶體緩衝器的耐用轉換層儲存的一整頁數據;當主機資料用於快閃記憶體中的一部分頁時:創建或定位由一對照表匹配條目指標指定的一子磁區對照表;對於一主機的每個全磁區資料,更新子磁區對照表的一條目,指示儲存在動態隨機儲存記憶體緩衝器中的全磁區類型和全磁區指標;對於主機的一部分磁區資料,更新子磁區對照表中的條目,指示儲存部分磁區、其長度和起始 位元組位移,其中,子磁區對照表具有全磁區和部分磁區的條目;其中每頁的一條帶單元包括整頁數據或分組的部分頁數據;其中控制器允許將一主機寫入資料儲存在資料寫入快取中,然後根據一項規則將條帶單元寫入快閃記憶體中。
上述的藉由耐用轉換層增加記憶體驅動器耐用性的方法,其中耐用轉換層在動態隨機儲存記憶體緩衝器中執行,方法進一步包含:使用一組裝管理器控制各種功能;管理動態隨機儲存記憶體緩衝器中儲存的一資料寫入快取;將來自一主機的一第一寫入資料及一頭文件寫入資料寫入快取的開頭;將來自主機的一新寫入資料及在前一個資料旁的一頭文件寫入資料寫入快取;其中,當接受來自主機的一已更新寫入資料,且一舊資料在資料寫入快取中,則控制器將清除舊資料及其頭文件,並將一無效資料移至舊資料之後,附加已更新資料及其資料頭;其中,當無效資料大小超過一條帶單元,且資料寫入快取已滿時,控制器會將條帶單元寫入快閃記憶體。
上述的藉由耐用轉換層增加記憶體驅動器耐用性的方法,其中耐用轉換層在動態隨機儲存記憶體緩衝器中執行,方法進一步包含:使用控制器管理存入動態隨機儲存記憶體緩衝器的一資料寫入快取;接受來自一主機的一初始主機寫入值;當主機的一邏輯位址在一檔案配置表位址範圍內時,決定一檔案配置表類型的一資料類型位元,檔案配置表位址範圍由一儲存檔案配置表條目的格式化操作指定;當主機的一邏輯位址在一檔案描述區塊位址範圍內時,決定一檔案描述區塊類型的一資料類型位元,檔案描述區塊位址範圍由一儲存檔案描述區塊條目的一作業系統指定;如果一用戶檔案類型的一資料類型位元未作另行分配,那麼決定用戶檔案類型的資料類型位元;將被分配給初始主機寫入值的一資料類型位元寫入一新條目中,新條目位於帶有一指標的一對照表中;將接收自初始化的主機的初始主機寫入值指標指向的動態隨機儲存記憶體緩衝器的耐用轉 換層某一位置;將動態隨機儲存記憶體緩衝器中的一儲存資料移至快閃記憶體中,以便儲存資料具備指示使用者檔案類型的資料類型位元;電源關閉或停電時,將動態隨機儲存記憶體緩衝器的耐用轉換層中的一儲存資料移至快閃記憶體中,儲存資料的資料類型位元為指示檔案配置表或檔案描述區塊,這樣可降低快閃記憶體的磨損。
上述的藉由耐用轉換層增加記憶體驅動器耐用性的方法進一步包含:在動態隨機儲存記憶體緩衝器內創建一資料寫入快取區;記錄每一邏輯區塊位址的一存取頻率;其中,存取頻率大於一預定義值時,邏輯區塊位址將被分類為頻繁存取,反之即為非頻繁存取;被存取的邏輯區塊位址為頻繁存取時,將一資料存至一頻繁存取快取區;被存取的邏輯區塊位址為非頻繁存取時,將資料存至一非頻繁存取快取區;其中,非頻繁存取快取區會被優先寫入快閃記憶體,以及優先被其它頻繁存取區或非頻繁存取邏輯區塊位址存取覆蓋。
上述的藉由耐用轉換層增加記憶體驅動器耐用性的方法進一步包含:使用控制器管理存入動態隨機儲存記憶體緩衝器的一資料寫入快取;使用控制器管理來自一主機傳入的一邏輯區塊位址;在電源接通狀態下檢查一檔案系統位址與一快閃記憶體頁面之間的不對齊問題,確定所需對齊偏移量;添加偏移量到一傳入邏輯區塊位址中,將傳入邏輯區塊位址對齊到快閃記憶體頁面。
上述的藉由耐用轉換層增加記憶體驅動器耐用性的方法進一步包含:使用控制器管理在動態隨機儲存記憶體緩衝器中的一資料寫入快取;操作一標準壓縮電路,壓縮主機寫入指令並產生一壓縮資料,將一頭文件添加至壓縮資料,並更新一已壓縮對照表;其中,控制器進一步包含各種壓縮演算法;選擇一適當演算法,根據一資料集類型壓縮一寫入資料;當資料集具有一相等資料集時,使用已壓縮對照表,指向相同的已壓縮資料集;當資料集具有一近似資料集時,使用已壓縮對照表,指向相同 的已壓縮資料集,並使用指標指向增量資料;當一資料集沒有相似資料集時,將已壓縮對照表移至動態隨機儲存記憶體緩衝器,並更改已壓縮對照表中的一指標;當一資料的大小在壓縮後未減小時,保留原始的資料;如此一來,寫入資料的一大小會減小,使寫入快閃記憶體的資料變少,從而提高快閃記憶體耐用性。
上述的藉由耐用轉換層增加記憶體驅動器耐用性的方法進一步包含:使用控制器管理在動態隨機儲存記憶體緩衝器中的一資料讀取快取;從一主機接收一讀取請求,獲取一邏輯區塊位址;從快閃記憶體中讀取一資料,未檢查到讀取錯誤後,發送資料至主機;檢查到一讀取錯誤時,方法一啟動,執行一錯誤糾正碼檢查,生成複數個錯誤位元;錯誤位元的數目少於一第一個閾值時,方法二啟動,應用一第一層錯誤糾正法糾正錯誤位元,然後將一已修正資料發送至主機;錯誤位元的數目多於第一個閾值且少於一第二個閾值時,方法三啟動,應用第一層錯誤糾正法糾正錯誤位元,然後將一已修正資料發送至主機,若先前沒有生成的話,則生成一軟體錯誤糾正碼;錯誤位元的數目多於第二個閾值且還可應用錯誤糾正碼進行糾正時,方法四啟動,應用第一層錯誤糾正法糾正錯誤位元,然後將一已修正資料發送至主機,若先前沒有生成的話,則生成一軟體錯誤糾正碼;錯誤位元數高於第一層錯誤糾正法的一第一層錯誤糾正限度時,方法五啟動,應用之前生成的軟體錯誤糾正碼糾正錯誤位元,然後將一已修正資料發送至主機;錯誤位元數高於第一層錯誤糾正法的第一層錯誤糾正限度,且無法使用軟體錯誤糾正碼無法進行糾正時,方法六啟動,放棄一分段資料,應用一分段資料組中的一同位分段資料及分段資料外的複數個分段資料重建分段資料,然後將一已修正資料發送至主機;錯誤位元數高於第一層錯誤糾正法的第一層錯誤糾正限度,應用軟體錯誤糾正碼無法進行糾正時,且同位分段資料無法使用時,方法七啟動,執行一參考電壓切換程序,然後發送一已修正資料至主機。
上述的藉由耐用轉換層增加記憶體驅動器耐用性的方法進一步包含:使用控制器管理在動態隨機儲存記憶體緩衝區中的一資料讀取快取;從一主機接收一讀取請求,獲取一邏輯區塊位址;從快閃記憶體中讀取一資料,未檢查到任何讀取錯誤後,發送資料至主機;檢查到一讀取錯誤時,方法一啟動,執行一錯誤糾正碼檢查,生成複數個錯誤位元;錯誤位元數少於一個閾值時,方法二啟動,應用一第一層錯誤糾正法糾正錯誤位元,然後將一已修正資料發送至主機;錯誤位元數多於閾值且還可應用錯誤糾正碼進行糾正時,方法三啟動,應用一第一層錯誤糾正法糾正錯誤位元,然後將一已修正資料發送至主機,重新定位一快閃記憶體資料的一舊物理區塊至一新物理區塊位置,標記舊物理區塊為已放棄;錯誤位元數高於第一層錯誤糾正的一第一糾正限度時,方法四啟動,放棄一分段資料,應用一分段資料組中的一同位分段資料及分端資料以外的複數個其它分段資料重建分段資料,然後將一已修正資料發送至主機,重新定位快閃記憶體資料的一舊物理區塊至一新物理塊位置,標記舊物理區塊為已放棄;錯誤位元數高於第一層錯誤糾正的第一糾正限度,且分段同位資料無法使用時,方法五啟動時,執行一參考電壓切換程序,然後將一已修正資料發送至主機。
上述的藉由耐用轉換層增加記憶體驅動器耐用性的方法進一步包含:使用控制器管理存入動態隨機儲存記憶體緩衝區的一資料讀取快取;當複數個錯誤位元的數目高於一第一級錯誤糾正的一第一糾正限度時,切換方法啟動,通過以下方式調整一參考電壓位準:將不同暫存器值寫入一快閃記憶體晶片暫存器中,讀取快閃記憶體晶片內的資料來調整參考電壓位準;其中,參考電壓位準或高於或低於一預設參考電壓位準;使用一已調整過的參考電壓位準讀取快閃記憶體晶片內的一資料;使用已調整過的參考電壓位準與第一級錯誤糾正成功讀取快閃記憶體晶片內的資料後,將一已修正資料發送至主機,儲存已調整過的參考電壓位準供以後使 用;使用已調整過的參考電壓位準與第一級錯誤糾正未成功讀取快閃記憶體晶片內的資料後,使用先前生成的一軟體錯誤糾正碼,將一已修正資料發送至主機,儲存已調整過的參考電壓位準供以後使用;使用已調整過的參考電壓位準、第一級錯誤糾正以及先前生成的軟體錯誤糾正碼讀取資料失敗時,在一新的反覆運算中計算一新調整過的參考電壓位準並應用新調整過的參考電壓位準;及所有預定義參考電壓位準都失敗後,報告一嚴重錯誤,不發送一已修正資料;這樣,當錯誤位元的數目高於第一級錯誤糾正的第一糾正限度時,調整參考電壓位準,從而提高快閃記憶體耐用性。
上述的藉由耐用轉換層增加記憶體驅動器耐用性的方法進一步包含:當一快閃記憶體中的一已清除區塊已被清除時,增加一已清除區塊清除計數表中的一區塊清除次數;讀取已清除區塊的一頁面狀態表,頁面狀態表中有複數個頁面條目,每一個頁面條目都儲存了已清除區塊中的一頁面的一頁面狀態,頁面狀態包括一損壞頁面或一好頁面的指示;針對已清除區塊中的每一頁面,從頁面狀態表中讀取每一頁面上的頁面條目;頁面狀態表中的頁面狀態顯示為壞時,處理頁面中的下一頁面;頁面狀態表中的頁面狀態顯示為好時,計算頁面上的複數個未清除位元數;未清除位元數超過一第一閾值時,更改頁面狀態,在頁面條目中顯示損壞頁面,增加一損壞頁面計數;未清除位元數處於第一閾值與一第二閾值之間,且頁面狀態表中的頁面狀態顯示需要一錯誤糾正碼保護時,處理頁面中的下一頁面;未清除位元數處於第一閾值與第二閾值之間,且頁面狀態表中的頁面狀態顯示不需要錯誤糾正碼保護時,更改頁面狀態表中的頁面狀態,顯示需要錯誤糾正碼保護,增加一錯誤糾正碼保護頁面數;及已清除區塊的損壞頁面計數超過一第三閾值時,顯示已清除區塊為一損壞區塊,不向已清除區塊寫入新資料,這樣,可通過計算已清除區塊的損壞頁面計數來識別已清除區塊為損壞,並允許損壞頁面存在於好區塊中,從而提高快閃記憶體的耐用性。
本發明又提出一種藉由耐用轉換層增加記憶體驅動器耐用性的方法,能夠增加具有較短清除週期壽命的一快閃記憶體的耐用性,方法包含:在由一控制器管理的一動態隨機儲存記憶體緩衝器中創建一耐用轉換層,應用耐用轉換層提供臨時儲存,以此降低快閃記憶體的耗損度;在動態隨機儲存記憶體緩衝器中創建一備用區或一交換區;操作控制器應用動態隨機儲存記憶體緩衝器中的備用區或交換區,合併快閃記憶體中的一有效資料和一新資料,並生成一合併資料;及將合併資料寫入快閃記憶體內;這樣,控制器將應用動態隨機儲存記憶體緩衝區內的一備用或一交換功能,而非快閃記憶體內的功能。
上述的藉由耐用轉換層增加記憶體驅動器耐用性的方法進一步包含:為快閃記憶體內的複數個區塊提供損耗均衡控制;當控制器需要快閃記憶體的區塊通過動態隨機儲存記憶體緩衝區中的備用區或交換區寫入資料時,檢查一區塊狀態及一區塊清除計數表,從處於一空區塊狀態的一區塊清單中選擇清除次數最低的一區塊;不能選擇清除次數最高的一區塊。
上述的藉由耐用轉換層增加記憶體驅動器耐用性的方法進一步包含:為快閃記憶體內的複數個區塊提供損耗均衡控制;設備空閒且一最高清除次數達到一預定閾值時,利用一區塊狀態、一區塊清除計數表,有針對性地選擇具有最低清除次數的一組已用區塊以及同樣數量的具有最高清除次數的空區塊,通過動態隨機儲存記憶體緩衝區中的備用區、交換區,從一最低清除次數區塊中將資料複製到一最高清除次數區塊,然後清除最低清除次數區塊;再利用最低清除次數區塊;及將每一區塊的清除次數的增量最小化。
上述的藉由耐用轉換層增加記憶體驅動器耐用性的方法進一步包含:在動態隨機儲存記憶體緩衝區中創建一頁面狀態表;操作控制器,使用動態隨機儲存記憶體緩衝器中的頁面狀態表記錄每一個在快閃記 憶體區塊中頁面狀態;清除一個區塊後,將區塊中的一頁面狀態設置為一空頁面;寫入一個頁面後,更改頁面的一頁面狀態為一已使用頁面;當一主機資料被寫入一個相同的邏輯頁面位址時,將一資料寫入一新快閃記憶體頁面,將一舊頁面的一頁面狀態設置為一已清除頁面或一已剪裁頁面;從主機接收到一剪裁命令時,將相應的一頁面狀態設置為一已清除頁面或一已剪裁頁面;當頁面被識別為一損壞頁面時,設置頁面的一頁面狀態為一損壞頁面;在一垃圾收集過程中,不將顯示為一已清除頁面或一已剪裁頁面的一頁面移入一新區塊中;在動態隨機儲存記憶體緩衝器中創建一備用區、一交換區;操作控制器,使用動態隨機儲存記憶體緩衝器中的備用區及交換區合併快閃記憶體中的一有效資料和一新資料,並生成一合併資料;其中,從頁面狀態表中可檢查到一目標區塊中的每一頁面的一頁面狀態;其中,有效資料的一頁面的一頁面狀態顯示為一已用頁面,頁面狀態不顯示為一損壞頁面、一空頁面或一已剪裁頁面;及將合併資料寫入快閃記憶體;這樣,控制器將使用動態隨機儲存記憶體緩衝器內的一備用功能及一交換功能,而非快閃記憶體內的功能。
雖然使用單一的技術來減少快閃記憶體的磨損,可能帶來各種改進,但如果同時使用這些技術,快閃記憶體的耐用性就可能大大增加。本發明提出一種記憶體驅動器,來達成上述目的。
10‧‧‧主機DRAM
100‧‧‧主機
102‧‧‧SSD
108‧‧‧資料登錄緩衝器
109‧‧‧資料劃分管理器
11‧‧‧SEED
110‧‧‧非暫存檔案
111‧‧‧快取
112‧‧‧暫存檔案
113‧‧‧DRAM中的暫存檔案區
12‧‧‧DRAM介面
14‧‧‧多通道快閃記憶體介面
140‧‧‧暫存檔案區
142‧‧‧網際網路暫存檔案區
144‧‧‧資料提取區
146‧‧‧登入檔區
148‧‧‧分頁檔和對照表區
150‧‧‧系統區
151‧‧‧讀取快取和對照表
152‧‧‧緩衝區
154‧‧‧資料寫入快取
156‧‧‧耐用性備用與交換區塊
158‧‧‧FAT/子對照表區
160‧‧‧FDB/子對照表區
16‧‧‧主機介面
161‧‧‧壓縮LBA表
162‧‧‧頁面狀態表
164‧‧‧區塊清除計數表
166‧‧‧部分頁面對照表
168‧‧‧部分子磁區組合對照表
170‧‧‧S.M.A.R.T.資料收集器
18‧‧‧磁區組合管理器
180‧‧‧主機位址
182‧‧‧物理位址
184‧‧‧邏輯位址
186‧‧‧物理位址
188‧‧‧邏輯位址
190‧‧‧物理位址
191‧‧‧磁區識別符
192‧‧‧統一對照表
194‧‧‧子磁區對照表
196‧‧‧頁面資料區
20‧‧‧SSS DRAM緩衝器
202‧‧‧FAT子對照表
204‧‧‧FAT條目
210‧‧‧DRAM/PBA表的LBA表
214‧‧‧壓縮資料
22‧‧‧頁面組合管理器
23‧‧‧TRIM管理器
24‧‧‧磨損測量器
26‧‧‧壓縮對照管理器
28‧‧‧ECC管理器
30‧‧‧快閃記憶體
32‧‧‧表格管理器
34‧‧‧NCQ管理器
36‧‧‧RAID控制器
38‧‧‧損壞區塊管理器
39‧‧‧S.M.A.R.T.功能
40‧‧‧SSS控制器
41‧‧‧備用電源
42‧‧‧備用電源
44‧‧‧暫存檔案管理器
46‧‧‧加密引擎
302、304、306、308、310、312、314、315、316、318、320、322、323、324、326、328、329、330、331、332、334、336、338、340、342、344、346、348、350、352、354、356、358、360、390、392、394、402、404、406、408、410、412、414、416、418、420、422、424、426、428、430、432、434、436、438、440、442、444、446、448、450、452、453、454、456、458、460、461、462、464、466、468、470、472、474、476、480、482、484、486、488、490、492、493、502、504、506、508、510、512、514、516、518、520、522、524、526、528、530、532、540、541、543、554、556、558、560、562、564、566、568、570、572、574、576、578、580、582、584、586、588、590、592、594、650、651、652、653、654、655、656、680、682、684、686、688、689、690、692、694、696、698、699、702、704、706、708、710、712、714、716、718、720、722、724、726、728、730、732、734、736、738、740、742、744、746、748、750、752、754、756、758、760、762、764、766、770、772、774、776、778、780、782、784、786、788、790、792、794、796、798、802、804、806、810、812、814、816、818、820、822、824、830、832、834、836、838、840、842、844、846、848、850、852、854、856、858、860、864、866、868、870、872、874、876、878、 880、882、884、886、888、890、892、894、896、898、902、904‧‧‧步驟
圖1 使用低耐用性快閃記憶體的記憶體驅動器的示意圖;圖2A-2C避免將暫存檔案寫入快閃記憶體流程示意圖;圖3 記憶體示意圖;圖4A-4B 使用耐用性備用與交換區塊的過度寫入示意圖;圖5 區塊對照、頁面對照和磁區對照示意圖;圖6 記憶體驅動器中對不同的資料類型的對照條目示意圖;圖7使用統一對照表和子磁區對照表的分頁檔的完整頁面對照 和部分頁面示意圖;圖8 統一對照表中的FAT對照示意圖;圖9A 壓縮頁面的對照示意圖;圖9B DRAM緩衝器中使用者資料的資料流程示意圖;圖9C DRAM緩衝器中分頁檔和暫存檔案的資料流程示意圖;圖10根據主機請求對資料類型進行分類及對使用者資料檔進行調度的流程示意圖;圖11讀取分頁檔、暫存檔案或FDB檔的流程示意圖;圖12A-12C寫入分頁檔、暫存檔案或FDB檔的流程示意圖;圖13A-13B通往記憶體驅動器的一個FAT通路示意圖;圖14 記憶體驅動器處理主機讀取的使用者資料檔案流程示意圖;圖15A-15I記憶體驅動器處理主機在頻繁存取區和非頻繁存取區寫入的用戶資料檔案流程示意圖;圖16 舊磁區清理過程的流程示意圖;圖17A-17E 使用完整頁和部分頁的頻繁存取快取和非頻繁存取快取進行使用者資料處理的流程示意圖;圖18A-18B 加密頁面和壓縮頁面的處理流程示意圖;圖19A-19D 不良頁面和損壞區塊的檢測和處理流程示意圖;圖20A-20C 使對照表和其他DRAM區域進行初始化的上電流程示意圖;圖21 斷電流程示意圖;圖22A-22B 多層錯誤檢測修正讀取程式流程示意圖;圖23A-23B 簡化的多級ECC讀取程式流程示意圖;圖24A-24B 參考電壓偏移程式流程示意圖;圖25 資料寫入到保護條件提高的快閃記憶體中流程示意圖。
本發明主要係揭露一種記憶體驅動器,而有關硬體如何組裝等技術並非本發明重點,且為本技術所屬領域之通常知識者所熟知,故以下文說明並不會針對這些部份加以詳述。另外,對於下述內文中之描述所參照的圖式,其作用僅在示意表達本發明之記憶體驅動器的相關特徵,並不因此而限制本發明所要保護的技術內容範圍。
請先參閱圖1,圖1是使用低耐用性快閃記憶體的記憶體驅動器的示意圖。主機100有一個執行程式指令和作業系統(OS)(如Windows、Linux、iOS、或Android等)指令的處理器。處理器的主記憶體位於主機DRAM 10中,主機DRAM 10還儲存用於檔案系統控制的資料和用於頁面交換的分頁檔,它們是記憶體管理的一部分。當主電源發生故障時,備用電源41為主機100提供電源,使在出現電源故障的時候,主機100能夠將來自主機DRAM 10的關鍵資料發送至固態磁碟(Solid-State Drive;SSD)102或硬碟。備用電源41為電池或不斷電供應系統(Uninterruptible Power Supply;UPS)等。這讓主機的CPU有時間關閉應用程式,關閉連接的設備。SSD102有自己的備用電源42,在主電源出現故障時,讓SSD102將關鍵資料寫入快閃記憶體30。備用電源42可以為電容器、超級電容器或電池。
增強型超級耐用性設備(Super Enhanced Endurance Device;SEED)11是主機DRAM 10中的一個應用和儲存。SEED 11可用來緩解SSD 102的負擔。首先,SEED 11可以分離和(或)儲存那些並不需要永久儲存在SSD102的資料,如暫存檔案,分頁檔等。如果SSD102的固態儲存DRAM(Solid-State Storage DRAM;SSS DRAM)緩衝器20足夠大,它的一部分可以被分割為一個可以由SEED 11直接存取的磁碟。第二,SEED 11可以使用主機的CPU來執行任務,例如壓縮/解壓縮,加密/解密。第三,SEED 11可以支援資料寫入快取,管理寫入到SSD 102的頁面資料。SEED 11可 以生成軟體ECC或低密度同位碼(Low Density Parity Check;LDPC),便於將頁面數據寫入SSD 102。第四,SEED 11可支援在主機100的電源打開或關閉時,自動載入或複製條帶單元中的SEED 11的圖像。
SSD 102有主機介面16,該介面使用匯流排,如快捷外設互聯標準(PCI Express;PCIe)、序列先進技術配置(Serial Adcanced Technology Attachment;SATA)、或通用序列匯流排(Universal Serial Bus;USB)、Thunderbolt、嵌入式多媒體卡(Embedded Multimedia Card;eMMC)、嵌入式固態硬碟(Integrated Solid State Drive;ISSD)等與主機100相連。來自主機介面16的主機資料被發送到智慧存取交換機(Smart Storage Switch;SSS)控制器40。SSS控制器40執行各種功能,以減少快閃記憶體30的磨損,例如,把來自主機100的暫存檔案儲存在SSS DRAM緩衝器20中,而不是儲存在快閃記憶體30中。其它類型的資料,如來自主機100的分頁檔會被暫存在SSS DRAM緩衝器20中,但如果SSS DRAM緩衝器20沒有額外的空間,基於伺服器系統的申請,舊的分頁檔會被置入快閃記憶體30。同樣的,SSD102的快閃記憶體檔案雖然暫存在SSS DRAM緩衝器20中,但卻保存在快閃記憶體30中。各種表格和緩衝器也儲存在SSS DRAM緩衝器20中,如備用交換管理表或檔案。SSS DRAM緩衝器20中的這些表格可能是保存在快閃記憶體30中的較大表格的快取,例如系統和損壞區塊表,邏輯位址-物理位址的對照表,或其他種對照、系統表。由於快閃記憶體30的各部分將隨著時間的推移而逐漸磨損,因而快閃記憶體30要有夠多的容量。SSS DRAM緩衝器20中的備用與交換塊區域為快閃記憶體30即為提供夠多的容量。
DRAM介面12將資料讀取和寫入SSS DRAM緩衝器20,多通道快閃記憶體介面14被組織成若干個通道,對資料頁進行程式設計並清除快閃記憶體30中的區塊。原生指令佇列(Native Command Queuing;NCQ)管理器34可對來自主機100的主機命令重新排序,並管理通過主機 介面16接收的主機命令佇列。NCQ管理器34將主機命令輸入命令佇列,在命令佇列中寫入得到重新排序和組合,減少了快閃記憶體30的寫入。
暫存檔案管理器44識別來自主機100的暫存檔案,如通過讀取FDB中的寫入的主機資料的檔案副檔名。暫存資料(具有tmp、temp等副檔名)被儲存在SSS DRAM緩衝器20中,不被允許存入快閃記憶體30中。可以根據相關規則,如基於消逝的時間、分配給臨時資料的容量等、或電源關閉、電能損耗,將暫存資料清除。
獨立磁碟冗餘陣列(Redundant Array of Independent Disks;RAID)控制器36將新資料寫入快閃記憶體30的多個通道,還可以通過複製資料來提供冗餘備份和資料恢復。ECC管理器28用於產生ECC,將其加入寫入資料中,並通過將儲存的ECC與重新生成的ECC相比較,來檢測和糾正讀取方面的錯誤。它還負責管理需要額外ECC保護的快閃記憶體頁面。它為這些頁面生成ECC,然後在需要時,管理ECC資料的儲存和檢索。損壞區塊管理器38追蹤損壞區塊在快閃記憶體30中的位置,並且可以進一步識別寫入局部損壞區塊的不良頁面。這樣能夠延長單個區塊的壽命,因為區塊中可能僅有一個頁面中是壞的,而其他的頁面可繼續使用。更複雜的損壞區塊管理可能會降低記憶體驅動器的整體磨損。
磨損測量器24提供了兩種類型的損耗均衡法。一種是從可用的空區塊中動態地選擇最低平均清除次數區塊寫入資料;另一種方法則基於平均清除次數臨界值標準,一旦達到這個臨界值,快閃記憶體資料塊從一個物理區塊(具有低平均清除次數)被移動到快閃記憶體30中的另一個物理區塊(具有高平均清除次數)。對表格管理器32所管理的對照表中的邏輯位址-物理位址的對照進行更新。表格管理器32還追蹤儲存在每個邏輯區塊中資料的類型,這樣一來,暫存檔案、分頁檔、FAT、FDB和用戶資料檔案一旦得到識別和分類也就得到了表格管理器32的追蹤。
部分頁的資料通過頁面組合管理器22組合在一起裝入快閃 記憶體頁面。磁區組合管理器18將部分磁區資料集合在一起。將部分頁和部分磁區集合起來能夠提高工作效率,減少磨損。在被複製到快閃記憶體30之前,部分頁和部分磁區資料可裝在一起並在SSS DRAM緩衝器20中緩衝一段時間。把部分資料集合為整頁數據,可以減少寫入快閃記憶體的次數。
可以對資料進行壓縮和(加密)。壓縮對照管理器26對照壓縮資料塊的位置,對資料進行壓縮或寫入、對讀出的資料進行解壓。加密引擎46對寫入的資料進行加密,對讀出的資料進行解密。
資料區塊清除(TRIM)管理器23處理主機100上的檔案系統或作業系統的TRIM命令。TRIM命令表示主機不再需要某個磁區,可以將其消去或清除。修整後的頁面在「頁面狀態表」被記錄為「已刪除」;後臺垃圾回收時,如果該區塊被確定為清除候選物件,這個頁面便不會被複製到新區塊上,這時才真正執行了TRIM命令。TRIM管理器23執行內部整理自檢,如追蹤塊中哪些磁區和頁面不再需要。垃圾收集器也可用於跟蹤那些即將被清除的區塊。一旦不再需要某個完整的區塊,TRIM管理器23啟動垃圾收集器或其他清除機制清除該區塊上的資料,使該區塊可以被重新使用。
自我監測、分析及報告技術(Self-Monitoring Analysis and Reporting Technology;S.M.A.R.T.)功能39處理來自主機100的S.M.A.R.T.命令或供應商命令,如監視和控制資料糾正、磨損、損壞區塊和其他快閃記憶體管理。主機可以使用S.M.A.R.T.命令的設置對來自SSD設備的一些重要資料如:開機時間、平均清除次數等進行監控。主機可以使用這些資料來診斷和確定SSD的壽命。在SSD報廢之前,主機可以將其更換。在RAID中,主機可以使用S.M.A.R.T.命令來回避更昂貴的RAID 5配置。功能管理器48可以包含很多主機可以打開或關閉的功能,如壓縮、加密和組合等。功能管理器48負責與主機100通信,管理SSS DRAM緩衝器20的 使用,執行其它功能,如在電源發生故障時,從SSS DRAM緩衝器20中優先選擇哪些資料將其寫入到快閃記憶體30,在電源失效時將這些資料複製到快閃記憶體30。功能管理器48檢查檔案系統的格式,以確定通電時群集的大小和FAT1的起始位址。它會檢查使用的快閃記憶體30的頁面大小。如若出現與快閃記憶體頁的大小不對齊的情況,一個偏移量就會被添加進去,使主機群集與快閃記憶體頁邊界對齊。
接著,請同時參閱圖2A、2B及2C,圖2A至圖2C強調了要分開管理暫存檔案,以避免將暫存檔案寫入快閃記憶體。在圖2A中,主機資料被分割成不用備份到快閃記憶體的暫存檔案112。主機資料和命令被寫入到DRAM中的資料登錄緩衝器108。資料劃分管理器109查閱每條主機請求的LBA,並確定哪些主機請求是發給暫存檔案目錄中的資料。暫存檔案112還可能包含主機向記憶體頁面區域的資料發出的請求。發送給非臨時目錄的其他主機請求被劃分為非暫存檔案110。非暫存檔案110由頁面組合管理器22處理,頁面組合管理器22將來自不同主機請求的頁面組合成快閃記憶體區塊。此非暫存檔案110的資料被儲存在資料寫入快取111,快取111位於DRAM的一個非暫存檔案區。當快取111容量將要不足時,資料區塊被驅離並寫入快閃記憶體30。
來自不同主機請求的暫存檔案112被磁區組合管理器18合併到頁面裡。資料塊可能是一個頁面、一個磁區或部分磁區,或各種組合。這種較小的細微性對於暫存檔案特別有用,因為它允許更高的包裝效率,尤其是當較小的檔案數量眾多時。這些暫存檔案儲存在DRAM中的暫存檔案區113,而沒有備份到快閃記憶體30。當DRAM中的暫存檔案區113快滿的時候,該區要麼被擴大,要麼將較舊的暫存檔案刪除或覆蓋。因此避免了將暫存檔案寫入快閃記憶體30,這樣可以減少快閃記憶體的磨損。
圖2B顯示了資料分割的流程。資料登錄緩衝器108中的資料接收主機資料。主機資料的LBA將會與用於暫存檔案儲存的LBA範圍 進行比較,如預留給暫存檔案子目錄,或有.tmp檔或其他一些已知的暫存檔案副檔名文件的LBA範圍。當資料被識別為暫存檔案,即步驟732,資料就會被移動到DRAM中的暫存檔案區,即步驟734。非暫存資料被移動到DRAM中的資料寫入快取中,即步驟736。這是DRAM中一個被備份到快閃記憶體的非暫存檔案區。
圖2C顯示了暫存檔案的資料分類流程。檔案系統分析過程740被執行。步驟742識別了儲存暫存檔案的目錄。檔案系統為識別提供幫助。例如,可以通過使用FDB連同FAT來識別.temp或tmp的檔案副檔名。
過程740可以在背景運行,即步驟744,或當系統處於空閒狀態時運行。在空閒期間,可以搜索FDB,獲取每個暫存目錄的LBA範圍,即步驟746。可以為每個暫存目錄的範圍創建查閱資料表,即步驟748。這個臨時目錄中的暫存檔案的LBA範圍,可以填充查閱資料表的條目。
圖3是ETL的記憶體示意圖,顯示了儲存在SSS DRAM緩衝器20中的各種類型的資料。SSS控制器40的韌體使用ETL來管理通電時、正常運行和電源關閉時DRAM和快閃記憶體之間的互動。SSS DRAM緩衝器20的暫存檔案區140儲存著SSS控制器40通過讀取儲存在FAT/子對照表區158和FDB/子對照表區160的FDB/FAT文件副檔名而識別的暫存檔案。暫存檔案是指副檔名為.tmp、.temp、.tmt、.tof、.trs、.tst等的檔案。系統相關的暫存檔案的副檔名可能包括.mp、.log、.gid、.chk、.old、或.bak。AutoCAD相關的暫存檔案的副檔名可能包含.SV$、.DWL、.AC$。Word相關的暫存檔案的副檔名可能包括.asd。Excel相關的暫存檔案可能包括以.xar為副檔名的檔案。其他應用程式可能會用自己獨特的暫存檔案副檔名。網際網路暫存檔案區142儲存著副檔名為.gif、.jpg、.js、.htm、.png、.css、.php、.tmp、.mp3、.swf、.ico、.txt、.axd、.jsp、和.aspx的文件。暫存檔案區140和網際網路暫存檔案區142都有一個查找 各暫存檔案的表。此表可以通過主機的邏輯位址來索引。
資料提取區144儲存著提取資料和條目表。每次打開電腦,Windows作業系統就對電腦啟動的方式和哪些程式一般處於開放狀態進行跟蹤。Windows把這些資訊以若干小檔的形式保存到預提取資料夾。下一次開啟電腦時,Windows引用這些檔來提高啟動過程的速度。
預提取資料夾是Windows系統資料夾中的一個子資料夾。預提取資料夾有自我維護的功能,沒有必要刪除或清空其內容。
副檔名為.log或.evt的登入檔儲存在登入檔區146中,該區也可能有與儲存在該區的登入檔相關的對照表,登入檔也有可能被認為是一種暫存檔案。
用來在主機上的主記憶體和週邊存放裝置(如硬碟或SSD 102)之間交換資料的分頁檔被儲存和對照在分頁檔和對照表區148。從快閃記憶體30讀出並儲存在SSS DRAM緩衝器20的讀出資料快取被放置在讀取快取區151。讀取快取條目的對照表可被使用,該對照表包括標籤、有效位和指向快閃記憶體30中資料的指標。系統區150儲存著SSS控制器40的作業系統使用的快閃記憶體系統資料。緩衝區152中的資料儲存著正被寫入到SSD 102的原始主機資料(包括LBA)。真正的主機資料後來被轉移到資料寫入快取154,然後再被寫入到快閃記憶體30中。為了減少快閃記憶體寫入/清除的數量,與資料寫入快取154相關的超級寫入快取技術被用來將寫入資料快取到快閃記憶體,用耐用性備用與交換區塊156進一步減少快閃記憶體內寫入或清除的次數。
來自主機100的資料寫入將首先把資料寫入緩衝區152中,經過控制器的處理(如壓縮),再寫入資料寫入快取154,然後再寫入快閃記憶體30。如果出現來自主機100的大量的資料不斷地寫入的情況,將無法持續向快閃記憶體30寫入資料。這些資料將被連續寫入到資料寫入快取154,直到寫滿為止,然後從緩衝區152到資料寫入快取154的流程將 停止。如果緩衝區152的資料也滿了,那麼主機就會接到停止流量的命令。
資料寫入快取154使用一種耐用性寫入快取演算法,將寫入資料儲存到SSS DRAM緩衝器20中,並且在被驅離前不會被寫入到快閃記憶體30中。因此,有相同LBA的多次寫入將覆蓋資料寫入快取154中的資料,並且根據規則(如基於流逝的時間,分配的容量等)或者基於電源關閉或電源故障的異常情況將資料寫入條帶單元中的快閃記憶體30。資料寫入快取154也保存部分頁面寫入資料,直到多個部分頁組合為整頁個頁面。因此,根據規則(如基於流逝的時間,分配的容量等)或電源關閉或電源故障等突發事故,多個部分頁面可以被寫入快閃記憶體30中。
在一個多通道控制器結構中,設備控制器可以將佈置為多個頁面(多個頁面的數量可以與多通道的數量相同)的資料從資料寫入快取154寫入到條帶單元裡的快閃記憶體中,以方便擲出儲存區塊,最好地利用快閃記憶體介面頻寬。每個設備控制器包括C條通道,每條通道連接著F個快閃記憶體晶片,每個晶片的堆疊結構中有D個內核,並且每個內核有P個平面。條帶大小設置為F * D * P頁。條帶深度設置為C * F * D * P頁。設備控制器從資料寫入快取154中選擇資料,把資料寫入所選的快閃記憶體30的條帶中,然後根據相應的物理位址(Physical Block Address;PBA)更新相關的對照表條目。每個通道都只有一個匯流排,所以只有一個內核可被存取。F*D內核相互交錯,共用一條匯流排,實現匯流排的最大利用。條帶單元的大小,可以是C頁或多至C * F * D * P頁。
藉由耐用轉換層增加記憶體驅動器耐用性的方法提高了低指定清除迴圈週期快閃記憶體的耐用性。快閃記憶體介面具有多個通道匯流排,每個通道有多個快閃記憶體晶片;每個晶片有多個內核,每個內核有多個平面。可以同時存取所有通道。
不能在同一時間同時存取同一通道中的所有的內核;一次只能存取同一通道中的一個內核。只有在其他的內核被寫入或讀取的時候 才可以存取一個通道中的另一個內核。交錯寫入或讀取可以提高快閃記憶體存取的性能。資料寫入快取儲存在DRAM緩衝器中,由控制器根據規則加以管理。當資料寫入快取中的無效資料大於條帶單元時,設備控制器會對無效資料進行管理,並通過快閃記憶體介面寫入快閃記憶體。設備控制器管理資料在快閃記憶體的每個通道上的分佈。設備控制器對資料與每個通道中的某個晶片的某個內核的交織進行管理,並管理對照表條目以跟蹤LBA至PBA的對照。
在其它的替代設計中,在多通道控制器結構中,每個通道可以有它自己的資料寫入快取154。將條帶單元同時寫入每個快閃記憶體通道,可以實現快閃記憶體介面速度最大化。
若使用者檔資料的命中率(hit rate)≧n(如2)則可被認定為頻繁存取資料,若命中率<n則可被認定為非頻繁存取資料。他們可能會被分別寫入到兩個資料寫入快取154。進入頻繁存取區的LBA位址相同的多寫入資料將覆蓋DRAM中那些沒有放入快閃記憶體的舊內容,這樣可以減少寫入快閃記憶體30的次數。根據規則,如流逝的時間(如1小時),分配的容量等,或電源關閉或電源故障等突發情況,資料寫入快取中頻繁存取區的快取資料將被儲存在條帶單元中的快閃記憶體30中。根據另一項規則,如基於流逝的時間(如15分鐘)或分配的容量等或電源關閉或電源故障等突發情況,資料寫入快取中非頻繁存取區的快取資料將被儲存到條帶單元中的快閃記憶體30中。
如果出現LBA位址不對齊的情況,LBA位址將被添加一個偏移量,使LBA位址與快閃記憶體30的頁位址對齊,然後再向資料寫入快取154寫入資料,這樣做可以提高後來的快閃記憶體寫入的效率。
耐用性備用與交換區塊156用於垃圾收集功能,在將資料寫入到快閃記憶體之前,該功能對有效資料和逐出寫入快取的資料進行合併。頁面狀態表162包含一個有著頁面狀態條目的表,比如空白頁、使用 過的頁面、垃圾頁面(經過Trim指令處理的頁面)、損壞頁面、需要額外ECC保護的頁面。壓縮LBA表161儲存壓縮使用者資料的對照條目。區塊清除計數表164追蹤快閃記憶體30中的每個物理區塊的清除計數器和區塊狀態。
部分頁面對照表166儲存部分頁面的對照資訊。DRAM可能沒有足夠的空間來放置整個對照表,因此,對照表只有一部分被載入到DRAM。當LBA表條目不在DRAM中,然後DRAM將逐出部分對照表的部分內容,把相關的LBA表載入到DRAM上。部分子磁區組合對照表168為小於一個頁面的資料檔案,用於儲存子磁區對照資訊。部分子磁區組合對照表168的部分對照表只有1組對照表的條目(共有N組對照表)。其他的N-1組對照表則儲存在快閃記憶體中,當部分對照表發生遺漏的時候,它們被送至DRAM緩衝器。
S.M.A.R.T.資料收集器170有資料表以及S.M.A.R.T.功能39(圖1)所使用的其他資訊。主機可以通過S.M.A.R.T.命令或供應商命令向S.M.A.R.T.資料收集器170提出請求。
SSS DRAM緩衝器20中各區域的大小可以根據SSS DRAM緩衝器20的整體大小、快閃記憶體30的頁面大小、區塊大小和磁區大小來確定,以及根據是否使用頁面對照或區塊對照,或者根據估計該區域百分之多少的條目為頁面對照而不是區塊對照來確定。例如,SSS DRAM緩衝器20可能為512百萬位元組(Megabyte;MB)DRAM,其中240 MB分配給暫存檔案區140、160 MB分配給網際網路暫存檔案區142、12 MB分配給資料提取區144、6 MB分配給登入檔區146等。
在多通道控制器結構中,設備控制器可以從快閃記憶體30讀取資料,並通過多通道結構直至各種ETL表(FAT/子對照表區158、FDB/子對照表區160、頁面狀態表162、壓縮LBA表161、區塊清除計數表164、部分頁面對照表166和部分子磁區組合對照表168)。
根據一項規則(如基於流逝的時間或分配的容量等)或電源關閉或電源故障,在一個多通道控制器的結構中,設備控制器可以將各種被佈置為多頁面(多頁面的數量等於多通道的數量)的ETL表(FAT/子對照表區158、FDB/子對照表區160、頁面狀態表162、壓縮LBA表161、區塊清除計數表164、部分頁面對照表166和部分子磁區組合對照表168)寫入條帶單元的快閃記憶體中,以實現快閃記憶體介面頻寬的最好利用。
與如圖3所示的在記憶體的每個區域裡使用一個個單獨對照表的情況不同,可以使用一個或多個統一的對照表。可以使用後面圖6所示的代碼對每個條目中檔的類型作出規定。
接著,請參閱圖4A及圖4B,圖4A-4B是使用耐用性備用與交換區塊的過度寫入示意圖。在圖4A中,主機先前已將0-127的所有頁面寫入一個區塊中。最初,128個頁面全部儲存在SSS DRAM緩衝器20中,後來被複製到快閃記憶體30中的區塊2上。後來,主機覆蓋了頁面10-99,但沒有將頁面0-9和頁面100-127寫入。頁面10-99的新主機資料覆蓋SSS DRAM緩衝器20中的舊頁面數據。因為快閃記憶體中頁面10-99為過時的資料,這些頁面被標誌為無效頁面。
當SSS DRAM緩衝器20中的無效資料要被複製到快閃記憶體30時,來自物理區塊2的頁面0-9被複製到物理區塊55頁面0-9上。同樣,有著新主機資料的無效頁面10-99被從SSS DRAM緩衝器20複製到快閃記憶體30的物理區塊55中的頁面10-99上。來自物理區塊2的頁面100-127被複製到物理區塊55的頁面100-127。這個邏輯區塊在SSS DRAM緩衝器20的儲存空間現在可以用來儲存不同的邏輯區塊,因為舊的塊資料的0-127頁現在全部儲存在所在物理區塊55中。該邏輯區塊的對照表條目作了修改,指向物理區塊55而不是指向物理區塊2。可以將舊物理區塊2全部內容當作垃圾收集,將其排列好準備接受清除、損壞區塊檢測和重新使用這幾步操作。
圖4B是耐用性備用與交換塊156操作的一個例子。SSS DRAM緩衝器20目前沒有任何空間可以分配給主機的邏輯區塊。SSS DRAM緩衝器20需要遵守「有寫入有分配」的規則。當主機寫入部分塊資料,SSS DRAM緩衝器20就分配出一個新的區塊條目,可能來自SSS DRAM緩衝器20中的空區塊條目,或來自SSS DRAM緩衝器20將舊資料拋至快閃記憶體30而騰出的空間。來自主機的10-99頁被儲存到SSS DRAM緩衝器20中這個新分配的塊中的頁面10-99。頁面0-9從快閃記憶體30中的物理區塊2中讀出,頁面100-127也是如此。整個區塊(頁面0-127)便可以從SSS DRAM緩衝器20複製到快閃記憶體30中的新物理區塊55。該邏輯區塊的對照表條目被改為指向物理區塊55,而不是指向區塊2。然後可以將舊物理區塊2全部內容當作垃圾收集,將其排列好準備接受清除、損壞區塊檢測和重新使用。頁面狀態表將顯示快閃記憶體中每個單獨頁面的狀態。由垃圾收集器清除的目標區塊將接受檢查,通過頁面狀態表瞭解它在區塊中的頁面狀態。只有使用過非損壞、非空出的頁面及非剪裁的頁面會被複製到交換區域。
在一個舊檔演算法中,快閃記憶體中有與部分覆蓋有關的備用與交換區塊。例如,資料被寫入到快閃記憶體中的一個區塊中,然後原始資料的一部分內容發生改變。控制器首先將新的更新內容寫入快閃記憶體中的備用區塊。然後舊資料和新資料將被合併到交換塊。在那之後,原始區塊和備用區塊將被清除。一次部分覆蓋會導致兩個區塊被刪除。在一些檔演算法中,需要將資料寫回原來的區塊中。在這種情況下,將有三個區塊被刪除。
在一個多通道控制器結構中,設備控制器可以從快閃記憶體30的一個特定通道將資料讀取到耐用性備用與交換塊156。在備用和交換區塊操作後,有效的資料會被寫入快閃記憶體30的同一個通道。
接著,請參閱圖5,圖5是區塊對照、頁面對照和磁區對照 示意圖。為了實現最大的靈活性、效率和耐磨損性,根據使用者資料的大小,三種類型的對照都要使用。
在區塊對照中,來自主機的一整個邏輯區塊被對照到快閃記憶體30中的一整個物理區塊上。主機位址180是指512個位元組的使用者資料。磁區K是一個用來識別某個頁面中某個磁區的磁區號,例如在一個有著16個磁區的頁面中的一個512位元組的磁區。通道J1標識快閃記憶體30中的一個條帶,如在8個通道中8個條帶(與RAID 0的結構相似)(一個條帶的大小至少為一個頁面)。頁面L是用來標識邏輯區塊中一個頁面的頁號,如在一個128頁的塊中的某一頁。LBA-B是識別邏輯區塊M的塊位址。邏輯區塊對照表由LBA-B來索引,並且將邏輯區塊M對照到通往快閃記憶體的物理位址182中的物理區塊N(物理區塊位址PBA-B)。可以將快閃記憶體通道J2從物理區塊號中刪除。如果是快閃記憶體的兩個平面,最低有效位(Least Sinificant Byte;LSB)通道J1將作為LSB被添加到頁面L。如果使用一個與RAID 1結構類似的結構,一個通道會被用作其餘通道的對等物,且不會在圖中顯示。
在頁面對照中,對照表係由LBA-P從邏輯位址184索引而出,LBA-P是包括邏輯區塊編號M和邏輯頁面編號L的邏輯頁號。對照表中的頁面條目產生一個物理頁編號Y,物理頁編號Y是物理位址186中的物理區塊位址、頁面和PBA-P(Y的大小和M、L一樣,但是值不同)。由於頁面數比區塊數多得多,頁面對照的對照條目的數量也就比區塊對照的對照條目的數量大得多。通道J1識別快閃記憶體30中的一個條帶,如8個通道中8個條帶(與RAID 0的結構相似)。通道J1可以對照到對照表,因此設備控制器可以將頁數據移到任何通道中,而不僅限於特定通道。或者,如果J1始終等於J2,快閃記憶體的J2通道可以從物理區塊號中刪除。如果是快閃記憶體的兩個平面,LSB通道J1被作為LSB添加到頁面L。如果使用一個與RAID 1結構相似的結構,一個通道會被用作其餘通道的等價 物,且不會在圖中顯示。
在磁區對照中,對照表係由區塊、頁面、磁區位址LBA-S從邏輯位址188中索引而出。這是包括邏輯區塊號M、邏輯頁號L和磁區號K的邏輯頁編號。一個磁區的子對照表和頁對照表一起使用,這樣LBA-P和磁區K被對照到物理位址190中的一個物理磁區位址:PBA-S,(Z的大小和M、L、K相同,但是值不同)。由於磁區數量比頁的數量和塊的數量多得多,磁區對照的對照條目的數量也就比塊對照的對照條目的數量大得多。通道J1標識快閃記憶體30中的一個條帶,如8個通道中8個條帶(與RAID 0的結構相似)。通道J1可以對照到對照表,因此設備控制器可以將頁數據移到任何通道中,而不僅限於某個特定通道。或者,如果J1始終等於J2,快閃記憶體的J2通道可以從物理區塊號中刪除。如果是快閃記憶體的兩個平面,LSB通道J1被作為LSB添加到頁面L。如果使用一個與RAID 1結構相似的結構,一個通道會被用作其餘通道的等價物,且不會在圖中顯示。
大多區塊都屬於區塊對照,只有少部分的區塊屬於頁面對照。當一個頁面對照的區塊內有相對較少的頁面屬於磁區對照,SSS DRAM緩衝器20中全部對照表區域的大小要保持在合理的範圍內。當SSS DRAM緩衝器20中對照表區域空間不夠用時,對照表可以保存在快閃記憶體30中,這些對照條目的快取被儲存在SSS DRAM緩衝器20中。
接著,請參閱圖6,圖6為記憶體驅動器中對不同的資料類型的對照條目示意圖。除了為每種類型的資料提供單獨的對照表,例如圖3所示,也可以使用一個統一的對照表將來自主機的邏輯位址對照到SSS DRAM緩衝器20或快閃記憶體30中的物理位址;當磁區為完整磁區條目時,磁區識別符191可用來識別頁面位置內的磁區。
在這個統一的對照表中每個對照條目的前幾位是一個用來對該條目所對照的主機資料進行標識的代碼。本碼位元還表明被對照的資 料的大小,是完整頁(Full Page;FP),還是部分頁(Partial Page;PP)。
在通電時,SSS控制器40載入以前儲存的、且對已知的資料類型進行分配的對照表。格式化之後,只有FAT/FDB條目和表存在。在那之後才能創建新檔和新的子目錄。因為在讀取之前必須先寫入資料,所以所有從主機讀取的資料應該來自某個已知的資料類型。對於寫入操作,只有新的檔資料才需要確定資料類型。來自主機的所有的寫入會存取FDB/FAT。
SSS控制器40檢查FDB/FAT的新條目,以確定LBA的資料類型。FDB中的檔描述包括檔案名和檔副檔名、起始群集的位置、檔大小和創建日期。SSS控制器40利用此資訊來確定資料,將資料歸到幾個資料類型中某一類型下:分頁檔案(Page File;PF):記憶體管理為將檔從主記憶體交換到硬碟而創建的分頁檔。通過分頁檔使用的邏輯位址,可以找到這些分頁檔。主機為所需的虛擬記憶體分配一個可用的LBA範圍。SSS控制器40檢查FDB,以確定分頁檔的LBA範圍。
暫存檔案(TMP):來自主機的暫存檔案。SSS控制器40讀取FDB條目中的檔副檔名,可以找到暫存檔案。FDB條目是在暫存檔案被主機寫入前寫入的。一般,主機首先寫入FAT、然後FDB,然後是暫存檔案,所以FDB中.tmp的副檔名將檔標識為暫存檔案。FDB有起始群集的位置、大小(使用的群集的數量),而FAT有下一個群集位置的資訊(如果該檔大於一個群集)或檔結尾(檔的最後一個群集)。
FAT:來自主機的FAT條目。主機寫入FAT的兩個副本,將FAT1寫入第一個預定義的位址範圍內,將FAT2寫入下一個位址範圍內。例如,將FAT1寫入邏輯位址0-8 KB,而將FAT2寫入邏輯位址8-16 KB。實際的位址範圍取決於SSD的容量(例如:16京位元組)、群集的大小(例如:8KB)。實際的地址範圍決定所需的總FAT表條目,如16MB/8KB=2M。 對於FAT32,每個條目都需要32位元,所以位址範圍為2M×4=8MB。如果每個LBA是512個位元組,那麼它的LBA範圍(8M/512=16K)為「FAT_beg」到「FAT_beg+16K」。
FDB:來自主機的FDB條目。SSS控制器40將檔描述塊條目確定為緊跟FAT通路之後的一個通路。在格式化後,通過FDB可以知道根目錄。每個檔和子目錄的寫入操作會更新FDB。因為已經為FDB標記了LBA範圍,所以SSS韌體知道寫入FDB的資料。韌體進一步檢查寫入到新的子目錄中的資料。為了確定新的FDB資料類型,新的子目錄提供起始集群和大小資訊。FDB條目可能有一個預先定義的位址範圍,這個預先定義的地址範圍可能促進或加快FDB檢測。
資料檔案(DT):使用者資料或應用程式資料的資料檔案。這些都是儲存在快閃記憶體中的正常資料檔案。這些資料檔案可能直接儲存在快閃記憶體中,也可能是先被快取在SSS DRAM緩衝器20中一段時間,然後被擲出緩衝器進入快閃記憶體或在電源被切斷時複製到快閃記憶體中。
來自主機100的命令提供了四種不同的參數:起始LBA位址、磁區計數(Sector Count;SC)、命令(讀取/寫入)和資料(讀取的時候沒有)。要確定每個不同類型的資料,SSS控制器40的韌體需要管理檔案系統,如FAT32。從LBA 0開始,它會驗證檔案系統是否是FAT32,然後它會從寫入SSD的檔案系統中找到FAT、FDB、暫存檔案等的LBA。為了確定新使用的LBA的資料類型,它還依靠SSS控制器40的FDB去積極地查看FDB為更新檔/子目錄中資訊所做的改變。例如,如果一個新的暫存檔案的名字被寫入到FDB,這些資訊將包括暫存檔案的起始群集的LBA。SSS控制器40然後確定作為臨時資料類型的群集相關的LBA。在一個候補設計中,來自主機100的命令被SEED 11修改,修改後將資料類型的第五個參數包括在內,以提高快閃記憶體裝置的耐用性和性能。資料類型可以 是暫存檔案、分頁檔、FAT、FDB、FA資料和NFA資料(每個資料類型可以有多種變化形式:正常、壓縮、加密、壓縮+加密等)。例如,「頁面」(正常)的資料類型為0x00,而「NFA資料」(壓縮+加密)的資料類型為0x13。則第五個參數可以釋放上述特殊的SSS 40的韌體。例如,暫存檔案將資料類型「temp」作為主機寫入命令資料的第五個參數。此外,SEED 11可通過支援主機100的設置來提高快閃記憶體裝置的耐用性。系統設置,如重定向分頁檔、Windows暫存檔案、專用程式臨時目錄、事件日誌、索引、系統還原等,可以複製到主機DRAM 10上。其他設置的更改,例如磁碟重組禁用、減少回收站大小、剪裁啟用、S.M.A.R.T.啟用等,也可以提高快閃記憶體裝置的耐用性。另外,SEED 11向快閃記憶體裝置102發送專用命令。這些專用命令帶有頁號、頁數、頁面命令和頁面資料等參數而不是LBA號、磁區計數、磁區指令和磁區資料。命令可能包括資料類型的暫存檔案、分頁檔、FAT、FDB、FA資料和NFA資料(每個資料類型可以有多種變化形式:正常、壓縮、加密,壓縮+加密等等)的讀取/寫入資訊。
為了減少快閃記憶體30的磨損並增加其耐用性,通常僅允許將DT寫入到快閃記憶體中。PF、TMP、FAT和FDB的條目不寫入快閃記憶體中,而是儲存在SSS DRAM緩衝器20中。當發生斷電/電能損耗或當SSS DRAM緩衝器20沒有足夠的空間來快取該類型的所有資料,這些類型的資料才可能被寫入快閃記憶體。
資料類型的前三位識別如下資料類型:001-分頁檔(PF)、01X-暫存檔案(TMP)、100-FAT條目、101-FDB條目、11X-資料檔案(DT使用者資料)
最後的類型位(第三位或第四位元)把條目標識為完整頁面(FP)的條目或一個部分頁面(PP)的條目。完整頁面的條目包含一個指向資料在DRAM中位置(在SSS DRAM緩衝器20中)的指標(Pointer;PTR),而部分頁的條目包含一個指向子磁區對照表的指標(Sector Pinter; SCTR)。如果最後一個類型位是0,那麼該頁為整頁數據,就沒有必要使用磁區對照。
如果最後的類型位元是1,該頁面被部分對照。統一的對照表中的條目是一個指向該特定頁面的子磁區對照表的指標SCTR。那個子磁區對照表可能有多個條目。每個條目與一個或多個完整的磁區,和/或某個部分磁區對應。如果第一子磁區的位元是0,那麼該子磁區的條目與主機資料的一個完整的磁區對應。分磁區的條目包含一個指向SSS DRAM緩衝器20中的資料頁面的指標,還包含完整磁區的磁區計數SC#,磁區計數SC#是來自被指向的那個頁面開始部分的偏移量。
當第一子磁區的位元為1,子磁區的條目與某個部分磁區對應。該子磁區的條目包含一個指向SSS DRAM緩衝器20中資料頁面開始部分的指標和該頁面內第一個位元組的偏移量A(N)。該偏移量是部分資料磁區的開始,是部分資料磁區的長度LEN(N)。
請參閱圖7,圖7為使用統一對照表和子磁區對照表的分頁檔的完整頁面對照和部分頁面示意圖。前三個類型位001用來識別分頁檔案(PF)的條目。為了減少快閃記憶體的磨損,分頁檔案被儲存在SSS DRAM緩衝器20中,而不是快閃記憶體30中。這些條目用來對照SSS DRAM緩衝器20中的分頁檔和對照表區148(圖3)。這些條目是統一對照表192的一部分;另有一組裝管理器,用以管理將多個部份資料組裝進一個頁面的流程。
顯示的第一個條目的最後一個類型位為0,表示該條目是一個完整頁(FP)。第一個條目包含一個指向SSS DRAM緩衝器20某個位置的指標(PTR)。該分頁檔的滿頁數據就儲存在SSS DRAM緩衝器20的頁面資料區196。主機的資料可以讀到或寫入到SSS DRAM緩衝器20的這個位置,以完成主機請求。
顯示的第二個條目的最後類型位為1,表示這個條目與部分 頁(PP)對應。SSS控制器40檢查傳入的頁面資料,以確定資料屬於完整頁面資料還是部分頁面資料。對於部分資料頁面,SSS控制器也決定每個磁區(0~15)是完整磁區資料還是部分磁區資料,還是沒有資料。第二個條目包含一個指向SSS DRAM緩衝器20中某個位置的指標(Pointer;PTR),該條目的子磁區對照表就在SSS DRAM緩衝器中的統一對照表192處。從主機位址中提取的邏輯磁區用於在子磁區對照表194中選擇一個當前條目。
子磁區對照表194的前兩個條目與完整磁區對應,因為它們的第一子磁區位元為0。這些條目包含一個指向SSS DRAM緩衝器20中某個頁面位置(PF-DRAM-PP)的指標(Second Pointer;SPTR)。磁區資料就儲存在SSS DRAM緩衝器20中。按順序儲存磁區資料,從磁區SC0開始一直到最後磁區SC15。子磁區對照表194中的每個完整磁區的條目也包含磁區計數SC #,它指向指標PF-DRAM-PP所指向的頁面裡的磁區,這些是滿磁區資料。
子磁區對照表194中的最後條目與部分磁區對應,因為它的第一子磁區位元為1。每個部分頁條目和每個子磁區對照表194最多有一個部分磁區。此條目包含一個指向SSS DRAM緩衝器20中一個不同頁面位置(PF-DRAM-PP2)的指標。部分磁區資料組合、儲存在SSS DRAM緩衝器20中的一個頁面裡。
條目還包含起始位元組偏移量A(N),該偏移量指向位置確定的某個頁內的部分磁區資料的起始位元組和長度LEN(N)。部分磁區條目包含LBA(區塊+頁面+磁區),緊隨LBA的是真正的部分磁區資料,由於本實例中LBA和LEN(N)的內部自檢,磁區資料小於480位元組。480位元組到512位元組的部分磁區使用一個全磁區。此方案也適用於暫存檔案等以及FDB。完整頁數據和部分頁的組合資料的單位大小是頁。條帶單元可以包括完整頁數據和組合起來的部分頁數據。當資料寫入快取中的 無效資料大於條帶單元,設備控制器對無效資料進行管理,並通過快閃記憶體介面將其寫入快閃記憶體。
FAT是檔案配置表。主機可以把群集作為每個表條目的基本大小來使用。當群集的大小是4KB,FAT的容量是4096KB,就需要1024個FAT表條目。對於FAT32,一個「0000,0000」的條目表示該條目沒有被使用,一個「FFFF,FF0F」的條目表示一個檔的末尾,一個有效的數字(例如,介於1~1023之間)表示下一個群集是該檔的位置。主機使用FDB找到檔的起始位置,使用FAT跟蹤下一個群集以及接下來的群集(適用於較大的檔)的位置,直到「FFFF,FF0F」條目指示已到達該檔的末尾為止。
FDB儲存檔案名和子目錄名。在一個典型的FAT檔案系統中,FDB開始於FAT2表之後。FDB的起點是根目錄。格式化之後,FDB只佔用FAT2表之後的第一個群集。對應的「FFFF,FF0F」FAT條目是檔的末尾。在寫入一個檔的時候,檔資料被寫入到該群集中,當該群集被寫滿時,就會有一個新的群集來存放該檔的資料。FAT1/2的位置(條目)被從「FFFF,FF0F」(檔末尾)更改到新的群集的位置。如果創建了一個新的子目錄,該子目錄就會獲得一個新的群集位置。FAT表的大小是固定的,FAT表被固定連續的位置上。一旦創建,FDB的位置就固定了,但新創建/擴展的群集則散在任何未使用的位置上。
FDB保存諸如檔案名和副檔名、第一群集的位置、創建或修改日期或時間、大小等檔資訊。FDB經常變更。只有在創建檔和子目錄的時候,和由於檔被放大或添加到目錄所以需要新群集的時候,FAT才發生改變。
請參閱圖8,圖8為統一對照表中的FAT對照示意圖。FAT條目被儲存在一個通常是由作業系統定義的預先確定的位址範圍內。當SSS控制器40檢測到該範圍記憶體在著向某個邏輯位址寫入資料的操作,資料被當作FAT條目204寫到SSS DRAM緩衝器20中的FAT158區。一個指標, DRAM-FAT-BEG,指向FAT條目204的開始部分,而從來自主機的邏輯位址中得到FAT條目204內的頁面偏移量。
OS維護FAT條目的兩個副本,即FAT1和FAT2。OS首先將條目寫入FAT1,然後把相同的條目寫入FAT2。寫入FAT2的條目被寫入到一個邏輯位置,該邏輯位置是首先寫入到FAT1的那個條目的頁面偏移量和FAT1表大小的總和。
沒有將兩個條目表(一個FAT1條目表,另一個為FAT2條目表)保持在SSS DRAM緩衝器20中,而只有單一的FAT表被保持在DRAM。只儲存了FAT1條目。假定FAT2條目與早於它的FAT1條目相匹配,而SSS控制器40可以驗證FAT2與FAT1是否匹配,在二者不匹配時SSS控制器40會發出錯誤信號。或者可以簡單地假設作業系統從未寫入與FAT1不匹配的FAT2。因此,來自主機的FAT1與FAT2讀取和寫入對照到SSS DRAM緩衝器20中FAT條目204中相同的FAT條目。
為了方便FAT1和FAT2存取,FAT子對照表202中保存著一個單一的子對照條目。該條目的頁面偏移量是對FAT1的FAT表開始部分的頁面偏移量,或者FAT2減去FAT1表的大小剩下部分的頁面偏移量。
FAT子對照表202中的每個子對照條目有一個指向快閃記憶體30中的FAT1條目的指標:F-PBA1-P,和一個指向快閃記憶體30中的FAT2條目的第二個指標:F-PBA2-P。為了減少快閃記憶體的磨損,FAT條目可能只會保存在SSS DRAM緩衝器20中,然後在電源關閉/停電的時候複製到快閃記憶體30中。或者,所有修改的FAT條目可以定期複製到快閃記憶體(如每天一次),或如果認為增加快閃記憶體磨損可以接受,可將它們立刻複製到快閃記憶體。
雖然對於FAT1和與之相同的FAT2,只將一個條目保存在DRAM中,但快閃記憶體30中保存了兩個單獨的副本。
FAT子對照表202中的每個子對照條目的前兩位為FAT快 閃記憶體狀態位元。FAT快閃記憶體狀態位元表示FAT1或FAT2是否已被複製到快閃記憶體,或只在SSS DRAM緩衝器20中有效。當FAT的快閃記憶體位是00,DRAM中的FAT條目204已被複製到快閃記憶體中的FAT1表和FAT2表,而所有這三個位置都是有效的。當FAT快閃記憶體位為10,FAT1已被主機寫入DRAM,但主機尚未寫入相同的條目FAT2,新的FAT1尚未複製到快閃記憶體。當FAT的快閃記憶體位是11,FAT1和FAT2都已經被主機寫入DRAM,但FAT1和FAT2都沒有被主機複製到快閃記憶體。快閃記憶體中寫入的FAT條目可能會減少,但快閃記憶體的耐用性提高了。
在一個多通道控制器結構中,設備控制器從快閃記憶體30中讀取FAT表的資料,並經過多通道結構到達ETL FAT表。
根據規則(如基於流逝的時間和分配的容量等),或根據電源關閉或電源故障等特殊情況,在一個多通道控制器結構中,設備控制器從ETL FAT表向條帶單元中的快閃記憶體中寫入FAT表資料,以最好地利用快閃記憶體介面頻寬。這些資料被配置為多個頁面(頁面的數量和多通道的數量相當)。
請參閱圖9A,圖9A為壓縮頁面的對照示意圖。通過將壓縮的資料而非常規的資料儲存在快閃記憶體頁面,也可以提高快閃記憶體的耐用性,因為壓縮減少了資料的大小,降低了在快閃記憶體中的儲存空間要求。壓縮的資料可被快取在SSS DRAM緩衝器20中,並在快取滿了的時候備份到快閃記憶體30中。
在將其儲存在SSS DRAM緩衝器20或快閃記憶體30前,SSS控制器40可以壓縮一些資料。主機以正常的方式寫入幾頁數據,來表示邏輯位址(LBA)、頁號和指示總數據長度的磁區數。例如,主機可能會將資料1寫入LBA 2048,SC=128,這是共8頁,每頁16個磁區的資料。SSS控制器40中的壓縮引擎將128個磁區的資料壓縮成48個磁區的壓縮資料。這些48個磁區的壓縮的資料包括頭文件和儲存在第一壓縮頁的一些 壓縮資料,以及另外兩頁壓縮資料,共3頁壓縮資料。與未壓縮前的8頁相比,頁數顯著減少。
SSS控制器40將這3頁壓縮資料儲存在SSS DRAM緩衝器20或快閃記憶體30中的一個頁面上(儲存為壓縮資料214)。儲存在壓縮LBA表212中的指標MAP_PAGE_PTR指向這個頁面。
SSS控制器40還在DRAM/PBA表的LBA表210中創建了條目,DRAM/PBA表的LBA表210可能是統一對照表(如統一對照表192)的一部分。然而,DRAM/PBA表的LBA表210中的條目是專門為對照到壓縮資料而編碼的。
DRAM/PBA表的LBA表210中的每一個對照項都包括被稱為「壓縮狀態位元」的前兩位。如果第一個壓縮狀態位元為1,表示壓縮存取;如果第一個壓縮狀態位元為0,則表示主機對未壓縮資料的常規存取。例如,第127頁使用PTR1對照到未壓縮的資料。
當在第一個壓縮狀態位元是1,而第二個壓縮狀態位元為0,DRAM/PBA表的LBA表210中的條目中包含未壓縮資料段的總大小(頁面數)。如果第一個壓縮狀態位元是1,而第二個壓縮狀態位元為1,那麼DRAM/PBA表的LBA表210中的條目中包含一個偏移量。偏移量是對壓縮資料段第一個條目的偏移,這個條目包含壓縮資料段的大小。
在主機將資料1寫入LBA 2048,SC=128(共8頁面)的這個例子中,資料1在DRAM/PBA表的LBA表210頁面中有8頁面條目。LBA 2048選擇DRAM/PBA表的LBA表210中的第128頁面。DRAM/PBA表的LBA表210中共有8頁面條目被使用。第一個條目包含總數據大小,而接下來的7個條目則包含指回第一個條目的偏移量。
當主機讀取第133頁面(LBA=2128,SC=16)時,第133頁在DRAM/PBA表的LBA表210中的條目被讀取。儲存在第133頁的條目中的偏移量是5,它指回第128頁的的條目,其中包含3頁的總壓縮資料 的大小。從壓縮LBA表212讀出第128頁的條目,讀出的還包括壓縮LBA表212的接下來的兩個條目,共3頁面條目(壓縮的資料的大小)。每個條目指向SSS DRAM緩衝器20或快閃記憶體30中的壓縮資料頁面。對所有這三個壓縮頁面進行讀出和解壓縮操作,以恢復未壓縮前的8頁面資料區塊。然後從未壓縮資料中提取出主機正在讀取的資料。進行壓縮操作時可以依硬體電路或韌體的控制演算法為標準來進行,例如硬體的電路可以是一標準壓縮電路,標準壓縮電路包含壓縮主機寫入資料、添加頭文件以壓縮資料及更新壓縮對照表的方式。
請參閱圖9,圖9B為DRAM緩衝器中使用者資料的資料流程示意圖。主機寫入資料被寫入到資料登錄緩衝器,後者對資料類型(如分頁檔、暫存檔案、使用者資料、FDB或FAT資料類型)進行識別。如果資料要壓縮或加密,執行壓縮和(或)加密操作。
根據存取頻率,使用者資料被歸類為頻繁存取(Frequently Accessed;FA)或非頻繁存取(Non-Frequently Accessed;NFA)。FA資料被儲存在DRAM緩衝器中的單獨快取中。將FA和NFA放在不同的快取中,可以提高快閃記憶體耐用性。
然後將被隔離的FA資料歸類為完整頁數據或部分頁的資料。一些部分頁面資料和其他部分頁數據組合在一起成為完整磁區資料。為了區分不同的主機存取和LBA,部分磁區資料也組合在一起。NFA資料也歸類為完整頁數據和部分頁數據,其中部分頁數據與其他完整磁區和部分磁區組合在一起。
請參閱圖9C,圖9C是DRAM緩衝器中分頁檔和暫存檔案的資料流程示意圖。主機寫入資料被寫入到資料登錄緩衝器,後者對資料類型(如分頁檔、暫存檔案、使用者資料、FDB或FAT資料類型)進行識別。如果資料要壓縮或加密,執行壓縮和(或)加密操作。
頁面資料和暫存檔案儲存在DRAM的緩衝器中不同的地 方。分配專用的分頁檔緩衝區和暫存檔案緩衝區可以提高快閃記憶體的耐用性。
在壓縮和(或)加密後,隔離的頁面資料被歸類為完整頁數據或部分頁數據。一些部分頁面資料和其他部分頁數據組合在一起成為完整磁區資料。部分磁區資料也可組合在一起成為不同的分頁檔。
暫存檔案在壓縮和(或)加密之後也歸類為完整頁面臨時資料和部分頁面臨時資料,部分頁面數據與暫存檔案的其他完整磁區和部分磁區組合在一起。
請參閱圖10,圖10是根據主機請求對資料類型進行分類及對使用者資料檔進行調度的流程示意圖。主機的請求中包含一個邏輯位址,例如作為統一對照表192的一個索引的LBA,步驟304。來自統一對照表192的一個匹配條目被讀取。所述匹配條目的前幾位是資料類型位,用來表示什麼樣的資料被儲存在該邏輯位址。取決於資料類型位,對不同的過程進行調度。
如果所述匹配條目的資料類型位元為001,即步驟306,該資料用於從主記憶體到週邊存放裝置的交換的頁面欄位,交換由主機上的記憶體管理器執行。這些檔不需要被儲存在快閃記憶體中,因而可以減少快閃記憶體的磨損。調用分頁檔流程308,詳見圖11-12。
如果所述匹配條目的資料類型位元是01,即步驟310;該資料用於不需要被儲存在快閃記憶體的暫存檔案,調用暫存檔案流程312,詳見圖11-12。
當所述匹配條目的資料類型位元100,即步驟314;該資料用於FAT條目。調用FAT流程316,詳見圖13。
步驟315中,當所述匹配條目的資料類型位元為101,該資料用於FDB條目,調用FDB流程318,詳見圖11-12。
當資料類型位不屬於上述任何類型,即調用資料檔案流程 320。資料檔案流程320詳見圖14-15。資料檔案是使用者資料和應用程式資料,這些資料應該先儲存在資料寫入快取154,然後在被趕出資料寫入快取154的情況下被複製到快閃記憶體。
如果資料類型位是000,那麼所述匹配條目尚未分配。這是到該邏輯位址的第一個主機寫入。圖10所示的資料檔案流程320確定主機在顯示什麼類型的資料,並執行合理的流程。
請參閱圖11,圖11為讀取分頁檔、暫存檔案或FDB檔的流程示意圖。每個資料類型可能有單獨的副程式,或者因為讀取過程類似,可以使用組合流程。
因為在讀取資料前,主機總是將資料寫入到記憶體驅動器,而主機寫入過程中條目必定已經被載入到統一對照表192中,因此,應在統一對照表192中找到一個匹配的條目,以服務於所有的主機讀取。
步驟402中,如果所述匹配項的資料類型位是XX10或010,那麼匹配的條目用於完整頁數據(Full Page;FP,參照圖6)。從統一對照表192中該匹配條目讀取的指標PTR用來找到資料,將資料讀到主機上,即步驟404。
步驟402中,如果所述匹配項的資料類型位既不是XX10也不是010,那麼匹配條目用於部分頁數據(PP,參考圖6)。從統一對照表192中該匹配條目讀取的指標PTR用來找到子磁區對照表,即執行步驟406。初始磁區計數被設置為0,即執行步驟410,以便讀取子磁區對照表中的第一個磁區條目。如果當前磁區的子磁區條目的第一位是0,即執行步驟412,那麼一個完整的磁區將被從SSS DRAM緩衝器20中指標SCTR所指向的位置讀出,即執行步驟414。指標SCTR是從子磁區對照表194中當前磁區條目讀取的。當前磁區遞增到指向下一個磁區。如果當前磁區不是最後一個磁區,即執行步驟408,則系統檢查當前磁區的子磁區條目的第一個位元,即執行步驟412,並重複磁區處理。
如果當前磁區的子磁區條目的第一位是1,即執行步驟412,那麼部分磁區被從SSS DRAM緩衝器20中讀出。部分磁區位於一個從子磁區對照表194中當前磁區條目讀出的SCTR指標所指向的頁面上,即執行步驟416。在該頁面中部分磁區的開始部分的位元組偏移量為A(N),而部分磁區的長度為LEN(N),從子磁區對照表194中當前磁區條目讀取所有資料。每頁中只能有一個部分磁區,所以該過程結束。
請參閱圖12A-12C,圖12A-12C為寫入分頁檔、暫存檔案或FDB檔的流程示意圖。每個資料類型可能有單獨的副程式,或者因為寫入過程類似,可以使用組合流程。
在圖12A中,如果主機提供了一份新的完整頁數據,步驟420,但統一對照表192中的匹配條目的資料類型位不是XX10或010,步驟424,舊的資料用於部分頁(PP)。通過將所有的1寫到所有16個條目,步驟426,子磁區對照表194中條目中指標SPTR指向的位置被釋放出來,以供將來使用。因為新的資料與完整的頁面對應,而不再需要子磁區對照表194,所以指標PTR指向的舊子磁區對照表194也被釋放。一個新的指標PTR被寫入到統一對照表192中的匹配條目上,而資料類型位被改變為XX10或010以表示完整頁(FP),步驟428。完整頁的主機資料然後將被寫入到SSS DRAM緩衝器20中那個統一對照表192中匹配條目的指標PTR所指向的位置,即執行步驟422。
步驟424中,當統一對照表192中的匹配條目中的資料類型位為XX10或010,舊資料與完整頁對應,這個過程就可以直接跳到步驟422,完整頁數據覆蓋掉SSS DRAM緩衝器20中的舊資料。
步驟420中,當主機提供了部分頁的新資料,圖12B上的該過程繼續進行。如果統一對照表192中的匹配項的資料類型位不是XX10也不是010,即執行步驟430,舊資料用於部分頁(PP)。子磁區對照表194中條目中的指標SPTR指向的位置被釋放,以備將來使用,步驟432,指標 PTR指向的舊的子磁區對照表也被釋放。
舊的部分磁區資料需要被刪除。SSS控制器40檢查當前項旁邊的組合資料。如果不存在組合資料,SSS控制器40就會放上結束指標的標識,使該頁面可以用於未來的部分資料組合。如果這樣的組合不止一個,通過填充舊的部分資料的間隙,使所有其他組合向上移動,並改變其相應的子對照表的A(N)。
空子磁區對照表194位於SSS DRAM緩衝器20中,即執行步驟436,創建PTR指標,這個指標指向該可用表。這個新的指標PTR被寫入到統一對照表192中的匹配條目中,為了指示部分頁(PP),資料類型位被改為XX11或011,即執行步驟438。
步驟430中,如果統一對照表192中的匹配條目的資料類型位為XX10或010,即舊的資料用於完整頁(FP),則執行步驟434,基於另一個請求,SSS DRAM緩衝器20中的完整的資料頁面被釋放,以備將來使用。空子磁區對照表194位於SSS DRAM緩衝器20中,即執行步驟436,創建PTR指標,這個指標指向該可用表。這個新的指標PTR被寫入到統一對照表192中的匹配條目中,為了指示局部頁(PP),資料類型位被改為XX11或011,即執行步驟438。
在圖12C中,新的部分頁面資料被一個磁區一個磁區地寫入SSS DRAM緩衝器20中,磁區條目被載入到子磁區對照表194中。
如果來自主機的當前磁區是一個完整磁區,即執行步驟324,第1位元是0、有指標SPTR和磁區計數SC的新條目被寫入到子磁區對照表194中,步驟326。完整的主機資料磁區被寫入到SSS DRAM緩衝器20中SPTR和SC標識的位置,步驟390。如果有另一個主機資料磁區,步驟392,當前磁區就會遞增,步驟394,然後重複步驟324以及後面的過程。否則,過程結束。
如果來自主機的當前磁區是一個部分磁區,步驟324,一個 頭文件就會產生並且會和來自主機的部分磁區資料組合在一起形成一個組合頁。該組合頁將部分磁區收集起來,即執行步驟302。指向該組合頁的指標SPTR、該組合頁內的起始位元組偏移量A(N)以及部分磁區資料和頭文件的長度LEN(N)被寫入到子磁區對照表194中一個新的子磁區條目中,步驟328。該過程結束,因為對於每條主機請求,僅可以從主機接收一個部分磁區。頭文件包含主機LBA(區塊+頁面+磁區)的資訊。資料後面添加的尾端指標對頁面的可用性進行指示。
請參閱圖13A-13B,圖13A-13B為通往記憶體驅動器的一個FAT通路示意圖。在圖13中,主機向由SSD原始格式決定的FAT的邏輯位址範圍讀取或寫入資料。當主機寫入資料的時候,即執行步驟440,要遵守圖13B;對於主機讀取資料,圖13A繼續步驟442,在這裡,邏輯位址被拿來與FAT1和FAT2的位址空間的位址範圍進行比較。如果邏輯位址在FAT1空間範圍內(FAT區域的上半部分),那麼頁面偏移量被計算為來自主機的LBA減去FAT1區域的起始位址剩下的部分,即執行步驟444。在步驟446中,FAT條目被從SSS DRAM緩衝器20中的一個位址讀出。這個位址等於SSS DRAM緩衝器20中的FAT的起始位址(可能與邏輯位址空間中的FAT位址不同)加上步驟444計算的頁面偏移量所得的值。此FAT資料被返回給主機以完成讀取。
如果邏輯位址在FAT2空間範圍內(FAT區域的第二部分),那麼頁面偏移量被計算為來自主機的LBA減去FAT2區域的起始位址剩下的部分,步驟448。在步驟446中,FAT條目被從SSS DRAM緩衝器20中的一個位址讀出。這個位址等於SSS DRAM緩衝器20中的FAT的起始位址(可能與邏輯位址空間中的FAT位址不同)加上步驟448計算的頁面偏移量所得的值。此FAT資料被返回給主機以完成讀取。請注意,單個FAT條目被儲存在SSS DRAM緩衝器20中,用於從主機存取FAT1和FAT2。
在圖13B中,主機向FAT寫入資料。當邏輯位址在FAT1 空間範圍內(FAT區域的上半部分),步驟450,那麼頁面偏移量被計算為來自主機的LBA減去FAT1區域的起始位址剩下的部分,即執行步驟452。在步驟454中,來自主機的FAT條目被寫入SSS DRAM緩衝器20中的一個位址。這個位址等於SSS DRAM緩衝器20中的FAT的起始位址加上步驟452計算的頁面偏移量後所得的值。FAT子對照表202中的FAT的快閃記憶體狀態位元被更新為10,表示FAT1已被被主機更新,但FAT2尚未更新,快閃記憶體30中的FAT1資料是舊的,即執行步驟456。使用步驟452算出的頁面偏移量,FAT子對照表202中的子對照條目被存取。
步驟450中,當邏輯位址在FAT2空間範圍內(FAT區域的下半部分),與FAT2對應的主機資料被忽略,即執行步驟453。儲存在SSS DRAM緩衝器20中的單個FAT條目已經在前一次主機存取的時候被寫入。FAT子對照表202中的FAT的快閃記憶體狀態位元被更新為11,表示FAT1和FAT2都已被主機更新,快閃記憶體30中的FAT1資料和FAT2都是舊的,即執行步驟458。使用步驟453算出的頁面偏移量,FAT子對照表202中的子對照條目被存取。
狀態位元可定期或在電源停止供應的時候,將來自SSS DRAM緩衝器20的無效的FAT內容備份到快閃記憶體30中。可能需要檢查FAT子對照表202的兩個狀態位元。
圖14顯示了記憶體驅動器如何處理主機讀取的使用者資料檔案。使用者資料可能包括主機儲存的使用者資料,或使用者在主機上執行的應用程式所儲存的資料,但不包括暫存檔案、分頁檔、FAT和FDB條目等,因為這些資料在調用資料檔案過程320前就已經被圖10所述步驟篩選出來。在資料檔案過程320被調用且主機請求讀取操作時,圖14的過程被調用。在資料檔案過程320被調用且主機請求寫入操作時,圖15的過程被調用。
使用主機請求的邏輯位址在統一對照表192中找到匹配的 條目。讀取所述匹配項的前幾位獲得資料類型位。如果資料類型位是11X1,那麼所述匹配項的舊資料被儲存在快閃記憶體30中,就要從快閃記憶體30讀出資料。當資料類型位為11X0,所述匹配項便為SSS DRAM緩衝器20中儲存的資料,所以就要存取DRAM以獲得主機讀取的資料,此為步驟462。
如果資料類型位元是110,依步驟460進行步驟476,資料被作為完整的頁面儲存,從SSS DRAM緩衝器20中讀取完整的頁面,期間要使用所述匹配項的指標PTR來找到讀出資料的位置。如果主機只對本頁面上的幾個磁區提出請求,從整頁中提取這些磁區並將它們發送給主機。如果已確定步驟462中資料被儲存在快閃記憶體30中,那麼使用指標PTR讀取快閃記憶體30而非SSS DRAM緩衝器20。
如果資料類型位元不是110,資料被儲存在部分頁(PP)中, 依步驟460進行步驟466,使用統一對照表192中匹配條目中讀取的指標PTR來找到子磁區對照表194,對其執行讀取操作。然後為步驟464,當前磁區被初始化到零,或初始化到一些主機請求的其他值。子磁區對照表194中的與當前磁區對應的條目被讀出。依步驟468,如果該條目的第一位為0,那麼條目指向完整磁區。從子磁區對照表194中的當前條目讀取指標SCTR用來找到讀取資料的位置,取決於前面的462步驟的結果,可能在SSS DRAM緩衝器20或快閃記憶體30中。當前磁區是遞增的,步驟472。如果當前磁區不是最後一個磁區,依步驟474該過程迴圈回步驟468。該過程結束於最後一個磁區。
依步驟468,如果與當前磁區條目對應的子磁區對照表194中的條目的第一位是1,那麼條目指向部分磁區。使用從子磁區對照表194中的當前條目讀出的指標SPTR、組合頁中的起始位元組偏移量A(N)、部分磁區資料和頭文件的長度LEN(N),從DRAM或快閃記憶體(取決於前面的步驟462的結果)中的組合頁面讀取部分磁區資料。該部分磁區資料與較早的步驟472獲得的完整磁區資料一起被發送給主機。因為每個主 機請求只允許一個部分磁區,所以讀取過程結束。
請參閱圖15A-15I,圖15A-15I為記憶體驅動器處理主機在頻繁存取區和非頻繁存取區寫入的用戶資料檔案流程示意圖。使用者資料可能包括主機儲存的使用者資料,或使用者在主機上執行的應用程式所儲存的資料,但不包括暫存檔案、分頁檔、FAT和FDB條目等,因為這些資料在資料檔案過程320前就已經被圖10所述步驟篩選出來。在資料檔案過程320被調用且主機請求讀取操作時,圖14的過程被調用。在資料檔案過程320被調用且主機請求寫入操作時,圖15的過程被調用。
在圖15A中,依步驟810,現有邏輯區塊位址的存取計數器增加。該存取計數器用於區分頻繁存取(FA)區和非頻繁存取(NFA)區。這兩個區域分別儲存在DRAM緩衝器20中FA快取區和NFA快取區。
啟用壓縮後,依步驟812進入步驟814,主機資料被傳送給壓縮引擎。帶有新頭文件的壓縮資料通常更小,並有一個計算得出的新的、更小的磁區計數(SC)。如果壓縮未導致資料大小改變,比如因為壓縮頭文件的增加,控制器可選擇不進行壓縮。壓縮條目和對照表,比如圖9A中的LBA表210和壓縮LBA表212,充滿了條目。在步驟816,壓縮資料和新的SC則代替了原先的主機資料和SC。
啟用加密時,依步驟818進入步驟820,主機資料或壓縮資料傳送至加密引擎。加密資料代替了原先的資料,但資料大小保持不變,此為步驟822。
當存取計數器的計數大於閾值N時,依步驟824,存取的目的地為頻繁存取(FA)LBA,圖15B所示流程繼續。當存取計數器的計數小於閾值N時,依步驟824,存取的目的地就是非頻繁存取(NFA)LBA,圖15C所示流程繼續。
在圖表15B中,當主機寫入一整頁新的FA資料,依步驟480,執行圖15B、15D所示流程。來自主機的邏輯位址用來在統一對照表 192中尋找匹配的條目。當匹配條目的資料類型位元為000時,依步驟482,該位址上沒有主機之前寫入的資料,流程跳至圖15D。
當匹配條目中的資料類型位元為111時,步驟484(早期測試排除了其他可能的資料類型位元組合),舊頁面為部分頁(PP)。執行舊磁區清理過程490(圖16),釋放舊的部分頁面資料和舊的子磁區對照表194,然後繼續圖15D所示流程。
當匹配條目的資料類型位為110時,即執行步驟484,舊頁面為完整頁(FP)。當資料類型位元為1101時,即執行步驟486,舊資料儲存在快閃記憶體30中。從統一對照表192中匹配條目讀取的指標PTR所指向的資料被放入垃圾收集器以便以後進行清理和重新使用,步驟461。然後圖15D所示流程繼續。
當資料類型位為1100時,即執行步驟486,舊資料儲存在SSSDRAM緩衝器20中。跳至圖15D,即執行步驟492,新的主機資料被寫入SSS DRAM緩衝器20中,統一對照表192中匹配條目讀取的指標PTR所指向的位置,匹配條目不需變動。
對於所有其它進入圖15D的流量,使用資料類型位1100和指標PTR將統一對照表192中的匹配條目寫入SSS DRAM緩衝器20中一個專門接收主機寫入資料的位置,即執行步驟488。資料類型位元1100表示儲存在DRAM中的完整資料頁的使用者檔。然後主機資料被寫入DRAM中的那個位置,即執行步驟492。當SSS DRAM緩衝器20中資料寫入FA快取已滿或將要滿時,執行步驟650,然後部分資料被拋出快取以騰出額外的空間。拋出快取的完整的FA快取頁或完整的FA快取塊都能被識別,步驟652,比如通過搜索剛使用過的(Least Recently Used;LRU)頁。還會找到快閃記憶體中的空白頁。剛使用過的FA快取頁面被複製到快閃記憶體中的空白頁面,以「擲出」FA完整頁面,即執行步驟654。「擲出」的頁面的指標指向快閃記憶體中的新位置,而不是DRAM中的舊位置,寫入流程結 束。
當主機寫入新的部分資料頁,即執行步驟480(圖15B),圖15F所示流程繼續。
在圖15F中,當匹配條目的資料類型位為000時,即執行步驟502,該位址沒有主機之前寫入的資料。無匹配條目,或匹配條目未分配給該資料類型。不需要清理舊的匹配條目,因此流程跳入步驟514。否則,繼續流程步驟504。
當匹配條目的資料類型位為111時,依步驟504(早期測試排除了其他可能的資料類型位元組合)進入步驟512,舊的頁面為部分頁(Partial page;PP),舊的部分頁磁區資料被發送給垃圾收集器。垃圾收集器用來存放快閃記憶體30中儲存的、被新的主機資料覆蓋的磁區。然後繼續圖15H所示流程。
當匹配條目中的資料類型位元為110時,依步驟504進入步驟506,舊的頁面為完整頁(Full page;FP),當資料類型位元為1101時,舊的資料儲存在快閃記憶體30中。然後依步驟510,從統一對照表192中匹配條目讀取的指標PTR所指向的舊快閃記憶體資料被放入垃圾收集器,稍後進行清理和重新使用。
當資料類型位元為1100時,依步驟506進入步驟508,舊的資料儲存在SSSDRAM緩衝器20中。儲存在SSSDRAM緩衝器20中的,從統一對照表192中匹配條目讀取的指標PTR所指向的舊的整頁數據被釋放,用作其他用途。
步驟514,使用資料類型位1110和指標PTR將統一對照表192中的匹配條目寫入SSS DRAM緩衝器20中一個專門接收主機寫入資料的位置。資料類型位元1110表示儲存在DRAM中的部分資料頁的使用者檔案。
步驟516,當前的磁區計數初始化為磁區0,然後是步驟 518,在SSS DRAM緩衝器20中寫進匹配條目的新指標PTR所指向的位置創建一個新的子磁區對照表194。
在圖15H中,當主機為當前磁區計數發送完整磁區時,依步驟324進入步驟326,使用00、SPTR、SC,寫入由當前磁區計數選擇的子磁區對照表194中的條目。然後是步驟330,類型數位00指儲存在DRAM的FA快取中的完整磁區,而SPTR是一個指向SSS DRAM快取20中FA資料的指標,而SC是當前磁區計數。來自主機的完整磁區被寫入SSS DRAM快取20中FA快取中指標SPTR指向的頁面、SC指向的磁區。
如果當前磁區計數不是頁面上的最後一個磁區,依步驟332進入步驟334,當前磁區計數增加,流程回至步驟324,處理來自主機的下一個磁區。
當主機為當前磁區計數發送部分磁區的時候,依步驟324,一個頭文件便產生,然後與來自主機的部分磁區資料組合在一起形成組合頁。然後是步驟322,該組合頁將部分磁區收集起來,方便FA使用者資料的存取。然後是步驟329,類型位元為10,指向該組合頁的指標SPTR、該組合頁內的起始位元組偏移量A(N)以及部分磁區資料和頭文件的長度LEN(N)被寫入到子磁區對照表194中新的子磁區條目中。類型位元10表示儲存在DRAM的FA快取區中的部分磁區。該過程結束,因為對於每條主機請求,僅可以從主機接收一個部分磁區。
然後是步驟656,當寫入SSS DRAM緩衝器20的FA快取內的資料寫滿或接近寫滿時,然後部分資料被拋出快取以騰出額外的空間。拋出快取的磁區資料頁能被識別,比如通過搜索剛使用過的(LRU)頁。還會找到快閃記憶體中的空白頁。剛使用過的快取頁面被複製到快閃記憶體中的空白頁面,以「擲出」部分頁。「擲出」的頁面的指標指向快閃記憶體中的新位置,而不是DRAM中的舊位置。寫入流程結束。在資料「拋出」發生前,為了減少了快閃記憶體寫入和磨損,有著相同LBA的多個寫 入資料沒有被寫入到快閃記憶體20中。
圖15B、D、F和H中顯示了FA存取的流量,而圖15C、E、G和I顯示了NFA存取的流量。在圖15E中,步驟651檢查了NFA快取而不是圖15D中FA快取,步驟650,在NFA快取上而NFA快取上執行操作。同樣,在圖15I中,部分磁區使用步驟323的NFA快取進行壓縮,而完整磁區則使用步驟331的NFA進行壓縮。其餘的FA流量和NFA流量非常相似。
請參閱圖16,圖16為舊磁區清理過程的流程示意圖。舊磁區清理過程490用於清理子磁區對照表194中舊條目。使用讀取自統一對照表192中匹配條目的指標PTR來查找子磁區對照表194。然後是步驟520,當前磁區計數初始化成0。
依步驟522,如果子磁區對照表194中當前磁區計數指向的當前條目的第一位元是0時,該條目與完整磁區對應,進入步驟524。從當前條目讀取的指標SPTR指向的舊資料被放入垃圾收集器進行清除和重新使用(如果在快閃記憶體中)(當前條目中第二位是1),或釋放出來供另一流程使用(如果在SSS DRAM快取20中)(當前條目中第二位元是0)。
在步驟526,子磁區對照表194中的當前條目被所有的1覆蓋,表明該條目無效。如果當前磁區計數不是頁面中的最後一個磁區,步驟528,當前磁區計數就會增加,步驟530,從步驟522開始重複流程。
依步驟522,如果子磁區對照表194中當前磁區計數指向的當前條目的第一位是1時,該條目與部分磁區對應,進入步驟532。從當前條目讀取的指標SPTR指向的舊資料被放入垃圾收集器進行清除和重新使用(如果在快閃記憶體中)(當前條目中第二位是1),或釋放出來供另一流程使用(如果在SSS DRAM快取20中)(當前條目中第二位元是0),因為部分磁區在組合頁面上,組合頁面上只有一部分被釋放,從長度LEN(N)的位元組A(N)開始被從當前磁區條目中讀取。
然後是步驟526,子磁區對照表194中的當前條目被所有的1覆蓋,表明該條目無效。當到達最後一個磁區時,依步驟528,磁區清理流程490結束,控制返回調用過程。
請參閱圖17A-17E,圖17A-17E是使用完整頁和部分頁的頻繁存取快取和非頻繁存取快取進行使用者資料處理的流程示意圖。在圖17A中,主機資料被識別為使用者資料。來自主機的寫入資料移至資料登錄緩衝區(DIB),此為步驟830。當資料登錄緩衝區寫滿時,此為步驟832,控制器向主機發回請求,要求主機停止發送新寫入的資料,此為步驟834。然後新寫入的資料被從DIB讀取,並壓縮和/或加密(如可能),此為步驟836。使用者資料分為完整頁或部分頁數據,此為步驟838,以及FA或NFA資料,此為步驟840和步驟842。
在圖17B中部分頁FA使用者資料得到處理。該資料儲存在DRAM的FA部分頁(FA-PP)快取中,此為步驟844。當FA-PP快取已滿,此為步驟846,要求主機停止發送更多元據,此為步驟848。部分頁數據和其他主機寫入的部分頁數據組合在一起,此為步驟850。該組合操作可能要求數個週期。組合操作完成時,此為步驟852,圖17E所示流程繼續。組合操作未完成時,此為步驟852,就會收到來自主機的新寫入資料,此為步驟854,該新資料移至資料登錄緩衝區,此為步驟858。如果資料登錄緩衝區已滿,此為步驟852,控制器向主機發回請求,要求主機停止發送新的寫入資料,步驟860。流程繼續直至組合完成,此為步驟852。
在圖17C中部分頁NFA使用者資料得到處理。NFA資料儲存在DRAM的NFA部分頁(NFA-PP)快取中,此為步驟864中。當NFA-PP快取已滿,步驟866,要求主機停止發送更多元據,步驟868。部分頁數據和其他主機寫入的部分頁數據組合在一起,此為步驟870。該組合操作可能要求數個週期。組合操作完成時,此為步驟872,圖17E所示流程繼續。組合操作未完成時,此為步驟872,就會收到來自主機的新寫入資料,此為步 驟874,該新資料移至資料登錄緩衝區,此為步驟876。如果資料登錄緩衝區已滿,步驟878控制器將向主機發回請求,要求主機停止發送新的寫入資料,此為步驟880。流程繼續直至組合完成,此為步驟872。
在圖17D中,完整頁FA使用者資料儲存在DRAM的FA完整頁(FA-FP)快取中,此為步驟882。當FA-FP快取已滿,此為步驟886,那麼FA-FP快取中的LRU頁面就會被「拋入」NFA-FP快取中,此為步驟888。這可能會造成NFA-FP快取被存滿,因此,需要檢查NFA-FP有無被存滿,此為步驟890。
完整頁NFA使用資料儲存在DRAM的NFA完整頁(NFA-FP)快取中,此為步驟884。當NFA完整頁快取存滿時,此為步驟890,那麼NFA-FP中的LRU頁面被「拋入」快閃記憶體中,步驟892。
在圖17E中,當資料登錄緩衝區(DIB)存滿時,步驟894,如果新寫入資料被從資料登錄緩衝區中讀取,並被壓縮/或加密(如可能),流程跳回至圖17A,此為步驟836。如果資料登錄緩衝區未存滿,此為步驟894,允許主機發送新寫入資料,此為步驟896。當收到來自主機的新寫入資料,且這些資料被載入到資料登錄快取區時,此為步驟898,如果新寫入資料被從資料登錄緩衝區中讀取,並被壓縮/或加密(如可能),流程跳回至圖17A,此為步驟836。
當FA-PP快取有新資料時,此為步驟902,如果新寫入資料與其他部分頁FA資料組合在一起,流程跳回圖17B,步驟850。當NFA-PP快取有新資料時,此為步驟904,如果新寫入資料與其他部分頁NFA資料組合一起進行,流程跳回圖17C,此為步驟870。
請參閱圖18A-18B,圖18A-18B為加密頁面和壓縮頁面的處理流程示意圖。在圖18A中,當主機向記憶體驅動器寫入資料,依步驟336進入步驟338,當壓縮啟用時,主機資料被發送至壓縮引擎,此為步驟340。在步驟812(見圖15A)啟用壓縮後,主機資料被傳送給壓縮引擎, 此為步驟814。帶有新頭文件的壓縮資料通常更小,並有步驟342計算得出的新的、更小的磁區計數(SC)。壓縮條目和對照表,比如圖9A中的LBA表210和壓縮LBA表212,充滿了條目。壓縮資料代替了原先的主機資料。
加密時,為步驟344,主機資料或壓縮資料被發送至加密引擎,此為步驟346。加密資料取代了舊資料,但大小不變,此為步驟348。然後可繼續高級流程。
圖18B顯示的是主機讀取。該資料位置啟用加密後,此為步驟360,從快閃記憶體30或SSSDRAM緩衝器20讀取的資料被發送至解密引擎,此為步驟350。解密資料取代了加密資料,此為步驟352。該資料位置啟用壓縮後,步此為驟354,讀取的資料或解密的資料被發送至解壓縮引擎,此為步驟356。查閱壓縮條目和對照表,比如圖9A中的LBA表210和壓縮LBA表212,以便確定壓縮資料段的起點以及整體大小。從壓縮資料段提取主機要求的實際磁區,此為步驟358,這些資料然後就回到了主機。
資料壓縮可以減小資料大小。對於不同類型的資料,比如視訊檔、音訊等,可使用許多不同的壓縮技術。每種不同類型的資料需要特定的資料壓縮演算法來實現最大的大小縮減量。控制器內的適配壓縮演算法將選擇可獲得最佳結果的演算法。加到壓縮資料上的頭文件包括壓縮引擎所用的演算法。
另一種壓縮技術減少了寫入快閃記憶體的數量。快閃記憶體控制器尋求資料集的內容。如果有類似的,控制器不會將全部內容寫入快閃記憶體,而是將指標指向的現有壓縮資料集以及當前資料集和現有資料集的差額(如果兩者之間有變數增量)。如果發生重複,那麼快閃記憶體寫入量可減少更多;例如,當資料集具有相等資料集時,使用已壓縮對照表,指向相同的已壓縮資料集;當資料集具有近似資料集時,使用已壓縮對照表,指向相同的已壓縮資料集,並使用指標指向增量資料;當資料集 沒有相似資料集時,將已壓縮對照表移至動態隨機儲存記憶體緩衝器,並更改已壓縮對照表中的指標;當資料的大小在壓縮後未減小時,保留原始的資料。
可以包括一個從快閃記憶體中追蹤塊讀取錯誤的流程。這個流程對於收集S.M.A.R.T.自我監測、分析和報告技術可能有用。S.M.A.R.T.是一個標準集,可通過收集SSD的其他重要資料,然後使用供應商命令分析資料進行調試、統計等。
可收集資料可能包括:動力迴圈計數、異常動力迴圈計數、通電時損壞區塊計數、損壞區塊累積計數、通電時含壞頁計數的塊、含壞頁計數的累積塊、通電時含損壞頁面計數的去塊、累積錯誤頁面計數、通電時需要額外ECC保護的頁面計數、累積的額外ECC保護的頁面計數、通電時ECC讀取錯誤計數、累積的ECC重要錯誤計數、通電時主機LBA讀取計數、累積的主機LBA寫入計數、通電時快閃記憶體頁面讀取計數、累積頁面讀取計數、通電時快閃記憶體頁面寫入計數、累積快閃記憶體頁面寫入計數、通電時最小區塊清除計數、通電時最大區塊清除計數、通電時總開機時間、累積開機時間。
有用的SSD健康資訊可從可收集資訊中匯出。比如,比較主機LBA寫入計數和快閃記憶體頁寫入計數,可給出寫入放大指示。快閃記憶體頁寫入計數、總開機時間、動力迴圈計數和異常動力迴圈計數可給出SSD 102的壽命狀態。供應商可根據客戶購買年數(比如3年)或記憶體驅動器的總主機寫入數量提供實際保固。附加提供的資訊可用於更好的保修政策,而非僅針對數年的購買使用。保固以記憶體驅動器的總主機寫入數量為基礎。用於遞增快閃記憶體裝置容量的快閃記憶體晶片的額定寫入或清除持續的次數定義為記憶體驅動器的總主機寫入數量。可根據所用的快閃記憶體晶片的額定寫入或清除持續的次數以及計算每個獨立塊的實際清除計數來推導SSD的剩餘壽命。
SSD的已用或剩餘壽命由下列因素決定:1、平均寫入或清除計數高於額定塊寫入或清除計數;2、主機總數據寫入計數高於快閃記憶體裝置的總數據寫入;3、寫入放大(Write Amplification;WA);4、備用區塊達最大容量比。為獲得所有必要資訊,快閃記憶體裝置控制器需要管理一些S.M.A.R.T.功能。
對於第一個因素,區塊清除計數表164維護了寫入或清除計數器和每個區塊的狀態。把所有非損壞區塊相加,然後除以非損壞區塊的數量,就可以得到平均計數。還需要關於快閃記憶體類型的額定寫入/清除數量。比如,當平均寫入清除計數為1000,MLC的額定寫入或清除計數為5000時,那麼SSD的已用壽命為20%,剩餘壽命為80%。
對於第二個因素,快閃記憶體裝置控制器需管理來自主機的總數據寫入計數累積壽命和寫入快閃記憶體裝置的總數據(兩者均在磁區單元中)。比如,當累積得總數據寫入計數為100,000,快閃記憶體裝置的總數據寫入為500,000時,那麼SSD的已用壽命為20%,剩餘壽命為80%。
對於第三個因素,寫入放大(WA)可通過來自主機的總數據寫入的累積壽命(資料在磁區單元內)、快閃記憶體型相關的每個頁面的一些磁區和累積快閃記憶體頁面寫入計數(資料在頁面單元內)推導。和第二個因素相結合,可以獲得快閃記憶體裝置更準確的壽命狀態。比如,當累積總數據寫入計數為100,000(磁區),16磁區/頁,而累積快閃記憶體頁面寫入計數為3,000(頁),那麼寫入放大可計算為3000 *16/100,000=0.48。寫入放大小於1意味著整體快閃記憶體裝置演算法提高了寫入效率和SSD快閃記憶體裝置的使用壽命。可以表達為累積總數據寫入計數乘以寫入放大,或者快閃記憶體裝置的總數據寫入除以寫入放大。如果寫入放大與第二個因素中的例子相結合,SSD的已用壽命為9.6%,剩餘壽命為90.4%。
對於第四個因素,快閃記憶體裝置需追蹤日益遞增的損壞區塊數量。在剛製造出來的時候,快閃記憶體裝置可能有執行90%快閃記 憶體的容量。快閃記憶體裝置系統將為運行代碼安排出固定的部分。某個固定部分用於中繼資料表S.M.A.R.T.功能資料收集。某個固定部分用於已經存在的製造性損壞區塊。剩餘區塊作為備用區塊。將用於融合快閃記憶體中有效資料和新資料的耐用性備用與交換塊區被寫回快閃記憶體中,以便使用較少的備用區塊。遞增了超過規定的大小。損壞區塊隨著時間的推移而遞增。有用的備用區塊數量減少。當備用區塊數量為0時,會因寫入新資料的空白塊不夠和更頻繁的垃圾收集活動而影響性能。如果備用區塊的數量減至零,理論上來說,可用空間比所聲稱的容量要小,快閃記憶體裝置即可宣告無用。如果快閃記憶體裝置並未完全使用,快閃記憶體裝置控制器可通過降低在主開機記錄(Master Boot Rcord;MBR)的16位元組分割記錄中一個分區的磁區總數量來減小容量,而不是宣告快閃記憶體裝置無用。如果有超過新縮減容量的LBA存在,快閃記憶體裝置控制器將檢查FAT和FDB,然後修改新容量限制範圍內新LBA位址的所有相關FAT、FDB和LBA資料。
如果SSD已用壽命或剩餘壽命更為複雜,可將上述所有四個因素相結合。
快閃記憶體裝置的總數據寫入取決於裝置容量(P,比如執行總記憶體的90%)和快閃記憶體類型。總記憶體以所用晶片的數量(N)和晶片大小(快閃記憶體內的塊的數量(J)和每個塊內百萬位元組的大小(K))為基礎。快閃記憶體類型決定了每個快閃記憶體塊可支援的程式設計、清除週期(H,MLC為5000)的數量。快閃記憶體裝置的總數據寫入可表達為N * J * K * H * P。比如,裝置有4個MLC晶片,每個晶片有8,192個塊,每個塊有2百萬位元組,那麼裝置的容量大小為90%記憶體。快閃記憶體裝置的總數據寫入為4 * 8,192 * 2 M * 5,000* 90%=294,912,000百萬位元組(或576,000磁區寫入)。
來自快閃記憶體裝置的預期總寫入取決於裝置的容量(所 用的快閃記憶體晶片數量(N),快閃記憶體中塊數量(J)和一個塊中百萬位元組數量(K)),和快閃記憶體類型(比如5000次的程式設計/清除週期(H)的MLC)。快閃記憶體按小時計算的總壽命預計取決於用戶使用量,比如每天寫入快閃記憶體的百萬位元組數量(G,公式包含的寫入放大)。因此工作時數預計為N * J* K * H * 24/G。比如,含多層單元(MLC)(H=5,000)的64GB快閃記憶體裝置(N=4,J=8,192,K=2)在工作環境中每天寫入8,000百萬位元組(G=8,000),結果得到1,069,400小時(44,558天或122年)的預期壽命。事實上,已用的SSD壽命百分比可通過損壞區塊數量與總區塊數量的比例、平均塊寫入、清除計數與規定的快閃記憶體寫入、清除計數的比例等計算出來。該類資訊提醒使用者採取必要措施避免故障。
執行的資料收集的功能可幫助用戶和韌體工程師評估超耐久性SSD的韌體運行良好程度。通過比較裝置的寫入數量和快閃記憶體的寫入數量,可實現真正的寫入放大。通過比較每個塊寫入/清除計數,最小、最大、平均計數可顯示耗損平衡演算法的良好程度(動態耗損平衡和靜態耗損平衡)。
平均故障間隔(Mean Time Between Failure;MTBF)值預測是產品開發的重要元素。運行期總和除以檢測到故障的數量即可獲得平均故障間隔。每個運行期由計畫外的停機時間減去維修後所需的工作時間獲得。本應用涵蓋可延長運行週期的所有工作,比如壓縮、資料寫入快取、ECC、損壞頁面管理、耐力備用(或交換)、各種表格等,可導致MTBF值增加。
一些區塊在使用第一級ECC時可能已經存在讀取錯誤。使用更多ECC位元的更強大的ECC可用於這些區塊。
當使用更強大的二級ECC無法糾正產生的讀取錯誤時,就會遞增一個重大讀取錯誤計數器。這些ECC錯誤計數器可被區塊管理程式 使用,決定何時把區塊中每頁面所用ECC位的數量增加到二級ECC,或何時將區塊標記為損壞區塊並移走物理區塊留待後用。
S.M.A.R.T.資料收集器170可能需要一或兩頁面的記憶體空間。控制器使用超出主機LBA範圍的LBA頁面位址來對照頁面用途。
請參閱圖19A-19D,圖19A-19D為不良頁面和損壞區塊的檢測和處理流程示意圖。在圖19A中,一旦快閃記憶體30中的某個區塊被清除,該物理區塊的清除計數器被遞增,區塊的狀態被改為空塊(000)或有損壞頁面的空區塊(100),取決於之前區塊的狀態和當前頁面的狀態,此為步驟554。區塊清除計數表164(圖3)儲存在SSS DRAM緩衝器20中,如果DRAM的空間不足,就會被備份到快閃記憶體30中。區塊清除計數表164包括每個物理區塊的清除計數器和該區塊的狀態。區塊狀態可以是一個三位元值,000表示空白的好區塊,011和111表示損壞區塊,100表示既包含損壞頁面也包含好頁面的部分損壞區塊。
區塊清除計數表164也可包含在某個塊中發現壞頁的頁面狀態表。頁面狀態的000值表示好頁面,001表示使用100位第二層ECC而不是25位元的第一層ECC的受保護頁面,010表示已用頁面,110表示頁面含有垃圾或剪裁資料,11X表示損壞頁面。
清除區塊後,檢查該區塊中每個頁面的狀態。讀取該物理區塊的頁面狀態表,此為步驟556,當前頁面初始化為頁面0。如果當前頁面狀態為11X時,在步驟562當前頁面被標記為損壞頁面,本頁面不需要進一步的處理。如果當前頁面不超過區塊中最後一個頁面時,依步驟560進入步驟558,當前頁面增至區塊中的下一頁,並且下一個當前頁面重複步驟562之流程。
在圖19B中,物理區塊中所有頁面均經過處理。區塊中所有損壞頁面的數量已確定,此為步驟564。當區塊中壞頁面的計數超過限量T3時,依步驟566進入步驟568,宣佈該區塊為損壞區塊,該物理區塊在 區塊清除計數表164中的狀態變為011,並不再使用該物理區塊,減少部分損壞區塊計數器(BAD_BP_CNT)並遞增損壞區塊計數器,步驟570。
在圖19C中,當前頁面並未事先標記為損壞頁面,此為步驟562(圖19A)。清除操作將頁面中所有位元清除至清除值,比如1。讀取當前頁的位元,看看是否已經清除所有位元。獲得未清除狀態頁面中的位元的數量計數,比如0位元,此為步驟574。這些是錯誤位元,但是,ECC可以糾正這些錯誤,如果位元錯誤的數量很小,那麼該頁面仍然可以使用。
當未清除的位元數目少於第一閾值T1(表示太多錯誤位元,即使使用額外軟體ECC保護,仍然增加了使用該頁面的風險),依步驟572進入步驟576,並且當前頁的狀態為頁面需要保護(XX1)時,那麼該頁已經使用二級ECC標記為需要保護。頁面狀態變成需保護的空白頁面(001),此為步驟582,回到圖19A處理下一個當前頁面。
當未清除的位元數目少於第一閾值T1,依步驟572進入步驟576,而且當前頁面的狀態不是需要保護(XX1)的頁面時,那麼頁面未經二級ECC保護。當未清除位元數目大於第二閾值T2(表示可能導致以後出現重大錯誤並需要額外軟體ECC說明來糾正錯誤的錯誤位元位準)時,為步驟578,二級ECC頁面計數器遞增,為步驟584,頁面狀態變成001,為步驟582,並且如果主機資料儲存在該物理頁時,二級ECC將在以後使用,回到圖19A處理下一個當前頁面。
當頁面未經二級ECC保護,依步驟576進入步驟578,且未清除位元數目不大於第二閾值T2時,那麼頁面狀態為良好。一級ECC足以糾正該當前頁面中的預期錯誤。如果未標記為良好頁面,頁面狀態就變為000,此為步驟580,回到圖19A處理下一個當前頁面。
在圖19D中,當前頁面的未清除位元多於第一閾值T1,此為步驟572(圖19C)。超過閾值T1表示頁面的未清除位元比二級ECC可以糾正的位元要多;頁面為損壞頁面,無法安全使用。
當物理區塊狀態為區塊中的損壞頁面(1xx)時,依步驟586,該塊在區塊清除計數表164中已被標記為損壞頁面區塊。該區塊中有其他損壞頁面,不需要改變區塊的狀態。但是,通過將頁面在頁面狀態表中的狀態改為110,可將當前頁面標記為損壞頁面,此為步驟592。遞增壞頁面計數器,此為步驟594,然後返回圖19A處理下一個當前頁面。
當物理區塊狀態不是1xx時,步驟586,區塊在區塊清除計數表164中未標記為部分損壞區塊,該區塊中無其他損壞頁面。區塊在區塊清除計數表164中的狀態被改為含損壞頁面的空白區塊(100),此為步驟588。遞增部分損壞區塊計數器(BAD_BP_CNT),此為步驟590。而且,將頁面狀態表中的頁面狀態改成110,就將當前頁面標記為壞頁面,此為步驟592。損壞頁面計數器遞增,此為步驟594,然後返回圖19A處理下一個當前頁。
SSD可包含許多快閃記憶體晶片(比如16個快閃記憶體晶片)。可能會遇到一些特殊情況,比如當快閃記憶體晶片的一面或整個晶片不良。如果容量超量,SSD的快閃記憶體容量可吸收一面或整個快閃記憶體晶片的容量損失。可以使用裝置控制器的特殊演算法避免損失,比如恢復資料、調整快閃記憶體裝置的條帶單元大小,以免有瑕疵面或晶片。可以使用空閒晶片更換有故障的晶片,實現超容量。
請參閱圖20A-20C,圖20A-20C為使對照表和其他DRAM區域進行初始化的上電流程示意圖。在圖20A中,在SSD上連接電源時,從快閃記憶體讀取電源關閉指標,此步驟660,該電源關閉指標設置於最後一次電源中斷期間。當電源關閉指標正常時,依步驟662進入步驟664,電力迴圈計數(Power cycle count;PCC)遞增。否則為步驟668,異常電力迴圈計數(Abnormal PCC;AB_PCC)遞增。
此處涉及兩種可能的方案。方案A更新電源中斷時的快閃記憶體,而方案B在電源中斷時將DRAM的影像複製至快閃記憶體。當使 用方案A,依步驟670進入步驟676,檢測到異常斷電時,將各種表格,比如頁面狀態表、壓縮LBA表、區塊清除計數表、頁面對照和子磁區對照表以及分類表,從DRAM緩衝器20中複製至快閃記憶體30中。將儲存在快閃記憶體中的FAT2表複製至DRAM緩衝器20的FAT區內,此為步驟678,並且在DRAM中創建FAT子磁區對照表。
當檢測到正常斷電時,依步驟662,將不同表格,比如頁面狀態表、壓縮LAB表、區塊清除計數表、頁面對照和子磁區對照表以及分類表,從DRAM緩衝器20中複製至快閃記憶體30中,此為步驟672。但是,儲存的FAT1表從快閃記憶體複製至DRAM緩衝器20的FAT區內,此為步驟674,而且在DRAM中創建FAT子磁區對照表。因此,當正常斷電選擇了FAT1,異常斷電就要選擇FAT2,因為主機在寫入FAT2之前先寫入FAT1,而且主機在異常斷電期時可能沒有時間寫入FAT2。
在圖20B中,FDB條目從快閃記憶體中複製至DRAM,而且FDB子磁區對照表在DRAM中創建起來,此為步驟680。使用供應商命令從主機中獲得分頁檔的LBA範圍,此為步驟682。DRAM緩衝器20的分頁檔區創建,此為步驟684,分頁檔的對照表和子對照表也被創建。
在DRAM緩衝器內創建暫存檔案區,此為步驟686,並創建暫存檔案的對照和子對照表。因為電源關閉時暫存檔案被清除而非複製至快閃記憶體,所以通電時並不將暫存檔案從快閃記憶體複製至DRAM。
DRAM讀取快取和DRAM寫入快取在DRAM緩衝器20中設置,此為步驟688,也可在相關對照表中進行設置。當用戶或韌體將方案變成A或B,方案指標位元也改變,此為步驟689。
與快閃記憶體相比,DRAM緩衝器中的讀取快取和寫入快取比較小。有很多方法管理讀取快取的使用。一種用法取決於操作階段,比如接通電源初始化,從快閃記憶體中預載(由用戶固定)一部分代碼,以便加速初始化並在之後清除。另一種用法取決於用戶應用並且會強制分 配一部分讀取緩衝區供該應用使用,並且會在退出應用後清除。該申請與時間有關,比如午夜備份並在早晨登入的事件。一種演算法可用於執行對特殊申請的讀取緩衝器流量的監督;這可以排除大型應用或檔案非必要佔有大量讀取快取區域的問題;只有其中一小部分可以留在讀取緩衝器區。這可更加有效地使用讀取快取。而另一個用法是使用演算法監督並分析最近或更經常使用的、留在讀取快取中的讀取資料。如果讀取快取的空間不足,那些不是最近使用或不太經常使用的將會被覆蓋。
在多通道控制器結構中,如果當前存取區不在快取區,裝置控制器會從快閃記憶體30讀取資料並通過多通道結構到達讀取快取和對照表151。資料可以是原始的、壓縮的、加密的、分類的或上述類型的綜合體。控制器根據各對照表中記錄的讀數從讀取快取中取回原始資料,然後將資料送回主機100。
在圖20C中,對於使用方案B的異常斷電,將在斷電之前保存的DRAM對照從快閃記憶體複製至DRAM緩衝器20中,此為步驟690。DRAM對照包括動態隨機動態儲存裝置器緩衝器20中的很多表格和緩衝器。處理保留在資料登錄緩衝器中待定的主機命令,此為步驟692。將DRAM中資料寫入緩衝器或耐用性備用與交換區塊的無效線更新寫入快閃記憶體中,此為步驟694。DRAM對照中FAT或FDB的任何更新均複製至快閃記憶體的FAT1、FAT2或FDB區內,此為步驟696。也將頁面狀態表、壓縮LBA表、區塊清除計數表、頁面對照表或子磁區或分類表的更新寫入快閃記憶體,此為步驟698。清除快閃記憶體中舊的DRAM對照,在旁邊為下一個DRAM對照在快閃記憶體中創建一個新的區域,以防異常斷電,此為步驟699。
請參閱圖21,圖21是斷電流程的作業圖。當電源正常關閉時,依步驟702進入步驟710,那麼電源關閉指標設成正常。使用電池或其他備份電源,處理資料登錄緩衝器中待定的所有主機命令,此為步驟712。
正常關閉電源是從主機收到的命令。電壓顯示器或比較器可檢測到電壓突然下降並觸發SSD控制器中斷。中斷程式那麼可以設置斷電流程。當電源異常中斷時,依步驟702進入步驟704,將電源關閉指標設為異常。當使用方案B時,依步驟706進入步驟708,將DRAM緩衝器20的內容複製至快閃記憶體的空白區內。DRAM緩衝器20的所有內容或僅限所選區域的內容可以複製。DRAM區域可以按優先順序或連續複製。
不同於正常斷電,方案A將放棄緩衝區152中的資料。當使用方案A時,或者正常斷電已經完成主機命令的處理時,DRAM的資料寫入緩衝器或耐用性備用與交換塊的無效線更新寫入快閃記憶體中,此為步驟714。將DRAM對照中的FAT或FDB的任何更新複製至快閃記憶體的FAT1、FAT2或FDB區中,此為步驟716。也將頁面狀態表、壓縮LAB表、區塊清除計數表、頁面對照表、子磁區或分類表的更新寫入快閃記憶體,此為步驟718。
多層斷電保護防護可以確保資料受到保護。主機的備用電源41在主電源發生故障時為整個系統提供電源。這給了SSD 102充足的時間將DRAM緩衝器20內的資料備份至快閃記憶體30中。如果SSD 102與主機電源中斷,備用電源42具有電容或超級電容的附加容量以確保即使其中一些無法供電,仍然有充足的電量將DRAM緩衝器20內的資料備份至快閃記憶體30中。
為防止系統重啟,裝置會依相同的順序執行直至斷電,然後接通電源。當退出電腦使用者帳戶關閉時,電腦仍保存便捷通道,以便用戶下次登入。退出時,將無效資料和中繼資訊表更新至快閃記憶體30內,跟關閉電源時相同。
對於帶電池的可攜帶裝置,比如智慧手機、平板電腦、筆記型電腦等,裝置將檢測到電池電量不足,進而關閉裝置。在關閉前,裝置控制器將關閉週邊裝置,比如SSD 102。在該情況下,電源來自可攜帶裝 置的電池。
另一個確保DRAM ETL有關資料的方法是將其複製至MLC。電源關閉時,ETL資料的有效複製可保留在MLC。接通電源時,ETL的資料可從多層單元載入回DRAM中。可記錄少量差異,修改複製方法。該差異將減少複製資料的數量,因此減少MLC的寫入。
對於高級ECC保護系統,如下列演算法。第一層保護是使用每頁面的多餘位元組來儲存生成的保護資料的內置ECC保護電路(比如24位元ECC)。如果第一層保護故障位元達到預定位準(比如12位),可使用第二層軟體ECC生成器,生成軟體ECC(比如50位元),進一步加強保護。如果第一層ECC未能糾正資料,那麼使用第二層軟體ECC儲存正確資料。第二層軟體ECC生成的保護資料和檢測表將根據一項規則(比如按照消耗的時間、分配的容量等)或當電源關閉或電源故障的情況儲存在DRAM緩衝器20內,並複製至快閃記憶體30中。
另一種方法是使用低密度同位碼,低密度同位碼為一種線性的錯誤糾正碼。不同於第一層ECC保護,該方法可增加額外偵錯能力。
可以通過對所有條帶資料進行RAID 5之類的同位或對通過為需要特殊保護的一條塊生成同位數據來執行第三層ECC。第三層條帶同位ECC生成的保護資料和檢測表將根據一項規則(比如按照消耗的時間、分配的容量等)或當電源關閉或電源故障時儲存在DRAM緩衝器20內,並複製至快閃記憶體30中。
如果第二層軟體ECC未能保護資料,第三層條帶同位ECC將用於第二層軟體ECC只有一組條帶資料出故障的情況。
如果第二或第三層ECC無法儲存不良資料,在快閃記憶體可以接受特殊命令的情況下,可使用第四層基準電壓調節器將基準電壓調高或調低。如果快閃記憶體單元被寫入,那麼對相鄰單元的寫入或讀取將造成對被寫入單元的干擾。該干擾可增加該單元浮置柵極的電子或從中移 走電子。一旦電子的數量導致輸出電壓超過基礎電壓的邊界,將造成讀取不正確。按照快閃記憶體設計,基準電壓調節可能有一定數量的調節器(比如較高層3個,較低層3個)。通過由所用的快閃記憶體晶片和知道的讀取錯誤累積決定的一個特殊層來開始每個流程的試用。如果資料無法儲存,那麼試用下一個基準電壓位準,直至所有可能的層數均經過試驗。如果資料成功儲存,可使用基準電壓位準開始下一個基準電壓調節試驗。如果所有預定義基準電壓水平均無法儲存資料,將會使用第五層。
每一個基準電壓位準可能均帶有計數器。當資料成功儲存時,相應的計數器就會遞增。這些計數器有助於找出哪一層最適於解決問題。
通過收集各基準電壓的所有讀取結果來提供ECC保護的第五層。部份回應最相似法(Partial Response Most Likelihood;PRML)之類的演算法可用於分析資料並儲存原始資料。
作為一種選擇,可通過主機100提供更高級的ECC保護。主機生成更高級ECC保護資料和連接資訊。然後使用供應商命令儲存ECC資料及其與DRAM緩衝器20的連接,最後移至快閃記憶體30的備用區塊區。
請參閱圖22A-22B,圖22A-22B為多層錯誤檢測修正讀取程式流程示意圖。在圖22A中,快閃記憶體30中物理區塊的每次讀取,該區塊的每個讀取計數器(LBA_RD_CNT)通過磁區計數遞增,此為步驟540。當ECC在讀取中產生錯誤時,依步驟720執行ECC檢查步驟722。當ECC錯誤高於第一閾值T1,依步驟724進行步驟726,又高於第二閾值T2,進入步驟728,仍然可以糾正時,進入步驟732糾正並提供該資料,並且遞增ECC讀取計數器ECC_RD_CNT。當錯誤高於T1但低於T2時,如果第三層ECC或軟體ECC還未存在,那麼此時第三層ECC或軟體ECC就會生成,此為步驟730。生成的軟體ECC儲存在DRAM緩衝器20中,並 由SSS控制器40管理。按照規則,該資訊將儲存進快閃記憶體30中。
在圖22B中,對於無法糾正的錯誤,當軟體ECC已經存在時,依步驟734進入步驟736,將其用於糾正錯誤。遞增ECC2讀取計數器(ECC2_RD_CNT)。當錯誤已經糾正時,依步驟738進入步驟732,資料為可獲得。
當ECC出現故障,但存在條帶同位校驗,依步驟742進入步驟744,又不超過一組條帶資料出現故障時,那麼可以使用其他組條帶和同位重組資料,此為步驟746,而後條帶讀取計數器(STRP_RD_CNT)遞增。否則,進入步驟740參考電壓位移程序。
請參閱圖23A-23B,圖23A-23B為簡化的多級ECC讀取程式流程示意圖。在圖23A中,快閃記憶體30中物理區塊的每次讀取,該區塊的每個讀取計數器(LBA_RD_CNT)通過磁區計數(SC)遞增,此為步驟541。在讀取中產生ECC錯誤時,依步驟750進入步驟752,執行ECC檢查。當ECC錯誤高於第一閾值T1,依步驟754進入步驟758,錯誤仍然可以糾正時,那麼資料將移至快閃記憶體中的不同位置,此為步驟760,並且可以獲得該資料,此為步驟762,並且ECC讀取計數器ECC_RD_CNT遞增。
在圖23B中,當存在條帶同位校驗,依步驟756進入步驟764,又不超過一組出現故障,那麼可使用其他組條帶和同位重組資料,此為步驟766。遞增條帶讀取計數器(STRP_RD_CNT)。否則,進入步驟740參考電壓位移程序。
請參閱圖24A-24B,圖24A-24B為參考位移電壓程序流程示意圖。如步驟740調用了參考電壓位移程序時,反覆運算參數N設成零,此為步驟770,並將基準電壓記錄器的當前狀態(RV_STATE)複製至當前基準電壓記錄器的設置(RV_REG)中,此為步驟772。使用這些基準電壓設置將命令寫入快閃記憶體中,此為步驟774,並進行ECC檢查,此為步 驟776。當錯誤無法糾正,依步驟778進入步驟780,反覆運算參數N達到最大值2M時,那麼遞增重大錯誤計數,此為步驟786。步驟740參考電壓位移程序出現故障,與額定基準電壓相比,基準電壓調整較高或較低。每個較高或較低調整有M層,最大值為2M。
另外,反覆運算參數N遞增,此為步驟782,使用參考電壓的下批設定,此為步驟784,並且程式執行下輪反覆運算。
當錯誤可糾正時,在圖24B中,複製當前反覆運算基準電壓設定(RV_REG)並遞增參考計數器(XXXX_RC_CNT),此為步驟788。資料移至快閃記憶體中的不同位置,此為步驟790,並且數據可以使用,此為步驟792。當資料按照預定位準數顯示錯誤時,資料移至新位置,更新資料,持續至下一輪讀取或寫入干擾時間結束。XXXX_RC_CNT是快閃記憶體每層的基準電壓回復計數器,比如RVH1_RC_CNT、RVLm_RC_CNT等。
請參閱圖25,圖25為資料寫入到保護條件提高的快閃記憶體中流程示意圖。找到新寫入的資料的物理區塊位址,比如使用查閱資料表,此為步驟794。當需要額外保護時,依步驟796進入步驟798,條帶單元得到確認,從條帶資料中生成同位校驗,此為步驟802。保存同位教驗數據並將其與資料連接,此為步驟804。然後將條帶資料寫入PBA,此為步驟806。
發明人計畫了幾種其他實施方案。比如,資料類型位元的許多編碼、其他狀態欄位、指標等是有可能的。資料類型狀態位元不一定是條目中的前幾位。條目可以與其他表格中的條目相聯繫,比如用於標記或有效位元的單獨表格。暫存檔案可有各種延伸,新延伸可以增至搜索目錄中。由眾所周知的程式,比如文書處理軟體和網頁瀏覽器,生成的暫存檔案具有眾所周知的檔案延伸,但可以隨時添加額外延伸。這些額外檔案延伸可通過韌體更新增加至SSS控制器40的控制軟體中。
ETL每個部分所用的DRAM緩衝器的大小可由SSD控制 器的韌體確定。ETL每個部分可動態的由控制器韌體按照用戶的使用或優先權自動或手動調節。由於DRAM緩衝器20的大小受限,並非所有ETL的功能可以同時使用。ETL的各個功能均可適用於實際工作環境。控制器可以調整每個ETL所佔用的大小,以便使DRAM緩衝器得到最大優化。可以根據裝置的使用模式定期進行適應性調整。
對於TLC快閃記憶體裝置,DRAM緩衝器可用不變性隨機存取記憶體(Nonvolatile Random Access Memory;NVRAM),比如鐵電體隨機存取記憶體(Ferroelectric Random Access Memory;FRAM)、磁阻隨機存取記憶體(Magnetoresistive Random Access Memory;MRAM)、記憶電阻(Memristor)、相變化隨機存取記憶體(Phase Changed Random Access Memory;PRAM)、可變電阻式記憶體(Resistive Random Access Memory;RRAM)、賽道記憶體(Racetrack memory)和奈米隨機存取記憶體(Nano Random Access Memory;NRAM)等,進行替換。NVRAM的優勢是:ETL支援的所有表格等可以在其中保存(不需放入快閃記憶體),並且快閃記憶體指定資料(比如資料寫入快取等)即使在電源關閉時也可以保存,因此,即使在電源突然切斷時也不再需要備用電源電路。暫存檔案區140、讀取快取和對照表151可以在電源關閉時或下一輪電源啟動初始化時隨意拋棄。不同於MLC,不變性隨機存取記憶體的缺點是成本。對於MLC,缺點是速度慢和寫入或清除次數的限制。通過分配只含有經過程式設計的強大頁面的TLC的一部分,可從TLC中得到MLC。ETL的一些功能可在智慧儲存交換控制器40中的靜態隨機存取記憶體(Static Random Access Memory;SRAM)中執行。
在ETL快閃記憶體裝置中,DRAM緩衝器也可用組合,比如DRAM+SRAM、DRAM+MLC、DRAM+PRAM、DRAM+MRAM等,進行替代。當使用DRAM緩衝組合,比如DRAM+多層單元時,ETL支援的功能在DRAM中進行管理,而其中一些儲存在MLC中。DRAM緩衝器中 的一些資料最後可以丟棄,比如電源關閉時不會移至MLC的暫存檔案等、暫存檔案區140、讀取快取和對照表151。需要在電源關閉時保存的表格和資料,比如區塊清除計數表164、頁面狀態表162、S.M.A.R.T.資料收集器170等,將使用備用電源在電源意外關閉時儲存至MLC。另外一種保存DRAM ETL中有關資料的方法是將其複製至MLC。如果斷電,ETL資料的有效複製可保存在MLC中。啟動電源時,ETL的那些資料可從MLC傳輸回DRAM。可以記錄可減少複製資料的數量,從而減少MLC寫入的少量差異,來修改複製方法。
DRAM+MLC或DRAM+單層單元(Single-Layer-Cell;SLC)並非必須使用SLC、MLC、TLC的不同類型。相反,通過分配只含有經過程式設計的強大頁面的TLC的一部分,可從TLC中得到MLC。通過分配只含有經過程式設計的強大頁面的MLC或TLC的一部分,可從MLC或TLC中得到SLC。
本文所述持久計數試圖解決不變性隨機存取記憶體的耐用性問題。有些不變性隨機存取記憶體,如MRAM、PCM、FRAM、記憶電阻、NRAM等,可用本發明之技術以取代NAND快閃記憶體。
本發明之記憶體驅動器可以和硬碟(Hard Disk Drive;HDD)聯合,記憶體驅動器作為快取,硬碟作為記憶體。記憶體驅動器具有超長持久力,更適合用作快取。該混合器件可以提高整體性能。另一種保存DRAM ETL中有關資料的辦法是將其複製至硬碟。在斷電時,ETL資料的有效複製可保存在硬碟中。接通電源時,ETL中的那些資料可從硬碟中傳輸回DRAM。可以記錄可減少複製資料的數量,從而減少硬碟寫入的少量差異,來修改複製方法。
作業系統的啟動對照可預載至DRAM緩衝器,以便加快主機啟動。一旦啟動程式結束,釋放DRAM緩衝器留待後續正常操作。
主機進入休眠或待機模式時,無效DRAM緩衝器必須寫入 快閃記憶體。主機使用者退出時,無效DRAM緩衝器可以寫入快閃記憶體。
寫入資料的組合不限於一頁面一單元。組合資料可歸入較大的單元,比如:多頁面和整個區塊等。
當主機存取資料類型的分類被描述為:將來自主機的邏輯位址和一個以上的位址範圍進行比較,該比較可能只將邏輯位址的一部分和表示位址範圍的範圍進行了比較。也可以通過分解特定格式的主機寫入資料確定資料類型,比如FAT格式或FDB格式。也可以檢查早期按照順序的主機寫入的資料格式。將FAT檔案系統作為例子。FDB、FAT是FAT檔案系統的中繼資料。其他檔案系統,比如LINUX、Apple OS和Android等,各自擁有自己具有不同名稱的中繼資料,但性質相當。
每個區塊均可以分成多頁面區域。比如:一個區塊可有16個頁面,4個區,每個區有4頁面。在該可替換實施方案中,一些對照用於區,而非單獨的頁面或區塊。此外,在特殊情況下,每個區可以有一頁面。儘管每個區具有多個頁面,區模式而非頁面模式需要更少的對照條目。
主機的邏輯磁區位址(Logical-Sector Address;LSA)較高的位可以選擇群集或區。一個對照表中的所有條目可用於同一區。當邏輯磁區位址的區號與對照表中所有條目的區號相對應時,邏輯磁區位址中的LBA選擇對照表中的一個條目。也可以使用混合或多層對照表。既然已知FAT1或FAT2的LBA範圍,可以省略掉內容資料類型位元「100」。對照表上可能有區塊顆粒性或頁面顆粒性。
區塊的複製再定位並不如頁面對照頻繁,因為在頁面模式中違反非單層單元儲存的順序寫入規則的情況並不如在塊區模式中頻繁。這增加了快閃記憶體系統的耐用性,也提升了性能。
對照表可在延伸位址空間內設置,也可使用大於用於位址空間裡最大位址的實際位址或非法位址。可按主機頁面順序保留位址,或可以重新規劃位址位置。另外的實施方案,比如用於資料中心應用,頁面 或暫存檔案可作為正常用於資料處理,簡化控制器操作,但消耗快閃記憶體耐用性。耐用性備用與交換區塊的區域可使用DRAM緩衝器20作為持久備件或交換緩衝器代替快閃記憶體30,來提供延伸的超容量。在主機提供壓縮功能的情況下可隨意關閉壓縮功能。在其他實施方案中,控制器可將用戶資料檔案作為分頁檔處理,以簡化控制器功能。
區塊圖中可以存在很多變數。唯讀記憶體(Read-Only Memory;ROM),比如電可除程式化唯讀記憶體(Electrically Erasable Programmable Read Only Memory;EEPROM)可以與控制器或其部分相連接,並可用於為虛位元儲存處理器的儲存韌體。該韌體也可儲存在主要快閃記憶體模組中。主機介面匯流排可以是SATA匯流排、PCIe匯流排、CF卡(Compact Flash)匯流排或通用序列匯流排、韌體1394匯流排、光纖通道(Fiber Channel;FC)匯流排、Thunderbolt等。內部匯流排可使用諸如SATA匯流排、整合驅動電子裝置(Intergrated Device Electronics;IDE)匯流排、PCIe匯流排、CF卡匯流排、USB、保全數位(Secure Digital;SD)匯流排、多媒體卡(Multi-Media Card;MMC)匯流排、韌體1394匯流排、FC匯流排、各種乙太網路匯流排等。單晶片快閃記憶體裝置(Single Chip Flash Device;SCFD)可以包括只包含SLC或MLC的快閃記憶體,或是含有兩者的快閃記憶體。
快閃記憶體可以嵌在主機板或SSD板上或在單獨模組上。可以增加電容器、緩衝器、電阻器和其他部分。智慧儲存交換控制器可與主機板結合成一個整體,或安裝在單獨板或模組上。快閃記憶體可與智慧儲存交換控制器相結合,或作為單片裝置或外掛程式模組或板與未加工的NAND快閃記憶體晶片相結合。
使用多層控制器,比如在控制器的總調節器安排中,只能儲存交換中的控制器可以比耗損均衡、損壞區塊管理、再對照、快取、電源管理等單層控制所需要的要簡單些。可在只能儲存控制器中使用較便宜 的硬體,比如使用控制器8051處理器,虛位元儲存處理器、智慧儲存事務管理器,而不是更強大的處理器核心,比如高階精簡指令集機器(Advanced RISC Machine;ARM)ARM-9中央處理器核心。對於特定應用,考慮更強大的處理器。
不同數量和分佈的快閃記憶體區塊可連接到智慧儲存交換器上。而非使用LBA儲存匯流排界面或通用串列包匯流排,其他串列匯流排,比如雙倍資料率(Double-Date-Rate;DDR)、開放式NAND快閃記憶體介面(Open NAND Flash Interface;ONFI)、雙態觸變NAND(Toggle NAND)、差分串列包資料匯流排(Differential Serial Packet Data bus)、傳統快閃記憶體介面(Legacy Flash Interface)等。
模式邏輯只可以在電源接通時檢測到引線狀態,而不是檢測到專用引線的狀態。引線狀態的特定組合或順序可用於啟動模式變更。多匯流排協定晶片可以配有附加的串列匯流排界面使用的個性引線,或可配有設置在集線器或交換器模式的可程式設計暫存器。
交易管理器、控制器、過程、功能可用多種方式執行。功能和過程可進行程式設計,由中央處理器或其他處理器執行,或可在專用硬體、韌體或組合中執行。功能的許多劃分可以替換。智慧儲存交換控制器可以是硬體,或可以包含韌體、軟體或兩者的組合。
通過使用帶有多快閃記憶體通道的同位性、ECC並將條帶資料段存入多元不變性記憶體區塊中,整個系統的可靠度大大提高。比如,第九個快閃記憶體晶片可與快閃記憶體介面一起使用。如果八個快閃記憶體晶片之一遇到嚴重讀取錯誤,將其他八個快閃記憶體晶片的同位性寫入第九個快閃記憶體晶片,提供額外資料保護。但是,可能要使用帶有DDR或SDRAM快取的中央處理器引擎,以便滿足複雜ECC、同位性計算和生成的計算能力要求。另一個好處是,即使一個快閃記憶體塊或快閃記憶體模組受損,資料可以恢復,或智慧儲存交換器可以啟動「損毀修復」或「自 動重建」程式,插入一個新的快閃記憶體模組,並恢復或重建「丟失」或「受損」的資料。整個系統的故障容錯率大大提高。
快閃記憶體單元的浮閘通過加入電子進行程式設計。快閃記憶體控制頁面寫入所插入的電子,以便保持在兩個參考電壓位準之間。NAND快閃記憶體結構的位元線連接至一串32個單元,每個單元又連接至32個不同字組線。單元寫入資料後,對相鄰單元的寫入和讀取會對該單元造成干擾。該干擾將添加電子至該單元的浮閘,或從中移除電子。週期較長也會影響該單元浮閘的電子數量。由於浮閘中電子數量的變化,輸出電壓位準在讀取時也相應改變。如果輸出電壓位準的變化超出基準電壓的界限,那麼讀取結果是錯誤的。
可以更換較寬或較窄的資料匯流排和快閃記憶體晶片,比如用16或32位元資料通道。帶有嵌套或分段匯流排的可替換匯流排結構可用於智慧儲存交換器的內外部。可在智慧儲存交換器中使用兩個以上內部匯流排,以增加輸送量。可用更複雜的交換光纖替換內外匯流排。
可用多種方式完成資料條帶,比如同位和ECC。可按照用來放置重疊儲存區重新排序的資料排列對資訊包重新排序。智慧交換器可以與其他元件相結合,也可作為單機晶片。
可以增加額外管道或臨時緩衝器和FIFO。比如,SSS控制器40中的主機FIFO可以是SSS控制器40的部分,也可儲存在緩衝器RAM中。每個通道中均可提供獨立頁面緩衝器。可增加時鐘源。
單獨封裝、單片或多片封裝可以包含一個以上快閃記憶體和/或智慧儲存交換器多元通道。本發明不限於SCFD的使用。SCFD可以用任意一種帶有不變性隨機存取記憶體和控制器的不變性裝置來替換。
多層單元式快閃記憶體裝置可帶有四個含兩個平行資料通道的多層單元快閃記憶體晶片,但可使用不同的排列形成其他快閃記憶體模組,比如,四、八個或更多資料通道,或八、十六個或更多MLC晶片。 快閃記憶體裝置和通道可以排成鏈狀、枝狀或陣列狀。比如,四個組成一枝的快閃記憶體裝置可鏈接至智慧儲存交換器。其他大小的集合或分區方案可用於記憶體的不同存取。
主機可以是個人電腦(Personal Computer;PC)主機板或其他PC平臺、移動通訊裝置、個人數位助理、數位相機、生產工具或測試器、組合裝置或其他裝置。主機匯流排或主機裝置介面可以是SATA、PCIe、Thunderbolt、SD、USB、eMMC、ISSD或其他主機匯流排,而快閃記憶體模組的內部主線可以是平行先進技術配置(Parrelle Adcanced Technology Attachment;PATA)、多通道SSD、多功能SD或MMC、CF卡、USB或其他並連的介面。快閃記憶體模組可以是標準的電路板(Printed Cirtuit Board;PCB),或者是薄小外封裝(Thin Small Outline Package;TSOP)、球柵陣列(Ball Grid Array;BGA)、平面閘格陣列封裝(Land Grid Array;LGA)、晶片直接封裝(Chip On Board;COB)、產品級封裝(Product In Package;PIP)、系統級封裝(System in Package;SIP)、晶片級封裝(Chip Scale Package;CSP)、堆疊式層疊封裝(Package on Package;POP)或其他多片封裝(Multi Chip Package;MCP)內密封的多片模組,也可以包含未加工的NAND快閃記憶體晶片,或者未加工的NAND快閃記憶體晶片可以是分離的快閃記憶體晶片或其他種類的不變性快閃記憶體。內部匯流排可以完全或部分共用,也可以是分離的匯流排。SSD系統可將電路板和其他元件,比如發光二極體指標、電容、電阻等一起使用。可以在一個以上的層添加電源管理。
方向詞語,如高、低、上、下、頂部、底部等是相對的,可以隨著系統或資料的旋轉、突然翻轉等變化。這些詞語用於描述裝置,但並非是絕對的。
不變性快閃記憶體可以在可能含有封裝的控制器的快閃記憶體模組上,也可能在單片封裝內的快閃記憶體模上。單片封裝可以集成到電路板陣列,或直接集成在主機板上以便進一步簡化安裝、降低生產成 本並減少整體厚度。快閃記憶體晶片也可與其他實施措施一起使用,包括開放框架卡。
並非僅將SSS控制器40用於快閃記憶體儲存,還可以增加額外功能。比如,音樂播放機可包含儲存在快閃記憶體中MP3資料的音樂播放控制器。可在裝置上添加耳機插座,讓使用者插入耳機聽音樂。無線話筒(比如藍牙話筒)可以添加到裝置上連接無線耳機,而非使用耳機插座。也可添加紅外線話筒,比如IrDA(Infrad Data Assosiation)規格。也可以為無線滑鼠、個人數位助理、鍵盤、印表機、數碼相機、MP3播放機或其他無線裝置添加藍牙收發器。藍牙收發器可以代替連接器作為初始連接器。藍牙適配器裝置可以配有連接器、無線電頻率收發器、基帶控制器、天線、快閃記憶體(EEPROM)、穩壓器、晶體、發光二級體、電阻、電容和感應器。這些元件可以在包入塑膠或金屬外殼之前安裝在電路板上。
資料大小,比如磁區、頁面區塊等可能不同。舉例來說,一個磁區有512個位元組,一個頁面可有16個磁區以及一個區塊可有128個頁面。
作為一種選擇,ETL的寫入資料可以由快閃記憶體控制器逐個壓縮並作為一個頁面單元載入資料寫入快取中。主機的壓縮資料可以是大尺寸,比如大於條帶單元,也可以是小尺寸,比如小於一個磁區。添加頭文件,顯示資料欄主機LBA的關係。單獨包裝表標出了從主機到資料寫入快取條帶單元中的資料和頭文件偏移位置的LBA。資料寫入快取可以具有超過兩個條帶單元的容量。當資料寫入快取寫滿或達到時間限制,選擇的條帶單元將從資料寫入快取移至快閃記憶體。包裝表標出了從主機到快閃記憶體條帶單元中的資料和頭文件偏移位置的LBA。為覆蓋主機的舊資料,如果壓縮資料仍保存在資料寫入快取中,可將壓縮資料上移,將更新資料添加入資料寫入快取,更新壓縮表,拋棄舊資料。另外,如果壓縮資料保存在快閃記憶體中,比對新舊資料,並生成增量資料顯示其差異。 添加增量資料及其頭文件進入資料寫入快取。新頭文件也包含之前舊資料位置。壓縮表標出了增量資料位置的LBA。
發明部分的背景可包含發明問題或環境的背景資訊,而非通過其他方式描述已有技術。因此背景部分所含材料並不表示申請人承認以前的技術。
本文所述任何方法或程式均由機器或電腦執行,設計由機器、電腦或其他裝置執行,並非只由人在無機器輔助的條件下獨立執行。產生的實際結果可包含報告,或者由電腦顯示器、投影裝置、音訊生成裝置和相關媒體裝置等顯示裝置的其他顯示內容,也可包含機器生成的硬拷貝列印資料。電腦對其他機器的控制是另一個實際結果。
上述對發明裝置的描述已經表達了例證和說明的目的。並非想要詳盡,或將發明限制在公佈的精確形式中。按照上述講授,可能有許多修改和變化。本文意圖是發明範圍而並不受該詳細說明的限制,而受所附聲明的限制。
10‧‧‧頁面
100‧‧‧主機
102‧‧‧SSD
11‧‧‧SEED
12‧‧‧DRAM介面
14‧‧‧多通道快閃記憶體介面
16‧‧‧主機介面
18‧‧‧磁區組合管理器
20‧‧‧SSS DRAM緩衝器
22‧‧‧頁面組合管理器
23‧‧‧TRIM管理器
24‧‧‧磨損測量器
26‧‧‧壓縮對照管理器
28‧‧‧ECC管理器
30‧‧‧快閃記憶體
32‧‧‧表格管理器
34‧‧‧NCQ管理器
36‧‧‧RAID控制器
38‧‧‧損壞區塊管理器
39‧‧‧S.M.A.R.T.功能
40‧‧‧SSS控制器
41‧‧‧備用電源
42‧‧‧備用電源
44‧‧‧暫存檔案管理器
46‧‧‧加密引擎
48‧‧‧功能管理器

Claims (21)

  1. 一種記憶體驅動器,包含:一主機介面,係從一主機接收一主機讀取指令及一主機寫入指令;一動態隨機儲存記憶體緩衝器,係用於資料儲存;一快閃記憶體,在斷電時用於儲存資料,該快閃記憶體有複數個可清除區塊且該快閃記憶體有複數個可寫入頁面;一控制器,該控制器根據該主機介面接收的該主機讀取指令及該主機寫入指令做出反應,進而對該快閃記憶體的存取和該動態隨機儲存記憶體緩衝器的存取進行控制,該控制器將一主機資料寫入該動態隨機儲存記憶體緩衝器;一耐用轉換層,該耐用轉換層在該動態隨機儲存記憶體緩衝器內執行,且該耐用轉換層由該控制器進行控制以提供臨時儲存來減少該快閃記憶體耗損;一資料寫入快取,在該動態隨機儲存記憶體緩衝器內且由該控制器管理,其中該控制器並管理一非暫存資料;一獨立磁碟冗餘陣列結構,係在該動態隨機儲存記憶體中用於資料分佈,該獨立磁碟冗餘陣列結構通過複數個快閃記憶體通道寫入一新資料,該獨立磁碟冗餘陣列結構由該控制器進行管理;及一備份電源,係在斷電時為該動態隨機儲存記憶體緩衝器、該快閃記憶體和該控制器提供電力;其中,該備份電源有足夠的容量,可令該控制器根據一備份規則將該耐用轉換層的一資料複製到該快閃記憶體中。
  2. 根據申請專利範圍第1項所述的記憶體驅動器,其中該耐用轉換層在該動態隨機儲存記憶體緩衝器中執行,其包含:一頁面對照表,係儲存在該動態隨機儲存記憶體緩衝器中並由該控制器存取,該頁面對照表有由一主機邏輯位址所選的複數個條目;複數份子磁區對照表,係儲存在該動態隨機儲存記憶體緩衝器中並由該控制器存取,每一該些子磁區對照表皆由一個頁面中磁區數所選擇的 複數個磁區條目組成;其中,該些子磁區對照表中的每一該磁區條目包括:一部分磁區位元,當該磁區條目是該主機的一完整磁區資料的一完整磁區條目,以及當該磁區條目是該主機的一部分磁區資料的一部分磁區條目;一頁面指標,用於指定該動態隨機儲存記憶體緩衝器中的一頁面位置,該頁面位址用於儲存該完整磁區資料或該部分磁區資料;一磁區識別符,當該條目是一完整磁區條目時,用於識別該頁面位置內的磁區;當該條目是一部分磁區條目時,具有用於識別該頁面位置內一起始位元組位置的一位元組偏移量,該位元組偏移量並同時可用於指明一部分磁區資料長度的一長度;其中該些完整磁區條目和該些部分磁區條目儲存在該些子磁區對照表中;一資料登錄緩衝區,儲存在該動態隨機儲存記憶體緩衝器中並由該控制器存取;其中一條帶單元的每一頁面均包括完整頁面資料或分組的部分頁面資料;其中該控制器允許一主機寫入資料儲存於該資料寫入快取,然後根據一規則將該條帶單元寫入該快閃記憶體中。
  3. 根據申請專利範圍第2項所述的記憶體驅動器,其中該頁面對照表中有一條目,該條目包含:複數個資料類型位元,為該條目選擇的該邏輯位址而儲存的一資料類型;一指標,當全頁的一主機資料儲存在該動態隨機儲存記憶體中,或當該全頁主機資料儲存在該快閃記憶體中時,該指標在其中用於指定位置,其中當該主機資料為部分頁面資料時,該指標用於指出在該些子磁區對照表中用於儲存特定一子磁區對照表的位置; 其中,該些資料類型位元指從包含下列群組中選出的一資料類型:一檔案配置表條目;一檔案描述區塊條目;一分頁檔,由一主機記憶體管理器創建、將資料從該主機的一主記憶體交換至該記憶體驅動器;一暫存檔案,在一檔案配置表條目中由一檔案擴展標識,由該主機上的一執行程式創建,該暫存檔案在電源關閉、喪失時可以被刪除;及一使用者檔案,用於為該主機的一使用者儲存一使用者資料或一應用程式資料;其中該控制器允許將該使用者檔案複製到該快閃記憶體,但不允許將該暫存檔案寫入該快閃記憶體,這樣,通過阻止將該暫存檔案寫入該快閃記憶體,可以減少該快閃記憶體的耗損。
  4. 根據申請專利範圍第1項所述的記憶體驅動器,其中該耐用轉換層在該動態隨機儲存記憶體緩衝器中執行,該耐用轉換層進一步包含:一損壞區塊管理器,當該快閃記憶體中的一區塊被清除以生成一個清除區塊時,該損壞區塊管理器啟動:一計數功能,係指對該清除區塊中其中一頁面內複數個未被清除之位元的一數量進行統計;當未清除位元的該數量超過一較低閾值,但不超過一較高閾值時,將該頁面標記為一保護頁面,並增加為該保護頁面儲存的一數量的錯誤糾正碼位元;一頁面標記功能,會在該些未被清除之位元的該數量超過該較高閾值時啟動,並標記該頁面為一損壞頁面,並且不在該損壞頁面中儲存該主機資料;一重複功能,在該清除區塊中的所有該些頁面重複該計數功能及該頁面標記功能;一損壞頁面計數功能,係用於計算該清除區塊中的該損壞頁面的一數量;及 一區塊標記功能,當該清除區塊的該損壞頁面的該數量有超過一區塊閾值時啟動,將該清除區塊標記為一損壞區塊,並且在該損壞區塊中的任何頁面中均不儲存該主機資料。
  5. 根據申請專利範圍第1項所述的記憶體驅動器,其中該耐用轉換層在該動態隨機儲存記憶體緩衝器中執行,該耐用轉換層進一步包含:一個資料登錄緩衝器,儲存在該動態隨機儲存記憶體緩衝器中,並由該控制器存取;及一標準壓縮電路,包含壓縮該主機寫入指令的方式、添加一頭文件以壓縮資料的方式、更新一壓縮對照表的方式;其中該控制器還包含一個適配壓縮演算法,用以選擇一適當的演算法並根據設置的資料類型壓縮寫入資料;這樣,通過減小寫入資料的大小,使該快閃記憶體的寫入量更少,以便延長快閃記憶體的耐用性。
  6. 根據申請專利範圍第1項所述的記憶體驅動器,其中該耐用轉換層在該動態隨機儲存記憶體緩衝器中執行,該耐用轉換層進一步包含:一自我監測、分析及報告技術,用以收集一快閃記憶體裝置的一健康資訊,其中該記憶體驅動器的保固是根據客戶購買年限或該記憶體驅動器的一總主機寫入數量而決定。
  7. 一種藉由耐用轉換層增加記憶體驅動器耐用性的方法,包含:當一主機介面接收一主機讀取指令或一主機寫入指令時,控制對一快閃記憶體和一動態隨機儲存記憶體緩衝器的存取,並通過一控制器向該動態隨機儲存記憶體緩衝器寫入一主機資料;在被一控制器控制的該動態隨機儲存記憶體緩衝器內創建一耐用轉換層,並使用該耐用轉換層提供暫時儲存,以減少該快閃記憶體損耗;在該動態隨機儲存記憶體緩衝器內分佈資料,在其中形成資料分佈的一獨立磁碟冗餘陣列結構,並通過該快閃記憶體的複數個通道寫入一新資料,該獨立磁碟冗餘陣列結構係由該控制器管理;以一資料劃分管理器確認該新資料類型為一非臨時資料或者為一臨時 資料;及在斷電時以一備份電源為該動態隨機儲存記憶體緩衝器、該快閃記憶體及該控制器供電,該備份電源有足夠的容量,使得該控制器可以根據一規則將該耐用轉換層中的該非臨時資料複製到該快閃記憶體中。
  8. 根據申請專利範圍第7項所述的藉由耐用轉換層增加記憶體驅動器耐用性的方法進一步包含:以該控制器管理儲存在該動態隨機儲存記憶體緩衝器中的一資料寫入快取;寫入由一匹配條目中指標指定的該動態隨機儲存記憶體緩衝器的該耐用轉換層儲存的一整頁數據;當該主機資料用於該快閃記憶體中的一部分頁時:創建或定位由一對照表匹配條目指標指定的一子磁區對照表;對於一主機的每個全磁區資料,更新該子磁區對照表的一條目,指示儲存在該動態隨機儲存記憶體緩衝器中的全磁區類型和全磁區指標;對於該主機的一部分磁區資料,更新該子磁區對照表中的條目,指示儲存該部分磁區、其長度和起始位元組位移,其中,該子磁區對照表具有全磁區和該部分磁區的條目;其中每頁的一條帶單元包括整頁數據或分組的部分頁數據;其中該控制器允許將一主機寫入資料儲存在該資料寫入快取中,然後根據一項規則將該條帶單元寫入該快閃記憶體中。
  9. 根據申請專利範圍第7項所述的藉由耐用轉換層增加記憶體驅動器耐用性的方法,其中該耐用轉換層在該動態隨機儲存記憶體緩衝器中執行,該方法進一步包含:使用一組裝管理器控制各種功能;管理該動態隨機儲存記憶體緩衝器中儲存的一資料寫入快取;將來自一主機的一第一寫入資料及一頭文件寫入該資料寫入快取的開頭;將來自該主機的一新寫入資料及在前一個資料旁的一頭文件寫入該資 料寫入快取;其中,當接受來自該主機的一已更新寫入資料,且一舊資料在該資料寫入快取中,則該控制器將清除該舊資料及其頭文件,並將一無效資料移至該舊資料之後,附加該已更新資料及其資料頭;其中,當該無效資料大小超過一條帶單元,且該資料寫入快取已滿時,該控制器會將該條帶單元寫入該快閃記憶體。
  10. 根據申請專利範圍第7項所述的藉由耐用轉換層增加記憶體驅動器耐用性的方法,其中該耐用轉換層在該動態隨機儲存記憶體緩衝器中執行,該方法進一步包含:使用該控制器管理存入該動態隨機儲存記憶體緩衝器的一資料寫入快取;接受來自一主機的一初始主機寫入值;當該主機的一邏輯位址在一檔案配置表位址範圍內時,決定一檔案配置表類型的一資料類型位元,該檔案配置表位址範圍由一儲存檔案配置表條目的格式化操作指定;當該主機的一邏輯位址在一檔案描述區塊位址的範圍內時,決定一檔案描述區塊類型的一資料類型位元,該檔案描述區塊位址的範圍由儲存該檔案描述區塊條目的一作業系統指定;如果一用戶檔案類型的一資料類型位元未作另行分配,那麼決定該用戶檔案類型的該資料類型位元;將被分配給該初始主機寫入值的一資料類型位元寫入一新條目中,該新條目位於帶有一指標的一對照表中;將接收自初始化的該主機的該初始主機寫入值指標指向的該動態隨機儲存記憶體緩衝器的該耐用轉換層的某一位置;將該動態隨機儲存記憶體緩衝器中的一儲存資料移至該快閃記憶體中,以便該儲存資料具備指示該使用者檔案類型的該資料類型位元;電源關閉或停電時,將該動態隨機儲存記憶體緩衝器的該耐用轉換層中的一儲存資料移至該快閃記憶體中,該儲存資料的該資料類型位元為指示檔案配置表或檔案描述區塊,這樣可降該低快閃記憶體的磨 損。
  11. 根據申請專利範圍第7項所述的藉由耐用轉換層增加記憶體驅動器耐用性的方法進一步包含:在該動態隨機儲存記憶體緩衝器內創建一資料寫入快取區;記錄複數邏輯區塊位址中的每一邏輯區塊的一存取頻率;其中,該存取頻率大於一預定義值時,該邏輯區塊位址將被分類為頻繁存取,反之即為非頻繁存取;被存取的該邏輯區塊位址為頻繁存取時,將一資料存至一頻繁存取快取區;被存取的該邏輯區塊位址為非頻繁存取時,將該資料存至一非頻繁存取快取區;其中,該非頻繁存取快取區會被優先寫入該快閃記憶體,以及優先被該頻繁存取快取區或該非頻繁存取快取區外的該些非頻繁存取區的該邏輯區塊位址存取覆蓋。
  12. 根據申請專利範圍第7項所述的藉由耐用轉換層增加記憶體驅動器耐用性的方法進一步包含:使用該控制器管理存入該動態隨機儲存記憶體緩衝器的一資料寫入快取;使用該控制器管理來自一主機傳入的一邏輯區塊位址;在電源接通狀態下檢查一檔案系統位址與一快閃記憶體頁面之間的不對齊問題,確定所需對齊偏移量;添加偏移量到一傳入邏輯區塊位址中,將該傳入邏輯區塊位址對齊到該快閃記憶體頁面。
  13. 根據申請專利範圍第7項所述的藉由耐用轉換層增加記憶體驅動器耐用性的方法進一步包含:使用該控制器管理在該動態隨機儲存記憶體緩衝器中的一資料寫入快取;操作一標準壓縮電路,壓縮該主機寫入指令並產生一壓縮資料,將一 頭文件添加至該壓縮資料,並更新一已壓縮對照表;其中,該控制器進一步包含各種壓縮演算法;選擇一適當演算法,根據一資料集類型壓縮一寫入資料;當該資料集具有一相等資料集時,使用該已壓縮對照表,指向相同的該些已壓縮資料集;當該資料集具有一近似資料集時,使用該已壓縮對照表,指向相同的該些已壓縮資料集,並使用指標指向增量資料;當一資料集沒有相似資料集時,將已壓縮對照表移至該動態隨機儲存記憶體緩衝器,並更改該已壓縮對照表中的一指標;當一資料的大小在壓縮後未減小時,保留原始的該資料;如此一來,該寫入資料的一大小會減小,使寫入該快閃記憶體的資料變少,從而提高快閃記憶體耐用性。
  14. 根據申請專利範圍第7項所述的藉由耐用轉換層增加記憶體驅動器耐用性的方法進一步包含:使用該控制器管理在該動態隨機儲存記憶體緩衝器中的一資料讀取快取;從一主機接收一讀取請求,獲取一邏輯區塊位址;從該快閃記憶體中讀取一資料,未檢查到讀取錯誤後,發送該資料至該主機;檢查到一讀取錯誤時,一方法一啟動,執行一錯誤糾正碼檢查,生成複數個錯誤位元;該些錯誤位元的數目少於一第一個閾值時,一方法二啟動,應用一第一層錯誤糾正法糾正該些錯誤位元,然後將一已修正資料發送至該主機;該些錯誤位元的數目多於該第一個閾值且少於一第二個閾值時,一方法三啟動,應用該第一層錯誤糾正法糾正該些錯誤位元,然後將一已修正資料發送至該主機,若先前沒有生成的話,則生成一軟體錯誤糾正碼; 該些錯誤位元的數目多於該第二個閾值且還可應用該錯誤糾正碼進行糾正時,一方法四啟動,應用該第一層錯誤糾正法糾正該些錯誤位元,然後將一已修正資料發送至該主機,若先前沒有生成的話,則生成一軟體錯誤糾正碼;該些錯誤位元數高於該第一層錯誤糾正法的一第一層錯誤糾正限度時,一方法五啟動,應用之前生成的該軟體錯誤糾正碼糾正該些錯誤位元,然後將一已修正資料發送至該主機;該些錯誤位元數高於該第一層錯誤糾正法的該第一層錯誤糾正限度,且無法使用該軟體錯誤糾正碼無法進行糾正時,一方法六啟動,放棄一分段資料,應用一分段資料組中的一同位分段資料及該分段資料外的複數個分段資料重建該分段資料,然後將一已修正資料發送至該主機;該些錯誤位元數高於該第一層錯誤糾正法的該第一層錯誤糾正限度,應用軟體錯誤糾正碼無法進行糾正時,且該同位分段資料無法使用時,一方法七啟動,執行一參考電壓切換程序,然後發送一已修正資料至該主機。
  15. 根據申請專利範圍第7項所述的藉由耐用轉換層增加記憶體驅動器耐用性的方法進一步包含:使用該控制器管理在該動態隨機儲存記憶體緩衝區中的一資料讀取快取;從一主機接收一讀取請求,獲取一邏輯區塊位址;從該快閃記憶體中讀取一資料,未檢查到任何讀取錯誤後,發送該資料至該主機;檢查到一讀取錯誤時,一方法一啟動,執行一錯誤糾正碼檢查,生成複數個錯誤位元;該些錯誤位元數少於一個閾值時,一方法二啟動,應用一第一層錯誤糾正法糾正該些錯誤位元,然後將一已修正資料發送至該主機;該些錯誤位元數多於該閾值且還可應用錯誤糾正碼進行糾正時,一方 法三啟動,應用一第一層錯誤糾正法糾正該些錯誤位元,然後將一已修正資料發送至該主機,重新定位一快閃記憶體資料的一舊物理區塊至一新物理區塊位置,標記該舊物理區塊為已放棄;該些錯誤位元數高於該第一層錯誤糾正的一第一糾正限度時,一方法四啟動,放棄一分段資料,應用一分段資料組中的一同位分段資料及該分端資料以外的複數個其它分段資料重建該分段資料,然後將一已修正資料發送至該主機,重新定位該快閃記憶體資料的一舊物理區塊至一新物理塊位置,標記該舊物理區塊為已放棄;該些錯誤位元數高於該第一層錯誤糾正的該第一糾正限度,且該分段同位資料無法使用時,一方法五啟動,執行一參考電壓切換程序,然後將一已修正資料發送至該主機。
  16. 根據申請專利範圍第7項所述的藉由耐用轉換層增加記憶體驅動器耐用性的方法進一步包含:使用該控制器管理存入該動態隨機儲存記憶體緩衝區的一資料讀取快取;當複數個錯誤位元的數目高於一第一級錯誤糾正的一第一糾正限度時,切換方法啟動,通過以下方式調整一參考電壓位準:將不同暫存器值寫入一快閃記憶體晶片暫存器中,讀取快閃記憶體晶片內的資料來調整該參考電壓位準;其中,該參考電壓位準或高於或低於一預設參考電壓位準;使用一已調整過的參考電壓位準讀取該快閃記憶體晶片內的一資料;使用該已調整過的參考電壓位準與該第一級錯誤糾正成功讀取該快閃記憶體晶片內的該資料後,將一已修正資料發送至該主機,儲存該已調整過的參考電壓位準供以後使用;使用該已調整過的參考電壓位準與該第一級錯誤糾正未成功讀取該快閃記憶體晶片內的該資料後,使用先前生成的一軟體錯誤糾正碼,將一已修正資料發送至該主機,儲存該已調整過的參考電壓位準供以後使用; 使用該已調整過的參考電壓位準、該第一級錯誤糾正以及先前生成的該軟體錯誤糾正碼讀取資料失敗時,在一新的反覆運算中計算一新調整過的參考電壓位準並應用該新調整過的參考電壓位準;及所有預定義參考電壓位準都失敗後,報告一嚴重錯誤,不發送一已修正資料;這樣,當該些錯誤位元的數目高於該第一級錯誤糾正的該第一糾正限度時,調整該參考電壓位準,從而提高快閃記憶體耐用性。
  17. 根據申請專利範圍第7項所述的藉由耐用轉換層增加記憶體驅動器耐用性的方法進一步包含:當一快閃記憶體中的一已清除區塊已被清除時,增加一已清除區塊清除計數表中的一區塊清除次數;讀取該已清除區塊的一頁面狀態表,該頁面狀態表中有複數個頁面條目,該每一個頁面條目都儲存了該已清除區塊中的一頁面的一頁面狀態,該頁面狀態包括一損壞頁面或一好頁面的指示;針對該已清除區塊中的該每一頁面,從該頁面狀態表中讀取該每一頁面上的該頁面條目;該頁面狀態表中的該頁面狀態顯示為壞時,處理該些頁面中的下一頁面;該頁面狀態表中的該頁面狀態顯示為好時,計算該頁面上的複數個未清除位元數;該些未清除位元數超過一第一閾值時,更改該頁面狀態,在該頁面條目中顯示損壞頁面,增加一損壞頁面計數;該些未清除位元數處於該第一閾值與一第二閾值之間,且該頁面狀態表中的該頁面狀態顯示需要一錯誤糾正碼保護時,處理該些頁面中的下一頁面;該些未清除位元數處於該第一閾值與該第二閾值之間,且該頁面狀態表中的該頁面狀態顯示不需要該錯誤糾正碼保護時,更改該頁面狀態表中的該頁面狀態,顯示需要該錯誤糾正碼保護,增加一錯誤糾正碼 保護頁面數;及該已清除區塊的該損壞頁面計數超過一第三閾值時,顯示該已清除區塊為一損壞區塊,不向該已清除區塊寫入新資料,這樣,可通過計算該已清除區塊的該損壞頁面計數來識別該已清除區塊為損壞,並允許損壞頁面存在於好區塊中,從而提高該快閃記憶體的耐用性。
  18. 一種藉由耐用轉換層增加記憶體驅動器耐用性的方法,能夠增加具有較短清除週期壽命的一快閃記憶體的耐用性,該方法包含:在由一控制器管理的一動態隨機儲存記憶體緩衝器中創建一耐用轉換層,應用該耐用轉換層提供臨時儲存,以此降低該快閃記憶體的耗損度;在該動態隨機儲存記憶體緩衝器中創建一備用區或一交換區;操作該控制器應用該動態隨機儲存記憶體緩衝器中的該備用區或該交換區,合併該快閃記憶體中的一有效資料和一新資料,並生成一合併資料;及將該合併資料寫入該快閃記憶體內;這樣,該控制器將應用該動態隨機儲存記憶體緩衝區內的一備用或一交換功能,而非該快閃記憶體內的功能。
  19. 根據申請專利範圍第18項所述的藉由耐用轉換層增加記憶體驅動器耐用性的方法進一步包含:為該快閃記憶體內的複數個區塊提供損耗均衡控制;當該控制器需要該快閃記憶體的該些區塊通過該動態隨機儲存記憶體緩衝區中的該備用區或該交換區寫入資料時,檢查一區塊狀態及一區塊清除計數表,從處於一空區塊狀態的一區塊清單中選擇清除次數最低的一區塊;不能選擇清除次數最高的一區塊。
  20. 根據申請專利範圍第18項所述的藉由耐用轉換層增加記憶體驅動器耐用性的方法進一步包含:為該快閃記憶體內的複數個區塊提供損耗均衡控制; 設備空閒且一最高清除次數達到一預定閾值時,利用一區塊狀態、一區塊清除計數表,有針對性地選擇具有最低清除次數的一組已用區塊以及同樣數量的具有最高清除次數的空區塊,通過該動態隨機儲存記憶體緩衝區中的該備用區、該交換區,從一最低清除次數區塊中將資料複製到一最高清除次數區塊,然後清除該最低清除次數區塊;再利用該最低清除次數區塊;及將每一該些區塊的清除次數的增量最小化。
  21. 根據申請專利範圍第18項所述的藉由耐用轉換層增加記憶體驅動器耐用性的方法進一步包含:在該動態隨機儲存記憶體緩衝區中創建一頁面狀態表;操作該控制器,使用該動態隨機儲存記憶體緩衝器中的該頁面狀態表記錄每一個在該快閃記憶體區塊中頁面狀態;清除一個區塊後,將該區塊中的一頁面狀態設置為一空頁面;寫入一個頁面後,更改該頁面的一頁面狀態為一已使用頁面;當一主機資料被寫入一個相同的邏輯頁面位址時,將一資料寫入一新快閃記憶體頁面,將一舊頁面的一頁面狀態設置為一已清除頁面或一已剪裁頁面;從該主機接收到一剪裁命令時,將相應的一頁面狀態設置為一已清除頁面或一已剪裁頁面;當該頁面被識別為一損壞頁面時,設置該頁面的一頁面狀態為一損壞頁面;在一垃圾收集過程中,不將顯示為一已清除頁面或一已剪裁頁面的一頁面移入一新區塊中;在該動態隨機儲存記憶體緩衝器中創建一備用區、一交換區;操作該控制器,使用該動態隨機儲存記憶體緩衝器中的該備用區及該交換區合併該快閃記憶體中的一有效資料和一新資料,並生成一合併資料;其中,從該頁面狀態表中可檢查到一目標區塊中的每一頁面的一頁面 狀態;其中,該有效資料的一頁面的一頁面狀態顯示為一已用頁面,該頁面狀態不顯示為一損壞頁面、一空頁面或一已剪裁頁面;及將該合併資料寫入該快閃記憶體;這樣,該控制器將使用該動態隨機儲存記憶體緩衝器內的一備用功能及一交換功能,而非該快閃記憶體內的功能。
TW102121890A 2012-07-02 2013-06-20 具耐用轉換層並能轉移暫存讓記憶體耐磨損的硬碟驅動器 TW201403318A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/540,569 US8959280B2 (en) 2008-06-18 2012-07-02 Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear

Publications (1)

Publication Number Publication Date
TW201403318A true TW201403318A (zh) 2014-01-16

Family

ID=48636664

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102121890A TW201403318A (zh) 2012-07-02 2013-06-20 具耐用轉換層並能轉移暫存讓記憶體耐磨損的硬碟驅動器

Country Status (3)

Country Link
CN (1) CN103176752A (zh)
DE (1) DE102013106242A1 (zh)
TW (1) TW201403318A (zh)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI564792B (zh) * 2014-06-24 2017-01-01 宇瞻科技股份有限公司 儲存裝置及其位址對應方法
TWI566094B (zh) * 2015-02-04 2017-01-11 慧榮科技股份有限公司 資料儲存裝置及其資料更新方法
TWI603193B (zh) * 2016-03-31 2017-10-21 慧榮科技股份有限公司 資料儲存裝置及其資料維護方法
US9811473B2 (en) 2014-04-22 2017-11-07 Nuvoton Technology Corporation Storage unit controller and control method thereof, and storage device
TWI626540B (zh) * 2017-03-22 2018-06-11 慧榮科技股份有限公司 一般及垃圾回收的資料存取方法以及使用該方法的裝置
TWI633428B (zh) * 2017-09-28 2018-08-21 慧榮科技股份有限公司 資料儲存裝置與記憶體裝置之資料處理方法
US10096357B2 (en) 2016-10-25 2018-10-09 Silicon Motion, Inc. Data storage device and data writing method thereof
TWI674502B (zh) * 2017-10-27 2019-10-11 日商東芝記憶體股份有限公司 記憶體系統及控制方法
US10503407B2 (en) 2017-09-21 2019-12-10 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory
TWI683252B (zh) * 2014-10-07 2020-01-21 南韓商愛思開海力士有限公司 資料儲存設備及其操作方法
TWI684098B (zh) * 2017-09-21 2020-02-01 日商東芝記憶體股份有限公司 記憶體系統及控制非揮發性記憶體之控制方法
US10552336B2 (en) 2017-10-27 2020-02-04 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory
US11010289B2 (en) 2014-10-07 2021-05-18 SK Hynix Inc. Data storage device and operating method thereof
TWI740110B (zh) * 2018-03-08 2021-09-21 日商東芝記憶體股份有限公司 在固態儲存驅動器陣列中的工作量適應超容量快取
TWI741296B (zh) * 2019-05-21 2021-10-01 慧榮科技股份有限公司 瞬間斷電回復處理方法及裝置以及電腦程式產品
US11188267B2 (en) 2019-05-21 2021-11-30 Silicon Motion, Inc. Method and apparatus and computer program product for handling sudden power off recovery
TWI755830B (zh) * 2020-08-28 2022-02-21 力晶積成電子製造股份有限公司 記憶體的讀取方法
US11630590B1 (en) 2022-01-11 2023-04-18 Silicon Motion, Inc. Method and apparatus for performing access control of memory device with aid of aggressor bit information

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104283815A (zh) * 2013-07-10 2015-01-14 恒启电子(苏州)有限公司 基于超级电容后备电源二层管理型交换机
KR102088403B1 (ko) * 2013-08-08 2020-03-13 삼성전자 주식회사 저장장치, 이를 포함하는 컴퓨터 시스템 및 이의 동작 방법
US9424179B2 (en) 2013-10-17 2016-08-23 Seagate Technology Llc Systems and methods for latency based data recycling in a solid state memory system
JP6430740B2 (ja) * 2013-11-05 2018-11-28 エルエスアイ コーポレーション ソリッドステートメモリシステムにおけるレイテンシーベースのデータ再利用のシステム及び方法
US9619381B2 (en) * 2013-12-24 2017-04-11 International Business Machines Corporation Collaborative health management in a storage system
CN105278866B (zh) * 2014-07-18 2018-03-27 光宝科技股份有限公司 固态储存装置及其错误更正控制方法
KR102289919B1 (ko) * 2014-04-15 2021-08-12 삼성전자주식회사 스토리지 컨트롤러, 스토리지 장치, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법
CN104866436B (zh) * 2014-06-12 2018-02-02 国家电网公司 海量安全事件存储方法
CN105279101A (zh) * 2014-06-24 2016-01-27 宇瞻科技股份有限公司 储存装置及其位址对应方法、数据存取及识别与存取方法
US10528461B2 (en) 2014-08-04 2020-01-07 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Controlling wear among flash memory devices based on remaining warranty
WO2016057670A1 (en) * 2014-10-07 2016-04-14 Google Inc. Hardware-assisted memory compression management using page filter and system mmu
US9715453B2 (en) * 2014-12-11 2017-07-25 Intel Corporation Computing method and apparatus with persistent memory
CN104657290A (zh) * 2015-02-09 2015-05-27 浪潮电子信息产业股份有限公司 一种raid卡数据保护装置及方法
CN106469122B (zh) * 2015-08-14 2019-11-19 群联电子股份有限公司 有效数据合并方法、存储器控制器与存储器储存装置
KR102333746B1 (ko) * 2015-09-02 2021-12-01 삼성전자주식회사 재사용 주기에 따라 마모도를 관리하는 저장 장치의 동작 방법
KR20170056766A (ko) * 2015-11-13 2017-05-24 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US11061853B2 (en) 2015-12-08 2021-07-13 Via Alliance Semiconductor Co., Ltd. Processor with memory controller including dynamically programmable functional unit
KR102615593B1 (ko) * 2016-05-04 2023-12-21 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN107346211B (zh) * 2016-05-06 2020-03-31 合肥兆芯电子有限公司 映射表加载方法、存储器控制电路单元与存储器储存装置
CN107491266A (zh) * 2016-06-13 2017-12-19 恩智浦美国有限公司 大容量存储系统和块数据存储方法
US10534716B2 (en) * 2016-07-13 2020-01-14 Seagate Technology Llc Limiting access operations in a data storage device
US10489064B2 (en) * 2016-10-03 2019-11-26 Cypress Semiconductor Corporation Systems, methods, and devices for user configurable wear leveling of non-volatile memory
TWI640868B (zh) * 2016-10-07 2018-11-11 慧榮科技股份有限公司 資料儲存裝置及其資料寫入方法
TWI607312B (zh) 2016-10-07 2017-12-01 慧榮科技股份有限公司 資料儲存裝置及其資料寫入方法
KR20180041428A (ko) * 2016-10-14 2018-04-24 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그의 동작 방법
CN107656880B (zh) * 2016-10-28 2020-12-15 上海兆芯集成电路有限公司 具有包括动态可编程的功能单元的存储器控制器的处理器
TWI619018B (zh) * 2016-11-10 2018-03-21 慧榮科技股份有限公司 可用於資料儲存裝置之垃圾蒐集方法
KR20180094391A (ko) * 2017-02-15 2018-08-23 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10768829B2 (en) * 2017-02-15 2020-09-08 Microsoft Technology Licensing, Llc Opportunistic use of streams for storing data on a solid state device
CN107423229B (zh) * 2017-03-16 2020-09-01 杭州电子科技大学 一种面向页级ftl的缓冲区改进方法
KR102409760B1 (ko) * 2017-03-17 2022-06-17 에스케이하이닉스 주식회사 메모리 시스템
KR102299880B1 (ko) * 2017-04-04 2021-09-09 에스케이하이닉스 주식회사 데이터 변환 장치 및 방법
KR20180125694A (ko) * 2017-05-16 2018-11-26 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
CN108958961B (zh) * 2017-05-22 2021-11-30 上海宝存信息科技有限公司 数据储存装置以及数据错误管理方法
KR102233400B1 (ko) * 2017-05-29 2021-03-26 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
CN109144399B (zh) * 2017-06-16 2021-12-17 杭州海康威视数字技术股份有限公司 一种数据存储方法、装置及电子设备
CN107608626B (zh) * 2017-08-16 2020-05-19 华中科技大学 一种基于ssd raid阵列的多级缓存及缓存方法
CN107506153B (zh) * 2017-09-26 2021-07-02 深信服科技股份有限公司 一种数据压缩方法、数据解压方法及相关系统
CN111433749B (zh) * 2017-10-12 2023-12-08 拉姆伯斯公司 具有dram高速缓存的非易失性物理存储器
CN109669621B (zh) * 2017-10-13 2021-05-25 杭州海康威视系统技术有限公司 一种文件管理方法、文件管理系统、电子设备及存储介质
CN108334457B (zh) * 2018-02-12 2020-06-30 杭州宏杉科技股份有限公司 一种io处理方法及装置
US10672497B2 (en) * 2018-04-03 2020-06-02 SK Hynix Inc. Memory system and method for bad block management
US11003587B2 (en) * 2018-05-03 2021-05-11 SK Hynix Inc. Memory system with configurable NAND to DRAM ratio and method of configuring and using such memory system
CN108845959B (zh) * 2018-06-25 2023-06-23 联想(北京)有限公司 一种内存数据处理方法、装置和电子设备
KR20200006379A (ko) * 2018-07-10 2020-01-20 에스케이하이닉스 주식회사 컨트롤러 및 그것의 동작방법
KR102495539B1 (ko) * 2018-07-16 2023-02-06 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR102649657B1 (ko) * 2018-07-17 2024-03-21 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
US11249919B2 (en) * 2018-07-31 2022-02-15 SK Hynix Inc. Apparatus and method for managing meta data for engagement of plural memory system to store data
KR20200022179A (ko) * 2018-08-22 2020-03-03 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
CN109213448B (zh) * 2018-08-30 2022-04-05 东信和平科技股份有限公司 一种智能卡的擦写数据的方法、装置、设备及存储介质
US11119698B2 (en) * 2018-12-03 2021-09-14 SK Hynix Inc. Data storage device capable of parallel writing, operating method thereof, and storage system having the same
CN109814809B (zh) * 2019-01-14 2022-03-11 杭州宏杉科技股份有限公司 数据压缩方法及装置
KR20200095130A (ko) 2019-01-31 2020-08-10 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
CN110047537B (zh) * 2019-04-09 2020-07-03 无锡科技职业学院 一种半导体存储装置及计算机系统
CN110347613B (zh) * 2019-06-26 2021-06-11 华中科技大学 多租户固态盘中实现raid的方法、控制器及多租户固态盘
US11049570B2 (en) * 2019-06-26 2021-06-29 International Business Machines Corporation Dynamic writes-per-day adjustment for storage drives
CN112231241B (zh) * 2019-07-15 2023-02-17 深圳市中兴微电子技术有限公司 一种数据读取方法和装置、计算机可读存储介质
KR20210034378A (ko) * 2019-09-20 2021-03-30 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그것의 동작 방법
CN110780811B (zh) * 2019-09-19 2021-10-15 华为技术有限公司 数据保护方法、装置及存储介质
CN110990298B (zh) * 2019-12-02 2022-03-08 龙芯中科(合肥)技术有限公司 数据拷贝的处理方法、装置、电子设备及存储介质
KR20210079894A (ko) * 2019-12-20 2021-06-30 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US11275510B2 (en) * 2020-02-07 2022-03-15 Samsung Electronics Co., Ltd. Systems and methods for storage device block-level failure prediction
CN111444116B (zh) * 2020-03-23 2022-11-25 海信电子科技(深圳)有限公司 存储空间碎片处理方法及装置
CN112631516B (zh) * 2020-12-22 2022-09-30 上海宏力达信息技术股份有限公司 一种具有寿命管理的flash文件管理系统
CN114691533B (zh) * 2020-12-31 2023-09-05 深圳融昕医疗科技有限公司 文件存储介质的磨损平衡方法、存储介质及呼吸机
TWI780696B (zh) * 2021-05-10 2022-10-11 創鑫智慧股份有限公司 查找表壓縮方法與查找表讀取方法及其計算設備、主機與裝置
CN113435109B (zh) * 2021-06-04 2024-01-30 衢州学院 一种混合ssd的性能与寿命的优化方法
CN114840448A (zh) * 2022-05-13 2022-08-02 厦门大学 利用通道间并行加速3d闪存垃圾回收的方法
CN116126591B (zh) * 2022-12-23 2023-12-15 北京熵核科技有限公司 一种嵌入式系统的事务机制
CN116795297B (zh) * 2023-08-18 2023-11-17 江苏云途半导体有限公司 一种存储设备、存储方法及装置
CN116775507B (zh) * 2023-08-23 2023-10-20 四川云海芯科微电子科技有限公司 固态硬盘控制器垃圾回收中的硬件加速选块方法及装置
CN116974492B (zh) * 2023-09-21 2023-12-12 北京远特科技股份有限公司 一种基于flash的里程数据存储方法、装置、设备及介质
CN117420965B (zh) * 2023-12-18 2024-03-22 合肥康芯威存储技术有限公司 一种存储器及其控制方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7333364B2 (en) 2000-01-06 2008-02-19 Super Talent Electronics, Inc. Cell-downgrading and reference-voltage adjustment for a multi-bit-cell flash memory
US7457822B1 (en) * 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
US8112574B2 (en) 2004-02-26 2012-02-07 Super Talent Electronics, Inc. Swappable sets of partial-mapping tables in a flash-memory system with a command queue for combining flash writes
US8452929B2 (en) * 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US20070112812A1 (en) * 2005-11-09 2007-05-17 Harvey Richard H System and method for writing data to a directory

Cited By (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9811473B2 (en) 2014-04-22 2017-11-07 Nuvoton Technology Corporation Storage unit controller and control method thereof, and storage device
TWI564792B (zh) * 2014-06-24 2017-01-01 宇瞻科技股份有限公司 儲存裝置及其位址對應方法
TWI683252B (zh) * 2014-10-07 2020-01-21 南韓商愛思開海力士有限公司 資料儲存設備及其操作方法
US11010289B2 (en) 2014-10-07 2021-05-18 SK Hynix Inc. Data storage device and operating method thereof
US10199107B2 (en) 2015-02-04 2019-02-05 Silicon Motion, Inc. Data storage device and data refresh method thereof
TWI566094B (zh) * 2015-02-04 2017-01-11 慧榮科技股份有限公司 資料儲存裝置及其資料更新方法
TWI603193B (zh) * 2016-03-31 2017-10-21 慧榮科技股份有限公司 資料儲存裝置及其資料維護方法
US10740013B2 (en) 2016-03-31 2020-08-11 Silicon Motion, Inc. Non-volatile data-storage device with spare block pools using a block clearing method
US10168940B2 (en) 2016-03-31 2019-01-01 Silicon Motion, Inc. Data storage using SLC and TLC memory banks and data maintenance method thereof
CN107291378A (zh) * 2016-03-31 2017-10-24 慧荣科技股份有限公司 数据储存装置及其数据维护方法
US10096357B2 (en) 2016-10-25 2018-10-09 Silicon Motion, Inc. Data storage device and data writing method thereof
TWI626540B (zh) * 2017-03-22 2018-06-11 慧榮科技股份有限公司 一般及垃圾回收的資料存取方法以及使用該方法的裝置
US10503407B2 (en) 2017-09-21 2019-12-10 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory
TWI684098B (zh) * 2017-09-21 2020-02-01 日商東芝記憶體股份有限公司 記憶體系統及控制非揮發性記憶體之控制方法
US11093137B2 (en) 2017-09-21 2021-08-17 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory
US11709597B2 (en) 2017-09-21 2023-07-25 Kioxia Corporation Memory system and method for controlling nonvolatile memory
US10635527B2 (en) 2017-09-28 2020-04-28 Silicon Motion, Inc. Method for processing data stored in a memory device and a data storage device utilizing the same
TWI633428B (zh) * 2017-09-28 2018-08-21 慧榮科技股份有限公司 資料儲存裝置與記憶體裝置之資料處理方法
US10719437B2 (en) 2017-10-27 2020-07-21 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory
US11954043B2 (en) 2017-10-27 2024-04-09 Kioxia Corporation Memory system and method for controlling nonvolatile memory
US10552336B2 (en) 2017-10-27 2020-02-04 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory
US11748256B2 (en) 2017-10-27 2023-09-05 Kioxia Corporation Memory system and method for controlling nonvolatile memory
US11347655B2 (en) 2017-10-27 2022-05-31 Kioxia Corporation Memory system and method for controlling nonvolatile memory
US11416387B2 (en) 2017-10-27 2022-08-16 Kioxia Corporation Memory system and method for controlling nonvolatile memory
TWI674502B (zh) * 2017-10-27 2019-10-11 日商東芝記憶體股份有限公司 記憶體系統及控制方法
US11693568B2 (en) 2018-03-08 2023-07-04 Kioxia Corporation Workload-adaptive overprovisioning in solid state storage drive arrays
TWI740110B (zh) * 2018-03-08 2021-09-21 日商東芝記憶體股份有限公司 在固態儲存驅動器陣列中的工作量適應超容量快取
TWI803940B (zh) * 2018-03-08 2023-06-01 日商東芝記憶體股份有限公司 在固態儲存驅動器陣列中的工作量適應超容量快取
US11188267B2 (en) 2019-05-21 2021-11-30 Silicon Motion, Inc. Method and apparatus and computer program product for handling sudden power off recovery
US11803330B2 (en) 2019-05-21 2023-10-31 Silicon Motion, Inc. Method and apparatus and computer-readable storage medium for handling sudden power off recovery
TWI741296B (zh) * 2019-05-21 2021-10-01 慧榮科技股份有限公司 瞬間斷電回復處理方法及裝置以及電腦程式產品
TWI755830B (zh) * 2020-08-28 2022-02-21 力晶積成電子製造股份有限公司 記憶體的讀取方法
TWI805450B (zh) * 2022-01-11 2023-06-11 慧榮科技股份有限公司 借助侵害位元資訊來進行記憶體裝置的存取控制的方法、記憶體裝置以及記憶體裝置的控制器
US11630590B1 (en) 2022-01-11 2023-04-18 Silicon Motion, Inc. Method and apparatus for performing access control of memory device with aid of aggressor bit information

Also Published As

Publication number Publication date
CN103176752A (zh) 2013-06-26
DE102013106242A1 (de) 2014-04-17

Similar Documents

Publication Publication Date Title
TW201403318A (zh) 具耐用轉換層並能轉移暫存讓記憶體耐磨損的硬碟驅動器
US9547589B2 (en) Endurance translation layer (ETL) and diversion of temp files for reduced flash wear of a super-endurance solid-state drive
US8959280B2 (en) Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
US11036580B2 (en) Metadata hardening and parity accumulation for log-structured arrays
TWI506431B (zh) 虛擬記憶體設備驅動器、用於在主機上執行之虛擬記憶體設備驅動器、刷新快閃記憶體的方法、快閃記憶體刷新的方法、超級增強耐力設備硬碟固體狀態驅動機耐用轉換層之方法、超級增強耐力設備及耐力快閃記憶體檔案系統
US9548108B2 (en) Virtual memory device (VMD) application/driver for enhanced flash endurance
US9489258B2 (en) Green NAND SSD application and driver
US8954654B2 (en) Virtual memory device (VMD) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of temp files to ramdisks for enhanced flash endurance
US9213633B2 (en) Flash translation layer with lower write amplification
US9405621B2 (en) Green eMMC device (GeD) controller with DRAM data persistence, data-type splitting, meta-page grouping, and diversion of temp files for enhanced flash endurance
TWI638263B (zh) 資料備份方法、資料恢復方法以及儲存控制器
KR101562781B1 (ko) 비휘발성 스토리지에 대한 셀프-저널링 및 계층적 일치성
TWI447735B (zh) 記憶體管理與寫入方法及其可複寫式非揮發性記憶體控制器與儲存系統
US20160070474A1 (en) Data-Retention Controller/Driver for Stand-Alone or Hosted Card Reader, Solid-State-Drive (SSD), or Super-Enhanced-Endurance SSD (SEED)
US9146854B2 (en) Restoring storage devices based on flash memories and related circuit, system, and method
US20190294345A1 (en) Data-Retention Controller Using Mapping Tables in a Green Solid-State-Drive (GNSD) for Enhanced Flash Endurance
US20110302477A1 (en) Data Hardening to Compensate for Loss of Data Retention Characteristics in a Non-Volatile Memory
CN109992530A (zh) 一种固态驱动器设备及基于该固态驱动器的数据读写方法
CN109144899B (zh) 用于管理表恢复的方法
US8650436B2 (en) Systems and methods for recovering information from NAND gates array memory systems
TWI517165B (zh) 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
CN105404468B (zh) 绿能与非固态硬盘应用及其驱动器
EP2264602A1 (en) Memory device for managing the recovery of a non volatile memory
TW201908978A (zh) 資料備份方法、資料恢復方法以及儲存控制器
CN107608626B (zh) 一种基于ssd raid阵列的多级缓存及缓存方法