JP4717492B2 - マルチコアモデルシミュレータ - Google Patents

マルチコアモデルシミュレータ Download PDF

Info

Publication number
JP4717492B2
JP4717492B2 JP2005114775A JP2005114775A JP4717492B2 JP 4717492 B2 JP4717492 B2 JP 4717492B2 JP 2005114775 A JP2005114775 A JP 2005114775A JP 2005114775 A JP2005114775 A JP 2005114775A JP 4717492 B2 JP4717492 B2 JP 4717492B2
Authority
JP
Japan
Prior art keywords
thread
processor core
core model
models
model
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
JP2005114775A
Other languages
English (en)
Other versions
JP2006293759A (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 Ltd
Original Assignee
Fujitsu 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 Ltd filed Critical Fujitsu Ltd
Priority to JP2005114775A priority Critical patent/JP4717492B2/ja
Priority to US11/235,227 priority patent/US7873507B2/en
Publication of JP2006293759A publication Critical patent/JP2006293759A/ja
Application granted granted Critical
Publication of JP4717492B2 publication Critical patent/JP4717492B2/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/261Functional testing by simulating additional hardware, e.g. fault simulation
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation

Description

本発明は、マルチコアモデルシミュレータに関する。
近年、パーソナルコンピュータ用の汎用CPU(中央処理装置)と同様に、組み込み型プロセッサにおいてもCPUはマルチコア化へシフトしている。また、ますます複雑化するシステムLSIの開発期間の短縮のために、設計の早い段階からハードウエアとソフトウエアの協調設計を行うことが重要である。しかし、既存のシミュレータではマルチコア対応ができていないことに加え十分なシミュレーション速度が得られていない。高速なソフトウエア/ハードウエア協調シミュレータの開発が課題となっている。
図2は、従来方式のシミュレータのメインスレッド(プライマリスレッド)201を示す図である。メインスレッド201は、プロセッサコアモデルPE0の処理202及びプロセッサコアモデルPE1の処理203をループ形式で実行する。その結果、図1に示すように、1つのメインスレッド201が実行される。なお、図1において、太枠が1スレッドを示す。メインスレッド201は、プロセッサコアモデルPE0の処理及びプロセッサコアモデルPE1の処理が交互に行われる。このシミュレータは、2つのプロセッサコアモデルPE0及びPE1をシミュレーションするものであるが、1つのプロセッサコアのみでシミュレーションするため、2つのプロセッサコアモデルPE0及びPE1の処理を交互に行う。
命令レベルシミュレータ(ISS:Instruction Set Simulator)でマルチコア等のマルチマスターをシミュレーションすると、1コアのシミュレーション時間に比べて、コアの個数倍のシミュレーション時間の長期化を招く。例えば、N個のマルチコア構成のプロセッサをシミュレーションする場合、個々のプロセッサで実行するプログラムが同じものであると仮定する。そのプログラムを1コアが実行する時間をH秒とすると、シミュレータのシミュレーション時間はN個のプロセッサ分なのでN×H秒となる。このときの1コアの処理性能がZ[MIPS:Mega Instructions/Second]とすると、このマルチプロセッサシミュレータの処理性能は、Z/(N×H)となり、シミュレーション時間はN×H秒を要してしまう。
また、下記の特許文献1には、組み込みシステムのハードウエア構成を模擬するシミュレータをコンピュータ上に構築し、シミュレータを用いて組み込みシステムのソフトウエアの検証を行うテスト方法及びテストシステムが記載されている。
また、下記の特許文献2には、他のマルチプロセッシング・システムの仮想メモリ・アドレス指定を使用してエミュレートするときに、あるマルチプロセッシング・システムのメモリ・アドレス指定を効果的にマッピングすることができる方法及び構造が記載されている。
特開2001−318805号公報 特開2004−110812号公報
現在、シミュレータは、LSI設計で期待値生成等の論理検証に使われたり、それと同時進行でアプリケーション等のプログラム開発に使われている。また、エンドユーザのプログラム開発用シミュレータとして使われている。シミュレーション速度の速いシミュレータは、開発期間の短縮に大きく貢献するため、高速なシミュレータが必要とされている。
本発明の目的は、高速なマルチコアモデルシミュレータを実現することである。
本発明の一観点によれば、数のスレッドを実行するための複数のプロセッサコアモデルと、前記複数のプロセッサコアモデルを択一的にデバッグするためのデバッガとを有し、前記複数のプロセッサコアモデルは、それぞれが1つのスレッドを実行するためのものであり、前記スレッドの所定の実行命令数毎に相互に同期がとられ、前記同期は、前記複数のプロセッサコアモデルにより前記所定の実行命令数の命令が実行された後に設定される待ち状態に設定された後にとられるマルチコアモデルシミュレータが提供される。
本発明の他の観点によれば、数のスレッドを実行するための複数のプロセッサコアモデルと、前記複数のプロセッサコアモデルをそれぞれデバッグするための複数のデバッガとを有し、前記複数のプロセッサコアモデルは、それぞれが1つのスレッドを実行するためのものであり、前記スレッドの所定の実行命令数毎に相互に同期がとられ、前記同期は、前記複数のプロセッサコアモデルにより前記所定の実行命令数の命令が実行された後に設定される待ち状態に設定された後にとられるマルチコアモデルシミュレータが提供される。
複数のスレッドを複数のプロセッサコアモデルが実行することにより、高速なマルチコアモデルシミュレータを実現することができる。
(第1の実施形態)
図9は、本発明の第1の実施形態によるマルチプロセッサコアモデルシミュレータ900のハードウエア構成例を示すブロック図である。シミュレータ900は、例えば2つのプロセッサ(CPU)コア901,902、メモリ903及びチップセット904を有する。本実施形態のシミュレータ900は、マルチプロセッサコア901,902のコンピュータ(例えばインテルCPUのXEONの2プロセッサ構成のコンピュータ等)を使用する。なお、ペンティアム(登録商標)4のように1プロセッサでも論理的に2プロセッサ構成であるコンピュータも含む。
図10は、本実施形態によるマルチプロセッサコアモデルを説明するための図である。マルチプロセッサコアモデルは、図9のハードウエア構成により実現される。プロセッサコアモデルPE0及びPE1は、図9のプロセッサコア901及び902に対応する。ただし、プロセッサコアモデルPE0及びPE1がそれぞれプロセッサコア901及び902のいずれに割り当てられるかはコンピュータアーキテクチャに依存し、スレッド単位で決定される。メモリモデル1003は、図9のメモリ903に対応し、コンピュータプログラム(命令コード)1004を記憶する。コンピュータプログラム1004は、複数のスレッドを有する。ここで、スレッドは、プログラム(ソフトウエア)の実行単位である。プロセッサコアモデルPE0及びPE1は、セレクタ1005の排他制御により、いずれかがメモリモデル1003にアクセス可能であり、メモリモデル1003からプログラム1004内の所定のスレッドを読み出して実行することができる。
図3は、本発明の第1の実施形態によるマルチプロセッサコアモデルシミュレータのメインスレッド301の例を示す図である。メインスレッド301は、スレッド102及び103を生成するためのスレッド生成関数、及びスレッド102及び103の終了を待つスレッド待ち関数を有する。図1及び図3に示すように、スレッド102はプロセッサコアモデルPE0であり、プロセッサコアモデルPE0により実行されるスレッドであり、スレッド103はプロセッサコアモデルPE1であり、プロセッサコアモデルPE1により実行されるスレッドである。なお、図1において、太枠が1スレッドを示す。プロセッサコアモデルPE0が実行するスレッドは1つのスレッド102であり、プロセッサコアモデルPE1が実行するスレッドは1つのスレッド103である。複数のプロセッサコアモデルPE0及びPE1は、複数のスレッド102及び103を並列に実行する。これにより、シミュレータのシミュレーション時間を高速化することができる。
例えば、個々のプロセッサコアモデルPE0及びPE1上で実行するプログラムが同じものであったとした場合、このときの1プロセッサコアモデルの処理性能がZ[MIPS]とする。そのプログラムを1プロセッサコアモデルが実行する時間をH秒とすると、N個のプロセッサコアモデルは並列実行するため、1プロセッサコアモデル分の処理時間H秒で全処理を終えることができる。このマルチプロセッサコアモデルシミュレータの処理性能は、Z×Hとなる。本実施形態は、シミュレーション実行環境が図9に示すようにマルチプロセッサコア901,902のコンピュータ(例えば、インテルのXeonの2CPU以上)で有効である。本実施形態によれば、1スレッドを1つのプロセッサコアモデルが実行するため並列に高速実行が可能となる。
プロセッサコアモデルPE0及びPE1は、スレッド102及び103の所定の実行命令数(ランステップ数)I1毎に相互に同期SNCがとられる。なお、同期SNCは、所定のサイクル数毎にとるようにしてもよい。
次に、プロセッサコアモデルPE0及びPE1間で同期をとる理由を説明する。実際の1チップで構成されるマルチプロセッサコア901,902は、同じクロックか定数倍のクロックで同期している。あるタイミングでプロセッサコア901及び902間に割り込みがあると、その実行中のプログラムのどこで割り込みが入ったかにより処理も異なる。マルチプロセッサコアモデルとしては、正しく時間軸や命令ステップ数を実現できなければプロセッサコアモデルPE0,PE1上で実行されるユーザプログラムのデバッグもできないことになる。また、サイクル数がカウントできなければ精度のよいシミュレーションはできない。よって、マルチプロセッサコアモデルにとって、プロセッサコア間又はマスター及びスレーブ間の同期は大変重要な技術である。そもそも、一般的にマルチスレッドプログラムはスレッド間では同期しない。つまり、非同期なのである。上述のようにスレッド間はもともと非同期であるが、図5のバリアというアルゴリズムを使って同期する仕組みを利用する。これを使うことで、プロセッサコアモデルPE0及びPE1間あるいはハードウエアモデルHW(図6)間で同期をとることが可能になる。この同期により、本シミュレータは、プロセッサコアモデル間の割り込み、外部割り込み、プロセッサコアモデル間や各ブロック間の命令レベルの同期あるいはサイクル同期を可能にする。
図9において、例えば、メインスレッド301はプロセッサコア901により実行され、プロセッサコアモデルPE0のスレッド102はプロセッサコア902により実行され、プロセッサコアモデルPE1のスレッド103はプロセッサコア901により実行される。すなわち、プロセッサコアモデルPE0はプロセッサコア902に割り当てられ、プロセッサコアモデルPE1はプロセッサコア901に割り当てられる。この割り当て方法は、制限されず、任意の割り当てでよい。
図5は、プロセッサコアモデルPE0及びPE1の同期方法を説明するための図である。本実施形態では、バリアのアルゴリズムにより同期処理を行う。メインスレッド301が実行されると、タイミングt1において、メインスレッド301は、プロセッサコアモデルPE0のスレッド102及びプロセッサコアモデルPE1のスレッド103を生成し、スリープ状態になる。
次に、プロセッサコアモデルPE0はスレッド102の所定実行命令数I1の命令を実行し、プロセッサコアモデルPE1はスレッド103の所定実行命令数I1の命令を実行する。タイミングt2において、例えば、プロセッサコアモデルPE0は、先に実行を終了すると、待ち関数501により待ち状態となる。次に、タイミングt3において、プロセッサコアモデルPE1は、実行を終了すると、待ち関数501により待ち状態となる。
プロセッサコアモデルPE0及びPE1が実行を終了すると、タイミングt4において、待ち関数501は、プロセッサコアモデルPE0及びPE1の同期をとって、両者を待ち状態から目覚めさせる。プロセッサコアモデルPE0はスレッド102の続く所定実行命令数I1の命令を実行し、プロセッサコアモデルPE1はスレッド103の続く所定実行命令数I1の命令を実行する。
次に、例えば、プロセッサコアモデルPE1は、先に実行を終了すると、待ち関数501により待ち状態となる。次に、タイミングt6において、プロセッサコアモデルPE0は、実行を終了すると、待ち関数501により待ち状態となる。
プロセッサコアモデルPE0及びPE1が実行を終了すると、タイミングt7において、待ち関数501は、プロセッサコアモデルPE0及びPE1の同期をとって、両者を待ち状態から目覚めさせる。プロセッサコアモデルPE0はスレッド102の続く命令を実行し、プロセッサコアモデルPE1はスレッド103の続く命令を実行する。
次に、タイミングt8において、プロセッサコアモデルPE0及びPE1がすべての命令の実行を終了すると、メインスレッド301はスリープ状態から目覚め、メインスレッド301の処理に戻る。
以上のように、プロセッサコアモデルPE0又はPE1のどちらかが先に所定の実行命令数の処理を済ませると、待ち状態に入り、もう片方のプロセッサコアモデルPE0又はPE1がそれを開放する仕組みになっている。これにより、3つ以上のプロセッサコアモデルの場合でも、同様の動作により同期がとれることになる。トレースをとると完全にプロセッサコアモデルPE0及びPE1が並列動作する。この同期の仕組みにより、所定の実行命令数毎に同期する仕組みを実現することができる。
(第2の実施形態)
図4は、本発明の第2の実施形態によるマルチプロセッサコアモデルシミュレータのメインスレッド401の例を示す図である。メインスレッド401は、スレッド群104及び105の各スレッドを生成するためのスレッド生成関数、及びスレッド群104及び105の各スレッドの終了を待つスレッド待ち関数を有し、それらの関数をループ処理する。図1及び図4に示すように、スレッド群104は、プロセッサコアモデルPE0により実行されるスレッドであり、所定の実行命令数I1毎に分割されたスレッド104a,104b,104c,・・・を有する。スレッド群105は、プロセッサコアモデルPE1により実行されるスレッドであり、所定の実行命令数I1毎に分割されたスレッド105a,105b,105c,・・・を有する。なお、図1において、太枠が1スレッドを示す。プロセッサコアモデルPE0及びPE1は、それぞれがスレッド群104及び105の複数のスレッドをシリアル(直列)に実行する。スレッド105a,105b,105c,・・・は、所定のサイクル数毎に分割されたものでもよい。
メインスレッド401は1回目のループ処理でスレッド104a及び105aを生成し、プロセッサコアモデルPE0がスレッド104aを実行し、プロセッサコアモデルPE1がスレッド105aを実行する。スレッド104a及び105aは並列実行され、両者の実行が終了すると、メインスレッド401の処理に戻る。このメインスレッド401の処理により、上記の並列実行するスレッドの処理が終了すると同期SNCがとられる。
次に、メインスレッド401は2回目のループ処理でスレッド104b及び105bを生成し、プロセッサコアモデルPE0がスレッド104bを実行し、プロセッサコアモデルPE1がスレッド105bを実行する。スレッド104b及び105bは並列実行され、両者の実行が終了すると、メインスレッド401の処理に戻り、同期SNCがとられる。
次に、メインスレッド401は3回目のループ処理でスレッド104c及び105cを生成し、プロセッサコアモデルPE0がスレッド104cを実行し、プロセッサコアモデルPE1がスレッド105cを実行する。スレッド104c及び105cは並列実行され、両者の実行が終了すると、メインスレッド401の処理に戻り、同期SNCがとられる。
以下、同様の処理を繰り返し、スレッド群104及び105の最後まで処理が行われると、メインスレッド401のループ処理は終了する。以上のように、プロセッサコアモデルPE0はスレッド群104を実行し、プロセッサコアモデルPE1はスレッド群105を実行する。複数のプロセッサコアモデルPE0及びPE1は、複数のスレッド群104及び105を並列に実行する。これにより、シミュレータのシミュレーション時間を高速化することができる。本実施形態は、第1の実施形態と同様に、N個のプロセッサコアモデルが並列実行するため、1プロセッサコアモデル分の処理時間H秒で全処理を終えることができる。このマルチプロセッサコアシミュレータの処理性能は、Z×Hとなる。
以上のように、本実施形態は、各プロセッサコアモデルPE0,PE1の中で所定の実行命令数I1毎にスレッド化し、その所定の実行命令数I1毎にプロセッサコアモデルPE0及びPE1間で同期をとる。複数のマルチプロセッサコアモデルPE0及びPE1は、並列実行するスレッド毎にメインスレッド401で同期がとられる。メインスレッド401は、各プロセッサコアモデルPE0及びPE1のスレッドを生成する。この生成単位は、各プロセッサコアモデルPE0及びPE1の所定の実行命令数I1の命令の塊である。この単位でシリアルに実行することにより、メインスレッド401内で同期することが可能である。所定の実行命令数I1は、パラメータであるため1以上であればよい。このような同期を採用した場合はプログラムのデバッグが容易という利点をもつ。
(第3の実施形態)
図6は、本発明の第3の実施形態によるマルチコアモデルシミュレータを説明するための図である。本実施形態は、第2の実施形態(図1)と同様に、プロセッサコアモデルPE0がスレッド群104を実行し、プロセッサコアモデルPE1がスレッド群105を実行し、さらにハードウエアコアモデルHWがスレッド群601を実行する。スレッド群104、105及び601は、並列に実行される。同期方法は、第2の実施形態と同じである。ハードウエアコアモデルHWは、ハードウエアコアをシミュレーションするためにプロセッサコアに割り当てられるモデルである。例えば、図9では、プロセッサコア901及び902の他にもう1つのプロセッサコアが設けられる。ハードウエアコアモデルHWは、プロセッサコアモデル以外のコアモデルであり、例えば、画像処理、音声処理、リコンフィギュレーション(再構成)処理、タイマ又はバスブロック等のハードウエアコアをシミュレーションするためのモデルである。
本実施形態は、プロセッサコアモデル以外にマスターになるハードウエアコアモデルHWを有するSoC(System-on-Chip)のシミュレータ例を示し、所定の実行命令数I1毎に同期SNCをとることでマルチプロセッサコアモデル及びSoCの動作モデルを実現できる。
以上のように、第1〜第3の実施形態によれば、複数のスレッドを実行する複数のコアモデルを有するマルチコアモデルシミュレータが提供される。第1及び第2の実施形態では、その複数のコアモデルは、複数のプロセッサコアモデルである。また、本実施形態では、その複数のコアモデルは、プロセッサコアモデル及びハードウエアコアモデルの両方を含むものである。また、その複数のコアモデルは、複数のハードウエアコアモデルでもよい。
なお、本実施形態は、第2の実施形態にハードウエアコアモデルHWを適用する例を説明したが、同様に、第1の実施形態にハードウエアコアモデルHWを適用することもできる。
(第4の実施形態)
図7は、本発明の第4の実施形態によるデバッガ701を有するマルチプロセッサコアモデルシミュレータの構成例を示すブロック図である。本実施形態は、第1の実施形態のマルチプロセッサコアモデルシミュレータにデバッガ701を追加したものであり、N個のプロセッサコアモデルPE0〜PENを有する。マルチプロセッサコアモデルシミュレータは、第1の実施形態と同様に、メインスレッド301、プロセッサコアモデルPE0のスレッド102、プロセッサコアモデルPE1のスレッド103、・・・、プロセッサコアモデルPENのスレッド700を有し、さらにデバッガ701を有する。デバッガ701は、メインスレッド301に対してTCP(Transmission Control Protocol)702により接続され、メインスレッド301を介してN個のプロセッサコアモデルPE0〜PENを択一的に選択してデバッグすることができる。
デバッグは、コンピュータプログラムの誤り(バグ)を探して取り除く処理である。デバッガ701は、バグを発見したり修正する作業を支援するソフトウエア(コンピュータプログラム)であり、例えば各プロセッサコアモデルPE0〜PENの任意の実行命令で停止させたり、命令単位で実行を停止させたりし、その内部状態をモニタすることができる。
なお、本実施形態のデバッガ701は、第1の実施形態の他、第2及び第3の実施形態に適用することができる。
(第5の実施形態)
図8は、本発明の第5の実施形態によるマルチデバッガ801を有するマルチプロセッサコアモデルシミュレータの構成例を示すブロック図である。本実施形態は、第1の実施形態のマルチプロセッサコアモデルシミュレータにマルチデバッガ801を追加したものであり、N個のプロセッサコアモデルPE0〜PENを有する。マルチプロセッサコアモデルシミュレータは、第1の実施形態と同様に、メインスレッド301、プロセッサコアモデルPE0のスレッド102、プロセッサコアモデルPE1のスレッド103、・・・、プロセッサコアモデルPENのスレッド700を有し、さらにマルチデバッガ801を有する。マルチデバッガ801は、N個のプロセッサコアモデルPE0〜PENをそれぞれデバッグするためのN個のデバッガ801a,801b,・・・,801nを有する。N個のデバッガ801a,801b,・・・,801nは、それぞれ、TCP接続802を介して、N個のプロセッサコアモデルPE0〜PENをデバッグすることができる。
なお、本実施形態のマルチデバッガ801は、第1の実施形態の他、第2及び第3の実施形態に適用することができる。
以上のように、第1〜第5の実施形態では、マルチスレッド化されたマルチコアモデルシミュレータを実現することができる。現在までコンピュータ(計算機)環境はシングルプロセッサが主でその上で実行するマルチプロセッサコアモデルのシミュレータはシングルスレッドであり、マルチスレッド化されたマルチコアモデルシミュレータは開発が困難なことから開発されてこなかった。第1〜第5の実施形態は、開発を容易にする同期制御方式を採用しているため、マルチスレッド(並列プログラミング)化されたマルチコアモデルシミュレータ(SoCシミュレータを含む)を実現することができる。近い将来、エンドユーザにおいてもマルチプロセッサパーソナルコンピュータ環境が普通に使える状況となるため、上記実施形態の優位性は高い。
上記実施形態は、組み込み型マルチプロセッサをシミュレーションすることができる高速シミュレータである。本シミュレータは、1コアを1スレッドという単位で動作させるという基本原理によってマルチプロセッサの高速シミュレートが可能である。ただし、本シミュレータの性能を出すにはマルチスレッドが実行できるマルチCPUのコンピュータ環境を利用しなければならない。並列で実行できるスレッド数がマルチプロセッサモデルのCPU数以上という条件であれば高速実行が可能である。
コアモデル間は同期しなければならない。1コアモデルが1スレッドを実行する場合、コアモデルのスレッド間で同期をとる必要がある。第1の実施形態では、スレッド化されたコアモデル間をバリアモデルを利用して同期をとる。第2の実施形態では、コアモデル間の同期をメインスレッドでコントロールする。
プロセッサ及びSoCのコアモデルシミュレータ実現において同期が問題になる。上記実施形態では、プロセッサコアモデル及びハードウエアコアモデル等のマスターブロック及び/又はスレーブブロック間の同期の仕組みとそれを用いたモデルの高速シミュレーションを提供する。これにより、シミュレータ上でマルチプログラミングも可能となり、マルチプロセッサ及びSoCを採用するマルチコア及びマルチマスター・スレーブのシミュレータを実現することができる。
マルチプロセッサあるいはSoCモデルを従来方式のシングルスレッドのプログラムで実行すると、コアモデル数あるいはマスターとなるハードウエアコアモデル数の合計の処理をシリアルにつなげた処理時間を必要とする。上記実施形態により、コアモデル及びハードウエアコアモデルを並列化することによりこれらの個数に依存しない処理性能を実現することができる。このとき並列プログラムでは同期の仕組みが大変難しいが、第2の実施形態では同期の仕組みをメインスレッドにおいてコード化することでコードにより同期を取ることを可能にした。これにより、コアモデル上で走るプログラムのデバッグに対して同期をとることも可能である。各コアモデルが並列実行するため処理速度はコアモデル数倍となり、従来に比べコアモデル数倍の性能で実行できる。
本シミュレータは、高速実行が可能であることからアーキテクチャ仕様検討、期待値生成等の論理検証、ファーム開発等の用途があり、システムLSI開発期間の短縮に大きな貢献になる。また、本シミュレータは、マルチプロセッサを含むシステムLSIのシミュレーションに適用できる。
本実施形態は、コンピュータがプログラムを実行することによって実現することができる。また、プログラムをコンピュータに供給するための手段、例えばかかるプログラムを記録したCD−ROM等のコンピュータ読み取り可能な記録媒体又はかかるプログラムを伝送するインターネット等の伝送媒体も本発明の実施形態として適用することができる。また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体及びコンピュータプログラムプロダクトは、本発明の範疇に含まれる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明の実施形態は、例えば以下のように種々の適用が可能である。
(付記1)
複数のスレッドと、
前記複数のスレッドを実行する複数のコアモデルと
を有するマルチコアモデルシミュレータ。
(付記2)
前記複数のコアモデルは、複数のプロセッサコアモデルである付記1記載のマルチコアモデルシミュレータ。
(付記3)
前記複数のコアモデルは、複数のハードウエアコアモデルである付記1記載のマルチコアモデルシミュレータ。
(付記4)
前記複数のコアモデルは、プロセッサコアモデル及びハードウエアコアモデルを含む付記1記載のマルチコアモデルシミュレータ。
(付記5)
さらに、論理的に複数のプロセッサコアを有し、
前記複数のプロセッサコアモデルは、それぞれが複数のプロセッサコアに割り当てられる付記2記載のマルチコアモデルシミュレータ。
(付記6)
前記複数のプロセッサコアモデルは、前記複数のスレッドを並列に実行する付記2記載のマルチコアモデルシミュレータ。
(付記7)
前記複数のプロセッサコアモデルは、それぞれが1つのスレッドを実行する付記2記載のマルチコアモデルシミュレータ。
(付記8)
前記複数のプロセッサコアモデルは、相互に同期がとられる付記7記載のマルチコアモデルシミュレータ。
(付記9)
前記複数のプロセッサコアモデルは、前記スレッドの所定の実行命令数毎に同期がとられる付記8記載のマルチコアモデルシミュレータ。
(付記10)
前記複数のプロセッサコアモデルは、所定のサイクル数毎に同期がとられる付記8記載のマルチコアモデルシミュレータ。
(付記11)
さらに、前記複数のプロセッサコアモデルを択一的にデバッグするためのデバッガを有する付記7記載のマルチコアモデルシミュレータ。
(付記12)
さらに、前記複数のプロセッサコアモデルをそれぞれデバッグするための複数のデバッガを有する付記7記載のマルチコアモデルシミュレータ。
(付記13)
前記複数のプロセッサコアモデルは、それぞれが複数のスレッドをシリアルに実行する付記2記載のマルチコアモデルシミュレータ。
(付記14)
前記各プロセッサコアモデルがシリアルに実行する複数のスレッドは、所定の実行命令数毎又はサイクル数毎に分割されたものである付記13記載のマルチコアモデルシミュレータ。
(付記15)
さらに、前記複数のプロセッサコアモデルが実行する複数のスレッドを生成し、前記複数のプロセッサコアモデルが並列に実行するスレッド毎に同期をとるメインスレッドを有する付記13記載のマルチコアモデルシミュレータ。
(付記16)
さらに、前記複数のプロセッサコアモデルを択一的にデバッグするためのデバッガを有する付記13記載のマルチコアモデルシミュレータ。
(付記17)
さらに、前記複数のプロセッサコアモデルをそれぞれデバッグするための複数のデバッガを有する付記13記載のマルチコアモデルシミュレータ。
本発明の第1及び第2の実施形態によるマルチプロセッサコアモデルシミュレータの動作を説明するためのタイムチャートである。 従来方式のシミュレータのメインスレッドを示す図である。 本発明の第1の実施形態によるマルチプロセッサコアモデルシミュレータのメインスレッドの例を示す図である。 本発明の第2の実施形態によるマルチプロセッサコアモデルシミュレータのメインスレッドの例を示す図である。 プロセッサコアモデルPE0及びPE1の同期方法を説明するための図である。 本発明の第3の実施形態によるマルチコアモデルシミュレータを説明するための図である。 本発明の第4の実施形態によるデバッガを有するマルチプロセッサコアモデルシミュレータの構成例を示すブロック図である。 本発明の第5の実施形態によるマルチデバッガを有するマルチプロセッサコアモデルシミュレータの構成例を示すブロック図である。 本発明の第1の実施形態によるマルチプロセッサコアモデルシミュレータのハードウエア構成例を示すブロック図である。 本発明の第1の実施形態によるマルチプロセッサコアモデルを説明するための図である。
符号の説明
102,103 スレッド
104,105,601 スレッド群
201,301,401 メインスレッド
501 待ち関数
701 デバッガ
702,802 TCP
801 マルチデバッガ
900 シミュレータ
901,902 プロセッサコア
903 メモリ
904 チップセット
1003 メモリモデル
1004 プログラム
1005 セレクタ

Claims (5)

  1. 数のスレッドを実行するための複数のプロセッサコアモデルと、
    前記複数のプロセッサコアモデルを択一的にデバッグするためのデバッガとを有し、
    前記複数のプロセッサコアモデルは、それぞれが1つのスレッドを実行するためのものであり、前記スレッドの所定の実行命令数毎に相互に同期がとられ、前記同期は、前記複数のプロセッサコアモデルにより前記所定の実行命令数の命令が実行された後に設定される待ち状態に設定された後にとられるマルチコアモデルシミュレータ。
  2. 数のスレッドを実行するための複数のプロセッサコアモデルと、
    前記複数のプロセッサコアモデルをそれぞれデバッグするための複数のデバッガとを有し、
    前記複数のプロセッサコアモデルは、それぞれが1つのスレッドを実行するためのものであり、前記スレッドの所定の実行命令数毎に相互に同期がとられ、前記同期は、前記複数のプロセッサコアモデルにより前記所定の実行命令数の命令が実行された後に設定される待ち状態に設定された後にとられるマルチコアモデルシミュレータ。
  3. 前記複数のプロセッサコアモデルは、それぞれが複数のスレッドをシリアルに実行するためのものである請求項1又は2記載のマルチコアモデルシミュレータ。
  4. 前記各プロセッサコアモデルがシリアルに実行する複数のスレッドは、所定の実行命令数毎に分割されたものである請求項3記載のマルチコアモデルシミュレータ。
  5. 記複数のプロセッサコアモデルにより実行される複数のスレッドを生成し、前記複数のプロセッサコアモデルにより並列に実行されるスレッド毎に同期をとるためのメインスレッドが実行される請求項3記載のマルチコアモデルシミュレータ。
JP2005114775A 2005-04-12 2005-04-12 マルチコアモデルシミュレータ Expired - Fee Related JP4717492B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005114775A JP4717492B2 (ja) 2005-04-12 2005-04-12 マルチコアモデルシミュレータ
US11/235,227 US7873507B2 (en) 2005-04-12 2005-09-27 Multi-core model simulator

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005114775A JP4717492B2 (ja) 2005-04-12 2005-04-12 マルチコアモデルシミュレータ

Publications (2)

Publication Number Publication Date
JP2006293759A JP2006293759A (ja) 2006-10-26
JP4717492B2 true JP4717492B2 (ja) 2011-07-06

Family

ID=37084155

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005114775A Expired - Fee Related JP4717492B2 (ja) 2005-04-12 2005-04-12 マルチコアモデルシミュレータ

Country Status (2)

Country Link
US (1) US7873507B2 (ja)
JP (1) JP4717492B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112016006371T5 (de) 2016-03-01 2018-10-18 Mitsubishi Electric Corporation Simulationsvorrichtung

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4346587B2 (ja) * 2005-07-27 2009-10-21 富士通株式会社 システムシミュレーション方法
US7849362B2 (en) * 2005-12-09 2010-12-07 International Business Machines Corporation Method and system of coherent design verification of inter-cluster interactions
US20080184150A1 (en) * 2007-01-31 2008-07-31 Marc Minato Electronic circuit design analysis tool for multi-processor environments
US20110289373A1 (en) * 2007-01-31 2011-11-24 Klein Russell A Electornic Design Emulation Display Tool
JP5595633B2 (ja) * 2007-02-26 2014-09-24 スパンション エルエルシー シミュレーション方法及びシミュレーション装置
JP4888272B2 (ja) * 2007-07-30 2012-02-29 富士通セミコンダクター株式会社 ソフトウェアのシミュレーション方法、ソフトウェアのシミュレーションのためのプログラム、及びソフトウェアのシミュレーション装置
CN100524221C (zh) * 2007-12-28 2009-08-05 中国科学院计算技术研究所 一种并行模拟器及方法
KR101400286B1 (ko) * 2008-01-22 2014-05-26 삼성전자주식회사 다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치
US8223779B2 (en) * 2008-02-07 2012-07-17 Ciena Corporation Systems and methods for parallel multi-core control plane processing
JP5269067B2 (ja) * 2008-03-14 2013-08-21 パナソニック株式会社 プログラム実行装置およびその制御方法
US10169199B2 (en) * 2008-06-10 2019-01-01 Microsoft Technology Licensing, Llc Automatic model-specific debugger extensions
US7987075B2 (en) * 2008-06-30 2011-07-26 Hitachi, Ltd Apparatus and method to develop multi-core microcomputer-based systems
US8694293B2 (en) * 2008-06-30 2014-04-08 Toyota Technical Development Corporation Simulation support method, computer-readable storage medium storing simulation support program, and simulation support apparatus
US10721269B1 (en) 2009-11-06 2020-07-21 F5 Networks, Inc. Methods and system for returning requests with javascript for clients before passing a request to a server
US8336056B1 (en) * 2009-12-22 2012-12-18 Gadir Omar M A Multi-threaded system for data management
US9420049B1 (en) 2010-06-30 2016-08-16 F5 Networks, Inc. Client side human user indicator
US9503375B1 (en) 2010-06-30 2016-11-22 F5 Networks, Inc. Methods for managing traffic in a multi-service environment and devices thereof
US9147016B2 (en) * 2010-08-20 2015-09-29 International Business Machines Corporation Multi-ECU simulation by using 2-layer peripherals with look-ahead time
US8423343B2 (en) * 2011-01-24 2013-04-16 National Tsing Hua University High-parallelism synchronization approach for multi-core instruction-set simulation
US8879431B2 (en) 2011-05-16 2014-11-04 F5 Networks, Inc. Method for load balancing of requests' processing of diameter servers
WO2013011620A1 (ja) * 2011-07-19 2013-01-24 パナソニック株式会社 マルチプロセッサシステム
US8875146B2 (en) 2011-08-01 2014-10-28 Honeywell International Inc. Systems and methods for bounding processing times on multiple processing units
US8621473B2 (en) 2011-08-01 2013-12-31 Honeywell International Inc. Constrained rate monotonic analysis and scheduling
CN102279766B (zh) * 2011-08-30 2014-05-07 华为技术有限公司 并行模拟多个处理器的方法及系统、调度器
CN102331961B (zh) 2011-09-13 2014-02-19 华为技术有限公司 并行模拟多个处理器的方法及系统、调度器
US9015025B2 (en) * 2011-10-31 2015-04-21 International Business Machines Corporation Verifying processor-sparing functionality in a simulation environment
US8954492B1 (en) 2011-11-30 2015-02-10 F5 Networks, Inc. Methods for inlining content externally referenced in a web page prior to providing the web page to a requestor and devices thereof
CN102518298B (zh) * 2012-01-05 2014-07-30 张建怀 可屏蔽红外线的水利工程用轻质芯模
US9207977B2 (en) 2012-02-06 2015-12-08 Honeywell International Inc. Systems and methods for task grouping on multi-processors
US10230566B1 (en) 2012-02-17 2019-03-12 F5 Networks, Inc. Methods for dynamically constructing a service principal name and devices thereof
US9020912B1 (en) 2012-02-20 2015-04-28 F5 Networks, Inc. Methods for accessing data in a compressed file system and devices thereof
WO2013163648A2 (en) 2012-04-27 2013-10-31 F5 Networks, Inc. Methods for optimizing service of content requests and devices thereof
US10033837B1 (en) 2012-09-29 2018-07-24 F5 Networks, Inc. System and method for utilizing a data reducing module for dictionary compression of encoded data
US9612868B2 (en) 2012-10-31 2017-04-04 Honeywell International Inc. Systems and methods generating inter-group and intra-group execution schedules for instruction entity allocation and scheduling on multi-processors
US9578090B1 (en) 2012-11-07 2017-02-21 F5 Networks, Inc. Methods for provisioning application delivery service and devices thereof
US9497614B1 (en) 2013-02-28 2016-11-15 F5 Networks, Inc. National traffic steering device for a better control of a specific wireless/LTE network
GB201318473D0 (en) * 2013-10-18 2013-12-04 Imperas Software Ltd P7
US10187317B1 (en) 2013-11-15 2019-01-22 F5 Networks, Inc. Methods for traffic rate control and devices thereof
US9310433B2 (en) 2014-04-18 2016-04-12 Breker Verification Systems Testing SOC with portable scenario models and at different levels
US11838851B1 (en) 2014-07-15 2023-12-05 F5, Inc. Methods for managing L7 traffic classification and devices thereof
US10365947B2 (en) 2014-07-28 2019-07-30 Hemett Packard Enterprise Development Lp Multi-core processor including a master core performing tasks involving operating system kernel-related features on behalf of slave cores
US10182013B1 (en) 2014-12-01 2019-01-15 F5 Networks, Inc. Methods for managing progressive image delivery and devices thereof
US11895138B1 (en) 2015-02-02 2024-02-06 F5, Inc. Methods for improving web scanner accuracy and devices thereof
US10834065B1 (en) 2015-03-31 2020-11-10 F5 Networks, Inc. Methods for SSL protected NTLM re-authentication and devices thereof
US11350254B1 (en) 2015-05-05 2022-05-31 F5, Inc. Methods for enforcing compliance policies and devices thereof
US10505818B1 (en) 2015-05-05 2019-12-10 F5 Networks. Inc. Methods for analyzing and load balancing based on server health and devices thereof
WO2016194028A1 (ja) * 2015-05-29 2016-12-08 三菱電機株式会社 シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム
US10038744B1 (en) * 2015-06-29 2018-07-31 EMC IP Holding Company LLC Intelligent core assignment
US11757946B1 (en) 2015-12-22 2023-09-12 F5, Inc. Methods for analyzing network traffic and enforcing network policies and devices thereof
US10404698B1 (en) 2016-01-15 2019-09-03 F5 Networks, Inc. Methods for adaptive organization of web application access points in webtops and devices thereof
US11178150B1 (en) 2016-01-20 2021-11-16 F5 Networks, Inc. Methods for enforcing access control list based on managed application and devices thereof
US10445445B2 (en) 2016-04-22 2019-10-15 Synopsys, Inc. Sliding time window control mechanism for parallel execution of multiple processor core models in a virtual platform simulation
US11063758B1 (en) 2016-11-01 2021-07-13 F5 Networks, Inc. Methods for facilitating cipher selection and devices thereof
US10505792B1 (en) 2016-11-02 2019-12-10 F5 Networks, Inc. Methods for facilitating network traffic analytics and devices thereof
US10812266B1 (en) 2017-03-17 2020-10-20 F5 Networks, Inc. Methods for managing security tokens based on security violations and devices thereof
US11042681B1 (en) * 2017-03-24 2021-06-22 Ansys, Inc. Integrated circuit composite test generation
US11122042B1 (en) 2017-05-12 2021-09-14 F5 Networks, Inc. Methods for dynamically managing user access control and devices thereof
US11343237B1 (en) 2017-05-12 2022-05-24 F5, Inc. Methods for managing a federated identity environment using security and access control data and devices thereof
CN109032879B (zh) * 2017-06-09 2021-08-20 展讯通信(上海)有限公司 多核处理器访存数据检测验证系统及方法
JP2019091144A (ja) 2017-11-13 2019-06-13 ルネサスエレクトロニクス株式会社 シミュレーション装置、シミュレーションシステム、シミュレーション方法及びシミュレーションプログラム
TW202236089A (zh) * 2020-10-22 2022-09-16 美國亞利桑那州立大學亞利桑那州評議委員會 用於異質soc設計之使用者空間仿真框架

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08287025A (ja) * 1995-04-14 1996-11-01 Fujitsu Ltd マルチプロセッサシステムの同期制御方法及びそれを用いたマルチプロセッサシステム
JPH11296409A (ja) * 1998-04-09 1999-10-29 Hitachi Ltd 性能シミュレーション方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001318805A (ja) 2000-05-08 2001-11-16 Nec Corp 組み込みシステムのテスト方法及びテストシステム
US6718294B1 (en) * 2000-05-16 2004-04-06 Mindspeed Technologies, Inc. System and method for synchronized control of system simulators with multiple processor cores
US7953588B2 (en) 2002-09-17 2011-05-31 International Business Machines Corporation Method and system for efficient emulation of multiprocessor address translation on a multiprocessor host
US7430737B2 (en) * 2003-12-04 2008-09-30 Sun Microsystems, Inc. Processor and method for supporting compiler directed multithreading management

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08287025A (ja) * 1995-04-14 1996-11-01 Fujitsu Ltd マルチプロセッサシステムの同期制御方法及びそれを用いたマルチプロセッサシステム
JPH11296409A (ja) * 1998-04-09 1999-10-29 Hitachi Ltd 性能シミュレーション方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112016006371T5 (de) 2016-03-01 2018-10-18 Mitsubishi Electric Corporation Simulationsvorrichtung

Also Published As

Publication number Publication date
US7873507B2 (en) 2011-01-18
JP2006293759A (ja) 2006-10-26
US20060229861A1 (en) 2006-10-12

Similar Documents

Publication Publication Date Title
JP4717492B2 (ja) マルチコアモデルシミュレータ
Lickly et al. Predictable programming on a precision timed architecture
JP5595633B2 (ja) シミュレーション方法及びシミュレーション装置
Ventroux et al. A new parallel SystemC kernel leveraging manycore architectures
Ceng et al. A high-level virtual platform for early MPSoC software development
Liang et al. Verification of tree-based hierarchical read-copy update in the Linux kernel
Duller et al. Picoarray technology: The tool's story
Ludden et al. Advances in simultaneous multithreading testcase generation methods
Engblom et al. Full-system simulation from embedded to high-performance systems
Murillo et al. Automatic detection of concurrency bugs through event ordering constraints
Schumacher et al. SCandal: SystemC analysis for nondeterminism anomalies
US20110197182A1 (en) Debugging parallel software using speculatively executed code sequences in a multiple core environment
Wu et al. A distributed timing synchronization technique for parallel multi-core instruction-set simulation
Murillo et al. Synchronization for hybrid MPSoC full-system simulation
Roloff et al. Approximate time functional simulation of resource-aware programming concepts for heterogeneous MPSoCs
Kestor et al. Prometheus: scalable and accurate emulation of task-based applications on many-core systems
Lee et al. GPU architecture aware instruction scheduling for improving soft-error reliability
JP2005135436A (ja) 電子回路と制御プログラムとのコバリデーション方法
Heinrich et al. Hardware/software co-design of the stanford FLASH multiprocessor
Ball et al. Predictable and progressive testing of multithreaded code
Cornelis et al. The pipeline performance model: a generic executable performance model for GPUs
Huang et al. Platform-independent design for embedded real-time systems
Engblom Debugging real-time multiprocessor systems
Mahadevan et al. A reactive and cycle-true ip emulator for mpsoc exploration
Murillo et al. Deterministic event-based control of Virtual Platforms for MPSoC software debugging

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080530

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080610

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080808

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080930

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081030

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20081204

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

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20081226

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110224

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

R150 Certificate of patent or registration of utility model

Ref document number: 4717492

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140408

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees