JP2013222392A - 情報処理装置および情報処理方法およびプログラム - Google Patents

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

Info

Publication number
JP2013222392A
JP2013222392A JP2012094809A JP2012094809A JP2013222392A JP 2013222392 A JP2013222392 A JP 2013222392A JP 2012094809 A JP2012094809 A JP 2012094809A JP 2012094809 A JP2012094809 A JP 2012094809A JP 2013222392 A JP2013222392 A JP 2013222392A
Authority
JP
Japan
Prior art keywords
branch
delay time
instruction
prediction
simulation
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
JP2012094809A
Other languages
English (en)
Inventor
Koji Nishikawa
浩司 西川
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2012094809A priority Critical patent/JP2013222392A/ja
Publication of JP2013222392A publication Critical patent/JP2013222392A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Advance Control (AREA)

Abstract

【課題】命令セットシミュレーションによるプログラム実行時間の計算精度を向上させる。
【解決手段】命令インタプリタ部50は、分岐予測を行うプロセッサの分岐命令の実行処理をシミュレートする。分岐命令遅延モデル部320は、当該プロセッサの分岐予測をシミュレートする。そして、分岐命令遅延モデル部320は、分岐命令ごとに実行処理結果と分岐予測とを比較し、正しく分岐予測された分岐命令もしくは正しく分岐予測されなかった分岐命令を当該プロセッサが実行する場合の遅延時間を予測する。そのため、命令セットシミュレーションによるプログラム実行時間の計算精度を向上させることが可能である。
【選択図】図1

Description

