JP5731642B2 - アダプタのアドレス・スペースへのゲスト・アクセスのための方法、システム、およびコンピュータ・プログラム - Google Patents

アダプタのアドレス・スペースへのゲスト・アクセスのための方法、システム、およびコンピュータ・プログラム Download PDF

Info

Publication number
JP5731642B2
JP5731642B2 JP2013515726A JP2013515726A JP5731642B2 JP 5731642 B2 JP5731642 B2 JP 5731642B2 JP 2013515726 A JP2013515726 A JP 2013515726A JP 2013515726 A JP2013515726 A JP 2013515726A JP 5731642 B2 JP5731642 B2 JP 5731642B2
Authority
JP
Japan
Prior art keywords
adapter
guest
instruction
function
pci
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
JP2013515726A
Other languages
English (en)
Other versions
JP2013534666A (ja
JP2013534666A5 (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 JP2013534666A publication Critical patent/JP2013534666A/ja
Publication of JP2013534666A5 publication Critical patent/JP2013534666A5/ja
Application granted granted Critical
Publication of JP5731642B2 publication Critical patent/JP5731642B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • 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/0038System on Chip

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、一般にコンピューティング環境の入力/出力処理に関し、具体的にはコンピューティング環境のアダプタに関連付けられた仮想処理に関する。
コンピューティング環境は、様々なタイプのアダプタを含む、1つまたは複数のタイプの入力/出力デバイスを含むことができる。アダプタのタイプの1つが、周辺装置相互接続(PCI)または周辺装置相互接続エクスプレス(PCIe)アダプタである。このアダプタは、アダプタとアダプタが接続されているシステムとの間でデータを通信する際に使用される、1つまたは複数のアドレス・スペースを含む。PCI規格は、www.pcisig.com/homeのワールド・ワイド・ウェブから入手可能である。
いくつかのシステムでは、アダプタに結合された中央処理ユニット(CPU)のアドレス・スペースの一部が、アダプタのアドレス・スペース内のデータを直接操作するためにストレージにアクセスするアダプタ実行可能CPU命令のアドレス・スペースにマッピングされる。このアドレス・スペースのマッピングは、時にはメモリ・マップI/Oと呼ばれる。
2008年3月4日発行のMadukkarumukumana等による「Fault Processing for Direct Memory Access Address Translation」という名称の米国特許第7340582号明細書では、本発明の実施形態は、直接メモリ・アクセス・アドレス変換において障害を処理するための技法である。レジスタ・セットは、I/Oデバイスによって要求された入力/出力(I/O)トランザクションによって生成される障害の障害処理に関する、グローバル制御または状況情報を記憶する。アドレス変換構造は、ゲスト物理アドレスをホスト物理アドレスに変換する。ゲスト物理アドレスはI/Oトランザクションに対応し、ドメインにマッピングされる。アドレス変換構造は、少なくとも、障害処理に関するドメインおよびドメイン特有の制御情報に関連付けられたエントリを有する。
2008年10月28日発行のSchoinas等による「Address Translation for Input/Output Devices Using Hierarchical Translation Tables」という名称の米国特許第7444493号明細書では、本発明の実施形態は、アドレス変換を実行するための技法である。テーブル構造は、ゲスト物理アドレスを指定する入力/出力(I/O)トランザクションのソース識別子によってインデックス付けされ、I/Oデバイスに割り当てられたドメインにI/OデバイスをマッピングするようI/Oデバイスによって要求される。アドレス変換構造は、ゲスト物理アドレスを、I/Oトランザクションに対応するホスト物理アドレスに変換する。
2009年11月3日発行のKjos等による「Partially Virtualizing an I/O Device for Use By Virtual Machines」という名称の米国特許第7613847号明細書は、物理コンピュータと、物理コンピュータ上で実行可能であり、物理コンピュータを制御するように適合された少なくとも1つのゲスト・オペレーティング・システムのエミュレーションを作成するように構成された、仮想マシン・モニタとを備える、コンピュータ・システムについて説明している。コンピュータ・システムは、仮想マシン・モニタおよび少なくとも1つのゲスト・オペレーティング・システムの代わりに物理コンピュータに結合された物理リソースを管理する物理コンピュータ上で実行可能なホストを、さらに備える。ホストは、周辺装置相互接続(PCI)構成アドレス・スペースを仮想化するように適合され、それによって少なくとも1つのゲスト・オペレーティング・システムは、直接およびI/Oエミュレーションなしに、PCI入力/出力(I/O)デバイスを制御する。
米国特許第7340582号明細書 米国特許第7444493号明細書 米国特許第7613847号明細書 米国特許証第5551013号 米国特許証第6009261号 米国特許証第5574873号 米国特許証第6308255号 米国特許証第6463582号 米国特許証第5790825号
2009年2月、IBM(R)出版の「z/Architecture Principles of Operation」と題する、IBM Publication No.SA22−7832−07 2001年10月、IBM出版の「z/VM:Running Guest Operating Systems」と題する、IBM Publication No.SC24−5997−02 2003年5月、IBM出版の「z/VM:General Information Manual」と題する、IBM Publication No.GC24−5991−05
従って、本発明が解決しようとする課題は、アダプタのアドレス・スペースへのゲスト・アクセスのための方法、システム、およびコンピュータ・プログラムを提供することである。
一実施形態では、アダプタのアドレス・スペースへの直接アクセスが、ホストの介入なしにホスト上で実行しているゲスト・オペレーティング・システムに提供される。
コンピューティング環境内でアダプタへのアクセスを提供するためのコンピュータ・プログラム製品の提供を通じて、従来技術の欠点が克服され、利点が提供される。コンピュータ・プログラム製品は、処理回路によって読み取り可能であり、方法を実行するための処理回路による実行に関する命令を記憶する、コンピュータ読み取り可能記憶媒体を含む。方法は、たとえば、アダプタにアクセスするための要求を含むゲスト命令を実行すること、ゲスト命令がアダプタに直接アクセスすることを許可されているかどうかを決定すること、許可されていることに応答して、ホストの介入なしにアダプタの1つまたは複数のアドレス・スペースに直接アクセスする実行、および、許可されていないことに応答して、ホスト・オペレーティング・システムへインターセプトすること(intercept)ことを生じさせる実行を含む。
本発明の1つまたは複数の態様に関する方法およびシステムについても、本明細書で説明および請求されている。
本発明の諸技法を介して、追加の特徴および利点が実現される。本発明の他の実施形態および態様が本明細書で詳細に説明され、請求された本発明の一部とみなされる。
次に、本発明の好ましい実施形態について、添付の図面を参照しながら単なる例として説明する。
本発明の1つまたは複数の態様を組み込みおよび使用するための、コンピューティング環境の一実施形態を示す図である。 本発明の態様に従って使用される、デバイス・テーブル・エントリの一例を示す図である。 本発明の1つまたは複数の態様を組み込みおよび使用するための、中央処理コンプレックスの一実施形態を示す図である。 本発明の態様に従った、アダプタ機能のアドレス・スペースの一例を示す図である。 本発明の態様に従って使用される、機能テーブル・エントリの一例を示す図である。 本発明の態様に従って使用される、機能ハンドルの一実施形態を示す図である。 本発明の態様に従った、アダプタ機能からデータを読み取るPCIロード命令の一例を示す図である。 本発明の態様に従った、アダプタ機能へデータを書き込むPCI記憶動作の一実施形態を示す図である。 本発明の態様に従った、アダプタ機能へデータを書き込むブロック記憶動作の一実施形態を示す図である。 本発明の態様に従った、アダプタ機能のアドレス・スペースへのゲスト直接アクセスを実行可能にするために、ホストによって実行されることになる初期化の一実施形態を示す図である。 本発明の態様に従った、ゲストの代わりに実行される認証処理の一実施形態を示す図である。 本発明の態様に従って使用される、論理プロセッサ呼び出し命令の一実施形態を示す図である。 本発明の態様に従った、図12の論理プロセッサ呼び出し命令によって使用される要求ブロックの一実施形態を示す図である。 本発明の態様に従った、図12の論理プロセッサ呼び出し命令によって提供される応答ブロックの一実施形態を示す図である。 本発明の態様に従った、PCI機能を実行可能にするための論理の一実施形態を示す図である。 本発明の態様に従って使用される、PCI機能制御修正命令の一実施形態を示す図である。 本発明の態様に従った、図16のPCI機能制御修正命令によって使用されるフィールドの一実施形態を示す図である。 本発明の態様に従った、図16のPCI機能制御修正命令によって使用される他のフィールドの一実施形態を示す図である。 本発明の態様に従って使用される、機能情報ブロック(FIB)のコンテンツの一実施形態を示す図である。 本発明の態様に従った、PCI機能制御修正命令の論理の概要の一実施形態を示す図である。 本発明の態様に従った、PCI機能制御修正命令によって指定可能なセット・インターセプション(interception)制御動作の一実施形態を示す図である。 本発明の態様に従って使用される、PCIロード命令の一実施形態を示す図である。 本発明の態様に従った、図22のPCIロード命令によって使用されるフィールドの一実施形態を示す図である。 本発明の態様に従った、図22のPCIロード命令によって使用される他のフィールドの一実施形態を示す図である。 本発明の態様に従った、PCIロード動作を実行するための論理の一実施形態を示す図である。 本発明の態様に従った、PCIロード動作を実行するための論理の一実施形態を示す図である。 本発明の態様に従って使用される、PCI記憶命令の一実施形態を示す図である。 本発明の態様に従った、図27のPCI記憶命令によって使用されるフィールドの一実施形態を示す図である。 本発明の態様に従った、図27のPCI記憶命令によって使用される他のフィールドの一実施形態を示す図である。 本発明の態様に従った、PCI記憶動作を実行するための論理の一実施形態を示す図である。 本発明の態様に従った、PCI記憶動作を実行するための論理の一実施形態を示す図である。 本発明の態様に従って使用される、PCIブロック記憶命令の一実施形態を示す図である。 本発明の態様に従った、図32のPCIブロック記憶命令によって使用されるフィールドの一実施形態を示す図である。 本発明の態様に従った、図32のPCIブロック記憶命令によって使用される他のフィールドの一実施形態を示す図である。 本発明の態様に従った、図32のPCIブロック記憶命令によって使用されるさらに他のフィールドの一実施形態を示す図である。 本発明の態様に従った、PCIブロック記憶動作を実行するための論理の一実施形態を示す図である。 本発明の態様に従った、PCIブロック記憶動作を実行するための論理の一実施形態を示す図である。 本発明の1つまたは複数の態様を組み込む、コンピュータ・プログラム製品の一実施形態を示す図である。 本発明の1つまたは複数の態様を組み込みおよび使用するための、ホスト・コンピュータ・システムの一実施形態を示す図である。 本発明の1つまたは複数の態様を組み込みおよび使用するための、コンピュータ・システムの他の例を示す図である。 本発明の1つまたは複数の態様を組み込みおよび使用するためのコンピュータ・ネットワークを備える、コンピュータ・システムの他の例を示す図である。 本発明の1つまたは複数の態様を組み込みおよび使用するための、コンピュータ・システムの様々な要素の一実施形態を示す図である。 本発明の1つまたは複数の態様を組み込みおよび使用するための、図42のコンピュータ・システムの実行ユニットの一実施形態を示す図である。 本発明の1つまたは複数の態様を組み込みおよび使用するための、図42のコンピュータ・システムの分岐ユニットの一実施形態を示す図である。 本発明の1つまたは複数の態様を組み込みおよび使用するための、図42のコンピュータ・システムのロード/記憶ユニットの一実施形態を示す図である。 本発明の1つまたは複数の態様を組み込みおよび使用するための、エミュレートされたホスト・コンピュータ・システムの一実施形態を示す図である。
一実施形態では、ゲスト・オペレーティング・システムを実行するホスト(たとえば、ホスト・オペレーティング・システム)が、ホストの介入なしにアダプタのアドレス・スペースに直接アクセスするための許可をゲストに付与できるようにする、認証機能が提供される。
本明細書で使用される場合、アダプタという用語は、任意のタイプのアダプタ(たとえば記憶アダプタ、ネットワーク・アダプタ、処理アダプタ、PCIアダプタ、暗号化アダプタ、他のタイプの入力/出力アダプタなど)を含む。一実施形態では、アダプタは1つのアダプタ機能を含む。しかしながら、他の諸実施形態では、アダプタは、複数のアダプタ機能を含むことができる。本発明の1つまたは複数の態様は、アダプタが1つのアダプタ機能を含むかまたは複数のアダプタ機能を含むかに関わらず、適用可能である。さらに本明細書で提示された例では、特に明示されていない限り、アダプタはアダプタ機能(たとえばPCI機能)と互換的に使用される。
本発明の1つまたは複数の態様を組み込みおよび使用するためのコンピューティング環境の一実施形態について、図1を参照しながら説明する。一例では、コンピューティング環境100は、インターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるSystem z(R)サーバである。System z(R)はインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるz/Architecture(R)に基づくものである。z/Architecture(R)に関する詳細は、2009年2月、IBM(R)出版の「z/Architecture Principles of Operation」と題する、IBM Publication No.SA22−7832−07に記載されている。IBM(R)、System z(R)、およびz/Architecture(R)は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。本明細書で使用される他の名前は、インターナショナル・ビジネス・マシーンズ・コーポレーションまたは他社の登録商標、商標、または製品名であってよい。
一例では、コンピューティング環境100は、メモリ・コントローラ106を介してシステム・メモリ104(別名、メイン・メモリ)に結合された、1つまたは複数の中央処理ユニット(CPU)102を含む。システム・メモリ104にアクセスするために、中央処理ユニット102は、システム・メモリにアクセスするために使用されるアドレスを含む読み取りまたは書き込み要求を発行する。要求に含まれるアドレスは、典型的には、システム・メモリにアクセスするために直接使用することはできないため、システム・メモリにアクセスする際に直接使用できるアドレスに変換される。アドレスは、変換メカニズム(XLATE)108を介して変換される。たとえばアドレスは、たとえば動的アドレス変換(DAT)を使用して、仮想アドレスから実または絶対アドレスに変換される。
アドレス(必要であれば変換済み)を含む要求は、メモリ・コントローラ106によって受信される。一例では、メモリ・コントローラ106はハードウェアからなり、システム・メモリへのアクセスに関する調停のため、およびメモリの保全性を維持するために、使用される。この調停は、CPU102から受信される要求に対して、ならびに、1つまたは複数のアダプタ110から受信される要求に対して、実行される。中央処理ユニットと同様に、アダプタは、システム・メモリへのアクセス権を得るために、システム・メモリ102に対する要求を発行する。
一例では、アダプタ110は、1つまたは複数のPCI機能を含む、周辺装置相互接続(PCI)またはPCIエクスプレス(PCIe)アダプタである。PCI機能は、1つまたは複数のスイッチ(たとえばPCIeスイッチ)114を介して入力/出力ハブ112(たとえばPCIハブ)へとルーティングされる、要求を発行する。一例では、入力/出力ハブは、1つまたは複数の状態マシンを含むハードウェアからなり、I/O対メモリ・バス120を介してメモリ・コントローラ106に結合される。
入力/出力ハブは、たとえば、スイッチから要求を受信するルート・コンプレックス116を含む。要求は、要求に使用される情報にアクセスするアドレス変換および保護ユニット118に提供される、入力/出力アドレスを含む。例として、要求は、直接メモリ・アクセス(DMA)動作を実行するため、またはメッセージ信号割り込み(MSI)を要求するために使用される、入力/出力アドレスを含むことができる。アドレス変換および保護ユニット118は、DMAまたはMSI要求に使用される情報にアクセスする。特定の例として、DMA動作の場合、アドレスを変換するために情報を取得することができる。変換されたアドレスは、その後、システム・メモリにアクセスするためにメモリ・コントローラに転送される。
一例では、図2を参照しながら説明されるように、アダプタによって発行されるDMAまたはMSI要求に使用される情報は、I/Oハブ内(たとえばアドレス変換および保護ユニット内)に配置されたデバイス・テーブル132のデバイス・テーブル・エントリ(DTE)130から取得される。デバイス・テーブル・エントリは、アダプタに関する情報を含み、各アダプタはそれに関連付けられた少なくとも1つのデバイス・テーブル・エントリを有する。たとえば、アダプタに割り当てられた(システム・メモリ内の)アドレス・スペースごとに1つのデバイス・テーブル・エントリがある。DTE内の情報は、アダプタに提供されるサービス(たとえばアドレス変換、割り込みなど)に依存することができる。アダプタ(たとえばPCI機能138)から発行される要求の場合、デバイス・テーブル・エントリは、要求内に提供される要求者IDを使用して位置が特定される。
次に図3を参照すると、コンピューティング環境の他の実施形態では、中央処理ユニット102のうちの1つまたは複数に加えて、あるいはそれらの代わりに、中央処理コンプレックスがメモリ・コントローラ106に結合される。この特定の例では、中央処理コンプレックス150は仮想マシン・サポートを提供する。中央処理コンプレックス150は、たとえば1つまたは複数の仮想マシン152、1つまたは複数の中央プロセッサ154、および少なくとも1つのハイパーバイザ156を含み、そのそれぞれについて以下で説明する。
中央処理コンプレックスの仮想マシン・サポートは、それぞれが、z/Linuxなどのゲスト・オペレーティング・システム158をホストすることが可能な、多数の仮想マシンを動作するための機能を提供する。各仮想マシン152は、別のシステムとして機能することができる。すなわち、各仮想マシンは、別個にリセットされ、ゲスト・オペレーティング・システムをホストし、異なるプログラムで動作することが可能である。仮想マシン内で実行中のオペレーティング・システムまたはアプリケーション・プログラムは、全システムへのアクセスが可能であるように見えるが、実際には、その一部のみが使用可能である。
この特定の例では、仮想マシンのモデルはV=Vモデルであり、ここでは、仮想マシンのメモリは実メモリの代わりに仮想メモリによって支持されている。各仮想マシンは、仮想線形メモリ・スペースを有する。物理リソースは、VMハイパーバイザなどのハイパーバイザ156によって所有され、共有物理リソースは、ゲスト・オペレーティング・システムの処理需要を満たすために、ハイパーバイザにより、必要に応じてゲスト・オペレーティング・システムにディスパッチされる。このV=V仮想マシン・モデルは、典型的には、ハイパーバイザが単にハードウェア・リソースを分割して構成済みゲストに割り当てるのを、多数のゲストが妨げることから、ゲスト・オペレーティング・システムと物理共有マシン・リソースとの間の対話がVMハイパーバイザによって制御されるものと想定する。V=Vモデルの1つまたは複数の態様については、2001年10月、IBM出版の「z/VM:Running Guest Operating Systems」と題する、IBM Publication No.SC24−5997−02でさらに説明されている。
中央プロセッサ154は、仮想マシンに割り当て可能な物理プロセッサ・リソースである。たとえば、仮想マシン152は1つまたは複数の論理プロセッサを含み、そのそれぞれが、仮想マシンに動的に割り振り可能な物理プロセッサ・リソース154のすべてまたは分配を表す。仮想マシン152は、ハイパーバイザ156によって管理される。例として、ハイパーバイザは、プロセッサ154上で実行しているファームウェア内に実装可能であるか、または、マシン上で実行しているホスト・オペレーティング・システムの一部とすることが可能である。一例では、ハイパーバイザ156は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるz/VM(R)などの、VMハイパーバイザである。z/VM(R)の一実施形態については、2003年5月、IBM出版の「z/VM:General Information Manual」と題する、IBM Publication No.GC24−5991−05で説明される。
本明細書で使用される場合、ファームウェアは、たとえばプロセッサのマイクロコード、ミリコード、またはマクロコード、あるいはそれらすべてを含む。これは、たとえばハードウェアレベルの命令、または、より高いレベルのマシン・コードの実装で使用されるデータ構造、あるいはその両方を含む。一実施形態では、これはたとえば、典型的には、基礎となるハードウェアに特有の信頼されるソフトウェアまたはマイクロコードを含み、システム・ハードウェアへのオペレーティング・システム・アクセスを制御する、マイクロコードとして送達される、所有権を主張できるコードを含む。
前述のように、アダプタは、直接メモリ・アクセス、メッセージ信号割り込みなどの、様々な動作を要求するプロセッサに対して、要求を発行することができる。さらにプロセッサは、アダプタに対して要求を発行することができる。たとえば、図2に戻ると、プロセッサ102は、アダプタ機能138にアクセスするための要求を発行することができる。この要求は、プロセッサから、I/Oハブ112および1つまたは複数のスイッチ114を介して、アダプタ機能へとルーティングされる。この実施形態では、メモリ・コントローラは示されていない。しかしながら、I/Oハブを、直接またはメモリ・コントローラを介して、プロセッサに結合することができる。
例として、プロセッサ内で実行しているオペレーティング・システム140は、特定の動作を要求するアダプタ機能に対して命令を発行する。この例では、オペレーティング・システムによって発行される命令は、I/Oインフラストラクチャに特有である。すなわち、I/OインフラストラクチャがPCIまたはPCIe(どちらも本明細書では、特に明記されていない限り、PCIと呼ばれる)に基づいているため、命令はPCI命令である。PCI命令の例には、いくつか例を挙げると、PCIロード、PCI記憶、およびPCIブロック記憶が含まれる。この例では、I/Oインフラストラクチャおよび命令はPCIに基づいているが、他の実施形態では、他のインフラストラクチャおよび対応する命令を使用することができる。
特定の一例では、命令は、アダプタ機能のアドレス・スペース内にある特定の位置に向けて送られる。たとえば図4に示されるように、アダプタ機能138は、たとえば構成スペース202(たとえばPCI機能のためのPCI構成スペース)、I/Oスペース204(たとえばPCI I/Oスペース)、および1つまたは複数のメモリ・スペース206(たとえばPCIメモリ・スペース)を含む、複数のアドレス・スペースとして定義される、ストレージ200を含む。一実施形態では、これらのアドレス・スペースは、ファームウェアによってのみアドレス指定可能なストレージにマッピングされる。したがって、これらのスペースの抽象がオペレーティング・システムに提示され、PCI命令によってアクセス可能である。命令は、特定のアドレス・スペースおよびアドレス・スペース内の特定の位置をターゲットとしている。これにより、命令を発行している構成(たとえばオペレーティング・システム、LPAR、プロセッサ、ゲストなど)が、アダプタ機能へのアクセスを認証されることが保証される。他の実施形態では、より多くの、より少ない、または異なるアドレス・スペースを、提供することができる。
命令の処理を容易にするために、1つまたは複数のデータ構造に記憶された情報が使用される。アダプタに関する情報を含むこうしたデータ構造の1つが、たとえばセキュア・メモリに記憶された機能テーブル300である。図5に示されるように、一例では、機能テーブル300は1つまたは複数の機能テーブル・エントリ(FTE)302を含む。一例では、アダプタ機能当たり1つの機能テーブル・エントリが存在する。各機能テーブル・エントリ302は、そのアダプタ機能に関連付けられた処理で使用されることになる情報を含む。一例では、機能テーブル・エントリ302は、たとえば以下を含む。
インスタンス番号308:このフィールドは、機能テーブル・エントリに関連付けられたPCI機能ハンドルの特定のインスタンスを示す。
デバイス・テーブル・エントリ(DTE)インデックス1…n 310:1つまたは複数のデバイス・テーブル・インデックスが可能であり、各インデックスは、デバイス・テーブル・エントリ(DTE)の位置を特定するためのデバイス・テーブルへのインデックスである。アダプタ機能当たり1つまたは複数のデバイス・テーブル・エントリがあり、各エントリは、アダプタ機能の要求(たとえば、DMA要求、MSI要求)を処理するために使用される情報、およびアダプタ機能に対する要求(たとえばPCI命令)に関する情報を含む、そのアダプタ機能に関連付けられた情報を含む。各デバイス・テーブル・エントリは、アダプタ機能に割り当てられたシステム・メモリ内の1つのアドレス・スペースに関連付けられる。アダプタ機能は、アダプタ機能に割り当てられたシステム・メモリ内に1つまたは複数のアドレス・スペースを有することが可能である。
ビジー・インジケータ312:このフィールドは、アダプタ機能がビジーであるかどうかを示す。
永続エラー状態インジケータ314:このフィールドは、アダプタ機能が永続エラー状態にあるかどうかを示す。
回復開始インジケータ316:このフィールドは、アダプタ機能に対して回復が開始されたかどうかを示す。
許可インジケータ318:このフィールドは、アダプタ機能の使用可能化を試行しているオペレーティング・システムが、その権限を有するかどうかを示す。
使用可能インジケータ320:このフィールドは、アダプタ機能が使用可能であるかどうか(たとえば、1=使用可能、0=使用不可)を示す。
要求者識別子(RID)322:これは、アダプタ機能の識別子であり、たとえばバス番号、デバイス番号、および機能番号を含むことができる。
このフィールドは、たとえば、アダプタ機能の構成スペースのアクセスに使用される。たとえば、構成スペースは、アダプタ機能に対してオペレーティング・システム(または他の構成)によって発行される命令内に構成スペースを指定することによって、アクセス可能である。命令内に指定されるのは、構成スペース内へのオフセットと、RIDを含む適切な機能テーブル・エントリの位置を特定するために使用される機能ハンドルである。ファームウェアは命令を受け取り、これが構成スペース用であるかどうかを決定する。したがって、RIDを使用してI/Oハブに対する要求を生成し、I/Oハブはアダプタにアクセスするための要求を作成する。アダプタ機能の位置はRIDに基づき、オフセットはアダプタ機能の構成スペース内へとオフセットを指定する。
基本アドレス・レジスタ(BAR)(1からn)324:このフィールドは、BAR0〜BARnとして指定された複数の符号なし整数を含み、これは最初に指定されたアダプタ機能に関連付けられており、その値はアダプタ機能に関連付けられた基本アドレス・レジスタにも記憶される。各BARは、以下の例のように、アダプタ機能内のメモリ・スペースまたはI/Oスペースの開始アドレスを指定し、アドレス・スペースのタイプ、すなわち、64または32ビット・メモリ・スペースであるか、あるいは32ビットI/Oスペースであるかも示す。
一例では、これは、アダプタ機能のメモリ・スペースまたはI/Oスペースあるいはその両方へのアクセスに使用される。たとえば、アダプタ機能にアクセスするために命令内に提供されるオフセットは、アダプタ機能にアクセスするために使用されることになるアドレスを取得するために、命令内に指定されたアドレス・スペースに関連付けられた基本アドレス・レジスタ内の値に追加される。命令内に提供されるアドレス・スペース識別子は、アクセスされることになるアダプタ機能内のアドレス・スペースおよび使用されることになる対応するBARを識別する。
サイズ1…n 326:このフィールドはSIZE0〜SIZEnと指定された複数の符号なし整数を含む。サイズ・フィールドの値は、非ゼロの場合、前述のBARに対応する各エントリで、各アドレス・スペースのサイズを表す。
BARおよびサイズに関する詳細について、以下で説明する。
1. BARがアダプタ機能に対して実装されない場合、BARフィールドおよびその対応するサイズ・フィールドは、どちらもゼロとして記憶される。
2. BARフィールドがI/Oアドレス・スペースまたは32ビット・メモリ・アドレス・スペースのいずれかを表す場合、対応するサイズ・フィールドは非ゼロであり、アドレス・スペースのサイズを表す。
3. BARフィールドが64ビット・メモリ・アドレス・スペースを表す場合、
a. BARnフィールドは最下位アドレス・ビットを表す。
b. 次の連続するBARn+1フィールドは最上位アドレス・ビットを表す。
c. 対応するSIZEnフィールドは非ゼロであり、アドレス・スペースのサイズを表す。
d. 対応するSIZEn+1フィールドは有意ではなく、ゼロとして記憶される。
内部ルーティング情報328:この情報は、アダプタへの特定のルーティングを実行するために使用される。これはたとえば、ノード、プロセッサ・チップ、およびハブアドレス指定情報を含む。
状況インジケータ330:これは、ロード/記憶動作がブロックされるかどうかの指示、ならびに他の指示を提供する。
一例では、ビジー・インジケータ、永続エラー状態インジケータ、および回復開始インジケータは、ファームウェアによって実行される監視に基づいて設定される。さらに、許可インジケータは、たとえばポリシーに基づいて設定される。BAR情報は、プロセッサ(たとえばプロセッサのファームウェア)によってバス・ウォーク(bus walk)中に発見される構成情報に基づく。他のフィールドは、構成、初期化、またはイベント、あるいはそれらすべてに基づいて設定可能である。
他の実施形態では、機能テーブル・エントリは、より多くの、より少ない、または異なる情報を含むことができる。含まれる情報は、アダプタ機能によってサポートされるか、またはアダプタ機能に対して使用可能な、動作に依存することができる。
一実施形態では、1つまたは複数のエントリを含む機能テーブル内で機能テーブル・エントリの位置を特定するために、機能ハンドルが使用される。たとえば、機能ハンドルの1つまたは複数のビットが、特定の機能テーブル・エントリの位置を特定するために、機能テーブル内へのインデックスとして使用される。
図6を参照しながら、機能ハンドルに関する追加の詳細について説明する。一例では、機能ハンドル350は、PCI機能ハンドルが使用可能であるかどうかを示す使用可能インジケータ352と、機能を識別するPCI機能番号354(これは静的識別子であり、一実施形態では機能テーブルへのインデックスである)と、この機能ハンドルの特定のインスタンスを示すインスタンス番号356とを含む。たとえば、ハンドルが使用可能になるたびに、新しいインスタンス番号を提供するためにインスタンス番号が増分される。
一実施形態では、アダプタ機能は、システム・ファームウェアによって初期化され、オペレーティング・システムまたは他の構成に割り当てられる(本明細書で使用される場合、オペレーティング・システムはデバイス・ドライバを含む)。その後、オペレーティング・システムは割り当てられた各機能を、使用できるように初期化する。たとえばオペレーティング・システムは、第1に、どのアダプタ機能が構成に割り当てられているかを決定する。一例では、オペレーティング・システムは、これを決定するためにPCI機能リスト・コマンドを発行する。このコマンドは、オペレーティング・システムに割り当てられたアダプタ機能に関する機能ハンドルのリストを戻す。例として、この情報は、機能テーブルから取り出される。特に、初期化時、またはアダプタのホット・プラグ後に、ファームウェアは、アダプタの位置を決定するため、およびその基本特徴を決定するために、バス・ウォークを実行する。この情報は、ファームウェアによって、各アダプタに関する機能テーブル・エントリ内に記憶される。これはその後、リスト・コマンドによって取り出される。
リスト・コマンドによって戻された各機能について、オペレーティング・システムは、ハンドルによって指定された機能の特定の特徴を決定する。一例では、これは、この情報を機能テーブル・エントリから取得するPCI機能照会コマンドを発行することによって、実施される。他の例では、たとえば機能グループ照会コマンドによって、アダプタのグループに共通の特徴も取得される。すなわち、所与のシステムI/Oインフラストラクチャに基づくグループ情報ならびにファームウェアおよびI/Oハブの機能は、機能テーブル・エントリ(または他の位置)に記憶し、グループ照会コマンドによって取り出すことができる。
オペレーティング・システムが使用したい各アダプタ機能について、オペレーティング・システムはアダプタ機能を使用可能にし、その機能に関する使用可能化ハンドルを取得する。一例では、論理プロセッサ呼び出し(CLP)命令のPCI機能設定コマンドを使用して、使用可能化を実行する。使用可能化には、たとえば、1つまたは複数の(たとえば機能ハンドル、機能テーブル・エントリなどの)妥当性チェックを実行すること、ならびに、妥当性チェックの合格に応答して、アダプタ機能に関連付けられた、機能テーブル・エントリ、デバイス・テーブル・エントリ、および機能ハンドル内に、使用可能インジケータを設定することが含まれる。
機能を使用可能化した後、アダプタ機能に特有のデバイス・テーブル・エントリまたは機能テーブル・エントリあるいはその両方において、様々な動作パラメータが設定される。一例では、これらのパラメータ設定に、PCI機能制御修正命令が使用される。具体的に言えば、一例では、情報が、機能情報ブロックから、機能に関連付けられたデバイス・テーブル・エントリまたは機能テーブル・エントリあるいはその両方へとコピーされる。たとえば、PCI機能制御修正命令内に指定された機能情報ブロックを使用して、命令内に指定されたアダプタ機能に関連付けられた、選択されたデバイス・テーブル・エントリまたは機能テーブル・エントリあるいはその両方が修正される。デバイス・テーブル・エントリまたは機能テーブル・エントリあるいはその両方を修正するために使用される機能情報ブロックのパラメータは、命令内に提供される動作制御に依存する。例として、動作制御は、アダプタ割り込みの登録/登録解除、アドレス変換の登録/登録解除、エラー状態のリセット、ブロックのロード/記憶のリセット、PCI機能測定パラメータの設定、およびインターセプション制御の設定を、指定することができる。
前述のように、アダプタ機能が使用可能化された後、1つまたは複数の命令を使用して、アダプタ機能の構成、アダプタ機能の制御(I/O動作の開始)、およびその状況の読み取りの機能を、オペレーティング・システムに提供することができる。これらの命令は、たとえば、PCIロード命令、PCI記憶命令、およびPCIブロック記憶命令を含む。これらの命令は、以下のように、アダプタ機能の構成、I/O、およびメモリ・スペースと対話する。
図7に示されるように、PCIロード命令400は、たとえば、CPU401上で実行するオペレーティング・システムが、PCI機能の構成スペース402、I/Oスペース404、またはメモリ・スペース406の、たとえば8バイトまでのコンテンツを、汎用レジスタ410内へ読み取ることを可能にする。
たとえば、PCIロード命令の実行中、いくつかの妥当性チェックが実行される。それらのチェックが正常に実行された場合、処理は、アダプタ機能の指定されたアドレス・スペース内で計算された位置からデータをフェッチし、ロード要求に応答してこのデータを戻すことを続行する。指定されたアドレス・スペースが構成スペースである場合、RIDを使用して、データのフェッチに使用される構成読み取り要求が生成される。しかしながら、これがI/Oまたはメモリ・スペースである場合、データをフェッチするためにアダプタ機能に転送されるDMA読み取り要求パケット内で使用される、データ・アドレスを計算するために、機能テーブル・エントリから取得されるBAR開始アドレスが、命令内に提供されたオフセットに追加される。
図8に示されるように、PCI記憶命令414は、たとえば、オペレーティング・システムが、PCI機能の構成スペース402、I/Oスペース404、またはメモリ・スペース406の、たとえば8バイトまでのコンテンツを、汎用レジスタ416から書き出す(すなわち変更する)ことを可能にする。
たとえば、PCI記憶命令の実行中、いくつかの妥当性チェックが実行される。正常に実行された場合、処理は、アダプタ機能のアドレス・スペース内の指定された位置にデータを記憶することを続行する。データが記憶されることになる位置が構成スペース内である場合、機能テーブル・エントリから取得される要求者IDを使用して、アダプタ機能に対する構成書き込み要求が生成される。しかしながら、I/Oアドレス・スペースまたはメモリ・スペースに書き込まれることになる場合、アダプタ機能に対するDMA書き込み要求パケット内に含められる、データ・アドレスを計算するために、機能テーブル・エントリから取得されるBAR開始アドレスが、命令内に提供されたオフセットに追加される。その後データは、指定された位置に記憶される。
図9に示されるように、PCIブロック記憶命令は、たとえば、オペレーティング・システムが、PCI機能のメモリ・スペース406の、たとえば32、64、128、または256バイトまでを、メイン・ストレージ420から書き出すことを可能にする。
本発明の態様によれば、アダプタ機能は、ホスト(別名ホスト・プログラムまたはホスト・オペレーティング・システム)上で実行するゲスト(たとえば、ページング可能(pageable)ストレージ・モード・ゲスト、すなわち、V=Vゲスト)用に仮想化されることになる。一例では、z/Architecture(R)において、ページング可能ゲストは、解釈のレベル2で、解釈実行開始(SIE)命令を介して解釈的に実行される。たとえば、論理区画(LPAR)ハイパーバイザは、物理固定メモリ内の論理区画を開始するために、SIE命令を実行する。z/VM(R)がその論理区画におけるオペレーティング・システムである場合、そのV=V(仮想)ストレージ内でそのゲスト(仮想)マシンを実行するために、SIE命令を発行する。したがって、LPARハイパーバイザはレベル1のSIEを使用し、z/VM(R)ハイパーバイザは、レベル2のSIEを使用する。
ゲストを仮想化するために、ホストは、ホストに割り当てられたアダプタ機能の排他的使用について、ゲストを認証する。この認証によって、PCIロード、PCI記憶、およびPCIブロック記憶の命令を含む、様々な命令の正常な解釈が可能となる。すなわち、これらの命令がエラーまたは例外なしにゲストによって発行される場合、それらはホストの介入なしに実行される。したがって、ホストによる解釈実行の入口および出口オーバヘッド、ならびに命令エミュレーション・オーバヘッドは、これらの命令に対して消去される。この認証メカニズムについて、以下で説明する。
アダプタ機能にアクセスするためのゲストの認証に関連付けられた論理の一実施形態について、図10および図11を参照しながら説明する。具体的には、図10は、ゲスト(たとえばゲスト・プロセッサ)に代わってホストによって実行されることになる初期化の一実施形態を示し、図11は、ゲスト(たとえばゲスト・プロセッサ)の命令実行に応答して実行される、認証チェックの一実施形態を示す。この実施形態では、命令は、特にPCI機能用に実装されるPCI命令である。他の実施形態では、他のアーキテクチャ用の他の命令が使用可能である。
図10を参照すると、初めにステップ500で、ホストは1つまたは複数のアダプタ機能を、ゲストによる専用使用のために割り当てる。たとえば、ホストに割り当てられるアダプタ機能のうちの1つまたは複数は、たとえば、どのアダプタ機能がゲストに関連付けられているかを示す割り当てテーブルを介して、または、これらの関連付けを実行するコマンドなどによって、ゲストに割り当てられる。ホストは、例として、PCIロード、PCI記憶、およびPCIブロック記憶の命令が、ゲスト用に解釈されることを意図する。したがってホストは、以下で説明するように、ゲストに割り当てられた各機能について、ゲストに代わってある初期化動作を実行する。性能に不可欠でなく、アダプタの構成を制御する、他の命令(たとえば、PCI機能制御修正)は、通常、ホストによってインターセプトされる。
ステップ502で割り当てられたアダプタ機能について、ホストは、ステップ504で、アダプタ機能に認証トークンを割り当てることにより、PCI命令の解釈についてゲストを認証する。認証トークンは、ゲストに固有のトークンである。特定の一例では、これは、ゲストがアダプタへのアクセスを許可されているかどうかを判別するために命令実行中に使用される、ゲスト割り込み状態領域(GISA)の指定である。この実施形態では、どの程度の数の仮想CPU(状態記述)がゲストを含むかにかかわらず、ゲスト当たり1つのGISAが存在するため、GISA指定は固有のトークンである。GISA指定(たとえば、32ビット値)は各状態記述に含まれ、ホストによるアクセスは可能であるが、ゲストはアクセスできない。一例ではGISA指定がトークンとして使用されるが、他の例では任意の固有値が使用可能である。
一例では、ホストへインターセプトする論理プロセッサ呼び出し(CLP)PCI機能設定コマンドをゲストが実行することに応答して、認証トークンの割り当てが実行される。認証トークンの割り当ては、ゲストに代わってホストがPCI機能設定コマンドを実行すること、および、ゲストのGISA指定を認証トークンとして指定することによって、実施される。命令の実行中、GISA指定はコマンド要求ブロックからコピーされ、割り当てられているアダプタ機能に関連付けられた機能テーブル・エントリ内に配置される。これについては、以下でより詳細に説明する。
さらにホストは、ステップ506で、ゲストのアダプタ機能に関する命令の解釈を使用可能にする。たとえばホストは、アダプタ機能に関する機能テーブル・エントリ内のインターセプション制御インジケータがゼロに設定されるように保証する。一例では、PCI機能制御修正命令を使用してこの制御が設定され、これについては以下でより詳細に説明する。
その後、照会508で、より多くの機能が割り当てられている場合、処理はステップ502に戻る。割り当てられていない場合、ホストは、ステップ510で、ゲストに関連付けられたすべてのアダプタ機能についての命令の解釈を、ゲストに対して使用可能にする。一例では、これは解釈インジケータを設定することによって実行される。このインジケータは、たとえばゲストの状態記述内に記憶される。
初期化に続き、また、ゲストがPCIロード、PCI記憶、またはPCIブロック記憶命令などの命令を実行することに応答して、ホスト構成内に解釈機構(PCIロード/記憶解釈と呼ばれる)がインストールされるように保証することを含む、あるチェックが有効な場合、命令が解釈される。これは、たとえば制御ブロック内のインジケータ・セットによって決定される。他の妥当性チェックについては、以下で図11を参照しながら説明する。
一実施形態では、ステップ602での、PCI命令のうちの1つをゲスト(たとえばゲスト・プロセッサ)が実行すること、および機構がインストールされているものと想定することに応答して、照会604で、ゲストがPCIロード/記憶解釈を使用可能であるかどうかに関して決定される。特に、ゲストに割り当てられたすべてのPCI機能に関するPCI命令の解釈をホストが使用可能および使用不可にできるようにするための制御が、たとえば制御ブロック内に提供される。制御が(たとえば1に)設定された場合、ゲストは、PCIロード/記憶解釈が使用可能となる。制御が設定されない場合、ゲストは使用可能とならない。ホストは、所望であれば、命令の実行に介入するために、このインジケータを設定からリセットに動的に変更することが可能である。
さらに、照会606で、PCIロード/記憶解釈に関するアダプタ機能が使用可能であるかどうかに関する他の決定が実行される。たとえば、ホストがPCI機能ごとにPCI命令の解釈を使用可能および使用不可にできるようにするための制御が提供される。一例では、この制御は、その値が(一例では、PCI機能制御修正命令のオペランドとして提供される)機能情報ブロックから取得される、機能テーブル・エントリ内のインターセプション制御インジケータである。一例で、このインジケータが設定された場合、照会608で、このアダプタ機能に対してPCIロード、PCI記憶、およびPCIブロック記憶の命令を発行することを、ゲストが認証されているかどうかに関する他の決定が実行される。
一例では、ゲストが、指定されたアダプタ機能に対してPCIロード、PCI記憶、およびPCIブロック記憶の命令を発行することを、ゲストが認証されているかどうかを決定するために、認証トークンが使用される。たとえば、実行側ゲストの状態記述の認証トークンの値は、ホストが(たとえば、CLP命令のPCI機能設定コマンドを介して)ゲストを使用可能化および認証した際に指定された、FTE内の認証トークンと比較される。ゲストが認証されている場合、照会610で、(ゲストによって実行されるPCI命令の)命令オペランドによって指定されたPCI機能ハンドルが使用可能であるかどうかに関する他の決定が実行される。一例では、この決定は、ハンドル内の使用可能ビットをチェックすることによって実行される。機能ハンドルが使用可能である場合、ゲストは、ホストの介入なしにPCI命令を実行することができる。
しかしながら、いずれかの妥当性チェックが不合格の場合、ステップ612で、ホストへインターセプションすることが生じる。すなわち、上記命令はホストの介入によって実行される。
CLP PCI機能設定コマンドのさらなる詳細について、本明細書で説明する。PCI機能を使用するために、使用可能化される。たとえば、あるPCI機能を使用したいオペレーティング・システムは、(I/O構成に基づいて)使用する資格のある1つまたは複数の機能を決定するために照会を実行し、それらの機能のうちの1つを使用可能にするよう選択する。一例では、機能は、論理プロセッサ呼び出し命令のPCI機能設定コマンドを使用して使用可能化される。この命令の一実施形態が、図12に示されている。図に示されるように、一例では、論理プロセッサ呼び出し命令700は、論理プロセッサ呼び出し命令であることを示すオペレーション・コード702と、コマンドに関する指示704とを含む。一例では、この指示は、実行されることになるコマンドを記述した要求ブロックのアドレスである。こうした要求ブロックの一実施形態が、図13に示されている。
図13に示されるように、一例では、要求ブロック720は、たとえば、要求ブロックの長さを示す長さフィールド722、PCI機能設定コマンドを示すコマンド・フィールド724、使用可能機能または使用不可機能のいずれかに提供されることになるハンドルである、PCI機能ハンドル726、使用可能動作または使用不可動作のいずれかを指定するために使用されるオペレーション・コード728、特定のPCI機能に関連付けられることになる要求されたアドレス・スペースの数を示す、DMAアドレス・スペース(DMAAS)数730、および、ゲストを認証するために使用されるゲスト認証トークン732などの、いくつかのパラメータを含む。他の諸実施形態には、より多くの、より少ない、または異なる情報が含まれる可能性がある。たとえば、ページング可能ストレージ・モード・ゲストのホストによって命令が発行される仮想環境では、ゲストの識別が提供される。他の変形も可能である。
論理プロセッサ呼び出し命令の発行および処理に応答して、応答ブロックが戻され、応答ブロックに含まれる情報は実行されることになる動作に依存する。応答ブロックの一実施形態が、図14に示されている。一例では、応答ブロック750は、応答ブロックの長さを示す長さフィールド752、コマンドの状況を示す応答コード754、および、PCI機能を識別するPCI機能ハンドル756を含む。使用可能コマンドに応答して、PCI機能ハンドルはPCI機能の使用可能化ハンドルである。さらに、使用不可動作の完了時には、PCI機能ハンドルは、使用可能機能によって今後使用可能化することができる汎用ハンドルである。
PCI機能を使用可能にするための論理の一実施形態について、図15を参照しながら説明する。一例では、この論理は、コマンドがPCI機能設定コマンドに設定され、オペレーション・コードが使用可能機能に設定される、論理プロセッサ呼び出し命令の発行に応答して開始される。この論理は、たとえば、オペレーティング・システムまたはオペレーティング・システムのドライバに応答して、命令を発行するこの論理を実行するように認証されたプロセッサによって実行される。他の諸実施形態では、論理は、論理プロセッサ呼び出し命令を使用せずに実行可能である。
図15を参照すると、初めに、照会800で、論理プロセッサ呼び出し命令の要求ブロック内に提供されたハンドルが有効ハンドルであるかどうかに関して決定される。すなわち、ハンドルが機能テーブル内の有効エントリを指し示しているか、または、有効エントリの範囲外にあるか(たとえば、ハンドルの機能番号部分がインストール済み機能を指定しているか)である。ハンドルが知られていない場合、ハンドルが認識されていないことを示す対応する応答コードが提供される。しかしながら、ハンドルが知られている場合、照会804で、ハンドルが使用可能であるかどうかに関する他の照会が実行される。この決定は、PCI機能ハンドル内の使用可能インジケータをチェックすることによって実行される。この指示が、ハンドルが使用可能であることを示すように設定されている場合、ステップ806で、そのように示す応答コードが戻される。
しかしながら、ハンドルが知られており、使用可能でない(すなわち使用可能化に対して有効である)場合、照会808で、PCI機能に割り当てられることになる要求されたアドレス・スペースの数が最大値よりも多いかどうかが決定される。これが決定されるために、要求ブロック内に指定されたDMAアドレス・スペース数が、(一例では、ポリシーに基づいて提供された)最大値と比較される。アドレス・スペース数が最大値より大きい場合、ステップ810で、DMAアドレス・スペースに関する無効値を示す応答コードが提供される。大きくない場合、照会812で、要求されたアドレス・スペースの数が使用可能であるかどうかが決定される。これは、要求されたアドレス・スペースの数に対して使用可能なデバイス・テーブル・エントリが存在するかどうかをチェックすることによって決定される。要求されたアドレス・スペースの数が使用可能でない場合、ステップ814で、リソースが不十分であることを示す応答コードが戻される。使用可能である場合、PCI機能を使用可能にする処理が続行される。
ステップ816で、機能テーブル・エントリの位置を特定するために、提供されたハンドルが使用される。たとえば、ハンドルの1つまたは複数の指定ビットが、特定の機能テーブル・エントリの位置を特定するために、機能テーブルへのインデックスとして使用される。適切な機能テーブル・エントリの位置の特定に応答して、照会818で、機能が使用可能であるかどうかが決定される。これは、機能テーブル・エントリ内の使用可能インジケータをチェックすることによって決定される。機能がすでに使用可能である(すなわち、インジケータが1に設定されている)場合、ステップ820で、PCI機能がすでに要求された状態であることを示す応答コードが戻される。
機能がまだ使用可能でない場合、照会822で、機能が永続エラー状態であるかどうかを決定することによって、処理は続行される。機能テーブル・エントリ内の永続エラー状態インジケータが、永続エラー状態であることを示す場合、ステップ824で、そのように示す応答コードが戻される。しかしながら、機能が永続エラー状態でない場合、照会826で、その機能に対するエラー回復が開始されたかどうかに関する他の決定が実行される。機能テーブル・エントリ内の回復開始インジケータが設定されている場合、ステップ828で、回復が開始されたことを示す応答コードが提供される。設定されていない場合、照会830で、PCI機能がビジーであるかどうかに関する他の照会が実行される。ここでも、機能テーブル・エントリ内のビジー・インジケータのチェックが、PCI機能がビジーであることを示す場合、ステップ832で、そのような指示が提供される。しかしながら、PCI機能が永続エラー状態でなく、回復が開始されておらず、さらにビジーでない場合、ステップ834で、オペレーティング・システムがこのPCI機能の使用可能化を許可されているかどうかに関する他の照会が実行される。機能テーブル・エントリの許可インジケータに基づいて許可されていない場合、ステップ836で、未承認アクションを示す応答コードが提供される。しかしながら、すべてのテストに正常に合格した場合、照会838で、このPCI機能に使用可能ないずれかのDTEが存在するかどうかに関する他の決定が実行される。例として、DTEが使用可能である旨の決定は、現在I/Oハブ内で使用可能でないDTEに基づく可能性がある。加えて、所与のオペレーティング・システムまたは論理区画が使用可能なDTEの数をさらに制限するためのポリシーが、適用可能である。アダプタにアクセス可能ないずれかの使用可能DTEが割り当て可能である。使用可能DTEが存在しない場合、ステップ840で、要求されたDTEのうちの1つまたは複数が使用不可であることを示す応答コードが戻される。
DTEが使用可能である場合、ステップ842で、要求されたアドレス・スペースの数に対応するDTEの数が割り当てられ、使用可能となる。一例では、使用可能化は、使用可能となる各DTE内に使用可能インジケータを設定することを含む。さらにこの例では、使用可能化は、各DTEにインデックスを提供するために、コンテンツ・アドレス指定可能メモリ(CAM)をセットアップすることを含む。たとえば、各DTEについて、CAM内のエントリにインデックスがロードされ、CAMはDTEの位置の特定を容易にする。
さらに、ステップ844で、DTEは機能テーブル・エントリに関連付けられる。これは、たとえば、各DTEインデックスを機能テーブル・エントリ内に含めることを含む。次に、ステップ846で、機能テーブル・エントリ内に各インジケータを設定することにより、この機能は使用可能としてマーク付けされる。さらに、ステップ848で、ハンドル内の使用可能ビットが設定され、インスタンス番号が更新される。次にステップ850で、この使用可能ハンドルが戻され、PCIアダプタの使用が可能となる。たとえば、機能の使用可能化に応答して、アドレス変換および割り込みに関する登録が実行可能である、DMA動作がPCI機能によって実行可能である、あるいは、ロード、記憶、およびブロック記憶の命令が機能に対して発行可能である、またはそれらすべてが実行可能である。
前述のように、機能の使用可能化の後、PCI機能制御修正命令を介して、DTEあるいはFTEまたはその両方に、様々な動作パラメータが設定される。PCI機能制御修正命令の一例について、図16〜図19を参照しながら説明する。
図16を参照すると、PCI機能制御修正命令900は、たとえば、PCI機能制御修正命令を示すオペレーション・コード902と、動作パラメータが確立されているアダプタ機能に関する様々な情報が含まれている位置を指定する第1のフィールド904と、PCI機能情報ブロック(FIB)がフェッチされる位置を指定する第2のフィールド906とを含む。フィールド1および2によって指定された位置のコンテンツについて、以下で詳細に説明する。
一実施形態では、フィールド1は、様々な情報を含む汎用レジスタを指定する。図17に示されるように、レジスタのコンテンツは、たとえば、その代わりに修正命令が実行されているアダプタ機能のハンドルを識別する機能ハンドル910と、機能ハンドルによって指定されたアダプタ機能に関連付けられたシステム・メモリ内のアドレス・スペースを指定するアドレス・スペース912と、アダプタ機能に対して実行されることになる動作を指定する動作制御914と、事前に定義されたコードで命令が完了した場合に命令に関する状況を提供する状況916とを含む。
一例では、図18に示されるように、フィールド2は、関連付けられたアダプタ機能に関する情報を含む、PCI機能情報ブロック(FIB)の論理アドレス920を指定する。本発明の態様によれば、アダプタ機能に関連付けられた、デバイス・テーブル・エントリあるいは機能テーブル・エントリ(または他の位置)またはその両方を更新するために、機能情報ブロックが使用される。情報は、アダプタの初期化あるいは構成またはその両方時に、あるいは特定のイベントに応答して、またはその両方で、FIBに記憶される。
機能情報ブロックに関する他の詳細について、図19を参照しながら説明する。一実施形態では、機能情報ブロック950は以下のフィールドを含む。
フォーマット951:このフィールドは、FIBのフォーマットを指定する。
インターセプション制御952:このフィールドは、ページング可能モード・ゲストによる特定の命令のゲスト実行の結果、命令のインターセプションが生じるかどうかを示すために使用される。
エラー指示954:このフィールドは、直接メモリ・アクセスおよびアダプタ割り込みに関するエラー状態指示を含む。ビットが設定された場合(たとえば1)、アダプタ機能に関する直接メモリ・アクセスまたはアダプタ割り込みの実行中に、1つまたは複数のエラーが検出される。
ロード/記憶のブロック956:このフィールドは、ロード/記憶動作がブロックされるかどうかを示す。
PCI機能有効958:このフィールドは、アダプタ機能に関する使用可能化制御を含む。ビットが設定された場合(たとえば1)、アダプタ機能はI/O動作に使用可能であるものとみなされる。
アドレス・スペース登録960:このフィールドは、アダプタ機能に関する直接メモリ・アクセス使用可能化制御を含む。このフィールドが設定された場合(たとえば1)、直接メモリ・アクセスは使用可能である。
ページ・サイズ961:このフィールドは、DMAメモリ・アクセスによってアクセスされることになるページのサイズまたは他のメモリ単位を示す。
PCI基準アドレス(PBA)962:このフィールドは、アダプタ機能に割り当てられるシステム・メモリ内のアドレス・スペースに対する基準アドレスである。これは、指定されたDMAアドレス・スペースへの直接メモリ・アクセス用にアダプタ機能が使用できる、最低位仮想アドレスを表す。
PCIアドレス制限(PAL)964:このフィールドは、指定されたDMAアドレス・スペース内でアダプタ機能がアクセスできる、最高位仮想アドレスを表す。
入力/出力アドレス変換ポインタ(IOAT)966:入力/出力アドレス変換ポインタは、 PCI仮想アドレス変換によって使用される任意の変換テーブルのうちの第1を指定するか、または、変換の結果であるストレージのフレームの絶対アドレスを直接指定することができる。
割り込みサブクラス(ISC)968:このフィールドは、アダプタ機能に関するアダプタ割り込みを提示するために使用される割り込みサブクラスを含む。
割り込み数(NOI)970:このフィールドは、アダプタ機能に関して受け入れ可能な別個の割り込みコードの数を指定する。このフィールドは、アダプタ割り込みビット・ベクトル・アドレス・フィールドおよびアダプタ割り込みビット・ベクトル・オフセット・フィールドによって指定される、アダプタ割り込みビット・ベクトルのサイズも、ビット単位で定義する。
アダプタ割り込みビット・ベクトル・アドレス(AIBV)972:このフィールドは、アダプタ機能に関するアダプタ割り込みビット・ベクトルのアドレスを指定する。このベクトルは、割り込み処理で使用される。
アダプタ割り込みビット・ベクトル・オフセット974:このフィールドは、アダプタ機能に関する第1のアダプタ割り込みビット・ベクトル・ビットのオフセットを指定する。
アダプタ割り込みビット要約ビット・アドレス(AISB)976:このフィールドは、割り込み処理時にオプションで使用される、アダプタ割り込み要約ビットを指定するアドレスを提供する。
アダプタ割り込み要約ビット・オフセット978:このフィールドは、アダプタ割り込み要約ビット・ベクトル内にオフセットを提供する。
機能測定ブロック(FMB)アドレス980:このフィールドは、アダプタ機能に関する測定値を収集するために使用される、機能測定ブロックのアドレスを提供する。
機能測定ブロック・キー982:このフィールドは、機能測定ブロックにアクセスするためのアクセス・キーを含む。
要約ビット通知制御984:このフィールドは、使用されている要約ビット・ベクトルが存在するかどうかを示す。
命令認証トークン986:このフィールドは、ページング可能ストレージ・モード・ゲスト(たとえばV=Vゲスト)が、ホストの介入なしにPCI命令を実行することを認証されているかどうかを決定するために使用される。
アドレス変換フォーマット987:このフィールドは、変換で使用されることになる高位変換テーブル(たとえばセグメント・テーブル、第3領域など)のアドレス変換用に選択されるフォーマットを示す。
機能情報ブロック内の情報は、構成時、初期化時、あるいは特定イベントの発生時、またはそれらすべてで、取得される。
本発明の態様に従い、PCI機能制御修正命令で指定された機能情報ブロックを使用して、選択されたデバイス・テーブル・エントリ、機能テーブル・エントリ、あるいは、命令内で指定されたアダプタ機能に関連付けられた他のファームウェア制御、またはそれらすべてが、修正される。デバイス・テーブル・エントリ、機能テーブル・エントリ、あるいは他のファームウェア制御、またはそれらすべてを修正することによって、アダプタにあるサービスが提供される。これらのサービスは、たとえば、アダプタ割り込み、アダプタ変換、エラー状態のリセット、ロード/記憶のブロックのリセット、機能測定パラメータの設定、およびインターセプション制御の設定を含む。
PCI機能制御修正命令に関連付けられた論理の一実施形態について、図20を参照しながら説明する。一例では、命令は、オペレーティング・システム(または他の構成)によって発行され、オペレーティング・システムを実行するプロセッサ(たとえばファームウェア)によって実行される。本明細書の例では、命令およびアダプタ機能はPCIベースである。しかしながら、他の例では、異なるアダプタ・アーキテクチャおよび対応する命令が使用可能である。
一例では、オペレーティング・システムは、PCI機能ハンドル、DMAアドレス・スペース識別子、動作制御、および機能情報ブロックのアドレス、というオペランドを(たとえば、命令によって指定された1つまたは複数のレジスタ内の)命令に提供する。
図20を参照すると、初めに、照会1000で、PCI機能制御修正命令を可能にする機構がインストールされているかどうかに関して決定される。この決定は、たとえば制御ブロック内に記憶された、たとえばインジケータをチェックすることによって実行される。この機構がインストールされていない場合、ステップ1002で例外条件が提供される。インストールされている場合、照会1004で、ページング可能ストレージ・モード・ゲスト(または他のゲスト)によって命令が発行されたかどうかに関して決定される。発行された場合、ステップ1006で、ホスト・オペレーティング・システムはそのゲストに関する動作をエミュレートすることになる。たとえば、ホストはインターセプトし且つこのゲストに対してインターセプション制御が許可されるかどうかを決定する。この決定は、FTEをチェックすることによって実行される。インターセプションが認証された場合、ホストはゲストの代わりにPCI機能制御修正命令を再発行することになる。認証されない場合、例外条件が提供される。
命令が発行されていない場合、照会1008で、オペランドのうちの1つまたは複数が整合されているかどうかが決定される。たとえば、機能情報ブロックのアドレスがダブルワード境界上にあるかどうかが決定される。一例では、これはオプションである。オペランドが整合されていない場合、ステップ1010で例外条件が提供される。整合されている場合、照会1012で、機能情報ブロックがアクセス可能であるかどうかが決定される。アクセス可能でない場合、ステップ1014で例外条件が提供される。アクセス可能である場合、照会1016で、PCI機能制御修正命令のオペランド内に提供されたハンドルが使用可能であるかどうかが決定される。一例では、この決定は、ハンドル内の使用可能インジケータをチェックすることによって実行される。ハンドルが使用可能でない場合、ステップ1018で例外条件が提供される。
ハンドルが使用可能である場合、ステップ1020で、ハンドルを使用して機能テーブル・エントリの位置が特定される。すなわち、ハンドルの少なくとも一部を機能テーブルへのインデックスとして使用して、動作パラメータが確立されることになるアダプタ機能に対応する機能テーブル・エントリの位置が特定される。
照会1022で、機能テーブル・エントリが見つかったかどうかが決定される。見つからない場合、ステップ1024で例外条件が提供される。見つかった場合、照会1026で命令を発行している構成がゲストであれば、ステップ1028で例外条件(たとえば上記ホストへのインターセプション)が提供される。構成がゲストでない場合、または、他の認証が指定されていてチェック可能である場合、この照会は、無視することができる。
次に、照会1030で、機能が使用可能であるかどうかが決定される。一例では、この決定は、機能テーブル・エントリ内の使用可能インジケータをチェックすることによって実行される。使用可能でない場合、ステップ1032で例外条件が提供される。
機能が使用可能である場合、照会1034で回復がアクティブであるかどうかが決定される。機能テーブル・エントリ内の回復インジケータによって、回復がアクティブであると決定された場合、1036で例外条件が提供される。しかしながら、回復がアクティブでない場合、1038で、機能がビジーであるかどうかがさらに決定される。この決定は、機能テーブル・エントリ内のビジー・インジケータをチェックすることによって実行される。機能がビジーである場合、ステップ1040でビジー条件が提供される。このビジー条件を使用して、ドロップの代わりに命令を再試行することができる。
機能がビジーでない場合、照会1042で、機能情報ブロック・フォーマットが有効であるかどうかがさらに決定される。たとえば、このフォーマットがシステムによってサポートされているかどうかを決定するために、FIBのフォーマット・フィールドがチェックされる。これが無効の場合、ステップ1044で例外条件が提供される。機能情報ブロック・フォーマットが有効の場合、照会1046で、命令のオペランドに指定された動作制御が有効であるかどうかがさらに決定される。すなわち、動作制御が、この命令に対して指定された動作制御のうちの1つであるかどうかである。これが無効の場合、ステップ1048で例外条件が提供される。しかしながら、動作制御が有効である場合、指定されている特定の動作制御で処理が続行される。
PCI機能制御修正命令の動作制御によって指定可能な1つの動作は、アダプタからの割り込みを制御するために使用されるインターセプション制御設定動作である。この動作により、機能情報ブロックの割り込み制御フィールドから、割り込み制御に対してPCI機能パラメータが設定される。この動作制御は、ページング可能ストレージ・モード・ゲストによって発行された場合、保存されるものとみなされる。
インターセプション制御設定動作の論理の一実施形態について、図21を参照しながら説明する。一例では、オペランドは機能情報ブロックからのインターセプション制御である。この動作の指定に応答して、ステップ1060で、機能情報ブロックからのインターセプション制御に対して機能テーブル・エントリ内のインターセプション制御が設定される。
初期化に続いて、ゲストは、PCIロード、PCI記憶、およびPCIブロック記憶の命令を実行することが可能であり、そのそれぞれについて以下で説明する。
最初に、図22を参照すると、PCIロード命令の一実施形態が示されている。図に示されるように、PCIロード命令1100は、たとえば、PCIロード命令を示すオペレーション・コード1102と、アダプタ機能からフェッチされたデータがロードされることになる位置を指定する第1のフィールド1104と、データのロード元となるアダプタ機能に関する様々な情報が含まれる位置を指定する第2のフィールド1106と、を含む。フィールド1および2によって指定された位置のコンテンツについて、以下でさらに説明する。
一例では、フィールド1は汎用レジスタを指定し、図23に示されるように、そのレジスタのコンテンツ1104は、命令内に指定されたアダプタ機能の位置からロードされる1つまたは複数のバイトの連続領域を含む。一例では、データはレジスタの右端のバイト位置にロードされる。
一実施形態では、フィールド2は、様々な情報を含む汎用レジスタ・ペアを指定する。図23に示されるように、レジスタのコンテンツは、たとえば以下を含む。
使用可能ハンドル1110:このフィールドは、データのロード元となるアダプタ機能の使用可能機能ハンドルである。
アドレス・スペース1112:このフィールドは、データのロード元となるアダプタ機能内のアドレス・スペースを識別する。
アドレス・スペース内のオフセット1114:このフィールドは、データのロード元となる指定されたアドレス・スペース内のオフセットを指定する。
長さフィールド1116:このフィールドは、ロード動作の長さ(たとえばロードされることになるバイト数)を指定する。
状況フィールド1118:このフィールドは、命令が事前に定義された条件コードで終了した場合に、適用可能な状況コードを提供する。
一実施形態では、アダプタ機能からロードされるバイトは、アダプタ機能の指定されたPCIアドレス・スペース内の整数境界(integral boundary)内に含まれることになる。アドレス・スペース・フィールドがメモリ・アドレス・スペースを指定する場合、整数境界サイズは、たとえばダブルワードである。アドレス・スペース・フィールドがI/Oアドレス・スペースまたは構成アドレス・スペースを指定する場合、整数境界サイズは、たとえばワードである。
PCIロード命令に関連付けられた論理の一実施形態について、図25〜図26を参照しながら説明する。一例では、命令はオペレーティング・システム(または他の構成)によって発行され、オペレーティング・システムを実行しているプロセッサ(たとえばファームウェア)によって実行される。本明細書の例では、命令およびアダプタ機能はPCIベースである。しかしながら、他の例では、異なるアダプタ・アーキテクチャおよび対応する命令を使用することができる。
命令を発行するために、オペレーティング・システムは、PCI機能ハンドル、PCIアドレス・スペース(PCIAS)、PCIアドレス・スペースへのオフセット、およびロードされることになるデータの長さ、といったオペランドを、(たとえば、命令によって指定された1つまたは複数のレジスタ内の)命令に提供する。PCIロード命令が正常に終了すると、データは、命令によって指定された位置(たとえばレジスタ)にロードされる。
図25を参照すると、初めに、照会1200で、PCIロード命令に可能な機構がインストールされているかどうかが決定される。たとえばこの決定は、たとえば制御ブロック内に記憶されたインジケータをチェックすることによって実行される。機構がインストールされていない場合、ステップ1202で例外条件が提供される。インストールされている場合、ゲストがこの命令を発行していれば、ゲストがロード/記憶解釈に対して使用可能であるかどうかが決定される。これは、ゲストの状態記述内のロード/記憶解釈制御をチェックすることによって実行される。使用可能でない場合、例外条件が提供される。使用可能である場合、照会1204で、オペランドが整合されているかどうかが決定される。たとえば、あるオペランドが偶数/奇数のレジスタ・ペア内になければならない場合、それらの要件が満たされているかどうかが決定される。オペランドが整合されていない場合、ステップ1206で例外が提供される。さもなければ、機構がインストールされており、オペランドが整合されている場合、照会1208で、PCIロード命令のオペランド内に提供されたハンドルが使用可能であるかどうかが決定される。一例では、この決定は、ハンドル内の使用可能インジケータをチェックすることによって実行される。ハンドルが使用可能でない場合、ステップ1210で例外条件が提供される。
ハンドルが使用可能である場合、ステップ1212で、ハンドルを使用して機能テーブル・エントリの位置が特定される。すなわち、ハンドルの一部を機能テーブル内へのインデックスとして使用して、データのロード元となるアダプタ機能に対応する機能テーブル・エントリの位置が特定される。
その後、照会1213で、命令がゲストによって発行されたかどうかが決定される。ゲストによって発行された場合、照会1215で、インターセプション制御が(たとえば1に)設定されたかどうかがさらに決定される。この決定は、FTE内のインターセプション制御をチェックすることによって実行される。設定された場合、ステップ1217で例外条件が提供される。設定されない場合、照会1214で、機能がゲストによって使用されるように構成されたかどうかが決定される。認証されていない場合、ステップ1216で例外条件が提供される。構成がゲストでない場合、または、他の認証が指定されていてチェック可能である場合、この照会は、無視することができる。
その後、または命令がゲストによって発行されていない場合、照会1218で、機能が使用可能であるかどうかが決定される。一例では、この決定は、機能テーブル・エントリ内の使用可能インジケータをチェックすることによって実行される。使用可能でない場合、ステップ1220で例外条件が提供される。
機能が使用可能である場合、照会1222で、アドレス・スペースが有効であるかどうかが決定される。たとえば、指定されたアドレス・スペースが、アダプタ機能の指定されたアドレス・スペースであり、この命令に適切であるかどうかである。アドレス・スペースが無効である場合、ステップ1224で例外条件が提供される。無効でない場合、照会1226で、ロード/記憶がブロックされたかどうかが決定される。一例では、この決定は、機能テーブル・エントリ内の状況インジケータをチェックすることによって実行される。ロード/記憶がブロックされた場合、ステップ1228で例外条件が提供される。
しかしながら、ロード/記憶がブロックされていない場合、照会1230で、回復がアクティブであるかどうかが決定される。一例では、この決定は、機能テーブル・エントリ内の回復開始インジケータをチェックすることによって実行される。回復がアクティブである場合、ステップ1232で例外条件が提供される。アクティブでない場合、照会1234で機能がビジーであるかどうかが決定される。この決定は、機能テーブル・エントリ内のビジー・インジケータをチェックすることによって実行される。機能がビジーである場合、ステップ1236でビジー条件が提供される。ビジー条件を使用して、ドロップの代わりに命令を再試行することができる。
機能がビジーでない場合、照会1238で、命令内に指定されたオフセットが有効であるかどうかがさらに決定される。すなわち、動作の長さと組み合わせたオフセットが、機能テーブル・エントリ内に指定されたように、アドレス・スペースのベースおよび長さ内にあるかどうかである。有効でない場合、ステップ1240で例外条件が提供される。しかしながら、オフセットが有効である場合、照会1242で、長さが有効であるかどうかが決定される。すなわち、アドレス・スペース・タイプに従って、アドレス・スペース内のオフセットおよび整数境界サイズの長さは有効である。有効でない場合、ステップ1244で例外条件が提供される。有効である場合、ロード命令での処理が続行される。(一実施形態では、ファームウェアが上記のチェックを実行する。)
図26へと続き、照会1250で、ロードがアダプタ機能の構成アドレス・スペースに対するものであるかどうかが、ファームウェアによって決定される。すなわち、アダプタ機能のメモリの構成に基づき、命令内に提供された指定されたアドレス・スペースが構成スペースであるかどうかである。構成アドレス・スペースに対するものである場合、ファームウェアは、アダプタ機能に結合されたハブに要求を提供するために様々な処理を実行し、その後、ステップ1252で、ハブは要求を機能にルーティングする。
たとえばファームウェアは、命令オペランド内に提供された機能ハンドルによってポイントされた機能テーブル・エントリから、要求側IDを取得する。さらにファームウェアは、機能テーブル・エントリ内の情報(たとえば内部ルーティング情報)に基づいて、この要求を受け取るハブを決定する。すなわち、環境は1つまたは複数のハブを有することが可能であり、ファームウェアはアダプタ機能に結合されたハブを決定する。その後、要求をハブに転送する。ハブは、機能テーブル・エントリ内のRIDによって識別されたアダプタ機能へとPCIバス上を流れる、構成読み取り要求パケットを生成する。構成読み取り要求は、以下で説明されるように、データをフェッチするために使用されるRIDおよびオフセット(すなわち、データ・アドレス)を含む。
照会1250に戻り、指定されたアドレス・スペースが構成スペースでない場合、ファームウェアは、ステップ1254で、要求をハブに提供するための様々な処理を再度実行する。ファームウェアは、ハンドルを使用して機能テーブル・エントリを選択し、そのエントリから、適切なハブの位置を特定するための情報を取得する。ロード動作で使用されることになるデータ・アドレスも計算する。このアドレスは、機能テーブル・エントリから取得されたBAR開始アドレス(BARは、命令内に提供されたアドレス・スペース識別子に関連付けられている)を、命令内に提供されたオフセットに追加することによって計算される。この計算されたデータ・アドレスは、ハブに提供される。その後、ハブはそのアドレスを受け取り、これを、PCIバスを介してアダプタ機能へと流れる、DMA読み取り要求パケットなどの要求パケット内に含める。
ステップ1252またはステップ1254のいずれかを介した要求の受信に応答して、アダプタ機能は、指定された位置(すなわちデータ・アドレス)から要求されたデータをフェッチし、ステップ1256で、要求に応答してそのデータを戻す。応答は、アダプタ機能からI/Oハブへ転送される。応答の受信に応答して、ハブは、この応答を開始プロセッサに転送する。その後、開始プロセッサは、応答パケットからデータを受け取り、これを命令内に指定された指定位置(たとえばフィールド1)にロードする。PCIロード動作は、成功の指示(たとえば、ゼロの条件コードを設定すること)で終了する。
アダプタ機能からデータを取り出してこれを指定された位置に記憶するロード命令に加えて、実行可能な他の命令は、記憶命令である。記憶命令は、アダプタ機能内の指定された位置にデータを記憶する。PCI記憶命令の一実施形態について、図27を参照しながら説明する。図に示されるように、PCI記憶命令1300は、たとえば、PCI記憶命令を示すオペレーション・コード1302と、アダプタ機能に記憶されることになるデータを含む位置を指定する第1のフィールド1304と、データの記憶先となるアダプタ機能に関する様々な情報が含まれる位置を指定する第2のフィールド1306とを含む。フィールド1および2によって指定された位置のコンテンツについて、以下でさらに説明する。
一例では、フィールド1は汎用レジスタを指定し、図28に示されるように、そのレジスタのコンテンツ1304は、アダプタ機能の指定された位置に記憶されることになるデータの1つまたは複数のバイトの連続領域を含む。一例では、データはレジスタの右端のバイト位置にあるデータが記憶される。
一実施形態では、フィールド2は、様々な情報を含む汎用レジスタ・ペアを指定する。図28に示されるように、レジスタのコンテンツは、たとえば以下を含む。
使用可能ハンドル1310:このフィールドは、データの記憶先となるアダプタ機能の使用可能機能ハンドルである。
アドレス・スペース1312:このフィールドは、データの記憶先となるアダプタ機能内のアドレス・スペースを識別する。
アドレス・スペース内のオフセット1314:このフィールドは、データの記憶先となる指定されたアドレス・スペース内のオフセットを指定する。
長さフィールド1316:このフィールドは、記憶動作の長さ(たとえば記憶されることになるバイト数)を指定する。
状況フィールド1318:このフィールドは、命令が事前に定義された条件コードで終了した場合に、適用可能な状況コードを提供する。
PCI記憶命令に関連付けられた論理の一実施形態について、図30〜図31を参照しながら説明する。一例では、命令はオペレーティング・システムによって発行され、オペレーティング・システムを実行しているプロセッサ(たとえばファームウェア)によって実行される。
命令を発行するために、オペレーティング・システムは、PCI機能ハンドル、PCIアドレス・スペース(PCIAS)、PCIアドレス・スペースへのオフセット、記憶されることになるデータの長さ、および記憶されることになるデータへのポインタといったオペランドを、(たとえば、命令によって指定された1つまたは複数のレジスタ内の)命令に提供する。PCI記憶命令が正常に終了すると、データは、命令によって指定された位置に記憶される。
図30を参照すると、初めに、照会1400で、PCI記憶命令に可能な機構がインストールされているかどうかが決定される。たとえばこの決定は、たとえば制御ブロック内に記憶されたインジケータをチェックすることによって実行される。機構がインストールされていない場合、ステップ1402で例外条件が提供される。インストールされている場合、ゲストがこの命令を発行していれば、ゲストがロード/記憶解釈に対して使用可能であるかどうかが決定される。これは、ゲストの状態記述内のロード/記憶解釈制御をチェックすることによって実行される。使用可能でない場合、例外条件が提供される。使用可能である場合、照会1404で、オペランドが整合されているかどうかが決定される。たとえば、あるオペランドが偶数/奇数のレジスタ・ペア内になければならない場合、それらの要件が満たされているかどうかが決定される。オペランドが整合されていない場合、ステップ1406で例外が提供される。さもなければ、機構がインストールされており、オペランドが整合されている場合、照会1408で、PCI記憶命令のオペランド内に提供されたハンドルが使用可能であるかどうかが決定される。一例では、この決定は、ハンドル内の使用可能インジケータをチェックすることによって実行される。ハンドルが使用可能でない場合、ステップ1410で例外条件が提供される。
ハンドルが使用可能である場合、ステップ1412で、ハンドルを使用して機能テーブル・エントリの位置が特定される。すなわち、ハンドルの一部を機能テーブル内へのインデックスとして使用して、データの記憶先となるアダプタ機能に対応する機能テーブル・エントリの位置が特定される。
その後、照会1413で、命令がゲストによって発行されたかどうかが決定される。ゲストによって発行された場合、照会1415で、インターセプション制御が(たとえば1に)設定されたかどうかがさらに決定される。この決定は、FTE内のインターセプション制御をチェックすることによって実行される。設定された場合、ステップ1417で例外条件が提供される。設定されない場合、照会1414で、機能がゲストによって使用されるように構成されたかどうかが決定される。認証されていない場合、ステップ1416で例外条件が提供される。構成がゲストでない場合、または、他の認証が指定されていてチェック可能である場合、この照会は、無視することができる。
その後、または命令がゲストによって発行されていない場合、照会1418で、機能が使用可能であるかどうかが決定される。一例では、この決定は、機能テーブル・エントリ内の使用可能インジケータをチェックすることによって実行される。使用可能でない場合、ステップ1420で例外条件が提供される。
機能が使用可能である場合、照会1422で、アドレス・スペースが有効であるかどうかが決定される。たとえば、指定されたアドレス・スペースが、アダプタ機能の指定されたアドレス・スペースであり、この命令に適切であるかどうかである。アドレス・スペースが無効である場合、ステップ1424で例外条件が提供される。無効でない場合、照会1426で、ロード/記憶がブロックされたかどうかが決定される。一例では、この決定は、機能テーブル・エントリ内の状況インジケータをチェックすることによって実行される。ロード/記憶がブロックされた場合、ステップ1428で例外条件が提供される。
しかしながら、ロード/記憶がブロックされていない場合、照会1430で、回復がアクティブであるかどうかが決定される。一例では、この決定は、機能テーブル・エントリ内の回復開始インジケータをチェックすることによって実行される。回復がアクティブである場合、ステップ1432で例外条件が提供される。アクティブでない場合、照会1434で機能がビジーであるかどうかが決定される。この決定は、機能テーブル・エントリ内のビジー・インジケータをチェックすることによって実行される。機能がビジーである場合、ステップ1436でビジー条件が提供される。ビジー条件を使用して、ドロップの代わりに命令を再試行することができる。
機能がビジーでない場合、照会1438で、命令内に指定されたオフセットが有効であるかどうかがさらに決定される。すなわち、動作の長さと組み合わせたオフセットが、機能テーブル・エントリ内に指定されたように、アドレス・スペースのベースおよび長さ内にあるかどうかである。有効でない場合、ステップ1440で例外条件が提供される。しかしながら、オフセットが有効である場合、照会1442で、長さが有効であるかどうかが決定される。すなわち、アドレス・スペース・タイプに従って、アドレス・スペース内のオフセットおよび整数境界サイズの長さは有効である。有効でない場合、ステップ1444で例外条件が提供される。有効である場合、記憶命令での処理が続行される。(一実施形態では、ファームウェアが上記のチェックを実行する。)
図31へと続き、照会1450で、記憶がアダプタ機能の構成アドレス・スペースに対するものであるかどうかが、ファームウェアによって決定される。すなわち、アダプタ機能のメモリの構成に基づき、命令内に提供された指定されたアドレス・スペースが構成スペースであるかどうかである。構成アドレス・スペースに対するものである場合、ファームウェアは、アダプタ機能に結合されたハブに要求を提供するために様々な処理を実行し、その後、ステップ1452で、ハブは要求を機能にルーティングする。
たとえばファームウェアは、命令オペランド内に提供された機能ハンドルによってポイントされた機能テーブル・エントリから、要求側IDを取得する。さらにファームウェアは、機能テーブル・エントリ内の情報(たとえば内部ルーティング情報)に基づいて、この要求を受け取るハブを決定する。すなわち、環境は1つまたは複数のハブを有することが可能であり、ファームウェアはアダプタ機能に結合されたハブを決定する。その後、要求をハブに転送する。ハブは、機能テーブル・エントリ内のRIDによって識別されたアダプタ機能へとPCIバス上を流れる、構成書き込み要求パケットを生成する。構成書き込み要求は、以下で説明されるように、データを記憶するために使用されるRIDおよびオフセット(すなわち、データ・アドレス)を含む。
照会1450に戻り、指定されたアドレス・スペースが構成スペースでない場合、ファームウェアは、ステップ1454で、要求をハブに提供するための様々な処理を再度実行する。ファームウェアは、ハンドルを使用して機能テーブル・エントリを選択し、そのエントリから、適切なハブの位置を特定するための情報を取得する。記憶動作で使用されることになるデータ・アドレスも計算する。このアドレスは、機能テーブル・エントリから取得されたBAR開始アドレスを、命令内に提供されたオフセットに追加することによって計算される。この計算されたデータ・アドレスは、ハブに提供される。その後、ハブはそのアドレスを受け取り、これを、PCIバスを介してアダプタ機能へと流れる、DMA書き込み要求パケットなどの要求パケット内に含める。
ステップ1452またはステップ1454のいずれかを介した要求の受信に応答して、アダプタ機能は、ステップ1456で、指定された位置(すなわちデータ・アドレス)に要求されたデータを記憶する。PCI記憶動作は、成功の指示(たとえば、ゼロの条件コードを設定すること)で終了する。
典型的には最大の、たとえば8バイトをロードまたは記憶する、ロードおよび記憶命令に加えて、実行可能な他の命令は、ブロック記憶命令である。ブロック記憶命令は、アダプタ機能内の指定された位置により大きなデータのブロック(たとえば、16、32、64、128、または256バイト)を記憶し、このブロック・サイズは必ずしも2の倍数のサイズに限定されない。一例では、指定される位置は、アダプタ機能のメモリ・スペース(I/Oまたは構成スペースではない)内にある。
PCIブロック記憶命令の一実施形態について、図32を参照しながら説明する。図に示されるように、PCIブロック記憶命令1500は、たとえば、PCIブロック記憶命令を示すオペレーション・コード1502と、データの記憶先となるアダプタ機能に関する様々な情報が含まれる位置を指定する第1のフィールド1504と、データの記憶先となる指定されたアドレス・スペース内のオフセットを含む位置を指定する第2のフィールド1506と、アダプタ機能に記憶されることになるデータのシステム・メモリ・アドレスを含む位置を指定する第3のフィールド1508とを含む。フィールド1、2、および3によって指定された位置のコンテンツについて、以下でさらに説明する。
一実施形態では、フィールド1は、様々な情報を含む汎用レジスタを指定する。図33に示されるように、レジスタのコンテンツは、たとえば以下を含む。
使用可能ハンドル1510:このフィールドは、データの記憶先となるアダプタ機能の使用可能機能ハンドルである。
アドレス・スペース1512:このフィールドは、データの記憶先となるアダプタ機能内のアドレス・スペースを識別する。
長さフィールド1514:このフィールドは、記憶動作の長さ(たとえば記憶されることになるバイト数)を指定する。
状況フィールド1516:このフィールドは、命令が事前に定義された条件コードで終了した場合に、適用可能な状況コードを提供する。
一例では、フィールド2は汎用レジスタを指定し、図34に示されるように、レジスタのコンテンツは、データの記憶先となる指定されたアドレス・スペース内のオフセットを指定する値(たとえば64ビットの符号なし整数)を含む。
一例では、フィールド3は、図35に示されるように、アダプタ機能に記憶されることになるシステム・メモリ内のデータの第1のバイトの論理アドレス1522を含む。
PCIブロック記憶命令に関連付けられた論理の一実施形態について、図36〜図37を参照しながら説明する。一例では、命令はオペレーティング・システムによって発行され、オペレーティング・システムを実行しているプロセッサ(たとえばファームウェア)によって実行される。
命令を発行するために、オペレーティング・システムは、PCI機能ハンドル、PCIアドレス・スペース(PCIAS)、PCIアドレス・スペースへのオフセット、記憶されることになるデータの長さ、および記憶されることになるデータへのポインタといったオペランドを、(たとえば、命令によって指定された1つまたは複数のレジスタ内の)命令に提供する。ポインタ・オペランドは、レジスタおよび符号付きまたは符号なし置換の両方を含むことができる。PCIブロック記憶命令が正常に終了すると、データは、命令によって指定されたアダプタ内の位置に記憶される。
図36を参照すると、初めに、照会1600で、PCIブロック記憶命令に可能な機構がインストールされているかどうかが決定される。たとえばこの決定は、たとえば制御ブロック内に記憶されたインジケータをチェックすることによって実行される。機構がインストールされていない場合、ステップ1602で例外条件が提供される。インストールされている場合、ゲストがこの命令を発行していれば、ゲストがロード/記憶解釈に対して使用可能であるかどうかが決定される。これは、ゲストの状態記述内のロード/記憶解釈制御をチェックすることによって実行される。使用可能でない場合、例外条件が提供される。さもなければ、機構がインストールされている場合、照会1604で、PCIブロック記憶命令のオペランド内に提供されたハンドルが使用可能であるかどうかが決定される。一例では、この決定は、ハンドル内の使用可能インジケータをチェックすることによって実行される。ハンドルが使用可能でない場合、ステップ1606で例外条件が提供される。
ハンドルが使用可能である場合、ステップ1612で、ハンドルを使用して機能テーブル・エントリの位置が特定される。すなわち、ハンドルの一部を機能テーブル内へのインデックスとして使用して、データの記憶先となるアダプタ機能に対応する機能テーブル・エントリの位置が特定される。
その後、照会1613で、命令がゲストによって発行されたかどうかが決定される。ゲストによって発行された場合、照会1615で、インターセプション制御が(たとえば1に)設定されたかどうかがさらに決定される。この決定は、FTE内のインターセプション制御をチェックすることによって実行される。設定された場合、ステップ1617で例外条件が提供される。設定されない場合、照会1614で、機能がゲストによって使用されるように構成されたかどうかが決定される。認証されていない場合、ステップ1616で例外条件が提供される。構成がゲストでない場合、または、他の認証が指定されていてチェック可能である場合、この照会は、無視することができる。
その後、または命令がゲストによって発行されていない場合、照会1618で、機能が使用可能であるかどうかが決定される。一例では、この決定は、機能テーブル・エントリ内の使用可能インジケータをチェックすることによって実行される。使用可能でない場合、ステップ1620で例外条件が提供される。
機能が使用可能である場合、照会1622で、アドレス・スペースが有効であるかどうかが決定される。たとえば、指定されたアドレス・スペースが、アダプタ機能の指定されたアドレス・スペースであり、この命令に適切である(すなわちメモリ・スペース)かどうかである。アドレス・スペースが無効である場合、ステップ1624で例外条件が提供される。無効でない場合、照会1626で、ロード/記憶がブロックされたかどうかが決定される。一例では、この決定は、機能テーブル・エントリ内の状況インジケータをチェックすることによって実行される。ロード/記憶がブロックされた場合、ステップ1628で例外条件が提供される。
しかしながら、ロード/記憶がブロックされていない場合、照会1630で、回復がアクティブであるかどうかが決定される。一例では、この決定は、機能テーブル・エントリ内の回復開始インジケータをチェックすることによって実行される。回復がアクティブである場合、ステップ1632で例外条件が提供される。アクティブでない場合、照会1634で機能がビジーであるかどうかが決定される。この決定は、機能テーブル・エントリ内のビジー・インジケータをチェックすることによって実行される。機能がビジーである場合、ステップ1636でビジー条件が提供される。ビジー条件を使用して、ドロップの代わりに命令を再試行することができる。
機能がビジーでない場合、照会1638で、命令内に指定されたオフセットが有効であるかどうかがさらに決定される。すなわち、動作の長さと組み合わせたオフセットが、機能テーブル・エントリ内に指定されたように、アドレス・スペースのベースおよび長さ内にあるかどうかである。有効でない場合、ステップ1640で例外条件が提供される。しかしながら、オフセットが有効である場合、照会1642で、長さが有効であるかどうかが決定される。すなわち、アドレス・スペース・タイプに従って、アドレス・スペース内のオフセットおよび整数境界サイズの長さは有効である。有効でない場合、ステップ1644で例外条件が提供される。有効である場合、ブロック記憶命令での処理が続行される。(一実施形態では、ファームウェアが上記のチェックを実行する。)
図37へと続き、照会1650で、記憶されることになるデータを含むストレージがアクセス可能であるかどうかが、ファームウェアによって決定される。アクセス可能でない場合、ステップ1652で例外条件が提供される。アクセス可能である場合、ファームウェアは、アダプタ機能に結合されたハブに要求を提供するために様々な処理を実行し、その後、ステップ1654で、ハブは要求を機能にルーティングする。
たとえばファームウェアは、ハンドルを使用して機能テーブル・エントリを選択し、そのエントリから、適切なハブの位置を特定するための情報を取得する。ブロック記憶動作で使用されることになるデータ・アドレスも計算する。このアドレスは、機能テーブル・エントリから取得されたBAR開始アドレス(BARは、アドレス・スペース識別子によって識別されている)を、命令内に提供されたオフセットに追加することによって計算される。この計算されたデータ・アドレスは、ハブに提供される。加えて、命令内に提供されたアドレスによって参照されるデータは、システム・メモリからフェッチされ、I/Oハブへと提供される。その後、ハブはそのアドレスおよびデータを受け取り、これを、PCIバスを介してアダプタ機能へと流れる、DMA書き込み要求パケットなどの要求パケット内に含める。
要求の受信に応答して、アダプタ機能は、ステップ1656で、指定された位置(すなわちデータ・アドレス)に要求されたデータを記憶する。PCIブロック記憶動作は、成功の指示(たとえば、ゼロの条件コードを設定すること)で終了する。
上記で詳細に説明したのは、ゲストを実行するホストが、ホストの介入なしにアダプタのアドレス・スペースに直接するためにゲストに対する許可を付与できるようにする、認証機能である。これらのアドレス・スペースは、オペレーティング・システム(ゲストまたはホスト)によって見られるメモリ・スペース内にマッピングされない。代わりに、それらは抽象化される(すなわち、特定のPCI命令による使用が可能にされる)。ゲストが解釈的実行の下で実行している場合、ゲストに割り当てられたアダプタ機能はゲストによって「所有」されているため、認証された場合、ホストの介入なしにゲスト命令(たとえばPCIロードおよびPCI記憶機能)の実行によって直接操作することができる。さらに、ゲストが解釈的実行の下で実行している場合、ゲスト命令ストレージおよびオペランド・アドレスは論理アドレスとして扱われ、アドレス指定されたストレージは、ホストの介入なしにゲスト命令(たとえば認証された場合、PCIブロック記憶)の実行によって、直接操作することができる。一例では、ゲストは命令を実行するためにスーパバイザ状態にある。
解釈制御は、ゲストおよび機能レベルの両方で、PCI命令解釈を介してホストに制御を与える。シミュレート・デバイス(すなわちデバイスのソフトウェア表現)および専用デバイス(すなわちハードウェア・デバイス)の混合が存在可能である。シミュレート・デバイスの場合、インターセプション制御は存在しない。ゲストPCIロード/記憶命令は、ホストへインターセプションし、ホストは、デバイスが存在したかのようにゲストに見せるために状況を維持するよう、FTEおよびDTEのバージョンを維持することになる。
さらに、ホストが介入を望むことを決定した場合、これを動的に実行する(命令実行時を含む)ことができる。
本明細書で説明される実施形態では、アダプタはPCIアダプタである。本明細書で使用される場合、PCIは、PCIまたはPCIeを含むがこれらに限定されない、Peripheral Component Interconnect Special Interest Group(PCI−SIG)によって定義されたPCIベース規格に従って実装される任意のアダプタを指す。特定の一例では、周辺装置相互接続エクスプレス(PCIe)は、I/Oアダプタとホスト・システムとの間のトランザクションのための双方向通信プロトコルを定義する、構成要素レベルの相互接続規格である。PCIe通信は、PCIeバス上での伝送用のPCIe規格に従って、パケットにカプセル化される。I/Oアダプタから始まりホスト・システムで終わるトランザクションは、アップバウンド・トランザクションと呼ばれる。ホスト・システムから始まりI/Oアダプタで終わるトランザクションは、ダウンバウンド・トランザクションと呼ばれる。PCIeトポロジは、PCIeバスを形成するためにペア(たとえば1つはアップバウンド・リンク、1つはダウンバウンド・リンク)にされる、2地点間単方向リンクに基づくものである。PCI規格は、背景技術の項で前述したように、PCI−SIGによって維持および公開される。
当業者であれば理解されるように、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具体化することができる。したがって、本発明の態様は、完全にハードウェア実施形態、完全にソフトウェア実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、あるいは、本明細書ではすべて一般に「回路」、「モジュール」、または「システム」と呼ばれることのあるソフトウェアおよびハードウェアの態様を組み合わせた実施形態の形を取ることができる。さらに、本発明の態様は、その上にコンピュータ読み取り可能プログラム・コードが具体化された1つまたは複数のコンピュータ読み取り可能媒体内で具体化される、コンピュータ・プログラム製品の形を取ることもできる。
1つまたは複数のコンピュータ読み取り可能媒体の任意の組み合わせも使用可能である。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能記憶媒体とすることができる。コンピュータ読み取り可能記憶媒体は、たとえば、電子、磁気、光、電磁、赤外線、または半導体の、システム、装置、またはデバイス、あるいはそれらの任意の好適な組み合わせとすることができるが、これらに限定されるものではない。コンピュータ読み取り可能記憶媒体のより特定の例(非網羅的リスト)は、1本または複数本の配線を有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD−ROM)、光記憶デバイス、磁気記憶デバイス、あるいは、それらの任意の好適な組み合わせを含む。本書との関連において、コンピュータ読み取り可能記憶媒体は、命令実行システム、装置、またはデバイスによって、あるいはそれらに関して使用するための、プログラムを含むかまたは記憶することが可能な、任意の有形媒体とすることができる。
次に図38を参照すると、コンピュータ・プログラム製品1700は、たとえば、本発明の1つまたは複数の態様を提供および容易にするために、その上にコンピュータ読み取り可能プログラム・コード手段または論理1704を記憶するための、1つまたは複数のコンピュータ読み取り可能記憶媒体1702を含む。
コンピュータ読み取り可能媒体上に具体化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、RFなど、またはそれらの任意の好適な組み合わせを含むが、それらに限定されない、適切な媒体を使用して、伝送することができる。
本発明の態様に関する動作を実施するためのコンピュータ・プログラム・コードは、Java、Smalltalk、C++などの、オブジェクト指向プログラミング言語、および、「C」プログラミング言語、アセンブラ、または同様のプログラミング言語などの、従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで作成可能である。プログラム・コードは、全体としてユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン型ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上および部分的にリモート・コンピュータ上で、あるいは、全体としてリモート・コンピュータまたはサーバ上で、実行することが可能である。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを通じて、ユーザのコンピュータに接続することができるか、あるいは、外部コンピュータへの(たとえばインターネット・サービス・プロバイダを使用してインターネットを通じて)接続を作成することができる。
本発明の態様について、本明細書では、本発明の実施形態に従った方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図あるいはブロック図またはその両方を参照しながら説明する。流れ図あるいはブロック図またはその両方の各ブロック、および、流れ図あるいはブロック図またはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実装可能であることを理解されよう。これらのコンピュータ・プログラム命令は、機械を生成するために、汎用コンピュータ、特定用途向けコンピュータ、または他のプログラマブル・データ処理装置の、プロセッサに提供可能であるため、結果として、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行する命令が、流れ図あるいはブロック図のブロックまたはその両方に指定された機能/動作を実装するための手段を作成することになる。これらのコンピュータ・プログラム命令は、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに、特定の様式で機能するように指示することが可能な、コンピュータ読み取り可能媒体内に記憶することも可能であるため、結果として、コンピュータ読み取り可能媒体に記憶された命令が、流れ図あるいはブロック図のブロックまたはその両方に指定された機能/動作を実装する命令を含む、製品を製造することになる。
コンピュータまたは他のプログラマブル装置上で実行する命令が、流れ図あるいはブロック図のブロックまたはその両方に指定された機能/動作を実装するためのプロセスを提供するような、コンピュータ実装プロセスを生成するために、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるために、コンピュータ・プログラム命令を、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードすることも可能である。
図面内の流れ図およびブロック図は、本発明の様々な実施形態に従ったシステム、方法、およびコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能、および動作を示す。この点で、流れ図またはブロック図における各ブロックは、指定された論理機能を実装するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、またはコードの一部分を表すことができる。いくつかの代替実装で、ブロック内に示された機能は、図面内に示された順序以外で発生可能であることにも留意されたい。たとえば、連続して示された2つのブロックは、実際にはほぼ同時に実行可能であるか、または、ブロックは、関連する機能に応じて時には逆の順序で実行可能である。ブロック図あるいは流れ図またはその両方の各ブロック、および、ブロック図あるいは流れ図またはその両方のブロックの組み合わせが、指定された機能または動作を実行する特定用途向けハードウェアベース・システム、あるいは、特定用途向けハードウェアとコンピュータ命令との組み合わせによって、実装可能であることにも留意されよう。
上記に加え、本発明の1つまたは複数の態様は、顧客環境の管理を提供するサービス・プロバイダによって、提供、提案、展開、管理、サービス提供などが可能である。たとえば、サービス・プロバイダは、1つまたは複数の顧客に対して本発明の1つまたは複数の態様を実行するコンピュータ・コードあるいはコンピュータ・インフラストラクチャの、作成、維持、サポートなどが可能である。引き換えに、サービス・プロバイダは、たとえば加入あるいは料金契約またはその両方の下で、顧客からの支払いを受け取ることができる。加えて、または別の方法として、サービス・プロバイダは、1人または複数の第三者への広告コンテンツの販売から支払いを受け取ることができる。
本発明の一態様において、本発明の1つまたは複数の態様を実行するために、アプリケーションを展開することができる。一例として、アプリケーションの展開は、本発明の1つまたは複数の態様を実行するように動作可能なコンピュータ・インフラストラクチャを提供することを含む。
本発明の他の態様として、コードおよびコンピューティング・システムの組み合わせで本発明の1つまたは複数の態様を実行することが可能な、コンピュータ読み取り可能コードをコンピューティング・システムに統合することを含む、コンピューティング・インフラストラクチャを展開することができる。
本発明のさらに他の態様として、コンピュータ読み取り可能コードをコンピュータ・システムに統合することを含む、コンピューティング・インフラストラクチャを統合するためのプロセスが提供可能である。コンピュータ・システムは、コンピュータ媒体が本発明の1つまたは複数の態様を含む、コンピュータ読み取り可能媒体を備える。コードおよびコンピュータ・システムの組み合わせで、本発明の1つまたは複数の態様を実行することができる。
上記では様々な実施形態について説明しているが、これらは単なる例である。たとえば、他のアーキテクチャのコンピューティング環境が、本発明の1つまたは複数の態様を組み込んで使用することができる。例として、インターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるPower Systemsサーバまたは他のサーバなどのSystem z(R)サーバ以外のサーバ、あるいは他社のサーバが、本発明の1つまたは複数の態様を含む、使用する、あるいはそれらから恩恵を受ける、またはそれらのすべてが可能である。さらに、本明細書の例では、アダプタおよびPCIハブはサーバの一部とみなされるが、他の実施形態では、必ずしもサーバの一部としてみなされる必要はなく、単にコンピューティング環境のシステム・メモリあるいは他の構成要素またはその両方に結合されているものとみなすことができる。コンピューティング環境はサーバである必要はない。さらに、テーブルについて説明されているが、任意のデータ構造が使用可能であり、テーブルという用語はこうしたすべてのデータ構造を含むものである。さらに、アダプタはPCIベースであるが、本発明の1つまたは複数の態様は、他のアダプタまたは他のI/O構成要素で使用可能である。アダプタおよびPCIアダプタは単なる例である。さらに、DTE、FTE、FIB、あるいは他の構造またはそれらすべては、より多くの、より少ない、または異なるデータを含むことができる。多くの他の変形が可能である。
さらに、他のタイプのコンピューティング環境が、本発明の1つまたは複数の態様から恩恵を受けることができる。例として、システム・バスを通じて直接または間接的にメモリ要素に結合された少なくとも2つのプロセッサを含む、プログラム・コードの記憶あるいは実行またはその両方に好適なデータ処理システムが、使用可能である。メモリ要素は、たとえば、プログラム・コードの実際の実行時に使用されるローカル・メモリ、大容量ストレージ、および、実行時に大容量ストレージからコードを取り出さなければならない回数を減らすために少なくともいくつかのプログラム・コードの一時ストレージを提供するキャッシュ・メモリを、含む。
入力/出力またはI/Oデバイス(キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サム・ドライブ、および他のメモリ媒体などを含むが、これらに限定されない)は、直接、または介在するI/Oコントローラを通じて、システムに結合することができる。データ処理システムが、介在する専用または公衆ネットワークを通じて、他のデータ処理システムあるいはリモートのプリンタまたはストレージ・デバイスに結合できるようにするために、ネットワーク・アダプタをシステムに結合することも可能である。モデム、ケーブル・モデム、およびイーサネット・カードは、ネットワーク・アダプタの使用可能なタイプのごく一部である。
図39を参照すると、本発明の1つまたは複数の態様を実装するための、ホスト・コンピュータ・システム5000の代用的な構成要素が図示されている。代表的なホスト・コンピュータ5000は、コンピュータ・メモリ(すなわち中央ストレージ)5002と通信する1つまたは複数のCPU5001、ならびに、他のコンピュータまたはSANなどと通信するための、記憶媒体デバイス5011およびネットワーク5010へのI/Oインターフェースを備える。CPU5001は、アーキテクチャ命令セットおよびアーキテクチャ機能を有するアーキテクチャに準拠している。CPU5001は、プログラム・アドレス(仮想アドレス)をメモリの実アドレスに変換するための、動的アドレス変換(DAT)5003を有することができる。DATは、通常、その後のコンピュータ・メモリ5002のブロックへのアクセスがアドレス変換の遅延を必要としないように、変換をキャッシュに入れるための変換索引バッファ(TLB)5007を含む。通常、キャッシュ5009は、コンピュータ・メモリ5002とプロセッサ5001との間で使用される。キャッシュ5009は、複数のCPUが使用可能な大型キャッシュ、および、この大型キャッシュと各CPUとの間のより小型で高速の(低レベル)キャッシュを有する、階層型とすることができる。いくつかの実装では、低レベル・キャッシュは、命令のフェッチおよびデータ・アクセス用に別々の低レベル・キャッシュを提供するために分割される。一実施形態では、命令は、命令フェッチ・ユニット5004により、メモリ5002からキャッシュ5009を介してフェッチされる。命令は命令復号ユニット5006で復号され、命令実行ユニット5008へ(いくつかの実施形態では他の命令で)ディスパッチされる。通常、たとえば算術実行ユニット、浮動小数点実行ユニット、および分岐命令実行ユニットなどの、いくつかの実行ユニット5008が使用される。命令は、必要に応じて、命令指定レジスタまたはメモリからのオペランドにアクセスする、実行ユニットによって実行される。オペランドがメモリ5002からアクセス(ロードまたは記憶)されるものである場合、ロード/記憶ユニット5005は、通常、実行されている命令の制御下でアクセスに対処する。命令は、ハードウェア回路で、または内部マイクロコード(ファームウェア)内で、あるいはその両方の組み合わせによって、実行可能である。
前述のように、コンピュータ・システムは、ローカル(またはメイン)ストレージ内の情報、ならびに、アドレス指定、保護、および参照、ならびに変更の記録を含む。アドレス指定のいくつかの態様は、アドレスのフォーマット、アドレス・スペースの概念、様々なタイプのアドレス、および、1つのタイプのアドレスが他のタイプのアドレスに変換される様式を含む。いくつかのメイン・ストレージは、永続的に割り当てられた記憶位置を含む。メイン・ストレージは、直接アドレス指定可能なデータの高速アクセス・ストレージをシステムに提供する。データおよびプログラムは、どちらも処理される前に(入力デバイスから)メイン・ストレージにロードされることになる。
メイン・ストレージは、時にキャッシュと呼ばれる、1つまたは複数のより小型で高速アクセスのバッファ・ストレージを含むことができる。キャッシュは、通常、CPUまたはI/Oプロセッサと物理的に関連付けられる。物理的な構成および別個の記憶媒体の使用の効果は、性能に関する効果を除き、通常、プログラムによって監視することができない。
命令用およびデータ・オペランド用に、別々のキャッシュを維持することができる。キャッシュ内の情報は、キャッシュ・ブロックまたはキャッシュ・ライン(または短くライン)と呼ばれる整数境界上の連続するバイト内に維持される。あるモデルでは、キャッシュ・ラインのサイズをバイト単位で戻す、キャッシュ属性抽出命令を提供することができる。あるモデルは、ストレージをデータまたは命令キャッシュへプリフェッチすること、またはデータをキャッシュから解放することを実施する、データ・プリフェッチ命令および比較的長いデータのプリフェッチ命令を提供することもできる。
ストレージは、ビットの長い水平文字列とみなされる。たいていの動作の場合、ストレージへのアクセスは左から右への順に進行する。ビットの文字列は8ビットの単位に細分される。8ビット単位はバイトと呼ばれ、すべての情報フォーマットの基本構築ブロックである。ストレージ内の各バイト位置は、そのバイト位置のアドレスであるか、または単にバイト・アドレスである、固有の非負整数によって識別される。隣接するバイト位置は、左側の0から始まり左から右へと順に進行する、連続アドレスを有する。アドレスは符号なしの2進整数であり、24、31、または64ビットである。
情報は、ストレージとCPUまたはチャネル・サブシステムの間で、一度に1バイト、またはバイト・グループで伝送される。特に指定されていない限り、たとえばz/Architecture(R)では、ストレージ内のバイト・グループはグループの左端バイトによってアドレス指定される。グループ内のバイト数は、実行されることになる動作によって暗黙的または明示的のいずれかで指定される。CPU動作で使用される場合、バイト・グループはフィールドと呼ばれる。たとえばz/Architecture(R)では、各バイト・グループ内のビットは、左から右の順に番号付けされる。z/Architecture(R)では、時に左端のビットが「高位」ビット、右端のビットが「低位」ビットと呼ばれる。しかしながら、ビット番号はストレージ・アドレスではない。バイトのみがアドレス指定可能である。バイト中のビットには、(たとえばz/Architecture(R)では)左から右へ、0から7までの番号が付けられる。アドレス中のビットには、24ビット・アドレスの場合は8〜31または40〜63、あるいは31ビット・アドレスの場合は1〜31または33〜63の番号を付けることが可能であり、64ビット・アドレスの場合は0〜64の番号が付けられる。複数バイトの任意の他の固定長フォーマットでは、フォーマットを形成するビットは、0から始まる連続番号が付けられる。エラー検出のために、および好ましくは訂正のために、各バイトと共に、またはバイト・グループと共に、1つまたは複数のチェック・ビットを伝送することができる。こうしたチェック・ビットは機械によって自動的に生成され、プログラムによって直接制御することはできない。ストレージ容量はバイト数で表される。ストレージ・オペランド・フィールドの長さが命令のオペレーション・コードによって暗示される場合、そのフィールドは、1、2、4、8、または16バイトとすることが可能な、固定長を有するものと言われる。より大きなフィールドは、何らかの命令に対して暗示することが可能である。ストレージ・オペランド・フィールドの長さが暗示されず、明示的に示される場合、そのフィールドは可変長を有するものと言われる。可変長オペランドは、1バイトずつ(またはいくつかの命令では、2の倍数または他の倍数のバイトで)増分されることで長さを変えることができる。情報がストレージ内に配置される場合、たとえ記憶されるフィールドの長さよりもストレージへの物理パスの幅の方が大きい場合であっても、指定されたフィールドに含まれるそれらのバイト位置のみのコンテンツが置き換えられる。
ある単位の情報がストレージ内の整数境界上に存在することになる。境界は、そのストレージ・アドレスがバイト単位での長さの倍数である場合、情報の単位に対して整数と呼ばれる。整数境界上の2、4、8、および16バイトのフィールドには特別な名前が与えられている。ハーフワードは、2バイト境界上の2つの連続バイトのグループであり、命令の基本構築ブロックである。ワードは、4バイト境界上の4つの連続バイトのグループである。ダブルワードは、8バイト境界上の8つの連続バイトのグループである。クワドワード(quadword)は、16バイト境界上の16の連続バイトのグループである。ストレージ・アドレスがハーフワード、ワード、ダブルワード、およびクワドワードを指定する場合、アドレスの2進表現は、それぞれ右端に1、2、3、または4のゼロ・ビットを含む。命令は、2バイト整数境界上にあるものとされる。ほとんどの命令のストレージ・オペランドには、境界整合要件がない。
命令およびデータ・オペランドに対して別々のキャッシュを実装するデバイスでは、プログラムが、その後、命令のフェッチ元となるキャッシュ・ラインに記憶すると、記憶がその後フェッチされる命令を変更するかどうかにかかわらず、大幅な遅延を経験する可能性がある。
一実施形態では、本発明は、ソフトウェア(時に、ライセンス付き内部コード、ファームウェア、マイクロコード、ミリコード、ピココードなどと呼ばれ、そのいずれかが本発明に適合することになる)によって実施可能である。図39を参照すると、本発明を具体化するソフトウェア・プログラム・コードは、通常、CD−ROMドライブ、テープ・ドライブ、またはハード・ドライブなどの長期記憶媒体デバイス5011から、ホスト・システム5000のプロセッサ5001によってアクセスされる。ソフトウェア・プログラム・コードは、ディスケット、ハード・ドライブ、またはCD−ROMなどの、データ処理システムと共に使用するための様々な知られた媒体のいずれかの上に具体化することができる。コードは、こうした媒体上で配布するか、あるいは、1つのコンピュータ・システムのコンピュータ・メモリ5002またはストレージから、ネットワーク5010を介して、他のコンピュータ・システムへと、こうした他のシステムのユーザが使用するために配布することができる。
ソフトウェア・プログラム・コードは、様々なコンピュータ構成要素および1つまたは複数のアプリケーション・プログラムの機能および対話を制御する、オペレーティング・システムを含む。プログラム・コードは、通常、記憶媒体デバイス5011から、プロセッサ5001による処理に使用可能な相対的に高速のコンピュータ・ストレージ5002へとページングされる。メモリ内、物理媒体上にソフトウェア・プログラム・コードを具体化するため、あるいは、ネットワークを介してソフトウェア・コードを配布するため、またはその両方のための、技法および方法は、良く知られているため、本明細書ではこれ以上考察しない。プログラム・コードは、有形媒体(電子メモリ・モジュール(RAM)、フラッシュ・メモリ、コンパクト・ディスク(CD)、DVD、磁気テープなどを含むが、これらに限定されない)上で作成および記憶された場合、しばしば「コンピュータ・プログラム製品」と呼ばれる。コンピュータ・プログラム製品は、通常、処理回路による実行のために、好ましくはコンピュータ・システム内の処理回路によって読み取り可能である。
図40は、内部で本発明が実施可能な代表的ワークステーションまたはサーバ・ハードウェア・システムを示す。図40のシステム5020は、オプションの周辺デバイスを含む、パーソナル・コンピュータ、ワークステーション、またはサーバなどの、代表的なベース・コンピュータ・システム5021を備える。ベース・コンピュータ・システム5021は、1つまたは複数のプロセッサ5026と、知られた技法に従ってプロセッサ5026とシステム5021の他の構成要素との間を接続し、通信を可能にするために使用される、バスとを含む。バスは、プロセッサ5026を、メモリ5025、および、たとえばハード・ドライブ(たとえば磁気媒体、CD、DVD、およびフラッシュ・メモリのいずれかを含む)またはテープ・ドライブを含むことが可能な長期ストレージ5027に接続する。システム5021は、バスを介してタッチ・センシティブ・スクリーン、デジタル入力パッドなどの、任意のユーザ・インターフェース・ドライブとすることが可能な、キーボード5024、マウス5023、プリンタ/スキャナ5030、あるいは他のインターフェース・デバイスまたはそれらすべてなどの、1つまたは複数のインターフェース・デバイスに、マイクロプロセッサ5026を接続する、ユーザ・インターフェース・アダプタも含む場合がある。バスは、LCDスクリーンまたはモニタなどのディスプレイ・デバイス5022も、ディスプレイ・アダプタを介してマイクロプロセッサ5026に接続する。
システム5021は、ネットワーク5029との通信5028が可能なネットワーク・アダプタを使用して、他のコンピュータまたはコンピュータのネットワークと通信することができる。ネットワーク・アダプタの例は、通信チャネル、トークン・リング、イーサネット、またはモデムである。別の方法として、システム5021は、CDPD(セルラ式デジタル・パケット・データ)などの無線インターフェースを使用して、通信することができる。システム5021を、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)内のこうした他のコンピュータに関連付けることができるか、あるいは、システム5021を、他のコンピュータを備えたクライアント/サーバ配置構成内のクライアントとすることなどができる。これらの構成、ならびに適切な通信ハードウェアおよびソフトウェアは、すべて当分野で知られている。
図41は、内部で本発明が実施可能な、データ処理ネットワーク5040を示す。データ処理ネットワーク5040は、それぞれが複数の個別のワークステーション5041、5042、5043、5044を含むことが可能な、無線ネットワークおよび有線ネットワークなどの、複数の個別のネットワークを含むことができる。加えて、当業者であれば理解されるように、LANが、ホスト・プロセッサに結合された複数のインテリジェント・ワークステーションを備えることが可能な、1つまたは複数のLANを含めることも可能である。
さらに図41を参照すると、ネットワークは、ゲートウェイ・コンピュータ(クライアント・サーバ5046)またはアプリケーション・サーバ(データ・リポジトリにアクセス可能であり、ワークステーション5045から直接アクセスすることも可能な、リモート・サーバ5048)などの、メインフレーム・コンピュータまたはサーバを含むこともできる。ゲートウェイ・コンピュータ5046は、各個別のネットワークへのエントリ・ポイントとしても働く。ゲートウェイは、ネットワーキング・プロトコル間を接続する場合に必要である。ゲートウェイ5046は、好ましくは、通信リンクを使用して他のネットワーク(たとえばインターネット5047)に結合することができる。ゲートウェイ5046は、通信リンクを使用して、1つまたは複数のワークステーション5041、5042、5043、5044に、直接結合することもできる。ゲートウェイ・コンピュータは、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能なIBM eServer(TM) System z(R)サーバを使用して実装することが可能である。
図40および図41を同時に参照すると、本発明を具体化することが可能なソフトウェア・プログラミング・コードは、CD−ROMドライブまたはハード・ドライブなどの長期記憶媒体5027から、システム5020のプロセッサ5026によってアクセス可能である。ソフトウェア・プログラミング・コードは、ディスケット、ハード・ドライブ、またはCD−ROMなどの、データ処理システムで使用するための様々な知られた媒体のいずれかで、具体化することができる。コードは、こうした媒体上で配布可能であるか、あるいは、1つのコンピュータ・システムのメモリまたはストレージから、他のコンピュータ・システムへのネットワークを介して、こうした他のシステムのユーザが使用するために、ユーザ5050、5051に配布することが可能である。
別の方法として、プログラミング・コードをメモリ5025内で具体化し、プロセッサ・バスを使用してプロセッサ5026によってアクセスすることができる。こうしたプログラミング・コードは、様々なコンピュータ構成要素および1つまたは複数のアプリケーション・プログラム5032の機能および対話を制御する、オペレーティング・システムを含む。プログラム・コードは、通常、記憶媒体5027から、プロセッサ5026による処理に使用可能な高速メモリ5025へとページングされる。物理媒体上でメモリ内のソフトウェア・プログラミング・コードを具体化するため、あるいは、ネットワークを介してソフトウェア・コードを配布するため、またはその両方のための技法および方法は良く知られているため、本明細書ではこれ以上考察しない。プログラム・コードは、有形媒体(電子メモリ・モジュール(RAM)、フラッシュ・メモリ、コンパクト・ディスク(CD)、DVD、磁気テープなどを含むが、これらに限定されない)上で作成および記憶された場合、しばしば「コンピュータ・プログラム製品」と呼ばれる。コンピュータ・プログラム製品は、通常、処理回路による実行のために、好ましくはコンピュータ・システム内の処理回路によって読み取り可能である。
プロセッサが最も容易に使用できるキャッシュ(通常は、プロセッサの他のキャッシュよりも高速かつ小型である)は、最下位(L1またはレベル1)キャッシュであり、メイン・ストア(メイン・メモリ)は最高位(レベル3まである場合はL3)である。最下位キャッシュはしばしば、実行されることになる機械命令を保持する命令キャッシュ(Iキャッシュ)と、データ・オペランドを保持するデータ・キャッシュ(Dキャッシュ)とに分割される。
図42を参照すると、プロセッサ5026に関する例示的プロセッサ実施形態が示されている。通常、キャッシュ5053の1つまたは複数のレベルが、プロセッサ性能を向上させるため、メモリ・ブロックをバッファリングするために使用される。キャッシュ5053は、使用される可能性の高いメモリ・データのキャッシュ・ラインを保持する高速バッファである。典型的なキャッシュ・ラインは64、128、256バイトのメモリ・データである。しばしば、別々のキャッシュが、データのキャッシュよりも命令のキャッシュに使用される。当分野で良く知られた様々な「スヌープ」アルゴリズムによって、キャッシュ・コヒーレンス(メモリおよび内のラインのコピーおよびキャッシュの同期化)がしばしば提供される。プロセッサ・システムのメイン・メモリ・ストレージ5025は、しばしばキャッシュと呼ばれる。4レベルのキャッシュ5053を有するプロセッサ・システムでは、メイン・ストレージ5025は、通常、より高速であり、コンピュータ・システムが使用可能な不揮発性ストレージ(DASD、テープなど)の一部のみを保持することから、時に、レベル5(L5)キャッシュと呼ばれる。メイン・ストレージ5025は、オペレーティング・システムによってメイン・ストレージ5025の内外へページングされるデータのページを「キャッシュ」する。
プログラム・コンピュータ(命令カウンタ)5061は、実行されることになる現行命令のアドレスを追跡する。z/Architecture(R)プロセッサ内のプログラム・カウンタは64ビットであり、従来のアドレス指定制限をサポートするために31または24ビットに切り詰めることができる。プログラム・カウンタは、通常、コンテキスト切り換え時に持続するよう、コンピュータのPSW(プログラム状況ワード)内で具体化される。したがって、プログラム・カウンタ値を有する進行中のプログラムは、たとえばオペレーティング・システムによって割り込まれる(プログラム環境からオペレーティング・システム環境へのコンテキスト切り換え)可能性がある。プログラムのPSWは、プログラムがアクティブでない間、プログラム・カウンタを維持し、オペレーティング・システムが実行中の間、オペレーティング・システムの(PSW内の)プログラム・カウンタが使用される。通常、プログラム・カウンタは、現行命令のバイト数に等しい数ずつ増分される。RISC(縮小命令セット・コンピューティング)命令は通常固定長であるが、CISC(複雑命令セット・コンピューティング)命令は通常可変長である。IBM z/Architecture(R)の命令は、2、4、または6バイト長さを有するCICS命令である。プログラム・カウンタ5061は、たとえば、コンテキスト切り換え動作または分岐命令の分岐実施動作のいずれかによって修正される。コンテキスト切り換え動作では、現行プログラム・カウンタ値が、(条件コードなどの)実行されているプログラムに関する他の状態情報と共にプログラム状況ワード内に保存され、実行されることになる新しいプログラム・モジュールの命令を指示する新しいプログラム・カウンタ値がロードされる。分岐命令の結果をプログラム・カウンタ5061内にロードすることによって、プログラムが決定またはプログラム内をループできるようにするために、分岐実施動作が実行される。
通常、命令フェッチ・ユニット5055は、プロセッサ5026の代わりに命令をフェッチするために使用される。フェッチ・ユニットは、「次の順次命令」、分岐実施命令のターゲット命令、またはコンテキスト切り換え後のプログラムの第1の命令の、いずれかをフェッチする。現行の命令フェッチ・ユニットは、しばしばプリフェッチ技術を使用し、プリフェッチされた命令が使用できる確率に基づいて、投機的に命令をプリフェッチする。たとえばフェッチ・ユニットは、次の順次命令を含む命令の16バイト、および他の順次命令の追加のバイトをフェッチすることができる。
フェッチされた命令は、次に、プロセッサ5026によって実行される。実施形態では、フェッチされた命令は、フェッチ・ユニットのディスパッチ・ユニット5056に渡される。ディスパッチ・ユニットは、命令を復号し、復号された命令に関する情報を適切なユニット5057、5058、5060へと転送する。実行ユニット5057は、通常、復号された算術命令に関する情報を命令フェッチ・ユニット5055から受け取り、命令のオペレーション・コードに従ってオペランドに関する算術演算を実行することになる。オペランドは、好ましくはメモリ5025、アーキテクチャ・レジスタ5059、または実行されている命令の即時フィールドのいずれかから、実行ユニット5057に提供される。実行の結果は、記憶される場合、メモリ5025、レジスタ5059、または他の機械ハードウェア(制御レジスタ、PSWレジスタなど)のいずれかに記憶される。
プロセッサ5026は、通常、命令の機能を実行するための1つまたは複数のユニット5057、5058、5060を有する。図43を参照すると、実行ユニット5057は、アーキテクチャ汎用レジスタ5059、復号/ディスパッチ・ユニット5056、ロード記憶ユニット5060、およびその他5065のプロセッサ・ユニットと、インターフェース論理5071を使用して通信することができる。実行ユニット5057は、情報を保持するために、算術論理ユニット(ALU)5066が動作することになるいくつかのレジスタ回路5067、5068、5069を使用することができる。ALUは、加算、減算、乗算、および除算などの算術演算、ならびに、AND、ORおよび排他的OR、回転およびシフトなどの論理関数を実行する。好ましくは、ALUは、設計に依存する特殊な演算をサポートしている。他の回路は、たとえば条件コードおよび回復支援論理を含む、他のアーキテクチャ機構5072を提供することができる。通常、ALU演算の結果は、結果を様々な他の処理機能に転送することが可能な、出力レジスタ回路5070内に保持される。プロセッサ・ユニットには多くの配置構成があり、本説明では、代表的な一実施形態を理解することのみが意図される。
たとえばADD命令は、算術および論理関数を有する実行ユニット5057内で実行されるが、たとえば浮動小数点命令は、特別な浮動小数点機能を有する浮動小数点実行で実行されることになる。好ましくは、実行ユニットは、オペランド上でオペレーション・コード定義機能を実行することによって、命令によって識別されたオペランド上で動作する。たとえば、ADD命令は、命令のレジスタ・フィールドによって識別された2つのレジスタ5059内に見られるオペランド上で、実行ユニット5057によって実行することができる。
実行ユニット5057は、2つのオペランド上で算術加算を実行し、その結果を、第3のオペランドが第3のレジスタまたは2つのソース・レジスタのうちの1つとすることが可能な第3のオペランドに記憶する。実行ユニットは、好ましくは、シフト、回転、AND、OR、およびXORなどの様々な論理関数、ならびに、加算、減算、乗算、除算のいずれかを含む様々な代数関数を実行することが可能な、算術論理ユニット(ALU)5066を使用する。ALU5066のいくつかはスカラー演算用、いくつかは浮動小数点用に設計される。データは、アーキテクチャに応じて、ビッグ・エンディアン(最下位バイトが最高バイト・アドレスである)またはリトル・エンディアン(最下位バイトが最低バイト・アドレスである)とすることができる。IBM z/Architecture(R)はビッグ・エンディアンである。符号付きフィールドは、アーキテクチャに応じて、符号および絶対値、1の補数、または2の補数とすることができる。2の補数は、ALU内では2の補数における負の値または正の値のいずれかのみが加算を必要とすることから、ALUが減算機能を設計する必要がないという点で、有利である。数値は、通常、省略して記述され、12ビット・フィールドは4096バイト・ブロックのアドレスを定義し、たとえば通常、4Kバイト(キロバイト)ブロックとして記述される。
図44を参照すると、分岐命令を実行するための分岐命令情報は、通常、他の条件付き演算が完了する前に分岐の出現を予測するために分岐履歴テーブル5082などの分岐予測アルゴリズムをしばしば使用する、分岐ユニット5058に送信される。現行の分岐命令のターゲットはフェッチされ、条件付き演算が完了する前に投機的に実行されることになる。条件付き演算が完了した時点で、投機的に実行される分岐命令は、条件付き演算の結果および推測結果に基づいて、完了または廃棄される。典型的な分岐命令は、条件コードをテストし、条件コードが分岐命令の分岐要件に合致する場合はターゲット・アドレスに分岐することが可能であり、ターゲット・アドレスは、たとえばレジスタ・フィールドまたは即時フィールド内に見られる数値を含む、いくつかの数値に基づいて計算することができる。分岐ユニット5058は、複数の入力レジスタ回路5075、5076、5077および出力レジスタ回路5080を有する、ALU5074を使用することができる。分岐ユニット5058は、たとえば汎用レジスタ5059、復号ディスパッチ・ユニット5056、または他の回路5073と通信可能である。
命令グループの実行は、たとえば、オペレーティング・システムによって開始されたコンテキスト切り換え、コンテキスト切り換えを発生させるプログラムの例外またはエラー、コンテキスト切り換えを生じさせるI/O割り込み信号、または、(マルチスレッド環境における)複数のプログラムのマルチスレッド・アクティビティを含む、様々な理由で割り込まれる可能性がある。好ましくは、コンテキスト切り換えアクションは、現在実行されているプログラムに関する状態情報を保存し、その後、呼び出される他のプログラムに関する状態情報をロードする。状態情報は、たとえばハードウェア・レジスタまたはメモリ内に保存可能である。状態情報は、好ましくは、次に実行される命令を指示するプログラム・カウンタ値、条件コード、メモリ変換情報、およびアーキテクチャ・レジスタ・コンテンツを含む。コンテキスト切り換え動作は、ハードウェア回路、アプリケーション・プログラム、オペレーティング・システム・プログラム、またはファームウェア・コード(マイクロコード、ピココード、またはライセンス付き内部コード(LIC))の、単独または組み合わせによって、実施することができる。
プロセッサは、命令定義方法に従ってオペランドにアクセスする。この命令は、命令の一部の値を使用して即時オペランドを提供することが可能であり、汎用レジスタまたは特定用途向けレジスタ(たとえば浮動小数点レジスタ)のいずれかを明示的に指示する、1つまたは複数のレジスタ・フィールドを提供することが可能である。命令は、オペレーション・コード・フィールドによってオペランドとして識別された暗黙レジスタを使用することができる。命令は、オペランド用にメモリ位置を使用することができる。オペランドのメモリ位置は、たとえばメモリ内のオペランドのアドレスを提供するためにまとめて加えられる、基本レジスタ、インデックス・レジスタ、および即時フィールド(置換フィールド)を命令が定義する、z/Architecture(R)の長期置換機構によって例示されるように、レジスタ、即時フィールド、または、レジスタと即時フィールドの組み合わせによって提供可能である。本明細書では、特に指示されていない限り、通常、位置とはメイン・メモリ(メイン・ストレージ)内の位置を示唆する。
図45を参照すると、プロセッサは、ロード/記憶ユニット5060を使用してストレージにアクセスする。ロード/記憶ユニット5060は、メモリ5053内のターゲット・オペランドのアドレスを取得すること、およびオペランドをレジスタ5059または他のメモリ5053位置にロードすることによって、ロード動作を実行することができるか、あるいは、メモリ5053内のターゲット・オペランドのアドレスを取得すること、および、レジスタ5059または他のメモリ5053位置から取得したデータをメモリ5053内のターゲット・オペランド位置に記憶することによって、記憶動作を実行することができる。ロード/記憶ユニット5060は投機的とすることが可能であり、命令シーケンスに対して順序の外れたシーケンスでメモリにアクセスすることができるが、ロード/記憶ユニット5060は、メモリが順序通りに実行された旨の外観をプログラムに対して維持するものである。ロード/記憶ユニット5060は、汎用レジスタ5059、復号/ディスパッチ・ユニット5056、キャッシュ/メモリ・インターフェース5053、または他の要素5083と通信可能であり、ストレージ・アドレスを計算するため、および動作を順序通りに維持するためのパイプライン・シーケンスを提供するために、様々なレジスタ回路、ALU5085、および制御論理5090を備える。いくつかの動作は順序外れであるが、ロード/記憶ユニットは、当分野で良く知られたように、順序外れ動作を順序通りに実行されたものとしてプログラムに対して示すための機能を提供する。
好ましくは、アプリケーション・プログラムが「見る」アドレスは、しばしば仮想アドレスと呼ばれる。仮想アドレスは、時に「論理アドレス」および「有効アドレス」と呼ばれる。これらの仮想アドレスは、単に仮想アドレスの前にオフセット値の接頭辞を付加すること、1つまたは複数の変換テーブルを介して仮想アドレスを変換することであって、変換テーブルは好ましくは少なくともセグメント・テーブルおよびページ・テーブルを単独または組み合わせて備え、セグメント・テーブルは好ましくはページ・テーブルを指示するエントリを有すること、を含むがこれらに限定されない、様々な動的アドレス変換(DAT)技術のうちの1つによって、物理メモリ位置にリダイレクトされるという点で、仮想である。z/Architecture(R)では、領域第1テーブル、領域第2テーブル、領域第3テーブル、セグメント・テーブル、およびオプションのページ・テーブルを含む、変換の階層が提供される。アドレス変換の性能は、しばしば、仮想アドレスを関連付けられた物理メモリ位置にマッピングするエントリを備える、変換索引バッファ(TLB)を使用することで向上する。エントリは、DATが変換テーブルを使用して仮想アドレスを変換する場合に作成される。その後の仮想アドレスの使用では、低速逐次変換テーブル・アクセスではなく、高速TLBのエントリを使用することができる。TLBコンテンツは、LRU(最長時間未使用)を含む様々な置換アルゴリズムによって管理することができる。
プロセッサがマルチプロセッサ・システムである場合、各プロセッサは、I/O、キャッシュ、TLB、およびメモリなどの、コヒーレンシに対してインターロックされた共有リソースを維持する責務を有する。通常、「スヌープ」技術は、キャッシュ・コヒーレンシを維持するために使用される。スヌープ環境では、共有を容易にするために、各キャッシュ・ラインを、共有状態、排他的状態、変更済み状態、無効状態などのうちのいずれか1つであるものとしてマーク付けすることができる。
I/Oユニット5054(図42)は、たとえば、テープ、ディスク、プリンタ、ディスプレイ、およびネットワークを含む、周辺デバイスに接続するための手段を、プロセッサに提供する。I/Oユニットは、しばしば、ソフトウェア・ドライバによってコンピュータ・プログラムに提示される。IBM(R)からのSystem z(R)などのメインフレームでは、チャネル・アダプタおよびオープン・システム・アダプタが、オペレーティング・システムと周辺デバイスとの間に通信を提供する、メインフレームのI/Oユニットである。
さらに、他のタイプのコンピューティング環境が、本発明の1つまたは複数の態様から恩恵を受けることができる。例として、環境は、エミュレータ(たとえばソフトウェアまたは他のエミュレーション機構)を含むことが可能であり、ここでは、特定のアーキテクチャ(たとえば、命令実行、アドレス変換などのアーキテクチャ機能、およびアーキテクチャ・レジスタを含む)またはそのサブセットが、(たとえば、プロセッサおよびメモリを有するネイティブ・コンピュータ・システム上で)エミュレートされる。こうした環境では、たとえエミュレータを実行するコンピュータが、エミュレートされている機能とは異なるアーキテクチャを有する場合であっても、エミュレータの1つまたは複数のエミュレーション機能が、本発明の1つまたは複数の態様を実装することができる。一例として、エミュレーション・モードでは、エミュレーションされている特定の命令または動作が復号され、個別の命令または動作を実装するために適切なエミュレーション機能が構築される。
エミュレーション環境では、ホスト・コンピュータは、たとえば、命令およびデータを記憶するためのメモリと、メモリから命令をフェッチするため、およびオプションでフェッチされた命令に対してローカル・バッファリングを提供するための、命令フェッチ・ユニットと、フェッチされた命令を受信するため、およびフェッチされた命令のタイプを決定するための、命令復号ユニットと、命令を実行するための命令実行ユニットと、を含む。実行は、復号ユニットによって決定されるように、データをメモリからレジスタへロードすること、データを逆にレジスタからメモリへ記憶すること、または何らかのタイプの算術または論理演算を実行することを、含むことができる。一例では、各ユニットはソフトウェア内に実装される。たとえばユニットによって実行される動作は、エミュレータ・ソフトウェア内で1つまたは複数のサブルーチンとして実装される。
より具体的に言えば、メインフレーム内で、アーキテクチャ・マシン命令は、プログラマによって、現在では通常「C」プログラマによって、しばしばコンパイラ・アプリケーションを介して使用される。記憶媒体に記憶されたこれらの命令は、本来、z/Architecture(R) IBM(R)サーバ内で、あるいは他のアーキテクチャを実行する機械内で、実行可能である。それらは、既存の、および将来の、IBM(R)メインフレーム・サーバ内で、ならびに、IBM(R)の他の機械(たとえば、Power SystemsサーバおよびSystem x(R)サーバ)上で、エミュレート可能である。それらは、IBM(R)、Inter(R)、AMD(TM)、およびその他によって製造されたハードウェアを使用する多様な機械上でLinuxを実行する機械内で実行可能である。z/Architecture(R)の下での、そのハードウェア上での実行に加えて、一般に、Linux、ならびに、実行がエミュレーション・モードであるLerculesまたはFSI(Fundamental Software,Inc)によるエミュレーションを使用する機械が、使用可能である。エミュレーション・モードでは、エミュレーション・ソフトウェアは、エミュレートされたプロセッサのアーキテクチャをエミュレートするために、ネイティブ・プロセッサによって実行される。前述のエミュレータ製品に関する情報は、それぞれ、ワールド・ワイド・ウェブのwww.hercules−390.orgおよびwww.funsoft.comで入手可能である。
ネイティブ・プロセッサは、通常、エミュレートされたプロセッサのエミュレーションを実行するために、ファームウェアまたはネイティブ・オペレーティング・システムを備えるエミュレーション・ソフトウェアを実行する。エミュレーション・ソフトウェアは、エミュレートされたプロセッサ・アーキテクチャの命令をフェッチおよび実行する責務を負う。エミュレーション・ソフトウェアは、命令境界を追跡するために、エミュレートされたプログラム・カウンタを維持する。エミュレーション・ソフトウェアは、一度に1つまたは複数のエミュレートされた機械命令をフェッチし、ネイティブ・プロセッサによる実行のために、その1つまたは複数のエミュレートされた機械命令を、対応するネイティブ機械命令グループに変換することができる。これらの変換された命令は、高速変換が実施できるようにキャッシュに入れることができる。それにもかかわらず、エミュレーション・ソフトウェアは、エミュレートされたプロセッサ用に作成されたオペレーティング・システムおよびアプリケーションが正常に動作するように、エミュレートされたプロセッサ・アーキテクチャのアーキテクチャ規則を維持するものである。さらに、エミュレーション・ソフトウェアは、エミュレートされたプロセッサ上で実行するように設計されたオペレーティング・システムまたはアプリケーション・プログラムが、エミュレーション・ソフトウェアを有するネイティブ・プロセッサ上で実行できるように、制御レジスタ、汎用レジスタ、浮動小数点レジスタ、たとえばセグメント・テーブルおよびページ・テーブルを含む動的アドレス変換機能、割り込み機構、コンテキスト切り換え機構、時刻(TOD)クロック、およびI/Oサブシステムへのアーキテクチャ・インターフェース
を含むがこれらに限定されない、エミュレートされたプロセッサ・アーキテクチャによって識別されたリソースを提供するものである。
エミュレートされる特定の命令が復号され、個別の命令の機能を実行するためにサブルーチンが呼び出される。エミュレートされたプロセッサの機能をエミュレートするエミュレーション・ソフトウェア機能は、たとえば「C」サブルーチンまたはドライバで、あるいは、好ましい実施形態の説明を理解した当業者であれば理解されるような、特定ハードウェアにドライバを提供する何らかの他の方法で、実装される。Beausoleil等による「Multiprocessor for Hardware Emulation」という名称の米国特許証第5551013号と、Sealzi等による「Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor」という名称の米国特許証第6009261号と、Davidian等による「Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions」という名称の米国特許証第5574873号と、Gorishek等による「Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non−Native Code to Run in a System」という名称の米国特許証第6308255号と、Lethin等による「Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method」という名称の米国特許証第6463582号と、Eric Traut等による「Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions」という名称の米国特許証第5790825号と、多くのその他を含むが、これらに限定されることのない、様々なソフトウェアおよびハードウェア・エミュレーション特許は、当業者が使用可能なターゲット機械に関する異なる機械のためにアーキテクトされた命令フォーマットのエミュレーションを達成するための、様々な知られた方法を示している。
図46では、ホスト・アーキテクチャのホスト・コンピュータ・システム5000’をエミュレートする、エミュレートされたホスト・コンピュータ・システム5092の例が提供されている。エミュレートされたホスト・コンピュータ・システム5092では、ホスト・プロセッサ(CPU)5091は、エミュレートされたホスト・プロセッサ(または仮想ホスト・プロセッサ)であり、ホスト・コンピュータ5000’のプロセッサ5091のものとは異なるネイティブ命令セット・アーキテクチャを有する、エミュレーション・プロセッサ5093を備える。エミュレートされたホスト・コンピュータ・システム5092は、エミュレーション・プロセッサ5093にアクセス可能なメモリ5094を有する。例示的実施形態では、メモリ5094は、ホスト・コンピュータ・メモリ5096部分およびエミュレーション・ルーチン5097部分に分割される。ホスト・コンピュータ・メモリ5096は、ホスト・コンピュータ・アーキテクチャに従った、エミュレートされたホスト・コンピュータ5092のプログラムによる使用が可能である。エミュレーション・プロセッサ5093は、エミュレートされたプロセッサ5091のそれとは異なるアーキテクチャのアーキテクチャ命令セットのネイティブ命令を実行し、ネイティブ命令はエミュレーション・ルーチン・メモリ5097から取得され、アクセスされたホスト命令の機能をエミュレートするためのネイティブ命令実行ルーチンを決定するために、アクセスされたホスト命令を復号することが可能な、シーケンスおよびアクセス/復号ルーチンで取得された1つまたは複数の命令を使用することによって、ホスト・コンピュータ・メモリ5096内のプログラムから実行するためにホスト命令にアクセスすることができる。ホスト・コンピュータ・システム5000’アーキテクチャ用に定義された他の機構は、たとえば汎用レジスタ、制御レジスタ、動的アドレス変換、およびI/Oサブシステム・サポートおよびプロセッサ・キャッシュなどの機構を含む、アーキテクチャ機構ルーチンによってエミュレートすることができる。エミュレーション・ルーチンは、エミュレーション・ルーチンの性能を向上させるために、(汎用レジスタおよび仮想アドレスの動的変換などの)エミュレーション・プロセッサ5093で使用可能な機能を利用することも可能である。プロセッサ5093がホスト・コンピュータ5000’の機能をエミュレートするのを支援するために、特別なハードウェアおよびオフロード・エンジンも提供可能である。
本明細書で使用される用語は、特定の実施形態を説明するためのみのものであり、本発明を制限することは意図されていない。本明細書で使用される場合、単数形「a」、「an」、および「the」は、文脈によって明確に示されていない限り、複数形も含むことが意図される。「含む」あるいは「含んでいる」またはその両方の用語は、本明細書で使用される場合、示された機能、整数、ステップ、動作、要素、あるいは構成要素、またはそれらすべての存在を指定するものであるが、1つまたは複数の他の機能、整数、ステップ、動作、要素、構成要素、あるいはそれらのグループ、またはそれらすべての存在または追加を除外するものではないことを、さらに理解されよう。
以下の特許請求の範囲の、すべての手段またはステップの対応する構造、材料、動作、および等価物、ならびに機能要素は、存在する場合、具体的に請求された他の請求要素と組み合わせて機能を実行するための、任意の構造、材料、または動作を含むことが意図される。本発明の説明は、例示および説明の目的で提示されてきたが、開示された形の本発明を網羅するか、またはそれに限定されることは意図されていない。当業者であれば、本発明の範囲から逸脱することなく、多くの修正および変形が明らかとなろう。実施形態は、本発明および実施応用例の原理を最も良く説明するため、ならびに、他の当業者が、企図された特定の用途に好適な様々な修正を伴う様々な実施形態に関して、本発明を理解できるようにするために、選択および説明されたものである。

