JP2023522544A - 単方向コマンドによるオン-ssdの消失訂正符号化 - Google Patents

単方向コマンドによるオン-ssdの消失訂正符号化 Download PDF

Info

Publication number
JP2023522544A
JP2023522544A JP2022549602A JP2022549602A JP2023522544A JP 2023522544 A JP2023522544 A JP 2023522544A JP 2022549602 A JP2022549602 A JP 2022549602A JP 2022549602 A JP2022549602 A JP 2022549602A JP 2023522544 A JP2023522544 A JP 2023522544A
Authority
JP
Japan
Prior art keywords
value
parity
unidirectional command
command
indicated
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.)
Granted
Application number
JP2022549602A
Other languages
English (en)
Other versions
JP7529947B2 (ja
Inventor
トライカ、サンジーブ
タッカー、グレゴリー
ハリス、ジェイムズ
ヒューズ、ジョナサン
ウィソッキ、ピョートル
カオ、ガン
ダイ、キフア
ウォーカー、ベンジャミン
ヤン、ジエ
リウ、シャオドン
リウ、チャンペン
エリス、ジャクソン
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2023522544A publication Critical patent/JP2023522544A/ja
Application granted granted Critical
Publication of JP7529947B2 publication Critical patent/JP7529947B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

電子装置の一実施形態は、1または複数の基板と、前記1または複数の基板に結合したロジックであって、前記ロジックは、永続記憶媒体へのローカルアクセスを制御し、1または複数のコマンドに応答して、第1のローカルパリティ計算に基づく中間パリティ値を決定し、前記中間パリティ値をローカルに記憶し、前記中間パリティ値および第2のローカルパリティ計算に基づいて、最終パリティ値を決定するロジックと、を備えてよい。他の実施形態が開示され、特許請求される。

Description

実施形態は、一般的に電子ストレージシステムに関する。より具体的には、実施形態は、単方向コマンドによるオン-ソリッドステートドライブ(SSD)の消失訂正符号化に関する。
ストレージシステムには、データの信頼性および耐久性を向上させるために、消失訂正符号化(erasure-coding;EC)技術およびボリュームメンバドライブについて対応するデータレイアウトを使用するものがある。ECシステムの例としては、冗長データのステージングを目的とする、ボリュームに1または2の追加的なドライブを有する、RAID5、RAID6等のような独立ディスク冗長アレイ(redundant array of independent disks;RAID)システム、および、いくつかのクラウドストレージシステムで利用される、M+P(例えば、6+3) ECが含まれる。より一般的には、M+P EC構成では、M+P個のドライブが使用されて、元々M個のドライブに記憶されようとするデータを、P個の追加的なドライブを使用することによりエンコードする。ドライブにまたがって記憶されたデータは、最大P個のドライブ分の故障からシステムを回復するのに使用される、P個のドライブ相当のパリティデータを含む。
本明細書において説明する題材は、例として示されており、添付図面における限定として示されているわけではない。説明を簡潔かつ明確なものにするために、図に示される要素は、必ずしも縮尺通りに描かれていない。例えば、いくつかの要素の寸法は、明確性のために他の要素に対して誇張されることがある。さらに、適切であると考えられる場合、対応する要素または類似する要素を示すために、参照符号が図面中で繰り返し用いられている。
図面は、以下の通りである。
一実施形態による電子ストレージデバイスの一例のブロック図である。 一実施形態による電子装置の一例のブロック図である。 一実施形態によるストレージデバイスを制御する方法の一例のフローチャートである。 一実施形態によるストレージデバイスを制御する方法の一例のフローチャートである。 一実施形態によるストレージデバイスを制御する方法の一例のフローチャートである。 一実施形態によるストレージデバイスを制御する方法の一例のフローチャートである。 一実施形態によるストレージデバイスを制御する方法の一例のフローチャートである。 一実施形態による電子ストレージシステムの一例のブロック図である。 一実施形態によるECコントローラの動作および対応するドライブの動作の一例の表である。 一実施形態による電子ストレージシステムの別の例のブロック図である。 一実施形態による電子ストレージシステムの別の例のブロック図である。 一実施形態によるコマンドフォーマットの一例の例示的な図である。 一実施形態によるコンピューティングシステムの一例のブロック図である。 一実施形態によるソリッドステートドライブ(SSD)の一例のブロック図である。
添付図面を参照して、1もしくは複数の実施形態または実装をここで説明する。特定の構成および配置について論じるが、これは例示目的でのみ行われることを理解されたい。当業者であれば、本明細書の趣旨および範囲から逸脱することなく他の構成および配置が使用され得ることを認識するであろう。本明細書において説明する技術および/または配置が、本明細書において説明するもの以外の様々な他のシステムおよびアプリケーションにおいても使用され得ることが、当業者には明らかとなろう。
以下の説明では、例えばシステムオンチップ(SoC)アーキテクチャなどのアーキテクチャにおいて明示され得る様々な実装を記載するが、本明細書において説明する技術および/または配置の実装は、特定のアーキテクチャおよび/またはコンピューティングシステムに限定されず、同様の目的の任意のアーキテクチャおよび/またはコンピューティングシステムにより実装され得る。例えば、複数の集積回路(IC)チップおよび/またはパッケージおよび/または様々なコンピューティングデバイスおよび/またはセットトップボックス、スマートフォン等の民生用電子(CE)デバイスなどを例えば使用した様々なアーキテクチャが、本明細書において説明する技術および/または配置を実装し得る。さらに、以下の説明では、例えば、ロジックの実装、システムコンポーネントの種類および相互関係、ロジックの分割/統合の選択等、多数の具体的な詳細を記載し得るが、特許請求される主題は、そのような具体的な詳細なしに実施され得る。他の例において、例えば制御構造および完全なソフトウェア命令シーケンスのような、いくつかの題材は、本明細書において開示される題材を不明瞭にしないよう、詳細に示されないことがある。
本明細書において開示される題材は、ハードウェア、ファームウェア、ソフトウェアまたはそれらの任意の組み合わせにおいて実装され得る。本明細書において開示される題材は、1または複数のプロセッサにより読み込まれ実行され得る、機械可読媒体に記憶された命令としても実装され得る。機械可読媒体は、機械(例えば、コンピューティングデバイス)により可読な形式で情報を記憶または送信するための任意の媒体および/またはメカニズムを含み得る。例えば、機械可読媒体は、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスクストレージ媒体、光ストレージ媒体、フラッシュメモリデバイス、電気、光、音または他の形式の伝搬信号(例えば、搬送波、赤外線信号、デジタル信号等)および他のものを含み得る。
「一実装」、「実装」、「例示的な実装」等についての本明細書における言及は、説明される実装が特定の特徴、構造または特性を含み得ることを示すが、全ての実施形態がそのような特定の特徴、構造または特性を必ずしも含まないことがある。さらに、そのような文言は、必ずしも同じ実装を参照しているわけではない。さらに、ある実施形態に関連して特定の特徴、構造または特性が説明される場合、本明細書において明示的に説明されているか否かにかかわらず、他の実装に関連してそのような特徴、構造または特性をもたらすことは当業者の知識の範囲内であることが述べられている。
本明細書に説明される様々な実施形態は、メモリコンポーネント、および/またはメモリコンポーネントに対するインタフェースを備えてもよい。そのようなメモリコンポーネントは、揮発性メモリおよび/または不揮発性(NV)メモリを含み得る。揮発性メモリは、媒体が記憶するデータの状態の維持に電力を必要とする記憶媒体であってもよい。揮発性メモリの非限定的な例としては、ダイナミックランダムアクセスメモリ(DRAM)またはスタティックランダムアクセスメモリ(SRAM)などの様々なタイプのランダムアクセスメモリ(RAM)を含み得る。メモリモジュールにおいて使用されてもよい1つの特定のタイプのDRAMは、シンクロナスダイナミックRAM(SDRAM)である。特定の実施形態において、メモリコンポーネントのDRAMは、ダブルデータレート(DDR)SDRAM向けのJESD79F、DDR2 SDRAM向けのJESD79-2F、DDR3 SDRAM向けのJESD79-3F、DDR4 SDRAM向けのJESD79-4A、低電力DDR(LPDDR)向けのJESD209、LPDDR2向けのJESD209-2、LPDDR3向けのJESD209-3およびLPDDR4向けのJESD209-4(これらの規格は、jedec.orgで参照可能である)など、電子素子技術連合評議会(Joint Electron Device Engineering Council;JEDEC)が公表する規格に準拠し得る。そのような規格(および類似の規格)は、DDR系規格として参照されてよく、そのような規格を実装するストレージデバイスの通信インタフェースは、DDR系インタフェースとして参照されてもよい。
NVメモリ(NVM)は、媒体により記憶されるデータの状態を維持するために電力を必要としない記憶媒体であってよい。一実施形態において、メモリデバイスは、NAND技術またはNOR技術に基づくメモリなどのブロックアドレッサブルメモリデバイスを含んでよい。メモリデバイスは、3次元(3D)クロスポイントメモリデバイス、または他のバイトアドレス可能なインプレース書き込みの不揮発性メモリデバイスなどの次世代不揮発性デバイスも含んでよい。一実施形態において、メモリデバイスは、カルコゲナイドガラスを使用するメモリデバイス、マルチ閾値レベル式NANDフラッシュメモリ、NORフラッシュメモリ、シングルレベルもしくはマルチレベルの相変化メモリ(PCM)、抵抗変化メモリ、ナノワイヤメモリ、強誘電体トランジスタRAM(FeTRAM)、反強誘電体メモリ、メモリスタ技術を組み込んだ磁気抵抗RAM(MRAM)メモリ、金属酸化物系、酸素欠陥系、および、導電性ブリッジRAM(CB-RAM)もしくはスピントランスファトルク(STT)-MRAMを含む抵抗変化メモリ、スピントロニック磁気接合メモリ型デバイス、磁気トンネリング接合(MTJ)型デバイス、DW(ドメインウォール)およびSOT(スピン軌道トランスファ)型デバイス、サイリスタ型メモリデバイス、または上記のいずれかの組み合わせ、または他のメモリであってよく、またはそれらを含んでよい。メモリデバイスは、ダイそのものを、および/またはパッケージングされたメモリ製品を、指してもよい。特定の実施形態では、不揮発性メモリを備えたメモリコンポーネントは、JEDECが公表した、JESD218、JESD219、JESD220-1、JESD223B、JESD223-1、または、他の適した規格などの1または複数の規格に準拠してもよい(本明細書において引用したJEDEC規格は、jedec.orgで参照可能である)。
図1を参照すると、電子ストレージデバイス10の一実施形態は、永続記憶媒体12と、永続記憶媒体12に通信可能に結合されたデバイスコントローラ11と、を含み得る。デバイスコントローラ11は、永続記憶媒体12へのローカルアクセスを制御するロジック13(例えば、デバイス10自体についてのコマンドロジック、制御ロジック、デバイスロジック等)を含む。1または複数のコマンドに応答して、例えば、ロジック13は、第1のローカルパリティ計算に基づいて中間パリティ値を決定し、中間パリティ値をローカルに記憶するように構成されてよい。例えば、ロジック13は、1または複数のコマンドに応答して、中間パリティ値および第2のローカルパリティ計算に基づいて、最終パリティ値を決定するようにさらに構成されてよい。いくつかの実施形態では、第1の単方向コマンドに応答して、ロジック13は、第1の単方向コマンドで示される第1のアドレスから古いデータ値を読み込み、古いデータ値と、第1の単方向コマンドで示される新たなデータ値との排他的OR(XOR)演算を実行して中間パリティ値を決定し、第1の単方向コマンドで示される第1のインデックスに関連付けられる第1の位置に中間パリティ値をローカルに記憶するように構成されてよい。例えば、第1の単方向コマンドに応答して、ロジック13は、第1のアドレスに新たなデータを書き込むようにさらに構成されてよい。いくつかの実施形態では、第2の単方向コマンドに応答して、ロジック13は、第2の単方向コマンドで示される第2のインデックスに関連付けられる第2の位置から中間パリティ値を読み込み、第2の単方向コマンドで示される第2のアドレスに中間パリティ値を記憶するように構成されてよい。
いくつかの実施形態では、第3の単方向コマンドに応答して、ロジック13は、第3の単方向コマンドで示される第3のアドレスから古いパリティデータ値を読み込み、第3の単方向コマンドで示される第3のインデックスに関連付けられる第3の位置に、古いパリティデータ値をローカルに記憶するようにさらに構成されてよい。例えば、第3の単方向コマンドに応答して、ロジック13は、古いパリティデータ値と、第3の単方向コマンドで示される中間パリティ値と、第3の単方向コマンドで示される係数値とに基づいて、第2のパリティ計算を実行して、最終パリティ値を決定し、第3のアドレスに最終パリティ値を書き込むようにさらに構成されてよい。
いくつかの実施形態では、第4の単方向コマンドに応答して、ロジック13は、第4の単方向コマンドで示される第4のアドレスから古いデータ値を読み込み、古いデータ値と、第4の単方向コマンドで示される新たなデータ値とのXOR演算を実行して、中間パリティ値を決定し、中間パリティ値と、第4の単方向コマンドで示される係数値とに基づく乗算演算を実行して、最終パリティ値を決定し、第4の単方向コマンドで示される第5のアドレスに最終パリティ値を書き込むようにさらに構成されてよい。本明細書のいずれの実施形態においても、永続記憶媒体12は、ソリッドステートドライブ(SSD)、ハードディスクドライブ(HDD)等を備えてよい。
上述のデバイスコントローラ11、永続記憶媒体12、ロジック13、および他のデバイス要素のそれぞれの実施形態は、ハードウェア、ソフトウェア、またはそれらの任意の好適な組み合わせで実装されてよい。例えば、ハードウェア実装は、例えば特定用途向け集積回路(ASIC)、相補型金属酸化物半導体(CMOS)などの回路技術もしくはトランジスタ-トランジスタロジック(TTL)技術またはそれらの任意の組み合わせを用いた、例えば、プログラマブルロジックアレイ(PLA)、フィールドプログラマブルゲートアレイ(FPGA)、コンプレックスプログラマブルロジックデバイス(CPLD)、または、回路技術を用いる固定機能ロジックハードウェアなどの構成可能なロジックを含み得る。デバイスコントローラ11の実施形態は、汎用コントローラ、専用コントローラ、メモリコントローラ、ストレージコントローラ、マイクロコントローラ、汎用プロセッサ専用プロセッサ、中央処理装置(CPU)、実行ユニット等を含んでよい。いくつかの実施形態では、永続記憶媒体12および/またはロジック13は、デバイスコントローラ11を含む、様々なコンポーネント内に配置、あるいは様々なコンポーネントとともに併置されてもよい(例えば、同じダイ上、同じパッケージ内、同じ筐体内等)。
代替的に、または追加的に、これらの構成要素の全てまたは一部は、プロセッサまたはコンピューティングデバイスにより実行される、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、プログラマブルROM(PROM)、ファームウェア、フラッシュメモリ等のマシンまたはコンピュータ可読記憶媒体に記憶されたロジック命令セットとして、1または複数のモジュールに実装されてよい。例えば、コンポーネントのオペレーションを実行するためのコンピュータプログラムコードは、Python、Perl、Java(登録商標)、Smalltalk(登録商標)、C++、C#、または同様のもの等のオブジェクト指向プログラミング言語、および、「C」プログラミング言語または同様のプログラミング言語等の従来の手続き型のプログラミング言語を含むオペレーティングシステム(OS)に適用可能な/適切な1または複数のプログラミング言語の任意の組み合わせによって書かれてよい。例えば、永続記憶媒体12、他の永続記憶媒体、または他のデバイスメモリは、デバイスコントローラ11により実行された場合に、デバイス10に、デバイス10の1または複数のコンポーネント、特徴、または態様(例えば、ロジック13が第1のローカルパリティ計算に基づいて中間パリティ値を決定し、中間パリティ値をローカルに記憶し、中間パリティ値および第2のローカルパリティ計算に基づいて最終パリティ値を決定する等)を実装させる命令のセットを記憶してよい。
ここで図2を参照すると、電子装置15の一実施形態は、1または複数の基板16と、1または複数の基板16に結合されたロジック17とを備えてよい。ロジック17は、永続記憶媒体へのローカルアクセスを制御し、1または複数のコマンドに応答して、第1のローカルパリティ計算に基づいて、中間パリティ値を決定し、中間パリティ値をローカルに記憶するように構成されてよい。例えば、ロジック17は、1または複数のコマンドに応答して、中間パリティ値と、第2のローカルパリティ計算とに基づいて、最終パリティ値を決定するようにさらに構成されてよい。いくつかの実施形態では、第1の単方向コマンドに応答して、ロジック17は、第1の単方向コマンドで示される第1のアドレスから古いデータ値を読み込み、古いデータ値と、第1の単方向コマンドで示される新たなデータ値とのXOR演算を実行して、中間パリティ値を決定し、第1の単方向コマンドで示される第1のインデックスに関連付けられる第1の位置に中間パリティ値をローカルに記憶するように構成されてよい。例えば、第1の単方向コマンドに応答して、ロジック17は、第1のアドレスに新たなデータを書き込むようにさらに構成されてよい。いくつかの実施形態では、第2の単方向コマンドに応答して、ロジック17は、第2の単方向コマンドで示される第2のインデックスに関連付けられる第2の位置から中間パリティ値を読み込み、第2の単方向コマンドで示される第2のアドレスに中間パリティ値を記憶するように構成されてよい。
いくつかの実施形態では、第3の単方向コマンドに応答して、ロジック17は、第3の単方向コマンドで示される第3のアドレスから古いパリティデータ値を読み込み、第3の単方向コマンドで示される第3のインデックスに関連付けられる第3の位置に古いパリティデータ値をローカルにに記憶するようにさらに構成されてよい。例えば、第3の単方向コマンドに応答して、ロジック17は、古いパリティデータ値、第3の単方向コマンドで示される中間パリティ値、および第3の単方向コマンドで示される係数値に基づいて、第2のパリティ計算を実行して、最終パリティ値を決定し、第3のアドレスに最終パリティ値を書き込むようにさらに構成されてよい。
いくつかの実施形態では、第4の単方向コマンドに応答して、ロジック17は、第4の単方向コマンドで示される第4のアドレスから古いデータ値を読み込み、古いデータ値と、第4の単方向コマンドで示される新たなデータ値とのXOR演算を実行して、中間パリティ値を決定し、中間パリティ値と、第4の単方向コマンドで示される係数値とに基づいて、乗算演算を実行して、最終パリティ値を決定し、第4の単方向コマンドで示される第5のアドレスに最終パリティ値を書き込むようにさらに構成されてよい。本明細書の実施形態のいずれかにおいて、永続記憶媒体は、SSDを含んでよい。
ロジック17の実施形態は、例えば、本明細書で説明されるような、システム、装置、コンピュータ、デバイス等において実装されてよい。より具体的には、ロジック17のハードウェア実装は、例えば、PLA、FPGA、CPLDのような構成可能なロジック、または、例えば、ASIC、CMOS、もしくはTTL技術のような回路技術を用いる固定機能ロジックハードウェア、またはそれらの任意の組み合わせを含んでよい。代替的にまたは追加的に、ロジック17は、プロセッサまたはコンピューティングデバイスにより実行されることとなる、RAM、ROM、PROM、ファームウェア、フラッシュメモリ等のような、機械可読媒体もしくはコンピュータ可読記憶媒体に記憶されたロジック命令のセットとして1または複数のモジュールにおいて実装されてよい。例えば、コンポーネントのオペレーションを実行するためのコンピュータプログラムコードは、例えばPython、Perl、Java(登録商標)、Smalltalk(登録商標)、C++、C#または同様のもののオブジェクト指向プログラミング言語を含む1または複数のOS適用可能/適合プログラミング言語と、「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語との任意の組み合わせによって書かれてよい。
例えば、ロジック17は、1または複数の基板16を含みえる半導体装置に実装され、ロジック17は、1または複数の基板16に結合される。いくつかの実施形態では、ロジック17は、(例えば、シリコン、サファイア、ガリウム-ヒ素等の)半導体基板上の1または複数の構成可能なロジックおよび機能固定型ハードウェアロジックにおいて、少なくとも部分的に実装されてよい。例えば、ロジック17は、基板16内に配置されるトランジスタチャネル領域を有する基板16に結合される、トランジスタアレイおよび/または他の集積回路コンポーネントを含んでよい。ロジック17および基板16の間のインタフェースは、階段接合でなくともよい。ロジック17はまた、基板16の初期ウェハ上に成長するエピタキシャル層を備えると考えられてよい。
ここで図3A~図3Eを参照すると、ストレージを制御する方法20の一実施形態は、ブロック21において、永続記憶媒体へのローカルアクセスを制御する段階と、1または複数のコマンドに応答して、ブロック22において、第1のローカルパリティ計算に基づいて、中間パリティ値を決定する段階と、ブロック23において、中間パリティ値をローカルに記憶する段階と、を備える。方法20はまた、1または複数のコマンドに応答して、ブロック24において、中間パリティ値および第2のローカルパリティ計算に基づいて、最終パリティ値を決定する段階を含んでよい。方法20のいくつかの実施形態は、ブロック25において、第1の単方向コマンドに応答して、ブロック26において、第1の単方向コマンドで示される第1のアドレスから古いデータ値を読み込む段階と、ブロック27において、古いデータ値と、第1の単方向コマンドで示される新たなデータ値とのXOR演算を実行して、中間パリティ値を決定する段階と、ブロック28において、第1の単方向コマンドで示される第1のインデックスに関連付けられる第1の位置に中間パリティ値をローカルに記憶する段階と、を備えてよい。例えば、第1の単方向コマンドに応答して、方法20は、ブロック29において、第1のアドレスに新たなデータを書き込む段階をさらに備えてよい。方法20のいくつかの実施形態は、ブロック30において、第2の単方向コマンドに応答して、ブロック31において、第2の単方向コマンドで示される第2のインデックスに関連付けられる第2の位置から中間パリティ値を読み込む段階と、ブロック32において、第2の単方向コマンドで示される第2のアドレスに中間パリティ値を記憶する段階と、をさらに備えてよい。
方法20のいくつかの実施形態は、ブロック33において、第3の単方向コマンドに応答して、ブロック34において、第3の単方向コマンドで示される第3のアドレスから古いパリティデータ値を読み込む段階と、ブロック35において、第3の単方向コマンドで示される第3のインデックスに関連付けられる第3の位置に古いパリティデータ値をローカルに記憶する段階と、をさらに備えてよい。例えば、第3の単方向コマンドに応答して、方法20は、ブロック36において、古いパリティデータ値と、第3の単方向コマンドで示される中間パリティ値と、第3の単方向コマンドで示される係数値とに基づいて、第2のパリティ計算を実行して、最終パリティ値を決定する段階と、ブロック37において、第3のアドレスに最終パリティ値を書き込む段階と、をさらに備えてよい。
方法20のいくつかの実施形態は、ブロック38において、第4の単方向コマンドに応答して、ブロック39において、第4の単方向コマンドで示される第4のアドレスから古いデータ値を読み込む段階と、ブロック40において、古いデータ値と、第4の単方向コマンドで示される新たなデータ値とのXOR演算を実行して、中間パリティ値を決定する段階と、ブロック41において、中間パリティ値と、第4の単方向コマンドで示される係数値とに基づいて、乗算演算を実行して、最終パリティ値を決定する段階と、ブロック42において、第4の単方向コマンドで示される第5のアドレスに最終パリティ値を書き込む段階と、をさらに備えてよい。本明細書の実施形態のいずれかにおいて、ブロック43において、永続記憶媒体は、SSDを含んでよい。
方法20の実施形態は、例えば、本明細書で説明されるようなシステム、装置、コンピュータ、デバイス等に実装されてよい。より具体的には、方法20のハードウェア実装は、例えば、PLA、FPGA、CPLD等の構成可能なロジック、または、例えば、ASIC、CMOSもしくはTTL技術等の回路技術を用いる固定機能ロジックハードウェア、または、これらの任意の組み合わせを含んでよい。代替的にまたは追加的に、方法20は、1または複数のモジュールにおいて、RAM、ROM、PROM、ファームウェア、フラッシュメモリ等の機械またはコンピュータ可読記憶媒体に記憶される、プロセッサまたはコンピューティングデバイスによって実行されるべきロジック命令セットとして実装されてよい。例えば、コンポーネントのオペレーションを実行するためのコンピュータプログラムコードは、Python、Perl、Java(登録商標)、Smalltalk(登録商標)、C++、C#もしくはこれらと同様のもののようなオブジェクト指向プログラミング言語を含む、1または複数のOS適用可能/適合プログラミング言語と、「C」プログラミング言語または同様のプログラミング言語のような従来の手続き型プログラミング言語との任意の組み合わせによって書かれてよい。
例えば、方法20は、以下の例25から32に関連し説明されたコンピュータ可読媒体に実装されてよい。方法20の実施形態またはその部分は、ファームウェア、アプリケーション(例えば、アプリケーションプログラミングインタフェース(API)を介して)、またはオペレーティングシステム(OS)上で実行されるドライバソフトウェアにおいて実装されてよい。さらに、ロジック命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、状態設定データ、集積回路用構成データ、電子回路をパーソナライズする状態情報、および/またはハードウェア固有の他の構造コンポーネント(例えば、ホストプロセッサ、中央演算処理装置(CPU)、マイクロコントローラ等)を含み得る。
いくつかの実施形態は、双方向性コマンドを使用することのないオン-SSDの消失訂正符号化(EC)についての技術を有利に提供し得る。ECベースのストレージ技術は、パリティの追加的な計算を要求する。これは、古いデータおよび古いパリティを読み込むことと、新たなデータにより与えられるパリティの再計算をすることと、新たなデータおよび新たなパリティを記憶することとにより行われる。従来のECベースのストレージシステムの中心的なコンポーネントは、ストレージコントローラエンティティ(例えば、RAIDホストバスアダプタ(HBA)または同様のソフトウェア)を含んでよい。これは、他のエンティティにストレージボリュームを公開し、全てのECフローを取り仕切り、必要な計算を実行する集中型エンティティである。部分的なストライプ書き込みとなるランダム書き込みオペレーションを目的として、エンティティは、メンバドライブに対する多数の読み込みおよび書き込みオペレーションを生成し、中央ストレージコントローラ計算エンジンを使用して、必要なデータ計算を実行する。
集中型エンティティは、まず、リクエスタ側からのデータおよびメンバドライブからのデータの両方を一般的に含む、パリティ計算を実行するために必要な全てのデータを取得しなければならない。計算を実行した後に、集中型エンティティは、全てのデータと、算出されたパリティデータとをメンバドライブに書き込む必要がある。従来のECベースのストレージシステムでは、例えば、これには、古いパリティおよびデータを読み込むためのP+1回のデータ転送と、更新をセーブするためにP+1回のデータ転送とが要求され、集中型ストレージコントローラにおいてパリティ計算が実行される。例えば、8+3ECシステムの例では、全てのランダム書き込みが8回の(8)データ転送となり(例えば、P=3である場合の、3+1+3+1)、これは800%のデータ転送オーバヘッドに対応する。
集中型ストレージコントローラからのデータ転送のこの高いオーバヘッドは、ローカル(例えばPCIe)および/またはリモート(例えばイーサネット(登録商標))インタフェース帯域幅を消費し、従来のECベースのストレージシステムの最大ストレージ性能を最終的に制限し得る。また、全ての計算が集中型ストレージコントローラエンティティで実行され、これはまた、大規模なシステム性能についてのボトルネックになり得る。いくつかの他のECベースのシステムは、双方向性コマンド(例えば、ホストメモリからメンバドライブへデータを、さらにはメンバドライブからホストメモリへドライブデータを移動する単一のコマンド)を利用して、オーバヘッドを低減する。しかしながら、そのような双方向コマンドの使用は、スケーラブルなECベースのストレージシステムを実装するためには、困難または非実用的である。いくつかの他のECベースのシステムは、XOR演算をオフロードする技術を備え得るが、そのようなオペレーションは、より複雑なECベースのストレージシステムをサポートする点で、範囲が限定される。
有利には、いくつかの実施形態は、従来のECベースのストレージシステムに伴う1または複数の先述の問題を克服する先進的なECオフロード技術を提供し得る。いくつかの実施形態は、一般化されたECレベルを有利にサポートし得る。いくつかの実施形態はまた、スケーラブルなECベースのストレージシステムの実装を簡略化するために、単方向コマンド(例えば、ホストメモリおよびメンバドライブの間のデータの単一の転送のみに関与する単一のコマンド)を有利に利用し得る。いくつかの実施形態は、複雑な数学的演算(例えば、乗算)をECコントローラからメンバドライブへオフロードして、ネットワークトラフィックと、集中型ストレージコントローラからの計算オーバヘッドとを有利に低減し得る。
[WriteAndXor、SaveEC、およびECwriteの例]
具体的な実装に限定されることなく、一実施形態は、複雑な数学的演算をSSDメンバドライブへ移動する以下の3つの(3)SSDコマンドを導入し得る。:(1)WriteAndXor(論理ブロックアドレス(LBA)L、データD、記述子CDidx):このコマンドは、古いデータと、新たなデータとのXORを、指定される記述子によりインデックス付けされる一時的位置に配置する。;(2)SaveEC(記述子CDidx,メモリアドレスM):このコマンドは、記述子により指定された一時的位置を読み込み、メモリアドレスMに結果を配置する。メモリアドレスMにおける空間は、中央ストレージコントローラにより割り当てられ、ホストメモリ、永続メモリ領域(persistent memory region;PMR)、内部メモリバッファ(internal memory buffer;IMB)、制御メモリバッファ(control memory buffer;CMB)等に割り当てられてよい;(3)ECwrite(LBA L,データX,データg):このコマンドは、LBA Lにおける古い(パリティ)データを読み込み、それをCDidx記述子により指定される一時的位置にセーブする。このコマンドはまた、例えば、パラメータgおよび(例えばメモリアドレスMからの)中間パリティ値Xを有するガロア体(GF)の数学を使用して計算されるパリティ計算の結果によって、Lにおけるデータを更新する。
中央ストレージコントローラの一実施形態は、構成SSD上でこれらのコマンドの利用可能性を検出し(例えば、デバイス能力または互換性のクエリ)、オペレーションを取り仕切る技術を含み得る。中央ストレージコントローラはまた、ランダム書き込みおよび/または部分的なストライプ書き込みを目的とするコマンドの新たなフローを開始する場合に、現在使用中のインデックスのリストを維持し、現在使用中でないインデックスを選択する技術を含み得る。有利には、いくつかの実施形態は、メンバドライブに対してのI/Oオペレーションの数を低下させ、中央ストレージコントローラのCPU/ハードウェアの利用をオフロードし、全体のストレージソリューションのスケーラビリティを改善する。例示的な8+3ECについて、いくつかの実施形態は、中央ストレージコントローラ上のXOR演算およびGF乗算を排除し、バス/ネットワーク上のデータ転送の数を8から5に低減する(例えば、約40%の低減;以下の表1を参照)。
表1は、一般化されたM+P構成および例示の8+3(M=8,P=3)構成についての実施形態に係る、ベースラインとなる従来のストレージシステムに対するECオフロードストレージについてのXOR演算、GF乗算、およびデータ転送の例示的な比較を示す。最も右の2列は、いくつかの実施形態にしたがって提供される改善(例えば、データ転送および中央ストレージコントローラにおけるオペレーションの低減)を要約する。
Figure 2023522544000002
具体的な実装に限定されることなく、以下のコマンドが、以下の擬似コードによって示されるような(本明細書でさらなる詳細が説明されるような)コマンドを実装するロジックを提供するSSDに実装されてよい。
[WriteAndXor(LBA L,データD,記述子CDidx)]
Figure 2023522544000003
[SaveEC(記述子CDidx,メモリアドレスM)]
Figure 2023522544000004
[ECwrite(LBA L,データX,データg)]
Figure 2023522544000005
図4A~図4Bを参照すると、電子ストレージシステム45の一実施形態は、複数のメンバドライブ47(例えば、4ドライブRAID6構成のような、SSD1からSSD4を含む2+2 EC構成)に、バスおよび/またはネットワークインタフェース48を介して通信可能に結合されるECコントローラ46(例えば、RAID HBA、Intel(登録商標) virtual RAID on CPU(VROC)等のようなRAIDコントローラ)を含み得る。いくつかの実施形態によれば、ECコントローラ46は、図4Aに1から7のフロー番号で図示されるようなコマンドを取り仕切るロジックを含み、ECコントローラ46およびメンバドライブ47のオペレーションのさらなる説明が図4Bに示される。
コマンドWriteAndXorおよびSaveECは、コマンド記述子インデックス(CDidx)を使用して互いに関連付けられる。ここで、CDidxは、所与のRAIDオペレーションの目的でホスト/サーバノードにより生成され、ホストは、同じドライブに対して、同じCDidxを有する2つの未解決のRAIDオペレーションが一度に存在しないことを保証する。WriteAndXorコマンドの中間結果(Yidx)は、SSDドライブ(例えば、図4Aに示されるSSD1)のバッファにステージングされる。ECwriteのパラメータgは、GFの数学的計算についての係数であり得る。gの値は、RAIDロジックにより設定されてよく、RAIDレベル(例えば、ストライプにおけるパリティドライブの数)と、所与のRAIDストライプにおけるパリティドライブインデックスとに依存し得る。
矢印1において、ECコントローラ46は、Write(L',D1)コマンドを受け取る。ポイント2において、ECコントローラ46は、IDX1をSSD1についてのコマンド記述子インデックスに割り当て、メモリ内のメモリアドレスM1における空間が、中間パリティ値X1を保持すべく、ECコントローラ46に割り当てられる。例えば、ECコントローラ46は、ホストコンピュータ上で動作するソフトウェアエンティティであってよく、ECコントローラ46は、中間パリティ値X1を保持するためにホストメモリの一部をECコントローラ専用に割り当ててよい。ECコントローラ46はまた、LBA L'をSSD1についてのLBA L1にマッピングし得る。
矢印3において、ECコントローラは、コマンドWriteAndXor(L1,D1,IDX1)をSSD1に発行する。メンバドライブ47上で、WriteAndXorコマンドは、更新されたデータをターゲットドライブに書き込むことを担い、一方で、指定された記述子により位置が示される一時的バッファに、中間パリティ計算を配置する。例えば、メンバドライブ47は、コマンドを実装するためのECオフロードロジックをそれぞれ含み得る。したがって、SSD1上で、WriteAndXor(L1,D1,IDX1)コマンドは、ECオフロードロジックに、LBA L1から古いデータOLDD1を読み込ませ、古いデータと、新たなデータD1とのXOR演算を実行させ(YIDX1=D1 XOR OLDD1)、IDX1により示される位置におけるバッファに、中間パリティ値YIDX1をセーブさせる。WriteAndXor(L1,D1,IDX1)コマンドは、次に、ECオフロードロジックに、新たなデータD1をLBA L1に書き込ませる。
矢印4において、ECコントローラ46は、コマンドSaveEC(IDX1,M1)をSSD1へと発行する。SaveECコマンドは、ECオフロードロジックに、計算された中間パリティ値YIDX1を取り込ませ、ホストメモリ(例えば、ECコントローラ46に割り当てられたホストメモリの一部、またはPRM、CMB、IMB等)内のメモリアドレスM1に、それを配置させる。矢印5および6において、ECコントローラは、中間パリティ計算X1を取り込み(例えば、メモリアドレスM1から読み込み)、LBA L1、データ値X1、およびそれぞれの適切なGF係数gおよびgを有するパリティドライブにECwriteコマンドを発行する。内部において、メンバドライブSSD3,SSD4は、パリティ計算を完了し、指定されたLBAに結果をセーブする。矢印7において、アプリケーションは、完了が通知される。有利には、この実施形態では、部分的なストライプ書き込みを目的とする全てのECソリューションの計算がメンバドライブにオフロードされる。いくつかの実施形態は、有利には、一秒あたりの入力/出力(IOP;input/output per second)、I/OあたりのCPU使用率(相対%)、平均レイテンシおよび99%のQOSの観点で、従来のRSTe技術と比較しておよび様々な構成(例えば、RAID5、RAID6等)についての大幅な改善を示す。
図5を参照すると、電子ストレージシステム50の一実施形態は、分散型RAID構成において、第2のストレージノード52に通信可能に結合される第1のストレージノード51を備えてよい。実線の矢印は、ローカルデータ転送を表してよく、一方で、破線矢印は、ネットワークデータ転送を表す。第1のストレージノード51は、M個のデータSSDを含み、一方で、第2のストレージノード52は、P個のパリティSSDを含む。第1のストレージノード51は、EC計算をオフロードするために、本明細書で説明されるRAIDロジック53を含む。メンバSSDのそれぞれは、EC計算を実行するために、オフロードロジックを含む。有利には、いくつかの実施形態は、分散型ECシステムの場合のネットワーク帯域幅を低下させる。例えば、第1のストレージノード51は、第2のストレージノード52上のパリティSSDからデータを読み込む必要はない。これにより、P回のデータ転送が排除される(例えば2つのパリティドライブを有するシステムにおいて、ネットワークデータ転送の50%を節減する)。例示された実施形態はまた、第1のストレージノード51上のパリティ計算を排除し、RAIDロジック53についての計算の複雑性およびオーバヘッドを有利に低減する。
[ECrmwの例]
いくつかのECシステムにおいて、部分的な更新のペナルティが発生する場合がある。部分的な更新は、記憶されたファイルまたはチャンクが部分的に変更される場合に生じる。これは、1の対応するソースベクトルだけでなく、種々の対応するパリティピースの更新ももたらす。いくつかの従来のECシステムは、例えば、ストレージシステム内の異なるストレージノードから一つのストレージノードへと全ての修正されていないソースベクトルを読み出し、全てのパリティベクトルを再計算し、次に、異なるストレージノードで、古くなったパリティベクトルを新しいものに置き換え得る。全ての関連するストレージノードがデータ更新に関与する。より多くの関与するストレージノードが、より複雑な相互作用と、より高いレイテンシを引き起こすこととなり、ネットワークを通じて転送されるデータについてのより多くのオーバヘッドと、一つのストレージノードにおける高い計算負荷を有することとなる。
いくつかの実施形態は、ストレージデバイス上でECオペレーションを実行するベンダ固有のNVMeコマンドによって、1または複数の先述の問題を克服し得る。中央ストレージサーバ上で、パリティ情報を計算する代わりに、例えば、いくつかの実施形態は、読み出し、GF計算、ライトバックを含むECオペレーションを実行するストレージデバイスについての技術を含む。いくつかの実施形態では、ストレージデバイスは、NVMeドライブまたはNVMe over Fabric(NVMf)ターゲットであってよい。いくつかの実施形態では、ストレージデバイスについてのコマンドは、古くなったパリティデータのLBAと、新たなパリティデータについての新たな予測されるLBAと共に、(例えば、GF計算についての)乗算係数を示し得る。適切に構成されたNVMeストレージデバイスの一実施形態は、デバイス上の共通のXORエンジンによってECの部分的な更新計算を実行するコマンドをデコードし得る。
いくつかの実施形態は、ベンダ固有のNVMeコマンドをNVMeフラッシュドライブのファームウェアへと統合し得る。いくつかの実施形態は、NVMfターゲット関連のソフトウェアへの拡張として構成されてよい。いくつかの実施形態は、スマートネットワークインタフェース(NIC)カードに統合されてよい。ストレージシステムの一実施形態は、ECオフロードコードがストレージシステムのデバイスに展開されるかどうかを判定し、展開されている場合に、ホストサーバおよびストレージデバイスの間の従来の相互オペレーションの代わりに、ECの部分的な更新を完了するコマンドを一度だけ送信するように構成されてよい。有利には、いくつかの実施形態は、スループットおよびレイテンシの両方を改善し得、関連するソフトフェアロジックを簡略化し得る。
図6を参照すると、電子システム60の一実施形態は、ストレージサーバノード63を通じてNVMeサブシステム62に通信可能に結合されるリクエスタ61を備え得る。例えば、ストレージサーバノード63は、NVMeインタフェース、NVMfインタフェース等のバスまたはネットワークインタフェースによりNVMeサブシステム62に通信可能に結合され得る。矢印1において、ストレージサーバノード63は、リクエスタ61(例えば、別のストレージノード、アプリケーション、ソフトウェアエージェント等)からデルタデータを受信する。矢印2において、ストレージサーバノード63上のRAIDロジック65は、NVMeサブシステム62に適切なデータで満たされたECrmwコマンドを発行する。NVMeサブシステム62上のオフロードロジック64(例えば、ファームウェア)は、デルタデータをストレージデバイスへ直接転送する。内部では、オフロードロジックは、古くなったデータを読み出し(矢印A)、入力されたデルタデータによって新たなパリティを計算し(ポイントB)、新たなデータをライトバック(矢印C)するというコマンドのプロセスに従うこととなる。
有利には、ECrmwコマンドにより引き起こされるオペレーションは、NVMeサブシステム62の内部であり、それゆえホストサーバの関与は、ストレージサーバノード63により要求されない。したがって、いくつかの実施形態は、多数のデータ操作および計算でのホストの負担を緩和し、同時に、オペレ-ションのレイテンシを低減する。NVMeサブシステム62がECrmwコマンドおよびデルタデータの両方を受信した後、ストレージサーバノード63は、矢印3で、リクエスタ61に成功した応答を示すように進んでよい。従来の読み込み-修正-書き込みECオペレーションは、サーバノードおよびストレージノードの間での幾つかの段階により構成され、それゆえ、一つのアトミックなオペレーションではない。有利には、ECrmwコマンドの実施形態は、読み込み-修正-書き込みを、ドライブ上の一つのアトミックなオペレーション(例えば、単方向コマンド)として実行し得る。したがって、より高次のレベルの応用では、データ喪失またはデータ不整合を防ぐための複雑なソフトウェアロジックを除去したり、大幅に簡略化したりできる。
具体的な実装に限定されることなく、ECストレージシステムのいくつかの実施形態は、以下の等式に基づいて、EC関連オペレーションを実行し得る。
Pn'=α(Dm' XOR Dm) XOR Pn …[等式1]
図7を参照すると、例示的なECrmwコマンドについてのコマンドフォーマット70の一実施形態は、図示されるように配置される複数の32ビットデータワード(Dwords)を含んでよい。デルタデータは、ストレージデバイスへと転送されることが必要なデータである。乗算係数はまた、デバイスにより認識されるべきである。また、1のLBAを指摘するのみである一般的な読み込み/書き込みコマンドと異なり、ECrmwコマンドでは、最後のパリティデータLBAと、次の新たなパリティデータLBAとの両方がストレージデバイスに指定される。データ長は、ブロックの数により指定されてよく、新たなパリティについての特定のメタデータがあってよい。一般的には、ECrmwコマンドのフォーマットは、一般的なNVMe読み込み/書き込みコマンドと同様であってよく、いくつかの相違点として以下を含む:Dword2および3における予約セグメントが新たなパリティデータについてのLBAを含むように使用されることと、Dword10および11のセグメントが古くなったパリティデータについてのLBAを含むように使用されることと、GF乗算についての係数がバイト2,Dword12に含まれ、Dword4および5のメタポインタセグメントが、新たなパリティについてのメタデータバッファを指すことと、デルタデータポインタが物理ページ領域(PRP)PRP1およびPRP2により参照される(例えば、NVMe仕様1.3に従う)ことと、である。有利には、ECrmwコマンドは、アトミックオペレーションとしてECについての読み込み-修正-書き込みを実行するために、ホストからストレージデバイスへと共有される情報を提供する。
いくつかの実施形態は、ホストおよびストレージデバイスの間の協働を含む。例えば、NANDフラッシュは、読み込み/書き込み/消去インタフェースを提供する。NANDパッケージ内で、記憶媒体は、ダイ、プレーン、チャンク、およびページの階層へと編成される。各プレーン内で、NANDは、チャンクおよびページで編成される。各プレーンは、同じ数のチャンクを含み、各チャンクは同じ数のページを含む。ページは、読み込みおよび書き込みの最小単位でああり、消去の単位は、チャンクである。読み込みオペレーションにはより少ない制限があり、各読み込みオペレーションがランダムに取り扱われることができる。しかし、プログラムオペレーションとしても参照される書き込みオペレーションについては、各チャンクの内部で、プログラムオペレーションが各チャンクの内部で順次付加されなければならないという主要な制限がある。言い換えれば、チャンクは、純粋にシーケンシャルな書き込みアクセスを許容するのみである。NAND特性に適合すべく、ストレージデバイス内部のファイル変換層(FTL)は、従来のブロックI/Oインタフェースを公開することを担うであろう。
データ上書きをする場合、FTLの共通の動作は、新たなデータについての一つの新たなアドレスを見つけ、元のデータの物理アドレスを放棄されたものとしてマーキングし、LBAを新たな物理アドレスに再マッピングすることである。さらに、分散型システムにおける同期の問題でのデータの信頼性を考慮すると、先進的なストレージシステムは、他のパートナノードの何らかの故障に起因するデータロールバックの場合に備え、古くなったパリティデータを保持しようとする。特に、EC M+P(Mはソースデータの数であり、Pはパリティデータの数である)について、これはP個のノード故障の冗長性を与え、データの信頼性を保証する。読み込み-修正-書き込みを行う場合の、任意のP個のノード故障の冗長性を保証するためのものである。各パリティノードにおいて、古くなったパリティを新たなパリティで直接上書きする場合、任意の不成功ノードの書き込みは、これらのノードを一貫性のない状態にさせるであろう。これは、M+P ECに冗長性保証を失わせる。つまり、古くなったパリティデータを新たなパリティデータと共に保持することがECデータ更新のための重要な要件である。
したがって、いくつかの実施形態のデータ保持動作は、ホストソフトウェアの機能要件と、NVMe/NVMfの主媒体であるNANDフラッシュの固有特性との両方を満たす。
本明細書において論じる技術は、様々なコンピューティングシステム(例えば、デスクトップ、ワークステーション、サーバ、ラックシステム等の非モバイルコンピューティングデバイス、例えば、スマートフォン、タブレット、ウルトラモバイルパーソナルコンピュータ(UMPC)、ラップトップコンピュータ、ウルトラブックコンピューティングデバイス、スマートウォッチ、スマートグラス、スマートブレスレット等のモバイルコンピューティングデバイス、および/または、モノのインターネット(IoT)デバイス(例えば、センサ、カメラ等)などのクライアント/エッジデバイスを含む)において提供され得る。
ここで図8を参照すると、コンピューティングデバイス100の一実施形態は、(本明細書において、一般的に「複数のプロセッサ102」または「プロセッサ102」として参照される)1または複数のプロセッサ102-1から102-Nを含み得る。プロセッサ102は、相互接続またはバス104を介して通信し得る。各プロセッサ102は、様々なコンポーネントを含んでよく、それらのうちのいくつかは、明確性のためにプロセッサ102-1を参照してのみ論じられる。したがって、残りのプロセッサ102-2から102-Nのそれぞれは、プロセッサ102-1を参照して論じるものと同じまたは類似したコンポーネントを含み得る。
いくつかの実施形態では、プロセッサ102-1は、1または複数のプロセッサコア106-1から106-M(本明細書において「複数のコア106」として参照されるか、またはより一般的には「コア106」として参照される)、キャッシュ108(様々な実施形態において共有キャッシュまたはプライベートキャッシュであってよい)および/またはルータ110を含み得る。プロセッサコア106は、単一の集積回路(IC)チップ上に実装され得る。さらに、チップは、(キャッシュ108のような)1または複数の共有および/またはプライベートキャッシュ、(バスまたは相互接続112のような)バスまたは相互接続、ロジック170、メモリコントローラ、または他のコンポーネントを含み得る。
いくつかの実施形態では、ルータ110が、プロセッサ102-1および/またはデバイス100の様々なコンポーネントの間で通信するために使用され得る。 さらに、プロセッサ102-1は、1つより多くのルータ110を含み得る。さらに、多数のルータ110が通信することで、プロセッサ102-1の内部または外部の様々なコンポーネント間のデータルーティングを可能にし得る。
キャッシュ108は、コア106など、プロセッサ102-1の1または複数のコンポーネントにより利用されるデータ(例えば、命令を含む)を記憶し得る。例えば、キャッシュ108は、プロセッサ102のコンポーネントがより速くアクセスできるよう、メモリ114に記憶されたデータをローカルにキャッシュし得る。図8に示されるように、メモリ114は、相互接続104を介してプロセッサ102と通信し得る。いくつかの実施形態では、キャッシュ108(共有され得る)は、様々なレベルを有し得る。例えば、キャッシュ108は、中間レベルキャッシュおよび/またはラストレベルキャッシュ(LLC)であってよい。また、コア106のそれぞれは、レベル1(L1)キャッシュ(116-1)(本明細書において一般的に「L1キャッシュ116」として参照される)を含み得る。プロセッサ102-1の様々なコンポーネントが直接、バス(例えば、バス112)および/またはメモリコントローラまたはハブを通じてキャッシュ108と通信し得る。
図8に示されるように、メモリ114は、デバイス100の他のコンポーネントに、メモリコントローラ120を介して、結合され得る。 メモリ114は、揮発性メモリを含んでよく、同じ意味でメインメモリとして参照され得る。たとえメモリコントローラ120が、相互接続104およびメモリ114の間に結合されているように示されているとしても、メモリコントローラ120は、デバイス100の他の箇所に配置されてもよい。 例えば、いくつかの実施形態では、メモリコントローラ120またはその各部分は、プロセッサ102のうちの1つの内に提供されてよい。
デバイス100は、ネットワークインタフェース128を介して他のデバイス/システム/ネットワークと通信し得る(例えば、コンピュータネットワークおよび/またはクラウド129と、有線または無線インタフェースを介して通信する)。例えば、ネットワークインタフェース128は、(例えば、米国電気電子技術者協会(IEEE 802.11インタフェース(IEEE 802.11a/b/g/n/ac等を含む)、セルラーインタフェース、3G、4G、LTE、Bluetooth(登録商標)等を介して)ネットワーク/クラウド129と無線通信するためのアンテナ(不図示)を含み得る。
デバイス100はまた、SSDコントローラロジック125を介して相互接続104に結合されるSSDデバイス130のようなストレージデバイスを含み得る。故に、ロジック125は、デバイス100の様々なコンポーネントによるSSDデバイス130へのアクセスを制御し得る。さらに、たとえロジック125が図8において相互接続104に直接結合されるように示されていても、ロジック125は、(SATA(Serial Advanced Technology Attachment)バス、Peripheral Component Interconnect(PCI)(またはPCIエクスプレス(PCIe)インタフェース)、NVM EXPRESS(NVMe)等のような)ストレージバス/相互接続を介して(例えば、ストレージバスがバスブリッジ、チップセット等のような他のロジックを介して相互接続104に結合する場合に)、デバイス100の1または複数の他のコンポーネントと代替的に通信できる。さらに、ロジック125は、(図9を参照して説明されるように)メモリコントローラロジックに組み込まれてもよく、あるいは、様々な実施形態において同じ集積回路(IC)デバイスに(例えば、SSDデバイス130と同じ回路基板デバイス上に、またはSSDデバイス130と同じ筐体内に)提供されてもよい。
さらに、ロジック125および/またはSSDデバイス130は、(例えば、1または複数のビットまたは信号の形式の)情報を受信するよう1または複数のセンサ(不図示)に結合されることで、1または複数のセンサのステータスまたは当該センサにより検出される値を示し得る。これらのセンサは、温度、動作周波数、動作電圧、消費電力、および/またはコア間通信作用等のような、システム/プラットフォームの電力的/熱的挙動に影響を与える様々なファクタの変動を検知すべく、コア106、相互接続104または112、プロセッサ102の外部のコンポーネント、SSDデバイス130、SSDバス、SATAバス、ロジック125、ロジック160、ロジック170等を含むデバイス100(または本明細書で説明される他のコンピューティングシステム)のコンポーネントに近接して提供されてよい。
図9は、一実施形態によるSSDデバイス130の様々なコンポーネントのブロック図を示す。図9に示されるように、ロジック160は、SSDデバイス130またはコントローラ382の内部等のような様々な場所に配置されてよく、図8に関連して議論されたのと同様の技術を含んでよい。SSDデバイス130は、(1または複数のプロセッサコアまたはプロセッサ384、およびメモリコントローラロジック386を次に含む)コントローラ382、キャッシュ138、RAM388、ファームウェアストレージ390、および(NANDフラッシュ、NORフラッシュ、または他のタイプの不揮発性メモリを含み得る、集合的にメモリ392となる)1または複数のメモリデバイス392-1~392-Nを含む。メモリ392は、1または複数のメモリチャネルまたはバスを介してメモリコントローラロジック386に結合される。また、SSDデバイス130は、(SATA、SAS、PCIe、NVMe等のインタフェースのような)インタフェースを介してロジック125と通信する。図1~図7を参照して議論した、1または複数の特徴/態様/オペレーションは、図9の1または複数のコンポーネントにより実行されてよい。プロセッサ384および/またはコントローラ382は、メモリデバイス392-1~392-Nへと書き込まれる、またはメモリデバイス392-1~392-Nから読み込まれるデータを圧縮/解凍して(さもなければデータの圧縮/解凍を引き起こして)よい。また、図1~図7の1または複数の特徴/態様/オペレーションは、ファームウェア390にプログラミングされてよい。さらに、SSDコントローラロジック125はまた、ロジック160を含んでよい。
図8および図9に示されるように、SSDデバイス130は、ロジック160を含んでよい。これは、SSDデバイス130と同じ筐体内に、および/または、SSDデバイス130のプリント回路基板(PCB)に完全に統合されている場合がある。デバイス100は、SSDデバイス130の外部にさらなるロジック170を含んでよい。有利には、ロジック160および/またはロジック170は、デバイス10装置15、方法20(図3Aから3E)、システム45、システム50、システム60コマンドフォーマット70、および/または本明細書で説明される特徴のいずれかの1または複数の態様を実装する技術を含んでよい。例えば、ロジック170は、本明細書で説明される様々な実施形態のホストサーバ/デバイス/エージェント/RAIDロジック/ECコントローラの(例えば、関連するデータと共に本明細書で説明されるWriteAndXor、SaveEC、ECwrite、およびECrmwコマンド等を含むコマンド/パラメータをSSDデバイス130へ送信する)態様を実装する技術を含んでよい。
例えば、ロジック160は、SSDデバイス130へのローカルアクセスを制御する技術(例えば、SSDデバイス130自体についてのコマンドロジック、制御ロジック、デバイスロジック等)を含んでよい。(例えば、本明細書で説明されるWriteAndXor、SaveEC、ECwrite、およびECrmwと同様のコマンドのような)1または複数のコマンドに応答して、ロジック160は、第1のローカルパリティ計算に基づいて、中間パリティ値を決定し、中間パリティ値をローカルに(例えば、RAM388に)記憶するように構成されてよい。例えば、ロジック160は、1または複数のコマンドに応答して、中間パリティ値および第2のローカルパリティ計算に基づいて、最終パリティ値を決定するようにさらに構成されてよい。
いくつかの実施形態では、WriteAndXorコマンドに応答して、ロジック160は、WriteAndXorコマンドで示されるアドレスから古いデータ値を読み込み、古いデータ値と、WriteAndXorコマンドで示される新たなデータ値とのXOR演算を実行して、中間パリティ値を決定し、WriteAndXorコマンドで示されるインデックスに関連付けられる位置に中間パリティ値をローカルに記憶するように構成されてよい。例えば、WriteAndXorコマンドに応答して、ロジック160は、WriteAndXorコマンドで示されるアドレスに新たなデータを書き込むようにさらに構成されてよい。
いくつかの実施形態では、SaveECコマンドに応答して、ロジック160は、SaveECコマンドで示されるインデックスに関連付けられる位置から中間パリティ値を読み込み、SaveECコマンドで示されるアドレスに中間パリティ値を記憶するように構成されてよい。
いくつかの実施形態では、ECwriteコマンドに応答して、ロジック160は、ECwriteコマンドで示されるアドレスから古いパリティデータ値を読み込み、ECwriteコマンドで示されるインデックスに関連付けられる位置に古いパリティデータ値をローカルに記憶するように構成されてよい。例えば、ECwriteコマンドに応答して、ロジック160は、古いパリティデータ値と、ECwriteコマンドで示される中間パリティ値と、ECwriteコマンドで示される係数値とに基づいて第2のパリティ計算を実行して、最終パリティ値を決定し、ECwriteコマンドで示されるアドレスに最終パリティ値を書き込むようにさらに構成されてよい。
いくつかの実施形態では、ECrmwコマンドに応答して、ロジック160は、ECrmwコマンドで示される第1のLBAから古いデータ値を読み込み、古いデータ値と、ECrmwコマンドで示される新たなデータ値とのXOR演算を実行して、中間パリティ値を決定し、中間パリティ値と、ECrmwコマンドで示される係数値(例えば、等式1に係る古いパリティデータ値とXORが取られる)とに基づいて、乗算演算を実行して、最終パリティ値を決定し、ECrmwコマンドで示される第2のLBAに最終パリティ値を書き込むように構成されてよい。
他の実施形態では、SSDデバイス130は、任意の適切なストレージ/メモリの技術/媒体により置き換えられてよい。いくつかの実施形態では、ロジック160/170は、(例えば、シリコン、サファイア、ガリウムヒ素、プリント回路基板(PCB)等の)1または複数の基板に結合されてよく、1または複数の基板内に配置されるトランジスタチャネル領域を含んでよい。他の実施形態では、SSDデバイス130は、2またはより多くのタイプの記憶媒体を含んでよい。例えば、ストレージの大部分は、NANDであってよく、より速く、より小さい粒度でアクセス可能な(例えば、バイトアドレス可能な)Intel(登録商標)3DXP媒体のような何らかのNVMをさらに含んでもよい。SSDデバイス130は、代替的に、または追加的に、持続的揮発性メモリ(例えば、バッテリまたはキャパシタでバックアップされるDRAMまたはSRAM)を含んでよい。例えば、SSDデバイス130は、エネルギー蓄積用キャパシタを有するPOWER LOSS IMMINENT(PLI)技術を含んでよい。エネルギー蓄積用キャパシタは、進行中の任意のコマンドを完了し、DRAM/SRAM内の任意のデータが不揮発性NAND媒体に引き渡されることを確実にするために、十分なエネルギー(電力)を提供し得る。キャパシタは、持続的揮発性メモリについてのバックアップバッテリとして動作してよい。図8に示されるように、ロジック160および/またはロジック170の特徴または態様は、デバイス100を通じて分散されてよく、さらには/またはデバイス100の様々なコンポーネントとともに併置/統合されてよい。
[追加の留意事項および例]
例1は、1または複数の基板と、1または複数の基板に結合されるロジックと、を備える、電子装置を含む。ロジックは、永続記憶媒体へのローカルアクセスを制御し、1または複数のコマンドに応答して、第1のローカルパリティ計算に基づいて、中間パリティ値を決定し、中間パリティ値をローカルに記憶し、中間パリティ値および第2のローカルパリティ計算に基づいて、最終パリティ値を決定する。
例2は、第1の単方向コマンドに応答して、ロジックが、さらに、第1の単方向コマンドで示される第1のアドレスから古いデータ値を読み込み、古いデータ値と、第1の単方向コマンドで示される新たなデータ値との排他的OR演算を実行して、中間パリティ値を決定し、第1の単方向コマンドで示される第1のインデックスに関連付けられる第1の位置に中間パリティ値をローカルに記憶する、例1に記載の装置を含む。
例3は、第1の単方向コマンドに応答して、ロジックが、さらに、第1のアドレスに新たなデータを書き込む、例2の装置を含む。
例4は、第2の単方向コマンドに応答して、ロジックが、さらに、第2の単方向コマンドで示される第2のインデックスに関連付けられる第2の位置から中間パリティ値を読み込み、第2の単方向コマンドで示される第2のアドレスに中間パリティ値を記憶する、例1から3のいずれかに記載の装置を含む。
例5は、第3の単方向コマンドに応答して、ロジックが、さらに、第3の単方向コマンドで示される第3のアドレスから古いパリティデータ値を読み込み、第3の単方向コマンドで示される第3のインデックスに関連付けられる第3の位置に古いパリティデータ値をローカルに記憶する、例1から4のいずれかに記載の装置を含む。
例6は、第3の単方向コマンドに応答して、ロジックが、さらに、古いパリティデータ値と、第3の単方向コマンドで示される中間パリティ値と、第3の単方向コマンドで示される係数値とに基づいて、第2のパリティ計算を実行して、最終パリティ値を決定し、第3のアドレスに最終パリティ値を書き込む、例5に記載の装置を含む。
例7は、第4の単方向コマンドに応答して、ロジックが、さらに、第4の単方向コマンドで示される第4のアドレスから古いデータ値を読み込み、古いデータ値と、第4の単方向コマンドで示される新たなデータ値との排他的OR演算を実行して、中間パリティ値を決定し、中間パリティ値と、第4の単方向コマンドで示される係数値とに基づいて、乗算演算を実行して、最終パリティ値を決定し、第4の単方向コマンドで示される第5のアドレスに最終パリティ値を書き込む、例1から6のいずれかに記載の装置を含む。
例8は、永続記憶媒体がソリッドステートドライブを含む、例1から7のいずれかに記載の装置を含む。
例9は、永続記憶媒体と、永続記憶媒体に通信可能に結合されるコントローラと、を備える電子ストレージシステムを含む。コントローラはロジックを含み、ロジックは、永続記憶媒体へのローカルアクセスを制御し、1または複数のコマンドに応答して、第1のローカルパリティ計算に基づいて、中間パリティ値を決定し、中間パリティ値をローカルに記憶し、中間パリティ値および第2のローカルパリティ計算に基づいて、最終パリティ値を決定する。
例10は、第1の単方向コマンドに応答して、ロジックが、さらに、第1の単方向コマンドで示される第1のアドレスから古いデータ値を読み込み、古いデータ値と、第1の単方向コマンドで示される新たなデータ値との排他的OR演算を実行して、中間パリティ値を決定し、第1の単方向コマンドで示される第1のインデックスに関連付けられる第1の位置に中間パリティ値をローカルに記憶する、例9に記載のシステムを含む。
例11は、第1の単方向コマンドに応答して、ロジックが、さらに、第1のアドレスに新たなデータを書き込む、例10に記載のシステムを含む。
例12は、第2の単方向コマンドに応答して、ロジックが、さらに、第2の単方向コマンドで示される第2のインデックスに関連付けされる第2の位置から中間パリティ値を読み込み、第2の単方向コマンドで示される第2のアドレスに中間パリティ値を記憶する、例9から11のいずれかに記載のシステムを含む。
例13は、第3の単方向コマンドに応答して、ロジックが、さらに、第3の単方向コマンドで示される第3のアドレスから古いパリティデータ値を読み込み、第3の単方向コマンドで示される第3のインデックスに関連付けられる第3の位置に古いパリティデータ値をローカルに記憶する、例9から12に記載のシステムを含む。
例14は、第3の単方向コマンドに応答して、ロジックが、さらに、古いパリティデータ値と、第3の単方向コマンドで示される中間パリティ値と、第3の単方向コマンドで示される係数値とに基づいて、第2のパリティ計算を実行して、最終パリティ値を決定し、第3のアドレスに最終パリティ値を書き込む、例13に記載のシステムを含む。
例15は、第4の単方向コマンドに応答して、ロジックが、さらに、第4の単方向コマンドで示される第4のアドレスから古いデータ値を読み込み、古いデータ値と、第4の単方向コマンドで示される新たなデータ値との排他的OR演算を実行して、中間パリティ値を決定し、中間パリティ値と、第4の単方向コマンドで示される係数値とに基づいて、乗算演算を実行して、最終パリティ値を決定し、第4の単方向コマンドで示される第5のアドレスに最終パリティ値を書き込む、例9から14のいずれかに記載のシステムを含む。
例16は、永続記憶媒体が、ソリッドステートドライブを含む、例9から15のいずれかに記載のシステムを含む。
例17は、永続記憶媒体へのローカルアクセスを制御する段階と、1または複数のコマンドに応答して、第1のローカルパリティ計算に基づいて、中間パリティ値を決定する段階と、中間パリティ値をローカルに記憶する段階と、中間パリティ値および第2のローカルパリティ計算に基づいて、最終パリティ値を決定する段階とを備える、ストレージを制御する方法を含む。
例18は、第1の単方向コマンドに応答して、第1の単方向コマンドで示される第1のアドレスから古いデータ値を読み込む段階と、古いデータ値と、第1の単方向コマンドで示される新たなデータ値との排他的OR演算を実行して、中間パリティ値を決定する段階と、第1の単方向コマンドで示される第1のインデックスに関連付けられる第1の位置に中間パリティ値をローカルに記憶する段階と、をさらに備える、例17に記載の方法を含む。
例19は、第1の単方向コマンドに応答して、第1のアドレスに新たなデータを書き込む段階をさらに備える、例18に記載の方法を含む。
例20は、第2の単方向コマンドに応答して、第2の単方向コマンドで示される第2のインデックスに関連付けられる第2の位置から中間パリティ値を読み込む段階と、第2の単方向コマンドで示される第2のアドレスに中間パリティ値を記憶する段階と、をさらに備える、例17から19のいずれかに記載の方法を含む。
例21は、第3の単方向コマンドに応答して、第3の単方向コマンドで示される第3のアドレスから古いパリティデータ値を読み込む段階と、第3の単方向コマンドで示される第3のインデックスに関連付けられる第3の位置に古いパリティデータ値をローカルに記憶する段階と、をさらに備える、例20に記載の方法を含む。
例22は、第3の単方向コマンドに応答して、古いパリティデータ値と、第3の単方向コマンドで示される中間パリティ値と、第3の単方向コマンドで示される係数値と、に基づいて、第2のパリティ計算を実行して、最終パリティ値を決定する段階と、第3のアドレスに最終パリティ値を書き込む段階と、をさらに備える、例17から21のいずれに記載の方法を含む。
例23は、第4の単方向コマンドに応答して、第4の単方向コマンドで示される第4のアドレスから古いデータ値を読み込む段階と、古いデータ値と、第4の単方向コマンドで示される新たなデータ値との排他的OR演算を実行して、中間パリティ値を決定する段階と、中間パリティ値と、第4の単方向コマンドで示される係数値とに基づいて、乗算演算を実行して、最終パリティ値を決定する段階と、第4の単方向コマンドで示される第5のアドレスに最終パリティ値を書き込む段階と、をさらに備える、例17から22のいずれかに記載の方法を含む。
例24は、永続記憶媒体がソリッドステートドライブを含む、例17から23のいずれかに記載の方法を含む。
例25は、コンピューティングデバイス上で実行されることに応答して、コンピューティングデバイスに、永続記憶媒体へのローカルアクセスを制御させ、1または複数のコマンドに応答して、第1のローカルパリティ計算に基づいて、中間パリティ値を決定させ、中間パリティ値をローカルに記憶させ、中間パリティ値および第2のローカルパリティ計算に基づいて、最終パリティ値を決定させる、複数の命令を備える、少なくとも1つの非一時的な1つの機械により可読な媒体を含む。
例26は、コンピューティングデバイス上で実行されることに応答して、かつ第1の単方向コマンドに応答して、コンピューティングデバイスに、第1の単方向コマンドで示される第1のアドレスから古いデータ値を読み込ませ、古いデータ値と、第1の単方向コマンドで示される新たなデータ値との排他的OR演算を実行して、中間パリティ値を決定させ、第1の単方向コマンドで示される第1のインデックスに関連付けされる第1の位置に中間パリティ値をローカルに記憶させる、複数のさらなる命令を備える、例25に記載の少なくとも1つの非一時的な1つの機械により可読な媒体を含む。
例27は、コンピューティングデバイス上で実行されることに応答して、かつ第1の単方向コマンドに応答して、コンピューティングデバイスに、第1のアドレスに新たなデータを書き込ませる、複数のさらなる命令を備える、例26に記載の少なくとも1つの非一時的な1つの機械により可読な媒体を含む。
例28は、コンピューティングデバイス上で実行されることに応答して、かつ第2の単方向コマンドに応答して、コンピューティングデバイスに、第2の単方向コマンドで示される第2のインデックスに関連付けられる第2の位置から中間パリティ値を読み込ませ、第2の単方向コマンドで示される第2のアドレスに中間パリティ値を記憶させる、複数のさらなる命令を備える、例25から27のいずれかに記載の少なくとも1つの非一時的な1つの機械により可読な媒体を含む。
例29は、コンピューティングデバイス上で実行されることに応答して、かつ第3の単方向コマンドに応答して、コンピューティングデバイスに、第3の単方向コマンドで示される第3のアドレスから古いパリティデータ値を読み込ませ、第3の単方向コマンドで示される第3のインデックスに関連付けられる第3の位置に古いパリティデータ値をローカルに記憶させる、複数のさらなる命令を備える、例25から28のいずれかに記載の少なくとも1つの非一時的な1つの機械により可読な媒体を含む。
例30は、コンピューティングデバイスで実行されることに応答して、かつ第3の単方向コマンドに応答して、コンピューティングデバイスに、古いパリティデータ値と、第3の単方向コマンドで示される中間パリティ値と、第3の単方向コマンドで示される係数値とに基づいて、第2のパリティ計算を実行させて、最終パリティ値を決定させ、第3のアドレスに最終パリティ値を書き込ませる、複数のさらなる命令を備える、例29に記載の少なくとも1つの非一時的な1つの機械により可読な媒体を含む。
例31はコンピューティングデバイス上で実行されることに応答して、かつ第4の単方向コマンドに応答して、コンピューティングデバイスに、第4の単方向コマンドで示される第4のアドレスから古いデータ値を読み込ませ、古いデータ値と、第4の単方向コマンドで示される新たなデータ値との排他的OR演算を実行させて、中間パリティ値を決定させ、中間パリティ値と、第4の単方向コマンドで示される係数値とに基づいて、乗算演算を実行させて、最終パリティ値を決定させ、第4の単方向コマンドで示される第5のアドレスに最終パリティ値を書き込ませる、複数のさらなる命令を備える、例25から30のいずれかに記載の少なくとも1つの非一時的な1つの機械により可読な媒体を含む。
例32は、永続記憶媒体がソリッドステートドライブを含む、例25から31のいずれかに記載の少なくとも1つの非一時的な1つの機械により可読な媒体を含む。
例33は、永続記憶媒体へのローカルアクセスを制御する手段と、1または複数のコマンドに応答して、第1のローカルパリティ計算に基づいて、中間パリティ値を決定する手段と、中間パリティ値をローカルに記憶する手段と、中間パリティ値および第2のローカルパリティ計算に基づいて、最終パリティ値を決定する手段と、を備える、ストレージデバイスコントローラ装置を含む。
例34は、第1の単方向コマンドに応答して、第1の単方向コマンドで示される第1のアドレスから古いデータ値を読み込む手段と、古いデータ値と、第1の単方向コマンドで示される新たなデータ値との排他的OR演算を実行して、中間パリティ値を決定する手段と、第1の単方向コマンドで示される第1のインデックスに関連付けられる第1の位置に中間パリティ値をローカルに記憶する手段と、をさらに備える、例33に記載の装置を含む。
例35は、第1の単方向コマンドに応答して、第1のアドレスに新たなデータを書き込む手段をさらに備える、例34に記載の装置を含む。
例36は、第2の単方向コマンドに応答して、第2の単方向コマンドで示される第2のインデックスに関連付けられる第2の位置から中間パリティ値を読み込む手段と、第2の単方向コマンドで示される第2のアドレスに中間パリティ値を記憶する手段と、をさらに備える、例33から35のいずれかに記載の装置を含む。
例37は、第3の単方向コマンドに応答して、第3の単方向コマンドで示される第3のアドレスから古いパリティデータ値を読み込む手段と、第3の単方向コマンドで示される第3のインデックスに関連付けられる第3の位置に古いパリティデータ値をローカルに記憶する手段と、をさらに備える、例33から36のいずれかに記載の装置を含む。
例38は、第3の単方向コマンドに応答して、古いパリティデータ値と、第3の単方向コマンドで示される中間パリティ値と、第3の単方向コマンドで示される係数値とに基づいて、第2のパリティ計算を実行して、最終パリティ値を決定する手段と、第3のアドレスに最終パリティ値を書き込む手段とをさらに備える、例37に記載の装置を含む。
例39は、第4の単方向コマンドに応答して、第4の単方向コマンドで示される第4のアドレスから古いデータ値を読み込む手段と、古いデータ値と、第4の単方向コマンドで示される新たなデータ値との排他的OR演算を実行して、中間パリティ値を決定する手段と、中間パリティ値と、第4の単方向コマンドで示される係数値とに基づいて、乗算演算を実行して、最終パリティ値を決定する手段と、第4の単方向コマンドで示される第5のアドレスに最終パリティ値を書き込む手段と、をさらに備える、例33から38に記載の装置を含む。
例40は、永続記憶媒体がソリッドステートドライブを含む、例33から39に記載の装置を含む。
「結合される」という用語は、本明細書では、対象の構成要素間の直接的または間接的な任意のタイプの関係を指すために使用することができ、電気的、機械的、流体的、光学的、電磁的、電気機械的、または他の接続に適用することができる。加えて、「第1の」、「第2の」等の用語は、説明を容易にするためにのみ本明細書で使用され得、別段示されない限り、特定の時間的または経時的な意味を保持しない。
本出願および特許請求の範囲で使用されるように、用語「のうち1または複数」によって結合された項目のリストは、列挙された用語の任意の組み合わせを意味し得る。例えば、「A、BおよびCのうちの1または複数」という文言および「A、BまたはCのうちの1または複数」という文言はいずれも、A;B;C;AおよびB;AおよびC;BおよびC;またはA、BおよびCを意味してもよい。本明細書において説明するシステムの様々なコンポーネントは、ソフトウェア、ファームウェアおよび/またはハードウェアおよび/またはそれらの任意の組み合わせに実装されてよい。例えば、本明細書において論じるシステムまたはデバイスの様々なコンポーネントは、少なくとも部分的に、例えばスマートフォンなど、コンピューティングシステム内で見られ得るものなどのコンピューティングSoCのハードウェアにより提供され得る。当業者であれば、本明細書において説明するシステムが、対応する図に示されていない追加のコンポーネントを含み得ることを認識し得る。例えば、本明細書において論じるシステムは、例えば明確性のために図示されていないビットストリームマルチプレクサモジュールまたはデマルチプレクサモジュールおよびこれと同様のもののような追加のコンポーネントを含み得る。
本明細書において論じる例示的なプロセスの実装が、図示された順序で示される全てのオペレーションの実行を含み得るが、本開示はこの点で限定されず、様々な例において、本明細書における例示的なプロセスの実装は、示されるオペレーションのサブセット、図示されたものとは異なる順序で実行されるオペレーションまたは追加のオペレーションのみを含み得る。
加えて、本明細書において論じるオペレーションのうちのいずれか1つまたは複数は、1または複数のコンピュータプログラム製品により提供される命令に応答して行われ得る。そのようなプログラム製品は、例えばプロセッサにより実行された場合に本明細書において説明する機能を提供し得る命令を提供する信号担持媒体を含み得る。コンピュータプログラム製品は、任意の形態の1または複数の機械可読媒体で提供され得る。したがって、例えば、1または複数のグラフィック処理ユニットまたはプロセッサコアを含むプロセッサは、1または複数の機械可読媒体によりプログラムコードおよび/または命令または命令セットがプロセッサに伝達されたことに応答して、本明細書における例示的なプロセスのブロックのうちの1または複数を行い得る。一般的に、機械可読媒体は、本明細書で説明されるデバイスおよび/またはシステムのいずれかに、本明細書で説明されるオペレーションの少なくとも一部を実装させ得る、および/または、本明細書で説明されるデバイス、システム、または任意のモジュールまたはコンポーネントの任意の部分を実装させ得る、プログラムコードおよび/または命令もしくは命令セットの形式で、ソフトウェアを搬送し得る。
本明細書において説明する任意の実装において使用されるように、「モジュール」という用語は、ソフトウェアロジック、ファームウェアロジック、ハードウェアロジックおよび/または本明細書において説明する機能を提供するように構成された回路の任意の組み合わせを指す。ソフトウェアは、ソフトウェアパッケージ、コードおよび/または命令セットまたは命令として具現化されてよく、本明細書において説明する任意の実装において使用される「ハードウェア」は、例えば、ハードワイヤード回路、プログラマブル回路、ステートマシン回路、固定機能回路、実行ユニット回路および/または、プログラマブル回路により実行される命令を記憶したファームウェアを単独で、または任意の組み合わせで含み得る。これらのモジュールは、例えば、集積回路(IC)システムオンチップ(SoC)等のより大きいシステムの一部を形成する回路として、集合的にまたは個別に具現化され得る。
様々な実施形態は、ハードウェア要素、ソフトウェア要素、またはこれら両方の組み合わせを使用して実装されてよい。ハードウェア要素の例は、プロセッサ、マイクロプロセッサ、回路、回路素子(例えば、トランジスタ、抵抗、キャパシタ、およびインダクタ等)、集積回路、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップおよびチップセット等を含み得る。ソフトウェアの例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、方法、手順、ソフトウェアインタフェース、アプリケーションプログラムインタフェース(API)、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、単語、値、シンボル、またはそれらの任意の組み合わせを含み得る。ある実施形態がハードウェア要素および/またはソフトウェア要素を使用して実装されるか否かの判断は、所望の計算レート、電力レベル、耐熱性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバス速度および他の設計上または性能上の制約などの任意の数の要素によって異なり得る。
少なくとも1つの実施形態の1または複数の態様は、機械可読媒体に記憶された代表的な命令によって実装されてよく、この機械可読媒体は、機械によって読み込まれたときに、本明細書に説明される技術を実行するためのロジックを機械に作製させる様々なロジックをプロセッサ内で表すものである。IPコアとして知られるそのような表現は、有形の機械可読媒体に記憶されてよく、ロジックまたはプロセッサを実際に製造する製造機械に搭載するために様々な顧客または製造施設に供給されてよい。
本明細書に記載される特定の特徴を、様々な実装を参照して説明してきたが、この説明は、限定的な意味で解釈されるようには意図されていない。故に、本開示が関連する当業者には明らかである、本明細書において説明した実装および他の実装の様々な修正は、本開示の趣旨および範囲内にあるものとみなされる。
これらの実施形態は、そのように説明した実施形態に限定されないが、添付の特許請求の範囲から逸脱することなく修正および変更のうえで実施され得ることが認識されるであろう。例えば、上記実施形態は、特徴の具体的な組み合わせを含み得る。しかしながら、上記実施形態は、この点で限定されず、様々な実装において、上記実施形態は、そのような特徴のサブセットのみの実行、そのような特徴の異なる順序での実行、そのような特徴の異なる組み合わせでの実行および/または明示的に列挙されたそれらの特徴に対する追加の特徴の実行を含み得る。したがって、実施形態の範囲は、添付の特許請求の範囲を参照して、そのような請求項が権利を与えられるものの均等物の全範囲に沿って決定されるべきである。
これらの実施形態は、そのように説明した実施形態に限定されないが、添付の特許請求の範囲から逸脱することなく修正および変更のうえで実施され得ることが認識されるであろう。例えば、上記実施形態は、特徴の具体的な組み合わせを含み得る。しかしながら、上記実施形態は、この点で限定されず、様々な実装において、上記実施形態は、そのような特徴のサブセットのみの実行、そのような特徴の異なる順序での実行、そのような特徴の異なる組み合わせでの実行および/または明示的に列挙されたそれらの特徴に対する追加の特徴の実行を含み得る。したがって、実施形態の範囲は、添付の特許請求の範囲を参照して、そのような請求項が権利を与えられるものの均等物の全範囲に沿って決定されるべきである。
[項目1]
1または複数の基板と、
上記1または複数の基板に結合されたロジックであって、永続記憶媒体へのローカルアクセスを制御し、1または複数のコマンドに応答して、
第1のローカルパリティ計算に基づいて、中間パリティ値を決定し
上記中間パリティ値をローカルに記憶し
上記中間パリティ値および第2のローカルパリティ計算に基づいて、最終パリティ値を決定する、ロジックと、
を備える電子装置。
[項目2]
第1の単方向コマンドに応答して、上記ロジックはさらに、
上記第1の単方向コマンドで示される第1のアドレスから古いデータ値を読み込み、
上記古いデータ値と、上記第1の単方向コマンドで示される新たなデータ値との排他的OR演算を実行して、上記中間パリティ値を決定し、
上記第1の単方向コマンドで示される第1のインデックスに関連付けされる第1の位置に、上記中間パリティ値をローカルに記憶する、
項目1に記載の電子装置。
[項目3]
上記第1の単方向コマンドに応答して、上記ロジックはさらに、
上記第1のアドレスに上記新たなデータを書き込む、
項目2に記載の電子装置。
[項目4]
第2の単方向コマンドに応答して、上記ロジックはさらに、
上記第2の単方向コマンドで示される第2のインデックスに関連付けられる第2の位置から中間パリティ値を読み込み、
上記第2の単方向コマンドで示される第2のアドレスに上記中間パリティ値を記憶する、
項目1から3のいずれか一項に記載の電子装置。
[項目5]
上記永続記憶媒体は、ソリッドステートドライブを含む、
項目4に記載の電子装置。
[項目6]
永続記憶媒体と、
上記永続記憶媒体に通信可能に結合されたコントローラであって、上記コントローラは、上記永続記憶媒体へのローカルアクセスを制御し、1または複数のコマンドに応答して、
第1のローカルパリティ計算に基づいて、中間パリティ値を決定し、
上記中間パリティ値をローカルに記憶し、
上記中間パリティ値および第2のローカルパリティ計算に基づいて、最終パリティ値を決定する、ロジックを含む、コントローラと、
を備える、電子ストレージシステム。
[項目7]
単方向コマンドに応答して、上記ロジックはさらに、
上記単方向コマンドで示されるアドレスから古いパリティデータ値を読み込み、
上記単方向コマンドで示されるインデックスに関連付けされる位置に古いパリティデータ値をローカルに記憶する、
項目6に記載の電子ストレージシステム。
[項目8]
上記単方向コマンドに応答して、上記ロジックはさらに、
上記古いパリティデータ値と、上記単方向コマンドで示される中間パリティ値と、上記単方向コマンドで示される係数値とに基づいて、上記第2のローカルパリティ計算を実行し、上記最終パリティ値を決定し、
第3のアドレスに上記最終パリティ値を書き込む、
項目7に記載の電子ストレージシステム。
[項目9]
単方向コマンドに応答して、上記ロジックはさらに、
上記単方向コマンドで示される第1のアドレスから古いデータ値を読み込み、
上記古いデータ値と、上記単方向コマンドで示される新たなデータ値との排他的OR演算を実行して、上記中間パリティ値を決定し、
上記中間パリティ値と、上記単方向コマンドで示される係数値とに基づいて、乗算演算を実行し、上記最終パリティ値を決定し、
上記単方向コマンドで示される第2のアドレスに上記最終パリティ値を書き込む、
項目6に記載の電子ストレージシステム。
[項目10]
上記永続記憶媒体は、ソリッドステートドライブを含む、
項目6から9のいずれか一項に記載の電子ストレージシステム。
[項目11]
永続記憶媒体へのローカルアクセスを制御する段階と、1または複数のコマンドに応答して、
第1のローカルパリティ計算に基づいて、中間パリティ値を決定する段階と、
上記中間パリティ値をローカルに記憶する段階と、
上記中間パリティ値および第2のローカルパリティ計算に基づいて、最終パリティ値を決定する段階と、
を備える、ストレージを制御する方法。
[項目12]
第1の単方向コマンドに応答して、
上記第1の単方向コマンドで示される第1のアドレスから古いデータ値を読み込む段階と、
上記古いデータ値と、上記第1の単方向コマンドで示される新たなデータ値との排他的OR演算を実行して、上記中間パリティ値を決定する段階と、
上記第1の単方向コマンドで示される第1のインデックスに関連付けされる第1の位置に上記中間パリティ値をローカルに記憶する段階と、
をさらに備える、項目11に記載の方法。
[項目13]
上記第1の単方向コマンドに応答して、上記第1のアドレスに上記新たなデータを書き込む段階をさらに備える、項目12に記載の方法。
[項目14]
第2の単方向コマンドに応答して、
上記第2の単方向コマンドで示される第2のアドレスから古いパリティデータ値を読み込む段階と、
上記第2の単方向コマンドで示される第2のインデックスに関連付けられる第2の位置に上記古いパリティデータ値をローカルに記憶する段階と、
をさらに備える、項目11から13のいずれか一項に記載の方法。
[項目15]
上記第2の単方向コマンドに応答して、
上記古いパリティデータ値と、上記第2の単方向コマンドで示される中間パリティ値と、上記第2の単方向コマンドで示される係数値とに基づいて、上記第2のローカルパリティ計算を実行して、上記最終パリティ値を決定する段階と、
上記第2のアドレスに上記最終パリティ値を書き込む段階と、
をさらに備える、項目14に記載の方法。
[項目16]
コンピューティングデバイス上で実行されることに応答して、上記コンピューティングデバイスに永続記憶媒体へのローカルアクセスを制御させ、1または複数のコマンドに応答して、
第1のローカルパリティ計算に基づいて中間パリティ値を決定させ、
上記中間パリティ値をローカルに記憶させ、
上記中間パリティ値および第2のローカルパリティ計算に基づいて最終パリティ値を決定させる、
複数の命令を備える、コンピュータプログラム。
[項目17]
上記コンピューティングデバイス上で実行されることに応答して、かつ単方向コマンドに応答して、上記コンピューティングデバイスに、
上記単方向コマンドで示されるインデックスに関連付けされる位置から中間パリティ値を読み込ませ、
上記単方向コマンドで示されるアドレスに上記中間パリティ値を記憶させる、
複数のさらなる命令を備える、項目16に記載のコンピュータプログラム。
[項目18]
上記コンピューティングデバイス上で実行されることに応答して、かつ単方向コマンドに応答して、上記コンピューティングデバイスに
上記単方向コマンドで示される第1のアドレスから古いデータ値を読み込ませ、
上記古いデータ値と、上記単方向コマンドで示される新たなデータ値との排他的OR演算を実行させて、上記中間パリティ値を決定させ、
上記中間パリティ値と、上記単方向コマンドで示される係数値とに基づいて、乗算演算を実行させて、上記最終パリティ値を決定させ、
上記単方向コマンドで示される第2のアドレスに上記最終パリティ値を書き込ませる、
複数のさらなる命令を備える、項目16に記載のコンピュータプログラム。
[項目19]
上記永続記憶媒体は、ソリッドステートドライブを備える、
項目16から18のいずれか一項に記載のコンピュータプログラム。
[項目20]
永続記憶媒体へのローカルアクセスを制御する手段と、1または複数のコマンドに応答して、
第1のローカルパリティ計算に基づいて中間パリティ値を決定する手段と、
上記中間パリティ値をローカルに記憶する手段と、
上記中間パリティ値および第2のローカルパリティ計算に基づいて最終パリティ値を決定する手段と、
を備える、ストレージデバイスコントローラ装置。
[項目21]
単方向コマンドに応答して、
上記単方向コマンドで示されるアドレスから古いデータ値を読み込む手段と、
上記古いデータ値と、上記単方向コマンドで示される新たなデータ値との排他的OR演算を実行して、上記中間パリティ値を決定する手段と、
上記単方向コマンドで示されるインデックスに関連付けされる位置に上記中間パリティ値をローカルに記憶する手段と、
をさらに備える、項目20に記載のストレージデバイスコントローラ装置。
[項目22]
単方向コマンドに応答して、
上記単方向コマンドで示されるインデックスに関連付けされる位置から中間パリティ値を読み込む手段と、
上記単方向コマンドで示されるアドレスに中間パリティ値を記憶する手段と、
をさらに備える、項目20に記載のストレージデバイスコントローラ装置。
[項目23]
単方向コマンドに応答して、
上記単方向コマンドで示されるアドレスから古いパリティデータ値を読み込む手段と、
上記単方向コマンドで示されるインデックスに関連付けされる位置に上記古いパリティデータ値をローカルに記憶する手段と、
をさらに備える、項目20に記載のストレージデバイスコントローラ装置。
[項目24]
上記単方向コマンドに応答して、
上記古いパリティデータ値と、上記単方向コマンドで示される中間パリティ値と、上記単方向コマンドで示される係数値とに基づいて、上記第2のローカルパリティ計算を実行して、上記最終パリティ値を決定する手段と、
上記単方向コマンドで示される上記アドレスに上記最終パリティ値を書き込む手段と、
をさらに備える、項目23に記載のストレージデバイスコントローラ装置。
[項目25]
単方向コマンドに応答して、
上記単方向コマンドで示される第1のアドレスから古いデータ値を読み込む手段と、
上記古いデータ値と、上記単方向コマンドで示される新たなデータ値との排他的OR演算を実行して、中間パリティ値を決定する手段と、
上記中間パリティ値と、上記単方向コマンドで示される係数値とに基づいて、乗算演算を実行して、上記最終パリティ値を決定する手段と、
上記単方向コマンドで示される第2のアドレスに上記最終パリティ値を書き込む手段と、
をさらに備える、項目20に記載のストレージデバイスコントローラ装置。

Claims (25)

  1. 1または複数の基板と、
    前記1または複数の基板に結合されたロジックであって、永続記憶媒体へのローカルアクセスを制御し、1または複数のコマンドに応答して、
    第1のローカルパリティ計算に基づいて、中間パリティ値を決定し
    前記中間パリティ値をローカルに記憶し
    前記中間パリティ値および第2のローカルパリティ計算に基づいて、最終パリティ値を決定する、ロジックと、
    を備える電子装置。
  2. 第1の単方向コマンドに応答して、前記ロジックはさらに、
    前記第1の単方向コマンドで示される第1のアドレスから古いデータ値を読み込み、
    前記古いデータ値と、前記第1の単方向コマンドで示される新たなデータ値との排他的OR演算を実行して、前記中間パリティ値を決定し、
    前記第1の単方向コマンドで示される第1のインデックスに関連付けされる第1の位置に、前記中間パリティ値をローカルに記憶する、
    請求項1に記載の電子装置。
  3. 前記第1の単方向コマンドに応答して、前記ロジックはさらに、
    前記第1のアドレスに前記新たなデータを書き込む、
    請求項2に記載の電子装置。
  4. 第2の単方向コマンドに応答して、前記ロジックはさらに、
    前記第2の単方向コマンドで示される第2のインデックスに関連付けられる第2の位置から中間パリティ値を読み込み、
    前記第2の単方向コマンドで示される第2のアドレスに前記中間パリティ値を記憶する、
    請求項1から3のいずれか一項に記載の電子装置。
  5. 前記永続記憶媒体は、ソリッドステートドライブを含む、
    請求項4に記載の電子装置。
  6. 永続記憶媒体と、
    前記永続記憶媒体に通信可能に結合されたコントローラであって、前記コントローラは、前記永続記憶媒体へのローカルアクセスを制御し、1または複数のコマンドに応答して、
    第1のローカルパリティ計算に基づいて、中間パリティ値を決定し、
    前記中間パリティ値をローカルに記憶し、
    前記中間パリティ値および第2のローカルパリティ計算に基づいて、最終パリティ値を決定する、ロジックを含む、コントローラと、
    を備える、電子ストレージシステム。
  7. 単方向コマンドに応答して、前記ロジックはさらに、
    前記単方向コマンドで示されるアドレスから古いパリティデータ値を読み込み、
    前記単方向コマンドで示されるインデックスに関連付けされる位置に古いパリティデータ値をローカルに記憶する、
    請求項6に記載の電子ストレージシステム。
  8. 前記単方向コマンドに応答して、前記ロジックはさらに、
    前記古いパリティデータ値と、前記単方向コマンドで示される中間パリティ値と、前記単方向コマンドで示される係数値とに基づいて、前記第2のローカルパリティ計算を実行し、前記最終パリティ値を決定し、
    第3のアドレスに前記最終パリティ値を書き込む、
    請求項7に記載の電子ストレージシステム。
  9. 単方向コマンドに応答して、前記ロジックはさらに、
    前記単方向コマンドで示される第1のアドレスから古いデータ値を読み込み、
    前記古いデータ値と、前記単方向コマンドで示される新たなデータ値との排他的OR演算を実行して、前記中間パリティ値を決定し、
    前記中間パリティ値と、前記単方向コマンドで示される係数値とに基づいて、乗算演算を実行し、前記最終パリティ値を決定し、
    前記単方向コマンドで示される第2のアドレスに前記最終パリティ値を書き込む、
    請求項6に記載の電子ストレージシステム。
  10. 前記永続記憶媒体は、ソリッドステートドライブを含む、
    請求項6から9のいずれか一項に記載の電子ストレージシステム。
  11. 永続記憶媒体へのローカルアクセスを制御する段階と、1または複数のコマンドに応答して、
    第1のローカルパリティ計算に基づいて、中間パリティ値を決定する段階と、
    前記中間パリティ値をローカルに記憶する段階と、
    前記中間パリティ値および第2のローカルパリティ計算に基づいて、最終パリティ値を決定する段階と、
    を備える、ストレージを制御する方法。
  12. 第1の単方向コマンドに応答して、
    前記第1の単方向コマンドで示される第1のアドレスから古いデータ値を読み込む段階と、
    前記古いデータ値と、前記第1の単方向コマンドで示される新たなデータ値との排他的OR演算を実行して、前記中間パリティ値を決定する段階と、
    前記第1の単方向コマンドで示される第1のインデックスに関連付けされる第1の位置に前記中間パリティ値をローカルに記憶する段階と、
    をさらに備える、請求項11に記載の方法。
  13. 前記第1の単方向コマンドに応答して、前記第1のアドレスに前記新たなデータを書き込む段階をさらに備える、請求項12に記載の方法。
  14. 第2の単方向コマンドに応答して、
    前記第2の単方向コマンドで示される第2のアドレスから古いパリティデータ値を読み込む段階と、
    前記第2の単方向コマンドで示される第2のインデックスに関連付けられる第2の位置に前記古いパリティデータ値をローカルに記憶する段階と、
    をさらに備える、請求項11から13のいずれか一項に記載の方法。
  15. 前記第2の単方向コマンドに応答して、
    前記古いパリティデータ値と、前記第2の単方向コマンドで示される中間パリティ値と、前記第2の単方向コマンドで示される係数値とに基づいて、前記第2のローカルパリティ計算を実行して、前記最終パリティ値を決定する段階と、
    前記第2のアドレスに前記最終パリティ値を書き込む段階と、
    をさらに備える、請求項14に記載の方法。
  16. コンピューティングデバイス上で実行されることに応答して、前記コンピューティングデバイスに永続記憶媒体へのローカルアクセスを制御させ、1または複数のコマンドに応答して、
    第1のローカルパリティ計算に基づいて中間パリティ値を決定させ、
    前記中間パリティ値をローカルに記憶させ、
    前記中間パリティ値および第2のローカルパリティ計算に基づいて最終パリティ値を決定させる、
    複数の命令を備える、コンピュータプログラム。
  17. 前記コンピューティングデバイス上で実行されることに応答して、かつ単方向コマンドに応答して、前記コンピューティングデバイスに、
    前記単方向コマンドで示されるインデックスに関連付けされる位置から中間パリティ値を読み込ませ、
    前記単方向コマンドで示されるアドレスに前記中間パリティ値を記憶させる、
    複数のさらなる命令を備える、請求項16に記載のコンピュータプログラム。
  18. 前記コンピューティングデバイス上で実行されることに応答して、かつ単方向コマンドに応答して、前記コンピューティングデバイスに
    前記単方向コマンドで示される第1のアドレスから古いデータ値を読み込ませ、
    前記古いデータ値と、前記単方向コマンドで示される新たなデータ値との排他的OR演算を実行させて、前記中間パリティ値を決定させ、
    前記中間パリティ値と、前記単方向コマンドで示される係数値とに基づいて、乗算演算を実行させて、前記最終パリティ値を決定させ、
    前記単方向コマンドで示される第2のアドレスに前記最終パリティ値を書き込ませる、
    複数のさらなる命令を備える、請求項16に記載のコンピュータプログラム。
  19. 前記永続記憶媒体は、ソリッドステートドライブを備える、
    請求項16から18のいずれか一項に記載のコンピュータプログラム。
  20. 永続記憶媒体へのローカルアクセスを制御する手段と、1または複数のコマンドに応答して、
    第1のローカルパリティ計算に基づいて中間パリティ値を決定する手段と、
    前記中間パリティ値をローカルに記憶する手段と、
    前記中間パリティ値および第2のローカルパリティ計算に基づいて最終パリティ値を決定する手段と、
    を備える、ストレージデバイスコントローラ装置。
  21. 単方向コマンドに応答して、
    前記単方向コマンドで示されるアドレスから古いデータ値を読み込む手段と、
    前記古いデータ値と、前記単方向コマンドで示される新たなデータ値との排他的OR演算を実行して、前記中間パリティ値を決定する手段と、
    前記単方向コマンドで示されるインデックスに関連付けされる位置に前記中間パリティ値をローカルに記憶する手段と、
    をさらに備える、請求項20に記載のストレージデバイスコントローラ装置。
  22. 単方向コマンドに応答して、
    前記単方向コマンドで示されるインデックスに関連付けされる位置から中間パリティ値を読み込む手段と、
    前記単方向コマンドで示されるアドレスに中間パリティ値を記憶する手段と、
    をさらに備える、請求項20に記載のストレージデバイスコントローラ装置。
  23. 単方向コマンドに応答して、
    前記単方向コマンドで示されるアドレスから古いパリティデータ値を読み込む手段と、
    前記単方向コマンドで示されるインデックスに関連付けされる位置に前記古いパリティデータ値をローカルに記憶する手段と、
    をさらに備える、請求項20に記載のストレージデバイスコントローラ装置。
  24. 前記単方向コマンドに応答して、
    前記古いパリティデータ値と、前記単方向コマンドで示される中間パリティ値と、前記単方向コマンドで示される係数値とに基づいて、前記第2のローカルパリティ計算を実行して、前記最終パリティ値を決定する手段と、
    前記単方向コマンドで示される前記アドレスに前記最終パリティ値を書き込む手段と、
    をさらに備える、請求項23に記載のストレージデバイスコントローラ装置。
  25. 単方向コマンドに応答して、
    前記単方向コマンドで示される第1のアドレスから古いデータ値を読み込む手段と、
    前記古いデータ値と、前記単方向コマンドで示される新たなデータ値との排他的OR演算を実行して、中間パリティ値を決定する手段と、
    前記中間パリティ値と、前記単方向コマンドで示される係数値とに基づいて、乗算演算を実行して、前記最終パリティ値を決定する手段と、
    前記単方向コマンドで示される第2のアドレスに前記最終パリティ値を書き込む手段と、
    をさらに備える、請求項20に記載のストレージデバイスコントローラ装置。
JP2022549602A 2020-02-20 2020-02-20 単方向コマンドによるオン-ssdの消失訂正符号化 Active JP7529947B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/076072 WO2021163973A1 (en) 2020-02-20 2020-02-20 On-ssd erasure coding with uni-directional commands

Publications (2)

Publication Number Publication Date
JP2023522544A true JP2023522544A (ja) 2023-05-31
JP7529947B2 JP7529947B2 (ja) 2024-08-07

Family

ID=77390257

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022549602A Active JP7529947B2 (ja) 2020-02-20 2020-02-20 単方向コマンドによるオン-ssdの消失訂正符号化

Country Status (6)

Country Link
US (2) US11971782B2 (ja)
EP (1) EP4107726A4 (ja)
JP (1) JP7529947B2 (ja)
KR (1) KR20220142521A (ja)
CN (1) CN115428074A (ja)
WO (1) WO2021163973A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2024103196A (ja) * 2023-01-20 2024-08-01 キオクシア株式会社 情報処理システム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5574882A (en) 1995-03-03 1996-11-12 International Business Machines Corporation System and method for identifying inconsistent parity in an array of storage
US6766480B2 (en) 2001-03-14 2004-07-20 Hewlett-Packard Development Company, L.P. Using task description blocks to maintain information regarding operations
CN100361222C (zh) 2003-09-05 2008-01-09 三洋电机株式会社 纠错码产生电路及其方法
US7290199B2 (en) 2004-11-19 2007-10-30 International Business Machines Corporation Method and system for improved buffer utilization for disk array parity updates
CN104205059B (zh) * 2012-04-27 2017-07-14 株式会社日立制作所 存储系统和存储控制装置
US9778986B2 (en) * 2014-03-28 2017-10-03 Hitachi, Ltd. Storage system
US10176039B2 (en) * 2014-09-19 2019-01-08 Micron Technology, Inc. Self-accumulating exclusive OR program
JP6328335B2 (ja) 2015-06-01 2018-05-23 株式会社日立製作所 ストレージ装置及びその制御方法
WO2017082750A1 (en) 2015-11-10 2017-05-18 Huawei Technologies Co., Ltd. Method and apparatus for encoding data for storage
US20180039425A1 (en) 2016-08-02 2018-02-08 Alibaba Group Holding Limited Method and apparatus for improved flash memory storage latency and robustness
US10664193B2 (en) * 2016-09-16 2020-05-26 Hitachi, Ltd. Storage system for improved efficiency of parity generation and minimized processor load
US11150846B2 (en) 2017-03-28 2021-10-19 Hitachi, Ltd. Storage system, computer-readable recording medium, and control method for system that reconstructs and distributes data
US20190050161A1 (en) 2018-06-21 2019-02-14 Intel Corporation Data storage controller

Also Published As

Publication number Publication date
JP7529947B2 (ja) 2024-08-07
US20230082403A1 (en) 2023-03-16
CN115428074A (zh) 2022-12-02
US20240241792A1 (en) 2024-07-18
EP4107726A1 (en) 2022-12-28
KR20220142521A (ko) 2022-10-21
EP4107726A4 (en) 2023-10-11
US11971782B2 (en) 2024-04-30
WO2021163973A1 (en) 2021-08-26

Similar Documents

Publication Publication Date Title
KR102686494B1 (ko) 구역 그룹화를 갖는 구역화된 네임스페이스
US20200089407A1 (en) Inter zone write for zoned namespaces
US11074172B2 (en) On-device-copy for hybrid SSD with second persistent storage media update of logical block address for first persistent storage media data
US20190073302A1 (en) Ssd boot based on prioritized endurance groups
US12118240B2 (en) Controller and persistent memory shared between multiple storage devices
EP3699747A1 (en) Raid aware drive firmware update
US20210117123A1 (en) Accelerated raid rebuild offload
US20240241792A1 (en) On-ssd erasure coding with uni-directional commands
US20240264774A1 (en) Ssd managed host write atomicity with arbitrary transfer length
EP3496356A1 (en) Atomic cross-media writes on storage devices
US20240354209A1 (en) Persistent data structure to track and manage ssd defects
US10795838B2 (en) Using transfer buffer to handle host read collisions in SSD
US12112055B2 (en) Erasure coding write hole closure for solid-state drive (SSD) erasure coding
CN114816830A (zh) 低复杂度的基于覆盖率的压缩
US10936201B2 (en) Low latency mirrored raid with persistent cache
US20190042372A1 (en) Method and apparatus to recover data stored in persistent memory in a failed node of a computer cluster
US20210405889A1 (en) Data rollback for tiered memory and storage
TWI844731B (zh) 具有寬預取之高頻寬dram記憶體
US10879938B2 (en) Erasure coding to mitigate media defects for distributed die ECC
US20220091934A1 (en) Adaptive device data correction with increased memory failure handling

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230206

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240410

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240423

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20240523

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20240621

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240621

R150 Certificate of patent or registration of utility model

Ref document number: 7529947

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150