説明

同時データ操作が可能なDMAエンジン

【課題】DMAコントローラ/エンジンによって管理される直接メモリアクセス(DMA)・チャネルを介して転送されるデータ上で、複数のデータ操作オペレーションを同時に実行するための方法およびデバイスを提供する。
【解決手段】DMAコントローラ内部で動作する制御データブロック(CDB)プロセッサは、CDBを読み出し、CDBの内容に従ってデータの読み出し、データ操作オペレーションおよびデータの書き込みを設定してもよい。データがDMAコントローラを通して導かれる間に、例えばハッシング、HMAC、フィルパターン、LFSR、EEDP検査、EEDP生成などの複数のデータ操作オペレーションをデータ上で同時に実行してもよい。データ操作オペレーションを実行するデータ変更エンジンは、データ操作オペレーションの間に外部メモリへのアクセスを回避するために局所RAMを使用する、DMAコントローラ上で実施されてもよい。

【発明の詳細な説明】
【背景技術】
【0001】
直接メモリアクセス(DMA)は、モデムコンピュータの重要な機能である。DMAは、コンピュータの特定のハードウェア・サブシステムに、中央処理装置(CPU)から独立したアクセスシステム・メモリから読み出す、および/または同メモリへ書き込ませることを可能にする。DMAを使用してもよい一部の例示的なハードウェアシステムは、限定されないが、ディスクドライブ・コントローラ、RAID(独立ディスク冗長アレイ)オンチップ(ROC)・コントローラ、グラフィックカード、ネットワークカードおよびサウンドカードを含む。DMAは、マルチコア・プロセッサ上のチップ内データ転送のために使用されてもよい。DMAチャネルの管理および実施は、典型的にはDMAコントローラによって実行される。しばしばDMAコントローラは、局所DMAメモリおよび外部メインメモリへ、およびそれらからデータを転送するように、局所メモリを備えている。DMAコントローラはコンピュータCPUではなく、データの転送を管理することから、DMAを使用するデータ転送は、ずっと少ないコンピュータCPUの処理時間しか使用せず、したがってDMAコントローラを有するコンピュータの有効計算能力を増加させる。DMAを使用しないと、周辺装置との通信、またはマルチコア・システムのコア間の通信は、読み込み/書き込みオペレーション全体の間CPUを完全に占有する場合があり、他の計算タスクを実行するためにCPUを利用できないようにする。DMAを使用すると、CPUは転送を開始して、次いで転送が進行している間に他のオペレーションを行い、一旦そのオペレーションが完了されるとDMAコントローラから割り込み信号を受け取る。周辺装置との通信は、典型的に通常システムのランダムアクセス・メモリ(RAM)のためのものよりも遅く、DMAコントローラによって管理されるDMAチャネルを使用しなければ、CPUは周辺装置との通信の間さらに長い期間利用不可能となるので、CPUを周辺装置とのデータ転送の実行から解放することは特に重要である。
【0002】
典型的なDMA転送は、メモリのブロックを1つの装置から別のものへコピーする。CPUはデータ転送を開始するが、データ転送そのものを実行することはない。業界標準アーキテクチャ(ISA)・バスについては、データ転送は、典型的にコンピュータ・マザーボード・チップセットの一部として組み込まれたDMAコントローラによって実行される。周辺機器コンポーネント相互接続(PCI)バスは、周辺デバイスがバスを制御し、転送そのものを実行するDMAをマスターしたバスを使用する。
【0003】
組み込みプロセッサは、データ転送の間に他のタスクを実行し続けながらデータ転送を発するための処理要素を可能にするために、チップ内にDMAエンジン/コントローラを含んでもよい。DMAコントローラはチップ内に組み込まれている場合、一般にDMAエンジンと呼ばれる。マルチコア組み込みプロセッサは、しばしばチップのマルチコア・プロセッサ・チップ内のサブシステムとして、局所DMAメモリとともに1つまたは複数のDMAエンジンを含む。
【発明の概要】
【0004】
本発明の実施形態は、各々が様々なデータ操作オペレーションのうちの少なくとも1つを実行するDMAコントローラ内で、複数のデータ操作エンジンを提供することと、少なくとも1つのデータソースからデータを読み出し、データ上で複数のデータ操作オペレーションを実行し、少なくとも1つの転送先にデータを書き込むための命令を含む制御データブロック(CDB)をDMAコントローラによってフェッチすることと、CDBの中の符号化された命令に従って、少なくとも1つのデータソースからデータをDMAコントローラによって取り出すことと、複数のデータ操作オペレーションのうちの少なくとも2つが同時にDMAコントローラによって実行されるように、CDBの中に符号化された命令に従って、各データ操作オペレーションのために、DMAコントローラに提供された複数のデータ操作エンジンのうちの1つを使用して、DMAコントローラによって受け取られたデータ上で、複数のデータ操作オペレーションの各データ操作オペレーションをDMAコントローラ内で実行することと、CDBの中に符号化された命令に従って、少なくとも1つの転送先に複数のデータ操作オペレーションの結果をDMAコントローラによって送ることとを備える、DMAコントローラによって管理される直接メモリアクセス(DMA)・チャネルを介して転送されるデータ上で複数のデータ操作オペレーションを実行するための方法を備えてもよい。
【0005】
本発明の実施形態は、少なくとも1つのデータソースからデータを読み出し、データ上で複数のデータ操作オペレーションを実行し、少なくとも1つの転送先にデータを書き込むための命令を含む制御データブロック(CDB)をフェッチする制御データブロック(CDB)プロセッサ・サブシステムと、CDBの中に符号化された命令に従って、少なくとも1つのデータソースからデータを取り出すフィルサブシステムと、複数のデータ操作オペレーションのうちの少なくとも2つが同時にDMAコントローラによって実行されるように、CDBの中に符号化された命令に従って、フィルサブシステムによって受け取られたデータ上で複数のデータ操作オペレーションの各データ操作オペレーションのために、各々が様々なデータ操作オペレーションのうちの少なくとも1つを実行するDMAコントローラ内の複数のデータ操作エンジンと、CDBの中に符号化された命令に従って、少なくとも1つの転送先に複数のデータ操作オペレーションの結果を送るドレイン・サブシステムとを備える、DMAコントローラによって管理される直接メモリアクセス(DMA)・チャネルを介して転送されるデータ上で複数のデータ操作オペレーションを実行する直接メモリアクセス(DMA)・コントローラをさらに備えてもよい。
【0006】
本発明の実施形態は、各々が様々なデータ操作オペレーションのうちの少なくとも1つを実行するDMAコントローラ内の複数のデータ操作エンジンを提供するための手段と、少なくとも1つのデータソースからデータを読み出し、データ上で複数のデータ操作オペレーションを実行し、少なくとも1つの転送先にデータを書き込むための命令を含む制御データブロック(CDB)をDMAコントローラによってフェッチするための手段と、CDBの中に符号化された命令に従って、少なくとも1つのデータソースからデータをDMAコントローラによって取り出すための手段と、複数のデータ操作オペレーションのうちの少なくとも2つが同時にDMAコントローラによって実行されるように、CDBの中に符号化された命令に従って、各データ操作オペレーションのためにDMAコントローラ上に提供された複数のデータ操作エンジンのうちの1つを使用して、DMAコントローラによって受け取られたデータ上で複数のデータ操作オペレーションの各データ操作オペレーションをDMAコントローラ内で実行するための手段と、CDBの中に符号化された命令に従って、少なくとも1つの転送先に複数のデータ操作オペレーションの結果をDMAコントローラによって送るための手段とを備える、DMAコントローラによって管理される直接メモリアクセス(DMA)・チャネルを介して転送されるデータ上で複数のデータ操作オペレーションを実行する直接メモリアクセス(DMA)・コントローラをさらに備えてもよい。
【図面の簡単な説明】
【0007】
【図1】制御データブロック(CDB)によって管理される複数のデータ変更エンジンを有する直接メモリアクセス(DMA)・コントローラシステムの実施形態のブロック図である。
【図2】エンドツーエンド・データ保護(EEDP)検査および更新サイクルを備えたDMAコントローラシステムの実施形態のブロック図である。
【図3】データを暗号化し、エンドツーエンド・データ保護(EEDP)検査を実行するDMAコントローラシステムの実施形態のブロック図である。
【図4】データを暗号化し、エンドツーエンド・データ保護(EEDP)検査および更新サイクルを有するDMAコントローラシステムの実施形態のブロック図である。
【図5】データを暗号化し、データ上で排他的OR(XOR)を実行し、エンドツーエンド・データ保護(EEDP)検査を実行するDMAコントローラシステムの実施形態のブロック図である。
【図6】データを暗号化し、データ上で排他的OR(XOR)を実行し、エンドツーエンド・データ保護(EEDP)検査および更新サイクルを有するDMAコントローラシステムの実施形態のブロック図である。
【図7】データ上で排他的OR(XOR)を実行し、エンドツーエンド・データ保護(EEDP)検査および更新サイクルを有するDMAコントローラシステムの実施形態のブロック図である。
【図8】DMAエンジン/コントローラを含むRAID(独立ディスク冗長アレイ)オンチップ(ROC)・システムの実施形態のブロック図である。
【図9】DMAコントローラの実施形態のための制御データブロック(CDB)処理の実施形態のブロック図である。
【図10】CDBプロセッサの実施形態のためのCDB処理のための有限ステートマシン(FSM)・オペレーションのブロック図である。
【発明を実施するための形態】
【0008】
現代のコンピュータシステムがより複雑化するにつれて、コンピュータシステム内部で転送されるデータ、およびコンピュータシステムに接続された周辺デバイスへ転送されるデータ上で、さらなるデータ操作オペレーションが実行されることが求められる。例えばRAID(独立ディスク冗長アレイ)オンチップ(ROC)・システムは、ROCシステムオペレーションの一部として、転送されるデータ上で複数のデータ操作オペレーションを実行することが求められる場合がある。ROCシステムは典型的に、ROCアーキテクチャ内部のサブシステムとして、直接メモリアクセス(DMA)・エンジン/コントローラを含む。いくつかの典型的なデータ操作オペレーションは、ハッシュ、ハッシュメッセージ認証符号(HMAC)、ハッシュ/HMACの組み合わせ、フィルパターン、線形帰還シフトレジスタ(LFSR)、エンドツーエンド・データ保護(EEDP)検査/付加/更新/削除、排他的OR(XOR)、暗号化および復号を含む。実施形態のDMAエンジン/コントローラは、コンピュータシステム内部の他のシステム/サブシステムのための処理要件を減少させるために、DMAエンジン/コントローラ内部で転送されるデータ上で様々なデータ処理オペレーションを実行することを組み込んでもよい。さらに、実施形態のDMAエンジン/コントローラは、複数のデータ操作オペレーションが、連続する方法でそれらを一度に1つずつ実行するよりも速く実行されるように、転送されるデータ上で複数のデータ操作を同時に実行してもよい。したがって、実施形態によってデータは、できるだけ少ない割り込みでソースから転送先へ自由に移動することができる。実施形態のDMAエンジン/コントローラによって転送されるデータ上で実行されるデータ操作オペレーションはまた、DMAエンジン/コントローラの局所にあるメモリ(すなわち局所メモリ)に対して、データを記憶して取り出す/変更することでき、DMAエンジン/コントローラの外部にあるメモリ(すなわち外部メモリ)にアクセスするための不必要なオーバヘッドを回避する。
【0009】
例えば、実施形態のDMAエンジン/コントローラは、DMAエンジン/コントローラ上の暗号化エンジンを使用して、データを暗号化し、局所DMAメモリに配置された第1データバッファの中に記憶してもよい。暗号化されたデータが第1データバッファに配置される間、DMAエンジン/コントローラ上のXORエンジンは、第1データバッファへの暗号化データのデータフローに対するいかなる割り込みも伴わずに、暗号化されたデータ上で同時にXORオペレーションを実行し、局所DMAメモリに配置された第2データバッファの中にXORデータを記憶してもよい。暗号化データが作り出されるときに、暗号化データ上でXORオペレーションを実行することによって、実施形態は、XORオペレーションを実行する前に、暗号化データがデータバッファに完全に書き込まれるのを待つ待ち時間を回避することができる。さらに実施形態のDMAエンジン/コントローラはまた、暗号化およびXORデータ操作オペレーションと並行してEEDP検査、付加および/または削除オペレーションを実行することができ、さらにDMAエンジン/コントローラによって転送されるデータ上で複数のデータ操作オペレーションを実行することに伴う待ち時間を減少させる。
【0010】
様々な実施形態は、様々なコンピュータシステムのDMAエンジン/コントローラ、およびDMAエンジン/コントローラを有する電子デバイス上で実施されてよい。複数のDMAチャネルが求められる場合、必要に応じて、コンピュータシステムおよび/または電子デバイスは複数のDMAエンジン/コントローラを含んでもよい。また、一部のDMAエンジン/コントローラは、利用可能なDMAチャネルの数がDMAエンジン/コントローラの数×各DMAエンジン/コントローラ上で利用可能なDMAチャネルの数であるとして、システムの中に複数のDMAエンジン/コントローラを含むことが乗数効果につながるように、複数のDMAチャネルを与えてもよい。実施形態のためのDMAコントローラは、独立型専用コンピュータ「カード」、独立型専用チップとしてコンピュータシステムおよび/または電子デバイスに組み込まれた独立システムとして、または独立型専用電子デバイスとして実装されてもよい。しかしながら、しばしば、DMAコントローラはより大きな多機能チップ、カード、またはコンピュータシステムもしくは電子デバイスに集積された回路のサブシステムまたはエンジンとして組み込まれる。したがって実施形態のためのDMAコントローラは、より大きな多機能チップ、カードまたは回路の中に含まれたDMAエンジン・サブシステムとして実装されてもよい。典型的に、DMAコントローラがより大きな多機能チップ、カードまたは回路のサブシステムとして含まれる場合、DMAコントローラはDMAエンジンと呼ばれる。したがって、この文書全体を通して、DMAコントローラおよびDMAエンジンという用語は、DMAコントローラへの言及がある場合、それはまたDMAエンジンへの言及でもあるように交換可能に使用されることになり、逆もまた同様である。
【0011】
図1は、制御データブロック(CDB)120によって管理される複数のデータ変更エンジン110〜112を有するDMAコントローラシステム106の実施形態のブロック図100である。図1に示されている実施形態では、CDB120は、DMAコントローラ106のCDBプロセッサ・サブシステム122で、DMAコントローラ/エンジン106によってフェッチされ受け取られる。CDBプロセッサ・サブシステム122はDMAコントローラ106上で動作し、その一部として実装される。CDBは、転送/変更されるデータのデータソース102〜104、転送されるデータのために求められるデータ操作オペレーション、および転送/変更されるデータのためのデータ転送先116〜118を含めて、データ転送のための命令を含む。CDBプロセッサ122はCDB120の中の符号化された命令を読み出し、DMAコントローラ106に、CDB120の中の符号化された命令に従ってデータ転送を設定し、実行するように指示する。CDBに基づいてDMAコントローラ106は、データソース102〜104が所望のデータをDMAコントローラ106へ送るように、読み出しコマンドを準備して、データソース102〜104へ発行してもよい。データソース102〜104からのデータは、DMAコントローラ106によって受け取られ、DMAコントローラ106の局所にあるソースデータ・ストレージ108の中に記憶される。CDB120に基づいて、DMAコントローラはDMAコントローラ106を介して転送されるデータ上で所望のデータ変更オペレーションを実行するために、複数のデータ変更エンジン110〜112を選択してもよい。データ変更エンジン110〜120からの結果データは直接データ転送先116〜118へ届けられてもよく、またはDMAコントローラ106の局所にある変更データストレージ114の中に記憶されてもよい。DMAコントローラ106の変更データストレージ114の中に記憶されたデータ変更エンジン110〜112からの結果データは、他のデータ変更エンジン110〜112によって使用されてもよく、または変更データストレージ114がデータ変更エンジン110〜112によって読み出され、書き込まれることができるように、本来のデータ変更エンジン(例えば過去の結果に左右されるオペレーションを実行するデータ変更エンジン等)によって使用されてもよい。一旦所望のデータ変更オペレーションが完了されると、DMAコントローラは、データ/変更データを所望のデータ転送先116〜118へ届けてもよい。一部の場合では、データ変更エンジン110〜112の結果は、他のデータ変更エンジン110〜112によって使用されるための中間結果としてのみ使用されてもよい。データ変更エンジン110〜112の構成、およびどのデータ変更エンジン110〜112からの結果データが届けられるのかということは、CDB120の中の符号化された命令に従って実施される。
【0012】
1つの実施形態のために、データソース102〜104は、典型的なDMAコントローラ/エンジン106と互換性を持つ任意のデータソース102〜104であってよい。1つの実施形態は、単一のデータソース102から、または複数のソース102〜104からデータの収集/読み出しを行ってもよい。例えば、単一のメモリ領域からのソースデータは、外部メモリ(すなわちDMAコントローラ106の外部にあるメモリ)から読み出され、様々なデータ転送先116〜118へ転送されてもよい。同様に、複数のメモリ用域からのソースデータは外部から読み出され、1つのデータ転送オペレーションの中で様々なデータ転送先116〜118へ転送されてもよい。
【0013】
データ変更エンジンは、DMAコントローラ/エンジン106を介して転送されるデータのために求められる任意のデータ変更を実行するように作成されてもよい。例えば、一部のデータ変更エンジンは、限定されないがハッシュ、HMAC、ハッシュ/HMACの組み合わせ、フィルパターン、線形帰還シフトレジスタ(LFSR)、エンドツーエンド・データ保護(EEDP)検査/付加/更新/削除、排他的OR(XOR)、暗号化および復号を含んでもよい。サポートされるハッシング・アルゴリズムの一部の種類は、ハッシュ・エンジンによって個別または同時に実行されてよい標準的なセキュア・ハッシュ・アルゴリズム(SHA)−224、SHA−256、SHA−384およびSHA512アルゴリズムを含む。データ操作エンジン110〜112のための入力データは、単一の結果に結合される複数のデータ操作を許容するために、中間データ結果として別のデータ操作エンジン110〜112から来るように指定されてもよい。この中間結果はまた、必要に応じてCDB120の中で符号化されて、転送先の場所116〜118のうちの1つに送られてもよい。しかしながら、この中間データ結果は、必ずしもデータ転送先116〜118へ送られなければならないというわけではない。別のデータ操作エンジンから来るデータ上で作業する際、第2データ操作エンジンは第1データ操作エンジンと同時に動作してもよいが、第2データ操作エンジンは、第1データ操作エンジンが第2データ操作エンジンの計算を開始する前に中間結果データのストリームミングを始めることを可能とするために、第1データ操作エンジンの少し後で開始してもよい。様々な実施形態について、データ操作エンジン110〜112の同時オペレーションは、並行して同時に行われる同一データ(中間結果および/または本来の受領データ)上での異なるデータ操作エンジン110〜112の実行オペレーションとして生じてもよい。さらに、様々な実施形態は、本来のデータと変更データ結果との両方をデータ転送先116〜118へ届けてもよい。
【0014】
様々な実施形態は、DMAコントローラ106内に局所ソースデータ・ストレージ108および局所変更データストレージ114を、1つまたは複数の局所電子メモリ回路として実装してもよい。電子メモリは、たとえコンピュータ可読(すなわち電子的)メモリがメモリ・ストレージを必要とする電子デバイスの中に含まれる場合であっても、コンピュータ可読メモリと呼ばれてもよいが、典型的にコンピュータであるとみなされることはない。典型的な電子メモリの実装は、DMAコントローラ106によってソースデータ・ストレージ108と変更データストレージ114とに分けられてもよい電子ランダムアクセス・メモリ(RAM)のセットを提供するものである。電子メモリは、ソースデータ・ストレージ108および変更データストレージ114のために一定区画にあってもよいが、DMAコントローラもまた、電子メモリ全体がより効率的に利用されることができるように、ソースデータ・ストレージおよび変更データストレージ114のために必要に応じて、動的に電子メモリRAMを割り当ててもよい。さらに変更データストレージ114は複数のデータ変更エンジン110〜112からのデータを記憶するために、複数のセグメントに再分割されてもよい。
【0015】
1つの実施形態のためのデータ転送先116〜118は、典型的なDMAコントローラ/エンジン106と互換性を持つ任意のデータ転送先116〜118であってよい。様々な実施形態は複数のデータ転送先116〜118へ、または単一のデータ転送先116へ、データおよび/または変更データ結果を書き込んでもよい。個々のデータ結果は、利用可能なデータ転送先116〜118のすべてに、またはそれらのサブグループのみに転送されてもよい。すなわち、1つの結果はデータ転送先116〜118に送られてもよく、一方でその他の結果は単一の転送先116または転送先116〜118のサブセットにだけ送られてもよい。典型的なデータ転送先116〜118は限定されないが、ディスクドライブ、コンピュータ周辺装置、独立した外部メモリセグメントおよび/またはその他の外部デバイスを含んでもよい。
【0016】
図2は、エンドツーエンド・データ保護(EEDP)検査および更新サイクルを備えたDMAコントローラシステムの実施形態のブロック図200である。データソース202からのデータは、データが受け取られると、DMAコントローラのソースデータ・ストレージ204の中に記憶される。第1EEDPエンジン206および第2EEDPエンジン210は、並行してデータソース202から受け取られたデータ上でオペレーションを実行する。第1EEDPエンジン206は、受け取られたデータの中に埋め込まれたデータ保護情報(DPI)を検査して、DPIを確認し、発見された任意のエラー208をDMAコントローラに報告する検査EEDPエンジンである。EEDP検査エンジン206によって発見されたエラーは、DMAコントローラシステムによって記録されてもよい、および/または割り込み機能が可能であれば割り込みを生成してもよい。第2EEDPエンジン210は実際に、転送データストリームのための更新DPIを生成するためか、またはDPIを転送データストリームに付加するために、2つのEEDP機能を結合する。第2EEDP付加/更新エンジン210からの更新DPIは、データソース202からの本来のデータストリームと結合され(212)、所望の転送先214へ送られる。この結合プロセス212は、識別可能な方法でのデータストリーム内でのパケットの挿入として、またはデータ転送先によって求められるその他のものとして、マルチプレクサを介して実行されてもよい。様々な実施形態は、CDBによって定義されるブロックの大きさに従って、転送データストリームの中のブロック境界にDPIを挿入してもよい。データストリームについてのデータバイト数が転送先214に送られるデータに達する場合、DPIが挿入される。複数のデータブロックは、DPIが単一のデータストリームのために何回も転送データストリームの中に挿入されるように、所与のCDBのために移動されてもよい。
【0017】
図3は、データを暗号化し、エンドツーエンド・データ保護(EEDP)検査を実行するDMAコントローラシステムの実施形態のブロック図300である。データソース302からのデータは、データが受け取られると、DMAコントローラのソースデータ・ストレージ304の中に記憶される。EEDPエンジン306および暗号化エンジン310は、並行してデータソース302から受け取られたデータ上でオペレーションを実行する。EEDPエンジン306は、受け取られたデータの中に埋め込まれたDPIを検査して、DPIを確認し、発見された任意のエラー308をDMAコントローラに報告する検査EEDPエンジンである。EEDP検査エンジン306によって発見されたエラーは、DMAコントローラシステムによって記録されてもよい、および/または割り込み機能が可能であれば割り込みを生成してもよい。暗号化エンジン310はデータ転送先314へ送られるデータを暗号化し、局所変更データストレージ312の中に結果を記憶する。暗号化データは、変更データストレージ312からデータ転送先314へ届けられる。その他のデータ変更エンジンもまた、図3に示されている実施形態300のような同様の実施形態の中で使用されてよい。例えば、1つの実施形態は図3に示されている暗号化エンジン310を、ハッシュまたはハッシュ/HMACを組み合わせたエンジンと置き換えてもよい。同様に様々な実施形態は、図4〜7に示された実施形態のデータ変更エンジンを異なるデータ変更エンジンと置き換えてもよい。さらに図2〜7に示された実施形態は、DMAコントローラ上で実装されてもよい多様なデータ操作エンジン構成のサブセットのみを表している。DMAコントローラに届けられる各CDBは、DMAコントローラによって受け取られる各CDBのために、DMAコントローラが任意の多様なデータ操作エンジン構成に再構成されるように、DMAコントローラ上で構成されるデータ操作エンジンの構成を定義する。暗号化エンジン310の代わりに使用されるいくつかのデータ操作エンジンについては、データ操作エンジン(例えばXORエンジン)がすでに計算済みのデータへのアクセスを有することができるように、変更データのうちの一部を局所変更データストレージ312の中に記憶しなければならない場合がある。
【0018】
図4は、データを暗号化し、エンドツーエンド・データ保護(EEDP)検査および更新サイクルを有するDMAコントローラシステムの実施形態のブロック図400である。データソース402からのデータは、データが受け取られると、DMAコントローラのソースデータ・ストレージ404の中に記憶される。第1EEDPエンジン406、暗号化エンジン410および第2EEDPエンジン414は同時にオペレーションを実行する。第1EEDPエンジン406は、受け取られたデータの中に埋め込まれたDPIを検査して、DPIを確認し、発見された任意のエラー408をDMAコントローラに報告する検査EEDPエンジンである。第1EEDP検査エンジン406によって発見されたエラーは、DMAコントローラシステムによって記録されてもよい、および/または割り込み機能が可能であれば割り込みを生成してもよい。暗号化エンジン410はデータ転送先418へ送られるデータを暗号化し、局所変更データストレージ412の中に結果を記憶する。暗号化データは、変更データストレージ412からデータ転送先418および第2EEDP付加/更新エンジン414へ届けられる。第2EEDPエンジン414は実際に、暗号化転送データストリームのための更新DPIを生成するためか、またはDPIを転送データストリームに付加するために、2つのEEDP機能を結合する。第2EEDP付加/更新エンジン414からの更新DPIは、データストレージ412からの暗号化データストリームと結合され(416)、所望の転送先418へ送られる。この結合プロセス416は、識別可能な方法でのデータストリーム内でのパケットの挿入として、またはデータ転送先によって求められるその他のものとして、マルチプレクサを介して実行されてもよい。様々な実施形態は、CDBによって定義されるブロックの大きさに従って、転送データストリームの中でブロック境界にDPIを挿入してもよい。データストリームについてのデータバイト数が転送先418に送られるデータに達する場合、DPIが挿入される。複数のデータブロックは、DPIが単一のデータストリームのために何回も転送データストリームの中に挿入されるように、所与のCDBのために移動されてもよい。
【0019】
図5は、データを暗号化し、データ上で排他的OR(XOR)を実行し、エンドツーエンド・データ保護(EEDP)検査を実行するDMAコントローラの実施形態のブロック図500である。データソース502からのデータは、データが受け取られると、DMAコントローラのソースデータ・ストレージ504の中に記憶される。EEDPエンジン506、暗号化エンジン510、ならびに第1排他的OR(XOR)エンジン514および第2排他的OR(XOR)エンジン518は同時にオペレーションを実行する。EEDPエンジン506は、受け取られたデータの中に埋め込まれたDPIを検査して、DPIを確認し、発見された任意のエラー508をDMAコントローラに報告する検査EEDPエンジンである。EEDP検査エンジン506によって発見されたエラーは、DMAコントローラシステムによって記録されてもよい、および/または割り込み機能が可能であれば割り込みを生成してもよい。暗号化エンジン510はデータ転送先524へ送られるデータを暗号化し、局所変更データストレージ#1(512)の中に結果を記憶する。暗号化データは、変更データストレージ512からデータ転送先524および第1XORエンジン514および第2排他的XORエンジン518へ届けられる。各XORエンジン514および518は計算を適切に完了するために、すでに計算済みのデータへのアクセスを必要とする場合がある。したがって第1XORエンジン514は、第2変更データストレージ516の中に結果データを記憶することができる。同様に、第2XORエンジン518は、第3変更データストレージ520の中に結果データを記憶することができる。XOR結果データは、第2変更データストレージ516および第3変更データストレージ520からデータ転送先524へ届けられる。第1変更データストレージ512からの暗号化データ、第2変更データストレージ516からの第1XORデータおよび第3変更データストレージ520からの第2XORデータは結合され(522)、データ転送先522へ届けられる。この結合プロセス522は、識別可能な方法でのデータストリーム内でのパケットの挿入として、またはデータ転送先524によって求められるその他のものとして、マルチプレクサを介して実行されてもよい。
【0020】
図5に示された実施形態500について、データの一定部分(例えば1kbのデータ)は、一度に1つのデータの一定部分ずつ各データソース502から取り出されてもよい。各データの一定部分は次いで暗号化エンジン510を通して送られ、暗号化された結果は指定されたデータ転送先524へ送られる。暗号化されたデータが暗号化されたデータのためのデータ転送先524へ暗号化エンジン510から送られると、XOR処理が実行される。一旦データの一定部分(例えば各データソース502から取り出された1kbのデータ等)が各データソース502から取り出され、暗号化されたデータが暗号化エンジン510のために指定されたデータ転送先524へ送られると、第1XORエンジン514からの結果は、第1XORエンジン514のために指定されたデータ転送先524へ送られる。第1XORエンジン514の結果が第1XORエンジン514のために指定されたデータ転送先524へ送られた後、第2XORエンジン518の結果は第2XORエンジン518のために指定されたデータ転送先524へ送られる。各データソース502からのデータの一定量を処理することは、最後の一定の(またはより少ない)量のデータが取り出されるまで繰り返される。
【0021】
図6は、データを暗号化し、データ上で排他的OR(XOR)を実行し、エンドツーエンド・データ保護(EEDP)検査および更新サイクルを有するDMAコントローラシステムの実施形態のブロック図600である。データソース602からのデータは、データが受け取られると、DMAコントローラのソースデータ・ストレージ604の中に記憶される。第1EEDPエンジン606、暗号化エンジン610、第1排他的OR(XOR)エンジン614および第2排他的OR(XOR)エンジン618、ならびに第2EEDPエンジン624は同時にオペレーションを実行する。第1EEDPエンジン606は、受け取られたデータの中に埋め込まれたDPIを検査して、DPIを確認し、発見された任意のエラー608をDMAコントローラに報告する検査EEDPエンジンである。第1EEDP検査エンジン606によって発見されたエラーは、DMAコントローラシステムによって記録されてもよい、および/または割り込み機能が可能であれば割り込みを生成してもよい。暗号化エンジン610はデータ転送先628へ送られるデータを暗号化し、局所変更データストレージ#1(612)の中に結果を記憶する。暗号化データは、第1変更データストレージ612からデータ転送先628、第2EEDP付加/更新エンジン624ならびに第1XORエンジン614および第2排他的XORエンジン618へ届けられる。各XORエンジン614および618は計算を適切に完了するために、すでに計算済みのデータへのアクセスを必要とする場合がある。したがって第1XORエンジン614は、第2変更データストレージ616の中に結果データを記憶することができる。同様に第2XORエンジン618は、第3変更データストレージ620の中に結果データを記憶することができる。XOR結果データは、第2変更データストレージ616および第3変更データストレージ620から、データ転送先618および第2EEDP付加/更新エンジン624へ届けられる。第1変更データストレージ612からの暗号化データ、第2変更データストレージ616からの第1XORデータおよび第3変更データストレージ620からの第2XORデータは結合され、第2EEDPエンジン624へ届けられる。この結合プロセス622は、識別可能な方法でのデータストリーム内でのパケットの挿入として、または第2EEDPエンジン624によって求められるその他のものとして、マルチプレクサを介して実行されてもよい。第2EEDPエンジン624は実際に、暗号化データストリームおよびXORデータストリームのための更新DPIを生成するためか、またはDPIを現在の転送データストリームに付加するために、2つのEEDP機能を結合する。第2EEDP付加/更新エンジン624からの更新DPIは、第1変更データストレージ612からの暗号化データストリーム、第2変更データストレージ616からの第1XORデータおよび第3変更データストレージ620からの第2XORデータと結合され、所望の転送先628へ送られる。この結合プロセス626は、識別可能な方法でのデータストリーム内でのパケットの挿入として、またはデータ転送先によって求められるその他のものとして、マルチプレクサを介して実行されてもよい。
【0022】
図6に示された実施形態のデータ変更エンジンのためのマルチソース移動の例示的オペレーションの中で、DMAエンジン/コントローラはソースからデータを取り出し、それを暗号化エンジン610を通して送る。同時に、同じデータはまた、DPIデータが適切であることを確認するために、第1EEDP検査エンジン606へ送られる。16バイトのデータストリームの各々が暗号化された後、この暗号化データはデータ転送先628へ送られることに加えて、3つの異なるデータ変更エンジン614、618、624へ同時に送られる。暗号化データは第1XORエンジン614、第2XORエンジン618および第2EEDP付加/更新エンジン624へ送られる。XORデータは、XOR結果が異なるソース602からのデータが取り出されるときに累積されることが可能なように、関連したメモリバッファ616および620の中に記憶される。第2EEDP付加/更新エンジン624は、データが第2EEDP付加/更新エンジン624へ送られるときに必要とされる新たなDPIを作り出す。ブロック境界に達すると(例えば16バイトの後等)、生成されたDPIは転送先628へ送られる。上述の処理は、すべての必要とされるソース602が取り出され、ともに暗号化され、XOR処理されるまで続く。したがって、5つの異なるデータ変更エンジンは、同時にDMAエンジン/コントローラ上でいっせいに動作する。様々な実施形態は、CDBによって定義されるブロックの大きさに従って、転送データストリームの中の境界にDPIを挿入してもよい。データストリームについてのデータバイト数が転送先628に送られるデータに達する場合、DPIが挿入される。複数のデータブロックは、DPIが単一のデータストリームのために何回も転送データストリームの中に挿入されるように、所与のCDBのために移動されてもよい。
【0023】
図6に示された構成600を実装する実施形態は、一度に1つのデータの一定部分ずつデータの一定部分(例えば1kbのデータ)を各データソース602から取り出してもよい。各データの一定部分は次いで暗号化エンジン610を通して送られ、暗号化された結果は第2EEDPエンジン624へ送られ、次いで暗号化データのために指定されたデータ転送先524へ送られる。暗号化されたデータが暗号化エンジン610から第2EEDPエンジン624、および暗号化エンジン610のために指定されたデータ指定先628へ送られると、XOR処理が実行される。一旦データの一定部分(例えば各データソース602から取り出された1kbのデータ等)が各データソース602から取り出され、暗号化されたデータが暗号化エンジン610のために指定されたデータ転送先628へ第2EEDPエンジン624を通して送られると、第1XORエンジン614からの結果は、第2EEDPエンジン624、および第1XORエンジン614のために指定されたデータ転送先628へ送られる。第1XORエンジン614の結果が第1XORエンジン614のために指定されたデータ転送先628へ送られた後、第2XORエンジン618の結果は第2EEDPエンジン624、および第2XORエンジン618のために指定されたデータ転送先628へ送られる。各データソース602からのデータの一定量を処理することは、最後の一定の(またはより少ない)量のデータが取り出されるまで繰り返される。局所変更データストレージ612、616、620のどれが第2EEDPエンジン624へのストリーミングデータのために選択されるかということは、現在指定された転送先628へ転送されているデータストリーム(暗号化エンジンの結果610、第1XORエンジンの結果614または第2XORエンジンの結果618)に合致する。
【0024】
図7は、データ上で排他的OR(XOR)を実行し、エンドツーエンド・データ保護(EEDP)検査および更新サイクルを有するDMAコントローラシステムの実施形態のブロック図700である。データソース702からのデータは、データが受け取られると、DMAコントローラのソースデータ・ストレージ704の中に記憶される。第1EEDPエンジン706、第1XORエンジン710および第2XORエンジン714、ならびに第2EEDPエンジン720は同時にオペレーションを実行する。第1EEDPエンジン706は、受領データの中に埋め込まれたDPIを検査して、DPIを確認し、発見された任意のエラー708をDMAコントローラに報告する検査EEDPエンジンである。第1EEDP検査エンジン706によって発見されたエラーは、DMAコントローラシステムによって記録されてもよい、および/または割り込み機能が可能であれば割り込みを生成してもよい。各XORエンジン710および714は計算を適切に完了するために、すでに計算済みのデータへのアクセスを必要とする場合がある。したがって第1XORエンジン710は、第1変更データストレージ712の中に結果データを記憶することができる。同様に、第2XORエンジン714は、第2変更データストレージ716の中に結果データを記憶することができる。XOR結果データは、第1変更データストレージ712および第2変更データストレージ716から、データ転送先724および第2EEDP付加/変更エンジン720へ届けられる。第1変更データストレージ712からの第1XORデータ、および第2変更データストレージ716からの第2XORデータは結合され、第2EEDPエンジン720へ届けられる。この結合プロセス718は、識別可能な方法でのデータストリーム内でのパケットの挿入として、または第2EEDPエンジン720によって求められるその他のものとして、マルチプレクサを介して実行されてもよい。第2EEDPエンジン720は実際に、XORデータストリームのための更新DPIを生成するためか、またはDPIを現在転送中のデータストリームに付加するために、2つのEEDP機能を結合する。第2EEDP付加/更新エンジン720からの更新DPIは、第1変更データストレージ712からの第1XORデータ、および第2変更データストレージ716からの第2XORデータと結合され(722)、次いで所望の転送先724へ送られる。この結合プロセス722は、識別可能な方法でのデータストリーム内でのパケットの挿入として、またはデータ転送先によって求められるその他のものとして、マルチプレクサを介して実行されてもよい。様々な実施形態は、CDBによって定義されるブロックの大きさに従って、転送データストリームの中のブロック境界にDPIを挿入してもよい。データストリームについてのデータバイト数が転送先724に送られるデータに達する場合、DPIが挿入される。複数のデータブロックは、DPIが単一のデータストリームのために何回も転送データストリームの中に挿入されるように、所与のCDBのために移動されてもよい。
【0025】
図7に示された実施形態700について、データの一定部分(例えば1kbのデータ)は、一度に1つのデータの一定部分ずつ各データソース702から取り出されてもよい。各データの一定部分は次いで、第1XORエンジン710および第2XORエンジン714に同時に送られる。データはデータソース702から取り出され、各XORエンジン710、714は現在取り出されたデータ、および各々XORエンジン710、714のための局所変更データストレージ712、716の中のデータを用いて排他的ORオペレーションを実行する。一旦データの一定部分(例えば各データソース702から取り出された1kbのデータ等)が各データソース702から取り出されると、第1XORエンジン710からの結果は、第2EEDPエンジン720、および第1XORエンジン710のために指定されたデータ転送先724へ送られる。第1XORエンジン710の結果が第1XORエンジン710のために指定されたデータ転送先724へ送られた後、第2XORエンジン714の結果は第2EEDPエンジン720、および第2XORエンジン714のために指定されたデータ転送先724へ送られる。各データソース702からのデータの一定量を処理することは、最後の一定の(またはより少ない)量のデータが取り出されるまで繰り返される。局所変更データストレージ712、716のどれが第2EEDPエンジン720へのストリーミングデータのために選択されるかということは、現在指定された転送先724へ転送されているデータストリーム(第1XORエンジンの結果710または第2XORエンジンの結果714)に合致する。
【0026】
図8は、DMAエンジン/コントローラ812を含むRAID(独立ディスク冗長アレイ)オンチップ(ROC)・システム802の実施形態のブロック図800である。図8のROC802実施形態は、DMAエンジン/コントローラ812を多機能チップ上へ包含することの例を示す。図8に示された例示的ROC802の実施形態の中で、ROC802はシリアルアタッチドSCSI(スモールコンピュータ・システム・インタフェース)(SAS)コア810、DMAエンジン/コントローラ812、メモリキューおよびメモリコントローラ813、クロック構成/リセットサブシステム(CCR)814、周辺機器コンポーネント相互接続(PCI)エキスプレス(PCE)・コア818、入力/出力(I/O)サブシステム820、プロセッサ局所バス(PLB)静的RAM(SRAM)822および周辺バスアクセス・モジュール(PBAM)824を含む複数のサブシステムから構成される。ROC802の様々なサブシステムは、プロセッサ局所バス(PLB)816を通して、および/または直接接続830〜836を介して互いに通信する。DMAエンジン/コントローラ812は、外部に接続されたダブルデータ・レート(DDR)RAMメモリ806に対する直接メモリアクセスチャネル808を制御するために、メモリキューおよびメモリコントローラ813との直接接続836を有する。メモリキューおよびメモリコントローラ813は、ROC802の単一の論理要素を形成するために、DMAエンジン/コントローラ812と結合されてもよいが、DMAエンジン/コントローラ812の位置を明確に示すために別々に示されている。SASコア810は、SASプロトコル通信804の伝送を可能にする通信経路を介して、SASデバイスへの外部通信およびSASデバイスからの外部通信を提供する。同様に、PCEコア818は、PCIエキスプレス・プロトコル通信826の伝送を可能にする通信経路を介して、PCIエキスプレス・デバイスへの外部通信およびPCIエキスプレス・デバイスからの外部通信を提供する。PBAMは、シリアルデータ(SD)828の伝送を可能にする通信経路を介して、シリアルデータ(SD)周辺機器への外部通信およびSD周辺機器からの外部通信を提供する。CCR814、I/Oプロセッサ・サブシステム820およびPLB SRAM822は、様々な外部通信サブシステム(810、812〜813、818および824)を相互接続するためのサポート機能を提供する。
【0027】
図8に示されたROC実施形態802の中で、DMAエンジン/コントローラ812は、メモリキューおよびメモリコントローラ813への直接接続836を通じた外部DDR RAMメモリ806へのアクセスを有する。さらに、DMAエンジン/コントローラ812は、PLB816を通じたROC802上の別のシステム(810、814、818、820、822、824)への接続を有する。DMAエンジン/コントローラ812は、PLB816を通じてROC実施形態802の残りのサブシステムへ接続されている。特に大きなデータの移動について通信速度を高めるために、ROC802実施形態のサブシステムの間のいくつかの通信接続(830〜836)が、PLB816接続に加えて組み込まれてもよい。例えば、図8に示された実施形態の中には、PCEコア818とSASコア810との間に直接通信接続830が存在する。図8に示された実施形態の中にはまた、メモリキューおよびメモリコントローラ813とSASコア810との間の直接通信接続834とともに、DMAエンジン/コントローラ812とPCEコア818との間に直接通信接続832が存在する。SASコア810、PCEコア818およびPBAM824を通じて、DMAエンジン/コントローラ812はSASデバイス804、PCIエキスプレス・デバイス826および連続的に接続された周辺デバイス828と通信してもよい。ROC802またはその他のDMA対応デバイス/システムの様々な実施形態は、システムデザイナーによって求められるように、より少ない、またはより多くの外部データ通信接続を組み込んでもよい。
【0028】
図9は、DMAコントローラの実施形態のためのCDB処理の実施形態のブロック図900である。CDBフェッチエンジン904は、CDB902をフェッチして、プリフェッチ局所RAM906の中にCDBを記憶してもよい。CDBフェッチエンジン906はCDB902の中に埋め込まれた命令を分析し、CDB902の中の符号化された命令を実施するために必要な行為を実行する。CDBプロセッサ908はまた、DMAコントローラの局所RAM912の中にどれだけの利用可能なスペースがあるのかを判定するために、メモリマネージャ910と対話する。CDBプロセッサ908はまた、データおよび変更データを記憶して、必要に応じてデータを転送し、所望の複数のデータ操作を実行するためにDMAコントローラの局所RAM912と対話してもよい。CDBプロセッサ908は、DMAコントローラ上で利用可能なデータ変更エンジン916〜932から適切なデータ変更エンジン914を選択してもよい。図9に示された実施形態について、利用可能なデータ変更エンジンはハッシュ/HMACエンジン916、フィルパターン・エンジン918、LFSRエンジン920、EEDP生成エンジン922、EEDP検査エンジン924、XORエンジン#1(926)、XORエンジン#2(928)、復号エンジン930、および暗号化エンジン932を含む。ハッシュ/HMACエンジン916は、ともに、または単独でハッシュ、HMAC、または様々な実施形態のためにハッシュ/HMACを組み合わせたエンジンであってよい。フィルパターン・エンジン918は、一定のデータパターンで変更ストレージを埋めるために使用されてよい。結果的に、フィルパターン・エンジン918は、書き込まれるパターンが一定のデータパターンであることから、データソースからデータを読み出すことを必要としない。LFSRエンジン920もまた、LFSRエンジン920のオペレーションを実行するために、データソースからデータを読み出すことを必要としない。同様に、一部のデータ操作エンジンは転送先へデータを書き込むことを必要としないが、例えばEEDP検査エンジン924等のように、ソースから受け取られたデータ上で検査だけを実行する。したがって特定のデータ操作エンジン(例えばフィルパターン・エンジン918および/またはLFSRエンジン920等)については、CDBに従ってデータソースから読み出すことは、データソースから任意の実際のデータを読み出すことを必要としない。同様に、特定のデータ操作エンジン(例えばEEDP検査エンジン924等)について、CDBに従ってデータ転送先にデータを書き込むことは、実際のデータがデータ転送先に書き込まれることを必要としなくてもよい。CDBプロセッサ908は、データをデータ転送先に書き込み、CDBのためにデータ操作エンジンのパフォーマンスを追跡することを処理する。一旦CDBプロセッサ908が所与のCDB902のためのすべてのデータ移動を完了すると、CDB完了エンジン934はCDB完了結果を完了キュー(936)に書き込む。完了キュー936は、DMAコントローラ/エンジンの外部にあるメモリの中に配置されてよい。第1CDBのためのデータ操作が完了間近であるか、または完了する場合、処理速度全体を高めるために、様々な実施形態はドレインFSM1012が第1CDBのためのデータ書き込みを処理することができるようにしてもよく、一方でフィルFSM1006は第2の(すなわち次の)CDBのためのデータ取り出しのプロセスを開始してもよい。
【0029】
図10は、CDBプロセッサ実施形態のためのCDB処理のための有限ステートマシン(FSM)・オペレーションのブロック図1000である。CDBフェッチエンジン有限ステートマシン(FSM)1002は、CDBの中に埋め込まれた命令を分析し、DMAコントローラによって受け取られた、CDBの中に埋め込まれた命令を実施するために必要な行為を実行するために、4つの有限ステートマシン(1006〜1012)と対話してもよい。フィルFSM1006は、CDBフェッチエンジンFSM1002から命令を受け取り、データソースからデータを取り出すための読み出しコマンド1004の作成および発行を制御する。変更FSM1008は、CDBの中に埋め込まれた命令に従って、DMAコントローラデータ変更エンジン1018を使用してデータ操作オペレーションのパフォーマンスを制御する。ドレインコマンド(CMD)FSM1010は、データ変更エンジン1018からのデータおよび/または変更データを所望のデータ転送先1016へ送るようにシステムに指示する書き込みコマンドを作成する。ドレインデータFSM1012は、データおよび/または変更データを所望のデータ転送先1016に書き込むために、ドレインコマンドFSM1010で作成された書き込みコマンドを実行する。一部の場合では、ドレインデータFSM1012は、例えばデータ操作の計算を実行するために、局所DMAコントローラRAMの中にデータをバッファリングすることを必要としないEEDP生成のためのものなど、データ変更エンジン1018を使用するデータ変更オペレーションの一部を実行してもよい。
【0030】
様々な実施形態は、コンピュータシステム、フィールド・プログラマブル・ゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、その他のプログラマブル論理回路またはその他の電子デバイス上で動作するアプリケーションを介して、本明細書で詳述されている制御および処理機能を提供してもよい。実施形態は、本発明に従って、コンピュータ(またはその他の電子デバイス)またはコンピュータシステムをプログラム/操作して1つのプロセスまたは複数のプロセスを実行するために使用されてもよい、記憶された命令を有するコンピュータ可読またはマシン可読媒体を含んでもよいコンピュータプログラム製品として提供されてもよい。このコンピュータ可読媒体は、限定されないがハードディスク・ドライブ、フロッピー(登録商標)ディスケット、光ディスク、コンパクトディスク読み出し専用メモリ(CD−ROM)、デジタル多用途ディスクROM(DVD−ROM)、ユニバーサル・シリアル・バス(USB)・メモリスティック、光磁気ディスク、ROM、ランダムアクセス・メモリ(RAM)、消去可能なプログラマブルROM(EPROM)、電気的に消去可能なプログラマブルROM(EEPROM)、光磁気カード、フラッシュメモリ、または電子的命令を記憶するために適したその他の種類の媒体/マシン可読媒体を含んでもよい。このコンピュータプログラム命令は、単一のコンピュータ/電子デバイス/電子回路上に存在し、そこで動作してもよく、またはコンピュータシステムを備えた複数のコンピュータ/デバイス/電子回路の間で分散されてもよい。さらに、実施形態はコンピュータプログラム製品としてダウンロードされてもよく、この場合プログラムは、通信リンク(例えば、有線/ケーブル接続および無線接続の両方を含めたモデムまたはネットワーク接続等)を介した搬送波またはその他の伝搬媒体の中で具体化されるデータ信号を経由して、遠隔のコンピュータから要求を出すコンピュータへ転送されてもよい。
【0031】
上の本発明の説明は、例示および説明を目的として示されてきた。網羅的であること、または本発明を開示されたものと寸分違わぬ形態に限定することは意図されておらず、上述の教示を考慮して、他の修正形態および変形形態が可能であってもよい。本実施形態は、本発明の原理およびその実際的な応用を最もよく説明し、それによって当業者が、考えられる特定の用途に適した様々な実施形態および様々な修正形態で本発明を最もよく利用することができるように選択され、説明されている。添付の特許請求項は、先行技術によって制限されるものを除いて、本発明のその他の代替実施形態を含むものと解釈されることが意図される。

