JP2024072010A - プログラム、命令実行制御装置、及び命令実行制御方法 - Google Patents

プログラム、命令実行制御装置、及び命令実行制御方法 Download PDF

Info

Publication number
JP2024072010A
JP2024072010A JP2022182578A JP2022182578A JP2024072010A JP 2024072010 A JP2024072010 A JP 2024072010A JP 2022182578 A JP2022182578 A JP 2022182578A JP 2022182578 A JP2022182578 A JP 2022182578A JP 2024072010 A JP2024072010 A JP 2024072010A
Authority
JP
Japan
Prior art keywords
instruction
common
processor
common instruction
executed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022182578A
Other languages
English (en)
Inventor
仁志 濱尾
光一 佐藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2022182578A priority Critical patent/JP2024072010A/ja
Priority to US18/479,320 priority patent/US20240160450A1/en
Publication of JP2024072010A publication Critical patent/JP2024072010A/ja
Pending legal-status Critical Current

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】或る命令セットに含まれる命令で記述されているプログラムを、その命令セットとは異なる命令セットに対応するプロセッサに実行させる新たな技術を提供する。【解決手段】命令実行制御装置2000は、対応情報60を取得する。対応情報60は、非共通命令と共通命令を対応づける。非共通命令は、第1プロセッサ10では実行できないものの、第2プロセッサ20では実行できる命令である。共通命令は、第1プロセッサ10と第2プロセッサ20の双方で実行できる命令である。命令実行制御装置2000は、第1プロセッサ10において非共通命令が検出されたことに応じて、対応情報60を用いて、その非共通命令に対応する共通命令を特定する。命令実行制御装置2000は、特定した共通命令を第1プロセッサ10に実行させる。【選択図】図1

Description

