(57)【要約】  内容終了型ダイレクトメモリアクセス（ＣＴ−ＤＭＡ）回路は、自律的に、ソースから宛先に対して未知の長さのデータを転送し、データの内容に基づいて、その転送を終了する。フィルタ判定基準は、データ転送に先立ってＣＴ−ＤＭＡに供給される。フィルタ判定基準は、パターンデータを含んでおり、それは転送データと比較され、前記比較結果の解釈のための終了規則を伝える。フィルタ判定基準が満たされるまで、データは宛先に書き込まれる。代表的なフィルタ判定基準は、１単位以上の転送データがパターンデータと一致すること、１単位以上の転送データがパターンデータと一致しないこと、あるいは、１単位以上の転送データがパターンデータと所定回数一致すること、を含むことができる。
2010517182.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのデータ転送インタフェースと、
フィルタ判定基準を記憶するように働くメモリと、
転送データを１つ以上のフィルタ判定基準と比較するように働く比較器と、
前記比較器の出力に応じてＤＭＡ転送を終了するように働くコントローラ、
を含む、内容終了型ダイレクトメモリアクセス（ＣＴ−ＤＭＡ）回路。
【請求項２】
前記データ転送インタフェースは、システム・バス・インタフェースを含む、請求項１のＣＴ−ＤＭＡ回路。
【請求項３】
前記データ転送インタフェースは、別の回路に対して専用のデータインタフェースを含む、請求項１のＣＴ−ＤＭＡ回路。
【請求項４】
前記メモリは、１つ以上のレジスタを含む、請求項１のＣＴ−ＤＭＡ回路。
【請求項５】
前記レジスタは、プロセッサにより実行されるコプロセサ・レジスタ・アクセス命令を介してアクセスされる、請求項４のＣＴ−ＤＭＡ回路。
【請求項６】
前記レジスタは、メモリマッピングされている、請求項４のＣＴ−ＤＭＡ回路。
【請求項７】
メモリは、ハードワイヤードのデータパターンを含む、請求項１のＣＴ−ＤＭＡ回路。
【請求項８】
前記フィルタ判定基準は、１単位以上のパターンデータを含む、そして、前記比較器は１単位以上の転送データを前記パターンデータと比較するように働く、請求項１のＣＴ−ＤＭＡ回路。
【請求項９】
前記比較器は、１単位の転送データを２単位以上のパターンデータと比較するように働く、請求項８のＣＴ−ＤＭＡ回路。
【請求項１０】
前記コントローラは、１単位以上の転送データが前記パターンデータと一致するとき、ＤＭＡ転送を終了するように働く、請求項８のＣＴ−ＤＭＡ回路。
【請求項１１】
前記コントローラは、１単位以上の転送データが前記パターンデータと一致しないとき、ＤＭＡ転送を終了するように働く、請求項８のＣＴ−ＤＭＡ回路。
【請求項１２】
前記コントローラは、１単位以上の転送データが前記パターンデータと所定回数一致するとき、ＤＭＡ転送を終了するように働く、請求項８のＣＴ−ＤＭＡ回路。
【請求項１３】
前記コントローラは、割り込みを要求することによりＤＭＡ転送を終了するように働く、請求項１のＣＴ−ＤＭＡ回路。
【請求項１４】
前記コントローラは、所定の位置に所定の値を書くことによりＤＭＡ転送を終了するように働く、請求項１のＣＴ−ＤＭＡ回路。
【請求項１５】
前記コントローラは、さらに、前記比較器の出力に応じて別のＤＭＡ転送を始めるように働く、請求項１のＣＴ−ＤＭＡ回路。
【請求項１６】
前記比較器の出力に応じて別のＤＭＡ転送を始めることは、前記比較器の出力に応じて決定されたメモリ位置からＤＭＡ制御パラメーターを読むことを含む、請求項１５のＣＴ−ＤＭＡ回路。
【請求項１７】
ソースから連続的に転送データを読むことと、
転送データを所定パターンデータと比較することと、
前記比較に応じていつ転送を終了するか決めることと、
前記転送を終了するまで、連続的に、宛先に転送データを書くこと、
そこにおいて、これらの方法ステップは、プロセッサのなかで自律的に行なわれる、
を含む、ソースから宛先へ未知の量のデータを転送する方法。
【請求項１８】
前記比較に応じていつ転送を終了するかを決めることは、１単位以上の転送データが前記パターンデータと一致するとき、転送を終了することを決めることを含む、請求項１７の方法。
【請求項１９】
前記比較に応じていつ転送を終了するか決めることは、１単位以上の転送データが前記パターンデータと一致しないとき、転送を終了することを決めることを含む、請求項１７の方法。
【請求項２０】
前記比較に応じていつ転送を終了するか決めることは、１単位以上の転送データが前記パターンデータと所定の回数一致するとき、転送を終了することを決めることを含む、請求項１７の方法。
【請求項２１】
さらに受信フィルタ判定基準を含む、請求項１７の方法。
【請求項２２】
前記フィルタ判定基準は前記パターンデータを含む、請求項２１の方法。
【請求項２３】
前記フィルタ判定基準は、さらに、転送データとパターンデータの比較を結合するための規則を含む、請求項２２の方法。
【請求項２４】
データを供給するように働くデータソースと、
データを受信するように働くデータ宛先と、
ソースから宛先へデータ転送を行なうように働き、そして、さらに転送データの１つ以上の値に応じてデータ転送を終了するように働く、内容終了型ダイレクトメモリアクセス（ＣＴ−ＤＭＡ）回路と、
前記ＣＴ−ＤＭＡ回路を初期化するように働くプロセッサ、
を含む計算機システム。
【請求項２５】
前記プロセッサは、前記ＣＴ−ＤＭＡ回路の１つ以上のメモリロケーションにフィルタ判定基準を書くことにより前記ＣＴ−ＤＭＡ回路を初期化する、請求項２４のシステム。
【請求項２６】
前記ＣＴ−ＤＭＡ回路は、転送データをフィルタ判定基準と比較し、そして前記比較に応じてデータ転送を終了する、請求項２４のシステム。
【請求項２７】
前記プロセッサは、メモリにフィルタ判定基準を書き込み、そして前記メモリへのポインタを前記ＣＴ−ＤＭＡに供給することにより、ＣＴ−ＤＭＡ回路を初期化する、請求項２４のシステム。
【発明の詳細な説明】
【背景】
【０００１】
本発明は、一般に計算機システムにおけるダイレクトメモリアクセス（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ：ＤＭＡ）回路に関し、特に、転送されているデータの値に応答してデータ転送を終了するＤＭＡに関する。
【０００２】
現代の計算機システム（携帯用電子機器におけるそれらを含む）は、写真、グラフィックイメージ、ビデオ、オーディオなどを表現するデジタルデータのような重い量のデータを処理する。このデータは、入力／出力（Ｉ／Ｏ）の周辺機器からメモリの中へ、メモリからグラフィック・フレームバッファの中へ、メモリのあるエリアから別のエリアへ、のごとく（一般にデータソースからデータ送付先に対して）計算機システム内で転送されなければならない。プロセッサに負担をかけずに、システム内のデータ転送を遂行する既知の技法は、ＤＭＡコントローラとして知られているダイレクトメモリアクセス（ＤＭＡ）回路を含むことである。
【０００３】
プロセッサは、ＤＭＡコントローラにおける制御レジスタに情報を書き込むことにより、あるいは、メモリの制御ブロックに書き込み、そして、ＤＭＡコントローラレジスタの内にそれらのポインタを置くことなどにより、ソースおよび宛先の情報（そのどちらかはメモリアドレスあるいは周辺のポートを含むことができる）、および転送カウントでＤＭＡコントローラを初期化する。プロセッサからＧＯの指示またはコマンドを受信すると、ＤＭＡコントローラは、自律的にソースからデータを読み、宛先にそれを書き込み、データ単位の指定数が転送されるまでそのプロセスを繰り返す。最先端のＤＭＡコントローラは、複数のチャンネルを含んでいて、異なるワードサイズを持つユニット間でデータを転送するためにオペレーションを分散／集約するような、多くのローレベルデータの転送タスクを処理することができる。さらに、ＤＭＡ転送をチェーン（ｃｈａｉｎ）することも知られている。チェーン動作において、ＤＭＡコントローラは、進行中のＤＭＡ転送の終了で始まる後続のＤＭＡ転送のための情報（例えば新しいソース、宛先、カウントなど）を供給されるか指図される。
【０００４】
プロセッサは、必ずしも計算機システム内の転送を必要とするデータの集合の長さを演繹的（ａ  ｐｒｉｏｒｉ）に知ることができるとは限らない。例えば、文字ストリング（ｃｈａｒａｃｔｅｒ  ｓｔｒｉｎｇ）（「Ｈｅｌｌｏ  ｗｏｒｌｄ」のような）をコピーするために、文字はそれぞれソース位置から検索され、レジスタに置かれ、ゼロ（Ｃ言語のストリング終了文字）と比較される。その比較が失敗する場合、文字は宛先ロケーションに書かれる。そして、次の文字は読まれ、比較される。プロセッサが文字ストリングにおけるゼロに遭遇する時、データ転送は完了する。これは、プロセッサ集約的なタスクであり、さらに、極めて大きい数のメモリーアクセスを含んでいるものである。ソースおよび／または宛先アドレスが、キャッシュされない場合、ＣＰＵは、特にメモリーアクセスがプロセッサ実行よりはるかに遅いシステムにおいて、メモリ操作が完了するのを待って相当な時間を費やすかもしれない。これはプロセッサの性能を著しく低下させる。
【０００５】
文字ストリングの長さが未知であるので、データ転送タスクは、一般に、従来のＤＭＡコントローラに対する負荷軽減にならない。従来のＤＭＡコントローラは、それらが転送するデータを検査する能力を持っていない、そして「盲目的に」ソースから宛先へデータの所定量を転送する。文字ストリングの長さは、各文字を既知のデータパターンと比較することにより決められる。この比較は、プロセッサにより従来どおりに行なわれる。プロセッサが、従来のＤＭＡコントローラに対してデータ転送タスクの負荷を軽くするためには、それは、文字ストリング長を決めて、次に、ＤＭＡ動作を公式化するように、連続的に文字を読み、転送カウントと比較しなければならないだろう。しかしながら、そうすることがデータ転送タスクの半分（読み取り）を行なうので、従来のＤＭＡコントローラを備えたシステムにおけるプロセッサは、単に宛先に直接各文字を書き、ストリングの端を画定する既知のデータパターンが検出されるとき、そのプロセスを停止させる。
【０００６】
他のプロトコルは、複数の文字を持ったデータストリングで終了する。例えば、ハイパーテキスト・マークアップ言語（Ｈｙｐｅｒ−Ｔｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ：ＨＴＭＬ）において、確実なフォーマットあるいは処理を受信するためのストリングは、シーケンス＜／ｋｅｙｗｏｒｄ＞により終了する。それは、検出するべき複数個の逐次的な文字比較を必要とする。
【概要】
【０００７】
ここに開示され請求された１つ以上の実施形態において、内容終了型ダイレクトメモリアクセス（Ｃｏｎｔｅｎｔ−Ｔｅｒｍｉｎａｔｅｄ  Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ：ＣＴ−ＤＭＡ）回路は、未知の長さのデータのＤＭＡ転送を行ない、データの内容に基づいて転送を終了する。フィルタ判定基準（ｆｉｌｔｅｒ  ｃｒｉｔｅｒｉａ）は、データ転送に先立ってＣＴ−ＤＭＡに対して提供される。フィルタ判定基準は、転送データと比較されるパターンデータ、および、比較結果の解釈のための転送終了規則を含んでいる。ＣＴ−ＤＭＡは、フィルタ判定基準が満たされるまで、ソースからデータを読み、それを宛先に書く。
【０００８】
１つの実施形態は、ＣＴ−ＤＭＡ回路に関する。その回路は、ソースからデータを読み、および／または宛先へデータ書込むように働くデータ転送インタフェースと、フィルタ判定基準を記憶するように働くメモリを含んでいる。ＣＴ−ＤＭＡ回路は、さらに、転送データを１つ以上のフィルタ判定基準と比較するように働く比較器、および比較器の出力に応じてＤＭＡ転送を終了するように働くコントローラを含んでいる。
【０００９】
別の実施形態は、ソースから宛先へ未知の量のデータを転送する方法に関する。データは、ソースから連続的に読まれ、所定パターンデータと比較される。判定は、その比較に応じて転送を終了するべき時についてなされる。転送が終了するまで、データは宛先に連続的に書かれる。これらの方法ステップは、プロセッサの中で自律的に実行される。
【００１０】
さらに別の実施形態は、計算機システムに関する。そのシステムは、データを供給するように働くデータソース、およびデータ受信するように働くデータ宛先を含んでいる。システムは、またソースから宛先へＤＭＡデータ転送を行なうように働き、さらに、転送データの１つ以上の値に応じてＤＭＡ転送を終了するように働く、ＣＴ−ＤＭＡ回路を含んでいる。システムは、さらにＣＴ−ＤＭＡ回路を初期化するように働くプロセッサを含んでいる。
【図面の簡単な説明】
【００１１】
【図１】図１は、ＣＴ−ＤＭＡ回路を含む計算機システムの機能ブロック図である。
【図２】図２は、ＣＴ−ＤＭＡ回路におけるデータ比較回路の機能ブロック図である。
【図３】図３は、ソースから宛先へ未知のデータ量を転送する方法のフローダイアグラムである。
【詳細な説明】
【００１２】
１つ以上の実施形態に従って、内容終了型ダイレクトメモリアクセス（ＣＴ−ＤＭＡ）回路は、ソースから宛先に対して未知の長さのデータを転送する、そして「フライトにおいて（ｉｎ  ｆｌｉｇｈｔ）」データにフィルタ判定基準を適用することにより、その転送を終了する。フィルタ判定基準は、転送されているデータと比較するべきパターンデータおよびその比較に応じて転送を終了するための規則を含んでいる。
【００１３】
図１は、数字１０により一般的に示される、代表的な計算機システムを表す。計算機システム１０は、プロセッサ１２を含んでいる。それはレベル１（Ｌ１）キャッシュ１４を含むことができる。技術において知られているように、プロセッサ１２は、ストアードプログラム・マイクロプロセッサ、デジタル・シグナルプロセッサ（ＤＳＰ）などを含み得る。Ｌ１キャッシュ１４は、Ｌ２キャッシュ１６により記憶階層において支援され得る。１つの実施形態において、Ｌ２キャッシュ１６を含むメモリの一部は、密結合のメモリ（Ｔｉｇｈｔｌｙ  Ｃｏｕｐｌｅｄ  Ｍｅｍｏｒｙ：ＴＣＭ）１８としてプロセッサ１２により利用される。ＴＣＭ１８は、記憶階層におけるメインメモリアドレス空間の一部であるが、プロセッサ１２に対して物理的かつ論理的により密結合である。例えば、プロセッサはＴＣＭ１８にアクセスするためにシステム・バス２０に対して仲裁する必要はない。Ｌ２キャッシュ１６およびＣＴ−ＤＭＡ２６は、システム・バス２０を介してメインメモリ２２を読み書きする。ＴＣＭ１８および、例えば、ＮＩＣカード、無線通信トランシーバー、ブルートゥース・インタフェースなどのような入力／出力（Ｉ／Ｏ）周辺機器２４は、システム・バス２０上のスレーブ・デバイスである。Ｉ／Ｏ周辺機器２４は、計算機システム１０の外から、および／または、その中へデータを転送することができる。
【００１４】
ＣＴ−ＤＭＡ回路２６は、システム・バス２０上のマスタ・デバイスであり、それにより、それはメインメモリ２２、ＴＣＭ１８およびＩ／Ｏ周辺機器２４を読み書きすることができる。ＣＴ−ＤＭＡ回路２６は、Ｉ／Ｏ周辺機器２４のデータポートに付加的にあるいは代わりに直接接続されてもよい。さらに、図１に示された実施形態において、ＣＴ−ＤＭＡ回路２６は、プロセッサ１２にきっちりと統合され、（プロセッサ１２とＣＴ−ＤＭＡ２６の間のＴＣＭ１８に対してアドレス・ビットを多重化するなどにより）ＴＣＭ１８に直接アクセスすることができる。
【００１５】
プロセッサ１２による初期化に続いて、ＣＴ−ＤＭＡ回路２６は、計算機システム１０内のソースから宛先に対しデータを転送し、データの１つ以上の値に応じて転送を終了する。１つの例示となる実施例として、プロセッサ１２は、ＣＴ−ＤＭＡ回路２６に、メインメモリ２２からＴＣＭ１８の中へ未知の長さの文字ストリングを転送することを指示することができる。そこでプロセッサ１２は文字ストリングに対してより効率的に動作することができる。
【００１６】
１つ以上の実施形態において、ＣＴ−ＤＭＡ回路２６は、転送されているデータに応じて、転送は完了していることを判定するとき、転送を終了し、直接あるいは割込みコントローラ２８を介してプロセッサ１２に割り込むことができる。他の実施形態において、ＣＴ−ＤＭＡ回路２６は、制御レジスタにおいてフラグをセットし、データ転送が完了していることを判定するためにフラグのステータスをポーリングすることをプロセッサ１２に頼ることができる。他の実施形態において、ＣＴ−ＤＭＡ回路２６は、完了したデータ転送動作を、任意の特定のインプリメンテーションの要求または選択を満たすように当業者より容易に工夫することができるような様々な方法で、プロセッサ１２に対して伝えることができる。
【００１７】
ここに使用されるように、データソースは、任意のメモリロケーション２２、１８、周辺機器２４のデータポート、あるいは、ＣＴ−ＤＭＡ回路２６によりシステム・バス２０を介して、または直接接続によりアクセス可能な他のデータソース、を表す。ここに使用されるように、データ宛先は、同様に任意のメモリ２２、１８あるいは周辺機器２４を表す。さらに、データ宛先は、ヌル宛先（ＮＵＬＬ  ｄｅｓｔｉｎａｔｉｏｎ）かもしれない。その場合には転送データは廃棄される。データは、文字ストリングの長さを決める（例えばＣ言語操作のｓｔｒｌｅｎ）ような、様々な理由でヌル宛先に都合よく「転送」されてもよい。
【００１８】
図２は、代表的なＣＴ−ＤＭＡ回路２６の１つの実施形態のデータ比較機能の態様を詳しく説明するために示された機能ブロック図である。図２は、任意の所定のＣＴ−ＤＭＡ回路２６の実ハードウェアを表すようには意図されないことが注意される。さらに、図２は、ＣＴ−ＤＭＡ回路２６機能のサブセットを表しており、議論に対して密接な関係がない機能および多数のＤＭＡ回路は明瞭さのために図２から省略されている。
【００１９】
１つの実施形態において、ＣＴ−ＤＭＡ回路２６は、例として描かれた、８つの記憶位置（ｓｔｏｒａｇｅ  ｌｏｃａｔｉｏｎ）を含むファーストイン、ファーストアウト（ＦＩＦＯ）データ・バッファ３０を含んでいる。技術において知られているように、記憶位置は、レジスタまたはメモリを含み、様々な使用可能なバッファ３０のうちのいずれかとして構成されてもよい。記憶位置は、希望のまたは所要の任意の幅（例えばバイト、ハーフワード、ワード、など）であってもよい。そして、各々に記憶されたデータは、ここではデータの「単位（ｕｎｉｔ）」と呼ばれる。もちろん、バッファ３０は、希望または要求に従い、８つより多くの、あるいはより少ない記憶位置を含んでもよい。ＣＴ−ＤＭＡデータ転送の間、ソースから読み込んだデータは、ＦＩＦＯ３０へ入力され、比較操作の結果に依存して、宛先に書かれ得る。これらのデータは、ここでは転送データと呼ばれる。
【００２０】
ＣＴ−ＤＭＡ回路２６は、パターンデータストレージ３２を含んでいる。プロセッサ１２は、ＣＴ−ＤＭＡデータ転送を開始する前にパターンデータストレージロケーション３２に前もって定義したデータパターンを書いておくことができる。図２に描かれた実施形態において、パターンデータストレージ３２は、記憶位置（ｓｔｏｒａｇｅ  ｌｏｃａｔｉｏｎ）の数およびそれらのデータ幅の点からＦＩＦＯ３０を反映する。他の実施形態において、記憶位置の数は一致しなくてもよい。１つの実施形態において、ＦＩＦＯ３０は、特に１つ以上の記憶位置を含むことができる。そして、パターンデータストレージ３２は、ＦＩＦＯ３０における数より大きな複数個の記憶位置を含むことができる。この場合、状態機械のようなコントロール回路は、ＦＩＦＯ３０における転送データの各単位を、１より多くのデータパターン単位と連続的に比較することができる。１つの実施形態において、データ記憶位置の数がマッチしているか否かで、ＦＩＦＯ３０とパターンデータストレージ３２の間のデータ単位幅は異なることがあるかもしれない。例えば、パターンデータの１バイトは、例えばすべての転送データワードの同じバイト、あるいはすべてのデータ転送ワードの各バイト、などと比較され得る。これらのデータ比較手順は、プログラム可能であってよいし、フィルタ判定基準に含まれていてもよい。１つの実施形態において、アプリケーションのための特定パターンデータが知られている場合のように、パターンデータストレージ３２は、１つ以上のハードワイヤードビットパターンを含むことができる。
【００２１】
転送データがＦＩＦＯ３０を通って流れると、それらは、ｎ−ビット・比較器３４（ただし、ｎはデータ単位幅（つまりＦＩＦＯ３０およびパターンデータ３２エントリの幅）と一致する）において対応するパターンデータと比較される。比較器３４の出力は、１つ以上の転送単位データとパターンデータの間の一致するものを検出するために相互に論理的ＡＮＤをとられる。１つの実施形態において、ＡＮＤ機能３６は、図２に描かれるように、転送終了決定ロジック３８に対して供給される個々の中間の出力と共に、順送りに伝えられる。転送終了決定ロジック３８は、示された実施形態において、１から８までのデータ単位を含む、転送を終了する比較を検出することができる。例えば、転送終了規則は、転送を終了するために、特定の順番で、前もって定義した文字と一致させるために、文字ストリングにおいて８文字以内を必要とするかもしれない。
【００２２】
転送終了決定ロジック３８が従う規則は、ＣＴ−ＤＭＡ制御ロジック４０に対してプロセッサ１２により提供される。それは順に転送終了決定ロジック３８を構成する。これらの転送終了規則は、パターンデータと共にここではフィルタ判定基準と呼ばれる。一般に、この独創的なＣＴ−ＤＭＡ回路２６は、フィルタ判定基準の豊富なセットをサポートすることができ、広範囲の転送を終結する機能を提供する。下記のリストは、フィルタ判定基準およびデータ宛先の修正によってＣＴ−ＤＭＡ回路２６の実施形態により提供される機能の少数の代表的な限定ではない例を提供する。いくつかの機能は、関連する機能により直接実装することができるＣ言語コマンドを含んでいる。
【００２３】
・前もって定義したキーにより終了されたデータ転送（ｓｔｒｃｐｙ）；
・ヌル宛先：コピーは行なわれないか、あるいは廃棄される（ｓｔｒｃｍｐ）；
・１つの転送の長さを決める（ｓｔｒｌｅｎ）  −  転送に対する出来事あるいはヌル宛先への転送によるカウントだけを行なうことのいずれか；
・最大長は転送に関係し得る（ｓｔｒｎｌｅｎ、ｓｔｒｎｃｐｙ、ｓｔｒｎｃｍｐ）；
・複合単位キーにより終了されるデータ転送（ＨＴＭＬタグ）；
・異なるキー上の比較結果の論理的な結合（ＡＮＤ，ＯＲ）；
・転送データとパターンデータは、所定の回数一致する；
・逆一致のケース（つまり、転送データがパターンデータと一致しないとき、転送を終了する）。
【００２４】
制御ロジック４０は、さらに、内容終了型ＤＭＡの豊富なセットに加えて、従来のＤＭＡ転送機能も実装するために、様々なステータスレジスタ、カウンタおよびロジック（示されない）を含んでいる。例えば、アドレス発生回路４２の制御により、制御ロジック４０は、次のような、広範囲のＣＴ−ＤＭＡ転送機能をサポートすることができる：
・ソースおよび／または宛先アドレスのインクリメントまたは非インクリメント（例えば、ストリーミングデータ）；
・異なるワード幅を持っているソースと宛先の間のデータを転送する操作の分散／集約を行う；
・転送を上昇させるか下降させること（つまり、連続するアドレスのインクリメントかディクリメント）；
・ストライド設定（行／列の変換）、パターンを選択的に転送する、またはしないために、ヌル宛先を使用することを含んでいること
・内容に制御されるチェーンＤＭＡ転送。
【００２５】
チェーンＤＭＡ転送は、様々な方法で転送データの内容により制御され得る。例えば、現在のＤＭＡ動作において転送データの１つ以上の値が、後続のＤＭＡ動作のためにどのＤＭＡチャネルを利用するか決めることができる。別の実施例として、ソースおよび／または宛先、ストライド、および／または後続のＤＭＡ動作に対するカウントが、転送データの値により決められ得る。１つの実施形態において、パターンデータに対する転送データの一致は、ＤＭＡ制御パラメータ（ソース、宛先、など）を含んでいる異なるメモリロケーションにＣＴ−ＤＭＡを向けることにより、後続のＤＭＡ動作を制御することができる。
【００２６】
図３は、プロセッサ１２（左）およびＣＴ−ＤＭＡ回路２６（右）の両方の観点から、ソースから宛先へ未知の量のデータを転送する方法のフローダイアグラムを描く。プロセッサ１２が、ソースと宛先のアドレスまたは識別子、およびフィルタ判定基準（パターンデータおよび転送終了規則の両方を含む）、のような初期化情報をＣＴ−ＤＭＡ回路２６に提供することにより転送を設定する時、その方法は始まる（ブロック１００）。
【００２７】
これは、その情報をＣＴ−ＤＭＡ回路２６上のレジスタおよび／またはパターンデータ記憶装置３２に書くこと、または、代わりに、情報をメモリに書き、そしてＣＴ−ＤＭＡ回路２６のレジスタにメモリロケーションへのポインタを書くことを含むことができる。
【００２８】
ＣＴ−ＤＭＡ回路２６は、対応して、直接あるいはメモリから読むことにより初期化情報を受け取る（ブロック１０２）。次に、プロセッサ１２は、転送を始めるためにＣＴ−ＤＭＡ回路２６にＧＯ指示を送信する（ブロック１０３）。ＧＯ指示は、プロセッサ１２とＣＴ−ＤＭＡ回路２６間に信号を要求して、あるいは技術において既知の他の手段により、ＣＴ−ＤＭＡ制御ロジック４０の制御レジスタにフラグを書き込むことを含むことができる。
【００２９】
ＣＴ−ＤＭＡ回路２６は、ソース（メモリロケーションあるいは周辺のポートを含むことができる）からＦＩＦＯ３０のようなバッファに、データ単位を読み込むことにより、転送を始める（ブロック１０４）。読まれたデータ単位は、ソースデータ・インタフェースの幅に依存して、ソースに向けられた１つ以上のリード動作を必要とするかもしれない。ＣＴ−ＤＭＡ回路２６は、ＦＩＦＯ３０における転送データを、プロセッサ１２により供給されるパターンデータ３２と比較する（ブロック１０６）。ＣＴ−ＤＭＡ回路２６における転送終了決定ロジック３８は、比較の結果に対してプロセッサ１２により供給される転送終了規則を適用する（ブロック１０８）。転送終了決定ロジック３８が、転送をまだ終了するべきでないことを示す場合（ブロック１１０）、ＣＴ−ＤＭＡ回路２６は、宛先メモリアドレスまたは周辺のポートに１単位のデータを書く（ブロック１１２）。それは、宛先に向けられた１つ以上の書込み操作を必要とするかもしれない。次に、ＣＴ−ＤＭＡ回路２６は、転送カウントを（カウンタをインクリメントかディクリメントするなどにより）更新し（ブロック１１４）、ソースから別の転送単位データを読む（ブロック１０４）。
【００３０】
ＣＴ−ＤＭＡ回路２６は、（転送データとパターンデータ比較結果に転送終了規則を適用することに基づいて）転送が終了するべきことを判定したとき、それはプロセッサ１２に通知する。上に説明されたように、この通知は、割り込みを要求すること、フラグあるいは他の前もって定義したデータを（制御ロジック４０におけるステータスレジスタあるいはメモリ２２における前もって定義した位置のような）前もって定義した位置に対して書くこと、あるいは他の告知手段を含むことができる。
【００３１】
１つ以上の実施形態において、プロセッサ１２が、データ転送の一部としての終了キーを保守することを望むとき、転送終了決定（ブロック１１０）は、ＣＴ−ＤＭＡ回路２６にソースからデータを読むこと（ブロック１０４）を止めさせることができるが、終了キーが転送されるまで、宛先に転送データを書くこと（ブロック１１２）、および、転送カウントを更新する（ブロック１１４）ことを続けてもよい。いくつかの実施形態において、終了の挙動はプログラム可能である。すなわち、転送の一部として終了キーを書くべきであるかという決定は、初期化情報の一部としてプロセッサ１２により指定される。
【００３２】
図３における破線は、プロセッサ１２とＣＴ−ＤＭＡ回路２６の間の同期を描く。プロセッサ１２は、ＧＯ指示を発行する（ブロック１０３）時からＣＴ−ＤＭＡ回路２６が、転送が完了していることをプロセッサ１２に通知する（ブロック１１６）まで、プロセッサ１２は、自由に他のタスク（ブロック１１８）を実行するか、あるいは他のタスクがペンディングでない場合、休眠モードに入る。転送は完了しているというＣＴ−ＤＭＡ回路２６からの通知を受け取る（ブロック１１６）と、プロセッサは、宛先で転送データを処理する（ブロック１２０）か、あるいは他の場合には、データ転送後の動作を始めることができる。
【００３３】
ＣＴ−ＤＭＡ回路２６の実施形態は、未知の長さのデータ転送ルーチン（および文字ストリング長を決めるような関連操作）を実行し、他のタスクを行なうためにプロセッサ１２を解放することにより、プロセッサの性能を著しく改善することができる。さらに、ＣＴ−ＤＭＡ回路２６は、ソースから読まれる各データ単位および宛先へ書く各データ単位に関連する、Ｌ１キャッシュ１４およびＬ２キャッシュ１６における繰り返されるルックアップの回避などにより、パワーを節約することができる。
【００３４】
本発明は、当然、その発明の本質的特質から外れずに、ここで特に明らかにされたもの以外の方法で実行することができる。この実施形態は、すべての態様において、例示であり、そして限定しないものとして、考慮されるべきものである。そして、添付された請求項の意味および等価な範囲内に生じるすべて変更は、そこに包含されるように意図される。
【図１】
2010517182.tif 000003
【図２】
2010517182.tif 000004
【図３】
2010517182.tif 000005
【国際調査報告】
2010517182.tif 000006
2010517182.tif 000007
2010517182.tif 000008
2010517182.tif 000009
2010517182.tif 000010