(57)【要約】【課題】散ストレージシステムにおいて誤り訂正の演算時に、ホストによる追加の処理なしに、誤り訂正符号を計算できる装置及びシステムを提供する。【解決手段】本発明による誤り訂正符号加速装置は、ホスト処理装置から誤り訂正符号の加速のための装置に、複数のデータエレメントと関連した誤り訂正符号を計算するように指示するオフロード命令語を受信するように構成されるホストインターフェース回路と、前記複数のデータエレメントを受信するように構成されるメモリインターフェース回路と、前記複数のデータエレメントを一時的に格納するように構成される複数のメモリバッファ回路と、前記ホスト処理装置による追加の処理なしに、前記誤り訂正符号を、少なくとも部分的に計算するように構成される複数のエラーコード計算回路と、を備える。【選択図】  図１
2020095722.tif 000002
【特許請求の範囲】
【請求項１】
誤り訂正符号の加速のための装置であって、
ホスト処理装置から前記誤り訂正符号の加速のための装置に、複数のデータエレメントと関連した誤り訂正符号を計算するように指示するオフロード命令語を受信するように構成されるホストインターフェース回路と、
前記複数のデータエレメント（ｄａｔａ  ｅｌｅｍｅｎｔ）を受信するように構成されるメモリインターフェース回路と、
前記複数のデータエレメントを一時的に格納するように構成される複数のメモリバッファ回路と、
前記ホスト処理装置による追加の処理なしに、前記誤り訂正符号を、少なくとも部分的に計算するように構成される複数のエラーコード計算回路と、を備えることを特徴とする誤り訂正符号加速装置。
【請求項２】
前記誤り訂正符号の加速のための装置は、前記複数のデータエレメントを、サブ部分（ｓｕｂ−ｐｏｒｔｉｏｎｓ）に分割し、
前記複数のデータエレメントのサブ部分によって多重パス（ｍｕｌｔｉｐｌｅ  ｐａｓｓｅｓ）を実行し、
誤り訂正符号を作成するために、前記多重パスの各パスの出力を集約することを特徴とする請求項１に記載の誤り訂正符号加速装置。
【請求項３】
前記メモリインターフェース回路は、前記複数のエラーコード計算回路の出力を外部メモリに自動的に記入するように構成されることを特徴とする請求項１に記載の誤り訂正符号加速装置。
【請求項４】
前記複数のデータエレメントは、複数のデータノードと関連付けられ、
前記複数のデータノードと前記複数のエラーコード計算回路との間に相関性が存在するように、前記複数のエラーコード計算回路内の数が、前記データノードの数と一致するように再構成可能であることを特徴とする請求項１に記載の誤り訂正符号加速装置。
【請求項５】
前記複数のエラーコード計算回路は、乗算回路と加算回路が交互するツリー（Ｔｒｅｅ）を含むことを特徴とする請求項１に記載の誤り訂正符号加速装置。
【請求項６】
前記乗算回路は、ルックアップテーブルを含み、
前記加算回路は、ＸＯＲゲートを含むことを特徴とする請求項５に記載の誤り訂正符号加速装置。
【請求項７】
前記複数のエラーコード計算回路は、前記ホスト処理装置によって再プログラム可能（ｒｅｐｒｏｇｒａｍｍａｂｌｅ）であることを特徴とする請求項１に記載の誤り訂正符号加速装置。
【請求項８】
前記エラーコードは、最小ストレージ再生成（Ｍｉｎｉｍｕｍ  Ｓｔｏｒａｇｅ  Ｒｅｇｅｎｅｒａｔｉｎｇ：ＭＳＲ）コードを含むことを特徴とする請求項１に記載の誤り訂正符号加速装置。
【請求項９】
誤り訂正符号の加速のためのシステムであって、
複数のデータエレメントを格納するように構成されるメモリと、
前記複数のデータエレメントの少なくとも一部に基づいて、誤り訂正符号を計算するように構成される再プログラム可能な処理装置と、
誤り訂正符号の計算を再プログラム可能な処理装置にオフロードするように構成されたホスト処理装置と、を備え、
前記再プログラム可能な処理装置は、前記誤り訂正符号を少なくとも部分的に計算し、前記複数のデータエレメントの数に基づいて再構成される再構成可能なパイプラインを含むことを特徴とする誤り訂正符号加速システム。
【請求項１０】
前記ホスト処理装置は、動作中に、前記誤り訂正符号の計算を再プログラム可能な処理装置にオフロードするための要請を生成する命令語の計算スレッドを実行し、
前記再プログラム可能な処理装置を制御するための命令語のコールバックスレッドを生成し、
前記複数のデータエレメントを、前記メモリから読み出すか、前記誤り訂正符号を前記メモリから読み出すための命令語の少なくとも一つの入出力（Ｉ／Ｏ）スレッドを生成することを特徴とする請求項９に記載の誤り訂正符号加速システム。
【請求項１１】
前記ホスト処理装置が、パリティデータエレメント（ｐａｒｉｔｙ  ｄａｔａ  ｅｌｅｍｅｎｔ）を生成するように構成される場合、
オフロード要請のエンキューイング（ｅｎｑｕｅｕｉｎｇ）することに応答して計算スレッドを停止させ、
前記再プログラム可能な処理装置が、前記の誤り訂正符号を計算したことを示す前記コールバックスレッドに応答して、前記計算スレッドを再起動し、
前記入出力（Ｉ／Ｏ）スレッドが、前記誤り訂正符号を前記パリティデータエレメントとしてメモリに書き込むようにすることを特徴とする請求項１０に記載の誤り訂正符号加速システム。
【請求項１２】
前記ホスト処理装置が、データエレメントを再構成するように構成される場合、
前記入出力（Ｉ／Ｏ）スレッドが、前記メモリから前記再プログラム可能な処理装置へデータエレメントを読み込ませ、
前記入出力（Ｉ／Ｏ）スレッドは、前記再プログラム可能な処理装置が前記データエレメントを受信したことを示すまで、前記計算スレッドを停止させ、
前記再プログラム可能な処理装置が誤り訂正符号を計算すると、前記データエレメントが再構成されたとの命令語をユーザースレッドに通知することを特徴とする請求項１１に記載の誤り訂正符号加速システム。
【請求項１３】
前記再プログラム可能な処理装置は、前記ホスト処理装置からオフロード命令を受信するように構成されるホストインターフェース回路と、
前記複数のデータエレメントを受信するように構成されるメモリインターフェース回路と、
前記複数のデータエレメントを一時的に格納するように構成される複数のメモリバッファ回路と、
前記ホスト処理装置による追加の処理なしに、前記誤り訂正符号を少なくとも部分的に計算するように構成される複数のエラーコード計算回路と、を含むことを特徴とする請求項９に記載の誤り訂正符号加速システム。
【請求項１４】
前記ホスト処理装置と前記再プログラム可能な処理装置は、ダイレクトメモリアクセス（ＤＭＡ）を介して通信するように構成されることを特徴とする請求項９に記載の誤り訂正符号加速システム。
【請求項１５】
前記メモリと前記再プログラム可能な処理装置は、ダイレクトメモリアクセス（ＤＭＡ）を介して通信するように構成されることを特徴とする請求項９に記載の誤り訂正符号加速システム。
【請求項１６】
誤り訂正符号の加速のための装置であって、
誤り訂正符号の計算をオフロード処理装置にオフロードするように構成されるホスト処理装置と、
複数のストレージ装置からデータエレメントを書き込み及び読み出しをするよう構成される入出力（Ｉ／Ｏ）システムと、
少なくとも部分的に複数のデータエレメントに基づいて、誤り訂正符号を計算するように構成されるオフロード処理装置と、を有し、
前記オフロード処理装置は、前記複数のデータエレメントを受信するように構成されるメモリインターフェース回路と、
前記複数のデータエレメントを一時的に格納するように構成される複数のメモリバッファ回路と、
前記ホスト処理装置による追加の処理なしに、前記誤り訂正符号を、少なくとも部分的に計算するように構成される複数のエラーコード計算回路と、を含むことを特徴とする誤り訂正符号加速装置。
【請求項１７】
前記オフロード処理装置は、前記複数のデータエレメントを、サブ部分に分割し、
前記複数のデータエレメントのサブ部分によって多重パスを実行し、
誤り訂正符号を作成するために、前記多重パスの各パスの出力を集約するように構成されることを特徴とする請求項１６に記載の誤り訂正符号加速装置。
【請求項１８】
前記複数のデータエレメントは、ストレージ装置の数と関連付けられ、
前記複数のデータノードと前記複数のエラーコード計算回路との間に相関性が存在するように、前記複数のエラーコード計算回路内の数が、前記データノードの数と一致するように再構成可能であることを特徴とする請求項１６に記載の誤り訂正符号加速装置。
【請求項１９】
前記複数のエラーコード計算回路は、乗算回路と加算回路が交互するツリーを含み、
前記乗算回路は、ルックアップテーブルを含み、
前記加算回路は、ＸＯＲゲートを含むことを特徴とする請求項１６に記載の誤り訂正符号加速装置。
【請求項２０】
前記オフロード処理装置は、エンコーディング要請に応答して、前記誤り訂正符号をパリティエレメントとして計算し、
デコーディング要請に応答して、前記誤り訂正符号を再構築されたデータエレメントとして計算することを特徴とする請求項１６に記載の誤り訂正符号加速装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データストレージに関し、特に、誤り訂正符号の加速のための装置及びシステムに関する。
【背景技術】
【０００２】
符号化理論において、消去コード（Ｅｒａｓｕｒｅ  ｃｏｄｅ）は、（ビットエラー（誤り）の代わりに）ビット消去を想定した前方誤り訂正（Ｆｏｒｗａｒｄ  Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ：ＦＥＣ）符号であり、「ｋ」個のシンボルのメッセージを「ｎ」個のシンボルを有する、もっと長いメッセージ（符号語）に変換して、元のメッセージが「ｎ」個のシンボルのサブセットから回復されることができる。
分数「ｒ＝ｋ／ｎ」を符号レートとする。
分数「ｋ’／ｋ」（ｋ’は、回復に必要なシンボルの数を表す）を受信効率という。
【０００３】
再生成符号（Ｒｅｇｅｎｅｒａｔｉｎｇ  ｃｏｄｅｓ）は、従来のエンコードされたフラグメントから失われ、且つエンコードされたフラグメントを再構成（回復とも呼ばれる）する問題を扱う。
より詳細には、再生成符号は、回復中にダウンロード量を減らしながらも、既存の最大距離分離（Ｍａｘｉｍｕｍ  Ｄｉｓｔａｎｃｅ  Ｓｅｐａｒａｂｌｅ：ＭＤＳ）符号の格納効率を維持することを目標とする符号のクラスである。
この問題は、エンコードされた冗長性を管理するための通信が問題になる分散ストレージシステムにおいて発生する。
【０００４】
分散ストレージシステムは、一般的に情報がしばしば、コピーされた方法で一つ以上のノード又は装置に格納されるコンピュータネットワークである。
分散ストレージシステムは、ユーザーが数個のノードに情報を格納する分散データベース、又はユーザーが数個のピアネットワークのノードに情報を格納するコンピュータネットワークを表現するために、しばしば使用される。
分散ストレージシステムは、一般的に、エラー検出と訂正技術を使用する。
【０００５】
いくつかの分散ストレージシステムは、ファイルの一部が損傷されたり、利用できなかったりする場合、前方誤り訂正技術を使用して元のファイル、チャンク又はブロブ（Ｂｌｏｂ：バイナリラージオブジェクト）を回復する。
他の分散ストレージシステムは、他のミラーリングされたソースから当該ファイルのダウンロードを再び試みる。
従って、分散ストレージシステムが分散されるほど、誤り訂正を効率的に実行することが課題となっている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第９７１０３３０号明細書
【特許文献２】米国特許第９８９８１９６号明細書
【特許文献３】米国特許出願公開第２０１７０１７９９７９号明細書
【特許文献４】米国特許出願公開第２０１８００６０１６９号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は上記従来の分散ストレージシステムにおける課題点に鑑みてなされたものであって、本発明の目的は、分散ストレージシステムにおいて誤り訂正の演算時に、ホストによる追加の処理なしに、誤り訂正符号を計算できる装置及びシステムを提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するためになされた本発明による誤り訂正符号加速装置は、誤り訂正符号の加速のための装置であって、ホスト処理装置から前記誤り訂正符号の加速のための装置に、複数のデータエレメントと関連した誤り訂正符号を計算するように指示するオフロード命令語を受信するように構成されるホストインターフェース回路と、前記複数のデータエレメント（ｄａｔａ  ｅｌｅｍｅｎｔ）を受信するように構成されるメモリインターフェース回路と、前記複数のデータエレメントを一時的に格納するように構成される複数のメモリバッファ回路と、前記ホスト処理装置による追加の処理なしに、前記誤り訂正符号を、少なくとも部分的に計算するように構成される複数のエラーコード計算回路と、を備えることを特徴とする。
【０００９】
上記目的を達成するためになされた本発明による誤り訂正符号加速システムは、誤り訂正符号の加速のためのシステムであって、複数のデータエレメントを格納するように構成されるメモリと、前記複数のデータエレメントの少なくとも一部に基づいて、誤り訂正符号を計算するように構成される再プログラム可能な処理装置と、誤り訂正符号の計算を再プログラム可能な処理装置にオフロードするように構成されたホスト処理装置と、を備え、前記再プログラム可能な処理装置は、前記誤り訂正符号を少なくとも部分的に計算し、前記複数のデータエレメントの数に基づいて再構成される再構成可能なパイプラインを含むことを特徴とする。
【００１０】
また、上記目的を達成するためになされた本発明による誤り訂正符号加速装置は、誤り訂正符号の加速のための装置であって、誤り訂正符号の計算をオフロード処理装置にオフロードするように構成されるホスト処理装置と、複数のストレージ装置からデータエレメントを書き込み及び読み出しをするよう構成される入出力（Ｉ／Ｏ）システムと、少なくとも部分的に複数のデータエレメントに基づいて、誤り訂正符号を計算するように構成されるオフロード処理装置と、を有し、前記オフロード処理装置は、前記複数のデータエレメントを受信するように構成されるメモリインターフェース回路と、前記複数のデータエレメントを一時的に格納するように構成される複数のメモリバッファ回路と、前記ホスト処理装置による追加の処理なしに、前記誤り訂正符号を、少なくとも部分的に計算するように構成される複数のエラーコード計算回路と、を含むことを特徴とする。
【発明の効果】
【００１１】
本発明に係る誤り訂正符号加速装置及びシステムによれば、分散ストレージシステムにおいて、誤り訂正の演算時に、ホストによる介入が最小化される誤り訂正符号の演算が可能である。したがって、ホストの性能を向上させることができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態による誤り訂正符号の加速のためのシステムの概略構成を例として示すブロック図である。
【図２】本発明の一実施形態による誤り訂正符号の加速のための例としてのシステム２００の動作を説明するためのブロック図である。
【図３Ａ】従来技術による誤り訂正符号の加速のためのシステム３００の概略構成を例示するブロック図である。
【図３Ｂ】従来技術による誤り訂正符号の加速のためのシステム３００の概略構成を例示するブロック図である。
【図４Ａ】本発明の実施形態による誤り訂正符号の加速のためのシステムの動作を説明するためのタイミング図である。
【図４Ｂ】本発明の実施形態による誤り訂正符号の加速のためのシステムの動作を説明するためのタイミング図である。
【図５】本発明の実施形態にかかる半導体装置を含む情報処理システムの概略的な構成を示すブロック図である。
【発明を実施するための形態】
【００１３】
次に、本発明に係る誤り訂正符号加速装置及びシステムを実施するための形態の具体例を図面を参照しながら説明する。
【００１４】
多様な例としての実施形態を、いくつかの実施形態を示している添付された図面を参照して詳細に説明する。
しかし、開示した本内容は、多くの異なる形態で具体化され、ここで説明した実施形態に限定されるものとして解釈されてはならない。
むしろ、これらの例としての実施形態は、本開示が徹底かつ完全になるように提供され、開示した本主題の範囲を当業者に完全に伝えるはずである。
図面で、レイヤと領域のサイズ及び相対的なサイズは、明確にするために誇張され得、多様な図面で、同じ参照符号は、同じエレメントを示す。
【００１５】
エレメント又はレイヤが、他のエレメント又はレイヤの「上に」、「連結（接続）された」又は「結合された」と述べられるとき、それは他のエレメント又はレイヤに直接連結（接続）／結合されるか、又はエレメントやレイヤが、その間に存在できるものと理解されるべきである。
一方、エレメントが他のエレメント又はレイヤに「直接」、「直接連結されて」又は「直接結合されて」と述べられるとき、介在するエレメント又はレイヤが存在しない。
同一の符号は、同一の構成要素を指す。ここで使用するように、「及び／又は」という用語は、一つ以上の、関連してリストされた項目の任意の組み合わせ、及びすべての組み合わせを含む。
【００１６】
ここで、第１、第２、第３などの用語は、多様なエレメント、構成要素、領域、レイヤ及び／又はセクションを説明するために使用するものであり、これらのエレメント、構成要素、領域、レイヤ及び／又はセクションは、これらの用語により限定されないと理解されるだろう。
これらの用語は、他のエレメント、構成要素、領域、レイヤ、又はセクションから一つのエレメント、構成要素、領域、レイヤ、又はセクションを区別するために使用する。
したがって、後述する第１のエレメント、構成要素、領域、レイヤ、又はセクションは、本発明の思想及び範囲を逸脱せずに、第２のエレメント、構成要素、領域、レイヤ、又はセクションを指すことができる。
【００１７】
一つのエレメント又は図面で示した他の構成要素又は特徴との特徴的な関係を説明するための説明を容易にするために、「下の」、「下」、「低い」、「特定の部分の下」、「上に」、「上部」のような空間的かつ相対的な用語がここで使用することができる。
空間的かつ相対的な用語は、図面で描写された方向に加えて使用又は動作において、装置の他の方向を含むように意図されたと理解されるだろう。
例えば、もし図面の装置が裏返されると、他の構成要素又は特徴の「下」、「下の」又は「特定の部分の下」で説明された構成要素は、他の構成要素又は特徴の「上」を向くようになる。
したがって、「下の」又は「特定の部分の下に」の例としての用語は、上又は下の方向の両方を含む。装置は、別の方法で向けられることができ（例えば、９０度又は他の方向に回転される）、空間的かつ相対的な記述語は、それに応じて解釈されるべきである。
【００１８】
同様に、「高い」、「低い」、「プルアップ」、「プルダウン」、「１」、「０」などのような電気的な用語は、図面に示したように、他の電圧レベル、他のエレメント又は他の特徴に対して電圧レベル又は電流を説明するための表現の便宜のために使用する。
電気的な相対用語は、図面に図示された電圧又は電流に加えて使用中又は動作中の装置の異なる基準電圧を含むと理解されるだろう。
例えば、図面の装置又は信号が反転されたり、他の基準電圧、電流、又は電荷を使用する場合に、「高い」又は「プルアップ」で説明されたエレメントは、新しい基準電圧又は電流に比べて「低い」又は「プルダウン」されたものである。
したがって、例としての用語の「高い」は、相対的に低い電圧、高電圧又は電流のすべてを含む。
装置は、他の電気的基準フレームと本明細書で使用される電気的かつ相対的な記述語に基づいて解釈され得る。
【００１９】
本明細書で使用する用語は、単に特定の実施形態を説明するためのものであり、本発明を制限しようとするものとして意図しない。
本明細書で使用したように、文脈上明らかに別の意味を示していると判定されない限り、単数形「一つ」は、複数形も含むものと意図される。
「含む（ｃｏｍｐｒｉｓｅ）」、及び「含んでいる（ｃｏｍｐｒｉｓｉｎｇ）」という用語は、本明細書で使用するとき、これらの用語は、定められた特徴、整数、段階、動作、エレメント、及び／又は構成要素の存在を明示するが、一つ以上の他の特徴、整数、段階、動作（処理）、エレメント、構成要素、及び／又はそれらのグループの追加若しくは存在を不可能にしない。
【００２０】
例としての実施形態は、理想的な例としての実施形態（及び中間構造）の概略図である断面図を参照して、ここに説明する。
このように、例えば、製造技術及び／又は許容誤差のような結果としての図面の形状からの変形が予想される。
したがって、例としての実施形態は、本明細書に示した特定の形状の領域に限定されると解釈されてはならず、例えば、製造からもたらされる形状の偏差を含むべきである。
例えば、長方形で図示した注入領域は、通常的に注入領域から注入していない領域へのバイナリ変化というより、円形若しくは曲線のフィーチャー（ｆｅａｔｕｒｅｓ）及び／又はエッジでの注入濃度の勾配を示すはずである。
同様に、注入によって形成された埋め立て領域は、埋め立て領域と注入が起こる表面との間の領域に若干の注入をもたらす。
したがって、図面に例示された領域は、本質的に概略であり、その形状はデバイスの領域の実際の形状を例示するものではなく、開示された本主題の範囲を制限しようとするものではない。
【００２１】
文脈上明らかに別の意味を示していると定義されない限り、本明細書で使用したすべての用語（技術的及び科学的な用語を含む）は、本発明が属する技術分野における当業者によって一般的に理解されるのと同じ意味を有する。
一般的に使用される、辞典に定義されたこれらの用語は、本明細書及び／又は関連技術の文脈からそれらの意味と一致する意味を有するものと解釈されるべきであり、本明細書において明らかに定義されない限り、理想化されたり過度に形式的な感覚で解釈されたりしてはならない。
【００２２】
図１は、本発明の一実施形態による誤り訂正符号の加速のためのシステム１００の概略構成を例として示すブロック図である。
図に示す実施形態で、システム１００は、複数のノード又はストレージ装置１８０にわたってデータを格納する分散ストレージシステム１１４を含む。
【００２３】
分散ストレージシステムは、しばしば、大規模な信頼性のストレージを提供するために使用される。
多くの場合、これは、複数のノード又はストレージ装置にわたって冗長性又は誤り訂正（例えば、パリティ）を分散させることによって達成される。
しかし、ノード又はストレージ装置がオフライン状態になると（例えば、ネットワーク障害、ハードウェア障害などにより）データが損傷しているか、冗長性レベルが減少したかが、疑われる。
ストレージシステムが分散されるほど、このようなことの頻度は高くなる。
【００２４】
このような問題の発生（例えば、ミラーリング、リード・ソロモン・エンコーディング）を防止するために、多数の技術が利用されうるが、本発明の実施形態によれば、特定のエンコーディングに制限されない。
このような実施形態で、欠落したデータのピース（ｐｉｅｃｅ）（チャンク）は、残りのデータのピースに基づいた公式を使用して再生したり、再構成したりする。
【００２５】
例示した実施形態で、システム１００は、分散ストレージシステム又は複数のデータノード１１４を管理するように構成された一つ以上のホスト又はコンピューティング装置１１２を含む。
コンピューティング装置１１２は、コンピュータ装置（例えば、コンピュータ、サーバ）を含む。
エラー（誤り）（たとえば、欠落されたデータチャンク）が発生する場合は、コンピューティング装置１１２は、一般的にエラーを検出し、可能であれば回復する責任を有する。
【００２６】
多様な実施形態で、コンピューティング装置１１２は、例えばラップトップ、デスクトップ、ワークステーション、個人携帯情報端末、スマートフォン、タブレット、ＳｏＣ（ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ）、及び他の適切なコンピュータ、又は仮想マシン、若しくは仮想コンピューティング装置などを含む。
多様な実施形態で、コンピューティング装置１１２は、ユーザー（図示せず）によって使用される。
多様な実施形態で、コンピューティング装置１１２は、一つ以上のマシン実行可能命令若しくはソフトウェア、ファームウェア、又はこれらの組み合わせを実行するように構成されたプロセッサ１０２を含む。
コンピューティング装置１１２は、いくつかの実施形態で、１つ以上のデータを一時的に、又は永久的に、又は半永久的に、又はこれらの組み合わせで格納するように構成されたメモリ（図示せず）を含む。
さらに、メモリは、揮発性メモリ、不揮発性メモリ、又はこれらの組み合わせを含む。
多様な実施形態で、コンピューティング装置１１２は、半永久的又は実質的に永続的な形でデータを格納するように構成されたストレージ媒体１１４を含み、その媒体と通信を行う。
【００２７】
図に示した実施形態で、それぞれのデータセットは、コンピューティング装置１１２によって複数のより小さなピース（ｐｉｅｃｅ）のデータ又はチャンク１９８に分解したり分割したりする。
図に示した実施形態で、データは、チャンク１９８に分割される（例えば、Ｄ１、Ｄ２、Ｄ３、及びＤ４（図に示さず））。
なお、多様な実施形態で、コンピューティング装置１１２は、パリティチャンク（例えば、Ｐ１及びＰ２と命名された（図に示さず）チャンク１９８）のような一部の形態の冗長性をデータのチャンク１９８に適用できる。
【００２８】
本技術を説明する用語であり、元のデータのチャンク１９８（Ｄ１、Ｄ２、Ｄ３及びＤ４）の数は、変数「ｋ」又は「Ｋ」として記述される。
同様に、冗長性データのチャンク１９８（Ｐ１及びＰ２）の数は、変数「Ｒ」又は「ｒ」で記述される。
したがって、チャンク１９８の総計は、「Ｋ＋Ｒ」になるようにする。
上記例示した実施形態で、「Ｋ」は「４」であり、「Ｒ」は「２」であり、「Ｋ＋Ｒ」は「６」で記述したが、これらの内容は、単に本発明の実施形態を限定しないと理解するできである。
【００２９】
例示した実施形態では、コンピューティング装置１１２は、これらのチャンク１９８（オリジナルと冗長性）のそれぞれが、分散ストレージシステム１１４のそれぞれのノード又はストレージ装置に格納されるようにする。
多様な実施形態で、ストレージ装置１８０の数は、チャンク１９８の数と同じではない。
多様な実施形態で、チャンク１９８は、欠落（例えば、ネットワークやハードウェアの故障）又はエラー（誤り）と関連付けられる。
図に示した実施形態で、チャンク１９８とそれぞれのストレージ装置１８０が突然利用できなくなると仮定する。
コンピューティング装置１１２は、エラーを検出するとき、欠落したチャンク１９８を再生成したり、そうではなければ、エラーを訂正したりしようと試みる。
【００３０】
このような実施形態で、一つのチャンクに欠陥が存在（Ｆａｉｌ）し、元のデータに「Ｋ」個（例えば、「４」）の総計チャンクがあるならば、ホスト装置１１２は欠陥が存在するチャンクを回復するために、少なくとも「Ｋ」個の（例えば、「４」）ノード又はコンピューティング装置は、ホストに情報を送る必要がある。
これらの「Ｋ」（例えば、「４」）個のチャンクは、任意の「Ｋ＋Ｒ」（例えば、「６」）個のチャンクから由来する。
例えば、チャンク１９８（Ｄ１、Ｄ２、Ｄ４及びＰ１）は、欠落されたチャンク１９８（Ｄ３）を再生成するために使用される。
【００３１】
再生コードは、一般的にＤノード（Ｄ＞Ｋ）から全チャンクサイズの情報未満を伝送することにより、回復の帯域幅を減少させる。
つまり、スマート公式を使用してコンピューティング装置１１２は、全体のチャンク１９８（Ｄ１、Ｄ２、Ｄ４及びＰ１）を使用せずに、単にチャンク１９８（Ｄ１、Ｄ２、Ｄ４、Ｐ１及びＰ２）の一部のみを使用することにより、欠落したチャンク１９８（Ｄ３）を再生成する。
再生コードは、一般的に、より多くのストレージ装置１８０から情報を取得するが、非再生コードより、各ストレージ装置１８０から少ない情報を取得する。
上記内容は、本発明の実施形態が、制限されない単に一つの例としてのものと理解されるであろう。
【００３２】
例えば、６チャンクのデータ（Ｋ＝６）と６チャンクの冗長性が使用され（Ｒ＝６及び「Ｋ＋Ｒ」＝１２）、各チャンクのサイズが１６ＭＢである場合、標準リード・ソロモン（ＲＳ）誤り訂正符号化方式は、６（Ｋ）１６ＭＢのチャンクがホスト装置に伝送されるか、又は欠落した１６ＭＢのチャンクを訂正するために９６ＭＢのデータを伝送することを要請するはずである。
逆に、再生技術が使用される場合に、１２個のすべてのチャンク（この場合、「Ｋ＋Ｒ」又はＤ）の内の一部が読み取られるが、各チャンクの一部（例えば、２．７ＭＢ）のみが使用されるため、ホスト装置に伝送された総量は、より少ない可能性がある（例えば、２９．７ＭＢ）。
【００３３】
再生コードは、しばしば、格納と帯域幅のトレードオフを有する。
多様な例において、一般的に、再生コードの２つのクラス又はグループが存在する。
ストレージのオーバーヘッドが最小である場合に、これを最小ストレージ再生（Ｍｉｎｉｍｕｍ  Ｓｔｏｒａｇｅ  Ｒｅｇｅｎｅｒａｔｉｏｎ：以下、ＭＳＲ）コードという。
追加されたストレージのオーバーヘッドに対し回復帯域幅が最小である場合には、これを最小帯域幅再生（Ｍｉｎｉｍｕｍ  Ｂａｎｄｗｉｄｔｈ  Ｒｅｇｅｎｅｒａｔｉｏｎ：以下、ＭＢＲ）コードと呼ぶ。
このような広範囲なカテゴリ内で、再生コードを実行するために、多様な特定の技術又は公式が使用される。
前述した内容は、本発明の実施形態を制限しない、いくつかの例としてのものと理解されるべきである。
【００３４】
図１に戻って、図に示した実施形態で、（分散）ストレージシステム１１４は、複数のストレージ装置１８０を含む。
各ストレージ装置１８０は、チャンク又は他の方法でデータを格納するように構成される。
図に示した実施形態で、ストレージ装置１８０は、ハードドライブ、ソリッド・ステート・ドライブ、又は揮発性メモリのような比較的通常のストレージ装置である。
【００３５】
図に示した実施形態で、システム１００は、また、前述したように、コンピューティング装置１１２を含む。
本実施形態で、コンピューティング装置１１２は、ホストプロセッサ又はホスト処理装置１０２を含む。
多様な実施形態で、ホスト処理装置１０２は、中央処理装置（ＣＰＵ）、装置固有のプロセッサ若しくはコントローラ・プロセッサ（例えば、ストレージ装置内から発見される）又は他の処理回路を含む。
【００３６】
図に示した実施形態で、コンピューティング装置１１２は、また、入出力（Ｉ／Ｏ）システム（又はインターフェース）１０６を含む。
多様な実施形態で、入出力（Ｉ／Ｏ）システム１０６は、（分散）ストレージシステム１１４と通信するように構成される。
いくつかの実施形態で、入出力（Ｉ／Ｏ）システム１０６は、ホスト処理装置１０２と、少なくとも部分的に、統合される。
他の実施形態で、入出力（Ｉ／Ｏ）システム１０６は、しばしばメモリ管理ユニット（ＭＭＵ）、又はチップセットで表現される他の構成要素を含む。
上記内容は、本発明の実施形態を制限しない、いくつかの例としてのものと理解される。
【００３７】
図に示した実施形態で、コンピューティング装置１１２は、再プログラム可能なオフロード（ｒｅｐｒｏｇｒａｍｍａｂｌｅ  ｏｆｆｌｏａｄ）処理装置１０４（以下、ＲＯＰＤ）を含む。
多様な実施形態で、このＲＯＰＤ１０４は、特殊目的の論理回路、例えば、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）又はＡＳＩＣ（特定用途向け集積回路）を含む。
多様な実施形態で、ＲＯＰＤ１０４は、プログラミングが、一般的に固定されるように、外部装置によってプログラム可能である。
他の実施形態で、ＲＯＰＤ１０４は、ホスト処理装置１０２又は他の装置によって動的に再プログラム可能で、その回路（例えば、パイプライン）が、ランタイム時の条件に基づいて動的に調整される。
上記内容は、本発明の実施形態を制限しない、いくつかの例としてのものと理解される。
【００３８】
前述したように、図に示した実施形態で、必要な誤り訂正符号（たとえば、パリティチャンク、欠落されたデータのチャンクの再生）を計算することは、一般的に、ホスト処理装置１０２の責任であるが、ホスト処理装置１０２は、当該タスクの全体又は一部をＲＯＰＤ１０４にオフロードしたり、委任することを選択したりして設定される。
【００３９】
一般的に、ホスト処理装置１０２による誤り訂正符号の計算（多くの場合、ソフトウェアによって制御される）は、高費用の作業である。
しばしば、ＣＰＵアーキテクチャ（例えば、ＳＭＰ（Ｓｙｍｍｅｔｒｉｃ  ｍｕｌｔｉｐｒｏｃｅｓｓｉｎｇ）、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ））は、ＭＳＲ（又はその他）コードの構成及び再構成の並列特性に比べて、並列処理量が制限されている。
また、誤り訂正符号（つまり、すべてのチャンク１９８へのアクセス）を生成するのに必要なメモリアクセスパターンは、ローカル性が欠如している。
【００４０】
データエレメントのランダムアクセス及び各データエレメントの内部のデータに対するストリーミングパターンは、多くのローカル性を提供しないため、キャッシュの性能が低下し、全体のエンコーディング／デコーディング性能が低下する。
したがって、通常のソフトウェアを使用するという概念は、プロセッサとメモリ帯域幅の高い利用を誘導し、他のタスクによく使用されうるホスト処理装置１０２の利用を防止する。
図に示した実施形態で、システム１００は、少なくともこれらの問題を解決するためのエラー訂正符号化（例えば、構成及び再構成）のための加速システムを提供する。
【００４１】
例示した実施形態で、ホスト処理装置１０２は、エラー訂正符号化をハードウェア加速器（ｈａｒｄｗａｒｅ  ａｃｃｅｌｅｒａｔｏｒ）又はＲＯＰＤ１０４にオフロードするように構成される。
このような実施形態で、エラー訂正符号化を実行しろという要請があったとき、ホスト処理装置１０２は、この要請をＲＯＰＤ１０４に伝達する。
ＲＯＰＤ１０４は、入出力（Ｉ／Ｏ）システム１０６を利用して、データエレメント（例えば、チャンク１９８又は他のサイズのデータ）にアクセスする。
完了したら、ＲＯＰＤ１０４は、動作の最終性をホスト処理装置１０２に伝達し、その後、ホスト処理装置１０２は、データ、誤り訂正符号にアクセスするか、単にその処理を実行する。
これらの実施形態で、ＲＯＰＤ１０４が誤り訂正符号を計算するうち、ホスト処理装置１０２は、他のタスクを実行できる。
【００４２】
多様な実施形態で、ホスト処理装置１０２及びＲＯＰＤ１０４は、ダイレクト・メモリアクセス（ＤＭＡ）を介して通信する。
一実施形態で、これは入出力（Ｉ／Ｏ）システム１０６で、メモリのマッピングされた部分を含む。
他の実施形態で、これは装置間（１０２と１０４）の直接通信を含む。
同様に、入出力（Ｉ／Ｏ）システム１０６及びＲＯＰＤ１０４は、ピアツーピアＤＭＡプロトコルを介して通信する。
上記内容は、本発明の実施形態を制限しない、いくつかの例としてのものと理解されるべきである。
【００４３】
図２は、本発明の一実施形態による誤り訂正符号の加速のための例としてのシステム２００の動作を説明するためのブロック図である。
多様な実施形態で、システム２００は、前述したように、再プログラム可能なオフロード処理装置（ＲＰＯＤ）を含む。
図に示した実施形態で、システム２００は、オフロード処理回路２０２を含む。
多様な実施形態で、このオフロード処理回路２０２は、前述したように、再プログラムすることができる。
これらの実施形態で、オフロード処理回路２０２は、ホスト処理装置による追加処理なしに誤り訂正符号を計算するように構成される。
【００４４】
図に示した実施形態で、オフロード処理回路２０２は、ホスト処理装置又はプロセッサと通信するように構成されたホストインターフェース２３２を含む。
多様な実施形態で、ホストプロセッサは、システム２００の外部に存在するか、又は別途のロジックブロック（例えば、ＳｏＣ（ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ）の一部として）に統合され得る。
多様な実施形態で、ホストインターフェース２３２は、ＤＭＡを介して少なくとも部分的に、又は全体的に通信できる。
【００４５】
例示した実施形態で、システム２００は、メモリ２０４（回路又はユニット）を含むか、又はこれと相互作用することができる。
一部の実施形態で、メモリ２０４は、ＤＤＲ（ｄｏｕｂｌｅ  ｄａｔａ  ｒａｔｅ）ＳＤＲＡＭのようなシステムメモリを含み得るが、上記内容は、本発明の実施形態を制限しない一つの例としてのものと理解されるべきである。
これらの実施形態で、メモリ２０４は、誤り訂正符号の計算（例えば、生成又は再構成）に使用されるデータエレメント（例えば、情報又はパリティチャンク）を格納するように構成される。
【００４６】
一実施形態で、生成又はエンコーディング手順のために、ホストプロセッサは、エンコーディングされる必要のあるデータオブジェクト（たとえば、すべての情報チャンク）をメモリ２０４に伝送する。
このような実施形態で、これらのデータエレメントは、入力データ２１２として格納される。
続いて、オフロード処理回路２０２は、パリティチャンク（誤り訂正符号の形態）を計算し、（出力データ２１４を）メモリ２０４に再び記入する。
最後に、情報及びパリティチャンクは（入出力システム又はホスト処理装置によって）異なるストレージノードに分配される。
【００４７】
他の実施形態で、再構成又はデコーディング手順のために、生存情報データエレメント及びパリティデータエレメントが先に検索されてメモリ２０４に入力データ２１２が格納される。
その後、オフロード処理回路２０２は、再構築チャンク（誤り訂正符号）を計算し、これを出力データ２１４としてメモリ２０４に記入する。
最後に、再構築されたチャンクがホスト処理装置に伝送される。
【００４８】
図に示した実施形態で、オフロード処理回路２０２は、メモリ２０４と通信するように構成されたメモリインターフェース回路２２２を含む。
図に示した実施形態で、メモリインターフェース回路２２２は、データエレメントを受信するマルチプレクサ（ＭＵＸ）として示している。
同様に、デマルチプレクサ（ＤｅＭＵＸ）は、データエレメントをメモリ２０４に記入する。
上記内容は、本発明の実施形態を制限しない一つの例としてのものと理解されるべきである。
【００４９】
オフロード処理回路２０２は、複数のデータエレメントを一時的に格納するように構成された複数のメモリバッファ回路（以下、バッファ）２２４を含む。
特定の実施形態で、入力データ２１２は、効率的な５１２ビットのグループ化でオフロード処理回路２０２に到達し得るが、エレメント自体は８ビットであり得る。
このような実施形態で、メモリインターフェース回路２２２は、入力データ２１２を６４個のデータエレメントに分割して、それらを個別（又は部分の）のバッファ２２４に格納する。
上記内容は、本発明の実施形態を制限しない一つの例としてのものと理解されるべきである。
【００５０】
例示した実施形態で、オフロード処理回路２０２は、データがメモリ２０４から読み出され、バッファ２２４に記入される方法を管理するように構成されたアドレスコントローラ２２８を含む。
いくつかの実施形態で、アドレスコントローラ２２８は、誤り訂正符号コンピューティングのためバッファ２２４からデータが読み出される方法を管理するように構成される。
いくつかの実施形態で、オフロード処理回路２０２は、バッファ２２４がアクセスする予め格納されたシーケンスを含むインデックステーブル２３０を含む。
【００５１】
オフロード処理回路２０２は、複数のエラーコード計算回路（ＥＣＣＣ）２２６を含む。
これらのエラーコード計算回路２２６は、ホスト処理装置による追加処理なしに誤り訂正符号を計算するように構成される。
図に示した実施形態で、エラーコード計算回路２２６は、主に、多重加算回路（Ｍｕｌｔｉｐｌｅ−ａｄｄ  ｃｉｒｃｕｉｔｓ）を含む。
多様な実施形態で、エラーコード計算回路２２６は、ルックアップテーブル又はビット単位ＸＯＲゲートとして具体化される。
上記内容は、本発明の実施形態を制限しない、いくつかの例としての例であると理解されるべきである。
【００５２】
いくつかの実施形態で、システム２００は、誤り訂正符号の生成を読み出し、処理及び記入する３つの段階で実行する。
読み出しの段階で、データエレメント（再構築時のパリティエレメントを含む）は、メモリ２０４から読み出され、バッファ２２４に配置される。
処理段階中に、アドレスコントローラ２２８は、事前に格納されたインデックステーブル２３０に基づいて読み出されたメモリを制御し、「ｋ」個のバッファ２２４から正確なデータスライスを同時に読み出す。
このデータは、誤り訂正計算のために、エラーコード計算回路２２６に供給される。
【００５３】
エラーコード計算回路２２６の１つの可能な実施形態の詳細な構造は、図２に詳細の部分で示す。
エラーコード計算回路２２６は、所望するパリティ計算又は情報の再構成技術（例えば、ガロアフィールド（ＧＦ）の計算）に対応する予め格納された係数テーブル２４２を含む。
エラーコード計算回路２２６は、また、速い乗算演算のために、「ｋ」個の乗算ルックアップテーブル又は乗算器２４４を含む。
エラーコード計算回路２２６は、また、ＸＯＲ又は加算器２４６ツリー構造を含む。
一実施形態で、それぞれの乗算器２４４は、一つのデータエレメント２５２（例えば、８ビットのデータ）を処理する。
究極的に、エラーコード計算回路２２６は、誤り訂正符号２５４（又は後述されるように、その一部）を生成又は出力する。
【００５４】
書き込みの段階で、誤り訂正符号２５４は、出力データ２１４としてメモリ２０４に再び書き込まれ得る。
多様な実施形態で、誤り訂正符号２５４は、処理直後にメモリ２０４に再び書き込まれ得る。
ＸＯＲ又は加算器２４６ツリーの次に、パイプライン段階をもう１つ追加するとみなすことができる。
このような実施形態で、システム２００を不連続又はアトミック操作（ａｔｏｍｉｃ  ｏｐｅｒａｔｉｏｎｓ）と逆にパイプラインデータ処理に関与させることができる。
このような実施形態で、これは後述するように、マルチパスの動作を加速させる。
いくつかの実施形態で、データはバッファ２２４に読み出されるときに分割されるため、データの出力は、別途の出力パーティションでメモリ２０４に再び記入される。
【００５５】
多様な実施形態で、例えば、ＭＳＲコード（ｎ、ｋ、ｍ）のように、（エンコーディングの手順で）「ｋ」個の入力データのチャンクが存在し、入力データは、全体的に内部のバッファ２２４のサイズよりも大きい可能性がある。
このような実施形態で、システム２００は、全体の入力データセットを処理するために、多数又は「ｐ」のパスを使用でき、ここで、「ｐ」は、各情報／パリティエレメントに対して分割された情報／パリティスライスの数と同じである。
このような実施形態で、システム２００は、より大きなデータセットを、それぞれ「ｋ」個以下のデータエレメントを有する「ｐ」個のパーティションに分割できる。
このような実施形態で、それぞれのパスは、それぞれのパーティションに関連した誤り訂正符号を読み出し、処理及び記入することを含み得る。
【００５６】
データセットの数がバッファ２２４でのストレージ総量よりも少ない他の実施形態では、データセットは、それぞれバッファサイズよりも小さい「ｋ」個のデータエレメントにマッピングされる。
このような実施形態で、可変データエレメントのサイズは、システム２００によって処理される。
【００５７】
データエレメントの数が「ｋ」個のバッファ２２４よりも小さい（したがって、ｋ個のエラーコード計算回路２２６）別の実施形態で、エラーコード計算回路２２６の数は、動的に変更される。
このような実施形態で、システム２００のパイプラインは、処理量だけでなく、レイテンシを最適化するように動的に変更される。
このような実施形態で、エラーコード計算回路２２６の数は、データエレメントの数（最大ハードウェアの限界まで）と一致するように調整され得る。
このような実施形態で、乗算ルックアップテーブル又は乗算器２４４は、サイクルごとにアクセスされ得る。
データエレメント（したがって、データノード）に対するこの並列処理は、ＳＩＭＤ命令のオペランド（ｏｐｅｒａｎｄ）の数が固定されている通常のＣＰＵとは異なるため、オペランド自体が操作されて奇数個のデータエレメントを処理しなければならない。
【００５８】
図３Ａ及び３Ｂは、従来技術による誤り訂正符号の加速のためのシステム３００の概略構成を例示するブロック図である。
図３Ａは、ＲＯＰＤのないシステム３００の単純化されたバージョンを示し、一方、図３Ｂは、システム３００内でのＲＯＰＤの使用を示す。
図３Ａ及び３Ｂは、本明細書で説明した誤り訂正符号の計算を利用するシステム３００内での命令語又はソフトウェアスレッドの実行を示している。
【００５９】
図に示した実施形態で、システム３００は、データセット（及びデータエレメント）へのアクセスを必要とするいくつかのタスクを実行するメイン、若しくはユーザースレッド３０２、又はアプリケーション・プログラム・インターフェース（ＡＰＩ）を含む。
このような実施形態で、ユーザースレッド３０２は、ホストプロセッサによって実行される。
図に示した実施形態で、システムは、命令語の計算スレッド３１２を処理し、入出力（Ｉ／Ｏ）キュー３１６を介してストレージ装置３０６と相互作用するＬＩＢ３０４を含む。
【００６０】
オフロード処理装置が活性化されない実施形態で、計算スレッド３１２は、誤り訂正符号を計算（例えば、パリティエレメントを構築したり、データを再構成したりする）するために、ユーザーの要請（要請キュー３２２に配置された）を受信する。
エンコーディング（パリティエレメントの構築）が要請されると、要請がエンコーディング動作３２４に到達するとき、パリティエレメントをそれぞれのストレージ媒体３０６に記入するために、ホスト処理装置は、エンコーディングを実行してから、入出力（Ｉ／Ｏ）キュー３１６及び入出力（Ｉ／Ｏ）スレッド３１７（個々のＩ／Ｏスレッド３５２）を制御する。
同様に、必要な残りのデータエレメント（パリティエレメントを含む）が入出力（Ｉ／Ｏ）スレッドによって完了キュー３２６にリターンされ、最終的にはデコーディング動作（ホストプロセッサによって実行される）に達するとき、デコーディング（データエレメントの再構築）が要請される。
【００６１】
図３Ｂにおいては、ハードウェア加速器やオフロード処理装置３０８がホストプロセッサ（スレッド（３０２、３１２、及びＬＩＢ３０４）を実行する）と相互作用する方法が説明される。
再度、計算スレッド３１２は、ユーザースレッド３０２からの要請を処理する。
このような実施形態で、これはエンコーディング／デコーディングの計算をオフロード処理装置３０８にオフロードすることを含む。
【００６２】
前述したように、それぞれの計算スレッド３１２は、要請キュー３２２（ユーザスレッド３０２によってキューイングされる）及び完了キュー３２６（入出力（Ｉ／Ｏ）スレッド３１７によってキューイングされる）を含む。
このような実施形態で、計算スレッド３１２は、オフロード処理装置３０８と相互作用する。
例えば、エンコーディング、又はパリティの生成シナリオで、計算スレッド３１２は、エンコーディング要請を要請キュー３２２に配置する。
エンコーディング要請がエンコーディング処理３２４に到達すると、ホスト装置によって直接処理されず、計算スレッド３１２は、エンコーディング要請をオフロード処理装置３０８にオフロードする。
【００６３】
一実施形態で、これは、コールバックスレッド（ｃａｌｌｂａｃｋ  ｔｈｒｅａｄ：ＣＢスレッド）３１４を介して追跡される。
このような実施形態で、オフロード要請は、ハードウェア加速器（ＨＷ）要請キュー３２２又はオフロード要請キューに配置される。
要請がハードウェア加速器要請キュー３２２内に存在するにつれ、コールバックスレッド３１４は、ハードウェア加速器（オフロード処理装置）３０８にＤＭＡ要請をする。
ハードウェア加速器（オフロード処理装置）３０８は、前述したように、エラーコード計算回路３４２を含む。
完了すると、コールバックスレッド３１４は、計算スレッド３１２に再び報告し、これは、再びユーザースレッド３０２に報告される。
この時点で、入出力（Ｉ／Ｏ）スレッド３１７は、エンコーディングされたデータをストレージ３０６に記入する。
【００６４】
デコーディング又は再構成動作の例で、計算スレッド３１２は、入出力（Ｉ／Ｏ）スレッド３１７からデータを要請する。
その後、要請を完了キュー３２６に配置する。
要請がデコーディング処理３２８に到達すると、ホスト装置によって直接処理される代わりに、計算スレッド３１２は、デコーディング要請をオフロード処理装置３０８にオフロードする。
一実施形態で、これは、コールバックスレッド３１４を介して追跡される。
このような実施形態で、オフロード要請を配置する。
オフロード処理装置３０８は、入出力（Ｉ／Ｏ）スレッド３１７からＤＭＡを介して既存のデータエレメントを受信する。
要請がハードウェア加速器要請キュー３２２に存在するにつれて、コールバックスレッド３１４は、計算スレッド３１２及び／又はユーザースレッド３０２に再び報告する。
【００６５】
図４Ａ及び４Ｂは、本発明の実施形態による誤り訂正符号の加速のためのシステムの動作を説明するためのタイミング図である。
図４Ａは、エンコーディング又はパリティ生成動作のタイミング図４００を示し、図４Ｂは、デコーディング又は再構成動作のタイミング図４０１を示す。
多様な実施形態で、これらのタイミング図は、図３Ａ及び３Ｂのシステム３００によって生成される。
前述した説明は、本発明の実施形態を制限しない、単なる一つの例示に過ぎないことと理解されるべきである。
【００６６】
例示した実施形態で、符号４０２の行は、ユーザースレッド（４０２）の可能なタイミングを示している。
例示した実施形態で、符号４０４の行は、計算スレッド（４０４）の可能なタイミングを示している。
例示した実施形態で、符号４０６の行は、ユーザースレッドの可能なコールバック（コールバックスレッド）（４０６）を示している。
例示した実施形態で、符号４０８の行は、入出力（Ｉ／Ｏ）スレッド（４０８）の可能なタイミングを示している。
【００６７】
図４Ａにおいて、タイミング図４００は、エンコーディング動作のためのスレッドステージとタイミングの実施形態を示す。
これらの実施形態で、ユーザースレッド（４０２）は、計算スレッドで入出力（Ｉ／Ｏ）の書き込み要請をキューイングし（Ｅｎｑ  ＩＯ−Ｑ）（ブロック４１２）、要請の完了を待機する（ブロック４１４）。
多様な実施形態で、ホスト装置は、完了を待機している間（ブロック４１４）、他の動作（図示せず）を実行する。
【００６８】
このような実施形態で、計算スレッド（４０４）は、要請キューからユーザーの要請をキューイングし（Ｄｅｑ  Ｒｅｑ−Ｑ）（ブロック４２２）、ハードウェア又はオフロード要請をキューにキューイングする（Ｅｎｑ  ＨＷ−Ｑ）（ブロック４２４）。
計算スレッド（４０４）は、完了を待機する（ブロック４２６）。
【００６９】
このような実施形態で、コールバックスレッド（４０６）は、ハードウェア加速の要請をキューイングし（Ｄｅｑ  ＨＷ−Ｑ）（ブロック４３２）、エンコーディング動作を開始し（Ｉｓｓｕｅ  ＨＷ−Ｒ）（ブロック４３４）、その完了を待機し（ブロック４３６）、動作が完了したとき、完了キューに通知する（完了スレッドを公知）（ブロック４３８）。
図に示した実施形態で、計算スレッド（４０４）は、入出力（Ｉ／Ｏ）要請を入出力（Ｉ／Ｏ）のキューにキューイングする（ＥＮｑ  ＩＯ−Ｑ）（ブロック４２８）。
【００７０】
このような実施形態で、入出力（Ｉ／Ｏ）スレッド（４０８）は、入出力（Ｉ／Ｏ）要請をデキューイングすることにより、入出力動作を実行し（Ｄｅｑ  ＩＯ−Ｑ）（ブロック４４２）、要請をストレージ装置に発行する（Ｉｓｓｕｅ  ＩＯ）（ブロック４４４）。
データが書き込まれることを待機してから（ブロック４４６）、入出力（Ｉ／Ｏ）スレッドは、ユーザースレッドに完了を通知する（ブロック４４８）。
上述した説明は、本発明の実施形態を制限しない、単なる一つの例示に過ぎないと理解されるべきである。
【００７１】
図４Ｂにおいては、タイミング図４０１は、デコーディング動作のためのスレッドステージとタイミングの実施形態を示す。
これらの実施形態で、ユーザースレッド（４０２）は、計算スレッドで入出力（Ｉ／Ｏ）読み取り要請をキューイングし（Ｅｎｑ  ＩＯ−Ｑ）（ブロック４１３）、続いて、要請の完了を待機する（ブロック４１５）。
多様な実施形態で、ホスト装置は、完了を待っている（ブロック４１５）間、他の動作（図示せず）を実行できる。
【００７２】
このような実施形態で、計算スレッド（４０４）は、要請キューからユーザーの要請をデキューイングし（Ｄｅｑ  Ｒｅｑ−Ｑ）（ブロック４２２）、入出力（Ｉ／Ｏ）要請をキューにキューイングする（Ｅｎｑ  ＩＯ−Ｑ）（ブロック４２８）。  計算スレッドは、完了を待機する（ブロック４２７）。
このような実施形態で、入出力（Ｉ／Ｏ）スレッド（４０８）は、入出力（Ｉ／Ｏ）要請をデキューイングすることにより、入出力（Ｉ／Ｏ）動作を実行し（Ｄｅｑ  ＩＯ−Ｑ）（ブロック４４２）、要請をストレージ装置に発行する（Ｉｓｓｕｅ  ＩＯ）（ブロック４４４）。データが読み出されることを待ってから（ブロック４４７）、入出力（Ｉ／Ｏ）スレッドは、ハードウェア加速の要請をキューイングすることにより、コールバックスレッド４０６に完了を通知する（Ｅｎｑ  Ｃｏｍｐ−Ｑ）（ブロック４４９）。
【００７３】
このような実施形態で、コールバックスレッド（４０６）は、ハードウェア加速の要請をデキューイングし（Ｄｅｑ  ＨＷ−Ｑ）（ブロック４３２）、デコーディング動作を開始し（Ｉｓｓｕｅ  ＨＷ−Ｒ）（ブロック４３４）、その完了を待機し（ブロック４３６）、動作が完了すると、ユーザースレッド（４０２）に通知する（ブロック４３９）。
上記内容は、開本発明の実施形態を制限しない、単なる一つの例示に過ぎないことと理解されるべきである。
【００７４】
図５は、本発明の実施形態にかかる半導体装置を含む情報処理システム５００の概略的な構成を示すブロック図である。
図５を参照すると、情報処理システム５００は、本発明の実施形態により構成された半導体装置の中から一つ以上を含む。
他の実施形態で、情報処理システム５００は、本発明の実施形態による、１つ以上の技術を使用したり、実行したりする。
【００７５】
多様な実施形態で、情報処理システム５００は、例えばラップトップ、デスクトップ、ワークステーション、サーバ、ブレードサーバ、個人携帯情報端末、スマートフォン、タブレット、及び他の適切なコンピュータのようなコンピューティング装置又は仮想マシン若しくはその仮想コンピューティング装置などを含む。
多様な実施形態で、情報処理システム５００は、ユーザー（図示せず）によって使用される。
【００７６】
本発明の実施形態による情報処理システム５００は、中央処理装置（ＣＰＵ）、ロジック又はプロセッサ５１０をさらに含む。
一部の実施形態で、プロセッサ５１０は、一つ以上の機能ユニットブロック（ＦＵＢ）、又はこれらの実施形態で、組み合わせ論理ブロックは、多様なブール論理演算（例えば、ＮＡＮＤ、ＮＯＲ、ＮＯＴ、ＸＯＲ）、安定化論理装置（例えば、フリップフロップ、ラッチ）、他の論理装置、又はこれらの組み合わせを含む。
これらの組み合わせ論理演算は、所望の結果を達成するために、入力信号を処理するように、単純又は複雑な方法で構成される。
【００７７】
同期式組み合わせ論理演算のいくつかの例を説明したが、本発明の実施形態は、そのように限定されず、非同期演算又はこれらの組み合わせを含むことができるものと理解されるべきである。
一実施形態で、組み合わせ論理演算は、複数の相補型金属酸化物半導体（ＣＭＯＳ）トランジスタを含む。
多様な実施形態で、これらのＣＭＯＳトランジスタは、論理動作を実行するゲートにアレンジ（ａｒｒａｎｇｅ）されうるが、他の技術が使用することができ、本発明の実施形態の範囲内に存在するものと理解される。
【００７８】
本発明の実施形態による情報処理システム５００は、揮発性メモリ５２０（例えば、ランダムアクセスメモリ（ＲＡＭ））をさらに含む。
本発明の実施形態による情報処理システム５００は、不揮発性メモリ５３０（例えば、ハードドライブ、光メモリ、ＮＡＮＤ又はフラッシュメモリ）をさらに含む。
一部の実施形態で、揮発性メモリ５２０、不揮発性メモリ５３０、又はこれらの組み合わせ、若しくは一部は、「ストレージ媒体」と称される。
多様な実施形態で、揮発性メモリ５２０及び／又は不揮発性メモリ５３０は、半永久的又は実質的に永続的な形態でデータを格納するように構成される。
【００７９】
多様な実施形態で、情報処理システム５００は、情報処理システム５００が通信ネットワークの一部であり、通信ネットワークを介して通信できるように構成された一つ以上のネットワークインターフェース５４０を含む。
Ｗｉ−Ｆｉプロトコルの例は、ＩＥＥＥ  ８０２．１１ｎ，ＩＥＥＥ８０２．１１ｇを含み得るが、これに限定されない。
セルラープロトコルの例は、ＩＥＥＥ  ８０２．１６ｍ（別名Ｗｉｒｅｌｅｓｓ−ＭＡＮ（Ｍｅｔｒｏｐｏｌｉｔａｎ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）Ａｄｖａｎｃｅｄ，ＬＴＥ（Ｌｏｎｇ  Ｔｅｒｍ  Ｅｖｏｌｕｔｉｏｎ）Ａｄｖａｎｃｅｄ，ＧＳＭ（登録商標）（Ｇｌｏｂａｌ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｍｏｂｉｌｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ）Ｅｖｏｌｕｔｉｏｎ）の向上したデータレートを含むが、これらに限定されない。
有線プロトコルの例は、ＩＥＥＥ８０２．３（別名、イーサネット（登録商標））、ファイバーチャネル、電力線通信（例えば、ＨｏｍｅＰｌｕｇ、ＩＥＥＥ  １９０１）を含み得るが、これに限定されない。
上記内容は、本発明の実施形態を制限しない、いくつかの例示に過ぎないことと理解されるべきである。
【００８０】
本発明の実施形態による情報処理システム５００は、ユーザーインターフェースユニット５５０（例えば、ディスプレイアダプタ、ハプティックインターフェース、ヒューマンインターフェース装置）をさらに含む。
多様な実施形態で、このユーザーインターフェースユニット５５０は、ユーザーから入力を受信するか、及び／又はユーザーに出力を提供するように構成される。
ユーザーとの相互作用を提供するために、他の種類の装置が使用することもあり得る。
たとえば、ユーザーに提供されるフィードバックは、任意の形態の感覚フィードバック、例えば視覚フィードバック、聴覚フィードバック、又は触覚フィードバックであり、ユーザーからの入力は、音響、音声、又は触覚入力を含む任意の形で受信される。
【００８１】
多様な実施形態で、情報処理システム５００は、１つ以上の他のハードウェア装置５６０又はハードウェアの構成要素（例えば、ディスプレイ又はモニター、キーボード、マウス、カメラ、指紋リーダー（ｆｉｎｇｅｒｐｒｉｎｔ  ｒｅａｄｅｒ）、ビデオプロセッサ）を含む。
上記内容は、本発明の実施形態を制限しない、いくつかの例示に過ぎないと理解されるべきである。
【００８２】
本発明の実施形態による情報処理システム５００は、一つ以上のシステムバス５０５をさらに含む。
このような実施形態で、システムバス５０５は、プロセッサ５１０、揮発性メモリ５２０、不揮発性メモリ５３０、ネットワークインターフェース５４０、ユーザーインターフェースユニット５５０、及び一つ以上のハードウェア装置（構成要素）５６０を通信可能に接続するように構成される。
プロセッサ５１０によって処理されたデータ又は不揮発性メモリ５３０の外部から入力されたデータは、不揮発性メモリ５３０又は揮発性メモリ５２０に格納される。
【００８３】
多様な実施形態で、情報処理システム５００は、１つ以上のソフトウェア（構成要素）５７０を含むか、実行する。
一部の実施形態で、ソフトウェア（の構成要素）５７０は、オペレーティングシステム（ＯＳ）及び／又はアプリケーションを含む。
いくつかの実施形態で、ＯＳは、一つ以上のサービスをアプリケーションに提供し、アプリケーションと情報処理システムの多様なハードウェア構成要素（例えば、プロセッサ５１０、ネットワークインターフェース５４０）との間の仲介者として管理又は動作するように構成される。
このような実施形態で、情報処理システム５００は、ローカル（例えば、不揮発性メモリ５３０内に）に設置され、プロセッサ５１０によって直接実行され、ＯＳと直接相互作用するように構成される一つ以上の固有アプリケーションを含む。
【００８４】
このような実施形態で、ネイティブアプリケーションは、プリコンパイル（ｐｒｅ−ｃｏｍｐｉｌｅ）されたマシン実行可能コードを含む。
一部の実施形態で、ネイティブアプリケーションは、スクリプトインタープリタ（たとえば、Ｃシェル（ｃｓｈ）、ＡｐｐｌｅＳｃｒｉｐｔ、オートホットキー（ＡｕｔｏＨｏｔｋｅｙ））又は仮想実行マシン（ＶＭ、例えば、Ｊａｖａ（登録商標）仮想マシン、Ｍｉｃｒｏｓｏｆｔ（登録商標）共通言語ランタイム）を含む。
ソース又はオブジェクトコードを実行可能なコードに変換して、プロセッサ５１０によって実行される。
【００８５】
上述した半導体装置は、多様なパッケージング技術を使用してカプセル化される。
例えば、本発明の実施形態にかかる半導体デバイスは、パッケージオンパッケージ（ＰＯＰ）技術、ボールグリッドアレイ（ＢＧＡ）技術、チップスケールパッケージ（ＣＳＰ）技術、プラスチックのいずれか一つを使用してカプセル化される。
プラスチックリードチップキャリア（ＰＬＣＣ）技術、プラスチックデュアルインラインパッケージ（ＰＤＩＰ）技術、ダイインワッフルパック技術、ダイインウェハーフォーム技術、チップオンボード（ＣＯＢ）技術、セラミックデュアルインラインパッケージ（ＣＥＲＤＩＰ）技術、ＰＭＱＦＰ（ｐｌａｓｔｉｃ  ｍｅｔｒｉｃ  ｑｕａｄ  ｆｌａｔ  ｐａｃｋａｇｅ）技術、ＰＱＦＰ（ｐｌａｓｔｉｃ  ｑｕａｄ  ｆｌａｔ  ｐａｃｋａｇｅ）技術、ＳＯＰ（ｓｍａｌｌ  ｏｕｔｌｉｎｅ  ｐａｃｋａｇｅ）技術、ＳＳＯＰ（ｓｈｒｉｎｋ  ｓｍａｌｌ  ｏｕｔｌｉｎｅ  ｐａｃｋａｇｅ）技術、薄型スモールアウトラインパッケージ（ＴＳＯＰ）技術、ＴＱＦＰ（ｔｈｉｎ  ｑｕａｄ  ｆｌａｔ  ｐａｃｋａｇｅ）技術、  ＳＩＰ（ｓｙｓｔｅｍ  ｉｎ  ｐａｃｋａｇｅ）技術、マルチチップパッケージ（ＭＣＰ）技術、ウェハーレベル製造されたパッケージ（ＷＦＰ）技術、ウェハーレベル処理されたスタックパッケージ（ＷＳＰ）技術、又は当業者に知られている他の技術を使用してカプセル化される。
【００８６】
方法の段階は、入力データを操作して出力を生成することにより、機能を遂行するためにコンピュータプログラムを実行する１つ以上のプログラム可能なプロセッサによって実行される。
方法の段階は、また、特殊目的論理回路、例えば、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）又はＡＳＩＣ（特定用途向け集積回路）によって実行され、装置が具現される。
【００８７】
多様な実施形態で、コンピュータ読み出し可能媒体は、実行されるときに、装置をして方法の段階の少なくとも一部を実行させる命令語を含む。
一部の実施形態で、コンピュータ読み出し可能媒体は、磁気媒体、光学媒体、他の媒体又はこれらの組み合わせ（例えば、ＣＤ−ＲＯＭ、ハードドライブ、読み出し専用メモリ、フラッシュドライブ）に含まれる。
このような実施形態で、コンピュータ読み出し可能媒体は、有形的かつ非一時的に具現された製造物品であり得る。
【００８８】
尚、本発明は、上述の実施形態に限られるものではない。本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【符号の説明】
【００８９】
１００、２００、３００    システム
１０２    ホスト処理装置（プロセッサ）
１０４    再プログラム可能なオフロード処理装置（ＲＯＰＤ）
１０６    入出力（Ｉ／Ｏ）システム
１１２    コンピューティング装置
１１４    （分散）ストレージシステム（データノード）（ストレージ媒体）
１８０    ストレージ装置
１９８    チャンク
２０２    オフロード処理回路
２０４    メモリ
２１２    入力データ
２１４    出力データ
２２２    メモリインターフェース回路
２２４    メモリバッファ回路（バッファ）
２２６    エラーコード計算回路（ＥＣＣＣ）
２２８    アドレスコントローラ
２３０    インデックステーブル
２３２    ホストインターフェース
２４２    係数テーブル
２４４    乗算器
２４６    加算器
２５２    データエレメント
２５４    誤り訂正符号
【図１】
2020095722.tif 000003
【図２】
2020095722.tif 000004
【図３Ａ】
2020095722.tif 000005
【図３Ｂ】
2020095722.tif 000006
【図４Ａ】
2020095722.tif 000007
【図４Ｂ】
2020095722.tif 000008
【図５】
2020095722.tif 000009