JP2001256048A - データ処理装置のシミュレーション - Google Patents
データ処理装置のシミュレーションInfo
- Publication number
- JP2001256048A JP2001256048A JP2001009597A JP2001009597A JP2001256048A JP 2001256048 A JP2001256048 A JP 2001256048A JP 2001009597 A JP2001009597 A JP 2001009597A JP 2001009597 A JP2001009597 A JP 2001009597A JP 2001256048 A JP2001256048 A JP 2001256048A
- Authority
- JP
- Japan
- Prior art keywords
- storage area
- data
- value
- circuit element
- pipeline
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
Abstract
ウエア・シミュレーション手法を提供する。 【解決手段】 ハードウエアは、複数のパイプライン回
路要素のモデルにモデル化され、各パイプライン回路要
素のモデルは、入力データの値を第1のデータ記憶エリ
アAから読み出し、出力データの値を第2のデータ記憶
エリアBに書き込む。シミュレートされる各クロック信
号サイクルの終了時点で、第1のデータ記憶エリアAと
第2のデータ記憶エリアBが取り替えられて、ハードウ
エアのパイプライン16、18におけるパイプライン・
ステージ8、10、12間で信号を受け渡す挙動を効率
的に反復する。
Description
シミュレーションに関する。より詳細には、この発明
は、パイプライン回路要素(pipelined circuit elemen
ts)を含むデータ処理装置のシミュレーションに関す
る。
・シミュレーションを実行することは公知である。これ
らのシミュレーションは、新しいデータ処理装置の物理
形態が利用できるようになる前に、そのデータ処理装置
のソフトウエアまたは接続されるハードウエアを開発し
てテストする機能のように、多くの理由で役に立つので
ある。
ュレートするソフトウエアを提供する一方法は、実際の
データ処理装置の内部の信号の変化のすべてを回路部品
レベルで表現しようとするモデルを提供することであ
る。この方法は、伝搬遅延などを考慮して、実システム
の応答を高度に正確に表現することができる。これらの
システムは、高度に正確な結果を発生することができる
が、何十万個ものトランジスタを含んでいるかもしれな
い回路全体にわたって追跡することが必要な非常に多数
の信号の値は非常に多数あるので、そのようなシミュレ
ータの動作速度は非常に遅い。
代替方法は、所定組の入力に対するデータ処理装置の総
合体的応答とその現存の状態がどんなものかを高所から
考察することである。かかる方法を用いる場合、高度に
抽象的な表現が正確になるように、モデル化するハード
ウエアを非常によく理解する必要がある。データ処理装
置がますます複雑化するのに伴って、この方法もますま
す難しくなる。かかる難しさを示す特殊な一例は、パイ
プラインを用いたデータ処理装置に対処することであ
り、かかるデータ処理装置では、所定組の入力に対する
応答が数サイクルの間発生することができず、先の入力
と後に続く入力の双方に大きく依存するようになる。
に、データ処理装置のシミュレーションが高速かつ正確
に動作できることが望ましい。
と、本発明は、共通クロック信号で駆動される複数のパ
イプラインを用いた回路要素を含むデータ処理装置の動
作をシミュレートする方法を提供する。深さ「1」のメ
ッセージ待ち行列(one deep message queues)と、1
組のデータ記憶エリアによって接続された複数のパイプ
ライン回路要素のモデルを使用する前記方法は、(i)
前記共通クロック信号のシミュレートされる共通クロッ
ク信号サイクルの開始時点で、各パイプライン回路要素
に渡されるそれぞれの入力信号を表す入力データの値
を、第1のデータ記憶エリアに格納するステップと、
(ii)前記シミュレートされる共通クロック信号サイク
ルのシミュレーション中に、前記第1のデータ記憶エリ
アから各パイプライン回路要素ごとに前記入力データの
値を読み出し、各パイプライン回路要素ごとのパイプラ
イン回路要素のモデルを用いて、前記シミュレートされ
る共通クロック信号サイクルを終了させることにより、
前記パイプライン回路要素で発生する出力信号を表す出
力データの値を発生するステップと、(iii)前記出力
データの値を第2のデータ記憶エリアに格納するステッ
プと、(iv)次にシミュレートされるクロック信号サイ
クル中に、前記格納された出力データの値が入力データ
の値として機能できるように、前記第1のデータ記憶エ
リアとして機能するように、前記第2のデータ記憶エリ
アを変更するとともに、前記第2の記憶エリアとして異
なる記憶エリアを使用するように変更するステップと、
を含む。
イクロプロセッサのような)パイプラインを用いたハー
ドウエアのソフトウエア・シミュレーションを提供しよ
うとするものである。その結果得られるソフトウエアモ
デルは、シミュレートしようとするハードウエアを直接
表現することができるとともに、実ハードウエアの信
号、論理およびラッチがソフトウエアモデルの中で明確
に識別可能でかつ理解可能なように構築できる。この目
的を達成するために、このソフトウエアモデルは、パイ
プラインを用いたハードウエアをシミュレートするのに
使用できる深さ「1」の待ち行列を備えたメッセージ受
け渡しシステム(message passing systemwith a queue
depth of one)をベースにしている。
プライン回路要素は、パイプライン回路要素のモデルに
よって表現される。第1のデータ記憶エリアは、いくつ
かのパイプライン回路要素のモデルに対する入力の値を
格納し、第2のデータ記憶エリアは、出力データの値を
格納する。自身の入力を読み出して自身の出力を書き込
む各モデルによって所定のクロックサイクルがシミュレ
ートされると、第1および第2のデータ記憶エリアの役
目が取り替えられて、パイプライン・ステージ間でデー
タの値を受け渡しする非常に能率的な方法を提供する。
実ハードウエア回路は、ソフトウエアで容易にモデル化
され理解されるパイプライン・ステージを表現する、実
際のユニットに効率的に分解される。パイプライン回路
要素のモデルが、パイプライン回路そのものに正確に対
応するか否かは判るであろう。パイプライン・ステージ
間をデータの値が受け渡し、従ってそれに関連するタイ
ミングは、モデルの構造によって決められることにな
り、それにより、システムの全体動作と必要な各種要素
の相互関係をあまり詳細に(disadvantageous degree)
分析せずに、データ記憶エリアは、ハードウエアの物理
ラッチに対応する。
するエリアを切り替えて、現在のサイクルに入力を提供
することができるとともに、現在のサイクルに必要な他
のデータを上書きせずに現在のサイクルの出力を書き込
むためにエリアを提供することができるならば、データ
記憶エリアの組は、2より大きい任意の数の要素を持っ
てもよい。
あるので、前記第1のデータ記憶エリアと前記第2のデ
ータ記憶エリアが役目を取り替え、前にシミュレートさ
れた共通クロック信号サイクルの入力データの値を新た
に発生した出力データの値が上書きできるときは、シス
テムのメモリ要求条件を緩和することができる。
隣接して直列に配置されたパイプライン回路要素の間
を、ラッチを介して受け渡しされる信号の値を表すこと
が望ましいが、このことは、モデルのあらゆる部分に必
ずしも当てはまることではない。とくに、モデルが、非
パイプライン回路要素(たとえば、2つ以上のパイプラ
イン・ステージから入力を取り入れる組み合わせ論理の
ような論理ブロック)に対応する部分を含むことができ
ることが望ましい。出力データの値を第2のデータ記憶
エリアに書き込むように配置することによって、これら
の非パイプライン回路要素をモデルの全体構造に統合す
ることができる。
タが第1のデータ記憶エリアから取り出された入力デー
タの値であることは可能であり、あるいは、入力データ
の値をモデルの他の部分から直接取り出してもよい。ど
ちらのケースでも、非パイプライン回路要素が応答でき
る入力データの値のすべてが、そのサイクル中に評価さ
れてしまうまで、非パイプライン回路要素は、自身の出
力データの値を実行して評価しようとしないことが望ま
しい。パイプライン回路要素のモデルにはいろいろな形
式がある。特に高速で能率的なモデルは、入力データの
値を出力データの値に写像するソフトウエアモデルであ
る。このほかの高速化は、モデル自体の中の状態変数の
フィードバックによって与えられる。
路要素をシミュレーションで個別にクロックで動作する
ように配置することにより、複数のクロック領域を含む
データ処理装置をモデル化するために使用してもよい。
理装置に応用できるが、パイプラインを用いたプロセッ
サのモデル化に特によく適合しており、このような場
合、プロセッサの各パイプライン・ステージが、パイプ
ライン回路要素のモデルに対応するようにモデルを配置
してもよい。
用コンピュータで実行され、その中では、第1のデータ
記憶エリアと第2のデータ記憶エリアが、汎用コンピュ
ータの共通メモリの異なる領域に対応していることは判
るであろう。
クロック信号で駆動される複数のパイプライン回路要素
を含むデータ処理装置の動作をシミュレートする装置を
提供しており、深さ「1」のメッセージ待ち行列で接続
された複数のパイプライン回路要素のモデルを使用する
前記装置は、(i)前記共通クロック信号のシミュレー
トされる共通クロック信号サイクルの開始時点で、各パ
イプライン回路要素に渡されるそれぞれの入力信号を表
す入力データの値を格納する第1のデータ記憶エリア
と、(ii)前記シミュレートされる共通クロック信号サ
イクルのシミュレーション中に動作して、前記第1のデ
ータ記憶エリアからパイプライン回路要素ごとに前記入
力データの値を読み出し、前記入力データの値を用い
て、前記シミュレートされた共通クロック信号サイクル
が終了することにより、前記パイプライン回路要素で発
生する出力信号を表す出力データの値を発生する各パイ
プライン回路要素ごとのパイプライン回路要素のモデル
と、(iii)前記出力データの値を格納する第2のデー
タ記憶エリアと、(iv)次にシミュレートされるクロッ
ク信号サイクル中に、前記格納された出力データの値
が、入力データの値として機能できるように、前記第2
のデータ記憶エリアが前記第1の記憶エリアとして機能
するように変更するとともに、前記第2の記憶エリアと
して異なる記憶エリアを使用するように変更する制御論
理とを含む。
は、コンピュータを制御して、共通クロック信号で駆動
される複数のパイプライン回路要素を含むデータ処理装
置の動作をシミュレートする方法を実行するコンピュー
タプログラムを格納するコンピュータプログラム記憶媒
体を提供しており、深さ「1」のメッセージ待ち行列で
接続された複数のパイプライン回路要素のモデルを使用
する前記方法は、(i)前記共通クロック信号のシミュ
レートされる共通クロック信号サイクルの開始時点で、
各パイプライン回路要素に渡されるそれぞれの入力信号
を表す入力データの値を、第1のデータ記憶エリアに格
納するステップと、(ii)前記シミュレートされる共通
クロック信号サイクルのシミュレーション中に、前記第
1のデータ記憶エリアから各パイプライン回路要素ごと
に前記入力データの値を読み出し、各パイプライン回路
要素ごとのパイプライン回路要素のモデルを用いて、前
記シミュレートされた共通クロック信号サイクルが終了
することにより、前記パイプライン回路要素で発生する
出力信号を表す出力データの値を発生するステップと、
(iii)前記出力データの値を第2のデータ記憶エリア
に格納するステップと、(iv)次にシミュレートされる
クロック信号サイクル中に、前記格納された出力データ
の値が入力データの値として機能できるように、前記第
2のデータ記憶エリアを前記第1のデータ記憶エリアと
して機能するように変更するとともに、前記第2の記憶
エリアとして異なる記憶エリアを使用するように変更す
るステップとを含む。
および利点は、添付の図面と関連させて読まれる例示し
た実施例の以下に示す詳細な説明から明らかである。
ssing) メッセージ受け渡しは公知のソフトウエアツールであ
り、本質的には、1つのソフトウエアブロックが、メッ
セージ待ち行列を介して他のブロックと交信することで
ある。メッセージには、データ、イベントの連絡、また
はその両方を含めることができる。この隠喩は、ハード
ウエアの環境を表現するために使用される。かかるシス
テムを記述する標準的言語は、万能モデル化言語(univ
ersal modelling laguage)をベースにしてX-UMLと呼ば
れており、イベント受け渡し言語として最もよく使用さ
れている。ハードウエアのブロックは、イベントが到着
するとトリガーされ、他のブロックにイベントを発生す
るオブジェクトと見なされる。
れる言語であって、X-UMLで記述されたシステムをシミ
ュレートするためには、コンパイルまたは逐次翻訳実行
される必要がある。ここに提案した環境はプラットフォ
ームを提供し、X-UMLのような言語で記述され、深さ
「1」のイベント待ち行列(すなわち、パイプラインを
用いたハードウエア)を有するソフトウエアアーキテク
チャーに写像されたシステムを、このプラットフォーム
上でシミュレートすることができる。
は、論理ブロックが、ラッチを介して相互にイベントを
受け渡すことである。これは、ソフトウエアメッセージ
またはイベントの受け渡しシステムと同じである。ラッ
チは1回に1つの値を保持できるだけであるから、メッ
セージ待ち行列の深さが1つだということは公知のこと
である。
る要求条件のため、高度にパイプラインが使用されてい
る。高度にパイプラインを用いたマイクロプロセッサの
正確なシミュレーションを構築することは、非常に時間
がかかる困難な仕事である。ソフトウエアの性質は本質
的に直列であり、ハードウエアは本質的に並列である。
この難しさは、パイプラインを用いたアーキテクチャー
の効果を正確にシミュレートする要求条件によって倍加
する。ハードウエア内のパイプラインの各ステージは、
他のすべてのステージと平行して自身の結果を計算して
いる。ソフトウエアにおける好適解はマイクロプロセッ
サ全体の挙動を「要約」して、(経過したサイクル数と
いう観点から)各種演算を実行するためにかかる時間を
単純に計算する。このことは高速であるとともに、アー
キテクチャーとして見ても正確なシミュレーションにな
る。かかるシミュレーションは、特に同時検証(co-ver
ification)に使用されるときは、要求されるほど正確
ではないことが多い。ここに示すシミュレーターは、イ
ベントにもとづく従来の方法でシミュレートされた他の
ハードウエアを駆動し、かつそのハードウエアに駆動さ
れるものと期待される。この形式のシミュレーションは
タイミングが絶対に正確なので、マイクロプロセッサの
シミュレーションはこのレベルの正確さと一致しなけれ
ばならない。
の速度を良好に維持して、要求された精度を達成する一
方、このシミュレータは、ハードウエアの実現を直接的
にベースとすることができるので、「命令セットシミュ
レーター」を構築するためにかかる時間を短くすること
を意図している。
ェッチ・ステージと復号化ステージを示す(これらはパ
イプライン回路要素のモデルの例として意図されている
にすぎない)。フェッチ・ステージは、入力(X)を取
り込んで出力(Y)を発生する。出力Yは、復号化ステー
ジで使用される。
理セグメント(この例ではフェッチと復号化)は正確に
1回実行する。論理セグメントは、自身の入力レジスタ
から読み出して、自身の出力レジスタに書き込む。出力
レジスタは、各サイクルの終了時点で、この場合は、フ
ェッチが、復号化で入力として使用されるイベントを出
力するように、対応する入力レジスタにコピーされる。
ハードウエアにおけるこの動作は、ラッチを「クロック
で動作させる(clocking)」ことによって行われる。ソ
フトウエアでは異なるメカニズムが要求される。このメ
カニズムは、ここで説明する環境に対するキーである。
これは単純な例であり、もっと複雑な例では、1つのセ
グメントは、自身の入力を多数の情報源から取り出すこ
とができるが、(以下、考察する)少数の例を除くと、
たいていは「ラッチ」から入力を取り出すことに注意さ
れたい。
記憶エリアAを形成する。同様に、図に示す出力レジス
タ4は、一括して第2のデータ記憶エリアBを形成す
る。シミュレートされる各クロック信号サイクルの終了
時点で、先のサイクルの出力値が後に続くサイクルで次
のステージの入力の値になるように、2つのデータ記憶
エリアに対するポインタが取り替えられる。
作させる」 提案したソフトウエア・アーキテクチャーとしては、図
1の構造は、図2に示す構造のように見ることもでき
る。
この出力は別のレジスタにコピーされ、各サイクルごと
に復号化によって読み出されなければならない。この場
合、フェッチはデータ構造体Bのセグメントに書き込
み、復号化はデータ構造体Aから読み出す。復号化は、
それ自体がデータ構造体Bの別の部分に書き込んでい
る。「入力」と「出力」の間のデータのコピーを達成す
るために必要なことのすべては、データブロックAおよ
びBが、各「サイクル」の終了時点でそれぞれの「クロ
ック」と取り替えられることである。
符号は、 フェッチ(A、B) 復号化(A、B) フェッチ(B、A) 復号化(B、A) を読み出せばよい。
ッドなしに「クロックの切り替え」が実行された。コン
パイル時間スケジューリングは、実行時間のときに関数
呼び出し(function calls)を少ししか必要とせず、演
算が速くなるように機能ブロックの実行順序を固定する
ために使用される。機能ブロックは、(ソフトウエアで
この論理を記述する複雑さは、ハードウエアで記述する
よりもかなり少ないことは勿論であるが)ハードウエア
の論理ブロックのように書くことができる。これによ
り、特に正確に記述する場合にソフトウエアモデルを記
述する難しさが緩和する。
する書き込みを復号化することも示す。これらの変数は
1つのステージの論理のローカル状態として使用される
だけなので、「コピー」される必要はない。しかし、良
好に定義された構造体を維持するため、これらの変数は
明白に識別される。サイクルホールドごとに論理ブロッ
クを1回呼び出すだけと仮定しているあいだは、他のす
べてのイベントと同様、ローカル変数をコピーしないと
いう最適化を実行してもよい。
アと深さ「1」のメッセージ待ち行列に重点が置かれて
いるが、本手法は、複数の深さ「1」のメッセージ待ち
行列としてモデル化できる、いかなる固定長メッセージ
待ち行列に対して実行してもよいことに注意すべきであ
る。
使用される前に、2つ以上のラッチを通過する信号があ
ることは一般的である。深さ「1」のメッセージ待ち行
列におけるこれの効果は、2つの独立した待ち行列の間
のイベントを明白に接続することにより実現することが
できる。これは単純な場合であるが、検討を要するもっ
と複雑な構造のハードウエアが存在する。
プライン・ステージ」から入力を取り出す論理のブロッ
クがあることは一般的である。これらの信号が、ラッチ
から(深さ「1」のメッセージ受け渡しシステムのメッ
セージ待ち行列から直接)到着することが明白ならば、
上に説明したように、これは問題ではない。しかし、他
に依存せずに、これらの信号が論理の組み合わせである
ことがときどきある。図3は、1つの組み合わせ論理
が、3つのパイプライン・ステージ8、10、12から
入力を取り出す例を示す。組み合わせ論理が大きなブロ
ックとして表されているのに対し、これらのステージ間
の「ラッチ」は、細い線で示されている。これらの「ラ
ッチ」は、サイクルごとに1回、クロックで動作し、前
のステージからの出力が次のステージの入力になるよう
にする。この図は、ブロック図で示すだけであるが、実
際の設計では、多数のステージからの信号が組み合わさ
れる。これらの結果は、他に依存せずにラッチされるか
も知れないし、されないかも知れないが、これらの結果
は同じサイクル中に組合わされなければならないので、
ラッチを通過することができない。これは、ハードウエ
アにおけるクリチカルパスかも知れない。例えば、RISC
プロセッサの前提条件は、これらの信号のすべてが単一
サイクル内で計算され組み合わされることである。
内では、そのような例を実現できる方法が2つ存在す
る。第1の方法は、その入力をメッセージ待ち行列から
直接取り出すように、マルチ・ステージ組み合わせブロ
ック14に要求される論理を反復することである。これ
は、図3に示す簡単な解であるが、要求されると反復す
る論理が単純なときはこの解が最も適切である。より一
般的な解は図4にブロック図で示されている。
域のクロック(sub domain clock)」が使用されている
ことである。パイプライン・ステージ8、10、12
は、第1セットのラッチがクロックで動作する前に計算
が終了すると期待されているので、組み合わせ論理14
は、最終ラッチに対する計算を終了しなければならな
い。
テージからの出力が組み合わせ論理で読み出されるが、
本来これはハードウエアが実行していることなので、こ
の場合、他に依存しない個別の待ち行列は各信号に必要
とされない。唯一の相違点は、データが待ち行列に配置
され、そこから読み出されるように、メッセージ待ち行
列の中に場所がなければならないことである。しかし、
これは1つの非常に重要な約束でることは勿論であり、
その約束とは、自身の入力を発生するパイプライン・ス
テージの後で、組み合わせ論理が実行されるということ
である。これが、「副領域のクロック」を実現するメカ
ニズムである。
領域に関連する問題に通じる。
以上のクロック領域が存在する。この場合、異なる速度
で実行する本質的に2つの平行なパイプライン16、1
8がある。これに対処する最も容易な方法は、2つの完
全に独立なメッセージシステムをもつことである。1つ
は、他の1つよりも頻繁にクロックで動作する。これは
本質的に完全に満足すべき解である。しかし、ハードウ
エアで処理すべき複数のクロック領域に対する問題が存
在するが、複数のクロック領域はソフトウエアでも同様
な問題を生起するに違いない。
同じ方法でシミュレートできない。シミュレーションの
実行中、非決定論的挙動は完全に決定論的になる。これ
は、ある種の状況では問題になりうる。しかし、たいて
いのマイクロプロセッサの場合、かかる設計に非決定論
的挙動は許容されないから、それは問題にならない。
ないシステムの一例を示す。これは、マルチ・ステージ
組み合わせ論理と複数のクロック領域の組み合わせであ
る。マルチ・ステージ組み合わせ論理の正確な内部タイ
ミングは計算されないので、2つの異なるパイプライン
間で受け渡しされる信号の値は、必ずしも同様な状態で
ハードウエアに反映されることにはならない。
ア構成は正常な設計では許容されないということであ
る。一般に、異なるパイプラインの間を移動する信号
は、各パイプラインのラッチから直接到着する。ラッチ
は実ハードウエアの中にあるのだから、シミュレーショ
ンの実施中に正確に同じようにラッチが動作することは
勿論である。
ュレーション手法を実行するために使用する汎用コンピ
ュータ20を、きわめて模式的に示す。汎用コンピュー
タ20は、中央処理装置22および共通メモリ24を含
む。第1のデータ記憶エリア2と第2のデータ記憶エリ
ア4は、共通メモリ24内のそれぞれの領域である。ロ
ーカル変数記憶装置6は共通メモリ24の中に設けられ
ている。パイプライン回路要素26のソフトウエアモデ
ルは、シミュレーションシステム全体を総合的に制御す
るソフトウエアと一緒に共通メモリ24の中に格納され
ている。メモリエリア2、4に対するポインタの取り替
えは、メモリアドレスのオフセット値の取り替え、また
は同様な手法により、効率よく達成することができる。
動作を示す流れ図である。ステップ28で、システム
は、それぞれがパイプライン回路要素を表すモデル要素
のリストの先頭を指すようにポインタを設定する。ステ
ップ30で第1モデルの入力が、メモリエリアAから読
み出される。ステップ32で、第1モデルからの出力が
発生し、メモリエリアBに書き込まれる。ステップ34
で、パイプラインモデル要素のすべてが実行されてしま
ったか否かについてチェックが実行される。パイプライ
ンモデル要素すべての実行が終わっていないときは、ス
テップ30に戻り、ここで次のパイプラインモデル要素
が実行される。コンパイル時間スケジューリングは、ス
テップ28、30、32および34を効率的に1つの機
能ブロックに圧縮して実行時間呼び出し回数を減少さ
せ、動作速度を上げるために使用される。パイプライン
モデル要素のすべてが実行されてしまうと、ステップ3
6に到達し、ここで何らかのマルチ・ステージ組み合わ
せ論理が実行され、1つのステージからの出力が次のス
テージの入力になり、前のサイクルの入力が、新たに発
生した出力データの値によって上書きされるように、そ
の出力データの値がメモリエリアBに書き込まれる。ス
テップ38で、メモリエリアA、Bのポインタが取り替え
られる。次にシミュレートされるクロック信号サイクル
を処理できるように、ステップ28へ戻る。
たソフトウエア手法を説明してきた。パイプラインを用
いたハードウエアをシミュレートするために、このシス
テムを使用できる方法を示してきたが、この方法は、シ
ステムのサブブロック(パイプライン・ステージ)間で
受け渡しされる深さ「1」のメッセージをもつシステム
として表すことができる特徴を有する。かかるシステム
を使用する利点のいくつかを検討してきた。注目すべき
ことは、これらの利点により、シミュレータの設計者が
(意図した)ハードウエア設計に慎重に参考にして、自
身のシミュレーションを構築できるようにすることであ
る。その上、かかるシミュレーションの結果は、ハード
ウエアがいかに挙動するかの観点から、高度に正確に構
成される。
構成を調べて、そのようなハードウエアをいかに表現で
きるかを示してきたが、(マイクロプロセッサの設計で
は発生してはならない)1つの課題がある(すなわち、
非決定論的挙動は、シミュレーションの実行中は違って
いる)ことをつきとめた。
良好な結果を得ている。命令セットが小さく、若干のメ
モリを備え、450MHzのPentium IIで走行する3ステ
ージのパイプラインを用いたマイクロプロセッサで構成
された単純な設計は、1秒あたり約750万サイクルを
達成する(Pentiumはインテル社の登録商標である)。
これにもとづいて期待されることは、さらに複雑なマイ
クロプロセッサと周辺メモリと周辺システムで完全な設
計をすれば、約1MIP以上を達成することが期待され
る。
ズムは、2つのデータ記憶エリアと、最初に一方にアク
セスし、次に他方にアクセスする符号を用いているが、
代替実施例は2つの別々の符号を有することになってお
り、1つは第1エリアをアクセスするようにコンパイル
され、他の1つは第2のエリアをアクセスするようにコ
ンパイルされる。このようにポインタを取り替えるので
はなく、符号の一方を交互に実行することも可能であ
る。この方法により、コンパイラは、より良い最適化を
実行して、より速いシミュレーションを達成できるよう
になる。
9の実施例において、データ記憶エリアは、符号例外
(code excepts)に対してデータ記憶エリアがローカル
だと考えられるように移動する。これは図8の実施例と
等価であるが、微妙で有用な違いが存在する。第1に、
ローカルデータに対するメモリ割り当てを、個別の符号
ブロックにより実行することができ、図8の実施例にお
けるケースと同様に、これはシステム全体を「平らにし
て(flatterened)」、記憶ブロックを決定する必要が
ないことを意味している。次に、これは図9の実施例を
動的に構成できることを意味している。
施例を詳細に説明してきたが、本発明がその精緻な実施
例に限定されるものではなく、添付の特許請求の範囲に
よって定義されるように、本発明の範囲と趣旨から逸脱
することなく、各種の変更や修正をできることは当業者
には判ることを理解すべきである。
要素のモデルを示す図。
リエリアが、シミュレートされる処理サイクル間で取り
替えられる方法を示すモデルの別の図を示す図。
シミュレーションに組み込むことができる2つの方法を
示す図。
シミュレーションに組み込むことができる2つの方法を
示す図。
ーションを示す図。
行することができる汎用コンピュータを高度に模式的に
示す図。
テムを示す図。
エリアが分割され符号部分に対して「ローカル」になっ
ていることを示す図。
Claims (16)
- 【請求項1】 共通クロック信号で駆動される複数のパ
イプライン回路要素を含むデータ処理装置の動作をシミ
ュレートする方法であって、深さ「1」のメッセージ待
ち行列と1組のデータ記憶エリアによって接続された複
数のパイプライン回路要素のモデルを使用する前記方法
において、(i)前記共通クロック信号のシミュレート
される共通クロック信号サイクルの開始時点で、各パイ
プライン回路要素に渡されるそれぞれの入力信号を表す
入力データの値を、第1のデータ記憶エリアに格納する
ステップと、(ii)前記シミュレートされる共通クロッ
ク信号サイクルのシミュレーション中に、前記第1のデ
ータ記憶エリアから各パイプライン回路要素ごとに前記
入力データの値を読み出し、各パイプライン回路要素ご
とのパイプライン回路要素のモデルを用いて、前記シミ
ュレートされた共通クロック信号サイクルが終了するこ
とにより、前記パイプライン回路要素で発生する出力信
号を表す出力データの値を発生するステップと、(ii
i)前記出力データの値を第2のデータ記憶エリアに格
納するステップと、(iv)次にシミュレートされるクロ
ック信号サイクル中に、前記格納された出力データの値
が入力データの値として機能できるように、前記第2の
データ記憶エリアを前記第1のデータ記憶エリアとして
機能するように変更するとともに、前記第2の記憶エリ
アとして異なる記憶エリアを使用するように変更するス
テップと、を含む前記方法。 - 【請求項2】 請求項1記載の方法において、前記第1
のデータ記憶エリアおよび前記第2のデータ記憶エリア
は、新たに発生した出力データの値が、先にシミュレー
トされた共通クロック信号サイクルの入力データの値を
上書きできるように、役割を取り替える前記方法。 - 【請求項3】 請求項1記載の方法において、前記入力
データの値および前記出力データの値の少なくともいく
つかは、ラッチを介して隣接する直列に配置されたパイ
プライン回路要素間で受け渡しされる信号の値を表す前
記方法。 - 【請求項4】 請求項1記載の方法において、前記出力
データの値の少なくともいくつかは、非パイプライン回
路要素から受信した信号の値を表す前記方法。 - 【請求項5】 請求項4記載の方法において、前記入力
データの値の少なくともいくつかは、前記非パイプライ
ン回路要素へ伝達された信号の値を表す前記方法。 - 【請求項6】 請求項5記載の方法において、非パイプ
ライン回路要素のモデルからの何らかの出力データは、
前記非パイプライン回路要素のモデルへの入力データの
値として機能する、何らかの出力データの値が別の場所
で発生した後で、これを用いて発生する前記方法。 - 【請求項7】 請求項4記載の方法において、前記非パ
イプライン回路要素の少なくとも1つは、1つまたはそ
れ以上の前記パイプライン回路要素のモデルから直接ラ
ッチされない入力データの値が伝達される前記方法。 - 【請求項8】 請求項1記載の方法において、前記パイ
プライン回路要素のモデルは、入力データの値を出力デ
ータの値に写像するソフトウエア・モデルである前記方
法。 - 【請求項9】 請求項1記載の方法において、前記デー
タ処理装置は、複数のクロック領域を含み、各クロック
領域は、別々の複数のパイプライン回路要素に関連し、
各複数のパイプライン回路要素のクロックによる動作は
個別にシミュレートされる前記方法。 - 【請求項10】 請求項1記載の方法において、前記デ
ータ処理装置は、パイプラインを用いたプロセッサを含
む前記方法。 - 【請求項11】 請求項10記載の方法において、各プ
ロセッサのパイプライン・ステージは、パイプライン回
路要素のモデルに対応する前記方法。 - 【請求項12】 請求項1記載の方法において、前記第
1のデータ記憶エリアは、共通メモリ内の第1のアドレ
ス領域に対応する前記方法。 - 【請求項13】 請求項12記載の方法において、前記
第2のデータ記憶エリアは、前記共通メモリ内の第2の
アドレス領域に対応する前記方法。 - 【請求項14】 請求項1記載の方法において、前記複
数のパイプライン回路要素のモデルは、コンパイル時間
スケジューリングに依存して、1つの機能ブロックを形
成する前記方法。 - 【請求項15】 共通クロック信号で駆動される複数の
パイプライン回路要素を含むデータ処理装置の動作をシ
ミュレートする装置であって、深さ「1」のメッセージ
待ち行列で接続された複数のパイプライン回路要素のモ
デルを使用する前記装置において、(i)前記共通クロ
ック信号のシミュレートされる共通クロック信号サイク
ルの開始時点で、各パイプライン回路要素に渡されるそ
れぞれの入力信号を表す入力データの値を格納する第1
のデータ記憶エリアと、(ii)前記シミュレートされる
共通クロック信号サイクルのシミュレーション中に動作
して、前記第1のデータ記憶エリアからパイプライン回
路要素ごとに前記入力データの値を読み出し、前記入力
データの値を用いて、前記シミュレートされた共通クロ
ック信号サイクルが終了することにより、前記パイプラ
イン回路要素で発生する出力信号を表す出力データの値
を発生する各パイプライン回路要素ごとのパイプライン
回路要素のモデルと、(iii)前記出力データの値を格
納する第2のデータ記憶エリアと、(iv)次にシミュレ
ートされるクロック信号サイクル中に、前記格納された
出力データの値が、入力データの値として機能できるよ
うに、前記第2のデータ記憶エリアが前記第1の記憶エ
リアとして機能するように変更するとともに、前記第2
の記憶エリアとして異なる記憶エリアを使用するように
変更する制御論理と、を含む前記装置。 - 【請求項16】 コンピュータを制御して、共通クロッ
ク信号で駆動される複数のパイプライン回路要素を含む
データ処理装置の動作をシミュレートする方法を実行す
るコンピュータプログラムを格納するコンピュータプロ
グラム記憶媒体であって、深さ「1」のメッセージ待ち
行列で接続された複数のパイプライン回路要素のモデル
を使用する前記方法は、(i)前記共通クロック信号の
シミュレートされる共通クロック信号サイクルの開始時
点で、各パイプライン回路要素に渡されるそれぞれの入
力信号を表す入力データの値を、第1のデータ記憶エリ
アに格納するステップと、(ii)前記シミュレートされ
る共通クロック信号サイクルのシミュレーション中に、
前記第1のデータ記憶エリアから各パイプライン回路要
素ごとに前記入力データの値を読み出し、各パイプライ
ン回路要素ごとのパイプライン回路要素のモデルを用い
て、前記シミュレートされた共通クロック信号サイクル
が終了することにより、前記パイプライン回路要素で発
生する出力信号を表す出力データの値を発生するステッ
プと、(iii)前記出力データの値を第2のデータ記憶
エリアに格納するステップと、(iv)次にシミュレート
されるクロック信号サイクル中に、前記格納された出力
データの値が入力データの値として機能できるように、
前記第2のデータ記憶エリアを前記第1のデータ記憶エ
リアとして機能するように変更するとともに、前記第2
の記憶エリアとして異なる記憶エリアを使用するように
変更するステップとを含む前記コンピュータプログラム
記憶媒体。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0001328A GB2358496A (en) | 2000-01-20 | 2000-01-20 | Simulation of data processing apparatus including pipelined circuit elements |
GB0001328.4 | 2000-10-19 | ||
GB0025696.6 | 2000-10-19 | ||
GB0025696A GB2363222B (en) | 2000-01-20 | 2000-10-19 | Simulation of data processing apparatus |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2001256048A true JP2001256048A (ja) | 2001-09-21 |
Family
ID=26243440
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001009597A Pending JP2001256048A (ja) | 2000-01-20 | 2001-01-18 | データ処理装置のシミュレーション |
Country Status (2)
Country | Link |
---|---|
US (1) | US6853968B2 (ja) |
JP (1) | JP2001256048A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
USRE48845E1 (en) | 2002-04-01 | 2021-12-07 | Broadcom Corporation | Video decoding system supporting multiple standards |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7107199B2 (en) * | 2002-10-31 | 2006-09-12 | Hewlett-Packard Development Company, L.P. | Method and system for the design of pipelines of processors |
US7484079B2 (en) * | 2002-10-31 | 2009-01-27 | Hewlett-Packard Development Company, L.P. | Pipeline stage initialization via task frame accessed by a memory pointer propagated among the pipeline stages |
US7331039B1 (en) | 2003-10-15 | 2008-02-12 | Sun Microsystems, Inc. | Method for graphically displaying hardware performance simulators |
US20070038435A1 (en) * | 2005-08-10 | 2007-02-15 | Takayoshi Koizumi | Emulation method, emulator, computer-attachable device, and emulator program |
US8648867B2 (en) * | 2006-09-25 | 2014-02-11 | Neurala Llc | Graphic processor based accelerator system and method |
US8689174B2 (en) * | 2006-12-28 | 2014-04-01 | Sap Ag | Extensibility of pattern components |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63197264A (ja) * | 1987-02-12 | 1988-08-16 | Matsushita Electric Ind Co Ltd | シミユレ−タ |
JPS63291170A (ja) * | 1987-05-22 | 1988-11-29 | Matsushita Electric Ind Co Ltd | シミユレ−タ |
JPS6446141A (en) * | 1987-08-14 | 1989-02-20 | Hitachi Ltd | Simulation method for logical circuit |
JPH05143667A (ja) * | 1991-11-20 | 1993-06-11 | Hitachi Ltd | 論理シミユレーシヨン方式 |
JPH0850554A (ja) * | 1994-05-30 | 1996-02-20 | Fujitsu Ltd | プロセッサの動作モデルと論理検証用試験命令列の自動生成方法及び装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4763288A (en) * | 1985-12-31 | 1988-08-09 | Schlumberger Systems & Services, Inc. | System for simulating electronic digital circuits |
JPS62182939A (ja) * | 1986-02-07 | 1987-08-11 | Hitachi Ltd | 情報処理装置の論理シミユレ−シヨン方法 |
US5412799A (en) * | 1990-02-27 | 1995-05-02 | Massachusetts Institute Of Technology | Efficient data processor instrumentation for systematic program debugging and development |
GB9018048D0 (en) | 1990-08-16 | 1990-10-03 | Secr Defence | Digital processor for simulating operation of a parallel processing array |
JP2845032B2 (ja) | 1992-06-24 | 1999-01-13 | 日本電気株式会社 | 論理シミュレーション装置 |
US5519626A (en) | 1993-07-09 | 1996-05-21 | Hewlett-Packard Company | Method of dividing a pipelined stage into two stages in a computer-aided design system |
JPH0844773A (ja) | 1994-07-26 | 1996-02-16 | Mitsubishi Electric Corp | 自動高位合成方法 |
US5764951A (en) | 1995-05-12 | 1998-06-09 | Synopsys, Inc. | Methods for automatically pipelining loops |
US6473772B1 (en) * | 1998-12-17 | 2002-10-29 | International Business Machines Corporation | Apparatus and methods for dynamic simulation event triggering |
-
2000
- 2000-12-20 US US09/739,785 patent/US6853968B2/en not_active Expired - Fee Related
-
2001
- 2001-01-18 JP JP2001009597A patent/JP2001256048A/ja active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63197264A (ja) * | 1987-02-12 | 1988-08-16 | Matsushita Electric Ind Co Ltd | シミユレ−タ |
JPS63291170A (ja) * | 1987-05-22 | 1988-11-29 | Matsushita Electric Ind Co Ltd | シミユレ−タ |
JPS6446141A (en) * | 1987-08-14 | 1989-02-20 | Hitachi Ltd | Simulation method for logical circuit |
JPH05143667A (ja) * | 1991-11-20 | 1993-06-11 | Hitachi Ltd | 論理シミユレーシヨン方式 |
JPH0850554A (ja) * | 1994-05-30 | 1996-02-20 | Fujitsu Ltd | プロセッサの動作モデルと論理検証用試験命令列の自動生成方法及び装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
USRE48845E1 (en) | 2002-04-01 | 2021-12-07 | Broadcom Corporation | Video decoding system supporting multiple standards |
Also Published As
Publication number | Publication date |
---|---|
US20010010034A1 (en) | 2001-07-26 |
US6853968B2 (en) | 2005-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7934179B2 (en) | Systems and methods for logic verification | |
US7865346B2 (en) | Instruction encoding in a hardware simulation accelerator | |
US20070294071A1 (en) | Hardware accelerator with a single paratition for latches and combinational logic | |
KR101647817B1 (ko) | 재구성 가능한 프로세서의 시뮬레이션 장치 및 방법 | |
US8365111B2 (en) | Data driven logic simulation | |
EP1405226A2 (en) | Synchronization of multiple simulation domains in an eda simulation environment | |
US6263303B1 (en) | Simulator architecture | |
US7401015B1 (en) | Coherent state among multiple simulation models in an EDA simulation environment | |
JP2004519041A (ja) | 効率的なデータロード及びアンロードのために統合されるパケット基準のプロトコル論理を用いるハードウェア支援設計検証システム | |
US6438514B1 (en) | Generation of a system model | |
US5179672A (en) | Apparatus and method for modeling parallel processing of instructions using sequential execution hardware | |
US7266791B2 (en) | High level synthesis device, method for generating a model for verifying hardware, method for verifying hardware, control program, and readable recording medium | |
US6853968B2 (en) | Simulation of data processing apparatus | |
CN100530103C (zh) | 一种模拟器及方法 | |
US9223910B1 (en) | Performance and memory efficient modeling of HDL ports for simulation | |
US10409624B1 (en) | Data array compaction in an emulation system | |
Theodoropoulos et al. | Occam: an asynchronous hardware description language? | |
US11106846B1 (en) | Systems and methods for emulation data array compaction | |
Denneau et al. | Design and implementation of a software simulation engine | |
GB2363222A (en) | Simulation of data processing apparatus including pipelined circuit elements | |
JP2003216678A (ja) | データ処理システムおよび設計システム | |
US11048843B1 (en) | Dynamic netlist modification of compacted data arrays in an emulation system | |
Khatwal et al. | An Efficient Application Specific Memory Storage and ASIP Behavior Optimization in Embedded System | |
US8495539B1 (en) | Scheduling processes in simulation of a circuit design | |
US8516413B1 (en) | Compilation and simulation of a circuit design |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070823 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100824 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20101124 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20101129 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111003 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120302 |