JP4805314B2 - 入出力(i/o)仮想化動作のプロセッサへのオフロード - Google Patents

入出力(i/o)仮想化動作のプロセッサへのオフロード Download PDF

Info

Publication number
JP4805314B2
JP4805314B2 JP2008182479A JP2008182479A JP4805314B2 JP 4805314 B2 JP4805314 B2 JP 4805314B2 JP 2008182479 A JP2008182479 A JP 2008182479A JP 2008182479 A JP2008182479 A JP 2008182479A JP 4805314 B2 JP4805314 B2 JP 4805314B2
Authority
JP
Japan
Prior art keywords
processor
hub
dva
conversion
memory
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.)
Expired - Fee Related
Application number
JP2008182479A
Other languages
English (en)
Other versions
JP2009037610A (ja
Inventor
サリパリ ラマクリシュナ
Original Assignee
インテル コーポレイション
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 インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2009037610A publication Critical patent/JP2009037610A/ja
Application granted granted Critical
Publication of JP4805314B2 publication Critical patent/JP4805314B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/1072Decentralised address translation, e.g. in distributed shared memory systems
    • 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/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]

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)
  • Multi Processors (AREA)
  • Bus Control (AREA)

Description

本発明は、データを転送するための通信システムに関し、特に、入出力(I/O)仮想化動作のプロセッサへのオフロードに関する。
コンピュータ・システムは、データを転送するための内部通信システムを有する。前述の内部通信システムには、相互接続の組が含まれる。相互接続は、システムの構成部分間のデータ通信を提供する。しかし、前述の相互接続は、システムの構成部分の要求に応えることができない場合、システム性能のボトルネックにもなり得る。
入出力コントローラや前述の他のハブなどの手段により、システムに結合された周辺構成部分は多くの場合、直接メモリ・アクセス(DMA)要求を行う。DMA要求を使用して、主メモリの領域にアクセスしてデータを取り出すか、又は書き込む。周辺構成部分は通常、アクセスが可能なオペレーティング・システムによって割り当てられた仮想アドレス範囲を有する。周辺構成部分は、DMAトランザクションのメモリ位置の、構成部分によって使用される仮想アドレスに対応する物理アドレスを求めることを可能にするマッピング・データを要求し、取り出す。しかし、変換データに対する要求により、システム相互接続を介したトラフィックが過剰になり得る。
種々の実施例では、アドレス変換動作及びメモリ・アクセス・・レーテンシを処理するために必要な帯域を削減することができる。帯域及びメモリ・レーテンシにおける前述の削減を行うために、実施例は、システムのプロセッサ内の拡張アドレス変換機構を提供することができる。より具体的には、他のリソースのうちでも、1つ又は複数のプロセッサ・コア、メモリ管理ユニット(MMU)(変換ルックアサイド・バッファ(TLB)など)をはじめとするプロセッサ・ノードは、オフロードされたアドレス変換を、プラットフォームに結合された入出力(I/O)装置のために行うための、いわゆる仮想化エンジンなどの更なるアドレス変換機能を更に有し得る。
[実施例]
次に図1を参照するに、本発明の一実施例によるシステムのブロック図が示されている。図1に示すように、システム100は、複数の処理ノード(すなわち、第1のプロセッサ110a及び第2のプロセッサ110b(全体としてプロセッサ110))を含む。中央処理装置(CPU)であり得るプロセッサ110aは、CPUコア112a、統合メモリ・コントローラ114a及び仮想化エンジン116aを含み得る。同様に、プロセッサ110bは、コア112b、統合メモリ・コントローラ114b及び仮想化エンジン116bを含み得る。
なお図1を参照するに、各プロセッサ110は、それに局所的に接続された主メモリの一部分に結合され得る。特に、プロセッサ110aがメモリ120aに結合され得る一方、プロセッサ110bはメモリ120bに結合される。一実施例では、メモリ120(全体として)は、ダイナミック・ランダム・アクセス・メモリ(DRAM)であり得るが、本発明の範囲はこの点で限定されるものでない。
図1に更に示すように、プロセッサ110は、ポイントツーポイント(P−P)相互接続であり得る相互接続130a及び130bによって入出力(I/O)ハブ140に結合され得る。I/Oハブ140は仮想化エンジン135を含み得る。図1の実施例に示すように、I/Oハブ140は種々のI/O装置150a乃至150cに結合され得る。図1における特定の実現形態で示しているが、本発明の範囲はそのように限定されるものでない。
各プロセッサはそれ自身の仮想化エンジンを有しているので、I/Oハブからの変換容量のオフロードを実現することができる。プロセッサ内の前述の仮想化エンジンに変換要件及びメモリ・アクセス要件をオフロードすることにより、I/Oハブにおける対応する仮想化エンジンを解放して、容量がより大きくなるようにすることができる。更に、要求(すなわち、VM割り当て直接装置I/O)に関連付けられたI/O装置を保有する仮想マシンを実行するプロセッサに変換アクセス機能を(マッピング及びアクセス要求単位で)オフロードすることにより、装置のDMA性能を向上させることが可能である。そういうものとして、各プロセッサ・ソケットは、対応するプロセッサの局所メモリにマッピングされる物理アドレスの仮想化ページ・テーブル・エントリを記憶するための仮想化エンジンを備え得る。
よって、I/Oハブ内の仮想化エンジンにキャッシュ・ミスが生じた場合の種々の実施例を使用すれば、対応する要求は単純に、装置仮想アドレス(DVA)範囲がマッピングする物理メモリ範囲を所有するプロセッサにトランザクションの詳細(例えば、装置仮想アドレス(DVA)、長さ等)とともに装置からオフロードすることができる。対応するメモリと密接に結合されたプロセッサにおける装置からDMAトランザクションを処理することにより、前述のプロセッサの場合、VMがアフィニティ・マスクを有し、VMが装置(すなわち、直接装置割り当てI/O)を所有する場合に性能の向上を実現することができる。
I/O装置がプロセッサの仮想化エンジンを使用することが可能になる前に、動作シーケンスを行って前述の動作を可能にすることができる。特に、初期化処理を行って、DMAの目的で物理メモリ領域を設定し、装置アクセスのためにオペレーティング・システム(OS)に登録することができる。
次に図2を参照するに、本発明の一実施例による方法のフロー図を示す。図2に示すように、方法200は、I/O装置などの装置がDMA動作を行おうとする際に方法200が開始し得る。図2に示すように、DMA動作のメモリ範囲をOSに登録することができる(ブロック210)。一実施例では、装置ドライバ(例えば、VMの一部として、又はネーティブOS上で実行している)は、DMA目的で特定の範囲のメモリを割り当て、装置アクセスのためにOSに登録する。なお図2を参照するに、次に、I/Oハブの仮想化エンジンを物理メモリ範囲及び対応する装置仮想アドレス(DVA)でプログラムすることができる(ブロック220)。例えば、OSは、関連付けられた主メモリの物理メモリ範囲で仮想化エンジンをプログラムし、装置仮想アドレスを得ることができる。この動作に関し、VEページ・テーブルを、関連付けられたCPUにおいて更新することができる(ブロック230)。例えば、CPU内のVEは前述のトランザクションをスヌープし、対応するアドレス及びDVAでそれ自身のページ・テーブル・エントリを更新することができる。あるいは、I/Oハブにおける仮想エンジンは、範囲を保有するCPUを指し示す物理アドレス範囲内のノード識別子(ノードID)などの識別子を復号化し、対応するメッセージをCPU内のVEに送出してそのページ・テーブルを適宜更新することができる。よって、この時点で、同じDVAのページ・テーブル・エントリの複製が2つ存在している。
図2をなお参照すれば、次に、DVAは、I/O装置内の装置ドライバに戻すことができる(ブロック240)。よって、I/O装置をDVA範囲でプログラムすることができる(ブロック250)。例えば、例として前述のプログラミングに装置-ドライバ専用チャネルを使用することにより、DVA範囲でその装置をプログラムすることができる。図2の実施例においてこの特定の実現形態を示しているが、本発明の範囲はこの点で限定されるものでない。
装置の初期化が本発明の実施例により、行われた後、I/O装置と、主メモリの一部分などの所望の場所との間のDMA動作を行うことができる。次に図3を参照するに、本発明の一実施例による方法のフロー図を示す。方法300を使用してDMAトランザクションを行うことができ、DMAトランザクションを送出することにより、開始し得る(ブロック310)。例えば、I/O装置は、メモリからデータを読み出すか、又はメモリにデ―タを直接書き込む旨のDMAトランザクションを送出することができる。制御はブロック310から菱形320に移る。菱形320では、I/O装置が、TLBや他のメモリ管理ユニット(MMU)をサポートするか否かを判定することができる。肯定の場合、制御は菱形330に移る。菱形330では、仮想アドレスから物理アドレスへの変換がTLBや他の前述の構造に存在しているか否かを判定することができる(菱形330)。肯定の場合、DMAトランザクションを、対応する物理アドレスとともにI/O装置から送出することができる(ブロック335)。よって、この物理アドレスを、I/Oハブ及び対応するCPUを介して所望のメモリ場所に転送して、DMAトランザクションを行うことができる。
その代わりに菱形330で、変換がTLBに存在していないと判定された場合、VEからの変換の要求を行うことができる(ブロック340)。I/Oハブは、I/O装置が次いでDMAトランザクションをPAとともに送出するように、対応する変換物理アドレスをI/O装置のTLBや他のMMU構造に供給することができる(やはりブロック335)。変換情報をI/OハブのVEからCPU内のVEに供給して、VEがそのエントリ(例えば、ページ・テーブル・エントリ)をイネーブルすることもできる。
例証を容易にするために、図3に示していないが、変換がI/OハブのVEに存在していない場合、対応するページ・テーブルをメモリから読み出すことができ、プロセッサ及びI/Oハブの(潜在的には)VEのページ・テーブルを更新することができる。更に、I/Oハブは、前述のページ・テーブルをI/O装置に転送してそのTLBや他のMMU構造を更新することができる。更に他の実施例では、I/OハブのVEにおいて変換が欠けている場合、ブロック360及び365に関して後述するように、プロセッサのVEにおいて処理するために、I/Oハブは単純に、DMAトランザクションをプロセッサに転送することができる。
図3に戻れば、代わりに菱形320で、I/O装置がTLBをサポートしないと判定された場合、制御はブロック350に移る。そこでは、DMAトランザクションをI/O装置からI/OハブにDVA及び長さを使用して、例えば、DMA動作の実行を可能にするための情報として送出することができる。次に、菱形355で、I/OハブにおけるVEが要求を処理することができるか否かを判定することができる。本発明の範囲はこの点で限定されていないが、この決定は、いくつかの要因(例えば、変換がそのVEページ・テーブルに既に存在しているか、そのキャッシュ・ミス比、現在処理している負荷、P−P相互接続上の負荷(例えば、負荷は閾値帯域を下回っている)等)に基づいて行うことができる。
I/OハブのVEが要求を行うことが可能でないと菱形355で判定された場合、要求はCPUに転送される(ブロック360)。例えば、特定の実施例では、ページ・フォールトを作成して、P−P相互接続に沿った関連付けられたメモリ範囲を保有するCPUにI/Oハブからこのトランザクションを転送することができる。特定の実施例では、I/Oハブは、I/O装置及びI/Oハブが通信し合う第1のプロトコルからI/Oハブ及びプロセッサが通信し合う第2のプロトコルに着信DMAトランザクションを変換することができる。特定の一実現形態では、第1の通信プロトコルは、(西暦2006年12月20日発行の)PCI Express(商標)Specification Base Specification version 2.0によるPCI Express(商標)プロトコルなどの周辺構成部分相互接続(PCI)プロトコルに応じていることがあり得る一方、第2の通信プロトコルは、共通システム・インタフェース(CSI)通信プロトコル(後述する)に応じていることがあり得るが、本発明の範囲はこの点で限定されるものでない。よって、ブロック365で、CPUはDMAトランザクションを処理し得る。例えば、CPU内のVEは変換を有し得るものであり、変換をDMA要求とともに供給して要求のコミットメントを可能にし、次いで、処理するために要求を主メモリに転送することができる。そうすることにより、CPUとI/Oハブとの間の複数のトランザクションに対する必要性を避けることができる。応答、完了や他の前述のトランザクションが生起しなくてよいからである。代わりにCPU VEが変換を含まない場合、ページ・ウォーク機構を行って前述の変換情報を(例えば、主メモリから)受信し、CPUのVEにロードし、次いで、DMAトランザクションを行うことができる。
その代わりに、I/OハブにおけるVEが要求を処理することが可能であると菱形355で判定された場合、制御はブロック370に移る。ブロック370では、変換を行い、DMAトランザクションは、対応する物理アドレスとともにP−P相互接続に沿ってCPUに送出することができる。他の実現形態では、変換がI/OハブのVEに存在していない場合、変換をCPUに要求することができる。変換情報が受信されると、I/OハブのVEを適宜更新することができる。図3の実施例においてこの特定の実現形態で示しているが、本発明の範囲はこの点で限定されるものでない。
プロセッサのVEにおいてアドレス変換を行うことにより、P−P相互接続上の通信の削減を実現することができる。例えば、P−P相互接続の組に沿ったシステムを介したコヒーレント・トランザクション及び非コヒーレント・トランザクションの通信を可能にするためのキャッシュ・コヒーレント・プロトコルであるCSIプロトコルを実現する実施例では、プロセッサとI/Oハブとの間の通信の削減を実現することができる。特に、DVAからPAへのアドレス変換をI/Oハブにおいて行い、変換がI/OハブのVEにおいて欠けている場合、メモリに更新ページ・テーブル情報を要求し、この情報をI/OハブのVEに戻すためにはいくつかのトランザクションがP−P相互接続に沿って生起する必要がある。例えば、I/Oハブは、DVAの範囲を保持するプロセッサのメモリからページ・テーブルを読み出す必要がある。このことは、コヒーレント読み出し要求を送出し、応答パケットを受信することによって行うことになる。必要なページ・ウォーク数に応じて、ページ・テーブル読み出しは、複数のコヒーレント読み出し要求及び応答パケットに関係し得る。例えば、一実現形態では、4つのメモリ・トランザクション及び4つの完了を行う必要があり、P−P相互接続に沿ってトランザクションが8つになり得る。その代わりに、図3において前述した実施例などの実施例を使用すれば、実行するためにI/OハブからプロセッサにDMAトランザクションを転送するために単一のトランザクションを送出することができる。よって、前述の8つのトランザクションを、実際のDMA要求をメモリにコミットするための更なるトランザクションとともに避けることができる。これには、更なるコヒーレント・トランザクションが伴い得る。よって、本発明の実施例を使用すれば、I/Oハブにおける仮想化エンジンは、DMAトランザクションを第1のプロトコルから第2のプロトコルに変換し、これをプロセッサに転送して、プロセッサ内の仮想化エンジンが、ルックアップ全てを行い、トランザクションをその局所メモリにコミットし、P−P相互接続上のトランザクションを避けることが可能である。
実施例は、P−P相互接続に沿ったプロセッサ・ノード及びI/Oハブの間のトラフィックを削減するための別々の多くのプラットフォーム・タイプに適していることがあり得る。図4に示すように、マルチプロセッサ・システム500は、ポイントツーポイント相互接続システムであり、ポイントツーポイント(P−P)相互接続550を介して結合された第1のプロセッサ570及び第2のプロセッサ580を含む。図4に示すように、プロセッサ570及び580それぞれは、第1のプロセッサ・コア及び第2のプロセッサ・コア(すなわち、プロセッサ・コア574a及び574b、並びにプロセッサ・コア584a及び584b)を含むマルチコア・プロセッサであり得るが、他のコアも存在し得る。更に、図4に示すように、第1のプロセッサ570及び第2のプロセッサ580はそれぞれ、本発明の実施例によれば、仮想化エンジン575及び585を含む。図4をなお参照すれば、第1のプロセッサ570は、メモリ・コントローラ・ハブ(HUB)572及びP−Pインタフェース576及び578を更に含む。同様に、第2のプロセッサ580は、MCH582、並びにP−Pインタフェース586及び588を含む。図4に示すように、MCH572及び582は、プロセッサをそれぞれのメモリ(すなわち、メモリ532及びメモリ534。主メモリの一部(例えば、ダイナミック・ランダム・アクセス・メモリ(DRAM)や、完全にバッファリングされたデュアル・インライン・メモリ・モジュール(FBDIMM)であり得る))に結合する。
第1のプロセッサ570及び第2のプロセッサ580は、P−P相互接続552及び554それぞれを介してチップセット590に結合することができる。図4に示すように、チップセット590は、P−Pインタフェース594及び598を含む。更に、チップセット590は、高性能グラフィックス・エンジン538とチップセット590を結合するためのインタフェース592を含む。一実施例では、アドバンスト・グラフィクス・ポート(AGP)バス539又はポイントツーポイント相互接続を使用してグラフィクス・エンジン538をチップセット590に結合することができる。チップセット590は、アドレス変換を行い、更に、対応するP−P相互接続552に沿って、削減された帯域をイネーブルするために、非変換DVAとともに、ダウンストリーム装置からのトランザクションを転送するか(例えば、第1のプロセッサ570及び第2のプロセッサ580のうちの選択された一方にDMAトランザクションを転送するか)否かを判定するためのVE595を更に含む。図4に示すように、第1のバス516を第2のバス520に結合するバス・ブリッジ518とともに、種々のI/O装置514を第1のバス516に結合することができる。種々の装置を、一実施例では、例えば、キーボード/マウス522、通信装置526、及び、コード530を含み得るデータ記憶装置528を含む第2のバス520に結合することができる。更に、オーディオI/O524を第2のバス520に結合することができる。
実施例は、コードで実現することができ、命令を行うようシステムをプログラムするために使用することが可能な命令を記憶させた記憶媒体上に記憶することができる。記憶媒体には、フロッピー(登録商標)・ディスク、光ディスク、コンパクト・ディスク・リードオンリー・メモリ(CD−ROM)、書き換え可能コンパクト・ディスク(CD−RW)及び光磁気ディスク、リードオンリ・メモリ(ROM)、ランダム・アクセス・メモリ(RAM)(ダイナミック・ランダム・アクセス・メモリ(DRAM)、スタティック・ランダム・アクセス・メモリ(SRAM)など)、消去可能なプログラマブル・リード・オンリー・メモリ(EPROM)や、フラッシュ・メモリ、電子的に消去可能なプログラマブル・リード・オンリー・メモリ(EEPROM)などの半導体デバイス、磁気カード若しくは光カードや、電子的命令の記憶に適した何れかの他のタイプの媒体があり得るが、これらに限定されるものでない。
本発明は、限定数の実施例に関して説明してきたが、当業者は数多くの修正及び変形をそこから分かるであろう。特許請求の範囲記載の請求項が、本発明の真の趣旨及び範囲内に収まる限り、前述の修正及び変形を全て包含することを意図している。
本発明の一実施例によるシステムを示すブロック図である。 本発明の一実施例による方法を示すブロック図である。 本発明の別の実施例による方法を示すフロー図である。 本発明の一実施例によるポイントツーポイント相互接続システムを示すブロック図である。
符号の説明
110 プロセッサ
112 コア
114 メモリ・コントローラ
116 仮想化エンジン
120 メモリ
140 I/Oハブ
150 I/O装置
135 仮想化エンジン

