特許第5911985号(P5911985)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インテル コーポレイションの特許一覧

特許5911985ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供
<>
  • 特許5911985-ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供 図000002
  • 特許5911985-ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供 図000003
  • 特許5911985-ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供 図000004
  • 特許5911985-ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供 図000005
  • 特許5911985-ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供 図000006
  • 特許5911985-ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供 図000007
  • 特許5911985-ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供 図000008
  • 特許5911985-ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5911985
(24)【登録日】2016年4月8日
(45)【発行日】2016年4月27日
(54)【発明の名称】ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供
(51)【国際特許分類】
   G06F 12/10 20160101AFI20160414BHJP
   G06F 12/08 20160101ALI20160414BHJP
   G06F 12/06 20060101ALI20160414BHJP
【FI】
   G06F12/10 501Z
   G06F12/08 551C
   G06F12/08 507Z
   G06F12/06 530A
   G06F12/06 515L
【請求項の数】22
【全頁数】19
(21)【出願番号】特願2015-42361(P2015-42361)
(22)【出願日】2015年3月4日
(62)【分割の表示】特願2013-195581(P2013-195581)の分割
【原出願日】2010年9月14日
(65)【公開番号】特開2015-135696(P2015-135696A)
(43)【公開日】2015年7月27日
【審査請求日】2015年3月4日
(31)【優先権主張番号】12/562,477
(32)【優先日】2009年9月18日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】ゴーサム エヌ. チャイニャ
(72)【発明者】
【氏名】ホーン ワーン
(72)【発明者】
【氏名】ディーパク エー. マサイカッティ
(72)【発明者】
【氏名】ジェイミソン ディー. コリンズ
(72)【発明者】
【氏名】イーサン シューフマン
(72)【発明者】
【氏名】ジェイムズ ピー. ヘルド
(72)【発明者】
【氏名】アジャイ ヴィー. バット
(72)【発明者】
【氏名】プラシャント セティ
(72)【発明者】
【氏名】スティーヴン エフ. ウォーリー
【審査官】 後藤 彰
(56)【参考文献】
【文献】 特開2003−316646(JP,A)
【文献】 特開2003−337714(JP,A)
【文献】 特表平10−503310(JP,A)
【文献】 特開2007−257637(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/06
G06F 12/08
G06F 12/10
(57)【特許請求の範囲】
【請求項1】
バーチャルアドレスを含むメモリアクセスリクエストを受信するステップと、
プロセッサの変換ルックアサイドバッファ(TLB)に格納される前記バーチャルアドレスに対応するエントリを解析し、前記バーチャルアドレスに対応する物理アドレス(PA)が前記プロセッサに関連するローカルメモリ、又は前記PAが前記ローカルメモリ若しくは1以上のリモートメモリの1つに存在するか示すための前記TLBのエントリのローカル属性に基づき非コヒーラントリンクを介し前記プロセッサに接続されるアクセラレータに関連するリモートメモリに存在するか判断するステップであって、前記ローカルメモリと前記リモートメモリとは一緒になって共有バーチャルメモリスペースを構成する、判断するステップと、
前記PAが前記リモートメモリに存在する場合、マイクロコードハンドラにより処理されるべきフォルト状態により前記メモリアクセスリクエストをタグ付けし、前記メモリアクセスリクエストを実行するため、前記非コヒーラントリンクを介しトンネルされる前記リモートメモリにリバースプロキシ実行リクエストを送信するステップと、
を有する方法。
【請求項2】
前記リモートメモリが関連付けされるアクセラレータを示す前記TLBのエントリの識別子フィールドを利用して、前記PAが配置されるアクセラレータと関連付けされる複数のリモートメモリの何れかを決定するステップを更に有する、請求項1記載の方法。
【請求項3】
前記プロセッサによる前記リモートメモリのPAへのアクセスの回数を示す前記TLBのエントリのカウンタを解析するステップを更に有する、請求項2記載の方法。
【請求項4】
前記プロセッサによる前記リモートメモリのPAへのアクセスの回数を示す前記TLBのエントリのカウンタが閾値に達すると、前記プロセッサ上で実行されるアプリケーションの関与なく、前記リモートメモリのPAから前記ローカルメモリに情報を移動するステップを更に有する、請求項1記載の方法。
【請求項5】
前記ローカルメモリに関連する第1の物理アドレス範囲と前記リモートメモリに関連する第2の物理アドレス範囲とを示すため、前記ローカルメモリと前記リモートメモリとを含むシステムのメモリコンフィギュレーションを設定するステップを更に有する、請求項1記載の方法。
【請求項6】
前記メモリアクセスリクエストの変換を取得するため、ページウォーク上で前記メモリコンフィギュレーションにアクセスし、前記PAが前記第1の物理アドレス範囲内にあるとき、前記PAが前記ローカルメモリにあることを示すための第1の値を有する位置インジケータと前記変換とを含むエントリを前記TLBに格納するステップを更に有する、請求項5記載の方法。
【請求項7】
第1のメモリマネージメントユニット(MMU)を含む第1のコアを有するプロセッサであって、
前記第1のMMUは、バーチャルアドレスから物理アドレスへの変換を格納するための複数のエントリを有し、各エントリは、対応するエントリのメモリ位置が当該プロセッサに接続されるローカルメモリ、又は非コヒーラントインターコネクトを介し当該プロセッサに接続されるアクセラレータに接続されるリモートメモリに存在するか示すための第1のインジケータを格納するための位置フィールドと、前記リモートメモリに関連するアクセラレータの識別子を格納するための識別子フィールドとを有し、前記プロセッサは、フォルト状態により前記リモートメモリにおけるメモリ位置に対するメモリリクエストをタグ付けし、前記フォルト状態を処理するためのハンドラを実行し、前記リモートメモリにおける前記メモリ位置に対するメモリリクエストを、前記非コヒーラントインターコネクトを介した通信のためのダイレクトメモリアクセス(DMA)に変換するプロセッサ。
【請求項8】
前記第1のMMUの各エントリは、当該プロセッサによる前記リモートメモリのメモリ位置へのアクセスの回数のカウントを格納するためのカウンタを更に有する、請求項7記載のプロセッサ。
【請求項9】
前記ローカルメモリはシステムメモリであり、前記リモートメモリは前記アクセラレータのローカルメモリである、請求項7記載のプロセッサ。
【請求項10】
前記システムメモリと前記リモートメモリとは、単一のバーチャルアドレススペースを構成する、請求項9記載のプロセッサ。
【請求項11】
前記システムメモリと前記リモートメモリとは、単一のバーチャルアドレススペースを構成する、請求項9記載のプロセッサ。
【請求項12】
前記第1のMMUのエントリは、前記メモリ位置が前記リモートメモリにあることを示し、当該プロセッサは、前記非コヒーラントインターコネクトのプロトコルを介し前記アクセラレータにメモリリクエストをトンネルする、請求項7記載のプロセッサ。
【請求項13】
前記アクセラレータは、第2のMMUを有し、前記第2のMMU上のページフォルトに応答して、前記アクセラレータは、前記ページフォルトを処理するよう前記プロセッサにリクエストする、請求項7記載のプロセッサ。
【請求項14】
当該プロセッサは、前記第1のMMUのエントリにおける情報を利用して、前記リモートメモリに存在するメモリ位置を直接アドレス指定する、請求項7記載のプロセッサ。
【請求項15】
当該プロセッサは、当該プロセッサ上で実行されるユーザレベルアプリケーションを利用することなく、前記第1のMMUのエントリにおける情報を利用して前記アクセラレータのリモートメモリに格納されているデータにアクセスするためのリバースプロキシ実行リクエストを前記アクセラレータの発信する、請求項7記載のプロセッサ。
【請求項16】
第1のメモリマネージメントユニット(MMU)を含む第1のコアを有するプロセッサであって、前記第1のMMUは、バーチャルアドレスから物理アドレスへの変換を格納するための複数のエントリを有し、各エントリは、対応するエントリのメモリ位置がシステムメモリ、又はアクセラレータコンポーネントに関連する第2のメモリに存在するか示すためのインジケータを格納するための位置フィールドと、前記プロセッサによる第2のメモリのメモリ位置へのアクセスの回数のカウントを格納するためのカウンタとを有し、前記プロセッサ上で実行されるアプリケーションから独立して、前記プロセッサは、前記カウンタが閾値に達すると、前記メモリ位置に格納されているデータを前記第2のメモリに存在するメモリ位置から前記システムメモリに存在するメモリ位置に移動し、前記カウンタが前記閾値に達すると生じる例外に応答して、前記データの移動は前記プロセッサ上で実行されるアプリケーションにトランスペアレントである、プロセッサと、
リンクを介し前記プロセッサに接続されるアクセラレータコンポーネントであって、第2のプロセッサと第2のMMUとを有するアクセラレータコンポーネントと、
前記プロセッサに接続されるシステムメモリであって、DRAM(Dynamic Random Access Memory)を有するシステムメモリと、
を有するシステム。
【請求項17】
前記プロセッサは、前記第1のMMUのエントリにおける情報を利用して前記第2のメモリに存在するメモリ位置を直接アドレス指定する、請求項16記載のシステム。
【請求項18】
前記システムメモリと前記第2のメモリとは、単一のバーチャルアドレススペースを構成する、請求項16記載のシステム。
【請求項19】
前記プロセッサは、前記カウンタが前記閾値に達すると行われるインタラプトに応答して、前記プロセッサ上で実行されるアプリケーションの関与なく、前記第2のメモリに存在するメモリ位置から前記システムメモリに存在するメモリ位置にデータを移動する、請求項16記載のシステム。
【請求項20】
前記プロセッサと前記アクセラレータコンポーネントとは、単一の半導体ダイから構成される、請求項16記載のシステム。
【請求項21】
前記第2のメモリは、前記システムメモリのパーティションされた部分である、請求項20記載のシステム。
【請求項22】
命令フェッチユニット、命令復号化ユニット及び第1のメモリマネージメントユニット(MMU)を有する第1のコアであって、前記第1のMMUは、バーチャルアドレスから物理アドレスへの変換を格納する複数のエントリを有し、各エントリは、前記第1のコアによるアクセスの回数のカウントを、前記プロセッサに接続される第2のプロセッサに関連する第2のメモリのメモリ位置に格納するためのカウンタを有し、エントリの前記カウンタが閾値に達すると、前記プロセッサは、前記エントリに関連するメモリ位置に格納されているデータを前記第2のメモリのメモリ位置から前記プロセッサに接続されるシステムメモリのメモリ位置に移動し、前記第1のコアは更に第1のキャッシュメモリと少なくとも1つの実行ユニットとを有する、第1のコアと、
インターコネクトと、
前記インターコネクトを介し前記第1のコアに接続され、第2のMMUを有するアクセラレータであって、前記第2のMMUはバーチャルアドレスから物理アドレスへの変換を格納する複数のエントリを有し、前記第1のMMUの各エントリは、対応するエントリのメモリ位置が前記プロセッサに接続される第1のメモリ又は前記アクセラレータに接続される第2のメモリに存在するか示すための第1のインジケータを格納するための位置フィールドを有し、前記プロセッサは、前記第2のメモリにおけるメモリ位置に対するメモリリクエストを前記第2のメモリとの通信のためのダイレクトメモリアクセス(DMA)に変換するためのハンドラを実行する、アクセラレータと、
前記第1のコアと前記アクセラレータとに接続される共有キャッシュメモリと、
前記共有キャッシュメモリに接続されるメモリコントローラと、
を有するプロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供に関する。
【背景技術】
【0002】
プロセッサベースシステムが進歩するに従って、PCI ExpressTM Specification Base Specification version 2.0(2007年1月17日に公開された)(以降、PCIeTM仕様書)又は他の同様のプロトコルに基づくリンクに従って、Peripheral Component Interconnect Express(PCIeTM)インターコネクトなどの高速周辺相互接続を介しシステムに接続されるプログラマブルアクセラレータの利用性は、システムインテグレータがより高い計算パワーをシステムに与えることを可能にする。しかしながら、メインプロセッサ(マルチコア中央処理ユニット(CPU)など)とアクセラレータとの間に計算を手作業により分割するため、アプリケーションに大きな変更をすることなくアプリケーションがさらなる計算パワーを透過的又はトランスペアレント(transparent)に利用し、データの前方及び後方への移動を管理することが可能になることを保障することは困難である。従来、オペレーティングシステム(OS)により管理されるメインシステムメモリのみが、アプリケーションの利用のために割り当てられた。周辺相互接続を介し接続されるアクセラレータにローカルな物理メモリは、別々に管理される。特に、アクセラレータ上のローカルメモリは、メインプロセッサ上で実行されるOSにより認識可能なシステムメモリの一部としては見られない。その代わりに、デバイスドライバソフトウェアが、ローカルメモリとリモートメモリとの間のデータ移動を明示的に管理している。
【0003】
プロセッサによりアクセスされる物理メモリは、連続的で大規模なバーチャルアドレススペースの錯覚をもたらすため、物理メモリへのアクセスを仮想化するオペレーティングシステムにより管理される。プロセッサはソフトウェアがバーチャルページを物理ページにマップするためのマッピングテーブルを設定することを可能にするため、OSは、バーチャルメモリ管理の基礎となるプロセッササポートを利用する。プロセッサは、メモリアクセスが行われる必要がある度に、マッピングテーブルに照会することによってバーチャルメモリアドレス変換をサポートする。頻繁にアクセスされる変換は、プロセッサがこの処理をスピードアップすることによってキャッシュ可能である。ページテーブルとも通常呼ばれるこれらのマッピングテーブルはまた、所与のバーチャルページへのアクセスを制御するリード/ライト及びユーザ/スーパーバイザ特権ビットなどの属性ビットを含む。OSがマザーボード上で利用可能な物理メモリ(システムメモリ)を管理している間、それはアクセラレータにローカルで利用可能なメモリを管理又は割り当てない。従って、現在の課題は、プログラマによって見えるような共有メモリモデルを構成し、異なるメモリの間でページをフォルト及び移動させるためにメモリプロテクション機構に依存するものである。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の課題は、ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートを提供することである。
【課題を解決するための手段】
【0005】
上記課題を解決するため、本発明の一態様は、バーチャルアドレスを含むメモリアクセスリクエストを受信するステップと、前記バーチャルアドレスに対応する物理アドレス(PA)がプロセッサに付属されるローカルメモリ又は非コヒーラントリンクを介し前記プロセッサに接続されるアクセラレータに付属するリモートメモリに存在するか判断するため、前記プロセッサの変換ルックアサイドバッファ(TLB)に格納される前記バーチャルアドレスに対応するエントリを解析するステップと、前記PAが前記リモートメモリに存在する場合、前記メモリアクセスリクエストを実行するため、リバースプロキシ実行リクエストを前記リモートメモリに送信するステップとを有する方法であって、前記ローカルメモリと前記リモートメモリとは、一緒になって共有バーチャルメモリスペースを構成する方法に関する。
【発明の効果】
【0006】
本発明によると、ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートを提供することができる。
【図面の簡単な説明】
【0007】
図1図1は、本発明の一実施例によるシステムのブロック図である。
図2図2は、本発明の一実施例によるリバースプロキシ実行方法のフロー図である。
図3図3は、本発明の一実施例によるリバースプロキシ実行処理を示すブロック図である。
図4図4は、本発明の一実施例によるプロキシ実行方法のフロー図である。
図5図5は、本発明の一実施例によるプロキシ実行処理を示すブロック図である。
図6図6は、本発明の一実施例によるページテーブルの一例となるエントリである。
図7図7は、本発明の一実施例によるプロセッサのブロック図である。
図8図8は、本発明の一実施例によるオンチップアクセラレータを有するシステムのブロック図である。
【発明を実施するための形態】
【0008】
以下、図面に基づいて本発明の実施の形態を説明する。
【0009】
各実施例は、プロセッサ(ソケット上の中央処理ユニット(CPU)など)がアクセラレータ上のメモリにアクセスし、特別なロード/ストアトランザクションを利用してメモリをアドレッシングすることによって、Peripheral Component Interconnect Express(PCIeTM)などのインタフェースによりシステムに相互接続されるアクセラレータによる完全に共有されたバーチャルアドレススペースを構成及び管理することを可能にする。リモートメモリをアドレッシングすることが可能であることは、アプリケーションソフトウェアにより見える有効計算キャパシティを増加させることを直接可能にし、データを前方及び後方に移動させるのにプログラマの明示的な関与なくアプリケーションがデータをシームレスに共有することを可能にする。このようにして、メモリは、メモリプロテクションを用いる必要なく、またフォルトハンドラから完結されるべきメモリアクセスをリダイレクトするためにバーチャルアドレスアクセス上でフォルトすることなく、アドレッシング可能である。また、既存の共有メモリマルチコア処理は、ソケット上にはないが、周辺のコヒーラントでないリンクを介し接続されるアクセラレータを含むよう拡張可能である。
【0010】
他方、クラスタベースシステムなどの典型的なシステムは、プログラマにより見えるような部分的な共有メモリモデルを構成し、CPUと周辺デバイスとの間でページをフォルト及び移動するためにメモリプロテクション機構に依存する。また、クラスタベースシステムでは、各ノードはオペレーティングシステム(OS)スタックの別のコピーを実行し、その先頭においてアプリケーションが実行される。アドレススペースの一部しか共有されず、プログラマはデータのどの部分が共有アドレススペースに配置されるか共有エリアから割り当てるか、又は明示的に指定するため、システムのこの特徴はプログラマに明らかにされる。この実行環境は、単一共有メモリマルチコアシステムに類似する完全共有メモリ実行環境とは異なる。
【0011】
各種実施例では、ソケット上のプロセッサは、アクセラレータにローカルなリモートメモリをアドレッシング可能であり、このことは、プロセッサがリモートメモリアドレスを透過的に用いて共有データにアクセスすることを可能にする。これを実現するため、バーチャルメモリマネージメントシステムが、特別なロード/ストアトランザクションがリモート共有データをアドレッシングするため発行可能となるようにエンハンスされ、さらに明示的なプログラマの関与を必要とすることなくシステムがメモリページをより頻繁にアクセスされる場合にはより近くに移動することを可能にするため、アーキテクチャの拡張が提供される。さらに、メモリマネージメントの拡張は、プログラマがアドレススペースの何れの部分が共有される必要があるか明示的に指定する必要なくアプリケーションコードを直接実行し、又はプログラマが共通の共有データエリアを管理することを可能にする。
【0012】
また、キャッシュコヒーラントなCPUソケット上のコアと周辺相互接続を介しシステムに相互接続されるアクセラレータ(マルチコアCPUを含む)との間で共有されるバーチャルアドレススペースが構成及び管理可能である。このため、相互接続の両サイドのCPU/アクセラレータは、キャッシュコヒーラントであってもよいし又はなくてもよい相互接続を介しアクセラレータにローカルなメモリ又はシステムメモリに物理的に配置される共有バーチャルページにアクセス可能となる。
【0013】
従って、アクセラレータのローカルメモリが相互接続を介し、コヒーラントなファブリック(フロントサイドバス(FSB)又はクイックパスインターコネクト(QPI)など)を介しCPUにより直接的にはアクセス可能でなくても、アクセラレータ上のローカルな物理メモリは、CPUとさらにOS及びアプリケーションへの追加的なシステムメモリとして動作可能である。
【0014】
各実施例は、多数の異なるシステムタイプにより実現可能である。図1を参照して、本発明の一実施例によるシステムのブロック図が示される。図1に示されるように、システム100は、例えば、PCIeTMリンクであってもよいコヒーラントでないインターコネクト140を介しアクセラレータカード150に接続されるホストパーソナルコンピュータ(PC)プラットフォーム110を有する一例となるコンピュータシステムである。図示されるように、ホストプラットフォーム110は、CPU120と、一部の実施例ではDRAM(Dynamic Random Access Memory)であるシステムメモリ130とを有する。図1では簡単化のため最小限の構成要素しか示されていないが、所与のプラットフォームは、入出力ハブ、チップセットコンポーネント、周辺デバイス、大容量記憶装置、入出力デバイスなどを含む他の多数の典型的な構成要素を含むものであってもよいことは理解されるであろう。
【0015】
図1に示されるように、CPU120は、メモリマネージメントユニット(MMU)125を有する。MMU125は、バーチャルアドレスと物理アドレスとのマッピングを可能にし、一部の実施例では、1以上の変換ルックアサイドバッファ(TLB)を有する。後述されるように、本発明の一実施例によるMMUへの各種アーキテクチャの拡張は、プラットフォーム110とアクセラレータカード150に付属するメモリの間の共有バーチャルメモリの構成及び利用を可能にする。
【0016】
図1を参照するに、アクセラレータカード150は、グラフィックス処理ユニット、CPU又は他の何れか同様のデバイスなどの何れかのタイプのアクセラレータであってもよいインテレクチャルプロパティ(IP)ブロック160を有する。図示されるように、このIPブロック自体がMMU165を有する。プラットフォーム110との通信を可能にするため、ブリッジ155が、インターコネクト140のためのプロトコルに従って行われる通信を、システムオンチップ(SoC)ファブリック170上で使用されるものと整合するプロトコルに変換するため存在し、SoCファブリック170は次にIPブロック160をDRAMであってもよいローカルメモリに接続する。図1の実施例では特定の実現形態により示されているが、本発明の範囲はこれに限定されるものでない。
【0017】
各実施例は、オンボード(マザーボードなど)システムメモリの外部の物理メモリアクセスをCPUが特定可能であることをエンハンスするリバースプロキシ実行(RPE)を実現する。このとき、このような位置へのアクセスは、周辺ファブリックを介しアクセラレータにトンネルされるアクセスクラスに変換される。さらに、アクセラレータは、それのローカル物理メモリからのアクセスに利用される。RPEとプロキシ実行(CPUがアクセラレータのリクエストの下でメモリアクセスの完了を支援する)とを一緒に利用して、(コヒーラント又は非コヒーラントな)ファブリックを介しマルチソケットCPUに接続される独立したMMUを有する任意のアクセラレータは、システムメモリとアクセラレータローカルメモリとの双方を含む物理メモリのための共有バーチャルアドレススペースを構築可能である。RPEとプロキシ実行とを利用して、一実施例は、従来のシンメトリックなマルチプロセッシング(SMP)のために構築された同一のマルチスレッド共有バーチャルメモリベースプログラムが、周辺I/Oファブリック上の複数のストップ又は複数のCPUソケット上にある各CPUにスレッドを分散させることを可能にする。
【0018】
アーキテクチャ機構と共に、各実施例はまた、周辺インターコネクトを介しソケットとアクセラレータ(又はCPU)上のコアの間の制御及びデータ転送がそれぞれが異なる最適化オプションを備えた完全にOSアンアウェアなものからOSアウェアなものまでの異なる抽象化レベルにおいて透過的に動作することを可能にするファームウェア及びシステムソフトウェアの拡張を含む。
【0019】
データは、アクセラレータサイドと共にCPUサイドからの共有データに対するアクセスパターンに基づく要求ベースにより共有可能である。バーチャルアドレスにより動作し、アドレス変換をサポート可能なアクセラレータは、アクセラレータがアプリケーションプログラムの一部を実行する際にコード又はデータを参照するときに同一のバーチャルアドレスが利用可能であるため、手つかずのままのデータ及びコードを参照して同一のコードを透過的に実行可能である。コード又はデータを含む物理ページは、アクセラレータにローカルに配置可能であるか、又はシステムメモリからフェッチ可能である。バーチャルページは、アプリケーションがアクセラレータ上での計算を設定するためのデータ移動を管理することが不要であるため、アプリケーションソフトウェアスタックの明示的な関与なくアクセス頻度に基づき、リモート位置からローカル位置に移動可能である。
【0020】
ドライバソフトウェアには、しばしばメインシステムメモリとアクセラレータにローカルなリモートメモリとの間のDMA(Direct Memory Access)転送を利用して、データを大量に明示的に移動するジョブが課せられる。従来のドライバモデルでは、CPU上で実行されるアプリケーションプログラムとアクセラレータを管理するドライバプログラムとは、典型的には2つの異なるバーチャルアドレススペースにある。このため、アプリケーションとドライバとの間のデータ通信と、システムメモリとアクセラレータローカルメモリとの間のデータ転送とのために、かなりのオーバヘッドが通常生じる。さらに、このデータ転送は、典型的には、プログラマにより記述されるアプリケーションコードにより実現される。例えば、プログラマは、ベンダ固有のアプリケーションプログラミングインタフェース(API)セットを利用して、システムメモリからアクセラレータメモリにデータを手動により移動することが要求される。DMA処理の明示的な管理を必要とすることのない、本発明の一実施例によるCPUとアクセラレータコアとの間の共有バーチャルアドレススペースの構成は、データ共有化をかなり簡単化する。これは、アプリケーションコードとデータ全体が、例えば、プログラマによるDMA処理の明示的な編成などによりアプリケーションプログラムを変更することによってデータを明示的に移動させる必要なく、共通の共有バーチャルアドレススペースに配置可能であるためである。従って、データ転送は依然としてDMAにより可能であるが、それらはプログラマにより制御されない。すなわち、プロセッサは、データアクセスを可能にするため基礎となるファブリックを設定及び管理するためのプログラマによる明示的なプログラミングなく、ユーザレベルアプリケーションの実行中にリモートメモリに存在するデータに直接アクセスする。
【0021】
CPUとアクセラレータとの間の共有アドレススペースを構成するため、メモリマネージメントユニットは、共有バーチャルアドレススペースへのロード/ストアアクセスが、仮想アドレスから物理アドレスへの変換に用いられるページテーブルのコンテンツに基づきリモートメモリに送られることを可能にする。
【0022】
システムソフトウェアサポートは、ランタイムシステムがバーチャルページの位置を透過的かつ動的に移動することを可能にする。これにより、CPUとアクセラレータとの間の共通の共有バーチャルアドレススペースが構成可能となり、プログラムのランタイムワーキングセットロカリティ動作が、アクセスが頻繁でない場合にはバーチャルページをリモートに配置し、又は頻繁にアクセスされるページに対してはローカルにそれらを配置するのに利用される。
【0023】
各種実施例では、バーチャルメモリサポートを拡張するための異なる機構が提供される。1つの実現形態は、既存のレガシーページングシステム設計に対するOSの変更を含まないが、他の実現形態は、ページテーブルエントリにより多くの情報を追加可能である。これらの機構は、リバースプロキシ実行、すなわち、CPUがシステムメモリ上でなく周辺ファブリックのアクセラレータにローカルなリモート物理メモリにマップされるバーチャルアドレスアクセスを特定及び提供する機能をサポートするための同様のアーキテクチャ機構を伴う。
【0024】
RPEをサポートするため、CPUは、与えられたバーチャルアドレスがシステムメモリ又は周辺ファブリックのリモートメモリにマップされるか特定する。物理アドレスがシステムメモリにマップされた場合、当該アクセスは通常のメモリアクセスによりローカルに処理され、そうでない場合、RPEが当該アクセスを処理するよう指示される。一実施例では、RPEは、専用のマイクロコードフローを用いて実現されてもよい。RPEは、マイクロコードハンドラにより処理される特別なフォルト状態によりアクセス(ロード/ストア(LD/ST)など)をタグ付けすることによって開始される。複数の変形が可能であるが、ハンドラはアクセスを周辺ファブリックのREAD/WRITE/DMAトランザクションに変換する。説明の簡単化のため、周辺ファブリックはPCIeTMインターコネクトであり、リモート物理メモリへの個別の各アクセスはキャッシュ不可なアクセスに変換され、さらにPCIeTMファブリック上のリクエスト/データをトンネルするため、PCIeTMデータトランザクションに変換されると仮定する。このトランザクションは、オリジナルのバーチャルアドレス又は物理アドレスをカプセル化可能である。一部の実施例では、アクセスを実行するCPUスレッドは、リモートアクセスの保留中の完了をストールしてもよい(又は他のスレッドにスイッチしてもよい)。アクセラレータがCPUからアクセスリクエストを通知するPCIeTMトランザクションを受信すると、アクセラレータのシーケンサは当該リクエストを特別なインタラプトイベントとして処理する。シーケンサは、当該リクエストからアクセスアドレスとアクセスタイプとを抽出する。アクセスアドレスがバーチャルアドレスである場合、シーケンサは、物理アドレスを取得するため、ローカルMMUを介しトランザクションをローカルに実行する。物理アドレスを利用して、アクセラレータのシーケンサは、ストアをコミットするか(ライトトランザクションの場合)、又はロードのためのデータを取得する(リードトランザクションの場合)。シーケンサは、リプライ(ロードの場合など)をPCIeTMトランザクションにカプセル化し、ホストルート(すなわち、CPU)に送り返す。CPUコアは、PCIeTMトランザクションと完了したアクセスの状態とを受信し、以降の処理を再開する。これにより、リモートアクセスのアクセス状態に基づくアクセスフォルトが生じうる。
【0025】
図2を参照するに、本発明の一実施例によるリバースプロキシ実行のためのフロー図が示される。図2に示されるように、アクセラレータのローカルメモリ、すなわち、CPUに関するリモートメモリ上にあるデータにアクセスするため、方法200が利用される。図2に示されるように、方法200は、メモリアクセスリクエストを受信することによって開始される(ブロック210)。このリクエストはホストCPUにおいて受信され、さらにエントリがTLBにあるバーチャルアドレスのためのものであるか判断するため、TLBなどのMMUに転送される(ダイアモンド220)。エントリがTLBにあるバーチャルアドレスのためのものでない場合、ページミスハンドラが、エントリを取得し、TLBに格納するため実行される(ブロック225)。
【0026】
エントリがTLBにあるとき、それは対応する物理アドレスの位置を決定するため解析される(ブロック230)。例えば、後述されるように、各TLBエントリは、対応するページがローカルメモリ(すなわち、システムメモリ)又はリモートメモリにあるか示すための情報を含むものであってもよい。物理アドレスがシステムメモリにある場合(ダイアモンド240)、制御はブロック245に移行し、メモリアクセスリクエストがシステムメモリに対して実行され、リクエストされたデータがレスポンスとしてリクエスト元に提供される(ブロック250)。
【0027】
ダイヤモンド240において、物理アドレスがシステムメモリにないと判断された場合、制御はブロック260に移行する。ブロック260において、データを含むメモリアクセスリクエストをリモートメモリ(アクセラレータのローカルメモリなど)に送信するため、リバースプロキシ実行リクエストが用意される。各種実施例では、このリクエストは、特別なロード/ストアリクエストなどとして非コヒーラントインターコネクトにおいてトンネリングされる。このリバースプロキシ実行リクエストがアクセラレータ上で処理された後、制御はブロック270に移行し、リバースプロキシ実行リクエストの結果が受信される。すなわち、ブロック250に関連して上述されたように、リクエストされたデータが受信され、レスポンスがリクエスト元に提供可能である。図2の実施例では特定の実現形態が示されたが、本発明の範囲はこれに限定されるものでない。
【0028】
図3を参照して、本発明の一実施例によるリバースプロキシ実行のための処理を示すブロック図が示される。図3に示されるように、CPU120からMMU125へのバーチャルアドレス(V.A)Xにアクセスする(1)リクエストが失敗すると(例えば、ルックアップが、当該ページはアクセラレータカードのローカルメモリにあることを示すなど)、リバースプロキシ実行リクエストが用意され、アクセラレータカード150に送信される(2)。次に、アクセラレータ160は、メモリアクセスリクエストをMMU165に送信する(3)ため当該リクエストを処理し、次にMMU165はローカルメモリ180のリクエストされたページにアクセスする(4)。これにより、リクエストされたデータはCPU120に送り返すことができる(5)。アクセラレータからのデータはDMAを介しホストCPUに送信可能であるか、又は見せかけのLD/ST実現形態内のホストの下ですべてをポーリング可能である(マイクロコードフローなどにおいて)ことに留意されたい。すなわち、CPUがリモートメモリ位置へのアクセスを送出すると、CPUは、DMAインタラプトを待機するか又はアクセラレータからの“リターン”データを取得するためアクティブなポーリングを実行する見せかけのLD/STを実行するためのマイクロコードルーチンへのアクセスに移る。(V.A)Xへのメモリアクセスの完了は、バーチャルアドレスXにおいて特定されるメモリ位置にアクセスしたアプリケーションプログラムに透過な方法により実行される。
【0029】
全体的に、RPE処理は非一様メモリアーキテクチャ(NUMA)システムにおける長い遅延メモリアクセス処理と同様に機能する。基礎となるトンネリング機構は、ファブリックの性質に応じて変更される。PCIeTMファブリックの場合、ルート(システム)とチャイルド(アクセラレータ)コンプレックスとの間の非対称性によって、CPUは通常はアクセラレータのローカルメモリの何れにもアクセスできないが、アクセラレータがシステムメモリの範囲にアクセス可能な場合、RPE実行機構の各種最適化は、システムメモリ又はアクセラレータのローカルメモリの一部をプライベートメモリとして利用することによって実現される。一実施例では、システムメモリの一部はリモートアクセラレータのローカルメモリのキャッシュとして確保可能である。あるいは、プライベートメモリ領域は、リモートアクセスされるバーチャルページを保持するためのバッファとして機能するよう割当て可能である。例えば、リモートページにマップされるバーチャルアドレスXへのアクセスは、ページ全体がリモートメモリアクセスを減少させるため、以降のアクセスのために利用可能なローカルバッファに一時的に読み込まれる。
【0030】
一実施例では、プロキシ実行機構は、アクセラレータのシーケンサ上で起こるページフォルト状況を処理するのに利用され、これは、当該フォルトが処理のためCPUに送信可能であることを意味する。これは、アクセラレータのシーケンサ上のMMUがCPUのMMUとコヒーラントであり、すべてのポイントがOSの同一のページテーブルになることを意味する。CPU又はアクセラレータ上での処理により生じるか否かにかかわらず、バーチャルページへのページフォルトは、CPUに従来のページ処理機構を利用して当該ページをメモリに配置させる。フォルトがアクセラレータのシーケンサ上のアクセスから生じたものである場合、CPUは、新たなページをリモートアクセラレータのローカル物理メモリにインストールする。そうでない場合、ページはシステムメモリに配置可能である。リモートアクセラレータのローカルメモリにマップされたバーチャルアドレスへのCPU上での非フォルトアクセスは、アクセラレータの物理ページにマップすることを保障し、プロキシ実行の完了を保障する。
【0031】
図4を参照して、本発明の一実施例によるプロキシ実行方法のフロー図が示される。図4に示されるように、アクセラレータにより所望されるデータがそれのローカルメモリにないときにプロキシ実行を実行するため、方法300が利用される。
【0032】
図4に示されるように、方法300は、アクセラレータからメモリアクセスリクエストを受信することにより開始される(ブロック310)。その後、当該リクエストのバーチャルアドレスのエントリがアクセラレータのTLBにあるか判断される(ダイアモンド350)。当該リクエストのバーチャルアドレスのエントリがアクセラレータのTLBにある場合、アクセラレータのローカルメモリがこのバーチャルアドレスを用いてアクセスされ(ブロック370)、リクエスト元にレスポンスが提供される(ブロック380)。
【0033】
他方、エントリがTLBにない場合、制御はブロック330に移行し、プロキシ実行リクエストがCPUに送信される(ブロック330)。リクエストされた変換がCPUのMMUにないとすると、ページミスハンドラがエントリを取得するため実行される(ブロック335)。さらに、このバーチャルアドレスに対応するページが、システムメモリからアクセラレータのローカルメモリに移動される(ブロック340)。その後、再開メッセージがCPUからアクセラレータに送信される(ブロック350)。エントリがMMUにあるため、メモリアクセスリクエストが、リクエストされたデータを取得するためローカルメモリに対して実行される(ブロック370)。リクエストされたデータを含むレスポンスがリクエスト元に提供される(ブロック380)。
【0034】
図5を参照して、本発明の一実施例によるプロキシ実行処理を示すブロック図が示される。図5に示されるように、プロキシ実行hまアクセラレータがローカルMMU165にないバーチャルアドレス(V.A)Xへのアクセスをリクエストしたときに行われる(1)。このページフォルトに対するプロキシ実行リクエスト(2)が、CPU120に送信される。図5は、MMU165がプロキシ実行リクエストをCPU120に直接送信する実現形態を示す。しかしながら、プロキシがページウォーキングコード(MMUがどのように管理されるかに応じてマイクロコード、ファームウェア又はソフトウェア)により実現されるとき、このコードはプロキシリクエストを送信可能である。CPU120は、当該リクエストをローカルMMU125に送信し(3)、MMU125はさらにリクエストされたバーチャルアドレスに対してシステムメモリ130のページにアクセスする(4)。図示されるように、リクエストがデータの読み込むに対するものであるとき、ページ全体がシステムメモリ130からローカルメモリ180に送信される(5)。一実施例では、データ転送は、データをシステムメモリ130の領域からローカルメモリ180の領域にコピーするようDMAをプログラムするCPU120を介して行われる。あるいは、CPU120は、上述されるマイクロコードを用いて実現されるなど、“見せかけの”各ロード/ストア命令シーケンスを実行することによってコピーを実行可能である。その後、CPU120は、再開メッセージをアクセラレータ160に送信し(6)、アクセラレータ160はさらにMMU165へのアクセスをリトライする(7)。そして、現在の変換を検出し、対応するデータをローカルメモリ180から取得するためリクエストが送信される(8)。ローカルメモリ180のデータへのアクセスを可能にするため、MMU165がアドレッシング可能とされることに留意されたい。CPU120は、システムメモリ130上のページテーブルからMMU165への変換エントリを更新するため、“見せかけ”の各LD/STを直接実行する。あるいは、CPU120は、アクセラレータサイドにローカルメモリ180へのデータ転送を介し変換を含むページテーブル又はその一部をコピーすることが可能であり、その後、ローカルに配置されたページテーブルをウォークするページウォーカを有するアクセラレータ160を再開する。
【0035】
CPU上のバーチャルアドレスアクセスがローカル(システムメモリにおいて)又はリモート(アクセラレータのメモリにおいて)であるか区別するための情報は、システムメモリコンフィギュレーションに関する完全な知識を有するBIOS(Basic Input/Output System)から当該情報を獲得するOSから与えられる。RPEをサポートするため、BIOSは、アクセラレータに関する通知されたメモリサイズを列挙する。この処理は、BIOSによりブート時に実行されるROM/RAMチップセレクトに類似している。その後、BIOSは、システムメモリとアクセラレータローカルメモリとの和を報告し、OSにメモリの何れの範囲がローカルシステムメモリであるか、またリモートであるかを通知する。
【0036】
各種実施例では、メモリパーティション記述子と呼ばれる、BIOSのシステムレベル状態、すなわち、記述子アーキテクチャ状態セットが、このレンジ情報、例えば、最小ではシステムメモリのレンジ情報を記録する。これにより、この範囲外の物理アドレスは、リモートとして特定される。一実施例では、この情報はBIOSビルトインデータ構造に格納可能である。メモリ記述子はまた、ソフトウェアとマイクロコードとの双方にアクセス可能なマシーンに固有のレジスタにプライベート状態として格納される。このようなレンジ情報はまずOSのスタート前にBIOSにより確定され、これらの状態の使用はOSに従属しないことに留意されたい。すなわち、RPE機構は、リモートメモリとローカルメモリとの区別を意識しないレガシーOSにより機能可能である。
【0037】
CPUにより処理される所与のLD/STについて、各TLB変換に物理アドレスとメモリパーティション記述子とを比較させ、それがローカルシステムメモリかリモートアクセスであるか決定させることは困難である。代わりに、このようなチェックはMMUのクリティカルなパスから離れて実行可能であり、新たなTLBエントリが充填されると、ページウォーク上でのみ実行される。一部の実施例では、各TLBエントリは、対応するエントリがリモート又はローカルシステムメモリにあるか示すための属性ビットを含むことが可能である。新たなTLBエントリがインストールされると、ページウォーカは、メモリパーティション記述子に対してページテーブルエントリの物理アドレス範囲のレンジチェックを実行可能である。この機構は、OSがローカルに又はリモートにマップされるページとを区別しない場合であっても機能することに留意されたい。
【0038】
一部の実施例では、OSは、アクセラレータのローカルメモリを用いてアクセラレータが頻繁にアクセスするアプリケーションのコード及びデータの一部のみを保持することによって、アクセラレータのローカルメモリの利用の背後にあるポリシーを処理することができる。OSがアウェアでない場合、ランタイムレイヤ又は他のエンティティなどのロカリティ原理は、システムメモリ又はアクセラレータローカルメモリにおいてアクセスがより頻繁に発生する場所に近いワーキングセットを移動するのに役立つ。
【0039】
さらに、上述されるように、OSページテーブルフォーマットは、対応するページがローカルメモリ又はリモートメモリに格納されるか示すための属性ビットを有することが可能である。このビットは、OSがバーチャルアドレスと物理アドレスとのマッピングを確定するとマークでき、各物理ページに対して、OSは当該ページをローカル又はリモートとしてマークするため、メモリパーティション記述子によりチェックすることができる。このように、範囲のチェックはインストールされたTLBエントリに対して実行される必要がない。アプリケーションがアクセラレータ上のメモリにアクセス可能にするため、CPUは属性ビットを解析し、これにより、それが所与のバーチャルアドレスへのロード/ストアをリモート物理メモリ位置に指定可能となる。さらに、属性ビットはまたリモートに実行されるアクセスの回数を追跡し、リモートアクセスの回数が特定の閾値を超える場合、ページが他の場所に移動可能となるように、OSソフトウェアがリモートアクセスの回数に基づきポリシーを実現することを可能にする。
【0040】
ページをアクセス不可又は存在しないとしてマーク付けするなど、バーチャルページのプロテクションを実行し、結果としてのフォルトを処理することによって、リモートメモリアクセスを実現することが可能であるが、メモリアクセスが行われる毎にページフォルトハンドラが実行される必要があるため、アクセス遅延は増大する。その代わりに、本発明の一実施例を用いて、CPUは、リモートメモリ位置アドレスをバスコントローラに提供することが可能であり、バスコントローラは当該アクセスをアクセラレータのメモリ位置に誘導する。例えば、CPUは、ロード/ストアを完了させるためのソフトウェアからの支援なしにリモートメモリ位置にアクセスするため、バスコントローラにおいて規定された標準的なレジスタセットにアクセスすることによって、ロード/ストアを直接リダイレクトすることが可能である。このデータ転送はDMA(バルク転送)によるものであってもよいし、又はキャッシュライン粒度によるスカラー転送であってもよい。バーチャルページをリモートメモリ位置からローカルメモリ位置に(またその反対)透過的に移動させる機能は、ソフトウェア(アプリケーションなど)がデータの移動を明示的に管理することなくアクセラレータとデータを共有することを可能にする。アクセラレータがシステムに接続されず、又は非応答状態に入ると、アドレス変換ユニットは、ロード/ストアが失敗した理由を示すページフォルトを生成する。
【0041】
図6を参照して、本発明の一実施例によるページテーブルにおける一例となるエントリ400が示される。図示されるように、各エントリは、メモリに格納されているページの第1アドレスを示すPBAを格納するページベースアドレス(PBA)を有する。さらに、各エントリは、当該ページを有するシステムにあるアクセラレータを参照するためのnビットアクセラレータ識別子(ID)を格納するアクセラレータフィールド420と、対応するバーチャルページがローカルメモリ又はおそらく多数のリモートメモリの1つに格納されているかに関するnビットインジケータなどを格納するローカル/リモートフィールド430と、リモートメモリになされるアクセスの回数をカウントするmビットカウンタを格納するカウンタフィールド440と(カウンタは、ページがリモートメモリにある場合にのみアクティブとなるよう)、ページの異なる属性を示すための各種ビットを格納する属性フィールド450とを有する。
【0042】
一実施例では、アクセスカウンタの値がゼロになると、例外処理が引き起こされる。この例外処理は、ページ移動のためのバーチャルメモリ管理カーネルなどのOSソフトウェアが与えられたバーチャルページへのアクセス回数に基づき移動ポリシーを管理することを可能にする。すなわち、ソフトウェアは、バーチャルアドレススペースがCPU又はアクセラレータにより近くにある物理メモリページをマップすることが可能となるように、アプリケーションが処理するバーチャルアドレススペースを管理することができる。PCIeTMバスに接続されるアクセラレータについて、バスがコヒーラントでないとき、基礎となるランタイムソフトウェアは、ソフトウェアベースのコヒーレンス機構を実現してもよい。何れかの共有データ構造への競合するアクセスに対して、セマフォなどの同期制御は、生成スレッドがデータをコンシューマにハンドオフする準備ができるまでセマフォをリリースしないように利用可能である。生成スレッドがセマフォをリリースする前、それは、共有データに関するすべてのダーティキャッシュラインをメモリにフラッシュする必要がある。これは、アクセラレータ上のコンシューマスレッドがメモリから共有データへのアクセスを開始すると、ホストCPUとアクセラレータとの間のファブリックがキャッシュコヒーレンシをサポートしなくても、データがコヒーラントであることを保障する。他方、アクセラレータが共有データの処理を終了すると、同様の同期及びフラッシュ機構が、メモリベースデータコヒーレンシを保障するのに利用可能である。CPUとアクセラレータとの間のファブリックがキャッシュコヒーラントである場合(例えば、PCIeの以降の生成など)、生成スレッドがセマフォをリリースする前のハンドオフに対して、メモリへのダーティラインのフラッシュは必要とされない。
【0043】
OSサポートによる実施例では、アクセラレータ上のメモリの割当て及び管理は、アプリケーションに与えられるシステムメモリページを割当て及び管理し、バーチャルアドレスを物理アドレスに変換するためCPUにより用いられるページテーブルを管理するOSのメモリマネージャと協調して実行可能である。メモリマネージャはまた、リモートメモリにアクセスするためのリダイレクションによって行われる例外処理を処理し、CPUとアクセラレータとの間の物理ページの移動の背後にあるポリシーを管理する。ページ移動ポリシーは、ワークロードの動作に応じて可変的であり、潜在的にはリモートアクセスの回数を減少させるか(システムメモリへの対応するページの移動前に)、又はアクセス回数が最大となる位置にページを移動させるファーストタッチポリシーを実現するため変更可能である。コード及び読み出し専用データページは、物理ページの不要な移動を回避するため、複数のメモリに複製可能である。プログラムの実行中に処理されるデータを含むデータページのみが、データページへのアクセスのロカリティに基づき移動される。
【0044】
図7を参照して、本発明の一実施例によるプロセッサのブロック図が示される。図7に示されるように、プロセッサ500は、マルチステージパイプラインアウトオブオーダプロセッサである。プロセッサ500は、本発明の一実施例によるプロキシ実行及びリバースプロキシ実行に関連して用いられる各種特徴を示すため、図7において簡略化された図により示される。
【0045】
図7に示されるように、プロセッサ500は、実行対象のマクロ命令をフェッチし、プロセッサにおける以降の利用のために準備するのに利用されるフロントエンドユニット510を有する。例えば、フロントエンドユニット510は、フェッチユニット504と、命令キャッシュ506と、命令デコーダ508とを有する。一部の実現形態では、フロントエンドユニット510はさらに、マイクロ処理ストレージと共にマイクロコードストレージと一緒にトレースキャッシュを有してもよい。フェッチユニット504は、メモリ又は命令キャッシュ506などからマクロ命令をフェッチし、それらをプリミティブ、すなわち、プロセッサによる実行用のマイクロ処理に復号化するため、命令デコーダ508に供給する。フロントエンドユニット510はさらに、ここに記載されるプロキシ実行及びリバースプロキシ実行を処理するための追加された状態情報を含むエントリを格納するため、本発明の一実施例によるMMU509を有する。このような情報に基づき、システムメモリと1以上のアクセラレータのローカルメモリとを含む共有バーチャルメモリスペースにおける各処理は、データを移動させるためのプログラムによるサポートなしに効率的に実行可能となる。
【0046】
マイクロ命令を受信し、実行用にそれらを準備するのに用いられるアウトオブオーダ(OOO)エンジン515が、フロントエンドユニット510と実行ユニット520との間に接続される。より詳細には、OOOエンジン515は、マイクロ命令フローをリオーダし、実行に必要な各種リソースを割当て、レジスタファイル530及び拡張されたレジスタファイル535などの各種レジスタファイル内の記憶位置に論理レジスタのリネーミングを提供するための各種バッファを有する。レジスタファイル530は、整数及び浮動小数点演算のための別々のレジスタファイルを有する。拡張されたレジスタファイル535は、レジスタ毎に256又は512ビットなどのベクトルサイズ単位のストレージを提供する。
【0047】
各種リソースは、例えば、各種整数、浮動小数点、SIMD(Single Instruction Multiple Data)論理ユニット、特殊なハードウェアなどを含む実行ユニット520に存在する。結果は、リタイアメントロジック、すなわち、リオーダバッファ(ROB)540に提供される。より詳細には、ROB540は、実行される命令に係る情報を受信するための各種アレイ及びロジックを有する。この情報は、その後にROB540により調べられ、命令が有効にリタイアされ、結果データがプロセッサのアーキテクチャ状態にコミット可能であるか、又は命令の適切なリタイアメントを回避する1以上の例外処理が実行されたか判断される。もちろん、ROB540は、リタイアメントに係る他の処理を処理してもよい。
【0048】
図7に示されるように、ROB540は、本発明の範囲はこれに限定されるものでないが、一実施例では低レベルキャッシュ(L1キャッシュなど)であってもよいキャッシュ550に接続される。また、実行ユニット520は、キャッシュ550に直接接続可能である。キャッシュ550から、データ通信がより高いレベルのキャッシュ、システムメモリなどにより実行される。図7の実施例にはこの高レベルにより示されるが、本発明の範囲がこれに限定されるものでないことは理解されるであろう。
【0049】
例えば、一部の実現形態では、アクセラレータはプロセッサとオンチップに一体化可能である。例えば、1つのアーキテクチャでは、多数の個別のプロセッサコアを、グラフィックスプロセッサ又は他の特殊な処理ユニットなどの異質なコアでありうるアクセラレータと共に含むマルチコアプロセッサであってもよい。一般に、プロキシ実行及びリバースプロキシ実行の処理は、コヒーラント又は非コヒーラントリンクを含む何れかのタイプのインターコネクトによりコアに接続されるオンチップアクセラレータに対して、上述したのと同様にして実行されてもよい。
【0050】
図8を参照して、本発明の他の実施例によるシステムのブロック図が示される。図8に示されるように、システム600は、単一の半導体ダイ上に形成され、各種コンポーネントを含むマルチコアプロセッサ610を有する。具体的には、図8の実現形態では、プロセッサ610は、各コアがTLB625a〜625nを有し、上述されるような変換及び追加フィールドを有するエントリを含む複数のコア620a〜620nを有する。また、これらのコアは、各コアが自らのキャッシュメモリを有する点で、共有される最後のレベルのキャッシュである共有キャッシュ640に接続可能である。図示される実現形態では、このような2つのアクセラレータが示されるが、本発明の範囲はこれに限定されるものでない。アクセラレータとコアとの接続は、PCIeTMリンク、共有バスインターコネクトなどのコヒーラント又は非コヒーラントリンクなどの任意のタイプのインターコネクトによるものであってもよい。アクセラレータ630a,630bは、上述されるエントリを有するTLB635を有するよう示されている。さらに、プロセッサ610は、メモリコントローラ650を有する。
【0051】
一実現形態では、プロセッサ610はメモリ660に接続され、メモリ660は、プロセッサコアに関連付け可能な第1パーティション665aと、アクセラレータに関連付け可能な第2パーティション665bとを含む複数のパーティションに分割可能なシステムメモリであってもよい。もちろん、コア及びアクセラレータに係るメモリは、異なるポートを介し異なるメモリモジュールとして異なって構成されてもよい。プロセッサ610はさらにチップセット670に接続され、チップセット670は入出力デバイス、記憶装置、他のアクセラレータなどの各種周辺装置に接続可能である。
【0052】
従って、コヒーラント又は非コヒーラントとすることができるリンクを介し接続されるアクセラレータ又は一体化されたアクセラレータを有することが可能な異なるシステムにおいて、プロキシ実行とリバースプロキシ実行とを処理するための実施例が提供できる。
【0053】
各実施例はコードにより実現され、命令を実行するようシステムをプログラムするのに利用可能な命令を格納する記憶媒体に格納されてもよい。この記憶媒体は、以下に限定されるものでないが、フロッピー(登録商標)ディスク、光ディスク、ソリッドステートドライブ(SSD)、CD−ROM(Compact Disk−Read Only Memory)、CD−RW(Compact Disk−Rewritable)、光磁気ディスクを含む何れかのタイプのディスク、ROM(Read−Only Memory)などの半導体デバイス、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、EPROM(Erasable Programmable Read−Only Memory)、フラッシュメモリ、EEPROM(Electrically Erasable Programmable Read−Only Memory)などのRAM、磁気若しくは光カード、又は電子命令を格納するのに適した他の何れかのタイプの媒体を含む。
【0054】
本発明が限定数の実施例に関して説明されたが、当業者は多数の改良及び変形を理解するであろう。添付した請求項はこのようなすべての改良及び変形を本発明の真の趣旨及び範囲内に属するものとしてカバーすることが意図される。
【符号の説明】
【0055】
100 システム
110 プラットフォーム
120 CPU
130 システムメモリ
140 インターコネクト
150 アクセラレータ
図1
図2
図3
図4
図5
図6
図7
図8