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
Application number
JP2001009597A
Other languages
English (en)
Inventor
John Mark Burton
マーク バートン ジョン
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.)
ARM Ltd
Original Assignee
ARM Ltd
Advanced Risc Machines 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
Priority claimed from GB0001328A external-priority patent/GB2358496A/en
Application filed by ARM Ltd, Advanced Risc Machines Ltd filed Critical ARM Ltd
Publication of JP2001256048A publication Critical patent/JP2001256048A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design 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

(57)【要約】 【課題】 パイプラインを用いたハードウエアのソフト
ウエア・シミュレーション手法を提供する。 【解決手段】 ハードウエアは、複数のパイプライン回
路要素のモデルにモデル化され、各パイプライン回路要
素のモデルは、入力データの値を第1のデータ記憶エリ
アAから読み出し、出力データの値を第2のデータ記憶
エリアBに書き込む。シミュレートされる各クロック信
号サイクルの終了時点で、第1のデータ記憶エリアAと
第2のデータ記憶エリアBが取り替えられて、ハードウ
エアのパイプライン16、18におけるパイプライン・
ステージ8、10、12間で信号を受け渡す挙動を効率
的に反復する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、データ処理装置の
シミュレーションに関する。より詳細には、この発明
は、パイプライン回路要素(pipelined circuit elemen
ts)を含むデータ処理装置のシミュレーションに関す
る。
【0002】データ処理用ハードウエアのソフトウエア
・シミュレーションを実行することは公知である。これ
らのシミュレーションは、新しいデータ処理装置の物理
形態が利用できるようになる前に、そのデータ処理装置
のソフトウエアまたは接続されるハードウエアを開発し
てテストする機能のように、多くの理由で役に立つので
ある。
【0003】
【発明が解決しようとする課題】データ処理装置をシミ
ュレートするソフトウエアを提供する一方法は、実際の
データ処理装置の内部の信号の変化のすべてを回路部品
レベルで表現しようとするモデルを提供することであ
る。この方法は、伝搬遅延などを考慮して、実システム
の応答を高度に正確に表現することができる。これらの
システムは、高度に正確な結果を発生することができる
が、何十万個ものトランジスタを含んでいるかもしれな
い回路全体にわたって追跡することが必要な非常に多数
の信号の値は非常に多数あるので、そのようなシミュレ
ータの動作速度は非常に遅い。
【0004】ソフトウエア・シミュレーションに対する
代替方法は、所定組の入力に対するデータ処理装置の総
合体的応答とその現存の状態がどんなものかを高所から
考察することである。かかる方法を用いる場合、高度に
抽象的な表現が正確になるように、モデル化するハード
ウエアを非常によく理解する必要がある。データ処理装
置がますます複雑化するのに伴って、この方法もますま
す難しくなる。かかる難しさを示す特殊な一例は、パイ
プラインを用いたデータ処理装置に対処することであ
り、かかるデータ処理装置では、所定組の入力に対する
応答が数サイクルの間発生することができず、先の入力
と後に続く入力の双方に大きく依存するようになる。
【0005】モデルをつくる方法を簡単にするととも
に、データ処理装置のシミュレーションが高速かつ正確
に動作できることが望ましい。
【0006】
【発明が解決しようとする課題】一態様から考察する
と、本発明は、共通クロック信号で駆動される複数のパ
イプラインを用いた回路要素を含むデータ処理装置の動
作をシミュレートする方法を提供する。深さ「1」のメ
ッセージ待ち行列(one deep message queues)と、1
組のデータ記憶エリアによって接続された複数のパイプ
ライン回路要素のモデルを使用する前記方法は、(i)
前記共通クロック信号のシミュレートされる共通クロッ
ク信号サイクルの開始時点で、各パイプライン回路要素
に渡されるそれぞれの入力信号を表す入力データの値
を、第1のデータ記憶エリアに格納するステップと、
(ii)前記シミュレートされる共通クロック信号サイク
ルのシミュレーション中に、前記第1のデータ記憶エリ
アから各パイプライン回路要素ごとに前記入力データの
値を読み出し、各パイプライン回路要素ごとのパイプラ
イン回路要素のモデルを用いて、前記シミュレートされ
る共通クロック信号サイクルを終了させることにより、
前記パイプライン回路要素で発生する出力信号を表す出
力データの値を発生するステップと、(iii)前記出力
データの値を第2のデータ記憶エリアに格納するステッ
プと、(iv)次にシミュレートされるクロック信号サイ
クル中に、前記格納された出力データの値が入力データ
の値として機能できるように、前記第1のデータ記憶エ
リアとして機能するように、前記第2のデータ記憶エリ
アを変更するとともに、前記第2の記憶エリアとして異
なる記憶エリアを使用するように変更するステップと、
を含む。
【0007】本発明は、効率よく迅速に構築できる(マ
イクロプロセッサのような)パイプラインを用いたハー
ドウエアのソフトウエア・シミュレーションを提供しよ
うとするものである。その結果得られるソフトウエアモ
デルは、シミュレートしようとするハードウエアを直接
表現することができるとともに、実ハードウエアの信
号、論理およびラッチがソフトウエアモデルの中で明確
に識別可能でかつ理解可能なように構築できる。この目
的を達成するために、このソフトウエアモデルは、パイ
プラインを用いたハードウエアをシミュレートするのに
使用できる深さ「1」の待ち行列を備えたメッセージ受
け渡しシステム(message passing systemwith a queue
depth of one)をベースにしている。
【0008】シミュレートされるハードウエア内のパイ
プライン回路要素は、パイプライン回路要素のモデルに
よって表現される。第1のデータ記憶エリアは、いくつ
かのパイプライン回路要素のモデルに対する入力の値を
格納し、第2のデータ記憶エリアは、出力データの値を
格納する。自身の入力を読み出して自身の出力を書き込
む各モデルによって所定のクロックサイクルがシミュレ
ートされると、第1および第2のデータ記憶エリアの役
目が取り替えられて、パイプライン・ステージ間でデー
タの値を受け渡しする非常に能率的な方法を提供する。
実ハードウエア回路は、ソフトウエアで容易にモデル化
され理解されるパイプライン・ステージを表現する、実
際のユニットに効率的に分解される。パイプライン回路
要素のモデルが、パイプライン回路そのものに正確に対
応するか否かは判るであろう。パイプライン・ステージ
間をデータの値が受け渡し、従ってそれに関連するタイ
ミングは、モデルの構造によって決められることにな
り、それにより、システムの全体動作と必要な各種要素
の相互関係をあまり詳細に(disadvantageous degree)
分析せずに、データ記憶エリアは、ハードウエアの物理
ラッチに対応する。
【0009】前のサイクルの出力を格納するように機能
するエリアを切り替えて、現在のサイクルに入力を提供
することができるとともに、現在のサイクルに必要な他
のデータを上書きせずに現在のサイクルの出力を書き込
むためにエリアを提供することができるならば、データ
記憶エリアの組は、2より大きい任意の数の要素を持っ
てもよい。
【0010】1組のデータ記憶エリアには2つの要素が
あるので、前記第1のデータ記憶エリアと前記第2のデ
ータ記憶エリアが役目を取り替え、前にシミュレートさ
れた共通クロック信号サイクルの入力データの値を新た
に発生した出力データの値が上書きできるときは、シス
テムのメモリ要求条件を緩和することができる。
【0011】入力データの値および出力データの値が、
隣接して直列に配置されたパイプライン回路要素の間
を、ラッチを介して受け渡しされる信号の値を表すこと
が望ましいが、このことは、モデルのあらゆる部分に必
ずしも当てはまることではない。とくに、モデルが、非
パイプライン回路要素(たとえば、2つ以上のパイプラ
イン・ステージから入力を取り入れる組み合わせ論理の
ような論理ブロック)に対応する部分を含むことができ
ることが望ましい。出力データの値を第2のデータ記憶
エリアに書き込むように配置することによって、これら
の非パイプライン回路要素をモデルの全体構造に統合す
ることができる。
【0012】非パイプライン回路要素に対する入力デー
タが第1のデータ記憶エリアから取り出された入力デー
タの値であることは可能であり、あるいは、入力データ
の値をモデルの他の部分から直接取り出してもよい。ど
ちらのケースでも、非パイプライン回路要素が応答でき
る入力データの値のすべてが、そのサイクル中に評価さ
れてしまうまで、非パイプライン回路要素は、自身の出
力データの値を実行して評価しようとしないことが望ま
しい。パイプライン回路要素のモデルにはいろいろな形
式がある。特に高速で能率的なモデルは、入力データの
値を出力データの値に写像するソフトウエアモデルであ
る。このほかの高速化は、モデル自体の中の状態変数の
フィードバックによって与えられる。
【0013】本発明の手法は、各複数のパイプライン回
路要素をシミュレーションで個別にクロックで動作する
ように配置することにより、複数のクロック領域を含む
データ処理装置をモデル化するために使用してもよい。
【0014】本発明の手法は、広範囲な種類のデータ処
理装置に応用できるが、パイプラインを用いたプロセッ
サのモデル化に特によく適合しており、このような場
合、プロセッサの各パイプライン・ステージが、パイプ
ライン回路要素のモデルに対応するようにモデルを配置
してもよい。
【0015】通常、本発明のシミュレーション手法は汎
用コンピュータで実行され、その中では、第1のデータ
記憶エリアと第2のデータ記憶エリアが、汎用コンピュ
ータの共通メモリの異なる領域に対応していることは判
るであろう。
【0016】別の態様から考察すると、本発明は、共通
クロック信号で駆動される複数のパイプライン回路要素
を含むデータ処理装置の動作をシミュレートする装置を
提供しており、深さ「1」のメッセージ待ち行列で接続
された複数のパイプライン回路要素のモデルを使用する
前記装置は、(i)前記共通クロック信号のシミュレー
トされる共通クロック信号サイクルの開始時点で、各パ
イプライン回路要素に渡されるそれぞれの入力信号を表
す入力データの値を格納する第1のデータ記憶エリア
と、(ii)前記シミュレートされる共通クロック信号サ
イクルのシミュレーション中に動作して、前記第1のデ
ータ記憶エリアからパイプライン回路要素ごとに前記入
力データの値を読み出し、前記入力データの値を用い
て、前記シミュレートされた共通クロック信号サイクル
が終了することにより、前記パイプライン回路要素で発
生する出力信号を表す出力データの値を発生する各パイ
プライン回路要素ごとのパイプライン回路要素のモデル
と、(iii)前記出力データの値を格納する第2のデー
タ記憶エリアと、(iv)次にシミュレートされるクロッ
ク信号サイクル中に、前記格納された出力データの値
が、入力データの値として機能できるように、前記第2
のデータ記憶エリアが前記第1の記憶エリアとして機能
するように変更するとともに、前記第2の記憶エリアと
して異なる記憶エリアを使用するように変更する制御論
理とを含む。
【0017】さらに別の態様から考察すると、本発明
は、コンピュータを制御して、共通クロック信号で駆動
される複数のパイプライン回路要素を含むデータ処理装
置の動作をシミュレートする方法を実行するコンピュー
タプログラムを格納するコンピュータプログラム記憶媒
体を提供しており、深さ「1」のメッセージ待ち行列で
接続された複数のパイプライン回路要素のモデルを使用
する前記方法は、(i)前記共通クロック信号のシミュ
レートされる共通クロック信号サイクルの開始時点で、
各パイプライン回路要素に渡されるそれぞれの入力信号
を表す入力データの値を、第1のデータ記憶エリアに格
納するステップと、(ii)前記シミュレートされる共通
クロック信号サイクルのシミュレーション中に、前記第
1のデータ記憶エリアから各パイプライン回路要素ごと
に前記入力データの値を読み出し、各パイプライン回路
要素ごとのパイプライン回路要素のモデルを用いて、前
記シミュレートされた共通クロック信号サイクルが終了
することにより、前記パイプライン回路要素で発生する
出力信号を表す出力データの値を発生するステップと、
(iii)前記出力データの値を第2のデータ記憶エリア
に格納するステップと、(iv)次にシミュレートされる
クロック信号サイクル中に、前記格納された出力データ
の値が入力データの値として機能できるように、前記第
2のデータ記憶エリアを前記第1のデータ記憶エリアと
して機能するように変更するとともに、前記第2の記憶
エリアとして異なる記憶エリアを使用するように変更す
るステップとを含む。
【0018】この発明に関する上記その他の目的、特徴
および利点は、添付の図面と関連させて読まれる例示し
た実施例の以下に示す詳細な説明から明らかである。
【0019】
【発明の実施の形態】メッセージ受け渡し(Message Pa
ssing) メッセージ受け渡しは公知のソフトウエアツールであ
り、本質的には、1つのソフトウエアブロックが、メッ
セージ待ち行列を介して他のブロックと交信することで
ある。メッセージには、データ、イベントの連絡、また
はその両方を含めることができる。この隠喩は、ハード
ウエアの環境を表現するために使用される。かかるシス
テムを記述する標準的言語は、万能モデル化言語(univ
ersal modelling laguage)をベースにしてX-UMLと呼ば
れており、イベント受け渡し言語として最もよく使用さ
れている。ハードウエアのブロックは、イベントが到着
するとトリガーされ、他のブロックにイベントを発生す
るオブジェクトと見なされる。
【0020】X-UMLはシステムを記述するために使用さ
れる言語であって、X-UMLで記述されたシステムをシミ
ュレートするためには、コンパイルまたは逐次翻訳実行
される必要がある。ここに提案した環境はプラットフォ
ームを提供し、X-UMLのような言語で記述され、深さ
「1」のイベント待ち行列(すなわち、パイプラインを
用いたハードウエア)を有するソフトウエアアーキテク
チャーに写像されたシステムを、このプラットフォーム
上でシミュレートすることができる。
【0021】パイプラインを用いたハードウエア パイプラインを用いたハードウエアに関する1つの見方
は、論理ブロックが、ラッチを介して相互にイベントを
受け渡すことである。これは、ソフトウエアメッセージ
またはイベントの受け渡しシステムと同じである。ラッ
チは1回に1つの値を保持できるだけであるから、メッ
セージ待ち行列の深さが1つだということは公知のこと
である。
【0022】普通、マイクロプロセッサは、速度に対す
る要求条件のため、高度にパイプラインが使用されてい
る。高度にパイプラインを用いたマイクロプロセッサの
正確なシミュレーションを構築することは、非常に時間
がかかる困難な仕事である。ソフトウエアの性質は本質
的に直列であり、ハードウエアは本質的に並列である。
この難しさは、パイプラインを用いたアーキテクチャー
の効果を正確にシミュレートする要求条件によって倍加
する。ハードウエア内のパイプラインの各ステージは、
他のすべてのステージと平行して自身の結果を計算して
いる。ソフトウエアにおける好適解はマイクロプロセッ
サ全体の挙動を「要約」して、(経過したサイクル数と
いう観点から)各種演算を実行するためにかかる時間を
単純に計算する。このことは高速であるとともに、アー
キテクチャーとして見ても正確なシミュレーションにな
る。かかるシミュレーションは、特に同時検証(co-ver
ification)に使用されるときは、要求されるほど正確
ではないことが多い。ここに示すシミュレーターは、イ
ベントにもとづく従来の方法でシミュレートされた他の
ハードウエアを駆動し、かつそのハードウエアに駆動さ
れるものと期待される。この形式のシミュレーションは
タイミングが絶対に正確なので、マイクロプロセッサの
シミュレーションはこのレベルの正確さと一致しなけれ
ばならない。
【0023】ここに説明した環境は、シミュレーション
の速度を良好に維持して、要求された精度を達成する一
方、このシミュレータは、ハードウエアの実現を直接的
にベースとすることができるので、「命令セットシミュ
レーター」を構築するためにかかる時間を短くすること
を意図している。
【0024】図1は、代表的なマイクロプロセッサのフ
ェッチ・ステージと復号化ステージを示す(これらはパ
イプライン回路要素のモデルの例として意図されている
にすぎない)。フェッチ・ステージは、入力(X)を取
り込んで出力(Y)を発生する。出力Yは、復号化ステー
ジで使用される。
【0025】各「サイクル」におけるパイプラインの論
理セグメント(この例ではフェッチと復号化)は正確に
1回実行する。論理セグメントは、自身の入力レジスタ
から読み出して、自身の出力レジスタに書き込む。出力
レジスタは、各サイクルの終了時点で、この場合は、フ
ェッチが、復号化で入力として使用されるイベントを出
力するように、対応する入力レジスタにコピーされる。
ハードウエアにおけるこの動作は、ラッチを「クロック
で動作させる(clocking)」ことによって行われる。ソ
フトウエアでは異なるメカニズムが要求される。このメ
カニズムは、ここで説明する環境に対するキーである。
これは単純な例であり、もっと複雑な例では、1つのセ
グメントは、自身の入力を多数の情報源から取り出すこ
とができるが、(以下、考察する)少数の例を除くと、
たいていは「ラッチ」から入力を取り出すことに注意さ
れたい。
【0026】図に示す入力レジスタ2は、第1のデータ
記憶エリアAを形成する。同様に、図に示す出力レジス
タ4は、一括して第2のデータ記憶エリアBを形成す
る。シミュレートされる各クロック信号サイクルの終了
時点で、先のサイクルの出力値が後に続くサイクルで次
のステージの入力の値になるように、2つのデータ記憶
エリアに対するポインタが取り替えられる。
【0027】ソフトウエア・レジスタを「クロックで動
作させる」 提案したソフトウエア・アーキテクチャーとしては、図
1の構造は、図2に示す構造のように見ることもでき
る。
【0028】フェッチが1つのレジスタに出力すると、
この出力は別のレジスタにコピーされ、各サイクルごと
に復号化によって読み出されなければならない。この場
合、フェッチはデータ構造体Bのセグメントに書き込
み、復号化はデータ構造体Aから読み出す。復号化は、
それ自体がデータ構造体Bの別の部分に書き込んでい
る。「入力」と「出力」の間のデータのコピーを達成す
るために必要なことのすべては、データブロックAおよ
びBが、各「サイクル」の終了時点でそれぞれの「クロ
ック」と取り替えられることである。
【0029】したがって、これを実行する簡単な1つの
符号は、 フェッチ(A、B) 復号化(A、B) フェッチ(B、A) 復号化(B、A) を読み出せばよい。
【0030】これで(now)ソフトウエアのオーバーヘ
ッドなしに「クロックの切り替え」が実行された。コン
パイル時間スケジューリングは、実行時間のときに関数
呼び出し(function calls)を少ししか必要とせず、演
算が速くなるように機能ブロックの実行順序を固定する
ために使用される。機能ブロックは、(ソフトウエアで
この論理を記述する複雑さは、ハードウエアで記述する
よりもかなり少ないことは勿論であるが)ハードウエア
の論理ブロックのように書くことができる。これによ
り、特に正確に記述する場合にソフトウエアモデルを記
述する難しさが緩和する。
【0031】この図は、「状態」変数記憶エリアLに対
する書き込みを復号化することも示す。これらの変数は
1つのステージの論理のローカル状態として使用される
だけなので、「コピー」される必要はない。しかし、良
好に定義された構造体を維持するため、これらの変数は
明白に識別される。サイクルホールドごとに論理ブロッ
クを1回呼び出すだけと仮定しているあいだは、他のす
べてのイベントと同様、ローカル変数をコピーしないと
いう最適化を実行してもよい。
【0032】ここではパイプラインを用いたハードウエ
アと深さ「1」のメッセージ待ち行列に重点が置かれて
いるが、本手法は、複数の深さ「1」のメッセージ待ち
行列としてモデル化できる、いかなる固定長メッセージ
待ち行列に対して実行してもよいことに注意すべきであ
る。
【0033】パイプラインを用いたハードウエアでは、
使用される前に、2つ以上のラッチを通過する信号があ
ることは一般的である。深さ「1」のメッセージ待ち行
列におけるこれの効果は、2つの独立した待ち行列の間
のイベントを明白に接続することにより実現することが
できる。これは単純な場合であるが、検討を要するもっ
と複雑な構造のハードウエアが存在する。
【0034】マルチ・ステージ組み合わせ論理 パイプラインを用いたハードウエアでは、多数の「パイ
プライン・ステージ」から入力を取り出す論理のブロッ
クがあることは一般的である。これらの信号が、ラッチ
から(深さ「1」のメッセージ受け渡しシステムのメッ
セージ待ち行列から直接)到着することが明白ならば、
上に説明したように、これは問題ではない。しかし、他
に依存せずに、これらの信号が論理の組み合わせである
ことがときどきある。図3は、1つの組み合わせ論理
が、3つのパイプライン・ステージ8、10、12から
入力を取り出す例を示す。組み合わせ論理が大きなブロ
ックとして表されているのに対し、これらのステージ間
の「ラッチ」は、細い線で示されている。これらの「ラ
ッチ」は、サイクルごとに1回、クロックで動作し、前
のステージからの出力が次のステージの入力になるよう
にする。この図は、ブロック図で示すだけであるが、実
際の設計では、多数のステージからの信号が組み合わさ
れる。これらの結果は、他に依存せずにラッチされるか
も知れないし、されないかも知れないが、これらの結果
は同じサイクル中に組合わされなければならないので、
ラッチを通過することができない。これは、ハードウエ
アにおけるクリチカルパスかも知れない。例えば、RISC
プロセッサの前提条件は、これらの信号のすべてが単一
サイクル内で計算され組み合わされることである。
【0035】深さ「1」のメッセージ受け渡しシステム
内では、そのような例を実現できる方法が2つ存在す
る。第1の方法は、その入力をメッセージ待ち行列から
直接取り出すように、マルチ・ステージ組み合わせブロ
ック14に要求される論理を反復することである。これ
は、図3に示す簡単な解であるが、要求されると反復す
る論理が単純なときはこの解が最も適切である。より一
般的な解は図4にブロック図で示されている。
【0036】本質的に図4で起きていることは、「副領
域のクロック(sub domain clock)」が使用されている
ことである。パイプライン・ステージ8、10、12
は、第1セットのラッチがクロックで動作する前に計算
が終了すると期待されているので、組み合わせ論理14
は、最終ラッチに対する計算を終了しなければならな
い。
【0037】ラッチの「入力」側からの入力として各ス
テージからの出力が組み合わせ論理で読み出されるが、
本来これはハードウエアが実行していることなので、こ
の場合、他に依存しない個別の待ち行列は各信号に必要
とされない。唯一の相違点は、データが待ち行列に配置
され、そこから読み出されるように、メッセージ待ち行
列の中に場所がなければならないことである。しかし、
これは1つの非常に重要な約束でることは勿論であり、
その約束とは、自身の入力を発生するパイプライン・ス
テージの後で、組み合わせ論理が実行されるということ
である。これが、「副領域のクロック」を実現するメカ
ニズムである。
【0038】これは若干複雑であるが、複数のクロック
領域に関連する問題に通じる。
【0039】複数のクロック領域 ある種のパイプラインを用いたハードウエアでは、2つ
以上のクロック領域が存在する。この場合、異なる速度
で実行する本質的に2つの平行なパイプライン16、1
8がある。これに対処する最も容易な方法は、2つの完
全に独立なメッセージシステムをもつことである。1つ
は、他の1つよりも頻繁にクロックで動作する。これは
本質的に完全に満足すべき解である。しかし、ハードウ
エアで処理すべき複数のクロック領域に対する問題が存
在するが、複数のクロック領域はソフトウエアでも同様
な問題を生起するに違いない。
【0040】ハードウエアにおける非決定論的挙動は、
同じ方法でシミュレートできない。シミュレーションの
実行中、非決定論的挙動は完全に決定論的になる。これ
は、ある種の状況では問題になりうる。しかし、たいて
いのマイクロプロセッサの場合、かかる設計に非決定論
的挙動は許容されないから、それは問題にならない。
【0041】図5は、非決定論的結果が生じるかもしれ
ないシステムの一例を示す。これは、マルチ・ステージ
組み合わせ論理と複数のクロック領域の組み合わせであ
る。マルチ・ステージ組み合わせ論理の正確な内部タイ
ミングは計算されないので、2つの異なるパイプライン
間で受け渡しされる信号の値は、必ずしも同様な状態で
ハードウエアに反映されることにはならない。
【0042】再び強調すべきことは、かかるハードウエ
ア構成は正常な設計では許容されないということであ
る。一般に、異なるパイプラインの間を移動する信号
は、各パイプラインのラッチから直接到着する。ラッチ
は実ハードウエアの中にあるのだから、シミュレーショ
ンの実施中に正確に同じようにラッチが動作することは
勿論である。
【0043】図6は、上に説明したソフトウエア・シミ
ュレーション手法を実行するために使用する汎用コンピ
ュータ20を、きわめて模式的に示す。汎用コンピュー
タ20は、中央処理装置22および共通メモリ24を含
む。第1のデータ記憶エリア2と第2のデータ記憶エリ
ア4は、共通メモリ24内のそれぞれの領域である。ロ
ーカル変数記憶装置6は共通メモリ24の中に設けられ
ている。パイプライン回路要素26のソフトウエアモデ
ルは、シミュレーションシステム全体を総合的に制御す
るソフトウエアと一緒に共通メモリ24の中に格納され
ている。メモリエリア2、4に対するポインタの取り替
えは、メモリアドレスのオフセット値の取り替え、また
は同様な手法により、効率よく達成することができる。
【0044】図7は、シミュレーション手法の高水準の
動作を示す流れ図である。ステップ28で、システム
は、それぞれがパイプライン回路要素を表すモデル要素
のリストの先頭を指すようにポインタを設定する。ステ
ップ30で第1モデルの入力が、メモリエリアAから読
み出される。ステップ32で、第1モデルからの出力が
発生し、メモリエリアBに書き込まれる。ステップ34
で、パイプラインモデル要素のすべてが実行されてしま
ったか否かについてチェックが実行される。パイプライ
ンモデル要素すべての実行が終わっていないときは、ス
テップ30に戻り、ここで次のパイプラインモデル要素
が実行される。コンパイル時間スケジューリングは、ス
テップ28、30、32および34を効率的に1つの機
能ブロックに圧縮して実行時間呼び出し回数を減少さ
せ、動作速度を上げるために使用される。パイプライン
モデル要素のすべてが実行されてしまうと、ステップ3
6に到達し、ここで何らかのマルチ・ステージ組み合わ
せ論理が実行され、1つのステージからの出力が次のス
テージの入力になり、前のサイクルの入力が、新たに発
生した出力データの値によって上書きされるように、そ
の出力データの値がメモリエリアBに書き込まれる。ス
テップ38で、メモリエリアA、Bのポインタが取り替え
られる。次にシミュレートされるクロック信号サイクル
を処理できるように、ステップ28へ戻る。
【0045】要約 深さ「1」のメッセージ受け渡しシステムをベースにし
たソフトウエア手法を説明してきた。パイプラインを用
いたハードウエアをシミュレートするために、このシス
テムを使用できる方法を示してきたが、この方法は、シ
ステムのサブブロック(パイプライン・ステージ)間で
受け渡しされる深さ「1」のメッセージをもつシステム
として表すことができる特徴を有する。かかるシステム
を使用する利点のいくつかを検討してきた。注目すべき
ことは、これらの利点により、シミュレータの設計者が
(意図した)ハードウエア設計に慎重に参考にして、自
身のシミュレーションを構築できるようにすることであ
る。その上、かかるシミュレーションの結果は、ハード
ウエアがいかに挙動するかの観点から、高度に正確に構
成される。
【0046】潜在的に難しいいくつかのハードウエアの
構成を調べて、そのようなハードウエアをいかに表現で
きるかを示してきたが、(マイクロプロセッサの設計で
は発生してはならない)1つの課題がある(すなわち、
非決定論的挙動は、シミュレーションの実行中は違って
いる)ことをつきとめた。
【0047】この方法論にもとづくシステムを構築して
良好な結果を得ている。命令セットが小さく、若干のメ
モリを備え、450MHzのPentium IIで走行する3ステ
ージのパイプラインを用いたマイクロプロセッサで構成
された単純な設計は、1秒あたり約750万サイクルを
達成する(Pentiumはインテル社の登録商標である)。
これにもとづいて期待されることは、さらに複雑なマイ
クロプロセッサと周辺メモリと周辺システムで完全な設
計をすれば、約1MIP以上を達成することが期待され
る。
【0048】図8は、代替実施例を示す。基本的メカニ
ズムは、2つのデータ記憶エリアと、最初に一方にアク
セスし、次に他方にアクセスする符号を用いているが、
代替実施例は2つの別々の符号を有することになってお
り、1つは第1エリアをアクセスするようにコンパイル
され、他の1つは第2のエリアをアクセスするようにコ
ンパイルされる。このようにポインタを取り替えるので
はなく、符号の一方を交互に実行することも可能であ
る。この方法により、コンパイラは、より良い最適化を
実行して、より速いシミュレーションを達成できるよう
になる。
【0049】図9は、図8の装置からの進歩を示す。図
9の実施例において、データ記憶エリアは、符号例外
(code excepts)に対してデータ記憶エリアがローカル
だと考えられるように移動する。これは図8の実施例と
等価であるが、微妙で有用な違いが存在する。第1に、
ローカルデータに対するメモリ割り当てを、個別の符号
ブロックにより実行することができ、図8の実施例にお
けるケースと同様に、これはシステム全体を「平らにし
て(flatterened)」、記憶ブロックを決定する必要が
ないことを意味している。次に、これは図9の実施例を
動的に構成できることを意味している。
【0050】添付の図面を参照しつつ、本発明を示す実
施例を詳細に説明してきたが、本発明がその精緻な実施
例に限定されるものではなく、添付の特許請求の範囲に
よって定義されるように、本発明の範囲と趣旨から逸脱
することなく、各種の変更や修正をできることは当業者
には判ることを理解すべきである。
【図面の簡単な説明】
【図1】データの値を交換する複数のパイプライン回路
要素のモデルを示す図。
【図2】入力データの値および出力データの値用のメモ
リエリアが、シミュレートされる処理サイクル間で取り
替えられる方法を示すモデルの別の図を示す図。
【図3】非パイプライン回路要素のモデルを全体として
シミュレーションに組み込むことができる2つの方法を
示す図。
【図4】非パイプライン回路要素のモデルを全体として
シミュレーションに組み込むことができる2つの方法を
示す図。
【図5】複数のクロック領域を含むシステムのシミュレ
ーションを示す図。
【図6】本手法のソフトウエア・シミュレーションを実
行することができる汎用コンピュータを高度に模式的に
示す図。
【図7】モデル化手法を示す流れ図を示す図。
【図8】2つの機能が共通記憶装置をアクセスするシス
テムを示す図。
【図9】図8のシステムの変形を示す図であって、記憶
エリアが分割され符号部分に対して「ローカル」になっ
ていることを示す図。
【符号の説明】
2 第1データ記憶エリア 4 第2データ記憶エリア 6 ラッチ 8、10、12 パイプライン・ステージ 14 マルチ・ステージ組み合わせ論理ブロック 16、18 パイプライン 20 汎用コンピュータ 22 中央処理装置 24 共通メモリ 26 パイプライン回路要素

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】 共通クロック信号で駆動される複数のパ
    イプライン回路要素を含むデータ処理装置の動作をシミ
    ュレートする方法であって、深さ「1」のメッセージ待
    ち行列と1組のデータ記憶エリアによって接続された複
    数のパイプライン回路要素のモデルを使用する前記方法
    において、(i)前記共通クロック信号のシミュレート
    される共通クロック信号サイクルの開始時点で、各パイ
    プライン回路要素に渡されるそれぞれの入力信号を表す
    入力データの値を、第1のデータ記憶エリアに格納する
    ステップと、(ii)前記シミュレートされる共通クロッ
    ク信号サイクルのシミュレーション中に、前記第1のデ
    ータ記憶エリアから各パイプライン回路要素ごとに前記
    入力データの値を読み出し、各パイプライン回路要素ご
    とのパイプライン回路要素のモデルを用いて、前記シミ
    ュレートされた共通クロック信号サイクルが終了するこ
    とにより、前記パイプライン回路要素で発生する出力信
    号を表す出力データの値を発生するステップと、(ii
    i)前記出力データの値を第2のデータ記憶エリアに格
    納するステップと、(iv)次にシミュレートされるクロ
    ック信号サイクル中に、前記格納された出力データの値
    が入力データの値として機能できるように、前記第2の
    データ記憶エリアを前記第1のデータ記憶エリアとして
    機能するように変更するとともに、前記第2の記憶エリ
    アとして異なる記憶エリアを使用するように変更するス
    テップと、を含む前記方法。
  2. 【請求項2】 請求項1記載の方法において、前記第1
    のデータ記憶エリアおよび前記第2のデータ記憶エリア
    は、新たに発生した出力データの値が、先にシミュレー
    トされた共通クロック信号サイクルの入力データの値を
    上書きできるように、役割を取り替える前記方法。
  3. 【請求項3】 請求項1記載の方法において、前記入力
    データの値および前記出力データの値の少なくともいく
    つかは、ラッチを介して隣接する直列に配置されたパイ
    プライン回路要素間で受け渡しされる信号の値を表す前
    記方法。
  4. 【請求項4】 請求項1記載の方法において、前記出力
    データの値の少なくともいくつかは、非パイプライン回
    路要素から受信した信号の値を表す前記方法。
  5. 【請求項5】 請求項4記載の方法において、前記入力
    データの値の少なくともいくつかは、前記非パイプライ
    ン回路要素へ伝達された信号の値を表す前記方法。
  6. 【請求項6】 請求項5記載の方法において、非パイプ
    ライン回路要素のモデルからの何らかの出力データは、
    前記非パイプライン回路要素のモデルへの入力データの
    値として機能する、何らかの出力データの値が別の場所
    で発生した後で、これを用いて発生する前記方法。
  7. 【請求項7】 請求項4記載の方法において、前記非パ
    イプライン回路要素の少なくとも1つは、1つまたはそ
    れ以上の前記パイプライン回路要素のモデルから直接ラ
    ッチされない入力データの値が伝達される前記方法。
  8. 【請求項8】 請求項1記載の方法において、前記パイ
    プライン回路要素のモデルは、入力データの値を出力デ
    ータの値に写像するソフトウエア・モデルである前記方
    法。
  9. 【請求項9】 請求項1記載の方法において、前記デー
    タ処理装置は、複数のクロック領域を含み、各クロック
    領域は、別々の複数のパイプライン回路要素に関連し、
    各複数のパイプライン回路要素のクロックによる動作は
    個別にシミュレートされる前記方法。
  10. 【請求項10】 請求項1記載の方法において、前記デ
    ータ処理装置は、パイプラインを用いたプロセッサを含
    む前記方法。
  11. 【請求項11】 請求項10記載の方法において、各プ
    ロセッサのパイプライン・ステージは、パイプライン回
    路要素のモデルに対応する前記方法。
  12. 【請求項12】 請求項1記載の方法において、前記第
    1のデータ記憶エリアは、共通メモリ内の第1のアドレ
    ス領域に対応する前記方法。
  13. 【請求項13】 請求項12記載の方法において、前記
    第2のデータ記憶エリアは、前記共通メモリ内の第2の
    アドレス領域に対応する前記方法。
  14. 【請求項14】 請求項1記載の方法において、前記複
    数のパイプライン回路要素のモデルは、コンパイル時間
    スケジューリングに依存して、1つの機能ブロックを形
    成する前記方法。
  15. 【請求項15】 共通クロック信号で駆動される複数の
    パイプライン回路要素を含むデータ処理装置の動作をシ
    ミュレートする装置であって、深さ「1」のメッセージ
    待ち行列で接続された複数のパイプライン回路要素のモ
    デルを使用する前記装置において、(i)前記共通クロ
    ック信号のシミュレートされる共通クロック信号サイク
    ルの開始時点で、各パイプライン回路要素に渡されるそ
    れぞれの入力信号を表す入力データの値を格納する第1
    のデータ記憶エリアと、(ii)前記シミュレートされる
    共通クロック信号サイクルのシミュレーション中に動作
    して、前記第1のデータ記憶エリアからパイプライン回
    路要素ごとに前記入力データの値を読み出し、前記入力
    データの値を用いて、前記シミュレートされた共通クロ
    ック信号サイクルが終了することにより、前記パイプラ
    イン回路要素で発生する出力信号を表す出力データの値
    を発生する各パイプライン回路要素ごとのパイプライン
    回路要素のモデルと、(iii)前記出力データの値を格
    納する第2のデータ記憶エリアと、(iv)次にシミュレ
    ートされるクロック信号サイクル中に、前記格納された
    出力データの値が、入力データの値として機能できるよ
    うに、前記第2のデータ記憶エリアが前記第1の記憶エ
    リアとして機能するように変更するとともに、前記第2
    の記憶エリアとして異なる記憶エリアを使用するように
    変更する制御論理と、を含む前記装置。
  16. 【請求項16】 コンピュータを制御して、共通クロッ
    ク信号で駆動される複数のパイプライン回路要素を含む
    データ処理装置の動作をシミュレートする方法を実行す
    るコンピュータプログラムを格納するコンピュータプロ
    グラム記憶媒体であって、深さ「1」のメッセージ待ち
    行列で接続された複数のパイプライン回路要素のモデル
    を使用する前記方法は、(i)前記共通クロック信号の
    シミュレートされる共通クロック信号サイクルの開始時
    点で、各パイプライン回路要素に渡されるそれぞれの入
    力信号を表す入力データの値を、第1のデータ記憶エリ
    アに格納するステップと、(ii)前記シミュレートされ
    る共通クロック信号サイクルのシミュレーション中に、
    前記第1のデータ記憶エリアから各パイプライン回路要
    素ごとに前記入力データの値を読み出し、各パイプライ
    ン回路要素ごとのパイプライン回路要素のモデルを用い
    て、前記シミュレートされた共通クロック信号サイクル
    が終了することにより、前記パイプライン回路要素で発
    生する出力信号を表す出力データの値を発生するステッ
    プと、(iii)前記出力データの値を第2のデータ記憶
    エリアに格納するステップと、(iv)次にシミュレート
    されるクロック信号サイクル中に、前記格納された出力
    データの値が入力データの値として機能できるように、
    前記第2のデータ記憶エリアを前記第1のデータ記憶エ
    リアとして機能するように変更するとともに、前記第2
    の記憶エリアとして異なる記憶エリアを使用するように
    変更するステップとを含む前記コンピュータプログラム
    記憶媒体。
JP2001009597A 2000-01-20 2001-01-18 データ処理装置のシミュレーション Pending JP2001256048A (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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