JP2013218394A - 情報処理装置、時間補正方法 - Google Patents

情報処理装置、時間補正方法 Download PDF

Info

Publication number
JP2013218394A
JP2013218394A JP2012086163A JP2012086163A JP2013218394A JP 2013218394 A JP2013218394 A JP 2013218394A JP 2012086163 A JP2012086163 A JP 2012086163A JP 2012086163 A JP2012086163 A JP 2012086163A JP 2013218394 A JP2013218394 A JP 2013218394A
Authority
JP
Japan
Prior art keywords
time
unit
virtual
clock signal
cpu
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
JP2012086163A
Other languages
English (en)
Inventor
Shigeru Sasaki
茂 佐々木
Wakako Tahara
和加子 田原
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.)
Toyota Motor Corp
Original Assignee
Toyota Motor 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 Toyota Motor Corp filed Critical Toyota Motor Corp
Priority to JP2012086163A priority Critical patent/JP2013218394A/ja
Publication of JP2013218394A publication Critical patent/JP2013218394A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】クロック周波数が異なっていても、補正される側のタイマを基準となる側のタイマで正しく補正できる情報処理装置を提供すること。
【解決手段】第一のクロック発生器25と、CPU22と、を有する情報処理装置100であって、第二のクロック発生器45と、第二のクロック信号をカウントして第二の時間を計測する第二の時間計測手段42と、第二の時間が記憶される時間記憶領域を備えた記憶手段41と、を有する基板40と通信する通信手段23と、前記基板の前記時間記憶領域から取得した前記第二の時間の計測を、前記第一のクロック信号をカウントして継続する第一の時間計測手段352、第二の時間を、第一のクロック信号の周波数と第二のクロック信号の周波数の比に応じて補正する時間補正手段38と、を有する。
【選択図】図11

Description

