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