JP4820654B2 - サイクルシミュレーション方法、サイクルシミュレーションプログラム、該プログラムを記録した記録媒体、およびサイクルシミュレータ - Google Patents

サイクルシミュレーション方法、サイクルシミュレーションプログラム、該プログラムを記録した記録媒体、およびサイクルシミュレータ Download PDF

Info

Publication number
JP4820654B2
JP4820654B2 JP2006028227A JP2006028227A JP4820654B2 JP 4820654 B2 JP4820654 B2 JP 4820654B2 JP 2006028227 A JP2006028227 A JP 2006028227A JP 2006028227 A JP2006028227 A JP 2006028227A JP 4820654 B2 JP4820654 B2 JP 4820654B2
Authority
JP
Japan
Prior art keywords
model
processor
storage
instruction
cycle
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.)
Expired - Fee Related
Application number
JP2006028227A
Other languages
English (en)
Other versions
JP2007207158A (ja
Inventor
真人 立岡
敦 池
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor Ltd
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 Fujitsu Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2006028227A priority Critical patent/JP4820654B2/ja
Priority to US11/439,124 priority patent/US7729896B2/en
Publication of JP2007207158A publication Critical patent/JP2007207158A/ja
Application granted granted Critical
Publication of JP4820654B2 publication Critical patent/JP4820654B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/49Partial evaluation

Description

この発明は、LSIモデルを構成する複数の実行ブロックのサイクルを同期させて並列にシミュレーションをおこなうサイクルシミュレーション方法、サイクルシミュレーションプログラム、該プログラムを記録した記録媒体、およびサイクルシミュレータに関する。
近年、パーソナル・コンピュータ用の汎用CPU(中央処理装置)と同様に、組み込み型プロセッサにおいてもCPUはマルチコア化へシフトしている。また、ますます複雑化するシステムLSIの開発期間の短縮のために、設計の早い段階からハードウェアとソフトウェアの協調設計を行うことが重要である。しかし、既存のシミュレータでは十分なシミュレーション速度が得られていないため、高速なソフトウェア/ハードウェア協調シミュレータの開発が課題となっている。
ここで、従来のサイクルモデルについて説明する。図12は、シミュレーション対象となるLSIモデルを示す説明図である。図12において、LSIモデルは、プロセッサコアモデルPE#(#は番号、図12では「0」および「1」)と、周辺ブロックモデルPBと、からなる実行ブロックを有している。ここで、図12に示したLSIモデルを命令レベルシミュレータ(ISS:Instruction Set Simulator)により実行した場合のサイクルモデルについて説明する。
図13は、図12に示したLSIモデルをISSシミュレータにより実行した場合のサイクルモデルを示す説明図である。図13において、PE♯は、図12に示したプロセッサコアモデルPE#の命令実行処理時間(サイクル数)をあらわしている。同様に、PBも、図12に示した周辺ブロックモデルPBの命令実行処理時間(サイクル数)をあらわしている。
また、図13中、C#(#は番号、図13では0,1,2…)対応する命令実行処理時間における所要サイクル数をあらわしている。たとえば、サイクル数C0は、プロセッサコアモデルPE0を実行する場合の所要サイクル数をあらわしている。図13に示した従来のサイクルモデルでは、サイクルの加算をおこなってサイクル期間内で差分をとり、サイクルを計算することとなる。なお、上記従来のシミュレータに関連する従来技術としては、たとえば、下記特許文献1〜3の従来技術が挙げられる。
特開平5−35534号公報 特開平4−352262号公報 特開2001−256267号公報
しかしながら、図13に示した従来のサイクルモデルでは、シリアルに命令実行されるため、数珠繋ぎ式にシミュレーション時間が増加するという問題があった。一方、シミュレーション処理時間の短縮化のため各実行ブロックを並列に実行する場合、メモリモデルやレジスタモデルに対しデータが正確に反映されず、誤ったシミュレーションを実行してしまうという問題があった。
図14は、並列シミュレーションを示す説明図である。図14では、説明を簡略化するため、プロセッサコアモデルPE0,PE1のみを用いて説明する。まず、実行ブロックとしてプロセッサコアモデルPE0を実行する。この場合の所要サイクル数C0を100とする。この時点では、メモリモデルのアドレスRegAにデータD1が書き込まれているとする。
プロセッサコアモデルPE0の実行終了後、(B)において、プロセッサコアモデルPE1を実行する。この場合の所要サイクル数C1を150とする。プロセッサコアモデルPE1はその実行中、120サイクル目に、データD1が書き込まれているメモリモデルのアドレスRegAにデータD2を書き込んでいる。
プロセッサコアモデルPE1の実行終了後、再度プロセッサコアモデルPE0を選択して、(C)において、プロセッサコアモデルPE0を実行する。このとき、この場合の所要サイクル数をC3とすると、このC3の期間中、たとえば、110サイクル目に、メモリモデルのアドレスRegAに書き込まれているデータの読み出しをおこなうとする。
この場合、プロセッサコアモデルPE0としては、メモリモデルのアドレスRegAに書き込まれているデータD1を読み出したいにもかかわらず、先に実行されたプロセッサコアモデルPE1により書き込まれたデータD2を読み出してしまうこととなり、誤ったシミュレーションを実行してしまうという問題があった。
この発明は、上述した従来技術による問題点を解消するため、シミュレーション時間の短縮化およびシミュレーションの高精度化を図ることができるサイクルシミュレータ、サイクルシミュレーション方法、サイクルシミュレーションプログラム、および記録媒体を提供することを目的とする。
上述した課題を解決し、目的を達成するため、この発明にかかるサイクルシミュレーション方法、サイクルシミュレーションプログラム、該プログラムを記録した記録媒体、およびサイクルシミュレータは、LSIモデルを構成する複数の実行ブロックのサイクルを同期させて並列にシミュレーションをおこなうサイクルシミュレーション方法、サイクルシミュレーションプログラム、該プログラムを記録した記録媒体、およびサイクルシミュレータであって、前記複数のハードウェアモデルの中から選ばれた一の実行ブロックの所定数の命令が実行された場合、当該一の実行ブロックの前記所定数の命令の終了時のサイクル数を検出し、前記一の実行ブロックの後に選ばれた他の実行ブロックの現在実行中の命令が記憶モデルにアクセスする命令であるか否かを判断し、その判断結果に基づいて、前記一の実行ブロックが前記記憶モデルにアクセスしたアドレスと前記他の実行ブロックの現在実行中の命令が前記記憶モデルにアクセスするアドレスとが一致するか否かを判定し、その判定結果に基づいて、前記他の実行ブロックの現在のサイクル数と、前記検出工程によって検出されたサイクル数とを比較し、その比較結果に基づいて、前記他の実行ブロックの現在実行中の命令によりアクセスする前記記憶モデルのアドレスおよび当該アドレスに記憶されているデータを、前記記憶モデルとは異なる記憶領域に記憶することを特徴とする。
また、上記発明において、前記他の実行ブロックの所定数の命令が実行された場合、当該他の実行ブロックの前記所定数の命令の終了時のサイクル数を検出し、前記他の実行ブロックの後に再度選ばれた前記一の実行ブロックの現在実行中の命令が前記記憶モデルにアクセスする命令であるか否かを判断し、その判断結果に基づいて、前記他の実行ブロックが前記記憶モデルにアクセスしたアドレスと前記一の実行ブロックの現在実行中の命令が前記記憶モデルにアクセスするアドレスとが一致するか否かを判定し、その判定結果に基づいて、前記一の実行ブロックの現在のサイクル数と、他の実行ブロックの前記所定数の命令の終了時のサイクル数とを比較し、その比較結果に基づいて、前記記憶領域に記憶された、前記記憶モデルのアドレスおよび当該アドレスに記憶されているデータにアクセスすることとしてもよい。
この発明によれば、記憶モデル(メモリモデルやレジスタモデル)へのデータの反映を正確におこなうことができる。
本発明にかかるサイクルシミュレーション方法、サイクルシミュレーションプログラム、該プログラムを記録した記録媒体、およびサイクルシミュレータによれば、シミュレーション時間の短縮化およびシミュレーションの高精度化を図ることができるという効果を奏する。
以下に添付図面を参照して、この発明にかかるサイクルシミュレーション方法、サイクルシミュレーションプログラム、該プログラムを記録した記録媒体、およびサイクルシミュレータの好適な実施の形態を詳細に説明する。この実施の形態にかかるサイクルシミュレーション方法、サイクルシミュレーションプログラム、該プログラムを記録した記録媒体、およびサイクルシミュレータは、図14に示したように、各実行ブロックを順次選択しながらサイクルを同期させて並列に実行することで、サイクルシミュレーションをおこなう。
(サイクルシミュレータのハードウェア構成)
まず、この発明の実施の形態にかかるサイクルシミュレータのハードウェア構成について説明する。図1は、この発明の実施の形態にかかるサイクルシミュレータのハードウェア構成を示すブロック図である。
図1において、サイクルシミュレータは、CPU101と、ROM102と、RAM103と、HDD(ハードディスクドライブ)104と、HD(ハードディスク)105と、FDD(フレキシブルディスクドライブ)106と、着脱可能な記録媒体の一例としてのFD(フレキシブルディスク)107と、ディスプレイ108と、I/F(インターフェース)109と、キーボード110と、マウス111と、スキャナ112と、プリンタ113と、を備えている。また、各構成部はバス100によってそれぞれ接続されている。
ここで、CPU101は、サイクルシミュレータの全体の制御を司る。ROM102は、ブートプログラムなどのプログラムを記憶している。RAM103は、CPU101のワークエリアとして使用される。HDD104は、CPU101の制御にしたがってHD105に対するデータのリード/ライトを制御する。HD105は、HDD104の制御で書き込まれたデータを記憶する。
FDD106は、CPU101の制御にしたがってFD107に対するデータのリード/ライトを制御する。FD107は、FDD106の制御で書き込まれたデータを記憶したり、FD107に記憶されたデータをサイクルシミュレータに読み取らせたりする。
また、着脱可能な記録媒体として、FD107のほか、CD−ROM(CD−R、CD−RW)、MO、DVD(Digital Versatile Disk)、メモリーカードなどであってもよい。ディスプレイ108は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ108は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
I/F109は、通信回線を通じてインターネットなどのネットワーク114に接続され、このネットワーク114を介して他の装置に接続される。そして、I/F109は、ネットワーク114と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F109には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード110は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス111は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
スキャナ112は、画像を光学的に読み取り、サイクルシミュレータ内に画像データを取り込む。なお、スキャナ112は、OCR機能を持たせてもよい。また、プリンタ113は、画像データや文書データを印刷する。プリンタ113には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
(サイクルシミュレーション処理手順)
つぎに、この発明の実施の形態にかかるサイクルシミュレーション処理手順について説明する。図2−1は、この発明の実施の形態にかかるサイクルシミュレーション処理手順を示すフローチャートである。図2−1において、まず初期化して(ステップS201)、サイクルシミュレーションの命令実行処理をおこなう(ステップS202)。このあと、後処理をおこなう(ステップS203)。
つぎに、命令実行処理(ステップS202)について詳細に説明する。図2−2は、命令実行処理手順を示すフローチャートである。ここでは、実行ブロックの番号をiとすると、i番目の実行ブロックはBiであらわされる。たとえば、図12に示したLSIモデルを例に挙げると、プロセッサコアモデルPE0が実行ブロックB1、プロセッサコアモデルPE1が実行ブロックB2、周辺ブロックモデルPBが実行ブロックB3となる。
図2−2において、まず、i=0とし(ステップS211)、サイクルシミュレーションの終了か否かを判断する(ステップS212)。この判断は、ユーザからの終了入力の有無で判断してもよく、また、すべての命令実行の終了検出の有無で判断してもよい。終了する場合(ステップS212:Yes)、ステップS203に移行して後処理を実行する。
一方、終了しないと判断された場合(ステップS212:No)、iをインクリメントし(ステップS213)、i>nであるか否かを判断する(ステップS214)。ここで、nは実行ブロックBiの総数である。たとえば、図12ではn=3である。
i>nである場合(ステップS214:Yes)、ステップS211に戻る。これにより、i=0にリセットすることができ、ステップS212およびステップS213をおこなうことで、再度、先頭の実行ブロックB1を選択することができる。
一方、i>nでない場合(ステップS214:No)、実行ブロックBiを選択したあと(ステップS215)、j=1とする(ステップS216)。ここで、jは選択された実行ブロックBiの命令実行の番号である。
そして、j>Nか否かを判断する(ステップS217)。ここで、Nは、選択された実行ブロックBiの命令実行数である。j>Nである場合(ステップS217:Yes)、i=nか否かを判断する(ステップS218)。i=nである場合(ステップS217:Yes)、ステップS211に戻り、つぎの実行ブロックを選択する(ステップS211〜S215)。一方、i≠nである場合(ステップS218:No)、ステップS212に戻る。
また、ステップS217において、j>Nでない場合(ステップS217:No)、j番目の命令実行処理をおこなう(ステップS219)。j番目の命令実行処理が終わると、jをインクリメントして(ステップS220)、ステップS217に戻る。なお、上述したステップS217とステップ218の処理順序については、ステップ218を先におこなうこととしてもよい。
つぎに、図2−2に示したj番目の命令実行処理について詳細に説明する。図3は、j番目の命令実行処理手順を示すフローチャートである。図3において、j番目の命令がメモリアクセスコールか否かを判断する(ステップS301)。メモリアクセスコールでない場合(ステップS301:No)、当該命令を実行し(ステップS302)、図2に示したステップS219に移行する。
一方、メモリアクセスコールである場合(ステップS301:Yes)、アクセスするアドレスが、実行ブロックBkがアクセスしたアドレスと一致するか否かを判断する(ステップS303)。実行ブロックBk(k<i)とは、現在実行中の実行ブロックBkよりも先に実行された実行ブロックである。
アドレスが不一致である場合(ステップS303:No)、命令実行し(ステップS310)、そのときの所要サイクル数を加算して(ステップS311)、ステップS219へ移行する。一方、アドレスが一致した場合(ステップS303:Yes)、現在実行中の実行ブロックBiのサイクルが、実行ブロックBkよりサイクルが進んでいるか否かを判断する(ステップS304)。
たとえば、図14に示した(C)において、現在実行中の実行ブロックBiをプロセッサコアモデルPE1、実行ブロックBkをプロセッサコアモデルPE0とすると、プロセッサコアモデルPE1における現在のサイクルと、プロセッサコアモデルPE0のサイクルC0(=100)を比較する。
実行ブロックBkよりサイクルが進んでいる場合(ステップS304:Yes)、メモリモデルにアクセスする(ステップS305)。たとえば、このアクセスがライトである場合には、メモリモデルのアドレスのデータを書き換える。
そして、現在のサイクル数にj番目の命令実行の所要サイクル数を加算して(ステップS306)、今回のアクセス時(書換前)のアドレス、サイクル、データ、データサイズを遅延テーブルに書き込む(ステップS307)。そして、ステップS219に移行する。
一方、ステップS304において、実行ブロックBkよりサイクルが進んでいない場合(ステップS304:No)、アクセス先のアドレスを手掛かりとして遅延テーブルにアクセスする(ステップS308)。
たとえば、このアクセスがリードである場合には、今回のアクセス時のアドレス、サイクル、データ、データサイズを遅延テーブルから読み出す。そして、現在のサイクル数にj番目の命令実行の所要サイクル数を加算して(ステップS309)、ステップS220に移行する。
ここで、遅延テーブルについて説明する。図4は、この発明の実施の形態にかかる遅延テーブルを模式的に示した説明図である。図4において、遅延テーブルは、実サイクル、アドレス、データ(あるいはポインタ)、データサイズなどの各種情報が格納され、実サイクルの若い順にソートされる。図5は、メモリモデルを示す説明図である。メモリモデルにおいても、実サイクル、アドレス、データ(あるいはポインタ)、データサイズなどの各種情報が格納される。
たとえば、ステップS304において、実行ブロックB2(プロセッサコアモデルPE1)の現在のサイクル(120)は、実行ブロックB1(プロセッサコアモデルPE0)のサイクルよりも進んでいるとする。
ここで、図14の(C)に示したように、実行ブロックB2(プロセッサコアモデルPE1)により、120サイクルでアドレスRegAにデータサイズs1のデータD1を書き込むという命令であった場合、ステップS305に示したように、メモリモデルには書き込み後におけるサイクル数(120サイクル)、アドレスRegA、データD2、データサイズs2を書き込む(図5を参照。)。
一方、遅延テーブルには、書き込み前におけるサイクル数(120サイクル)、アドレスRegA、データD1、データサイズs1を書き込む(図4を参照。)。このあと、実行ブロックB1(プロセッサコアモデルPE0)が選択され、図14の(C)に示したように、サイクル期間C3の110サイクルでアドレスRegAに保持されているデータを読み込む際、メモリモデルではなくアドレスRegAを手掛かりとして遅延テーブルを読み込む。これにより、各実行ブロックBiによるデータの反映を正確におこなうことができる。
図6は、サイクル管理テーブルを示す説明図である。サイクル管理テーブルは、所定範囲のアドレスごとに遅延テーブルを有している。メモリアクセスコールでデータサイズを指定するが、そのデータサイズとアドレスで以下のどのグループの遅延テーブルにアクセスするかを決定する。
また、モデルとなるシステム全体で1つのメモリマップを持つ場合と、各プロセッサコアモデルPE0,PE1にあるメモリ範囲が与えられて処理する場合がある。その場合に、分割的にもっていると1つのメモリモデルにアクセスする必要がなく分散して別メモリとして持てるという利点もある。
図7は、サイクル管理テーブルの概念を示す説明図である。図7では、たとえば、200サイクルだけを保持する。このサイクル範囲は変更可能である。250サイクルのデータn4が発生し、そのデータn4を遅延テーブルに挿入する。そして、次のシミュレーションが実行され、そのベースサイクル100のノードが追加される。このとき、200サイクルの期間だけ保持されるため、サイクル300〜100の間が遅延テーブルに残り、それ以下のサイクルのデータは破棄される。
これにより、SoCなどのように各マスターが共有リソースをアクセスするときの順位を管理することでデータの不整合を防ぐことが可能である。また、古いサイクルデータは破棄するため計算機のメモリの消費を減らすことができる。
つぎに、並列動作の仕組みについて説明する。並列動作とは、複数のハードウェアを並列に動作させる処理である。ここで、ハードウェアHW0を起動するレジスタは以下の通りである。
・RegH[31]=0x8xxx_xxxxまたはRegH.v=1
また、ハードウェアHW1を起動するレジスタは以下の通りである。
・RegW[31]=0x8xxx_xxxxまたはRegW.v=1
ただし、xは0か1のどちらかを指す。RegH.vはデータ構造体を指す。あるサイクル単位cで遅延テーブルかメモリモデルをチェックして動作させることができる。このcはc=1だと、毎サイクルハードウェア起動フラグ(RegH.vおよびRegW.v)をチェックすることになる。シミュレーションのパフォーマンス向上のためにc=10サイクルなどにしてレジスタチェックサイクルを間引く。
図8は、並列動作を示す概念図である。図8において、ハードウェアHW0,HW1はスレーブになっているが、ハードウェアHW0,HW1がプロセッサコアモデルPE#と同じマスターでもかまわない。
この例での遅延テーブルは、例えばハードウェアHW0が他のプロセッサコアモデルPE0、PE1、ハードウェアHW1とメモリ競合がない場合である。ハードウェアHW1も同様である。但し、プロセッサコアモデルPE0,PE1ではメモリ競合がある。そのため、この例での遅延テーブルはPE0,PE1でどちらが先に実行されているかで範囲が決定される。
遅延テーブルTaは、ベースサイクル0のときに用いられるテーブルである。この場合、ハードウェアHW0,HW1が並列に実行している。ベースサイクルが100になっていないので、ハードウェアHW1は実行さない。
遅延テーブルTbはベースサイクルが100のときに用いられるテーブルである。この場合は、ハードウェアHW0が実行されている。ハードウェアHW1はcサイクル単位でチェックされてサイクル単位内に130が入った時にチェックされて実行される。
遅延テーブルTcはベースサイクルが200のときに用いられるテーブルである。この場合はプロセッサコアモデルPE0,PE1から、同時に同じハードウェアHW0への実行レジスタへアクセスが発生した例である。
この場合は、設計仕様に依存するため、仕様に従ってどちらが実行するかあるいは実行しないかに対応すればよい。この例では競合という合図のみで、競合実行するところまで規定しない。
遅延テーブルTdはベースサイクル300のときに用いられる遅延テーブルである。この場合、プロセッサコアモデルPE0からの要求でハードウェアHW1が実行され、プロセッサコアモデルPE1の要求がきたが、ハードウェアHW1が実行し終えていない例である。
たとえば、ハードウェアHW1が1つの命令しか実行できない場合、後続の実行要求をキャンセルの場合または待機させる場合に分けられる。キャンセルの場合は、当該命令は実行しない。待機させる場合は、先の実行が終了後直ちに当該命令の実行に移る。
つぎに、図8に示した並列動作処理手順について説明する。図9は、この発明の実施の形態にかかる並列動作処理手順を示すフローチャートである。図9において、まず、Pre_cycleの更新をおこなう(ステップS901)。
具体的には、ステップS901では、図8のシミュレーション期間の開始サイクル数を設定する。Pre_cycleは図8の期間内の開始時はbase_cycleになる。Pre_cycleは遅延テーブル参照範囲のための開始サイクルを意味する。
つぎに、next_base_cycleを設定する(ステップS902)。next_base_cycleはbase+base_cycleで算出される。next_base_cycleとは、次の期間の開始サイクルである。たとえば、図8において、期間Aならば100である。
baseとは、ベースサイクルの間隔(Nステップ数)である。図8では100になる。また、base_cycleとは、遅延テーブルの開始サイクル値であり、図8の各ベースサイクル値(0,100,200,300…)である。
つぎに、遅延テーブルを参照する範囲を決定する(ステップS903)。具体的には、サーチサイクル数cを加算して範囲の先頭サイクル数check_cycleを決定する。サーチサイクル数cとは、遅延テーブルをチェックするとき、どのくらいの範囲でサーチするかを意味する。プログラム的にはいつサーチするのかを意味し、サーチ処理を間引くサイクル数である。また、check_cycleとは、遅延テーブルからサーチするときの範囲を示す。たとえば、Pre_cycleからcheck_cycleまでをサーチする。
つぎに、プロセッサコアモデルPE0,PE1を実行する(ステップS904)。すなわち、プロセッサコアモデルPE0,PE1の命令をN個実行する。このときに、遅延テーブルが更新される。
つぎに、範囲判定をおこなう(ステップS905)。この処理では、Pre_cycle〜check_cycleの範囲がnext_base_cycle〜base_cycle内であるか否かをチェックする。範囲内である場合は(ステップS905:Yes)、ステップS906に移行し、範囲外であれば、ハードウェアHW0,HW1は実行しないため、ステップS908に移行する。
ステップS906では、HW実行判定をおこなう。ハードウェアHW0,HW1を起動すると判定された場合は(ステップS906:Yes)、ステップS907に移行する。一方、ハードウェアHW0,HW1を起動しないと判定された場合は(ステップS906:No)、ステップS908に移行する。
HW実行判定では、具体的には、Pre_cycle〜check_cycleの範囲でハードウェアHW0,HW1が起動するためのレジスタ(たとえば、RegH.vやRegW.v)などを遅延テーブルからサーチする。遅延テーブルにない場合、メモリモデルも読み出し、RegH.v=1やRegW.v=1かどうかをチェックする。メモリモデルは1つしかないので読み出すだけである。
レジスタ(たとえば、RegH.vやRegW.v)がサーチされれば、ハードウェアHW0,HW1を起動すると判定し、サーチされなければ起動しないと判定される。また、遅延テーブルになくても、RegH.v=1やRegW.v=1であれば、ハードウェアHW0,HW1を起動すると判定し、そうでなければ起動しないと判定される。
ここで、HW実行判定を高速に実現する方法について説明する。Pre_cycle〜check_cycleのサイクル範囲は決まっているのでそのサイクル範囲についてRegH.vやRegW.vの値をHW判定フラグとしてパラメータを用意することでサイクルに関していちいちサーチしなくても判定ができる。図10は、上述したサイクル範囲とHW実行フラグとの対応関係を示す図表である。
また、図9において、ステップS906においてハードウェアHW0,HW1を起動すると判定された場合は(ステップS906:Yes)、HW実行処理をおこなう(ステップS907)。HW実行処理(ステップS907)の詳細については後述する。
HW実行処理(ステップS907)のあと、完了判定をおこなう(ステップS908)。完了判定では、プロセッサコアモデルPE0,PE1およびハードウェアHW0,HW1が一通り実行した後、current_cycleがnext_base_cycle以上になったかどうか判定する。
current_cycleがnext_base_cycle未満であれば(ステップS908:No)、プロセッサコアモデルPE0,PE1はまだ図8のnext_base_cycle〜base_cycle(あるいはcurrent_cycle)のサイクル期間内に位置していることがわかり、まだ実行できることを意味する。この場合、ステップS909に移行する。
一方、current_cycleがnext_base_cycle以上であれば(ステップS908:Yes)、つぎのnext_base_cycle〜base_cycleのサイクル期間または遅延テーブルTa,Tb,Tc,Td,に移動できる。この場合、ステップS901に戻る。
また、ステップS909では、current_cycleの更新をおこなう。current_cycle(図8を参照。)とは、現在の絶対サイクル数である。Nステップ(=サイクル)単位で実行されるので、シミュレーション中のNステップ後のサイクル値を意味する。
また、ステップS909では、シミュレーションの現在サイクル数を更新する。このサイクル数は、図8のプロセッサコアモデルPE0,PE1のサイクル数のうちいずれか下位のサイクル数に設定する。なお、current_cycleはシミュレーション起動時に初期化されて0からスタートする。ステップS909のあとは、ステップS903に戻る。
つぎに、上述したHW実行処理手順について具体的に説明する。図11は、HW実行処理手順を示すフローチャートである。図11において、まず、前終了サイクルチェックをおこなう(ステップS1101)。
図8の遅延テーブルTdに示したように、前のプロセッサコアモデルPE0が実行させたハードウェアHW#(#は数字)の処理と、プロセッサコアモデルPE1が実行させたハードウェアHW#の処理とが重なる場合がある。前終了サイクルチェックでは、この場合、処理が終わったかどうかをチェックしている。チェックするために前回の終了処理時間(サイクル)とプロセッサコアモデルPE1による起動時のサイクルとを比較すれば確認することができる。
重なっていた場合は(ステップS1101:No)、待機判断処理をおこなう(ステップS1102)。待機判断処理(ステップS1102)では、たとえば、ハードウェアHW1が1つの命令しか実行できない場合を想定している。
この場合において、HW実行を待機させられるのであれば(ステップS1102:Yes)、ステップS1101に戻る。すなわち、前処理の終了サイクル後に直ちに実行できるということであるが、起動時サイクル値を待ちサイクル数を加算した値にシフトし、再度HW実行をおこなう。キャンセルされる場合は(ステップS1102:No)、HW実行をおこなわずに図9に示したステップS908に移行する。
そして、ステップS1101において重なっていた場合は(ステップS1101:Yes)、前処理を実行する(ステップS1103)。前処理では、終了予定サイクルなどを保存する。このあと、HW実行、すなわち、ハードウェアHW0,HW1を実行する(ステップS1104)。
以上説明したように、この発明の実施の形態にかかるサイクルシミュレーション方法、サイクルシミュレーションプログラム、該プログラムを記録した記録媒体、およびサイクルシミュレータによれば、シミュレーション時間の短縮化およびシミュレーションの高精度化を図ることができる。
なお、本実施の形態で説明したサイクルシミュレーション方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
以上のように、本発明にかかるサイクルシミュレータ、サイクルシミュレーション方法、およびサイクルシミュレーションプログラムは、プロセッサコアモデル、ペリフェラルブロックなどの複数の実行ブロックによってモデル化されたLSIモデルのサイクルシミュレーションに有用である。
この発明の実施の形態にかかるサイクルシミュレータのハードウェア構成を示すブロック図である。 この発明の実施の形態にかかるサイクルシミュレーション処理手順を示すフローチャートである。 命令実行処理手順を示すフローチャートである。 j番目の命令実行処理手順を示すフローチャートである。 この発明の実施の形態にかかる遅延テーブルを模式的に示した説明図である。 メモリモデルを示す説明図である。 サイクル管理テーブルを示す説明図である。 サイクル管理テーブルの概念を示す説明図である。 並列動作を示す概念図である。 この発明の実施の形態にかかる並列動作処理手順を示すフローチャートである。 サイクル範囲とHW判定フラグとの対応関係を示す図表である。 HW実行処理手順を示すフローチャートである。 シミュレーション対象となるLSIモデルを示す説明図である。 図12に示したLSIモデルをISSシミュレータにより実行した場合のサイクルモデルを示す説明図である。 並列シミュレーションを示す説明図である。
符号の説明
Bi,Bk 実行ブロック
PB 周辺ブロックモデル
PE# プロセッサコアモデル
1200 LSIモデル

Claims (3)

  1. 複数のプロセッサモデルと記憶モデルとで構成されるLSIモデルを記憶する記憶装置とプロセッサとを有し、前記LSIモデルのサイクルシミュレーションを実行するシミュレータが、
    前記複数のプロセッサモデルの中の第1のプロセッサモデルが所定数の命令を実行した場合、前記プロセッサにより、前記所定数の命令の終了時のサイクル数を検出する第1の検出工程と、
    前記プロセッサにより、前記複数のプロセッサモデルの中の第2のプロセッサモデルの現在実行中の命令が前記記憶モデルからの読出し命令であるか否かを判断する第1の判断工程と、
    前記第1の判断工程によって前記記憶モデルからの読出し命令であると判断された場合、前記プロセッサにより、前記第1のプロセッサモデルが前記所定数の命令のいずれかの命令により前記記憶モデルにデータを書き込んだアドレスと前記第2のプロセッサモデルの現在実行中の命令で前記記憶モデルから読み出すアドレスとが一致するか否かを判定する第1の判定工程と、
    前記第1の判定工程によって一致すると判定された場合、前記プロセッサにより、前記第2のプロセッサモデルの現在のサイクル数と、前記第1の検出工程によって検出されたサイクル数とを比較する第1の比較工程と、
    前記第1の比較工程により前記現在のサイクル数が大きい場合、前記プロセッサにより、前記第2のプロセッサモデルの現在実行中の命令で前記記憶モデルから読み出すアドレスおよび当該アドレスに記憶されているデータを、前記記憶モデルとは異なる記憶領域に格納する格納工程と、
    前記第2のプロセッサモデルが所定数の命令を実行した場合、前記プロセッサにより、前記第2のプロセッサモデルの前記所定数の命令の終了時のサイクル数を検出する第2の検出工程と、
    前記プロセッサにより、前記第2のプロセッサモデルの所定数の命令の実行後における前記第1のプロセッサモデルの現在実行中の命令が、前記記憶モデルからの読出し命令であるか否かを判断する第2の判断工程と、
    前記第2の判断工程によって前記記憶モデルからの読出し命令であると判断された場合、前記プロセッサにより、前記第2のプロセッサモデルが前記記憶モデルから前記データを読み出したアドレスと前記第1のプロセッサの現在実行中の命令で前記記憶モデルから読み出すアドレスとが一致するか否かを判定する第2の判定工程と、
    前記第2の判定工程によって一致すると判定された場合、前記プロセッサにより、前記第1のプロセッサモデルの現在のサイクル数と、前記第2の検出工程によって検出されたサイクル数とを比較する第2の比較工程と、
    前記第2の比較工程により前記現在のサイクル数が小さい場合、前記プロセッサにより、前記記憶領域に記憶された、前記記憶モデルのアドレスから当該アドレスに記憶されているデータを読み出す工程と、
    を実行することを特徴とするサイクルシミュレーション方法。
  2. 複数のプロセッサモデルと記憶モデルとで構成されるLSIモデルを記憶する記憶装置とプロセッサとを有し、前記LSIモデルのサイクルシミュレーションを実行するシミュレータに、
    前記複数のプロセッサモデルの中の第1のプロセッサモデルが所定数の命令を実行した場合、前記所定数の命令の終了時のサイクル数を検出する第1の検出工程と、
    前記複数のプロセッサモデルの中の第2のプロセッサモデルの現在実行中の命令が前記記憶モデルからの読出し命令であるか否かを判断する第1の判断工程と、
    前記第1の判断工程によって前記記憶モデルからの読出し命令であると判断された場合、前記第1のプロセッサモデルが前記所定数の命令のいずれかの命令により前記記憶モデルにデータを書き込んだアドレスと前記第2のプロセッサモデルの現在実行中の命令で前記記憶モデルから読み出すアドレスとが一致するか否かを判定する第1の判定工程と、
    前記第1の判定工程によって一致すると判定された場合、前記第2のプロセッサモデルの現在のサイクル数と、前記第1の検出工程によって検出されたサイクル数とを比較する第1の比較工程と、
    前記第1の比較工程により前記現在のサイクル数が大きい場合、前記第2のプロセッサモデルの現在実行中の命令で前記記憶モデルから読み出すアドレスおよび当該アドレスに記憶されているデータを、前記記憶モデルとは異なる記憶領域に格納する格納工程と、
    前記第2のプロセッサモデルが所定数の命令を実行した場合、前記第2のプロセッサモデルの前記所定数の命令の終了時のサイクル数を検出する第2の検出工程と、
    前記第2のプロセッサモデルの所定数の命令の実行後における前記第1のプロセッサモデルの現在実行中の命令が、前記記憶モデルからの読出し命令であるか否かを判断する第2の判断工程と、
    前記第2の判断工程によって前記記憶モデルからの読出し命令であると判断された場合、前記第2のプロセッサモデルが前記記憶モデルから前記データを読み出したアドレスと前記第1のプロセッサの現在実行中の命令で前記記憶モデルから読み出すアドレスとが一致するか否かを判定する第2の判定工程と、
    前記第2の判定工程によって一致すると判定された場合、前記第1のプロセッサモデルの現在のサイクル数と、前記第2の検出工程によって検出されたサイクル数とを比較する第2の比較工程と、
    前記第2の比較工程により前記現在のサイクル数が小さい場合、前記プロセッサにより、前記記憶領域に記憶された、前記記憶モデルのアドレスから当該アドレスに記憶されているデータを読み出す工程と、
    を実行させることを特徴とするサイクルシミュレーションプログラム。
  3. 複数のプロセッサモデルと記憶モデルとで構成されるLSIモデルを記憶する記憶装置とプロセッサとを有し、前記LSIモデルのサイクルシミュレーションを実行するシミュレータであって、
    前記複数のプロセッサモデルの中の第1のプロセッサモデルが所定数の命令を実行した場合、前記プロセッサにより、前記所定数の命令の終了時のサイクル数を検出する第1の検出処理と、
    前記プロセッサにより、前記複数のプロセッサモデルの中の第2のプロセッサモデルの現在実行中の命令が前記記憶モデルからの読出し命令であるか否かを判断する第1の判断処理と、
    前記第1の判断処理によって前記記憶モデルからの読出し命令であると判断された場合、前記プロセッサにより、前記第1のプロセッサモデルが前記所定数の命令のいずれかの命令により前記記憶モデルにデータを書き込んだアドレスと前記第2のプロセッサモデルの現在実行中の命令で前記記憶モデルから読み出すアドレスとが一致するか否かを判定する第1の判定処理と、
    前記第1の判定処理によって一致すると判定された場合、前記プロセッサにより、前記第2のプロセッサモデルの現在のサイクル数と、前記第1の検出処理によって検出されたサイクル数とを比較する第1の比較処理と、
    前記第1の比較処理により前記現在のサイクル数が大きい場合、前記プロセッサにより、前記第2のプロセッサモデルの現在実行中の命令で前記記憶モデルから読み出すアドレスおよび当該アドレスに記憶されているデータを、前記記憶モデルとは異なる記憶領域に格納する格納処理と、
    前記第2のプロセッサモデルが所定数の命令を実行した場合、前記プロセッサにより、前記第2のプロセッサモデルの前記所定数の命令の終了時のサイクル数を検出する第2の検出処理と、
    前記プロセッサにより、前記第2のプロセッサモデルの所定数の命令の実行後における前記第1のプロセッサモデルの現在実行中の命令が、前記記憶モデルからの読出し命令であるか否かを判断する第2の判断処理と、
    前記第2の判断処理によって前記記憶モデルからの読出し命令であると判断された場合、前記プロセッサにより、前記第2のプロセッサモデルが前記記憶モデルから前記データを読み出したアドレスと前記第1のプロセッサの現在実行中の命令で前記記憶モデルから読み出すアドレスとが一致するか否かを判定する第2の判定処理と、
    前記第2の判定処理によって一致すると判定された場合、前記プロセッサにより、前記第1のプロセッサモデルの現在のサイクル数と、前記第2の検出処理によって検出されたサイクル数とを比較する第2の比較処理と、
    前記第2の比較処理により前記現在のサイクル数が小さい場合、前記プロセッサにより、前記記憶領域に記憶された、前記記憶モデルのアドレスから当該アドレスに記憶されているデータを読み出す処理と、
    実行することを特徴とするシミュレータ。
JP2006028227A 2006-02-06 2006-02-06 サイクルシミュレーション方法、サイクルシミュレーションプログラム、該プログラムを記録した記録媒体、およびサイクルシミュレータ Expired - Fee Related JP4820654B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006028227A JP4820654B2 (ja) 2006-02-06 2006-02-06 サイクルシミュレーション方法、サイクルシミュレーションプログラム、該プログラムを記録した記録媒体、およびサイクルシミュレータ
US11/439,124 US7729896B2 (en) 2006-02-06 2006-05-24 Cycle simulation method, cycle simulator, and computer product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006028227A JP4820654B2 (ja) 2006-02-06 2006-02-06 サイクルシミュレーション方法、サイクルシミュレーションプログラム、該プログラムを記録した記録媒体、およびサイクルシミュレータ

Publications (2)

Publication Number Publication Date
JP2007207158A JP2007207158A (ja) 2007-08-16
JP4820654B2 true JP4820654B2 (ja) 2011-11-24

Family

ID=38486542

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006028227A Expired - Fee Related JP4820654B2 (ja) 2006-02-06 2006-02-06 サイクルシミュレーション方法、サイクルシミュレーションプログラム、該プログラムを記録した記録媒体、およびサイクルシミュレータ

Country Status (2)

Country Link
US (1) US7729896B2 (ja)
JP (1) JP4820654B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012133518A (ja) * 2010-12-21 2012-07-12 Fuji Electric Co Ltd パワーエレクトロニクス機器シミュレータ
JP6394341B2 (ja) 2014-07-23 2018-09-26 富士通株式会社 計算装置、計算方法、および計算プログラム
WO2017158786A1 (ja) * 2016-03-17 2017-09-21 三菱電機株式会社 シミュレーション装置、シミュレーション方法及びシミュレーションプログラム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4345309A (en) * 1980-01-28 1982-08-17 Digital Equipment Corporation Relating to cached multiprocessor system with pipeline timing
JP3085730B2 (ja) 1991-05-30 2000-09-11 富士通株式会社 複合cpuシステムの並列シミュレーション方式
JPH0535534A (ja) 1991-07-31 1993-02-12 Mitsubishi Electric Corp シミユレーシヨンシステム
US5623628A (en) * 1994-03-02 1997-04-22 Intel Corporation Computer system and method for maintaining memory consistency in a pipelined, non-blocking caching bus request queue
JP3746371B2 (ja) * 1998-04-09 2006-02-15 株式会社日立製作所 性能シミュレーション方法
US7143401B2 (en) * 2000-02-17 2006-11-28 Elbrus International Single-chip multiprocessor with cycle-precise program scheduling of parallel execution
JP2001256267A (ja) 2000-03-09 2001-09-21 Hitachi Ltd 並列分散シミュレーション方式
US6718294B1 (en) * 2000-05-16 2004-04-06 Mindspeed Technologies, Inc. System and method for synchronized control of system simulators with multiple processor cores
JP4825357B2 (ja) * 2001-04-05 2011-11-30 富士通株式会社 シミュレーション方法、その方法をコンピュータに実行させるプログラムおよびそのプログラムを記録した記録媒体
JP4175953B2 (ja) * 2003-05-23 2008-11-05 シャープ株式会社 高位合成装置、ハードウェア検証用モデル生成方法、ハードウェア検証方法、制御プログラムおよび可読記録媒体
US8219379B2 (en) * 2004-11-29 2012-07-10 Arm Limited System, method and computer program product for testing software
US7742905B2 (en) * 2005-02-25 2010-06-22 Coware, Inc. Method and system for dynamically adjusting speed versus accuracy of computer platform simulation
JP4352262B2 (ja) 2005-03-15 2009-10-28 株式会社島津製作所 衝撃試験機
US7650273B2 (en) * 2005-09-21 2010-01-19 Intel Corporation Performance simulation of multiprocessor systems
JP4667206B2 (ja) * 2005-10-31 2011-04-06 富士通セミコンダクター株式会社 マルチコアモデルシミュレーションプログラム、該プログラムを記録した記録媒体、マルチコアモデルシミュレータ、およびマルチコアモデルシミュレーション方法

Also Published As

Publication number Publication date
JP2007207158A (ja) 2007-08-16
US20070233451A1 (en) 2007-10-04
US7729896B2 (en) 2010-06-01

Similar Documents

Publication Publication Date Title
JP4667206B2 (ja) マルチコアモデルシミュレーションプログラム、該プログラムを記録した記録媒体、マルチコアモデルシミュレータ、およびマルチコアモデルシミュレーション方法
Geist et al. Coverage-directed test generation using symbolic techniques
CN100527137C (zh) 扩展电路设计的递增验证以包含验证约束的方法和系统
US20080256432A1 (en) System and Method of Defining a Hierarchical Datamodel and Related Computation and Instruction Rules Using Spreadsheet Like User Interface
JPH0683554A (ja) 操作案内装置
CN101025688A (zh) 更新计算机程序的方法及系统
US6564222B1 (en) Information processing system and method that selects an appropriate information retrieval system based on a context in which a user makes a request for retrieval
JP4820654B2 (ja) サイクルシミュレーション方法、サイクルシミュレーションプログラム、該プログラムを記録した記録媒体、およびサイクルシミュレータ
US20110010680A1 (en) Apparatus and Method of Delay Optimization
US20070271080A1 (en) Model generation method for software/hardware collaboration design
Schlipf et al. Formal verification made easy
EP1850250A1 (en) Method and system for renewing an index
Stoy et al. Proofs of correctness of cache-coherence protocols
JP5374965B2 (ja) シミュレーション制御プログラム、シミュレーション制御装置、およびシミュレーション制御方法
WO2021184031A2 (en) Pseudorandom thread generation
WO2021174233A2 (en) Dynamic virtual memory translation context
JP5009850B2 (ja) 情報管理プログラム、情報管理装置、および情報管理方法
JP5262774B2 (ja) シミュレーション制御プログラム、シミュレーション装置、およびシミュレーション制御方法
JP2010231633A (ja) 検証支援プログラム、検証支援装置および検証支援方法
JP2006072571A (ja) アセンブリ構成の設計方法、アセンブリ構成の設計プログラム、アセンブリ構成の設計プログラムを記録した記録媒体およびアセンブリ構成の設計装置
CN112948228B (zh) 一种面向流数据的多模数据库评测基准系统及其构建方法
US20230101206A1 (en) Data Hazard Generation
US20230409677A1 (en) Generating cross-domain guidance for navigating hci's
JP5365182B2 (ja) 時相論理式作成支援システム、時相論理式作成支援方法及び時相論理式作成支援用プログラム
JP5046081B2 (ja) 工程シミュレータ

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20080730

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081105

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100602

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110329

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110526

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110614

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110815

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110830

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110905

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140909

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4820654

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees