(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-25
(45)【発行日】2023-09-04
(54)【発明の名称】消失符号に関するデータの符号化及び復号のためのデバイス及び関連する方法
(51)【国際特許分類】
H03M 13/29 20060101AFI20230828BHJP
H03M 13/19 20060101ALI20230828BHJP
H03M 13/37 20060101ALI20230828BHJP
G06F 11/10 20060101ALI20230828BHJP
【FI】
H03M13/29
H03M13/19
H03M13/37
G06F11/10 612
(21)【出願番号】P 2019529701
(86)(22)【出願日】2017-07-28
(86)【国際出願番号】 IB2017001110
(87)【国際公開番号】W WO2018029529
(87)【国際公開日】2018-02-15
【審査請求日】2020-07-17
(32)【優先日】2016-08-11
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-04-21
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】519046476
【氏名又は名称】ゼブウェア アクティエボラーグ
(74)【代理人】
【識別番号】100099759
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100092624
【氏名又は名称】鶴田 準一
(74)【代理人】
【識別番号】100114018
【氏名又は名称】南山 知広
(74)【代理人】
【識別番号】100117019
【氏名又は名称】渡辺 陽一
(74)【代理人】
【識別番号】100108903
【氏名又は名称】中村 和広
(72)【発明者】
【氏名】トーマス ニルソン
【審査官】谷岡 佳彦
(56)【参考文献】
【文献】国際公開第2015/055450(WO,A1)
【文献】Dimitri Pertin et al,Performance evaluation of the Mojette erasure code for fault-tolerant distributed hot data storage,arXiv:1504.07038v1 [cs.IT],2015年04月27日,https://arxiv.org/pdf/1504.07038v1.pdf
【文献】P. Serfozo et al,Performance requirements of the Mojette transform for internet distributed databases and image processing,2008 11th International Conference on Optimization of Electrical and Electronic Equipment,IEEE,2008年05月24日,https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4602504,DOI: 10.1109/OPTIM.2008.4602504
(58)【調査した分野】(Int.Cl.,DB名)
H03M 13/29
H03M 13/19
H03M 13/37
G06F 11/10
(57)【特許請求の範囲】
【請求項1】
データを冗長的に符号化する方法であって、
回路によって、符号化されるデータを受信することと、
前記回路によって、前記データを行及び列にフォーマットすることと、
前記回路によって、符号化変換に基づいて、前記符号化変換の符号化パラメータの第1のパラメータ値を使用して、第1の射影のセットを生成することであって、前記第1の射影のセットの数は前記データの行数に基づいていることと、
前記回路によって、前記符号化変換に基づいて、前記第1のパラメータ値とは異なる前記符号化パラメータの第2のパラメータ値を使用して、前記符号化変換の射影角φi=arctan(qi/pi)のpi値が
2以上の一定のピクセルステップで増加又は減少するように整列された第2の射影のセットを生成することであって、前記第2の射影のセットの数はパリティチャンク数(m)に基づいていることと、
前記受信されたデータに対応する符号化データとして前記第1及び第2の射影のセットを記憶することと
を含む、前記方法。
【請求項2】
前記フォーマットするステップが、少なくともデータチャンク数(k)及び前記パリティチャンク数(m)を示す構成パラメータに従って前記データを行及び列にフォーマットすることを含む、請求項1に記載の方法。
【請求項3】
前記符号化データの復号中に反復ごとに複数のピクセルの解決を可能にするために、前記第2の射影のセットが前記符号化データと共に記憶される、請求項2に記載の方法。
【請求項4】
前記符号化変換がMojette変換を含み、前記符号化パラメータが前記Mojette変換の射影角を定義する、請求項1に記載の方法。
【請求項5】
前記第1のパラメータ値のqがゼロである、請求項4に記載の方法。
【請求項6】
前記第2のパラメータ値のqがゼロ以外の値である、請求項5に記載の方法。
【請求項7】
プロセッサによって実行されると、前記プロセッサに請求項1に記載の方法を実行させるコンピュータ可読命令を記憶する、非一時的コンピュータ可読媒体。
【請求項8】
データを冗長的に符号化する符号化装置であって、
符号化されるデータを受信するように構成される通信回路と、
処理回路であって、
前記データを行及び列にフォーマットし、
符号化変換に基づいて、前記符号化変換の符号化パラメータの第1のパラメータ値を使用して、第1の射影のセットを生成し、前記第1の射影のセットの数は前記データの行数に基づいており、
前記符号化変換に基づいて、前記第1のパラメータ値とは異なる前記符号化パラメータの第2のパラメータ値を使用して、前記符号化変換の射影角φi=arctan(qi/pi)のpi値が
2以上の一定のピクセルステップで増加又は減少するように整列された第2の射影のセットを生成し、前記第2の射影のセットの数はパリティチャンク数(m)に基づいており、
前記受信されたデータに対応する符号化データとして前記第1及び第2の射影のセットをメモリに記憶する
ように構成される、前記処理回路と
を備える、前記符号化装置。
【請求項9】
符号化データを復号する方法であって、
回路によってメモリから、前記符号化データを復号する方法を決定するための設定を読み取ることであって、前記設定が前記データの復号に必要な少なくともデータチャンク数(k)及びパリティチャンク数(m)を含む、前記読み取ることと、
前記回路によって、前記符号化データを読み取ることと、
前記回路によって、前記符号化データの第1の射影のセット内の射影数が、前記設定に示される前記データチャンク数(k)に等しいか否かを判定することであって、前記第1の射影のセットの数は前記データの行数に基づいていることと、
前記回路によって、前記第1の射影のセット内の前記射影数が、前記設定に示される前記データチャンク数(k)に等しいか否かに基づいて、前記符号化データを復号するための第1の復号モード及び第2の復号モードの一方を選択することであって、前記第2の復号モードにおいて、符号化変換の射影角φi=arctan(qi/pi)のpi値が
2以上の一定のピクセルステップで増加又は減少するように整列された第2の射影のセットが使用されることと、
前記回路によって、前記第1及び第2の復号モードのうちの前記選択された一方によって前記符号化データを復号することと、
前記回路によって、前記符号化データを復号することによって生成されるデータを出力することと
を含む、前記方法。
【請求項10】
前記設定によって示される前記データチャンク数(k)が前記第1の射影のセット内の前記射影数に等しい場合、前記符号化データが前記第1の射影のセットを使用して前記第1の復号モードに従って復号される、請求項9に記載の方法。
【請求項11】
前記設定によって示される前記データチャンク数(k)が前記第1の射影のセット内の前記射影数に等しくない場合、前記符号化データが、前記第1の射影のセットと、前記符号化データに含まれる第2の射影のセットからの少なくともいくつかの射影とを使用して前記第2の復号モードに従って復号され、前記第2の射影のセットの数はパリティチャンク数(m)に基づいている、請求項9に記載の方法。
【請求項12】
前記第2の復号モードにおいて、前記符号化データと共に記憶される前記第2の射影のセットを使用して復号反復ごとに複数のピクセルが解決される、請求項11に記載の方法。
【請求項13】
前記符号化データを復号することが、各反復が正しく復号された結果を生成しないプリアンブル復号フェーズと、各反復が正しく復号された結果を生成する安定復号フェーズとを含む、請求項9に記載の方法。
【請求項14】
データ破損を検出するために、復号前に前記符号化データをパリティチェックすることをさらに含む、請求項9に記載の方法。
【請求項15】
前記回路がネットワーク内に分散された複数のプロセッサを含み、各プロセッサが前記復号の少なくとも一部を実行するために消失符号認識アプリケーションを実行する、請求項9に記載の方法。
【請求項16】
前記復号することが、前記プロセッサによってベクトル化コードを使用して実行される、請求項15に記載の方法。
【請求項17】
前記復号することが、単一命令複数データ(SIMD)拡張を使用して前記符号化データの復号を高速化することを含む、請求項9に記載の方法。
【請求項18】
プロセッサによって実行されると、前記プロセッサに請求項9に記載の方法を実行させるコンピュータ可読命令を記憶する、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の進展は一般にはデータストレージのための、より詳細には、消失が存在することに応じたデュアルモード動作を有する不完全なネットワーク上での高効率な分散データ転送における使用のための、組織符号及び非組織符号の組み合わせを使用するMojette変換に基づく消失符号設計に関する。
【背景技術】
【0002】
データストレージ環境におけるデータ破損は、ハードウェア、ネットワーク、ディスク、環境、放射線、電気、ソフトウェアなどの多くの異なる原因を有し得、全てクライアントアプリケーションのデータ誤りにつながる。分散データ及びアプリケーションにますます注目が集まっている今日のデータ環境では、問題はより安全なデータセンターDCから、小型の、モノのインターネットIoTデバイス及びインターネットへと移っている。データ誤りの問題を軽減するために、DCはデータをいくつかのDCサイトに複製して、常にデータのコピーを用意しておく。しかしながら、データのコピーを複製すると、データコピー間に時間的なずれが生じ、データ量が増大し、さらにDCが全てのデータを維持できるようにするために多くの余分な作業が発生する。
【0003】
前方誤り訂正FEC符号を導入することによって、安価ディスクの冗長配列RAIDの管理に関して、DCにおけるこの状況は大きく改善した。しかしながら、現在のリードソロモンFEC符号及び類似のFEC符号は、広域分散ストレージに対する将来のニーズの分散データストレージ処理にはあまり適していない。今日、ストレージの標準は組織消失符号を使用するものであり、ここで組織符号とは入力データが符号化出力に埋め込まれる場合を指し、一方、非組織符号とは出力が入力シンボルを含まない場合を指す。本来Mojette変換は非組織符号であり、無消失動作モード中は最適な性能を有さず、レガシーデータストレージ消失符号フレームワーク、または組織消失符号ライブラリ用に設計された消失符号対応符号フレームワークにも直接適合しない。
【0004】
Mojette変換は本来非組織符号であり、パリティチャンクは対応する組織的チャンクよりも大きいサイズ(1+ε)を有し、ここでイプシロンはε>0であるので、データチャンクよりも多くの情報を含むパーティチャンク(m個)が生成される。m個のパリティチャンクのこの特性は、最適性能を生み出すための基礎として、ε>>0のm個のパリティ射影の整列されたパッケージを有する復号処理のCPUサイクルを削減する目的で、最新のCPU上で使用されることが後に分かる。
【0005】
組織符号の一例として、リードソロモン符号は、組織符号である場合に消失が存在しなければ最適性能で動作するが、消失が存在する必要性がある場合には動作中に深刻な問題を被る。リードソロモンのこの予測不可能な性能のため、性能がそれほど重要ではないコールドデータストレージ及びアプリケーションに主に適した消失符号が利用される。したがって、既知の欠点に対抗するために、データの符号化及び復号に関連する代替のメカニズムを提供することが本技術では必要である。本発明の進展は、そのようなメカニズムを提供して従来の符号化及び復号メカニズムの欠点の少なくともいくつかを軽減することを目的とする。
【発明の概要】
【0006】
本発明の進展は、復号フェーズを最低2フェーズに、すなわち、プリアンブルフェーズ及び安定フェーズに分割し、次いで安定フェーズ中に反復ごとに複数のピクセルを効率的に解決することによって、データブロック、ファイル、または他のフォーマットの形態のデータの符号化及び復号が改善され得るメカニズムを提供する。本明細書に開示した符号化及び復号メカニズムは誤って復号されたデータまたは消失したデータの再構成または再構築を可能にするので、本発明の進展は特に、よりロバストなデータストレージを可能にする。誤って復号されたデータの訂正は加算及び減算の形の算術演算しか利用しないので、本発明の進展は計算集約的でない訂正をさらに提供する。これにより、たとえば分散データストレージに記憶されたデータを訂正する場合の計算要求が減少する。
【0007】
本発明の進展では、無消失動作中の最適性能動作と組み合わせて、Mojette変換を含む誤り検出及び訂正と共に、組織的及び非組織的な組み込みのデュアルモード動作を有する、本明細書ではOPTFECと呼ぶ高性能かつ高可用性の消失符号の生成を説明する。本発明の進展ではさらに、DC実装だけでなくIoT及びクラウドストレージなどの広域分散ストレージネットワークに対してどのようにOPTFEC符号を導入するか、及びどのようにOPTFECがデータ変換に含まれるかを説明する。
【0008】
本発明の進展の一例示的態様によれば、データを冗長的に符号化する方法は、回路によって、符号化されるデータを受信することと、回路によって、データを行及び列にフォーマットすることとを含む。方法は、回路によって、符号化変換に基づいて、符号化変換の符号化パラメータの第1のパラメータ値を使用して、データの第1の射影のセットを生成することと、回路によって、符号化変換に基づいて、第1のパラメータ値とは異なる符号化パラメータの第2のパラメータ値を使用して、データの第2の射影のセットを生成することとをさらに含む。次いで、第1及び第2の射影が符号化データとして記憶される。
【0009】
本発明の進展の他の例示的態様によれば、データを冗長的に符号化する符号化装置は、符号化されるデータを受信するように構成される通信回路と、処理回路とを含む。処理回路は、データを行及び列にフォーマットし、符号化変換に基づいて、符号化変換の符号化パラメータの第1のパラメータ値を使用して、第1の射影のセットを生成する。
【0010】
また、処理回路は、符号化変換に基づいて、第1のパラメータ値とは異なる符号化パラメータの第2のパラメータ値を使用して、第2の射影のセットを生成する。次いで、処理回路は、受信されたデータに対応する符号化データとして第1及び第2の射影のセットをメモリに記憶する。
【0011】
本開示のさらなる例示的態様によれば、符号化データを復号する方法は、回路によってメモリから、符号化データを復号する方法を決定するための設定を読み取ることであって、設定がデータの復号に必要な少なくともデータフラグメント数及びパリティフラグメント数を含む、読み取ることを含む。方法は、回路によって、符号化データを読み取ることと、回路によって、符号化データの第1の射影のセット内の射影数が、設定に示されるデータフラグメント数に等しいか否かを判定することとをさらに含む。方法は、回路によって、第1の射影のセット内の射影数が、設定に示されるデータフラグメント数に等しいか否かに基づいて、符号化データを復号するための第1の復号モード及び第2の復号モードの一方を選択することと、回路によって、第1及び第2の復号モードのうちの選択された一方によって符号化データを復号することとをさらに含む。次いで、方法によれば、回路は、符号化データを復号することによって生成されるデータを出力する。
【0012】
本発明及びその付随する利点の多くについてのより完全な理解は、以下の詳細な説明を、添付の図面と関連して考慮しながら参照することによってよりよく理解されるので、容易に得られるであろう。
【図面の簡単な説明】
【0013】
【
図1】データを符号化するための例示的なアルゴリズムを示す流れ図である。
【
図2】データを復号するための例示的なアルゴリズムを示す流れ図である。
【
図3】各行に6ピクセルを有する3行のブロックの、q=0射影proj(1,0)とq=0射影でない射影との組み合わせ、すなわち、q=0射影proj(1,0)ならびにq≠0射影proj(-2,1)、proj(2,1)へのMojette変換符号化の一例の図である。
【
図4】
図3の符号化された例を
図2の手順と共に使用した復号例であって、消失のない例の図である。
【
図5】
図3の符号化された例を
図2の手順と共に使用した復号例であって、2行目のproj(1,0)が欠落しており、消失が存在し、ブロック内の欠落した行を再構築する例の図である。
【
図6】
図6aは、データサイズb=64であって、kデータチャンクの数がマトリクスの行数と同一k=4であるマトリクス構成に対してピクセルが行ごとに配置された例示的なピクセルマトリクス構成の図である。
図6bは、データサイズb=64であって、kデータチャンクの数がマトリクスの行数と同一k=4であるマトリクスにピクセルが列ごとに配置されたピクセルマトリクスの可能なレイアウトの第2の例の図である。
【
図7】復号演算の異なるフェーズの一例の図である。プリアンブル1~2フェーズ、安定2~3フェーズ、及び復号の所与の構成例に対して均一な場合、ここではポストアンブルフェーズ(3~最後)はない。これらのフェーズは実世界のデータサイズ、すなわち4kb以上で示された場合にはサイズが異なり、プリアンブルフェーズ及びポストアンブルフェーズが安定フェーズと比較して非常に短くなる。
【
図8】mパリティチャンク、ここではP(2,1)の例示的なグラフィカル表現である。これはmパリティ射影P(2,1)の表現であり、同図にビン及びピクセル位置の両方を示し、最上行に1から22までのビン番号を示し、最下行に所与のビンについて垂直方向に合計したピクセル位置の総和を示す。マトリクス内の数字はピクセル位置番号であり、ピクセルレイアウトは様々な方法で行うことができるが、ここでは単純な行ごとのレイアウトを行って、ベクトル化コードを使用した場合に最大の高速化が得られるやり方で、m個のパリティ射影にわたる反復ごとに複数のピクセルを解決するように、整列されたm個のパリティ射影が動作し得る方法を示す。これを簡単にするために、ピクセル位置の値及び位置ID番号は同一にすることができる。
【
図9】データサイズb=64であって、kデータチャンクの数がマトリクスの行数と同一k=4である、反復ごとに2ピクセルを解決するように構成された3チャンクの例示的な整列されたmパリティチャンクパッケージの図である。ここではmパリティチャンクP(2,1)、P(4,1)、P(6,1)が第2の例に使用される。
【
図10】表1に記載したようにプリアンブルフェーズが行われた後の例示的なmパリティチャンクパッケージの図であり、ここでゼロは、復号用のMojette変換を使用して、ビンがピクセル値を減算し、結果をマトリクスに挿入したことを示す。プリアンブルフェーズの終わりは、各mパリティチャンクが、大きさでソートした場合のmパリティチャンクのp値及び行番号によって与えられる正しい行を解決したときである。ソートは設定に基づいて昇順または降順で行うことができるが、この例では最上行が最大であり、最下行が最小である。
【
図11a】mパリティチャンクP(4,1)を使用した安定フェーズ復号のためのこの例の例示的な初期のステップ14の反復の図である。
【
図11b】mパリティチャンクP(6,1)を使用した安定フェーズ復号のためのこの例の例示的な初期のステップ15の反復の図である。
【
図11c】mパリティチャンクP(2,1)を使用した安定フェーズ復号のためのこの例の例示的な初期のステップ16の反復の図である。
【
図11d】mパリティチャンクP(4,1)を使用した安定フェーズ復号のためのこの例の例示的な初期のステップ17の反復の図である。
【
図11e】mパリティチャンクP(6,1)を使用した安定フェーズ復号のためのこの例の例示的な初期のステップ18の反復の図である。
【
図11f】mパリティチャンクP(2,1)を使用した安定フェーズ復号のためのこの例の例示的な初期のステップ19の反復の図である。
【
図12】表2にさらに記載したこの例での復号の安定フェーズの後の例示的なmパリティチャンクパッケージの図であり、ここでゼロは、復号用のMojette変換を使用して、ビンがピクセル値を減算し、結果をマトリクスに挿入したことを示す。
【
図13】
図13aは、本発明の進展の例示的態様による符号化を行うための装置を示すブロック図である。
図13bは、本発明の進展の例示的態様による符号化を行うための装置を示すブロック図である。
【
図14】本発明の進展の例示的態様による対応する符号化及び復号装置によって使用される提案した符号化及び復号のコンピュータプログラム実装を示すブロック図である。
【
図15】クライアントが分散したデータストレージプロバイダからデータにアクセスする方法の概略図であり、本発明の進展の例示的態様に従ってデータが符号化及び復号される。
【発明を実施するための形態】
【0014】
いくつかの図にわたり同様の参照番号が同一または対応する部分を示す図面をここで参照すると、不完全なネットワーク上の分散データストレージのために高性能FEC符号に対する大きな需要がある。好ましくは、そのような符号は広域分散ストレージソリューションに適合させるべきであり、それによってエンドツーエンドのデータ完全性を実現することができる。符号は、好ましくは、欠陥のある符号化データを再構成するための安全かつロバストな方法も提供すべきである。そのようなデータ欠陥はハイエンドのコンピューティングクラスタには普通のことであり、単一の誤りであっても、大抵の場合他の処理に広がるカスケードパターンの破損を引き起してアプリケーションに深刻な影響を与える可能性がある。
【0015】
今日のストレージサーバはデータを記憶するための大容量を有しており、ソーシャルデータ及び監視データの集中的な使用によって、低コストの高可用性かつ分散型のストレージに対するこの需要が高まる。携帯電話、スマートフォン、タブレット、及びIoTデバイスなどの小型デバイスでも、クラウドまたはプライベートDCの安定したストレージに転送されるより多くのデータを生成するにつれて、より高い性能が必要となる。
【0016】
いかなるアプリケーションでもデータ損失は容認できないので、DCはデータを他のストレージまたはDCに複製して常にデータのコピーを保持することによって保護せざるを得ない。これにより、データまたはストレージが任意の種類の状況によって失われた場合にデータを再構成することが可能になる。しかしながら、ノードが失われると全てのデータが完全に転送され複製されなければならないので、大量のデータを処理する場合に複製は準最適である。複製には、異なるストレージに異なるバージョンのデータを有するという意味もあり、これにより管理及び維持が非常に困難になり、作業が管理者に集中する。複製環境のデータ量も、上記のセキュリティ上の必要性と、世界中またはオフィス間にデータを分散させる必要があるので、通常は元のデータの3~7倍になる。
【0017】
リードソロモンなどの消失符号化技術の導入によって、DCの状況は大きく改善した。これらの状況では、複製はRAIDに置き換えられ、それによって記憶容量の必要量が3~5分の1に減少し、その結果、DC内でのコスト、環境、メンテナンス、及び安全性に関する利点が得られる。
【0018】
今日の消失符号ライブラリでは、異なる設定パラメータに標準的な名称を付与して異なるライブラリをアプリケーションに統合しやすくするための業界標準が確立されている。以下では、kはOPTFECのproj(1,0)射影に対するデータフラグメントまたはデータチャンクの数を表し、OPTFECがブロックを再構築するための射影の最小数、及びOPTFECブロックの行数をさらに表す。また、mはOPTFECのproj(pi,qi≠0)射影についてのパリティフラグメントまたはパリティチャンクの数を表し、データブロックの再構築または再構成を可能にしつつも失われ得る射影の最大数をさらに表す。さらに、パケットサイズ={バイト}または単にbはブロックサイズまたはファイルサイズを表し、本発明の進展の例示的態様によるデータの符号化及び復号において使用される
図6a及び
図6bのマトリクスのサイズを与える。
【0019】
リードソロモン消失符号には、データ生成アプリケーションが無消失状況を使用してバックエンドストレージノード上のデータを全て読み取って検証できるようにしている標準的な実装もある。そして、データ生成アプリケーションは、データ及びパリティチャンクに対する全ての要求も処理し、消失が存在しないかを検出したのち、アプリケーション自体でデータチャンクからデータの再組み立てを行う。しかしながら、欠落したデータチャンクが存在する場合、受信したいくつかのデータチャンクが必要数のパリティチャンクと共に、復号演算用の消失符号復号インターフェースに送られる。
【0020】
図1及び
図2の流れ図の符号化及び復号は、消失符号対応のアプリケーション上で動作することができ、異なるステップは、最適な機能性のために異なるハードウェア層及びソフトウェア層の間で分割することができる。符号化及び復号の両方の演算を分散コンピュータノード上で実行して、集中的な計算をオフロードし、またネットワークエッジ上の小型の低電力CPUからデータトラフィックをオフロードし再構築することができる。しかしながら、リードソロモン型の消失符号は、1つのノードに障害が発生した場合にレイテンシが性能に重大な影響を及ぼす可能性があり、データ再構成のためにインターネットを介して他の全てのノードと通信する必要がある分散アプリケーションには適さない。したがって、分散ストレージでは、アプリケーションは、1つまたは複数のストレージノードと通信するクライアントに対して個別であり中央処理装置(CPU)集約的でない消失符号を必要とする。
【0021】
消失符号化のためのデータ入力は、多くの異なるソース及びアプリケーションから生成され、次いでそのフルサイズで、またはチャンクとして、符号化演算用の消失符号の入力インターフェースに渡される。入力データは、映画ファイル、文書ファイル、実行可能ファイル、ライブビデオ、または当業者が認識するような任意の種類のデータであり得る。入力インターフェースに送られたデータは、構成が有するk個のデータチャンクと同数の行を含むデータマトリクスに転送される。行の長さは、符号化演算用の入力インターフェースに送られるデータのサイズ、または入力構成設定により与えられる、アプリケーションまたは消失符号のいずれかによって特定のサイズに事前にチャンク化されたデータのサイズによって決まる。復号器はk個のデータチャンクを行ごとに復号し始め、次いでmパリティチャンクの数の構成設定により決定されるm個のパリティチャンクを計算する。
【0022】
符号化器からのk個のデータチャンク及びm個のパリティチャンクが存在する場合、それらは別々のディスクまたは他のストレージに安全に保管するためにそれぞれの構成されたバックエンドに転送される。m個及びk個のチャンク全てが一度に失われないようにm個のパリティチャンク及びk個のデータチャンクが冗長性を有するように分離されている限り、バックエンドは単一のディスク、S3、NFSなどのファイルシステムもしくはストレージインターフェース内のフォルダ、またはISCSIなどのブロックデバイスとすることができる。
【0023】
その後符号化が行われ、別々のm個及びk個のチャンクは、データを再組み立てまたは再構築し復号するのに必要な全ての情報を含まず、データを復号するには少なくともk個のチャンクが消失符号の復号器インターフェースに供給される必要がある。k個のチャンクなしでは異なるバックエンドからデータを再組み立てできないことは、復号演算が複数のバックエンドストレージノードまたはディスクにアクセスできる必要がある場合に、データセキュリティ目的にも使用することができる。
【0024】
復号は所与の設定に従って動作して、復号器のインターフェースに送られたデータ及びパリティチャンクを再組み立てまたは復号する。k個のデータチャンクのうちk個未満が復号器インターフェースに送られた場合、復号演算が必要となる。k個のデータチャンクが送られた場合、再組み立て演算はk個のデータチャンクのデータを選択されたマトリクスに転送することができ、マトリクスのレイアウト及びサイズによっては、パリティチャンクを使用した復号が不要な場合がある。所与の設定が消失符号対応に設定されている場合、消失がなければ、データの再組み立てはアプリケーションによって直接行われる。次いで、復号または再組み立てされたデータは、復号演算の送達ポイントであるインターフェースに転送される。たとえば、映画または大きな写真のようにデータのサイズが大きい場合、データはアプリケーションによってチャンク化され得る。アプリケーションによるそのようなチャンク化によって、ネットワークを介した転送及び様々な動作がより効率的になる。その後、全ての復号演算及びチャンクの再組み立てが完了し、消失符号構成の冗長性のために、いくつかのバックエンドデータノードが失われたとしても、元のデータは元の状態になる。
【0025】
本発明の進展の例示的態様によれば、新規のバージョンのMojette変換を使用して、復号データの特定の表現を提供する。以下では、「ビン」という用語は、Mojette変換射影における射影要素を表すために使用される。簡潔に言えば、Mojette変換は線形離散正確(exact)ラドン変換、すなわち、離散画像fを記述するI個の離散射影のセットである。射影角は離散方向φi=arctan(qi/pi)の中から選択され、ここで添字iは整数値をとり、pi及びqiは互いに素であり、すなわち、最大公約数が1、GCD(pi,qi)=1である。これらのアルゴリズムの1つの利点は、符号化及び復号演算のために加算及び減算しか使用しないので、演算に関するCPU制約が最小となり、アプリケーションが高速になることである。この文書の教示、特にセクション2のMojette変換、セクション3の射影の選択、及びセクション4のビンの選択の説明が引用により本明細書に組み込まれている。
【0026】
射影の第1の例(p,q) p1=(0,1)、p2=(1,1)、p3=(-1,1)は、計算された各射影について最小の追加データを与え、単純な再構成経路を有する場合に、保管目的の基本的なMojette構成に適していることを示す。この文書の教示全体、特にセクション2のMojette変換及びセクション3のジオメトリ駆動型再構成の説明が引用により本明細書に組み込まれている。他方、最大性能が復号演算に必要とされる場合、m個のパリティ射影はより大きいイプシロンε>>0を有するように選択することができる。使用されるCPUに応じて、最大のεを設定することができ、パリティ射影パッケージとして機能する整列されたmパリティ射影が計算される。
【0027】
第2の例は、m個のパリティ射影にわたる反復ごとに1ピクセルを復号する代わりに、反復ごとに2ピクセルが復号される構成を含む。この消失符号構成例では、次のパラメータ:ブロックサイズ=128、データチャンク数(k)=4、パリティチャンク数(m)=3が使用される。基本のケースでは、対応する射影は(p,q) p1=(0,1)、p2=(1,1)、p3=(-1,1)であり、イプシロンが最小ε≒0になる。より高い性能のための構成が使用される場合、m個のパリティチャンクは増加させることができ、イプシロンはε>>0となる。対応する整列されたパリティ射影は、mパリティ射影反復ごとに最低2ピクセルを解決する場合、(p,q) p1=(2,1)、p2=(4,1)、p3=(6,1)であり、ここで、整列されたm個のパリティ射影のp値はp1からp3までピクセルステップ2で増加する。εの増加または他の制約に基づいてピクセルステップが5である場合、整列されたmパリティチャンクパッケージは(p,q) p1=(5,1)、p2=(10,1)、p3=(15,1)となる。明確にすると、整列されたmパリティ射影パッケージとは、復号演算の安定フェーズの間に、反復ごとに1より大きい最小安定ピクセルステップを有する、p値が異なるいくつかのパリティチャンクである。ピクセルステップとは、反復ごとに解決可能なピクセル数である。
【0028】
復号もまた、整列されたmパリティ射影パッケージをサポートするために最低2つのフェーズに分割される。これら2つのフェーズはプリアンブルフェーズ及び安定フェーズである。必要であれば、ブロックサイズが均一でない場合、ポストアンブルフェーズが含まれてもよい。ポストアンブルフェーズはプリアンブルフェーズと同様に機能し、ピクセルステップの次の最大サイズを検出する。プリアンブルフェーズの終わりが検出されるのは、p値でソートされたm個のパリティ射影が正しい行を解決したときであり、ここで最大のp値が最上行を解決する。復号器はMojette変換のためにジオメトリ駆動型再構成アルゴリズムを使用し、左から右に向かって進み、m個のパリティ射影にわたり反復して、復号演算の各フェーズ、すなわち、プリアンブルフェーズ、安定フェーズ、及び必要であれば最後のポストアンブルフェーズの間に、反復ごとに最大数のピクセルを解決する。
【0029】
所与の例示的なケースにおいて、プリアンブルフェーズが13ステップ後に終了し、その後復号器が、1つのmパリティ射影を使用してブロック内の1つの設定された行を解決する安定フェーズを実行する準備ができている一例を表1に与える。
【0030】
εがより大きいと復号はある程度まで高速化されるが、ハードウェア/ソフトウェアの制約によりさらなる高速化が不可能になる程度までεを増加させることもできる。また、完全に整列されたmパリティ射影パッケージを使用しない場合、復号器はm個のパリティ射影にわたる反復ごとに解決可能な最大ピクセル数を特定する必要があり、これによって復号が遅くなり得る。安定フェーズ中に完全に整列されたmパリティパッケージによって解決可能な最小ピクセル数は、パリティ射影間のp値のピクセルステップ増分である。構成及び失われたデータ射影に応じて、mパリティ射影のビンごとに解決するピクセルが常に1つのみとなるフェーズなく復号のために完全なベクトル化を行うことができる1つの消失(失われた1つのデータチャンク)の時点まで、これは大幅に異なり得る。特定の1つの消失のケースを、
図5に一例として詳細に見ることができる。このケースでは、非組織的Mojette変換がデータチャンクを全く有さず、復号演算のためにm個のパリティチャンクしか有さない場合に、1つの消失に対する完全にベクトル化された解決策は利用できない。
【0031】
Mojette変換はデータの2次元表現に適用される数学的演算である。本明細書で使用される場合、それはデータの効率的なデータストレージ表現を得るためにデータブロックに適用される。Mojette変換は、データブロックを符号化してデータブロックの特定の表現を提供するための特定の方法として使用され得る。この目的を達成するため、この変換は、たとえばデータブロック表現など、Mojette変換を使用して符号化するのに適した形式が与えられた特定のデータを入力として受け取る。データブロックは、一般にブロックサイズと呼ばれる特定のサイズを有する特定の情報、すなわちバイトまたはビットのシーケンスである。データ要素または値はデータブロックのシーケンスの一部を形成し、たとえば
図3に示す6×3データブロックを参照されたい。Mojette変換がデータブロックに適用されると、いくつかの射影が得られる。これらの射影は元のデータの特定の表現を与える。Mojette変換を使用することによって得られる有益な特徴は、加算及び減算の形の算術演算しか必要としないことである。これにより、分散ストレージに記憶されたデータにアクセスするクライアントのCPUの計算上の要求が軽減される。
【0032】
Mojette変換演算子またはMojette射影演算子は、データの2次元表現に適用される。データによって保持される特定の情報を表す要素を有する2次元配列が離散関数f(k,l)によって表せることを考え、ここでk及びlは配列の離散要素、たとえばピクセルまたはサンプルを表す。2次元配列では、これらはそれぞれ列及びラインまたは行を表す。
【0033】
Mojette変換/射影演算子は次のように定義される。
【数1】
【0034】
総和のインデックスP及びQはデータブロックのサイズに対応し、すなわち、データはサイズP×Qのデータブロック表現が与えられ、aは要素またはピクセルが中央にあるラインを指定する数である。Mojette変換演算子を特定のデータブロックに適用すると、特定のラインa=p
il-q
ika=p
il-q
ikの中央にある要素またはピクセルの総和がもたらされ、ここで特定のラインは、a=0のときδ(a)=1,であり、それ以外は0であるクロネッカーのデルタ関数から推測することができる。以下では、aはproj(p
i,q
i,a)proj(p
i,q
i,a)の変数から外され、射影は単に(p
i,q
i)によって表される。上記の式(1)を使用して、任意のp及びqの値によって任意の射影を生成することができる。射影ごとの、ビン数とも呼ばれるライン合計の数Bは次式で与えられる。
【数2】
【0035】
本発明の進展の例示的態様では、最適なピクセルステップサイズを計算する。最適なピクセルステップを求めるための1つの方法を以下に説明し、ここでq=1であり、p値は全て正である。この例では、入力されたm個のパリティチャンクは、3つの消失を解決するP(30,1)、P(25,1)、P(20,1)である。
【0036】
1.m個のパリティチャンクをそれらのp値に従ってソートする。ソートされたp値は30、25、20となる。
【0037】
2.ソートされたm個のパリティチャンクのペアごとにp間の差を計算する。この計算の最小値は使用可能な最小安定ピクセルステップでもある。p値間の差は5、5である。
【0038】
3.ソートされたm個のパリティチャンクの各p値を、そのチャンクが解決しようとしている消失で除算することによって、ピクセルステップ係数を計算する。たとえば、ここでは3つの消失があり、最大のp値が最大の消失を解決する。次いで、前にステップ2で求めたp値間の最小差でも除算する。30/(3*5)=2、25/(2*5)=2.5、20/(1*5)=4となる。
【0039】
4.上記のm個のパリティチャンクから最小ピクセルステップ係数を求め、これに前にステップ2で求めた最小ピクセルステップを乗算することによって、最適ピクセルステップを計算する。これはここでは、この例におけるm個のパリティチャンクに使用可能な最大安定ピクセルステップである。最適なピクセルステップは、ステップ2の最小差から計算され、これにステップ4の最小係数を乗算する。最適なピクセルステップはこの例では5*2=10となる。
【0040】
負のp値も使用される場合、この計算は正の場合と同一の方法で行うことができる。上記の方法を使用して入力されたm個のパリティチャンクから最適なピクセルステップを求める場合、mパリティチャンクP(0,1)は特有であり、別途処理される必要がある。
【0041】
本発明の進展において射影が使用される方法の例を以下に詳細に説明する。
【0042】
本明細書に記載したデータの例示的な符号化によって、データの迅速かつ計算上効率的な復号も可能になり、欠陥データの非常に効率的な再構成も可能になる。復号中に消失が発生している場合、消失がk個未満であれば、復号作業が単純化される。消失モードにおいて復号中に1からk-1行が存在する場合、m個の射影proj(pi,q≠0)を使用して計算及び復元する必要があるピクセルが少なくなる。これにより、復号が消費するCPUサイクルが少なくなり、復号性能が向上する。
【0043】
他方、k個の消失データチャンクについて消失数≧kである場合、標準的な非組織的Mojette復号のように、完全な復号演算のためにm個の射影proj(pi,q≠0)のみを使用して復号が実行される。整列された射影パッケージを使用すると、εが可能な限り小さい最小射影パッケージの使用と比較した場合に、組織的モードまたは非組織的モードのいずれでも全ての復号モードが高速化される。整列された射影パッケージを使用した復号演算(OPTFEC)によって、最新のCPU、FPGA及びGPU向けの演算の最適化が可能になる。
【0044】
本発明の進展は、2種類の射影proj(pi=1,qi=0)及びproj(pi,q≠0)の特定の適用を含むデータの符号化及び復号両方のための特定のメカニズムを提供する。これらの射影は、データの非常にロバストな符号化を実現するために特定の組み合わせで使用される。また、本発明の進展によるデータの例示的な符号化はまた、データの迅速かつ計算上効率的な復号を可能にすると共に、欠陥データの非常に効率的な再構成を、そのようなデータが検出された場合に可能にする。本発明の進展は、データ復号側が符号化側により提供された情報に基づいて、すなわち符号化データに対して特定のチェックを実行することによって、使用する特定の復号方式を選択することができるメカニズムを提供する。符号化側及び復号側を以下で別々に説明する。
【0045】
本発明の進展の第1の例示的態様によれば、符号化データを生成する方法は、行及び列を含むように指定された設定に従ってフォーマットされたデータの形でデータを取得するステップS1を含む。方法は、取得されたデータブロックに符号化変換を適用することによって、射影のセットproj(pi,qi)を生成するステップS2をさらに含み、射影のセットは、第1の数の射影proj(pi=1,qi=0)と、第2の数の射影proj(pi,qi≠0)とを含む。第2の数の射影proj(pi,qi≠0)は、符号化Mojette変換をデータブロックに適用することによって生成される。方法は、生成された射影のセットを出力して、射影のセットの形でデータを記憶できるようにするステップS3をさらに含む。
【0046】
少し異なる言い方をすれば、符号化データ、たとえばデータブロックの符号化表現を生成する方法が提供される。データブロックの最初のまたは元の形式は入力として提供され、使用される特定のフォーマットに依存する。データブロックを取得した後、方法は符号化変換をデータブロックに適用することによって射影のセットを生成する。符号化変換は2つの特定の射影のセットを生成する。符号化変換は、データブロックに基づく射影proj(pi,qi)が生成される限り、Mojette変換に基づく。本発明の進展はMojette変換の新規の応用を使用して、第1の数の射影proj(pi=1,qi=0)を生成しつつ、従来の符号化Mojette変換をデータブロックに適用することによって第2の数の射影proj(pi,,qi≠0)を生成する。冗長射影もしくはm射影またはmパリティチャンクとも呼ばれる第2の射影の数は、proj(pi,qi≠0)のインデックス、たとえば(1,1)、(1,2)、(1,3)、(2,1)、(2,2)などを指定することによって得られる任意の数であり得る。したがって、データを保護するために多数の冗長射影が生成され得る。第1の数の射影proj(pi=1,qi=0)を生成する特定のステップS2は、たとえば、データブロックの各行を対応する射影proj(pi=1,qi=0)にマッピングすることを含む。これにより、対応する行と同一の情報を保持する射影が生成される。第1及び第2の数の射影を生成した後、方法は生成された射影のセットを出力して、射影のセットまたはパリティ及びデータチャンクの形でデータを記憶できるようにする。符号化データにアクセスするクライアントはこのとき、後述の提案する復号メカニズムに従ってデータを復号し得る。
【0047】
q=0を有する射影proj(pi=1,qi=0)は、行の追加情報を有さない場合、q≠0を有する射影とは異なる特性を有する。したがって、proj(1,0)はq=0射影として識別され、サイズまたは他の何らかのパラメータなどのアプリケーションのいくつかのパラメータを示すヘッダを含む標準的なアプリケーションにおけるチャンクと非常によく似ており、これはアプリケーションによって識別などに使用することができ、他の射影と共にMojette変換環境と併用し、完全に統合することもできる。本明細書ではq=0またはproj(1,0)射影として識別されるこれらのq=0射影またはデータチャンク射影は、q≠0射影のように余分な冗長性情報を保持していないので、別に扱うことができる。したがって、それらは復号演算中に単独で、すなわちq≠0射影が存在しない状態で使用される場合、データ破損に関して別の注意を必要とする。これは、qi≠0射影が存在しない状態では、最終結果が正しいことを検証する方法がないことによるものである。符号化に関する誤りは、復号中に全てのビンが空になったことと、復号後に各ビンがゼロであることとを検証することによって検出され得るが、qi≠0射影(複数可)が復号中に存在しない状態では、これを実行することは不可能である。復号後にビン≠0を有することは、データの符号化中に誤りが発生したことを示し、新たな復号及び復号データの検証が行われ得る前に欠陥のある射影を交換するために新たなqi≠0射影が必要となる。
【0048】
また、計算に関しても、qi=0射影はqi≠0射影と比較して異なる特性を有する。第1の違いはq=0射影が元のサイズを有すること、すなわち、q=0射影内のピクセル数がデータブロックの元の行と同一のピクセル数を有することである。符号化及び復号の両方を実行する場合に必要とされる計算量がより少ないので、それらは計算するのにそれほど計算集約的でもない。これらの特性によって、符号化及び復号両方の演算の間の計算量の削減が可能になり、その結果、本明細書ではOPTFECと呼ぶ、提案した符号化メカニズムがより高速になる。しかしながら、方法は第2の数の射影proj(pi,qi≠0)をさらに生成する。これは符号化Mojette変換をデータブロックに適用することによって行われ得る。第2の数の射影は、第1の射影のセットのうちの少なくとも1つが消失を含むかまたは誤って符号化された場合に、データブロックを復号するのに使用される冗長射影を提供する。したがって、qi≠0である第2の数の射影は、従来のMojette変換をデータブロックに適用することによって生成され得る。最終的に、異なる射影は併せて、データの消失または誤って符号化されたデータを迅速に、すなわち少ない計算回数で正しく再構成することができる非常に効率的な復号を可能にする符号化データの特定の表現を提供する。
【0049】
図1に、本発明の進展による符号化手順が使用される一例を詳細に示す。ステップ100において、アプリケーションの設定が、方法すなわちOPTFECの設定と共に受信される。設定は、アプリケーション及びユーザが要求した性能、冗長性、及び耐久性に合わせて消失符号を設定するために使用される。ステップ110において、消失符号は、k+m個の射影に変換される入力データを受信する。ステップ100及びステップ110からの入力データ及び設定は共にステップ120において符号化器インターフェースに供給される。ステップ130において、入力データはステップ100で与えられた設定に従ってフォーマットされ、それによって、k個のデータの行と、列数=ブロックサイズ/行数として計算される数の列とが生成される。ステップ140において、データの符号化または変換が行われて、k個のq
i=0すなわちproj(1,0)射影と、m個の冗長射影q≠0すなわちproj(p
i,q≠0)とが生成される。q
i=0射影については、Mojette変換に応じた標準的なビンは存在しない。代わりに行全体が射影として保存される。これは
図3を説明するときにさらに詳細に説明する。
【0050】
生成された射影は、所与のブロック及び射影についての行数及び射影角に応じてサイズが異なる。ステップ150において、qi=0及びqi≠0を有する異なる射影は、後でアプリケーションまたはクライアントに送信するのに適した方法で識別される。ステップ150において、符号化データは符号化器から出力として送信されて、アプリケーションによって優先バックエンド上に記憶され、ここでk=proj(1,0)射影及びm=proj(pi,q≠0)射影である。
【0051】
以下は本発明の進展の復号側の詳細な説明である。データを復号するための方法はデュアル復号モードを使用する。方法は設定を取得するステップS10を含む。設定は、データフラグメント数k、及び任意選択でパリティフラグメント数m、ならびに消失符号対応モードがアクティブか否かに関する情報を含む。設定は、ブロックサイズまたはパケットサイズb、マトリクスサイズ、及び符号化すべきアプリケーションからの入力ファイルに関する情報をさらに含み得る。当業者によって認識されるように、他のパラメータが含まれてもよい。方法は符号化データを取得するステップS20をさらに含む。符号化データは、設定に従ってフォーマットされたデータブロックに符号化変換を適用することによって符号化され、符号化データは射影のセットproj(pi,qi)を含み、そのセットは第1の数の射影(pi=1,qi=0)と、第2の数の射影proj(pi,qi≠0)とを含む。方法は、第1の射影proj(pi=1,qi=0)の数がデータフラグメント数kに等しいか否かをチェックするステップS30をさらに含む。ステップS40において、方法はチェックに基づいてデータの復号に使用する復号モードを選択し、ここで復号モードは無消失復号モードまたは消失復号モードのいずれかである。方法は、データブロックを再構成または再生成するために、選択された復号モードを利用してデータを復号するステップS50をさらに含む。
【0052】
本明細書に記載のデュアル復号モードは、無消失モードである第1の復号モードと、消失復号モードである第2の復号モードとを含む。提案した方法は、特定の符号化データに対していずれのデュアル復号モードを使用するかを決定するサブステップ、すなわちステップS10~S40を含む。方法は次いで、決定された復号モードを使用してデータを復号する。最初に、方法はデータの符号化時に使用された設定を取得する。設定は、符号化データが取得されるときに得られる情報の一部として取得され得る。設定は所定の設定であってよく、または本発明の進展の範囲から逸脱しない他の何らかの方法で取得されてもよい。設定は一般に少なくともデータフラグメント数kに関する情報を含むが、パリティフラグメント数m、及び符号化データのブロックサイズまたはパケットサイズを含んでもよい。ブロックサイズを使用して、列数=ブロックサイズ/行数の関係に基づいてデータブロックの列数または行数のいずれかを決定してもよい。本明細書では、数kはproj(1,0)射影についてのデータフラグメントまたはデータチャンクの数を表し、さらに、ブロックを再構築できるために必要な射影の最小数についての尺度も提供する。値kはOPTFECブロックの行数も表し得る。上記で参照された数mは、OPTFECのproj(pi,qi≠0)射影についてのパリティフラグメント数を表し、提案した方法がデータブロックを再構築または再構成することを可能にしつつ失われ得る射影の最大数を規定し、すなわち、システムの冗長性の尺度を提供する。明確にするために、元のデータブロックを再構築または再構成できるようにするには、合計k個の射影が必要となる。これらk個の射影はk個の元のproj(1,0)射影である必要はなく、特定数の元のproj(1,0)射影と特定数のproj(pi,qi≠0)との組み合わせとすることができる。簡単にするために、k=4及びm=8のケースを考えると、ここでは8個の射影が失われるかまたは消失してもよく、再構成がまだ可能であり、他方、k個の元のproj(1,0)射影の全部またはサブセットが失われた場合、m個のproj(pi,qi≠0)射影の対応するセットまたはサブセットを利用することによって再構成を行うことができる。したがって、本発明の進展は、誤ったデータブロックを再構成するために、k個及びm個の射影を組み合わせる多数の可能性を提供する。
【0053】
設定を取得した後、方法は符号化データを取得または受信する。データは、符号化データを生成するための方法に関して上述したように符号化され得、したがって射影のセットを含む。取得または受信された射影のセットは2つの異なる射影のセットを含み、そのうち1つ目は第1の数の射影proj(pi=1,qi=0)を含み、2つ目は第2の数の射影proj(pi,qi≠0)を含む。方法は、得られた第1の射影の数が、設定と共に取得された数kに等しいか否かをチェックする。等式が成立するか否かに基づいて、方法はデータの復号に使用する特定の復号モードを選択する。たとえば、方法は、第1の射影proj(pi=1,qi=0)の数がデータフラグメント数kに等しい場合に無消失復号モードを選択することにより、復号モードを選択するステップS40を含む。復号モードを選択するステップ(S40)は、第1の射影proj(pi=1,qi=0)の数がデータフラグメント数k未満である場合に消失復号モードを選択することをさらに含んでもよい。
【0054】
一例として、例示的な方法は、消失復号モードを利用してデータを復号するステップS50をさらに含み、得られたMojette射影proj(pi,qi)のセットがデータブロックを復号するのに十分であるか否かを制御するさらなるステップS51を含む。たとえば、ステップS51の制御方法は、取得された第1の射影proj(pi=1,qi=0)の数と、取得された第2の射影proj(pi,qi≠0)の数との和が、データブロックの行数以上であるか否かを判定することをさらに含んでもよい。
【0055】
1つの例示的態様では、方法は、取得された第1の射影proj(pi=1,qi=0)の数と、取得された第2の射影proj(pi,qi≠0)の数との和が、データブロックの行数未満である場合に、さらなるMojette射影proj(pj,qj)を要求するステップをさらに含む。さらなるMojette射影proj(pj,qj)は、第1の数の射影proj(pi=1,qi=0)及び第2の数の射影proj(pi,qi≠0)とは異なる。例示的態様では、方法は、第1の数の射影proj(pi=1,qi=0)と、第2の数の射影proj(pi,qi≠0)と、要求したさらなるMojette射影proj(pj,qj)とを使用してデータブロックを復号してもよい。
【0056】
さらなる例示的態様は、復号するステップS40が、復号データのビンがゼロに等しいか否かをチェックすることによってデータが正しく復号されたか否かを判定することをさらに含む方法を含む。
【0057】
方法はまた、取得された第2の数の射影proj(pi,qi≠0)のうちの少なくとも1つを利用することによって、消失を含む符号化データを消失なく再構成し得る。すなわち、方法は、取得された第2の数の射影proj(pi,qi≠0)に含まれる冗長なまたは余分な情報を利用することによって、誤って符号化されたデータ、すなわちデータブロックを再構成し得る。第2の数の射影が冗長なまたは余分な情報を含むことが、それらが本明細書で冗長射影と呼ばれる理由である。
【0058】
このように、復号方法は、使用する特定の復号モードを選択することによってデータを復号し得る。選択される特定の復号モードは、冗長射影を利用して、最初に符号化されたデータブロックを正しく、すなわち消失なく再構成し得る。
【0059】
図2に本発明の進展による復号例を示す。
図2において、復号方法、すなわちOPTFEC法は、
図1に関して上述したように、生成されたいくつかの射影からデータを復号する。
図2のステップ200において、OPTFEC法はアプリケーションから入力射影及び設定を受信する。アプリケーションによって射影にチェックサムを実行することができ、またはOPTFEC法がチェックサムを実行してもよい。チェックサムは破損したデータが受信されたか否かをできるだけ早く検出するために実行される。これにより復号クライアントは、受信データの破損がチェックサムによって明らかになった場合に、新たなデータを要求するか、または再送信を要求することが可能になる。
【0060】
ステップ210において、方法は、proj(1,0)射影の数がステップ200で受信された設定kに等しいか否かを判定する。proj(1,0)射影の数がkに等しい場合、ステップ270において、これらの射影proj(1,0)を使用してブロックを直接再構築または再構成することができる。これを無消失モードと呼ぶ。射影proj(1,0)の数がk未満である場合、デュアル復号動作、すなわち消失復号モードが必要となる。これら2つの異なる動作モード、すなわち無消失モード及び消失モードをデュアル動作モードとも呼ぶ。
【0061】
ステップ270において、方法は、ステップ210から受信したproj(1,0)射影を使用してブロックを再構築する。ステップ220において、方法は、受信した射影の数がブロックの再構築に十分であるか、またはより多くの射影を要求する必要があるかをテストする。m+k≧行数である場合、復号を実行して元のデータを再生成または再構成するために利用可能な十分な射影が存在する。m+kが行数未満である場合、元のデータの再構築を実行するのに十分な利用可能な射影が存在しない。したがって、方法はステップ230において、たとえば信号をアプリケーションに送信することによって、さらなる射影を要求し得る。明確にするために、元のデータブロックを再構築または再構成できるようにするには、合計k個の射影が必要となる。これらk個の射影はk個の元のproj(1,0)射影である必要はなく、特定数の元のproj(1,0)射影と、特定数のproj(pi,qi≠0)との組み合わせとすることができる。簡単にするために、k=4及びm=8のケースを考えると、ここでは8個の射影が失われるかまたは消失してもよく、再構成がまだ可能であり、他方、k個の元のproj(1,0)射影の全部が失われた場合、m個のproj(pi,qi≠0)射影を利用することによって再構成を行うことができる。したがって、本発明の進展は、誤ったデータブロックを再構成するために、k個及びm個の射影を組み合わせる多数の可能性を提供する。そのような組み合わせが手元にない場合、さらなる射影を要求するために信号が送信され得る。これらのさらなる射影は、たとえば、より高いpi及びqiの値を有するproj(pi,qi≠0)射影であってよい。ステップ230において、再構築を行うために利用可能なさらなる冗長射影が存在する否かを尋ねる要求が出される。利用可能な射影がこれ以上存在しない場合、ステップ250においてエラーメッセージがアプリケーションに出力され得る。ステップ240において、受信した射影の復号を実行して元のデータを再生成する。ステップ240の出力はステップ260においてチェックされ、出力データが正しいかを検証する。ビン=0の場合、データは正しいものであり、データはステップ280に送られる。他方、全てのビンが0に等しいわけではない場合、ステップ230においてさらなる射影の要求が送られる。ステップ280において、再構築または再構成されたデータのアプリケーション/クライアントへの出力が行われる。ここで、アプリケーション/クライアントにデータを正しい方法で提示するために整列を行うこともできる。
【0062】
図3は本発明の進展によるデータのOPTFEC符号化の一例である。
図3において、データはk=3、m=2及びブロックサイズ=18の設定でフォーマットされる。ステップ300において、入力データは所与の設定に従ってブロックにフォーマットされる。ステップ310において、ブロックを使用してq=0を有する射影を生成する。k=3であるので、3つの射影proj(1,0)が、行1から行3に1つずつ生成され、各行のピクセルの取り扱いは、q≠0を有する射影のように、ビンにおける従来のピクセル総和として行われる。ステップ320及びステップ330では、この例において入力設定がm=2となっている場合に、2つの冗長射影が生成される。アプリケーションによって設定され、proj(2,1)及びproj(-2,1)が生成されるべきであることを示すOPTFEC設定から、proj(2,1)がステップ320で生成され、proj(-2,1)がステップ330で生成される。ステップ340において、全ての射影が表示されており、m+k=5であることと、proj(2,1)及びproj(-2,1)が対応するproj(1,0)よりも4ビンだけ長いこととが示されている。ここで、合計5つの射影が生成され、入力要件k=3及びm=2に従って、q=0が3つ、冗長性のq≠0が2つである。
【0063】
図4は、
図2に従って射影proj(1,0)を使用してブロックを復号する一例である。この例では、設定入力kに等しいproj(1,0)を有する射影の総数は、再構築されるブロックの行数にも対応する。ステップ400において、データの符号化に関する
図1のステップ100の所与の設定に対応する空のブロックが提供される。この例では、k=3及びm=2であり、ブロックサイズ=18によって3つの行と、各行に6つのピクセルとが与えられる。
図2の方法によれば、q=0を有する射影の数はkに等しい。したがって、次のステップはブロックの構築である。q=0の射影では、pはデータを挿入すべき場所に対応する行を表す。ステップ410はproj(1,0)の行1への挿入を示し、ステップ420は行2に関するproj(1,0)の行2への挿入を示し、ステップ430は行3に関するproj(1,0)の行番号3への挿入を示し、ブロックが再構築される。ステップ440において、q=0を有する3つの射影を使用して3つの行が再構築された、完全に再構築されたブロックが示されている。
【0064】
図5に、消失が存在する場合であって、q=0を有さない射影を使用して再構築される必要がある1つの行r2の損失がある場合のブロックの再構築を示す。アプリケーションは、k=3及びm=2、ブロックサイズ=18の設定が与えられた場合に、消失に対して3つの射影を提供してブロックを再構築する。
図2のステップ210において、q=0を有する射影の数がk未満であるか否かが判定される。このケースでは、q=0を有する射影の数はk未満ではない。したがって、方法は、m+k=3であることを判定するステップ220に進み、これは
図2のステップ240による復号が可能であることを示す。この消失復号が射影proj(1,0)、proj(-2,1)を使用してどのように実行されるかについて詳細な例を次に説明する。ステップ500において、データの符号化に関する
図1のステップ100の所与の設定に対応する空のブロックが提供される。この例では、k=3及びm=2であり、ブロックサイズ=18である(3行及び各行r1、r2、r3に6ピクセル)。ステップ510において、proj(1,0)が行1(r1)に挿入され、ステップ520において、行3に対応する射影proj(1,0)が行番号3(r3)に挿入される。行2(r2)は空であり、第3の射影proj(-2,1)が復号に必要となる。ステップ530において、射影proj(-2,1)が導入され、これらのビンから充填済みのピクセルの減算を実行して、行2(r2)を再構築する。ステップ530のS1において、射影proj(-2,1)を使用し、充填済みのピクセルは7であり、このピクセルを第1のビンから減算することにより0が生成される。すなわち、7-7=0である。ステップ530のS2において、射影は既に存在するピクセルの4であり、そしてこれにより射影ビンの4からブロック内の現在の射影の4を引いたものが得られ、これら2つを引くと0が得られ、4-4=0となる。S3からS10において同一の手順を使用すると、11-2=9、2-1=1、14-2-9=3、16-3-8=5、12-5=7、11-7=4、4-4=0、3-3=0となり、ステップS10に示す復号の出力、すなわち[0 0 9 1 3 5 7 4 0 0]が与えられる。所与の射影proj(-2,1)ならびにk=2、m=2及びブロックサイズ18に対して、r2=(9,1,3,5,7,4)を解決するのはピクセル3から8である。この復号演算の後、ステップ540において、Mojette復号を使用してブロックが再構成される。
【0065】
例示的態様によれば、方法は、初期または元のデータブロックに対して実行される巡回冗長検査CRCによって補われ得る。初期データブロックが破損したデータを含まないようにすることによって、データにMojette変換が施されて複数のMojette変換射影(pi,qi)が得られる方法の効率が高まる。したがって、例示的態様では、方法はCRCを初期データに実行することをさらに含み、方法はCRCサムが正しい場合にのみMojette変換をデータブロックに適用する。これにより、データが破損している場合にクライアントがMojette復号をデータに実行する必要がなくなり、効率が向上する。
【0066】
方法は符号化及び復号演算を高速化するためにストリーミングSIMD拡張(SSE)拡張で補うこともできる。この実施形態は、フィールドプログラマブルゲートアレイ(FPGA)などのプログラム可能ハードウェアデバイスを使用して符号化及び復号演算を高速化することもできる。整列されたパリティ射影パッケージが存在する場合、消失が存在する場合に復号処理に必要なCPUサイクル数を大幅に削減する、非常に効率的なSSE高速化されたベクトル化コードを生成することができる。同じことが、消失が存在する場合に復号作業を同時に解決するためにさらに多くのコアが並行して動作することができるFPGAまたはグラフィックス処理ユニット(GPU)上の実装にも当てはまる。
【0067】
以下は、符号化及び復号演算に関する以下の構成設定を使用する整列mパリティチャンクパッケージの例である。符号化構成:ブロックサイズ=64、データチャンク数(k)=4、パリティチャンク数(m)=3、パリティ射影(p,q) p1=(2,1)、p2=(4,1)、p3=(6,1)
【0068】
この符号化は、
図3に従って上記の所与の符号化構成についてMojette変換を使用して実行される。
【0069】
復号:行1、2、及び4のデータチャンクが失われており、動作は消失モードであり、以下のm個のパリティ射影p1=(2,1)、p2=(4,1)、p3=(6,1)が使用され、行3のkデータチャンクがデータの再構築に使用される。
【0070】
以下の表1にプリアンブルフェーズ(不安定)復号演算の最初の13ステップを示し、ここで、3つのkデータチャンクが失われており、3つのmパリティチャンクを使用して、失われたデータチャンクを復号演算中に置き換える。
【0071】
【0072】
ここではP(2,1)、P(4,1)、P(6,1)の順に各mパリティチャンクにわたる反復が行われ、表は1列目に最初の反復ステップを示す。2列目は使用されるmパリティチャンク、3列目は解決されるピクセル、4列目は解決されるピクセルが属する行、5列目はこれがこの反復ステップ中に使用されるmパリティ射影に対して解決すべき正しい行であるか、正しいか誤りかを示す。表1の5列目に正または誤を示すプリアンブルフェーズの終わりに到達するのは、各mパリティチャンクが、大きさでソートした場合のmパリティチャンクのp値及び行番号によって与えられる正しい行を解決したときである。これは表1のステップ11、12、及び13に示されている。ソートは設定に応じて昇順または降順で実行することができるが、この例では最上行が最大であり、最下行が最小である。
【0073】
このプリアンブル(不安定)フェーズを特徴付けるものは、表1に示すように、そのステップ5、8、及び10のように、全ての反復がピクセルを解決するわけではないということである。後述する後の安定フェーズのような理想的な状況では、構成により与えられた数の整列されたピクセルを反復ごとに解決することができる。
【0074】
復号演算における異なるフェーズを
図7に示し、ここで、1と2の間のフェーズは不安定なプリアンブルフェーズであり、2から3までは安定フェーズであり、ここでは図示しない3から最後まではポストアンブルフェーズである。表1は第2の例についてのプリアンブルフェーズを示しており、これが、m個のパリティチャンクにわたる各反復の間に正しい数のピクセル及び正しい行が常に正しく解決されるとは限らない不安定なフェーズである理由を特定した。
【0075】
表2に、この例において14から19までの反復ステップごとにいくつかの整列されたピクセルを解決する安定フェーズ中の復号演算を示す。
【0076】
【0077】
表1を表2と比較すると、表2の5列目の正/誤は安定しており、すなわち常に正であり、反復で使用されるmパリティチャンクは毎回マトリクス内の正しい行を解決するので、復号演算が非常に効率的かつ簡単になる。
図7では、m個のパリティチャンクにわたる第2の例の反復についての2と3の間の安定フェーズは、これが、各反復またはステップが最小でもいくつかの整列されたピクセルを解決し、ソートされたmパリティチャンクがソートされた正しい行を解決する安定フェーズであることを示す。
【0078】
次に、複数ピクセルの符号化/復号を説明する。これらの説明では、反復あたり複数ピクセルの解決策は、整列されたmパリティ射影パッケージを使用する。
図8において、mパリティチャンクP(2,1)の例示的なレイアウトは、
図6a、
図6bに関して上述したマトリクスレイアウトに応じたピクセル配置と、ビンID番号及び実際のビンとを示す。最上行は左から右へビンID番号を示し、1から始まり22で終わる。ビンID番号行の下にはmパリティチャンクP(2,1)の表現があり、マトリクス内の各行がP(2,1)mパリティチャンクのp値に基づいて右に2ステップ移動されている。次いで、各ビンID番号列を下方に合計することによってビンが計算され、ビンID番号1から22までビン合計の行として示している。ビンID番号1及び2はビンID番号3から20までとは異なる特性を有し、このパターンはビンID番号21及び22に対して繰り返される。最初の2つ及び最後の2つのビンID番号はフリーであり、他のkデータチャンクまたはmパリティチャンクに依存しない。これらのビンID番号は単独で解決される。この特徴によって、有利なことに、そのピクセル位置から直接データマトリクスへデータを直接転送することが可能になる。このケースでは、これらのピクセル位置の値、1と2、及び63と64は、解データマトリクスに直接転送される。このデータが解データマトリクスに転送されると、各mパリティチャンクは更新されなければならない。
図8のこの例では、他のmパリティチャンクについて、ピクセル1、2、63、64内の情報を、これらのピクセル位置を含む各ビン内のそれぞれのピクセル位置から減算することによって、ピクセル1、2、63、64の情報が更新される。
【0079】
図9は、
図8の例のグラフィカル表現である。この例では、消失の数及び失われたデータチャンクまたはmパリティチャンクに応じて、反復ごとに最低2ピクセルを解決するようにmパリティチャンクパッケージが整列される。
図8のように、ここでは、P(2,1)は2+2個のフリーピクセルを含み、P(4,1)は4+4個のフリーピクセルを含み、P(6,1)は6+6個のフリーピクセルを含む。それぞれのmパリティチャンクのグラフィカル表現では、
図8で詳細に説明したように、mパリティチャンクのp値だけ行を右に移動している。この例においてp値が負の場合、
図8で詳細に説明したように、mパリティチャンクのp値だけ行が左に移動される。復号演算中に各mパリティチャンクにわたる反復ごとに複数のピクセルを解決するための整列されたmパリティチャンクパッケージは、全て正のp値、正及び負、ならびに全て負を使用するように設定することができ、ここで、mパリティチャンクのp値の最小絶対値は、同数のピクセルが反復ごとに解決される安定フェーズ中に解決することが可能な最大ピクセル数を表し、これは最小値を有するmパリティチャンクが復号演算に使用される場合である。
【0080】
第2の例におけるmパリティチャンクパッケージの状況は
図10であり、
図10はプリアンブルフェーズが終了した後のデータを示す。これは表1にも示している。ここで、ゼロは解決済みのピクセル位置を表し、P(4,1)のmパリティ射影は2つのフリーピクセル位置23及び24を含む。
【0081】
図11aは、表2のステップ14を実行して、ピクセル23及び24を解決し、解決されたピクセルについて他のmパリティ射影内の各ビンを減少させた後の状況である。理解され得るように、このステップはピクセル23及び24を解決し、mパリティチャンクP(6,1)のピクセル位置13及び14の2つのピクセルをフリーにし、これらはここで同一の手順を使用して解決することができる。記載した手順は左から右へ移動するが、手順は右から左へ移動することもでき、または本発明の進展の範囲から逸脱することなく両方向から同時に移動することもできる。したがって、マトリクスの向き及び解決の方向は完全に自由自在である。
【0082】
図11bにおいて、最上行に接続されているピクセル位置13及び14は、表1のステップ15を参照して上述したように、最大のp値を有するmパリティ射影によって解決される。表1のステップ16は
図11cに対応し、最小のp値を有するmパリティ射影P(2,1)が、マトリクスの最下行に位置するピクセル位置51及び52を解決する。
図11dは同一の手順を使用してピクセル位置25及び26を解決し、
図11eはこの第2の例についてのピクセル位置15及び16の解決である。
図11fはピクセル位置53及び54の解決のために左から右への手順を使用する。この安定フェーズにおける全てのピクセルは正しいmパリティチャンクによって解決され、安定した基本のまたは最小のピクセル位置も、反復ごとに使用される最小絶対p値によって与えられる。
【0083】
図12は、全てのピクセル位置が解決された後のmパリティ射影パッケージである。復号演算の終わりまでに全てのビンがゼロに等しくない場合、エラーが存在し、復号演算が成功しなかったか、または所与のチャンクが誤りを含んでいた。
【0084】
次に、例示的態様による装置を説明する。理解され得るように、上述の方法はこれらの装置によって制限なく実行され得る。
【0085】
理解され得るように、本明細書に記載の方法は本発明の進展から逸脱することなく様々な方法で実装し、組み合わせ、再構成することができる。たとえば、実施形態はハードウェアで、もしくは適切な処理回路により実行されるソフトウェアで、またはそれらの組み合わせで実装され得る。したがって、本明細書に記載のステップ、機能、手順、及び/またはブロックは、汎用電子回路及び特定用途向け回路の両方を含む、ディスクリート回路または集積回路技術などの任意の従来技術を使用してハードウェアで実装され得る。代替的には、または補助として、本明細書に記載のステップ、機能、手順、及び/またはブロックのうちの少なくとも一部は、1つまたは複数のプロセッサあるいは処理ユニットなどの適切な処理回路により実行されるコンピュータプログラムなどのソフトウェアで実装され得る。処理回路の例には、限定はしないが、1つまたは複数のマイクロプロセッサ、1つまたは複数のデジタル信号プロセッサ(DSP)、1つまたは複数の中央処理装置(CPU)、ビデオアクセラレーションハードウェア、ならびに/あるいは任意の適切なプログラマブル論理回路、たとえば、1つまたは複数のフィールドプログラマブルゲートアレイ(FPGA)、あるいは1つまたは複数のプログラマブルロジックコントローラ(PLC)がある。
【0086】
提案した技術が実装された任意の従来型デバイスの一般的な処理能力を再利用することが可能であり得ることも理解されたい。たとえば、既存のソフトウェアを再プログラミングすることによって、または新たなソフトウェアコンポーネントを追加することによって、既存のソフトウェアを再利用することも可能であり得る。
【0087】
例示的態様では、本発明の進展は符号化データを生成するための装置100をさらに含む。装置100は、行及び列を含むように指定された設定に従ってフォーマットされたデータブロックの形でデータを取得するように構成される。装置100は、符号化変換を取得されたデータブロックに適用することによって、射影のセットproj(pi,qi)を生成するようにさらに構成され、セットは第1の数の射影proj(pi=1,qi=0)と、第2の数の射影proj(pi,qi≠0)とを含み、第2の数の射影proj(pi,qi≠0)は、符号化Mojette変換をデータブロックに適用することによって生成される。装置100は、生成されたMojette射影を出力してMojette射影の形でデータを記憶できるようにするようにさらに構成される。
【0088】
装置100は射影のセットproj(pi,qi)を生成するようにさらに構成され得、各行を対応する射影proj(pi=1,qi=0)にマッピングして、対応する行と同一の情報を保持する射影を生成することによって、第1の数の射影proj(pi=1,qi=0)を生成するように構成され得る。
【0089】
装置の他の実施形態は、射影のセットproj(pi,qi)を生成するように構成され、符号化Mojette変換をデータブロックに適用することによって、第2の数の射影proj(pi,qi≠0)を生成するように構成され得る装置100を含み、第2の数の射影は、第1の射影のセットの少なくとも1つが消失を含むかまたは誤って符号化されている場合にデータブロックを復号するために使用される冗長射影を提供する。
【0090】
図13aは提案した技術による装置100の一例の概略ブロック図である。
図13aでは、装置100は少なくとも1つのプロセッサ110及びメモリ120を含み、メモリ120は、少なくとも1つのプロセッサ110によって実行された場合に少なくとも1つのプロセッサ110に符号化データを生成させる命令を含む。
【0091】
装置100は通信回路130をさらに含み得る。通信回路130は、ネットワーク内の他のデバイスと有線及び/または無線通信するための機能を含み得る。特定の例では、通信回路130は、情報の送信及び/または受信を含む、1つまたは複数の他のノードとの通信のための無線回路に基づき得る。しかしながら、有線通信、すなわち有線ネットワークを介したデータの交換も同様に可能である。通信回路130はプロセッサ110及び/またはメモリ120と相互接続され得る。通信回路130はハードウェア回路110と相互接続され得る。例として、通信回路130は、受信機、送信機、送受信機、入出力(I/O)回路、入力ポート(複数可)及び/または出力ポート(複数可)のうちのいずれかを含み得る。
【0092】
装置200は、デュアル復号モードを利用してデータを復号するように構成され得る。装置200は、データフラグメント数kと、パリティフラグメント数mとを含む設定を取得するように構成される。設定は符号化データのブロックサイズ、パケットサイズも含むことができる。装置200は、設定に従ってフォーマットされたデータブロックに符号化Mojette変換を適用することによって符号化された符号化データを取得するようにさらに構成される。符号化データはMojette射影のセットproj(pi,qi)を含み、セットは第1の数の射影proj(pi=1,qi=0)と、第2の数の射影proj(pi,qi≠0)とを含む。装置200は、第1の射影proj(pi=1,qi=0)の数がデータフラグメント数kに等しいか否かをチェックするようにさらに構成される。装置200はデータを復号するために使用する復号モードをチェックに基づいて選択するようにさらに構成され、復号モードは無消失復号モードまたは消失復号モードのいずれかである。装置200は、データブロックを再生成するために、選択された復号モードを利用してデータを復号するようにさらに構成される。
【0093】
装置200は、第1の射影proj(pi=1,qi=0)の数がデータフラグメント数kに等しい場合に無消失復号モードを選択するように構成されることによって、復号モードを選択するようにさらに構成され得る。装置200は、第1の射影proj(pi=1,qi=0)の数がデータフラグメント数k未満である場合に消失復号モードを選択するように構成されることによって、復号モードを選択するようにさらに構成され得る。装置はまた、取得されたMojette射影のセットproj(pi,qi)がデータブロックを復号するのに十分であるか否かを調べ得る。
【0094】
装置200は、取得された第1の射影proj(pi=1,qi=0)の数と、取得された第2の射影proj(pi,qi≠0)の数との和がデータブロックの行数以上であるか否かを判定することによって、取得されたMojette射影のセットproj(pi,qi)がデータブロックを復号するのに十分であるか否かを調べるように構成することができる。装置200はまた、取得された第1の射影proj(pi=1,qi=0)の数と、取得された第2の射影proj(pi,qi≠0)の数との和がデータブロックの行数未満である場合に、さらなるMojette射影proj(pj,qj)を要求し得、さらなるMojette射影proj(pj,qj)は、第1の数の射影proj(pi=1,qi=0)及び第2の数の射影proj(pi,qi≠0)とは異なる。
【0095】
装置200はまた、第1の数の射影proj(pi=1,qi=0)と、第2の数の射影proj(pi,qi≠0)と、要求したさらなるMojette射影proj(pj,qj)とを使用してデータブロックを復号することができる。装置200は、復号データのビンがゼロに等しいか否かをチェックすることによって、データが正しく復号されたか否かを判定する。
【0096】
図13aは、本発明の進展の例示的態様による装置200の可能な実施形態を示すブロック図である。装置200は少なくとも1つのプロセッサ210及びメモリ220を含み、メモリ220は、少なくとも1つのプロセッサ210によって実行された場合に少なくとも1つのプロセッサ210にデュアル復号モードを利用してデータを復号させる命令を含む。装置200は上述のように通信回路230をさらに含み得る。
【0097】
本明細書に記載の方法は、
図13bに示すように、ハードウェア回路に基づく装置100及び200によって実装され得る。ハードウェア回路は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他の任意のハードウェア論理、たとえば、適切なレジスタ(REG)及び/またはメモリ回路(MEM)に関連して特殊機能を実行するように相互接続された個別論理ゲート及び/またはフリップフロップを含み得る。
【0098】
図14は、本発明の進展の例示的態様による符号化のコンピュータ実装の概略図である。この例では、本明細書に記載のステップ、機能、手順、モジュール、及び/またはブロックの少なくともいくつかは、コンピュータプログラム125または135に実装され、これは1つまたは複数のプロセッサ110を含む処理回路による実行のためにメモリ120にロードされる。プロセッサ(複数可)110及びメモリ120は、通常のソフトウェア実行を可能にするために互いに相互接続される。入出力デバイス140はまた、入力パラメータ(複数可)及び/または結果として得られる出力パラメータ(複数可)などの関連データの入力及び/または出力を可能にするために、プロセッサ(複数可)110及び/またはメモリ120に相互接続され得る。「プロセッサ」という用語は、特定の処理、判定または計算タスクを実行するためのプログラムコードまたはコンピュータプログラム命令を実行することが可能な任意のシステムまたはデバイスを含む。したがって、1つまたは複数のプロセッサ110を含む処理回路は、コンピュータプログラム125または135を実行したときに、本明細書に記載したような明確に定義された処理タスクを実施するように構成される。処理回路は上述のステップ、機能、手順及び/またはブロックの実行専用である必要はなく、他のタスクを実行してもよい。
【0099】
たとえば、コンピュータプログラム125または135は、プロセッサに少なくとも以下を行わせ得る。
・行及び列を含むように指定された設定に従ってフォーマットされたデータブロックの形でデータを読み取る。
・符号化変換を取得されたデータブロックに適用することによって、射影のセットproj(pi,qi)を生成し、セットは第1の数の射影proj(pi=1,qi=0)と、第2の数の射影proj(pi,qi≠0)とを含み、第2の数の射影proj(pi,qi≠0)は符号化Mojette変換をデータブロックに適用することによって生成される。
・生成されたMojette射影を出力して(S3)、Mojette射影の形でデータを記憶できるようにする。
【0100】
例として、ソフトウェアまたはコンピュータプログラム125もしくは135は、コンピュータ可読媒体、特に不揮発性媒体に記憶され得る。コンピュータ可読媒体は1つまたは複数の取り外し可能または取り外し不可能なメモリデバイス、たとえば、限定はしないが、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイディスク、ユニバーサルシリアルバス(USB)メモリ、ハードディスクドライブ(HDD)記憶デバイス、フラッシュメモリ、磁気テープ、または他の任意の従来のメモリデバイスを含み得る。したがって、コンピュータプログラムは、コンピュータまたは同等の処理デバイスの動作メモリにロードされて、その処理回路により実行され得る。
【0101】
図14は、本発明の進展の例示的態様による復号のコンピュータ実装の一例を示す概略図である。この特定の例では、本明細書に記載のステップ、機能、手順、モジュール、及び/またはブロックの少なくともいくつかはコンピュータプログラム225または235に実装され、これは1つまたは複数のプロセッサ210を含む処理回路による実行のためにメモリ220にロードされる。プロセッサ(複数可)210及びメモリ220は、通常のソフトウェア実行を可能にするために互いに相互接続される。入出力デバイス240はまた、入力パラメータ(複数可)及び/または結果として得られる出力パラメータ(複数可)などの関連データの入力及び/または出力を可能にするために、プロセッサ(複数可)210及び/またはメモリ220に相互接続され得る。「プロセッサ」という用語は、特定の処理、判定または計算タスクを実行するためのプログラムコードまたはコンピュータプログラム命令を実行することが可能な任意のシステムまたはデバイスとしての一般的な意味を含む。したがって、1つまたは複数のプロセッサ210を含む処理回路は、コンピュータプログラム225または235を実行したときに、本明細書に記載したような明確に定義された処理タスクを実施するように構成される。処理回路は上述のステップ、機能、手順及び/またはブロックの実行専用である必要はなく、他のタスクを実行してもよい。
【0102】
たとえば、コンピュータプログラム225または235は、プロセッサに少なくとも以下を実行させ得る。
・設定を読み取り、設定はデータフラグメント数kと、パリティフラグメント数mとを含み、設定は符号化データのブロックサイズ、パケットサイズをさらに含む。
・符号化データを読み取り、符号化データは、設定に従ってフォーマットされたデータブロックに符号化Mojette変換を適用することによって符号化され、符号化データは射影のセットproj(pi,qi)を含み、セットは第1の数の射影proj(pi=1,qi=0)と、第2の数の射影proj(pi,qi≠0)とを含む。
・第1の射影proj(pi=1,qi=0)の数がデータフラグメント数kに等しいか否かをチェックする。
・データを復号するために使用する復号モードをチェックに基づいて選択し、復号モードは無消失復号モードまたは消失復号モードのいずれかである。
・データブロックを再生成するために、選択された復号モードを利用してデータを復号する。
【0103】
ソフトウェアまたはコンピュータプログラム225もしくは235は、コンピュータ可読媒体、特に不揮発性媒体に記憶され得る。コンピュータ可読媒体は1つまたは複数の取り外し可能または取り外し不可能なメモリデバイス、たとえば、限定はしないが、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイディスク、ユニバーサルシリアルバス(USB)メモリ、ハードディスクドライブ(HDD)記憶デバイス、フラッシュメモリ、磁気テープ、または他の任意の従来のメモリデバイスを含み得る。したがって、コンピュータプログラムは、コンピュータまたは同等の処理デバイスの動作メモリにロードされて、その処理回路により実行され得る。
【0104】
上述の実施形態は単に例として与えられているにすぎず、提案した技術はそれに限定されないことは理解されたい。添付の特許請求の範囲によって定義される本範囲から逸脱することなく、実施形態に対して様々な修正、組み合わせ、及び変更がなされ得ることは当業者には理解されよう。具体的には、技術的に可能であれば、異なる実施形態における異なる部分の解決策を他の構成において組み合わせることができる。