図面 (/)

技術 情報処理装置および情報処理方法およびプログラム

出願人 三菱電機株式会社
発明者 山本整
出願日 2011年12月6日 (9年0ヶ月経過) 出願番号 2011-266768
公開日 2013年6月17日 (7年6ヶ月経過) 公開番号 2013-120419
状態 未査定
技術分野 特別なプログラム実行装置 特殊なプログラム実行装置
主要キーワード 演算フラグ 各選択候補 C言語 演算命令実行 ホスト命令 オーバーフローフラグ 模擬実行 判別基準
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2013年6月17日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (12)

課題

複数の演算フラグが設定される命令セットシミュレーション高速化を実現する。

解決手段

ホスト命令実行部104は、複数の演算フラグが設定された演算命令のうち、条件分岐命令が使用する演算フラグに対応付けられ最後に実行される演算命令を条件分岐命令が使用する演算フラグ毎に選択する。そして、ホスト命令実行部104は、選択した演算命令の演算フラグのうち条件分岐命令が使用する演算フラグのみフラグ値を算出し、選択されなかった演算命令のフラグ値算出を省略することで、命令セットシミュレーションの高速化を実現する。

概要

背景

従来、命令セットを予め解析し、解析結果に基づいて選定された演算命令以外は、演算値の状態を示すフラグ(以下、演算値の状態を示すフラグを「演算フラグ」と称する)のフラグ値変更処理を行わないことで命令セットのシミュレーション高速化を行う方法が知られている(例えば、特許文献1)。

概要

複数の演算フラグが設定される命令セットシミュレーションの高速化を実現する。ホスト命令実行部104は、複数の演算フラグが設定された演算命令のうち、条件分岐命令が使用する演算フラグに対応付けられ最後に実行される演算命令を条件分岐命令が使用する演算フラグ毎に選択する。そして、ホスト命令実行部104は、選択した演算命令の演算フラグのうち条件分岐命令が使用する演算フラグのみフラグ値を算出し、選択されなかった演算命令のフラグ値算出を省略することで、命令セットシミュレーションの高速化を実現する。

目的

この発明は前記のような課題を解決することを主な目的とするもので、例えば、複数のカテゴリー分類される演算命令が含まれる命令セットシミュレーションの高速化を実現することを主な目的とする

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

実行順序が指定されている複数の演算命令を実行する演算命令実行部と、前記演算命令実行部が前記複数の演算命令の実行を開始した後に到来する選択タイミングにおいて、前記複数の演算命令の中から所定の演算命令を選択する演算命令選択部と、前記複数の演算命令のうち前記演算命令選択部による選択候補となる1つ以上の演算命令を選択候補演算命令として定義するとともに、各選択候補演算命令を、複数種カテゴリーのうちの1つ以上のカテゴリーに分類するカテゴリー情報を記憶するカテゴリー情報記憶部とを備え、前記演算命令選択部は、前記選択タイミングにおいて、前記複数種のカテゴリーのうち、演算命令の選択の対象となるカテゴリーが選択対象カテゴリーとして通知され、選択候補演算命令のうち、前記選択対象カテゴリーに分類されており、前記選択タイミングの前に最後に前記演算命令実行部によって実行が完了した選択候補演算命令を選択することを特徴とする情報処理装置

請求項2

前記演算命令実行部は、分類されたカテゴリーのうちの少なくとも1つが相互に異なる2つ以上の選択候補演算命令を、前記複数の演算命令の少なくとも一部として実行することを特徴とする請求項1記載の情報処理装置。

請求項3

前記演算命令実行部は、選択候補演算命令を実行する度に、実行した選択候補演算命令が示される選択候補情報を生成し、実行した選択候補演算命令が分類されているカテゴリーに対応付けて選択候補情報を出力し、前記情報処理装置は、更に、前記演算命令実行部により出力された選択候補情報をカテゴリーに対応付けて記憶する選択候補情報記憶部を備え、前記演算命令選択部は、前記選択タイミングにおいて、前記選択候補情報記憶部によりカテゴリーに対応付けられて記憶されている選択候補情報のうち、選択対象カテゴリーに対応付けられ、前記演算命令実行部により最後に出力された選択候補情報に示される選択候補演算命令を選択することを特徴とする請求項1又は2記載の情報処理装置。

請求項4

前記カテゴリー情報記憶部は、演算値の状態を判別するために用いられる複数種の判別基準に対応させて複数種のカテゴリーが定義され、いずれの判別基準が用いられて各選択候補演算命令の演算値の状態が判別されるかにより、各選択候補演算命令が前記複数種のカテゴリーのうちの1つ以上のカテゴリーに分類されているカテゴリー情報を記憶し、前記情報処理装置は、更に、前記演算命令選択部により選択候補演算命令が選択された後に、選択された選択候補演算命令を実行して演算値を算出し、前記選択対象カテゴリーに対応する判別基準を用いて、算出した演算値の状態を判別する状態判別部を備えることを特徴とする請求項1〜3いずれか記載の情報処理装置。

請求項5

前記カテゴリー情報記憶部は、演算値の状態を判別するために用いられる複数種の判別基準に対応させて複数種のカテゴリーが定義され、いずれの判別基準が用いられて各選択候補演算命令の演算値の状態が判別されるかにより、各選択候補演算命令が前記複数種のカテゴリーのうちの1つ以上のカテゴリーに分類されているカテゴリー情報を記憶し、前記演算命令実行部は、選択候補演算命令を実行して演算値を算出し、更に、選択候補演算命令を実行する度に、実行した選択候補演算命令と前記実行した選択候補演算命令の演算値とが示される選択候補情報を生成し、実行した選択候補演算命令が分類されているカテゴリーに対応付けて選択候補情報を出力し、前記情報処理装置は、更に、前記演算命令実行部により出力された選択候補情報をカテゴリーに対応付けて記憶する選択候補情報記憶部を備え、前記演算命令選択部は、前記選択タイミングにおいて、前記選択候補情報記憶部によりカテゴリーに対応付けられて記憶されている選択候補情報のうち、選択対象カテゴリーに対応付けられ、前記演算命令実行部により最後に出力された選択候補情報に示される選択候補演算命令を選択し、前記情報処理装置は、更に、前記演算命令選択部により選択された選択候補演算命令が示される選択候補情報に示される演算値を抽出し、前記選択対象カテゴリーに対応する判別基準を用いて、抽出した演算値の状態を判別する状態判別部を備えることを特徴とする請求項1又は2記載の情報処理装置。

請求項6

前記情報処理装置は、更に、前記状態判別部により判別された演算値の状態を参照し、参照した演算値の状態が予め設定された状態に合致するか否かを判定する演算値判定部を備えることを特徴とする請求項4又は5記載の情報処理装置。

請求項7

コンピュータが、実行順序が指定されている複数の演算命令を実行する演算命令実行ステップと、前記演算命令実行ステップが前記複数の演算命令の実行を開始した後に到来する選択タイミングにおいて、前記コンピュータが、前記複数の演算命令の中から所定の演算命令を選択する演算命令選択ステップと、前記複数の演算命令のうち前記演算命令選択ステップによる選択候補となる1つ以上の演算命令を選択候補演算命令として定義するとともに、各選択候補演算命令を、複数種のカテゴリーのうちの1つ以上のカテゴリーに分類するカテゴリー情報を前記コンピュータが所定の記憶領域から読み出す読み出しステップとを備え、前記演算命令選択ステップでは、前記コンピュータが、前記選択タイミングにおいて、前記複数種のカテゴリーのうち、演算命令の選択の対象となるカテゴリーが選択対象カテゴリーとして通知される情報を受信し、選択候補演算命令のうち、前記選択対象カテゴリーに分類されており、前記選択タイミングの前に最後に前記演算命令実行ステップによって実行が完了した選択候補演算命令を選択することを特徴とする情報処理方法

