TW202125208A - 固態硬碟及其方法 - Google Patents

固態硬碟及其方法 Download PDF

Info

Publication number
TW202125208A
TW202125208A TW109133859A TW109133859A TW202125208A TW 202125208 A TW202125208 A TW 202125208A TW 109133859 A TW109133859 A TW 109133859A TW 109133859 A TW109133859 A TW 109133859A TW 202125208 A TW202125208 A TW 202125208A
Authority
TW
Taiwan
Prior art keywords
reliability
ssd
entry
state drive
configuration
Prior art date
Application number
TW109133859A
Other languages
English (en)
Other versions
TWI854041B (zh
Inventor
奇亮奭
瑞克哈 皮茲馬尼
Original Assignee
南韓商三星電子股份有限公司
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
Application filed by 南韓商三星電子股份有限公司 filed Critical 南韓商三星電子股份有限公司
Publication of TW202125208A publication Critical patent/TW202125208A/zh
Application granted granted Critical
Publication of TWI854041B publication Critical patent/TWI854041B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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
    • 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
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

揭露一種固態硬碟(SSD)。所述SSD可包括用於接收來自主機上的應用的讀取請求及寫入請求的介面。包括至少一個晶片的儲存器可儲存資料。SSD控制器可處理來自所述應用的所述讀取請求及所述寫入請求。配置模組可配置所述SSD。儲存器可包括可靠性表,所述可靠性表可包括指定所述SSD的配置及該些配置的可靠性的表項。

Description

強化固態式硬碟可靠性
本發明概念大體而言是有關於儲存系統,且更具體而言有關於提供可變可靠性水準的儲存系統。
理想情況下,例如固態硬碟(Solid State Drive,SSD)等儲存裝置將是完美的:所寫入的每個位元均可被無誤地讀取。但現實世界並不完美:儘管SSD製造商盡了最大努力,然而偶爾會出現錯誤。
為幫助消費者,製造商可能會提供對裝置的可靠性的估計。舉例而言,製造商可能報告99.99%的可靠性(或其等效形式:所寫入及/或讀取的每1000個位元中有1位元的平均錯誤率)。(實際上,此種可靠性相對較低:其將暗示幾乎每個寫入至SSD的頁面均有至少一個錯誤。但此種可靠性水準僅作為實例。)
但是此種可靠性與寫入至SSD或自SSD讀取的位元數目有關。自應用的角度來看,此種可靠性可能無法準確地反映資料的可靠性。存在由SSD實行的其他功能可能會影響其真實可靠性。
仍然需要更準確地確定儲存系統的可靠性以及控制儲存系統的可靠性。
現在將詳細參照本發明概念的實施例,所述實施例的實例示出於附圖中。在以下詳細說明中,闡述諸多具體細節以使得能夠透徹地理解本發明概念。然而,應理解,此項技術中具有通常知識者無需該些具體細節即可實踐本發明概念。在其他情形中,未對眾所習知的方法、程序、組件、電路及網路予以詳細闡述,以避免不必要地使實施例的態樣模糊不清。
應理解,儘管本文中可能使用「第一」、「第二」等用語來闡述各種元件,然而該些元件不應受該些用語限制。該些用語僅用於區分各個元件。舉例而言,在不背離本發明概念的範圍的條件下,可將第一模組稱為第二模組,且相似地,可將第二模組稱為第一模組。
本文中在對本發明概念的說明中所使用的術語僅用於闡述具體實施例,而並非旨在限制本發明概念。除非上下文中另外清楚地指明,否則在對本發明概念的說明及隨附申請專利範圍中所使用的單數形式「一(a/an)」及「所述(the)」旨在亦包括複數形式。亦應理解,本文所用用語「及/或(and/or)」指代且囊括相關聯所列項中一或多個項的任意及所有可能組合。更應理解,當在本說明書中使用用語「包括(comprises及/或comprising)」時,是指明所陳述特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或添加。圖式中的組件及特徵未必按比例繪製。
作為由製造商所列出的可靠性如何可能無法準確反映儲存裝置真實可靠性的實例,慮及資料壓縮(data compression)。若固態硬碟(SSD)在寫入資料之前壓縮資料,則經壓縮資料中的單一位元錯誤可能實際上影響原始資料中的多個位元。舉例而言,若資料以2:1的有效比率壓縮(即,所寫入的資料的大小是原始資料的大小的½),則單一位元錯誤可能預期會影響原始資料中的兩個位元,從而事實上使平均錯誤率加倍。或者在最壞的情境中,錯誤可能使SSD不能夠成功解壓縮原始資料,從而導致整個原始資料丟失。
或者慮及資料重複刪除(data deduplication)。在資料重複刪除中,SSD試圖藉由辨識多個檔案中相同的資料塊(或者甚至是多次以相同方式儲存的整個檔案)來提高儲存效率。SSD可儲存僅一個拷貝且自包含所述資料塊的各種檔案引用所述拷貝,而不是儲存資料的多個拷貝。但是,若資料中有錯誤將會被重複,則所述錯誤會變成使用所述資料的每個檔案中的錯誤,從而再次放大錯誤率。舉例而言,若在三個不同的檔案中使用相同的資料,則被重複的資料中的單一錯誤事實上就是三個不同檔案中的三個錯誤。
另外,不同的應用可能各自具有不同的可靠性要求。舉例而言,一個應用可能希望由所述應用寫入的1百萬位元組(MB)中不存在多於1個錯誤,而另一應用可能希望由所述應用寫入的1十億位元組(GB)的資料中不存在多於1個錯誤。儘管應用可能指定此種可靠率(reliability rate)來幫助自可用的不同儲存裝置中進行選擇,然而目前沒有辦法讓單一儲存裝置支援多種不同的可靠性水準。
依據實施方式,SSD可能包括可管理可靠性的多個層級。該些可包括使用錯誤校正碼(Error Correcting Code,ECC)模組(其可檢測及/或校正自記憶體晶片讀取的錯誤)及獨立磁碟冗餘陣列(Redundant Array of Independent Disks,RAID)/抹除編碼(Erasure Coding)實施方式(其中資料可藉由多個通道儲存於多個記憶體晶片上以提供一些冗餘)的記憶體晶片本身(資料實際上儲存於其中),所述記憶體晶片可為例如反及(NAND)快閃記憶體晶片等快閃記憶體晶片、非揮發性記憶體晶片或其他類型的記憶體晶片。
存在使用獨立磁碟冗餘陣列(RAID)或利用抹除編碼來提供錯誤檢測及校正的各種方式。舉例而言,使用RAID 1、RAID 5、RAID 6或支援錯誤校正的任何替代性抹除編碼實施方式。每一實施方式提供不同程度的可靠性。
亦可使用ECC模組,且可實施任何期望的ECC演算法。可提供錯誤檢測及/或錯誤校正的示例演算法包括基本奇偶檢查(basic parity check)、循環冗餘檢查(Cyclic Redundancy Check,CRC)、漢明碼(Hamming Codes)及類似演算法,其均為用於實行錯誤檢測及/或錯誤校正的眾所周知的方案。每一實施方式提供不同程度的可靠性。
最後,NAND快閃記憶體晶片在可靠性方面亦可提供一些選項。舉例而言,慮及單位準胞元(Single-Level Cell,SLC)。SLC可儲存一個資料位元。藉由對所述胞元施加適宜的電壓,SSD可讀取所述位元(即,對所述胞元施加一個電壓,所述胞元可被確定為儲存值「0」,而藉由對所述胞元施加不同的電壓,所述胞元可被確定為儲存值「1」)。多位準胞元(Multi-Level Cell,MLC)儲存兩個資料位元,從而需要多達四個不同的電壓位準來確定儲存於所述胞元中的值;三位準胞元(Triple-Level Cell,TLC)儲存多達三個資料位元,從而需要多達八個不同的電壓位準來確定儲存於所述胞元中的值;並且四位準胞元(Quad-Level Cell,QLC)儲存多達四個位元,從而需要多達16個不同的電壓位準來確定儲存於所述胞元中的值。
隨著儲存於胞元中的位元數目增加,分隔不同可能儲存值的電壓範圍的寬度變小。因此,相較於SLC將由於處理所施加電壓造成的錯誤而返回錯誤的可能性,QLC將更有可能返回此種錯誤(對於MLC及TLC亦是如此)。另外,隨著胞元所儲存的位元數目增加,所述胞元傾向於支援更少的寫入。因此,SLC可支援多達100,000次資料寫入,而QLC可僅支援多達100次資料寫入(在此之後,寫入資料時更有可能出現錯誤)。(另外,由於必須施加至胞元以確定其值的電壓的數目隨著儲存於胞元中的位元數目的增加而增加,因此自來自QLC的胞元讀取資料可能較自來自SLC的胞元讀取資料花費更長的時間)。
由於儲存於胞元中的位元數目與由於輸入電壓的不正確處理而導致錯誤的可能性之間存在關係,因此可合理地得出結論:QLC較其他胞元類型更有可能經歷此種錯誤(或者作為另一選擇,QLC是最不可靠的胞元類型),而SLC最不可能經歷此種錯誤(或者更可靠)。當然,除非NAND快閃記憶體晶片提供兩種類型的胞元,否則不可能以期望的胞元類型儲存資料來達成特定的可靠性。但是可使用胞元來儲存較其所能夠儲存的位元更少的位元,從而增加所述胞元的可靠性。
慮及QLC類型。若QLC儲存4個資料位元,則其可靠性如所宣傳的一樣。但是若QLC儲存(比方說)僅一個位元(讓其他三個位元具有默認值或「不關心(don’t care)」值),則QLC事實上是在模仿SLC。可能由於區分「不關心」位元的值的電壓處理錯誤而引入的錯誤變得無關緊要:事實上需要施加僅兩個輸入電壓來確定胞元中的值。(本發明概念的實施例不暗示QLC可被實施為潛在地儲存及讀取僅一個位元,而是可忽略所返回的與「不關心」位元有關的資訊以及可能與所述資訊有關的任何錯誤。本發明概念的實施例亦不暗示在QLC中一次儲存僅一個位元可能導致QLC支援增加數目的寫入操作。)因此,若QLC僅儲存一個位元,則錯誤率可降低,從而強化可靠性。用於儲存較設計少的位元的任何胞元類型均將如此:因此,QLC可模仿TLC、MLC或SLC,TLC可模仿MLC或SLC,且MLC可模仿SLC,其中所有者的可靠性均有所增加。(應注意,不可能反過來:即使胞元類型的可靠性降低,其亦均不可儲存多於所指定的資訊位元數目。)
當儲存少於四個位元時,可採用QLC並對其進行經驗測試,以確定其可靠性如何:對於TLC及MLC亦是如此。除寫入至QLC的資料量之外,此種測試與測試QLC(或其他胞元類型)以確定其正常可靠性的方式將沒有不同。因此,對於每一胞元類型,當儲存任意數目的位元時,甚至當少於所述胞元所支援的最大數目時,亦可確定可靠性。
對於RAID/抹除編碼及ECC模組,存在可估計其可靠性的數學模型,或者可靠性可藉由實際使用以經驗確定(很像可確定各別胞元類型的可靠性的方式)。
誠然,SSD的各種層級處的錯誤校正方案並不完全彼此獨立。即,若RAID實施方式及ECC模組的錯誤率是10-10 ,且使用QLC儲存僅一個位元具有錯誤率10-10 ,則所有三者結合使用將不會產生為10-30 (各別錯誤率的乘積)的錯誤率。但是各種層級處的解決方案至少部分是互補的:在SSD的多於一個層級處使用錯誤校正方案的組合所可提供的可靠率超出任何各別層級所可孤立提供的可靠率。
在製造SSD裝置時,可測試各種層級處的每一錯誤校正組合的可靠性,且確定任何各別組合的總體可靠性。因此,舉例而言,若NAND快閃記憶體包括QLC,則將存在四種可能的變型(使用QLC來儲存四個位元、三個位元、兩個位元或一個位元),若ECC提供三種不同的錯誤校正方案且RAID/抹除編碼實施方式提供10種不同的錯誤校正變型,則總共將存在120種不同的組合(4×3×10 = 120)。製造商可測試每一此種組合,且確定每一組合的各別可靠性。然後,此資訊可儲存於SSD內的儲存器中:例如,在配置模組內。配置模組亦可負責在各種層級處選擇適宜的錯誤校正組合,以達成期望可靠性。
在本發明概念的一些實施例中,應用可指定欲應用於其資料的可靠性。舉例而言,一些應用可能要求資料高度可靠,而其他應用可能不太關心資料是否丟失(例如對於臨時資料或丟失後易於重建的資料)。在給定應用的指定可靠性的條件下,配置模組可使用各種錯誤校正組合的可靠率來配置SSD以達成應用資料的目標可靠性。應注意,若多個應用正在向同一SSD寫入資料,則配置模組可將整個SSD配置成以所述應用中的任一者所需的最高可靠性進行操作,或者配置模組可將SSD的不同區域配置成以不同的可靠性水準進行操作。舉例而言,在不改變RAID或ECC實施方式的條件下,SSD可針對需要較高可靠性的資料在QLC中儲存僅一個位元,且可針對容忍較低可靠性的資料在QLC中儲存四個位元。應注意,本發明概念的實施例可支援管理任何以下期望的資料單元處的可靠性:頁面、區塊、平面、晶粒、晶片或在整個SSD之上。
在本發明概念的其他實施例中,應用可簡單地提供資料,而不是亦提供對資料的可靠性要求。在本發明概念的此種實施例中,且更具體而言在本發明概念的其中SSD可使用壓縮、資料重複刪除或可能影響可靠性的任何其他交易的實施例中,SSD可追蹤任何特定資料單元的有效可靠性是什麼。因此,若應用的原始資料正在被壓縮,則SSD可追蹤資料的有效壓縮比率,其可用於確定錯誤率的乘數。或者,若SSD使用資料重複刪除,則SSD可追蹤有多少檔案正在共享特定的資料單元,其(同樣)可用於確定錯誤率的乘數。然後,為確保達成所宣傳可靠性,配置模組可結合各種錯誤校正組合的可靠率來使用此種資訊,以選擇提供所宣傳可靠性的適宜組合(慮及錯誤如何基於SSD的操作而成倍增加)。
應注意,可靠性不是選擇錯誤校正組合以達成目標可靠性時要慮及的唯一變數(儘管其可能是主要變數)。若可靠性自身便是唯一的考慮因素,則SSD可被簡單地配置成使用提供最高可靠性的錯誤校正組合且以此結束:可能無法達成更高的可靠性。但是各種錯誤校正組合亦具有其他影響。該些其他影響包括空間費用(space overhead)及效能。舉例而言,若QLC用於儲存僅一個資訊位元,則QLC以較高的可靠性進行操作,但儲存方面的效率僅為¼(乃因QLC可儲存多達四個位元)。效能亦是一個考慮因素:不同的錯誤校正組合可能需要更多的時間來處理資料,此可能影響SSD的潛時(latency)。
因此,慮及其他考慮因素,配置模組可選擇使用哪一錯誤校正組合來配置提供目標可靠率的SSD。舉例而言,若將空間費用視為重要因素,則讓QLC儲存四個資料位元(更多地依賴於ECC模組或RAID/抹除編碼)的錯誤校正組合可能優於在QLC中儲存僅一個位元的錯誤校正組合。作為另一選擇,若效能是較空間費用更大的問題,則可能偏好使用較少依賴於ECC模組及/或RAID/抹除編碼來校正資料的錯誤校正組合(即使此意味著QLC儲存僅一個資料位元)。
圖1示出根據本發明概念實施例的包括客戶端及伺服器的系統,所述伺服器包括固態硬碟(SSD)。在圖1中,客戶端105-1及105-2被示為藉由網路115與伺服器110進行通訊。客戶端105-1及105-2與伺服器110可為客戶端-伺服器關係:客戶端105-1及105-2可發出命令,且伺服器110可執行該些命令。作為另一選擇,伺服器110可為由最終使用者直接使用的電腦,從而避免客戶端105-1及105-2的參與。
網路115可為任何一或多種網路。舉例而言,網路115可包括區域網路(Local Area Network,LAN)、廣域網路(Wide Area Network,WAN)、城域網路(Metropolitan Area Network,MAN)或例如網際網路等全域網路以及其他可能性。資料可直接在網路115上發送,或者其可受到保護:例如,使用加密或虛擬專用網路(Virtual Private Network,VPN)。網路115可包括有線連接或無線連接。另外,網路115可包括該些替代方案的任何期望的組合。舉例而言,客戶端105-1及105-2可藉由無線連接連接至LAN,所述LAN又轉而藉由有線連接連接至網際網路,所述網際網路又轉而連接至伺服器110所連接至的另一LAN。客戶端105-1及105-2與伺服器110之間的連接可有所變化:連接不必在所有情況下均相同。
伺服器110可包括處理器120、記憶體125及固態硬碟(SSD)130。處理器120可包括軟體堆疊,所述軟體堆疊包括作業系統、應用、儲存軟體(例如檔案系統)及管理附接至伺服器110的裝置(例如記憶體125及SSD 130)的控制器軟體。處理器120可為任何種類的處理器:例如,英特爾至強(Intel Xeon)、賽揚(Celeron)、安騰(Itanium)或淩動(Atom)處理器、高級微型裝置(Advanced Micro Devices,AMD)皓龍處理器、高級精簡指令集計算機器(Advanced RISC Machine,ARM)處理器等。儘管圖1示出單一處理器120,然而伺服器110可包括任何數目的處理器,所述處理器中的每一者可為單核或多核處理器,且可以任何期望的組合進行混合。
記憶體125可為伺服器110中使用的傳統記憶體。記憶體125可為任何種類的記憶體,例如快閃記憶體、動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)、靜態隨機存取記憶體(Static Random Access Memory,SRAM)、持久隨機存取記憶體(Persistent Random Access Memory)、鐵電式隨機存取記憶體(Ferroelectric Random Access Memory,FRAM)或例如磁阻式隨機存取記憶體(Magnetoresistive Random Access Memory,MRAM)等非揮發性隨機存取記憶體(Non-Volatile Random Access Memory,NVRAM)。記憶體125可為揮發性記憶體或非揮發性記憶體。記憶體125亦可為不同記憶體類型的任何期望的組合。記憶體125可由記憶體控制器(圖1中未示出)管理,記憶體控制器可為伺服器110中具有驅動器的作為軟體堆疊一部分的單獨的組件。記憶體125可用於儲存可被稱為「短期」的資料(即,預期不會被儲存延長的時間週期的資料)。短期資料的實例可包括臨時檔案、應用在本地使用的資料(其可能拷貝自其他儲存位置)及類似物。
處理器120及記憶體125亦可支援可在其下運行各種應用的作業系統。該些應用可發出自記憶體125或SSD 130讀取資料或向其寫入資料的請求。儘管記憶體125可用於儲存可被稱為「短期」的資料,然而SSD 130可為用於儲存被視為「長期」的資料(即,預期被儲存延長的時間週期的資料)的儲存裝置。SSD 130可使用在處理器120上運行的軟體堆疊中的控制器軟體來存取。儘管圖1示出僅一個SSD 130,然而本發明概念的實施例可包括任何類型的儲存裝置,且藉由任何期望的連接進行連接。因此,SSD 130可用串列高級技術附接(Serial AT Attachment,SATA)硬碟驅動機、乙太網路SSD或任何其他類型的儲存裝置來替換。此外,本發明概念的實施例可包括任何數目(零或更多個)的儲存裝置,且每一儲存裝置可為任何期望的類型:因此,多個不同類型的儲存裝置可在伺服器110中進行混合。
圖2示出圖1所示伺服器110的細節。在圖2中,通常,伺服器110可包括一或多個處理器120,所述一或多個處理器120可包括可用於協調機器組件的操作的記憶體控制器205及時鐘210。處理器120亦可耦合至記憶體125,作為實例,記憶體125可包括隨機存取記憶體(random access memory,RAM)、唯讀記憶體(read-only memory,ROM)或其他狀態保持媒體。處理器120亦可耦合至儲存裝置130及網路連接件215,網路連接件215可為例如乙太網路連接件或無線連接件。處理器120亦可連接至匯流排220,匯流排220可附接有使用者介面225及可使用輸入/輸出引擎230來管理的輸入/輸出介面埠以及其他組件。
圖3示出圖1所示SSD 130的細節。在圖3中,SSD 130可包括主機介面邏輯(host interface logic,HIL)305、SSD控制器310及可被組織至各種通道320-1至320-4中的各種記憶體晶片315-1至315-8(亦稱為「記憶體儲存器」)。主機介面邏輯305可管理SSD 130與其他組件(例如圖1所示處理器120或其他SSD)之間的通訊。該些通訊可包括自SSD 130讀取資料的讀取請求及向SSD 130寫入資料的寫入請求。主機介面邏輯305可管理僅單一埠上的介面,或者其可管理多個埠上的介面。作為另一選擇,SSD 130可包括多個埠,所述多個埠中的每一者可具有單獨的主機介面邏輯305來管理所述埠上的介面。本發明概念的實施例亦可混合所述可能性(例如,具有三個埠的SSD可具有一個主機介面邏輯來管理一個埠且具有第二主機介面邏輯來管理其他兩個埠)。
SSD控制器310可使用記憶體控制器(圖3中未示出)來管理記憶體晶片315-1至315-8上的讀取及寫入操作以及垃圾收集及其他操作。儘管本發明概念的實施例可擴展至例如非揮發性RAM(NVRAM)等其他儲存系統,然而記憶體晶片315-1至315-8可為任何種類的記憶體晶片,例如NAND快閃記憶體晶片或其他非揮發性記憶體晶片。
SSD控制器310可包括轉譯層325、錯誤校正碼模組330、RAID/抹除編碼模組335、配置模組340及可靠性表儲存器345。轉譯層325可管理自在圖1所示處理器120上運行的應用所使用的邏輯區塊位址(logical block address,LBA)至資料實際儲存於SSD 130上的物理區塊位址(physical block address,PBA)的映射。藉由使用轉譯層325(在本發明概念的一些實施例中,轉譯層325可被稱為快閃轉譯層325),SSD 130可在記憶體晶片315-1至315-8上四處移動資料,而不必讓應用跟上資料當前駐留的位置(例如,當應用請求用新值重寫資料時(SSD一般不支援就地重寫資料,且因此將新資料儲存於新位置),或者當包含一些有效資料的區塊經歷垃圾收集時,可能發生此種情況)。轉譯層325可被實施為儲存於SSD 130內某處的某一(較佳地)非揮發性儲存器中的表。
錯誤校正碼(ECC)模組330可將錯誤校正碼應用於欲寫入至記憶體晶片315-1至315-8的資料。在本發明概念的一些實施例中,ECC模組330可應用於所述資料,而不管哪一記憶體晶片315-1至315-8將儲存所述資料;在其他實施例中,每一通道320-1至320-4(或每一記憶體晶片315-1至315-8)可具有其自己的ECC模組330。ECC模組330可實施任何期望的錯誤校正演算法,且因此可支援對任何數目的錯誤(依據所實施的演算法)的檢測及/或校正。ECC模組330可使用的示例性演算法包括例如奇偶檢查碼、循環冗餘檢查(CRC)碼或漢明碼。ECC模組330可使用執行適宜指令的通用處理器來實施,或者使用現場可程式化閘陣列(Field Programmable Gate Array,FPGA)、特殊專用積體電路(Application-Specific Integrated Circuit,ASIC)、圖形處理單元(Graphics Processing Unit,GPU)或任何其他期望的實施方式來實施。
RAID/抹除編碼模組335可實施任何期望的RAID或抹除編碼方案,以在記憶體晶片315-1至315-8上儲存資料。(由於獨立磁碟冗餘陣列(或RAID)闡述抹除編碼的一組特定實施方式,因此RAID/抹除編碼模組335可被更一般地闡述為功能性不降低的抹除編碼模組。)一般而言,RAID/抹除編碼模組335可獲取欲寫入於SSD 130上的資料,將所述資料劃分成各種單元,且將該些單元儲存於不同的記憶體晶片315-1至315-8上。為引入冗餘,相同的資料可儲存於多個記憶體晶片315-1至315-8上,或者可使用錯誤校正資訊(例如奇偶檢查碼、CRC碼或漢明碼)。藉由此種方式,可檢測及校正錯誤。(應注意,在RAID/抹除編碼模組335與ECC模組330二者中可使用相同的基本方式,但是規模不同:因此解決方案可彼此補充。)抹除編碼模組335可使用執行適宜指令的通用處理器來實施,或者使用FPGA、ASIC、GPU或任何其他期望的實施方式來實施。
配置模組340可用於對欲使用何種技術來提高可靠性進行程式化。儘管人們可能對可如何使用不同的可靠性技術而感到困惑,然而答案是簡單的。ECC模組330及RAID/抹除編碼模組335可為各自具有(潛在地)不同可靠率的不同的錯誤校正技術提供支援。配置模組340可用於指令ECC模組330及/或RAID/抹除編碼模組335在給定時間可使用哪一錯誤校正技術。
但是此答案引出一個後續問題:若存在提供不同程度的可靠性的不同的錯誤校正技術,為何不總是使用最可靠的方式?答案是不同的技術可能對SSD 130的操作有其他影響,此可能抵消較大可靠性的益處。舉例而言,慮及相同的資料可能儲存於記憶體晶片315-1至315-8中的每一者中的可能性。此種方式引入資料的八重複製,且單一記憶體晶片的故障將不會導致資料丟失。此種方式的缺點是,由於相同的資料被儲存八次,因此SSD 130的總可用儲存空間不大於單一記憶體晶片的儲存空間。換言之,SSD 130提供的總可用儲存空間將僅為SSD 130提供的實際儲存空間的八分之一,或者作為另一選擇,87.5%的可用儲存空間被保留用於資料的冗餘拷貝。若資料非常敏感而需要八重複製,則此代價可為可接受的;但是對於大部分使用者而言,此種冗餘是過分的,且可用儲存空間的減少是不可接受的。
因此,配置模組340可用於指令(或程式化,或配置:但凡可為較佳的用語)ECC模組330及RAID/抹除編碼模組335使用來自由ECC模組330及RAID/抹除編碼模組335提供的技術中的特定技術。
除ECC模組330及RAID/抹除編碼模組335之外,亦存在可由配置模組340配置的其他組件:具體而言是記憶體晶片315-1至315-8。不同的記憶體晶片可提供不同的方式來儲存資料,此可能影響記憶體晶片的可靠性。要理解此一事實,理解不同類型的記憶體儲存器是重要的。
記憶體依據正在發生的情況以不同的粒度水準管理資料。舉例而言,讀取及寫入資料的基本存取單元是頁面(其可為任何期望的大小:例如,4千位元組(KB)的資料)。若頁面空閒,則可被寫入。但是,當新資料替換舊資料時,頁面可能不會被覆寫:在此種情況下,原始頁面可能被標記為無效,且新資料被寫入至新頁面。頁面被組織成稱為區塊的組:例如,區塊可具有64或128個頁面。區塊(或作為一組區塊的超級區塊(superblock))通常是用於抹除資料的單元(其將頁面返回至空閒狀態以便重新寫入)。因此,若在已被選擇用於抹除的區塊中存在任何有效資料,則在抹除所述區塊之前,應將有效資料自所述區塊中拷貝出來(以免在抹除所述區塊時丟失有效資料)。
但是即使在更精細的水準進行,資料儲存亦存在變化。稱為胞元的各別單元以較頁面更精細的粒度儲存資料。(各別胞元可能無法直接存取:整個頁面可能作為一個單元進行讀取或寫入。)每一胞元被設計成當施加不同的電壓時作出響應:該些不同的響應可用於讀取(或寫入)胞元的值。
在最簡單的形式中,胞元具有其中所述胞元的響應發生變化的單一觸發電壓(其可被視為分界點)。即,施加低於所述觸發電壓的電壓,且響應將不同於施加高於所述觸發電壓的電壓的情形。因此,舉例而言,若輸入電壓可能介於0伏(V)至5伏之間的任意位置,則2.5伏可能是胞元可開始作出響應的點。(胞元如何作出響應可能取決於胞元中所儲存的值。舉例而言,若所述胞元表示二進制值0,則所述胞元可輸出一個電壓,而若所述胞元表示二進制值1,則所述胞元可輸出另一電壓。)僅儲存單一位元的胞元有時被稱為單位準胞元(SLC)。
多位準胞元(MLC)指代儲存多於一個位元的胞元。儘管「多」可被理解為意指「二或更多個」,然而在實踐中,MLC通常可儲存兩個位元,而三位準胞元(TLC)可儲存三個位元,四位準胞元(QLC)可儲存四個位元,依此類推。由於MLC(以及所有其他儲存多於一個位元的胞元類型)儲存多個位元,因此MLC具有多個觸發電壓。舉例而言,若輸入電壓可能介於0伏至5伏之間的任何位置,則MLC可能具有1伏、2伏、3伏及4伏的觸發電壓。依據觸發電壓,快閃記憶體晶片可確定儲存於胞元中的實際值。因此,舉例而言,若觸發電壓是1伏,則胞元可儲存值00;若觸發電壓為2伏,則胞元可儲存值01;若觸發電壓是3伏,則胞元可儲存值10;若觸發電壓為4伏,則胞元可儲存值11。
各種胞元類型具有不同的優點/缺點。顯然,每一胞元儲存多於一個資訊位元的能力意味著需要更少的胞元來儲存相同資料量。因此,若資料儲存於SLC中,則所需要的SLC較儲存相同資料量所將需要的MLC、TLC或QLC多。儘管儲存更多位元的各別胞元傾向於較儲存更少位元的胞元更昂貴,然而增加的成本可藉由需要更少的此種胞元來抵消。因此,對於儲存相同的資料量,一般而言,QLC可能較TLC便宜,TLC可能較MLC便宜,MLC可能較SLC便宜。
但是存在可抵消成本的其他因素。首先,由於SSD必須針對多個不同的電壓來測試胞元以確定儲存於胞元中的值,因此需要實行的此種測試越多,則可能會降低胞元的效能。舉例而言,慮及QLC。由於QLC儲存四個資料位元,因此QLC可取16個可能值中的任一者。因此,讀取QLC可能需要針對16個可能的觸發電壓來測試QLC,此較針對兩個觸發電壓來測試胞元所花費的時間更長。因此,QLC的讀取可能較TLC慢,TLC的讀取可能較MLC慢,MLC可能較SLC慢。另外,胞元可儲存的位元越多,則胞元壽命中的程式化/抹除循環的數目越少。舉例而言,在胞元可能發生故障之前,SLC可保證100,000次程式化/抹除操作,而對於MLC,所述數目可下降至10,000次,對於TLC,所述數目可下降至1,000次,且對於QLC,所述數目可下降至100次。因此,不同類型的胞元可更佳地用於不同的儲存設定檔(storage profile):QLC可更佳地用於儲存幾乎從不改變的資料,而SLC可用於以相對頻率改變的資料。
胞元類型的最後一個缺點又與儲存更高密度資料的胞元所需的觸發電壓的數目有關。觸發電壓的數目越大,則該些觸發電壓可彼此越靠近地間隔開。但是,觸發電壓彼此越靠近,則胞元越容易受到潛在錯誤的影響。舉例而言,慮及QLC。由於QLC可儲存四個資料位元,因此QLC中存在16個可能值。區分16個可能值可能需要16個觸發電壓,此意味著觸發電壓之間的間隙可能略大於0.25伏。胞元將不需要電壓大幅下降或激增便會認為其正在對與實際預期的電壓不同的電壓作出響應,此意味著QLC可能會對讀取胞元的嘗試作出不正確的響應。(儘管由於所要慮及的觸發電壓更少而導致錯誤餘裕更大,然而此種相同的分析亦適用於MLC及TLC胞元類型。)
因此,返回至可靠性的問題上來,QLC可能儲存較高的資料密度,但代價是錯誤餘裕減小。但是,僅由於QLC(或任何儲存二或更多個資料位元的胞元類型) 儲存多個位元,並不意味著QLC必須 儲存多個位元。此種QLC可用於儲存少於四個資料位元,其中在讀取操作中忽略指派至QLC中的其他位元的任何值。藉由在QLC中儲存更少的位元,觸發電壓的有效數目減少,此可能加寬錯誤餘裕。(應注意,QLC可能仍然被硬佈線以針對所有16個觸發電壓進行測試;僅降低了錯誤的可能性,而沒有降低存取胞元所需的時間。)
舉例而言,假設QLC被用來儲存僅一個資料位元。此值(無論其為0還是1)可儲存於QLC的所述四個位元中的任一者中,而其他位元事實上被SSD忽略(即,在胞元被寫入時,該些位元可被指派任何任意值,且可忽略自該些位元讀取的任何值,且僅返回相關的位元)。由於QLC現在事實上具有僅一個觸發電壓,因此胞元被不正確地寫入或讀取(例如,由於電壓波動)的可能性降低。
因此,亦可藉由改變甚至快閃記憶體晶片315-1至315-8的操作行為來影響SSD的可靠性。但是要慮及幾個注意事項。首先,SSD的可靠性是否可能受到改變快閃記憶體晶片315-1至315-8的操作行為的影響取決於快閃記憶體晶片315-1至315-8中所使用的胞元類型。胞元的資料密度越高,則影響SSD的可靠性的選項越多。舉例而言,SLC僅儲存一個資料位元,因此僅使用SLC的SSD的可靠性可能無法藉由改變SLC的操作行為來提高。
此外,上述提高僅在一個方面上起作用。能夠儲存較高密度資料的胞元可用於藉由忽略所述胞元中的一些位元來儲存較低密度資料。但是,不可能藉由試圖在胞元中儲存較所述胞元所可儲存的位元 的位元來降低SSD的可靠性。舉例而言,由於SLC可僅儲存一個資料位元,因此不可能在SLC中儲存兩個位元(不考慮可容忍的可靠性降低)。(當然,所儲存的位元少於其所能夠儲存的位元的胞元可增加其資料密度,前提是所述增加不超出所述胞元的能力。因此,舉例而言,能夠儲存四個位元但當前儲存僅兩個位元的QLC可將其資料密度增加至三個位元或四個位元,而不是五個位元。)
其次,與使用快閃記憶體晶片315-1至315-8一起儲存相同的資料一樣,在胞元中儲存較其所能夠儲存的位元少的位元可能導致SSD中的可用儲存空間更少。舉例而言,慮及使用QLC胞元且具有為1萬億位元組(TB)的總可用儲存容量的SSD。若QLC用於每胞元儲存僅一個位元,則SSD具有僅為256十億位元組(總可用儲存容量的25%)的有效容量:其餘的768十億位元組儲存空間「丟失」於QLC的未使用位元中。
另一方面,不同的快閃記憶體晶片可被配置成達成不同的總體可靠性。因此,舉例而言,假設快閃記憶體晶片315-1至315-8均使用QLC胞元。快閃記憶體晶片315-1可被配置成在每一胞元中儲存僅一個位元,從而以減少可用儲存空間為代價來提供增加的可靠性。另一方面,快閃記憶體晶片315-2可被配置成在每一胞元中儲存四個位元,從而以較低的可靠性為代價提供最大的可用儲存空間。
配置模組340可使用執行適宜指令的通用處理器來實施,或者使用FPGA、ASIC、GPU或任何其他期望的實施方式來實施。在圖3中,ECC模組330、RAID/抹除編碼模組335及配置模組340被示為不同的組件。由於該些組件可單獨製造且安裝於SSD 130中,因此其可作為單獨的組件來實施。另外,該些組件可實際上駐留於在物理上不同的位置。舉例而言,如上文且下文進一步參照圖5所論述,ECC模組330可應用於各別的通道(但是應用於多個記憶體晶片),而RAID/抹除編碼模組335可應用於多個通道上。在此種配置中,ECC模組330、RAID/抹除編碼模組335及配置模組340中的任一者可能不可能使用公用硬體來實施。但是在本發明概念的一些實施例中,該些組件中的任一者或所有者均可使用公用硬體來實施。
以上論述著重於配置模組340可進行何種操作來配置記憶體晶片315-1至315-8、ECC模組330及RAID/抹除編碼模組335,但是尚未給出對於什麼將觸發配置模組340來實行此種操作的解釋。以下圖5至圖6論述什麼可能觸發配置模組340來實行其操作。
最後,為支援配置模組340,SSD 130可包括可靠性表儲存器345。可靠性表儲存器345可儲存可靠性表。此可靠性表可提供關於由記憶體晶片315-1至315-8、ECC模組330及RAID/抹除編碼模組335使用的各種方案組合所提供的可靠性的資訊。
圖4示出圖1所示SSD 130的可靠性表。在圖4中,示出可靠性表405。可靠性表405包括各種行,例如儲存方案410、ECC方案415及抹除編碼方案420。儲存方案410、ECC方案415及抹除編碼方案420共同形成配置425:即,對於可靠性表405中的給定表項,儲存方案410、ECC方案415及抹除編碼方案420指定可如何配置圖3所示記憶體晶片315-1至315-8、圖3所示ECC模組330及圖3所示RAID/抹除編碼模組335。其他行可包括可靠性470(其可指定給定配置的總體可靠性)、空間費用430(其可指定由於使用特定配置而引起的任何空間限制)及效能435(其可指定由於使用特定配置而引起的任何效能限制)。若可靠性自身便是如何配置圖1所示SSD 130的主要考慮因素,則可自可靠性表405省略空間費用430及效能435。
可靠性表405可包括圖1所示SSD 130的每一可能配置的表項。舉例而言,圖4將可靠性表示為包括六個表項440、445、450、455、460及465。每一表項表示圖1所示SSD 130的不同可能配置。因此,舉例而言,表項440辨識對圖3所示記憶體晶片315-1至315-8使用儲存方案1、對圖3所示ECC模組330使用ECC方案1且對圖3所示RAID/抹除編碼模組335使用抹除編碼方案1的配置的可靠性。對於此種配置,總體可靠性是所寫入或讀取的1012 個位元中有1個錯誤。此種配置亦未強加空間費用或效能費用(表項440可表示例如圖1所示SSD 130的預設配置,在此種情形中,表項440的可靠率可為圖1所示SSD 130的所宣傳可靠率)。相比之下,表項445表示對圖3所示記憶體晶片315-1至315-8使用儲存方案2、對圖3所示ECC模組330使用ECC方案1且對圖3所示RAID/抹除編碼模組335使用抹除編碼方案1的配置。此種配置具有所寫入或讀取的1014 個位元中有1個錯誤的可靠率,但在圖1所示SSD 130的可用儲存容量中強加50%的降低(但是沒有效能費用)。舉例而言,表項445可表示以下配置:在所述配置中,資料被寫入至兩個不同的記憶體晶片以用於冗餘,此提高了SSD 130的總體可靠性,但代價是減少了可用儲存量。
表項450及455相似於表項440及445,但圖3所示ECC模組330使用ECC方案2。如可看出,該些配置分別具有1016 個位元中有1個錯誤的可靠率及1018 個位元中有1個錯誤的可靠率:相較於表項440及445中所示的配置提高了104 。但是由於ECC方案2可能需要較ECC方案1多的計算資源,因此由表項450及455表示的配置可能強加25%的效能命中(即,圖1所示SSD 130可能需要較由表項440及445表示的配置多25%的時間來使用由表項450及455表示的配置來處理讀取及/或寫入請求)。
表項460及465相似於表項440及445,但圖3所示RAID/抹除編碼模組335使用抹除編碼方案2。如可看出,該些配置分別具有1014 個位元中有1個錯誤的可靠率及1017 個位元中有1個錯誤的可靠率,此表示大10至100倍的可靠性。但是由於抹除編碼方案2可能需要較抹除編碼方案1多的計算資源,因此由表項460及465表示的配置可能強加10%的效能命中(即,圖1所示SSD 130可能需要較由表項440及445表示的配置多10%的時間來使用由表項460及465表示的配置來處理讀取及/或寫入請求)。
應注意,僅由抹除編碼方案2提供的提高對於由表項460及465表示的配置二者而言並不相同。表項460及465表示以下事實:儘管針對圖1所示SSD 130的不同組件來組合不同的方案可相對於僅一個組件提供任何可靠性的情形提供提高,然而針對不同組件來組合方案的益處亦並不完全正交。換言之,使用多個組件的可靠性選項可能優於使用單一組件的可靠性選項,但所述兩個組件的可靠率可能無法簡單地相乘於一起來確定當所述兩個組件均用於強化可靠性時的可靠率。因此,舉例而言,即使在圖3所示記憶體晶片315-1至315-8、圖3所示ECC模組330及圖3所示RAID/抹除編碼模組335中存在提供所讀取或寫入的1010 個位元中有1個錯誤的錯誤率的特定方案,一起使用所有三種方案亦未必導致所讀取或寫入的1030 個位元中有1個位元的錯誤率。
因此,若方案組合的可靠率可能無法被計算為單獨方案的可靠率的乘積,則可如何為可靠性表405中的表項確定特定配置的可靠率?答案是讓圖1所示SSD 130的製造商單獨測試每種可能的配置。即,各種SSD可被配置成使用每一可能的配置組合。然後可對該些SSD進行測試,以瞭解其相應的錯誤率(以及空間費用及效能費用)為多少。然後,可將此種資訊儲存於根據相同規範製造的所有SSD的可靠性表405中。
另外,儘管圖4僅示出使用圖3所示記憶體晶片315-1至315-8、圖3所示ECC模組330及圖3所示RAID/抹除編碼模組335中的每一者的不同可靠性方案的組合,然而可靠性表405亦可用於示出各別方案的可靠率(以及空間及效能費用(若期望))。舉例而言,可靠性表405可包括針對用於圖3所示記憶體晶片315-1至315-8的儲存方案1及2的表項,而沒有用於圖3所示ECC模組330或圖3所示RAID/抹除編碼模組335的相關聯方案:在此種情形中,該些表項可分別表示使用儲存方案1及2(而不添加來自圖3所示ECC模組330或圖3所示RAID/抹除編碼模組335的任何可靠性強化)的可靠率。相似地,可靠性表405可包括僅針對ECC方案1及2的表項及/或針對抹除編碼方案1及2的表項。
可靠性表405可沿多個軸搜尋。舉例而言,可靠性表405可用於確定特定配置的可靠性(及其他後果,例如空間費用及/或效能)。可靠性表405亦可用於確定支援特定可靠性的配置。即,在給定特定期望可靠率的條件下,可搜尋可靠性表405以找到提供所述可靠率(或優越的可靠率)的特定配置。
若多個配置可提供期望的可靠率(或優越的可靠率),則圖3所示配置模組340可使用任何期望的方式在選項中進行選擇。舉例而言,圖3所示配置模組340可選擇提供最高可靠率或者滿足或超出期望可靠率的最低可靠率的配置。或者,圖3所示配置模組340可使用所述配置的空間費用及/或效能後果(若包括於可靠性表405中)來選擇提供充足的可靠率且其他後果最少的配置。圖3所示配置模組340亦可使用任何其他期望的技術來自提供充足的可靠性的多種配置中進行選擇。
為幫助辨識可靠性表405中的特定組合,可靠性表405亦可包括辨識符475。辨識符475可為指派至可靠性表405中的每一表項的唯一辨識符。因此,舉例而言,表項440可被指派辨識符「1」,表項445可被指派辨識符「2」,依此類推。應注意,並不要求辨識符475是數字的或順序的。舉例而言,辨識符475可為隨機字串、或表項中所示資訊的散列或者任何其他期望的辨識符。唯一有用的要素是辨識符475可為唯一的,以使得可使用給定的辨識符來定位可靠性表405中的唯一表項。
返回至圖3,儘管圖3示出SSD 130包括組織至四個通道320-1至320-4中的八個記憶體晶片315-1至315-8,然而本發明概念的實施例可支援組織至任何數目的通道中的任何數目的記憶體晶片。相似地,儘管圖3示出SSD的結構,然而其他儲存裝置(例如,硬碟驅動機)可使用不同的結構來實施,但是具有相似的潛在益處。
圖5示出圖1所示SSD 130的替代圖。在圖5中,SSD 130被示為包括可分別沿包括記憶體晶片315-1、315-3及315-5的通道320-1、320-2及320-3進行操作的RAID/抹除編碼模組335、ECC模組330-1、330-2及330-3。因此,資料可使用RAID或抹除編碼來組織,以儲存於多個記憶體晶片上,所述多個記憶體晶片中的每一者可位於不同(或相同)的通道上。
資料可自應用505-1及505-2(儘管可存在任何數目(一或多個)的應用)接收。每一應用可具有其自己的期望可靠性510-1及510-2。每一應用的期望可靠性表示所述應用所期望的可靠率。應注意,期望可靠性510-1及510-2不必一致:每一應用可能預期不同的可靠率。
每一應用505-1及505-2可分別具有其自己的相關聯的名稱空間515-1及515-2。名稱空間515-1及515-2提供組織自每一應用新進的資料以使其可被容易地辨識及/或分組於一起的方式。名稱空間515-1及515-2的使用是可選的。
圖5指代資料重複刪除及壓縮的概念。資料重複刪除引用SSD 130上所儲存的特定資料可能有多個拷貝的理念。可儲存單一拷貝且其他拷貝引用所儲存的所述拷貝,而不再儲存多個拷貝。進行此種操作使得將用於儲存多個檔案的空間量減少。
舉例而言,慮及例如相片等影像檔案。同一相片被儲存多次(或許使用不同的檔案名稱)並不罕見(此乃因很容易忘記所述相片先前已使用不同的名稱儲存)。但是對於主機或SSD 130而言,辨別出特定檔案是先前儲存的檔案的複本是足夠簡單的(假設SSD 130包括一些辨識重複檔案的處理能力)。不需要多次儲存同一相片:單一拷貝將是充足的(且自儲存複本的其他資料夾進行引用)。
作為可如何辨識資料重複的實例,可為每一檔案產生加密散列。若兩個檔案的加密散列是相同的,則所述兩個檔案有可能(或許很有可能)包含相同的資料。因此,判斷新檔案是否是已儲存於SSD 130上的檔案的複本僅需要:產生新檔案的加密散列,將所述加密散列與其他檔案的加密散列進行比較(或許使用散列表),且若找到匹配,則實行對匹配檔案中的資料的(詳細)比較。
應注意,資料重複刪除可在任何期望的資料單元上進行操作。儘管檔案是常見的資料重複刪除單元,然而其他單元可為區塊或頁面(SSD 130內的資料單元)。亦可使用另外的其他資料單元。
另一方面,壓縮指代可以較原始資料佔用更少空間的方式儲存資料的技術。舉例而言,慮及數字10100 (通常被稱為googol)。要將此數字儲存為原始值將需要近似2300 個位元,或238 個位元組(假設電腦被設計用於儲存如此大的整數)。另一方面,此數字亦可表示為「1」,後跟100個「0」。藉由使用例如運行長度編碼(Run Length Encoding)等編碼方案,此值可使用以下四個位元組來表示:1、1、100、0(即,值「1」的一個拷貝以及值「0」的100個拷貝)。由於四個位元組較238 個位元組少得多,因此至少能說,對此值使用編碼顯著節省了空間。(儘管用語「壓縮」通常指代使用例如霍夫曼碼(Huffman code)等結構對資料進行編碼的演算法,然而在此上下文中,「壓縮」指代可用來減少資料佔用的空間量的任何技術,且因此可包括通常使用例如「編碼」等用語來指代的技術。)
儘管資料重複刪除及壓縮由於其減少了資料在儲存裝置上佔用的「佔用面積(footprint)」而具有其益處,然而其亦具有潛在的缺點,尤其是當論述錯誤時。舉例而言,假設儲存於SSD 130上的特定檔案實際上包含五個不同的檔案(一個原始檔案及四個複本)的資料。由於所述四個複本指向與原始檔案相同的資料,因此若所儲存檔案中的任何地方存在單一位元錯誤,則每當存取不同檔案中的任一者 時,均將讀取所述錯誤。因此,儲存於SSD 130上的資料的單一位元錯誤將實際上被更佳地理解為五個 位元錯誤:原始檔案與每一複本中的相同位元錯誤算作一個。換言之,資料重複刪除將SSD 130的錯誤率放大了檔案的引用拷貝數目。
相似地,壓縮可能影響真實錯誤率。再次慮及可如何使用運行長度編碼來儲存10100 的實例。若值「0」被替換為「1」(單一位元錯誤),則所述錯誤將在整個編碼長度上被放大。編碼不再表示10100 ,而是現將表示重複101次的數位「1」:一個非常不同的值。因此,實際上,壓縮資料上的單一位元錯誤可更在事實上意味著大量的位元錯誤。作為通則,單一位元錯誤可能與所使用的技術的壓縮比率大致成比例地放大。因此,若壓縮技術導致將資料壓縮兩倍(即佔用一半的空間),則單一位元錯誤事實上意味著資料中有兩個位元錯誤;若壓縮技術導致資料壓縮三倍(即佔用三分之一的空間),則單一位元錯誤事實上意味著資料中有三個位元錯誤,依此類推。(在最壞的情形中,壓縮資料中的單一位元錯誤可能實際上使得根本不可能恢復原始資料。)
因此,儘管圖4所示可靠性表405中的表項是SSD 130的可靠性的有用起點,然而其可能無法完全表示SSD 130的真實可靠性。為此,SSD 130(可能藉由配置模組340)可追蹤代表應用505-1及505-2施行的交易(其中資料重複刪除及壓縮是兩個實例),且使用該些交易來確定乘數。SSD 130的可靠性(如基於SSD 130的配置自圖4所示可靠性表405確定)然後可乘以此乘數,以確定SSD 130的有效可靠率。
可靠率的乘數可使用任何期望的方式來確定。舉例而言,SSD 130可追蹤特定交易,確定適用於所述交易的乘數,且然後保留所述乘數及前一乘數中的較大者。但是此種方式假設乘數彼此獨立。若資料重複刪除是所使用的唯一可引入乘數的技術,或者若壓縮是所使用的唯一可引入乘數的技術,則此種假設可為合理的。但是,若經壓縮的檔案接著經歷資料重複刪除,則由於兩種空間節省方案,單一位元錯誤可能會成倍增加。
因此,SSD 130不僅可追蹤目前為止的最高乘數,而且可單獨追蹤適用於每一空間節省方案的最高乘數。如此,SSD 130不僅可慮及新乘數是否是單一方案的最高乘數,而且可慮及所述乘數是否可跨越多個方案。舉例而言,假設SSD 130當前追蹤以下內容:最高壓縮乘數為2.0,最高資料重複刪除乘數為5.0,且最高總乘數為5.0(假設經歷壓縮的檔案均尚未在SSD 130上儲存多於兩次)。若SSD 130然後追蹤到先前已被壓縮且被進行重複刪除的檔案被第三次寫入,則此將意味著所述檔案的三個拷貝現已被儲存於SSD 130上(且被進行重複刪除)。因此,儘管此交易不會增加最高壓縮乘數(由於沒有發生新的壓縮)或最高重複刪除乘數(由於任何檔案的當前最大複本數目為五),然而最高總乘數可增加至6.0(由於壓縮檔案的三個拷貝的乘數為2.0)。因此,無論可靠率原本可能如何(可如圖4所示可靠性表405中所宣傳的一樣),所述可靠率均可乘以6.0來確定SSD 130的有效可靠性。作為另一選擇,SSD 130可分別追蹤壓縮及資料重複刪除的最高乘數,且將壓縮及資料重複刪除的最高乘數二者應用於可靠性,以確定SSD 130的最小有效可靠性。(由於SSD 130上可能未儲存經曆壓縮及資料重複刪除二者的資料,因而此計算可能過分強調交易的影響,但是仍然可使用保守的計算。)
交易對SSD 130的有效可靠性的此種影響亦可作為SSD 130的配置選擇的考慮因素。舉例而言,已知由於儲存於SSD 130上的資料而存在乘數,當將各種配置的可靠性與應用505-1及505-2的期望可靠性510-1及520-2進行比較時,配置模組340可使用所述乘數。即,僅將圖4所示可靠性表405中列出的可靠性與期望可靠性510-1及510-2進行比較可能是不夠的:在給定當前儲存於SSD 130上的資料的條件下,可能需要根據乘數來調整圖4所示可靠性表405中所列出的可靠性,以反映SSD 130的有效可靠性。
圖6示出在圖5所示應用505-1與圖1所示SSD 130之間交換的訊息。在本發明概念的一個實施例中,應用505-1可向SSD 130發送可靠性訊息605:可靠性訊息605可包括圖5所示期望可靠性510-1。(儘管圖6中未示出,然而圖5所示應用505-2以及使用SSD 130的任何其他應用亦可發送其自己的期望可靠性。)然後,如由自配置610所示,SSD 130可對自身進行配置(使用圖3所示配置模組340)以滿足所提供的期望可靠性中的所有者(即,藉由滿足所提供的最嚴格的可靠性)。
但是在本發明概念的另一實施例中,應用505-1可發送可靠性請求615。可靠性請求615可請求SSD 130的有效可靠性(如上所述確定),其可作為訊息620返回。應用505-1亦可發送可靠性表請求625,其可自SSD 130請求圖4所示可靠性表405:SSD 130可藉由在訊息630中返回圖4所示可靠性表405來響應。然後,應用505-1可選擇提供充足可靠性的配置(圖5所示期望可靠性510-1或某種優越的配置),且可向SSD 130發送配置請求635,從而辨識圖4所示可靠性表405中應用505-1所期望的表項。如由自配置640所示,SSD 130然後可根據可靠性表405的所辨識表項來對自身進行配置。
但是應注意,自配置640是以虛線示出。其原因有二。首先,假設應用505-1將比較在訊息620中接收的有效可靠率:若有效可靠率高於圖5所示期望可靠性510-1,則應用505-1將不發送配置請求635(在此種情形中,將不需要自配置640)。但是在本發明概念的一些實施例中,應用505-1可能不自SSD 130請求有效可靠性,而是簡單地自圖4所示可靠性表405選擇期望的配置,且相應地發送配置請求635。在本發明概念的此種實施例中,SSD 130(或許藉由配置模組340)可將有效可靠性與在配置請求635中辨識的配置進行比較。若SSD 130的有效可靠性大於在配置請求635中辨識的配置的可靠性,則SSD 130可跳過自配置640(由於當前配置已經足夠好)。
第二,如上所述,應用505-1可能不是孤立操作的:其他應用(例如圖5所示應用505-2)可能正在發送其自己的配置請求635。在此種情況下,SSD 130可選擇以滿足所有應用的方式進行自配置,且因此可根據具有最高可靠率的配置進行配置(假設請求所述配置的應用可能不滿意具有較低可靠性的配置)。因此,儘管SSD 130可實行自配置640,然而自配置640可涉及與配置請求635中指定的配置不同的配置。
在圖6中,配置模組340可在配置圖1所示SSD 130時響應應用505-1。但是配置模組340亦可「自發地」進行操作來配置圖1所示SSD 130。舉例而言,在給定期望可靠性(其可為在可靠性訊息605中自應用505-1接收的圖5所示期望可靠性510-1,或者其可為根據製造商的圖1所示SSD 130的所宣傳可靠性,以及其他可能性)的條件下,配置模組340可追蹤圖1所示SSD 130的有效可靠性。若圖1所示SSD 130的有效可靠性下降至期望可靠性以下,則配置模組340可選擇提供期望可靠性的新配置(慮及任何乘數),以確保圖1所示SSD 130的可靠性保持在可接受的水準。
值得一提的是,配置模組340可如何配置圖1所示SSD 130。如以上所論述,圖4所示可靠性表405中的表項指定欲由圖3所示記憶體晶片315-1至315-8、圖3所示ECC模組330及圖3所示RAID/抹除編碼模組335使用的特定方案。為配置圖1所示SSD 130,配置模組340可就使用何種方案來指令該些組件。即,配置模組340可指令圖3所示記憶體晶片315-1至315-8在每一胞元中儲存特定數目的位元,及/或指令圖3所示ECC模組330使用特定的ECC方案,及/或指令圖3所示RAID/抹除編碼模組335使用特定的抹除編碼方案。應注意,改變已就位資料的方案可能涉及自圖1所示SSD 130讀取資料以及改變應用於所述資料的方案,以使得維持充足的可靠性。因此,舉例而言,若資料當前在每一QLC胞元中使用四個位元來儲存,但現在需要在每一QLC胞元中僅儲存兩個位元,則圖3所示記憶體晶片315-1至315-8中的資料可被讀取、臨時緩存於某處(或者在一些本地儲存器中或者在伺服器110的主記憶體中),然後使用新的儲存方案寫回至記憶體晶片315-1至315-8。相似地,應用新的ECC方案或抹除編碼方案可涉及自SSD 130讀取資料及向SSD 130寫入資料以應用所述改變。
圖7示出根據本發明概念實施例的圖1所示SSD 130對自身進行配置以提供期望可靠性的示例性程序的流程圖。在圖7中,在方塊705處,圖3所示配置模組340可確定圖1所示SSD 130的期望可靠性。如以上所論述,圖3所示配置模組340可選擇其自己的期望可靠性,或者其可在圖6所示可靠性訊息605中自圖5所示應用505-1接收圖5所示期望可靠性510-1。在方塊710處,圖3所示配置模組340可確定圖1所示SSD 130的有效可靠性。在方塊715處,圖3所示配置模組340可將圖1所示SSD 130的有效可靠性與期望可靠性進行比較(慮及由於交易導致的任何乘數)。若有效可靠性足以滿足期望可靠性,則處理完成,且圖3所示配置模組340不需要進行進一步的操作。
另一方面,若有效可靠性小於期望可靠性,則在方塊720處,圖3所示配置模組340可存取圖4所示可靠性表405以慮及其中的表項。在方塊725處,圖3所示配置模組340可選擇圖4所示可靠性表405中具有至少與期望可靠性一樣高的可靠性(慮及任何乘數)的表項。在方塊730處,圖3所示配置模組340可根據圖4所示可靠性表405中的所選擇表項中的配置來配置圖1所示SSD 130,在此之後處理完成。
圖8示出圖1所示SSD 130對自身進行配置的示例性程序的流程圖。在圖8中,在方塊805處,圖3所示配置模組340可配置圖3所示一或多個記憶體晶片315-1至315-8來使用特定的儲存方案。在方塊810處,圖3所示配置模組340可配置圖3所示ECC模組330來使用特定的錯誤校正碼方案。在方塊815處,圖3所示配置模組340可配置圖3所示RAID/抹除編碼模組335來使用特定的抹除編碼方案。如由虛線820、825及830所示,方塊805、810及815均是各別可選的,且可被省略。
圖9A至圖9B示出圖1所示SSD 130確定期望可靠性的示例性程序的流程圖。在圖9A中,在方塊905處,圖1所示SSD 130可接收圖6所示可靠性訊息605,其可指定SSD 130的期望可靠性。
作為另一選擇,在方塊910(圖9B)處,圖1所示SSD 130可自圖5所示應用505-1接收圖6所示可靠性請求615。在方塊915處,圖1所示SSD 130可確定圖1所示SSD 130的有效可靠性。在方塊920處,SSD 130可將有效可靠性作為圖6所示訊息620發送至圖5所示應用505-1。應注意,如由虛線925所示,方塊910、915及920是可選的。
在方塊930處,圖5所示應用505-1可發送圖6所示可靠性表請求625。在方塊935處,圖1所示SSD 130可自圖3所示可靠性表儲存器345擷取圖4所示可靠性表405。在方塊940處,圖1所示SSD 130可將圖4所示可靠性表405作為訊息630發送至圖5所示應用505-1。最後,在方塊945處,圖5所示應用505-1可向圖1所示SSD 130發送配置請求635,請求圖3所示配置模組340根據可靠性表405中在圖6所示配置請求635中辨識的表項來配置圖1所示SSD 130。
圖10示出圖1所示SSD 130確定圖1所示SSD 130的有效可靠性的示例性程序的流程圖。在圖10中,在方塊1005處,圖1所示SSD 130可確定圖1所示SSD 130的所宣傳可靠性(至少根據圖1所示SSD 130的當前配置)。在方塊1010處,SSD 130可追蹤由(或代表)圖5所示應用505-1請求的當前交易。在方塊1015處,圖1所示SSD 130可響應於當前交易(及先前交易)來確定乘數(或多於一個乘數)。最後,在方塊1020處,圖1所示SSD 130可將所宣傳可靠性乘以所述一或多個乘數,以確定圖1所示SSD 130的有效可靠性。
圖11A至圖11B示出根據本發明概念實施例的圖5所示應用505-1指令圖1所示SSD 130提供期望可靠性的示例性程序的流程圖。在圖11A中,在方塊1105處,圖5所示應用505-1可簡單地將圖5所示期望可靠性510-1(作為圖6所示可靠性訊息605)發送至圖1所示SSD 130。此時,圖5所示應用505-1可完成操作,而將確保提供圖5所示期望可靠性510-1的工作留給圖1所示SSD 130。
作為另一選擇,在方塊1110處,圖5所示應用505-1可將圖6所示可靠性請求615發送至圖1所示SSD 130。在方塊1115處,圖5所示應用505-1可在圖6所示訊息620中接收圖1所示SSD 130的當前有效可靠性。在方塊1120處,圖5所示應用505-1可將圖1所示SSD 130的有效可靠性(如在圖6所示訊息620中接收)與圖5所示期望可靠性510-1進行比較。若圖1所示SSD 130的有效可靠性至少與圖5所示期望可靠性510-1一樣高,則處理可結束(由於不需要進行任何操作)。
另一方面,若圖1所示SSD 130的有效可靠性小於圖5所示期望可靠性510-1(或者若圖5所示應用505-1選擇請求圖1所示SSD 130被配置有特定配置,而不管其有效可靠性如何,如由虛線箭頭1125所示),則在方塊1130(圖11B)處,圖5所示應用505-1可將圖6所示可靠性表請求625發送至圖1所示SSD 130。在方塊1135處,圖1所示SSD 130可將圖4所示可靠性表405作為訊息630發送至圖5所示應用505-1。在方塊1140處,圖5所示應用505-1可選擇圖4所示可靠性表405中提供期望可靠性的表項。最後,在方塊1145處,圖5所示應用505-1可發送圖6所示配置請求635,請求根據圖4所示可靠性表405中的所選擇表項來配置圖1所示SSD 130。
在圖7至圖11B中,示出了本發明概念的一些實施例。但是熟習此項技術者將認識到,藉由改變方塊的次序、省略方塊或者藉由包括圖式中未示出的鏈接,本發明概念的其他實施例亦是可能的。無論是否明確闡述,流程圖的所有此種變化均被視為本發明概念的實施例。
本發明概念的實施例提供優於先前技術的技術優勢。在傳統系統中,儲存裝置的可靠性由製造商設定,且基本上在使用者的控制之外。本發明概念的實施例不僅給予顧客對儲存裝置可靠性的某種水準的控制,而且甚至允許使此種管理自動化。應用可指定期望可靠性(或者可指定儲存裝置的實施期望可靠性的特定配置)。儲存裝置然後可藉由基於儲存裝置的用途根據需要改變配置來維持所述程度的可靠性。
以下論述旨在提供對可在其中實施本發明概念某些態樣的一或多個合適的機器的簡短總體說明。所述一或多個機器可至少部分地藉由以下來控制:來自例如鍵盤、滑鼠等傳統輸入裝置的輸入;以及自另一機器接收到的指令、與虛擬實境(virtual reality,VR)環境的交互作用、生物統計回饋(biometric feedback)或其他輸入訊號。本文中所用用語「機器」旨在廣泛地囊括單一機器、虛擬機器、或由以通訊方式耦合的一起運作的機器、虛擬機器或裝置構成的系統。示例性機器包括:計算裝置,例如個人電腦、工作站、伺服器、可攜式電腦、手持式裝置、電話、平板電腦等;以及運輸裝置,例如私人或公共運輸(例如汽車、火車、計程車等)。
所述一或多個機器可包括嵌入式控制器,例如可程式化或非可程式化邏輯裝置或陣列、應用專用積體電路(Application Specific Integrated Circuit,ASIC)、嵌入式電腦、智慧卡等。所述一或多個機器可利用例如藉由網路介面、數據機或其他通訊性耦合達成的與一或多個遠端機器的一或多個連接。機器可以例如內部網路(intranet)、網際網路、區域網路、廣域網路等物理及/或邏輯網路的方式進行互連。熟習此項技術者應理解,網路通訊可利用各種有線及/或無線短程或長程載波及協定,所述載波及協定包括射頻(radio frequency,RF)、衛星、微波、電氣及電子工程師學會(Institute of Electrical and Electronics Engineers,IEEE)802.11、藍芽®、光學的、紅外線的、纜線、雷射等。
可藉由參照或結合相關聯資料來闡述本發明概念的實施例,所述相關聯資料包括當由機器存取時使得所述機器實行任務或定義抽象資料類型或低層級硬體上下文的功能、程序、資料結構、應用程式等。相關聯資料可儲存於例如揮發性及/或非揮發性記憶體(例如,RAM、ROM等)中,或儲存於包括硬驅動機、軟磁碟(floppy-disk)、光學儲存器、磁帶(tape)、快閃記憶體、記憶條(memory stick)、數位視訊碟、生物儲存器等的其他儲存裝置及其相關聯儲存媒體中。相關聯資料可以封包、串列資料、並列資料、傳播訊號等形式經由包括物理及/或邏輯網路在內的傳輸環境而遞送,且可以壓縮或加密格式使用。相關聯資料可用於分佈式環境中,且可在本地及/或遠端儲存以供機器存取。
本發明概念的實施例可包括有形非暫時性機器可讀取媒體,所述有形非暫時性機器可讀取媒體包括可由一或多個處理器執行的指令,所述指令包括用於實行如在本文中闡述的本發明概念的要素的指令。
上述方法的各種操作可藉由能夠實行所述操作的任何合適的手段(例如各種硬體及/或軟體組件、電路及/或模組)來實行。所述軟體可包括用於實施邏輯功能的可執行指令的有序列表,且可實施於任何「處理器可讀取媒體」中,以供例如單核或多核處理器或包含處理器的系統等指令執行系統、設備或裝置使用或與其結合使用。
結合本文中揭露的實施例所闡述的方法或演算法及功能的方塊或步驟可直接以硬體、以由處理器執行的軟體模組或以此二者的組合來實施。若以軟體實施,則功能可作為一或多個指令或碼儲存於有形非暫時性電腦可讀取媒體上或者在有形非暫時性電腦可讀取媒體上傳輸。軟體模組可駐存於隨機存取記憶體(RAM)、快閃記憶體、唯讀記憶體(Read Only Memory,ROM)、電可程式化ROM(Electrically Programmable ROM,EPROM)、電可抹除可程式化ROM(Electrically Erasable Programmable ROM,EEPROM)、暫存器、硬碟、可抽換式磁碟、光碟唯讀記憶體(Compact Disc Read Only Memory,CD ROM)或此項技術中已知的任何其他形式的儲存媒體中。
已參照所示實施例闡述並示出了本發明概念的原理,應認識到,在不背離此類原理的條件下,可在排列及細節上對所示實施例加以潤飾,且可以任何所期望方式加以組合。並且,儘管以上論述著重於特定實施例,然而預期存在其他配置。具體而言,儘管本文中使用例如「根據本發明概念的實施例」或類似表達,然而該些片語意在籠統地提及實施例可能性,而並非旨在將本發明概念限制於特定實施例配置。本文所用的該些用語可提及可組合成其他實施例的相同或不同的實施例。
前述例示性實施例不應被視為限制本發明概念。儘管已闡述若干實施例,然而熟習此項技術者應易於理解,在不實質上背離本揭露的新穎教示內容及優點的情況下,可對該些實施例作出諸多潤飾。因此,所有此類潤飾皆旨在包含於如在申請專利範圍中所界定的本發明概念的範圍內。
本發明概念的實施例可擴展至以下聲明,但不限於此:
聲明1.     本發明概念的實施例包括一種固態硬碟(SSD),所述SSD包括: 介面,用於接收來自主機上的第一應用的讀取請求及寫入請求; 用於資料的儲存器,所述儲存器包括至少一個晶片; SSD控制器,用於使用所述儲存器處理來自所述主機上的所述第一應用的所述讀取請求及所述寫入請求; 配置模組,用於配置所述SSD;以及 用於可靠性表的儲存器,所述可靠性表至少包括第一表項及第二表項,所述第一表項辨識所述SSD的第一配置及所述SSD的所述第一配置的第一可靠性,且所述第二表項辨識所述SSD的第二配置及所述SSD的所述第二配置的第二可靠性。
聲明2.     本發明概念的實施例包括根據聲明1所述的SSD,其中所述介面可接收來自所述主機上的所述第一應用的配置請求。
聲明3.     本發明概念的實施例包括根據聲明2所述的SSD,其中所述配置請求包括所述可靠性表中的所述第一表項及所述第二表項中的一者的辨識符。
聲明4.     本發明概念的實施例包括根據聲明3所述的SSD,其中所述配置模組可根據所述可靠性表中的所述第一表項及所述第二表項中的一者的所述辨識符重新配置所述SSD。
聲明5.     本發明概念的實施例包括根據聲明1所述的SSD,其中所述介面可接收來自所述主機上的所述第一應用的可靠性訊息,所述可靠性訊息包括所述主機上的所述第一應用的第一期望可靠性。
聲明6.     本發明概念的實施例包括根據聲明5所述的SSD,其中所述配置模組可至少基於所述第一期望可靠性,根據所述可靠性表中的所述第一表項及所述第二表項中的一者來配置所述SSD。
聲明7.     本發明概念的實施例包括根據聲明6所述的SSD,其中所述配置模組可至少基於所述主機上的所述第一應用的所述第一期望可靠性及所述主機上的第二應用的第二期望可靠性,根據所述可靠性表中的所述第一表項及所述第二表項中的一者來配置所述SSD。
聲明8.     本發明概念的實施例包括根據聲明1所述的SSD,其中所述至少一個晶片至少提供具有第一晶片可靠性的第一儲存方案及具有第二晶片可靠性的第二儲存方案。
聲明9.     本發明概念的實施例包括根據聲明8所述的SSD,其中所述SSD的所述第一配置辨識所述第一儲存方案,且所述SSD的所述第二配置辨識所述第二儲存方案。
聲明10.    本發明概念的實施例包括根據聲明1所述的SSD,所述SSD更包括錯誤校正碼(ECC)模組,所述ECC模組至少提供具有第一ECC可靠性的第一ECC方案及具有第二ECC可靠性的第二ECC方案。
聲明11.    本發明概念的實施例包括根據聲明10所述的SSD,其中所述SSD的所述第一配置辨識所述第一ECC方案,且所述SSD的所述第二配置辨識所述第二ECC方案。
聲明12.    本發明概念的實施例包括根據聲明1所述的SSD,所述SSD更包括抹除編碼模組或獨立磁碟冗餘陣列(RAID)模組中的至少一者,所述抹除編碼模組至少提供具有第一抹除編碼可靠性的第一抹除編碼方案及具有第二抹除編碼可靠性的第二抹除編碼方案,且所述RAID模組至少提供具有第一RAID可靠性的第一RAID方案及具有第二RAID可靠性的第二RAID方案。
聲明13.    本發明概念的實施例包括根據聲明12所述的SSD,其中所述SSD的所述第一配置辨識所述第一抹除編碼方案或所述第一RAID方案中的至少一者,且所述SSD的所述第二配置辨識所述第二抹除編碼方案或所述第二RAID方案中的至少一者。
聲明14.    本發明概念的實施例包括根據聲明1所述的SSD,其中所述可靠性表中的所述第一表項辨識所述SSD的所述第一配置的第一空間費用或第一效能中的至少一者,且所述可靠性表中的所述第二表項辨識所述SSD的所述第二配置的第二空間費用或第二效能中的至少一者。
聲明15.    本發明概念的實施例包括根據聲明1所述的SSD,其中所述至少一個晶片包括至少一個NAND快閃晶片。
聲明16.    本發明概念的實施例包括一種方法,所述方法包括: 確定固態硬碟(SSD)的期望可靠性,所述SSD包括用於資料的儲存器,所述儲存器包括至少一個晶片; 自所述SSD存取可靠性表中的第一表項,所述可靠性表至少包括所述第一表項及第二表項,所述第一表項辨識所述SSD的第一配置及所述SSD的所述第一配置的第一可靠性,且所述第二表項辨識所述SSD的第二配置及所述SSD的所述第二配置的第二可靠性;以及 根據所述第一表項配置所述SSD。
聲明17. 本發明概念的實施例包括根據聲明16所述的方法,其中: 所述第一表項包括用於所述晶片的第一儲存方案; 所述第二表項包括用於所述晶片的第二儲存方案;並且 根據所述第一表項配置所述SSD包括根據所述第一儲存方案或所述第二儲存方案配置所述晶片。
聲明18. 本發明概念的實施例包括根據聲明16所述的方法,其中: 所述SSD包括錯誤校正碼(ECC)模組; 所述第一表項包括用於所述ECC模組的第一ECC方案; 所述第二表項包括用於所述ECC模組的第二ECC方案;並且 根據所述第一表項配置所述SSD包括根據所述第一ECC方案或所述第二ECC方案配置所述ECC模組。
聲明19. 本發明概念的實施例包括根據聲明16所述的方法,其中: 所述SSD包括抹除編碼模組或獨立磁碟冗餘陣列(RAID)模組中的至少一者; 所述第一表項包括用於所述抹除編碼模組的第一抹除編碼方案或用於所述RAID模組的第一RAID方案中的至少一者; 所述第二表項包括用於所述抹除編碼模組的第二抹除編碼方案或用於所述RAID模組的第二RAID方案中的至少一者;以及 根據所述第一表項配置所述SSD包括根據所述第一抹除編碼方案或所述第二抹除編碼方案配置所述抹除編碼模組或根據所述第一RAID方案或所述第二RAID方案配置所述RAID模組中的所述至少一者。
聲明20.    本發明概念的實施例包括根據聲明16所述的方法,其中確定固態硬碟(SSD)的期望可靠性包括在所述SSD處自主機上的應用接收所述期望可靠性。
聲明21.    本發明概念的實施例包括根據聲明20所述的方法,其中自所述SSD存取可靠性表中的第一表項包括: 存取所述可靠性表中的所述第一表項及所述第二表項;以及 辨識出所述第一表項包括至少與所述期望可靠性一樣高的可靠性。
聲明22.    本發明概念的實施例包括根據聲明16所述的方法,所述方法更包括: 在所述SSD處自所述主機上的所述應用接收對所述SSD的有效可靠性的可靠性請求; 確定所述SSD的所述有效可靠性;以及 自所述SSD向所述主機上的所述應用發送所述有效可靠性。
聲明23.    本發明概念的實施例包括根據聲明22所述的方法,其中確定所述SSD的所述有效可靠性包括: 確定所述SSD的所宣傳可靠性; 追蹤所述SSD上的操作; 基於所述SSD上的所述操作來確定乘數;以及 將所述所宣傳可靠性乘以所述乘數,以確定所述有效可靠性。
聲明24.    本發明概念的實施例包括根據聲明16所述的方法,其中自所述SSD存取可靠性表中的第一表項包括在所述SSD處自所述主機上的所述應用接收所述可靠性表中的所述第一表項的辨識符。
聲明25.    本發明概念的實施例包括根據聲明24所述的方法,其中自所述SSD向所述主機上的所述應用發送所述有效可靠性包括自所述SSD向所述主機上的所述應用發送所述可靠性表中的所述第一表項及所述第二表項。
聲明26. 本發明概念的實施例包括根據聲明16所述的方法,其中: 所述可靠性表中的所述第一表項辨識所述SSD的所述第一配置的第一空間費用或第一效能中的至少一者; 所述可靠性表中的所述第二表項辨識所述SSD的所述第二配置的第二空間費用或第二效能中的至少一者;以及 自所述SSD存取可靠性表中的第一表項包括至少基於所述期望可靠性以及期望空間費用或期望效能中的至少一者自所述SSD存取所述可靠性表中的所述第一表項。
聲明27.    本發明概念的實施例包括根據聲明16所述的方法,其中所述至少一個晶片包括至少一個NAND快閃晶片。
聲明28.    本發明概念的實施例包括一種方法,所述方法包括: 自主機上的應用向SSD發送可靠性請求,所述可靠性請求請求所述SSD的有效可靠性; 在所述主機上的所述應用處自所述SSD接收所述SSD的所述有效可靠性; 自所述主機上的所述應用向所述SSD發送可靠性表請求,所述可靠性表請求請求儲存於所述SSD上的可靠性表; 在所述主機上的所述應用處自所述SSD接收所述可靠性表,所述可靠性表中的每一表項辨識所述SSD的配置及所述SSD的所述配置的可靠性; 至少基於所述主機上的所述應用的期望可靠性來選擇所述可靠性表中的表項;以及 自所述主機上的所述應用向所述SSD發送配置請求,所述配置請求辨識所述可靠性表中的所述表項。
聲明29.    本發明概念的實施例包括根據聲明28所述的方法,所述方法更包括: 將所述SSD的所述有效可靠性與所述主機上的所述應用的期望可靠性進行比較;以及 至少基於所述SSD的所述有效可靠性超出所述主機上的所述應用的所述期望可靠性,不向所述SSD發送所述配置請求。
聲明30.    本發明概念的實施例包括根據聲明28所述的方法,其中至少基於所述主機上的所述應用的期望可靠性來選擇所述可靠性表中的表項包括選擇所述可靠性表中所述SSD的所述配置的所述可靠性至少與所述期望可靠性一樣高的所述表項。
聲明31. 本發明概念的實施例包括根據聲明28所述的方法,其中: 所述可靠性表中的每一表項進一步辨識所述SSD的所述配置的第一空間費用或第一效能中的至少一者; 所述可靠性表中的所述第二表項辨識第二空間費用或第二效能中的至少一者;以及 至少基於所述主機上的所述應用的期望可靠性來選擇所述可靠性表中的表項包括至少基於所述主機上的所述應用的所述期望可靠性以及期望空間費用或期望效能中的至少一者來選擇所述可靠性表中的所述表項。
聲明32.    本發明概念的實施例包括一種物品,所述物品包括非暫時性儲存媒體,所述非暫時性儲存媒體上儲存有指令,當由機器執行時,所述指令使得: 確定固態硬碟(SSD)的期望可靠性,所述SSD包括用於資料的儲存器,所述儲存器包括至少一個晶片; 自所述SSD存取可靠性表中的第一表項,所述可靠性表至少包括所述第一表項及第二表項,所述第一表項辨識所述SSD的第一配置及所述SSD的所述第一配置的第一可靠性,且所述第二表項辨識所述SSD的第二配置及所述SSD的所述第二配置的第二可靠性;以及 根據所述第一表項配置所述SSD。
聲明33. 本發明概念的實施例包括根據聲明32所述的物品,其中: 所述第一表項包括用於所述晶片的第一儲存方案; 所述第二表項包括用於所述晶片的第二儲存方案;並且 根據所述第一表項配置所述SSD包括根據所述第一儲存方案或所述第二儲存方案配置所述晶片。
聲明34. 本發明概念的實施例包括根據聲明32所述的物品,其中: 所述SSD包括錯誤校正碼(ECC)模組; 所述第一表項包括用於所述ECC模組的第一ECC方案; 所述第二表項包括用於所述ECC模組的第二儲存方案;並且 根據所述第一表項配置所述SSD包括根據所述第一ECC方案或所述第二ECC方案配置所述ECC模組。
聲明35. 本發明概念的實施例包括根據聲明32所述的物品,其中: 所述SSD包括抹除編碼模組或獨立磁碟冗餘陣列(RAID)模組中的至少一者; 所述第一表項包括用於所述抹除編碼模組的第一抹除編碼方案或用於所述RAID模組的第一RAID方案中的至少一者; 所述第二表項包括用於所述抹除編碼模組的第二抹除編碼方案或用於所述RAID模組的第二RAID方案中的至少一者;並且 根據所述第一表項配置所述SSD包括根據所述第一抹除編碼方案或所述第二抹除編碼方案配置所述抹除編碼模組或根據所述第一RAID方案或所述第二RAID方案配置所述RAID模組中的至少一者。
聲明36.    本發明概念的實施例包括根據聲明32所述的物品,其中確定固態硬碟(SSD)的期望可靠性包括在所述SSD處自主機上的應用接收所述期望可靠性。
聲明37.    本發明概念的實施例包括根據聲明36所述的物品,其中自所述SSD存取可靠性表中的第一表項包括: 存取所述可靠性表中的所述第一表項及所述第二表項;以及 辨識出所述第一表項包括至少與所述期望可靠性一樣高的可靠性。
聲明38.    本發明概念的實施例包括根據聲明32所述的物品,所述非暫時性儲存媒體上儲存有進一步的指令,當由所述機器執行時,所述指令使得: 在所述SSD處自所述主機上的所述應用接收對所述SSD的有效可靠性的可靠性請求; 確定所述SSD的所述有效可靠性;以及 自所述SSD向所述主機上的所述應用發送所述有效可靠性。
聲明39.    本發明概念的實施例包括根據聲明38所述的物品,其中確定所述SSD的所述有效可靠性包括: 確定所述SSD的所宣傳可靠性; 追蹤所述SSD上的操作; 基於所述SSD上的所述操作來確定乘數;以及 將所述所宣傳可靠性乘以所述乘數,以確定所述有效可靠性。
聲明40.    本發明概念的實施例包括根據聲明38所述的物品,其中自所述SSD存取可靠性表中的第一表項包括在所述SSD處自所述主機上的所述應用接收所述可靠性表中的所述第一表項的辨識符。
聲明41.    本發明概念的實施例包括根據聲明40所述的物品,其中自所述SSD向所述主機上的所述應用發送所述有效可靠性包括自所述SSD向所述主機上的所述應用發送所述可靠性表中的所述第一表項及所述第二表項。
聲明42. 本發明概念的實施例包括根據聲明32所述的物品,其中: 所述可靠性表中的所述第一表項辨識所述SSD的所述第一配置的第一空間費用或第一效能中的至少一者; 所述可靠性表中的所述第二表項辨識所述SSD的所述第二配置的第二空間費用或第二效能中的至少一者;並且 自所述SSD存取可靠性表中的第一表項包括至少基於所述期望可靠性以及期望空間費用或期望效能中的至少一者自所述SSD存取所述可靠性表中的所述第一表項。
聲明43.    本發明概念的實施例包括根據聲明32所述的物品,其中所述至少一個晶片包括至少一個NAND快閃晶片。
聲明44.    本發明概念的實施例包括一種物品,所述物品包括非暫時性儲存媒體,所述非暫時性儲存媒體上儲存有指令,當由機器執行時,所述指令使得: 自主機上的應用向SSD發送可靠性請求,所述可靠性請求請求所述SSD的有效可靠性; 在所述主機上的所述應用處自所述SSD接收所述SSD的所述有效可靠性; 自所述主機上的所述應用向所述SSD發送可靠性表請求,所述可靠性表請求請求儲存於所述SSD上的可靠性表; 在所述主機上的所述應用處自所述SSD接收所述可靠性表,所述可靠性表中的每一表項辨識所述SSD的配置及所述SSD的所述配置的可靠性; 至少基於所述主機上的所述應用的期望可靠性來選擇所述可靠性表中的表項;以及 自所述主機上的所述應用向所述SSD發送配置請求,所述配置請求辨識所述可靠性表中的所述表項。
聲明45.    本發明概念的實施例包括根據聲明44所述的物品,所述非暫時性儲存媒體上儲存有進一步的指令,當由所述機器執行時,所述指令使得: 將所述SSD的所述有效可靠性與所述主機上的所述應用的期望可靠性進行比較;以及 至少基於所述SSD的所述有效可靠性超出所述主機上的所述應用的所述期望可靠性,不向所述SSD發送所述配置請求。
聲明46.    本發明概念的實施例包括根據聲明44所述的物品,其中至少基於所述主機上的所述應用的期望可靠性來選擇所述可靠性表中的表項包括選擇所述可靠性表中所述SSD的所述配置的所述可靠性至少與所述期望可靠性一樣高的所述表項。
聲明47. 本發明概念的實施例包括根據聲明44所述的物品,其中: 所述可靠性表中的每一表項進一步辨識所述SSD的所述配置的第一空間費用或第一效能中的至少一者; 所述可靠性表中的所述第二表項辨識第二空間費用或第二效能中的至少一者;以及 至少基於所述主機上的所述應用的期望可靠性來選擇所述可靠性表中的表項包括至少基於所述主機上的所述應用的所述期望可靠性以及期望空間費用或期望效能中的至少一者來選擇所述可靠性表中的所述表項。
因此,慮及本文中所述的實施例的多種排列,此詳細說明及隨附材料僅旨在為例示性的,且不應被視為限制本發明概念的範圍。因此,本發明概念主張可能落入以下申請專利範圍及其等效範圍的範圍及精神內的所有此類潤飾。
105-1、105-2:客戶端 110:伺服器 115:網路 120:處理器 125:記憶體 130:固態硬碟(SSD)/儲存裝置 205:記憶體控制器 210:時鐘 215:網路連接件 220:匯流排 225:使用者介面 230:輸入/輸出引擎 305:主機介面邏輯(HIL) 310:SSD控制器 315-1、315-2、315-3、315-4、315-5、315-6、315-7、315-8:記憶體晶片/快閃記憶體晶片 320-1、320-2、320-3、320-4:通道 325:轉譯層 330、330-1、330-2、330-3:錯誤校正碼(ECC)模組 335:抹除編碼模組/RAID/抹除編碼模組 340:配置模組 345:可靠性表儲存器 405:可靠性表 410:儲存方案 415:ECC方案 420:抹除編碼方案 425、610:配置 430:空間費用 435:效能 440、445、450、455、460、465:表項 470:可靠性 505-1、505-2:應用 510-1、510-2:期望可靠性 515-1、515-2:名稱空間 605:可靠性訊息 615:可靠性請求 620、630:訊息 625:可靠性表請求 635:配置請求 640:自配置 705、710、715、720、725、730、805、810、815、820、825、830、905、910、915、920、925、930、935、940、945、1005、1010、1015、1020、1105、1110、1115、1120、1125、1130、1135、1140、1145:步驟
圖1示出根據本發明概念實施例的包括客戶端及伺服器的系統,所述伺服器包括固態硬碟(SSD)。 圖2示出圖1所示伺服器的細節。 圖3示出圖1所示SSD的細節。 圖4示出圖1所示SSD的可靠性表。 圖5示出圖1所示SSD的替代圖。 圖6示出在圖5所示應用與圖1所示SSD之間交換的訊息。 圖7示出根據本發明概念實施例的圖1所示SSD對自身進行配置以提供期望可靠性的示例性程序的流程圖。 圖8示出圖1所示SSD對自身進行配置的示例性程序的流程圖。 圖9A至圖9B示出圖1所示SSD確定期望可靠性的示例性程序的流程圖。 圖10示出圖1所示SSD確定圖1所示SSD的有效可靠性的示例性程序的流程圖。 圖11A至圖11B示出根據本發明概念實施例的圖5所示應用指令圖1所示SSD提供期望可靠性的示例性程序的流程圖。
130:固態硬碟(SSD)/儲存裝置
305:主機介面邏輯(HIL)
310:SSD控制器
315-1、315-2、315-3、315-4、315-5、315-6、315-7、315-8:記憶體晶片/快閃記憶體晶片
320-1、320-2、320-3、320-4:通道
325:轉譯層
330:錯誤校正碼(ECC)模組
335:抹除編碼模組/RAID/抹除編碼模組
340:配置模組
345:可靠性表儲存器

