JP2013539098A - I/oメッセージの影響を受ける1つ又は複数個のパーティション化可能なエンドポイントを決定するデータ処理システム - Google Patents

I/oメッセージの影響を受ける1つ又は複数個のパーティション化可能なエンドポイントを決定するデータ処理システム Download PDF

Info

Publication number
JP2013539098A
JP2013539098A JP2013522219A JP2013522219A JP2013539098A JP 2013539098 A JP2013539098 A JP 2013539098A JP 2013522219 A JP2013522219 A JP 2013522219A JP 2013522219 A JP2013522219 A JP 2013522219A JP 2013539098 A JP2013539098 A JP 2013539098A
Authority
JP
Japan
Prior art keywords
host bridge
entry
data structure
message
address
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.)
Granted
Application number
JP2013522219A
Other languages
English (en)
Other versions
JP5431621B2 (ja
Inventor
サーバー、スティーブン
レイス、エリック、ノーマン
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2013539098A publication Critical patent/JP2013539098A/ja
Application granted granted Critical
Publication of JP5431621B2 publication Critical patent/JP5431621B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/404Coupling between buses using bus bridges with address mapping
    • 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
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0058Bus-related hardware virtualisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Multi Processors (AREA)
  • Bus Control (AREA)

Abstract

【課題】
I/Oメッセージの影響を受ける1つ又は複数個のパーティション化可能なエンドポイントを決定するデータ処理システムを提供する。
【解決手段】
本データ処理システムは、プロセッサ・コアと、要求元識別子(ID)をパーティション化可能なエンドポイント(PE)番号にマップする複数個のエントリを含む第1のデータ構造を有するシステム・メモリと、各々が関連のPE番号を有する複数個のPEであって、複数個のPEの各々は1つ又は複数個の要求元を含み、要求元の各々はそれぞれの要求元IDを有する、複数個のPEと、を含む。
I/Oホスト・ブリッジが、要求元ID及びアドレスを含むI/Oメッセージを受け取ったことに応答して、第1のデータ構造からの第1のエントリを参照することによりPE番号を決定し、PE番号を決定したことに応答して、そのPE番号をインデックスとして利用して第2のデータ構造の第2のエントリをアクセスし、第2のデータ構造におけるアクセスされたエントリを参照することによってアドレスを検証する。I/Oホスト・ブリッジは、アドレスの検証の成功に応答して、I/Oメッセージによって表わされたサービスを提供する。
【選択図】 図6

Description

本発明は、一般的にはデータ処理システムに関し、特に、データ処理システムにおける入出力(I/O)に関する。
データ処理システムは、通信ネットワーク、記憶装置及び/又は記憶装置ネットワーク、並びに周辺機器への接続をサポートするために多数の処理要素及び多数の入出力アダプタ(IOA)を含み得る。そのようなデータ処理システムにおいて、そのデータ処理システムのハードウェア資源は、各々が恐らく多数の異種のオペレーティング・システム・インスタンスのそれぞれ1つによって制御される多数の非交差資源セットに論理的にパーティション化することが可能である。オペレーティング・システムは、仮想マシン・モニタ(VMM)又はハイパーバイザと呼ばれるシステム・ファームウェアの制御の下にそれぞれの論理パーティション(LPAR)においてこの共通ハードウェア・プラットフォーム上で同時に実行される。従って、ハイパーバイザは、データ処理システムの資源の非交差サブセットを各LPARに割り付け、一方、各オペレーティング・システム・インスタンスは、システム・メモリの領域及びIOAのような割り付け可能な資源の個別のセットを直接制御する。
多数のIOAを含む如何なる環境でも、各IOAがそれに割り付けられた資源へのアクセスだけを得ることができるようにIOAを相互分離することが望ましい。IOAを分離することは、データ処理システムの信頼性、可用性、及び保守性を促進し、しかもIOAが、種々の論理的パーティション(LPAR)に個別に割り付けられ、いずれのIOAエラーも、そのIOAが割り付けられる特定のパーティションに分離されるようハードウェア仮想化(又は論理的パーティション化)をサポートする環境においては特に重要である。例えば、ペリフェラル・コンポーネント・インターコネクト(PCI)バスに関して、1つのLPARにおけるIOAがシステム・エラー(SERR)信号を活性化する場合、システムは、何らかの更なる制御に欠けた他のすべてのLPARに対してそのSERR信号を可視的にしなければならない。もちろん、I/OエラーをLPAR境界要件を越えて可視的にすることは、論理的パーティション化の定義及び意図に反する。
PCIエラーに関するパーティション化問題に対処する1つの解決策は、1つのPCIホスト・ブリッジ(PHB)に接続されたすべてのIOAを同じLPARパーティションに割り付けることを必要とすることである。しかし、この制限は、あまり有用でない或いは融通性のないIOAに対する高い資源粒度を必要とする。理想的には、IOAは、そのIOAが接続されるPHBに関係なく種々のLPARに割り付け可能でなければならない。別の解決策は、米国特許第6,643,727号に記述されているようにPHBの外部にある特別に設計されたブリッジ・チップの使用を含むか、或いは米国特許第7,398,427号に記述されているようにPHBの内部にある種々のLPARにおけるIOA間のパーティション化を強化するように更なるロジック及びデータ構造を組込むことを含む。
本明細書の記載からも明らかなように、DMAメッセージ及びI/Oエラー・メッセージのようなルーチン・メッセージを処理する場合に利用されるPHB内のデータ構造のサイズを縮小することが望ましいであろう。
米国特許第6,643,727号 米国特許第7,398,427号
本発明の目的は、I/Oメッセージの影響を受ける1つ又は複数個のパーティション化可能なエンドポイントを決定するデータ処理システムを提供することにある。
本発明の1つの実施態様では、プロセッサ・コアと、要求元識別子(ID)を、パーティション化可能エンドポイント(PE)番号にマップする複数個のエントリを含む第1のデータ構造を有するシステム・メモリと、入出力(I/O)サブシステムとを含むデータ処理システムが提供される。I/Oサブシステムは、各々が関連のPE番号を有する複数個のPEと、少なくとも1つのI/Oホスト・ブリッジとを含む。複数個のPEの各々は1つ又は複数個の要求元を含み、要求元の各々はそれぞれの要求元IDを有する。I/Oホスト・ブリッジは、要求元ID及びアドレスを含むI/Oメッセージを受け取ったことに応答して、第1のデータ構造からの第1のエントリの参照によってPE番号を決定し、そのPE番号を決定したことに応答して、そのPE番号をインデックスとして利用して第2のデータ構造の第2のエントリをアクセスし、第2のデータ構造におけるアクセスされたエントリを参照することによってアドレスを検証する。検証の成功に応答して、I/Oホスト・ブリッジは、I/Oメッセージによって表わされたサービスを提供する。
本発明の第2の実施態様では、少なくとも1つのI/Oホスト・ブリッジと、複数個のパーティション化可能なエンドポイント(PE)とを含む入出力(I/O)サブシステムを有するデータ処理システムにおいてデータを処理する方法が提供される。複数個のPEの各々は関連のPE番号を有し且つ1つ又は複数個の要求元を含む。要求元の各々はそれぞれの要求元識別子(ID)を有する。本方法は、要求元ID及びアドレスを含むI/OメッセージをI/Oホスト・ブリッジにおいて受け取るステップを含む。I/Oメッセージを受け取ったことに応答して、I/Oホスト・ブリッジが、要求元IDをPE番号にマップする複数個のエントリを含む第1のデータ構造からの第1のエントリを参照することによりI/Oメッセージの影響を受けるPEのPE番号を決定するステップと、PE番号を決定したことに応答して、I/Oホスト・ブリッジが、PE番号をインデックスとして利用して第2のデータ構造の第2のエントリをアクセスし、第2のデータ構造におけるアクセスされたエントリを参照することによってアドレスを検証するステップと、アドレスの検証の成功に応答して、I/Oホスト・ブリッジがI/Oメッセージにより表わされたサービスを提供するステップとを含む。
I/Oメッセージはダイレクト・メモリ・アクセス(DMA)要求であってもよく、本方法は、アドレスをシステム・メモリ・アドレスに変換するステップを更に含み得る。望ましくは、I/Oホスト・ブリッジはPCIホスト・ブリッジを含む。更に、望ましくは、本方法は、I/Oホスト・ブリッジが、第1のエントリを参照することによってそのI/Oメッセージの影響を受けるPEのPE番号を決定する前記ステップは、第1のデータ構造からのエントリをバッファするそのI/Oホスト・ブリッジ内のキャッシュにおける第1のエントリをアクセスするステップを含む。更に望ましくは、第1のデータ構造はデータ処理システムのシステム・メモリに常駐し、I/Oホスト・ブリッジが、第1のエントリを参照することによってI/Oメッセージの影響を受けるPEのPE番号を決定する前記ステップは、システム・メモリにおける第1のエントリをアクセスするステップを含む。望ましくは、本方法は、アドレスにおけるインデックスを参照することによってPE番号に関連した第2のデータ構造の多数のエントリの中から第2のエントリを選択するステップを更に含む。
本発明の第3の実施態様では、プロセッサ・コアと、プロセッサ・コアに接続され、要求元識別子(ID)をパーティション化可能なエンドポイント(PE)番号にマップする複数個のエントリを含む第1のデータ構造を有するシステム・メモリと、そのI/Oサブシステムは、複数個のPEと、I/Oホスト・ブリッジとを含むデータ処理システムが提供される。各PEは1つ又は複数個の要求元を含み、その要求元の各々はそれぞれの要求元IDを有する。少なくとも1つのI/Oホスト・ブリッジは、複数個のエントリを含む第2のデータ構造を有し、要求元ID及びアドレスを含むI/Oメッセージを受け取ったことに応答して、第1のデータ構造からの第1のエントリを参照することによってI/Oメッセージの影響を受けるPEのPE番号を決定し、PE番号を決定したことに応答して、そのPE番号をインデックスとして利用して第2のデータ構造の第2のエントリをアクセスし、第2のデータ構造におけるアクセスされたエントリを参照することによってそのアドレスを検証し、アドレスの検証の成功に応答して、そのI/Oメッセージによって表わされたサービスを提供する。
I/Oメッセージは、ダイレクト・メモリ・アクセス(DMA)要求であってもよい。I/Oホスト・ブリッジは、望ましくは、PCIホスト・ブリッジを含む。更に望ましくは、I/Oホスト・ブリッジは、システム・メモリにおける第1のデータ構造からのエントリのキャッシュを含み、そのキャッシュにおける第1のエントリをアクセスすることによってPE番号を決定する。望ましくは、第2のデータ構造は、PE番号に関連した多数のエントリを保持し、I/Oホスト・ブリッジは、アドレスにおけるインデックスを参照することによってPE番号に関連した多数のエントリの中から第2のエントリを選択する。データ処理システムは、望ましくは、プロセッサ・コア及びI/Oホスト・ブリッジを含む集積回路チップを更に含む。
本発明の第4の実施態様では、システム・メモリと、複数個のパーティション化可能なエンドポイント(PE)を含む入出力(I/O)サブシステムとを有するデータ処理システムのためのプロセッサであって、複数個のPEは、関連のPE番号を有し且つ1つ又は複数個の要求元を有する。プロセッサは、プロセッサ・コアと、I/Oホスト・ブリッジとを含み、I/Oホスト・ブリッジは、要求元ID及びアドレスを含むI/Oメッセージを受け取ったことに応答して、要求元IDをPE番号にマップする複数個のエントリを含む第1のデータ構造からの第1のエントリを参照することによってI/Oメッセージの影響を受けるPEのPE番号を決定し、PE番号を決定したことに応答して、PE番号をインデックスとして利用してI/Oホスト・ブリッジにおける第2のデータ構造の第2のエントリをアクセスし、第2のデータ構造におけるアクセスされたエントリを参照することによってアドレスを検証する。I/Oホスト・ブリッジは、アドレスの検証の成功に応答して、I/Oメッセージによって表されたサービスを提供する。
I/Oメッセージは、ダイレクト・メモリ・アクセス(DMA)要求であってもよい。I/Oホスト・ブリッジは、望ましくはPCIホスト・ブリッジを含む。望ましくは、プロセッサは、第1のデータ構造がデータ処理システムのシステム・メモリに常駐し、I/Oホスト・ブリッジがシステム・メモリにおける第1のデータ構造からのエントリのキャッシュを含み、I/Oホスト・ブリッジがそのキャッシュにおける第1のエントリをアクセスすることによってPE番号を決定する、というものである。第2のデータ構造は、望ましくは、PE番号に関連した多数のエントリを保持し、I/Oホスト・ブリッジは、アドレスにおけるインデックスを参照することによってPE番号に関連した多数のエントリの中から第2のエントリを選択する。
本発明の一実施例による例示的なデータ処理システムの高レベルのブロック図である。 多数の同時実行する論理的パーティション(LPAR)にパーティション化されたデータ処理システムのハードウェア及びソフトウェア資源を示すデータ処理システムの論理的ブロック図である。 一実施例によるデータ処理システムにおいてI/O資源の分離を行うI/Oサブシステムのブロック図を示す。 一般的なペリフェラル・コンポーネント・インターコネクト(PCI)ホスト・ブリッジ(PHB)のブロック図である。 図4のPHBにおける変換及び検証テーブル(TVT)の一般的な変換及び検証エントリ(TVE)のブロック図である。 一実施例における改良されたペリフェラル・コンポーネント・インターコネクト(PCI)ホスト・ブリッジ(PHB)のブロック図である。 図6のPHBにおける変換及び検証テーブル(TVT)の改良された変換及び検証エントリ(TVE)のブロック図である。 PHBが一実施例に従ってDMAメッセージを処理する例示的なプロセスの高レベルの論理的フローチャートである。 従来技術による、PEルックアップ・テーブル(PELT)を含む一般的なペリフェラル・コンポーネント・インターコネクト(PCI)ホスト・ブリッジ(PHB)を示すブロック図である。 図9の従来技術のPHBにおけるPELTの一般的なPEルックアップ・エントリ(PELE)を示すブロック図である。 一実施例における一般的なペリフェラル・コンポーネント・インターコネクト(PCI)ホスト・ブリッジ(PHB)のブロック図示す。 図11の改良されたPHBによって利用される改良されたPEルックアップ・エントリ(PELE)を示すブロック図である。 一実施例に従ってPHBがI/Oエラー・メッセージを処理する例示的なプロセスの高レベルの論理的フローチャートである。
次に、図面、特に図1を参照すると、1つの実施例に従って例示的なデータ処理システム100の高レベルのブロック図が示される。或る実施例では、データ処理システム100は、例えば、複数個のプロセッサ102a〜102nを含む対称マルチプロセッサ(SMP)システムであってもよい。各プロセッサは、1つ又は複数個のバス接続回線又は交換回線通信リンクを含み得るシステム・ファブリック104に通信のために結合される。例えば、データ処理システム100は、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションの製品ラインである IBM eServer(商標) において具現化することが可能である。別の実施例では、単一のプロセッサ102を備えたデータ処理システムを利用することも可能である。
図示の実施例では、各プロセッサ102は、望ましくは、その分野で知られているように半導体回路を形成する基板を備えた単一の集積回路チップとして実現される。図示のように、プロセッサ102は、例えば、ソフトウェア及び/又はファームウェア、並びに関連データがある場合にはその関連データも含み得るプログラム・コードの実行及び/又は処理を通してデータを処理する複数個のプロセッサ・コアを含む。更に、プロセッサ102は、低レベルのデータ記憶階層から検索された命令及びデータのための1つ又は複数のレベルの比較的少ない待ち時間の一時的記憶装置を提供するキャッシュ・メモリ112を含む。更に、プロセッサ102は、オフチップ・システム・メモリ116のうちの関連するものへのアクセスを制御する、集積メモリ・コントローラ(IMC)114を含む。
各プロセッサ102は、更に、種々の入出力アダプタ(IOA)130との入出力コミュニケーションをサポートする、1つまたは複数個(望ましくは多数)のホスト・ブリッジ120と、プロセッサ102がシステム・ファブリック104とコミュニケーションを行うために使用されるファブリック・インターフェース(FIF)118とを含む。図示の実施例では、ホスト・ブリッジはすべてペリフェラル・コンポーネント・インターコネクト(PCI)ホスト・ブリッジ(PHB)120として具現化されるが、別の実施例では、ホスト・ブリッジは1つ又は複数個の追加又は代替I/Oバス標準で具現化し得る。
PHB120a、120k、120m、及び120vは、それぞれPCIローカル・バス122a、122k、122m、及び122vに対するインターフェースを提供し、それらのPCIローカル・バスに、ネットワーク・アダプタ、記憶装置コントローラ、周辺装置アダプタ等のようなどのIOA130が直接に又は間接的に連結されてもよい。例えば、PCI・IOA130aは、1つ又は複数個のスイッチ及び/又はブリッジを含み得るI/Oファブリック124aを介してPCIローカル・バス122aに任意選択的に結合される。同様に、PCI・IOA130k及び130lは、I/Oファブリック124kを介してPCIローカル・バス122kに任意選択的に結合され、PCI・IOA130mは、I/Oファブリック124mを介してPCIローカル・バス122mに任意選択的に結合され、例えば、ディスプレイ・アダプタ及びハード・ディスク・アダプタを含み得るPCI・IOA130v及び130wは、I/Oファブリック124vを介してPCIローカル・バス122vに任意選択的に結合される。
データ処理システム100は、そのデータ処理システム100のブート・プロセスを管理し、しかる後、そのデータ処理システム100のパフォーマンス及び検知されたエラー状態をモニタ及びレポートするサービス・プロセッサ140を更に含む。サービス・プロセッサ140はシステム・ファブリック104に接続され、ローカル・メモリ142によってサポートされる。ローカル・メモリ142は、揮発性メモリ(例えば、ダイナミック・ランダム・アクセス・メモリ(DRAM))及び不揮発性メモリ(例えば、不揮発性ランダム・アクセス・メモリ(NVRAM)又はスタティック・ランダム・アクセス・メモリ(SRAM))を含み得る。サービス・プロセッサ140は、更に、メールボックス・インターフェース144に結合され、サービス・プロセッサ140がインターフェース144を介してPCIバス122aとのI/Oオペレーションを伝達する。
データ処理システムのアーキテクチャ及びコンポーネントが実施例の間で変わり得るということは、当業者には明らかであろう。例えば、他の装置又は相互接続体を代替的に又は付加的に使用することも可能である。従って、図1に示された例示的なデータ処理システム100は、「特許請求の範囲」に記載された発明に関してアーキテクチャ上の限定を意味するものではない。
次に図2を参照すると、複数個の論理的パーティション(LPAR)にパーティション化されたデータ処理システム200のハードウェア及びソフトウェア資源を示すデータ処理システムの論理的ブロック図を示す。データ処理システム200は、例えば、図1におけるデータ処理システム100と同じコンポーネント及び/又はアーキテクチャを持ち得るし、従って共通のコンポーネントを同じ参照番号でもって識別する。
データ処理システム200は、プロセッサ102a〜102n、システム・メモリ116a〜116n、及びIOA130a〜130wを含むパーティション化されたハードウェア202の集合体を有する。パーティション化されたハードウェア202は、もちろん更なる揮発性又は不揮発性記憶装置、ポート、ブリッジ、スイッチ等のような更なる図示されてないコンポーネントを含み得る。パーティション化されたハードウェア202(又はそれの一部分)を含むハードウェア・コンポーネントは、仮想マシン・モニタ(VMM)又はハイパーバイザとも呼ばれるシステム・ファームウェア204によってデータ処理システム200における種々の論理的パーティション(LPAR)210a〜210pに割り付け可能である。システム・ファームウェア204は、データ処理システム200のパーティション化されたハードウェアを仮想化することによって、多数の独立したオペレーティング・システム・インスタンスの同時実行をサポートする。
システム・ファームウェア204によって割り付けられたハードウェア資源に加えて、LPAR210a〜210pの各々は、多数の同時実行されるオペレーティング・システム・インスタンス212a〜212pのそれぞれの1つを含む。種々の実施例において、例えば、Linux(商標) 、AIX(商標)、及び/又はWindows(商標) のインスタンスを含み得るオペレ〜ティング・システム・インスタンス212a〜212pは同種又は異種のものであってもよい。更に、各LPAR210は、例えば、初期のブート・ストラップ・コード、IEEE−1275スタンダード・オープン・ファームウェア、及びランタイム・アブストラクション・ソフトウェア(RTAS)の組み合わせを用いて具現化することができるパーティション・ファームウェア214のそれぞれのインスタンスと図示されてないアプリケーション・プログラムを含み得る。LPAR210a〜210pがインスタンス化されるとき、ブート・ストラップ・コードのコピーが、システム・ファームウェア204によってパーティション210a〜210p上にロードされる。しかる後、システム・ファームウェア204は制御をブート・ストラップ・コードに移す。一方、ブート・ストラップ・コードはオープン・ファームウェア及びRTASをロードする。次に、各LPAR210に割り付けられたプロセッサ102は、LPAR210を立ち上げてOSインスタンス212の実行を開始させるためにそのLPAR210のパーティション・ファームウェア214を実行する。
図2に示された論理的にパーティション化された環境では、サービス・プロセッサ140は、LPAR210a〜210pにおけるエラーの処理のような様々なサービスを提供するために使用することが可能である。これらのサービスは、データ処理システム200のシステム管理者又はベンダーにエラーを報告するサービス・エージェントとしても機能し得る。種々のLPAR210のオペレーションは、更に、ハードェア管理コンソール220を介して制御することが可能である。少なくとも1つの実施例では、ハードェア管理コンソール220は、システム管理者が、LPAR210を作成及び破壊すること並びにLPAR210間でハードェア及びソフトウェア資源を再割り付けすることを含むデータ処理システム200内の様々な機能を遂行し得る独立したデータ処理システムとして具現化することも可能である。
図2に示されたような論理的にパーティション化された環境では、1つのLPAR210におけるハードェア又はソフトウェア資源が別のLPAR210の資源を使うこと或いは別のLPAR210におけるオペレーションに影響を与えることは許されない。更に、有用であるためには、LPAR210への資源の割り付けはきめ細かいことが必要である。例えば、特定のPHB120の下にあるすべてのIOA130を同じパーティションに割り付けることは、それがパーティション間に動的に再割り付けされた資源に対する能力を含むそのシステムの注文仕様生産(configurability)を制限するので、多くの場合受容できない。従って、PHB120は、個々のIOA130(又は、それの一部分)のような資源を種々のLPAR210に割り付けることができるが、その割り付けられた資源が他のLPAR210の資源をアクセスすること又はそれに影響を与えることは阻止される。
種々のLPAR210の資源間のそのような分離をサポートするために、データ処理システムのI/Oサブシステムは多数のパーティション化可能なエンドポイントに細分される。「パーティション化可能なエンドポイント」即ち「PE」は、本明細書では、I/Oサブシステムの任意のコンポーネント又はサブコンポーネントのLPARとは無関係に割り付けることが可能なI/Oサブシステムの任意のコンポーネント又はサブコンポーネントとして定義される。例えば、或るPEは、共に機能する複数個のIOA及び/又はI/Oファブリックを含み、従って、単一のLPARに1つのユニットとして割り付けられなけばならない。しかし、別のPEは、単一のIOAの一部分、例えば、マルチポートIOAの別々に構成可能な及び別々に割り付け可能なポートを含み得る。一般に、PEはそれの構造によってではなくその機能によって識別されるであろう。
次に図3を参照すると、図1のデータ処理システム100のような論理的にパーティション化されたデータ処理システムのI/Oサブシステム300の少なくとも一部分のブロック図が示される。そのブロック図は、1つの実施例に従ってLPAR210相互間の資源分離を示す。
図示の実施例では、I/Oサブシステム300は、I/Oファブリック124を介して複数個のIOA302a〜302gに接続されたPHB120を含む。一方、I/Oファブリック124は、スイッチ310a、310b、PCIエクスプレス(PCI−E)バス320、322、324、及び326、PCIブリッジ312a及び312b、第2のバス340、342、344、及び346を含む。
更に図3に示されるように、システム・ファームェア204(図2)は、データ処理システムのLPAR210のうちのいずれにも無関係にそれぞれ割り付け可能な複数個のPE350a〜350dを形成するようにI/Oサブシステム300の種々のコンポーネントをグループ化する。所与の例では、PE350a及びPE350cの各々は単一のIOA、即ち、IOA302a、302dを含む。対照的に、PE350bは、同じLPAR 210に割り付けられなければならない2つのIOA302b及び302cを含み、PE 350dは、PEとして共に機能し、従って同じLPAR210に割り付けられなければならない3つのIOA302e、302f、及び302g、並びにPCIブリッジ312bを含む。前述のように、別の実施例では、PEはIOAの一部分だけ(例えば、1つ又は複数個のポート)を含み得る。
I/Oサブシステム300において、本明細書ではパーティション化可能なエンドポイント状態と呼ばれる各PEのそれぞれの状態が、関連するPHB120において維持される。従って、例えば、I/Oサブシステム300のPHB120はパーティション化可能なエンドポイント状態レジスタ360a〜360dを含み、それらのレジスタはそれぞれPE 350a〜350dに対応し、それらの状態を表わす。
システム・ファームウェア204は、各PEに、それのコンポーネントをそのPEに関連付ける1つ又は複数個の領域番号(即ち、要求元ID(RID))を割り付ける。1つの実施例では、各PEに割り付けられた領域番号は、そのPEにおけるI/Oコンポーネントの相互間を区別するためにも使用し得る複数個のフィールドを含む。例えば、これらのフィールドは次のものを含み得る。
・ バス番号(Bus)フィールド:一意的なバス番号を有するPHBに属する各バスを、I/O資源間の最高レベルの区域に与える。
・ デバイス番号(Dev)フィールド:異なるデバイス番号を有する所与のバス上の各IOAを、I/O資源間の中間レベルの区域に与える。
・ 機能番号(Func)フィールド:異なる機能番号を有するIOAの各個別の機能を、I/O資源間の最低レベルの区域に与える。
明らかなように、領域番号(即ち、RID)は、最低レベルのI/O機能に至るまでI/O資源の区分けをサポートする。例えば、領域番号は、多数の機能IOAのうちの個別の機能が区別されることを可能にする。そのような微妙な細分性を必要としないデータ処理システムでは、領域番号は、同じPHBに接続されたPE間の区別を可能にするバス・フィールド単独によって、或いは1つのPEのIOA間の区別又は多数の機能IOAを含む1つのPE内のIOAの機能間の区別を可能にするためにDevフィールド又はFuncフィールドと共にバス・フィールドによって定義することを可能にする。バス、バス/Devフィールド、又はバス/Dev/Funcフィールドから成る領域番号スペースの希薄さは、多くの場合、これらのフィールドによって定義された領域番号スペースを、PHB120による内部用途にとっては余り希薄でないものまで圧縮することを望ましくする。
図3のPHB120に含まれた分離機能の中には、PEエラー領域を分離する能力がある。論理的にパーティション化されたデータ処理システムでは、種々のPEを種々のLPARに割り付けることが可能である。従って、PHB120は、1つのPEにおいて生じるエラーが、そのPEに割り付けられる特定のLPARに分離されることを可能にする。更に詳しく云えば、各PHB120は、エラー(停止状態と呼ばれる)が検知されたとき、PEからの及びPEへのI/Oオペレーションを停止する機能を含んでいる。I/Oオペレーションの停止は、望ましくは、次のような方法で達成される。
1.PEは、下記のように、即ち、
a.PEがいずれのLPARにもエラーを伝播しないように、及び
b.I/Oオペレーションの要求元が誤りのあるデータを使用しないように、
エラーでI/Oオペレーションを終了することを防ぐ。
2.オペレーションの停止は、デバイス・ドライバにはちょうどそのデバイス・ドライバまで分離されているように見えなければならない。
3.1つのPEのためのソフトウェア(デバイス・ドライバ・レベルにおけるもの、又はそれ以上のもの)は、別のPEを停止状態に入らせ得るエラーを導入しない。
4.問題決定に関する誤り情報は、停止状態が生じた後に捕捉される。
5.PEのうちのいずれか又はすべてが停止状態にあるとき、ファームェアは、PHBより下の構成空間をアクセスし得る。
これらの基準に従ってエラー処理を達成するために、各PHBは、望ましくは、I/O構成オペレーションのために特定のエラー領域を識別する分離機能を提供する。好ましい実施例では、構成オペレーション・エラー領域機能は、システム・ファームェアによってセットすることができる構成PE番号フィールドをPHBのレジスタにおいて具現化することによって可能になる。更に、好ましい実施例では、各PHBは、I/Oメッセージの影響を受ける1つ又は複数個のPE番号を決定し、それらのPEの制御に特化したソフトウェアのみにそのI/Oメッセージを送る。
効果的な分離機能を提供することに加えて、特にPHBが一般的な集積回路チップ内にプロセッサと共に統合される実施例では、DMAメッセージ及びI/Oエラー・メッセージのようなルーチン・メッセージ、を処理する場合に利用されるPHB内のデータ構造のサイズを縮小することも望ましい。従って、以下で更に述べるように、PHB内に具現化されるデータ構造の設置面積は、DMA及びI/Oエラー・メッセージのようなI/Oメッセージの影響を受けるPEの決定の改良によって縮小することができる。
次に図4を参照すると、前記米国特許第7,398,427号に開示されるように、プロセッサから分離した集積回路チップにおいて具現化される従来のPHB400が示される。PHB400は、変換及び検証テーブル(TVT)402と呼ばれるワイド・データ構造を含む。TVT402は、複数個の変換及び検証エントリ(TVE)404を含む。図5に示されるように、従来の各TVE404は、要求元ID(RID)及びそのRIDを検証するための制御情報を指定するRID及びRID検証制御フィールド430と、そのRIDに関連するPEを表わすPE#フィールド432と、変換制御エントリ(TCE)テーブル・サイズ・フィールド434と、I/Oページ・サイズ・フィールド436と、指定されたPEのためのTCEテーブルのベース・アドレスを表わすTCEテーブル開始アドレス・フィールド438と、を含む多数のフィールドを含む。
PHB400(図4)は、ダイレクト・メモリ・アクセス(DMA)要求のRIDを検証し、TVT402を参照することによってRIDを特定のPEに変換する。図示のように、PHB400は、RID410(バス番号、デバイス番号、及び機能番号を含む)及びDMAアドレス412を含む、ダイレクト・メモリ・アクセス(DMA)パケットを受け取る。DMAアドレス412における数ビットは、アクセスのために特定のTVE404を選択するTVT402へのTVEインデックス(TVEI)414を形成する。一旦TVE404が選択されると、PE#フィールド432の内容が、PEの現状を決定するために読み出される。更に、RID及びRID検証制御フィールド430の内容が、ブロック420に示されるような到来するRID410と比較される。RID410がフィールド430において指定されたRIDと一致しない場合、PHB400は、要求されたDMAオペレーションが遂行されることを許容しない。ブロック422に示されるように、PHB400は更にDMAアドレス412の下位桁nビット(2は、選択されたTVE404のI/Oページ・サイズ・フィールド436によって指定されたI/Oページ・サイズである)を切り捨て、TVEI414より低い残りのDMAアドレス・ビットを、その選択されたTVE404のTCEテーブル・サイズ・フィールド434と比較する。DMAアドレス412が関連のTCEテーブルの端部の外のアドレスを指定する場合、PHB400はDMAオペレーションを許容しない。一方、ブロック420及び422に示された検証が成功する場合、PHB400は、TCE開始アドレス・フィールド438の内容によって指示される、そのPEのためのメモリ内TCEテーブルに含まれたDMAアドレスから実アドレスへの変換を利用してその要求されたDMAオペレーションを行なう。
図4及び図5に示された従来のTVE404は多数のマルチ・ビット・フィールドを含み、従って、従来のTVT402はかなりのダイ・エリアを必要とする大きなデータ構造である。更に、各PEは、それ自身のアプリケーションのためのDMAアドレス412のTVEIフィールド414を使用せず、それは、DMAアドレス空間が種々のPEのための異なる非連続空間に区分けされることを意味する。
次に、図6を参照すると、一実施例に従って改善されたPHB120の更に詳細なブロック図が示される。一般に、PHB120のダイ・エリアを縮小することが望ましく、特に、図1に示されるようにPHB120がプロセッサ102の集積回路チップ内に統合される好ましい実施例ではPHB120のダイ・エリアを縮小することが望ましい。PHB120のダイ・エリアの縮小に寄与する1つの要因は、IOA 130、I/Oブリッジ312、及びスイッチ310のような様々なI/Oコンポーネントから受け取られたDMA及びI/Oエラー・メッセージを検証及び変換するために利用されるPHB120内のデータ構造のサイズの縮小である。詳しく云えば、以下で更に詳述されるように、従来の各TVE404において既にわかっている16ビットのRIDフィールド及びPE#フィールドは排除され得るし、それはTVEの幅の著しい縮小並びにTVT及びPHB120のフットプリント全体の付随的縮小をもたらす。
図6に示された構成では、例えば、LPAR210間のI/O資源の割り付けに基づいてシステム・ファームェア204により追加及び維持することが可能なRID変換テーブル(RTT)500が、複数個のRID変換エントリ(RTE)502を含む。各RTE502は、一般的な16ビットPCI−RID410のようなそれぞれのRIDをPEに関連付ける。RTT500は、PHB120において、或いは、更に望ましくは、システム・メモリ116のようなオフ・チップ記憶ロケーションにおいて、具現化することが可能である。RTT500がオフ・チップで具現化される実施例では、PHB120は、極最近アクセスされたRTE502のコピーへの低遅延アクセスを行なうために小型のオン・チップRID変換キャッシュ(RTC)504を任意選択的に含み得る。
図6は、PHB120が、複数個のTVE512を含む最新式のTVT510を有するものを示す。図7に示されるように、各TVE512は、DMAの元になるPEのための変換制御エントリ(TCE)テーブル560のテーブル・サイズを表わすTCEテーブル・サイズ・フィールド534と、I/Oページ・サイズ・フィールド536と、ソースPEに対するイン・メモリTCEテーブル560のベース・アドレスを表わすTCEテーブル開始アドレス・フィールド538とを含む少数のビット・フィールドを含む。TVE512が一般的なフィールド430及び432に対応するフィールドを欠いており、その結果TVT510においてかなりのサイズ縮小を生じるということは、図5に比較すれば明らかである。
次に、DMA要求をサービスする場合のPHB120のオペレーションを、図6及び図7並びに、図8に示される高レベルの論理的フローチャートを更に参照して説明する。そのプロセスはブロック600で始まり、次に、ブロック602に進む。ブロック602は、PHB120が、それが結合されるI/Oコンポーネントの1つから、一般的なRID410及びDMAアドレス540を含むダイレクト・メモリ・アクセス(DMA)オペレーションを受け取ることを示す。PHB120は、RTC504(それが存在する場合)から又はRTT500から、特定のRTE502をアクセスするためにDMAオペレーションのRID410を利用する(ブロック604)。そのアクセスされたRTE502が1つのPEを指定し、PHB120がそのPEの現在の状態をアクセスする。PHB120は、TVT510をアクセスするために、そのアクセスされたRTE502によって指定されたPE#を利用する(ブロック606)。各PEが単一の関連するTVE512を有する実施例では、PE#はTVT510に直接インデックス付けする。各PEが(例えば、少なくともいくつかのPEに対して多数のI/Oページ・サイズを可能にするために)1つ又は複数個のTVE512を有し得る別の実施例では、PHB120は、DMAアドレス540からの1つ又は複数個のPEインデックス(PEI)ビット514を利用してその選択されたPEに関連した多数のTVE512の間を選択する。PEI514の使用は図4のTVEI414のように、異なるPE間のDMAアドレス空間を切り分けず、選択されたPEのアドレス空間内のDMAアドレス空間を単に分割し、従って、DMAアドレス空間全体を各PEにとって利用可能にする。
図8のプロセスは、ブロック606に続いてブロック608に進む。ブロック608は、PHB120におけるDMAアドレス検証ロジック550を示す。そのロジックは、DMAアドレス540の下位桁nビットを切り捨て(この場合、2は、選択されたTVE512のI/Oページ・サイズ・フィールド536によって指定されたI/Oページ・サイズである)、残りの上位桁DMAアドレス・ビットをその選択されたTVE512のTCEテーブル・サイズ・フィールド534の内容と比較する。ブロック610に示されるように、DMAアドレス540が関連のTCEテーブル560の端部を越えたアドレスを指定する場合、検証は失敗し、PHBは、プロセスがブロック616において終了することによって示されるようにDMAオペレーションを許容しない。一方、ブロック610における肯定的な決定によって示されるように、DMAアドレス540が検証に合格する場合、PHB120はDMAアドレス540をシステム・メモリ116における実アドレスに変換する(ブロック612)。1つの実施例では、PHB120は、選択されたTVE512のTCEテーブル開始アドレス・フィールド538の内容と、PEI514及びn個の下位桁アドレス・ビットの間のDMAの中間桁ビットとを結合することによって形成されたアドレスによって指示された特定のTCEを利用して、イン・メモリTCEテーブル560を参照することによりアドレス変換を行う。しかる後、PHB120は、要求されたDMAオペレーションの遂行を起動するために、アドレス変換によって得られたシステム・メモリ・アドレス(例えば、実アドレス)を使用して、ターゲット・システム・メモリ116のIMC114にそのDMAオペレーションを送る(ブロック614)。しかる後、図8に示されたプロセスは、ブロック616において終了する。
図9、図10、図11、図12、及び図13を参照して更に後述するように、PHB120におけるデータ構造のサイズを最小化しながらPE相互間の分離を行うための同様の技法が、I/Oエラー・メッセージの分離にも適用可能である。
先ず図9を参照すると、従来技術でI/O(例えば、PCIe)エラー・メッセージを処理する場合に利用されるデータ構造を示す図4の一般的なPHB400に関する別の見解が示される。図示のように、前述のデータ構造に加えて、PHB400は、PEルックアップ・テーブル(PELT)700と呼ばれる幅広いデータ構造を有する。高価な連想メモリ(CAM)において具現化されるPELT700は、複数個のPEルックアップ・エントリ(PELE)702を含む。図10に示されるように、一般的な各PELE702は、要求元ID(RID)及びそのRIDを検証するための制御情報を指定するRID及びRID検証制御フィールド710と、どの制御PE番号がI/Oエラーの影響を受けるかをセット・ビット(例えば、1)によって表わすPEルックアップ・ベクトル(PELV)フィールド712と、を含む。
従来技術では、PHB400は、PCIeエラー・メッセージ704及びどのI/OコンポーネントがPCIeエラー・メッセージ704のソースであるかを識別するRID410を一緒に受け取る。それに応答して、PHB400は、RID410を利用してPELT700へのアクセスを行ない、そのRIDとRID検証制御フィールド710内の一致RIDを含む一致PELE702を識別する。しかる後、PHB400は、一致PELE702のPELVフィールド712によって指定された各PEに対するPCIeエラー・メッセージを処理する。
次に図11を参照すると、1つの実施例に従って、改善されたPHB120の詳細な図が示される。上述したように、特に、図1に示されるようにPHB120がプロセッサ102内に統合される好ましい実施例では、PHB120のダイ・エリアを縮小することが望ましい。PHB120のダイ・エリアの縮小に寄与する1つの要因は、一般的な各PELE702において見られるRIDフィールドの除去であり、それはPELEの幅の著しい減少、及びPHB120の全体的なフットプリントの付随的縮小に通じる。更に、一般的なPELT700を具現化するために利用されたような高価なCAMの利用を減少又は排除することが望ましい。
従って、図11に示された構成では、システム・メモリ116において好適に具現化されるRTT500は、一般的な16ビットのPCI−RID410のようなPHB120によって受け取られ得る可能な各RIDをPEに関連付けるために再び利用される。前述したように、RTT500がオフ・チップで具現化される実施例においてアクセス待ち時間を縮小するために、PHB120は、極最近アクセスされたRTE502のコピーに少ない待ち時間アクセスを行うために、小型のオンチップRTC504を任意選択的に含み得る。
更に、図11は、望ましくは低価格の非CAM技術(例えば、DRAM)を用いて具現化されるシステム・メモリ116が、望ましくは、複数個のPELE802を含む簡素化されたPELT510を具現化するということを示す。図12に示されるように、各PELE802は、各々が複数個のPE番号のそれぞれ1つに対応する複数個のビットを有するPELV804を含む。上述したように、PELV804は、所与のRIDで生じたエラーを処理しなければならないPEを、1つ又は複数個のセット・ビット(例えば、1)によって識別する。例えば、エラーが、多数のPEに結合されたI/Oコンポーネント(例えば、スイッチ310)或いは単一のデバイスに関連した多数の機能(例えば、IOA 130の多数のポート)に関連した場合、多数のPEがそのエラーに関与することがある。PELE802が一般的なフィールド710に対応するフィールドを欠き、その結果、PELT800においてかなりのサイズ縮小を生じることに留意すべきである。
I/Oエラー・メッセージを処理する場合のPHB120のオペレーションが、図13に示された高レベルの論理的フローチャートを更に参照して説明される。I/Oエラー・メッセージ処理プロセスがブロック900で始まり、ブロック902に進む。ブロック902は、PHB120が、エラー・メッセージ704及びそのI/Oエラー・メッセージのソースを識別するRID410を含むI/Oエラー・メッセージ・パケットを受け取るということを表わす。PHB120は、RTC504(それが存在する場合)又はRTT500から特定のRTE502をアクセスするためにI/Oエラー・パケットのRID410を利用する(ブロック904)。アクセスされたRTE502は、PHB120がPELT800をアクセスするためにダイレクト・インデックスとして利用するPE#を指定する(ブロック906)。PELT800へのダイレクト・インデックスが利用可能であるので、高価なCAMにおいてPELT800を具現化することが必要ないことに留意すべきである。
次に、ブロック908において、PHB120は、PELT800における選択されたPELE802のPELVフィールド804においてどのビットがセットされているかを調べることによって、どのPEがI/Oエラーの影響を受けるかを決定する。影響を受けるPEを決定したことに応答して、PHB120におけるI/Oエラー処理ロジック810は、影響を受けるPE関するエラーを処理する責任のあるエラー処理ソフトウェアのみ(例えば、1つ又は複数のOS212のデバイス・ドライバ・ソフトウェア)に、必要に応じてI/Oエラーを信号する(ブロック910)。しかる後、エラー処理プロセスはブロック912において終了する。
上述したように、或る実施例では、データ処理システムは、プロセッサ・コア、システム・メモリ、及び入出力(I/O)サブシステムを含む。システム・メモリは、要求元識別子(ID)をパーティション化可能なエンドポイント(PE)番号にマップする複数個のエントリを含む。I/Oサブシステムは、各々が関連のPE番号を有する複数個のPEを含み、その複数個のPEの各々は、各々がそれぞれの要求元IDを有する1つ又は複数の要求元を含む。I/Oホスト・ブリッジが、要求元ID及びアドレスを含むI/Oメッセージを受け取ったことに応答して、第1のデータ構造からの第1のエントリを参照することによりPE番号を決定し、PE番号の決定に応答して、そのPE番号をインデックスとして利用して第2のデータ構造の第2のエントリをアクセスし、第2のデータ構造におけるそのアクセスされたエントリを参照することによりそのアドレスを検証する。I/Oホスト・ブリッジは、検証の成功に応答して、I/Oメッセージにより表わされたサービスを提供する。
上記の説明は、例証と詳述とを目的に示され、網羅的であること又は開示された構造及びプロセスに限定されることを意図するものではない。多くの修正及び変更が当業者には明らかであろう。本発明の動作原理及び実用的応用例の最善の説明のために、及び当業者が、意図された特定の用途に適した何らかの修正を施す場合に種々の実施例における開示された技術を理解及び応用することを可能ならしめるために、様々な実施例が選択され、記述された。
1つ又は複数個の好ましい実施例に関して説明したように本発明を詳細に示したが、本発明の趣旨及び技術的範囲から逸脱することなく、実施形態及び詳細における種々の変更を行い得ることは当業者には明らかであろう。例えば、本発明は完全に機能するデータ処理システムとの関連で説明されているが、本発明のプロセスが、プログラム・コードを記憶したコンピュータ可読記憶媒体を含むコンピュータ・プログラム製品の形で流通し得るということは当業者には明らかであろう。コンピュータ可読記憶媒体の例は、ハード・ディスク・ドライブ、RAM又は他の揮発性メモリ、不揮発性メモリ、及び光学的記憶媒体を含む。
本願は、次のような同じ出願人により同時出願された未決の米国特許出願、即ち、米国特許出願12/849,925号、同12/849,980号、同12/850,008号、及び同12/850,040号を関連出願とするものである。

Claims (18)

  1. 少なくとも1つのI/Oホスト・ブリッジと、複数個のパーティション化可能なエンドポイント(PE)とを含み、前記PEの各々は関連のPE番号を有し、前記PEの各々は1つ又は複数個の要求元を含み、前記要求元の各々はそれぞれの要求元識別子(ID)を有する、データ処理システムにおいてデータを処理する方法であって、
    要求元ID及びアドレスを含むI/OメッセージをI/Oホスト・ブリッジにおいて受け取るステップと、
    前記I/Oメッセージを受け取ったことに応答して、前記I/Oホスト・ブリッジが、PE番号に要求元IDをマップする複数個のエントリを含む第1のデータ構造からの第1のエントリを参照することによって前記I/Oメッセージの影響を受けるPEのPE番号を決定するステップと、
    前記PE番号を決定したことに応答して、前記I/Oホスト・ブリッジが、前記PE番号をインデックスとして利用して第2のデータ構造の第2のエントリをアクセスし、第2のデータ構造におけるアクセスされたエントリを参照することによって前記アドレスを検証するステップと、
    前記アドレスの検証の成功に応答して、前記I/Oホスト・ブリッジが前記I/Oメッセージにより表わされたサービスを提供するステップと、
    を含む、方法。
  2. 前記I/Oメッセージはダイレクト・メモリ・アクセス(DMA)要求であり、
    前記アドレスをシステム・メモリ・アドレスに変換するステップを更に含む、請求項1に記載の方法。
  3. 前記I/Oホスト・ブリッジはPCIホスト・ブリッジを含む、請求項1に記載の方法。
  4. 前記I/Oホスト・ブリッジが、第1のエントリを参照することによって前記I/Oメッセージの影響を受けるPEのPE番号を決定する前記ステップは、前記第1のデータ構造からのエントリをバッファする前記I/Oホスト・ブリッジ内のキャッシュにおける第1のエントリをアクセスするステップを含む、請求項1に記載の方法。
  5. 前記第1のデータ構造は、前記データ処理システムのシステム・メモリに常駐し、
    前記I/Oホスト・ブリッジが、第1のエントリを参照することによって前記I/Oメッセージの影響を受けるPEのPE番号を決定する前記ステップは、前記システム・メモリにおける第1のエントリをアクセスするステップを含む、請求項1に記載の方法。
  6. 前記アドレスにおけるインデックスを参照することによって前記PE番号に関連した前記第2のデータ構造の多数のエントリの中から前記第2のエントリを選択するステップを更に含む、請求項1に記載の方法。
  7. プロセッサ・コアと、
    前記プロセッサ・コアに接続され、要求元識別子(ID)をパーティション化可能なエンドポイント(PE)番号にマップする複数個のエントリを含む第1のデータ構造を有するシステム・メモリと、
    前記プロセッサ・コアに接続された入出力(I/O)サブシステムと、
    を含み、
    前記I/Oサブシステムは、
    各々が関連のPE番号を有する複数個のPEであって、前記複数個のPEの各々は1つ又は複数個の要求元を含み、前記要求元の各々はそれぞれの要求元IDを有する、複数個のPEと、
    複数個のエントリを含む第2のデータ構造を有する少なくとも1つのI/Oホスト・ブリッジであって、要求元ID及びアドレスを含むI/Oメッセージを受け取ったことに応答して、前記第1のデータ構造からの第1のエントリを参照することによって前記I/Oメッセージの影響を受けるPEのPE番号を決定し、前記PE番号を決定したことに応答して、前記PE番号をインデックスとして利用して前記第2のデータ構造の第2のエントリをアクセスし、前記第2のデータ構造におけるアクセスされたエントリを参照することによって前記アドレスを検証し、前記アドレスの検証の成功に応答して、前記I/Oメッセージによって表わされたサービスを提供する、I/Oホスト・ブリッジと、
    を含む、データ処理システム。
  8. 前記I/Oメッセージはダイレクト・メモリ・アクセス(DMA)要求である、請求項7に記載のデータ処理システム。
  9. 前記I/Oホスト・ブリッジは、PCIホスト・ブリッジを含む、請求項7に記載のデータ処理システム。
  10. 前記I/Oホスト・ブリッジは、システム・メモリにおける第1のデータ構造からのエントリのキャッシュを含み、
    前記I/Oホスト・ブリッジは、前記キャッシュにおける第1のエントリをアクセスすることによって前記PE番号を決定する、
    請求項7に記載のデータ処理システム。
  11. 前記第2のデータ構造は、前記PE番号に関連した多数のエントリを保持し、
    前記I/Oホスト・ブリッジは、前記アドレスにおけるインデックスを参照することによって前記PE番号に関連した多数のエントリの中から前記第2のエントリを選択する、
    請求項7に記載のデータ処理システム。
  12. 前記プロセッサ・コア及び前記I/Oホスト・ブリッジを含む集積回路チップを更に含む、請求項7に記載のデータ処理システム。
  13. システム・メモリと、複数個のパーティション化可能なエンドポイント(PE)を含む入出力(I/O)サブシステムとを有するデータ処理システムのためのプロセッサであって、前記PEの各々は関連のPE番号を有し且つ1つ又は複数個の要求元を含み、前記要求元の各々はそれぞれの要求元識別子(ID)を有し、
    前記プロセッサは、
    プロセッサ・コアと、
    I/Oホスト・ブリッジであって、要求元ID及びアドレスを含むI/Oメッセージを受け取ったことに応答して、要求元IDをPE番号にマップする複数個のエントリを含む第1のデータ構造からの第1のエントリを参照することによって前記I/Oメッセージの影響を受けるPEのPE番号を決定し、前記PE番号を決定したことに応答して、前記PE番号をインデックスとして利用して前記I/Oホスト・ブリッジにおける第2のデータ構造の第2のエントリをアクセスし、第2のデータ構造におけるアクセスされたエントリを参照することによって前記アドレスを検証する、I/Oホスト・ブリッジと、
    を含み、
    前記I/Oホスト・ブリッジは、前記アドレスの検証の成功に応答して、前記I/Oメッセージによって表わされたサービスを提供する、プロセッサ。
  14. 前記I/Oメッセージは、ダイレクト・メモリ・アクセス(DMA)要求である、請求項13に記載のプロセッサ。
  15. 前記I/Oホスト・ブリッジは、PCIホスト・ブリッジを含む、請求項13に記載のプロセッサ。
  16. 前記第1のデータ構造が前記データ処理システムのシステム・メモリに常駐し、
    前記I/Oホスト・ブリッジがシステム・メモリにおける前記第1のデータ構造からのエントリのキャッシュを含み、
    前記I/Oホスト・ブリッジが、前記キャッシュにおける前記第1エントリをアクセスすることによって前記PE番号を決定する、
    請求項13に記載のプロセッサ。
  17. 前記第2のデータ構造は、前記PE番号に関連した多数のエントリを保持し、
    前記I/Oホスト・ブリッジは、前記アドレスにおけるインデックスを参照することによって前記PE番号に関連した多数のエントリの中から前記第2のエントリを選択する、
    請求項13に記載のプロセッサ。
  18. 前記プロセッサ・コア及び前記I/Oホスト・ブリッジを含む集積回路チップを更に含む、請求項13に記載のプロセッサ。
JP2013522219A 2010-08-04 2011-07-29 I/oメッセージの影響を受ける1つ又は複数個のパーティション化可能なエンドポイントを決定するデータ処理システム Active JP5431621B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/849,958 2010-08-04
US12/849,958 US20120036302A1 (en) 2010-08-04 2010-08-04 Determination of one or more partitionable endpoints affected by an i/o message
PCT/EP2011/063134 WO2012016931A1 (en) 2010-08-04 2011-07-29 Determination of one or more partitionable endpoints affected by an i/o message

Publications (2)

Publication Number Publication Date
JP2013539098A true JP2013539098A (ja) 2013-10-17
JP5431621B2 JP5431621B2 (ja) 2014-03-05

Family

ID=44629800

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013522219A Active JP5431621B2 (ja) 2010-08-04 2011-07-29 I/oメッセージの影響を受ける1つ又は複数個のパーティション化可能なエンドポイントを決定するデータ処理システム

Country Status (5)

Country Link
US (2) US20120036302A1 (ja)
EP (1) EP2569702B1 (ja)
JP (1) JP5431621B2 (ja)
CN (1) CN103038756B (ja)
WO (1) WO2012016931A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019159751A (ja) * 2018-03-13 2019-09-19 日本電気株式会社 データ転送装置、データ転送方法、プログラム
JP2020529683A (ja) * 2017-08-12 2020-10-08 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ダイレクト・メモリ・アドレス変換の効率的なテストのための集積回路、およびコンピュータ実装方法
JP7495191B2 (ja) 2019-09-11 2024-06-04 インターナショナル・ビジネス・マシーンズ・コーポレーション I/o性能を最適化するためのメモリ・コピーおよびメモリ・マッピング間の動的な切り替え

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9122413B2 (en) * 2013-08-15 2015-09-01 International Business Machines Corporation Implementing hardware auto device operations initiator
CN105335320B (zh) * 2014-08-14 2020-05-15 恩智浦美国有限公司 具有可动态配置的端点分配的usb设备
US9678892B2 (en) 2015-09-01 2017-06-13 International Business Machines Corporation Flexible I/O DMA address allocation in virtualized systems
US10133504B2 (en) * 2016-04-06 2018-11-20 Futurewei Technologies, Inc. Dynamic partitioning of processing hardware

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060010276A1 (en) * 2004-07-08 2006-01-12 International Business Machines Corporation Isolation of input/output adapter direct memory access addressing domains
US20060010355A1 (en) * 2004-07-08 2006-01-12 International Business Machines Corporation Isolation of input/output adapter error domains
US20070136554A1 (en) * 2005-12-12 2007-06-14 Giora Biran Memory operations in a virtualized system
US20090144508A1 (en) * 2007-12-03 2009-06-04 Freimuth Douglas M PCI Express Address Translation Services Invalidation Synchronization with TCE Invalidation

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0973436A (ja) 1995-09-05 1997-03-18 Mitsubishi Electric Corp 多重化計算機における動作モード切替方式
US5961623A (en) 1996-08-29 1999-10-05 Apple Computer, Inc. Method and system for avoiding starvation and deadlocks in a split-response interconnect of a computer system
TW384445B (en) 1997-04-11 2000-03-11 Ibm Method for bursting processor data to or from an I/O device
JPH11232213A (ja) 1998-02-13 1999-08-27 Nec Corp 入出力装置におけるデータ転送方式
US7007126B2 (en) 1998-02-13 2006-02-28 Intel Corporation Accessing a primary bus messaging unit from a secondary bus through a PCI bridge
JP3125739B2 (ja) 1998-02-17 2001-01-22 日本電気株式会社 バススイッチ
US6611891B1 (en) 1998-11-23 2003-08-26 Advanced Micro Devices, Inc. Computer resource configuration mechanism across a multi-pipe communication link
US6618782B1 (en) 1998-11-23 2003-09-09 Advanced Micro Devices, Inc. Computer interconnection bus link layer
US6405276B1 (en) 1998-12-10 2002-06-11 International Business Machines Corporation Selectively flushing buffered transactions in a bus bridge
US6330631B1 (en) 1999-02-03 2001-12-11 Sun Microsystems, Inc. Data alignment between buses
TW501017B (en) 2000-04-05 2002-09-01 Via Tech Inc Processing method, chip set and controller for supporting message signaled interrupt
US6629162B1 (en) * 2000-06-08 2003-09-30 International Business Machines Corporation System, method, and product in a logically partitioned system for prohibiting I/O adapters from accessing memory assigned to other partitions during DMA
US6643727B1 (en) * 2000-06-08 2003-11-04 International Business Machines Corporation Isolation of I/O bus errors to a single partition in an LPAR environment
JP2002014878A (ja) 2000-06-30 2002-01-18 Toshiba Corp 計算機システムおよびその保守管理方法
US6647453B1 (en) 2000-08-31 2003-11-11 Hewlett-Packard Development Company, L.P. System and method for providing forward progress and avoiding starvation and livelock in a multiprocessor computer system
US6738836B1 (en) 2000-08-31 2004-05-18 Hewlett-Packard Development Company, L.P. Scalable efficient I/O port protocol
US6983339B1 (en) 2000-09-29 2006-01-03 Intel Corporation Method and apparatus for processing interrupts of a bus
JP2002269029A (ja) 2001-03-07 2002-09-20 Nec Corp 高信頼性情報処理装置及びそれに用いる情報処理方法並びにそのプログラム
US7315911B2 (en) 2005-01-20 2008-01-01 Dot Hill Systems Corporation Method for efficient inter-processor communication in an active-active RAID system using PCI-express links
US6807599B2 (en) 2001-10-15 2004-10-19 Advanced Micro Devices, Inc. Computer system I/O node for connection serially in a chain to a host
JP2004030161A (ja) 2002-06-25 2004-01-29 Hitachi Ltd コンピュータシステムにおける割り込み制御方法、コンピュータシステム、半導体集積回路、及びプログラム
US7581033B2 (en) 2003-12-05 2009-08-25 Unisys Corporation Intelligent network interface card (NIC) optimizations
US20060010277A1 (en) 2004-07-08 2006-01-12 International Business Machines Corporation Isolation of input/output adapter interrupt domains
US7136954B2 (en) 2005-01-31 2006-11-14 International Business Machines Corporation Data communication method and apparatus utilizing credit-based data transfer protocol and credit loss detection mechanism
US7886086B2 (en) * 2005-02-03 2011-02-08 International Business Machines Corporation Method and apparatus for restricting input/output device peer-to-peer operations in a data processing system to improve reliability, availability, and serviceability
US7308551B2 (en) * 2005-02-25 2007-12-11 International Business Machines Corporation System and method for managing metrics table per virtual port in a logically partitioned data processing system
US7475166B2 (en) * 2005-02-28 2009-01-06 International Business Machines Corporation Method and system for fully trusted adapter validation of addresses referenced in a virtual host transfer request
US7574536B2 (en) * 2005-04-22 2009-08-11 Sun Microsystems, Inc. Routing direct memory access requests using doorbell addresses
US7293129B2 (en) * 2005-04-22 2007-11-06 Sun Microsystems, Inc. Flexible routing and addressing
US20060288130A1 (en) * 2005-06-21 2006-12-21 Rajesh Madukkarumukumana Address window support for direct memory access translation
US8725914B2 (en) 2006-08-28 2014-05-13 International Business Machines Corporation Message signaled interrupt management for a computer input/output fabric incorporating platform independent interrupt manager
US20080126617A1 (en) 2006-08-28 2008-05-29 Sean Thomas Brownlow Message Signaled Interrupt Management for a Computer Input/Output Fabric Incorporating Dynamic Binding
US7506084B2 (en) * 2006-10-17 2009-03-17 International Business Machines Corporation Method for communicating with an I/O adapter using cached address translations
US7571273B2 (en) * 2006-12-06 2009-08-04 International Business Machines Corporation Bus/device/function translation within and routing of communications packets in a PCI switched-fabric in a multi-host environment utilizing multiple root switches
US7660933B2 (en) 2007-10-11 2010-02-09 Broadcom Corporation Memory and I/O bridge
JP5217929B2 (ja) 2008-11-13 2013-06-19 ソニー株式会社 割込検出装置および情報処理システム
US8321615B2 (en) 2009-12-18 2012-11-27 Intel Corporation Source core interrupt steering
US8261128B2 (en) 2010-08-04 2012-09-04 International Business Machines Corporation Selection of a domain of a configuration access
US8495271B2 (en) 2010-08-04 2013-07-23 International Business Machines Corporation Injection of I/O messages
US8549202B2 (en) 2010-08-04 2013-10-01 International Business Machines Corporation Interrupt source controller with scalable state structures

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060010276A1 (en) * 2004-07-08 2006-01-12 International Business Machines Corporation Isolation of input/output adapter direct memory access addressing domains
US20060010355A1 (en) * 2004-07-08 2006-01-12 International Business Machines Corporation Isolation of input/output adapter error domains
US20070136554A1 (en) * 2005-12-12 2007-06-14 Giora Biran Memory operations in a virtualized system
US20090144508A1 (en) * 2007-12-03 2009-06-04 Freimuth Douglas M PCI Express Address Translation Services Invalidation Synchronization with TCE Invalidation

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020529683A (ja) * 2017-08-12 2020-10-08 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ダイレクト・メモリ・アドレス変換の効率的なテストのための集積回路、およびコンピュータ実装方法
JP7287947B2 (ja) 2017-08-12 2023-06-06 インターナショナル・ビジネス・マシーンズ・コーポレーション ダイレクト・メモリ・アドレス変換の効率的なテストのための集積回路、およびコンピュータ実装方法
JP2019159751A (ja) * 2018-03-13 2019-09-19 日本電気株式会社 データ転送装置、データ転送方法、プログラム
JP7003752B2 (ja) 2018-03-13 2022-01-21 日本電気株式会社 データ転送装置、データ転送方法、プログラム
JP7495191B2 (ja) 2019-09-11 2024-06-04 インターナショナル・ビジネス・マシーンズ・コーポレーション I/o性能を最適化するためのメモリ・コピーおよびメモリ・マッピング間の動的な切り替え

Also Published As

Publication number Publication date
JP5431621B2 (ja) 2014-03-05
EP2569702B1 (en) 2013-10-16
EP2569702A1 (en) 2013-03-20
US9569392B2 (en) 2017-02-14
US20120036302A1 (en) 2012-02-09
CN103038756A (zh) 2013-04-10
US20120203934A1 (en) 2012-08-09
WO2012016931A1 (en) 2012-02-09
CN103038756B (zh) 2016-04-27

Similar Documents

Publication Publication Date Title
JP5431621B2 (ja) I/oメッセージの影響を受ける1つ又は複数個のパーティション化可能なエンドポイントを決定するデータ処理システム
JP5128222B2 (ja) データ処理システム、並びに、データ処理システムの複数の入出力アダプタ・ユニットからの要求を処理する方法若しくは複数の入出力アダプタ・ユニットを分離する方法およびそれらのコンピュータ・プログラム
US7492723B2 (en) Mechanism to virtualize all address spaces in shared I/O fabrics
JP4157710B2 (ja) Pci入出力スロットの論理分割を実施する方法および装置
US7617340B2 (en) I/O adapter LPAR isolation with assigned memory space
US7734843B2 (en) Computer-implemented method, apparatus, and computer program product for stalling DMA operations during memory migration
US8447891B2 (en) Dynamically assigning virtual functions to client applications
US20080168208A1 (en) I/O Adapter LPAR Isolation In A Hypertransport Environment With Assigned Memory Space Indexing a TVT Via Unit IDs
JP4405435B2 (ja) 動的なホスト区画ページ割り当てのための方法および装置
US10255194B2 (en) Configurable I/O address translation data structure
US8521939B2 (en) Injection of I/O messages
US20100100892A1 (en) Managing hosted virtualized operating system environments
US8549202B2 (en) Interrupt source controller with scalable state structures
US20060010276A1 (en) Isolation of input/output adapter direct memory access addressing domains
US7941568B2 (en) Mapping a virtual address to PCI bus address
US20080168207A1 (en) I/O Adapter LPAR Isolation In A Hypertransport Envikronment Employing A Content Addressable Memory
US20060010277A1 (en) Isolation of input/output adapter interrupt domains
US9336029B2 (en) Determination via an indexed structure of one or more partitionable endpoints affected by an I/O message
US8261128B2 (en) Selection of a domain of a configuration access
US9678887B2 (en) Flexible I/O DMA address allocation in virtualized systems

Legal Events

Date Code Title Description
RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20130710

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130710

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130905

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20131112

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131204

R150 Certificate of patent or registration of utility model

Ref document number: 5431621

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150