JP2020095722A - 誤り訂正符号加速装置及びシステム - Google Patents

誤り訂正符号加速装置及びシステム Download PDF

Info

Publication number
JP2020095722A
JP2020095722A JP2019222969A JP2019222969A JP2020095722A JP 2020095722 A JP2020095722 A JP 2020095722A JP 2019222969 A JP2019222969 A JP 2019222969A JP 2019222969 A JP2019222969 A JP 2019222969A JP 2020095722 A JP2020095722 A JP 2020095722A
Authority
JP
Japan
Prior art keywords
error correction
correction code
code
data elements
error
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
JP2019222969A
Other languages
English (en)
Other versions
JP2020095722A5 (ja
JP7356887B2 (ja
Inventor
冕 秦
mian Qin
冕 秦
周 桓 李
Ju-Hwan Yi
周 桓 李
ピチュマニ レカー
Pitchumani Rekha
ピチュマニ レカー
亮 ソク 奇
Yang Seok Ki
亮 ソク 奇
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 JP2020095722A publication Critical patent/JP2020095722A/ja
Publication of JP2020095722A5 publication Critical patent/JP2020095722A5/ja
Application granted granted Critical
Publication of JP7356887B2 publication Critical patent/JP7356887B2/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • 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/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • 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/1012Adding 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 codes or arrangements adapted for a specific type of error
    • G06F11/1032Simple parity
    • 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
    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6575Implementations based on combinatorial logic, e.g. Boolean circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Human Computer Interaction (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】散ストレージシステムにおいて誤り訂正の演算時に、ホストによる追加の処理なしに、誤り訂正符号を計算できる装置及びシステムを提供する。【解決手段】本発明による誤り訂正符号加速装置は、ホスト処理装置から誤り訂正符号の加速のための装置に、複数のデータエレメントと関連した誤り訂正符号を計算するように指示するオフロード命令語を受信するように構成されるホストインターフェース回路と、前記複数のデータエレメントを受信するように構成されるメモリインターフェース回路と、前記複数のデータエレメントを一時的に格納するように構成される複数のメモリバッファ回路と、前記ホスト処理装置による追加の処理なしに、前記誤り訂正符号を、少なくとも部分的に計算するように構成される複数のエラーコード計算回路と、を備える。【選択図】 図1

Description

本発明は、データストレージに関し、特に、誤り訂正符号の加速のための装置及びシステムに関する。
符号化理論において、消去コード(Erasure code)は、(ビットエラー(誤り)の代わりに)ビット消去を想定した前方誤り訂正(Forward Error Correction:FEC)符号であり、「k」個のシンボルのメッセージを「n」個のシンボルを有する、もっと長いメッセージ(符号語)に変換して、元のメッセージが「n」個のシンボルのサブセットから回復されることができる。
分数「r=k/n」を符号レートとする。
分数「k’/k」(k’は、回復に必要なシンボルの数を表す)を受信効率という。
再生成符号(Regenerating codes)は、従来のエンコードされたフラグメントから失われ、且つエンコードされたフラグメントを再構成(回復とも呼ばれる)する問題を扱う。
より詳細には、再生成符号は、回復中にダウンロード量を減らしながらも、既存の最大距離分離(Maximum Distance Separable:MDS)符号の格納効率を維持することを目標とする符号のクラスである。
この問題は、エンコードされた冗長性を管理するための通信が問題になる分散ストレージシステムにおいて発生する。
分散ストレージシステムは、一般的に情報がしばしば、コピーされた方法で一つ以上のノード又は装置に格納されるコンピュータネットワークである。
分散ストレージシステムは、ユーザーが数個のノードに情報を格納する分散データベース、又はユーザーが数個のピアネットワークのノードに情報を格納するコンピュータネットワークを表現するために、しばしば使用される。
分散ストレージシステムは、一般的に、エラー検出と訂正技術を使用する。
いくつかの分散ストレージシステムは、ファイルの一部が損傷されたり、利用できなかったりする場合、前方誤り訂正技術を使用して元のファイル、チャンク又はブロブ(Blob:バイナリラージオブジェクト)を回復する。
他の分散ストレージシステムは、他のミラーリングされたソースから当該ファイルのダウンロードを再び試みる。
従って、分散ストレージシステムが分散されるほど、誤り訂正を効率的に実行することが課題となっている。
米国特許第9710330号明細書 米国特許第9898196号明細書 米国特許出願公開第20170179979号明細書 米国特許出願公開第20180060169号明細書
本発明は上記従来の分散ストレージシステムにおける課題点に鑑みてなされたものであって、本発明の目的は、分散ストレージシステムにおいて誤り訂正の演算時に、ホストによる追加の処理なしに、誤り訂正符号を計算できる装置及びシステムを提供することにある。
上記目的を達成するためになされた本発明による誤り訂正符号加速装置は、誤り訂正符号の加速のための装置であって、ホスト処理装置から前記誤り訂正符号の加速のための装置に、複数のデータエレメントと関連した誤り訂正符号を計算するように指示するオフロード命令語を受信するように構成されるホストインターフェース回路と、前記複数のデータエレメント(data element)を受信するように構成されるメモリインターフェース回路と、前記複数のデータエレメントを一時的に格納するように構成される複数のメモリバッファ回路と、前記ホスト処理装置による追加の処理なしに、前記誤り訂正符号を、少なくとも部分的に計算するように構成される複数のエラーコード計算回路と、を備えることを特徴とする。
上記目的を達成するためになされた本発明による誤り訂正符号加速システムは、誤り訂正符号の加速のためのシステムであって、複数のデータエレメントを格納するように構成されるメモリと、前記複数のデータエレメントの少なくとも一部に基づいて、誤り訂正符号を計算するように構成される再プログラム可能な処理装置と、誤り訂正符号の計算を再プログラム可能な処理装置にオフロードするように構成されたホスト処理装置と、を備え、前記再プログラム可能な処理装置は、前記誤り訂正符号を少なくとも部分的に計算し、前記複数のデータエレメントの数に基づいて再構成される再構成可能なパイプラインを含むことを特徴とする。
また、上記目的を達成するためになされた本発明による誤り訂正符号加速装置は、誤り訂正符号の加速のための装置であって、誤り訂正符号の計算をオフロード処理装置にオフロードするように構成されるホスト処理装置と、複数のストレージ装置からデータエレメントを書き込み及び読み出しをするよう構成される入出力(I/O)システムと、少なくとも部分的に複数のデータエレメントに基づいて、誤り訂正符号を計算するように構成されるオフロード処理装置と、を有し、前記オフロード処理装置は、前記複数のデータエレメントを受信するように構成されるメモリインターフェース回路と、前記複数のデータエレメントを一時的に格納するように構成される複数のメモリバッファ回路と、前記ホスト処理装置による追加の処理なしに、前記誤り訂正符号を、少なくとも部分的に計算するように構成される複数のエラーコード計算回路と、を含むことを特徴とする。
本発明に係る誤り訂正符号加速装置及びシステムによれば、分散ストレージシステムにおいて、誤り訂正の演算時に、ホストによる介入が最小化される誤り訂正符号の演算が可能である。したがって、ホストの性能を向上させることができる。
本発明の一実施形態による誤り訂正符号の加速のためのシステムの概略構成を例として示すブロック図である。 本発明の一実施形態による誤り訂正符号の加速のための例としてのシステム200の動作を説明するためのブロック図である。 従来技術による誤り訂正符号の加速のためのシステム300の概略構成を例示するブロック図である。 従来技術による誤り訂正符号の加速のためのシステム300の概略構成を例示するブロック図である。 本発明の実施形態による誤り訂正符号の加速のためのシステムの動作を説明するためのタイミング図である。 本発明の実施形態による誤り訂正符号の加速のためのシステムの動作を説明するためのタイミング図である。 本発明の実施形態にかかる半導体装置を含む情報処理システムの概略的な構成を示すブロック図である。
次に、本発明に係る誤り訂正符号加速装置及びシステムを実施するための形態の具体例を図面を参照しながら説明する。
多様な例としての実施形態を、いくつかの実施形態を示している添付された図面を参照して詳細に説明する。
しかし、開示した本内容は、多くの異なる形態で具体化され、ここで説明した実施形態に限定されるものとして解釈されてはならない。
むしろ、これらの例としての実施形態は、本開示が徹底かつ完全になるように提供され、開示した本主題の範囲を当業者に完全に伝えるはずである。
図面で、レイヤと領域のサイズ及び相対的なサイズは、明確にするために誇張され得、多様な図面で、同じ参照符号は、同じエレメントを示す。
エレメント又はレイヤが、他のエレメント又はレイヤの「上に」、「連結(接続)された」又は「結合された」と述べられるとき、それは他のエレメント又はレイヤに直接連結(接続)/結合されるか、又はエレメントやレイヤが、その間に存在できるものと理解されるべきである。
一方、エレメントが他のエレメント又はレイヤに「直接」、「直接連結されて」又は「直接結合されて」と述べられるとき、介在するエレメント又はレイヤが存在しない。
同一の符号は、同一の構成要素を指す。ここで使用するように、「及び/又は」という用語は、一つ以上の、関連してリストされた項目の任意の組み合わせ、及びすべての組み合わせを含む。
ここで、第1、第2、第3などの用語は、多様なエレメント、構成要素、領域、レイヤ及び/又はセクションを説明するために使用するものであり、これらのエレメント、構成要素、領域、レイヤ及び/又はセクションは、これらの用語により限定されないと理解されるだろう。
これらの用語は、他のエレメント、構成要素、領域、レイヤ、又はセクションから一つのエレメント、構成要素、領域、レイヤ、又はセクションを区別するために使用する。
したがって、後述する第1のエレメント、構成要素、領域、レイヤ、又はセクションは、本発明の思想及び範囲を逸脱せずに、第2のエレメント、構成要素、領域、レイヤ、又はセクションを指すことができる。
一つのエレメント又は図面で示した他の構成要素又は特徴との特徴的な関係を説明するための説明を容易にするために、「下の」、「下」、「低い」、「特定の部分の下」、「上に」、「上部」のような空間的かつ相対的な用語がここで使用することができる。
空間的かつ相対的な用語は、図面で描写された方向に加えて使用又は動作において、装置の他の方向を含むように意図されたと理解されるだろう。
例えば、もし図面の装置が裏返されると、他の構成要素又は特徴の「下」、「下の」又は「特定の部分の下」で説明された構成要素は、他の構成要素又は特徴の「上」を向くようになる。
したがって、「下の」又は「特定の部分の下に」の例としての用語は、上又は下の方向の両方を含む。装置は、別の方法で向けられることができ(例えば、90度又は他の方向に回転される)、空間的かつ相対的な記述語は、それに応じて解釈されるべきである。
同様に、「高い」、「低い」、「プルアップ」、「プルダウン」、「1」、「0」などのような電気的な用語は、図面に示したように、他の電圧レベル、他のエレメント又は他の特徴に対して電圧レベル又は電流を説明するための表現の便宜のために使用する。
電気的な相対用語は、図面に図示された電圧又は電流に加えて使用中又は動作中の装置の異なる基準電圧を含むと理解されるだろう。
例えば、図面の装置又は信号が反転されたり、他の基準電圧、電流、又は電荷を使用する場合に、「高い」又は「プルアップ」で説明されたエレメントは、新しい基準電圧又は電流に比べて「低い」又は「プルダウン」されたものである。
したがって、例としての用語の「高い」は、相対的に低い電圧、高電圧又は電流のすべてを含む。
装置は、他の電気的基準フレームと本明細書で使用される電気的かつ相対的な記述語に基づいて解釈され得る。
本明細書で使用する用語は、単に特定の実施形態を説明するためのものであり、本発明を制限しようとするものとして意図しない。
本明細書で使用したように、文脈上明らかに別の意味を示していると判定されない限り、単数形「一つ」は、複数形も含むものと意図される。
「含む(comprise)」、及び「含んでいる(comprising)」という用語は、本明細書で使用するとき、これらの用語は、定められた特徴、整数、段階、動作、エレメント、及び/又は構成要素の存在を明示するが、一つ以上の他の特徴、整数、段階、動作(処理)、エレメント、構成要素、及び/又はそれらのグループの追加若しくは存在を不可能にしない。
例としての実施形態は、理想的な例としての実施形態(及び中間構造)の概略図である断面図を参照して、ここに説明する。
このように、例えば、製造技術及び/又は許容誤差のような結果としての図面の形状からの変形が予想される。
したがって、例としての実施形態は、本明細書に示した特定の形状の領域に限定されると解釈されてはならず、例えば、製造からもたらされる形状の偏差を含むべきである。
例えば、長方形で図示した注入領域は、通常的に注入領域から注入していない領域へのバイナリ変化というより、円形若しくは曲線のフィーチャー(features)及び/又はエッジでの注入濃度の勾配を示すはずである。
同様に、注入によって形成された埋め立て領域は、埋め立て領域と注入が起こる表面との間の領域に若干の注入をもたらす。
したがって、図面に例示された領域は、本質的に概略であり、その形状はデバイスの領域の実際の形状を例示するものではなく、開示された本主題の範囲を制限しようとするものではない。
文脈上明らかに別の意味を示していると定義されない限り、本明細書で使用したすべての用語(技術的及び科学的な用語を含む)は、本発明が属する技術分野における当業者によって一般的に理解されるのと同じ意味を有する。
一般的に使用される、辞典に定義されたこれらの用語は、本明細書及び/又は関連技術の文脈からそれらの意味と一致する意味を有するものと解釈されるべきであり、本明細書において明らかに定義されない限り、理想化されたり過度に形式的な感覚で解釈されたりしてはならない。
図1は、本発明の一実施形態による誤り訂正符号の加速のためのシステム100の概略構成を例として示すブロック図である。
図に示す実施形態で、システム100は、複数のノード又はストレージ装置180にわたってデータを格納する分散ストレージシステム114を含む。
分散ストレージシステムは、しばしば、大規模な信頼性のストレージを提供するために使用される。
多くの場合、これは、複数のノード又はストレージ装置にわたって冗長性又は誤り訂正(例えば、パリティ)を分散させることによって達成される。
しかし、ノード又はストレージ装置がオフライン状態になると(例えば、ネットワーク障害、ハードウェア障害などにより)データが損傷しているか、冗長性レベルが減少したかが、疑われる。
ストレージシステムが分散されるほど、このようなことの頻度は高くなる。
このような問題の発生(例えば、ミラーリング、リード・ソロモン・エンコーディング)を防止するために、多数の技術が利用されうるが、本発明の実施形態によれば、特定のエンコーディングに制限されない。
このような実施形態で、欠落したデータのピース(piece)(チャンク)は、残りのデータのピースに基づいた公式を使用して再生したり、再構成したりする。
例示した実施形態で、システム100は、分散ストレージシステム又は複数のデータノード114を管理するように構成された一つ以上のホスト又はコンピューティング装置112を含む。
コンピューティング装置112は、コンピュータ装置(例えば、コンピュータ、サーバ)を含む。
エラー(誤り)(たとえば、欠落されたデータチャンク)が発生する場合は、コンピューティング装置112は、一般的にエラーを検出し、可能であれば回復する責任を有する。
多様な実施形態で、コンピューティング装置112は、例えばラップトップ、デスクトップ、ワークステーション、個人携帯情報端末、スマートフォン、タブレット、SoC(system−on−a−chip)、及び他の適切なコンピュータ、又は仮想マシン、若しくは仮想コンピューティング装置などを含む。
多様な実施形態で、コンピューティング装置112は、ユーザー(図示せず)によって使用される。
多様な実施形態で、コンピューティング装置112は、一つ以上のマシン実行可能命令若しくはソフトウェア、ファームウェア、又はこれらの組み合わせを実行するように構成されたプロセッサ102を含む。
コンピューティング装置112は、いくつかの実施形態で、1つ以上のデータを一時的に、又は永久的に、又は半永久的に、又はこれらの組み合わせで格納するように構成されたメモリ(図示せず)を含む。
さらに、メモリは、揮発性メモリ、不揮発性メモリ、又はこれらの組み合わせを含む。
多様な実施形態で、コンピューティング装置112は、半永久的又は実質的に永続的な形でデータを格納するように構成されたストレージ媒体114を含み、その媒体と通信を行う。
図に示した実施形態で、それぞれのデータセットは、コンピューティング装置112によって複数のより小さなピース(piece)のデータ又はチャンク198に分解したり分割したりする。
図に示した実施形態で、データは、チャンク198に分割される(例えば、D1、D2、D3、及びD4(図に示さず))。
なお、多様な実施形態で、コンピューティング装置112は、パリティチャンク(例えば、P1及びP2と命名された(図に示さず)チャンク198)のような一部の形態の冗長性をデータのチャンク198に適用できる。
本技術を説明する用語であり、元のデータのチャンク198(D1、D2、D3及びD4)の数は、変数「k」又は「K」として記述される。
同様に、冗長性データのチャンク198(P1及びP2)の数は、変数「R」又は「r」で記述される。
したがって、チャンク198の総計は、「K+R」になるようにする。
上記例示した実施形態で、「K」は「4」であり、「R」は「2」であり、「K+R」は「6」で記述したが、これらの内容は、単に本発明の実施形態を限定しないと理解するできである。
例示した実施形態では、コンピューティング装置112は、これらのチャンク198(オリジナルと冗長性)のそれぞれが、分散ストレージシステム114のそれぞれのノード又はストレージ装置に格納されるようにする。
多様な実施形態で、ストレージ装置180の数は、チャンク198の数と同じではない。
多様な実施形態で、チャンク198は、欠落(例えば、ネットワークやハードウェアの故障)又はエラー(誤り)と関連付けられる。
図に示した実施形態で、チャンク198とそれぞれのストレージ装置180が突然利用できなくなると仮定する。
コンピューティング装置112は、エラーを検出するとき、欠落したチャンク198を再生成したり、そうではなければ、エラーを訂正したりしようと試みる。
このような実施形態で、一つのチャンクに欠陥が存在(Fail)し、元のデータに「K」個(例えば、「4」)の総計チャンクがあるならば、ホスト装置112は欠陥が存在するチャンクを回復するために、少なくとも「K」個の(例えば、「4」)ノード又はコンピューティング装置は、ホストに情報を送る必要がある。
これらの「K」(例えば、「4」)個のチャンクは、任意の「K+R」(例えば、「6」)個のチャンクから由来する。
例えば、チャンク198(D1、D2、D4及びP1)は、欠落されたチャンク198(D3)を再生成するために使用される。
再生コードは、一般的にDノード(D>K)から全チャンクサイズの情報未満を伝送することにより、回復の帯域幅を減少させる。
つまり、スマート公式を使用してコンピューティング装置112は、全体のチャンク198(D1、D2、D4及びP1)を使用せずに、単にチャンク198(D1、D2、D4、P1及びP2)の一部のみを使用することにより、欠落したチャンク198(D3)を再生成する。
再生コードは、一般的に、より多くのストレージ装置180から情報を取得するが、非再生コードより、各ストレージ装置180から少ない情報を取得する。
上記内容は、本発明の実施形態が、制限されない単に一つの例としてのものと理解されるであろう。
例えば、6チャンクのデータ(K=6)と6チャンクの冗長性が使用され(R=6及び「K+R」=12)、各チャンクのサイズが16MBである場合、標準リード・ソロモン(RS)誤り訂正符号化方式は、6(K)16MBのチャンクがホスト装置に伝送されるか、又は欠落した16MBのチャンクを訂正するために96MBのデータを伝送することを要請するはずである。
逆に、再生技術が使用される場合に、12個のすべてのチャンク(この場合、「K+R」又はD)の内の一部が読み取られるが、各チャンクの一部(例えば、2.7MB)のみが使用されるため、ホスト装置に伝送された総量は、より少ない可能性がある(例えば、29.7MB)。
再生コードは、しばしば、格納と帯域幅のトレードオフを有する。
多様な例において、一般的に、再生コードの2つのクラス又はグループが存在する。
ストレージのオーバーヘッドが最小である場合に、これを最小ストレージ再生(Minimum Storage Regeneration:以下、MSR)コードという。
追加されたストレージのオーバーヘッドに対し回復帯域幅が最小である場合には、これを最小帯域幅再生(Minimum Bandwidth Regeneration:以下、MBR)コードと呼ぶ。
このような広範囲なカテゴリ内で、再生コードを実行するために、多様な特定の技術又は公式が使用される。
前述した内容は、本発明の実施形態を制限しない、いくつかの例としてのものと理解されるべきである。
図1に戻って、図に示した実施形態で、(分散)ストレージシステム114は、複数のストレージ装置180を含む。
各ストレージ装置180は、チャンク又は他の方法でデータを格納するように構成される。
図に示した実施形態で、ストレージ装置180は、ハードドライブ、ソリッド・ステート・ドライブ、又は揮発性メモリのような比較的通常のストレージ装置である。
図に示した実施形態で、システム100は、また、前述したように、コンピューティング装置112を含む。
本実施形態で、コンピューティング装置112は、ホストプロセッサ又はホスト処理装置102を含む。
多様な実施形態で、ホスト処理装置102は、中央処理装置(CPU)、装置固有のプロセッサ若しくはコントローラ・プロセッサ(例えば、ストレージ装置内から発見される)又は他の処理回路を含む。
図に示した実施形態で、コンピューティング装置112は、また、入出力(I/O)システム(又はインターフェース)106を含む。
多様な実施形態で、入出力(I/O)システム106は、(分散)ストレージシステム114と通信するように構成される。
いくつかの実施形態で、入出力(I/O)システム106は、ホスト処理装置102と、少なくとも部分的に、統合される。
他の実施形態で、入出力(I/O)システム106は、しばしばメモリ管理ユニット(MMU)、又はチップセットで表現される他の構成要素を含む。
上記内容は、本発明の実施形態を制限しない、いくつかの例としてのものと理解される。
図に示した実施形態で、コンピューティング装置112は、再プログラム可能なオフロード(reprogrammable offload)処理装置104(以下、ROPD)を含む。
多様な実施形態で、このROPD104は、特殊目的の論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)又はASIC(特定用途向け集積回路)を含む。
多様な実施形態で、ROPD104は、プログラミングが、一般的に固定されるように、外部装置によってプログラム可能である。
他の実施形態で、ROPD104は、ホスト処理装置102又は他の装置によって動的に再プログラム可能で、その回路(例えば、パイプライン)が、ランタイム時の条件に基づいて動的に調整される。
上記内容は、本発明の実施形態を制限しない、いくつかの例としてのものと理解される。
前述したように、図に示した実施形態で、必要な誤り訂正符号(たとえば、パリティチャンク、欠落されたデータのチャンクの再生)を計算することは、一般的に、ホスト処理装置102の責任であるが、ホスト処理装置102は、当該タスクの全体又は一部をROPD104にオフロードしたり、委任することを選択したりして設定される。
一般的に、ホスト処理装置102による誤り訂正符号の計算(多くの場合、ソフトウェアによって制御される)は、高費用の作業である。
しばしば、CPUアーキテクチャ(例えば、SMP(Symmetric multiprocessing)、SIMD(Single Instruction Multiple Data))は、MSR(又はその他)コードの構成及び再構成の並列特性に比べて、並列処理量が制限されている。
また、誤り訂正符号(つまり、すべてのチャンク198へのアクセス)を生成するのに必要なメモリアクセスパターンは、ローカル性が欠如している。
データエレメントのランダムアクセス及び各データエレメントの内部のデータに対するストリーミングパターンは、多くのローカル性を提供しないため、キャッシュの性能が低下し、全体のエンコーディング/デコーディング性能が低下する。
したがって、通常のソフトウェアを使用するという概念は、プロセッサとメモリ帯域幅の高い利用を誘導し、他のタスクによく使用されうるホスト処理装置102の利用を防止する。
図に示した実施形態で、システム100は、少なくともこれらの問題を解決するためのエラー訂正符号化(例えば、構成及び再構成)のための加速システムを提供する。
例示した実施形態で、ホスト処理装置102は、エラー訂正符号化をハードウェア加速器(hardware accelerator)又はROPD104にオフロードするように構成される。
このような実施形態で、エラー訂正符号化を実行しろという要請があったとき、ホスト処理装置102は、この要請をROPD104に伝達する。
ROPD104は、入出力(I/O)システム106を利用して、データエレメント(例えば、チャンク198又は他のサイズのデータ)にアクセスする。
完了したら、ROPD104は、動作の最終性をホスト処理装置102に伝達し、その後、ホスト処理装置102は、データ、誤り訂正符号にアクセスするか、単にその処理を実行する。
これらの実施形態で、ROPD104が誤り訂正符号を計算するうち、ホスト処理装置102は、他のタスクを実行できる。
多様な実施形態で、ホスト処理装置102及びROPD104は、ダイレクト・メモリアクセス(DMA)を介して通信する。
一実施形態で、これは入出力(I/O)システム106で、メモリのマッピングされた部分を含む。
他の実施形態で、これは装置間(102と104)の直接通信を含む。
同様に、入出力(I/O)システム106及びROPD104は、ピアツーピアDMAプロトコルを介して通信する。
上記内容は、本発明の実施形態を制限しない、いくつかの例としてのものと理解されるべきである。
図2は、本発明の一実施形態による誤り訂正符号の加速のための例としてのシステム200の動作を説明するためのブロック図である。
多様な実施形態で、システム200は、前述したように、再プログラム可能なオフロード処理装置(RPOD)を含む。
図に示した実施形態で、システム200は、オフロード処理回路202を含む。
多様な実施形態で、このオフロード処理回路202は、前述したように、再プログラムすることができる。
これらの実施形態で、オフロード処理回路202は、ホスト処理装置による追加処理なしに誤り訂正符号を計算するように構成される。
図に示した実施形態で、オフロード処理回路202は、ホスト処理装置又はプロセッサと通信するように構成されたホストインターフェース232を含む。
多様な実施形態で、ホストプロセッサは、システム200の外部に存在するか、又は別途のロジックブロック(例えば、SoC(system−on−a−chip)の一部として)に統合され得る。
多様な実施形態で、ホストインターフェース232は、DMAを介して少なくとも部分的に、又は全体的に通信できる。
例示した実施形態で、システム200は、メモリ204(回路又はユニット)を含むか、又はこれと相互作用することができる。
一部の実施形態で、メモリ204は、DDR(double data rate)SDRAMのようなシステムメモリを含み得るが、上記内容は、本発明の実施形態を制限しない一つの例としてのものと理解されるべきである。
これらの実施形態で、メモリ204は、誤り訂正符号の計算(例えば、生成又は再構成)に使用されるデータエレメント(例えば、情報又はパリティチャンク)を格納するように構成される。
一実施形態で、生成又はエンコーディング手順のために、ホストプロセッサは、エンコーディングされる必要のあるデータオブジェクト(たとえば、すべての情報チャンク)をメモリ204に伝送する。
このような実施形態で、これらのデータエレメントは、入力データ212として格納される。
続いて、オフロード処理回路202は、パリティチャンク(誤り訂正符号の形態)を計算し、(出力データ214を)メモリ204に再び記入する。
最後に、情報及びパリティチャンクは(入出力システム又はホスト処理装置によって)異なるストレージノードに分配される。
他の実施形態で、再構成又はデコーディング手順のために、生存情報データエレメント及びパリティデータエレメントが先に検索されてメモリ204に入力データ212が格納される。
その後、オフロード処理回路202は、再構築チャンク(誤り訂正符号)を計算し、これを出力データ214としてメモリ204に記入する。
最後に、再構築されたチャンクがホスト処理装置に伝送される。
図に示した実施形態で、オフロード処理回路202は、メモリ204と通信するように構成されたメモリインターフェース回路222を含む。
図に示した実施形態で、メモリインターフェース回路222は、データエレメントを受信するマルチプレクサ(MUX)として示している。
同様に、デマルチプレクサ(DeMUX)は、データエレメントをメモリ204に記入する。
上記内容は、本発明の実施形態を制限しない一つの例としてのものと理解されるべきである。
オフロード処理回路202は、複数のデータエレメントを一時的に格納するように構成された複数のメモリバッファ回路(以下、バッファ)224を含む。
特定の実施形態で、入力データ212は、効率的な512ビットのグループ化でオフロード処理回路202に到達し得るが、エレメント自体は8ビットであり得る。
このような実施形態で、メモリインターフェース回路222は、入力データ212を64個のデータエレメントに分割して、それらを個別(又は部分の)のバッファ224に格納する。
上記内容は、本発明の実施形態を制限しない一つの例としてのものと理解されるべきである。
例示した実施形態で、オフロード処理回路202は、データがメモリ204から読み出され、バッファ224に記入される方法を管理するように構成されたアドレスコントローラ228を含む。
いくつかの実施形態で、アドレスコントローラ228は、誤り訂正符号コンピューティングのためバッファ224からデータが読み出される方法を管理するように構成される。
いくつかの実施形態で、オフロード処理回路202は、バッファ224がアクセスする予め格納されたシーケンスを含むインデックステーブル230を含む。
オフロード処理回路202は、複数のエラーコード計算回路(ECCC)226を含む。
これらのエラーコード計算回路226は、ホスト処理装置による追加処理なしに誤り訂正符号を計算するように構成される。
図に示した実施形態で、エラーコード計算回路226は、主に、多重加算回路(Multiple−add circuits)を含む。
多様な実施形態で、エラーコード計算回路226は、ルックアップテーブル又はビット単位XORゲートとして具体化される。
上記内容は、本発明の実施形態を制限しない、いくつかの例としての例であると理解されるべきである。
いくつかの実施形態で、システム200は、誤り訂正符号の生成を読み出し、処理及び記入する3つの段階で実行する。
読み出しの段階で、データエレメント(再構築時のパリティエレメントを含む)は、メモリ204から読み出され、バッファ224に配置される。
処理段階中に、アドレスコントローラ228は、事前に格納されたインデックステーブル230に基づいて読み出されたメモリを制御し、「k」個のバッファ224から正確なデータスライスを同時に読み出す。
このデータは、誤り訂正計算のために、エラーコード計算回路226に供給される。
エラーコード計算回路226の1つの可能な実施形態の詳細な構造は、図2に詳細の部分で示す。
エラーコード計算回路226は、所望するパリティ計算又は情報の再構成技術(例えば、ガロアフィールド(GF)の計算)に対応する予め格納された係数テーブル242を含む。
エラーコード計算回路226は、また、速い乗算演算のために、「k」個の乗算ルックアップテーブル又は乗算器244を含む。
エラーコード計算回路226は、また、XOR又は加算器246ツリー構造を含む。
一実施形態で、それぞれの乗算器244は、一つのデータエレメント252(例えば、8ビットのデータ)を処理する。
究極的に、エラーコード計算回路226は、誤り訂正符号254(又は後述されるように、その一部)を生成又は出力する。
書き込みの段階で、誤り訂正符号254は、出力データ214としてメモリ204に再び書き込まれ得る。
多様な実施形態で、誤り訂正符号254は、処理直後にメモリ204に再び書き込まれ得る。
XOR又は加算器246ツリーの次に、パイプライン段階をもう1つ追加するとみなすことができる。
このような実施形態で、システム200を不連続又はアトミック操作(atomic operations)と逆にパイプラインデータ処理に関与させることができる。
このような実施形態で、これは後述するように、マルチパスの動作を加速させる。
いくつかの実施形態で、データはバッファ224に読み出されるときに分割されるため、データの出力は、別途の出力パーティションでメモリ204に再び記入される。
多様な実施形態で、例えば、MSRコード(n、k、m)のように、(エンコーディングの手順で)「k」個の入力データのチャンクが存在し、入力データは、全体的に内部のバッファ224のサイズよりも大きい可能性がある。
このような実施形態で、システム200は、全体の入力データセットを処理するために、多数又は「p」のパスを使用でき、ここで、「p」は、各情報/パリティエレメントに対して分割された情報/パリティスライスの数と同じである。
このような実施形態で、システム200は、より大きなデータセットを、それぞれ「k」個以下のデータエレメントを有する「p」個のパーティションに分割できる。
このような実施形態で、それぞれのパスは、それぞれのパーティションに関連した誤り訂正符号を読み出し、処理及び記入することを含み得る。
データセットの数がバッファ224でのストレージ総量よりも少ない他の実施形態では、データセットは、それぞれバッファサイズよりも小さい「k」個のデータエレメントにマッピングされる。
このような実施形態で、可変データエレメントのサイズは、システム200によって処理される。
データエレメントの数が「k」個のバッファ224よりも小さい(したがって、k個のエラーコード計算回路226)別の実施形態で、エラーコード計算回路226の数は、動的に変更される。
このような実施形態で、システム200のパイプラインは、処理量だけでなく、レイテンシを最適化するように動的に変更される。
このような実施形態で、エラーコード計算回路226の数は、データエレメントの数(最大ハードウェアの限界まで)と一致するように調整され得る。
このような実施形態で、乗算ルックアップテーブル又は乗算器244は、サイクルごとにアクセスされ得る。
データエレメント(したがって、データノード)に対するこの並列処理は、SIMD命令のオペランド(operand)の数が固定されている通常のCPUとは異なるため、オペランド自体が操作されて奇数個のデータエレメントを処理しなければならない。
図3A及び3Bは、従来技術による誤り訂正符号の加速のためのシステム300の概略構成を例示するブロック図である。
図3Aは、ROPDのないシステム300の単純化されたバージョンを示し、一方、図3Bは、システム300内でのROPDの使用を示す。
図3A及び3Bは、本明細書で説明した誤り訂正符号の計算を利用するシステム300内での命令語又はソフトウェアスレッドの実行を示している。
図に示した実施形態で、システム300は、データセット(及びデータエレメント)へのアクセスを必要とするいくつかのタスクを実行するメイン、若しくはユーザースレッド302、又はアプリケーション・プログラム・インターフェース(API)を含む。
このような実施形態で、ユーザースレッド302は、ホストプロセッサによって実行される。
図に示した実施形態で、システムは、命令語の計算スレッド312を処理し、入出力(I/O)キュー316を介してストレージ装置306と相互作用するLIB304を含む。
オフロード処理装置が活性化されない実施形態で、計算スレッド312は、誤り訂正符号を計算(例えば、パリティエレメントを構築したり、データを再構成したりする)するために、ユーザーの要請(要請キュー322に配置された)を受信する。
エンコーディング(パリティエレメントの構築)が要請されると、要請がエンコーディング動作324に到達するとき、パリティエレメントをそれぞれのストレージ媒体306に記入するために、ホスト処理装置は、エンコーディングを実行してから、入出力(I/O)キュー316及び入出力(I/O)スレッド317(個々のI/Oスレッド352)を制御する。
同様に、必要な残りのデータエレメント(パリティエレメントを含む)が入出力(I/O)スレッドによって完了キュー326にリターンされ、最終的にはデコーディング動作(ホストプロセッサによって実行される)に達するとき、デコーディング(データエレメントの再構築)が要請される。
図3Bにおいては、ハードウェア加速器やオフロード処理装置308がホストプロセッサ(スレッド(302、312、及びLIB304)を実行する)と相互作用する方法が説明される。
再度、計算スレッド312は、ユーザースレッド302からの要請を処理する。
このような実施形態で、これはエンコーディング/デコーディングの計算をオフロード処理装置308にオフロードすることを含む。
前述したように、それぞれの計算スレッド312は、要請キュー322(ユーザスレッド302によってキューイングされる)及び完了キュー326(入出力(I/O)スレッド317によってキューイングされる)を含む。
このような実施形態で、計算スレッド312は、オフロード処理装置308と相互作用する。
例えば、エンコーディング、又はパリティの生成シナリオで、計算スレッド312は、エンコーディング要請を要請キュー322に配置する。
エンコーディング要請がエンコーディング処理324に到達すると、ホスト装置によって直接処理されず、計算スレッド312は、エンコーディング要請をオフロード処理装置308にオフロードする。
一実施形態で、これは、コールバックスレッド(callback thread:CBスレッド)314を介して追跡される。
このような実施形態で、オフロード要請は、ハードウェア加速器(HW)要請キュー322又はオフロード要請キューに配置される。
要請がハードウェア加速器要請キュー322内に存在するにつれ、コールバックスレッド314は、ハードウェア加速器(オフロード処理装置)308にDMA要請をする。
ハードウェア加速器(オフロード処理装置)308は、前述したように、エラーコード計算回路342を含む。
完了すると、コールバックスレッド314は、計算スレッド312に再び報告し、これは、再びユーザースレッド302に報告される。
この時点で、入出力(I/O)スレッド317は、エンコーディングされたデータをストレージ306に記入する。
デコーディング又は再構成動作の例で、計算スレッド312は、入出力(I/O)スレッド317からデータを要請する。
その後、要請を完了キュー326に配置する。
要請がデコーディング処理328に到達すると、ホスト装置によって直接処理される代わりに、計算スレッド312は、デコーディング要請をオフロード処理装置308にオフロードする。
一実施形態で、これは、コールバックスレッド314を介して追跡される。
このような実施形態で、オフロード要請を配置する。
オフロード処理装置308は、入出力(I/O)スレッド317からDMAを介して既存のデータエレメントを受信する。
要請がハードウェア加速器要請キュー322に存在するにつれて、コールバックスレッド314は、計算スレッド312及び/又はユーザースレッド302に再び報告する。
図4A及び4Bは、本発明の実施形態による誤り訂正符号の加速のためのシステムの動作を説明するためのタイミング図である。
図4Aは、エンコーディング又はパリティ生成動作のタイミング図400を示し、図4Bは、デコーディング又は再構成動作のタイミング図401を示す。
多様な実施形態で、これらのタイミング図は、図3A及び3Bのシステム300によって生成される。
前述した説明は、本発明の実施形態を制限しない、単なる一つの例示に過ぎないことと理解されるべきである。
例示した実施形態で、符号402の行は、ユーザースレッド(402)の可能なタイミングを示している。
例示した実施形態で、符号404の行は、計算スレッド(404)の可能なタイミングを示している。
例示した実施形態で、符号406の行は、ユーザースレッドの可能なコールバック(コールバックスレッド)(406)を示している。
例示した実施形態で、符号408の行は、入出力(I/O)スレッド(408)の可能なタイミングを示している。
図4Aにおいて、タイミング図400は、エンコーディング動作のためのスレッドステージとタイミングの実施形態を示す。
これらの実施形態で、ユーザースレッド(402)は、計算スレッドで入出力(I/O)の書き込み要請をキューイングし(Enq IO−Q)(ブロック412)、要請の完了を待機する(ブロック414)。
多様な実施形態で、ホスト装置は、完了を待機している間(ブロック414)、他の動作(図示せず)を実行する。
このような実施形態で、計算スレッド(404)は、要請キューからユーザーの要請をキューイングし(Deq Req−Q)(ブロック422)、ハードウェア又はオフロード要請をキューにキューイングする(Enq HW−Q)(ブロック424)。
計算スレッド(404)は、完了を待機する(ブロック426)。
このような実施形態で、コールバックスレッド(406)は、ハードウェア加速の要請をキューイングし(Deq HW−Q)(ブロック432)、エンコーディング動作を開始し(Issue HW−R)(ブロック434)、その完了を待機し(ブロック436)、動作が完了したとき、完了キューに通知する(完了スレッドを公知)(ブロック438)。
図に示した実施形態で、計算スレッド(404)は、入出力(I/O)要請を入出力(I/O)のキューにキューイングする(ENq IO−Q)(ブロック428)。
このような実施形態で、入出力(I/O)スレッド(408)は、入出力(I/O)要請をデキューイングすることにより、入出力動作を実行し(Deq IO−Q)(ブロック442)、要請をストレージ装置に発行する(Issue IO)(ブロック444)。
データが書き込まれることを待機してから(ブロック446)、入出力(I/O)スレッドは、ユーザースレッドに完了を通知する(ブロック448)。
上述した説明は、本発明の実施形態を制限しない、単なる一つの例示に過ぎないと理解されるべきである。
図4Bにおいては、タイミング図401は、デコーディング動作のためのスレッドステージとタイミングの実施形態を示す。
これらの実施形態で、ユーザースレッド(402)は、計算スレッドで入出力(I/O)読み取り要請をキューイングし(Enq IO−Q)(ブロック413)、続いて、要請の完了を待機する(ブロック415)。
多様な実施形態で、ホスト装置は、完了を待っている(ブロック415)間、他の動作(図示せず)を実行できる。
このような実施形態で、計算スレッド(404)は、要請キューからユーザーの要請をデキューイングし(Deq Req−Q)(ブロック422)、入出力(I/O)要請をキューにキューイングする(Enq IO−Q)(ブロック428)。 計算スレッドは、完了を待機する(ブロック427)。
このような実施形態で、入出力(I/O)スレッド(408)は、入出力(I/O)要請をデキューイングすることにより、入出力(I/O)動作を実行し(Deq IO−Q)(ブロック442)、要請をストレージ装置に発行する(Issue IO)(ブロック444)。データが読み出されることを待ってから(ブロック447)、入出力(I/O)スレッドは、ハードウェア加速の要請をキューイングすることにより、コールバックスレッド406に完了を通知する(Enq Comp−Q)(ブロック449)。
このような実施形態で、コールバックスレッド(406)は、ハードウェア加速の要請をデキューイングし(Deq HW−Q)(ブロック432)、デコーディング動作を開始し(Issue HW−R)(ブロック434)、その完了を待機し(ブロック436)、動作が完了すると、ユーザースレッド(402)に通知する(ブロック439)。
上記内容は、開本発明の実施形態を制限しない、単なる一つの例示に過ぎないことと理解されるべきである。
図5は、本発明の実施形態にかかる半導体装置を含む情報処理システム500の概略的な構成を示すブロック図である。
図5を参照すると、情報処理システム500は、本発明の実施形態により構成された半導体装置の中から一つ以上を含む。
他の実施形態で、情報処理システム500は、本発明の実施形態による、1つ以上の技術を使用したり、実行したりする。
多様な実施形態で、情報処理システム500は、例えばラップトップ、デスクトップ、ワークステーション、サーバ、ブレードサーバ、個人携帯情報端末、スマートフォン、タブレット、及び他の適切なコンピュータのようなコンピューティング装置又は仮想マシン若しくはその仮想コンピューティング装置などを含む。
多様な実施形態で、情報処理システム500は、ユーザー(図示せず)によって使用される。
本発明の実施形態による情報処理システム500は、中央処理装置(CPU)、ロジック又はプロセッサ510をさらに含む。
一部の実施形態で、プロセッサ510は、一つ以上の機能ユニットブロック(FUB)、又はこれらの実施形態で、組み合わせ論理ブロックは、多様なブール論理演算(例えば、NAND、NOR、NOT、XOR)、安定化論理装置(例えば、フリップフロップ、ラッチ)、他の論理装置、又はこれらの組み合わせを含む。
これらの組み合わせ論理演算は、所望の結果を達成するために、入力信号を処理するように、単純又は複雑な方法で構成される。
同期式組み合わせ論理演算のいくつかの例を説明したが、本発明の実施形態は、そのように限定されず、非同期演算又はこれらの組み合わせを含むことができるものと理解されるべきである。
一実施形態で、組み合わせ論理演算は、複数の相補型金属酸化物半導体(CMOS)トランジスタを含む。
多様な実施形態で、これらのCMOSトランジスタは、論理動作を実行するゲートにアレンジ(arrange)されうるが、他の技術が使用することができ、本発明の実施形態の範囲内に存在するものと理解される。
本発明の実施形態による情報処理システム500は、揮発性メモリ520(例えば、ランダムアクセスメモリ(RAM))をさらに含む。
本発明の実施形態による情報処理システム500は、不揮発性メモリ530(例えば、ハードドライブ、光メモリ、NAND又はフラッシュメモリ)をさらに含む。
一部の実施形態で、揮発性メモリ520、不揮発性メモリ530、又はこれらの組み合わせ、若しくは一部は、「ストレージ媒体」と称される。
多様な実施形態で、揮発性メモリ520及び/又は不揮発性メモリ530は、半永久的又は実質的に永続的な形態でデータを格納するように構成される。
多様な実施形態で、情報処理システム500は、情報処理システム500が通信ネットワークの一部であり、通信ネットワークを介して通信できるように構成された一つ以上のネットワークインターフェース540を含む。
Wi−Fiプロトコルの例は、IEEE 802.11n,IEEE802.11gを含み得るが、これに限定されない。
セルラープロトコルの例は、IEEE 802.16m(別名Wireless−MAN(Metropolitan Area Network)Advanced,LTE(Long Term Evolution)Advanced,GSM(登録商標)(Global System for Mobile Communications)Evolution)の向上したデータレートを含むが、これらに限定されない。
有線プロトコルの例は、IEEE802.3(別名、イーサネット(登録商標))、ファイバーチャネル、電力線通信(例えば、HomePlug、IEEE 1901)を含み得るが、これに限定されない。
上記内容は、本発明の実施形態を制限しない、いくつかの例示に過ぎないことと理解されるべきである。
本発明の実施形態による情報処理システム500は、ユーザーインターフェースユニット550(例えば、ディスプレイアダプタ、ハプティックインターフェース、ヒューマンインターフェース装置)をさらに含む。
多様な実施形態で、このユーザーインターフェースユニット550は、ユーザーから入力を受信するか、及び/又はユーザーに出力を提供するように構成される。
ユーザーとの相互作用を提供するために、他の種類の装置が使用することもあり得る。
たとえば、ユーザーに提供されるフィードバックは、任意の形態の感覚フィードバック、例えば視覚フィードバック、聴覚フィードバック、又は触覚フィードバックであり、ユーザーからの入力は、音響、音声、又は触覚入力を含む任意の形で受信される。
多様な実施形態で、情報処理システム500は、1つ以上の他のハードウェア装置560又はハードウェアの構成要素(例えば、ディスプレイ又はモニター、キーボード、マウス、カメラ、指紋リーダー(fingerprint reader)、ビデオプロセッサ)を含む。
上記内容は、本発明の実施形態を制限しない、いくつかの例示に過ぎないと理解されるべきである。
本発明の実施形態による情報処理システム500は、一つ以上のシステムバス505をさらに含む。
このような実施形態で、システムバス505は、プロセッサ510、揮発性メモリ520、不揮発性メモリ530、ネットワークインターフェース540、ユーザーインターフェースユニット550、及び一つ以上のハードウェア装置(構成要素)560を通信可能に接続するように構成される。
プロセッサ510によって処理されたデータ又は不揮発性メモリ530の外部から入力されたデータは、不揮発性メモリ530又は揮発性メモリ520に格納される。
多様な実施形態で、情報処理システム500は、1つ以上のソフトウェア(構成要素)570を含むか、実行する。
一部の実施形態で、ソフトウェア(の構成要素)570は、オペレーティングシステム(OS)及び/又はアプリケーションを含む。
いくつかの実施形態で、OSは、一つ以上のサービスをアプリケーションに提供し、アプリケーションと情報処理システムの多様なハードウェア構成要素(例えば、プロセッサ510、ネットワークインターフェース540)との間の仲介者として管理又は動作するように構成される。
このような実施形態で、情報処理システム500は、ローカル(例えば、不揮発性メモリ530内に)に設置され、プロセッサ510によって直接実行され、OSと直接相互作用するように構成される一つ以上の固有アプリケーションを含む。
このような実施形態で、ネイティブアプリケーションは、プリコンパイル(pre−compile)されたマシン実行可能コードを含む。
一部の実施形態で、ネイティブアプリケーションは、スクリプトインタープリタ(たとえば、Cシェル(csh)、AppleScript、オートホットキー(AutoHotkey))又は仮想実行マシン(VM、例えば、Java(登録商標)仮想マシン、Microsoft(登録商標)共通言語ランタイム)を含む。
ソース又はオブジェクトコードを実行可能なコードに変換して、プロセッサ510によって実行される。
上述した半導体装置は、多様なパッケージング技術を使用してカプセル化される。
例えば、本発明の実施形態にかかる半導体デバイスは、パッケージオンパッケージ(POP)技術、ボールグリッドアレイ(BGA)技術、チップスケールパッケージ(CSP)技術、プラスチックのいずれか一つを使用してカプセル化される。
プラスチックリードチップキャリア(PLCC)技術、プラスチックデュアルインラインパッケージ(PDIP)技術、ダイインワッフルパック技術、ダイインウェハーフォーム技術、チップオンボード(COB)技術、セラミックデュアルインラインパッケージ(CERDIP)技術、PMQFP(plastic metric quad flat package)技術、PQFP(plastic quad flat package)技術、SOP(small outline package)技術、SSOP(shrink small outline package)技術、薄型スモールアウトラインパッケージ(TSOP)技術、TQFP(thin quad flat package)技術、 SIP(system in package)技術、マルチチップパッケージ(MCP)技術、ウェハーレベル製造されたパッケージ(WFP)技術、ウェハーレベル処理されたスタックパッケージ(WSP)技術、又は当業者に知られている他の技術を使用してカプセル化される。
方法の段階は、入力データを操作して出力を生成することにより、機能を遂行するためにコンピュータプログラムを実行する1つ以上のプログラム可能なプロセッサによって実行される。
方法の段階は、また、特殊目的論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)又はASIC(特定用途向け集積回路)によって実行され、装置が具現される。
多様な実施形態で、コンピュータ読み出し可能媒体は、実行されるときに、装置をして方法の段階の少なくとも一部を実行させる命令語を含む。
一部の実施形態で、コンピュータ読み出し可能媒体は、磁気媒体、光学媒体、他の媒体又はこれらの組み合わせ(例えば、CD−ROM、ハードドライブ、読み出し専用メモリ、フラッシュドライブ)に含まれる。
このような実施形態で、コンピュータ読み出し可能媒体は、有形的かつ非一時的に具現された製造物品であり得る。
尚、本発明は、上述の実施形態に限られるものではない。本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
100、200、300 システム
102 ホスト処理装置(プロセッサ)
104 再プログラム可能なオフロード処理装置(ROPD)
106 入出力(I/O)システム
112 コンピューティング装置
114 (分散)ストレージシステム(データノード)(ストレージ媒体)
180 ストレージ装置
198 チャンク
202 オフロード処理回路
204 メモリ
212 入力データ
214 出力データ
222 メモリインターフェース回路
224 メモリバッファ回路(バッファ)
226 エラーコード計算回路(ECCC)
228 アドレスコントローラ
230 インデックステーブル
232 ホストインターフェース
242 係数テーブル
244 乗算器
246 加算器
252 データエレメント
254 誤り訂正符号

Claims (20)

  1. 誤り訂正符号の加速のための装置であって、
    ホスト処理装置から前記誤り訂正符号の加速のための装置に、複数のデータエレメントと関連した誤り訂正符号を計算するように指示するオフロード命令語を受信するように構成されるホストインターフェース回路と、
    前記複数のデータエレメント(data element)を受信するように構成されるメモリインターフェース回路と、
    前記複数のデータエレメントを一時的に格納するように構成される複数のメモリバッファ回路と、
    前記ホスト処理装置による追加の処理なしに、前記誤り訂正符号を、少なくとも部分的に計算するように構成される複数のエラーコード計算回路と、を備えることを特徴とする誤り訂正符号加速装置。
  2. 前記誤り訂正符号の加速のための装置は、前記複数のデータエレメントを、サブ部分(sub−portions)に分割し、
    前記複数のデータエレメントのサブ部分によって多重パス(multiple passes)を実行し、
    誤り訂正符号を作成するために、前記多重パスの各パスの出力を集約することを特徴とする請求項1に記載の誤り訂正符号加速装置。
  3. 前記メモリインターフェース回路は、前記複数のエラーコード計算回路の出力を外部メモリに自動的に記入するように構成されることを特徴とする請求項1に記載の誤り訂正符号加速装置。
  4. 前記複数のデータエレメントは、複数のデータノードと関連付けられ、
    前記複数のデータノードと前記複数のエラーコード計算回路との間に相関性が存在するように、前記複数のエラーコード計算回路内の数が、前記データノードの数と一致するように再構成可能であることを特徴とする請求項1に記載の誤り訂正符号加速装置。
  5. 前記複数のエラーコード計算回路は、乗算回路と加算回路が交互するツリー(Tree)を含むことを特徴とする請求項1に記載の誤り訂正符号加速装置。
  6. 前記乗算回路は、ルックアップテーブルを含み、
    前記加算回路は、XORゲートを含むことを特徴とする請求項5に記載の誤り訂正符号加速装置。
  7. 前記複数のエラーコード計算回路は、前記ホスト処理装置によって再プログラム可能(reprogrammable)であることを特徴とする請求項1に記載の誤り訂正符号加速装置。
  8. 前記エラーコードは、最小ストレージ再生成(Minimum Storage Regenerating:MSR)コードを含むことを特徴とする請求項1に記載の誤り訂正符号加速装置。
  9. 誤り訂正符号の加速のためのシステムであって、
    複数のデータエレメントを格納するように構成されるメモリと、
    前記複数のデータエレメントの少なくとも一部に基づいて、誤り訂正符号を計算するように構成される再プログラム可能な処理装置と、
    誤り訂正符号の計算を再プログラム可能な処理装置にオフロードするように構成されたホスト処理装置と、を備え、
    前記再プログラム可能な処理装置は、前記誤り訂正符号を少なくとも部分的に計算し、前記複数のデータエレメントの数に基づいて再構成される再構成可能なパイプラインを含むことを特徴とする誤り訂正符号加速システム。
  10. 前記ホスト処理装置は、動作中に、前記誤り訂正符号の計算を再プログラム可能な処理装置にオフロードするための要請を生成する命令語の計算スレッドを実行し、
    前記再プログラム可能な処理装置を制御するための命令語のコールバックスレッドを生成し、
    前記複数のデータエレメントを、前記メモリから読み出すか、前記誤り訂正符号を前記メモリから読み出すための命令語の少なくとも一つの入出力(I/O)スレッドを生成することを特徴とする請求項9に記載の誤り訂正符号加速システム。
  11. 前記ホスト処理装置が、パリティデータエレメント(parity data element)を生成するように構成される場合、
    オフロード要請のエンキューイング(enqueuing)することに応答して計算スレッドを停止させ、
    前記再プログラム可能な処理装置が、前記の誤り訂正符号を計算したことを示す前記コールバックスレッドに応答して、前記計算スレッドを再起動し、
    前記入出力(I/O)スレッドが、前記誤り訂正符号を前記パリティデータエレメントとしてメモリに書き込むようにすることを特徴とする請求項10に記載の誤り訂正符号加速システム。
  12. 前記ホスト処理装置が、データエレメントを再構成するように構成される場合、
    前記入出力(I/O)スレッドが、前記メモリから前記再プログラム可能な処理装置へデータエレメントを読み込ませ、
    前記入出力(I/O)スレッドは、前記再プログラム可能な処理装置が前記データエレメントを受信したことを示すまで、前記計算スレッドを停止させ、
    前記再プログラム可能な処理装置が誤り訂正符号を計算すると、前記データエレメントが再構成されたとの命令語をユーザースレッドに通知することを特徴とする請求項11に記載の誤り訂正符号加速システム。
  13. 前記再プログラム可能な処理装置は、前記ホスト処理装置からオフロード命令を受信するように構成されるホストインターフェース回路と、
    前記複数のデータエレメントを受信するように構成されるメモリインターフェース回路と、
    前記複数のデータエレメントを一時的に格納するように構成される複数のメモリバッファ回路と、
    前記ホスト処理装置による追加の処理なしに、前記誤り訂正符号を少なくとも部分的に計算するように構成される複数のエラーコード計算回路と、を含むことを特徴とする請求項9に記載の誤り訂正符号加速システム。
  14. 前記ホスト処理装置と前記再プログラム可能な処理装置は、ダイレクトメモリアクセス(DMA)を介して通信するように構成されることを特徴とする請求項9に記載の誤り訂正符号加速システム。
  15. 前記メモリと前記再プログラム可能な処理装置は、ダイレクトメモリアクセス(DMA)を介して通信するように構成されることを特徴とする請求項9に記載の誤り訂正符号加速システム。
  16. 誤り訂正符号の加速のための装置であって、
    誤り訂正符号の計算をオフロード処理装置にオフロードするように構成されるホスト処理装置と、
    複数のストレージ装置からデータエレメントを書き込み及び読み出しをするよう構成される入出力(I/O)システムと、
    少なくとも部分的に複数のデータエレメントに基づいて、誤り訂正符号を計算するように構成されるオフロード処理装置と、を有し、
    前記オフロード処理装置は、前記複数のデータエレメントを受信するように構成されるメモリインターフェース回路と、
    前記複数のデータエレメントを一時的に格納するように構成される複数のメモリバッファ回路と、
    前記ホスト処理装置による追加の処理なしに、前記誤り訂正符号を、少なくとも部分的に計算するように構成される複数のエラーコード計算回路と、を含むことを特徴とする誤り訂正符号加速装置。
  17. 前記オフロード処理装置は、前記複数のデータエレメントを、サブ部分に分割し、
    前記複数のデータエレメントのサブ部分によって多重パスを実行し、
    誤り訂正符号を作成するために、前記多重パスの各パスの出力を集約するように構成されることを特徴とする請求項16に記載の誤り訂正符号加速装置。
  18. 前記複数のデータエレメントは、ストレージ装置の数と関連付けられ、
    前記複数のデータノードと前記複数のエラーコード計算回路との間に相関性が存在するように、前記複数のエラーコード計算回路内の数が、前記データノードの数と一致するように再構成可能であることを特徴とする請求項16に記載の誤り訂正符号加速装置。
  19. 前記複数のエラーコード計算回路は、乗算回路と加算回路が交互するツリーを含み、
    前記乗算回路は、ルックアップテーブルを含み、
    前記加算回路は、XORゲートを含むことを特徴とする請求項16に記載の誤り訂正符号加速装置。
  20. 前記オフロード処理装置は、エンコーディング要請に応答して、前記誤り訂正符号をパリティエレメントとして計算し、
    デコーディング要請に応答して、前記誤り訂正符号を再構築されたデータエレメントとして計算することを特徴とする請求項16に記載の誤り訂正符号加速装置。
JP2019222969A 2018-12-14 2019-12-10 誤り訂正符号加速装置及びシステム Active JP7356887B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862780185P 2018-12-14 2018-12-14
US62/780,185 2018-12-14
US16/271,777 US11061772B2 (en) 2018-12-14 2019-02-08 FPGA acceleration system for MSR codes
US16/271,777 2019-02-08

Publications (3)

Publication Number Publication Date
JP2020095722A true JP2020095722A (ja) 2020-06-18
JP2020095722A5 JP2020095722A5 (ja) 2022-12-13
JP7356887B2 JP7356887B2 (ja) 2023-10-05

Family

ID=71072501

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019222969A Active JP7356887B2 (ja) 2018-12-14 2019-12-10 誤り訂正符号加速装置及びシステム

Country Status (5)

Country Link
US (3) US11061772B2 (ja)
JP (1) JP7356887B2 (ja)
KR (1) KR102491112B1 (ja)
CN (1) CN111324479B (ja)
TW (1) TWI791891B (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018176238A1 (en) 2017-03-28 2018-10-04 Intel Corporation Technologies for hybrid field-programmable gate array-application-specific integrated circuit code acceleration
US11061772B2 (en) * 2018-12-14 2021-07-13 Samsung Electronics Co., Ltd. FPGA acceleration system for MSR codes
US11934330B2 (en) * 2020-05-08 2024-03-19 Intel Corporation Memory allocation for distributed processing devices
US11568089B2 (en) * 2020-08-31 2023-01-31 Frontiir Pte Ltd. Offloading operations from a primary processing device to a secondary processing device
US20220206855A1 (en) * 2020-12-29 2022-06-30 Advanced Micro Devices, Inc. Offloading computations from a processor to remote execution logic
US20230153023A1 (en) * 2021-11-15 2023-05-18 Samsung Electronics Co., Ltd. Storage device and method performing processing operation requested by host

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110239064A1 (en) * 2010-03-24 2011-09-29 Apple Inc. Management of a non-volatile memory based on test quality
US20140317222A1 (en) * 2012-01-13 2014-10-23 Hui Li Data Storage Method, Device and Distributed Network Storage System
US20170102899A1 (en) * 2010-02-26 2017-04-13 Apple Inc. Data partitioning scheme for non-volatile memories
US20180300201A1 (en) * 2017-04-17 2018-10-18 Intel Corporation Bypassing error correction code (ecc) processing based on software hint

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2695195B2 (ja) 1988-09-02 1997-12-24 三菱電機株式会社 誤り訂正回路
US7673222B2 (en) 2005-07-15 2010-03-02 Mediatek Incorporation Error-correcting apparatus including multiple error-correcting modules functioning in parallel and related method
DE112008004033T5 (de) * 2008-10-09 2012-01-19 Numonyx B.V. Virtualisiertes Ecc Nand
JP5422974B2 (ja) 2008-11-18 2014-02-19 富士通株式会社 誤り判定回路及び共有メモリシステム
WO2014131148A1 (zh) 2013-02-26 2014-09-04 北京大学深圳研究生院 一种最小存储再生码的编码和存储节点修复方法
US9021188B1 (en) 2013-03-15 2015-04-28 Virident Systems Inc. Small block write operations in non-volatile memory systems
US9710330B2 (en) 2014-10-15 2017-07-18 Empire Technology Development Llc Partial cloud data storage
US9547458B2 (en) 2014-12-24 2017-01-17 International Business Machines Corporation Intra-rack and inter-rack erasure code distribution
US10007587B2 (en) 2015-09-18 2018-06-26 Qualcomm Incorporated Systems and methods for pre-generation and pre-storage of repair fragments in storage systems
US20170179979A1 (en) 2015-12-18 2017-06-22 Netapp, Inc. Systems and Methods for Minimum Storage Regeneration Erasure Code Construction Using r-Ary Trees
US10452477B2 (en) 2016-08-26 2019-10-22 Netapp, Inc. Multiple node repair using high rate minimum storage regeneration erasure code
US11061772B2 (en) * 2018-12-14 2021-07-13 Samsung Electronics Co., Ltd. FPGA acceleration system for MSR codes

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170102899A1 (en) * 2010-02-26 2017-04-13 Apple Inc. Data partitioning scheme for non-volatile memories
US20110239064A1 (en) * 2010-03-24 2011-09-29 Apple Inc. Management of a non-volatile memory based on test quality
US20140317222A1 (en) * 2012-01-13 2014-10-23 Hui Li Data Storage Method, Device and Distributed Network Storage System
US20180300201A1 (en) * 2017-04-17 2018-10-18 Intel Corporation Bypassing error correction code (ecc) processing based on software hint

Also Published As

Publication number Publication date
US20200192757A1 (en) 2020-06-18
CN111324479A (zh) 2020-06-23
KR102491112B1 (ko) 2023-01-20
TWI791891B (zh) 2023-02-11
KR20200073978A (ko) 2020-06-24
TW202026871A (zh) 2020-07-16
US11061772B2 (en) 2021-07-13
JP7356887B2 (ja) 2023-10-05
CN111324479B (zh) 2022-08-09
US20210334162A1 (en) 2021-10-28
US20230367675A1 (en) 2023-11-16
US11726876B2 (en) 2023-08-15

Similar Documents

Publication Publication Date Title
JP7356887B2 (ja) 誤り訂正符号加速装置及びシステム
US10990478B2 (en) Flexible reliability coding for storage on a network
US10761931B2 (en) Inline reliability coding for storage on a network
US11086525B2 (en) Resilient external memory
US11940875B2 (en) System, device and method for storage device assisted low-bandwidth data repair
US10430336B2 (en) Lock-free raid implementation in multi-queue architecture
US11782844B2 (en) Vector processor storage
US9092152B1 (en) Data storage system employing a distributed compute engine memory controller with embedded logic and arithmetic functionality and method for data migration between high-performance computing architectures and data storage devices using the same
US11171671B2 (en) Reducing vulnerability window in key value storage server without sacrificing usable capacity
US9632831B2 (en) Distributed real-time computing framework using in-storage processing
CN108572812B (zh) 存储器加载和算术加载单元(alu)融合
US11568089B2 (en) Offloading operations from a primary processing device to a secondary processing device
WO2023208231A1 (zh) 一种内存数据读写方法、系统以及内存控制器
WO2020086850A2 (en) Flexible reliability coding for storage on a network
Le US 8,949,575 Β2

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221205

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221205

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20221205

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230307

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230605

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: 20230829

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230925

R150 Certificate of patent or registration of utility model

Ref document number: 7356887

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150