JP2021517291A - 外部例外処理 - Google Patents

外部例外処理 Download PDF

Info

Publication number
JP2021517291A
JP2021517291A JP2020545264A JP2020545264A JP2021517291A JP 2021517291 A JP2021517291 A JP 2021517291A JP 2020545264 A JP2020545264 A JP 2020545264A JP 2020545264 A JP2020545264 A JP 2020545264A JP 2021517291 A JP2021517291 A JP 2021517291A
Authority
JP
Japan
Prior art keywords
virtual processor
exception
processor
virtual
active
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
JP2020545264A
Other languages
English (en)
Other versions
JP7257407B2 (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 JP2021517291A publication Critical patent/JP2021517291A/ja
Application granted granted Critical
Publication of JP7257407B2 publication Critical patent/JP7257407B2/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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/0706Error 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 the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0712Error 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 the processing taking place on a specific hardware platform or in a specific software environment in a virtual computing platform, e.g. logically partitioned systems
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/45575Starting, stopping, suspending or resuming virtual machine instances
    • 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)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

複数の仮想プロセッサ中のアクティブ仮想プロセッサに関係する命令を実行するための処理回路を含むデータ処理装置が提供される。例外制御回路は、複数の仮想プロセッサ中のターゲット仮想プロセッサに関連する外部例外を受信し、ターゲット仮想プロセッサがアクティブ仮想プロセッサ以外であるときに、例外制御回路は、ターゲット仮想プロセッサをアクティブ仮想プロセッサになるようにスケジュールするスケジューリング動作を引き起こすためにドアベル例外を発行する。記憶回路は、マスキングされた仮想プロセッサのセットの指示を記憶し、スケジューリング動作は、マスキングされた仮想プロセッサのセットに関するドアベル例外を無視するように適応される。

Description