本発明は、基板と接続され、時間を計測する情報処理装置に関する。
車両には多くの電子制御ユニットが搭載されている。電子制御ユニットの開発過程では車載される電子制御ユニットのマイコンにプログラムや周辺機器を接続する前に、マイコンの動作をPC(Personal Computer)などでシミュレートする場合がある。
この場合、完成している部品や変更のない部品は、シミュレートすることなく実在部品を使用すれば、開発期間を短縮できコストを低減できる。しかしながら、この場合、マイコンのCPUなどのシミュレート対象をシミュレートするPCと、実在部品を接続する必要が生じてしまう。
図1は、電子制御ユニットのシミュレーションを説明する図の一例である。CPU部20がマイコンのターゲットCPUをシミュレートして実現されるマイコンの機能ブロックである。CPU部20はPC100が有するホストCPU22上でソフト的に実現されている。これに対し、I/O部40はマイコンに搭載される実在部品である。電子制御ユニットの開発過程ではI/O部40を含めてシミュレートする必要があるため、PC100のホストCPU22とI/O部40が通信路23で接続されている。通信路23はPC100で汎用的に使用される規格の通信ケーブルや装着スロットなどである。
CPUコア部31はメモリ部33に対して命令フェッチを行い、取得した命令をデコードする。デコード結果に応じて各命令に応じた動作を実行する。例えば、算術演算や分岐命令などの場合、CPUコア部31が汎用レジスタや制御レジスタの値を更新する。LOAD/STORE命令は、LD/STアクセス制御部32に処理を依頼する。こうすることで、LD/STアクセス制御部32がLOAD/STORE処理している間、CPUコア部31は次の命令を実行することができる。
LD/STアクセス制御部32は、アクセス先がメモリ部33なのかI/O部40なのかを判断し、メモリ部33又はI/O部40にアクセスする。
しかしながら、LD/STアクセス制御部32がI/O部40にアクセスする場合、PC100とI/O部40が物理的に別々であるため、遅延が生じてしまう。というのは、車両上ではI/O部40はマイコンと同じ基板に配置されるのに対し、シミュレーション時は、CPU部20とI/O部40が通信路23を介して通信するため、マイコンでは生じない遅延が生じる。このような遅延が、マイコンが車載された場合にシミュレーションでは判明しなかった影響を生じさせるおそれがある。
また、シミュレーション時も次のような不都合が生じる。例えば、I/O部40にタイマがあり、CPUコア部31がタイマにアクセスする場合、タイマ用のレジスタに頻繁にアクセスする必要が生じる。この場合、タイマ値を契機に制御を行う場合、遅延が弊害となり所望の処理を実現できないおそれがある。
図2は、処理の不都合を説明する図の一例である。図2では、CPUコア部31がタイマを利用してエンジンの「開閉弁制御のOn/Off設定」を行う処理を行っている。CPUコア部31は、タイマ値がある値になった場合に開閉弁制御のOn/Offを切り替える。ある値は、仮想I/Oレジスタ部41のコンペマッチレジスタ44に設定され、CPUコア部31はコンペアマッチレジスタ44に設定した値がタイマ値と一致すると、それを検出してOn/Offを切り替える。
タイマは、図2の上部に示すように、予め決まった1サイクルの計測を自動的に繰り返す。このタイマ利用した、「開閉弁制御のOn/Off設定」の期待される動作について順番に説明する。
1.CPUコア部31はタイマ値のLOAD命令を実行する。I/O部40に読み出し要求が到達する時間t1が必要なため、取得するデータはt1となる。
2.CPUコア部31は時刻t1からα時間が経過した時に、開閉弁制御のOn/Offを切り替えるため、コンペアマッチレジスタ44に「t1+α」を設定する。すなわち、タイマに対しSTORE命令を実行する。
3.タイマ値がコンペアマッチレジスタ44に設定した「t1+α」と一致すると、タイマが割込み通知フラグをセットする。
4.CPUコア部31は割込み通知フラグを検出して「開閉弁制御」をOnにする。
5.割込み処理後、CPUコア部31はコンペアマッチレジスタ44に「t1+α+β」を設定する。
6.タイマ値がコンペアマッチレジスタ44に設定した「t1+α+β」と一致すると、タイマが割込み通知フラグをセットする。
7.CPUコア部31は割込み通知フラグを検出して「開閉弁制御」をOffにする。
しかしながら、例えば、2番目の処理において、CPUコア部31からI/O部40のコンペアマッチレジスタ44に「t1+α」を設定する際に遅延が生じると、タイマ値が先に「t1+α」を超える場合が起こる。つまり、図示するように、時刻「t1+α」において、コンペアマッチレジスタ44にまだ「t1+α」が設定されていない場合が生じうる。この場合、コンペアマッチレジスタ44の値とタイマ値とが一致するには次の1サイクル程度の時間が必要になり、コンペアマッチレジスタ44が実質的に割込み通知フラグをセットできなくなる。すると、4番目以降の処理が全て実行されず、「開閉弁制御のOn/Off」の切り替えが困難になる。
このような不都合を解決するため、I/O部40のタイマと同期したタイマをCPU部20に実装することが考えられる(例えば、特許文献1参照。)。特許文献1には、メインシステムのブートローダーにNTPサーバーにアクセスする機能を持たせて、この機能を用いてサブシステムが正確な時刻を取得した後に、取得した正確な時刻を初期時刻としてメインシステムを起動する情報処理装置が開示されている。サブシステムが接続されるLANにNTPサーバーが接続されていない場合でも、サブシステムがNTPサーバーに同期した正確な時刻を取得した後に、取得した正確な時刻を初期時刻としてメインシステムを起動することができる。
図2のシミュレーションに適用すると、CPU部20に、I/O部40のI/Oレジスタ部41の状態をコピーして維持する「仮想I/Oレジスタ部」をCPU部20に配置することが考えられる。
図3は、仮想I/Oレジスタ部35を有する場合の、電子制御ユニットのシミュレーションを説明する図の一例である。図示するように、仮想I/Oレジスタ部35はタイマ352を有している。仮想I/Oレジスタ部35が保持するタイマ352のタイマ値は、I/O部40と同期されるので、LD/STアクセス制御部32は仮想I/Oレジスタ部35にアクセスすればよいことになる。仮想I/Oレジスタ部35は、CPU部20側にあるので遅延が生じることもない。
図4は、仮想I/Oレジスタ部35を有する場合の処理を説明する図の一例である。期待動作については図2と同様なので省略する。仮想I/Oレジスタ部35のタイマ352は、I/O部40のタイマとほぼ同期してタイマ値をカウントしている。
s1.CPUコア部31は、I/O部40でなく仮想I/Oレジスタ部35にアクセス(LOAD)する。
s2.仮想I/Oレジスタのタイマ値がt1であるとすると、CPUコア部31はタイマ値として時刻t1を取得する。
s3.CPUコア部31は「t1+α」を設定するSTORE命令を生成する。
s4.CPUコア部31は、仮想I/Oレジスタ部35のコンペアマッチレジスタ351に「t1+α」を設定(STORE)する。
LOAD及びSTOREのいずれの場合も、仮想I/Oレジスタ部35にアクセスするので遅延を抑制している。このため、コンペアマッチレジスタ351に「t1+α」が設定された時、仮想I/Oレジスタ部35のタイマ352のタイマ値は「t1+α」に到達していない。
S5.仮想I/Oレジスタ部35ののタイマ352は、タイマ値が「t1+α」に到達すると、タイマ352が割込み通知フラグをセットする。
S6.CPUコア部31は、割込み通知フラグを検出する。このように、CPUコア部31は、割込みフラグを検出可能である。
S7.CPUコア部31は割り込み処理を行う。具体的には開閉弁制御をOn(High)に設定する。
S8.CPUコア部31は、「t1+α+β」を仮想I/Oレジスタ部35のコンペアマッチレジスタ351に設定(STORE)する。
S9.仮想I/Oレジスタ部35のタイマ値が「t1+α+β」に到達すると、タイマ352が割込み通知フラグをセットする。
S10.CPUコア部31は、割込み通知フラグを検出する。このように、CPUコア部31は、割込みフラグを検出可能である。
特開2011−198013号公報
しかしながら、ホストCPU22でマイコンの処理をシミュレートする場合、仮想I/Oレジスタ部35とI/O部40のタイマを単に同期するだけでは、わずかな違いが生じ、処理に不都合をもたらすおそれがある。すなわち、CPU部20のクロック周波数とI/O部40のクロック周波数は異なるため、仮想I/Oレジスタ部35のタイマ352のタイマ値に基づき処理すると、CPU部20のタイマ値に基づく処理とタイミングが異なってしまう。
本発明は、上記課題に鑑み、クロック周波数が異なっていても、シミュレータ側のタイマのタイマ値を正しく補正できる情報処理装置を提供することを目的とする。
本発明は、第一のクロック信号を発生させる第一のクロック発生器と、プログラムを実行するCPUと、を有する情報処理装置であって、第二のクロック信号を発生させる第二のクロック発生器と、前記二のクロック信号をカウントして第二の時間を計測する第二の時間計測手段と、前記第二の時間が記憶される時間記憶領域を備えた記憶手段と、を有する基板と通信する通信手段と、前記基板の前記時間記憶領域から取得した前記第二の時間の計測を、前記第一のクロック信号をカウントして継続する第一の時間計測手段と、前記第二の時間を、前記第一のクロック信号の周波数と前記第二のクロック信号の周波数の比に応じて補正する時間補正手段と、を有することを特徴とする。
クロック周波数が異なっていても、シミュレータ側のタイマのタイマ値を正しく補正できる情報処理装置を提供することができる。
電子制御ユニットのシミュレーションを説明する図の一例である。 処理の不都合を説明する図の一例である。 仮想I/Oレジスタ部を有する場合の、電子制御ユニットのシミュレーションを説明する図の一例である。 仮想I/Oレジスタ部を有する場合の処理を説明する図の一例である。 本実施形態の情報処理装置の機能ブロック図の一例である。 アクセステーブルの一例を示す図である。 仮想I/Oレジスタ部について説明する図の一例である。 データ更新部1,2によるデータの更新を説明する図の一例である。 ターゲットCPUの命令毎のサイクル数を示す図の一例である。 パイプライン制御を模式的に説明する図の一例である。 CPU部のタイマ値とI/O部のタイマ値のずれを説明する図の一例である。 アクセスレイテンシの違いを説明する図の一例である。
以下、本発明を実施するための形態について図面を参照しながら説明する。
図5は、本実施形態の情報処理装置の機能ブロック図の一例を示す。CPU部20は、シミュレート対象のマイコンのターゲットCPU(不図示)の機能を仮想的に実現したものである。具体的にはISS(Instruction Set Simulator)21をホストCPU22上で実行することで、CPU部20が実現される。ISSはHDD(Hard Disk Drive)24にプログラムとして記憶されている。
CPU部20はクロック発生器25を有し、I/O部40はクロック発生器45を有している。クロック発生器25はISS21を含むCPU部20に所定のクロック周波数のクロック信号を供給し、クロック発生器45はI/O部40に所定のクロック周波数のクロック信号を供給する。
ISS21は、ターゲットCPUの命令セット(算術演算命令、論理演算命令、シフト命令、LOAD/STORE命令、分岐命令等)を提供し、主に開発中のプログラムが命令セットの各命令を実行した時のレジスタ、メモリ等の状態をソフト的に生成する。ISS21は、ターゲットCPU(又はターゲットマイコン)のメーカから提供される。
ISS21はCPUコア部31、時間管理部34、LD/STアクセス制御部32、メモリ部33、及び、仮想I/Oレジスタ部35を有している。この他の機能は図示を省略した。ターゲットマイコンには、CPUコア部31、時間管理部34、LD/STアクセス制御部32、及び、メモリ部33が実在するが、仮想I/Oレジスタ部35は存在しない。
CPUコア部31は、メモリ部33に対し、プログラムの命令フェッチを行い、命令バッファなどに記憶し、命令をデコードする。算術演算や分岐命令などの命令の実行によって、汎用レジスタや制御レジスタの値を更新する。
LD/STアクセス制御部32は、LOAD命令とSTORE命令を実行する。CPUコア部31と別にあるのは、LOAD命令とSTORE命令は実行に比較的時間がかかるので専用の回路を設け、CPUコア部31の負荷を低減するためである。LD/STアクセス制御部32は、アクセス先がメモリ部33か、又は、I/Oか(つまり、タイマか)によって以下のように動作する。
・メモリ部33の場合…従来のISS21と同様にLOADやSTORE処理を実施する
・I/Oの場合…後述するアクセステーブル37を参照して、仮想I/Oレジスタ部35又はI/O部40のどちらにアクセスするかを切り替える。
・タイマの場合…I/Oと同様に、後述するアクセステーブル37を参照してアドレス変換を行い、仮想I/Oレジスタ部35のコンペアマッチレジスタ351に値を書き込み(STOREの場合)、タイマ352からデータを読み出す(LOADの場合)。なお、LOADした場合は、仮想I/Oレジスタ部35のタイマ値の補正を行う。
LD/STアクセス制御部32はアクセステーブル37及びタイマ管理部38を有する。タイマ管理部38は、仮想I/Oレジスタ部35のクロック周波数とI/O部40のクロック周波数の違いに基づくタイマ値のずれを補正する。
メモリ部33には実行対象のプログラム(ターゲットCPUが実行するプログラム)が記憶される。仮想I/Oレジスタ部35は、I/O部40のI/Oレジスタ部41の値と同じ値を保持する。データ更新部36(以下、区別するためデータ更新部1という)は、仮想I/Oレジスタ部35に値が書き込まれた場合、I/Oレジスタ部41を同じ値に更新する。データ更新部43(以下、区別するためデータ更新部2という)はI/Oレジスタ部41に値が書き込まれた場合、仮想I/Oレジスタ部35を同じ値に更新する。
時間管理部34は、CPUコア部31がターゲットCPUと同程度の速度でプログラムを実行するようにCPUコア部31の命令実行速度を調整する。実機より早く動作した場合はCPUコア部31に命令を実行させずに待機させ、遅くなった場合は早く動作した場合に余る時間で調整する。これにより想定した速度でCPUコア部31が命令を実行するように制御する。
I/O部40はI/Oレジスタ部41、I/Oレジスタ部41に接続されているADC、Port、UART、CAN、タイマ、コンペアマッチレジスタ等の周辺機器42、及び、クロック発生器45を有している。
I/O部40はホストCPU22(より具体的にはPC100が有する通信路23のインタフェース)と接続されている。I/O部40に接続される周辺機器42はマイコンによって異なるので図は一例であるが、本実施形態ではタイマを有するものとする。これらの周辺機器42は、CPU部20からI/Oレジスタ部41に設定された値により制御される。また、周辺機器42がデータを受信するなどのイベントを検出した場合、I/Oレジスタ部41に値を設定することで、不図示の割込み制御部などを介してCPUコア部31に通知する。本実施形態では、データ更新部2がI/Oレジスタ部41の値が書き込まれたことを検出して、ホストCPU22に通知し、ホストCPU22が仮想I/Oレジスタ部35に値をコピーする。
〔LD/STアクセス制御部〕
LD/STアクセス制御部32は、CPUコア部31のアクセス先に応じて、実際のアクセス先をI/Oレジスタ部41又は仮想I/Oレジスタ部35に切り替える。これにより、仮想I/Oレジスタ部35をCPU部20に配置した場合に、アクセス先を制御できる。
LD/STアクセス制御部32は、アクセス先の制御のためアクセステーブル37を参照する。
図6は、アクセステーブル37の一例を示す。アクセステーブル37にはアドレス毎に「アドレス変換関数」が対応づけられている。なお、「アクセス先」も登録されているがこれは説明のための記述であり、開発者が把握できていれば実際のアクセステーブル37にはなくてもよい。
まず、ターゲットCPUはメモリマップドI/Oという周辺機器42へのアクセス方式を採用している。このためアドレスにより周辺機器42を含むアクセス先が定まる。本実施形態では、例えばI/O部40のタイマへのアクセスを、仮想I/Oレジスタ部35のタイマ352へのアクセスに変換する必要がある。アドレス変換関数はこのアドレス変換を行う関数であり、例えば、上位16bitにFFFFを加える、8bit左シフトするなどのアドレス変換の方法を意味している。
アクセステーブル37は、ISS21の起動時など初期化する際に生成されるが、ISS21がシミュレーションの実行時にアクセステーブル生成用のテーブルを参照して変更することもできる。
LD/STアクセス制御部32は以下のように動作する。
(1)CPUコア部31がLOAD/STORE命令を実行するとアクセスアドレスとアクセスタイプ(LOAD/STORE)がLD/STアクセス制御部32に伝えられる。
(2)LD/STアクセス制御部32はアクセスアドレスに基づきアクセステーブル37を検索して、どこにアクセスするかを判断する。
(3)アクセス先に応じて以下のアドレス変換関数を使用しアドレス変換を行う。
(i) 仮想I/Oレジスタ部35の場合、アドレス変換関数“transA”を用いてアドレス変換を行う。LD/STアクセス制御部32はCPU部20の仮想I/Oレジスタ部35へアクセスする。
(ii) I/Oレジスタ部41の場合、アドレス変換関数“trans_through”を用いてアドレス変換を行う。LD/STアクセス制御部32は直接、I/O部40のI/Oレジスタ部41へアクセスする。つまりタイマのように遅延が問題とならない周辺機器42は直接、アクセスする。
(iii) メモリ部33の場合、アドレス変換関数“transB”を用いてアドレス変換を行う。LD/STアクセス制御部32はISS21内部のメモリ部33にアクセスする。
(iv) タイマの場合、アドレス変換関数“transC”を用いてアドレス変換を行う。LD/STアクセス制御部32は、CPU部20の仮想I/Oレジスタ部35のタイマ352へアクセスする。なお、このアクセスの際、タイマ管理部38が時間の補正を行う。
図7は、仮想I/Oレジスタ部35について説明する図の一例である。仮想I/Oレジスタ部35はI/Oレジスタ部41と同じ数のレジスタ(メモリ領域)を有している。I/O部40の物理アドレス(図のFFFF4000等)に対し、仮想I/Oレジスタ部35はローカルなアドレス(図の0,2,4,8,A…)が割り当てられている。アクセステーブル37の「アドレス」は物理アドレスであり、アドレス変換関数で変換されるアドレスがローカルなアドレスである。
例えば、CPUコア部31が「FFFF4002」のアドレスにアクセスする場合、LD/STアクセス制御部32はアクセステーブル37で、「FFFF4002」を仮想I/Oレジスタ部35のアドレスに変換する。I/O部40で「FFFF4002」のアドレスは、P1というレジスタを指すので、仮想I/Oレジスタ部35のアドレスは「0x2」になる。
LD/STアクセス制御部32は変換された仮想I/Oレジスタ部35のアドレス「0x2」に対しLOAD又はSTOREする。
− STOREの場合、仮想I/Oレジスタ部35のアドレス「0x2」のレジスタにデータを書き込む。
− LOADの場合、仮想I/Oレジスタ部35のアドレス「0x2」のレジスタからデータを読み出し、CPUコア部31に渡す。
なお、STOREの場合、データ更新部1が仮想I/Oレジスタ部35の更新されたデータをI/O部40のI/Oレジスタ部41に書き込む。
図8は、データ更新部1,2によるデータの更新を説明する図の一例である。仮想I/Oレジスタ部35のデータが更新されたことは、仮想I/Oレジスタ部35の各レジスタ毎にフラグを立てるなどして検出する。
データ更新部1が、直接、データの更新ができない場合(例えば、他のデータの更新をしている場合)、データ更新部2にデータ更新の要求を出す。データ更新部1は仮想I/Oレジスタ部35のアドレスを指定して、データ更新部2にデータを更新するように要求する。データ更新部2はホストCPU22を介して、仮想I/Oレジスタ部35からデータを読み出し、I/O部40のレジスタにコピーする。
データ更新部2は、I/O部40のレジスタに変更があった場合、仮想I/Oレジスタ部35の対応するレジスタにデータを書き込む。I/Oレジスタ部41のデータが更新されたことは、I/Oレジスタ部41の各レジスタ毎にフラグを立てるなどして検出する。
データ更新部2が、直接、データの更新ができない場合(例えば、他のデータの更新をしている場合)、データ更新部1にデータ更新の要求を出す。データ更新部2はI/Oレジスタ部41のアドレスを指定して、データ更新部1にデータを更新するように要求する。データ更新部1はホストCPU22を介して、I/Oレジスタ部41からデータを読み出し、仮想I/Oレジスタ部35のレジスタにコピーする。
〔時間管理部〕
時間管理部34による時間管理について説明する。時間管理部34は以下の2つの方法で、ターゲットCPUの時間とISS21の時間を同期させる。
(i) サイクル時間を使う方法
図9は、ターゲットCPUの命令毎のサイクル数を示す図の一例である。例えば、ADD命令は実行完了までに1サイクル必要とし、LD.W命令は実行完了までに5サイクル必要とする。1サイクルでクロック信号がHighとLowを1つずつ繰り返す。時間管理部34は、図9のようなデータベースを有しており、基本ブロック毎に実行した各命令のサイクル数を加算する。基本ブロックとは、1つの関数や1つの機能を実現するための一連の命令列である。例えば、基本ブロックにADDとSUBの命令が10個ずつあれば、加算結果は、20サイクルとなる。
時間管理部34は、基本ブロック毎に予測時間と実測時間を算出する
予測時間= 合計サイクル数 × クロック周期
実測時間= 基本ブロックを出た時の時間 − 基本ブロックに入った時の時間 + 前回からの繰り越し時間(差分)
予測時間を算出するためのクロック周期は、ターゲットCPUのクロック周波数なので固定値(既知)である。予測時間は、ターゲットCPUにおいて基本ブロックを実行するために必要な時間の計算値であり、実測時間はISS21で基本ブロックを実行した時の実際の時間である。両者がほぼ等しくなることが好ましいが、実際にはずれるため、以下のようにして、基本ブロック毎に命令の実行タイミングを揃える。
実測時間<予測時間(実測時間の方が早い)…時間管理部34は予測時間が経過するまでCPUコア部31に命令の実行を待機させる。
実測時間>予測時間(実測時間の方が遅い)…時間管理部34は次の基本ブロックに差分を持ち越す。差分は、「実測時間+差分(1つ前の基本ブロックまでの差分)−予測時間」である。これにより、次の基本ブロックで、実測時間<予測時間であれば、差分を全て又は一部、吸収できる。
(ii) パイプライン制御を考慮する方法
ターゲットCPUを含め多くのCPUでは命令の実行にパイプライン制御が適用されている。パイプライン制御では、1つの命令の実行プロセスを複数の実行ステージに区分して、各実行ステージで別々の命令を実行する命令実行制御である。こうすることで、1サイクルで1つの命令を実行完了できる。
図10は、パイプライン制御を模式的に説明する図の一例である。図10(a)〜(c)は乗算命令の場合を、図10(d)(e)は分岐命令の場合をそれぞれ示している。このターゲットCPUはワード(32bit)の乗算命令を8つの実行ステージで実行し、ハーフワード(16bit)の乗算命令を5つの実行ステージで実行する。なお、実行ステージのIFは命令フェッチ、IDは命令デコード、EXは実行、WBはレジスタへのライトバック、MEMはメモリ部33へのアクセスを意味している。
図10(a)では乗算命令の後に3つの乗算以外の命令を実行している。乗算以外の命令は8つの実行ステージを必要としないので(図では5ステージ)、1つ目の乗算命令が実行完了するまでに残りの3つの命令も実行が完了する。
図10(b)では乗算命令の後に1つのハーフワードの乗算命令を実行している。乗算命令は同時に2つ実行できないので(ハザード)、「−」で示される待ち合わせのサイクルが生じ、1つ目の乗算命令の実行完了に8サイクル、2つ目の乗算命令の実行完了に8サイクル(全体で9サイクル)必要とする。
また、図10(c)は乗算命令の後の3つ目の命令が乗算命令の場合を示す。この場合、4つの命令の実行完了までに9サイクル必要とする。
このように、パイプライン制御の場合、実行される命令の順番によって、同じサイクル数が経過しても実行完了可能な命令数が異なる。
分岐命令の場合も同様である。図10(d)のように分岐条件が成立しない場合、分岐する必要がないので、パイプライン上ですでに実行が開始されている命令が無駄にならない。このため、6サイクルで2つの命令が実行完了する。図10(e)のように分岐条件が成立した場合、分岐するため、パイプライン上ですでに実行が開始されている命令が無駄になり、分岐先の命令で実行ステージを埋めるための時間がかかる。このため、2つの命令を実行完了するために7サイクル必要になる。
時間管理部34は、プログラムをパイプライン制御した場合に必要なサイクル数を計算する。したがって、基本ブロックの実行に必要なサイクル数をより正確に求めることができる。これを合計サイクル数とすれば、予測時間の精度を向上させることができ、時間管理部34はターゲットCPUにおけるプログラムの実行時間とISS21の実行時間を揃えやすくなる。
〔タイマ管理部によるタイマの同期と補正〕
CPU部20とI/O部40のクロック周波数(タイマ用の周波数なので以下、タイマ周波数とする)の違いにより生じる時間の補正について説明する。CPU部20の仮想I/Oレジスタのタイマ352と、I/O部40のタイマはそれぞれ時間を計測するが、タイマ周波数が異なる。例えば、クロック発生器25のクロック周波数が100MHz、クロック発生器45のクロック周波数が100.1MHzの如くである。
このまま、仮想I/Oレジスタ部35のタイマ値を処理に使用するとI/Oレジスタ部41のタイマ値とずれた時刻で処理(例えば、開閉弁制御)を行うおそれがある。そこで、タイマ管理部38が仮想I/Oレジスタ部35のタイマ値を、クロック周波数の違いで補正する。
説明のため、以下のように定義する。
・I/O部40のタイマ値を「Tb」、CPU部20のタイマ値を「Ta」とする
・I/O部40のタイマ周波数を「Fi」、CPU部20のタイマ周波数を「Fc」とする
タイマ周波数「Fi」「Fc」は計測や仕様書により既知となる固定値である。
図11(a)はCPU部20のタイマ値とI/O部40のタイマ値のずれを説明する図の一例である。図11(a)では上段から実時間、I/O部40のタイマ値、CPU部20のタイマ値となっている。
実時刻T1の時に、タイマ管理部38がCPU部20のタイマ値とI/O部40のタイマ値の同期を取ったものとする。同期は、ずれが増大しないように定期的に行われる。
I/O部40のタイマ値は実時間と一致している(一致していなくてもI/O部40のタイマ値を基準とするので不都合はない)。これに対し、CPU部20のタイマ値は、時刻T2においてI/O部40のタイマ値とずれている。このずれがタイマ周波数の違いによるものである。
タイマ管理部38は以下のようにして同期と補正を行う。
(1)時刻T2に補正するものとする。タイマ管理部38はI/O部40のタイマ値「Tb」とCPU部29のタイマ値「Ta」を取得する。図11(b)は仮想I/Oレジスタマップを示す。仮想I/Oレジスタマップは仮想I/Oレジスタ部35とは別に設けられた作業用のレジスタである。I/O部40のタイマ値「Tb」とCPU部20のタイマ値「Ta」は、仮想I/Oレジスタマップが示すレジスタに格納される。
(2)前回の同期時刻をT1とし、その時のI/O部40のタイマ値を「Tb1」、CPU部20のタイマ値を「Ta1」、とする。
(3)時刻T2に、CPU部20からI/O部40のタイマにリードアクセスが発生した場合、CPU部20のタイマ値の補正が必要になる。時刻T2のCPU部20の仮想I/Oレジスタのタイマ値を「Ta2」、I/O部40のタイマ値を「Tb2」とする。仮想I/Oレジスタのタイマ値をTa2」は以下のように補正される。
Ta2(補正後)=Ta1+(Fi/Fc)×(Ta2−Tb1)…(1)
すなわち、I/O部40のタイマ周波数とCPU部20のタイマ周波数の比を、前回の同期時刻Tb1からの経過時間にかけて、CPU部20のタイマ値Ta2を補正している。時刻T1で同期されているという前提で、式(1)でTb1の代わりにTa1を用いてもよい。
また、ずれを無視できるほど短い周期で同期が行われている場合、Ta2でなくTb2を使用することもできる。
Ta2(補正後)=Ta1+(Fi/Fc)×(Tb2−Tb1)…(2)
式(1)(2)で補正されたTa2の値が、I/O部40のタイマ値と等価になるので、LD/STアクセス制御部32は、タイマ管理部38が補正したTa2をリードデータとしてCPUコア部31に返す。これにより、CPU部20とI/O部40の周波数の違いによらず、ISS21はターゲットCPUと時間的な相関性の高いシミュレーションが可能となる。
なお、この補正は、LD/STアクセス制御部32がアドレス変換関数“transC”を実行する際に、アドレスの変換後、又は、アドレスの変換の一部として、続いて行われる。アドレス変換関数“transC”に時間補正を紐づけることで、アドレス変換を行うだけで時間補正も行うことができる。
〔遅延を利用した通信路の品質管理〕
CPUコア部31からI/Oレジスタ部41にアクセスする場合と、仮想I/Oレジスタ部35にアクセスする場合とで、アクセスレイテンシが異なる。このアクセスレイテンシが異なることを利用して通信路23の品質を管理することができる。
図12は、アクセスレイテンシの違いを説明する図の一例である。
CPUコア部31がLOAD命令を実行してから仮想I/Oレジスタ部35に格納されているデータAを取得するまでの時間をX´、CPUコア部31がLOAD命令を実行してからI/Oレジスタ部41に格納されているデータBを取得するまでの時間をX、とする。時間X>時間X´なので、時間Xの間に仮想I/Oレジスタ部35にアクセスすることができる。
データAとデータBは、I/O部40のレジスタと、そのレジスタに対応する仮想I/Oレジスタ部35のレジスタにそれぞれ記憶されているデータである。したがって、本来は、データAとデータBは同じ値になる。なお、タイマのように常に値が変動しているレジスタは、値の比較が困難なので、通信路チェック部39が利用するレジスタとしては少なくとも時間X内で変化しないデータを格納するレジスタがよい。
通信路チェック部39は、例えば以下のように通信路23をチェックする。
(1)CPUコア部31に仮想I/Oレジスタ部35のレジスタとI/Oレジスタ部41のレジスタからそれぞれデータA,BをLOADさせる。
(2)LOADしたデータAとデータBを比較する。
(3)比較した結果、データAとデータBが一致していれば、通信路23に不具合はなく、仮想I/Oレジスタ部35のデータAは、I/Oレジスタ部41のデータBが正常に反映されていることが推定できる。データAとデータBが一致しない場合、通信路チェック部39は、通信路23の解析が必要であるとしてエラーメッセージを表示するなどする。
本実施形態のシミュレーションは通信路23が正常であることが前提だが、このようにアクセスレイテンシが異なることを利用して、アクセスレイテンシが長い方のアクセス時間内に通信路23をチェックすることができる。
20 CPU部
21 ISS
22 ホストCPU
23 通信路
25,45 クロック発生器
31 CPUコア部
32 LD/STアクセス制御部
35 仮想I/Oレジスタ部
36、43 データ更新部
37 アクセステーブル
38 タイマ管理部
40 I/O部
41 I/Oレジスタ部
100 PC
352 タイマ

