JP2006155624A - 仮想化ロジック - Google Patents

仮想化ロジック Download PDF

Info

Publication number
JP2006155624A
JP2006155624A JP2005344024A JP2005344024A JP2006155624A JP 2006155624 A JP2006155624 A JP 2006155624A JP 2005344024 A JP2005344024 A JP 2005344024A JP 2005344024 A JP2005344024 A JP 2005344024A JP 2006155624 A JP2006155624 A JP 2006155624A
Authority
JP
Japan
Prior art keywords
logic
processor
transaction
memory
virtualization
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.)
Withdrawn
Application number
JP2005344024A
Other languages
English (en)
Inventor
Russ Herrell
ラス・ハーレル
Gerald J Kaufman Jr
ジェラルド・ジェー・コーフマン・ジュニア
John A Morrison
ジョン・エー・モリソン
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of JP2006155624A publication Critical patent/JP2006155624A/ja
Withdrawn legal-status Critical Current

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/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/45537Provision of facilities of other operating environments, e.g. WINE

Abstract

【課題】仮想化ロジックを提供する。
【解決手段】
本発明にかかる仮想化ロジックは、内部仮想化ロジックを有さないプロセッサに動作可能に接続され、トラップ可能なメモリアドレスを記憶するデータストアと、プロセッサからメモリトランザクションを受け取り、メモリトランザクションがトラップ可能なメモリアドレスを参照する時にトラップを選択的に生成するアドレス比較ロジックと、アドレス比較ロジックがトラップを生成したメモリ読み出しトランザクションに関するデータを記憶するデータストアと、アドレス比較ロジックがトラップを生成したメモリ書き込みトランザクションに関するデータを記憶するデータストアと、アドレス比較ロジックがトラップを生成したことに応答して、プロセッサに信号を選択的に供給するトランザクションロジックとを備える。
【選択図】図2

Description

本発明は、仮想化ロジックに関する。
コンピュータハードウェアデバイスは、一般に、物理的な有形物であると考えられる。これら物理デバイスは、多くの場合、情報(例えば、データ、制御、構成)を読み出し、且つ/又は、書き込むことができるレジスタを含む。レジスタは、デバイスアクセスを容易にするためにメモリアドレスにマッピングすることができる。例えば、アドレス0x3f8は、多くの場合、入出力(I/O)カードの読み出し/書き込みポートにマッピングされる。したがって、中央演算処理装置(CPU)又は他のプロセッサは、物理デバイスレジスタにマッピングされたメモリアドレスを通じてさまざまなコンピュータハードウェアデバイスと相互作用することができる。一方、コンピュータハードウェアデバイスを仮想化することもできる。したがって、オペレーティングシステム、アプリケーション等も、物理デバイスではなく仮想デバイスと相互作用することができる。例えば、パーソナルコンピュータは、RAM(ランダムアクセスメモリ)で実施された「ディスクドライブ」と相互作用することができる。物理デバイスと同様に、仮想デバイスも、データ及び/又は制御情報を読み出し、且つ/又は、書き込むことができる1組のレジスタを含むことができる。したがって、仮想デバイスも、例えば、メモリマップドI/O方式を使用してアドレス指定することができる。
仮想デバイスは、例えば、ソフトウェア、他のハードウェアデバイス、それらの組み合わせ等によって提供することができる。仮想デバイスは、ソフトウェアによって仮想化されると、さまざまなプロセッサで実施することができる。しかしながら、従来、仮想デバイスがアクセスされていない時であっても、パフォーマンスペナルティがソフトウェアに基づく仮想化に関連して起こることがあった。デバイスが他のハードウェアで仮想化される場合、このソフトウェア仮想化に関連したパフォーマンスペナルティを削減することができる。しかしながら、従来のハードウェアでサポートされた仮想化では、プロセッサをハードウェア仮想化サポート機能で設計することが必要とされることがあり、これによって、チップコスト、開発時間等を増加することがある。また、ハードウェアでサポートされた仮想化では、従来、プロセッサ設計者が仮想化ハードウェアとの相互作用を予想して、必要とされるサポート機能を正確に予測することが必要とされていた。これに加えて、ハードウェアでサポートされた仮想化が、実装されるが使用されない場合、組み込まれた仮想化サポート機能を実装する回路部は、電力を消費し熱を発生する過剰なものとして存続することがある。さらに、ハードウェアでサポートされた仮想化では、通常、完全なCPUの仮想化が必要とされ、これによって、仮想化方式は単一レベルの仮想化特権(virtualization privilege)に制限される。それにもかかわらず、仮想化は、デバイスのプロトタイプの製造の容易化、テストの容易化、一定の物理障壁を計算システムから除去すること、複数のオペレーティングシステム及びアプリケーション間でハードウェア機能を分割することの容易化等を可能にすることができる。
本発明にかかる仮想化ロジックは、内部仮想化ロジックを有することなく構成されるプロセッサ(220)に動作可能に接続されるように構成される仮想化ロジック(230)であって、トラップ可能なメモリアドレスを記憶するように構成される第1のデータストア(232)と、前記プロセッサ(220)からメモリトランザクションを受け取るように構成され、且つ、前記メモリトランザクションが前記トラップ可能なメモリアドレスを参照する時にトラップを選択的に生成するように構成されるアドレス比較ロジック(234)と、該アドレス比較ロジック(234)がトラップを生成したメモリ読み出しトランザクションに関連したデータを記憶するように構成される第2のデータストア(236)と、前記アドレス比較ロジック(234)がトラップを生成したメモリ書き込みトランザクションに関連したデータを記憶するように構成される第3のデータストア(238)と、
前記アドレス比較ロジック(234)が前記トラップを生成したことに応答して、前記プロセッサ(220)に信号を選択的に供給するように構成されるトランザクションロジック(239)とを備える。
明細書に組み込まれて明細書の一部を構成する添付図面は、本発明の態様のさまざまな実施の形態例を示すさまざまなシステム例、方法例等を示す。図面に示した要素の境界(例えば、ボックス、数群のボックス、又は他の形状)は境界の一例を表すことが理解されよう。当業者には、1つの要素を複数の要素として設計することもできるし、複数の要素を1つの要素として設計することもできることが理解されよう。別の要素の内部コンポーネントとして示された或る要素は、外部コンポーネントとして実施することができ、また、その逆も同様である。さらに、要素は一律の縮尺で描かれていないことがある。
本明細書で説明するシステム例及び方法例は、外部仮想化ハードウェアを、仮想化をサポートするように設計されていない場合があるプロセッサと関連付けることに関する。例えば、プロセッサは、仮想入出力(I/O)デバイスと相互作用するように内部ハードウェアサポート及び/又は内部ソフトウェアサポートで設計されていない場合がある。
本明細書で説明するような外部仮想化ハードウェアを使用することによって、プロセッサは、従来のソフトウェアに基づく仮想化に関連したパフォーマンスペナルティを招くことなく、且つ、プロセッサ設計が完全なCPU仮想化を含むことを必要とすることなく、I/Oデバイスのような仮想デバイスと相互作用することを可能にすることができる。
以下は、本明細書で使用される選択された用語の定義を含む。これらの定義は、用語の範囲内に含まれ、実施に使用できるコンポーネントのさまざまな例及び/又は形態を含む。これらの例は限定するためのものではない。用語の単数形及び複数形の双方を定義の範囲内に含めることができる。
本出願では、用語「コンピュータコンポーネント」は、コンピュータに関連したエンティティを指し、ハードウェア、ファームウェア、ソフトウェア、それらの組み合わせ、又は実行中のソフトウェアのいずれかを指す。例えば、コンピュータコンポーネントは、プロセッサで実行されるプロセス、プロセッサ、オブジェクト、実行ファイル(executable)、実行スレッド、プログラム、及びコンピュータとすることができるが、これらに限定されるものではない。例示として、サーバで実行されるアプリケーション及びそのサーバの双方をコンピュータコンポーネントとすることができる。1つ又は複数のコンピュータコンポーネントが、プロセス及び/又は実行スレッド内に存在することができ、コンピュータコンポーネントは、1つのコンピュータに局在することができ、且つ/又は、2つ又は3つ以上のコンピュータ間に分散することができる。
「コンピュータ可読媒体」は、本明細書では、信号、命令、及び/又はデータを直接又は間接に提供することに関与する媒体を指す。コンピュータ可読媒体は、不揮発性媒体、揮発性媒体、及び伝送媒体を含む形態を取ることができるが、これらに限定されるものではない。不揮発性媒体には、例えば、光ディスク又は磁気ディスク等が含まれ得る。揮発性媒体には、例えば、光ディスク又は磁気ディスク、ダイナミックメモリ等が含まれ得る。伝送媒体には、同軸ケーブル、銅線、光ファイバケーブル等が含まれ得る。また、伝送媒体は、電波及び赤外線のデータ通信中に生成されるような電磁放射の形態を取ることもできるし、1つ又は複数の信号群の形態を取ることもできる。コンピュータ可読媒体の一般的な形態には、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、他の磁気媒体、CD−ROM、他の光媒体、パンチカード、紙テープ、孔のパターンを有する他の物理媒体、RAM、ROM、EPROM、フラッシュEPROM、又は他のメモリチップ若しくはメモリカード、メモリスティック、搬送波/パルス、及び、コンピュータ、プロセッサ、又は他の電子デバイスが読み出すことができる他の媒体が含まれるが、これらに限定されるものではない。インターネットのようなネットワークを介して命令又は他のソフトウェアを伝播するのに使用される信号は、「コンピュータ可読媒体」と考えることができる。
「データストア」は、本明細書では、データを記憶することができる物理エンティティ及び/又は論理エンティティを指す。データストアは、例えば、テーブル、ファイル、リスト、キュー、ヒープ、メモリ、レジスタ等とすることができる。データストアは、1つの論理エンティティ及び/又は物理エンティティに存在することができ、且つ/又は、2つ又は3つ以上の論理エンティティ及び/又は物理エンティティ間に分散することができる。
「ロジック」には、本明細書では、機能(複数可)又は動作(複数可)を実行し、且つ/又は、別のロジック、方法、及び/又はシステムからの機能若しくは動作を引き起こすためのハードウェア、ファームウェア、及び/又はそれぞれの組み合わせが含まれるが、これに限定されるものではない。例えば、所望の用途又はニーズに基づいて、ロジックには、特定用途向け集積回路(ASIC)のようなディスクリート(discrete)ロジック、プログラミングされたロジックデバイス、命令を収容したメモリデバイス等が含まれ得る。ロジックは、1つ又は複数のゲート、ゲートの組み合わせ、又は他の回路コンポーネントを含むことができる。複数の論理ロジックを記述する場合、それら複数の論理ロジックを1つの物理ロジックに組み込むことが可能な場合がある。同様に、単一の論理ロジックを記述する場合、その単一の論理ロジックを複数の物理ロジック間に分散させることが可能な場合もある。
「動作可能接続」又はエンティティを「動作可能に接続」する接続は、信号、物理通信、及び/又は論理通信を送信及び/又は受信できる接続である。通常、動作可能接続には、物理インターフェース、電気インターフェース、及び/又はデータインターフェースが含まれるが、動作可能接続には、動作可能制御を可能にするのに十分なこれらのタイプの接続又は他のタイプの接続の異なる組み合わせが含まれ得ることに留意すべきである。例えば、直接、又は、プロセッサ、オペレーティングシステム、ロジック、ソフトウェア、若しくは他のエンティティのような1つ又は複数の中間エンティティを通じて、互いに信号を通信できることによって、2つのエンティティを動作可能に接続することができる。論理通信チャネル及び/又は物理通信チャネルを使用して、動作可能接続を生成することができる。
「信号」には、本明細書では、1つ又は複数の電気信号若しくは光信号、アナログ信号若しくはディジタル信号、データ、1つ又は複数のコンピュータ命令若しくはプロセッサ命令、メッセージ、ビット若しくはビットストリーム、又は、受信、送信、及び/又は検出が可能で、情報の転送を容易にすることができる他の手段が含まれるが、これらに限定されるものではない。
「ソフトウェア」には、本明細書では、読み出し、インタープリット、コンパイル、及び/又は実行が可能で、且つ、コンピュータ、プロセッサ、又は他の電子デバイスに、機能、動作を実行させ、且つ/又は所望の通り振る舞わせる1つ又は複数のコンピュータ命令又はプロセッサ命令が含まれるが、これらに限定されるものではない。命令は、動的にリンクされたライブラリ及び/又は静的にリンクされたライブラリからの別々のアプリケーション又はコードを含んだルーチン、アルゴリズム、モジュール、メソッド、スレッド、及び/又はプログラムのようなさまざまな形態で実施することができる。また、ソフトウェアも、さまざまな実行可能な形態及び/又はロード可能な形態で実施することができる。このさまざまな実行可能な形態及び/又はロード可能な形態には、スタンドアロンプログラム、関数コール(ローカル及び/又はリモート)、サーブレット、アプレット、メモリに記憶された命令、オペレーティングシステムの一部、又は他のタイプの実行可能命令が含まれるが、これらに限定されるものではない。ソフトウェアの形態は、例えば、所望のアプリケーションの要件、所望のアプリケーションが実行される環境、及び/又は設計者/プログラマ等の要望に依存し得ることが当業者には理解されよう。また、コンピュータ可読命令及び/又はコンピュータ実行可能命令は、1つのロジックに配置することができ、且つ/又は、2つ若しくは3つ以上の、通信、協同、及び/又は並列処理を行うロジック間に分散させることができ、したがって、連続形式、並列形式、超並列形式、及び他の形式でロードでき、且つ/又は、実行することができることが理解されよう。
本明細書で説明するシステム例及び方法例のさまざまなコンポーネントを実施するのに適したソフトウェアは、Java(登録商標)、Pascal、C#、C++、C、CGI、Perl、SQL、API、SDK、アセンブリ、ファームウェア、マイクロコード、及び/又は他の言語及びツールのようなプログラミング言語並びにツールを使用して作成することができる。ソフトウェアは、システム全体であろうとシステムのコンポーネントであろうと、製品として実施することができ、上記で定義したようなコンピュータ可読媒体の一部として保持又は提供することができる。ソフトウェアの別の形態には、ネットワーク又は他の通信媒体によってソフトウェアのプログラムコードを受信者に送信する信号が含まれ得る。したがって、一例では、コンピュータ可読媒体は、ウェブサーバからユーザにダウンロードされるとき、ソフトウェア/ファームウェアを表す信号の形態を有する。別の例では、コンピュータ可読媒体は、ウェブサーバに保持されるとき、ソフトウェア/ファームウェアの形態を有する。他の形態も使用することができる。
本明細書では、用語「トラップ」は、ハードウェア及び/又はファームウェアによって自動的に実行される、プログラミングされていない条件付き動作を含む。トラップは、例外的なイベントが、そのイベントをハンドリングするための特別なルーチンへの自動転送を引き起こす時に発生し得る。
以下の詳細な説明のいくつかの部分は、メモリ内のデータビットに対するオペレーションのアルゴリズム及びシンボル表現の観点で提示される。これらのアルゴリズム的な説明及び表現は、当業者が自身の作業の内容を他者に伝えるのに使用する手段である。アルゴリズムは、ここでは、一般的に、結果を生成するオペレーションのシーケンスであると考えられる。オペレーションは、物理量の物理的な操作を含むことができる。必ずしもそうではないが、通例、物理量は、ロジック等における記憶、転送、結合、比較、及びそれ以外の操作を行うことができる電気信号又は磁気信号の形態を取る。
主として一般的な慣例との理由から、これらの信号を、ビット、値、要素、シンボル、文字、用語、数字等と呼ぶことが時に便利であることが分かっている。しかしながら、これらの用語及び類似の用語は、適切な物理量に関連付けられることになり、これらの物理量に適用される単なる便利なラベルにすぎないことに留意すべきである。特に指定のない限り、この説明全体を通じて、処理、計算、演算、決定、表示等のような用語は、コンピュータシステム、ロジック、プロセッサ、又は物理(電子)量として表されたデータの操作及び変換を行う類似の電子デバイスの動作及びプロセスを指すことが理解される。
図1は、外部アドレストラップを介してシステム100のオフチップ仮想化をサポートする一例の仮想化ロジック120を示している。本明細書では、外部は、論理的及び物理的に別であることを意味する。例えば、動作可能に接続できる2つの集積回路は、互いに外部であると言うことができる。それらの集積回路は、動作可能に接続されると、互いに外部の状態を維持する。一方、プロセッサの内部に配置された機能ユニット(例えば、浮動小数点ユニット)は、この用語が本明細書で使用されるところによると、プロセッサの外部ではない。
システム100は、仮想化能力を有するように設計されなかったプロセッサ110を含む。したがって、スタンドアロンのプロセッサ110は、仮想デバイスと相互作用することができないことになる。一例では、プロセッサ110は、複数のリンク及び複数のコアを有する、リンクに基づくプロセッサとすることができる。別の例では、プロセッサ110は、バスに基づくプロセッサ又は単一コアプロセッサとすることができる。一例では、プロセッサ110は、プロセッサに対する管理トランザクション(MPT)等のようなトランザクションを処理するように構成することができる。一例のMPTは、さまざまなIntelプロセッサアーキテクチャに関連したトランザクションのようなプラットフォームマネジメントインタラプト(PMI(platform management interrupt))トランザクションとすることができる。MPTは、例えば、プロセッサをシステムメモリ、主入出力バスブリッジ、システムファブリック等とリンクすることを容易にすることができる。別の例では、プロセッサ110は、マスク不可能割り込み(NMI)のような割り込みを処理するように構成することができる。このマスク不可能割り込みは、トランザクション、物理ピン等によって提供することができる。プロセッサ110は、利用可能な「安全モード」を備えることができる。この安全モードは、例えば、マルチパーティションシステムで使用することができる。安全モードは、プロセッサ110が安全モードにある時にのみアクセスできるアドレス範囲を提供することを含むことができる。プロセッサ110を安全モードに移行させる能力及び/又はプロセッサ110を安全モード外に移行させる能力は、特権命令に限定することができる。例えば、オペレーティングシステムコード及びアプリケーションコードは、安全モードの移行を制御できないことがあるのに対し、ブートファームウェアコードは、安全モードの移行を制御できることがある。
また、システム100は、プロセッサ110の外部に配置された仮想化ロジック120も含む。この仮想化ロジック120は、プロセッサ110の一部である回路部ではない。仮想化ロジック120は、プロセッサ110に動作可能に接続できる集積回路のような別個のコンポーネントである。システム100では、仮想化ロジック120は、プロセッサ110に動作可能に接続されている。これに加えて、仮想化ロジック120は、プロセッサ110と仮想デバイス130との間に配置されている。同様に、仮想化ロジック120は、プロセッサ110と物理デバイス140との間にも配置されている。したがって、仮想化ロジック120は、プロセッサ11からの入出力要求、メモリトランザクション等のようなトランザクションをインターセプトすることを容易にするように配置されている。
プロセッサ110は、メモリトランザクションを生成するが、内部仮想化ロジックを含むことができないプロセッサとすることができる。したがって、プロセッサ110は、物理デバイス140と相互作用するように構成できるが、仮想デバイス130と相互作用するように初期構成することができない。したがって、仮想化ロジック120は、プロセッサ110からのメモリトランザクションをインターセプトして、プロセッサ110の外部仮想化のサポートの提供を容易にすることができる。例えば、仮想化ロジック120は、例えば仮想デバイス130に関連したアドレス範囲に基づいてトランザクションを選択的に送る(route)ことができる。これに加えて、仮想化ロジック120は、プロセッサ110に信号(例えばMPT)を供給して、プロセッサ110が、仮想デバイス130と相互作用するためのコード(例えば、仮想デバイスドライバ)を起動することを容易にすることができる。
図2は、プロセッサ220に動作可能に接続するように構成される一例の仮想化ロジック230を示している。プロセッサ220は、メモリトランザクションを生成するように構成されるが、内部仮想化ロジックを有するように構成されていない。プロセッサ220は、例えば、オペレーティングシステム224及び/又はシステムメモリ210にデバイス及びそれらデバイスのアドレス範囲について通知するように構成されるブートファームウェア222に関連付けることができる。いくつかの例では、ブートファームウェア222は、ACPI(アドバンストコンフィギュレーションアンドパワーインターフェース)に関連した技術のような標準的な技術を使用して、コンピュータコンポーネント(例えば、オペレーティングシステム224、デバイスベースアドレスデータストア212)と通信することができる。別の例では、仮想デバイスに関連したアドレス範囲は、例えば、連続範囲や複数の交わらない領域等とすることができる。
プロセッサ220は、オペレーティングシステム224及びハイパーバイザ226に関連付けることができる。オペレーティングシステム224は、プロセッサ220に関連したユーザ資源及びさまざまな物理資源を制御することができる。ハイパーバイザ226は、仮想マシン、仮想デバイス等を提供して管理することができる。例えば、ハイパーバイザ226は、仮想デバイスを作成して、それら仮想デバイスをオペレーティングシステム224に提示することができる。さまざまな仮想デバイスに関する情報は、例えば、システムメモリ210のデバイス状態データストア214に記憶することができる。同様に、仮想デバイス及びそれら仮想デバイスのアドレス範囲に関する情報も、システムメモリ210のデバイスベースアドレスデータストア212に記憶することができる。
仮想化ロジック230は、プロセッサ220の外部にある。例えば、セルラーアーキテクチャでは、仮想化ロジック230はセルコントローラに配置することができる。仮想化ロジック230は、トラップ可能なメモリアドレスを記憶するように構成されるデータストア232を含むことができる。上述したように、トラップ可能なメモリアドレスは、仮想デバイス(複数可)に関連付けることができ、ブートファームウェア222が提供することができる。一例では、トラップ可能なメモリアドレスは、仮想入出力デバイスに関連付けることができる。仮想入出力デバイスを説明したが、他の仮想デバイス(例えば、RAMディスク)を使用できることが理解されるべきである。仮想化ロジック230は、メモリトランザクションが、データストア232に記憶されたアドレス範囲(複数可)のアドレスを参照した時にトラップを生成するように構成することができる。
また、仮想化ロジック230は、アドレス比較ロジック234も含むことができる。このアドレス比較ロジック234は、プロセッサ220からメモリトランザクションを受け取って、そのメモリトランザクションがトラップ可能なメモリアドレスを参照した時にトラップを選択的に生成するように構成される。例えば、仮想化ハードウェア230は、トラップ可能なメモリアドレス範囲のアドレスを有するメモリトランザクションに遭遇した時にトラップを生成することができる。一例では、トラップを生成することは、MPTトランザクションを生成すること、及び、そのMPTトランザクションをプロセッサ220に提供することを含むことができる。別の例では、トラップを生成することは、プロセッサ220においてNMIを生成することを含むことができる。仮想化ロジック230は、例えば、オペレーティングシステム224から読み出し要求及び/又は書き込み要求を受け取ることができる。したがって、アドレス比較ロジック234は、メモリ読み出しトランザクションを受け取ったことに応答して、プロセッサ220及び/又はオペレーティングシステム224に読み出し延期(defer)応答を提供するように構成することができる。同様に、アドレス比較ロジック234は、メモリ書き込みトランザクションを受け取ったことに応答して、プロセッサ220及び/又はオペレーティングシステム224に記入応答を提供するように構成することができる。読み出し延期応答及び書き込み記入応答を説明したが、さまざまなプロセッサ及び/又はオペレーティングシステムの要求を満たすように調整された他の応答を仮想化ロジック230が提供できることが理解されるべきである。
また、仮想化ロジック230は、データストア236も含むことができる。このデータストア236は、アドレス比較ロジック234がトラップを生成したメモリ読み出しトランザクションに関連したデータを記憶するように構成される。一例では、データストア236は、トランザクションの所望の順序を維持することを容易にするキューとすることができる。メモリ読み出しトランザクションを記憶することによって、仮想化ハードウェア230が読み出し延期応答をプロセッサ220に提供することを容易にすることができる。仮想デバイスドライバが実行されると、当該仮想デバイスドライバは、データストア236に記憶された読み出しメモリトランザクション及び/又は関連したデータにアクセスしてそれらを順に実行することができる。同様に、仮想化ロジック230は、アドレス比較ロジック234がトラップを生成したメモリ書き込みトランザクションに関連したデータを記憶するように構成されるデータストア238も含むことができる。一例では、データストア238は、トランザクションの所望の順序を維持することを容易にするキューとすることができる。データストア236及び238の例としてキューを説明したが、トランザクションの順序を維持することを容易にする他のデータストアを使用できることが理解されるべきである。
また、仮想化ロジック230は、トランザクションロジック239も含むことができる。このトランザクションロジック239は、アドレス比較ロジック234がトラップを生成したことに応答して、プロセッサ220に信号を選択的に供給するように構成される。上述したように、この信号は、例えば、MPT、NMI等とすることができる。したがって、トランザクションロジック239は、プロセッサ220を制御して仮想デバイスドライバを起動し、データストア232に記憶されたトラップ可能なアドレス範囲内にアドレスが入るメモリ要求をハンドリングすることを容易にすることができる。
仮想化ロジック230は、MPT及びNMIのような信号をプロセッサ220に供給することができるので、プロセッサ220は、仮想化ロジック230から信号を受け取ったことに応答して、ハンドラプロセスを呼び出すように構成することができる。ハンドラプロセスは、データストア236及び/又はデータストア238に記憶されたメモリトランザクションを順に実行するように構成することができる。一例では、プロセッサ220が安全な状態にある時、保護されたアドレス範囲(例えば、仮想デバイスに関連したアドレス)のみがプロセッサ220によってアクセスできる場合、安全な状態への入出を行うようにプロセッサ220を制御することができる。例えば、MPT又はNMIを受け取ったことに応答して、安全な状態に入るようにプロセッサ220を制御することができる。一例では、仮想化ロジック230を制御すること及び/又は構成することに関連したレジスタを仮想化ロジック230に配置することができ、このレジスタは、安全な状態によって保護されたアドレス範囲のアドレスを有する。したがって、仮想化ロジック230は、いくつかの例では、プロセッサ220が安全な状態にある間実行するコードによって構成することができる。
図2は、システムファブリック240も示している。このシステムファブリック240は、例えば、プロセッサ、入出力デバイス、バスインターフェース等を接続する均一なノード間通信媒体とすることができる。仮想化ロジック230は、いくつかのインターセプトされたトランザクションを仮想化ロジック230に記憶して仮想化デバイスドライバにより処理することを引き起こす信号を生成することができるが、他のトランザクションは、トラップを生成することができず、したがって、それら他のトランザクションを仮想化ロジック230からシステムファブリック240に転送して、従来の処理を行うことができる。したがって、仮想化ロジック230は、従来の仮想化サポートシステムに関連したオーバーヘッド及び遅延の多くを有することなく、仮想化サポートをプロセッサ220に提供することを容易にすることができる。
当業者には理解できるように、図2に関連した一定の例(例えば、MPT、セルラーアーキテクチャ、セルコントローラ)は、Itaniumアーキテクチャのような一定のアーキテクチャに特有の一定の要素を含むことができる。そのようなことから、図3は、より一般的な別の仮想化ロジック330を示している。
図3は、システムメモリ310を示している。このシステムメモリ310には、外部仮想化サポートが提供される仮想デバイスに関連したデータを記憶することができる。例えば、アドレスデータは、アドレスデータストア312に記憶することができる。同様に、状態データストア314は、外部仮想化サポートが提供される仮想デバイスに関連した状態データを記憶することができる。システムメモリ310は、プロセッサ320の外部に示されているが、いくつかの例では、システムメモリ310はプロセッサ320の内部とすることができることが理解されるべきである。
プロセッサ320は、ファームウェア322に関連付けられ、オペレーティングシステム324及びハイパーバイザ326を実行する。ハイパーバイザ326は、当該ハイパーバイザ326が制御する、下にあるハードウェア資源の仮想コピーを、プロセッサ320によって実行されているオペレーティングシステム(複数可)324に提示することができる。ブートタイム時又はブートタイム後、ファームウェア322は、仮想化されたデバイスをアドレス範囲内に配置することができ、仮想化ロジック330のような「インターセプトハードウェア」を構成して、そのアドレス範囲のメモリアクセストランザクションをインターセプトすることができる。
仮想化ロジック330は、アドレスロジック332及び読み出し/書き込みデータストア334を含むことができる。アドレスロジック332は、メモリアクセストランザクションがプロセッサ320を出る(leave)時であって、目的の宛先(例えば、システムファブリック340の或るロケーション、或る仮想デバイス)に到着する前に、当該メモリアクセストランザクションをインターセプトするように構成することができる。仮想化ロジック330は、例えば、セルラーアーキテクチャのセルコントローラに配置することができる。アドレスロジック332は、メモリアクセストランザクションに関連した物理アドレスを検査することができる。そのアドレスが仮想化範囲にある場合、アドレスロジック332は、そのトランザクションに関連したデータを記憶することができ、信号(例えば、MPT、NMI)を、インターセプトされたトランザクションの発信元(例えば、プロセッサ320)に供給することができる。そうでない場合、アドレスロジック332は、トランザクションが仮想化ロジック330を通って、正常にハンドリングされるシステムファブリック340に流れることを可能にすることができる。
ハンドラがプロセッサ320によって実行される前に、いくつかのメモリアクセストランザクション(例えば、読み出し、書き込み)を発行することができるので、仮想化ロジック330は、読み出し及び/又は書き込みに関連したデータをデータストア334に記憶することができる。一例では、実際の読み出しトランザクション及び書き込みトランザクションをデータストア334に記憶することができる。データストア334は、トランザクションのインターセプトとプロセッサ320によるハンドラの実行との間に発生し得る最大数の書き込みを記憶するのに十分な大きさとなるように構成することができる。これに加えて、データストア334は、トランザクションの順序を維持することを容易にするように構成することもできる。
プロセッサ320が、インターセプトされたトランザクションでストールすることを防止するために、仮想化ロジック330はトランザクションに応答する(acknowledge)ことができる。例えば、仮想化ロジック330は、読み出しトランザクションをインターセプトしたことに応答して、読み出し延期応答を生成することができる。同様に、仮想化ロジック330は、書き込みトランザクションをインターセプトしたことに応答して、記入応答を生成することもできる。
方法例は、図4及び図5のフロー図を参照することによって、より良く理解することができる。説明を簡単にするために、図示した方法論は、一続きのブロックとして図示して説明されるが、いくつかのブロックは、図示して説明する順序とは異なる順序で、且つ/又は、他のブロックと同時に行うことができるので、方法論は、ブロックの順序によって限定されるものではないことが理解されるべきである。その上、図示したすべてのブロックよりも少ないブロックしか、方法論の例を実施するのに必要とされない場合がある。さらに、追加された方法論及び/又は代替的な方法論は、図示しない追加されたブロックを使用することができる。
フロー図では、ブロックは、ロジックと共に実施できる「処理ブロック」を示す。この処理ブロックは、方法のステップ及び/又はその方法のステップを実行するための装置の要素を表すことができる。フロー図は、どの特定のプログラミング言語、方法論、又はスタイル(例えば、手続型、オブジェクト指向型)のシンタックスも示すものではない。逆に、フロー図は、当業者が、図示した処理を実行するためのロジックを開発するのに使用できる機能的な情報を示す。いくつかの例では、一時変数、ルーチンループ等のプログラム要素が示されないことが理解されよう。さらに、電子アプリケーション及びソフトウェアアプリケーションは、図示したシーケンスとは異なる他のシーケンスで図示したブロックを実行できるように、且つ/又は、ブロックを結合したり複数のコンポーネントに分割したりできるように、動的で柔軟なプロセスを含むことができることも理解されよう。プロセスは、マシン語、手続型技法、オブジェクト指向型技法、及び/又は人工知能技法のようなさまざまなプログラミング手法を使用して実施できることが理解されよう。
図4は、外部アドレストラップを介して、ハードウェアに基づくオフチップ仮想化をサポートするための方法例400を示している。方法400は、410において、インターセプトロジックを初期化することを含む。このインターセプトロジックは、内部仮想化サポートを含まないプロセッサに動作可能に接続するように構成される。一例では、インターセプトロジックを初期化することは、仮想デバイスに関連したアドレスをインターセプトロジックに提供することを含むことができる。インターセプトロジックは、アドレスが安全なアドレス範囲に配置されたハードウェアレジスタを含むことができる。したがって、インターセプトロジックレジスタは、信頼された仮想化ソフトウェアにのみ利用可能とすることができ、オペレーティングシステム及び/又はアプリケーションレベルコードには利用可能とすることができない。
また、方法400は、420において、プロセッサにより生成された入出力要求をインターセプトすることも含む。このインターセプトすることは、入出力要求がプロセッサを出た後であって、入出力要求が目的の宛先に到着する前に行われる。一例では、入出力要求をインターセプトすることは、入出力要求を受け取ること、入出力要求に関連したアドレスを検査すること、及び、入出力要求に関連したアドレスに少なくとも部分的に基づいて入出力要求を選択的に送ること、を含むことができる。例えば、仮想デバイスに関連した入出力要求はデータストアに記憶することができる一方、物理デバイスに関連した入出力要求は物理デバイスに提供することができる。一例では、入出力トランザクションをインターセプトすることは、仮想デバイスに関連したデバイスドライバにアクセス可能なロケーションに入出力要求を記憶することも含むことができる。
また、方法400は、430において、信号を選択的に生成してプロセッサに供給することも含む。信号が生成されて供給されるかどうかは、目的の宛先が仮想デバイスであるかどうかに少なくとも部分的に依存する。一例では、信号を選択的に生成してプロセッサに供給することは、MPTを生成することを含むことができる。別の例では、信号を選択的に生成してプロセッサに供給することは、マスク不可能割り込み(NMI)を生成することを含む。MPTの例では、MPTは、仮想化ソフトウェアを起動して、プロセッサを安全モードに設定することになる。次に、仮想化ソフトウェアは、記憶されたトランザクションに順にアクセスして、それらトランザクションを実行することができる。
一例では、方法400は、インターセプトされたトランザクションを生成するプロセッサが2つの制約条件を満たすことを必要とすることができる。第1に、保留中の読み出しが存在している間、MPTが採用されること。第2に、保留中の読み出しが満たされるまで、当該保留中の読み出しが後続の読み出し及び書き込みをブロックするようにメモリマップド入出力が強く順序付けられていること。
信号を生成することに加えて、方法400は、インターセプトされたトランザクションに応答することも含むことができる。例えば、入出力トランザクションをインターセプトすることは、プロセッサからの読み出し要求に対する応答(例えば、読み出し延期)を提供することを含むことができる。同様に、入出力トランザクションをインターセプトすることは、プロセッサからの書き込み要求に対する応答(例えば、書き込み記入)を提供することを含むことができる。プロセッサ、オペレーティングシステム、及びトランザクションが異なれば、方法400によって提供される応答も異なる場合があることが理解されるべきである。
図4は、さまざまな動作が連続的に行われることを示しているが、図4に示すさまざまな動作はほぼ並列に行うことができることが理解されるべきである。例示として、第1のプロセスが、インターセプトロジックを初期化することができる。同様に、第2のプロセスが、入出力トランザクションをインターセプトすることができると同時に、第3のプロセスが信号を選択的に生成することができる。3つのプロセスを説明したが、より多くの個数又はより少ない個数のプロセスを使用できること、並びに、軽量プロセス、普通のプロセス、スレッド、及び他の手法を使用できることが理解されるべきである。場合によっては、他の方法例も、ほぼ並列に行われる動作を含むことができることが理解されるべきである。
図5は、外部アドレストラップを介して、ハードウェアに基づくオフチップ仮想化をサポートするための方法500を示している。方法500は、510において、インターセプトロジックを初期化することを含む。インターセプトロジックを初期化することは、例えば、インターセプトロジックのレジスタに値(複数可)を書き込むこと、インターセプトロジックがトラップを生成することになるアドレス範囲を確立すること、インターセプトロジックがトラップを生成することになるトランザクションタイプを確立すること等を含むことができる。また、方法500は、520において、トランザクションを受け取ることも含むことができる。トランザクションは、例えば、メモリアクセストランザクション、入出力トランザクション、及び/又は他のトランザクションとすることができる。530において、トランザクションが仮想化デバイスを対象としたものであるかどうかに関する判断が行われる。この判断は、510において確立されたアドレス範囲及び/又はトランザクションタイプに少なくとも部分的に基づくことができる。530における判断がNo(いいえ)である場合、560において、トランザクションをシステムファブリックのような宛先に送ることができる。しかし、530における判断がYes(はい)である場合、540において、仮想デバイスハンドラによるその後の処理のためにトランザクションに関連したデータを記憶することができる。次に、550において、信号を生成して、トランザクションプロデューサに供給することができる。570において、別のトランザクションが処理されるかどうかに関する判断を行うことができる。この判断がNoである場合、処理は終了することができる。そうでない場合、処理は520に戻ることができる。
一例では、方法論は、コンピュータ可読媒体に設けられたプロセッサ実行可能命令及び/又はプロセッサ実行可能オペレーションとして実施することができる。したがって、一例では、コンピュータ可読媒体は、インターセプトロジックを初期化することを含む方法を実行するように動作できるプロセッサ実行可能命令を記憶することができる。このインターセプトロジックは、内部仮想化サポートを含まないプロセッサに動作可能に接続されるように構成される。インターセプトロジックを初期化することは、仮想デバイスに関連したアドレスをインターセプトロジックに提供することを含むことができる。また、この方法は、プロセッサによって生成されたトランザクション(例えば、入出力要求)をインターセプトすることも含むことができる。インターセプトすることは、入出力要求がプロセッサを出た後であって、入出力要求が目的の宛先に到着する前に行うことができる。入出力要求をインターセプトすることは、入出力要求を受け取ること、入出力要求に関連したアドレスを検査すること、及び、入出力要求に関連したアドレスに少なくとも部分的に基づいて入出力要求を選択的に送ること、を含むことができる。また、この方法は、仮想デバイスに関連したデバイスドライバにとってアクセス可能なロケーションに入出力要求を記憶することも含むことをできる。また、この方法は、目的の宛先が仮想デバイスであるかどうかに少なくとも部分的に基づいてMPTを選択的に生成することも含むことができる。また、この方法は、そのトランザクションが割り込みを受けたリクエスタ(requestor)にトランザクションの終了を通知することも含むことができる。上記方法は、コンピュータ可読媒体に設けられるものとして説明されているが、本明細書で説明した他の方法例もコンピュータ可読媒体に設けることができることが理解されるべきである。
図6は、コンピュータ600を示している。このコンピュータ600は、バス608によって動作可能に接続された、プロセッサ602、メモリ604、及び入出力ポート610を含む。一例では、コンピュータ600は、外部アドレストラップロジック630を含むことができる。この外部アドレストラップロジック630は、プロセッサ602が内部仮想化サポートを有しない場合に、プロセッサ602の仮想化を提供することを容易にするように構成される。したがって、外部アドレストラップロジック630は、コンピュータ600においてハードウェアとして実施されようが、ハードウェア及びファームウェアとして実施されようが、内部仮想化ロジックを含まないプロセッサによって生成されたメモリトランザクションにアクセスするための手段を提供することができる。また、外部アドレストラップロジック630は、メモリトランザクションが仮想デバイスを対象としたものであるかどうかを判断するための手段、及び、デバイスドライバを起動して仮想デバイスのメモリトランザクションを処理するようにプロセッサ602に信号で伝えるための手段も提供することができる。
プロセッサ602は、デュアルマイクロプロセッサアーキテクチャ及び他のマルチプロセッサアーキテクチャを含むさまざまなプロセッサとすることができる。メモリ604は、揮発性メモリ及び/又は不揮発性メモリを含むことができる。不揮発性メモリには、ROM、PROM、EPROM、EEPROM等が含まれ得るが、これらに限定されるものではない。揮発性メモリには、例えば、RAM、同期RAM(SRAM)、ダイナミックRAM(DRAM)、同期DRAM(SDRAM)、ダブルデータレートSDRAM(DDR SDRAM)、及びダイレクトRAMバスRAM(DRRAM)が含まれ得る。
ディスク606は、例えば入出力インターフェース(例えば、カード、デバイス)618及び入出力ポート610を介して、コンピュータ600に動作可能に接続することができる。ディスク606には、磁気ディスクドライブ、ソリッドステートディスクドライブ、フロッピィディスクドライブ、テープドライブ、Zipドライブ、フラッシュメモリカード、及び/又はメモリスティックのようなデバイスが含まれ得るが、これらに限定されるものではない。さらに、ディスク606には、CD−ROMドライブ、記録型CDドライブ(CD−Rドライブ)、書き換え型CDドライブ(CD−RWドライブ)、及び/又はディジタルビデオROMドライブ(DVD ROM)のような光ドライブが含まれ得る。メモリ604は、例えば、プロセス614及び/又はデータ616を記憶することができる。ディスク606及び/又はメモリ604は、コンピュータ600の資源の制御及び割り当てを行うオペレーティングシステムを記憶することができる。
バス608は、単一の内部バス相互接続アーキテクチャ及び/又は他のバスアーキテクチャ若しくはメッシュアーキテクチャとすることができる。単一のバスが示されているが、コンピュータ600は、図示しない他のバス(例えば、PCIE,SATA、インフィニバンド、1394、USB、イーサネット(登録商標))を使用して、さまざまなデバイス、ロジック、及び周辺機器と通信できることが理解されるべきである。バス608は、さまざまなタイプのものとすることができ、このさまざまなタイプには、メモリバス若しくはメモリコントローラ、周辺バス若しくは外部バス、クロスバースイッチ、及び/又はローカルバスが含まれるが、これらに限定されるものではない。ローカルバスは、さまざまなものとすることができ、このさまざまなものには、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MSA)バス、拡張ISA(EISA)バス、周辺機器相互接続(PCI)バス、ユニバーサルシリアルバス(USB)、及び小型コンピュータシステムインターフェース(SCSI)バスが含まれるが、これらに限定されるものではない。
コンピュータ600は、I/Oインターフェース618及び入出力ポート610を介して入出力デバイスと相互作用することができる。この入出力デバイスには、キーボード、マイク、ポインティング/選択デバイス、カメラ、ビデオカード、ディスプレイ、ディスク606、ネットワークデバイス620等が含まれ得るが、これらに限定されるものではない。入出力ポート610には、シリアルポート、パラレルポート、及びUSBポートが含まれ得るが、これらに限定されるものではない。また、コンピュータ600は、さまざまな仮想デバイス(図示せず)とも相互作用することができる。
コンピュータ600は、ネットワーク環境で動作することができ、したがって、I/Oインターフェース618及び/又はI/Oポート610を介してネットワークデバイス620に接続することができる。ネットワークデバイス620を通じて、コンピュータ600はネットワークと相互作用することができる。ネットワークを通じて、コンピュータ600をリモートコンピュータと論理的に接続することができる。コンピュータ600が相互作用することができるネットワークには、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、及び他のネットワークが含まれるが、これらに限定されるものではない。ネットワークデバイス620は、LAN技術に接続することができる。このLAN技術には、ファイバ分散データインターフェース(FDDI)、銅分散データインターフェース(CDDI)、イーサネット(登録商標、IEEE802.3)、トークンリング(登録商標、IEEE802.5)、無線コンピュータ通信(IEEE802.11)、Bluetooth(登録商標、IEEE802.15.1)、Zigbee(登録商標、IEEE802.15.4)等が含まれるが、これらに限定されるものではない。同様に、ネットワークデバイス620は、WAN技術にも接続することができる。このWAN技術には、ポイントツーポイントリンク、サービス統合ディジタル網(ISDN)のような回線交換網、パケット交換網、及びディジタル加入者線(DSL)が含まれるが、これらに限定されるものではない。個々のネットワークタイプを説明しているが、ネットワークを介した通信、ネットワークによる通信、及び/又はネットワークを通じた通信は、通信を組み合わせたもの及び通信を混合したものを含むことができることが理解されるべきである。
図7は、一例の画像形成デバイス700を示している。この画像形成デバイス700は、本明細書で説明したシステム例と同様の外部アドレストラップロジック710を含む。この外部アドレストラップロジック710は、本明細書で説明した方法のような実行可能な方法を実行するように構成することができる。外部アドレストラップロジック710は、永久的に、且つ/又は、取り外し可能に(removably)画像形成デバイス700に取り付けることができる。
画像形成デバイス700は、レンダリングされる印刷データを受け取ることができる。したがって、画像形成デバイス700は、印刷データを記憶するか、又は、より一般的には画像処理用に使用されるように構成されるメモリ720も含むことができる。また、画像形成デバイス700は、印刷データからプリンタ準備画像を生成するように構成されるレンダリングロジック730も含むことができる。レンダリングは、含まれるデータのフォーマット及び画像デバイスのタイプに基づいて変化する。一般に、レンダリングロジック730は、高レベルデータを表示用又は印刷用のグラフィカル画像(例えば、印刷準備画像)に変換する。例えば、1つの形態は、3次元オブジェクト又は3次元シーンの数学的モデルを採用して、その数学的モデルをビットマップ画像に変換するレイトレーシングである。別の例は、HTMLを表示/印刷用の画像に変換するプロセスである。画像形成デバイス700は、レンダリングする必要のない印刷準備データを受け取ることもでき、したがって、レンダリングロジック730は、いくつかの画像形成デバイスには現れないことがあることが理解されるべきである。
また、画像形成デバイス700は、印刷準備画像から印刷媒体に画像を生成するように構成される画像形成メカニズム740も含むことができる。画像形成メカニズム740は、画像デバイス700のタイプに基づいて変化することがあり、画像形成メカニズム740には、レーザ画像メカニズム、他のトナーに基づく画像メカニズム、インクジェットメカニズム、ディジタル画像メカニズム、又は他の画像再現エンジンが含まれ得る。画像形成デバイス700のオペレーションを制御するロジックで実施されるプロセッサ750も含むことができる。一例では、プロセッサ750は、Java(登録商標)命令を実行することができるロジックを含む。画像形成デバイス700の他のコンポーネントは、本明細書では説明しないが、他のコンポーネントには、媒体ハンドリング/ストレージメカニズム、センサ、コントローラ、及び画像プロセスに関与する他のコンポーネントが含まれ得る。
次に図8を参照して、アプリケーションプログラミングインターフェース(API)800が示されている。このAPI800は、プロセッサのオフチップハードウェアに基づく仮想化をサポートするためのシステム810へのアクセスを提供する。API800は、例えば、プログラマ820及び/又はプロセス830が、システム810によって実行される処理にアクセスするのに使用することができる。例えば、API800が存在することによってプログラムの記述が容易にされる場合、プログラマ820は、システム810にアクセスする(例えば、システム810のオペレーションを起動する、システム810のオペレーションを監視する、システム810のオペレーションを制御する)ためのプログラムを記述することができる。プログラマ820は、システム810の内部を理解する必要があるのではなく、単にシステム810のインターフェースを学ぶ必要があるだけである。これによって、システム810の機能を公開すると同時に、その機能をカプセル化することが容易になる。
同様に、API800は、データ値のシステム810への提供、及び/又は、システム810からのデータ値の取り出しを行うのに使用することもできる。例えば、仮想メモリアクセスを処理するプロセス830は、例えば、API800で提供される呼び出し(call)を使用することにより、API800を介してトラップ可能なアドレスデータをシステム810に提供することができる。したがって、API800の一例では、1組のアプリケーションプログラミングインターフェースをコンピュータ可読媒体に記憶することができる。このインターフェースは、プログラマ、コンピュータ、コンポーネント、ロジック等がシステム810にアクセスして、仮想デバイスに関連したトランザクションを外部でトラップするのに使用することができる。このインターフェースは、トラップ可能なアドレスデータを通信する第1のインターフェース840、トラップ可能なノードデータを通信する第2のインターフェース850、及びトランザクションデータを通信する第3のインターフェース860を含むことができるが、これらに限定されるものではない。この場合、トランザクションデータは、そのトランザクションに関連したトラップ可能なアドレスデータ及び/又はトラップ可能なノードデータに基づいて、トラップ可能なトランザクションとして識別することができる。
図9は、外部仮想化ロジック950に動作可能に接続された一例のプロセッサ900を示している。このプロセッサ900は、メモリトランザクションを生成するように構成することができる。プロセッサ900は、コンピュータ実行可能命令を処理するように構成される命令処理ロジック910を含むことができる。この命令処理ロジック910は、中央演算処理装置の従来の命令処理ロジックのように動作することができる。また、プロセッサ900は、トランザクション組み立てロジック920も含むことができる。このトランザクション組み立てロジック920は、コンピュータ実行可能命令の処理に関連したメモリアクセストランザクションを生成するように構成される。これに加えて、プロセッサ900は、ポート(例えば、940、942、944)を含むこともできる。このポートを通じて、メモリアクセストランザクションを提供することができる。これらのポートの少なくとも1つ(例えば、940)は、仮想化ロジック通信ポートとして専用化することができる。3つのポートが示されているが、これよりも多くの個数及び/又はこれよりも少ない個数のポートを使用できることが理解されるべきである。また、プロセッサ900は、トランザクション組み立てロジック920をポートに動作可能に接続するように構成されるクロスバー930も含むことができる。
図1及び図2に示すプロセッサと同様に、プロセッサ900も、内部仮想化サポートを含まない。例えば、プロセッサ900は、仮想デバイスに関連したトラップアドレスの内部サポートを有するように構成されていない。一方、プロセッサ900は、トランザクション組み立てロジック920、クロスバー930、及びポート940〜944を含む。これらは、さまざまなトランザクションがどのポートを通じて提供されるかの選択を容易にするように配置される。一例では、一定のアドレス範囲に関連したすべてのトランザクションは、第1のポート(例えば、940)を通じて提供することができる一方、そのアドレス範囲に関連しない他のすべてのトランザクションは、他のポート(例えば、942、944)を通じて提供される。したがって、第1のポートは、一定のアドレス範囲に関連したトランザクションを仮想化ロジック950に配信するのに使用することができる。このアドレス範囲が一定の方法で構成される場合、仮想デバイスを対象としたトランザクションのみが仮想化ロジック950に提供される。
仮想化ロジック950は、プロセッサ900の外部に配置することができ、仮想化ロジック通信ポート(例えば、940)によってプロセッサ900に動作可能に接続することができる。仮想化ロジック950は、メモリ読み出しトランザクション及び/又はメモリ書き込みトランザクションを記憶するように構成されるデータストアを含むことができる。また、仮想化ロジック950は、仮想化ロジック950がメモリアクセストランザクションを受け取ったことに応答して、信号をプロセッサ900に選択的に供給するように構成されるトランザクションロジックも含むことができる。この信号は、さまざまな形態を取ることができる。一例では、仮想化ロジック950は、メモリトランザクションを受け取ったことに応答して、プロセッサ900にMPTを提供することができる。別の例では、仮想化ロジック950は、メモリトランザクションを受け取ったことに応答して、プロセッサ900にNMIを提供することができる。
プロセッサ900は、仮想化ロジック950から信号(例えば、MPT)を受け取ったことに応答して、ハンドラプロセスを呼び出すように構成することができる。このハンドラプロセスは、仮想化ロジック950のデータストアに記憶されたメモリ読み出しトランザクション及びメモリ書き込みトランザクションを順に実行するように、順に構成することができる。上述したように、仮想デバイスを対象にしたトランザクションは、ポート940を通じて仮想化ロジック950に提供することができる。他のトランザクションは、他のポート(例えば、942、944)を通じて、プロセッサ900に動作可能に接続されたシステムファブリック960のような他のロケーションに提供することができる。
図10は、外部ロジック1030に動作可能に接続されたプロセッサ1000を示している。プロセッサ1000は、メモリトランザクションを生成するように構成されるが、仮想デバイスに関連したトラップアドレスの内部サポートを有しない。したがって、外部ロジック1030は、プロセッサ1000の仮想化サポートを提供することができる。
プロセッサ1000は、コンピュータ実行可能命令を処理するように構成される命令処理ロジック1010を含む。また、プロセッサ1000は、コンピュータ実行可能命令の処理に関連したメモリアクセストランザクションを生成するように構成されるトランザクション組み立てロジック1020も含む。例えば、コンピュータ実行可能命令は、或るメモリロケーションからの値を必要とすることがある。したがって、トランザクション組み立てロジック1020は、メモリからその値を取り出すためのトランザクションを生成することができる。トランザクション組み立てロジック1020は、第1のアドレス範囲に関連したメモリアクセストランザクションを第1のノードにマッピングし、第1のアドレス範囲外のアドレスに関連したメモリアクセストランザクションを別のノード(複数可)にマッピングするように構成することができる。トランザクションをノードにマッピングすることは、ノードアドレスデータをトランザクションに関連付けることを含むことができる。したがって、ノードアドレスと仮想デバイスとの関係は、トランザクション組み立てロジック1020によって確立することができる。
ロジック1030は、プロセッサ1000の外部に配置することができ、プロセッサ1000に動作可能に接続することができる。ロジック1030は、トラップ可能なノードアドレスを記憶するように構成されるデータストア(図示せず)を含むことができる。また、ロジック1030は、プロセッサ1000からメモリアクセストランザクションを受け取るように構成されるノード比較ロジック1040も含むことができる。このノード比較ロジック1040は、受け取ったトランザクションがトラップ可能なノードアドレスを参照する時にトラップを選択的に生成することができる。
また、ロジック1030は、第2のデータストア(図示せず)も含むことができる。この第2のデータストアは、ノード比較ロジック1040がトラップを生成したメモリ読み出しトランザクション及び/又はメモリ書き込みトランザクションに関連したデータを記憶するように構成される。また、ロジック1030は、トランザクションロジック(図示せず)も含むことができる。このトランザクションロジックは、ノード比較ロジック1040がトラップを生成したことに応答して、プロセッサ1000に信号を選択的に供給するように構成される。一例では、外部ロジック1030のトランザクションロジックは、ノード比較ロジック1040がトラップを生成したことに応答して、プロセッサ1000にMPTトランザクションを提供するように構成することができる。別の例では、このトランザクションロジックは、ノード比較ロジック1040がトラップを生成したことに応答して、プロセッサ1000にNMIを提供するように構成することができる。本明細書で説明した他のロジックと同様に、外部ロジック1030も、いくつかのトランザクション(例えば、仮想デバイスに関連したトランザクション)に対してトラップを生成できると同時に、他のトランザクションが他の宛先へ通過して流れることを可能にすることができる。したがって、一例では、システムファブリック1050を、外部ロジック1030によってトラップされないいくつかのトランザクションの宛先とすることができる。
システム例、方法例等を、例を説明することによって示し、これらの例をかなり詳細に説明してきたが、添付の特許請求の範囲をこのような詳細なものに制限することも、多少なりとも限定することも、出願人の意図ではない。もちろん、本明細書で説明したシステム、方法等を説明するために、コンポーネント又は方法論の考えられるあらゆる組み合わせを説明することは不可能である。別の利点及び変更は、当業者には直ちに明らかであろう。したがって、本発明は、図示して説明した特定の詳細、代表的な装置、及び例示した例に限定されるものではない。したがって、この出願は、添付した特許請求の範囲内に入る改変、変更、及び変形を包含するように意図されている。さらに、上記説明は、本発明の範囲を限定するように意図されていない。逆に、本発明の範囲は、添付の特許請求の範囲及びその等価物によって画定されることになる。
用語「含む」は、発明を実施するための最良の形態又は特許請求の範囲で使用される限りにおいて、用語「備える」が特許請求の範囲で暫定的な(transitional)用語として使用された場合にその用語が解釈されるのと同様に、包含的であるように意図されている。さらに、用語「又は/若しくは」は、発明を実施するための最良の形態又は特許請求の範囲で使用される限りにおいて(例えば、A又はB)、「A若しくはB又は双方」を意味するように意図されている。出願人が、「A又はBのみであって、双方ではない」ことを示すように意図している場合、用語「A又はBのみであって、双方ではない」が使用されることになる。したがって、本明細書における用語「又は/若しくは」の使用は、包含的な使用であって、排他的な使用ではない。これについては、Bryan A. Garner著「A Dictionary of Modern Legal Usage 624 (2d. Ed. 1995)」を参照されたい。
ハードウェアに基づくオフチップ仮想化を、外部アドレストラップを介してサポートするための一例の仮想化ロジックを示す図である。 一例の仮想化ロジックを示す図である。 別の例の仮想化ロジックを示す図である。 ハードウェアに基づくオフチップ仮想化を、外部アドレストラップを介してサポートするための一例の方法を示す図である。 ハードウェアに基づくオフチップ仮想化を、外部アドレストラップを介してサポートするための別の例の方法を示す図である。 本明細書に示すシステム例及び方法例が動作できる一例の計算環境を示す図である。 本明細書に示すシステム例及び方法例が動作できる一例の画像形成デバイスを示す図である。 一例のアプリケーションプログラミングインターフェース(API)を示す図である。 外部仮想化ロジックに動作可能に接続された一例のプロセッサを示す図である。 外部仮想化ロジックに動作可能に接続された別の例のプロセッサを示す図である。
符号の説明
110・・・プロセッサ
120・・・仮想化ロジック
130・・・仮想デバイス
140・・・物理デバイス
210・・・システムメモリ
212・・・デバイスベースアドレス
214・・・デバイス状態
220・・・プロセッサ
222・・・ブートファームウェア
224・・・オペレーティングシステム
226・・・ハイパーバイザ
230・・・仮想化ロジック
232・・・トラップアドレス
234・・・アドレス比較ロジック
236・・・読み出しデータ
238・・・書き込みデータ
239・・・トランザクションロジック
240・・・システムファブリック
310・・・システムメモリ
312・・・アドレスデータ
314・・・状態データ
320・・・プロセッサ
322・・・ファームウェア
324・・・オペレーティングシステム
326・・・ハイパーバイザ
330・・・仮想化ロジック
332・・・アドレスロジック
334・・・読み出し/書き込みデータストア
340・・・システムファブリック
600・・・コンピュータ
602・・・プロセッサ
604・・・メモリ
606・・・ディスク
608・・・バス
610・・・I/Oポート
614・・・プロセス
616・・・データ
618・・・I/Oインターフェース
620・・・ネットワークデバイス
630・・・外部アドレストラップロジック
700・・・画像形成デバイス
710・・・仮想化ロジック
720・・・メモリ
730・・・レンダリングロジック
740・・・画像形成メカニズム
750・・・プロセッサ
800・・・アプリケーションプログラミングインターフェイス(API)
810・・・システム
820・・・プログラマ
830・・・プロセス
840・・・トラップ可能なアドレスデータ
850・・・トラップ可能なノードデータ
860・・・トランザクションデータ
900・・・プロセッサ
910・・・命令処理ロジック
920・・・トランザクション組み立てロジック
930・・・クロスバー
940,942,944,・・・ポート
950・・・仮想化ロジック
960・・・システムファブリック
1000・・・プロセッサ
1010・・・命令処理ロジック
1020・・・トランザクション組み立てロジック
1030・・・外部ロジック
1040・・・ノード比較ロジック
1050・・・システムファブリック

