JP4564110B2 - 二重プロセッサ回路の動作をシミュレーションするためのコンピュータ実行方法及び信号プロセッサシミュレータ - Google Patents

二重プロセッサ回路の動作をシミュレーションするためのコンピュータ実行方法及び信号プロセッサシミュレータ Download PDF

Info

Publication number
JP4564110B2
JP4564110B2 JP28406397A JP28406397A JP4564110B2 JP 4564110 B2 JP4564110 B2 JP 4564110B2 JP 28406397 A JP28406397 A JP 28406397A JP 28406397 A JP28406397 A JP 28406397A JP 4564110 B2 JP4564110 B2 JP 4564110B2
Authority
JP
Japan
Prior art keywords
processor
simulator
instruction
clock
execution
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
JP28406397A
Other languages
English (en)
Other versions
JPH10228393A (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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co 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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JPH10228393A publication Critical patent/JPH10228393A/ja
Application granted granted Critical
Publication of JP4564110B2 publication Critical patent/JP4564110B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、回路のシミュレーションに係るもので、特に二重プロセッサ(dual processor)回路の動作をシミュレーションするためのコンピュータ実行方法及び信号プロセッサシミュレータに関する。
【0002】
【従来の技術】
一般的に、電子回路設計と、新しく設計された回路の大量生産との間には多くの時間間隔があるので、大量生産に費用を投資する前に、製造業者は回路設計が適合しているか否かを確認するために回路のテストを行っている。個々の回路段階に回路を製造するには費用が嵩むことから、回路のテストに物理的な制限が伴う。回路の少量生産にかかる費用を削減するために、回路設計者は少ない費用で且つ新しい回路設計の正確なテストを提供するコンピュータシミュレーションに関心を持つようになってきている。
【0003】
従来、コンピュータシミュレータ間の信号伝達に臨時ファイルを用いて行う方法がある。この方法は、第1のシミュレータが臨時ファイルを割り当て、この臨時ファイルに記入してから割り当てを取り消し、第2のシミュレータは同じ臨時ファイルを割り当て、伝送されるデータを読み出してから当該臨時ファイルの割り当てを取り消すものである。
【0004】
【発明が解決しようとする課題】
しかしながら、この方法では、第1、第2のシミュレータ間の情報伝達に一連の長い命令を伴うので、シミュレータの性能が低下するという問題点がある。
【0005】
シミュレータ間の情報伝達のための他の方法として、パイプとバッファの構造を用いたものがあるが、このような構造を処理することもまた多くの費用がかかる。また、伝統的なシミュレータでは、基礎となるハードウェアに存在する情報伝達能力をシミュレーションすることができない。例えば、回路要素は臨時ファイルを通して情報を伝達しない。従って、従来のシミュレーションより性能を向上させた二重プロセッサ回路のシミュレータが要求される。また、基礎となる電子回路に存在する信号伝達動作を正確にシミュレーションするシミュレータも要求される。
【0006】
そこで本発明は、従来のシミュレータに比して向上された性能を有し、基礎となる電子回路に存在する信号伝達動作を正確にシミュレーションできる二重プロセッサ回路の動作をシミュレーションするためのコンピュータ実行方法及び信号プロセッサシミュレータを提供することを目的としている。
【0007】
【課題を解決するための手段】
上記課題を解決し、上記目的を達成するために、請求項1記載の発明による信号プロセッサシミュレータは、二重プロセッサ回路上の並列実行をシミュレーションするための信号プロセッサシミュレータであって、二重プロセッサの第1プロセッサ上の命令の実行をシミュレーションするための第1プロセッサシミュレータと、二重プロセッサの第2プロセッサ上の命令の実行をシミュレーションするための第2プロセッサシミュレータと、信号プロセッサシミュレータによりアクセスされた値を格納するための共有されるメモリと、第1プロセッサに関するクロックをシミュレーションするための第1クロックシミュレータと、第2プロセッサに関するクロックをシミュレーションするための第2クロックシミュレータと、第1クロックシミュレータと第2クロックシミュレータとを比較し、後のクロックシミュレータに該当するプロセッサシミュレータ上の命令を処理する同期装置とを備えるものである。
【0008】
第1プロセッサシミュレータは、RISCプロセッサをシミュレーションするものであっても良い。
【0009】
また、第1プロセッサシミュレータは、ARMULATORとしても良い。
【0010】
第2プロセッサシミュレータは、ベクトルプロセッサをシミュレーションするものであっても良い。
【0011】
前記共有されるメモリは、第1プロセッサシミュレータと第2プロセッサシミュレータとに示されるものであっても良い。
【0012】
前記共有されるメモリは、第2プロセッサシミュレータにより変更できる第1プロセッサシミュレータのレジスタ値を含むものであっても良い。
【0013】
同期装置は、第2プロセッサシミュレータに関する命令に要求されるクロック周期を含む検査表を含み、第2プロセッサシミュレータ上の命令を実行する前に、命令に必要なクロック周期を決定するために検査表を検査し、命令を実行してから、第1プロセッサシミュレータによりシミュレーションされる第1プロセッサ動作が、少なくとも第2プロセッサシミュレータによりシミュレーションされる第2プロセッサの動作期間程度に遂行される時まで、第1プロセッサシミュレータ上の1個以上の他の命令を実行するものであっても良い。
【0014】
請求項8記載の発明による二重プロセッサ回路の動作をシミュレーションするためのコンピュータ実行方法は、二重プロセッサ回路上で実行される命令を含む実行可能なプログラムと、二重プロセッサ回路の第1プロセッサ上の命令実行をシミュレーションするための第1プロセッサシミュレータと、二重プロセッサ回路の第2プロセッサ上の命令実行をシミュレーションするための第2プロセッサシミュレータと、第1プロセッサシミュレータと第2プロセッサシミュレータとの間の命令実行をインターリーブするための同期装置と、第1プロセッサクロックを示す第1クロック値と、第2プロセッサクロックを示す第2クロック値と、第1プロセッサシミュレータと第2プロセッサシミュレータに示されて、前記の第1プロセッサシミュレータに要求される一個以上の第1レジスタ値及び第2プロセッサシミュレータに要求される一個以上の第2レジスタ値を含む、共有されるメモリとを含むコンピュータ格納媒体に提供される二重プロセッサ回路の動作をシミュレーションするためのコンピュータ実行方法において、実行可能なプログラムから第1命令をフェッチし、第1命令が並列処理のための信号でなければ、第1プロセッサシミュレータ上の第1命令実行をシミュレーションし、第1命令が並列処理のための信号であれば、並列処理をシミュレーションするコンピュータ実行段階を含む第1ループを遂行し、前記の並列処理をシミュレーションする段階が、クロック値と第2クロックとを比較し、第1クロック値が第2クロック値より小さければ、前記の実行可能なプログラムから第2命令をフェッチし、第1プロセッサシミュレータ上の第2命令の実行をシミュレーションし、第1プロセッサ上の第2命令の実行に必要な時間を第1クロック値に加えて、第1クロック値が第2クロック値より同一であるかまたは大きければ、前記の実行可能なプログラムから第3命令をフェッチし、第2プロセッサシミュレータ上の第3命令の実行をシミュレーションし、第2プロセッサ上の第3命令を遂行するに必要な時間を第2クロック値に加えて、第2プロセッサシミュレータがこれ以上必要となくなると第1ループに戻って、前記の実行可能なプログラム内の第1プロセッサシミュレータと関連されているすべての命令がシミュレーションされたら、第1ループを終了するコンピュータ実行段階を含むことを特徴とする。
【0015】
請求項9記載の発明による二重プロセッサ回路の動作をシミュレーションするためのコンピュータ実行方法は、二重プロセッサ回路上で実行される命令を含む実行可能なプログラムと、二重プロセッサ回路の第1プロセッサ上の命令の実行をシミュレーションするための第1プロセッサシミュレータと、二重プロセッサ回路の第2プロセッサ上の命令の実行をシミュレーションするための第2プロセッサシミュレータと、第1プロセッサシミュレートと第2プロセッサシミュレート間の命令の実行をインターリーブするための同期装置と、第1プロセッサクロックを示す第1クロック値と、第2プロセッサクロックを示す第2クロック値と、命令を実行することに必要な時間を示す検査表と、第1プロセッサシミュレータと第2プロセッサシミュレータで示されて、第1プロセッサシミュレータに要求される1個以上の第1レジスタ値及び第2プロセッサシミュレータに要求される1個以上の第2レジスタ値を含む、共有されるメモリと、を含むコンピュータ格納媒体に提供される二重プロセッサ回路の動作をシミュレーションするためのコンピュータ実行方法において、前記の実行可能なプログラムから第1命令をフェッチし、第1命令が並列プロセッシングのための信号でなければ、第1プロセッサシミュレータ上の第1命令の実行をシミュレーションし、第1命令が、並列処理のための信号であれば、並列処理をシミュレーションするコンピュータ実行段階を含む第1ループを遂行し、前記の並列処理をシミュレーションする段階が、クロック値と第2クロック値とを比較し、第1クロック値が第2クロックより小さければ、前記の実行可能なプログラムから第2命令をフェッチし、第1プロセッサシミュレータ上の第2命令の実行をシミュレーションし、第1プロセッサ上の第2命令を実行することに必要な時間を第1クロック値に加えて、第1クロック値が第2クロック値より同一であるかまたは大きければ、前記の実行可能なプログラムから第3命令をフェッチし、第3命令に必要な実行時間を決定するために検査表をアクセスし、第2プロセッサシミュレータ上の第3命令の実行をシミュレーションし、第2プロセッサ上の第3命令を遂行することに必要な時間を第2クロック値に加えて、第3命令に必要な実行時間を基準とし、実行可能なプログラムから所定の命令の実行をシミュレーションし、第2プロセッサシミュレータがこれ以上必要となくなると第1ループに戻って、前記の実行可能なプログラム内の第1プロセッサシミュレータと関連されているすべての命令がシミュレーションされたら、第1ループを終了するコンピュータ実行段階を含むことを特徴とする。
【0016】
【発明の実施の形態】
<付録Aに関する参考>
本明細書の一部である表1〜表5に示されている付録Aは、本発明のコンピュータプログラム実施例として以下で詳細に説明する。付録Aは、著作権が保護されなければならないもので、著作権者は米国特許及び商標国の特許ファイル、または記録に示されているように、誰も特許明細書をファクシミリ複写できることには異議ないが、そうでなければすべての著作権が取り消される。
【0017】
図1は本発明の実施の形態の信号プロセッサシミュレータの概略構成を示すブロック図である。
【0018】
この図において、コアイメージ(core image) 102は、2個の他のプログラムのための実行可能なファイルからなる組み合わされた実行可能なファイルである。一方のプログラムは、ARM7プロセッサ(“ARM7プロセッサプログラム”)を動作させるために設計されたもので、他方のプログラムはベクトルプロセッサ(“ベクトルプロセッサプログラム”)を動作させるために設計されたものである。
【0019】
ARM7プロセッサは、ARMプロセッサまたは“ARM”とも呼ばれる。ベクトルプロセッサは、ベクトルコプロセッサまたは“VCP”とも呼ばれる。それぞれのプログラムの実行可能なファイルは、コード部分領域とデータ部分領域とを含んでいる。
【0020】
2個の他のプログラムは、共有する変数及びそれぞれの変数を有する。コアイメージ102の一例を表6に示した付録Bに表した。付録Bにおいて、コアイメージ102は、ARM7プロセッサプログラムに関するコード部分(A1−A4ライン)、ARM7プロセッサプログラムに関するデータ部分(A5ライン)、ベクトルプロセッサプログラムに関するコード部分(A6−A7ライン)、及びベクトルプロセッサプログラムに関するデータ部分(A8)を順序に含む。このコアイメージ102は二重プロセッサシミュレータ104の入力となる。
【0021】
二重プロセッサシミュレータ104は、命令−ラベルシミュレータである。二重プロセッサシミュレータ104は、2個のプロセッサシミュレータ間の命令実行シミュレーションをインターリーブし、二プロセッサ上の並列命令実行をシミュレーションする。
【0022】
一方のプロセッサシミュレータはARM7・RISCプロセッサの動作をシミュレーションし、他方のプロセッサシミュレータはベクトルプロセッサの動作をシミュレーションする。ARM7・RISCプロセッサのために設定された構造と命令は、英国ケンブリッジのAdvance RISC Machines
Ltd.により提供される文書番号:ARM DDI 0010Gの“ARM7DM Data Sheet”に記述されている。ARM7DMデータシートは本明細書の参考文献として共に記述されている。
【0023】
ARM7レジスタと命令は、本明細書の参考文献として共に記述された米国特許出願番号08/699,303、弁理士事件番号M−4368の“Methods and Apparatus for Processing Video Data ”にも記述されている。
【0024】
ARM7・RISCプロセッサシミュレータの一例であるARMULATORは、英国ケンブリッジのAdvance RISC Machine Ltd. により常用化されたものである。
【0025】
ベクトルプロセッサのために設定された構造と命令は、本明細書の参考文献の一つであるカリフォルニア・サンホセの三星半導体の“Preliminary MSP-IEX System Specification”及び“MSP Architecture Specification”に記述されている。
【0026】
ベクトルプロセッサレジスタと命令は、米国特許出願番号08/699,597、弁理士事件番号M−4355の“Single-Instruction-Multiple-Data Processing in a Multimedia Signal Processor”に記述されている。
【0027】
ベクトルプロセッサシミュレータの一例は、マルチメディア命令ラベルシミュレーションツール(Multimedia Instruction Level simulation Tool;MINT )であり、これはカリフォルニア・サンホセの三星半導体の“Architecture and Design Specification of MINT ”に記述されている。
【0028】
ARM7・RISCプロセッサとベクトルプロセッサは例示的なもので、本発明を特定なプロセッサシミュレータとして制限するものではない。本明細書を考慮すると、本発明の原理は適切なプロセッサシミュレータを採用する限り、プロセッサの特定構造でも、すべての二重プロセッサ回路のシミュレーションに使用される場合もある。例えば、ARM7・RISCプロセッサは、従来の構造である多目的プロセッサに代替され得る。
【0029】
二重プロセッサシミュレータ104は、ARM7プロセッサシミュレータとベクトルプロセッサとを一つの共有するアドレス領域に丈夫に連結させる。この2個の他のプロセッサシミュレータは、傘のような構造のプロセッサの傘の骨の役割に該当するそれぞれのプロセッサシミュレータ動作の一過程として共に実行される。
【0030】
二重プロセッサシミュレータ104は命令実行のシミュレーションをインターリーブする。例えば、ARM7プロセッサシミュレータが命令実行をシミュレーションしてから、ベクトルプロセッサシミュレータが命令実行をシミュレーションし、それからARM7プロセッサシミュレータの動作が続く。シミュレータの動作は、このように飛ばす(leap-frog )形態で並列に実行される命令がこれ以上存在しない時まで継続される。
【0031】
二重プロセッサシミュレータ104は、どんなプロセッサシミュレータが一番最後のクロックキング技術を通して次に動作するかを決定する。別途のクロックシミュレータがそれぞれのプロセッサシミュレータに対して提供される。命令をフェッチする前に2個のクロックシミュレータを比較して、いずれのものが最後のものであるかを決定する。一番最後のクロックシミュレータと関連されたプロセッサシミュレータが命令の実行をシミュレーションしてから、プロセッサシミュレータとなる。
【0032】
二重プロセッサシミュレータ104の動作は、2個のプロセッサシミュレータ間の同期を維持することによって、二重プロセッサ集積回路上での実行順序と比較した時に、命令が一つの命令以上から外れて実行されないようにする。このように命令の実行をシミュレーションすることで費用を低く抑えることができる。
二重プロセッサシミュレータ104は、コアイメージ102の入力で動作する二重プロセッサ集積回路から認可される結果を模写するシミュレーション結果106を生成する。シミュレーション結果106はコアイメージ102を処理することに必要な周期を表す作業データを含む。シミュレーション結果106はコードをデバッグ(debug )し、作業数値を得るための正確な情報を提供する。
【0033】
本実施の形態による二重プロセッサシミュレータ104の構造を図2に詳細に示した。
【0034】
二重プロセッサシミュレータ104の最上部は、デバッガーインタフェース(debugger interface)202である。このデバッガーインタフェース202はプロセッサ制御及びデバッグ命令を使用者から受ける。この場合、デバッガーインタフェース202はレジスタをディスプレイし、プログラム命令を目録化し、変数を変更するような機能を遂行するための命令を受ける。なお、デバッガーインタフェース202は、WINDOWS95TM使用者インタフェースのための仕様に適合するように変形され得る。WINDOWS95TMは、ワシントン・レドモンドのマイクロソフト社により常用化されたものである。
【0035】
同期装置(synchronizer) 204は、デバッガーインタフェース202と二重プロセッサシミュレータ104の残余要素間の制御を行う部分である。デバッガーインタフェース202は同期装置に命令を伝達し、同期装置204からデータが印加される。
【0036】
同期装置204は、メモリ位置ARM7clk216(ARM7プロセッサクロックのシミュレーションのための)と、メモリ位置VPclk218(ベクトルプロセッサクロックのシミュレーションのための)とを含んでいる。同期装置204は2個のプロセッサシミュレータであるARM7プロセッサシミュレータ206(“ARM7シミュレータ206”ともいう)とベクトルプロセッサシミュレータ208(“VPシミュレータ208”ともいう)に連結される。情報は同期装置204と2個のプロセッサシミュレータ206、208間の両方向に伝達される。
【0037】
ARM7プロセッサシミュレータ206とVPプロセッサシミュレータ208は、メモリアクセスモジュール210、コプロセッサモジュール212及びイベントモジュール214を共有する。メモリアクセスモジュール210の一部はプロセッサシミュレータ206,208に示される。メモリアクセスモジュール210は、2個のプロセッサシミュレータがそれぞれの変数と共有する変数を維持する。メモリアクセスモジュール210はARM7プロセッサのレジスタの内容を維持するためのメモリ位置(ARM7 reg mem)220と、ベクトルプロセッサのレジスタの内容を維持するためのメモリ位置(VP reg mem)222とを備えている。
【0038】
コプロセッサモジュール212は、ARM7プロセッサシミュレータ206とVPプロセッサシミュレータ208との間のデータ伝送を遂行させる役割をする。イベントモジュール214はリセット、排除(exception)及びインタラプトのようなイベントを処理する。メモリアクセスモジュール210、コプロセッサモジュール212及びイベントモジュール214は直接的に連結されない。
【0039】
ARM7プロセッサシミュレータ206は、VPプロセッサシミュレータ208を丈夫に連結し、二重プロセッサ回路構造を精密に複写できる。例えば、ベクトルプロセッサシミュレータ208は、二重プロセッサ集積回路上の状態レジスタを表すメモリ位置(VP reg mem)220に格納された状態レジスタ変数の書き込みが可能であり、ARM7プロセッサシミュレータ206は、ARM7プロセッサシミュレータ206とVPプロセッサシミュレータ208との間の情報伝達のために前記と同一な状態レジスタ変数をポーリング(polling )することができる。
【0040】
ARM7プロセッサシミュレータ206は、VPプロセッサシミュレータ208によりポーリングされたレジスタに書き込みできる。メモリアクセスモジュール210を通したこのような情報伝達は、ARM7プロセッサシミュレータ206とVPプロセッサシミュレータ208との間の情報伝達のためにファイル、パイプ、または共有されるバッファを使用することより効率的である。このような方法には、付加的な手段管理と性能を落とす動作のアクセスが要求される。
【0041】
例えば、ある動作システムにおいて、ファイルを通した情報伝達のためには、そのファイルを開き、そのファイルに記入してファイルを閉じるためのVPプロセッサシミュレータ208が要求され、ARM7プロセッサシミュレータ206は前記ファイルを開き、このファイルから読み出しを遂行してファイルを閉じるべきである。上述のごとく、メモリアクセスモジュール210を利用して正常的なプロセッサ動作のシミュレーションのための情報伝達により、余分の段階を除去できる。
【0042】
二重プロセッサシミュレータ104の動作を図3に詳細に図示した。
【0043】
まず、“デバッガーインタフェースの始動”ブロック302でデバッガーインタフェース202(図2に図示されている)が始動される。“同期装置の始動”ブロック304で使用者は二重プロセッサ回路上で実行される命令のシミュレーションを要求し、デバッガーインタフェース202は同期装置204(図2参考)に信号を送る。
【0044】
同期装置204は、ARM7プロセッサシミュレータ206とVPプロセッサシミュレータ208との間の命令実行のシミュレーションをインターリーブする方式に同期させて、二重プロセッサ回路上で発生する並列実行に近づくようにする。
【0045】
同期装置204は、駆動を開始してから“ARM7プロセッサシミュレータの活性化”ブロック306で、ARM7シミュレータ206(図2参考)を始動する。二重プロセッサ回路上でARM7プロセッサとベクトルプロセッサは主従(master-slave) 関係を有する。ベクトルプロセッサの動作はARM7プロセッサで実行される命令“STARTVP”(付録B、A2ライン)を通して始動される。このような関係をシミュレーションするために、ARM7プロセッサシミュレータ206が先に活性化される。前記の命令がベクトルプロセッサを始動するための信号として使用されるために、必ず“STARTVP”と呼ばれる必要がないということは、当分野に通常の知識を有する者は理解できる。
【0046】
ARM7プロセッサシミュレータ206が活性化された後、同期装置204は“ARM7部分から命令をフェッチ”ブロック308を遂行する。ブロック308で同期装置204は、ARM7プロセッサプログラム(表6に示されている付録B、A1−A4ライン)に該当するコアイメージ102のコード部分から命令を検索する。
【0047】
“ARM7部分を終了するか?”決定310段階で、同期装置204はARM7プログラムが終了されなかったこと、すなわちブロック308でARM7命令を成功的にフェッチしたことを確認する。ARM7プログラムが終了されると、同期装置204は動作を終了し、デバッガーインタフェース202に戻る。
【0048】
同期装置204が、ブロック308で成功的に命令をフェッチした場合、同期装置204は“STARTVP命令であるか?”決定ブロック312で、この命令が“STARTVP”であるかを決定する。ブロック308で同期装置204がフェッチした命令が“STARTVP”命令であると、処理過程は“並列処理のシミュレーション”ブロック314に移動する。
【0049】
“STARTVP”命令とぶつかる時まで同期装置204の制御下の単一プロセッサは、単一流れ(thread)を有する。この流れは、ARM7プロセッサシミュレータ206の動作と関連する。“STARTVP”命令は、VPプロセッサシミュレータ208の動作と関連している他の流れの生成を要求する。ブロック314は、次に記述する“並列処理”で詳細に説明する。
【0050】
ブロック308でフェッチされた命令が“STARTVP”でなければ、同期装置204は、ARM7プロセッサシミュレータ206が“ARM7命令のシミュレーション”ブロックでフェッチされた命令の実行をシミュレーションする信号を送る機能を遂行する。
【0051】
なお、本発明の他の実施の形態として、同期装置204は、ARM7プロセッサシミュレータ206を使用するためのサブルーチン信号を送るようにしてもよい。この場合、同期装置204がARM7プロセッサシミュレータ206を使用する特定な方法は、同期装置204とARM7プロセッサシミュレータのプログラミング遂行に依存する。
【0052】
ブロック316のプロセッシングが終了されてから、ARM7プロセッサシミュレータ206は同期装置204に戻り、制御ループはブロック308に戻って、ARM7プログラム(付録B、A1ライン)から付加的な命令を読み出す。
【0053】
<並列処理>
上述のごとくブロック314は、二重プロセッサ集積回路のARM7プロセッサとベクトルプロセッサ上の命令の並列実行をシミュレーションする。ここで、ブロック314を図4に図示した。プロセッシングは同期装置204がVPプロセッサ208を活性化する“ベクトルプロセッサシミュレータの活性化”ブロック402で開始される。VPプロセッサシミュレータ208が命令をプロセッサするために用意してから、同期装置204は“シミュレータクロックの開始”ブロック404を実行する。
【0054】
同期装置204は、2個の独立されたクロックシミュレータを時間プロセッサシミュレータ206,208に維持させるが、この中で一方のクロックシミュレータはARM7クロック(図5参考)をシミュレーションし、他方のクロックシミュレータはベクトルクロック(図5参考)に該当する。ARM7クロックシミュレータはメモリ位置ARM7clk216(図2参考)を含む。ベクトルクロックシミュレータはメモリ位置VPclk218(図2参考)を含む。
【0055】
ブロック404で同期装置204はメモリ位置ARM7clk216とVPclk218をt1値(図5参考)に初期化する。
【0056】
なお、本発明の実施の形態において、ARM7クロックは40MHz周波数で動作し、ベクトルクロックは80MHzの周波数で動作する。なお、この二クロックの周波数のみに制限されるのではなく、本発明の原理はいずれの周波数のプロセッサでも使用可能であることは言うまでもない。
【0057】
同期装置204は、2個のプロセッサシミュレータの中のいずれのものが命令を受けて次の命令を遂行するかを決定するために、前記の二クロックシミュレータを利用する。同期装置204は、続いて“二重処理流れがそのまま活性化の状態であるか?”決定ブロック406を実行する。両側の流れが活性化状態でなければ、プロセッサシミュレータの中の或る一つに対するプロセッシングが終了され、これにより並列処理はこれ以上必要なくなる。並列処理がこれ以上必要なくなると、ブロック314は終了する。
【0058】
両側の流れがまだ活性化状態であれば、プロセッシングは“ARM7クロックが後であるか?”を決定するブロック408に移動する。決定段階408で同期装置204は、ARM7クロックシミュレータがベクトルクロックシミュレータより後であるかを決定する。このような決定はARM7clk216とVPclk218を比較して遂行される。例えば、ARM7clk(216) =t1で、VPclk(218) =t3であれば(図5参考)、ARM7クロックシミュレータがもっと後である。ARM7クロックがもっと後であれば、これはVPプロセッサシミュレータ208が命令をプロセッシングし、ARM7プロセッサシミュレータ206はアイドル(idle)状態であることを表す。二重プロセッサ回路において2個のプロセッサが存在するので、この二プロセッサが同時に動作する。
【0059】
ARM7プロセッサシミュレータ206がアイドル状態であれば、ARM7プロセッサシミュレータ206は、次の命令をプロセッシングすることにより命令実行の順序が維持され、並列処理がシミュレーションされる。例えば、図5を参考すると、VPプロセッサシミュレータ208が時間t4の間にベクトルプロセッサ動作をシミュレーションし、ARM7プロセッサシミュレータ206が時間t2の間にARM7プロセッサ動作をシミュレーションすると、命令を実行する次のプロセッサはARM7プロセッサシミュレータ206になるはずである。ARM7プロセッサシミュレータ206は少なくともVPプロセッサシミュレータ208が動作する時間だけ、動作する間に命令の処理を継続する。或る命令は終了されるための時間の量が異なるので、同期装置204はアイドル状態で最後まで待機しているプロセッサシミュレータがもっと多い命令を実行するように、2個のプロセッサシミュレータ間の命令実行の厳しいインターリービングから外れるようになる。
【0060】
ARM7クロックシミュレータがベクトルクロックシミュレータより後であれば(即ち、ARM7clk216<VPclk218)、プロセッシングは同期装置204がコアイメージ102のARM7プログラムのコード部分(付録B、A2−A4ライン)から命令をフェッチする“ARM7命令のフェッチ”ブロック410に移動する。前記命令がフェッチされてから、プロセッシングは同期装置204がARM7シミュレータ206によって、ARM7プロセッサ命令の実行をシミュレーションするように信号を送る“ARM7命令のシミュレーション”ブロック412に移動する。命令実行のシミュレーションの一部として同期装置204はARM7プロセッサ上のシミュレーティングされた命令を遂行することにかかる時間をARM7clk216に加える。例えば、図5を参考すると、ARM7プロセッサシミュレータ206がARM7clk(216) =t1で命令の実行を開始し、命令を実行することに必要な時間がARM7プロセッサ上の1クロック周期であれば、ARM7clk(216) はt2にセットされる。ARM7命令の実行がシミュレーションされてから、プロセッシングは決定段階406に移動し、命令の並列実行をシミュレーションするループを形成する。
【0061】
この実施の形態において、ARM7プロセッサが、ベクトルプロセッサが実行(付録B、A4ライン)を完了することを待っている間、待機ループを形成することも可能である。ARM7プロセッサシミュレータ206が待機ループをシミュレーションする時、両側の流れはまだ活性化状態であり、並列処理がシミュレーションされる。
【0062】
ARM7クロックシミュレータがベクトルクロックシミュレータより後でなければ(即ち、ARM7clk216>=VPclk218)、処理過程は“ベクトル命令のフェッチ”ブロック414に移動してから、“ベクトル命令のシミュレーション”ブロック416に移動する。
【0063】
なお、本発明の他の実施の形態として、ARM7クロックシミュレータとベクトルクロックシミュレータとが同一であれば、ARM7プロセッサシミュレータ206がARM7プログラム命令の実行をシミュレーションする。図4のブロック414で、ARM7クロックシミュレータが後の場合の処理過程と類似して、同期装置204はコアイメージ102のベクトルプログラムのコード部分(付録B、A6−A7ライン)から命令をフェッチする。ブロック416で、同期装置204はVPクロックシミュレータ208が命令の実行をシミュレーションする。ベクトルプログラム命令実行のシミュレーションの一部として、同期装置204はVPclk(216) をベクトルプロセッサ上の命令を実行することに必要な時間だけ増加させる。ブロック416以後の処理過程の制御は決定ブロック416に移動されて命令の並列実行をシミュレーションするループを形成する。
【0064】
本発明の実施の形態において、ベクトルプロセッサ命令“JOIN”(付録B、A7ライン)に注目する。ARM7命令“STARTVP”に対応する“JOIN”は、ベクトルプログラムが終了され、VPプロセッサシミュレータ208に対する処理流れが取り消されなければならないし、処理過程が基本ARM7プログラムに戻るはずであるということを表す。前記の命令をベクトルプロセッサを終了する信号として使用するためには、必ず“JOIN”としなくても良いということは、当分野の通常の知識を有する者は理解できる。
【0065】
ARM7プロセッサシミュレータ206とVPプロセッサシミュレータ208の丈夫な連結の一つの長所は、同期装置204がコンテキスト(context )とタスクスイッチング(task switching)でぶつかるようになる費用の問題を避けることにある。同期装置204はプロセッサシミュレータ(ブロック412のARM7プロセッサシミュレータ206とブロック416のVPプロセッサシミュレータ208)に信号することができる。同期装置204が本来は二プロセッサ間のタスクスイッチングであることは、当分野で通常の知識を有する者は理解できる。
【0066】
二つのプロセッサシミュレータ206,208が丈夫に連結されなければ、命令の形態がその前にシミュレーションされた形態から変更されるごとに、一方のプロセッサシミュレータは停止し、他方のプロセッサシミュレータが始動されるはずであるので、実行される新しいプロセッサが必要である(すなわち、ARM7命令からベクトルプロセッサ命令に変更され、またはベクトルプロセッサ命令からARM7命令に変更される)。
【0067】
なお、本発明の他の実施の形態として決定ブロック406から開始される図4に図示したループは、クロック数を減らすために変更されることもある。図4で同期装置204は、それぞれの命令を実行してから、ARM7clk(216) とVPclk(218) とを比較する。図6は前記の変更されたループを表したもので、ブロック602,604が追加されたことを除外しては、図4のループと同一である。
【0068】
それぞれのベクトル命令が必要とするクロック周期の数を含むクロック周期検査表(clock-cycle lookup table)(図示されていない)が同期装置204内に構成される。ブロック414が終了された後のブロック416の前、ベクトル命令の実行がシミュレーションされる前に“命令周期時間の検査”ブロック602で、同期措置204は命令が数個の周期を必要とするかを決定するためにクロック周期検査表を検索する。
【0069】
一般的に、ARM7プロセッサ上の命令は1周期を必要とし、ベクトルプロセッサ上の命令は多数のクロック周期を必要とする。ブロック602が終了されてから、“ベクトル命令のシミュレーション”ブロック416が上述のごとく実行される。ベクトル命令のシミュレーションの後、ARM7clk(216) とVPclk(218) を比較する代わり、“ARM7命令の反復実行(loop)”ブロック604で、同期装置204はベクトル命令に要求されるクロック数の半分に該当する数のARM7命令をフェッチし、その命令の実行をシミュレーションする。例えば、処理過程が時間t=1から開始され(図5参考)、8個のクロック周期を必要とするベクトルプロセッサ命令が実行されると仮定すると、ベクトルプロセッサは時間t=5で命令の実行を終了する。VPクロックがARM7クロックより2倍程度早いので、ARM7clk(216) はVPclk(218) より8クロック周期でない4クロック周期遅れるようになる。
【0070】
同期装置204は、4個のARM7命令をフェッチしてから、ARM7プロセッサシミュレータ206に信号を送ることにより、これらの命令の遂行をシミュレーションする。図4に示したプロセッサ終了の後、同期装置204はブロック414からフェッチされたベクトル命令がシミュレーションされた後、4回のクロック比較を行う。図6に示した方法はこのような4回のクロック比較を必要としない。ブロック606後、処理過程は図4のブロック416以後の過程と同様である。
【0071】
付録Aのコンピュータプログラムは、本発明の実施の形態において、マイクロソフト社により常用化されたマイクロソフトビジュアルC++4.0の統合された開発環境を利用し、コムファイルされリンクされたもので、マイクロソフト社により常用化されたマイクロソフトWINDOWS95TMを利用する個人用コンピュータ上で使用されることである。
【0072】
他の実施の形態において、付録Aのコンピュータプログラムは、UNIX Solaris2.5駆動システムとGCCコムファイラー及びリンカーを利用してコムファイル、リンクされる。付録Aのコンピュータプログラムに使用される特定なコンピュータ言語と、付録Aのコンピュータプログラムにより規定されるコンピュータプロセッサが遂行される、コンピュータシステムは、本発明の重要な面ではない。他のコンピュータ言語及び他のコンピュータシステムを利用して本発明を具現できることは当分野の通常の知識を有する者は理解できる。
【0073】
なお、上述の実施の形態は例示的なので、本発明を制限しない。例えば、前記の実施の形態では、ARM7プロセッサとベクトルプロセッサのシミュレーションに関して記述しているが、他のプロセッサにも本発明を適用し、2個以上のプロセッサの実行をシミュレーションし、マルチプロセッサ回路が集積回路ではない場合もある。
【0074】
また、本発明を特定の望ましい実施の形態に関連して図示、説明したが、以下の特許請求の範囲により用意される本発明の精神や分野を逸脱しない限り、本発明が多様に改造及び変化することができるということは、当業界で通常の知識を有する者は容易に知ることができる。
【0075】
このように、実施の形態では、新しい二重プロセッサ回路シミュレータは、それぞれ分離されたシミュレータを連結し、このシミュレータ間の命令の実行をインターリーブする。この新しい二重プロセッサシミュレータは、正確なシミュレーションと基礎となる集積回路の動作において優秀な性能を提供する。
【0076】
同期装置204は、RISCプロセッサシミュレータとベクトルプロセッサシミュレータの調整された動作を処理する。二重プロセッサシミュレータの入力は基礎となるRISCプロセッサの実行可能なファイルと、基礎となるベクトルプロセッサの実行可能なファイルとを組み合って構成された実行可能な組合ファイルから構成される。同期装置204は外部ループ内のRISCプロセッサと関連される、組み合わされた実行可能なファイルから命令をフェッチする。同期装置204はRISCプロセッサと関連されたすべての命令が遂行されるとき動作を終了する。
【0077】
同期装置204は、ベクトルプロセッサが初期化しなければならないフェッチされた命令信号を除外した前記フェッチされた命令実行をRISCプロセッサシミュレータがシミュレーションするようにする。ベクトルプロセッサが要求される場合、同期装置204は並列処理をシミュレーションする。
【0078】
並列処理をシミュレーションするために、同期装置204は、まずベクトルプロセッサシミュレータを動作させた後、RISCプロセッサシミュレータに該当するクロックシミュレータを初期時間にセットさせる。ベクトルプロセッサに該当するクロックシミュレータは同一な初期時間にセットされる。
【0079】
同期装置204は、並列処理が要求される間、内部ループを実行する。並列処理がこれ以上要求されなければ、同期装置204は外部ループに戻る。内部ループで、同期装置204はRISCクロックシミュレータとベクトルクロックシミュレータとを比較し、RISCクロックシミュレータが遅ければ、同期装置204は組み合わされた実行可能なプログラムからRISC命令をフェッチする。この命令はRISCプロセッサシミュレータ上でシミュレーションされる。
【0080】
シミュレーションの後、RISCプロセッサが命令を実行するのに必要な時間がRISCクロックシミュレータ値に加えられる。その後、同期装置204は内部ループの最初に戻る。
【0081】
ベクトルクロックシミュレータがRISCクロックシミュレータと同一、またはRISCクロックシミュレータより遅ければ、同期装置204は組み合わされた実行可能なプログラムからベクトルプロセッサ命令をフェッチする。この命令はベクトルプロセッサシミュレータ上でシミュレーションされる。シミュレーションした後、ベクトルプロセッサが命令を実行するのに必要な時間がベクトルクロックシミュレータ値に加えられる。それから、同期装置204は内部ループの最初に戻る。
【0082】
RISCプロセッサとベクトルプロセッサ間の情報伝達は、共有されるメモリを利用して遂行される。RISCプロセッサはベクトルプロセッサレジスタへの書き込みや読み出しを遂行し得る。
【0083】
本発明によると、多数のプロセッサ回路の動作をシミュレーションする方法及び装置が提供される。本発明の実施の形態において、プロセッサ回路は二重プロセッサ集積回路である。本発明の実施の形態によると、新しい二重クロックシミュレーション方法は、丈夫に連結された2個の独立的なプロセッサシミュレータ間の命令実行シミュレーションをインターリーブする。集積回路上の二重プロセッサを表す2個の独立的なプロセッサシミュレータは、一つの共有されるアドレス空間で統合される。2個のプロセッサシミュレータは相互に情報を伝達し得るメモリを共有する。一般的に、命令実行が同期されることによりシミュレータプロセッサはシミュレーション命令実行を交替に行う。
【0084】
このようにして、集積回路上で可能な並列実行がシミュレーションされる。別途のクロックシミュレータはそれぞれのプロセッサシミュレータに備えられる。
次の命令の実行をシミュレーションするために選択された実際のプロセッサは、最後のクロックシミュレータと関連されたプロセッサである。このように命令実行のシミュレーションが行われるようにすると、命令実行の順序が実際の二重プロセッサ集積回路の実行順序の一つの命令内にあることが確実になる。
【0085】
【発明の効果】
本発明によると、従来のシミュレータに比して向上された性能を有する二重プロセッサ回路のシミュレータが提供され、基礎となる電子回路に存在する信号伝達動作を正確にシミュレーションするシミュレータを提供できる。
【0086】
【表1】
Figure 0004564110
【0087】
【表2】
Figure 0004564110
【0088】
【表3】
Figure 0004564110
【0089】
【表4】
Figure 0004564110
【0090】
【表5】
Figure 0004564110
【0091】
【表6】
Figure 0004564110

【図面の簡単な説明】
【図1】本発明の実施の形態の信号プロセッサシミュレータの概略構成を示す図である。
【図2】図1の信号プロセッサシミュレータの二重プロセッサシミュレーションの構造を示す図である。
【図3】図1の信号プロセッサシミュレータの論理流れ図である。
【図4】図3の並列処理のシミュレーションブロックで遂行される処理過程を示す論理流れ図である。
【図5】図1の信号プロセッサシミュレータによりシミュレーションされるプロセッサのクロックを示す図である。
【図6】図4の処理過程よりクロックシミュレータの周波数を減少させるための、本発明の他の実施の形態による論理流れ図である。
【符号の説明】
102 コアイメージ
104 シミュレータ
106 シミュレーション結果
202 デバッガーインタフェース
204 同期装置
206 ARM7プロセッサシミュレータ
208 ベクトルプロセッサシミュレータ
210 メモリアクセスモジュール
212 コプロセッサモジュール
214 イベントモジュール
216 メモリ位置ARM7clk
218 メモリ位置VPclk
220 メモリ位置ARM7 REG MEM
222 メモリ位置VP REG MEM

Claims (9)

  1. 二重プロセッサ回路上の並列実行をシミュレーションするための信号プロセッサシミュレータであって、
    二重プロセッサの第1プロセッサ上の命令の実行をシミュレーションするための第1プロセッサシミュレータと、
    前記二重プロセッサの第2プロセッサ上の命令の実行をシミュレーションするための第2プロセッサシミュレータと、
    前記第1プロセッサシミュレータと前記第2プロセッサシミュレータとによりアクセスされる値を格納するための共有されるメモリと、
    前記第1プロセッサに関する組み合わされた実行プログラムの命令の実行に要するクロックサイクル時間をシミュレーションするための第1クロックシミュレータと、
    前記第2プロセッサに関する組み合わされた実行プログラムの命令の実行に要するクロックサイクル時間をシミュレーションするための第2クロックシミュレータと、
    前記第1クロックシミュレータと第2クロックシミュレータとの前記クロックサイクル時間を比較し、アイドル状態と見なすに足る遅れを示すクロックシミュレータに該当するプロセッサシミュレータ上の命令の処理を実行させる同期装置と、
    を備え、
    前記同期装置は、並列処理シミュレートを開始するため、前記第2プロセッサシミュレータを先に活性化させることにより前記第2プロセッサシミュレータが前記命令を用意すると、前記第1クロックシミュレータと前記第2クロックシミュレータとのクロックを初期化し、前記第1プロセッサシミュレータが前記第2プロセッサシミュレータに対しアイドル状態と見なすに足る遅れを示していれば、組み合わされた実行プログラムから前記第1プロセッサ上で実行される次の命令を取り出し前記第1プロセッサシミュレータに実行させて、並列処理をシミュレーションするコンピュータ実行段階を含む第1ループを遂行することを特徴とする信号プロセッサシミュレータ。
  2. 前記第1プロセッサシミュレータは、RISCプロセッサをシミュレーションすることを特徴とする請求項1記載の信号プロセッサシミュレータ。
  3. 前記第1プロセッサシミュレータは、ARMULATORであることを特徴とする請求項1記載の信号プロセッサシミュレータ。
  4. 前記第2プロセッサシミュレータは、ベクトルプロセッサをシミュレーションすることを特徴とする請求項1記載の信号プロセッサシミュレータ。
  5. 前記共有されるメモリは、前記第1プロセッサシミュレータと第2プロセッサシミュレータとに示されることを特徴とする請求項1乃至4のいずれかに記載の信号プロセッサシミュレータ。
  6. 前記共有されるメモリは、前記第2プロセッサシミュレータにより変更できる前記第1プロセッサシミュレータのレジスタ値を含むことを特徴とする請求項5記載の信号プロセッサシミュレータ。
  7. 前記同期装置は、前記第2プロセッサシミュレータに関する命令に要求されるクロック周期を含む検査表を含み、前記第2プロセッサシミュレータ上の命令を実行する前に、命令に必要なクロック周期を決定するために前記検査表を検査して前記第1プロセッサ上で実行される1つ以上の命令をフェッチし、前記命令と前記フェッチした命令との実行を開始し、前記第1プロセッサシミュレータによりシミュレーションされる第1プロセッサ動作が、少なくとも前記第2プロセッサシミュレータによりシミュレーションされる第2プロセッサの動作期間以内に、前記第1プロセッサシミュレータ上の1個以上の他の命令を実行することを特徴とする請求項1乃至6のいずれかに記載の信号プロセッサシミュレータ。
  8. 二重プロセッサ回路上で実行される命令を含む実行可能なプログラムと、
    前記二重プロセッサ回路の第1プロセッサ上の命令実行をシミュレーションするための第1プロセッサシミュレータと、
    前記二重プロセッサ回路の第2プロセッサ上の命令実行をシミュレーションするための第2プロセッサシミュレータと、
    前記第1プロセッサシミュレータと第2プロセッサシミュレータとの間の命令実行をインターリーブするための同期装置と、
    第1プロセッサクロックを示す第1クロック周波数と、
    第2プロセッサクロックを示す第2クロック周波数と、
    前記第1プロセッサシミュレータと第2プロセッサシミュレータに示されて、前記第1プロセッサシミュレータに要求される一個以上の第1レジスタ値及び前記第2プロセッサシミュレータに要求される一個以上の第2レジスタ値を含む、共有されるメモリと、を含むコンピュータ格納媒体に提供される二重プロセッサ回路の動作をシミュレーションするためのコンピュータ実行方法において、
    前記実行可能なプログラムから第1命令をフェッチし、
    前記第1命令が並列処理のための信号でなければ、前記第1プロセッサシミュレータ上の第1命令実行をシミュレーションし、
    前記第1命令が並列処理のための信号であれば、並列処理をシミュレーションするコンピュータ実行段階を含む第1ループを遂行し、
    前記の並列処理をシミュレーションする段階が、
    初期化後の各処理時間を示す前記第1クロックと第2クロックとを比較し、
    前記第1クロックが第2クロックより小さければ、前記の実行可能なプログラムから前記第1プロセッサ上で実行される第2命令をフェッチし、前記第1プロセッサシミュレータ上で前記第2命令の実行をシミュレーションし、前記第1プロセッサ上の前記第2命令の実行に必要なクロック数を前記第1クロックに加えて、
    前記第1クロックが前記第2クロックと同一であるかまたは大きければ、前記の実行可能なプログラムから前記第2プロセッサ上で実行される第3命令をフェッチし、前記第2プロセッサシミュレータ上で前記第3命令の実行をシミュレーションし、前記第2プロセッサ上の前記第3命令を遂行するに必要なクロック数を前記第2クロックに加えて、
    前記第2プロセッサシミュレータがこれ以上必要となくなると前記第1ループに戻って、
    前記の実行可能なプログラム内の第1プロセッサシミュレータと関連されているすべての命令がシミュレーションされたら、前記第1ループを終了するコンピュータ実行段階を含むことを特徴とする二重プロセッサ回路の動作をシミュレーションするためのコンピュータ実行方法。
  9. 二重プロセッサ回路上で実行される命令を含む実行可能なプログラムと、
    前記二重プロセッサ回路の第1プロセッサ上の命令の実行をシミュレーションするための第1プロセッサシミュレータと、
    前記二重プロセッサ回路の第2プロセッサ上の命令の実行をシミュレーションするための第2プロセッサシミュレータと、
    前記第1プロセッサシミュレートと第2プロセッサシミュレート間の命令の実行をインターリーブするための同期装置と、
    第1プロセッサクロックを示す第1クロック周波数と、
    第2プロセッサクロックを示す第2クロック周波数と、
    命令を実行することに必要な時間を示す検査表と、
    前記第1プロセッサシミュレータと第2プロセッサシミュレータで示されて、前記第1プロセッサシミュレータに要求される1個以上の第1レジスタ値及び前記第2プロセッサシミュレータに要求される1個以上の第2レジスタ値を含む、共有されるメモリと、を含むコンピュータ格納媒体に提供される二重プロセッサ回路の動作をシミュレーションするためのコンピュータ実行方法において、
    前記の実行可能なプログラムから第1命令をフェッチし、
    前記第1命令が、並列プロセッシングのための信号でなければ、前記第1プロセッサシミュレータ上の第1命令の実行をシミュレーションし、
    前記第1命令が、並列処理のための信号であれば、並列処理をシミュレーションするコンピュータ実行段階を含む第1ループを遂行し、
    前記の並列処理をシミュレーションする段階が、
    初期化後の各処理時間を示す前記第1クロックと第2クロックとを比較し、
    前記第1クロックが第2クロックより小さければ、前記の実行可能プログラムから前記第1プロセッサ上で実行される第2命令をフェッチし、前記第1プロセッサシミュレータ上で前記第2命令の実行をシミュレーションし、前記第1プロセッサ上の前記第2命令を実行することに必要なクロック数を前記第1クロックに加えて、
    前記第1クロックが前記第2クロックより同一であるかまたは大きければ、前記の実行可能なプログラムから前記第2プロセッサ上で実行される第3命令をフェッチし、前記第3命令に必要な実行時間を決定するために検査表をアクセスし、前記第2プロセッサシミュレータ上で前記第3命令の実行をシミュレーションし、前記第2プロセッサ上の前記第3命令を遂行することに必要なクロック数を前記第2クロックに加えて、前記第3命令に必要な実行時間を基準とし、前記実行可能なプログラムから所定の命令の実行をシミュレーションし、
    前記第2プロセッサシミュレータがこれ以上必要となくなると前記第1ループに戻って、
    前記の実行可能なプログラム内の第1プロセッサシミュレータと関連されているすべての命令がシミュレーションされたら、前記第1ループを終了するコンピュータ実行段階を含むことを特徴とする二重プロセッサ回路の動作をシミュレーションするためのコンピュータ実行方法。
JP28406397A 1996-10-18 1997-10-16 二重プロセッサ回路の動作をシミュレーションするためのコンピュータ実行方法及び信号プロセッサシミュレータ Expired - Fee Related JP4564110B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/730866 1996-10-16
US08/730,866 US6014512A (en) 1996-10-18 1996-10-18 Method and apparatus for simulation of a multi-processor circuit

Publications (2)

Publication Number Publication Date
JPH10228393A JPH10228393A (ja) 1998-08-25
JP4564110B2 true JP4564110B2 (ja) 2010-10-20

Family

ID=24937110

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28406397A Expired - Fee Related JP4564110B2 (ja) 1996-10-18 1997-10-16 二重プロセッサ回路の動作をシミュレーションするためのコンピュータ実行方法及び信号プロセッサシミュレータ

Country Status (4)

Country Link
US (1) US6014512A (ja)
JP (1) JP4564110B2 (ja)
KR (1) KR100257516B1 (ja)
TW (1) TW364087B (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002524795A (ja) * 1998-09-02 2002-08-06 インフィネオン テクノロジース アクチエンゲゼルシャフト マイクロコントローラ/マイクロプロセッサおよび所属の周辺モジュールのシステムシミュレーション方法および装置
US6718294B1 (en) * 2000-05-16 2004-04-06 Mindspeed Technologies, Inc. System and method for synchronized control of system simulators with multiple processor cores
US20020049910A1 (en) * 2000-07-25 2002-04-25 Salomon Allen Michael Unified trust model providing secure identification, authentication and validation of physical products and entities, and processing, storage and exchange of information
JP3884914B2 (ja) * 2001-01-30 2007-02-21 株式会社ルネサステクノロジ 半導体装置
US6981166B2 (en) * 2002-01-07 2005-12-27 International Business Machines Corporation Method, apparatus, and computer program product for pacing clocked operations
US8284844B2 (en) 2002-04-01 2012-10-09 Broadcom Corporation Video decoding system supporting multiple standards
US20050120278A1 (en) * 2003-11-19 2005-06-02 Smith Zachary S. Systems and methods for verifying lockstep operation
US20050114735A1 (en) * 2003-11-20 2005-05-26 Smith Zachary S. Systems and methods for verifying core determinacy
US7477713B2 (en) * 2004-03-02 2009-01-13 International Business Machines Corporation method for providing automatic adaptation to frequency offsets in high speed serial links
US20060070042A1 (en) * 2004-09-24 2006-03-30 Muratori Richard D Automatic clocking in shared-memory co-simulation
WO2006093762A1 (en) * 2005-02-25 2006-09-08 Coware, Inc. Computer platform simulation
CN100336033C (zh) * 2005-02-25 2007-09-05 清华大学 单芯片多处理器结构模拟系统
US7742905B2 (en) * 2005-02-25 2010-06-22 Coware, Inc. Method and system for dynamically adjusting speed versus accuracy of computer platform simulation
US7716031B2 (en) * 2005-02-25 2010-05-11 Coware, Inc. Interface converter for unified view of multiple computer system simulations
US8036873B2 (en) 2005-02-28 2011-10-11 Synopsys, Inc. Efficient clock models and their use in simulation
US7711534B2 (en) * 2005-12-09 2010-05-04 International Business Machines Corporation Method and system of design verification
US9367493B2 (en) * 2005-12-09 2016-06-14 Globalfoundries Inc. Method and system of communicating between peer processors in SoC environment
US7849362B2 (en) * 2005-12-09 2010-12-07 International Business Machines Corporation Method and system of coherent design verification of inter-cluster interactions
US8543367B1 (en) 2006-02-16 2013-09-24 Synopsys, Inc. Simulation with dynamic run-time accuracy adjustment
US7899661B2 (en) 2006-02-16 2011-03-01 Synopsys, Inc. Run-time switching for simulation with dynamic run-time accuracy adjustment
GB2440037A (en) * 2006-07-06 2008-01-16 Imperas Ltd Method of simulating a multi-processor system in which all the system code is translated into native code at runtime using two different dictionaries.
US9317636B1 (en) * 2006-12-11 2016-04-19 Synopsys, Inc. System and method for stopping integrated circuit simulation
US8423959B1 (en) * 2006-12-11 2013-04-16 Synopsys, Inc. Techniques for coordinating and controlling debuggers in a simulation environment
US8397220B1 (en) 2007-02-12 2013-03-12 Synopsys, Inc. Simulation control techniques
US20090055155A1 (en) * 2007-08-20 2009-02-26 Russell Klein Simulating execution of software programs in electronic circuit designs
CA3184014A1 (en) * 2008-12-15 2010-07-08 Exegy Incorporated Method and apparatus for high-speed processing of financial market depth data
WO2014046642A1 (en) * 2012-09-18 2014-03-27 Siemens Aktiengesellschaft Multiple programmable logic controller simulator
US11042681B1 (en) * 2017-03-24 2021-06-22 Ansys, Inc. Integrated circuit composite test generation
US20220253583A1 (en) * 2021-02-10 2022-08-11 Synopsys, Inc. Message passing multi processor network for simulation vector processing

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05205005A (ja) * 1990-03-30 1993-08-13 Internatl Business Mach Corp <Ibm> ロジック・シミュレーション・マシン用ホスト・インタフェース
US5784631A (en) * 1992-06-30 1998-07-21 Discovision Associates Huffman decoder
US5758176A (en) * 1994-09-28 1998-05-26 International Business Machines Corporation Method and system for providing a single-instruction, multiple-data execution unit for performing single-instruction, multiple-data operations within a superscalar data processing system

Also Published As

Publication number Publication date
KR19980032143A (ko) 1998-07-25
JPH10228393A (ja) 1998-08-25
KR100257516B1 (ko) 2000-06-01
TW364087B (en) 1999-07-11
US6014512A (en) 2000-01-11

Similar Documents

Publication Publication Date Title
JP4564110B2 (ja) 二重プロセッサ回路の動作をシミュレーションするためのコンピュータ実行方法及び信号プロセッサシミュレータ
US8725485B2 (en) Simulation method and simulation apparatus
US9552448B2 (en) Method and apparatus for electronic system model generation
EP0528585B1 (en) Data processing system with internal instruction cache
JP4667206B2 (ja) マルチコアモデルシミュレーションプログラム、該プログラムを記録した記録媒体、マルチコアモデルシミュレータ、およびマルチコアモデルシミュレーション方法
US6571204B1 (en) Bus modeling language generator
US8762779B2 (en) Multi-core processor with external instruction execution rate heartbeat
US20120029900A1 (en) Simulation method and system for simulating a multi-core hardware platform
JP2008140405A (ja) 電子回路と制御プログラムとのコバリデーション方法
JP2008282308A (ja) 協調検証装置、協調検証方法、協調検証プログラム
US20050144436A1 (en) Multitasking system level platform for HW/SW co-verification
US20050055190A1 (en) Circuit operation verification device and method
JP3953243B2 (ja) システム分析のためにバス・アービトレーション制御を使用する同期方法及び装置
EP1195718A2 (en) Parallel pipelined image rendering system
JP2005141532A (ja) システムデバッグ装置
JP5789832B2 (ja) 集積回路装置、検証装置及び検証方法
JP2004021907A (ja) 性能評価用シミュレーションシステム
JP2007052783A (ja) データ処理装置のシミュレーション
US6957370B2 (en) Digital signal processor including an interface therein capable of allowing direct access to registers from an external device
JP3085730B2 (ja) 複合cpuシステムの並列シミュレーション方式
JPH10187484A (ja) シミュレータ
TWI470421B (zh) 微處理器及其除錯方法
JP2520158B2 (ja) ディジタルシグナルプロセッサのデバッグ方式
Harris et al. Executing an RTOS on Simulated Hardware using Co-verification
Briday et al. Modelisation of a distributed hardware system for accurate simulation of real-time applications

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040604

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050405

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050704

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060404

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060703

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060706

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061002

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070508

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070905

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20070911

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20080314

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100507

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100512

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100608

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: 20100730

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

Free format text: PAYMENT UNTIL: 20130806

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees