(57)【特許請求の範囲】
【請求項１】
１つ又は複数の時間のかかる命令を備える命令を実行するように構成された処理回路と、
前記処理回路のために少なくとも１つの例外を生成するように構成された例外生成回路と、を備える情報処理装置であって、
前記処理回路は、前記時間のかかる命令が実行され得るかどうかを示すための制御値を保持するように構成され、
前記例外生成回路は、前記制御値が、前記時間のかかる命令が実行され得ないことを示す第１の状態にある場合、前記時間のかかる命令のうちの１つに応答して、前記時間のかかる命令のうちの前記１つの実行を抑止するよう前記処理回路にもたらす第１の例外を生成するように構成され、
前記例外生成回路は、前記制御値が、前記時間のかかる命令が実行され得ることを示す第２の状態にある場合、前記時間のかかる命令のうちの１つに応答して、前記時間のかかる命令のうちの前記１つを実行するように構成され、
前記時間のかかる命令は実行されるのに前記処理回路の複数の処理サイクルを要求する命令からなる、情報処理装置。
【請求項２】
前記時間のかかる命令は、割込みがかけられ得ない命令を備える請求項１に記載の情報処理装置。
【請求項３】
前記時間のかかる命令は、浮動小数点平方根命令、除算命令、割込み不可能な多重ロード命令、割込み不可能な多重記憶命令、及び少なくとも１つの所定のシングル・インストラクション・マルチプル・データ（ＳＩＭＤ）命令のうちの少なくとも１つを備える請求項１から２までのいずれかに記載の情報処理装置。
【請求項４】
前記処理回路は、第１のソフトウェアを第１の特権レベルで実行し、第２のソフトウェアを、前記第１の特権レベルより高い第２の特権レベルで実行するように構成される請求項１から３までのいずれかに記載の情報処理装置。
【請求項５】
前記第２のソフトウェアは、前記制御値を変更するよう前記処理回路を制御するように構成される請求項４に記載の情報処理装置。
【請求項６】
前記例外生成回路は、前記第１のソフトウェアの前記時間のかかる命令のうちの１つに応答して前記第１の例外を生成するように構成される請求項４又は５に記載の情報処理装置。
【請求項７】
前記例外生成回路は、前記第２の特権レベルより低い特権レベルで実行されるソフトウェアの前記時間のかかる命令のうちの１つに応答してのみ第１の例外を生成するように構成される請求項４から６までのいずれか一項に記載の情報処理装置。
【請求項８】
前記第１のソフトウェアは、１つ又は複数のゲスト・オペレーティング・システムを備え、
前記第２のソフトウェアは、ハイパーバイザを備える請求項４から７までのいずれか一項に記載の情報処理装置。
【請求項９】
前記処理回路は、１つ又は複数の所定の事象に応答して前記制御値を変更するように構成される請求項１から８までのいずれかに記載の情報処理装置。
【請求項１０】
前記１つ又は複数の所定の事象は、コンテキスト・スイッチを含む請求項９に記載の情報処理装置。
【請求項１１】
前記コンテキスト・スイッチに応答して、前記処理回路は、前記制御値を前記第２の状態に変更するように構成される請求項１０に記載の情報処理装置。
【請求項１２】
前記１つ又は複数の所定の事象は、第２の例外を含み、
前記例外生成回路は、予期される事象に第１の所定の期間先行して前記第２の例外を生成するように構成される請求項９から１１までのいずれか一項に記載の情報処理装置。
【請求項１３】
前記予期される事象は、コンテキスト・スイッチであり、前記第２の例外は、前のコンテキスト・スイッチから第２の所定の期間の後に生じる請求項１２に記載の情報処理装置。
【請求項１４】
前記第１の所定の期間は、前記第２の所定の期間より短い請求項１３に記載の情報処理装置。
【請求項１５】
前記第１の所定の期間の前記第２の所定の期間に対する比は、１：９である請求項１４に記載の情報処理装置。
【請求項１６】
前記第２の例外に応答して、前記処理回路は、前記制御値を前記第１の状態に変更するように構成される請求項１２から１５までのいずれか一項に記載の情報処理装置。
【請求項１７】
前記処理回路は、前記第１の例外に応答して前記第２のソフトウェアを実行することに切り換わるように構成される請求項４から８までのいずれかに記載の情報処理装置。
【請求項１８】
前記処理回路は、複数の第１のソフトウェアのうちの１つを前記第１の特権レベルで実行するように構成される請求項１７に記載の情報処理装置。
【請求項１９】
前記第１の例外に応答して、前記第２のソフトウェアは、前記複数の第１のソフトウェアのうちのアクティブのソフトウェアを変更するよう前記処理回路を制御するように構成される請求項１８に記載の情報処理装置。
【請求項２０】
前記第１の例外に応答して、前記処理回路は、後続のコンテキスト・スイッチまで、前記複数の第１のソフトウェアを実行しないように構成される請求項１８又は１９に記載の情報処理装置。
【請求項２１】
前記第１の例外に応答して、前記処理回路は、前記時間のかかる命令のうちの前記１つを実行することなしに、前記複数の第１のソフトウェアのうちのアクティブのソフトウェアの実行を続けるように構成される請求項１８から２０までのいずれか一項に記載の情報処理装置。
【請求項２２】
情報処理装置のためのマシン実施方法であって、前記方法は、
１つ又は複数の時間のかかる命令を備える１つ又は複数の命令を実行するステップと、
前記時間のかかる命令が実行され得るかどうかを示すための制御値を保持するステップと、
前記時間のかかる命令が実行され得ないことを前記制御値が示す場合、前記時間のかかる命令のうちの１つに応答して、前記時間のかかる命令のうちの前記１つの実行を抑止する第１の例外を生成するステップと、
前記時間のかかる命令が実行され得ることを前記制御値が示す場合、前記時間のかかる命令のうちの１つに応答して、前記時間のかかる命令のうちの前記１つを実行するステップとを備え、
前記時間のかかる命令は実行されるのに処理回路の複数の処理サイクルを要求する命令からなる、方法。
【請求項２３】
１つ又は複数の時間のかかる命令を備える命令を実行するための処理手段と、
前記処理手段のために少なくとも１つの例外を生成するための例外生成手段とを備える情報処理装置であって、
前記処理手段は、前記時間のかかる命令が実行され得るかどうかを示すための制御値を保持するように構成され、
前記例外生成手段は、前記制御値が、前記時間のかかる命令が実行され得ないことを示す第１の状態にある場合、前記時間のかかる命令のうちの１つに応答して、前記時間のかかる命令のうちの前記１つの実行を抑止するよう前記処理手段にもたらす第１の例外を生成するように構成され、
前記例外生成手段は、前記制御値が、前記時間のかかる命令が実行され得ることを示す第２の状態にある場合、前記時間のかかる命令のうちの１つに応答して、前記時間のかかる命令のうちの前記１つを実行するように構成され、
前記時間のかかる命令は実行されるのに前記処理手段の複数の処理サイクルを要求する命令からなる、情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技法は、データ処理デバイスの分野に向けられる。より詳細には、本技法は、データ処理デバイスにおいて時間のかかる命令(time intensive instructions)を扱うことに関連を有し得る。
【背景技術】
【０００２】
リアルタイム・システムにおいて、ある期間内に、又はある特定の時間内に特定の事象に応答することが、しばしば、必要である。このことを実現するため、そのようなシステムは、システム全体の決定論的振舞いに、しばしば、依拠する。例えば、所定の間隔で、又は所定の時点でプロセッサ、又はセンサなどの別のハードウェア・デバイスに対するアクセスをソフトウェアに与えることが必要であり得る。
【０００３】
リアルタイム・システムの一例が、車両の衝突を検出し、そのような衝突を検出すると、エアバッグを展開するように設計されたエアバッグ展開システムである。そのようなシステムにおいて、エアバッグが、衝突事象が検出されてから非常に短い期間内に展開されることが不可欠であり得る。
【０００４】
しかしながら、所定の期間内に特定の事象に応答することの問題は、ハードウェアがビジーである場合、悪化する。特に、プロセッサが、時間のかかる命令を実行している場合、他のいずれの作業も実行され得るようになるまでに遅延が存在する。例えば、エアバッグ展開システムを考慮すると、プロセッサが、衝突事象が生じる直前に、時間のかかる命令の実行を開始した場合、プロセッサは、エアバッグが展開し得る前に、その時間のかかる命令の実行を完了する必要があるであろう。このことは、衝突が起きても、エアバッグ展開システムが、その時間のかかる命令が完了するまで長い期間にわたって動作しない状況につながる可能性がある。
【０００５】
したがって、リアルタイム・システムにおいて、不都合な時点で時間のかかる命令を実行することは、システムのパフォーマンス全体に相当な悪影響を及ぼす可能性があり、システムの完全な障害につながる可能性さえある。
【０００６】
そのような命令に対処する１つの方法は、重大な事象が生じた際にそれらの命令の実行を単に終了させることである。しかし、このことは、その命令に既に費やされたプロセッサ・リソースを無駄にし、プロセッサの状態を、その時間のかかる命令の実行が始まる以前の状態に復元するのに、更に多くのプロセッサ・リソースを費やすことを、しばしば、要求する可能性がある。更に、一部の命令は、それらの命令の性質から、割込み不可能であり、又は割込みがかけられた場合、不都合な副作用をもたらす可能性がある。
【発明の概要】
【課題を解決するための手段】
【０００７】
一態様によれば、１つ又は複数の時間のかかる命令を備える命令を実行するように構成された処理回路と、前記処理回路のために少なくとも１つの例外を生成するように構成された例外生成回路とを備える情報処理装置であって、前記処理回路は、前記時間のかかる命令が実行され得るかどうかを示すための制御値を保持するように構成され、前記例外生成回路は、前記制御値が、前記時間のかかる命令が実行され得ないことを示す第１の状態にある場合、前記時間のかかる命令のうちの１つに応答して、前記時間のかかる命令のうちの前記１つの実行を抑止するよう処理回路をトリガする、つまり処理回路にもたらす第１の例外を生成するように構成され、前記例外生成回路は、前記制御値が、前記時間のかかる命令が実行され得ることを示す第２の状態にある場合、前記時間のかかる命令のうちの１つに応答して、前記時間のかかる命令のうちの前記１つを実行するように構成される情報処理装置が提供される。
【０００８】
本技法の認識によれば、時間のかかる命令の実行は、比較的迅速に応答されなければならない重大な事象に先立ってそのような命令が行われる場合、特にリアルタイム・システムにおいて、有害であり得るときがある。例えば、システムが、時間のかかる命令の実行を開始したとして、直後に重大な事象又は例外が生じたとする場合、その重大な事象又は例外に対して応答し得る前に、その時間のかかる命令が完了している必要があり得る。リアルタイム・システムにおいて、この例外又は事象に対しては非常に短い期間内に応答が行われる必要があり得るので、このことは、容認できないものとなろう。
【０００９】
前述の態様によれば、処理回路によって、時間のかかる命令が実行され得るか否か、即ち、時間のかかる命令が実行されることが許されるかどうかを示すための制御値が、与えられる。制御値が、時間のかかる命令が実行され得ない状態に設定されている場合、時間のかかる命令を実行しようとする試みは、例外生成回路によって第１の例外が生成されることをもたらして、その時間のかかる命令の実行が抑止されるようになる。代替として、制御値の状態が、時間のかかる命令が実行され得るようになっている場合、それらの命令の実行が続けられ、第１の例外は、全く生成されない。このため、制御値の状態を制御することによって、時間のかかる命令が、要求されるとおりに許されること、又は許されないことが可能である。したがって、重大な事象が生じることになっていること、又は生じる確率が高いことが知られている場合、この制御値は、その事象に至るまでの間に時間のかかる命令を許さないように設定され得る。したがって、その事象自体が生じた場合、時間のかかる命令は行われていないはずであり、その事象に迅速に応答が行われ得る。
【００１０】
時間のかかる命令の異なる多くの例が存在する。一部の実施例において、時間のかかる命令は、処理回路の複数の処理サイクルが実行されることを要求する命令と見なされ得る。この例の代わりに、又はこの例に加えて、時間のかかる命令は、開始されると、割込みがかけられ得ない命令を備えることが可能である。
【００１１】
これら２つの例のいずれかに加えて、又はいずれかの代わりに、時間のかかる命令は、浮動小数点平方根命令、除算命令、割込み不可能な多重ロード命令、割込み不可能な多重記憶命令、及び少なくとも１つの所定のシングル・インストラクション・マルチプル・データ（ＳＩＭＤ：ｓｉｎｇｌｅ−ｉｎｓｔｒｕｃｔｉｏｎ−ｍｕｌｔｉｐｌｅ−ｄａｔａ）命令のうちの少なくとも１つを備え得る。
【００１２】
浮動小数点平方根命令、及び整数除算命令若しくは浮動小数点除算命令は、単に、多数の処理サイクルが完了することを要求するこれらの命令の性質のため、時間がかかり得る。これらの命令に割込みをかけることは、時間のかかる演算が再び開始されることを要求するので、そうしないことが好ましい可能性がある。更に、時間のかかる平方根命令又は除算命令の後に、又はその命令と並行に実行される、プログラム順序において後の命令が、平方根命令又は除算命令の入力レジスタを、その命令が完了される前に上書きして、割込みがかけられた場合、それらの命令が再開されることを非常に困難にする、又は不可能にさえすることが可能である。ロード命令及び記憶命令には、例えば、それらの命令において参照されているメモリのアドレスが、デバイス型メモリとして扱われる場合、割込み不可能として印が付けられることが可能である。そのようなメモリは、ハードウェア・デバイスにマップされることが可能であり、これらのメモリ・ロケーションに対して読取り又は書込みを行うことは、そのデバイスを特定の様態で動作させることになり得る。これらの命令に割込みをかけることは、ハードウェア・デバイスの誤った振舞い、又は非決定論的振舞いにつながり得る。ＳＩＭＤ命令は、単一の処理オペレータが、同一の入力オペランド内の複数のデータ要素上で並行に実行される命令である。少なくとも一部のＳＩＭＤ演算には、多くのプロセッサ・サイクルが関与することが可能であり、整数除算命令又は浮動小数点除算命令の場合と同様に、割込みが行われた場合、そのような命令を再開することができない可能性がある。
【００１３】
「時間のかかる命令(time intensive instructions)」という用語の他の適切な例が、当業者には明白となり、前段で与えられる例のいずれかの代わりに、又はいずれかに加えて使用されてもよい。
【００１４】
処理回路は、第１のソフトウェアを第１の特権レベルで実行し、第２のソフトウェアを、第１の特権レベルより高い第２の特権レベルで実行するように構成され得る。即ち、第１のソフトウェアは、第２のソフトウェアと比べて、より低い特権レベルで実行される。「より高い」という用語は、特権のレベルを指し、その特権レベルに関連付けられた数値を指すものではない。したがって、より高い特権レベルは、より低い特権レベルより数値的に高いことも、低いことも可能である。一般に、「より高い」特権を有するソフトウェアは、「より低い」特権におけるソフトウェアが利用できない権利を有することが可能である。
【００１５】
これらの実施例のうちのいくつかにおいて、第２のソフトウェアは、前記制御値を変更するよう処理回路を制御するように構成され得る。
【００１６】
例外生成回路は、前記第１のソフトウェアの前記時間のかかる命令のうちの１つに応答して第１の例外を生成するように構成され得る。即ち、例外生成回路は、第１のソフトウェアが、それらの時間のかかる命令のうちの１つを実行しようと試みると、第１の例外を生成することが可能である。したがって、第１のソフトウェアの振舞いは、制御値によって管理され得る。
【００１７】
このため、より高い特権で実行されている第２のソフトウェアは、制御値を設定することが可能であり、より低い特権レベルで実行されている第１のソフトウェアは、その制御値によって影響され得る。そのような実施例は、仮想化された環境などにおいて、１セットのソフトウェアが別のソフトウェアによって管理されるシステムに適している。
【００１８】
例外生成回路は、前記第２の特権レベルより低い特権レベルで実行されるソフトウェアの時間のかかる命令のうちの１つに応答してのみ第１の例外を生成するように構成され得る。即ち、第１の例外は、第２の特権レベルと比べてより低い特権レベルで実行されるソフトウェアに関してだけ生成される。言い換えると、例外生成回路は、前記第２の特権レベルで実行されるソフトウェアの時間のかかる命令のうちの１つに応答して第１の例外を生成することがないように構成される。これらの実施例のうちのいくつかにおいて、例外生成回路は、最高の特権レベルで実行されるソフトウェアの前記時間のかかる命令のうちの１つに応答して前記第１の例外を生成することがないように構成される。したがって、一部のソフトウェアは、時間のかかる命令を生成する資格を常に有し得る。例えば、ハイパーバイザ、即ち、管理ソフトウェアは、時間のかかる命令を常に実行する資格を有し得る。
【００１９】
第１のソフトウェアは、１つ又は複数のゲスト・オペレーティング・システムを備えることが可能であり、第２のソフトウェアは、ハイパーバイザを備えることが可能である。本技法は、ハイパーバイザと、１つ又は複数の仮想化されたゲスト・オペレーティング・システムとを含む環境によく適している。というのは、ハイパーバイザは、リソースが公平に分配されることを確実にするよう各ゲスト・オペレーティング・システムの振舞いを制御することができるからである。例えば、ハイパーバイザに制御値を設定させることによって、第１のゲスト・オペレーティング・システムによって発行された時間のかかる命令が第２のゲスト・オペレーティング・システムに及ぼす効果を制限することが可能である。
【００２０】
制御値は、処理回路上で特定の時点においていずれのソフトウェアが実行されているかを変更するコンテキスト・スイッチなどの、１つ又は複数の所定の事象に応答して変更され得る。例えば、コンテキスト・スイッチが、１つのゲスト・オペレーティング・システムの処理を一時停止して、別のゲスト・オペレーティング・システム又はハイパーバイザの処理を再開することが可能である。そのような実施例において、処理回路は、そのコンテキスト・スイッチに応答して制御値を第２の状態に変更する。即ち、コンテキスト・スイッチに応答して、処理回路は、時間のかかる命令が実行され得るように制御値を変更する。一部の事例において、コンテキスト・スイッチの直後に時間のかかる命令を許すことは、コンテキスト・スイッチが行われてから間をおかずに別のオペレーティング・システムが実行を開始することは可能性が低いので、そのような命令が実行されるのに最も適切な時間である。したがって、そのオペレーティング・システムは、次のコンテキスト・スイッチが行われるまでに時間のかかる命令を実行するのに最も多くの時間を利用できる。
【００２１】
所定の事象の別の例が、予期される事象に第１の所定の期間先行して生成され得る第２の例外である。例えば、予期される事象が、コンテキスト・スイッチであることが可能であり、第２の例外は、前のコンテキスト・スイッチから第２の所定の期間の後に生じることが可能である。即ち、コンテキスト・スイッチが行われてから所定の期間が経過した後、第２の例外が生成されて、時間のかかる命令が実行され得ないよう制御値が状態を変化させるようにする。ハイパーバイザを利用する実施例において、第２のソフトウェア（例えば、ハイパーバイザ）が、第２の例外に応答して処理回路を制御することが可能である。コンテキスト・スイッチは、通常、周期的である。このため、前回のコンテキスト・スイッチ以来、ある期間が経過してから、次のコンテキスト・スイッチが予期されるより前に、時間のかかる命令を抑止することによって、時間のかかる命令の実行が、将来のコンテキスト・スイッチを遅延させる可能性がより低くなり、このため、ハードウェア装置上で実行される他のソフトウェアが影響される可能性がより低くなる。
【００２２】
一部の事例において、第１の所定の期間は、第２の所定の期間より短い。特に、第１の所定の期間の第２の所定の期間に対する比は、１：９であり得る。言い換えれば、時間のかかる命令が実行され得る期間は、時間のかかる命令が実行され得ない期間より長いことが可能であり、時間のかかる命令が実行され得ない期間は、後続のコンテキスト・スイッチが行われる少し前である。この特徴の利点は、時間のかかる命令が全般的に（９０％の時間）許され得ることであり、このことは、データ処理デバイスが通常どおり動作することを可能にする。短い期間だけ、時間のかかる命令が抑止される。
【００２３】
第２の例外に応答して、処理回路は、前記時間のかかる命令が実行され得ないことを示す前記第１の状態に制御値を変更するように構成され得る。このようにして、予期される事象に備えて、時間のかかる命令が許されないようにされ、これにより、システムが、時間のかかる命令を実行するように要求されるのではなく、その予期される事象に迅速に応答することがよりうまくできるようにされる。
【００２４】
一部の実施例において、前記処理回路は、第１の例外に応答して前記第２のソフトウェアを実行することに切り換わるように構成される。第２のソフトウェアが、第１の例外が生成されることに反応し得る様々な様態が存在し、それらの様態のうちのいくつかの例が、後段で説明される。これらの例は限定するものではないことが当業者には認識されよう。更に、これらの例は、適宜、任意の様態で組み合わされることが可能である。
【００２５】
第２のソフトウェアが、前記複数の第１のソフトウェアのうちのアクティブのソフトウェアを変更するように前記処理回路を制御するように構成され得る。即ち、前記第１の例外に応答して、第２のソフトウェアが、前記複数の第１のソフトウェアのうちのアクティブのソフトウェアを変更する。例えば、来たるべきコンテキスト・スイッチが通常、許すよりも前に、早期に異なるゲスト・オペレーティング・システムに切り換えられることが可能である。したがって、処理回路の処理サイクルが、無駄にされず、切り換えられた先のゲスト・オペレーティング・システムに従って費やされることが可能である。
【００２６】
前記第１の例外に応答して、前記処理回路は、後続のコンテキスト・スイッチが行われるまで、前記複数の第１のソフトウェアを実行しないように構成され得る。そのような状況において、その複数の第１のソフトウェアのうちのいずれも、別のコンテキスト・スイッチが受け取られるまで実行されない。第１の例外が生成されることに応答して第１のソフトウェアのうちのいずれが実行されるかを変えることをしないことにより、処理装置の決定論的性質が維持される。即ち、特定の第１のソフトウェアが実行されることになる時点は、変化しない。しかし、時間のかかる命令を発行した第１のソフトウェアは、実行を続けることを許されない。コンテキスト・スイッチが行われると、前記複数の第１のソフトウェアのうちのアクティブのソフトウェアが変更されることが可能であり、前記複数の第１のソフトウェアのうちのそのアクティブのソフトウェアが、通常どおり命令を実行することを許されることが可能であり、時間のかかる命令は、その後、処理が元の第１のソフトウェアに再び切り換わると、実行される。
【００２７】
一部の事例において、前記第１の例外に応答して、前記処理回路は、前記時間のかかる命令のうちの前記１つを実行することなしに、前記複数の第１のソフトウェアのうちアクティブのソフトウェアの実行を続けるように構成される。即ち、これらの事例において、前記第１のソフトウェアのうちのアクティブのソフトウェアは、アクティブのままであり、実行を続けることを許される。しかし、第１の例外が生成されることをもたらした時間のかかる命令は、実行されず、後の時点で再発行される必要がある可能性がある。
【００２８】
第２の態様によれば、情報処理装置のためのマシン実施方法が提供され、前記方法は、１つ又は複数の時間のかかる命令を備える１つ又は複数の命令を実行するステップと、前記時間のかかる命令が実行され得るかどうかを示すための制御値を保持するステップと、前記時間のかかる命令が実行され得ないことを前記制御値が示す場合、前記時間のかかる命令のうちの１つに応答して、前記時間のかかる命令のうちの前記１つの実行を抑止する第１の例外を生成するステップと、前記時間のかかる命令が実行され得ることを前記制御値が示す場合、前記時間のかかる命令のうちの１つに応答して、前記時間のかかる命令のうちの前記１つを実行するステップとを備える。
【００２９】
第３の態様によれば、１つ又は複数の時間のかかる命令を備える命令を実行するための処理手段と、前記処理回路のために少なくとも１つの例外を生成するための例外生成手段とを備える情報処理装置であって、前記処理手段は、前記時間のかかる命令が実行され得るかどうかを示すための制御値を保持するように構成され、前記例外生成手段は、前記制御値が、前記時間のかかる命令が実行され得ないことを示す第１の状態にある場合、前記時間のかかる命令のうちの１つに応答して、前記時間のかかる命令のうちの前記１つの実行を抑止するよう処理手段をトリガする第１の例外を生成するように構成され、前記例外生成手段は、前記制御値が、前記時間のかかる命令が実行され得ることを示す第２の状態にある場合、前記時間のかかる命令のうちの１つに応答して、前記時間のかかる命令のうちの前記１つを実行するように構成される情報処理装置が提供される。
【００３０】
本技法は、単に例として、添付の図面に示される本発明の実施例を参照して更に説明される。
【図面の簡単な説明】
【００３１】
【図１】本技法が適用され得る情報処理装置によって実行されるソフトウェアの階層表現を概略で示す図である。
【図２】一実施例による情報処理装置を概略で示す図である。
【図３】制御値のステータスに基づいて時間のかかる命令の実行を許すこと／無効にすることの実例を示す図である。
【図４Ａ】一実施例による第１の例外に対する応答を概略で示す図である。
【図４Ｂ】第２の実施例による第１の例外に対する応答を概略で示す図である。
【図４Ｃ】第３の実施例による第１の例外に対する応答を概略で示す図である。
【図５】一実施例による時間のかかる命令に応答する方法を概略で示す図である。
【発明を実施するための形態】
【００３２】
図１は、本明細書で説明される技法を利用することが可能な仮想化されたシステムにおいて実行されるソフトウェアを概略で示す。
【００３３】
ソフトウェアは、階層型であり、例外レベルＥＬ１で実行されているいくつかのゲスト・オペレーティング・システムを管理する、例外レベルＥＬ２（特権レベル又は例外レベルとも呼ばれる）において実行されるハイパーバイザ１０を備える。例外レベルは、その例外レベルで実行されているソフトウェアに与えられる特権の度合を示す。この実例において、ハイパーバイザは、ゲスト・オペレーティング・システムより高い例外レベルで実行され、したがって、ハイパーバイザは、ゲスト・オペレーティング・システムより高い特権を有する。この特定の例は、３つの例外レベル（ＥＬ２、ＥＬ１、及びＥＬ０）を示す。しかし、本明細書で説明される技法は、任意の複数の例外レベルを備えるシステムに適用可能であることが認識されよう。
【００３４】
ゲスト・オペレーティング・システムは、リアルタイム・オペレーティング・システム３０と、リッチ・オペレーティング・システム５０とを含む。リアルタイム・オペレーティング・システムは、ユーザによって要求されたタスクを絶え間なく実行するのではなく、検出された事象に迅速に応答するように通常、設計される。それらの事象の多くは、重大である可能性があり、システムの破局的な障害を回避するようにそれらの事象にある期間内に応答が行われなければならないことを示す。リッチ・オペレーティング・システムもまた、事象に応答することが可能であるが、通常、事象によって駆動されず、通常、重大な事象に全く対処しない。リッチ・オペレーティング・システムの例には、「Ｗｉｎｄｏｗｓ（登録商標）」及び「Ｌｉｎｕｘ（登録商標）」などの自宅環境においてよく知られているオペレーティング・システムが含まれる。例えば、リアルタイム・オペレーティング・システムが、自動車におけるエアバッグ又はブレーキを制御することが可能である一方で、リッチ・オペレーティング・システムは、カー・ステレオを制御することが可能である。
【００３５】
各オペレーティング・システム３０、５０が、１つ又は複数のリアルタイムの、又は非リアルタイムのタスク４０を管理することが可能である。それらのタスクは、更に低い例外レベルＥＬ０で動作する。
【００３６】
この実施例において、ハイパーバイザが、ハイパーバイザのリソースをそれらの複数のゲスト・オペレーティング・システムの間で共有する。即ち、任意の一時点で、それらのゲスト・オペレーティング・システムのうちの１つだけが、アクティブに実行されており、他のオペレーティング・システムは、待機しなければならない。アクティブのオペレーティング・システムの選択、及びいずれのオペレーティング・システムが次に実行されることになるかの決定は、ハイパーバイザによって制御される。
【００３７】
したがって、各ゲスト・オペレーティング・システムの実行は、他方のゲスト・オペレーティング・システムの振舞いによって部分的に決定されることが認識されよう。例えば、リッチ・オペレーティング・システム５０のうちの１つが、特に時間がかかり、したがって、割込み不可能であるタスクの実行を開始した場合、ハイパーバイザ１０は、その時間のかかる命令が実行されるのが終わるまで、リアルタイム・オペレーティング・システム３０に処理回路の共有を許さない可能性がある。したがって、リアルタイム・オペレーティング・システムが重大な事象に応答するのを待機している場合、リアルタイム・オペレーティング・システムは、待機しなければならない。
【００３８】
図１に示される実施例において、ハイパーバイザ１０が、ゲスト・オペレーティング・システム３０、５０、又はそれらのゲスト・オペレーティング・システムによって管理されるタスク４０のうちの１つが、リアルタイム・オペレーティング・システム３０がリアルタイムの重大な事象に応答することを妨げる可能性がある、時間のかかる命令を実行することを許されるかどうかを制御する制御値２０を設定する。したがって、その制御値の状態を変更することによって、時間のかかる命令の実行を禁止して、又は抑止して、リアルタイムの重大な事象を迅速に扱うことができるようにすることが可能である。制御値２０は、メモリ７０、レジスタ９０、処理回路６０の一部を形成してもよく、又は完全に別個のデバイスであってもよい。
【００３９】
図２は、本技法を実施するための情報処理装置を概略で示す。この実施例において、処理回路６０が、１つ又は複数の命令を実行するために与えられる。その１つ又は複数の命令は、時間のかかる命令を含み得る。この脈絡において、時間のかかる命令は、その命令の実行のために処理回路６０の複数のクロック・サイクルを要求する命令であり得る。１つ又は複数の異なるタイプの命令が、時間のかかる命令（時間を消費する命令）であるとあらかじめ決定され得る。
【００４０】
時間のかかる命令の実行が試みられることに対する処理回路６０の応答は、制御値２０の状態に依存する。例えば、制御値２０が値０、即ち、偽に設定された場合、このことは、時間のかかる命令が許されることを示す。逆に、制御値が値１、即ち、真に設定された場合、このことは、時間のかかる命令が許されないことを示す。これらの値は、無論、逆にされることも可能であること、又は他の表現が可能であり得ることが、当業者には認識されよう。例えば、制御値は、時間のかかる命令が実行されることを許される条件のセットを表してもよい。
【００４１】
時間のかかる命令が許されることを制御値２０が示す場合に、時間のかかる命令に処理回路６０が（例えば、発行状態又は実行段階において）出合ったことに応答して、処理回路６０は、その時間のかかる命令を実行する。代替として、時間のかかる命令が許されないことを制御値２０が示す場合に、時間のかかる命令に出合ったことに応答して、例外生成回路１００が、第１の例外（又は割込み）を生成する。第１の例外は、処理回路６０がアクティブのオペレーティング・システムから切り換えるようにさせて、ハイパーバイザ１０を代わりに実行させる。ハイパーバイザ１０は、時間のかかる命令が実行されないように時間のかかる命令を抑止することで応答する。次に、ハイパーバイザは、時間のかかる命令を実行することなしに前進することを許す更なるアクションを行うことが可能である。
【００４２】
例外生成回路１００が、第１の例外に加えて他の例外を生成することが可能である。発行され得る別の例外の一例が、処理回路に異なるオペレーティング・システムの実行の間で切り換えを行わせるコンテキスト・スイッチ例外である。そのような例外は、サイクル・カウンタ１１０の値に基づいて周期的に生成され得る。
【００４３】
図２に示される実施例において、例外生成回路１００が、制御値２０を反転させるように処理回路６０を制御する第２の例外を生成する。その結果、時間のかかる命令の実行が変更され得る。サイクル・カウンタ１１０は、この第２の例外を周期的に発行するのに使用される。その結果、処理回路６０は、時間のかかる命令が発行されることを周期的に許すように、又は許さないようにされることが可能であり、或いは所与の周期でその２つの状態の間で交替するようにされることが可能である。
【００４４】
情報処理装置は、メモリ保護ユニット（ＭＰＵ）８０を介してアクセスされるメモリ７０を更に含み、ＭＰＵ８０は、メモリ７０に対するアクセスを制限する。また、情報処理装置は、レジスタのセット９０も備える。他の実施例において、ＭＰＵの代わりに、又はＭＰＵに加えてメモリ管理ユニット（ＭＭＵ）が備えられることも可能である。
【００４５】
時間のかかる命令は、実行されるために処理回路６０の複数の処理サイクルを要求し得る。しかし、一部の実施例において、時間のかかる命令は、あらかじめ定義されたセットである。例えば、このあらかじめ定義されたセットは、浮動小数点平方根命令及び除算命令を含み得る。また、このあらかじめ定義されたセットは、メモリ７０の中に記憶された複数のデータ値がレジスタ９０に転送される割込み不可能な多重ロード命令を含むことも可能である。同様に、あらかじめ定義されたリストは、レジスタ９０の中に記憶された複数のデータ値がメモリ７０に転送される、割込み不可能な多重記憶命令を含むことが可能である。ＭＰＵ８０は、特定の多重ロード命令又は多重記憶命令が割込み不可能であることを示すことが可能である。このことは、例えば、メモリ７０の特定の範囲のメモリ・アドレスとの関係でＭＰＵ８０における特定のビットを設定することによって行われ得る。このことは、デバイス型メモリを扱う際に実行されることが可能であり、このことによって、ハードウェア・デバイスに直接にマップされたメモリの部分を読み取ること、及びそのような部分に書き込むことが、そのハードウェア・デバイスを制御する。そのような命令は、ハードウェアが誤った様態で、又は非決定論的な様態で動作することをもたらし得る、データ値のサブセットだけしかメモリに記憶されない、又はメモリから読み取られない状況が生じないことを確実にするために、割込み不可能でなければならない。
【００４６】
また、命令の所定のリストは、少なくとも１つの所定のシングル・インストラクション・マルチプル・データ（ＳＩＭＤ）を含むことも可能であり、そのような命令は、単一の命令だけを発行することによって複数のデータに対して多数の操作を並行に実行するために使用され得る。例えば、単一の（ＳＩＭＤ）命令が、行列の乗法を実行するのに使用され得る。
【００４７】
図３は、制御値を使用して、時間のかかる命令が実行され得るかどうかを制御することを概略で示す。
【００４８】
時刻ｔ０において、制御値は、時間のかかる命令が許されることを示す０に設定される。
【００４９】
時刻ｔ１において、時間のかかる命令が発行される。時刻ｔ１において、制御値は０に設定されており、時間のかかる命令が許されることが示されているので、その命令は、進むことが許され、したがって、その命令は、処理回路６０によって実行される。
【００５０】
時刻ｔ２において、制御値が１に設定されて、時間のかかる命令が許されないことが示される。時間のかかる命令は、時刻ｔ４における予期されるリアルタイムの重大な事象が近いために時刻ｔ２において許されないことが可能である。その予期されるリアルタイムの重大な事象に非常に近いところで時間のかかる命令を許さないことによって、時間のかかる命令を扱うことの結果としてそのリアルタイムの重大な事象に対する応答が遅延する状況が防止され得る。
【００５１】
時刻ｔ３において、更なる時間のかかる命令が発行される。時刻ｔ３において、制御値は、時間のかかる命令が許されないことを示す１であるので、その時間のかかる命令は、実行されることを許されず、代わりに、処理回路６０にその時間のかかる命令を抑止させる第１の例外が、例外生成回路１００によって生成され、時間のかかる命令が抑止される。
【００５２】
最後に、時刻ｔ４において、その予期されるリアルタイムの重大な事象が生じる。時間のかかる命令は、そのリアルタイムの重大な事象が生じるのに先立って許されないようにされているので、時刻ｔ４において処理されている、どのような時間のかかる命令も処理される可能性は低い。したがって、そのリアルタイムの重大な事象に、ほとんど遅延なしに、ほとんど即時に応答が行われることが可能である。
【００５３】
図４Ａは、時間のかかる命令が許されないことを制御値２０が示す場合に、そのような時間のかかる命令が発行されたことに応答して例外生成回路１００によって生成された第１の例外に処理回路６０が応答する第１の実例を示す。図４Ａに示されるとおり、処理回路６０は、異なる３つのオペレーティング・システム、ＯＳ１、ＯＳ２、及びＯＳ３の実行の間で巡回するように構成される。実行は、別々の時間スライス１３０においてなされ、各時間スライスは、特定のゲスト・オペレーティング・システム専用である。１つのオペレーティング・システムから別のオペレーティング・システムへの（即ち、１つの時間スライスから別の時間スライスへの）切り換わりは、コンテキスト・スイッチと呼ばれる。各コンテキスト・スイッチが行われることに先立って、第２の例外が生成される（図４Ａに破線で示される）。第２の例外は、処理回路６０に、時間のかかる命令が許されないように制御値２０の中に記憶された値を変更させる。コンテキスト・スイッチが行われた後、制御値２０は、時間のかかる命令を再び許すように設定される。したがって、図４Ａから理解され得るとおり、各時間スライス１３０は、時間のかかる命令が許される第１の期間１４０、及び時間のかかる命令が許されない第２の期間１２０であると考えられることが可能である。図４Ａは、第２の期間１２０が第１の期間１４０よりも相当に短いことを示す。例えば、第１の期間１４０の第２の期間１２０に対する比は、９：１であり得る。その結果、時間のかかる命令は、コンテキスト・スイッチが行われる直前には許されないことを除いては、全般的に許される。したがって、コンテキスト・スイッチが行われ得る前にどの時間のかかる命令もが完了する必要があることになる可能性は低いので、各コンテキスト・スイッチを扱う際にほとんど遅延が存在しないことになる。したがって、３つのオペレーティング・システム、ＯＳ１、ＯＳ２、及びＯＳ３は、規則的なスケジュールで実行され、コンテキスト・スイッチが遅延されることによる変動をほとんど伴わずに、決定論的な時点で実行することを許される。時間のかかる命令が許されないことを制御値２０が示す場合に、時間のかかる命令を実行しようとする試みが行われると、例外生成回路１００が、第１の例外を生成して、ハイパーバイザがプロセッサ６０によって実行されるようにする。すると、ハイパーバイザは、図４Ａ、図４Ｂ、及び図４Ｃによって例示される、いくつかの様態のうちの１つで応答することが可能である。
【００５４】
図４Ａにおいて、処理回路６０が、その時間のかかる命令の実行を抑止すること、及びオペレーティング・システムＯＳ１、ＯＳ２、及びＯＳ３のいずれも実行しないことで第１の例外に応答する。したがって、その時間のかかる命令に出合うことから次のコンテキスト・スイッチまでの期間１５０にわたって、ハイパーバイザの一部を形成するソフトウェアが実行され得るが、ゲスト・オペレーティング・システムは、実行され得ない。
【００５５】
図４Ｂは、図４Ａに類似するが、時刻ｔ３に第１の例外が生じたことに対する異なる応答を示す。この実例において、時間のかかる命令は、依然として抑止されるが、オペレーティング・システムＯＳ１、ＯＳ２、及びＯＳ３のいずれをも実行しないのではなく、間もなく行われることになっている、予期されるコンテキスト・スイッチ動作が前倒しされる。この実施例において、処理リソースは、無駄にされない。しかしながら、システムの決定論的性質は、次のオペレーティング・システムが、通常、予期されているよりも早期に実行させられるので、変化する。したがって、コンテキスト・スイッチ・タイミングを変更するのではなく、図４Ａに示されるとおり次のコンテキスト・スイッチを待機することの方がより単純であり得る。
【００５６】
図４Ｃは、図４Ａ及び図４Ｂに類似する。時間のかかる命令は、依然として抑止される。しかしながら、時刻ｔ３に生じる第１の例外に応答して、オペレーティング・システムＯＳ３の実行が継続される。例えば、その時間のかかる命令が、ＯＳ３の下で第１のタスクの一環として行われた場合、ＯＳ３は、第１のタスクではなく、異なる第２のタスクを実行することを続けることができることが可能である。その場合、ハイパーバイザが、その時間のかかる命令の実行を防止するために何らかのアクションを実行する。例えば、ハイパーバイザは、その時間のかかる命令が実行されることをもたらすタスクから切り換えて、代わりに、異なるタスクを実行するために、ゲスト・オペレーティング・システムに、そのオペレーティング・システム独自のコンテキスト・スイッチを発行させることが可能である。代替として、ハイパーバイザは、その要求される動作が、現在、実行され得ないことを示すエラー又は例外を発行することで、その時間のかかる命令に応答してもよい。
【００５７】
図５は、一実施例による時間のかかる命令に応答する方法を概略で示す。
【００５８】
ステップＳ２００で、次の命令がフェッチされる。ステップＳ２１０で、処理回路６０が、そのフェッチされた命令が時間のかかる命令であるか否かを判定する。その命令が時間のかかる命令ではない場合、次にステップＳ２２０で、その命令が実行され、方法は、ステップＳ２００に戻る。しかしながら、ステップＳ２１０で、その命令が時間のかかる命令であると判定された場合、次にステップＳ２３０で、時間のかかる命令が許されることを制御値が示すかどうかが確認される。時間のかかる命令が許されないことを制御値が示すと判定された場合、次にステップＳ２４０で、第１の例外が生成され、ステップＳ２５０で、時間のかかる命令が抑止される。次に、方法は、ステップＳ２００に戻る。しかしながら、ステップＳ２３０で、時間のかかる命令が許されると判定された場合、次にステップＳ２６０で、その時間のかかる命令が実行され、方法は、ステップＳ２００に戻る。
【００５９】
特定の実施例が本明細書で説明されてきたが、本技法は、それらの実施例に限定されないこと、及びそれらの実施例に対する多くの変形及び追加が、本発明の範囲内で行われ得ることが認識されよう。例えば、本発明の範囲を逸脱することなく、以下の従属クレームの特徴と独立クレームの特徴の様々な組合せが行われることも可能である。
【図１】
0006427575.tif 000002
【図２】
0006427575.tif 000003
【図３】
0006427575.tif 000004
【図４Ａ】
0006427575.tif 000005
【図４Ｂ】
0006427575.tif 000006
【図４Ｃ】
0006427575.tif 000007
【図５】
0006427575.tif 000008