Claims (10)

  1. 内部仮想化ロジックを有することなく構成されるプロセッサ(220)に動作可能に接続されるように構成される仮想化ロジック(230)であって、
    トラップ可能なメモリアドレスを記憶するように構成される第1のデータストア(232)と、
    前記プロセッサ(220)からメモリトランザクションを受け取るように構成され、且つ、前記メモリトランザクションが前記トラップ可能なメモリアドレスを参照する時にトラップを選択的に生成するように構成されるアドレス比較ロジック(234)と、
    該アドレス比較ロジック(234)がトラップを生成したメモリ読み出しトランザクションに関連したデータを記憶するように構成される第2のデータストア(236)と、
    前記アドレス比較ロジック(234)がトラップを生成したメモリ書き込みトランザクションに関連したデータを記憶するように構成される第3のデータストア(238)と、
    前記アドレス比較ロジック(234)が前記トラップを生成したことに応答して、前記プロセッサ(220)に信号を選択的に供給するように構成されるトランザクションロジック(239)と、
    を備える、仮想化ロジック。
  2. 仮想化ロジック(230)であって、
    前記トランザクションロジック(239)は、前記アドレス比較ロジック(234)がトラップを生成したことに応答して、前記プロセッサ(220)に、プロセッサに対する管理トランザクション(MPT(management to processor transaction))を提供するように構成される、
    請求項1に記載の仮想化ロジック。
  3. 仮想化ロジック(230)であって、
    前記プロセッサ(220)は、前記仮想化ロジック(230)から前記MPTを受け取ったことに応答して、ハンドラプロセスを呼び出すように構成され、該ハンドラプロセスは、前記第2のデータストア(236)及び前記第3のデータストア(238)の1つ又は2つに記憶されたメモリトランザクションを順に実行するように構成される、
    請求項2に記載の仮想化ロジック。
  4. 仮想化ロジック(230)であって、
    前記トランザクションロジック(239)は、前記アドレス比較ロジック(234)がトラップを生成したことに応答して、前記プロセッサ(220)にマスク不可能割り込み(non-maskable interrupt)を提供するように構成される、
    請求項1に記載の仮想化ロジック。
  5. 内部仮想化ロジックを有することなく構成されるメモリトランザクション生成プロセッサ(220)に動作可能に接続されるように構成される仮想化ロジック(230)であって、
    仮想入出力デバイスに関連したトラップ可能なメモリアドレスを記憶するように構成される第1のデータストア(232)であって、該トラップ可能なメモリアドレスは、前記プロセッサ(220)をブートすること、及び、前記プロセッサ(220)に関連したオペレーティングシステム(224)を初期化することの1つ又は2つに関連したブートファームウェア(222)により該第1のデータストア(232)に書き込まれる、第1のデータストアと、
    前記プロセッサ(220)からメモリトランザクションを受け取るように構成され、該メモリトランザクションが前記トラップ可能なメモリアドレスを参照する時にトラップを選択的に生成するように構成され、前記プロセッサ(220)からメモリ読み出しトランザクションを受け取ったことに応答して前記プロセッサ(220)に読み出し延期応答(read defer response)を提供するように構成され、且つ、前記プロセッサ(220)からメモリ読み出しトランザクションを受け取ったことに応答して、前記プロセッサ(220)に記入応答(posted response)を提供するように構成されるアドレス比較ロジック(234)と、
    該アドレス比較ロジック(234)がトラップを生成したメモリ読み出しトランザクションに関連したデータを記憶するように構成される第2のデータストア(236)と、
    前記アドレス比較ロジック(234)がトラップを生成したメモリ書き込みトランザクションに関連したデータを記憶するように構成される第3のデータストア(238)と、
    前記アドレス比較ロジック(234)がトラップを生成したことに応答して、前記プロセッサ(220)に、プロセッサに対する管理トランザクション(MPT)を選択的に提供するように構成されるトランザクションロジック(239)と、
    を備え、
    前記プロセッサ(220)は、前記仮想化ロジック(230)から前記MPTを受け取ったことに応答して、ハンドラプロセスを呼び出すように構成され、該ハンドラプロセスは、前記第2のデータストア(236)及び前記第3のデータストア(238)の1つ又は2つに記憶されたメモリトランザクションを順に実行するように構成される、
    仮想化ロジック。
  6. 方法(400)であって、
    内部仮想化サポートを含まないプロセッサに動作可能に接続されるように構成されるインターセプトロジックを初期化すること(410)、
    前記プロセッサによって生成された入出力要求をインターセプトすること(420)であって、該インターセプトすること(420)は、前記入出力要求が前記プロセッサを出た後であって、前記入出力要求が目的の宛先に到着する前に行われる、インターセプトすること、及び、
    前記目的の宛先が仮想デバイスであるかどうかに少なくとも部分的に基づいて、信号を選択的に生成して(430)前記プロセッサに供給すること、
    を含む、方法。
  7. 方法(400)であって、
    入出力要求を前記インターセプトすること(420)は、該入出力要求を受け取ること、該入出力要求に関連したアドレスを検査すること、及び、該入出力要求に関連した前記アドレスに少なくとも部分的に基づいて該入出力要求を選択的に送ること、を含む、
    請求項6に記載の方法。
  8. 方法(400)であって、
    前記信号を選択的に生成して(430)前記プロセッサに供給することは、プロセッサに対する管理トランザクション(MPT)を生成することを含む、
    請求項7に記載の方法。
  9. 方法(500)を実行するように動作可能な、プロセッサ実行可能命令を記憶するコンピュータ可読媒体であって、前記方法(500)は、
    内部仮想化サポートを含まないプロセッサに動作可能に接続されるように構成されるインターセプトロジックを初期化すること(510)であって、該インターセプトロジックを初期化することは、仮想デバイスに関連したアドレスを前記インターセプトロジックに提供することを含む、インターセプトロジックを初期化すること、
    前記プロセッサによって生成された入出力要求をインターセプトすること(520)であって、該インターセプトすることは、前記入出力要求が前記プロセッサを出た後であって、前記入出力要求が目的の宛先に到着する前に行われ、入出力要求を該インターセプトすることは、該入出力要求を受け取ること、該入出力要求に関連したアドレスを検査すること、及び、該入出力要求に関連した前記アドレスに少なくとも部分的に基づいて該入出力要求を選択的に送ること(530)、を含む、インターセプトすること、
    前記仮想デバイスに関連したデバイスドライバにアクセス可能なロケーションに前記入出力要求を記憶すること(540)、及び、
    前記目的の宛先が仮想デバイスであるかどうかに少なくとも部分的に基づいて、プロセッサに対する管理トランザクション(MPT)を選択的に生成すること(550)、
    を含む、コンピュータ可読媒体。
  10. メモリトランザクションを生成するように構成されるプロセッサ(900)であって、該プロセッサ(900)は、仮想デバイスに関連したトラップアドレスの内部サポートを備えず、該プロセッサは、
    コンピュータ実行可能命令を処理するように構成される命令処理ロジック(910)と、
    コンピュータ実行可能命令を処理することに関連したメモリアクセストランザクションを生成するように構成されるトランザクション組み立てロジック(920)と、
    前記メモリアクセストランザクションを提供することができる2つ以上のポート(940、942、944)であって、該ポート(940、942、944)の少なくとも1つは仮想化ロジック通信ポートとして専用化することができる、2つ以上のポートと、
    前記トランザクション組み立てロジック(920)を前記2つ以上のポート(940、942、944)に動作可能に接続するように構成されるクロスバー(930)と、
    を備える、プロセッサ、及び、
    該プロセッサ(900)の外部に配置される仮想化ロジック(950)であって、該仮想化ロジック(950)は、前記仮想化ロジック通信ポートによって前記プロセッサ(900)に動作可能に接続され、該仮想化ロジック(950)は、
    メモリ読み出しトランザクションに関連したデータ及びメモリ書き込みトランザクションに関連したデータの1つ又は2つを記憶するように構成されるデータストア、及び、
    該仮想化ロジック(950)がメモリアクセストランザクションを受け取ったことに応答して、前記プロセッサ(900)に信号を選択的に供給するように構成されるトランザクションロジック、
    を備える、仮想化ロジック、
    を備える、システム。
