(57)【要約】【課題】マルチプロセッサシステム内のデータ転送を効率良く行うことは難しい。【解決手段】第１バス１１２Ａは、マルチプロセッサシステムの複数のプロセッサ１０２Ａ〜１０２Ｄと機能的に連結し、これらのプロセッサ間のデータ転送を第１周波数Ｆ１で実行するように構成される。第２バス１１２Ｂは、メモリインタフェース回路１０４、ＰＣＩ回路１０８、および外部インタフェース回路１１０と機能的に連結し、これらのインタフェース回路との間のデータ転送を第２周波数Ｆ２で実行するように構成される。非同期境界回路１２０は、第１バス１１２Ａと第２バス１１２Ｂ間のデータ転送を第１周波数Ｆ１および第２周波数Ｆ２で行う。【選択図】図３
2006172468.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサシステムの１つ以上のプロセッサと機能的に連結し、前記プロセッサからのデータ転送および前記プロセッサへのデータ転送を第１周波数にて実行するように構成された第１バスと、
１つ以上のインタフェース回路と機能的に連結し、前記インタフェース回路からのデータ転送および前記インタフェース回路へのデータ転送を第２周波数にて実行するように構成された第２バスと、
前記第１バスと第２バスの間のデータ転送をそれぞれのバスの前記第１周波数および前記第２周波数にて実行する機能を有する非同期境界回路とを含むことを特徴とする装置。
【請求項２】
前記第１周波数は前記第２周波数よりも低いことを特徴とする請求項１に記載の装置。
【請求項３】
前記非同期境界回路は、少なくとも第１非同期ＦＩＦＯと第２非同期ＦＩＦＯを含み、
前記第１非同期ＦＩＦＯは、前記第２バスから前記第２周波数にてデータを受け取り、前記第１バスへ前記第１周波数にてデータを渡す機能を有し、
前記第２非同期ＦＩＦＯは、前記第１バスから前記第１周波数にてデータを受け取り、前記第２バスへ前記第２周波数にてデータを渡す機能を有することを特徴とする請求項１または２に記載の装置。
【請求項４】
前記１つ以上のインタフェース回路は、前記１つ以上のプロセッサと共有メモリの間のデータ転送を実行する機能を有するメモリインタフェース回路を含むことを特徴とする請求項１から３のいずれかに記載の装置。
【請求項５】
前記１つ以上のインタフェース回路は、前記マルチプロセッサシステムと外部デバイスの間のデータ転送を実行する機能を有する外部インタフェース回路を含むことを特徴とする請求項１から４のいずれかに記載の装置。
【請求項６】
前記１つ以上のインタフェース回路は、前記マルチプロセッサシステムと周辺デバイスの間のデータ転送を実行する機能を有するＰＣＩ回路を含むことを特徴とする請求項１から５のいずれかに記載の装置。
【請求項７】
データを格納する機能をもつメモリと連結可能な複数のプロセッサと、
前記複数のプロセッサを相互に連結し、前記複数のプロセッサ間のデータ転送を第１周波数にて実行する機能を有する第１バスと、
前記複数のプロセッサと前記メモリの間のデータ転送を実行するように構成されたメモリインタフェースに機能的に連結し、前記メモリインタフェースからのデータ転送および前記メモリインタフェースへのデータ転送を第２周波数にて実行するように構成された第２バスと、
前記第１バスおよび前記第２バスの間のデータ転送をそれぞれのバスの前記第１周波数および前記第２周波数にて実行する機能を有する非同期境界回路とを含むことを特徴とする装置。
【請求項８】
前記第１周波数は前記第２周波数より低いことを特徴とする請求項７に記載の装置。
【請求項９】
前記複数のプロセッサの各々に連結された、ハードウエアキャッシュメモリではないローカルメモリをさらに含み、各ローカルメモリ内で命令が実行されるように構成されることを特徴とする請求項７または８に記載の装置。
【請求項１０】
前記複数のプロセッサと各プロセッサに関連づけられた前記ローカルメモリは、一つの共通の半導体基板上に設けられることを特徴とする請求項９に記載の装置。
【請求項１１】
前記複数のプロセッサに連結可能なメモリをさらに含むことを特徴とする請求項７から９のいずれかに記載の装置。
【請求項１２】
前記複数のプロセッサ、各プロセッサに関連づけられた前記ローカルメモリ、および前記メモリは、一つの共通の半導体基板上に設けられることを特徴とする請求項１１に記載の装置。
【請求項１３】
前記第１バスを介して前記複数のプロセッサと機能的に連結したメインプロセッサをさらに含み、前記第１バスは前記メインプロセッサからのデータ転送および前記メインプロセッサへのデータ転送を前記第１周波数にて実行することを特徴とする請求項９または１０に記載の装置。
【請求項１４】
前記メインプロセッサと関連づけられたハードウエアキャッシュメモリをさらに含み、前記ハードウエアキャッシュメモリは、前記メモリと前記複数のプロセッサの各々の前記ローカルメモリの内、少なくとも一つから取得されたデータをキャッシュする機能を有することを特徴とする請求項１３に記載の装置。
【請求項１５】
前記第１バスは、前記ハードウエアキャッシュメモリからのデータ転送および前記ハードウエアキャッシュメモリへのデータ転送を前記第１周波数にて実行するように構成されることを特徴とする請求項１４に記載の装置。
【請求項１６】
前記複数のプロセッサ、前記複数のローカルメモリ、および前記メインプロセッサは、一つの共通の半導体基板上に設けられることを特徴とする請求項１４または１５に記載の装置。
【請求項１７】
複数のプロセッサと、
前記複数のプロセッサを相互に機能的に連結し、前記複数のプロセッサ間のデータ転送を第１周波数にて実行する機能をもつ第１バスと、
前記複数のプロセッサと外部デバイスの間のデータ転送を実行するように構成された少なくとも１つの外部インタフェース回路と機能的に連結した第２バスであって、前記外部インタフェース回路からのデータ転送および前記外部インタフェース回路へのデータ転送を第２周波数にて実行するように構成された第２バスと、
前記第１バスおよび前記第２バスの間のデータ転送をそれぞれのバスの前記第１周波数および前記第２周波数にて実行する機能を有する非同期境界回路とを含むことを特徴とするシステム。
【請求項１８】
前記第１周波数は、前記第２周波数より低いことを特徴とする請求項１７に記載のシステム。
【請求項１９】
前記外部デバイスは、前記複数のプロセッサと協同して１つ以上のアプリケーションプログラムを実行するためのマルチプロセッサシステムであることを特徴とする請求項１７または１８に記載のシステム。
【請求項２０】
前記複数のプロセッサにより共有され、データを格納する機能をもつメモリと、
前記複数のプロセッサと前記メモリの間でデータ転送を実行するように構成されたメモリインタフェース回路とをさらに含み、
前記第２バスは、前記メモリインタフェース回路からのデータ転送および前記メモリインタフェース回路へのデータ転送を前記第２周波数にて実行するように構成されてなることを特徴とする請求項１７から１９のいずれかに記載のシステム。
【請求項２１】
第１バスを介してマルチプロセッサシステムの１つ以上のプロセッサからのデータ転送および前記１つ以上のプロセッサへのデータ転送を第１周波数にて実行するステップと、
第２バスを介して１つ以上のインタフェース回路からのデータ転送および前記１つ以上のインタフェース回路へのデータ転送を第２周波数にて実行するステップと、
前記第１バスと前記第２バスの間のデータ転送をそれぞれのバスの前記第１周波数および前記第２周波数にて実行することにより、前記第１バスおよび前記第２バスを分離するステップとを含むことを特徴とする方法。
【請求項２２】
前記第１周波数は、前記第２周波数より低いことを特徴とする請求項２１に記載の方法。
【請求項２３】
前記分離するステップは、
前記第２バスから前記第２周波数にてデータを受け取り、前記第１バスへ前記第１周波数にてデータを渡すステップと、
前記第１バスから前記第１周波数にてデータを受け取り、前記第２バスへ前記第２周波数にてデータを渡すステップとを含むことを特徴とする請求項２１または２２に記載の方法。
【請求項２４】
前記第２バスを介してメモリインタフェース回路からのデータ転送および前記メモリインタフェース回路へのデータ転送を前記第２周波数にて実行するステップをさらに含み、前記メモリインタフェース回路は、前記複数のプロセッサと共有メモリの間のデータ転送を実行するように構成されることを特徴とする請求項２１から２３のいずれかに記載の方法。
【請求項２５】
前記第１バスを介してメインプロセッサからのデータ転送および前記メインプロセッサへのデータ転送を前記第１周波数にて実行するステップをさらに含み、前記メインプロセッサは、前記複数のプロセッサを管理する機能を有することを特徴とする請求項２１から２４のいずれかに記載の方法。
【請求項２６】
前記第２バスを介して外部インタフェース回路からのデータ転送および前記外部インタフェース回路へのデータ転送を前記第２周波数にて実行するステップをさらに含み、前記外部インタフェース回路は、前記複数のプロセッサと外部デバイスの間のデータ転送を実行するように構成されることを特徴とする請求項２１から２５のいずれかに記載の方法。
【請求項２７】
前記外部デバイスは、前記複数のプロセッサと協同して１つ以上のアプリケーションプログラムを実行するためのマルチプロセッサシステムであることを特徴とする請求項２６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステムにおけるデータ転送をシステム内部で処理するための装置および方法に関する。
【背景技術】
【０００２】
近年、最先端のコンピュータアプリケーションは、リアルタイムでマルチメディアを扱う機能を必要としており、コンピュータ処理のデータスループットをどこまでも高くしていくことが求められている。そのようなアプリケーションの中で、グラフィックスアプリケーションは、望ましい視覚上の結果を得るために比較的短い時間で、莫大な量のデータアクセス、データ計算、およびデータ操作を行わなければならないため、プロセッシングシステムに最大の要求を課す。こうしたアプリケーションは、１秒間に数千メガビットといった極めて高速の処理速度を必要とする。プロセッシングシステムの中には、１つのプロセッサを用いて高速な処理速度を達成するものがあるが、他のプロセッシングシステムは、高速処理のためにマルチプロセッサアーキテクチャを用いて実装されている。マルチプロセッサシステムでは、複数のサブプロセッサが並列に（または少なくとも協調して）動作することで所望の処理結果を達成することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
たとえば、マルチプロセッサシステムは複数のプロセッサを含み、これらのすべてのプロセッサは、一つの共通のシステムメモリを共有する一方で、各プロセッサは、命令を実行するためのローカルメモリを内部に有する。マルチプロセッサシステムは、たとえば、外部デバイスや共有メモリなどに対する１つ以上のインタフェースを含むこともある。複数のプロセッサと各種インタフェースの間のデータトラフィックは、共通のデータバスを介して行われてもよい。この構成は数多くの利点を有するが、複数のプロセッサを各種インタフェースとは異なる周波数で動作させることが有益であることを理解しなければならない。実際、複数のプロセッサがより低い周波数で動作する場合、システム内の電力消費は著しく減少するのである。残念ながら、電力消費量を下げるために共通のデータバスの動作周波数を下げてしまうと、たとえば、インタフェースや外部デバイスなどから見た場合のメモリ帯域幅が減少する結果となり、そのことは好ましいことではない。
【０００４】
本発明はこうした課題に鑑みてなされたものであり、その目的は、システム内のデータ転送を効率良く行うことのできる装置および方法を提供することにある。
【課題を解決するための手段】
【０００５】
本発明の態様によれば、マルチプロセッサシステムにおいて２つの分離されたバスの間に非同期境界が設けられる。複数のプロセッサは第１バスを介して通信し、各種インタフェースは第２バスを介して通信する。第１バスの動作周波数を下げることにより、インタフェースおよび／または他のデバイスから見た場合のメモリ帯域幅などに悪影響を与えることなく、前述の電力損失の目標を達成してもよい。
【０００６】
本発明のある態様の装置は、マルチプロセッサシステムの１つ以上のプロセッサと機能的に連結し、前記プロセッサからのデータ転送および前記プロセッサへのデータ転送を第１周波数にて実行するように構成された第１バスと、１つ以上のインタフェース回路と機能的に連結し、前記インタフェース回路からのデータ転送および前記インタフェース回路へのデータ転送を第２周波数にて実行するように構成された第２バスと、前記第１バスと第２バスの間のデータ転送をそれぞれのバスの前記第１周波数および前記第２周波数にて実行する機能を有する非同期境界回路とを含む。
【０００７】
前記第１周波数は前記第２周波数よりも低くてもよい。
【０００８】
前記非同期境界回路は、少なくとも第１非同期ＦＩＦＯと第２非同期ＦＩＦＯを含んでもよい。前記第１非同期ＦＩＦＯは、前記第２バスから前記第２周波数にてデータを受け取り、前記第１バスへ前記第１周波数にてデータを渡す機能を有してもよい。前記第２非同期ＦＩＦＯは、前記第１バスから前記第１周波数にてデータを受け取り、前記第２バスへ前記第２周波数にてデータを渡す機能を有してもよい。
【０００９】
前記１つ以上のインタフェース回路は、前記１つ以上のプロセッサと共有メモリの間のデータ転送を実行する機能を有するメモリインタフェース回路、前記マルチプロセッサシステムと外部デバイスの間のデータ転送を実行する機能を有する外部インタフェース回路、前記マルチプロセッサシステムと周辺デバイスの間のデータ転送を実行する機能を有するＰＣＩ回路、その他のインタフェース回路の少なくとも１つを含んでもよい。
【００１０】
本発明の別の態様の装置は、データを格納する機能をもつメモリと連結可能な複数のプロセッサと、前記複数のプロセッサを相互に連結し、前記複数のプロセッサ間のデータ転送を第１周波数にて実行する機能を有する第１バスと、前記複数のプロセッサと前記メモリの間のデータ転送を実行するように構成されたメモリインタフェースに機能的に連結し、前記メモリインタフェースからのデータ転送および前記メモリインタフェースへのデータ転送を第２周波数にて実行するように構成された第２バスと、前記第１バスおよび前記第２バスの間のデータ転送をそれぞれのバスの前記第１周波数および前記第２周波数にて実行する機能を有する非同期境界回路とを含む。
【００１１】
前記第１バスを介して前記複数のプロセッサと機能的に連結したメインプロセッサをさらに含み、前記第１バスは前記メインプロセッサからのデータ転送および前記メインプロセッサへのデータ転送を前記第１周波数にて実行してもよい。ハードウエアキャッシュメモリが前記メインプロセッサと関連づけられてもよい。前記ハードウエアキャッシュメモリは、前記メモリと前記複数のプロセッサの各々の前記ローカルメモリの内、少なくとも一つから取得されたデータをキャッシュする機能を有してもよい。前記第１バスは、前記メインプロセッサからのデータ転送および前記メインプロセッサへのデータ転送を前記第１周波数にて実行するように構成されてもよい。前記複数のプロセッサ、前記複数のローカルメモリ、および前記メインプロセッサは、一つの共通の半導体基板上に設けられてもよい。
【００１２】
本発明のさらに別の態様の方法は、第１バスを介してマルチプロセッサシステムの１つ以上のプロセッサからのデータ転送および前記１つ以上のプロセッサへのデータ転送を第１周波数にて実行するステップと、第２バスを介して１つ以上のインタフェース回路からのデータ転送および前記１つ以上のインタフェース回路へのデータ転送を第２周波数にて実行するステップと、前記第１バスと前記第２バスの間のデータ転送をそれぞれのバスの前記第１周波数および前記第２周波数にて実行することにより、前記第１バスおよび前記第２バスを分離するステップとを含む。前記第１周波数は、前記第２周波数より低くてもよい。
【００１３】
前記分離するステップは、前記第２バスから前記第２周波数にてデータを受け取り、前記第１バスへ前記第１周波数にてデータを渡すステップと、前記第１バスから前記第１周波数にてデータを受け取り、前記第２バスへ前記第２周波数にてデータを渡すステップとを含んでもよい。
【００１４】
当該方法は、（ｉ）前記第２バスを介してメモリインタフェース回路からのデータ転送および前記メモリインタフェース回路へのデータ転送を前記第２周波数にて実行するステップをさらに含み、前記メモリインタフェース回路は、前記複数のプロセッサと共有メモリの間のデータ転送を実行するように構成されてもよい。また、（ｉｉ）前記第２バスを介して外部インタフェース回路からのデータ転送および前記外部インタフェース回路へのデータ転送を前記第２周波数にて実行するステップをさらに含み、前記外部インタフェース回路は、前記複数のプロセッサと外部デバイスの間のデータ転送を実行するように構成されてもよい。また、（ｉｉｉ）ＰＣＩ回路からのデータ転送および前記ＰＣＩ回路へのデータ転送を実行するステップをさらに含み、前記ＰＣＩ回路は、前記マルチプロセッサシステムと周辺デバイスの間のデータ転送を実行する機能を有してもよい。また、（ｉｖ）他の任意のインタフェース回路からのデータ転送および前記他の任意のインタフェース回路へのデータ転送を実行するステップをさらに含んでもよい。
【００１５】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１６】
本発明によれば、システム内のデータ転送を効率良く行うことができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態を図面を参照して説明するが、本発明は図面と同一の構成および手段に限定されるものではない。
【００１８】
図１は、本発明の実施の形態に係るプロセッシングシステム１００を示す。以下の図面では、同一の構成要素には同一の符号を付して説明する。簡潔および明確にするために、ここでは図１の構成図を参照して、プロセッシングシステム１００を説明するが、同一の主旨を有する様々な態様の方法にその説明を適用することができる。
【００１９】
プロセッシングシステム１００は、複数のプロセッサ１０２Ａ、１０２Ｂ、１０２Ｃ、および１０２Ｄを含むが、任意の数のプロセッサ１０２が用いられてもよい。プロセッシングシステム１００はまた、メモリインタフェース回路１０４、共有メモリ１０６、ＰＣＩ（Peripheral Component Interconnect）回路１０８、および外部インタフェース回路１１０を含む。これらの構成要素は、適切なプロトコルに従ってそれぞれの構成要素へのデータを転送し、それぞれの構成要素からデータを受け取るデータ転送の機能をもつバスシステム１１２を介して、互いに接続されるのが好ましい。
【００２０】
各プロセッサ１０２は類似する構成であってもよいし、異なる構成であってもよい。プロセッサ１０２は、システムの共有メモリ１０６（以下、システムメモリともいう）からデータを要求し、所望の結果を得るためにそのデータを操作することを可能にする任意の既知技術を用いて実装してもよい。たとえば、プロセッサ１０２は、ソフトウエアおよび／またはファームウエアを実行することのできる、標準マイクロプロセッサ、分散マイクロプロセッサなどの任意の既知のマイクロプロセッサを用いて実装してもよい。一例として、一つ以上のプロセッサ１０２は、ピクセルデータのようなデータを要求して操作することのできるグラフィックプロセッサであってもよい。なお、ピクセルデータには、グレースケール情報、カラー情報、テクスチャデータ、ポリゴン情報、ビデオフレーム情報などが含まれる。
【００２１】
プロセッシングシステム１００の一つ以上のプロセッサ１０２は、メインプロセッサあるいは管理プロセッサの役割を引き受けてもよい。そのようなメインプロセッサは、他のプロセッサ１０２によるデータ処理をスケジューリングし、とりまとめてもよい。
【００２２】
メモリインタフェース回路１０４は、プロセッサ１０２がアプリケーションプログラム等を実行することができるように、プロセッサ１０２と共有メモリ１０６の間のデータ転送の機能を提供することが好ましい。たとえば、メモリインタフェース回路１０４は、共有メモリに対して１つまたは２つの高帯域のチャンネルを設け、バスシステム１１２に対してスレーブとなるように構成されてもよい。任意の既知のメモリインタフェース技術を用いてメモリインタフェース回路１０４を実装してよい。
【００２３】
システムメモリ１０６は、メモリインタフェース回路１０４を通じてプロセッサ１０２に接続されるダイナミックランダムアクセスメモリ（ＤＲＡＭ）であるのが好ましい。システムメモリ１０６は、好適にはＤＲＡＭであるが、スタティックランダムアクセスメモリ（ＳＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。
【００２４】
ＰＣＩ回路１０８は、プロセッサ１０２と、プリンタやモニタなどの１つ以上の周辺デバイスとの間を通信チャネル１１６を介して相互接続する機構を提供する。任意の既知のＰＣＩ技術を用いてＰＣＩ回路１０８を実装してよい。
【００２５】
外部インタフェース回路１１０は、プロセッシングシステム１００と１つ以上の外部デバイスとの間で通信チャネル１１８を介したデータ転送の機能を提供する。好ましくは、外部インタフェース回路１１０は、外部デバイスと非同期のトラフィックを交換するように構成され、かつ／もしくは、バスシステム１１２を別の外部デバイス、たとえば別のプロセッシングシステムに拡張することによって同期して動作するように構成される。任意の既知の外部インタフェース技術を用いて外部インタフェース回路１１０を実装してよいが、この回路は、命令とデータをパケット化されたエンベロープの形に結合し、外部デバイスとの間でそのエンベロープの転送が成功するように保証することが好ましい。
【００２６】
再びプロセッサの説明に戻る。それぞれのプロセッサ１０２は好適には、プロセッサコアとローカルメモリを含み、それらを用いてプログラムを実行する。これらの構成要素は共通の半導体基板上に一体的に設けられてもよいし、あるいは、設計者の意図により別々に設けられてもよい。プロセッサコアは好適には、論理命令がパイプライン方式で処理されるパイプライン処理を用いて実装される。パイプラインは、命令が処理される任意の数のステージに分割されるが、一般的には、パイプラインは、一つ以上の命令をフェッチするステージ、命令をデコードするステージ、命令間の依存性をチェックするステージ、命令を発行するステージ、および命令を実行するステージを有する。この点に関連して、プロセッサコア１０２Ａは、命令バッファ、命令デコード回路、依存性チェック回路、命令発行回路、および実行ステージを含んでもよい。
【００２７】
ローカルメモリは、バスを介してプロセッサコアに接続されており、好ましくはそのプロセッサコアと同一チップ（同一の半導体基板）上に設けられる。ローカルメモリは、従来のハードウェアキャッシュメモリではなく、ローカルメモリ内には、ハードウェアキャッシュメモリ機能を実現するための、オンチップまたはオフチップのハードウェアキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラなどが存在しないことが好ましい。チップ上の実装面積は限られているため、ローカルメモリのサイズは、共有メモリ１０６のサイズよりもずっと小さくしてよい。
【００２８】
プロセッサは、好ましくは、プログラムを実行し、データを操作するために、バスシステム１１２を介してシステムメモリ１０６からそれぞれのローカルメモリにデータ（プログラムデータを含みうる）をコピーするためのデータアクセス要求を発行する。データアクセスを容易にする機構は、例えばダイレクト・メモリ・アクセス（ＤＭＡ）技術などの任意の既知の技術を用いて実装してもよい。
【００２９】
図２は、バスシステム１１２の簡単なブロック図である。同図のように、バスシステム１１２は、プロセッサ１０２、メモリインタフェース回路１０４、ＰＣＩ回路１０８、および外部インタフェース回路１１０からデータを受け取る機能をもつ。バスシステム１１２はまた、プロセッサ１０２、メモリインタフェース回路１０４、ＰＣＩ回路１０８、および外部インタフェース回路１１０にデータを送る機能をもつ。バスシステム１１２は、望ましいデータフローが得られるように、これらの構成要素間のデータ転送を管理する。
【００３０】
図３を参照すれば、バスシステム１１２は、好ましくは第１バス１１２Ａ（「バスＡ」ともいう）と第２バス１１２Ｂ（「バスＢ」ともいう）を含み、これらのバスは、機能的には、非同期境界回路１２０によって互いに接続されているとともに互いに切り離されてもいる。第１バス１１２Ａは、プロセッサ１０２との間で第１周波数Ｆ１でデータ転送ができるようにプロセッサ１０２と機能的に接続されている。第２バス１１２Ｂは、各種のインタフェース回路との間で第２周波数Ｆ２でデータ転送ができるように、メモリインタフェース回路１０４、ＰＣＩ回路１０８、外部インタフェース回路１１０と機能的に接続されている。
【００３１】
非同期境界回路１２０は、第１バス１１２Ａと第２バス１１２Ｂの間でそれぞれのバスの第１周波数および第２周波数でデータ転送を実行する機能をもつ。第１周波数を第２周波数よりも低くすることにより、プロセッサ１０２の動作周波数を下げ、電力損失を減らすようにしてもよい。一方、各種のインタフェース回路の動作周波数は下げる必要はないのが利点である。
【００３２】
図４は、非同期境界回路１２０の機能を実現することのできる好適な回路構成のブロック図である。非同期境界回路１２０は、少なくとも第１非同期ＦＩＦＯ２０２と第２非同期ＦＩＦＯ２０４を含み、それぞれのＦＩＦＯはデュアルクロックの入力を受ける。各非同期ＦＩＦＯの一方のクロック入力は、第１バス１１２Ａの動作周波数に適合する第１周波数Ｆ１を受け取る。各非同期ＦＩＦＯの他方のクロック入力は、第２バス１１２Ｂの動作周波数に適合する第２周波数Ｆ２を受け取る。非同期ＦＩＦＯの一般的な動作はよく知られているから、次のことを述べるだけで十分である。第１非同期ＦＩＦＯ２０２は、好ましくは、ライン１２８を介して第２バス１１２Ｂから第２周波数でデータを受け取り、ライン１２２を介して第１バス１１２Ａに第１周波数でデータを渡す機能を有する。一方、第２非同期ＦＩＦＯ２０４は、好ましくは、ライン１２４を介して第１バス１１２Ａから第１周波数でデータを受け取り、ライン１２６を介して第２バス１１２Ｂに第２周波数でデータを渡す機能を有する。
【００３３】
別の実施の形態では、プロセッシングシステム１００はメインプロセッサ（図示せず）を含んでもよく、このメインプロセッサは、他のプロセッサ１０２と機能的に接続され、バスシステム１１２を介して共有メモリ１０６とつながることができる。メインプロセッサは、他のプロセッサ１０２によるデータ処理をスケジューリングし、とりまとめてもよい。しかし、他のプロセッサ１０２とは違って、メインプロセッサは、ハードウエアキャッシュメモリと連結していてもよく、このハードウエアキャッシュメモリは、共有メモリ１０６と複数のプロセッサ１０２の１つ以上のローカルメモリの内、少なくとも１つのメモリから得られたデータをキャッシュする機能を有する。メインプロセッサは、プログラムを実行し、データを操作するために、バスシステム１１２を介してシステムメモリ１０６からハードウエアキャッシュメモリにデータ（プログラムデータを含みうる）をコピーするためのデータアクセス要求を発行してもよい。そのために、ＤＭＡ技術のような任意の既知の技術を用いてもよい。
【００３４】
ここで、上述した一つ以上の特徴の実現に適した、マルチプロセッサシステムの好適なコンピュータアーキテクチャについて説明する。一つ以上の実施の形態によれば、マルチプロセッサシステムは、ゲームシステムや、ホームターミナルや、ＰＣシステムや、サーバシステムや、ワークステーションなどの豊富なメディアを有するアプリケーションのスタンドアロン型処理および／または分散型処理のためのシングルチップソリューションとして実装できる。一部のアプリケーション、例えば、アプリーケーションがゲームシステムおよびホームターミナルである場合、リアルタイムの演算が必要である。例えば、リアルタイムの分散型ゲームアプリケーションにおいて、ネットワークを経由した画像復元、３Ｄコンピューターグラフィック、音声生成、ネットワーク通信、物理シミュレーション、人工知能計算のうち一つ以上は、ユーザにリアルタイムの感覚を体験させるために十分の速さで実行されなければならない。したがって、マルチプロセッサシステムにおける各プロセッサは、短く、かつ予測可能な時間内でタスクを終了させなければならない。
【００３５】
この目的を達成するために、このコンピュータアーキテクチャによれば、マルチプロセッサのコンピュータシステムのすべてのプロセッサは、共通のコンピュータモジュール（セルともいう）から構成される。この共通のコンピュータモジュールは、共通の構成を有し、同一の命令セットアーキテクチャを用いるのが好ましい。マルチプロセッサのコンピュータシステムは、コンピュータプロセッサを用いて、１以上のクライアント、サーバ、ＰＣ、携帯端末、ゲーム機、ＰＤＡ、セットトップボックス、アプリケーション、デジタルテレビおよび他のデバイスから構成されうる。
【００３６】
必要に応じて、複数のコンピュータシステムをそれぞれ１つのネットワークのメンバとしてもよい。一貫性のあるモジュール構造により、マルチプロセッサコンピュータシステムによってアプリケーションおよびデータの効率的な高速処理が可能となり、かつネットワークを利用すれば、ネットワークを介してアプリケーションおよびデータの迅速な伝送ができる。またこの構造により、様々なサイズおよび処理能力をもつネットワークメンバの形成、ならびにこれらメンバによって処理されるアプリケーションの準備を簡略化できる。
【００３７】
図５は、基本的な処理モジュールであるプロセッサ要素（ＰＥ）５００を示す。ＰＥ５００は、Ｉ／Ｏインタフェース５０２と、処理ユニット（ＰＵ）５０４と、複数のサブ処理ユニット５０８、すなわち、サブ処理ユニット５０８Ａと、サブ処理ユニット５０８Ｂと、サブ処理ユニット５０８Ｃと、サブ処理ユニット５０８Ｄとを含む。ローカル（すなわち内部）ＰＥバス５１２は、ＰＵ５０４、ＳＰＵ群５０８、およびメモリインタフェース５１１間のデータおよびアプリケーションの伝送を行う。ローカルＰＥバス５１２は、例えば従来構成でもよいし、またはパケットスイッチネットワークとして実装することもできる。パケットスイッチネットワークとして実装するとより多くのハードウェアが必要になるが、利用可能な帯域が広がる。
【００３８】
ＰＥ５００はディジタルロジック回路を実装する各種方法を利用して構成できる。ただし好適には、ＰＥ５００はシリコン基板上の相補的金属酸化膜半導体（ＣＭＯＳ）を用いる一つの集積回路として構成される。基板の他の材料には、ガリウム砒素、ガリウムアルミニウム砒素、および広範な種類の不純物を用いた他のいわゆるＩＩＩ−Ｂ族化合物が含まれる。ＰＥ５００はまた、超伝導材料を用いて高速単一磁束量子（ＲＳＦＱ）ロジック回路等として実装することもできる。
【００３９】
ＰＥ５００は、広帯域メモリ接続５１６を介してダイナミックランダムアクセスメモリ（ＤＲＡＭ）５１４（共有メモリともいう）に密接に関連付けられる。メモリ５１４は好適にはダイナミックランダムアクセスメモリ（ＤＲＡＭ）であるが、スタティックランダムアクセスメモリ（ＳＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。
【００４０】
ＰＵ５０４およびサブ処理ユニット５０８は、それぞれ、ダイレクトメモリアクセス（ＤＭＡ）機能を有するメモリフローコントローラ（ＭＦＣ）と接続されることが望ましい。ＭＦＣは、メモリインタフェース５１１と協働して、ＤＲＡＭ５１４、ＰＥ５００におけるサブ処理ユニット５０８、ＰＵ５０４間のデータの転送を円滑にするものである。ここで、ＤＭＡＣおよび／またはメモリインタフェース５１１は、サブ処理ユニット５０８とＰＵ５０４とから独立して設置されるようにしてもよいし、一体化されるようにしてもよい。実際に、ＤＡＭＣの機能および／またはメモリインタフェース５１１の機能は、サブ処理ユニット５０８およびＰＵ５０４の一つ以上（好ましくはすべて）に一体化できる。ここで、ＤＲＡＭ５１４もまた、ＰＥ５００から独立して設置されるようにしてもよいし、一体化されるようにしてもよい。例えば、ＤＲＡＭ５１４は図に示すようにチップ外部に設けられるようにしてもよく、集積方式でチップ内蔵されるようにしてもよい。
【００４１】
ＰＵ５０４は、例えばスタンドアロン式のデータおよびアプリケーション処理が可能な標準的なプロセッサでもよい。動作時には、ＰＵ５０４はサブ処理ユニット群によるデータおよびアプリケーションの処理のスケジューリングおよび調整を行う。サブ処理ユニット群は、好適には、一命令複数データ（ＳＩＭＤ）プロセッサである。ＰＵ５０４の制御下で、サブ処理ユニット群はデータおよびアプリケーションの処理を並列に、かつ独立して行う。ＰＵ５０４としては、ＲＩＳＣ（ｒｅｄｕｃｅｄ  ｉｎｓｔｒｕｃｔｉｏｎ−ｓｅｔ  ｃｏｍｐｕｔｉｎｇ）技術を用いるマイクロプロセッサアーキテクチャとなるＰｏｗｅｒＰＣ（登録商標）コアを用いることが好ましい。ＲＩＳＣは単純な命令の組み合わせによって比較的複雑な命令を実行するものである。したがって、プロセッサのタイミングは、比較的簡単かつ速いオペレーションに基づきうる。これは、決められたクロック速度においてより多くの命令を実行することを可能とする。
【００４２】
ここで、ＰＵ５０４は、サブ処理ユニット５０８のうちの一つとして実装されてもよい。この場合、このサブ処理ユニット５０８は、メイン処理ユニットＰＵによる処理、すなわち各々のサブ処理ユニット５０８によるデータとアプリケーションの処理のスケジューリングと統合処理を行うものとすればよい。さらに、ＰＥ５００内において、複数のＰＵを実装してもよい。
【００４３】
このモジュール構造では、あるコンピュータシステムで使用されるＰＥ５００の数は、そのシステムが必要とする処理能力に基づく。例えば、サーバは４つのＰＥ群５００、ワークステーションは二つのＰＥ群５００、ＰＤＡは一つのＰＥ５００を使用しうる。あるソフトウエアセルの処理に割り当てられるＰＥ５００のサブ処理ユニットの数は、セル内のプログラムおよびデータの複雑さおよび規模によって異なる。
【００４４】
図６は、サブ処理ユニット（ＳＰＵ）５０８の好適な構造と機能を示す図である。サブ処理ユニット５０８のアーキテクチャは、汎用プロセッサ（多数のアプリケーションにおいて高い平均性能を実現するように設計されているもの）と特殊用途のプロセッサ（一つのアプリケーションにおいて高い性能を実現するように設計されている）との間に位置するものであることが望ましい。サブ処理ユニット５０８は、ゲームアプリケーション、メディアアプリケーション、ブロードバンドシステムなどにおいて高い性能を実現すると共に、リアルタイムアプリケーションのプログラマに高度な制御自由度を提供するように設計されている。サブ処理ユニット５０８の一部の機能として、グラフィック構造パイプライン、サーフェス分割、高速フーリエ変換、画像処理キーワード、ストリーム処理、ＭＰＥＧエンコード／デコード、暗号化、復号化、デバイスドライバー拡張、モデリング、ゲームフィジクス、コンテンツ制作、音声合成および音声処理などを挙げることができる。
【００４５】
サブ処理ユニット５０８は、すなわちＳＰＵコア５１０Ａとメモリフローコントローラ（ＭＦＣ）５１０Ｂという二つの基本機能ユニットを有する。ＳＰＵコア５１０Ａは、プログラムの実行、データの操作などを担うものであり、一方、ＭＦＣ５１０Ｂは、ＳＰＵコア５１０Ａと、システムのＤＲＡＭ５１４との間のデータ転送に関連する機能を担うものである。
【００４６】
ＳＰＵコア５１０Ａは、ローカルメモリ５５０と、命令（インストラクション）ユニット（ＩＵ）５５２と、レジスタ５５４と、一つ以上の浮動小数点実行ステージ５５６と、一つ以上の固定小数点実行ステージ５５８とを有する。ローカルメモリ５５０は、ＳＲＡＭのようなシングルポートのＲＡＭを用いて実装されることが望ましい。メモリへのアクセスのレイテンシを軽減するために、従来のほとんどのプロセッサはキャッシュを用いるが、ＳＰＵコア５１０Ａは、キャッシュよりも、比較的小さいローカルメモリ５５０を用いる。実際には、リアルタイムのアプリケーション（およびここで言及したほかのアプリケーション）のプログラマに、予測可能で、かつ一致したメモリアクセスのレイテンシを提供するために、サブ処理ユニット５０８Ａ内においてキャッシュメモリアーキテクチャを用いることは好ましくない。キャッシュメモリのキャッシュヒット／ミス値は、数サイクルから数百サイクルの範囲内で変化する、予測困難な、メモリアクセス回数を生じさせる。このようなメモリアクセスの回数の予測困難性は、例えばリアルタイムアプリケーションのプログラミングに望まれるアクセスタイミングの予測可能性を下げる。データ演算にＤＭＡ転送をオーバーラップさせることで、ローカルメモリＳＲＡＭ５５０内のレイテンシを隠すことができる。これはリアルタイムアプリケーションのプログラミングに高い制御自由度を提供する。ＤＭＡ転送と関連するレイテンシおよび命令のオーバーヘッドが、キャッシュミスにより生じたレイテンシより長いため、ＳＲＡＭローカルメモリアプローチは、ＤＭＡ転送サイズが十分大きくかつ十分予測可能なとき（例えばデータが要求される前にＤＭＡコマンドを発行することができるとき）、有利である。
【００４７】
サブ処理ユニット５０８のうちのいずれか一つの上で実行されるプログラムは、ローカルアドレスを用いて、関連するローカルメモリ５５０を参照する。なお、ローカルメモリ５５０の各場所にはシステムの全体のメモリマップ上における実アドレス（ＲＡ；Real Address）が付与されている。これは、特権レベルのソフトウェアがローカルメモリ５５０を一つの処理における実効アドレス（ＥＡ；Effective Address）にマッピングすることを可能とし、それによって二つのローカルメモリ５５０間のＤＭＡ転送が容易になる。ＰＵ５０４は、実効アドレスを用いてローカルメモリ５５０に直接アクセスすることもできる。ローカルメモリ５５０は、２５６キロバイトの容量を有し、レジスタ５５４の容量は１２８×１２８ビットであることが望ましい。
【００４８】
ＳＰＵコア５１０Ａは、演算パイプラインを用いて実装されることが望ましく、その演算パイプラインにおいて論理命令がパイプライン方式で処理される。パイプラインは、命令を処理する任意の数のステージに分けることができるが、通常、パイプラインは、一つ以上の命令のフェッチ、命令のデコード、命令間の依存性のチェック、命令の発行、および命令の実行から構成される。これに関連して、命令ユニット５５２は、命令バッファと、命令デコード回路と、依存性チェック回路と、命令発行回路とを含む。
【００４９】
命令バッファは、ローカルメモリ５５０と接続されており、命令がフェッチされたときにこれらの命令を一時的に格納することができる複数のレジスタを有することが好ましい。命令バッファは、すべての命令が一つのグループとして（すなわち実質上同時に）レジスタから出力されるように動作することが好ましい。命令バッファはいかなるサイズであってもよいが、レジスタの数がおよそ２または３以下となるサイズであることが好ましい。
【００５０】
通常、デコード回路は命令を細分化すると共に、対応する命令の機能を果たす論理的なマイクロオペレーションを発生させる。例えば、論理的なマイクロオペレーションは、計算オペレーションと論理オペレーションの指定、ローカルメモリ５５０に対するロードオペレーションとストアオペレーションの指定、レジスタソースオペランドおよび／または即値（immediate）データオペランドの指定などを行うことができる。デコード回路は、ターゲットのレジスタのアドレスや、構造リソースや、機能ユニットおよび／またはバスなどのような、命令が用いるリソースを指定してもよい。デコード回路は、リソースが必要とされる命令パイプラインのステージを示す情報を提供してもよい。命令デコード回路は、実質上同時に、命令バッファのレジスタの数と同じ数の命令をデコードするように動作可能であることが好ましい。
【００５１】
依存性チェック回路は、与えられた命令のオペランドがパイプラン内の他の命令のオペランドに依存するか否かを判定するためのテストを行うデジタルロジックを含む。依存する場合、その与えられた命令は、（例えば、これらの他の命令の実行が完了するのを許すなどして）、これらの他のオペランドが更新されるまで実行されてはならない。依存性チェック回路は、デコード回路から同時に送信されてきた複数の命令の依存関係を判定することが好ましい。
【００５２】
命令発行回路は、浮動小数点実行ステージ５５６および／または固定小数点実行ステージ５５８に命令を発行することができる。
【００５３】
レジスタ５５４は、１２８―エントリレジスタファイルのような、比較的大きな統合レジスタファイルとして実装されることが好ましい。これは、レジスタ不足を回避するためのレジスタのリネーム処理を必要とせずに、深くパイプライン化された高周波数の実行を可能とする。リネーム処理のハードウエアは、一般的にプロセッシングシステムにおいて大きな実装面積を要し、また電力も消費する。したがって、ソフトウェアによるループアンローリングまたは他のインターリーブ技術によってレイテンシがカバーされるような場合において、有利なオペレーションを達成できる。
【００５４】
ＳＰＵコア５１０Ａは、クロックサイクル毎に複数の命令を発行するようなスーパースカラアーキテクチャで実装されることが好ましい。ＳＰＵコア５１０Ａは、命令バッファから同時に送信される命令の数、例えば２と３の間（クロックサイクル毎に２つまたは３つの命令が発行されることを意味する）に対応する程度のスーパースカラとして動作可能であることが好ましい。必要とされる処理能力に応じた数の浮動小数点実行ステージ５５６と固定小数点実行ステージ５５８を用いることができる。好適な実施の形態では、浮動小数点実行ステージ５５６と固定小数点実行ステージ５５８の望ましいスピードは、それぞれ、毎秒３２ギガ浮動小数点オペレーション（３２ＧＦＬＯＰＳ）と毎秒３２ギガオペレーション（３２ＧＯＰＳ）である。
【００５５】
ＭＦＣ５１０Ｂは、バスインターフェースユニット（ＢＩＵ）５６４と、メモリマネジメントユニット（ＭＭＵ）５６２と、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）５６０とを有することが望ましい。低電力消費の設計目的を達成するために、ＭＦＣ５１０Ｂは、ＤＭＡＣ５６０を除いて、ＳＰＵコア５１０Ａおよびバス５１２の半分の周波数（半分のスピード）で動作することが好ましい。ＭＦＣ５１０Ｂは、バス５１２からサブ処理ユニット５０８に入るデータと命令を操作することができ、ＤＭＡＣのためのアドレス変換と、データ一貫性のためのスヌープオペレーションとを提供する。ＢＩＵ５６４は、バス５１２とＭＭＵ５６２とＤＭＡＣ５６０との間のインターフェースを提供する。したがって、サブ処理ユニット５０８（ＳＰＵコア５１０ＡとＭＦＣ５１０Ｂを含む）とＤＭＡＣ５６０は、物理的および／または論理的にバス５１２と接続されている。
【００５６】
ＭＭＵ５６２は、メモリアクセスのために実効アドレス（ＤＭＡコマンドから取得される）を実アドレスへ変換することができるようにすることが望ましい。例えば、ＭＭＵ５６２は、実効アドレスの比較的高いオーダのビットを実アドレスのビットに変換できる。一方、比較的低いオーダアドレスビットについては、変換できないようにしておき、物理的におよび論理的に実アドレスの形成およびメモリへのアクセスのリクエストに用いられるようにすることが好ましい。具体的には、ＭＭＵ５６２は、６４ビットのメモリ管理モデルにもとづいて実装して、４Ｋバイト、６４Ｋバイト、１メガバイト、１６メガバイトのページサイズと２５６ＭＢのセグメントサイズを有する２６４バイトの実効アドレス空間を提供してもよい。ＭＭＵ５６２は、ＤＭＡコマンドのために、２６５バイトまでの仮想メモリと、２４２バイト（４テラバイト）の物理メモリをサポート可能であることが好ましい。ＭＭＵ５６２のハードウェアは、８−エントリの完全連想ＳＬＢ、２５６−エントリの４ウェイセット連想ＴＬＢ、ＴＬＢのための４×４代替マネジメントテーブル（ＲＭＴ）を含むものとすることができる。なお、ＲＭＴはハードウェアＴＬＢミスのハンドリングに用いられるものである。
【００５７】
ＤＭＡＣ５６０は、ＳＰＵコア５１０ＡからのＤＭＡコマンドと、ＰＵ５０４および／または他のＳＰＵのような１つ以上の他のデバイスからのＤＭＡコマンドとを管理する機能をもつことが望ましい。ＤＭＡコマンドは下記の３つのカテゴリがある。すなわち、ローカルメモリ５５０から共有メモリ５１４へデータを移動させるＰｕｔコマンド、共有メモリ５１４からローカルメモリ５５０へデータを移動させるＧｅｔコマンド、ＳＬＩコマンドと同期コマンドとを含むストレージコントロールコマンドである。同期コマンドは、アトミックコマンド、送信コマンド、専用のバリアコマンドを含むものとすることができる。ＤＭＡコマンドに応じて、ＭＭＵ５６２は実効アドレスを実アドレスに変換し、この実アドレスはＢＩＵ５６４に転送される。
【００５８】
ＳＰＵコア５１０Ａはチャンネルインターフェースとデータインターフェースとを用いて、ＤＭＡＣ５６０内のインターフェースと通信（ＤＭＡコマンド、ステータスなどの送信）することが好ましい。ＳＰＵコア５１０Ａは、チャンネルインターフェースを介してＤＭＡコマンドをＤＭＡＣ５６０内のＤＭＡキューに送信する。いったん、ＤＭＡキューに格納されたＤＭＡコマンドは、ＤＭＡＣ５６０内の発行ロジックと完了ロジックにより操作される。一つのＤＭＡコマンドのためのすべてのバス・トランザクションが完了すると、チャンネルインターフェースを介して、一つの完了信号がＳＰＵコア５１０Ａに返送される。
【００５９】
図７は、ＰＵ５０４の好ましい構造と機能を示す図である。ＰＵ５０４は、二つの基本機能ユニット、すなわちＰＵコア５０４Ａとメモリフローコントローラ（ＭＦＣ）５０４Ｂを有する。ＰＵコア５０４Ａは、プログラムの実行、データの操作、マルチプロセッサ管理機能などを担うものであり、一方、ＭＦＣ５０４Ｂは、ＰＵコア５０４Ａと、プロセッシングシステム１００のメモリスペースとの間のデータ転送に関連する機能を担うものである。
【００６０】
ＰＵコア５０４Ａは、Ｌ１キャッシュ５７０と、命令ユニット５７２と、レジスタ５７４と、少なくとも一つの浮動小数点実行ステージ５７６と、少なくとも一つの固定小数点実行ステージ５７８とを有する。Ｌ１キャッシュ５７０は、ＭＦＣ５１０Ｂを通じて共有メモリ１０６、プロセッサ１０２、あるいはメモリ空間の他の部分から受け取ったデータのキャッシング機能を提供する。ＰＵコア５０４Ａはスーパーパイプラインとして実装されることが好ましいため、命令ユニット５７２は、フェッチ、デコード、依存関係のチェック、発行などを含む多数のステージを有する命令パイプラインとして実装されることが好ましい。ＰＵコア５０４Ａは、スーパースカラ構造を有することが好ましく、それによって、クロックサイクル毎に命令ユニット５７２から２以上の命令が発行される。高い演算パワーを実現するために、浮動小数点実行ステージ５７６と固定小数点実行ステージ５７８は、パイプライン構成において複数のステージを有する。必要とされる処理能力に応じた数の浮動小数点実行ステージ５７６と固定小数点実行ステージ５７８とを用いることができる。
【００６１】
ＭＦＣ５０４Ｂは、バスインターフェースユニット（ＢＩＵ）５８０と、Ｌ２キャッシュ５８２と、キャッシュ不可ユニット（ＮＣＵ；Non-Cacheable Unit）５８４と、コアインタフェースユニット（ＣＩＵ）５８６と、メモリマネジメントユニット（ＭＭＵ）５８８とを有する。低電力消費の設計目的を達成するために、ＭＦＣ５０４Ｂのほとんどは、ＰＵコア５０４Ａとバス５１２の半分の周波数（半分のスピード）で動作することが好ましい。
【００６２】
ＢＩＵ５８０は、バス５１２と、Ｌ２キャッシュ５８２と、ＮＣＵ５８４のロジックブロックとの間のインターフェースを提供する。ＢＩＵ５８０は、完全に一貫性のあるメモリオペレーションを実行するために、マスターデバイスとして動作してもよく、バス５１２上のスレーブデバイスとして動作してもよい。マスターデバイスとして動作する場合、ＢＩＵ５８０は、Ｌ２キャッシュ５８２とＮＣＵ５８４に代わって、バス５１２へのロードリクエストとストアリクエストを発信する。ＢＩＵ５８０は、バス５１２へ送ることができるコマンドの総数を限定するコマンドのフローコントロールメカニズムを実装してもよい。バス５１２上のデータオペレーションは、８ビートになるように設計してもよく、したがって、ＢＩＵ５８０は、キャッシュラインが１２８バイト前後であり、一貫性と同期の粒度が１２８キロバイトとなるように設計されることが好ましい。
【００６３】
Ｌ２キャッシュ５８２（およびそれをサポートするハードウェアロジック）は、５１２ＫＢデータをキャッシュするように設計されることが好ましい。例えば、Ｌ２キャッシュ５８２は、キャッシュ可能なロードとストア、データのプリフェッチ、命令フェッチ、命令のプリフェッチ、キャッシュオペレーション、バリアオペレーションを操作できる。Ｌ２キャッシュ５８２は、８ウエイセットアソシエイティブシステムであることが好ましい。Ｌ２キャッシュ５８２は、６つのキャストアウトキュー（例えば６つのＲＣマシン）に合わせた６つのリロードキューと、８つの（６４バイトの幅の）ストアキューとを有することができる。Ｌ２キャッシュ５８２は、Ｌ１キャッシュ５７０の中の一部または全てのデータのバックアップコピーを提供するように動作してもよい。これは特に、処理ノードがホットスワップ（動作中に変更）されたときの、復元状況において有用である。この構成は、Ｌ１キャッシュ５７０が、より少ないポートでさらに速く動作することを可能にするとともに、キャッシュ間の転送を速くすることができる（リクエストがＬ２キャッシュ５８２で止まることができるから）。この構成は、Ｌ２キャッシュ５８２にキャッシュ一貫性のマネジメントを及ばしめるメカニズムも提供する。
【００６４】
ＮＣＵ５８４は、インターフェースによってＣＩＵ５８６と、Ｌ２キャッシュ５８２と、ＢＩＵ５８０と接続されており、通常、ＰＵコア５０４Ａとメモリシステム間のキャッシュ不可なオペレーションのキューまたはバッファ回路として機能する。ＮＣＵ５８４は、ＰＵコア５０４Ａとの通信のうちの、Ｌ２キャッシュ５８２によって扱わない全ての通信を操作することが好ましい。ここで、Ｌ２キャッシュ５８２によって扱わないものとしては、キャッシュ不可なロードとストアや、バリアオペレーションや、キャッシュ一貫性オペレーションなどを挙げることができる。低電力消費の設計目的を達成するために、ＮＣＵ５８４は、半分のスピードで動作することが好ましい。
【００６５】
ＣＩＵ５８６は、ＭＦＣ５０４ＢとＰＵコア５０４Ａとの境界に設けられ、浮動小数点実行ステージ５７６、固定小数点実行ステージ５７８、命令ユニット５７２、ＭＭＵ５８８から渡され、Ｌ２キャッシュ５８２とＮＣＵ５８４へ送られるリクエストのためのルーティング、アービトレイション、フローコントロールポイントとして動作する。ＰＵコア５０４ＡとＭＭＵ５８８はフルスピードで動作し、Ｌ２キャッシュ５８２とＮＣＵ５８４は２：１のスピード比で動作可能であることが好ましい。こうすることによって、ＣＩＵ５８６に周波数境界が存在することになり、この境界がもつ機能の一つは、二つの周波数領域間でリクエストを転送し、データをリロードする際に、周波数の交錯を適切に操作することである。
【００６６】
ＣＩＵ５８６は、ロードユニット、ストアユニット、リロードユニットの３つの機能ブロックから構成される。さらに、データをプリフェッチする機能がＣＩＵ５８６により実行される。この機能は、ロードユニットの一部の機能であることが好ましい。ＣＩＵ５８６は、下記の動作を実行可能であることが好ましい：（ｉ）ＰＵコア５０４ＡとＭＭＵ５８８からのロードリクエストとストアリクエストを受信する、（ｉｉ）これらのリクエストをフルスピードクロック周波数から半分のスピードに変換する（２：１クロック周波数変換）、（ｉｉｉ）キャッシュ可能なリクエストとキャッシュ不可なリクエストとをそれぞれＬ２キャッシュ５８２とＮＣＵ５８４へルーティングする、（ｉｖ）Ｌ２キャッシュ５８２とＮＣＵ５８４へのリクエストが均等になるように調整する、（ｖ）リクエストが目標時間内に受信されると共に、オーバーフローが発生しないための、Ｌ２キャッシュ５８２とＮＣＵ５８４へ送信するリクエストのフローコントロールを提供する、（ｖｉ）ロードリターンデータを受信すると共に、これらのデータを浮動小数点実行ステージ５７６、固定小数点実行ステージ５７８、命令ユニット５７２、またはＭＭＵ５８８へルーティングする、（ｖｉｉ）スヌープリクエストを浮動小数点実行ステージ５７６、固定小数点実行ステージ５７８、命令ユニット５７２、またはＭＭＵ５８８へ転送する、（ｖｉｉｉ）ロードリターンデータとスヌープトラフィックを半分のスピードからフルスピードへ変換する。
【００６７】
ＭＭＵ５８８は、第２レベルアドレス変換手段のごとく、ＰＵコア５０４Ａのためにアドレス変換を提供することが好ましい。変換の第１レベルは、ＰＵコア５０４Ａ内において、セパレート命令と、ＭＭＵ５８８より遥かに小さくてかつ速いデータＥＲＡＴ（実効アドレスから実アドレスへの変換；Effective to Real Address Translation）アレイとにより提供されることが好ましい。
【００６８】
ＰＵ５０４は６４ビットで実装され、４〜６ＧＨz、１０Ｆ０４（Ｆａｎ−ｏｕｔ−ｏｆ−ｆｏｕｒ）で動作することが好ましい。レジスタは６４ビットの長さを有することが好ましく（特定用途のための一つ以上のレジスタは６４ビットより小さいかもしれないが）、実効アドレスは６４ビットの長さを有することが好ましい。命令ユニット５７２、レジスタ５７４、および浮動小数点実行ステージ５７６と固定小数点実行ステージ５７８は、ＲＩＳＣコンピューティング技術を達成するためにＰｏｗｅｒＰＣ技術により実装されることが好ましい。
【００６９】
このコンピュータシステムのモジュラー構造のさらなる詳細については、米国特許第６５２６４９１号公報に記載されている。その公報の記載によれば、例えば、コンピュータネットワークのメンバのプロセッサに単一のＰＥを含め、さらに、このＰＥに、ＰＵ、ＤＭＡＣおよび８個のＡＰＵを含めることができる。他の例として、そのプロセッサは、ビジュアルアライザ（ＶＳ）の構造を有してもよく、この場合、ＶＳに、ＰＵ、ＤＭＡＣおよび４つのＡＰＵを含めてもよい。
【００７０】
基本処理モジュールであるプロセッサ要素はモジュラー構造をもち、プロセッサ要素内に任意の数のサブ処理ユニットを設けることができる。プロセッサ要素が搭載されるＰＣ、サーバ、携帯機器、ゲーム機、家電製品などの各種情報機器に要求される処理性能に応じて、サブ処理ユニットの数を設計すればよい。また、情報機器には１つ以上のプロセッサ要素を設けてもよく、プロセッサ要素の数は、当該情報機器に要求される処理性能に応じて適宜選択することができる。さらにプロセッサ要素を搭載したノードがネットワークを介して接続されてなる分散処理システムを構成してもよく、当該分散処理システムに要求される処理性能に応じて、各ノードに搭載されるプロセッサ要素の数やプロセッサ要素内のサブ処理ユニットの数を設計してもよい。プロセッサ要素がモジュラー構造をもつことから、要求性能に応じてプロセッサ要素内のサブ処理ユニットの数やプロセッサ要素の数を任意に選択して実装することができ、システムに柔軟性や拡張性をもたせることができる。
【００７１】
本発明の少なくとも１つのさらなる態様によれば、上述の方法および装置は、図示したような適切なハードウエアを用いて実現することができる。そのようなハードウエアは、標準的なデジタル回路、ソフトウエアおよび／またはファームウエアプログラムを実行可能な任意の既知のプロセッサ、プログラマブル・リード・オンリー・メモリ（ＰＲＯＭ）やプログラマブル・アレイ・ロジック・デバイス（ＰＡＬ）のような１つ以上のプログラマブルなデジタルデバイス／システムなど、任意の既知の技術を用いて実装してもよい。さらに、図示された装置は、いくつかの機能ブロックに分けて示されたが、そのような機能ブロックは別々の回路により実装され、かつ／または、１つ以上の機能ユニットに結合されてもよい。さらに、本発明の様々の態様は、ソフトウエアおよび／またはファームウエアプログラムにより実装されてもよく、それらのプログラムは、運送および／または配布の便宜のため、好適な記録媒体もしくはフロッピー（登録商標）ディスク、メモリチップなどのメディアに格納されてもよい。
【００７２】
ここでは本発明の具体例について説明したが、これらの実施例は単に本発明の趣旨と応用を示すものである。したがって、請求項により定義された本発明の主旨および範囲から逸脱しないかぎり、上述した実施形態に対して様々な変更を加えることができる。
【図面の簡単な説明】
【００７３】
【図１】実施の形態に係る一つ以上のサブプロセッサを含むマルチプロセッシングシステムの構成を説明するブロック図である。
【図２】図１のプロセッシングシステムに対するバスの構成を説明する図である。
【図３】図１のプロセッシングシステムに対するバスの詳細な構成を説明するブロック図である。
【図４】図１のプロセッシングシステムに対するバスの詳細な構成を説明する概略図である。
【図５】実施の形態に係るプロセッサ要素（ＰＥ）を示す図である。
【図６】図５のシステムのサブ処理ユニット（ＳＰＵ）の構成の一例を示す図である。
【図７】図５のシステムの処理ユニット（ＰＵ）の構成の一例を示す図である。
【符号の説明】
【００７４】
１００  プロセッシングシステム、  １０２  プロセッサ、  １０４  メモリインタフェース回路、  １０６  共有メモリ、  １０８  ＰＣＩ回路、  １１０  外部インタフェース回路、  １１２  バスシステム、  １１２Ａ  第１バス、  １１２Ｂ  第２バス、  １１６  通信チャネル、  １１８  通信チャネル、  １２０  非同期境界回路、  ２０２  第１非同期ＦＩＦＯ、  ２０４  第２非同期ＦＩＦＯ。
【図１】
2006172468.tif 000003
【図２】
2006172468.tif 000004
【図３】
2006172468.tif 000005
【図４】
2006172468.tif 000006
【図５】
2006172468.tif 000007
【図６】
2006172468.tif 000008
【図７】
2006172468.tif 000009