請求項8

実行順序が指定されている複数の演算命令を実行する演算命令実行ステップと、前記演算命令実行ステップが前記複数の演算命令の実行を開始した後に到来する選択タイミングにおいて、前記複数の演算命令の中から所定の演算命令を選択する演算命令選択ステップと、前記複数の演算命令のうち前記演算命令選択ステップによる選択候補となる1つ以上の演算命令を選択候補演算命令として定義するとともに、各選択候補演算命令を、複数種のカテゴリーのうちの1つ以上のカテゴリーに分類するカテゴリー情報を所定の記憶領域から読み出す読み出しステップとをコンピュータに実行させるとともに、前記演算命令選択ステップでは、前記コンピュータに、前記選択タイミングにおいて、前記複数種のカテゴリーのうち、演算命令の選択の対象となるカテゴリーが選択対象カテゴリーとして通知される情報を受信させ、選択候補演算命令のうち、前記選択対象カテゴリーに分類されており、前記選択タイミングの前に最後に前記演算命令実行ステップによって実行が完了した選択候補演算命令を選択させることを特徴とするプログラム

技術分野

0001

この発明は、命令セットシミュレーションを実行する情報処理装置および情報処理方法およびプログラムに関する。

背景技術

0002

従来、命令セットを予め解析し、解析結果に基づいて選定された演算命令以外は、演算値の状態を示すフラグ(以下、演算値の状態を示すフラグを「演算フラグ」と称する)のフラグ値変更処理を行わないことで命令セットのシミュレーション高速化を行う方法が知られている(例えば、特許文献1)。

先行技術

0003

特開平3−168836号公報

発明が解決しようとする課題

0004

従来の命令セットシミュレーションの高速化方法は、演算フラグが複数種類設定される場合に、演算フラグ毎にフラグ値変更処理を行う演算命令を選定することが出来ず、複数の演算フラグが設定される命令セットシミュレーションの高速化が出来ないという課題があった。

0005

ここで、命令セットに含まれる演算命令には、複数種の演算フラグのうちの1つ以上の演算フラグが対応付けられている演算命令が含まれる。
つまり、演算フラグが対応付けられている演算命令は、演算フラグに応じて、複数種のカテゴリーのうちのいずれかに分類される。
一方、命令セットシミュレーションでは、特定の演算フラグ(カテゴリー)を選択し、選択した演算フラグ(カテゴリー)の値を参照するタイミング(例えば、条件分岐命令の実行前)が繰り返し発生する。

0006

各演算フラグのフラグ値は演算命令の実行状況によっては選択タイミングまでに数度にわたって更新されていることがあるが、後続の処理(例えば、条件分岐命令処理)に用いられるのは、特定の演算フラグ(カテゴリー)が対応付けられ、かつ、選択タイミングの直前に実行された演算命令によって得られたフラグ値(つまり、最後に更新された特定の演算フラグのフラグ値)のみである。
しかし、従来技術では、フラグ値を変更させる演算命令を演算フラグ(カテゴリー)毎に選定することができない。

0007

そのため、従来技術では、複数のカテゴリーに分類される演算命令が含まれる命令セットシミュレーションにおいて、全演算フラグ(カテゴリー)について、フラグ値を変更させる演算命令を実行順序に従って実行し、演算命令の実行の度にフラグ値を記録し、記録したフラグ値の中から選択タイミングの直前に更新されたフラグ値を選択する。
このため、従来技術では、事前に全ての演算命令を実行しなければならず、命令セットシミュレーションの高速化が困難である。

0008

この発明は前記のような課題を解決することを主な目的とするもので、例えば、複数のカテゴリーに分類される演算命令が含まれる命令セットシミュレーションの高速化を実現することを主な目的とする。

課題を解決するための手段

0009

この発明に係る情報処理装置は、
実行順序が指定されている複数の演算命令を実行する演算命令実行部と、
前記演算命令実行部が前記複数の演算命令の実行を開始した後に到来する選択タイミングにおいて、前記複数の演算命令の中から所定の演算命令を選択する演算命令選択部と、
前記複数の演算命令のうち前記演算命令選択部による選択候補となる1つ以上の演算命令を選択候補演算命令として定義するとともに、各選択候補演算命令を、複数種のカテゴリーのうちの1つ以上のカテゴリーに分類するカテゴリー情報を記憶するカテゴリー情報記憶部とを備え、
前記演算命令選択部は、
前記選択タイミングにおいて、
前記複数種のカテゴリーのうち、演算命令の選択の対象となるカテゴリーが選択対象カテゴリーとして通知され、
選択候補演算命令のうち、前記選択対象カテゴリーに分類されており、前記選択タイミングの前に最後に前記演算命令実行部によって実行が完了した選択候補演算命令を選択することを特徴とする。

発明の効果

0010

この発明に係る情報処理装置は、選択対象カテゴリーに分類されており、選択タイミングにおいて最後に実行された選択候補演算命令を選択する。すなわち、この発明に係る情報処理装置は、選択タイミングにおいて、条件分岐命令により参照されるフラグ値が設定される選択候補演算命令をカテゴリー(演算フラグ)毎に選択する。
そして、この発明に係る情報処理装置は、選択された選択候補演算命令のカテゴリー(演算フラグ)のうち条件分岐命令により参照されるカテゴリー(演算フラグ)に対してのみフラグ値変更処理を行い、選択されなかった選択候補演算命令に対してはフラグ値変更処理を省略することで命令セットシミュレーションの高速化を実現する。

図面の簡単な説明

0011

実施の形態1を示す図で、命令セットシミュレーション装置の構成の例を示す図。
実施の形態1を示す図で、ターゲット命令列の例を示す図。
実施の形態1を示す図で、カテゴリー情報の例を示す図。
実施の形態1を示す図で、ホスト命令列の例を示す図。
実施の形態1を示す図で、ターゲット命令変換部の処理の例を示すフローチャート
実施の形態1を示す図で、演算フラグ変更命令情報記憶命令生成部の処理の例を示すフローチャート。
実施の形態1を示す図で、演算フラグ変更命令生成部の処理の例を示すフローチャート。
実施の形態1を示す図で、演算フラグ変更命令情報の第1の例を示す図。
実施の形態1を示す図で、演算フラグ変更命令情報の第2の例を示す図。
実施の形態2を示す図で、演算フラグ変更命令情報の第3の例を示す図。
実施の形態1〜2を示す図で、各実施の形態に示した命令セットシミュレーション装置のハードウェア資源の例を示す図。

実施例

0012

実施の形態1.
本実施の形態において説明する命令セットシミュレーション装置は、命令セットのシミュレーション(模擬実行)を行う情報処理装置である。すなわち、命令セットシミュレーション装置は情報処理装置に対応する。

0013

(命令セットシミュレーションの説明)
ここで、命令セットシミュレーションについて説明する。
まず、命令セットとは所定のCPU(Central Processing Unit、中央処理装置処理装置演算装置マイクロプロセッサマイクロコンピュータプロセッサともいう)で使用可能な命令集合のことである。
そして、命令セットシミュレーションとは、所定のCPUの命令セットの命令から成る命令列(プログラム)をシミュレーション装置が実行可能な命令から成るシミュレーションプログラムに変換し、シミュレーション装置がシミュレーションプログラムを用いてシミュレーションすることである。

0014

ここで、シミュレーション装置のCPUを「ホストプロセッサ」と称する。そして、ホストプロセッサにより実行される命令を「ホスト命令」と称し、シミュレーションプログラムを「ホスト命令列」と称する。
また、シミュレーション装置がシミュレーションするシミュレーション対象の所定のCPUを「ターゲットプロセッサ」と称し、ターゲット命令により実行される命令を「ターゲット命令」と称し、ターゲット命令から成るプログラムを「ターゲット命令列」と称する。

