JP2013254524A - ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供 - Google Patents

ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供 Download PDF

Info

Publication number
JP2013254524A
JP2013254524A JP2013195581A JP2013195581A JP2013254524A JP 2013254524 A JP2013254524 A JP 2013254524A JP 2013195581 A JP2013195581 A JP 2013195581A JP 2013195581 A JP2013195581 A JP 2013195581A JP 2013254524 A JP2013254524 A JP 2013254524A
Authority
JP
Japan
Prior art keywords
memory
accelerator
processor
remote
entry
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2013195581A
Other languages
English (en)
Inventor
Gautham N Chinya
エヌ. チャイニャ ゴーサム
Warne Haun
ワーン ホーン
Deepak A Mathaikutty
エー. マサイカッティ ディーパク
Jamison D Collins
ディー. コリンズ ジェイミソン
Ethan Schuchman
シューフマン イーサン
James P Held
ピー. ヘルド ジェイムズ
Ajay V Bhatt
ヴィー. バット アジャイ
Prashant Sethi
セティ プラシャント
Stephen F Whalley
エフ. ウォーリー スティーヴン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2013254524A publication Critical patent/JP2013254524A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

【課題】ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートを提供すること。
【解決手段】本発明の一態様は、バーチャルアドレスを含むメモリアクセスリクエストを受信するステップと、前記バーチャルアドレスに対応する物理アドレス(PA)がプロセッサに付属されるローカルメモリ又は非コヒーラントリンクを介し前記プロセッサに接続されるアクセラレータに付属するリモートメモリに存在するか判断するため、前記プロセッサの変換ルックアサイドバッファ(TLB)に格納される前記バーチャルアドレスに対応するエントリを解析するステップと、前記PAが前記リモートメモリに存在する場合、前記メモリアクセスリクエストを実行するため、リバースプロキシ実行リクエストを前記リモートメモリに送信するステップとを有する方法であって、前記ローカルメモリと前記リモートメモリとは、一緒になって共有バーチャルメモリスペースを構成する方法に関する。
【選択図】図1

Description