本技法はデータ処理に関する。
いくつかのデータ処理システムは仮想プロセッサを利用する。これらは、一連の命令を実行するために現実の物理プロセッサによって引き受けられ得る特定のプロセッサ状態を表す。実行の期間の後(又はプロセッサが、イベントが発生するのを待っているとき)、仮想プロセッサは中断され、それにより、それの状態が保存される。異なる仮想プロセッサが、次いで、それの状態を物理プロセッサにロードすることによってアクティブ化され得る。これは、異なるタスクの分離を可能にし、物理プロセッサがさもなければアイドルになるであろう時間を利用することによって、効率を改善することができる。イベントの発生は例外によって表され得る。そのような例外が受信されたとき、それが仮想プロセッサが待っていたイベントに関係することを管理システムが決定すると、ドアベル例外が発せられ、それにより、中断された仮想プロセッサがアクティブ化のためにスケジュールされ得る。実際には、しかしながら、そのようなプロセスは、同じ仮想プロセッサに関係する複数の例外が発せられたときに、総合効率を低減し得る。さらに、仮想プロセッサのためのドアベル例外の生成をまとめて無効化し、有効化するためのプロシージャは、限られたリソースがアクセスされることを必要とすることがあり、それもまた総合効率を低減し得る。したがって、仮想プロセッサに関連する例外がシステム効率に及ぼす影響が制限されるシステムを提供することが望ましい。
「Some Efficient Architecture Simulation Techniques」、 Robert Bedichek、1990年冬、USENIX Conference、53〜63頁
第1の例示的な構成から見ると、複数の仮想プロセッサ中のアクティブ仮想プロセッサに関係する命令を実行する処理回路と、複数の仮想プロセッサ中のターゲット仮想プロセッサに関連する外部例外を受信し、ターゲット仮想プロセッサがアクティブ仮想プロセッサ以外であるときに、ターゲット仮想プロセッサをアクティブ仮想プロセッサになるようにスケジュールするスケジューリング動作を引き起こすためにドアベル例外を発行する例外制御回路と、マスキングされた仮想プロセッサのセットの指示を記憶する記憶回路とを備え、スケジューリング動作が、マスキングされた仮想プロセッサのセットに関するドアベル例外を無視するように適応された、データ処理装置が提供される。
第2の例示的な構成から見ると、アクティブ仮想プロセッサに関係する命令を実行することと、複数の仮想プロセッサの中からアクティブ仮想プロセッサをスケジュールすることと、複数の仮想プロセッサ中のターゲット仮想プロセッサに関連する外部例外を受信し、ターゲット仮想プロセッサがアクティブ仮想プロセッサ以外であるときに、ターゲット仮想プロセッサをアクティブ仮想プロセッサになるようにスケジュールするスケジューリング動作を引き起こすためにドアベル例外を発行することと、マスキングされた仮想プロセッサのセットの指示を記憶することとを含み、スケジューリング動作が、マスキングされた仮想プロセッサのセットに関するドアベル例外を無視するように適応された、データ処理方法が提供される。
第3の例示的な構成から見ると、命令実行環境を与えるホストデータ処理装置を制御するためのコンピュータ・プログラムであって、複数の仮想プロセッサ中のアクティブ仮想プロセッサに関係する命令を実行する処理プログラミング論理と、複数の仮想プロセッサ中のターゲット仮想プロセッサに関連する外部例外を受信し、ターゲット仮想プロセッサがアクティブ仮想プロセッサ以外であるときに、ターゲット仮想プロセッサをアクティブ仮想プロセッサになるようにスケジュールするスケジューリング動作を引き起こすためにドアベル例外を発行する例外制御プログラミング論理と、マスキングされた仮想プロセッサのセットの指示を記憶するデータ構造とを備え、スケジューリング動作が、マスキングされた仮想プロセッサのセットに関するドアベル例外を無視するように適応された、コンピュータ・プログラムが提供される。
添付の図面に示されている本技法の実施例を参照しながら、本技法について、単なる実例としてさらに説明する。
いくつかの実施例による、データ処理装置を示す図である。 いくつかの実施例による、例外のルーティングがどのように起こるかを示す図である。 いくつかの実施例による、例外をルーティングすることのさらなる実例を示す図である。 いくつかの実施例による、例外をルーティングすることのさらなる実例を示す図である。 いくつかの実施例による、アクティブ仮想プロセッサが変更される実例を示す図である。 いくつかの実施例による、仮想プロセッサのうちの1つの上で動作するハイパーバイザ(hypervisor)を使用するプロセスを示すフローチャートである。 いくつかの実施例による、データ処理の方法を示す図である。 いくつかの実施例による、シミュレータ実装形態を示す図である。
添付図を参照しながら実施例について説明する前に、実施例及び関連する利点についての以下の説明が与えられる。
1つの例示的な構成によれば、アクティブ仮想プロセッサに関係する命令を実行する処理回路と、複数の仮想プロセッサ中のターゲット仮想プロセッサに関連する外部例外を受信し、ターゲット仮想プロセッサがアクティブ仮想プロセッサ以外であるときに、ターゲット仮想プロセッサをアクティブ仮想プロセッサになるようにスケジュールするスケジューリング動作を引き起こすためにドアベル例外を発行する例外制御回路と、マスキングされた仮想プロセッサのセットの指示を記憶する記憶回路とを備え、スケジューリング動作が、マスキングされた仮想プロセッサのセットに関するドアベル例外を無視するように適応された、データ処理装置が提供される。
上記の例示的な構成では、マスキングされた仮想プロセッサのセットが記憶される。仮想プロセッサのマスキングは、例外制御回路が、マスキングされた仮想プロセッサに関して生成されたドアベル例外を無視すべきであることを示す状態である。そのような状態は、ハイパーバイザなどの管理ソフトウェアによって実装され得る。仮想プロセッサは、その仮想プロセッサに対してドアベル例外が生成された結果としてマスキングされ得る。その結果、実行のために仮想プロセッサをスケジュールするプロセスは、継続的に実行されるのではなく抑制され、それによりシステムの効率が改善され得る。当業者は、そのような実施例が特に洗練されていることを理解するであろう。共有される限られたリソースへのアクセスを取得するためにロッキング機構を使用する必要はなくならないとしても、低減され得る。マスキングされたプロセッサのセットの指示のストレージは、マスキングされたプロセッサ自体のセットを記憶することによって、又はマスクキングされていないプロセッサのセットを記憶し、そのセット中にないプロセッサが全てマスキングされていると仮定することによって実装され得ることが理解されよう。
いくつかの実施例では、スケジューリング動作がターゲット仮想プロセッサをアクティブ仮想プロセッサになるようにスケジュールしたとき、例外制御回路は、ターゲット仮想プロセッサをマスキングされた仮想プロセッサのセット中に記憶するように適応される。そのような実施例では、ターゲット仮想プロセッサがアクティブプロセッサになるようにスケジュールされる前か、スケジュールされた後に、そのようなスケジューリングを引き起こすドアベル例外が受信されたことを条件に、ターゲット仮想プロセッサは、マスキングされた仮想プロセッサのセット中に記憶され得る。その結果、ドアベル例外が受信され、ターゲット仮想プロセッサがスケジュールされた場合、同じ仮想プロセッサに対するさらなるドアベル例外が発行され得るが、スケジューリング動作をアクティブにさせない。これにより、スケジューリング動作が繰り返しアクティブ化されることが抑制されるので、効率が改善される。
いくつかの実施例では、処理回路がアクティブ仮想プロセッサを変更するとき、アクティブ仮想プロセッサに関連するアクティブ仮想プロセッサが、マスキングされた仮想プロセッサのセットから削除される。そのような実施例では、仮想プロセッサが常駐(たとえばアクティブ)であることを停止したときに、その仮想プロセッサに関するドアベル例外に課される制限が除去される。
いくつかの実施例では、処理回路がアクティブ仮想プロセッサを変更するとき、ドアベル例外がクリアされる。いくつかの実施例では、ドアベル例外が発せられるのと同時に仮想プロセッサが常駐化される過程にある、「競合(race)状態」が発生し得る。そのような場合、仮想プロセッサがすでにアクティブ化される過程にあっても、仮想プロセッサをスケジュールするためにスケジューリング動作がアクティブ化され得る。明らかに、そのようなシナリオは非効率的である。したがって、そのような実施例は、仮想プロセッサがアクティブ化されるときに、そのプロセッサに関して作成されたドアベル例外をクリアすることによって、この状況が起こることを抑制する。
いくつかの実施例では、データ処理装置は、外部例外に関係するデータを記憶する例外データ・ストレージを備え、外部例外を受信したことに応答して、例外制御回路は、ターゲット仮想プロセッサに関連して外部例外に関係するデータを例外データ・ストレージに記憶するように適応される。例外に関係するデータ(たとえば、データが記憶されているメモリ中のデータ、又は生データ自体)を例外データ・ストレージに記憶することによって、例外は後で処理又は応答され得る。
いくつかの実施例では、処理回路がアクティブ仮想プロセッサをターゲット仮想プロセッサになるように変更したとき、処理回路は、アクティブ仮想プロセッサに関連する例外データ・ストレージに記憶された例外データの各アイテムのための例外処理ルーチンを実行する。例外処理ルーチンは、例外に応答するための一連の命令を与える。非常駐仮想プロセッサは、(例外がその仮想プロセッサのために意図される/その仮想プロセッサに関連する場合でも)例外にすぐに応答することができないので、例外に関係するデータは記憶され得る。次いで、仮想プロセッサをアクティブにするようにスケジュールするために、ドアベル例外が発行され得る。仮想プロセッサがアクティブにされると、各例外のために例外処理ルーチンが実行され、それにより、(仮想プロセッサが常駐であった場合よりもわずかに遅れるが)仮想プロセッサが例外に応答することが可能になり得る。
いくつかの実施例では、本装置は、アクティブ仮想プロセッサが中断されたときに、アクティブ仮想プロセッサをマスキングされた仮想プロセッサのセットに追加するための命令に応答する。これにより、仮想プロセッサは、それが非常駐化される(たとえばアクティブであった後に中断される)とすぐに、それがマスキングされたリストに追加されることを明示的に要求することが可能になる。その結果、ドアベル例外により仮想プロセッサがスケジュールされることがなくなる。これは、仮想プロセッサが再びアクティブになるようにすでにプログラムされているとき(たとえば、それが周期的にアクティブ化する場合)に有用である。
いくつかの実施例では、非アクティブ仮想プロセッサがアクティブ仮想プロセッサになるまで、非アクティブ仮想プロセッサに関して、最大でも1つのドアベル例外しか生成されない。その結果、スケジューリング動作は、非アクティブ仮想プロセッサが再びアクティブになる前に、最大でも1回、その仮想プロセッサをスケジュールすることを試みるだけである。仮想プロセッサをスケジュールするためのさらなるスケジュール化の試みはスケジュールにさらなる影響を及ぼすことがないので、これにより、スケジューリング動作が繰り返し実行されることが防止される。
いくつかの実施例では、複数の仮想プロセッサは、スケジューリング動作を実行するための管理仮想プロセッサを備える。そのような実施例は、したがって、他の仮想プロセッサをスケジュールするために、管理仮想プロセッサがアクティブになることを必要とする。そのような状況では、ドアベル例外を受信すると、管理仮想プロセッサをアクティブ化し、ドアベル例外を処理するためにアクティブ(常駐)仮想プロセッサが中断され、前に中断された仮想プロセッサを再開するために管理仮想プロセッサを再中断することになるので、本技法が解決する根本的な問題が倍加される。これが、ほとんど又は全く利益がなく、複数回起こる場合、明らかにシステムの総合効率は低下する。
いくつかの実施例では、スケジューリング動作はハイパーバイザの一部である。ハイパーバイザ・システムは、複数のゲスト・オペレーティング・システムを同時に実行することを可能にする。各オペレーティング・システムは、それ自体のソフトウェアを有することがあり、また、ハードウェア上で実行している唯一のオペレーティング・システムである外観を与えられることがある。ハイパーバイザは、オペレーティング・システム間のスケジューリングを処理し、また、ハードウェアに関係するデータがどのゲスト・オペレーティング・システム(又はどのゲスト・オペレーティング・システムの下でどのアプリケーション)に向けられるべきかを決定するために、ハードウェア・インターフェースを処理する。
いくつかの実施例では、処理回路は、アクティブ仮想プロセッサを備える複数のアクティブ仮想プロセッサのうちの1つに関係する命令を実行するように各々が適応された複数の処理回路のうちの1つである。スケジューリング動作(存在する場合)は、プロセッサごとに動作することが可能であるか、又は、全体的なシステムのために動作すること、すなわち、必要に応じて、仮想プロセッサを利用可能な物理プロセッサ上で動作するようにスケジュールすることが可能である。
次に、図を参照しながら、特定の実施例について説明する
図1は、いくつかの実施例によるデータ処理装置100を示す。データ処理装置100は、例外を受信する例外制御回路110を含む。そのような例外は、たとえば、ハードウェアとのインターフェースの結果として生成され得る。たとえば、例外は、ハードディスクがソフトウェアによって要求された情報を収集したこと(たとえば、仮想プロセッサ130上で実行しているプロセス120)のインジケータであり得る。装置100はまた、どの仮想プロセッサ130がどの物理プロセッサ150上で実行するべきかを決定するスケジューラ140を含む。2つの物理プロセッサ150A及び150B、及び4つの仮想プロセッサ130A、130B、130C及び130Dがあるので、仮想プロセッサ130のうち最大でも2つしかプロセッサ150上で同時に実行することができない。したがって、スケジューラ140は、特定の時間に、どの仮想プロセッサ130が各プロセッサ150上で実行するかを決定する。さらに、例外制御回路110との組合せで、スケジューラは例外の伝搬を処理するのに役立つ。特に、例外が例外制御回路110によって受信された場合、スケジューラ140は、入来例外に関連する仮想プロセッサ130をプロセッサ150のうちの1つの上で実行するようにスケジュールする。たとえば、特定の仮想プロセッサ130Bが、ハードディスクにデータを要求した結果を待っている場合、例外制御回路110は入来例外を受信し、スケジューラ140は、例外を処理するために、仮想プロセッサ130Bを近い将来にプロセッサ150のうちの1つの上で実行するようにスケジュールする。例外は即座に完全に処理されないので、例外に関係するデータは、後で処理するために記憶され得る(以下で説明する)。この実施例では、スケジューラはマスク155のセットを含む。これらのマスクは、特定の仮想プロセッサ130が、プロセッサ150のうちの1つによる実行のためにスケジュールされるべきでないことを示すために使用され得る。これは、たとえば、当該の仮想プロセッサ130が実行のためにすでにスケジュールされている場合に起こり得る。この場合、仮想プロセッサ130がいつスケジュールされるべきであるかを決定するためにスケジューラを動作させることは、無意味なタスクであり得る。さらに、そのようなタスクは装置100中のリソースの浪費になり得る。
いくつかの実施例では、スケジューラ140は、仮想プロセッサ130のうちの1つの上で実行するプロセス120である。したがって、例外制御回路110によって受信された入来例外がどのようにルーティングされるべきであるかを決定するために、又は、そのような例外の結果として、スケジュールがどのように調整されるべきであるかを決定するためにスケジューリング動作を実行するために、又は、単に仮想プロセッサ130のうちのどれが次に特定のプロセッサ150上で実行するべきであるかを決定するために、スケジューラ140を動作させるには、スケジューラ140がプロセッサ150のうちの1つの上でアクティブ化される必要がある。もちろん、これが、スケジューラ140がそれのタスクを実行する間、他のプロセス120が実行されることを抑制することが理解されよう。したがって、スケジューラ140が実行する時間を制限することは、全体的な装置100の効率の改善につながり得る。
図2は、いくつかの実施例において、例外のルーティングがどのように行われるかを示す。前述のように、例外は例外制御回路110によって受信される。この場合、例外はタイプ「2」であり、メモリ・アドレス「0x0113145」に記憶されたデータを有する。データの長さは16(たとえばバイト)であるとして示されている。例外制御回路110は、特定のタイプの例外を仮想プロセッサと関連付けるために例外マップ200を使用する。もちろん、例外の関連付けの他の方法が実行され得ることが理解されよう。たとえば、例外マップ200は、例外を仮想プロセッサ上の特定のプロセスと関連付け得る。他の実施例では、例外がどのようにルーティングされるべきかを決定する他の手段があり得る。現在の実例では、例外マップ200は、タイプ2の例外について、例外が仮想プロセッサ1にルーティングされるべきであることを示す。現在、(図2の仮想プロセッサ1を囲む一点鎖線によって示されているように)仮想プロセッサ1は中断されている。したがって、例外制御回路110は、スケジューリング動作に渡されるドアベル例外を生成する。スケジューリング動作は、専用スケジューリング回路などのスケジューラ140、仮想プロセッサ130のうちの1つの上で実行するプロセス120の形態のスケジューラ、又はその2つの組合せによって実行され得る。いずれにしても、ドアベル例外はスケジューリング動作によって受信される。マスキングされた仮想プロセッサのセットを示す、マスク155のセットが確認される。仮想プロセッサ1がマスクのセット中に見つけられないので、ドアベル例外は許容され(すなわち反応され)、仮想プロセッサ1は、それにより、実行されるべき仮想プロセッサ210のスケジュールに追加される。同時に、例外制御回路110は、例外データ、及び関連する仮想プロセッサ(すなわち仮想プロセッサ1)の識別子を例外データ・ストレージ220に記憶する。したがって、仮想プロセッサ1 130Aが実行されるようにスケジュールされたとき、例外に関連するデータは例外データ・ストレージ220から収集され得る。
この特定の実施例では、ドアベル例外に応答する行為により、仮想プロセッサ1 130Aは、マスキングされた仮想プロセッサのセットに追加されることに留意されたい。その結果、仮想プロセッサ1に関して受信されるさらなるドアベル例外は反応されない。
他の実施例では、マスク155のセットはマスキングされていない仮想プロセッサのセットを備え、それらは、プロセッサがマスキングされたときに、そのセットから削除される。ここで、リストからの仮想プロセッサの(存在ではなく)不在は、その仮想プロセッサがマスキングされたことを示す。
図3は、いくつかの実施例による、例外をルーティングする第2の実例を示す。図3の実例では、タイプ「12」の例外が受信される。この例外に関連するデータはメモリ・アドレス「0x3123765」において記憶される。データはまた、8(たとえばバイト)の長さを有すると言われる。ここで、例外制御回路110は、この場合も例外を受信し、例外マップ200において、タイプ12の例外が仮想プロセッサ4 130Dに関連することに気づく。仮想プロセッサ4 130Dはこの場合も非アクティブであるので、その結果、ドアベル例外が生成され、スケジューリング動作に渡される。この場合、マスク155のセットは仮想プロセッサ4 130Dを含む。その結果、ドアベル例外は、生成されるが、マスキングされる。その結果、スケジューリング動作は、仮想プロセッサ4 130Dに関してさらなるスケジューリングを実行しない。スケジュール210は、仮想プロセッサ4 130Dが実行されるべき次の仮想プロセッサであることをすでに示していることに留意されたい。したがって、スケジューリング動作によるドアベル例外のマスキングにより、スケジュール210に有益な影響を及ぼさないであろうスケジューリングを実行する必要がなくなった。
図4は、いくつかの実施例によるさらなる実例を示す。ここでは、タイプ「1」の例外が例外制御回路110によって受信される。例外マップ200は、そのような例外が仮想プロセッサ2によって処理されるべきであることを示す。この場合、仮想プロセッサ2は常駐(たとえばアクティブ)である。したがって、例外は仮想プロセッサ2 130Bに直接ルーティングされ得、ドアベル例外が発生する必要はない。
図5は、アクティブ仮想プロセッサが仮想プロセッサ2 130Bから仮想プロセッサ4 130Dに変更される実例を示す。仮想プロセッサ4 130Dのアクティブ化により、仮想プロセッサ4 130Dがマスクのセット155から削除される。したがって、さらなる行為が取られない限り、仮想プロセッサ4 130Dが中断された(すなわち、プロセッサ150上でもはやアクティブでない)とき、仮想プロセッサ4 130Dに関して発行されたドアベル例外がスケジューリング動作によって応答される。新たにアクティブ化されると、仮想プロセッサ4 130Dは、仮想プロセッサ4 130Dが中断されている間に仮想プロセッサ4 130Dのための例外が受信されているかどうかを決定するために、例外データ・ストレージ220にアクセスする。さらに、それらの例外に関連するデータも収集される。仮想プロセッサ4 130Dは、次いで、記憶された例外の各々のための例外ハンドラを実行する。さらに、この実例では、仮想プロセッサ4 130Dの新たなアクティブ化により、ドアベル例外はクリアされる。したがって、これは、仮想プロセッサ130のためのドアベル例外が発せられた際に、その仮想プロセッサがアクティブ化される過程にある、仮想プロセッサ130のアクティブ化中に起こり得る「競合状態」を回避するために役立つ。この場合、これによりスケジューリング動作が実行され、それにより、仮想プロセッサがすでにアクティブ化される過程にあるとき、その仮想プロセッサはスケジュールに追加される。明らかに、これは、仮想プロセッサが常駐にされ、したがって例外に直接応答することが可能になることを遅延させ、したがって、仮想プロセッサ4がアクティブにされている際に仮想プロセッサ4に関して発生するドアベル例外をクリアすることによって抑制され得る。最後に、図5にも示されているように、仮想プロセッサ4 130Dはスケジューリング動作にマスク要求をする。これにより、仮想プロセッサ4 130Dは、プロセッサが中断されたときにマスクのリスト155に追加される。その結果、スケジューリング動作は、仮想プロセッサ4 130Dが中断されたときに、ドアベル例外に応答して仮想プロセッサ4 130Dのためのスケジューリングを実行しない。これは、たとえば、仮想プロセッサ4 130Dが、一定時間(たとえば、仮想プロセッサ4 130Dが、ドアベル例外の結果としてスケジュールに明示的に追加されることなしに、タイムリーな形で例外に応答することを可能にするであろう、短い時間)ごとにスケジュールに追加されるように構成されている場合に役立ち得る。
図6は、仮想プロセッサ130のうちの1つの上で動作するハイパーバイザを使用するプロセスを示すフローチャート300を示す。ステップ310において、装置は、例外が受信されたか否かを決定する。そのような決定は例外制御回路110によって行われ得る。そうである場合は、ステップ320において、アクティブ仮想プロセッサ130が中断され、ハイパーバイザ(たとえば管理ソフトウェア又はスケジューリングソフトウェア)を備える仮想プロセスがアクティブ化される。ステップ340において、スケジューリング動作が実行され、それにより、入来例外に関連する仮想プロセッサがスケジュールに追加される。プロセスは次いでステップ370に進む。代替的に、ステップ310において、例外が受信されない場合、ステップ350において、コンテキストスイッチが起きる時間であるかどうかが決定される。そうでない場合は、プロセスはステップ310に戻る。コンテキストスイッチが起きるべきである場合は、ステップ360において、ハイパーバイザがアクティブ化される。ステップ370において、コンテキストスイッチのためにハイパーバイザをアクティブ化した後か、又は例外発生の結果としてスケジュールを調整した後のいずれかに、実行されるべき次の仮想プロセッサがハイパーバイザによって決定される。ステップ380において、実行されるべき次の仮想プロセッサが次いでアクティブ化され、ステップ390において、ハイパーバイザに関連する仮想プロセッサが中断される。プロセスは次いでステップ310に戻る。
図7は、いくつかの実施例による、フローチャート400を使用するデータ処理の方法を示す。ステップ405において、ドアベル例外が発せられたかどうかが決定される。そうである場合、ステップ410において、ドアベル例外に関連する仮想プロセッサ130がマスキングされているかどうかが決定される。そうである場合、ドアベル例外は影響を及ぼさず、プロセスはステップ405に戻る。そうでない場合、ステップ415において、ドアベル例外に関連する仮想プロセッサ130がスケジュールに追加され、ステップ420において、ドアベル例外に関連する仮想プロセッサがマスクのセットに追加される。これは、したがって、さらなるドアベル例外が仮想プロセッサをスケジュールすることを抑制する。プロセスは次いでステップ405に戻る。ドアベル例外がステップ405において発生していない場合、ステップ430において、コンテキストスイッチが起きるべきであるかどうかが決定される。そうでない場合、プロセスはステップ405に戻る。そうである場合、ステップ435において、アクティブ仮想プロセッサ130が変更される。このプロセスは、図6に示されたステップ350〜ステップ390にほぼ対応する。ステップ440において、前の仮想プロセッサ(ステップ435においてコンテキストスイッチが起きる前にアクティブであった仮想プロセッサ)がマスク要求を行ったことが決定された場合、ステップ445において、古い仮想プロセッサがマスキングされる。その結果、マスク要求を行った仮想プロセッサ130(すなわち新たに中断された仮想プロセッサ130)は、それがマスキングされた仮想プロセッサのセットから削除されるまで(たとえば、それがアクティブになり、マスキングされることを要求することなしに再び中断される場合)、ドアベル例外発生の結果としてスケジュールされない。どちらの場合も、ステップ450において、ドアベル例外はクリアされ、新しい仮想プロセッサ130に関連するマスクは、それが存在する場合、クリアされる。次いで、ステップ460において、新たにアクティブ化された仮想プロセッサに関して例外データ・ストレージ220中に記憶される例外のための例外ハンドラが実行される。プロセスは次いでステップ405に戻る。
図8は、使用され得るシミュレータ実装形態を示す。上記で説明した実施例は、関係する技法をサポートする特定の処理ハードウェアを動作させるための装置及び方法に関して本発明を実装するが、コンピュータ・プログラムの使用によって実装される本明細書で説明する実施例による命令実行環境を提供することも可能である。そのようなコンピュータ・プログラムは、それらがハードウェア・アーキテクチャのソフトウェアベースの実装を与える限り、しばしばシミュレータと呼ばれる。シミュレータ・コンピュータ・プログラムの種類には、エミュレータ、仮想マシン、モデル、及び動的バイナリ・トランスレータを含むバイナリ・トランスレータが含まれる。一般に、シミュレータ実装は、ホスト・プロセッサ730上で動作し、随意にホスト・オペレーティング・システム720を動作させ、シミュレータ・プログラム710をサポートし得る。いくつかの構成では、ハードウェアと与えられた命令実行環境との間にシミュレーションの複数のレイヤがあることがあり、及び/又は、同じホスト・プロセッサ上に与えられる複数の別個の命令実行環境があることがある。歴史的に、妥当な速度で実行するシミュレータ実装を与えるためには、強力なプロセッサが必要とされてきたが、そのような手法は、互換性又は再利用の理由で、別のプロセッサに対してネイティブなコードを実行する要望があるときなど、いくつかの状況下では正当化され得る。たとえば、シミュレータ実装は、ホスト・プロセッサ・ハードウェアによってサポートされない追加の機能をもつ命令実行環境を提供するか、又は一般に異なるハードウェア・アーキテクチャに関連する命令実行環境を提供し得る。シミュレーションの概観が、「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、1990年冬、USENIX Conference、53〜63頁に記載されている。
実施例について特定のハードウェア構成又は特徴に関して前に説明した限りでは、シミュレートされた実施例において、同等の機能が好適なソフトウェア構成又は特徴によって提供され得る。たとえば、特定の回路は、シミュレートされた実施例においてコンピュータ・プログラム論理として実装され得る。同様に、レジスタ又はキャッシュなどのメモリ・ハードウェアは、シミュレートされた実施例においてソフトウェア・データ構造として実装され得る。前に説明した実施例において参照されたハードウェア要素のうちの1つ又は複数がホスト・ハードウェア(たとえば、ホスト・プロセッサ730)上に存在する構成では、いくつかのシミュレートされた実施例は、適切な場合、ホスト・ハードウェアを利用し得る。
シミュレータ・プログラム710は、(非一時的媒体であり得る)コンピュータ可読記憶媒体上に記憶され得、また、シミュレータ・プログラム710によってモデル化されるハードウェア・アーキテクチャのアプリケーション・プログラム・インターフェースと同じである(アプリケーション、オペレーティング・システム及びハイパーバイザを含み得る)ターゲット・コード700へのプログラム・インターフェース(命令実行環境)を提供する。したがって、データ処理装置100、特に上記で説明したスケジューラ140及び例外処理回路110の全部又は一部の挙動を含む、ターゲット・コード700のプログラム命令は、上記で説明したデータ処理装置100のハードウェア特徴を実際には有しないホスト・コンピュータ730がこれらの特徴をエミュレートすることができるように、シミュレータ・プログラム710を使用して命令実行環境内から実行され得る。
したがって、ドアベル例外がスケジュールを調整することを防ぐためにマスクを使用することによって、その仮想プロセッサがアクティブにされるようなときまで、各仮想プロセッサについてスケジューリング動作が1回のみ実行される状況を作り出すことが可能であることがわかる。これは、したがって、スケジューリング動作が実行させられる回数を低減することができる。管理ソフトウェアが仮想プロセッサのうちの1つを占有する場合(すなわちスケジューリング動作が、仮想プロセッサのうちの1つを使用して実行される場合)、これは、仮想プロセッサがスワップ・イン及びスワップ・アウトされなければならない範囲を低減することによって、かなりの利益を有することができる。スケジューリング動作が専用プロセッサ又はそれ自体の回路の一部である場合でも、これは、スケジューリング動作が、利益なしに繰り返し実行される結果として非効率を低減することができる。したがって、上記で説明した技法は、利益が限られた又は利益がないスケジューリング動作が実行され得る範囲を制限することによってシステムの効率を改善する上で有益である。
本出願では、「…ように構成された」という単語は、装置の要素が定義された動作を実行することが可能な構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェア又はソフトウェアの相互接続の配置又は様式を意味する。たとえば、装置は定義された動作を与える専用のハードウェアを有し得るか、又は、プロセッサ又は他の処理デバイスがその機能を実行するようにプログラムされ得る。「ように構成された」は、装置要素が定義された動作を与えるために何らかの方法で変更される必要があることを暗示しない。
添付の図面を参照しながら本発明の例示的な実施例について本明細書で詳細に説明したが、本発明はそれらの正確な実施例に限定されないこと、及び、添付の特許請求の範囲によって定義された本発明の範囲及び趣旨から逸脱することなく、様々な変更、追加、及び修正が当業者によってその中で実施され得ることを理解されたい。たとえば、独立クレームの特徴と従属クレームの特徴との様々な組合せを、本発明の範囲から逸脱することなく行うことが可能である。

