JP5011584B2 - ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移行するためのチップセットサポート - Google Patents

ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移行するためのチップセットサポート Download PDF

Info

Publication number
JP5011584B2
JP5011584B2 JP2009280697A JP2009280697A JP5011584B2 JP 5011584 B2 JP5011584 B2 JP 5011584B2 JP 2009280697 A JP2009280697 A JP 2009280697A JP 2009280697 A JP2009280697 A JP 2009280697A JP 5011584 B2 JP5011584 B2 JP 5011584B2
Authority
JP
Japan
Prior art keywords
processor
address
global
hardware device
hardware
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.)
Active
Application number
JP2009280697A
Other languages
English (en)
Other versions
JP2010152892A (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 JP2010152892A publication Critical patent/JP2010152892A/ja
Application granted granted Critical
Publication of JP5011584B2 publication Critical patent/JP5011584B2/ja
Active 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/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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0692Multiconfiguration, e.g. local and global addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/206Memory mapped I/O

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)

Description

[0001]本発明は、一般にコンピュータアーキテクチャの分野に関し、より詳細には、ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移行するためのチップセットサポートに関する。
[0002]周知のように、オペレーティングシステム(OS)を実行する中央処理装置(CPU)は、入出力(I/O)動作を実施するとき、システムメモリ及び/又は1つ若しくは複数のハードウェアデバイスにアクセスすることができる。I/O動作は、メモリブリッジ(たとえば「ノースブリッジ(Northbridge)」チップ)及び/又はI/Oブリッジ(たとえば「サウスブリッジ(Southbridge)」チップ)を含めて、1つ又は複数のブリッジを介してCPUに、またCPUからルーティング(route)されることが可能である。1つ又は複数のハードウェアデバイスは、とりわけメモリモジュール、コンピュータモニタ、ハードディスクドライブ、CD−ROMドライブ、ユニバーサルシリアルバス(USB)コントローラ、PCIエクスプレス(PCIe)コントローラを含むことができる。ハードウェアデバイスは、集積ハードウェアデバイス又は周辺ハードウェアデバイスとすることができる。
[0003]従来のコンピュータアーキテクチャに伴う1つの問題は、コンピュータシステム内に含まれるCPUが1つだけであるという仮定を基礎として設計されていることである。したがって、従来のアーキテクチャ方式を使用してマルチプロセッサシステムを実装すると、1つのCPUがハードウェアデバイスにアクセスしようと試みたとき競合が生じるおそれがある。というのは、各CPUが、ハードウェアデバイスのすべてに完全かつ排他的にアクセスすることができると考えるからである。
[0004]従来のアーキテクチャに伴う1つのもう1つの問題は、チップセット、ハードウェアデバイスコントローラ、及び下にあるハードウェアデバイスが、一般に、マルチプロセッサコンピュータシステム内で使用するように設計されていないことである。この場合も、2つのプロセッサが同じハードウェアデバイスに同時に、又は非同時にアクセスしようと試みたとき競合及び/又はシステムクラッシュが発生するおそれがある。
[0005]いくつかの従来技術のコンピュータアーキテクチャは、2つのCPUをコンピュータシステム内で共存させることによって、これらの欠点を克服しようと試みる。しかし、これらの従来技術のコンピュータアーキテクチャでは、各CPUが、コンピュータシステム内の他のどのCPUにも気づいていなければならず、マルチプロセッサシステム内で動作するように特別に構成されていなければならない。さらに、多数の従来技術のマルチCPUシステムでは、複数のプロセッサがホモジニアスであり、これは、これらのプロセッサが実質的に同じである、及び/又は同じベンダからのものであることを意味する。
[0006]したがって、当技術分野では、複数のヘテロジニアス処理ユニットが同じシステム内の複数のハードウェアデバイスにアクセスすることを可能にするための改善された技法が依然として求められている。
[0007]本発明の実施形態は、コンピュータシステム内に含まれる他のプロセッサとの競合を引き起こすことなしにコンピュータシステム内に含まれるハードウェアデバイスに対する、プロセッサによるアクセスを実現するためのシステム及び方法を提供する。この方法は、第1のプロセッサから、第1のプロセッサがアクセスするように構成されている、第1のセットのハードウェアデバイスについてのメモリマップド入出力(I/O)アパーチャを含む第1のアドレスマップを受け取るステップと、第2のプロセッサから、第2のプロセッサがアクセスするように構成されている、第2セットのハードウェアデバイスについてのメモリマップドI/Oアパーチャを含む第2のアドレスマップを受け取るステップとを含む。この方法は、第1のアドレスマップと第2のアドレスマップを組み合わせることによってグローバルアドレスマップを生成するステップと、第1のプロセッサから第1のアクセス要求を受け取るステップと、グローバルアドレスマップ内に含まれるアドレスマッピングに基づいて、第1のアクセス要求に関連付けられたハードウェアデバイスに第1のアクセス要求をルーティングするステップとをさらに含む。
[0008]本発明の他の実施形態は、プロセッサによって実行されたとき、上記の方法の1つ又は複数の変形形態を実施するようにコンピュータシステムを構成する命令を記憶するコンピュータ可読媒体、並びに上記の方法の1つ又は複数の変形形態を実施するように構成されたデバイスコントローラを含む。
[0009]開示されている方法の1つの利点は、マルチプロセッサシステム内に含まれるヘテロジニアスプロセッサが、チップセット内に含まれる任意の集積ハードウェアデバイス、又は外部バス(たとえば、PCI、PCIeなど)上に取り付けられた任意の周辺ハードウェアデバイスに、そのプロセッサ、オペレーティングシステム、又はそれらのハードウェアデバイスを修正することなしにアクセスすることができることである。
[0010]本発明の上述の特徴を詳細に理解することができるように、上記で簡単に述べた本発明について、添付の図面にそれらの一部が示されている実施形態を参照してより具体的に述べることができる。しかし、添付の図面は、本発明の典型的な実施形態を示しているにすぎず、したがって、本発明には他の均等に有効な実施形態の余地があり得るため、その範囲を限定するものとみなすべきでないことに留意されたい。
本発明の一実施形態による、ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移動するように構成されたコンピュータシステムの概念図である。 本発明の一実施形態による、ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移動するように構成されたコンピュータシステムの概念図である。 本発明の一実施形態による、ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移動するように構成されたコンピュータシステムの概念図である。 本発明の一実施形態による、ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移動するように構成されたコンピュータシステムの概念図である。 本発明の一実施形態による、グローバルアドレスマップを生成するための方法ステップの流れ図である。 本発明の一実施形態による、グローバルアドレスマップを示す概念図である。 本発明の一実施形態による、グローバル構成空間マップを示す概念図である。 本発明の一実施形態による、プロセッサからのアクセス要求をハードウェアデバイスにルーティングするための方法ステップの流れ図である。 本発明の一実施形態による、ハードウェアデバイスからのリターントランザクションをプロセッサにルーティングするための方法ステップの流れ図である。
[0017]以下の説明では、本発明をより完全に理解するために、多数の特定の詳細について述べる。しかし、これらの特定の詳細の1つ又は複数がなくても本発明を実施することができることが、当業者には明らかになるであろう。他の場合には、本発明を不明瞭にするのを回避するために、周知の特徴は述べられていない。
[0018]図1Aは、本発明の一実施形態による、ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移動するように構成されたコンピュータシステム100の概念図である。図では、コンピュータシステム100は、プロセッサ102Aと、プロセッサ102Bと、メモリブリッジ104Aと、メモリブリッジ104Bと、メモリ106Aと、メモリ106Bと、入出力(I/O)管理モジュール108とを含む。I/O管理モジュール108は、周辺ハードウェアデバイス112A〜112Nに結合され、I/Oコントローラ114と、集積ハードウェアデバイス110A〜110Nとを含む。
[0019]プロセッサ102A、プロセッサ102B、周辺ハードウェアデバイス112A〜112N、集積ハードウェアデバイス110A〜110Nは、メモリ106A及び/又はメモリ106B内に記憶された1つ又は複数のドライバに関連付けられている可能性がある。ドライバは、プロセッサ102A及び/又はプロセッサ102Bによって実行されたとき、プログラム命令を様々なタイプの機械コードに変換するソフトウェアプログラムである。たとえば、プロセッサ102Aは、プロセッサ102Aに関連付けられたドライバを実行し、プログラム命令をプロセッサ102Aネイティブの機械コードに変換することができる。
[0020]プロセッサ102A及びプロセッサ102Bは、それぞれ、ソフトウェアプログラムを実行し、コンピュータシステム100の様々な機能を実施するように構成された中央処理装置(CPU)とすることができる。これらのソフトウェアプログラムは、プロセッサ102A、102Bのそれぞれを実行する1つ又は複数のオペレーティングシステムを含む。オペレーティングシステムは、各コンピューティング環境に関連付けられたアプリケーションを実行するために使用することができる様々なコンピューティング環境をユーザに提供する。たとえば、プロセッサ102Aによって実行される第1のオペレーティングシステムは、ユーザにマイクロソフト(Microsoft)(登録商標)オフィス(Office)などのプログラムに対するアクセスを提供することができるウィンドウズ(Windows)(登録商標)オペレーティングシステムとすることができ、一方、プロセッサ102Bによって実行される第2のオペレーティングシステムは、ファイル転送プロトコル(FTP)サーバとして機能するUNIXベースのオペレーティングシステムとすることができる。
[0021]プロセッサ102Aはメモリブリッジ104Aに結合され、プロセッサ102Bはメモリブリッジ104Bに結合されている。一実施形態では、メモリブリッジ104A、104Bは、それぞれノースブリッジチップを含む。メモリブリッジ104Aはメモリ106Aに結合され、メモリブリッジ104Bはメモリ106Bに結合されている。プロセッサ102Aは、メモリブリッジ104Aを経てメモリ106Aからデータを読み込む、且つそこにデータを書き込むことができ、プロセッサ102Bは、メモリブリッジ104Bを経てメモリ106Bからデータを読み込む、且つそこにデータを書き込むことができる。このデータは、ソフトウェアプログラム、並びに他のタイプのデータを含むことができる。
[0022]各メモリブリッジ104A、104Bは、I/O管理モジュール108に結合されている。I/O管理モジュール108は、周辺ハードウェアデバイス112A〜112N及び集積ハードウェアデバイス110A〜110Nを、プロセッサ102A、102B、及びこれらの処理ユニットによって実行されるソフトウェアプログラムからアクセス可能にする。一実施形態では、I/O管理モジュール108は、本明細書では「チップセット」108とも呼ばれ、サウスブリッジチップを含む。周辺ハードウェアデバイス112A〜112Nは、たとえばユニバーサルシリアルバス(USB)コネクタ又はファイアウェアコネクタなど、コネクタを使用してI/O管理モジュール108に結合させることができる。周辺機器112A〜112Nは、とりわけキーボード、マウス、プリンタ、スキャナ、ディスクドライブ、フラッシュドライブ、テープドライブ、マイクロフォン、スピーカ、コンピュータモニタ、デジタルビデオカメラ、又は別のコンピュータシステムを含む。
[0023]集積ハードウェアデバイス110A〜110Nは、I/O管理モジュール108を記憶する同じチップ上に位置し、様々なシステム機能をコンピュータシステムに提供する。集積ハードウェアデバイス110A〜110Nは、とりわけリアルタイムクロック、APM(advanced power management)モジュール、PCI(peripheral component interface)バス、PCIエクスプレス(PCIe)バス、DMA(direct memory access)コントローラ、割込みコントローラ、ベースボード管理コントローラ、PATA(peripheral advanced technology attachment)コントローラ、SATA(serial advanced technology attachment)コントローラ、又は不揮発性の基本入出力システム(BIOS)メモリを含む。
[0024]周辺ハードウェアデバイス112A〜112N及び集積ハードウェアデバイス110A〜110Nは、本明細書ではまとめて「ハードウェアデバイス」と呼ばれ、それぞれメモリブリッジ104A、104B、及びI/O管理モジュール108を介してプロセッサ102A、102Bからアクセス可能である。
[0025]I/Oコントローラ114は、プロセッサ102A、102Bとハードウェアデバイスとの間でアクセス要求をアービトレーション(arbitrate:調停)及びルーティングするように構成された機能ユニットである。I/Oコントローラ114は、ハードウェアとしても、ソフトウェアとしても、ハードウェアとソフトウェアの組合せとしても実装することができる。たとえば、I/Oコントローラ114は、汎用プロセッサによって実行される、I/O管理モジュール108内に含まれるファームウェアとして実装することができる。
[0026]I/Oコントローラ114は、プロセッサ102A、102Bによって送られるアクセス要求(本明細書では「下流トランザクション」とも呼ばれる)をインターセプトするように構成され、そのハードウェアデバイスにアクセスする複数のプロセッサ102A、102B間の競合を回避するように機能し、アクセス要求を適切なハードウェアデバイスにルーティングする。また、I/Oコントローラ114は、ハードウェアデバイスによって送られるリターントランザクション及び割込み(本明細書では「上流トランザクション」とも呼ばれる)をインターセプトし、これらのトランザクションを対応するプロセッサにルーティングする。
[0027]本発明の実施形態は、プロセッサ又はオペレーティングシステムの修正なしに、コンピュータシステム100内の各プロセッサ102A、102Bがコンピュータシステム100内に含まれる任意のハードウェアデバイスを使用し、それにアクセスすることを可能にするためのチップセットサポートを提供する。具体的には、本発明の実施形態は、各プロセッサ102A、102Bとハードウェアデバイスとの間のトランザクションをルーティングするためのサポート、ハードウェアデバイスとメモリ106A、106Bとの間のトランザクションをルーティングするためのサポート、ハードウェアデバイスを各プロセッサ102A、102Bにバインドするためのサポート、プロセッサ102A、102B間でデバイスを移行するためのサポート、及びハードウェアデバイス間でピアツーピアトランザクションをルーティングするためのサポートを提供する。さらに、本発明の実施形態は、どの特定のハードウェアデバイスコントローラに対する修正にも依拠しない。そうではなく、本発明の実施形態は、チップセット108内の修正に依拠する。
[0028]図1Aに示されているコンピュータシステム100は、2つのプロセッサ102A、102Bと、2つのメモリブリッジ104A、104Bとを含む。しかし、本発明の実施形態は、任意の数のプロセッサ及びメモリブリッジを有するシステムアーキテクチャにも等しく適用される。さらに、各プロセッサ102A、102Bは、必須ではないがヘテロジニアスであってもよく、ヘテロジニアスは、おそらくは相異なるオペレーティングシステムを実行する、おそらくは相異なる命令セットを有し、また任意の数の他の違いを有する、相異なるベンダからのプロセッサを含む。
[0029]さらに、コンピュータシステム100の追加の実施形態は、とりわけ、ネットワークアダプタ、システムディスク、アドインカード、ディスプレイデバイスなど、また、グラフィック処理装置(GPU)など並列処理ユニット(PPU)を含む並列処理サブシステムなどの構成要素を含む。
[0030]図1Aに記載されているアーキテクチャは本発明の範囲を決して限定しないこと、また、本明細書で教示されている技法は、限定することなしに1つ又は複数のCPU、1つ又は複数のマルチコアCPU、1つ又は複数のPPU、1つ又は複数のプログラム可能な、及び/又はプログラム可能でないCPU、1つ又は複数の専用処理ユニットなどを含めて、本発明の範囲から逸脱することなしに、任意の適正に構成された(1つ又は複数の)処理ユニット上で実装することができることを、当業者なら理解するであろう。
[0031]また、図1Aに示されているコンピュータシステム100アーキテクチャは、図1B〜1Dにより詳細に記載されているように、任意の数のチップとして実施することができる。図1Bは、本発明の一実施形態による、ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移動するように構成されたコンピュータシステム120の概念図である。コンピュータシステム120は、図1Aに示されているコンピュータシステム100と同じ構成要素を含むことができる。図では、プロセッサ102A及びメモリブリッジ104Aが、第1のチップ116上で集積されており、プロセッサ102B、メモリブリッジ104B、及びI/O管理モジュール108が、第2のチップ118上で集積されている。第2のチップ118は、第1のチップ116に対する外部接続をサポートする。一実施形態では、第2のチップ118は、アップグレードし追加の開部プロセッサ又はメモリブリッジを含める(すなわち、第1のチップ116に接続するようにアップグレードする)ことができる完全機能を有するシステム・オン・チップを含む。
[0032]図1Cは、本発明の一実施形態による、ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移動するように構成されたコンピュータシステム130の概念図であるこの場合も、図1Aに示されているコンピュータシステム100と同じ構成要素を含むことができる。図では、プロセッサ102A及びメモリブリッジ104Aが、第1のチップ132上で集積されており、メモリブリッジ104B及びI/O管理モジュール108が、第2のチップ134上で集積されており、プロセッサ102Bが、第3のチップ136上で集積されている。一実施形態では、第1のチップ132は、プロセッサ及び対応するメモリブリッジを含むチップを供給する第1のベンダによって提供され、第2のチップ134及び/又は第3のチップ136は、第2のベンダによって提供される。
[0033]図1Dは、ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移動するように構成されたコンピュータシステム140の概念図である本発明の一実施形態による、この場合も、コンピュータシステム140は、図1Aに示されているコンピュータシステム100と同じ構成要素を含むことができる。図では、プロセッサ102A及びメモリブリッジ104Aが、第1のチップ142上で集積されており、プロセッサ102B及びメモリブリッジ104Bが、第2のチップ144上で集積されており、I/O管理モジュール108が、第3のチップ146上で集積されている。
[0034]当業者には明らかなように、図1B〜1Dに示されているもの以外に、チップの他の組合せが本発明の実施形態の範囲内にある。様々な実施形態では、メモリブリッジとチップセットの間の接続は、PCIエクスプレス(PCIe)、デスクトップ管理インターフェース(DMI)標準と組み合わされたPCIe、ハイパートランスポート(HyperTransport、HT)、知的所有権のある、及び/又は内部のチップセットインターフェース、或いは任意の他のサウスブリッジからノースブリッジへの接続とすることができる。さらに、様々な実施形態では、特定のプロセッサと、対応するメモリブリッジとの間の接続は、プロセッサベンダ特有である。他の実施形態では、各プロセッサは、様々なオペレーティングシステムを含めて、任意のソフトウェアを実行中であってもよく、各プロセッサを、それ自体のアドレスマップを用いて、あたかもそのコンピュータシステム内の唯一のプロセッサであるかのように構成することができる。たとえば、各プロセッサ及び/又はオペレーティングシステムは、ハードウェアデバイスが、あたかもその特定のプロセッサ及び/又はオペレーティングシステム専用であるかのように見えることを予想することができる。この場合も、本発明の実施形態は、複数のプロセッサによるアクセスを受けることになるハードウェアデバイスが、マルチプロセッサ及び/又はヘテロジニアスプロセッサコンピューティング環境と共に動作するように特に設計されていないときでさえ、それらのハードウェアデバイスのためのサポートを提供する。
[0035]図2は、本発明の一実施形態による、グローバルアドレスマップを生成するための方法ステップの流れ図である。方法200について図1A〜1Dのシステムと共に述べられているが、これらの方法ステップを任意の順番で実施するように構成された任意のシステムが本発明の実施形態の範囲内にあることを、当業者なら理解するであろう。
[0036]図では、方法200は、第1のプロセッサ(たとえば、プロセッサ102A)に関連付けられたハードウェアデバイスが列挙されるステップ202で始まる。一実施形態では、ハードウェアデバイスを列挙することは、少なくとも一部には、第1のプロセッサによって実行されるファームウェアコード(たとえば、BIOS及び/又は他のシステムソフトウェア)によって実施される。代替の実施形態では、I/Oコントローラ114は、第1のプロセッサに関連付けられたハードウェアデバイスを列挙する。
[0037]ステップ204では、第1のプロセッサ用の「メモリ空間」を提供する第1のアドレスマップが生成される。第1のアドレスマップ内のメモリアドレスは、第1のプロセッサがアクセスするように構成されている列挙ハードウェアデバイスのための物理メモリを、又はメモリマップドI/Oアパーチャを指すことができる。
[0038]ステップ206では、第2のプロセッサ(たとえば、プロセッサ102B)に関連付けられたハードウェアデバイスが列挙される。ステップ206は、ステップ202と実質的に同様な仕方で実施することができる。しかし、第1のプロセッサに関連付けられた列挙デバイスは、第2のプロセッサに関連付けられた列挙デバイスと異なる可能性がある。一実施形態では、コンピュータシステム内に含まれるハードウェアデバイスのすべてが、各プロセッサによって列挙される。代替の実施形態では、各ハードウェアデバイスが、列挙中に、1つのプロセッサだけに統計的にバインドされ、その結果、そのプロセッサだけがその特定のハードウェアデバイスにアクセスすることができる。他の実施形態では、ハードウェアデバイスのうちのいくつかが両プロセッサによって列挙され、他のハードウェアデバイスは、一方のプロセッサだけによって列挙される。
[0039]ステップ208では、第2のプロセッサ用の「メモリ空間」を提供する第2のアドレスマップが生成される。ステップ204で生成された第1のアドレスマップと同様に、第2のアドレスマップ内のメモリアドレスは、第2のプロセッサがアクセスするように構成されている列挙ハードウェアデバイスのための物理メモリを、又はメモリマップドI/Oアパーチャを指すことができる。しかし、第2のプロセッサがアクセスすることができる列挙デバイスのリストは、第1のプロセッサがアクセスすることができる列挙デバイスのリストと異なる可能性があるため、第2のアドレスマップは、第1のアドレスマップと異なる可能性がある。さらに、列挙デバイスのリスト、及び各メモリマップドアパーチャのサイズが両プロセッサについて同じであるときでさえ、プロセッサ、及び/又は各プロセッサによって実行されるオペレーティングシステムは、アドレスマップを生成するとき、異なるスキームを実装することができる。したがって、このシナリオでさえ、第1のアドレスマップと第2のアドレスマップは異なる可能性がある。
[0040]ステップ210では、I/O管理モジュール108が第1のプロセッサから第1のアドレスマップを受け取る。上述のように、第1のアドレスマップは、システム内のハードウェアデバイスに対するプロセッサの「ビュー(view)」を規定する。トランザクションが第1のプロセッサとハードウェアデバイスの間でルーティングされるためには、I/O管理モジュール108は、第1のアドレスマップを受け取り、記憶する。
[0041]ステップ212では、I/O管理モジュール108が第2のプロセッサから第2のアドレスマップを受け取る。ステップ212は、上述のステップ210と実質的に同様である。
[0042]ステップ214では、I/O管理モジュール108は、第1のアドレスマップと第2のアドレスマップを組み合わせることによって、グローバルアドレスマップを生成する。本明細書で述べるように、グローバルアドレスマップは、各プロセッサから始まるトランザクションを適切なハードウェアデバイスにルーティングすることを可能にし、ハードウェアデバイスから始まるトランザクションを適切なプロセッサにルーティングすることを可能にする。一実施形態では、グローバルアドレスマップに含まれるアドレスは、「0」が前に付加された第1のアドレスマップ内のアドレスと、「1」が前に付加された第2のアドレスマップ内のアドレスとを含む。このようにして、グローバルアドレス空間は、第1のアドレスマップ及び/又は第2のアドレスマップのアドレス空間に関する1つの追加ビットを含む。2つを超えるプロセッサがコンピュータシステム内に含まれる代替の実施形態では、追加の、前に付加されるビットを、プロセッサ間で曖昧さを除くために含むことができる。他の代替の実施形態では、第1のアドレスマップと第2のアドレスマップは、ビットをアドレスマップの前に付加することとは無関係な、且つ異なる、より複雑な技法を使用してグローバルアドレスマップに組み合わされる。
[0043]図3は、本発明の一実施形態による、グローバルアドレスマップ306を示す概念図である。図では、第1のMMIO部分と第1の物理メモリ部分とを含む第1のアドレスマップ302が、第2のMMIO部分と第2の物理メモリ部分とを含む第2のアドレスマップ304と組み合わされ、グローバルアドレスマップ306を生成する。
[0044]図2及び図3に記載されている方法及びシステムは、メモリ空間アドレスマップを具体的に説明する。さらに、同様の方法及びシステムを実装し、第1のプロセッサ用及び第2のプロセッサ用の「構成空間」アドレスマップを生成することができ、これらのマップがグローバル構成空間マップに組み合わされる。知られているように、構成空間アドレスは、<bus,device,function>という形態のものであり、プロセッサとハードウェアデバイスの間の構成サイクルのために、またいくつかのPCIeトランザクションパケットをルーティングするために使用されるアドレスである。
[0045]図4は、本発明の一実施形態による、グローバル構成空間マップ406を示す概念図である。図では、第1のプロセッサ(たとえば、プロセッサ102A)に関連付けられた第1の構成空間アドレスマップ402を、第2のプロセッサ(たとえば、プロセッサ102B)に関連付けられた第2の構成空間アドレスマップ404と組み合わせ、グローバル構成空間アドレスマップ406を生成することができる。図3に記載されているグローバルアドレスマップ306と同様に、グローバル構成空間アドレスマップ406は、1つ又は複数の、前に付加されるビットを含むことや、任意の他の技術的に可能な技法を使用して第1の構成空間アドレスマップと第2の構成空間アドレスマップとを組み合わせることができる。
[0046]図5は、本発明の一実施形態による、プロセッサからのアクセス要求をハードウェアデバイスにルーティングするための方法ステップの流れ図である。方法500について図1A〜4のシステム及び/又は方法と共に述べられているが、これらの方法ステップを任意の順番で実施するように構成された任意のシステムが本発明の実施形態の範囲内にあることを、当業者なら理解するであろう。
[0047]図では、方法500は、I/O管理モジュール108がプロセッサからアクセス要求を受け取るステップ502で始まる。プロセッサは、たとえば、プロセッサ102A、102Bの一方とすることができる。アクセス要求は、上述のようにMMIOアドレス又は構成空間アドレスを含むことができる。
[0048]ステップ504では、I/O管理モジュール108は、グローバルアドレス部分を、アクセス要求内に含まれる下流宛先アドレスに追加し、グローバル宛先アドレスを生成する。一実施形態では、アクセス要求が第1のプロセッサ(たとえば、プロセッサ102A)から受け取られた場合、「0」が下流宛先アドレスの前に付加され、一方、アクセス要求が第2のプロセッサ(たとえば、プロセッサ102B)から受け取られた場合、「1」が下流宛先アドレスの前に付加される。
[0049]ステップ506では、I/O管理モジュール108は、グローバルアドレスマップに基づいて、グローバル宛先アドレスをデバイスアドレスに変換する。一実施形態では、デバイスアドレスは、コンピュータシステム内のハードウェアデバイスの物理ハードウェアアドレスを含む。たとえば、グローバルアドレスマップは、図3に記載されているグローバルアドレスマップ306を含むことができる。ステップ508では、I/O管理モジュール108は、アクセス要求の入手元であるプロセッサを、そのハードウェアデバイスの「オーナ」として設定する。このようにして、ハードウェアデバイスは、そのハードウェアデバイスにアクセス要求を発行した最後のプロセッサに動的にバインドされる。このバインディングは、図6により詳細に記載されているように、ハードウェアデバイスからのリターントランザクションを適切なプロセッサにルーティングするとき有用である。
[0050]所有権のバインディングは、いくつかの仕方で行うことができる。一実施形態では、上述のように、ハードウェアデバイスを、そのハードウェアデバイスに向けて送られた下流トランザクションを発行した最後のプロセッサにバインドすることができる。この実施形態では、後続の上流トランザクションが、最後の下流トランザクションの「オーナ」に対応するグローバルアドレス空間に変換される。
[0051]代替の実施形態では、I/O管理モジュール108は、任意のハードウェアデバイスをコンピュータシステム内に含まれる任意のプロセッサにバインドするように構成されている集積ハードウェアデバイス(たとえば、「BindDev」デバイス)を含む。BIOS又はシステムソフトウェアがハードウェアデバイスを列挙するとき、BindDevが発見され、使用可能なハードウェアデバイスのテーブルが生成され、どのプロセッサに各ハードウェアデバイスをバインドすべきか判定される。列挙ソフトウェアがこのテーブルをBindDevに書き込み、BindDevは、そのテーブルをI/O管理モジュール108内に記憶する。BindDevを使用するために、1つのプロセッサが最初にブートすることができ、そのBIOSが、システム内のデバイスすべてを列挙及びバインドすることができる。別法として、各プロセッサ上のBIOS及び/又はシステムソフトウェアが、BindDevを使用しデバイスをプロセッサにバインドするように調整することができる。デバイスがシステムを出入りすると、(ホットプラグイベントによってトリガされて)テーブルが更新される。さらに、BindDevは、相異なるタイプのトランザクションについて異なるバインディングをサポートすることができる。たとえば、関係するトランザクションが構成トランザクションであるか、メッセージトランザクションであるか、I/Oトランザクションであるか、それともメモリマップドトランザクションであるかに応じて、デバイス所有権は、特定のハードウェアデバイスについて異なるものであってもよい。また、システムソフトウェアは、システムがブートした後いつでも、上述の技法を使用して、ハードウェアデバイスを異なるプロセッサに再バインドすることができる。
[0052]さらに、あるプロセッサが特定のハードウェアデバイスの「オーナ」に設定された後で、この情報は、「上流トランザクション」中に取り出せるように記憶される。「BindDev」ハードウェアデバイスがプロセッサを特定のデバイスにバインドするように構成されている実施形態では、「BindDev」ハードウェアデバイスが所有権情報を記憶する。さらに、「動的」バインディング実施形態では、この情報は、プロセッサとハードウェアデバイスの間のトランザクション経路上で使用可能な、I/O管理モジュール108内のどこに記憶されてもよい。一実施形態では、I/Oコントローラ114が所有権情報を記憶する。他の実施形態では、ハードウェアデバイスの周りの「ラッパ」が所有権情報を記憶する。他の実施形態では、いくつかのハードウェアデバイスそれら自体が所有権の概念をサポートし、所有権情報を記憶することができる。他の実施形態では、デバイス所有権は、メモリコントローラ104A及び/又は104BとI/O管理モジュール108の間の入口/出口ポート内、或いはI/O管理モジュール108とハードウェアデバイスの間の入口/出口ポート内に記憶される。
[0053]ステップ510では、I/O管理モジュール108は、デバイスアドレスに基づいて、アクセス要求をハードウェアデバイスにルーティングする。ステップ512では、I/O管理モジュール108は、グローバルアドレス部分を除去し、ステップ514で、アクセス要求をハードウェアデバイスに送信する。一実施形態では、プロセッサもハードウェアデバイスも、コンピュータシステム内に、そのハードウェアデバイスにアクセスすることができる複数のプロセッサがあることに気づいていない。グローバルアドレス部分、たとえば前に付加されたビットが、アクセス要求のアドレス部分から除去される。というのは、ハードウェアデバイスは、アクセス要求がI/O管理モジュール108によって受け取られたときアクセス要求に含まれる元の下流宛先アドレスと同じ数のビットを有するアドレスを予想しているからである。
[0054]図6は、本発明の一実施形態による、ハードウェアデバイスからのリターントランザクションをプロセッサにルーティングするための方法ステップの流れ図である。方法600について図1A〜5のシステム及び方法と共に述べられているが、これらの方法ステップを任意の順番で実施するように構成された任意のシステムが本発明の範囲内にあることを、当業者なら理解するであろう。
[0055]図では、方法600は、I/O管理モジュール108がハードウェアデバイスからリターントランザクションを受け取るステップ602で始まる。リターントランザクションは、本明細書では「上流トランザクション」とも呼ばれる。様々な実施形態では、リターントランザクションは、(a)以前の下流ノンポステッド(non−posted)要求(たとえば、読取りリターンデータ)に起因する上流デバイス完了(completion)、(b)デバイスコントローラのダイレクトメモリアクセス(DMA)のための、システムメモリからの読取り及び/又はシステムメモリへの書込みを含むトランザクション、(c)上流メッセージ(たとえば、割込み)、(d)2つのハードウェアデバイス間のピアツーピアトランザクションを含む。ピアツーピアトランザクションは、本発明の実施形態によれば、他の3つのタイプの上流トランザクションに比べて、I/O管理モジュール108によって違うように処理される。したがって、ピアツーピアトランザクションを処理することは、図6に記載されている方法600の範囲外であり、下記でさらに述べる。
[0056]ステップ604では、I/O管理モジュール108は、どのプロセッサが、上流トランザクションの入手元であるハードウェアデバイスのオーナであるか判定する。I/O管理モジュール108は、ステップ508で生成された所有権情報を検査することができる。
[0057]ステップ606では、I/O管理モジュール108は、グローバルアドレス部分を上流宛先アドレスに追加し、グローバル宛先アドレスを生成する。追加されるグローバルアドレス部分は、どのプロセッサが、上流トランザクションを送るハードウェアデバイスのオーナであるかによって決まる。一実施形態では、グローバルアドレス部分を追加することは、どのプロセッサがそのハードウェアデバイスのオーナであるかに基づいて、ビットを上流宛先アドレスの前に付加することを含む。
[0058]ステップ608では、I/O管理モジュール108は、グローバルアドレスマップに基づいて、グローバル宛先アドレスをデバイスアドレスに変換し、ステップ610で、I/O管理モジュール108は、グローバルアドレスに基づいて、上流トランザクションを適切なプロセッサにルーティングする。一実施形態では、ステップ608及びステップ610は、本明細書で前述の、それぞれステップ506及びステップ510と実質的に同様である。
[0059]ステップ612では、I/O管理モジュール108は、デバイスアドレスからグローバルアドレス部分を除去し、ステップ614で、I/O管理モジュール108は、上流トランザクションをプロセッサに送信する。一実施形態では、ステップ612及びステップ614は、本明細書で前述の、それぞれステップ512及びステップ514と実質的に同様である。
[0060]代替の実施形態では、I/O管理モジュール108はまた、2つのハードウェアデバイス間でピアツーピアトランザクションをルーティングすることができる。たとえば、プロセッサが、アクセス要求を第1のハードウェアデバイス(たとえば、ハードウェアデバイスA)に発行することによってピアツーピアトランザクションを開始し、第1のハードウェアデバイスは、第2のハードウェアデバイス(たとえば、ハードウェアデバイスB)に向けて送られる上流トランザクションを発行する。一実施形態では、元のアクセス要求を発行したプロセッサは、両ハードウェアデバイスのオーナとして設定される。したがって、上流トランザクションの宛先アドレス(すなわち、ハードウェアデバイスBの宛先アドレス)が両ハードウェアデバイスのローカルアドレスマップ内で同じであるため、ピアツーピアトランザクションをサポートするために追加の修正が必要とされない。他の実施形態では、ピアツーピアアパーチャをすべてのプロセッサアドレスマップ内で同じオフセットで割り振り、その結果、デバイス「所有権」が重要なものでなくなるように、コンピュータシステムを、BIOS、又はI/O管理モジュール108内に含まれるシステムソフトウェアによって構成することができる。このようにして、どのプロセッサがピアツーピアトランザクションを開始したかにかかわらず、各ハードウェアデバイスについての上流ピアツーピアトランザクションすべての宛先アドレスが同じであるため、ピアツーピアトランザクションルーティングは「まさに機能する(just work)」。
[0061]有利には、マルチCPUシステム内に含まれるヘテロジニアスCPUが、チップセット内に含まれる任意の集積ハードウェアデバイス、又は外部バス(たとえば、PCI、PCIeなど)上に取り付けられた任意の周辺ハードウェアデバイスに、CPU、オペレーティングシステム、又はそれらのハードウェアデバイスを修正することなしにアクセスすることができる。本発明の実施形態は、より複雑かつ興味深いコンピューティングシステムを組み上げることを可能にする。たとえば、比較的「弱い」プロセッサを有するシステム・オン・チップは、より高い処理性能をもたらすために高性能CPU及び/又はGPUを含むドッキングシステムに接続されることにより、容易に「アップグレード」することができる。さらに、これらの2つのCPUは、ヘテロジニアスとする、及び/又は異なるベンダ製とすることができ、これは、さらに興味深いマルチCPUコンピュータシステムを組み上げることを可能にする。
[0062]本発明の一実施形態は、コンピュータシステムと共に使用するためのプログラム製品として実施することができる。このプログラム製品の(1つ又は複数の)プログラムは、(本明細書で述べられている方法を含めて)諸実施形態の機能を規定し、様々なコンピュータ可読記憶媒体上に含むことができる。例示的なコンピュータ可読記憶媒体は、それだけには限らないが、(i)情報が永続的に記憶される非書込み可能記憶媒体(たとえば、CD−ROMドライブによって読取り可能なCD−ROMディスク、フラッシュメモリ、ROMチップ、又は任意のタイプのソリッドステート不揮発性半導体メモリ)、及び(ii)変更可能な情報が記憶される書込み可能記憶媒体(たとえば、ディスケットドライブ内のフロッピディスク、又はハードディスクドライブ、又は任意のタイプのソリッドステートランダムアクセス半導体メモリ)を含む。
[0063]以上、本発明について具体的な実施形態を参照して述べた。しかし、添付の特許請求の範囲に述べられている本発明の、より広い精神及び範囲から逸脱することなしに、様々な修正及び変更を本発明に加えることができることを、当業者なら理解するであろう。したがって、前述の説明及び図面は、限定的な意味ではなく例示的な意味で考えるべきである。
100 コンピュータシステム
102A プロセッサ
102B プロセッサ
104A メモリブリッジ
104B メモリブリッジ
106A メモリ
106B メモリ
108 入出力(I/O)管理モジュール
110A〜110N 集積ハードウェアデバイス
112A〜112N 周辺ハードウェアデバイス
114 I/Oコントローラ
116 第1のチップ
118 第2のチップ
120 コンピュータシステム
130 コンピュータシステム
132 第1のチップ
134 第2のチップ
136 第3のチップ
140 コンピュータシステム
142 第1のチップ
144 第2のチップ
146 第3のチップ
302 第1のアドレスマップ
304 第2のアドレスマップ
306 グローバルアドレスマップ
402 第1の構成空間アドレスマップ
404 第2の構成空間アドレスマップ
406 グローバル構成空間マップ