【特許請求の範囲】
【請求項1】
DMAコントローラによって管理される直接メモリアクセス(DMA)・チャネルを介して転送されるデータ上で複数のデータ操作オペレーションを実行する方法であって、
各々が様々なデータ操作オペレーションのうちの少なくとも1つを実行する前記DMAコントローラ内で、複数のデータ操作エンジンを提供し、
少なくとも1つのデータソースからデータを読み出し、前記データ上で前記複数のデータ操作オペレーションを実行し、少なくとも1つの転送先に前記データを書き込む命令を含む制御データブロック(CDB)を、前記DMAコントローラによってフェッチし、
前記CDBの中の符号化された前記命令に従って、少なくとも1つのデータソースから前記データを前記DMAコントローラによって取り出し、
前記複数のデータ操作オペレーションのうちの少なくとも2つが同時に前記DMAコントローラによって実行されるように、前記CDBの中の符号化された前記命令に従って、各データ操作オペレーションのために、前記DMAコントローラに提供された前記複数のデータ操作エンジンのうちの1つを使用して、前記DMAコントローラによって受け取られた前記データ上で、前記複数のデータ操作オペレーションの各データ操作オペレーションを前記DMAコントローラ内で実行し、
前記CDBの中の符号化された命令に従って、少なくとも1つの転送先に前記複数のデータ操作オペレーションの結果を前記DMAコントローラによって送る、方法。
【請求項2】
前記少なくとも1つのデータソースから前記データを取り出すことは、
前記データを前記少なくとも1つのデータソースから読み取るために、前記CDBの中の符号化された前記命令に従って、前記DMAコントローラ内で読み出しコマンドを作成し、
前記読み出しコマンドを前記DMAコントローラから前記少なくとも1つのデータソースへ送り、
前記読み出しコマンドに従って、前記少なくとも1つのデータソースによって送られた前記少なくとも1つのデータソースからの前記データを前記DMAコントローラで受け取る、ことをさらに含む請求項1に記載の方法。
【請求項3】
前記複数のデータ操作オペレーションの前記結果を少なくとも1つの転送先へ送ることは、
前記複数のデータ操作オペレーションの前記結果を前記少なくとも1つの転送先へ書き込むために、前記CDBの中の符号化された前記命令に従って、前記DMAコントローラ内で書き込みコマンドを作成し、
前記書き込みコマンドに従って、前記複数のデータ操作オペレーションの前記結果を前記DMAコントローラによって前記少なくとも1つの転送先へ送る、ことをさらに含む請求項1に記載の方法。
【請求項4】
前記DMAコントローラによって取り出された前記データを、前記DMAコントローラ内に局所的に含まれた電子メモリの中に記憶する、ことをさらに含む請求項1に記載の方法。
【請求項5】
前記複数のデータ操作オペレーションの前記結果を、前記DMA内に局所的に含まれた電子メモリの中に記憶することをさらに含む請求項1に記載の方法。
【請求項6】
前記複数のもののうちの各データ操作エンジンは、ハッシュ、ハッシュメッセージ認証符号(HMAC)、ハッシュ/HMACの組み合わせ、フィルパターン、線形帰還シフトレジスタ(LFSR)、エンドツーエンド・データ保護(EEDP)検査、EEDP付加、EEDP更新、EEDP削除、排他的OR(XOR)、暗号化および復号を含むデータ操作オペレーションのグループのうちの少なくとも1つのデータ操作オペレーションを実行する、請求項1に記載の方法。
【請求項7】
各データ操作オペレーションのために、前記DMAに提供された前記複数のデータ操作エンジンのうちの1つを使用して、前記DMAによって受け取られた前記データ上で、前記複数のデータ操作オペレーションの各データ操作オペレーションを実行することは、前記複数のデータ操作エンジンのうちの第1データ操作エンジンが、前記複数のデータ操作オペレーションのうちの少なくとも1つのデータ操作オペレーションを実行するために、前記複数のデータ操作エンジンのうちの第2データ操作エンジンのために計算の基準として使用される第1データ結果を作成することをさらに含む請求項1に記載の方法。
【請求項8】
前記複数のデータ操作エンジンは、単一型のデータ操作オペレーションが前記DMAコントローラ上で同時に実行されることができるように、前記単一型のデータ操作オペレーションのうちの少なくとも2つから構成される、請求項1に記載の方法。
【請求項9】
前記複数のデータ操作オペレーションの前記結果を少なくとも1つの転送先に送ることは、前記DMAコントローラによって取り出された前記本来のデータを前記少なくとも1つのデータ転送先へさらに送る、請求項1に記載の方法。
【請求項10】
直接メモリアクセス(DMA)・コントローラによって管理される直接メモリアクセス(DMA)・チャネルを介して転送されるデータ上で複数のデータ操作オペレーションを実行するDMAコントローラであって、
少なくとも1つのデータソースから前記データを読み出し、前記データ上で前記複数のデータ操作オペレーションを実行し、少なくとも1つの転送先に前記データを書き込む命令を含む制御データブロック(CDB)をフェッチする制御データブロック(CDB)プロセッサ・サブシステムと、
前記CDBの中の符号化された命令に従って、少なくとも1つのデータソースから前記データを取り出すフィルサブシステムと、
前記複数のデータ操作オペレーションのうちの少なくとも2つが同時に前記DMAコントローラによって実行されるように、前記CDBの中の符号化された前記命令に従って、フィルサブシステムによって受け取られた前記データ上で、前記複数のデータ操作オペレーションの各データ操作オペレーションのために、各々が様々なデータ操作オペレーションのうちの少なくとも1つを実行する、前記DMAコントローラ内の複数のデータ操作エンジンと、
前記CDBの中の符号化された前記命令に従って、少なくとも1つの転送先に前記複数のデータ操作オペレーションの結果を送るドレイン・サブシステムとを含む、DMAコントローラ。
【請求項11】
前記フィルサブシステムは、前記少なくとも1つのデータソースから前記データを読み出すために、前記CDBの符号化された前記命令に従って読み出しコマンドを作成し、前記少なくとも1つのデータソースに前記読み出しコマンドを送り、そして、前記読み出しコマンドに従って、前記少なくとも1つのデータソースによって送られた前記少なくとも1つのデータソースからの前記データを受け取ることとによって、前記少なくとも1つのデータソースから前記データを取り出す、請求項10に記載のDMAコントローラ。
【請求項12】
前記ドレイン・サブシステムは、前記複数のデータ操作オペレーションの前記結果を前記少なくとも1つの転送先へ書き込むために前記CDBの中の符号化された前記命令に従って書き込みコマンドを作成し、前記書き込みコマンドに従って、前記少なくとも1つの転送先へ前記複数のデータ操作オペレーションの前記結果を送ることによって、前記複数のデータ操作オペレーションの前記結果を少なくとも1つの転送先へ送る、請求項10に記載のDMAコントローラ。
【請求項13】
前記フィルサブシステムによって取り出された前記データを記憶する、前記DMAコントローラ内に局所的に含まれた電子メモリであるソースデータ・ストレージをさらに含む、請求項10に記載のDMAコントローラ。
【請求項14】
前記複数のデータ操作オペレーションの前記結果を記憶する、前記DMA内に局所的に含まれた電子メモリである少なくとも1つの変更データストレージをさらに含む、請求項10に記載のDMAコントローラ。
【請求項15】
前記複数のもののうちの各データ操作エンジンは、ハッシュ、ハッシュメッセージ認証符号(HMAC)、ハッシュ/HMACの組み合わせ、フィルパターン、線形帰還シフトレジスタ(LFSR)、エンドツーエンド・データ保護(EEDP)検査、EEDP付加、EEDP更新、EEDP削除、排他的OR(XOR)、暗号化および復号を含むデータ操作オペレーションのグループのうちの少なくとも1つのデータ操作オペレーションを実行する、請求項10に記載のDMAコントローラ。
【請求項16】
前記複数のデータ操作エンジンのうちの第1データ操作エンジンは、前記複数のデータ操作オペレーションのうちの少なくとも1つのデータ操作オペレーションを実行するために、前記複数のデータ操作エンジンのうちの第2データ操作エンジンのために計算の基準として使用される第1データ結果を作成する、請求項10に記載のDMAコントローラ。
【請求項17】
前記複数のデータ操作エンジンは、単一型のデータ操作オペレーションが前記DMAコントローラ上で同時に実行されることができるように、前記単一型のデータ操作オペレーションのうちの少なくとも2つから構成される、請求項10に記載のDMAコントローラ。
【請求項18】
前記ドレイン・サブシステムは、前記DMAコントローラによって取り出された前記本来のデータを前記少なくとも1つのデータ転送先へさらに送る、請求項10に記載のDMAコントローラ。
【請求項19】
直接メモリアクセス(DMA)コントローラによって管理される直接メモリアクセス(DMA)チャネルを介して転送されるデータ上で複数のデータ操作オペレーションを実行するDMAコントローラであって、
DMAコントローラ内に複数のデータ操作エンジンを提供する手段を含み、前記複数のデータ操作エンジンの各々は様々なデータ操作オペレーションのうちの少なくとも1つを実行し、さらに、
少なくとも1つのデータソースから前記データを読み出し、前記データ上で前記複数のデータ操作オペレーションを実行し、少なくとも1つの転送先に前記データを書き込む命令を含む制御データブロック(CDB)を前記DMAコントローラによってフェッチする手段と、
前記CDBの中の符号化された前記命令に従って、少なくとも1つのデータソースから前記データを前記DMAコントローラによって取り出す手段と、
前記複数のデータ操作オペレーションのうちの少なくとも2つが同時に前記DMAコントローラによって同時に実行されるように、前記CDBの中の符号化された前記命令に従って、各データ操作オペレーションのために、前記DMAコントローラ上に提供された前記複数のデータ操作エンジンのうちの1つを使用して、DMAコントローラによって受け取られた前記データ上で前記複数のデータ操作オペレーションの各データ操作オペレーションを前記DMA内で実行する手段と、
前記CDBの中の符号化された前記命令に従って、少なくとも1つの転送先に前記複数のデータ操作オペレーションの結果を前記DMAコントローラによって送る手段とを含むDMAコントローラ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2011−187039(P2011−187039A)
【公開日】平成23年9月22日(2011.9.22)
【国際特許分類】
【出願番号】特願2010−132919(P2010−132919)
【出願日】平成22年6月10日(2010.6.10)
【出願人】(508243639)エルエスアイ コーポレーション (124)
【Fターム(参考)】