Claims (14)

  1. 入出力(I/O)ハブにおいて、前記I/Oハブに結合されたI/O装置から、直接メモリ・アクセス(DMA)動作に対する要求を受信する工程であって、前記要求が、前記DMAに関連付けられた装置仮想アドレス(DVA)を含む工程と、
    前記I/Oハブの第1の変換エンジンにおいて前記DVAを物理アドレス(PA)に変換するためのアドレス変換を行うか否かを、前記I/Oハブと前記I/Oハブに結合されたプロセッサとの間の相互接続の帯域に基づき、前記I/Oハブにおいて判定する工程と、
    前記I/Oハブが、前記アドレス変換を行わないと判定した場合に、前記DVAとともに前記要求を前記I/Oハブから、前記I/Oハブに結合された前記プロセッサに送出し、前記プロセッサの第2の変換エンジンにおいて前記アドレス変換を行う工程と
    前記I/Oハブにおいて、前記I/O装置から、第2のDMA動作に対する第2の要求を受信する工程であって、前記第2の要求は前記第2のDMA動作に関連付けられた第2のDVAを含み、前記第1の変換エンジンにおいて前記第2のDVAを第2のPAに変換し、前記I/Oハブから前記プロセッサに前記第2のPAとともに前記要求を送出する工程と、
    を含む方法。
  2. 前記判定に基づいて前記I/Oハブの前記第1の変換エンジンにおいて前記アドレス変換を行う工程、及び
    前記要求を前記PAとともに前記I/Oハブから前記プロセッサに送出し、さもなければ、前記要求を前記DVAとともに前記I/Oハブから前記プロセッサに送出する工程
    を更に含む請求項1に記載の方法。
  3. 前記第2の変換エンジンは、DVAからPAへの変換を記憶するためのバッファを含み、前記バッファは、前記プロセッサの変換ルックアサイド・バッファとは別個である
    ことを特徴とする請求項1に記載の方法。
  4. 前記I/O装置がハードウェア変換機構を有する場合、前記I/O装置において前記アドレス変換を行い、さもなければ、前記要求を前記DVAとともに前記I/O装置から前記I/Oハブに送出する工程
    を更に含む請求項1に記載の方法。
  5. 前記I/Oハブから前記プロセッサに前記要求を送出する工程
    を更に含み、
    前記プロセッサは、前記要求のノード識別子に基づいて、前記PAに対応するメモリの一部分に関連付けられ、前記ノード識別子は前記プロセッサに対応する
    ことを特徴とする請求項1に記載の方法。
  6. 前記要求を前記DVAとともに前記I/Oハブから前記プロセッサに送出することにより、前記I/Oハブと前記プロセッサとの間のポイントツーポイント相互接続上の帯域を削減する工程
    を更に含み、
    前記DVAに対応するアドレス変換情報を、前記プロセッサから前記I/Oハブに送出せず、よって、前記帯域を削減する
    ことを特徴とする請求項1に記載の方法。
  7. データに対する動作を実行するための少なくとも一コアと、
    変換ルックアサイド・バッファを含むキャッシュ・メモリと、
    システム・メモリの一部分をプロセッサに結合させて、メモリ・トランザクションを処理するためのメモリ・コントローラと、
    装置仮想アドレス(DVA)を含む直接メモリ・アクセス(DMA)動作を受け取り、前記システム・メモリの前記一部分における場所に対応する物理アドレス(PA)に前記DVAを変換するための変換エンジンと
    を含むプロセッサを備え、
    前記DMA動作は、前記プロセッサに結合された入出力(I/O)装置から起動され
    前記変換エンジンは、前記I/O装置にDVA範囲を与えるドライバにより行われる変換起動手順に関連付けられた信号をスヌープし、
    前記I/O装置は、前記プロセッサに結合されたI/Oハブの変換エンジンからの更新をスヌープし、前記更新に基づき前記変換エンジンを更新する仮想マシンのための直接I/O装置であり、
    前記I/Oハブは、前記プロセッサと前記I/O装置との間に結合され、前記I/Oハブは、DVAからPAへの変換を行うための第2の変換エンジンを有し、前記I/Oハブは、前記DVAとともに前記プロセッサに前記DMA動作を送出して、前記I/Oハブと前記プロセッサとを結合する相互接続上の帯域を削減する、
    ことを特徴とする装置。
  8. 前記相互接続上の前記帯域が閾値量未満の場合、前記第2の変換エンジンが前記DVAからPAへの変換を行う
    ことを特徴とする請求項7に記載の装置。
  9. 第1のプロセッサであって、データに対する動作を実行するための少なくとも1つのコアと、変換ルックアサイド・バッファを含むキャッシュ・メモリと、装置仮想アドレス(DVA)を含む直接メモリ・アクセス(DMA)動作に対する要求を受信し、前記第1のプロセッサに結合されたメモリの第1の部分にある物理アドレス(PA)に前記DVAを変換するための第1の変換エンジンとを含み、前記DMA動作は、前記第1のプロセッサに結合された入出力(I/O)装置から起動される第1のプロセッサと、
    第2のプロセッサであって、データに対する動作を実行するための少なくとも1つの第2のコアと、第2の変換ルックアサイド・バッファを含む第2のキャッシュ・メモリと、DVAを含むDMA動作を受信し、前記第2のプロセッサに結合された第2のメモリ部分にあるPAに前記DVAを変換するための第2の変換エンジンとを含む第2のプロセッサと、
    前記I/O装置、並びに前記第1のプロセッサ及び前記第2のプロセッサの間に結合されたハブと
    を備え、
    前記ハブは、前記DVAに基づいて前記第1のプロセッサ又は前記第2のプロセッサに前記DMA動作を向け
    前記ハブは、前記DVAを前記PAに変換するためのアドレス変換を行うか否かを、前記ハブと前記第1のプロセッサとの間の相互接続の帯域に基づき、ハブ変換エンジンにおいて決定する、
    ことを特徴とするシステム。
  10. 前記第1の変換エンジンは、前記I/O装置のDVA範囲のプログラミングに関連付けられた信号をスヌープし、前記スヌープ信号に基づいて前記第1の変換エンジンのバッファにおけるエントリを更新する
    ことを特徴とする請求項9に記載のシステム。
  11. 前記第1の変換エンジン及び前記ハブ変換エンジンはそれぞれ、前記第1のプロセッサに結合されたメモリの前記第1の部分における場所に対応する第1のDVAからPAへの変換の組を含む
    ことを特徴とする請求項9に記載のシステム。
  12. 前記DMA動作の前記DVAからPAへの変換が前記第1のDVAからPAへの変換の組に存在していない場合に、前記第1のプロセッサと前記ハブとの間の相互接続上の複数のメモリ・トランザクションを第1の変換エンジンが阻止する
    ことを特徴とする請求項11に記載のシステム。
  13. 前記ハブは、前記ハブ及び前記I/O装置が通信する第1のプロトコルから、前記ハブ及び前記第1のプロセッサが通信する第2のプロトコルに前記DMA動作に対する要求を変換するが、前記DVAを前記PAに変換しない
    ことを特徴とする請求項12に記載のシステム。
  14. 前記第1のプロセッサは、前記ハブへのトランザクションの送出なしで前記DMA動作を前記メモリの第1の部分にコミットする
    ことを特徴とする請求項12に記載のシステム。