Claims (10)

  1. 処理ユニットからコンピュータシステム内に含まれる1つ又は複数のデバイスに、前記コンピュータシステム内に含まれる他の処理ユニットとの競合を引き起こすことなしに信号をルーティングするためのデバイスコントローラであって、
    1つ又は複数のハードウェアデバイスと、
    入出力(I/O)コントローラと
    を備え、
    前記I/Oコントローラが、
    1のプロセッサがアクセスするように構成されている、第1のハードウェアデバイスに関連付けされた第1のアパーチャを有する第1のセットのハードウェアデバイスについてのメモリマップドI/Oアパーチャを含む第1のアドレスマップを、前記第1のプロセッサから受け取り、
    2のプロセッサがアクセスするように構成されている、第1のハードウェアデバイスに関連付けされた第2のアパーチャを有する第2のセットのハードウェアデバイスについてのメモリマップドI/Oアパーチャを含む第2のアドレスマップを、前記第2のプロセッサから受け取り、
    前記第1のアドレスマップと前記第2のアドレスマップを組み合わせることによって、前記第1のアパーチャ及び前記第2のアパーチャを含むグローバルアドレスマップを生成し、
    前記第1のプロセッサから前記第1のハードウェアデバイスに関連付けされた第1のアクセス要求を受け取り、
    前記第1のプロセッサを前記第1のハードウェアデバイスのオーナとして設定し、
    前記グローバルアドレスマップ内に含まれるアドレスマッピングに基づいて、前記第1のハードウェアデバイスに前記第1のアクセス要求をルーティングするように構成されている、デバイスコントローラ。
  2. 前記I/Oコントローラが、
    前記第1のアクセス要求に関連付けられた第1の宛先アドレスに第1のグローバルアドレス部分を追加することによって第1のグローバル宛先アドレスを生成し、
    前記グローバルアドレスマップに基づいて、前記第1のグローバル宛先アドレスを第1のデバイスアドレスに変換し、
    前記第1のプロセッサを前記第1のハードウェアデバイスのオーナとして設定し、
    前記変換された宛先アドレスから前記グローバルアドレス部分を除去し、
    前記第1のアクセス要求を前記第1のハードウェアデバイスに送信するように構成されている、請求項1に記載のデバイスコントローラ。
  3. 前記第1のグローバルアドレス部分を追加することが、ビットを前記第1のアクセス要求に含まれる前記第1の宛先アドレスの前に付加することを含む、請求項2に記載のデバイスコントローラ。
  4. 前記第1のアクセス要求が前記第1のプロセッサから受け取られたとき、前記ビットがゼロの値を有し、前記第1のアクセス要求が前記第2のプロセッサから受け取られたとき、前記ビットが1ビットの値を有する、請求項3に記載のデバイスコントローラ。
  5. 前記I/Oコントローラが、
    前記第1のハードウェアデバイスからリターントランザクションを受け取り、
    前記第1のプロセッサが前記第1のハードウェアデバイスのオーナであると決定し、
    前記リターントランザクションに関連付けられた第2の宛先アドレスに第2のグローバルアドレス部分を追加することによって第2のグローバル宛先アドレスを生成し、
    前記グローバルアドレスマップを使用して、前記第2のグローバル宛先アドレスを第2のデバイスアドレスに変換し、
    前記グローバルアドレスマップ内に含まれるアドレスマッピングに基づいて、前記リターントランザクションを前記第1のプロセッサにルーティングし、
    前記変換された宛先アドレスから前記第2のグローバルアドレス部分を除去し、
    前記リターントランザクションを前記第1のプロセッサに送信するように構成されている、請求項1に記載のデバイスコントローラ。
  6. 前記グローバルアドレス部分を追加することが、ビットを前記リターントランザクション内に含まれる前記第2の宛先アドレスの前に付加することを含む、請求項5に記載のデバイスコントローラ。
  7. 前記リターントランザクションが、割込み又はデバイス完了メッセージを含む、請求項6に記載のデバイスコントローラ。
  8. 前記第1のプロセッサ及び第2のプロセッサが、異なる命令セット、及び異なるオペレーティングシステムを実行するように構成されている、請求項1に記載のデバイスコントローラ。
  9. コンピュータシステム内に含まれるハードウェアデバイスに対する、プロセッサによるアクセスを、前記コンピュータシステム内に含まれる他のプロセッサとの競合を引き起こすことなしに可能とするための方法であって、
    第1のプロセッサがアクセスするように構成されている、第1のハードウェアデバイスに関連付けされた第1のアパーチャを有する第1のセットのハードウェアデバイスについてのメモリマップド入出力(I/O)アパーチャを含む第1のアドレスマップを、前記第1のプロセッサから受け取るステップと、
    第2のプロセッサがアクセスするように構成されている、第1のハードウェアデバイスに関連付けされた第2のアパーチャを有する第2のセットのハードウェアデバイスについてのメモリマップドI/Oアパーチャを含む第2のアドレスマップを、前記第2のプロセッサから受け取るステップと、
    前記第1のアドレスマップと前記第2のアドレスマップを組み合わせることによって、前記第1のアパーチャ及び前記第2のアパーチャを含むグローバルアドレスマップを生成するステップと、
    前記第1のプロセッサから前記第1のハードウェアデバイスに関連付けされた第1のアクセス要求を受け取るステップと、
    前記第1のプロセッサを前記第1のハードウェアデバイスのオーナとして設定し、
    前記グローバルアドレスマップ内に含まれるアドレスマッピングに基づいて、前記第1のハードウェアデバイスに前記第1のアクセス要求をルーティングするステップと
    を含む方法。
  10. 前記第1のアパーチャ内の第1のグローバル宛先アドレスは、前記第1のハードウェアデバイスの第1のデバイスアドレスへマッピングされており、
    前記第2のアパーチャ内の第1のグローバル宛先アドレスは、前記第1のハードウェアデバイスの第1のデバイスアドレスへマッピングされている請求項9に記載の方法。
