JP2021096837A - 信頼性の向上したssd - Google Patents

信頼性の向上したssd Download PDF

Info

Publication number
JP2021096837A
JP2021096837A JP2020190393A JP2020190393A JP2021096837A JP 2021096837 A JP2021096837 A JP 2021096837A JP 2020190393 A JP2020190393 A JP 2020190393A JP 2020190393 A JP2020190393 A JP 2020190393A JP 2021096837 A JP2021096837 A JP 2021096837A
Authority
JP
Japan
Prior art keywords
ssd
reliability
entry
scheme
module
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
JP2020190393A
Other languages
English (en)
Inventor
ヤンソク,キ
Yang Seok Ki
レッカ,ピチュマニ
Pitchumani Rekha
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co 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
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2021096837A publication Critical patent/JP2021096837A/ja
Pending legal-status Critical Current

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:Solid State Drive)が開示される。SSDは、ホスト上のアプリケーションから読み取り及び書き込みの要請を受信するためのインターフェースを含み得る。少なくとも1つのチップを含むストレージは、データを格納することができる。SSDコントローラは、アプリケーションから読み取り及び書き込みの要請を処理することができる。設定モジュールは、SSDを設定することができる。ストレージはSSDの設定及びその設定に対する信頼性を指定するエントリを含む信頼性テーブルを含み得る。【選択図】図3

Description