Claims (12)

  1. コンピューティング環境においてアダプタへのアクセスを提供するための方法であって、コンピュータ・システムが、
    ゲスト・プロセッサによってゲスト命令を実行するステップであって、前記ゲスト命令はアダプタにアクセスするための要求を含む、前記実行するステップと
    前記ゲスト命令が前記アダプタに直接アクセスすること許可されているかどうかを決定するステップであって、前記許可は、ホスト・オペレーティング・システムによって行われる、前記決定するステップと、
    前記許可されていることに応答して、前記ホスト・オペレーティング・システムのホスト介入なしに前記ゲスト命令の実行によって前記アダプタのアドレス・スペースの1つまたは複数に直接アクセスするステップであって、前記直接アクセスすることが、前記ホスト介入なしに前記ホスト・オペレーティング・システム上で実行中の仮想マシンがホストするゲスト・オペレーティング・システムに提供される、前記アクセスするステップと、
    前記許可されていないことに応答して、前記ゲスト命令の実行を前記ホスト・オペレーティング・システムのホスト介入によって実行するステップ
    実行することを含む、前記方法。
  2. 前記決定するステップが、前記ゲスト命令を実行するゲスト・プロセッサが前記アダプタアクセスすることを認証されているかどうかを決定するステップを含む、請求項1に記載の方法。
  3. 前記ゲスト・プロセッサが前記アダプタにアクセスすることを認証されているかどうかを決定するステップが、前記決定を実行するために認証トークンを使用する、請求項2に記載の方法。
  4. 前記ゲスト・プロセッサが前記アダプタにアクセスすることを認証されているかどうかを決定するステップが、指定された位置に記憶された前記認証トークンと、前記ゲスト・プロセッサに関連付けられた認証トークンとを比較するステップを含み、前記指定された位置に記憶された前記認証トークンと、前記ゲスト・プロセッサに関連付けられた前記認証トークンとが等しいことが認証を示す、請求項3に記載の方法。
  5. 前記ゲスト命令が前記アダプタに直接アクセスすることの許可されているかどうかを決定するステップが、
    前記ゲスト・プロセッサがアダプタ・アクセス解釈に使用可能であるかどうかを決定するステップと、
    前記アダプタがアダプタ・アクセス解釈に使用可能であるかどうかを決定するステップと、
    前記アダプタに関連付けられ、前記要求内に指定された機能ハンドルが、使用可能であるかどうかを決定するステップであって、前記ゲスト・プロセッサが認証されていること、前記ゲスト・プロセッサがアダプタ・アクセス解釈に使用可能であること、前記アダプタがアダプタ・アクセス解釈に使用可能であること、および、前記機能ハンドルが使用可能であることに応答して、前記ゲスト・プロセッサがアクセスすることを許可される、前記決定するステップと
    をさらに含む、請求項2に記載の方法。
  6. 前記ゲスト命令の実行が前記アダプタのアドレス・スペースに直接アクセスし、前記アクセスするステップが読み取りまたは書き込み動作を含む、請求項1〜5のいずれか一項に記載の方法。
  7. 前記コンピュータ・システムが、
    前記ゲスト命令の実行への介入を希望することを前記ホスト・オペレーティング・システムによって決定するステップ
    をさらに実行することを含み、
    前記ゲスト命令の実行が、前記ホスト・オペレーティング・システムのホスト介入希望の決定に応答して行われる、請求項1〜6のいずれか一項に記載の方法。
  8. 前記コンピュータ・システムが、
    前記ゲスト命令が前記アダプタに直接アクセスできるようにするために、前記ゲスト・プロセッサに代わって、前記ホスト・オペレーティング・システムによって1つまたは複数のアクションを実行するステップ
    をさらに実行することを含む、請求項1〜7のいずれか一項に記載の方法。
  9. 前記1つまたは複数のアクションが、
    1つまたは複数の特定の特権が与えられた命令の解釈について、前記ゲスト・プロセッサを認証すると、
    1つまたは複数の特定の特権が与えられた命令の解釈について、前記ゲスト・プロセッサを使用可能にする
    を含む、請求項8に記載の方法。
  10. コンピューティング環境においてアダプタへのアクセスを提供するためのコンピュータ・システムであって、
    メモリと、
    前記メモリと通信するプロセッサと、
    を備えており、請求項1〜9のいずれか一項に記載の方法の各ステップを実行するように構成された、コンピュータ・システム。
  11. コンピュータ・システムに、請求項1〜9のいずれか一項に記載の方法の各ステップを実行させる、コンピュータ・プログラム。
  12. コンピューティング環境においてアダプタへのアクセスを提供するためのコンピュータ・システムであって、
    メモリと、
    前記メモリと通信するプロセッサと、
    ゲスト・プロセッサによってゲスト命令を実行するゲスト命令を実行するための実行器であって、前記ゲスト命令はアダプタにアクセスするための要求を含む、前記実行器と、
    前記ゲスト命令が前記アダプタに直接アクセスすること許可されているかどうかを決定するための決定器であって、前記許可は、ホスト・オペレーティング・システムによって行われる、前記決定器
    を備えており、
    前記実行器が、前記許可されていることに応答して、前記ホスト・オペレーティング・システムのホスト介入なしに前記ゲスト命令の実行によって前記アダプタのアドレス・スペースの1つまたは複数に直接アクセスし、当該直接アクセスすることが、前記ホスト介入なしに前記ホスト・オペレーティング・システム上で実行中の仮想マシンがホストするゲスト・オペレーティング・システムに提供され、
    前記実行器が、前記許可されていないことに応答して、前記ゲスト命令の実行を前記ホスト・オペレーティング・システムのホスト介入によって実行する、
    前記コンピュータ・システム。
