(57)【要約】【課題】命令セットシミュレーションによるプログラム実行時間の計算精度を向上させる。【解決手段】命令インタプリタ部５０は、分岐予測を行うプロセッサの分岐命令の実行処理をシミュレートする。分岐命令遅延モデル部３２０は、当該プロセッサの分岐予測をシミュレートする。そして、分岐命令遅延モデル部３２０は、分岐命令ごとに実行処理結果と分岐予測とを比較し、正しく分岐予測された分岐命令もしくは正しく分岐予測されなかった分岐命令を当該プロセッサが実行する場合の遅延時間を予測する。そのため、命令セットシミュレーションによるプログラム実行時間の計算精度を向上させることが可能である。【選択図】図１
2013222392.tif 000002
【特許請求の範囲】
【請求項１】
分岐予測を行うプロセッサが、正しく分岐予測できた分岐命令を実行する際の遅延時間が予測適合遅延時間として定義され、前記プロセッサが、正しく分岐予測できなかった分岐命令を実行する際の遅延時間が予測外遅延時間として定義されている遅延時間情報を記憶する遅延時間情報記憶部と、
１つ以上の分岐命令に対して、前記プロセッサの分岐予測と分岐命令の実行処理とをシミュレートするシミュレーション部と、
前記シミュレーション部のシミュレーションにおける分岐予測の正否を分岐命令ごとに判断し、前記シミュレーションにおいて正しく分岐予測できた分岐命令を前記プロセッサが実行する場合に前記予測適合遅延時間が生じると予測し、前記シミュレーションにおいて正しく分岐予測できなかった分岐命令を前記プロセッサが実行する場合に前記予測外遅延時間が生じると予測する遅延時間予測部と
を備えることを特徴とする情報処理装置。
【請求項２】
前記遅延時間情報記憶部は、
前記予測適合遅延時間として、前記プロセッサが分岐の成立を正しく予測した場合の遅延時間である第１の予測適合遅延時間と、前記プロセッサが分岐の不成立を正しく予測した場合の遅延時間である第２の予測適合遅延時間とが定義され、
前記予測外遅延時間として、前記プロセッサが分岐の成立を予測した後に分岐が成立しなかった場合の遅延時間である第１の予測外遅延時間と、前記プロセッサが分岐の不成立を予測した後に分岐が成立した場合の遅延時間である第２の予測適合遅延時間とが定義されている遅延時間情報を記憶し、
前記遅延時間予測部は、
前記シミュレーション部のシミュレーションにおける分岐予測の正否を分岐命令ごとに判断し、
前記シミュレーションにおいて分岐の成立が正しく予測された分岐命令を前記プロセッサが実行する場合に前記第１の予測適合遅延時間が生じると予測し、
前記シミュレーションにおいて分岐の不成立が正しく予測された分岐命令を前記プロセッサが実行する場合に前記第２の予測適合遅延時間が生じると予測し、
前記シミュレーションにおいて分岐の成立が予測された後に分岐が成立しなかった分岐命令を前記プロセッサが実行する場合に前記第１の予測外遅延時間が生じると予測し、
前記シミュレーションにおいて分岐の不成立が予測された後に分岐が成立した分岐命令を前記プロセッサが実行する場合に前記第２の予測外遅延時間が生じると予測することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記シミュレーション部は、
いずれの分岐命令に対しても分岐の不成立を予測するプロセッサの分岐予測をシミュレートすることを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記シミュレーション部は、
分岐命令のアドレスが当該分岐命令の分岐先アドレスよりも大きい場合に分岐の成立を予測し、分岐命令のアドレスが当該分岐命令の分岐先アドレス以下の場合に分岐の不成立を予測するプロセッサの分岐予測をシミュレートすることを特徴とする請求項１又は２記載の情報処理装置。
【請求項５】
前記シミュレーション部は、
分岐命令を実行する度に分岐結果を記憶領域に記憶し、同じ分岐命令に対しては記憶領域に記憶されている分岐結果と同じ分岐結果になると予測するプロセッサの分岐予測をシミュレートすることを特徴とする請求項１又は２記載の情報処理装置。
【請求項６】
前記遅延時間情報記憶部は、
常に分岐が成立する分岐命令である無条件分岐命令を、前記プロセッサが実行する際の遅延時間が無条件分岐遅延時間として定義されている遅延時間情報を記憶し、
前記シミュレーション部は、
前記無条件分岐命令に対しては分岐予測のシミュレーションを行わず、
前記遅延時間予測部は、
前記プロセッサが前記無条件分岐命令を実行する場合に、前記無条件分岐遅延時間が生じると予測することを特徴とする請求項１〜５いずれか記載の情報処理装置。
【請求項７】
前記情報処理装置は、更に、
分岐命令の実行が割込み命令の実行前に完了するか否かを、前記遅延時間予測部により予測された遅延時間を用いて判定する割込み判定部を備えることを特徴とする請求項１〜６いずれか記載の情報処理装置。
【請求項８】
分岐予測を行うプロセッサが、正しく分岐予測できた分岐命令を実行する際の遅延時間が予測適合遅延時間として定義され、前記プロセッサが、正しく分岐予測できなかった分岐命令を実行する際の遅延時間が予測外遅延時間として定義されている遅延時間情報をコンピュータが所定の記憶領域から読み出す読み出しステップと、
前記コンピュータが、１つ以上の分岐命令に対して、前記プロセッサの分岐予測と分岐命令の実行処理とをシミュレートするシミュレーションステップと、
前記コンピュータが、前記シミュレーションステップのシミュレーションにおける分岐予測の正否を分岐命令ごとに判断し、前記シミュレーションにおいて正しく分岐予測できた分岐命令を前記プロセッサが実行する場合に前記予測適合遅延時間が生じると予測し、前記シミュレーションにおいて正しく分岐予測できなかった分岐命令を前記プロセッサが実行する場合に前記予測外遅延時間が生じると予測する遅延時間予測ステップと
を備えることを特徴とする情報処理方法。
【請求項９】
分岐予測を行うプロセッサが、正しく分岐予測できた分岐命令を実行する際の遅延時間が予測適合遅延時間として定義され、前記プロセッサが、正しく分岐予測できなかった分岐命令を実行する際の遅延時間が予測外遅延時間として定義されている遅延時間情報を所定の記憶領域から読み出す読み出しステップと、
１つ以上の分岐命令に対して、前記プロセッサの分岐予測と分岐命令の実行処理とをシミュレートするシミュレーションステップと、
前記シミュレーションステップのシミュレーションにおける分岐予測の正否を分岐命令ごとに判断し、前記シミュレーションにおいて正しく分岐予測できた分岐命令を前記プロセッサが実行する場合に前記予測適合遅延時間が生じると予測し、前記シミュレーションにおいて正しく分岐予測できなかった分岐命令を前記プロセッサが実行する場合に前記予測外遅延時間が生じると予測する遅延時間予測ステップと
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、命令セットのシミュレーションを行う情報処理装置および情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
近年の組込み装置には、高性能なプロセッサが採用されるようになっている。そして、プロセッサ上で実行される命令セット（以降、命令セットを「プログラム」とも称する）も増大し、一定の時間内でプログラム処理を終えることが要求されている。
特に、リアルタイム性の高い組込み装置において、一定周期で実行される周期処理プログラムが、決められた時間内で終了することが必須となっている。
そして、命令の実行時間を累積することでプログラムの実行時間がシミュレーションされている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１−２２９３２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来のシミュレーションによるプログラムの実行時間は、プロセッサにおける命令処理が最適な状態で、遅延が発生しないことを前提とした計算値である。しかし、実際の命令実行にかかる時間は、プロセッサ外部の遅延要因や、プロセッサ内部での遅延要因などにより、計算値より伸びる傾向にある。
従って、シミュレーションによるプログラムの実行時間と、実際に組込み装置でプログラムを実行した実行時間とがずれてしまい、組込み装置において、シミュレーション通りのタイマ制御が出来ないという課題がある。
すなわち、命令セットシミュレーションによるプログラム実行時間の計算精度を向上させることが出来ないという課題があった。
【０００５】
この発明は前記のような課題を解決することを主な目的とするもので、例えば、命令セットシミュレーションによるプログラム実行時間の計算精度を向上させることを主な目的とする。
【課題を解決するための手段】
【０００６】
この発明に係る情報処理装置は、
分岐予測を行うプロセッサが、正しく分岐予測できた分岐命令を実行する際の遅延時間が予測適合遅延時間として定義され、前記プロセッサが、正しく分岐予測できなかった分岐命令を実行する際の遅延時間が予測外遅延時間として定義されている遅延時間情報を記憶する遅延時間情報記憶部と、
１つ以上の分岐命令に対して、前記プロセッサの分岐予測と分岐命令の実行処理とをシミュレートするシミュレーション部と、
前記シミュレーション部のシミュレーションにおける分岐予測の正否を分岐命令ごとに判断し、前記シミュレーションにおいて正しく分岐予測できた分岐命令を前記プロセッサが実行する場合に前記予測適合遅延時間が生じると予測し、前記シミュレーションにおいて正しく分岐予測できなかった分岐命令を前記プロセッサが実行する場合に前記予測外遅延時間が生じると予測する遅延時間予測部と
を備えることを特徴とする。
【発明の効果】
【０００７】
この発明に係る情報処理装置は、分岐予測を行うプロセッサが分岐命令を実行する際の遅延時間を分岐予測の正否に応じて予測するため、例えば、命令セットシミュレーションによるプログラム実行時間の計算精度を向上させることが可能である。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１を示す図で、情報処理装置の構成の例を示す図。
【図２】実施の形態１を示す図で、情報処理装置の処理の例を示すフローチャート。
【図３】実施の形態１を示す図で、命令実行時間の加算処理の例を示すフローチャート。
【図４】実施の形態１を示す図で、ストール遅延時間の加算処理の例を示すフローチャート。
【図５】実施の形態１を示す図で、レジスタスコアボードモデルの例を示す図。
【図６】実施の形態１を示す図で、命令アクセス遅延時間の加算処理の例を示すフローチャート。
【図７】実施の形態１を示す図で、オペランドアクセス遅延時間の加算処理の例を示すフローチャート。
【図８】実施の形態１を示す図で、階層キャッシュモデルの例を示す図。
【図９】実施の形態１を示す図で、命令アクセス遅延サイクル数の特定処理の例を示すフローチャート。
【図１０】実施の形態１を示す図で、オペランドアクセス遅延サイクル数の特定処理の例を示すフローチャート。
【図１１】実施の形態１を示す図で、分岐遅延時間の加算処理の例を示すフローチャート。
【図１２】実施の形態１を示す図で、分岐遅延サイクル数の特定処理の第１の例を示すフローチャート。
【図１３】実施の形態１を示す図で、分岐遅延サイクル数の特定処理の第２の例を示すフローチャート。
【図１４】実施の形態１を示す図で、分岐遅延サイクル数の特定処理の第３の例を示すフローチャート。
【図１５】実施の形態１を示す図で、情報処理装置のハードウェア資源の一例を示す図。
【発明を実施するための形態】
【０００９】
実施の形態１．
（情報処理装置の構成）
図１は、情報処理装置の構成の例を示す図である。
情報処理装置１００は、例えば組込み装置などの対象計算機のプロセッサにおいて命令セットが実行された場合の対象計算機の命令処理動作をシミュレーションする。
以降、対象計算機のプロセッサを単に「対象計算機」とも称する。また、対象計算機のプロセッサは、分岐予測を行うものとする。
【００１０】
情報処理装置１００は、メモリモデル部２０、遅延サイクル特定部３０、割込み生成部４０、命令インタプリタ部５０を備える。
ここで、命令インタプリタ部５０はシミュレーション部に対応する。
【００１１】
メモリモデル部２０は、記憶領域を備え、命令セットやデータを記憶する。
命令インタプリタ部５０は、メモリモデル部２０に記憶された命令セットを実行する対象計算機の命令処理動作をシミュレーションする。
【００１２】
遅延サイクル特定部３０は、命令実行サイクル特定部３００、レジスタスコアボードモデル部３１０、分岐命令遅延モデル部３２０、階層キャッシュモデル部３３０を備える。
ここで、分岐命令遅延モデル部３２０は、シミュレーション部と遅延時間予測部に対応する。
遅延サイクル特定部３０の各構成要素は、対象計算機が所定の処理に必要な時間を対象計算機のクロックサイクル数として特定する（以降、クロックサイクルを単に「サイクル」とも称する）。ここで、対象計算機が所定の処理に必要なサイクル数は、予め設定された予測値である。よって、換言すると、遅延サイクル特定部３０の各構成要素は、対象計算機が所定の処理に必要な時間を予測する。
遅延サイクル特定部３０の各構成要素について説明する。
【００１３】
命令実行サイクル特定部３００は、命令セットの各命令の実行サイクル数を特定する。
レジスタスコアボードモデル部３１０は、命令セットが実行される対象計算機のパイプライン処理をシミュレーションする。そして、レジスタスコアボードモデル部３１０は、レジスタのリードやライトが矛盾なく行えるようにパイプラインストールを制御し、ストールサイクル数（後述）を特定する。
【００１４】
分岐命令遅延モデル部３２０は、分岐命令によるパイプラインストールをシミュレーションし、分岐遅延サイクル数（後述）を特定する。
階層キャッシュモデル部３３０は、対象計算機の構成要素である階層キャッシュメモリ（後述）のタグ動作を、プログラム実行に伴うメモリアクセス（命令もしくはオペランドに対するアクセス）によりシミュレーションし、アクセス遅延サイクル数（後述）を特定する。
【００１５】
割込み生成部４０は、累積遅延時間保持部４００、割込み判定部４１０、タイマ設定部４２０を備え、命令インタプリタ部５０に対する割込みを制御する。
累積遅延時間保持部４００は、遅延サイクル特定部３０により特定された各種の遅延サイクル数から遅延時間を算出する。そして、累積遅延時間保持部４００は、記憶領域を備え、算出した遅延時間を累積し、記憶する。
タイマ設定部４２０は、割込みタイマ（後述）を設定する。
割込み判定部４１０は、累積遅延時間保持部４００により、累積され記憶された遅延時間とタイマ設定部４２０で設定されたタイマ値との比較を行い、遅延時間がタイマ値を超えた場合に割込みのタイミングを特定する。
【００１６】
（情報処理装置の処理）
図２は、情報処理装置１００の処理の例を示すフローチャートである。
最初に図２を用いて、情報処理装置１００の処理の概要を説明する。
【００１７】
（各種設定処理）
まず、図２のＳ１１０〜Ｓ１２０における各種の設定処理を説明する。
命令実行サイクル特定部３００は、対象計算機の実行サイクルテーブルを設定する（図２のＳ１１０）。ここで、実行サイクル数は、例えば対象計算機の機種によって予め決まっている値であり、各命令の実行に要する対象計算機のクロックサイクル数である。
そして、図示は省略するが、実行サイクルテーブルは、命令毎に対象計算機の実行サイクル数が対応付けられた情報である。
実行サイクルテーブルは、対象計算機毎に予め設定されている。そして、実行サイクルテーブルは、情報処理装置１００に備えられる記憶装置に記憶されていてもよい。ここで、情報処理装置１００に備えられる記憶装置とは例えば情報処理装置１００の磁気ディスク装置９２０（図１５）である。そして、命令実行サイクル特定部３００は、磁気ディスク装置９２０から実行サイクルテーブルを入力してもよい。
【００１８】
また、累積遅延時間保持部４００は、対象計算機の動作周波数を設定する（図２のＳ１１１）。ここで、対象計算機の動作周波数は、対象計算機のクロックサイクル数を時間に変換する為の値である。この動作周波数は、対象計算機毎に情報処理装置１００に備えられる記憶装置に記憶されていてもよい。そして、累積遅延時間保持部４００は、当該記憶装置から対象計算機の動作周波数を入力してもよい。
なお、累積遅延時間保持部４００は、設定した動作周波数を累積遅延時間保持部４００の記憶領域に記憶する。
【００１９】
そして、タイマ設定部４２０は、対象計算機において割込みが発生する時間を、割込み時間として設定する（図２のＳ１１２）。
例えば、ここでタイマ設定部４２０は、プログラムの実行開始から１０分後に対象計算機において割込みが発生すると設定する。
次に、メモリモデル部２０は、シミュレーション対象の命令セットをメモリモデル部２０の記憶領域に記憶する（図２のＳ１１３）。ここで、シミュレーション対象の命令セットは、例えば、情報処理装置１００に備えられる記憶装置に記憶されていてもよい。そして、命令インタプリタ部５０は、当該記憶装置からシミュレーション対象の命令セットを入力してもよい。
【００２０】
そして、命令インタプリタ部５０は、対象計算機のプログラムカウンタを設定する（図２のＳ１２０）。
【００２１】
（累積遅延時間の算出処理）
次に、図２のＳ２０〜Ｓ６０における累積遅延時間の算出処理を説明する。
図２のＳ２０の処理において（詳細は後述）、命令インタプリタ部５０は設定されたプログラムカウンタが示すアドレスの命令をメモリモデル部２０から取り出す。
そして、命令インタプリタ部５０により取り出された命令について図２のＳ２０〜Ｓ６０において累積遅延時間が算出される。
【００２２】
ここで、累積遅延時間は、図２のＳ２０〜Ｓ６０の処理で算出される命令実行時間、ストール遅延時間、命令のアクセス遅延時間、オペランドのアクセス遅延時間、分岐遅延時間が累積加算された時間である。すなわち、累積遅延時間は、対象計算機が命令を実行するのに要する時間である。
そして、例えば、対象計算機が実行する命令が分岐命令である場合は、累積遅延時間は、対象計算機が分岐命令の実行を完了する時間となる。
図２のＳ２０〜Ｓ６０における処理の詳細は後述するが、図２のＳ２０〜Ｓ６０における処理によって得られた累積遅延時間は、累積遅延時間保持部４００の記憶領域に記憶される。
【００２３】
（割込み処理）
次に、図２のＳ１８０〜Ｓ１８２における割込み処理を説明する。
割込み判定部４１０は、累積遅延時間保持部４００の記憶領域に記憶されている累積遅延時間が、図２のＳ１１２にてタイマ設定部４２０により設定された割込み時間を越えたか否かを判定する（図２のＳ１８０）。
すなわち、割込み判定部４１０は、割込み命令の実行前に、命令インタプリタ部５０により取り出された命令の実行が完了するか否かを、図２のＳ２０〜Ｓ６０の処理で予測された遅延時間を用いて判定する。
【００２４】
累積遅延時間が、割込み時間を越えていない場合（図２のＳ１８０の「ＮＯ」）、Ｓ２０〜Ｓ６０の処理が再実行される。なお、プログラムカウンタには、Ｓ６０の処理（詳細は後述）において、Ｓ２０〜Ｓ６０の処理の再実行前に新たな値が設定されている。そして、図２のＳ２０〜Ｓ６０が再実行される際は、新たに設定されたプログラムカウンタが示すアドレスの命令の累積遅延時間が算出される。
【００２５】
一方、累積遅延時間が、割込み時間を越えている場合（図２のＳ１８０の「ＹＥＳ」）、タイマ設定部４２０は、割込み時間を再設定する（図２のＳ１８１）。
例えば、前述のように、タイマ設定部４２０が、プログラムの実行開始から１０分後に対象計算機において割込みが発生すると設定しており、累積遅延時間が１５分となっている場合を想定する。この場合、割込みを命令の終了後に発生させるために、タイマ設定部４２０は、割込み時間を１５分よりも大きな値（例えば１６分や２０分など）に再設定する。
【００２６】
そして、割込み判定部４１０は、Ｓ６０の処理（詳細は後述）で設定されたプログラムカウンタをバックアップする（図２のＳ１８２）。プログラムカウンタのバックアップ処理は対象計算機により処理手順が決められており割込み判定部４１０はその処理手順に従うため、詳細説明は省略する。
また、割込み判定部４１０は、割込みベクターをプログラムカウンタに設定する（図２のＳ１８２）。その為、次の図２のＳ２０〜Ｓ６０における処理では割込みが行われた命令に対して累積遅延時間が算出される。
【００２７】
次に、図２のＳ２０〜Ｓ６０の処理について、詳細に説明を行う。
【００２８】
（命令実行時間加算処理）
図３は、命令実行時間の加算処理の例を示すフローチャートである。
図３に示すフローチャートは、図２のＳ２０の処理を詳細に示したものである。
【００２９】
前述の通り、命令インタプリタ部５０はメモリモデル部２０から設定されたプログラムカウンタを命令アドレスとし、プログラムカウンタに示されるアドレスの命令を入力する（図３のＳ１２１）。
そして、命令インタプリタ部５０は入力した命令に対し、対象計算機の処理をシミュレートする（図３のＳ１２２）。なお、「シミュレートする」ことを「模擬する」とも称する。
【００３０】
また、命令実行サイクル特定部３００は、命令インタプリタ部５０が入力した命令と同じ命令を入力する。そして、命令実行サイクル特定部３００は、図２のＳ１１０で設定された実行サイクルテーブルを参照し、入力した命令の実行サイクル数を特定し、累積遅延時間保持部４００に出力する（図３のＳ１２３）。
そして、累積遅延時間保持部４００は、図３のＳ１２３で特定された実行サイクル数と図２のＳ１１１で設定された動作周波数とから、命令実行サイクル特定部３００が入力した命令の実行時間を算出する。そして、累積遅延時間保持部４００は、算出した実行時間を記憶している累積遅延時間に加算し、加算後の累積遅延時間を記憶する（図３のＳ１２４）。
【００３１】
なお、図３の処理（図２のＳ２０の処理）が初回の場合は、累積遅延時間保持部４００に累積遅延時が記憶されていないので、累積遅延時間保持部４００が算出した実行時間が、累積遅延時間と等しくなる。
【００３２】
（ストール遅延時間加算処理）
図４は、ストール遅延時間の加算処理の例を示すフローチャートである。
図４に示すフローチャートは、図２のＳ３０の処理を詳細に示したものである。
レジスタスコアボードモデル部３１０は、図３のＳ１２１で命令インタプリタ部５０が入力した命令と同じ命令を入力する。ここで、レジスタスコアボードモデル部３１０は、記憶領域を備え、その記憶領域にレジスタスコアボードモデル（後述）を記憶する。そして、レジスタスコアボードモデル部３１０は、入力した命令が使用するレジスタをレジスタスコアボードモデルに設定する。そして、レジスタスコアボードモデル部３１０は入力した命令のストールサイクル数を特定し、累積遅延時間保持部４００に出力する（詳細は後述、図４のＳ１３１）。
【００３３】
そして、累積遅延時間保持部４００は、図４のＳ１３１で特定されたストールサイクル数と図２のＳ１１１で設定された動作周波数とから、レジスタスコアボードモデル部３１０が入力した命令のストール時間（遅延時間）を算出する。そして、累積遅延時間保持部４００は、算出した遅延時間を記憶している累積遅延時間に加算し、加算後の累積遅延時間を記憶する（図４のＳ１３２）。
【００３４】
なお、図４の処理（図２のＳ３０の処理）が初回の場合は、他の命令とレジスタが競合されないのでストールが発生しない。その為、図４の処理（図２のＳ３０の処理）は省略されてもよい。
【００３５】
（レジスタスコアボードモデルの説明）
図５は、レジスタスコアボードモデルの例を示す図である。
ここで、対象計算機は、以下に示す５段のパイプライン処理を行う場合を想定している。
・Ｆステージ：命令の取り出し
・Ｄステージ：命令のデコード、レジスタのリード
・Ｅステージ：アドレス計算
・Ｍステージ：メモリアクセス
・Ｗステージ：レジスタライト
そして、レジスタスコアボードモデル部３１０は、先行する命令のレジスタ確定待ちによるストールサイクル数を特定する。
【００３６】
アセンブラ言語ＣＡＳＬ２で記述された具体例で説明する。
レジスタスコアボードモデル部３１０は、先行する命令として、
（１）ＬＤ  ＧＲ２、ＤＡＴＡ１、ＧＲ１
を入力し、次に
（２）ＡＤＤＡ  ＧＲ３、ＤＡＴＡ２、ＧＲ２
を入力するものとする。
（１）は、メモリ（ＤＡＴＡ１＋ＧＲ１の内容）のデータをＧＲ２に格納する命令である。（２）は、メモリ（ＤＡＴＡ２＋ＧＲ２の内容）のデータとＧＲ３との加算結果をＧＲ３に格納する命令である。
【００３７】
（１）のパイプラインでは、
・ＤステージでＧＲ１の内容を読み出し
・ＥステージでＤＡＴＡ１とＧＲ１の内容の加算
・Ｍステージで（ＤＡＴＡ１＋ＧＲ１）のアドレスでメモリアクセス
・Ｗステージで読み込んだデータをＧＲ２に書き込み
が順に実行される。
（２）のパイプラインでは、
・ＤステージでＧＲ２とＧＲ３との内容を読み出し
・ＥステージでＤＡＴＡ２とＧＲ２との内容の加算
・Ｍステージで（ＤＡＴＡ２＋ＧＲ２）のアドレスでメモリアクセス
・Ｗステージで読み込んだデータとＧＲ３の内容を加算し、ＧＲ３に書き込み
が順に実行される。
【００３８】
この際、（１）のＷステージで書き込むレジスタが、（２）のＤステージで読み出すレジスタと一致している。よって、（２）のＤステージは、（１）のＷステージの開始まで処理を開始することが出来ない。すなわち、レジスタの確定待ちによるストールサイクル数が生じる。ここで、（１）のＷステージで書き込まれるデータは、バイパスされ、（２）のＤステージの読み出しにも利用可能である。そのため、ＧＲ２に（１）のＷステージで書き込みが開始されると同時に、ＧＲ２に書き込まれたデータと同じデータがバイパスされ、（２）のＤステージで読み出しが可能である。
【００３９】
もし、（２）のＤステージが待機しない場合、（１）によるデータ書き込み前のＧＲ２のデータが使用される為、（２）の実行結果が誤った値となる。
このように、レジスタスコアボードモデル部３１０は、先行する命令のレジスタへの書き込みが後続の命令のレジスタの読み出しに影響を及ぼすかどうかのシミュレーションを行う。そして、影響がある場合には、レジスタスコアボードモデル部３１０は、影響がなくなるまでのサイクル数を特定し、ストールサイクル数として出力する。
【００４０】
（命令アクセス遅延時間加算処理）
図６は、命令アクセス遅延時間の加算処理の例を示すフローチャートである。
図６に示すフローチャートは、図２のＳ４０の処理を詳細に示したものである。
階層キャッシュモデル部３３０は、図３のＳ１２１で命令インタプリタ部５０が入力した命令と同じ命令を入力する。また、階層キャッシュモデル部３３０は、図３のＳ１２２で命令インタプリタ部５０がシミュレートした命令の命令アドレスを入力する。ここで、階層キャッシュモデル部３３０は、記憶領域を備え、その記憶領域に階層キャッシュモデル（後述）を記憶する。そして、階層キャッシュモデル部３３０は、入力した命令アドレスを階層キャッシュモデルに設定する。
そして、階層キャッシュモデル部３３０は入力した命令のアクセス遅延サイクル数を特定し、累積遅延時間保持部４００に出力する（詳細は後述、図６のＳ１４１）。
【００４１】
そして、累積遅延時間保持部４００は、図６のＳ１４１で特定されたアクセス遅延サイクル数と図２のＳ１１１で設定された動作周波数とから、階層キャッシュモデル部３３０が入力した命令のアクセス遅延時間を算出する。そして、累積遅延時間保持部４００は、算出した遅延時間を記憶している累積遅延時間に加算し、加算後の累積遅延時間を記憶する（図６のＳ１４２）。
【００４２】
（オペランドアクセス遅延時間加算処理）
図７は、オペランドアクセス遅延時間の加算処理の例を示すフローチャートである。
図７に示すフローチャートは、図２のＳ５０の処理を詳細に示したものである。
階層キャッシュモデル部３３０は、図６で説明の入力内容に加え、図３のＳ１２２で命令インタプリタ部５０がシミュレートした命令のオペランドアドレスを入力する。
階層キャッシュモデル部３３０は、入力した命令がメモリ参照命令か否かを判定する（図７のＳ１５０）。
入力した命令がメモリ参照命令でない場合（図７のＳ１５０の「ＮＯ」）、階層キャッシュモデル部３３０は処理を終了する。
一方、入力した命令がメモリ参照命令である場合（図７のＳ１５０の「ＹＥＳ」）、階層キャッシュモデル部３３０は、入力したオペランドアドレスを階層キャッシュモデルに設定する。
そして、階層キャッシュモデル部３３０は入力した命令のアクセス遅延サイクル数を特定し、累積遅延時間保持部４００に出力する（詳細は後述、図７のＳ１５１）。
【００４３】
そして、累積遅延時間保持部４００は、図７のＳ１５１で特定されたアクセス遅延サイクル数と図２のＳ１１１で設定された動作周波数とから、階層キャッシュモデル部３３０が入力した命令のアクセス遅延時間を算出する。そして、累積遅延時間保持部４００は、算出した遅延時間を記憶している累積遅延時間に加算し、加算後の累積遅延時間を記憶する（図７のＳ１５２）。
【００４４】
（階層キャッシュモデルの説明）
図８は、階層キャッシュモデルの例を示す図である。
階層キャッシュモデルは、命令１次キャッシュメモリのタグをシミュレートする命令１次キャッシュメモリモデル３３３と、オペランド１次キャッシュメモリのタグをシミュレートするオペランド１次キャッシュメモリモデル３３１と、２次キャッシュメモリのタグをシミュレートする２次キャッシュメモリモデル３３２とで構成される。
そして、階層キャッシュモデルは、階層キャッシュメモリのタグ動作をシミュレートしている。
この階層キャッシュモデルを用いて、階層キャッシュモデル部３３０の処理の詳細を説明する。
【００４５】
（命令アクセス遅延サイクル数の特定処理）
図９は、命令アクセス遅延サイクル数の特定処理の例を示すフローチャートである。
図９に示すフローチャートは、図６のＳ１４１の処理を詳細に示したものである。
【００４６】
まず、階層キャッシュモデル部３３０は入力した命令アドレスが命令１次キャッシュメモリモデル３３３に含まれているか否かを判定する（図９のＳ２１０）。
命令アドレスが命令１次キャッシュメモリモデル３３３に含まれている場合（図９のＳ２１０の「ＹＥＳ」）、命令１次キャッシュメモリモデル３３３でキャッシュヒット（Ｌ１ヒット）となる。そして、階層キャッシュモデル部３３０は、アクセス遅延サイクル数をゼロとして特定する（図９のＳ２１６）。
【００４７】
一方、命令アドレスが命令１次キャッシュメモリモデル３３３に含まれていない場合（図９のＳ２１０の「ＮＯ」）、命令１次キャッシュメモリモデル３３３でキャッシュミス（Ｌ１ミス）となる。そして、階層キャッシュモデル部３３０は、図９のＳ２１０でキャッシュミス（Ｌ１ミス）となったので、新たに命令アドレスを命令１次キャッシュメモリモデル３３３に登録する（図９のＳ２１１）。これにより、同じキャッシュラインに対する命令取出しでは、キャッシュヒットとなる。
【００４８】
次に、階層キャッシュモデル部３３０は、命令１次キャッシュメモリモデル３３３でキャッシュミスとなった命令アドレスが２次キャッシュメモリモデル３３２に含まれているか否かを判定する（図９のＳ２１２）。
命令アドレスが２次キャッシュメモリモデル３３２に含まれている場合（図９のＳ２１２の「ＹＥＳ」）、２次キャッシュメモリモデル３３２でキャッシュヒット（Ｌ２ヒット）となる。
そして、階層キャッシュモデル部３３０は、命令１次キャッシュメモリモデル３３３でキャッシュミス（Ｌ１ミス）となったことにより、メモリアクセスに要するサイクル数をアクセス遅延サイクル数として特定する（図９のＳ２１５）。
なお、メモリアクセスに要するサイクル数は、予め情報処理装置１００の記憶領域に記憶されている（以降の説明においても同様である）。また、図９のＳ２１５においては具体的なサイクル数の数値の記述は省略し、アクセス遅延サイクル＝「Ｂ」と記述している（以降の説明においても同様である）。
【００４９】
一方、命令アドレスが２次キャッシュメモリモデル３３２に含まれていない場合（図９のＳ２１２の「ＮＯ」）、２次キャッシュメモリモデル３３２でキャッシュミス（Ｌ２ミス）となる。そして、階層キャッシュモデル部３３０は、図９のＳ２１２でキャッシュミス（Ｌ２ミス）となったので、新たに命令アドレスを２次キャッシュメモリモデル３３２に登録する（図９のＳ２１３）。これにより、同じキャッシュラインに対する命令取出しでは、キャッシュヒットとなる。
【００５０】
そして、階層キャッシュモデル部３３０は、Ｌ１ミスとなったことによりメモリアクセスに要するサイクル数と、Ｌ２ミスとなったことによりメモリアクセスに要するサイクル数とが加算された値をアクセス遅延サイクル数として特定する（図９のＳ２１４）。
【００５１】
（オペランドアクセス遅延サイクル数の特定処理）
図１０は、オペランドアクセス遅延サイクル数の特定処理の例を示すフローチャートである。
図１０に示すフローチャートは、図７のＳ１５１の処理を詳細に示したものである。
【００５２】
まず、階層キャッシュモデル部３３０は入力したオペランドアドレスがオペランド１次キャッシュメモリモデル３３１に含まれているか否かを判定する（図１０のＳ３１０）。
オペランドアドレスがオペランド１次キャッシュメモリモデル３３１に含まれている場合（図１０のＳ３１０の「ＹＥＳ」）、オペランド１次キャッシュメモリモデル３３１でキャッシュヒット（Ｌ１ヒット）となる。そして、階層キャッシュモデル部３３０は、アクセス遅延サイクル数をゼロとして特定する（図１０のＳ３１６）。
【００５３】
一方、オペランドアドレスがオペランド１次キャッシュメモリモデル３３１に含まれていない場合（図１０のＳ３１０の「ＮＯ」）、オペランド１次キャッシュメモリモデル３３１でキャッシュミス（Ｌ１ミス）となる。そして、階層キャッシュモデル部３３０は、図１０のＳ３１０でキャッシュミス（Ｌ１ミス）となったので、新たにオペランドアドレスをオペランド１次キャッシュメモリモデル３３１に登録する（図１０のＳ３１１）。これにより、同じキャッシュラインに対するオペランド取出しでは、キャッシュヒットとなる。
【００５４】
次に、階層キャッシュモデル部３３０は、オペランド１次キャッシュメモリモデル３３１でキャッシュミスとなったオペランドアドレスが２次キャッシュメモリモデル３３２に含まれているか否かを判定する（図１０のＳ３１２）。
オペランドアドレスが２次キャッシュメモリモデル３３２に含まれている場合（図１０のＳ３１２の「ＹＥＳ」）、２次キャッシュメモリモデル３３２でキャッシュヒット（Ｌ２ヒット）となる。
そして、階層キャッシュモデル部３３０は、オペランド１次キャッシュメモリモデル３３１でキャッシュミス（Ｌ１ミス）となったことにより、メモリアクセスに要するサイクル数をアクセス遅延サイクル数として特定する（図１０のＳ３１５）。
【００５５】
一方、オペランドアドレスが２次キャッシュメモリモデル３３２に含まれていない場合（図１０のＳ３１２の「ＮＯ」）、２次キャッシュメモリモデル３３２でキャッシュミス（Ｌ２ミス）となる。そして、階層キャッシュモデル部３３０は、図１０のＳ３１２でキャッシュミス（Ｌ２ミス）となったので、新たにオペランドアドレスを２次キャッシュメモリモデル３３２に登録する（図１０のＳ３１３）。これにより、同じキャッシュラインに対するオペランド取出しでは、キャッシュヒットとなる。
【００５６】
そして、階層キャッシュモデル部３３０は、Ｌ１ミスとなったことによりメモリアクセスに要するサイクル数と、Ｌ２ミスとなったことによりメモリアクセスに要するサイクル数とが加算された値をアクセス遅延サイクル数として特定する（図１０のＳ３１４）。
【００５７】
（分岐遅延時間加算処理）
図１１は、分岐遅延時間の加算処理の例を示すフローチャートである。
図１１に示すフローチャートは、図２のＳ６０の処理を詳細に示したものである。
分岐命令遅延モデル部３２０は、図３のＳ１２１で命令インタプリタ部５０が入力した命令と同じ命令を入力する。
【００５８】
分岐命令遅延モデル部３２０は、入力した命令が分岐命令か否かを判定する（図１１のＳ１６０）。
入力した命令が分岐命令でない場合（図１１のＳ１６０の「ＮＯ」）、分岐命令遅延モデル部３２０は、プログラムカウンタに入力した命令の命令長を加算する（図１１のＳ１７２）。
【００５９】
一方、入力した命令が分岐命令である場合（図１１のＳ１６０の「ＹＥＳ」）、命令インタプリタ部５０は、図３のＳ１２２で分岐命令に対して、対象計算機の実行処理をシミュレートしている。そして、分岐命令遅延モデル部３２０は、命令インタプリタ部５０がシミュレートした分岐命令の命令アドレスと分岐先アドレスと分岐結果とを入力する。
そして、分岐命令遅延モデル部３２０は、入力した情報に基づき、入力した命令の分岐遅延サイクル数を特定し、累積遅延時間保持部４００に出力する（詳細は後述、図１１のＳ１６１）。
【００６０】
そして、累積遅延時間保持部４００は、図１１のＳ１６１で特定された分岐遅延サイクル数と図２のＳ１１１で設定された動作周波数とから、分岐命令遅延モデル部３２０が入力した命令のアクセス遅延時間を算出する。そして、累積遅延時間保持部４００は、算出した遅延時間を記憶している累積遅延時間に加算し、加算後の累積遅延時間を記憶する（図１１のＳ１６２）。
【００６１】
更に、分岐命令遅延モデル部３２０は、入力した分岐結果が分岐成立か否かを判定する（図１１のＳ１７０）。
分岐が不成立の場合（図１１のＳ１７０の「ＮＯ」）、分岐命令遅延モデル部３２０は、図１１のＳ１７２の処理を行う。
一方、分岐が成立の場合（図１１のＳ１７０の「ＹＥＳ」）、分岐命令遅延モデル部３２０は、入力した分岐先アドレスを次に実行する命令のアドレスとしてプログラムカウンタに設定する（図１１のＳ１７１）。
【００６２】
次に、図１１のＳ１６１における分岐遅延サイクル数の特定処理の詳細を説明する。
【００６３】
（分岐遅延サイクル数の特定処理の第１の例）
図１２は、分岐遅延サイクル数の特定処理の第１の例を示すフローチャートである。
図１２に示すフローチャートは、図１１のＳ１６１の処理を詳細に示した第１の例である。
分岐遅延サイクル数の特定処理の第１の例は、対象計算機が条件分岐命令は分岐しないと予測する場合の処理の例である。
すなわち、分岐命令遅延モデル部３２０は、いずれの分岐命令（条件分岐命令）に対しても分岐の不成立を予測する対象計算機の分岐予測をシミュレートする。
【００６４】
分岐命令遅延モデル部３２０は、入力した分岐命令が条件分岐命令か否かを判定する（図１２のＳ４１０）。
【００６５】
入力した分岐命令が条件分岐命令の場合（図１２のＳ４１０の「ＹＥＳ」）、分岐命令遅延モデル部３２０は、対象計算機の分岐予測をシミュレートする。ここでは、前述の通り、分岐命令遅延モデル部３２０は、シミュレーションにより分岐の不成立を予測する。
【００６６】
そして、分岐命令遅延モデル部３２０は、入力した分岐結果が分岐成立であるか否かを判定する（図１２のＳ４１２）。
すなわち、分岐命令遅延モデル部３２０は、シミュレーションにおける分岐予測の正否を分岐命令ごとに判断する。
【００６７】
そして、分岐結果が分岐成立である場合（図１２のＳ４１２の「ＹＥＳ」）は、シミュレーションにおいて正しく分岐予測できなかった分岐命令を対象計算機が実行する場合である。
この場合、分岐命令遅延モデル部３２０は、正しく分岐予測できなかった分岐命令を対象計算機が実行する際の遅延時間を、分岐遅延サイクル数として特定する（図１２のＳ４１３）。なお、正しく分岐予測できなかった分岐命令を対象計算機が実行する際の遅延時間を予測外遅延時間と称する。すなわち、分岐命令遅延モデル部３２０は、予測外遅延時間が生じると予測する。
【００６８】
なお、この予測外遅延時間は、遅延時間情報として情報処理装置１００に備えられる記憶装置（例えば磁気ディスク装置９２０（図１５））に記憶されている。そして、分岐命令遅延モデル部３２０は、この予測外遅延時間を情報処理装置１００に備えられる記憶装置（例えば磁気ディスク装置９２０（図１５））から読み出す。ここで、情報処理装置１００に備えられる記憶装置（例えば磁気ディスク装置９２０（図１５））は、遅延時間情報記憶部に対応する。
また、遅延時間情報に示される各種の遅延時間はサイクル数で示されている。図１２のＳ４１３においては具体的なサイクル数の数値の記述は省略し、分岐遅延サイクル＝「Ｆ」と記述している（以降の説明においても同様である）。なお、同一のアルファベットを付した分岐遅延サイクル数の値は、同一であるものとする。
【００６９】
ここで、正しく分岐予測できなかった分岐命令を対象計算機が実行する際の遅延時間が発生する要因の例を挙げる。
例えば、条件分岐命令は分岐しないと予測する対象計算機において、分岐結果が分岐成立である場合、対象計算機がパイプラインに設定済みの命令を破棄し、分岐先の命令を新たに読み込む処理が発生することにより、遅延時間が発生する。図１２のＳ４１３が、この例に該当する。
また、別の例としては、条件分岐命令は分岐すると予測する対象計算機において、分岐結果が分岐不成立である場合がある。この場合、対象計算機が予め予測した分岐先の命令を読み込み、パイプラインに設定していたにも関わらず、パイプラインに設定済みの命令を破棄し、分岐不成立の場合の命令を新たに読み込む処理が生じ、遅延時間が発生する。
【００７０】
一方、分岐結果が分岐不成立である場合（図１２のＳ４１２の「ＮＯ」）は、シミュレーションにおいて正しく分岐予測できた分岐命令を対象計算機が実行する場合である。
この場合、分岐命令遅延モデル部３２０は、正しく分岐予測できた分岐命令を対象計算機が実行する際の遅延時間を、分岐遅延サイクル数として特定する（図１２のＳ４１４）。なお、正しく分岐予測で分岐命令を対象計算機が実行する際の遅延時間を予測適合遅延時間と称する。すなわち、分岐命令遅延モデル部３２０は、予測適合遅延時間が生じると予測する。
【００７１】
この予測適合遅延時間も、遅延時間情報として情報処理装置１００に備えられる記憶装置（例えば磁気ディスク装置９２０（図１５））に記憶されている。そして、予測外遅延時間と同様に分岐命令遅延モデル部３２０は、この予測適合遅延時間を情報処理装置１００に備えられる記憶装置（例えば磁気ディスク装置９２０（図１５））から読み出す。
なお、分岐予測が分岐不成立で、分岐結果も分岐不成立である場合は、分岐処理が不要であるため、予測適合遅延時間は、ゼロに設定されている（図１２のＳ４１４）。
【００７２】
更に、入力した分岐命令が常に分岐が成立する分岐命令である無条件分岐命令の場合（図１２のＳ４１０の「ＮＯ」）、分岐命令遅延モデル部３２０は、対象計算機の分岐予測をシミュレートしない。
この場合、分岐命令遅延モデル部３２０は、無条件分岐命令を対象計算機が実行する際の遅延時間を、分岐遅延サイクル数として特定する（図１２のＳ４１１）。
【００７３】
なお、無条件分岐命令を対象計算機が実行する際の遅延時間を無条件分岐遅延時間と称する。すなわち、分岐命令遅延モデル部３２０は、無条件分岐遅延時間が生じると予測する。
この無条件分岐遅延時間も、遅延時間情報として情報処理装置１００に備えられる記憶装置（例えば磁気ディスク装置９２０（図１５））に記憶されている。
【００７４】
（分岐遅延サイクル数の特定処理の第２の例）
図１３は、分岐遅延サイクル数の特定処理の第２の例を示すフローチャートである。
図１３に示すフローチャートは、図１１のＳ１６１の処理を詳細に示した第２の例である。
分岐遅延サイクル数の特定処理の第２の例は、対象計算機が条件分岐命令の命令アドレスと分岐先アドレスとの比較により、分岐予測を行う場合の処理の例である。
具体的には、分岐命令遅延モデル部３２０が、分岐命令のアドレスが当該分岐命令の分岐先アドレスよりも大きい場合に分岐の成立を予測し、分岐命令のアドレスが当該分岐命令の分岐先アドレス以下の場合に分岐の不成立を予測する対象計算機の分岐予測をシミュレートする例である。
なお、図１３のＳ５１０とＳ５１１との処理は図１２と同様である為、説明を省略する。
【００７５】
ここで、条件分岐命令は、ＦＯＲループ記述やＩＦ文記述されたプログラムで出現することが多い。
ＦＯＲループ記述されたプログラムを実行する場合は、「命令アドレス＞分岐先アドレス」となることが多い。よって、「命令アドレス＞分岐先アドレス」の場合に、対象計算機は分岐成立と予測する。
ＩＦ文記述されたプログラムを実行する場合は、「命令アドレス＝＜分岐先アドレス」となることが多い。よって、「命令アドレス＝＜分岐先アドレス」の場合に、対象計算機は分岐不成立と予測する。
分岐遅延サイクル数の特定処理の第２の例では、対象計算機における以上の命令アドレスと分岐先アドレスとによる静的分岐予測を利用する。
【００７６】
分岐命令遅延モデル部３２０は、入力した分岐先アドレスが命令アドレスよりも大きいか否かを判定する（図１３のＳ５２０）。
そして、「命令アドレス＞分岐先アドレス」の場合（図１３のＳ５２０の「ＹＥＳ」）、分岐命令遅延モデル部３２０はシミュレーションにより分岐の成立を予測する（図１３のＳ５２１）。
【００７７】
そして、分岐命令遅延モデル部３２０は、入力した分岐結果が分岐成立であるか否かを判定する（図１３のＳ５２３）。
すなわち、分岐命令遅延モデル部３２０は、分岐遅延サイクル数の特定処理の第１の例と同様にシミュレーションにおける分岐予測の正否を分岐命令ごとに判断する。
【００７８】
そして、分岐結果が分岐成立である場合（図１３のＳ５２３の「ＹＥＳ」）は、シミュレーションにおいて分岐の成立が正しく予測された分岐命令を対象計算機が実行する場合である。
この場合、分岐命令遅延モデル部３２０は、第１の予測適合遅延時間を、分岐遅延サイクル数として特定する（図１３のＳ５２５）。すなわち、分岐命令遅延モデル部３２０は、第１の予測適合遅延時間が生じると予測する。
ここで、第１の予測適合遅延時間とは、対象計算機が分岐の成立を正しく予測した場合の予測適合遅延時間である。第１の予測適合遅延時間の例としては、対象計算機が予め予測した分岐先の命令を読み込む処理に要する時間が想定される。
【００７９】
なお、この第１の予測適合遅延時間、及び後述の第２の予測適合遅延時間と第１の予測外遅延時間と第２の予測外遅延時間とは、遅延時間情報として情報処理装置１００に備えられる記憶装置（例えば磁気ディスク装置９２０（図１５））に記憶されている。
【００８０】
また、分岐結果が分岐不成立である場合（図１３のＳ５２３の「ＮＯ」）は、シミュレーションにおいて分岐の成立が予測された後に分岐が成立しなかった分岐命令を対象計算機が実行する場合である。
この場合、分岐命令遅延モデル部３２０は、第１の予測外遅延時間を、分岐遅延サイクル数として特定する（図１３のＳ５２６）。すなわち、分岐命令遅延モデル部３２０は、第１の予測外遅延時間が生じると予測する。
ここで、第１の予測外遅延時間とは、対象計算機が分岐の成立を予測した後に分岐が成立しなかった場合の予測外遅延時間である。
【００８１】
一方、「命令アドレス＝＜分岐先アドレス」の場合（図１３のＳ５２０の「ＮＯ」）、分岐命令遅延モデル部３２０はシミュレーションにより分岐の不成立を予測する（図１３のＳ５２２）。
そして、分岐命令遅延モデル部３２０は、入力した分岐結果が分岐成立であるか否かを判定する（図１３のＳ５２４）。
【００８２】
そして、分岐結果が分岐成立である場合（図１３のＳ５２４の「ＹＥＳ」）は、シミュレーションにおいて分岐の不成立が予測された後に分岐が成立した分岐命令を対象計算機が実行する場合である。
この場合、分岐命令遅延モデル部３２０は、第２の予測外遅延時間を、分岐遅延サイクル数として特定する（図１３のＳ５２７）。すなわち、分岐命令遅延モデル部３２０は、第２の予測外遅延時間が生じると予測する。
ここで、第２の予測外遅延時間とは、対象計算機が分岐の不成立を予測した後に分岐が成立した場合の予測外遅延時間である。
【００８３】
また、分岐結果が分岐不成立である場合（図１３のＳ５２４の「ＮＯ」）は、シミュレーションにおいて分岐の不成立が正しく予測された分岐命令を対象計算機が実行する場合である。
この場合、分岐命令遅延モデル部３２０は、第２の予測適合遅延時間を、分岐遅延サイクル数として特定する（図１３のＳ５２８）。すなわち、分岐命令遅延モデル部３２０は、第２の予測適合遅延時間が生じると予測する。
ここで、第２の予測適合遅延時間とは、対象計算機が分岐の不成立を正しく予測した場合の予測適合遅延時間である。
なお、図１３のＳ５２８は、図１２のＳ４１４と同様であり、説明を省略する。
【００８４】
（分岐遅延サイクル数の特定処理の第３の例）
図１４は、分岐遅延サイクル数の特定処理の第３の例を示すフローチャートである。
図１４に示すフローチャートは、図１１のＳ１６１の処理を詳細に示した第３の例である。
分岐遅延サイクル数の特定処理の第３の例は、対象計算機が分岐命令の分岐成立履歴を保持し、分岐命令が登録済みであれば、分岐成立履歴に従って分岐予測を行い、分岐命令が未登録であれば、条件分岐命令の命令アドレスと分岐先アドレスとの比較により、分岐予測を行う場合の処理の例である。
すなわち、分岐命令遅延モデル部３２０は、分岐命令を実行する度に分岐結果を記憶領域に記憶し、同じ分岐命令に対しては記憶領域に記憶されている分岐結果と同じ分岐結果になると予測するプロセッサの分岐予測をシミュレートする。
なお、図１４のＳ６１０とＳ６１１との処理は図１２と同様である為、説明を省略する。
【００８５】
分岐命令遅延モデル部３２０は、入力した命令アドレスが分岐履歴に登録済みか否かを判定する（図１４のＳ６２０）。
そして、分岐命令遅延モデル部３２０は、入力した命令アドレスが分岐履歴に登録済みの場合（図１４のＳ６２０の「ＹＥＳ」）、同じ命令アドレスの条件分岐命令の前回の分岐結果が、分岐成立か否かを判定する（図１４のＳ６２１）。
【００８６】
分岐履歴に登録されている同じ命令アドレスの条件分岐命令の前回の分岐結果が、分岐成立である場合（図１４のＳ６２１の「ＹＥＳ」）、再度分岐成立する可能性が高く、分岐命令遅延モデル部３２０は、対象計算機をシミュレートし、分岐成立と予測する（図１４のＳ６２２）。
一方、前回の分岐結果が、分岐不成立である場合（図１４のＳ６２１の「ＮＯ」）、再度分岐不成立である可能性が高いので、分岐命令遅延モデル部３２０は、シミュレーションにより分岐不成立と予測する（図１４のＳ６２３）。
【００８７】
そして、分岐命令遅延モデル部３２０は、入力した分岐結果が分岐成立であるか否かを判定する（図１４のＳ６２４）。
入力した分岐結果が分岐成立である場合（図１４のＳ６２４において「ＹＥＳ」）は、図１３のＳ５２３において「ＹＥＳ」の場合と同様であり、説明を省略する。
一方、入力した分岐結果が分岐不成立である場合（図１４のＳ６２４において「ＮＯ」の場合は、前回の分岐結果と異なる為に、分岐命令遅延モデル部３２０は対象計算機が分岐履歴に分岐不成立を登録する処理をシミュレートする（図１４のＳ６２６）。
【００８８】
図１４のＳ６２９の処理は、図１３のＳ５２６の処理と同様であり、説明を省略する。
また、図１４のＳ６２５以降の処理も、分岐成立の登録処理のシミュレーション（図１４のＳ６２７）が加わる以外、図１３のＳ５２４以降の処理もしくは図１２のＳ４１２以降の処理と同様であり、説明を省略する。
更に、入力した命令アドレスが分岐履歴に未登録の場合も（図１４のＳ６２０の「ＮＯ」）、分岐結果を分岐履歴に登録する処理のシミュレーション（図１４のＳ６４５、Ｓ６４６、Ｓ６４７、Ｓ６４８）が加わる以外、図１３の処理と同様である為、説明を省略する。
【００８９】
（実施の形態１の効果）
実施の形態１の情報処理装置１００は、分岐予測を行うプロセッサが分岐命令を実行する際の遅延時間を分岐予測の正否に応じて予測可能である。
そして、実施の形態１の情報処理装置１００は、命令セットシミュレーションにおいて、対象計算機のプロセッサ内部や外部の遅延要因を反映することで、対象計算機でプログラムを実行した場合のタイマ制御と一致し、命令セットシミュレーションによるプログラム実行時間の計測精度を向上させることが可能である。
更に、実施の形態１の情報処理装置１００は、組込みシステムなどで用いられる周期処理のプログラム実行時間の計測が可能である。
【００９０】
最後に、実施の形態１に示した情報処理装置１００のハードウェア構成例について説明する。
図１５は、実施の形態１に示した情報処理装置１００のハードウェア資源の一例を示す図である。
なお、図１５の構成は、あくまでも情報処理装置１００のハードウェア構成の一例を示すものであり、情報処理装置１００のハードウェア構成は図１５に記載の構成に限らず、他の構成であってもよい。
【００９１】
図１５において、情報処理装置１００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。
ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）と接続していてもよい。また、磁気ディスク装置９２０の代わりに、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
実施の形態１で説明したメモリモデル部２０と累積遅延時間保持部４００と階層キャッシュモデル部３３０とレジスタスコアボードモデル部３１０との記憶領域、情報処理装置１００の記憶装置は、ＲＡＭ９１４、磁気ディスク装置９２０等により実現される。
通信ボード９１５、キーボード９０２、スキャナ装置９０７、マウス９０３、ＦＤＤ９０４などは、入力装置の一例である。
また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力装置の一例である。
【００９２】
通信ボード９１５は、ネットワークに接続されている。
例えば、ネットワークは、ＬＡＮ、インターネットの他、ＷＡＮ（ワイドエリアネットワーク）、ＳＡＮ（ストレージエリアネットワーク）などでも構わない。
【００９３】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
プログラム群９２３のプログラムは、ＣＰＵ９１１がオペレーティングシステム９２１、ウィンドウシステム９２２を利用しながら実行する。
【００９４】
また、ＲＡＭ９１４には、ＣＰＵ９１１に実行させるオペレーティングシステム９２１のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ９１４には、ＣＰＵ９１１による処理に必要な各種データが格納される。
【００９５】
また、ＲＯＭ９１３には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置９２０にはブートプログラムが格納されている。
情報処理装置１００の起動時には、ＲＯＭ９１３のＢＩＯＳプログラム及び磁気ディスク装置９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステム９２１が起動される。
【００９６】
上記プログラム群９２３には、実施の形態１の説明において「〜部」（「〜記憶部」以外、以下同様）として説明している機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【００９７】
ファイル群９２４には、実施の形態１の説明において、「〜の判断」、「〜の計算」、「〜の比較」、「〜の照合」、「〜の参照」、「〜の検索」、「〜の抽出」、「〜の検査」、「〜の生成」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の入力」、「〜の受信」、「〜の作成」、「〜の判定」、「〜の定義」、「〜の算出」、「〜の更新」、「〜の特定」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「ファイル」や「データベース」の各項目として記憶されている。
ファイル群９２４の実施の形態１の説明における具体例としては、実行サイクルテーブル、対象計算機の動作周波数、遅延時間情報などが挙げられる。
「ファイル」や「データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示・制御・判定・識別・検知・判別・選択・算出・導出・更新・作成・取得・通知・指示・判断などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示・制御・判定・識別・検知・判別・選択・算出・導出・更新・作成・取得・通知・指示・判断などのＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態１で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。
また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００９８】
また、実施の形態１の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、実施の形態１で説明したフローチャートに示すステップ、手順、処理により、本発明に係る情報処理方法を実現することができる。
また、「〜部」として説明しているものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。
プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。
すなわち、プログラムは、実施の形態１の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態１の「〜部」の手順や方法をコンピュータに実行させるものである。
【００９９】
このように、実施の形態１に示す情報処理装置１００は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【０１００】
２０  メモリモデル部、３０  遅延サイクル特定部、４０  割込み生成部、５０  命令インタプリタ部、１００  情報処理装置、３００  命令実行サイクル特定部、３１０  レジスタスコアボードモデル部、３２０  分岐命令遅延モデル部、３３０  階層キャッシュモデル部、４００  累積遅延時間保持部、４１０  割込み判定部、４２０  タイマ設定部、３３１  オペランド１次キャッシュメモリモデル、３３２  ２次キャッシュメモリモデル、３３３  命令１次キャッシュメモリモデル、９０１  表示装置、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ、９０５  コンパクトディスク装置、９０６  プリンタ装置、９０７  スキャナ装置、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  磁気ディスク装置、９２１  オペレーティングシステム、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群。
【図１】
2013222392.tif 000003
【図２】
2013222392.tif 000004
【図３】
2013222392.tif 000005
【図４】
2013222392.tif 000006
【図５】
2013222392.tif 000007
【図６】
2013222392.tif 000008
【図７】
2013222392.tif 000009
【図８】
2013222392.tif 000010
【図９】
2013222392.tif 000011
【図１０】
2013222392.tif 000012
【図１１】
2013222392.tif 000013
【図１２】
2013222392.tif 000014
【図１３】
2013222392.tif 000015
【図１４】
2013222392.tif 000016
【図１５】
2013222392.tif 000017