(57)【特許請求の範囲】
【請求項１】
ＤＭＡコントローラによって管理される直接メモリアクセス（ＤＭＡ）・チャネルを介して転送されるデータ上で複数のデータ変更オペレーションを実行する方法であって、
各々が様々なデータ変更オペレーションのうちの少なくとも１つを実行する前記ＤＭＡコントローラ内で、複数のデータ変更エンジンを提供し、
少なくとも１つのデータソースからデータを読み出し、前記データ上で前記複数のデータ変更オペレーションを実行し、少なくとも１つの転送先に前記データを書き込む命令を含む制御データブロック（ＣＤＢ）を、前記ＤＭＡコントローラによってフェッチし、
前記ＣＤＢの中の符号化された前記命令に従って、少なくとも１つのデータソースから前記データを前記ＤＭＡコントローラによって取り出し、
前記複数のデータ変更オペレーションのうちの少なくとも２つが同時に前記ＤＭＡコントローラによって実行され、前記複数のデータ変更エンジンのうちの第１データ変更エンジンが、前記複数のデータ変更オペレーションのうちの少なくとも１つのデータ変更オペレーションを実行するために、前記複数のデータ変更エンジンのうちの第２データ変更エンジンのために計算の基準として使用される第１データ結果を作成するように、前記ＣＤＢの中の符号化された前記命令に従って、各データ変更オペレーションのために、前記ＤＭＡコントローラに提供された前記複数のデータ変更エンジンのうちの１つを使用して、前記ＤＭＡコントローラによって受け取られた前記データ上で、前記複数のデータ変更オペレーションの各データ変更オペレーションを前記ＤＭＡコントローラ内で実行し、
前記ＣＤＢの中の符号化された命令に従って、少なくとも１つの転送先に前記複数のデータ変更オペレーションの結果を前記ＤＭＡコントローラによって送る、方法。
【請求項２】
前記少なくとも１つのデータソースから前記データを取り出すことは、
前記データを前記少なくとも１つのデータソースから読み取るために、前記ＣＤＢの中の符号化された前記命令に従って、前記ＤＭＡコントローラ内で読み出しコマンドを作成し、
前記読み出しコマンドを前記ＤＭＡコントローラから前記少なくとも１つのデータソースへ送り、
前記読み出しコマンドに従って、前記少なくとも１つのデータソースによって送られた前記少なくとも１つのデータソースからの前記データを前記ＤＭＡコントローラで受け取る、ことをさらに含む請求項１に記載の方法。
【請求項３】
前記複数のデータ変更オペレーションの前記結果を少なくとも１つの転送先へ送ることは、
前記複数のデータ変更オペレーションの前記結果を前記少なくとも１つの転送先へ書き込むために、前記ＣＤＢの中の符号化された前記命令に従って、前記ＤＭＡコントローラ内で書き込みコマンドを作成し、
前記書き込みコマンドに従って、前記複数のデータ変更オペレーションの前記結果を前記ＤＭＡコントローラによって前記少なくとも１つの転送先へ送る、ことをさらに含む請求項１に記載の方法。
【請求項４】
前記ＤＭＡコントローラによって取り出された前記データを、前記ＤＭＡコントローラ内に局所的に含まれた電子メモリの中に記憶する、ことをさらに含む請求項１に記載の方法。
【請求項５】
前記複数のデータ変更オペレーションの前記結果を、前記ＤＭＡコントローラ内に局所的に含まれた電子メモリの中に記憶することをさらに含む請求項１に記載の方法。
【請求項６】
前記複数のもののうちの各データ変更エンジンは、ハッシュ、ハッシュメッセージ認証符号（ＨＭＡＣ）、ハッシュ／ＨＭＡＣの組み合わせ、フィルパターン、線形帰還シフトレジスタ（ＬＦＳＲ）、エンドツーエンド・データ保護（ＥＥＤＰ）検査、ＥＥＤＰ付加、ＥＥＤＰ更新、ＥＥＤＰ削除、排他的ＯＲ（ＸＯＲ）、暗号化および復号を含むデータ変更オペレーションのグループのうちの少なくとも１つのデータ変更オペレーションを実行する、請求項１に記載の方法。
【請求項７】
前記複数のデータ変更エンジンは、単一型のデータ変更オペレーションが前記ＤＭＡコントローラ上で同時に実行されることができるように、前記単一型のデータ変更オペレーションのうちの少なくとも２つから構成される、請求項１に記載の方法。
【請求項８】
前記複数のデータ変更オペレーションの前記結果を少なくとも１つの転送先に送ることは、前記ＤＭＡコントローラによって取り出された前記本来のデータを前記少なくとも１つのデータ転送先へさらに送る、請求項１に記載の方法。
【請求項９】
直接メモリアクセス（ＤＭＡ）・コントローラによって管理される直接メモリアクセス（ＤＭＡ）・チャネルを介して転送されるデータ上で複数のデータ変更オペレーションを実行するＤＭＡコントローラであって、
少なくとも１つのデータソースから前記データを読み出し、前記データ上で前記複数のデータ変更オペレーションを実行し、少なくとも１つの転送先に前記データを書き込む命令を含む制御データブロック（ＣＤＢ）をフェッチする制御データブロック（ＣＤＢ）プロセッサ・サブシステムを含み、
前記ＣＤＢの中の符号化された命令に従って、少なくとも１つのデータソースから前記データを取り出すフィルサブシステムを含み、
前記複数のデータ変更オペレーションのうちの少なくとも２つが同時に前記ＤＭＡコントローラによって実行され、前記複数のデータ変更エンジンのうちの第１データ変更エンジンは、前記複数のデータ変更オペレーションのうちの少なくとも１つのデータ変更オペレーションを実行するために、前記複数のデータ変更エンジンのうちの第２データ変更エンジンのために計算の基準として使用される第１データ結果を作成するように、前記ＣＤＢの中の符号化された前記命令に従って、フィルサブシステムによって受け取られた前記データ上で、前記複数のデータ変更オペレーションの各データ変更オペレーションのために、各々が様々なデータ変更オペレーションのうちの少なくとも１つを実行する、前記ＤＭＡコントローラ内の複数のデータ変更エンジンを含み、
前記ＣＤＢの中の符号化された前記命令に従って、少なくとも１つの転送先に前記複数のデータ変更オペレーションの結果を送るドレイン・サブシステムを含む、ＤＭＡコントローラ。
【請求項１０】
前記フィルサブシステムは、前記少なくとも１つのデータソースから前記データを読み出すために、前記ＣＤＢの符号化された前記命令に従って読み出しコマンドを作成し、前記少なくとも１つのデータソースに前記読み出しコマンドを送り、そして、前記読み出しコマンドに従って、前記少なくとも１つのデータソースによって送られた前記少なくとも１つのデータソースからの前記データを受け取ることによって、前記少なくとも１つのデータソースから前記データを取り出す、請求項９に記載のＤＭＡコントローラ。
【請求項１１】
前記ドレイン・サブシステムは、前記複数のデータ変更オペレーションの前記結果を前記少なくとも１つの転送先へ書き込むために前記ＣＤＢの中の符号化された前記命令に従って書き込みコマンドを作成し、前記書き込みコマンドに従って、前記少なくとも１つの転送先へ前記複数のデータ変更オペレーションの前記結果を送ることによって、前記複数のデータ変更オペレーションの前記結果を少なくとも１つの転送先へ送る、請求項９に記載のＤＭＡコントローラ。
【請求項１２】
前記フィルサブシステムによって取り出された前記データを記憶する、前記ＤＭＡコントローラ内に局所的に含まれた電子メモリであるソースデータ・ストレージをさらに含む、請求項９に記載のＤＭＡコントローラ。
【請求項１３】
前記複数のデータ変更オペレーションの前記結果を記憶する、前記ＤＭＡコントローラ内に局所的に含まれた電子メモリである少なくとも１つの変更データストレージをさらに含む、請求項９に記載のＤＭＡコントローラ。
【請求項１４】
前記複数のもののうちの各データ変更エンジンは、ハッシュ、ハッシュメッセージ認証符号（ＨＭＡＣ）、ハッシュ／ＨＭＡＣの組み合わせ、フィルパターン、線形帰還シフトレジスタ（ＬＦＳＲ）、エンドツーエンド・データ保護（ＥＥＤＰ）検査、ＥＥＤＰ付加、ＥＥＤＰ更新、ＥＥＤＰ削除、排他的ＯＲ（ＸＯＲ）、暗号化および復号を含むデータ変更オペレーションのグループのうちの少なくとも１つのデータ変更オペレーションを実行する、請求項９に記載のＤＭＡコントローラ。
【請求項１５】
前記複数のデータ変更エンジンは、単一型のデータ変更オペレーションが前記ＤＭＡコントローラ上で同時に実行されることができるように、前記単一型のデータ変更オペレーションのうちの少なくとも２つから構成される、請求項９に記載のＤＭＡコントローラ。
【請求項１６】
前記ドレイン・サブシステムは、前記ＤＭＡコントローラによって取り出された前記本来のデータを前記少なくとも１つのデータ転送先へさらに送る、請求項９に記載のＤＭＡコントローラ。
【請求項１７】
直接メモリアクセス（ＤＭＡ）コントローラによって管理される直接メモリアクセス（ＤＭＡ）チャネルを介して転送されるデータ上で複数のデータ変更オペレーションを実行するＤＭＡコントローラであって、
ＤＭＡコントローラ内に複数のデータ変更エンジンを提供する手段を含み、前記複数のデータ変更エンジンの各々は様々なデータ変更オペレーションのうちの少なくとも１つを実行し、
少なくとも１つのデータソースから前記データを読み出し、前記データ上で前記複数のデータ変更オペレーションを実行し、少なくとも１つの転送先に前記データを書き込む命令を含む制御データブロック（ＣＤＢ）を前記ＤＭＡコントローラによってフェッチする手段を含み、
前記ＣＤＢの中の符号化された前記命令に従って、少なくとも１つのデータソースから前記データを前記ＤＭＡコントローラによって取り出す手段を含み、
前記複数のデータ変更オペレーションのうちの少なくとも２つが同時に前記ＤＭＡコントローラによって同時に実行され、前記複数のデータ変更エンジンのうちの第１データ変更エンジンは、前記複数のデータ変更オペレーションのうちの少なくとも１つのデータ変更オペレーションを実行するために、前記複数のデータ変更エンジンのうちの第２データ変更エンジンのために計算の基準として使用される第１データ結果を作成するように、前記ＣＤＢの中の符号化された前記命令に従って、各データ変更オペレーションのために、前記ＤＭＡコントローラ上に提供された前記複数のデータ変更エンジンのうちの１つを使用して、ＤＭＡコントローラによって受け取られた前記データ上で前記複数のデータ変更オペレーションの各データ変更オペレーションを前記ＤＭＡコントローラ内で実行する手段を含み、
前記ＣＤＢの中の符号化された前記命令に従って、少なくとも１つの転送先に前記複数のデータ変更オペレーションの結果を前記ＤＭＡコントローラによって送る手段を含む、ＤＭＡコントローラ。
【発明の詳細な説明】
【背景技術】
【０００１】
直接メモリアクセス（ＤＭＡ）は、モデムコンピュータの重要な機能である。ＤＭＡは、コンピュータの特定のハードウェア・サブシステムに、中央処理装置（ＣＰＵ）から独立したアクセスシステム・メモリから読み出す、および／または同メモリへ書き込ませることを可能にする。ＤＭＡを使用してもよい一部の例示的なハードウェアシステムは、限定されないが、ディスクドライブ・コントローラ、ＲＡＩＤ（独立ディスク冗長アレイ）オンチップ（ＲＯＣ）・コントローラ、グラフィックカード、ネットワークカードおよびサウンドカードを含む。ＤＭＡは、マルチコア・プロセッサ上のチップ内データ転送のために使用されてもよい。ＤＭＡチャネルの管理および実施は、典型的にはＤＭＡコントローラによって実行される。しばしばＤＭＡコントローラは、局所ＤＭＡメモリおよび外部メインメモリへ、およびそれらからデータを転送するように、局所メモリを備えている。ＤＭＡコントローラはコンピュータＣＰＵではなく、データの転送を管理することから、ＤＭＡを使用するデータ転送は、ずっと少ないコンピュータＣＰＵの処理時間しか使用せず、したがってＤＭＡコントローラを有するコンピュータの有効計算能力を増加させる。ＤＭＡを使用しないと、周辺装置との通信、またはマルチコア・システムのコア間の通信は、読み込み／書き込みオペレーション全体の間ＣＰＵを完全に占有する場合があり、他の計算タスクを実行するためにＣＰＵを利用できないようにする。ＤＭＡを使用すると、ＣＰＵは転送を開始して、次いで転送が進行している間に他のオペレーションを行い、一旦そのオペレーションが完了されるとＤＭＡコントローラから割り込み信号を受け取る。周辺装置との通信は、典型的に通常システムのランダムアクセス・メモリ（ＲＡＭ）のためのものよりも遅く、ＤＭＡコントローラによって管理されるＤＭＡチャネルを使用しなければ、ＣＰＵは周辺装置との通信の間さらに長い期間利用不可能となるので、ＣＰＵを周辺装置とのデータ転送の実行から解放することは特に重要である。
【０００２】
典型的なＤＭＡ転送は、メモリのブロックを１つの装置から別のものへコピーする。ＣＰＵはデータ転送を開始するが、データ転送そのものを実行することはない。業界標準アーキテクチャ（ＩＳＡ）・バスについては、データ転送は、典型的にコンピュータ・マザーボード・チップセットの一部として組み込まれたＤＭＡコントローラによって実行される。周辺機器コンポーネント相互接続（ＰＣＩ）バスは、ＤＭＡをマスタするバスを使用する。周辺デバイスはバスを制御し、転送そのものを実行する。
【０００３】
組み込みプロセッサは、データ転送の間に他のタスクを実行し続けながらデータ転送を発するための処理要素を可能にするために、チップ内にＤＭＡエンジン／コントローラを含んでもよい。ＤＭＡコントローラはチップ内に組み込まれている場合、一般にＤＭＡエンジンと呼ばれる。マルチコア組み込みプロセッサは、しばしばチップのマルチコア・プロセッサ・チップ内のサブシステムとして、局所ＤＭＡメモリとともに１つまたは複数のＤＭＡエンジンを含む。
【発明の概要】
【０００４】
本発明の実施形態は、各々が様々なデータ操作オペレーションのうちの少なくとも１つを実行するＤＭＡコントローラ内で、複数のデータ変更エンジンを提供することと、少なくとも１つのデータソースからデータを読み出し、データ上で複数のデータ操作オペレーションを実行し、少なくとも１つの転送先にデータを書き込むための命令を含む制御データブロック（ＣＤＢ）をＤＭＡコントローラによってフェッチすることと、ＣＤＢの中の符号化された命令に従って、少なくとも１つのデータソースからデータをＤＭＡコントローラによって取り出すことと、複数のデータ操作オペレーションのうちの少なくとも２つが同時にＤＭＡコントローラによって実行されるように、ＣＤＢの中に符号化された命令に従って、各データ操作オペレーションのために、ＤＭＡコントローラに提供された複数のデータ変更エンジンのうちの１つを使用して、ＤＭＡコントローラによって受け取られたデータ上で、複数のデータ操作オペレーションの各データ操作オペレーションをＤＭＡコントローラ内で実行することと、ＣＤＢの中に符号化された命令に従って、少なくとも１つの転送先に複数のデータ操作オペレーションの結果をＤＭＡコントローラによって送ることとを備える、ＤＭＡコントローラによって管理される直接メモリアクセス（ＤＭＡ）・チャネルを介して転送されるデータ上で複数のデータ操作オペレーションを実行するための方法を備えてもよい。
【０００５】
本発明の実施形態は、少なくとも１つのデータソースからデータを読み出し、データ上で複数のデータ操作オペレーションを実行し、少なくとも１つの転送先にデータを書き込むための命令を含む制御データブロック（ＣＤＢ）をフェッチする制御データブロック（ＣＤＢ）プロセッサ・サブシステムと、ＣＤＢの中に符号化された命令に従って、少なくとも１つのデータソースからデータを取り出すフィルサブシステムと、複数のデータ操作オペレーションのうちの少なくとも２つが同時にＤＭＡコントローラによって実行されるように、ＣＤＢの中に符号化された命令に従って、フィルサブシステムによって受け取られたデータ上で複数のデータ操作オペレーションの各データ操作オペレーションのために、各々が様々なデータ操作オペレーションのうちの少なくとも１つを実行するＤＭＡコントローラ内の複数のデータ変更エンジンと、ＣＤＢの中に符号化された命令に従って、少なくとも１つの転送先に複数のデータ操作オペレーションの結果を送るドレイン・サブシステムとを備える、ＤＭＡコントローラによって管理される直接メモリアクセス（ＤＭＡ）・チャネルを介して転送されるデータ上で複数のデータ操作オペレーションを実行する直接メモリアクセス（ＤＭＡ）・コントローラをさらに備えてもよい。
【０００６】
本発明の実施形態は、各々が様々なデータ操作オペレーションのうちの少なくとも１つを実行するＤＭＡコントローラ内の複数のデータ変更エンジンを提供するための手段と、少なくとも１つのデータソースからデータを読み出し、データ上で複数のデータ操作オペレーションを実行し、少なくとも１つの転送先にデータを書き込むための命令を含む制御データブロック（ＣＤＢ）をＤＭＡコントローラによってフェッチするための手段と、ＣＤＢの中に符号化された命令に従って、少なくとも１つのデータソースからデータをＤＭＡコントローラによって取り出すための手段と、複数のデータ操作オペレーションのうちの少なくとも２つが同時にＤＭＡコントローラによって実行されるように、ＣＤＢの中に符号化された命令に従って、各データ操作オペレーションのためにＤＭＡコントローラ上に提供された複数のデータ変更エンジンのうちの１つを使用して、ＤＭＡコントローラによって受け取られたデータ上で複数のデータ操作オペレーションの各データ操作オペレーションをＤＭＡコントローラ内で実行するための手段と、ＣＤＢの中に符号化された命令に従って、少なくとも１つの転送先に複数のデータ操作オペレーションの結果をＤＭＡコントローラによって送るための手段とを備える、ＤＭＡコントローラによって管理される直接メモリアクセス（ＤＭＡ）・チャネルを介して転送されるデータ上で複数のデータ操作オペレーションを実行する直接メモリアクセス（ＤＭＡ）・コントローラをさらに備えてもよい。
【図面の簡単な説明】
【０００７】
【図１】制御データブロック（ＣＤＢ）によって管理される複数のデータ変更エンジンを有する直接メモリアクセス（ＤＭＡ）・コントローラシステムの実施形態のブロック図である。
【図２】エンドツーエンド・データ保護（ＥＥＤＰ）検査および更新サイクルを備えたＤＭＡコントローラシステムの実施形態のブロック図である。
【図３】データを暗号化し、エンドツーエンド・データ保護（ＥＥＤＰ）検査を実行するＤＭＡコントローラシステムの実施形態のブロック図である。
【図４】データを暗号化し、エンドツーエンド・データ保護（ＥＥＤＰ）検査および更新サイクルを有するＤＭＡコントローラシステムの実施形態のブロック図である。
【図５】データを暗号化し、データ上で排他的ＯＲ（ＸＯＲ）を実行し、エンドツーエンド・データ保護（ＥＥＤＰ）検査を実行するＤＭＡコントローラシステムの実施形態のブロック図である。
【図６】データを暗号化し、データ上で排他的ＯＲ（ＸＯＲ）を実行し、エンドツーエンド・データ保護（ＥＥＤＰ）検査および更新サイクルを有するＤＭＡコントローラシステムの実施形態のブロック図である。
【図７】データ上で排他的ＯＲ（ＸＯＲ）を実行し、エンドツーエンド・データ保護（ＥＥＤＰ）検査および更新サイクルを有するＤＭＡコントローラシステムの実施形態のブロック図である。
【図８】ＤＭＡエンジン／コントローラを含むＲＡＩＤ（独立ディスク冗長アレイ）オンチップ（ＲＯＣ）・システムの実施形態のブロック図である。
【図９】ＤＭＡコントローラの実施形態のための制御データブロック（ＣＤＢ）処理の実施形態のブロック図である。
【図１０】ＣＤＢプロセッサの実施形態のためのＣＤＢ処理のための有限ステートマシン（ＦＳＭ）・オペレーションのブロック図である。
【発明を実施するための形態】
【０００８】
現代のコンピュータシステムがより複雑化するにつれて、コンピュータシステム内部で転送されるデータ、およびコンピュータシステムに接続された周辺デバイスへ転送されるデータ上で、さらなるデータ操作オペレーションが実行されることが求められる。例えばＲＡＩＤ（独立ディスク冗長アレイ）オンチップ（ＲＯＣ）・システムは、ＲＯＣシステムオペレーションの一部として、転送されるデータ上で複数のデータ操作オペレーションを実行することが求められる場合がある。ＲＯＣシステムは典型的に、ＲＯＣアーキテクチャ内部のサブシステムとして、直接メモリアクセス（ＤＭＡ）・エンジン／コントローラを含む。いくつかの典型的なデータ操作オペレーションは、ハッシュ、ハッシュメッセージ認証符号（ＨＭＡＣ）、ハッシュ／ＨＭＡＣの組み合わせ、フィルパターン、線形帰還シフトレジスタ（ＬＦＳＲ）、エンドツーエンド・データ保護（ＥＥＤＰ）検査／付加／更新／削除、排他的ＯＲ（ＸＯＲ）、暗号化および復号を含む。実施形態のＤＭＡエンジン／コントローラは、コンピュータシステム内部の他のシステム／サブシステムのための処理要件を減少させるために、ＤＭＡエンジン／コントローラ内部で転送されるデータ上で様々なデータ処理オペレーションを実行することを組み込んでもよい。さらに、実施形態のＤＭＡエンジン／コントローラは、複数のデータ操作オペレーションが、連続する方法でそれらを一度に１つずつ実行するよりも速く実行されるように、転送されるデータ上で複数のデータ操作を同時に実行してもよい。したがって、実施形態によってデータは、できるだけ少ない割り込みでソースから転送先へ自由に移動することができる。実施形態のＤＭＡエンジン／コントローラによって転送されるデータ上で実行されるデータ操作オペレーションはまた、ＤＭＡエンジン／コントローラの局所にあるメモリ（すなわち局所メモリ）に対して、データを記憶して取り出す／変更することでき、ＤＭＡエンジン／コントローラの外部にあるメモリ（すなわち外部メモリ）にアクセスするための不必要なオーバヘッドを回避する。
【０００９】
例えば、実施形態のＤＭＡエンジン／コントローラは、ＤＭＡエンジン／コントローラ上の暗号化エンジンを使用して、データを暗号化し、局所ＤＭＡメモリに配置された第１データバッファの中に記憶してもよい。暗号化されたデータが第１データバッファに配置される間、ＤＭＡエンジン／コントローラ上のＸＯＲエンジンは、第１データバッファへの暗号化データのデータフローに対するいかなる割り込みも伴わずに、暗号化されたデータ上で同時にＸＯＲオペレーションを実行し、局所ＤＭＡメモリに配置された第２データバッファの中にＸＯＲデータを記憶してもよい。暗号化データが作り出されるときに、暗号化データ上でＸＯＲオペレーションを実行することによって、実施形態は、ＸＯＲオペレーションを実行する前に、暗号化データがデータバッファに完全に書き込まれるのを待つ待ち時間を回避することができる。さらに実施形態のＤＭＡエンジン／コントローラはまた、暗号化およびＸＯＲデータ操作オペレーションと並行してＥＥＤＰ検査、付加および／または削除オペレーションを実行することができ、さらにＤＭＡエンジン／コントローラによって転送されるデータ上で複数のデータ操作オペレーションを実行することに伴う待ち時間を減少させる。
【００１０】
様々な実施形態は、様々なコンピュータシステムのＤＭＡエンジン／コントローラ、およびＤＭＡエンジン／コントローラを有する電子デバイス上で実施されてよい。複数のＤＭＡチャネルが求められる場合、必要に応じて、コンピュータシステムおよび／または電子デバイスは複数のＤＭＡエンジン／コントローラを含んでもよい。また、一部のＤＭＡエンジン／コントローラは、利用可能なＤＭＡチャネルの数がＤＭＡエンジン／コントローラの数×各ＤＭＡエンジン／コントローラ上で利用可能なＤＭＡチャネルの数であるとして、システムの中に複数のＤＭＡエンジン／コントローラを含むことが乗数効果につながるように、複数のＤＭＡチャネルを与えてもよい。実施形態のためのＤＭＡコントローラは、独立型専用コンピュータ「カード」、独立型専用チップとしてコンピュータシステムおよび／または電子デバイスに組み込まれた独立システムとして、または独立型専用電子デバイスとして実装されてもよい。しかしながら、しばしば、ＤＭＡコントローラはより大きな多機能チップ、カード、またはコンピュータシステムもしくは電子デバイスに集積された回路のサブシステムまたはエンジンとして組み込まれる。したがって実施形態のためのＤＭＡコントローラは、より大きな多機能チップ、カードまたは回路の中に含まれたＤＭＡエンジン・サブシステムとして実装されてもよい。典型的に、ＤＭＡコントローラがより大きな多機能チップ、カードまたは回路のサブシステムとして含まれる場合、ＤＭＡコントローラはＤＭＡエンジンと呼ばれる。したがって、この文書全体を通して、ＤＭＡコントローラおよびＤＭＡエンジンという用語は、ＤＭＡコントローラへの言及がある場合、それはまたＤＭＡエンジンへの言及でもあるように交換可能に使用されることになり、逆もまた同様である。
【００１１】
図１は、制御データブロック（ＣＤＢ）１２０によって管理される複数のデータ変更エンジン１１０〜１１２を有するＤＭＡコントローラシステム１０６の実施形態のブロック図１００である。図１に示されている実施形態では、ＣＤＢ１２０は、ＤＭＡコントローラ１０６のＣＤＢプロセッサ・サブシステム１２２で、ＤＭＡコントローラ／エンジン１０６によってフェッチされ受け取られる。ＣＤＢプロセッサ・サブシステム１２２はＤＭＡコントローラ１０６上で動作し、その一部として実装される。ＣＤＢは、転送／変更されるデータのデータソース１０２〜１０４、転送されるデータのために求められるデータ操作オペレーション、および転送／変更されるデータのためのデータ転送先１１６〜１１８を含めて、データ転送のための命令を含む。ＣＤＢプロセッサ１２２はＣＤＢ１２０の中の符号化された命令を読み出し、ＤＭＡコントローラ１０６に、ＣＤＢ１２０の中の符号化された命令に従ってデータ転送を設定し、実行するように指示する。ＣＤＢに基づいてＤＭＡコントローラ１０６は、データソース１０２〜１０４が所望のデータをＤＭＡコントローラ１０６へ送るように、読み出しコマンドを準備して、データソース１０２〜１０４へ発行してもよい。データソース１０２〜１０４からのデータは、ＤＭＡコントローラ１０６によって受け取られ、ＤＭＡコントローラ１０６の局所にあるソースデータ・ストレージ１０８の中に記憶される。ＣＤＢ１２０に基づいて、ＤＭＡコントローラはＤＭＡコントローラ１０６を介して転送されるデータ上で所望のデータ変更オペレーションを実行するために、複数のデータ変更エンジン１１０〜１１２を選択してもよい。データ変更エンジン１１０〜１２０からの結果データは直接データ転送先１１６〜１１８へ届けられてもよく、またはＤＭＡコントローラ１０６の局所にある変更データストレージ１１４の中に記憶されてもよい。ＤＭＡコントローラ１０６の変更データストレージ１１４の中に記憶されたデータ変更エンジン１１０〜１１２からの結果データは、他のデータ変更エンジン１１０〜１１２によって使用されてもよく、または変更データストレージ１１４がデータ変更エンジン１１０〜１１２によって読み出され、書き込まれることができるように、本来のデータ変更エンジン（例えば過去の結果に左右されるオペレーションを実行するデータ変更エンジン等）によって使用されてもよい。一旦所望のデータ変更オペレーションが完了されると、ＤＭＡコントローラは、データ／変更データを所望のデータ転送先１１６〜１１８へ届けてもよい。一部の場合では、データ変更エンジン１１０〜１１２の結果は、他のデータ変更エンジン１１０〜１１２によって使用されるための中間結果としてのみ使用されてもよい。データ変更エンジン１１０〜１１２の構成、およびどのデータ変更エンジン１１０〜１１２からの結果データが届けられるのかということは、ＣＤＢ１２０の中の符号化された命令に従って実施される。
【００１２】
１つの実施形態のために、データソース１０２〜１０４は、典型的なＤＭＡコントローラ／エンジン１０６と互換性を持つ任意のデータソース１０２〜１０４であってよい。１つの実施形態は、単一のデータソース１０２から、または複数のソース１０２〜１０４からデータの収集／読み出しを行ってもよい。例えば、単一のメモリ領域からのソースデータは、外部メモリ（すなわちＤＭＡコントローラ１０６の外部にあるメモリ）から読み出され、様々なデータ転送先１１６〜１１８へ転送されてもよい。同様に、複数のメモリ用域からのソースデータは外部から読み出され、１つのデータ転送オペレーションの中で様々なデータ転送先１１６〜１１８へ転送されてもよい。
【００１３】
データ変更エンジンは、ＤＭＡコントローラ／エンジン１０６を介して転送されるデータのために求められる任意のデータ変更を実行するように作成されてもよい。例えば、一部のデータ変更エンジンは、限定されないがハッシュ、ＨＭＡＣ、ハッシュ／ＨＭＡＣの組み合わせ、フィルパターン、線形帰還シフトレジスタ（ＬＦＳＲ）、エンドツーエンド・データ保護（ＥＥＤＰ）検査／付加／更新／削除、排他的ＯＲ（ＸＯＲ）、暗号化および復号を含んでもよい。サポートされるハッシング・アルゴリズムの一部の種類は、ハッシュ・エンジンによって個別または同時に実行されてよい標準的なセキュア・ハッシュ・アルゴリズム（ＳＨＡ）−２２４、ＳＨＡ−２５６、ＳＨＡ−３８４およびＳＨＡ５１２アルゴリズムを含む。データ変更エンジン１１０〜１１２のための入力データは、単一の結果に結合される複数のデータ操作を許容するために、中間データ結果として別のデータ変更エンジン１１０〜１１２から来るように指定されてもよい。この中間結果はまた、必要に応じてＣＤＢ１２０の中で符号化されて、転送先の場所１１６〜１１８のうちの１つに送られてもよい。しかしながら、この中間データ結果は、必ずしもデータ転送先１１６〜１１８へ送られなければならないというわけではない。別のデータ変更エンジンから来るデータ上で作業する際、第２データ変更エンジンは第１データ変更エンジンと同時に動作してもよいが、第２データ変更エンジンは、第１データ変更エンジンが第２データ変更エンジンの計算を開始する前に中間結果データのストリームミングを始めることを可能とするために、第１データ変更エンジンの少し後で開始してもよい。様々な実施形態について、データ変更エンジン１１０〜１１２の同時オペレーションは、並行して同時に行われる同一データ（中間結果および／または本来の受領データ）上での異なるデータ変更エンジン１１０〜１１２の実行オペレーションとして生じてもよい。さらに、様々な実施形態は、本来のデータと変更データ結果との両方をデータ転送先１１６〜１１８へ届けてもよい。
【００１４】
様々な実施形態は、ＤＭＡコントローラ１０６内に局所ソースデータ・ストレージ１０８および局所変更データストレージ１１４を、１つまたは複数の局所電子メモリ回路として実装してもよい。電子メモリは、たとえコンピュータ可読（すなわち電子的）メモリがメモリ・ストレージを必要とする電子デバイスの中に含まれる場合であっても、コンピュータ可読メモリと呼ばれてもよいが、典型的にコンピュータであるとみなされることはない。典型的な電子メモリの実装は、ＤＭＡコントローラ１０６によってソースデータ・ストレージ１０８と変更データストレージ１１４とに分けられてもよい電子ランダムアクセス・メモリ（ＲＡＭ）のセットを提供するものである。電子メモリは、ソースデータ・ストレージ１０８および変更データストレージ１１４のために一定区画にあってもよいが、ＤＭＡコントローラもまた、電子メモリ全体がより効率的に利用されることができるように、ソースデータ・ストレージおよび変更データストレージ１１４のために必要に応じて、動的に電子メモリＲＡＭを割り当ててもよい。さらに変更データストレージ１１４は複数のデータ変更エンジン１１０〜１１２からのデータを記憶するために、複数のセグメントに再分割されてもよい。
【００１５】
１つの実施形態のためのデータ転送先１１６〜１１８は、典型的なＤＭＡコントローラ／エンジン１０６と互換性を持つ任意のデータ転送先１１６〜１１８であってよい。様々な実施形態は複数のデータ転送先１１６〜１１８へ、または単一のデータ転送先１１６へ、データおよび／または変更データ結果を書き込んでもよい。個々のデータ結果は、利用可能なデータ転送先１１６〜１１８のすべてに、またはそれらのサブグループのみに転送されてもよい。すなわち、１つの結果はデータ転送先１１６〜１１８に送られてもよく、一方でその他の結果は単一の転送先１１６または転送先１１６〜１１８のサブセットにだけ送られてもよい。典型的なデータ転送先１１６〜１１８は限定されないが、ディスクドライブ、コンピュータ周辺装置、独立した外部メモリセグメントおよび／またはその他の外部デバイスを含んでもよい。
【００１６】
図２は、エンドツーエンド・データ保護（ＥＥＤＰ）検査および更新サイクルを備えたＤＭＡコントローラシステムの実施形態のブロック図２００である。データソース２０２からのデータは、データが受け取られると、ＤＭＡコントローラのソースデータ・ストレージ２０４の中に記憶される。第１ＥＥＤＰエンジン２０６および第２ＥＥＤＰエンジン２１０は、並行してデータソース２０２から受け取られたデータ上でオペレーションを実行する。第１ＥＥＤＰエンジン２０６は、受け取られたデータの中に埋め込まれたデータ保護情報（ＤＰＩ）を検査して、ＤＰＩを確認し、発見された任意のエラー２０８をＤＭＡコントローラに報告する検査ＥＥＤＰエンジンである。ＥＥＤＰ検査エンジン２０６によって発見されたエラーは、ＤＭＡコントローラシステムによって記録されてもよい、および／または割り込み機能が可能であれば割り込みを生成してもよい。第２ＥＥＤＰエンジン２１０は実際に、転送データストリームのための更新ＤＰＩを生成するためか、またはＤＰＩを転送データストリームに付加するために、２つのＥＥＤＰ機能を結合する。第２ＥＥＤＰ付加／更新エンジン２１０からの更新ＤＰＩは、データソース２０２からの本来のデータストリームと結合され（２１２）、所望の転送先２１４へ送られる。この結合プロセス２１２は、識別可能な方法でのデータストリーム内でのパケットの挿入として、またはデータ転送先によって求められるその他のものとして、マルチプレクサを介して実行されてもよい。様々な実施形態は、ＣＤＢによって定義されるブロックの大きさに従って、転送データストリームの中のブロック境界にＤＰＩを挿入してもよい。データストリームについてのデータバイト数が転送先２１４に送られるデータに達する場合、ＤＰＩが挿入される。複数のデータブロックは、ＤＰＩが単一のデータストリームのために何回も転送データストリームの中に挿入されるように、所与のＣＤＢのために移動されてもよい。
【００１７】
図３は、データを暗号化し、エンドツーエンド・データ保護（ＥＥＤＰ）検査を実行するＤＭＡコントローラシステムの実施形態のブロック図３００である。データソース３０２からのデータは、データが受け取られると、ＤＭＡコントローラのソースデータ・ストレージ３０４の中に記憶される。ＥＥＤＰエンジン３０６および暗号化エンジン３１０は、並行してデータソース３０２から受け取られたデータ上でオペレーションを実行する。ＥＥＤＰエンジン３０６は、受け取られたデータの中に埋め込まれたＤＰＩを検査して、ＤＰＩを確認し、発見された任意のエラー３０８をＤＭＡコントローラに報告する検査ＥＥＤＰエンジンである。ＥＥＤＰ検査エンジン３０６によって発見されたエラーは、ＤＭＡコントローラシステムによって記録されてもよい、および／または割り込み機能が可能であれば割り込みを生成してもよい。暗号化エンジン３１０はデータ転送先３１４へ送られるデータを暗号化し、局所変更データストレージ３１２の中に結果を記憶する。暗号化データは、変更データストレージ３１２からデータ転送先３１４へ届けられる。その他のデータ変更エンジンもまた、図３に示されている実施形態３００のような同様の実施形態の中で使用されてよい。例えば、１つの実施形態は図３に示されている暗号化エンジン３１０を、ハッシュまたはハッシュ／ＨＭＡＣを組み合わせたエンジンと置き換えてもよい。同様に様々な実施形態は、図４〜７に示された実施形態のデータ変更エンジンを異なるデータ変更エンジンと置き換えてもよい。さらに図２〜７に示された実施形態は、ＤＭＡコントローラ上で実装されてもよい多様なデータ変更エンジン構成のサブセットのみを表している。ＤＭＡコントローラに届けられる各ＣＤＢは、ＤＭＡコントローラによって受け取られる各ＣＤＢのために、ＤＭＡコントローラが任意の多様なデータ変更エンジン構成に再構成されるように、ＤＭＡコントローラ上で構成されるデータ変更エンジンの構成を定義する。暗号化エンジン３１０の代わりに使用されるいくつかのデータ変更エンジンについては、データ変更エンジン（例えばＸＯＲエンジン）がすでに計算済みのデータへのアクセスを有することができるように、変更データのうちの一部を局所変更データストレージ３１２の中に記憶しなければならない場合がある。
【００１８】
図４は、データを暗号化し、エンドツーエンド・データ保護（ＥＥＤＰ）検査および更新サイクルを有するＤＭＡコントローラシステムの実施形態のブロック図４００である。データソース４０２からのデータは、データが受け取られると、ＤＭＡコントローラのソースデータ・ストレージ４０４の中に記憶される。第１ＥＥＤＰエンジン４０６、暗号化エンジン４１０および第２ＥＥＤＰエンジン４１４は同時にオペレーションを実行する。第１ＥＥＤＰエンジン４０６は、受け取られたデータの中に埋め込まれたＤＰＩを検査して、ＤＰＩを確認し、発見された任意のエラー４０８をＤＭＡコントローラに報告する検査ＥＥＤＰエンジンである。第１ＥＥＤＰ検査エンジン４０６によって発見されたエラーは、ＤＭＡコントローラシステムによって記録されてもよい、および／または割り込み機能が可能であれば割り込みを生成してもよい。暗号化エンジン４１０はデータ転送先４１８へ送られるデータを暗号化し、局所変更データストレージ４１２の中に結果を記憶する。暗号化データは、変更データストレージ４１２からデータ転送先４１８および第２ＥＥＤＰ付加／更新エンジン４１４へ届けられる。第２ＥＥＤＰエンジン４１４は実際に、暗号化転送データストリームのための更新ＤＰＩを生成するためか、またはＤＰＩを転送データストリームに付加するために、２つのＥＥＤＰ機能を結合する。第２ＥＥＤＰ付加／更新エンジン４１４からの更新ＤＰＩは、データストレージ４１２からの暗号化データストリームと結合され（４１６）、所望の転送先４１８へ送られる。この結合プロセス４１６は、識別可能な方法でのデータストリーム内でのパケットの挿入として、またはデータ転送先によって求められるその他のものとして、マルチプレクサを介して実行されてもよい。様々な実施形態は、ＣＤＢによって定義されるブロックの大きさに従って、転送データストリームの中でブロック境界にＤＰＩを挿入してもよい。データストリームについてのデータバイト数が転送先４１８に送られるデータに達する場合、ＤＰＩが挿入される。複数のデータブロックは、ＤＰＩが単一のデータストリームのために何回も転送データストリームの中に挿入されるように、所与のＣＤＢのために移動されてもよい。
【００１９】
図５は、データを暗号化し、データ上で排他的ＯＲ（ＸＯＲ）を実行し、エンドツーエンド・データ保護（ＥＥＤＰ）検査を実行するＤＭＡコントローラの実施形態のブロック図５００である。データソース５０２からのデータは、データが受け取られると、ＤＭＡコントローラのソースデータ・ストレージ５０４の中に記憶される。ＥＥＤＰエンジン５０６、暗号化エンジン５１０、ならびに第１排他的ＯＲ（ＸＯＲ）エンジン５１４および第２排他的ＯＲ（ＸＯＲ）エンジン５１８は同時にオペレーションを実行する。ＥＥＤＰエンジン５０６は、受け取られたデータの中に埋め込まれたＤＰＩを検査して、ＤＰＩを確認し、発見された任意のエラー５０８をＤＭＡコントローラに報告する検査ＥＥＤＰエンジンである。ＥＥＤＰ検査エンジン５０６によって発見されたエラーは、ＤＭＡコントローラシステムによって記録されてもよい、および／または割り込み機能が可能であれば割り込みを生成してもよい。暗号化エンジン５１０はデータ転送先５２４へ送られるデータを暗号化し、局所変更データストレージ＃１（５１２）の中に結果を記憶する。暗号化データは、変更データストレージ５１２からデータ転送先５２４および第１ＸＯＲエンジン５１４および第２排他的ＸＯＲエンジン５１８へ届けられる。各ＸＯＲエンジン５１４および５１８は計算を適切に完了するために、すでに計算済みのデータへのアクセスを必要とする場合がある。したがって第１ＸＯＲエンジン５１４は、第２変更データストレージ５１６の中に結果データを記憶することができる。同様に、第２ＸＯＲエンジン５１８は、第３変更データストレージ５２０の中に結果データを記憶することができる。ＸＯＲ結果データは、第２変更データストレージ５１６および第３変更データストレージ５２０からデータ転送先５２４へ届けられる。第１変更データストレージ５１２からの暗号化データ、第２変更データストレージ５１６からの第１ＸＯＲデータおよび第３変更データストレージ５２０からの第２ＸＯＲデータは結合され（５２２）、データ転送先５２２へ届けられる。この結合プロセス５２２は、識別可能な方法でのデータストリーム内でのパケットの挿入として、またはデータ転送先５２４によって求められるその他のものとして、マルチプレクサを介して実行されてもよい。
【００２０】
図５に示された実施形態５００について、データの一定部分（例えば１ｋｂのデータ）は、一度に１つのデータの一定部分ずつ各データソース５０２から取り出されてもよい。各データの一定部分は次いで暗号化エンジン５１０を通して送られ、暗号化された結果は指定されたデータ転送先５２４へ送られる。暗号化されたデータが暗号化されたデータのためのデータ転送先５２４へ暗号化エンジン５１０から送られると、ＸＯＲ処理が実行される。一旦データの一定部分（例えば各データソース５０２から取り出された１ｋｂのデータ等）が各データソース５０２から取り出され、暗号化されたデータが暗号化エンジン５１０のために指定されたデータ転送先５２４へ送られると、第１ＸＯＲエンジン５１４からの結果は、第１ＸＯＲエンジン５１４のために指定されたデータ転送先５２４へ送られる。第１ＸＯＲエンジン５１４の結果が第１ＸＯＲエンジン５１４のために指定されたデータ転送先５２４へ送られた後、第２ＸＯＲエンジン５１８の結果は第２ＸＯＲエンジン５１８のために指定されたデータ転送先５２４へ送られる。各データソース５０２からのデータの一定量を処理することは、最後の一定の（またはより少ない）量のデータが取り出されるまで繰り返される。
【００２１】
図６は、データを暗号化し、データ上で排他的ＯＲ（ＸＯＲ）を実行し、エンドツーエンド・データ保護（ＥＥＤＰ）検査および更新サイクルを有するＤＭＡコントローラシステムの実施形態のブロック図６００である。データソース６０２からのデータは、データが受け取られると、ＤＭＡコントローラのソースデータ・ストレージ６０４の中に記憶される。第１ＥＥＤＰエンジン６０６、暗号化エンジン６１０、第１排他的ＯＲ（ＸＯＲ）エンジン６１４および第２排他的ＯＲ（ＸＯＲ）エンジン６１８、ならびに第２ＥＥＤＰエンジン６２４は同時にオペレーションを実行する。第１ＥＥＤＰエンジン６０６は、受け取られたデータの中に埋め込まれたＤＰＩを検査して、ＤＰＩを確認し、発見された任意のエラー６０８をＤＭＡコントローラに報告する検査ＥＥＤＰエンジンである。第１ＥＥＤＰ検査エンジン６０６によって発見されたエラーは、ＤＭＡコントローラシステムによって記録されてもよい、および／または割り込み機能が可能であれば割り込みを生成してもよい。暗号化エンジン６１０はデータ転送先６２８へ送られるデータを暗号化し、局所変更データストレージ＃１（６１２）の中に結果を記憶する。暗号化データは、第１変更データストレージ６１２からデータ転送先６２８、第２ＥＥＤＰ付加／更新エンジン６２４ならびに第１ＸＯＲエンジン６１４および第２排他的ＸＯＲエンジン６１８へ届けられる。各ＸＯＲエンジン６１４および６１８は計算を適切に完了するために、すでに計算済みのデータへのアクセスを必要とする場合がある。したがって第１ＸＯＲエンジン６１４は、第２変更データストレージ６１６の中に結果データを記憶することができる。同様に第２ＸＯＲエンジン６１８は、第３変更データストレージ６２０の中に結果データを記憶することができる。ＸＯＲ結果データは、第２変更データストレージ６１６および第３変更データストレージ６２０から、データ転送先６１８および第２ＥＥＤＰ付加／更新エンジン６２４へ届けられる。第１変更データストレージ６１２からの暗号化データ、第２変更データストレージ６１６からの第１ＸＯＲデータおよび第３変更データストレージ６２０からの第２ＸＯＲデータは結合され、第２ＥＥＤＰエンジン６２４へ届けられる。この結合プロセス６２２は、識別可能な方法でのデータストリーム内でのパケットの挿入として、または第２ＥＥＤＰエンジン６２４によって求められるその他のものとして、マルチプレクサを介して実行されてもよい。第２ＥＥＤＰエンジン６２４は実際に、暗号化データストリームおよびＸＯＲデータストリームのための更新ＤＰＩを生成するためか、またはＤＰＩを現在の転送データストリームに付加するために、２つのＥＥＤＰ機能を結合する。第２ＥＥＤＰ付加／更新エンジン６２４からの更新ＤＰＩは、第１変更データストレージ６１２からの暗号化データストリーム、第２変更データストレージ６１６からの第１ＸＯＲデータおよび第３変更データストレージ６２０からの第２ＸＯＲデータと結合され、所望の転送先６２８へ送られる。この結合プロセス６２６は、識別可能な方法でのデータストリーム内でのパケットの挿入として、またはデータ転送先によって求められるその他のものとして、マルチプレクサを介して実行されてもよい。
【００２２】
図６に示された実施形態のデータ変更エンジンのためのマルチソース移動の例示的オペレーションの中で、ＤＭＡエンジン／コントローラはソースからデータを取り出し、それを暗号化エンジン６１０を通して送る。同時に、同じデータはまた、ＤＰＩデータが適切であることを確認するために、第１ＥＥＤＰ検査エンジン６０６へ送られる。１６バイトのデータストリームの各々が暗号化された後、この暗号化データはデータ転送先６２８へ送られることに加えて、３つの異なるデータ変更エンジン６１４、６１８、６２４へ同時に送られる。暗号化データは第１ＸＯＲエンジン６１４、第２ＸＯＲエンジン６１８および第２ＥＥＤＰ付加／更新エンジン６２４へ送られる。ＸＯＲデータは、ＸＯＲ結果が異なるソース６０２からのデータが取り出されるときに累積されることが可能なように、関連したメモリバッファ６１６および６２０の中に記憶される。第２ＥＥＤＰ付加／更新エンジン６２４は、データが第２ＥＥＤＰ付加／更新エンジン６２４へ送られるときに必要とされる新たなＤＰＩを作り出す。ブロック境界に達すると（例えば１６バイトの後等）、生成されたＤＰＩは転送先６２８へ送られる。上述の処理は、すべての必要とされるソース６０２が取り出され、ともに暗号化され、ＸＯＲ処理されるまで続く。したがって、５つの異なるデータ変更エンジンは、同時にＤＭＡエンジン／コントローラ上でいっせいに動作する。様々な実施形態は、ＣＤＢによって定義されるブロックの大きさに従って、転送データストリームの中の境界にＤＰＩを挿入してもよい。データストリームについてのデータバイト数が転送先６２８に送られるデータに達する場合、ＤＰＩが挿入される。複数のデータブロックは、ＤＰＩが単一のデータストリームのために何回も転送データストリームの中に挿入されるように、所与のＣＤＢのために移動されてもよい。
【００２３】
図６に示された構成６００を実装する実施形態は、一度に１つのデータの一定部分ずつデータの一定部分（例えば１ｋｂのデータ）を各データソース６０２から取り出してもよい。各データの一定部分は次いで暗号化エンジン６１０を通して送られ、暗号化された結果は第２ＥＥＤＰエンジン６２４へ送られ、次いで暗号化データのために指定されたデータ転送先５２４へ送られる。暗号化されたデータが暗号化エンジン６１０から第２ＥＥＤＰエンジン６２４、および暗号化エンジン６１０のために指定されたデータ指定先６２８へ送られると、ＸＯＲ処理が実行される。一旦データの一定部分（例えば各データソース６０２から取り出された１ｋｂのデータ等）が各データソース６０２から取り出され、暗号化されたデータが暗号化エンジン６１０のために指定されたデータ転送先６２８へ第２ＥＥＤＰエンジン６２４を通して送られると、第１ＸＯＲエンジン６１４からの結果は、第２ＥＥＤＰエンジン６２４、および第１ＸＯＲエンジン６１４のために指定されたデータ転送先６２８へ送られる。第１ＸＯＲエンジン６１４の結果が第１ＸＯＲエンジン６１４のために指定されたデータ転送先６２８へ送られた後、第２ＸＯＲエンジン６１８の結果は第２ＥＥＤＰエンジン６２４、および第２ＸＯＲエンジン６１８のために指定されたデータ転送先６２８へ送られる。各データソース６０２からのデータの一定量を処理することは、最後の一定の（またはより少ない）量のデータが取り出されるまで繰り返される。局所変更データストレージ６１２、６１６、６２０のどれが第２ＥＥＤＰエンジン６２４へのストリーミングデータのために選択されるかということは、現在指定された転送先６２８へ転送されているデータストリーム（暗号化エンジンの結果６１０、第１ＸＯＲエンジンの結果６１４または第２ＸＯＲエンジンの結果６１８）に合致する。
【００２４】
図７は、データ上で排他的ＯＲ（ＸＯＲ）を実行し、エンドツーエンド・データ保護（ＥＥＤＰ）検査および更新サイクルを有するＤＭＡコントローラシステムの実施形態のブロック図７００である。データソース７０２からのデータは、データが受け取られると、ＤＭＡコントローラのソースデータ・ストレージ７０４の中に記憶される。第１ＥＥＤＰエンジン７０６、第１ＸＯＲエンジン７１０および第２ＸＯＲエンジン７１４、ならびに第２ＥＥＤＰエンジン７２０は同時にオペレーションを実行する。第１ＥＥＤＰエンジン７０６は、受領データの中に埋め込まれたＤＰＩを検査して、ＤＰＩを確認し、発見された任意のエラー７０８をＤＭＡコントローラに報告する検査ＥＥＤＰエンジンである。第１ＥＥＤＰ検査エンジン７０６によって発見されたエラーは、ＤＭＡコントローラシステムによって記録されてもよい、および／または割り込み機能が可能であれば割り込みを生成してもよい。各ＸＯＲエンジン７１０および７１４は計算を適切に完了するために、すでに計算済みのデータへのアクセスを必要とする場合がある。したがって第１ＸＯＲエンジン７１０は、第１変更データストレージ７１２の中に結果データを記憶することができる。同様に、第２ＸＯＲエンジン７１４は、第２変更データストレージ７１６の中に結果データを記憶することができる。ＸＯＲ結果データは、第１変更データストレージ７１２および第２変更データストレージ７１６から、データ転送先７２４および第２ＥＥＤＰ付加／変更エンジン７２０へ届けられる。第１変更データストレージ７１２からの第１ＸＯＲデータ、および第２変更データストレージ７１６からの第２ＸＯＲデータは結合され、第２ＥＥＤＰエンジン７２０へ届けられる。この結合プロセス７１８は、識別可能な方法でのデータストリーム内でのパケットの挿入として、または第２ＥＥＤＰエンジン７２０によって求められるその他のものとして、マルチプレクサを介して実行されてもよい。第２ＥＥＤＰエンジン７２０は実際に、ＸＯＲデータストリームのための更新ＤＰＩを生成するためか、またはＤＰＩを現在転送中のデータストリームに付加するために、２つのＥＥＤＰ機能を結合する。第２ＥＥＤＰ付加／更新エンジン７２０からの更新ＤＰＩは、第１変更データストレージ７１２からの第１ＸＯＲデータ、および第２変更データストレージ７１６からの第２ＸＯＲデータと結合され（７２２）、次いで所望の転送先７２４へ送られる。この結合プロセス７２２は、識別可能な方法でのデータストリーム内でのパケットの挿入として、またはデータ転送先によって求められるその他のものとして、マルチプレクサを介して実行されてもよい。様々な実施形態は、ＣＤＢによって定義されるブロックの大きさに従って、転送データストリームの中のブロック境界にＤＰＩを挿入してもよい。データストリームについてのデータバイト数が転送先７２４に送られるデータに達する場合、ＤＰＩが挿入される。複数のデータブロックは、ＤＰＩが単一のデータストリームのために何回も転送データストリームの中に挿入されるように、所与のＣＤＢのために移動されてもよい。
【００２５】
図７に示された実施形態７００について、データの一定部分（例えば１ｋｂのデータ）は、一度に１つのデータの一定部分ずつ各データソース７０２から取り出されてもよい。各データの一定部分は次いで、第１ＸＯＲエンジン７１０および第２ＸＯＲエンジン７１４に同時に送られる。データはデータソース７０２から取り出され、各ＸＯＲエンジン７１０、７１４は現在取り出されたデータ、および各々ＸＯＲエンジン７１０、７１４のための局所変更データストレージ７１２、７１６の中のデータを用いて排他的ＯＲオペレーションを実行する。一旦データの一定部分（例えば各データソース７０２から取り出された１ｋｂのデータ等）が各データソース７０２から取り出されると、第１ＸＯＲエンジン７１０からの結果は、第２ＥＥＤＰエンジン７２０、および第１ＸＯＲエンジン７１０のために指定されたデータ転送先７２４へ送られる。第１ＸＯＲエンジン７１０の結果が第１ＸＯＲエンジン７１０のために指定されたデータ転送先７２４へ送られた後、第２ＸＯＲエンジン７１４の結果は第２ＥＥＤＰエンジン７２０、および第２ＸＯＲエンジン７１４のために指定されたデータ転送先７２４へ送られる。各データソース７０２からのデータの一定量を処理することは、最後の一定の（またはより少ない）量のデータが取り出されるまで繰り返される。局所変更データストレージ７１２、７１６のどれが第２ＥＥＤＰエンジン７２０へのストリーミングデータのために選択されるかということは、現在指定された転送先７２４へ転送されているデータストリーム（第１ＸＯＲエンジンの結果７１０または第２ＸＯＲエンジンの結果７１４）に合致する。
【００２６】
図８は、ＤＭＡエンジン／コントローラ８１２を含むＲＡＩＤ（独立ディスク冗長アレイ）オンチップ（ＲＯＣ）・システム８０２の実施形態のブロック図８００である。図８のＲＯＣ８０２実施形態は、ＤＭＡエンジン／コントローラ８１２を多機能チップ上へ包含することの例を示す。図８に示された例示的ＲＯＣ８０２の実施形態の中で、ＲＯＣ８０２はシリアルアタッチドＳＣＳＩ（スモールコンピュータ・システム・インタフェース）（ＳＡＳ）コア８１０、ＤＭＡエンジン／コントローラ８１２、メモリキューおよびメモリコントローラ８１３、クロック構成／リセットサブシステム（ＣＣＲ）８１４、周辺機器コンポーネント相互接続（ＰＣＩ）エキスプレス（ＰＣＥ）・コア８１８、入力／出力（Ｉ／Ｏ）サブシステム８２０、プロセッサ局所バス（ＰＬＢ）静的ＲＡＭ（ＳＲＡＭ）８２２および周辺バスアクセス・モジュール（ＰＢＡＭ）８２４を含む複数のサブシステムから構成される。ＲＯＣ８０２の様々なサブシステムは、プロセッサ局所バス（ＰＬＢ）８１６を通して、および／または直接接続８３０〜８３６を介して互いに通信する。ＤＭＡエンジン／コントローラ８１２は、外部に接続されたダブルデータ・レート（ＤＤＲ）ＲＡＭメモリ８０６に対する直接メモリアクセスチャネル８０８を制御するために、メモリキューおよびメモリコントローラ８１３との直接接続８３６を有する。メモリキューおよびメモリコントローラ８１３は、ＲＯＣ８０２の単一の論理要素を形成するために、ＤＭＡエンジン／コントローラ８１２と結合されてもよいが、ＤＭＡエンジン／コントローラ８１２の位置を明確に示すために別々に示されている。ＳＡＳコア８１０は、ＳＡＳプロトコル通信８０４の伝送を可能にする通信経路を介して、ＳＡＳデバイスへの外部通信およびＳＡＳデバイスからの外部通信を提供する。同様に、ＰＣＥコア８１８は、ＰＣＩエキスプレス・プロトコル通信８２６の伝送を可能にする通信経路を介して、ＰＣＩエキスプレス・デバイスへの外部通信およびＰＣＩエキスプレス・デバイスからの外部通信を提供する。ＰＢＡＭは、シリアルデータ（ＳＤ）８２８の伝送を可能にする通信経路を介して、シリアルデータ（ＳＤ）周辺機器への外部通信およびＳＤ周辺機器からの外部通信を提供する。ＣＣＲ８１４、Ｉ／Ｏプロセッサ・サブシステム８２０およびＰＬＢ  ＳＲＡＭ８２２は、様々な外部通信サブシステム（８１０、８１２〜８１３、８１８および８２４）を相互接続するためのサポート機能を提供する。
【００２７】
図８に示されたＲＯＣ実施形態８０２の中で、ＤＭＡエンジン／コントローラ８１２は、メモリキューおよびメモリコントローラ８１３への直接接続８３６を通じた外部ＤＤＲ  ＲＡＭメモリ８０６へのアクセスを有する。さらに、ＤＭＡエンジン／コントローラ８１２は、ＰＬＢ８１６を通じたＲＯＣ８０２上の別のシステム（８１０、８１４、８１８、８２０、８２２、８２４）への接続を有する。ＤＭＡエンジン／コントローラ８１２は、ＰＬＢ８１６を通じてＲＯＣ実施形態８０２の残りのサブシステムへ接続されている。特に大きなデータの移動について通信速度を高めるために、ＲＯＣ８０２実施形態のサブシステムの間のいくつかの通信接続（８３０〜８３６）が、ＰＬＢ８１６接続に加えて組み込まれてもよい。例えば、図８に示された実施形態の中には、ＰＣＥコア８１８とＳＡＳコア８１０との間に直接通信接続８３０が存在する。図８に示された実施形態の中にはまた、メモリキューおよびメモリコントローラ８１３とＳＡＳコア８１０との間の直接通信接続８３４とともに、ＤＭＡエンジン／コントローラ８１２とＰＣＥコア８１８との間に直接通信接続８３２が存在する。ＳＡＳコア８１０、ＰＣＥコア８１８およびＰＢＡＭ８２４を通じて、ＤＭＡエンジン／コントローラ８１２はＳＡＳデバイス８０４、ＰＣＩエキスプレス・デバイス８２６および連続的に接続された周辺デバイス８２８と通信してもよい。ＲＯＣ８０２またはその他のＤＭＡ対応デバイス／システムの様々な実施形態は、システムデザイナーによって求められるように、より少ない、またはより多くの外部データ通信接続を組み込んでもよい。
【００２８】
図９は、ＤＭＡコントローラの実施形態のためのＣＤＢ処理の実施形態のブロック図９００である。ＣＤＢフェッチエンジン９０４は、ＣＤＢ９０２をフェッチして、プリフェッチ局所ＲＡＭ９０６の中にＣＤＢを記憶してもよい。ＣＤＢフェッチエンジン９０６はＣＤＢ９０２の中に埋め込まれた命令を分析し、ＣＤＢ９０２の中の符号化された命令を実施するために必要な行為を実行する。ＣＤＢプロセッサ９０８はまた、ＤＭＡコントローラの局所ＲＡＭ９１２の中にどれだけの利用可能なスペースがあるのかを判定するために、メモリマネージャ９１０と対話する。ＣＤＢプロセッサ９０８はまた、データおよび変更データを記憶して、必要に応じてデータを転送し、所望の複数のデータ操作を実行するためにＤＭＡコントローラの局所ＲＡＭ９１２と対話してもよい。ＣＤＢプロセッサ９０８は、ＤＭＡコントローラ上で利用可能なデータ変更エンジン９１６〜９３２から適切なデータ変更エンジン９１４を選択してもよい。図９に示された実施形態について、利用可能なデータ変更エンジンはハッシュ／ＨＭＡＣエンジン９１６、フィルパターン・エンジン９１８、ＬＦＳＲエンジン９２０、ＥＥＤＰ生成エンジン９２２、ＥＥＤＰ検査エンジン９２４、ＸＯＲエンジン＃１（９２６）、ＸＯＲエンジン＃２（９２８）、復号エンジン９３０、および暗号化エンジン９３２を含む。ハッシュ／ＨＭＡＣエンジン９１６は、ともに、または単独でハッシュ、ＨＭＡＣ、または様々な実施形態のためにハッシュ／ＨＭＡＣを組み合わせたエンジンであってよい。フィルパターン・エンジン９１８は、一定のデータパターンで変更ストレージを埋めるために使用されてよい。結果的に、フィルパターン・エンジン９１８は、書き込まれるパターンが一定のデータパターンであることから、データソースからデータを読み出すことを必要としない。ＬＦＳＲエンジン９２０もまた、ＬＦＳＲエンジン９２０のオペレーションを実行するために、データソースからデータを読み出すことを必要としない。同様に、一部のデータ変更エンジンは転送先へデータを書き込むことを必要としないが、例えばＥＥＤＰ検査エンジン９２４等のように、ソースから受け取られたデータ上で検査だけを実行する。したがって特定のデータ変更エンジン（例えばフィルパターン・エンジン９１８および／またはＬＦＳＲエンジン９２０等）については、ＣＤＢに従ってデータソースから読み出すことは、データソースから任意の実際のデータを読み出すことを必要としない。同様に、特定のデータ変更エンジン（例えばＥＥＤＰ検査エンジン９２４等）について、ＣＤＢに従ってデータ転送先にデータを書き込むことは、実際のデータがデータ転送先に書き込まれることを必要としなくてもよい。ＣＤＢプロセッサ９０８は、データをデータ転送先に書き込み、ＣＤＢのためにデータ変更エンジンのパフォーマンスを追跡することを処理する。一旦ＣＤＢプロセッサ９０８が所与のＣＤＢ９０２のためのすべてのデータ移動を完了すると、ＣＤＢ完了エンジン９３４はＣＤＢ完了結果を完了キュー（９３６）に書き込む。完了キュー９３６は、ＤＭＡコントローラ／エンジンの外部にあるメモリの中に配置されてよい。
【００２９】
第１ＣＤＢのためのデータ操作が完了間近であるか、または完了する場合、処理速度全体を高めるために、様々な実施形態はドレインＦＳＭ１０１２が第１ＣＤＢのためのデータ書き込みを処理することができるようにしてもよく、一方でフィルＦＳＭ１００６は第２の（すなわち次の）ＣＤＢのためのデータ取り出しのプロセスを開始してもよい。
【００３０】
図１０は、ＣＤＢプロセッサ実施形態のためのＣＤＢ処理のための有限ステートマシン（ＦＳＭ）・オペレーションのブロック図１０００である。ＣＤＢフェッチエンジン有限ステートマシン（ＦＳＭ）１００２は、ＣＤＢの中に埋め込まれた命令を分析し、ＤＭＡコントローラによって受け取られた、ＣＤＢの中に埋め込まれた命令を実施するために必要な行為を実行するために、４つの有限ステートマシン（１００６〜１０１２）と対話してもよい。フィルＦＳＭ１００６は、ＣＤＢフェッチエンジンＦＳＭ１００２から命令を受け取り、データソースからデータを取り出すための読み出しコマンド１００４の作成および発行を制御する。変更ＦＳＭ１００８は、ＣＤＢの中に埋め込まれた命令に従って、ＤＭＡコントローラデータ変更エンジン１０１８を使用してデータ操作オペレーションのパフォーマンスを制御する。ドレインコマンド（ＣＭＤ）ＦＳＭ１０１０は、データ変更エンジン１０１８からのデータおよび／または変更データを所望のデータ転送先１０１６へ送るようにシステムに指示する書き込みコマンドを作成する。ドレインデータＦＳＭ１０１２は、データおよび／または変更データを所望のデータ転送先１０１６に書き込むために、ドレインコマンドＦＳＭ１０１０で作成された書き込みコマンドを実行する。一部の場合では、ドレインデータＦＳＭ１０１２は、例えばデータ操作の計算を実行するために、局所ＤＭＡコントローラＲＡＭの中にデータをバッファリングすることを必要としないＥＥＤＰ生成のためのものなど、データ変更エンジン１０１８を使用するデータ変更オペレーションの一部を実行してもよい。
【００３１】
様々な実施形態は、コンピュータシステム、フィールド・プログラマブル・ゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、その他のプログラマブル論理回路またはその他の電子デバイス上で動作するアプリケーションを介して、本明細書で詳述されている制御および処理機能を提供してもよい。実施形態は、本発明に従って、コンピュータ（またはその他の電子デバイス）またはコンピュータシステムをプログラム／操作して１つのプロセスまたは複数のプロセスを実行するために使用されてもよい、記憶された命令を有するコンピュータ可読またはマシン可読媒体を含んでもよいコンピュータプログラム製品として提供されてもよい。このコンピュータ可読媒体は、限定されないがハードディスク・ドライブ、フロッピー（登録商標）ディスケット、光ディスク、コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスクＲＯＭ（ＤＶＤ−ＲＯＭ）、ユニバーサル・シリアル・バス（ＵＳＢ）・メモリスティック、光磁気ディスク、ＲＯＭ、ランダムアクセス・メモリ（ＲＡＭ）、消去可能なプログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的に消去可能なプログラマブルＲＯＭ（ＥＥＰＲＯＭ）、光磁気カード、フラッシュメモリ、または電子的命令を記憶するために適したその他の種類の媒体／マシン可読媒体を含んでもよい。このコンピュータプログラム命令は、単一のコンピュータ／電子デバイス／電子回路上に存在し、そこで動作してもよく、またはコンピュータシステムを備えた複数のコンピュータ／デバイス／電子回路の間で分散されてもよい。さらに、実施形態はコンピュータプログラム製品としてダウンロードされてもよく、この場合プログラムは、通信リンク（例えば、有線／ケーブル接続および無線接続の両方を含めたモデムまたはネットワーク接続等）を介した搬送波またはその他の伝搬媒体の中で具体化されるデータ信号を経由して、遠隔のコンピュータから要求を出すコンピュータへ転送されてもよい。
【００３２】
上の本発明の説明は、例示および説明を目的として示されてきた。網羅的であること、または本発明を開示されたものと寸分違わぬ形態に限定することは意図されておらず、上述の教示を考慮して、他の修正形態および変形形態が可能であってもよい。本実施形態は、本発明の原理およびその実際的な応用を最もよく説明し、それによって当業者が、考えられる特定の用途に適した様々な実施形態および様々な修正形態で本発明を最もよく利用することができるように選択され、説明されている。添付の特許請求項は、先行技術によって制限されるものを除いて、本発明のその他の代替実施形態を含むものと解釈されることが意図される。
【図１】
0005437922.tif 000002
【図２】
0005437922.tif 000003
【図３】
0005437922.tif 000004
【図４】
0005437922.tif 000005
【図５】
0005437922.tif 000006
【図６】
0005437922.tif 000007
【図７】
0005437922.tif 000008
【図８】
0005437922.tif 000009
【図９】
0005437922.tif 000010
【図１０】
0005437922.tif 000011