Claims (20)

  1. 一種固態硬碟(SSD),包括: 介面,用於接收來自主機上的第一應用的讀取請求及寫入請求; 用於資料的儲存器,所述儲存器包括至少一個晶片; 固態硬碟控制器,用於使用所述儲存器處理來自所述主機上的所述第一應用的所述讀取請求及所述寫入請求; 配置模組,用於配置所述固態硬碟;以及 用於可靠性表的儲存器,所述可靠性表至少包括第一表項及第二表項,所述第一表項辨識所述固態硬碟的第一配置及所述固態硬碟的所述第一配置的第一可靠性,且所述第二表項辨識所述固態硬碟的第二配置及所述固態硬碟的所述第二配置的第二可靠性。
  2. 如請求項1所述的固態硬碟,其中所述介面接收來自所述主機上的所述第一應用的配置請求。
  3. 如請求項2所述的固態硬碟,其中所述配置請求包括所述可靠性表中的所述第一表項及所述第二表項中的一者的辨識符。
  4. 如請求項1所述的固態硬碟,其中所述介面接收來自所述主機上的所述第一應用的可靠性訊息,所述可靠性訊息包括所述主機上的所述第一應用的第一期望可靠性。
  5. 如請求項4所述的固態硬碟,其中所述配置模組至少基於所述第一期望可靠性,根據所述可靠性表中的所述第一表項及所述第二表項中的一者來配置所述固態硬碟。
  6. 如請求項1所述的固態硬碟,其中所述至少一個晶片至少提供具有第一晶片可靠性的第一儲存方案及具有第二晶片可靠性的第二儲存方案。
  7. 如請求項6所述的固態硬碟,其中所述固態硬碟的所述第一配置辨識所述第一儲存方案,且所述固態硬碟的所述第二配置辨識所述第二儲存方案。
  8. 如請求項1所述的固態硬碟,更包括錯誤校正碼(ECC)模組,所述錯誤校正碼模組至少提供具有第一錯誤校正碼可靠性的第一錯誤校正碼方案及具有第二錯誤校正碼可靠性的第二錯誤校正碼方案。
  9. 如請求項8所述的固態硬碟,其中所述固態硬碟的所述第一配置辨識所述第一錯誤校正碼方案,且所述固態硬碟的所述第二配置辨識所述第二錯誤校正碼方案。
  10. 如請求項1所述的固態硬碟,更包括抹除編碼模組或獨立磁碟冗餘陣列(RAID)模組中的至少一者,所述抹除編碼模組至少提供具有第一抹除編碼可靠性的第一抹除編碼方案或具有第二抹除編碼可靠性的第二抹除編碼方案,且所述獨立磁碟冗餘陣列模組至少提供具有第一獨立磁碟冗餘陣列可靠性的第一獨立磁碟冗餘陣列方案或具有第二獨立磁碟冗餘陣列可靠性的第二獨立磁碟冗餘陣列方案。
  11. 如請求項10所述的固態硬碟,其中所述固態硬碟的所述第一配置辨識所述第一抹除編碼方案或所述第一獨立磁碟冗餘陣列方案中的至少一者,且所述固態硬碟的所述第二配置辨識所述第二抹除編碼方案或所述第二獨立磁碟冗餘陣列方案中的至少一者。
  12. 一種方法,包括: 確定固態硬碟(SSD)的期望可靠性,所述固態硬碟包括用於資料的儲存器,所述儲存器包括至少一個晶片; 自所述固態硬碟存取可靠性表中的第一表項,所述可靠性表至少包括所述第一表項及第二表項,所述第一表項辨識所述固態硬碟的第一配置及所述固態硬碟的所述第一配置的第一可靠性,且所述第二表項辨識所述固態硬碟的第二配置及所述固態硬碟的所述第二配置的第二可靠性;以及 根據所述第一表項配置所述固態硬碟。
  13. 如請求項12所述的方法,其中: 所述第一表項包括用於所述晶片的第一儲存方案; 所述第二表項包括用於所述晶片的第二儲存方案;並且 根據所述第一表項配置所述固態硬碟包括根據所述第一儲存方案或所述第二儲存方案配置所述晶片。
  14. 如請求項12所述的方法,其中: 所述固態硬碟包括錯誤校正碼(ECC)模組; 所述第一表項包括用於所述錯誤校正碼模組的第一錯誤校正碼方案; 所述第二表項包括用於所述錯誤校正碼模組的第二錯誤校正碼方案;並且 根據所述第一表項配置所述固態硬碟包括根據所述第一錯誤校正碼方案或所述第二錯誤校正碼方案配置所述錯誤校正碼模組。
  15. 如請求項12所述的方法,其中: 所述固態硬碟包括抹除編碼模組或獨立磁碟冗餘陣列(RAID)模組中的至少一者; 所述第一表項包括用於所述抹除編碼模組的第一抹除編碼方案或用於所述獨立磁碟冗餘陣列模組的第一獨立磁碟冗餘陣列方案中的至少一者; 所述第二表項包括用於所述抹除編碼模組的第二抹除編碼方案或用於所述獨立磁碟冗餘陣列模組的第二獨立磁碟冗餘陣列方案中的至少一者;以及 根據所述第一表項配置所述固態硬碟包括根據所述第一抹除編碼方案或所述第二抹除編碼方案配置所述抹除編碼模組或根據所述第一獨立磁碟冗餘陣列方案或所述第二獨立磁碟冗餘陣列方案配置所述獨立磁碟冗餘陣列模組中的至少一者。
  16. 如請求項12所述的方法,其中確定固態硬碟(SSD)的期望可靠性包括在所述固態硬碟處自主機上的應用接收所述期望可靠性。
  17. 如請求項16所述的方法,其中自所述固態硬碟存取可靠性表中的第一表項包括: 存取所述可靠性表中的所述第一表項及所述第二表項;以及 辨識出所述第一表項包括至少與所述期望可靠性一樣高的可靠性。
  18. 如請求項12所述的方法,其中自所述固態硬碟存取可靠性表中的第一表項包括在所述固態硬碟處自主機上的應用接收所述可靠性表中的所述第一表項的辨識符。
  19. 一種方法,包括: 自主機上的應用向固態硬碟(SSD)發送可靠性請求,所述可靠性請求請求所述固態硬碟的有效可靠性; 在所述主機上的所述應用處自所述固態硬碟接收所述固態硬碟的所述有效可靠性; 自所述主機上的所述應用向所述固態硬碟發送可靠性表請求,所述可靠性表請求請求儲存於所述固態硬碟上的可靠性表; 在所述主機上的所述應用處自所述固態硬碟接收所述可靠性表,所述可靠性表中的每一表項辨識所述固態硬碟的配置及所述固態硬碟的所述配置的可靠性; 至少基於所述主機上的所述應用的期望可靠性來選擇所述可靠性表中的表項;以及 自所述主機上的所述應用向所述固態硬碟發送配置請求,所述配置請求辨識所述可靠性表中的所述表項。
  20. 如請求項19所述的方法,其中至少基於所述主機上的所述應用的期望可靠性來選擇所述可靠性表中的表項包括選擇所述可靠性表中所述固態硬碟的所述配置的所述可靠性至少與所述期望可靠性一樣高的所述表項。