この発明は、命令セットのシミュレーションを行う情報処理装置および情報処理方法およびプログラムに関する。
近年の組込み装置には、高性能なプロセッサが採用されるようになっている。そして、プロセッサ上で実行される命令セット(以降、命令セットを「プログラム」とも称する)も増大し、一定の時間内でプログラム処理を終えることが要求されている。
特に、リアルタイム性の高い組込み装置において、一定周期で実行される周期処理プログラムが、決められた時間内で終了することが必須となっている。
そして、命令の実行時間を累積することでプログラムの実行時間がシミュレーションされている(例えば、特許文献1)。
特開平1−229328号公報
従来のシミュレーションによるプログラムの実行時間は、プロセッサにおける命令処理が最適な状態で、遅延が発生しないことを前提とした計算値である。しかし、実際の命令実行にかかる時間は、プロセッサ外部の遅延要因や、プロセッサ内部での遅延要因などにより、計算値より伸びる傾向にある。
従って、シミュレーションによるプログラムの実行時間と、実際に組込み装置でプログラムを実行した実行時間とがずれてしまい、組込み装置において、シミュレーション通りのタイマ制御が出来ないという課題がある。
すなわち、命令セットシミュレーションによるプログラム実行時間の計算精度を向上させることが出来ないという課題があった。
この発明は前記のような課題を解決することを主な目的とするもので、例えば、命令セットシミュレーションによるプログラム実行時間の計算精度を向上させることを主な目的とする。
この発明に係る情報処理装置は、
分岐予測を行うプロセッサが、正しく分岐予測できた分岐命令を実行する際の遅延時間が予測適合遅延時間として定義され、前記プロセッサが、正しく分岐予測できなかった分岐命令を実行する際の遅延時間が予測外遅延時間として定義されている遅延時間情報を記憶する遅延時間情報記憶部と、
1つ以上の分岐命令に対して、前記プロセッサの分岐予測と分岐命令の実行処理とをシミュレートするシミュレーション部と、
前記シミュレーション部のシミュレーションにおける分岐予測の正否を分岐命令ごとに判断し、前記シミュレーションにおいて正しく分岐予測できた分岐命令を前記プロセッサが実行する場合に前記予測適合遅延時間が生じると予測し、前記シミュレーションにおいて正しく分岐予測できなかった分岐命令を前記プロセッサが実行する場合に前記予測外遅延時間が生じると予測する遅延時間予測部と
を備えることを特徴とする。
この発明に係る情報処理装置は、分岐予測を行うプロセッサが分岐命令を実行する際の遅延時間を分岐予測の正否に応じて予測するため、例えば、命令セットシミュレーションによるプログラム実行時間の計算精度を向上させることが可能である。
実施の形態1を示す図で、情報処理装置の構成の例を示す図。 実施の形態1を示す図で、情報処理装置の処理の例を示すフローチャート。 実施の形態1を示す図で、命令実行時間の加算処理の例を示すフローチャート。 実施の形態1を示す図で、ストール遅延時間の加算処理の例を示すフローチャート。 実施の形態1を示す図で、レジスタスコアボードモデルの例を示す図。 実施の形態1を示す図で、命令アクセス遅延時間の加算処理の例を示すフローチャート。 実施の形態1を示す図で、オペランドアクセス遅延時間の加算処理の例を示すフローチャート。 実施の形態1を示す図で、階層キャッシュモデルの例を示す図。 実施の形態1を示す図で、命令アクセス遅延サイクル数の特定処理の例を示すフローチャート。 実施の形態1を示す図で、オペランドアクセス遅延サイクル数の特定処理の例を示すフローチャート。 実施の形態1を示す図で、分岐遅延時間の加算処理の例を示すフローチャート。 実施の形態1を示す図で、分岐遅延サイクル数の特定処理の第1の例を示すフローチャート。 実施の形態1を示す図で、分岐遅延サイクル数の特定処理の第2の例を示すフローチャート。 実施の形態1を示す図で、分岐遅延サイクル数の特定処理の第3の例を示すフローチャート。 実施の形態1を示す図で、情報処理装置のハードウェア資源の一例を示す図。
実施の形態1.
(情報処理装置の構成)
図1は、情報処理装置の構成の例を示す図である。
情報処理装置100は、例えば組込み装置などの対象計算機のプロセッサにおいて命令セットが実行された場合の対象計算機の命令処理動作をシミュレーションする。
以降、対象計算機のプロセッサを単に「対象計算機」とも称する。また、対象計算機のプロセッサは、分岐予測を行うものとする。
情報処理装置100は、メモリモデル部20、遅延サイクル特定部30、割込み生成部40、命令インタプリタ部50を備える。
ここで、命令インタプリタ部50はシミュレーション部に対応する。
メモリモデル部20は、記憶領域を備え、命令セットやデータを記憶する。
命令インタプリタ部50は、メモリモデル部20に記憶された命令セットを実行する対象計算機の命令処理動作をシミュレーションする。
遅延サイクル特定部30は、命令実行サイクル特定部300、レジスタスコアボードモデル部310、分岐命令遅延モデル部320、階層キャッシュモデル部330を備える。
ここで、分岐命令遅延モデル部320は、シミュレーション部と遅延時間予測部に対応する。
遅延サイクル特定部30の各構成要素は、対象計算機が所定の処理に必要な時間を対象計算機のクロックサイクル数として特定する(以降、クロックサイクルを単に「サイクル」とも称する)。ここで、対象計算機が所定の処理に必要なサイクル数は、予め設定された予測値である。よって、換言すると、遅延サイクル特定部30の各構成要素は、対象計算機が所定の処理に必要な時間を予測する。
遅延サイクル特定部30の各構成要素について説明する。
命令実行サイクル特定部300は、命令セットの各命令の実行サイクル数を特定する。
レジスタスコアボードモデル部310は、命令セットが実行される対象計算機のパイプライン処理をシミュレーションする。そして、レジスタスコアボードモデル部310は、レジスタのリードやライトが矛盾なく行えるようにパイプラインストールを制御し、ストールサイクル数(後述)を特定する。
分岐命令遅延モデル部320は、分岐命令によるパイプラインストールをシミュレーションし、分岐遅延サイクル数(後述)を特定する。
階層キャッシュモデル部330は、対象計算機の構成要素である階層キャッシュメモリ(後述)のタグ動作を、プログラム実行に伴うメモリアクセス(命令もしくはオペランドに対するアクセス)によりシミュレーションし、アクセス遅延サイクル数(後述)を特定する。
割込み生成部40は、累積遅延時間保持部400、割込み判定部410、タイマ設定部420を備え、命令インタプリタ部50に対する割込みを制御する。
累積遅延時間保持部400は、遅延サイクル特定部30により特定された各種の遅延サイクル数から遅延時間を算出する。そして、累積遅延時間保持部400は、記憶領域を備え、算出した遅延時間を累積し、記憶する。
タイマ設定部420は、割込みタイマ(後述)を設定する。
割込み判定部410は、累積遅延時間保持部400により、累積され記憶された遅延時間とタイマ設定部420で設定されたタイマ値との比較を行い、遅延時間がタイマ値を超えた場合に割込みのタイミングを特定する。
(情報処理装置の処理)
図2は、情報処理装置100の処理の例を示すフローチャートである。
最初に図2を用いて、情報処理装置100の処理の概要を説明する。
(各種設定処理)
まず、図2のS110〜S120における各種の設定処理を説明する。
命令実行サイクル特定部300は、対象計算機の実行サイクルテーブルを設定する(図2のS110)。ここで、実行サイクル数は、例えば対象計算機の機種によって予め決まっている値であり、各命令の実行に要する対象計算機のクロックサイクル数である。
そして、図示は省略するが、実行サイクルテーブルは、命令毎に対象計算機の実行サイクル数が対応付けられた情報である。
実行サイクルテーブルは、対象計算機毎に予め設定されている。そして、実行サイクルテーブルは、情報処理装置100に備えられる記憶装置に記憶されていてもよい。ここで、情報処理装置100に備えられる記憶装置とは例えば情報処理装置100の磁気ディスク装置920(図15)である。そして、命令実行サイクル特定部300は、磁気ディスク装置920から実行サイクルテーブルを入力してもよい。
また、累積遅延時間保持部400は、対象計算機の動作周波数を設定する(図2のS111)。ここで、対象計算機の動作周波数は、対象計算機のクロックサイクル数を時間に変換する為の値である。この動作周波数は、対象計算機毎に情報処理装置100に備えられる記憶装置に記憶されていてもよい。そして、累積遅延時間保持部400は、当該記憶装置から対象計算機の動作周波数を入力してもよい。
なお、累積遅延時間保持部400は、設定した動作周波数を累積遅延時間保持部400の記憶領域に記憶する。
そして、タイマ設定部420は、対象計算機において割込みが発生する時間を、割込み時間として設定する(図2のS112)。
例えば、ここでタイマ設定部420は、プログラムの実行開始から10分後に対象計算機において割込みが発生すると設定する。
次に、メモリモデル部20は、シミュレーション対象の命令セットをメモリモデル部20の記憶領域に記憶する(図2のS113)。ここで、シミュレーション対象の命令セットは、例えば、情報処理装置100に備えられる記憶装置に記憶されていてもよい。そして、命令インタプリタ部50は、当該記憶装置からシミュレーション対象の命令セットを入力してもよい。
そして、命令インタプリタ部50は、対象計算機のプログラムカウンタを設定する(図2のS120)。
(累積遅延時間の算出処理)
次に、図2のS20〜S60における累積遅延時間の算出処理を説明する。
図2のS20の処理において(詳細は後述)、命令インタプリタ部50は設定されたプログラムカウンタが示すアドレスの命令をメモリモデル部20から取り出す。
そして、命令インタプリタ部50により取り出された命令について図2のS20〜S60において累積遅延時間が算出される。
ここで、累積遅延時間は、図2のS20〜S60の処理で算出される命令実行時間、ストール遅延時間、命令のアクセス遅延時間、オペランドのアクセス遅延時間、分岐遅延時間が累積加算された時間である。すなわち、累積遅延時間は、対象計算機が命令を実行するのに要する時間である。
そして、例えば、対象計算機が実行する命令が分岐命令である場合は、累積遅延時間は、対象計算機が分岐命令の実行を完了する時間となる。
図2のS20〜S60における処理の詳細は後述するが、図2のS20〜S60における処理によって得られた累積遅延時間は、累積遅延時間保持部400の記憶領域に記憶される。
(割込み処理)
次に、図2のS180〜S182における割込み処理を説明する。
割込み判定部410は、累積遅延時間保持部400の記憶領域に記憶されている累積遅延時間が、図2のS112にてタイマ設定部420により設定された割込み時間を越えたか否かを判定する(図2のS180)。
すなわち、割込み判定部410は、割込み命令の実行前に、命令インタプリタ部50により取り出された命令の実行が完了するか否かを、図2のS20〜S60の処理で予測された遅延時間を用いて判定する。
累積遅延時間が、割込み時間を越えていない場合(図2のS180の「NO」)、S20〜S60の処理が再実行される。なお、プログラムカウンタには、S60の処理(詳細は後述)において、S20〜S60の処理の再実行前に新たな値が設定されている。そして、図2のS20〜S60が再実行される際は、新たに設定されたプログラムカウンタが示すアドレスの命令の累積遅延時間が算出される。
一方、累積遅延時間が、割込み時間を越えている場合(図2のS180の「YES」)、タイマ設定部420は、割込み時間を再設定する(図2のS181)。
例えば、前述のように、タイマ設定部420が、プログラムの実行開始から10分後に対象計算機において割込みが発生すると設定しており、累積遅延時間が15分となっている場合を想定する。この場合、割込みを命令の終了後に発生させるために、タイマ設定部420は、割込み時間を15分よりも大きな値(例えば16分や20分など)に再設定する。
そして、割込み判定部410は、S60の処理(詳細は後述)で設定されたプログラムカウンタをバックアップする(図2のS182)。プログラムカウンタのバックアップ処理は対象計算機により処理手順が決められており割込み判定部410はその処理手順に従うため、詳細説明は省略する。
また、割込み判定部410は、割込みベクターをプログラムカウンタに設定する(図2のS182)。その為、次の図2のS20〜S60における処理では割込みが行われた命令に対して累積遅延時間が算出される。
次に、図2のS20〜S60の処理について、詳細に説明を行う。
(命令実行時間加算処理)
図3は、命令実行時間の加算処理の例を示すフローチャートである。
図3に示すフローチャートは、図2のS20の処理を詳細に示したものである。
前述の通り、命令インタプリタ部50はメモリモデル部20から設定されたプログラムカウンタを命令アドレスとし、プログラムカウンタに示されるアドレスの命令を入力する(図3のS121)。
そして、命令インタプリタ部50は入力した命令に対し、対象計算機の処理をシミュレートする(図3のS122)。なお、「シミュレートする」ことを「模擬する」とも称する。
また、命令実行サイクル特定部300は、命令インタプリタ部50が入力した命令と同じ命令を入力する。そして、命令実行サイクル特定部300は、図2のS110で設定された実行サイクルテーブルを参照し、入力した命令の実行サイクル数を特定し、累積遅延時間保持部400に出力する(図3のS123)。
そして、累積遅延時間保持部400は、図3のS123で特定された実行サイクル数と図2のS111で設定された動作周波数とから、命令実行サイクル特定部300が入力した命令の実行時間を算出する。そして、累積遅延時間保持部400は、算出した実行時間を記憶している累積遅延時間に加算し、加算後の累積遅延時間を記憶する(図3のS124)。
なお、図3の処理(図2のS20の処理)が初回の場合は、累積遅延時間保持部400に累積遅延時が記憶されていないので、累積遅延時間保持部400が算出した実行時間が、累積遅延時間と等しくなる。
(ストール遅延時間加算処理)
図4は、ストール遅延時間の加算処理の例を示すフローチャートである。
図4に示すフローチャートは、図2のS30の処理を詳細に示したものである。
レジスタスコアボードモデル部310は、図3のS121で命令インタプリタ部50が入力した命令と同じ命令を入力する。ここで、レジスタスコアボードモデル部310は、記憶領域を備え、その記憶領域にレジスタスコアボードモデル(後述)を記憶する。そして、レジスタスコアボードモデル部310は、入力した命令が使用するレジスタをレジスタスコアボードモデルに設定する。そして、レジスタスコアボードモデル部310は入力した命令のストールサイクル数を特定し、累積遅延時間保持部400に出力する(詳細は後述、図4のS131)。
そして、累積遅延時間保持部400は、図4のS131で特定されたストールサイクル数と図2のS111で設定された動作周波数とから、レジスタスコアボードモデル部310が入力した命令のストール時間(遅延時間)を算出する。そして、累積遅延時間保持部400は、算出した遅延時間を記憶している累積遅延時間に加算し、加算後の累積遅延時間を記憶する(図4のS132)。
なお、図4の処理(図2のS30の処理)が初回の場合は、他の命令とレジスタが競合されないのでストールが発生しない。その為、図4の処理(図2のS30の処理)は省略されてもよい。
(レジスタスコアボードモデルの説明)
図5は、レジスタスコアボードモデルの例を示す図である。
ここで、対象計算機は、以下に示す5段のパイプライン処理を行う場合を想定している。
・Fステージ:命令の取り出し
・Dステージ:命令のデコード、レジスタのリード
・Eステージ:アドレス計算
・Mステージ:メモリアクセス
・Wステージ:レジスタライト
そして、レジスタスコアボードモデル部310は、先行する命令のレジスタ確定待ちによるストールサイクル数を特定する。
アセンブラ言語CASL2で記述された具体例で説明する。
レジスタスコアボードモデル部310は、先行する命令として、
(1)LD GR2、DATA1、GR1
を入力し、次に
(2)ADDA GR3、DATA2、GR2
を入力するものとする。
(1)は、メモリ(DATA1+GR1の内容)のデータをGR2に格納する命令である。(2)は、メモリ(DATA2+GR2の内容)のデータとGR3との加算結果をGR3に格納する命令である。
(1)のパイプラインでは、
・DステージでGR1の内容を読み出し
・EステージでDATA1とGR1の内容の加算
・Mステージで(DATA1+GR1)のアドレスでメモリアクセス
・Wステージで読み込んだデータをGR2に書き込み
が順に実行される。
(2)のパイプラインでは、
・DステージでGR2とGR3との内容を読み出し
・EステージでDATA2とGR2との内容の加算
・Mステージで(DATA2+GR2)のアドレスでメモリアクセス
・Wステージで読み込んだデータとGR3の内容を加算し、GR3に書き込み
が順に実行される。
この際、(1)のWステージで書き込むレジスタが、(2)のDステージで読み出すレジスタと一致している。よって、(2)のDステージは、(1)のWステージの開始まで処理を開始することが出来ない。すなわち、レジスタの確定待ちによるストールサイクル数が生じる。ここで、(1)のWステージで書き込まれるデータは、バイパスされ、(2)のDステージの読み出しにも利用可能である。そのため、GR2に(1)のWステージで書き込みが開始されると同時に、GR2に書き込まれたデータと同じデータがバイパスされ、(2)のDステージで読み出しが可能である。
もし、(2)のDステージが待機しない場合、(1)によるデータ書き込み前のGR2のデータが使用される為、(2)の実行結果が誤った値となる。
このように、レジスタスコアボードモデル部310は、先行する命令のレジスタへの書き込みが後続の命令のレジスタの読み出しに影響を及ぼすかどうかのシミュレーションを行う。そして、影響がある場合には、レジスタスコアボードモデル部310は、影響がなくなるまでのサイクル数を特定し、ストールサイクル数として出力する。
(命令アクセス遅延時間加算処理)
図6は、命令アクセス遅延時間の加算処理の例を示すフローチャートである。
図6に示すフローチャートは、図2のS40の処理を詳細に示したものである。
階層キャッシュモデル部330は、図3のS121で命令インタプリタ部50が入力した命令と同じ命令を入力する。また、階層キャッシュモデル部330は、図3のS122で命令インタプリタ部50がシミュレートした命令の命令アドレスを入力する。ここで、階層キャッシュモデル部330は、記憶領域を備え、その記憶領域に階層キャッシュモデル(後述)を記憶する。そして、階層キャッシュモデル部330は、入力した命令アドレスを階層キャッシュモデルに設定する。
そして、階層キャッシュモデル部330は入力した命令のアクセス遅延サイクル数を特定し、累積遅延時間保持部400に出力する(詳細は後述、図6のS141)。
そして、累積遅延時間保持部400は、図6のS141で特定されたアクセス遅延サイクル数と図2のS111で設定された動作周波数とから、階層キャッシュモデル部330が入力した命令のアクセス遅延時間を算出する。そして、累積遅延時間保持部400は、算出した遅延時間を記憶している累積遅延時間に加算し、加算後の累積遅延時間を記憶する(図6のS142)。
(オペランドアクセス遅延時間加算処理)
図7は、オペランドアクセス遅延時間の加算処理の例を示すフローチャートである。
図7に示すフローチャートは、図2のS50の処理を詳細に示したものである。
階層キャッシュモデル部330は、図6で説明の入力内容に加え、図3のS122で命令インタプリタ部50がシミュレートした命令のオペランドアドレスを入力する。
階層キャッシュモデル部330は、入力した命令がメモリ参照命令か否かを判定する(図7のS150)。
入力した命令がメモリ参照命令でない場合(図7のS150の「NO」)、階層キャッシュモデル部330は処理を終了する。
一方、入力した命令がメモリ参照命令である場合(図7のS150の「YES」)、階層キャッシュモデル部330は、入力したオペランドアドレスを階層キャッシュモデルに設定する。
そして、階層キャッシュモデル部330は入力した命令のアクセス遅延サイクル数を特定し、累積遅延時間保持部400に出力する(詳細は後述、図7のS151)。
そして、累積遅延時間保持部400は、図7のS151で特定されたアクセス遅延サイクル数と図2のS111で設定された動作周波数とから、階層キャッシュモデル部330が入力した命令のアクセス遅延時間を算出する。そして、累積遅延時間保持部400は、算出した遅延時間を記憶している累積遅延時間に加算し、加算後の累積遅延時間を記憶する(図7のS152)。
(階層キャッシュモデルの説明)
図8は、階層キャッシュモデルの例を示す図である。
階層キャッシュモデルは、命令1次キャッシュメモリのタグをシミュレートする命令1次キャッシュメモリモデル333と、オペランド1次キャッシュメモリのタグをシミュレートするオペランド1次キャッシュメモリモデル331と、2次キャッシュメモリのタグをシミュレートする2次キャッシュメモリモデル332とで構成される。
そして、階層キャッシュモデルは、階層キャッシュメモリのタグ動作をシミュレートしている。
この階層キャッシュモデルを用いて、階層キャッシュモデル部330の処理の詳細を説明する。
(命令アクセス遅延サイクル数の特定処理)
図9は、命令アクセス遅延サイクル数の特定処理の例を示すフローチャートである。
図9に示すフローチャートは、図6のS141の処理を詳細に示したものである。
まず、階層キャッシュモデル部330は入力した命令アドレスが命令1次キャッシュメモリモデル333に含まれているか否かを判定する(図9のS210)。
命令アドレスが命令1次キャッシュメモリモデル333に含まれている場合(図9のS210の「YES」)、命令1次キャッシュメモリモデル333でキャッシュヒット(L1ヒット)となる。そして、階層キャッシュモデル部330は、アクセス遅延サイクル数をゼロとして特定する(図9のS216)。
一方、命令アドレスが命令1次キャッシュメモリモデル333に含まれていない場合(図9のS210の「NO」)、命令1次キャッシュメモリモデル333でキャッシュミス(L1ミス)となる。そして、階層キャッシュモデル部330は、図9のS210でキャッシュミス(L1ミス)となったので、新たに命令アドレスを命令1次キャッシュメモリモデル333に登録する(図9のS211)。これにより、同じキャッシュラインに対する命令取出しでは、キャッシュヒットとなる。
次に、階層キャッシュモデル部330は、命令1次キャッシュメモリモデル333でキャッシュミスとなった命令アドレスが2次キャッシュメモリモデル332に含まれているか否かを判定する(図9のS212)。
命令アドレスが2次キャッシュメモリモデル332に含まれている場合(図9のS212の「YES」)、2次キャッシュメモリモデル332でキャッシュヒット(L2ヒット)となる。
そして、階層キャッシュモデル部330は、命令1次キャッシュメモリモデル333でキャッシュミス(L1ミス)となったことにより、メモリアクセスに要するサイクル数をアクセス遅延サイクル数として特定する(図9のS215)。
なお、メモリアクセスに要するサイクル数は、予め情報処理装置100の記憶領域に記憶されている(以降の説明においても同様である)。また、図9のS215においては具体的なサイクル数の数値の記述は省略し、アクセス遅延サイクル=「B」と記述している(以降の説明においても同様である)。
一方、命令アドレスが2次キャッシュメモリモデル332に含まれていない場合(図9のS212の「NO」)、2次キャッシュメモリモデル332でキャッシュミス(L2ミス)となる。そして、階層キャッシュモデル部330は、図9のS212でキャッシュミス(L2ミス)となったので、新たに命令アドレスを2次キャッシュメモリモデル332に登録する(図9のS213)。これにより、同じキャッシュラインに対する命令取出しでは、キャッシュヒットとなる。
そして、階層キャッシュモデル部330は、L1ミスとなったことによりメモリアクセスに要するサイクル数と、L2ミスとなったことによりメモリアクセスに要するサイクル数とが加算された値をアクセス遅延サイクル数として特定する(図9のS214)。
(オペランドアクセス遅延サイクル数の特定処理)
図10は、オペランドアクセス遅延サイクル数の特定処理の例を示すフローチャートである。
図10に示すフローチャートは、図7のS151の処理を詳細に示したものである。
まず、階層キャッシュモデル部330は入力したオペランドアドレスがオペランド1次キャッシュメモリモデル331に含まれているか否かを判定する(図10のS310)。
オペランドアドレスがオペランド1次キャッシュメモリモデル331に含まれている場合(図10のS310の「YES」)、オペランド1次キャッシュメモリモデル331でキャッシュヒット(L1ヒット)となる。そして、階層キャッシュモデル部330は、アクセス遅延サイクル数をゼロとして特定する(図10のS316)。
一方、オペランドアドレスがオペランド1次キャッシュメモリモデル331に含まれていない場合(図10のS310の「NO」)、オペランド1次キャッシュメモリモデル331でキャッシュミス(L1ミス)となる。そして、階層キャッシュモデル部330は、図10のS310でキャッシュミス(L1ミス)となったので、新たにオペランドアドレスをオペランド1次キャッシュメモリモデル331に登録する(図10のS311)。これにより、同じキャッシュラインに対するオペランド取出しでは、キャッシュヒットとなる。
次に、階層キャッシュモデル部330は、オペランド1次キャッシュメモリモデル331でキャッシュミスとなったオペランドアドレスが2次キャッシュメモリモデル332に含まれているか否かを判定する(図10のS312)。
オペランドアドレスが2次キャッシュメモリモデル332に含まれている場合(図10のS312の「YES」)、2次キャッシュメモリモデル332でキャッシュヒット(L2ヒット)となる。
そして、階層キャッシュモデル部330は、オペランド1次キャッシュメモリモデル331でキャッシュミス(L1ミス)となったことにより、メモリアクセスに要するサイクル数をアクセス遅延サイクル数として特定する(図10のS315)。
一方、オペランドアドレスが2次キャッシュメモリモデル332に含まれていない場合(図10のS312の「NO」)、2次キャッシュメモリモデル332でキャッシュミス(L2ミス)となる。そして、階層キャッシュモデル部330は、図10のS312でキャッシュミス(L2ミス)となったので、新たにオペランドアドレスを2次キャッシュメモリモデル332に登録する(図10のS313)。これにより、同じキャッシュラインに対するオペランド取出しでは、キャッシュヒットとなる。
そして、階層キャッシュモデル部330は、L1ミスとなったことによりメモリアクセスに要するサイクル数と、L2ミスとなったことによりメモリアクセスに要するサイクル数とが加算された値をアクセス遅延サイクル数として特定する(図10のS314)。
(分岐遅延時間加算処理)
図11は、分岐遅延時間の加算処理の例を示すフローチャートである。
図11に示すフローチャートは、図2のS60の処理を詳細に示したものである。
分岐命令遅延モデル部320は、図3のS121で命令インタプリタ部50が入力した命令と同じ命令を入力する。
分岐命令遅延モデル部320は、入力した命令が分岐命令か否かを判定する(図11のS160)。
入力した命令が分岐命令でない場合(図11のS160の「NO」)、分岐命令遅延モデル部320は、プログラムカウンタに入力した命令の命令長を加算する(図11のS172)。
一方、入力した命令が分岐命令である場合(図11のS160の「YES」)、命令インタプリタ部50は、図3のS122で分岐命令に対して、対象計算機の実行処理をシミュレートしている。そして、分岐命令遅延モデル部320は、命令インタプリタ部50がシミュレートした分岐命令の命令アドレスと分岐先アドレスと分岐結果とを入力する。
そして、分岐命令遅延モデル部320は、入力した情報に基づき、入力した命令の分岐遅延サイクル数を特定し、累積遅延時間保持部400に出力する(詳細は後述、図11のS161)。
そして、累積遅延時間保持部400は、図11のS161で特定された分岐遅延サイクル数と図2のS111で設定された動作周波数とから、分岐命令遅延モデル部320が入力した命令のアクセス遅延時間を算出する。そして、累積遅延時間保持部400は、算出した遅延時間を記憶している累積遅延時間に加算し、加算後の累積遅延時間を記憶する(図11のS162)。
更に、分岐命令遅延モデル部320は、入力した分岐結果が分岐成立か否かを判定する(図11のS170)。
分岐が不成立の場合(図11のS170の「NO」)、分岐命令遅延モデル部320は、図11のS172の処理を行う。
一方、分岐が成立の場合(図11のS170の「YES」)、分岐命令遅延モデル部320は、入力した分岐先アドレスを次に実行する命令のアドレスとしてプログラムカウンタに設定する(図11のS171)。
次に、図11のS161における分岐遅延サイクル数の特定処理の詳細を説明する。
(分岐遅延サイクル数の特定処理の第1の例)
図12は、分岐遅延サイクル数の特定処理の第1の例を示すフローチャートである。
図12に示すフローチャートは、図11のS161の処理を詳細に示した第1の例である。
分岐遅延サイクル数の特定処理の第1の例は、対象計算機が条件分岐命令は分岐しないと予測する場合の処理の例である。
すなわち、分岐命令遅延モデル部320は、いずれの分岐命令(条件分岐命令)に対しても分岐の不成立を予測する対象計算機の分岐予測をシミュレートする。
分岐命令遅延モデル部320は、入力した分岐命令が条件分岐命令か否かを判定する(図12のS410)。
入力した分岐命令が条件分岐命令の場合(図12のS410の「YES」)、分岐命令遅延モデル部320は、対象計算機の分岐予測をシミュレートする。ここでは、前述の通り、分岐命令遅延モデル部320は、シミュレーションにより分岐の不成立を予測する。
そして、分岐命令遅延モデル部320は、入力した分岐結果が分岐成立であるか否かを判定する(図12のS412)。
すなわち、分岐命令遅延モデル部320は、シミュレーションにおける分岐予測の正否を分岐命令ごとに判断する。
そして、分岐結果が分岐成立である場合(図12のS412の「YES」)は、シミュレーションにおいて正しく分岐予測できなかった分岐命令を対象計算機が実行する場合である。
この場合、分岐命令遅延モデル部320は、正しく分岐予測できなかった分岐命令を対象計算機が実行する際の遅延時間を、分岐遅延サイクル数として特定する(図12のS413)。なお、正しく分岐予測できなかった分岐命令を対象計算機が実行する際の遅延時間を予測外遅延時間と称する。すなわち、分岐命令遅延モデル部320は、予測外遅延時間が生じると予測する。
なお、この予測外遅延時間は、遅延時間情報として情報処理装置100に備えられる記憶装置(例えば磁気ディスク装置920(図15))に記憶されている。そして、分岐命令遅延モデル部320は、この予測外遅延時間を情報処理装置100に備えられる記憶装置(例えば磁気ディスク装置920(図15))から読み出す。ここで、情報処理装置100に備えられる記憶装置(例えば磁気ディスク装置920(図15))は、遅延時間情報記憶部に対応する。
また、遅延時間情報に示される各種の遅延時間はサイクル数で示されている。図12のS413においては具体的なサイクル数の数値の記述は省略し、分岐遅延サイクル=「F」と記述している(以降の説明においても同様である)。なお、同一のアルファベットを付した分岐遅延サイクル数の値は、同一であるものとする。
ここで、正しく分岐予測できなかった分岐命令を対象計算機が実行する際の遅延時間が発生する要因の例を挙げる。
例えば、条件分岐命令は分岐しないと予測する対象計算機において、分岐結果が分岐成立である場合、対象計算機がパイプラインに設定済みの命令を破棄し、分岐先の命令を新たに読み込む処理が発生することにより、遅延時間が発生する。図12のS413が、この例に該当する。
また、別の例としては、条件分岐命令は分岐すると予測する対象計算機において、分岐結果が分岐不成立である場合がある。この場合、対象計算機が予め予測した分岐先の命令を読み込み、パイプラインに設定していたにも関わらず、パイプラインに設定済みの命令を破棄し、分岐不成立の場合の命令を新たに読み込む処理が生じ、遅延時間が発生する。
一方、分岐結果が分岐不成立である場合(図12のS412の「NO」)は、シミュレーションにおいて正しく分岐予測できた分岐命令を対象計算機が実行する場合である。
この場合、分岐命令遅延モデル部320は、正しく分岐予測できた分岐命令を対象計算機が実行する際の遅延時間を、分岐遅延サイクル数として特定する(図12のS414)。なお、正しく分岐予測で分岐命令を対象計算機が実行する際の遅延時間を予測適合遅延時間と称する。すなわち、分岐命令遅延モデル部320は、予測適合遅延時間が生じると予測する。
この予測適合遅延時間も、遅延時間情報として情報処理装置100に備えられる記憶装置(例えば磁気ディスク装置920(図15))に記憶されている。そして、予測外遅延時間と同様に分岐命令遅延モデル部320は、この予測適合遅延時間を情報処理装置100に備えられる記憶装置(例えば磁気ディスク装置920(図15))から読み出す。
なお、分岐予測が分岐不成立で、分岐結果も分岐不成立である場合は、分岐処理が不要であるため、予測適合遅延時間は、ゼロに設定されている(図12のS414)。
更に、入力した分岐命令が常に分岐が成立する分岐命令である無条件分岐命令の場合(図12のS410の「NO」)、分岐命令遅延モデル部320は、対象計算機の分岐予測をシミュレートしない。
この場合、分岐命令遅延モデル部320は、無条件分岐命令を対象計算機が実行する際の遅延時間を、分岐遅延サイクル数として特定する(図12のS411)。
なお、無条件分岐命令を対象計算機が実行する際の遅延時間を無条件分岐遅延時間と称する。すなわち、分岐命令遅延モデル部320は、無条件分岐遅延時間が生じると予測する。
この無条件分岐遅延時間も、遅延時間情報として情報処理装置100に備えられる記憶装置(例えば磁気ディスク装置920(図15))に記憶されている。
(分岐遅延サイクル数の特定処理の第2の例)
図13は、分岐遅延サイクル数の特定処理の第2の例を示すフローチャートである。
図13に示すフローチャートは、図11のS161の処理を詳細に示した第2の例である。
分岐遅延サイクル数の特定処理の第2の例は、対象計算機が条件分岐命令の命令アドレスと分岐先アドレスとの比較により、分岐予測を行う場合の処理の例である。
具体的には、分岐命令遅延モデル部320が、分岐命令のアドレスが当該分岐命令の分岐先アドレスよりも大きい場合に分岐の成立を予測し、分岐命令のアドレスが当該分岐命令の分岐先アドレス以下の場合に分岐の不成立を予測する対象計算機の分岐予測をシミュレートする例である。
なお、図13のS510とS511との処理は図12と同様である為、説明を省略する。
ここで、条件分岐命令は、FORループ記述やIF文記述されたプログラムで出現することが多い。
FORループ記述されたプログラムを実行する場合は、「命令アドレス>分岐先アドレス」となることが多い。よって、「命令アドレス>分岐先アドレス」の場合に、対象計算機は分岐成立と予測する。
IF文記述されたプログラムを実行する場合は、「命令アドレス=<分岐先アドレス」となることが多い。よって、「命令アドレス=<分岐先アドレス」の場合に、対象計算機は分岐不成立と予測する。
分岐遅延サイクル数の特定処理の第2の例では、対象計算機における以上の命令アドレスと分岐先アドレスとによる静的分岐予測を利用する。
分岐命令遅延モデル部320は、入力した分岐先アドレスが命令アドレスよりも大きいか否かを判定する(図13のS520)。
そして、「命令アドレス>分岐先アドレス」の場合(図13のS520の「YES」)、分岐命令遅延モデル部320はシミュレーションにより分岐の成立を予測する(図13のS521)。
そして、分岐命令遅延モデル部320は、入力した分岐結果が分岐成立であるか否かを判定する(図13のS523)。
すなわち、分岐命令遅延モデル部320は、分岐遅延サイクル数の特定処理の第1の例と同様にシミュレーションにおける分岐予測の正否を分岐命令ごとに判断する。
そして、分岐結果が分岐成立である場合(図13のS523の「YES」)は、シミュレーションにおいて分岐の成立が正しく予測された分岐命令を対象計算機が実行する場合である。
この場合、分岐命令遅延モデル部320は、第1の予測適合遅延時間を、分岐遅延サイクル数として特定する(図13のS525)。すなわち、分岐命令遅延モデル部320は、第1の予測適合遅延時間が生じると予測する。
ここで、第1の予測適合遅延時間とは、対象計算機が分岐の成立を正しく予測した場合の予測適合遅延時間である。第1の予測適合遅延時間の例としては、対象計算機が予め予測した分岐先の命令を読み込む処理に要する時間が想定される。
なお、この第1の予測適合遅延時間、及び後述の第2の予測適合遅延時間と第1の予測外遅延時間と第2の予測外遅延時間とは、遅延時間情報として情報処理装置100に備えられる記憶装置(例えば磁気ディスク装置920(図15))に記憶されている。
また、分岐結果が分岐不成立である場合(図13のS523の「NO」)は、シミュレーションにおいて分岐の成立が予測された後に分岐が成立しなかった分岐命令を対象計算機が実行する場合である。
この場合、分岐命令遅延モデル部320は、第1の予測外遅延時間を、分岐遅延サイクル数として特定する(図13のS526)。すなわち、分岐命令遅延モデル部320は、第1の予測外遅延時間が生じると予測する。
ここで、第1の予測外遅延時間とは、対象計算機が分岐の成立を予測した後に分岐が成立しなかった場合の予測外遅延時間である。
一方、「命令アドレス=<分岐先アドレス」の場合(図13のS520の「NO」)、分岐命令遅延モデル部320はシミュレーションにより分岐の不成立を予測する(図13のS522)。
そして、分岐命令遅延モデル部320は、入力した分岐結果が分岐成立であるか否かを判定する(図13のS524)。
そして、分岐結果が分岐成立である場合(図13のS524の「YES」)は、シミュレーションにおいて分岐の不成立が予測された後に分岐が成立した分岐命令を対象計算機が実行する場合である。
この場合、分岐命令遅延モデル部320は、第2の予測外遅延時間を、分岐遅延サイクル数として特定する(図13のS527)。すなわち、分岐命令遅延モデル部320は、第2の予測外遅延時間が生じると予測する。
ここで、第2の予測外遅延時間とは、対象計算機が分岐の不成立を予測した後に分岐が成立した場合の予測外遅延時間である。
また、分岐結果が分岐不成立である場合(図13のS524の「NO」)は、シミュレーションにおいて分岐の不成立が正しく予測された分岐命令を対象計算機が実行する場合である。
この場合、分岐命令遅延モデル部320は、第2の予測適合遅延時間を、分岐遅延サイクル数として特定する(図13のS528)。すなわち、分岐命令遅延モデル部320は、第2の予測適合遅延時間が生じると予測する。
ここで、第2の予測適合遅延時間とは、対象計算機が分岐の不成立を正しく予測した場合の予測適合遅延時間である。
なお、図13のS528は、図12のS414と同様であり、説明を省略する。
(分岐遅延サイクル数の特定処理の第3の例)
図14は、分岐遅延サイクル数の特定処理の第3の例を示すフローチャートである。
図14に示すフローチャートは、図11のS161の処理を詳細に示した第3の例である。
分岐遅延サイクル数の特定処理の第3の例は、対象計算機が分岐命令の分岐成立履歴を保持し、分岐命令が登録済みであれば、分岐成立履歴に従って分岐予測を行い、分岐命令が未登録であれば、条件分岐命令の命令アドレスと分岐先アドレスとの比較により、分岐予測を行う場合の処理の例である。
すなわち、分岐命令遅延モデル部320は、分岐命令を実行する度に分岐結果を記憶領域に記憶し、同じ分岐命令に対しては記憶領域に記憶されている分岐結果と同じ分岐結果になると予測するプロセッサの分岐予測をシミュレートする。
なお、図14のS610とS611との処理は図12と同様である為、説明を省略する。
分岐命令遅延モデル部320は、入力した命令アドレスが分岐履歴に登録済みか否かを判定する(図14のS620)。
そして、分岐命令遅延モデル部320は、入力した命令アドレスが分岐履歴に登録済みの場合(図14のS620の「YES」)、同じ命令アドレスの条件分岐命令の前回の分岐結果が、分岐成立か否かを判定する(図14のS621)。
分岐履歴に登録されている同じ命令アドレスの条件分岐命令の前回の分岐結果が、分岐成立である場合(図14のS621の「YES」)、再度分岐成立する可能性が高く、分岐命令遅延モデル部320は、対象計算機をシミュレートし、分岐成立と予測する(図14のS622)。
一方、前回の分岐結果が、分岐不成立である場合(図14のS621の「NO」)、再度分岐不成立である可能性が高いので、分岐命令遅延モデル部320は、シミュレーションにより分岐不成立と予測する(図14のS623)。
そして、分岐命令遅延モデル部320は、入力した分岐結果が分岐成立であるか否かを判定する(図14のS624)。
入力した分岐結果が分岐成立である場合(図14のS624において「YES」)は、図13のS523において「YES」の場合と同様であり、説明を省略する。
一方、入力した分岐結果が分岐不成立である場合(図14のS624において「NO」の場合は、前回の分岐結果と異なる為に、分岐命令遅延モデル部320は対象計算機が分岐履歴に分岐不成立を登録する処理をシミュレートする(図14のS626)。
図14のS629の処理は、図13のS526の処理と同様であり、説明を省略する。
また、図14のS625以降の処理も、分岐成立の登録処理のシミュレーション(図14のS627)が加わる以外、図13のS524以降の処理もしくは図12のS412以降の処理と同様であり、説明を省略する。
更に、入力した命令アドレスが分岐履歴に未登録の場合も(図14のS620の「NO」)、分岐結果を分岐履歴に登録する処理のシミュレーション(図14のS645、S646、S647、S648)が加わる以外、図13の処理と同様である為、説明を省略する。
(実施の形態1の効果)
実施の形態1の情報処理装置100は、分岐予測を行うプロセッサが分岐命令を実行する際の遅延時間を分岐予測の正否に応じて予測可能である。
そして、実施の形態1の情報処理装置100は、命令セットシミュレーションにおいて、対象計算機のプロセッサ内部や外部の遅延要因を反映することで、対象計算機でプログラムを実行した場合のタイマ制御と一致し、命令セットシミュレーションによるプログラム実行時間の計測精度を向上させることが可能である。
更に、実施の形態1の情報処理装置100は、組込みシステムなどで用いられる周期処理のプログラム実行時間の計測が可能である。
最後に、実施の形態1に示した情報処理装置100のハードウェア構成例について説明する。
図15は、実施の形態1に示した情報処理装置100のハードウェア資源の一例を示す図である。
なお、図15の構成は、あくまでも情報処理装置100のハードウェア構成の一例を示すものであり、情報処理装置100のハードウェア構成は図15に記載の構成に限らず、他の構成であってもよい。
図15において、情報処理装置100は、プログラムを実行するCPU911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
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の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
実施の形態1で説明したメモリモデル部20と累積遅延時間保持部400と階層キャッシュモデル部330とレジスタスコアボードモデル部310との記憶領域、情報処理装置100の記憶装置は、RAM914、磁気ディスク装置920等により実現される。
通信ボード915、キーボード902、スキャナ装置907、マウス903、FDD904などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
通信ボード915は、ネットワークに接続されている。
例えば、ネットワークは、LAN、インターネットの他、WAN(ワイドエリアネットワーク)、SAN(ストレージエリアネットワーク)などでも構わない。
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
また、RAM914には、CPU911に実行させるオペレーティングシステム921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
また、ROM913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。
情報処理装置100の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
上記プログラム群923には、実施の形態1の説明において「〜部」(「〜記憶部」以外、以下同様)として説明している機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、実施の形態1の説明において、「〜の判断」、「〜の計算」、「〜の比較」、「〜の照合」、「〜の参照」、「〜の検索」、「〜の抽出」、「〜の検査」、「〜の生成」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の入力」、「〜の受信」、「〜の作成」、「〜の判定」、「〜の定義」、「〜の算出」、「〜の更新」、「〜の特定」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「ファイル」や「データベース」の各項目として記憶されている。
ファイル群924の実施の形態1の説明における具体例としては、実行サイクルテーブル、対象計算機の動作周波数、遅延時間情報などが挙げられる。
「ファイル」や「データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示・制御・判定・識別・検知・判別・選択・算出・導出・更新・作成・取得・通知・指示・判断などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示・制御・判定・識別・検知・判別・選択・算出・導出・更新・作成・取得・通知・指示・判断などのCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。
また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、実施の形態1の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、実施の形態1で説明したフローチャートに示すステップ、手順、処理により、本発明に係る情報処理方法を実現することができる。
また、「〜部」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。
プログラムはCPU911により読み出され、CPU911により実行される。
すなわち、プログラムは、実施の形態1の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態1の「〜部」の手順や方法をコンピュータに実行させるものである。
このように、実施の形態1に示す情報処理装置100は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
20 メモリモデル部、30 遅延サイクル特定部、40 割込み生成部、50 命令インタプリタ部、100 情報処理装置、300 命令実行サイクル特定部、310 レジスタスコアボードモデル部、320 分岐命令遅延モデル部、330 階層キャッシュモデル部、400 累積遅延時間保持部、410 割込み判定部、420 タイマ設定部、331 オペランド1次キャッシュメモリモデル、332 2次キャッシュメモリモデル、333 命令1次キャッシュメモリモデル、901 表示装置、902 キーボード、903 マウス、904 FDD、905 コンパクトディスク装置、906 プリンタ装置、907 スキャナ装置、911 CPU、912 バス、913 ROM、914 RAM、915 通信ボード、920 磁気ディスク装置、921 オペレーティングシステム、922 ウィンドウシステム、923 プログラム群、924 ファイル群。

Claims (9)

  1. 分岐予測を行うプロセッサが、正しく分岐予測できた分岐命令を実行する際の遅延時間が予測適合遅延時間として定義され、前記プロセッサが、正しく分岐予測できなかった分岐命令を実行する際の遅延時間が予測外遅延時間として定義されている遅延時間情報を記憶する遅延時間情報記憶部と、
    1つ以上の分岐命令に対して、前記プロセッサの分岐予測と分岐命令の実行処理とをシミュレートするシミュレーション部と、
    前記シミュレーション部のシミュレーションにおける分岐予測の正否を分岐命令ごとに判断し、前記シミュレーションにおいて正しく分岐予測できた分岐命令を前記プロセッサが実行する場合に前記予測適合遅延時間が生じると予測し、前記シミュレーションにおいて正しく分岐予測できなかった分岐命令を前記プロセッサが実行する場合に前記予測外遅延時間が生じると予測する遅延時間予測部と
    を備えることを特徴とする情報処理装置。
  2. 前記遅延時間情報記憶部は、
    前記予測適合遅延時間として、前記プロセッサが分岐の成立を正しく予測した場合の遅延時間である第1の予測適合遅延時間と、前記プロセッサが分岐の不成立を正しく予測した場合の遅延時間である第2の予測適合遅延時間とが定義され、
    前記予測外遅延時間として、前記プロセッサが分岐の成立を予測した後に分岐が成立しなかった場合の遅延時間である第1の予測外遅延時間と、前記プロセッサが分岐の不成立を予測した後に分岐が成立した場合の遅延時間である第2の予測適合遅延時間とが定義されている遅延時間情報を記憶し、
    前記遅延時間予測部は、
    前記シミュレーション部のシミュレーションにおける分岐予測の正否を分岐命令ごとに判断し、
    前記シミュレーションにおいて分岐の成立が正しく予測された分岐命令を前記プロセッサが実行する場合に前記第1の予測適合遅延時間が生じると予測し、
    前記シミュレーションにおいて分岐の不成立が正しく予測された分岐命令を前記プロセッサが実行する場合に前記第2の予測適合遅延時間が生じると予測し、
    前記シミュレーションにおいて分岐の成立が予測された後に分岐が成立しなかった分岐命令を前記プロセッサが実行する場合に前記第1の予測外遅延時間が生じると予測し、
    前記シミュレーションにおいて分岐の不成立が予測された後に分岐が成立した分岐命令を前記プロセッサが実行する場合に前記第2の予測外遅延時間が生じると予測することを特徴とする請求項1記載の情報処理装置。
  3. 前記シミュレーション部は、
    いずれの分岐命令に対しても分岐の不成立を予測するプロセッサの分岐予測をシミュレートすることを特徴とする請求項1記載の情報処理装置。
  4. 前記シミュレーション部は、
    分岐命令のアドレスが当該分岐命令の分岐先アドレスよりも大きい場合に分岐の成立を予測し、分岐命令のアドレスが当該分岐命令の分岐先アドレス以下の場合に分岐の不成立を予測するプロセッサの分岐予測をシミュレートすることを特徴とする請求項1又は2記載の情報処理装置。
  5. 前記シミュレーション部は、
    分岐命令を実行する度に分岐結果を記憶領域に記憶し、同じ分岐命令に対しては記憶領域に記憶されている分岐結果と同じ分岐結果になると予測するプロセッサの分岐予測をシミュレートすることを特徴とする請求項1又は2記載の情報処理装置。
  6. 前記遅延時間情報記憶部は、
    常に分岐が成立する分岐命令である無条件分岐命令を、前記プロセッサが実行する際の遅延時間が無条件分岐遅延時間として定義されている遅延時間情報を記憶し、
    前記シミュレーション部は、
    前記無条件分岐命令に対しては分岐予測のシミュレーションを行わず、
    前記遅延時間予測部は、
    前記プロセッサが前記無条件分岐命令を実行する場合に、前記無条件分岐遅延時間が生じると予測することを特徴とする請求項1〜5いずれか記載の情報処理装置。
  7. 前記情報処理装置は、更に、
    分岐命令の実行が割込み命令の実行前に完了するか否かを、前記遅延時間予測部により予測された遅延時間を用いて判定する割込み判定部を備えることを特徴とする請求項1〜6いずれか記載の情報処理装置。
  8. 分岐予測を行うプロセッサが、正しく分岐予測できた分岐命令を実行する際の遅延時間が予測適合遅延時間として定義され、前記プロセッサが、正しく分岐予測できなかった分岐命令を実行する際の遅延時間が予測外遅延時間として定義されている遅延時間情報をコンピュータが所定の記憶領域から読み出す読み出しステップと、
    前記コンピュータが、1つ以上の分岐命令に対して、前記プロセッサの分岐予測と分岐命令の実行処理とをシミュレートするシミュレーションステップと、
    前記コンピュータが、前記シミュレーションステップのシミュレーションにおける分岐予測の正否を分岐命令ごとに判断し、前記シミュレーションにおいて正しく分岐予測できた分岐命令を前記プロセッサが実行する場合に前記予測適合遅延時間が生じると予測し、前記シミュレーションにおいて正しく分岐予測できなかった分岐命令を前記プロセッサが実行する場合に前記予測外遅延時間が生じると予測する遅延時間予測ステップと
    を備えることを特徴とする情報処理方法。
  9. 分岐予測を行うプロセッサが、正しく分岐予測できた分岐命令を実行する際の遅延時間が予測適合遅延時間として定義され、前記プロセッサが、正しく分岐予測できなかった分岐命令を実行する際の遅延時間が予測外遅延時間として定義されている遅延時間情報を所定の記憶領域から読み出す読み出しステップと、
    1つ以上の分岐命令に対して、前記プロセッサの分岐予測と分岐命令の実行処理とをシミュレートするシミュレーションステップと、
    前記シミュレーションステップのシミュレーションにおける分岐予測の正否を分岐命令ごとに判断し、前記シミュレーションにおいて正しく分岐予測できた分岐命令を前記プロセッサが実行する場合に前記予測適合遅延時間が生じると予測し、前記シミュレーションにおいて正しく分岐予測できなかった分岐命令を前記プロセッサが実行する場合に前記予測外遅延時間が生じると予測する遅延時間予測ステップと
    をコンピュータに実行させることを特徴とするプログラム。
JP2012094809A 2012-04-18 2012-04-18 情報処理装置および情報処理方法およびプログラム Pending JP2013222392A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012094809A JP2013222392A (ja) 2012-04-18 2012-04-18 情報処理装置および情報処理方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012094809A JP2013222392A (ja) 2012-04-18 2012-04-18 情報処理装置および情報処理方法およびプログラム

Publications (1)

Publication Number Publication Date
JP2013222392A true JP2013222392A (ja) 2013-10-28

Family

ID=49593289

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012094809A Pending JP2013222392A (ja) 2012-04-18 2012-04-18 情報処理装置および情報処理方法およびプログラム

Country Status (1)

Country Link
JP (1) JP2013222392A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017111768A (ja) * 2015-12-18 2017-06-22 富士通株式会社 シミュレーションプログラム、情報処理装置、シミュレーション方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017111768A (ja) * 2015-12-18 2017-06-22 富士通株式会社 シミュレーションプログラム、情報処理装置、シミュレーション方法
US10671780B2 (en) 2015-12-18 2020-06-02 Fujitsu Limited Information processing device that executes simulation and a simulation method

Similar Documents

Publication Publication Date Title
US9262160B2 (en) Load latency speculation in an out-of-order computer processor
TWI470546B (zh) 微處理器、管線式微處理器、快速執行條件分支指令之方法、以及解析第一或第二類別條件分支指令之方法
JP5799465B2 (ja) ループバッファ学習
TWI506550B (zh) 管線式微處理器、執行兩種條件分支指令的方法以及其電腦程式產品
US9052909B2 (en) Recovering from exceptions and timing errors
EP2673703A1 (en) Controlling the execution of adjacent instructions that are dependent upon a same data condition
US10740107B2 (en) Operation of a multi-slice processor implementing load-hit-store handling
JP2008544353A (ja) マイクロプロセッサの命令パイプライン内の命令フラッシングを管理する方法及び装置
US10564691B2 (en) Reducing power consumption in a multi-slice computer processor
US20150100755A1 (en) Data processing apparatus and method for controlling performance of speculative vector operations
US9003171B2 (en) Page fault prediction for processing vector instructions
TWI648624B (zh) 管理用於分支預測的歷史資訊的裝置及方法
US9342432B2 (en) Hardware performance-monitoring facility usage after context swaps
US7418581B2 (en) Method and apparatus for sampling instructions on a processor that supports speculative execution
KR20230093442A (ko) 프로세서에서 추론적 예측 실패 복구시 리플레이를 위한 제어 독립적(ci) 메모리 데이터 의존적(dd)(cimdd) 명령어들로서 로드 기반 제어 독립적(ci) 레지스터 데이터 독립적(di)(cirdi) 명령어들의 예측
US20160170770A1 (en) Providing early instruction execution in an out-of-order (ooo) processor, and related apparatuses, methods, and computer-readable media
CN102163139B (zh) 微处理器融合载入算术/逻辑运算及跳跃宏指令
US8868886B2 (en) Task switch immunized performance monitoring
JP2013222392A (ja) 情報処理装置および情報処理方法およびプログラム
US6990569B2 (en) Handling problematic events in a data processing apparatus
KR20230084140A (ko) 제어 독립성 기술을 채용한 프로세서에서 처리되는 명령어에 대한 추론성 예측을 행하는 데 사용된 추론성 이력의 복원
WO2024031108A2 (en) Branch prediction checkpoint state restoration
JP2007317083A (ja) マイクロプロセッサおよびパイプライン制御方法
JPH0728669A (ja) マイクロプロセッサ
US20150127318A1 (en) Apparatus and method for simulating an operation of an out-of-order processor