Claims (13)

  1. 複数の仮想プロセッサ中のアクティブ仮想プロセッサに関係する命令を実行する処理回路と、
    前記複数の仮想プロセッサ中のターゲット仮想プロセッサに関連する外部例外を受信し、前記ターゲット仮想プロセッサが前記アクティブ仮想プロセッサ以外であるときに、前記ターゲット仮想プロセッサを前記アクティブ仮想プロセッサになるようにスケジュールするスケジューリング動作を引き起こすためにドアベル例外を発行する例外制御回路と、
    マスキングされた仮想プロセッサのセットの指示を記憶する記憶回路と
    を備え、
    前記スケジューリング動作が、マスキングされた仮想プロセッサの前記セットに関するドアベル例外を無視するように適応された、データ処理装置。
  2. 前記スケジューリング動作が前記ターゲット仮想プロセッサを前記アクティブ仮想プロセッサになるようにスケジュールしたとき、前記例外制御回路が、前記ターゲット仮想プロセッサをマスキングされた仮想プロセッサの前記セット中に記憶するように適応された、請求項1に記載のデータ処理装置。
  3. 前記処理回路が前記アクティブ仮想プロセッサを変更したとき、前記アクティブ仮想プロセッサが、マスキングされた仮想プロセッサの前記セットから削除される、請求項2に記載のデータ処理装置。
  4. 前記処理回路が前記アクティブ仮想プロセッサを変更したとき、前記アクティブ仮想プロセッサに関連する前記ドアベル例外がクリアされる、請求項1から3までのいずれか一項に記載のデータ処理装置。
  5. 前記外部例外に関係するデータを記憶する例外データ・ストレージを備え、
    前記外部例外を受信したことに応答して、前記例外制御回路が、前記ターゲット仮想プロセッサに関連して前記外部例外に関係する前記データを前記例外データ・ストレージに記憶するように適応された、請求項1から4までのいずれか一項に記載のデータ処理装置。
  6. 前記処理回路が前記アクティブ仮想プロセッサを前記ターゲット仮想プロセッサになるように変更したとき、前記処理回路が、前記アクティブ仮想プロセッサに関連する前記例外データ・ストレージ中に記憶された例外データの各アイテムのための例外処理ルーチンを実行する、請求項5に記載のデータ処理装置。
  7. 前記データ処理装置は、前記アクティブ仮想プロセッサが中断されたときに、前記アクティブ仮想プロセッサをマスキングされた仮想プロセッサの前記セットに追加する命令に応答する、請求項1から6までのいずれか一項に記載のデータ処理装置。
  8. 非アクティブ仮想プロセッサが前記アクティブ仮想プロセッサになるまで、前記非アクティブ仮想プロセッサに関して、最大でも1つのドアベル例外しか生成されない、請求項1から7までのいずれか一項に記載のデータ処理装置。
  9. 前記複数の仮想プロセッサが、前記スケジューリング動作を実行する管理仮想プロセッサを備える、請求項1から8までのいずれか一項に記載のデータ処理装置。
  10. 前記スケジューリング動作がハイパーバイザの一部である、請求項9に記載のデータ処理装置。
  11. 前記処理回路は、前記アクティブ仮想プロセッサを備える複数のアクティブ仮想プロセッサのうちの1つに関係する命令を実行するように各々が適応された複数の処理回路のうちの1つである、請求項1から10までのいずれか一項に記載のデータ処理装置。
  12. アクティブ仮想プロセッサに関係する命令を実行することと、
    複数の仮想プロセッサの中から前記アクティブ仮想プロセッサをスケジュールすることと、
    前記複数の仮想プロセッサ中のターゲット仮想プロセッサに関連する外部例外を受信し、前記ターゲット仮想プロセッサが前記アクティブ仮想プロセッサ以外であるときに、前記ターゲット仮想プロセッサを前記アクティブ仮想プロセッサになるようにスケジュールするスケジューリング動作を引き起こすためにドアベル例外を発行することと、
    マスキングされた仮想プロセッサのセットの指示を記憶することと
    を含み、
    前記スケジューリング動作が、マスキングされた仮想プロセッサの前記セットに関するドアベル例外を無視するように適応された、データ処理方法。
  13. 命令実行環境を与えるホストデータ処理装置を制御するためのコンピュータ・プログラムであって、
    複数の仮想プロセッサ中のアクティブ仮想プロセッサに関係する命令を実行する処理プログラミング論理と、
    前記複数の仮想プロセッサ中のターゲット仮想プロセッサに関連する外部例外を受信し、前記ターゲット仮想プロセッサが前記アクティブ仮想プロセッサ以外であるときに、前記ターゲット仮想プロセッサを前記アクティブ仮想プロセッサになるようにスケジュールするスケジューリング動作を引き起こすためにドアベル例外を発行する例外制御プログラミング論理と、
    マスキングされた仮想プロセッサのセットの指示を記憶するデータ構造と
    を備え、
    前記スケジューリング動作が、マスキングされた仮想プロセッサの前記セットに関するドアベル例外を無視するように適応された、コンピュータ・プログラム。