本発明の概念は、一般的に、ストレージ・システムに関し、より詳細には、可変的なレベルの信頼性を提供するストレージ・システムに関する。
理想的には、SSD(Solid State Drive)のようなストレージ装置は、記録されたすべてのビットがエラーなしに読み取られ、完璧であり得る。しかし、現実の世界は完璧ではない。つまり、SSDの製造業者の最善の努力にもかかわらず、時々、エラーが発生する。
消費者を助けるために、製造業者は、装置に対する信頼性の推定値を提供することができる。例えば、製造業者は99.99%の信頼性(またはこれに相応する記録及び/又はリード(read:読み取られた)された1000ビット当たり1ビットの平均誤り率)を報告することができる。(実際には、この信頼性は、比較的低い。SSDに記録されたほぼすべてのページにおいて、少なくとも1つのエラーを示唆することができる。ただし、この信頼性レベルは、例示にすぎない。)
しかし、この信頼性は、SSDに記録されたりSSDから読み取られたりするビットの数に関連付けられる。この信頼性は、アプリケーションの時点からデータの信頼性を正確に反映していない可能性がある。SSDによって遂行される他の機能も、真正の信頼性に影響を与える可能性がある。
ストレージ・システムの信頼性をより正確に決定し、ストレージ・システムの信頼性を制御する必要性が残されているままである。
米国特許第8533558号明細書 米国特許第8631306号明細書 米国特許第8719665号明細書 米国特許第8892980号明細書 米国特許第9032245号明細書 米国特許第9317362号明細書 米国特許出願公開第2019/0164599号明細書
本発明は、上記従来技術に鑑みてなされたものであって、本発明の目的は、可変レベルの信頼性を提供する改善されたストレージ・システムを提供することにある。
本発明の実施形態によるソリッド・ステート・ドライブ(SSD: Solid State Drive)は、ホスト上の第1のアプリケーションから読み取り要請及び書き込み要請を受信するためのインターフェースと、少なくとも1つのチップを含むデータに対するストレージと、ストレージを使用してホスト上の第1のアプリケーションからの読み取り要請及び書き込み要請を処理するソリッド・ステート・ドライブ(SSD: Solid State Drive)コントローラと、SSDを設定するための設定モジュールと、信頼性テーブルに対するストレージと、を備え、信頼性テーブルは少なくとも第1のエントリ及び第2のエントリを含み、第1のエントリはSSDの第1の設定とSSDの第1の設定に対する第1の信頼性を識別(identify:特定する)し、第2のエントリはSSDの第2の設定とSSDの第2の設定に対する第2の信頼性を識別する。
本発明の実施形態による方法は、少なくとも1つのチップを含むデータに対するソリッド・ステート・ドライブ(SSD:Solid State Drive)についての信頼性を決定する段階と、SSDから信頼性テーブルの第1のエントリにアクセスする段階と、第1のエントリに基づいてSSDを設定する段階と、を含み、信頼性テーブルは少なくとも第1のエントリ及び第2のエントリを含み、第1のエントリは、SSDの第1の設定とSSDの前記第1の設定に対する第1の信頼性を識別し、第2のエントリはSSDの第2の設定とSSDの前記第2の設定に対する第2の信頼性を識別する。
本発明の実施形態による方法は、SSDに対する有効な信頼性を要請する信頼性の要請をホスト上のアプリケーションからSSDに伝送する段階と、ホスト上のアプリケーションでSSDからSSDに対する有効な信頼性を受信する段階と、SSDに格納された信頼性のテーブルを要請する信頼性テーブルの要請をホスト上のアプリケーションからSSDに伝送する段階と、ホスト上のアプリケーションでSSDから信頼性テーブルを受信する段階と、ホスト上のアプリケーションに対する少なくとも所望の信頼性に基づいて、信頼性テーブルからエントリを選択する段階と、ホスト上のアプリケーションからSSDに設定要請を伝送する段階と、を含み、信頼性テーブルのエントリのそれぞれは、SSDの設定とSSDの設定に対する信頼性を識別し、設定要請は信頼性テーブルでエントリを識別する。
本発明の実施形態によると、可変的なレベルの信頼性を提供する向上したストレージ・システムが提供される。
本発明の一実施形態による、クライアント及びソリッド・ステート・ドライブ(SSD:Solid State Drive)を有するサーバを含むシステムを示す。 図1のサーバの詳細事項を示す。 図1のSSDの詳細事項を示す。 図1のSSDに対する信頼性テーブルを示す。 図1のSSDの代替案のビューを示す。 図5のアプリケーションと図1のSSDとの間の交換されたメッセージを示す。 本発明の一実施形態による、所望の信頼性を提供するように、それ自体を(セルフ)設定する図1のSSDに対する例としてのプロシージャのフローチャートを示す。 それ自体(セルフ)を設定する図1のSSDに対する例としてのプロシージャのフローチャートを示す。 所望の信頼性を決定するための、図1のSSDに対する例としてのプロシージャのフローチャートを示す。 所望の信頼性を決定するための、図1のSSDに対する例としてのプロシージャのフローチャートを示す。 図1のSSDの有効な信頼性性を決定するための、図1のSSDに対する例としてのプロシージャのフローチャートを示す。 本発明の一実施形態による所望の信頼性を提供するために、図1のSSDに指示する図5のアプリケーションに対する例としてのプロシージャのフローチャートを示す。 本発明の一実施形態による所望の信頼性を提供するために、図1のSSDに指示する図5のアプリケーションに対する例としてのプロシージャのフローチャートを示す。
本発明の実施形態について詳細に参照を行い、それらの例は、添付図面に図示される。以下の詳細な説明では、本発明の概念を完全に理解することができるように、多数の特定の詳細事項が説明される。しかし、当業者は、これらの特定の詳細事項なしで本発明の概念を実施することができることを理解しなければならない。他の場合において、公知の方法、プロシージャ、コンポーネント、回路、及びネットワークは、実施形態の態様を不必要に曖昧にしないために詳細に説明していない。
第1、第2などの用語は、本明細書において多様な要素を説明するために使用される場合があるが、これらの要素は、この用語によって限定されてはいけないことが理解されるだろう。この用語は、1つの要素を他の要素と区別するためだけに使用される。例えば、第1のモジュールは、第2のモジュールと称され、同様に、第2のモジュールは、本発明の概念のカテゴリを超えずに、第1のモジュールと称される。
本明細書で、本発明の概念の説明に使用される用語は、特定の実施形態だけ説明するためのものであり、本発明の概念を限定しようとするものではない。本発明の概念及び添付された特許請求の範囲の説明に使用されているように、単数形(「a」、「an」及び「the」)は、文脈上明らかに別の意味を示していると判定されない限り、複数形も含むように意図される。本明細書で使用される用語 「及び/又は」は、1つ以上の関連され、列挙された項目の任意かつすべての可能な組み合わせを指して含むものと理解されるだろう。本明細書で「含む(comprises)」及び/又は「含んでいる(comprising)」を使用するとき、用語「含む(comprises)」及び/又は「含んでいる(comprising)」は、言及された特徴、整数(integer)、段階、演算、要素、及び/又はコンポーネントの存在を明示するが、1つ以上の他の特徴、整数、段階、演算、要素、コンポーネント、及び/又はこれらのグループの存在又は追加を排除しないことを理解するはずである。図面のコンポーネント及び特徴は、必ずしも縮尺通り図示されたものではない。
製造業者によって列挙された信頼性が、ストレージ装置の真正の信頼性を正確に反映しない可能性がある方法の例示として、データ圧縮を考慮する。ソリッド・ステート・ドライブ(SSD:Solid State Drive)がデータを記録する前にデータを圧縮すると、圧縮されたデータのシングルビットエラー(error)が、実際に生データ(raw data)の多数のビットに影響を与える可能性がある。たとえば、データが2:1の有効比率で圧縮された場合(つまり、記録されたデータのサイズが生データのサイズの1/2である)、シングルビットエラーは、2ビットの生データに影響を与えると予想される。つまり、平均誤り率を実質的に2倍に高める。また、最悪の場合は、エラーに起因してSSDが生データを成功的に圧縮解除することができず、生データ全体が失われる可能性がある。
また、データの重複排除(data deduplication)を考慮することができる。データの重複排除では、SSDは多数のファイルの中から同一のデータチャンク(chunks of data)(あるいは複数回同一に格納された全体のファイルでさえ)を識別して、ストレージの効率性を改善しようとする。データの多数のコピーを格納する代わりに、SSDは、ただ1つのコピーを格納し、そしてそのデータのチャンクを含む、多様なファイルからその(該当する)コピーを参照することができる。しかし、重複排除されたデータにエラーがある場合は、そのエラーは、データを使用するすべてのファイルでエラーとなって誤り率を再び拡大する。たとえば、同一のデータが3つの異なるファイルに使用される場合は、重複したデータのシングルエラーは、実際に3つの異なるファイルで3つのエラーである。
なお、異なるアプリケーションは、それぞれ異なる信頼性要件を有し得る。たとえば、1つのアプリケーションはアプリケーションによって記録された1MBに1つのエラーだけを望んでいるが、別のアプリケーションは、アプリケーションによって記録された1GBのデータに1つのエラーだけを望む場合がある。アプリケーションは、使用可能な異なるストレージ装置の中から選択するのに役立つように、このような信頼性の比率を明示することができるが、現在、単一のストレージ装置が多数の異なる信頼性レベルをサポートすることができない。
実装に応じて、SSDは多数のレベルを含む場合があり、信頼性は多数のレベルに管理され得る。このような信頼性が管理される多数のレベルは、NANDフラッシュメモリチップ、不揮発性メモリチップ又はメモリチップの他のタイプのようなフラッシュメモリチップであり得る(データが実際に格納される)メモリチップそのもの、(メモリチップから読み取られたエラーを検出及び/又は訂正する)エラー訂正コード(ECC:Error Correcting Code)モジュールを使用すること、及び (若干の冗長性(redundancy)のために、多数のチャンネルを通じて複数のメモリチップに渡ってデータが格納される)RAID/消去コーディングの実装を含み得る。
RAID(Redundant Array of Independent Disk)又は消去コーディング(Erasure Coding)を使用して、エラーの検出及び訂正を提供する多様な方法がある。たとえば、RAID1、RAID5、RAID6、又はエラー訂正をサポートする代替案の消去コーディングの実装を使用することができる。各実装は、信頼性の多様なレベルを提供する。
ECCモジュールが、また使用されることがあり、任意の所望のECCアルゴリズムを実装することができる。エラー検出及び/又は訂正を提供することができる例としてのアルゴリズムは、基本パリティチェック(basic parity check)、CRC(Cyclic Redundancy Check)、ハミングコード(Hamming Codes)、及びこれと類似したものを含んでおり、すべてはエラーを検出及び/又は訂正を遂行するためのよく知られているスキーム(scheme)である。各実装は、信頼性の多様なレベルを提供する。
最後に、NANDフラッシュメモリチップは、信頼性と関連していくつかのオプションを提供することもできる。たとえば、シングルレベルセル(SLC:Single-Level Cell)を考慮することができる。SLCは、1ビットのデータを格納することができる。セルに適切な電圧を印加することで、SSDはビットを読み取ることができる(つまり、セルに1つの電圧を印加すると、セルは「0(zero)」を格納するように決定される一方で、セルに異なる電圧を印加することにより、セルは「1」の値を格納するように決定される)。マルチレベルセル(MLC:Multi-Level Cell)は、2ビットのデータを格納するため、セルに格納された値を決定するために、最大4つの異なる電圧レベルが要求される。トリプルレベルセル(TLC:Triple-Level Cells)は、最大3ビットのデータを格納するため、セルに格納された値を決定するために、最大8つの異なる電圧レベルが要求される。クワッドレベルセル(QLC:Quad-Level Cell)は、最大4ビットのデータを格納するため、セルに格納された値を決定するために、最大16個の異なる電圧レベルが要求される。
セルに格納されたビットの数が増加するにつれて、異なる可能な格納値を区分する電圧範囲の幅はより小さくなる。したがって、QLCが印加された電圧処理から発生するエラーに起因してエラーを返す可能性が、SLCがこのようなエラーを返すよりも高くなる(MLC及びTLCの場合も同様である)。なお、セルは格納するビットの数が増加するにつれて、より少ない書き込みをサポートする傾向がある。したがって、SLCは、最大10万個のデータの書き込みをサポートすることができるが、QLCは最大100個のデータの書き込みのみをサポートすることができる(その後、データを記録するにあたって、エラーが発生する可能性がより高くなる)。(また、セルの値を決定するために、セルに印加しなければならない電圧の数が、セルに格納されたビットの数に応じて増加するため、SLCよりQLCのセルからデータを読み取るのに時間が、さらにかかる可能性がある。)
セルに格納されたビットの数と入力電圧の不正確な処理に起因するエラー(発生)の可能性との間には関係があるため、QLCは、他のセルタイプより、このようなエラーを経験する可能性がより高く、SLCは、そのようなエラーを経験する可能性が最も低いと結論を下すことができる(また、その代わりに、QLCは最も信頼性の低いセルタイプであり、SLCはより信頼性の高いセルタイプである。)。もちろん、NANDフラッシュメモリチップが両方のタイプのセルをすべて提供していない限り、特定の信頼性を達成するために、データを所望のセルタイプに格納することはできない。しかし、格納することができるよりも少ない数のビットを格納するセルを使用することができるため、信頼性を向上させることができる。
QLCのタイプを考慮する。 QLCが4ビットのデータを格納すると、信頼性は知られているとおりである。しかし、QLCが、例えば1つのビットだけ格納すると(他の3ビットは、デフォルト値(default values)又は「ドントケア(don’t care、どちらでもよい)」値で残す)、QLCは事実上SLCをエミュレート(emulate)する。「ドントケアのビットの値を区別する電圧処理エラーに起因して発生するエラーは、関連がなくなる。つまり、セルの値を決定するために印加しなければならない入力電圧は、事実上ただ2つだけである。(本発明の実施形態は、QLCが1ビットだけを潜在的に格納して読み取るように実装されることを示唆しているのではなく、「ドントケア(don’t care)」ビットと関連して、返された情報及びその情報と関連付けられているエラーは、共に無視され得ることを示唆する。本発明の実施形態は、またQLCに一度に1つのビットだけ格納することが、増加された記録動作の数をサポートするQLCをもたらすことができることを示唆しない。)したがって、QLCが1ビットだけを格納する場合は、誤り率が減少し、信頼性が向上し得る。設計されたよりも少ないビットを格納するのに使用される任意のセルタイプの場合にも同様である。したがってQLCはTLC、MLC又はSLCをエミュレートすることができ、TLCはMLC又はSLCをエミュレートすることができ、MLCはSLCをエミュレートすることができ、すべて信頼性が向上し得る。(逆に遂行されることは有り得ない。どのようなセルのタイプも信頼性が落ちても、指定された情報のビットの数以上を格納することができない。)
QLCを取得し、それを経験的にテストし、4ビットより少ないビットを格納するときに、それがどれくらいの信頼性があるかを決定することが可能である。つまり、TLC及びMLCについても同様である。このテストは、QLCに記録されるデータの量を除いて、QLC(又は他のセルのタイプ)が、一般的なそれらの信頼性を決定するためにテストされる方法と異ならない。したがって、各セルに対して、セルによってサポートされる最大数よりも少ない場合にも、任意のビットの数を格納するときの信頼性を決定することが可能である。
RAID/消去コーディングとECCモジュールの場合は、その信頼性を推定することができる数学的モデルがあるか、又は信頼性は、実際の使用によって経験的に決定される(個々のセルタイプの信頼性がどのように決定され得るかと非常に類似する)。
SSDの多様なレベルにおいて、エラー訂正スキームが互いに完全に独立ではないというのが事実だ。つまり、RAIDの実装及びECCモジュールの誤り率が10-10であり、QLCを使用して1つのビットのみ格納する場合、誤り率が10-10である場合、3つすべてを使用すると、10-30の誤り率(個別誤り率の積)が発生しない。しかし、多様なレベルのソリューションは、少なくとも部分的に補完的である。SSDの1つ以上のレベルでエラー訂正スキームの組み合わせを使用すると、別個に個別的なレベルによって提供されるよりは、高い信頼性の比率を提供することができる。
SSD装置の製造時、多様なレベルで、それぞれのエラー訂正の組み合わせの信頼性をテストして、任意の個々の組み合わせの全体的な信頼性を決定することができる。したがって、例えば、NANDフラッシュメモリにQLCが含まれている場合には、つまり、4つの可能な変形(QLCを使用して4ビット、3ビット、2ビット又は1ビットを格納する)があり、ECCは3つの異なるエラー訂正スキームを提供し、RAID/消去コーディングの実装が10個の異なるエラー訂正変形を提供する場合、総120個の異なる組み合わせ(4×3×10=120)を有し得る。製造業者は、このような各組み合わせをテストし、各組み合わせの個々の信頼性を決定することができる。この情報は、SSD内のストレージ(例えば、設定モジュール)に格納され得る。設定モジュールは、また所望の信頼性を達成するために、多様なレベルにおいて、適切なエラー訂正の組み合わせを選択することを担当することができる。
本発明の一部の実施形態において、アプリケーションは、データに適用される信頼性を特定することができる。たとえば、一部のアプリケーションは、データの高い信頼性を要求することができるが、他のアプリケーションは、データが(例えば、一時的なデータ又は失われた場合簡単に復元されるデータ)損失される場合、あまり気にしない可能性がある。アプリケーションに指定された信頼性が与えられると、設定モジュールは、多様なエラー訂正の組み合わせに対する信頼性の比率を使用して、アプリケーションデータの目標信頼性(target reliability)を達成するようにSSDを設定することができる。多数のアプリケーションが同一のSSDにデータを記録する場合、設定モジュールは、すべてのSSDがアプリケーションの中の任意の1つによって要求される最高の信頼性で動作するように設定するか、又は設定モジュールは、SSDの異なる領域が異なる信頼性のレベルで動作するように設定することができる。たとえば、RAID又はECCの実装を変更せずに、SSDはより高い信頼性を要求するデータのために、1ビットだけをQLCに格納することができ、より低い信頼性を許容するデータのために4ビットをQLCに格納することができる。本発明の実施形態は、データの任意の所望のユニット(例えば、ページ、ブロック、プレーン、ダイ、チップ、又はすべてのSSD)に信頼性管理がサポートできることに留意されたい。
本発明の他の実施形態では、アプリケーションは、データに対する信頼性の要件を提供せず、単純にデータを提供することができる。本発明の概念のこのような実施形態において、より詳細には、SSDが、圧縮、データの重複排除、又は信頼性の影響を与えることができる任意の他のトランザクション(transaction)を使用できる、本発明の概念の実施形態の場合には、SSDは任意の特定のデータユニット(unit)に対する有効な信頼性(effective reliability)が何なのかを追跡することができる。したがって、アプリケーションの生データが圧縮される場合には、SSDはデータの有効圧縮比率を追跡することができ、この比率は誤り率に対する乗数(multiplier)を決定するのに使用され得る。また、SSDがデータの重複排除を使用する場合には、SSDは特定のデータユニットを共有しているファイルの数を追跡することができ、これは(再び)誤り率の乗数を決定するのに使用され得る。その後、公示された信頼性が達成されるように保障するために、設定モジュールは、この情報を、多様なエラー訂正の組み合わせに対する信頼性の比率と組み合わせて使用することにより、公示された信頼性を提供する適切な組み合わせを選択することができる(SSDの動作をベースに、エラーがどのように増大されるかを考慮する)。
目標信頼性を達成するために、エラー訂正の組み合わせを選択するときに考慮することができる唯一の変数は、信頼性ではないことに注意しなければならない(ただし、主要な変数であり得る)。もし信頼性だけが唯一の考慮事項であったなら、SSDは、単に最も高い信頼性を提供するエラー訂正の組み合わせを使用するように設定することができ、それで終わりであり得る。つまり、より高い信頼性を達成することができない。しかし、多様なエラー訂正の組み合わせも、また他の影響(implication)を有する。このような他の影響は、空間のオーバーヘッド(space overhead)と性能を含む。たとえば、QLCを使用して情報の1ビットのみを格納する場合は、QLCはより高い信頼性で動作するが、(QLCは4ビットだけ格納することができるため)ストレージ側面からは1/4程度だけ効率的である。また、性能も考慮すべき事項である。他のエラー訂正の組み合わせは、データ処理に多くの時間が必要な場合があり、これはSSDのレイテンシ(latency)に影響を与えることができる。
したがって、他の考慮事項を考慮に入れると、設定モジュールは、目標信頼性の比率を提供するSSDを設定するために使用するエラー訂正の組み合わせを選択することができる。たとえば、空間オーバーヘッドが重要な要素とみなされる場合には、QLCが4ビットのデータを格納するようにするエラー訂正の組み合わせが(また、ECCモジュール又はRAID/消去コーディングにさらに依存する)、QLCで1ビットのみを格納するエラー訂正の組み合わせよりも選好され得る。また、性能が空間のオーバーヘッドよりも大きい問題である場合、QLCが1ビットのデータのみを格納しても、データを訂正するためにECCモジュール及び/又はRAID/消去コーディングにそれほど依存しないエラー訂正の組み合わせが選好される。
図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は、他の可能なものの中で、LAN(Local Area Network)、WAN(Wide Area Network)、MAN(Metropolitan Area Network)、又はインターネットのようなグローバルネットワークを含み得る。データは、ネットワーク115を通じて直接伝送されることが有り得るか、或いは例えば、暗号化又はVPN(Virtual Private Network)を使用して保護されることが有り得る。ネットワーク115は、有線又は無線の接続を含み得る。また、ネットワーク115は、この代替案の任意の所望の組み合わせを含み得る。たとえば、クライアント(105-1、105-2)は、無線接続を介してLANに接続され、最終的にはLANは有線接続を介してインターネットに接続され、最終的にはインターネットは、サーバ110に接続された別のLANに接続され得る。クライアント(105-1、105-2)とサーバ110との間の接続は、多様であり得る。つまり、すべての状況において、接続が同一の必要はない。
サーバ110は、プロセッサ120、メモリ125、及びソリッド・ステート・ドライブ(SSD)130を含み得る。プロセッサ120は、オペレーティングシステムを含むソフトウェア・スタック、アプリケーション、(ファイルシステムのような)ストレージソフトウェア、及びサーバ110に取り付けられた装置(例えば、メモリ125及びSSD130)を管理するのためのコントローラのソフトウェアを含み得る。プロセッサ120は、任意のタイプのプロセッサ、例えば、Intel Xeon、Celeron、Itanium又はAtomプロセッサ、AMD Opteronプロセッサ、ARMプロセッサなどであり得る。図1は、単一のプロセッサ120を示しているが、サーバ110は、任意の数のプロセッサを含むことがあり、それぞれのプロセッサは、シングルコア又はマルチコアのプロセッサであり得るし、任意の所望の組み合わせで混合され得る。
メモリ125は、サーバ110で使用される一般的なメモリであり得る。メモリ125は、フラッシュメモリ、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、永続性RAM(Persistent Random Access Memory)、FRAM(Ferroelectric Random Access Memory)又はMRAM(Magnetoresistive Random Access Memory)などのようなNVRAM(Non- Volatile Random Access Memory)のような任意のタイプのメモリであり得る。メモリ125は、揮発性メモリ又は非揮発性メモリであり得る。メモリ125は、また異なるメモリタイプの任意の所望の組み合わせであり得る。メモリ125は、メモリコントローラ(図1に図示せず)によって管理(又は制御)され、これはソフトウェア・スタックの一部であるドライバを有するサーバ110の別個のコンポーネントであり得る。メモリ125は、「短期(short-term)」と呼ばれるデータ、すなわち、長期間格納することが予想されていないデータを格納するのに使用される。短期データの例は、一時的ファイル、アプリケーションによってローカルで使用されるデータ(他のストレージ位置からコピーされたことが有り得る)などを含み得る。
プロセッサ120とメモリ125は、また多様なアプリケーションが実行されるオペレーティングシステムをサポートすることができる。このアプリケーションは、メモリ125又はSSD130からデータを読み出したり、メモリ125又はSSD130に記録する要請を発行したりすることができる。メモリ125は、「短期」と呼ばれるデータを格納するのに使用されるが、SSD130は、「長期(long-term)」とみなされているデータ、すなわち、長期間格納することが予想されるデータを格納するのに使用されるストレージ装置であり得る。SSD130は、プロセッサ120上で実行されるソフトウェア・スタックでは、コントローラのソフトウェアを使用してアクセスされる。図1は、ただ1つのSSD130を図示するが、本発明の実施形態は、任意のタイプのストレージ装置を含み、任意の所望の接続を介して接続される。したがって、SSD130は、SATA(Serial AT Attachment)ハード・ディスク・ドライブ、イーサネットのSSD又は他のタイプのストレージ装置に代替され得る。なお、本発明の実施形態は、任意の数(0以上)のストレージ装置を含むことがあり、それぞれのストレージ装置は、任意の所望のタイプであり得るため、多数の異なるタイプのストレージ装置がサーバ110で混合される場合がある。
図2は、図1のサーバ110の詳細事項を示している。図2に示されたように、一般に、サーバ110は、1つ以上のプロセッサ120を含み得る。プロセッサ120は、メモリコントローラ205とクロック210を含み、マシンのコンポーネントの動作を調整するのに使用される。プロセッサ120は、また、例えば、RAM(random access memory)、ROM(read-only memory)、又は他の状態のストレージ媒体を含み得るメモリの125に結合される。プロセッサ120は、ストレージ装置130とネットワークコネクタ215に結合され、ネットワークコネクタ215は、例えば、イーサネットコネクタ又は無線コネクタであり得る。プロセッサ120は、またバス220に接続され、バス220は、ユーザーインターフェース225及び入力/出力インターフェースポートに取り付けられる。入力/出力インターフェースポートは、他のコンポーネントの中で入力/出力のエンジン230を使用して管理される。
図3は、図1のSSD130の詳細事項を示している。図3において、SSD130は、ホスト・インターフェース・ロジック(HIL)305、SSDコントローラ310、及び多様なメモリチップ(315-1〜315-8)(また、「メモリストレージ」と呼ばれる)を含むことことがあり、メモリチップ(315-1〜315-8)は、多様なチャネル(320-1〜320-4)に組織化される。ホスト・インターフェース・ロジック305は、SSD130と他のコンポーネント(例えば、図1のプロセッサ120又は他のSSD)との間の通信を管理することができる。このような通信は、SSD130からデータを読み出すための読み取り要請及びSSD130にデータを記録するための書き込み要請を含み得る。ホスト・インターフェース・ロジック305は、単一のポートのみを使用してインターフェースを管理することができるか、又は多数のポートを介してインターフェースを管理することができる。代替案として、SSD130は、多数のポートを含むことがあり、これらの各々は、そのポートを介したインターフェースを管理するために、別のホスト・インターフェース・ロジック305を有し得る。本発明の実施形態は、また可能性を混合することができる(例えば、3つのポートを有するSSDは、1つのポートを管理するための1つのホスト・インターフェース・ロジック、及び他の2つのポートを管理するための第2のホスト・インターフェース・ロジックを有し得る。)。
SSDコントローラ310は、メモリコントローラ(図3に図示せず)を使用して、メモリチップ(315-1〜315-8)上のガベージコレクション(garbage collection)及び他の動作とともに読み取り及び書き込みの動作を管理することができる。メモリチップ(315-1〜315-8)は、NANDフラッシュメモリチップ又は他の不揮発性メモリチップのような、任意のタイプのメモリチップであり得るが、本発明の実施形態は、NVRAM(Non-Volatile RAM)のような他のストレージ・システムへ拡張することができる。
SSDコントローラ310は、変換レイヤー325、エラー訂正コードモジュール330、RAID/消去コーディングモジュール335、設定モジュール340、及び信頼性テーブルストレージ345を含み得る。変換レイヤー325は、図1のプロセッサ120上で実行されるアプリケーションによって使用される論理ブロックアドレス(LBA)から、データがSSD130に実際に格納される物理ブロックアドレス(PBA)へのマッピング(mapping)を管理することができる。変換レイヤー325を使用することにより(本発明の一部の実施形態では、変換レイヤー325は、フラッシュ変換階層325と呼ばれることがある)、SSD130は、アプリケーションがデータの現在存在しているところをよく知っているように維持しなければならないことなしに、データをメモリチップ(315-1〜315-8)の間で移動させることができる。(例えば、アプリケーションが新しい値にデータを上書きする(overwrite)ことを要請する場合に、これが発生することができる(SSDは、一般的にその位置で(原位置で、in place)データの上書きをサポートしないため、新しい位置に新しいデータを格納する。)。また、いくつかの有効なデータを含むブロックがガベージコレクションの対象となった場合には、これが発生することができる。)。変換レイヤー325は、SSD130内のどこかに、いくつかの(好ましくは)不揮発性ストレージに格納されたテーブルとして実装され得る。
エラー訂正コード(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によって使用される例としてのアルゴリズムは、パリティコード(parity codes)、CRC(Cyclic Redundancy Check)コード又はハミングコード(Hamming codes)のようなものを含む。ECCモジュール330は、適切な命令語を実行する汎用プロセッサを使用するか、又はFPGA(Field Programmable Gate Array)、ASIC(Application-Specific Integrated Circuit)、GPU(Graphics Processing Unit)若しくはその他の所望の実装を使用して実装され得る。
RAID/消去コーディングモジュール335は、メモリチップ(315-1〜315-8)上にデータを格納するために、任意の所望のRAID又は消去コーディングスキーム(scheme)を実装することができる。(RAID(Redundant Array of Independent Disks)は、消去コーディングの特定の実装セットを記述しているため、RAID/消去コーディングモジュール335は、機能面で縮小せずに消去コーディングモジュールとして、より一般的に記述され得る。)一般的に、RAID/消去コーディングモジュール335は、SSD130上に記録されるデータを取得して、そのデータを多様なユニットに分割し、これらのユニットを異なるメモリチップ(315-1〜315-8)に格納することができる。冗長性を導入するためには、同一のデータは、多数のメモリチップ(315-1〜315-8)上に格納することができるか、又は(パリティコード、CRCコード又はハミングコードのような)エラー訂正情報が使用され得る。このような方式で、エラーは検出されて訂正される。(RAID/消去コーディングモジュール335及びECCモジュール330の両方で同一の基本的なアプローチが使用されることがあるものの、異なる規模(比率、scale)であり得る。つまり、ソリューションは、このように互いに補完される場合が有り得る。)消去コーディングモジュール335は、適切な命令語を実行する汎用プロセッサを使用したり、FPGA、ASIC、GPU又はその他の所望の実装を使用したりして実装される。
設定モジュール340は、信頼性を向上させるためにどのような技術が使用されるかをプログラミングするのに使用される。異なる信頼性の高い技術をどのように使用できるかは疑問であるが、答えは簡単である。ECCモジュール330及びRAID/消去コーディングモジュール335は、それぞれ(潜在的に)異なる信頼性の比率を有する異なるエラー訂正技術に対するサポートを提供することができる。設定モジュール340は、ECCモジュール330及び/又はRAID/消去コーディングモジュール335に与えられた時間にどのようなエラー訂正技術が使用され得るかを指示するのに用いられる。
しかし、この答えは、フォローアップの質問につながる。つまり、多様なレベルの信頼性を提供する、異なるエラー訂正技術があるならば、なぜ常に最も安定的な(信頼性の高い)アプローチを使用しないのか?。答えは、異なる技術がSSD130の動作に他の影響を与える可能性があり、これはより高い信頼性の利点を相殺することができるというものである。たとえば、同一のデータがそれぞれのメモリチップ(315-1〜315-8)に格納される可能性を考慮してみよう。このアプローチは、データの8倍(重)(8-fold)の複製を導入し、単一のメモリチップの故障によりデータの損失を生じさせない。このアプローチの欠点は、同一のデータが8回格納されるため、SSD130の総使用可能なストレージは、単一のメモリチップのストレージよりも大きくないというものである。言い換えれば、SSD130によって提供される総利用可能ストレージ(available storage)は、SSD130によって提供される物理ストレージの8分の1にすぎないか、又は使用可能なストレージの87.5%がデータの重複されたコピーのために予約されている。データが敏感しすぎて8倍の複製が必要な場合には、この対価は受け入れることができる。しかし、大多数のユーザーにこれらの冗長性は過剰であり、使用可能なストレージ(usable storage)の減少は、容認することはできない。
したがって、設定モジュール340は、ECCモジュール330及びRAID/消去コーディングモジュール335によって提供されるものから、特定の技術を使用するようにECCモジュール330及びRAID/消去コーディングモジュール335を指示(或いはプログラム又は設定する。つまり、どのような用語も選好され得る)するように使用される。
ECCモジュール330及びRAID/消去コーディングモジュール335の外に、設定モジュール340によって設定される他のコンポーネント、具体的にはメモリチップ(315-1〜315-8)がある。異なるメモリチップは、データを格納する別の方法を提供することができ、これは、メモリチップの信頼性に影響を与えることができる。この事実を理解するには、異なるタイプのメモリストレージを理解することが重要である。
メモリは、何が起きているかによって、多様なレベルの粒度(細かさ、granularity)でデータを管理する。たとえば、データを読み書きする基本的なアクセスユニットは、ページである(これは、任意の所望のサイズであり得る。例えば、4KBのデータ)。ページがフリー(free)の状態にある場合は、ページに記録することができる。ただし、新しいデータが既存のデータを代替するとき、ページを上書きすることができない場合がある。この場合、元のページには有効でないとマークされ、新しいデータが新しいページに記録される。ページはブロックと呼ばれるグループに組織(organize)される(また、ブロックは複数のページを含む)。例えば、ブロックは、64又は128ページを有し得る。ブロック(又はブロックのグループであるスーパーブロック)は、一般的に、データを消去(erase)(これは、ページを更新できるフリー(free)の状態に返す)するユニットである。したがって、消去のために選択されたブロックに任意の有効なデータがある場合は、ブロックを消去する前に、有効なデータをブロックの外(又は他のブロック)にコピーしなければならない(ブロックを消去するとき、有効なデータが失われてはいけない)。
しかし、より微細なレベルでさえ、データストレージ上に変形が存在する。セルと呼ばれる個々のユニットは、ページより細かい粒度でデータを格納する。(個々のセルは、直接アクセスすることはできない。全体のページを1つのユニットとして読み書きすることができる。)各セルは、多様な電圧が印加されるとき、応答するように設計された。このような異なる応答を使用して値をセルに読み書きすることができる。
最も単純な形式で、セルは、その応答が変化する単一のトリガー(trigger)電圧(境界点として思われる場合がある)を有している。つまり、そのトリガー電圧未満の電圧を印加すると、応答は、そのトリガー電圧以上の電圧を印加することとは異なる。したがって、例えば、入力電圧が0Vから5Vまで変化することができれば、セルが応答し始めることができる点は2.5Vになれる。(セルが応答する方法は、セルに格納された値に応じて異なる。たとえば、セルが2進値の「0」を表す場合、セルは、1つの電圧(例えば、第1の電圧)を出力することができるが、セルが2進値の「1」を表す場合、セルは、他の電圧(例えば、第2の電圧)を出力することができる。)シングルビットのみを格納するセルは、シングルレベルセル(SLC: Single Level Cell)とも称されるようになる。
マルチレベルセル(MLC:Multi-Level Cell)は、1ビットより多くのビットを格納するセルを指す。「マルチ」は、「2以上」を意味するものと理解されるが、実際にはMLCは、一般的に2ビットを格納することができる一方で、トリプルレベルセル(TLC:Triple Level Cell)は、3ビットを格納することができ、クワッドレベルセル(QLC:Quad-Level Cell)は、4ビットを格納することができる。MLC(及び1ビットより多くのビットを格納する他のすべてのタイプのセル)は、多数のビットを格納するため、MLCは多数のトリガー電圧を有する。たとえば、入力電圧が0Vから5Vまで変化することができる場合は、MLCは1V、2V、3V及び4Vにトリガー電圧を有し得る。トリガー電圧に応じて、フラッシュメモリチップは、セルに格納された実際の値を決定することができる。したがって、例えば、トリガー電圧が1Vであれば、セルは値00を格納することができ、トリガー電圧が2Vであれば、セルは値01を格納することができ、トリガー電圧が3Vであれば、セルは値10を格納することができ、トリガー電圧が4Vであれば、セルは値11を格納することができる。
多様なセルのタイプは、互いに異なる利点/欠点を有する。明らかに、セル当たり1つ以上のビットの情報を格納することができるというのは、同一の量のデータを格納するために、より少ない数のセルが必要であることを意味する。したがって、データがSLCに格納されると、同一の量のデータを格納するためにMLC、TLC又はQLCが必要とするより、もっと多くのSLCが必要である。より多くのビットを格納する個別のセルは、より少ないビットを格納するセルよりも高価になりがちであるが、増加された費用は、そのようなより少ないセルを必要とすることで相殺され得る。したがって、同一の量のデータを格納するためには、一般的にQLCがTLCよりも低廉であり、これはMLCよりも低廉であり、これはSLCよりも低廉である。
しかし、コストを相殺することができる他の要因がある。一番目に、SSDは、セルに格納された値を決定するためにいくつかの他の電圧に対してセルをテストすしなければならないため、遂行すべきこのようなテストが多ければ多いほど、セルの性能が低下する可能性がある。たとえば、QLCを考慮する。QLCは4ビットのデータを格納するため、QLCは16個の可能な値のいずれか1つを取ることができる。したがってQLCを読み取るには、16個の可能なトリガー電圧に対してQLCをテストすることを要求することができ、これは2つのトリガー電圧に対してセルをテストするよりも時間がかかる。したがって、QLCはTLCよりも遅く読み取られ、これはMLCよりも遅く読み取られ、これはSLCよりも遅くなる。なお、セルが、格納できるビットが多ければ多いほど、セルのライフタイムでプログラム/消去サイクルの数が減少し得る。例えば、SLCはセルが失敗する前に、10万回のプログラム/消去動作を保障することができるが、MLCの場合1万回、TLCの場合1千回、QLCの場合百回に落ちる可能性がある。従って、異なるタイプのセルが異なるストレージプロファイル(profile)に対してもっとよく用いられ。つまり、QLCはほとんど変わらないデータを格納するためにもっとよく使用される一方、SLCは、比較的に変わる頻度が高いデータに使用される。
セルタイプの最終的な欠点は、より高い密度(density)のデータを格納するセルに必要なトリガー電圧の数と再び関連付けられている。トリガー電圧の数が多ければ多いほど、そのトリガー電圧が互いに近くに配置される。しかし、トリガー電圧が互いに近いほど、潜在的なエラーに対するセルの脆弱性が高くなる。たとえば、QLCを考慮する。QLCは4ビットのデータを格納できるため、QLCには16個の可能な値が存在する。16個の可能な値を区別するには16個のトリガー電圧が必要になる可能性があり、これはトリガー電圧の間の間隔(gap)が0.25Vよりわずかに大きい可能性があることを意味する。セルが実際に意図したものとは異なる電圧に応答していると考えるが、急激な電圧降下(dip)又は電圧上昇(surge)が要求されず、これはQLCがセル読み取りの試みに誤って応答する可能性があるということを意味する。(考慮すべきトリガー電圧が少ないため、エラーのマージン(margin of error)が大きくなっても、この同一の解析は、MLC及びTLCのセルタイプにも適用することができる。)
したがって、信頼性の問題に戻ると、QLCは、より高いデータ密度を格納することができるが、エラーのマージンが減少される犠牲を払わなければならない。しかし、QLC(又は2ビットのデータ以上を格納する任意のタイプのセル)が多数のビットを格納することができるとしても、QLCが、必ずしも多数のビットを格納しなければならないという意味ではない。このようなQLCは、4ビットのデータ未満を格納するために使用され、QLCの他のビットに割り当てられた任意の値は、読み取りの動作では無視される。QLCにより少ないビットを格納することで、有効なトリガー電圧の数が減少してエラーのマージンを広げることができる。(QLCは、16個のトリガー電圧のすべてをテストするためには、相変わらずにハードワイヤ(hardwire)されることがあるが、セルにアクセスするのに必要な時間は減少されず、エラーの発生可能性だけ減少される。)
例えば、QLCが単に1ビットのデータを格納するために使用されたと仮定する。この値(0又は1)は、QLCの4ビットの中のいずれか1つに格納され、他のビットはSSDによって事実上無視される(つまり、そのビットは、セルが記録されるとき、任意の値が割り当てられ、そのビットから読み取られた値は無視され、関心あるビットのみが返される)。QLCは、今では、1つのトリガー電圧のみ実質的に有するため、セルが誤って(例えば、電圧変動に起因して)書き込まれたり、誤って読み取られたりする可能性が減る。
従って、均等なフラッシュメモリチップ(315-1〜315-8)の動作上の挙動(behavior)を変更することで、SSDの信頼性に影響を与えることもできる。しかし、考慮すべきいくつかの警告がある。まず、フラッシュメモリチップ(315-1〜315-8)の動作挙動を変更することで、SSDの信頼性が影響を受けるか否かは、フラッシュメモリチップ(315-1〜315-8)に使用されるセルのタイプに依存する。セルのデータ密度が高いほど、SSDの信頼性に影響を与えることができるオプションがもっと多い。たとえばSLCは、1ビットのデータのみを格納するため、SLCの動作形態を変更することで、SLCだけを使用するSSDの信頼性は向上しない可能性がある。
なお、上述した改善点は、一方向にのみ作動する。より高い密度のデータを格納することができるセルは、セルのいくつかのビットを無視することにより、より低密度のデータを格納するのに使用され得る。しかし、セルが、格納することができるよりも多くのビットをセルに格納しようと試みて、SSDの信頼性を低下させることはできない。例えば、SLCは1ビットのデータだけを格納することができるため、(許容できる信頼性の減少に関係なく)SLCに2ビットを格納することはできない。(もちろん、格納可能なものよりも少ない数のビットを格納するセルは、その増加がセルの能力を超えていなければ、データ密度が増加することができる。したがって、例えば、4ビットを格納することができるQLCが、現在2ビットだけ格納する場合は、データ密度が3ビット又は4ビットに増加することができるが、5ビットには増加することができない。)
二番目に、フラッシュメモリチップ(315-1〜315-8)を使用して同一のデータをすべて格納するように、セルに格納することができるよりも少ない数のビットを格納すると、SSDで使用可能なストレージ(usable storage)が減少する可能性がある。たとえば、QLCセルを使用して総計利用可能なストレージ容量(total available storage)が1TBのSSDを考慮する。QLCを使用してセル当たり1つのビットのみが格納される場合には、SSDの有効容量は、単に256GB(総計利用可能なストレージ容量の25%)である。残りの768GBのストレージは、QLCの未使用ビットで「損失」される。
一方、異なるフラッシュメモリチップは、互いに異なる全体的な(overall)信頼性を達成するように設定される。したがって、例えば、フラッシュメモリチップ(315-1〜315-8)は、すべてQLCセルを使用すると仮定しよう。フラッシュメモリチップ(315-1)は、それぞれのセルに1つのビットだけを格納するように設定され、これにより減少された利用可能なストレージを犠牲にして増加された信頼性を提供する。一方、フラッシュメモリチップ(315-2)は、それぞれのセルに4ビットを格納するように設定されることがあって、低い信頼性を犠牲にして利用可能な最大のストレージを提供することができる。
設定モジュール340は、適切な命令語を実行する汎用プロセッサを使用して、又はFPGA、ASIC、GPU又は任意の他の所望の実装を使用して実装される。図3において、ECCモジュール330、RAID/消去コーディングモジュール335及び設定モジュール340は、異なるコンポーネントとして図示される。これらのコンポーネントは、別々に製造されてSSD130に設置されることがあるため、これらは別々のコンポーネントとして実装される。また、このようなコンポーネントは、実際に物理的に別の場所に有り得る。例えば、図5を参照して上述され、且つ追加で議論されるように、ECCモジュール330は、個々のチャンネル(しかし、多数のメモリチップに)に適用され得る一方で、RAID/消去コーディングモジュール335は、多数のチャンネルに渡って適用される。このような設定において、ECCモジュール330、RAID/消去コーディングモジュール335及び設定モジュール340の中の任意のものが共通のハードウェア(common hardware)を使用して実装される可能性は少ない。しかし、本発明の概念のいくつかの実施形態では、これらのコンポーネントの一部又は全部が共通のハードウェアを使用して実装される。
上述した議論は、設定モジュール340がメモリチップ(315-1〜315-8)、ECCモジュール330及びRAID/消去コーディングモジュール335を設定するために何をすることができるかに焦点を当てているが、設定モジュール340がそのような動作を遂行するようにトリガー(trigger)することに関しては、まだ説明されていなかった。以下の図5及び図6は、設定モジュール340が動作を遂行するようにトリガーすることができることを議論する。
最後に、設定モジュール340をサポートするために、SSD130は、信頼性テーブルのストレージ345を含み得る。信頼性テーブルのストレージ345は、信頼性テーブルを格納することができる。この信頼性テーブルは、メモリチップ(315-1〜315-8)、ECCモジュール330及びRAID/消去コーディングモジュール335によって使用される多様なスキームの組み合わせによって提供される信頼性に対する情報を提供することができる。
図4は、図1のSSD130に対する信頼性テーブルを示す。図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のSSD130を設定する方法についての強力な考慮事項であれば、空間オーバーヘッド430及び性能435は、信頼性テーブル405から省略され得る。
信頼性テーブル405は、図1のSSD130のそれぞれの可能な設定に対するエントリを含み得る。例えば、図4は、6つのエントリ(440、445、450、455、460、465)を含む信頼性テーブルを示す。それぞれのエントリは、図1のSSD130の異なる可能な設定を示す。したがって、例えば、エントリ440は、図3のメモリチップ(315-1〜315-8)に対する第1のストレージスキーム(Storage1)、図3のECCモジュール330に対する第1のECCスキーム(ECC1)、図3のRAID/消去コーディングモジュール335に対する第1の消去コーディングスキーム(EC1)を使用する設定に対する信頼性を識別する。この設定に対して、全体の信頼性は、記録された、又は読み出された1012ビットの中の1つのエラーである。この設定も、また空間オーバーヘッドや性能オーバーヘッドを課(impose)さない(例えば、エントリ440は、図1のSSD130の基本的な設定を示すことができ、この場合、エントリ440に対する信頼性の比率は、図1のSSD130に対する公示された信頼性の比率であり得る。)。対照的に、エントリ445は、図3のメモリチップ(315-1〜315-8)に対する第2のストレージスキーム(Storage2)、図3のECCモジュール330に対する第1のECCスキーム(ECC1)、図3のRAID/消去コーディングモジュール335に対する第1の消去コーディングスキーム(EC1)を使用する設定を示す。この設定は、記録された、又は読み出された1014ビットの中の1つのエラーがある信頼性の比率を有し、図1のSSD130の利用可能なストレージ容量の50%の減少を課する(ただし、性能のオーバーヘッドはない)。たとえば、エントリ445は、冗長性のために、データが2つの異なるメモリチップに記録される設定を示すことができ、これはSSD130の全体の信頼性を向上させるが利用可能なストレージの量を減少させる犠牲を払う。
エントリ(450、455)は、エントリ(440、445)と類似しているが、第2のECCスキーム(ECC2)を使用する図3のECCモジュール330を有する。わかるとおり、この設定は、それぞれ1016及び1018のビットの中の1つのエラーがある信頼性比率を有する。つまり、エントリ(440、445)に図示された設定に比べて10改善される。しかし、第2のECCスキーム(ECC2)は、第1のECCスキーム(ECC1)よりもっと多くの計算資源を要求することができるため、エントリ(450、455)が示す設定は、25%の性能ヒット(hit)を課することができる(つまり、図1のSSD130は、エントリ(440、445)が示す設定より、エントリ(450、455)が示す設定を使用して読み取り及び/又は書き込みの要請を処理するのに25%のより多くの時間を要求することができる。)。
エントリ(460、465)は、エントリ(440、445)と類似しているが、第2の消去コーディングスキーム(EC2)を使用する図3のRAID/消去コーディングモジュール335を有する。分かるように、これらの設定は、それぞれ1014及び1017ビットの中の1つのエラーがある信頼性の比率を有し、これは10〜100倍の信頼性を示す。しかし、第2の消去コーディングスキーム(EC2)は、第1の消去コーディングスキーム(EC1)よりももっと多くの計算資源を要求することができるため、エントリ(460、465)が示す設定は、10%の性能ヒット(hit)を課することができる(すなわち、図1のSSD130は、エントリ(440、445)が示す設定よりエントリ(460、465)が示す設定を使用する読み取り及び/又は書き込み要請を処理するのに10%のより多くの時間を要求することができる。)。
第2消去コーディングスキーム(EC2)だけによって提供される改善は、エントリ(460、465)が示す設定のすべてに対して同一ではないことに留意されたい。エントリ(460、465)は、図1のSSD130の別のコンポーネントについて、別のスキームに組み合わせることが、任意の信頼性を提供するただ1つのコンポーネントに比べて改善点を提供することができるが、別のコンポーネントに対するスキームを組み合わせることの利点は、完全に直交的(orthogonal、互いに独立的である)ではないとの事実を示す。言い換えれば、多数のコンポーネントの信頼性オプションを使用することが、単一のコンポーネントの1つの信頼性オプションを使用するよりも優秀であり得るが、両方のコンポーネントのすべてを使用して、信頼性を向上させるとき、両方のコンポーネントの信頼性を単純に乗算して信頼性の比率を決定するものではない。したがって、例えば、図3のメモリチップ(315-1〜315-8)、図3のECCモジュール330、図3のRAID/消去コーディングモジュール355からリード(read)又は記録された1010ビットの中の1つのエラーを有する誤り率を提供する特定のスキームがあったとしても、3つのスキームのすべてを共に使用するからといって、必然的にリード(read)又は記録された1030ビットの中の1つのエラーを有する誤り率になるものではない。
したがって、スキームの組み合わせの信頼性比率が、個々のスキームの信頼性比率の積として計算されなければ、特定の設定の信頼性比率は、信頼性テーブル405のエントリに対してどのように決定されるか?。答えは、図1のSSD130の製造業者が可能なすべての設定を個別にテストするものである。つまり、多様なSSDは、それぞれの可能な設定の組み合わせを使用するように設定される。そして、このようなSSDをテストして、それぞれの誤り率(及び空間オーバーヘッドと性能オーバーヘッド)を確認する。この情報は、その後、同一の仕様(specifications)に基づいて製造されたすべてのSSDに対する信頼性テーブル405に格納される。
なお、図4は、図3のメモリチップ(315-1〜315-8)、図3のECCモジュール330、図3のRAID/消去コーディングモジュール335のそれぞれを使用する信頼性に対する異なるスキームの組み合わせだけを図示しているが、信頼性テーブル405は、個別のスキームの信頼性比率(及び所望の場合に、空間及び性能のオーバーヘッド)を示すために、また使用される可能性もある。例えば、信頼性テーブル405は、図3のECCモジュール330又は図3のRAID/消去コーディングモジュール335に対する関連されたスキームなしに、図3のメモリチップ(315-1〜315-8)の第1及び第2のストレージスキーム(Storage1、Storage2)に対するエントリを含み得る、つまり、この場合に、(図3のECCモジュール330又は図3のRAID/消去コーディングモジュール335からのいかなる信頼性の向上を追加せずに)、これらのエントリは、第1及び第2のストレージスキーム(Storage1、Storage2)を使用する信頼性比率をそれぞれ示せる。同様に、信頼性テーブル405は、単に第1及び第2のECCスキーム(ECC1、ECC2)、及び/又は第1及び第2の消去コーディングスキーム(EC1、EC2)に対するエントリを含み得る。
信頼性テーブル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は、4つのチャンネル(320-1〜320-4)に組織された8つのメモリチップ(315-1〜315-8)を含むSSD130を図示するが、本発明の実施形態は、任意の数のチャンネルに組織された任意の数のメモリチップをサポートすることができる。同様に、図3は、SSDの構造を図示するが、他のストレージ装置(例えば、ハード・ディスク・ドライブ)は、異なる構造を使用して実装されるが、類似した潜在的な利点を有する。
図5は、図1のSSD130の代替的なビューを図示する。図5において、SSD130は、RAID/消去コーディングモジュール335、ECCモジュール(330-1、330-2、330-3)を含むものとして図示されており、それぞれのチャンネル(320-1、320-2、320-3)に沿って動作することができる。チャンネル(320-1、320-2、320-3)は、メモリチップ(315-1、315-3、315-5)を含む。したがって、データは、RAID又は消去コーディングを使用して多数のメモリチップに格納されるように組織され、これらのそれぞれは、異なる(又は同一の)チャンネル上に有り得る。
データは、アプリケーション(505-1、505-2)から受信される(ただし、任意の数(1つ以上)のアプリケーションが有り得る)。それぞれのアプリケーションは、それ自体が所望の信頼性(510-1、510-2)を有し得る。各アプリケーションの所望の信頼性は、そのアプリケーションが所望の信頼性比率を示す。所望の信頼性(510-1、510-2)は、合意する(又は同一の)必要はない。つまり、各アプリケーションは、別の信頼性比率を期待することができる。
それぞれのアプリケーション(505-1、505-2)は、それぞれ独自の関連された名前空間(namespace)(515-1、515-2)を有し得る。名前空間(515-1、515-2)は、各アプリケーションから入ってくるデータを簡単に識別及び/又はグループ化することができるように構成(組織)する方法を提供する。名前空間(515-1、515-2)の使用はオプションである。
図5は、データの重複排除(data deduplication)と圧縮の概念を示す。データの重複排除は、SSD130に格納された特定のデータの多数のコピーが有り得るとのアイデアを参照する。多数のコピーを格納する代わりに、単一のコピーが格納され、他のコピーは、格納されたコピーを参照する。こうすれば、複数のファイルを格納するために使用される空間の量が減る。
例えば、写真などのようなイメージファイルを考慮する。同一の写真が、おそらく別のファイル名で複数回格納されるのは珍しいことではない(写真は、以前に別の名前で格納されたことを忘れやすいため)。しかし、ホストマシン又はSSD130は、特定のファイルが以前に格納されたファイルの複製物(duplicate)であることを認識することは十分に簡単である(SSD130が重複したファイルを識別するいくつかの処理能力を含むと仮定する。)。同一の写真を複数回格納する必要はない。(複製物が格納された別のフォルダから参照(reference)とともに)単一のコピーであれば十分である。
データの複製物が識別される方法の例としては、各ファイルごとに暗号化ハッシュが生成される場合がある。両方のファイルの暗号化ハッシュが同一のものであれば、両方のファイルに同一のデータが含まれている可能性が(おそらく強い可能性)がある。したがって、新しいファイルがSSD130上に既に格納されたファイルの複製物であるかを決定することは、単にその新しいファイルの暗号化ハッシュを生成し、その暗号化ハッシュを他のファイルの暗号化ハッシュ(おそらくハッシュテーブルを使用する)と比較し、かつ一致する場合には、一致するファイルのデータとの比較を(詳細に)行う。
データの重複排除は、任意の所望のデータユニット上で動作できることに留意されたい。ファイルは、データの重複排除のための共通の(common)ユニットであるが、他のユニットは、ブロック又はページ(SSD130内のデータユニット)であり得る。また、他のデータのユニットが使用されることもある。
一方、圧縮は生データよりも少ない空間を占める方式でデータが格納される技術を意味する。たとえば、数字10100(一般的にはグーゴル(googol)という)を考慮する。この数字を生の値(raw value)として格納するには、約2300ビット又は238バイトが必要である(コンピュータがこのように大きな整数を格納するように設計されたと仮定すると)。一方、この数字は1つの 「1」と「1」に続く100個の「0」と表されることもある。ランレングス符号化(Run Length Encoding)のようなエンコーディングスキームを使用すると、この値は1、1、100、0の4バイト(つまり、「1」の値の1つのコピー及び「0」の値の100個のコピー)を使用して表現することができる。4バイトは、238バイトよりもかなり小さいため、この値にエンコーディングを使用して空間を節約することは、少しも誇張せずにすばらしいことといえる。(「圧縮」という用語は、一般的にハフマンコード(Huffman code)のような構造を使用してデータをエンコーディングするアルゴリズムを意味するが、この文脈では、「圧縮」は、データが占める空間の量を減らすのに使用される任意の技術を意味するため、「エンコーディング」のような用語を使用して、一般的に言及される技術を含む。)
ストレージ装置で占有できる「フットプリント(footprint)」のデータを減らすことができるという点から、データの重複排除と圧縮は、それらだけの利点があるが、特にエラーを議論する際に、潜在的な欠点がある。例えば、SSD130に格納された特定のファイルに実際に5つの異なるファイル(1個のオリジナルと4つの複製物)に対するデータが含まれていると仮定する。4つの複製物は、オリジナルファイルと同一のデータを指すため、格納されたファイルのどこかにシングルビットエラーがあれば、任意の別のファイルにアクセスするたびに、そのエラーをリード(read)する。したがって、SSD130に格納されたデータに対するシングルビットエラーは、実際に5ビットエラーに理解されるだろう。つまり、オリジナルファイルとそれぞれの複製物での同一のビットエラーがある。言い換えると、データの重複排除技術は、ファイルの参照されたコピーの数だけSSD130の誤り率を拡大する。
同様に、圧縮は、真の誤り率がどの様な誤り率であるかに影響を与え得る。ランレングス符号化を使用して10100を格納する方法の例を再び考慮する。「0」の値が 「1」(シングルビットエラー)に変わったら、エンコーディングの全長にわたって、エラーが拡大される。10100を示す代わりに、エンコーディングは101回繰り返された数字「1」を示す。つまり、非常に異なる値である。したがって、圧縮されたデータのシングルビットエラーは、実際に、より効果的に多くの数のビットエラーを意味することができる。一般的なガイドとして、使用された技術の圧縮比に比例して、単一の(シングル)ビットエラーが大略拡大されることがある。したがって、圧縮技術により、データを2だけ圧縮する場合(つまり、半分の空間を占める)、シングルビットエラーは、データの2ビットエラーを実質的に意味する。圧縮技術により、データを3だけ圧縮する場合(つまり、3分の1の空間を占める場合)、シングルビットエラーは、事実上、データの3ビットのエラーを意味する(最悪の場合には、圧縮されたデータでのシングルビットエラーは、実際に生データを全く回復しない可能性がある。)。
したがって、図4の信頼性テーブル405のエントリは、SSD130の信頼性のための有用な出発点であるとしても、SSD130の真正な信頼性を完全に示さない可能性がある。そのためには、SSD130は(おそらく設定モジュール340を介して)、アプリケーション(505-1、505-2)に代わって遂行されるトランザクション(データの重複排除と圧縮は2つの例示である)を追跡することができる。そしてSSD130は、このようなトランザクションを使用して乗数(multiplier)を決定する。(SSD130の設定に基づいて、図4の信頼性テーブル405から決定された)SSD130の信頼性は、SSD130の有効な信頼性の比率を決定するために、この乗数によって乗算される。
信頼性の比率に対する乗数は、任意の所望のアプローチを使用して決定される。たとえば、SSD130は、特定のトランザクションを追跡し、そのトランザクションに適用可能な乗数を決定した後、その乗数と以前の乗数の中から大きな値を維持することができる。しかし、この方法は、乗数が互いに独立であると仮定する。データの重複排除が乗数を導入(introduce)することができる使用された唯一の技術であるか、又は圧縮が乗数を導入することができる、使用された唯一の技術である場合には、このような仮定は合理的であり得る。ただし、圧縮されたファイルにデータの重複排除が適用される場合には、両方の省スペース方式の結果として、単一のビットエラーが増大され得る。
したがって、SSD130は、現在まで最も高い乗数だけではなく、それぞれの省スペーススキームに個別に適用可能な最も高い乗数を追跡することができる。このような方式で、SSD130は、新しい乗数が単一のスキームに対する最高の乗数であるか否かだけではなく、乗数がスキームを混交する(cross)ことができるか否かを考慮することができる。たとえば、SSD130が、現在、次の条件(圧縮対象ファイルは、SSD130に2回以上格納されていなかったと仮定するとき)最高圧縮乗数2.0、最高のデータの重複排除乗数5.0、及び最高の全体乗数5.0で追跡すると仮定する。それで、SSD130が、以前に圧縮及び重複排除されたファイルが3番目に記録されたことを追跡すれば、これは、そのファイルの3つのコピーは、SSD130に今格納されたこと(重複排除されたこと)を意味する。したがって、このトランザクションは、(新しい圧縮が発生していなかったため)、最高圧縮乗数又は(すべてのファイルの現在の最大の複製物の数は5であるため)最高の重複排除乗数を増加させないが、最高の全体乗数は6.0に増加される。(2.0の乗数の対象となる圧縮されたファイルのコピーが3つあるため)したがって、(図4の信頼性テーブル405で知られているように)信頼性の比率が何であれ、その信頼性の比率は、6.0を乗じてSSD130の有効な信頼性を決定する。代替的に、SSD130は、圧縮及びデータの重複排除のそれぞれについて、最高の乗数を追跡し、SSD130の最小の有効な信頼性を決定するために2つをすべて信頼性に適用する。(圧縮及びデータの重複排除がすべて適用されるSSD130に格納されたデータがない可能性があるため、この計算は、トランザクションの影響を過度に強調する可能性があるが、それにもかかわらず、保守的(控えめ)計算が使用され得る。)
SSD130の有効な信頼性に対するトランザクションのこのような影響は、またSSD130に対する設定の選択を考慮することができる。たとえば、SSD130に格納されたデータに起因して乗数があるということを知れば、設定モジュール340は、多様な設定の信頼性をアプリケーション(505-1、505-2)の所望の信頼性(510-1、520-2)と比較するとき、その乗数を使用することができる。すなわち、図4の信頼性テーブル405に列挙された信頼性を所望の信頼性(510-1及び520-2)と単純に比較するだけでは十分ではない可能性がある。つまり、SSD130に現在格納されたデータが与えられた場合には、SSD130の有効な信頼性を反映するために、図4の信頼性テーブル405に列挙された信頼性は、乗数に応じて調整される必要がある。
図6は、図5のアプリケーション(505-1)と図1のSSD130との間に交換されたメッセージを示す。本発明の概念の一実施形態では、アプリケーション(505-1)は、信頼性メッセージ605をSSD130に伝送することができる。つまり、信頼性メッセージ605は、図5の所望の信頼性(510-1)を含み得る。 (図6に図示されてはいなかったが、図5のアプリケーション(505-2)は、またSSD130を使用する他のアプリケーションとともにそれら自体の所望の信頼性を伝送することができる。)それで、SSD130は、セルフ設定610によって図示されているように、提供された所望の信頼性(つまり、提供された最も厳しい信頼性を満足することにより、)すべてを満足させるように(図3の設定モジュール340を使用して)自ら設定することができる。
しかし、本発明の概念の他の実施形態では、アプリケーション(505-1)は、信頼性要請615を伝送することができる。信頼性要請615は、SSD130(上で説明されたように、決定される)の有効な信頼性を要請することができ、これは、メッセージ620として返される。アプリケーション(505-1)は、また、信頼性テーブルの要請625を伝送することができ、これはSSD130から図4の信頼性テーブル405を要請することができる。SSD130は、メッセージ630で、図4の信頼性テーブル405を返すことで、応答することができる。それで、アプリケーション(505-1)は、十分な信頼性(図5の所望の信頼性(510-1)又はいくつかの優れている設定)を提供する設定を選択することができ、設定要請635をSSD130に伝送して、アプリケーション(505-1)が、所望の図4の信頼性テーブル405のエントリを識別することができる。それから、SSD130は、セルフ設定640によって図示されているように、識別された信頼性テーブル405のエントリに基づいて、自ら(セルフ)設定することができる。
しかし、セルフ設定640は、点線で示されていることに留意されたい。これには2つの理由がある。まず、アプリケーション(505-1)は、おそらくメッセージ620で受信された有効な信頼性比率を比較するはずである。つまり、有効な信頼性の比率が図5の所望の信頼性(510-1)よりも高い場合には、アプリケーション(505-1)は、設定要請635を伝送しないだろう(この場合、セルフ設定640は必要としない)。しかし、本発明の概念の一部の実施形態では、アプリケーション(505-1)は、SSD130から有効な信頼性を要求せずに、代わりに図4の信頼性テーブル405から所望の設定を選択し、それに応じて設定要請635を伝送することができる。本発明の概念のこのような実施形態で、SSD130は、(おそらく設定モジュール340を介して)有効な信頼性を設定要請635で識別された設定と比較することができる。SSD130の有効な信頼性が設定要請635で識別された設定の信頼性よりも大きい場合には、SSD130は、セルフ設定640を省略することができる(現在の設定が既に十分であるため)。
2番目に、上述したように、アプリケーション(505-1)は、独立して(孤立して別個に)動作しない可能性がある。他のアプリケーション(図5のアプリケーション(505-2)のような)は、それら自体の設定要請635を伝送することができる。この場合には、SSD130は、すべてのアプリケーションを満足させる方式で、セルフ設定を選択することができ、したがって最も高い信頼性比率を有する設定に応じて設定することができる(その設定を要請するアプリケーションが、信頼性のより低い設定で満足されない可能性があるという仮定の下で)。したがって、SSD130は、セルフ設定640を遂行することができるが、セルフ設定640は、設定要請635に指定されたものとは異なる設定を含み(伴い)得る。
図6において、設定モジュール340は、図1のSSD130を設定するとき、アプリケーション(505-1)に応答することができる。ただし、設定モジュール340は、また図1のSSD130を設定するために「自発的に」動作することができる。例えば、所望の信頼性が与えられると、(他の可能性の中から、信頼性メッセージ605で、アプリケーション(505-1)から受信された図5の所望の信頼性(510-1)であり得るか、又は製造業者によって、図1のSSD130の公示された信頼性であり得る)設定モジュール340は、図1のSSD130の有効な信頼性を追跡することができる。図1のSSD130の有効な信頼性が所望の信頼性を下回ると、図1のSSD130の信頼性を許容可能なレベルに維持するように保障するためには、設定モジュール340は、(任意の乗数を考慮して、)所望の信頼性を提供する新しい設定を選択することができる。
設定モジュール340がどのように図1のSSD130を設定することができるかを言及する価値がある。上述したように、図4の信頼性テーブル405のエントリは、図3のメモリチップ(315-1〜315-8)、図3のECCモジュール330、図3のRAID/消去コーディングモジュール335によって使用される特定のスキームを指定する。図1のSSD130を設定するには、設定モジュール340は、どんなスキームを使用するかについて、これらのコンポーネントに指示することができる。つまり、設定モジュール340は、図3のメモリチップ(315-1〜315-8)にそれぞれのセルに格納するビットの特定の数を指示でき、図3のECCモジュール330に、特定のECCスキームを使用するように指示でき、及び/又は図3のRAID/消去コーディングモジュール335に、特定の消去コーディングスキームを使用するように指示できる。データがすでに(所定の位置に)存在するスキームを変更することは、図1のSSD130からデータを読み出して、十分な信頼性が維持されるように、そのデータに適用されるスキームを変更することを含み得ることに留意されたい。したがって、例えば、データが、現在それぞれのQLCセルで4ビットを使用して格納されるが、今はそれぞれのQLCセルでただ2ビットに格納される必要がある場合、図3のメモリチップ(315-1〜315-8)のデータは読み出され、どこかに(一部のローカルストレージ又はサーバ110のメインメモリに)一時的にバッファリングされてから、新しいストレージスキームを使用して、メモリチップ(315-1〜315-8)に再び記録される。同様に、新しいECCスキーム又は消去コーディングスキームを適用することは、変化を適用するために、SSD130からデータを読み出し、SSD130にデータを記録することを含み得る。
図7は、本発明の実施形態による、所望の信頼性を提供するように、自ら(セルフ)設定する、図1のSSD130の例としてのプロシージャのフローチャートを示す。図7を参照すると、ブロック705で、図3の設定モジュール340は、図1のSSD130に対する所望の信頼性を決定することができる。上述したように、図3の設定モジュール340は、それ自体が所望の信頼性を選択するか、又は図5のアプリケーション(505-1)から図6の信頼性メッセージ605を介して、図5の所望の信頼性(510-1)を受信することができる。ブロック710で、図3の設定モジュール340は、図1のSSD130の有効な信頼性を決定することができる。ブロック715で、図3の設定モジュール340は、所望の信頼性を(トランザクションによる任意の乗数を考慮した)図1のSSD130の有効な信頼性と比較することができる。有効な信頼性が所望の信頼性を満足させるのに十分であれば、処理が完了され、図3の設定モジュール340は、これ以上動作する必要がない。
一方、有効な信頼性が所望の信頼性よりも低い場合、ブロック720で、図3の設定モジュール340がそこにあるエントリを考慮するために、図4の信頼性テーブル405にアクセス(又は接近)することができる。ブロック725で、図3の設定モジュール340は、図4の信頼性テーブル405から少なくとも所望の信頼性ほど高い(任意の乗数を考慮して)信頼性を有するエントリを選択することができる。ブロック730で、図3の設定モジュール340は、図4の信頼性テーブル405から選択されたエントリの設定に従って、図1のSSD130を設定してから処理が完了できる。
図8は、自ら(又はセルフ)設定する、図1のSSD130に対する例としてのプロシージャのフローチャートを示す。図8を参照すると、ブロック805で、図3の設定モジュール340は、図3の1つ以上のメモリチップ(315-1〜315-8)を、特定のストレージスキームを使用するように設定することができる。ブロック810で、図3の設定モジュール340は、図3のECCモジュール330を、特定のエラー訂正コードスキームを使用するように設定することができる。ブロック815で、図3の設定モジュール340は、図3のRAID/消去コーディングモジュール335を、特定の消去コーディングスキームを使用するように設定することができる。ブロック(805,810,815)は、すべて個別に選択的(オプション)であり、点線(820,825、及び830)で図示されているように省略することができる。
図9A-9Bは、所望の信頼性決定するために、図1のSSD130に対する例としてのプロシージャのフローチャートを示す。図9Aを参照すると、ブロック905で、図1のSSD130は、SSD130の所望の信頼性を指定することができる、図6の信頼性メッセージ605を受信することができる。
代替案として、図9Bを参照すると、ブロック910で、図1のSSD130は、図5のアプリケーション(505-1)から図6の信頼性要請615を受信することができる。ブロック915で、図1のSSD130は、図1のSSD130の有効な信頼性を決定することができる。ブロック920で、SSD130は、有効な信頼性を、図6のメッセージ620として図5のアプリケーション(505-1)に伝送することができる。点線925で図示されたように、ブロック(910、915、920)は選択的である。
ブロック930で、図5のアプリケーション(505-1)は、図6の信頼性テーブルの要請625を伝送することができる。ブロック935で、図1のSSD130は、図3の信頼性テーブルスのトレージ345からも図4の信頼性テーブル405を回収(retrieve)することができる。ブロック940で、図1のSSD130は、メッセージ630として、図5のアプリケーション(505-1)に図4の信頼性テーブル405を伝送することができる。最後に、ブロック945で、図5のアプリケーション(505-1)は、図1のSSD130に設定要請635を伝送することができる。設定要請635は、図3の設定モジュール340が図6の設定要請635で識別された信頼性テーブル405のエントリに基づいて、図1のSSD130を設定するように要請することができる。
図10は、図1のSSD130の有効な信頼性を決定するために、図1のSSD130に対する例としてのプロシージャのフローチャートを示す。図10を参照すると、ブロック1005で、図1のSSD130は、(少なくとも、図1のSSD130の現在の設定に応じた)図1のSSD130の公示された信頼性を決定することができる。ブロック1010で、SSD130は、図5のアプリケーション(505-1)によって要請された(又はそれに代わって)現在のトランザクションを追跡することができる。ブロック1015で、図1のSSD130は、現在のトランザクション(及び以前のトランザクション)に応答して1つの乗数(又は1つ以上の乗数)を決定することができる。最後に、ブロック1020で、図1のSSD130は、公示された信頼性に乗数を乗じて、図1のSSD130の有効な信頼性を決定することができる。
図11A及び図11Bは、本発明の実施形態に基づいて、図1のSSD130が所望の信頼性を提供するように指示する図5のアプリケーション(505-1)に対する例としてのプロシージャのフローチャートを示す。図11Aを参照すると、ブロック1105で、図5のアプリケーション(505-1)は、図5の所望の信頼性(510-1)を(図6の信頼性メッセージ605として)、図1のSSD130に伝送することができる。この時点で、図5のアプリケーション(505-1)は、図5の所望の信頼性(510-1)が提供されることを保障するために、図1のSSD130に残されて完了される。
代替案として、ブロック1110で、図5のアプリケーション(505-1)は、図6の信頼性要請615を、図1のSSD130に伝送することができる。ブロック1115で、図5のアプリケーション(505-1)は、図6のメッセージ620で、図1のSSD130の現在の有効な信頼性を受信することができる。ブロック1120で、図5のアプリケーション(505-1)は、図5の所望の信頼性(510-1)を図1のSSD130(図6のメッセージ620で受信された)の有効な信頼性と比較することができる。図1のSSD130の有効な信頼性が、少なくとも図5の所望の信頼性(510-1)だけ高いと、処理が終了される(何もする必要がない)。
一方、図1のSSD130の有効な信頼性が図5の所望の信頼性(510-1)よりも小さい場合(又は、点線の矢印1125で示されているように、図5のアプリケーション(505-1)が有効な信頼性に関係なく、図1のSSD130が特定の設定に設定されるように要請する場合)、図11Bを参照すると、ブロック1130で、図5のアプリケーション(505-1)は、図6の信頼性テーブルの要請625を、図1のSSD130に伝送することができる。ブロック1135で、図1のSSD130は、図4の信頼性テーブル405をメッセージ630として、図5のアプリケーション(505-1)に伝送することができる。ブロック1140で、図5のアプリケーション(505-1)は、図4の信頼性テーブル405から所望の信頼性を提供するエントリを選択することができる。最後に、ブロック1145で、図5のアプリケーション(505-1)は、図6の設定要請635を伝送することができ、図1のSSD130が、図4の信頼性テーブル405から選択されたエントリに応じて設定されるように要請することができる。
図7〜図11Bを参照すると、本発明の概念の一部の実施形態が示される。しかし、当業者は、ブロックの順序を変更したり、ブロックを省略したり、図面に図示されていないリンクを含めたりすることにより、本発明の概念の他の実施形態も可能であることを理解するはずである。フローチャートのこのようなすべての変形は、明示的に説明されようがされまいが、本発明の実施形態であると考えられる。
本発明の実施形態は、従来技術に比べて技術的な利点を提供する。一般的なシステムにおいて、ストレージ装置の信頼性は、製造業者によって設定され、基本的にユーザーの制御範囲外である。本発明の実施形態は、カスタマ(customer、顧客)にストレージ装置の信頼性に対する、ある程度の制御を提供するだけでなく、そのような管理を自動化することができるようにする。アプリケーションは、所望の信頼性を指定することができる(又は所望の信頼性を実現するストレージ装置の特定の設定を指定することができる)。ストレージ装置は、ストレージ装置の使用に基づいて、必要に応じて設定を変更することにより、信頼性のレベルを維持することができる。
以下の議論は、本発明の概念の特定の態様が実施される適切なマシン(machine)又はマシンに対する簡略で一般的な説明を提供するためである。マシン又は複数のマシンは、少なくとも部分的に、キーボード、マウスなどのような従来の入力装置からの入力だけでなく、他のマシンから受信された指示、仮想現実(バーチャルリアリティ:VR)環境との相互作用、バイオメトリックフィードバック(biometric feedback)、又はその他の入力信号によって制御される。本明細書で使用されるように、用語の「マシン」は、単一のマシン、仮想マシン、又は通信的に結合されたマシン、仮想マシン、若しくは共に動作している装置のシステムを広く含むように意図される。例としてのマシンは、パーソナルコンピュータ、ワークステーション、サーバ、ポータブルコンピュータ、ハンドヘルド装置(handheld devices)、電話、タブレットなどのようなコンピューティング装置だけでなく、個人又は公共交通機関(例えば、自動車、電車、タクシーなど)のような運送装置を含み得る。
マシン又は複数のマシンは、プログラム可能な又はプログラミング不可能な論理装置やアレイ、ASICs(Application Specific Integrated Circuits)、埋込型コンピュータ、スマートカードなどのような内蔵型コントローラを含み得る。マシン又は複数のマシンは、ネットワークインターフェース、モデム又は他の通信カップリングなどのような1つ以上のリモートマシンに対する1つ以上の接続を活用することができる。マシンは、イントラネット、インターネット、ローカルエリアネットワーク、ワイドエリアネットワークのような物理的及び/又は論理的なネットワークによって相互接続される。当業者は、ネットワーク通信がRF(radio frequency)、衛星、マイクロウェーブ、IEEE(Institute of Electrical and Electronics Engineers)802.11、Bluetooth(登録商標)、光学、赤外線、ケーブル、レーザーなどを含む多様な有線及び/又は無線ローカルエリアネットワークや長距離通信事業者、並びにプロトコルを利用することができることを認識するだろう。
本発明の概念の実施形態は、マシンによってアクセスされるときにマシンがタスクを遂行したり、抽象的データタイプ、又はローレベル(low level)のハードウェアコンテキスト(context)を定義する、機能、プロシージャ、データ構造、アプリケーションプログラムなどを含む関連データを参照したりして、それと関連付けられて記述される。関連データは、例えば、RAM、ROMなどのような揮発性及び/又は非揮発性メモリ、ハードドライブ、フロッピーディスク、光学ストレージ装置、テープ、フラッシュメモリ、メモリスティック、デジタルビデオディスク又は生物学的ストレージ装置などを含む、他のストレージ装置及び関連されたストレージ媒体に格納される。関連データは、パケット、シリアルデータ、パラレルデータ、伝播された信号などの形で物理的及び/又は論理的なネットワークを含む伝送環境を通じて伝達され、圧縮又は暗号化されたフォーマットで使用される。関連データは、分散環境で使用される場合があり、マシンアクセスのため、ローカル及び/又はリモートで格納される。
本発明の概念の実施形態は、1つ以上のプロセッサによって実行可能な命令語を含む有形の非一時的マシン読み取り可能な媒体を含み、前記命令語は、本明細書で説明されたような本発明の概念の要素を遂行するための命令語を含む。
上述した方法の多様な動作は、多様なハードウェア及び/又はソフトウェア構成、回路、及び/又はモジュールのように動作を行うことができる任意の適切な手段によって遂行される。ソフトウェアは、論理的な機能を実施するための遂行可能な命令語の順序付きリストを含み、シングル又はマルチコアプロセッサ又はプロセッサを含むシステムのような命令語実行システム、器具又は装置を使用し、又はこれらと関連して、任意の「プロセッサ可読媒体」で実装される。
ここで開示された実施形態と関連して方法又はアルゴリズムのブロック又は段階、及び機能は、ハードウェア及びプロセッサ上で遂行されるソフトウェアモジュール又はこれらの組み合わせで直接実装される。ソフトウェアで実装される場合、機能は、非一時的コンピュータ可読媒体上に1つ以上の命令語又はコードとして格納又は伝送される。ソフトウェアモジュールは、RAM(random access memory)、フラッシュメモリ、ROM、EPROM、EEPROM、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、又はこの分野で公知された任意の他の形態のストレージ媒体であり得る。
例示された実施形態を参照して、本発明の概念の原理を説明して例示したが、図示された実施形態は、このような原理を逸脱することなく、配列及び詳細事項を変更することができ、任意の好ましい方法で結合され得ることを認識するだろう。また、上述した説明は、特定の実施形態に焦点を当てたが、他の構成も考慮される。特に、「発明の概念の実施形態による」などのような表現が本明細書で使用されたが、これらのフレーズは、一般的に実施形態の可能性を参照することで意図されており、本発明の概念を特定の実施形態の構成に限定しようとするものではない。本明細書に使用されたように、これらの用語は、他の実施形態と組み合わせ可能な同一の又は異なる実施を示せる。
上述した例としての実施形態は、本発明の概念を限定しようとするものと解釈されてはならない。ただし、いくつかの実施形態が説明されたが、当業者は、本開示の新規な教示と利点から実質的に離れることなく、これらの実施形態に多様な修正が可能であることを容易に理解するだろう。したがって、このようなすべての修正は、請求項に定義された本発明の概念の範囲内に含まれるものとして意図される。
本発明の実施形態は、限定されずに、次の説明に拡張される。
説明1. 本発明の実施形態は、ソリッド・ステート・ドライブ(SSD)を含む。
SSDは、
ホスト上の第1のアプリケーションから読み取り要請及び記録要請を受信するためのインターフェースと、
少なくとも1つのチップを含むデータのためのストレージと、
前記ストレージを使用して、前記ホスト上の前記第1のアプリケーションから前記読取り要請及び前記記録要請を処理するSSDコントローラと、
前記SSDを設定するための設定モジュールと、
少なくとも第1のエントリ及び第2のエントリを含む信頼性テーブルのためのストレージを含み、第1のエントリは、前記SSDの第1の設定及び前記SSDの前記第1の設定に対する第1の信頼性を識別し、前記第2のエントリは、前記SSDの第2の設定及び前記SSDの第2の設定に対する第2の信頼性を識別する。
説明2. 本発明の実施形態は、説明1によるSSDを有し、前記インターフェースは、前記ホスト上の前記第1のアプリケーションからの設定要請を受信することができる。
説明3. 本発明の実施形態は、説明2によるSSDを有し、前記設定要請は、信頼性テーブルで、第1のエントリ及び第2のエントリのいずれか1つの識別子を含む。
説明4. 本発明の実施形態は、説明3によるSSDを有し、前記設定モジュールは、前記信頼性テーブルにおいて、前記第1のエントリ及び前記第2のエントリのいずれか1つの前記識別子にしたがって、前記SSDを再設定することができる。
説明5. 本発明の実施形態は、説明1によるSSDを有し、前記インターフェースは、前記ホスト上の前記第1のアプリケーションから信頼性メッセージを受信することができ、前記信頼性メッセージは、前記ホスト上の前記第1のアプリケーションに対する第1の所望の信頼性を含む。
説明6. 本発明の実施形態は、説明5によるSSDを有し、前記設定モジュールは、少なくとも前記第1の所望の信頼性に基づいて、前記信頼性テーブルで前記第1のエントリ及び前記第2のエントリのいずれか1つにしたがって前記SSDを設定することができる。
説明7. 本発明の実施形態は、説明6によるSSDを有し、前記設定モジュールは、少なくとも前記ホスト上の前記第1のアプリケーションに対する前記第1の所望の信頼性、及び前記ホスト上の前記第2のアプリケーションに対する前記第2所望の信頼性に基づいて、前記信頼性テーブルの第1のエントリ及び第2のエントリのいずれか1つにしたがって、前記SSDを設定することができる。
説明8. 本発明の実施形態は、説明1によるSSDを有し、少なくとも1つのチップは、少なくとも第1のチップの信頼性を有する第1のストレージスキーム及び第2のチップの信頼性を有する第2のストレージスキームを提供する。
説明9. 本発明の実施形態は、説明8によるSSDを有し、前記SSDの第1の設定は、前記第1のストレージスキームを識別し、前記SSDの第2の設定は、前記第2のストレージスキームを識別する。
説明10. 本発明の実施形態は、説明1によるSSDを有し、エラー訂正コード(ECC:Error Correcting Code)モジュールをさらに含み、前記ECCモジュールは、少なくとも第1のECC信頼性を有する第1のECCスキーム及び第2のECC信頼性を有する第2のECCスキームを提供する。
説明11. 本発明の実施形態は、説明10によるSSDを有し、前記SSDの前記第1の設定は、前記第1のECCスキームを識別し、前記SSDの前記第2の設定は、前記第2のECCスキームを識別する。
説明12. 本発明の実施形態は、説明1によるSSDを有し、消去コーディングモジュール又はRAID(Redundant Array of Independent Disks)モジュールの中の少なくとも1つをさらに含み、前記消去コーディングモジュールは、少なくとも第1の消去コーディング信頼性を有する第1の消去符号化スキーム及び第2消去コーディングの信頼性を有する第2の消去コーディングスキームを提供し、前記RAIDモジュールは、少なくとも第1のRAID信頼性を有する第1のRAIDスキーム及び第2のRAIDの信頼性を有する第2のRAIDスキームを提供する。
説明13. 本発明の概念の一実施形態は、説明12によるSSDを有し、前記SSDの前記第1の設定は、前記第1の消去コーディングスキーム又は前記第1のRAIDスキームの中の少なくとも1つを識別し、前記SSDの前記第2の構成は、前記第2の消去コーディングスキーム又は前記第2のRAIDスキームの中の少なくとも1つを識別する。
説明14. 本発明の概念の一実施形態は、説明1によるSSDを有し、前記信頼性テーブルの前記第1のエントリは、前記SSDの前記第1の設定に対する第1の空間オーバーヘッド又は第1の性能の中の少なくとも1つを識別し、前記信頼性テーブルの前記第2のエントリは、前記SSDの前記第2の設定に対する第2の空間オーバーヘッド又は第2の性能の中の少なくとも1つを識別する。
説明15. 本発明の実施形態は、説明1によるSSDを有し、少なくとも1つのチップは、少なくとも1つのNANDフラッシュチップを含む。
説明16. 本発明の実施形態は、方法を有する。方法は、
ソリッド・ステート・ドライブ(SSD: Solid State Drive)に対する所望の信頼性を決定する段階であって、SSDはデータに対するストレージを含み、ストレージは少なくとも1つのチップを含む、決定する段階と、
前記SSDから信頼性テーブルの第1のエントリにアクセスする段階であって、前記信頼性テーブルは少なくとも前記第1のエントリ及び前記第2のエントリを含み、前記第1のエントリは、前記SSDの第1の設定及び前記SSDの前記第1の設定に対する第1の信頼性を識別し、前記第2のエントリは、前記SSDの第2の構成及び前記SSDの前記第2の構成に対する第2の信頼性を識別する、アクセスする段階と、
前記第1のエントリにしたがって、前記SSDを設定する段階と、を含む。
説明17. 本発明の実施形態は、説明16による方法を有し、
前記第1のエントリは、前記チップに対する第1のストレージスキームを含み、
第2のエントリは、前記チップに対する第2のストレージスキームを含み、
前記第1のエントリに基づいて、前記SSDを設定する段階は、前記第1のストレージスキーム又は第2のストレージスキームにしたがって、前記チップを設定する段階を含む。
説明18. 本発明の実施形態は、説明16による方法を有し、
前記SSDは、エラー訂正コード(ECC;Error Correcting Code)モジュールを含み、
前記第1のエントリは、前記ECCモジュールに対する第1のECCスキームを含み、
前記第2のエントリは、前記ECCモジュールに対する第2のECCスキームを含み、
前記第1のエントリに基づいて、前記SSDを設定する段階は、前記第1のECCスキーム又は第2のECCスキームにしたがって前記ECCモジュールを設定する段階を含む。
説明19. 本発明の実施形態は、説明16による方法を有し、
前記SSDは、消去コーディングモジュール又はRAID(Redundant Array of Independent Disks)モジュールの中の少なくとも1つを含み、
前記第1のエントリは、前記消去コーディングモジュールに対する第1の消去コーディングスキーム又は前記RAIDモジュールに対する第1のRAIDスキームの中の少なくとも1つを含み、
第2のエントリは、前記消去コーディングモジュールに対する第2の消去コーディングスキーム又は前記RAIDモジュールに対する第2のRAIDスキームの中の少なくとも1つを含み、
前記第1のエントリに基づいて、前記SSDを設定する段階は、前記第1の消去コーディングスキーム又は前記第2の消去コーディングスキームにしたがった前記消去コーディングモジュール、或いは前記第1のRAIDスキーム又は前記第2のRAIDスキームにしたがった前記RAIDモジュールの中の少なくとも1つを設定する段階を含む。
説明20. 本発明の実施形態は、説明16による方法を有し、前記SSDに対する所望の信頼性を決定する段階は、前記ホスト上のアプリケーションから前記SSDで、前記所望の信頼性を受信する段階を含む。
説明21. 本発明の実施形態は、説明20による方法を有し、前記SSDから信頼性テーブルの第1のエントリにアクセスする段階は、
前記信頼性テーブルの前記第1のエントリ及び前記第2のエントリにアクセスする段階と、
前記第1のエントリが少なくとも前記所望の信頼性ほど高い信頼性を含んでいるか否かを識別する段階と、を含む。
説明22. 本発明の実施形態は、説明の16による方法を有し、
前記SSDにおいて、前記ホスト上の前記アプリケーションから前記SSDへの有効な信頼性に対する信頼性の要請を受信する段階と、
前記SSDに対する有効な信頼性を決定する段階と、
前記SSDから前記ホスト上の前記アプリケーションに前記有効な信頼性を伝送する段階と、をさらに含む。
説明23. 本発明の実施形態は、説明22による方法を有し、前記SSDに対する有効な信頼性を決定する段階は、
前記SSDに対して公示された信頼性を決定する段階と、
前記SSDでの動作を追跡する段階と、
前記SSD上の動作に基づいて乗数を決定する段階と、
前記公示された信頼性に前記乗数を乗じて、前記有効な信頼性を決定する段階と、を含む。
説明24. 本発明の実施形態は、説明16による方法を有し、前記SSDから信頼性テーブルの第1のエントリにアクセスする段階は、前記SSDにおいて、前記ホスト上の前記アプリケーションから前記信頼性テーブルの前記第1のエントリの識別子を受信する段階を含む。
説明25. 本発明の実施形態は、説明24による方法を有し、前記SSDから前記ホスト上の前記アプリケーションに前記有効な信頼性を伝送する段階は、前記SSDから前記ホスト上の前記アプリケーションに前記信頼性テーブルの前記第1のエントリ及び前記第2のエントリを伝送する段階を含む。
説明26. 本発明の実施形態は、説明16による方法を有し、
前記信頼性テーブルの前記第1のエントリは、前記SSDの前記第1の設定に対する第1の空間オーバーヘッド又は第1の性能の中の少なくとも1つを識別し、
前記信頼性テーブルの前記第2のエントリは、前記SSDの第2の設定に対する第2の空間オーバーヘッド又は第2の性能の中の少なくとも1つを識別し、
前記SSDから信頼性テーブルの第1のエントリにアクセスする段階は、少なくとも所望の信頼性に基づいて、及び所望の空間オーバーヘッド又は所望の性能の中の少なくとも1つに基づいて前記SSDから前記信頼性テーブルの前記第1のエントリにアクセスする段階を含む。
説明27. 本発明の実施形態は、説明16による方法を有し、少なくとも1つのチップは、少なくとも1つのNANDフラッシュチップを含む。
説明28. 本発明の実施形態は、方法を有する。方法は、
ホスト上のアプリケーションからSSDに信頼性の要請を伝送する段階であって、前記信頼性の要請は、前記SSDに対する有効な信頼性を要請する、伝送する段階と、
前記ホスト上の前記アプリケーションにおいて、前記SSDから前記SSDに対する有効な信頼性を受信する段階と、
前記ホスト上の前記アプリケーションから前記SSDに信頼性テーブルの要請を伝送する段階であって、前記信頼性テーブルの要請は、前記SSDに格納された信頼性テーブルを要請する、伝送する段階と、
前記ホスト上の前記アプリケーションにおいて、前記SSDから前記信頼性テーブルを受信する段階であって、前記信頼性テーブルの各エントリは、前記SSDの設定及び前記SSDの構成に対する信頼性を識別する、受信する段階と、
前記ホスト上の前記アプリケーションに対する所望の信頼性に少なくとも基づいて前記信頼性テーブルからエントリを選択する段階と、
前記ホスト上の前記アプリケーションから前記SSDに設定要請を伝送する段階と、を含み、前記設定要請は、前記信頼性テーブルの前記エントリを識別する。
説明29. 本発明の実施形態は、説明28による方法を有し、
前記SSDに対する有効な信頼性を、前記ホスト上の前記アプリケーションに対する所望の信頼性と比較する段階と、
前記SSDに対する有効な信頼性に少なくとも基づいて、前記ホスト上の前記アプリケーション対する前記所望の信頼性を超えている場合には、前記SSDに前記設定要請を伝送しない段階と、をさらに含む。
説明30. 本発明の実施形態は、説明28による方法を有し、前記ホスト上の前記アプリケーションに対する少なくとも所望の信頼性に基づいて前記信頼性テーブル内のエントリを選択する段階は、(前記エントリに対して)前記SSDの設定に対する前記信頼性が、少なくとも前記所望の信頼性ほど高い前記信頼性テーブルにおける前記エントリを選択する段階を含む。
説明31. 本発明の実施形態は、説明28による方法を有し、
前記信頼性テーブルの各エントリは、前記SSDの前記設定に対する第1の空間オーバーヘッド又は第1の性能の中の少なくとも1つをさらに識別し、
前記信頼性テーブルの第2のエントリは、第2の空間オーバーヘッド又は第2の性能の中の少なくとも1つをさらに識別し、
前記ホスト上の前記アプリケーションに対する少なくとも所望の信頼性に基づいて、信頼性テーブルのエントリを選択する段階は、前記ホスト上の前記アプリケーションに対する少なくとも所望の信頼性に基づいて、及び前記所望の空間オーバーヘッド又は所望の性能の中の少なくとも1つに基づいて前記信頼性テーブル内のエントリを選択する段階と、を含む。
説明32. 本発明の実施形態は、非一時的ストレージ媒体を含み、マシンによって実行されるときは、以下の段階を遂行する命令語が格納される前記非一時的ストレージ媒体を含む物品(article)であって、前記段階は、
ソリッド・ステート・ドライブ(SSD:Solid State Drive)に対する所望の信頼性を決定する段階であって、前記SSDはデータに対するストレージを含み、ストレージは、少なくとも1つのチップを含む、決定する段階と、
前記SSDから信頼性テーブルの第1のエントリにアクセスする段階であって、前記信頼性テーブルは、少なくとも第1のエントリ及び第2のエントリを含み、前記第1のエントリは、前記SSDの第1の設定及び前記SSDの前記第1の設定に対する第1の信頼性を識別し、前記第2のエントリは、前記SSDの第2の設定及び前記SSDの前記第2の設定に対する第2の信頼性を識別する、アクセスする段階と、
前記第1のエントリにしたがってSSDを設定する段階と、を含む。
説明33. 本発明の実施形態は、説明32による物品を有し、
前記第1のエントリは、前記チップに対する第1のストレージスキームを含み、
前記第2のエントリは、前記チップに対する第2のストレージスキームを含み、
前記第1のエントリに基づいて、前記SSDを設定する段階は、前記第1のストレージスキーム又は第2のストレージスキームに基づいて、前記チップを設定する段階を含む。
説明34. 本発明の実施形態は、説明32による物品を有し、
前記SSDは、エラー訂正コード(ECC:Error Correcting Code)モジュールを含み、
前記第1のエントリは、前記ECCモジュールに対する第1のECCスキームを含み、
前記第2のエントリは、前記ECCモジュールに対する第2のECCスキームを含み、
前記第1のエントリに基づいて、前記SSDを設定する段階は、前記第1のECCスキーム又は第2のECCスキームにしたがって前記ECCモジュールを設定する段階を含む。
説明35. 本発明の実施形態は、説明32による物品を有し、
前記SSDは、消去コーディングモジュール又はRAID(Redundant Array of Independent Disks)モジュールの中の少なくとも1つを含み、
前記第1のエントリは、前記消去コーディングモジュールに対する第1の消去コーディングスキーム又は前記RAIDモジュールに対する第1のRAIDスキームの中の少なくとも1つを含み、
第2のエントリは、前記消去コーディングモジュールに対する第2の消去コーディングスキーム又は前記RAIDモジュールに対する第2のRAIDスキームのうちの少なくとも1つを含み、
前記第1のエントリに基づいて、前記SSDを設定する段階は、前記第1の消去コーディングスキーム又は前記第2の消去コーディングスキームにしたがった前記消去コーディングモジュール、或いは前記第1のRAIDスキーム又は前記第2のRAIDスキームにしたがった前記RAIDモジュールの中の少なくとも1つを設定する段階を含む。
説明36. 本発明の実施形態は、説明32による物品を有し、前記SSDに対する所望の信頼性を決定する段階は、前記ホスト上のアプリケーションから前記SSDで前記所望の信頼性を受信する段階を含む。
説明37. 本発明の実施形態は、説明36による物品を有し、前記SSDから信頼性テーブルの第1のエントリにアクセスする段階は、
前記信頼性テーブルの前記第1のエントリ及び前記第2のエントリにアクセスする段階と、
前記第1のエントリは、少なくとも前記所望の信頼性ほど高い信頼性を含んでいるかを識別する段階と、を含む。
説明38. 本発明の実施形態は、説明32による物品を有し、非一時的ストレージ媒体は、マシンによって実行されるとき、次の段階をさらに遂行する命令語が格納される前記非一時的ストレージ媒体を含む物品であって、前記段階は、
前記SSDにおいて、前記ホスト上の前記アプリケーションから前記SSDへの有効な信頼性に対する信頼性の要請を受信する段階と、
前記SSDに対する有効な信頼性を決定する段階と、
前記SSDから前記ホスト上の前記アプリケーションに前記有効な信頼性を伝送する段階と、をさらに含む。
説明39. 本発明の実施形態は、説明38による物品を有し、前記SSDに対する前記有効な信頼性を決定する段階は、
前記SSDに対して公示された信頼性を決定する段階と、
前記SSD上の動作を追跡する段階と、
前記SSD上の動作に基づいて乗数を決定する段階と、
前記公示された信頼性に前記乗数を乗じて、前記有効な信頼性を決定する段階と、を含む。
説明40. 本発明の実施形態は、説明38による物品を有し、前記SSDから信頼性テーブルの第1のエントリにアクセスする段階は、前記SSDにおいて、前記ホスト上の前記アプリケーションから前記信頼性テーブルの前記第1のエントリの識別子を受信する段階を含む。
説明41. 本発明の実施形態は、説明40による物品を有し、前記SSDから前記ホスト上の前記アプリケーションに前記有効な信頼性を伝送する段階は、前記SSDから前記ホスト上の前記アプリケーションに前記信頼性テーブルの前記第1のエントリ及び前記第2のエントリを伝送する段階を含む。
説明42. 本発明の実施形態は、説明32による物品を有し、
前記信頼性テーブルの前記第1のエントリは、前記SSDの前記第1の設定に対する第1の空間オーバーヘッド又は第1の性能の中の少なくとも1つを識別し、
前記信頼性テーブルの前記第2のエントリは、前記SSDの第2の設定に対する第2の空間オーバーヘッド又は第2の性能の中の少なくとも1つを識別し、
前記SSDから信頼性テーブルの第1のエントリにアクセスする段階は、少なくとも所望の信頼性に基づいて、及び所望の空間オーバーヘッド又は所望の性能の中の少なくとも1つに基づいて前記SSDから前記信頼性テーブルの前記第1のエントリにアクセスする段階を含む。
説明43. 本発明の実施形態は、説明32による物品を有し、少なくとも1つのチップは、少なくとも1つのNANDフラッシュチップを含む。
説明44. 本発明の実施形態は、非一時的ストレージ媒体を有し、マシンによって実行されるときは、以下の段階を遂行する命令語が格納される前記非一時的ストレージ媒体を含む物品(article)であって、前記段階は、
ホスト上のアプリケーションからSSDに信頼性の要請を伝送する段階であって、前記信頼性の要請は、前記SSDに対する有効な信頼性を要請する、伝送する段階と、
前記ホスト上の前記アプリケーションにおいて、前記SSDから前記SSDに対する有効な信頼性を受信する段階と、
前記ホスト上の前記アプリケーションから前記SSDに信頼性テーブルの要請を伝送する段階であって、前記信頼性テーブルの要請は、前記SSDに格納された信頼性テーブルを要請する、伝送する段階と、
前記ホスト上の前記アプリケーションにおいて、前記SSDから前記信頼性テーブルを受信する段階であって、前記信頼性テーブルの各エントリは、前記SSDの設定及び前記SSDの構成に対する信頼性を識別する、受信する段階、
前記ホスト上の前記アプリケーションに対する所望の信頼性に少なくとも基づいて前記信頼性テーブルからエントリを選択する段階と、
前記ホスト上の前記アプリケーションから前記SSDに設定要請を伝送する段階を含み、前記設定要請は、前記信頼性テーブルの前記エントリを識別する。
説明45. 本発明の実施形態は、説明44による物品を有し、非一時的ストレージ媒体は、マシンによって実行されるとき、次の段階をさらに遂行する命令語が格納される前記非一時的ストレージ媒体を含む物品であって、前記段階は、
前記SSDに対する有効な信頼性を、前記ホスト上の前記アプリケーションに対する所望の信頼性と比較する段階と、
前記SSDに対する有効な信頼性に少なくとも基づいて、前記ホスト上の前記アプリケーションに対する前記所望の信頼性を超えている場合には、前記SSDに前記設定要請を伝送しない段階と、をさらに含む。
説明46. 本発明の実施形態は、説明44による物品を有し、前記ホスト上の前記アプリケーションに対する少なくとも所望の信頼性に基づいて前記信頼性テーブル内のエントリを選択する段階は、前記信頼性テーブルにおいて、前記SSDの設定に対する前記信頼性が、少なくとも前記所望の信頼性ほど高い前記エントリを選択する段階を含む。
説明47. 本発明の実施形態は、説明44による物品を有し、
前記信頼性テーブルの各エントリは、前記SSDの前記設定に対する第1の空間オーバーヘッド又は第1の性能の中の少なくとも1つをさらに識別し、
前記信頼性テーブルの第2エントリは第2の空間オーバーヘッド又は第2の性能の中の少なくとも1つをさらに識別し、
前記ホスト上の前記アプリケーションに対する少なくとも所望の信頼性に基づいて、信頼性テーブルのエントリを選択する段階は、前記ホスト上の前記アプリケーションに対する少なくとも所望の信頼性に基づいて、及び前記所望の空間オーバーヘッド又は所望の性能の中の少なくとも1つに基づいて前記信頼性テーブル内のエントリを選択する段階を含む。
結論として、本明細書に記述された実施形態に対する多様な変更の観点から、この詳細な説明及び添付された資料は、単に例としてのもので意図されており、本発明の概念の範囲を限定するものとみなされてはならない。したがって、本発明の概念として請求されるのは、次の請求の範囲及びその均等物の範囲及び思想内で存在し得るすべての変形である。

Claims (20)

  1. ホスト上の第1のアプリケーションから読み取り要請及び書き込み要請を受信するためのインターフェースと、
    少なくとも1つのチップを含むデータに対するストレージと、
    前記ストレージを使用して、前記ホスト上の前記第1のアプリケーションからの前記読み取り要請及び前記書き込み要請を処理するソリッド・ステート・ドライブ(SSD:Solid State Drive)のコントローラと、
    SSDを設定するための設定モジュールと、
    信頼性テーブルに対するストレージと、を備え、
    前記信頼性テーブルは、少なくとも第1のエントリ及び第2のエントリを含み、前記第1のエントリは、前記SSDの第1の設定及び前記SSDの前記第1の設定に対する第1の信頼性を識別し、前記第2のエントリは、前記SSDの第2の設定及び前記SSDの前記第2の設定に対する第2の信頼性を識別する、SSD。
  2. 前記インターフェースは、前記ホスト上の前記第1のアプリケーションから設定要請を受信する、
    請求項1に記載のSSD。
  3. 前記設定要請は、前記信頼性テーブルで前記第1のエントリ及び前記第2のエントリのいずれか1つの識別子を含む、
    請求項2に記載のSSD。
  4. 前記インターフェースは、前記ホスト上の前記第1のアプリケーションから信頼性メッセージを受信し、前記信頼性メッセージは、前記ホスト上の前記第1のアプリケーションに対する第1の所望の信頼性を含む、
    請求項1に記載のSSD。
  5. 前記設定モジュールは、少なくとも前記第1の所望の信頼性に基づいて前記信頼性テーブルの前記第1のエントリ及び前記第2のエントリのいずれか1つに基づいて、前記SSDを設定する、
    請求項4に記載のSSD。
  6. 前記少なくとも1つのチップは、少なくとも第1のチップの信頼性を有する第1のストレージスキーム及び第2のチップの信頼性を有する第2のストレージスキームを提供する、
    請求項1に記載のSSD。
  7. 前記SSDの第1の設定は、第1のストレージスキームを識別し、前記SSDの第2の設定は、第2のストレージスキームを識別する、
    請求項6に記載のSSD。
  8. エラー訂正コード(ECC:Error Correcting Code)モジュールをさらに備え、
    前記ECCモジュールは、少なくとも第1のECC信頼性を有する第1のECCスキーム及び第2のECC信頼性を有する第2のECCスキームを提供する、
    請求項1に記載のSSD。
  9. 前記SSDの第1の設定は、第1のECCスキームを識別し、前記SSDの第2の設定は、第2のECCスキームを識別する、
    請求項8に記載のSSD。
  10. 消去コーディングモジュール又はRAIDモジュールの中の少なくとも1つをさらに含み、
    前記消去コーディングモジュールは、少なくとも第1の消去コーディングの信頼性を有する第1の消去コーディングスキーム、又は第2の消去コーディングの信頼性を有する第2の消去コーディングスキームを提供し、前記RAIDモジュールは、少なくとも第1のRAID信頼性を有する第1のRAIDスキーム又は第2のRAID信頼性を有する第2のRAIDスキームを提供する、
    請求項1に記載のSSD。
  11. 前記SSDの第1の設定は、第1の消去コーディングスキーム又は第1のRAIDスキームの中の少なくとも1つを識別し、前記SSDの第2の設定は、第2の消去コーディングスキーム又は第2のRAIDスキームの中の少なくとも1つを識別する、
    請求項10に記載のSSD。
  12. 少なくとも1つのチップを含むデータに対するストレージを含むソリッド・ステート・ドライブ(SSD:Solid State Drive)に対する所望の信頼性を決定する段階と、
    前記SSDから信頼性テーブルの第1のエントリにアクセスする段階と、
    前記第1のエントリに基づいてSSDを設定する段階と、を含み
    前記信頼性テーブルは、少なくとも前記第1のエントリ及び第2のエントリを含み、前記第1のエントリは、前記SSDの第1の設定及び前記SSDの前記第1の設定に対する第1の信頼性を識別し、前記第2のエントリは、前記SSDの第2の設定及び前記SSDの前記第2の設定に対する第2の信頼性を識別する、
    方法。
  13. 前記第1のエントリは、前記チップのための第1のストレージスキームを含み、
    前記第2のエントリは、前記チップのための第2のストレージスキームを含み、
    前記第1のエントリに基づいて、前記SSDを設定する段階は、前記第1のストレージスキーム又は前記第2のストレージスキームに基づいて、前記チップを設定する段階を含む、
    請求項12に記載の方法。
  14. 前記SSDは、エラー訂正コード(ECC:Error Correcting Code)モジュールを含み、
    前記第1のエントリは、前記ECCモジュールに対する第1のECCスキームを含み、
    前記第2のエントリは、前記ECCモジュールに対する第2のECCスキームを含み、
    前記第1のエントリに基づいて、前記SSDを設定する段階は、前記第1のECCスキーム又は第2のECCスキームにしたがって前記ECCモジュールを設定する段階を含む、
    請求項12に記載の方法。
  15. 前記SSDは消去コーディングモジュール、又はRAIDモジュールの中の少なくとも1つを含み、
    前記第1のエントリは、前記消去コーディングモジュールに対する第1の消去コーディングスキーム又は前記RAIDモジュールに対する第1のRAIDスキームの中の少なくとも1つを含み、
    前記第2のエントリは、前記消去コーディングモジュールに対する第2消去コーディングスキーム又は前記RAIDモジュールに対する第2のRAIDスキームの中の少なくとも1つを含み、
    前記第1のエントリに基づいて、前記SSDを設定する段階は、前記第1の消去コーディングスキーム又は第2の消去コーディングスキームにしたがった前記消去コーディングモジュール、或いは前記第1のRAIDスキーム又は前記第2のRAIDスキームにしたがった前記RAIDモジュールの中の少なくとも1つを設定する段階を含む、
    請求項12に記載の方法。
  16. 前記SSDに対する所望の信頼性を決定する段階は、ホスト上のアプリケーションから前記SSDで所望の信頼性を受信する段階を含む、
    請求項12に記載の方法。
  17. 前記SSDから信頼性テーブルの第1のエントリにアクセスする段階は、
    前記信頼性テーブルにおいて、前記第1のエントリ及び前記第2のエントリにアクセスする段階と、
    前記第1のエントリは、少なくとも前記所望の信頼性ほど高い信頼性を含んでいるかを識別する段階と、を含む、
    請求項16に記載の方法。
  18. 前記SSDから信頼性テーブルの第1のエントリにアクセスする段階は、前記SSDでホスト上のアプリケーションから前記信頼性テーブルの前記第1のエントリの識別子を受信する段階を含む、
    請求項12に記載の方法。
  19. SSDに対する有効な信頼性を要請する信頼性要請をホスト上のアプリケーションから前記SSDに伝送する段階と、
    前記ホスト上の前記アプリケーションにおいて、前記SSDから前記SSDに対する前記有効な信頼性を受信する段階と、
    前記SSDに格納された信頼性テーブルを要請する信頼性テーブルの要請を前記ホスト上の前記アプリケーションから前記SSDに伝送する段階と、
    前記ホスト上の前記アプリケーションにおいて、前記SSDから前記信頼性テーブルを受信する段階と、
    前記ホスト上の前記アプリケーションに対する少なくとも所望の信頼性に基づいて前記信頼性テーブルからエントリを選択する段階と、
    前記ホスト上の前記アプリケーションから前記SSDに設定要請を伝送する段階と、を含み、
    前記信頼性テーブルの各エントリは、前記SSDの設定及び前記SSDの前記設定に対する信頼性を識別し、前記設定要請は、前記信頼性テーブルにおいて、前記エントリを識別する、
    方法。
  20. 前記ホスト上の前記アプリケーションに対する少なくとも所望の信頼性に基づいて前記信頼性テーブルからエントリを選択する段階は、前記SSDの前記設定に対する前記信頼性が、少なくとも前記所望の信頼性ほど高い前記信頼性テーブルにおける前記エントリを選択する段階を含む、
    請求項19に記載の方法。
JP2020190393A 2019-12-16 2020-11-16 信頼性の向上したssd Pending JP2021096837A (ja)

Applications Claiming Priority (4)

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

Publications (1)

Publication Number Publication Date
JP2021096837A true JP2021096837A (ja) 2021-06-24

Family

ID=76318025

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020190393A Pending JP2021096837A (ja) 2019-12-16 2020-11-16 信頼性の向上したssd

Country Status (5)

Country Link
US (3) US11307804B2 (ja)
JP (1) JP2021096837A (ja)
KR (1) KR20210076834A (ja)
CN (1) CN112988056A (ja)
TW (1) TW202125208A (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11307804B2 (en) * 2019-12-16 2022-04-19 Samsung Electronics Co., Ltd. Enhanced SSD reliability
KR20220077208A (ko) * 2020-11-30 2022-06-09 삼성전자주식회사 데이터 중복 제거 기능을 갖는 스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 서버의 동작 방법
US11733893B2 (en) * 2021-07-28 2023-08-22 International Business Machines Corporation Management of flash storage media
US11989088B2 (en) * 2022-08-30 2024-05-21 Micron Technology, Inc. Read data path

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8006166B2 (en) * 2007-06-12 2011-08-23 Micron Technology, Inc. Programming error correction code into a solid state memory device with varying bits per cell
JP5349897B2 (ja) * 2008-10-21 2013-11-20 株式会社日立製作所 ストレージシステム
US10073737B2 (en) * 2009-10-30 2018-09-11 International Business Machines Corporation Slice location identification
US8533564B2 (en) 2009-12-23 2013-09-10 Sandisk Technologies Inc. System and method of error correction of control data at a memory device
KR101678404B1 (ko) 2010-02-25 2016-11-23 삼성전자주식회사 사전 확률 정보를 사용하는 메모리 시스템 및 그것의 데이터 처리 방법
US20110307758A1 (en) * 2010-06-15 2011-12-15 Fusion-Io, Inc. Apparatus, system, and method for providing error correction
US8533550B2 (en) 2010-06-29 2013-09-10 Intel Corporation Method and system to improve the performance and/or reliability of a solid-state drive
KR101801147B1 (ko) 2011-08-30 2017-11-27 삼성전자주식회사 데이터 신뢰성을 개선하는 데이터 관리 방법 및 그에 따른 데이터 저장 장치
US10418097B2 (en) 2017-11-27 2019-09-17 Western Digital Technologies, Inc. Non-volatile storage system with read calibration
US11307804B2 (en) * 2019-12-16 2022-04-19 Samsung Electronics Co., Ltd. Enhanced SSD reliability

Also Published As

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

Similar Documents

Publication Publication Date Title
US10664345B2 (en) Physical page, logical page, and codeword correspondence
US9921912B1 (en) Using spare disk drives to overprovision raid groups
US9619170B2 (en) Information processing system having a data migration log
US9582220B2 (en) Notification of trigger condition to reduce declared capacity of a storage device in a multi-storage-device storage system
US9798620B2 (en) Systems and methods for non-blocking solid-state memory
KR101912596B1 (ko) 리던던트 어레이들을 통한 비휘발성 메모리 프로그램 실패 복구
JP2021096837A (ja) 信頼性の向上したssd
US9304685B2 (en) Storage array system and non-transitory recording medium storing control program
US8910017B2 (en) Flash memory with random partition
US9292382B2 (en) Codewords that span pages of memory
KR20130118370A (ko) 상위-레벨 리던던시 정보 계산
US20170077960A1 (en) Adaptively strengthening ecc for solid state cache
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
US10802958B2 (en) Storage device, its controlling method, and storage system having the storage device
US9582193B2 (en) Triggering a process to reduce declared capacity of a storage device in a multi-storage-device storage system
US9323617B2 (en) Remap raid to maintain raid level
US11934264B2 (en) ECC parity biasing for Key-Value data storage devices
US9582212B2 (en) Notification of trigger condition to reduce declared capacity of a storage device
KR102032878B1 (ko) 플래시 메모리 컨트롤러의 에러 정정 방법
US9563370B2 (en) Triggering a process to reduce declared capacity of a storage device
US20170371741A1 (en) Technologies for providing file-based resiliency

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20231017