JP5318197B2 - ホストデータ処理装置内におけるデバイスエミュレーションのサポート - Google Patents

ホストデータ処理装置内におけるデバイスエミュレーションのサポート Download PDF

Info

Publication number
JP5318197B2
JP5318197B2 JP2011510036A JP2011510036A JP5318197B2 JP 5318197 B2 JP5318197 B2 JP 5318197B2 JP 2011510036 A JP2011510036 A JP 2011510036A JP 2011510036 A JP2011510036 A JP 2011510036A JP 5318197 B2 JP5318197 B2 JP 5318197B2
Authority
JP
Japan
Prior art keywords
memory
data
stop
memory access
instruction
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
JP2011510036A
Other languages
English (en)
Other versions
JP2011523741A (ja
Inventor
スチュアート・デイヴィッド・ビルス
デイヴィッド・ヘナー・マンセル
リチャード・ロイ・グリセンスウェイト
Original Assignee
アーム・リミテッド
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 アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2011523741A publication Critical patent/JP2011523741A/ja
Application granted granted Critical
Publication of JP5318197B2 publication Critical patent/JP5318197B2/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/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
    • 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/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Advance Control (AREA)

Description

本発明は、データ処理システムに関する。より詳細には、本発明は、データ処理装置の仮想化をサポートするデータ処理システムに関する。
データ処理システムの仮想化をサポートするホストデータ処理システムを提供することが、知られている。ホストデータ処理システムと仮想データ処理システムとの間の差のスケールは、大幅に変動し得る。いくつかの例において、仮想データ処理システムは、基本的なプロセッサアーキテクチャが、ホストデータ処理装置と同じであるデータ処理装置の若干異なるバージョンまたは実装であり得る。別の例において、仮想データ処理装置は、ホストデータ処理装置と完全に異なるもの(例えば、RISCまたはCISCホストデータ処理装置によってエミュレートされた、スタックベースのJava(登録商標)仮想マシン)であり得る。
このような仮想化分野において、実際のハードウェアデバイスの錯覚をゲストオペレーティングシステムまたはゲストプログラムに付与できるよう、仮想デバイスをサポートする必要が往々にしてある。これらの仮想デバイスは実際には、ハイパーバイザソフトウェアによって提供される。デバイス(実際のデバイスおよび仮想デバイスの両方)をサポートするための好都合な方法として、これら双方のデバイスに対してメモリマッピングを行い、これらのデバイスへのアクセスを、メモリマッピング済みアドレスへのロードまたは記憶の形態とする方法がある。仮想データ処理装置の仮想デバイスのサポートにおいて、これらのメモリマッピング済みアドレスにある仮想デバイスへのアクセスをハイパーバイザソフトウェアへと経路設定して取り扱うことが必要になる。公知の技術では、当該メモリマッピング済み仮想デバイスを含む対応メモリ領域を「無効」または「アクセス無し」に設定することによりこれらのメモリ位置へのアクセスをトラップし、その結果得られた例外をハイパーバイザプログラムに経路設定する。
このアプローチにおける問題として、当該仮想デバイスへのアクセスをエミュレートするためには、当該アクセスを求めていた命令を復号化する必要がある点がある。一般的に例外をトリガするメモリ管理装置(MMU)も、通常は、当該アドレスと、例外扱いとされる当該アクセスと関連付けられた書き込み/読み出し情報とを提供する(かまたはその提供をトリガする)。実際の環境内においては、一般的には、メモリアクセスと関連付けられた例外の効率的処理が可能であれば十分であることが多い。
一態様から見れば、本発明は、仮想データ処理装置の仮想化をホストデータ処理装置によってサポートする方法を提供する。前記方法は、
プログラム命令のストリームを前記ホストデータ処理装置によって実行して、前記仮想データ処理装置による処理をエミュレートするステップと、
前記仮想データ処理装置のメモリマッピング済みデバイスに対応するメモリアドレスに対する、メモリアクセス動作を行おうとしているメモリアクセス命令の実行試行を検出回路により検出するステップと、
メモリ停止回路により、前記メモリアクセス動作を特徴付けるメモリ停止データをメモリ停止レジスタに書き込むステップであって、前記メモリ停止データは、前記メモリアクセス動作によってアクセスされた1つ以上のレジスタを示すデータを含む、ステップと、
前記ホストデータ処理装置によるメモリ停止取り扱いプログラム命令の実行により、メモリ停止例外をトリガするステップと、
を含み、
前記トリガするステップにより、
(i)前記メモリ停止レジスタから前記メモリ停止データを読み出し、
(ii)前記メモリ停止データを用いて前記メモリアクセス動作をエミュレートし、前記メモリ停止データは、前記メモリアクセス動作によってアクセスされた1つ以上のレジスタを示す前記データを含み、
(iii)前記プログラム命令のストリームの実行に戻り、
前記メモリ停止データは、前記メモリ停止例外をトリガした前記メモリアクセス命令に対して前記メモリ停止データが有効であるか否かを示す有効性データを含み、前記メモリ停止を特徴付ける前記データが前記メモリ停止例外に対して有効ではないと前記メモリ停止取り扱いプログラム命令が前記有効性データから決定した場合、前記メモリ停止取り扱いプログラム命令は、前記メモリアクセス命令を命令メモリから読み出し、前記メモリアクセス命令から、前記メモリアクセス動作をエミュレートするための1つ以上のパラメータを決定する
本技術が認識している点とは、仮想データ処理装置の仮想化をサポートする際、メモリアクセスのエミュレートを可能にするためには、停止の発生源となるメモリアクセスに関するさらなる情報が必要となり、また、このさらなる情報を入手するには不都合に時間がかかるということである。詳細には、公知のメカニズムを用いた場合、エミュレーションを進めるためには、メモリ停止の発生源となる命令を特定および復号化して、どのCPUレジスタがロードされているかまたは保存されているかを特定する必要がある。この特定作業を行うには、時間のかかる工程が多数必要となることが多い。すなわち、第1に、命令そのものを見つける必要があり、停止発生時に提供される命令のアドレスはゲストオペレーティングシステムアドレス空間内の仮想アドレスであることが多いため、このアドレスを(通常は2つ〜3つの翻訳ステップを介して)ハイパーバイザアドレス空間内の仮想アドレスに翻訳して、このアドレスを読み出し可能な状態にする必要がある。前記停止命令のアドレスを決定した後、前記命令の読み出しが可能となる。そのため、データキャッシュおよび命令キャッシュが別々になっているシステム(ハーバード)の場合、データの行方不明が発生し、この行方不明データを解消するために多数のサイクルが必要となることが多い。その後、当該命令を復号化する必要がある。多くのデータ処理装置において、命令がメモリにアクセスする方法は多種多様な方法があり、エミュレーションを進めるための、ソース/宛先レジスタおよびメモリアクセスの他の特性の特定のために受信された命令の復号化と関連する複雑度にも多様なレベルがある。
本技術は、これらの困難点を、ハードウェア効率の良い様式で認識および解消する。多くの場合、仮想デバイスへのアクセスのエミュレーションに必要な情報とは、メモリアクセス動作によってアクセスされる1つ以上のレジスタを特定する情報である(これらのレジスタは、ソースレジスタであるかまたは宛先レジスタである)。本技術は、メモリ停止回路を拡張して、このデータをメモリ停止レジスタ内に書き込む。実際、このレジスタ特定データは、メモリアクセス命令の通常動作において必要であるため、通常は既に存在し、必要なさらなるメカニズムが、この情報をメモリ停止レジスタに向けて整理し、このメモリ停止レジスタにおいて、仮想データ処理装置のメモリマッピング済みデバイスへのアクセス発生時に、この情報が記憶される。その後、停止取り扱いプログラム命令がこのレジスタ特定情報をメモリ停止レジスタから直接読み出し、この情報を用いて、前記メモリアクセス動作を比較的高速でエミュレートし、その際、当該レジスタ(単数または複数)を特定するために、当該メモリアクセスの発生源となった命令を読み出す必要はない。よって、本技術は、仮想データ処理装置の仮想化のためのハードウェアサポートと、このハードウェアサポートを用いて仮想デバイスの仮想化をより効率的にする技術とを提供する。
前記メモリ停止データは、メモリ停止をトリガしたメモリアクセス命令に対してメモリ停止データが有効であるか否かを示す有効性データをさらに含み得る。前記メモリ停止データが有効ではない場合、前記メモリ停止取り扱いプログラム命令は、このことを前記有効性データから決定することができ、その後、前記メモリ停止の発生源となったメモリアクセス命令を前記メモリから読み出すステップと、前記読み出された命令から直接メモリアクセス命令パラメータを決定するステップとに戻る。このようにして、ハードウェア設計者は、シンドロームデータを得るための十分に簡単な命令と、ハードウェアにおけるサポートの付加のためのハードウェアオーバーヘッドとして適していないより複雑な命令とを選択することができる。
前記メモリ停止データは、前記メモリアクセス動作によってアクセスされた1つ以上のレジスタを示すデータを越えるさらなる情報を含み得ることが、理解される。前記1つ以上のレジスタを示すデータにより、最も一般的な場合、仮想デバイスアクセスを容易にサポートすることができ、前記メモリ停止レジスタ内に記憶されたデータの拡張により、サポートされるアクセスの種類が拡張される。前記メモリ停止データは、当該メモリアクセス動作に用いられるデータワードのサイズ、当該動作が読み出し動作であるかまたは書き込み動作であるかを示すデータ、ソースレジスタまたは宛先レジスタを示すデータ、当該データワードに対し当該メモリアクセスの一部として符号拡張を行うか否かを示すデータ、および命令にアクセスしているメモリの命令サイズを示すデータを含むように、拡張することができる。
いくつかのメモリアクセス命令は、アクセスすべきメモリアドレスを示すアドレス値を記憶するベースレジスタを用い、前記命令は、更新を指定する。前記更新は、前記メモリアクセス命令の実行と関連付けられた値の発生時(例えば、インデキシング前またはインデキシング後)に行われる。前記有効性データをこのような命令と共に用いて、前記メモリアクセスを特徴付けるデータがベースレジスタ値を更新する命令に対して無効であることを示すことができ、これらの状況において、前記命令そのものをメモリから読み出しおよび復号化して、行うべき更新作業の性質を決定することができる。
前記メモリアクセスを特徴付けるデータが無効であることを示すために有効性データを使用することが可能な別のクラスの命令として、複数のロード/記憶命令(例えば、ARMプロセッサによって提供されるもの)がある。これらの種類の命令は、デバイスへのアクセスの際に用いられることは稀であるため、これらの命令のためのシンドロームレジスタを提供するために必要な大幅なハードウェアオーバーヘッドを用いても、正当化するのに十分な利点が得られないことが予想される。前記有効データを用いて、この種のメモリアクセスを特徴付けるデータが有効に提供されていないことを示すことができる。
別の実施形態において、更新レジスタを提供することができ、前記更新レジスタに更新データを書き込みことができる。この更新データは、ベースレジスタ内に記憶されたアドレス値の発生時に、メモリ停止の発生源となるメモリアクセス命令の実行と関連して行われるべき更新を特徴付ける。この更新レジスタは、メモリ停止取り扱いプログラム命令によって読み出し可能であり、仮想デバイスへのアクセスのエミュレーションの一部としてベースレジスタ内に記憶されているアドレス値の発生時に、この更新レジスタを用いて必要な更新を行うことができる。
仮想化のサポートは多様な様式で行うことができるが、本技術は、以下のような実施形態に適している。すなわち、ゲストオペレーティングシステムの制御下においてプログラム命令のストリームが実行され、これらのプログラム命令は、メモリ停止の発生源となるメモリアクセス命令を含み、前記ゲストオペレーティングシステムの実行は仮想データ処理装置によって行われ、前記仮想データ処理装置そのものは、ハイパーバイザプログラムの制御下においてホストデータ処理装置によってエミュレートされる。このような階層化形態の仮想化は当業者にはよく知られており、本技術が対処している仮想デバイスエミュレーションの遅さの問題に苦慮している。
仮想データ処理装置のメモリマッピング済みデバイスへのメモリアクセスを検出する機能を有する検出回路は、メモリ内のメモリアドレスへのアクセスの制御のためにページテーブルデータを用いるメモリ管理装置の形態をとり得る。このようなメモリ管理装置は典型的には他の理由のために設けられることが多く、このようなメモリ管理装置を再利用して、メモリマッピング済み仮想デバイスへのメモリアクセスのトラップを可能にすることができる。前記メモリマッピング済みデバイスによって用いられるページテーブルデータに対し、メモリアクセス命令がメモリマッピング済み仮想デバイスに対するメモリアクセス動作を行おうとしている場合に停止をトリガするための値を、プログラムすることができる。
別の態様から見れば、本発明は、仮想データ処理装置の仮想化のサポートを提供するデータを処理する装置を提供する。前記データ処理装置は、
前記仮想データ処理装置のメモリマッピング済みデバイスに対応するメモリアドレスに対する、メモリアクセス動作を行おうとしているメモリアクセス命令の実行試行に応答してメモリ停止をトリガする検出回路と、
前記メモリ停止に応答して、前記メモリアクセス動作を特徴付けるメモリ停止データをメモリ停止レジスタに書き込むメモリ停止回路であって、前記メモリ停止データは、前記メモリアクセス動作によってアクセスされた1つ以上のレジスタを示すデータを含む、メモリ停止回路と
を含み、
前記メモリ停止データは、前記メモリ停止例外をトリガした前記メモリアクセス命令に対して前記メモリ停止データが有効であるか否かを示す有効性データを含み、前記メモリ停止は、前記データ処理装置によって実行されるメモリ停止取り扱いプログラム命令によって取り扱われ、前記メモリ停止を特徴付ける前記データが前記メモリ停止例外に対して有効ではないと前記メモリ停止取り扱いプログラム命令が前記有効性データから決定した場合、前記メモリ停止取り扱いプログラム命令は、前記メモリアクセス命令を命令メモリから読み出し、前記メモリアクセス命令から、前記メモリアクセス動作をエミュレートするための1つ以上のパラメータを決定する
さらなる態様から見れば、本発明は、仮想データ処理装置の仮想化のサポートを提供するデータを処理する装置を提供する。前記データ処理装置は、
前記仮想データ処理装置のメモリマッピング済みデバイスに対応するメモリアドレスに対する、メモリアクセス動作を行おうとしているメモリアクセス命令の実行試行に応答して、メモリ停止をトリガする検出手段と、
前記メモリ停止に応答して、前記メモリアクセス動作を特徴付けるメモリ停止データをメモリ停止レジスタに書き込むメモリ停止手段であって、前記メモリ停止データは、前記メモリアクセス動作によってアクセスされた1つ以上のレジスタを示すデータを含む、メモリ停止手段と
を含み、
前記メモリ停止データは、前記メモリ停止例外をトリガした前記メモリアクセス命令に対して前記メモリ停止データが有効であるか否かを示す有効性データを含み、前記メモリ停止は、前記データ処理装置によって実行されるメモリ停止取り扱いプログラム命令によって取り扱われ、前記メモリ停止を特徴付ける前記データが前記メモリ停止例外に対して有効ではないと前記メモリ停止取り扱いプログラム命令が前記有効性データから決定した場合、前記メモリ停止取り扱いプログラム命令は、前記メモリアクセス命令を命令メモリから読み出し、前記メモリアクセス命令から、前記メモリアクセス動作をエミュレートするための1つ以上のパラメータを決定する
以下、本発明の実施形態について、ひとえに例示目的のために添付図面を参照して説明していく。
メモリマッピング済み仮想デバイスを含む仮想データ処理装置を模式的に示す。 仮想化をサポートするハードウェアメカニズムを含むホストデータ処理装置を模式的に示す。 メモリ停止レジスタおよび更新レジスタのコンテンツ例を模式的に示し、このようなコンテンツを用いて、メモリ停止の発生源となるメモリアクセス動作を特徴付けるデータを提供することができる。 メモリマッピング済み仮想デバイスに対するメモリアクセス動作のエミュレーションをサポートする技術を模式的に示すフロー図である。
図1は、仮想データ処理装置2を示す。仮想データ処理装置2は、メモリ6内に記憶されているプログラム命令のストリームを実行する仮想コア4を提供するものとみなすことができる。.メモリ6内のこれらの命令は、仮想データ処理装置2に対してネーティブである命令であり、ゲストオペレーティングシステム(ゲストオペレーティングシステムの実行もエミュレートされる)の制御下で実行する。仮想データ処理装置2は、メモリマッピング済み仮想デバイス8および10を含む。メモリマッピング済み仮想デバイス8および10は典型的には、仮想データ処理装置2に取り付けられたデバイスとのインターフェースを提供するために用いられる。これらのメモリマッピング済み仮想デバイスは、例えば、入力/出力ポートであってもよいし、DMAエンジンなどのデバイスであってもよい。
仮想化の分野において、関連付けられたメモリアドレスへのメモリアクセスをトラップした後にこれらのメモリアクセスをエミュレートすることにより、このようなメモリマッピング済みデバイス8および10をサポートすることが知られている。このような動作を行うには、通常、データ処理装置2によって実行されていたプログラム命令にアクセスするメモリを読み出すことが、エミュレーションを正確に行うことを可能にする十分な情報を当該プログラム命令から特定するために、必要である。このようなプログラム命令の読み出しおよび復号化は時間がかかりかつ不十分なプロセスであり得るため、仮想化動作の速度を大幅に減速させ得る。
図2は、ハイパーバイザプログラム14を実行するホストデータ処理装置12を模式的に示す。ハイパーバイザプログラム14自身は、ゲストオペレーティングシステムプログラム16と、図1に関連して説明したメモリアクセスの発生源となるゲストプログラム命令との実行をエミュレートする(かまたは少なくともサポートする)。ホストデータ処理装置12のアーキテクチャは、仮想データ処理装置2のアーキテクチャと同様であってよい(その場合、仮想化サポートは迅速かつ効率的になる)し、あるいは、仮想データ処理装置2のアーキテクチャを全く異なるものにしてもよい(その場合、仮想化サポートをより広範囲にする必要があるため、より低速かつ低効率になる)。
ホストデータ処理装置12は、プログラム命令を実行するプロセッサコア18を含む。キャッシュメモリ20(これは、ユニファイドまたはハーバードであり得る)が、メインメモリ22内からのデータおよび命令のローカルコピーを従来の様式で記憶するために、設けられる。メモリ管理装置24は、ページテーブルデータ26に応答して、プロセッサコア18によって行われるメモリアクセス動作を監視して、これらのメモリアクセス動作のうち、メモリ停止の発生源となるかもしれないメモリアクセス動作をすべて特定する。ページテーブルデータ26は、データ処理装置2のエミュレーションが行われている際に、当該仮想データ処理装置2のメモリアドレス空間内のメモリマッピング済み仮想デバイス8および10に対応する「無効」または「アクセス無し」のメモリアドレス領域としてマーク付けされるようにプログラムされる。よって、メモリ管理装置24は、当該仮想データ処理装置によって行われる処理をエミュレートするプロセッサコア18によるプログラム命令のストリームの実行時に発生する当該仮想データ処理装置のメモリマッピング済みデバイスに対応するメモリアドレスに対するメモリアクセス動作を検出する機能を持つ検出回路として機能する。メモリ管理装置24によって生成されたメモリ停止信号は、フォールトステータスレジスタ(メモリ停止レジスタ)28へと供給される。フォールトステータスレジスタ28は、この信号に応答して、プロセッサコア18からフォールトステータスレジスタ28へと供給された停止情報を記憶する。この停止情報は、前記メモリ停止の発生源となったメモリアクセス動作を特徴付ける多様な異なる情報を含む。前記メモリ停止はまた、割り込み処理ルーチンの処理もトリガする。この割り込み処理ルーチンは、フォールトステータスレジスタ28を読み出すメモリ停止取り扱いプログラム命令として機能し、その後、メモリマッピング済み仮想デバイスによって行われているメモリアクセス動作をエミュレートするよう機能する。フォールトステータスレジスタ28内に書き込まれたメモリ停止データは、当該停止の発生源となるメモリアクセスと関連付けられたコアレジスタ番号(単数または複数)(例えば、ARMアーキテクチャコアに関するR0〜R15のうち1つ以上)を含む。前記メモリアクセスは読み出し動作または書き込み動作であり得、そのため、前記レジスタ番号は、宛先レジスタ番号またはソースレジスタ番号であり得る。
図3は、フォールトステータスレジスタ28に書き込まれ得るメモリ停止データを模式的に示す。このメモリ停止データは、停止タイプを特定するデータと、当該メモリアクセスが読み出し動作であったかまたは書き込み動作であったかを示すフラグと、メモリ停止取り扱いプログラム命令が当該メモリ停止データを有効とみなすべきか否かを示すフラグと、当該メモリアクセスと関連付けられたレジスタのレジスタ番号を特定するデータと、当該メモリアクセスと関連付けられたデータアクセスサイズを特定するデータと、前記停止によるメモリアクセス命令の命令サイズを特定するデータと、前記データを符号拡張すべきか否かを特定するデータとを含む。異なる種類のメモリ停止データをさらにまたは代替的に提供し得ることが理解される。さらに図3中には、いくつかの実施形態において自由選択的に提供され得る更新レジスタ30も示されている。
当業者であれば理解するように、いくつかのメモリアクセス命令は、当該メモリアクセスのメモリアドレスの導出元であるアドレス値を記憶するベースレジスタを用いる。前記ベースレジスタ内に記憶される値を、メモリアクセス動作の一部として更新してもよい。一例として、前記ARMアーキテクチャ内において、プレインデキシングメモリアクセス命令およびポストインデキシングメモリアクセス命令がサポートされ、当該メモリアクセスプログラム命令の実行前または実行後のいずれかに、メモリアドレス値にインクリメントが付与される。このようなメモリアクセス命令が停止し、このメモリアクセス命令をエミュレートしようとする場合、当該エミュレーションにより、前記ベースレジスタ値に対して副作用も再生される点が重要である。ベースレジスタ値を更新するこのような副作用は、メモリマッピング済み仮想デバイスへアクセスする命令内において一般的ではないものの、実際に発生することがあるため、サポートが必要である。1つのサポート方法として、フォールトステータスレジスタ28内に有効フラグを供給することができ、当該メモリ停止データが有効であることを示すようにこのフラグが設定されていない場合、当該メモリ停止の発生源となったプログラム命令を読み出すことができ、当該プログラム命令の復号化から、ベースレジスタ値を更新する副作用を決定することができる。ベースレジスタ値への副作用が存在していた命令について停止がトリガされた場合、この命令については、フォールトステータスレジスタ28内の有効フラグはプロセッサコア18によって設定されない。有効フラグが設定されない命令の別の例として、複数ロード/記憶命令がある。メモリ停止データが有効である命令に対し、有効フラグが設定される。あるいは、更新レジスタ30を設けてもよく、メモリ停止発生時に、この更新レジスタ30内に、ベースレジスタ値に対して行う必要のあるあらゆる更新を特定するデータを書き込むことができる。この更新データは、ベースアドレス値を記憶しているベースレジスタの識別情報(例えば、レジスタ番号)および前記ベースレジスタ内に記憶されるべき新規値を示すデータまたは前記ベースレジスタに適用すべき変更を含み得る。更新レジスタ30の提供は自由選択であり、有効フラグを用いることにより、仮想化サポート時に発生するメモリ停止の大部分をメモリ停止レジスタ内の有効データ(FSR28)を用いて取り扱うことが可能になり、無効となる場合は稀であることが理解される。
このように、各特定の実装がメモリ停止データを提供するための命令および単に有効フラグをゼロに設定するための命令を決定することを可能にするアプローチにより、各実装がその特定の実装にとって適切な1組の命令を選択することが可能になり、ソフトウェアも同様に自動調節される(すなわち、ハードウェアから当該データが提供されない場合、ソフトウェアは、前記命令のルックアップのみを行う)。これは、命令サブセットを指定する代替的な方法と比較して大いに有利である。なぜならば、この別の方法の場合、当該データをアーキテクチャ内に提供しなければならず、その場合、全ての実装が当該データを提供しなければならないからである。
図4は、上記技術を模式的に示すフロー図である。ステップ32およびステップ34において、プロセッサコア18は、ゲストオペレーティングプログラム16の制御下で仮想データ処理装置2上で実行するプログラムをエミュレートするためのプログラム命令のストリームを実行する。ゲストオペレーティングプログラム16自身も、ハイパーバイザプログラム14によってエミュレートされる(かまたはサポートされる)。メモリ停止が発生すると、処理はステップ36へと進む。ステップ36において、プロセッサコア18は、メモリ停止データをフォールトステータスレジスタ28に書き込む。ステップ38において、割り込みサービスルーチンの実行を開始する。割り込みサービスルーチンは、メモリマッピング済み仮想デバイスへのメモリアクセスをエミュレートするメモリ停止取り扱いプログラム命令として機能する。ステップ40において、フォールトステータスレジスタ28内に保存されている前記メモリ停止データ内に有効フラグが設定されているか否かを決定する。有効フラグが設定されていない場合、処理はステップ41へと進む。ステップ41において、前記メモリ停止の発生源となった命令のアドレスを決定する。その後、処理はステップ42へと進む。ステップ42において、上述したような複数レベルのアドレス翻訳および起こり得る行方不明のキャッシュを介して、前記メモリ停止の発生源となった命令をメインメモリ22から読み出す。その後、ステップ43において、メモリから読み出された命令を復号化する。ステップ44において、ステップ42におけるプログラム命令の読み出しから導出されたデータを用いて、メモリマッピング済み仮想デバイスへのデバイスアクセスをエミュレートする。
前記有効フラグがフォールトステータスレジスタ28内に保存されている前記メモリ停止データが有効であると示す場合、処理はステップ40からステップ46へと進む。ステップ46において、前記メモリ停止データをフォールトステータスレジスタ28から読み出し、前記メモリ停止データをステップ44において用いて、メモリマッピング済み仮想デバイスへのメモリアクセスをエミュレートする。前記メモリ停止データは、図3中に示すデータ(例えば、ソース/宛先レジスタ番号、データアクセスサイズ、命令サイズ、符号拡張情報、書き込み/読み出し情報および停止タイプならびに自由選択的に更新されたアドレス情報)などのデータを含む。このようなデータは、更新レジスタ30内に保存され得、メモリ停止取り扱いプログラム命令の実行の一部として別個に読み出され得る。メモリマッピング済み仮想デバイスへのメモリアクセスのエミュレーションは、通常、前記メモリ停止の発生元となったプログラムストリームの実行へ戻ったときに、完了する。
2 仮想データ処理装置
12 ホストデータ処理装置
14 ハイパーバイザプログラム
16 ゲストオペレーティングシステムプログラム
18 プロセッサコア
20 キャッシュメモリ
22 メインメモリ
24 メモリ管理装置
26 ページテーブルデータ
28 フォールトステータスレジスタ(メモリ停止レジスタ)
30 更新レジスタ

Claims (19)

  1. 仮想データ処理装置の仮想化をホストデータ処理装置によってサポートする方法であって、
    前記仮想データ処理装置による処理をエミュレートするためにプログラム命令のストリームを前記ホストデータ処理装置によって実行するステップと、
    前記仮想データ処理装置のメモリマッピング済みデバイスに対応するメモリアドレスに対してメモリアクセス動作を行うためのメモリアクセス命令の実行試行を検出回路により検出するステップと、
    メモリ停止回路により、前記メモリアクセス動作を特徴付けるメモリ停止データをメモリ停止レジスタに書き込むステップであって、前記メモリ停止データは、前記メモリアクセス動作によってアクセスされた1つ以上のレジスタを示すデータを含む、ステップと、
    前記検出回路が前記メモリアクセス命令の実行試行を検出したことに伴いトリガしたメモリ停止例外に応じて、前記ホストデータ処理装置メモリ停止取り扱いプログラム命令行するステップと
    を含み、
    前記メモリ停止取り扱いプログラム命令を実行するステップにより、
    (i)前記メモリ停止レジスタから前記メモリ停止データを読み出し、
    (ii)前記メモリ停止データを用いて前記メモリアクセス動作をエミュレートし
    (iii)プログラム命令の前記ストリームの実行に戻り、
    前記メモリ停止データは、前記メモリ停止例外トリガされる原因となった前記メモリアクセス命令に対して前記メモリ停止データが有効であるか否かを示す有効性データを含み、前記メモリ停止取り扱いプログラム命令の実行により、前記メモリ停止データが前記メモリ停止例外に対して有効ではないと前記有効性データから決定した場合、前記メモリ停止取り扱いプログラム命令の実行により、前記メモリアクセス命令を命令メモリから読み出し、前記メモリアクセス命令から、前記メモリアクセス動作をエミュレートするための1つ以上のパラメータを決定する
    ことを特徴とする方法。
  2. 前記メモリ停止データは、
    前記メモリアクセス動作によるデータワードのサイズを示すデータ、
    前記メモリアクセス動作が読み出し動作であるかまたは書き込み動作であるかのデータ、
    前記メモリアクセス動作のための1つ以上のソースレジスタを示すデータ、
    前記メモリアクセス動作のための1つ以上の宛先レジスタを示すデータ、
    前記メモリアクセス動作によるデータワードを符号拡張すべきかを示すデータ、および
    前記メモリアクセス命令の命令サイズを示すデータ
    のうちの1つ以上を含む
    ことを特徴とする請求項1に記載の方法。
  3. 前記メモリアドレスを示すアドレス値を記憶するベースレジスタと、前記メモリアクセス命令の前記実行と関連付けられた前記アドレス値に対して行われるべき更新とを前記メモリアクセス命令が指定する場合、前記メモリ停止取り扱いプログラム命令の実行により、前記メモリアクセス命令を命令メモリから読み出し、前記メモリアクセス命令から、前記ベースレジスタ内の前記アドレス値に対して前記更新を行うための1つ以上のパラメータを決定する
    ことを特徴とする請求項1または2に記載の方法。
  4. 前記有効性データは、前記メモリ停止データが、前記ベースレジスタ内に記憶された前記アドレス値を更新することを引き起こすメモリアクセス命令に対して有効ではないことを示す
    ことを特徴とする請求項3に記載の方法。
  5. 前記メモリアドレスを示すアドレス値を記憶するベースレジスタと、前記メモリアクセス命令の前記実行と関連付けられた前記アドレス値に対して行われるべき更新とを前記メモリアクセス命令が指定する場合、前記方法は、前記メモリ停止回路により、前記アドレス値に対して行われるべき前記更新を特徴付ける更新データを更新レジスタに書き込むステップをさらに含む
    ことを特徴とする請求項1または2に記載の方法。
  6. 前記メモリ停止取り扱いプログラム命令の実行により、前記更新レジスタから前記ベースレジスタ内の前記アドレス値に対して前記更新を行うための1つ以上のパラメータを読み出す
    ことを特徴とする請求項5に記載の方法。
  7. プログラム命令の前記ストリームは、ゲストオペレーティングシステムの制御下で実行され、前記仮想データ処理装置による前記ゲストオペレーティングシステムの実行は、ハイパーバイザプログラムの制御下で前記ホストデータ処理装置によってエミュレートされる
    ことを特徴とする請求項1から6のうちのいずれか一項に記載の方法。
  8. 前記検出回路は、ページテーブルデータを用いて前記メモリ内のメモリアドレスへのアクセスを制御するメモリ管理装置である
    ことを特徴とする請求項1から7のうちのいずれか一項に記載の方法。
  9. 前記ページテーブルデータは、前記メモリマッピング済みデバイスに対応する前記メモリアドレスに対する前記メモリアクセス命令に基づいて前記メモリアクセス動作われようとしている場合に停止をトリガする値をマーク付けされるものである
    ことを特徴とする請求項8に記載の方法。
  10. 仮想データ処理装置の仮想化のサポートを提供するデータを処理する装置であって、
    前記仮想データ処理装置のメモリマッピング済みデバイスに対応するメモリアドレスに対しメモリアクセス動作を行うためのメモリアクセス命令の実行試行に応答してメモリ停止をトリガする検出回路と、
    前記メモリ停止に応答して、前記メモリアクセス動作を特徴付けるメモリ停止データをメモリ停止レジスタに書き込むメモリ停止回路であって、前記メモリ停止データは、前記メモリアクセス動作によってアクセスされた1つ以上のレジスタを示すデータを含む、メモリ停止回路と
    を含み、
    前記メモリ停止データは、メモリ停止例外トリガされる原因となった前記メモリアクセス命令に対して前記メモリ停止データが有効であるか否かを示す有効性データを含み、前記メモリ停止は、前記データ処理装置によって実行されるメモリ停止取り扱いプログラム命令によって取り扱われ、前記メモリ停止取り扱いプログラム命令の実行により、前記メモリ停止データが前記メモリ停止例外に対して有効ではないと前記有効性データから決定した場合、前記メモリ停止取り扱いプログラム命令の実行により、前記メモリアクセス命令を命令メモリから読み出し、前記メモリアクセス命令から、前記メモリアクセス動作をエミュレートするための1つ以上のパラメータを決定する
    ことを特徴とする装置。
  11. 前記メモリ停止データは、
    前記メモリアクセス動作によるデータワードのサイズを示すデータ、
    前記メモリアクセス動作が読み出し動作であるかまたは書き込み動作であるかのデータ、
    前記メモリアクセス動作のための1つ以上のソースレジスタを示すデータ、
    前記メモリアクセス動作によってアクセスされた1つ以上のレジスタを示すデータ、
    前記メモリアクセス動作によるデータワードを符号拡張すべきかを示すデータ、および
    前記メモリアクセス命令の命令サイズを示すデータ
    のうちの1つ以上を含む
    ことを特徴とする請求項10に記載の装置。
  12. 前記メモリアドレスを示すアドレス値を記憶するベースレジスタと、前記メモリアクセス命令の前記実行と関連付けられた前記アドレス値に対して行われるべき更新とを前記メモリアクセス命令が指定する場合、メモリ停止取り扱いプログラム命令の実行により、前記メモリアクセス命令を命令メモリから読み出し、前記メモリアクセス命令から、前記ベースレジスタ内前記アドレス値に対して前記更新を行うための1つ以上のパラメータを決定する
    ことを特徴とする請求項10または11に記載の装置。
  13. 前記有効性データは、前記ベースレジスタ内に記憶された前記アドレス値を更新することを引き起こすメモリアクセス命令に対し、前記メモリ停止データが有効ではないことを示す
    ことを特徴とする請求項12に記載の装置。
  14. 前記メモリアドレスを示すアドレス値を記憶するベースレジスタと、前記メモリアクセス命令の前記実行と関連付けられた前記アドレス値に対して行われるべき更新とを前記メモリアクセス命令が指定する場合、前記メモリ停止回路は、前記メモリ停止に応答して、前記アドレス値に対して行われるべき前記更新を特徴付ける更新データを更新レジスタに書き込む
    ことを特徴とする請求項10または11に記載の装置。
  15. メモリ停止取り扱いプログラム命令の実行により、前記更新レジスタから前記ベースレジスタ内の前記アドレス値に対する前記更新を行うための1つ以上のパラメータを読み出す
    ことを特徴とする請求項14に記載の装置。
  16. プログラム命令のストリームは、ゲストオペレーティングシステムの制御下で実行され、前記仮想データ処理装置による前記ゲストオペレーティングシステムの実行は、ハイパーバイザプログラムの制御下で前記データ処理装置によりエミュレートされる
    ことを特徴とする請求項10から15のうちのいずれか一項に記載の装置。
  17. 前記検出回路は、ページテーブルデータを用いて前記メモリ内のメモリアドレスへのアクセスを制御するメモリ管理装置である
    ことを特徴とする請求項10から16のうちのいずれか一項に記載の装置。
  18. 前記ページテーブルデータは、前記メモリマッピング済みデバイスに対応する前記メモリアドレスに対する前記メモリアクセス命令に基づいて前記メモリアクセス動作われようとしている場合に停止をトリガする値をマーク付けされるものである
    ことを特徴とする請求項17に記載の装置。
  19. 仮想データ処理装置の仮想化のサポートを提供するデータ処理のための装置であって、
    前記仮想データ処理装置のメモリマッピング済みデバイスに対応するメモリアドレスに対してメモリアクセス動作を行うためのメモリアクセス命令の実行試行に応答して、メモリ停止をトリガする検出手段と、
    前記メモリ停止に応答して、前記メモリアクセス動作を特徴付けるメモリ停止データをメモリ停止レジスタに書き込むメモリ停止手段であって、前記メモリ停止データは、前記メモリアクセス動作によってアクセスされた1つ以上のレジスタを示すデータを含む、メモリ停止手段と
    を含み、
    前記メモリ停止データは、メモリ停止例外トリガされる原因となった前記メモリアクセス命令に対して前記メモリ停止データが有効であるか否かを示す有効性データを含み、前記メモリ停止は、前記データ処理装置によって実行されるメモリ停止取り扱いプログラム命令によって取り扱われ、前記メモリ停止取り扱いプログラム命令の実行により、前記メモリ停止データが前記メモリ停止例外に対して有効ではないと前記有効性データから決定した場合、前記メモリ停止取り扱いプログラム命令の実行により、前記メモリアクセス命令を命令メモリから読み出し、前記メモリアクセス命令から、前記メモリアクセス動作をエミュレートするための1つ以上のパラメータを決定する
    ことを特徴とする装置。
JP2011510036A 2008-05-23 2009-03-23 ホストデータ処理装置内におけるデバイスエミュレーションのサポート Active JP5318197B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0809492.2 2008-05-23
GB0809492A GB2460280A (en) 2008-05-23 2008-05-23 Using a memory-abort register in the emulation of memory access operations
PCT/GB2009/000771 WO2009141574A1 (en) 2008-05-23 2009-03-23 Device emulation support within a host data processing apparatus

Publications (2)

Publication Number Publication Date
JP2011523741A JP2011523741A (ja) 2011-08-18
JP5318197B2 true JP5318197B2 (ja) 2013-10-16

Family

ID=39616061

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011510036A Active JP5318197B2 (ja) 2008-05-23 2009-03-23 ホストデータ処理装置内におけるデバイスエミュレーションのサポート

Country Status (11)

Country Link
US (1) US8180980B2 (ja)
EP (1) EP2281237B1 (ja)
JP (1) JP5318197B2 (ja)
KR (1) KR101533224B1 (ja)
CN (1) CN102037448B (ja)
AT (1) ATE523842T1 (ja)
GB (1) GB2460280A (ja)
IL (1) IL206725A (ja)
MY (1) MY152358A (ja)
TW (1) TWI437428B (ja)
WO (1) WO2009141574A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8301849B2 (en) * 2009-12-23 2012-10-30 Intel Corporation Transactional memory in out-of-order processors with XABORT having immediate argument
US9619345B2 (en) 2012-09-13 2017-04-11 International Business Machines Corporation Apparatus for determining failure context in hardware transactional memories
US9268598B2 (en) 2012-09-13 2016-02-23 International Business Machines Corporation Recording and profiling transaction failure source addresses and states of validity indicator corresponding to addresses of aborted transaction in hardware transactional memories
GB2543306B (en) * 2015-10-14 2019-05-01 Advanced Risc Mach Ltd Exception handling
EP3279796B1 (en) * 2016-08-02 2020-07-15 NXP USA, Inc. Resource access management component and method therefor
TWI666901B (zh) * 2018-03-27 2019-07-21 緯穎科技服務股份有限公司 資料傳輸方法與使用此方法的主機系統

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS593642A (ja) * 1982-06-30 1984-01-10 Fujitsu Ltd 制御レジスタ処理方式
US5907708A (en) * 1996-06-03 1999-05-25 Sun Microsystems, Inc. System and method for facilitating avoidance of an exception of a predetermined type in a digital computer system by providing fix-up code for an instruction in response to detection of an exception condition resulting from execution thereof
US5968119A (en) 1996-12-09 1999-10-19 Wall Data Incorporated Method of accessing information of an SNA host computer from a client computer using a specific terminal emulation
US6081887A (en) * 1998-05-13 2000-06-27 Compaq Computer Corporation System for passing an index value with each prediction in forward direction to enable truth predictor to associate truth value with particular branch instruction
US20020004897A1 (en) 2000-07-05 2002-01-10 Min-Cheng Kao Data processing apparatus for executing multiple instruction sets
GB2367651B (en) * 2000-10-05 2004-12-29 Advanced Risc Mach Ltd Hardware instruction translation within a processor pipeline
US6732241B2 (en) * 2001-09-07 2004-05-04 Hewlett-Packard Development Company, L.P. Technique for migrating data between storage devices for reduced power consumption
US6952754B2 (en) 2003-01-03 2005-10-04 Intel Corporation Predecode apparatus, systems, and methods
US7146474B2 (en) * 2003-03-12 2006-12-05 International Business Machines Corporation System, method and computer program product to automatically select target volumes for a fast copy to optimize performance and availability
US20050076186A1 (en) * 2003-10-03 2005-04-07 Microsoft Corporation Systems and methods for improving the x86 architecture for processor virtualization, and software systems and methods for utilizing the improvements
US20050246453A1 (en) * 2004-04-30 2005-11-03 Microsoft Corporation Providing direct access to hardware from a virtual environment
US7356456B1 (en) * 2004-11-12 2008-04-08 Paravirtual Corporation Computer storage exception handing apparatus and method for virtual hardware system
US20060168485A1 (en) * 2005-01-26 2006-07-27 Via Technologies, Inc Updating instruction fault status register
US7496495B2 (en) * 2005-05-12 2009-02-24 Microsoft Corporation Virtual operating system device communication relying on memory access violations
US7769983B2 (en) 2005-05-18 2010-08-03 Qualcomm Incorporated Caching instructions for a multiple-state processor
US9354927B2 (en) * 2006-12-21 2016-05-31 Vmware, Inc. Securing virtual machine data
US7711927B2 (en) 2007-03-14 2010-05-04 Qualcomm Incorporated System, method and software to preload instructions from an instruction set other than one currently executing
US7886115B2 (en) * 2007-07-13 2011-02-08 Hitachi Global Storage Technologies Netherlands, B.V. Techniques for implementing virtual storage devices

Also Published As

Publication number Publication date
EP2281237B1 (en) 2011-09-07
TWI437428B (zh) 2014-05-11
EP2281237A1 (en) 2011-02-09
TW200949535A (en) 2009-12-01
US20100094613A1 (en) 2010-04-15
MY152358A (en) 2014-09-15
GB2460280A (en) 2009-11-25
GB0809492D0 (en) 2008-07-02
CN102037448A (zh) 2011-04-27
JP2011523741A (ja) 2011-08-18
KR101533224B1 (ko) 2015-07-02
IL206725A0 (en) 2010-12-30
ATE523842T1 (de) 2011-09-15
WO2009141574A1 (en) 2009-11-26
CN102037448B (zh) 2014-04-02
US8180980B2 (en) 2012-05-15
IL206725A (en) 2014-04-30
KR20110019750A (ko) 2011-02-28

Similar Documents

Publication Publication Date Title
US11481384B2 (en) Apparatus and method for performing operations on capability metadata
US9218302B2 (en) Page table management
JP5608594B2 (ja) プレロード命令制御
JP7128206B2 (ja) 機能の使用を管理するための装置および方法
JP5318197B2 (ja) ホストデータ処理装置内におけるデバイスエミュレーションのサポート
US11119778B2 (en) Apparatus and method for controlling execution of instructions
KR20130098303A (ko) 정렬 제어
US8205032B2 (en) Virtual machine control structure identification decoder
JP2022505011A (ja) メモリ・アクセスを制御するための装置及び方法
US20110202729A1 (en) Executing atomic store disjoint instructions
JP6920286B2 (ja) 例外処理
JP2009134565A (ja) 仮想計算機システム及び仮想計算機システムの制御方法
JP7349437B2 (ja) メモリ・アクセスにおける保護タグ・チェックの制御
US11494190B2 (en) Circuitry and method for controlling a generated association of a physical register with a predicated processing operation based on predicate data state
US11216280B2 (en) Exception interception
JP2023512502A (ja) ケイパビリティベースの処理のための装置及び方法
CN113474754A (zh) 有条件退让给管理程序指令
TW202420076A (zh) 基於指令提取位址的區域識別符

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under article 34 pct

Free format text: JAPANESE INTERMEDIATE CODE: A529

Effective date: 20100902

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110511

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130226

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130523

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130611

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130709

R150 Certificate of patent or registration of utility model

Ref document number: 5318197

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250