JP2005056019A - 情報処理装置 - Google Patents
情報処理装置 Download PDFInfo
- Publication number
- JP2005056019A JP2005056019A JP2003206759A JP2003206759A JP2005056019A JP 2005056019 A JP2005056019 A JP 2005056019A JP 2003206759 A JP2003206759 A JP 2003206759A JP 2003206759 A JP2003206759 A JP 2003206759A JP 2005056019 A JP2005056019 A JP 2005056019A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- privileged
- register
- exception
- cpu
- 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.)
- Pending
Links
Images
Abstract
【課題】計算機中に論理的な区画を設け、各区画に独立してゲストOSを稼動させる論理分割方式において、OS種別によらずユーザレベルでの実行の際に特権命令例外を発生させない特権命令のエミュレーション漏れを防ぐ。
【解決手段】命令読み込み時のキャッシュミスに伴う命令リード要求に対する応答データをチップセット130によりデコードするか、あるいは命令パターンレジスタ506と比較することにより、ユーザレベルでの命令実行の際に特権命令例外を発生させない特権命令を検出し、ユーザレベルでの命令実行により特権命令例外を生じる特権命令、あるいはエミュレーションルーチンへの分岐命令に置き換えることにより、ホストでのエミュレーションを可能とする。
【選択図】 図1
【解決手段】命令読み込み時のキャッシュミスに伴う命令リード要求に対する応答データをチップセット130によりデコードするか、あるいは命令パターンレジスタ506と比較することにより、ユーザレベルでの命令実行の際に特権命令例外を発生させない特権命令を検出し、ユーザレベルでの命令実行により特権命令例外を生じる特権命令、あるいはエミュレーションルーチンへの分岐命令に置き換えることにより、ホストでのエミュレーションを可能とする。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、計算機に複数の論理的な区画を生成する技術に関係し、各論理区画において独立に稼動するオペレーティングシステムを正常に稼動させるための技術に関係する。
【0002】
【従来の技術】
近年の計算機性能の向上により、従来複数のサーバに分散していた処理を一つのサーバに集約しコストを削減する動きが多く見られる。このような集約に際して有効となる手段が、一つのサーバ上で複数のオペレーティングシステムを稼動させる区画方式である。区画方式は、従来のサーバを一つの区画に対応させることによって、サーバ移行をスムーズに行うことを可能とすることができる。
【0003】
上記のニーズに対し、従来の計算機では、計算機中に区画を物理的に設ける物理分割方式によって、複数のオペレーティングシステムを稼動させていた。物理分割方式では、CPU性能やメモリ容量等の計算機資源を物理的なCPUやメモリ毎にしか割当できない。CPUやメモリの高性能化・大容量化が急速に進展する状況においては、物理区画に従来の1つのサーバを割当てると性能・容量的に余剰を生じるため無駄が多かった。
【0004】
そこで、物理的なCPUやメモリを仮想化し、計算機中に任意の数の論理的な区画を生成する論理分割方式が注目を集めている。論理分割方式はハイパバイザと呼ばれるファームウェアによって実現される。論理分割方式において稼動するオペレーティングシステムをゲストと呼び、ハイパバイザをホストと呼ぶ。各ゲストは、ユーザレベルで実行され、ホストのみが特権命令の実行を担当する。各ゲストはオペレーティングシステムであるため、通常は特権命令の実行も行うが、プロセッサの実行モードがユーザレベルであるため特権命令例外を発生させ、該例外をホストがトラップすることによって、各ゲストに応じた特権命令のエミュレーションを実施する。このエミュレーションのためにホスト側では、特権命令が使用するレジスタ等をホスト側のデータ領域に設定し、特権命令を実行した論理区画毎に正しくエミュレーションデータをアクセスするようにしている。
【0005】
しかし、論理分割方式のゲストによる特権命令実行時のホストによるトラップにおいて、一部の特権命令はユーザレベルで実行可能なケースがあるため、全ての特権命令をトラップできないという問題がある。この問題は、ホスト側で管理しているデータと物理的にCPU中に存在するレジスタの値が不一致を生じるため、このような特権命令を実行した後では正しくゲストを稼動させられない。
【0006】
この問題に対し、特許文献1においては、実行プログラム中に処理装置が実行機能を提供しない非実装命令が含まれていても実行可能な命令に展開しながらキャッシュロードする手法が提案されている。
【0007】
【特許文献1】
特開平5−73301号公報(第2頁、図1)
【0008】
【発明が解決しようとする課題】
上記従来技術では、プロセッサが実行機能を提供しない非実装命令を実行可能な命令に展開する手法であり、本発明が対象とする論理分割方式における特権命令はプロセッサに実装されている命令であるため上記従来技術では機能しないという問題がある。また、プロセッサに実装されていない命令が、実装されている命令の1命令に相当しない場合、複数の命令でエミュレーションする必要があり、命令列の配置場所(アドレス)がずれるという問題がある。
【0009】
本発明の目的は、上記の従来の問題を踏まえて、プロセッサに実装されている命令であり、ユーザレベルで実行される場合に特権命令例外を発生させない特権命令に関して、ホスト側に制御を移すことである。
【0010】
【課題を解決するための手段】
上記目的を達成するために本発明の教法処理装置では、プロセッサの命令キャッシュミス時に生じる命令読み込みを契機として、主記憶上の命令データを読み出し、プロセッサの命令キャッシュへと格納される。CPUと主記憶を接続するチップセットにおいて、前記の命令キャッシュ格納の際に、命令データをデコードあるいはチップセット内に設置されるレジスタとの比較を行い、該命令データ中にユーザレベルで実行され、かつ、特権命令例外を起こさない特権命令を、ユーザレベルの実行で特権命令例外を起こす特権命令に置き換える。これにより、プロセッサが命令キャッシュ中の前記の置き換えた特権命令実行時に例外が発生し、制御がゲストからホストに移行させることが可能となる。
【0011】
なお、上記の特権命令の置き換えについては、ユーザレベル実行で特権命令例外に置き換えるのではなく、ホストが管理する主記憶領域に配置されるエミュレータへの分岐命令に置き換えてもよい。
【0012】
【発明の実施の形態】
以下では、図面を用いて本発明の実施例を示す。
【0013】
〈実施例1〉(特権命令の置き換え)
図1に本発明で想定する計算機システムの典型的な構成例を示す。図1ではCPU‐チップセットインタフェース120に接続されるCPUを101,102の2つとしているが、1以上のCPU数であれば幾つでも構わない。
【0014】
また、図1ではチップセット130が1つの構成を示している。図1の構成をノードと呼び、複数のノードから構成される計算機システムであっても良い。チップセット130は図1に示すとおりCPU101,102と主記憶装置140およびIOデバイスインタフェース150を接続する機能を持ち、CPU‐チップセットインタフェース120、あるいはIOデバイスインタフェース150を介して主記憶装置140に対するアクセス要求を受付、該要求に含まれるアドレスとアクセス種別に応じて主記憶装置140の読み出し、あるいは書き込みを行う。なお、本実施例ではIOデバイスインタフェース150に接続される起動ディスクやBIOS(Basic I/O System)等のIOデバイスは本発明に影響しないため、図1には明記していない。
【0015】
図1中のCPU101,102は、111,112に示すようにそれぞれのCPU毎にキャッシュメモリを備えており、CPU101,102での命令実行に際してデータ、あるいは命令自体がキャッシュメモリ111,112に存在しない場合、キャッシュミスとしてチップセット130へ主記憶読み出し要求を行う。主記憶読み出し要求には、CPU101,102で必要とされるアドレスと、データ読み出しか命令読み出しのいずれの種類かを示すフィールドが用意されている。
【0016】
図2は、本発明の一実施例による論理分割方式を示したものである。ハードウェア200は図1で示される計算機システムを表している。ファームウェア201は、ハードウェア200上で動作するプログラムであって、ハードウェア200を仮想化し論理的な区画に分割されたハードウェアとして、ゲストOS211,212に見せかける。なお、図2のゲストOS211,212は2つの例を示しているが、ゲストOS数は幾つであっても構わない。
【0017】
ゲストOSとは、通常のWindows(登録商標)やLinuxやHPUX等のOSそのものを指す。ここで、通常使用時のOSはハードウェア資源全ての管理を行うが、本実施例ではファームウェアにより提供される論理的に区画分割された仮想的なハードウェアの管理を行うため、通常OSと区別するためにゲストOSと呼んでいる。また、通常OSは特権モードで動作するが、論理分割方式ではユーザモードでゲストOSを走行させる。
【0018】
図2中のファームウェア201は、特権モードで実行されるものであって、ファームウェア201が使用するハードウェア中の主記憶装置140の一部にシャドウデータ220を保持している。シャドウデータとは、ゲストOS211,212が使用するデータのことである。ゲストOS211,212は同一のCPUを時分割で利用するため、ゲストOS211,212を切り替える際に、切り替え前のCPU内部のレジスタ群の値をコンテクストとしてシャドウ領域に保存し、切り替え後のゲストOS211,212のコンテクストをCPUにセットし、実行を再開する。
【0019】
さらに、ゲストOS211,212による特権命令実行時には、該特権命令が使用するレジスタとしてCPU内部の物理的なレジスタではなく、シャドウデータ220に用意されるデータを用いる。ゲストOS211,212は前述の通りユーザモードで実行される。このため、ゲストOS211,212中の特権命令が実行されると特権命令例外によってファームウェア201に制御が移行し、この制御の移行によってシャドウデータ220を用いて該特権命令のエミュレーションが実施される。
【0020】
しかし、ゲストOS211,212中の特権命令の中には、ユーザレベルで実行しても特権命令例外を起こさない命令が存在するため、上記のシャドウデータ220とCPU内の物理的な資源との間で不一致が生じ、エミュレーションが正しく行われない場合がある。
【0021】
本実施例では、上記のシャドウデータ220とCPU内のレジスタの値との不一致を避け、正しくエミュレーションを実行できるようにする。このため、本実施例ではチップセット130に図3に示すような機構を設けている。
【0022】
図3では図1に示したCPU‐チップセットインタフェース120をより詳細にアドレスインタフェース121とデータインタフェース122に分離し、以降の説明を行う。アドレスインタフェース121はCPU101,102におけるキャッシュミス等による主記憶読み出し時に、該キャッシュミスのアドレスをチップセット130に伝達するのに使用し、データインタフェース122はCPU101,102からのライトデータをチップセット130が受け取る、あるいはキャッシュミスによる主記憶読み出し時のデータをCPU101,102に伝達するのに使用される。
【0023】
チップセット130はアドレスインタフェース121を介して、命令リード時のキャッシュミスに伴う主記憶読み出し要求(以下、命令リード要求)をCPUインタフェース部310が受信する。CPUインタフェース部310において、該命令リード要求のデコードを実施し、命令リード要求の宛先が主記憶である場合、メモリインタフェース部320へ転送する。メモリインタフェース部320では、受け付けた命令リード要求のアドレスを基にデコードを行い、アクセスする対象のメモリアドレスを算出し、該メモリアドレスによって主記憶からの読み出しを行う。
【0024】
主記憶はチップセット130からの読み出し要求とアドレスに基づいてメモリからの読み出しを実施し、データをチップセット130に応答する。チップセット130では、命令リード要求に対する応答データのデコードを命令デコード機構330で実施する。
【0025】
命令デコード機構330は、命令リードによって主記憶から読み出されたデータを、CPU101,102が解釈し実行する命令としてデコードを行い、ユーザレベルで実行しても特権例外を発生させない特権命令を含むか否かの判定を行う。前記判定に基づいてメモリインタフェース部320では、ユーザレベル実行時に例外を発生させない特権命令があれば、該命令をユーザレベルで実行した場合特権命令例外を発生させる命令に置き換える。
【0026】
例えばCPUとしてIntel社のIPF(Itanium Processor Family)を用いた場合では、上記のユーザレベルで実行しても特権例外を発生させない特権命令としては次に示す命令が挙げられる。IPFにおいてユーザレベルで特権命令例外を起こさない命令として挙げられるのは(1) cover命令、(2) epc命令、(3)probe命令、(4) PMDレジスタへのアクセス等である。
【0027】
図4に命令デコード機構330の処理手順を示す。主記憶への読み出し要求が命令リード要求の場合(ステップ400)、上記の命令が主記憶から読み出したデータに含まれているか判断し(ステップ401)、含まれている場合にはbreak命令等のユーザレベル実行時に例外を発生させる特権命令に置き換えて、CPUインタフェース部310に転送する(ステップ402)。ステップ400において、読み出し要求が命令読み出しでない場合は、読み出したデータをそのままCPUインタフェース部310に転送する(ステップ403)。
【0028】
これによって、全ての特権命令のエミュレーションをファームウェア(ホスト)で実施可能となるため、如何なるOSでもゲストOSとしてサポートが可能となる。
【0029】
〈実施例2〉(エミュレータへの分岐)
本実施例は実施例1の変形例であり、図3の命令デコード機構330を次のように変更した実施の形態例を示す。
【0030】
実施例1では、命令デコード機構330は、チップセット130に接続されるCPU毎の実装方法によってユーザレベルでの実行の際に特権例外を起こさない特権命令の動作が変更される、また逆に従来のCPUではユーザレベルでの実行で特権例外を起こしていた特権命令が次世代CPUでは特権例外を起こさない可能性がある。
【0031】
実施例1で示した命令デコード機構330は、主記憶から読み出した命令データをデコード回路でデコードして判定を実施するため、上記の状況に対して対処するためにはデコード回路を変更する必要がある。そこで本実施例では、実施例1のデコード回路によるデコードの代わりに、置き換えるべき命令パターンを保持すためのレジスタとの比較により特権命令例外を起こす命令か否かを判定する手段を示す。なお、該レジスタはプログラムによって内容を変更可能とすることによって、CPUの仕様変更時にも対処可能となる。
【0032】
図5に本実施例による命令デコード機構を示す。本実施例の命令デコード機構には、特権命令例外を起こさない可能性のある命令パターンを保持する複数の命令パターンレジスタ506と、該命令パターンと一致する命令を置き換える値を保持する置き換え命令パターンレジスタ505を保持している。図5では主記憶から読み出した命令データ501を64Bとし、命令は16B境界毎に配置されているとする。また、16B中に3つの命令が格納されている命令形式502であることを示している。
【0033】
読み出した命令データ501は命令パターンレジスタ506に保持されている個々の命令と比較され、一致する場合のみ、置き換え命令パターンレジスタ505に保持されている命令との置き換えを実施する。また命令形式502の命令中にあるテンプレートも命令置き換えに伴い再計算を行う。このようにして命令データ501の他の16Bも命令置き換え判定を実施し、CPUインタフェース部504へのデータを生成し、CPUインタフェース部504へ転送する。CPUインタフェース部504ではデータをCPUへと応答する。
【0034】
なお、本実施例の変形例として、置き換え命令パターンの保持方法について以下の2通りの変形例が考えられる。
(1) 置き換え命令パターンが固定的でレジスタ不要な変形例
例えば、命令パターンレジスタに一致するデータである場合には、該データについてbreak命令を示すデータと置き換える等である。
(2) 命令パターンレジスタ毎に夫々異なるデータパターンに置き換える変形例命令パターンレジスタ毎に、どのようなデータパターンに置き換えるかを各レジスタに記録する等である。
【0035】
次に命令パターンレジスタを使った比較方法について説明する。実施例1と同様にCPUから発せられる命令読み出し時のキャッシュミスに基づく命令読み出し要求時に、主記憶から読み出した命令データを、前記の命令パターンレジスタ506と比較される。この際、命令データは一定のブロック単位で読み出されるため、命令境界毎に一定長のデータと命令パターンレジスタ506の値の比較を行う。
例えば、実施例1と同様にIntel社のIPFでは上記のブロックは64Bであり、命令境界は16Bに当たる(図5中の501と502参照)。また、一定長のデータは前記16B内の先頭5bitを除いた41bitに当たる(図5中の502参照)。
【0036】
また、前述の命令パターンレジスタ506との比較については、命令パターンレジスタ506の全ての値と比較は行わない。これは、命令パターンレジスタ506のオペランド部分のみや、オペコード部分が特定のパターンのみを扱うことに起因している。したがって、図6に示すように命令パターンレジスタ506中で1を有するbitのみを比較対象とし、0を有するbitは比較対象としない。
【0037】
〈実施例3〉
本実施例は実施例1の変形例であり、図3の命令デコード機構330とメモリインタフェース部320での命令置き換えの内容を以下のようにした実施の形態例を示す。
【0038】
実施例1では、ユーザモードでの実行時に特権命令例外を起こさない特権命令を、ユーザモード実行時に特権命令例外を起こす特権命令へと置き換えることで、ファームウェアで該例外をトラップしエミュレーションを行うようにしていた。本実施例では、これをファームウェア中のエミュレーションルーチンへの分岐命令に置き換えるようにする。上記のエミュレーションルーチンへの分岐に関する分岐先アドレスは、エミュレーション対象となる命令種別に応じて予めきめられたアドレスを使用する。
【0039】
なお、本実施例のようにゲストOSの命令コード中の特権命令を分岐命令に置き換えた場合、一般にエミュレーションルーチンでは、単一の特権命令の機能を複数の命令で実現するため、該特権命令が使用するレジスタより多くのレジスタを作業用に用いなければならない。ゲストOSの実行において、該置き換え対象の特権命令に至るまでの命令実行の過程で未使用レジスタがなければ、上記のエミュレーションルーチンを実現することができない。したがって、本実施例の適用対象は、特権レジスタの値を汎用レジスタに移動する命令のみとする。この限定により、移動先の汎用レジスタを作業用レジスタとして使用可能となる。
【0040】
本実施例のように特権命令例外を起こさずに、分岐命令によってエミュレーションルーチンの実行をおこなうことによって、プロセッサのモード変更や、命令同期の処理、割り込みハンドラでのステータス退避・回復処理が不要になるためエミュレーションの高速化が可能となる。
【0041】
〈実施例4〉
本実施例は実施例2の変形例であり、実施例2における命令デコード機構とメモリインタフェース部での命令置き換えの内容を以下のようにした実施の形態例を示す。
【0042】
実施例2では、ユーザモードでの実行時に特権命令例外を起こさない特権命令を、ユーザモード実行時に特権命令例外を起こす特権命令へと置き換えることで、ファームウェアで該例外をトラップしエミュレーションを行うようにしていた。本実施例では、これをファームウェア中のエミュレーションルーチンへの分岐命令に置き換えるようにする。
【0043】
図7に本実施例における、命令パターンレジスタを示す。置き換える対象の命令パターン701に加えて、該パターンと一致する場合に分岐するエミュレーションルーチンのアドレス702を保持している。
【0044】
命令デコード機構で、該命令パターンレジスタとの比較の結果一致するデータを持つ命令は、該レジスタ中のエミュレーションルーチンのアドレスへの分岐命令と置き換えることにより、前述の命令置き換えを実現する。
【0045】
なお、適用対象となる特権命令は作業用レジスタの関係から、実施例3と同様に特権レジスタから汎用レジスタへの移動命令のみを対象とする。効果についても実施例3と同様である。
【0046】
【発明の効果】
ユーザモードでの実行時に特権命令例外を起こさない特権命令を、ユーザモードでの実行時に特権命令例外を起こす特権命令、または、エミュレーションルーチンへの分岐命令と置き換えて特権命令エミュレーションを行うことによって、計算機内に論理的な区画を持ちそれぞれの区画で独立してゲストOSを走行させることを可能とする。
【図面の簡単な説明】
【図1】本発明で想定する計算機システムの構成例を示す図である。
【図2】本発明の一実施例による論理分割方式の概要を説明する図である。
【図3】本発明の一実施例によるチップセットの内部構成を示す図である。
【図4】本発明の一実施例による命令デコード機構の処理を示すフローチャートである。
【図5】本発明の他の実施例による命令デコード機構の構成図である。
【図6】本発明の他の実施例による命令パターンレジスタの比較対象を示す図である。
【図7】本発明の他の実施例による命令パターンレジスタの構成を示す図である。
【符号の説明】
101,102…CPU
111,112…キャッシュメモリ
120…CPU‐チップセットインタフェース
121…アドレスインタフェース
122…データインタフェース
130…チップセット
140…主記憶装置
150…IOデバイスインタフェース
200…ハードウェア
201…ファームウェア
211,212…ゲストOS
310…CPUインタフェース部
320…メモリインタフェース部
330…命令デコード機構
501…主記憶から読み出したデータ
502…IPFでの命令形式
503…置き換え判定後の命令
504…CPUインタフェース部へのデータ
505…置き換え命令パターンレジスタ
506…命令パターンレジスタ
507…テンプレート再計算回路
701…命令パターン
702…分岐先アドレス。
【発明の属する技術分野】
本発明は、計算機に複数の論理的な区画を生成する技術に関係し、各論理区画において独立に稼動するオペレーティングシステムを正常に稼動させるための技術に関係する。
【0002】
【従来の技術】
近年の計算機性能の向上により、従来複数のサーバに分散していた処理を一つのサーバに集約しコストを削減する動きが多く見られる。このような集約に際して有効となる手段が、一つのサーバ上で複数のオペレーティングシステムを稼動させる区画方式である。区画方式は、従来のサーバを一つの区画に対応させることによって、サーバ移行をスムーズに行うことを可能とすることができる。
【0003】
上記のニーズに対し、従来の計算機では、計算機中に区画を物理的に設ける物理分割方式によって、複数のオペレーティングシステムを稼動させていた。物理分割方式では、CPU性能やメモリ容量等の計算機資源を物理的なCPUやメモリ毎にしか割当できない。CPUやメモリの高性能化・大容量化が急速に進展する状況においては、物理区画に従来の1つのサーバを割当てると性能・容量的に余剰を生じるため無駄が多かった。
【0004】
そこで、物理的なCPUやメモリを仮想化し、計算機中に任意の数の論理的な区画を生成する論理分割方式が注目を集めている。論理分割方式はハイパバイザと呼ばれるファームウェアによって実現される。論理分割方式において稼動するオペレーティングシステムをゲストと呼び、ハイパバイザをホストと呼ぶ。各ゲストは、ユーザレベルで実行され、ホストのみが特権命令の実行を担当する。各ゲストはオペレーティングシステムであるため、通常は特権命令の実行も行うが、プロセッサの実行モードがユーザレベルであるため特権命令例外を発生させ、該例外をホストがトラップすることによって、各ゲストに応じた特権命令のエミュレーションを実施する。このエミュレーションのためにホスト側では、特権命令が使用するレジスタ等をホスト側のデータ領域に設定し、特権命令を実行した論理区画毎に正しくエミュレーションデータをアクセスするようにしている。
【0005】
しかし、論理分割方式のゲストによる特権命令実行時のホストによるトラップにおいて、一部の特権命令はユーザレベルで実行可能なケースがあるため、全ての特権命令をトラップできないという問題がある。この問題は、ホスト側で管理しているデータと物理的にCPU中に存在するレジスタの値が不一致を生じるため、このような特権命令を実行した後では正しくゲストを稼動させられない。
【0006】
この問題に対し、特許文献1においては、実行プログラム中に処理装置が実行機能を提供しない非実装命令が含まれていても実行可能な命令に展開しながらキャッシュロードする手法が提案されている。
【0007】
【特許文献1】
特開平5−73301号公報(第2頁、図1)
【0008】
【発明が解決しようとする課題】
上記従来技術では、プロセッサが実行機能を提供しない非実装命令を実行可能な命令に展開する手法であり、本発明が対象とする論理分割方式における特権命令はプロセッサに実装されている命令であるため上記従来技術では機能しないという問題がある。また、プロセッサに実装されていない命令が、実装されている命令の1命令に相当しない場合、複数の命令でエミュレーションする必要があり、命令列の配置場所(アドレス)がずれるという問題がある。
【0009】
本発明の目的は、上記の従来の問題を踏まえて、プロセッサに実装されている命令であり、ユーザレベルで実行される場合に特権命令例外を発生させない特権命令に関して、ホスト側に制御を移すことである。
【0010】
【課題を解決するための手段】
上記目的を達成するために本発明の教法処理装置では、プロセッサの命令キャッシュミス時に生じる命令読み込みを契機として、主記憶上の命令データを読み出し、プロセッサの命令キャッシュへと格納される。CPUと主記憶を接続するチップセットにおいて、前記の命令キャッシュ格納の際に、命令データをデコードあるいはチップセット内に設置されるレジスタとの比較を行い、該命令データ中にユーザレベルで実行され、かつ、特権命令例外を起こさない特権命令を、ユーザレベルの実行で特権命令例外を起こす特権命令に置き換える。これにより、プロセッサが命令キャッシュ中の前記の置き換えた特権命令実行時に例外が発生し、制御がゲストからホストに移行させることが可能となる。
【0011】
なお、上記の特権命令の置き換えについては、ユーザレベル実行で特権命令例外に置き換えるのではなく、ホストが管理する主記憶領域に配置されるエミュレータへの分岐命令に置き換えてもよい。
【0012】
【発明の実施の形態】
以下では、図面を用いて本発明の実施例を示す。
【0013】
〈実施例1〉(特権命令の置き換え)
図1に本発明で想定する計算機システムの典型的な構成例を示す。図1ではCPU‐チップセットインタフェース120に接続されるCPUを101,102の2つとしているが、1以上のCPU数であれば幾つでも構わない。
【0014】
また、図1ではチップセット130が1つの構成を示している。図1の構成をノードと呼び、複数のノードから構成される計算機システムであっても良い。チップセット130は図1に示すとおりCPU101,102と主記憶装置140およびIOデバイスインタフェース150を接続する機能を持ち、CPU‐チップセットインタフェース120、あるいはIOデバイスインタフェース150を介して主記憶装置140に対するアクセス要求を受付、該要求に含まれるアドレスとアクセス種別に応じて主記憶装置140の読み出し、あるいは書き込みを行う。なお、本実施例ではIOデバイスインタフェース150に接続される起動ディスクやBIOS(Basic I/O System)等のIOデバイスは本発明に影響しないため、図1には明記していない。
【0015】
図1中のCPU101,102は、111,112に示すようにそれぞれのCPU毎にキャッシュメモリを備えており、CPU101,102での命令実行に際してデータ、あるいは命令自体がキャッシュメモリ111,112に存在しない場合、キャッシュミスとしてチップセット130へ主記憶読み出し要求を行う。主記憶読み出し要求には、CPU101,102で必要とされるアドレスと、データ読み出しか命令読み出しのいずれの種類かを示すフィールドが用意されている。
【0016】
図2は、本発明の一実施例による論理分割方式を示したものである。ハードウェア200は図1で示される計算機システムを表している。ファームウェア201は、ハードウェア200上で動作するプログラムであって、ハードウェア200を仮想化し論理的な区画に分割されたハードウェアとして、ゲストOS211,212に見せかける。なお、図2のゲストOS211,212は2つの例を示しているが、ゲストOS数は幾つであっても構わない。
【0017】
ゲストOSとは、通常のWindows(登録商標)やLinuxやHPUX等のOSそのものを指す。ここで、通常使用時のOSはハードウェア資源全ての管理を行うが、本実施例ではファームウェアにより提供される論理的に区画分割された仮想的なハードウェアの管理を行うため、通常OSと区別するためにゲストOSと呼んでいる。また、通常OSは特権モードで動作するが、論理分割方式ではユーザモードでゲストOSを走行させる。
【0018】
図2中のファームウェア201は、特権モードで実行されるものであって、ファームウェア201が使用するハードウェア中の主記憶装置140の一部にシャドウデータ220を保持している。シャドウデータとは、ゲストOS211,212が使用するデータのことである。ゲストOS211,212は同一のCPUを時分割で利用するため、ゲストOS211,212を切り替える際に、切り替え前のCPU内部のレジスタ群の値をコンテクストとしてシャドウ領域に保存し、切り替え後のゲストOS211,212のコンテクストをCPUにセットし、実行を再開する。
【0019】
さらに、ゲストOS211,212による特権命令実行時には、該特権命令が使用するレジスタとしてCPU内部の物理的なレジスタではなく、シャドウデータ220に用意されるデータを用いる。ゲストOS211,212は前述の通りユーザモードで実行される。このため、ゲストOS211,212中の特権命令が実行されると特権命令例外によってファームウェア201に制御が移行し、この制御の移行によってシャドウデータ220を用いて該特権命令のエミュレーションが実施される。
【0020】
しかし、ゲストOS211,212中の特権命令の中には、ユーザレベルで実行しても特権命令例外を起こさない命令が存在するため、上記のシャドウデータ220とCPU内の物理的な資源との間で不一致が生じ、エミュレーションが正しく行われない場合がある。
【0021】
本実施例では、上記のシャドウデータ220とCPU内のレジスタの値との不一致を避け、正しくエミュレーションを実行できるようにする。このため、本実施例ではチップセット130に図3に示すような機構を設けている。
【0022】
図3では図1に示したCPU‐チップセットインタフェース120をより詳細にアドレスインタフェース121とデータインタフェース122に分離し、以降の説明を行う。アドレスインタフェース121はCPU101,102におけるキャッシュミス等による主記憶読み出し時に、該キャッシュミスのアドレスをチップセット130に伝達するのに使用し、データインタフェース122はCPU101,102からのライトデータをチップセット130が受け取る、あるいはキャッシュミスによる主記憶読み出し時のデータをCPU101,102に伝達するのに使用される。
【0023】
チップセット130はアドレスインタフェース121を介して、命令リード時のキャッシュミスに伴う主記憶読み出し要求(以下、命令リード要求)をCPUインタフェース部310が受信する。CPUインタフェース部310において、該命令リード要求のデコードを実施し、命令リード要求の宛先が主記憶である場合、メモリインタフェース部320へ転送する。メモリインタフェース部320では、受け付けた命令リード要求のアドレスを基にデコードを行い、アクセスする対象のメモリアドレスを算出し、該メモリアドレスによって主記憶からの読み出しを行う。
【0024】
主記憶はチップセット130からの読み出し要求とアドレスに基づいてメモリからの読み出しを実施し、データをチップセット130に応答する。チップセット130では、命令リード要求に対する応答データのデコードを命令デコード機構330で実施する。
【0025】
命令デコード機構330は、命令リードによって主記憶から読み出されたデータを、CPU101,102が解釈し実行する命令としてデコードを行い、ユーザレベルで実行しても特権例外を発生させない特権命令を含むか否かの判定を行う。前記判定に基づいてメモリインタフェース部320では、ユーザレベル実行時に例外を発生させない特権命令があれば、該命令をユーザレベルで実行した場合特権命令例外を発生させる命令に置き換える。
【0026】
例えばCPUとしてIntel社のIPF(Itanium Processor Family)を用いた場合では、上記のユーザレベルで実行しても特権例外を発生させない特権命令としては次に示す命令が挙げられる。IPFにおいてユーザレベルで特権命令例外を起こさない命令として挙げられるのは(1) cover命令、(2) epc命令、(3)probe命令、(4) PMDレジスタへのアクセス等である。
【0027】
図4に命令デコード機構330の処理手順を示す。主記憶への読み出し要求が命令リード要求の場合(ステップ400)、上記の命令が主記憶から読み出したデータに含まれているか判断し(ステップ401)、含まれている場合にはbreak命令等のユーザレベル実行時に例外を発生させる特権命令に置き換えて、CPUインタフェース部310に転送する(ステップ402)。ステップ400において、読み出し要求が命令読み出しでない場合は、読み出したデータをそのままCPUインタフェース部310に転送する(ステップ403)。
【0028】
これによって、全ての特権命令のエミュレーションをファームウェア(ホスト)で実施可能となるため、如何なるOSでもゲストOSとしてサポートが可能となる。
【0029】
〈実施例2〉(エミュレータへの分岐)
本実施例は実施例1の変形例であり、図3の命令デコード機構330を次のように変更した実施の形態例を示す。
【0030】
実施例1では、命令デコード機構330は、チップセット130に接続されるCPU毎の実装方法によってユーザレベルでの実行の際に特権例外を起こさない特権命令の動作が変更される、また逆に従来のCPUではユーザレベルでの実行で特権例外を起こしていた特権命令が次世代CPUでは特権例外を起こさない可能性がある。
【0031】
実施例1で示した命令デコード機構330は、主記憶から読み出した命令データをデコード回路でデコードして判定を実施するため、上記の状況に対して対処するためにはデコード回路を変更する必要がある。そこで本実施例では、実施例1のデコード回路によるデコードの代わりに、置き換えるべき命令パターンを保持すためのレジスタとの比較により特権命令例外を起こす命令か否かを判定する手段を示す。なお、該レジスタはプログラムによって内容を変更可能とすることによって、CPUの仕様変更時にも対処可能となる。
【0032】
図5に本実施例による命令デコード機構を示す。本実施例の命令デコード機構には、特権命令例外を起こさない可能性のある命令パターンを保持する複数の命令パターンレジスタ506と、該命令パターンと一致する命令を置き換える値を保持する置き換え命令パターンレジスタ505を保持している。図5では主記憶から読み出した命令データ501を64Bとし、命令は16B境界毎に配置されているとする。また、16B中に3つの命令が格納されている命令形式502であることを示している。
【0033】
読み出した命令データ501は命令パターンレジスタ506に保持されている個々の命令と比較され、一致する場合のみ、置き換え命令パターンレジスタ505に保持されている命令との置き換えを実施する。また命令形式502の命令中にあるテンプレートも命令置き換えに伴い再計算を行う。このようにして命令データ501の他の16Bも命令置き換え判定を実施し、CPUインタフェース部504へのデータを生成し、CPUインタフェース部504へ転送する。CPUインタフェース部504ではデータをCPUへと応答する。
【0034】
なお、本実施例の変形例として、置き換え命令パターンの保持方法について以下の2通りの変形例が考えられる。
(1) 置き換え命令パターンが固定的でレジスタ不要な変形例
例えば、命令パターンレジスタに一致するデータである場合には、該データについてbreak命令を示すデータと置き換える等である。
(2) 命令パターンレジスタ毎に夫々異なるデータパターンに置き換える変形例命令パターンレジスタ毎に、どのようなデータパターンに置き換えるかを各レジスタに記録する等である。
【0035】
次に命令パターンレジスタを使った比較方法について説明する。実施例1と同様にCPUから発せられる命令読み出し時のキャッシュミスに基づく命令読み出し要求時に、主記憶から読み出した命令データを、前記の命令パターンレジスタ506と比較される。この際、命令データは一定のブロック単位で読み出されるため、命令境界毎に一定長のデータと命令パターンレジスタ506の値の比較を行う。
例えば、実施例1と同様にIntel社のIPFでは上記のブロックは64Bであり、命令境界は16Bに当たる(図5中の501と502参照)。また、一定長のデータは前記16B内の先頭5bitを除いた41bitに当たる(図5中の502参照)。
【0036】
また、前述の命令パターンレジスタ506との比較については、命令パターンレジスタ506の全ての値と比較は行わない。これは、命令パターンレジスタ506のオペランド部分のみや、オペコード部分が特定のパターンのみを扱うことに起因している。したがって、図6に示すように命令パターンレジスタ506中で1を有するbitのみを比較対象とし、0を有するbitは比較対象としない。
【0037】
〈実施例3〉
本実施例は実施例1の変形例であり、図3の命令デコード機構330とメモリインタフェース部320での命令置き換えの内容を以下のようにした実施の形態例を示す。
【0038】
実施例1では、ユーザモードでの実行時に特権命令例外を起こさない特権命令を、ユーザモード実行時に特権命令例外を起こす特権命令へと置き換えることで、ファームウェアで該例外をトラップしエミュレーションを行うようにしていた。本実施例では、これをファームウェア中のエミュレーションルーチンへの分岐命令に置き換えるようにする。上記のエミュレーションルーチンへの分岐に関する分岐先アドレスは、エミュレーション対象となる命令種別に応じて予めきめられたアドレスを使用する。
【0039】
なお、本実施例のようにゲストOSの命令コード中の特権命令を分岐命令に置き換えた場合、一般にエミュレーションルーチンでは、単一の特権命令の機能を複数の命令で実現するため、該特権命令が使用するレジスタより多くのレジスタを作業用に用いなければならない。ゲストOSの実行において、該置き換え対象の特権命令に至るまでの命令実行の過程で未使用レジスタがなければ、上記のエミュレーションルーチンを実現することができない。したがって、本実施例の適用対象は、特権レジスタの値を汎用レジスタに移動する命令のみとする。この限定により、移動先の汎用レジスタを作業用レジスタとして使用可能となる。
【0040】
本実施例のように特権命令例外を起こさずに、分岐命令によってエミュレーションルーチンの実行をおこなうことによって、プロセッサのモード変更や、命令同期の処理、割り込みハンドラでのステータス退避・回復処理が不要になるためエミュレーションの高速化が可能となる。
【0041】
〈実施例4〉
本実施例は実施例2の変形例であり、実施例2における命令デコード機構とメモリインタフェース部での命令置き換えの内容を以下のようにした実施の形態例を示す。
【0042】
実施例2では、ユーザモードでの実行時に特権命令例外を起こさない特権命令を、ユーザモード実行時に特権命令例外を起こす特権命令へと置き換えることで、ファームウェアで該例外をトラップしエミュレーションを行うようにしていた。本実施例では、これをファームウェア中のエミュレーションルーチンへの分岐命令に置き換えるようにする。
【0043】
図7に本実施例における、命令パターンレジスタを示す。置き換える対象の命令パターン701に加えて、該パターンと一致する場合に分岐するエミュレーションルーチンのアドレス702を保持している。
【0044】
命令デコード機構で、該命令パターンレジスタとの比較の結果一致するデータを持つ命令は、該レジスタ中のエミュレーションルーチンのアドレスへの分岐命令と置き換えることにより、前述の命令置き換えを実現する。
【0045】
なお、適用対象となる特権命令は作業用レジスタの関係から、実施例3と同様に特権レジスタから汎用レジスタへの移動命令のみを対象とする。効果についても実施例3と同様である。
【0046】
【発明の効果】
ユーザモードでの実行時に特権命令例外を起こさない特権命令を、ユーザモードでの実行時に特権命令例外を起こす特権命令、または、エミュレーションルーチンへの分岐命令と置き換えて特権命令エミュレーションを行うことによって、計算機内に論理的な区画を持ちそれぞれの区画で独立してゲストOSを走行させることを可能とする。
【図面の簡単な説明】
【図1】本発明で想定する計算機システムの構成例を示す図である。
【図2】本発明の一実施例による論理分割方式の概要を説明する図である。
【図3】本発明の一実施例によるチップセットの内部構成を示す図である。
【図4】本発明の一実施例による命令デコード機構の処理を示すフローチャートである。
【図5】本発明の他の実施例による命令デコード機構の構成図である。
【図6】本発明の他の実施例による命令パターンレジスタの比較対象を示す図である。
【図7】本発明の他の実施例による命令パターンレジスタの構成を示す図である。
【符号の説明】
101,102…CPU
111,112…キャッシュメモリ
120…CPU‐チップセットインタフェース
121…アドレスインタフェース
122…データインタフェース
130…チップセット
140…主記憶装置
150…IOデバイスインタフェース
200…ハードウェア
201…ファームウェア
211,212…ゲストOS
310…CPUインタフェース部
320…メモリインタフェース部
330…命令デコード機構
501…主記憶から読み出したデータ
502…IPFでの命令形式
503…置き換え判定後の命令
504…CPUインタフェース部へのデータ
505…置き換え命令パターンレジスタ
506…命令パターンレジスタ
507…テンプレート再計算回路
701…命令パターン
702…分岐先アドレス。
Claims (7)
- 主記憶装置と、該主記憶装置の記憶内容の一部を保持するキャッシュメモリを備えたCPUと、該CPUと前記主記憶装置を接続し当該主記憶装置から読み出した命令のデコードを行う機能を備えたチップセットとをハードウェア資源とし、前記ハードウェア資源はファームウェアによって、独立したオペレーティングシステムで動作する複数の論理的な区画に分割され、該区画は命令の実行に際して実行すべき命令が前記キャッシュメモリに存在しない場合は前記チップセットを介して前記主記憶装置から命令を読み出し、前記チップセットは読み出した命令のデコードを行い、該命令が特権命令であり例外を発生しないと判断した場合は、該命令を例外を発生させる命令に置き換えて前記区画に送信することを特徴とする情報処理装置。
- 前記区画において特権命令例外が発生した場合は、該命令のエミュレーションを前記ファームウェアが行うことを特徴とする請求項1記載の情報処理装置。
- 前記チップセットは、前記主記憶装置から読み出した命令が特権命令であり例外を発生しないと判断した場合は、該命令のエミュレーションを行うルーチンへの分岐命令と置き換えて前記区画に送信することを特徴とする請求項1記載の情報処理装置。
- 主記憶装置と、該主記憶装置の記憶内容の一部を保持するキャッシュメモリを備えたCPUと、該CPUと前記主記憶装置を接続し、特権命令例外を起こさない可能性のある特権命令を保持する第1のレジスタと、変換後の命令を保持する第2のレジスタとを備えるチップセットとをハードウェア資源とし、前記ハードウェア資源はファームウェアによって、独立したオペレーティングシステムで動作する複数の論理的な区画に分割され、該区画は命令の実行に際して実行すべき命令が前記キャッシュメモリに存在しない場合は前記チップセットを介して前記主記憶装置から命令を読み出し、前記チップセットは読み出した命令を前記第1のレジスタに保持されている命令と比較し、一致する場合は前記第2のレジスタに保持されている命令に置き換えて前記区画に送信することを特徴とする情報処理装置。
- 前記区画において特権命令例外が発生した場合は、該命令のエミュレーションを前記ファームウェアが行うことを特徴とする請求項4記載の情報処理装置。
- 前記第2のレジスタは、変換後の命令として特権例外を起こす特権命令を保持することを特徴とする請求項4記載の情報処理装置。
- 前記第2のレジスタは、変換後の命令として前記第1のレジスタに保持された特権命令のエミュレーションを行うルーチンへの分岐命令を保持することを特徴とする請求項4記載の情報処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003206759A JP2005056019A (ja) | 2003-08-08 | 2003-08-08 | 情報処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003206759A JP2005056019A (ja) | 2003-08-08 | 2003-08-08 | 情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005056019A true JP2005056019A (ja) | 2005-03-03 |
Family
ID=34363503
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003206759A Pending JP2005056019A (ja) | 2003-08-08 | 2003-08-08 | 情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005056019A (ja) |
-
2003
- 2003-08-08 JP JP2003206759A patent/JP2005056019A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10191761B2 (en) | Adaptive dynamic selection and application of multiple virtualization techniques | |
US10318322B2 (en) | Binary translator with precise exception synchronization mechanism | |
KR100879825B1 (ko) | 이질적 리소스와의 명령어 세트 아키텍처-기반 시퀀서간통신 | |
US10176007B2 (en) | Guest code emulation by virtual machine function | |
US20180307636A1 (en) | Direct access to a hardware device for virtual machines of a virtualized computer system | |
KR102047558B1 (ko) | 가상 디스크 저장 기술 | |
US8296775B2 (en) | Efficient context switching of virtual processors by managing physical register states in a virtualized environment | |
US8612633B2 (en) | Virtual machine fast emulation assist | |
US7886293B2 (en) | Optimizing system behavior in a virtual machine environment | |
KR101673435B1 (ko) | 공동 설계 프로세서에서 격리된 실행 환경의 생성 | |
US8775748B2 (en) | Method and system for tracking data correspondences | |
US20140337846A1 (en) | On-the-fly replacement of physical hardware with emulation | |
RU2562372C2 (ru) | Активация/деактивация адаптеров вычислительной среды | |
US7558724B2 (en) | Operation region describing a virtual device | |
JP2007183952A (ja) | ゲストがメモリ変換されたデバイスにアクセスする方法及び装置 | |
US10445247B2 (en) | Switching between single-level and two-level page table translations | |
KR101640769B1 (ko) | 가상화 시스템 및 그것의 명령어 실행 방법 | |
US20160034300A1 (en) | Information processing devicing and method | |
US11928495B2 (en) | Virtual trusted platform modules | |
JP2004258840A (ja) | 仮想化されたi/oデバイスをもつ計算機システム | |
Dall et al. | Optimizing the Design and Implementation of the Linux {ARM} Hypervisor | |
JP2005056019A (ja) | 情報処理装置 | |
CN113474754A (zh) | 有条件退让给管理程序指令 | |
US20230161650A1 (en) | Method and apparatus for inter-process communication, and computer storage medium | |
CN114691297A (zh) | 一种信息读写方法、电子设备、分布式系统以及程序产品 |