JP2009280697A 2008-12-10 2009-12-10 ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移行するためのチップセットサポート Active JP5011584B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/332,009 2008-12-10
US12/332,009 US9032101B1 (en) 2008-12-10 2008-12-10 Chipset support for binding and migrating hardware devices among heterogeneous processing units

Publications (2)

Publication Number Publication Date
JP2010152892A JP2010152892A (ja) 2010-07-08
JP5011584B2 true JP5011584B2 (ja) 2012-08-29

Family

ID=42365850

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009280697A Active JP5011584B2 (ja) 2008-12-10 2009-12-10 ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移行するためのチップセットサポート

Country Status (4)

Country Link
US (1) US9032101B1 (ja)
JP (1) JP5011584B2 (ja)
KR (1) KR101183779B1 (ja)
CN (1) CN101751352B (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9015446B2 (en) * 2008-12-10 2015-04-21 Nvidia Corporation Chipset support for non-uniform memory access among heterogeneous processing units
WO2011155047A1 (ja) * 2010-06-10 2011-12-15 富士通株式会社 マルチコアプロセッサシステム、電力制御方法、および電力制御プログラム
CN104335162B (zh) * 2012-05-09 2018-02-23 英特尔公司 使用多个页表的执行
CN104462010B (zh) * 2013-09-13 2018-08-31 联想(北京)有限公司 一种电子设备及状态控制方法
US9910700B2 (en) * 2015-08-26 2018-03-06 Netapp, Inc. Migration between CPU cores
WO2017101080A1 (zh) * 2015-12-17 2017-06-22 华为技术有限公司 处理写请求的方法、处理器和计算机
US10542120B2 (en) * 2016-11-10 2020-01-21 Microsoft Technology Licensing, Llc Wirelessly providing operating system specific features
FR3080198A1 (fr) * 2018-04-16 2019-10-18 Stmicroelectronics (Rousset) Sas Procede de gestion du routage de transactions entre au moins un equipement source et au moins un equipement cible, par exemple une memoire multiports, et systeme sur puce correspondant
US20210311895A1 (en) * 2020-11-16 2021-10-07 Intel Corporation Disaggregation of computing devices using enhanced retimers with circuit switching

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06187286A (ja) 1992-12-15 1994-07-08 Hitachi Ltd バス変換アダプタ
JP3454294B2 (ja) * 1994-06-20 2003-10-06 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチプル・バス情報処理システム及びブリッジ回路
JPH08305658A (ja) * 1995-05-10 1996-11-22 Hitachi Ltd I/oバス
US5682512A (en) * 1995-06-30 1997-10-28 Intel Corporation Use of deferred bus access for address translation in a shared memory clustered computer system
JPH09128346A (ja) 1995-11-02 1997-05-16 Mitsubishi Electric Corp 階層バスシステム
US5893144A (en) 1995-12-22 1999-04-06 Sun Microsystems, Inc. Hybrid NUMA COMA caching system and methods for selecting between the caching modes
US6438660B1 (en) * 1997-12-09 2002-08-20 Intel Corporation Method and apparatus for collapsing writebacks to a memory for resource efficiency
US6418514B1 (en) 1998-02-17 2002-07-09 Internationl Business Machines Corporation Removal of posted operations from cache operations queue
JP2000029824A (ja) * 1998-07-09 2000-01-28 Hitachi Ltd 階層型バスシステムとバス変換装置
US6275907B1 (en) 1998-11-02 2001-08-14 International Business Machines Corporation Reservation management in a non-uniform memory access (NUMA) data processing system
US6701399B1 (en) 2000-02-29 2004-03-02 Compaq Information Technologies Group Priority mechanism for scheduling isochronous and asynchronous transactions on a shared bus
US6754739B1 (en) 2000-08-31 2004-06-22 Hewlett-Packard Development Company Computer resource management and allocation 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
US7284077B2 (en) 2003-09-12 2007-10-16 International Business Machines Corporation Peripheral interface system having dedicated communication channels
JP4376040B2 (ja) * 2003-11-27 2009-12-02 株式会社日立製作所 複数のプロセッサを用いて情報処理を行う装置及び方法
US7290112B2 (en) 2004-09-30 2007-10-30 International Business Machines Corporation System and method for virtualization of processor resources
JP2009110032A (ja) * 2006-01-16 2009-05-21 Sony Computer Entertainment Inc ブリッジ、情報処理装置、情報処理システムおよびグローバルアドレス管理方法
US7596654B1 (en) 2006-01-26 2009-09-29 Symantec Operating Corporation Virtual machine spanning multiple computers
JP2008009926A (ja) * 2006-06-30 2008-01-17 Toshiba Corp 情報処理装置、情報処理システムおよびアドレス変換方法
US20080162873A1 (en) 2006-12-28 2008-07-03 Zimmer Vincent J Heterogeneous multiprocessing
US7603428B2 (en) 2008-02-05 2009-10-13 Raptor Networks Technology, Inc. Software application striping
CN101216781B (zh) * 2007-12-28 2011-03-23 中国科学院计算技术研究所 一种多处理器系统、装置及方法
US7734900B2 (en) 2008-01-11 2010-06-08 International Business Machines Corporation Computer configuration virtual topology discovery and instruction therefore

Also Published As

Publication number Publication date
KR101183779B1 (ko) 2012-09-17
KR20100067066A (ko) 2010-06-18
CN101751352B (zh) 2012-08-08
JP2010152892A (ja) 2010-07-08
CN101751352A (zh) 2010-06-23
US9032101B1 (en) 2015-05-12

Similar Documents

Publication Publication Date Title
KR101169514B1 (ko) 이종 프로세싱 유닛들 사이의 불균일 메모리 액세스를 위한 칩셋 서포트
JP5011584B2 (ja) ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移行するためのチップセットサポート
US10282192B1 (en) Updating device code through a bus
US7484016B2 (en) Apparatus and method for high performance volatile disk drive memory access using an integrated DMA engine
US9690739B2 (en) Method and apparatus for extending PCIe domain
JP5170782B2 (ja) ヘテロジニアス処理ユニットのための集中デバイス仮想化レイヤ
US8850098B2 (en) Direct memory access (DMA) address translation between peer input/output (I/O) devices
JP4805314B2 (ja) 入出力(i/o)仮想化動作のプロセッサへのオフロード
US9423958B2 (en) System and method for managing expansion read-only memory and management host thereof
TW201120643A (en) Providing hardware support for shared virtual memory between local and remote physical memory
TW202240413A (zh) PCIe裝置及其操作方法
TW202240415A (zh) PCIe裝置及其操作方法
US20080229325A1 (en) Method and apparatus to use unmapped cache for interprocess communication
Markussen et al. Flexible device sharing in pcie clusters using device lending
US9047264B2 (en) Low pin count controller
US20150326684A1 (en) System and method of accessing and controlling a co-processor and/or input/output device via remote direct memory access
Kristiansen et al. Device lending in PCI express networks
KR20230152394A (ko) PCIe 장치 및 이의 동작 방법
JP2008257596A (ja) データプリフェッチデバイス、データプリフェッチ方法およびデータプリフェッチプログラム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110729

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111102

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: 20120508

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: 20120516

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

Free format text: PAYMENT UNTIL: 20150615

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5011584

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250