Claims (7)

  1. 第一のクロック信号を発生させる第一のクロック発生器と、プログラムを実行するCPUと、を有する情報処理装置であって、
    第二のクロック信号を発生させる第二のクロック発生器と、前記第二のクロック信号をカウントして第二の時間を計測する第二の時間計測手段と、前記第二の時間が記憶される時間記憶領域を備えた記憶手段と、を有する基板と通信する通信手段と、
    前記基板の前記時間記憶領域から取得した前記第二の時間の計測を、前記第一のクロック信号をカウントして継続する第一の時間計測手段と、
    前記第二の時間を、前記第一のクロック信号の周波数と前記第二のクロック信号の周波数の比に応じて補正する時間補正手段と、
    を有することを特徴とする情報処理装置。
  2. 前記プログラムとして命令セットシミュレータを実行することで実現される、ターゲットCPUの命令セットを備えた仮想CPU、主記憶メモリ、及び、前記第一の時間計測手段が計測した前記第二の時間を記憶する仮想記憶部と、
    前記仮想CPUが前記第二の時間を記憶する前記時間記憶領域にアクセスする場合、アクセス先を前記時間記憶領域から前記仮想記憶部に切り替えるアクセス制御手段と、
    を有することを特徴とする請求項1記載の情報処理装置。
  3. 前記時間記憶領域のアドレスと、前記アドレスを変換するアドレス変換関数とが対応づけて登録されたアドレス変換テーブルを有し、
    前記アクセス制御手段は、前記仮想CPUが前記時間記憶領域のアドレスへのアクセスを要求した場合、前記アドレス変換テーブルに対応づけられている前記アドレス変換関数に基づき、前記仮想記憶部のアドレスに変換すると共に、前記時間補正手段が前記第二の時間を補正する、
    ことを特徴とする請求項2記載の情報処理装置。
  4. 前記ターゲットCPUの命令実行時間を算出し、前記仮想CPUの実測命令実行時間と比較する時間管理手段を有し、
    前記時間管理手段は、前記命令実行時間の方が前記実測命令実行時間よりも短い場合は、前記仮想CPUに命令実行を待機させ、前記命令実行時間の方が前記実測命令実行時間よりも長い場合は、差分を次の時間管理タイミングにおける前記命令実行時間に加算して、前記命令実行時間と前記実測命令実行時間を比較する、
    ことを特徴とする請求項2又は3記載の情報処理装置。
  5. 前記基板の前記記憶手段は前記時間記憶領域を含む複数の記憶領域を有し、
    前記仮想記憶部は、前記複数の記憶領域に対応して設けられた複数の仮想記憶領域を有し、
    前記記憶領域に記憶されたデータが更新された場合に、データが更新された前記記憶領域に対応する前記仮想記憶領域のデータを同じ値に更新するデータ更新手段と、
    前記仮想CPUが前記記憶領域からデータを読み出す間に、該記憶領域に対応する前記仮想記憶領域からデータを読み出し、2つのデータが一致するか否かに基づき前記通信手段の異常を検出する異常検出手段と、
    を有する請求項2又は3記載の情報処理装置。
  6. 前記第一の時間計測手段は、前記第一のクロック信号をカウントして第一の時間を計測しており、
    前記時間補正手段は、
    前回、前記時刻補正手段が補正して前記第一の時間と同期を取った基準時刻から計測された前記第二の時間に、前記第一のクロック信号の周波数と前記第二のクロック信号の周波数の比を乗じることで、前記第二の時間を補正する、
    ことを特徴とする請求項1〜5いずれか1項記載の情報処理装置。
  7. 第一のクロック信号を発生させる第一のクロック発生器と、プログラムを実行するCPUと、を有する情報処理装置の時間補正方法であって、
    通信手段が、第二のクロック信号を発生させる第二のクロック発生器と、前記二のクロック信号をカウントして第二の時間を計測する第二の時間計測手段と、前記第二の時間が記憶される時間記憶領域を備えた記憶手段と、を有する基板と通信するステップと、
    第一の時間計測手段が、前記基板の前記時間記憶領域から取得した前記第二の時間の計測を、前記第一のクロック信号をカウントして継続するステップと、
    時間補正手段が、前記第二の時間を、前記第一のクロック信号の周波数と前記第二のクロック信号の周波数の比に応じて補正するステップと
    を有することを特徴とする時間補正方法。