JP2005344024A 2004-11-30 2005-11-29 仮想化ロジック Withdrawn JP2006155624A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/000,279 US7600082B2 (en) 2004-11-30 2004-11-30 Virtualization logic

Publications (1)

Publication Number Publication Date
JP2006155624A true JP2006155624A (ja) 2006-06-15

Family

ID=36585392

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005344024A Withdrawn JP2006155624A (ja) 2004-11-30 2005-11-29 仮想化ロジック

Country Status (3)

Country Link
US (1) US7600082B2 (ja)
JP (1) JP2006155624A (ja)
FR (1) FR2882602A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7558724B2 (en) * 2005-04-19 2009-07-07 Hewlett-Packard Development Company, L.P. Operation region describing a virtual device
US8266238B2 (en) * 2006-12-27 2012-09-11 Intel Corporation Memory mapped network access
JP5100133B2 (ja) * 2007-01-19 2012-12-19 株式会社東芝 情報処理装置
US8527673B2 (en) 2007-05-23 2013-09-03 Vmware, Inc. Direct access to a hardware device for virtual machines of a virtualized computer system
US8984174B2 (en) * 2011-12-06 2015-03-17 Qualcomm Incorporated Method and a portable computing device (PCD) for exposing a peripheral component interface express (PCIE) coupled device to an operating system operable on the PCD
JP5941996B2 (ja) * 2012-11-27 2016-06-29 株式会社日立製作所 ストレージ装置及び階層制御方法
US9015353B2 (en) * 2013-03-14 2015-04-21 DSSD, Inc. Method and system for hybrid direct input/output (I/O) with a storage device
US9514053B2 (en) 2013-12-30 2016-12-06 Michael Henry Kass Providing memory system programming interfacing
US10216632B2 (en) 2013-12-30 2019-02-26 Michael Henry Kass Memory system cache eviction policies
US11126559B2 (en) 2013-12-30 2021-09-21 Michael Henry Kass Translation look-aside buffer and prefetch indicator
US20150186259A1 (en) * 2013-12-30 2015-07-02 Sandisk Technologies Inc. Method and apparatus for storing data in non-volatile memory
US10002080B2 (en) * 2013-12-30 2018-06-19 Michael Henry Kass Memory system address modification policies
US9910773B2 (en) 2016-03-29 2018-03-06 Sandisk Technologies Llc Method and system for compacting data in non-volatile memory

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0840223B1 (en) * 1996-10-31 2002-05-15 STMicroelectronics Limited Microcomputer capable of accessing an external memory
US6766519B1 (en) * 1999-03-26 2004-07-20 Emc Corporation Generic software interface for hardware environments having executing code registers itself and the code for a next suboperation
US6442656B1 (en) * 1999-08-18 2002-08-27 Ati Technologies Srl Method and apparatus for interfacing memory with a bus
US6629157B1 (en) * 2000-01-04 2003-09-30 National Semiconductor Corporation System and method for virtualizing the configuration space of PCI devices in a processing system
US6993032B1 (en) * 2000-06-29 2006-01-31 Intel Corporation Buffer arrangements to support differential link distances at full bandwidth
US7085933B2 (en) * 2002-06-11 2006-08-01 Lenvo (Singapore) Pte, Ltd. Computer system apparatus and method for improved assurance of authentication
US7080217B2 (en) * 2003-03-31 2006-07-18 Intel Corporation Cycle type based throttling
US7167947B2 (en) * 2004-03-15 2007-01-23 Intel Corporation Memory post-write page closing apparatus and method

