(57)【要約】【課題】１つ以上のマルチプロセッサシステムを、１つ以上の外部デバイスと相互接続し、高い処理機能を実現するための新たな方法や装置に対する技術を提供する。【解決手段】１つ以上の通信バスを介して動作可能となるように相互に結合された複数のプロセッサと、コンフィギュラブルなインターフェース回路と、を有するマルチプロセッサを提供する。このインターフェース回路は、マルチプロセッサと１つ以上の外部デバイスとを相互接続することができ、かつ、マルチプロセッサの１つ以上のメモリと、1つ以上の外部デバイスの1つ以上のメモリと、の間のキャッシュのコヒーレンシーを維持することができる、コヒーレントな対称型インターフェースを有する。【選択図】図１
2006120147.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサであって、
１つ以上の通信バスを介して動作可能となるように相互に結合された複数のプロセッサと、
コンフィギュラブルなインターフェース回路と、を有し、このインターフェース回路は、（ｉ）マルチプロセッサと１つ以上の外部デバイスとを相互接続することができ、かつ、マルチプロセッサの１つ以上のメモリと、1つ以上の外部デバイスの1つ以上のメモリと、の間のキャッシュのコヒーレンシーを維持することができる、コヒーレントな対称型インターフェースを提供する第1モードで動作するように、または、（ｉｉ）マルチプロセッサと１つ以上の外部デバイスとを相互接続することができ、かつ、マルチプロセッサに少なくとも何らかのメモリ保護を与える、非コヒーレントなインターフェースを提供する第２モードで動作するように、構成されている、マルチプロセッサ。
【請求項２】
前記コンフィギュラブルなインターフェース回路は、論理層と、トランスポート層と、物理層とを含む、請求項１記載のマルチプロセッサ。
【請求項３】
前記論理層は、前記第１モードで動作するためのコヒーレンシー・ルールと、前記第２モードで動作するためのオーダリング・ルールとを定義するように構成されており、
前記トランスポート層は、前記マルチプロセッサと、前記１つ以上の外部デバイスと、の間で送信を行うためのコマンドとデータパケットの構成を定義するように構成されており、かつ、
前記物理層は、メモリ・アクセス・コマンドと、メモリ・スヌープ・リクエストと、前記マルチプロセッサと前記１つ以上の外部デバイスとの間のデータ伝送と、のタイミング及び電気的特徴を定義するように構成されている、請求項２記載のマルチプロセッサ。
【請求項４】
前記コンフィギュラブルなインターフェース回路は、メモリ・アクセス・コマンドと、メモリ・スヌープ・リクエストと、前記マルチプロセッサと前記１つ以上の外部デバイスとの間のデータ伝送を促進するよう動作可能である、請求項１記載のマルチプロセッサ。
【請求項５】
前記メモリ・アクセス・コマンドと、メモリ・スヌープ・リクエストと、データ伝送は、非同期の個別パケット形式である、請求項４記載のマルチプロセッサ。
【請求項６】
前記パケットは、所望のトランザクションを定義するアドレス情報と制御情報とを含む、請求項５記載のマルチプロセッサ。
【請求項７】
前記コンフィギュラブルなインターフェース回路は、第１インターフェースと第２インターフェースとを含み、各インターフェースは前記第１モードと第２モードで独立して動作するように構成されている、請求項１記載のマルチプロセッサ。
【請求項８】
各々が１つ以上の通信バスを介して、動作可能となるように相互に結合された複数のプロセッサを含む、1つ以上のマルチプロセッサと、
コンフィギュラブルなインターフェース回路と、を備え、前記コンフィギュラブルなインターフェース回路は、（ｉ）コヒーレントな対称型のインターフェースを提供する第１モードで動作するか、又は、（ｉｉ）非コヒーレントなインターフェースを提供する第２モードで動作するように構成されており、かつ、前記コンフィギュラブルなインターフェース回路は、前記マルチプロセッサと１つ以上の外部デバイスとを相互接続することが可能なものであり、
各マルチプロセッサの前記コンフィギュラブルなインターフェース回路は、第１インターフェースと第２インターフェースとを含み、各インターフェースは前記第１モードと前記第２モードで独立して動作するように構成されている、システム。
【請求項９】
前記第２モードで動作する前記マルチプロセッサの前記第１インターフェースを介して、前記マルチプロセッサのうちの１つと結合されている第１外部デバイスと、
前記第２モードで動作する前記マルチプロセッサの前記第２インターフェースを介して、前記マイクロプロセッサのうちの１つと結合されている第２外部デバイス、とを更に含む、請求項８記載のシステム。
【請求項１０】
各マルチプロセッサの前記第１モードで動作する第１インターフェースを介して相互接続された少なくとも２つのマルチプロセッサと、
前記第２モードで動作する前記マルチプロセッサの前記第２インターフェースを介して、前記少なくとも２つのマルチプロセッサのうちの一つと結合されている第１外部デバイスと、
前記第２モードで動作する前記マルチプロセッサの前記第２インターフェースを介して、前記少なくとも２つのマルチプロセッサのうちの他のマルチプロセッサと結合されている第２外部デバイスとを更に有す、請求項８記載のシステム。
【請求項１１】
前記第１モードで動作する前記マルチプロセッサの第１インターフェースを介して相互接続された、前記マルチプロセッサのうちの第１及び第２マルチプロセッサを有し、
前記マルチプロセッサのうちの前記第１プロセッサ及び第３マルチプロセッサを有し、前記第１プロセッサ及び前記第３のマルチプロセッサは、それぞれ前記第１モードで動作する第２インターフェースと第１インターフェースを介して相互接続されており、
前記第２及び第３マルチプロセッサの前記第２インターフェースは、1つ以上の外部デバイスと相互接続するように動作可能である、請求項８記載のシステム。
【請求項１２】
前記第２モードで動作する前記マルチプロセッサの前記第２インターフェースを介して、前記第２及び第３マルチプロセッサのうちの一方と結合されている第１外部デバイスと、
前記第２モードで動作する前記マルチプロセッサの前記第２インターフェースを介して、前記第２及び第３マルチプロセッサのうちの他方と結合されている第２外部デバイスとを更に含む、請求項１１記載のシステム。
【請求項１３】
マルチ・ポートのデータ・スイッチと、
前記第１モードで動作する前記マルチプロセッサの第１インターフェースを介して、前記スイッチと結合されている複数のマルチプロセッサとを更に含み、
前記マルチプロセッサの前記第２インターフェースは、１つ以上の外部デバイスと相互接続するように動作可能である、請求項８記載のシステム。
【請求項１４】
前記第２モードで動作する前記マルチプロセッサの前記第２インターフェースを介して、前記マルチプロセッサのうちの１つと結合されている、少なくとも１つの外部デバイスを更に含む、請求項１３記載のシステム。
【請求項１５】
１つ以上の通信バスを介して動作可能となるように相互に結合された複数のプロセッサを用意するステップと、
（ｉ）コヒーレントな対称型インターフェースを提供する第１モードで動作するように、又は、（ｉｉ）非コヒーレントなインターフェースを提供する第２モードで動作するように、インターフェース回路を構成するステップとを含み、
前記コヒーレントな対称型インターフェースは、前記マルチプロセッサと１つ以上の外部デバイスとの相互接続が可能で、この相互接続は、前記マルチプロセッサの１つ以上のメモリと、前記１つ以上の外部デバイスの1つ以上のメモリとの間のキャッシュのコヒーレンシーを維持することができるものであり、かつ、
前記非コヒーレントなインターフェースは、前記マルチプロセッサと１つ以上の外部デバイスとの相互接続を、前記マルチプロセッサに少なくとも何らかのメモリ保護を与えることができるように行うことができるものである、方法。
【請求項１６】
少なくとも１つの外部デバイスを前記インターフェースと結合するステップを更に含む、請求項１５記載の方法。
【請求項１７】
メモリ・アクセス・コマンド、メモリ・スヌープ・リクエスト、及び／又は前記プロセッサと前記1つ以上の外部デバイスとの間のデータ伝送、のサービスを行うステップを更に有する、請求項１６記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマルチプロセッサシステムアーキテクチャを用いて、マルチプロセッシング構成を実現するための方法及び装置に関する。
【背景技術】
【０００２】
最先端のコンピュータアプリケーションは、リアルタイムのマルチメディア機能を伴っているために、近年はデータスループットが高くより高速なコンピュータが常に望まれている。グラフィックアプリケーションは処理システムへの要求が大きいアプリケーションの１つであり、その理由は、グラフィックアプリケーションが所望のビジュアル結果を実現するために、比較的短時間で非常に多くのデータアクセス、データの演算処理、及びデータ操作を要求するからである。これらのアプリケーションは、１秒間に数千メガビットのデータ処理等の非常に高速な処理速度を要求する。シングルプロセッサを採用し、高速の処理速度を実現している処理システムもある一方で、マルチプロセッサアーキテクチャを利用して実装されている処理システムもある。マルチプロセッサシステムでは、複数のプロセッサが並列に（あるいは少なくとも協調して）動作し、所望の処理結果を実現することが出来る。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
マルチプロセッシングシステムには、処理のスループットや汎用性を高めるために、マトリックス構成においてインターフェースを介した相互接続を検討しているものもある。このような構成は米国特許公開公報２００５／００９７２３１号と、米国特許第６，５２６，４９１号とに開示されており、その開示の全てが本明細書に参照として組み込まれる。これらの文書に開示されている技術は様々なアプリケーションにおいて利用されうるが、これらの技術では、その他のアプリケーションで所望される柔軟性、及び／又は、プログラマビリティを与えることはできない。
【０００４】
従って、１つ以上のマルチプロセッサシステムを、１つ以上の外部デバイスと相互接続し、高い処理機能を実現するための新たな方法や装置に対する技術が必要とされている。
【課題を解決するための手段】
【０００５】
本発明の１つ以上の態様によれば、プロセッシングエレメント（PE：Processing Element,なお、PEでは複数の異なるパラレルプロセッサが採用されている）は、ブロードバンドインターフェースコントローラ（BIC：Broadband Interface Controller）を備えており、該ＢＩＣは他のＰＥやメモリサブシステム、スイッチ、ブリッジチップなどを取り付けるために、コヒーレントの、あるいは非コヒーレントの高性能の相互接続を提供する。ＢＩＣは種々のシステム要件を満たすよう、様々なプロトコルや帯域幅を、２つのフレキシブルなインターフェースに提供する。インターフェースは、２つのＩ／Ｏインターフェース（ＩＯＩＦ０／１）として、あるいはＩ／ＯとコヒーレントＳＭＰインターフェース（ＩＯＩＦ及びＢＩＦ）のいずれかとして構成されうる。ＢＩＣがコヒーレントＳＭＰインターフェースとして動作するように設定されている場合、ＢＩＣは高性能でコヒーレントな相互接続をＰＥに提供する。ＢＩＣがＩ／Ｏインターフェースとして動作するように設定されている場合、ＢＩＣはＰＥに高性能（非コヒーレント）の相互接続を提供する。
【０００６】
ＢＩＣは論理層、トランスポート層、データリンク層、及び物理リンク層を有している。論理層（及び、実施形態によってはトランスポート層）は、コヒーレントＳＭＰインターフェース（ＢＩＦ）と非コヒーレントインターフェース（ＩＯＩＦ）間のＢＩＣの動作を変更するように構成されうる。論理層はオーダリングやコヒーレントルールを含む、ＢＩＦ又はＩＯＩＦの基本動作を定義する。トランスポート層はデバイス間にコマンドやデータパケットがどのように転送されるかを定義する。コマンドやデータパケットは好ましくは、データリンク層へ送るために、物理層群（ＰＬＧ：Physical Layer Groups）と呼ばれる小さなユニットに分けられる。データリンク層は送信側と受信側の間に（実質的に）情報を間違いなく確実に送信する機構を定義する。物理層はＩ／Ｏドライバの電気的特徴やタイミングを定義し、また、データリンクエンベロープが物理層を通じてどのように送信されるかを記述する。物理リンク層は好ましくは、２セットまでの論理／トランスポート／データリンク層の同時並行処理をサポートし、また、その２つの間の物理層の、利用可能な帯域幅の割当てが設定可能な方法をサポートする。
【０００７】
ＢＩＣの論理層、トランスポート層、データリンク層、及び物理層の機能や動作は好ましくは以下の通りである。インターフェースの帯域幅の合計が物理層の最大帯域幅を超えない範囲で、物理層の帯域幅が２つのインターフェース間に分割される。一例では、物理層の出力帯域幅自体の合計値は３５ＧＢ／ｓ、入力帯域幅自体の合計値は２５ＧＢ／ｓとなり得る。
【０００８】
本発明の１つ以上の更なる実施形態によれば、ＢＩＣのフレキシブルなインターフェースにより、１つ以上のプロセッサエレメントが配置されるシステム構成を実質的にフレキシブルなものとし得る。例えばＢＩＣは、ＰＥと２つのデバイス間に対応の非コヒーレントインターフェースを設けるために、デュアルＩ／Ｏインターフェース（ＩＯＩＦ０及びＩＯＩＦ１）を実装するように動作することができる。ＢＩＣの物理層入力／出力帯域幅は、２つのインターフェースの合計値が物理層の帯域幅の合計値を超えない範囲で、２つのＩＯＩＦインターフェース間に分割されうる（例：出力３０ＧＢ／ｓ、入力２５ＧＢ／ｓ）。
【０００９】
別の実施形態によれば、２つのプロセッサエレメントはコヒーレント対称型マルチプロセッサ（ＳＭＰ：symmetric multiprocessor）インターフェース（又は、ＢＩＦ）構造において、その対応のＢＩＣを採用している各々により、カスケード接続されうる。各プロセッシングエレメントのコヒーレントＳＭＰインターフェース（ＢＩＦ）は、その間にコヒーレントインターフェースを設けるために相互に接続されうる。各プロセッシングエレメントのＩＯＩＦは、非コヒーレントに他のデバイスとデータを送受信する。同様に、各ＢＩＣの物理層入力／出力帯域幅が、その２つのインターフェース間に分割されうる。
【００１０】
更なる別の実施形態によると、２つ以上のプロセッサエレメントが、コヒーレントＳＭＰインターフェース（ＢＩＦ）構成において、その対応のＢＩＣを採用している各々により、カスケード接続されうる。中央に配置されているプロセッサエレメントは、２つのＢＩＦを持つＢＩＣを採用しうる。末端に配置されているプロセッサエレメントのペアは、中央に配置されているプロセッサエレメントを構成し、また、それぞれが１つのＢＩＦと１つのＩＯＩＦを持つＢＩＣを採用している。各プロセッシングエレメントのＢＩＦは、その間にコヒーレントインターフェースを設けるために、相互に接続されうる。端のプロセッシングエレメントのＩＯＩＦは、非コヒーレント法に他のデバイスとのデータを送受信しうる。
【００１１】
本発明の更なる別の実施形態によれば、２つ以上のプロセッサエレメントは、Ｉ／Ｏ及びコヒーレントＳＭＰインターフェース（ＩＯＩＦ及びＢＩＦ）構成において、その対応のＢＩＣを採用している各々により、カスケード接続されうる。各プロセッシングエレメントのコヒーレントＳＭＰインターフェースは、プロセッシングエレメントを相互に効果的に結合するスイッチと結合され、その間にコヒーレントインターフェースを設けることができる。各プロセッシングエレメントのＩＯＩＦは非コヒーレントにシステムの他のデバイスとのデータの送受信をしうる。
【発明を実施するための最良の形態】
【００１２】
添付の図面を参照しつつ、ここに記載する本発明の説明を読めば、他の態様、機能および利点などは当業者に自明となるであろう。
【００１３】
本発明を説明するために、現在の好ましい形態を図面の形式に示すが、本発明は図示したとおりの構成ならびに手段に限定されないことを理解されたい。
【００１４】
以下に本明細書で説明している1つ以上の特徴を実行するのに適した、マルチプロセッサシステムのための好ましいコンピュータアーキテクチャを説明する。1つ以上の実施形態によれば、マルチプロセッサシステムは、ゲームシステム、家庭用端末、ＰＣシステム、サーバーシステム、及びワークステーションなどのメディアリッチアプリケーションを、スタンドアローン処理、及び／又は分散処理するために動作することができる、シングルチップソリューションとして実装されうる。ゲームシステムや家庭用端末などのいくつかのアプリケーションでは、リアルタイムの演算処理は必須である。例えば、リアルタイムの分散ゲームアプリケーションでは、ユーザーにリアルタイムの経験をしていると思わせる程速く、１つ以上のネットワークイメージの復元、３Ｄコンピュータグラフィック、オーディオ生成、ネットワーク通信、物理的シミュレーション、及び人工知能処理が実行される必要がある。従って、マルチプロセッサシステムの各プロセッサは、短時間で、かつ予測可能時間でタスクを完了する必要がある。
【００１５】
このために、また、本コンピュータアーキテクチャによれば、マルチプロセッシングコンピュータシステムの全プロセッサは、共通の演算モジュール（あるいはセル）から構成される。この共通の演算モジュールは、構造が一貫しており、また好ましくは、同じ命令セットアーキテクチャを採用している。マルチプロセッシングコンピュータシステムは、１つ以上のクライアント、サーバー、ＰＣ、モバイルコンピュータ、ゲームマシン、ＰＤＡ、セットトップボックス、電気器具、デジタルテレビ、及びコンピュータプロセッサを使用する他のデバイスから形成されうる。
【００１６】
複数のコンピュータシステムもまた、所望に応じてネットワークのメンバーとなりうる。一貫モジュール構造により、マルチプロセッシングコンピュータシステムによるアプリケーション及びデータの効率的高速処理が可能になる。またネットワークが採用される場合は、ネットワーク上にアプリケーション及びデータの高速送信が可能にする。この構造はまた、大きさや処理能力が様々なネットワークのメンバーの構築を単純化し、また、これらのメンバーが処理するアプリケーションの準備を単純化する。
【００１７】
図１と図２を参照すると、基本的な処理モジュールはプロセッサエレメント（ＰＥ）５００である。ＰＥ５００はＩ／Ｏインターフェース５０２、プロセッシングユニット（ＰＵ）５０４、及び複数のサブプロセッシングユニット５０８、すなわち、サブプロセッシングユニット５０８Ａ、サブプロセッシングユニット５０８Ｂ、サブプロセッシングユニット５０８Ｃ、及びサブプロセッシングユニット５０８Ｄを備えている。なお、好適には、ＰＵとしてパワーＰＣ（ＰＰＥ: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）技術を採用しているマイクロプロセッサアーキテクチャであるパワーＰＣ（ＰｏｗｅｒＰＣ）コアを用いて実装される。ＲＩＳＣは、単純な命令の組合せを用いて、より複雑な命令を実行する。従って、プロセッサのタイミングは、単純で高速の動作に基づくものであり、マイクロプロセッサがより多くの命令を所定のクロック速度で実行できるようにする。
【００２２】
ＰＵ５０４はサブプロセッシングユニット５０８により、データ及びアプリケーション処理をスケジューリングし調整を行う、メインプロセッシングユニットの役割を果たしているサブプロセッシングユニット５０８のうちの、１つのサブプロセッシングユニットにより実装されうる。更に、プロセッサエレメント５００内には１つ以上の実装されたＰＵが存在しうる。なお、オンチップのＰＵを複数設けるようにしてもよい。
【００２３】
本モジュール構造によれば、特定のコンピュータシステムにおけるＰＥ５００の数は、そのシステムが要求する処理能力に基づく。例えば、サーバーにおけるＰＥ５００の数は４、ワークステーションにおけるＰＥ５００の数は２、ＰＤＡにおけるＰＥ５００の数は１とすることができる。特定のソフトウエアセルの処理に割当てられるＰＥ５００のサブプロセッシングユニット数は、セル内のプログラムやデータの複雑度や規模により決定される。このように、ＰＥはモジュール構造を有していることから拡張性が高く、搭載するシステムのスケール、パフォーマンスに応じて容易に拡張することができる。
【００２４】
モジュラーインターコネクトバス（ＭＩＢ：Modular Interconnect Bus）５１２はコヒーレントバスであり、それぞれが複数の同時データ転送をサポートする多数の（ハーフレート）リングとして構成される。
【００２５】
ＭＩＣ５１１は、ＰＥと共有メモリ５１４を実装する複数のメモリバンク間の通信を促進するように動作することが出来る。ＭＩＣ５１１は好ましくは、プロセッサ及びＩ／Ｏインターフェースに対して、非同期的に動作する。
【００２６】
ＢＩＣ５１３はＭＩＢ５１２を論理的拡張部であり、このＢＩＣ５１３によってＭＩＢ５１２とＩ／Ｏインターフェース５０２との間に非同期の相互接続を提供する。ＢＩＣ５１３は、他のＰＥ、メモリサブシステム、スイッチ、ブリッジチップなどを取り付けるために、コヒーレントあるいは非コヒーレントの高性能の相互接続を提供する。ＢＩＣ５１３は、種々のシステム要件を満たすよう、様々なプロトコルや帯域幅を、２つのフレキシブルなインターフェースに提供する。
インターフェースは、２つのＩ／Ｏインターフェース（ＩＯＩＦ０／１）として、あるいはＩ／ＯとコヒーレントＳＭＰインターフェース（ＩＯＩＦ及びＢＩＦ）のいずれかとしてとして構成されうる。フレキシブルなインターフェースは７送信バイト、５受信バイトで動作する。ＢＩＣがコヒーレントＳＭＰインターフェースとして動作するように構成されている場合、ＢＩＣは高性能でコヒーレントな相互接続をＰＥに提供する。ＢＩＣ５１３がＩ／Ｏインターフェースとして動作するように構成されている場合、ＢＩＣ５１３は高性能（非コヒーレント）の相互接続をＰＥに提供する。（ＢＩＦあるいはＩＯＩＦとして動作中の）ＢＩＣ５１３は、高速インターフェースを要求する他のアプリケーションにも使用されうる。
【００２７】
ＢＩＣ５１３はＰＥと他のＰＥ、メモリサブシステム、スイッチ、ブリッジチップなどとの間のトランザクションの実施を促進する。ＢＩＦやＩＯＩＦトランザクションは通常、メモリアクセスリクエスト（データに対するリクエスト）である。メモリアクセスリクエストは、ＰＥ内のローカルキャッシュ階層あるいはＰＥと接続されている外部デバイスによってはサービスすることのできないデータトランザクションの結果もたらされるものである。メモリアクセスリクエストは、１つ以上のトランザクションを要求しうる。トランザクションはマスタデバイス又はキャッシュコヒーレントコントローラ（スヌーパ）により開始され、マスタとスレーブ間に一連のパケット転送をもたらしうる。ＢＩＦ及びＩＯＩＦトランザクションは３つのフェーズに分けられる。即ち、それらはコマンド（ロードやストアなど）、スヌープ、及びデータ（しかしながら全トランザクションがデータフェーズを要求するわけではない）の各フェーズである。
【００２８】
ＢＩＣ５１３のＢＩＦやＩＯＩＦの特徴は、多くの異なるシステム構成や次世代のコンプライアンスプロセッサをサポートするために、スケーラブルでフレキシブルに動作できることである。ＢＩＣ５１３の特徴には、
（i）キャッシュのコヒーレンシーとデータの同期化をサポートするパケットプロトコル（ＢＩＦとして動作している場合）、
（ii）オーダリングとコヒーレンシーのためのフラッグを備えたパケットプロトコル（ＩＯＩＦとして動作している場合）、
（iii）完全にパイプライン化したコマンドトランザクション、データトランザクション、及びレスポンス／応答トランザクション、
（iv）スプリットトランザクション、及び（ｖ）クレジットベースのコマンドやデータのサポート、
が含まれる。
【００２９】
図３を参照すると、論理層（少なくとも２つの論理層０、１を含む）、トランスポート層（同様に少なくとも２つのトランスポート層０、１を含む）、データリンク層（同様に少なくとも２つのデータリンク層０、１を含む）、及び物理リンク層を備えている、ＢＩＣ５１３の１つ以上の態様のブロック図が示されている。論理層（及び実施形態によってはトランスポート層）は、コヒーレントＳＭＰインターフェース（ＢＩＦ）と非コヒーレントインターフェース（ＩＯＩＦ）間のＢＩＣ５１３の動作を変更するように構成されうる。
【００３０】
論理層は、オーダリングやコヒーレントルールを含む、ＢＩＦ又はＩＯＩＦの基本動作を定義する。従って、ＢＩＦ又はＩＯＩＦを使用するＰＥに取り付けられているデバイスは、論理層の仕様に完全に対応している必要がある。しかしながらアプリケーションによっては、論理層の仕様のサブセットを実装しても、なおＢＩＣ５１３を介してＰＥと動作できるものもある。論理層の情報は、基本コマンド（アドレス）、データ、及び応答パケットの概要を表す。論理層がコヒーレントＳＭＰインターフェースに対して構成されている場合は、スヌープ応答パケットが許容される。論理層が非コヒーレントインターフェースに対して構成されている場合は、応答パケットのみが許容される。
【００３１】
トランスポート層は、デバイス間にコマンドとデータパケットがどのように転送されるかを定義する。好ましくは、コマンド及びデータパケットは、データリンク層に送るために物理層群（ＰＬＧｓ：Physical Layer Groups）と呼ばれる小さなユニットに分けられる。同様に、トランスポート層は、ＰＬＧの分配ペースの決定に使用される、つまり、ＰＬＧがどのように分配されるかを決定する、フロー制御機構の定義を含む。トランスポート層は好ましくは、システム又はアプリケーションの必要性に合うようにカスタマイズされうる。
【００３２】
データリンク層は、送信機と受信機間に情報を間違いなく確実に送信する機構を定義する。同様に、データリンク層には、物理リンクに対するトレーニングシーケンス又は初期化が含まれる。また、データリンク層は好ましくは、システム又はアプリケーションの必要性に合うようにカスタマイズされうる。
【００３３】
物理層はＩ／Ｏドライバの電気的特徴やタイミングを定義し、また、データリンクエンベロープが物理リンクを通ってどのように送信されるかを記述する。好ましくは、物理リンク層は２セットまでの論理／トランスポート／データリンク層の同時並行処理をサポートし、また、その２つの間の物理層の利用可能な帯域幅の割当が設定可能な方法をサポートする。物理層はまた、プリント回路基板（ＰＣＢ：Printed Circuit Board）のルーティングやパッケージングのガイドラインを定義する。物理層の目的には、Ｉ／Ｏドライバの物理的特徴（速度、単方向性対双方向性、Ｉ／Ｏ数など）を隠蔽することと、データリンク層に一貫したインターフェースを与えること、がある。入力／出力機能は、実際に帯域幅のサポートが可能な、Ｒａｍｂｕｓ  ＲＲＡＣ  Ｉ／Ｏを用いて実現されうる。フレキシビリティを高めるために、ＲＲＡＣの送信機と受信機はプロセッサとメモリに対して非同期的に動作し、利用可能な帯域幅をその２つのインターフェース間に設定可能としている。
【００３４】
上述のＢＩＣの論理層、トランスポート層、データリンク層、及び物理層の機能や動作を考えると、別のシステム構成と同じく、相対的に高いＰＥの帯域幅要件がサポートされうる。例えば、物理層はペアにつき５ＧＢ／ｓで実行するように、また、出力帯域幅自体の合計値が３５ＧＢ、入力帯域幅自体の合計値が２５ＧＢを有するように、動作することができる。物理層の帯域幅は、最大帯域幅が出力３０ＧＢ／ｓ、入力２５ＧＢ／ｓである、２つのインターフェース間に分割されうる。各インターフェースの帯域幅は、５ＧＢ／ｓインクリメントで構成されうる。好ましくは、２つのインターフェースの合計値は、物理層の帯域幅の合計値を超えることはできない。
【００３５】
ＢＩＣ５１３のインターフェースの更なる詳細を以下に説明する。ＢＩＣ５１３はＰＥ、メモリサブシステム、スイッチ、ブリッジチップ等の間のポイント−ツー−ポイントバスであり、また、ＭＩＢ５１２の論理的拡張である。ＢＩＣ５１３はブリッジチップやスイッチを備えた多くのデバイスの取付けをサポートする。単一の物理デバイスは複数のデバイスタイプのタスクを実行するように動作することができる。これらのデバイスタイプとしては、マスタ、スヌーパ、メモリ、バスアダプタ、Ｉ／Ｏブリッジ、が挙げられる。
マスタは、例えば、コマンドバスを調停し駆動するバスデバイスなどであり、スヌーパは、例えば、他のシステムのキャッシュと、キャッシュデータのコヒーレントを維持するために、コマンドバス上の動きを監視するバスデバイスなどである。バスアダプタあるいはＩ／Ｏブリッジはキャッシュを有することができ、その場合は、スヌーパのように機能し、例えばキャッシュデータと他のシステムキャッシュ間のコヒーレントを維持する。
スレーブは、例えば、メモリの読出しあるいは書込みコマンドに応答するバスデバイスなどである。スレーブはメモリ、あるいはＩ／Ｏレジスタ、あるいはその両方を有すことが出来る。メモリデバイスはスレーブの一例である。
メモリは、例えば、メモリの読出しあるいは書込みに応答し、コヒーレントオペレーションに対する肯定応答を処理するバスデバイスなどである。メモリの一部がリモートバスに取り付けられている場合、バスアダプタはそのリモートメモリ空間へのメモリアクセスに対して、メモリとしての役割を果たす。
バスアダプタは、例えば、他のバスへのゲートウエイなどであり、同一の、あるいは異なるバスアーキテクチャを有し、また、好ましくはリターンプロトコル（あるいは再実行プロトコル）を用いて、コヒーレントオペレーションをリモートバスへ送る。
Ｉ／Ｏブリッジは、例えば、Ｉ／Ｏバスへのゲートウエイなどであり、排他状態あるいは変更状態においてデータをキャッシュしない。ブリッジではＩ／Ｏバスにコヒーレンシーを与えないであろう。しかしながら、ブリッジは、好ましくは、Ｉ／Ｏデバイスにより共有状態でキャッシュされたデータに対してＩ／Ｏディレクトリを有し、従って、Ｉ／Ｏバスへコヒーレントオペレーションを送るために再実行プロトコルを使用しない。ブリッジはプログラムＩ／Ｏ（ＰＩＯ）あるいはメモリマップＩ／Ｏデバイスをサポートしうる。
【００３６】
ＢＩＣ５１３のアーキテクチャは好ましくは、別々のコマンド、データ、及び（スヌープ）応答パケットに基づく。好ましくは、これらのパケットは独立して実行され、コマンドパケットがデータパケットに先行することが好ましい場合を除いて、コマンドパケットとデータパケット間に時差相関がないスプリットトランザクションを可能にする。リクエスト及び応答はタグ付けされ、アウトオブオーダー応答を可能にする。このアウトオブオーダー応答は、他のバスへのＩ／Ｏや、又は非一様メモリアクセス（ＮＵＭＡ：Non-Uuniform Mmemory access）環境では一般的である。
【００３７】
コヒーレントＳＭＦ構成では、コマンドパケットはＢＩＦ上で実施されるトランザクションを説明するアドレス及び制御情報を有している。アドレスコンセントレーターはコマンドパケットを受信し、処理するコマンドの順番を決定し、コマンドを選択する。選択されたコマンドパケットは、マスタデバイスにより転送コマンド形式でＢＩＦのスレーブデバイスへ転送（送信）される。反映コマンドパケットの受信後、スレーブはスヌープ応答パケット形式でマスタへ応答を送る。スヌープ応答パケットは反映コマンドパケットの受入あるいは拒絶を示す。場合によっては、スレーブはトランザクションに対する最終送信先ではない。これらの場合、スレーブは最終送信先へリクエストを送る責任があり、また、スヌープ応答パケットを生成しない。一般に、コマンドパケットはデータトランザクションに対するリクエストである。コヒーレントの管理や同期化などのリクエストに対して、コマンドパケットはコンプリートトランザクションである。リクエストがデータトランザクションに対するものである場合、制御情報及びリクエストデータを有するデータパケットが、マスタとスレーブ間で転送される。トランスポート層の定義に応じて、コマンドやデータパケットがＢＩＦ上の両デバイスにより、同時に送受信されうる。
【００３８】
非コヒーレント構成では、コマンドパケットは好ましくはＩＯＩＦ上に実行されるトランザクションを説明するアドレス及び制御情報を有している。コマンドパケットはＩＯＩＦコマンド形式でマスタによりＩＯＩＦ上のスレーブデバイスへ送られる。コマンドパケットの受信後、スレーブはＩＯＩＦ応答パケット形式でマスタへ応答を送る。応答パケットはＩＯＩＦコマンドパケットの受入あるいは拒絶を示す。場合によっては、スレーブはトランザクションに対する最終送信先ではないこともある。これらの場合に対して、スレーブは最終送信先へリクエストを送るよう応答できる。一般にＩＯＩＦコマンドパケットはデータトランザクションに対するリクエストである。割込みリクエストや割込み再送信オペレーションリクエストなどに対しては、コマンドパケットは、コンプリートトランザクションである。リクエストがデータトランザクションに対するものである場合、制御情報やリクエストデータを含むデータパケットはマスタとスレーブ間に転送される。トランスポート層の定義に応じて、コマンドやデータパケットが、ＩＯＩＦの両デバイスにより同時に送受信されうる。
【００３９】
ＢＩＣ５１３はＭＩＢとＩ／Ｏインターフェース間に非同期インターフェースを提供する。これによりＢＩＣは、速度一致ＳＲＡＭバッファ、論理、及び３つのクロックドメインを有する。プロセッサ側はハーフレートで動作し、Ｉ／Ｏ側はＲＲＡＣの３分の１の速度で、また小さなディストリビューションネットワークはＲＲＡＣの半分の速度で動作する。送信機と受信機が高速であるために、ＲＲＡＣとＢＩＣ５１３は較正を必要とする。ＢＩＣ５１３の較正には、インターフェースを備えているバイト間の歪みをなくすために、エラスティックバッファが用いられる。
【００４０】
上述のように、ＢＩＣ５１３は２つの柔軟なインターフェース、即ち（ｉ）デュアルＩ／Ｏインターフェース（ＩＯＩＦ０／１）、及び（ｉｉ）Ｉ／Ｏ及びコヒーレントＳＭＰインターフェース（ＩＯＩＦ及び＆ＢＩＦ）を提供する。これにより、１つ以上のプロセッサエレメントが配置されるシステムコン構成が非常にフレキシブルになる。
【００４１】
例えば、図４に例示しているように、ＢＩＣ５１３はＰＥ５００と２つのデバイス、つまりデバイス０とデバイス１間にそれぞれの非コヒーレントインターフェースを設けるために、デュアルＩ／Ｏインターフェース（ＩＯＩＦ０及びＩＯＩＦ１）を実装するように動作することができる。この構成では、単一のＰＥ５００がＩＯＩＦ０とＩＯＩＦ１のそれぞれとデータの送受信をし得る。
【００４２】
上述のように、ＢＩＣ５１３の物理層入力／出力帯域幅は、２つのインターフェースの合計が、物理層の帯域幅の合計（出力３０ＧＢ／ｓ、入力２５ＧＢ／ｓ、など）を超えない限りは、２つのインターフェース（ＢＩＦ−ＢＩＦ、ＩＯＩＦ−ＩＯＩＦ、及び／又はＢＩＦ−ＩＯＩＦ）間に分割されうる。デバイス０がグラフィックエンジンなどのスループットが高いデバイス、デバイス１がＩ／Ｏブリッジなどのスループットが低いデバイスであると仮定すると、ＢＩＣ５１３の帯域幅は、適切な構成を実現するために最新の方法で分割されうる。例えば、グラフィックエンジン（デバイス０）へのＩＯＩＦ０非コヒーレントインターフェースは、出力３０ＧＢ／ｓ、入力２０ＧＢ／ｓであることができ、一方でＩ／Ｏブリッジ（デバイス１）へのＩＯＩＦ１非コヒーレントインターフェースは（２．５ＧＢ／ｓのインクリメントが可能であると仮定すると）出力２．５ＧＢ／ｓ、入力２．５ＧＢ／ｓでありうる。
【００４３】
図５に例示しているように、２つのプロセッサエレメント５００は、コヒーレントＳＭＰインターフェース（ＢＩＦ）構成において、その対応のＢＩＣ５１３を採用している各々によりカスケード接続されうる。各プロセッシングエレメント５００のコヒーレントＳＭＰインターフェース（ＢＩＦ）は、その間にコヒーレントインターフェースを設けるために相互に接続される。各プロセッシングエレメント５００のＩＯＩＦは、非コヒーレントに他のデバイスとのデータの送受信をしうる。
【００４４】
同様に、ＢＩＣ５１３の物理層入力／出力帯域幅がその２つのインターフェース間に分割されうる。デバイス０とデバイス１が、Ｉ／Ｏブリッジなどの相対的にスループットが低いデバイスであると仮定すると、それぞれのＢＩＣ５１３の帯域幅は適切な構成を実現するために、最新の方法で分割されうる。例えば、デバイス０へのＩＯＩＦ０非コヒーレントインターフェースは、出力５ＧＢ／ｓ、入力５ＧＢ／ｓ、デバイス１へのＩＯＩＦ非コヒーレントインターフェースは、出力５ＧＢ／ｓ、入力５ＧＢ／ｓ、また、プロセッシングエレメント５００間のコヒーレントＢＩＦインターフェースは、入力２０ＧＢ／ｓ、出力２０ＧＢ／ｓでありうる。
【００４５】
図６に例示しているように、２つ以上のプロセッサエレメント５００は、コヒーレントＳＭＰインターフェース（ＢＩＦ）構成において、その対応するＢＩＣ５１３を採用している各々によりカスケード接続されうる。中央のプロセッサエレメント５００は、２つのＢＩＦを有するＢＩＣ５１３を採用している。各プロセッシングエレメント５００のＢＩＦは、その間にコヒーレントインターフェースを設けるために、相互に結合されている。端のプロセッシングエレメント５００のＩＯＩＦは非コヒーレントに他のデバイスとのデータの送受信を行う。
【００４６】
図７に示すように、２つ以上のプロセッサエレメント５００は、Ｉ／Ｏ及びコヒーレントＳＭＰインターフェース（ＩＯＩＦ及びＢＩＦ）構成で、その対応するＢＩＣ５１３を採用している各々によりカスケード接続されうる。各プロセッシングエレメント５００のコヒーレントＳＭＰインターフェース（ＢＩＦ）は、プロセッシングエレメント５００を相互に効果的に結合し、その間にコヒーレントインターフェースを設けるスイッチと結合されうる。各プロセッシングエレメント５００のＩＯＩＦは非コヒーレントにシステムの他のデバイスとデータを送受信し得る。
【００４７】
ＳＰＵは、変換された、また、保護されたコヒーレントＤＭＡを通じてメモリシステムをＰＰＵと共有するが、データや命令は、各ＳＰＵ専用の２５６ｋのローカルストレージ（ＬＳ）によりサポートされる、専用の実アドレススペースに格納される。ＳＰＵはプロセッサエレメントのコンピュータ性能の多くを提供する。８台のプロセッサの各々は、倍精度浮動小数点以外の全演算に対し完全にパイプライン化されている、１２８ビット幅の２命令同時発行ＳＩＭＤデータフローを有している。オペランドは１２８ビット１２８エントリの統一されたレジスタファイルにより提供される。各ＳＰＵはＭＩＢへのフル帯域幅の同時読出しや書込みＤＭＡアクセス、１６バイトのＳＰＵのロード及びストア、及び命令（プレ）フェッチ、をサポートする２５６ｋＢのシングルポートのＬＳを有している。ＳＰＵは関連のＭＦＣへの有効アドレス（ＥＡ:Effective Address）を有するＤＭＡコマンドを発行することにより、メインストレージにアクセスする。ＭＦＣはＥＡへ標準のパワーアーキテクチャアドレス変換を採用し、ローカルストレージとメインストレージ間にデータを非同期に転送する。これにより、オーバーラッピング通信と演算処理が出来るようになり、また、リアルタイムの演算を容易にする。ＤＭＡ、大きなレジスタファイル、及び、標準の順次実行動作を介した、共有メモリへのＳＰＵアクセスは、多目的のストリーミングプログラミング環境を提供する。各ＳＰＵは、そのリソースが有効プログラムによってのみアクセスされうるような手法で動作するように動的に構成されうる。
【００４８】
図８に一般的なサブプロセッシングユニット（ＳＰＵ）５０８の更なる詳細を例示する。ＳＰＵ５０８アーキテクチャは好ましくは、多目的プロセッサ（平均して高性能を広範なアプリケーションに実現するように設計されているもの）と、特殊目的プロセッサ（高性能を単一のアプリケーションに実現するように設計されているもの）間の間隙を埋める。ＳＰＵ５０８は、ゲームアプリケーション、メディアアプリケーション、ブロードバンドシステムなどに高性能を実現するように、また、リアルタイムアプリケーションのプログラマーに高度な制御を提供するように設計される。ＳＰＵ５０８は、グラフィックジオメトリーパイプライン、サーフェースサブディビジョン、高速フーリエ変換、画像処理キーワード、ストリームプロセッシング、ＭＰＥＧのエンコード／デコード、エンクリプション、デクリプション、デバイスドライバの拡張、モデリング、ゲーム物理学、コンテンツ制作、音響合成及び処理が可能である。
【００４９】
サブプロセッシングユニット５０８は２つの基本機能ユニットを有し、それらはＳＰＵコア５１０Ａ及びメモリフローコントローラ（ＭＦＣ）５１０Ｂである。ＳＰＵコア５１０Ａはプログラムの実行、データ操作、などを行い、一方でＭＦＣ５１０ＢはシステムのＳＰＵコア５１０ＡとＤＲＡＭ５１４の間のデータ転送に関連する関数を実施する。
【００５０】
ＳＰＵコア５１０Ａはローカルメモリ５５０、命令ユニット（ＩＵ：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）５８６、及びメモリ管理ユニット（ＭＭＵ）５８８を備えている。殆どのＭＦＣ５０４Ｂは、低電力化設計とするために、ＰＵコア５０４Ａとバス１０８と比べて、半分の周波数（半分の速度）で実行する。
【００６７】
ＢＩＵ５８０はバス１０８とＬ２キャッシュ５８２とＮＣＵ５８４論理ブロック間にインターフェースを提供する。このために、ＢＩＵ５８０はバス１０８上で、十分にコヒーレントなメモリオペレーションを実施するために、マスタデバイスとして、また同様にスレーブデバイスとして機能する。マスタデバイスとして、ＢＩＵ５８０はＬ２キャッシュ５８２とＮＣＵ５８４のために機能するため、バス１０８へロード／ストアリクエストを供給する。ＢＩＵ５８０はまた、バス１０８へ送信されうるコマンドの合計数を制限するコマンドに対し、フロー制御機構を実装しうる。バス１０８のデータオペレーションは、８ビート要するように設計され、そのために、ＢＩＵ５８０は好ましくは１２８バイトキャッシュラインを有するように設計され、また、コヒーレンシーと同期化の粒度単位は１２８ＫＢである。
【００６８】
Ｌ２キャッシュメモリ５８２（及びサポートハードウエア論理回路）は、好ましくは、５１２ＫＢのデータをキャッシュするように設計されている。例えば、Ｌ２キャッシュ５８２はキャッシュ可能なロード／ストア、データプレフェッチ、命令プレフェッチ、命令プレフェッチ、キャッシュオペレーション、及びバリアオペレーションを処理しうる。Ｌ２キャッシュ５８２は好ましくは８ウエイのセットアソシエイティブシステムである。Ｌ２キャッシュ５８２は６つのキャストアウトキュー（６つのＲＣマシンなど）と一致する６つのリロードキューと、８つ（６４バイト幅）のストアキューを備えうる。Ｌ２キャッシュ５８２はＬ１キャッシュ５７０において、一部の、あるいは全てのデータのコピーをバックアップするように動作しうる。この点は、処理ノードがホットスワップである場合に状態を回復するのに便利である。この構成により、Ｌ１キャッシュ５７０が少ないポート数でより速く動作することができ、また、より速くキャッシュツーキャッシュ転送ができる（リクエストがＬ２キャッシュ５８２でストップしうるため）。この構成はまた、キャッシュコヒーレンシー管理をＬ２キャッシュメモリ５８２へ送るための機構も提供しうる。
【００６９】
ＮＣＵ５８４は、ＣＩＵ５８６、Ｌ２キャッシュメモリ５８２、及びＢＩＵ５８０と連動しており、通常は、ＰＵコア５０４Ａとメモリシステム間のキャッシュ不可能なオペレーションに対して、キューイング／バッファリング回路として機能する。ＮＣＵ５８４は好ましくは、キャッシュ抑制ロード／ストア、バリアオペレーション、及びキャッシュコヒーレンシーオペレーションなどの、Ｌ２キャッシュ５８２により処理されないＰＵコア５０４Ａとの全ての通信を処理する。ＮＣＵ５８４は好ましくは、上述の低電力化目的を満たすように、半分の速度で実行されうる。
【００７０】
ＣＩＵ５８６は、ＭＦＣ５０４ＢとＰＵコア５０４Ａの境界に配置され、実行ステージ５７６、５７８、命令ユニット５７２、及びＭＭＵユニット５８８からのリクエストに対し、また、Ｌ２キャッシュ５８２及びＮＣＵ５８４へのリクエストに対し、ルーティング、アービトレーション、及びフロー制御ポイントして機能する。ＰＵコア５０４Ａ及びＭＭＵ５８８は好ましくはフルスピードで実行され、一方でＬ２キャッシュ５８２及びＮＣＵ５８４は２：１の速度比で動作することができる。従って、周波数の境界がＣＩＵ５８６に存在し、その機能の一つは、２つの周波数ドメイン間でリクエストの送信及びデータのリロードを行いながら、周波数の差を適切に処理することである。
【００７１】
ＣＩＵ５８６は３つの機能ブロックを有しており、それらは、ロードユニット、ストアユニット、及びリロードユニットである。更に、データプレフェッチ関数がＣＩＵ５８６により実施され、また好ましくは、ロードユニットの機能部である。ＣＩＵ５８６は、好ましくは、
（i）ＰＵコア５０４ＡとＭＭＵ５８８からのロード及びストアリクエストを受ける、
（ii）フルスピードのクロック周波数をハーフスピードに変換する（２：１のクロック周波数変換）、
（iii）キャッシュ可能なリクエストをＬ２キャッシュ５８２へ送り、キャッシュ不可能なリクエストをＮＣＵ５８４へ送る、
（iv）Ｌ２キャッシュ５８２に対するリクエストとＮＣＵ５８４に対するリクエストを公正に調停する、
（v）ターゲットウインドウでリクエストが受信されてオーバーフローが回避されるように、Ｌ２キャッシュ５８２とＮＣＵ５８４に対する転送のフロー制御を提供する、
（vi）ロードリターンデータを受信し、そのデータを実行ステージ５７６、５７８、命令ユニット５７２、又はＭＭＵ５８８へ送る、
（vii）スヌープリクエストを実行ステージ５７６、５７８、命令ユニット５７２、又はＭＭＵ５８８へ送る、
（viii）ロードリターンデータとスヌープトラフィックを、ハーフスピードからフルスピードへ変換する、
ように動作可能である。
【００７２】
ＭＭＵ５８８は、好ましくはＰＵコア５４０Ａに対して、第２レベルのアドレス変換機能などによりアドレス変換を行う。第１レベルの変換は好ましくは、ＭＭＵ５８８よりも小型で高速でありうる、別々の命令及びデータＥＲＡＴ（Effective to Real Address Translation）アレイにより、ＰＵコア５０４Ａにおいて提供されうる。
【００７３】
好ましい実施形態では、ＰＵコア５０４は、６４ビットの実装品で、４−６ＧＨｚ、１０Ｆ０４で動作する。レジスタは好ましくは６４ビット長（１つ以上の特殊用途のレジスタは小型でありうるが）であり、また、有効アドレスは６４ビット長である。命令ユニット５７０、レジスタ５７２、及び実行ステージ５７４と５７６は好ましくは、（ＲＩＳＣ）演算技術を実現するために、ＰｏｗｅｒＰＣステージ技術を用いて実装される。
【００７４】
本コンピュータシステムのモジュール構造に関する更なる詳細は、米国特許第６，５２６，４９１号に解説されており、該特許は参照として本願に組込まれる。
【００７５】
本発明の少なくとも１つの更なる態様によれば、上述の方法及び装置は、図面において例示しているような、適切なハードウエアを利用して実現されうる。そのようなハードウエアは標準デジタル回路などのいずれの従来技術、ソフトウエア、及び／またはファームウエアプログラムを実行するように動作できるいずれの従来のプロセッサ、プログラム可能なＲＯＭ（ＰＲＯＭ）、プログラム可能なアレイ論理デバイス（ＰＡＬ：Programmable Array Logic）などの、１つ以上のプログラム可能なデジタルデバイスあるいはシステム、を用いて実装されうる。更に、図示している装置は、特定の機能ブロックに分割されて示されているが、そのようなブロックは別々の回路を用いて、及び／あるいは１つ以上の機能ユニットに組み合わせて実装されうる。更に、本発明の様々な態様は、輸送及び／又は配布のために、（フロッピーディスク、メモリチップ、などの）適切な記憶媒体に格納されうる、ソフトウエア、及び／又はファームウエアプログラムを通じて実装されうる。
【００７６】
本明細書において、具体的な実施形態を用いて本発明を記載したが、これらの実施形態は本発明の原理および用途の例を示すものに過ぎないことを理解されたい。このため、添付の請求の範囲に記載した本発明の趣旨および範囲から逸脱することなく、これら例示的な実施形態を種々に変更したり、上記以外の構成を考案し得ることが理解されよう。
【図面の簡単な説明】
【００７７】
【図１】本発明の１つ以上の実施形態を採用したマルチプロセッシングシステムの構造を例示したブロック図。
【図２】図１のシステムにより採用されうる更なる特徴を例示したブロック図。
【図３】本発明の１つ以上の態様によるプロセッシングシステムでの使用に適したインターフェースコントローラのブロック図。
【図４】プロセッシング構成を実現するために、マルチプロセッサシステムの１つ以上の態様が採用される方法の一例を例示したブロック図。
【図５】更なるプロセッシング構成を実現するために、マルチプロセッサシステムの１つ以上の態様が採用される方法の一例を例示したブロック図。
【図６】また更なるプロセッシング構成を実現するために、マルチプロセッサシステムの１つ以上の態様が採用される方法の一例を例示したブロック図。
【図７】また更なるプロセッシング構成を実現するために、マルチプロセッサシステムの１つ以上の態様が採用される方法の一例を例示したブロック図。
【図８】本発明の１つ以上の更なる態様により採用されうる、図１の一般的なサブプロセッシングユニット（ＳＰＵ）の構造を例示した説明図。
【図９】本発明の１つ以上の更なる態様により採用されうる、図１の一般的なプロセッシングユニット（ＰＵ）又はパワープロセッシングユニット（ＰＰＵ）の構造を例示した説明図。
【符号の説明】
【００７８】
１００      システム
１０２      プロセッサ
１０６      共有メモリ
１０８      バス
１１２      デコーダー回路
５００      プロセッサエレメント
５０４      プロセッシングユニット
５０４Ａ    コア
５０８      サブプロセッシングユニット
５１０Ａ    コア
５１１      メモリインターフェース
５１２      バス
５１４      共有メモリ
５４０Ａ    コア
５５０      ローカルメモリ
５５４      レジスタ
５７０      命令ユニット
５７２      命令ユニット
５８２      キャッシュ
【図１】
2006120147.tif 000003
【図２】
2006120147.tif 000004
【図３】
2006120147.tif 000005
【図４】
2006120147.tif 000006
【図５】
2006120147.tif 000007
【図６】
2006120147.tif 000008
【図７】
2006120147.tif 000009
【図８】
2006120147.tif 000010
【図９】
2006120147.tif 000011