JP2018531462A - 例外処理 - Google Patents

例外処理 Download PDF

Info

Publication number
JP2018531462A
JP2018531462A JP2018517424A JP2018517424A JP2018531462A JP 2018531462 A JP2018531462 A JP 2018531462A JP 2018517424 A JP2018517424 A JP 2018517424A JP 2018517424 A JP2018517424 A JP 2018517424A JP 2018531462 A JP2018531462 A JP 2018531462A
Authority
JP
Japan
Prior art keywords
data
exception
syndrome
triggers
program
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.)
Granted
Application number
JP2018517424A
Other languages
English (en)
Other versions
JP6920286B2 (ja
JP2018531462A6 (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 JP2018531462A publication Critical patent/JP2018531462A/ja
Publication of JP2018531462A6 publication Critical patent/JP2018531462A6/ja
Application granted granted Critical
Publication of JP6920286B2 publication Critical patent/JP6920286B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Microcomputers (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

データ処理システム(2)は、レジスタバンク(20)の所与のレジスタとのデータ値の転送を含む、例外をトリガする処理動作の試みられた実行を検出するための例外処理回路(26)を含む。このような例外をトリガする処理動作を検出すると、データ値を含むシンドロームデータが、例外をトリガする処理動作を特徴付けるシンドロームレジスタ(32)内に格納される。中断される書き込み命令の場合、例外の発生時に値がシンドロームレジスタ内に格納されてもよい。中断される読み出し命令の場合、データ値は、例外によりトリガされるコードをエミュレートすることにより、シンドロームレジスタ内に格納されてもよい。

Description

本開示は、データ処理システムの分野に関する。より具体的には、本開示は、データ処理システム内における例外処理に関する。
データ処理システムの動作中、データ中断、未定義の命令などの例外処理が遂行されることを必要とする例外状態が発生し得ることが知られている。このようなアクションが検出されると、例外処理プログラム命令の実行がトリガされ得る。
例外処理が発生する1つの状況は、仮想化されたシステムの文脈においてである。ハイパーバイザプログラムがゲストオペレーティングシステムおよびアプリケーションプログラムに仮想実行環境を提供している場合がある。ゲストオペレーティングシステムまたはアプリケーションプログラムは、ハイパーバイザにより例外としてトラップされ、次いでエミュレートされるデータアクセスを試みる場合がある。ハイパーバイザがデータアクセスをエミュレートし得るためには、ゲストシステムの状態へのアクセスを必要とする。しかしながら、一部の状況では、ゲストシステムがプライベートの/秘密の/セキュアなデータを含むため、ハイパーバイザがゲストシステムの状態にアクセスすることが許可されないことが、セキュリティ上の理由で望まれる場合がある。
本開示の少なくとも一部の実施形態は、データを処理するための装置であって、
複数のレジスタと、
複数のレジスタの所与のレジスタとのデータ値の転送を含む、例外をトリガする処理動作の試みられた実行を検出し、例外をトリガする処理動作を少なくとも部分的にエミュレートするために例外処理プログラム命令の実行をトリガするための、例外処理回路と、
例外をトリガする処理動作を特徴付け、かつ、データ値を含むシンドロームデータを格納するためのシンドロームデータストアと、
を備え、
例外処理回路が、シンドロームデータ内のデータ値を使用して、所与のレジスタとの転送を遂行する装置を提供する。
本開示の少なくとも一部の実施形態は、データを処理するための装置であって、
データを格納するための複数のレジスタ手段と、
複数のレジスタ手段の所与のレジスタ手段とのデータ値の転送を含む、例外をトリガする処理動作の試みられた実行を検出し、例外をトリガする処理動作を少なくとも部分的にエミュレートするために例外処理プログラム命令の実行をトリガするための、例外処理手段と、
例外をトリガする処理動作を特徴付け、かつ、データ値を含むシンドロームデータを格納するためのシンドロームデータ格納手段と、
を備え、
例外処理手段が、シンドロームデータ内のデータ値を使用して、所与のレジスタ手段との転送を遂行する装置を提供する。
本開示の少なくとも一部の実施形態は、データを処理する方法であって、
データを複数のレジスタ内に格納することと、
複数のレジスタの所与のレジスタ手段とのデータ値の転送を含む、例外をトリガする処理動作の試みられた実行を検出することと、
例外をトリガする処理動作を少なくとも部分的にエミュレートするために例外処理プログラム命令の実行をトリガすることと、
例外をトリガする処理動作を特徴付け、かつ、データ値を含むシンドロームデータを格納することと、
シンドロームデータ内のデータ値を使用して、所与のレジスタ手段との転送を遂行することと、
を含む方法を提供する。
これより、添付の図面を参照しながら、例示的な実施形態をただ単に例として説明する。
データ処理システムを概略的に例示する。 例外処理を概略的に例示する流れ図である。 仮想化プログラムおよびゲストプログラムを概略的に例示する図である。 2段式の仮想−物理アドレス変換を概略的に例示する。
図1は、相互接続回路6を介してメモリ8および1つ以上のメモリマップされた入出力デバイス10に接続されているプロセッサコア4を含むデータ処理システム2を概略的に例示する。メモリ8は、仮想化された環境内でプロセッサコア4を使用して実行されるゲストプログラムにとってプライベートなデータを格納する1つ以上のプライベート領域10を含む。メモリ8は、ゲストプログラムと仮想化された実行環境をゲストプログラムに提供する仮想化プログラムとの間で共有される1つ以上の共有領域12をさらに含む。仮想化プログラムは、例えば、ハイパーバイザプログラムであってもよく、ゲストプログラムは、それ自体、仮想化された実行環境を1つ以上のアプリケーションプログラムに提供するゲストオペレーティングシステムプログラムであってもよい。
プロセッサコア4は、実行されるべきプログラム命令をメモリ8からフェッチし、これらを、復号されたプログラム命令により指定された処理動作を遂行するようにプロセッサコア4内の他の回路をその後制御する制御信号を生成するためにプログラム命令が復号される復号器16に供給する命令フェッチユニット14を含む。プロセッサコア4は、算術演算および論理演算などの処理動作を遂行するための(複数の汎用レジスタを含む)レジスタバンク20を含む処理回路18を含む。ロードストアユニット22は、これによりデータ値がメモリ8から読み出されレジスタバンク20のレジスタ内に格納されるロード命令(LDR)に応答してロード動作などのメモリアクセス動作を遂行するために使用される。ロードストアユニット22はまた、データ値が、レジスタバンク20のレジスタから読み出され、メモリ8内のメモリアドレスに格納される、格納命令(STR)により指定された格納動作を遂行する。これらのロードおよび格納命令の変種が存在してもよい。入出力デバイス10は、メモリマップされており、ゆえに、データ値を入出力デバイス10から読み出し、これらをレジスタバンク20内のレジスタ内に格納するよう、ロード命令および格納命令を使用してもよい。値をレジスタバンク20から読み出し、これらを入出力デバイス10に書き込むよう、同様に格納動作を使用してもよい。
メモリ管理ユニット24は、プロセッサコア4上で実行されるメモリアクセス命令によって(メモリ8および入出力デバイス10を含む)メモリアドレス空間へのアクセスを管理するために、メモリ8内に格納されたページテーブルデータを使用する。メモリ管理ユニット24は、アクセス許可に違反するか、または他の点で許可されていないメモリアクセスが試みられるときを検出する。これは、データ中断を引き起こす。例外処理回路26は、例外処理をトリガするよう、メモリ管理ユニット24により指摘されたデータ中断に応答する。例外処理応答は、それらの例外処理プログラム命令の実行を開始する(例えば、ベクトルアドレスをプログラムカウンタにロードする)ために、例外処理プログラム命令の開始アドレスを指し示す例外ベクトルに追従することを使用することを含んでもよい。さらに、例外処理回路26は、例外応答の一部として、CPSRレジスタ28(current program status register、現在プログラムステータスレジスタ)内に保持されているプロセッサコア4の現在の処理状態を表すステータスデータを、例外処理が完了し、初期プログラムフローに復帰するときに、ステータスデータがそこから回復される、SPSRレジスタ30(saved program status register、保存プログラムステータスレジスタ)内に保存してもよい。シンドロームレジスタ32は、例外処理回路26に連結されており、例外処理回路26により取り扱われている例外をもたらした、例外トリガ処理動作を特徴付けるデータを(少なくとも一部のメモリアクセスについて)格納する。一部の実施形態では、2つ以上のシンドロームレジスタが使用されてもよい。シンドロームレジスタ(複数可)は、シンドロームデータストアの一例である。データ中断の場合、シンドロームデータとしては、例えば、中断されたメモリアクセスに関連付けられたメモリアドレス空間内のアドレス、メモリアクセスがそのメモリアドレスへの書き込みであったか、それともそのメモリアドレスからの読み出しであったかを示すフラグ、アクセスされているデータ値のサイズ(例えば、バイト、ハーフワード、ワード、ダブルワードなど)を示すサイズ値が含まれる。さらに、メモリアドレス空間内のメモリアドレスへの書き込みであった中断されたメモリアクセスの場合、シンドロームレジスタには、書き込まれるべきであったデータ値が含まれる。このデータ値は、ロードストアユニット22からシンドロームレジスタ32に供給されてもよい。中断されたメモリアクセスがメモリアドレス空間からのデータ値の読み出しであった場合、中断されたメモリアクセス命令がリプレイされるとき、読み出されたデータ値がシンドロームレジスタ32から回復され、ロードストアユニット22およびプロセッサコア4に戻される(例えば、レジスタバンク20の適切なレジスタ内に戻される)ことができるように、シンドロームレジスタ32には、そのデータ値が(例外処理の処理動作を遂行する)例外処理プログラム命令により格納され得る空間が含まれる。
データ処理システム2は、それによりハイパーバイザプログラムが仮想化された実行環境を1つ以上のゲストオペレーティングシステムプログラムおよびアプリケーションプログラムに提供する、仮想化をサポートする。システムのセキュリティを向上させるために、メモリ管理ユニット24により保持されるメモリアクセスデータは、そのゲストプログラムに属するプライベート領域10内に格納されたデータなどの、ゲストプログラムに関連付けられたデータにアクセスする能力をハイパーバイザに与えない働きをしてもよい。ゲストプログラムの実行中にレジスタバンク20内に格納されたデータおよびゲストプログラムに関連付けられた他の状態データ(例えば、CPSRデータ、状態構成データ(state configuration data)など)は、ゲストプログラムにとってプライベートなものとして維持されてもよい。ハイパーバイザプログラムは、メモリマップされた入出力デバイス10などの特定のメモリアドレスへのゲストプログラムによるメモリアクセスをトラップするように動作する。ハイパーバイザプログラムは、例外処理の処理動作を実行するために、このようなトラップされたメモリアクセスを、ゲストプログラムのために、例外処理プログラム命令を使用してエミュレートする。一例として、ゲストプログラムは、メモリマップされた入出力デバイスへのデータ値の書き込みを遂行しようとする場合がある。メモリ管理ユニット24は、そのページテーブルデータを使用して、その書き込みアクセスがハイパーバイザプログラムによりトラップされエミュレートされるべきものであることを検出し、それゆえに、例外処理回路26に渡されるデータ中断例外を提起する。例外処理回路26は、中断された書き込みを特徴付けるデータをシンドロームレジスタ32内に保存する。書き込みを特徴付けるこのデータとしては、中断された動作が書き込み動作であることを示すフラグ、試みられた書き込み動作のアドレス、試みられた書き込み動作により書き込まれるべきデータ値、書き込まれるべきデータ値のサイズ、および中断された書き込み動作をエミュレートする際に有用であり得るさらなるデータ(後述するリプレイ状態データなど)が含まれる。例外処理回路はまた、現在プログラムステータスレジスタの内容28を保存プログラムステータスレジスタ30内に格納する。中断された書き込み動作より前のシンドロームレジスタ32の内容は、現在のプログラム状態の一部を構成し、それゆえに例外処理の一部として保存もされる。万一中断されたメモリアクセスのエミュレーション中にさらなる例外が発生した場合、そのときの現在のシンドロームデータは、例外が解消するにつれて回復され得るように、同様に、現在プログラムステータスデータの一部として保存されることになる。
試みられた書き込み動作のデータ中断によりトリガされた例外処理プログラム命令は、シンドロームデータをシンドロームレジスタ32から読み出し、意図された書き込み動作を完了させるためにこのデータを使用するよう働く。この完了は、例えば、ゲストプログラムにより指定された書き込みのアドレスを、ハイパーバイザプログラムの一部として動作し、ハイパーバイザプログラムにより管理されるようにメモリマップされた入出力デバイス10の物理アドレスに対応する例外処理プログラム命令により使用されるべき異なるアドレスに変換することを伴ってもよい。
例外処理プログラム命令によりトラップされエミュレートされる中断されたメモリアクセス命令が、メモリマップされた入出力デバイス10からのデータ値の読み出しであった場合、例外処理プログラム命令は、読み出されるべきメモリアドレスをシンドロームレジスタ32から読み出し、次いで、ハイパーバイザプログラムにより管理されるように適切なメモリアドレスからその読み出しを遂行する。この読み出しから返されるデータ値は、シンドロームデータの一部としてシンドロームレジスタ32内に格納される。
例外処理から復帰して、ゲストプログラムが再開されると、中断されているメモリアクセス命令(書き込みか読み出しかを問わない)が、再実行のために発行される。読み出しの場合、その読み出しをエミュレートした例外処理によりシンドロームレジスタ32内に格納されたデータ値が、その読み出しの結果として返され、例えば、元の読み出し命令により指定されたレジスタバンク20の適切な宛先レジスタ内に格納される。書き込み命令を再実行する場合、エミュレート中の例外処理プログラム命令は、ゲストプログラムに代わって指定された書き込み動作をすでに遂行してしまっているであろうし、ゆえに、書き込みプログラム命令は、さらなるアクションが必要となることなしに完了(リタイヤ)され得る。
シンドロームレジスタ32は、リプレイされた状態データをシンドロームデータの一部として格納する。このリプレイされた状態データは、第1の状態または第2の状態のいずれかを有するフラグであってもよい。メモリアクセス命令の実行が再び試みられると、その中断されているメモリアクセス命令がすでにエミュレートされていることを示すために、リプレイされた状態データが使用される。そして、中断されているメモリアクセス命令にゲストプログラムのプログラムフロー内で初めて遭遇すると、それは、例外処理をトリガし、例外処理プログラム命令によりエミュレートされる。エミュレーションの一部として、リプレイ状態データ(シンドロームデータの一部であってもよく、または他の場所に保持されてもよい)が、第1の状態に設定される。エミュレーションが完了し、中断されているメモリアクセス命令の実行が再び試みられると、例外処理回路26は、リプレイ状態データが第1の状態を有することを検出し、それゆえに、中断されているメモリアクセスがすでにエミュレートされていることを検出する。中断されているメモリアクセスが書き込みである場合、以前に遂行されたエミュレーションが所望の書き込みをすでに遂行しているため、例外処理回路26は、その書き込みを完了したものとして単にマークすることができる。中断されているメモリアクセスが読み出しである場合、シンドロームレジスタ32は、エミュレート中の例外処理プログラム命令によりその読み出しに対して返されたデータ値を収容する。この場合、例外処理回路26は、シンドロームレジスタ32からのそのデータ値を使用し、それをデータ読み出しの結果として供給し(例えば、読み出されたデータをシンドロームレジスタ32から、中断されている読み出し命令により指定されたレジスタバンク20内の適切な宛先レジスタに転送する)、次いで、読み出し命令を完了したものとして処理する。
図2は、例外処理データ中断を概略的に例示する流れ図である。ステップ27で、処理は、データ中断が発生するまで待機する。他の種類の例外は、異なる方法で対処されてもよい。データ中断が発生すると、例外処理回路32は、ステップ29で、シンドロームデータレジスタ32にアクセスするよう働く。ステップ31は、シンドロームレジスタ32内でアクセスされたリプレイ状態データが第2の状態を有するか否かを判定する。リプレイ状態データが第2の状態を有する場合、これは、中断されているメモリアクセス命令がまだエミュレートされていないことを示す。
リプレイ状態データが第2の状態を有する場合、中断されているメモリアクセスに再び遭遇したとき、それがすでにエミュレートされていることが検出され得るように、ステップ33は、リプレイ状態データを第1の状態に設定する。ステップ34は、中断されているメモリアクセスがロード命令であるかどうかを判定する。中断されているメモリアクセスがロード命令である場合、ステップ36は、そのロード命令を特徴付けるシンドロームデータの一部として、ロード命令の対象であるメモリアドレスと、ロード命令のデータサイズと、中断されているメモリアクセスが読み出しであることを示すフラグとを含むデータをシンドロームレジスタ32内に格納するよう働く。ステップ34における判定が、中断されているメモリアクセスが格納命令である(すなわち、ロードではない)というものである場合、ステップ38は、シンドロームデータの一部として、格納命令の対象アドレス、格納命令の一部として書き込まれるべきデータ値、データ値のデータサイズ、および中断されているメモリアクセスが書き込みであったことを示すフラグをシンドロームレジスタ32内に格納するよう働く。
ステップ36および38の両方に続いて、ステップ40は、例外処理命令の実行をトリガするよう働く。このトリガは、データ中断に関して、データ処理システム2の構成の一部としてセットアップされた例外ベクトルに、このベクトルが例外処理プログラム命令の実行が開始されるようにプログラムカウンタ値を設定するために使用されながら、追従するという形をとってもよい。
ステップ42は、例外処理プログラム命令により遂行され、中断命令がロードであるかどうかを判定する。この判定は、ステップ36および38で設定されたシンドロームレジスタ32内に格納されたシンドロームデータ内の読み出し/書き込みフラグを検査することにより遂行されてもよい。エミュレートされている中断されているメモリアクセスがロードである場合、ステップ44は、データ値をシンドロームレジスタ内のメモリアドレス(またはそのメモリアドレスの変換されたバージョン)から読み出し、データ読み出しから返された読み出されたデータ値をシンドロームレジスタ32に格納し戻し、中断された読み出し動作のエミュレーションを完了させるために必要ないかなるさらなるアクションも遂行することにより、そのロードをエミュレートするよう働く。ステップ42における判定が、エミュレートされるべき中断されたメモリアクセスは格納動作であるというものである場合、ステップ46は、シンドロームレジスタ32内に格納されたデータ値を、シンドロームレジスタ32内に格納されたメモリアドレスにより指し示されたメモリアドレス(またはそのメモリアドレスの変換されたバージョン)に書き込むことにより、その格納動作を完了させるよう働く。
ステップ44および46の両方に続いて、処理は、中断をトリガしたプログラム命令に戻ることにより例外からの復帰が遂行されるステップ48に進む。例外処理プログラム命令は、例外処理およびエミュレーション動作中に、他のプログラム状態の格納およびそのプログラム状態の回復を取り扱うことなどの、他の動作を遂行してもよいことが理解されるであろう。
ステップ48の後、処理は、ステップ27に戻る。ステップ48が、中断をトリガした命令(ゲストプログラム内の中断されているメモリアクセス)に処理を戻すと、ステップ27は、メモリ管理ユニット24による同じ保護の結果としてこの命令が再び中断されるのを検出することになる。この場合、ステップ30における判定は、リプレイ状態データは第2の状態に等しくないというものになり、それゆえに、処理は、ステップ50に進む。ステップ50は、リプレイ状態データを第2の状態に設定する。ステップ52は、メモリアクセス命令がロードであるかどうかを検出する。中断されているメモリアクセス命令がロードである場合、ステップ54は、中断されているロード命令の結果としてシンドロームレジスタ値32内に格納されたデータ値を返すよう働く。次いで、ステップ56は、それを完了したものとしてマークすることにより、この命令をリタイヤさせ、処理は、ステップ27に戻る。ステップ52における判定が、中断されているメモリアクセス命令はロードではないというものである場合、ステップ54は迂回され、処理は、この場合は格納である中断されているメモリアクセス命令が、リタイヤされ、完了したものとしてマークされる、ステップ56に直接進む。
図2に例示する流れ図は、ハードウェアにより(例えば、例外処理回路26により)遂行されるいくつかのステップ、およびソフトウェアにより遂行されるいくつかのステップを含むことが理解されるであろう。この例では、「*」でマークされたステップは、例外処理プログラム命令を使用してソフトウェアにより遂行される。他の処理ステップは、ハードウェア制御下で、例外処理回路26およびデータ処理システム2内の他の要素により取得されるにつれて遂行される。他の実施形態では、ハードウェアとソフトウェアで遂行されるステップの間の異なる分割が使用されてもよいことが理解されるであろう。
図3は、ハイパーバイザプログラム58の形の仮想化プログラムと、ゲストオペレーティングシステム60、62およびアプリケーションプログラム64、66、68、70の形のゲストプログラムとの関係を概略的に例示する。ハイパーバイザプログラム58は、ゲストプログラム60〜70よりも高い特権レベル(例外レベル)で動作する。ハイパーバイザプログラム58は、ゲストプログラム60〜70に仮想化された実行環境を提供する。この仮想化された実行の一部として、ハイパーバイザプログラム58は、入出力デバイス10への仮想アクセスを提供する。ハイパーバイザプログラム58はまた、他のメモリアドレス、またはシステム構成レジスタなどのデータ処理システム2のリソースへのアクセスを仮想化してもよい。他の例外をトリガする処理動作、例えばシステムレジスタへのトラップされたアクセスの例外処理プログラム命令によるエミュレーションを提供するために、シンドロームレジスタ32を利用する本技法を使用してもよい。これらの場合、エミュレーションはまた、エミュレーションがゲストプログラムのプライベートデータにアクセスすることを必要とすることなしに、シンドロームレジスタ32内に格納されているシンドロームデータを使用して遂行されてもよい。エミュレーションを遂行するために必要とされるデータは、それがエミュレート中のプログラム命令によりそこから読み出され得るシンドロームレジスタ32内に、ハードウェア制御下で格納されてもよい。
図4は、メモリ管理ユニット24により遂行される2段式のアドレス変換を概略的に例示している。アプリケーションプログラム64、66、68、70は、仮想アドレスを使用してメモリアクセス命令を生成し得る。次いで、ゲストオペレーティングシステム60、62により提供されているような物理アドレスに対応する中間物理アドレスを形成するために、第1の段の変換72が、適切なゲストオペレーティングシステム60、62により制御されているページテーブルデータを使用してメモリ管理ユニット24により遂行される。ゲストオペレーティングシステム60、62は、それ自体、仮想化された環境内で実行されており、それゆえに、メモリ管理ユニット24は、メモリ8および入出力デバイス10を含むメモリアドレス空間を次いでアドレス指定する物理アドレスを生み出すために、ハイパーバイザ58により管理されているページテーブルデータを使用して第2の段の変換74を遂行する。第2の段の変換74により生み出される物理アドレスは、物理メモリアドレス空間のハイパーバイザの視野に対応する。
第1の段の変換72は、ゲストオペレーティングシステム60、62によって管理されるページテーブルデータを使用する。この第1の段の変換72は、ゲストオペレーティングシステム60、62(またはアプリケーションプログラム64〜70)にとってプライベートであるメモリ8内のプライベート領域10に対するハイパーバイザプログラム58により試みられるメモリアクセスを阻止するよう働いてもよい。ハイパーバイザプログラム58はゲストオペレーティングシステム60、62よりも高い特権レベルを有すると考えたとしても、ゲストオペレーティングシステム60、62により管理されているような第1の段の変換72は、ハイパーバイザがデータにアクセスするのを阻止し得る。第1の段の変換72に対応するページテーブルデータは、そのセキュリティを保護するために、プライベート領域10内に格納されてもよい。
第2の段の変換74は、ハイパーバイザプログラム58によって管理されるページテーブルデータを使用して遂行される。この第2の段の変換データ74は、ハイパーバイザプログラム58により制御され、シンドロームレジスタ32および上述のシンドロームデータを使用してハイパーバイザプログラム58によるエミュレーションを要求する、入力出力デバイス10などのメモリアドレスへのゲストオペレーティングシステム60、62によるメモリアクセスをトラップするために、使用されてもよい。
上述の例示的な実施形態は、例外をトリガしたプログラム命令の試みられる再実行の際の挙動を制御するために、リプレイ状態データを使用する。代替的な例示的な実施形態は、このようなリプレイ状態データを使用することを必要としないかもしれない。例外をトリガしたプログラム命令が格納命令である場合、例外処理プログラム命令は、格納命令に続くプログラム命令を使用して(すなわち、格納命令の再実行は試みられない)、例外処理後に実行を再開してもよい。例外をトリガしたプログラム命令がロード命令である場合、リプレイ状態データの使用の必要性は、例外処理プログラム命令の終了時の、ロード命令に続く命令に実行を戻す前に、シンドロームレジスタからのデータ値をその意図された宛先レジスタにブラインドコピーするように例外処理回路を制御する新しい命令の提供および使用により、回避され得る。
本明細書において例示的な実施形態を添付図面を参照しながら詳細に説明したが、請求項はそれらの正確な実施形態に限定されるものではないこと、ならびに、添付された請求項の範囲および趣旨から逸脱することなしに、様々な変更、追加、および変形がそれらにおいて当業者により成し遂げられることができることが理解されるべきである。例えば、従属請求項の特徴の独立請求項の特徴との様々な組み合わせがなされ得る。

Claims (20)

  1. データを処理するための装置であって、
    複数のレジスタと、
    前記複数のレジスタの所与のレジスタとのデータ値の転送を含む、例外をトリガする処理動作の試みられた実行を検出し、前記例外をトリガする処理動作を少なくとも部分的にエミュレートするために例外処理プログラム命令の実行をトリガするための、例外処理回路と、
    前記例外をトリガする処理動作を特徴付け、かつ、前記データ値を含むシンドロームデータを格納するためのシンドロームデータストアと、
    を備え、
    前記例外処理回路が、前記シンドロームデータ内の前記データ値を使用して、前記所与のレジスタとの前記転送を遂行する装置。
  2. 前記例外をトリガする処理動作が、前記データ値をメモリアドレスから前記所与のレジスタに転送するロード動作であり、
    前記例外処理プログラム命令が、前記データ値を前記メモリアドレスから前記シンドロームデータストアに転送し、
    前記ロード動作の試みられた再実行の際に、前記例外処理回路が、前記データ値を前記シンドロームデータストアから前記所与のレジスタに転送する、請求項1に記載の装置。
  3. 前記例外をトリガする処理動作が、前記データ値を前記所与のレジスタからメモリアドレスに転送する格納動作であり、
    前記ロード動作の前記試みられた実行の際に、前記例外処理回路が、前記データ値を前記所与のレジスタから前記シンドロームデータストアに転送し、
    前記例外処理プログラム命令が、前記データ値を前記シンドロームデータストアから前記メモリアドレスに転送する、請求項1に記載の装置。
  4. 前記シンドロームデータが、第1の状態と第2の状態とを有するリプレイ状態データを含み、
    前記リプレイ状態データが前記第2の状態を有するときで、前記例外をトリガする処理動作の試みられた実行の際に、前記例外処理回路が、前記リプレイ状態データを前記第1の状態に設定し、前記例外処理プログラム命令の実行をトリガし、
    前記リプレイ状態データが前記第1の状態を有するときで、前記例外をトリガする処理動作の試みられた実行の際に、前記例外処理回路が、前記リプレイ状態データを前記第2の状態に設定し、前記例外処理プログラム命令をトリガすることを抑制し、前記例外をトリガする処理動作を完了したものとして合図する、請求項1〜3のいずれか一項に記載の装置。
  5. 前記リプレイ状態データが前記第1の状態を有するときで、前記例外をトリガする処理動作の試みられた実行の際に、前記例外処理回路が、前記データ値を前記シンドロームデータストアから前記所与のレジスタに転送する、請求項2および請求項4に記載の装置。
  6. 前記例外処理プログラム命令の完了の際に、前記例外処理回路が、前記例外をトリガする処理動作の試みられた再実行をトリガする、請求項1〜5のいずれか一項に記載の装置。
  7. 前記シンドロームデータが、例外の入口と出口において保存され回復される現在プログラムステータスデータの一部である、請求項1〜6のいずれか一項に記載の装置。
  8. 前記例外をトリガする処理動作が、データ中断をトリガする、請求項1〜7のいずれか一項に記載の装置。
  9. 前記例外をトリガする処理動作に対応するプログラム命令が、ゲストプログラムの一部であり、前記例外処理プログラム命令が、前記ゲストプログラムに実行環境を提供する仮想化プログラムの一部である、請求項1〜8のいずれか一項に記載の装置。
  10. 前記仮想化プログラムが、前記ゲストプログラムのプライベートな状態データへのアクセスを阻止される、請求項8に記載の装置。
  11. 前記プライベートな状態データが、前記ゲストプログラムの実行中の前記複数のレジスタ内のデータ値を含む、請求項9に記載の装置。
  12. 第1の段のマッピングデータと第2の段のマッピングデータとを含むマッピングデータに依存してメモリへのアクセスを管理するためのメモリ管理ユニットを備え、前記ゲストプログラムが、前記第1の段のマッピングデータを管理し、前記仮想化プログラムが、前記第2の段のマッピングデータを管理し、前記例外をトリガする処理動作が、前記第2の段のマッピングデータを使用して検出される、請求項9、10、および11のいずれか一項に記載の装置。
  13. 前記第1の段のマッピングが、前記仮想化プログラムによる前記ゲストプログラムの前記プライベートな状態データへのアクセスを阻止する、請求項10および請求項12に記載の装置。
  14. 前記転送が、前記所与のレジスタと入出力デバイスとの間である、請求項1〜13のいずれか一項に記載の装置。
  15. 前記シンドロームデータが、メモリアドレスを指し示すアドレスデータを含み、前記データ値の前記転送が、前記所与のレジスタと前記メモリアドレスとの間である、請求項1〜14のいずれか一項に記載の装置。
  16. 前記シンドロームデータが、前記データ値のサイズデータを含む、請求項1〜15のいずれか一項に記載の装置。
  17. 前記シンドロームデータが、前記転送が前記データ値の前記所与のレジスタへのロードであるか、前記データ値の前記所与のレジスタからの書き込みであるかを指定する、請求項1〜16のいずれか一項に記載の装置。
  18. 前記シンドロームデータストアが、シンドロームレジスタである、請求項1〜17のいずれか一項に記載の装置。
  19. データを処理するための装置であって、
    データを格納するための複数のレジスタ手段と、
    前記複数のレジスタ手段の所与のレジスタ手段とのデータ値の転送を含む、例外をトリガする処理動作の試みられた実行を検出し、前記例外をトリガする処理動作を少なくとも部分的にエミュレートするために例外処理プログラム命令の実行をトリガするための、例外処理手段と、
    前記例外をトリガする処理動作を特徴付け、かつ、前記データ値を含むシンドロームデータを格納するためのシンドロームデータ格納手段と、
    を備え、
    前記例外処理手段が、前記シンドロームデータ内の前記データ値を使用して、前記所与のレジスタ手段との前記転送を遂行する装置。
  20. データを処理する方法であって、
    データを複数のレジスタ内に格納することと、
    前記複数のレジスタの所与のレジスタ手段とのデータ値の転送を含む、例外をトリガする処理動作の試みられた実行を検出することと、
    前記例外をトリガする処理動作を少なくとも部分的にエミュレートするために例外処理プログラム命令の実行をトリガすることと、
    前記例外をトリガする処理動作を特徴付け、かつ、前記データ値を含むシンドロームデータを格納することと、
    前記シンドロームデータ内の前記データ値を使用して、前記所与のレジスタ手段との前記転送を遂行することと、
    を含む方法。
JP2018517424A 2015-10-14 2016-09-09 例外処理 Active JP6920286B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1518165.4A GB2543306B (en) 2015-10-14 2015-10-14 Exception handling
GB1518165.4 2015-10-14
PCT/GB2016/052784 WO2017064453A1 (en) 2015-10-14 2016-09-09 Exception handling

Publications (3)

Publication Number Publication Date
JP2018531462A true JP2018531462A (ja) 2018-10-25
JP2018531462A6 JP2018531462A6 (ja) 2018-12-13
JP6920286B2 JP6920286B2 (ja) 2021-08-18

Family

ID=55131018

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018517424A Active JP6920286B2 (ja) 2015-10-14 2016-09-09 例外処理

Country Status (9)

Country Link
US (1) US10649787B2 (ja)
EP (1) EP3341834B1 (ja)
JP (1) JP6920286B2 (ja)
KR (1) KR102613643B1 (ja)
CN (1) CN108139906B (ja)
GB (1) GB2543306B (ja)
IL (1) IL257898B (ja)
TW (1) TWI724034B (ja)
WO (1) WO2017064453A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2579617B (en) * 2018-12-06 2021-01-27 Advanced Risc Mach Ltd An apparatus and method for handling exception causing events
FR3100901B1 (fr) * 2019-09-12 2021-08-27 Stmicroelectronics Grand Ouest Sas Système de protection de la mémoire
US11816217B2 (en) * 2020-04-10 2023-11-14 Vmware, Inc. Decoy memory allocation

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5327567A (en) * 1989-11-16 1994-07-05 Texas Instruments Incorporated Method and system for returning emulated results from a trap handler
US5751945A (en) * 1995-10-02 1998-05-12 International Business Machines Corporation Method and system for performance monitoring stalls to identify pipeline bottlenecks and stalls in a processing system
CN100392618C (zh) * 1997-08-11 2008-06-04 全斯美达有限公司 保护计算机内存储器被写入的系统、方法和设备
US6189093B1 (en) * 1998-07-21 2001-02-13 Lsi Logic Corporation System for initiating exception routine in response to memory access exception by storing exception information and exception bit within architectured register
US8127121B2 (en) * 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6615343B1 (en) * 2000-06-22 2003-09-02 Sun Microsystems, Inc. Mechanism for delivering precise exceptions in an out-of-order processor with speculative execution
GB2369464B (en) * 2000-11-27 2005-01-05 Advanced Risc Mach Ltd A data processing apparatus and method for saving return state
US7607133B2 (en) * 2004-02-11 2009-10-20 Arm Limited Interrupt processing control
US7802080B2 (en) * 2004-03-24 2010-09-21 Arm Limited Null exception handling
US7406634B2 (en) * 2004-12-02 2008-07-29 Cisco Technology, Inc. Method and apparatus for utilizing an exception handler to avoid hanging up a CPU when a peripheral device does not respond
US7920584B2 (en) * 2005-05-04 2011-04-05 Arm Limited Data processing system
US8463969B2 (en) * 2005-06-30 2013-06-11 Intel Corporation Extended message signal interrupt
US7657694B2 (en) * 2006-12-20 2010-02-02 Arm Limited Handling access requests in a data processing apparatus
GB2460280A (en) * 2008-05-23 2009-11-25 Advanced Risc Mach Ltd Using a memory-abort register in the emulation of memory access operations
CN102460376B (zh) * 2009-06-26 2016-05-18 英特尔公司 无约束事务存储器(utm)系统的优化
US8135894B1 (en) * 2009-07-31 2012-03-13 Altera Corporation Methods and systems for reducing interrupt latency by using a dedicated bit
US9244686B2 (en) * 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US20120260073A1 (en) * 2011-04-07 2012-10-11 Via Technologies, Inc. Emulation of execution mode banked registers
US9152548B2 (en) * 2012-01-17 2015-10-06 Vmware, Inc. Controlling access to a privileged resource in user-mode system level mobile virtualization using a ptrace () system call
US9317452B1 (en) * 2013-11-18 2016-04-19 Amazon Technologies, Inc. Selective restrictions to memory mapped registers using an emulator
US9396056B2 (en) * 2014-03-15 2016-07-19 Intel Corporation Conditional memory fault assist suppression
US10289414B2 (en) * 2014-06-02 2019-05-14 International Business Machines Corporation Suppressing branch prediction on a repeated execution of an aborted transaction
US9864541B2 (en) * 2015-02-13 2018-01-09 Google Llc Transparent hardware-assisted memory decompression

Also Published As

Publication number Publication date
EP3341834A1 (en) 2018-07-04
GB201518165D0 (en) 2015-11-25
CN108139906A (zh) 2018-06-08
US10649787B2 (en) 2020-05-12
TW201715408A (zh) 2017-05-01
KR102613643B1 (ko) 2023-12-14
JP6920286B2 (ja) 2021-08-18
GB2543306A (en) 2017-04-19
CN108139906B (zh) 2022-09-02
IL257898A (en) 2018-05-31
IL257898B (en) 2020-03-31
US20180239607A1 (en) 2018-08-23
TWI724034B (zh) 2021-04-11
WO2017064453A1 (en) 2017-04-20
KR20180067581A (ko) 2018-06-20
GB2543306B (en) 2019-05-01
EP3341834B1 (en) 2021-05-12

Similar Documents

Publication Publication Date Title
US10963281B2 (en) Nested virtualization for virtual machine exits
US9672354B2 (en) Systems and methods for exposing a result of a current processor instruction upon exiting a virtual machine
US8561060B2 (en) Processor and method configured to determine an exit mechanism using an intercept configuration for a virtual machine
TWI509518B (zh) 用於改良巢式虛擬化之性能的方法、中央處理單元裝置及系統
US8099541B2 (en) Minivisor entry point in virtual machine monitor address space
RU2265880C2 (ru) Новый режим процессора для ограничения функционирования гостевого программного обеспечения, выполняющегося на виртуальной машине, поддерживаемой монитором виртуальной машины
JP6006248B2 (ja) 命令エミュレーションプロセッサ、方法、およびシステム
US9171159B2 (en) Performing security operations using binary translation
JP6017706B2 (ja) ピアモニタにて信頼性・可用性・保守性(ras)フローをサポートする機構
US9465617B1 (en) Implementing upcall from secure to non-secure mode by injecting exception into non-secure mode
US10380336B2 (en) Information-processing device, information-processing method, and recording medium that block intrusion of malicious program to kernel
CN109643293B (zh) 检测总线上锁条件并且避免总线锁
TW202147116A (zh) 監視處理器之操作之系統
US10963280B2 (en) Hypervisor post-write notification of control and debug register updates
JP6920286B2 (ja) 例外処理
JP2018531462A6 (ja) 例外処理
US9383935B1 (en) Secondary CPU MMU initialization using page fault exception
US11216280B2 (en) Exception interception

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190902

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201117

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210217

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: 20210629

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210726

R150 Certificate of patent or registration of utility model

Ref document number: 6920286

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150