JP2020545264A 2018-03-05 2019-02-28 外部例外処理 Active JP7257407B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1803521.2 2018-03-05
GB1803521.2A GB2571922B (en) 2018-03-05 2018-03-05 External exception handling
PCT/GB2019/050553 WO2019171025A1 (en) 2018-03-05 2019-02-28 External exception handling

Publications (2)

Publication Number Publication Date
JP2021517291A true JP2021517291A (ja) 2021-07-15
JP7257407B2 JP7257407B2 (ja) 2023-04-13

Family

ID=61903490

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020545264A Active JP7257407B2 (ja) 2018-03-05 2019-02-28 外部例外処理

Country Status (7)

Country Link
US (1) US11593159B2 (ja)
EP (1) EP3762825A1 (ja)
JP (1) JP7257407B2 (ja)
KR (1) KR20200125633A (ja)
CN (1) CN111788555B (ja)
GB (1) GB2571922B (ja)
WO (1) WO2019171025A1 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0193830A (ja) * 1987-10-05 1989-04-12 Nec Corp 仮想計算機システムにおける割り込み制御方式
JPH02143338A (ja) * 1988-11-24 1990-06-01 Nec Corp 情報処理装置
JP2000330806A (ja) * 1999-05-21 2000-11-30 Hitachi Ltd 計算機システム
JP2013516021A (ja) * 2009-12-29 2013-05-09 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド プロセッサコアのハイパーバイザ離隔
JP2013519169A (ja) * 2010-02-05 2013-05-23 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 割込みの仮想化

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5083265A (en) * 1990-04-17 1992-01-21 President And Fellows Of Harvard College Bulk-synchronous parallel computer
US7516453B1 (en) * 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
US8312230B2 (en) * 2008-06-06 2012-11-13 International Business Machines Corporation Dynamic control of partition memory affinity in a shared memory partition data processing system
US9176770B2 (en) * 2009-12-17 2015-11-03 Intel Corporation Cooperated interrupt moderation for a virtualization environment
US9075789B2 (en) * 2012-12-11 2015-07-07 General Dynamics C4 Systems, Inc. Methods and apparatus for interleaving priorities of a plurality of virtual processors
EP3092560B1 (en) * 2014-01-06 2019-05-08 Johnson Controls Technology Company Vehicle with multiple user interface operating domains
US9910699B2 (en) * 2014-10-28 2018-03-06 Intel Corporation Virtual processor direct interrupt delivery mechanism
US9727500B2 (en) * 2014-11-19 2017-08-08 Nxp Usa, Inc. Message filtering in a data processing system
US9697151B2 (en) * 2014-11-19 2017-07-04 Nxp Usa, Inc. Message filtering in a data processing system
US9747122B2 (en) 2015-04-16 2017-08-29 Google Inc. Virtual machine systems

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0193830A (ja) * 1987-10-05 1989-04-12 Nec Corp 仮想計算機システムにおける割り込み制御方式
JPH02143338A (ja) * 1988-11-24 1990-06-01 Nec Corp 情報処理装置
JP2000330806A (ja) * 1999-05-21 2000-11-30 Hitachi Ltd 計算機システム
JP2013516021A (ja) * 2009-12-29 2013-05-09 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド プロセッサコアのハイパーバイザ離隔
JP2013519169A (ja) * 2010-02-05 2013-05-23 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 割込みの仮想化