JP2013515726A 2010-06-23 2010-11-08 アダプタのアドレス・スペースへのゲスト・アクセスのための方法、システム、およびコンピュータ・プログラム Active JP5731642B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/821,190 2010-06-23
US12/821,190 US9342352B2 (en) 2010-06-23 2010-06-23 Guest access to address spaces of adapter
PCT/EP2010/067031 WO2011160713A1 (en) 2010-06-23 2010-11-08 Guest access to address spaces of adapter

Publications (3)

Publication Number Publication Date
JP2013534666A JP2013534666A (ja) 2013-09-05
JP2013534666A5 JP2013534666A5 (ja) 2014-12-25
JP5731642B2 true JP5731642B2 (ja) 2015-06-10

Family

ID=43821739

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013515726A Active JP5731642B2 (ja) 2010-06-23 2010-11-08 アダプタのアドレス・スペースへのゲスト・アクセスのための方法、システム、およびコンピュータ・プログラム

Country Status (5)

Country Link
US (1) US9342352B2 (ja)
EP (1) EP2430535A1 (ja)
JP (1) JP5731642B2 (ja)
CN (1) CN102906702B (ja)
WO (1) WO2011160713A1 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8468284B2 (en) 2010-06-23 2013-06-18 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification to a guest operating system
US8615645B2 (en) * 2010-06-23 2013-12-24 International Business Machines Corporation Controlling the selectively setting of operational parameters for an adapter
US8510599B2 (en) * 2010-06-23 2013-08-13 International Business Machines Corporation Managing processing associated with hardware events
US8635430B2 (en) 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US8572635B2 (en) 2010-06-23 2013-10-29 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification
US8364817B1 (en) 2012-02-09 2013-01-29 Gramboo Inc. Method and system for managing a data item
US9348757B2 (en) 2012-10-08 2016-05-24 International Business Machines Corporation System supporting multiple partitions with differing translation formats
US9600419B2 (en) 2012-10-08 2017-03-21 International Business Machines Corporation Selectable address translation mechanisms
US9355032B2 (en) 2012-10-08 2016-05-31 International Business Machines Corporation Supporting multiple types of guests by a hypervisor
US9740624B2 (en) 2012-10-08 2017-08-22 International Business Machines Corporation Selectable address translation mechanisms within a partition
US9280488B2 (en) 2012-10-08 2016-03-08 International Business Machines Corporation Asymmetric co-existent address translation structure formats
US9355040B2 (en) 2012-10-08 2016-05-31 International Business Machines Corporation Adjunct component to provide full virtualization using paravirtualized hypervisors
US20150261693A1 (en) * 2014-03-14 2015-09-17 International Business Machines Corporation Dynamic storage key assignment
US9727359B2 (en) * 2015-04-27 2017-08-08 Red Hat Israel, Ltd. Virtual machine function based sub-page base address register access for peripheral component interconnect device assignment
US9910690B2 (en) * 2015-11-20 2018-03-06 Red Hat, Inc. PCI slot hot-addition deferral for multi-function devices
US9529759B1 (en) * 2016-01-14 2016-12-27 International Business Machines Corporation Multipath I/O in a computer system
US10102022B2 (en) 2016-05-23 2018-10-16 Red Hat Israel, Ltd. System and method for configuring a virtual device
US10614092B2 (en) * 2017-01-24 2020-04-07 International Business Machines Corporation Optimizing data retrieval operation in big-data processing systems
US11977493B2 (en) * 2019-07-17 2024-05-07 Red Hat, Inc. Safe virtual machine physical device access for network function virtualization
US11531467B1 (en) * 2021-01-29 2022-12-20 Pure Storage, Inc. Controlling public access of resources in a secure distributed storage system