JP2008182479A 2007-07-31 2008-07-14 入出力(i/o)仮想化動作のプロセッサへのオフロード Expired - Fee Related JP4805314B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/888,029 2007-07-31
US11/888,029 US8250254B2 (en) 2007-07-31 2007-07-31 Offloading input/output (I/O) virtualization operations to a processor

Publications (2)

Publication Number Publication Date
JP2009037610A JP2009037610A (ja) 2009-02-19
JP4805314B2 true JP4805314B2 (ja) 2011-11-02

Family

ID=40305248

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008182479A Expired - Fee Related JP4805314B2 (ja) 2007-07-31 2008-07-14 入出力(i/o)仮想化動作のプロセッサへのオフロード

Country Status (6)

Country Link
US (1) US8250254B2 (ja)
JP (1) JP4805314B2 (ja)
CN (1) CN101359315B (ja)
DE (1) DE112008002019T5 (ja)
TW (1) TWI386811B (ja)
WO (1) WO2009018329A2 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8473567B2 (en) 2010-03-29 2013-06-25 Intel Corporation Generating a packet including multiple operation codes
US8352656B2 (en) 2010-04-08 2013-01-08 Intel Corporation Handling atomic operations for a non-coherent device
US8606984B2 (en) 2010-04-12 2013-12-10 International Busines Machines Corporation Hierarchical to physical bus translation
US8364879B2 (en) 2010-04-12 2013-01-29 International Business Machines Corporation Hierarchical to physical memory mapped input/output translation
US8327055B2 (en) 2010-04-12 2012-12-04 International Business Machines Corporation Translating a requester identifier to a chip identifier
US8316169B2 (en) 2010-04-12 2012-11-20 International Business Machines Corporation Physical to hierarchical bus translation
US8429323B2 (en) 2010-05-05 2013-04-23 International Business Machines Corporation Memory mapped input/output bus address range translation
US8650349B2 (en) 2010-05-26 2014-02-11 International Business Machines Corporation Memory mapped input/output bus address range translation for virtual bridges
US8615645B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Controlling the selectively setting of operational parameters for an adapter
US9213661B2 (en) 2010-06-23 2015-12-15 International Business Machines Corporation Enable/disable adapters of a computing environment
US9342352B2 (en) 2010-06-23 2016-05-17 International Business Machines Corporation Guest access to address spaces of adapter
US9195623B2 (en) 2010-06-23 2015-11-24 International Business Machines Corporation Multiple address spaces per adapter with address translation
US8635430B2 (en) * 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US8271710B2 (en) 2010-06-24 2012-09-18 International Business Machines Corporation Moving ownership of a device between compute elements
US8949499B2 (en) 2010-06-24 2015-02-03 International Business Machines Corporation Using a PCI standard hot plug controller to modify the hierarchy of a distributed switch
US8656137B2 (en) 2011-09-01 2014-02-18 Qualcomm Incorporated Computer system with processor local coherency for virtualized input/output
US10387324B2 (en) 2011-12-08 2019-08-20 Intel Corporation Method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution canceling the transactional execution upon conflict between physical addresses of transactional accesses within the transactional execution
WO2013105978A1 (en) * 2012-01-13 2013-07-18 Intel Corporation Allocation of flow control credits for high performance devices
US9936329B2 (en) 2012-03-09 2018-04-03 Nokia Technologies Oy Methods, apparatuses, and computer program products for operational routing between proximate devices
JP6282434B2 (ja) * 2012-10-22 2018-02-21 キヤノンイメージングシステムズ株式会社 デバイス制御装置、その制御方法、及びデバイス制御システム
US20140208072A1 (en) * 2013-01-18 2014-07-24 Nec Laboratories America, Inc. User-level manager to handle multi-processing on many-core coprocessor-based systems
US10437591B2 (en) 2013-02-26 2019-10-08 Qualcomm Incorporated Executing an operating system on processors having different instruction set architectures
US9396011B2 (en) 2013-03-12 2016-07-19 Qualcomm Incorporated Algorithm and apparatus to deploy virtual machine monitor on demand
US9396012B2 (en) 2013-03-14 2016-07-19 Qualcomm Incorporated Systems and methods of using a hypervisor with guest operating systems and virtual processors
US9606818B2 (en) 2013-03-14 2017-03-28 Qualcomm Incorporated Systems and methods of executing multiple hypervisors using multiple sets of processors
US10114756B2 (en) 2013-03-14 2018-10-30 Qualcomm Incorporated Externally programmable memory management unit
JP6203272B2 (ja) 2013-09-03 2017-09-27 株式会社アキブシステムズ I/oデバイスの仮想化のためのコンピュータシステム及びその運用方法並びにhub装置
CN106502721B (zh) * 2016-09-26 2019-11-15 华为技术有限公司 一种命令卸载方法、装置及物理机
WO2018198325A1 (ja) * 2017-04-28 2018-11-01 株式会社日立製作所 ストレージシステム
US10706493B2 (en) * 2017-12-29 2020-07-07 Intel Corporation Apparatus and method for display virtualization using mapping between virtual and physical display planes
JP7144671B2 (ja) * 2018-03-14 2022-09-30 富士通株式会社 ネットワークインタフェース装置、それを有するノードを複数有する情報処理装置及び情報処理装置のノード間送信データ送信方法

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5998367A (ja) * 1982-11-26 1984-06-06 Nec Corp アドレス変換バツフア方式
JPH0644251B2 (ja) 1986-08-28 1994-06-08 日本電気株式会社 デ−タ処理装置
JPH01193961A (ja) * 1988-01-29 1989-08-03 Hitachi Ltd アドレス変換装置
JPH04308953A (ja) 1991-04-05 1992-10-30 Kyocera Corp 仮想アドレス計算機装置
US5294567A (en) 1993-01-08 1994-03-15 E. I. Du Pont De Nemours And Company Method for forming via holes in multilayer circuits
JP3296240B2 (ja) * 1997-03-28 2002-06-24 日本電気株式会社 バス接続装置
JPH1124995A (ja) * 1997-07-03 1999-01-29 Nec Eng Ltd アドレス変換用tlbアクセス制御方式
US6009488A (en) * 1997-11-07 1999-12-28 Microlinc, Llc Computer having packet-based interconnect channel
US6507862B1 (en) * 1999-05-11 2003-01-14 Sun Microsystems, Inc. Switching method in a multi-threaded processor
US20020069341A1 (en) * 2000-08-21 2002-06-06 Gerard Chauvel Multilevel cache architecture and data transfer
GB2367646B (en) * 2000-10-03 2002-11-20 Sun Microsystems Inc Resource access control
TWI230863B (en) 2001-06-13 2005-04-11 Corrent Corp Input/output system and method for transferring control and data, and arbiter for coordinating data communication
US6877088B2 (en) * 2001-08-08 2005-04-05 Sun Microsystems, Inc. Methods and apparatus for controlling speculative execution of instructions based on a multiaccess memory condition
JP4116346B2 (ja) 2002-07-05 2008-07-09 富士通株式会社 演算処理装置及びそのアドレス変換方法
US6976117B2 (en) * 2002-08-13 2005-12-13 Intel Corporation Snoopy virtual level 1 cache tag
US7519791B2 (en) * 2004-02-06 2009-04-14 Intel Corporation Address conversion technique in a context switching environment
US7415577B2 (en) * 2004-03-10 2008-08-19 Intel Corporation Method and apparatus to write back data
US7496713B1 (en) * 2004-07-21 2009-02-24 Sun Microsystems, Inc. Method and apparatus for maintaining cache coherency in a memory system with shared only cache memories
US7586936B2 (en) * 2005-04-01 2009-09-08 International Business Machines Corporation Host Ethernet adapter for networking offload in server environment
US7496730B2 (en) * 2005-04-15 2009-02-24 Microsoft Corporation System and method for reducing the number of translation buffer invalidates an operating system needs to issue
US7487327B1 (en) * 2005-06-01 2009-02-03 Sun Microsystems, Inc. Processor and method for device-specific memory address translation
US20060288130A1 (en) * 2005-06-21 2006-12-21 Rajesh Madukkarumukumana Address window support for direct memory access translation
US7653803B2 (en) * 2006-01-17 2010-01-26 Globalfoundries Inc. Address translation for input/output (I/O) devices and interrupt remapping for I/O devices in an I/O memory management unit (IOMMU)
US7613898B2 (en) * 2006-01-17 2009-11-03 Globalfoundries Inc. Virtualizing an IOMMU
US7548999B2 (en) * 2006-01-17 2009-06-16 Advanced Micro Devices, Inc. Chained hybrid input/output memory management unit
US7673116B2 (en) * 2006-01-17 2010-03-02 Advanced Micro Devices, Inc. Input/output memory management unit that implements memory attributes based on translation data
US7739474B2 (en) * 2006-02-07 2010-06-15 International Business Machines Corporation Method and system for unifying memory access for CPU and IO operations
US8650342B2 (en) * 2006-10-23 2014-02-11 Dell Products L.P. System and method for distributed address translation in virtualized information handling systems