Also Published As

Publication number Publication date
JP7257407B2 (ja) 2023-04-13
EP3762825A1 (en) 2021-01-13
GB2571922A (en) 2019-09-18
WO2019171025A1 (en) 2019-09-12
GB2571922B (en) 2020-03-25
CN111788555A (zh) 2020-10-16
GB201803521D0 (en) 2018-04-18
KR20200125633A (ko) 2020-11-04
CN111788555B (zh) 2024-05-31
US11593159B2 (en) 2023-02-28
US20200409753A1 (en) 2020-12-31

Similar Documents

Publication Publication Date Title
EP1899810B1 (en) System and method to optimize os context switching by instruction group trapping
US9417912B2 (en) Ordering tasks scheduled for execution based on priority and event type triggering the task, selecting schedulers for tasks using a weight table and scheduler priority
US9164784B2 (en) Signalizing an external event using a dedicated virtual central processing unit
US8671403B2 (en) Pre-creating virtual machines in a grid environment
US20090007112A1 (en) Method for controlling a virtual machine and a virtual machine system
JP2008510238A (ja) オペレーティングシステム
US8880764B2 (en) Pessimistic interrupt affinity for devices
JP4873423B2 (ja) 仮想化プログラム、シミュレーション装置、仮想化方法
US9003094B2 (en) Optimistic interrupt affinity for devices
KR20160033517A (ko) 인터럽트 컨트롤러를 위한 하이브리드 가상화 방법
JP5030647B2 (ja) 複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法、該プログラムを含むコンピュータ可読媒体、及び、並列コンピュータ・システム
JP2007507779A (ja) オペレーティングシステム
KR920003044B1 (ko) 가상 머신 시스템용의 게스트 머신 실행 제어 시스템
US10963250B2 (en) Selectively suppressing time intensive instructions based on a control value
JP7257407B2 (ja) 外部例外処理
US20050091022A1 (en) Ultra fast multi-processor system simulation using dedicated virtual machines
CN115033337A (zh) 虚拟机内存迁移方法、装置、设备及存储介质
CN112711527A (zh) 一种实时进程的调试方法、装置、目标机和存储介质
CN112214277A (zh) 基于虚拟机的操作系统分区方法、装置及介质
KR101809380B1 (ko) 가상머신 기반 통합항해시스템을 위한 스케줄링 방법 및 장치
US11726811B2 (en) Parallel context switching for interrupt handling
Groesbrink Basics of virtual machine migration on heterogeneous architectures for self-optimizing mechatronic systems: Necessary conditions and implementation issues
JPH0638238B2 (ja) 仮想計算機システム
CN114064200A (zh) 两级嵌入式虚拟机管理程序架构及嵌入式系统
CN113127936A (zh) 具有对保护环之间的特权资源和异常的可配置分配的处理器

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220221

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230228

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230403

R150 Certificate of patent or registration of utility model

Ref document number: 7257407

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150