本開示は、プロセッサによる命令の実行を制御する技術に関する。
或る命令セットに含まれる命令で記述されているプログラムを、その命令セットとは異なる命令セットに対応するプロセッサに実行させる技術が開発されている。ここで、命令セットとは、特定の種類のプロセッサによって実行可能な命令の集合である。例えば特許文献1は、高精度モードと高速度モードという2つのモードを持つプロセッサシミュレータを開示する。
米国特許出願公開第2021/0357549号明細書
特許文献1は、シミュレーション対象のプログラムに含まれる各命令を、ホストプロセッサで実行可能な命令に置換する具体的な方法について、言及していない。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
一実施形態に係るプログラムは、第1のプロセッサでは実行できないものの第2のプロセッサでは実行できる命令である非共通命令と、第1のプロセッサと第2のプロセッサの双方で実行できる命令である共通命令とを対応づける対応情報を取得する。そして、当該プログラムは、非共通命令が第1のプロセッサにおいて検出されたことに応じて、その非共通命令に対応する共通命令を、第1のプロセッサに実行させる。
本開示によれば、或る命令セットに含まれる命令で記述されているプログラムを、その命令セットとは異なる命令セットに対応するプロセッサに実行させる新たな技術が提供される。
図1は、実施形態1の命令実行制御装置の概要を例示する図である。 図2は、第1プロセッサと第2プロセッサの関係を例示する図である。 図3は、実施形態1の命令実行制御装置の機能構成を例示するブロック図である。 図4は、命令実行制御装置を実現するコンピュータのハードウエア構成を例示するブロック図である。 図5は、実施形態1の命令実行制御装置2000によって実行される処理の流れを例示するフローチャートである。 図6は、命令実行制御装置の具体的な実現形態を例示する第1の図である。 図7は、命令実行制御装置の具体的な実現形態を例示する第2の図である。 図8は、実施形態2の命令実行制御装置の機能構成を例示するブロック図である。 図9は、実施形態2の命令実行制御装置によって実行される処理の流れを例示するフローチャートである。 図10は、実施形態3の命令実行制御装置の機能構成を例示するブロック図である。 図11は、第1処理と第2処理のいずれかを選択する処理の流れを例示するフローチャートである。 図12は、変換部によって実行される処理の流れを例示するフローチャートである。
以下では、本開示の実施形態について、図面を参照しながら詳細に説明する。各図面において、同一又は対応する要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。また、特に説明しない限り、所定値や閾値などといった予め定められている値は、その値を利用する装置からアクセス可能な記憶装置などに予め格納されている。さらに、特に説明しない限り、記憶部は、1つ以上の任意の数の記憶装置によって構成される。
[実施形態1]
<概要>
以下、図1及び図2を用いて、実施形態1の命令実行制御装置2000の概要を説明する。図1は、実施形態1の命令実行制御装置2000の概要を例示する図である。図2は、後述する第1プロセッサと第2プロセッサの関係を例示する図である。ここで、図1は、命令実行制御装置2000の概要の理解を容易にするための図であり、命令実行制御装置2000の動作は、図1に示したものに限定されない。
命令実行制御装置2000は、第1プロセッサ10による対象プログラム50の実行を制御する。対象プログラム50は、第2命令セット40に含まれる命令で構成される。第2命令セット40は、第1プロセッサ10とは異なる第2プロセッサ20によって実行可能な命令の集合である。なお、第1プロセッサ10によって実行可能な命令の集合を第1命令セット30と呼ぶ。
第2命令セット40は、第1命令セット30にも含まれる命令である共通命令と、第1命令セット30には含まれない命令である非共通命令の双方を含む。非共通命令は、第2プロセッサ20において実行できるものの、第1プロセッサ10においては実行できない命令である。一方、共通命令は、第1プロセッサ10と第2プロセッサ20の双方で実行できる命令である。
図2において、第1命令セット30には共通命令のみが含まれる一方、第2命令セット40には共通命令と非共通命令の双方が含まれる。このような命令セットで構成される第2プロセッサ20は、例えば、第1プロセッサ10に基づいて新たに開発されたプロセッサである。なお、第1命令セット30は、第1プロセッサ10において実行できるものの、第2プロセッサ20においては実行できない命令を含んでもよい。
対象プログラム50は、第2命令セット40に含まれる命令で構成されるため、第1プロセッサ10では実行できない非共通命令を含みうる。そのため、対象プログラム50の全てをそのまま第1プロセッサ10に実行させることはできない。
命令実行制御装置2000は、対象プログラム50の中に非共通命令が含まれる場合であっても、第1プロセッサ10を利用して対象プログラム50を実行できるようにする。以下、本開示における前提についてさらに説明した後に、命令実行制御装置2000の動作の概要を説明する。
共通命令は、第1命令セット30と第2命令セット40とで互いに同一の識別子(命令コード)が割り当てられている命令である。また、或る共通命令を第1プロセッサ10で実行することによって得られる効果と、その共通命令を第2プロセッサ20で実行することで得られる効果とは、互いに同等である。
例えば、第1命令セット30と第2命令セット40の双方に、識別子が x1 である命令 x1 が含まれているとする。この場合、命令 x1 は、第1プロセッサ10と第2プロセッサ20の双方で実行可能な共通命令である。そして、命令 x1 を第1プロセッサ10に実行させることによって得られる効果と、命令 x1 を第2プロセッサ20に実行させることで得られる効果とは、互いに同等である。
一方で、非共通命令の識別子と同じ識別子を持つ命令は、第1命令セット30に含まれない。例えば第2命令セット40が非共通命令 y1 を含むとする。この場合、識別子が y1 である命令は、第1命令セット30には含まれない。そのため、識別子が y1 である命令は、第2プロセッサ20では実行できるものの、第1プロセッサ10では実行できない。
例えば図2において、第1命令セット30と第2命令セット40は共に、識別子がそれぞれ x1 から xn であるn個の共通命令を含む。さらに、第2命令セット40は、識別子がそれぞれ y1 から ym であるm個の非共通命令を含む。
非共通命令は、1つ以上の共通命令から成る命令列で置き換え可能である。ここで、「或る命令 a が、命令列 {b1,...,bn} に置き換え可能である」とは、命令 a を実行することによって得られる効果と同等の効果が、命令 b1,...,bn をこの順に実行することによって得られることを意味する。
非共通命令と共通命令との間の対応関係は、図1に例示されている対応情報60によって示されている。対応情報60は、非共通命令と、その非共通命令に対応する共通命令の命令列とを対応づける情報である。ここで、「非共通命令に対応する共通命令の命令列」とは、その非共通命令と置き換え可能な、共通命令の命令列である。
対応情報60の各行は、非共通命令62に1つの非共通命令を示し、共通命令64にその非共通命令と置換可能な共通命令の命令列を示す。例えば図1において、対応情報60の1行目は、非共通命令 y1 が、共通命令の命令列 {x3,x5} と置き換え可能であることを表す。そのため、命令 y1 を第2プロセッサ20に実行させることで得られる効果と同等の効果が、命令 x3 と x5 をこの順で第1プロセッサ10に実行させることでも得られる。
なお、対応情報60は、必要に応じて、各命令で扱われるオペランドに関する情報も含む。例えば前述したように、非共通命令 y1 が、共通命令の命令列 {x3,x5} で置き換え可能であるとする。非共通命令 y1 が1つ以上のオペランドを取る場合、対応情報60は、非共通命令 y1 のオペランドと、共通命令 x3 や x5 のオペランドとの対応関係を示す。また、共通命令 x5 は、その前に共通命令 x3 が実行されることでレジスタやメモリに格納されたデータを利用しうる。そこで、共通命令64は、1つの命令列に含まれる複数の共通命令について、それらの実行結果やオペランドの関係も示す。
以上の前提の下で、命令実行制御装置2000は、第1プロセッサ10による対象プログラム50の実行を制御する。前述したように、対象プログラム50は第2命令セット40に含まれる命令で構成されるため、対象プログラム50には非共通命令が含まれうる。そこで命令実行制御装置2000は、第1プロセッサ10において非共通命令が検出されたことに応じて、対応情報60を用いて、その非共通命令に対応する共通命令を特定する。そして命令実行制御装置2000は、特定した共通命令を第1プロセッサ10に実行させる。こうすることで、非共通命令を実行することで得られる効果と同等の効果を、その非共通命令に対応する共通命令の実行によって得ることができる。
なお、共通命令は、第2プロセッサ20でも実行可能である。そのため、第2プロセッサ20による共通命令の実行は、命令実行制御装置2000による制御を介さずに可能である。
<作用効果の例>
特定のプロセッサを利用して、そのプロセッサでは実行できない命令が含まれるプログラムを実行する方法として、バイナリトランスレーションを利用する方法がある。バイナリトランスレーションでは、対象のプログラムに含まれる命令列が、その命令列をプロセッサに実行させる前に、プロセッサで実行可能な命令列に置換される。この方法では、命令列に含まれる全ての命令それぞれについて置換の要否を判定する必要がある。そのため、置換の要否の判定によるオーバーヘッドが大きくなりうる。
これに対し、本実施形態の命令実行制御装置2000では、第1プロセッサ10において非共通命令が検出されたことに応じて、非共通命令に対応する共通命令を第1プロセッサ10に実行させる。この方法によれば、対象プログラム50に含まれる各共通命令については、命令の置換の要否を判定する必要がない。そのため、対象プログラム50を第1プロセッサ10に実行させる際に発生するオーバーヘッドを小さくすることができる。
以下、本実施形態の命令実行制御装置2000について、より詳細に説明する。
<機能構成の例>
図3は、実施形態1の命令実行制御装置2000の機能構成を例示するブロック図である。命令実行制御装置2000は、取得部2020及び第1制御部2040を有する。取得部2020は対応情報60を取得する。第1制御部2040は、対応情報60を用いて、第1プロセッサ10において検出された非共通命令に対応する共通命令を特定する。第1制御部2040は、特定した共通命令を第1プロセッサ10に実行させる。
<ハードウエア構成の例>
命令実行制御装置2000の各機能構成部は、各機能構成部を実現するハードウエア(例:ハードワイヤードされた電子回路など)で実現されてもよいし、ハードウエアとソフトウエアとの組み合わせ(例:電子回路とそれを制御するプログラムの組み合わせなど)で実現されてもよい。以下、命令実行制御装置2000の各機能構成部がハードウエアとソフトウエアとの組み合わせで実現される場合について、さらに説明する。
図4は、命令実行制御装置2000を実現するコンピュータ1000のハードウエア構成を例示するブロック図である。コンピュータ1000は、任意のコンピュータである。例えばコンピュータ1000は、PC(Personal Computer)やサーバマシンなどといった、据え置き型のコンピュータである。その他にも例えば、コンピュータ1000は、スマートフォンやタブレット端末などといった可搬型のコンピュータである。その他にも例えば、コンピュータ1000は、SoC(System on Chip)などの集積回路である。コンピュータ1000は、命令実行制御装置2000を実現するために設計された専用のコンピュータであってもよいし、汎用のコンピュータであってもよい。
例えば、コンピュータ1000に対して所定のアプリケーションをインストールすることにより、コンピュータ1000で、命令実行制御装置2000の各機能が実現される。上記アプリケーションは、命令実行制御装置2000の各機能構成部を実現するためのプログラムで構成される。なお、上記プログラムの取得方法は任意である。例えば、当該プログラムが格納されている記憶媒体(DVD(Digital Versatile Disc)や USB メモリなど)から、当該プログラムを取得することができる。その他にも例えば、当該プログラムが格納されている記憶装置を管理しているサーバ装置から、当該プログラムをダウンロードすることにより、当該プログラムを取得することができる。
コンピュータ1000は、バス1020、プロセッサ1040、メモリ1060、ストレージデバイス1080、入出力インタフェース1100、及びネットワークインタフェース1120を有する。バス1020は、プロセッサ1040、メモリ1060、ストレージデバイス1080、入出力インタフェース1100、及びネットワークインタフェース1120が、相互にデータを送受信するためのデータ伝送路である。ただし、プロセッサ1040などを互いに接続する方法は、バス接続に限定されない。
プロセッサ1040は、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、FPGA(Field-Programmable Gate Array)、DSP(Digital Signal Processor)などの種々のプロセッサである。ここで、プロセッサ1040は、前述した第1プロセッサ10である。なお、コンピュータ1000にプロセッサ1040が複数含まれる場合、それらの全てがいずれも第1プロセッサ10であってもよいし、それらの一部(例えば1つ)が第1プロセッサ10であってもよい。
メモリ1060は、RAM(Random Access Memory)などを用いて実現される主記憶装置である。ストレージデバイス1080は、ハードディスク、SSD(Solid State Drive)、メモリカード、RAM、フラッシュメモリ、又は ROM(Read Only Memory)などを用いて実現される補助記憶装置である。
入出力インタフェース1100は、コンピュータ1000と入出力デバイスとを接続するためのインタフェースである。例えば入出力インタフェース1100には、キーボードなどの入力装置や、ディスプレイ装置などの出力装置が接続される。
ネットワークインタフェース1120は、コンピュータ1000をネットワークに接続するためのインタフェースである。このネットワークは、LAN(Local Area Network)であってもよいし、WAN(Wide Area Network)であってもよい。
ストレージデバイス1080は、命令実行制御装置2000の各機能構成部を実現するプログラム(前述したアプリケーションを実現するプログラム)を記憶している。プロセッサ1040は、このプログラムをメモリ1060に読み出して実行することで、命令実行制御装置2000の各機能構成部を実現する。
命令実行制御装置2000は、1つのコンピュータ1000で実現されてもよいし、複数のコンピュータ1000で実現されてもよい。後者の場合において、各コンピュータ1000の構成は同一である必要はなく、それぞれ異なるものとすることができる。
<処理の流れ>
図5は、実施形態1の命令実行制御装置2000によって実行される処理の流れを例示するフローチャートである。取得部2020は、対応情報60を取得する(S102)。第1制御部2040は、対応情報60を用いて、第1プロセッサ10において検出された非共通命令に対応する共通命令を特定する(S104)。第1制御部2040は、特定した共通命令を第1プロセッサ10に実行させる(S106)。
命令実行制御装置2000によって実行される処理の流れは、図5に示されている流れに限定されない。例えば後述するように、対応情報60の内容の全てが、命令実行制御装置2000の起動時などに取得されてもよい。この場合、命令実行制御装置2000は、第1プロセッサ10において非共通命令が検出される度に対応情報60を取得する必要はない。
<対応情報60の取得:S102>
第1制御部2040は、対応情報60を取得する(S102)。ここで、対応情報60の取得は、第1プロセッサ10において非共通命令が検出される前に予め行われてもよいし、第1プロセッサ10において非共通命令が検出されたことに応じて行われてもよい。前者の場合、例えば命令実行制御装置2000は、命令実行制御装置2000の起動時や、対象プログラム50の実行が開始された時点などにおいて、対応情報60を取得する。この場合、対応情報60の内容を全て取得しておくことが好適である。
一方、第1プロセッサ10において非共通命令が検出されたことに応じて対応情報60が取得される場合、例えば命令実行制御装置2000は、対応情報60に含まれる情報のうち、検出された非共通命令に対応する共通命令を表す情報のみを取得する。その他にも例えば、命令実行制御装置2000は、命令実行制御装置2000の起動後、第1プロセッサ10において非共通命令の検出が最初に行われた時に、対応情報60の内容を全て取得するようにしてもよい。
命令実行制御装置2000が対応情報60を取得する方法は任意である。例えば対応情報60は、命令実行制御装置2000からアクセス可能な記憶部に予め格納されている。この場合、命令実行制御装置2000は、この記憶部から対応情報60を読み出すことにより、対応情報60を取得する。その他にも例えば、命令実行制御装置2000は、他の装置から送信された対応情報60を受信することにより、対応情報60を取得してもよい。当該他の装置は、例えば、命令実行制御装置2000のユーザによって操作される任意の端末である。
<非共通命令に対応する共通命令の特定:S104>
第1制御部2040は、対応情報60を用いて、第1プロセッサ10において検出された非共通命令に対応する共通命令を特定する(S104)。例えば第1制御部2040は、対応情報60の中から、第1プロセッサ10において検出された非共通命令の識別情報が非共通命令62に示されるレコードを特定する。そして、第1制御部2040は、特定したレコードの共通命令64に示されている共通命令を、第1プロセッサ10において検出された非共通命令に対応する共通命令として特定する。
上述した処理の前提として、第1制御部2040は、第1プロセッサ10において非共通命令が検出されたことを把握する。ここで、非共通命令は第1プロセッサ10では実行できない命令であるため、第1プロセッサ10が非共通命令を実行しようとすると、不正な命令として検出される。より具体的な例としては、第1プロセッサ10の命令デコーダが非共通命令をデコードしようとすると、不正な命令が実行されようとしたことを表す(該当する命令が存在しないことを表す)例外が発生する。なお、例外は「割り込み」とも表現できる。
そこで例えば、第1プロセッサ10において不正な命令が実行されようとした場合に発生する例外に対応する例外ハンドラの一部として、第1制御部2040が実現される。言い換えれば、第1制御部2040によって行われる処理は、当該例外ハンドラの処理として実現される。これにより、第1制御部2040は、第1プロセッサ10において非共通命令が検出されたことに応じて動作することができる。以下、第1プロセッサ10において不正な命令が実行されようとした場合に発生する例外を「不正命令例外」と呼び、不正命令例外に対応する例外ハンドラのことを「不正命令ハンドラ」と呼ぶ。
第1制御部2040は、不正命令例外の発生原因となった命令(以下、対象命令)が非共通命令であるか否かを判定する。そのために不正命令ハンドラは、不正命令例外の発生原因となった命令の識別情報(すなわち、対象命令の識別情報)を取得する。さらに第1制御部2040は、対象命令の識別情報と一致する識別情報を持つ非共通命令が存在するか否かを判定する。各非共通命令の識別情報は、例えば、対応情報60から取得することができる。ただし、対応情報60とは別に、各非共通命令の識別情報を示す情報が用意されてもよい。
対象命令の識別情報と一致する識別情報を持つ非共通命令が存在する場合、対象命令は非共通命令である。そこで第1制御部2040は、対象命令(すなわち、非共通命令)に対応する共通命令を特定する。
一方、対象命令の識別情報と一致する識別情報を持つ非共通命令が存在しない場合、対象命令は、非共通命令以外の不正な命令である。このように対象命令が非共通命令以外の不正な命令である場合において、第1制御部2040が実行する処理は任意である。例えば第1制御部2040は、対象プログラム50を強制終了する処理を行う。この際、不正な命令が実行されたことを表すエラー通知が任意の方法で出力されてもよい。
<非共通命令に対応する共通命令の実行:S106>
第1制御部2040は、対象命令に対応する共通命令を第1プロセッサ10に実行させる(S104)。なお、プロセッサに対して特定の命令を実行させる手法には、既存の種々の手法を利用することができる。
ここで、不正命令例外の発生によって中断されている対象プログラム50の実行コンテキストにおいて、現在の命令は、非共通命令として検出された対象命令である。そこで第1制御部2040は、対象プログラム50の実行が再開される前に、再開された対象プログラム50において最初に実行される命令を、現在設定されている対象命令から、その1つ先の命令(以下、次命令)に変更する処理を行う。このようにすることで、第1制御部2040は、非共通命令に対応する共通命令を第1プロセッサ10に実行させた上で、当該非共通命令そのものは第1プロセッサ10によって実行されないようにする。よって、第1プロセッサ10において実行できない当該非共通命令の代わりに、その非共通命令に対応する共通命令が第1プロセッサ10において実行される。
ここで、再開された対象プログラム50において最初に実行される命令を変更する方法には、種々の方法を採用することができる。例えば第1制御部2040は、対象プログラム50の実行コンテキストの中身を変更する。ここで、不正命令ハンドラが呼び出される際に、対象プログラム50の実行コンテキストは、メモリ上に待避される。この実行コンテキストに含まれるプログラムカウンタの値は、不正命令例外の発生原因となった非共通命令を指している。そこで第1制御部2040は、メモリ上に待避されている対象プログラム50の実行コンテキストについて、その中に含まれるプログラムカウンタの値を、次命令を指す値に変更する。これにより、再開された対象プログラム50において最初に実行される命令を変更することができる。
なお前述したように、第1制御部2040は、不正命令ハンドラの一部として実現される。そして、対象プログラム50の実行は、不正命令ハンドラの実行が終了した後に再開される。そのため第1制御部2040は、対象プログラム50の実行が再開される前に、再開された対象プログラム50において最初に実行される命令を変更することができる。
<命令実行制御装置2000の実現形態の例>
命令実行制御装置2000に関する理解をより容易にするために、命令実行制御装置2000のより具体的な実現形態の例をいくつか例示する。以下の実現形態は、命令実行制御装置2000の理解を容易にするための例示にすぎず、命令実行制御装置2000の実現形態は以下で示す例に限定されない。
図6は、命令実行制御装置2000の具体的な実現形態を例示する第1の図である。図6の命令実行制御装置2000では、第1プロセッサ10が含まれるハードウエア70の上で、OS(Operating system)80が動作する。ハードウエア70は、図4で例示したコンピュータ1000を構成するハードウエアに相当する。
OS80は、不正命令ハンドラ90を含む。第1制御部2040は、不正命令ハンドラ90の一部として実現される。取得部2020は、不正命令ハンドラ90の一部として実現されてもよいし、OS80の他の部分として実現されてもよい。後者の場合、例えば取得部2020は、OS80の起動時に実行される処理の一部として実現される。
OS80の上では、ユーザアプリケーション100が動作する。図6の例において、ユーザアプリケーション100は対象プログラム50に相当する。なお、複数のユーザアプリケーション100が動作している場合、各ユーザアプリケーション100が対象プログラム50として扱われる。ただし命令実行制御装置2000は、ユーザアプリケーション100を対象プログラム50として扱うべきか否か(言い換えれば、対象プログラム50を命令実行制御装置2000による制御の対象とすべきか否か)の選択を、ユーザアプリケーション100の起動時等に受け付けてもよい。
対象プログラム50の実行が開始されると、対象プログラム50を構成する各命令が第1プロセッサ10によって実行される。ここで、非共通命令が実行されると、不正命令例外が発生するため、対象プログラム50の実行コンテキストがメモリ上に待避された上で、不正命令ハンドラ90が呼び出させる。
不正命令ハンドラ90は、非共通命令に対応する共通命令を特定し、特定した共通命令を第1プロセッサ10に実行させる。不正命令ハンドラ90の実行が終了すると、対象プログラム50の実行が再開される。
図7は、命令実行制御装置2000の具体的な実現形態を例示する第2の図である。図7の命令実行制御装置2000では、第1プロセッサ10が含まれるハードウエア70の上で、ハイパーバイザ110が動作している。ハイパーバイザ110は、不正命令ハンドラ120を含む。第1制御部2040は、不正命令ハンドラ120の一部として実現される。取得部2020は、不正命令ハンドラ120の一部として実現されてもよいし、ハイパーバイザ110の他の部分として実現されてもよい。
ハイパーバイザ110の上では、仮想マシン130が動作する。図7の例において、仮想マシン130は対象プログラム50に相当する。そのため、仮想マシン130上で動作するゲスト OS や、当該ゲスト OS 上で動作するユーザアプリケーションが、まとめて1つの対象プログラム50として扱われる。複数の仮想マシン130が動作している場合、各仮想マシン130が対象プログラム50として扱われうる。
対象プログラム50の実行が開始されると、対象プログラム50を構成する各命令が第1プロセッサ10によって実行される。ここで、非共通命令が実行されると、不正命令例外が発生するため、対象プログラム50の実行コンテキストがメモリ上に待避された上で、不正命令ハンドラ120が呼び出される。
不正命令ハンドラ120は、非共通命令に対応する共通命令を特定し、特定した共通命令を第1プロセッサ10に実行させる。不正命令ハンドラ120の実行が終了すると、対象プログラム50の実行が再開される。
[実施形態2]
対象プログラム50において、非共通命令が連続していることがありうる。例えば対象プログラム50において、非共通命令 y1 の次に、非共通命令 y2 が実行されるとする。この場合、第1プロセッサ10において非共通命令 y1 が検出されたことに応じて不正命令ハンドラが呼び出される。不正命令ハンドラは、非共通命令 y1 に対応する共通命令を第1プロセッサ10に実行させる。その後、不正命令ハンドラによる処理を終了して対象プログラム50の実行が再開されるとする。すると、次に実行される命令が非共通命令 y2 であるため、第1プロセッサ10において再度非共通命令が検出される。その結果、不正命令ハンドラが再度呼び出される。
ここで、例外ハンドラの呼び出しは、コンテキストスイッチなどによるオーバーヘッドの発生を伴う。そのため、例外ハンドラの出現頻度を少なくすることにより、オーバーヘッドを減らすことができる。
そこで、実施形態2の命令実行制御装置は、非共通命令に対応する共通命令を第1プロセッサ10に実行させるだけでなく、対象プログラム50においてその非共通命令の次に含まれる次命令についても、共通命令への置き換えを試みる。具体的には、命令実行制御装置は、次命令が非共通命令であるか否かを判定する。そして、次命令が非共通命令である場合、命令実行制御装置は、次命令に対応する共通命令を特定し、特定した共通命令を第1プロセッサ10に実行させる。
例えば前述したように、対象プログラム50において、非共通命令 y1 の次に、非共通命令 y2 が実行されるとする。この場合、第1プロセッサ10において非共通命令 y1 が検出されたことに応じて呼び出される不正命令ハンドラにおいて、1)非共通命令 y1 に対応する共通命令を第1プロセッサ10に実行させる処理に加え、2)次命令である y2 に対応する共通命令を第1プロセッサ10に実行させる処理が行われる。
より具体的には、不正命令ハンドラは、次命令である命令 y2 が非共通命令であるか否かを判定する。命令 y2 は非共通命令であるため、不正命令ハンドラは、命令 y2 に対応する共通命令を特定し、特定した共通命令を第1プロセッサ10に実行させる。その後、再開された対象プログラム50において実行される命令が、命令 y2 の次の命令に設定された後、不正命令ハンドラの処理が終了する。
ここで、対象プログラム50において、非共通命令が3つ以上連続することも考えられる。そこで命令実行制御装置は、第1プロセッサ10において検出された非共通命令の次の命令だけでなく、2つ先や3つ先の命令についても、同様の処理を行ってもよい。例えば、第1プロセッサ10において非共通命令が検出されたことに応じて呼び出される不正命令ハンドラが、当該非共通命令に続く対象プログラム50の各命令について順に、その命令が非共通命令である間、対応する共通命令を第1プロセッサ10に実行させる処理を行う。
例えば対象プログラム50が、非共通命令 y1、非共通命令 y2、非共通命令 y3、及び共通命令 x1 をこの順に含むとする。この場合、第1プロセッサ10において非共通命令 y1 が検出されたことに応じて不正命令ハンドラが呼び出される。不正命令ハンドラは、非共通命令 y1 に対応する共通命令、非共通命令 y2 に対応する共通命令、及び非共通命令 y3 に対応する共通命令を、第1プロセッサ10に実行させる。非共通命令 y3 の次の命令は共通命令 x1 であるため、不正命令ハンドラは、再開される対象プログラム50において最初に実行される命令を x1 に設定する。その結果、不正命令ハンドラの終了後に、命令 x1 から、対象プログラム50の実行が再開される。
<作用効果の例>
本実施形態の命令実行制御装置によれば、不正命令ハンドラの一回の呼び出しにおいて、複数の非共通命令それぞれについて、その非共通命令に対応する共通命令を実行することができる。そのため、不正命令ハンドラの一回の呼び出しにおいて、共通命令に置き換えられる非共通命令が一つだけであるケースと比較し、非共通命令を共通命令に置き換える処理を、より小さいオーバーヘッドで行うことができる。
以下、本実施形態の命令実行制御装置について、より詳細に説明する。
<機能構成の例>
図8は、実施形態2の命令実行制御装置3000の機能構成を例示するブロック図である。実施形態2の命令実行制御装置3000は、取得部3020、第1制御部3040、及び第2制御部3060を有する。取得部3020及び第1制御部3040の機能はそれぞれ、実施形態1の命令実行制御装置2000が有する取得部2020及び第1制御部2040の機能と同じである。第2制御部3060は、第1プロセッサ10において非共通命令が検出された場合に、対象プログラム50においてその非共通命令の次に含まれる次命令が、非共通命令であるか否かを判定する。次命令が非共通命令である場合、第2制御部3060は、対応情報60を用いて、次命令に対応する共通命令を特定する。そして、第2制御部3060は、特定した共通命令を第1プロセッサ10に実行させる。
<ハードウエア構成の例>
実施形態2の命令実行制御装置3000は、実施形態1の命令実行制御装置2000と同様に、例えば図4で例示されるコンピュータ1000によって実現される。ただし、実施形態2のストレージデバイス1080には、実施形態2の命令実行制御装置3000の各機能構成部を実現するプログラムが格納されている。
<処理の流れ>
図9は、実施形態2の命令実行制御装置3000によって実行される処理の流れを例示するフローチャートである。取得部3020は、対応情報60を取得する(S202)。第1制御部3040は、対応情報60を用いて、第1プロセッサ10において検出された非共通命令に対応する共通命令を特定する(S204)。第1制御部3040は、特定した共通命令を第1プロセッサ10に実行させる(S206)。
第2制御部3060は、次命令が非共通命令であるか否かを判定する(S208)。次命令が非共通命令でない場合(S208:NO)、図9の処理は終了する。
一方、次命令が非共通命令である場合(S208:YES)、第2制御部3060は、次命令に対応する共通命令を特定する(S210)。第2制御部3060は、特定した共通命令を第1プロセッサ10に実行させる(S212)。
[実施形態3]
<概要>
実施形態3の命令実行制御装置は、第1プロセッサ10による対象プログラム50の実行を制御する処理として、第1処理と第2処理のいずれか一方を選択する。第1処理は、実施形態1で説明した処理である。すなわち、第1処理は、第1プロセッサ10による非共通命令の検出に応じて、その非共通命令に対応する共通命令を第1プロセッサ10に実行させる処理である。また、第1処理には、実施形態2で説明したように、次命令が非共通命令である場合に、次命令に対応する共通命令を第1プロセッサ10に実行させる処理が含まれてもよい。
一方、第2処理は、対象プログラム50に対してダイナミックバイナリトランスレーション(DBT: Dynamic Binary Translation)を行う処理である。具体的には、第2処理は、対象プログラム50に含まれる命令列(例えば基本ブロック)について、その命令列に含まれる各命令列が非共通命令であるか否かを判定し、対応情報60を用いて非共通命令を共通命令に置換する。これにより、共通命令のみで構成される命令列が得られる。そして第2処理は、置換後の命令列を記憶部に格納する。より具体的には、第2処理は、メモリに格納されていた元の命令列を、置換後の命令列に置き換える。これにより、共通命令のみで構成される置換後の命令列が、第1プロセッサ10によって実行される。
このように第1処理と第2処理とでは、非共通命令を共通命令に置換するタイミングが異なる。第1処理では、非共通命令が含まれうる対象プログラム50をそのまま第1プロセッサ10に実行させた後、第1プロセッサ10によって非共通命令が検出されたタイミングで、非共通命令から共通命令への置換が行われる。一方で、第2処理では、対象プログラム50に含まれる命令列を第1プロセッサ10に実行させる前に、その命令列に含まれる非共通命令が共通命令に置換される。
命令実行制御装置は、第1処理と第2処理のどちらを実行するのかを、対象プログラム50における非共通命令の出現頻度に基づいて決定する。非共通命令の出現頻度が閾値未満である場合、命令実行制御装置は、第1処理により、第1プロセッサ10による対象プログラム50の実行を制御する。一方、非共通命令の出現頻度が閾値以上である場合、命令実行制御装置は、第2処理により、第1プロセッサ10による対象プログラム50の実行を制御する。
以下、第1処理によって第1プロセッサ10の実行を制御する状態にある命令実行制御装置を、「第1モードの命令実行制御装置」と呼ぶ。一方、第2処理によって第1プロセッサ10の実行を制御する状態にある命令実行制御装置を、「第2モードの命令実行制御装置」と呼ぶ。これらの用語を用いると、「非共通命令の出現頻度が閾値未満である場合、命令実行制御装置は第1モードで動作する」と表現できる。また、「非共通命令の出現頻度が閾値以上である場合、命令実行制御装置は第2モードで動作する」と表現できる。
<作用効果の例>
命令実行制御装置が第1モードで動作している場合、非共通命令から共通命令への置換は、第1プロセッサ10において非共通命令が検出されたことに応じて行われる。そのため、第1プロセッサ10は、対象プログラム50に元から含まれる共通命令を、命令実行制御装置による制御を介することなく実行することができる。一方で、非共通命令から共通命令への置換が例外処理の中で行われるため、当該置換の際に、例外処理に伴うオーバーヘッドが発生する。
これに対し、第2モードの命令実行制御装置は、対象プログラム50の命令列を、共通命令のみで構成される命令列に変換した後に、当該命令列を第1プロセッサ10に実行させる。このことから、非共通命令が第1プロセッサ10によって検出されることはないため、当該検出に伴うオーバーヘッドは発生しない。一方で、命令実行制御装置が第2モードで動作している場合、対象プログラム50に含まれる共通命令についても、非共通命令であるか否かの判定が行われる。そのため、当該判定処理に伴うオーバーヘッドが発生する。
以上のことから、対象プログラム50の実行において、非共通命令の出現頻度が比較的高い場合、第2モードの命令実行制御装置を利用して対象プログラム50を実行する方が、第1モードの命令実行制御装置を利用して対象プログラム50を実行する場合よりも、オーバーヘッドを小さくすることができる。一方、対象プログラム50の実行において、非共通命令の出現頻度が比較的低い場合、第1モードの命令実行制御装置を利用して対象プログラム50を実行する方が、第2モードの命令実行制御装置を利用して対象プログラム50を実行する場合よりも、オーバーヘッドを小さくすることができる。
そこで実施形態3の命令実行制御装置は、非共通命令が閾値未満である場合には、自身を第1モードで動作させる。一方、非共通命令の出現頻度が閾値以上である場合、実施形態3の命令実行制御装置は、自身を第2モードで動作させる。これにより、非共通命令の出現頻度に応じて、よりオーバーヘッドが小さい方法で、第1プロセッサ10による対象プログラム50の実行を制御することができる。
以下、本実施形態の命令実行制御装置について、より詳細に説明する。
<機能構成の例>
図10は、実施形態3の命令実行制御装置4000の機能構成を例示するブロック図である。実施形態3の命令実行制御装置4000は、取得部4020、第1制御部4040、頻度算出部4080、及び変換部4100を有する。取得部4020が持つ機能は、実施形態1の取得部2020が持つ機能と同じである。頻度算出部2080は、非共通命令の出現頻度を算出する。変換部2100は、非共通命令の出現頻度が閾値以上である場合、対応情報60を用いて、対象プログラム50の命令列に含まれる非共通命令を共通命令に変換する。
第1制御部4040は、非共通命令の出現頻度が閾値未満である場合に、対応情報60を用いて、第1プロセッサ10において検出された非共通命令に対応する共通命令を特定し、当該共通命令を第1プロセッサ10に実行させる。その他の点を除き、第1制御部3040が持つ機能は、実施形態1の第1制御部2040が持つ機能と同じである。
なお、実施形態3の命令実行制御装置4000が、実施形態2の命令実行制御装置3000と同様の機能を有する場合、実施形態3の命令実行制御装置4000は、第2制御部4060(図示せず)をさらに有する。第2制御部4060が持つ機能は、実施形態2の第2制御部3060が持つ機能と同じである。
<ハードウエア構成の例>
実施形態3の命令実行制御装置4000は、実施形態1の命令実行制御装置4000と同様に、例えば図4で例示されるコンピュータ1000によって実現される。ただし、実施形態3のストレージデバイス1080には、実施形態3の命令実行制御装置4000の各機能構成部を実現するプログラムが格納されている。
<処理の流れ>
図11は、第1処理と第2処理のいずれかを選択する処理の流れを例示するフローチャートである。この処理は、「命令実行制御装置4000の動作モードとして、第1モードと第2モードのいずれかを選択する処理」とも表現できる。
頻度算出部4080は、非共通命令の出現頻度を算出する(S302)。非共通命令の出現頻度が閾値未満である場合、命令実行制御装置4000は、第1プロセッサ10による対象プログラム50の実行を制御するための処理として、第1処理を選択する(S304)。一方、非共通命令の出現頻度が閾値以上である場合、命令実行制御装置4000は、第1プロセッサ10による対象プログラム50の実行を制御するための処理として、第2モードを選択する(S306)。
ここで、第1処理と第2処理の選択結果を命令実行制御装置4000の動作に反映する具体的な方法は任意である。例えば不正命令ハンドラにおいて、第1処理が選択されている状態であるか否か(言い換えれば、命令実行制御装置4000が第1モードであるか否か)の判定が行われる。第1処理が選択されている場合、不正命令ハンドラにおいて、第1制御部4040や第2制御部4060の処理が行われるようにする。一方、第1処理が選択されていない場合、不正命令ハンドラにおいて、第1制御部4040や第2制御部4060の処理が行われないようにする。
また、第2処理が選択された場合、命令実行制御装置4000の状態を、変換部4100が動作する状態に設定する。ここで、変換部4100が動作する状態に設定する具体的な手法には、システムの状態をダイナミックトランスレーションが実行される状態に設定する既存の手法を利用できる。
図12は、変換部4100によって実行される処理の流れを例示するフローチャートである。変換部4100は、変換対象の命令列を対象プログラム50から取得する(S402)。変換対象の命令列を取得する具体的な手法には、ダイナミックバイナリトランスレーションの対象とする基本ブロックを取得する手法などを利用することができる。
S404からS410は、変換対象の命令列に含まれる各命令について実行されるループ処理L1である。S404において、変換部4100は、変換対象の命令列に含まれる全ての命令について、既にループ処理L1が実行されたか否かを判定する。変換対象の命令列に含まれる全ての命令について、既にループ処理L1が実行された場合、図12の処理はS412に進む。
一方、まだループ処理L1の対象とされていない命令が、変換対象の命令列に含まれる場合、変換部4100は、まだループ処理L1の対象とされていない命令のうち、先頭に位置する命令を選択する。ここで選択される命令を「命令i」と表記する。
変換部4100は、命令iが非共通命令であるか否かを判定する(S406)。命令iが非共通命令である場合(S406:YES)、変換部4100は、対応情報60を用いて、命令iを、命令iに対応する共通命令に置換する(S408)。一方、命令iが非共通命令でない場合(S406:NO)、命令の置換は行われない。S410はループ処理L1の終端であるため、再度S404が実行される。
ループ処理L1の実行が完了した後、変換部4100は、第1プロセッサ10によって実行される命令列を、変換後の命令列に置き換える(S412)。当該置き換えの具体的な手法には、ダイナミックバイナリトランスレーションで採用されている既存の手法を利用することができる。
ここで、図12のフローチャートでは、対象プログラム50に含まれる命令のうち、非共通命令のみが置換されている。しかしながら、ダイナミックトランスレーションが行われる場合、共通命令の中にも置換すべきものが存在しうる。そこで変換部4100は、対象プログラム50に含まれる命令のうち、共通命令についても、必要に応じて置換してよい。
<非共通命令の出現頻度の算出:S302>
頻度算出部4080は、対象プログラム50における非共通命令の出現頻度を算出する
(S302)。具体的には、頻度算出部4080は、特定の期間(以下、頻度算出期間)の中で、第1プロセッサ10において非共通命令が検出された回数に基づいて、非共通命令の出現頻度を算出する。
例えば頻度算出部4080は、頻度算出期間の時間長で、頻度算出期間における非共通命令の検出回数を割ることにより得られる値を、非共通命令の出現頻度として算出する。頻度算出期間の時間長を t、頻度算出期間における非共通命令の検出回数を c とおくと、非共通命令の出現頻度は c/t となる。
なお、非共通命令の出現頻度が定期的に算出される場合(言い換えれば、頻度算出期間の長さが一定である場合)、頻度算出期間における非共通命令の検出回数 c を、非共通命令の出現頻度として扱ってもよい。
その他にも例えば、頻度算出部4080は、頻度算出期間の中で第1プロセッサ10によって実行された命令の総数で、頻度算出期間における非共通命令の検出回数を割ることにより得られる値を、非共通命令の出現頻度として算出してもよい。頻度算出期間の中で第1プロセッサ10によって実行された命令の総数 Na、頻度算出期間における非共通命令の検出回数を c とおくと、非共通命令の出現頻度は c/Na となる。
なお、第1プロセッサ10によって実行された命令の回数は、例えば、実行された命令の回数をカウントするカウンタを第1プロセッサ10に設けることにより、把握することができる。
その他にも例えば、頻度算出部4080は、頻度算出期間における第1プロセッサ10のプログラムカウンタの値の増加量で、頻度算出期間における非共通命令の検出回数を割ることにより得られる値を、共通命令の出現頻度として算出してもよい。頻度算出期間におけるプログラムカウンタの値の増加量を d、頻度算出期間における非共通命令の検出回数を c とおくと、非共通命令の出現頻度は c/d となる。
非共通命令の出現頻度を算出するタイミングは任意である。例えば非共通命令の出現頻度は、定期的なタイミングで算出される。その他にも例えば、非共通命令の出現頻度は、所定の条件が満たされたことに応じて算出される。所定の条件は、例えば、「所定のユーザ入力が行われた」などといった条件である。
ここで、対象プログラム50の実行が開始されてから、非共通命令の出現頻度が最初に算出されるまでの間について、第1処理と第2処理のどちらが行われるようにするのかは、任意である。例えば、命令実行制御装置4000の管理者によって、第1処理と第2処理のいずれかが選択される。
その他にも例えば、対象プログラム50が過去に命令実行制御装置4000によって実行されたプログラムである場合、対象プログラム50の過去の実行時の情報に基づいて、第1処理と第2処理のどちらかが選択されてもよい。具体的には、命令実行制御装置4000は、対象プログラム50を第1プロセッサ10に実行させた際に、第1処理が選択された回数(非共通命令の出現頻度が閾値未満であった回数)と第2処理が選択された回数(非共通命令の出現頻度が閾値以上であった回数)の双方を、対象プログラム50の識別情報に対応づけて格納しておく。そして命令実行制御装置4000は、非共通命令の出現頻度が最初に算出されるまでの間、第1処理と第2処理のうち、過去の実行時における選択回数が多い処理を利用する。
以上、本発明者によってなされた発明を実施形態に基づき具体的に説明したが、本発明は前記実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
なお、上述の例において、プログラムは、コンピュータに読み込まれた場合に、実施形態で説明された1又はそれ以上の機能をコンピュータに行わせるための命令群(又はソフトウェアコード)を含む。プログラムは、非一時的なコンピュータ可読媒体又は実体のある記憶媒体に格納されてもよい。限定ではなく例として、コンピュータ可読媒体又は実体のある記憶媒体は、RAM、ROM、フラッシュメモリ、SSD 又はその他のメモリ技術、CD-ROM、digital versatile disc(DVD)、Blu-ray(登録商標)ディスク又はその他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ又はその他の磁気ストレージデバイスを含む。プログラムは、一時的なコンピュータ可読媒体又は通信媒体上で送信されてもよい。限定ではなく例として、一時的なコンピュータ可読媒体又は通信媒体は、電気的、光学的、音響的、またはその他の形式の伝搬信号を含む。
10 第1プロセッサ
20 第2プロセッサ
30 第1命令セット
40 第2命令セット
50 対象プログラム
60 対応情報
62 非共通命令
64 共通命令
70 ハードウエア
80 OS
90 不正命令ハンドラ
100 ユーザアプリケーション
110 ハイパーバイザ
120 不正命令ハンドラ
130 仮想マシン
1000 コンピュータ
1020 バス
1040 プロセッサ
1060 メモリ
1080 ストレージデバイス
1100 入出力インタフェース
1120 ネットワークインタフェース
2000 命令実行制御装置
2020 取得部
2040 第1制御部
2060 第2制御部
3000 命令実行制御装置
3020 取得部
3040 第1制御部
3060 第2制御部
4000 命令実行制御装置
4020 取得部
4040 第1制御部
4080 頻度算出部
4100 変換部