0015

そして、ターゲット命令は、例えば後述のようにアセンブリ言語などで記述され、ホスト命令は例えばC言語などの高級言語で記述される。

0016

なお、命令セットシミュレーションには、ホストプロセッサとは異種のCPU(ターゲットプロセッサ)の命令セットをシミュレーションする場合と、ホストプロセッサと同種のCPU(ターゲットプロセッサ)の命令セットをシミュレーションする場合とが考えられる。
前者の場合も命令セットシミュレーション装置100は、ターゲット命令からホスト命令を生成(後述で説明)する際にホストプロセッサが実行可能なホスト命令に変換することが可能である。

0017

(命令セットシミュレーション装置の構成)
図1は、命令セットシミュレーション装置の構成の例を示す図である。
ここで、命令セットシミュレーション装置100を構成する構成要素について説明する。

0018

ターゲット命令列記憶部101は、命令セットシミュレーションの対象となるターゲット命令列を記憶する。
ターゲット命令変換部102は、ターゲット命令列記憶部101に記憶されているターゲット命令列を用いてホスト命令例を生成する。

0019

オペランドデータ演算命令生成部105、演算フラグ変更命令情報記憶命令生成部106、演算フラグ変更命令生成部107、ホスト分岐命令生成部108は、ターゲット命令変換部102がホスト命令例を生成する際に、ターゲット命令の種類に応じて処理が行われる。詳細は後述する。

0020

ホスト命令列記憶部103は、ターゲット命令変換部102により生成されたホスト命令例を記憶する。
ここで、ターゲット命令列記憶部101とホスト命令列記憶部103とはカテゴリー情報記憶部に対応する。

0021

ホスト命令実行部104は、ホスト命令実行部104に記憶されているホスト命令例を実行する。
ここで、ホスト命令実行部104は、演算命令実行部と演算命令選択部と状態判別部と演算値判定部とに対応する。そして、ホスト命令実行部104は、ホストプロセッサに対応する。以降ホストプロセッサをホスト命令実行部104と称する。

0022

演算フラグ変更命令記憶部109は、ホスト命令実行部104がホスト命令例を実行した場合に、所定の処理により選択された演算命令を記憶する(詳細は後述する)。
ここで、演算フラグ変更命令記憶部109は、選択候補情報記憶部に対応する。

0023

(ターゲット命令列の説明)
図2は、ターゲット命令列の例を示す図である。
ターゲット命令202は、例えば図2に示すようにアセンブリ言語で記述される。
そして、ターゲット命令202は例えば図2に示すように第1オペランドと第2オペランドとの2つのオペランド203が設定されている。ここで、オペランド203には、ターゲット命令202により使用される定数アドレス値が示されるが、オペランド203の具体例の図示は省略する(以降の説明においても同様)。

0024

ターゲット命令202は、アドレス204に示される値の小さい順に実行される。すなわち、ターゲット命令202は、実行順序が指定されている。
ここで、図2に示すアドレス204「A1」が最小の値であるとし、順番に「A2」「A3」と値が大きくなり、「A6」が最大の値であるとする。すなわち、ターゲット命令202は、図2のD201の「ADD」が最初に実行され、D206の「MOV」が最後に実行されるものとする。

0025

ここで、例えば、図2のD201に示されるターゲット命令202「ADD」は、オペランド203に示される値を用いて加算が行われる演算命令である。また、D203に示されるターゲット命令202「DIV」はオペランド203に示される値を用いて除算が行われる演算命令であり、D206に示されるターゲット命令202「MOV」はオペランド203に示される値を用いて値の代入(移動)が行われる演算命令である。
また、図2のD205に示されるターゲット命令202「BGT」は、所定の演算フラグ(後述)を参照して、分岐処理が行われる条件分岐命令である。
すなわち、ターゲット命令列301には、演算命令と条件分岐命令とが含まれる。

0026

(演算フラグとカテゴリー情報の説明)
図3は、カテゴリー情報の例を示す図である。
説明を分かりやすくする為に、図2に示すターゲット命令列301に対応させてカテゴリー情報302の例を示しているが、アドレス204の情報は無くても良いし、同じ内容のターゲット命令202(例えば図3のD301の「ADD」とD302の「ADD」)が1つにまとめられていても良い。

0027

カテゴリー情報302は、ターゲット命令列記憶部101により記憶されている。
カテゴリー情報302は、ターゲット命令列301のターゲット命令202が実行された場合にいずれの演算フラグ201が変更もしくは参照されるかを示す情報である。
なお、図3に示される「G」は、ターゲット命令202が実行された場合に演算フラグ201が変更されることを示し、図3に示される「C」は、ターゲット命令202が実行された場合に演算フラグ201を参照されることを示す。
例えば、図3のD301(ターゲット命令202「ADD」)は、演算フラグ201「1〜4」が変更されることを示し、D303(ターゲット命令202「DIV」)は、演算フラグ201「4」のみを変更されることを示し、D305(ターゲット命令202「BGT」)は、演算フラグ201「2〜4」が参照されることを示し、D306(ターゲット命令202「MOV」)は、演算フラグ201の変更も参照もされないことを示す。
そして、演算フラグ201が参照されるターゲット命令202が条件分岐命令であり、その他のターゲット命令202が演算命令である。

0028

ここで、演算フラグ201とは、プロセッサ・ステータスワードとも称され、演算値の状態を所定のフラグ値(例えば「1」と「0」)で示す情報である。具体的な演算フラグ201の種類の例としては、演算値がゼロである場合にフラグ値「1」が設定され、演算値がゼロ以外である場合にフラグ値「0」が設定されるゼロフラグ(ZF)や、演算値がオーバーフローした場合にフラグ値「1」が設定され、演算値がオーバーフローしていない場合にフラグ値「0」が設定されるオーバーフローフラグ(OF)などがある。
図3においては、具体例の図示は省略するが、演算フラグ201「1〜4」のそれぞれに、例えば前述のゼロフラグ(ZF)やオーバーフローフラグ(OF)などが割り当てられている。そして、図3においては、「1〜4」の4つの種類の演算フラグ201が示されている。

0029

ターゲットプロセッサがターゲット命令列301を実行した場合には、ターゲットプロセッサにおいて演算フラグ201として割り当てられたレジスタフラグレジスタステータスレジスタ)にフラグ値が設定される。
一方、ホスト命令実行部104がホスト命令列を実行した場合には、レジスタの代わりに例えば何らかの変数が演算フラグ201として設定される。そして、演算フラグ201の判別基準と同等の演算によりフラグ値が算出され、設定された変数にフラグ値が設定される。このフラグ値が算出され、算出されたフラグ値が変数に設定される処理をフラグ値変更処理と称する。そして、ターゲットプロセッサにおいてレジスタにフラグ値が設定される状態が、設定された変数の状態を観測することによりシミュレーションされる。
以降の説明においては、ターゲットプロセッサがターゲット命令列301を実行した場合もホスト命令実行部104がホスト命令列を実行した場合も、特に区別せず、フラグ値が設定される対象を演算フラグ201と称する。

0030