本発明は、ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供に関する。
プロセッサベースシステムが進歩するに従って、PCI ExpressTM Specification Base Specification version 2.0(2007年1月17日に公開された)(以降、PCIeTM仕様書)又は他の同様のプロトコルに基づくリンクに従って、Peripheral Component Interconnect Express(PCIeTM)インターコネクトなどの高速周辺相互接続を介しシステムに接続されるプログラマブルアクセラレータの利用性は、システムインテグレータがより高い計算パワーをシステムに与えることを可能にする。しかしながら、メインプロセッサ(マルチコア中央処理ユニット(CPU)など)とアクセラレータとの間に計算を手作業により分割するため、アプリケーションに大きな変更をすることなくアプリケーションがさらなる計算パワーを透過的又はトランスペアレント(transparent)に利用し、データの前方及び後方への移動を管理することが可能になることを保障することは困難である。従来、オペレーティングシステム(OS)により管理されるメインシステムメモリのみが、アプリケーションの利用のために割り当てられた。周辺相互接続を介し接続されるアクセラレータにローカルな物理メモリは、別々に管理される。特に、アクセラレータ上のローカルメモリは、メインプロセッサ上で実行されるOSにより認識可能なシステムメモリの一部としては見られない。その代わりに、デバイスドライバソフトウェアが、ローカルメモリとリモートメモリとの間のデータ移動を明示的に管理している。
プロセッサによりアクセスされる物理メモリは、連続的で大規模なバーチャルアドレススペースの錯覚をもたらすため、物理メモリへのアクセスを仮想化するオペレーティングシステムにより管理される。プロセッサはソフトウェアがバーチャルページを物理ページにマップするためのマッピングテーブルを設定することを可能にするため、OSは、バーチャルメモリ管理の基礎となるプロセッササポートを利用する。プロセッサは、メモリアクセスが行われる必要がある度に、マッピングテーブルに照会することによってバーチャルメモリアドレス変換をサポートする。頻繁にアクセスされる変換は、プロセッサがこの処理をスピードアップすることによってキャッシュ可能である。ページテーブルとも通常呼ばれるこれらのマッピングテーブルはまた、所与のバーチャルページへのアクセスを制御するリード/ライト及びユーザ/スーパーバイザ特権ビットなどの属性ビットを含む。OSがマザーボード上で利用可能な物理メモリ(システムメモリ)を管理している間、それはアクセラレータにローカルで利用可能なメモリを管理又は割り当てない。従って、現在の課題は、プログラマによって見えるような共有メモリモデルを構成し、異なるメモリの間でページをフォルト及び移動させるためにメモリプロテクション機構に依存するものである。
本発明の課題は、ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートを提供することである。
上記課題を解決するため、本発明の一態様は、バーチャルアドレスを含むメモリアクセスリクエストを受信するステップと、前記バーチャルアドレスに対応する物理アドレス(PA)がプロセッサに付属されるローカルメモリ又は非コヒーラントリンクを介し前記プロセッサに接続されるアクセラレータに付属するリモートメモリに存在するか判断するため、前記プロセッサの変換ルックアサイドバッファ(TLB)に格納される前記バーチャルアドレスに対応するエントリを解析するステップと、前記PAが前記リモートメモリに存在する場合、前記メモリアクセスリクエストを実行するため、リバースプロキシ実行リクエストを前記リモートメモリに送信するステップとを有する方法であって、前記ローカルメモリと前記リモートメモリとは、一緒になって共有バーチャルメモリスペースを構成する方法に関する。
本発明によると、ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートを提供することができる。
図1は、本発明の一実施例によるシステムのブロック図である。 図2は、本発明の一実施例によるリバースプロキシ実行方法のフロー図である。 図3は、本発明の一実施例によるリバースプロキシ実行処理を示すブロック図である。 図4は、本発明の一実施例によるプロキシ実行方法のフロー図である。 図5は、本発明の一実施例によるプロキシ実行処理を示すブロック図である。 図6は、本発明の一実施例によるページテーブルの一例となるエントリである。 図7は、本発明の一実施例によるプロセッサのブロック図である。 図8は、本発明の一実施例によるオンチップアクセラレータを有するシステムのブロック図である。
以下、図面に基づいて本発明の実施の形態を説明する。
各実施例は、プロセッサ(ソケット上の中央処理ユニット(CPU)など)がアクセラレータ上のメモリにアクセスし、特別なロード/ストアトランザクションを利用してメモリをアドレッシングすることによって、Peripheral Component Interconnect Express(PCIeTM)などのインタフェースによりシステムに相互接続されるアクセラレータによる完全に共有されたバーチャルアドレススペースを構成及び管理することを可能にする。リモートメモリをアドレッシングすることが可能であることは、アプリケーションソフトウェアにより見える有効計算キャパシティを増加させることを直接可能にし、データを前方及び後方に移動させるのにプログラマの明示的な関与なくアプリケーションがデータをシームレスに共有することを可能にする。このようにして、メモリは、メモリプロテクションを用いる必要なく、またフォルトハンドラから完結されるべきメモリアクセスをリダイレクトするためにバーチャルアドレスアクセス上でフォルトすることなく、アドレッシング可能である。また、既存の共有メモリマルチコア処理は、ソケット上にはないが、周辺のコヒーラントでないリンクを介し接続されるアクセラレータを含むよう拡張可能である。
他方、クラスタベースシステムなどの典型的なシステムは、プログラマにより見えるような部分的な共有メモリモデルを構成し、CPUと周辺デバイスとの間でページをフォルト及び移動するためにメモリプロテクション機構に依存する。また、クラスタベースシステムでは、各ノードはオペレーティングシステム(OS)スタックの別のコピーを実行し、その先頭においてアプリケーションが実行される。アドレススペースの一部しか共有されず、プログラマはデータのどの部分が共有アドレススペースに配置されるか共有エリアから割り当てるか、又は明示的に指定するため、システムのこの特徴はプログラマに明らかにされる。この実行環境は、単一共有メモリマルチコアシステムに類似する完全共有メモリ実行環境とは異なる。
各種実施例では、ソケット上のプロセッサは、アクセラレータにローカルなリモートメモリをアドレッシング可能であり、このことは、プロセッサがリモートメモリアドレスを透過的に用いて共有データにアクセスすることを可能にする。これを実現するため、バーチャルメモリマネージメントシステムが、特別なロード/ストアトランザクションがリモート共有データをアドレッシングするため発行可能となるようにエンハンスされ、さらに明示的なプログラマの関与を必要とすることなくシステムがメモリページをより頻繁にアクセスされる場合にはより近くに移動することを可能にするため、アーキテクチャの拡張が提供される。さらに、メモリマネージメントの拡張は、プログラマがアドレススペースの何れの部分が共有される必要があるか明示的に指定する必要なくアプリケーションコードを直接実行し、又はプログラマが共通の共有データエリアを管理することを可能にする。
また、キャッシュコヒーラントなCPUソケット上のコアと周辺相互接続を介しシステムに相互接続されるアクセラレータ(マルチコアCPUを含む)との間で共有されるバーチャルアドレススペースが構成及び管理可能である。このため、相互接続の両サイドのCPU/アクセラレータは、キャッシュコヒーラントであってもよいし又はなくてもよい相互接続を介しアクセラレータにローカルなメモリ又はシステムメモリに物理的に配置される共有バーチャルページにアクセス可能となる。
従って、アクセラレータのローカルメモリが相互接続を介し、コヒーラントなファブリック(フロントサイドバス(FSB)又はクイックパスインターコネクト(QPI)など)を介しCPUにより直接的にはアクセス可能でなくても、アクセラレータ上のローカルな物理メモリは、CPUとさらにOS及びアプリケーションへの追加的なシステムメモリとして動作可能である。
各実施例は、多数の異なるシステムタイプにより実現可能である。図1を参照して、本発明の一実施例によるシステムのブロック図が示される。図1に示されるように、システム100は、例えば、PCIeTMリンクであってもよいコヒーラントでないインターコネクト140を介しアクセラレータカード150に接続されるホストパーソナルコンピュータ(PC)プラットフォーム110を有する一例となるコンピュータシステムである。図示されるように、ホストプラットフォーム110は、CPU120と、一部の実施例ではDRAM(Dynamic Random Access Memory)であるシステムメモリ130とを有する。図1では簡単化のため最小限の構成要素しか示されていないが、所与のプラットフォームは、入出力ハブ、チップセットコンポーネント、周辺デバイス、大容量記憶装置、入出力デバイスなどを含む他の多数の典型的な構成要素を含むものであってもよいことは理解されるであろう。
図1に示されるように、CPU120は、メモリマネージメントユニット(MMU)125を有する。MMU125は、バーチャルアドレスと物理アドレスとのマッピングを可能にし、一部の実施例では、1以上の変換ルックアサイドバッファ(TLB)を有する。後述されるように、本発明の一実施例によるMMUへの各種アーキテクチャの拡張は、プラットフォーム110とアクセラレータカード150に付属するメモリの間の共有バーチャルメモリの構成及び利用を可能にする。
図1を参照するに、アクセラレータカード150は、グラフィックス処理ユニット、CPU又は他の何れか同様のデバイスなどの何れかのタイプのアクセラレータであってもよいインテレクチャルプロパティ(IP)ブロック160を有する。図示されるように、このIPブロック自体がMMU165を有する。プラットフォーム110との通信を可能にするため、ブリッジ155が、インターコネクト140のためのプロトコルに従って行われる通信を、システムオンチップ(SoC)ファブリック170上で使用されるものと整合するプロトコルに変換するため存在し、SoCファブリック170は次にIPブロック160をDRAMであってもよいローカルメモリに接続する。図1の実施例では特定の実現形態により示されているが、本発明の範囲はこれに限定されるものでない。
各実施例は、オンボード(マザーボードなど)システムメモリの外部の物理メモリアクセスをCPUが特定可能であることをエンハンスするリバースプロキシ実行(RPE)を実現する。このとき、このような位置へのアクセスは、周辺ファブリックを介しアクセラレータにトンネルされるアクセスクラスに変換される。さらに、アクセラレータは、それのローカル物理メモリからのアクセスに利用される。RPEとプロキシ実行(CPUがアクセラレータのリクエストの下でメモリアクセスの完了を支援する)とを一緒に利用して、(コヒーラント又は非コヒーラントな)ファブリックを介しマルチソケットCPUに接続される独立したMMUを有する任意のアクセラレータは、システムメモリとアクセラレータローカルメモリとの双方を含む物理メモリのための共有バーチャルアドレススペースを構築可能である。RPEとプロキシ実行とを利用して、一実施例は、従来のシンメトリックなマルチプロセッシング(SMP)のために構築された同一のマルチスレッド共有バーチャルメモリベースプログラムが、周辺I/Oファブリック上の複数のストップ又は複数のCPUソケット上にある各CPUにスレッドを分散させることを可能にする。
アーキテクチャ機構と共に、各実施例はまた、周辺インターコネクトを介しソケットとアクセラレータ(又はCPU)上のコアの間の制御及びデータ転送がそれぞれが異なる最適化オプションを備えた完全にOSアンアウェアなものからOSアウェアなものまでの異なる抽象化レベルにおいて透過的に動作することを可能にするファームウェア及びシステムソフトウェアの拡張を含む。
データは、アクセラレータサイドと共にCPUサイドからの共有データに対するアクセスパターンに基づく要求ベースにより共有可能である。バーチャルアドレスにより動作し、アドレス変換をサポート可能なアクセラレータは、アクセラレータがアプリケーションプログラムの一部を実行する際にコード又はデータを参照するときに同一のバーチャルアドレスが利用可能であるため、手つかずのままのデータ及びコードを参照して同一のコードを透過的に実行可能である。コード又はデータを含む物理ページは、アクセラレータにローカルに配置可能であるか、又はシステムメモリからフェッチ可能である。バーチャルページは、アプリケーションがアクセラレータ上での計算を設定するためのデータ移動を管理することが不要であるため、アプリケーションソフトウェアスタックの明示的な関与なくアクセス頻度に基づき、リモート位置からローカル位置に移動可能である。
ドライバソフトウェアには、しばしばメインシステムメモリとアクセラレータにローカルなリモートメモリとの間のDMA(Direct Memory Access)転送を利用して、データを大量に明示的に移動するジョブが課せられる。従来のドライバモデルでは、CPU上で実行されるアプリケーションプログラムとアクセラレータを管理するドライバプログラムとは、典型的には2つの異なるバーチャルアドレススペースにある。このため、アプリケーションとドライバとの間のデータ通信と、システムメモリとアクセラレータローカルメモリとの間のデータ転送とのために、かなりのオーバヘッドが通常生じる。さらに、このデータ転送は、典型的には、プログラマにより記述されるアプリケーションコードにより実現される。例えば、プログラマは、ベンダ固有のアプリケーションプログラミングインタフェース(API)セットを利用して、システムメモリからアクセラレータメモリにデータを手動により移動することが要求される。DMA処理の明示的な管理を必要とすることのない、本発明の一実施例によるCPUとアクセラレータコアとの間の共有バーチャルアドレススペースの構成は、データ共有化をかなり簡単化する。これは、アプリケーションコードとデータ全体が、例えば、プログラマによるDMA処理の明示的な編成などによりアプリケーションプログラムを変更することによってデータを明示的に移動させる必要なく、共通の共有バーチャルアドレススペースに配置可能であるためである。従って、データ転送は依然としてDMAにより可能であるが、それらはプログラマにより制御されない。すなわち、プロセッサは、データアクセスを可能にするため基礎となるファブリックを設定及び管理するためのプログラマによる明示的なプログラミングなく、ユーザレベルアプリケーションの実行中にリモートメモリに存在するデータに直接アクセスする。
CPUとアクセラレータとの間の共有アドレススペースを構成するため、メモリマネージメントユニットは、共有バーチャルアドレススペースへのロード/ストアアクセスが、仮想アドレスから物理アドレスへの変換に用いられるページテーブルのコンテンツに基づきリモートメモリに送られることを可能にする。
システムソフトウェアサポートは、ランタイムシステムがバーチャルページの位置を透過的かつ動的に移動することを可能にする。これにより、CPUとアクセラレータとの間の共通の共有バーチャルアドレススペースが構成可能となり、プログラムのランタイムワーキングセットロカリティ動作が、アクセスが頻繁でない場合にはバーチャルページをリモートに配置し、又は頻繁にアクセスされるページに対してはローカルにそれらを配置するのに利用される。
各種実施例では、バーチャルメモリサポートを拡張するための異なる機構が提供される。1つの実現形態は、既存のレガシーページングシステム設計に対するOSの変更を含まないが、他の実現形態は、ページテーブルエントリにより多くの情報を追加可能である。これらの機構は、リバースプロキシ実行、すなわち、CPUがシステムメモリ上でなく周辺ファブリックのアクセラレータにローカルなリモート物理メモリにマップされるバーチャルアドレスアクセスを特定及び提供する機能をサポートするための同様のアーキテクチャ機構を伴う。
RPEをサポートするため、CPUは、与えられたバーチャルアドレスがシステムメモリ又は周辺ファブリックのリモートメモリにマップされるか特定する。物理アドレスがシステムメモリにマップされた場合、当該アクセスは通常のメモリアクセスによりローカルに処理され、そうでない場合、RPEが当該アクセスを処理するよう指示される。一実施例では、RPEは、専用のマイクロコードフローを用いて実現されてもよい。RPEは、マイクロコードハンドラにより処理される特別なフォルト状態によりアクセス(ロード/ストア(LD/ST)など)をタグ付けすることによって開始される。複数の変形が可能であるが、ハンドラはアクセスを周辺ファブリックのREAD/WRITE/DMAトランザクションに変換する。説明の簡単化のため、周辺ファブリックはPCIeTMインターコネクトであり、リモート物理メモリへの個別の各アクセスはキャッシュ不可なアクセスに変換され、さらにPCIeTMファブリック上のリクエスト/データをトンネルするため、PCIeTMデータトランザクションに変換されると仮定する。このトランザクションは、オリジナルのバーチャルアドレス又は物理アドレスをカプセル化可能である。一部の実施例では、アクセスを実行するCPUスレッドは、リモートアクセスの保留中の完了をストールしてもよい(又は他のスレッドにスイッチしてもよい)。アクセラレータがCPUからアクセスリクエストを通知するPCIeTMトランザクションを受信すると、アクセラレータのシーケンサは当該リクエストを特別なインタラプトイベントとして処理する。シーケンサは、当該リクエストからアクセスアドレスとアクセスタイプとを抽出する。アクセスアドレスがバーチャルアドレスである場合、シーケンサは、物理アドレスを取得するため、ローカルMMUを介しトランザクションをローカルに実行する。物理アドレスを利用して、アクセラレータのシーケンサは、ストアをコミットするか(ライトトランザクションの場合)、又はロードのためのデータを取得する(リードトランザクションの場合)。シーケンサは、リプライ(ロードの場合など)をPCIeTMトランザクションにカプセル化し、ホストルート(すなわち、CPU)に送り返す。CPUコアは、PCIeTMトランザクションと完了したアクセスの状態とを受信し、以降の処理を再開する。これにより、リモートアクセスのアクセス状態に基づくアクセスフォルトが生じうる。
図2を参照するに、本発明の一実施例によるリバースプロキシ実行のためのフロー図が示される。図2に示されるように、アクセラレータのローカルメモリ、すなわち、CPUに関するリモートメモリ上にあるデータにアクセスするため、方法200が利用される。図2に示されるように、方法200は、メモリアクセスリクエストを受信することによって開始される(ブロック210)。このリクエストはホストCPUにおいて受信され、さらにエントリがTLBにあるバーチャルアドレスのためのものであるか判断するため、TLBなどのMMUに転送される(ダイアモンド220)。エントリがTLBにあるバーチャルアドレスのためのものでない場合、ページミスハンドラが、エントリを取得し、TLBに格納するため実行される(ブロック225)。
エントリがTLBにあるとき、それは対応する物理アドレスの位置を決定するため解析される(ブロック230)。例えば、後述されるように、各TLBエントリは、対応するページがローカルメモリ(すなわち、システムメモリ)又はリモートメモリにあるか示すための情報を含むものであってもよい。物理アドレスがシステムメモリにある場合(ダイアモンド240)、制御はブロック245に移行し、メモリアクセスリクエストがシステムメモリに対して実行され、リクエストされたデータがレスポンスとしてリクエスト元に提供される(ブロック250)。
ダイヤモンド240において、物理アドレスがシステムメモリにないと判断された場合、制御はブロック260に移行する。ブロック260において、データを含むメモリアクセスリクエストをリモートメモリ(アクセラレータのローカルメモリなど)に送信するため、リバースプロキシ実行リクエストが用意される。各種実施例では、このリクエストは、特別なロード/ストアリクエストなどとして非コヒーラントインターコネクトにおいてトンネリングされる。このリバースプロキシ実行リクエストがアクセラレータ上で処理された後、制御はブロック270に移行し、リバースプロキシ実行リクエストの結果が受信される。すなわち、ブロック250に関連して上述されたように、リクエストされたデータが受信され、レスポンスがリクエスト元に提供可能である。図2の実施例では特定の実現形態が示されたが、本発明の範囲はこれに限定されるものでない。
図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において特定されるメモリ位置にアクセスしたアプリケーションプログラムに透過な方法により実行される。
全体的に、RPE処理は非一様メモリアーキテクチャ(NUMA)システムにおける長い遅延メモリアクセス処理と同様に機能する。基礎となるトンネリング機構は、ファブリックの性質に応じて変更される。PCIeTMファブリックの場合、ルート(システム)とチャイルド(アクセラレータ)コンプレックスとの間の非対称性によって、CPUは通常はアクセラレータのローカルメモリの何れにもアクセスできないが、アクセラレータがシステムメモリの範囲にアクセス可能な場合、RPE実行機構の各種最適化は、システムメモリ又はアクセラレータのローカルメモリの一部をプライベートメモリとして利用することによって実現される。一実施例では、システムメモリの一部はリモートアクセラレータのローカルメモリのキャッシュとして確保可能である。あるいは、プライベートメモリ領域は、リモートアクセスされるバーチャルページを保持するためのバッファとして機能するよう割当て可能である。例えば、リモートページにマップされるバーチャルアドレスXへのアクセスは、ページ全体がリモートメモリアクセスを減少させるため、以降のアクセスのために利用可能なローカルバッファに一時的に読み込まれる。
一実施例では、プロキシ実行機構は、アクセラレータのシーケンサ上で起こるページフォルト状況を処理するのに利用され、これは、当該フォルトが処理のためCPUに送信可能であることを意味する。これは、アクセラレータのシーケンサ上のMMUがCPUのMMUとコヒーラントであり、すべてのポイントがOSの同一のページテーブルになることを意味する。CPU又はアクセラレータ上での処理により生じるか否かにかかわらず、バーチャルページへのページフォルトは、CPUに従来のページ処理機構を利用して当該ページをメモリに配置させる。フォルトがアクセラレータのシーケンサ上のアクセスから生じたものである場合、CPUは、新たなページをリモートアクセラレータのローカル物理メモリにインストールする。そうでない場合、ページはシステムメモリに配置可能である。リモートアクセラレータのローカルメモリにマップされたバーチャルアドレスへのCPU上での非フォルトアクセスは、アクセラレータの物理ページにマップすることを保障し、プロキシ実行の完了を保障する。
図4を参照して、本発明の一実施例によるプロキシ実行方法のフロー図が示される。図4に示されるように、アクセラレータにより所望されるデータがそれのローカルメモリにないときにプロキシ実行を実行するため、方法300が利用される。
図4に示されるように、方法300は、アクセラレータからメモリアクセスリクエストを受信することにより開始される(ブロック310)。その後、当該リクエストのバーチャルアドレスのエントリがアクセラレータのTLBにあるか判断される(ダイアモンド350)。当該リクエストのバーチャルアドレスのエントリがアクセラレータのTLBにある場合、アクセラレータのローカルメモリがこのバーチャルアドレスを用いてアクセスされ(ブロック370)、リクエスト元にレスポンスが提供される(ブロック380)。
他方、エントリがTLBにない場合、制御はブロック330に移行し、プロキシ実行リクエストがCPUに送信される(ブロック330)。リクエストされた変換がCPUのMMUにないとすると、ページミスハンドラがエントリを取得するため実行される(ブロック335)。さらに、このバーチャルアドレスに対応するページが、システムメモリからアクセラレータのローカルメモリに移動される(ブロック340)。その後、再開メッセージがCPUからアクセラレータに送信される(ブロック350)。エントリがMMUにあるため、メモリアクセスリクエストが、リクエストされたデータを取得するためローカルメモリに対して実行される(ブロック370)。リクエストされたデータを含むレスポンスがリクエスト元に提供される(ブロック380)。
図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を再開する。
CPU上のバーチャルアドレスアクセスがローカル(システムメモリにおいて)又はリモート(アクセラレータのメモリにおいて)であるか区別するための情報は、システムメモリコンフィギュレーションに関する完全な知識を有するBIOS(Basic Input/Output System)から当該情報を獲得するOSから与えられる。RPEをサポートするため、BIOSは、アクセラレータに関する通知されたメモリサイズを列挙する。この処理は、BIOSによりブート時に実行されるROM/RAMチップセレクトに類似している。その後、BIOSは、システムメモリとアクセラレータローカルメモリとの和を報告し、OSにメモリの何れの範囲がローカルシステムメモリであるか、またリモートであるかを通知する。
各種実施例では、メモリパーティション記述子と呼ばれる、BIOSのシステムレベル状態、すなわち、記述子アーキテクチャ状態セットが、このレンジ情報、例えば、最小ではシステムメモリのレンジ情報を記録する。これにより、この範囲外の物理アドレスは、リモートとして特定される。一実施例では、この情報はBIOSビルトインデータ構造に格納可能である。メモリ記述子はまた、ソフトウェアとマイクロコードとの双方にアクセス可能なマシーンに固有のレジスタにプライベート状態として格納される。このようなレンジ情報はまずOSのスタート前にBIOSにより確定され、これらの状態の使用はOSに従属しないことに留意されたい。すなわち、RPE機構は、リモートメモリとローカルメモリとの区別を意識しないレガシーOSにより機能可能である。
CPUにより処理される所与のLD/STについて、各TLB変換に物理アドレスとメモリパーティション記述子とを比較させ、それがローカルシステムメモリかリモートアクセスであるか決定させることは困難である。代わりに、このようなチェックはMMUのクリティカルなパスから離れて実行可能であり、新たなTLBエントリが充填されると、ページウォーク上でのみ実行される。一部の実施例では、各TLBエントリは、対応するエントリがリモート又はローカルシステムメモリにあるか示すための属性ビットを含むことが可能である。新たなTLBエントリがインストールされると、ページウォーカは、メモリパーティション記述子に対してページテーブルエントリの物理アドレス範囲のレンジチェックを実行可能である。この機構は、OSがローカルに又はリモートにマップされるページとを区別しない場合であっても機能することに留意されたい。
一部の実施例では、OSは、アクセラレータのローカルメモリを用いてアクセラレータが頻繁にアクセスするアプリケーションのコード及びデータの一部のみを保持することによって、アクセラレータのローカルメモリの利用の背後にあるポリシーを処理することができる。OSがアウェアでない場合、ランタイムレイヤ又は他のエンティティなどのロカリティ原理は、システムメモリ又はアクセラレータローカルメモリにおいてアクセスがより頻繁に発生する場所に近いワーキングセットを移動するのに役立つ。
さらに、上述されるように、OSページテーブルフォーマットは、対応するページがローカルメモリ又はリモートメモリに格納されるか示すための属性ビットを有することが可能である。このビットは、OSがバーチャルアドレスと物理アドレスとのマッピングを確定するとマークでき、各物理ページに対して、OSは当該ページをローカル又はリモートとしてマークするため、メモリパーティション記述子によりチェックすることができる。このように、範囲のチェックはインストールされたTLBエントリに対して実行される必要がない。アプリケーションがアクセラレータ上のメモリにアクセス可能にするため、CPUは属性ビットを解析し、これにより、それが所与のバーチャルアドレスへのロード/ストアをリモート物理メモリ位置に指定可能となる。さらに、属性ビットはまたリモートに実行されるアクセスの回数を追跡し、リモートアクセスの回数が特定の閾値を超える場合、ページが他の場所に移動可能となるように、OSソフトウェアがリモートアクセスの回数に基づきポリシーを実現することを可能にする。
ページをアクセス不可又は存在しないとしてマーク付けするなど、バーチャルページのプロテクションを実行し、結果としてのフォルトを処理することによって、リモートメモリアクセスを実現することが可能であるが、メモリアクセスが行われる毎にページフォルトハンドラが実行される必要があるため、アクセス遅延は増大する。その代わりに、本発明の一実施例を用いて、CPUは、リモートメモリ位置アドレスをバスコントローラに提供することが可能であり、バスコントローラは当該アクセスをアクセラレータのメモリ位置に誘導する。例えば、CPUは、ロード/ストアを完了させるためのソフトウェアからの支援なしにリモートメモリ位置にアクセスするため、バスコントローラにおいて規定された標準的なレジスタセットにアクセスすることによって、ロード/ストアを直接リダイレクトすることが可能である。このデータ転送はDMA(バルク転送)によるものであってもよいし、又はキャッシュライン粒度によるスカラー転送であってもよい。バーチャルページをリモートメモリ位置からローカルメモリ位置に(またその反対)透過的に移動させる機能は、ソフトウェア(アプリケーションなど)がデータの移動を明示的に管理することなくアクセラレータとデータを共有することを可能にする。アクセラレータがシステムに接続されず、又は非応答状態に入ると、アドレス変換ユニットは、ロード/ストアが失敗した理由を示すページフォルトを生成する。
図6を参照して、本発明の一実施例によるページテーブルにおける一例となるエントリ400が示される。図示されるように、各エントリは、メモリに格納されているページの第1アドレスを示すPBAを格納するページベースアドレス(PBA)を有する。さらに、各エントリは、当該ページを有するシステムにあるアクセラレータを参照するためのnビットアクセラレータ識別子(ID)を格納するアクセラレータフィールド420と、対応するバーチャルページがローカルメモリ又はおそらく多数のリモートメモリの1つに格納されているかに関するnビットインジケータなどを格納するローカル/リモートフィールド430と、リモートメモリになされるアクセスの回数をカウントするmビットカウンタを格納するカウンタフィールド440と(カウンタは、ページがリモートメモリにある場合にのみアクティブとなるよう)、ページの異なる属性を示すための各種ビットを格納する属性フィールド450とを有する。
一実施例では、アクセスカウンタの値がゼロになると、例外処理が引き起こされる。この例外処理は、ページ移動のためのバーチャルメモリ管理カーネルなどのOSソフトウェアが与えられたバーチャルページへのアクセス回数に基づき移動ポリシーを管理することを可能にする。すなわち、ソフトウェアは、バーチャルアドレススペースがCPU又はアクセラレータにより近くにある物理メモリページをマップすることが可能となるように、アプリケーションが処理するバーチャルアドレススペースを管理することができる。PCIeTMバスに接続されるアクセラレータについて、バスがコヒーラントでないとき、基礎となるランタイムソフトウェアは、ソフトウェアベースのコヒーレンス機構を実現してもよい。何れかの共有データ構造への競合するアクセスに対して、セマフォなどの同期制御は、生成スレッドがデータをコンシューマにハンドオフする準備ができるまでセマフォをリリースしないように利用可能である。生成スレッドがセマフォをリリースする前、それは、共有データに関するすべてのダーティキャッシュラインをメモリにフラッシュする必要がある。これは、アクセラレータ上のコンシューマスレッドがメモリから共有データへのアクセスを開始すると、ホストCPUとアクセラレータとの間のファブリックがキャッシュコヒーレンシをサポートしなくても、データがコヒーラントであることを保障する。他方、アクセラレータが共有データの処理を終了すると、同様の同期及びフラッシュ機構が、メモリベースデータコヒーレンシを保障するのに利用可能である。CPUとアクセラレータとの間のファブリックがキャッシュコヒーラントである場合(例えば、PCIeの以降の生成など)、生成スレッドがセマフォをリリースする前のハンドオフに対して、メモリへのダーティラインのフラッシュは必要とされない。
OSサポートによる実施例では、アクセラレータ上のメモリの割当て及び管理は、アプリケーションに与えられるシステムメモリページを割当て及び管理し、バーチャルアドレスを物理アドレスに変換するためCPUにより用いられるページテーブルを管理するOSのメモリマネージャと協調して実行可能である。メモリマネージャはまた、リモートメモリにアクセスするためのリダイレクションによって行われる例外処理を処理し、CPUとアクセラレータとの間の物理ページの移動の背後にあるポリシーを管理する。ページ移動ポリシーは、ワークロードの動作に応じて可変的であり、潜在的にはリモートアクセスの回数を減少させるか(システムメモリへの対応するページの移動前に)、又はアクセス回数が最大となる位置にページを移動させるファーストタッチポリシーを実現するため変更可能である。コード及び読み出し専用データページは、物理ページの不要な移動を回避するため、複数のメモリに複製可能である。プログラムの実行中に処理されるデータを含むデータページのみが、データページへのアクセスのロカリティに基づき移動される。
図7を参照して、本発明の一実施例によるプロセッサのブロック図が示される。図7に示されるように、プロセッサ500は、マルチステージパイプラインアウトオブオーダプロセッサである。プロセッサ500は、本発明の一実施例によるプロキシ実行及びリバースプロキシ実行に関連して用いられる各種特徴を示すため、図7において簡略化された図により示される。
図7に示されるように、プロセッサ500は、実行対象のマクロ命令をフェッチし、プロセッサにおける以降の利用のために準備するのに利用されるフロントエンドユニット510を有する。例えば、フロントエンドユニット510は、フェッチユニット504と、命令キャッシュ506と、命令デコーダ508とを有する。一部の実現形態では、フロントエンドユニット510はさらに、マイクロ処理ストレージと共にマイクロコードストレージと一緒にトレースキャッシュを有してもよい。フェッチユニット504は、メモリ又は命令キャッシュ506などからマクロ命令をフェッチし、それらをプリミティブ、すなわち、プロセッサによる実行用のマイクロ処理に復号化するため、命令デコーダ508に供給する。フロントエンドユニット510はさらに、ここに記載されるプロキシ実行及びリバースプロキシ実行を処理するための追加された状態情報を含むエントリを格納するため、本発明の一実施例によるMMU509を有する。このような情報に基づき、システムメモリと1以上のアクセラレータのローカルメモリとを含む共有バーチャルメモリスペースにおける各処理は、データを移動させるためのプログラムによるサポートなしに効率的に実行可能となる。
マイクロ命令を受信し、実行用にそれらを準備するのに用いられるアウトオブオーダ(OOO)エンジン515が、フロントエンドユニット510と実行ユニット520との間に接続される。より詳細には、OOOエンジン515は、マイクロ命令フローをリオーダし、実行に必要な各種リソースを割当て、レジスタファイル530及び拡張されたレジスタファイル535などの各種レジスタファイル内の記憶位置に論理レジスタのリネーミングを提供するための各種バッファを有する。レジスタファイル530は、整数及び浮動小数点演算のための別々のレジスタファイルを有する。拡張されたレジスタファイル535は、レジスタ毎に256又は512ビットなどのベクトルサイズ単位のストレージを提供する。
各種リソースは、例えば、各種整数、浮動小数点、SIMD(Single Instruction Multiple Data)論理ユニット、特殊なハードウェアなどを含む実行ユニット520に存在する。結果は、リタイアメントロジック、すなわち、リオーダバッファ(ROB)540に提供される。より詳細には、ROB540は、実行される命令に係る情報を受信するための各種アレイ及びロジックを有する。この情報は、その後にROB540により調べられ、命令が有効にリタイアされ、結果データがプロセッサのアーキテクチャ状態にコミット可能であるか、又は命令の適切なリタイアメントを回避する1以上の例外処理が実行されたか判断される。もちろん、ROB540は、リタイアメントに係る他の処理を処理してもよい。
図7に示されるように、ROB540は、本発明の範囲はこれに限定されるものでないが、一実施例では低レベルキャッシュ(L1キャッシュなど)であってもよいキャッシュ550に接続される。また、実行ユニット520は、キャッシュ550に直接接続可能である。キャッシュ550から、データ通信がより高いレベルのキャッシュ、システムメモリなどにより実行される。図7の実施例にはこの高レベルにより示されるが、本発明の範囲がこれに限定されるものでないことは理解されるであろう。
例えば、一部の実現形態では、アクセラレータはプロセッサとオンチップに一体化可能である。例えば、1つのアーキテクチャでは、多数の個別のプロセッサコアを、グラフィックスプロセッサ又は他の特殊な処理ユニットなどの異質なコアでありうるアクセラレータと共に含むマルチコアプロセッサであってもよい。一般に、プロキシ実行及びリバースプロキシ実行の処理は、コヒーラント又は非コヒーラントリンクを含む何れかのタイプのインターコネクトによりコアに接続されるオンチップアクセラレータに対して、上述したのと同様にして実行されてもよい。
図8を参照して、本発明の他の実施例によるシステムのブロック図が示される。図8に示されるように、システム600は、単一の半導体ダイ上に形成され、各種コンポーネントを含むマルチコアプロセッサ610を有する。具体的には、図8の実現形態では、プロセッサ610は、各コアがTLB625a〜625nを有し、上述されるような変換及び追加フィールドを有するエントリを含む複数のコア620a〜620nを有する。また、これらのコアは、各コアが自らのキャッシュメモリを有する点で、共有される最後のレベルのキャッシュである共有キャッシュ640に接続可能である。図示される実現形態では、このような2つのアクセラレータが示されるが、本発明の範囲はこれに限定されるものでない。アクセラレータとコアとの接続は、PCIeTMリンク、共有バスインターコネクトなどのコヒーラント又は非コヒーラントリンクなどの任意のタイプのインターコネクトによるものであってもよい。アクセラレータ630a,630bは、上述されるエントリを有するTLB635を有するよう示されている。さらに、プロセッサ610は、メモリコントローラ650を有する。
一実現形態では、プロセッサ610はメモリ660に接続され、メモリ660は、プロセッサコアに関連付け可能な第1パーティション665aと、アクセラレータに関連付け可能な第2パーティション665bとを含む複数のパーティションに分割可能なシステムメモリであってもよい。もちろん、コア及びアクセラレータに係るメモリは、異なるポートを介し異なるメモリモジュールとして異なって構成されてもよい。プロセッサ610はさらにチップセット670に接続され、チップセット670は入出力デバイス、記憶装置、他のアクセラレータなどの各種周辺装置に接続可能である。
従って、コヒーラント又は非コヒーラントとすることができるリンクを介し接続されるアクセラレータ又は一体化されたアクセラレータを有することが可能な異なるシステムにおいて、プロキシ実行とリバースプロキシ実行とを処理するための実施例が提供できる。
各実施例はコードにより実現され、命令を実行するようシステムをプログラムするのに利用可能な命令を格納する記憶媒体に格納されてもよい。この記憶媒体は、以下に限定されるものでないが、フロッピー(登録商標)ディスク、光ディスク、ソリッドステートドライブ(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、磁気若しくは光カード、又は電子命令を格納するのに適した他の何れかのタイプの媒体を含む。
本発明が限定数の実施例に関して説明されたが、当業者は多数の改良及び変形を理解するであろう。添付した請求項はこのようなすべての改良及び変形を本発明の真の趣旨及び範囲内に属するものとしてカバーすることが意図される。
100 システム
110 プラットフォーム
120 CPU
130 システムメモリ
140 インターコネクト
150 アクセラレータ

Claims (23)

  1. バーチャルアドレスを含むメモリアクセスリクエストを受信するステップと、
    前記バーチャルアドレスに対応する物理アドレス(PA)がプロセッサに付属されるローカルメモリ又は非コヒーラントリンクを介し前記プロセッサに接続されるアクセラレータに付属するリモートメモリに存在するか、前記プロセッサの変換ルックアサイドバッファ(TLB)の位置インジケータに基づき判断するため、前記TLBに格納される前記バーチャルアドレスに対応するエントリを解析するステップであって、前記ローカルメモリと前記リモートメモリとは一緒になって共有バーチャルメモリスペースを構成する、前記解析するステップと、
    前記PAが前記リモートメモリに存在する場合、前記メモリアクセスリクエストを実行するため、リバースプロキシ実行リクエストを前記リモートメモリに送信するステップと、
    前記プロセッサによる前記リモートメモリのPAへのアクセス回数を示す前記TLBエントリのカウンタを解析するステップと、
    前記カウンタが閾値に達すると、前記リモートメモリのPAからの情報を前記ローカルメモリに移動させるステップと、
    を有する方法。
  2. 前記TLBのエントリの位置インジケータに基づき、前記PAが前記ローカルメモリ又は前記リモートメモリに存在するか判断するステップをさらに有する、請求項1記載の方法。
  3. 各リモートメモリが前記PAがあるアクセラレータに関連付けされた複数のリモートメモリの何れかを、前記リモートメモリが関連付けされたアクセラレータを示す前記TLBエントリの識別子フィールドを用いて決定するステップをさらに有する、請求項2記載の方法。
  4. 前記ローカルメモリに関連付けされた第1物理アドレス範囲と、前記リモートメモリに関連付けされた第2物理アドレス範囲とを示すため、前記ローカルメモリと前記リモートメモリとを有するシステムのメモリ設定を設定するステップをさらに有する、請求項1記載の方法。
  5. 前記メモリアクセスリクエストに対して変換を取得するため、ページウォーク上の前記メモリ設定にアクセスし、前記変換と、前記PAが前記第1物理アドレス範囲内にあるときに前記PAが前記ローカルメモリにあることを示すための第1の値を有する位置インジケータとを含むエントリを前記TLBに格納するステップをさらに有する、請求項4記載の方法。
  6. バーチャルアドレスと物理アドレスとの変換を格納するための複数のエントリを有する第1メモリ管理ユニット(MMU)を含む第1コアを有するプロセッサからなる装置であって、
    各エントリは、前記対応するエントリのメモリ位置が前記プロセッサに接続されるローカルメモリ又は非コヒーラントインターコネクトを介し前記プロセッサに接続されるアクセラレータに接続されるリモートメモリに存在するか示すための第1インジケータを格納するための位置フィールドと、前記リモートメモリに関連付けされたアクセラレータの識別子を格納するための識別子フィールドとを含み、
    前記プロセッサは、前記非コヒーラントインターコネクトを介し前記ローカルメモリのメモリ位置に対するメモリリクエストをダイレクトメモリアクセス(DMA)トランザクションに変換する装置。
  7. 前記第1MMUの各エントリはさらに、前記プロセッサによる前記リモートメモリのメモリ位置へのアクセスの回数のカウントを格納するカウンタを有する、請求項6記載の装置。
  8. 前記ローカルメモリは、システムメモリであり、
    前記リモートメモリは、前記アクセラレータのローカルメモリであり、
    前記システムメモリと前記リモートメモリとは、単一のバーチャルアドレススペースを構成する、請求項7記載の装置。
  9. 前記第1MMUのエントリが、前記メモリ位置が前記リモートメモリにあることを示すとき、前記プロセッサは、前記非コヒーラントインターコネクトのプロトコルを介し前記アクセラレータにメモリリクエストをトンネリングする、請求項6記載の装置。
  10. 前記アクセラレータは、第2MMUを有し、
    前記第2MMU上のページフォルトに応答して、前記アクセラレータは、前記プロセッサに前記ページフォルトを解消するよう要求する、請求項6記載の装置。
  11. 前記プロセッサは、前記ローカルメモリに前記ページフォルトのアドレスに係るメモリページを前記リモートメモリに転送させ、前記メモリページの変換を前記第2MMUに格納するため前記アクセラレータに送信する、請求項10記載の装置。
  12. 前記プロセッサは、前記第1MMUのエントリの情報を用いて、前記リモートメモリにあるメモリ位置を直接アドレッシングする、請求項6記載の装置。
  13. 前記プロセッサは、前記プロセッサ上で実行されるユーザレベルアプリケーションの使用することなく、前記第1MMUのエントリの情報を用いて、前記アクセラレータのリモートメモリに格納されているデータにアクセスするためのリバースプロキシ実行リクエストを前記アクセラレータに発行する、請求項6記載の装置。
  14. バーチャルアドレスと物理アドレスとの変換を格納するための複数のエントリを含む第1メモリ管理ユニット(MMU)を含む第1コアを有するプロセッサと、
    リンクを介し前記プロセッサに接続され、第2プロセッサと第2MMUとを有するアクセラレータコンポーネントと、
    前記プロセッサに接続され、DRAM(Dynamic Random Access Memory)からなるシステムメモリと、
    を有するシステムであって、
    各エントリは、前記対応するエントリのメモリ位置がシステムメモリ又は前記アクセラレータコンポーネントに付属する第2メモリに存在するか示すインジケータを格納するための位置フィールドと、前記プロセッサによる前記第2メモリのメモリ位置へのアクセスの回数のカウントを格納するカウンタとを含み、
    前記プロセッサは、前記カウンタが閾値に達するとインタラプトが実行されることに応答して、前記第2メモリにあるメモリ位置からの情報を前記システムメモリにあるメモリ位置に移動するシステム。
  15. 前記プロセッサは、前記第1MMUのエントリの情報を用いて、前記第2メモリにあるメモリ位置を直接アドレッシングする、請求項14記載のシステム。
  16. 前記システムメモリと前記第2メモリとは、単一のバーチャルアドレススペースを構成する、請求項14記載のシステム。
  17. 前記プロセッサと前記アクセラレータコンポーネントとは、単一の半導体ダイから形成される、請求項14記載のシステム。
  18. 前記第2メモリは、前記システムメモリの分割された部分である、請求項17記載のシステム。
  19. メモリアクセスリクエストのメモリ位置がアクセラレータに付属するメモリにあるとき、第1コアに接続される前記アクセラレータにデータに対する前記メモリアクセスリクエストを、前記データを要求する前記第1コア上で実行されるユーザレベルアプリケーションに透過に送信し、前記メモリアクセスリクエストに応答して、前記アクセラレータから前記メモリ位置に格納されているデータを受信する第1ロジックを含む前記第1コアを有するプロセッサを有し、
    前記第1コアは、バーチャルアドレスと物理アドレスとの変換を格納するための複数のエントリを含む第1ストレージを有し、
    各エントリは、前記対応するエントリのメモリ位置が前記第1コアに付属する第1メモリ又は前記プロセッサに接続されるアクセラレータに付属するメモリにあるか示すための少なくとも1つのインジケータと、前記メモリが関連付けされるアクセラレータの識別子とを有し、
    前記第1ストレージの各エントリはさらに、前記第1コアによる前記アクセラレータに付属するメモリのメモリ位置へのアクセスの回数のカウントを格納するカウンタを有し、
    前記カウンタの値が閾値より大きい場合、前記メモリ位置に格納されているデータは、前記第1メモリの第2メモリ位置に移動される装置。
  20. 前記メモリアクセスリクエストの送信と前記データの移動とは、前記データを要求した前記ユーザレベルアプリケーションに透過である、請求項19記載の装置。
  21. 前記第1ストレージのエントリが、前記メモリ位置が前記アクセラレータに付属するメモリにあることを示すとき、前記プロセッサは、前記プロセッサと前記アクセラレータとを接続するインターコネクトのプロトコルを介し前記メモリアクセスリクエストを前記アクセラレータにトンネリングする、請求項19記載の装置。
  22. 前記プロセッサは、前記第1コアと前記アクセラレータとを含むマルチコアプロセッサからなり、
    前記マルチコアプロセッサは、単一の半導体ダイ上に形成される、請求項19記載の装置。
  23. 前記第1メモリと前記アクセラレータに付属するメモリとは、単一のバーチャルアドレススペースを構成する、請求項19記載の装置。
JP2013195581A 2009-09-18 2013-09-20 ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供 Pending JP2013254524A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/562,477 2009-09-18
US12/562,477 US8719547B2 (en) 2009-09-18 2009-09-18 Providing hardware support for shared virtual memory between local and remote physical memory

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2010205550A Division JP2011065650A (ja) 2009-09-18 2010-09-14 ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2015042361A Division JP5911985B2 (ja) 2009-09-18 2015-03-04 ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供

Publications (1)

Publication Number Publication Date
JP2013254524A true JP2013254524A (ja) 2013-12-19

Family

ID=43705804

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2010205550A Pending JP2011065650A (ja) 2009-09-18 2010-09-14 ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供
JP2013195581A Pending JP2013254524A (ja) 2009-09-18 2013-09-20 ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供
JP2015042361A Active JP5911985B2 (ja) 2009-09-18 2015-03-04 ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2010205550A Pending JP2011065650A (ja) 2009-09-18 2010-09-14 ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2015042361A Active JP5911985B2 (ja) 2009-09-18 2015-03-04 ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供

Country Status (6)

Country Link
US (2) US8719547B2 (ja)
JP (3) JP2011065650A (ja)
CN (2) CN102023932B (ja)
BR (1) BRPI1003466A2 (ja)
DE (1) DE102010035603A1 (ja)
TW (1) TWI470435B (ja)

Families Citing this family (121)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8667249B2 (en) * 2004-12-22 2014-03-04 Intel Corporation Systems and methods exchanging data between processors through concurrent shared memory
US8726289B2 (en) * 2008-02-22 2014-05-13 International Business Machines Corporation Streaming attachment of hardware accelerators to computer systems
US8250578B2 (en) * 2008-02-22 2012-08-21 International Business Machines Corporation Pipelining hardware accelerators to computer systems
US8656397B2 (en) * 2010-03-30 2014-02-18 Red Hat Israel, Ltd. Migrating groups of threads across NUMA nodes based on remote page access frequency
US20120236010A1 (en) * 2011-03-15 2012-09-20 Boris Ginzburg Page Fault Handling Mechanism
US9921967B2 (en) 2011-07-26 2018-03-20 Intel Corporation Multi-core shared page miss handler
US9916257B2 (en) * 2011-07-26 2018-03-13 Intel Corporation Method and apparatus for TLB shoot-down in a heterogeneous computing system supporting shared virtual memory
JP5573829B2 (ja) * 2011-12-20 2014-08-20 富士通株式会社 情報処理装置およびメモリアクセス方法
US8984511B2 (en) * 2012-03-29 2015-03-17 Advanced Micro Devices, Inc. Visibility ordering in a memory model for a unified computing system
CN104204990B (zh) * 2012-03-30 2018-04-10 英特尔公司 在使用共享虚拟存储器的处理器中加速操作的装置和方法
US9164904B2 (en) 2012-08-28 2015-10-20 Hewlett-Packard Development Company, L.P. Accessing remote memory on a memory blade
US9384153B2 (en) * 2012-08-31 2016-07-05 Freescale Semiconductor, Inc. Virtualized local storage
US10270709B2 (en) 2015-06-26 2019-04-23 Microsoft Technology Licensing, Llc Allocating acceleration component functionality for supporting services
CN107402891B (zh) 2012-12-25 2020-12-22 华为技术有限公司 确定共享虚拟内存页面管理模式的方法和相关设备
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US9361116B2 (en) 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
US9906459B2 (en) 2013-01-27 2018-02-27 Hewlett Packard Enterprise Development Lp Socket state transfer
US10061622B2 (en) 2013-02-26 2018-08-28 Red Hat Israel, Ltd. Updating memory topology information for virtual machines
US10114662B2 (en) 2013-02-26 2018-10-30 Red Hat Israel, Ltd. Updating processor topology information for virtual machines
US9465729B2 (en) 2013-03-13 2016-10-11 Empire Technology Development Llc Memory allocation accelerator
US10133677B2 (en) * 2013-03-14 2018-11-20 Nvidia Corporation Opportunistic migration of memory pages in a unified virtual memory system
US20140280669A1 (en) * 2013-03-15 2014-09-18 Microsoft Corporation Memory Sharing Over A Network
EP2979193B1 (en) * 2013-03-28 2021-04-28 Hewlett Packard Enterprise Development LP Shared memory system
US9678818B2 (en) * 2014-01-30 2017-06-13 Mellanox Technologies, Ltd. Direct IO access from a CPU's instruction stream
US9785576B2 (en) 2014-03-27 2017-10-10 Intel Corporation Hardware-assisted virtualization for implementing secure video output path
WO2015150976A1 (en) 2014-04-03 2015-10-08 Strato Scale Ltd. Cluster-wide memory management using similarity-preserving signatures
US9766916B2 (en) 2014-05-05 2017-09-19 International Business Machines Corporation Implementing coherent accelerator function isolation for virtualization
US10025715B2 (en) 2014-06-27 2018-07-17 International Business Machines Corporation Conditional inclusion of data in a transactional memory read set
US9342346B2 (en) 2014-07-27 2016-05-17 Strato Scale Ltd. Live migration of virtual machines that use externalized memory pages
US9436601B2 (en) 2014-09-15 2016-09-06 International Business Machines Corporation Categorizing memory pages based on page residences
US9390028B2 (en) 2014-10-19 2016-07-12 Strato Scale Ltd. Coordination between memory-saving mechanisms in computers that run virtual machines
CN105765542B (zh) * 2014-10-31 2019-11-15 华为技术有限公司 访问文件的方法、分布式存储系统和存储节点
US9600642B2 (en) 2014-11-20 2017-03-21 International Business Machines Corporation Implementing extent granularity authorization processing in CAPI adapters
US9600428B2 (en) 2014-11-20 2017-03-21 International Business Machines Corporation Implementing extent granularity authorization command flow processing in CAPI adapters
US9710624B2 (en) * 2014-11-20 2017-07-18 International Business Machines Corporation Implementing extent granularity authorization initialization processing in CAPI adapters
US20160149909A1 (en) 2014-11-20 2016-05-26 International Business Machines Corporation Implementing block device extent granularity authorization model processing in capi adapters
US9582659B2 (en) 2014-11-20 2017-02-28 International Business Machines Corporation Implementing extent granularity authorization and deauthorization processing in CAPI adapters
US9697370B2 (en) 2014-11-20 2017-07-04 International Business Machines Corporation Implementing and processing extent granularity authorization mechanism in CAPI adapters
CN104391753B (zh) * 2014-12-16 2017-12-05 浪潮电子信息产业股份有限公司 一种服务器主板内存系统无故障运行方法
US9921768B2 (en) 2014-12-18 2018-03-20 Intel Corporation Low power entry in a shared memory link
JP6380084B2 (ja) * 2014-12-19 2018-08-29 富士ゼロックス株式会社 情報処理装置及び情報処理プログラム
US9524328B2 (en) 2014-12-28 2016-12-20 Strato Scale Ltd. Recovery synchronization in a distributed storage system
US9912748B2 (en) 2015-01-12 2018-03-06 Strato Scale Ltd. Synchronization of snapshots in a distributed storage system
US9495303B2 (en) * 2015-02-03 2016-11-15 Intel Corporation Fine grained address remapping for virtualization
US9727241B2 (en) * 2015-02-06 2017-08-08 Advanced Micro Devices, Inc. Memory page access detection
US9658793B2 (en) * 2015-02-20 2017-05-23 Qualcomm Incorporated Adaptive mode translation lookaside buffer search and access fault
US9858201B2 (en) * 2015-02-20 2018-01-02 Qualcomm Incorporated Selective translation lookaside buffer search and page fault
WO2016135570A1 (en) 2015-02-26 2016-09-01 Strato Scale Ltd. Using access-frequency hierarchy for selection of eviction destination
GB2536199B (en) * 2015-03-02 2021-07-28 Advanced Risc Mach Ltd Memory management
GB2536200B (en) * 2015-03-02 2021-08-18 Advanced Risc Mach Ltd Memory management
US10067893B2 (en) * 2015-04-03 2018-09-04 Futurewei Technologies, Inc. Acceleration framework with direct data transfer mechanism
US10198294B2 (en) * 2015-04-17 2019-02-05 Microsoft Licensing Technology, LLC Handling tenant requests in a system that uses hardware acceleration components
US9792154B2 (en) 2015-04-17 2017-10-17 Microsoft Technology Licensing, Llc Data processing system having a hardware acceleration plane and a software plane
JP6724908B2 (ja) * 2015-05-12 2020-07-15 日本電気株式会社 アクセラレータ制御装置、アクセラレータ制御方法およびプログラム
US10216555B2 (en) 2015-06-26 2019-02-26 Microsoft Technology Licensing, Llc Partially reconfiguring acceleration components
US9858198B2 (en) 2015-06-26 2018-01-02 Intel Corporation 64KB page system that supports 4KB page operations
CN105938461B (zh) * 2015-07-31 2019-02-19 杭州迪普科技股份有限公司 一种dma数据传输方法、装置以及网络设备
US10216662B2 (en) * 2015-09-26 2019-02-26 Intel Corporation Hardware mechanism for performing atomic actions on remote processors
US10025722B2 (en) 2015-10-28 2018-07-17 International Business Machines Corporation Efficient translation reloads for page faults with host accelerator directly accessing process address space without setting up DMA with driver and kernel by process inheriting hardware context from the host accelerator
US9678788B2 (en) 2015-11-10 2017-06-13 International Business Machines Corporation Enabling poll/select style interfaces with coherent accelerators
CN108292291A (zh) 2015-11-30 2018-07-17 Pezy计算股份有限公司 管芯和封装件
JP5956708B1 (ja) * 2015-11-30 2016-07-27 株式会社PEZY Computing ダイ及びパッケージ、並びに、ダイの製造方法及びパッケージの生成方法
WO2017119098A1 (ja) * 2016-01-07 2017-07-13 株式会社日立製作所 計算機システム及び計算機の制御方法
WO2017123208A1 (en) 2016-01-12 2017-07-20 Hewlett Packard Enterprise Development Lp Partially coherent memory transfer
US9934173B1 (en) * 2016-02-24 2018-04-03 Xilinx, Inc. Pseudo cut-through architecture between non-volatile memory storage and remote hosts over a fabric
KR20180009217A (ko) * 2016-07-18 2018-01-26 삼성전자주식회사 데이터 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법
US10613991B2 (en) 2016-08-01 2020-04-07 Hewlett Packard Enterprise Development Lp Transparent routers to provide services
US10255181B2 (en) * 2016-09-19 2019-04-09 Qualcomm Incorporated Dynamic input/output coherency
TWI645290B (zh) * 2016-10-11 2018-12-21 慧榮科技股份有限公司 資料儲存裝置及其資料寫入方法
US10289553B2 (en) 2016-10-27 2019-05-14 International Business Machines Corporation Accelerator sharing
US10296338B2 (en) * 2016-12-09 2019-05-21 Intel Corporation System, apparatus and method for low overhead control transfer to alternate address space in a processor
CN108572864A (zh) * 2017-03-13 2018-09-25 龙芯中科技术有限公司 触发负载均衡调度的方法、装置及服务器
US11113440B1 (en) * 2017-03-17 2021-09-07 Synopsys, Inc. Memory migration in hybrid emulation
US20180285262A1 (en) * 2017-03-31 2018-10-04 Intel Corporation Techniques for shared virtual memory access protection
US10282811B2 (en) * 2017-04-07 2019-05-07 Intel Corporation Apparatus and method for managing data bias in a graphics processing architecture
US10324858B2 (en) * 2017-06-12 2019-06-18 Arm Limited Access control
WO2018230444A1 (ja) * 2017-06-13 2018-12-20 日本電気株式会社 アクセラレータ制御装置、アクセラレータ制御方法、及び、アクセラレータ制御プログラムが格納された記録媒体
US10489304B2 (en) * 2017-07-14 2019-11-26 Arm Limited Memory address translation
US11030117B2 (en) * 2017-07-14 2021-06-08 Advanced Micro Devices, Inc. Protecting host memory from access by untrusted accelerators
US11263143B2 (en) 2017-09-29 2022-03-01 Intel Corporation Coherent accelerator fabric controller
US11204867B2 (en) * 2017-09-29 2021-12-21 Intel Corporation PCIe controller with extensions to provide coherent memory mapping between accelerator memory and host memory
CN109729110B (zh) * 2017-10-27 2022-02-11 伊姆西Ip控股有限责任公司 管理专用处理资源的方法、设备以及计算机可读介质
US11861025B1 (en) 2018-01-08 2024-01-02 Rankin Labs, Llc System and method for receiving and processing a signal within a TCP/IP protocol stack
US11099789B2 (en) * 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US11231927B2 (en) * 2018-03-08 2022-01-25 Intel Corporation System, apparatus and method for providing a fabric for an accelerator
US11689543B2 (en) 2018-08-10 2023-06-27 Rankin Labs, Llc System and method for detecting transmission of a covert payload of data
CN109308270B (zh) * 2018-09-04 2021-07-23 飞腾技术(长沙)有限公司 一种加速虚实地址转换的方法及装置
US11030012B2 (en) * 2018-09-28 2021-06-08 Intel Corporation Methods and apparatus for allocating a workload to an accelerator using machine learning
KR102655094B1 (ko) * 2018-11-16 2024-04-08 삼성전자주식회사 메모리를 공유하는 이종의 프로세서들을 포함하는 스토리지 장치 및 그것의 동작 방법
US11200168B2 (en) 2018-12-10 2021-12-14 International Business Machines Corporation Caching data from remote memories
US10909045B2 (en) * 2018-12-20 2021-02-02 Arm Limited System, method and apparatus for fine granularity access protection
WO2020154223A1 (en) 2019-01-21 2020-07-30 John Rankin Systems and methods for processing network traffic using dynamic memory
US11023397B2 (en) 2019-03-25 2021-06-01 Alibaba Group Holding Limited System and method for monitoring per virtual machine I/O
US11301396B2 (en) * 2019-03-29 2022-04-12 Intel Corporation Technologies for accelerated data access and physical data security for edge devices
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device
US11487674B2 (en) * 2019-04-17 2022-11-01 Rankin Labs, Llc Virtual memory pool within a network which is accessible from multiple platforms
US11061819B2 (en) * 2019-05-28 2021-07-13 Micron Technology, Inc. Distributed computing based on memory as a service
US11100007B2 (en) 2019-05-28 2021-08-24 Micron Technology, Inc. Memory management unit (MMU) for accessing borrowed memory
US11438414B2 (en) 2019-05-28 2022-09-06 Micron Technology, Inc. Inter operating system memory services over communication network connections
US11169930B2 (en) * 2019-05-28 2021-11-09 Micron Technology, Inc. Fine grain data migration to or from borrowed memory
US11334387B2 (en) 2019-05-28 2022-05-17 Micron Technology, Inc. Throttle memory as a service based on connectivity bandwidth
WO2020243244A1 (en) * 2019-05-28 2020-12-03 John Rankin Supporting a virtual memory area at a remote computing machine
US11256624B2 (en) * 2019-05-28 2022-02-22 Micron Technology, Inc. Intelligent content migration with borrowed memory
US20190317802A1 (en) * 2019-06-21 2019-10-17 Intel Corporation Architecture for offload of linked work assignments
US11526290B2 (en) * 2019-06-29 2022-12-13 Intel Corporation System and method to track physical address accesses by a CPU or device
US11226902B2 (en) * 2019-09-30 2022-01-18 International Business Machines Corporation Translation load instruction with access protection
CN111290979B (zh) * 2020-03-23 2021-08-17 优刻得科技股份有限公司 数据传输方法、装置及系统
US11922297B2 (en) * 2020-04-01 2024-03-05 Vmware, Inc. Edge AI accelerator service
US11714755B2 (en) 2020-07-31 2023-08-01 Hewlett Packard Enterprise Development Lp System and method for scalable hardware-coherent memory nodes
US11573898B2 (en) 2020-08-17 2023-02-07 Hewlett Packard Enterprise Development Lp System and method for facilitating hybrid hardware-managed and software-managed cache coherency for distributed computing
TWI766387B (zh) * 2020-10-07 2022-06-01 智捷科技股份有限公司 一種具延遲感知負載平衡的反向代理方法和存儲裝置
US20210149812A1 (en) * 2020-11-18 2021-05-20 Intel Corporation Network interface controller with eviction cache
CN113014631A (zh) * 2021-02-19 2021-06-22 浙江曲速科技有限公司 基于Hlink的设备缓存推送系统及方法
US20220292026A1 (en) * 2021-03-12 2022-09-15 Micron Technology, Inc. Virtual addresses for a memory system
US20220292027A1 (en) * 2021-03-12 2022-09-15 Micron Technology, Inc. Shared virtual address spaces
CN112948149A (zh) * 2021-03-29 2021-06-11 江苏为是科技有限公司 一种远端内存共享方法、装置、电子设备及存储介质
EP4352619A2 (en) * 2021-06-09 2024-04-17 Enfabrica Corporation Transparent remote memory access over network protocol
US11934279B2 (en) * 2021-10-27 2024-03-19 Dell Products L.P. Sequential file restore performance using filesystem redirection
WO2024073864A1 (en) * 2022-10-02 2024-04-11 Intel Corporation Distributed address translation services

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4004A (en) * 1845-04-16 Wooden bbidge
JPH10503310A (ja) * 1995-05-05 1998-03-24 シリコン グラフィックス インコーポレイテッド 不均一メモリ・アクセス(numa)システムにおけるページ移動
JPH10320272A (ja) * 1996-12-11 1998-12-04 Ncr Internatl Inc 多重プロセッサを有するコンピュータ・システム及びそのためのメモリ・ページ位置制御方法
JP2000231549A (ja) * 1999-02-08 2000-08-22 Toshiba Corp マイクロプロセッサ
JP2003316646A (ja) * 2002-02-25 2003-11-07 Ricoh Co Ltd 画像形成装置及びメモリ管理方法
JP2003337714A (ja) * 2002-02-25 2003-11-28 Ricoh Co Ltd 画像形成装置及びメモリマップ方法
JP2007183943A (ja) * 2005-12-29 2007-07-19 Intel Corp 異質なリソースによる命令セットアーキテクチャベースシーケンサ間通信
JP2007304747A (ja) * 2006-05-10 2007-11-22 Nec Corp 計算機システム及びメモリアクセス方法

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT1228728B (it) 1989-03-15 1991-07-03 Bull Hn Information Syst Sistema multiprocessore con replicazione di dati globali e due livelli di unita' di traduzione indirizzi.
GB2239724B (en) 1990-01-05 1993-11-24 Sun Microsystems Inc Apparatus for maintaining consistency in a multi-processor computer system using virtual caching
DE69132300T2 (de) 1990-03-12 2000-11-30 Hewlett Packard Co Durch Anwender festgelegter direkter Speicherzugriff mit Anwendung von virtuellen Adressen
US5450542A (en) * 1993-11-30 1995-09-12 Vlsi Technology, Inc. Bus interface with graphics and system paths for an integrated memory system
US6408386B1 (en) 1995-06-07 2002-06-18 Intel Corporation Method and apparatus for providing event handling functionality in a computer system
US5897664A (en) 1996-07-01 1999-04-27 Sun Microsystems, Inc. Multiprocessor system having mapping table in each node to map global physical addresses to local physical addresses of page copies
US5953741A (en) 1996-11-27 1999-09-14 Vlsi Technology, Inc. Stack cache for stack-based processor and method thereof
US6249853B1 (en) 1997-06-25 2001-06-19 Micron Electronics, Inc. GART and PTES defined by configuration registers
US5914730A (en) * 1997-09-09 1999-06-22 Compaq Computer Corp. System and method for invalidating and updating individual GART table entries for accelerated graphics port transaction requests
WO1999034293A1 (en) * 1997-12-30 1999-07-08 Micron Technology, Inc. Accelerated graphics port for multiple memory controller computer system
US6252612B1 (en) 1997-12-30 2001-06-26 Micron Electronics, Inc. Accelerated graphics port for multiple memory controller computer system
US7007126B2 (en) * 1998-02-13 2006-02-28 Intel Corporation Accessing a primary bus messaging unit from a secondary bus through a PCI bridge
US6317706B1 (en) 1998-03-31 2001-11-13 Sony Corporation Simulation development tool for an embedded system
US6362826B1 (en) * 1999-01-15 2002-03-26 Intel Corporation Method and apparatus for implementing dynamic display memory
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US6766424B1 (en) * 1999-02-09 2004-07-20 Hewlett-Packard Development Company, L.P. Computer architecture with dynamic sub-page placement
US6282601B1 (en) 1999-03-31 2001-08-28 International Business Machines Corporation Multiprocessor data processing system and method of interrupt handling that facilitate identification of a processor requesting a system management interrupt
US6651163B1 (en) 2000-03-08 2003-11-18 Advanced Micro Devices, Inc. Exception handling with reduced overhead in a multithreaded multiprocessing system
US6604187B1 (en) 2000-06-19 2003-08-05 Advanced Micro Devices, Inc. Providing global translations with address space numbers
US6925547B2 (en) 2000-12-14 2005-08-02 Silicon Graphics, Inc. Remote address translation in a multiprocessor system
US6658538B2 (en) * 2001-06-21 2003-12-02 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system having a page table including node-specific data storage and coherency control
US6907519B2 (en) 2001-11-29 2005-06-14 Hewlett-Packard Development Company, L.P. Systems and methods for integrating emulated and native code
US6891543B2 (en) * 2002-05-08 2005-05-10 Intel Corporation Method and system for optimally sharing memory between a host processor and graphics processor
US6922766B2 (en) * 2002-09-04 2005-07-26 Cray Inc. Remote translation mechanism for a multi-node system
US7047320B2 (en) * 2003-01-09 2006-05-16 International Business Machines Corporation Data processing system providing hardware acceleration of input/output (I/O) communication
US8607235B2 (en) 2004-12-30 2013-12-10 Intel Corporation Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention
US8719819B2 (en) 2005-06-30 2014-05-06 Intel Corporation Mechanism for instruction set based thread execution on a plurality of instruction sequencers
US7516449B2 (en) 2005-01-04 2009-04-07 International Business Machines Corporation Run-time type conversion
US7743233B2 (en) 2005-04-05 2010-06-22 Intel Corporation Sequencer address management
US7831780B2 (en) * 2005-06-24 2010-11-09 Nvidia Corporation Operating system supplemental disk caching system and method
US20070005927A1 (en) 2005-06-30 2007-01-04 Khosravi Hormuzd M Systems and methods for remote triggering of page faults
US7793067B2 (en) * 2005-08-12 2010-09-07 Globalfoundries Inc. Translation data prefetch in an IOMMU
US7814279B2 (en) * 2006-03-23 2010-10-12 International Business Machines Corporation Low-cost cache coherency for accelerators
US7487341B2 (en) 2006-06-29 2009-02-03 Intel Corporation Handling address translations and exceptions of a heterogeneous resource of a processor using another processor resource
US7490191B2 (en) 2006-09-22 2009-02-10 Intel Corporation Sharing information between guests in a virtual machine environment
US7506084B2 (en) * 2006-10-17 2009-03-17 International Business Machines Corporation Method for communicating with an I/O adapter using cached address translations
JP4304676B2 (ja) * 2006-10-31 2009-07-29 日本電気株式会社 データ転送装置、データ転送方法、及びコンピュータ装置
US8205064B2 (en) * 2007-05-11 2012-06-19 Advanced Micro Devices, Inc. Latency hiding for a memory management unit page table lookup
US8521919B2 (en) * 2009-06-30 2013-08-27 International Business Machines Corporation Direct memory access in a computing environment

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4004A (en) * 1845-04-16 Wooden bbidge
JPH10503310A (ja) * 1995-05-05 1998-03-24 シリコン グラフィックス インコーポレイテッド 不均一メモリ・アクセス(numa)システムにおけるページ移動
JPH10320272A (ja) * 1996-12-11 1998-12-04 Ncr Internatl Inc 多重プロセッサを有するコンピュータ・システム及びそのためのメモリ・ページ位置制御方法
JP2000231549A (ja) * 1999-02-08 2000-08-22 Toshiba Corp マイクロプロセッサ
JP2003316646A (ja) * 2002-02-25 2003-11-07 Ricoh Co Ltd 画像形成装置及びメモリ管理方法
JP2003337714A (ja) * 2002-02-25 2003-11-28 Ricoh Co Ltd 画像形成装置及びメモリマップ方法
JP2007183943A (ja) * 2005-12-29 2007-07-19 Intel Corp 異質なリソースによる命令セットアーキテクチャベースシーケンサ間通信
JP2007304747A (ja) * 2006-05-10 2007-11-22 Nec Corp 計算機システム及びメモリアクセス方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSND200800912003; 竹居 智久: 'Apple主導の「OpenCL」プロセサに自由をもたらす' 日経エレクトロニクス 第993号, 20081215, p.107-117, 日経BP社 *
JPN6014027911; 竹居 智久: 'Apple主導の「OpenCL」プロセサに自由をもたらす' 日経エレクトロニクス 第993号, 20081215, p.107-117, 日経BP社 *

Also Published As

Publication number Publication date
US9003164B2 (en) 2015-04-07
CN102023932B (zh) 2014-08-27
TWI470435B (zh) 2015-01-21
JP2015135696A (ja) 2015-07-27
US20110072234A1 (en) 2011-03-24
CN102023932A (zh) 2011-04-20
CN104123242B (zh) 2017-08-08
BRPI1003466A2 (pt) 2015-08-18
US20140208042A1 (en) 2014-07-24
TW201120643A (en) 2011-06-16
DE102010035603A1 (de) 2011-04-07
CN104123242A (zh) 2014-10-29
JP2011065650A (ja) 2011-03-31
US8719547B2 (en) 2014-05-06
JP5911985B2 (ja) 2016-04-27

Similar Documents

Publication Publication Date Title
JP5911985B2 (ja) ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供
US11030126B2 (en) Techniques for managing access to hardware accelerator memory
US9384132B2 (en) Emulated message signaled interrupts in a virtualization environment
JP5749304B2 (ja) 割り込み通信装置、方法、およびシステム
CA2800632C (en) Enable/disable adapters of a computing environment
US20140281299A1 (en) Opportunistic migration of memory pages in a unified virtual memory system
US8621112B2 (en) Discovery by operating system of information relating to adapter functions accessible to the operating system
JP2004506981A (ja) マルチプロセッサにおけるセマフォおよびアトミック動作の管理のためのシステムおよび方法
KR20130032358A (ko) 메시지 시그널 인터럽션을 i/o 어댑터 이벤트 통지로 변환
US10929295B2 (en) Accelerating replication of page tables for multi-socket machines
BR112012033818B1 (pt) método para execução dentro de um circuito de processamento e sistema de computador para executar uma instrução
US10564972B1 (en) Apparatus and method for efficiently reclaiming demoted cache lines
CN116762059A (zh) 监控独占指令
KR102544401B1 (ko) 어드레스 트랜슬레이션 캐시 및 이를 포함하는 시스템
US20230069152A1 (en) Low latency host processor to coherent device interaction
Bhattacharjee et al. Heterogeneity and Virtualization
Nider et al. Systems Software for Fast Inter-Machine Page Faults

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130920

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140624

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140708

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141008

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20141104