(57)【要約】【課題】マルチ処理システム内においてデータを転送するための方法及び装置を提供する。【解決手段】この方法及び装置は、ＤＭＡコマンドに関する状態情報を含むＤＭＡテーブルのエントリに関連する識別子を、ＤＭＡコマンドに割り当て、ＤＭＡコマンドによって規定されたＤＭＡデータ転送が完了したという指示を受信し、ＤＭＡデータ転送が完了したことを示すために、ＤＭＡデータ転送に関連するＤＭＡテーブルのエントリの状態情報を更新する。【選択図】図２
2006221642.tif 000002
【特許請求の範囲】
【請求項１】
処理システムのメモリ内に格納されたデータに対して、前記処理システムのプロセッサから第１のＤＭＡコマンドを受信するステップと、
前記第１のＤＭＡコマンドに関する状態情報を含むＤＭＡテーブルのエントリに関連する識別子を、前記第１のＤＭＡコマンドに割り当てるステップとを含むことを特徴とするデータ処理方法。
【請求項２】
前記第１のＤＭＡコマンドに関連するデータ転送が完了していないことを示すために、前記第１のＤＭＡコマンドに関連する前記ＤＭＡテーブルの前記エントリの状態情報を初期化するステップをさらに含むことを特徴とする、請求項１に記載のデータ処理方法。
【請求項３】
前記第１のＤＭＡコマンドに関連するデータ転送が完了したとき、前記第１のＤＭＡコマンドに関連する前記ＤＭＡテーブルの前記エントリの状態情報を更新するステップをさらに含むことを特徴とする、請求項１に記載のデータ処理方法。
【請求項４】
前記プロセッサから前記第１のＤＭＡコマンドに関する状態リクエストを受信するステップをさらに含むことを特徴とする、請求項１に記載のデータ処理方法。
【請求項５】
前記状態情報を獲得するために、前記第１のＤＭＡコマンドに関連する前記ＤＭＡテーブルの前記エントリをチェックするステップをさらに含むことを特徴とする、請求項４に記載のデータ処理方法。
【請求項６】
前記状態情報に基づいて、前記第１のＤＭＡコマンドのデータ転送が完了したかどうかの指示を前記プロセッサに戻すことを特徴とする、請求項５に記載のデータ処理方法。
【請求項７】
前記ＤＭＡテーブルが、前記識別子、データが格納された前記メモリの開始アドレス、前記データが格納された前記メモリの終了アドレス、前記メモリへ及び前記メモリからのデータ転送の方向、及び状態情報の少なくとも１つを含むことを特徴とする、請求項１〜６のいずれかの項に記載のデータ処理方法。
【請求項８】
前記ＤＭＡテーブルが、ソフトウェアにより実装されたテーブルであることを特徴とする、請求項１〜７のいずれかに記載のデータ処理方法。
【請求項９】
処理システムのプロセッサにおいて多数のプログラムタスクを含むソフトウェアプログラムを実行するステップと、
前記処理システムの第１のメモリから第２のメモリへデータを転送するための第１のＤＭＡコマンドを発行するステップと、
前記処理システムのスヌープコントローラへ前記第１のＤＭＡコマンドに関する１つ以上の状態リクエストを発行するステップと、
前記状態リクエストの少なくとも１つへの応答が、前記第１のメモリから前記第２のメモリへのデータ転送が完了したことを示すまで、１つ以上の処理タスクを延期するステップとを含むことを特徴とする、データ処理方法。
【請求項１０】
前記プロセッサから前記第１のＤＭＡコマンドを受信するステップと、
前記第１のＤＭＡコマンドに関する状態情報を含むＤＭＡテーブルのエントリに関連する識別子を、前記第１のＤＭＡコマンドに割り当てるステップとをさらに含むことを特徴とする、請求項９に記載のデータ処理方法。
【請求項１１】
前記第１のＤＭＡコマンドに関連するデータ転送が完了していないことを示すために、前記第１のＤＭＡコマンドに関連する前記ＤＭＡテーブルの前記エントリの状態情報を初期化するステップをさらに含むことを特徴とする、請求項１０に記載のデータ処理方法。
【請求項１２】
前記第１のＤＭＡコマンドに関連するデータ転送が完了したとき、前記第１のＤＭＡコマンドに関連する前記ＤＭＡテーブルの前記エントリの状態情報を更新するステップをさらに含むことを特徴とする、請求項１１に記載のデータ処理方法。
【請求項１３】
前記プロセッサから前記第１のＤＭＡコマンドに関する状態リクエストを受信するステップと、
前記状態情報を獲得するために、前記第１のＤＭＡコマンドに関連する前記ＤＭＡテーブルの前記エントリをチェックするステップと、
前記状態情報に基づいて、前記第１のＤＭＡコマンドのデータ転送が完了したかどうかの指示を前記プロセッサに戻すステップとをさらに含むことを特徴とする、請求項１１に記載のデータ処理方法。
【請求項１４】
プロセッサの第１のメモリから第２のメモリへのＤＭＡデータ転送が完了したという指示を受信するステップと、
前記ＤＭＡデータ転送が完了したことを示すために、前記ＤＭＡデータ転送に関連するＤＭＡテーブルのエントリの状態情報を更新するステップとを含むことを特徴とする、データ処理方法。
【請求項１５】
前記ＤＭＡテーブルが、ソフトウェアにより実装されたテーブルであることを特徴とする、請求項１４に記載のデータ処理方法。
【請求項１６】
前記第１のメモリから前記第２のメモリへのＤＭＡデータ転送が完了したかどうかを決定するために、ハードウェアにより実装されたＤＭＡコマンドキューをモニタリングするステップをさらに含むことを特徴とする、請求項１４に記載のデータ処理方法。
【請求項１７】
前記ＤＭＡテーブルの前記エントリの状態情報を更新するために、前記ＤＭＡテーブルに前記ハードウェアにより実装されたＤＭＡコマンドキューを同期するステップをさらに含むことを特徴とする、請求項１６に記載のデータ処理方法。
【請求項１８】
前記ＤＭＡテーブルが、ソフトウェアにより実装されたテーブルであるであることを特徴とする、請求項１７に記載のデータ処理方法。
【請求項１９】
前記プロセッサから前記ＤＭＡコマンドに関する状態リクエストを受信するステップと、
前記状態情報を獲得するために、前記ＤＭＡコマンドに関連する前記ＤＭＡテーブルの前記エントリをチェックするステップと、
前記状態情報に基づいて、前記ＤＭＡコマンドのデータ転送が完了したかどうかの指示を前記プロセッサに戻すステップと、
の少なくとも１つをさらに含むことを特徴とする、請求項１４に記載のデータ処理方法。
【請求項２０】
ＤＭＡコマンドに関する状態情報を含むＤＭＡテーブルのエントリに関連する識別子を、前記ＤＭＡコマンドに割り当てるステップと、
前記ＤＭＡコマンドによって規定されたＤＭＡデータ転送が完了したという指示を受信するステップと、
前記ＤＭＡデータ転送が完了したことを示すために、ＤＭＡデータ転送に関連する前記ＤＭＡテーブルの前記エントリの状態情報を更新するステップとを含む動作を処理システムのプロセッサに実行させることを特徴とする、コンピュータプログラム。
【請求項２１】
ＤＭＡデータ転送が完了したかどうかを決定するために、ハードウェアにより実装されたＤＭＡコマンドキューをモニタリングするステップをさらに含むことを特徴とする、請求項２０に記載のプログラム。
【請求項２２】
前記ＤＭＡテーブルの前記エントリの状態情報を更新するために、前記ＤＭＡテーブルに前記ハードウェアにより実装されたＤＭＡコマンドキューを同期するステップをさらに含むことを特徴とする、請求項２１に記載のプログラム。
【請求項２３】
前記ＤＭＡテーブルが、ソフトウェアにより実装されたテーブルであることを特徴とする、請求項２０〜２２のいずれかの項に記載のプログラム。
【請求項２４】
前記プロセッサから前記ＤＭＡコマンドに関する状態リクエストを受信するステップと、
前記状態情報を獲得するために、前記ＤＭＡコマンドに関連する前記ＤＭＡテーブルの前記エントリをチェックするステップと、
前記状態情報に基づいて、前記ＤＭＡコマンドのデータ転送が完了したかどうかの指示を前記プロセッサに戻すステップと、
の少なくとも１つをさらに含むことを特徴とする、請求項２０に記載のプログラム。
【請求項２５】
前記ＤＭＡテーブルが、前記識別子、データが格納された前記メモリの開始アドレス、前記データが格納された前記メモリの終了アドレス、前記メモリへ及び前記メモリからのデータ転送の方向、及び状態情報のうち少なくとも１つを含むことを特徴とする、請求項２０に記載のプログラム。
【請求項２６】
前記ＤＭＡテーブルが、ソフトウェアにより実装されたテーブルであることを特徴とする、請求項２４又は２５に記載のプログラム。
【請求項２７】
処理システムのプロセッサにおいて多数のプログラムタスクを含むソフトウェアプログラムを実行するステップと、
前記処理システムの第１のメモリから第２のメモリへデータを転送するための第１のＤＭＡコマンドを発行するステップと、
前記処理システムのスヌープコントローラへ前記第１のＤＭＡコマンドに関する１つ以上の状態リクエストを発行するステップと、
前記状態リクエストの少なくとも１つへの応答が、前記第１のメモリから前記第２のメモリへのデータ転送が完了したことを示すまで、１つ以上の処理タスクを延期するステップとを含むアクションを処理システムのプロセッサに実行するように動作可能であることを特徴とする、ソフトウェアプログラムを含むプログラム。
【請求項２８】
請求項２０〜２７のいずれかの項に記載のプログラムが記録されたコンピュータ読み取り可能な記録媒体。
【請求項２９】
メインメモリと機能的に接続可能な少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサに連結されたローカルメモリと、
前記少なくとも１つのプロセッサによって発行された１つ以上のＤＭＡコマンドを格納するように動作可能なＤＭＡコマンドキューと、
前記ＤＭＡコマンドキューに格納された前記ＤＭＡコマンドの各々に関連する少なくとも１つのエントリを含むＤＭＡテーブルとを含み、前記エントリの１つ以上が、関連するＤＭＡコマンドのＤＭＡデータ転送が完了したかどうかに関する状態情報を含むことを特徴とする、データ処理装置。
【請求項３０】
前記ＤＭＡコマンドのＤＭＡデータ転送が完了したかどうかの指示を受信するように動作可能なスヌープコントローラをさらに含むことを特徴とする、請求項２９に記載のデータ処理装置。
【請求項３１】
前記スヌープコントローラが、前記関連するＤＭＡデータ転送が完了したかどうかに応じて、前記ＤＭＡテーブルの前記エントリの状態情報を更新するようにさらに動作可能であることを特徴とする、請求項３０に記載のデータ処理装置。
【請求項３２】
前記スヌープコントローラが、前記ＤＭＡコマンドを前記ＤＭＡテーブルの対応するエントリに関連させる識別子を前記ＤＭＡコマンドに割り当てるようにさらに動作可能であることを特徴とする、請求項３０に記載のデータ処理装置。
【請求項３３】
前記スヌープコントローラが、前記ＤＭＡデータ転送が完了したかどうかを決定するために、前記ＤＭＡコマンドキューをモニタリングするようにさらに動作可能であることを特徴とする、請求項３１又は３２に記載のデータ処理装置。
【請求項３４】
前記スヌープコントローラが、前記ＤＭＡテーブルのエントリの状態情報を更新するために、前記ＤＭＡテーブルに前記ＤＭＡコマンドキューを同期するようにさらに動作可能であることを特徴とする、請求項３３に記載のデータ処理装置。
【請求項３５】
前記ＤＭＡコマンドキューが、ハードウェアにより実装されたキューである、前記ＤＭＡテーブルが、ソフトウェアにより実装されたテーブルである、のうちの少なくとも１つの条件を満たすことを特徴とする、請求項３４に記載のデータ処理装置。
【請求項３６】
前記スヌープコントローラが、
前記プロセッサから前記ＤＭＡコマンドに関する１つ以上の状態リクエストを受信するステップと、
前記エントリの前記状態情報を獲得するために、前記ＤＭＡコマンドに関連する前記ＤＭＡテーブルの前記エントリをチェックするステップと、
前記状態情報に基づいて、前記ＤＭＡコマンドのデータ転送が完了したかどうかの指示を前記プロセッサに戻すステップと、
の少なくとも１つを実行するようにさらに動作可能であることを特徴とする、請求項３０に記載のデータ処理装置。
【請求項３７】
前記メインメモリに機能的に接続可能な複数のパラレルプロセッサをさらに含み、各プロセッサが、ハードウェアキャッシュメモリではないローカルメモリと、命令実行パイプラインとを含むことを特徴とする、請求項２９〜３６のいずれかの項に記載のデータ処理装置。
【請求項３８】
各プロセッサが、ローカルメモリ内の１つ以上のプログラムを実行可能であり、各プロセッサが、前記メインメモリ内の前記１つ以上のプログラムを実行可能ではないことを特徴とする、請求項３７に記載のデータ処理装置。
【請求項３９】
前記プロセッサ及び関連するローカルメモリが、共通の半導体基板上に配置されることを特徴とする、請求項３７又は３８に記載のデータ処理装置。
【請求項４０】
前記プロセッサ、関連するローカルメモリ、及び前記メインメモリが、共通の半導体基板上に配置されることを特徴とする、請求項３７〜３９のいずれかの項に記載のデータ処理装置。
【請求項４１】
メインメモリと機能的に接続可能な少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサに連結されたローカルメモリと、
前記少なくとも１つのプロセッサによって発行された１つ以上のＤＭＡコマンドを格納するように動作可能なＤＭＡコマンドキューと、
前記ＤＭＡコマンドキューに格納された前記ＤＭＡコマンドの各々に関連する少なくとも１つのエントリを含むＤＭＡテーブルとを含み、前記エントリの１つ以上が、関連するＤＭＡコマンドのＤＭＡデータ転送が完了したかどうかに関する状態情報を含むことを特徴とする、データ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチ処理システム内においてデータを転送するための方法、装置、及びシステムに関する。
【背景技術】
【０００２】
最先端のコンピュータアプリケーションは、リアルタイムのマルチメディア機能を伴っているために、近年はデータスループットが高くより高速なコンピュータが常に望まれている。グラフィックアプリケーションは処理システムへの要求が大きいアプリケーションの１つであり、その理由は、グラフィックアプリケーションが所望のビジュアル結果を実現するために、比較的短時間で非常に多くのデータアクセス、データの演算処理、及びデータ操作を要求するからである。これらのアプリケーションは、１秒間に数千メガビットのデータ処理等の非常に高速な処理速度を要求する。シングルプロセッサを採用し、高速の処理速度を実現している処理システムもある一方で、マルチプロセッサアーキテクチャを利用して実装されている処理システムもある。マルチプロセッサシステムでは、複数のプロセッサが並列に（あるいは少なくとも協調して）動作し、所望の処理結果を実現することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
従来の処理システムにおいては、１つのメモリから、他のメモリ等の別のデバイスへとデータを転送するために、ダイレクトメモリアクセス（ＤＭＡ：Direct Memory Access）技術が採用されているものがある。ＤＭＡ転送の完了に比較的長い時間がかかることがあるため、待ち状態のＤＭＡコマンドを格納するためにＤＭＡコマンドキューが使用されるものもある。残念ながら、ＤＭＡコマンドを発行したアプリケーションプログラムがＤＭＡ転送の状態を知ることができないと、処理スループットが非効率化する。
【課題を解決するための手段】
【０００４】
本発明の１つ以上の形態によれば、特定のＤＭＡコマンドの状態の通知を受けるためのアプリケーションプログラムが与えられる。例えば、アプリケーションプログラムは、ＤＭＡ転送が完了するのを待機しながら、他のタスクを実行してもよい。本発明により、アプリケーションプログラムが任意の特定のＤＭＡコマンドに関する状態情報を獲得するための機構が提供される。
【０００５】
本発明の１つ以上の実施形態では、ハードウェアＤＭＡコマンドキュー、ソフトウェアＤＭＡ状態テーブル、及びソフトウェアスヌープコントローラを含んでもよい。ハードウェアＤＭＡコマンドキューは、ＤＭＡコマンド及び各々のタグ識別子を含む。ソフトウェアＤＭＡ状態テーブルは、好ましくは、処理システムのローカルメモリに配置され、ＤＭＡキューにあるＤＭＡコマンドの各々に対して、対応するタグ、開始アドレス、終了アドレス、インバウンド／アウトバウンド指定、及び状態を含む。
【０００６】
プロセッサがＤＭＡコマンドを呼び出すと、ソフトウェアスヌープコントローラは、タグを割り当て、エントリをソフトウェアＤＭＡ状態テーブルに追加することによって、コマンドを登録する。ＤＭＡハンドラがコールされると、ソフトウェアスヌープコントローラは、ソフトウェアＤＭＡ状態テーブルにあるエントリの状態を更新する（同期させる）。プロセッサで実行中のアプリケーションプログラムは、リクエストをソフトウェアスヌープコントローラに発行することによって、ローカルメモリのアドレスで「覗いて（ｐｅｅｋ）」もよい。ソフトウェアスヌープコントローラは、アドレスをＤＭＡ状態テーブルの開始／終了アドレスと比較することによって、どのＤＭＡコマンドがそのアドレスに関連するかを決定する。次いで、ＤＭＡ状態テーブルは、状態（ビジー／完了）をアプリケーションプログラムに戻す。これにより、アプリケーションプログラムは、そのアドレスでデータを使用してもよいかどうか、待機すべきかどうか、又は他のタスクを実行すべきかどうかに関する情報を得る。好ましくは、ＤＭＡ転送の固有の待ち時間は隠される。
【０００７】
本発明の１つ以上のさらなる実施形態によれば、処理システムのメモリ内に格納されたデータに対して、処理システムのプロセッサから第１のＤＭＡコマンドを受信し、第１のＤＭＡコマンドに関する状態情報を含むＤＭＡテーブルのエントリに関連する識別子を、第１のＤＭＡコマンドに割り当てる方法及び装置が提供される。
【０００８】
ＤＭＡテーブルは、識別子、データが格納されたメモリの開始アドレス、データが格納されたメモリの終了アドレス、メモリへ及びメモリからのデータ転送の方向、及び状態情報の少なくとも１つを含んでもよい。
【０００９】
本発明の１つ以上のさらなる実施形態によれば、処理システムのプロセッサにおいて多数のプログラムタスクを含むソフトウェアプログラムを実行し、処理システムの第１のメモリから第２のメモリへデータを転送するための第１のＤＭＡコマンドを発行し、処理システムのスヌープコントローラへ第１のＤＭＡコマンドに関する１つ以上の状態リクエストを発行し、状態リクエストの少なくとも１つへの応答が、第１のメモリから第２のメモリへのデータ転送が完了したことを示すまで、１つ以上の処理タスクを延期してもよい。
【００１０】
本発明の１つ以上のさらなる実施形態によれば、方法及び装置が、プロセッサの第１のメモリから第２のメモリへのＤＭＡデータ転送が完了したという指示を受信し、ＤＭＡデータ転送が完了したことを示すために、ＤＭＡデータ転送に関連するＤＭＡテーブルのエントリの状態情報を更新してもよい。
【００１１】
本発明の１つ以上のさらなる実施形態によれば、装置が、メインメモリと動作通信可能な少なくとも１つのプロセッサと、少なくとも１つのプロセッサに連結されたローカルメモリと、少なくとも１つのプロセッサによって発行された１つ以上のＤＭＡコマンドを格納するように動作可能なＤＭＡコマンドキューと、ＤＭＡコマンドキューに格納されたＤＭＡコマンドの各々に関連する少なくとも１つのエントリを含むＤＭＡテーブルとを含み、エントリの１つ以上が、関連するＤＭＡコマンドのＤＭＡデータ転送が完了したかどうかに関する状態情報を含んでもよい。
【００１２】
この装置は、ＤＭＡコマンドのＤＭＡデータ転送が完了したかどうかの指示を受信するように動作可能なスヌープコントローラをさらに含んでもよい。スヌープコントローラは、関連するＤＭＡデータ転送が完了したかどうかに応じて、ＤＭＡテーブルのエントリの状態情報を更新するようにさらに動作可能であってもよい。スヌープコントローラは、ＤＭＡコマンドをＤＭＡテーブルの対応するエントリに関連させる識別子をＤＭＡコマンドに割り当てるようにさらに動作可能であってもよい。スヌープコントローラは、ＤＭＡデータ転送が完了したかどうかを決定するために、ＤＭＡコマンドキューをモニタリングするようにさらに動作可能であってもよい。スヌープコントローラは、ＤＭＡテーブルのエントリの状態情報を更新するために、ＤＭＡテーブルにＤＭＡコマンドキューを同期するようにさらに動作可能であってもよい。
【００１３】
好ましくは、ＤＭＡコマンドキューがハードウェアにより実装されたキューである、ＤＭＡテーブルがソフトウェアにより実装されたテーブルである、のうちの少なくとも一つの条件がみたされる。
【００１４】
スヌープコントローラは、好ましくは、ＤＭＡコマンドに関してプロセッサから１つ以上の状態リクエストを受信する、エントリの状態情報を獲得するためにＤＭＡコマンドに関連するＤＭＡテーブルのエントリをチェックする、状態情報に基づいてＤＭＡコマンドのデータ転送が完了したかどうかの指示をプロセッサに戻す、のうちの少なくとも１つを実行するよう動作可能である。
【００１５】
以下、添付の図面とともに本発明について記載することで、他の態様、特徴、利点などが当業者に明らかになるであろう。
【００１６】
様々な本発明の態様を例示するために、図面に、現在好ましいものである形態が示されているが、本発明は、図示した配置及び手段そのものに限定されるものではないことを理解されたい。
【発明を実施するための最良の形態】
【００１７】
図１には、本発明の１つ以上の特徴を実行するために適応されてもよい処理システム１００が示されている。なお、図面において、同じ要素には同じ番号が付されている。簡明のため、図１のブロック図は、装置１００を例示するものとして参照され、本願明細書において記載されるが、本願明細書は、同等の効力を有する方法の様々な態様に容易に適用されてもよいことを理解されたい。
【００１８】
装置１００は、好ましくは、プロセッサ１０２、ローカルメモリ１０４、メインメモリ１０６（例えば、ＤＲＡＭ）、及びバス１０８を含む。プロセッサ１０２は、システムメモリ１０６からのデータをリクエスト可能であり、所望の結果を実現するためにデータを操作可能である任意の既知の技術を利用して実装されうる。例えば、プロセッサ１０２は、標準的なマイクロプロセッサ、分散マイクロプロセッサなどを含む、ソフトウェア及び／又はファームウェアを実行可能である任意の既知のマイクロプロセッサを用いて実装されうる。一例として、プロセッサ１０２は、グレースケール情報、カラー情報、テクスチャデータ、多角形情報、ビデオフレーム情報などを含むピクセルデータなどのデータをリクエスト及び操作可能であるグラフィックプロセッサであってもよい。
【００１９】
ローカルメモリ１０４は、プロセッサがプログラムコードを実行し、システムメモリ１０６とは対照的に、ローカルメモリ１０４内のデータを操作しうるように、プロセッサ１０２に近接した位置に設けられる。ローカルメモリ１０４は、ハードウェアキャッシュメモリ機能を実行するために、好ましくは、オンチップ又はオフチップのハードウェアキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラなどがない点で、好ましくは、従来のハードウェアキャッシュメモリではない。オンチップ空間が制限されることがあるため、ローカルメモリ１０４のサイズは、システムメモリ１０６よりかなり小さくなることもある。プロセッサ１０２は、好ましくは、プログラムの実行及びデータの操作のために、システムメモリ１０６からバス１０８上をローカルメモリ１０４へデータ（プログラムデータを含んでもよい）をコピーするようにデータアクセスリクエストを与える。データアクセスを容易にするための機構は、好ましくは、メモリインターフェース１１０内のダイレクトメモリアクセスコントローラ（ＤＭＡＣ：Direct Memory Access Controller）を利用して実装される。
【００２０】
図２をさらに参照すると、システム１００は、ＤＭＡスヌープコントローラ２００、ＤＭＡコマンドキュー２０２、ＤＭＡテーブル２０４を含んでもよい。ＤＭＡコマンドキュー２０２は、例えば、パス２０６によってＤＭＡスヌープコントローラ２００に作動式に連結されるのに対して、ＤＭＡテーブル２０４は、パス２０８によって、ＤＭＡスヌープコントローラ２００に作動式に連結される。
【００２１】
ＤＭＡコマンドキュー２０２は、好ましくは、プロセッサ１０２によって発行された１つ以上のＤＭＡコマンド２１２を格納するように作動される。ＤＭＡコマンド２１２は、転送されるデータの開始アドレス、転送されるデータの終了アドレス、転送が行われるべき場所を示す方向（ソースから宛先へ）の指示の１つ以上を含んでもよい。ＤＭＡコマンドキュー２０２はまた、好ましくは、各ＤＭＡコマンド２１２に関連するタグ２１０（又は識別子）を含む。タグ２１０は、好ましくは、対応するＤＭＡコマンド２１２をＤＭＡテーブル２０４の１つ以上のエントリに関連付ける。
【００２２】
ＤＭＡテーブル２０４は、好ましくは、複数のエントリを含み、各エントリは、タグ２１４、転送されるデータの開始アドレス２１６、転送されるデータの終了アドレス２１８、方向２２０（又は転送されるデータのソースと宛先を示す他の指標）、状態情報２２２のうち１つ以上を含む。各エントリのタグ２１４は、好ましくは、ＤＭＡコマンドキュー２０２内の対応するタグ２１０と関連付けられる。従って、ＤＭＡコマンド２１２の１つ以上は、ＤＭＡテーブル２０４の１つ以上の対応するエントリに関連付けられてもよい。状態情報２２２は、好ましくは、対応するＤＭＡコマンド２１２のデータ転送が完了したかどうかを示す。
【００２３】
好ましくは、ＤＭＡコマンドキューは、例えば、１つ以上のハードウェアレジスタ及び関連する論理回路によって、ハードウェアにより実装される。ＤＭＡテーブル２０４は、好ましくは、ソフトウェアによって実装され、例えば、システム１００のローカルメモリ１０４内に格納されてもよい。
【００２４】
システム１００の上記の特徴は、本発明の１つ以上の実施形態によって実行されうる１つ以上のプロセスステップを示す図３の流れ図を参照すると、より深く理解されうる。アクション３００において、ＤＭＡコマンド２１２が、例えば、プロセッサ１０２によって呼び出されてもよい。ＭＩＦ１１０のＤＭＡＣハンドラは、好ましくは、公知のダイレクトメモリアクセス技術を採用することによってＤＭＡコマンド２１２を与える。さらに、ＤＭＡコマンド２１２は、好ましくは、登録されてもよいようにＤＭＡスヌープコントローラ２００によって受信される（アクション３０２）。登録においては、タグ２１０がＤＭＡコマンドキュー２０２内のＤＭＡコマンド２１２と関連付けられてもよいように、タグ２１０をＤＭＡコマンド２１２に割り当てることを含んでもよい。この登録ではまた、エントリをＤＭＡ状態テーブル２０４に付加することを伴ってもよく、その場合、エントリは、対応するタグ２１４及び少なくとも状態情報２２２を含む。最初、状態情報２２２は、ＤＭＡコマンド２１２に関連するデータ転送が完了していないことを示すであろう。アクション３０４において、ＤＭＡＣは、ＤＭＡコマンド２１２及びタグ２１０をＤＭＡコマンドキュー２０２に付加してもよい。この時点で、ＤＭＡコマンド２１２は、状態情報２２２に関してＤＭＡテーブル２０４の関連するエントリ（又は複数のエントリ）と同期させてもよい（又は同期させる）（アクション３０６）。
【００２５】
次いで、プロセスフローは、ノードＡに進んでもよく、そこから少なくとも３つの経路をとりうる。アクション３０８において、別のＤＭＡコマンド２１２が呼び出されたかどうかに関する決定がなされてもよい。決定の結果が肯定的であれば、プロセスフローは、好ましくは、アクション３００に戻り、アクション３００〜３０６が再度実行される。アクション３０８における決定の結果が否定的であれば、プロセスフローは、好ましくは、ノードＡに戻る。
【００２６】
アクション３１０において、好ましくは、ＤＭＡハンドラへのコールが発生したかどうかに関する決定がなされる。これは、ＤＭＡＣが、特定のＤＭＡコマンド２１２に関連するデータ転送を完了した状況であってもよい。アクション３１０での決定の結果が肯定的であれば、プロセスフローは、好ましくは、アクション３０６に戻る。アクション３０６において、ＤＭＡスヌープコントローラ２００は、好ましくは、ＤＭＡコマンドキュー２０２と、そのコマンド２１２に関連するＤＭＡテーブル２０４の１つ以上のエントリとの間の同期を容易にする。同期は、好ましくは、ＤＭＡコマンド２１２に関連するデータ転送が完了したことを示すために、所与のエントリの状態情報２２２を変更することを伴う。同期の詳細はまた、ＤＭＡテーブル２０４の適切なエントリ又は複数のエントリを見つけ出すことを含んでもよい。これは、ＤＭＡコマンドキュー２０２内のＤＭＡコマンド２１２に関連するタグ２１０を特定し、ＤＭＡテーブル２０４の対応するタグ（又は複数のタグ）２１４を決定することによって実現されてもよい。一方で、アクション３１０における決定の結果が否定的であれば、プロセスフローは、好ましくは、ノードＡに戻る。
【００２７】
アクション３１２において、好ましくは、ＤＭＡスヌープリクエストが、ＤＭＡスヌープコントローラ２００によって受信されたかどうかに関する決定がなされる。一例として、プロセッサ１０２は、ＤＭＡコマンド２１２の１つ以上が、例えば、それに関連するデータ転送を完了させることによって与えられたかどうかを見い出すために、ＤＭＡスヌープコントローラ２００にスヌープリクエストを発行してもよい。スヌープリクエストは、データの転送先又は転送元のアドレスを指定してもよい。アクション３１２における決定の結果が否定的であれば、プロセスフローは、好ましくは、ノードＡに戻る。アクション３１２における決定の結果が肯定的であれば、ＤＭＡスヌープコントローラ２００は、好ましくは、所与のＤＭＡコマンド２１２に関連するデータ転送が完了したかどうかを決定するために、ＤＭＡテーブル２０４から状態情報を獲得する。これは、ＤＭＡコマンドキュー２０２をチェックすることによって、所与のＤＭＡコマンド２１２に関連するタグ２１０を決定することを伴ってもよい。一例として、スヌープリクエストは、転送されるデータの開始アドレスと、転送されるデータの終了アドレスの少なくとも１つを含んでもよい。ＤＭＡスヌープコントローラ２００は、ＤＭＡコマンドキュー２０２内の対応するＤＭＡコマンド２１２を見い出して、関連するタグ２１０を獲得するために、これらのアドレスの１つ以上を利用してもよい。ＤＭＡスヌープコントローラ２００がタグ２１０を有すると、ＤＭＡテーブル２０４内の関連するタグ２１４を見い出すために、このようなタグを利用してもよい。アクション３１６において、ＤＭＡスヌープコントローラ２００は、好ましくは、タグ２１４に関連するエントリから状態情報を引き出し、データ転送が完了したかどうかの指示をプロセッサ１０２に戻す。
【００２８】
好ましくは、プロセッサ１０２は、多数のプログラムタスクを含む１つ以上のソフトウェアプログラムを実行していてもよい。ソフトウェアプログラムを実行した結果として、プロセッサ１０２は、データがメインメモリ１０６からローカルメモリ１０４へ、又はその逆へ転送されるように、１つ以上のＤＭＡコマンド２１２を発行してもよい。プロセッサ１０２は、ＤＭＡスヌープコントローラ２００へスヌープリクエストを発行して、そこから状態更新を受け取ることによって、ＤＭＡコマンドの１つ以上の状態の指示を獲得してもよい。プロセッサ１０２は、転送されるＤＭＡデータに関する待ち時間情報を隠すなど、処理の効率を上げるために、ソフトウェアプログラムの実行中に適切なステップをとるようにこの情報を利用してもよい。例えば、プロセッサ１０２は、１つ以上の状態リクエストに対する応答が、あるＤＭＡコマンドに関連するデータ転送が完了したことを示すまで、１つ以上の処理タスクを延期してもよい。このような延期の間、プロセッサ１０２は、他の処理タスクを実行してもよく、及び／又は、パワーの消失を低減するために、スリープモードに入ってもよい。
【００２９】
図４を参照すると、ＤＭＡデータ転送の待ち時間を隠すために、ＤＭＡスヌープコントローラ２００、ＤＭＡコマンドキュー２０２、及びＤＭＡテーブル２０４がどのように使用されてよいかのさらなる例が示されている。特に、図４は、図１の処理システム１００を利用して実施されてもよいデータストリーム結合プロセスのブロック図である。特に、プロセッサ１０２及びローカルメモリ１０４は、複数のダブルバッファ４００、４０２、及び４０４とともに、結合プロセス４０６とを実施するために利用されてもよい。（他の実施形態において、以下に記載するように、２つ以上のプロセッサを採用してもよい。）図４のエレメントは、ハードウェア／ソフトウェアの組み合わせを利用して与えられることを理解されたい。ダブルバッファ４００などの各ダブルバッファは、第１のバッファＡ（アドレス４００Ａで開始）と、第２のバッファＢ（アドレス４００Ｂで開始）を含む。
【００３０】
第１のダブルバッファ４００は、第１のデータストリームを受信し、第２のダブルバッファ４０２は、第２のデータストリームを受信する。データストリームは、結合プロセス４０６によって結合され、第３のダブルバッファ４０４に送り出されて、出力データストリームを出力する。このような結合プロセスは、グラフィックプロセスにおいてイメージデータの対応するフレームを組み合わせるために使用されてもよい。説明を目的として、第１のデータストリーム及び第２のデータストリームは、ＤＭＡデータ転送によって、メインメモリ１０６から、又は何らかの外部のソース（図示せず）から受信されるものとする。さらに、出力データストリームは、ＤＭＡ転送によってメインメモリ１０６又はメモリ空間の何らかの他の部分に格納されるものとする。
【００３１】
第１及び第２のダブルバッファ４００、４０２の各々は、プロセッサ１０２によってＤＭＡＣに発行される対応するＤＭＡコマンド２１２によって、第１及び第２のデータストリームから対応するデータチャンクを受信しようとする。説明を目的として、ＤＭＡ転送のそれぞれの宛先は、第１のダブルバッファ４００のバッファＡの開始アドレス４００Ａと、第２のダブルバッファ４０２のバッファＡの開始アドレス４０２Ａへ向けたものであるものとする。次いで、プロセッサ１０２は、上述したように、時々ＤＭＡ転送の状態をチェックしながら、他のタスクを実行してもよい。
【００３２】
ＤＭＡ転送の１つに関する状態情報２２２が、例えば、第１のダブルバッファ４００のバッファＡの開始アドレス４００Ａに対して、データ転送が完了したことを示す場合、プロセッサ１０２は、状態情報２２２に応答するようにしてもよい。例えば、プロセッサ１０２は、バッファＡ、Ｂの役割を取り替え、転送用の別のデータチャンクを要求する別のＤＭＡコマンドを、バッファＢの開始アドレス４００Ｂに発行し、バッファＡに格納されたデータの処理（復元プロセスの実行など）を開始してもよい。バッファＢへのＤＭＡデータ転送の待機中、プロセッサ１０２は、その状態を獲得するために、ＤＭＡスヌープコントローラ２００へ１つ以上のスヌープ要求を発行してもよい。
【００３３】
一方で、プロセッサ１０２は、同様のスヌープリクエスト、バッファスワップ、第２のダブルバッファ４０２によって受信されている第２のデータストリームのデータに関するさらなるＤＭＡ転送リクエスト及びデータ処理を実行してもよい。それぞれのデータストリームのコンテンツが異なり、ＤＭＡ転送待ち時間が一定ではないため、ダブルバッファ４００及び４０２内のバッファスワップの頻度は変動することがある。しかしながら、特に、ＤＭＡスヌープコントローラ２００、ＤＭＡコマンドキュー２０２、及びＤＭＡテーブル２０４を使用することで、第１及び第２のデータストリームのそれぞれのチャンクの転送に関連するＤＭＡ転送待ち時間を隠すために、プロセッサ１０２は、多数のタスクを実行することができる。
【００３４】
第１のダブルバッファ４００のバッファＡのデータが処理され、第２のダブルバッファ４０２のバッファＡ内のデータが処理されると、結合プロセス４０６は、このようなデータを結合及び格納し、このデータは、第３のダブルバッファ４０４のバッファＡの開始アドレス４０４Ａで始まる。このように結合されたデータが、バッファＡにおいて安定したものである場合、プロセッサ１０２は、このようなデータのＤＭＡデータ転送を、例えば、メインメモリ１０６に発行してもよい。時々、プロセッサ１０２は、このようなＤＭＡコマンドの状態を決定するために、ＤＭＡスヌープコントローラ２００に１つ以上のスヌープリクエストを発行してもよい。状態情報２２２が、ＤＭＡデータ転送が完了したことを示すと、プロセッサ１０２は、さらなるデータ処理（例えば、データ圧縮）及びＤＭＡデータ転送が並列に実行されてもよいように、第３のダブルバッファ４０４のバッファＡ及びバッファＢのスワップを行ってもよい。このプロセスは、好ましくは、すべてのデータが結合され格納されるまで繰り返される。
【００３５】
図５を参照すると、ＤＭＡデータ転送の待ち時間を隠すために、ＤＭＡスヌープコントローラ２００、ＤＭＡコマンドキュー２０２、及びＤＭＡテーブル２０４がどのように使用されてもよいかのさらなる例が示されている。図５は、図１の処理システム１００を利用して実施されてもよいデータストリームデインターリーブプロセスのブロック図である。特に、プロセッサ１０２及びローカルメモリ１０４は、複数のダブルバッファ４０８、４１０、及び４１２とともに、デインターリーブプロセス４１４を実施するために利用されてもよい。（他の実施形態において、以下に記載するように、２つ以上のプロセッサが採用されてもよい。）
【００３６】
第１のダブルバッファ４０８は、入力データストリームを受信し、そのデータをデインターリーブプロセス４１４に送り出す。デインターリーブプロセスは、第１及び第２の出力データストリームを出力するためにすでに結合又はインターリーブされたデータチャンク（イメージデータのフレームなど）を分離してもよい。記述を目的として、入力データストリームが、ＤＭＡデータ転送によって、メインメモリ１０６から、又は何らかの外部ソース（図示せず）から受信されるものとする。さらに、第１及び第２の出力データストリームが、ＤＭＡデータ転送によって、メインメモリ１０６へ、又は何らかの外部ソース（図示せず）に転送されるものとする。
【００３７】
説明を目的として、入力データストリームを表すＤＭＡ転送の宛先は、第１のダブルバッファ４０８のバッファＡの開始アドレス４０８Ａ及びバッファＢのアドレス４０８Ｂに交互に向けられるものとする。ＤＭＡ転送の１つに関する状態情報２２２が、例えば、第１のダブルバッファ４０８のバッファＡの開始アドレス４０８Ａに対して、データ転送が完了したことを示す場合、プロセッサ１０２は、状態情報２２２に応答してもよい。例えば、プロセッサ１０２は、バッファＡ、Ｂの役割を取り替え、転送用の別のデータチャンクを要求する別のＤＭＡコマンドを、バッファＢの開始アドレス４０８Ｂに発行し、バッファＡに格納されたデータの処理（復元プロセスの実行など）を開始してもよい。バッファＢへのＤＭＡデータ転送の待機中、プロセッサ１０２は、その状態を獲得するために、ＤＭＡスヌープコントローラ２００へ１つ以上のスヌープ要求を発行してもよい。
【００３８】
デインターリーブプロセス４１４によって出力されたデインターリーブされたデータストリームは、第２及び第３のダブルバッファ４１０、４１２に入力される。デインターリーブプロセスが、イメージデータのフレームをそれぞれ出力すると仮定すると、このようなフレームは、第２及び第３のダブルバッファ４１０、４１２のバッファＡ及びバッファＢに交互に書き込まれてもよい。データが、例えば、第２のダブルバッファ４１０のバッファＡに存在すると、プロセッサ１２０は、圧縮又は何らかの他のデータ操作を実行してもよい。その時間の間、バッファＢのデータ（すでに圧縮したものと仮定した場合など）は、プロセッサ１０２によって発行されたＤＭＡコマンド２１２によって、メインメモリ１０６に転送されてもよい。バッファＢからのＤＭＡ転送に関する状態情報２２２が、データ転送が完了したことを示す場合、プロセッサ１０２は、バッファＡ、Ｂの役割を取り替え、バッファＡからメインメモリ１０６へのデータ転送をリクエストする別のＤＭＡコマンドを発行してもよい。再度言うが、バッファＡからのＤＭＡデータ転送の待機中、プロセッサ１０２は、その状態を獲得するために、ＤＭＡスヌープコントローラ２００へ１つ以上のスヌープ要求を発行してもよい。
【００３９】
一方で、プロセッサ１０２は、同様のスヌープリクエスト、バッファスワップ、第３のダブルバッファ４１２によって受信されている第２のデータストリームのデータに関するさらなるＤＭＡ転送リクエスト及びデータ処理を実行してもよい。それぞれのデータストリームのコンテンツが異なり、ＤＭＡ転送待ち時間が一定ではないため、ダブルバッファ４０８、４１０、及び４１２内のバッファスワップの頻度は変動することがある。しかしながら、特に、ＤＭＡスヌープコントローラ２００、ＤＭＡコマンドキュー２０２、及びＤＭＡテーブル２０４を使用することで、データストリームのデータ転送に関連するＤＭＡ転送待ち時間を隠すために、プロセッサ１０２は、多数のタスクを実行することができる。このプロセスは、好ましくは、すべてのデータが結合及び格納されるまで繰り返される。
【００４０】
図６は、上述した特徴の１つ以上及び本発明の１つ以上のさらなる実施形態を実施するのに適応されてもよいマルチ処理システム１００Ａを示す。システム１００Ａは、複数のプロセッサ１０２Ａ〜Ｄ、関連するローカルメモリ１０４Ａ〜Ｄ、及びバス１０８によって相互接続された共有メモリ１０６を含む。共有メモリ１０６はまた、本願明細書において、メインメモリ又はシステムメモリとして呼ぶこともある。一例として、４つのプロセッサ１０４を示しているが、本発明の趣旨及び範囲から逸脱することなく、任意の数のものが利用されてもよい。プロセッサ１０２の各々は、同様の構成のもの、又は異なる構成のものであってもよい。
【００４１】
ローカルメモリ１０４は、好ましくは、対応するプロセッサ１０２と同一のチップ（同一の半導体基板）上の位置にあるが、ローカルメモリ１０４は、好ましくは、ハードウェアキャッシュメモリ機能を実施するために、オンチップ又はオフチップハードウェアキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラなどがない点で、従来のハードウェアキャッシュメモリではない。
【００４２】
プロセッサ１０２は、好ましくは、プログラムの実行及びデータ操作のために、バス１０８上をシステムメモリ１０６から対応するローカルメモリ１０４へデータ（プログラムデータを含んでもよい）をコピーするためのデータアクセスリクエストを与える。データアクセスを容易にするための機構は、図示していないダイレクトメモリアクセスコントローラ（ＤＭＡＣ）を利用して実装される。各プロセッサのＤＭＡＣは、好ましくは、本発明の他の特徴に対して上述したように、実質的に同一の能力のものである。
【００４３】
システムメモリ１０６は、好ましくは、高帯域メモリ接続（図示せず）を介してプロセッサ１０２に連結されたダイナミックランダムアクセスメモリ（ＤＲＡＭ）である。システムメモリ１０６は、好ましくは、ＤＲＡＭであるが、メモリ１０６は、例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、光メモリ、ホログラフィックメモリなどの他の手段を用いて実装されてもよい。
【００４４】
各プロセッサ１０２は、好ましくは、論理命令がパイプライン式に処理される処理パイプラインを用いて与えられる。パイプラインは、命令が処理される任意の数のステージに分割されてもよいが、パイプラインは、一般的に、１つ以上の命令をフェッチし、命令を復号し、命令の間での依存性をチェックし、命令を発し、命令を実行する。これに関して、プロセッサ１０２は、命令バッファ、命令デコード回路、依存性チェック回路、命令発行回路、及び実行ステージを含んでもよい。
【００４５】
１つ以上の実施形態において、プロセッサ１０２及びローカルメモリ１０４は、共通の半導体基板上に配置されてもよい。１つ以上のさらに実施形態において、共有メモリ１０６はまた、共通の半導体基板上に配置されてもよく、別々に配置されてもよい。
【００４６】
１つ以上の他の実施形態において、プロセッサ１０２の１つ以上は、他のプロセッサ１０２に作動的に連結され、バス１０８上で共有メモリ１０６に連結可能であるメインプロセッサとして動作してもよい。メインプロセッサは、他のプロセッサ１０２によってデータの処理をスケジュールし調整を行ってもよい。しかしながら、他のプロセッサと異なり、メインプロセッサは、ハードウェアキャッシュメモリに連結されてもよく、ハードウェアキャッシュメモリは、共有メモリ１０６及びプロセッサ１０２のローカルメモリ１０４の１つ以上の少なくとも１つから獲得された動作可能なキャッシュデータである。メインプロセッサは、ＤＭＡ技術など、任意の既知の技術を利用して、プログラムの実行及びデータ操作を行うために、バス１０８上をシステムメモリ１０６からキャッシュメモリへデータ（プログラムデータを含んでもよい）をコピーするために、データアクセスリクエストを与えてもよい。
【００４７】
以下に本明細書で説明している１つ以上の特徴を実行するのに適した、マルチプロセッサシステムのための好ましいコンピュータアーキテクチャを説明する。１つ以上の実施形態によれば、マルチプロセッサシステムは、ゲームシステム、家庭用端末、ＰＣシステム、サーバーシステム、及びワークステーションなどのメディアリッチアプリケーションを、スタンドアローン処理、及び／又は分散処理するために動作することができる、シングルチップソリューションとして実装されうる。ゲームシステムや家庭用端末などのいくつかのアプリケーションでは、リアルタイムの演算処理は必須である。例えば、リアルタイムの分散ゲームアプリケーションでは、ユーザーにリアルタイムの経験をしていると思わせる程速く、１つ以上のネットワークイメージの復元、３Ｄコンピュータグラフィック、オーディオ生成、ネットワーク通信、物理的シミュレーション、及び人工知能処理が実行される必要がある。従って、マルチプロセッサシステムの各プロセッサは、短時間で、かつ予測可能時間でタスクを完了する必要がある。
【００４８】
このために、また、本コンピュータアーキテクチャによれば、マルチプロセッシングコンピュータシステムの全プロセッサは、共通の演算モジュール（あるいはセル）から構成される。この共通の演算モジュールは、構造が一貫しており、また好ましくは、同じ命令セットアーキテクチャを採用している。マルチプロセッシングコンピュータシステムは、１つ以上のクライアント、サーバー、ＰＣ、モバイルコンピュータ、ゲームマシン、ＰＤＡ、セットトップボックス、電気器具、デジタルテレビ、及びコンピュータプロセッサを使用する他のデバイスから形成されうる。
【００４９】
複数のコンピュータシステムもまた、所望に応じてネットワークのメンバーとなりうる。一貫モジュール構造により、マルチプロセッシングコンピュータシステムによるアプリケーション及びデータの効率的高速処理が可能になる。またネットワークが採用される場合は、ネットワーク上にアプリケーション及びデータの高速送信が可能にする。この構造はまた、大きさが様々なネットワークのメンバーの構築を単純化し、好ましくは、これらのメンバーのや処理能力を高め、また、好ましくは、これらのメンバーが処理するアプリケーションの準備を容易にする。
【００５０】
図７を参照すると、基本的な処理モジュールはプロセッサエレメント（ＰＥ）５００である。ＰＥ５００はＩ／Ｏインターフェース５０２、プロセッシングユニット（ＰＵ）５０４、及び複数のサブプロセッシングユニット５０８、すなわち、サブプロセッシングユニット５０８Ａ、サブプロセッシングユニット５０８Ｂ、サブプロセッシングユニット５０８Ｃ、及びサブプロセッシングユニット５０８Ｄを備えている。なお、好適には、ＰＵとしてパワーＰＣ（ＰＰＥ：Power PC Element）を、ＳＰＵとしてシナジスティックプロセッシングエレメント（ＳＰＥ：Synergistic Processing Element）を用いる。ローカル（あるいは内部）ＰＥバス５１２は、データ及びアプリケーションを、ＰＵ５０４、サブプロセッシングユニット５０８、及びメモリインターフェース５１１間に送信する。ローカルＰＥバス５１２は、例えば従来のアーキテクチャを備えることができ、又は、パケット−スイッチネットワークとして実装されうる。パケットスイッチネットワークとして実装される場合は、更なるハードウェアが必要であるものの、利用可能な帯域幅を増やす。
【００５１】
ＰＥ５００はデジタル論理回路を実装するよう様々な方法を用いて構成されうる。しかしながら、好ましくは、ＰＥ５００はＳＯＩ基板を用いた集積回路として構成でき、あるいは、シリコン基板に相補性金属酸化膜半導体（ＣＭＯＳ：Complementary Metal Oxide Semiconductor）を用いた単一の集積回路とすることも好適な構成である。基板の他の材料には、ガリウムヒ素、ガリウムアルミウムヒ素、及び、様々なドーパントを採用している他の、いわゆる、ＩＩＩ−Ｂ化合物を含む。ＰＥ５００はまた、高速単一磁束量子（ＲＳＦＱ：Rapid Single-flux-Quantum）論理回路などの超電導デバイスを用いて実装されうる。
【００５２】
ＰＥ５００は高帯域のメモリ接続５１６を介して、共有（メイン）メモリ５１４と密接に結合するよう構成できる。なお、メモリ５１４をオンチップ化してもよい。好ましくは、メモリ５１４はダイナミックランダムアクセスメモリ（ＤＲＡＭ：Dynamic Random Access Memory）であるが、メモリ５１４は例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ：Static Random Access Memory）、磁気ランダムアクセスメモリ（ＭＲＡＭ：Magnetic Random Access Memory）、光メモリ、ホログラフィックメモリなどとして、他の方法を用いて実装されうる。
【００５３】
ＰＵ５０４とサブプロセッシングユニット５０８は好ましくは、それぞれダイレクトメモリアクセス（ＤＭＡ）の機能を備えたメモリフローコントローラ（ＭＦＣ：Memory Flow Controller）と結合されており、該コントローラはメモリインターフェース５１１と共に、ＰＥ５００のＤＲＡＭ５１４とサブプロセッシングユニット５０８、ＰＵ５０４間のデータ転送を促進する。ＤＭＡＣ及び／又はメモリインターフェース５１１は、サブプロセッシングユニット５０８及びＰＵ５０４に一体化して、別個に配置されうる。更に、ＤＭＡＣの機能及び／又はメモリインターフェース５１１の機能は、１つ以上の（好ましくは全ての）サブプロセッシングユニット５０８及びＰＵ５０４に統合することができる。なお、ＤＲＡＭ５１４は、ＰＥ５００と一体化されて配置されてもよいし、ＰＥ５００とは別個で配置されてもよい。例えば、ＤＲＡＭ５１４は、実例で示しているように、チップ外に配置しても、あるいは一体化してオンチップ配置としてもよい。
【００５４】
ＰＵ５０４はデータ及びアプリケーションをスタンドアローン処理できる標準プロセッサなどでありうる。作動時、ＰＵ５０４は、好ましくは、サブプロセッシングユニットによるデータ及びアプリケーション処理をスケジューリングし、調整を行う。サブプロセッシングユニットは好ましくは、単一命令複数データ（ＳＩＭＤ：Single Instruction Multiple Data）プロセッサである。ＰＵ５０４の管理下、サブプロセッシングユニットは並列で、かつ独立して、これらのデータ及びアプリケーション処理を行う。ＰＵ５０４は好ましくは、ＲＩＳＣ（Reduced Instruction Set Computing）技術を採用しているマイクロプロセッサアーキテクチャであるパワーＰＣ（ＰｏｗｅｒＰＣ）コアを用いて実装される。ＲＩＳＣは、単純な命令の組合せを用いて、より複雑な命令を実行する。従って、プロセッサのタイミングは、単純で高速の動作に基づくものであり、マイクロプロセッサがより多くの命令を所定のクロック速度で実行できるようにする。
【００５５】
ＰＵ５０４はサブプロセッシングユニット５０８により、データ及びアプリケーション処理をスケジューリングし調整を行う、メインプロセッシングユニットの役割を果たしているサブプロセッシングユニット５０８のうちの、１つのサブプロセッシングユニットにより実装されうる。更に、プロセッサエレメント５００内には１つ以上の実装されたＰＵが存在しうる。なお、オンチップのＰＵを複数設けるようにしてもよい。
【００５６】
本モジュール構造によれば、特定のコンピュータシステムにおけるＰＥ５００の数は、そのシステムが要求する処理能力に基づく。例えば、サーバーにおけるＰＥ５００の数は４、ワークステーションにおけるＰＥ５００の数は２、ＰＤＡにおけるＰＥ５００の数は１とすることができる。特定のソフトウェアセルの処理に割当てられるＰＥ５００のサブプロセッシングユニット数は、セル内のプログラムやデータの複雑度や規模により決定される。このように、ＰＥはモジュール構造を有していることから拡張性が高く、搭載するシステムのスケール、パフォーマンスに応じて容易に拡張することができる。
【００５７】
図８に一般的なサブプロセッシングユニット（ＳＰＵ）５０８の好ましい構造および機能を例示する。ＳＰＵ５０８アーキテクチャは好ましくは、多目的プロセッサ（平均して高性能を広範なアプリケーションに実現するように設計されているもの）と、特殊目的プロセッサ（高性能を単一のアプリケーションに実現するように設計されているもの）間の間隙を埋める。ＳＰＵ５０８は、ゲームアプリケーション、メディアアプリケーション、ブロードバンドシステムなどに高性能を実現するように、また、リアルタイムアプリケーションのプログラマーに高度な制御を提供するように設計される。ＳＰＵ５０８は、グラフィックジオメトリーパイプライン、サーフェースサブディビジョン、高速フーリエ変換、画像処理キーワード、ストリームプロセッシング、ＭＰＥＧのエンコード／デコード、エンクリプション、デクリプション、デバイスドライバの拡張、モデリング、ゲーム物理学、コンテンツ制作、音響合成及び処理が可能である。
【００５８】
サブプロセッシングユニット５０８は２つの基本機能ユニットを有し、それらはＳＰＵコア５１０Ａ及びメモリフローコントローラ（ＭＦＣ）５１０Ｂである。ＳＰＵコア５１０Ａはプログラムの実行、データ操作、などを行い、一方でＭＦＣ５１０ＢはシステムのＳＰＵコア５１０ＡとＤＲＡＭ５１４の間のデータ転送に関連する関数を実施する。
【００５９】
ＳＰＵコア５１０Ａはローカルメモリ５５０、命令ユニット（ＩＵ：Instruction Unit）５５２、レジスタ５５４、１つ以上の浮動小数点実行ステージ５５６、及び１つ以上の固定小数点実行ステージ５５８を有している。ローカルメモリ５５０は好ましくは、ＳＲＡＭなどの、シングルポートのランダムメモリアクセスを用いて実装される。殆どのプロセッサはキャッシュの導入により、メモリへのレイテンシを小さくする一方で、ＳＰＵコア５１０Ａはキャッシュより小さいローカルメモリ５５０を実装している。更に、リアルタイムアプリケーション（及び本明細書に述べているように、他のアプリケーション）のプログラマーたちに一貫した、予測可能なメモリアクセスレイテンシを提供するため、ＳＰＵ５０８Ａ内のキャッシュメモリアーキテクチャは好ましくない。キャッシュメモリのキャッシュヒット／ミスという特徴のために、数サイクルから数百サイクルまでの、予測困難なメモリアクセス時間が生じる。そのような予測困難性により、例えばリアルタイムアプリケーションのプログラミングに望ましい、アクセス時間の予測可能性が低下する。ＤＭＡ転送をデータの演算処理にオーバーラップさせることで、ローカルメモリＳＲＡＭ５５０においてレイテンシの隠蔽を実現しうる。これにより、リアルタイムアプリケーションのプログラミングが制御しやすくなる。ＤＭＡの転送に関連するレイテンシと命令のオーバーヘッドが、キャッシュミスにサービスしているレイテンシのオーバーヘッドを超過していることから、ＤＭＡの転送サイズが十分に大きく、十分に予測可能な場合（例えば、データが必要とされる前にＤＭＡコマンドが発行される場合）に、このＳＲＡＭのローカルメモリ手法による利点が得られる。
【００６０】
サブプロセッシングユニット５０８のうちの、所定の１つのサブプロセッシングユニット上で実行しているプログラムは、ローカルアドレスを使用している関連のローカルメモリ５５０を参照する。しかしながら、ローカルメモリ５５０のそれぞれの場所はまた、システムのメモリマップ全体内に実アドレス（ＲＡ：Real Address）も割当てられる。これにより、プリビレッジソフトウェア（Privilege Software）はローカルメモリ５５０をプロセスの有効アドレス（ＥＡ：Effective Address）にマッピングする、ローカルメモリ５５０と別のローカルメモリ５５０間のＤＭＡ転送を促進する。ＰＵ５０４はまた、有効アドレスを用いてローカルメモリ５５０に直接アクセスすることができる。好ましい実施形態では、ローカルメモリ５５０は５５６キロバイトのストレージを有し、またレジスタ５５２の容量は１２８×１２８ビットである。
【００６１】
ＳＰＵコア５０４Ａは、好ましくは、論理命令がパイプライン式で処理される、プロセッシングパイプラインを用いて実装される。パイプラインは命令が処理されるいずれの数のステージに分けられうるが、一般にパイプラインは１つ以上の命令のフェッチ、命令のデコード、命令間の依存性チェック、命令の発行、及び、命令の実行ステップを有している。これに関連して、ＩＵ５５２は命令バッファ、命令デコード回路、依存性チェック回路、及び命令発行回路、を有する。
【００６２】
命令バッファは、好ましくは、ローカルメモリ５５０と結合され、また、フェッチされる際に一時的に命令を格納するように動作できる、複数のレジスタを備えている。命令バッファは好ましくは、全ての命令が一つのグループとしてレジスタから出て行く、つまり、実質的に同時に出て行くように動作する。命令バッファはいずれの大きさでありうるが、好ましくは、２あるいは３レジスタよりは大きくないサイズである。
【００６３】
一般に、デコード回路は命令を分解し、対応する命令の関数を実施する論理的マイクロオペレーションを生成する。例えば、論理的マイクロオペレーションは、算術論理演算、ローカルメモリ５５０へのロード及びストアオペレーション、レジスタソースオペランド、及び／又は即値データオペランドを特定しうる。デコード回路はまた、ターゲットレジスタアドレス、構造リソース、機能ユニット、及び／又はバスなど、命令がどのリソースを使用するかを示しうる。デコード回路はまた、リソースが要求される命令パイプラインステージを示す情報を与えることが出来る。命令デコード回路は好ましくは、命令バッファのレジスタ数に等しい数の命令を実質的に同時にデコードするように動作する。
【００６４】
依存性チェック回路は、所定の命令のオペランドがパイプラインの他の命令のオペランドに依存しているかどうかを判断するために試験を行う、デジタル論理回路を含む。その場合、所定の命令はそのような他のオペランドが（例えば、他の命令が実行の完了を許容することにより）アップデートされるまで、実行されることができない。依存性チェック回路は好ましくは、デコーダー回路１１２から同時に送られる複数の命令の依存性を判断する。
【００６５】
命令発行回路は浮動小数点実行ステージ５５６、及び／又は固定小数点実行ステージ５５８へ命令を発行するように動作することができる。
【００６６】
レジスタ５５４は好ましくは、１２８エントリのレジスタファイルなどの、相対的に大きな統一レジスタファイルとして実装される。これにより、レジスタが足りなくなる状態を回避するよう、レジスタリネーミングを必要としない、深くパイプライン化された高周波数の実装品が可能になる。一般に、リネーミング用ハードウェアには、処理システムのかなりの割合の領域と電力を消費する。その結果、ソフトウェアのループ展開、又は他のインターリーブ技術によりレイテンシがカバーされると、最新のオペレーションが実現されうる。
【００６７】
好ましくは、ＳＰＵコア５１０Ａはスーパースカラアーキテクチャであり、これにより１つ以上の命令がクロックサイクル毎に発行される。ＳＰＵコア５１０Ａは好ましくは、命令バッファから送られる同時命令の数、例えば２〜３命令（各クロックサイクル毎に２命令あるいは３命令が発行されることを意味する）に対応する程度まで、スーパースカラとして動作する。所望の処理能力に応じて、多数の、あるいは少数の浮動小数点実行ステージ５５６と、固定小数点実行ステージ５５８が採用される。好ましい実施形態では、浮動小数点実行ステージ５５６は１秒あたり３２０億の浮動小数点演算速度で演算し（３２ＧＦＬＯＰＳ）、また、固定小数点実行ステージ５５８は演算速度が１秒あたり３２０億回（３２ＧＯＰＳ）となっている。
【００６８】
ＭＦＣ５１０Ｂは、好ましくは、バスインターフェースユニット（ＢＩＵ：Bus Interface Unit）５６４、メモリ管理ユニット（ＭＭＵ：Memory Management Unit）５６２、及びダイレクトメモリアクセスコントローラ（ＤＭＡＣ：Direct Memory Access Controller）５６０を備えている。ＤＭＡＣ５６０は例外として、ＭＦＣ５１０Ｂは好ましくは、低電力化設計とするため、ＳＰＵコア５１０Ａやバス５１２と比べて半分の周波数で（半分の速度で）実行する。ＭＦＣ５１０Ｂはバス５１２からＳＰＵ５０８に入力されるデータや命令を処理するように動作することができ、ＤＭＡＣに対しアドレス変換を行い、また、データコヒーレンシーに対しスヌープオペレーションを提供する。ＢＩＵ５６４はバス５１２とＭＭＵ５６２及びＤＭＡＣ５６０間にインターフェースを提供する。従って、ＳＰＵ５０８（ＳＰＵコア５１０Ａ及びＭＦＣ５１０Ｂを含む）及びＤＭＡＣ５６０は、バス５１２と物理的に、及び／又は論理的に結合されている。
【００６９】
ＭＭＵ５６２は、好ましくは、メモリアクセスのために、実アドレスに有効アドレスを変換するように動作することができる。例えば、ＭＭＵ５６２は、有効アドレスの上位ビットを実アドレスビットに変換しうる。しかしながら下位のアドレスビットは好ましくは変換不能であり、また、実アドレスの形成及びメモリへのアクセスリクエストに使用する場合には、ともに論理的及び物理的なものと考えられる。１つ以上の実施形態では、ＭＭＵ５６２は、６４ビットのメモリ管理モデルに基づいて実装され、また、４Ｋ−、６４Ｋ−、１Ｍ−、及び１６Ｍ−バイトのページサイズを有する２６４バイトの有効アドレススペースと、２５６ＭＢのセグメントサイズを提供しうる。ＭＭＵ５６２は好ましくは、ＤＭＡコマンドに対し、２６５バイトまでの仮想メモリ、２４２バイト（４テラバイト）までの物理メモリをサポートするように動作することが出来る。ＭＭＵ５６２のハードウェアは、８−エントリでフルアソシエイティブのＳＬＢと、２５６−エントリと、４ウエイセットアソシエイティブのＴＬＢと、ＴＬＢに対してハードウェアＴＬＢのミスハンドリングに使用される４×４リプレースメント管理テーブル（ＲＭＴ：Replacement Management Table）と、を含む。
【００７０】
ＤＭＡＣ５６０は、好ましくは、ＳＰＵコア５１０Ａや、ＰＵ５０４、及び／又は他のＳＰＵなどの、１つ以上の他のデバイスからのＤＭＡコマンドを管理するように動作することができる。ＤＭＡコマンドには３つのカテゴリが存在し、それらは、プットコマンド、ゲットコマンド、及びストレージ制御コマンドである。プットコマンドは、ローカルメモリ５５０から共有メモリ５１４へデータを移動させるよう動作する。ゲットコマンドは、共有メモリ５１４からローカルメモリ５５０へデータを移動させるよう動作する。また、ストレージ制御コマンドには、ＳＬＩコマンドと同期化コマンドが含まれる。この同期化コマンドは、アトミックコマンド（atomic command）、信号送信コマンド、及び専用バリアコマンドを有しうる。ＤＭＡコマンドに応答して、ＭＭＵ５６２は有効アドレスを実アドレスに変換し、実アドレスはＢＩＵ５６４へ送られる。
【００７１】
ＳＰＵコア５１０Ａは、好ましくは、ＤＭＡＣ５６０内のインターフェースと通信（ＤＭＡコマンド、ステータスなどを送る）するために、チャネルインターフェース及びデータインターフェースを使用する。ＳＰＵコア５１０Ａはチャネルインターフェースを介して、ＤＭＡＣ５６０のＤＭＡキューへＤＭＡコマンドを送る。ＤＭＡコマンドがＤＭＡキューに存在すると、そのコマンドはＤＭＡＣ５６０内の発行及び完了論理により処理される。ＤＭＡコマンドに対する全てのバストランザクションが終了すると、完了信号がチャネルインターフェースを越えて、ＳＰＵコア５１０Ａへ送られる。
【００７２】
図９はＰＵ５０４の一般的な構造及び機能を例示している。ＰＵ５０４は２つの機能ユニットを有しており、それらはＰＵコア５０４Ａとメモリフローコントローラ（ＭＦＣ）５０４Ｂである。ＰＵコア５０４Ａは、プログラム実行、データ操作、マルチプロセッサマネージメント関数などを実施し、一方でＭＦＣ５０４Ｂはシステム１００のＰＵコア５０４Ａとメモリスペース間のデータ転送に関連する機能を実行する。
【００７３】
ＰＵコア５０４ＡはＬ１キャッシュ５７０、命令ユニット５７２、レジスタ５７４、１つ以上の浮動小数点実行ステージ５７６、及び１つ以上の固定小数点実行ステージ５７８を有することができる。Ｌ１キャッシュは、共有メモリ１０６、プロセッサ１０２、又はＭＦＣ５０４Ｂを介してメモリスペースの他の部分、から受信したデータに対するデータキャッシングの機能を提供する。ＰＵコア５０４Ａが好ましくはスーパーパイプラインとして実装されるので、命令ユニット５７２は好ましくは、フェッチ、デコード、依存性チェック、発行、などを含む、多くのステージを備えた命令パイプラインとして実装される。ＰＵコア５０４はまた好ましくは、スーパースカラ構成であり、一方で１つ以上の命令がクロックサイクル毎に命令ユニット５７２から発行される。高度な処理（演算）能力を実現するために、浮動小数点実行ステージ５７６と固定小数点実行ステージ５７８は、パイプライン構成で複数のステージを有する。要求される処理能力に応じて、多数の、又は少数の浮動小数点実行ステージ５７６と固定小数点実行ステージ５７８が採用されうる。
【００７４】
ＭＦＣ５０４Ｂは、バスインターフェースユニット（ＢＩＵ）５８０、Ｌ２キャッシュメモリ、キャッシュ不可能なユニット（ＮＣＵ：Non-Cachable Unit）５８４、コアインターフェースユニット（ＣＩＵ：Core Interface Unit）５８６、及びメモリ管理ユニット（ＭＭＵ）５８８を備えている。殆どのＭＦＣ５０４Ｂは、低電力化設計とするために、ＰＵコア５０４Ａとバス１０８と比べて、半分の周波数（半分の速度）で実行する。
【００７５】
ＢＩＵ５８０はバス１０８とＬ２キャッシュ５８２とＮＣＵ５８４論理ブロック間にインターフェースを提供する。このために、ＢＩＵ５８０はバス１０８上で、十分にコヒーレントなメモリオペレーションを実施するために、マスタデバイスとして、また同様にスレーブデバイスとして機能する。マスタデバイスとして、ＢＩＵ５８０はＬ２キャッシュ５８２とＮＣＵ５８４のために機能するため、バス１０８へロード／ストアリクエストを供給する。ＢＩＵ５８０はまた、バス１０８へ送信されうるコマンドの合計数を制限するコマンドに対し、フロー制御機構を実装しうる。バス１０８のデータオペレーションは、８ビート要するように設計され、そのために、ＢＩＵ５８０は好ましくは１２８バイトキャッシュラインを有するように設計され、また、コヒーレンシーと同期化の粒度単位は１２８ＫＢである。
【００７６】
Ｌ２キャッシュメモリ５８２（及びサポートハードウェア論理回路）は、好ましくは、５１２ＫＢのデータをキャッシュするように設計されている。例えば、Ｌ２キャッシュ５８２はキャッシュ可能なロード／ストア、データプリフェッチ、命令プリフェッチ、命令プリフェッチ、キャッシュオペレーション、及びバリアオペレーションを処理しうる。Ｌ２キャッシュ５８２は好ましくは８ウエイのセットアソシエイティブシステムである。Ｌ２キャッシュ５８２は６つのキャストアウトキュー（６つのＲＣマシンなど）と一致する６つのリロードキューと、８つ（６４バイト幅）のストアキューを備えうる。Ｌ２キャッシュ５８２はＬ１キャッシュ５７０において、一部の、あるいは全てのデータのコピーをバックアップするように動作しうる。この点は、処理ノードがホットスワップである場合に状態を回復するのに便利である。この構成により、Ｌ１キャッシュ５７０が少ないポート数でより速く動作することができ、また、より速くキャッシュツーキャッシュ転送ができる（リクエストがＬ２キャッシュ５８２でストップしうるため）。この構成はまた、キャッシュコヒーレンシー管理をＬ２キャッシュメモリ５８２へ送るための機構も提供しうる。
【００７７】
ＮＣＵ５８４は、ＣＩＵ５８６、Ｌ２キャッシュメモリ５８２、及びＢＩＵ５８０と連動しており、通常は、ＰＵコア５０４Ａとメモリシステム間のキャッシュ不可能なオペレーションに対して、キューイング／バッファリング回路として機能する。ＮＣＵ５８４は好ましくは、キャッシュ抑制ロード／ストア、バリアオペレーション、及びキャッシュコヒーレンシーオペレーションなどの、Ｌ２キャッシュ５８２により処理されないＰＵコア５０４Ａとの全ての通信を処理する。ＮＣＵ５８４は好ましくは、上述の低電力化目的を満たすように、半分の速度で実行されうる。
【００７８】
ＣＩＵ５８６は、ＭＦＣ５０４ＢとＰＵコア５０４Ａの境界に配置され、実行ステージ５７６、５７８、命令ユニット５７２、及びＭＭＵユニット５８８からのリクエストに対し、また、Ｌ２キャッシュ５８２及びＮＣＵ５８４へのリクエストに対し、ルーティング、アービトレーション、及びフロー制御ポイントして機能する。ＰＵコア５０４Ａ及びＭＭＵ５８８は好ましくはフルスピードで実行され、一方でＬ２キャッシュ５８２及びＮＣＵ５８４は２：１の速度比で動作することができる。従って、周波数の境界がＣＩＵ５８６に存在し、その機能の一つは、２つの周波数ドメイン間でリクエストの送信及びデータのリロードを行いながら、周波数の差を適切に処理することである。
【００７９】
ＣＩＵ５８６は３つの機能ブロックを有しており、それらは、ロードユニット、ストアユニット、及びリロードユニットである。更に、データプリフェッチ関数がＣＩＵ５８６により実施され、また好ましくは、ロードユニットの機能部である。ＣＩＵ５８６は、好ましくは、
（ｉ）ＰＵコア５０４ＡとＭＭＵ５８８からのロード及びストアリクエストを受ける、
（ｉｉ）フルスピードのクロック周波数をハーフスピードに変換する（２：１のクロック周波数変換）、
（ｉｉｉ）キャッシュ可能なリクエストをＬ２キャッシュ５８２へ送り、キャッシュ不可能なリクエストをＮＣＵ５８４へ送る、
（ｉｖ）Ｌ２キャッシュ５８２に対するリクエストとＮＣＵ５８４に対するリクエストを公正に調停する、
（ｖ）ターゲットウインドウでリクエストが受信されてオーバーフローが回避されるように、Ｌ２キャッシュ５８２とＮＣＵ５８４に対する転送のフロー制御を提供する、
（ｖｉ）ロードリターンデータを受信し、そのデータを実行ステージ５７６、５７８、命令ユニット５７２、又はＭＭＵ５８８へ送る、
（ｖｉｉ）スヌープリクエストを実行ステージ５７６、５７８、命令ユニット５７２、又はＭＭＵ５８８へ送る、
（ｖｉｉｉ）ロードリターンデータとスヌープトラフィックを、ハーフスピードからフルスピードへ変換する、
ように動作可能である。
【００８０】
ＭＭＵ５８８は、好ましくはＰＵコア５４０Ａに対して、第２レベルのアドレス変換機能などによりアドレス変換を行う。第１レベルの変換は好ましくは、ＭＭＵ５８８よりも小型で高速でありうる、別々の命令及びデータＥＲＡＴ（Effective to Real Address Translation）アレイにより、ＰＵコア５０４Ａにおいて提供されうる。
【００８１】
好ましい実施形態では、ＰＵコア５０４は、６４ビットの実装品で、４−６ＧＨｚ、１０Ｆ０４で動作する。レジスタは好ましくは６４ビット長（１つ以上の特殊用途のレジスタは小型でありうるが）であり、また、有効アドレスは６４ビット長である。命令ユニット５７０、レジスタ５７２、及び実行ステージ５７４と５７６は好ましくは、（ＲＩＳＣ）演算技術を実現するために、ＰｏｗｅｒＰＣステージ技術を用いて実装される。
【００８２】
本コンピュータシステムのモジュール構造に関する更なる詳細は、米国特許第６，５２６，４９１号に解説されており、該特許は参照として本願に組込まれる。
【００８３】
本発明の少なくとも１つのさらなる態様によれば、上述した方法及び装置は、図面に示すような適切なハードウェアを利用して達成されてもよい。このようなハードウェアは、標準的なデジタル回路などの任意の既知の技術、ソフトウェア及び／又はファームウェアプログラムを実行するのに動作可能な任意の既知のプロセッサ、プログラム可能な読み取り専用メモリ（ＰＲＯＭ）、プログラム可能なアレイ論理デバイス（ＰＡＬ）などの１つ以上のプログラム可能なディジタルデバイス又はシステムなどを利用して実装されてもよい。さらに、図面に示す装置は、ある一定の機能ブロックに区分けされて示されているが、このようなブロックは、別々の回路によって実装されてもよく、及び／又は１つ以上の機能ユニットに組み合わせられてもよい。さらに、本発明の様々な態様は、持ち運びや配送に適した１つ又は複数の格納媒体（フロッピーディスク、メモリチップなど）に格納されてもよいソフトウェア及び／又はファームウェアプログラムによって実装されてもよい。
【００８４】
本明細書において、具体的な実施形態を用いて本発明を記載したが、これらの実施形態は本発明の原理及び用途の例を示すものに過ぎないことを理解されたい。このため、添付の請求の範囲に記載した本発明の趣旨及び範囲から逸脱することなく、これら例示的な実施形態を種々に変更し、上記以外の構成を考案し得ることが理解されたい。
【図面の簡単な説明】
【００８５】
【図１】本発明の１つ以上の態様により適用されてもよい処理システムの構造を例示したブロック図である。
【図２】図１の処理システム及び／又は本願明細書の他の実施形態によって採用されてもよいＤＭＡスヌープコントローラ、ＤＭＡコマンドキュー、及びＤＭＡ状態テーブルを例示したブロック図である。
【図３】本発明の１つ以上の態様による、図１の処理システム及び／又は本願明細書の他の実施形態により実行されてもよいプロセスステージを例示した流れ図である。
【図４】２つのデータストリームを１つのデータストリームにマージするためにダブルバッファを採用したプロセスの待ち時間を隠すために、ＤＭＡスヌープコントローラ、ＤＭＡコマンドキュー、及びＤＭＡ状態テーブルが採用される方法の１つの例を例示したブロック図である。
【図５】１つのデータストリームを２つのデータストリームにデインターリーブするためにダブルバッファを採用したプロセスの待ち時間を隠すために、ＤＭＡスヌープコントローラ、ＤＭＡコマンドキュー、及びＤＭＡ状態テーブルが採用される方法の１つの例を例示したブロック図である。
【図６】本発明の１つ以上の態様により適応されてもよい２つ以上のサブプロセッサを有するマルチ処理システムの構造を示す図である。
【図７】本発明の１つ以上のさらなる態様を実施するために使用されてもよい好ましいプロセッサエレメント（ＰＥ）を示す図である。
【図８】本発明の１つ以上のさらなる態様により適応されてもよい図７のシステムの一般的なサブプロセッシングユニット（ＳＰＵ）の構造を示す図である。
【図９】本発明の１つ以上のさらなる態様により適応されてもよい図７のシステムの一般的なプロセッシングユニットの構造を示す図である。
【符号の説明】
【００８６】
１００  処理システム
１０２  プロセッサ
１０４  ローカルメモリ
１０６  メインメモリ
１１０  メモリインターフェース
１０８  バス
２００  ＤＭＡスヌープコントローラ
２０２  ＤＭＡコマンドキュー
２０４  ＤＭＡテーブル
【図１】
2006221642.tif 000003
【図２】
2006221642.tif 000004
【図３】
2006221642.tif 000005
【図４】
2006221642.tif 000006
【図５】
2006221642.tif 000007
【図６】
2006221642.tif 000008
【図７】
2006221642.tif 000009
【図８】
2006221642.tif 000010
【図９】
2006221642.tif 000011