Claims (15)

  1. 第1のプロセッサでは実行できないものの第2のプロセッサでは実行できる命令である非共通命令に対して、前記第1のプロセッサと前記第2のプロセッサの双方で実行できる共通命令が対応づけられている対応情報を取得する取得ステップと、
    前記第1のプロセッサにおいて前記非共通命令が検出された場合に、前記対応情報においてその非共通命令に対応づけられている前記共通命令を特定し、前記特定した共通命令を前記第1のプロセッサに実行させる第1制御ステップと、をコンピュータに実行させるプログラム。
  2. 前記第1制御ステップにおいて、前記第1のプロセッサで前記非共通命令が検出されたことに応じて実行される例外ハンドラの中で、前記対応情報においてその非共通命令に対応づけられている前記共通命令を前記第1のプロセッサに実行させる、請求項1に記載のプログラム。
  3. 前記例外ハンドラの中において、その例外ハンドラが実行される原因となった命令の次に実行される次命令が前記非共通命令であるか否かを判定し、前記次命令が前記非共通命令である場合、前記対応情報において前記次命令に対応づけられている前記共通命令を前記第1のプロセッサに実行させる第2制御ステップを、前記コンピュータにさらに実行させる請求項2に記載のプログラム。
  4. 前記非共通命令の出現頻度を算出する頻度算出ステップと、
    前記非共通命令の出現頻度が閾値以上である場合に、前記対応情報を用いて、命令列を前記第1のプロセッサに実行させる前に、その命令列を、前記非共通命令が含まれない命令列に変換する変換ステップと、を前記コンピュータにさらに実行させ、
    前記第1制御ステップは、前記非共通命令の出現頻度が前記閾値未満である場合に実行される、請求項1に記載のプログラム。
  5. 前記頻度算出ステップにおいて、
    所定の時間長の期間に前記非共通命令が検出された回数と、前記所定の時間長とに基づいて、前記非共通命令の出現頻度を算出するか、
    前記期間に実行された命令の総数と、前記期間に前記非共通命令が検出された回数とに基づいて、前記非共通命令の出現頻度を算出するか、又は、
    前記期間におけるプログラムカウンタの値の増加量と、前記期間に前記非共通命令が検出された回数とに基づいて、前記非共通命令の出現頻度を算出する、請求項4に記載のプログラム。
  6. 第1のプロセッサでは実行できないものの第2のプロセッサでは実行できる命令である非共通命令に対して、前記第1のプロセッサと前記第2のプロセッサの双方で実行できる共通命令が対応づけられている対応情報を取得する取得部と、
    前記第1のプロセッサにおいて前記非共通命令が検出された場合に、前記対応情報においてその非共通命令に対応づけられている前記共通命令を特定し、前記特定した共通命令を前記第1のプロセッサに実行させる第1制御部と、を有する命令実行制御装置。
  7. 前記第1制御部は、前記第1のプロセッサにおいて前記非共通命令が検出されたことに応じて実行される例外ハンドラの中において、前記対応情報においてその非共通命令に対応づけられている前記共通命令を前記第1のプロセッサに実行させる、請求項6に記載の命令実行制御装置。
  8. 前記例外ハンドラの中において、その例外ハンドラが実行される原因となった命令の次に実行される次命令が前記非共通命令であるか否かを判定し、前記次命令が前記非共通命令である場合、前記対応情報において前記次命令に対応づけられている前記共通命令を前記第1のプロセッサに実行させる第2制御部を有する、請求項7に記載の命令実行制御装置。
  9. 前記非共通命令の出現頻度を算出する頻度算出部と、
    前記非共通命令の出現頻度が閾値以上である場合に、前記対応情報を用いて、プログラムの命令列を前記第1のプロセッサに実行させる前に、その命令列を、前記非共通命令が含まれない命令列に変換する変換部と、を有し、
    前記第1制御部は、前記非共通命令の出現頻度が前記閾値未満である場合に動作する、請求項6に記載の命令実行制御装置。
  10. 前記頻度算出部は、
    所定の時間長の期間に前記非共通命令が検出された回数と、前記所定の時間長とに基づいて、前記非共通命令の出現頻度を算出するか、
    前記期間に実行された命令の総数と、前記期間に前記非共通命令が検出された回数とに基づいて、前記非共通命令の出現頻度を算出するか、又は、
    前記期間におけるプログラムカウンタの値の増加量と、前記期間に前記非共通命令が検出された回数とに基づいて、前記非共通命令の出現頻度を算出する、請求項9に記載の命令実行制御装置。
  11. 第1のプロセッサでは実行できないものの第2のプロセッサでは実行できる命令である非共通命令に対して、前記第1のプロセッサと前記第2のプロセッサの双方で実行できる共通命令が対応づけられている対応情報を取得する取得ステップと、
    前記第1のプロセッサにおいて前記非共通命令が検出された場合に、前記対応情報においてその非共通命令に対応づけられている前記共通命令を特定し、前記特定した共通命令を前記第1のプロセッサに実行させる第1制御ステップと、を有する、コンピュータによって実行される命令実行制御方法。
  12. 前記第1制御ステップにおいて、前記第1のプロセッサで前記非共通命令が検出されたことに応じて実行される例外ハンドラの中において、前記対応情報においてその非共通命令に対応づけられている前記共通命令を前記第1のプロセッサに実行させる、請求項11に記載の命令実行制御方法。
  13. 前記例外ハンドラの中において、その例外ハンドラが実行される原因となった命令の次に実行される次命令が前記非共通命令であるか否かを判定し、前記次命令が前記非共通命令である場合、前記対応情報において前記次命令に対応づけられている前記共通命令を前記第1のプロセッサに実行させる第2制御ステップを有する、請求項12に記載の命令実行制御方法。
  14. 前記非共通命令の出現頻度を算出する頻度算出ステップと、
    前記非共通命令の出現頻度が閾値以上である場合に、前記対応情報を用いて、プログラムの命令列を前記第1のプロセッサに実行させる前に、その命令列を、前記非共通命令が含まれない命令列に変換する変換ステップと、を有し、
    前記第1制御ステップは、前記非共通命令の出現頻度が前記閾値未満である場合に実行される、請求項11に記載の命令実行制御方法。
  15. 前記頻度算出ステップにおいて、
    所定の時間長の期間に前記非共通命令が検出された回数と、前記所定の時間長とに基づいて、前記非共通命令の出現頻度を算出するか、
    前記期間に実行された命令の総数と、前記期間に前記非共通命令が検出された回数とに基づいて、前記非共通命令の出現頻度を算出するか、又は、
    前記期間におけるプログラムカウンタの値の増加量と、前記期間に前記非共通命令が検出された回数とに基づいて、前記非共通命令の出現頻度を算出する、請求項14に記載の命令実行制御方法。
