(57)【要約】      （修正有）【課題】アプリケーションのメモリ帯域幅を増大させる技術を提供する。【解決手段】少なくとも２つのメモリに接続される少なくとも２つのプロセッサを有する装置であって、前記少なくとも２つのプロセッサの第１プロセッサは、前記少なくとも２つのメモリの第１メモリに格納されているデータの第１部分と、前記少なくとも２つのメモリの第２メモリに格納されているデータの第２部分とをクロック信号期間の第１部分内で読み、前記少なくとも２つのプロセッサの第２プロセッサは、前記少なくとも２つのメモリの第１メモリに格納されているデータの第３部分と、前記少なくとも２つのメモリの第２メモリに格納されているデータの第４部分とを前記クロック信号期間の第１部分内で読む。【選択図】図１
2010009580.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも２つのメモリに接続される少なくとも２つのプロセッサを有する装置であって、
前記少なくとも２つのプロセッサの第１プロセッサは、前記少なくとも２つのメモリの第１メモリに格納されているデータの第１部分と、前記少なくとも２つのメモリの第２メモリに格納されているデータの第２部分とをクロック信号期間の第１部分内で読み、
前記少なくとも２つのプロセッサの第２プロセッサは、前記少なくとも２つのメモリの第１メモリに格納されているデータの第３部分と、前記少なくとも２つのメモリの第２メモリに格納されているデータの第４部分とを前記クロック信号期間の第１部分内で読む装置。
【請求項２】
前記第１メモリに接続され、前記データの第１部分と第３部分とが前記第１メモリから読まれた後、前記データの第１部分と第３部分とを格納する第１バッファをさらに有する、請求項１記載の装置。
【請求項３】
前記第２メモリに接続され、前記データの第２部分と第４部分とが前記第２メモリから読まれた後、前記データの第２部分と第４部分とを格納する第２バッファをさらに有する、請求項２記載の装置。
【請求項４】
前記第１プロセッサは、前記第１バッファの第１部分から前記データの第１部分と、前記第２バッファの第３部分から前記データの第３部分とを読む、請求項３記載の装置。
【請求項５】
前記第２プロセッサは、前記第１バッファの第２部分から前記データの第２部分と、前記第２バッファの第４部分から前記データの第４部分とを読む、請求項４記載の装置。
【請求項６】
前記少なくとも第１及び第２プロセッサに接続され、前記少なくとも第１及び第２メモリに対応するページ状態情報を通信するインターコネクトをさらに有する、請求項１記載の装置。
【請求項７】
前記データの第１、第２、第３及び第４部分はそれぞれ、同一のビット幅を有する、請求項１記載の装置。
【請求項８】
前記少なくとも第１及び第２プロセッサは、３次元グラフィック処理を実行する、請求項１記載の装置。
【請求項９】
前記第１クロック期間の第１部分は、前記第１クロック期間の１／２である、請求項１記載の装置。
【請求項１０】
前記第１クロック期間の第１部分は、１つのクロック期間である、請求項１記載の装置。
【請求項１１】
第２プロセッサにページ状態情報を提供する第１ロジックを有するプロセッサであって、
前記ページ状態情報は、第１メモリの第１ページがクローズされるべきか否かを有し、
前記第１ロジックは、前記第２プロセッサが前記第１ページからの情報にアクセスすることを前記第２プロセッサが示す場合、前記第１ページがクローズされることを禁止するプロセッサ。
【請求項１２】
ＳＩＭＤ（Ｓｉｎｇｌｅ−Ｉｎｓｔｒｕｃｔｉｏｎ−Ｍｕｌｔｉｐｌｅ−Ｄａｔａ）命令を実行する実行ロジックをさらに有する、請求項１１記載のプロセッサ。
【請求項１３】
前記ページ状態情報は、当該プロセッサと前記第２プロセッサとの間の専用のインターコネクトを介し通信される、請求項１１記載のプロセッサ。
【請求項１４】
前記第２プロセッサからページ状態情報を受信する第２ロジックをさらに有し、
前記ページ状態情報は、第２メモリの第２ページがクローズされるべきか否かを含み、
前記第２プロセッサは、当該プロセッサが前記第２ページからの情報にアクセスする場合、前記第２ページがクローズされるのを禁止する、請求項１１記載のプロセッサ。
【請求項１５】
当該プロセッサと前記第２プロセッサはそれぞれ、前記第１及び第２メモリからの情報にパラレルにアクセスする、請求項１４記載のプロセッサ。
【請求項１６】
当該プロセッサ又は前記第２プロセッサが第３ページの情報にアクセスする場合、前記第１メモリ内で前記第３ページをオープンにする第３ロジックをさらに有する、請求項１４記載のプロセッサ。
【請求項１７】
３次元グラフィックレンダリングロジックをさらに有する、請求項１１記載のプロセッサ。
【請求項１８】
前記第２プロセッサは、３次元グラフィックレンダリングロジックを有する、請求項１７記載のプロセッサ。
【請求項１９】
複数のメモリに接続される複数のプロセッサであって、各プロセッサが前記複数のメモリのそれぞれにパラレルにアクセスする複数のプロセッサと、
前記複数のプロセッサに接続され、前記複数のプロセッサにページ状態情報を通信する複数のインターコネクトと、
を有するシステム。
【請求項２０】
前記複数のプロセッサのそれぞれに接続される複数のメモリコントローラをさらに有する、請求項１９記載のシステム。
【請求項２１】
前記複数のメモリコントローラは、前記複数のプロセッサのそれぞれから前記複数のメモリへのアクセスをルーティングする、請求項２０記載のシステム。
【請求項２２】
各プロセッサは、前記複数のメモリのそれぞれから１／Ｎビット幅（Ｎは、前記複数のプロセッサの個数である）のデータワードにアクセスする、請求項１９記載のシステム。
【請求項２３】
前記複数のメモリのそれぞれは、前記複数のプロセッサによりパラレルにアクセスされるデータを格納するバッファに接続される、請求項２２記載のシステム。
【請求項２４】
前記バッファは、１６ビットを同時に格納する、請求項２３記載のシステム。
【請求項２５】
各ページが異なるメモリ内にあるメモリの複数のページをオープンするステップと、
前記メモリの複数のページのそれぞれからのデータにアクセスし、前記データを複数のプロセッサにパラレルに提供するステップと、
前記メモリの複数のページの少なくとも１つをクローズするよう、前記メモリの少なくとも１つのページを制御しない前記複数のプロセッサの１つのプロセッサから、前記メモリの少なくとも１つのページを制御する前記複数のプロセッサの他のプロセッサに要求するステップと、
前記複数のプロセッサの他の何れかのプロセッサも前記メモリの複数のページの少なくとも１つのページにアクセスしていない場合、前記メモリの複数のページの少なくとも１つのページをクローズする要求を認めるステップと、
を有する方法。
【請求項２６】
前記複数のプロセッサに前記要求の指示を通信するステップをさらに有する、請求項２５記載の方法。
【請求項２７】
前記指示は、前記複数のプロセッサに接続される複数の専用のインターコネクトを介し前記複数のプロセッサに通信される、請求項２６記載の方法。
【請求項２８】
前記複数のプロセッサは、前記複数のメモリからのデータにアクセスする複数のメモリコントローラを有する、請求項２７記載の方法。
【請求項２９】
前記複数のメモリは、前記複数のプロセッサによりアクセスされるまで、前記データを一時的に格納する複数のバッファを有する、請求項２７記載の方法。
【請求項３０】
前記複数のプロセッサは、グラフィックプロセッサである、請求項２５記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は、一般に情報処理分野に関し、より詳細にはマルチソケットメモリインタフェースの分野に関する。
【背景技術】
【０００２】
より多くのアプリケーションがマルチ処理システム及びマイクロプロセッサのパラレル処理能力を利用し続けるに従って、より大きなメモリ帯域幅を実現する要求が増大する。パラレルアプリケーションは、例えば、ＳＩＭＤ（Ｓｉｎｇｌｅ−Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ−Ｄａｔａ）命令などを介し多数のデータセットを同時実行することを伴うグラフィックアプリケーション、金融アプリケーション、医療及びバイオ技術アプリケーション又は他の何れかのアプリケーションを含みうる。ある程度まで、より従来のシーケンシャルなＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）のワークロードはまた、実行されるデータ構造のサイズに依存して、より大きなメモリ帯域幅とデータバスサイズを要求又は利用するかもしれない。
【０００３】
例えば、グラフィックアプリケーションは、３次元（３Ｄ）グラフィックシーンをレンダリングするため、ポリゴンの多数のピクセルに対してテクスチャリング処理又は他の効果をパラレルに実行する傾向がある。あるテクスチャ又は他の大きなデータ構造のサイズは、データを迅速に抽出及び格納するため、１以上のプロセッサから１以上のメモリストレージ領域（ＤＲＡＭなど）への高帯域幅の必要を要求又は生じさせるかもしれない。ある従来技術は、１以上のプロセッサ又は処理コアから１以上のメモリまでのピン又はバストレースの個数を増加させることによって、より大きなメモリ帯域幅を提供することを試みてきた。オフパッケージバス幅など、帯域幅を増大させるためのインターコネクト幅の増大は、システムコストに悪影響を与え、当該システムのより汎用的な計算システムに対する適用性を制限する可能性がある。
【０００４】
一部の従来技術では、メモリ帯域幅の増大は、各データピンの帯域幅を増大させることによって（切替頻度の増加に関して）、及び／又はより多くのデータピンをパッケージに追加することによって行うことが可能である。しかしながら、バス幅の増大（より多くのピンを追加することなどによる）及び／又はバス周波数の増大を通じて帯域幅を増大させることは実際的に（経済的など）制限がある。
【０００５】
システム帯域幅をさらに増大させるため、一部の従来技術は、各プロセッサに割り当てられた対応するメモリを備えた複数のプロセッサを利用するかもしれない。これは、典型的には高帯域幅バスにより相互接続されるプロセッサと割り当てられたメモリとの間のペアリングを生じさせる。このとき、プロセッサ／メモリペアは、他のバスにより互いに接続されてもよく、これは、さらなるピンを必要とするが、対応するメモリから各プロセッサによりフェッチされるデータの共有をサポートするための帯域幅を有しないかもしれない。１つのプロセッサによってアクセスされる情報を１つのメモリから他のプロセッサに臨機応変に共有させることの困難さのため、各アプリケーションはプロセッサ／メモリペア間でアプリケーションにより実行される作業をパーティション又は分割することを試みるかもしれない。アプリケーションのパーティション化は、重大な遅延を回避するため、適切なプロセッサ／メモリペア内でデータを格納及びアクセスすることを確認する必要があるため、アプリケーション開発者にとって大きな負担となりうる。コード／データのパーティション化など、アプリケーションに制約を設けることは、アプリケーションの開発コストを増加させ、可搬性を制限し、これらのアプリケーションが市場において成功することを妨げる可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の課題は、上記問題点に鑑み、アプリケーションのメモリ帯域幅を増大させる技術を提供することである。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、本発明の一特徴は、少なくとも２つのメモリに接続される少なくとも２つのプロセッサを有する装置であって、前記少なくとも２つのプロセッサの第１プロセッサは、前記少なくとも２つのメモリの第１メモリに格納されているデータの第１部分と、前記少なくとも２つのメモリの第２メモリに格納されているデータの第２部分とをクロック信号期間の第１部分内で読み、前記少なくとも２つのプロセッサの第２プロセッサは、前記少なくとも２つのメモリの第１メモリに格納されているデータの第３部分と、前記少なくとも２つのメモリの第２メモリに格納されているデータの第４部分とを前記クロック信号期間の第１部分内で読む装置に関する。
【発明の効果】
【０００８】
本発明によると、アプリケーションのメモリ帯域幅を増大させることが可能である。
【図面の簡単な説明】
【０００９】
【図１】図１は、本発明の少なくとも１つの実施例が利用可能なマルチプロセッサシステムのブロック図を示す。
【図２】図２は、一実施例によるメモリコントローラが各自のプロセッサの外部となるデュアルソケットシステムを示すブロック図である。
【図３】図３は、一実施例によるメモリコントローラが各自のプロセッサの内部となるデュアルソケットシステムを示すブロック図である。
【図４】図４は、一実施例による図２及び３のデュアルソケットシステムに対応するタイミング図を示す。
【図５】図５は、一実施例によるクアドソケットシステムを示すブロック図である。
【図６】図６は、一実施例による図５のクアドソケットシステムに対応するタイミング図を示す。
【図７】図７は、本発明の少なくとも１つの実施例を実行するのに利用可能な各処理のフロー図である。
【図８】図８は、少なくとも１つの実施例が利用可能なデュアルソケットシステムのコンフィギュレーションを示すブロック図である。
【図９】図９は、少なくとも１つの実施例が利用可能なデュアルソケットシステムの他のコンフィギュレーションを示すブロック図である。
【図１０】図１０は、少なくとも１つの実施例が利用可能な共有インターコネクトシステムを示す。
【図１１】図１１は、本発明の少なくとも１つの実施例が利用可能なポイント・ツー・ポイントインターコネクトコンピュータシステムを示す。
【図１２】図１２は、本発明の一実施例が利用可能なシステムを示す。
【発明を実施するための形態】
【００１０】
本発明の各実施例は、パラレル又は“スループット”アプリケーションを処理可能なものを含む処理装置及びシステムに関する。一部の実施例は、３Ｄグラフィックアプリケーションなどの各アプリケーションのためにメモリアクセスを処理する少なくとも２つの処理ユニット（グラフィックプロセッサなど）と、各自が少なくとも２つの処理ユニットに接続されたＤＲＡＭ装置などの少なくとも２つのストレージ構成とを有する。各ストレージ構成は、各メモリから読み出されるデータの幅（１６ビットなど）に対応するストレージ幅を有する情報を格納するための１以上のバッファを有するか、又はそれらと関連付けされる。一実施例では、各バッファは、設定可能な幅によりパーティション化されるか、又は２つの異なるプロセッサに（各自のメモリコントローラなどを介し）接続される。ここでは、各プロセッサが各メモリからの情報に同時にアクセス可能となるように、各バッファの１つの部分（半分など）は１つのプロセッサに提供されるデータを格納するためのものであり、他の部分（半分など）は少なくとも１つの他のプロセッサに接続される。一実施例では、バッファの各部分の個数は、それからデータにアクセスするプロセッサの個数に基づき設定可能である。
【００１１】
各プロセッサに２以上のストレージ構成へのアクセスを提供することによって、アプリケーションソフトウェアは、複数のストレージ構成に情報を格納し、そこから情報にアクセス可能となる。これは、プログラムデータ及び他の情報が格納及びアクセスされるソフトウェアにフレキシビリティを提供する。さらに、本発明の各実施例は、特定のプロセッサに対応するメモリ構成以外の他のメモリ構成からの情報にソフトウェアがアクセスすることを可能にするだけでなく、各プロセッサのメモリインタフェース帯域幅を最大化しながらこれを実行する。
【００１２】
本発明の各実施例は、ソフトウェアアプリケーションが複数のプロセッサに対応する複数のストレージ構成の情報にアクセス及び格納することを可能にする。これは、いくつかの事例において、ＳＩＭＤ（Ｓｉｎｇｌｅ−Ｉｎｓｔｒｕｃｔｉｏｎ−Ｍｕｌｔｉｐｌｅ−Ｄａｔａ）又はＭＩＭＤ（Ｍｕｌｔｉｐｌｅ−Ｉｎｓｔｒｕｃｔｉｏｎ−Ｍｕｌｔｉｐｌｅ−Ｄａｔａ）処理を利用するパラレル命令又はアプリケーションを処理する際に有用であるかもしれない。なぜなら、各ＳＩＭＤ又はＭＩＭＤ処理は、配置された特定のメモリ構成に関係なく、複数のメモリ構成からのオペランドデータ要素にアクセス可能であるためである。これは、特に大量の情報に対して各処理を同時に実行可能な３Ｄグラフィック又は金融アプリケーションなど、各アプリケーションにとって有用であるかもしれない。しかしながら、それは、いくつかの異なる位置に格納されうる情報を利用する従来のよりシーケンシャルなＣＰＵアプリケーションについても有用であるかもしれない。
【００１３】
メモリが“ページ”などの各セグメントに従って構成又はアクセスされる一部の実施例では、ページにアクセスするプロセッサ（又はメモリインタフェースロジック）は、特定のメモリ構成のページサイズ又は構成をプロセッサ又はメモリコントローラのページングサイズ又はスキームに変換するための構成（“ページテーブル”など）を維持してもよい。例えば、一実施例では、プロセッサ又はメモリコントローラが特定のメモリの物理ページを設定された個数のバーチャルページに変換し、プログラムが当該ページにアクセスすることに応答して、オープン及びクローズするようにしてもよい。
【００１４】
一部の実施例では、各プロセッサ又はメモリインタフェースは、他のプロセッサのメモリインタフェースにより制御又は対応する他のメモリ構成にアクセス可能であるため、プロセッサ／メモリコントローラ間の通信は、各プロセッサ又はメモリコントローラのページ状態（オープン／クローズ）の間の整合性又はコヒーレンシを維持するために所望されるかもしれない。一実施例では、１つのプロセッサが他のプロセッサがアクセスする必要があるかもしれないメモリのページをクローズしないように、ｎワイドインターコネクト（ただし、“ｎ”は１以上の可変数のチャネル／ピン／レーン／トレースを示すかもしれない）が、各種プロセッサ又はメモリコントローラの間のページ状態を通信するのに利用されるかもしれない。１以上のメモリにアクセスする各種プロセッサ又はメモリコントローラの間でページ状態を通信することによって、不要なページオープン又はクローズ処理が回避可能であり、これにより、各種プロセッサ又はメモリコントローラの間のアクセスパフォーマンスを向上させることができる。さらに一部の実施例では、ｎワイドインターコネクトは、過大なピン、パワー又は他のリソースを必要としないように、比較的低い帯域幅を有するようにしてもよい。
【００１５】
効果的には、本発明の各実施例は、アプリケーションがデータが格納されている又は格納されるメモリ装置に関係なく、複数のプロセッサ上で実行されることを可能にするかもしれない。これは、例えば、１つのグラフィックプロセッサがピクセルスクリーンの１／２をレンダリングし、他のグラフィックプロセッサが残りの１／２をレンダリングするグラフィックアプリケーションなどにおいて有用である。この状況では、１つのプロセッサが１つのメモリから隣接するテクセル情報（対応するプロセッサの１／２のスクリーン上のテクセルに対応する）にアクセスする必要があり、他のプロセッサが他のメモリから隣接するテクセル情報（対応するプロセッサの１／２のスクリーン上のテクセルに対応する）にアクセスする必要があるため、境界上のトライアングルはフィルタリング時に遅延を生じさせるかもしれない。この状況では、対応しないメモリからの情報を必要とするプロセッサは、対応するプロセッサを介しそれを要求する必要があるかもしれず、これは、要求元のプロセッサにそれを戻す必要があり、プロセッサ間に比較的高い帯域幅のバスを要求する帯域幅を使用することになる。そうでない場合、ソフトウェア開発者は、データの格納場所に関して制限を設ける必要があり、これは、特にクロスボーダートライアングルのレンダリングの際に極めて困難なものとなりうる。
【００１６】
同様の状況が、１つのプロセッサがあるフレームをレンダリングし、他のプロセッサが次のフレームをレンダリングする場合に存在する。特に、リフレクションなどの効果は、ときどきその直前のフレームからの情報に依拠する。この場合、（１つのプロセッサ／メモリペアに対応する）現在のフレームにおいて（他のプロセッサ／メモリペアに対応する）前のフレームからの情報が必要とされるため、（上述された）分割されたフレームを処理する際と同じ遅延問題が存在する可能性がある。本発明の各実施例は、分割フレームレンダリング例や交互フレームレンダリング例などの各状況を、一部の従来技術の帯域幅問題なく、又は対応するデータが格納される位置をソフトウェアが知る又は考慮することなく処理するかもしれない。一実施例では、これは、本発明の一部の実施例において使用されるプロセッサが使用されるメモリの間で交互に情報（１ページの情報など）を自動的に（ＯＳやアプリケーションからの支援なく）格納し、何れのメモリからデータにアクセスするか提供するアドレスから情報を求めるという事実によって可能である。
【００１７】
一実施例では、ページテーブルは、ソフトウェアにより提供されるアドレスを、スループットアプリケーションを実行するため利用される２つのプロセッサに対応する２つのメモリの各位置に変換する。特に、ページテーブルは、アドレスのビットを用いて、２つのメモリ内に交互の位置に格納される情報のアドレスを含むテーブルの各エントリにアクセスする。従って、ソフトウェアが情報を格納又はアクセスするとき、ページテーブルは、要求元のソフトウェア（ＯＳ又はアプリケーション）が情報が実際に格納されている位置を理解又は考慮することなく、適切なメモリへのアクセスを自動的に導く。このように、情報はバースト速度により交互に何れかのメモリからアクセス可能であり、これにより、各プロセッサのメモリインタフェースの帯域幅を最大化し、クロスメモリ／プロセッサアクセスをサポートするため比較的高い帯域幅のバスを回避する。
【００１８】
一部の実施例では、複数のプロセッサが、コヒーレンシフィルタなどを使用することによって、効率的にリクエストを管理することによって要求元アプリケーションにデータを提供するかもしれない。一実施例では、コヒーレンシフィルタは、１つのプロセッサ上で実行されるアプリケーションによるデータのリクエストが、当該プロセッサに他のプロセッサにより現在アクセス可能なデータのアドレスを示すテーブルにアクセスさせるように（例えば、プロセッサのキャッシュ、バッファ、他の構成、プロセッサの対応するメモリにおいて現在オープンであるページなど）、１以上のプロセッサに対応し、アクセス可能な１以上のコヒーレンシテーブル又は他の構成を有するかもしれない。要求されたデータの直近のバージョンが他方のプロセッサのキャッシュにある場合、当該リクエストを受け付けたプロセッサは、他方のプロセッサに要求されたデータを要求元アプリケーションに返すよう通知するか、又はｎワイドプロセッサ間インターコネクトを介しプロセッサからデータを抽出するようにしてもよい。一部の実施例では、各プロセッサは複数のプロセッサを有するかもしれず、この場合、各プロセッサはプロセッサソケットに対応するかもしれない。
【００１９】
一部の実施例では、上述した技術は、２、４、８又はそれ以上のプロセッサ又はコアを有するプロセッサ又はシステムに適用可能である。さらに、本発明の各実施例は、汎用コンピュータ、グラフィックゲームコンソール、グラフィックカードアプリケーションなどを含むいくつかの異なるシステム又は処理コンフィギュレーション又はアプリケーションに適用可能である。一実施例では、ここに記載される技術は、金融アプリケーション、医療アプリケーション、イメージングアプリケーションなどの３Ｄグラフィック又は他のアプリケーションを実行する１以上のプロセッサに関する。他の実施例では、ここに記載される技術は、シーケンシャルな又はより従来のワークロードを実行するため汎用ＣＰＵと共に利用されるかもしれない。さらなる他の実施例では、ここに記載される技術は、従来のＣＰＵ及びグラフィック専用ロジック（ＣＰＵ＋ＧＰＵ）を含むプロセッサなど、従来のＣＰＵワークロードとスループットアプリケーションの両方を実行するよう設計されたハイブリッドプロセッサと共に利用されるかもしれない。一実施例では、ここに記載される技術は、グラフィックテクスチャサンプリングロジックなど、パラレルアプリケーション専用ロジックと共にインターコネクトに接続され、ＳＩＭＤ命令を実行可能ないくつかのＣＰＵプロセッサコアを有する１以上のプロセッサと共に利用される。
【００２０】
図１は、本発明の少なくとも１つの実施例が利用可能なマイクロプロセッサを示す。図１は、従来のＣＰＵアプリケーション、スループットアプリケーション（３Ｄグラフィックアプリケーションなど）又は従来のＣＰＵとスループットアプリケーションとの組み合わせのため利用可能なプロセッサを示す。プロセッサ１００は、複数の処理コア１００−１〜１００−Ｎと、専用のスループットアプリケーションハードウェア１１０（グラフィックテクスチャサンプリングハードウェアなど）と、メモリインタフェースロジック１２０とを有し、リングインターコネクト１３０により構成される。一部の実施例では、プロセッサ１００は、各コア１００−１〜１００−Ｎ内のコア１０１−１〜１０１−Ｎからの情報を包含する１以上のラストレベルキャッシュ１３５を有するかもしれない。一実施例では、１以上の処理コア１００−１〜１００−Ｎは、ＳＩＭＤ処理を実行可能である。
【００２１】
一実施例では、メモリコントローラは、グラフィックＤＲＡＭ１０５などのＤＲＡＭを有し、プロセッサ１００の外部に配設されるメモリとインタフェースをとるかもしれない。一実施例では、メモリインタフェースは、１６ビットなどの特定の幅を有し、２ＫＢなどの特定のサイズのメモリページにアクセスするかもしれない。複数のプロセッサ１００が対応する他のプロセッサ又はメモリコントローラにより制御されるＤＲＡＭなどの１以上のメモリにアクセス可能なシステムでは、プロセッサ１００はまた、各種メモリにアクセスする各種プロセッサの間のページ状態コヒーレンシを維持するため、異なるプロセッサ又はメモリコントローラと情報を通信、受信及び処理するためのロジック１４０を含むかもしれない。一実施例では、ロジック１４０は、プロセッサ１００と同じメモリにアクセス可能な他のプロセッサ又はメモリコントローラのページ状態を解釈するため、ページテーブルに関してある制御又は復号化ロジックと共にレジスタ又は他のストレージ領域を含むかもしれない。プロセッサ１００は、このコヒーレンシ情報を利用して、メモリのページをクローズするか、又はメモリの新たなページをオープンするか決定するかもしれない。さらに、プロセッサ１００は、プロセッサ１００と同じメモリにアクセスする他のプロセッサ又はメモリコントローラと、メモリの特定のページの状態を通信するかもしれない。
【００２２】
一部の実施例では、比較的大量のメモリ帯域幅を必要とするグラフィックテクスチャや他の情報などの情報が、アプリケーションソフトウェアが当該情報を格納するメモリに関して認識せず又は考慮することなく、他のプロセッサ（図示せず）に対応する他のメモリからアクセスされるかもしれない。一実施例では、システムのメモリインタフェースは、ＤＲＡＭやＤＲＡＭアレイ（ＤＩＭＭなど）などの少なくとも２つのメモリストレージ構成にアドレスを提供し、第２メモリのデータ幅の第１部分を第１プロセッサに、第２メモリの当該データ幅の第２部分を第２プロセッサに供給しながら、第１メモリからのデータ幅の第１部分を第２プロセッサに供給するのと同時に第１メモリからのデータ幅の第１部分を第２プロセッサに供給することによって、それの有効帯域幅を増加させるかもしれない。
【００２３】
一部の実施例では、プロセッサ１００は、図１に示されるより多くの又は少ないメモリコントローラを含むかもしれない。さらに、図１のメモリコントローラは、プロセッサ１００の内部又は外部にあるかもしれない。図２は、例えば、一実施例によるメモリコントローラが各プロセッサの外部になるデュアルソケットシステムを示すブロック図である。
【００２４】
特に、図２は、それぞれメモリ２２０と２２５を制御する対応するメモリコントローラ２１０と２１５に接続されるプロセッサ２００と２０５とを示す。図２に示されるように、プロセッサ２００と２０５はそれぞれ、インターコネクト２０３，２０７，２１３及び２１７を介しメモリコントローラ２１０と２１５と通信する。さらに、プロセッサ２００と２０５は、リンク２０８を介しページ状態情報を通信する。一実施例では、メモリ２２０と２２５にアドレスが提供され、それに応答して、データワードが、各メモリの内部若しくは外部又はメモリコントローラ内の１以上のバッファ２３０，２３５，２４０，２４５にアドレス指定された位置から読み出される。一実施例では、データワードは１６ビットであるが、プロセッサ／メモリコントローラ／メモリデータバスの幅に応じた他のサイズとすることも可能である。一実施例では、プロセッサ２００がメモリコントローラ２１５に対応するンバッファ２４０，２４５の１つの１／２を読み出すのと同時にメモリコントローラ２１０に対応するバッファ２３０，２３５の１つの１／２を読み込み、プロセッサ２０５がメモリコントローラ２１０に対応するバッファ２３０，２３５の１つの残りの１／２と、メモリコントローラ２１５に対応するバッファ２４０，２４５の１つの残りの１／２とを読み込むように、１以上のバッファが２つの部分（１／２など）に構成される。
【００２５】
一実施例では、バッファは、対応するメモリにアクセス可能な複数のプロセッサに対応する複数の部分にパーティションされるよう構成可能であるかもしれない。例えば、バッファは、デュアルプロセッサシステムでは１／２にパーティション化され、クアドプロセッサシステムでは１／４にパーティション化され、オクタルプロセッサシステムでは１／８にパーティション化されるよう構成可能であるかもしれない。一実施例では、システムのメモリにアクセスするプロセッサの個数を検出し、それに応答してバッファを自動的に（動的に）パーティション化するのに利用されてもよい。
【００２６】
各メモリコントローラに対応する２つのバッファの１つが読み込まれた後、一実施例では、次のデータワードがメモリからメモリコントローラ２１０，２１５の１つに対応する以前に読まれたバッファに読み込まれる間、各メモリコントローラの第２バッファが、同様にして次のクロックエッジにおいて即座に読み込まれる。データが各サイクル又は各１／２のサイクル（ダブルポンプインタフェースのケース）により両方のメモリから又はメモリにプロセッサ２００，２０５によって連続的に読み書きされるように、上記プロセスが無制限のサイクル数だけ継続されてもよい。一実施例では、各メモリのいくつかのページが、新たなページのクローズ／オープンサイクルが各アクセスについて実行不要となるように、オープンのままとされるかもしれない。しかしながら、新たなページがオープンされる必要がある場合、例えば、プロセッサの１つにより使用されているページはクローズされないように、プロセッサの１つは、他方のプロセッサにリンク２０８を介しクローズされるべきページ又はオープンされるべきページを通知するようにしてもよい。このようにして、２つのプロセッサのページ状態が整合性を維持することができる。
【００２７】
メモリコントローラ２１０，２１５は、一実施例では、プロセッサ２００，２０５の内部にあってもよい。図３は、一実施例によるメモリコントローラが各自のプロセッサ３００，３０５の内部になるデュアルソケットシステムを示すブロック図である。一実施例では、バッファ３３０，３３５，３４０，３４５は、ＤＩＭＭ回路ボードなどのメモリ３２０，３２５の内部又は外部に配設される。一実施例では、情報が、図２を参照して説明された技術と整合した方法によりメモリ３２０，３２５に対して読み書きされるかもしれない。
【００２８】
図４は、少なくとも１つの実施例が実行可能な図２又は３に係るタイミング図を示す。一実施例によると、図４は、図２及び３に示される各メモリから各プロセッサに通信される１／２のデータに対応するデータ信号４１０，４１５，４２０，４２５とアドレス４０１，４０５とを示す。図４から明らかなように、本発明の実施例は、各１／２クロックサイクル又は、一部の実施例では各クロックサイクルによるデータの読み込みを実現するかもしれない。
【００２９】
図４のタイミング図に示される技術は、異なる２つのメモリから読み込む２より多くのプロセッサを収容するよう拡張されてもよい。図５は、本発明の少なくとも１つの実施例が実行可能なクアドソケットシステムを示す。図５のクアドソケットシステムでは、プロセッサ５００−１〜５００−４は、ソフトウェアアプリケーションがデータの位置に関して考慮する必要がないように、メモリ５１０−１〜５１０−４から読み出す。
【００３０】
図６は、一実施例による図５のクアドソケットシステムに対応するタイミング図を示す。一実施例によると、図６は、図５に示される各メモリから各プロセッサに通信される１／２のデータに対応するアドレス６０１，６０２，６０３，６０５と、データ信号６１０，６１５，６２０，６２５，６３０，６３５，６４０，６４５とを示す。図６から明らかなように、本発明の各実施例は、各１／２クロックサイクル又は一部の実施例では各クロックサイクルによるデータの読み出しを実現するかもしれない。
【００３１】
図７は、本発明の少なくとも１つの実施例を実行するのに利用可能な各処理のフロー図である。一実施例では、処理７０１において、２つのアドレスが、第１及び第２プロセッサ又は対応するメモリコントローラから２つの異なるメモリ（キャッシュ、ＤＲＡＭなど）に提供される。処理７０５において、第１の幅の情報が、メモリに提供されるアドレスにより示される各メモリ内の位置から抽出され、第１及び第２メモリに対応する第１及び第２バッファに一時的に格納される。この時点で、処理７１０において、第１プロセッサ／メモリコントローラは、第１バッファの１／２と第２バッファの１／２とを同時に読み込み、第２プロセッサは、第１及び第２バッファの残りの１／２を同時に読み込むかもしれない。処理７１５において、プロセッサが第１及び第２バッファからデータを読み込む間、第２の幅の情報が、第１及び第２プロセッサ／メモリコントローラから第１及び第２メモリへのアドレスにより示される他の位置から抽出され、第１及び第２メモリにそれぞれ対応する第３及び第４バッファに一時的に格納される。処理７２０において、第１プロセッサ／メモリコントローラは、第３バッファの１／２と第４バッファの１／２とを同時に読み込み、第２プロセッサは、第３バッファと第４バッファの残りの１／２を同時に読み込む。
【００３２】
これらの処理は、データのページ長全体について連続的に繰り返されるか、又は一部の実施例では、以降のページがリード処理のアクセスレートに影響を与えることなくオープン可能なより長く繰り返されてもよい。さらに一部の実施例では、各メモリに対応する２より多く又は少ないバッファが存在してもよい。一実施例では、第１及び第２データ幅はそれぞれ１６ビットである。しかしながら、他の実施例では、それらはより大きく又はより小さくてもよい。また、一部の実施例では、上述された処理は、４，８又は何れかの個数のプロセッサ又はメモリ装置に拡張可能である。一実施例では、各プロセッサはグラフィックプロセッサであるが、一部の実施例では、プロセッサのすべて又は一部は、汎用プロセッサ又は汎用プロセッサとグラフィックプロセッサの組み合わせであってもよい。上述された各処理は、一実施例では、複数のデータ要素に対して各処理／各命令を同時に実行することに関するグラフィックアプリケーション、金融アプリケーション、分子モデリングアプリケーション又は他のアプリケーションなどのスループットアプリケーションのパフォーマンスを向上させるのに利用可能である。
【００３３】
本発明の各実施例は、ゲームコンソールや汎用コンピュータプラットフォームを含む各種コンフィギュレーションの各種プラットフォーム上で利用可能である。さらに、各種実施例に関して使用されるプロセッサ及びメモリは、特定のシステム又はアプリケーションの要求及び制約に応じて、いくつかの方法により構成可能である。
【００３４】
図８は、少なくとも１つの実施例が利用可能なデュアルソケットシステムのコンフィギュレーションを示すブロック図である。図８は、メモリ８１０，８１５，８２０，８２５に接続されるプロセッサ８１０，８０５を示す。図８のコンフィギュレーションは、一部のアプリケーションにおいて許容又は所望される回路基板の複数のレイヤにおけるルーティングクロッシングインターコネクト８３０，８３５に関するかもしれない。
【００３５】
図９は、少なくとも１つの実施例が利用可能なデュアルソケットシステムの他のコンフィギュレーションを示すブロック図である。図９は、４つのメモリ９１０，９１５，９２０，９２５に接続される２つのプロセッサ９０１，９０５を示す。図９に示されるコンフィギュレーションは、クロッシングインターコネクトが存在しないため、複数のレイヤにおけるルーティングインターコネクトに関するものでないかもしれない。他のコンフィギュレーションもまた、プラットフォーム又はアプリケーションの要求に応じて利用可能である。さらに、本発明の各実施例は、いくつかの異なるインターコネクトトポグラフィ、構成、プロトコルなどを有するいくつかの異なるシステムにおいて利用可能である。
【００３６】
図１０は、例えば、本発明の一実施例が利用可能な共有バスコンピュータシステム（ＦＳＢ（Ｆｒｏｎｔ−Ｓｉｄｅ−Ｂｕｓ）コンピュータシステムなど）を示す。プロセッサ１００１，１００５，１０１０又は１０１５は、プロセッサコア１０２３，１０２７，１０３３，１０３７，１０４３，１０４７，１０５３，１０５７の１つの内部の又は関連付けされる何れかのローカルレベル１（Ｌ１）キャッシュメモリ１０２０，１０２５，１０３０，１０３５，１０４０，１０４５，１０５０，１０５５からの情報にアクセス可能な非対称なコア（パフォーマンス、パワー、動作電圧、クロック速度又はＩＳＡに関して異なる）を含むかもしれない。さらに、何れかのプロセッサ１００１，１００５，１０１０又は１０１５は、共有レベル２（Ｌ２）キャッシュ１００３，１００７，１０１３，１０１７から、又はチップセット１０６５を介しシステムメモリ１０６０からの情報にアクセス可能である。
【００３７】
本発明の各実施例は、図１０に示されるプロセッサ又はエージェントの何れかに存在するかもしれない。例えば、ロジック１０１９は、少なくとも１つの実施例の各態様を実行するため、プロセッサ１０２３，１０２７，１０３３，１０３７，１０４３，１０４７，１０５３，１０５７の何れか又はすべてに搭載されてもよい。特に、ロジック１０１９は、ページが他のエージェントにより現在アクセスされているか否かに応じて、メモリのページをオープン又はクローズするか判断するため、システム内の他のエージェントからの信号を検出、送信及び解釈するのに利用可能である。他の実施例では、ロジック１０１９は、複数のエージェントに分散される。さらなる他の実施例では、ロジック１０６０は、ソフトウェア、ハードウェア又はこれらの組み合わせを含むものであってもよい。
【００３８】
図１０に示されるＦＳＢコンピュータシステムに加えて、ポイント・ツー・ポイント（Ｐ２Ｐ）インターコネクトシステム及びリングインターコネクトシステムを含む他のシステムコンフィギュレーションが、本発明の各種実施例に関して利用可能である。図１１のＰ２Ｐシステムは、例えば、２つのプロセッサ１１７０，１１８０しか住めされていないが、複数のプロセッサを有してもよい。プロセッサ１１７０，１１８０はそれぞれ、メモリ１１２，１１４と接続するローカルＭＣＨ（Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌｌｅｒ  Ｈｕｂ）１１７２，１１８２を有してもよい。プロセッサ１１７０，１１８０は、ＰｔＰインタフェース回路１１７８，１１８８を用いてＰｔＰ（Ｐｏｉｎｔ−ｔｏ−Ｐｏｉｎｔ）インタフェース１１５０を介しデータを交換してもよい。プロセッサ１１７０，１１８０はそれぞれ、ＰｔＰインタフェース回路１１７６，１１９４，１１８６，１１９８を用いて各ＰｔＰインタフェース１１５２，１１５４を介しチップセット１１９０とデータを交換するかもしれない。チップセット１１９０はまた、ハイパフォーマンスグラフィックインタフェース１１３９を介しハイパフォーマンスグラフィック回路１１３８とデータを交換するかもしれない。
【００３９】
本発明の各実施例は、図１１内の何れかのプロセッサ又はエージェントに含まれてもよい。例えば、ロジック１１９９は、少なくとも１つの実施例の各態様を実行するため、プロセッサ１１７０，１１８０の一方又は両方に搭載されてもよい。特に、ロジック１１９９は、ページが他のエージェントにより現在アクセスされているか否かに応じて、メモリのページをオープン又はクローズするか判断するため、システム内の他のエージェントから信号を検出、送信及び解釈するのに利用可能である。他の実施例では、ロジック１１９９は、複数のエージェントに分散される。さらなる他の実施例では、ロジック１１９９は、ソフトウェア、ハードウェア又はこれらの組み合わせを含むかもしれない。
【００４０】
多数の異なるタイプの処理装置が、このようなプロセス再割当技術を利用することにより効果を得ることができる。例えば、処理ユニット６００−１〜６００−Ｎは、汎用プロセッサ（マイクロプロセッサなど）であってもよいし、又はマルチコア（１つのダイ上）マイクロプロセッサのためのマイクロプロセッサコアであってもよい。あるいは、複数のパラレルユニット又はコアを備えるシステムにおいて利用可能なデジタル信号プロセッサ、グラフィックプロセッサ、ネットワークプロセッサ又は何れかのタイプの特定用途プロセッサが、処理ユニット間の熱（又はパワー）起動処理シフトから効果を得るかもしれない。処理ユニット又はプロセッサは、少なくとも部分的に機能的な重複を有するか、又は同一であってもよい。すなわち、各処理ユニットは、複数の処理ユニット又はプロセッサ上で実行可能な少なくともいくつかの（すべてではないが）プロセスが存在するように、共通の命令又はコマンドセットを有する。他の実施例では、処理ユニットは、異なるパフォーマンス能力、トランジスタの個数、パワー消費若しくは熱特性、クロック周波数又はＩＳＡの何れか又は組み合わせに関して非対称であるかもしれない。
【００４１】
要求されたデータの臨機応変の処理及びリターンを実現するため、少なくとも１つの実施例は、アプリケーションにより要求されたデータを抽出するための最善の（最速など）方法を決定するため、コヒーレンシフィルタを有するかもしれない。例えば、一実施例では、コヒーレンシフィルタは、各エントリがシステムの何れかのプロセッサにより現在アクセス可能なデータに関する情報を有するコヒーレンシテーブルを含むかもしれない。一実施例では、プロセッサのコヒーレンシテーブルは、アプリケーションがデータを要求するとき、プロセッサがまずそれのコヒーレンシテーブルをチェックして、他のプロセッサが当該データを現在有しているか確認できるように、システムの他のプロセッサのキャッシュ、バッファ又は他のストレージ構成内で利用可能なデータを示すアドレスのリストを有する。そうである場合、データは、プロセス間のｎワイドインターコネクトを介しデータを抽出することによって、当該リクエストを処理するプロセッサにより抽出されるかもしれない。一実施例では、テーブルはプロセッサのキャッシュ／バッファなどにおいて利用可能なデータの一部しか示さないため（実際には、テーブルは含まれる情報料に関して可変的である）、ｎワイドプロセッサ間インターコネクトのトラフィックは、コヒーレンシテーブルの情報又はサイズに従って減少又は少なくとも制御可能である。
【００４２】
図１２は、コヒーレンシフィルタを含む本発明の一実施例が利用可能なシステムを示す。図１２において、プロセッサ１２０５上で実行されるアプリケーション又はスレッド１２４０は、プロセッサ１２０５にアドレスを提供することによってデータをリクエストするかもしれない。その後、プロセッサ１２０５は、要求されたデータがプロセッサ１２００内のバッファ又はキャッシュ内に現在あるか判断するため、プロセッサによりアクセス可能なメモリ又はプロセッサに格納されるコヒーレンステーブル１２４５にアクセスするかもしれない。例えば、テーブルが、要求されたデータがプロセッサ１２００において現在利用可能であることを示す場合、プロセッサ１２０５は、インターコネクト１２０８を介しプロセッサ１２００からデータを抽出し、これにより、最も臨機応変な方法によりプログラムにデータが提供される。一実施例では、テーブルは、アプリケーション又はスレッド１２４０によりプロセッサ１２０５に提供されるアドレスの一部に関して参照される。さらに少なくとも１つの実施例では、異なるテーブル（又は同一のテーブル）は、システムの各プロセッサに対応し、他のプロセッサに検出される要求される各アドレスについてテーブル内にエントリを生成することによって維持される。さらに、各エントリは、データが他のプロセッサ内に検出されないときを示す情報を有してもよく、又はエントリが一緒に削除されてもよい。各種コヒーレンシテーブルの維持スキーム及びアルゴリズムは、インターコネクト１２０８を介しプロセッサ間に共有される情報を追跡するのに利用されるかもしれない。
【００４３】
少なくとも１つの実施例の１以上の態様は、マシーンにより読み込まれると、マシーンにここに記載された技術を実行するロジックを生成させるプロセッサ内の各種ロジックを表すマシーン可読媒体に格納された典型的なデータにより実現可能である。“ＩＰコア”として知られるこのような表現は、有形のマシーン可読媒体（テープ）に格納され、ロジック又はプロセッサを実際に生成する製造マシーンにロードするため、各種カスタマ又はメーカーに供給されるかもしれない。
【００４４】
マイクロアーキテクチャメモリ領域アクセスに関する方法及び装置が説明された、上記説明は、例示的なものであって限定的なものでないことが理解されるべきである。他の多くの実施例は、上述した記載を参照及び理解することによって、当業者に明らかになるであろう。従って、本発明の範囲は、添付した請求項と、当該請求項が与える均等の完全な範囲とを一緒に参照することにより決定されるべきである。
【図１】
2010009580.tif 000003
【図２】
2010009580.tif 000004
【図３】
2010009580.tif 000005
【図４】
2010009580.tif 000006
【図５】
2010009580.tif 000007
【図６】
2010009580.tif 000008
【図７】
2010009580.tif 000009
【図８】
2010009580.tif 000010
【図９】
2010009580.tif 000011
【図１０】
2010009580.tif 000012
【図１１】
2010009580.tif 000013
【図１２】
2010009580.tif 000014
【外国語明細書】
2010009580000001.pdf
2010009580000002.pdf
2010009580000003.pdf
2010009580000004.pdf