(57)【要約】  データを冗長的に符号化する方法は、データを列及び行にフォーマットすることと、符号化変換を使用してデータの第１及び第２の射影のセットを生成することとを含む。生成された射影のセットごとに、符号化変換の符号化パラメータが異なる値に設定される。第１及び第２の射影のセットは符号化データとして記憶される。復号する方法は、データフラグメント数の表示を含む設定を読み取る。第１または第２の復号モードのいずれを使用するかを決定するために、データフラグメント数が符号化データの第１の射影のセット内の射影数と比較される。そして、選択された復号モードに従って符号化データが復号され、結果が出力される。【選択図】図１
2019533397.tif 000002
【特許請求の範囲】
【請求項１】
データを冗長的に符号化する方法であって、
回路によって、符号化されるデータを受信することと、
前記回路によって、前記データを行及び列にフォーマットすることと、
前記回路によって、符号化変換に基づいて、前記符号化変換の符号化パラメータの第１のパラメータ値を使用して、第１の射影のセットを生成することと、
前記回路によって、前記符号化変換に基づいて、前記第１のパラメータ値とは異なる前記符号化パラメータの第２のパラメータ値を使用して、第２の射影のセットを生成することと、
前記受信されたデータに対応する符号化データとして前記第１及び第２の射影のセットを記憶することと
を含む、前記方法。
【請求項２】
前記フォーマットするステップが、少なくともデータチャンク数（ｋ）及びパリティチャンク数（ｍ）を示す構成パラメータに従って前記データを行及び列にフォーマットすることを含む、請求項１に記載の方法。
【請求項３】
前記パリティチャンク数（ｍ）に基づいて整列されたパリティ射影パッケージを生成することをさらに含み、前記符号化データの復号中に反復ごとに複数のピクセルの解決を可能にするために、前記整列されたパリティ射影パッケージが前記符号化データと共に記憶される、請求項２に記載の方法。
【請求項４】
前記符号化変換がＭｏｊｅｔｔｅ変換を含み、前記符号化パラメータが前記Ｍｏｊｅｔｔｅ変換の射影角を定義する、請求項１に記載の方法。
【請求項５】
前記第１のパラメータ値がゼロである、請求項４に記載の方法。
【請求項６】
前記第２のパラメータ値がゼロ以外の値である、請求項５に記載の方法。
【請求項７】
プロセッサによって実行されると、前記プロセッサに請求項１に記載の方法を実行させるコンピュータ可読命令を記憶する、非一時的コンピュータ可読媒体。
【請求項８】
データを冗長的に符号化する符号化装置であって、
符号化されるデータを受信するように構成される通信回路と、
処理回路であって、
前記データを行及び列にフォーマットし、
符号化変換に基づいて、前記符号化変換の符号化パラメータの第１のパラメータ値を使用して、第１の射影のセットを生成し、
前記符号化変換に基づいて、前記第１のパラメータ値とは異なる前記符号化パラメータの第２のパラメータ値を使用して、第２の射影のセットを生成し、
前記受信されたデータに対応する符号化データとして前記第１及び第２の射影のセットをメモリに記憶する
ように構成される、前記処理回路と
を備える、前記符号化装置。
【請求項９】
符号化データを復号する方法であって、
回路によってメモリから、前記符号化データを復号する方法を決定するための設定を読み取ることであって、前記設定が前記データの復号に必要な少なくともデータフラグメント数及びパリティフラグメント数を含む、前記読み取ることと、
前記回路によって、前記符号化データを読み取ることと、
前記回路によって、前記符号化データの第１の射影のセット内の射影数が、前記設定に示される前記データフラグメント数に等しいか否かを判定することと、
前記回路によって、前記第１の射影のセット内の前記射影数が、前記設定に示される前記データフラグメント数に等しいか否かに基づいて、前記符号化データを復号するための第１の復号モード及び第２の復号モードの一方を選択することと、
前記回路によって、前記第１及び第２の復号モードのうちの前記選択された一方によって前記符号化データを復号することと、
前記回路によって、前記符号化データを復号することによって生成されるデータを出力することと
を含む、前記方法。
【請求項１０】
前記設定によって示される前記データフラグメント数が前記第１の射影のセット内の前記射影数に等しい場合、前記符号化データが前記第１の射影のセットを使用して前記第１の復号モードに従って復号される、請求項９に記載の方法。
【請求項１１】
前記設定によって示される前記データフラグメント数が前記第１の射影のセット内の前記射影数に等しくない場合、前記符号化データが、前記第１の射影のセットと、前記符号化データに含まれる第２の射影のセットからの少なくともいくつかの射影とを使用して前記第２の復号モードに従って復号される、請求項９に記載の方法。
【請求項１２】
前記第２の復号モードにおいて、前記符号化データと共に記憶される整列されたパリティ射影パッケージに基づいて、前記第２の射影のセットを使用して復号反復ごとに複数のピクセルが解決される、請求項１１に記載の方法。
【請求項１３】
前記符号化データを復号することが、各反復が正しく復号された結果を生成しないプリアンブル復号フェーズと、各反復が正しく復号された結果を生成する安定復号フェーズとを含む、請求項９に記載の方法。
【請求項１４】
データ破損を検出するために、復号前に前記符号化データをパリティチェックすることをさらに含む、請求項９に記載の方法。
【請求項１５】
前記回路がネットワーク内に分散された複数のプロセッサを含み、各プロセッサが前記復号の少なくとも一部を実行するために消失符号認識アプリケーションを実行する、請求項９に記載の方法。
【請求項１６】
前記復号することが、前記プロセッサによってベクトル化コードを使用して実行される、請求項９に記載の方法。
【請求項１７】
前記復号することが、単一命令複数データ（ＳＩＭＤ）拡張を使用して前記符号化データの復号を高速化することを含む、請求項９に記載の方法。
【請求項１８】
プロセッサによって実行されると、前記プロセッサに請求項９に記載の方法を実行させるコンピュータ可読命令を記憶する、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の進展は一般にはデータストレージのための、より詳細には、消失が存在することに応じたデュアルモード動作を有する不完全なネットワーク上での高効率な分散データ転送における使用のための、組織符号及び非組織符号の組み合わせを使用するＭｏｊｅｔｔｅ変換に基づく消失符号設計に関する。
【背景技術】
【０００２】
データストレージ環境におけるデータ破損は、ハードウェア、ネットワーク、ディスク、環境、放射線、電気、ソフトウェアなどの多くの異なる原因を有し得、全てクライアントアプリケーションのデータ誤りにつながる。分散データ及びアプリケーションにますます注目が集まっている今日のデータ環境では、問題はより安全なデータセンターＤＣから、小型の、モノのインターネットＩｏＴデバイス及びインターネットへと移っている。データ誤りの問題を軽減するために、ＤＣはデータをいくつかのＤＣサイトに複製して、常にデータのコピーを用意しておく。しかしながら、データのコピーを複製すると、データコピー間に時間的なずれが生じ、データ量が増大し、さらにＤＣが全てのデータを維持できるようにするために多くの余分な作業が発生する。
【０００３】
前方誤り訂正ＦＥＣ符号を導入することによって、安価ディスクの冗長配列ＲＡＩＤの管理に関して、ＤＣにおけるこの状況は大きく改善した。しかしながら、現在のリードソロモンＦＥＣ符号及び類似のＦＥＣ符号は、広域分散ストレージに対する将来のニーズの分散データストレージ処理にはあまり適していない。今日、ストレージの標準は組織消失符号を使用するものであり、ここで組織符号とは入力データが符号化出力に埋め込まれる場合を指し、一方、非組織符号とは出力が入力シンボルを含まない場合を指す。本来Ｍｏｊｅｔｔｅ変換は非組織符号であり、無消失動作モード中は最適な性能を有さず、レガシーデータストレージ消失符号フレームワーク、または組織消失符号ライブラリ用に設計された消失符号対応符号フレームワークにも直接適合しない。
【０００４】
Ｍｏｊｅｔｔｅ変換は本来非組織符号であり、パリティチャンクは対応する組織的チャンクよりも大きいサイズ（１＋ε）を有し、ここでイプシロンはε＞０であるので、データチャンクよりも多くの情報を含むパーティチャンク（ｍ個）が生成される。ｍ個のパリティチャンクのこの特性は、最適性能を生み出すための基礎として、ε＞＞０のｍ個のパリティ射影の整列されたパッケージを有する復号処理のＣＰＵサイクルを削減する目的で、最新のＣＰＵ上で使用されることが後に分かる。
【０００５】
組織符号の一例として、リードソロモン符号は、組織符号である場合に消失が存在しなければ最適性能で動作するが、消失が存在する必要性がある場合には動作中に深刻な問題を被る。リードソロモンのこの予測不可能な性能のため、性能がそれほど重要ではないコールドデータストレージ及びアプリケーションに主に適した消失符号が利用される。したがって、既知の欠点に対抗するために、データの符号化及び復号に関連する代替のメカニズムを提供することが本技術では必要である。本発明の進展は、そのようなメカニズムを提供して従来の符号化及び復号メカニズムの欠点の少なくともいくつかを軽減することを目的とする。
【発明の概要】
【０００６】
本発明の進展は、復号フェーズを最低２フェーズに、すなわち、プリアンブルフェーズ及び安定フェーズに分割し、次いで安定フェーズ中に反復ごとに複数のピクセルを効率的に解決することによって、データブロック、ファイル、または他のフォーマットの形態のデータの符号化及び復号が改善され得るメカニズムを提供する。本明細書に開示した符号化及び復号メカニズムは誤って復号されたデータまたは消失したデータの再構成または再構築を可能にするので、本発明の進展は特に、よりロバストなデータストレージを可能にする。誤って復号されたデータの訂正は加算及び減算の形の算術演算しか利用しないので、本発明の進展は計算集約的でない訂正をさらに提供する。これにより、たとえば分散データストレージに記憶されたデータを訂正する場合の計算要求が減少する。
【０００７】
本発明の進展では、無消失動作中の最適性能動作と組み合わせて、Ｍｏｊｅｔｔｅ変換を含む誤り検出及び訂正と共に、組織的及び非組織的な組み込みのデュアルモード動作を有する、本明細書ではＯＰＴＦＥＣと呼ぶ高性能かつ高可用性の消失符号の生成を説明する。本発明の進展ではさらに、ＤＣ実装だけでなくＩｏＴ及びクラウドストレージなどの広域分散ストレージネットワークに対してどのようにＯＰＴＦＥＣ符号を導入するか、及びどのようにＯＰＴＦＥＣがデータ変換に含まれるかを説明する。
【０００８】
本発明の進展の一例示的態様によれば、データを冗長的に符号化する方法は、回路によって、符号化されるデータを受信することと、回路によって、データを行及び列にフォーマットすることとを含む。方法は、回路によって、符号化変換に基づいて、符号化変換の符号化パラメータの第１のパラメータ値を使用して、データの第１の射影のセットを生成することと、回路によって、符号化変換に基づいて、第１のパラメータ値とは異なる符号化パラメータの第２のパラメータ値を使用して、データの第２の射影のセットを生成することとをさらに含む。次いで、第１及び第２の射影が符号化データとして記憶される。
【０００９】
本発明の進展の他の例示的態様によれば、データを冗長的に符号化する符号化装置は、符号化されるデータを受信するように構成される通信回路と、処理回路とを含む。処理回路は、データを行及び列にフォーマットし、符号化変換に基づいて、符号化変換の符号化パラメータの第１のパラメータ値を使用して、第１の射影のセットを生成する。
【００１０】
また、処理回路は、符号化変換に基づいて、第１のパラメータ値とは異なる符号化パラメータの第２のパラメータ値を使用して、第２の射影のセットを生成する。次いで、処理回路は、受信されたデータに対応する符号化データとして第１及び第２の射影のセットをメモリに記憶する。
【００１１】
本開示のさらなる例示的態様によれば、符号化データを復号する方法は、回路によってメモリから、符号化データを復号する方法を決定するための設定を読み取ることであって、設定がデータの復号に必要な少なくともデータフラグメント数及びパリティフラグメント数を含む、読み取ることを含む。方法は、回路によって、符号化データを読み取ることと、回路によって、符号化データの第１の射影のセット内の射影数が、設定に示されるデータフラグメント数に等しいか否かを判定することとをさらに含む。方法は、回路によって、第１の射影のセット内の射影数が、設定に示されるデータフラグメント数に等しいか否かに基づいて、符号化データを復号するための第１の復号モード及び第２の復号モードの一方を選択することと、回路によって、第１及び第２の復号モードのうちの選択された一方によって符号化データを復号することとをさらに含む。次いで、方法によれば、回路は、符号化データを復号することによって生成されるデータを出力する。
【００１２】
本発明及びその付随する利点の多くについてのより完全な理解は、以下の詳細な説明を、添付の図面と関連して考慮しながら参照することによってよりよく理解されるので、容易に得られるであろう。
【図面の簡単な説明】
【００１３】
【図１】データを符号化するための例示的なアルゴリズムを示す流れ図である。
【図２】データを復号するための例示的なアルゴリズムを示す流れ図である。
【図３】各行に６ピクセルを有する３行のブロックの、ｑ＝０射影ｐｒｏｊ（１，０）とｑ＝０射影でない射影との組み合わせ、すなわち、ｑ＝０射影ｐｒｏｊ（１，０）ならびにｑ≠０射影ｐｒｏｊ（−２，１）、ｐｒｏｊ（２，１）へのＭｏｊｅｔｔｅ変換符号化の一例の図である。
【図４】図３の符号化された例を図２の手順と共に使用した復号例であって、消失のない例の図である。
【図５】図３の符号化された例を図２の手順と共に使用した復号例であって、２行目のｐｒｏｊ（１，０）が欠落しており、消失が存在し、ブロック内の欠落した行を再構築する例の図である。
【図６】図６ａは、データサイズｂ＝６４であって、ｋデータチャンクの数がマトリクスの行数と同一ｋ＝４であるマトリクス構成に対してピクセルが行ごとに配置された例示的なピクセルマトリクス構成の図である。図６ｂは、データサイズｂ＝６４であって、ｋデータチャンクの数がマトリクスの行数と同一ｋ＝４であるマトリクスにピクセルが列ごとに配置されたピクセルマトリクスの可能なレイアウトの第２の例の図である。
【図７】復号演算の異なるフェーズの一例の図である。プリアンブル１〜２フェーズ、安定２〜３フェーズ、及び復号の所与の構成例に対して均一な場合、ここではポストアンブルフェーズ（３〜最後）はない。これらのフェーズは実世界のデータサイズ、すなわち４ｋｂ以上で示された場合にはサイズが異なり、プリアンブルフェーズ及びポストアンブルフェーズが安定フェーズと比較して非常に短くなる。
【図８】ｍパリティチャンク、ここではＰ（２，１）の例示的なグラフィカル表現である。これはｍパリティ射影Ｐ（２，１）の表現であり、同図にビン及びピクセル位置の両方を示し、最上行に１から２２までのビン番号を示し、最下行に所与のビンについて垂直方向に合計したピクセル位置の総和を示す。マトリクス内の数字はピクセル位置番号であり、ピクセルレイアウトは様々な方法で行うことができるが、ここでは単純な行ごとのレイアウトを行って、ベクトル化コードを使用した場合に最大の高速化が得られるやり方で、ｍ個のパリティ射影にわたる反復ごとに複数のピクセルを解決するように、整列されたｍ個のパリティ射影が動作し得る方法を示す。これを簡単にするために、ピクセル位置の値及び位置ＩＤ番号は同一にすることができる。
【図９】データサイズｂ＝６４であって、ｋデータチャンクの数がマトリクスの行数と同一ｋ＝４である、反復ごとに２ピクセルを解決するように構成された３チャンクの例示的な整列されたｍパリティチャンクパッケージの図である。ここではｍパリティチャンクＰ（２，１）、Ｐ（４，１）、Ｐ（６，１）が第２の例に使用される。
【図１０】表１に記載したようにプリアンブルフェーズが行われた後の例示的なｍパリティチャンクパッケージの図であり、ここでゼロは、復号用のＭｏｊｅｔｔｅ変換を使用して、ビンがピクセル値を減算し、結果をマトリクスに挿入したことを示す。プリアンブルフェーズの終わりは、各ｍパリティチャンクが、大きさでソートした場合のｍパリティチャンクのｐ値及び行番号によって与えられる正しい行を解決したときである。ソートは設定に基づいて昇順または降順で行うことができるが、この例では最上行が最大であり、最下行が最小である。
【図１１ａ】ｍパリティチャンクＰ（４，１）を使用した安定フェーズ復号のためのこの例の例示的な初期のステップ１４の反復の図である。
【図１１ｂ】ｍパリティチャンクＰ（６，１）を使用した安定フェーズ復号のためのこの例の例示的な初期のステップ１５の反復の図である。
【図１１ｃ】ｍパリティチャンクＰ（２，１）を使用した安定フェーズ復号のためのこの例の例示的な初期のステップ１６の反復の図である。
【図１１ｄ】ｍパリティチャンクＰ（４，１）を使用した安定フェーズ復号のためのこの例の例示的な初期のステップ１７の反復の図である。
【図１１ｅ】ｍパリティチャンクＰ（６，１）を使用した安定フェーズ復号のためのこの例の例示的な初期のステップ１８の反復の図である。
【図１１ｆ】ｍパリティチャンクＰ（２，１）を使用した安定フェーズ復号のためのこの例の例示的な初期のステップ１９の反復の図である。
【図１２】表２にさらに記載したこの例での復号の安定フェーズの後の例示的なｍパリティチャンクパッケージの図であり、ここでゼロは、復号用のＭｏｊｅｔｔｅ変換を使用して、ビンがピクセル値を減算し、結果をマトリクスに挿入したことを示す。
【図１３】図１３ａは、本発明の進展の例示的態様による符号化を行うための装置を示すブロック図である。図１３ｂは、本発明の進展の例示的態様による符号化を行うための装置を示すブロック図である。
【図１４】本発明の進展の例示的態様による対応する符号化及び復号装置によって使用される提案した符号化及び復号のコンピュータプログラム実装を示すブロック図である。
【図１５】クライアントが分散したデータストレージプロバイダからデータにアクセスする方法の概略図であり、本発明の進展の例示的態様に従ってデータが符号化及び復号される。
【発明を実施するための形態】
【００１４】
いくつかの図にわたり同様の参照番号が同一または対応する部分を示す図面をここで参照すると、不完全なネットワーク上の分散データストレージのために高性能ＦＥＣ符号に対する大きな需要がある。好ましくは、そのような符号は広域分散ストレージソリューションに適合させるべきであり、それによってエンドツーエンドのデータ完全性を実現することができる。符号は、好ましくは、欠陥のある符号化データを再構成するための安全かつロバストな方法も提供すべきである。そのようなデータ欠陥はハイエンドのコンピューティングクラスタには普通のことであり、単一の誤りであっても、大抵の場合他の処理に広がるカスケードパターンの破損を引き起してアプリケーションに深刻な影響を与える可能性がある。
【００１５】
今日のストレージサーバはデータを記憶するための大容量を有しており、ソーシャルデータ及び監視データの集中的な使用によって、低コストの高可用性かつ分散型のストレージに対するこの需要が高まる。携帯電話、スマートフォン、タブレット、及びＩｏＴデバイスなどの小型デバイスでも、クラウドまたはプライベートＤＣの安定したストレージに転送されるより多くのデータを生成するにつれて、より高い性能が必要となる。
【００１６】
いかなるアプリケーションでもデータ損失は容認できないので、ＤＣはデータを他のストレージまたはＤＣに複製して常にデータのコピーを保持することによって保護せざるを得ない。これにより、データまたはストレージが任意の種類の状況によって失われた場合にデータを再構成することが可能になる。しかしながら、ノードが失われると全てのデータが完全に転送され複製されなければならないので、大量のデータを処理する場合に複製は準最適である。複製には、異なるストレージに異なるバージョンのデータを有するという意味もあり、これにより管理及び維持が非常に困難になり、作業が管理者に集中する。複製環境のデータ量も、上記のセキュリティ上の必要性と、世界中またはオフィス間にデータを分散させる必要があるので、通常は元のデータの３〜７倍になる。
【００１７】
リードソロモンなどの消失符号化技術の導入によって、ＤＣの状況は大きく改善した。これらの状況では、複製はＲＡＩＤに置き換えられ、それによって記憶容量の必要量が３〜５分の１に減少し、その結果、ＤＣ内でのコスト、環境、メンテナンス、及び安全性に関する利点が得られる。
【００１８】
今日の消失符号ライブラリでは、異なる設定パラメータに標準的な名称を付与して異なるライブラリをアプリケーションに統合しやすくするための業界標準が確立されている。以下では、ｋはＯＰＴＦＥＣのｐｒｏｊ（１，０）射影に対するデータフラグメントまたはデータチャンクの数を表し、ＯＰＴＦＥＣがブロックを再構築するための射影の最小数、及びＯＰＴＦＥＣブロックの行数をさらに表す。また、ｍはＯＰＴＦＥＣのｐｒｏｊ（ｐｉ，ｑｉ≠０）射影についてのパリティフラグメントまたはパリティチャンクの数を表し、データブロックの再構築または再構成を可能にしつつも失われ得る射影の最大数をさらに表す。さらに、パケットサイズ＝｛バイト｝または単にｂはブロックサイズまたはファイルサイズを表し、本発明の進展の例示的態様によるデータの符号化及び復号において使用される図６ａ及び図６ｂのマトリクスのサイズを与える。
【００１９】
リードソロモン消失符号には、データ生成アプリケーションが無消失状況を使用してバックエンドストレージノード上のデータを全て読み取って検証できるようにしている標準的な実装もある。そして、データ生成アプリケーションは、データ及びパリティチャンクに対する全ての要求も処理し、消失が存在しないかを検出したのち、アプリケーション自体でデータチャンクからデータの再組み立てを行う。しかしながら、欠落したデータチャンクが存在する場合、受信したいくつかのデータチャンクが必要数のパリティチャンクと共に、復号演算用の消失符号復号インターフェースに送られる。
【００２０】
図１及び図２の流れ図の符号化及び復号は、消失符号対応のアプリケーション上で動作することができ、異なるステップは、最適な機能性のために異なるハードウェア層及びソフトウェア層の間で分割することができる。符号化及び復号の両方の演算を分散コンピュータノード上で実行して、集中的な計算をオフロードし、またネットワークエッジ上の小型の低電力ＣＰＵからデータトラフィックをオフロードし再構築することができる。しかしながら、リードソロモン型の消失符号は、１つのノードに障害が発生した場合にレイテンシが性能に重大な影響を及ぼす可能性があり、データ再構成のためにインターネットを介して他の全てのノードと通信する必要がある分散アプリケーションには適さない。したがって、分散ストレージでは、アプリケーションは、１つまたは複数のストレージノードと通信するクライアントに対して個別であり中央処理装置（ＣＰＵ）集約的でない消失符号を必要とする。
【００２１】
消失符号化のためのデータ入力は、多くの異なるソース及びアプリケーションから生成され、次いでそのフルサイズで、またはチャンクとして、符号化演算用の消失符号の入力インターフェースに渡される。入力データは、映画ファイル、文書ファイル、実行可能ファイル、ライブビデオ、または当業者が認識するような任意の種類のデータであり得る。入力インターフェースに送られたデータは、構成が有するｋ個のデータチャンクと同数の行を含むデータマトリクスに転送される。行の長さは、符号化演算用の入力インターフェースに送られるデータのサイズ、または入力構成設定により与えられる、アプリケーションまたは消失符号のいずれかによって特定のサイズに事前にチャンク化されたデータのサイズによって決まる。復号器はｋ個のデータチャンクを行ごとに復号し始め、次いでｍパリティチャンクの数の構成設定により決定されるｍ個のパリティチャンクを計算する。
【００２２】
符号化器からのｋ個のデータチャンク及びｍ個のパリティチャンクが存在する場合、それらは別々のディスクまたは他のストレージに安全に保管するためにそれぞれの構成されたバックエンドに転送される。ｍ個及びｋ個のチャンク全てが一度に失われないようにｍ個のパリティチャンク及びｋ個のデータチャンクが冗長性を有するように分離されている限り、バックエンドは単一のディスク、Ｓ３、ＮＦＳなどのファイルシステムもしくはストレージインターフェース内のフォルダ、またはＩＳＣＳＩなどのブロックデバイスとすることができる。
【００２３】
その後符号化が行われ、別々のｍ個及びｋ個のチャンクは、データを再組み立てまたは再構築し復号するのに必要な全ての情報を含まず、データを復号するには少なくともｋ個のチャンクが消失符号の復号器インターフェースに供給される必要がある。ｋ個のチャンクなしでは異なるバックエンドからデータを再組み立てできないことは、復号演算が複数のバックエンドストレージノードまたはディスクにアクセスできる必要がある場合に、データセキュリティ目的にも使用することができる。
【００２４】
復号は所与の設定に従って動作して、復号器のインターフェースに送られたデータ及びパリティチャンクを再組み立てまたは復号する。ｋ個のデータチャンクのうちｋ個未満が復号器インターフェースに送られた場合、復号演算が必要となる。ｋ個のデータチャンクが送られた場合、再組み立て演算はｋ個のデータチャンクのデータを選択されたマトリクスに転送することができ、マトリクスのレイアウト及びサイズによっては、パリティチャンクを使用した復号が不要な場合がある。所与の設定が消失符号対応に設定されている場合、消失がなければ、データの再組み立てはアプリケーションによって直接行われる。次いで、復号または再組み立てされたデータは、復号演算の送達ポイントであるインターフェースに転送される。たとえば、映画または大きな写真のようにデータのサイズが大きい場合、データはアプリケーションによってチャンク化され得る。アプリケーションによるそのようなチャンク化によって、ネットワークを介した転送及び様々な動作がより効率的になる。その後、全ての復号演算及びチャンクの再組み立てが完了し、消失符号構成の冗長性のために、いくつかのバックエンドデータノードが失われたとしても、元のデータは元の状態になる。
【００２５】
本発明の進展の例示的態様によれば、新規のバージョンのＭｏｊｅｔｔｅ変換を使用して、復号データの特定の表現を提供する。以下では、「ビン」という用語は、Ｍｏｊｅｔｔｅ変換射影における射影要素を表すために使用される。簡潔に言えば、Ｍｏｊｅｔｔｅ変換は線形離散正確（ｅｘａｃｔ）ラドン変換、すなわち、離散画像ｆを記述するＩ個の離散射影のセットである。射影角は離散方向φｉ＝ａｒｃｔａｎ（ｑｉ／ｐｉ）の中から選択され、ここで添字ｉは整数値をとり、ｐｉ及びｑｉは互いに素であり、すなわち、最大公約数が１、ＧＣＤ（ｐｉ，ｑｉ）＝１である。これらのアルゴリズムの１つの利点は、符号化及び復号演算のために加算及び減算しか使用しないので、演算に関するＣＰＵ制約が最小となり、アプリケーションが高速になることである。この文書の教示、特にセクション２のＭｏｊｅｔｔｅ変換、セクション３の射影の選択、及びセクション４のビンの選択の説明が引用により本明細書に組み込まれている。
【００２６】
射影の第１の例（ｐ，ｑ）  ｐ１＝（０，１）、ｐ２＝（１，１）、ｐ３＝（−１，１）は、計算された各射影について最小の追加データを与え、単純な再構成経路を有する場合に、保管目的の基本的なＭｏｊｅｔｔｅ構成に適していることを示す。この文書の教示全体、特にセクション２のＭｏｊｅｔｔｅ変換及びセクション３のジオメトリ駆動型再構成の説明が引用により本明細書に組み込まれている。他方、最大性能が復号演算に必要とされる場合、ｍ個のパリティ射影はより大きいイプシロンε＞＞０を有するように選択することができる。使用されるＣＰＵに応じて、最大のεを設定することができ、パリティ射影パッケージとして機能する整列されたｍパリティ射影が計算される。
【００２７】
第２の例は、ｍ個のパリティ射影にわたる反復ごとに１ピクセルを復号する代わりに、反復ごとに２ピクセルが復号される構成を含む。この消失符号構成例では、次のパラメータ：ブロックサイズ＝１２８、データチャンク数（ｋ）＝４、パリティチャンク数（ｍ）＝３が使用される。基本のケースでは、対応する射影は（ｐ，ｑ）  ｐ１＝（０，１）、ｐ２＝（１，１）、ｐ３＝（−１，１）であり、イプシロンが最小ε≒０になる。より高い性能のための構成が使用される場合、ｍ個のパリティチャンクは増加させることができ、イプシロンはε＞＞０となる。対応する整列されたパリティ射影は、ｍパリティ射影反復ごとに最低２ピクセルを解決する場合、（ｐ，ｑ）  ｐ１＝（２，１）、ｐ２＝（４，１）、ｐ３＝（６，１）であり、ここで、整列されたｍ個のパリティ射影のｐ値はｐ１からｐ３までピクセルステップ２で増加する。εの増加または他の制約に基づいてピクセルステップが５である場合、整列されたｍパリティチャンクパッケージは（ｐ，ｑ）  ｐ１＝（５，１）、ｐ２＝（１０，１）、ｐ３＝（１５，１）となる。明確にすると、整列されたｍパリティ射影パッケージとは、復号演算の安定フェーズの間に、反復ごとに１より大きい最小安定ピクセルステップを有する、ｐ値が異なるいくつかのパリティチャンクである。ピクセルステップとは、反復ごとに解決可能なピクセル数である。
【００２８】
復号もまた、整列されたｍパリティ射影パッケージをサポートするために最低２つのフェーズに分割される。これら２つのフェーズはプリアンブルフェーズ及び安定フェーズである。必要であれば、ブロックサイズが均一でない場合、ポストアンブルフェーズが含まれてもよい。ポストアンブルフェーズはプリアンブルフェーズと同様に機能し、ピクセルステップの次の最大サイズを検出する。プリアンブルフェーズの終わりが検出されるのは、ｐ値でソートされたｍ個のパリティ射影が正しい行を解決したときであり、ここで最大のｐ値が最上行を解決する。復号器はＭｏｊｅｔｔｅ変換のためにジオメトリ駆動型再構成アルゴリズムを使用し、左から右に向かって進み、ｍ個のパリティ射影にわたり反復して、復号演算の各フェーズ、すなわち、プリアンブルフェーズ、安定フェーズ、及び必要であれば最後のポストアンブルフェーズの間に、反復ごとに最大数のピクセルを解決する。
【００２９】
所与の例示的なケースにおいて、プリアンブルフェーズが１３ステップ後に終了し、その後復号器が、１つのｍパリティ射影を使用してブロック内の１つの設定された行を解決する安定フェーズを実行する準備ができている一例を表１に与える。
【００３０】
εがより大きいと復号はある程度まで高速化されるが、ハードウェア／ソフトウェアの制約によりさらなる高速化が不可能になる程度までεを増加させることもできる。また、完全に整列されたｍパリティ射影パッケージを使用しない場合、復号器はｍ個のパリティ射影にわたる反復ごとに解決可能な最大ピクセル数を特定する必要があり、これによって復号が遅くなり得る。安定フェーズ中に完全に整列されたｍパリティパッケージによって解決可能な最小ピクセル数は、パリティ射影間のｐ値のピクセルステップ増分である。構成及び失われたデータ射影に応じて、ｍパリティ射影のビンごとに解決するピクセルが常に１つのみとなるフェーズなく復号のために完全なベクトル化を行うことができる１つの消失（失われた１つのデータチャンク）の時点まで、これは大幅に異なり得る。特定の１つの消失のケースを、図５に一例として詳細に見ることができる。このケースでは、非組織的Ｍｏｊｅｔｔｅ変換がデータチャンクを全く有さず、復号演算のためにｍ個のパリティチャンクしか有さない場合に、１つの消失に対する完全にベクトル化された解決策は利用できない。
【００３１】
Ｍｏｊｅｔｔｅ変換はデータの２次元表現に適用される数学的演算である。本明細書で使用される場合、それはデータの効率的なデータストレージ表現を得るためにデータブロックに適用される。Ｍｏｊｅｔｔｅ変換は、データブロックを符号化してデータブロックの特定の表現を提供するための特定の方法として使用され得る。この目的を達成するため、この変換は、たとえばデータブロック表現など、Ｍｏｊｅｔｔｅ変換を使用して符号化するのに適した形式が与えられた特定のデータを入力として受け取る。データブロックは、一般にブロックサイズと呼ばれる特定のサイズを有する特定の情報、すなわちバイトまたはビットのシーケンスである。データ要素または値はデータブロックのシーケンスの一部を形成し、たとえば図３に示す６×３データブロックを参照されたい。Ｍｏｊｅｔｔｅ変換がデータブロックに適用されると、いくつかの射影が得られる。これらの射影は元のデータの特定の表現を与える。Ｍｏｊｅｔｔｅ変換を使用することによって得られる有益な特徴は、加算及び減算の形の算術演算しか必要としないことである。これにより、分散ストレージに記憶されたデータにアクセスするクライアントのＣＰＵの計算上の要求が軽減される。
【００３２】
Ｍｏｊｅｔｔｅ変換演算子またはＭｏｊｅｔｔｅ射影演算子は、データの２次元表現に適用される。データによって保持される特定の情報を表す要素を有する２次元配列が離散関数ｆ（ｋ，ｌ）によって表せることを考え、ここでｋ及びｌは配列の離散要素、たとえばピクセルまたはサンプルを表す。２次元配列では、これらはそれぞれ列及びラインまたは行を表す。
【００３３】
Ｍｏｊｅｔｔｅ変換／射影演算子は次のように定義される。
【数１】
2019533397.tif 000003
【００３４】
総和のインデックスＰ及びＱはデータブロックのサイズに対応し、すなわち、データはサイズＰ×Ｑのデータブロック表現が与えられ、ａは要素またはピクセルが中央にあるラインを指定する数である。Ｍｏｊｅｔｔｅ変換演算子を特定のデータブロックに適用すると、特定のラインａ＝ｐｉｌ−ｑｉｋａ＝ｐｉｌ−ｑｉｋの中央にある要素またはピクセルの総和がもたらされ、ここで特定のラインは、ａ＝０のときδ（ａ）＝１，であり、それ以外は０であるクロネッカーのデルタ関数から推測することができる。以下では、ａはｐｒｏｊ（ｐｉ,ｑｉ，ａ）ｐｒｏｊ（ｐｉ,ｑｉ，ａ）の変数から外され、射影は単に（ｐｉ，ｑｉ）によって表される。上記の式（１）を使用して、任意のｐ及びｑの値によって任意の射影を生成することができる。射影ごとの、ビン数とも呼ばれるライン合計の数Ｂは次式で与えられる。
【数２】
2019533397.tif 000004
【００３５】
本発明の進展の例示的態様では、最適なピクセルステップサイズを計算する。最適なピクセルステップを求めるための１つの方法を以下に説明し、ここでｑ＝１であり、ｐ値は全て正である。この例では、入力されたｍ個のパリティチャンクは、３つの消失を解決するＰ（３０，１）、Ｐ（２５，１）、Ｐ（２０，１）である。
【００３６】
１．ｍ個のパリティチャンクをそれらのｐ値に従ってソートする。ソートされたｐ値は３０、２５、２０となる。
【００３７】
２．ソートされたｍ個のパリティチャンクのペアごとにｐ間の差を計算する。この計算の最小値は使用可能な最小安定ピクセルステップでもある。ｐ値間の差は５、５である。
【００３８】
３．ソートされたｍ個のパリティチャンクの各ｐ値を、そのチャンクが解決しようとしている消失で除算することによって、ピクセルステップ係数を計算する。たとえば、ここでは３つの消失があり、最大のｐ値が最大の消失を解決する。次いで、前にステップ２で求めたｐ値間の最小差でも除算する。３０／（３＊５）＝２、２５／（２＊５）＝２．５、２０／（１＊５）＝４となる。
【００３９】
４．上記のｍ個のパリティチャンクから最小ピクセルステップ係数を求め、これに前にステップ２で求めた最小ピクセルステップを乗算することによって、最適ピクセルステップを計算する。これはここでは、この例におけるｍ個のパリティチャンクに使用可能な最大安定ピクセルステップである。最適なピクセルステップは、ステップ２の最小差から計算され、これにステップ４の最小係数を乗算する。最適なピクセルステップはこの例では５＊２＝１０となる。
【００４０】
負のｐ値も使用される場合、この計算は正の場合と同一の方法で行うことができる。上記の方法を使用して入力されたｍ個のパリティチャンクから最適なピクセルステップを求める場合、ｍパリティチャンクＰ（０，１）は特有であり、別途処理される必要がある。
【００４１】
本発明の進展において射影が使用される方法の例を以下に詳細に説明する。
【００４２】
本明細書に記載したデータの例示的な符号化によって、データの迅速かつ計算上効率的な復号も可能になり、欠陥データの非常に効率的な再構成も可能になる。復号中に消失が発生している場合、消失がｋ個未満であれば、復号作業が単純化される。消失モードにおいて復号中に１からｋ−１行が存在する場合、ｍ個の射影ｐｒｏｊ（ｐｉ，ｑ≠０）を使用して計算及び復元する必要があるピクセルが少なくなる。これにより、復号が消費するＣＰＵサイクルが少なくなり、復号性能が向上する。
【００４３】
他方、ｋ個の消失データチャンクについて消失数≧ｋである場合、標準的な非組織的Ｍｏｊｅｔｔｅ復号のように、完全な復号演算のためにｍ個の射影ｐｒｏｊ（ｐｉ，ｑ≠０）のみを使用して復号が実行される。整列された射影パッケージを使用すると、εが可能な限り小さい最小射影パッケージの使用と比較した場合に、組織的モードまたは非組織的モードのいずれでも全ての復号モードが高速化される。整列された射影パッケージを使用した復号演算（ＯＰＴＦＥＣ）によって、最新のＣＰＵ、ＦＰＧＡ及びＧＰＵ向けの演算の最適化が可能になる。
【００４４】
本発明の進展は、２種類の射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）及びｐｒｏｊ（ｐｉ，ｑ≠０）の特定の適用を含むデータの符号化及び復号両方のための特定のメカニズムを提供する。これらの射影は、データの非常にロバストな符号化を実現するために特定の組み合わせで使用される。また、本発明の進展によるデータの例示的な符号化はまた、データの迅速かつ計算上効率的な復号を可能にすると共に、欠陥データの非常に効率的な再構成を、そのようなデータが検出された場合に可能にする。本発明の進展は、データ復号側が符号化側により提供された情報に基づいて、すなわち符号化データに対して特定のチェックを実行することによって、使用する特定の復号方式を選択することができるメカニズムを提供する。符号化側及び復号側を以下で別々に説明する。
【００４５】
本発明の進展の第１の例示的態様によれば、符号化データを生成する方法は、行及び列を含むように指定された設定に従ってフォーマットされたデータの形でデータを取得するステップＳ１を含む。方法は、取得されたデータブロックに符号化変換を適用することによって、射影のセットｐｒｏｊ（ｐｉ，ｑｉ）を生成するステップＳ２をさらに含み、射影のセットは、第１の数の射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）と、第２の数の射影ｐｒｏｊ（ｐｉ，ｑｉ≠０）とを含む。第２の数の射影ｐｒｏｊ（ｐｉ，ｑｉ≠０）は、符号化Ｍｏｊｅｔｔｅ変換をデータブロックに適用することによって生成される。方法は、生成された射影のセットを出力して、射影のセットの形でデータを記憶できるようにするステップＳ３をさらに含む。
【００４６】
少し異なる言い方をすれば、符号化データ、たとえばデータブロックの符号化表現を生成する方法が提供される。データブロックの最初のまたは元の形式は入力として提供され、使用される特定のフォーマットに依存する。データブロックを取得した後、方法は符号化変換をデータブロックに適用することによって射影のセットを生成する。符号化変換は２つの特定の射影のセットを生成する。符号化変換は、データブロックに基づく射影ｐｒｏｊ（ｐｉ，ｑｉ）が生成される限り、Ｍｏｊｅｔｔｅ変換に基づく。本発明の進展はＭｏｊｅｔｔｅ変換の新規の応用を使用して、第１の数の射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）を生成しつつ、従来の符号化Ｍｏｊｅｔｔｅ変換をデータブロックに適用することによって第２の数の射影ｐｒｏｊ（ｐｉ，，ｑｉ≠０）を生成する。冗長射影もしくはｍ射影またはｍパリティチャンクとも呼ばれる第２の射影の数は、ｐｒｏｊ（ｐｉ，ｑｉ≠０）のインデックス、たとえば（１，１）、（１，２）、（１，３）、（２，１）、（２，２）などを指定することによって得られる任意の数であり得る。したがって、データを保護するために多数の冗長射影が生成され得る。第１の数の射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）を生成する特定のステップＳ２は、たとえば、データブロックの各行を対応する射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）にマッピングすることを含む。これにより、対応する行と同一の情報を保持する射影が生成される。第１及び第２の数の射影を生成した後、方法は生成された射影のセットを出力して、射影のセットまたはパリティ及びデータチャンクの形でデータを記憶できるようにする。符号化データにアクセスするクライアントはこのとき、後述の提案する復号メカニズムに従ってデータを復号し得る。
【００４７】
ｑ＝０を有する射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）は、行の追加情報を有さない場合、ｑ≠０を有する射影とは異なる特性を有する。したがって、ｐｒｏｊ（１，０）はｑ＝０射影として識別され、サイズまたは他の何らかのパラメータなどのアプリケーションのいくつかのパラメータを示すヘッダを含む標準的なアプリケーションにおけるチャンクと非常によく似ており、これはアプリケーションによって識別などに使用することができ、他の射影と共にＭｏｊｅｔｔｅ変換環境と併用し、完全に統合することもできる。本明細書ではｑ＝０またはｐｒｏｊ（１，０）射影として識別されるこれらのｑ＝０射影またはデータチャンク射影は、ｑ≠０射影のように余分な冗長性情報を保持していないので、別に扱うことができる。したがって、それらは復号演算中に単独で、すなわちｑ≠０射影が存在しない状態で使用される場合、データ破損に関して別の注意を必要とする。これは、ｑｉ≠０射影が存在しない状態では、最終結果が正しいことを検証する方法がないことによるものである。符号化に関する誤りは、復号中に全てのビンが空になったことと、復号後に各ビンがゼロであることとを検証することによって検出され得るが、ｑｉ≠０射影（複数可）が復号中に存在しない状態では、これを実行することは不可能である。復号後にビン≠０を有することは、データの符号化中に誤りが発生したことを示し、新たな復号及び復号データの検証が行われ得る前に欠陥のある射影を交換するために新たなｑｉ≠０射影が必要となる。
【００４８】
また、計算に関しても、ｑｉ＝０射影はｑｉ≠０射影と比較して異なる特性を有する。第１の違いはｑ＝０射影が元のサイズを有すること、すなわち、ｑ＝０射影内のピクセル数がデータブロックの元の行と同一のピクセル数を有することである。符号化及び復号の両方を実行する場合に必要とされる計算量がより少ないので、それらは計算するのにそれほど計算集約的でもない。これらの特性によって、符号化及び復号両方の演算の間の計算量の削減が可能になり、その結果、本明細書ではＯＰＴＦＥＣと呼ぶ、提案した符号化メカニズムがより高速になる。しかしながら、方法は第２の数の射影ｐｒｏｊ（ｐｉ，ｑｉ≠０）をさらに生成する。これは符号化Ｍｏｊｅｔｔｅ変換をデータブロックに適用することによって行われ得る。第２の数の射影は、第１の射影のセットのうちの少なくとも１つが消失を含むかまたは誤って符号化された場合に、データブロックを復号するのに使用される冗長射影を提供する。したがって、ｑｉ≠０である第２の数の射影は、従来のＭｏｊｅｔｔｅ変換をデータブロックに適用することによって生成され得る。最終的に、異なる射影は併せて、データの消失または誤って符号化されたデータを迅速に、すなわち少ない計算回数で正しく再構成することができる非常に効率的な復号を可能にする符号化データの特定の表現を提供する。
【００４９】
図１に、本発明の進展による符号化手順が使用される一例を詳細に示す。ステップ１００において、アプリケーションの設定が、方法すなわちＯＰＴＦＥＣの設定と共に受信される。設定は、アプリケーション及びユーザが要求した性能、冗長性、及び耐久性に合わせて消失符号を設定するために使用される。ステップ１１０において、消失符号は、ｋ＋ｍ個の射影に変換される入力データを受信する。ステップ１００及びステップ１１０からの入力データ及び設定は共にステップ１２０において符号化器インターフェースに供給される。ステップ１３０において、入力データはステップ１００で与えられた設定に従ってフォーマットされ、それによって、ｋ個のデータの行と、列数＝ブロックサイズ／行数として計算される数の列とが生成される。ステップ１４０において、データの符号化または変換が行われて、ｋ個のｑｉ＝０すなわちｐｒｏｊ（１，０）射影と、ｍ個の冗長射影ｑ≠０すなわちｐｒｏｊ（ｐｉ，ｑ≠０）とが生成される。ｑｉ＝０射影については、Ｍｏｊｅｔｔｅ変換に応じた標準的なビンは存在しない。代わりに行全体が射影として保存される。これは図３を説明するときにさらに詳細に説明する。
【００５０】
生成された射影は、所与のブロック及び射影についての行数及び射影角に応じてサイズが異なる。ステップ１５０において、ｑｉ＝０及びｑｉ≠０を有する異なる射影は、後でアプリケーションまたはクライアントに送信するのに適した方法で識別される。ステップ１５０において、符号化データは符号化器から出力として送信されて、アプリケーションによって優先バックエンド上に記憶され、ここでｋ＝ｐｒｏｊ（１，０）射影及びｍ＝ｐｒｏｊ（ｐｉ，ｑ≠０）射影である。
【００５１】
以下は本発明の進展の復号側の詳細な説明である。データを復号するための方法はデュアル復号モードを使用する。方法は設定を取得するステップＳ１０を含む。設定は、データフラグメント数ｋ、及び任意選択でパリティフラグメント数ｍ、ならびに消失符号対応モードがアクティブか否かに関する情報を含む。設定は、ブロックサイズまたはパケットサイズｂ、マトリクスサイズ、及び符号化すべきアプリケーションからの入力ファイルに関する情報をさらに含み得る。当業者によって認識されるように、他のパラメータが含まれてもよい。方法は符号化データを取得するステップＳ２０をさらに含む。符号化データは、設定に従ってフォーマットされたデータブロックに符号化変換を適用することによって符号化され、符号化データは射影のセットｐｒｏｊ（ｐｉ，ｑｉ）を含み、そのセットは第１の数の射影（ｐｉ＝１，ｑｉ＝０）と、第２の数の射影ｐｒｏｊ（ｐｉ，ｑｉ≠０）とを含む。方法は、第１の射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）の数がデータフラグメント数ｋに等しいか否かをチェックするステップＳ３０をさらに含む。ステップＳ４０において、方法はチェックに基づいてデータの復号に使用する復号モードを選択し、ここで復号モードは無消失復号モードまたは消失復号モードのいずれかである。方法は、データブロックを再構成または再生成するために、選択された復号モードを利用してデータを復号するステップＳ５０をさらに含む。
【００５２】
本明細書に記載のデュアル復号モードは、無消失モードである第１の復号モードと、消失復号モードである第２の復号モードとを含む。提案した方法は、特定の符号化データに対していずれのデュアル復号モードを使用するかを決定するサブステップ、すなわちステップＳ１０〜Ｓ４０を含む。方法は次いで、決定された復号モードを使用してデータを復号する。最初に、方法はデータの符号化時に使用された設定を取得する。設定は、符号化データが取得されるときに得られる情報の一部として取得され得る。設定は所定の設定であってよく、または本発明の進展の範囲から逸脱しない他の何らかの方法で取得されてもよい。設定は一般に少なくともデータフラグメント数ｋに関する情報を含むが、パリティフラグメント数ｍ、及び符号化データのブロックサイズまたはパケットサイズを含んでもよい。ブロックサイズを使用して、列数＝ブロックサイズ／行数の関係に基づいてデータブロックの列数または行数のいずれかを決定してもよい。本明細書では、数ｋはｐｒｏｊ（１，０）射影についてのデータフラグメントまたはデータチャンクの数を表し、さらに、ブロックを再構築できるために必要な射影の最小数についての尺度も提供する。値ｋはＯＰＴＦＥＣブロックの行数も表し得る。上記で参照された数ｍは、ＯＰＴＦＥＣのｐｒｏｊ（ｐｉ，ｑｉ≠０）射影についてのパリティフラグメント数を表し、提案した方法がデータブロックを再構築または再構成することを可能にしつつ失われ得る射影の最大数を規定し、すなわち、システムの冗長性の尺度を提供する。明確にするために、元のデータブロックを再構築または再構成できるようにするには、合計ｋ個の射影が必要となる。これらｋ個の射影はｋ個の元のｐｒｏｊ（１，０）射影である必要はなく、特定数の元のｐｒｏｊ（１，０）射影と特定数のｐｒｏｊ（ｐｉ，ｑｉ≠０）との組み合わせとすることができる。簡単にするために、ｋ＝４及びｍ＝８のケースを考えると、ここでは８個の射影が失われるかまたは消失してもよく、再構成がまだ可能であり、他方、ｋ個の元のｐｒｏｊ（１，０）射影の全部またはサブセットが失われた場合、ｍ個のｐｒｏｊ（ｐｉ，ｑｉ≠０）射影の対応するセットまたはサブセットを利用することによって再構成を行うことができる。したがって、本発明の進展は、誤ったデータブロックを再構成するために、ｋ個及びｍ個の射影を組み合わせる多数の可能性を提供する。
【００５３】
設定を取得した後、方法は符号化データを取得または受信する。データは、符号化データを生成するための方法に関して上述したように符号化され得、したがって射影のセットを含む。取得または受信された射影のセットは２つの異なる射影のセットを含み、そのうち１つ目は第１の数の射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）を含み、２つ目は第２の数の射影ｐｒｏｊ（ｐｉ，ｑｉ≠０）を含む。方法は、得られた第１の射影の数が、設定と共に取得された数ｋに等しいか否かをチェックする。等式が成立するか否かに基づいて、方法はデータの復号に使用する特定の復号モードを選択する。たとえば、方法は、第１の射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）の数がデータフラグメント数ｋに等しい場合に無消失復号モードを選択することにより、復号モードを選択するステップＳ４０を含む。復号モードを選択するステップ（Ｓ４０）は、第１の射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）の数がデータフラグメント数ｋ未満である場合に消失復号モードを選択することをさらに含んでもよい。
【００５４】
一例として、例示的な方法は、消失復号モードを利用してデータを復号するステップＳ５０をさらに含み、得られたＭｏｊｅｔｔｅ射影ｐｒｏｊ（ｐｉ，ｑｉ）のセットがデータブロックを復号するのに十分であるか否かを制御するさらなるステップＳ５１を含む。たとえば、ステップＳ５１の制御方法は、取得された第１の射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）の数と、取得された第２の射影ｐｒｏｊ（ｐｉ，ｑｉ≠０）の数との和が、データブロックの行数以上であるか否かを判定することをさらに含んでもよい。
【００５５】
１つの例示的態様では、方法は、取得された第１の射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）の数と、取得された第２の射影ｐｒｏｊ（ｐｉ，ｑｉ≠０）の数との和が、データブロックの行数未満である場合に、さらなるＭｏｊｅｔｔｅ射影ｐｒｏｊ（ｐｊ，ｑｊ）を要求するステップをさらに含む。さらなるＭｏｊｅｔｔｅ射影ｐｒｏｊ（ｐｊ，ｑｊ）は、第１の数の射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）及び第２の数の射影ｐｒｏｊ（ｐｉ，ｑｉ≠０）とは異なる。例示的態様では、方法は、第１の数の射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）と、第２の数の射影ｐｒｏｊ（ｐｉ，ｑｉ≠０）と、要求したさらなるＭｏｊｅｔｔｅ射影ｐｒｏｊ（ｐｊ，ｑｊ）とを使用してデータブロックを復号してもよい。
【００５６】
さらなる例示的態様は、復号するステップＳ４０が、復号データのビンがゼロに等しいか否かをチェックすることによってデータが正しく復号されたか否かを判定することをさらに含む方法を含む。
【００５７】
方法はまた、取得された第２の数の射影ｐｒｏｊ（ｐｉ，ｑｉ≠０）のうちの少なくとも１つを利用することによって、消失を含む符号化データを消失なく再構成し得る。すなわち、方法は、取得された第２の数の射影ｐｒｏｊ（ｐｉ，ｑｉ≠０）に含まれる冗長なまたは余分な情報を利用することによって、誤って符号化されたデータ、すなわちデータブロックを再構成し得る。第２の数の射影が冗長なまたは余分な情報を含むことが、それらが本明細書で冗長射影と呼ばれる理由である。
【００５８】
このように、復号方法は、使用する特定の復号モードを選択することによってデータを復号し得る。選択される特定の復号モードは、冗長射影を利用して、最初に符号化されたデータブロックを正しく、すなわち消失なく再構成し得る。
【００５９】
図２に本発明の進展による復号例を示す。図２において、復号方法、すなわちＯＰＴＦＥＣ法は、図１に関して上述したように、生成されたいくつかの射影からデータを復号する。図２のステップ２００において、ＯＰＴＦＥＣ法はアプリケーションから入力射影及び設定を受信する。アプリケーションによって射影にチェックサムを実行することができ、またはＯＰＴＦＥＣ法がチェックサムを実行してもよい。チェックサムは破損したデータが受信されたか否かをできるだけ早く検出するために実行される。これにより復号クライアントは、受信データの破損がチェックサムによって明らかになった場合に、新たなデータを要求するか、または再送信を要求することが可能になる。
【００６０】
ステップ２１０において、方法は、ｐｒｏｊ（１，０）射影の数がステップ２００で受信された設定ｋに等しいか否かを判定する。ｐｒｏｊ（１，０）射影の数がｋに等しい場合、ステップ２７０において、これらの射影ｐｒｏｊ（１，０）を使用してブロックを直接再構築または再構成することができる。これを無消失モードと呼ぶ。射影ｐｒｏｊ（１，０）の数がｋ未満である場合、デュアル復号動作、すなわち消失復号モードが必要となる。これら２つの異なる動作モード、すなわち無消失モード及び消失モードをデュアル動作モードとも呼ぶ。
【００６１】
ステップ２７０において、方法は、ステップ２１０から受信したｐｒｏｊ（１，０）射影を使用してブロックを再構築する。ステップ２２０において、方法は、受信した射影の数がブロックの再構築に十分であるか、またはより多くの射影を要求する必要があるかをテストする。ｍ＋ｋ≧行数である場合、復号を実行して元のデータを再生成または再構成するために利用可能な十分な射影が存在する。ｍ＋ｋが行数未満である場合、元のデータの再構築を実行するのに十分な利用可能な射影が存在しない。したがって、方法はステップ２３０において、たとえば信号をアプリケーションに送信することによって、さらなる射影を要求し得る。明確にするために、元のデータブロックを再構築または再構成できるようにするには、合計ｋ個の射影が必要となる。これらｋ個の射影はｋ個の元のｐｒｏｊ（１，０）射影である必要はなく、特定数の元のｐｒｏｊ（１，０）射影と、特定数のｐｒｏｊ（ｐｉ，ｑｉ≠０）との組み合わせとすることができる。簡単にするために、ｋ＝４及びｍ＝８のケースを考えると、ここでは８個の射影が失われるかまたは消失してもよく、再構成がまだ可能であり、他方、ｋ個の元のｐｒｏｊ（１，０）射影の全部が失われた場合、ｍ個のｐｒｏｊ（ｐｉ，ｑｉ≠０）射影を利用することによって再構成を行うことができる。したがって、本発明の進展は、誤ったデータブロックを再構成するために、ｋ個及びｍ個の射影を組み合わせる多数の可能性を提供する。そのような組み合わせが手元にない場合、さらなる射影を要求するために信号が送信され得る。これらのさらなる射影は、たとえば、より高いｐｉ及びｑｉの値を有するｐｒｏｊ（ｐｉ，ｑｉ≠０）射影であってよい。ステップ２３０において、再構築を行うために利用可能なさらなる冗長射影が存在する否かを尋ねる要求が出される。利用可能な射影がこれ以上存在しない場合、ステップ２５０においてエラーメッセージがアプリケーションに出力され得る。ステップ２４０において、受信した射影の復号を実行して元のデータを再生成する。ステップ２４０の出力はステップ２６０においてチェックされ、出力データが正しいかを検証する。ビン＝０の場合、データは正しいものであり、データはステップ２８０に送られる。他方、全てのビンが０に等しいわけではない場合、ステップ２３０においてさらなる射影の要求が送られる。ステップ２８０において、再構築または再構成されたデータのアプリケーション／クライアントへの出力が行われる。ここで、アプリケーション／クライアントにデータを正しい方法で提示するために整列を行うこともできる。
【００６２】
図３は本発明の進展によるデータのＯＰＴＦＥＣ符号化の一例である。図３において、データはｋ＝３、ｍ＝２及びブロックサイズ＝１８の設定でフォーマットされる。ステップ３００において、入力データは所与の設定に従ってブロックにフォーマットされる。ステップ３１０において、ブロックを使用してｑ＝０を有する射影を生成する。ｋ＝３であるので、３つの射影ｐｒｏｊ（１，０）が、行１から行３に１つずつ生成され、各行のピクセルの取り扱いは、ｑ≠０を有する射影のように、ビンにおける従来のピクセル総和として行われる。ステップ３２０及びステップ３３０では、この例において入力設定がｍ＝２となっている場合に、２つの冗長射影が生成される。アプリケーションによって設定され、ｐｒｏｊ（２，１）及びｐｒｏｊ（−２，１）が生成されるべきであることを示すＯＰＴＦＥＣ設定から、ｐｒｏｊ（２，１）がステップ３２０で生成され、ｐｒｏｊ（−２，１）がステップ３３０で生成される。ステップ３４０において、全ての射影が表示されており、ｍ＋ｋ＝５であることと、ｐｒｏｊ（２，１）及びｐｒｏｊ（−２，１）が対応するｐｒｏｊ（１，０）よりも４ビンだけ長いこととが示されている。ここで、合計５つの射影が生成され、入力要件ｋ＝３及びｍ＝２に従って、ｑ＝０が３つ、冗長性のｑ≠０が２つである。
【００６３】
図４は、図２に従って射影ｐｒｏｊ（１，０）を使用してブロックを復号する一例である。この例では、設定入力ｋに等しいｐｒｏｊ（１，０）を有する射影の総数は、再構築されるブロックの行数にも対応する。ステップ４００において、データの符号化に関する図１のステップ１００の所与の設定に対応する空のブロックが提供される。この例では、ｋ＝３及びｍ＝２であり、ブロックサイズ＝１８によって３つの行と、各行に６つのピクセルとが与えられる。図２の方法によれば、ｑ＝０を有する射影の数はｋに等しい。したがって、次のステップはブロックの構築である。ｑ＝０の射影では、ｐはデータを挿入すべき場所に対応する行を表す。ステップ４１０はｐｒｏｊ（１，０）の行１への挿入を示し、ステップ４２０は行２に関するｐｒｏｊ（１，０）の行２への挿入を示し、ステップ４３０は行３に関するｐｒｏｊ（１，０）の行番号３への挿入を示し、ブロックが再構築される。ステップ４４０において、ｑ＝０を有する３つの射影を使用して３つの行が再構築された、完全に再構築されたブロックが示されている。
【００６４】
図５に、消失が存在する場合であって、ｑ＝０を有さない射影を使用して再構築される必要がある１つの行ｒ２の損失がある場合のブロックの再構築を示す。アプリケーションは、ｋ＝３及びｍ＝２、ブロックサイズ＝１８の設定が与えられた場合に、消失に対して３つの射影を提供してブロックを再構築する。図２のステップ２１０において、ｑ＝０を有する射影の数がｋ未満であるか否かが判定される。このケースでは、ｑ＝０を有する射影の数はｋ未満ではない。したがって、方法は、ｍ＋ｋ＝３であることを判定するステップ２２０に進み、これは図２のステップ２４０による復号が可能であることを示す。この消失復号が射影ｐｒｏｊ（１，０）、ｐｒｏｊ（−２，１）を使用してどのように実行されるかについて詳細な例を次に説明する。ステップ５００において、データの符号化に関する図１のステップ１００の所与の設定に対応する空のブロックが提供される。この例では、ｋ＝３及びｍ＝２であり、ブロックサイズ＝１８である（３行及び各行ｒ１、ｒ２、ｒ３に６ピクセル）。ステップ５１０において、ｐｒｏｊ（１，０）が行１（ｒ１）に挿入され、ステップ５２０において、行３に対応する射影ｐｒｏｊ（１，０）が行番号３（ｒ３）に挿入される。行２（ｒ２）は空であり、第３の射影ｐｒｏｊ（−２，１）が復号に必要となる。ステップ５３０において、射影ｐｒｏｊ（−２，１）が導入され、これらのビンから充填済みのピクセルの減算を実行して、行２（ｒ２）を再構築する。ステップ５３０のＳ１において、射影ｐｒｏｊ（−２，１）を使用し、充填済みのピクセルは７であり、このピクセルを第１のビンから減算することにより０が生成される。すなわち、７−７＝０である。ステップ５３０のＳ２において、射影は既に存在するピクセルの４であり、そしてこれにより射影ビンの４からブロック内の現在の射影の４を引いたものが得られ、これら２つを引くと０が得られ、４−４＝０となる。Ｓ３からＳ１０において同一の手順を使用すると、１１−２＝９、２−１＝１、１４−２−９＝３、１６−３−８＝５、１２−５＝７、１１−７＝４、４−４＝０、３−３＝０となり、ステップＳ１０に示す復号の出力、すなわち［０  ０  ９  １  ３  ５  ７  ４  ０  ０］が与えられる。所与の射影ｐｒｏｊ（−２，１）ならびにｋ＝２、ｍ＝２及びブロックサイズ１８に対して、ｒ２＝（９，１，３，５，７，４）を解決するのはピクセル３から８である。この復号演算の後、ステップ５４０において、Ｍｏｊｅｔｔｅ復号を使用してブロックが再構成される。
【００６５】
例示的態様によれば、方法は、初期または元のデータブロックに対して実行される巡回冗長検査ＣＲＣによって補われ得る。初期データブロックが破損したデータを含まないようにすることによって、データにＭｏｊｅｔｔｅ変換が施されて複数のＭｏｊｅｔｔｅ変換射影（ｐｉ，ｑｉ）が得られる方法の効率が高まる。したがって、例示的態様では、方法はＣＲＣを初期データに実行することをさらに含み、方法はＣＲＣサムが正しい場合にのみＭｏｊｅｔｔｅ変換をデータブロックに適用する。これにより、データが破損している場合にクライアントがＭｏｊｅｔｔｅ復号をデータに実行する必要がなくなり、効率が向上する。
【００６６】
方法は符号化及び復号演算を高速化するためにストリーミングＳＩＭＤ拡張（ＳＳＥ）拡張で補うこともできる。この実施形態は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）などのプログラム可能ハードウェアデバイスを使用して符号化及び復号演算を高速化することもできる。整列されたパリティ射影パッケージが存在する場合、消失が存在する場合に復号処理に必要なＣＰＵサイクル数を大幅に削減する、非常に効率的なＳＳＥ高速化されたベクトル化コードを生成することができる。同じことが、消失が存在する場合に復号作業を同時に解決するためにさらに多くのコアが並行して動作することができるＦＰＧＡまたはグラフィックス処理ユニット（ＧＰＵ）上の実装にも当てはまる。
【００６７】
以下は、符号化及び復号演算に関する以下の構成設定を使用する整列ｍパリティチャンクパッケージの例である。符号化構成：ブロックサイズ＝６４、データチャンク数（ｋ）＝４、パリティチャンク数（ｍ）＝３、パリティ射影（ｐ，ｑ）  ｐ１＝（２，１）、ｐ２＝（４，１）、ｐ３＝（６，１）
【００６８】
この符号化は、図３に従って上記の所与の符号化構成についてＭｏｊｅｔｔｅ変換を使用して実行される。
【００６９】
復号：行１、２、及び４のデータチャンクが失われており、動作は消失モードであり、以下のｍ個のパリティ射影ｐ１＝（２，１）、ｐ２＝（４，１）、ｐ３＝（６，１）が使用され、行３のｋデータチャンクがデータの再構築に使用される。
【００７０】
以下の表１にプリアンブルフェーズ（不安定）復号演算の最初の１３ステップを示し、ここで、３つのｋデータチャンクが失われており、３つのｍパリティチャンクを使用して、失われたデータチャンクを復号演算中に置き換える。
【００７１】
【表１】
2019533397.tif 000005
【００７２】
ここではＰ（２，１）、Ｐ（４，１）、Ｐ（６，１）の順に各ｍパリティチャンクにわたる反復が行われ、表は１列目に最初の反復ステップを示す。２列目は使用されるｍパリティチャンク、３列目は解決されるピクセル、４列目は解決されるピクセルが属する行、５列目はこれがこの反復ステップ中に使用されるｍパリティ射影に対して解決すべき正しい行であるか、正しいか誤りかを示す。表１の５列目に正または誤を示すプリアンブルフェーズの終わりに到達するのは、各ｍパリティチャンクが、大きさでソートした場合のｍパリティチャンクのｐ値及び行番号によって与えられる正しい行を解決したときである。これは表１のステップ１１、１２、及び１３に示されている。ソートは設定に応じて昇順または降順で実行することができるが、この例では最上行が最大であり、最下行が最小である。
【００７３】
このプリアンブル（不安定）フェーズを特徴付けるものは、表１に示すように、そのステップ５、８、及び１０のように、全ての反復がピクセルを解決するわけではないということである。後述する後の安定フェーズのような理想的な状況では、構成により与えられた数の整列されたピクセルを反復ごとに解決することができる。
【００７４】
復号演算における異なるフェーズを図７に示し、ここで、１と２の間のフェーズは不安定なプリアンブルフェーズであり、２から３までは安定フェーズであり、ここでは図示しない３から最後まではポストアンブルフェーズである。表１は第２の例についてのプリアンブルフェーズを示しており、これが、ｍ個のパリティチャンクにわたる各反復の間に正しい数のピクセル及び正しい行が常に正しく解決されるとは限らない不安定なフェーズである理由を特定した。
【００７５】
表２に、この例において１４から１９までの反復ステップごとにいくつかの整列されたピクセルを解決する安定フェーズ中の復号演算を示す。
【００７６】
【表２】
2019533397.tif 000006
【００７７】
表１を表２と比較すると、表２の５列目の正／誤は安定しており、すなわち常に正であり、反復で使用されるｍパリティチャンクは毎回マトリクス内の正しい行を解決するので、復号演算が非常に効率的かつ簡単になる。図７では、ｍ個のパリティチャンクにわたる第２の例の反復についての２と３の間の安定フェーズは、これが、各反復またはステップが最小でもいくつかの整列されたピクセルを解決し、ソートされたｍパリティチャンクがソートされた正しい行を解決する安定フェーズであることを示す。
【００７８】
次に、複数ピクセルの符号化／復号を説明する。これらの説明では、反復あたり複数ピクセルの解決策は、整列されたｍパリティ射影パッケージを使用する。図８において、ｍパリティチャンクＰ（２，１）の例示的なレイアウトは、図６ａ、図６ｂに関して上述したマトリクスレイアウトに応じたピクセル配置と、ビンＩＤ番号及び実際のビンとを示す。最上行は左から右へビンＩＤ番号を示し、１から始まり２２で終わる。ビンＩＤ番号行の下にはｍパリティチャンクＰ（２，１）の表現があり、マトリクス内の各行がＰ（２，１）ｍパリティチャンクのｐ値に基づいて右に２ステップ移動されている。次いで、各ビンＩＤ番号列を下方に合計することによってビンが計算され、ビンＩＤ番号１から２２までビン合計の行として示している。ビンＩＤ番号１及び２はビンＩＤ番号３から２０までとは異なる特性を有し、このパターンはビンＩＤ番号２１及び２２に対して繰り返される。最初の２つ及び最後の２つのビンＩＤ番号はフリーであり、他のｋデータチャンクまたはｍパリティチャンクに依存しない。これらのビンＩＤ番号は単独で解決される。この特徴によって、有利なことに、そのピクセル位置から直接データマトリクスへデータを直接転送することが可能になる。このケースでは、これらのピクセル位置の値、１と２、及び６３と６４は、解データマトリクスに直接転送される。このデータが解データマトリクスに転送されると、各ｍパリティチャンクは更新されなければならない。図８のこの例では、他のｍパリティチャンクについて、ピクセル１、２、６３、６４内の情報を、これらのピクセル位置を含む各ビン内のそれぞれのピクセル位置から減算することによって、ピクセル１、２、６３、６４の情報が更新される。
【００７９】
図９は、図８の例のグラフィカル表現である。この例では、消失の数及び失われたデータチャンクまたはｍパリティチャンクに応じて、反復ごとに最低２ピクセルを解決するようにｍパリティチャンクパッケージが整列される。図８のように、ここでは、Ｐ（２，１）は２＋２個のフリーピクセルを含み、Ｐ（４，１）は４＋４個のフリーピクセルを含み、Ｐ（６，１）は６＋６個のフリーピクセルを含む。それぞれのｍパリティチャンクのグラフィカル表現では、図８で詳細に説明したように、ｍパリティチャンクのｐ値だけ行を右に移動している。この例においてｐ値が負の場合、図８で詳細に説明したように、ｍパリティチャンクのｐ値だけ行が左に移動される。復号演算中に各ｍパリティチャンクにわたる反復ごとに複数のピクセルを解決するための整列されたｍパリティチャンクパッケージは、全て正のｐ値、正及び負、ならびに全て負を使用するように設定することができ、ここで、ｍパリティチャンクのｐ値の最小絶対値は、同数のピクセルが反復ごとに解決される安定フェーズ中に解決することが可能な最大ピクセル数を表し、これは最小値を有するｍパリティチャンクが復号演算に使用される場合である。
【００８０】
第２の例におけるｍパリティチャンクパッケージの状況は図１０であり、図１０はプリアンブルフェーズが終了した後のデータを示す。これは表１にも示している。ここで、ゼロは解決済みのピクセル位置を表し、Ｐ（４，１）のｍパリティ射影は２つのフリーピクセル位置２３及び２４を含む。
【００８１】
図１１ａは、表２のステップ１４を実行して、ピクセル２３及び２４を解決し、解決されたピクセルについて他のｍパリティ射影内の各ビンを減少させた後の状況である。理解され得るように、このステップはピクセル２３及び２４を解決し、ｍパリティチャンクＰ（６，１）のピクセル位置１３及び１４の２つのピクセルをフリーにし、これらはここで同一の手順を使用して解決することができる。記載した手順は左から右へ移動するが、手順は右から左へ移動することもでき、または本発明の進展の範囲から逸脱することなく両方向から同時に移動することもできる。したがって、マトリクスの向き及び解決の方向は完全に自由自在である。
【００８２】
図１１ｂにおいて、最上行に接続されているピクセル位置１３及び１４は、表１のステップ１５を参照して上述したように、最大のｐ値を有するｍパリティ射影によって解決される。表１のステップ１６は図１１ｃに対応し、最小のｐ値を有するｍパリティ射影Ｐ（２，１）が、マトリクスの最下行に位置するピクセル位置５１及び５２を解決する。図１１ｄは同一の手順を使用してピクセル位置２５及び２６を解決し、図１１ｅはこの第２の例についてのピクセル位置１５及び１６の解決である。図１１ｆはピクセル位置５３及び５４の解決のために左から右への手順を使用する。この安定フェーズにおける全てのピクセルは正しいｍパリティチャンクによって解決され、安定した基本のまたは最小のピクセル位置も、反復ごとに使用される最小絶対ｐ値によって与えられる。
【００８３】
図１２は、全てのピクセル位置が解決された後のｍパリティ射影パッケージである。復号演算の終わりまでに全てのビンがゼロに等しくない場合、エラーが存在し、復号演算が成功しなかったか、または所与のチャンクが誤りを含んでいた。
【００８４】
次に、例示的態様による装置を説明する。理解され得るように、上述の方法はこれらの装置によって制限なく実行され得る。
【００８５】
理解され得るように、本明細書に記載の方法は本発明の進展から逸脱することなく様々な方法で実装し、組み合わせ、再構成することができる。たとえば、実施形態はハードウェアで、もしくは適切な処理回路により実行されるソフトウェアで、またはそれらの組み合わせで実装され得る。したがって、本明細書に記載のステップ、機能、手順、及び／またはブロックは、汎用電子回路及び特定用途向け回路の両方を含む、ディスクリート回路または集積回路技術などの任意の従来技術を使用してハードウェアで実装され得る。代替的には、または補助として、本明細書に記載のステップ、機能、手順、及び／またはブロックのうちの少なくとも一部は、１つまたは複数のプロセッサあるいは処理ユニットなどの適切な処理回路により実行されるコンピュータプログラムなどのソフトウェアで実装され得る。処理回路の例には、限定はしないが、１つまたは複数のマイクロプロセッサ、１つまたは複数のデジタル信号プロセッサ（ＤＳＰ）、１つまたは複数の中央処理装置（ＣＰＵ）、ビデオアクセラレーションハードウェア、ならびに／あるいは任意の適切なプログラマブル論理回路、たとえば、１つまたは複数のフィールドプログラマブルゲートアレイ（ＦＰＧＡ）、あるいは１つまたは複数のプログラマブルロジックコントローラ（ＰＬＣ）がある。
【００８６】
提案した技術が実装された任意の従来型デバイスの一般的な処理能力を再利用することが可能であり得ることも理解されたい。たとえば、既存のソフトウェアを再プログラミングすることによって、または新たなソフトウェアコンポーネントを追加することによって、既存のソフトウェアを再利用することも可能であり得る。
【００８７】
例示的態様では、本発明の進展は符号化データを生成するための装置１００をさらに含む。装置１００は、行及び列を含むように指定された設定に従ってフォーマットされたデータブロックの形でデータを取得するように構成される。装置１００は、符号化変換を取得されたデータブロックに適用することによって、射影のセットｐｒｏｊ（ｐｉ，ｑｉ）を生成するようにさらに構成され、セットは第１の数の射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）と、第２の数の射影ｐｒｏｊ（ｐｉ，ｑｉ≠０）とを含み、第２の数の射影ｐｒｏｊ（ｐｉ，ｑｉ≠０）は、符号化Ｍｏｊｅｔｔｅ変換をデータブロックに適用することによって生成される。装置１００は、生成されたＭｏｊｅｔｔｅ射影を出力してＭｏｊｅｔｔｅ射影の形でデータを記憶できるようにするようにさらに構成される。
【００８８】
装置１００は射影のセットｐｒｏｊ（ｐｉ，ｑｉ）を生成するようにさらに構成され得、各行を対応する射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）にマッピングして、対応する行と同一の情報を保持する射影を生成することによって、第１の数の射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）を生成するように構成され得る。
【００８９】
装置の他の実施形態は、射影のセットｐｒｏｊ（ｐｉ，ｑｉ）を生成するように構成され、符号化Ｍｏｊｅｔｔｅ変換をデータブロックに適用することによって、第２の数の射影ｐｒｏｊ（ｐｉ，ｑｉ≠０）を生成するように構成され得る装置１００を含み、第２の数の射影は、第１の射影のセットの少なくとも１つが消失を含むかまたは誤って符号化されている場合にデータブロックを復号するために使用される冗長射影を提供する。
【００９０】
図１３ａは提案した技術による装置１００の一例の概略ブロック図である。図１３ａでは、装置１００は少なくとも１つのプロセッサ１１０及びメモリ１２０を含み、メモリ１２０は、少なくとも１つのプロセッサ１１０によって実行された場合に少なくとも１つのプロセッサ１１０に符号化データを生成させる命令を含む。
【００９１】
装置１００は通信回路１３０をさらに含み得る。通信回路１３０は、ネットワーク内の他のデバイスと有線及び／または無線通信するための機能を含み得る。特定の例では、通信回路１３０は、情報の送信及び／または受信を含む、１つまたは複数の他のノードとの通信のための無線回路に基づき得る。しかしながら、有線通信、すなわち有線ネットワークを介したデータの交換も同様に可能である。通信回路１３０はプロセッサ１１０及び／またはメモリ１２０と相互接続され得る。通信回路１３０はハードウェア回路１１０と相互接続され得る。例として、通信回路１３０は、受信機、送信機、送受信機、入出力（Ｉ／Ｏ）回路、入力ポート（複数可）及び／または出力ポート（複数可）のうちのいずれかを含み得る。
【００９２】
装置２００は、デュアル復号モードを利用してデータを復号するように構成され得る。装置２００は、データフラグメント数ｋと、パリティフラグメント数ｍとを含む設定を取得するように構成される。設定は符号化データのブロックサイズ、パケットサイズも含むことができる。装置２００は、設定に従ってフォーマットされたデータブロックに符号化Ｍｏｊｅｔｔｅ変換を適用することによって符号化された符号化データを取得するようにさらに構成される。符号化データはＭｏｊｅｔｔｅ射影のセットｐｒｏｊ（ｐｉ，ｑｉ）を含み、セットは第１の数の射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）と、第２の数の射影ｐｒｏｊ（ｐｉ，ｑｉ≠０）とを含む。装置２００は、第１の射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）の数がデータフラグメント数ｋに等しいか否かをチェックするようにさらに構成される。装置２００はデータを復号するために使用する復号モードをチェックに基づいて選択するようにさらに構成され、復号モードは無消失復号モードまたは消失復号モードのいずれかである。装置２００は、データブロックを再生成するために、選択された復号モードを利用してデータを復号するようにさらに構成される。
【００９３】
装置２００は、第１の射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）の数がデータフラグメント数ｋに等しい場合に無消失復号モードを選択するように構成されることによって、復号モードを選択するようにさらに構成され得る。装置２００は、第１の射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）の数がデータフラグメント数ｋ未満である場合に消失復号モードを選択するように構成されることによって、復号モードを選択するようにさらに構成され得る。装置はまた、取得されたＭｏｊｅｔｔｅ射影のセットｐｒｏｊ（ｐｉ，ｑｉ）がデータブロックを復号するのに十分であるか否かを調べ得る。
【００９４】
装置２００は、取得された第１の射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）の数と、取得された第２の射影ｐｒｏｊ（ｐｉ，ｑｉ≠０）の数との和がデータブロックの行数以上であるか否かを判定することによって、取得されたＭｏｊｅｔｔｅ射影のセットｐｒｏｊ（ｐｉ，ｑｉ）がデータブロックを復号するのに十分であるか否かを調べるように構成することができる。装置２００はまた、取得された第１の射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）の数と、取得された第２の射影ｐｒｏｊ（ｐｉ，ｑｉ≠０）の数との和がデータブロックの行数未満である場合に、さらなるＭｏｊｅｔｔｅ射影ｐｒｏｊ（ｐｊ，ｑｊ）を要求し得、さらなるＭｏｊｅｔｔｅ射影ｐｒｏｊ（ｐｊ，ｑｊ）は、第１の数の射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）及び第２の数の射影ｐｒｏｊ（ｐｉ，ｑｉ≠０）とは異なる。
【００９５】
装置２００はまた、第１の数の射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）と、第２の数の射影ｐｒｏｊ（ｐｉ，ｑｉ≠０）と、要求したさらなるＭｏｊｅｔｔｅ射影ｐｒｏｊ（ｐｊ，ｑｊ）とを使用してデータブロックを復号することができる。装置２００は、復号データのビンがゼロに等しいか否かをチェックすることによって、データが正しく復号されたか否かを判定する。
【００９６】
図１３ａは、本発明の進展の例示的態様による装置２００の可能な実施形態を示すブロック図である。装置２００は少なくとも１つのプロセッサ２１０及びメモリ２２０を含み、メモリ２２０は、少なくとも１つのプロセッサ２１０によって実行された場合に少なくとも１つのプロセッサ２１０にデュアル復号モードを利用してデータを復号させる命令を含む。装置２００は上述のように通信回路２３０をさらに含み得る。
【００９７】
本明細書に記載の方法は、図１３ｂに示すように、ハードウェア回路に基づく装置１００及び２００によって実装され得る。ハードウェア回路は、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、または他の任意のハードウェア論理、たとえば、適切なレジスタ（ＲＥＧ）及び／またはメモリ回路（ＭＥＭ）に関連して特殊機能を実行するように相互接続された個別論理ゲート及び／またはフリップフロップを含み得る。
【００９８】
図１４は、本発明の進展の例示的態様による符号化のコンピュータ実装の概略図である。この例では、本明細書に記載のステップ、機能、手順、モジュール、及び／またはブロックの少なくともいくつかは、コンピュータプログラム１２５または１３５に実装され、これは１つまたは複数のプロセッサ１１０を含む処理回路による実行のためにメモリ１２０にロードされる。プロセッサ（複数可）１１０及びメモリ１２０は、通常のソフトウェア実行を可能にするために互いに相互接続される。入出力デバイス１４０はまた、入力パラメータ（複数可）及び／または結果として得られる出力パラメータ（複数可）などの関連データの入力及び／または出力を可能にするために、プロセッサ（複数可）１１０及び／またはメモリ１２０に相互接続され得る。「プロセッサ」という用語は、特定の処理、判定または計算タスクを実行するためのプログラムコードまたはコンピュータプログラム命令を実行することが可能な任意のシステムまたはデバイスを含む。したがって、１つまたは複数のプロセッサ１１０を含む処理回路は、コンピュータプログラム１２５または１３５を実行したときに、本明細書に記載したような明確に定義された処理タスクを実施するように構成される。処理回路は上述のステップ、機能、手順及び／またはブロックの実行専用である必要はなく、他のタスクを実行してもよい。
【００９９】
たとえば、コンピュータプログラム１２５または１３５は、プロセッサに少なくとも以下を行わせ得る。
・行及び列を含むように指定された設定に従ってフォーマットされたデータブロックの形でデータを読み取る。
・符号化変換を取得されたデータブロックに適用することによって、射影のセットｐｒｏｊ（ｐｉ，ｑｉ）を生成し、セットは第１の数の射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）と、第２の数の射影ｐｒｏｊ（ｐｉ，ｑｉ≠０）とを含み、第２の数の射影ｐｒｏｊ（ｐｉ，ｑｉ≠０）は符号化Ｍｏｊｅｔｔｅ変換をデータブロックに適用することによって生成される。
・生成されたＭｏｊｅｔｔｅ射影を出力して（Ｓ３）、Ｍｏｊｅｔｔｅ射影の形でデータを記憶できるようにする。
【０１００】
例として、ソフトウェアまたはコンピュータプログラム１２５もしくは１３５は、コンピュータ可読媒体、特に不揮発性媒体に記憶され得る。コンピュータ可読媒体は１つまたは複数の取り外し可能または取り外し不可能なメモリデバイス、たとえば、限定はしないが、読み取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイディスク、ユニバーサルシリアルバス（ＵＳＢ）メモリ、ハードディスクドライブ（ＨＤＤ）記憶デバイス、フラッシュメモリ、磁気テープ、または他の任意の従来のメモリデバイスを含み得る。したがって、コンピュータプログラムは、コンピュータまたは同等の処理デバイスの動作メモリにロードされて、その処理回路により実行され得る。
【０１０１】
図１４は、本発明の進展の例示的態様による復号のコンピュータ実装の一例を示す概略図である。この特定の例では、本明細書に記載のステップ、機能、手順、モジュール、及び／またはブロックの少なくともいくつかはコンピュータプログラム２２５または２３５に実装され、これは１つまたは複数のプロセッサ２１０を含む処理回路による実行のためにメモリ２２０にロードされる。プロセッサ（複数可）２１０及びメモリ２２０は、通常のソフトウェア実行を可能にするために互いに相互接続される。入出力デバイス２４０はまた、入力パラメータ（複数可）及び／または結果として得られる出力パラメータ（複数可）などの関連データの入力及び／または出力を可能にするために、プロセッサ（複数可）２１０及び／またはメモリ２２０に相互接続され得る。「プロセッサ」という用語は、特定の処理、判定または計算タスクを実行するためのプログラムコードまたはコンピュータプログラム命令を実行することが可能な任意のシステムまたはデバイスとしての一般的な意味を含む。したがって、１つまたは複数のプロセッサ２１０を含む処理回路は、コンピュータプログラム２２５または２３５を実行したときに、本明細書に記載したような明確に定義された処理タスクを実施するように構成される。処理回路は上述のステップ、機能、手順及び／またはブロックの実行専用である必要はなく、他のタスクを実行してもよい。
【０１０２】
たとえば、コンピュータプログラム２２５または２３５は、プロセッサに少なくとも以下を実行させ得る。
・設定を読み取り、設定はデータフラグメント数ｋと、パリティフラグメント数ｍとを含み、設定は符号化データのブロックサイズ、パケットサイズをさらに含む。
・符号化データを読み取り、符号化データは、設定に従ってフォーマットされたデータブロックに符号化Ｍｏｊｅｔｔｅ変換を適用することによって符号化され、符号化データは射影のセットｐｒｏｊ（ｐｉ，ｑｉ）を含み、セットは第１の数の射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）と、第２の数の射影ｐｒｏｊ（ｐｉ，ｑｉ≠０）とを含む。
・第１の射影ｐｒｏｊ（ｐｉ＝１，ｑｉ＝０）の数がデータフラグメント数ｋに等しいか否かをチェックする。
・データを復号するために使用する復号モードをチェックに基づいて選択し、復号モードは無消失復号モードまたは消失復号モードのいずれかである。
・データブロックを再生成するために、選択された復号モードを利用してデータを復号する。
【０１０３】
ソフトウェアまたはコンピュータプログラム２２５もしくは２３５は、コンピュータ可読媒体、特に不揮発性媒体に記憶され得る。コンピュータ可読媒体は１つまたは複数の取り外し可能または取り外し不可能なメモリデバイス、たとえば、限定はしないが、読み取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイディスク、ユニバーサルシリアルバス（ＵＳＢ）メモリ、ハードディスクドライブ（ＨＤＤ）記憶デバイス、フラッシュメモリ、磁気テープ、または他の任意の従来のメモリデバイスを含み得る。したがって、コンピュータプログラムは、コンピュータまたは同等の処理デバイスの動作メモリにロードされて、その処理回路により実行され得る。
【０１０４】
上述の実施形態は単に例として与えられているにすぎず、提案した技術はそれに限定されないことは理解されたい。添付の特許請求の範囲によって定義される本範囲から逸脱することなく、実施形態に対して様々な修正、組み合わせ、及び変更がなされ得ることは当業者には理解されよう。具体的には、技術的に可能であれば、異なる実施形態における異なる部分の解決策を他の構成において組み合わせることができる。
【図１】
2019533397.tif 000007
【図２】
2019533397.tif 000008
【図３】
2019533397.tif 000009
【図４】
2019533397.tif 000010
【図５】
2019533397.tif 000011
【図６】
2019533397.tif 000012
【図７】
2019533397.tif 000013
【図８】
2019533397.tif 000014
【図９】
2019533397.tif 000015
【図１０】
2019533397.tif 000016
【図１１ａ】
2019533397.tif 000017
【図１１ｂ】
2019533397.tif 000018
【図１１ｃ】
2019533397.tif 000019
【図１１ｄ】
2019533397.tif 000020
【図１１ｅ】
2019533397.tif 000021
【図１１ｆ】
2019533397.tif 000022
【図１２】
2019533397.tif 000023
【図１３】
2019533397.tif 000024
【図１４】
2019533397.tif 000025
【図１５】
2019533397.tif 000026
【国際調査報告】
2019533397.tif 000027
2019533397.tif 000028
2019533397.tif 000029