JP2022182578A 2022-11-15 2022-11-15 プログラム、命令実行制御装置、及び命令実行制御方法 Pending JP2024072010A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2022182578A JP2024072010A (ja) 2022-11-15 2022-11-15 プログラム、命令実行制御装置、及び命令実行制御方法
US18/479,320 US20240160450A1 (en) 2022-11-15 2023-10-02 Program, instruction execution control apparatus, and instruction execution control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022182578A JP2024072010A (ja) 2022-11-15 2022-11-15 プログラム、命令実行制御装置、及び命令実行制御方法

Publications (1)

Publication Number Publication Date
JP2024072010A true JP2024072010A (ja) 2024-05-27

Family

ID=91027958

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022182578A Pending JP2024072010A (ja) 2022-11-15 2022-11-15 プログラム、命令実行制御装置、及び命令実行制御方法

Country Status (2)

Country Link
US (1) US20240160450A1 (ja)
JP (1) JP2024072010A (ja)

Also Published As

Publication number Publication date
US20240160450A1 (en) 2024-05-16

Similar Documents

Publication Publication Date Title
US9558016B2 (en) Platform system, method for changing support hardware configuration of universal extensible firmware interface basic input output system and computer program product
US9367311B2 (en) Multi-core processor system, synchronization control system, synchronization control apparatus, information generating method, and computer product
TWI410864B (zh) 在一處理環境中控制指令執行
US8745362B2 (en) Operating system aware branch predictor using a dynamically reconfigurable branch history table
US10372493B2 (en) Thread and/or virtual machine scheduling for cores with diverse capabilities
US10102373B2 (en) Method and apparatus for capturing operation in a container-based virtualization system
US11163659B2 (en) Enhanced serial peripheral interface (eSPI) signaling for crash event notification
US20130036426A1 (en) Information processing device and task switching method
CN111124599B (zh) 虚拟机内存数据迁移方法、装置、电子设备及存储介质
US11436146B2 (en) Storage control apparatus, processing apparatus, computer system, and storage control method
US20180143890A1 (en) Simulation apparatus, simulation method, and computer readable medium
US9535713B2 (en) Manipulating rules for adding new devices
CN112631994A (zh) 数据迁移方法及系统
CN111666036B (zh) 一种迁移数据的方法、装置及系统
JP2024072010A (ja) プログラム、命令実行制御装置、及び命令実行制御方法
US20120017070A1 (en) Compile system, compile method, and storage medium storing compile program
JP6567215B2 (ja) アーキテクチャ選定装置、アーキテクチャ選定方法およびアーキテクチャ選定プログラム
CN106940626B (zh) 一种获取虚拟机多磁盘间差异数据的方法和系统
CN106991058B (zh) 预取文件处理方法及装置
US20190369997A1 (en) Simulation device, simulation method, and computer readable medium
US7882336B2 (en) Employing a buffer to facilitate instruction execution
CN103077069B (zh) 指令解析的方法及装置
CN112445587A (zh) 一种任务处理的方法以及任务处理装置
US11442668B2 (en) Prioritizing volume accesses in multi-volume storage device based on execution path of a service
US20230401060A1 (en) Processing unit, computing device and instruction processing method