(57)【特許請求の範囲】
【請求項１】
少なくとも１つのＩ／Ｏホスト・ブリッジと、複数個のパーティション化可能なエンドポイント（ＰＥ）とを含み、前記ＰＥの各々は関連のＰＥ番号を有し、前記ＰＥの各々は１つ又は複数個の要求元を含み、前記要求元の各々はそれぞれの要求元識別子（ＩＤ）を有する、データ処理システムにおいてデータを処理する方法であって、
要求元ＩＤ及びアドレスを含むＩ／ＯメッセージをＩ／Ｏホスト・ブリッジにおいて受け取るステップと、
前記Ｉ／Ｏメッセージを受け取ったことに応答して、前記Ｉ／Ｏホスト・ブリッジが、システム・メモリに格納され、ＰＥ番号に要求元ＩＤをマップする複数個のエントリを含む第１のデータ構造からの第１のエントリを参照することによって前記Ｉ／Ｏメッセージの影響を受けるＰＥのＰＥ番号を決定するステップと、
前記ＰＥ番号を決定したことに応答して、前記Ｉ／Ｏホスト・ブリッジが、前記ＰＥ番号をインデックスとして利用して前記ＰＥ番号に関連づけられたアドレスの下位ｎビットを切り捨て上位桁のアドレスを第２のエントリのサイズと比較し、当該比較の結果を前記システム・メモリに格納された第２のデータ構造の第２のエントリにアクセスし、前記アドレスが前記第２のデータ構造の端部を超えるか否かによって前記アドレスを検証するステップと、
前記アドレスが前記端部を超えないという前記アドレスの検証の成功に応答して、前記Ｉ／Ｏホスト・ブリッジが前記Ｉ／Ｏメッセージにより表わされたサービスを提供するステップと、
を含む、方法。
【請求項２】
前記Ｉ／Ｏメッセージはダイレクト・メモリ・アクセス（ＤＭＡ）要求であり、
前記アドレスをシステム・メモリ・アドレスに変換するステップを更に含む、請求項１に記載の方法。
【請求項３】
前記Ｉ／Ｏホスト・ブリッジはＰＣＩホスト・ブリッジを含む、請求項１に記載の方法。
【請求項４】
前記Ｉ／Ｏホスト・ブリッジが、第１のエントリを参照することによって前記Ｉ／Ｏメッセージの影響を受けるＰＥのＰＥ番号を決定する前記ステップは、前記第１のデータ構造からのエントリをバッファする前記Ｉ／Ｏホスト・ブリッジ内のキャッシュにおける第１のエントリをアクセスするステップを含む、請求項１に記載の方法。
【請求項５】
前記第１のデータ構造は、前記データ処理システムのシステム・メモリに常駐し、
前記Ｉ／Ｏホスト・ブリッジが、第１のエントリを参照することによって前記Ｉ／Ｏメッセージの影響を受けるＰＥのＰＥ番号を決定する前記ステップは、前記システム・メモリにおける第１のエントリをアクセスするステップを含む、請求項１に記載の方法。
【請求項６】
前記アドレスにおけるインデックスを参照することによって前記ＰＥ番号に関連した前記第２のデータ構造の多数のエントリの中から前記第２のエントリを選択するステップを更に含む、請求項１に記載の方法。
【請求項７】
プロセッサ・コアと、
前記プロセッサ・コアに接続され、要求元識別子（ＩＤ）をパーティション化可能なエンドポイント（ＰＥ）番号にマップする複数個のエントリを含む第１のデータ構造およびアドレス変換するためのアドレスの端部を規定する第２のデータ構造を有するシステム・メモリと、
前記プロセッサ・コアに接続された入出力（Ｉ／Ｏ）サブシステムと、
を含み、
前記Ｉ／Ｏサブシステムは、
各々が関連のＰＥ番号を有する複数個のＰＥであって、前記複数個のＰＥの各々は１つ又は複数個の要求元を含み、前記要求元の各々はそれぞれの要求元ＩＤを有する、複数個のＰＥと、
複数個のエントリを含む第２のデータ構造を有する少なくとも１つのＩ／Ｏホスト・ブリッジであって、要求元ＩＤ及びアドレスを含むＩ／Ｏメッセージを受け取ったことに応答して、前記第１のデータ構造からの第１のエントリを参照することによって前記Ｉ／Ｏメッセージの影響を受けるＰＥのＰＥ番号を決定し、前記ＰＥ番号を決定したことに応答して、前記Ｉ／Ｏホスト・ブリッジが、前記ＰＥ番号をインデックスとして利用して前記ＰＥ番号に関連づけられたアドレスの下位ｎビットを切り捨て上位桁のアドレスを第２のエントリのサイズと比較し、当該比較の結果を第２のデータ構造の第２のエントリにアクセスし、前記アドレスが前記第２のデータ構造の端部を超えるか否かによって前記アドレスを検証し、前記アドレスが前記端部を超えないという前記アドレスの検証の成功に応答して、前記Ｉ／Ｏメッセージによって表わされたサービスを提供する、Ｉ／Ｏホスト・ブリッジと、
を含む、データ処理システム。
【請求項８】
前記Ｉ／Ｏメッセージはダイレクト・メモリ・アクセス（ＤＭＡ）要求である、請求項７に記載のデータ処理システム。
【請求項９】
前記Ｉ／Ｏホスト・ブリッジは、ＰＣＩホスト・ブリッジを含む、請求項７に記載のデータ処理システム。
【請求項１０】
前記Ｉ／Ｏホスト・ブリッジは、システム・メモリにおける第１のデータ構造からのエントリのキャッシュを含み、
前記Ｉ／Ｏホスト・ブリッジは、前記キャッシュにおける第１のエントリをアクセスすることによって前記ＰＥ番号を決定する、
請求項７に記載のデータ処理システム。
【請求項１１】
前記第２のデータ構造は、前記ＰＥ番号に関連した多数のエントリを保持し、
前記Ｉ／Ｏホスト・ブリッジは、前記アドレスにおけるインデックスを参照することによって前記ＰＥ番号に関連した多数のエントリの中から前記第２のエントリを選択する、
請求項７に記載のデータ処理システム。
【請求項１２】
前記プロセッサ・コア及び前記Ｉ／Ｏホスト・ブリッジを含む集積回路チップを更に含む、請求項７に記載のデータ処理システム。
【請求項１３】
システム・メモリと、複数個のパーティション化可能なエンドポイント（ＰＥ）を含む入出力（Ｉ／Ｏ）サブシステムとを有するデータ処理システムのためのプロセッサであって、前記ＰＥの各々は関連のＰＥ番号を有し且つ１つ又は複数個の要求元を含み、前記要求元の各々はそれぞれの要求元識別子（ＩＤ）を有し、
前記プロセッサは、
プロセッサ・コアと、
Ｉ／Ｏホスト・ブリッジであって、要求元ＩＤ及びアドレスを含むＩ／Ｏメッセージを受け取ったことに応答して、要求元ＩＤをＰＥ番号にマップする複数個のエントリを含みシステム・メモリに格納された第１のデータ構造からの第１のエントリを参照することによって前記Ｉ／Ｏメッセージの影響を受けるＰＥのＰＥ番号を決定し、前記ＰＥ番号を決定したことに応答して、前記Ｉ／Ｏホスト・ブリッジが、前記ＰＥ番号をインデックスとして利用して前記ＰＥ番号に関連づけられたアドレスの下位ｎビットを切り捨て上位桁のアドレスを第２のエントリのサイズと比較し、当該比較の結果を前記システム・メモリに格納された第２のデータ構造の第２のエントリにアクセスし、前記アドレスが前記第２のデータ構造の端部を超えるか否かによって前記アドレスを検証するＩ／Ｏホストブリッジと、
を含み、
前記Ｉ／Ｏホスト・ブリッジは、前記アドレスの検証の成功に応答して、前記Ｉ／Ｏメッセージによって表わされたサービスを提供する、プロセッサ。
【請求項１４】
前記Ｉ／Ｏメッセージは、ダイレクト・メモリ・アクセス（ＤＭＡ）要求である、請求項１３に記載のプロセッサ。
【請求項１５】
前記Ｉ／Ｏホスト・ブリッジは、ＰＣＩホスト・ブリッジを含む、請求項１３に記載のプロセッサ。
【請求項１６】
前記第１のデータ構造が前記データ処理システムのシステム・メモリに常駐し、
前記Ｉ／Ｏホスト・ブリッジがシステム・メモリにおける前記第１のデータ構造からのエントリのキャッシュを含み、
前記Ｉ／Ｏホスト・ブリッジが、前記キャッシュにおける前記第１エントリをアクセスすることによって前記ＰＥ番号を決定する、
請求項１３に記載のプロセッサ。
【請求項１７】
前記第２のデータ構造は、前記ＰＥ番号に関連した多数のエントリを保持し、
前記Ｉ／Ｏホスト・ブリッジは、前記アドレスにおけるインデックスを参照することによって前記ＰＥ番号に関連した多数のエントリの中から前記第２のエントリを選択する、
請求項１３に記載のプロセッサ。
【請求項１８】
前記プロセッサ・コア及び前記Ｉ／Ｏホスト・ブリッジを含む集積回路チップを更に含む、請求項１３に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にはデータ処理システムに関し、特に、データ処理システムにおける入出力（Ｉ／Ｏ）に関する。
【背景技術】
【０００２】
データ処理システムは、通信ネットワーク、記憶装置及び／又は記憶装置ネットワーク、並びに周辺機器への接続をサポートするために多数の処理要素及び多数の入出力アダプタ（ＩＯＡ）を含み得る。そのようなデータ処理システムにおいて、そのデータ処理システムのハードウェア資源は、各々が恐らく多数の異種のオペレーティング・システム・インスタンスのそれぞれ１つによって制御される多数の非交差資源セットに論理的にパーティション化することが可能である。オペレーティング・システムは、仮想マシン・モニタ（ＶＭＭ）又はハイパーバイザと呼ばれるシステム・ファームウェアの制御の下にそれぞれの論理パーティション（ＬＰＡＲ）においてこの共通ハードウェア・プラットフォーム上で同時に実行される。従って、ハイパーバイザは、データ処理システムの資源の非交差サブセットを各ＬＰＡＲに割り付け、一方、各オペレーティング・システム・インスタンスは、システム・メモリの領域及びＩＯＡのような割り付け可能な資源の個別のセットを直接制御する。
【０００３】
多数のＩＯＡを含む如何なる環境でも、各ＩＯＡがそれに割り付けられた資源へのアクセスだけを得ることができるようにＩＯＡを相互分離することが望ましい。ＩＯＡを分離することは、データ処理システムの信頼性、可用性、及び保守性を促進し、しかもＩＯＡが、種々の論理的パーティション（ＬＰＡＲ）に個別に割り付けられ、いずれのＩＯＡエラーも、そのＩＯＡが割り付けられる特定のパーティションに分離されるようハードウェア仮想化（又は論理的パーティション化）をサポートする環境においては特に重要である。例えば、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）バスに関して、１つのＬＰＡＲにおけるＩＯＡがシステム・エラー（ＳＥＲＲ）信号を活性化する場合、システムは、何らかの更なる制御に欠けた他のすべてのＬＰＡＲに対してそのＳＥＲＲ信号を可視的にしなければならない。もちろん、Ｉ／ＯエラーをＬＰＡＲ境界要件を越えて可視的にすることは、論理的パーティション化の定義及び意図に反する。
【０００４】
ＰＣＩエラーに関するパーティション化問題に対処する１つの解決策は、１つのＰＣＩホスト・ブリッジ（ＰＨＢ）に接続されたすべてのＩＯＡを同じＬＰＡＲパーティションに割り付けることを必要とすることである。しかし、この制限は、あまり有用でない或いは融通性のないＩＯＡに対する高い資源粒度を必要とする。理想的には、ＩＯＡは、そのＩＯＡが接続されるＰＨＢに関係なく種々のＬＰＡＲに割り付け可能でなければならない。別の解決策は、米国特許第６,６４３,７２７号に記述されているようにＰＨＢの外部にある特別に設計されたブリッジ・チップの使用を含むか、或いは米国特許第７,３９８,４２７号に記述されているようにＰＨＢの内部にある種々のＬＰＡＲにおけるＩＯＡ間のパーティション化を強化するように更なるロジック及びデータ構造を組込むことを含む。
【０００５】
本明細書の記載からも明らかなように、ＤＭＡメッセージ及びＩ／Ｏエラー・メッセージのようなルーチン・メッセージを処理する場合に利用されるＰＨＢ内のデータ構造のサイズを縮小することが望ましいであろう。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第６,６４３,７２７号
【特許文献２】米国特許第７,３９８,４２７号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、Ｉ／Ｏメッセージの影響を受ける１つ又は複数個のパーティション化可能なエンドポイントを決定するデータ処理システムを提供することにある。
【課題を解決するための手段】
【０００８】
本発明の１つの実施態様では、プロセッサ・コアと、要求元識別子（ＩＤ）を、パーティション化可能エンドポイント（ＰＥ）番号にマップする複数個のエントリを含む第１のデータ構造を有するシステム・メモリと、入出力（Ｉ／Ｏ）サブシステムとを含むデータ処理システムが提供される。Ｉ／Ｏサブシステムは、各々が関連のＰＥ番号を有する複数個のＰＥと、少なくとも１つのＩ／Ｏホスト・ブリッジとを含む。複数個のＰＥの各々は１つ又は複数個の要求元を含み、要求元の各々はそれぞれの要求元ＩＤを有する。Ｉ／Ｏホスト・ブリッジは、要求元ＩＤ及びアドレスを含むＩ／Ｏメッセージを受け取ったことに応答して、第１のデータ構造からの第１のエントリの参照によってＰＥ番号を決定し、そのＰＥ番号を決定したことに応答して、そのＰＥ番号をインデックスとして利用して第２のデータ構造の第２のエントリをアクセスし、第２のデータ構造におけるアクセスされたエントリを参照することによってアドレスを検証する。検証の成功に応答して、Ｉ／Ｏホスト・ブリッジは、Ｉ／Ｏメッセージによって表わされたサービスを提供する。
【０００９】
本発明の第２の実施態様では、少なくとも１つのＩ／Ｏホスト・ブリッジと、複数個のパーティション化可能なエンドポイント（ＰＥ）とを含む入出力（Ｉ／Ｏ）サブシステムを有するデータ処理システムにおいてデータを処理する方法が提供される。複数個のＰＥの各々は関連のＰＥ番号を有し且つ１つ又は複数個の要求元を含む。要求元の各々はそれぞれの要求元識別子（ＩＤ）を有する。本方法は、要求元ＩＤ及びアドレスを含むＩ／ＯメッセージをＩ／Ｏホスト・ブリッジにおいて受け取るステップを含む。Ｉ／Ｏメッセージを受け取ったことに応答して、Ｉ／Ｏホスト・ブリッジが、要求元ＩＤをＰＥ番号にマップする複数個のエントリを含む第１のデータ構造からの第１のエントリを参照することによりＩ／Ｏメッセージの影響を受けるＰＥのＰＥ番号を決定するステップと、ＰＥ番号を決定したことに応答して、Ｉ／Ｏホスト・ブリッジが、ＰＥ番号をインデックスとして利用して第２のデータ構造の第２のエントリをアクセスし、第２のデータ構造におけるアクセスされたエントリを参照することによってアドレスを検証するステップと、アドレスの検証の成功に応答して、Ｉ／Ｏホスト・ブリッジがＩ／Ｏメッセージにより表わされたサービスを提供するステップとを含む。
【００１０】
Ｉ／Ｏメッセージはダイレクト・メモリ・アクセス（ＤＭＡ）要求であってもよく、本方法は、アドレスをシステム・メモリ・アドレスに変換するステップを更に含み得る。望ましくは、Ｉ／Ｏホスト・ブリッジはＰＣＩホスト・ブリッジを含む。更に、望ましくは、本方法は、Ｉ／Ｏホスト・ブリッジが、第１のエントリを参照することによってそのＩ／Ｏメッセージの影響を受けるＰＥのＰＥ番号を決定する前記ステップは、第１のデータ構造からのエントリをバッファするそのＩ／Ｏホスト・ブリッジ内のキャッシュにおける第１のエントリをアクセスするステップを含む。更に望ましくは、第１のデータ構造はデータ処理システムのシステム・メモリに常駐し、Ｉ／Ｏホスト・ブリッジが、第１のエントリを参照することによってＩ／Ｏメッセージの影響を受けるＰＥのＰＥ番号を決定する前記ステップは、システム・メモリにおける第１のエントリをアクセスするステップを含む。望ましくは、本方法は、アドレスにおけるインデックスを参照することによってＰＥ番号に関連した第２のデータ構造の多数のエントリの中から第２のエントリを選択するステップを更に含む。
【００１１】
本発明の第３の実施態様では、プロセッサ・コアと、プロセッサ・コアに接続され、要求元識別子（ＩＤ）をパーティション化可能なエンドポイント（ＰＥ）番号にマップする複数個のエントリを含む第１のデータ構造を有するシステム・メモリと、そのＩ／Ｏサブシステムは、複数個のＰＥと、Ｉ／Ｏホスト・ブリッジとを含むデータ処理システムが提供される。各ＰＥは１つ又は複数個の要求元を含み、その要求元の各々はそれぞれの要求元ＩＤを有する。少なくとも１つのＩ／Ｏホスト・ブリッジは、複数個のエントリを含む第２のデータ構造を有し、要求元ＩＤ及びアドレスを含むＩ／Ｏメッセージを受け取ったことに応答して、第１のデータ構造からの第１のエントリを参照することによってＩ／Ｏメッセージの影響を受けるＰＥのＰＥ番号を決定し、ＰＥ番号を決定したことに応答して、そのＰＥ番号をインデックスとして利用して第２のデータ構造の第２のエントリをアクセスし、第２のデータ構造におけるアクセスされたエントリを参照することによってそのアドレスを検証し、アドレスの検証の成功に応答して、そのＩ／Ｏメッセージによって表わされたサービスを提供する。
【００１２】
Ｉ／Ｏメッセージは、ダイレクト・メモリ・アクセス（ＤＭＡ）要求であってもよい。Ｉ／Ｏホスト・ブリッジは、望ましくは、ＰＣＩホスト・ブリッジを含む。更に望ましくは、Ｉ／Ｏホスト・ブリッジは、システム・メモリにおける第１のデータ構造からのエントリのキャッシュを含み、そのキャッシュにおける第１のエントリをアクセスすることによってＰＥ番号を決定する。望ましくは、第２のデータ構造は、ＰＥ番号に関連した多数のエントリを保持し、Ｉ／Ｏホスト・ブリッジは、アドレスにおけるインデックスを参照することによってＰＥ番号に関連した多数のエントリの中から第２のエントリを選択する。データ処理システムは、望ましくは、プロセッサ・コア及びＩ／Ｏホスト・ブリッジを含む集積回路チップを更に含む。
【００１３】
本発明の第４の実施態様では、システム・メモリと、複数個のパーティション化可能なエンドポイント（ＰＥ）を含む入出力（Ｉ／Ｏ）サブシステムとを有するデータ処理システムのためのプロセッサであって、複数個のＰＥは、関連のＰＥ番号を有し且つ１つ又は複数個の要求元を有する。プロセッサは、プロセッサ・コアと、Ｉ／Ｏホスト・ブリッジとを含み、Ｉ／Ｏホスト・ブリッジは、要求元ＩＤ及びアドレスを含むＩ／Ｏメッセージを受け取ったことに応答して、要求元ＩＤをＰＥ番号にマップする複数個のエントリを含む第１のデータ構造からの第１のエントリを参照することによってＩ／Ｏメッセージの影響を受けるＰＥのＰＥ番号を決定し、ＰＥ番号を決定したことに応答して、ＰＥ番号をインデックスとして利用してＩ／Ｏホスト・ブリッジにおける第２のデータ構造の第２のエントリをアクセスし、第２のデータ構造におけるアクセスされたエントリを参照することによってアドレスを検証する。Ｉ／Ｏホスト・ブリッジは、アドレスの検証の成功に応答して、Ｉ／Ｏメッセージによって表されたサービスを提供する。
【００１４】
Ｉ／Ｏメッセージは、ダイレクト・メモリ・アクセス（ＤＭＡ）要求であってもよい。Ｉ／Ｏホスト・ブリッジは、望ましくはＰＣＩホスト・ブリッジを含む。望ましくは、プロセッサは、第１のデータ構造がデータ処理システムのシステム・メモリに常駐し、Ｉ／Ｏホスト・ブリッジがシステム・メモリにおける第１のデータ構造からのエントリのキャッシュを含み、Ｉ／Ｏホスト・ブリッジがそのキャッシュにおける第１のエントリをアクセスすることによってＰＥ番号を決定する、というものである。第２のデータ構造は、望ましくは、ＰＥ番号に関連した多数のエントリを保持し、Ｉ／Ｏホスト・ブリッジは、アドレスにおけるインデックスを参照することによってＰＥ番号に関連した多数のエントリの中から第２のエントリを選択する。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施例による例示的なデータ処理システムの高レベルのブロック図である。
【図２】多数の同時実行する論理的パーティション（ＬＰＡＲ）にパーティション化されたデータ処理システムのハードウェア及びソフトウェア資源を示すデータ処理システムの論理的ブロック図である。
【図３】一実施例によるデータ処理システムにおいてＩ／Ｏ資源の分離を行うＩ／Ｏサブシステムのブロック図を示す。
【図４】一般的なペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）ホスト・ブリッジ（ＰＨＢ）のブロック図である。
【図５】図４のＰＨＢにおける変換及び検証テーブル（ＴＶＴ）の一般的な変換及び検証エントリ（ＴＶＥ）のブロック図である。
【図６】一実施例における改良されたペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）ホスト・ブリッジ（ＰＨＢ）のブロック図である。
【図７】図６のＰＨＢにおける変換及び検証テーブル（ＴＶＴ）の改良された変換及び検証エントリ（ＴＶＥ）のブロック図である。
【図８】ＰＨＢが一実施例に従ってＤＭＡメッセージを処理する例示的なプロセスの高レベルの論理的フローチャートである。
【図９】従来技術による、ＰＥルックアップ・テーブル（ＰＥＬＴ）を含む一般的なペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）ホスト・ブリッジ（ＰＨＢ）を示すブロック図である。
【図１０】図９の従来技術のＰＨＢにおけるＰＥＬＴの一般的なＰＥルックアップ・エントリ（ＰＥＬＥ）を示すブロック図である。
【図１１】一実施例における一般的なペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）ホスト・ブリッジ（ＰＨＢ）のブロック図示す。
【図１２】図１１の改良されたＰＨＢによって利用される改良されたＰＥルックアップ・エントリ（ＰＥＬＥ）を示すブロック図である。
【図１３】一実施例に従ってＰＨＢがＩ／Ｏエラー・メッセージを処理する例示的なプロセスの高レベルの論理的フローチャートである。
【発明を実施するための形態】
【００１６】
次に、図面、特に図１を参照すると、１つの実施例に従って例示的なデータ処理システム１００の高レベルのブロック図が示される。或る実施例では、データ処理システム１００は、例えば、複数個のプロセッサ１０２ａ〜１０２ｎを含む対称マルチプロセッサ（ＳＭＰ）システムであってもよい。各プロセッサは、１つ又は複数個のバス接続回線又は交換回線通信リンクを含み得るシステム・ファブリック１０４に通信のために結合される。例えば、データ処理システム１００は、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションの製品ラインである IBM eServer（商標） において具現化することが可能である。別の実施例では、単一のプロセッサ１０２を備えたデータ処理システムを利用することも可能である。
【００１７】
図示の実施例では、各プロセッサ１０２は、望ましくは、その分野で知られているように半導体回路を形成する基板を備えた単一の集積回路チップとして実現される。図示のように、プロセッサ１０２は、例えば、ソフトウェア及び／又はファームウェア、並びに関連データがある場合にはその関連データも含み得るプログラム・コードの実行及び／又は処理を通してデータを処理する複数個のプロセッサ・コアを含む。更に、プロセッサ１０２は、低レベルのデータ記憶階層から検索された命令及びデータのための１つ又は複数のレベルの比較的少ない待ち時間の一時的記憶装置を提供するキャッシュ・メモリ１１２を含む。更に、プロセッサ１０２は、オフチップ・システム・メモリ１１６のうちの関連するものへのアクセスを制御する、集積メモリ・コントローラ（ＩＭＣ）１１４を含む。
【００１８】
各プロセッサ１０２は、更に、種々の入出力アダプタ（ＩＯＡ）１３０との入出力コミュニケーションをサポートする、１つまたは複数個（望ましくは多数）のホスト・ブリッジ１２０と、プロセッサ１０２がシステム・ファブリック１０４とコミュニケーションを行うために使用されるファブリック・インターフェース（ＦＩＦ）１１８とを含む。図示の実施例では、ホスト・ブリッジはすべてペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）ホスト・ブリッジ（ＰＨＢ）１２０として具現化されるが、別の実施例では、ホスト・ブリッジは１つ又は複数個の追加又は代替Ｉ／Ｏバス標準で具現化し得る。
【００１９】
ＰＨＢ１２０ａ、１２０ｋ、１２０ｍ、及び１２０ｖは、それぞれＰＣＩローカル・バス１２２ａ、１２２ｋ、１２２ｍ、及び１２２ｖに対するインターフェースを提供し、それらのＰＣＩローカル・バスに、ネットワーク・アダプタ、記憶装置コントローラ、周辺装置アダプタ等のようなどのＩＯＡ１３０が直接に又は間接的に連結されてもよい。例えば、ＰＣＩ・ＩＯＡ１３０ａは、１つ又は複数個のスイッチ及び／又はブリッジを含み得るＩ／Ｏファブリック１２４ａを介してＰＣＩローカル・バス１２２ａに任意選択的に結合される。同様に、ＰＣＩ・ＩＯＡ１３０ｋ及び１３０ｌは、Ｉ／Ｏファブリック１２４ｋを介してＰＣＩローカル・バス１２２ｋに任意選択的に結合され、ＰＣＩ・ＩＯＡ１３０ｍは、Ｉ／Ｏファブリック１２４ｍを介してＰＣＩローカル・バス１２２ｍに任意選択的に結合され、例えば、ディスプレイ・アダプタ及びハード・ディスク・アダプタを含み得るＰＣＩ・ＩＯＡ１３０ｖ及び１３０ｗは、Ｉ／Ｏファブリック１２４ｖを介してＰＣＩローカル・バス１２２ｖに任意選択的に結合される。
【００２０】
データ処理システム１００は、そのデータ処理システム１００のブート・プロセスを管理し、しかる後、そのデータ処理システム１００のパフォーマンス及び検知されたエラー状態をモニタ及びレポートするサービス・プロセッサ１４０を更に含む。サービス・プロセッサ１４０はシステム・ファブリック１０４に接続され、ローカル・メモリ１４２によってサポートされる。ローカル・メモリ１４２は、揮発性メモリ（例えば、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ））及び不揮発性メモリ（例えば、不揮発性ランダム・アクセス・メモリ（ＮＶＲＡＭ）又はスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ））を含み得る。サービス・プロセッサ１４０は、更に、メールボックス・インターフェース１４４に結合され、サービス・プロセッサ１４０がインターフェース１４４を介してＰＣＩバス１２２ａとのＩ／Ｏオペレーションを伝達する。
【００２１】
データ処理システムのアーキテクチャ及びコンポーネントが実施例の間で変わり得るということは、当業者には明らかであろう。例えば、他の装置又は相互接続体を代替的に又は付加的に使用することも可能である。従って、図１に示された例示的なデータ処理システム１００は、「特許請求の範囲」に記載された発明に関してアーキテクチャ上の限定を意味するものではない。
【００２２】
次に図２を参照すると、複数個の論理的パーティション（ＬＰＡＲ）にパーティション化されたデータ処理システム２００のハードウェア及びソフトウェア資源を示すデータ処理システムの論理的ブロック図を示す。データ処理システム２００は、例えば、図１におけるデータ処理システム１００と同じコンポーネント及び／又はアーキテクチャを持ち得るし、従って共通のコンポーネントを同じ参照番号でもって識別する。
【００２３】
データ処理システム２００は、プロセッサ１０２ａ〜１０２ｎ、システム・メモリ１１６ａ〜１１６ｎ、及びＩＯＡ１３０ａ〜１３０ｗを含むパーティション化されたハードウェア２０２の集合体を有する。パーティション化されたハードウェア２０２は、もちろん更なる揮発性又は不揮発性記憶装置、ポート、ブリッジ、スイッチ等のような更なる図示されてないコンポーネントを含み得る。パーティション化されたハードウェア２０２（又はそれの一部分）を含むハードウェア・コンポーネントは、仮想マシン・モニタ（ＶＭＭ）又はハイパーバイザとも呼ばれるシステム・ファームウェア２０４によってデータ処理システム２００における種々の論理的パーティション（ＬＰＡＲ）２１０ａ〜２１０ｐに割り付け可能である。システム・ファームウェア２０４は、データ処理システム２００のパーティション化されたハードウェアを仮想化することによって、多数の独立したオペレーティング・システム・インスタンスの同時実行をサポートする。
【００２４】
システム・ファームウェア２０４によって割り付けられたハードウェア資源に加えて、ＬＰＡＲ２１０ａ〜２１０ｐの各々は、多数の同時実行されるオペレーティング・システム・インスタンス２１２ａ〜２１２ｐのそれぞれの１つを含む。種々の実施例において、例えば、Linux（商標） 、AIX（商標）、及び／又はWindows（商標） のインスタンスを含み得るオペレ〜ティング・システム・インスタンス２１２ａ〜２１２ｐは同種又は異種のものであってもよい。更に、各ＬＰＡＲ２１０は、例えば、初期のブート・ストラップ・コード、IEEE−１２７５スタンダード・オープン・ファームウェア、及びランタイム・アブストラクション・ソフトウェア（ＲＴＡＳ）の組み合わせを用いて具現化することができるパーティション・ファームウェア２１４のそれぞれのインスタンスと図示されてないアプリケーション・プログラムを含み得る。ＬＰＡＲ２１０ａ〜２１０ｐがインスタンス化されるとき、ブート・ストラップ・コードのコピーが、システム・ファームウェア２０４によってパーティション２１０ａ〜２１０ｐ上にロードされる。しかる後、システム・ファームウェア２０４は制御をブート・ストラップ・コードに移す。一方、ブート・ストラップ・コードはオープン・ファームウェア及びＲＴＡＳをロードする。次に、各ＬＰＡＲ２１０に割り付けられたプロセッサ１０２は、ＬＰＡＲ２１０を立ち上げてＯＳインスタンス２１２の実行を開始させるためにそのＬＰＡＲ２１０のパーティション・ファームウェア２１４を実行する。
【００２５】
図２に示された論理的にパーティション化された環境では、サービス・プロセッサ１４０は、ＬＰＡＲ２１０ａ〜２１０ｐにおけるエラーの処理のような様々なサービスを提供するために使用することが可能である。これらのサービスは、データ処理システム２００のシステム管理者又はベンダーにエラーを報告するサービス・エージェントとしても機能し得る。種々のＬＰＡＲ２１０のオペレーションは、更に、ハードェア管理コンソール２２０を介して制御することが可能である。少なくとも１つの実施例では、ハードェア管理コンソール２２０は、システム管理者が、ＬＰＡＲ２１０を作成及び破壊すること並びにＬＰＡＲ２１０間でハードェア及びソフトウェア資源を再割り付けすることを含むデータ処理システム２００内の様々な機能を遂行し得る独立したデータ処理システムとして具現化することも可能である。
【００２６】
図２に示されたような論理的にパーティション化された環境では、１つのＬＰＡＲ２１０におけるハードェア又はソフトウェア資源が別のＬＰＡＲ２１０の資源を使うこと或いは別のＬＰＡＲ２１０におけるオペレーションに影響を与えることは許されない。更に、有用であるためには、ＬＰＡＲ２１０への資源の割り付けはきめ細かいことが必要である。例えば、特定のＰＨＢ１２０の下にあるすべてのＩＯＡ１３０を同じパーティションに割り付けることは、それがパーティション間に動的に再割り付けされた資源に対する能力を含むそのシステムの注文仕様生産（configurability）を制限するので、多くの場合受容できない。従って、ＰＨＢ１２０は、個々のＩＯＡ１３０（又は、それの一部分）のような資源を種々のＬＰＡＲ２１０に割り付けることができるが、その割り付けられた資源が他のＬＰＡＲ２１０の資源をアクセスすること又はそれに影響を与えることは阻止される。
【００２７】
種々のＬＰＡＲ２１０の資源間のそのような分離をサポートするために、データ処理システムのＩ／Ｏサブシステムは多数のパーティション化可能なエンドポイントに細分される。「パーティション化可能なエンドポイント」即ち「ＰＥ」は、本明細書では、Ｉ／Ｏサブシステムの任意のコンポーネント又はサブコンポーネントのＬＰＡＲとは無関係に割り付けることが可能なＩ／Ｏサブシステムの任意のコンポーネント又はサブコンポーネントとして定義される。例えば、或るＰＥは、共に機能する複数個のＩＯＡ及び／又はＩ／Ｏファブリックを含み、従って、単一のＬＰＡＲに１つのユニットとして割り付けられなけばならない。しかし、別のＰＥは、単一のＩＯＡの一部分、例えば、マルチポートＩＯＡの別々に構成可能な及び別々に割り付け可能なポートを含み得る。一般に、ＰＥはそれの構造によってではなくその機能によって識別されるであろう。
【００２８】
次に図３を参照すると、図１のデータ処理システム１００のような論理的にパーティション化されたデータ処理システムのＩ／Ｏサブシステム３００の少なくとも一部分のブロック図が示される。そのブロック図は、１つの実施例に従ってＬＰＡＲ２１０相互間の資源分離を示す。
【００２９】
図示の実施例では、Ｉ／Ｏサブシステム３００は、Ｉ／Ｏファブリック１２４を介して複数個のＩＯＡ３０２ａ〜３０２ｇに接続されたＰＨＢ１２０を含む。一方、Ｉ／Ｏファブリック１２４は、スイッチ３１０ａ、３１０ｂ、ＰＣＩエクスプレス（ＰＣＩ−Ｅ）バス３２０、３２２、３２４、及び３２６、ＰＣＩブリッジ３１２ａ及び３１２ｂ、第２のバス３４０、３４２、３４４、及び３４６を含む。
【００３０】
更に図３に示されるように、システム・ファームェア２０４（図２）は、データ処理システムのＬＰＡＲ２１０のうちのいずれにも無関係にそれぞれ割り付け可能な複数個のＰＥ３５０ａ〜３５０ｄを形成するようにＩ／Ｏサブシステム３００の種々のコンポーネントをグループ化する。所与の例では、ＰＥ３５０ａ及びＰＥ３５０ｃの各々は単一のＩＯＡ、即ち、ＩＯＡ３０２ａ、３０２ｄを含む。対照的に、ＰＥ３５０ｂは、同じＬＰＡＲ ２１０に割り付けられなければならない２つのＩＯＡ３０２ｂ及び３０２ｃを含み、ＰＥ ３５０ｄは、ＰＥとして共に機能し、従って同じＬＰＡＲ２１０に割り付けられなければならない３つのＩＯＡ３０２ｅ、３０２ｆ、及び３０２ｇ、並びにＰＣＩブリッジ３１２ｂを含む。前述のように、別の実施例では、ＰＥはＩＯＡの一部分だけ（例えば、１つ又は複数個のポート）を含み得る。
【００３１】
Ｉ／Ｏサブシステム３００において、本明細書ではパーティション化可能なエンドポイント状態と呼ばれる各ＰＥのそれぞれの状態が、関連するＰＨＢ１２０において維持される。従って、例えば、Ｉ／Ｏサブシステム３００のＰＨＢ１２０はパーティション化可能なエンドポイント状態レジスタ３６０ａ〜３６０ｄを含み、それらのレジスタはそれぞれＰＥ ３５０ａ〜３５０ｄに対応し、それらの状態を表わす。
【００３２】
システム・ファームウェア２０４は、各ＰＥに、それのコンポーネントをそのＰＥに関連付ける１つ又は複数個の領域番号（即ち、要求元ＩＤ（ＲＩＤ））を割り付ける。１つの実施例では、各ＰＥに割り付けられた領域番号は、そのＰＥにおけるＩ／Ｏコンポーネントの相互間を区別するためにも使用し得る複数個のフィールドを含む。例えば、これらのフィールドは次のものを含み得る。 
・  バス番号（Ｂｕｓ）フィールド：一意的なバス番号を有するＰＨＢに属する各バスを、Ｉ／Ｏ資源間の最高レベルの区域に与える。 
・  デバイス番号（Ｄｅｖ）フィールド：異なるデバイス番号を有する所与のバス上の各ＩＯＡを、Ｉ／Ｏ資源間の中間レベルの区域に与える。 
・  機能番号（Ｆｕｎｃ）フィールド：異なる機能番号を有するＩＯＡの各個別の機能を、Ｉ／Ｏ資源間の最低レベルの区域に与える。
【００３３】
明らかなように、領域番号（即ち、ＲＩＤ）は、最低レベルのＩ／Ｏ機能に至るまでＩ／Ｏ資源の区分けをサポートする。例えば、領域番号は、多数の機能ＩＯＡのうちの個別の機能が区別されることを可能にする。そのような微妙な細分性を必要としないデータ処理システムでは、領域番号は、同じＰＨＢに接続されたＰＥ間の区別を可能にするバス・フィールド単独によって、或いは１つのＰＥのＩＯＡ間の区別又は多数の機能ＩＯＡを含む１つのＰＥ内のＩＯＡの機能間の区別を可能にするためにＤｅｖフィールド又はＦｕｎｃフィールドと共にバス・フィールドによって定義することを可能にする。バス、バス／Ｄｅｖフィールド、又はバス／Ｄｅｖ／Ｆｕｎｃフィールドから成る領域番号スペースの希薄さは、多くの場合、これらのフィールドによって定義された領域番号スペースを、ＰＨＢ１２０による内部用途にとっては余り希薄でないものまで圧縮することを望ましくする。
【００３４】
図３のＰＨＢ１２０に含まれた分離機能の中には、ＰＥエラー領域を分離する能力がある。論理的にパーティション化されたデータ処理システムでは、種々のＰＥを種々のＬＰＡＲに割り付けることが可能である。従って、ＰＨＢ１２０は、１つのＰＥにおいて生じるエラーが、そのＰＥに割り付けられる特定のＬＰＡＲに分離されることを可能にする。更に詳しく云えば、各ＰＨＢ１２０は、エラー（停止状態と呼ばれる）が検知されたとき、ＰＥからの及びＰＥへのＩ／Ｏオペレーションを停止する機能を含んでいる。Ｉ／Ｏオペレーションの停止は、望ましくは、次のような方法で達成される。
１．ＰＥは、下記のように、即ち、
ａ．ＰＥがいずれのＬＰＡＲにもエラーを伝播しないように、及び 
ｂ．Ｉ／Ｏオペレーションの要求元が誤りのあるデータを使用しないように、
エラーでＩ／Ｏオペレーションを終了することを防ぐ。
２．オペレーションの停止は、デバイス・ドライバにはちょうどそのデバイス・ドライバまで分離されているように見えなければならない。 
３．１つのＰＥのためのソフトウェア（デバイス・ドライバ・レベルにおけるもの、又はそれ以上のもの）は、別のＰＥを停止状態に入らせ得るエラーを導入しない。 
４．問題決定に関する誤り情報は、停止状態が生じた後に捕捉される。 
５．ＰＥのうちのいずれか又はすべてが停止状態にあるとき、ファームェアは、ＰＨＢより下の構成空間をアクセスし得る。 
【００３５】
これらの基準に従ってエラー処理を達成するために、各ＰＨＢは、望ましくは、Ｉ／Ｏ構成オペレーションのために特定のエラー領域を識別する分離機能を提供する。好ましい実施例では、構成オペレーション・エラー領域機能は、システム・ファームェアによってセットすることができる構成ＰＥ番号フィールドをＰＨＢのレジスタにおいて具現化することによって可能になる。更に、好ましい実施例では、各ＰＨＢは、Ｉ／Ｏメッセージの影響を受ける１つ又は複数個のＰＥ番号を決定し、それらのＰＥの制御に特化したソフトウェアのみにそのＩ／Ｏメッセージを送る。
【００３６】
効果的な分離機能を提供することに加えて、特にＰＨＢが一般的な集積回路チップ内にプロセッサと共に統合される実施例では、ＤＭＡメッセージ及びＩ／Ｏエラー・メッセージのようなルーチン・メッセージ、を処理する場合に利用されるＰＨＢ内のデータ構造のサイズを縮小することも望ましい。従って、以下で更に述べるように、ＰＨＢ内に具現化されるデータ構造の設置面積は、ＤＭＡ及びＩ／Ｏエラー・メッセージのようなＩ／Ｏメッセージの影響を受けるＰＥの決定の改良によって縮小することができる。
【００３７】
次に図４を参照すると、前記米国特許第７,３９８,４２７号に開示されるように、プロセッサから分離した集積回路チップにおいて具現化される従来のＰＨＢ４００が示される。ＰＨＢ４００は、変換及び検証テーブル（ＴＶＴ）４０２と呼ばれるワイド・データ構造を含む。ＴＶＴ４０２は、複数個の変換及び検証エントリ（ＴＶＥ）４０４を含む。図５に示されるように、従来の各ＴＶＥ４０４は、要求元ＩＤ（ＲＩＤ）及びそのＲＩＤを検証するための制御情報を指定するＲＩＤ及びＲＩＤ検証制御フィールド４３０と、そのＲＩＤに関連するＰＥを表わすＰＥ＃フィールド４３２と、変換制御エントリ（ＴＣＥ）テーブル・サイズ・フィールド４３４と、Ｉ／Ｏページ・サイズ・フィールド４３６と、指定されたＰＥのためのＴＣＥテーブルのベース・アドレスを表わすＴＣＥテーブル開始アドレス・フィールド４３８と、を含む多数のフィールドを含む。
【００３８】
ＰＨＢ４００（図４）は、ダイレクト・メモリ・アクセス（ＤＭＡ）要求のＲＩＤを検証し、ＴＶＴ４０２を参照することによってＲＩＤを特定のＰＥに変換する。図示のように、ＰＨＢ４００は、ＲＩＤ４１０（バス番号、デバイス番号、及び機能番号を含む）及びＤＭＡアドレス４１２を含む、ダイレクト・メモリ・アクセス（ＤＭＡ）パケットを受け取る。ＤＭＡアドレス４１２における数ビットは、アクセスのために特定のＴＶＥ４０４を選択するＴＶＴ４０２へのＴＶＥインデックス（ＴＶＥＩ）４１４を形成する。一旦ＴＶＥ４０４が選択されると、ＰＥ＃フィールド４３２の内容が、ＰＥの現状を決定するために読み出される。更に、ＲＩＤ及びＲＩＤ検証制御フィールド４３０の内容が、ブロック４２０に示されるような到来するＲＩＤ４１０と比較される。ＲＩＤ４１０がフィールド４３０において指定されたＲＩＤと一致しない場合、ＰＨＢ４００は、要求されたＤＭＡオペレーションが遂行されることを許容しない。ブロック４２２に示されるように、ＰＨＢ４００は更にＤＭＡアドレス４１２の下位桁ｎビット（２ｎは、選択されたＴＶＥ４０４のＩ／Ｏページ・サイズ・フィールド４３６によって指定されたＩ／Ｏページ・サイズである）を切り捨て、ＴＶＥＩ４１４より低い残りのＤＭＡアドレス・ビットを、その選択されたＴＶＥ４０４のＴＣＥテーブル・サイズ・フィールド４３４と比較する。ＤＭＡアドレス４１２が関連のＴＣＥテーブルの端部の外のアドレスを指定する場合、ＰＨＢ４００はＤＭＡオペレーションを許容しない。一方、ブロック４２０及び４２２に示された検証が成功する場合、ＰＨＢ４００は、ＴＣＥ開始アドレス・フィールド４３８の内容によって指示される、そのＰＥのためのメモリ内ＴＣＥテーブルに含まれたＤＭＡアドレスから実アドレスへの変換を利用してその要求されたＤＭＡオペレーションを行なう。
【００３９】
図４及び図５に示された従来のＴＶＥ４０４は多数のマルチ・ビット・フィールドを含み、従って、従来のＴＶＴ４０２はかなりのダイ・エリアを必要とする大きなデータ構造である。更に、各ＰＥは、それ自身のアプリケーションのためのＤＭＡアドレス４１２のＴＶＥＩフィールド４１４を使用せず、それは、ＤＭＡアドレス空間が種々のＰＥのための異なる非連続空間に区分けされることを意味する。
【００４０】
次に、図６を参照すると、一実施例に従って改善されたＰＨＢ１２０の更に詳細なブロック図が示される。一般に、ＰＨＢ１２０のダイ・エリアを縮小することが望ましく、特に、図１に示されるようにＰＨＢ１２０がプロセッサ１０２の集積回路チップ内に統合される好ましい実施例ではＰＨＢ１２０のダイ・エリアを縮小することが望ましい。ＰＨＢ１２０のダイ・エリアの縮小に寄与する１つの要因は、ＩＯＡ １３０、Ｉ／Ｏブリッジ３１２、及びスイッチ３１０のような様々なＩ／Ｏコンポーネントから受け取られたＤＭＡ及びＩ／Ｏエラー・メッセージを検証及び変換するために利用されるＰＨＢ１２０内のデータ構造のサイズの縮小である。詳しく云えば、以下で更に詳述されるように、従来の各ＴＶＥ４０４において既にわかっている１６ビットのＲＩＤフィールド及びＰＥ＃フィールドは排除され得るし、それはＴＶＥの幅の著しい縮小並びにＴＶＴ及びＰＨＢ１２０のフットプリント全体の付随的縮小をもたらす。
【００４１】
図６に示された構成では、例えば、ＬＰＡＲ２１０間のＩ／Ｏ資源の割り付けに基づいてシステム・ファームェア２０４により追加及び維持することが可能なＲＩＤ変換テーブル（ＲＴＴ）５００が、複数個のＲＩＤ変換エントリ（ＲＴＥ）５０２を含む。各ＲＴＥ５０２は、一般的な１６ビットＰＣＩ−ＲＩＤ４１０のようなそれぞれのＲＩＤをＰＥに関連付ける。ＲＴＴ５００は、ＰＨＢ１２０において、或いは、更に望ましくは、システム・メモリ１１６のようなオフ・チップ記憶ロケーションにおいて、具現化することが可能である。ＲＴＴ５００がオフ・チップで具現化される実施例では、ＰＨＢ１２０は、極最近アクセスされたＲＴＥ５０２のコピーへの低遅延アクセスを行なうために小型のオン・チップＲＩＤ変換キャッシュ（ＲＴＣ）５０４を任意選択的に含み得る。
【００４２】
図６は、ＰＨＢ１２０が、複数個のＴＶＥ５１２を含む最新式のＴＶＴ５１０を有するものを示す。図７に示されるように、各ＴＶＥ５１２は、ＤＭＡの元になるＰＥのための変換制御エントリ（ＴＣＥ）テーブル５６０のテーブル・サイズを表わすＴＣＥテーブル・サイズ・フィールド５３４と、Ｉ／Ｏページ・サイズ・フィールド５３６と、ソースＰＥに対するイン・メモリＴＣＥテーブル５６０のベース・アドレスを表わすＴＣＥテーブル開始アドレス・フィールド５３８とを含む少数のビット・フィールドを含む。ＴＶＥ５１２が一般的なフィールド４３０及び４３２に対応するフィールドを欠いており、その結果ＴＶＴ５１０においてかなりのサイズ縮小を生じるということは、図５に比較すれば明らかである。
【００４３】
次に、ＤＭＡ要求をサービスする場合のＰＨＢ１２０のオペレーションを、図６及び図７並びに、図８に示される高レベルの論理的フローチャートを更に参照して説明する。そのプロセスはブロック６００で始まり、次に、ブロック６０２に進む。ブロック６０２は、ＰＨＢ１２０が、それが結合されるＩ／Ｏコンポーネントの１つから、一般的なＲＩＤ４１０及びＤＭＡアドレス５４０を含むダイレクト・メモリ・アクセス（ＤＭＡ）オペレーションを受け取ることを示す。ＰＨＢ１２０は、ＲＴＣ５０４（それが存在する場合）から又はＲＴＴ５００から、特定のＲＴＥ５０２をアクセスするためにＤＭＡオペレーションのＲＩＤ４１０を利用する（ブロック６０４）。そのアクセスされたＲＴＥ５０２が１つのＰＥを指定し、ＰＨＢ１２０がそのＰＥの現在の状態をアクセスする。ＰＨＢ１２０は、ＴＶＴ５１０をアクセスするために、そのアクセスされたＲＴＥ５０２によって指定されたＰＥ＃を利用する（ブロック６０６）。各ＰＥが単一の関連するＴＶＥ５１２を有する実施例では、ＰＥ＃はＴＶＴ５１０に直接インデックス付けする。各ＰＥが（例えば、少なくともいくつかのＰＥに対して多数のＩ／Ｏページ・サイズを可能にするために）１つ又は複数個のＴＶＥ５１２を有し得る別の実施例では、ＰＨＢ１２０は、ＤＭＡアドレス５４０からの１つ又は複数個のＰＥインデックス（ＰＥＩ）ビット５１４を利用してその選択されたＰＥに関連した多数のＴＶＥ５１２の間を選択する。ＰＥＩ５１４の使用は図４のＴＶＥＩ４１４のように、異なるＰＥ間のＤＭＡアドレス空間を切り分けず、選択されたＰＥのアドレス空間内のＤＭＡアドレス空間を単に分割し、従って、ＤＭＡアドレス空間全体を各ＰＥにとって利用可能にする。
【００４４】
図８のプロセスは、ブロック６０６に続いてブロック６０８に進む。ブロック６０８は、ＰＨＢ１２０におけるＤＭＡアドレス検証ロジック５５０を示す。そのロジックは、ＤＭＡアドレス５４０の下位桁ｎビットを切り捨て（この場合、２ｎは、選択されたＴＶＥ５１２のＩ／Ｏページ・サイズ・フィールド５３６によって指定されたＩ／Ｏページ・サイズである）、残りの上位桁ＤＭＡアドレス・ビットをその選択されたＴＶＥ５１２のＴＣＥテーブル・サイズ・フィールド５３４の内容と比較する。ブロック６１０に示されるように、ＤＭＡアドレス５４０が関連のＴＣＥテーブル５６０の端部を越えたアドレスを指定する場合、検証は失敗し、ＰＨＢは、プロセスがブロック６１６において終了することによって示されるようにＤＭＡオペレーションを許容しない。一方、ブロック６１０における肯定的な決定によって示されるように、ＤＭＡアドレス５４０が検証に合格する場合、ＰＨＢ１２０はＤＭＡアドレス５４０をシステム・メモリ１１６における実アドレスに変換する（ブロック６１２）。１つの実施例では、ＰＨＢ１２０は、選択されたＴＶＥ５１２のＴＣＥテーブル開始アドレス・フィールド５３８の内容と、ＰＥＩ５１４及びｎ個の下位桁アドレス・ビットの間のＤＭＡの中間桁ビットとを結合することによって形成されたアドレスによって指示された特定のＴＣＥを利用して、イン・メモリＴＣＥテーブル５６０を参照することによりアドレス変換を行う。しかる後、ＰＨＢ１２０は、要求されたＤＭＡオペレーションの遂行を起動するために、アドレス変換によって得られたシステム・メモリ・アドレス（例えば、実アドレス）を使用して、ターゲット・システム・メモリ１１６のＩＭＣ１１４にそのＤＭＡオペレーションを送る（ブロック６１４）。しかる後、図８に示されたプロセスは、ブロック６１６において終了する。
【００４５】
図９、図１０、図１１、図１２、及び図１３を参照して更に後述するように、ＰＨＢ１２０におけるデータ構造のサイズを最小化しながらＰＥ相互間の分離を行うための同様の技法が、Ｉ／Ｏエラー・メッセージの分離にも適用可能である。
【００４６】
先ず図９を参照すると、従来技術でＩ／Ｏ（例えば、ＰＣＩｅ）エラー・メッセージを処理する場合に利用されるデータ構造を示す図４の一般的なＰＨＢ４００に関する別の見解が示される。図示のように、前述のデータ構造に加えて、ＰＨＢ４００は、ＰＥルックアップ・テーブル（ＰＥＬＴ）７００と呼ばれる幅広いデータ構造を有する。高価な連想メモリ（ＣＡＭ）において具現化されるＰＥＬＴ７００は、複数個のＰＥルックアップ・エントリ（ＰＥＬＥ）７０２を含む。図１０に示されるように、一般的な各ＰＥＬＥ７０２は、要求元ＩＤ（ＲＩＤ）及びそのＲＩＤを検証するための制御情報を指定するＲＩＤ及びＲＩＤ検証制御フィールド７１０と、どの制御ＰＥ番号がＩ／Ｏエラーの影響を受けるかをセット・ビット（例えば、１）によって表わすＰＥルックアップ・ベクトル（ＰＥＬＶ）フィールド７１２と、を含む。
【００４７】
従来技術では、ＰＨＢ４００は、ＰＣＩｅエラー・メッセージ７０４及びどのＩ／ＯコンポーネントがＰＣＩｅエラー・メッセージ７０４のソースであるかを識別するＲＩＤ４１０を一緒に受け取る。それに応答して、ＰＨＢ４００は、ＲＩＤ４１０を利用してＰＥＬＴ７００へのアクセスを行ない、そのＲＩＤとＲＩＤ検証制御フィールド７１０内の一致ＲＩＤを含む一致ＰＥＬＥ７０２を識別する。しかる後、ＰＨＢ４００は、一致ＰＥＬＥ７０２のＰＥＬＶフィールド７１２によって指定された各ＰＥに対するＰＣＩｅエラー・メッセージを処理する。
【００４８】
次に図１１を参照すると、１つの実施例に従って、改善されたＰＨＢ１２０の詳細な図が示される。上述したように、特に、図１に示されるようにＰＨＢ１２０がプロセッサ１０２内に統合される好ましい実施例では、ＰＨＢ１２０のダイ・エリアを縮小することが望ましい。ＰＨＢ１２０のダイ・エリアの縮小に寄与する１つの要因は、一般的な各ＰＥＬＥ７０２において見られるＲＩＤフィールドの除去であり、それはＰＥＬＥの幅の著しい減少、及びＰＨＢ１２０の全体的なフットプリントの付随的縮小に通じる。更に、一般的なＰＥＬＴ７００を具現化するために利用されたような高価なＣＡＭの利用を減少又は排除することが望ましい。
【００４９】
従って、図１１に示された構成では、システム・メモリ１１６において好適に具現化されるＲＴＴ５００は、一般的な１６ビットのＰＣＩ−ＲＩＤ４１０のようなＰＨＢ１２０によって受け取られ得る可能な各ＲＩＤをＰＥに関連付けるために再び利用される。前述したように、ＲＴＴ５００がオフ・チップで具現化される実施例においてアクセス待ち時間を縮小するために、ＰＨＢ１２０は、極最近アクセスされたＲＴＥ５０２のコピーに少ない待ち時間アクセスを行うために、小型のオンチップＲＴＣ５０４を任意選択的に含み得る。
【００５０】
更に、図１１は、望ましくは低価格の非ＣＡＭ技術（例えば、ＤＲＡＭ）を用いて具現化されるシステム・メモリ１１６が、望ましくは、複数個のＰＥＬＥ８０２を含む簡素化されたＰＥＬＴ５１０を具現化するということを示す。図１２に示されるように、各ＰＥＬＥ８０２は、各々が複数個のＰＥ番号のそれぞれ１つに対応する複数個のビットを有するＰＥＬＶ８０４を含む。上述したように、ＰＥＬＶ８０４は、所与のＲＩＤで生じたエラーを処理しなければならないＰＥを、１つ又は複数個のセット・ビット（例えば、１）によって識別する。例えば、エラーが、多数のＰＥに結合されたＩ／Ｏコンポーネント（例えば、スイッチ３１０）或いは単一のデバイスに関連した多数の機能（例えば、ＩＯＡ １３０の多数のポート）に関連した場合、多数のＰＥがそのエラーに関与することがある。ＰＥＬＥ８０２が一般的なフィールド７１０に対応するフィールドを欠き、その結果、ＰＥＬＴ８００においてかなりのサイズ縮小を生じることに留意すべきである。
【００５１】
Ｉ／Ｏエラー・メッセージを処理する場合のＰＨＢ１２０のオペレーションが、図１３に示された高レベルの論理的フローチャートを更に参照して説明される。Ｉ／Ｏエラー・メッセージ処理プロセスがブロック９００で始まり、ブロック９０２に進む。ブロック９０２は、ＰＨＢ１２０が、エラー・メッセージ７０４及びそのＩ／Ｏエラー・メッセージのソースを識別するＲＩＤ４１０を含むＩ／Ｏエラー・メッセージ・パケットを受け取るということを表わす。ＰＨＢ１２０は、ＲＴＣ５０４（それが存在する場合）又はＲＴＴ５００から特定のＲＴＥ５０２をアクセスするためにＩ／Ｏエラー・パケットのＲＩＤ４１０を利用する（ブロック９０４）。アクセスされたＲＴＥ５０２は、ＰＨＢ１２０がＰＥＬＴ８００をアクセスするためにダイレクト・インデックスとして利用するＰＥ＃を指定する（ブロック９０６）。ＰＥＬＴ８００へのダイレクト・インデックスが利用可能であるので、高価なＣＡＭにおいてＰＥＬＴ８００を具現化することが必要ないことに留意すべきである。
【００５２】
次に、ブロック９０８において、ＰＨＢ１２０は、ＰＥＬＴ８００における選択されたＰＥＬＥ８０２のＰＥＬＶフィールド８０４においてどのビットがセットされているかを調べることによって、どのＰＥがＩ／Ｏエラーの影響を受けるかを決定する。影響を受けるＰＥを決定したことに応答して、ＰＨＢ１２０におけるＩ／Ｏエラー処理ロジック８１０は、影響を受けるＰＥ関するエラーを処理する責任のあるエラー処理ソフトウェアのみ（例えば、１つ又は複数のＯＳ２１２のデバイス・ドライバ・ソフトウェア）に、必要に応じてＩ／Ｏエラーを信号する（ブロック９１０）。しかる後、エラー処理プロセスはブロック９１２において終了する。
【００５３】
上述したように、或る実施例では、データ処理システムは、プロセッサ・コア、システム・メモリ、及び入出力（Ｉ／Ｏ）サブシステムを含む。システム・メモリは、要求元識別子（ＩＤ）をパーティション化可能なエンドポイント（ＰＥ）番号にマップする複数個のエントリを含む。Ｉ／Ｏサブシステムは、各々が関連のＰＥ番号を有する複数個のＰＥを含み、その複数個のＰＥの各々は、各々がそれぞれの要求元ＩＤを有する１つ又は複数の要求元を含む。Ｉ／Ｏホスト・ブリッジが、要求元ＩＤ及びアドレスを含むＩ／Ｏメッセージを受け取ったことに応答して、第１のデータ構造からの第１のエントリを参照することによりＰＥ番号を決定し、ＰＥ番号の決定に応答して、そのＰＥ番号をインデックスとして利用して第２のデータ構造の第２のエントリをアクセスし、第２のデータ構造におけるそのアクセスされたエントリを参照することによりそのアドレスを検証する。Ｉ／Ｏホスト・ブリッジは、検証の成功に応答して、Ｉ／Ｏメッセージにより表わされたサービスを提供する。
【００５４】
上記の説明は、例証と詳述とを目的に示され、網羅的であること又は開示された構造及びプロセスに限定されることを意図するものではない。多くの修正及び変更が当業者には明らかであろう。本発明の動作原理及び実用的応用例の最善の説明のために、及び当業者が、意図された特定の用途に適した何らかの修正を施す場合に種々の実施例における開示された技術を理解及び応用することを可能ならしめるために、様々な実施例が選択され、記述された。
【００５５】
１つ又は複数個の好ましい実施例に関して説明したように本発明を詳細に示したが、本発明の趣旨及び技術的範囲から逸脱することなく、実施形態及び詳細における種々の変更を行い得ることは当業者には明らかであろう。例えば、本発明は完全に機能するデータ処理システムとの関連で説明されているが、本発明のプロセスが、プログラム・コードを記憶したコンピュータ可読記憶媒体を含むコンピュータ・プログラム製品の形で流通し得るということは当業者には明らかであろう。コンピュータ可読記憶媒体の例は、ハード・ディスク・ドライブ、ＲＡＭ又は他の揮発性メモリ、不揮発性メモリ、及び光学的記憶媒体を含む。
【００５６】
本願は、次のような同じ出願人により同時出願された未決の米国特許出願、即ち、米国特許出願１２／８４９,９２５号、同１２／８４９,９８０号、同１２／８５０,００８号、及び同１２／８５０,０４０号を関連出願とするものである。
【図１】
0005431621.tif 000002
【図２】
0005431621.tif 000003
【図３】
0005431621.tif 000004
【図４】
0005431621.tif 000005
【図５】
0005431621.tif 000006
【図６】
0005431621.tif 000007
【図７】
0005431621.tif 000008
【図８】
0005431621.tif 000009
【図９】
0005431621.tif 000010
【図１０】
0005431621.tif 000011
【図１１】
0005431621.tif 000012
【図１２】
0005431621.tif 000013
【図１３】
0005431621.tif 000014