(57)【特許請求の範囲】
【請求項１】
コンピューティング・デバイスの処理モジュールによって実行される方法であって、
データ・セグメントが、符号化されたデータ・スライスのセットへ散在ストレージ・エラー符号化され、前記符号化されたデータ・スライスのセットの復号閾値数の符号化されたデータ・スライスが、前記データ・セグメントを回復するために必要とされ、
前記方法は、前記符号化されたデータ・スライスのセットの符号化されたデータ・スライスのそれぞれについて、
前記符号化されたデータ・スライスに基づいて数を生成するステップと、
前記数に基づいて遺伝子を識別して、識別された遺伝子を作成するステップと、
前記符号化されたデータ・スライスを前記識別された遺伝子にリンクするリンク識別子を作り出すステップであって、前記符号化されたデータ・スライスのセットについて、識別された遺伝子のセット、およびリンク識別子のセットが作り出される、ステップとを含み、前記方法はさらに、
前記識別された遺伝子のセットおよび前記リンク識別子のセットから分子符号化情報を生成するステップであって、前記分子符号化情報は、前記識別された遺伝子のセットの各識別された遺伝子について分子ストレージ構造を作り出して、分子ストレージ構造のセットを生じさせるために使用される、ステップを含む、方法。
【請求項２】
前記符号化されたデータ・スライスのセットの前記符号化されたデータ・スライスのデータを前記数に変換するステップと、
前記数を遺伝子識別子として使用して前記遺伝子を識別するステップとをさらに含む、請求項１に記載の方法。
【請求項３】
前記符号化されたデータ・スライスのセットの前記符号化されたデータ・スライスのデータに対して数学関数を実行して、前記数を作成するステップと、
前記数を遺伝子識別子として使用して前記遺伝子を識別するステップと
をさらに含む、請求項１に記載の方法。
【請求項４】
前記符号化されたデータ・スライスのセットの前記符号化されたデータ・スライスのデータを、複数の数に変換するステップであって、
前記複数の数は前記数を含む、ステップと、
前記複数の数から複数の遺伝子識別子を生成するステップと、
前記複数の遺伝子識別子を使用して複数の遺伝子を識別するステップであって、前記複数の遺伝子は前記遺伝子を含む、ステップと、
前記符号化されたデータ・スライスを前記複数の識別された遺伝子にリンクする前記リンク識別子を作り出すステップと
をさらに含む、請求項１に記載の方法。
【請求項５】
前記符号化されたデータ・スライスに基づいて予備数を生成するステップと、
前記予備数が既知の遺伝子識別子と実質的に合致するかどうかを決定するステップと、
前記予備数が前記既知の遺伝子識別子と実質的に合致するとき、前記数を前記予備数に設定するステップと、
前記予備数が前記既知の遺伝子識別子と実質的に合致しないとき、前記予備数に対して関数を実行して前記数を作成するステップと、
前記符号化されたデータ・スライスを前記識別された遺伝子にリンクし、前記予備数に対して実行された前記関数を識別する前記リンク識別子を作り出すステップと
をさらに含む、請求項１に記載の方法。
【請求項６】
前記分子ストレージ構造のセットの少なくともテスト復号閾値数の分子ストレージ構造にアクセスして、前記識別された遺伝子のセットの少なくともテスト復号閾値数の識別された遺伝子を取り出すステップと、
前記少なくともテスト復号閾値数の識別された遺伝子から、少なくともテスト復号閾値数のテスト符号化データ・スライスを回復するステップと、
前記少なくともテスト復号閾値数のテスト符号化データ・スライスから別のデータ・セグメントを再構成して、再構成されたデータ・セグメントを作成するステップと、
前記再構成されたデータ・セグメントが前記データ・セグメントと実質的に合致するとき、検証可能な記憶のレベルを示すステップと
によって、前記分子ストレージ構造のセットにおける前記識別された遺伝子のセットの記憶を検証するステップと
をさらに含む、請求項１に記載の方法。
【請求項７】
コンピュータ・プログラムであって、
符号化されたデータ・スライスのセットの符号化されたデータ・スライスであって、データ・セグメントが、前記符号化されたデータ・スライスのセットへ散在ストレージ・エラー符号化され、前記符号化されたデータ・スライスのセットの復号閾値数符号化されたデータ・スライスが、前記データ・セグメントを回復するために必要とされ、
前記コンピュータ・プログラムが、前記符号化されたデータ・スライスのセットの符号化されたデータ・スライスのそれぞれについて、
前記符号化されたデータ・スライスに基づいて数を生成することと、
前記数に基づいて遺伝子を識別して、識別された遺伝子を作成することと、
前記符号化されたデータ・スライスを前記識別された遺伝子にリンクするリンク識別子を作り出すことであって、前記符号化されたデータ・スライスのセットについて、識別された遺伝子のセット、およびリンク識別子のセットが作り出される、前記作り出すこととをコンピューティング・デバイスに実行させ、さらに、
前記識別された遺伝子のセットおよび前記リンク識別子のセットから分子符号化情報を生成することであって、前記分子符号化情報は、前記識別された遺伝子のセットの各識別された遺伝子について分子ストレージ構造を作り出して、分子ストレージ構造のセットを生じさせるために使用される、前記生成すること
を前記コンピューティング・デバイスに実行させる、コンピュータ・プログラム。
【請求項８】
前記符号化されたデータ・スライスのセットの前記符号化されたデータ・スライスのデータを前記数に変換することと、
前記数を遺伝子識別子として使用して前記遺伝子を識別することと
を前記コンピューティング・デバイスに実行させる、請求項７に記載のコンピュータ・プログラム。
【請求項９】
前記符号化されたデータ・スライスのセットの前記符号化されたデータ・スライスのデータに対して数学関数を実行して、前記数を作成することと、
前記数を遺伝子識別子として使用して前記遺伝子を識別することと
を前記コンピューティング・デバイスに実行させる、請求項７に記載のコンピュータ・プログラム。
【請求項１０】
前記符号化されたデータ・スライスのセットの前記符号化されたデータ・スライスのデータを、複数の数に変換することであって、前記複数の数は前記数を含む、変換することと、
前記複数の数から複数の遺伝子識別子を生成することと、
前記複数の遺伝子識別子を使用して複数の遺伝子を識別することであって、前記複数の遺伝子は前記遺伝子を含む、識別することと、
前記符号化されたデータ・スライスを前記複数の識別された遺伝子にリンクする前記リンク識別子を作り出すことと
を前記コンピューティング・デバイスに実行させる、請求項７に記載のコンピュータ・プログラム。
【請求項１１】
前記符号化されたデータ・スライスに基づいて予備数を生成することと、
前記予備数が既知の遺伝子識別子と実質的に合致するかどうかを決定することと、
前記予備数が前記既知の遺伝子識別子と実質的に合致するとき、前記数を前記予備数に設定することと、
前記予備数が前記既知の遺伝子識別子と実質的に合致しないとき、前記予備数に対して関数を実行して前記数を作成することと、
前記符号化されたデータ・スライスを前記識別された遺伝子にリンクし、前記予備数に対して実行された前記関数を識別する前記リンク識別子を作り出すことと
を前記コンピューティング・デバイスに行わせる、請求項７に記載のコンピュータ・プログラム。
【請求項１２】
前記分子ストレージ構造のセットの少なくともテスト復号閾値数の分子ストレージ構造にアクセスして、前記識別された遺伝子のセットの少なくともテスト復号閾値数の識別された遺伝子を取り出すことと、
前記少なくともテスト復号閾値数の識別された遺伝子から、少なくともテスト復号閾値数のテスト符号化データ・スライスを回復することと、
前記少なくともテスト復号閾値数のテスト符号化データ・スライスから別のデータ・セグメントを再構成して、再構成されたデータ・セグメントを作成することと、
前記再構成されたデータ・セグメントが前記データ・セグメントと実質的に合致するとき、検証可能な記憶のレベルを示すことと
によって、前記分子ストレージ構造のセットにおける前記識別された遺伝子のセットの記憶を検証すること
を前記コンピューティング・デバイスに実行させる、請求項７に記載のコンピュータ・プログラム。
【請求項１３】
コンピューティング・デバイスのグループのコンピューティング・デバイスであって、
インターフェースと、
ローカル・メモリと、
前記インターフェースおよび前記ローカル・メモリに動作可能に結合された処理モジュールとを備え、
符号化されたデータ・スライスのセットの符号化されたデータ・スライスであって、データ・セグメントが、前記符号化されたデータ・スライスのセットへ散在ストレージ・エラー符号化され、前記符号化されたデータ・スライスのセットの復号閾値数の符号化されたデータ・スライスが、前記データ・セグメントを回復するために必要とされ、
前記処理モジュールは、前記符号化されたデータ・スライスのセットの各符号化されたデータ・スライスについて、
前記符号化されたデータ・スライスに基づいて数を生成することと、
前記数に基づいて遺伝子を識別して、識別された遺伝子を作成することと、
前記符号化されたデータ・スライスを前記識別された遺伝子にリンクするリンク識別子を作り出すことであって、前記符号化されたデータ・スライスのセットについて、識別された遺伝子のセット、およびリンク識別子のセットが作り出される、前記作り出すことと、を実行するように機能し、さらに、
前記識別された遺伝子のセットおよび前記リンク識別子のセットから分子符号化情報を生成することであって、前記分子符号化情報は、前記識別された遺伝子のセットの各識別された遺伝子について分子ストレージ構造を作り出して、分子ストレージ構造のセットを生じさせるために使用される、前記生成すること
を実行するように機能する、コンピューティング・デバイス。
【請求項１４】
前記処理モジュールは、
前記符号化されたデータ・スライスのセットの前記符号化されたデータ・スライスのデータを前記数に変換することと、
前記数を遺伝子識別子として使用して前記遺伝子を識別することと
を実行するようにさらに機能する、請求項１３に記載のコンピューティング・デバイス。
【請求項１５】
前記処理モジュールは、
前記符号化されたデータ・スライスのセットの前記符号化されたデータ・スライスのデータに対して数学関数を実行して、前記数を作成することと、
前記数を遺伝子識別子として使用して前記遺伝子を識別することと
を実行するようにさらに機能する、請求項１３に記載のコンピューティング・デバイス。
【請求項１６】
前記処理モジュールは、
前記符号化されたデータ・スライスのセットの前記符号化されたデータ・スライスのデータを、複数の数に変換することであって、前記複数の数は前記数を含む、前記変換することと、
前記複数の数から複数の遺伝子識別子を生成することと、
前記複数の遺伝子識別子を使用して複数の遺伝子を識別することであって、前記複数の遺伝子は前記遺伝子を含む、前記識別することと、
前記符号化されたデータ・スライスを前記複数の識別された遺伝子にリンクする前記リンク識別子を作り出すことと
を実行するようにさらに機能する、請求項１３に記載のコンピューティング・デバイス。
【請求項１７】
前記処理モジュールは、
前記符号化されたデータ・スライスに基づいて予備数を生成することと、
前記予備数が既知の遺伝子識別子と実質的に合致するかどうかを決定することと、
前記予備数が前記既知の遺伝子識別子と実質的に合致するとき、前記数を前記予備数に設定することと、
前記予備数が前記既知の遺伝子識別子と実質的に合致しないとき、前記予備数に対して関数を実行して前記数を作成することと、
前記符号化されたデータ・スライスを前記識別された遺伝子にリンクし、前記予備数に対して実行された前記関数を識別する前記リンク識別子を作り出すことと
を実行するようにさらに機能する、請求項１３に記載のコンピューティング・デバイス。
【請求項１８】
前記処理モジュールは、
前記インターフェースを介して、前記分子ストレージ構造のセットの少なくともテスト復号閾値数の分子ストレージ構造にアクセスして、前記識別された遺伝子のセットの少なくともテスト復号閾値数の識別された遺伝子を取り出すことと、
前記少なくともテスト復号閾値数の識別された遺伝子から、少なくともテスト復号閾値数のテスト符号化データ・スライスを回復することと、
前記少なくともテスト復号閾値数のテスト符号化データ・スライスから別のデータ・セグメントを再構成して、再構成されたデータ・セグメントを作成することと、
前記再構成されたデータ・セグメントが前記データ・セグメントと実質的に合致するとき、検証可能な記憶のレベルを示すことと
によって、前記分子ストレージ構造のセットにおける前記識別された遺伝子のセットの記憶を検証すること
を実行するようにさらに機能する、請求項１３に記載のコンピューティング・デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
関連特許の相互参照
本出願は、２０１４年４月２日に出願された「ACCESSING DATA IN ADISPERSED STORAGE NETWORK」という名称の米国仮出願第６１／９７４，１１０号、および２０１５年２月４日に出願された「GENERATING MOLECULAR ENCODING INFORMATION FOR DATA STORAGE」という名称の米国特許出願第１４／６１３，８９９号の優先権を主張するものであり、それらはいずれも参照により全体が本明細書に組み込まれ、あらゆる目的で本出願の一部を構成する。
【０００２】
連邦政府支援の研究または開発に関する陳述−該当なし
【０００３】
コンパクト・ディスクで提出された資料の参照による組み込み−該当なし
【０００４】
本発明は、一般にコンピュータ・ネットワークに関し、より詳細には、データの散在ストレージ（dispersed storage）およびデータの分散タスク処理（distributedtask processing）に関する。
【背景技術】
【０００５】
コンピューティング・デバイスは、データの通信、データの処理、またはデータの記憶、あるいはそれらの組合せを行うことが知られている。そのようなコンピューティング・デバイスは、ワイヤレス・スマートフォン、ラップトップ、タブレット、パーソナル・コンピュータ（ＰＣ）、ワーク・ステーション、およびビデオ・ゲーム・デバイスから、日々の何百万ものウェブ検索、株式取引、またはオンライン購入をサポートするデータ・センタにまで及ぶ。一般に、コンピューティング・デバイスは、中央処理装置（ＣＰＵ）、メモリ・システム、ユーザ入出力インターフェース、周辺デバイス・インターフェース、および相互接続バス構造を含む。
【０００６】
さらに知られているように、コンピュータは、「クラウド・コンピューティング」を使用してコンピュータの代わりに１つまたは複数のコンピューティング機能（たとえば、サービス、アプリケーション、アルゴリズム、算術論理機能など）を実行することによって、そのＣＰＵを効果的に拡張することができる。さらに、大きなサービス、アプリケーション、または機能、あるいはそれらの組合せについて、サービス、アプリケーション、または機能、あるいはそれらの組合せの完了のための応答時間を改善するために、クラウド・コンピューティングは、分散様式で複数のクラウド・コンピューティング・リソースによって実行されることがある。たとえば、Ｈａｄｏｏｐは、数千のコンピュータによるアプリケーションの実行を可能にする分散アプリケーションをサポートするオープン・ソース・ソフトウェア・フレームワークである。
【０００７】
クラウド・コンピューティングに加えて、コンピュータは、そのメモリ・システムの一部として「クラウド・ストレージ」を使用することができる。知られているように、クラウド・ストレージは、ユーザがそのコンピュータを介してインターネット・ストレージ・システム上にファイルやアプリケーションなどを記憶することを可能にする。インターネット・ストレージ・システムは、記憶するデータを符号化するためにエラー訂正方式を使用するＲＡＩＤ（独立ディスク冗長アレイ）システムまたは散在ストレージシステム、あるいはその両方を含み得る。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国仮出願第６１／９７４，１１０号
【特許文献２】米国特許出願第１４／６１３，８９９号
【発明の概要】
【発明が解決しようとする課題】
【０００９】
コンピューティング・デバイスの処理モジュールによって実行される方法、コンピュータ・プログラム、およびコンピューティング・デバイスが提供される。
データ・セグメントが、符号化されたデータ・スライスのセットへ散在ストレージ・エラー符号化される。符号化されたデータ・スライスのセットの復号閾値数の符号化されたデータ・スライスが、データ・セグメントを回復するために必要とされる。方法は、符号化されたデータ・スライスのセットの符号化されたデータ・スライスのそれぞれについて、符号化されたデータ・スライスに基づいて数を生成するステップと、数に基づいて遺伝子を識別して、識別された遺伝子を作成するステップと、符号化されたデータ・スライスを識別された遺伝子にリンクするリンク識別子を作り出すステップであって、符号化されたデータ・スライスのセットについて、識別された遺伝子のセット、およびリンク識別子のセットが作り出される、ステップとを含む。さらに、方法は、識別された遺伝子のセットおよびリンク識別子のセットから分子符号化情報を生成するステップであって、分子符号化情報は、識別された遺伝子のセットの各識別された遺伝子について分子ストレージ構造を作り出して、分子ストレージ構造のセットを生じさせるために使用される、ステップを含む。
以上、本発明の概要を、方法として説明したが、本発明は、コンピュータ・プログラム、またはコンピューティング・デバイスとして把握することもできる。
【課題を解決するための手段】
【００１０】
本発明の目的は、分子符号化情報を生成するための方法、コンピュータ・プログラム、およびコンピューティング・デバイスを提供することである。
【図面の簡単な説明】
【００１１】
【図１】本発明による、分散コンピューティング・システムの実施形態の概略ブロック図である。
【図２】本発明による、コンピューティング・コアの実施形態の概略ブロック図である。
【図３】本発明による、分散ストレージおよびタスク処理の例の図である。
【図４】本発明による、アウトバウンド分散ストレージおよび／またはタスク（ＤＳＴ）処理の実施形態の概略ブロック図である。
【図５】本発明による、アウトバウンドＤＳＴ処理のための方法の例の論理図である。
【図６】本発明による、散在エラー符号化の実施形態の概略ブロック図である。
【図７】本発明による、散在エラー符号化のセグメント処理の例の図である。
【図８】本発明による、散在エラー符号化のエラー符号化およびスライス化処理の例の図である。
【図９】本発明による、アウトバウンドＤＳＴ処理のグルーピング選択処理の例の図である。
【図１０】本発明による、データをスライス・グループに変換する例の図である。
【図１１】本発明による、ＤＳＴ実行ユニットの実施形態の概略ブロック図である。
【図１２】本発明による、ＤＳＴ実行ユニットの例の概略ブロック図である。
【図１３】本発明による、インバウンド分散ストレージおよび／またはタスク（ＤＳＴ）処理の実施形態の概略ブロック図である。
【図１４】本発明による、インバウンドＤＳＴ処理のための方法の例の論理図である。
【図１５】本発明による、インバウンドＤＳＴ処理のグルーピング解除選択処理の例の図である。
【図１６】本発明による、散在エラー復号の実施形態の概略ブロック図である。
【図１７】本発明による、散在エラー復号のスライス解除およびエラー復号処理の例の図である。
【図１８】本発明による、散在エラー復号のセグメント解除処理の例の図である。
【図１９】本発明による、スライス・グループをデータに変換する例の図である。
【図２０】本発明による、分散コンピューティング・システム内の分散ストレージの例の図である。
【図２１】本発明による、データを記憶するためのアウトバウンド分散ストレージおよび／またはタスク（ＤＳＴ）処理の動作の例の概略ブロック図である。
【図２２】本発明による、図２１の例のための散在エラー符号化の例の概略ブロック図である。
【図２３】本発明による、記憶のためにデータをピラー・スライス（pillar slice）グループに変換する例の図である。
【図２４】本発明による、ＤＳＴ実行ユニットの記憶動作の例の概略ブロック図である。
【図２５】本発明による、散在エラー符号化データ（dispersed errorencoded data）を取り出すためのインバウンド分散ストレージおよび／またはタスク（ＤＳＴ）処理の動作の例の概略ブロック図である。
【図２６】本発明による、図２５の例のための散在エラー復号の例の概略ブロック図である。
【図２７】本発明による、複数のデータおよび複数のタスク・コードを記憶する分散ストレージおよびタスク処理ネットワーク（ＤＳＴＮ）モジュールの例の概略ブロック図である。
【図２８】本発明による、記憶されたデータに対してタスクを実行する分散コンピューティング・システムの例の概略ブロック図である。
【図２９】本発明による、図２８の例を推進するタスク分散モジュールの実施形態の概略ブロック図である。
【図３０】本発明による、記憶されたデータに対してタスクを実行する分散コンピューティング・システムの具体例の図である。
【図３１】本発明による、図３０の例のためのデータおよびタスク・コードを記憶する分散ストレージおよびタスク処理ネットワーク（ＤＳＴＮ）モジュールの例の概略ブロック図である。
【図３２】本発明による、図３０の例のためのＤＳＴ割り振り情報の例の図である。
【図３３】本発明による、図３０の例を実行するＤＳＴＮモジュールの概略ブロック図である。
【図３４】本発明による、図３０の例を実行するＤＳＴＮモジュールの概略ブロック図である。
【図３５】本発明による、図３０の例を実行するＤＳＴＮモジュールの概略ブロック図である。
【図３６】本発明による、図３０の例を実行するＤＳＴＮモジュールの概略ブロック図である。
【図３７】本発明による、図３０の例を実行するＤＳＴＮモジュールの概略ブロック図である。
【図３８】本発明による、図３０の例を実行するＤＳＴＮモジュールの概略ブロック図である。
【図３９】本発明による、図３０の例のための結果情報を最終結果として組み合わせる例の図である。
【図４０】本発明による、散在ストレージ・ネットワーク（ＤＳＮ）の実施形態の概略ブロック図である。
【図４１】本発明による、データにアクセスする例を示すフローチャートである。
【図４２】本発明による、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図である。
【図４３】本発明による、データにアクセスする別の例を示すフローチャートである。
【図４４】本発明による、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図である。
【図４５】本発明による、監視ストレージ・ユニットの例を示すフローチャートである。
【図４６】本発明による、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図である。
【図４７】本発明による、データを記憶する例を示すフローチャートである。
【図４８】本発明による、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図である。
【図４９】本発明による、データを再構築する例を示すフローチャートである。
【図５０】本発明による、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図である。
【図５１】本発明による、データを再構築する別の例を示すフローチャートである。
【図５２】本発明による、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図である。
【図５３】本発明による、分子構成を介してデータにアクセスする例を示すフローチャートである。
【図５４】本発明による、データ記憶のための分子符号化情報（molecularencoding information）を生成する例を示すフローチャートである。
【図５５】本発明による、分子エンコーダの実施形態の概略ブロック図である。
【図５６】本発明による、分子エンコーダの別の実施形態の概略ブロック図である。
【図５７】本発明による、分子符号化情報を生成する例を示すフローチャートである。
【図５８】本発明による、重要情報を保持する例を示す散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図である。
【図５９】本発明による、重要情報を保持する例を示す散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図である。
【図６０】本発明による、重要情報を保持する例を示す散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図である。
【図６１】本発明による、重要情報を保持する例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
図１は、分散コンピューティング・システム１０の実施形態の概略ブロック図であり、分散コンピューティング・システム１０は、ユーザ・デバイス１２またはユーザ・デバイス１４あるいはその両方、分散ストレージおよび／またはタスク（ＤＳＴ）処理ユニット１６、分散ストレージおよび／またはタスク・ネットワーク（ＤＳＴＮ）管理ユニット１８、ＤＳＴ整合性処理ユニット２０、ならびに分散ストレージおよび／またはタスク・ネットワーク（ＤＳＴＮ）モジュール２２を含む。分散コンピューティング・システム１０のコンポーネントは、ネットワーク２４を介して結合され、ネットワーク２４は、１つまたは複数の無線または有線あるいはその両方の通信システム、１つまたは複数の私用イントラネット・システムまたは公衆インターネット・システムあるいはその両方、あるいは１つまたは複数のローカル・エリア・ネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）あるいはその両方、あるいはこれらの組合せを含み得る。
【００１３】
ＤＳＴＮモジュール２２は、複数の分散ストレージおよび／またはタスク（ＤＳＴ）実行ユニット３６を含み、これらのユニットは、地理的に異なる場所（たとえば、１つはシカゴ、１つはミルウォーキーなど）に配置され得る。ＤＳＴ実行ユニットのそれぞれは、散在エラー符号化データを記憶すること、または分散様式でデータに対して１つまたは複数のタスクを実行すること、あるいはその両方を行うように動作可能である。タスクは、単純な機能（たとえば、数学関数、論理関数、識別機能、発見機能、検索エンジン機能、置換機能など）、複雑な機能（たとえば、圧縮、人間またはコンピュータあるいはその両方の言語の翻訳、テキスト−音声変換、音声−テキスト変換など）、複数の単純または複雑なあるいはその両方の機能、１つまたは複数のアルゴリズム、１つまたは複数のアプリケーションなどであり得る。
【００１４】
ユーザ・デバイス１２〜１４、ＤＳＴ処理ユニット１６、ＤＳＴＮ管理ユニット１８、およびＤＳＴ整合性処理ユニット２０のそれぞれは、コンピューティング・コア２６を含み、携帯型コンピューティング・デバイスまたは固定型コンピューティング・デバイスあるいはその両方であり得る。携帯型コンピューティング・デバイスは、ソーシャル・ネットワーキング・デバイス、ゲーミング・デバイス、携帯電話、スマートフォン、携帯情報端末、デジタル音楽プレーヤ、デジタル・ビデオ・プレーヤ、ラップトップ・コンピュータ、ハンドヘルド・コンピュータ、タブレット、ビデオ・ゲーム・コントローラ、またはコンピューティング・コアを含む任意の他の携帯型デバイス、あるいはそれらの組合せであり得る。固定型コンピューティング・デバイスは、パーソナル・コンピュータ（ＰＣ）、コンピュータ・サーバ、ケーブル・セットトップ・ボックス、衛星受信器、テレビ・セット、プリンタ、ファックス装置、家庭用娯楽機器、ビデオ・ゲーム機、または任意のタイプの家庭用もしくは業務用コンピューティング機器、あるいはそれらの組合せであり得る。ユーザ・デバイス１２およびＤＳＴ処理ユニット１６は、ＤＳＴクライアント・モジュール３４を含むように構成される。
【００１５】
インターフェースに関しては、各インターフェース３０、３２、および３３が、ネットワーク２４を介して間接的にまたは直接的にあるいはその両方で１つまたは複数の通信リンクをサポートするためのソフトウェアまたはハードウェアあるいはその両方を含む。たとえば、インターフェース３０は、ユーザ・デバイス１４とＤＳＴ処理ユニット１６との間の通信リンク（たとえば、有線、無線、直接、ＬＡＮを介する、ネットワーク２４を介するなど）をサポートする。別の例として、インターフェース３２は、ユーザ・デバイス１２とＤＳＴＮモジュール２２との間ならびにＤＳＴ処理ユニット１６とＤＳＴＮモジュール２２との間の通信リンク（たとえば、有線接続、無線接続、ＬＡＮ接続、または任意の他のタイプのネットワーク２４へ／からの接続、あるいはそれらの組合せ）をサポートする。さらに別の例として、インターフェース３３は、ネットワーク２４に対するＤＳＴＮ管理ユニット１８およびＤＳＴ整合性処理ユニット２０のそれぞれの通信リンクをサポートする。
【００１６】
分散コンピューティング・システム１０は、散在ストレージ（ＤＳ）エラー符号化データの記憶および取出しをサポートすること、受け取られたデータに対する分散タスク処理をサポートすること、または記憶されたデータに対する分散タスク処理をサポートすること、あるいはそれらの組合せを行うように動作可能である。一般に、またＤＳエラー符号化データの記憶および取出しに関して、分散コンピューティング・システム１０は、３つの主要な動作、すなわち、記憶管理、データ記憶および取出し、（その例については図２０〜図２６を参照して論じる）、ならびにデータ記憶整合性検証をサポートする。これら３つの主要機能により、データが符号化され、物理的に異なる位置に分散されて記憶され、信頼できるセキュアな様式で後で取り出されることが可能である。そのようなシステムは、個別のストレージ・デバイスの障害またはネットワーク機器の障害あるいはその両方に起因し得るかなりの数の障害に対して、（たとえば、ピラー幅（pillar width）マイナス復号閾値マイナス１以上であり得る障害レベルまで）耐性があり、データの損失がなく、冗長またはバックアップ・コピーの必要がない。さらに、そのシステムは、データ損失なしに無期限にデータを記憶することを可能にし、セキュアな（たとえば、システムが、データのハッキングの試みに対してかなりの耐性がある）様式で記憶する。
【００１７】
第２の主要機能（すなわち、分散データ記憶および取出し）は、ユーザ・デバイス１２〜１４で開始し終了する。たとえば、第２のタイプのユーザ・デバイス１４が、ＤＳＴＮモジュール２２に記憶するデータ４０を有する場合、ユーザ・デバイス１４は、そのインターフェース３０を介してデータ４０をＤＳＴ処理ユニット１６に送る。インターフェース３０は、従来のオペレーティング・システム（ＯＳ）ファイル・システム・インターフェース（たとえば、ネットワーク・ファイル・システム（ＮＦＳ）、フラッシュ・ファイル・システム（ＦＦＳ）、ディスク・ファイル・システム（ＤＦＳ）、ファイル転送プロトコル（ＦＴＰ）、ウェブベースの分散オーサリングおよびバージョン管理（ＷｅｂＤＡＶ）など）、またはブロック・メモリ・インターフェース（たとえば、スモール・コンピュータ・システム・インターフェース（ＳＣＳＩ）、インターネット・スモール・コンピュータ・システム・インターフェース（ｉＳＣＳＩ）など）、あるいはその両方を模倣するように機能する。加えて、インターフェース３０は、ユーザ識別コード（ＩＤ）をデータ４０に取り付けることができる。
【００１８】
記憶管理をサポートするために、ＤＳＴＮ管理ユニット１８はＤＳ管理サービスを実行する。１つのそのようなＤＳ管理サービスは、ＤＳＴＮ管理ユニット１８が、ユーザ・デバイス１２〜１４について個々に、またはユーザ・デバイスのグループの一部として、分散データ記憶パラメータ（たとえば、格納域（vault）作成、分散記憶パラメータ、セキュリティ・パラメータ、課金情報、ユーザ・プロファイル情報など）を確立することを含む。たとえば、ＤＳＴＮ管理ユニット１８は、ユーザ・デバイス、デバイスのグループ、またはパブリック・アクセスのためのＤＳＴＮモジュール２２のメモリ内の格納域（たとえば仮想メモリ・ブロック）の作成を調整し、格納域に対する散在ストレージ（ＤＳ）エラー符号化パラメータを格納域ごとに確立する。ＤＳＴＮ管理ユニット１８は、分散コンピューティング・システム１０のためのレジストリ情報を更新することによって、複数の格納域の格納域ごとのＤＳエラー符号化パラメータの記憶を推進することができる。この推進は、更新されたレジストリ情報を、ＤＳＴＮモジュール２２、ユーザ・デバイス１２、ＤＳＴ処理ユニット１６、およびＤＳＴ整合性処理ユニット２０のうちの１つまたは複数に記憶することを含む。
【００１９】
ＤＳエラー符号化パラメータ（たとえば、すなわち散在ストレージ・エラー・コード化パラメータ）は、データ・セグメント化情報（たとえば、いくつのセグメント・データ（たとえば、ファイル、ファイルのグループ、データ・ブロックなど）として分割されるか）、セグメント・セキュリティ情報（たとえば、セグメントごとの暗号化、圧縮、整合性チェックサムなど）、エラー・コード化情報（たとえば、ピラー幅、復号閾値、読取り閾値、書込み閾値など）、スライス化情報（たとえば、各データ・セグメントについて作り出されることになる符号化されたデータ・スライスの数）、およびスライス・セキュリティ情報（たとえば、符号化データ・スライスごとの暗号化、圧縮、整合性チェックサムなど）を含む。
【００２０】
ＤＳＴＮ管理ユニット１８は、ユーザ・プロファイル情報（たとえばアクセス制御リスト（ＡＣＬ））を作り出し、ローカル・メモリ内またはＤＳＴＮモジュール２２のメモリ内、あるいはその両方に記憶する。ユーザ・プロファイル情報は、認証情報、許可、またはセキュリティ・パラメータ、あるいはそれらの組合せを含む。セキュリティ・パラメータは、暗号化／解読方式、１つまたは複数の暗号化鍵、鍵生成方式、またはデータ符号化／復号方式、あるいはそれらの組合せを含むことができる。
【００２１】
ＤＳＴＮ管理ユニット１８は、特定のユーザ、ユーザ・グループ、格納域アクセス、パブリック格納域アクセスなどに対する課金情報を作り出す。たとえば、ＤＳＴＮ管理ユニット１８は、プライベート格納域またはパブリック格納域あるいはその両方にユーザがアクセスした回数を追跡し、それがアクセスごとの課金情報を生成するために使用され得る。別の例では、ＤＳＴＮ管理ユニット１８は、ユーザ・デバイスまたはユーザ・グループあるいはその両方によって記憶または取出しあるいはその両方が行われたデータの量を追跡し、それがデータ量ごとの課金情報を生成するために使用され得る。
【００２２】
別のＤＳ管理サービスは、ＤＳＴＮ管理ユニット１８がネットワーク動作、ネットワーク管理、またはネットワーク保守、あるいはそれらの組合せを実行することを含む。ネットワーク動作は、ユーザ・データ割り振り要求（たとえば、読取り要求または書込み要求あるいはその両方）を認証すること、格納域の作成を管理すること、ユーザ・デバイスに対する認証証明を確立すること、分散コンピューティング・システム１０のコンポーネント（たとえば、ユーザ・デバイス、ＤＳＴ実行ユニット、またはＤＳＴ処理ユニット、あるいはそれらの組合せ）を追加／削除すること、またはＤＳＴ実行ユニット３６に対する認証証明を確立すること、あるいはそれらの組合せを含む。ネットワーク管理は、デバイスまたはユニットあるいはその両方の障害を監視すること、格納域情報を保持すること、デバイスまたはユニットあるいはその両方のアクティブ化ステータスを決定すること、デバイスまたはユニットあるいはその両方のロードを決定すること、またはシステム１０のパフォーマンス・レベルに影響する任意の他のシステム・レベル動作を決定すること、あるいはそれらの組合せを含む。ネットワーク保守は、システム１０のデバイスまたはユニットあるいはその両方の交換、アップグレード、修理、または拡張、あるいはそれらの組合せを推進することを含む。
【００２３】
分散コンピューティング・システム１０内のデータ記憶整合性検証をサポートするために、ＤＳＴ整合性処理ユニット２０は、「不良」または欠損の符号化されたデータ・スライスの再構築を実行する。高レベルでは、ＤＳＴ整合性処理ユニット２０は、ＤＳＴＮモジュール２２から、符号化されたデータ・スライス、または符号化されたデータ・スライスのスライス名、あるいはその両方を取り出す／リストに挙げることを定期的に試みることによって再構築を実行する。取り出された符号化スライスについて、それらは、データ破損、古いバージョンなどに起因するエラーがあるかどうかがチェックされる。スライスがエラーを含む場合、それは「不良」スライスとしてフラグが立てられる。受け取られずまたはリストに挙げられない、あるいはその両方の符号化されたデータ・スライスについては、欠損スライスとしてフラグが立てられる。不良スライスまたは欠損スライスあるいはその両方は、その後、再構築されたスライスを作成するために良好なスライスとみなされる他の取り出された符号化データ・スライスを使用して再構築される。再構築されたスライスは、ＤＳＴＮモジュール２２のメモリに記憶される。ＤＳＴ整合性処理ユニット２０は、図示されるように別個のユニットであってよく、ＤＳＴＮモジュール２２に含まれてもよく、ＤＳＴ処理ユニット１６に含まれてもよく、またはＤＳＴ実行ユニット３６間に分散されてもよく、あるいはそれらの組合せであってもよいことに留意されたい。
【００２４】
受け取られたデータに対する分散タスク処理をサポートするために、分散コンピューティング・システム１０は、２つの主要な動作、すなわち、ＤＳＴ（分散ストレージおよび／またはタスク処理）管理、ならびに受け取られたデータに対するＤＳＴ実行（その例については図３〜図１９を参照して論じる）を有する。ＤＳＴ管理の記憶部分に関して、ＤＳＴＮ管理ユニット１８は先に説明されたように機能する。ＤＳＴ管理のタスク処理に関して、ＤＳＴＮ管理ユニット１８は分散タスク処理（ＤＴＰ）管理サービスを実行する。１つのそのようなＤＴＰ管理サービスは、ＤＳＴＮ管理ユニット１８が、ユーザ・デバイス１２〜１４について個々に、またはユーザ・デバイスのグループの一部として、ＤＴＰパラメータ（たとえば、ユーザ格納域関連情報、課金情報、ユーザ・タスク情報など）を確立することを含む。
【００２５】
別のＤＴＰ管理サービスは、ＤＳＴＮ管理ユニット１８が、ＤＴＰネットワーク動作、（上述されたのと本質的に同じ）ネットワーク管理、または（上述されたのと本質的に同じ）ネットワーク保守、あるいはそれらの組合せを実行することを含む。ネットワーク動作は、以下に限定されないが、ユーザ・タスク処理要求（たとえば、有効な要求、有効なユーザなど）を認証すること、結果または部分的結果あるいはその両方を認証すること、ユーザ・デバイスに対するＤＴＰ認証証明を確立すること、分散コンピューティング・システムのコンポーネント（たとえば、ユーザ・デバイス、ＤＳＴ実行ユニット、またはＤＳＴ処理ユニット、あるいはそれらの組合せ）を追加／削除すること、またはＤＳＴ実行ユニットに対するＤＴＰ認証証明を確立すること、あるいはそれらの組合せを含む。
【００２６】
記憶されたデータに対する分散タスク処理をサポートするために、分散コンピューティング・システム１０は、２つの主要な動作、すなわち、ＤＳＴ（分散ストレージおよび／またはタスク）管理、ならびに記憶されたデータに対するＤＳＴ実行を有する。記憶されたデータに対するＤＳＴ実行に関して、第２のタイプのユーザ・デバイス１４が、ＤＳＴＮモジュール２２によって実行されるタスク要求３８を有する場合、ユーザ・デバイス１４は、そのインターフェース３０を介してタスク要求３８をＤＳＴ処理ユニット１６に送る。記憶されたデータに対するＤＳＴ実行の例については、図２７〜図３９を参照してより詳細に論じる。ＤＳＴ管理に関して、それは、受け取られたデータに対する分散タスク処理をサポートするためのＤＳＴ管理と実質的に同様である。
【００２７】
図２は、コンピューティング・コア２６の実施形態の概略ブロック図であり、コンピューティング・コア２６は、処理モジュール５０、メモリ・コントローラ５２、メイン・メモリ５４、ビデオ・グラフィック処理ユニット５５、入力／出力（ＩＯ）コントローラ５６、周辺コンポーネント相互接続（ＰＣＩ）インターフェース５８、ＩＯインターフェース・モジュール６０、少なくとも１つのＩＯデバイス・インターフェース・モジュール６２、読出し専用メモリ（ＲＯＭ）基本入出力システム（ＢＩＯＳ）６４、および１つまたは複数のメモリ・インターフェース・モジュールを含む。１つまたは複数のメモリ・インターフェース・モジュールは、ユニバーサル・シリアル・バス（ＵＳＢ）インターフェース・モジュール６６、ホスト・バス・アダプタ（ＨＢＡ）インターフェース・モジュール６８、ネットワーク・インターフェース・モジュール７０、フラッシュ・インターフェース・モジュール７２、ハード・ドライブ・インターフェース・モジュール７４、およびＤＳＴＮインターフェース・モジュール７６のうちの１つまたは複数を含む。
【００２８】
ＤＳＴＮインターフェース・モジュール７６は、従来のオペレーティング・システム（ＯＳ）ファイル・システム・インターフェース（たとえば、ネットワーク・ファイル・システム（ＮＦＳ）、フラッシュ・ファイル・システム（ＦＦＳ）、ディスク・ファイル・システム（ＤＦＳ）、ファイル転送プロトコル（ＦＴＰ）、ウェブベースの分散オーサリングおよびバージョン管理（ＷｅｂＤＡＶ）など）、またはブロック・メモリ・インターフェース（たとえば、スモール・コンピュータ・システム・インターフェース（ＳＣＳＩ）、インターネット・スモール・コンピュータ・システム・インターフェース（ｉＳＣＳＩ）など）、あるいはその両方を模倣するように機能する。ＤＳＴＮインターフェース・モジュール７６またはネットワークインターフェース・モジュール７０あるいはその両方は、図１のユーザ・デバイス１４のインターフェース３０として機能することができる。さらに、ＩＯデバイス・インターフェース・モジュール６２またはメモリ・インターフェース・モジュールあるいはその両方は、集合的または個別にＩＯポートと呼ばれ得ることに留意されたい。
【００２９】
図３は、分散ストレージおよびタスク処理動作を実行する分散コンピューティング・システムの例の図である。分散コンピューティング・システムは、（図１のユーザ・デバイス１４またはＤＳＴ処理ユニット１６あるいはその両方の中にあり得る）ＤＳＴ（分散ストレージおよび／またはタスク）クライアント・モジュール３４、ネットワーク２４、（図１のＤＳＴＮモジュール２２の少なくとも部分を形成する）図１の２つ以上のＤＳＴ実行ユニット３６を含む複数のＤＳＴ実行ユニット１〜ｎ、ＤＳＴ管理モジュール（図示せず）、ならびにＤＳＴ整合性検証モジュール（図示せず）を含む。ＤＳＴクライアント・モジュール３４は、アウトバウンドＤＳＴ処理部８０およびインバウンドＤＳＴ処理部８２を含む。ＤＳＴ実行ユニット１〜ｎのそれぞれは、コントローラ８６、処理モジュール８４、メモリ８８、ＤＴ（分散タスク）実行モジュール９０、およびＤＳＴクライアント・モジュール３４を含む。
【００３０】
動作の例として、ＤＳＴクライアント・モジュール３４は、データ９２、およびデータ９２に対して実行されるべき１つまたは複数のタスク９４を受け取る。データ９２は、任意のサイズおよび任意のコンテンツを有してよく、サイズ（たとえば数テラバイトより大きい）、コンテンツ（たとえばセキュア・データなど）、またはタスク（たとえばＭＩＰＳ集約）、あるいはそれらの組合せに応じて、データに対するタスクの分散処理が望ましい。たとえば、データ９２は、１つもしくは複数のデジタル書籍、会社の電子メールのコピー、大規模なインターネット検索、ビデオ・セキュリティ・ファイル、１つもしくは複数の娯楽ビデオ・ファイル（たとえば、テレビ番組、映画など）、データ・ファイル、または任意の他の大量の（たとえば数テラバイトより大きい）データ、あるいはそれらの組合せであり得る。
【００３１】
ＤＳＴクライアント・モジュール３４内で、アウトバウンドＤＳＴ処理部８０がデータ９２およびタスク９４を受け取る。アウトバウンドＤＳＴ処理部８０は、データ９２を処理してスライス・グルーピング９６を作成する。そのような処理の例として、アウトバウンドＤＳＴ処理部８０は、データ９２をパーティション化して複数のデータ・パーティションにする。各データ・パーティションについて、アウトバウンドＤＳＴ処理部８０は、データ・パーティションを散在ストレージ（ＤＳ）エラー符号化して符号化されたデータ・スライスを作成し、符号化されたデータ・スライスをグループ化してスライス・グルーピング９６にする。加えて、アウトバウンドＤＳＴ処理部８０は、タスク９４をパーティション化して部分的タスク９８にする。ここで、部分的タスク９８の数は、スライス・グルーピング９６の数に対応し得る。
【００３２】
次いで、アウトバウンドＤＳＴ処理部８０は、スライス・グルーピング９６および部分的タスク９８を、ネットワーク２４を介して図１のＤＳＴＮモジュール２２のＤＳＴ実行ユニット１〜ｎに送る。たとえば、アウトバウンドＤＳＴ処理部８０は、スライス・グループ１および部分的タスク１をＤＳＴ実行ユニット１に送る。別の例として、アウトバウンドＤＳＴ処理部８０は、スライス・グループ＃ｎおよび部分的タスク＃ｎをＤＳＴ実行ユニット＃ｎに送る。
【００３３】
各ＤＳＴ実行ユニットは、そのスライス・グループ９６に対してその部分的タスク９８を実行して部分的結果１０２を作成する。たとえば、ＤＳＴ実行ユニット＃１は、スライス・グループ＃１に対して部分的タスク＃１を実行して結果として部分的結果＃１を作成する。より具体的な例として、スライス・グループ＃１は、デジタル書籍のシリーズのデータ・パーティションに対応し、部分的タスク＃１は、特定のフレーズを求めて検索し、どこでフレーズが発見されたかを記録し、フレーズのカウントを確定することに対応する。このより具体的な例では、部分的結果＃１は、どこでフレーズが発見されたかに関する情報を含み、またフレーズのカウントを含む。
【００３４】
それぞれの部分的結果１０２の生成が完了すると、ＤＳＴ実行ユニットは、ネットワーク２４を介して、それらの部分的結果１０２を、ＤＳＴクライアント・モジュール３４のインバウンドＤＳＴ処理部８２に送る。インバウンドＤＳＴ処理部８２は、受け取った部分的結果１０２を処理して結果１０４を作成する。上記の段落の具体的な例を続けると、インバウンドＤＳＴ処理部８２は、ＤＳＴ実行ユニット３６のそれぞれからのフレーズのカウントを組み合わせて、合計フレーズ・カウントを作成する。加えて、インバウンドＤＳＴ処理部８２は、それぞれのデータ・パーティション内の各ＤＳＴ実行ユニット３６からの「どこでフレーズが発見されたか」情報を組み合わせて、デジタル書籍のシリーズについての「どこでフレーズが発見されたか」情報を作成する。
【００３５】
動作の別の例では、ＤＳＴクライアント・モジュール３４は、ＤＳＴ実行ユニット３６のメモリ（たとえば、ＤＳＴＮモジュールのメモリ）内の記憶されたデータの取出しを要求する。この例では、タスク９４は、ＤＳＴＮモジュールのメモリに記憶されたデータを取り出すことである。したがって、アウトバウンドＤＳＴ処理部８０は、タスク９４を複数の部分的タスク９８に変換し、部分的タスク９８をそれぞれのＤＳＴ実行ユニット１〜ｎに送る。
【００３６】
記憶されたデータを取り出す部分的タスク９８に応答して、ＤＳＴ実行ユニット３６は、対応する符号化されたデータ・スライス１００を識別し、それらを取り出す。たとえば、ＤＳＴ実行ユニット＃１は、部分的タスク＃１を受け取り、それに応答して取り出されるスライス＃１を取り出す。ＤＳＴ実行ユニット３６は、それぞれの取り出されたスライス１００をネットワーク２４を介してインバウンドＤＳＴ処理部８２に送る。
【００３７】
インバウンドＤＳＴ処理部８２は、取り出されたスライス１００をデータ９２に変換する。たとえば、インバウンドＤＳＴ処理部８２は、取り出されたスライス１００をグルーピング解除して、データ・パーティションごとの符号化されたスライスを作成する。次いで、インバウンドＤＳＴ処理部８２は、データ・パーティションごとの符号化されたスライスをＤＳエラー復号（DS error decode）して、データ・パーティションを作成する。インバウンドＤＳＴ処理部８２は、データ・パーティションをパーティション解除してデータ９２を再捕捉する。
【００３８】
図４は、図１のＤＳＴＮモジュール２２（たとえば、複数のｎ個のＤＳＴ実行ユニット３６）にネットワーク２４を介して結合された図１のＤＳＴクライアント・モジュール３４のアウトバウンド分散ストレージおよび／またはタスク（ＤＳＴ）処理部８０の実施形態の概略ブロック図である。アウトバウンドＤＳＴ処理部８０は、データ・パーティション化モジュール１１０、散在ストレージ（ＤＳ）エラー符号化モジュール１１２、グルーピング選択モジュール１１４、制御モジュール１１６、および分散タスク制御モジュール１１８を含む。
【００３９】
動作の例として、データ・パーティション化モジュール１１０は、データ９２をパーティション化して複数のデータ・パーティション１２０にする。パーティションの数およびパーティションのサイズは、データ９２（たとえば、そのサイズ、そのコンテンツなど）、実行される対応するタスク９４（たとえば、単純な、複雑な、単一のステップ、複数のステップなど）、ＤＳ符号化パラメータ（たとえば、ピラー幅、復号閾値、書込み閾値、セグメント・セキュリティ・パラメータ、スライス・セキュリティ・パラメータなど）、ＤＳＴ実行ユニット３６の性能（たとえば、処理リソース、処理リソースの可用性など）、または、ユーザ、システム管理者、もしくは他のオペレータ（人間もしくは自動）によって行われ得る入力、あるいはそれらの組合せに基づいて、制御１６０を介して制御モジュール１１６によって選択することができる。たとえば、データ・パーティション化モジュール１１０は、データ９２（たとえば、１００テラバイト）をパーティション化して、各々のサイズが１ギガバイトの１００，０００個のデータ・セグメントにする。あるいは、データ・パーティション化モジュール１１０は、データ・セグメントのいくつかが異なるサイズ、同じサイズ、またはそれらの組合せである複数のデータ・セグメントになるように、データ９２をパーティション化する。
【００４０】
ＤＳエラー符号化モジュール１１２は、直列様式または並列様式あるいはその組合せでデータ・パーティション１２０を受け取る。各データ・パーティション１２０について、ＤＳエラー符号化モジュール１１２は、制御モジュール１１６からの制御情報１６０に従って、データ・パーティション１２０をＤＳエラー符号化（DS error encode）して、符号化されたデータ・スライス１２２を作成する。ＤＳエラー符号化は、データ・パーティションをデータ・セグメントにセグメント化すること、セグメント・セキュリティ処理（たとえば、暗号化、圧縮、ウォーターマーキング、整合性チェック（たとえばＣＲＣ）など）、エラー符号化、スライス化、またはスライス単位セキュリティ処理（たとえば暗号化、圧縮、ウォーターマーキング、整合性チェック（たとえばＣＲＣ）など）、あるいはそれらの組合せを含む。制御情報１６０は、所与のデータ・パーティションについてＤＳエラー符号化のどのステップがアクティブであるかを示し、アクティブなステップについては、そのステップに対するパラメータを示す。たとえば、制御情報１６０は、エラー符号化がアクティブであることを示し、エラー符号化パラメータ（たとえば、ピラー幅、復号閾値、書込み閾値、読取り閾値、エラー符号化のタイプなど）を含む。
【００４１】
グルーピング選択モジュール１１４は、データ・パーティションの符号化されたスライス１２２を、１セットのスライス・グルーピング９６にグループ化する。スライス・グルーピングの数は、特定のタスク９４について識別されたＤＳＴ実行ユニット３６の数に対応する。たとえば、５つのＤＳＴ実行ユニット３６が特定のタスク９４について識別された場合、グループ選択モジュールは、データ・パーティションの符号化されたスライス１２２をグループ化して５つのスライス・グルーピング９６にする。グルーピング選択モジュール１１４は、スライス・グルーピング９６をネットワーク２４を介して対応するＤＳＴ実行ユニット３６に出力する。
【００４２】
分散タスク制御モジュール１１８は、タスク９４を受け取り、タスク９４を部分的タスク９８のセットに変換する。たとえば、分散タスク制御モジュール１１８は、データ（たとえば書籍のシリーズ）内のどこでフレーズが出現するか、およびデータ内のフレーズの使用の総数を見出すためのタスクを受け取る。この例では、分散タスク制御モジュール１１８は、各ＤＳＴ実行ユニット３６についてタスク９４を複製して部分的タスク９８を作成する。別の例では、分散タスク制御モジュール１１８は、データ内のどこで第１のフレーズが出現するか、データ内のどこで第２のフレーズが出現するか、およびデータ内の各フレーズの使用の総数を見出すためのタスクを受け取る。この例では、分散タスク制御モジュール１１８は、第１のフレーズを見つけ出しカウントするための第１のセットの部分的タスク９８、および第２のフレーズを見つけ出しカウントするための第２のセットの部分的タスクを生成する。分散タスク制御モジュール１１８は、各ＤＳＴ実行ユニット３６に、それぞれの第１または第２あるいはその両方の部分的タスク９８を送る。
【００４３】
図５は、ステップ１２６から開始するアウトバウンド分散ストレージおよびタスク（ＤＳＴ）処理のための方法の例の論理図であり、ステップ１２６では、ＤＳＴクライアント・モジュールがデータおよび１つまたは複数の対応するタスクを受け取る。方法はステップ１２８に続き、このステップでは、ＤＳＴクライアント・モジュールが、１つまたは複数のデータ・パーティションについてのタスクをサポートするためのＤＳＴユニットの数を決定する。たとえば、ＤＳＴクライアント・モジュールは、データのサイズ、要求されたタスク、データのコンテンツ、所定の数（たとえば、ユーザに指示された数、システム管理者に決定された数など）、使用可能なＤＳＴユニット、ＤＳＴユニットの性能、またはデータの分散タスク処理に関する任意の他の因子、あるいはそれらの組合せに基づいて、タスクをサポートするためのＤＳＴユニットの数を決定することができる。ＤＳＴクライアント・モジュールは、各データ・パーティションに対して同じＤＳＴユニットを選択してもよく、各データ・パーティションに対して異なるＤＳＴユニットを選択してもよく、またはそれらの組合せを選択してもよい。
【００４４】
方法はステップ１３０に続き、このステップでは、ＤＳＴクライアント・モジュールが、分散タスク処理のために選択されたＤＳＴの数に基づいて、データの処理パラメータを決定する。処理パラメータは、データ・パーティション化情報、ＤＳ符号化パラメータ、またはスライス・グルーピング情報、あるいはそれらの組合せを含む。データ・パーティション化情報は、データ・パーティションの数、各データ・パーティションのサイズ、またはデータ・パーティションの編成（たとえば、パーティション内のデータ・ブロックの数、データ・ブロックのサイズ、およびデータ・ブロックの配列）、あるいはそれらの組合せを含む。ＤＳ符号化パラメータは、セグメント化情報、セグメント・セキュリティ情報、エラー符号化情報（たとえば、ピラー幅、復号閾値、書込み閾値、読取り閾値、生成行列のうちの１つまたは複数を含む散在ストレージ・エラー符号化機能パラメータ）、スライス化情報、またはスライス単位セキュリティ情報、あるいはそれらの組合せを含む。スライス・グルーピング情報は、選択されたＤＳＴユニットに対して符号化されたデータ・スライスをどのようにグループにするかに関する情報を含む。具体的な例として、ＤＳＴクライアント・モジュールが、タスクをサポートするために５つのＤＳＴユニットが必要とされると決定した場合、それは、エラー符号化パラメータが５のピラー幅および３の復号閾値を含むと決定する。
【００４５】
方法はステップ１３２に続き、このステップでは、ＤＳＴクライアント・モジュールが、選択されたＤＳＴユニットおよびデータ処理パラメータに基づいてタスク・パーティション化情報（たとえば、どのようにタスクをパーティション化するか）を決定する。データ処理パラメータは、処理パラメータおよびＤＳＴユニット性能情報を含む。ＤＳＴユニット性能情報は、ＤＴ（分散タスク）実行ユニットの数、各ＤＴ実行ユニットの実行性能（たとえば、ＭＩＰＳ性能、処理リソース（たとえば、マイクロプロセッサ、ＣＰＵ、デジタル・シグナル・プロセッサ、コプロセッサ、マイクロコントローラ、算術論理回路、または他のアナログまたはデジタルあるいはその両方の処理回路、あるいはそれらの組合せの量および性能））、処理リソースの可用性、メモリ情報（たとえば、タイプ、サイズ、可用性など）、または１つもしくは複数のタスクの実行に関する任意の情報、あるいはそれらの組合せを含む。
【００４６】
方法はステップ１３４に続き、このステップでは、ＤＳＴクライアント・モジュールが、処理パラメータに従ってデータを処理してスライス・グルーピングを作成する。方法はステップ１３６に続き、このステップでは、ＤＳＴクライアント・モジュールが、タスク・パーティション化情報に基づいてタスクをパーティション化して部分的タスクのセットを作成する。方法はステップ１３８に続き、このステップでは、ＤＳＴクライアント・モジュールが、スライス・グルーピングおよび対応する部分的タスクをそれぞれのＤＳＴユニットに送る。
【００４７】
図６は、アウトバウンド分散ストレージおよびタスク（ＤＳＴ）処理部の散在ストレージ（ＤＳ）エラー符号化モジュール１１２の実施形態の概略ブロック図である。ＤＳエラー符号化モジュール１１２は、セグメント処理モジュール１４２、セグメント・セキュリティ処理モジュール１４４、エラー符号化モジュール１４６、スライス化モジュール１４８、およびスライス単位セキュリティ処理モジュール１５０を含む。これらのモジュールのそれぞれは制御モジュール１１６に結合されて、それから制御情報１６０を受け取る。
【００４８】
動作の例として、セグメント処理モジュール１４２は、データ・パーティション化モジュールからデータ・パーティション１２０を受け取り、制御モジュール１１６から制御情報１６０としてセグメント化情報を受け取る。セグメント化情報は、セグメント処理モジュール１４２がデータ・パーティション１２０をどのようにセグメント化するかを示す。たとえば、セグメント化情報は、エラー符号化方式の復号閾値に基づいていくつの行にデータをセグメント化するかを示し、データ・パーティション１２０内のデータ・ブロックの数およびサイズに基づいていくつの列にデータをセグメント化するかを示し、また、いくつの列をデータ・セグメント１５２に含めるかを示す。セグメント処理モジュール１４２は、セグメント化情報に従ってデータ１２０をセグメント化してデータ・セグメント１５２にする。
【００４９】
セグメント・セキュリティ処理モジュール１４４は、制御モジュール１１６によって有効にされたとき、制御モジュール１１６から制御情報１６０として受け取ったセグメント・セキュリティ情報に基づいて、データ・セグメント１５２をセキュアにする。セグメント・セキュリティ情報は、データ圧縮、暗号化、ウォーターマーキング、整合性チェック（たとえば周期的冗長検査（ＣＲＣ）など）、または任意の他のタイプのデジタル・セキュリティ、あるいはそれらの組合せを含む。たとえば、セグメント・セキュリティ処理モジュール１４４は、有効にされると、データ・セグメント１５２を圧縮し、圧縮されたデータ・セグメントを暗号化し、暗号化されたデータ・セグメントに対するＣＲＣ値を生成して、セキュアなデータ・セグメント１５４を作成することができる。セグメント・セキュリティ処理モジュール１４４が有効にされない場合、それは、データ・セグメント１５２をエラー符号化モジュール１４６に渡し、またはバイパスされてデータ・セグメント１５２がエラー符号化モジュール１４６に提供される。
【００５０】
エラー符号化モジュール１４６は、制御モジュール１１６から制御情報１６０として受け取ったエラー訂正符号化パラメータに従って、セキュア・データ・セグメント１５４を符号化する。エラー訂正符号化パラメータ（たとえば、散在ストレージ・エラー・コード化パラメータとも呼ばれる）は、エラー訂正符号化方式（たとえば、順方向エラー訂正アルゴリズム、リードソロモンベースのアルゴリズム、オンライン・コード化アルゴリズム、情報伝播アルゴリズムなど）、ピラー幅、復号閾値、読取り閾値、書込み閾値などを識別することを含む。たとえば、エラー訂正符号化パラメータは、特定のエラー訂正符号化方式を識別し、５のピラー幅を指定し、３の復号閾値を指定する。これらのパラメータから、エラー符号化モジュール１４６は、データ・セグメント１５４を符号化して、符号化されたデータ・セグメント１５６を作成する。
【００５１】
スライス化モジュール１４８は、制御情報１６０として受け取ったエラー訂正符号化パラメータのピラー幅に従って、符号化されたデータ・セグメント１５６をスライス化する。たとえば、ピラー幅が５である場合、スライス化モジュール１４８は、符号化されたデータ・セグメント１５６をスライス化して、５つの符号化されたデータ・スライスのセットにする。したがって、所与のデータ・パーティションに対する複数の符号化されたデータ・セグメント１５６について、スライス化モジュールは、複数のセットの符号化されたデータ・スライス１５８を出力する。
【００５２】
スライス単位セキュリティ処理モジュール１５０は、制御モジュール１１６によって有効にされたとき、制御モジュール１１６から制御情報１６０として受け取ったスライス・セキュリティ情報に基づいて、各符号化されたデータ・スライス１５８をセキュアにする。スライス・セキュリティ情報は、データ圧縮、暗号化、ウォーターマーキング、整合性チェック（たとえば、ＣＲＣなど）、または任意の他のタイプのデジタル・セキュリティ、あるいはそれらの組合せを含む。たとえば、スライス単位セキュリティ処理モジュール１５０は、有効にされると、符号化されたデータ・スライス１５８を圧縮し、圧縮された符号化データ・スライスを暗号化し、暗号化された符号化データ・スライスに対するＣＲＣ値を生成して、セキュアな符号化データ・スライス１２２を作成する。スライス単位セキュリティ処理モジュール１５０が有効にされない場合、それは符号化されたデータ・スライス１５８を通過させ、またはバイパスされて、符号化されたデータ・スライス１５８がＤＳエラー符号化モジュール１１２の出力になる。制御モジュール１１６が省略されてもよく、各モジュールがそれ自体のパラメータを記憶することに留意されたい。
【００５３】
図７は、散在ストレージ（ＤＳ）エラー符号化モジュールのセグメント処理の例の図である。この例では、セグメント処理モジュール１４２は、４５個のデータ・ブロック（たとえば、ｄ１〜ｄ４５）を含むデータ・パーティション１２０を受け取り、制御モジュールからセグメント化情報（すなわち制御情報１６０）を受け取り、制御情報１６０に従ってデータ・パーティション１２０をセグメント化してデータ・セグメント１５２を作成する。各データ・ブロックは、他のデータ・ブロックと同じサイズまたは異なるサイズであり得る。加えて、各データ・ブロックのサイズは、数バイトから数メガバイトのデータであってよい。前述のように、セグメント化情報は、データ・パーティションをいくつの行にセグメント化するか、データ・パーティションをいくつの列にセグメント化するか、およびデータ・セグメントにいくつの列を含めるかを示す。
【００５４】
この例では、エラー符号化方式の復号閾値は３であり、データ・パーティションを分割する行の数は３である。各行の列の数は１５に設定され、これはデータ・ブロックの数およびサイズに基づく。データ・パーティションのデータ・ブロックは行および列に順に配列される（すなわち、第１の行は最初の１５個のデータ・ブロックを含み、第２の行は次の１５個のデータ・ブロックを含み、第３の行は最後の１５個のデータ・ブロックを含む）。
【００５５】
データ・ブロックが望ましい順に配列された状態で、それらはセグメント化情報に基づいてデータ・セグメントに分割される。この例では、データ・パーティションは８つのデータ・セグメントに分割され、最初の７つは３行で２列を含み、最後は３行で１列を含む。８個のデータ・セグメントの第１の行は、最初の１５個のデータ・ブロックの順序になり、８個のデータ・セグメントの第２の行は、次の１５個のデータ・ブロックの順序になり、８個のデータ・セグメントの第３の行は、最後の１５個のデータ・ブロックの順序になることに留意されたい。データ・ブロックの数、データ・ブロックのセグメントへのグループ化、およびデータ・ブロックのサイズは、望ましい分散タスク処理機能に対応して異なり得ることに留意されたい。
【００５６】
図８は、図７のデータ・セグメントを処理する散在エラー符号化のエラー符号化およびスライス化処理の例の図である。この例では、データ・セグメント１は、３つの行を含み、各行は、符号化のための１つのワードとして扱われる。したがって、データ・セグメント１は、符号化のための３つのワード、すなわち、データ・ブロックｄ１およびｄ２を含むワード１、データ・ブロックｄ１６およびｄ１７を含むワード２、ならびにデータ・ブロックｄ３１およびｄ３２を含むワード３を含む。データ・セグメント２〜７のそれぞれは３つのワードを含み、各ワードは２つのデータ・ブロックを含む。データ・セグメント８は３つのワードを含み、各ワードは単一のデータ・ブロック（たとえば、ｄ１５、ｄ３０、およびｄ４５）を含む。
【００５７】
動作において、エラー符号化モジュール１４６およびスライス化モジュール１４８は、制御情報１６０としてのエラー訂正符号化パラメータに従って、各データ・セグメントを符号化されたデータ・スライスのセットに変換する。より具体的には、エラー訂正符号化パラメータが、ユニティ行列（unity matrix）リードソロモンベースの符号化アルゴリズム、５つのピラー、および３の復号閾値を示すとき、データ・セグメントに対する符号化されたデータ・スライスのセットの最初の３つの符号化されたデータ・スライスが、データ・セグメントの対応するワードと実質的に同様である。たとえば、ユニティ行列リードソロモンベースの符号化アルゴリズムがデータ・セグメント１に適用されると、（たとえばデータ・セグメント１に対応する）符号化されたデータ・スライスの第１のセットの第１の符号化されたデータ・スライスのコンテンツ（ＤＳ１＿ｄ１＆２）は、第１のワードのコンテンツ（たとえばｄ１＆ｄ２）と実質的に同様であり、符号化されたデータ・スライスの第１のセットの第２の符号化されたデータ・スライスのコンテンツ（ＤＳ１＿ｄ１６＆１７）は、第２のワードのコンテンツ（たとえばｄ１６＆ｄ１７）と実質的に同様であり、符号化されたデータ・スライスの第１のセットの第３の符号化されたデータ・スライスのコンテンツ（ＤＳ１＿ｄ３１＆３２）は、第３のワードのコンテンツ（たとえばｄ３１＆ｄ３２）と実質的に同様である。
【００５８】
符号化されたデータ・スライスの第１のセットの第４および第５の符号化されたデータ・スライスのコンテンツ（たとえばＥＳ１＿１およびＥＳ１＿２）は、第１のデータ・セグメントの第１〜第３のワードに基づくエラー訂正データを含む。このような符号化およびスライス化方式を用いて、５つの符号化されたデータ・スライスのうちの任意の３つを取り出すことにより、データ・セグメントを正確に再構成することが可能になる。
【００５９】
データ・セグメント２〜７の符号化およびスライスは、データ・セグメント１の符号化されたデータ・スライスのセットと同様の符号化されたデータ・スライスのセットを生じさせる。たとえば、符号化されたデータ・スライスの第２のセットの第１の符号化されたデータ・スライスのコンテンツ（ＤＳ２＿ｄ３＆４）は、第１のワードのコンテンツ（たとえばｄ３＆ｄ４）と実質的に同様であり、符号化されたデータ・スライスの第２のセットの第２の符号化されたデータ・スライスのコンテンツ（ＤＳ２＿ｄ１８＆１９）は、第２のワードのコンテンツ（たとえばｄ１８＆ｄ１９）と実質的に同様であり、符号化されたデータ・スライスの第２のセットの第３の符号化されたデータ・スライスのコンテンツ（ＤＳ２＿ｄ３３＆３４）は、第３のワードのコンテンツ（たとえばｄ３３＆ｄ３４）と実質的に同様である。符号化されたデータ・スライスの第２のセットの第４および第５の符号化されたデータ・スライスのコンテンツ（たとえばＥＳ１＿１およびＥＳ１＿２）は、第２のデータ・セグメントの第１〜第３のワードに基づくエラー訂正データを含む。
【００６０】
図９は、制御モジュールからの制御情報１６０としてのグループ選択情報に従うアウトバウンド分散ストレージおよびタスク（ＤＳＴ）処理のグルーピング選択処理の例の図である。データ・パーティション１２２の符号化されたスライスは、制御情報１６０に従ってグループ化されてスライス・グルーピング９６が作成される。この例では、グルーピング選択モジュール１１４は、符号化されたデータ・スライスを５つのスライス・グルーピング（たとえば、分散ストレージおよびタスク・ネットワーク（ＤＳＴＮ）モジュールの各ＤＳＴ実行ユニットに対して１つ）に編成する。具体的な例として、グルーピング選択モジュール１１４は、ＤＳＴ実行ユニット＃１に対する第１のスライス・グルーピングを作成し、このグルーピングは、符号化されたスライスのセットのそれぞれの第１の符号化されたスライスを含む。したがって、第１のＤＳＴ実行ユニットは、データ・ブロック１〜１５に対応する符号化されたデータ・スライス（たとえば、連続したデータの符号化されたデータ・スライス）を受け取る。
【００６１】
グルーピング選択モジュール１１４はまた、ＤＳＴ実行ユニット＃２に対する第２のスライス・グルーピングを作成し、このグルーピングは、符号化されたスライスのセットのそれぞれの第２の符号化されたスライスを含む。したがって、第２のＤＳＴ実行ユニットは、データ・ブロック１６〜３０に対応する符号化されたデータ・スライスを受け取る。グルーピング選択モジュール１１４はさらに、ＤＳＴ実行ユニット＃３に対する第３のスライス・グルーピングを作成し、このグルーピングは、符号化されたスライスのセットのそれぞれの第３の符号化されたスライスを含む。したがって、第３のＤＳＴ実行ユニットは、データ・ブロック３１〜４５に対応する符号化されたデータ・スライスを受け取る。
【００６２】
グルーピング選択モジュール１１４は、ＤＳＴ実行ユニット＃４に対する第４のスライス・グルーピングを作成し、このグルーピングは、符号化されたスライスのセットのそれぞれの第４の符号化されたスライスを含む。したがって、第４のＤＳＴ実行ユニットは、第１のエラー符号化情報に対応する符号化されたデータ・スライス（たとえば、エラー・コード化（ＥＣ）データの符号化されたデータ・スライス）を受け取る。グルーピング選択モジュール１１４はさらに、ＤＳＴ実行ユニット＃５に対する第５のスライス・グルーピングを作成し、このグルーピングは、符号化されたスライスのセットのそれぞれの第５の符号化されたスライスを含む。したがって、第５のＤＳＴ実行ユニットは、第２のエラー符号化情報に対応する符号化されたデータ・スライスを受け取る。
【００６３】
図１０は、上述の図を詳しく説明する、データ９２をスライス・グループに変換する例の図である。図示されるように、データ９２は、パーティション化機能１６４に従って複数のデータ・パーティション（１〜ｘ、ここでｘは４より大きい整数）にパーティション化される。各データ・パーティション（またはデータのチャンクセット）は、先に論じられたように、符号化およびグループ化機能１６６によって符号化されスライス・グルーピングにグループ化される。所与のデータ・パーティションに関して、スライス・グルーピングが分散ストレージおよびタスク（ＤＳＴ）実行ユニットに送られる。データ・パーティションごとに、ＤＳＴ実行ユニットへのスライス・グルーピングの順序付けが変わり得る。
【００６４】
たとえば、データ・パーティション＃１のスライス・グルーピングは、第１のＤＳＴ実行部が、第１のデータ・パーティションの第１の連続データ・チャンクに対応する、符号化されたデータ・スライスのセットのそれぞれの第１の符号化されたデータ・スライスを受け取り（たとえば図９参照）、第２のＤＳＴ実行部が、第１のデータ・パーティションの第２の連続データ・チャンクに対応する、符号化されたデータ・スライスのセットのそれぞれの第２の符号化されたデータ・スライスを受け取るように、ＤＳＴ実行ユニットに送られる。
【００６５】
第２のデータ・パーティションに関して、スライス・グルーピングは、第１のデータ・パーティションに関して行われたのと異なる順序でＤＳＴ実行ユニットに送られ得る。たとえば、第２のデータ・パーティションの第１のスライス・グルーピング（たとえばスライス・グループ２＿１）は第２のＤＳＴ実行ユニットに送られ、第２のデータ・パーティションの第２のスライス・グルーピング（たとえばスライス・グループ２＿２）は第３のＤＳＴ実行ユニットに送られ、第２のデータ・パーティションの第３のスライス・グルーピング（たとえばスライス・グループ２＿３）は第４のＤＳＴ実行ユニットに送られ、第２のデータ・パーティションの第４のスライス・グルーピング（たとえば、第１のエラー・コード化情報を含むスライス・グループ２＿４）は第５のＤＳＴ実行ユニットに送られ、第２のデータ・パーティションの第５のスライス・グルーピング（たとえば、第２のエラー・コード化情報を含むスライス・グループ２＿５）は第１のＤＳＴ実行ユニットに送られる。
【００６６】
スライス・グルーピングをＤＳＴ実行ユニットのセットに送るパターンは、データ・パーティションごとに、予測パターンまたはランダム・パターンあるいはその組合せで変わり得る。加えて、データ・パーティションごとに、ＤＳＴ実行ユニットのセットが変更され得る。たとえば、第１のデータ・パーティションについてＤＳＴ実行ユニット１〜５が使用され、第２のデータ・パーティションについてＤＳＴ実行ユニット６〜１０が使用され、第３のデータ・パーティションについてＤＳＴ実行ユニット３〜７が使用されるなどにしてもよい。また、図示されているように、データ・パーティションのスライス・グルーピングと共に、タスクが、ＤＳＴ実行ユニットに送られる部分的タスクに分割される。
【００６７】
図１１は、ＤＳＴ（分散ストレージおよび／またはタスク）実行ユニットの実施形態の概略ブロック図であり、ＤＳＴ実行ユニットは、インターフェース１６９、コントローラ８６、メモリ８８、１つまたは複数のＤＴ（分散タスク）実行モジュール９０、およびＤＳＴクライアント・モジュール３４を含む。メモリ８８は、かなりの数の符号化されたデータ・スライス（たとえば、数千から数億のスライス）を記憶するために十分なサイズがあり、１つもしくは複数のハード・ドライブまたは１つもしくは複数のソリッドステート・メモリ・デバイス（たとえば、フラッシュ・メモリ、ＤＲＡＭなど）あるいはその両方を含み得る。
【００６８】
スライス・グループを記憶する例において、ＤＳＴ実行モジュールは、インターフェース１６９を介してスライス・グルーピング９６（たとえばスライス・グループ＃１）を受け取る。スライス・グルーピング９６は、パーティションごとに、連続データの符号化されたデータ・スライスまたはエラー・コード化（ＥＣ）データの符号化されたデータ・スライスを含む。スライス・グループ＃１について、ＤＳＴ実行モジュールは、パーティション＃１および＃ｘ（ならびに場合によっては３とｘの間の他のパーティション）の連続データの符号化されたデータ・スライスを受け取り、また、パーティション＃２および＃３（ならびに場合によっては３とｘの間の他のパーティション）のＥＣデータの符号化されたデータ・スライスを受け取る。連続データの符号化されたデータ・スライス、およびエラー・コード化（ＥＣ）データの符号化されたデータ・スライスの例については、図９を参照して論じられている。メモリ８８は、それがコントローラ８６から受け取ったメモリ制御情報１７４に従って、スライス・グルーピング９６の符号化されたデータ・スライスを記憶する。
【００６９】
コントローラ８６（たとえば、処理モジュール、ＣＰＵなど）は、メモリ制御情報１７４を生成し、その生成は、部分的タスク９８、および分散コンピューティング情報（たとえば、ユーザ情報（たとえば、ユーザＩＤ、分散コンピューティング許可、データアクセス許可など）、格納域情報（たとえば、ユーザに割り当てられた仮想メモリ、ユーザ・グループ、タスク処理のための一時記憶など）、タスク妥当性確認情報など）に基づく。たとえば、コントローラ８６は、分散コンピューティング情報を考慮して部分的タスク９８を解釈して、要求元がタスク９８を実行することを承認されるか、データにアクセスすることを承認されるか、またはこの特定のデータに対してタスクを実行することを承認されるか、あるいはそれらの組合せを決定する。要求元が承認された場合、コントローラ８６は、タスク９８または別の入力あるいはその両方に基づいて、スライス・グルーピング９６の符号化されたデータ・スライスが一時的に記憶されるべきかあるいは永続的に記憶されるべきかを決定する。上記に基づいて、コントローラ８６は、スライス・グルーピング９６の符号化されたデータ・スライスをメモリ８８に書き込むため、およびスライス・グルーピング９６が一時的に記憶されるかあるいは永続的に記憶されるかを示すためにメモリ制御情報１７４を生成する。
【００７０】
スライス・グルーピング９６がメモリ８８に記憶されて、コントローラ８６は部分的タスク９８の実行を推進する。一例では、コントローラ８６は、ＤＴ実行モジュール９０の性能を考慮して部分的タスク９８を解釈する。そうした性能は、ＭＩＰＳ性能、処理リソース（たとえば、マイクロプロセッサ、ＣＰＵ、デジタル・シグナル・プロセッサ、コプロセッサ、マイクロコントローラ、算術論理回路、または任意の他のアナログまたはデジタルあるいはその両方の処理回路、あるいはそれらの組合せの量および性能）、処理リソースの可用性などのうちの１つまたは複数を含む。コントローラ８６は、ＤＴ実行モジュール９０が十分な性能を有すると決定した場合、タスク制御情報１７６を生成する。
【００７１】
タスク制御情報１７６は、包括的命令（たとえば、記憶されたスライス・グルーピングに対してタスクを実行する）または一連の操作コードであり得る。前者の例では、ＤＴ実行モジュール９０が、望ましいタスク９８を実行するように特に構成された（固定またはプログラムされた）コプロセッサ機能を含む。後者の例では、ＤＴ実行モジュール９０が、特定のタスク９８に対応するアルゴリズムをコントローラが記憶する汎用プロセッサ・トポロジを含む。この例では、コントローラ８６は、アルゴリズムの操作コード（たとえば、アセンブリ言語、プログラミング言語のソース・コード、オブジェクトコードなど）を実行のためにＤＴ実行モジュール９０に提供する。
【００７２】
タスク９８の性質に応じて、ＤＴ実行モジュール９０は、メモリ８８にまたはＤＴ実行モジュール９０内のキャッシュ・メモリ（図示せず）に記憶される、中間の部分的結果１０２を生成することができる。いずれの場合も、ＤＴ実行モジュール９０が部分的タスク９８の実行を完了したとき、それが１つまたは複数の部分的結果１０２を出力する。その部分的結果１０２もメモリ８８に記憶され得る。
【００７３】
コントローラ８６が、ＤＴ実行モジュール９０の性能が部分的タスク９８をサポートできるかどうかを解釈しているとき、コントローラ８６が、ＤＴ実行モジュール９０がタスク９８を十分にサポートできない（たとえば、適切なリソースを持っていない、十分な使用可能なリソースを持っていない、使用可能なリソースが遅すぎるなど）と決定した場合、それは、部分的タスク９８が完全にオフロードされるべきかそれとも部分的にオフロードされるべきかを決定する。
【００７４】
コントローラ８６が、部分的タスク９８が完全にオフロードされるべきであると決定した場合、それは、ＤＳＴ制御情報１７８を生成し、ＤＳＴクライアント・モジュール３４に提供する。ＤＳＴ制御情報１７８は、部分的タスク９８、スライス・グルーピング９６に関するメモリ・ストレージ情報、および分散命令を含む。分散命令は、部分的タスク９８をサブ部分的タスク１７２に分割し、スライス・グルーピング９６をサブ・スライス・グルーピング１７０に分割し、他のＤＳＴ実行ユニットを識別するように、ＤＳＴクライアント・モジュール３４に命令する。ＤＳＴクライアント・モジュール３４は、図３〜図１０のＤＳＴクライアント・モジュール３４と同様に機能して、分散命令に従ってサブ部分的タスク１７２およびサブ・スライス・グルーピング１７０を生成する。
【００７５】
ＤＳＴクライアント・モジュール３４は、タスクがオフロードされた先のＤＳＴ実行ユニットからインターフェース１６９を介してＤＳＴフィードバック１６８（たとえばサブ部分的結果）を受け取る。ＤＳＴクライアント・モジュール３４は、サブ部分的結果をＤＳＴ実行ユニットに提供し、ＤＳＴ実行ユニットが、サブ部分的結果を処理して部分的結果１０２を生成する。
【００７６】
コントローラ８６が、部分的タスク９８が部分的にオフロードされるべきと決定した場合、それは、タスク９８またはスライス・グルーピング９６あるいはその両方のどの部分がローカルに処理されるべきか、およびどの部分がオフロードされるべきかを決定する。ローカルに処理されている部分については、コントローラ８６は、先に論じられたようにタスク制御情報１７６を生成する。オフロードされている部分については、コントローラ８６は、先に論じられたようにＤＳＴ制御情報１７８を生成する。
【００７７】
ＤＳＴクライアント・モジュール３４が、タスクの一部分がオフロードされた先のＤＳＴ実行ユニットからＤＳＴフィードバック１６８（たとえばサブ部分的結果）を受け取ると、それは、サブ部分的結果をＤＴ実行モジュール９０に提供する。ＤＴ実行モジュール９０は、そのサブ部分的結果を、それが作り出したサブ部分的結果と共に処理して、部分的結果１０２を作成する。
【００７８】
さらに、メモリ８８はＤＴ実行モジュール９０が部分的結果１０２または結果１０４あるいはその両方をメモリ８８に記憶する場合、記憶されたスライス１００、記憶された結果１０４、部分的結果１０２のうちの１つまたは複数を取り出すために利用され得る。たとえば、部分的タスク９８が取出し要求を含むとき、コントローラ８６は、メモリ制御１７４をメモリ８８に出力して、スライス１００または結果１０４あるいはその両方の取出しを推進する。
【００７９】
図１２は、分散ストレージおよびタスク（ＤＳＴ）実行ユニットの動作の例の概略ブロック図であり、ＤＳＴユニットは、符号化されたデータ・スライスを記憶し、それに対するタスクを実行する。スライス・グルーピング１のパーティション１の符号化されたデータ・スライスを記憶するために、コントローラ８６は、メモリ制御情報１７４として書込みコマンドを生成して、符号化されたスライスがメモリ８８内の（たとえば、一時的または永続的な）望ましい位置に記憶されるようにする。
【００８０】
符号化されたスライスが記憶されると、コントローラ８６は、タスク制御情報１７６を分散タスク（ＤＴ）実行モジュール９０に提供する。タスク制御情報１７６に従ってタスクを実行する第１のステップとして、ＤＴ実行モジュール９０がメモリ８８から符号化されたスライスを取り出す。次いで、ＤＴ実行モジュール９０は、データ・パーティションの連続データ・ブロックを再構成する。この例で示されるように、データ・パーティション１の再構成された連続データ・ブロックは、データ・ブロック１〜１５（たとえばｄ１〜ｄ１５）を含む。
【００８１】
連続データ・ブロックが再構成されると、ＤＴ実行モジュール９０は再構成された連続データ・ブロックに対してタスクを実行する。たとえば、タスクは、再構成された連続データ・ブロックを特定のワードもしくはフレーズを求めて検索すること、再構成された連続データ・ブロックにおいてどこで特定のワードもしくはフレーズが出現したかを識別すること、または再構成された連続データ・ブロックにおける特定のワードもしくはフレーズの出現をカウントすること、あるいはそれらの組合せであり得る。ＤＳＴ実行ユニットは、スライス・グルーピング１における他のパーティションの符号化されたデータ・スライスについて同様の方法を続ける。前述のユニティ行列エラー符号化方式を使用すると、連続データの符号化されたデータ・スライスが破損していないならば、それらの復号がデータを抽出する比較的簡単なプロセスであることに留意されたい。
【００８２】
しかしながら、連続データの符号化されたデータ・スライスが破損（または欠損）している場合、それは、破損した符号化されたデータ・スライスの符号化されたデータ・スライスのセットの他の符号化されたデータ・スライスを記憶している他のＤＳＴ実行ユニットにアクセスすることによって再構築され得る。この例では、破損した符号化されたデータ・スライスを有するＤＳＴ実行ユニットが、他のＤＳＴ実行ユニットからセット内の（連続データおよびエラー・コード化データの）少なくとも３つの符号化されたデータ・スライスを取り出す（前述のように、たとえば、ピラー幅が５であり、復号閾値が３である）。ＤＳＴ実行ユニットは、取り出されたデータ・スライスをＤＳエラー符号化パラメータを使用して復号して、対応するデータ・セグメントを再捕捉する。次いで、ＤＳＴ実行ユニットは、ＤＳエラー符号化パラメータを使用してデータ・セグメントを再符号化して、破損した符号化されたデータ・スライスを再構築する。符号化されたデータ・スライスが再構築されると、ＤＳＴ実行ユニットは前述されたように機能する。
【００８３】
図１３は、ネットワーク２４を介して分散ストレージおよびタスク・ネットワーク（ＤＳＴＮ）モジュールのＤＳＴ実行ユニットに結合されたＤＳＴクライアント・モジュールのインバウンド分散ストレージおよび／またはタスク（ＤＳＴ）処理部８２の実施形態の概略ブロック図である。インバウンドＤＳＴ処理部８２は、グルーピング解除モジュール１８０、ＤＳ（散在ストレージ）エラー復号モジュール１８２、データ・パーティション解除モジュール１８４、制御モジュール１８６、および分散タスク制御モジュール１８８を含む。制御モジュール１８６または分散タスク制御モジュール１８８あるいはその両方は、アウトバウンドＤＳＴ処理部の対応するモジュールと別個のモジュールであってもよく、あるいは同じモジュールであってもよいことに留意されたい。
【００８４】
動作の例として、ＤＳＴ実行ユニットは、部分的結果１０２を作成するために対応するスライス・グルーピングに対する対応する部分的タスクの実行を完了している。インバウンドＤＳＴ処理部８２は、分散タスク制御モジュール１８８を介して部分的結果１０２を受け取る。次いで、インバウンドＤＳＴ処理部８２は、部分的結果１０２を処理して最終結果または結果１０４を作成する。たとえば、タスクが、データ内の特定のワードまたはフレーズを見つけ出すことであった場合、部分的結果１０２は、データの所定の部分のそれぞれにおける対応するＤＳＴ実行ユニットが特定のワードまたはフレーズを見つけ出した場所を示す。分散タスク制御モジュール１８８は、データの対応する部分に対する個々の部分的結果１０２を組み合わせて、データ全体としての最終結果１０４にする。
【００８５】
動作の別の例では、インバウンドＤＳＴ処理部８２は、ＤＳＴ実行ユニット（すなわちＤＳＴＮモジュール）から、記憶されたデータを取り出している。この例では、ＤＳＴ実行ユニットは、データ取出し要求に対応する符号化されたデータ・スライス１００を出力する。グルーピング解除モジュール１８０は、取り出されたスライス１００を受け取り、それらをグループ解除して、データ・パーティションごとの符号化されたデータ・スライス１２２を作成する。ＤＳエラー復号モジュール１８２は、ＤＳエラー符号化パラメータに従ってデータ・パーティションごとの符号化されたデータ・スライス１２２を復号して、データ・パーティション１２０を作成する。
【００８６】
データ・パーティション解除モジュール１８４は、データ・パーティション１２０を組み合わせてデータ９２にする。制御モジュール１８６は、モジュールのそれぞれに対する制御信号１９０を使用して、取出しスライス１００のデータ９２への変換を制御する。たとえば、制御モジュール１８６は、グルーピング解除情報をグルーピング解除モジュール１８０に提供し、ＤＳエラー符号化パラメータをＤＳエラー復号モジュール１８２に提供し、パーティション解除情報をデータ・パーティション解除モジュール１８４に提供する。
【００８７】
図１４は、インバウンドＤＳＴ処理に関する分散ストレージおよびタスク（ＤＳＴ）クライアント・モジュールによって実行可能な方法の例の論理図である。方法はステップ１９４から開始し、このステップでは、ＤＳＴクライアント・モジュールが部分的結果を受け取る。方法はステップ１９６に続き、このステップでは、ＤＳＴクライアント・モジュールは、部分的結果に対応するタスクを取り出す。たとえば、部分的結果は、要求されたタスクに関係する要求エンティティを識別するヘッダ情報を含む。
【００８８】
方法はステップ１９８に続き、このステップでは、ＤＳＴクライアント・モジュールがタスクに基づいて結果処理情報を決定する。たとえば、タスクがデータ内の特定のワードまたはフレーズを識別することであった場合、結果処理情報は、データの対応する部分についての部分的結果を集約して最終結果を作成することを示すことになる。別の例として、タスクがデータ内の特定のワードまたはフレーズの出現をカウントすることであった場合、情報を処理する結果は、最終結果を作成するために部分的結果を足し合わせることを示すことになる。方法はステップ２００に続き、このステップでは、ＤＳＴクライアント・モジュールが結果処理情報に従って部分的結果を処理して、最終結果または結果を作成する。
【００８９】
図１５は、ＤＳＴクライアント・モジュールのインバウンド分散ストレージおよびタスク（ＤＳＴ）処理部のグルーピング解除選択処理の例の図である。一般に、これは、図９のアウトバウンドＤＳＴ処理部のグルーピング・モジュールの逆プロセスである。したがって、各データ・パーティション（たとえば、パーティション＃１）について、グルーピング解除モジュールが、ＤＳＴ実行ユニット（ＥＵ）（たとえばＤＳＴ１〜５）からの対応するスライス・グルーピングを取り出す。
【００９０】
図示されるように、ＤＳＴ実行ユニット＃１は、第１のスライス・グルーピングを提供し、第１のスライス・グルーピングは、符号化されたスライスのセットのそれぞれの第１の符号化されたスライス（たとえば、データ・ブロック１〜１５の連続データの符号化されたデータ・スライス）を含み、ＤＳＴ実行ユニット＃２は、第２のスライス・グルーピングを提供し、第２のスライス・グルーピングは、符号化されたスライスのセットのそれぞれの第２の符号化されたスライス（たとえば、データ・ブロック１６〜３０の連続データの符号化されたデータ・スライス）を含み、ＤＳＴ実行ユニット＃３は、第３のスライス・グルーピングを提供し、第３のスライス・グルーピングは、符号化されたスライスのセットのそれぞれの第３の符号化されたスライス（たとえば、データ・ブロック３１〜４５の連続データの符号化されたデータ・スライス）を含み、ＤＳＴ実行ユニット＃４は、第４のスライス・グルーピングを提供し、第４のスライス・グルーピングは、符号化されたスライスのセットのそれぞれの第４の符号化されたスライス（たとえば、エラー・コード化（ＥＣ）データの第１の符号化されたデータ・スライス）を含み、ＤＳＴ実行ユニット＃５は、第５のスライス・グルーピングを提供し、第５のスライス・グルーピングは、符号化されたスライスのセットのそれぞれの第５の符号化されたスライス（たとえば、エラー・コード化（ＥＣ）データの第１の符号化されたデータ・スライス）を含む。
【００９１】
グルーピング解除モジュールは、例で示されるように制御信号１９０によって制御されるグルーピング解除選択器１８０を使用してスライス・グルーピング（たとえば、受け取られたスライス１００）をグループ解除して、複数のセットの符号化されたデータ・スライス（たとえば、スライスのセットになるパーティションに対する取り出されたスライス１２２）を作成する。各セットは、データ・パーティションのデータ・セグメントに対応している。
【００９２】
図１６は、インバウンド分散ストレージおよびタスク（ＤＳＴ）処理部の散在ストレージ（ＤＳ）エラー復号モジュール１８２の実施形態の概略ブロック図である。ＤＳエラー復号モジュール１８２は、逆スライス単位セキュリティ処理モジュール２０２、スライス解除モジュール２０４、エラー復号モジュール２０６、逆セグメント・セキュリティ・モジュール２０８、セグメント解除処理モジュール２１０、および制御モジュール１８６を含む。
【００９３】
動作の例として、逆スライス単位セキュリティ処理モジュール２０２は、制御モジュール１８６によって有効にされたとき、制御モジュール１８６から受け取られた制御情報１９０として受け取られたスライス・セキュリティ解除情報（たとえば、図６を参照して論じられたスライス・セキュリティ情報の相補情報（compliment））に基づいて、各符号化されたデータ・スライス１２２を非セキュアにする。スライス・セキュリティ情報は、データ圧縮解除、解読、ウォーターマーク解除、整合性チェック（たとえばＣＲＣ検証など）、または任意の他のタイプのデジタル・セキュリティ、あるいはそれらの組合せを含む。たとえば、逆スライス単位セキュリティ処理モジュール２０２は、有効にされると、各符号化されたデータ・スライス１２２の整合性情報（たとえばＣＲＣ値）を検証し、各検証された符号化データ・スライスを解読し、各解読された符号化データ・スライスを圧縮解除して、スライス符号化データ１５８を作成する。逆スライス単位セキュリティ処理モジュール２０２が有効にされない場合、それは、符号化データ・スライス１２２をスライス化された符号化データ１５８として渡し、またはバイパスされて、取り出された符号化データ・スライス１２２がスライス化された符号化データ１５８として提供される。
【００９４】
スライス解除モジュール２０４は、制御モジュール１８６から制御情報１９０として受け取ったエラー訂正符号化パラメータのピラー幅に従って、スライス化された符号化データ１５８をスライス解除して、符号化されたデータ・セグメント１５６にする。たとえば、ピラー幅が５である場合、スライス解除モジュール２０４は、５つの符号化されたデータ・スライスからなるセットをスライス解除して、符号化されたデータ・セグメント１５６にする。エラー復号モジュール２０６は、制御モジュール１８６から制御情報１９０として受け取ったエラー訂正復号パラメータに従って、符号化されたデータ・セグメント１５６を復号してセキュアなデータ・セグメント１５４を作成する。エラー訂正復号パラメータは、エラー訂正符号化方式（たとえば、順方向エラー訂正アルゴリズム、リードソロモンベースのアルゴリズム、情報伝播アルゴリズムなど）、ピラー幅、復号閾値、読取り閾値、書込み閾値などを識別することを含む。たとえば、エラー訂正復号パラメータは、特定のエラー訂正符号化方式を識別し、５のピラー幅を指定し、３の復号閾値を指定する。
【００９５】
逆セグメント・セキュリティ処理モジュール２０８は、制御モジュール１８６によって有効にされたとき、制御モジュール１８６から制御情報１９０として受け取ったセグメント・セキュリティ情報に基づいて、セキュアにされたデータ・セグメント１５４を非セキュアにする。セグメント・セキュリティ情報は、データ圧縮解除、解読、ウォーターマーク解除、整合性チェック（たとえば、ＣＲＣなど）検証、または任意の他のタイプのデジタル・セキュリティ、あるいはそれらの組合せを含む。たとえば、逆セグメント・セキュリティ処理モジュール２０８は、有効にされると、各セキュアなデータ・セグメント１５４の整合性情報（たとえばＣＲＣ値）を検証し、各検証されたセキュアなデータ・セグメントを解読し、各解読されたセキュアなデータ・セグメントを圧縮解除して、データ・セグメント１５２を作成する。逆セグメント・セキュリティ処理モジュール２０８が有効にされない場合、それは、復号されたデータ・セグメント１５４をデータ・セグメント１５２として渡すか、またはバイパスされる。
【００９６】
セグメント解除処理モジュール２１０は、データ・セグメント１５２を受け取り、制御モジュール１８６から制御情報１９０としてセグメント解除情報を受け取る。セグメント解除情報は、セグメント解除処理モジュール２１０がどのようにデータ・セグメント１５２をセグメント解除してデータ・パーティション１２０にするかを示す。たとえば、セグメント解除情報は、データ・パーティション１２０を得るためにデータ・セグメントの行および列がどのように再配列されるかを示す。
【００９７】
図１７は、散在エラー復号モジュールのスライス解除およびエラー復号処理の例の図である。スライス解除モジュール２０４は、制御情報１９０に従って各データ・セグメントについて少なくとも復号閾値数の符号化されたデータ・スライス１５８を受け取り、符号化されたデータ１５６を提供する。この例では、復号閾値は３である。したがって、符号化されたデータ・スライス１５８の各セットは、データ・セグメントごとに３つの符号化されたデータ・スライスを有するように示されている。スライス解除モジュール２０４は、データ・セグメントごとに３つの符号化されたデータ・スライスを受け取ることができる。なぜならば、関連した分散ストレージおよびタスク（ＤＳＴ）クライアント・モジュールが、セグメントごとに３つのみの符号化されたデータ・スライスの取出しを要求したか、または取り出された符号化データ・スライスのうち３つをデータ・セグメントごとに選択したためである。図示されているように、図８を参照して先に論じられたユニティ行列符号化に基づき、符号化されたデータ・スライスは、データをベースにした符号化データ・スライス（たとえばＤＳ１＿ｄ１＆ｄ２）、またはエラー・コードをベースにした符号化データ・スライス（たとえばＥＳ３＿１）であり得る。
【００９８】
エラー復号モジュール２０６は、制御情報１９０のエラー訂正復号パラメータに従って、各データ・セグメントの符号化されたデータ１５６を復号して、セキュアにされたセグメント１５４を作成する。この例では、データ・セグメント１は、３行を有し、各行が符号化のために１つのワードとして扱われる。したがって、データ・セグメント１は、３つのワードを含み、ワード１はデータ・ブロックｄ１およびｄ２を含み、ワード２はデータ・ブロックｄ１６およびｄ１７を含み、ワード３はデータ・ブロックｄ３１およびｄ３２を含む。データ・セグメント２〜７のそれぞれが３つのワードを含み、各ワードが２つのデータ・ブロックを含む。データ・セグメント８は３つのワードを含み、各ワードは単一のデータ・ブロック（たとえば、ｄ１５、ｄ３０、およびｄ４５）を含む。
【００９９】
図１８は、インバウンド分散ストレージおよびタスク（ＤＳＴ）処理のセグメント解除処理の例の図である。この例では、セグメント解除処理モジュール２１０は、データ・セグメント１５２（たとえば１〜８）を受け取り、制御情報１９０のセグメント解除情報に従ってデータ・セグメントのデータ・ブロックを行および列に再配列して、データ・パーティション１２０を作成する。行の数は、復号閾値（たとえば、この具体的な例では３）に基づき、列の数は、データ・ブロックの数およびサイズに基づくことに留意されたい。
【０１００】
セグメント解除モジュール２１０は、データ・ブロックの行および列をデータ・パーティション１２０に変換する。各データ・ブロックは、他のデータ・ブロックと同じサイズであっても異なるサイズであってもよいことに留意されたい。加えて、各データ・ブロックはサイズが数バイトから数メガバイトのデータであり得る。
【０１０１】
図１９は、インバウンド分散ストレージおよびタスク（ＤＳＴ）処理部におけるスライス・グループをデータ９２に変換する例の図である。図示されるように、データ９２は、複数のデータ・パーティション（１〜ｘ、ここでｘは４より大きい整数）から再構成される。各データ・パーティション（または、データのチャンク・セット）は、先に論じられたように、グルーピング解除および復号機能２１２ならびにパーティション解除機能２１４を使用してスライス・グルーピングから復号され再グループ化される。所与のデータ・パーティションについて、スライス・グルーピング（たとえば、少なくともデータ・セグメントごとの復号閾値の符号化されたデータ・スライス）がＤＳＴ実行ユニットから受け取られる。図１０を参照して論じられてように、データ・パーティションごとに、ＤＳＴ実行ユニットから受け取られるスライス・グルーピングの順序付けが異なり得る。
【０１０２】
図２０は、分散コンピューティング・システム内の分散ストレージまたは取出しあるいはその両方の例の図である。分散コンピューティング・システムは、複数の分散ストレージおよび／またはタスク（ＤＳＴ）処理クライアント・モジュール３４（１つが図示される）を含み、このモジュールは、ネットワーク２４を介して、分散ストレージおよび／またはタスク処理ネットワーク（ＤＳＴＮ）モジュールあるいは複数のＤＳＴＮモジュールに結合される。ＤＳＴクライアント・モジュール３４は、アウトバウンドＤＳＴ処理部８０およびインバウンドＤＳＴ処理部８２を含む。ＤＳＴＮモジュールは、複数のＤＳＴ実行ユニットを含む。各ＤＳＴ実行ユニットは、コントローラ８６、メモリ８８、１つまたは複数の分散タスク（ＤＴ）実行モジュール９０、およびＤＳＴクライアント・モジュール３４を含む。
【０１０３】
データ記憶の例において、ＤＳＴクライアント・モジュール３４が、ＤＳＴＮモジュールに記憶したいデータ９２を有する。データ９２は、ファイル（たとえば、ビデオ、オーディオ、テキスト、グラフィックスなど）、データ・オブジェクト、データ・ブロック、ファイルに対する更新、データ・ブロックに対する更新などであり得る。この例では、アウトバウンドＤＳＴ処理モジュール８０は、図２１〜図２３を参照してさらに説明されるように、データ９２を符号化されたデータ・スライス２１６に変換する。アウトバウンドＤＳＴ処理モジュール８０は、図２４を参照してさらに説明されるように、記憶のためにネットワーク２４を介してＤＳＴ実行ユニットに送る。
【０１０４】
データ取出しの例において、ＤＳＴクライアント・モジュール３４は、所望のデータ９２を求めて取出し要求をＤＳＴ実行ユニットに発行する。取出し要求は、所望のデータの符号化されたデータ・スライスを記憶する各ＤＳＴ実行ユニットに宛てる、アドレス復号閾値数のＤＳＴ実行ユニットに宛てる、アドレス読取り閾値数のＤＳＴ実行ユニットに宛てる、または他のいくつかの数のＤＳＴ実行ユニットに宛てることができる。要求に応答して、各宛先のＤＳＴ実行ユニットは、所望のデータのその符号化されたデータ・スライス１００を取り出し、それらをネットワーク２４を介してインバウンドＤＳＴ処理部８２に送る。
【０１０５】
各データ・セグメントについて、インバウンドＤＳＴ処理部８２は、少なくとも復号閾値数の符号化されたデータ・スライス１００を受け取り、それらの符号化されたデータ・スライス１００をデータ・セグメントに変換する。インバウンドＤＳＴ処理部８２は、データ・セグメントを集約して取り出されたデータ９２を作成する。
【０１０６】
図２１は、ネットワーク２４を介して分散ストレージおよびタスク・ネットワーク（ＤＳＴＮ）モジュール（たとえば、複数のＤＳＴ実行ユニット）に結合されたＤＳＴクライアント・モジュールのアウトバウンド分散ストレージおよび／またはタスク（ＤＳＴ）処理部８０の実施形態の概略ブロック図である。アウトバウンドＤＳＴ処理部８０は、データ・パーティション化モジュール１１０、散在ストレージ（ＤＳ）エラー符号化モジュール１１２、グルーピング選択モジュール１１４、制御モジュール１１６、および分散タスク制御モジュール１１８を含む。
【０１０７】
動作の例として、データ・パーティション化モジュール１１０は、データ９２がＤＳエラー符号化モジュール１１２に直接提供されるようにバイパスされる。制御モジュール１１６は、バイパス２２０のメッセージをデータ・パーティション化モジュール１１０に出力することによって、データ・パーティション化モジュール１１０のバイパスを調整する。
【０１０８】
ＤＳエラー符号化モジュール１１２は、直列様式または並列様式あるいはその組合せでデータ９２を受け取る。ＤＳエラー符号化モジュール１１２は、制御モジュール１１６からの制御情報１６０に従って、データをＤＳエラー符号化して、符号化されたデータ・スライス２１８を作成する。ＤＳエラー符号化は、データ９２をデータ・セグメントにセグメント化すること、セグメント・セキュリティ処理（たとえば、暗号化、圧縮、ウォーターマーキング、整合性チェック（たとえばＣＲＣなど））、エラー符号化、スライス化、またはスライス単位セキュリティ処理（たとえば、暗号化、圧縮、ウォーターマーキング、整合性チェック（たとえばＣＲＣなど））、あるいはそれらの組合せを含む。制御情報１６０は、データ９２についてＤＳエラー符号化のどのステップがアクティブであるかを示し、アクティブなステップについては、そのステップに対するパラメータを示す。たとえば、制御情報１６０は、エラー符号化がアクティブであることを示し、エラー符号化パラメータ（たとえば、ピラー幅、復号閾値、書込み閾値、読取り閾値、エラー符号化のタイプなど）を含む。
【０１０９】
グルーピング選択モジュール１１４は、データ・セグメントの符号化されたスライス２１８を、スライスのピラー２１６にグループ化する。ピラーの数は、ＤＳエラー符号化パラメータのピラー幅に対応する。この例では、分散タスク制御モジュール１１８が記憶要求を推進する。
【０１１０】
図２２は、図２１の例に関する散在ストレージ（ＤＳ）エラー符号化モジュール１１２の例の概略ブロック図である。ＤＳエラー符号化モジュール１１２は、セグメント処理モジュール１４２、セグメント・セキュリティ処理モジュール１４４、エラー符号化モジュール１４６、スライス化モジュール１４８、およびスライス単位セキュリティ処理モジュール１５０を含む。これらのモジュールのそれぞれは、制御モジュール１１６に結合されて、それから制御情報１６０を受け取る。
【０１１１】
動作の例として、セグメント処理モジュール１４２は、データ９２を受け取り、また制御モジュール１１６から制御情報１６０としてセグメント化情報を受け取る。セグメント化情報は、セグメント処理モジュールがデータをどのようにセグメント化するかを示す。たとえば、セグメント化情報は、各データ・セグメントのサイズを示す。セグメント処理モジュール１４２は、セグメント化情報に従ってデータ９２をセグメント化してデータ・セグメント１５２にする。
【０１１２】
セグメント・セキュリティ処理モジュール１４４は、制御モジュール１１６によって有効にされたとき、制御モジュール１１６から制御情報１６０として受け取ったセグメント・セキュリティ情報に基づいて、データ・セグメント１５２をセキュアにする。セグメント・セキュリティ情報は、データ圧縮、暗号化、ウォーターマーキング、整合性チェック（たとえばＣＲＣなど）、または任意の他のタイプのデジタル・セキュリティ、あるいはそれらの組合せを含む。たとえば、セグメント・セキュリティ処理モジュール１４４は、有効にされると、データ・セグメント１５２を圧縮し、圧縮されたデータ・セグメントを暗号化し、暗号化されたデータ・セグメントに対するＣＲＣ値を生成して、セキュアなデータ・セグメントを作成することができる。セグメント・セキュリティ処理モジュール１４４が有効にされない場合、それは、データ・セグメント１５２をエラー符号化モジュール１４６に渡し、またはバイパスされてデータ・セグメント１５２がエラー符号化モジュール１４６に提供される。
【０１１３】
エラー符号化モジュール１４６は、制御モジュール１１６から制御情報１６０として受け取ったエラー訂正符号化パラメータに従って、セキュアなデータ・セグメントを符号化する。エラー訂正符号化パラメータは、エラー訂正符号化方式（たとえば、順方向エラー訂正アルゴリズム、リードソロモンベースのアルゴリズム、情報伝播アルゴリズムなど）、ピラー幅、復号閾値、読取り閾値、書込み閾値などを識別することを含む。たとえば、エラー訂正符号化パラメータは、特定のエラー訂正符号化方式を識別し、５のピラー幅を指定し、３の復号閾値を指定する。これらのパラメータから、エラー符号化モジュール１４６は、データ・セグメントを符号化して、符号化されたデータ・セグメントを作成する。
【０１１４】
スライス化モジュール１４８は、エラー訂正符号化パラメータのピラー幅に従って、符号化されたデータ・セグメントをスライス化する。たとえば、ピラー幅が５である場合、スライス化モジュールは、符号化されたデータ・セグメントをスライス化して、５つの符号化されたデータ・スライスのセットにする。したがって、複数のデータ・セグメントについて、スライス化モジュール１４８は、説明されたように符号化およびスライス化機能２２２において示されるように複数のセットの符号化されたデータ・スライスを出力する。
【０１１５】
スライス単位セキュリティ処理モジュール１５０は、制御モジュール１１６によって有効にされたとき、制御モジュール１１６から制御情報１６０として受け取ったスライス・セキュリティ情報に基づいて、各符号化されたデータ・スライスをセキュアにする。スライス・セキュリティ情報は、データ圧縮、暗号化、ウォーターマーキング、整合性チェック（たとえばＣＲＣなど）、または任意の他のタイプのデジタル・セキュリティ、あるいはそれらの組合せを含む。たとえば、スライス単位セキュリティ処理モジュール１５０は、有効にされると、符号化されたデータ・スライスを圧縮し、圧縮された符号化データ・スライスを暗号化し、暗号化された符号化データ・スライスに対するＣＲＣ値を生成して、セキュアな符号化データ・スライス微調整を作成することができる。スライス単位セキュリティ処理モジュール１５０が有効にされない場合、それは符号化されたデータ・スライスを通過させ、またはバイパスされて、符号化されたデータ・スライス２１８がＤＳエラー符号化モジュール１１２の出力になる。
【０１１６】
図２３は、分散ストレージおよびタスク・ネットワーク（ＤＳＴＮ）モジュールのメモリへの記憶のために、符号化、スライス化、およびピラー・グループ化機能２２４を利用して、データ９２をピラー・スライス・グループに変換する例の図である。先に論じられたように、データ９２は符号化されスライス化されて、複数のセットの符号化されたデータ・スライスにされ、データ・セグメントごとに１つのセットとなる。グルーピング選択モジュールは、符号化されたデータ・スライスをデータ・スライスのピラーに編成する。この例では、ＤＳエラー符号化パラメータは、５のピラー幅および３の復号閾値を含む。したがって、各データ・セグメントについて、５つの符号化されたデータ・スライスが作り出される。
【０１１７】
グルーピング選択モジュールは、それらのセットのそれぞれの第１の符号化されたデータ・スライスを取り入れて第１のピラーを形成し、第１のピラーは第１のＤＳＴ実行ユニットに送られ得る。同様に、グルーピング選択モジュールは、セットの第２のスライスから第２のピラーを作り出し、セットの第３のスライスから第３のピラーを作り出し、セットの第４のスライスから第４のピラーを作り出し、セットの第５のスライスから第５のピラーを作り出す。
【０１１８】
図２４は、分散ストレージおよび／またはタスク（ＤＳＴ）実行ユニットの実施形態の概略ブロック図であり、ＤＳＴ実行ユニットは、インターフェース１６９、コントローラ８６、メモリ８８、１つまたは複数の分散タスク（ＤＴ）実行モジュール９０、およびＤＳＴクライアント・モジュール３４を含む。コンピューティング・コア２６は、１つまたは複数のＤＴ実行モジュール９０およびＤＳＴクライアント・モジュール３４を実装するために利用され得る。メモリ８８は、かなりの数の符号化されたデータ・スライス（たとえば、数千から数億のスライス）を記憶するために十分なサイズがあり、１つもしくは複数のハード・ドライブまたは１つもしくは複数のソリッドステート・メモリ・デバイス（たとえば、フラッシュ・メモリ、ＤＲＡＭなど）あるいはその両方を含み得る。
【０１１９】
スライスのピラー２１６を記憶する例において、ＤＳＴ実行ユニットは、インターフェース１６９を介してスライスのピラー２１６（たとえば、ピラー＃１スライス）を受け取る。メモリ８８は、それがコントローラ８６から受け取ったメモリ制御情報１７４に従って、スライスのピラーの符号化されたデータ・スライス２１６を記憶する。コントローラ８６（たとえば、処理モジュール、ＣＰＵなど）は、分散ストレージ情報（たとえば、ユーザ情報（たとえば、ユーザＩＤ、分散ストレージ許可、データ・アクセス許可など）、格納域情報（たとえば、ユーザに割り当てられた仮想メモリ、ユーザ・グループなど）など）に基づいて、メモリ制御情報１７４を生成する。同様に、スライスを取り出すとき、ＤＳＴ実行ユニットは、インターフェース１６９を介してスライス取出し要求を受け取る。メモリ８８は、それがコントローラ８６から受け取ったメモリ制御情報１７４に従って、スライスを取り出す。メモリ８８は、インターフェース１６９を介して要求エンティティにスライス１００を出力する。
【０１２０】
図２５は、散在エラー符号化データ９２を取り出すためのインバウンド分散ストレージおよび／またはタスク（ＤＳＴ）処理部８２の動作の例の概略ブロック図である。インバウンドＤＳＴ処理部８２は、グルーピング解除モジュール１８０、散在ストレージ（ＤＳ）エラー復号モジュール１８２、データ・パーティション解除モジュール１８４、制御モジュール１８６、および分散タスク制御モジュール１８８を含む。制御モジュール１８６または分散タスク制御モジュール１８８あるいはその両方は、アウトバウンドＤＳＴ処理部の対応するモジュールと別個のモジュールであってもよく、あるいは同じモジュールであってもよいことに留意されたい。
【０１２１】
動作の例として、インバウンドＤＳＴ処理部８２は、ＤＳＴ実行ユニット（すなわちＤＳＴＮモジュール）から、記憶されたデータ９２を取り出している。この例では、ＤＳＴ実行ユニットは、分散タスク制御モジュール１８８からのデータ取出し要求に対応する符号化されたデータ・スライスを出力する。グルーピング解除モジュール１８０は、スライスのピラー１００を受け取り、制御モジュール１８６からの制御情報１９０に従ってそれらをグループ解除して、セットの符号化されたデータ・スライス２１８を作成する。ＤＳエラー復号モジュール１８２は、制御モジュール１８６から制御情報１９０として受信したＤＳエラー符号化パラメータに従って、各セットの符号化されたデータ・スライス２１８を復号してデータ・セグメントを作成し、データ・セグメントは、取り出されたデータ９２に集約される。データ・パーティション解除モジュール１８４は、この動作モードでは、制御モジュール１８６からの制御情報１９０のバイパス信号２２６を用いてバイパスされる。
【０１２２】
図２６は、インバウンド分散ストレージおよびタスク（ＤＳＴ）処理部の散在ストレージ（ＤＳ）エラー復号モジュール１８２の実施形態の概略ブロック図である。ＤＳエラー復号モジュール１８２は、逆スライス単位セキュリティ処理モジュール２０２、スライス解除モジュール２０４、エラー復号モジュール２０６、逆セグメント・セキュリティ・モジュール２０８、およびセグメント解除処理モジュール２１０を含む。散在エラー復号モジュール１８２は、スライス解除および復号機能２２８を利用して、データ・セグメントごとの符号化されたスライス２１８をスライス解除および復号して、複数のデータ・セグメントを作成し、これらのデータ・セグメントはセグメント解除機能２３０を利用してセグメント解除されて、データ９２が回復される。
【０１２３】
動作の例として、逆スライス単位セキュリティ処理モジュール２０２は、制御モジュール１８６によって制御情報１９０を介して有効にされたとき、制御モジュール１８６から制御情報１９０として受け取ったスライス・セキュリティ解除情報（たとえば、図６を参照して論じられたスライス・セキュリティ情報の相補情報）に基づいて、各符号化されたデータ・スライス２１８を非セキュアにする。スライス・セキュリティ解除情報は、データ圧縮解除、解読、ウォーターマーク解除、整合性チェック（たとえばＣＲＣ検証など）、または任意の他のタイプのデジタル・セキュリティ、あるいはそれらの組合せを含む。たとえば、逆スライス単位セキュリティ処理モジュール２０２は、有効にされると、各符号化されたデータ・スライス２１８の整合性情報（たとえばＣＲＣ値）を検証し、各検証された符号化データ・スライスを解読し、各解読された符号化データ・スライスを圧縮解除して、スライス符号化データを作成する。逆スライス単位セキュリティ処理モジュール２０２が有効にされない場合、それは、符号化データ・スライス２１８をスライス化された符号化データとして渡し、またはバイパスされて、取り出された符号化データ・スライス２１８がスライス化された符号化データとして提供される。
【０１２４】
スライス解除モジュール２０４は、制御モジュール１８６からの制御情報１９０として受け取ったエラー訂正符号化パラメータのピラー幅に従って、スライス化された符号化データをスライス解除して、符号化されたデータ・セグメントにする。たとえば、ピラー幅が５である場合、スライス解除モジュールは、５つの符号化されたデータ・スライスからなるセットをスライス解除して、符号化されたデータ・セグメントにする。あるいは、符号化されたデータ・セグメントは、（たとえば、復号閾値が３のとき）３つだけの符号化されたデータ・スライスを含むことができる。
【０１２５】
エラー復号モジュール２０６は、制御モジュール１８６から制御情報１９０として受け取ったエラー訂正復号パラメータに従って、符号化されたデータ・セグメントを復号してセキュアなデータ・セグメントを作成する。エラー訂正復号パラメータは、エラー訂正符号化方式（たとえば、順方向エラー訂正アルゴリズム、リードソロモンベースのアルゴリズム、情報伝播アルゴリズムなど）、ピラー幅、復号閾値、読取り閾値、書込み閾値などを識別することを含む。たとえば、エラー訂正復号パラメータは、特定のエラー訂正符号化方式を識別し、５のピラー幅を指定し、３の復号閾値を指定する。
【０１２６】
逆セグメント・セキュリティ処理モジュール２０８は、制御モジュール１８６によって有効にされたとき、制御モジュール１８６から制御情報１９０として受け取ったセグメント・セキュリティ情報に基づいて、セキュアにされたデータ・セグメントを非セキュアにする。セグメント・セキュリティ情報は、データ圧縮解除、解読、ウォーターマーク解除、整合性チェック（たとえば、ＣＲＣなど）検証、または任意の他のタイプのデジタル・セキュリティ、あるいはそれらの組合せを含む。たとえば、逆セグメント・セキュリティ処理モジュールは、有効にされると、各セキュアなデータ・セグメントの整合性情報（たとえばＣＲＣ値）を検証し、各検証されたセキュアなデータ・セグメントを解読し、各解読されたセキュアなデータ・セグメントを圧縮解除して、データ・セグメント１５２を作成する。逆セグメント・セキュリティ処理モジュール２０８が有効にされない場合、それは、復号されたデータ・セグメント１５２をデータ・セグメントとして渡すか、またはバイパスされる。セグメント解除処理モジュール２１０は、制御モジュール１８６からの制御情報１９０に従って、データ・セグメント１５２をデータ９２に集約する。
【０１２７】
図２７は、複数の分散ストレージおよびタスク（ＤＳＴ）実行ユニット（＃１〜＃ｎ、ここで、たとえばｎは３以上の整数である）を含む分散ストレージおよびタスク処理ネットワーク（ＤＳＴＮ）モジュールの例の概略ブロック図である。ＤＳＴ実行ユニットのそれぞれは、ＤＳＴクライアント・モジュール３４、コントローラ８６、１つまたは複数のＤＴ（分散タスク）実行モジュール９０、およびメモリ８８を含む。
【０１２８】
この例では、ＤＳＴＮモジュールは、ＤＳＴ実行ユニットのメモリに、複数のＤＳ（散在ストレージ）符号化データ（たとえば１〜ｎ、ここでｎは２以上の整数である）を記憶し、また、複数のＤＳ符号化タスク・コード（たとえば１〜ｋ、ここでｋは２以上の整数である）を記憶する。ＤＳ符号化データは、図３〜図１９を参照して説明された１つまたは複数の例に従って符号化される（たとえば、スライス・グルーピングに編成される）、あるいは図２０〜図２６を参照して説明された１つまたは複数の例に従って符号化される（たとえば、ピラー・グループに編成される）ことが可能である。ＤＳ符号化データへ符号化されたデータは、任意のサイズまたは任意のコンテンツあるいはその両方を有してよい。たとえば、データは、１つもしくは複数のデジタル書籍、会社の電子メールのコピー、大規模なインターネット検索、ビデオ・セキュリティ・ファイル、１つもしくは複数の娯楽ビデオ・ファイル（たとえば、テレビ番組、映画など）、データ・ファイル、または任意の他の大量の（たとえば数テラバイトより大きい）データ、あるいはそれらの組合せであり得る。
【０１２９】
ＤＳ符号化タスク・コードへ符号化されたタスクは、単純な機能（たとえば、数学関数、論理関数、識別機能、発見機能、検索エンジン機能、置換機能など）、複雑な機能（たとえば、圧縮、人間またはコンピュータあるいはその両方の言語の翻訳、テキスト−音声変換、音声−テキスト変換など）、複数の単純または複雑なあるいはその両方の機能、１つまたは複数のアルゴリズム、１つまたは複数のアプリケーションなどであり得る。タスクは、ＤＳ符号化されたタスク・コードへ、図３〜図１９を参照して説明された１つまたは複数の例に従って符号化される（たとえば、スライス・グルーピングに編成される）、あるいは図２０〜図２６を参照して説明された１つまたは複数の例に従って符号化される（たとえば、ピラー・グループに編成される）ことが可能である。
【０１３０】
動作の例として、ユーザ・デバイスまたはＤＳＴ処理ユニットのＤＳＴクライアント・モジュールが、ＤＳＴ要求をＤＳＴＮモジュールへ発行する。ＤＳＴ要求は、記憶されたデータまたはその部分を取り出す要求を含むこと、ＤＳＴ要求に含まれたデータを記憶する要求を含むこと、記憶されたデータに対して１つまたは複数のタスクを実行する要求を含むこと、ＤＳＴ要求に含まれたデータに対して１つまたは複数のタスクを実行する要求を含むことなどができる。ＤＳＴ要求が、データを記憶するまたはデータを取り出す要求を含む場合、クライアント・モジュールまたはＤＳＴＮモジュールあるいはその両方は、図３〜図１９（たとえばスライス・グルーピング）または図２０〜図２６（たとえばピラー・グルーピング）あるいはその両方の１つまたは複数を参照して先に論じられたように要求を処理する。ＤＳＴ要求が、ＤＳＴ要求に含まれたデータに対して１つまたは複数のタスクを実行する要求を含む場合、ＤＳＴクライアント・モジュールまたはＤＳＴＮモジュールあるいはその両方は、図３〜図１９の１つまたは複数を参照して先に論じられたようにＤＳＴ要求を処理する。
【０１３１】
ＤＳＴ要求が、記憶されたデータに対して１つまたは複数のタスクを実行する要求を含む場合、ＤＳＴクライアント・モジュールまたはＤＳＴＮモジュールあるいはその両方は、図２８〜図３９の１つまたは複数を参照して後述されるようにＤＳＴ要求を処理する。一般に、ＤＳＴクライアント・モジュールは、データを識別するとともに、識別したデータに対してＤＳＴＮモジュールが実行すべき１つまたは複数のタスクを識別する。ＤＳＴ要求は、タスクの１回限りの実行、またはタスクの継続的実行を求める場合がある。後者の例として、会社が日常的な電子メールを作成する場合、ＤＴＳ要求が、不適切なコンテンツに関して日常的に新しい電子メールを検索し、発見した場合、そのコンテンツ、電子メール送信者、電子メール受信者、電子メール・ルーティング情報を記録し、識別した電子メールを人事部に通知することができる。
【０１３２】
図２８は、記憶されたデータに対してタスクを実行する分散コンピューティング・システムの例の概略ブロック図である。この例では、２つの分散ストレージおよびタスク（ＤＳＴ）クライアント・モジュール１〜２が示されており、１つ目は、ユーザ・デバイスに関連付けられてよく、２つ目は、ＤＳＴ処理ユニット、または高優先度のユーザ・デバイス（たとえば、高優先許可ユーザ、システム管理者など）に関連付けられてよい。各ＤＳＴクライアント・モジュールは、記憶されたデータのリスト２３４、およびタスク・コードのリスト２３６を含む。記憶されたデータのリスト２３４は、情報を識別するデータの１つまたは複数のエントリを含み、各エントリは、ＤＳＴＮモジュール２２に記憶されたデータを識別する。情報を識別するデータ（たとえばデータＩＤ）は、データ・ファイル名、データ・ファイル・ディレクトリ項目、データのＤＳＴＮアドレス指定情報、データ・オブジェクト識別子などのうちの１つまたは複数を含む。タスクのリスト２３６は、情報を識別するタスク・コードの１つまたは複数のエントリを含み、各エントリは、ＤＳＴＮモジュール２２に記憶されたタスク・コードを識別する。情報を識別するタスク・コード（たとえばタスクＩＤ）は、タスク・ファイル名、タスク・ファイル・ディレクトリ項目、タスクのＤＳＴＮアドレス指定情報、タスクを識別する他のタイプの識別子などのうちの１つまたは複数を含む。
【０１３３】
図示されるように、データのリスト２３４およびタスクのリスト２３６のそれぞれは、第１のＤＳＴクライアント・モジュールについてのエントリの数が、第２のＤＳＴクライアント・モジュールの対応するリストのそれよりも小さい。これは、第１のＤＳＴクライアント・モジュールに関連付けられたユーザ・デバイスが、第２のＤＳＴクライアント・モジュールに関連付けられたデバイスよりも分散コンピューティング・システムにおける特権が少ないために生じることがある。あるいは、これは、第１のＤＳＴクライアント・モジュールに関連付けられたユーザ・デバイスが、第２のＤＳＴクライアント・モジュールに関連付けられたデバイスよりも少ないユーザにサービスし、それに応じて分散コンピューティング・システムによって制約されるために生じることがある。さらに別の可能性として、これは、分散コンピューティング・システムによる制約により生じるのではなく、単に、第１のＤＳＴクライアント・モジュールに関連付けられたユーザ・デバイスのオペレータが、第２のＤＳＴクライアント・モジュールに関連付けられたデバイスのオペレータよりも少ないデータまたは少ないタスクあるいはその両方を選択しているために生じることがある。
【０１３４】
動作の例として、第１のＤＳＴクライアント・モジュールは、１つまたは複数のデータ・エントリ２３８および１つまたは複数のタスク２４０を、そのそれぞれのリストから選択する（たとえば、選択されたデータＩＤおよび選択されたタスクＩＤ）。第１のＤＳＴクライアント・モジュールは、その選択をタスク分散モジュール２３２に送る。タスク分散モジュール２３２は、分散コンピューティング・システムのスタンドアロン・デバイス内、第１のＤＳＴクライアント・モジュールを含むユーザ・デバイス内、またはＤＳＴＮモジュール２２内にあってよい。
【０１３５】
タスク分散モジュールの位置に拘わらず、それは、選択されたタスクＩＤ２４０および選択されたデータＩＤ２３８からＤＳＴ割り振り情報２４２を生成する。ＤＳＴ割り振り情報２４２は、データ・パーティション化情報、タスク実行情報、または中間結果情報、あるいはそれらの組合せを含む。タスク分散モジュール２３２は、ＤＳＴ割り振り情報２４２をＤＳＴＮモジュール２２に送る。ＤＳＴ割り振り情報の１つまたは複数の例については、図２９〜図３９の１つまたは複数を参照して論じられることに留意されたい。
【０１３６】
ＤＳＴＮモジュール２２は、ＤＳＴ割り振り情報２４２を解釈して、記憶されたＤＳ符号化データ（たとえばＤＳエラー符号化データ２）を識別し、記憶されたＤＳエラー符号化タスク・コード（たとえばＤＳエラー符号化タスク・コード１）を識別する。加えて、ＤＳＴＮモジュール２２は、ＤＳＴ割り振り情報２４２を解釈して、データがどのようにパーティション化されるか、およびタスクがどのようにパーティション化されるかを決定する。ＤＳＴＮモジュール２２はまた、選択されたＤＳエラー符号化データ２３８がピラー・グルーピングからスライス・グルーピングに変換される必要があるかどうかを決定する。必要がある場合、ＤＳＴＮモジュール２２は、選択されたＤＳエラー符号化データをスライス・グルーピングに変換し、ピラー・グルーピングＤＳエラー符号化データを上書きすることによって、またはスライス・グルーピングＤＳエラー符号化データをＤＳＴＮモジュール２２のメモリ内の異なる位置に記憶する（すなわち、ピラー・グルーピングＤＳエラー符号化データを上書きしない）ことによって、スライス・グルーピングＤＳエラー符号化データを記憶する。
【０１３７】
ＤＳＴＮモジュール２２は、ＤＳＴ割り振り情報２４２に示されているように、データおよびタスクをパーティション化し、それらのパーティションを、ＤＳＴＮモジュール２２の選択されたＤＳＴ実行ユニットに送る。選択されたＤＳＴ実行ユニットのそれぞれは、そのスライス・グルーピングに対してその部分的タスクを実行して部分的結果を作成する。ＤＳＴＮモジュール２２は、選択されたＤＳＴ実行ユニットから部分的結果を収集し、それらを結果情報２４４としてタスク分散モジュールに提供する。結果情報２４４は、収集された部分的結果、ＤＳＴ割り振り情報２４２に従って部分的結果を処理することでＤＳＴＮモジュール２２によって作成される１つまたは複数の最終結果、あるいはＤＳＴ割り振り情報２４２に従って部分的結果を処理することでＤＳＴＮモジュール２２によって作成される１つまたは複数の中間結果であり得る。
【０１３８】
タスク分散モジュール２３２は、結果情報２４４を受け取り、それからの１つまたは複数の最終結果１０４を第１のＤＳＴクライアント・モジュールに提供する。最終結果１０４は、結果情報２４４、または結果情報２４４のタスク分散モジュールの処理の結果とすることができる。
【０１３９】
第１のＤＳＴクライアント・モジュールの選択されたタスクを処理するのと同時に、分散コンピューティング・システムは、第２のＤＳＴクライアント・モジュールの選択されたデータに対する第２のＤＳＴクライアント・モジュールの選択されたタスクを処理することができる。あるいは、分散コンピューティング・システムは、第２のＤＳＴクライアント・モジュールの要求を、第１のＤＳＴクライアント・モジュールの要求の後または前に処理してもよい。ＤＳＴクライアント・モジュール要求の順序付けまたは並列処理あるいはその両方に拘わらず、第２のＤＳＴクライアント・モジュールは、その選択されたデータ２３８および選択されたタスク２４０をタスク分散モジュール２３２に提供する。タスク分散モジュール２３２が分散コンピューティング・システムの別個のデバイスまたはＤＳＴＮモジュール内である場合、第１および第２のＤＳＴクライアント・モジュールに結合されたタスク分散モジュール２３２は同じモジュールとすることができる。タスク分散モジュール２３２は、それが第１のＤＳＴクライアント・モジュールの要求を処理したのと同様の様式で第２のＤＳＴクライアント・モジュールの要求を処理する。
【０１４０】
図２９は、図２８の例を推進するタスク分散モジュール２３２の実施形態の概略ブロック図である。タスク分散モジュール２３２は、ＤＳＴクライアント・モジュールから受け取った選択されたデータおよび選択されたタスクについて分散ストレージおよびタスク（ＤＳＴ）割り振り情報２４２を生成するために使用する複数のテーブルを含む。テーブルは、データ記憶情報２４８、タスク記憶情報２５０、分散タスク（ＤＴ）実行モジュール情報２５２、および、タスク⇔サブ・タスク・マッピング情報２４６を含む。
【０１４１】
データ記憶情報テーブル２４８は、データ識別（ＩＤ）フィールド２６０、データ・サイズ・フィールド２６２、アドレス指定情報フィールド２６４、分散ストレージ（ＤＳ）情報２６６を含み、さらに、データに関する他の情報、それをどのように記憶するか、またはそれをどのように処理するか、あるいはそれらの組合せを含むことができる。たとえば、ＤＳ符号化データ＃１は、データＩＤ：１、データ・サイズ：ＡＡ（たとえば、数テラバイト以上のバイト・サイズ）、アドレス指定情報：Ａｄｄｒ＿１＿ＡＡ、ならびにＤＳパラメータ：３／５；ＳＥＧ＿１；およびＳＬＣ＿１を有する。この例では、アドレス指定情報は、他のアドレスをどのように計算するかに関するデータおよび情報の第１の記憶ワード（たとえば１つまたは複数のバイト）の仮想アドレスに対応する仮想アドレス、データの記憶ワードの仮想アドレスの範囲、データの記憶ワードの第１の記憶ワードもしくは複数の記憶ワードの物理アドレス、データの符号化されたデータ・スライスのスライス名のリストなどであり得る。ＤＳパラメータは、エラー符号化方式のアイデンティティ、復号閾値／ピラー幅（たとえば、第１のデータ・エントリについて３／５）、セグメント・セキュリティ情報（たとえば、ＳＥＧ＿１）、スライス単位セキュリティ情報（たとえば、ＳＬＣ＿１）、またはデータがどのようにデータ・スライスに符号化されたかに関する任意の他の情報、あるいはそれらの組合せを含むことができる。
【０１４２】
タスク記憶情報テーブル２５０は、タスク識別（ＩＤ）フィールド２６８、タスク・サイズ・フィールド２７０、アドレス指定情報フィールド２７２、分散ストレージ（ＤＳ）情報２７４を含み、さらに、タスクに関する他の情報、それをどのように記憶するか、またはデータを処理するためにそれをどのように使用できるか、あるいはそれらの組合せを含むことができる。たとえば、ＤＳ符号化タスク＃２は、タスクＩＤ：２、タスク・サイズ：ＸＹ、アドレス指定情報：Ａｄｄｒ＿２＿ＸＹ、ならびにＤＳパラメータ：３／５；ＳＥＧ＿２；およびＳＬＣ＿２を有する。この例では、アドレス指定情報は、他のアドレスをどのように計算するかに関するタスクおよび情報の第１の記憶ワード（たとえば１つまたは複数のバイト）の仮想アドレスに対応する仮想アドレス、タスクの記憶ワードの仮想アドレスの範囲、タスクの記憶ワードの第１の記憶ワードもしくは複数の記憶ワードの物理アドレス、タスク・コードの符号化されたスライスのスライス名のリストなどであり得る。ＤＳパラメータは、エラー符号化方式の識別子、復号閾値／ピラー幅（たとえば、第１のデータ・エントリについて３／５）、セグメント・セキュリティ情報（たとえば、ＳＥＧ＿２）、スライス単位セキュリティ情報（たとえば、ＳＬＣ＿２）、またはタスクがどのように符号化タスク・スライスに符号化されたかに関する任意の他の情報、あるいはそれらの組合せを含むことができる。セグメントまたはスライス単位セキュリティ情報あるいはその両方は、暗号化のタイプ（有効な場合）、圧縮のタイプ（有効な場合）、ウォーターマーキング情報（有効な場合）、または整合性チェック方式（有効な場合）、あるいはそれらの組合せを含むことに留意されたい。
【０１４３】
タスク⇔サブ・タスク・マッピング情報テーブル２４６は、タスク・フィールド２５６およびサブ・タスク・フィールド２５８を含む。タスク・フィールド２５６は、分散ストレージおよびタスク・ネットワーク（ＤＳＴＮ）モジュールのメモリに記憶されたタスクを識別し、対応するサブ・タスク・フィールド２５８は、タスクがサブ・タスクを含むかどうかを示し、さらに含む場合は、サブ・タスクのいくつが順序付けられているか、およびサブ・タスクのいずれかが順序付けられているかを示す。この例では、タスク⇔サブ・タスク・マッピング情報テーブル２４６は、ＤＳＴＮモジュールのメモリに記憶された各タスク（たとえば、タスク１〜タスクｋ）についてのエントリを含む。特に、この例は、タスク１が７つのサブ・タスクを含み、タスク２がサブ・タスクを含まず、タスクｋがｒ個のサブ・タスク（ここでｒは２以上の整数）を含むことを示している。
【０１４４】
ＤＴ実行モジュールテーブル２５２は、ＤＳＴ実行ユニットＩＤフィールド２７６、ＤＴ実行モジュールＩＤフィールド２７８、およびＤＴ実行モジュール性能フィールド２８０を含む。ＤＳＴ実行ユニットＩＤフィールド２７６は、ＤＳＴＮモジュール内のＤＳＴユニットのアイデンティティを含む。ＤＴ実行モジュールＩＤフィールド２７８は、各ＤＳＴユニット内の各ＤＴ実行ユニットのアイデンティティを含む。たとえば、ＤＳＴユニット１は、３つのＤＴ実行モジュール（たとえば、１＿１、１＿２、および１＿３）を含む。ＤＴ実行性能フィールド２８０は、対応するＤＴ実行ユニットの性能のアイデンティティを含む。たとえば、ＤＴ実行モジュール１＿１は、性能Ｘを含み、Ｘは、ＭＩＰＳ性能、処理リソース（たとえば、マイクロプロセッサ、ＣＰＵ、デジタル・シグナル・プロセッサ、コプロセッサ、マイクロコントローラ、算術論理回路、または任意の他のアナログまたはデジタルあるいはその両方の処理回路、あるいはそれらの組合せの量および性能）、処理リソースの可用性、メモリ情報（たとえば、タイプ、サイズ、可用性など）、または１つもしくは複数のタスクの実行に関する任意の情報、あるいはそれらの組合せのうちの１つまたは複数を含む。
【０１４５】
これらのテーブルから、タスク分散モジュール２３２は、ＤＳＴ割り振り情報２４２を生成し、ＤＳＴ割り振り情報２４２は、データがどこに記憶されるか、データをどのようにパーティション化するか、タスクがどこに記憶されるか、タスクをどのようにパーティション化するか、どのＤＴ実行ユニットがどのデータ・パーティションに対してどの部分的タスクを実行するべきか、中間結果がどこにどのように記憶されるべきかなどを示す。複数のタスクが同じデータまたは異なるデータに対して実行されている場合、タスク分散モジュールは、そのような情報を考慮に入れてＤＳＴ割り振り情報を生成する。
【０１４６】
図３０は、タスク・フロー３１８として記憶されたデータに対してタスクを実行する分散コンピューティング・システムの具体例の図である。この例では、選択されたデータ９２は、データ２であり、選択されたタスクは、タスク１、２および３である。タスク１は、ある言語から別の言語（たとえば、人間言語またはコンピュータ言語）へのデータの翻訳を解析することに対応し、タスク２は、データ内の特定のワードまたはフレーズあるいはその両方を見つけ出すことに対応し、タスク３は、翻訳されたデータ内の特定の翻訳されたワードまたはフレーズあるいはその両方を見つけ出すことに対応する。
【０１４７】
この例では、タスク１は、７個のサブ・タスクを含み、タスク１＿１は、非ワード（non-word）を識別すること（順序付けなし）、タスク１＿２は、固有のワードを識別すること（順序付けなし）、タスク１＿３は、翻訳すること（順序付けなし）、タスク１＿４は、逆翻訳すること（タスク１＿３の後に順序付けられる）、タスク１＿５は、エラーを識別するために比較すること（タスク１＿４の後に順序付けられる）、タスク１＿６は、非ワード翻訳エラーを決定すること（タスク１＿５および１＿１の後に順序付けられる）、タスク１＿７は、正しい翻訳を決定すること（１＿５および１＿２の後に順序付けられる）である。サブ・タスクはさらに、それらが、順序付けタスク（すなわち、他のタスクの結果に依存する）であるか、それとも順序なし（すなわち、他のタスクの結果から独立している）であるかを示す。タスク２はサブ・タスクを含まず、タスク３は２つのサブ・タスクを含み、タスク３＿１は翻訳することであり、タスク３＿２は翻訳されたデータ内で特定のワードまたはフレーズを見つけ出すことである。
【０１４８】
一般に、それら３つのタスクが、翻訳精度、翻訳エラー、翻訳不整合、データ内の特定のワードまたはフレーズの出現、および翻訳されたデータ内の特定のワードまたはフレーズの出現に関するデータを分析するために、まとめて選択される。図示のように、データ９２は、翻訳されたデータ２８２へ翻訳３０６され、特定のワードまたはフレーズあるいはその両方３００について分析されて特定のワードまたはフレーズあるいはその両方のリスト２８６を作成し、非ワード３０２（たとえば参照辞書にない）について分析されて非ワードのリスト２９０を作成し、データ９２に含まれる固有のワード３１６について（すなわち、いくつの異なるワードがデータに含まれているか）分析されて固有のワードのリスト２９８が作成される。これらの各タスクは互いに独立しており、したがって所望に応じて並列に処理され得る。
【０１４９】
翻訳されたデータ２８２は、特定の翻訳されたワードまたはフレーズ３０４について分析されて（たとえばサブ・タスク３＿２）、特定の翻訳されたワードまたはフレーズのリストを作成する。翻訳されたデータ２８２は、元のデータの言語に逆翻訳３０８されて（たとえばサブ・タスク１＿４）、再翻訳されたデータ２８４を作成する。これら２つのタスクは、翻訳タスク（たとえばタスク１＿３）に依存しており、したがって翻訳タスクの後に順序付けられる必要があり、それはパイプライン順序または直列順序であり得る。次いで、再翻訳されたデータ２８４は、（一方向または他方向あるいはその両方で）適切に翻訳されなかったワードまたはフレーズあるいはその両方を見つけ出すために元のデータ９２と比較３１０されて、誤って翻訳されたワード２９４のリストを作成する。したがって、比較タスク（たとえばサブ・タスク１＿５）３１０は、翻訳３０６および再翻訳タスク３０８（たとえばサブ・タスク１＿３および１＿４）の後に順序付けられる。
【０１５０】
誤って翻訳されたワードのリスト２９４は、ワードが非ワードであるために適切に翻訳されなかったワードを識別するために非ワードのリスト２９０と比較３１２されて、非ワードによるエラーのリスト２９２を作成する。加えて、誤って翻訳されたワードのリスト２９４は、適切に翻訳された固有のワードを識別するために固有のワードのリスト２９８と比較３１４されて、正しく翻訳されたワードのリスト２９６を作成する。この比較は、適切に翻訳されなかった固有のワードを識別して、適切に翻訳されなかった固有のワードのリストを作成することもできる。ワード（たとえば、特定のワードまたはフレーズあるいはその両方、非ワード、固有のワード、翻訳されたワードまたはフレーズあるいはその両方など）の各リストは、ワードまたはフレーズあるいはその両方、それが何回使用されるか、データ内でそれが使用されるか、またはワードまたはフレーズあるいはその両方に関する要求された任意の他の情報、あるいはそれらの組合せを含み得ることに留意されたい。
【０１５１】
図３１は、図３０の例のためのデータおよびタスク・コードを記憶する分散ストレージおよびタスク処理ネットワーク（ＤＳＴＮ）モジュールの例の概略ブロック図である。図示されるように、ＤＳ符号化データ２は、符号化されたデータ・スライスとしてＤＳＴ実行ユニット１〜５のメモリを横切って記憶され（たとえば、メモリ８８に記憶され）、（タスク１の）ＤＳ符号化タスク・コード１、およびＤＳ符号化タスク３は、符号化されたタスク・スライスとしてＤＳＴ実行ユニット１〜５のメモリを横切って記憶され、（タスク２の）ＤＳ符号化タスク・コード２は、符号化されたタスク・スライスとしてＤＳＴ実行ユニット３〜７のメモリを横切って記憶される。図２９のデータ記憶情報テーブルおよびタスク記憶情報テーブルに示されるように、各データ／タスクは、それらの復号閾値／ピラー幅に関して３／５のＤＳパラメータを有し、したがって５つのＤＳＴ実行ユニットのメモリにまたがっている。
【０１５２】
図３２は、図３０の例のための分散ストレージおよびタスク（ＤＳＴ）割り振り情報２４２の例の図である。ＤＳＴ割り振り情報２４２は、データ・パーティション化情報３２０、タスク実行情報３２２、および中間結果情報３２４を含む。データ・パーティション化情報３２０は、データ識別子（ＩＤ）、データを分割するパーティションの数、各データ・パーティションについてのアドレス情報、および、ＤＳ符号化データがピラー・グルーピングからスライス・グルーピングに変換されるべきかどうかを含む。タスク実行情報３２２は、タスク識別フィールド３２６、タスク順序付けフィールド３２８、データ・パーティション・フィールドＩＤ３３０、およびデータ・パーティションごとの分散タスク処理に使用するＤＴ実行モジュールのセット３３２を有する、表形式情報を含む。中間結果情報３２４は、ＩＤフィールド３３４、対応する中間結果を処理するために割り当てられたＤＳＴ実行ユニットのＩＤ３３６、スクラッチ・パッド・ストレージ・フィールド３３８、および中間結果ストレージ・フィールド３４０を有する、表形式情報を含む。
【０１５３】
タスク１〜３がデータ２に対して分散されて実行される図３０の例に引き続き、データ・パーティション化情報はデータ２のＩＤを含む。加えて、タスク分散モジュールは、ＤＳ符号化データ２が、分散コンピューティングに対して適切なフォーマットである（たとえば、スライス・グルーピングとして記憶されている）かどうかを決定する。そうでない場合、タスク分散モジュールは、ＤＳ符号化データ２のフォーマットがピラー・グルーピング・フォーマットからスライス・グルーピング・フォーマットに変更される必要があることを示し、変更がＤＳＴＮモジュールによって行われることになる。加えて、タスク分散モジュールは、データを分割するパーティションの数（たとえば、２＿１〜２＿ｚ）、および各パーティションについてのアドレス指定情報を決定する。
【０１５４】
タスク分散モジュールは、実行されるべき各サブ・タスクに対するタスク実行情報部におけるエントリを生成する。たとえば、タスク１＿１（たとえば、データ上の非ワードを識別する）は、タスク順序付けを持たず（すなわち、他のサブ・タスクの結果から独立し）、ＤＴ実行モジュール１＿１、２＿１、３＿１、４＿１、および５＿１によってデータ・パーティション２＿１〜２＿ｚに対して実行されることになる。たとえば、ＤＴ実行モジュール１＿１、２＿１、３＿１、４＿１、および５＿１は、データ・パーティション２＿１〜２＿ｚにおいて非ワードを検索して、タスク１＿１中間結果（Ｒ１−１、すなわち非ワードのリスト）を作成する。タスク１＿２（たとえば、固有のワード識別する）は、タスク１＿１と同様のタスク実行情報を有し、タスク１＿２中間結果（Ｒ１−２、すなわち固有のワードのリスト）を作成する。
【０１５５】
タスク１＿３（たとえば、翻訳する）は、順序付けられていない（すなわち独立した）タスク実行情報を含み、ＤＴ実行モジュール１＿１、２＿１、３＿１、４＿１、および５＿１にデータ・パーティション２＿１〜２＿４を翻訳させ、ＤＴ実行モジュール１＿２、２＿２、３＿２、４＿２、および５＿２にデータ・パーティション２＿５〜２＿ｚを翻訳させて、タスク１＿３中間結果（Ｒ１−３、すなわち翻訳されたデータ）を作成する。この例では、データ・パーティションがグループ化され、異なるセットのＤＴ実行モジュールが、各データ・パーティション・グループに対して分散サブ・タスク（またはタスク）を実行し、それにより、さらなる並列処理が可能になる。
【０１５６】
タスク１＿４（たとえば、逆翻訳する）は、タスク１＿３の後に順序付けられ、タスク１＿３の中間結果（たとえばＲ１−３＿１）（たとえば翻訳されたデータ）に対して実行されることになる。ＤＴ実行モジュール１＿１、２＿１、３＿１、４＿１、および５＿１は、タスク１＿３中間結果パーティションＲ１−３＿１〜Ｒ１−３＿４を逆翻訳するように割り振られ、ＤＴ実行モジュール１＿２、２＿２、６＿１、７＿１、および７＿２は、タスク１＿３中間結果パーティションＲ１−３＿５〜Ｒ１−３＿ｚを逆翻訳するように割り振られて、タスク１＿４中間結果（Ｒ１−４、すなわち逆翻訳されたデータ）を作成する。
【０１５７】
タスク１＿５（たとえば、データと翻訳されたデータを比較して翻訳エラーを識別する）は、タスク１＿４の後に順序付けられ、タスク１＿４の中間結果（Ｒ４−１）およびデータに対して実行されることになる。ＤＴ実行モジュール１＿１、２＿１、３＿１、４＿１、および５＿１は、データ・パーティション（２＿１〜２＿ｚ）をタスク１＿４中間結果パーティションＲ１−４＿１〜Ｒ１−４＿ｚのパーティションと比較して、タスク１＿５中間結果（Ｒ１−５、すなわち誤って翻訳されたワードのリスト）を作成するように割り振られる。
【０１５８】
タスク１＿６（たとえば、非ワード翻訳エラーを決定する）は、タスク１＿１および１＿５の後に順序付けられ、タスク１＿１および１＿５の中間結果（Ｒ１−１およびＲ１−５）に対して実行されることになる。ＤＴ実行モジュール１＿１、２＿１、３＿１、４＿１、および５＿１は、タスク１＿１中間結果（Ｒ１−１＿１〜Ｒ１−１＿ｚ）のパーティションをタスク１＿５中間結果パーティション（Ｒ１−５＿１〜Ｒ１−５＿ｚ）のパーティションと比較して、タスク１＿６中間結果（Ｒ１−６、すなわち非ワードによる翻訳エラーのリスト）を作成するように割り振られる。
【０１５９】
タスク１＿７（たとえば、正しく翻訳されたワードを決定する）は、タスク１＿２および１＿５の後に順序付けられ、タスク１＿２および１＿５の中間結果（Ｒ１−１およびＲ１−５）に対して実行されることになる。ＤＴ実行モジュール１＿２、２＿２、３＿２、４＿２、および５＿２は、タスク１＿２中間結果（Ｒ１−２＿１〜Ｒ１−２＿ｚ）のパーティションをタスク１＿５中間結果パーティション（Ｒ１−５＿１〜Ｒ１−５＿ｚ）のパーティションと比較して、タスク１＿７中間結果（Ｒ１−７、すなわち正しく翻訳されたワードのリスト）を作成するように割り振られる。
【０１６０】
タスク２（たとえば、特定のワードまたはフレーズあるいはその両方を見つけ出す）は、タスク順序付けを持たず（すなわち、他のサブ・タスクの結果から独立し）、ＤＴ実行モジュール３＿１、４＿１、５＿１、６＿１、および７＿１によってデータ・パーティション２＿１〜２＿ｚに対して実行されることになる。たとえば、ＤＴ実行モジュール３＿１、４＿１、５＿１、６＿１、および７＿１は、データ・パーティション２＿１〜２＿ｚにおいて特定のワードまたはフレーズあるいはその両方を検索して、タスク２中間結果（Ｒ２、すなわち特定のワードまたはフレーズあるいはその両方のリスト）を作成する。
【０１６１】
タスク３＿２（たとえば、特定の翻訳されたワードまたはフレーズあるいはその両方を見つけ出す）は、タスク１＿３（たとえば、翻訳する）の後に順序付けられ、ＤＴ実行モジュール１＿２、２＿２、３＿２、４＿２、および５＿２によってパーティションＲ１−３＿１〜Ｒ１−３＿ｚに対して実行されることになる。たとえば、ＤＴ実行モジュール１＿２、２＿２、３＿２、４＿２、および５＿２は、翻訳されたデータのパーティション（Ｒ１−３＿１〜Ｒ１−３＿ｚ）において特定の翻訳されたワードまたはフレーズあるいはその両方を検索して、タスク３＿２中間結果（Ｒ３−２、すなわち特定の翻訳されたワードまたはフレーズあるいはその両方のリスト）を作成する。
【０１６２】
各タスクについて、中間結果情報は、どのＤＳＴユニットがタスクの実行の監督を担っているかを示し、必要な場合、割り振られたＤＴ実行ユニットのセットによって生成された部分的結果の処理を示す。加えて、中間結果情報は、タスクのためのスクラッチパッド・メモリ、および対応する中間結果がどこに記憶されるべきかを示す。たとえば、中間結果Ｒ１−１（タスク１＿１の中間結果）に関して、ＤＳＴユニット１は、タスク１＿１の実行の監督を担い、ＤＳＴ実行ユニット１〜５のメモリに記憶される符号化中間結果スライスとして中間結果のストレージを調整する。一般に、スクラッチ・パッドは、非ＤＳ符号化中間結果の記憶向けであり、中間結果ストレージは、ＤＳ符号化中間結果の記憶向けである。
【０１６３】
図３３〜図３８は、図３０の例を実行する分散ストレージおよびタスク・ネットワーク（ＤＳＴＮ）モジュールの概略ブロック図である。図３３では、ＤＳＴＮモジュールが、データ９２にアクセスし、分散ストレージおよびタスク・ネットワーク（ＤＳＴ）割り振り情報に従って複数のパーティション１〜ｚにパーティション化する。各データ・パーティションについて、ＤＳＴＮは、ＤＳＴ割り振り情報に従ってタスク（たとえば、データ・パーティション内の非ワード（すなわち参照辞書にない）を識別する）を実行するために、そのＤＴ（分散タスク）実行モジュール９０のセットを識別する。データ・パーティションごとに、ＤＴ実行モジュール９０のセットは、同じ、異なる、またはその組合せであり得る（たとえば、いくつかのデータ・パーティションが同じセットを使用する一方、他のデータ・パーティションは異なるセットを使用する）。
【０１６４】
第１のデータ・パーティションについて、第１のセットのＤＴ実行モジュール（たとえば、図３２のＤＳＴ割り振り情報における１＿１、２＿１、３＿１、４＿１、および５＿１）が、タスク１＿１を実行して、第１のデータ・パーティションで見つけ出された非ワードの第１の部分的結果１０２を作成する。第２のセットのＤＴ実行モジュール（たとえば、図３２のＤＳＴ割り振り情報における１＿１、２＿１、３＿１、４＿１、および５＿１）が、タスク１＿１を実行して、第２のデータ・パーティションで見つけ出された非ワードの第２の部分的結果１０２を作成する。（ＤＳＴ割り振り情報におけるような）ＤＴ実行モジュールのセットがデータに対してタスク１＿１を行い、これは、ＤＴ実行モジュールの「ｚ」セットが「第ｚ」のデータ・パーティションに対してタスク１＿１を実行して「第ｚ」のデータ・パーティションで見つけ出された非ワードの「第ｚ」の部分的結果１０２を作成するまで行われる。
【０１６５】
図３２のＤＳＴ割り振り情報に示されるように、ＤＳＴ実行ユニット１は、第１〜「第ｚ」の部分的結果を処理して、データ内で見つけ出された非ワードのリストである第１の中間結果（Ｒ１−１）を作成するように割り当てられる。たとえば、各セットのＤＴ実行モジュール９０は、（ＤＳＴ割り振りで識別されるまたはＤＳＴ実行ユニット１により決定され得る）ＤＳＴ実行ユニット１のスクラッチパッド・メモリにそれぞれの部分的結果を記憶する。ＤＳＴ実行１の処理モジュールは、第１〜「第ｚ」の部分的結果を集約して第１の中間結果（たとえばＲ１＿１）を作成するように従事する。処理モジュールは、スクラッチパッド・メモリまたはＤＳＴ実行ユニット１のメモリの別の部分に、非ＤＳエラー符号化データとして第１の中間結果を記憶する。
【０１６６】
ＤＳＴ実行ユニット１は、そのＤＳＴクライアント・モジュールを、第１の中間結果（たとえば非ワードのリスト）をスライス・グルーピング・ベースでＤＳエラー符号化することに従事させる。符号化を開始するために、ＤＳＴクライアント・モジュールは、非ワードのリストがパーティション化するのに十分なサイズ（たとえば、テラバイトより大きい）かどうかを決定する。はいの場合、それは、第１の中間結果（Ｒ１−１）をパーティション化して複数のパーティション（たとえば、Ｒ１−１＿１〜Ｒ１−１＿ｍ）にする。第１の中間結果がパーティション化するのに十分なサイズでない場合、それはパーティション化されない。
【０１６７】
第１の中間結果の各パーティションに対してまたは第１の中間結果に対して、ＤＳＴクライアント・モジュールは、データのＤＳエラー符号化パラメータ（たとえば、３／５の復号閾値／ピラー幅比を含むデータ２のＤＳパラメータ）を使用してスライス・グルーピングを作成する。スライス・グルーピングは、中間結果メモリ（たとえば、ＤＳＴ実行ユニット１〜５のメモリにおける割り振られたメモリ）に記憶される。
【０１６８】
図３４では、ＤＳＴＮモジュールは、データ９２に対してタスク１＿２（たとえば、固有のワードを見つけ出す）を実行している。開始するために、ＤＳＴＮモジュールは、データ９２にアクセスし、ＤＳＴ割り振り情報に従ってそれを複数のパーティション１〜ｚにパーティション化し、あるいは、パーティション化が同じ場合はタスク１＿１のデータ・パーティションを使用することができる。各データ・パーティションについて、ＤＳＴＮは、ＤＳＴ割り振り情報に従ってタスク１＿２を実行するために、そのＤＴ実行モジュールのセットを識別する。データ・パーティションごとに、ＤＴ実行モジュールのセットは、同じ、異なる、またはその組合せであり得る。データ・パーティションに対して、割り振られたセットのＤＴ実行モジュールは、タスク１＿２を実行してデータ・パーティションで見つけ出された固有のワードの部分的結果（たとえば、第１〜「第ｚ」）を作成する。
【０１６９】
図３２のＤＳＴ割り振り情報に示されるように、ＤＳＴ実行ユニット１は、タスク１＿２の第１〜「第ｚ」の部分的結果１０２を処理して、データ９２内で見つけ出された固有のワードのリストである第２の中間結果（Ｒ１−２）を作成するように割り当てられる。ＤＳＴ実行１の処理モジュールは、固有のワードの第１〜「第ｚ」の部分的結果を集約して第２の中間結果を作成するように従事する。処理モジュールは、スクラッチパッド・メモリ、またはＤＳＴ実行ユニット１のメモリの別の部分に、非ＤＳエラー符号化データとして第２の中間結果を記憶する。
【０１７０】
ＤＳＴ実行ユニット１は、そのＤＳＴクライアント・モジュールを、第２の中間結果（たとえば非ワードのリスト）をスライス・グルーピング・ベースでＤＳエラー符号化することに従事させる。符号化を開始するために、ＤＳＴクライアント・モジュールは、固有のワードのリストがパーティション化するのに十分なサイズ（たとえば、テラバイトより大きい）かどうかを決定する。はいの場合、それは、第２の中間結果（Ｒ１−２）をパーティション化して複数のパーティション（たとえば、Ｒ１−２＿１〜Ｒ１−２＿ｍ）にする。第２の中間結果がパーティション化するのに十分なサイズでない場合、それはパーティション化されない。
【０１７１】
第２の中間結果の各パーティションに対してまたは第２の中間結果に対して、ＤＳＴクライアント・モジュールは、データのＤＳエラー符号化パラメータ（たとえば、３／５の復号閾値／ピラー幅比を含むデータ２のＤＳパラメータ）を使用してスライス・グルーピングを作成する。スライス・グルーピングは、中間結果メモリ（たとえば、ＤＳＴ実行ユニット１〜５のメモリにおける割り振られたメモリ）に記憶される。
【０１７２】
図３５では、ＤＳＴＮモジュールは、データ９２に対してタスク１＿３（たとえば、翻訳する）を実行している。開始するために、ＤＳＴＮモジュールは、データ９２にアクセスし、ＤＳＴ割り振り情報に従ってそれを複数のパーティション１〜ｚにパーティション化し、あるいは、パーティション化が同じ場合はタスク１＿１のデータ・パーティションを使用することができる。各データ・パーティションについて、ＤＳＴＮは、ＤＳＴ割り振り情報に従ってタスク１＿３を実行するために、そのＤＴ実行モジュールのセットを識別する（たとえば、ＤＴ実行モジュール１＿１、２＿１、３＿１、４＿１、および５＿１は、データ・パーティション２＿１〜２＿４を翻訳し、ＤＴ実行モジュール１＿２、２＿２、３＿２、４＿２、および５＿２は、データ・パーティション２＿５〜２＿ｚを翻訳する）。データ・パーティションに対して、割り振られたセットのＤＴ実行モジュール９０は、翻訳されたデータの部分的結果１０２（たとえば、第１〜第ｚ）を作成する。
【０１７３】
図３２のＤＳＴ割り振り情報に示されるように、ＤＳＴ実行ユニット２は、タスク１＿３の第１〜「第ｚ」の部分的結果を処理して、翻訳されたデータである第３の中間結果（Ｒ１−３）を作成するように割り当てられる。ＤＳＴ実行２の処理モジュールは、翻訳されたデータの第１〜「第ｚ」の部分的結果を集約して第３の中間結果を作成するように従事する。処理モジュールは、スクラッチパッド・メモリ、またはＤＳＴ実行ユニット２のメモリの別の部分に、非ＤＳエラー符号化データとして第３の中間結果を記憶する。
【０１７４】
ＤＳＴ実行ユニット２は、そのＤＳＴクライアント・モジュールを、第３の中間結果（たとえば翻訳されたデータ）をスライス・グルーピング・ベースでＤＳエラー符号化することに従事させる。符号化を開始するために、ＤＳＴクライアント・モジュールは、第３の中間結果（Ｒ１−３）をパーティション化して複数のパーティション（たとえば、Ｒ１−３＿１〜Ｒ１−３＿ｙ）にする。第３の中間結果の各パーティションに対して、ＤＳＴクライアント・モジュールは、データのＤＳエラー符号化パラメータ（たとえば、３／５の復号閾値／ピラー幅比を含むデータ２のＤＳパラメータ）を使用してスライス・グルーピングを作成する。スライス・グルーピングは、中間結果メモリ（たとえば、ＤＳＴ割り振り情報においてＤＳＴ実行ユニット２〜６のメモリにおける割り振られたメモリ）に記憶される。
【０１７５】
図３５にさらに示されるように、ＤＳＴＮモジュールは、第３の中間結果の翻訳されたデータに対してタスク１＿４（たとえば、再翻訳する）を実行している。開始するために、ＤＳＴＮモジュールは、（スクラッチパッド・メモリまたは中間結果メモリにおける）翻訳されたデータにアクセスし（それを復号し）、ＤＳＴ割り振り情報に従ってそれを複数のパーティションにパーティション化する。第３の中間結果の各パーティションについて、ＤＳＴＮは、ＤＳＴ割り振り情報に従ってタスク１＿４を実行するために、そのＤＴ実行モジュール９０のセットを識別する（たとえば、ＤＴ実行モジュール１＿１、２＿１、３＿１、４＿１、および５＿１は、パーティションＲ１−３＿１〜Ｒ１−３＿４を逆翻訳するように割り振られ、ＤＴ実行モジュール１＿２、２＿２、６＿１、７＿１、および７＿２は、パーティションＲ１−３＿５〜Ｒ１−３＿ｚを逆翻訳するように割り振られる）。データ・パーティションに対して、割り振られたセットのＤＴ実行モジュールは、タスク１＿４を実行して、再翻訳されたデータの部分的結果１０２（たとえば、第１〜第ｚ）を作成する。
【０１７６】
図３２のＤＳＴ割り振り情報に示されるように、ＤＳＴ実行ユニット３は、タスク１＿４の第１〜「第ｚ」の部分的結果を処理して、再翻訳されたデータである第４の中間結果（Ｒ１−４）を作成するように割り当てられる。ＤＳＴ実行３の処理モジュールは、翻訳されたデータの第１〜「第ｚ」の部分的結果を集約して第４の中間結果を作成するように従事する。処理モジュールは、スクラッチパッド・メモリ、またはＤＳＴ実行ユニット３のメモリの別の部分に、非ＤＳエラー符号化データとして第４の中間結果を記憶する。
【０１７７】
ＤＳＴ実行ユニット３は、そのＤＳＴクライアント・モジュールを、第４の中間結果（たとえば再翻訳されたデータ）をスライス・グルーピング・ベースでＤＳエラー符号化することに従事させる。符号化を開始するために、ＤＳＴクライアント・モジュールは、第４の中間結果（Ｒ１−４）をパーティション化して複数のパーティション（たとえば、Ｒ１−４＿１〜Ｒ１−４＿ｚ）にする。第４の中間結果の各パーティションに対して、ＤＳＴクライアント・モジュールは、データのＤＳエラー符号化パラメータ（たとえば、３／５の復号閾値／ピラー幅比を含むデータ２のＤＳパラメータ）を使用してスライス・グルーピングを作成する。スライス・グルーピングは、中間結果メモリ（たとえば、ＤＳＴ割り振り情報においてＤＳＴ実行ユニット３〜７のメモリにおける割り振られたメモリ）に記憶される。
【０１７８】
図３６では、分散ストレージおよびタスク・ネットワーク（ＤＳＴＮ）モジュールは、図３５のデータ９２および再翻訳されたデータに対してタスク１＿５（たとえば、比較する）を実行している。開始するために、ＤＳＴＮモジュールは、データ９２にアクセスし、ＤＳＴ割り振り情報に従ってそれを複数のパーティションにパーティション化し、あるいは、パーティション化が同じ場合はタスク１＿１のデータ・パーティションを使用することができる。ＤＳＴＮモジュールはまた、スクラッチパッド・メモリまたは中間結果メモリにおける再翻訳されたデータにアクセスし、それを復号し、ＤＳＴ割り振り情報に従ってそれを複数のパーティションにパーティション化する。再翻訳されたデータのパーティションの数は、データのパーティションの数に対応する。
【０１７９】
パーティションの各ペア（たとえば、データ・パーティション１および再翻訳されたデータ・パーティション１）について、ＤＳＴＮは、ＤＳＴ割り振り情報に従ってタスク１＿５を実行するために、そのＤＴ実行モジュール９０のセットを識別する（たとえば、ＤＴ実行モジュール１＿１、２＿１、３＿１、４＿１、および５＿１）。パーティションの各ペアに対して、割り振られたセットのＤＴ実行モジュールは、タスク１＿５を実行して、誤って翻訳されたワードまたはフレーズあるいはその両方のリストの部分的結果１０２（たとえば、第１〜「第ｚ」）を作成する。
【０１８０】
図３２のＤＳＴ割り振り情報に示されるように、ＤＳＴ実行ユニット１は、タスク１＿５の第１〜「第ｚ」の部分的結果を処理して、誤って翻訳されたワードまたはフレーズあるいはその両方のリストである第５の中間結果（Ｒ１−５）を作成するように割り当てられる。特に、ＤＳＴ実行１の処理モジュールは、誤って翻訳されたワードまたはフレーズあるいはその両方のリストの第１〜「第ｚ」の部分的結果を集約して第５の中間結果を作成するように従事する。処理モジュールは、スクラッチパッド・メモリ、またはＤＳＴ実行ユニット１のメモリの別の部分に、非ＤＳエラー符号化データとして第５の中間結果を記憶する。
【０１８１】
ＤＳＴ実行ユニット１は、そのＤＳＴクライアント・モジュールを、第５の中間結果をスライス・グルーピング・ベースでＤＳエラー符号化することに従事させる。符号化を開始するために、ＤＳＴクライアント・モジュールは、第５の中間結果（Ｒ１−５）をパーティション化して複数のパーティション（たとえば、Ｒ１−５＿１〜Ｒ１−５＿ｚ）にする。第５の中間結果の各パーティションに対して、ＤＳＴクライアント・モジュールは、データのＤＳエラー符号化パラメータ（たとえば、３／５の復号閾値／ピラー幅比を含むデータ２のＤＳパラメータ）を使用してスライス・グルーピングを作成する。スライス・グルーピングは、中間結果メモリ（たとえば、ＤＳＴ割り振り情報においてＤＳＴ実行ユニット１〜５のメモリにおける割り振られたメモリ）に記憶される。
【０１８２】
図３６にさらに示されるように、ＤＳＴＮモジュールは、誤って翻訳されたワードまたはフレーズあるいはその両方のリスト（たとえば、第５の中間結果Ｒ１−５）、および非ワードのリスト（たとえば、第１の中間結果Ｒ１−１）に対して、タスク１＿６（たとえば、非ワードによる翻訳エラー）を実行している。開始するために、ＤＳＴＮモジュールは、リストにアクセスし、それらを対応する数のパーティションにパーティション化する。
【０１８３】
パーティションの各ペア（たとえば、パーティションＲ１−１＿１およびパーティションＲ１−５＿１）について、ＤＳＴＮは、ＤＳＴ割り振り情報に従ってタスク１＿６を実行するために、そのＤＴ実行モジュール９０のセットを識別する（たとえば、ＤＴ実行モジュール１＿１、２＿１、３＿１、４＿１、および５＿１）。パーティションの各ペアに対して、割り振られたセットのＤＴ実行モジュールは、タスク１＿６を実行して、誤って翻訳されたワードまたはフレーズあるいはその両方のリストの部分的結果１０２（たとえば、第１〜「第ｚ」）を作成する。
【０１８４】
図３２のＤＳＴ割り振り情報に示されるように、ＤＳＴ実行ユニット２は、タスク１＿６の第１〜「第ｚ」の部分的結果を処理して、非ワードのため誤って翻訳されたワードまたはフレーズあるいはその両方のリストである第６の中間結果（Ｒ１−６）を作成するように割り当てられる。特に、ＤＳＴ実行２の処理モジュールは、非ワードのため誤って翻訳されたワードまたはフレーズあるいはその両方のリストの第１〜「第ｚ」の部分的結果を集約して第６の中間結果を作成するように従事する。処理モジュールは、スクラッチパッド・メモリ、またはＤＳＴ実行ユニット２のメモリの別の部分に、非ＤＳエラー符号化データとして第６の中間結果を記憶する。
【０１８５】
ＤＳＴ実行ユニット２は、そのＤＳＴクライアント・モジュールを、第６の中間結果をスライス・グルーピング・ベースでＤＳエラー符号化することに従事させる。符号化を開始するために、ＤＳＴクライアント・モジュールは、第６の中間結果（Ｒ１−６）をパーティション化して複数のパーティション（たとえば、Ｒ１−６＿１〜Ｒ１−６＿ｚ）にする。第６の中間結果の各パーティションに対して、ＤＳＴクライアント・モジュールは、データのＤＳエラー符号化パラメータ（たとえば、３／５の復号閾値／ピラー幅比を含むデータ２のＤＳパラメータ）を使用してスライス・グルーピングを作成する。スライス・グルーピングは、中間結果メモリ（たとえば、ＤＳＴ割り振り情報においてＤＳＴ実行ユニット２〜６のメモリにおける割り振られたメモリ）に記憶される。
【０１８６】
図３６にさらに示されるように、ＤＳＴＮモジュールは、誤って翻訳されたワードまたはフレーズあるいはその両方のリスト（たとえば、第５の中間結果Ｒ１−５）、および固有のワードのリスト（たとえば、第２の中間結果Ｒ１−２）に対して、タスク１＿７（たとえば、正しく翻訳されたワードまたはフレーズあるいはその両方）を実行している。開始するために、ＤＳＴＮモジュールは、リストにアクセスし、それらを対応する数のパーティションにパーティション化する。
【０１８７】
パーティションの各ペア（たとえば、パーティションＲ１−２＿１およびパーティションＲ１−５＿１）について、ＤＳＴＮは、ＤＳＴ割り振り情報に従ってタスク１＿７を実行するために、そのＤＴ実行モジュール９０のセットを識別する（たとえば、ＤＴ実行モジュール１＿２、２＿２、３＿２、４＿２、および５＿２）。パーティションの各ペアに対して、割り振られたセットのＤＴ実行モジュールは、タスク１＿７を実行して、正しく翻訳されたワードまたはフレーズあるいはその両方のリストの部分的結果１０２（たとえば、第１〜「第ｚ」）を作成する。
【０１８８】
図３２のＤＳＴ割り振り情報に示されるように、ＤＳＴ実行ユニット３は、タスク１＿７の第１〜「第ｚ」の部分的結果を処理して、正しく翻訳されたワードまたはフレーズあるいはその両方のリストである第７の中間結果（Ｒ１−７）を作成するように割り当てられる。特に、ＤＳＴ実行３の処理モジュールは、正しく翻訳されたワードまたはフレーズあるいはその両方のリストの第１〜「第ｚ」の部分的結果を集約して第７の中間結果を作成するように従事する。処理モジュールは、スクラッチパッド・メモリ、またはＤＳＴ実行ユニット３のメモリの別の部分に、非ＤＳエラー符号化データとして第７の中間結果を記憶する。
【０１８９】
ＤＳＴ実行ユニット３は、そのＤＳＴクライアント・モジュールを、第７の中間結果をスライス・グルーピング・ベースでＤＳエラー符号化することに従事させる。符号化を開始するために、ＤＳＴクライアント・モジュールは、第７の中間結果（Ｒ１−７）をパーティション化して複数のパーティション（たとえば、Ｒ１−７＿１〜Ｒ１−７＿ｚ）にする。第７の中間結果の各パーティションに対して、ＤＳＴクライアント・モジュールは、データのＤＳエラー符号化パラメータ（たとえば、３／５の復号閾値／ピラー幅比を含むデータ２のＤＳパラメータ）を使用してスライス・グルーピングを作成する。スライス・グルーピングは、中間結果メモリ（たとえば、ＤＳＴ割り振り情報においてＤＳＴ実行ユニット３〜７のメモリにおける割り振られたメモリ）に記憶される。
【０１９０】
図３７では、分散ストレージおよびタスク・ネットワーク（ＤＳＴＮ）モジュールは、データ９２に対してタスク２（たとえば、特定のワードまたはフレーズあるいはその両方を見つけ出す）を行っている。開始するために、ＤＳＴＮモジュールは、データにアクセスし、ＤＳＴ割り振り情報に従ってそれを複数のパーティション１〜ｚにパーティション化し、あるいは、パーティション化が同じ場合はタスク１＿１のデータ・パーティションを使用することができる。各データ・パーティションについて、ＤＳＴＮは、ＤＳＴ割り振り情報に従ってタスク２を実行するために、そのＤＴ実行モジュールのセットを識別する。データ・パーティションごとに、ＤＴ実行モジュールのセットは、同じ、異なる、またはその組合せであり得る。データ・パーティションに対して、割り振られたセットのＤＴ実行モジュールは、タスク２を実行して、データ・パーティションで見つけ出された特定のワードまたはフレーズあるいはその両方の部分的結果１０２（たとえば、第１〜第ｚ）を作成する。
【０１９１】
図３２のＤＳＴ割り振り情報に示されるように、ＤＳＴ実行ユニット７は、タスク２の第１〜「第ｚ」の部分的結果を処理して、データ内で見つけ出された特定のワードまたはフレーズあるいはその両方のリストであるタスク２中間結果（Ｒ２）を作成するように割り当てられる。ＤＳＴ実行７の処理モジュールは、特定のワードまたはフレーズあるいはその両方の第１〜「第ｚ」の部分的結果を集約してタスク２中間結果を作成するように従事する。処理モジュールは、スクラッチパッド・メモリ、またはＤＳＴ実行ユニット７のメモリの別の部分に、非ＤＳエラー符号化データとしてタスク２中間結果を記憶する。
【０１９２】
ＤＳＴ実行ユニット７は、そのＤＳＴクライアント・モジュールを、タスク２中間結果をスライス・グルーピング・ベースでＤＳエラー符号化することに従事させる。符号化を開始するために、ＤＳＴクライアント・モジュールは、特定のワードまたはフレーズあるいはその両方のリストがパーティション化するのに十分なサイズ（たとえば、テラバイトより大きい）かどうかを決定する。はいの場合、それは、タスク２中間結果（Ｒ２）をパーティション化して複数のパーティション（たとえば、Ｒ２＿１〜Ｒ２＿ｍ）にする。タスク２中間結果がパーティション化するのに十分なサイズでない場合、それはパーティション化されない。
【０１９３】
タスク２中間結果の各パーティションに対してまたはタスク２中間結果に対して、ＤＳＴクライアント・モジュールは、データのＤＳエラー符号化パラメータ（たとえば、３／５の復号閾値／ピラー幅比を含むデータ２のＤＳパラメータ）を使用してスライス・グルーピングを作成する。スライス・グルーピングは、中間結果メモリ（たとえば、ＤＳＴ実行ユニット１〜４および７のメモリにおける割り振られたメモリ）に記憶される。
【０１９４】
図３８では、分散ストレージおよびタスク・ネットワーク（ＤＳＴＮ）モジュールは、翻訳されたデータ（Ｒ１−３）に対してタスク３（たとえば、特定の翻訳されたワードまたはフレーズあるいはその両方を見つけ出す）を実行している。開始するために、ＤＳＴＮモジュールは、（スクラッチパッド・メモリまたは中間結果メモリにおける）翻訳されたデータにアクセスし（それを復号し）、ＤＳＴ割り振り情報に従ってそれを複数のパーティションにパーティション化する。各パーティションについて、ＤＳＴＮは、ＤＳＴ割り振り情報に従ってタスク３を実行するために、そのＤＴ実行モジュールのセットを識別する。データ・パーティションごとに、ＤＴ実行モジュールのセットは、同じ、異なる、またはその組合せであり得る。データ・パーティションに対して、割り振られたセットのＤＴ実行モジュール９０は、タスク３を実行して、データ・パーティションで見つけ出された特定の翻訳されたワードまたはフレーズあるいはその両方の部分的結果１０２（たとえば、第１〜「第ｚ」）を作成する。
【０１９５】
図３２のＤＳＴ割り振り情報に示されるように、ＤＳＴ実行ユニット５は、タスク３の第１〜「第ｚ」の部分的結果を処理して、翻訳されたデータ内で見つけ出された特定のワードまたはフレーズあるいはその両方のリストであるタスク３中間結果（Ｒ３）を作成するように割り当てられる。特に、ＤＳＴ実行５の処理モジュールは、特定の翻訳されたワードまたはフレーズあるいはその両方の第１〜「第ｚ」の部分的結果を集約してタスク３中間結果を作成するように従事する。処理モジュールは、スクラッチパッド・メモリ、またはＤＳＴ実行ユニット７のメモリの別の部分に、非ＤＳエラー符号化データとしてタスク３中間結果を記憶する。
【０１９６】
ＤＳＴ実行ユニット５は、そのＤＳＴクライアント・モジュールを、タスク３中間結果をスライス・グルーピング・ベースでＤＳエラー符号化することに従事させる。符号化を開始するために、ＤＳＴクライアント・モジュールは、特定の翻訳されたワードまたはフレーズあるいはその両方のリストがパーティション化するのに十分なサイズ（たとえば、テラバイトより大きい）かどうかを決定する。はいの場合、それは、タスク３中間結果（Ｒ３）をパーティション化して複数のパーティション（たとえば、Ｒ３＿１〜Ｒ３＿ｍ）にする。タスク３中間結果がパーティション化するのに十分なサイズでない場合、それはパーティション化されない。
【０１９７】
タスク３中間結果の各パーティションに対してまたはタスク３中間結果に対して、ＤＳＴクライアント・モジュールは、データのＤＳエラー符号化パラメータ（たとえば、３／５の復号閾値／ピラー幅比を含むデータ２のＤＳパラメータ）を使用してスライス・グルーピングを作成する。スライス・グルーピングは、中間結果メモリ（たとえば、ＤＳＴ実行ユニット１〜４、５、および７のメモリにおける割り振られたメモリ）に記憶される。
【０１９８】
図３９は、図３０の例のための結果情報を最終結果１０４として組み合わせる例の図である。この例では、結果情報は、データ内で見つけ出された特定のワードまたはフレーズあるいはその両方のリスト（タスク２中間結果）、データ内で見つけ出された特定の翻訳されたワードまたはフレーズあるいはその両方のリスト（タスク３中間結果）、データ内で見つけ出された非ワードのリスト（タスク１の第１の中間結果Ｒ１−１）、データ内で見つけ出された固有のワードのリスト（タスク１の第２の中間結果Ｒ１−２）、非ワードによる翻訳エラーのリスト（タスク１の第６の中間結果Ｒ１−６）、および正しく翻訳されたワードまたはフレーズあるいはその両方のリスト（タスク１の第７の中間結果Ｒ１−７）を含む。タスク分散モジュールは、結果情報を結果１０４として要求元ＤＳＴクライアント・モジュールに提供する。
【０１９９】
図４０は、散在ストレージ・ネットワーク（ＤＳＮ）の実施形態の概略ブロック図であり、散在ストレージ・ネットワーク（ＤＳＮ）は、少なくとも２つのユーザ・デバイス１〜２、複数の分散ストレージおよびタスク（ＤＳＴ）処理ユニット１〜Ｄ、ならびに図１の分散ストレージおよびタスク・ネットワーク（ＤＳＴＮ）モジュール２２を含む。ＤＳＮは、図１のネットワーク２４をさらに含むことができる。ユーザ・デバイス１〜２は、図１のユーザ・デバイス１２を利用して実装され得る。ＤＳＴ処理ユニット１〜Ｄは、図１のＤＳＴ処理ユニット１６を利用して実装され得る。
【０２００】
ＤＳＮは、データを記憶されたデータとして記憶し、記憶されたデータを取り出してデータを再現するように機能する。データを記憶する動作の例として、ユーザ・デバイス１は、記憶のためのデータ・オブジェクトの識別子に基づいて、ＤＳＴ処理ユニット１〜ＤのうちのＤＳＴ処理ユニットを選択する。その選択は、アドレス空間マッピング、およびデータ・オブジェクトの識別子に対して確定関数を実行することのうちの１つまたは複数に基づくことができる。たとえば、データ・オブジェクトの識別子がデータ・オブジェクト２−１を示し、アドレス・マッピングが、データ・オブジェクト２−１がＤＳＴ処理ユニット２と関係付けられることを示すとき、ユーザ・デバイス１がＤＳＴ処理ユニット２を選択する。別の例として、別のデータ・オブジェクト１−１の識別子に確定関数を適用した結果が、ＤＳＴ処理ユニット１の識別子を含むインジケータをもたらすとき、ユーザ・デバイス１がＤＳＴ処理ユニット２を選択する。
【０２０１】
ＤＳＴ処理ユニット２が選択されると、ユーザ・デバイス１は、データ・アクセス・メッセージ２をＤＳＴ処理ユニット２へ発行し、ここで、データ・アクセス・メッセージ２はデータ記憶要求を含む。データ記憶要求は、データ・オブジェクト２−１を含む。データ・オブジェクト２−１を受け取ると、ＤＳＴ処理ユニット２は、アドレス空間マッピングおよび使用可能な容量レベルに従って、ＤＳＴ処理ユニット２のローカル・メモリ内にデータ・オブジェクト２−１をキャッシュする。たとえば、使用可能な容量レベルが、最小の使用可能な容量閾値レベルと比べて好ましく（たとえば大きく）、アドレス空間マッピングが、データ・オブジェクト２−１がＤＳＴ処理ユニット２と関係付けられることを示すとき、ＤＳＴ処理ユニット２が、データ・オブジェクト２−１をキャッシュする。
【０２０２】
ＤＳＴ処理ユニット２は、データ・オブジェクト２−１を散在ストレージ・エラー符号化して、複数のセットの符号化されたデータ・スライスを作成する。複数のセットの符号化されたデータ・スライスを作成すると、ＤＳＴ処理ユニット２は、ＤＳＴＮメッセージをＤＳＴＮモジュール２２へ発行して、ＤＳＴＮモジュール２２への複数のセットの符号化されたデータ・スライスの記憶を推進する。たとえば、ＤＳＴ処理ユニット２は、複数のセットの符号化されたデータ・スライスを含むスライス書込み要求のセットを生成し、スライス書込み要求のセットをＤＳＴＮメッセージ２としてＤＳＴＮモジュール２２に送る。
【０２０３】
ＤＳＴ処理ユニット２の使用可能な容量レベルが最小の使用可能な容量閾値レベルと比べて好ましくないとき、ＤＳＴ処理ユニット２は、少なくとも１つのローカルに記憶されたデータ・オブジェクトを転送するために選択する。たとえば、ＤＳＴ処理ユニット２は、ＤＳＴ処理ユニット２に関連付けられたアドレス範囲の端部においてアドレスに関連付けられたデータ・オブジェクト１−Ｎを選択する。転送のための記憶データ・オブジェクトを選択すると、ＤＳＴ処理ユニット２は、データ・オブジェクト１−Ｎを含むＤＳＴ処理ユニット１に対して転送メッセージ２−１を発行する。ＤＳＴ処理ユニット１およびＤＳＴ処理ユニット２のうちの１つまたは複数は、アドレス空間マッピングの更新を推進して、データ・オブジェクト１−ＮがＤＳＴ処理ユニット１に関係付けられ、もはやＤＳＴ処理ユニット２に関係付けられないことを示す。アドレス空間マッピングを更新すると、ＤＳＴ処理ユニット１〜２のうちの１つまたは複数は、更新されているアドレス空間マッピングをＤＳＮの１つまたは複数のエンティティに送る（たとえば、さらなる分散のために図１のＤＳＴＮ管理ユニット１８に、他のＤＳＴ処理ユニットに、ユーザ・デバイス１〜２に送る）。
【０２０４】
記憶されたデータを取り出してデータを再現する動作の例として、ユーザ・デバイス２は、アドレス空間マッピングに対するアクセスに基づいて取出しのためのデータ・オブジェクト２−１に関係付けられたＤＳＴ処理ユニット２を識別する。ＤＳＴ処理ユニット２を識別すると、ユーザ・デバイス２は、データ・アクセス・メッセージ２を識別されたＤＳＴ処理ユニット２へ発行する。たとえば、ユーザ・デバイス２は、データ取出し要求をＤＳＴ処理ユニット２へ発行し、このデータ取出し要求は、データ・オブジェクト２−１の識別子を含む。
【０２０５】
ユーザ・デバイス２からデータ取出し要求を受け取ると、ＤＳＴ処理ユニット２は、データ・オブジェクト２−１を入手する。その入手することは、ＤＳＴ処理ユニット２のローカル・メモリからデータ・オブジェクト２−１を取り出すこと、およびＤＳＴＮモジュール２２からデータ・オブジェクト２−１を回復することの少なくとも一方を含む。データ・オブジェクト２−１が、ＤＳＴ処理ユニット２のローカル・メモリから入手可能であるとき、ＤＳＴ処理ユニット２は、データ・アクセス・メッセージ２をユーザ・デバイス２へ発行し、このデータ・アクセス・メッセージはデータ・オブジェクト２−１を含む。たとえば、ＤＳＴ処理ユニット２は、データ取出し応答をユーザ・デバイス２に送り、このデータ取出し応答はデータ・オブジェクト２−１を含む。
【０２０６】
データ・オブジェクト２−１が、ＤＳＴ処理ユニット２のローカル・メモリから入手可能でないとき、ＤＳＴ処理ユニット２は、ＤＳＴＮメッセージ２をＤＳＴＮモジュール２２へ発行する。たとえば、ＤＳＴ処理ユニット２は、データ・オブジェクト２−１に関して読取り閾値数のスライス読取り要求をＤＳＴＮモジュール２２へ発行し、スライス読取り応答を受け取り、受け取ったスライス読取り応答の符号化されたデータ・スライスを復号して、データ・オブジェクト２−１を再現する。
【０２０７】
図４１は、データにアクセスする例を示すフローチャートである。そのアクセスすることは、データを記憶すること、データを転送すること、およびデータを取り出すことのうちの１つまたは複数を含む。データ・オブジェクトを記憶するとき、方法はステップ３６０から開始または継続し、このステップでは、要求エンティティ（たとえばユーザ・デバイス）が、記憶のためのデータ・オブジェクトの識別子に基づいて、散在ストレージ・ネットワーク（ＤＳＮ）に関するアクセス・モジュール（たとえば、分散ストレージおよびタスク（ＤＳＴ）処理ユニット）を識別する。たとえば、要求エンティティは、データ・オブジェクトの識別子を利用してアドレスベースのマッピングにアクセスして、データ・オブジェクトの識別子に関連付けられたアクセス・モジュールの識別子を取り出す。
【０２０８】
方法はステップ３６２に続き、このステップでは、要求エンティティは、データ・オブジェクトをＤＳＮでの記憶のためにアクセス・モジュールに送る。方法はステップ３６４に続き、このステップでは、アクセス・モジュールがデータ・オブジェクトをＤＳＮに記憶する。たとえば、アクセス・モジュールが、データを散在ストレージ・エラー符号化して、複数のセットの符号化されたデータ・スライスを作成し、複数のセットの符号化されたデータ・スライスを記憶のためにストレージ・ユニットのセットに送る。方法はステップ３６６に続き、このステップでは、アクセス・モジュールが、アドレスベースのマッピングに従ってキャッシュ・メモリへのデータ・オブジェクトの記憶を推進する。たとえば、アクセス・モジュールは、受け取られたデータ・オブジェクトを、識別されたアクセス・モジュールのメモリに記憶する。別の例として、アクセス・モジュールは、データ・オブジェクトを記憶のために他のアクセス・モジュールに送り、この他のアクセス・モジュールは、データ・オブジェクトの識別子に関係付けられる。
【０２０９】
データ・オブジェクトを転送するとき、方法はステップ３６８に続き、このステップでは、アクセス・モジュールが、キャッシュ・メモリから１つまたは複数のデータ・オブジェクトを転送するかどうかを決定する。この決定は、使用可能なキャッシュ・メモリ記憶レベル、１つまたは複数のデータ・オブジェクトに対するアクセス頻度レベル（frequency of access level）、使用可能な入力／出力リソース、および１つまたは複数のデータ・オブジェクトの記憶の経過時間のうちの１つまたは複数に基づくことができる。たとえば、第１のデータ・オブジェクトが、最大のアクセス頻度閾値レベルと比べて好ましくない（大きい）アクセス頻度レベルに関連付けられている場合、アクセス・モジュールは、キャッシュ・メモリから第１のデータ・オブジェクトを転送することを決定する。
【０２１０】
データ・オブジェクトを転送するとき、方法はステップ３７０に続き、このステップでは、アクセス・モジュールが、転送のためのキャッシュされたデータ・オブジェクト、および他方のアクセス・モジュールを識別する。たとえば、アクセス・モジュールが、このアクセス・モジュールに関連付けられたアドレス範囲の端部における識別子に関連付けられたキャッシュされたデータ・オブジェクトを選択する。この端部の識別子は、他方のアクセス・モジュールに関連付けられた別のアドレス範囲の開始識別子に当たる。キャッシュされたデータ・オブジェクトを選択すると、アクセス・モジュールは、他方のアクセス・モジュールに対する容量の問合せを開始し、好ましい（たとえば、識別されたキャッシュ・データ・オブジェクトの転送を承認する）問合せ応答を受け取る。
【０２１１】
方法はステップ３７２に続き、このステップでは、アクセス・モジュールは、他方のアクセス・モジュールへのキャッシュされたデータ・オブジェクトの転送を推進する。たとえば、アクセス・モジュールは、転送メッセージを他方のアクセス・モジュールへ発行し、この転送メッセージは、識別されたキャッシュ・データ・オブジェクト、およびキャッシュ・データ・オブジェクトの識別子を含む。転送メッセージを受け取ると、他方のアクセス・モジュールは、この他方のアクセス・モジュールに関連付けられたローカル・キャッシュ・メモリにデータ・オブジェクトを記憶する。ローカル・キャッシュ・メモリにデータ・オブジェクトを記憶すると、他方のアクセス・モジュールは、データ・オブジェクトがＤＳＮからの取出しに使用可能であることを検証することができる。他方のアクセス・モジュールに関連付けられたローカル・キャッシュ・メモリにデータ・オブジェクトを記憶すると、他方のアクセス・モジュールは、データ・オブジェクトが成功裏に転送されたことを示す転送確認メッセージをアクセス・モジュールに送る。転送確認メッセージを受け取ると、方法はステップ３７４に続き、このステップでは、アクセス・モジュールは、アドレスベースのマッピングの更新を推進して、アクセス・モジュールとデータ・オブジェクトの関連付けを解除し、他方のアクセス・モジュールとデータ・オブジェクトを関連付ける。
【０２１２】
ＤＳＮからデータ・オブジェクトを取り出すとき、方法は３７６に続き、このステップでは、要求エンティティが、取出しのためにデータ・オブジェクトの識別子に基づいて他方のアクセス・モジュールを識別する。たとえば、他方のアクセス・モジュールは、データ・オブジェクトの識別子を使用してアドレス空間マッピングから他方のアクセス・モジュールの識別子を回復する。方法はステップ３７８に続き、このステップでは、要求エンティティが、データ・オブジェクト取出し要求を他方のアクセス・モジュールへ発行する。この発行は、データ・オブジェクトの識別子を含むようにデータ・オブジェクト取出し要求を生成すること、およびデータ・オブジェクト取出し要求を他方のアクセス・モジュールに送ることを含む。
【０２１３】
方法はステップ３８０に続き、このステップでは、他方のアクセス・モジュールのキャッシュ・メモリからデータ・オブジェクトが入手可能であるとき、他方のアクセス・モジュールは、他方のアクセス・モジュールのローカル・キャッシュ・メモリからデータ・オブジェクトを取り出す。あるいは、他方のアクセス・モジュールのローカル・キャッシュ・メモリからデータ・オブジェクトが入手不能なとき、他方のアクセス・モジュールはＤＳＮからデータ・オブジェクトを取り出す。方法はステップ３８２に続き、このステップでは、他のアクセス・モジュールは、データ・オブジェクトを要求エンティティに送る。
【０２１４】
図４２は、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図であり、散在ストレージ・ネットワーク（ＤＳＮ）は、コンテンツ・ソース４００、取込み分散ストレージおよびタスク（ＤＳＴ）処理ユニット４０２、図１のＤＳＴＮモジュール２２、取出しＤＳＴ処理ユニット４０３、および図１のユーザ・デバイス１２を含む。あるいは、ＤＳＮは、図１のネットワーク２４をさらに含む。取込みＤＳＴ処理ユニット４０２および取出しＤＳＴ処理ユニット４０３は、図１のＤＳＴ処理ユニット１６を利用して実装され得る。取込みＤＳＴ処理ユニット４０２は、コンテンツ取込みモジュール４０４および図１のＤＳＴクライアント・モジュール３４を含む。取出しＤＳＴ処理ユニット４０３は、コンテンツ取出しモジュール４０６および図１のＤＳＴクライアント・モジュール３４を含む。コンテンツ・ソース４００、コンテンツ取込みモジュール４０４、およびコンテンツ取出しモジュール４０６は、図３の処理モジュール８８、図１のＤＳＴ処理ユニット１６、ユーザ・デバイス１２、サーバ、コンピューティング・デバイス、およびＤＳＴクライアント・モジュール３４のうちの１つまたは複数を利用して実装され得る。
【０２１５】
システムは、ＤＳＴＮモジュール２２に記憶されたコンテンツとして記憶するコンテンツを取り込み、記憶されたコンテンツを取り出すように機能する。コンテンツは、ファイルおよびストリームのうちの１つまたは複数を含む。ファイルおよびストリームは、１つまたは複数のコンテンツ・タイプを含む。コンテンツ・タイプは、マルチメディア、オーディオ、テキスト、メッセージ、映画、映画の予告編、ウェブ・ビデオ、音楽録音などのうちの１つまたは複数を含む。記憶のためのコンテンツの取込みの動作の例として、コンテンツ取込みモジュール４０４は、コンテンツ・ソース４００からコンテンツ４０８を受け取る。コンテンツ４０８は、一般的なソース・マテリアルの１つまたは複数のフォーマットを含むことができる。フォーマットは、デジタル形式でソース・マテリアルを表現することに関連付けられた符号化アルゴリズムおよび符号化パラメータのうちの１つまたは複数を含む。
【０２１６】
コンテンツ４０８を受け取ると、コンテンツ取込みモジュール４０４は、フォーマッティング方式に従ってコンテンツ４０８を１つまたは複数のフォーマット１〜Ｆに変換する。フォーマッティング方式は、フォーマットの数、各フォーマット用のフォーマットのタイプ、および各フォーマットに関連付けられたパラメータのうちの１つまたは複数を含む。たとえば、第１のフォーマットは、２Ｍｂｐｓ標準画質ビデオ・ストリームを含み、第２のフォーマットは、５０Ｍｂｐｓ高解像度ビデオ・ストリームを含む。
【０２１７】
フォーマット１〜Ｆのそれぞれについて、取込みＤＳＴ処理ユニット４０２のＤＳＴクライアント・モジュール３４は、フォーマットを散在ストレージ・エラー符号化して、複数のセットの符号化されたデータ・スライスを作成する。複数のセットの符号化されたデータ・スライスを生成すると、ＤＳＴクライアント・モジュール３４は、コンテンツ・タイプ・インジケータおよびコンテンツ識別子のうちの１つまたは複数に基づいて、複数のセットの符号化されたデータ・スライスに対する複数のセットのスライス名を生成する。複数のセットのスライス名を生成すると、ＤＳＴクライアント・モジュール３４は、複数のセットの符号化されたデータ・スライスの記憶を推進する。たとえば、ＤＳＴクライアント・モジュール３４は、スライス書込み要求のセットを生成し、スライス書込み要求のセットをＤＳＴＮモジュール２２に送り、このスライス書込み要求のセットは、複数のセットの符号化されたデータ・スライスおよび複数のセットのスライス名を含む。たとえば、ＤＳＴクライアント・モジュール３４は、コンテンツ取込みモジュール４００から第３のフォーマットのためのスライス書込み要求３を発行し、スライス書込み要求３は、スライス書込み要求のセットを含む。
【０２１８】
各フォーマットについての複数のセットの符号化されたデータ・スライスの記憶を推進すると、取込みＤＳＴ処理ユニット４０２のＤＳＴクライアント・モジュール３４は、複数のセットの符号化されたデータ・スライスのそれぞれの記憶のフォーマットおよび論理ＤＳＮアドレスのそれぞれの識別子を関連付けるために散在階層インデックスおよびＤＳＮディレクトリのうちの１つまたは複数の更新を推進する。たとえば、ＤＳＴクライアント・モジュール３４は、フォーマット３の符号化からの複数のセットの符号化されたデータ・スライスに対応する複数のセットのスライス名に関連付けられたソース名を有してフォーマット３識別子を含むように、散在階層インデックスを更新する。
【０２１９】
記憶されたコンテンツを取り出す動作の例として、ユーザ・デバイス１２は、コンテンツ要求４１０を取出しＤＳＴ処理ユニット４０３へ発行し、コンテンツ要求４１０は、コンテンツ識別子、時間インジケータ、および、コンテンツ識別子のコンテンツに関連付けられた１つまたは複数の望ましいフォーマットのタイプ・インジケータのうちの１つまたは複数を含む。コンテンツ要求４１０を受け取ると、コンテンツ取出しモジュール４０６は、コンテンツＩＤ、時間インジケータ、および１つまたは複数の望ましいフォーマットのタイプ・インジケータのうちの１つまたは複数を使用して、散在階層インデックスおよびＤＳＮディレクトリのうちの１つまたは複数にアクセスして、各望ましいフォーマットについての論理ＤＳＮアドレスを識別する。
【０２２０】
望ましいフォーマットについてのＤＳＮアドレスを識別すると、取出しＤＳＴ処理ユニット４０３のＤＳＴクライアント・モジュール３４は、ＤＳＮアドレスを使用して複数のセットの符号化されたデータ・スライスの少なくともいくつかを回復する。たとえば、ＤＳＴクライアント・モジュール３４は、スライス読取り要求のセットをＤＳＴＮモジュール２２へ発行し、スライス読取り応答４１２を受け取る。スライス読取り要求のセットは、望ましいフォーマットのそれぞれの複数のセットの符号化されたデータ・スライスのそれぞれに関連付けられた複数のセットのスライス名を含む。
【０２２１】
スライス読取り応答４１２を受け取ると、取出しＤＳＴ処理ユニット４０３のＤＳＴクライアント・モジュール３４は、符号化されたデータ・スライスの各複数のセットの符号化されたデータ・スライスの複数のセットの各セットに対する復号閾値数の符号化されたデータ・スライスを、散在ストレージ・エラー復号して、１つまたは複数のフォーマット４１４を再現する。１つまたは複数のフォーマット４１４を回復すると、コンテンツ取出しモジュール４０６は、要求されたコンテンツ４１６をユーザ・デバイス１２に送り、要求されたコンテンツ４１６は、再現された１つまたは複数のフォーマット４１４を含む。
【０２２２】
図４３は、データにアクセスする別の例を示すフローチャートである。データ・オブジェクトを取り込むとき、方法はステップ４２０から開始または継続し、このステップでは、取込みユニット（たとえば、取込みに利用される分散ストレージおよびタスク（ＤＳＴ）処理ユニット）が、ストレージ・ユニットのセットへの記憶のためのコンテンツを受け取る。取込みユニットはさらに、コンテンツの識別子、コンテンツ・サイズ・インジケータ、コンテンツ・フォーマット・インジケータ、およびコンテンツ・タイプ・インジケータのうちの１つまたは複数を受け取ってもよい。方法はステップ４２２に続き、このステップでは、取込みユニットは、コンテンツを１つまたは複数のフォーマットに変換する。たとえば、取込みユニットは、フォーマッティング方式に従って複数の他のフォーマットにコンテンツを再符号化する。
【０２２３】
各フォーマットについて、方法はステップ４２４に続き、このステップでは、取込みユニットは、フォーマットを散在ストレージ・エラー符号化して、複数のセットの符号化されたデータ・スライスを作成する。各フォーマットについて、方法はステップ４２６に続き、このステップでは、取込みユニットは論理アドレスを生成する。たとえば、取込みユニットは、コンテンツ識別子、コンテンツ・タイプ、およびフォーマット識別子のうちの１つまたは複数に基づいて、各フォーマットについて固有のソース名を作成する。
【０２２４】
各論理アドレスについて、方法はステップ４２８に続き、このステップでは、取込みユニットは、複数のセットのスライス名を生成する。たとえば、取込みユニットは、関連付けられた固有のソース名を含むように各スライス名を生成する。各フォーマットについて、方法はステップ４３０に続き、このステップでは、対応する複数のセットの符号化されたデータ・スライスを、対応する複数のセットのスライス名を使用してセットのストレージに記憶することを推進する。たとえば、取込みユニットは、スライス書込み要求のセットを生成し、スライス書込み要求のセットをストレージ・ユニットのセットに送り、このスライス書込み要求のセットは、対応する複数のセットの符号化されたデータ・スライス、および対応する複数のセットのスライス名を含む。
【０２２５】
各フォーマットについて、方法はステップ４３２に続き、このステップでは、取込みユニットは、コンテンツ識別子、フォーマット、および関連付けられた論理アドレスのうちの１つまたは複数を関連付けるためにディレクトリおよび散在階層インデックスのうちの１つまたは複数を更新する。たとえば、取込みユニットは、散在階層インデックスのエントリにインデックス・キーを追加し、インデックス・キーは、フォーマットの識別子に関連付けられており、エントリは、フォーマットの論理アドレスを含む。
【０２２６】
データを取り出すとき、方法はステップ４３４から継続または開始し、このステップでは、取出しユニットがコンテンツ要求を受け取り、このコンテンツ要求は、１つまたは複数の望ましいフォーマットのタイプ・インジケータ、コンテンツＩＤ、および時間識別子のうちの１つまたは複数を含む。方法はステップ４３６に続き、このステップでは、取出しユニットが、タイプ・インジケータおよびコンテンツＩＤを使用してディレクトリおよび散在階層インデックスのうちの１つまたは複数にアクセスして、各望ましいフォーマットについて関連付けられた論理アドレスを回復する。たとえば、取出しユニットは、タイプ・インジケータをインデックス・キーとして利用して散在階層インデックスにアクセスして、望ましいフォーマットについての対応する論理アドレスを回復する。
【０２２７】
各望ましいフォーマットについて、方法はステップ４３８に続き、このステップでは、取出しユニットは、ストレージ・ユニットのセットから、望ましいフォーマットに関連付けられた符号化されたデータ・スライスの複数のセットのうちの少なくともいくつかのセットを回復する。たとえば、取出しユニットは、関連付けられた論理アドレスをスライス名のセットに変換し、スライス名のセットを含むスライス読取り要求のセットを発行し、符号化されたデータ・スライスの各セットについて少なくとも復号閾値数の符号化されたデータ・スライスを受け取る。
【０２２８】
各望ましいフォーマットについて、方法はステップ４４０に続き、このステップでは、取出しユニットが、符号化されたデータ・スライスの複数のセットのうちの受け取られた少なくともいくつかのセットを復号して、望ましいフォーマットでコンテンツを再現する。代わりにまたは加えて、取出しユニットは、時間識別子に従って、ビデオ・ストリーム内で望ましい時間フレームに関連付けられた符号化されたデータ・スライスにスライスの復号を制限する。各望ましいフォーマットについて、方法はステップ４４２に続き、このステップでは、取出しユニットは、望ましいフォーマットの再現されたコンテンツを要求エンティティに出力する。
【０２２９】
図４４は、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図であり、散在ストレージ・ネットワーク（ＤＳＮ）は、複数のＮ個のサイト１〜Ｎに実装されたＭ個の分散ストレージおよびタスク（ＤＳＴ）実行ユニット・セット１〜Ｍ、図１のネットワーク２４、ならびに図１の分散ストレージおよびタスク・ネットワーク（ＤＳＴＮ）管理ユニット１８を含む。各ＤＳＴ実行ユニット・セットは、ｎ個のＤＳＴ実行ユニットのセットを含む。各ＤＳＴ実行ユニットは、図１のＤＳＴ実行ユニット３６を利用して実装され得る。Ｎ個のサイト１〜ＮにおけるＭ個のＤＳＴ実行ユニット・セット１〜Ｍの実装の具体的な例として、サイト１は、各ＤＳＴ実行ユニット・セットからの第１のＤＳＴ実行ユニットを含み、サイト２は、各ＤＳＴ実行ユニット・セットからの第２のＤＳＴ実行ユニットを含み、以下同様である。たとえば、サイト１は、ＤＳＴ実行ユニット１−１−１、２−１−１、３−１−１〜Ｍ−１−１（セット、サイト、ユニット）を含む。
【０２３０】
ＤＳＮは、ＤＳＴ実行ユニットのうちの１つまたは複数の監視のための監視リソースを設定し、監視リソースの設定に従って１つまたは複数のＤＳＴ実行ユニットの監視を実行するように機能する。監視リソースを設定する動作の例として、ＤＳＴＮ管理ユニット１８がＤＳＮ構成情報を入手する。あるいは、ＤＳＮの任意の他のモジュール、ユニット、またはＤＳＮエンティティが、ＤＳＴＮ管理ユニット１８に関して説明したそうしたステップを実行することができる。その入手することは、ルックアップを実行すること、レジストリ情報の少なくとも一部分にアクセスすること、構成情報を受け取ること、問合せを開始すること、および問合せ応答を受け取ることのうちの少なくとも１つを含む。ＤＳＮ構成情報は、サイト位置情報、電源情報、ネットワーク２４の構成情報、サイト・インジケータの数、ＤＳＴ実行ユニット・セット・インジケータの数、ＤＳＴ実行ユニットの各ＤＳＴ実行ユニット・セットに対するマッピング、各ＤＳＴ実行ユニットのサイトに対するマッピング、ＤＳＴ実行ユニットの再構築性能レベル、ＤＳＴ実行ユニットのフォスタ（foster）符号化データ・スライス記憶性能レベル、ＤＳＴ実行ユニット記憶容量レベル、およびＤＳＴ実行ユニット記憶利用レベルのうちの１つまたは複数を含む。
【０２３１】
ＤＳＮ構成情報を入手すると、ＤＳＴＮ管理ユニット１８は、監視される対象ＤＳＴ実行ユニットを選択する。その選択することは、監視されるＤＳＴ実行ユニットのリストから次のＤＳＴ実行ユニットを識別すること、新しいＤＳＴ実行ユニットを検出すること、ＤＳＴ実行ユニットが監視されていないと決定すること、ＤＳＴ実行ユニットの最後の監視から時間フレームが経過したと決定すること、ＤＳＴ実行ユニットに関連付けられたエラー・メッセージを解釈すること、および要求を受け取ることのうちの１つまたは複数に基づくことができる。
【０２３２】
対象ＤＳＴ実行ユニットを選択すると、ＤＳＴＮ管理ユニット１８は、対象ＤＳＴ実行ユニットに関連付けるための監視ＤＳＴ実行ユニットの数を決定する。その決定することは、ＤＳＮアクティビティ・レベル、予想故障率レベル、監視テーブル、および事前決定に基づくことができる。たとえば、ＤＳＴＮ管理ユニットは、ＤＳＮアクティビティ・レベルが高閾値レベルよりも大きいとき、監視ＤＳＴ実行ユニットの数を１にするように選択する。別の例として、ＤＳＮアクティビティ・レベルが平均ＤＳＮアクティビティ・レベルの予想閾値レベルの範囲内であるとき、ＤＳＴＮ管理ユニットは監視ＤＳＴ実行ユニットの数を３にするように選択し、また、ＤＳＮアクティビティ・レベルが平均ＤＳＮアクティビティ・レベルの予想閾値レベルの範囲内であるとき、監視テーブル・エントリは３つの監視ユニットを利用することを示す。
【０２３３】
監視ＤＳＴ実行ユニットの数を決定すると、ＤＳＴＮ管理ユニット１８は、対象ＤＳＴ実行ユニットと複数のＤＳＴ実行ユニットのその他のＤＳＴ実行ユニットの少なくともいくつかとの間の障害相関の推定レベルを、ＤＳＮ構成情報に基づいて決定する。たとえば、ＤＳＴＮ管理ユニット１８は、対象ＤＳＴ実行ユニットと他のＤＳＴ実行ユニットが共通のサイトで実装されことをＤＳＮ構成情報が示すとき、対象ＤＳＴ実行ユニットと他のＤＳＴ実行ユニットとの間の障害相関について平均推定レベルより高いことを示す。別の例として、ＤＳＮ構成情報が、対象ＤＳＴ実行ユニットと他のＤＳＴ実行ユニットが異なるサイトで実装され、異なるＤＳＴ実行ユニット・セットの一部であることを示すとき、ＤＳＴＮ管理ユニット１８は、対象ＤＳＴ実行ユニットと他のＤＳＴ実行ユニットとの間の障害相関について平均推定レベルより低いことを示す。
【０２３４】
監視ＤＳＴ実行ユニットの数を決定すると、ＤＳＴＮ管理ユニット１８は、障害相関の推定レベル、および監視ＤＳＴ実行ユニットの数に基づいて、他のＤＳＴ実行ユニットのうちの少なくともいくつかを選択する。たとえば、ＤＳＴＮ管理ユニット１８は、対応する障害相関の推定レベルによって他のＤＳＴ実行ユニットを順序付け、最少量の障害相関に関連付けられた数を選択する。たとえば、ＤＳＴＮ管理ユニット１８が、３つのＤＳＴ実行ユニット１−Ｎ−ｎ、３−１−１、およびＭ−Ｎ−ｎを選択するのは、対象ＤＳＴ実行ユニットがＤＳＴ実行ユニット２−２−２であり、それら３つのＤＳＴ実行ユニットがＤＳＴ実行ユニット２−２−２に関して最少量の障害相関に関連付けられているときである。
【０２３５】
監視ＤＳＴ実行ユニットが選択されると、ＤＳＴＮ管理ユニット１８は、対象ＤＳＴ実行ユニットに対して、選択された監視ＤＳＴ実行ユニットを割り当てる。たとえば、ＤＳＴＮ管理ユニット１８は、３つの選択された監視ＤＳＴ実行ユニットへユニット・ステータス情報を発行し、このユニット・ステータス情報は、ＤＳＴ実行ユニット２−２−２を監視するための監視割当て要求を含む。監視割当て要求は、対象ＤＳＴ実行ユニットの識別子、監視ＤＳＴ実行ユニットの識別子、報告スケジュールの頻度、報告に対する閾値、および監視インジケータのタイプのうちの１つまたは複数を含むことができる。監視インジケータのタイプは、定期的なｐｉｎｇを送ること、ｐｉｎｇ応答を受け取ること、データを送ること、データの送信に対する応答を受け取ること、セキュリティ情報を交換すること、パフォーマンス情報を入手すること、テストを開始すること、およびテスト結果を分析することのうちの１つまたは複数を含む、１つまたは複数のタイプの監視を示す。
【０２３６】
監視を実行する動作の例として、割り当てられた監視ＤＳＴ実行ユニットの少なくともいくつかが、監視インジケータのタイプに従って監視機能を実行して、対象ＤＳＴ実行ユニットを監視し、監視結果を含むユニット・ステータス情報４５０を作成する。ユニット・ステータス情報４５０を作成すると、割り当てられた監視ＤＳＴ実行ユニットは、報告スケジュールの頻度および報告に対する閾値のうちの１つまたは複数に従って、ユニット・ステータス情報４５０をＤＳＴＮ管理ユニット１８に送る。たとえば、ＤＳＴ実行ユニット３−１−１は、継続的にＤＳＴ実行ユニット２−２−２を監視し、ユニット・ステータス情報４５０を作成する。ＤＳＴ実行ユニット３−１−１は、ユニット・ステータス情報４５０を解釈し、ユニット・ステータス情報の部分が望ましい閾値レベルと比べて好ましくないとき、ユニット・ステータス情報４５０をＤＳＴＮ管理ユニット１８に送ることを決定する。別の例として、ＤＳＴ実行ユニット３−１−１は、報告スケジュールの頻度の解釈がユニット・ステータス情報４５０を送るように示すとき、ユニット・ステータス情報４５０をＤＳＴＮ管理ユニット１８に送ることを決定する。ＤＳＴ実行ユニット３−１−１は、ＤＳＴ実行ユニット３−１−１がユニット・ステータス情報４５０を送ると決定したときに、ユニット・ステータス情報４５０をＤＳＴＮ管理ユニット１８に送る。
【０２３７】
図４５は、監視ストレージ・ユニットの例を示すフローチャートである。方法はステップ４５２から開始または継続し、このステップでは、（たとえば分散ストレージおよびタスク・ネットワーク（ＤＳＴＮ）管理ユニットの）処理モジュールが、監視される対象ストレージ・ユニットを選択する。ここで、散在ストレージ・ネットワーク（ＤＳＮ）は、そのストレージ・ユニットを含む複数のストレージ・ユニットを含む。その選択することは、選択リストを解釈すること、監視ユニットが対象ストレージ・ユニットに関連付けられていないことを検出すること、新しいストレージ・ユニットのアクティブ化を検出すること、および要求を受け取ることのうちの１つまたは複数に基づくことができる。
【０２３８】
方法はステップ４５４に続き、このステップでは、処理モジュールがＤＳＮの構成情報を入手する。たとえば、処理モジュールはシステム・レジストリの一部分にアクセスする。方法はステップ４５６に続き、このステップでは、処理モジュールは、対象ストレージ・ユニットを監視するための監視ストレージ・ユニットの数を決定する。たとえば、処理モジュールは、ＤＳＮアクティビティ・レベルが平均ＤＳＮアクティビティ・レベルより低いとき、監視ストレージ・ユニットの平均数より大きい数を選択する。別の例として、処理モジュールは、推定ストレージ・ユニット故障率が平均ストレージ・ユニット故障率より低いとき、監視ストレージ・ユニットの平均数より小さい数を選択する。
【０２３９】
複数のストレージ・ユニットのうちの少なくともいくつかの他のストレージ・ユニットのそれぞれについて、方法はステップ４５８に続き、このステップでは、処理モジュールが、ＤＳＮの構成情報に基づいて対象ストレージ・ユニットとの推定障害相関レベルを決定する。方法はステップ４６０に続き、このステップでは、関連付けられた推定障害相関レベル、および決定された監視ストレージ・ユニットの数に基づいて、監視ストレージ・ユニットを選択する。たとえば、処理モジュールは、最小推定障害相関レベルに関連付けられた監視ストレージ・ユニットを選択する。
【０２４０】
方法はステップ４６２に続き、このステップでは、処理モジュールは、監視ストレージ・ユニットを対象ストレージ・ユニットを監視するように割り当てる。たとえば、処理モジュールは、監視割当てメッセージを、各監視ストレージ・ユニットおよび対象ストレージ・ユニットへ発行し、この監視割当てメッセージは、割り当てられた監視ストレージ・ユニットと対象ストレージ・ユニットとの間の監視関係を示す。
【０２４１】
方法はステップ４６４に続き、このステップでは、各監視ストレージ・ユニットは対象ストレージ・ユニットを監視する。たとえば、監視ストレージ・ユニットは、随時、ステータス・チェック・メッセージを対象ストレージ・ユニットへ発信し、対象ストレージ・ユニットからステータス・チェック応答を受け取り、応答時間フレーム内に好ましいステータス・チェック応答が受信されないときに潜在的な障害を指摘し、統計を収集し、管理ユニット、対象ストレージ・ユニット、および他の少なくとも１つの監視ストレージ・ユニットのうちの１つまたは複数に対して障害および統計を報告する。
【０２４２】
図４６は、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図であり、散在ストレージ・ネットワーク（ＤＳＮ）は、図１の分散ストレージおよびタスク（ＤＳＴ）クライアント・モジュール３４、図１のネットワーク２４、ならびに少なくとも２つのＤＳＴ実行ユニット・セット１〜２を含む。各ＤＳＴ実行ユニット・セットは、ＤＳＴ実行ユニット１〜ｎのセットを含み、ＤＳＴ実行ユニットの各セットは、ＤＳＮのアドレス範囲に関連付けられる。たとえば、ＤＳＴ実行ユニット１はアドレス範囲１に関連付けられ、ＤＳＴ実行ユニット２はアドレス範囲２に関連付けられる。アドレス範囲は、開始アドレスおよび終了アドレスを含み、それらのアドレスは、ソース名、ファイル名、および符号化されたデータ・スライスに関連付けられたスライス名のうちの１つまたは複数を含む。各ＤＳＴ実行ユニットは、図１のＤＳＴ実行ユニット３６を利用して実装され得る。
【０２４３】
ＤＳＮは、時間フレームベースのアドレス指定方式に従って符号化されたデータ・スライスのセットとしてデータを記憶するように機能する。データを記憶する動作の例として、ＤＳＴクライアント・モジュール３４は、第１の時間フレームに関連付けて記憶するデータを受け取る。データを受け取ると、ＤＳＴクライアント・モジュール３４は現在の時間フレームを識別する。時間フレームは、繰り返し範囲を含むことができる。たとえば、繰り返し範囲は５分ごとに繰り返される。現在の時間フレームを識別すると、ＤＳＴクライアント・モジュール３４は、隣接する時間フレームに対するソース名が、ＤＳＴ実行ユニット・セットに割り当てられた異なるアドレス空間範囲に関連付けられるように、現在の時間フレームに基づいてソース名を生成する。その生成することは、現在の時間フレームに対して確定関数を実行することを含む。あるいは、ＤＳＴクライアント・モジュール３４は、２つ以上のＤＳＴ実行ユニット・セットの２つ以上のアドレス範囲にマッピングするソース名を生成し、ソース名は、次の時間フレームについての次のソース名と常に異なる（たとえば、次の時間フレームが、異なるアドレス範囲およびＤＳＴ実行ユニット・セットにマッピングする）。
【０２４４】
ソース名を選択すると、ＤＳＴクライアント・モジュール３４は、複数のセットのスライス名を生成し、各スライス名は、システム・レジストリ情報およびデータに従ってソース名および他のスライス名フィールド・エントリを有する。複数のセットのスライス名を生成すると、ＤＳＴクライアント・モジュール３４は、データを散在ストレージ・エラー符号化して、複数のセットの符号化されたデータ・スライスを作成する。複数のセットの符号化されたデータ・スライスを生成すると、ＤＳＴクライアント・モジュール３４は、複数のセットのスライス名および複数のセットの符号化されたデータ・スライスを含む、１つまたは複数のセットのスライス書込み要求を生成する。
【０２４５】
１つまたは複数のセットのスライス書込み要求を生成すると、ＤＳＴクライアント・モジュール３４は、ソース名、およびＤＳＴ実行ユニット・セットの割り当てられたアドレス範囲に基づいて、ＤＳＴ実行ユニット・セットを識別する。ここで、ソース名は、ＤＳＴ実行ユニット・セットの割り当てられたアドレス範囲内に含まれる。ＤＳＴ実行ユニット・セットを識別すると、ＤＳＴクライアント・モジュール３４は、ネットワーク２４を介して、範囲１についてのスライス書込み要求を識別したＤＳＴ実行ユニット・セットへ発行して、複数のセットの符号化されたデータ・スライスをＤＳＴ実行ユニット・セット１のＤＳＴ実行ユニット１〜ｎのセットに記憶することを推進する。
【０２４６】
図４７は、データを記憶する例を示すフローチャートである。方法はステップ４７０から開始または継続し、このステップでは、（たとえば、分散ストレージおよびタスク（ＤＳＴ）クライアント・モジュールの）処理モジュールが、記憶するデータを受け取る。方法はステップ４７２に続き、このステップでは、処理モジュールが、現在の時間フレームを識別する。たとえば、処理モジュールは、時計機能から現在のタイムスタンプを入手し、現在のタイムスタンプに基づいて現在の時間フレームを識別する（たとえば、現在のタイムスタンプが時間フレーム間隔内であるかどうかを決定する）。
【０２４７】
方法はステップ４７４に続き、このステップでは、処理モジュールは、現在の時間フレームに基づいてソース名を生成する。ここで、複数のストレージ・ユニット・セットに関連付けられた複数のアドレス範囲のうちのアドレス範囲が、ソース名を含み、このアドレス範囲は、直前の時間フレームに関連付けられた先行アドレス範囲とは異なる。たとえば、処理モジュールは、定数のセットから１つの定数を（たとえば、ラウンド・ロビン、ランダム、順次に）選択し、選択した定数および現在の時間フレームに対して確定関数を実行して、中間結果を生成する。処理モジュールは、ソース名の少なくとも一部の最上位ビットとして中間結果を利用する。
【０２４８】
方法はステップ４７６に続き、このステップでは、処理モジュールは、複数のストレージ・ユニット・セットのうちからストレージ・ユニット・セットを識別する。ここで、このストレージ・ユニット・セットは、ソース名を含むアドレス範囲に関連付けられている。たとえば、処理モジュールは、ストレージ・ユニット・セット識別リストのアドレスにアクセスする。別の例として、処理モジュールは、問合せを開始し、問合せ応答を受け取る。方法はステップ４７８に続き、このステップでは、処理モジュールは、１つまたは複数のセットのスライス書込み要求を、識別されたストレージ・ユニット・セットへ発行して、データの記憶を推進する。たとえば、処理モジュールは、ソース名を利用して複数のセットのスライス名を生成し、データを散在ストレージ・エラー符号化して複数のセットの符号化されたデータ・スライスを作成し、複数のセットの符号化されたデータ・スライスおよび複数のセットのスライス名を含むように１つまたは複数のセットのスライス書込み要求を生成し、１つまたは複数のセットのスライス書込み要求を識別されたストレージ・ユニット・セットに送る。
【０２４９】
図４８は、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図であり、散在ストレージ・ネットワーク（ＤＳＮ）は、複数の再構築モジュール１〜４、ならびに分散ストレージおよびタスク（ＤＳＴ）実行（ＥＸ）ユニット・セット４９０を含む。各再構築モジュールは、図１のＤＳＴ処理ユニット１６、図１のＤＳＴ実行ユニット３６、および図１のＤＳＴ整合性処理ユニット２０のうちの少なくとも１つを利用して実装され得る。ＤＳＮはさらに、再構築モジュール１〜４とＤＳＴ実行ユニット・セット４９０を動作可能に結合するための図１のネットワーク２４を含む。ＤＳＴ実行ユニット・セットは、ＤＳＴ実行ユニット１〜ｎのセットを含む。各ＤＳＴ実行ユニットは、Ｍ個のメモリのグループを含む。たとえば、ＤＳＴ実行ユニット１は、メモリ１−１、１−２〜１−Ｍまでを含み、ＤＳＴ実行ユニット２は、メモリ２−１、２−２〜２−Ｍまでを含み、以下同様である。各ＤＳＴ実行ユニットは、図１のＤＳＴ実行ユニット３６を利用して実装され得る。各メモリは、図３のメモリ８８を利用して実装され得る。各メモリは、ＤＳＮのアドレス範囲に関連付けられる。たとえば、メモリ１−１がアドレス範囲１−１に関連付けられ、メモリ１−２がアドレス範囲１−２に関連付けられ、メモリ１−Ｍがアドレス範囲１−Ｍに関連付けられるまでが続き、さらに、メモリ２−１がアドレス範囲２−１に関連付けられ、メモリ２−２がアドレス範囲２−２に関連付けられ、メモリ２−Ｍがアドレス範囲２−Ｍに関連付けられるまでが続き、以下同様である。
【０２５０】
ＤＳＮは、再構築アクティビティのレートを調整するように機能し、ここで、再構築アクティビティは、ストレージ・エラーを検出すること、および検出したストレージ・エラーに関連付けられた符号化データ・スライスを再構築することを含む。動作の例として、再構築モジュール１は、再構築アクティビティの実行のためのアドレス範囲を選択する。その選択することは、リストを解釈すること、エラー・メッセージを受け取ること、再構築割当てを受け取ること、および事前決定のうちの少なくとも１つを含む。たとえば、再構築モジュール１は、メモリ２−１に関連付けられたエラー・メッセージを受け取り、メモリ２−１に関連付けられたものとしてアドレス範囲２−１を識別するとき、アドレス範囲２−１を選択する。
【０２５１】
再構築アクティビティのためのアドレス範囲を選択すると、再構築モジュール１は、選択したアドレス範囲１に対する再構築アクティビティの実行を推進する。たとえば、再構築モジュール１は、選択したアドレス範囲に関連付けられるＤＳＴ実行ユニット２を識別し、再構築メッセージ範囲２−１をＤＳＴ実行ユニット２と交換して、ストレージ・エラーを検出し（たとえば、リスト・スライス要求を発行し、リスト・スライス応答を受け取り、リスト・スライス応答を解釈してストレージ・エラーを識別する）、識別したストレージ・エラーに関連付けられた１つまたは複数の符号化されたデータ・スライスを再構築し、さらなる再構築メッセージ範囲２−１をＤＳＴ実行ユニット２と交換して、１つまたは複数の再構築した符号化データ・スライスのメモリ２−１への記憶を推進する。実質的に並行して、再構築モジュール２および３も、再構築メッセージ範囲２−１をＤＳＴ実行ユニット２と交換して、アドレス範囲２−１内の再構築アクティビティを推進することができる。
【０２５２】
選択されたアドレス範囲に対する再構築アクティビティの実行を推進すると、再構築モジュール１は、選択されたアドレス範囲に対する再構築アクティビティの実行を継続することが、（たとえば、再構築モジュール２および３も、選択されたアドレス範囲２−１に関する再構築アクティビティを実行中であり得るため、）選択されたアドレス範囲に関連付けられた再構築アクティビティ全体に好ましく影響することに関連するかどうかを決定する。選択されたアドレス範囲に対する再構築アクティビティの実行を継続することが再構築アクティビティ全体に好ましく影響することに関連するかどうかを決定することは、一連のステップを含む。
【０２５３】
上記の一連のステップは、再構築モジュール１が、先行時間フレームについて識別されたＤＳＴ実行ユニット２へ再構築レート要求を発行することから開始する。再構築レートは、単位時間あたりの再構築アクティビティのレート（たとえば、ストレージ・エラーを検出するためのスキャンの数、再構築された符号化データ・スライスを書き込む数）を含む。再構築モジュール１は、識別されたＤＳＴ実行ユニット２から再構築レート応答を受け取り、この応答は、先行時間フレームに対する選択されたアドレス範囲に関連付けられた再構築アクティビティのレートを示している。
【０２５４】
先行時間フレームに関連付けられた再構築レートを受け取ると、再構築モジュール１は、一時停止時間フレームに対する再構築アクティビティの実行を一時停止する。たとえば、再構築モジュール１は、さらなるサブ・アドレス範囲についてのさらなるリスト・スライス要求の発行を中止し、さらなる再構築スライス書込み要求の発行を中止する。再構築アクティビティの実行を一時的に停止すると、再構築モジュール１は、一時停止時間フレームが満了したときに、識別されたＤＳＴ実行ユニット２へ別の再構築レート要求を発行する。再構築モジュール１は、識別されたＤＳＴ実行ユニット２から別の再構築レート応答を受け取り、当該別の応答は、（たとえば、再構築モジュール１がそれらの再構築アクティビティに参加していなかったとき）一時停止時間フレームに対する選択されたアドレス範囲に関連付けられた再構築アクティビティの別のレートを示している。
【０２５５】
一時停止時間フレームに対する再構築アクティビティの当該別の再構築レートを受け取ると、再構築モジュール１は、再構築レートと比べて当該別の再構築レートが好ましいかどうかを決定する。たとえば、再構築モジュール１は、当該別の再構築レートと再構築レートとの間の差が低い再構築レート閾値レベルよりも小さいとき、その比較結果は好ましくないことを示す。したがって、再構築モジュール１は、選択されたアドレス範囲２−１に関連付けられた再構築アクティビティに対して有意義に寄与していない。
【０２５６】
別の事例として、再構築モジュール４が、アドレス範囲１−１に対する再構築アクティビティの実行を継続することが再構築アクティビティ全体に好ましく影響することに関連するかどうかを決定する場合、再構築モジュール４は、別の再構築レートと再構築レートとの間の差が高い再構築レート閾値レベルよりも大きいとき、その比較結果は好ましいことを示す。したがって、その示すところでは、再構築モジュール４が、アドレス範囲１−１に関連付けられた再構築アクティビティに対して有意義に寄与している。
【０２５７】
比較結果が好ましいとき、再構築モジュール４は、アドレス範囲１−１について再構築アクティビティの実行の再開を推進する。比較結果が好ましくないとき、再構築モジュール１は、別のアドレス範囲を選択し、選択した別のアドレス範囲について他の再構築アクティビティの実行を推進する
【０２５８】
図４９は、データを再構築する例を示すフローチャートである。方法はステップ４９２から開始または継続し、このステップでは、（たとえば再構築モジュールの）処理モジュールが、再構築アクティビティのためのアドレス範囲を選択する。その選択することは、次のアドレス範囲を識別すること、エラー・メッセージを解釈してアドレス範囲を識別すること、要求を受け取ること、および、アドレス範囲に関連付けられた再構築アクティビティの実行に対して追加の再構築リソースが有意義に影響できることを予測することのうちの少なくとも１つを含む。
【０２５９】
方法はステップ４９４に続き、このステップでは、処理モジュールは、選択されたアドレス範囲について再構築アクティビティの実行を推進する（たとえば、ストレージ・エラーをスキャンする、ストレージ・エラーに関連付けられた符号化データ・スライスを再構築する、再構築した符号化データ・スライスを記憶する）。方法はステップ４９６に続き、このステップでは、処理モジュールは、先行時間フレームについて識別されたストレージ・ユニットへ再構築レート要求を発行する。ここで、識別されたストレージ・ユニットは、選択されたアドレス範囲に関連付けられている。たとえば、処理モジュールは、選択されたアドレス範囲に関連付けられたメモリ・デバイスを識別し、複数のストレージ・ユニットのうちからメモリ・デバイスに関連付けられるストレージ・ユニットを識別して、識別されたストレージ・ユニットを形成する。
【０２６０】
方法はステップ４９８に続き、このステップでは、処理モジュールは、識別されたストレージ・ユニットから再構築レート応答を受け取る。その受け取ることは、処理モジュールが、再構築レート応答から先行時間フレームについての再構築レートを抽出することを含む。方法はステップ５００に続き、このステップでは、処理モジュールは、一時停止時間フレームにおいて、選択されたアドレス範囲についての再構築アクティビティの実行を一時的に停止する（たとえば、ストレージ・エラーのスキャンの停止、符号化されたデータ・スライスの再構築の停止、および再構築された符号化データ・スライスの記憶の停止を行う）。
【０２６１】
方法はステップ５０２に続き、このステップでは、一時停止時間フレームについて識別されたストレージ・ユニットへ別の再構築レート要求を発行する。方法はステップ５０４に続き、このステップでは、処理モジュールは、識別されたストレージ・ユニットから別の再構築レート応答を受け取る。その受け取ることは、先行時間フレームについての別の再構築レートを抽出することを含む。
【０２６２】
方法はステップ５０６に続き、このステップでは、処理モジュールは、再構築レートと比べて当該別の再構築レートが好ましいかどうかを決定する。たとえば、処理モジュールは、当該別の再構築レートと再構築レートとの間の差が高い再構築レート閾値レベルよりも大きいとき、その比較結果は好ましいことを示す。別の例として、処理モジュールは、当該別の再構築レートと再構築レートとの間の差が低い再構築レート閾値レベルよりも小さいとき、その比較結果は好ましくないことを示す。比較結果が好ましくないとき、方法はステップ５１０へ分岐する。比較結果が好ましいとき、方法はステップ５０８へ続く。方法はステップ５０８に続き、このステップでは、処理モジュールは、選択されたアドレス範囲について再構築アクティビティの実行の再開を推進する（たとえば、スキャン、再構築、再構築された符号化データ・スライスの記憶を継続する）。
【０２６３】
比較結果が好ましくないとき、方法はステップ５１０に続き、このステップでは、処理モジュールは、再構築アクティビティのための別のアドレス範囲を選択する。その選択することは、エラー・メッセージを受け取ること、ストレージ・エラーに関連付けられたアドレスを識別すること、要求を受け取ること、別のメモリ・デバイスを選択すること、および選択された別のメモリ・デバイスに関連付けられたアドレス範囲を識別することのうちの１つまたは複数を含む。方法はステップ５１２に続き、このステップでは、選択された別のアドレス範囲について再構築アクティビティの実行を推進する。
【０２６４】
図５０は、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図であり、散在ストレージ・ネットワーク（ＤＳＮ）は、複数のＮ個のサイト１〜Ｎに実装された少なくとも２つの分散ストレージおよびタスク（ＤＳＴ）実行ユニット・セット１〜２、再構築専用ストレージ・ユニットＤＳＴ実行ユニットＲ１、図１のネットワーク２４、ならびに図１のＤＳＴ整合性処理ユニット２０を含む。各ＤＳＴ実行ユニット・セットは、ＤＳＴ実行ユニットのセットを含む。各ＤＳＴ実行ユニットは、図１のＤＳＴ実行ユニット３６を利用して実装され得る。Ｎ個のサイト１〜ＮにおけるＤＳＴ実行ユニット・セット１〜２の実装の具体的な例として、サイト１は、各ＤＳＴ実行ユニット・セットからの第１のＤＳＴ実行ユニットを含み、サイト２は、各ＤＳＴ実行ユニット・セットからの第２のＤＳＴ実行ユニットを含み、以下同様である。たとえば，サイト１は、ＤＳＴ実行ユニット１−１−１および２−１−１を含み、サイト２は、ＤＳＴ実行ユニット１−２−２および２−２−２を含む（たとえば、セット、サイト、ユニット）などである。
【０２６５】
ＤＳＮは、ＤＳＴ実行ユニットに記憶されたデータを再構築するように機能する。特に、ＤＳＴ整合性処理ユニット２０および任意のＤＳＴ実行ユニットのうちの１つまたは複数が、記憶されたデータの再構築を推進することができる再構築モジュールを含むことができる。たとえば、ＤＳＴ実行ユニットＲ１が、記憶されたデータを再構築することができる。別の例として、ＤＳＴ実行ユニット２−２−２が、記憶されたデータを再構築することができる。
【０２６６】
記憶されたデータを再構築する動作の例として、再構築モジュールが、使用不可能なメモリ・デバイスに関連付けられた符号化データ・スライスのストレージ・エラーを識別する。たとえば、ＤＳＴ整合性処理ユニット２０が、ネットワーク２４を介して、再構築メッセージ５２０をＤＳＴ実行ユニットのうちの１つまたは複数へ発行し、リスト・スライス応答を含む再構築メッセージ５２０を受け取り、リスト・スライス応答を比較してストレージ・エラーを識別する。再構築メッセージ５２０は、リスト・スライス要求、リスト・スライス応答、符号化データ・スライス再構築要求、使用可能な記憶容量レベル、ＤＳＮトポロジ情報、フォスタ符号化データ・スライス書込み要求、および、フォスタ符号化データ・スライスをホーム記憶位置に戻すように移行する要求のうちの１つまたは複数を含む。たとえば、ＤＳＴ整合性処理ユニット２０は、ＤＳＴ実行ユニット１−１−１におけるスライスＡ−１に関連付けられたストレージ・エラー、ＤＳＴ実行ユニット１−２−２におけるスライスＡ−２に関連付けられたストレージ・エラー、ＤＳＴ実行ユニット２−１−１におけるスライスＢ−１に関連付けられたストレージ・エラー、およびＤＳＴ実行ユニット２−２−２におけるスライスＢ−２に関連付けられたストレージ・エラーを識別する。
【０２６７】
ストレージ・エラーを識別すると、再構築モジュールは、ストレージ・エラーの符号化されたデータ・スライスに関連付けられたＤＳＮ構成情報を入手する。ＤＳＮ構成を入手すると、再構築モジュールは、符号化されたデータ・スライスを再構築してフォスタ符号化データ・スライスを作成する。たとえば、再構築モジュールは、スライスＡ−１に対するフォスタ・スライスＦＡ−１、スライスＢ−１に対するフォスタ・スライスＦＢ−１、スライスＡ−２に対するフォスタ・スライスＦＡ−２、およびスライスＢ−２に対するフォスタ・スライスＦＢ−２を作成する。フォスタ符号化データ・スライスを作成すると、再構築モジュールは、ＤＳＮ構成情報に基づいて、フォスタ符号化データ・スライスのための複数の候補記憶位置を識別する。たとえば、再構築モジュールは、各ＤＳＴ実行ユニットがフォスタ符号化データ・スライスを記憶できることをＤＳＮ構成情報が示す場合、ＤＳＴ実行ユニット１−１−１、２−１−１、１−２−２、２−２−２およびＤＳＴ実行ユニットＲ１を候補記憶位置として識別する。
【０２６８】
フォスタ符号化データ・スライスのための候補記憶位置を識別すると、再構築モジュールは候補記憶位置の記憶ステータスを入手する。記憶ステータスは、フォスタ符号化データ・スライスを記憶する使用可能な容量レベルを示す。その入手することは、エラー・メッセージを解釈すること、記憶ステータス・リストにアクセスすること、ＤＳＴ実行ユニットへ問合せを開始すること、および記憶ステータスを含む問合せ応答を受け取ることのうちの少なくとも１つを含む。たとえば、再構築モジュールは、ＤＳＴ実行ユニット１−１−１、２−１−１、および１−２−２から、（たとえば使用不可能なので）使用可能な容量がないことを示す記憶ステータスを入手し、ＤＳＴ実行ユニット２−２−２およびＲ１から、フォスタ符号化データ・スライスを記憶する十分な容量を示す記憶ステータスを入手する。
【０２６９】
候補記憶位置の記憶ステータスを入手すると、再構築モジュールは、記憶ステータスおよびＤＳＮ構成情報のうちの１つまたは複数に基づいて、フォスタ符号化データ・スライスを記憶するための候補記憶位置の少なくとも１つの記憶位置を選択する。たとえば、再構築モジュールは、ＤＳＴ実行ユニットＲ１がＤＳＴ実行ユニット１−１−１および２−１−１と共通のサイト１に実装されていることを示すＤＳＮ構成情報に従って、フォスタ・スライスＦＡ−１およびＦＢ−１を記憶するためにＤＳＴ実行ユニットＲ１を選択する（たとえば、フォスタ符号化データ・スライスをホームＤＳＴ実行ユニット１−１−１および２−１−１に戻す移行を、ＤＳＴ実行ユニットが使用可能なときに推進するためである）。別の例として、構成情報が、ＤＳＴ実行ユニット２−２−２がスライスＢ−２に関連付けられたホームＤＳＴ実行ユニットであることを示し、ＤＳＴ実行ユニット２−２−２の記憶ステータスが、ＤＳＴ実行ユニット２−２−２がフォスタ符号化データ・スライスを記憶する十分な容量を有することを示すとき、再構築モジュールは、フォスタ・スライスＦＢ−２を記憶するためにＤＳＴ実行ユニット２−２−２を選択する。さらに別の例として、ＤＳＴ実行ユニット２−２−２がスライスＡ−２のためのホームＤＳＴ実行ユニット１−２−２と共通のサイトに実装されていることをＤＳＮ構成情報が示すとき、再構築モジュールは、フォスタ・スライスＦＡ−２を記憶するためにＤＳＴ実行ユニット２−２−２を選択する。
【０２７０】
少なくとも１つの記憶位置を選択すると、再構築モジュールは、フォスタ符号化データ・スライスの選択された記憶位置への一時的記憶を推進する。たとえば、再構築モジュールは、フォスタ・スライスＦＡ−１およびＦＢ−１のＤＳＴ実行ユニットＲ１への記憶を推進し、フォスタ・スライスＦＡ−２およびＦＢ−２のＤＳＴ実行ユニット２−２−２への記憶を推進する。ホームＤＳＴ実行ユニットのいずれかが使用可能になったとき、再構築モジュールは、選択された記憶位置における一時的記憶からホームＤＳＴ実行ユニットへのフォスタ・スライスの移行を推進することができる。フォスタ符号化データ・スライスの一時的記憶を推進すると、再構築モジュールは、フォスタ符号化データ・スライスを少なくとも１つの候補記憶位置に関連付けるように記憶位置リストを更新することができる。
【０２７１】
図５１は、データを再構築する別の例を示すフローチャートである。方法はステップ５２２から開始または継続し、このステップでは、（たとえば、再構築モジュールの）処理モジュールは、符号化されたデータ・スライスに関連付けられたストレージ・エラーを識別する。たとえば、処理モジュールは、使用不可能なメモリ・デバイスを識別し、符号化されたデータ・スライスとして使用不可能なメモリ・デバイスに関連付けられた符号化されたデータ・スライスを識別する。方法はステップ５２４に続き、このステップでは、処理モジュールは、符号化されたデータ・スライスに関連付けられた散在ストレージ・ネットワーク（ＤＳＮ）構成情報を入手する。
【０２７２】
方法はステップ５２６に続き、このステップでは、処理モジュールは、再構築された符号化データ・スライスをフォスタ符号化データ・スライスとして生成し、再構築された符号化データ・スライスは、ストレージ・エラーに関連付けられた符号化データ・スライスに対応する。たとえば、処理モジュールは、符号化されたデータ・スライスに関連付けられたセットの符号化されたデータ・スライスのうちの復号閾値数の符号化されたデータ・スライスを回復し、復号閾値数の符号化されたデータ・スライスを散在ストレージ・エラー復号して、データ・セグメントを作成し、回復されたデータ・セグメントを散在ストレージ・エラー符号化して、再構築された符号化されたデータ・スライスを作成する。
【０２７３】
方法はステップ５２８に続き、このステップでは、処理モジュールは、ＤＳＮ構成情報に基づいて、フォスタ符号化データ・スライスに対する候補記憶位置を識別する。たとえば、処理モジュールは、識別された使用不可能なメモリ・デバイスに関連付けられたサイトにおいてストレージ・ユニットを識別する。別の例として、処理モジュールは、識別された使用不可能なメモリ・デバイスに関連付けられたサイトに隣接するサイトにおいて別のストレージ・ユニットを識別する。
【０２７４】
方法はステップ５３０に続き、このステップでは、処理モジュールは、識別された候補記憶位置の記憶ステータスを決定する。たとえば、処理モジュールは、記憶ステータス要求を開始し、識別された候補記憶位置の記憶ステータスを示す記憶ステータス応答を受け取る。
【０２７５】
方法はステップ５３２に続き、このステップでは、処理モジュールは、記憶ステータスおよびＤＳＮ構成情報に基づいて、候補記憶位置から少なくとも１つの記憶位置を選択する。たとえば、処理モジュールは、識別された使用不可能なメモリ・デバイスに関連付けられたサイトにおけるストレージ・ユニットを、そのストレージ・ユニットがフォスタ符号化データ・スライスを記憶するために使用可能であって、ストレージ・ユニットの記憶状態によると十分なメモリ容量を有するときに、選択する。
【０２７６】
方法はステップ５３４に続き、このステップでは、処理モジュールは、選択された少なくとも１つの記憶位置においてフォスタ符号化データ・スライスの一時的記憶を推進する。たとえば、処理モジュールは、記憶位置が処理モジュールに関連付けられた共通のストレージ・ユニットの別のメモリであるとき、ローカル・メモリにフォスタ符号化データ・スライスを記憶する。別の例として、処理モジュールは、スライス書込み要求を選択された記憶位置のストレージ・ユニットへ発行し、スライス書込み要求は、フォスタ符号化データ・スライスを含む。
【０２７７】
方法はステップ５３６に続き、このステップでは、処理モジュールは、選択された少なくとも１つの記憶位置とフォスタ符号化データ・スライスを関連付けるように記憶位置リストを更新する。その更新することは、選択された少なくとも１つの記憶位置のそれぞれについて、選択された記憶位置に関連付けられた１つまたは複数の識別子とフォスタ符号化データ・スライスのスライス名とを関連付けるように、散在階層インデックスおよびＤＳＮディレクトリのうちの１つまたは複数を更新することを含む。
【０２７８】
図５２は、散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図であり、散在ストレージ・ネットワーク（ＤＳＮ）は、図４の散在ストレージ（ＤＳ）エラー符号化１１２、分子エンコーダ５４０、分子シンセサイザ５４２、分子ストレージ５４４、分子シーケンサ５４６、分子デコーダ５４８、および図１３のＤＳエラー復号１８２を含む。分子エンコーダ５４０および分子デコーダ５４８は、図３の処理モジュール８４、図１の分散ストレージおよびタスク（ＤＳＴ）クライアント・モジュール３４、図４のグルーピング選択器１１４、ならびに図３のアウトバウンドＤＳＴ処理８０のうちの１つまたは複数を利用して実装され得る。分子シンセサイザ５４２は、オリゴヌクレオチド・シンセサイザを利用して実装され得る。分子シーケンサ５４６は、デオキシリボ核酸（ＤＮＡ）シーケンサを利用して実装され得る。分子ストレージ５４４は、符号化された分子５５８を維持するための環境を含み、そこでは、経年、放射、および環境条件のうちの１つまたは複数による劣化が最小限にされる。以下では、符号化された分子５５８は交換可能に分子ストレージ構造と呼ばれることがある。分子ストレージ５４４は、１つまたは複数の分子ストレージ・ユニットを含むことができ、分子ストレージ・ユニットのセットは、１つまたは複数のセットの分子を実質的にパーティション化する。
【０２７９】
ＤＳＮは、分子ストレージ５４４内の符号化された分子５５８としてデータ５５０を記憶して、取り出された符号化分子５６４から回復されたデータ５７０を作成する。データ５５０を記憶する動作の例として、ＤＳエラー符号化１１２は、データ５５０、およびデータ５５０に関連付けられた識別子（ＩＤ）情報５５２を受け取る。識別子情報５５２は、データ・オブジェクトＩＤ、ＤＳＮアドレス、ソース名、仮想ＤＳＮアドレス、スライス名、記憶ＩＤ情報５６０、および取出しＩＤ情報５６２のうちの１つまたは複数を含む。
【０２８０】
記憶ＩＤ情報５６０および取出しＩＤ情報５６２は、符号化された分子の記憶および取出しを推進するために、符号化された分子５５８に関連付けられた１つまたは複数の識別子を含む。たとえば、第１の記憶ＩＤは、分子ストレージ５４４の分子ストレージ・ユニットのセットの第１の分子ストレージ・ユニットに記憶されることになる第１の分子に関連付けられた識別子を含み、第２の記憶ＩＤは、分子ストレージ５４４の分子ストレージ・ユニットのセットの第２の分子ストレージ・ユニットに記憶されることになる第２の分子に関連付けられた識別子を含むなどである。記憶ＩＤ情報５６０および取出しＩＤ情報５６２は、１つまたは複数の業界または独自あるいは両方の規格に従って符号化され得る。たとえば、第１の記憶ＩＤは、固有の第１のインターネット・プロトコル（ＩＰ）アドレスを利用して実装され、第２の記憶ＩＤは、固有の第２のＩＰアドレスを利用して実装されるなどである。記憶ＩＤ情報５６０および取出しＩＤ情報５６２は、データベース・システム、ＤＳＮディレクトリ、散在階層インデックスのうちの１つまたは複数に保持され、符号化された分子５５８として分子ストレージ５４４に保持され得る。
【０２８１】
データ５５０およびＩＤ情報５５２を受け取ると、ＤＳエラー符号化１１２は、データ５５０を複数のデータ・セグメント１〜Ｓにパーティション化する。データ５５０をパーティション化すると、ＤＳエラー符号化１１２は、各データ・セグメントを散在ストレージ・エラー符号化して、符号化されたデータ・スライス１〜ｎのセットにする。ここで符号化されたデータ・スライスのセットの復号閾値数の符号化されたデータ・スライスが、データ・セグメントを回復するために必要とされ、各スライスは、１つまたは複数のコード化されたブロックを含む。各コード化されたブロックは、散在ストレージ・エラー・符号化機能の符号化行列に、データ５５０を含むデータ行列の行を乗じた行列の結果として生成された、１つまたは複数のバイトを含む。
【０２８２】
複数のセットの符号化されたデータ・スライス５５４を生成すると、ＤＳエラー符号化１１２は、複数の符号化されたデータ・スライス５５４のうちの１つまたは複数にＩＤ情報の部分を付加する。たとえば、ＤＳエラー符号化１１２は、対応するスライス名を各符号化されたデータ・スライスに付加する。別の例として、ＤＳエラー符号化１１２は、（たとえば、後続する記憶のために、散在階層インデックスのノードに含めるために、ＩＤ情報５５２をデータ５５０に関連付けるＤＳＮディレクトリに含めるために）ＩＤ情報５５２を散在ストレージ・エラー符号化して、符号化された識別子スライスのセットを作成する。
【０２８３】
分子エンコーダ５４０は、複数のセットの符号化されたデータ・スライス５５４、ＩＤ情報の付加された部分、ＩＤ情報５５２、および符号化された識別子スライスのセットのうちの１つまたは複数を、翻訳手法に従って分子符号化情報５５６に翻訳する。分子符号化情報５５６は、複数の分子（たとえば、ＤＮＡ分子、他の分子）のパターンを符号化することを含む。その符号化することは、翻訳手法を入手することを含むことができる。翻訳手法を入手することは、ＩＤ情報５５２、各スライスのサイズ、データのサイズ、使用可能なストレージ機構、事前決定、および問合せ応答の解釈のうちの１つまたは複数に基づくことができる。
【０２８４】
翻訳手法は、少なくとも３つの手法を含む。第１の手法は、符号化されたデータ・スライス・フィールドの複数のビットの各順列が、分子構造の対応する変形体にマッピングされることを含む。たとえば、ＤＮＡ、ＤＮＡ部分、またはジャンクＤＮＡの１つまたは複数の遺伝子の分子にマッピングされる。第２の手法は、スライス・フィールドの複数のビットの各順列が、２つ以上の分子構造の対応する変形体にマッピングすることを含む。たとえば、ｑ元符号化手法において、ｑは２以上である。第３の手法は、符号化されたデータ・スライス・フィールドのコード化されたブロックの一部分の複数のビットの順列が、１つまたは複数の分子構造の対応する変形体にマッピングされることを含む。
【０２８５】
複数のセットの符号化されたデータ・スライス５５４のうちの１つまたは複数を翻訳して、分子符号化情報５５６を作成する動作の例として、分子エンコーダ５４０は、翻訳のために選択された符号化データ・スライスに基づいて数を生成し、その数に基づいて遺伝子を識別して、識別された遺伝子を作成する。たとえば、分子エンコーダ５４０は、符号化されたデータ・スライスのセットのうちの符号化されたデータ・スライスのデータ（たとえば、１つまたは複数のコード化されたブロックなどのスライス部分）を数に変換し（たとえば、一致するまたは数探索を行う）、そして、数を遺伝子識別として使用して、遺伝子を識別する（たとえば、一致するまたは遺伝子探索を行う）。別の例として、分子エンコーダ５４０は、符号化されたデータ・スライスのセットのうちの符号化されたデータ・スライスのデータに対して数学関数（たとえば、ハッシュ関数、ハッシュベースのメッセージ認証コード、マスク生成関数、およびスポンジ関数のうちの少なくとも１つなどの確定関数）を実行して、数を作成し、その数を遺伝子識別子として使用して遺伝子を識別する。さらに別の例として、分子エンコーダ５４０は、符号化されたデータ・スライスのセットのうちの符号化されたデータ・スライスのデータを複数の数（たとえば、１つまたは複数のコード化されたブロックに対する数）に変換する。ここで、複数の数は、数を含み、複数の数から複数の遺伝子識別子を生成し、複数の遺伝子識別子を使用して複数の遺伝子を識別し、ここで、複数の遺伝子は、遺伝子を含む。さらに他の例として、分子エンコーダ５４０は、符号化されたデータ・スライスに基づいて予備数を生成し、予備数が既知の遺伝子識別子と合致するかどうかを決定し（たとえば、探索を試みる）、予備数が既知の遺伝子識別子と実質的に合致するとき、数を予備数に設定し、または予備数が既知の遺伝子識別子と実質的に合致しないとき、予備数に対して関数（たとえば、別の確定関数）を実行して数を作成する。
【０２８６】
遺伝子を識別すると、分子エンコーダ５４０は、符号化されたデータ・スライスを識別された遺伝子にリンクするリンク識別子（たとえば、ＩＤ情報５５２、または符号化されたデータ・スライスに対応するスライス名、あるいはその両方）を作り出す。ここで、符号化されたデータ・スライスのセットについて、識別された遺伝子のセット、およびリンク識別子のセットが作り出される。具体的な例として、複数の遺伝子識別子を使用して複数の遺伝子を識別する場合、分子エンコーダ５４０は、符号化されたデータ・スライスを複数の識別された遺伝子にリンクするリンク識別子を作り出す。別の具体的な例として、予備数に対して関数を実行して数を作成する場合、分子エンコーダ５４０は、符号化されたデータ・スライスを識別された遺伝子にリンクし、予備数に対して実行された関数を識別するリンク識別子を作り出す。
【０２８７】
リンク識別子を作成すると、分子エンコーダ５４０は、識別された遺伝子のセットおよびリンク識別子のセットから分子符号化情報５５６を生成し、分子符号化情報５５６を分子エンコーダ５４０のインターフェースを介して分子シンセサイザ５４２に出力する。ここで、分子符号化情報５５６は、分子シンセサイザ５４２によって、識別された遺伝子のセットの各識別された遺伝子について分子ストレージ構造を作り出して、分子ストレージ構造のセットを生じさせるために使用される。分子エンコーダ５４０の動作の方法については、図５５〜図５７を参照してより詳細に論じられる。
【０２８８】
分子符号化情報５５６を作成すると、分子シンセサイザ５４２は、分子符号化情報５５６を処理して、記憶ＩＤ情報５６０に従って、分子ストレージ５４４への記憶のための符号化された分子５５８の集合を作製する。たとえば、第２の符号化されたデータ・スライスのセットの第３の符号化されたデータ・スライスについて、分子エンコーダ５４０は、第３の符号化されたデータ・スライスを分子符号化情報の第３の分子符号化に翻訳し、分子シンセサイザ５４２は、第３の分子符号化を分子ストレージ５４４の第３のストレージ・ユニットのために第３の符号化された分子になるように作製し、ここで、第３のストレージ・ユニットは、記憶ＩＤ情報の第３の記憶ＩＤに関連付けられる。あるいは、分子シンセサイザ５４２は、直接経路によって、符号化された分子５５８を分子シーケンサ５４６に送る。たとえば、分子シンセサイザ５４２は、テスト要求を受け取り、符号化された分子５５８を分子シーケンサ５４６に送る。
【０２８９】
符号化された分子５５８が分子ストレージ５４４に記憶された状態で、ＤＳＮは、分子構造のセットにおける識別された遺伝子のセットの記憶を検証することができる（たとえば、分子ストレージ構造５４４における符号化された分子５５８としてのデータ５５０の記憶を検証する）。検証する動作の例として、分子シーケンサ５４６は、分子ストレージ構造のセットの少なくともテスト復号閾値数の分子ストレージ構造（たとえば、取り出された符号化分子５６４）にアクセスして、識別された遺伝子のセットの少なくとも復号閾値数の識別された遺伝子（たとえば分子復号情報５６６）を取り出す。分子デコーダ５４８は、少なくともテスト復号閾値数の識別された遺伝子から、少なくともテスト復号閾値数のテスト符号化データ・スライス（test encoded data slice）（たとえば、回復されたスライス５６８）を回復する。ＤＳエラー復号１８２は、少なくともテスト復号閾値数のテスト符号化データ・スライスからデータ・セグメントを再構成して、再構成されたデータ・セグメント（たとえば、回復されたデータ５７０の一部分）を作成する。ＤＳエラー符号化１１２、分子エンコーダ５４０、分子デコーダ５４８、およびＤＳエラー復号１８２のうちの少なくとも１つは、再構成されたデータ・セグメントがデータ・セグメントと実質的に合致するとき、検証可能な記憶のレベルを示す。そのレベルは、データ取出し信頼性の推定されたレベル、データ記憶可用性の推定されたレベル、アクセスされた分子ストレージ構造の数、識別された遺伝子の数、およびテスト符号化データ・スライスの数のうちの少なくとも１つを含む。
【０２９０】
回復されたデータ５７０としてデータ５５０を回復する動作の例として、ＤＳエラー復号１８２が、取出しＩＤ情報５６２に従って、データに関連付けられた符号化分子のいくつかの取出しを推進して取り出された符号化分子５６４を作成する。たとえば、ＤＳエラー復号１８２は、取出しのためのデータを（たとえば、ＤＮＳディレクトリを利用してデータ５５０の名前を取出しＩＤ情報５６２に翻訳することによって）識別し、取出しＩＤ情報５６２を分子ストレージ５４４に出力して、分子ストレージ５４４からの取り出された符号化分子５６４の抽出を推進する。  取出しＩＤ情報５６２を受け取ると、分子ストレージ５４４は、取出しＩＤ情報５６２に従って、取り出された符号化分子５６４を分子シーケンサ５４６に提供する。たとえば、分子ストレージ５４４は、分子のセットの記憶に関連付けられたストレージ・ユニットのセットを取出しＩＤ情報５６２が識別するとき、取り出された符号化分子５５４として分子シーケンサ５４６に、分子のセットのうちの少なくとも復号閾値数の分子を提供する。
【０２９１】
取り出された符号化された分子５６４を受け取ると、分子シーケンサ５４６は、符号化された分子の集合に関連付けられたシークエンシング方式に従って、取り出された符号化分子５６４を分析して、分子復号情報５６６を提供し、分子復号情報５６６を分子デコーダ５４８に送る。たとえば、分子シーケンサ５４６は、ＤＮＡシークエンシング方式に従って、取り出された符号化分子５６４を分析して、分子復号情報５６６を作成して、分子復号情報５６６を分子デコーダ５４８に送る。分子復号情報５６６は、識別されたＤＮＡ構造（たとえば、１つまたは複数の遺伝子）およびコンポーネントを含む。
【０２９２】
分子復号情報５６６を受け取ると、分子デコーダ５４８は、翻訳手法に従って、分子復号情報５６６を復号して、複数のセットの符号化されたデータ・スライス５５４の回復されたスライス５６８を作成し、回復されたスライス５６８をＤＳエラー復号１８２に送り、少なくとも復号閾値数の符号化されたデータ・スライスが、各セットの符号化されたデータ・スライスについて回復される。その復号することは、回復されたスライスに関連付けられた（たとえばリンク識別子からの）スライス名を解釈して、各データ・セグメント１〜Ｓについての回復されたスライス１〜ｋのグループ化を推進することをさらに含むことができる。
【０２９３】
回復されたスライス５６８を受け取ると、ＤＳエラー復号１８２は、符号化されたデータ・スライスのセットごとの復号閾値数の回復されたスライスを散在ストレージ・エラー復号して、複数の回復されたデータ・セグメント１〜Ｓを作成する。ＤＳエラー復号１８２は、複数の回復されたデータ・セグメント１〜Ｓを集約して、回復されたデータ５７０を作成する。ＤＳエラー復号１８２はさらに、符号化された識別子スライスのセットの別の復号閾値数の回復されたスライスを散在ストレージ・エラー復号して、回復されたＩＤ情報５７２としてＩＤ情報の部分を再現することができる。代わりにまたは加えて、ＤＳエラー復号１８２は、回復されたスライスのうちの１つまたは複数からＩＤ情報の部分を分離して、回復されたＩＤ情報５７２を作成する（たとえばリンク識別子を抽出する）ことができる。
【０２９４】
図５３は、分子構成を介してデータにアクセスする例を示すフローチャートである。データを記憶するとき、方法はステップ５８０から開始または継続し、このステップでは、エンコーダが、記憶するデータおよびデータ識別情報に基づいて複数のデータ・セグメントを生成する。その生成することは、パーティション化方式に従ってデータをパーティション化してデータ・セグメントを作成すること、およびデータ識別情報の一部分をデータ・セグメントのうちの１つまたは複数に付加することのうちの１つまたは複数を含む。
【０２９５】
方法はステップ５８２に続き、このステップでは、エンコーダは、散在ストレージ・エラー符号化機能に従って、複数のデータ・セグメントのそれぞれを符号化して、複数のセットの符号化されたデータ・スライスを作成する。その符号化することは、データ識別情報を、符号化されたデータ・スライスのうちの１つまたは複数と組み合わせることをさらに含むことができる。その組み合わせることは、付加することおよびインターリーブすることのうちの少なくとも１つを含む。代わりにまたは加えて、エンコーダは、散在ストレージ・エラー符号化機能を使用してデータ識別情報を符号化して、符号化された識別子スライスのセットを作成する。
【０２９６】
方法はステップ５８４に続き、このステップでは、分子エンコーダは、翻訳手法に従って、複数のセットの符号化されたデータ・スライスを分子符号化情報に翻訳する。たとえば、分子エンコーダは、翻訳手法を入手し、各セットの符号化されたデータ・スライスの各符号されたデータ・スライスを分子のセットの分子についての分子符号化情報に翻訳する。
【０２９７】
方法はステップ５８６に続き、このステップでは、分子シンセサイザが、分子符号化情報を処理して符号化された分子の集合を作製する。たとえば、分子シンセサイザは、分子符号化情報を処理して、符号化されたデータ・スライスの各セットに対する符号化された分子のセットを作製する。別の例として、分子シンセサイザは、分子符号化情報を処理して、符号化されたデータ・スライスの２つ以上のセットに対する符号化された分子のセットを作製する。さらに別の例として、分子シンセサイザは、分子符号化情報を処理して、符号化されたデータ・スライスの各セットに対する単一の分子を作製し、単一の分子の一部分が、符号化されたデータ・スライスのセットのうちの符号化されたデータ・スライスを表す。
【０２９８】
方法はステップ５８８に続き、このステップでは、分子ストレージが、ストレージ識別情報に従って、符号化された分子の集合を記憶する。たとえば、分子ストレージは、データ識別情報を解釈してストレージ識別情報を作成し、ストレージ識別情報を利用して、分子ストレージの１つまたは複数のストレージ機構に符号化された分子の集合を記憶する。
【０２９９】
データを取り出すとき、方法はステップ５９０から継続し、このステップでは、デコーダが、取出し識別情報に従って、分子の集合の符号化された分子の少なくともいくつかの取出しを推進する。たとえば、デコーダは、取出し識別情報を受け取り、取出し識別情報を分子ストレージに送る。
【０３００】
方法はステップ５９２に続き、このステップでは、分子シンセサイザが、符号化された分子の集合に関連付けられたシークエンシング方式に従って、取り出された符号化分子を分析して分子復号情報を作成する。たとえば、分子シーケンサは、取出し識別情報に基づいて探索を実行することによって、符号化された分子の集合に基づいてシークエンシング方式を入手する。
【０３０１】
方法はステップ５９４に続き、このステップでは、分子デコーダが、翻訳手法に従って、分子復号情報を復号して回復されたスライスを作成する。たとえば、分子デコーダは、翻訳手法のマッピングを入手し、翻訳手法のマッピングに対する比較に基づいて分子復号情報のパターンを識別し、識別されたパターンを、符号化されたデータ・スライスのブロックに回復されたスライスとして翻訳する。方法はステップ５９６に続き、このステップでは、デコーダが、散在ストレージ・エラー符号化機能を利用して、符号化されたデータ・スライスのセットごとの復号閾値数の回復された符号化データ・スライスを復号して、回復されたデータおよび回復されたデータ識別情報を作成する。
【０３０２】
図５４は、データ記憶のための分子符号化情報を生成する例を示すフローチャートである。特に、方法は、図１〜図３９、図５２〜図５３、さらに図５４と関連して説明される１つまたは複数の機能および特徴と共に使用されるように提示される。方法はステップ６００から開始し、このステップでは、１つまたは複数のコンピューティング・デバイスのうちのコンピューティング・デバイスの処理モジュールが、符号化されたデータ・スライスのセットの各符号化されたデータ・スライスについて、符号化されたデータ・スライスに基づいて数を生成する。データ・セグメントは、符号化されたデータ・スライスのセットへ散在ストレージ・エラー符号化される。符号化されたデータ・スライスのセットの復号閾値数の符号化されたデータ・スライスが、散在ストレージ・エラー符号化機能に従ってデータ・セグメントを回復するために必要とされる。
【０３０３】
方法はステップ６０２に続き、このステップでは、処理モジュールは、その数に基づいて遺伝子を識別して、識別された遺伝子を作成する。具体的な例として、処理モジュールは、符号化されたデータ・スライスのセットのうちの符号化されたデータ・スライスのデータを数に変換し、その数を遺伝子識別子として使用して遺伝子を識別する。別の具体的な例として、処理モジュールは、符号化されたデータ・スライスのセットのうちの符号化されたデータ・スライスのデータに対して数学関数を実行して数を作成し、その数を遺伝子識別子として使用して遺伝子を識別する。さらに別の具体的な例として、処理モジュールは、符号化されたデータ・スライスのセットのうちの符号化されたデータ・スライスのデータを、複数の数に変換し、ここで複数の数は上記数を含み、処理モジュールはさらに、複数の数から複数の遺伝子識別子を生成し、複数の遺伝子識別子を使用して複数の遺伝子を識別し、ここで複数の遺伝子は上記遺伝子を含む。さらなる例として、処理モジュールは、符号化されたデータ・スライスに基づいて予備数を生成し、予備数が既知の遺伝子識別子と実質的に合致するかどうかを決定し、予備数が既知の遺伝子識別子と実質的に合致するとき、数を予備数に設定し、予備数が既知の遺伝子識別子と実質的に合致しないとき、予備数に対して関数を実行して数を作成する。
【０３０４】
方法はステップ６０４に続き、このステップでは、処理モジュールは、符号化されたデータ・スライスを識別された遺伝子にリンクするリンク識別子を作り出し、符号化されたデータ・スライスのセットについて、識別された遺伝子のセット、およびリンク識別子のセットが作り出される。具体的な例として、複数の遺伝子識別子を使用して複数の遺伝子を識別するとき、処理モジュールは、符号化されたデータ・スライスを複数の識別された遺伝子にリンクするリンク識別子を作り出す。別の具体的な例として、予備数に対して関数を実行して数を作成するとき、処理モジュールは、符号化されたデータ・スライスを識別された遺伝子にリンクし、予備数に対して実行された関数を識別するリンク識別子を作り出す。方法はステップ６０６に続き、このステップでは、処理モジュールは、識別された遺伝子のセットおよびリンク識別子のセットから分子符号化情報を生成する。分子符号化情報は、識別された遺伝子のセットの各識別された遺伝子について分子ストレージ構造を作り出して、分子ストレージ構造のセットを生じさせるために使用される。
【０３０５】
分子構造のセットにおける識別された遺伝子のセットの記憶を検証するとき、方法はステップ６０８に続き、このステップでは、処理モジュールは、分子ストレージ構造のセットの少なくともテスト復号閾値数の分子ストレージ構造にアクセスして、識別された遺伝子のセットの少なくとも復号閾値数の識別された遺伝子を取り出す。方法はステップ６１０に続き、このステップでは、処理モジュールは、少なくともテスト復号閾値数の識別された遺伝子から、少なくともテスト復号閾値数のテスト符号化データ・スライスを回復する。方法はステップ６１２に続き、このステップでは、処理モジュールは、少なくともテスト復号閾値数のテスト符号化データ・スライスからデータ・セグメントを再構成して、再構成されたデータ・セグメントを作成する。再構成されたデータ・セグメントがデータ・セグメントと実質的に合致するとき方法はステップ６１４に続き、このステップでは、処理モジュールは、検証可能な記憶のレベルを示す。
【０３０６】
処理モジュールと関連して上述された方法は、散在ストレージ・ネットワークの他のモジュール、または他のデバイスによって代わりに実行され得る。加えて、コンピュータ可読記憶媒体の少なくとも１つのメモリ部が、散在ストレージ・ネットワーク（ＤＳＮ）の１つまたは複数のコンピューティング・デバイスの１つまたは複数の処理モジュールによって実行されたとき、上述された任意またはすべての方法ステップを１つまたは複数のコンピューティング・デバイスに実行させることができる。
【０３０７】
図５５は、分子エンコーダ５４０の実施形態の概略ブロック図であり、分子エンコーダ５４０は、トランスレータ１〜ｎのセット、およびフォーマッティング・モジュール６２０を含む。各トランスレータおよびフォーマッティング・モジュール６２０は、処理モジュール（たとえば、図３の処理モジュール８４）を利用して実装され得る。分子エンコーダ５４０は、翻訳手法に従って、複数のセットの符号化されたデータ・スライスを分子符号化情報５５６に翻訳するように機能する。ここで、翻訳手法は、以前に記憶されたデータに関しない翻訳を含む。分子符号化情報５５６は、複数の分子についての符号化パターンを含む。
【０３０８】
動作の例として、各トランスレータは、符号化されたデータ・スライス１〜ｎのセットの対応する符号化されたデータ・スライスの部分のビット・パターンを、遺伝子のセットにマッピングする。そのマッピングすることは、探索を実行すること、問合せを開始すること、問合せ応答を受け取ること、および確定関数を適用することのうちの１つまたは複数を含む。符号化されたデータ・スライスの部分の数は、スライス・サイズに基づくことができ、各部分の順列の数は、分子ごとの使用可能な数の遺伝子の順列の数より少ない。たとえば、トランスレータ１が、符号化されたデータ・スライス１を遺伝子識別子（ＩＤ）セット１にマッピングし、トランスレータ２が、符号化されたデータ・スライス２を遺伝子ＩＤセット２にマッピングするなどを行う。
【０３０９】
対応する符号化されたデータ・スライスの部分のビット・パターンを遺伝子のセットにマッピングすると、トランスレータは、符号化されたデータ・スライスの識別情報（たとえばスライス名）を入手する。その入手することは、識別情報を受け取ること、符号化されたデータ・スライスから識別情報を抽出すること、および再現されたデータ・セグメントから識別情報を後で抽出することのうちの１つまたは複数を含む。たとえば、トランスレータ１が、符号化されたデータ・スライス１についての識別（ＩＤ）情報１をＩＤ情報１（ID info 1）として入手し、トランスレータ２が、符号化されたデータ・スライス１についてのＩＤ情報２をＩＤ情報２（ID info 2）として入手するなどを行う。
【０３１０】
トランスレータ１〜ｎのセットから遺伝子識別子および識別情報を受け取ると、フォーマッティング・モジュール６２０は、図５２の翻訳手法に従って、各遺伝子識別子セットおよび対応するＩＤ情報を分子符号化情報５５６の一部分に翻訳する。たとえば、フォーマッティング・モジュールは、遺伝子の組合せと各遺伝子識別子セットの識別子情報をマッピングして、対応する分子符号化を作成し、このマッピングは、遺伝子組合せおよび識別子情報の分子符号化へのマッピングに従う。
【０３１１】
図５６は、分子エンコーダ５４０の別の実施形態の概略ブロック図であり、分子エンコーダ５４０は、図５５のトランスレータ１〜ｎのセット、相関器１〜ｎのセット、およびフォーマッティング・モジュール６２２を含む。各相関器およびフォーマッティング・モジュール６２２は、処理モジュールを利用して実装され得る。分子エンコーダ５４０は、翻訳手法に従って、複数のセットの符号化されたデータ・スライスを分子符号化情報５５６に翻訳するように機能する。ここで、翻訳手法は、以前に記憶されたデータに関する翻訳を含む。分子符号化情報５５６は、複数の分子についての符号化パターンを含む。
【０３１２】
動作の例として、各トランスレータは、符号化されたデータ・スライス１〜ｎのセットの対応する符号化されたデータ・スライスの部分のビット・パターンを、遺伝子のセットにマッピングする。たとえば、トランスレータ１が、符号化されたデータ・スライス１を遺伝子識別子（ＩＤ）セット１にマッピングし、トランスレータ２が、符号化されたデータ・スライス２を遺伝子ＩＤセット２にマッピングするなどを行う。
【０３１３】
対応する符号化されたデータ・スライスの部分のビット・パターンを遺伝子のセットにマッピングすると、トランスレータは、符号化されたデータ・スライスの識別情報（たとえばスライス名）を入手する。たとえば、トランスレータ１が、符号化されたデータ・スライス１についての識別（ＩＤ）情報１をＩＤ情報１として入手し、トランスレータ２が、符号化されたデータ・スライス１についてのＩＤ情報２をＩＤ情報２として入手するなどを行う。
【０３１４】
遺伝子識別子セットおよび対応する識別情報を受け取ると、各相関器は、記憶されたデータに関連付けられた類似の遺伝子ＩＤを識別する。その識別することは、遺伝子ＩＤセットを記憶された遺伝子ＩＤセット情報６２４（たとえば、以前に記憶された遺伝子ＩＤセットのディレクトリまたはリスト）と比較すること、および最も一致する遺伝子ＩＤセット（たとえば、類似の遺伝子に対する一致の割合が最も高い）を識別することを含む。その識別することは、記憶された遺伝子ＩＤセット情報６２４を入手することをさらに含むことができる。その入手することは、ディレクトリから取り出すこと、散在階層インデックスから取り出すこと、および分子ストレージ機構から取り出すことのうちの少なくとも１つを含む。
【０３１５】
最も一致する遺伝子ＩＤセットを識別すると、相関器は、遺伝子ＩＤセットおよび最も一致する遺伝子ＩＤセットに基づいて、差分遺伝子ＩＤセット（difference gene ID set）を決定する。たとえば、相関器は、遺伝子ＩＤセットの遺伝子と最も一致する遺伝子ＩＤセットの識別された遺伝子との間の距離遺伝子として、遺伝子の遺伝子識別子と最も一致する遺伝子ＩＤセットの識別された遺伝子との間の数値差に基づいて、遺伝子を識別する。たとえば、相関器１は、遺伝子ＩＤセット１を、記憶された遺伝子ＩＤセット情報と相関付けて、差分遺伝子ＩＤセット１を作成する。
【０３１６】
差分遺伝子ＩＤセットを決定すると、各相関器は、対応するＩＤ情報を更新して、更新されたＩＤ情報を作成する。その更新することは、最も一致する遺伝子セットへのポインタを生成すること、およびポインタをＩＤ情報に付加して更新されたＩＤ情報を作成することを含む。たとえば、相関器１は、最も一致する遺伝子識別子セットを識別し、識別された最も一致する遺伝子識別子セットについての記憶位置情報を入手し、位置情報を識別子情報１に付加して更新された識別子情報１を作成し、更新されたＩＤ情報１をフォーマッティング・モジュールに送る。
【０３１７】
相関器の１〜ｎのセットからの差分遺伝子セットおよび更新された識別情報のセットを受け取ると、フォーマッティング・モジュール６２２は、図５２の翻訳手法に従って、各差分遺伝子識別子セットおよび更新されたＩＤ情報を、分子符号化情報５５６の一部分に翻訳する。たとえば、フォーマッティング・モジュール６２２は、差分遺伝子の組合せと各差分遺伝子識別子セットの更新された識別子情報をマッピングして、対応する分子符号化を作成し、このマッピングは、遺伝子組合せおよび識別子情報の分子符号化へのマッピングに従う。
【０３１８】
図５７は、分子符号化情報を生成する例を示すフローチャートである。方法はステップ６２６から開始または継続し、このステップでは、（たとえば分子エンコーダの）処理モジュールが、符号化されたデータ・スライスのセットを入手する。ここで、データ・セグメントは、散在ストレージ・エラー符号化されて、符号化されたデータ・スライスのセットが作成される。各符号化されたデータ・スライスについて、方法はステップ６２８に続き、このステップでは、処理モジュールは、符号化されたデータ・スライスの一部分のビット・パターンをセットの遺伝子にマッピングする。たとえば、処理モジュールは、確定関数をビット・パターンに適用して、遺伝子のセットの識別子を作成する。
【０３１９】
各符号化されたデータ・スライスについて、方法はステップ６３０に続き、このステップでは、処理モジュールは識別情報を入手する。たとえば、処理モジュールは、セットの符号化されたデータ・スライスの１つまたは複数から、識別情報を抽出する。方法はステップ６３２に続き、このステップでは、処理モジュールは、類似遺伝子識別（ＩＤ）セット情報を入手する。その入手することは、遺伝子のセットの１つまたは複数の識別情報および識別子のうちの１つまたは複数を受け取ること、およびそれらに基づいて探索を実行することのうちの１つまたは複数を含む。たとえば、処理モジュールは、遺伝子のセットに対して確定関数を実行して検索ファクタを作成し、検索ファクタを、記憶された遺伝子セットに関連付けられたファクタと比較する。
【０３２０】
方法はステップ６３４に続き、このステップでは、処理モジュールは、遺伝子のセットおよび類似遺伝子ＩＤセット情報の１つまたは複数の部分に相関関数を適用して、１つまたは複数の相関値を作成する。たとえば、処理モジュールは、遺伝子のセットと実質的に同じである類似遺伝子ＩＤセット情報の遺伝子ＩＤセットを識別する。別の例として、処理モジュールは、遺伝子のセットとの違いが１０％未満である類似遺伝子ＩＤセット情報の別の遺伝子ＩＤセットを識別する。
【０３２１】
方法はステップ６３６に続き、このステップでは、処理モジュールは、１つまたは複数の相関値に基づいて類似遺伝子ＩＤセット情報の一部分を選択する。その選択することは、好ましい相関値を識別すること（たとえば、相関が相関閾値レベルよりも大きい）、好ましい相関値を順位付けること、最も好ましい相関値を選択すること、および、選択された最も好ましい相関値に対応する類似遺伝子ＩＤセット情報の部分を識別することを含む。
【０３２２】
方法はステップ６３８に続き、このステップでは、類似遺伝子セット情報および遺伝子のセットに基づいて、遺伝子の差集合を決定する。たとえば、処理モジュールは、遺伝子のセットの類似遺伝子ＩＤ情報の遺伝子識別子の間の差を計算して、遺伝子の差集合を作成する。代わりにまたは加えて、処理モジュールは、類似遺伝子ＩＤセット情報の選択された部分のアドレス指定情報を含むようにＩＤ情報を更新する。方法は、遺伝子の差集合および更新されたＩＤ情報のそれぞれを翻訳して分子符号化情報を作成することをさらに含むことができる。
【０３２３】
図５８、図５９、図６０は、重要情報を保持する例を示す散在ストレージ・ネットワーク（ＤＳＮ）の別の実施形態の概略ブロック図である。ＤＳＮは、分散ストレージおよびタスク（ＤＳＴ）実行ユニット１〜ｎのセット、ならびに図１のネットワーク２４を含む。各ＤＳＴ実行ユニットは、図１のＤＳＴクライアント・モジュール３４、および図３のメモリ８８を含む。メモリ８８は、複数のメモリ・デバイス１〜ｍを含む。各ＤＳＴ実行ユニットは、図１のＤＳＴ実行ユニット３６を利用して実装され得る。
【０３２４】
ＤＳＮは、重要情報の記憶を保持するように機能する。重要情報は、ＤＳＮのさらなる機能（たとえば、データにアクセスする）を実行するためのＤＳＴ実行ユニットのうちの１つまたは複数の動作のために必要とされる。重要情報は、ＢＩＯＳソフトウェア、ブートストラップ・ソフトウェア、オペレーティング・システム・ソフトウェア、重要なアプリケーション・ソフトウェア、高優先度の符号化データ・スライス、構成情報（たとえば、メモリの数、メモリのタイプ、入力／出力パラメータ、ＤＳＮアドレス範囲割当て、ストレージ・エラー・アドレス範囲スキャン割当て）、システム・レジストリ情報、アクセス・リスト情報、セキュリティ情報（暗号化鍵、暗号化アルゴリズム・インジケータ、署名された証明書）、スライス記憶位置情報（スライス名、メモリ・デバイスＩＤ、メモリ・オフセット）、およびインデックス・ノード・ファイルのうちの１つまたは複数を含む。
【０３２５】
図５８は、重要情報を保持する例の初期のステップを示し、ＤＳＴ実行ユニット１の各メモリ・デバイス１〜ｍについて、ＤＳＴ実行ユニット１のＤＳＴクライアント・モジュール３４が、メモリ・デバイスに記憶された重要情報を識別する。その識別することは、重要情報タイプによって検索をすること、リストを受け取ること、問合せを開始すること、および問合せ応答を受け取ることのうちの少なくとも１つを含む。重要情報を識別すると、ＤＳＴクライアント・モジュール３４は、各メモリ・デバイスからの識別された重要情報を集約して、集約された重要情報を作成する。
【０３２６】
集約された重要情報を作成すると、ＤＳＴクライアント・モジュール３４は、集約された重要情報を散在ストレージ・エラー符号化して、１つまたは複数のセットの符号化された重要スライス６５０を作成する。１つまたは複数のセットの符号化された重要スライス６５０を作成すると、ＤＳＴクライアント・モジュール３４は、記憶位置選択方式に従って記憶位置のセットを選択する。その選択することは、リストからの受信に基づいて選択方式を入手すること、事前決定を利用すること、システム・レジストリの一部分を解釈すること、問合せを開始すること、および問合せ応答を受け取ることを含む。
【０３２７】
記憶位置選択方式は、共通のコンピューティング・デバイス（たとえば、ＤＳＴ実行ユニット１）内に記憶すること、共通の現在位置にあるコンピューティング・デバイス内に記憶すること、および１つまたは複数のサイトのコンピューティング・デバイス内に記憶することのうちの少なくとも１つを含む。たとえば、ＤＳＴクライアント・モジュール３４は、ＤＳＴ実行ユニット１のメモリ・デバイス１〜ｍのセットの第３のメモリ・デバイスを、第１の記憶位置として選択し、ＤＳＴ実行ユニットのセットのうちの残りのＤＳＴ実行ユニット２〜ｎを、記憶位置のセットのうちの残りの記憶位置として選択する。
【０３２８】
記憶位置のセットを選択すると、ＤＳＴクライアント・モジュール３４は、選択されたセットの記憶位置における、１つまたは複数のセットの符号化された重要スライス６５０の記憶を推進する。たとえば、ＤＳＴクライアント・モジュール３４は、第１の符号化された重要スライス６５２を、ＤＳＴ実行ユニット１の第３のメモリ・デバイスに書き込み、符号化された重要スライス・セット６５０の残りの符号化された重要スライス６５２を、ＤＳＴ実行ユニット２〜ｎに送る。たとえば、ＤＳＴクライアント・モジュール３４は、スライス書込み要求をＤＳＴ実行ユニット２へ発行し、スライス書込み要求は、符号化された重要スライス２を含む。
【０３２９】
図５９は、重要情報を保持する例のさらなるステップを示し、ＤＳＴクライアント・モジュール３４は、ＤＳＴ実行ユニット１のメモリ・デバイスに関連付けられた入手不能な重要情報を識別する。その識別することは、メモリ・デバイスの障害を検出すること、メモリ・デバイスの除去を検出すること、エラー・メッセージを解釈すること、およびストレージ・エラーを検出することのうちの少なくとも１つを含む。たとえば、ＤＳＴクライアント・モジュール３４は、メモリ８８のメモリ・デバイス２の障害を検出する。障害のあるメモリ・デバイスを識別すると、ＤＳＴクライアント・モジュール３４は、識別された障害のあるメモリ・デバイスに関連付けられた入手不能な重要情報を識別する。その識別することは、探索、ディレクトリにアクセスすること、システム・レジストリ情報の一部分を解釈すること、エラー・メッセージを解釈すること、および要求を受け取ることのうちの１つまたは複数に基づくことができる。
【０３３０】
入手不能な重要情報を識別すると、ＤＳＴクライアント・モジュール３４は、入手不能な重要情報を修復するかどうかを決定する。その決定することは、交換用メモリのアクティブ化を検出すること、以前に識別された障害のあるメモリの動作を検出すること、および要求を受け取ることのうちの１つまたは複数基づくことができる。たとえば、ＤＳＴクライアント・モジュール３４は、メモリ・デバイス２の交換用メモリ・デバイス２との交換を検出する。
【０３３１】
入手不能な重要情報を修復するとき、ＤＳＴクライアント・モジュール３４は、記憶位置選択方式に従って記憶位置のセットを識別する。たとえば、ＤＳＴクライアント・モジュール３４は、記憶位置のセットを取り出すためにＢＩＯＳ情報にアクセスする。記憶位置のセットを識別すると、ＤＳＴクライアント・モジュール３４は、重要情報に対応する符号化された重要スライスの各セットについて、少なくとも復号閾値数の符号化された重要スライス６５２の取出しを推進する。たとえば、ＤＳＴクライアント・モジュール３４は、メモリ８８から１つまたは複数の符号化された重要スライス６５２を取り出し、スライス読取り要求を残りのＤＳＴ実行ユニット２〜ｎへ発行し、符号化された重要スライス６５２を含むスライス読取り応答を受け取る。
【０３３２】
図６０は、重要情報を保持する例のさらなるステップを示し、少なくとも復号閾値数の符号化された重要スライスのそれぞれについて、ＤＳＴクライアント・モジュール３４は、少なくとも復号閾値数の符号化された重要スライスを散在ストレージ・エラー復号して、集約された重要情報を再現する。集約された重要情報を再現すると、ＤＳＴクライアント・モジュール３４は、集約された重要情報から重要情報を抽出する。たとえば、ＤＳＴクライアント・モジュール３４は、入手不能な情報のメモリ・デバイス２に関連付けられた重要情報２を抽出する。
【０３３３】
重要情報を抽出すると、ＤＳＴクライアント・モジュール３４は、抽出された重要情報のための記憶位置を識別する。その識別することは、現在使用可能なメモリ・デバイスを識別すること、交換用メモリ・デバイスを識別すること、および別の適切なメモリ・デバイスを識別することのうちの少なくとも１つを含む。たとえば、ＤＳＴクライアント・モジュール３４は、交換用メモリ・デバイスとしてメモリ・デバイス２を識別する。記憶位置を識別すると、ＤＳＴクライアント・モジュール３４は、識別された記憶位置への抽出された重要情報の記憶を推進する。たとえば、ＤＳＴクライアント・モジュール３４は、重要情報２をメモリ・デバイス２に書き込む。
【０３３４】
図６１は、重要情報を保持する例を示すフローチャートである。重要情報を記憶するとき、方法はステップ６５６から開始または継続し、このステップでは、（たとえば、分散ストレージおよびタスク（ＤＳＴ）クライアント・モジュールの）処理モジュールが、コンピューティング・デバイスの１つまたは複数のメモリ・デバイスに記憶された重要情報を識別する。その識別することは、検索すること、記憶されたデータをリストと比較すること、問合せを開始すること、および問合せ応答を受け取ることのうちの少なくとも１つを含む。方法はステップ６５８に続き、このステップでは、処理モジュールは、１つまたは複数のメモリ・デバイスから識別された重要情報を入手する。入手することは、読み取ること、読取り要求を発行すること、および読取り応答を受け取ることのうちの少なくとも１つを含む。
【０３３５】
方法はステップ６６０に続き、このステップでは、処理モジュールは、識別重要情報を散在ストレージ・エラー符号化して、１つまたは複数のセットの符号化された重要スライスを作成する。たとえば、処理モジュールは、識別重要情報を集約して、集約された重要情報を作成し、集約された重要情報を散在ストレージ・エラー符号化して、１つまたは複数のセットの符号化された重要スライスを作成する。
【０３３６】
方法はステップ６６２に続き、このステップでは、処理モジュールは、記憶位置選択方式に従って記憶ユニットのセットを選択する。その選択は、記憶位置使用可能性、事前決定、システム・レジストリ情報、およびＢＩＯＳ情報のうちの１つまたは複数に基づくことができる。方法はステップ６６４に続き、このステップでは、処理モジュールは、選択されたセットの記憶位置への１つまたは複数のセットの符号化された重要スライスの記憶を推進する。その推進することは、符号化された重要スライスをメモリ・デバイスに書き込むこと、およびスライス書込み要求をストレージ・ユニットへ発行することを含み、スライス書込み要求は、別の符号化された重要スライスを含む。
【０３３７】
重要情報を復元するとき、方法はステップ６６６に続き、このステップでは、処理モジュールは、対応するメモリ・デバイスの入手不能な重要情報を識別する。その識別することは、テスト結果を解釈すること、エラー・メッセージを受け取ること、メモリ・デバイスの除去を検出すること、およびメモリ・デバイスの障害を検出することのうちの１つまたは複数を含む。方法はステップ６６８に続き、このステップでは、処理モジュールは、入手不能な重要情報を修復するかどうかを決定する。たとえば、処理モジュールは、交換用メモリ・デバイスが対応するメモリ・デバイスと交換するように構成されていることを検出したときに、修復をするように示す。別の例として、処理モジュールは、修復の要求を受け取ったときに修復をするように示す。さらに別の例として、処理モジュールは、対応するメモリ・デバイスが現在使用可能であることを検出したときに修復をするように示す。
【０３３８】
入手不能な重要情報を修復すると、方法はステップ６７０に続き、このステップでは、処理モジュールは記憶位置のセットを識別する。たとえば、処理モジュールは、ディレクトリ・エントリを解釈する。別の例として、処理モジュールは、ＢＩＯＳ情報の一部分の取出しを解釈する。方法はステップ６７２に続き、このステップでは、処理モジュールは、入手不能な重要情報に対応する符号化された重要スライスのセットごとの少なくとも復号閾値数の符号化された重要スライスの取出しを推進する。たとえば、処理モジュールは、識別されたセットの記憶位置を利用してローカル・メモリから読み取り、スライス読取り要求をストレージ・ユニットへ発行し、ストレージ・ユニットの少なくとも一部からスライス読取り応答を受け取る。
【０３３９】
方法はステップ６７４に続き、このステップでは、各セットについて、少なくとも復号閾値数の符号化された重要スライスを散在ストレージ・エラー復号して、再構築された重要情報を作成する。たとえば、処理モジュールは、各復号閾値数の符号化された重要スライスを復号して、１つまたは複数のデータ・セグメントを再現し、１つまたは複数のデータ・セグメントを集約して、入手不能な重要情報に対応する再構築された重要情報を作成する。
【０３４０】
方法はステップ６７６に続き、このステップでは、処理モジュールは、再構築された重要情報のための記憶位置を識別する。たとえば、処理モジュールは、ディレクトリ・エントリを解釈して記憶位置を識別する。別の例として、処理モジュールは、ＢＩＯＳ情報にアクセスして記憶位置を識別する。さらに別の例として、処理モジュールは、再構築された重要情報のための記憶位置として交換用メモリ・デバイスを識別する。
【０３４１】
方法はステップ６７８に続き、このステップでは、処理モジュールは、識別された記憶位置への再構築された重要情報の記憶を推進する。その推進することは、ローカル・メモリに記憶するとき、再構築された重要情報をローカル・メモリに書き込むことを含む。ストレージ・ユニットを利用するとき、その推進することは、重要情報をストレージ・ユニットに送ることを含む。
【０３４２】
本明細書で使用され得るように、用語「実質的に」および「およそ」は、その対応する用語または要素間の関係性あるいはその両方について業界で受け入れられる許容範囲を与える。そのような業界で受け入れられる許容範囲は、１パーセント未満から５０パーセントの範囲に及び、成分値、集積回路プロセス変動、温度変動、立ち上がりおよび立ち下がり時間、または熱雑音、あるいはその組合せに対応するがこれらに限定されない。そのような要素間の関係性は、数パーセントの差から大規模な差に及ぶ。やはり本明細書で使用され得るように、用語「動作可能に結合された」、「結合された」または「結合」あるいはその組合せは、要素間の直接結合または介在要素を介する要素間の間接結合、あるいはその両方を含む（たとえば、要素は、コンポーネント、エレメント、回路、またはモジュール、あるいはその組合せを含むが、これらに限定されない）。ここで、間接結合については、介在要素は、信号の情報を変更しないが、その電流レベル、電圧レベル、または電力レベル、あるいはその組合せを調整し得る。さらに本明細書で使用され得るように、推論結合（inferred coupling）（すなわち、１つのエレメントが別のエレメントに推論によって結合される）は、「結合される」と同じように２つの要素の間の直接および間接結合を含む。さらに本明細書で使用され得るように、用語「動作可能」または「動作可能に結合された」は、要素が、アクティブにされたときに１つまたは複数のその対応する機能を実行するための電力接続、入力、出力などのうちの１つまたは複数を含むことを示し、さらに１つまたは複数の他の要素に推論結合することを含み得る。さらに本明細書で使用され得るように、用語「関連付けられた」は、別々の要素、または別の要素内に埋め込まれている要素、あるいはその両方の直接または間接あるいはその両方の結合を含む。本明細書で使用され得るように、用語「比較して好ましい」は、２つ以上の要素、信号などの間の比較が望ましい結果を与えることを示す。たとえば、望ましい関係が、信号１が信号２より大きな強度を有することである場合、信号１の強度が信号２の強度よりも大きいとき、または信号２の強度が信号１の強度よりも小さいときに、好ましい比較が達成され得る。
【０３４３】
また本明細書で使用され得るように、用語「処理モジュール」、「処理回路」、または「処理ユニット」、あるいはその組合せは、単一処理デバイスまたは複数の処理デバイスであり得る。そのような処理デバイスは、マイクロプロセッサ、マイクロコントローラ、デジタル・シグナル・プロセッサ、マイクロコンピュータ、中央処理装置、フィールド・プログラマブル・ゲート・アレイ、プログラマブル論理デバイス、状態機械、論理回路、アナログ回路、デジタル回路、または回路のハード・コーディングまたは動作命令あるいはその両方に基づいて信号（アナログまたはデジタルあるいはその両方）を操作する任意のデバイス、あるいはその組合せであり得る。処理モジュール、モジュール、処理回路、または処理ユニット、あるいはその組合せは、メモリまたは集積メモリ要素あるいはその両方であり得る、あるいはそれらをさらに含み、それらは、単一のメモリ・デバイス、複数のメモリ・デバイス、または別の処理モジュール、モジュール、処理回路または処理ユニットあるいはその組合せの組み込み回路、あるいはその組合せであり得る。そのようなメモリ・デバイスは、読出し専用メモリ、ランダム・アクセス・メモリ、揮発性メモリ、不揮発性メモリ、スタティック・メモリ、ダイナミック・メモリ、フラッシュ・メモリ、キャッシュ・メモリ、またはデジタル情報を記憶する任意のデバイス、あるいはその組合せであり得る。処理モジュール、モジュール、処理回路、または処理ユニット、あるいはその組合せが、複数の処理デバイスを含む場合、処理デバイスは、中央に配置されてよく（たとえば、有線または無線あるいはその両方のバス構造を介して一緒に直接結合される）、あるいは分散して配置されてもよい（たとえば、ローカル・エリア・ネットワークまたは広域ネットワークあるいはその両方を介した間接結合によるクラウド・コンピューティング）ことに留意されたい。さらに、処理モジュール、モジュール、処理回路、または処理ユニット、あるいはその組合せが、状態機械、アナログ回路、デジタル回路、または論理回路、あるいはその組合せを介してその機能の１つまたは複数を実装する場合、対応する動作命令を記憶するメモリまたはメモリ要素あるいはその両方は、状態機械、アナログ回路、デジタル回路、または論理回路、あるいはその組合せを備える回路の内部あるいは外部に組み込まれ得ることに留意されたい。さらに、図の１つまたは複数に示されたステップまたは機能あるいはその両方の少なくともいくつかに対応するハード・コード命令または動作命令あるいはその両方を、メモリ要素が記憶し、処理モジュール、モジュール、処理回路、または処理ユニット、あるいはその組合せが実行することができることに留意されたい。そのようなメモリ・デバイスまたはメモリ要素は、製造品に含まれ得る。
【０３４４】
本発明は、指定された機能およびそれらの関係の特性を示す方法ステップを用いて上記に説明されている。これらの機能的構成ブロックおよび方法ステップの範囲および順序は、本明細書では任意に説明の便宜のために定義されている。指定された機能および関係が適切に実施される限り、代替の範囲および順序が定義され得る。したがって、いずれのそのような代替の範囲または順序も、特許請求される発明の範囲および趣旨の範囲内にある。さらに、これらの機能構成ブロックの範囲は、任意に説明の便宜のために定義されている。特定の重要な機能が適切に実施される限り、代替の範囲が定義され得る。同様に、フロー図のブロックは、特定の重要な機能を示すために任意に本明細書では定義されている。使用できる限り、フロー図ブロックの範囲および順序は、別様に定義されてよく、依然として特定の重要な機能を実施し得る。したがって、機能構成ブロックおよびフロー図ブロックのそのような代替的定義は、特許請求される発明の範囲および趣旨の範囲内にある。当業者にはやはり認識されるように、本明細書における機能構成ブロック、および他の例示的ブロック、モジュール、およびコンポーネントは、例示されたように実装されてよく、あるいは、ディスクリート部品、特定用途向け集積回路、適切なソフトウェアなどを実行するプロセッサ、または任意のこれらの組合せによって実装されてもよい。
【０３４５】
本発明はまた、少なくとも部分的に１つまたは複数の実施形態に関して説明されている。本発明の実施形態は、本明細書において、本発明、その態様、その特徴、その概念、またはその例、あるいはその組合せを示すために使用されている。本発明を具体化する装置、製造品、機械、またはプロセス、あるいはその組合せの物理的実施形態は、本明細書に論じられた実施形態の１つまたは複数を参照して説明されている態様、特徴、概念、例などの１つまたは複数を含むことができる。さらに、図ごとに、実施形態は、同じもしくは異なる参照番号を使用し得る同じまたは類似した名前の機能、ステップ、モジュールなどを含んでよく、したがって、それらの機能、ステップ、モジュールなどは、同じまたは類似の機能、ステップ、モジュールなどであってよく、あるいはそれらは異なってもよい。
【０３４６】
上記に説明された図におけるトランジスタは電界効果トランジスタ（ＦＥＴ）として示されているが、当業者には理解されるように、トランジスタは、任意のタイプのトランジスタ構造を使用して実装されてもよく、それらのトランジスタ構造は、バイポーラ、金属酸化物半導体電界効果トランジスタ（ＭＯＳＦＥＴ）、Ｎ型ウェル・トランジスタ、Ｐ型ウェル・トランジスタ、エンハンスメント・モード、デプレッション・モード、ゼロ電圧閾値（ＶＴ）トランジスタを含むが、これらに限定されない。
【０３４７】
特に記述されていない限り、本明細書に提示された図面の任意の図における要素への、要素からの、または要素間の、あるいはその組合せの信号は、アナログまたはデジタル、連続時間または離散時間、およびシングルエンドまたは差動であり得る。たとえば、信号経路がシングルエンド経路として示されている場合に、それは差動信号経路も表す。同様に、信号経路が差動経路として示されている場合に、それはシングルエンド信号経路も表す。１つまたは複数の特定のアーキテクチャが本明細書に説明されているが、当業者には認識されるように、明示されていない１つまたは複数のデータ・バス、要素間の直接接続、または他の要素間の間接接続、あるいはその組合せを使用する他のアーキテクチャが同様に実装されてもよい。
【０３４８】
用語「モジュール」は、本発明の様々な実施形態の説明で使用されている。モジュールは、本明細書に説明され得るような１つまたは複数の機能を実行するための処理モジュール、機能ブロック、ハードウェア、またはメモリに記憶されたソフトウェア、あるいはその組合せを含む。モジュールがハードウェアによって実装される場合、ハードウェアは、ソフトウェアまたはファームウェアあるいはその両方と独立してまたは関連してあるいはその両方で動作することができることに留意されたい。本明細書で使用される場合、モジュールは、１つまたは複数のサブ・モジュールを含むことができ、各サブ・モジュールは、１つまたは複数のモジュールであり得る。
【０３４９】
本明細書では本発明の様々な機能および特徴の特定の組合せが明示的に説明されているが、これらの特徴および機能の他の組合せも同様に可能である。本発明は、本明細書に開示された特定の例によって限定されず、これらの他の組合せを明白に組み込んでいる。
【図１】
0006534396.tif 000002
【図２】
0006534396.tif 000003
【図３】
0006534396.tif 000004
【図４】
0006534396.tif 000005
【図５】
0006534396.tif 000006
【図６】
0006534396.tif 000007
【図７】
0006534396.tif 000008
【図８】
0006534396.tif 000009
【図９】
0006534396.tif 000010
【図１０】
0006534396.tif 000011
【図１１】
0006534396.tif 000012
【図１２】
0006534396.tif 000013
【図１３】
0006534396.tif 000014
【図１４】
0006534396.tif 000015
【図１５】
0006534396.tif 000016
【図１６】
0006534396.tif 000017
【図１７】
0006534396.tif 000018
【図１８】
0006534396.tif 000019
【図１９】
0006534396.tif 000020
【図２０】
0006534396.tif 000021
【図２１】
0006534396.tif 000022
【図２２】
0006534396.tif 000023
【図２３】
0006534396.tif 000024
【図２４】
0006534396.tif 000025
【図２５】
0006534396.tif 000026
【図２６】
0006534396.tif 000027
【図２７】
0006534396.tif 000028
【図２８】
0006534396.tif 000029
【図２９】
0006534396.tif 000030
【図３０】
0006534396.tif 000031
【図３１】
0006534396.tif 000032
【図３２】
0006534396.tif 000033
【図３３】
0006534396.tif 000034
【図３４】
0006534396.tif 000035
【図３５】
0006534396.tif 000036
【図３６】
0006534396.tif 000037
【図３７】
0006534396.tif 000038
【図３８】
0006534396.tif 000039
【図３９】
0006534396.tif 000040
【図４０】
0006534396.tif 000041
【図４１】
0006534396.tif 000042
【図４２】
0006534396.tif 000043
【図４３】
0006534396.tif 000044
【図４４】
0006534396.tif 000045
【図４５】
0006534396.tif 000046
【図４６】
0006534396.tif 000047
【図４７】
0006534396.tif 000048
【図４８】
0006534396.tif 000049
【図４９】
0006534396.tif 000050
【図５０】
0006534396.tif 000051
【図５１】
0006534396.tif 000052
【図５２】
0006534396.tif 000053
【図５３】
0006534396.tif 000054
【図５４】
0006534396.tif 000055
【図５５】
0006534396.tif 000056
【図５６】
0006534396.tif 000057
【図５７】
0006534396.tif 000058
【図５８】
0006534396.tif 000059
【図５９】
0006534396.tif 000060
【図６０】
0006534396.tif 000061
【図６１】
0006534396.tif 000062