Also Published As

Publication number Publication date
US20060129743A1 (en) 2006-06-15
FR2882602A1 (fr) 2006-09-01
US7600082B2 (en) 2009-10-06

Similar Documents

Publication Publication Date Title
JP2006155624A (ja) 仮想化ロジック
US11656916B2 (en) High-performance input-output devices supporting scalable virtualization
US7480755B2 (en) Trap mode register
TWI442322B (zh) 在虛擬環境中對中斷結束訊息之延遲處理
US7650275B2 (en) Virtualization of a parition based on addresses of an I/O adapter within an external emulation unit
US20190130270A1 (en) Tensor manipulation within a reconfigurable fabric using pointers
EP3292474B1 (en) Interrupt controller
US20200319893A1 (en) Booting Tiles of Processing Units
US10241829B2 (en) Information processing device, information processing method, recording medium, calculation processing device, calculation processing method
Cong et al. Architecture support for domain-specific accelerator-rich cmps
KR102493859B1 (ko) 듀얼 모드 로컬 데이터 저장
US11435958B2 (en) Shared memory mechanism to support fast transport of SQ/CQ pair communication between SSD device driver in virtualization environment and physical SSD
CN114008589A (zh) 用于在顺序处理器上进行多次执行的动态代码加载
US11366690B2 (en) Scheduling commands in a virtual computing environment
US7430502B2 (en) Using thermal management register to simulate processor performance states
US20050192788A1 (en) Simulating processor performance states
US20050071145A1 (en) Simulation apparatus, simulation program, and recording medium
US8539516B1 (en) System and method for enabling interoperability between application programming interfaces
TW202242638A (zh) 用於超標量處理器的指令派送
Bandara et al. Enabling VirtIO Driver Support on FPGAs
US7660939B2 (en) Operating system arrangement for flexible computer system design
TW201432461A (zh) 在受控代碼中實現的高流通量低延遲使用者模式驅動程式
Holland Abstracting OpenCL for multi-application workloads on CPU-FPGA clusters
Rezaei Field programmable gate array (fpga) accelerator sharing
Crutcher et al. Operating System

Legal Events

Date Code Title Description
A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20070322