Family Cites Families (226)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3976979A (en) 1974-01-02 1976-08-24 Honeywell Information Systems, Inc. Coupler for providing data transfer between host and remote data processing units
US4028668A (en) 1975-12-22 1977-06-07 Honeywell Information Systems, Inc. Apparatus for selectively addressing sections and locations in a device controller's memory
US4323963A (en) 1979-07-13 1982-04-06 Rca Corporation Hardware interpretive mode microprocessor
US4271468A (en) 1979-11-06 1981-06-02 International Business Machines Corp. Multiprocessor mechanism for handling channel interrupts
JPS57191826A (en) 1981-05-19 1982-11-25 Matsushita Electric Ind Co Ltd Magnetic head demagnetizer
WO1983001524A1 (en) 1981-10-13 1983-04-28 Cormier, Roger, Louis Method and apparatus for measurements of channel operation
JPS6273347A (ja) 1985-09-27 1987-04-04 Hitachi Ltd アドレス変換装置
JPH0250744A (ja) 1988-08-12 1990-02-20 Nec Corp アドレス変換方式
JPH0282343A (ja) 1988-09-20 1990-03-22 Hitachi Ltd マルチプロセッサシステムの割込処理方式
US5282274A (en) 1990-05-24 1994-01-25 International Business Machines Corporation Translation of multiple virtual pages upon a TLB miss
US5170472A (en) 1991-03-28 1992-12-08 International Business Machines Corp. Dynamically changing a system i/o configuration definition
US5465355A (en) 1991-09-04 1995-11-07 International Business Machines Corporation Establishing and restoring paths in a data processing I/O system
JPH05165715A (ja) 1991-12-12 1993-07-02 Nec Corp 情報処理装置
JPH0821015B2 (ja) 1992-01-20 1996-03-04 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータならびにそのシステム再構成化装置および方法
US5617554A (en) 1992-02-10 1997-04-01 Intel Corporation Physical address size selection and page size selection in an address translator
US5418956A (en) 1992-02-26 1995-05-23 Microsoft Corporation Method and system for avoiding selector loads
US5600805A (en) 1992-06-15 1997-02-04 International Business Machines Corporation Pass-through for I/O channel subsystem call instructions for accessing shared resources in a computer system having a plurality of operating systems
US5265240A (en) 1992-07-24 1993-11-23 International Business Machines Corporation Channel measurement method and means
US5465332A (en) 1992-09-21 1995-11-07 International Business Machines Corporation Selectable 8/16 bit DMA channels for "ISA" bus
JP2500101B2 (ja) 1992-12-18 1996-05-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 共用変数の値を更新する方法
WO1994027215A1 (en) 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5535352A (en) 1994-03-24 1996-07-09 Hewlett-Packard Company Access hints for input/output address translation mechanisms
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
WO1996000940A1 (en) 1994-06-28 1996-01-11 Intel Corporation Pci to isa interrupt protocol converter and selection mechanism
US5748950A (en) 1994-09-20 1998-05-05 Intel Corporation Method and apparatus for providing an optimized compare-and-branch instruction
US5901312A (en) 1994-12-13 1999-05-04 Microsoft Corporation Providing application programs with unmediated access to a contested hardware resource
US5802590A (en) 1994-12-13 1998-09-01 Microsoft Corporation Method and system for providing secure access to computer resources
DE19602872A1 (de) 1995-01-27 1996-08-08 Gmd Gmbh Verfahren zum Betreiben einer Adreßumsetzvorrichtung
US5586268A (en) 1995-03-03 1996-12-17 Advanced System Products, Inc. Multiple peripheral adapter device driver architecture
JPH08263424A (ja) 1995-03-20 1996-10-11 Fujitsu Ltd コンピュータ装置
EP0747872B1 (en) 1995-06-07 1999-03-03 International Business Machines Corporation Video processor with addressing mode control
US5671365A (en) 1995-10-20 1997-09-23 Symbios Logic Inc. I/O system for reducing main processor overhead in initiating I/O requests and servicing I/O completion events
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
US5960213A (en) 1995-12-18 1999-09-28 3D Labs Inc. Ltd Dynamically reconfigurable multi-function PCI adapter device
US5974440A (en) 1996-03-25 1999-10-26 Texas Instruments Incorporated Microprocessor with circuits, systems, and methods for interrupt handling during virtual task operation
US5819053A (en) 1996-06-05 1998-10-06 Compaq Computer Corporation Computer system bus performance monitoring
US5761448A (en) 1996-08-30 1998-06-02 Ncr Corporation Physical-to-logical bus mapping scheme for computer systems having multiple PCI bus configuration
US5838960A (en) 1996-09-26 1998-11-17 Bay Networks, Inc. Apparatus for performing an atomic add instructions
US5995745A (en) 1996-12-23 1999-11-30 Yodaiken; Victor J. Adding real-time support to general purpose operating systems
US5826084A (en) 1997-03-25 1998-10-20 Texas Instruments Incorporated Microprocessor with circuits, systems, and methods for selectively bypassing external interrupts past the monitor program during virtual program operation
US6195674B1 (en) 1997-04-30 2001-02-27 Canon Kabushiki Kaisha Fast DCT apparatus
KR100263672B1 (ko) 1997-05-08 2000-09-01 김영환 가변적인 페이지 크기를 지원하는 어드레스 변환장치
US5914730A (en) 1997-09-09 1999-06-22 Compaq Computer Corp. System and method for invalidating and updating individual GART table entries for accelerated graphics port transaction requests
US6067595A (en) 1997-09-23 2000-05-23 Icore Technologies, Inc. Method and apparatus for enabling high-performance intelligent I/O subsystems using multi-port memories
US5864703A (en) 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US6078970A (en) 1997-10-15 2000-06-20 International Business Machines Corporation System for determining adapter interrupt status where interrupt is sent to host after operating status stored in register is shadowed to host memory
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6023736A (en) 1997-12-19 2000-02-08 International Business Machines Corporation System for dynamically configuring I/O device adapters where a function configuration register contains ready/not ready flags corresponding to each I/O device adapter
US6021458A (en) 1998-01-21 2000-02-01 Intel Corporation Method and apparatus for handling multiple level-triggered and edge-triggered interrupts
US6223299B1 (en) 1998-05-04 2001-04-24 International Business Machines Corporation Enhanced error handling for I/O load/store operations to a PCI device via bad parity or zero byte enables
US6308255B1 (en) 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
US6460094B1 (en) 1998-07-08 2002-10-01 Microsoft Corporation Peripheral device configured to detect the type of interface to which it is connected and configuring itself accordingly
US6615305B1 (en) 1998-08-27 2003-09-02 Intel Corporation Interrupt pacing in data transfer unit
US6463582B1 (en) 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US6408347B1 (en) 1998-12-10 2002-06-18 Cisco Technology, Inc. Integrated multi-function adapters using standard interfaces through single a access point
US6397350B1 (en) 1999-02-19 2002-05-28 International Business Machines Corporation Method of providing direct data processing access using a queued direct input-output device
US6519645B2 (en) 1999-02-19 2003-02-11 International Business Machine Corporation Method and apparatus for providing configuration information using a queued direct input-output device
US6349380B1 (en) 1999-03-12 2002-02-19 Intel Corporation Linear address extension and mapping to physical memory using 4 and 8 byte page table entries in a 32-bit microprocessor
US6557035B1 (en) 1999-03-30 2003-04-29 International Business Machines Corporation Rules-based method of and system for optimizing server hardware capacity and performance
US6330656B1 (en) 1999-03-31 2001-12-11 International Business Machines Corporation PCI slot control apparatus with dynamic configuration for partitioned systems
JP2000293476A (ja) 1999-04-09 2000-10-20 Nec Corp Pciデバイスへのリソース割当方式及びその方法
US6578191B1 (en) 1999-05-17 2003-06-10 International Business Machines Corporation Method and apparatus for dynamic generation of adapters
US6330647B1 (en) 1999-08-31 2001-12-11 Micron Technology, Inc. Memory bandwidth allocation based on access count priority scheme
US6772097B1 (en) 1999-09-30 2004-08-03 Intel Corporation Retrieving I/O processor performance monitor data
US6493741B1 (en) 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
US6970992B2 (en) 1999-10-04 2005-11-29 Intel Corporation Apparatus to map virtual pages to disparate-sized, non-contiguous real pages and methods relating thereto
US6651126B1 (en) 1999-10-29 2003-11-18 Texas Instruments Incorporated Snapshot arbiter mechanism
US7509391B1 (en) 1999-11-23 2009-03-24 Texas Instruments Incorporated Unified memory management system for multi processor heterogeneous architecture
US6529978B1 (en) 2000-02-23 2003-03-04 International Business Machines Corporation Computer input/output (I/O) interface with dynamic I/O adaptor processor bindings
US6963940B1 (en) 2000-03-30 2005-11-08 International Business Machines Corporation Measuring utilization of individual components of channels
US6581130B1 (en) 2000-04-04 2003-06-17 Hewlett Packard Development Company, L.P. Dynamic remapping of address registers for address translation between multiple busses
US6629175B1 (en) * 2000-04-14 2003-09-30 International Business Machines Corporation Efficient adapter context switching
US6772264B1 (en) 2000-05-22 2004-08-03 International Business Machines Corporation Enabling a docking station for ISA adapters
US6715011B1 (en) 2000-05-31 2004-03-30 International Business Machines Corporation PCI/PCI-X bus bridge with performance monitor
US6654818B1 (en) 2000-06-22 2003-11-25 International Business Machines Corporation DMA access authorization for 64-bit I/O adapters on PCI bus
US6704831B1 (en) 2000-11-16 2004-03-09 Sun Microsystems, Inc. Method and apparatus for converting address information between PCI bus protocol and a message-passing queue-oriented bus protocol
US6611883B1 (en) 2000-11-16 2003-08-26 Sun Microsystems, Inc. Method and apparatus for implementing PCI DMA speculative prefetching in a message passing queue oriented bus system
US6658521B1 (en) 2000-12-22 2003-12-02 International Business Machines Corporation Method and apparatus for address translation on PCI bus over infiniband network
US6721839B1 (en) 2000-12-27 2004-04-13 International Business Machines Corporation Method of mapping multiple address spaces into single PCI bus
US6938138B2 (en) 2001-01-11 2005-08-30 International Business Machines Corporation Method and apparatus for managing access to memory
TW499795B (en) 2001-03-19 2002-08-21 Realtek Semiconductor Corp PCI extended function interface and the PCI device using the same
US6792492B1 (en) 2001-04-11 2004-09-14 Novell, Inc. System and method of lowering overhead and latency needed to service operating system interrupts
US6820164B2 (en) 2001-04-17 2004-11-16 International Business Machines Corporation Peripheral component interconnect bus detection in logically partitioned computer system involving authorizing guest operating system to conduct configuration input-output operation with functions of pci devices
US20020161907A1 (en) 2001-04-25 2002-10-31 Avery Moon Adaptive multi-protocol communications system
US6968446B1 (en) 2001-08-09 2005-11-22 Advanced Micro Devices, Inc. Flags handling for system call instructions
US6842870B2 (en) 2001-09-20 2005-01-11 International Business Machines Corporation Method and apparatus for filtering error logs in a logically partitioned data processing system
US6801993B2 (en) 2001-09-28 2004-10-05 International Business Machines Corporation Table offset for shortening translation tables from their beginnings
US6880021B2 (en) 2001-09-28 2005-04-12 International Business Machines Corporation Intelligent interrupt with hypervisor collaboration
US20040025166A1 (en) 2002-02-02 2004-02-05 International Business Machines Corporation Server computer and a method for accessing resources from virtual machines of a server computer via a fibre channel
US6901537B2 (en) 2002-02-27 2005-05-31 International Business Machines Corporation Method and apparatus for preventing the propagation of input/output errors in a logical partitioned data processing system
US6907510B2 (en) 2002-04-01 2005-06-14 Intel Corporation Mapping of interconnect configuration space
US7302692B2 (en) 2002-05-31 2007-11-27 International Business Machines Corporation Locally providing globally consistent information to communications layers
US20040049603A1 (en) 2002-09-05 2004-03-11 International Business Machines Corporation iSCSI driver to adapter interface protocol
US7299266B2 (en) 2002-09-05 2007-11-20 International Business Machines Corporation Memory management offload for RDMA enabled network adapters
US7197585B2 (en) 2002-09-30 2007-03-27 International Business Machines Corporation Method and apparatus for managing the execution of a broadcast instruction on a guest processor
US7054972B2 (en) 2002-12-13 2006-05-30 Lsi Logic Corporation Apparatus and method for dynamically enabling and disabling interrupt coalescing in data processing system
KR100449807B1 (ko) 2002-12-20 2004-09-22 한국전자통신연구원 호스트 버스 인터페이스를 갖는 데이터 전송 프로토콜제어 시스템
US7065598B2 (en) 2002-12-20 2006-06-20 Intel Corporation Method, system, and article of manufacture for adjusting interrupt levels
US20040139304A1 (en) 2003-01-09 2004-07-15 International Business Machines Corporation High speed virtual instruction execution mechanism
JP4256693B2 (ja) 2003-02-18 2009-04-22 株式会社日立製作所 計算機システム、i/oデバイス及びi/oデバイスの仮想共有方法
JP2004248985A (ja) 2003-02-21 2004-09-09 Air Water Inc 注射器およびそれに用いるパッキン
US7073002B2 (en) 2003-03-13 2006-07-04 International Business Machines Corporation Apparatus and method for controlling resource transfers using locks in a logically partitioned computer system
US7107382B2 (en) 2003-04-03 2006-09-12 Emulex Design & Manufacturing Corporation Virtual peripheral component interconnect multiple-function device
US7010633B2 (en) 2003-04-10 2006-03-07 International Business Machines Corporation Apparatus, system and method for controlling access to facilities based on usage classes
US7139940B2 (en) 2003-04-10 2006-11-21 International Business Machines Corporation Method and apparatus for reporting global errors on heterogeneous partitioned systems
US7281075B2 (en) 2003-04-24 2007-10-09 International Business Machines Corporation Virtualization of a global interrupt queue
US7177961B2 (en) 2003-05-12 2007-02-13 International Business Machines Corporation Managing access, by operating system images of a computing environment, of input/output resources of the computing environment
US7130938B2 (en) 2003-05-12 2006-10-31 International Business Machines Corporation Method, system and program products for identifying communications adapters of a computing environment
US7130949B2 (en) 2003-05-12 2006-10-31 International Business Machines Corporation Managing input/output interruptions in non-dedicated interruption hardware environments
US7127599B2 (en) 2003-05-12 2006-10-24 International Business Machines Corporation Managing configurations of input/output system images of an input/output subsystem, wherein a configuration is modified without restarting the input/output subsystem to effect a modification
US6996638B2 (en) 2003-05-12 2006-02-07 International Business Machines Corporation Method, system and program products for enhancing input/output processing for operating system images of a computing environment
US7174550B2 (en) 2003-05-12 2007-02-06 International Business Machines Corporation Sharing communications adapters across a plurality of input/output subsystem images
US7290070B2 (en) 2003-05-12 2007-10-30 International Business Machines Corporation Multiple logical input/output subsystem facility
US7000036B2 (en) 2003-05-12 2006-02-14 International Business Machines Corporation Extended input/output measurement facilities
US7134052B2 (en) 2003-05-15 2006-11-07 International Business Machines Corporation Autonomic recovery from hardware errors in an input/output fabric
US6931460B2 (en) 2003-05-19 2005-08-16 Emulex Design & Manufacturing Corporation Dynamically self-adjusting polling mechanism
US7420931B2 (en) 2003-06-05 2008-09-02 Nvidia Corporation Using TCP/IP offload to accelerate packet filtering
US7613109B2 (en) 2003-06-05 2009-11-03 Nvidia Corporation Processing data for a TCP connection using an offload unit
EP1489491A1 (en) 2003-06-19 2004-12-22 Texas Instruments Incorporated Dynamically changing the semantic of an instruction
US7013358B2 (en) 2003-08-09 2006-03-14 Texas Instruments Incorporated System for signaling serialized interrupts using message signaled interrupts
US7979548B2 (en) 2003-09-30 2011-07-12 International Business Machines Corporation Hardware enforcement of logical partitioning of a channel adapter's resources in a system area network
JP2005122640A (ja) 2003-10-20 2005-05-12 Hitachi Ltd サーバシステム及びi/oスロット共有方法。
US7552436B2 (en) 2003-11-25 2009-06-23 International Business Machines Memory mapped input/output virtualization
US7146482B2 (en) 2003-11-25 2006-12-05 International Business Machines Corporation Memory mapped input/output emulation
US7277968B2 (en) 2004-01-23 2007-10-02 International Business Machines Corporation Managing sets of input/output communications subadapters of an input/output subsystem
US7107384B1 (en) 2004-03-01 2006-09-12 Pericom Semiconductor Corp. Dynamic PCI-bus pre-fetch with separate counters for commands of commands of different data-transfer lengths
JP2005309553A (ja) 2004-04-19 2005-11-04 Hitachi Ltd 計算機
US7530071B2 (en) 2004-04-22 2009-05-05 International Business Machines Corporation Facilitating access to input/output resources via an I/O partition shared by multiple consumer partitions
US7209994B1 (en) 2004-05-11 2007-04-24 Advanced Micro Devices, Inc. Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests
US7941799B2 (en) 2004-05-27 2011-05-10 International Business Machines Corporation Interpreting I/O operation requests from pageable guests without host intervention
US20050289271A1 (en) 2004-06-29 2005-12-29 Martinez Alberto J Circuitry to selectively produce MSI signals
US7496706B2 (en) 2004-06-30 2009-02-24 Intel Corporation Message signaled interrupt redirection table
US20060005083A1 (en) 2004-06-30 2006-01-05 International Business Machines Corporation Performance count tracing
US7418572B2 (en) 2004-08-18 2008-08-26 International Business Machines Corporation Pretranslating input/output buffers in environments with multiple page sizes
JP4788124B2 (ja) 2004-09-16 2011-10-05 株式会社日立製作所 データ処理システム
TWI252397B (en) 2004-09-17 2006-04-01 Ind Tech Res Inst Method and apparatus of built-in self-diagnosis and repair in a memory with syndrome identification
US7340582B2 (en) 2004-09-30 2008-03-04 Intel Corporation Fault processing for direct memory access address translation
US7444493B2 (en) 2004-09-30 2008-10-28 Intel Corporation Address translation for input/output devices using hierarchical translation tables
US7334107B2 (en) 2004-09-30 2008-02-19 Intel Corporation Caching support for direct memory access address translation
US7373446B2 (en) 2004-11-05 2008-05-13 Microsoft Corporation Method and system for dynamically patching an operating system's interrupt mechanism
US7296120B2 (en) 2004-11-18 2007-11-13 International Business Machines Corporation Mechanism that provides efficient multi-word load atomicity
US7188346B2 (en) 2004-11-29 2007-03-06 International Business Machines Corporation Method, system and program product for correlating data between operating environments
US7284112B2 (en) 2005-01-14 2007-10-16 International Business Machines Corporation Multiple page size address translation incorporating page size prediction
US7562366B2 (en) 2005-02-03 2009-07-14 Solarflare Communications, Inc. Transmit completion event batching
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
US20060195617A1 (en) 2005-02-25 2006-08-31 International Business Machines Corporation Method and system for native virtualization on a partially trusted adapter using adapter bus, device and function number for identification
US7260664B2 (en) 2005-02-25 2007-08-21 International Business Machines Corporation Interrupt mechanism on an IO adapter that supports virtualization
US7464191B2 (en) 2005-02-25 2008-12-09 International Business Machines Corporation System and method for host initialization for an adapter that supports virtualization
US7493425B2 (en) 2005-02-25 2009-02-17 International Business Machines Corporation Method, system and program product for differentiating between virtual hosts on bus transactions and associating allowable memory access for an input/output adapter that supports virtualization
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
US7567567B2 (en) 2005-04-05 2009-07-28 Sun Microsystems, Inc. Network system including packet classification for partitioned resources
US7260663B2 (en) 2005-04-07 2007-08-21 International Business Machines Corporation System and method for presenting interrupts
US7200704B2 (en) 2005-04-07 2007-04-03 International Business Machines Corporation Virtualization of an I/O adapter port using enablement and activation functions
US7478178B2 (en) 2005-04-22 2009-01-13 Sun Microsystems, Inc. Virtualization for device sharing
US7502872B2 (en) 2005-05-23 2009-03-10 International Bsuiness Machines Corporation Method for out of user space block mode I/O directly between an application instance and an I/O adapter
US7225287B2 (en) 2005-06-01 2007-05-29 Microsoft Corporation Scalable DMA remapping on a computer bus
US7516252B2 (en) 2005-06-08 2009-04-07 Intel Corporation Port binding scheme to create virtual host bus adapter in a virtualized multi-operating system platform environment
US20060288130A1 (en) 2005-06-21 2006-12-21 Rajesh Madukkarumukumana Address window support for direct memory access translation
US7631097B2 (en) 2005-07-21 2009-12-08 National Instruments Corporation Method and apparatus for optimizing the responsiveness and throughput of a system performing packetized data transfers using a transfer count mark
US8028154B2 (en) 2005-07-29 2011-09-27 Broadcom Corporation Method and system for reducing instruction storage space for a processor integrated in a network adapter chip
US7657662B2 (en) 2005-08-31 2010-02-02 International Business Machines Corporation Processing user space operations directly between an application instance and an I/O adapter
US7546487B2 (en) 2005-09-15 2009-06-09 Intel Corporation OS and firmware coordinated error handling using transparent firmware intercept and firmware services
US20070073955A1 (en) 2005-09-29 2007-03-29 Joseph Murray Multi-function PCI device
US20070136554A1 (en) 2005-12-12 2007-06-14 Giora Biran Memory operations in a virtualized system
US7475183B2 (en) 2005-12-12 2009-01-06 Microsoft Corporation Large page optimizations in a virtual machine environment
US7398343B1 (en) 2006-01-03 2008-07-08 Emc Corporation Interrupt processing system
US7328296B1 (en) 2006-01-03 2008-02-05 Emc Corporation Interrupt processing system
US7653803B2 (en) 2006-01-17 2010-01-26 Globalfoundries Inc. Address translation for input/output (I/O) devices and interrupt remapping for I/O devices in an I/O memory management unit (IOMMU)
US7548999B2 (en) 2006-01-17 2009-06-16 Advanced Micro Devices, Inc. Chained hybrid input/output memory management unit
US7673116B2 (en) 2006-01-17 2010-03-02 Advanced Micro Devices, Inc. Input/output memory management unit that implements memory attributes based on translation data
US7849232B2 (en) 2006-02-17 2010-12-07 Intel-Ne, Inc. Method and apparatus for using a single multi-function adapter with different operating systems
US7739422B2 (en) 2006-03-21 2010-06-15 International Business Machines Corporation Method to improve system DMA mapping while substantially reducing memory fragmentation
US7412589B2 (en) 2006-03-31 2008-08-12 International Business Machines Corporation Method to detect a stalled instruction stream and serialize micro-operation execution
US8621120B2 (en) 2006-04-17 2013-12-31 International Business Machines Corporation Stalling of DMA operations in order to do memory migration using a migration in progress bit in the translation control entry mechanism
US7613847B2 (en) 2006-05-16 2009-11-03 Hewlett-Packard Development Company, L.P. Partially virtualizing an I/O device for use by virtual machines
US7954099B2 (en) 2006-05-17 2011-05-31 International Business Machines Corporation Demultiplexing grouped events into virtual event queues while in two levels of virtualization
JP4961833B2 (ja) 2006-05-19 2012-06-27 日本電気株式会社 クラスタシステム、負荷分散方法、最適化クライアントプログラム、及び調停サーバプログラム
TW200801952A (en) 2006-06-02 2008-01-01 Via Tech Inc Method for setting up a peripheral component interconnect express (PCIE)
US7571307B2 (en) 2006-07-26 2009-08-04 International Business Machines Corporation Capacity upgrade on-demand for I/O adapters
US7546398B2 (en) 2006-08-01 2009-06-09 International Business Machines Corporation System and method for distributing virtual input/output operations across multiple logical partitions
US7496707B2 (en) 2006-08-22 2009-02-24 International Business Machines Corporation Dynamically scalable queues for performance driven PCI express memory traffic
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
US7627723B1 (en) 2006-09-21 2009-12-01 Nvidia Corporation Atomic memory operators in a parallel processor
US20080126652A1 (en) 2006-09-27 2008-05-29 Intel Corporation Managing Interrupts in a Partitioned Platform
US7552298B2 (en) 2006-09-28 2009-06-23 Broadcom Corporation Method and system for deferred pinning of host memory for stateful network interfaces
JP2008090375A (ja) 2006-09-29 2008-04-17 Hitachi Ltd 割込み制御システム、およびこれを利用した記憶制御システム
US9135951B2 (en) 2006-10-10 2015-09-15 Qualcomm Incorporated System and method for dynamic audio buffer management
US7587575B2 (en) 2006-10-17 2009-09-08 International Business Machines Corporation Communicating with a memory registration enabled adapter using cached address translations
US20080091868A1 (en) 2006-10-17 2008-04-17 Shay Mizrachi Method and System for Delayed Completion Coalescing
US20080098197A1 (en) 2006-10-20 2008-04-24 International Business Machines Corporation Method and System For Address Translation With Memory Windows
US7849287B2 (en) 2006-11-13 2010-12-07 Advanced Micro Devices, Inc. Efficiently controlling special memory mapped system accesses
JP2008123298A (ja) 2006-11-13 2008-05-29 Canon Inc 情報処理方法及びシステム
US7624235B2 (en) 2006-11-30 2009-11-24 Apple Inc. Cache used both as cache and staging buffer
US7984454B2 (en) 2006-12-19 2011-07-19 International Business Machines Corporation Migration of single root stateless virtual functions
US7529860B2 (en) 2006-12-19 2009-05-05 International Business Machines Corporation System and method for configuring an endpoint based on specified valid combinations of functions
US20080168208A1 (en) 2007-01-09 2008-07-10 International Business Machines Corporation I/O Adapter LPAR Isolation In A Hypertransport Environment With Assigned Memory Space Indexing a TVT Via Unit IDs
US7617340B2 (en) 2007-01-09 2009-11-10 International Business Machines Corporation I/O adapter LPAR isolation with assigned memory space
JP5119686B2 (ja) 2007-03-06 2013-01-16 日本電気株式会社 情報処理装置および設定方法
EP2075696A3 (en) 2007-05-10 2010-01-27 Texas Instruments Incorporated Interrupt- related circuits, systems and processes
JP5018252B2 (ja) 2007-06-06 2012-09-05 株式会社日立製作所 デバイス割り当て変更方法
US7617345B2 (en) 2007-07-02 2009-11-10 International Business Machines Corporation Prioritization of interrupts in a storage controller based on interrupt control directives received from hosts
US20090024823A1 (en) 2007-07-20 2009-01-22 Wenjeng Ko Overlayed separate dma mapping of adapters
US8250254B2 (en) 2007-07-31 2012-08-21 Intel Corporation Offloading input/output (I/O) virtualization operations to a processor
US8127296B2 (en) 2007-09-06 2012-02-28 Dell Products L.P. Virtual machine migration between processors having VM migration registers controlled by firmware to modify the reporting of common processor feature sets to support the migration
US8762999B2 (en) 2007-09-27 2014-06-24 Oracle America, Inc. Guest-initiated resource allocation request based on comparison of host hardware information and projected workload requirement
US8141094B2 (en) 2007-12-03 2012-03-20 International Business Machines Corporation Distribution of resources for I/O virtualized (IOV) adapters and management of the adapters through an IOV management partition via user selection of compatible virtual functions
US7689734B2 (en) 2007-12-18 2010-03-30 International Business Machines Corporation Method for toggling non-adjacent channel identifiers during DMA double buffering operations
US7913030B2 (en) 2007-12-28 2011-03-22 Sandisk Il Ltd. Storage device with transaction logging capability
US8677098B2 (en) 2008-01-11 2014-03-18 International Business Machines Corporation Dynamic address translation with fetch protection
US8151083B2 (en) 2008-01-11 2012-04-03 International Business Machines Corporation Dynamic address translation with frame management
US8037221B2 (en) 2008-01-16 2011-10-11 International Business Machines Corporation Dynamic allocation of DMA buffers in input/output adaptors
US7996628B2 (en) 2008-02-14 2011-08-09 International Business Machines Corporation Cross adapter shared address translation tables
US8332846B2 (en) 2008-02-28 2012-12-11 Sony Mobile Communications Ab Selective exposure to USB device functionality for a virtual machine by filtering descriptors
JP2009249108A (ja) 2008-04-04 2009-10-29 Mitsubishi Electric Building Techno Service Co Ltd エレベーター押ボタン一体型位置表示器
JP2009259108A (ja) 2008-04-18 2009-11-05 Toshiba Corp 情報処理装置および情報処理装置の制御方法
US20090276774A1 (en) 2008-05-01 2009-11-05 Junji Kinoshita Access control for virtual machines in an information system
US7743189B2 (en) 2008-05-05 2010-06-22 International Business Machines Corporation PCI function south-side data management
US8032680B2 (en) 2008-06-27 2011-10-04 Microsoft Corporation Lazy handling of end of interrupt messages in a virtualized environment
US8359408B2 (en) 2008-06-30 2013-01-22 Intel Corporation Enabling functional dependency in a multi-function device
US9262357B2 (en) 2008-09-29 2016-02-16 International Business Machines Corporation Associating process priority with I/O queuing
US8645596B2 (en) 2008-12-30 2014-02-04 Intel Corporation Interrupt techniques
CN101634975B (zh) 2009-08-20 2011-09-14 广东威创视讯科技股份有限公司 一种实现dma数据传输的方法及装置
JP5266590B2 (ja) 2009-09-18 2013-08-21 株式会社日立製作所 計算機システムの管理方法、計算機システム及びプログラム
US8321615B2 (en) 2009-12-18 2012-11-27 Intel Corporation Source core interrupt steering
US8572635B2 (en) 2010-06-23 2013-10-29 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification
US8504754B2 (en) 2010-06-23 2013-08-06 International Business Machines Corporation Identification of types of sources of adapter interruptions

