(57)【特許請求の範囲】
【請求項１】
データ処理システムにおいて、ソース装置から目標装置へデータを転送するデータ転送方法であって、
（Ａ）パラメータ及び１以上の命令をプロセッサからデータ移動エンジンへ送出するステップであって、
（ａ）前記データ移動エンジンは、前記ソース装置から前記目標装置へ前記データの転送を実行するためのメモリ・コントローラ内に設けられ、
（ｂ）前記パラメータには前記目標装置のアドレス、転送する前記データの量の指定、及び前記データの転送のステータスを指定するステータス・データを記憶するシステム・メモリ内のアドレスが含まれ、
（ｃ）前記１以上の命令には転送する前記データのアドレスが含まれている、
前記送出するステップと、
（Ｂ）前記メモリ・コントローラ内において、前記パラメータ及び前記１以上の命令を前記データ移動エンジンにより受け取るステップと、
（Ｃ）前記ソース装置から前記目標装置へ前記データの転送を実行するステップと、
（Ｄ）前記システム・メモリ内のアドレスに、前記データの転送のステータスを指定するステータス・データを書き込むステップと、
を含むデータ転送方法。
【請求項２】
前記ソース装置は前記メモリ・コントローラに接続されたメモリ装置である請求項１に記載のデータ転送方法。
【請求項３】
前記目標装置は前記メモリ・コントローラに接続されたメモリ装置である請求項１に記載のデータ転送方法。
【請求項４】
前記目標装置は前記メモリ・コントローラに接続されたI/O装置である請求項２に記載のデータ転送方法。
【請求項５】
前記I/O装置はマルチメディア・アダプタである請求項４に記載のデータ転送方法。
【請求項６】
前記ソース装置は前記メモリ・コントローラに接続されたI/O装置である請求項３に記載のデータ転送方法。
【請求項７】
前記データ処理システムは前記メモリ・コントローラに接続された複数のプロセッサを有する対称マルチプロセッサ・システムである請求項１に記載のデータ転送方法。
【請求項８】
前記実行するステップは、更に、
前記ソース装置から複数のデータ部分を読み出し、かつ前記目標装置へこれら複数のデータ部分を書き込む複数対の読み出し／書き込み命令を発行するステップと、
あるカウントに到達したときに複数対の前記読み出し／書き込み命令の発行を停止させる停止ステップであって、前記カウントは転送する前記データの前記量を指定する前記パラメータに従っている、前記停止ステップと
を含む請求項１に記載のデータ転送方法。
【請求項９】
前記ステータス・データは、前記ソース装置から前記目標装置に前記データが転送されたか否かを指定する請求項１に記載のデータ転送方法。
【請求項１０】
前記ステータス・データはページの境界を越えたことを指定する請求項１に記載のデータ転送方法。
【請求項１１】
前記ステータス・データは、前記プロセッサがページをスワップする前に無効ページに送出するTLBオペレーションを検出したことを表示し、かつ前記データ移動エンジンは調べるオペレーションにより前記TLB オペレーションを検出する請求項１に記載のデータ転送方法。
【請求項１２】
更に、前記ステータス・データを記憶するために前記プロセッサにより前記システム・メモリ内のアドレスをポーリングするステップを含む請求項１に記載のデータ転送方法。
【請求項１３】
更に、前記ポーリングするステップに応答して他のデータ転送を開始させるステップを含む請求項１に記載のデータ転送方法。
【請求項１４】
更に、
転送する前記データのアドレスに対応する実効アドレスを計算するステップと、
前記データ移動エンジンのアドレスを計算するステップと、前記実効アドレスをリアル・アドレスに変換するステップと
を含み、前記リアル・アドレスは前記データ移動エンジンに送出される請求項１に記載のデータ転送方法。
【請求項１５】
更に、
前のデータ転送が進行中であることを判断したのときは、前記転送を破棄するステップを含む請求項１に記載のデータ転送方法。
【請求項１６】
更に、
パラメータが不正であることを判断したのときは、前記転送を破棄するステップを含む請求項１に記載のデータ転送方法。
【請求項１７】
データ処理システムにおいて、ソース装置から目標装置へデータを転送するデータ転送方法であって、
（Ａ）前記ソース装置から前記目標装置へ前記データの転送を実行するために、パラメータ及び１以上の命令を、プロセッサからメモリ・コントローラに送出するステップであって、
（ａ）前記パラメータには前記目標装置のアドレス、転送する前記データの量の指定、及び前記データの転送のステータスを指定するステータス・データを記憶するシステム・メモリ内のアドレスが含まれ、
（ｂ）前記１以上の命令には転送する前記データのアドレスが含まれている、
前記送出するステップと、
（Ｂ）前記メモリ・コントローラ内において、前記パラメータ及び前記１以上の命令をデータ移動エンジンにより受け取るステップと、
（Ｃ）前記ソース装置から前記目標装置へ前記データの前記転送を実行する実行ステップであって、
前記データ処理システムは、メモリからロードする又はメモリに記憶するように機能する２つの外部制御命令が存在するPowerPCアーキテクチャのものであり、かつ前記１以上の命令は次の
eciwx（インデックスされたワードによる外部制御イン）、及び
ecowx（インデックスされたワードによる外部制御アウト）
の２つの外部制御命令のうちの一つを含む、実行ステップと、
（Ｄ）前記システム・メモリ内のアドレスに、前記データの転送のステータスを指定するステータス・データを書き込むステップと、
を含むデータ転送方法。
【請求項１８】
データ処理システムにおいて、
（Ａ）プロセッサと、
（Ｂ）データ移動エンジンを含み、メモリからI/O装置へデータの転送を実行するためのメモリ・コントローラと、
（Ｃ）前記メモリ・コントローラに接続された前記メモリと、
（Ｄ）前記メモリ・コントローラに前記プロセッサを接続させるバスと、
（Ｅ）前記メモリ・コントローラに接続された前記I/O装置と、
（Ｆ）前記プロセッサから前記メモリ・コントローラ内の前記データ移動エンジンに複数のパラメータ及び１以上の命令を送出する送出手段であって、
（ａ）前記パラメータは前記メモリ・コントローラ内の複数のレジスタに記憶され、前記I/O装置のアドレス、転送すべき前記データの量の指定、及び前記データの転送のステータスを指定するステータス・データを記憶するシステム・メモリ内のアドレスを含み、
（ｂ）前記１以上の命令が転送すべき前記データのアドレスを含む、
前記送出手段と、
（Ｇ）前記データ移動エンジンにより前記メモリ・コントローラ内に前記複数のパラメータ及び前記１以上の命令を受け取る手段と、
（Ｈ）前記メモリから前記I/O装置へ前記データの転送を実行する実行手段と、
（Ｉ）前記システム・メモリ内のアドレスに、前記データの転送のステータスを指定するステータス・データを書き込む手段と
を含むデータ処理システム。
【請求項１９】
前記I/O装置はグラフィック・アダプタである、請求項１８に記載のデータ処理システム。
【請求項２０】
前記データ処理システムは、前記メモリ・コントローラに接続された複数のプロセッサを有する対称マルチプロセッサ・システムである、請求項１８に記載のデータ処理システム。
【請求項２１】
前記実行手段は、更に、
前記メモリから複数のデータ部分を読み出し、かつ前記I/O装置にこれら複数のデータ部分を書き込む複数対の読み出し／書き込み命令を発行する手段と、
あるカウントに到達したときに複数対の前記読み出し／書き込み命令の発行を停止させる停止手段であって、前記カウントは転送する前記データの前記量を指定する前記パラメータに従っている前記停止手段と
を含む、請求項１８に記載のデータ処理システム。
【請求項２２】
前記ステータス・データは、前記メモリから前記I/O装置に前記データが転送されたか否かを指定する、請求項１８に記載のデータ処理システム。
【請求項２３】
更に、前記ステータス・データを記憶するために前記プロセッサにより前記システム・メモリ内のアドレスをポーリングする手段
を含む、請求項１８に記載のデータ処理システム。
【請求項２４】
更に、
転送する前記データの前記アドレスに対応する実効アドレスを計算する前記プロセッサにおける手段と、
前記データ移動エンジンのアドレスを計算する前記プロセッサにおける手段と、
前記実効アドレスをリアル・アドレスに変換する前記プロセッサにおける手段と
を含み、前記リアル・アドレスは前記データ移動エンジンに送出される、請求項１８に記載のデータ処理システム。
【請求項２５】
データ処理システムにおいて、
（Ａ）プロセッサと、
（Ｂ）メモリ・コントローラであって、データ移動エンジンを含む前記メモリ・コントローラと、
（Ｃ）前記メモリ・コントローラに接続されたメモリと、
（Ｄ）前記メモリ・コントローラに前記プロセッサを接続させるバスと、
（Ｅ）前記メモリ・コントローラに接続されたI/O装置と、
（Ｆ）前記メモリから前記I/O装置へデータの転送を実行するための前記メモリ・コントローラに、前記プロセッサから複数のパラメータ及び１以上の命令を送出する送出手段であって、
前記パラメータは前記I/O装置のアドレス、転送すべき前記データの量の指定、及び前記データの転送のステータスを指定するステータス・データを記憶するシステム・メモリ内のアドレスを含み、かつ前記１以上の命令が転送すべき前記データのアドレスを含む、前記送出手段と、
（Ｇ）前記データ移動エンジンにより前記メモリ・コントローラ内に前記複数のパラメータ及び前記１以上の命令を受け取る手段と、
（Ｈ）前記メモリから前記I/O装置へ前記データの転送を実行する実行手段であって、
前記データ処理システムは、メモリからロードする又はメモリに記憶するように機能する２つの外部制御命令が存在するPowerPCアーキテクチャのものであり、かつ前記１以上の命令は次の
eciwx（インデックスされたワードによる外部制御イン）、及び
ecowx（インデックスされたワードによる外部制御アウト）
の２つの外部制御命令のうちの一つを含む、実行手段と、
（Ｉ）前記システム・メモリ内のアドレスに、前記データの転送のステータスを指定するステータス・データを書き込む手段と
を含む、データ処理システム。
【請求項２６】
ソースから目標にデータを転送する、データ処理システムにおけるデータ転送方法であって、
（Ａ）前記目標のアドレスを判断するステップと、
（Ｂ）転送すべき前記データの量を判断するステップと、
（Ｃ）転送すべき前記データのアドレスを判断するステップであって、転送すべき前記データのアドレスが前記ソースに対応しているステップと、
（Ｄ）ステータス情報を記憶すべきメモリ位置のアドレスを判断するステップであって、前記ステータス情報が前記データの転送に関連しているステップと、
（Ｅ）（Ａ）のステップで判断された前記目標のアドレスと、（Ｂ）のステップで判断された転送すべき前記データの前記量と、（Ｄ）のステップで判断されたステータス情報を記憶すべき前記メモリ位置のアドレスと、を前記転送エンジンに送出するステップと、
（Ｆ）（Ｃ）のステップで判断された転送すべき前記データのアドレスを、前記転送エンジンに送出するステップと、
（Ｇ）前記目標のアドレス、転送すべき前記データの前記量、ステータス情報を記憶すべき前記メモリ位置のアドレス、及び転送すべき前記データのアドレスを、前記転送エンジンにより受け取るステップと、
（Ｈ）既存のデータの転送が既に進行しているか否かを判断するステップと、
（Ｉ）（Ｈ）のステップで前記既存のデータの転送が進行していると判断したときは、前記データの転送を破棄するステップと、
（Ｊ）前記ソースから複数のデータ部分を読み出し、かつ前記目標にこれらのデータ部分を書き込む複数対の読み出し／書き込み命令を発行するステップと、
（Ｋ）あるカウントに到達したときに前記複数対の読み出し／書き込み命令を停止させる停止ステップであって、前記カウントが転送すべき前記データの前記量に依存している、停止ステップと、
（Ｌ）前記データが前記ソースから前記目標へ転送されたという指定を、前記ステータス情報を記憶すべき前記メモリ位置に書き込むステップと、
（Ｍ）前記プロセッサにより前記メモリ位置に関連するアドレスをポーリングするステップと、
（Ｎ）前記ポーリングするステップに応答して他のデータ転送を開始するステップと、
を含むデータ転送方法。
【請求項２７】
前記データ処理システムが、メモリからロードする又はメモリに記憶するように機能する２つの命令が存在するパワー・ピー・シー(PowerPC)アーキテクチャのものであり、前記転送エンジンにより転送されるべき前記データのアドレスには下記２つの命令
eciwx（インデックスされたワードによる外部制御イン）、又は
ecowx（インデックスされたワードによる外部制御アウト）
のうちの一つが付随する、請求項２６に記載のデータ転送方法。
【発明の詳細な説明】
【０００１】
【発明が属する技術分野】
本発明はデータ転送方法及びデータ処理システムに関し、特にシステム・メモリと前記データ処理システムに接続された装置との間でデータを転送するデータ転送方法及びデータ処理システムに関する。
【０００２】
【従来の技術】
現在、最近のコンピュータ・システムは、アプリケーション・プログラムに利用可能とするメモリがその機械（いわゆるリアル・メモリ）に実際に存在するメモリよりも多く存在するバーチャル・メモリの概念を用いている。オペレーティング・システム及びハードウエアはアプリケーションにこのメモリが実在していると思わせるので、このメモリはバーチャルと呼ばれるが、プロセッサ（又は複数のプロセッサ）によりアクセス可能な物理メモリに実際に存在していなくともよく、代わってシステムのハード・ディスクに割り付けられる。ハードウエア及びソフトウェアは、プログラムが発行するバーチャル・アドレスをリアル物理メモリか又はハード・ディスクのどこかに実際に存在するアドレスに変換する。これは、典型的には４Ｋバイトである１ページを単位として実行される。
【０００３】
これらの変換は、常時実行され、かつ速やかに行われる必要があるので、プロセッサ・ハードウエアにおける「アドレス変換バッファ（ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ  ：  ＴＬＢ  ）」に保持されている。あるページがプロセッサによりアクセスされ、それがリアル・メモリに存在していないときは、ページ・フォールト割り込みが発生し、ソフトウェアはディスクからページを持ち込み、メモリ内のリアル・ページに対してこれをマップさせる。これをディスクからのページにより置換する前に、ディスクからのページを置くリアル・メモリ空間に空きがないときは、ソフトウェアは、まず、ディスクにコピーすべきページを選択してメモリ空間を凍結させる。これはページ・スワッピングと呼ばれる。
【０００４】
ソフトウェアは、メモリからリアル・ページを除去するためにアドレス変換バッファ（ＴＬＢ）を変更させるので、古いアドレスがこれ以上古いリアル・ページ位置にマップすることはない。これをＴＬＢの無効化と呼ぶ。そのときに、このバーチャル・アドレスを参照すると、ソフトウェアはページ・フォールトを検出し、これがリアル・メモリに存在せず、ハード・ディスクについて探すべきことを知る。ハード・ディスクから新しいページを開いたときは、ＴＬＢを変更してメモリ内の当該リアル・ページ・アドレスに新しいバーチャル・アドレスをマップさせる。
【０００５】
更に、今日のコンピュータ・システムも１以上のプロセッサからなり、各プロセッサは実行を高速化するためにリアル・メモリから最近に使用したデータのコピーを含むキャッシュ・メモリを有する。プロセッサがデータをメモリからフェッチする又はメモリに記憶するときは、このデータをキャッシュ・メモリにロード又はセーブする。同じような技術は、最近使用していなかったときにメモリにデータをセーブさせるため、及びプロセッサ（又は複数のプロセッサ）により現在アクセスされているキャッシュのあるセクションをデータにより更新するために用いられる。通常、これは、動作の速度を増加させるために完全にハードウエアにより実行される。プロセッサがキャッシュされたデータをアクセスしているときは、外部バス又はメモリを作動させることはないので、極めて効果的となる。
【０００６】
これら型式のコンピュータ・システムでは、メモリ（又はプロセッサ・キャッシュにおいてデータを変更してもよいときはプロセッサ・キャッシュ）とＩ／Ｏ（入出力）装置との間でデータを移動させるためにいくつかの代替が現在存在する。第１の代替はプロセッサ発行ロードを有することであり、そのときはＰＩＯ（プログラムＩ／Ｏ）を用いて装置に直接記憶させる。
プロセッサは、その内部レジスタのうちの一つにロード命令を用いてメモリ（又はキャッシュ）をアクセスする。ハードウエアはＴＬＢを用いてバーチャル・アドレスを変換して、リアル・メモリ（キャッシュ）位置からデータを検索する。前述のように、データがリアル・メモリに現在存在しないときには、ページ・フォールトが発生し、またオペレーティング・システム（「ＯＳ」）ソフトウェアはデータをスワップしてアクセスが発生する。データがプロセッサ・レジスタに存在するときには、Ｉ／Ｏ位置に対するストアを用いてＩ／Ｏ装置に書き込まれる。
【０００７】
この方法は、プログラムに関しては簡単であるが、プロセッサはＩ／Ｏ装置の速度により遅くされるので、多くのプロセッサ・サイクルを費やすと共に、バースト転送が利用できず、また転送がプロセッサのオペランド・サイズ（ワード、二重ワード等）に限定されるので、システム・バス及びＩ／Ｏバス帯域幅を費やす欠点がある。このようにして４Ｋページのデータ転送は、典型的なワード・サイズのオペランドのロード及びストアを用いたときに、このようなオペレーションを１０００も必要とすることになる。
【０００８】
一般的な他の代替は、メモリからＩ／Ｏに、又はその逆に複数ブロックのデータを転送するために直接メモリ・アクセス（ＤＭＡ）オペレーションを用いることである。これは、更に効果的なバースト転送を用い、かつ（もしシステム構成のために、トラフィックがメイン・システム（プロセッサ／メモリ・バス）から切り離されたままとなり得るときは、）潜在的にシステム・バスの帯域幅を使用しないことにより、第１の代替よりも多くのＣＰＵサイクルをセーブする利点がある。しかし、以下で詳細に説明するように、依然としてＤＭＡセットアップを含み、かつ終了の割り込みを取り扱う際に、ここでもＯＳカーネルに係わる大きなオーバーヘッドが存在する。
【０００９】
【発明が解決しようとする課題】
ＤＭＡセットアップは、アプリケーションがＩ／Ｏのバーチャル・ページのうちの１ページからいくつかのデータを書き込みたい、又は読み出したいときに、Ｉ／Ｏ  ＤＭＡ装置がこれらのバーチャル・アドレスを典型的には判断できず、またデータがメモリに存在するのか、又はハード・ディスクに存在するのかも判らないことから複雑なものとなる。前述のように、ＯＳのソフトウェアはアプリケーション・データをディスクに一時的にページアウトしてスワップさせてしまっているかもしれない。
【００１０】
ＤＭＡ転送をセットアップするために、プロセッサは、バーチャル・アドレスからリアル・メモリ・アドレスに変換したソース（又は目標）メモリ・アドレスを得て、かつ転送を実行している間中、リアル・ページをメモリに「保持する（ｐｉｎ）」ＯＳソフトウェアを有する必要がある。これらのオペレーションは共にＯＳカーネル呼び出しに係わり、ＯＳカーネル呼び出しはプロセッサ・サイクルにおいて高価になる恐れがある。「保持（ｐｉｎｎｉｎｇ）」するオペレーションとは、ＯＳソフトウェアによってリアル・ページがディスクにページアウトされたり置換されたりしないように、リアル・ページ・マネジャにマークさせることである。万が一、このようなことができるのであれば、Ｉ／Ｏ装置は、破滅的な結果となる転送を要求するものを除き、アプリケーションにデータを転送することができるであろう。
【００１１】
更に、グラフィック・スクリーン・ペインティング又はマルチメディア装置転送のようなデータ集約的な転送のときは、ＣＰＵオーバーヘッド又はシステム・バス帯域幅が限定要素となる。
【００１２】
従って、当該技術分野において、データを転送する改良された、バーチャル・メモリ・データ処理システムにおけるシステム及び方法が要求されている。
【００１３】
【課題を解決するための手段】
本発明は、ソースから目標（ターゲット）にデータを転送する方法に関連したデータ処理システム及び方法を提供することにより、以上の要求を満足させるものであって、前記システム及び方法は、（１）目標のアドレスを判断するステップと、（２）転送すべきデータの量を判断するステップと、（３）転送すべきデータのアドレスを判断するステップであって、前記転送すべきデータのアドレスが前記ソースに対応しているステップと、（４）転送エンジンのアドレスを判断して前記データの転送を実行するステップと、（５）ステータス情報を記憶すべきメモリ位置のアドレスを判断するステップであって、前記ステータス情報がデータの転送に関連しているステップと、（６）前記目標の前記アドレス、転送すべき前記データの前記量、及びステータス情報を記憶すべき前記メモリ位置の前記アドレスを前記転送エンジンに送出するステップと、（７）前記転送エンジンに転送すべき前記データの前記アドレスを送出するステップと、（８）前記目標の前記アドレス、転送すべき前記データの前記量、ステータス情報を記憶すべき前記メモリ位置の前記アドレス、及び前記転送エンジンにより転送すべき前記データの前記アドレスを受け取るステップと、（９）既存のデータの転送が既に進行しているか否かを判断するステップと、（１０）前記既存のデータの転送が進行していることを判断したときは、前記データの前記転送を破棄するステップと、（１１）前記ソースから複数のデータ部分を読み出し、かつ前記目標にこれらのデータ部分を書き込む複数対の読み出し／書き込み命令を発行するステップと、（１２）あるカウントに到達したときに前記複数対の読み出し／書き込み命令を停止させるステップであって、前記カウントが転送すべき前記データの前記量に依存しているステップと、（１３）前記データを前記ソースから、前記ステータス情報を記憶すべき前記メモリ位置に対する前記目標へ転送したこと標識を書き込むステップと、（１４）前記メモリ位置に関連するアドレスの前記プロセッサによりポーリ
ングするステップと、（１５）前記ポーリングするステップに応答して他のデータ転送を開始するステップとを含む。
【００１４】
本発明の一実施例において、前記データ処理システムはパワー・ピー・シー（ＰｏｗｅｒＰＣ（ＩＢＭの登録商標））アーキテクチャのものであり、前記転送エンジンにより転送されるべき前記データの前記アドレスには、下記命令、
ｅｃｉｗｘ（インデックスされたワードによる外部制御イン）、又は
ｅｃｏｗｘ（インデックスされたワードによる外部制御アウト）
のうちの一つが付随する。
【００１５】
以上、以下に続く本発明の詳細な説明を良く理解できるようにするために、本発明の特徴及び技術的な効果を概要的に説明した。以下、本発明の請求の範囲の要旨を形成する本発明の付加的な特徴及び効果を説明する。
【００１６】
【発明の実施の形態】
以下の説明では、本発明の十分な理解を得るために特定のワード又はバイト長のような多くの特定的な詳細を説明する。しかし、このような特定的な詳細がなくても本発明を実施できることは、当該技術分野に習熟する者に明らかであろう。他の場合では、不必要な詳細により説明が不明確とならないように、周知の回路はブロック図形式により示されている。大抵の部分において、タイミング要件に関する詳細等については、本発明の完全な理解を得るために、詳細は不必要、かつ当該技術分野に通常に習熟する者の習熟範囲内である限り、削除した。
【００１７】
ここで、図面を参照すると、説明した要素は必ずしも一定の割合で示されてはいない。また、同一又は類似の要素はいくつかの図面を通して同一参照番号により表されている。
【００１８】
以下に詳細に説明するように、本発明は、データ処理システム用のメモリ・コントローラ内でデータ移動エンジンを用いることにより、メモリとデータ処理システムに接続された装置との間でより効率的なデータの転送を得ることである。このデータ移動エンジンは転送に固有のパラメータ及び命令を受け取って、起動したプロセッサと更に係わることなく、転送を実行するように進行する。
【００１９】
本発明は、ＩＢＭ及びモトローラにより製造されているＰｏｗｅｒＰＣコンピュータ・アーキテクチャによる実施について説明されている。しかし、本発明の要旨はメモリと他の装置との間のブロック・データの転送を用いて任意型式のコンピュータ・アーキテクチャにより実施されてもよい。（本発明は、データ処理システム内の別個の２つのメモリ位置間におけるデータの転送に対しても動作し得ることに注意すべきである。）
【００２０】
本発明はＰｏｗｅｒＰＣアーキテクチャ内で以下で説明する２つの命令を効率的に使用するようにしている。これらの命令は一連のオペレーションを実行するようにＰｏｗｅｒＰＣアーキテクチャにより設計されている。これらの命令は、ＰｏｗｅｒＰＣアーキテクチャにより、又は本発明を用いて他の任意のコンピュータ・アーキテクチャにより、対応する一組のプログラム命令により置換されてもよい。
【００２１】
以下の説明は、システム・メモリからデータ処理システムに接続されたＩ／Ｏ装置にデータを転送することに関連している。しかし、ここで指摘する任意の他の転送も同じようにして実行されてもよい。
【００２２】
ＰｏｗｅｒＰＣアーキテクチャでは、メモリからロードする又はメモリに記憶するように機能する２つの外部装置制御命令が存在し、プロセッサがバーチャル・アドレスをリアル物理アドレスに変換し、かつプロセッサのアドレス・バス上に送出し、次いでその（システム）データ・バスからのデータ・ワードによりレジスタをロードするか、又は汎用レジスタ（ＧＰＲ）からのデータ・ワードをプロセッサ（システム）データ・バスを通して記憶する。これに加えて、これらの命令は、付加的なピンを用いてこれらのオペレーションと共にリソース識別パラメータ（ＲＩＤ）を指定できる。このために、ＰｏｗｅｒＰＣアーキテクチャは、システムにおいて３２リソースまで許容する５ビット・フィールドまでを提供する。このＲＩＤは、アドレス・バス上の物理アドレス、及びデータ・バス上のそれ自身に固有な目的のデータを用いるリソースを選択するために一つのアドレスとして用いられてもよい。これらの命令は、ストア型式の命令用にインデックスされた外部制御出力ワード（ｅｃｏｗｘ）、及びロード型式命令用にインデックスされた外部制御入力ワード（ｅｃｉｗｘ）と呼ばれる。本発明は、以下でこれらの命令を用いてデータ移動エンジン（リソース）に対して通信をする。
【００２３】
図１を参照すると、対称的なマルチプロセシング・システム１００が示されている。システム１００は、システム・アドレス及びデータ・バス１０４により、システムに接続されたＮ（Ｎは正の整数である。）プロセッサ１０２、１０３と、メモリ・コントローラ１０１とを含み、メモリ・コントローラ１０１はシステム１００用のメモリ１０５を制御すると共に、プロセッサ１０２、１０３を種々のＩ／Ｏバス１０８にブリッジさせている。Ｉ／Ｏアダプタ１０６はＩ／Ｏバス１０８に接続されているのが示されている。Ｉ／Ｏアダプタ１０６は、知られている任意の又は意図しているＩ／Ｏ装置、例えばディスプレイ・アダプタ、グラフィック・アダプタ、又はマルチメディア装置用のアダプタであってもよい。更に、システムのメモリ・コントローラ１０１に配置されているのは、固有のＲＩＤアドレスを有するデータ移動エンジン（転送リソース）１０９である。メモリ・コントローラ１０１にデータ移動エンジン１０９を配置させると、メモリ１０５が他のプロセッサ要求をサービスしてビジーでないときは、メモリ・バースト・サイズ転送を用いて転送を行えるようにする。
【００２４】
データ移動エンジン１０９はメモリ・コントローラ１０１内に実施され、かつここで説明したように固有な方法により構築された周知の直接メモリ・アクセス（ＤＭＡ）装置を含むものでよい。
【００２５】
データ移動エンジン１０９に接続されているのは、以下で説明される転送を制御するプロセッサ１０２、１０３により直接プログラム可能な制御レジスタ（ＣＲ）１１１〜制御レジスタ（ＲＡ）１１４である。制御レジスタ（ＣＲ）１１１〜制御レジスタ（ＲＡ）１１４はデータ移動エンジン１０９内に配置されてもよいことに注意すべきである。
【００２６】
制御レジスタ（ＣＲ）１１１は、データ転送の長さ、（メモリ１０５への又はメモリ１０５からの）データ転送の方向を表すビット、及びデータ転送中に目標アドレスを増加させるか否かを表すビットにより初期化される制御レジスタ（ＣＲ）である。
【００２７】
制御レジスタ（ＡＲ）１１２は、Ｉ／Ｏアダプタ１０６のリアル・アドレスに初期化されるアダプタ・アドレス・レジスタである。制御レジスタ（ＡＲ）１１２はメモリ・メモリ転送用のリアル・メモリ・アドレスによりロードされてもよいことに注意すべきである。
【００２８】
制御レジスタ（ＷＡＲ）１１３は、オペレーションの完了ステータス・インジケータを置くために用いられるメモリ位置のリアル・アドレスに初期化される書き戻しアドレス・レジスタ（ＷＡＲ）である。このステータスは転送進行についてチェックするためにプロセッサ１０２、１０３によりポーリング（読み出）されてもよい。しかし、プロセッサ１０２、１０３にとっては、指示されたメモリ位置をＷＡＲにより読み出すのがより効率的である。なぜならば、メモリ位置をそのキャッシュにキャッシュさせることができ、かつプロセッサ１０２、１０３がシステム・バス１０４をアクセスして完了ステータスをポーリングする必要がないからである。
【００２９】
データ移動エンジン１０９が転送を終了すると、制御レジスタ（ＷＡＲ）１１３の指示されたメモリ位置にステータスを記憶し、制御レジスタ（ＷＡＲ）１１３はプロセッサのキャッシュ・データを無効にし、プロセッサ１０２、１０３はメモリ１０５からの完了ステータスを含む更新位置を自動的に読み出す。換言すれば、制御レジスタ（ＷＡＲ）１１３はメモリ１０５内の位置を指すことができ、ここでデータ移動エンジン１０９は、データの転送を完了したこと、又は以下で説明する他の種々のステータス情報を表しているデータを記憶する。これがバス１０７上で発生すると、このステータスの書き戻しもシステム・バス１０４上に送出されるので、プロセッサ１０２、１０３はメモリ位置のアドレス及び書き込み命令を調べることができる。これはデータ転送を開始するプロセッサにおけるキャッシュ・ライン（例えばキャッシュ１１５）を無効にする。
【００３０】
データ移動エンジン１０９は、プロセッサ・オペランド・サイズではなく、かつバーチャル・リアル・メモリ・アドレスを変換してメモリ・ページを「固定」する際に係わるセットアップ・オーバーヘッドなしに、メモリ・アクセスを集中的に行うバースト転送を用いて、１ページのデータまで転送するのに用いられてもよい。
【００３１】
次に図２を参照すると、本発明による処理がステップ２０１から開始する。この処理は、システム１００にプログラムされた一組の命令としてハードワイヤされても即ち記憶されてもよい。
【００３２】
この転送は、転送すべきデータのソース又は行き先であるＩ／Ｏアダプタ１０６のリアル・アドレスを有する第１のプログラムの制御レジスタ（ＡＲ）１１２と、データ移動エンジン１０９のＲＩＤを有する内部プロセッサ・レジスタ（ＥＡＲ）（外部アクセス・レジスタ）１１７とをプログラムする。これらの値は、転送アプリケーション（グラフィック・インテンシブ・コンピュータ・プログラムのようなデータを転送するアプリケーション・プログラム）、典型的にはデバイス・ドライバにより通常知られており、ハードウエアにより構成されている。即ち、システムが初期化されれば、これらの値は変化しない。
【００３３】
次に、プロセッサは、ステータス・メールボックスとして用いるように、システムのメモリ１０５におけるメモリ位置を制御レジスタ（ＷＡＲ）１１３にプログラムする。
【００３４】
次に、ステップ２０３において、処理は前述のように制御レジスタ（ＣＲ）１１１に長さ、方向及び自動増加値を書き込む。
【００３５】
図３を参照すると、前記レジスタ値を制御レジスタ（ＣＲ）１１１〜制御レジスタ（ＷＡＲ）１１３に記憶するためにメモリ・コントローラ１０１内で実行される処理が説明されている。ステップ３０１において、レジスタ値がプロセッサ１０２からメモリ・コントローラ１０１内の制御レジスタ（ＣＲ）１１１〜制御レジスタ（ＲＡ）１１４に記憶される。ステップ３０２において、これらのレジスタ値がこれら制御レジスタに配置される。ステップ３０３は、この処理が終了したことを示す。
【００３６】
ステップ２０４において、メモリ１０５から又はメモリ１０５へ移動するデータ領域を指示させるｅｃｏｗｘ又はｅｃｉｗｘ命令を発行する。プロセッサ１０２は、リアル・アドレスに対するｅｃｏｗｘ又はｅｃｉｗｘ命令が用いるバーチャル・アドレスの変換を行い、これと内部プロセッサ・レジスタ（ＥＡＲ）１１７に記憶されているＲＩＤをシステム・バス１０４に転送する。
【００３７】
ｅｃｏｗｘ又はｅｃｉｗｘ命令を用いる代わりに、プロセッサ１０２は、図５のフローチャートに示したと同様に対応する一組のプログラム命令を実行してもよい。ステップ５１において、プロセッサ１０２は転送すべきデータのメモリ位置に対する実効アドレス（バーチャル・アドレス）を計算する。次に、ステップ５２において、プロセッサ１０２はこの実効アドレスを評価する。次に、ステップ５３において、この実効アドレスをレジスタ（ＴＬＢ）１１６を用いてリアル・アドレスに変換する。その後、ステップ５４において、このリアル・アドレスをシステム・バス１０４に送出する。
【００３８】
この残りの説明ではｅｃｏｗｘ又はｅｃｉｗｘ命令の使用について行う。しかしながら、図５に示すプログラム命令セットを代わりに使用しもよい。図５に示すプログラム命令セットを使用するときは、プロセッサ１０２からシステム・バス１０４を介してメモリ・コントローラ１０１へ送出されるリアル・アドレスは、制御レジスタ（ＲＡ）１１４内に記憶されてもよい。
【００３９】
ステップ２０４に応答して、メモリ・コントローラ１０１は、ｅｃｏｗｘ／ｅｃｏｗｘ命令コードを捕捉し、ＲＩＤをそれ自身のものとしてデコードし、そのアドレスをデータ移動エンジン１０９に転送する。データ移動エンジン１０９はｅｃｏｗｘにより渡されたデータを使用せず、またｅｃｉｗｘに対してダミー・データを渡す。データ移動エンジン１０９が必要とするデータは制御レジスタ（ＣＲ）１１１、制御レジスタ（ＷＡＲ）１１３及び制御レジスタ（ＡＲ）１１２に既に存在するので、データ移動エンジン１０９は何のデータも必要としない。ｅｃｏｗｘ／ｅｃｉｗｘ命令を受け取った後にデータ移動エンジン１０９内で実行される処理については、図４に関連して以下で更に詳細に説明する。
【００４０】
図２を再び参照すると、ステップ２０５において、プロセッサ１０２はキャッシュ１１５から完了ステータス・ワードを読み取る。この完了ステータス・ワードは、転送を完了したことを表す、転送したパラメータが「不正」であったことを表す、ページを過ぎたことを表す、又はページをスワップしたことを表す。
【００４１】
次に、ステップ２０６において、読み出し完了ステータス・ワードに応答して、プロセッサ１０２は、前記パラメータが正しく転送され、かつ／又は「正常」パラメータであったかを判断する。ノーならば、ステップ２０７において処理は終了し、かつプログラムは異常終了となる。しかしながら、パラメータが「正常」であると判断されると、処理はステップ２０８に進み、転送は完了したか否かを判断する。ノーのときは、処理がステップ２０９に進み、転送はページ境界を越えたこと、又はＴＬＢオペレーションを調べたためにデータ移動エンジン１０９が終結してページがスワップされた恐れがあることを表していることを完了ステータスが表しているかどうかを判断する。いずれも発生しなかったときは、プロセッサ１０２内の処理はステップ２０５に戻り、ステータス・ワードを再び読み出す。
【００４２】
このループは、制御レジスタ（ＷＡＲ）１１３に示すメモリ位置にステータス書き戻しの調べによりステップ２０６、２０８、２０９について異なる一組のデータが得られるまで、プロセッサ１０２内で継続する。ステップ２０８において、完了ステータス・ワードが、メモリ１０５からＩ／Ｏアダプタ１０６へ又はその逆のデータの転送を完了したことを表しているときは、処理はステップ２１０に進み、システム１００に接続されている新しいデバイスへの転送が要求されているか否かを判断する。イエスのときは、処理はステップ２０２に進み、ＥＡＲ、ＡＲ及びＷＡＲ値をプログラムする。
【００４３】
新しいデバイスを表していなかったときは、処理がステップ２１１に進み、Ｉ／Ｏアダプタ１０６へ又はＩ／Ｏアダプタ１０６からの他の転送が要求されているか否かを判断する。Ｉ／Ｏアダプタ１０６へ又はＩ／Ｏアダプタ１０６から他のデータ・ブロックを転送すべきときは、処理はステップ２０３に進み、メモリ１０５からＩ／Ｏアダプタ１０６へ又はその逆へ新しいデータの転送のために長さ、方向及び自動増加値に関する新しい情報により、レジスタ（ＣＲ）１１１がプログラムされる。他の転送が要求されていないときは、処理はステップ２１２において終了する。
【００４４】
リアル・メモリ位置を固定するパフォーマンス問題を解決するために、データ移動エンジン１０９は、ページを固定することなく動作する。このために、データ移動エンジン１０９は、プロセッサ１０２、１０３がページをディスクにスワップする前に、互いに無効ページに送出するＴＬＢオペレーションについて、システム・バス１０４を常時「調べる」。図６を参照して、データ移動エンジン１０９がシステム・バス１０４を調べることによりＴＬＢオペレーションを検出したときは（ステップ５０１）、このようなスワップが発生するかも知れないことを表す。転送が活性のときは、ＴＬＢオペレーションは無視される（ステップ５０２、５０５、５０６）。転送が進行中であり、かつこれが制御レジスタ（ＣＲ）１１１に転送する現在長がある実施の定義値より小さいということによって表される「ほとんど」完了（ステップ５０３）であるときは、メモリ・コントローラ１０１はＴＬＢオペレーションを「再試行」することになり、これをプロセッサにより再発行させる。これは、転送が終了するまで継続する。ステップ５０３において、転送が完了間近でないないときは、ロジックはステップ５０４に進み、次の便宜的な点で終了するために転送エンジンをテストするフラグをセットする（ステップ２０９で使用）。次いで、ステップ５０９において、メモリ・コントローラ１０１はＴＬＢを無視し、ステップ５１０において調べを終了する。
【００４５】
図２を参照して、ステップ２０９において、ステータスを読み込んだプロセッサ１０２がページを越えた、又はＴＬＢ停止が発生したことを検出すると、ステップ２１３に進み、完了したデータ転送の長さを読み出し、ステップ２１４においてこれを転送開始アドレス＋１バイトに加算し、ステップ２１５において通常のメモリからの読み出しを行う。これは、新しいページ位置がまだメモリにあるか否かを調べるために行われる。ステップ２１６においてページ・フォールトが発生していると、オペレーティング・システムはこの処理を中断し、ステップ２１７において参照したページをスワップし、次いでステップ２１５において読み出しを反復する処理に戻る。ページ・フォールトが発生していないときは、処理はステップ２１８に進み、もとの転送サイズから既に転送した長さを引いてステップ２１９に進み、新しい長さを制御レジスタ（ＣＲ）１１１に記憶する。次いで、処理はステップ２２０に進み、新しい開始点を反映するようにもとのアドレスを調整し、次いで制御はステップ２０４に戻り、ｅｃｏｗｘ／ｅｃｉｗｘ命令を再発行する。そこで、データ転送が再開される。
【００４６】
次に図４に戻り、ステップ４０１においてｅｃｏｗｘ／ｅｃｉｗｘ命令を受け取ることにより、メモリ・コントローラ１０１内で実施した処理を開始する。次に、ステップ４０２において、処理は、データの転送が既に進行しているか否かを判断する。イエスのときは、新しいデータ転送を終了し、ステータス書き戻しオペレーション内で制御レジスタ（ＷＡＲ）１１３により指示されたメモリ位置にこの終了が書き込まれる。ステップ４１３においてこのステータスの記憶を実行する。メモリ・コントローラ１０１内の処理はステップ４１４により完了する。この終了ステータスはプロセッサ１０２により調べられ、キャッシュ１１５内の対応するキャッシュ・ラインを無効にし、従ってステップ２０５においてこのステータス・ワードを読み出すことができる。
【００４７】
転送が進行していないときは、処理がステップ４０３に進み、制御レジスタ（ＣＲ）１１１〜制御レジスタ（ＲＡ）１１４内の転送されたパラメータが「正常」か否かを判断する。いずれかのパラメータが「不正」のときは、ステップ４１２においてこのステータスがセットされ、ステップ４１２において制御レジスタ（ＷＡＲ）１１３内の値により指示されたメモリ位置に記憶される。しかし、全てのパラメータが「正常」のときは、処理はステップ４０４に進み、データ移動エンジン１０９により１単位又はブロックのデータが転送される。これは、対をなす読み出し／書き込み命令をメモリ・コントローラ１０１に発行することにより、実行される。これは、図１において読み出し／書き込み命令の複数対をデータ・バッファ１１０に転送するものとして示されており、データ・バッファ１１０はメモリ１０５から読み出したデータを受け取り、続いてＩ／Ｏアダプタ１０６に書き込むこととなり、もし制御レジスタ（ＣＲ）１１１内の方向ビットがＩ／Ｏアダプタ１０６からメモリ１０５への転送を示しているのであれば、Ｉ／Ｏアダプタ１０６からの読み出し及び次のメモリ１０５への書き込みが対をなす。
【００４８】
次に、ステップ４０５において、処理は、データ転送が完了したか否かを判断する。イエスのときは、ステップ４０８において制御レジスタ（ＷＡＲ）１１３内の値により指示されたメモリ位置に対する次の書き込みのために、この完了ステータスをセットする。この完了ステータスは、図２の判断ブロック２０８に示す処理において用いられる。
【００４９】
データの転送が完了していないときは、処理がステップ４０６に進み、処理は前述のようにＴＬＢ停止フラグがセットされているか否かを判断する。データ移動エンジン１０９がＴＬＢ停止フラグのセットを検出すると（ステップ４０６）、処理はステップ４０９に進み、「ページ・スワップの可能性のために転送を停止」として完了ステータスをセットさせる。ステップ４０６においてＴＬＢ停止フラグのセットが検出されないときは、オペレーションはステップ４０７に進み、ページ境界を越えようとしているか否かを調べるためにテストを実行する。イエスのときは、ステータスをセットしてページ越えを表す。ステップ４０９及び４１０はいずれも制御レジスタ（ＣＲ）１１１内の長さを更新して転送を終了するまでに何回バイトを転送したかを表す（ステップ４１５）。処理はステップ４１３に進み、制御レジスタ（ＷＡＲ）１１３を用いてステータスをメモリに記憶し、ステップ４１４において転送を終了する。
【００５０】
ステップ４０７において、ページ境界を越えていないときは、処理はステップ４０４に戻ってデータの転送を継続する。
【００５１】
ＰｏｗｅｒＰＣ外部制御命令を用いて変換したアドレスをメモリ・コントローラ１０１内に前にセットアップした制御レジスタ（ＣＲ）１１１〜制御レジスタ（ＲＡ）１１４と共に、メモリ・コントローラ１０１に配置されているデータ移動エンジン１０９に転送すると、高速データ転送が最小のＣＰＵオーバーヘッド及び小さなシステム帯域幅の使用により達成される。この方法はメモリとグラフィック又はマルチメディア装置との間で多量のデータを転送するために特に有用である。
【００５２】
まとめとして、本発明の構成に関して以下の項を開示する。
【００５３】
（１）データ処理システムにおいて、ソース装置から目標装置へデータを転送するデータ転送方法であって、パラメータ及び１以上の命令をプロセッサからメモリ・コントローラへ送出して前記ソース装置から前記目標装置へ前記データの前記転送を実行するステップであって、前記パラメータには前記目標装置のアドレス、及び転送する前記データの量の指定が含まれ、かつ前記１以上の命令には転送する前記データのアドレスが含まれている前記ステップと、データ移動エンジンにより制御された前記メモリ内の前記パラメータ及び前記１以上の命令を受け取るステップと、前記ソース装置から前記目標装置へ前記データの前記転送を実行するステップとを含むデータ転送方法。
（２）前記ソース装置は前記メモリ・コントローラに接続されたメモリ装置である上記（１）に記載のデータ転送方法。
（３）前記目標装置は前記メモリ・コントローラに接続されたメモリ装置である上記（１）に記載のデータ転送方法。
（４）前記目標装置は前記メモリ装置に接続されたＩ／Ｏ装置である上記（２）に記載のデータ転送方法。
（５）前記Ｉ／Ｏ装置はマルチメディア・アダプタである上記（４）に記載のデータ転送方法。
（６）前記ソース装置は前記メモリ・コントローラに接続されたＩ／Ｏ装置である上記（３）に記載のデータ転送方法。
（７）前記データ処理システムは前記メモリ・コントローラに接続された複数のプロセッサを有する対称マルチプロセッサ・システムである上記（１）に記載のデータ転送方法。
（８）前記実行するステップは、更に、前記ソース装置から複数のデータ部分を読み出し、かつ前記目標装置へこれら複数のデータ部分を書き込む複数対の読み出し／書き込み命令のを発行するステップと、あるカウントに到達したときに複数対の前記読み出し／書き込み命令の発行を停止させるステップであって、前記カウントは転送する前記データの前記量を指定する前記パラメータに従っている前記ステップとを含む上記（１）に記載のデータ転送方法。
（９）前記パラメータは、更に、前記データの前記転送のステータスを指定するステータス・データを記憶するシステム・メモリ内におけるアドレスを含み、前記データ転送方法は、更に、前記システム・メモリ内の前記アドレスに前記ステータス・データを書き込み、前記データの前記転送の前記ステータスを指定するステップと、前記システム・メモリ内の前記アドレスに前記ステータス・データを書き込み、前記データの転送の前記ステータスを指定するステップとを含む上記（１）に記載のデータ転送方法。
（１０）前記ステータス・データは、前記ソース装置から前記目標装置に前記データが転送されたか否かを指定する上記（９）に記載の方法。
（１１）前記ステータス・データはページの境界を越えたことを指定する上記（９）に記載のデータ転送方法。
（１２）前記ステータス・データはＴＬＢオペレーションを検出したことを表示し、かつ前記データ移動エンジンは前記調べるオペレーションにより前記ＴＬＢ  オペレーションを検出する上記（９）に記載のデータ転送方法。
（１３）更に、前記ステータス・データを記憶するために前記プロセッサにより前記システム・メモリ内の前記アドレスをポーリングするステップを含む上記（９）に記載のデータ転送方法。
（１４）更に、前記ポーリングするステップに応答して他のデータ転送を開始させるステップを含む上記（１３）に記載のデータ転送方法。
（１５）更に、転送する前記データの前記アドレスに対応する実効アドレスを計算するステップと、前記データ移動エンジンのアドレスを計算するステップと、前記実効アドレスをリアル・アドレスに変換するステップとを含み、前記リアル・アドレスは前記データ移動エンジンに送出される上記（１）に記載のデータ転送方法。
（１６）前記データ処理システムはＰｏｗｅｒＰＣアーキテクチャのものであり、かつ前記１以上の命令は次のｅｃｉｗｘ（インデックスされたワードにおける外部制御）、及びｅｃｏｗｘ（インデックスされたワードにおける外部制御）のうちの一つからなる上記（１２）に記載のデータ転送方法。
（１７）更に、前のデータ転送が進行中であることを判断したのときは、前記転送を破棄するステップを含む上記（１）に記載のデータ転送方法。
（１８）更に、パラメータが不正であることを判断したのときは、前記転送を破棄するステップを含む上記（１）に記載のデータ転送方法。
（１９）データ処理システムにおいて、プロセッサと、メモリ・コントローラであって、データ移動エンジンを含む前記メモリ・コントローラと、前記メモリ・コントローラに接続されたメモリと、前記メモリ・コントローラに前記プロセッサを接続させるバスと、前記メモリ・コントローラに接続されたＩ／Ｏ装置と、前記プロセッサから前記メモリ・コントローラに複数のパラメータ及び１以上の命令を送出して前記メモリから前記Ｉ／Ｏ装置へデータの転送を実行させる手段であって、前記パラメータは前記Ｉ／Ｏ装置のアドレス及び転送すべき前記データの量の指定を含み、かつ前期以上の命令が転送すべき前期データのアドレスを含む前記手段と、前記データ移動エンジンにより前記メモリ・コントローラ内に前記複数のパラメータ及び前記１以上の命令を受け取る手段と、前記メモリから前記Ｉ／Ｏ装置へ前記データの転送を実行する手段とを含むデータ処理システム。
（２０）前記Ｉ／Ｏ装置はグラフィック・アダプタである、上記（１９）に記載のデータ処理システム。
（２１）前記データ処理システムは、前記メモリ・コントローラに接続された複数のプロセッサを有する対称マルチプロセッサ・システムである、上記（１９）に記載のデータ処理システム。
（２２）前記実行する手段は、更に、前記メモリからデータの複数部分を読み出し、かつ前記Ｉ／Ｏ装置にこれらデータの複数部分を書き込む複数対の読み出し／書き込み命令を発行する手段と、あるカウントに到達したときに複数対の前記読み出し／書き込み命令の発行を停止させるステップであって、前記カウントは転送する前記データの前記量を指定する前記パラメータに従っている前記手段とを含む、上記（１９）に記載のデータ処理システム。
（２３）前記パラメータは、更に、前記メモリ・コントローラ内の複数のレジスタに記憶され、更に、前記データの前記転送のステータスを指定するステータス・データを記憶するシステム・メモリ内のアドレスを含み、更に、前記システム・メモリ内の前記アドレスに前記ステータス・データを書き込み、前記データの前記転送の前記ステータスを指定する手段を含む、上記（１９）に記載のデータ処理システム。
（２４）前記ステータス・データは、前記メモリ装置から前記Ｉ／Ｏ装置に前記データが転送されたか否かを指定する、上記（２３）に記載のデータ処理システム。
（２５）更に、前記システム・メモリ内に前記アドレスのプロセッサによりポーリングして前記ステータス・データを記憶する手段を含む、上記（２４）に記載のデータ処理システム。
（２６）更に、転送する前記データの前記アドレスに対応する実効アドレスを計算する前記プロセッサにおける手段と、前記データ移動エンジンのアドレスを計算する前記プロセッサにおける手段と、前記実効アドレスをリアル・アドレスに変換する前記プロセッサにおける手段とを含み、前記リアル・アドレスは前記データ移動エンジンに送出される、上記（２２）に記載のデータ処理システム。
（２７）前記データ処理システムはＰｏｗｅｒＰＣアーキテクチャのものであり、かつ前記１以上の命令は次のｅｃｉｗｘ（インデックスされたワードにおける外部制御）、及びｅｃｏｗｘ（インデックスされたワードにおける外部制御）のうちの一つからなる、上記（１９）に記載のデータ処理システム。
（２８）ソースから目標にデータを転送する、データ処理システムにおけるデータ転送方法であって、前記目標のアドレスを判断するステップと、転送すべきデータの量を判断するステップと、転送すべきデータのアドレスを判断するステップであって、前記転送すべきデータのアドレスが前記ソースに対応しているステップと、転送エンジンのアドレスを判断して前記データの前記転送を実行するステップと、ステータス情報を記憶すべきメモリ位置のアドレスを判断するステップであって、前記ステータス情報が前記データの前記転送に関連しているステップと、前記目標の前記アドレス、転送すべき前記データの前記量、及びステータス情報を記憶すべき前記メモリ位置の前記アドレスを前記転送エンジンに送出するステップと、前記転送エンジンに転送すべき前記データの前記アドレスを送出するステップと、前記目標の前記アドレス、転送すべき前記データの前記量、ステータス情報を記憶すべき前記メモリ位置の前記アドレス、及び前記転送エンジンにより転送すべき前記データの前記アドレスを受け取るステップと、既存のデータの転送が既に進行しているか否かを判断するステップと、前記既存のデータの転送が進行していることを判断したときは、前記データの前記転送を破棄するステップと、前記ソースから複数のデータ部分を読み出し、かつ前記目標にこれらのデータ部分を書き込む複数対の読み出し／書き込み命令を発行するステップと、あるカウントに到達したときに前記複数対の読み出し／書き込み命令を停止させるステップであって、前記カウントが転送すべき前記データの前記量に依存しているステップと、前記データを前記ソースから、前記ステータス情報を記憶すべき前記メモリ位置に対する前記目標へ転送したことの指定を書き込むステップと、前記メモリ位置に関連するアドレスの前記プロセッサによりポーリングするステップと、前記ポーリングするステップに応答して他のデータ転送を開始するステップとを含むデータ転送方法。
（２９）前記データ処理システムがパワー・ピー・シー（ＰｏｗｅｒＰＣ）アーキテクチャのものであり、前記転送エンジンにより転送されるべき前記データの前記アドレスには下記命令ｅｃｉｗｘ（インデックスされたワードによる外部制御イン）、又はｅｃｏｗｘ（インデックスされたワードによる外部制御アウト）のうちの一つが付随する、上記（２８）に記載のデータ転送方法。
（３０）更に、ページ除去オペレーションを検出したときは、前記データの前記転送を一時的に中断するステップを含む、上記（２８）に記載のデータ転送方法。
【図面の簡単な説明】
【図１】本発明により構築されたデータ処理システムを示したものである。
【図２】本発明によるフローチャートである。
【図３】図１に示すメモリ・コントローラ内のレジスタの値を記憶するフローチャートである。
【図４】本発明による転送エンジンのオペレーションに従ったフローチャートである。
【図５】バーチャル・アドレスをリアル・アドレスに変換するフローチャートである。
【図６】ＴＬＢオペレーションを検出するフローチャートである。
【符号の説明】
１０１    メモリ・コントローラ
１０２、１０３    プロセッサ
１０４    システム・バス
１０５    メモリ
１０６    Ｉ／Ｏアダプタ
１０９    データ移動エンジン
１１０    データ・バッファ
１１１〜１１４    制御レジスタ
【図１】
0003575572.tif 000002
【図２】
0003575572.tif 000003
【図３】
0003575572.tif 000004
【図４】
0003575572.tif 000005
【図５】
0003575572.tif 000006
【図６】
0003575572.tif 000007