JP2012086163A 2012-04-05 2012-04-05 情報処理装置、時間補正方法 Pending JP2013218394A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012086163A JP2013218394A (ja) 2012-04-05 2012-04-05 情報処理装置、時間補正方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012086163A JP2013218394A (ja) 2012-04-05 2012-04-05 情報処理装置、時間補正方法

Publications (1)

Publication Number Publication Date
JP2013218394A true JP2013218394A (ja) 2013-10-24

Family

ID=49590447

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012086163A Pending JP2013218394A (ja) 2012-04-05 2012-04-05 情報処理装置、時間補正方法

Country Status (1)

Country Link
JP (1) JP2013218394A (ja)

Similar Documents

Publication Publication Date Title
US8285915B2 (en) Relocating page tables and data amongst memory modules in a virtualized environment
WO2012049728A1 (ja) シミュレーション装置,方法,およびプログラム
US8495344B2 (en) Simultaneous execution resumption of multiple processor cores after core state information dump to facilitate debugging via multi-core processor simulator using the state information
US7921317B2 (en) Method and apparatus for synchronizing central processing units in a multiprocessor apparatus
US20120029900A1 (en) Simulation method and system for simulating a multi-core hardware platform
US20130152048A1 (en) Test method, processing device, test program generation method and test program generator
US10540178B2 (en) Eliminating redundant stores using a protection designator and a clear designator
RU2635044C2 (ru) Режим слежения в устройстве обработки в системах трассировки команд
US10216616B2 (en) Cooperative triggering
JP2013084178A (ja) シミュレーション装置,方法,およびプログラム
US20180004526A1 (en) System and Method for Tracing Data Addresses
CN109690536B (zh) 将多核指令踪迹从虚拟平台仿真器取到性能模拟模型的方法和系统
US10235177B2 (en) Register reclamation
US20160026741A1 (en) Calculating device, calculation method, and calculation program
US20230305742A1 (en) Precise longitudinal monitoring of memory operations
US9612938B2 (en) Providing status of a processing device with periodic synchronization point in instruction tracing system
AU2017438670B2 (en) Simulation device, simulation method, and simulation program
JP5505192B2 (ja) 競合試験装置
US9710389B2 (en) Method and apparatus for memory aliasing detection in an out-of-order instruction execution platform
JP2013218394A (ja) 情報処理装置、時間補正方法
US20140244232A1 (en) Simulation apparatus and simulation method
JP5440083B2 (ja) シミュレーション装置、方法およびプログラム
CN112445587A (zh) 一种任务处理的方法以及任务处理装置
US20240160446A1 (en) Predicting a Vector Length Associated with a Configuration Instruction
US20150127318A1 (en) Apparatus and method for simulating an operation of an out-of-order processor