Also Published As

Publication number Publication date
DE112008002019T5 (de) 2010-06-10
TWI386811B (zh) 2013-02-21
CN101359315B (zh) 2014-09-03
TW200912655A (en) 2009-03-16
CN101359315A (zh) 2009-02-04
JP2009037610A (ja) 2009-02-19
WO2009018329A3 (en) 2009-03-12
US8250254B2 (en) 2012-08-21
WO2009018329A2 (en) 2009-02-05
US20090037614A1 (en) 2009-02-05

Similar Documents

Publication Publication Date Title
JP4805314B2 (ja) 入出力(i/o)仮想化動作のプロセッサへのオフロード
US10031857B2 (en) Address translation services for direct accessing of local memory over a network fabric
CN107111576B (zh) 发布的中断架构
US7756943B1 (en) Efficient data transfer between computers in a virtual NUMA system using RDMA
US7596654B1 (en) Virtual machine spanning multiple computers
KR100432470B1 (ko) 로컬 i/o 버스에 인접한 브리지에서의 입/출력(i/o) 어드레스 번역
JP5263699B2 (ja) ヘテロジニアス処理ユニット間での不均一メモリアクセスのためのチップセットサポート
US20220283975A1 (en) Methods and apparatus for data descriptors for high speed data systems
US7502877B2 (en) Dynamically setting routing information to transfer input output data directly into processor caches in a multi processor system
JP5681782B2 (ja) オン・ダイ・システム・ファブリック・ブロックの制御
JP3264319B2 (ja) バスブリッジ
US8904045B2 (en) Opportunistic improvement of MMIO request handling based on target reporting of space requirements
US20110252168A1 (en) Handling Atomic Operations For A Non-Coherent Device
TWI502346B (zh) 根據窺探回應資訊之目錄快取分配技術
US7657724B1 (en) Addressing device resources in variable page size environments
CN115269457A (zh) 使得缓存能够在支持地址转换服务的设备内存储进程特定信息的方法和装置
CN116383101A (zh) 内存访问方法、内存管理单元、芯片、设备和存储介质
US20050033922A1 (en) Embedded DRAM cache
US6067581A (en) Method for identifying the orignal source device in a transaction request initiated from address translator to memory control module and directly performing the transaction therebetween
US20240211299A1 (en) Technique for handling request transfers from a peripheral device in a communication network
US20240202144A1 (en) Coherent block read fulfillment
JP2008123333A (ja) 半導体集積回路装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100915

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100921

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101207

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101210

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110215

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110726

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110810

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140819

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees