(57)【要約】  共有メモリコンピュータシステムにおいて所有されている複数のキャッシュブロックのライトバックを早期に予測する方法。本発明は、書き込まれた複数のブロックが他のＣＰＵによって要求される可能性が高いことをシステムが予測することを可能にし、所有しているＣＰＵは、ブロックにデータをアップデートした後できるだけ早くメモリにそれらのブロックをライトバックする。他のプロセッサがデータを要求している場合、これは、データを得るための待ち時間を低減でき、同期のオーバヘッドを低減でき、並列プログラムのスループットを増加できる。【選択図】図３
2008525901.tif 000002
【特許請求の範囲】
【請求項１】
第１プロセッサが、１つのブロックをリクエストする段階と、
リクエストされた前記ブロックを第２プロセッサが有するか否かを判定する段階と、
リクエストされた前記ブロックを前記第２プロセッサが有さない場合に、前記第１プロセッサにブロックを移す段階と、
前記第１プロセッサが、更新されたブロックを１つのメモリに即座に書き込む段階と、
を備える、方法。
【請求項２】
前記第１プロセッサにブロックを移す段階は、前記第１プロセッサに１つの第１信号を送る段階を備える、請求項１に記載の方法。
【請求項３】
リクエストされた前記ブロックを前記第２プロセッサが有するか否かを判定する段階は、
前記ブロックが前記第２プロセッサによって所有されているか否かを判定する段階と、
前記ブロックが前記第２プロセッサによって所有されている場合に、前記ブロックが前記第２プロセッサによって共有されているか否か判定する段階と、
を備える、請求項２に記載の方法。
【請求項４】
前記ブロックが前記第２プロセッサによって共有されているか否かを判定する段階は、前記第１プロセッサに１つの第２信号を送る段階を備える、請求項３に記載の方法。
【請求項５】
前記ブロックが前記第２プロセッサによって所有されているか否かを判定する段階は、前記第２プロセッサに１つのエビクト信号を送る段階を備える、請求項３に記載の方法。
【請求項６】
前記第２プロセッサが、最近保存されたデータでブロックを更新する段階をさらに備える、請求項５に記載の方法。
【請求項７】
１つのバッファの中で、前記ブロックの１つのエントリのために１つのビットを設定する段階と、
前記バッファから更新された前記ブロックを引き出す段階と、
をさらに備える、請求項６に記載の方法。
【請求項８】
前記第２プロセッサが、更新された前記ブロックを１つのメモリに書き込む段階をさらに備える、請求項７に記載の方法。
【請求項９】
前記メモリが、更新されたブロックを前記第１プロセッサに送る段階と、
前記第１プロセッサが、前記ブロックを更新する段階と、
をさらに備える、請求項８に記載の方法。
【請求項１０】
前記第１プロセッサが、更新された前記ブロックを再度リクエストする段階と、
前記第１プロセッサによって、更新された前記ブロックが前記メモリに送られた後に、前記第２プロセッサが、更新された前記ブロックをリクエストしたか否かを判定する段階と、
更新されたブロックを前記第１プロセッサに移す段階と、
をさらに備える、請求項９に記載の方法。
【請求項１１】
前記第１プロセッサによって、更新された前記ブロックが前記メモリに送られた後に、前記第２プロセッサが、更新された前記ブロックをリクエストしなかった場合に、前記第１信号を前記第１プロセッサに送る段階をさらに備える、請求項１０に記載の方法。
【請求項１２】
前記第１プロセッサが、リクエストされて更新された前記ブロックを更新する段階と、
前記第１プロセッサが、新しく更新された前記ブロックを保持する段階と、
をさらに備える、請求項１１に記載の方法。
【請求項１３】
更新された前記ブロックが前記メモリに送られた後に、前記第２プロセッサが、更新された前記ブロックをリクエストした場合に、１つの第３信号を前記第１プロセッサに送る段階をさらに備える、請求項１０に記載の方法。
【請求項１４】
前記第１プロセッサが、リクエストされて更新された前記ブロックを更新する段階と、
新しく更新された前記ブロックを前記メモリに即座に書き込む段階と、
をさらに備える、請求項１３に記載の方法。
【請求項１５】
第１プロセッサおよび第２プロセッサであって、
前記第１プロセッサおよび前記第２プロセッサに結合され、データの１つのブロックの所有権を判定する１つの共有キャッシュと、
前記第１プロセッサおよび前記第２プロセッサのそれぞれの中に配置され、前記ブロックのための最近のデータを保存する１つのバッファと、
を備え、
前記ブロックが前記第２プロセッサによって共有されている場合に、前記第１プロセッサは、前記ブロックをリクエストし、前記第１プロセッサは、前記ブロックを取得し、前記ブロックを更新し、更新された前記ブロックを前記共有キャッシュに即座に書き込む、第１プロセッサおよび第２プロセッサ。
【請求項１６】
前記バッファは、前記バッファの中のすべてのブロックに対して１つのビットを含む、請求項１５に記載の第１プロセッサおよび第２プロセッサ。
【請求項１７】
前記ビットが設定された場合、前記バッファの中の前記ブロックは引き出される、請求項１６に記載の第１プロセッサおよび第２プロセッサ。
【請求項１８】
前記第１プロセッサによってリクエストされた前記ブロックが、前記第２プロセッサによって共有されている場合、前記共有キャッシュは、前記第２信号を前記第１プロセッサに送る、請求項１５に記載の第１プロセッサおよび第２プロセッサ。
【請求項１９】
前記第１プロセッサによってリクエストされた前記ブロックが、前記第２プロセッサによって共有されていない場合、前記共有キャッシュは、前記第１信号を前記第１プロセッサに送る、請求項１５に記載の第１プロセッサおよび第２プロセッサ。
【請求項２０】
前記第１プロセッサが、更新された前記ブロックを保持する段階をさらに備える、請求項１９に記載の第１プロセッサおよび第２プロセッサ。
【請求項２１】
複数のノードを備えるマルチプロセッサシステムであって、
前記複数のノードのそれぞれは、
前記マルチプロセッサシステムの中の前記複数のノードと通信する１つのルータと、
少なくとも第１プロセッサおよび第２プロセッサと、
入力／出力デバイスへの１つの第１インターフェースと、
前記第１インターフェースと結合された１つのオーディオ入力／出力デバイスと、
を備え、
前記第１プロセッサおよび前記第２プロセッサは、
前記第１プロセッサおよび前記第２プロセッサに結合され、データの１つのブロックの所有権を判定する１つの共有キャッシュと、
前記第１プロセッサおよび前記第２プロセッサのそれぞれの中に配置され、最近のデータを保存する１つのバッファと、
を備え、
前記ブロックが前記第２プロセッサによって共有されている場合に、前記第１プロセッサは、前記ブロックをリクエストし、前記第１プロセッサは、前記ブロックを取得し、前記ブロックを更新し、更新された前記ブロックを前記共有キャッシュに即座に書き込む、マルチプロセッサシステム。
【請求項２２】
前記第１プロセッサおよび前記第２プロセッサの中の前記バッファは、前記バッファの中のすべてのブロックに対して１つのビットを含む、請求項２１に記載のマルチプロセッサシステム。
【請求項２３】
前記ビットが設定された場合、前記バッファの中の前記ブロックは引き出される、
請求項２２に記載のマルチプロセッサシステム。
【請求項２４】
前記第１プロセッサによってリクエストされた前記ブロックが、前記第２プロセッサによって共有されている場合、前記共有キャッシュは、前記第２信号を前記第１プロセッサに送る、請求項２１に記載のマルチプロセッサシステム。
【請求項２５】
前記第１プロセッサによってリクエストされた前記ブロックが、前記第２プロセッサによって共有されていない場合、前記共有キャッシュは、前記第１信号を前記第１プロセッサに送る、請求項２１に記載のマルチプロセッサシステム。
【請求項２６】
前記第１プロセッサが、更新された前記ブロックを保持する段階をさらに備える、請求項２５に記載のマルチプロセッサシステム。
【請求項２７】
前記第１インターフェースは、１つのポイントツーポイントインターフェースである、請求項２１に記載のマルチプロセッサシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
複数のマルチプロセッサデータプロセッシングシステムは、多数のプロセッサの集合的な計算力を利用する。メモリシステムは、マルチプロセッサシステムの中心となり、多数のプロセッサの間でデータを共有している間に十分な容量をそれぞれのプロセッサに提供するために拡張性がなければならない。特定のアプリケーションにとって、データを共有する効率的な手段は、多数のプロセッサの上で動作している複数のスレッドの間の効率的な協力のために重要である。
【０００２】
１つのＣＰＵによって書き込まれる大部分のデータブロックは、所有権が取得された後すぐには、他の複数のエージェント／プロセッサによって読み出されたり、または書き込まれたりしない傾向にある。しかし、いくつかのブロックが多数の実行のスレッドを同期させるために用いられている場合には、それらのブロックは、短い時間でとても激しく共有され得る。通信または同期の待ち時間のオーバヘッドは、チップマルチプロセッサのようなマルチプロセッサシステムの上で、マルチスレッドの作業負荷の拡張性を決定するなかで、１つのファクターになり得る。
【図面の簡単な説明】
【０００３】
本発明の様々な特徴が添付の図面に示されたような好適な実施形態の下記の記述から明かになる。複数の図面を通して、同様の参照符号が同一の部分を通常参照する。複数の図面は、必ずしも一定の縮尺でなく、その代わりに、本発明の本質を示すことに重要性を置いている。
【０００４】
【図１】マルチプロセッサシステムのブロック図である。
【０００５】
【図２】図１のマルチプロセッサシステムの中のプロセッサのブロック図である。
【０００６】
【図３】所有されているキャッシュブロックのライトバックを早期に予測するために、図１のマルチプロセッサシステムによって実行される一例の方法のフローチャートである。
【０００７】
【図４】マルチスレッドのプロセッサのための環境を提供し得るシステムのブロック図である。
【発明の開示】
【０００８】
下記の記述において、限定ではなく説明の目的のため、本発明の様々な側面の十分な理解を提供するために、具体的な詳細、例えば、特定の構造、アーキテクチャ、インターフェース、技術等が説明される。しかし、本開示の利益を有する技術の当業者にとって、
本発明の様々な側面が、これらの具体的な詳細から外れる他の例において実施され得ることが明かである。場合によっては、周知のデバイス、回路、および方法の記述は、本発明の記述を不必要な詳細な記述で不明瞭にしないために省略される。
【０００９】
本発明は、複数のチップマルチプロセッサノードで構成された、１つの拡張性のある共有メモリシステムのための、所有された複数のキャッシュブロックの複数のライトバックに関する。本発明の複数の実施形態は、複数のプロセッサを含む１つの半導体チップを提供し、および１つの双方向性のリングは、複数のプロセッサおよび共有アドレス空間を連結するために相互接続する。本発明の１つの実施形態によれば、それぞれのプロセッサは、多数のＣＰＵを含んでよく、アドレス空間は、１つの大きな共有キャッシュを含んでよい。それぞれのＣＰＵは、独自のプライベートインストラクションおよび複数のデータキャッシュ（複数の第１レベルキャッシュ）を有してよく、すべてのＣＰＵは、単一の第２レベルキャッシュを共有してよい。キャッシュコヒーレンスは、１つのチップの内部のすべてのキャッシュの間で、さらには、複数のノードを越えたすべてのキャッシュの間で、１つのプロトコルエンジンによって維持される。１つのキャッシュは、システムのそれぞれのノードに含まれてよい。
【００１０】
本文書で開示されたすべての詳細な数量（例えば、プロセッサの数、ノードの数、インターフェースの数）は、単に、１つの特定の実施形態の動作を説明する目的のためにだけ提供される。これらの数量は、重要な場合もあるが、典型的には、本発明の１つの実施と他の実施とで異なる。
【００１１】
図１を参照すると、多数のプロセッサノード１０２を含む１つのマルチプロセッサシステム１００が示されている。それぞれのプロセッサノード１０２は、望ましくは、単一のチップマルチプロセッサとして実施される。１つの好適な実施形態において、それぞれのプロセッサノード１０２は、８つのプロセッサコア１０４を有してよい。しかし、他の複数の実施形態は、２つから１６つのプロセッサコア１０４を有してよい。複数のプロセッサコア１０４のキャッシュおよび他のサポートする回路は、独立して示されるので（図２参照）、複数のプロセッサコア１０４は、１つの中央処理ユニットから構成されてよく、複数のプロセッサのコアである。
【００１２】
それぞれのコア１０４は、１つの論理的な共有バッキングキャッシュ１０６に連結される。共有バッキングキャッシュ１０６は、メモリ１０８に連結される。メモリ１０８は、複数のプロセッサによって用いられたまたは用いられる、データまたは複数の命令を格納するために用いられる任意の種類のメモリデバイスであってよい。
【００１３】
この点において、本発明は限定されないが、一般的に、メモリ１０８は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）で構成されてよい。他の実施形態において、メモリ１０８は、１つの半導体メモリを含んでよい。さらに他の実施形態において、メモリ１０８は、例えば、１つのディスクドライブ等の、１つの磁気ストレージデバイスを含んでよい。しかし、本発明は、ここで言及されたメモリの複数の例に限定されない。
【００１４】
多数のノード１０２は、１つのルータ１０９および１つのインターコネクト１１０を含む１つのサブシステムによって連結されてよい。サブシステムは、また、１つの入力キュー、１つの出力キュー、１つのパケットスイッチを含んでよい（すべて図示されていない）。ルータ１０９は、インターコネクト１１０を介して他の複数のノードに複数のパケットを送信してよく、複数のノードから複数のパケットを受信してよい。インターコネクト１１０は、多数のノード１０２に物理的に連結してよい。１つのシステムコントロールモジュール１１１は、様々なメンテナンスに関連する機能（例えば、システムコンフィグレーション、イニシャライゼーション、インタラプトディストリビューション）に対処する。
【００１５】
本発明は、１つのマルチプロセッサ共有メモリシステムに関して記述されるが、本発明は、また、複数のシングルプロセッサコンピュータシステムにも適用できる。
【００１６】
図１のコンピュータシステムの実施形態は、複数のプロセッサおよび複数のキャッシュを含んでよい。これらのプロセッサおよびキャッシュは、１つのマルチプロセッサシステムを備える。ここで、複数のキャッシュは、１つのキャッシュコヒーレンスメカニズムを通じて、１つの他のキャッシュとともにコヒーレントに保たれる。キャッシュコヒーレンスプロトコルは、複数のキャッシュをコヒーレントに保つために、プロセッサの複数のキャッシュおよびメモリの複数のインターコネクトの中で実施されてよい。
【００１７】
キャッシュコヒーレンシーは、複数のマルチプロセッサシステムで共有メモリとともに対処されなければならない。複数のキャッシュコヒーレンスプロトコルは、システムの中のプロセッサがローカルキャッシュの古いデータを使用していないことを保証する問題に対処する。一般に、古い複数のキャッシュエントリは、複数のキャッシュの中で、最近更新されたキャッシュデータの他をすべて無効にすること、または最近のデータで複数のキャッシュを更新することのいずれかによって削除される。無効型プロトコルを使用している１つのシステムにおいて、キャッシュから１つの無効にされたメモリロケーションにアクセスする１つの試みは、他のキャッシュまたはメインメモリから最近のデータの１つのコピーを読み込ませることになる。更新型プロトコルにおいて、１つの書き込み動作に続いて、そのデータの１つのキャッシュされたバージョンを有しているすべてのキャッシュは、最近のデータで更新される。したがって、最近のデータが、複数のキャッシュにおいて利用できる。
【００１８】
図２は、所有されている複数のキャッシュブロックのライトバックを早期に予測する、図１のマルチプロセッサシステムの中の１つのプロセッサのブロック図である。それぞれのコア１０４は、共有キャッシュ１０６に対する１つのサブセットである１つのプライベートキャッシュ１１２を含む。これらのキャッシュ１１２は、ライトスルーキャッシュであってよい。
【００１９】
１つのＣＰＵが１つのメモリアドレスに対して１つの書き込みまたは１つの記録をしなければならないとき、ＣＰＵは、そのブロックのキャッシュヒエラルキーのより低いレベルからの所有権をリクエストする必要があり、所有権が与えられるまで、そのブロックに書き込まない。これは、正確なキャッシュコヒーレンシーを維持するために起こる必要がある。１つの所有権のリクエストがＣＰＵｘによって送られたとき、複数の無効信号が、潜在的な共有者に対して駆動される。潜在的な共有者とは、このブロックの複数のコピーを有する他の複数のＣＰＵを意味する。コヒーレンスプログラムは、所有権をリクエストしたＣＰＵｘに、そのブロックのそれらの所有権をそれらに通知する確認メッセージを送る。確認メッセージが送られた後、ここで書き込みが起こってよい。
【００２０】
複数のライトスルーキャッシュ１１２が生成するストア容量を最小化するため、それぞれのＣＰＵ１０４は、同一のキャッシュブロックに最近のストアデータを集めるための１つのコアレスマージバッファ１１４を有してよい。マージバッファ１１４は、合計で１６つのキャッシュブロックを含んでよい。一般的に、マージバッファ１１４は、ストアデータの合体を最大化するため、および元のキャッシュへのライトスルーのトラフィックを最小化するため、できるだけ長く、所有されている複数のブロックを維持しようと試みてよい。
【００２１】
ライトバックは、元のライトリクエストが送られた、マージバッファ１１４のエントリの中に、１つの「ｐｅｒｇｅＭｅ」ビットを設定することによってもたらされ得る。１つのｐｕｒｇｅＭｅビットは、マージバッファ１１４の中のすべてのエントリに対して存在する。それぞれのサイクルに間に、マージバッファ１１４に関連するコントロールロジックは、そのｐｅｒｇｅＭｅビットを設定することで１つのエントリを選択し、共有キャッシュ１０６にブロックをライトバックすること試みる。いずれのエントリもそれらのｐｅｒｇｅＭｅビットが設定されない場合、いずれのエントリも選択されない。
【００２２】
ｐｕｒｇｅＭｅビットは、様々な理由によって設定されてよい。１つの理由は、マージバッファ１１４が有効な複数のエントリで満たされ、１つの「ｐｕｒｇｅ閾値」を横切ることである。マージバッファ１１４がこのｐｕｒｇｅ閾値を横切る場合、マージバッファ１１４に関連するコントロールロジックは、１つ以上のエントリに対してｐｕｒｇｅＭｅビットを設定してよい。複数のエントリのｐｕｒｇｅＭｅビットを設定することによって、それらは、ここで、新たに到着しているコミットされた複数のストアための空間を作るために、共有キャッシュ１０６にライトバックされ得る。
対応するデータが他のＣＰＵまたはキャッシュコヒーレントエージェントによって利用されることが予測される場合、システム１００に対して、ｐｕｒｇｅＭｅビットは、１つのエントリに対して設定してよい。
【００２３】
図３は、所有されている複数のキャッシュブロックのライトバックを早期に予測するために、図１のマルチプロセッサシステムによって実行される一例の方法３００のフローチャートである。ライトバックのための複数のブロックの予測は、発しているＣＰＵの所有権のリクエストに対応した、キャッシュコヒーレンスプロトコルの中の複数のメッセージに基づく。
【００２４】
１つの所有権のリクエストがＣＰＵｘから共有キャッシュに送られた場合（３０５）、共有キャッシュは、リクエストされたブロックが他のＣＰＵによって所有されているか否かを第１に判定しなければならない（３１０）。リクエストされたブロックが他のＣＰＵによって所有されていない場合、システムは、リクエストされたブロックが他のＣＰＵまたは他の複数のＣＰＵによって共有されているか否かを判定する（３１１）。ブロックがブロックの任意の他の共有者を有さない場合、１つのＡｃｋＮｏｎＳｈａｒｅｄメッセージが、ブロックの所有権を与え、他の複数のＣＰＵがブロックの１つのコピーを有さないことを示すために送られる（３１５）。しかし、ブロックが所有されていないが供給されている場合、１つのＡｃｋＳｈａｒｅｄメッセージが送られ、所有権はＣＰＵｘに移される（３１２）。
【００２５】
ブロックがリクエストしているＣＰＵ、例えばＣＰＵｙ等によって所有されていた場合、１つのエビクト（ｅｖｉｃｔ）メッセージがＣＰＵｙに送られる（３２０）。エビクトメッセージが受け取られる場合、ＣＰＵｙは、最近のストアデータでブロックを更新し、ｐｕｒｇｅＭｅビットを設定し、そのマージバッファからブロックを引き出す（３２５）。ブロックがマージバッファから引き出されると、ＣＰＵｙは、ブロックをメモリにライトバックし、その所有権を手放す（３３０）。
【００２６】
ここで、更新されたブロックは、リクエストしているＣＰＵｘに送られる（３３５）。ここで、ＣＰＵｘは、現在のデータでブロックを更新し（３４０）、そして、即座に共有キャッシュにブロックを送ってよい（３４５）。データのブロックは、これまで他のＣＰＵ、ＣＰＵｙによって所有されていたので、更新されたブロックは、すぐ共有キャッシュに送られる。
【００２７】
ここで、ＣＰＵｘがブロックを再度書き込む必要があると仮定すると、他の所有権のリクエストが共有キャッシュに送られる（３０５）。このとき、他の複数のＣＰＵがそれまでの間にブロックを読み出さなかった場合、つまり、ブロックが所有されておらず（３１０）、共有されていない（３１１）場合、１つのＡｃｋＮｏｎＳｈａｒｅｄメッセージがＣＰＵｘに送られる（３１５）。ここで、ＣＰＵｘは、ブロックが容量の理由のために強制退去（ｅｖｉｃｔ）される（または他のＣＰＵによってリクエストされる）まで、ブロックを保持してよい。
【００２８】
しかし、他のＣＰＵがそれまでの間にブロックを読み出した場合、つまり、ブロックが所有されていない（３１０）が、共有されている（３１１）場合、ＡｃｋＷａｓＳｈａｒｅｄメッセージがＣＰＵｘに送られ（３１２）、早期にブロックが再度ライトバックされる。
【００２９】
ここで、ＣＰＵｙがブロックをリクエストする場合、そのブロックは、ブロックをリクエストするために、前のＣＰＵによって、共有キャッシュに既にライトバックされていてよく、ＣＰＵｙがブロックをリクエストしない場合、ブロックが移動中であってよい。ブロックが共有キャッシュに既にライトバックされていた場合、これは、４ホップのトランザクションを２ホップのトランザクションに低減し、潜在的に同期の待ち時間を半分に削減する。
【００３０】
したがって、他の複数のＣＰＵが、リクエストしているＣＰＵが１つの所有権のリクエストを生成するときに、ブロックの複数のコピーを有していた（または有していたかもしれない）場合、それはそれをできるだけ早くライトバックする。他の複数のＣＰＵがブロックの複数のコピーを有していたが、もはやそのブロックにアクセスしていない場合、そのブロックへの第１の書き込みは、そのブロックのライトバックの予測を生じさせてよいが、その後の複数の書き込みは、予測を生じさせなくてよい。
【００３１】
以前は、１つのプロセッサは、共有されていた１つのブロックと供給されていなかった１つのブロックとの確認応答を区別しなかった。上記の方法で、１つのプロセッサは、どのくらいの早さで共有バッキングキャッシュに１つのブロックを送り返すべきかを判定してよい。これは、いつ速い共有が必要であるかを、システムが予測することを可能にする。
【００３２】
有利なことに、この方法は、他のＣＰＵによってリクエストされる可能性が高い、書き込まれた複数のブロックを、システムが予測することを可能にし、所有しているＣＰＵが、ブロックの中のデータを更新した後できるだけ早く、これらのブロックをメモリにライトバックする。他のプロセッサがデータをリクエストしている場合、これは、データを得るための待ち時間を低減でき、同期のオーバヘッドを低減でき、さらに並列プログラムのスループットを増加できる。
【００３３】
ここで図４を参照すると、システム４００は、所有されている複数のキャッシュブロックのライトバックの早期予測をサポートする複数のプロセッサを含む。システム４００は、典型的に、複数のプロセッサ、メモリ、および複数の入力／出力デバイスが多数のポイントツーポイントインターフェースによって相互接続された１つのシステムを示す。システム４００は、いくつかのプロセッサを含み、明確にするために、そのうちの２つがプロセッサ４０５、４１０で示される。それぞれのプロセッサ４０５、４１０は、それぞれ、メモリ４２５、４３０と接続するため、１つのローカルメモリコントーラハブ（ＭＣＨ）４１５、４２０を含んでよい。プロセッサ４０５、４１０は、ポイントツーポイントインターフェース回路４４０、４４５を用いて、１つのポイントツーポイントインターフェース４３５を介してデータを交換してよい。プロセッサ４０５、４１０は、それぞれ、ポイントツーポイントインターフェース回路４６５、４７０、４７５、７８０を用いて、個々のポイントツーポイントインターフェース４５５、４６０を介して、１つのチップセット４５０とデータを交換してよい。チップセット４５０は、また、１つの高性能グラフィックスインターフェース４９０を介して、１つの高性能グラフィックス回路４８５とデータを交換してよい。
【００３４】
チップセット４５０は、１つのバスインターフェース４９５を介して、１つのバス４１６とデータを交換してよい。どちらのシステムにおいても、いくつかの実施形態において、複数の低性能グラフィックスコントローラ、複数のビデオコントローラ、および複数のネットワークコントローラを含む、様々な入力／出力・Ｉ／Ｏデバイス４１４がバス４１６上にあってよい。他のバスブリッジ４１８は、いくつかの実施形態において、バス４１６とバス４２０との間でデータを交換させるために使われてよい。バス４２０は、いくつかの実施形態において、１つのｓｍａｌｌ  ｃｏｍｐｕｔｅｒ  ｓｙｓｔｅｍ  ｉｎｔｅｒｆａｃｅ（ＳＣＳＩ）バス、１つのＩｎｔｅｇｒａｔｅｄ  ｄｒｉｖｅ  ｅｌｅｃｔｒｏｎｉｃｓ（ＩＤＥ）バス、または１つのｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ（ＵＳＢ）バスであってよい。追加の複数のＩ／Ｏデバイスは、バス４２０に接続されてよい。これらは、マウスを含むキーボードおよびカーソルコントロールデバイス４２２、オーディオＩ／Ｏ４２４、モデムおよびネットワークインターフェースを含む通信デバイス４２６、およびデータストレージデバイス４２８を含んでよい。いくつかの実施形態において、データストレージデバイス４２８は、固定磁気ディスク、フロッピーディスクドライブ、光ディスクドライブ、光磁気ディスクドライブ、磁気テープ、またはフラッシュメモリを含む不揮発性メモリであってよい。
【００３５】
下記の記述において、限定ではなく説明の目的のため、本発明の様々な側面の十分な理解を提供するために、具体的な詳細、例えば、特定の構造、アーキテクチャ、インターフェース、技術等が説明される。しかし、本開示の利益を有する技術の当業者にとって、
本発明の様々な側面が、これらの具体的な詳細から外れる他の例において実施され得ることが明かである。場合によっては、周知のデバイス、回路、および方法の記述は、本発明の記述を不必要な詳細な記述で不明瞭にしないために省略される。
【図１】
2008525901.tif 000003
【図２】
2008525901.tif 000004
【図３】
2008525901.tif 000005
【図４】
2008525901.tif 000006
【国際調査報告】
2008525901.tif 000007
2008525901.tif 000008