TW109133859A 2019-12-16 2020-09-29 固態硬碟及其方法 TWI854041B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962948792P 2019-12-16 2019-12-16
US62/948,792 2019-12-16
US16/853,731 2020-04-20
US16/853,731 US11307804B2 (en) 2019-12-16 2020-04-20 Enhanced SSD reliability

Publications (2)

Publication Number Publication Date
TW202125208A true TW202125208A (zh) 2021-07-01
TWI854041B TWI854041B (zh) 2024-09-01

Family

ID=

Also Published As

Publication number Publication date
US20220214836A1 (en) 2022-07-07
JP2021096837A (ja) 2021-06-24
US20210181983A1 (en) 2021-06-17
US12050811B2 (en) 2024-07-30
KR20210076834A (ko) 2021-06-24
US20230305751A1 (en) 2023-09-28
CN112988056A (zh) 2021-06-18
US11307804B2 (en) 2022-04-19
US11662951B2 (en) 2023-05-30

Similar Documents

Publication Publication Date Title
US10860508B2 (en) Offloaded disaggregated storage architecture
US9582220B2 (en) Notification of trigger condition to reduce declared capacity of a storage device in a multi-storage-device storage system
US8910017B2 (en) Flash memory with random partition
US8825938B1 (en) Use of write allocation decisions to achieve desired levels of wear across a set of redundant solid-state memory devices
US9798620B2 (en) Systems and methods for non-blocking solid-state memory
US9032245B2 (en) RAID data management method of improving data reliability and RAID data storage device
US11662951B2 (en) Enhanced SSD reliability
US20140281173A1 (en) Nonvolatile memory system, system including the same, and method of adaptively adjusting user storage region in the same
US9524105B2 (en) Process and apparatus to reduce declared capacity of a storage device by altering an encoding format
US9543988B2 (en) Adaptively strengthening ECC for solid state cache
TW201705002A (zh) 資料儲存元件及其操作方法
US9519427B2 (en) Triggering, at a host system, a process to reduce declared capacity of a storage device
US11487609B2 (en) Separating parity data from host data in a memory sub-system
US9582193B2 (en) Triggering a process to reduce declared capacity of a storage device in a multi-storage-device storage system
TWI854041B (zh) 固態硬碟及其方法
US9552166B2 (en) Process and apparatus to reduce declared capacity of a storage device by deleting data
US9582202B2 (en) Process and apparatus to reduce declared capacity of a storage device by moving data
US9582212B2 (en) Notification of trigger condition to reduce declared capacity of a storage device
US9563370B2 (en) Triggering a process to reduce declared capacity of a storage device
US20170371741A1 (en) Technologies for providing file-based resiliency
US20230185470A1 (en) Method of operating memory system and memory system performing the same