JP2020095722A - 誤り訂正符号加速装置及びシステム - Google Patents
誤り訂正符号加速装置及びシステム Download PDFInfo
- 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
Links
- 238000012937 correction Methods 0.000 title claims abstract description 109
- 238000012545 processing Methods 0.000 claims abstract description 76
- 238000004364 calculation method Methods 0.000 claims abstract description 40
- 239000000872 buffer Substances 0.000 claims abstract description 21
- 230000001133 acceleration Effects 0.000 claims description 26
- 230000008929 regeneration Effects 0.000 claims description 3
- 238000011069 regeneration method Methods 0.000 claims description 3
- 230000004044 response Effects 0.000 claims 4
- 238000000034 method Methods 0.000 description 26
- 238000005516 engineering process Methods 0.000 description 21
- 238000010586 diagram Methods 0.000 description 17
- 230000010365 information processing Effects 0.000 description 16
- 230000008569 process Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 6
- 239000004065 semiconductor Substances 0.000 description 6
- 239000007943 implant Substances 0.000 description 5
- 238000005192 partition Methods 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000003826 tablet Substances 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 239000000919 ceramic Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000013012 foaming technology Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000000087 stabilizing effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 235000012773 waffles Nutrition 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/079—Root cause analysis, i.e. error or fault diagnosis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1096—Parity calculation or recalculation after configuration or reconfiguration of the system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1012—Adding 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/1032—Simple parity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30079—Pipeline control instructions, e.g. multicycle NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/65—Purpose and implementation aspects
- H03M13/6575—Implementations 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
Description
分数「r=k/n」を符号レートとする。
分数「k’/k」(k’は、回復に必要なシンボルの数を表す)を受信効率という。
より詳細には、再生成符号は、回復中にダウンロード量を減らしながらも、既存の最大距離分離(Maximum Distance Separable:MDS)符号の格納効率を維持することを目標とする符号のクラスである。
この問題は、エンコードされた冗長性を管理するための通信が問題になる分散ストレージシステムにおいて発生する。
分散ストレージシステムは、ユーザーが数個のノードに情報を格納する分散データベース、又はユーザーが数個のピアネットワークのノードに情報を格納するコンピュータネットワークを表現するために、しばしば使用される。
分散ストレージシステムは、一般的に、エラー検出と訂正技術を使用する。
他の分散ストレージシステムは、他のミラーリングされたソースから当該ファイルのダウンロードを再び試みる。
従って、分散ストレージシステムが分散されるほど、誤り訂正を効率的に実行することが課題となっている。
しかし、開示した本内容は、多くの異なる形態で具体化され、ここで説明した実施形態に限定されるものとして解釈されてはならない。
むしろ、これらの例としての実施形態は、本開示が徹底かつ完全になるように提供され、開示した本主題の範囲を当業者に完全に伝えるはずである。
図面で、レイヤと領域のサイズ及び相対的なサイズは、明確にするために誇張され得、多様な図面で、同じ参照符号は、同じエレメントを示す。
一方、エレメントが他のエレメント又はレイヤに「直接」、「直接連結されて」又は「直接結合されて」と述べられるとき、介在するエレメント又はレイヤが存在しない。
同一の符号は、同一の構成要素を指す。ここで使用するように、「及び/又は」という用語は、一つ以上の、関連してリストされた項目の任意の組み合わせ、及びすべての組み合わせを含む。
これらの用語は、他のエレメント、構成要素、領域、レイヤ、又はセクションから一つのエレメント、構成要素、領域、レイヤ、又はセクションを区別するために使用する。
したがって、後述する第1のエレメント、構成要素、領域、レイヤ、又はセクションは、本発明の思想及び範囲を逸脱せずに、第2のエレメント、構成要素、領域、レイヤ、又はセクションを指すことができる。
空間的かつ相対的な用語は、図面で描写された方向に加えて使用又は動作において、装置の他の方向を含むように意図されたと理解されるだろう。
例えば、もし図面の装置が裏返されると、他の構成要素又は特徴の「下」、「下の」又は「特定の部分の下」で説明された構成要素は、他の構成要素又は特徴の「上」を向くようになる。
したがって、「下の」又は「特定の部分の下に」の例としての用語は、上又は下の方向の両方を含む。装置は、別の方法で向けられることができ(例えば、90度又は他の方向に回転される)、空間的かつ相対的な記述語は、それに応じて解釈されるべきである。
電気的な相対用語は、図面に図示された電圧又は電流に加えて使用中又は動作中の装置の異なる基準電圧を含むと理解されるだろう。
例えば、図面の装置又は信号が反転されたり、他の基準電圧、電流、又は電荷を使用する場合に、「高い」又は「プルアップ」で説明されたエレメントは、新しい基準電圧又は電流に比べて「低い」又は「プルダウン」されたものである。
したがって、例としての用語の「高い」は、相対的に低い電圧、高電圧又は電流のすべてを含む。
装置は、他の電気的基準フレームと本明細書で使用される電気的かつ相対的な記述語に基づいて解釈され得る。
本明細書で使用したように、文脈上明らかに別の意味を示していると判定されない限り、単数形「一つ」は、複数形も含むものと意図される。
「含む(comprise)」、及び「含んでいる(comprising)」という用語は、本明細書で使用するとき、これらの用語は、定められた特徴、整数、段階、動作、エレメント、及び/又は構成要素の存在を明示するが、一つ以上の他の特徴、整数、段階、動作(処理)、エレメント、構成要素、及び/又はそれらのグループの追加若しくは存在を不可能にしない。
このように、例えば、製造技術及び/又は許容誤差のような結果としての図面の形状からの変形が予想される。
したがって、例としての実施形態は、本明細書に示した特定の形状の領域に限定されると解釈されてはならず、例えば、製造からもたらされる形状の偏差を含むべきである。
例えば、長方形で図示した注入領域は、通常的に注入領域から注入していない領域へのバイナリ変化というより、円形若しくは曲線のフィーチャー(features)及び/又はエッジでの注入濃度の勾配を示すはずである。
同様に、注入によって形成された埋め立て領域は、埋め立て領域と注入が起こる表面との間の領域に若干の注入をもたらす。
したがって、図面に例示された領域は、本質的に概略であり、その形状はデバイスの領域の実際の形状を例示するものではなく、開示された本主題の範囲を制限しようとするものではない。
一般的に使用される、辞典に定義されたこれらの用語は、本明細書及び/又は関連技術の文脈からそれらの意味と一致する意味を有するものと解釈されるべきであり、本明細書において明らかに定義されない限り、理想化されたり過度に形式的な感覚で解釈されたりしてはならない。
図に示す実施形態で、システム100は、複数のノード又はストレージ装置180にわたってデータを格納する分散ストレージシステム114を含む。
多くの場合、これは、複数のノード又はストレージ装置にわたって冗長性又は誤り訂正(例えば、パリティ)を分散させることによって達成される。
しかし、ノード又はストレージ装置がオフライン状態になると(例えば、ネットワーク障害、ハードウェア障害などにより)データが損傷しているか、冗長性レベルが減少したかが、疑われる。
ストレージシステムが分散されるほど、このようなことの頻度は高くなる。
このような実施形態で、欠落したデータのピース(piece)(チャンク)は、残りのデータのピースに基づいた公式を使用して再生したり、再構成したりする。
コンピューティング装置112は、コンピュータ装置(例えば、コンピュータ、サーバ)を含む。
エラー(誤り)(たとえば、欠落されたデータチャンク)が発生する場合は、コンピューティング装置112は、一般的にエラーを検出し、可能であれば回復する責任を有する。
多様な実施形態で、コンピューティング装置112は、ユーザー(図示せず)によって使用される。
多様な実施形態で、コンピューティング装置112は、一つ以上のマシン実行可能命令若しくはソフトウェア、ファームウェア、又はこれらの組み合わせを実行するように構成されたプロセッサ102を含む。
コンピューティング装置112は、いくつかの実施形態で、1つ以上のデータを一時的に、又は永久的に、又は半永久的に、又はこれらの組み合わせで格納するように構成されたメモリ(図示せず)を含む。
さらに、メモリは、揮発性メモリ、不揮発性メモリ、又はこれらの組み合わせを含む。
多様な実施形態で、コンピューティング装置112は、半永久的又は実質的に永続的な形でデータを格納するように構成されたストレージ媒体114を含み、その媒体と通信を行う。
図に示した実施形態で、データは、チャンク198に分割される(例えば、D1、D2、D3、及びD4(図に示さず))。
なお、多様な実施形態で、コンピューティング装置112は、パリティチャンク(例えば、P1及びP2と命名された(図に示さず)チャンク198)のような一部の形態の冗長性をデータのチャンク198に適用できる。
同様に、冗長性データのチャンク198(P1及びP2)の数は、変数「R」又は「r」で記述される。
したがって、チャンク198の総計は、「K+R」になるようにする。
上記例示した実施形態で、「K」は「4」であり、「R」は「2」であり、「K+R」は「6」で記述したが、これらの内容は、単に本発明の実施形態を限定しないと理解するできである。
多様な実施形態で、ストレージ装置180の数は、チャンク198の数と同じではない。
多様な実施形態で、チャンク198は、欠落(例えば、ネットワークやハードウェアの故障)又はエラー(誤り)と関連付けられる。
図に示した実施形態で、チャンク198とそれぞれのストレージ装置180が突然利用できなくなると仮定する。
コンピューティング装置112は、エラーを検出するとき、欠落したチャンク198を再生成したり、そうではなければ、エラーを訂正したりしようと試みる。
これらの「K」(例えば、「4」)個のチャンクは、任意の「K+R」(例えば、「6」)個のチャンクから由来する。
例えば、チャンク198(D1、D2、D4及びP1)は、欠落されたチャンク198(D3)を再生成するために使用される。
つまり、スマート公式を使用してコンピューティング装置112は、全体のチャンク198(D1、D2、D4及びP1)を使用せずに、単にチャンク198(D1、D2、D4、P1及びP2)の一部のみを使用することにより、欠落したチャンク198(D3)を再生成する。
再生コードは、一般的に、より多くのストレージ装置180から情報を取得するが、非再生コードより、各ストレージ装置180から少ない情報を取得する。
上記内容は、本発明の実施形態が、制限されない単に一つの例としてのものと理解されるであろう。
逆に、再生技術が使用される場合に、12個のすべてのチャンク(この場合、「K+R」又はD)の内の一部が読み取られるが、各チャンクの一部(例えば、2.7MB)のみが使用されるため、ホスト装置に伝送された総量は、より少ない可能性がある(例えば、29.7MB)。
多様な例において、一般的に、再生コードの2つのクラス又はグループが存在する。
ストレージのオーバーヘッドが最小である場合に、これを最小ストレージ再生(Minimum Storage Regeneration:以下、MSR)コードという。
追加されたストレージのオーバーヘッドに対し回復帯域幅が最小である場合には、これを最小帯域幅再生(Minimum Bandwidth Regeneration:以下、MBR)コードと呼ぶ。
このような広範囲なカテゴリ内で、再生コードを実行するために、多様な特定の技術又は公式が使用される。
前述した内容は、本発明の実施形態を制限しない、いくつかの例としてのものと理解されるべきである。
各ストレージ装置180は、チャンク又は他の方法でデータを格納するように構成される。
図に示した実施形態で、ストレージ装置180は、ハードドライブ、ソリッド・ステート・ドライブ、又は揮発性メモリのような比較的通常のストレージ装置である。
本実施形態で、コンピューティング装置112は、ホストプロセッサ又はホスト処理装置102を含む。
多様な実施形態で、ホスト処理装置102は、中央処理装置(CPU)、装置固有のプロセッサ若しくはコントローラ・プロセッサ(例えば、ストレージ装置内から発見される)又は他の処理回路を含む。
多様な実施形態で、入出力(I/O)システム106は、(分散)ストレージシステム114と通信するように構成される。
いくつかの実施形態で、入出力(I/O)システム106は、ホスト処理装置102と、少なくとも部分的に、統合される。
他の実施形態で、入出力(I/O)システム106は、しばしばメモリ管理ユニット(MMU)、又はチップセットで表現される他の構成要素を含む。
上記内容は、本発明の実施形態を制限しない、いくつかの例としてのものと理解される。
多様な実施形態で、このROPD104は、特殊目的の論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)又はASIC(特定用途向け集積回路)を含む。
多様な実施形態で、ROPD104は、プログラミングが、一般的に固定されるように、外部装置によってプログラム可能である。
他の実施形態で、ROPD104は、ホスト処理装置102又は他の装置によって動的に再プログラム可能で、その回路(例えば、パイプライン)が、ランタイム時の条件に基づいて動的に調整される。
上記内容は、本発明の実施形態を制限しない、いくつかの例としてのものと理解される。
しばしば、CPUアーキテクチャ(例えば、SMP(Symmetric multiprocessing)、SIMD(Single Instruction Multiple Data))は、MSR(又はその他)コードの構成及び再構成の並列特性に比べて、並列処理量が制限されている。
また、誤り訂正符号(つまり、すべてのチャンク198へのアクセス)を生成するのに必要なメモリアクセスパターンは、ローカル性が欠如している。
したがって、通常のソフトウェアを使用するという概念は、プロセッサとメモリ帯域幅の高い利用を誘導し、他のタスクによく使用されうるホスト処理装置102の利用を防止する。
図に示した実施形態で、システム100は、少なくともこれらの問題を解決するためのエラー訂正符号化(例えば、構成及び再構成)のための加速システムを提供する。
このような実施形態で、エラー訂正符号化を実行しろという要請があったとき、ホスト処理装置102は、この要請をROPD104に伝達する。
ROPD104は、入出力(I/O)システム106を利用して、データエレメント(例えば、チャンク198又は他のサイズのデータ)にアクセスする。
完了したら、ROPD104は、動作の最終性をホスト処理装置102に伝達し、その後、ホスト処理装置102は、データ、誤り訂正符号にアクセスするか、単にその処理を実行する。
これらの実施形態で、ROPD104が誤り訂正符号を計算するうち、ホスト処理装置102は、他のタスクを実行できる。
一実施形態で、これは入出力(I/O)システム106で、メモリのマッピングされた部分を含む。
他の実施形態で、これは装置間(102と104)の直接通信を含む。
同様に、入出力(I/O)システム106及びROPD104は、ピアツーピアDMAプロトコルを介して通信する。
上記内容は、本発明の実施形態を制限しない、いくつかの例としてのものと理解されるべきである。
多様な実施形態で、システム200は、前述したように、再プログラム可能なオフロード処理装置(RPOD)を含む。
図に示した実施形態で、システム200は、オフロード処理回路202を含む。
多様な実施形態で、このオフロード処理回路202は、前述したように、再プログラムすることができる。
これらの実施形態で、オフロード処理回路202は、ホスト処理装置による追加処理なしに誤り訂正符号を計算するように構成される。
多様な実施形態で、ホストプロセッサは、システム200の外部に存在するか、又は別途のロジックブロック(例えば、SoC(system−on−a−chip)の一部として)に統合され得る。
多様な実施形態で、ホストインターフェース232は、DMAを介して少なくとも部分的に、又は全体的に通信できる。
一部の実施形態で、メモリ204は、DDR(double data rate)SDRAMのようなシステムメモリを含み得るが、上記内容は、本発明の実施形態を制限しない一つの例としてのものと理解されるべきである。
これらの実施形態で、メモリ204は、誤り訂正符号の計算(例えば、生成又は再構成)に使用されるデータエレメント(例えば、情報又はパリティチャンク)を格納するように構成される。
このような実施形態で、これらのデータエレメントは、入力データ212として格納される。
続いて、オフロード処理回路202は、パリティチャンク(誤り訂正符号の形態)を計算し、(出力データ214を)メモリ204に再び記入する。
最後に、情報及びパリティチャンクは(入出力システム又はホスト処理装置によって)異なるストレージノードに分配される。
その後、オフロード処理回路202は、再構築チャンク(誤り訂正符号)を計算し、これを出力データ214としてメモリ204に記入する。
最後に、再構築されたチャンクがホスト処理装置に伝送される。
図に示した実施形態で、メモリインターフェース回路222は、データエレメントを受信するマルチプレクサ(MUX)として示している。
同様に、デマルチプレクサ(DeMUX)は、データエレメントをメモリ204に記入する。
上記内容は、本発明の実施形態を制限しない一つの例としてのものと理解されるべきである。
特定の実施形態で、入力データ212は、効率的な512ビットのグループ化でオフロード処理回路202に到達し得るが、エレメント自体は8ビットであり得る。
このような実施形態で、メモリインターフェース回路222は、入力データ212を64個のデータエレメントに分割して、それらを個別(又は部分の)のバッファ224に格納する。
上記内容は、本発明の実施形態を制限しない一つの例としてのものと理解されるべきである。
いくつかの実施形態で、アドレスコントローラ228は、誤り訂正符号コンピューティングのためバッファ224からデータが読み出される方法を管理するように構成される。
いくつかの実施形態で、オフロード処理回路202は、バッファ224がアクセスする予め格納されたシーケンスを含むインデックステーブル230を含む。
これらのエラーコード計算回路226は、ホスト処理装置による追加処理なしに誤り訂正符号を計算するように構成される。
図に示した実施形態で、エラーコード計算回路226は、主に、多重加算回路(Multiple−add circuits)を含む。
多様な実施形態で、エラーコード計算回路226は、ルックアップテーブル又はビット単位XORゲートとして具体化される。
上記内容は、本発明の実施形態を制限しない、いくつかの例としての例であると理解されるべきである。
読み出しの段階で、データエレメント(再構築時のパリティエレメントを含む)は、メモリ204から読み出され、バッファ224に配置される。
処理段階中に、アドレスコントローラ228は、事前に格納されたインデックステーブル230に基づいて読み出されたメモリを制御し、「k」個のバッファ224から正確なデータスライスを同時に読み出す。
このデータは、誤り訂正計算のために、エラーコード計算回路226に供給される。
エラーコード計算回路226は、所望するパリティ計算又は情報の再構成技術(例えば、ガロアフィールド(GF)の計算)に対応する予め格納された係数テーブル242を含む。
エラーコード計算回路226は、また、速い乗算演算のために、「k」個の乗算ルックアップテーブル又は乗算器244を含む。
エラーコード計算回路226は、また、XOR又は加算器246ツリー構造を含む。
一実施形態で、それぞれの乗算器244は、一つのデータエレメント252(例えば、8ビットのデータ)を処理する。
究極的に、エラーコード計算回路226は、誤り訂正符号254(又は後述されるように、その一部)を生成又は出力する。
多様な実施形態で、誤り訂正符号254は、処理直後にメモリ204に再び書き込まれ得る。
XOR又は加算器246ツリーの次に、パイプライン段階をもう1つ追加するとみなすことができる。
このような実施形態で、システム200を不連続又はアトミック操作(atomic operations)と逆にパイプラインデータ処理に関与させることができる。
このような実施形態で、これは後述するように、マルチパスの動作を加速させる。
いくつかの実施形態で、データはバッファ224に読み出されるときに分割されるため、データの出力は、別途の出力パーティションでメモリ204に再び記入される。
このような実施形態で、システム200は、全体の入力データセットを処理するために、多数又は「p」のパスを使用でき、ここで、「p」は、各情報/パリティエレメントに対して分割された情報/パリティスライスの数と同じである。
このような実施形態で、システム200は、より大きなデータセットを、それぞれ「k」個以下のデータエレメントを有する「p」個のパーティションに分割できる。
このような実施形態で、それぞれのパスは、それぞれのパーティションに関連した誤り訂正符号を読み出し、処理及び記入することを含み得る。
このような実施形態で、可変データエレメントのサイズは、システム200によって処理される。
このような実施形態で、システム200のパイプラインは、処理量だけでなく、レイテンシを最適化するように動的に変更される。
このような実施形態で、エラーコード計算回路226の数は、データエレメントの数(最大ハードウェアの限界まで)と一致するように調整され得る。
このような実施形態で、乗算ルックアップテーブル又は乗算器244は、サイクルごとにアクセスされ得る。
データエレメント(したがって、データノード)に対するこの並列処理は、SIMD命令のオペランド(operand)の数が固定されている通常のCPUとは異なるため、オペランド自体が操作されて奇数個のデータエレメントを処理しなければならない。
図3Aは、ROPDのないシステム300の単純化されたバージョンを示し、一方、図3Bは、システム300内でのROPDの使用を示す。
図3A及び3Bは、本明細書で説明した誤り訂正符号の計算を利用するシステム300内での命令語又はソフトウェアスレッドの実行を示している。
このような実施形態で、ユーザースレッド302は、ホストプロセッサによって実行される。
図に示した実施形態で、システムは、命令語の計算スレッド312を処理し、入出力(I/O)キュー316を介してストレージ装置306と相互作用するLIB304を含む。
エンコーディング(パリティエレメントの構築)が要請されると、要請がエンコーディング動作324に到達するとき、パリティエレメントをそれぞれのストレージ媒体306に記入するために、ホスト処理装置は、エンコーディングを実行してから、入出力(I/O)キュー316及び入出力(I/O)スレッド317(個々のI/Oスレッド352)を制御する。
同様に、必要な残りのデータエレメント(パリティエレメントを含む)が入出力(I/O)スレッドによって完了キュー326にリターンされ、最終的にはデコーディング動作(ホストプロセッサによって実行される)に達するとき、デコーディング(データエレメントの再構築)が要請される。
再度、計算スレッド312は、ユーザースレッド302からの要請を処理する。
このような実施形態で、これはエンコーディング/デコーディングの計算をオフロード処理装置308にオフロードすることを含む。
このような実施形態で、計算スレッド312は、オフロード処理装置308と相互作用する。
例えば、エンコーディング、又はパリティの生成シナリオで、計算スレッド312は、エンコーディング要請を要請キュー322に配置する。
エンコーディング要請がエンコーディング処理324に到達すると、ホスト装置によって直接処理されず、計算スレッド312は、エンコーディング要請をオフロード処理装置308にオフロードする。
このような実施形態で、オフロード要請は、ハードウェア加速器(HW)要請キュー322又はオフロード要請キューに配置される。
要請がハードウェア加速器要請キュー322内に存在するにつれ、コールバックスレッド314は、ハードウェア加速器(オフロード処理装置)308にDMA要請をする。
ハードウェア加速器(オフロード処理装置)308は、前述したように、エラーコード計算回路342を含む。
完了すると、コールバックスレッド314は、計算スレッド312に再び報告し、これは、再びユーザースレッド302に報告される。
この時点で、入出力(I/O)スレッド317は、エンコーディングされたデータをストレージ306に記入する。
その後、要請を完了キュー326に配置する。
要請がデコーディング処理328に到達すると、ホスト装置によって直接処理される代わりに、計算スレッド312は、デコーディング要請をオフロード処理装置308にオフロードする。
一実施形態で、これは、コールバックスレッド314を介して追跡される。
このような実施形態で、オフロード要請を配置する。
オフロード処理装置308は、入出力(I/O)スレッド317からDMAを介して既存のデータエレメントを受信する。
要請がハードウェア加速器要請キュー322に存在するにつれて、コールバックスレッド314は、計算スレッド312及び/又はユーザースレッド302に再び報告する。
図4Aは、エンコーディング又はパリティ生成動作のタイミング図400を示し、図4Bは、デコーディング又は再構成動作のタイミング図401を示す。
多様な実施形態で、これらのタイミング図は、図3A及び3Bのシステム300によって生成される。
前述した説明は、本発明の実施形態を制限しない、単なる一つの例示に過ぎないことと理解されるべきである。
例示した実施形態で、符号404の行は、計算スレッド(404)の可能なタイミングを示している。
例示した実施形態で、符号406の行は、ユーザースレッドの可能なコールバック(コールバックスレッド)(406)を示している。
例示した実施形態で、符号408の行は、入出力(I/O)スレッド(408)の可能なタイミングを示している。
これらの実施形態で、ユーザースレッド(402)は、計算スレッドで入出力(I/O)の書き込み要請をキューイングし(Enq IO−Q)(ブロック412)、要請の完了を待機する(ブロック414)。
多様な実施形態で、ホスト装置は、完了を待機している間(ブロック414)、他の動作(図示せず)を実行する。
計算スレッド(404)は、完了を待機する(ブロック426)。
図に示した実施形態で、計算スレッド(404)は、入出力(I/O)要請を入出力(I/O)のキューにキューイングする(ENq IO−Q)(ブロック428)。
データが書き込まれることを待機してから(ブロック446)、入出力(I/O)スレッドは、ユーザースレッドに完了を通知する(ブロック448)。
上述した説明は、本発明の実施形態を制限しない、単なる一つの例示に過ぎないと理解されるべきである。
これらの実施形態で、ユーザースレッド(402)は、計算スレッドで入出力(I/O)読み取り要請をキューイングし(Enq IO−Q)(ブロック413)、続いて、要請の完了を待機する(ブロック415)。
多様な実施形態で、ホスト装置は、完了を待っている(ブロック415)間、他の動作(図示せず)を実行できる。
このような実施形態で、入出力(I/O)スレッド(408)は、入出力(I/O)要請をデキューイングすることにより、入出力(I/O)動作を実行し(Deq IO−Q)(ブロック442)、要請をストレージ装置に発行する(Issue IO)(ブロック444)。データが読み出されることを待ってから(ブロック447)、入出力(I/O)スレッドは、ハードウェア加速の要請をキューイングすることにより、コールバックスレッド406に完了を通知する(Enq Comp−Q)(ブロック449)。
上記内容は、開本発明の実施形態を制限しない、単なる一つの例示に過ぎないことと理解されるべきである。
図5を参照すると、情報処理システム500は、本発明の実施形態により構成された半導体装置の中から一つ以上を含む。
他の実施形態で、情報処理システム500は、本発明の実施形態による、1つ以上の技術を使用したり、実行したりする。
多様な実施形態で、情報処理システム500は、ユーザー(図示せず)によって使用される。
一部の実施形態で、プロセッサ510は、一つ以上の機能ユニットブロック(FUB)、又はこれらの実施形態で、組み合わせ論理ブロックは、多様なブール論理演算(例えば、NAND、NOR、NOT、XOR)、安定化論理装置(例えば、フリップフロップ、ラッチ)、他の論理装置、又はこれらの組み合わせを含む。
これらの組み合わせ論理演算は、所望の結果を達成するために、入力信号を処理するように、単純又は複雑な方法で構成される。
一実施形態で、組み合わせ論理演算は、複数の相補型金属酸化物半導体(CMOS)トランジスタを含む。
多様な実施形態で、これらのCMOSトランジスタは、論理動作を実行するゲートにアレンジ(arrange)されうるが、他の技術が使用することができ、本発明の実施形態の範囲内に存在するものと理解される。
本発明の実施形態による情報処理システム500は、不揮発性メモリ530(例えば、ハードドライブ、光メモリ、NAND又はフラッシュメモリ)をさらに含む。
一部の実施形態で、揮発性メモリ520、不揮発性メモリ530、又はこれらの組み合わせ、若しくは一部は、「ストレージ媒体」と称される。
多様な実施形態で、揮発性メモリ520及び/又は不揮発性メモリ530は、半永久的又は実質的に永続的な形態でデータを格納するように構成される。
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)を含み得るが、これに限定されない。
上記内容は、本発明の実施形態を制限しない、いくつかの例示に過ぎないことと理解されるべきである。
多様な実施形態で、このユーザーインターフェースユニット550は、ユーザーから入力を受信するか、及び/又はユーザーに出力を提供するように構成される。
ユーザーとの相互作用を提供するために、他の種類の装置が使用することもあり得る。
たとえば、ユーザーに提供されるフィードバックは、任意の形態の感覚フィードバック、例えば視覚フィードバック、聴覚フィードバック、又は触覚フィードバックであり、ユーザーからの入力は、音響、音声、又は触覚入力を含む任意の形で受信される。
上記内容は、本発明の実施形態を制限しない、いくつかの例示に過ぎないと理解されるべきである。
このような実施形態で、システムバス505は、プロセッサ510、揮発性メモリ520、不揮発性メモリ530、ネットワークインターフェース540、ユーザーインターフェースユニット550、及び一つ以上のハードウェア装置(構成要素)560を通信可能に接続するように構成される。
プロセッサ510によって処理されたデータ又は不揮発性メモリ530の外部から入力されたデータは、不揮発性メモリ530又は揮発性メモリ520に格納される。
一部の実施形態で、ソフトウェア(の構成要素)570は、オペレーティングシステム(OS)及び/又はアプリケーションを含む。
いくつかの実施形態で、OSは、一つ以上のサービスをアプリケーションに提供し、アプリケーションと情報処理システムの多様なハードウェア構成要素(例えば、プロセッサ510、ネットワークインターフェース540)との間の仲介者として管理又は動作するように構成される。
このような実施形態で、情報処理システム500は、ローカル(例えば、不揮発性メモリ530内に)に設置され、プロセッサ510によって直接実行され、OSと直接相互作用するように構成される一つ以上の固有アプリケーションを含む。
一部の実施形態で、ネイティブアプリケーションは、スクリプトインタープリタ(たとえば、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)技術、又は当業者に知られている他の技術を使用してカプセル化される。
方法の段階は、また、特殊目的論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)又はASIC(特定用途向け集積回路)によって実行され、装置が具現される。
一部の実施形態で、コンピュータ読み出し可能媒体は、磁気媒体、光学媒体、他の媒体又はこれらの組み合わせ(例えば、CD−ROM、ハードドライブ、読み出し専用メモリ、フラッシュドライブ)に含まれる。
このような実施形態で、コンピュータ読み出し可能媒体は、有形的かつ非一時的に具現された製造物品であり得る。
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)
- 誤り訂正符号の加速のための装置であって、
ホスト処理装置から前記誤り訂正符号の加速のための装置に、複数のデータエレメントと関連した誤り訂正符号を計算するように指示するオフロード命令語を受信するように構成されるホストインターフェース回路と、
前記複数のデータエレメント(data element)を受信するように構成されるメモリインターフェース回路と、
前記複数のデータエレメントを一時的に格納するように構成される複数のメモリバッファ回路と、
前記ホスト処理装置による追加の処理なしに、前記誤り訂正符号を、少なくとも部分的に計算するように構成される複数のエラーコード計算回路と、を備えることを特徴とする誤り訂正符号加速装置。 - 前記誤り訂正符号の加速のための装置は、前記複数のデータエレメントを、サブ部分(sub−portions)に分割し、
前記複数のデータエレメントのサブ部分によって多重パス(multiple passes)を実行し、
誤り訂正符号を作成するために、前記多重パスの各パスの出力を集約することを特徴とする請求項1に記載の誤り訂正符号加速装置。 - 前記メモリインターフェース回路は、前記複数のエラーコード計算回路の出力を外部メモリに自動的に記入するように構成されることを特徴とする請求項1に記載の誤り訂正符号加速装置。
- 前記複数のデータエレメントは、複数のデータノードと関連付けられ、
前記複数のデータノードと前記複数のエラーコード計算回路との間に相関性が存在するように、前記複数のエラーコード計算回路内の数が、前記データノードの数と一致するように再構成可能であることを特徴とする請求項1に記載の誤り訂正符号加速装置。 - 前記複数のエラーコード計算回路は、乗算回路と加算回路が交互するツリー(Tree)を含むことを特徴とする請求項1に記載の誤り訂正符号加速装置。
- 前記乗算回路は、ルックアップテーブルを含み、
前記加算回路は、XORゲートを含むことを特徴とする請求項5に記載の誤り訂正符号加速装置。 - 前記複数のエラーコード計算回路は、前記ホスト処理装置によって再プログラム可能(reprogrammable)であることを特徴とする請求項1に記載の誤り訂正符号加速装置。
- 前記エラーコードは、最小ストレージ再生成(Minimum Storage Regenerating:MSR)コードを含むことを特徴とする請求項1に記載の誤り訂正符号加速装置。
- 誤り訂正符号の加速のためのシステムであって、
複数のデータエレメントを格納するように構成されるメモリと、
前記複数のデータエレメントの少なくとも一部に基づいて、誤り訂正符号を計算するように構成される再プログラム可能な処理装置と、
誤り訂正符号の計算を再プログラム可能な処理装置にオフロードするように構成されたホスト処理装置と、を備え、
前記再プログラム可能な処理装置は、前記誤り訂正符号を少なくとも部分的に計算し、前記複数のデータエレメントの数に基づいて再構成される再構成可能なパイプラインを含むことを特徴とする誤り訂正符号加速システム。 - 前記ホスト処理装置は、動作中に、前記誤り訂正符号の計算を再プログラム可能な処理装置にオフロードするための要請を生成する命令語の計算スレッドを実行し、
前記再プログラム可能な処理装置を制御するための命令語のコールバックスレッドを生成し、
前記複数のデータエレメントを、前記メモリから読み出すか、前記誤り訂正符号を前記メモリから読み出すための命令語の少なくとも一つの入出力(I/O)スレッドを生成することを特徴とする請求項9に記載の誤り訂正符号加速システム。 - 前記ホスト処理装置が、パリティデータエレメント(parity data element)を生成するように構成される場合、
オフロード要請のエンキューイング(enqueuing)することに応答して計算スレッドを停止させ、
前記再プログラム可能な処理装置が、前記の誤り訂正符号を計算したことを示す前記コールバックスレッドに応答して、前記計算スレッドを再起動し、
前記入出力(I/O)スレッドが、前記誤り訂正符号を前記パリティデータエレメントとしてメモリに書き込むようにすることを特徴とする請求項10に記載の誤り訂正符号加速システム。 - 前記ホスト処理装置が、データエレメントを再構成するように構成される場合、
前記入出力(I/O)スレッドが、前記メモリから前記再プログラム可能な処理装置へデータエレメントを読み込ませ、
前記入出力(I/O)スレッドは、前記再プログラム可能な処理装置が前記データエレメントを受信したことを示すまで、前記計算スレッドを停止させ、
前記再プログラム可能な処理装置が誤り訂正符号を計算すると、前記データエレメントが再構成されたとの命令語をユーザースレッドに通知することを特徴とする請求項11に記載の誤り訂正符号加速システム。 - 前記再プログラム可能な処理装置は、前記ホスト処理装置からオフロード命令を受信するように構成されるホストインターフェース回路と、
前記複数のデータエレメントを受信するように構成されるメモリインターフェース回路と、
前記複数のデータエレメントを一時的に格納するように構成される複数のメモリバッファ回路と、
前記ホスト処理装置による追加の処理なしに、前記誤り訂正符号を少なくとも部分的に計算するように構成される複数のエラーコード計算回路と、を含むことを特徴とする請求項9に記載の誤り訂正符号加速システム。 - 前記ホスト処理装置と前記再プログラム可能な処理装置は、ダイレクトメモリアクセス(DMA)を介して通信するように構成されることを特徴とする請求項9に記載の誤り訂正符号加速システム。
- 前記メモリと前記再プログラム可能な処理装置は、ダイレクトメモリアクセス(DMA)を介して通信するように構成されることを特徴とする請求項9に記載の誤り訂正符号加速システム。
- 誤り訂正符号の加速のための装置であって、
誤り訂正符号の計算をオフロード処理装置にオフロードするように構成されるホスト処理装置と、
複数のストレージ装置からデータエレメントを書き込み及び読み出しをするよう構成される入出力(I/O)システムと、
少なくとも部分的に複数のデータエレメントに基づいて、誤り訂正符号を計算するように構成されるオフロード処理装置と、を有し、
前記オフロード処理装置は、前記複数のデータエレメントを受信するように構成されるメモリインターフェース回路と、
前記複数のデータエレメントを一時的に格納するように構成される複数のメモリバッファ回路と、
前記ホスト処理装置による追加の処理なしに、前記誤り訂正符号を、少なくとも部分的に計算するように構成される複数のエラーコード計算回路と、を含むことを特徴とする誤り訂正符号加速装置。 - 前記オフロード処理装置は、前記複数のデータエレメントを、サブ部分に分割し、
前記複数のデータエレメントのサブ部分によって多重パスを実行し、
誤り訂正符号を作成するために、前記多重パスの各パスの出力を集約するように構成されることを特徴とする請求項16に記載の誤り訂正符号加速装置。 - 前記複数のデータエレメントは、ストレージ装置の数と関連付けられ、
前記複数のデータノードと前記複数のエラーコード計算回路との間に相関性が存在するように、前記複数のエラーコード計算回路内の数が、前記データノードの数と一致するように再構成可能であることを特徴とする請求項16に記載の誤り訂正符号加速装置。 - 前記複数のエラーコード計算回路は、乗算回路と加算回路が交互するツリーを含み、
前記乗算回路は、ルックアップテーブルを含み、
前記加算回路は、XORゲートを含むことを特徴とする請求項16に記載の誤り訂正符号加速装置。 - 前記オフロード処理装置は、エンコーディング要請に応答して、前記誤り訂正符号をパリティエレメントとして計算し、
デコーディング要請に応答して、前記誤り訂正符号を再構築されたデータエレメントとして計算することを特徴とする請求項16に記載の誤り訂正符号加速装置。
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)
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)
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)
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 |
-
2019
- 2019-02-08 US US16/271,777 patent/US11061772B2/en active Active
- 2019-09-18 TW TW108133489A patent/TWI791891B/zh active
- 2019-10-11 KR KR1020190126494A patent/KR102491112B1/ko active IP Right Grant
- 2019-11-20 CN CN201911143197.3A patent/CN111324479B/zh active Active
- 2019-12-10 JP JP2019222969A patent/JP7356887B2/ja active Active
-
2021
- 2021-07-02 US US17/367,315 patent/US11726876B2/en active Active
-
2023
- 2023-07-17 US US18/223,019 patent/US20230367675A1/en active Pending
Patent Citations (4)
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 |