(ホスト命令列の生成処理概要説明
図4は、ホスト命令列の例を示す図である。
図5は、ターゲット命令変換部の処理の例を示すフローチャートである。

0031

まず、図4図5とを用いて、ターゲット命令変換部102が、ターゲット命令列301からホスト命令列303を生成する処理の概要を説明する。

0032

図4に示すホスト命令列303は、図2に示すターゲット命令列301を用いてターゲット命令変換部102が生成したものである。
例えば、図4のD401とD402とのホスト命令が図2のD201のターゲット命令202「ADD」に対応した命令である。そして、図4のD403とD404とのホスト命令が図2にD202のターゲット命令202「ADD」に対応した命令である。以下同様であり説明を省略する。なお、図4に示される個々の命令内容の詳細は後述する。

0033

まず、ターゲット命令変換部102はターゲット命令列記憶部101に記憶されているターゲット命令202とオペランド203の情報とを指定された実行順序の通りに入力する(図5のS501)。
そして、入力したターゲット命令202が演算命令か否かを判定する(図5のS502)。ここで、ターゲット命令列記憶部101は、各ターゲット命令202が演算命令であるのか条件判定命令であるのかを示す情報を記憶している。そして、ターゲット命令変換部102は、ターゲット命令列記憶部101に記憶されている情報を参照し、ターゲット命令202が演算命令であるのか条件判定命令であるのかを判定可能である。

0034

判定の結果、演算命令である場合(図5のS502の「YES」)、ターゲット命令変換部102は、判定されたターゲット命令202とオペランド203の情報とをオペランドデータ演算命令生成部105と演算フラグ変更命令情報記憶命令生成部106とに転送する。
一方、判定の結果、条件分岐命令である場合(図5のS502の「NO」)、ターゲット命令変換部102は、判定されたターゲット命令202とオペランド203の情報とを演算フラグ変更命令生成部107とホスト分岐命令生成部108とに転送する。

0035

オペランドデータ演算命令生成部105は、転送されたターゲット命令202とオペランド203の情報とを用いて、同じ内容の処理をホスト命令実行部104に行わせるホスト命令を例えばC言語などで生成する。
ここで、転送されたターゲット命令202は演算命令であり、オペランドデータ演算命令生成部105は、オペランド203のデータを用いて演算を行う処理をホスト命令実行部104に行わせるホスト命令であるオペランドデータ演算命令を生成する(図5のS503)。具体的なプログラムの記述は省略するが、例えば図4に示すD401がオペランドデータ演算命令である。
なお、生成されたホスト命令(オペランドデータ演算命令)も転送されたターゲット命令202も同じ処理を行う演算命令であり、以降特に区別の必要無い場合は、オペランドデータ演算命令と、演算命令であるターゲット命令202とのいずれも演算命令と称する。

0036

そして、演算フラグ変更命令情報記憶命令生成部106は、転送された演算命令を用いて演算フラグ変更命令情報を演算フラグ変更命令記憶部109に記憶させる処理をホスト命令実行部104に行わせるホスト命令である演算フラグ変更命令情報記憶命令(詳細は後述)を生成する(図5のS504)。例えば図4に示すD402が演算フラグ変更命令情報記憶命令である。ここで、演算フラグ変更命令情報記憶命令は、転送された演算命令を用いてオペランドデータ演算命令生成部105が生成した演算命令に対応付けられている。
また、演算フラグ変更命令情報は、選択候補情報に対応する。

0037

一方、演算フラグ変更命令生成部107は、転送されたターゲット命令202を用いて演算フラグ201を変更する処理をホスト命令実行部104に行わせるホスト命令である演算フラグ変更命令(詳細は後述)を生成する(図5のS505)。例えば図4に示すD409が演算フラグ変更命令である。

0038

そして、ホスト分岐命令生成部108は、転送されたターゲット命令202(条件分岐命令)とオペランド203の情報とを用いて、同じ内容の処理をホスト命令実行部104に行わせるホスト命令であるホスト分岐命令を生成する(図5のS506)。例えば図4に示すD410がホスト分岐命令である。
なお、生成されたホスト命令(ホスト分岐命令)も転送されたターゲット命令202も同じ処理を行う条件分岐命令であり、以降特に区別の必要無い場合は、ホスト分岐命令と、条件分岐命令であるターゲット命令202とのいずれも条件分岐命令と称する。

0039

ターゲット命令変換部102は、全てのターゲット命令202をターゲット命令列記憶部101から入力したか否かを判定する(図5のS507)。そして、ターゲット命令変換部102は全てのターゲット命令202を入力していない場合(図5のS507の「NO」)、図5のS501の処理を再度行い、全てのターゲット命令202を入力した場合(図5のS507の「YES」)、処理を終了し、例えば図4に示すようなホスト命令列303を生成する。
そして、ホスト命令列記憶部103は生成されたホスト命令列303を記憶する。

0040

(ホスト命令列の生成処理の具体例説明)
図6は、演算フラグ変更命令情報記憶命令生成部の処理の例を示すフローチャートである。
図7は、演算フラグ変更命令生成部の処理の例を示すフローチャートである。
次に図2図7を用いてホスト命令列303の生成処理の具体例を説明する。

0041

まず、ターゲット命令変換部102は図2に示すD201のターゲット命令202「ADD」とオペランド203の情報とを入力する(図5のS501)。
そして、ターゲット命令変換部102は、入力されたターゲット命令202が演算命令であると判定し(図5のS502の「YES」)、オペランドデータ演算命令生成部105と演算フラグ変更命令情報記憶命令生成部106とに、ターゲット命令202「ADD」とオペランド203の情報とを転送する。

0042

オペランドデータ演算命令生成部105は、転送されたターゲット命令202「ADD」とオペランド203の情報とを用いて、加算の演算をホスト命令実行部104に行わせる演算命令を生成する(図5のS503、図4のD401)。

0043

そして、演算フラグ変更命令情報記憶命令生成部106は、図5のS503に示す演算フラグ変更命令情報記憶命令の生成処理において、詳細には図6に示す処理を行う。

0044

まず、演算フラグ変更命令情報記憶命令生成部106は、フラグ番号Nを初期化する(図6のS601)。
そして、演算フラグ変更命令情報記憶命令生成部106は、ターゲット命令列記憶部101に記憶されたカテゴリー情報302(図3)を読み出し(参照し)、転送されたターゲット命令202「ADD」が実行された時に、設定されたフラグ番号Nが変更されるか否かを判定する(図6のS602)。ここで、初回はN=1であるので、演算フラグ変更命令情報記憶命令生成部106は、カテゴリー情報302を読み出し、ターゲット命令202「ADD」が実行された時に、演算フラグ201「1」が変更されるか否かを判定する。

0045

ターゲット命令202「ADD」が実行された時に、演算フラグ201「1」が変更されるので(図6のS602の「YES」)、演算フラグ変更命令情報記憶命令生成部106は、演算フラグ変更命令情報記憶命令を生成する(図6のS603)。ここで、演算フラグ変更命令情報記憶命令は、ターゲット命令202「ADD」が実行された場合に演算フラグ201「1」が変更されることを示す演算フラグ変更命令情報を演算フラグ変更命令記憶部109に記憶させる処理をホスト命令実行部104に行わせる命令である。

0046

一方、例えば、ターゲット命令202が図3のD303に示す「DIV」であった場合は、演算フラグ変更命令情報記憶命令生成部106はカテゴリー情報302を読み出し、演算フラグ201「1」が変更されないと判定する(図6のS602の「NO」)。そして、演算フラグ変更命令情報記憶命令生成部106は演算フラグ変更命令情報記憶命令を生成しない。

0047

そして、演算フラグ変更命令情報記憶命令生成部106は、フラグ番号Nをインクリメントする(図6のS604)。
次に、演算フラグ変更命令情報記憶命令生成部106は、フラグ番号Nが最大値に達したか否かを判定する(図6のS605)。ここで本例の場合は、演算フラグ201が「1〜4」の場合を想定しているので、最大値は「4」となる。

0048

演算フラグ変更命令情報記憶命令生成部106は、全ての演算フラグ201に対して図6のS602〜S605の処理を行う。
そして、演算フラグ変更命令情報記憶命令生成部106は、ターゲット命令202「ADD」の場合、演算フラグ201「1〜4」が変更されることを示す演算フラグ変更命令情報を演算フラグ変更命令記憶部109に記憶させる処理をホスト命令実行部104に行わせる演算フラグ変更命令情報記憶命令を生成する(図4のD402)。
また、演算フラグ変更命令情報記憶命令生成部106は、ターゲット命令202「DIV」の場合、演算フラグ201「4」が変更されることを示す演算フラグ変更命令情報を演算フラグ変更命令記憶部109に記憶させる処理をホスト命令実行部104に行わせる演算フラグ変更命令情報記憶命令を生成する。

0049

一方、ターゲット命令変換部102が図2に示すD201のターゲット命令202「BGT」とオペランド203の情報とを入力した場合を説明する。
この場合、ターゲット命令変換部102は、入力されたターゲット命令202が演算命令でないと判定し(図5のS502の「NO」)、演算フラグ変更命令生成部107とホスト分岐命令生成部108とに、ターゲット命令202「BGT」とオペランド203の情報とを転送する。

0050

そして、演算フラグ変更命令生成部107は、図5のS505に示す演算フラグ変更命令の生成処理において、詳細には図7に示す処理を行う。

0051

まず、演算フラグ変更命令生成部107は、フラグ番号Nを初期化する(図7のS701)。
そして、演算フラグ変更命令生成部107は、ターゲット命令列記憶部101に記憶されたカテゴリー情報302(図3)を参照し、転送されたターゲット命令202「BGT」が実行された時に、設定されたフラグ番号Nが参照されるか否かを判定する(図7のS702)。ここで、初回はN=1であるので、演算フラグ変更命令情報記憶命令生成部106は、カテゴリー情報302を読み出し、ターゲット命令202「BGT」が実行された時に、演算フラグ201「1」が参照されるか否かを判定する。

0052

ターゲット命令202「BGT」が実行された時に、演算フラグ201「1」が参照されないので(図7のS702の「NO」)、演算フラグ変更命令生成部107は、フラグ番号Nをインクリメントする(図7のS704)。
次に、演算フラグ変更命令生成部107は、フラグ番号Nが最大値に達したか否かを判定する(図7のS705)。ここで本例の場合は、演算フラグ201が「1〜4」の場合を想定しているので、最大値は「4」となる。

0053

フラグ番号Nは「2」が設定されることとなるので(図7のS705の「NO」)、演算フラグ変更命令生成部107は、カテゴリー情報302を読み出し、ターゲット命令202「BGT」が実行された時に、設定された演算フラグ201「2」が参照されるか否かを判定する(図7のS702)。

0054

演算フラグ変更命令生成部107は、ターゲット命令202「BGT」が実行された時に、演算フラグ201「2」が参照されると判定し(図7のS702の「YES」)、演算フラグ変更命令を生成する(図7のS703)。ここで、演算フラグ変更命令は、ターゲット命令202「BGT」が実行された場合に演算フラグ201「2」が参照されることがホスト命令実行部104に通知され、ホスト命令実行部104に通知された演算フラグ201の変更処理を行わせる命令である。

0055

演算フラグ変更命令生成部107は、全ての演算フラグ201に対して図7のS702〜S705の処理を行う。そして、演算フラグ変更命令生成部107は、ターゲット命令202「BGT」の場合、演算フラグ201「2〜4」が参照されることがホスト命令実行部104に通知され、ホスト命令実行部104に通知された演算フラグ201の変更処理を行わせる演算フラグ変更命令を生成する(図4のD409)。

0056

そして、ホスト分岐命令生成部108は、転送されたターゲット命令202「BGT」とオペランド203の情報とを用いて、条件分岐の処理をホスト命令実行部104に行わせる条件分岐命令を生成する(図5のS506、図4のD410)。

0057

(カテゴリー情報とホスト命令列との説明)
ホスト命令列303は、前述で説明の処理によって生成され、図2に示されるターゲット命令列301と図3に示されるカテゴリー情報302とが形式を変えて示されたものである。すなわち、ホスト命令列303はカテゴリー情報302に対応する。

0058

図3のカテゴリー情報302および図4のホスト命令(カテゴリー情報)には、複数の演算命令のうち1つ以上の演算命令が選択候補演算命令として定義されている。ここで、選択候補演算命令とは、演算フラグが対応付けられた演算命令のことである。つまり、この選択候補演算命令とは、演算命令が実行されると対応付けられた演算フラグ201のフラグ値が演算値の状態と演算値の判別基準とに応じて変更される演算命令のことである。そして、選択候補演算命令とは、後述で説明の処理において、ホスト命令実行部104による選択候補となる演算命令のことである。
すなわち、図3のD301に示す「ADD」や、D303に示す「DIV」が選択候補演算命令である。ここで、図3のD306に示す「MOV」は演算フラグ201が変更されないので選択候補演算命令ではない。
図4のホスト命令(カテゴリー情報)においても、いずれかの演算フラグ201が変更される場合に生成される演算フラグ変更命令情報記憶命令が対応付けられている演算命令が選択候補演算命令である(例えば図4のD401やD405)。ここで、演算フラグ変更命令情報記憶命令が対応付けられている演算命令とは、当該演算命令が実施された後に演算フラグ変更命令情報記憶命令が実施される演算命令のことを示す。

0059

更に、図3のカテゴリー情報302および図4のホスト命令(カテゴリー情報)では、各選択候補演算命令が、複数種の演算フラグ201のうちの1つ以上の演算フラグ201に対応付けられている。
つまり、演算フラグ201が対応付けられている選択候補演算命令は、演算フラグに応じて、複数種のカテゴリーのうちのいずれかに分類される。すなわち、複数種のカテゴリーは、複数種の判別基準(演算値の状態を判別するために用いられる判別基準)に対応させて定義されている。
そして、いずれの判別基準が用いられて各選択候補演算命令の演算値の状態が判別されるかにより、各選択候補演算命令は、複数種のカテゴリーのうちの1つ以上のカテゴリーに分類されている。
換言すると、演算フラグ201は、いずれの判別基準によって演算値の状態が判別されるかというカテゴリーに対応するものである。

0060

例えば、選択候補演算命令「ADD」の演算値の状態が、例えば「演算値がゼロであるか否か」という判別基準が用いられて判別される場合を想定する。そして、「演算値がゼロであるか否か」という判別基準が用いられて演算値の状態が判別されるのはゼロフラグという演算フラグ201である。
すなわち、選択候補演算命令「ADD」は、ゼロフラグという演算フラグ201の判別基準が用いられて演算値の状態が判別されるというカテゴリーに分類される。そして、選択候補演算命令「ADD」が実行されると、演算値の状態に応じてゼロフラグという演算フラグ201が変更されることになる。

0061

以降の説明においては、例えば、選択候補演算命令「ADD」が、演算フラグ201「1」の判別基準が用いられて演算値の状態が判別されるというカテゴリーに分類されていることを「選択候補演算命令「ADD」は、演算フラグ201「1」に対応付けられている」と称する。そして、選択候補演算命令「ADD」が実行されると対応付けられている演算フラグ201「1」が変更されることとなる。
そして、同様に「選択候補演算命令が分類されているカテゴリー」を以降「選択候補演算命令が対応付けられている演算フラグ」と称し、「カテゴリー」を以降「演算フラグ」と称する。

0062

図3のカテゴリー情報302の例においては、上述の説明と同様に、選択候補演算命令「ADD」は、演算フラグ201「1」に対応付けられている。そして、選択候補演算命令「ADD」が実行されると、演算値の状態が判別された結果、対応付けられている演算フラグ201「1」のフラグ値が変更されることとなる。演算フラグ201「2〜4」についても同様である為、説明を省略する。
そして、図4のホスト命令(カテゴリー情報)の例においても同様に、D401の選択候補演算命令は、対応付けられた演算フラグ変更命令情報記憶命令によって演算フラグ201「1〜4」が対応付けられている。

0063

また、図3のカテゴリー情報302および図4のホスト命令列303(カテゴリー情報)に示される通り、選択候補演算命令「ADD」は演算フラグ201「1〜4」に対応付けられているが、選択候補演算命令「DIV」は演算フラグ201「4」にのみ対応付けられている。
すなわち、ホスト命令実行部104は、対応付けられた演算フラグ201(分類されたカテゴリー)のうちの少なくとも1つが相互に異なる2つ以上の選択候補演算命令を、複数の演算命令の少なくとも一部として実行する。

0064

(ホスト命令実行部104の演算命令実行処理の説明)
ホスト命令実行部104は、ホスト命令列記憶部103に記憶されているホスト命令列303(カテゴリー情報)を読み出して実行する。このホスト命令列303には、実行順序が指定されている複数の演算命令が含まれている。

0065

ホスト命令実行部104は、まず、図4のD401に示す演算命令を実行する。ここで、図4のD401に示す演算命令は選択候補演算命令であり、ホスト命令実行部104は、選択候補演算命令を実行して演算値を算出する。

0066

次に、ホスト命令実行部104は、図4のD402に示す演算フラグ変更命令情報記憶命令を実行する。
前述および図4に示す通り、演算フラグ変更命令情報記憶命令は、選択候補演算命令に対応付けられているので、ホスト命令実行部104は、選択候補演算命令を実行する度に、演算フラグ変更命令情報記憶命令を実行する。

0067

そして、ホスト命令実行部104は、実行した選択候補演算命令が示される演算フラグ変更命令情報を生成する。ここで、図4のD401に示す演算命令を実行した場合に、ホスト命令実行部104は、図4のD401に示す演算命令が示される演算フラグ変更命令情報を生成する。または、ホスト命令実行部104は、図4のD401に示す演算命令に対応する図2のD201のターゲット命令202とオペランド203とが示される演算フラグ変更命令情報を生成する。あるいは、ホスト命令実行部104は、図4のD401に示す演算命令と図4のD401に示す演算命令に対応する図2のD201のターゲット命令202とオペランド203とが示される演算フラグ変更命令情報を生成しても良い。

0068

更に、ホスト命令実行部104は、実行した選択候補演算命令が対応付けられている演算フラグ(分類されているカテゴリー)に対応付けて演算フラグ変更命令情報を出力する。
具体的には、ホスト命令実行部104は、図4のD401に示す演算命令が対応付けられている演算フラグ201「1〜4」のそれぞれに対応付けて演算フラグ変更命令情報304a〜304dを出力する。すなわち、演算フラグ変更命令情報304a〜304dは、演算フラグ変更命令情報に示される演算命令が実行された場合に、演算フラグ201「1〜4」が変更されることを示す。

0069

そして、演算フラグ変更命令記憶部109は、ホスト命令実行部104により出力された演算フラグ変更命令情報304a〜304dを演算フラグ(カテゴリー)に対応付けて記憶する。

0070

図8は、演算フラグ変更命令情報の第1の例を示す図である。
図8の例は、ホスト命令実行部104により、ターゲット命令202とオペランド203とが示される演算フラグ変更命令情報304a〜dが生成された場合を示している。演算フラグ変更命令情報304a〜dのそれぞれが一つの演算フラグ変更命令情報304を示す。
演算フラグ変更命令記憶部109は、演算フラグ201毎に、演算フラグ変更命令情報304に示されるターゲット命令202とオペランド203とを記憶する。
図8の例は、演算フラグ201「1〜4」がアドレス204「A1」のターゲット命令202「ADD」によって変更されることが示されている。なお、図8の例においては、説明を分かりやすくする為に、アドレス204「A1」を示しているが、アドレス204の情報は特に必要ない為、実際には、無くても良い(以下の説明においても同様である)。
ホスト命令実行部104により、ホスト命令列303の演算命令が示される演算フラグ変更命令情報304が生成された場合は、演算フラグ変更命令記憶部109は、演算フラグ201毎に、演算フラグ変更命令情報304に示されるホスト命令列303の演算命令を記憶する。

0071

そして、次に、ホスト命令実行部104は、図4のD403に示す演算命令を実行し、図4のD404に示す演算フラグ変更命令情報記憶命令を実行する。
そして、図示は省略するが、ホスト命令実行部104は、アドレス204「A2」のターゲット命令202「ADD」が示される演算フラグ変更命令情報304a〜dを生成する。そして、演算フラグ変更命令記憶部109は、新たに演算フラグ変更命令情報304a〜dを、図8に示される演算フラグ変更命令情報304a〜dと置き換えて記憶する(上書きして記憶する)。

0072

そして、途中の説明を省略するが、ホスト命令実行部104は、更に、ホスト命令列303の実行を進め、図4のD408に示す演算フラグ変更命令情報記憶命令を実行する場合を説明する。この場合、ホスト命令実行部104は、演算フラグ201「4」が変更されることを示す演算フラグ変更命令情報304dを生成する。そして、ホスト命令実行部104は、演算フラグ201「4」に対応付けられた演算フラグ変更命令情報304dのみを出力する。
そして、演算フラグ変更命令記憶部109は、今まで記憶されていた演算フラグ201「4」に対応する演算フラグ変更命令情報304dのみを、アドレス204「A4」のターゲット命令202「DIV」が示される演算フラグ変更命令情報304dに置き換えて記憶する(上書きして記憶する)。

0073

図9は、演算フラグ変更命令情報の第2の例を示す図である。
図9の例は、ホスト命令実行部104が図4のD408に示す演算フラグ変更命令情報記憶命令を実行した場合の演算フラグ変更命令記憶部109が記憶する演算フラグ変更命令情報304を示す。

0074

図9の例は、演算フラグ201「1〜3」がアドレス204「A2」のターゲット命令202「ADD」が実行されることにより変更されることが示されており、演算フラグ201「4」がアドレス204「A4」のターゲット命令202「DIV」が実行されることにより変更されることが示されている。
換言すると、アドレス204「A2」のターゲット命令202「ADD」は演算フラグ201「1〜3」に対応付けられており、アドレス204「A4」のターゲット命令202「DIV」は演算フラグ201「4」に対応付けられている。
すなわち、演算フラグ変更命令記憶部109は、演算フラグ201毎に、ホスト命令実行部104により最後に出力された演算フラグ変更命令情報304を記憶する。

0075

そして、図9の例は、演算フラグ201「1〜3」のフラグ値は、最終的にアドレス204「A2」のターゲット命令202「ADD」が実行されることにより変更され、演算フラグ201「4」のフラグ値は、最終的にアドレス204「A4」のターゲット命令202「DIV」が実行されることにより変更されることを示している。
すなわち、図9の例は、演算フラグ201のフラグ値をシミュレーションする場合、アドレス204「A2」のターゲット命令202「ADD」とアドレス204「A4」のターゲット命令202「DIV」との演算のみを行えば良いことを示している。換言すると、図9の例は、アドレス204「A1」のターゲット命令202「ADD」とアドレス204「A3」のターゲット命令202「DIV」とは、演算フラグ201のフラグ値をシミュレーションする必要がないことを示している。

0076

なお、演算フラグ変更命令記憶部109は、前述のように新たな演算フラグ変更命令情報304を置き換えて記憶(上書きして記憶)しても良いし、最後に出力された演算フラグ変更命令情報304が区別可能であれば、例えばログリストのような形式を用い新たな演算フラグ変更命令情報304を追加して記憶しても良い。

0077

(ホスト命令実行部104の条件分岐命令実行処理の説明)
そして、ホスト命令実行部104は、図4のD409に示す演算フラグ変更命令を実行する。
ここで、ホスト命令実行部104は、複数の演算命令の中から所定の演算命令を選択する。このホスト命令実行部104が複数の演算命令の中から所定の演算命令を選択するタイミングは、このホスト命令実行部104が複数の演算命令の実行を開始した後に到来する。そして、このタイミングを選択タイミングと称する。
換言すると、選択タイミングは、条件分岐命令が実行される直前のタイミングでもある。

0078

ホスト命令実行部104は、この選択タイミングにおいて、演算フラグ変更命令に示された選択対象カテゴリーが演算フラグ変更命令(図4のD409)によって通知される。ここで、選択対象カテゴリーとは、命令セットに含まれる条件分岐命令が実行され判定が行われる際に選択される特定のカテゴリー(特定の演算フラグ)のことである。条件分岐命令が実行されると、選択タイミングにおいて特定の演算フラグ(特定のカテゴリー)が選択され、そのフラグ値が参照され、判定が行われる。換言すると、選択対象カテゴリーとは、複数種の演算フラグ201(カテゴリー)のうち、演算命令の選択の対象となる演算フラグ201(カテゴリー)のことである。
具体的には、ホスト命令実行部104は、演算フラグ変更命令(図4のD409)の後に条件分岐命令(図4のD410)を実行する場合に参照される演算フラグ201(カテゴリー)が通知される。図4の例においては、ホスト命令実行部104には、選択対象カテゴリーとして演算フラグ201「2〜4」の情報が通知される。

0079

そして、ホスト命令実行部104は、この選択タイミングにおいて、演算フラグ変更命令記憶部109により演算フラグ201(カテゴリー)に対応付けて記憶されている演算フラグ変更命令情報304のうち、選択対象となる演算フラグ201「2〜4」(選択対象カテゴリー)に対応付けられた演算フラグ変更命令情報304に示される選択候補演算命令を選択する。
換言すると、ホスト命令実行部104は、選択候補演算命令のうち、選択対象となる演算フラグ201に対応付けられており(選択対象カテゴリーに分類されており)、選択タイミングの前に最後にホスト命令実行部104によって実行が完了した選択候補演算命令を選択する。

0080

具体的には、ホスト命令実行部104は、演算フラグ201「2」に対応付けられた演算フラグ変更命令情報304に示される選択候補演算命令として「A2 ADD」(図9304b)を選択する。同様にホスト命令実行部104は、演算フラグ201「3」に対応付けられた選択候補演算命令として「A2 ADD」(図9304c)、演算フラグ201「4」に対応付けられた選択候補演算命令として「A4 DIV」(図9304d)を選択する。

0081

そして、ホスト命令実行部104は、選択した選択候補演算命令を実行して演算値を算出する。
ここで、図9に示すように演算フラグ変更命令情報304としてターゲット命令202とオペランド203とが示される場合は、ホスト命令実行部104は、演算フラグ変更命令情報304をターゲット命令変換部102に転送し、ターゲット命令変換部102が生成したホスト命令を実行することで演算値を算出する。
また、図示は省略するが、演算フラグ変更命令情報304としてホスト命令が示される場合は、ホスト命令実行部104は、演算フラグ変更命令情報304に示されるホスト命令を実行することで演算値を算出する。

0082

更に、ホスト命令実行部104は、選択対象となる演算フラグ201(選択対象カテゴリー)に対応する判別基準を用いて、算出した演算値の状態を判別する。
例えば、演算フラグ201「1」がゼロフラグで有った場合、ホスト命令実行部104は、選択対象となる演算フラグ201(選択対象カテゴリー)に対応する「演算値がゼロであるか否か」という判別基準を用いて算出した演算値の状態を判別し、判別結果に基づきフラグ値を設定する。

0083

そして、ホスト命令実行部104は、図4のD410に示す条件分岐命令を実行する。
ここで、ホスト命令実行部104は、判別された演算値の状態を参照し、参照した演算値の状態が予め設定された状態に合致するか否かを判定する。すなわち、ホスト命令実行部104は、判別結果に基づき設定されたフラグ値を参照し、参照したフラグ値が予め設定された値に合致するか否かを判定する。
具体的には、ホスト命令実行部104は、演算フラグ201「2〜4」に設定されたフラグ値を参照し、参照したフラグ値が予め設定された値(例えば、全てのフラグ値が「1」)であるか否かを判定する。
そして、ホスト命令実行部104は、参照したフラグ値が予め設定された値(例えば、全てのフラグ値が「1」)であれば、例えば真である場合の分岐として設定された分岐処理を行い、参照したフラグ値が予め設定された値(例えば、全てのフラグ値が「1」)でなければ、例えばである場合の分岐として設定された分岐処理を行う。

0084

(実施の形態1の効果)
以上のように、実施の形態1の命令セットシミュレーション装置100は、演算フラグ201を計算するために必要となる演算命令を複数の演算フラグ201毎に記憶している。そのため、複数の演算フラグ201が設定され演算命令の種別によっては一部の演算フラグ201のみを変更する命令セットをシミュレーションする場合に、実施の形態1の命令セットシミュレーション装置100は、演算フラグ201毎に変更する演算命令を正しく選定することができる。
そして、実施の形態1の命令セットシミュレーション装置100は、演算フラグ201を参照する命令が必要とする演算フラグ201のみの変更処理を実行する。更に実施の形態1の命令セットシミュレーション装置100は、演算フラグ201を変更しても後の演算値により更に変更されてしまう演算フラグ201の変更処理を省略する。そのため、実施の形態1の命令セットシミュレーション装置100は、無駄な演算処理を省略し命令セットシミュレーションを高速化することができる。

0085

以上、実施の形態1においては、以下の特徴を備えた命令セットシミュレーション装置100について説明した。
(1)命令セットシミュレーション装置100は、ターゲットプロセッサのターゲット命令列301をホストプロセッサのホスト命令列303へ変換してホストプロセッサにより実行する。この時、ターゲットプロセッサには演算フラグ201が複数存在し、演算フラグ201を変更するターゲット命令202が全フラグを変更するのではなく一部フラグのみを変更する場合が想定される。
命令セットシミュレーション装置100は、演算フラグ変更命令の変換時に、演算フラグ201を変更するターゲット命令202、演算されるオペランド203などの演算フラグ変更命令情報304を演算フラグ201毎に記憶する命令(演算フラグ変更命令情報記憶命令)を生成する。そして、命令セットシミュレーション装置100は、演算フラグ201に基づく条件判定を行う命令の変換時に、演算フラグ201を変更する命令(演算フラグ変更命令)を生成する。
以上により、命令セットシミュレーション装置100は、命令セットシミュレーション性能を高速化する。
(2)命令セットシミュレーション装置100は、演算フラグ変更処理において、条件判定に使用されるフラグのみを計算し、条件判定に使用されないフラグの計算を省略する。
(3)命令セットシミュレーション装置100は、ターゲット命令202を変換する時点で、演算命令を行うホスト命令に加えて演算フラグ変更命令情報記憶命令を行うホスト命令列を生成する。また、命令セットシミュレーション装置100は、ターゲット命令202を変換する時点で、条件分岐命令を行うホスト命令に加えて演算フラグ変更命令を行うホスト命令を生成する。
(4)命令セットシミュレーション装置100は、演算フラグ変更命令情報記憶命令を行うホスト命令を生成する際に、演算フラグ毎に複数の演算フラグ変更命令情報を記憶するのではなく、必要な演算フラグ変更命令情報のみ(場合によっては、単一の演算フラグ変更命令情報のみ)を記憶する命令を生成する。
以上により、命令セットシミュレーション装置100は、演算フラグ変更命令情報記憶処理単純化し高速化する。

0086

実施の形態2.
(実施の形態2における命令セットシミュレーション装置の概要)
実施の形態1における命令セットシミュレーション装置100では、ホスト命令実行部104が演算フラグ変更命令記憶部109に記憶された演算フラグ変更命令情報304に示される選択候補演算命令を実行し演算値を算出している。
実施の形態2における命令セットシミュレーション装置100では、ホスト命令実行部104が演算フラグ変更命令記憶部109に記憶された演算フラグ変更命令情報304に演算値が対応付けられて記憶されている実施形態を説明する。

0087

なお、実施の形態2の命令セットシミュレーション装置100は、図1に示す実施の形態1の命令セットシミュレーション装置100と同じ構成である。従って、実施の形態1と同じ構成要素と同じ処理内容とについては説明を省略する。

0088

図10は、演算フラグ変更命令情報の第3の例を示す図である。
実施の形態1に示される演算フラグ変更命令情報304(例えば図9)と比べ、演算値205が示されている点が異なる。なお、演算値205の具体的な図示は省略する(以後の説明においても同様)。

0089

(ホスト命令列の生成処理の説明)
ターゲット命令変換部102がターゲット命令列301からホスト命令列303を生成する際に実施の形態1と異なる部分のみ説明を行う。

0090

演算フラグ変更命令情報記憶命令生成部106は、実施の形態1と同様に図6のS603において演算フラグ変更命令情報記憶命令を生成する。ここで、演算フラグ変更命令情報記憶命令には、ホスト命令実行部104が直前の演算命令を実行して、算出した演算値205を演算フラグ変更命令情報304に加える処理が追加される。

0091

そして、演算フラグ変更命令生成部107は、実施の形態1と同様に図7のS703において演算フラグ変更命令を生成する。ここで、演算フラグ変更命令には、ホスト命令実行部104が演算フラグ変更命令情報304に示される選択候補演算命令を選択する際に、演算フラグ変更命令情報304に示される演算値205を抽出させる処理が追加される。

0092

(ホスト命令実行部104の処理の説明)
ホスト命令実行部104がホスト命令列303を実行する際に、実施の形態1と異なる部分のみ説明を行う。

0093

ホスト命令実行部104は、実施の形態1と同様に演算フラグ変更命令情報記憶命令(例えば図4のD402)を実行する。この時、ホスト命令実行部104は、実行した選択候補演算命令と実行した選択候補演算命令の演算値205とが示される選択候補情報を生成する。そして、ホスト命令実行部104は、実行した選択候補演算命令が対応付けられている演算フラグ(分類されているカテゴリー)に対応付けて選択候補情報を出力する。
そして、図10に示すように演算フラグ変更命令情報304に演算値205が含まれる。

0094

そして、ホスト命令実行部104は、実施の形態1と同様に演算フラグ変更命令(図4のD409)を実行し、選択候補演算命令を選択する。この時、ホスト命令実行部104は、選択した選択候補演算命令が示される選択候補情報に示される演算値205を抽出する。更に、ホスト命令実行部104は、選択対象の演算フラグ201(選択対象カテゴリー)に対応する判別基準を用いて、抽出した演算値205の状態を判別する。

0095

(実施の形態2の効果)
以上のように、実施の形態2の命令セットシミュレーション装置100の演算フラグ変更命令記憶部109は、演算値205を記憶する。そのため、実施の形態2の命令セットシミュレーション装置100は、演算フラグ変更処理時に演算を再度実行して演算値を算出する必要がない。すなわち、実施の形態2の命令セットシミュレーション装置100は、記憶しておいた演算値205を用いることで演算処理を省略し、命令セットシミュレーションを高速化することができる。

0096

以上、実施の形態2においては、演算フラグ変更命令情報記憶処理では、演算命令とオペランド情報と共に、その演算値205を記憶することにより、演算フラグ変更処理を簡素化し高速化することを特徴とする命令セットシミュレーション装置100について説明した。

0097

(実施の形態1〜2の命令セットシミュレーション装置100のハードウェア構成
最後に、実施の形態1〜2に示した命令セットシミュレーション装置100のハードウェア構成例について説明する。
図11は、各実施の形態に示した命令セットシミュレーション装置100のハードウェア資源の一例を示す図である。
なお、図11の構成は、あくまでも命令セットシミュレーション装置100のハードウェア構成の一例を示すものであり、命令セットシミュレーション装置100のハードウェア構成は図11に記載の構成に限らず、他の構成であってもよい。

0098

図11において、命令セットシミュレーション装置100は、プログラムを実行するCPU911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。各実施の形態ではこのCPU911をホストプロセッサと称している。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)と接続していてもよい。また、磁気ディスク装置920の代わりに、SSD(Solid State Drive)、光ディスク装置メモリカード登録商標読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
各実施の形態で説明したターゲット命令列記憶部101、ホスト命令列記憶部103、演算フラグ変更命令記憶部109は、磁気ディスク装置920等により実現される。
通信ボード915、キーボード902、マウス903、FDD904などは、入力装置の一例である。
また、通信ボード915、表示装置901などは、出力装置の一例である。

0099

磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。

0100

また、RAM914には、CPU911に実行させるオペレーティングシステム921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。

0101

また、ROM913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。
命令セットシミュレーション装置100の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。

0102

上記プログラム群923には、各実施の形態の説明において「〜部」(「〜記憶部」以外、以下同様)として説明している機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。

0103

ファイル群924には、各実施の形態の説明において、「〜の判断」、「〜の計算」、「〜の比較」、「〜の照合」、「〜の参照」、「〜の検索」、「〜の抽出」、「〜の検査」、「〜の生成」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の入力」、「〜の受信」、「〜の判定」、「〜の定義」、「〜の算出」、「〜の更新」、「〜の登録」等として説明している処理の結果を示す情報やデータや信号値変数値パラメータが、「ファイル」や「データベース」の各項目として記憶されている。
「ファイル」や「データベース」は、ディスクメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示・制御・判定・識別・検知・判別・選択・算出・導出・更新・生成・取得・通知・指示・判断・区別・削除・登録・付与などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示・制御・判定・識別・検知・判別・選択・算出・導出・更新・生成・取得・通知・指示・判断・区別・削除・登録・付与などのCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、各実施の形態で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスクミニディスク、DVD等の記録媒体に記録される。
また、データや信号は、バス912や信号線ケーブルその他の伝送媒体によりオンライン伝送される。

0104

また、各実施の形態の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、各実施の形態で説明したフローチャートに示すステップ、手順、処理により、本発明に係る情報処理方法を実現することができる。
また、「〜部」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子デバイス基板配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。
プログラムはCPU911により読み出され、CPU911により実行される。
すなわち、プログラムは、各実施の形態の「〜部」としてコンピュータを機能させるものである。あるいは、各実施の形態の「〜部」の手順や方法をコンピュータに実行させるものである。

0105

このように、各実施の形態に示す命令セットシミュレーション装置100は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。

0106

100命令セットシミュレーション装置、101ターゲット命令列記憶部、102ターゲット命令変換部、103ホスト命令列記憶部、104ホスト命令実行部、105オペランドデータ演算命令生成部、106演算フラグ変更命令情報記憶命令生成部、107演算フラグ変更命令生成部、108 ホスト分岐命令生成部、109 演算フラグ変更命令記憶部、201 演算フラグ、202 ターゲット命令、203オペランド、204アドレス、205演算値、301 ターゲット命令列、302カテゴリー情報、303 ホスト命令列、304演算フラグ変更命令情報、901表示装置、902キーボード、903マウス、904FDD、905コンパクトディスク装置、911 CPU、912バス、913 ROM、914 RAM、915通信ボード、920磁気ディスク装置、921オペレーティングシステム、922ウィンドウシステム、923プログラム群、924ファイル群。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