Also Published As

Publication number Publication date
CN102906702B (zh) 2015-11-25
EP2430535A1 (en) 2012-03-21
JP2013534666A (ja) 2013-09-05
US9342352B2 (en) 2016-05-17
WO2011160713A1 (en) 2011-12-29
CN102906702A (zh) 2013-01-30
US20110321158A1 (en) 2011-12-29

Similar Documents

Publication Publication Date Title
JP5731642B2 (ja) アダプタのアドレス・スペースへのゲスト・アクセスのための方法、システム、およびコンピュータ・プログラム
JP5629373B2 (ja) コンピューティング環境においてアダプタへのアクセスを制御する方法、プログラム、および、コンピュータ・システム
JP5719435B2 (ja) メッセージ信号割り込みのi/oアダプタ・イベント通知への変換
JP5736044B2 (ja) アダプタに関する操作パラメータの選択的設定の制御
JP5636097B2 (ja) 入力/出力アドレスをメモリ・アドレスに変換するための方法、コンピュータ・システム、およびコンピュータ・プログラム
JP5607825B2 (ja) コンピューティング環境のシステム・メモリの管理を容易にする方法、システム、コンピュータ・プログラム
JP5731641B2 (ja) アダプタ機能に関する変換フォーマットのランタイム決定のための方法、システム、およびコンピュータ・プログラム
JP5671614B2 (ja) アダプタ割り込み要求が処理される速度の制御
JP5649200B2 (ja) アダプタ割り込みのソース・タイプの識別
JP5680193B2 (ja) メッセージ信号割り込みをゲスト・オペレーティング・システムへのi/oアダプタ・イベント通知に変換する方法
JP5669938B2 (ja) コンピューティング環境のアダプタを使用可能にするための方法、システム、およびコンピュータ・プログラム
JP5680194B2 (ja) アダプタとの通信のためのロード命令
JP5739524B2 (ja) アダプタと通信するための保存/保存ブロック命令

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130806

A072 Dismissal of procedure [no reply to invitation to correct request for examination]

Free format text: JAPANESE INTERMEDIATE CODE: A072

Effective date: 20130827

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140623

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140708

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20141008

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20141008

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20141008

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20141010

TRDD Decision of grant or rejection written
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20150320

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20150320

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150320

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150409

R150 Certificate of patent or registration of utility model

Ref document number: 5731642

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150