JP6958038B2 - シミュレーションプログラム、方法、及び装置 - Google Patents

シミュレーションプログラム、方法、及び装置 Download PDF

Info

Publication number
JP6958038B2
JP6958038B2 JP2017133099A JP2017133099A JP6958038B2 JP 6958038 B2 JP6958038 B2 JP 6958038B2 JP 2017133099 A JP2017133099 A JP 2017133099A JP 2017133099 A JP2017133099 A JP 2017133099A JP 6958038 B2 JP6958038 B2 JP 6958038B2
Authority
JP
Japan
Prior art keywords
core
address
cores
simulation
resource access
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.)
Active
Application number
JP2017133099A
Other languages
English (en)
Other versions
JP2019016167A (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 JP2017133099A priority Critical patent/JP6958038B2/ja
Priority to US16/026,459 priority patent/US10908934B2/en
Publication of JP2019016167A publication Critical patent/JP2019016167A/ja
Application granted granted Critical
Publication of JP6958038B2 publication Critical patent/JP6958038B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • 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/468Specific access rights for resources, e.g. using capability register
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

複数コア構成の集積回路のシミュレーションプログラム、方法、及び装置に関する。
プロセス技術の進歩によりLSI(大規模集積回路:Large Scale Integrated circuit)の集積度が増大し、システムLSIを1チップ上に搭載することが可能になってきている。例えば、CPU(中央演算処理装置)のコアを複数個1チップ上に搭載するマルチコア(複数コア)システムが多く開発されており、1チップ内に実装されるコアの数が増大してきている。近年、性能要求を満たすために、より複雑なアーキテクチャを実現する必要があり、アーキテクチャに起因する問題が発生しやすくなっている。ここで、アーキテクチャとはLSIのハードウェア構成をいい、例えばコアおよびメモリの数やサイズ、接続トポロジーを含む。
かかるLSIの開発において、従来、ハードウェア記述によるモデルではなく、抽象化した性能モデルによる評価で決定したアーキテクチャに基づくハードウェア設計により、設計工数を削減できる技術が知られている。このとき、コア間のリソース競合のシミュレート時に、各コアのシミュレーションに基づく動作結果から、バスアクセスに関する情報が抽出され、これがコアによるリソースアクセスの動作内容として利用される(以上、例えば特許文献1、2)。
特開2014−215768号公報 特開2004−021907号公報
しかし、従来技術では、各コア個別のシミュレーションは必要であるため、コアの並列度が増えた場合に、シミュレーション時間が長くなってしまうという課題があった。
そこで、本発明の1つの側面では、複数コア構成のシミュレーションにかかる処理負荷及び速度を低減することを目的とする。
態様の一例では、複数のコアの夫々に関するリソースアクセスの動作内容に基づいて複数のコア間のリソース競合のシミュレーションを実行するシミュレーションプログラムであって、複数のコアのうちの少なくとも1つのコアに関するシミュレーションを実行して1つのコアに関するリソースアクセスの動作内容を抽出するステップと、複数のコアに対する実行処理における互いの特定の関係の下で、1つのコアによってアクセスするリソースのアドレスと複数のコアのうちの1つのコア以外の他のコアによってアクセスするリソースのアドレスとのアドレス差を、1つのコアに関するリソースアクセスの動作内容に反映させることにより、他のコアに関するリソースアクセスの動作内容を生成するステップと、をコンピュータに実行させる。
複数コア構成のシミュレーションにかかる処理負荷及び速度を低減することが可能となる。
マルチコアLSIシステムの開発工程の説明図である。 アーキテクチャの性能見積り例を示す図である。 RTLによるマルチコアLSIシステムのモデル記述の説明図である。 性能モデルによるマルチコアLSIシステムのモデル記述の説明図である。 リソースの競合の説明図である。 シミュレーションの負荷を軽くしつつリソースの競合を再現できるモデル開発手法の説明図である。 複数コアによる並列処理の説明図である。 複数コアに対するTGシミュレーションの課題の説明図である。 第1の実施形態の説明図である。 アドレス変換コピー生成部の動作説明図である。 第1の実施形態のシミュレーション装置の構成例を示すブロック図である。 第1の実施形態におけるパラメータの例を示すデータ構成図である。 第1の実施形態におけるアドレス変換コピー生成部の動作例を示すフローチャートである。 第1の実施形態におけるアドレス変換の説明図(その1)である。 第1の実施形態におけるアドレス変換の説明図(その2)である。 第2の実施形態の説明図である。 第2の実施形態のシミュレーション装置の構成例を示すブロック図である。 第2の実施形態におけるパラメータの例を示すデータ構成図である。 第2の実施形態におけるアドレス変換コピー生成部の動作例を示すフローチャートである。 第3の実施形態の説明図である。 第3の実施形態のシミュレーション装置の構成例を示すブロック図である。 各実施形態に対応するシミュレーション装置(コンピュータ)のハードウェア構成の一例を示す図である。
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。図1は、本発明の実施形態を適用することができるマルチコアLSIシステムの開発工程の説明図である。
まず、要求仕様の決定等の初期検討が行われた後(ステップS101)、ソフト開発が行われる(ステップS102)。ソフト開発では、LSIに搭載される機能に対応するアプリケーションソフトウェアが開発される。例えば、無線LSIに対しては、4G通信機能といった通信ソフトウェアが開発される。
その後の開発工程としては、モデル開発無しのケース1と、モデル開発ありのケース2が考えられる。
開発工程としてモデル開発無しのケース1が採用される場合、ステップS102でのソフトウェア開発によって開発されたソフトウェアの機能を実現できるハードウェアが、直接開発される(ステップS110)。この場合、経験に基づいてソフトウェアの機能を実現できるハードウェアのトポロジーが決定されて開発が行われる。その結果、そのハードウェアによって予定していた性能が出なければ、トポロジーの変更が必要となる。アーキテクチャが複雑になればなるほど、ハードウェア開発後に性能が未達となり、開発の出戻りが発生する(ステップS111)。
一方、開発工程としてモデル開発ありのケース2が採用される場合、ステップS102でのソフトウェア開発によってある程度アプリケーションが決まった状態で、ハードウェアを開発する前に、アーキテクチャの性能を見積もるためのモデル開発が行われる(ステップS120)。図2は、モデル開発におけるアーキテクチャの性能の見積り例を示す図である。まず、図1のステップS102のソフトウェア開発により、実施したいアプリケーション201が決定される。このアプリケーション201では、実行の開始(start)から終了(end)までの間に、条件分岐に応じて、exe1、exe2、exe3、exe4、exe5として例示されるような様々な処理が実行される。次に、このようなアプリケーション201の構造に対応して、図2の(a)、(b)、又は(c)に示されるように、トポロジーやメモリ構成を変化させた異なるアーキテクチャ案のLSIモデル202、203、204などが作成され、実行される。例えば、図2(a)のアーキテクチャ案1のLSIモデル202では、それぞれが単独のプロセッサである#0から#3の各コアと、#0から#3のSRAM(Static Random Access Memory)が、バスを介して接続される(直列接続構成)。また、図2(b)のアーキテクチャ案2のLSIモデル203では、#0及び#1のコアと#0及び#1のSRAMとがバスで接続されたグループと、#2及び#3のコアと#2及び#3のSRAMとがバスで接続されたグループが構成され、それらのグループが更にバスで接続される(並列接続構成)。更に、図2(c)のアーキテクチャ案3のLSIモデル204では、図2(a)のアーキテクチャ案1のLSIモデル202から#2及び#3のSRAMが削減され、#0及び#1のSRAMの各サイズが拡大される。このようにしていくつか開発されたLSIモデルの中から、性能の高い(処理時間の短い)アーキテクチャのLSIモデルが探索された後に、そのアーキテクチャに基づいてハードウェアが設計される(図1のステップS121)。
モデル開発において採用されるモデルの一例として、RTL(Register Transfer Level:レジスタ転送レベル)モデルが知られている。RTLでは、論理回路において、状態を持つラッチ回路など順序回路に相当する最小の部分が「レジスタ」として抽象化される。その上で、論理回路の動作が、レジスタからレジスタへの転送と、その転送中に組合せ論理回路を通すことで行われる論理演算の組み合わせとして記述される。図3は、RTLによるマルチコアLSIシステムのモデル記述の説明図である。RTLによりマルチコアLSIシステムがモデル化される場合、図3の301として示されるように、各コアの内部の論理回路を意識した記述がなされ、その論理回路によるロジックのスイッチングがシミュレートされる。
しかし、RTLはモデルの詳細化度合いが高いために、LSIシステムの複雑度が上がり、特にマルチコアで構成されるような場合には、RTLによる記述の難易度が上がり、作業工数の増加、シミュレーション時間の増大を招く。
そこで、モデル開発において採用される他のモデルの例として、性能モデルが知られている。図4は、性能モデルによるマルチコアLSIシステムのモデル記述の説明図である。性能モデルでは例えば、C++プログラミング言語のクラスライブラリとして提供されるSystemCと呼ばれるハードウェア記述言語を用いて、図4(b)の401として示されるようなプログラミング言語形式で、図4(a)のハードウェア記述が代替される。このクラスライブラリでは、ハードウェア記述のための機能、並列実行の概念や時間概念を扱う各種関数が定義されている。プログラムはC++コンパイラでコンパイルでき、それにより生成されたオブジェクトは、ハードウェアのシミュレータとして動作する。このような性能モデルは、ハードウェアのロジックを高い抽象度で記述することが可能である。そして、性能モデルを用いることにより、複雑な構成のLSIシステムの開発が可能となる。
次に、複数コアで構成されるマルチコアLSIシステムの開発工程について説明する。通常、コア単体のシミュレータは、コアに付随して存在する。そのためコア単体での性能見積りは、上述したSystemC等の性能モデルによって可能である。ここで、マルチコアLSIシステムでは、複数のコアによるリソースの競合が発生し得る。図5は、リソースの競合の説明図である。図5において、例えばコア501(#0)とコア501(#2)がバス503を介して同じSRAM502(#1)にアクセスするような場合に、リソースの競合が発生し得る。しかし、このようなリソースの競合は、上述のようなコア単体での性能見積りでは、シミュレートすることはできない。
図6は、シミュレーションの負荷を軽くしつつリソースの競合を再現できるモデル開発手法の説明図である。図6では、図5に示した#0から#3の4つのコア501と、#0から#3の4つのSRAM502を含むマルチコアLSIシステムの開発を例として説明する。以下の説明において、図5の各部を図5中の参照番号によって随時参照する。
まず、図1のステップS102によって開発されたコア501(#0)のためのアプリケーションソフトウェア601(#0)が、例えばコア501(#0)をシミュレートするコア単体のシミュレータ602(#0)で実行される。この結果、動作結果603(#0)として、どの命令がどの時刻で実行されたかを示すログ情報が取得される。
次に、動作結果603(#0)が、コア501(#0)の中で処理される情報とコア501(#0)の外にでる情報に分けられて、バス503のアクセスを伴う命令のログ情報を含む動作ファイル604(#0)として抽出される。
図6の例の場合、Add(加算)、Sub(減算)といった命令は、コア501(#0)の内部で閉じており外部へのアクセスがない。そのためAdd、Subは、それらを合わせて2命令分の待ち情報(外部アクセス無し)に置き換えられる。なお、命令毎に1命令ずつ分の待ち情報に置き換えられてもよいが、例えば1万行に達するような命令群の場合、複数の上記命令がまとめられて複数命令分の待ち情報に置き換えられることにより、情報数を100分の1程度にすることができる。
また、図6の例において、Load(ロード)命令は、コア501(#0)の外部の例えばSRAM502(#0)から読み取ってくる命令であるため、読み1回として動作ファイル604(#0)に記録される。このとき、そのロード命令のプログラムカウンタアドレス(例えば「0x0100」)と、ロードアドレス(例えば「0x8100」)が、動作結果603(#0)からコピーされる。Store(ストア)命令も同様に、コア501(#0)の外部の例えばSRAM502(#0)に書き込む命令であるため、書き1回として動作ファイル604(#0)に記録される。このとき、そのストア命令のプログラムカウンタアドレス(例えば「0x0110」)と、ロードアドレス(例えば「0x8300」)が、動作結果603(#0)からコピーされる。
この場合の動作ファイル604(#0)へのログ情報の記録方法としては、以下の2つの方法が考えられる。第1の方法は、ログ情報にはプログラムカウンタのアドレス(例えば「0x0100」)のみが記録される。そして、例えばSRAM502(#0)上の各プログラムアドレスから順次プログラムを取ってくると、そこには何をすればよいかが記述されていて、その記述の通りにバスアクセスが行われるものである。第2の方法は、ログ情報には命令に対応する動作(例えば「読み」又は「書き」)と、プログラムカウンタのアドレス(例えば「0x0100」)と、その命令がアクセスするデータのアドレス(ロードストアアドレス)(例えば「0x8100」)が記録されている。そして、その命令の実行シミュレート時には、その命令によるリード/ライトアクセスと、プログラムカウンタへのリードアクセスとが両方実行されるものである。以下の説明では、上記第2の方法を採用する。
続いて、図6において、#0から#3のコア501(図5参照)に対応させて、#0から#3のTG(Traffic Generator:トラフィックジェネレータ)605と呼ばれるシミュレータが用意される。そして、例えばTG605(#0)は、前述のように生成された動作ファイル604(#0)を読み込むことにより、図6のS1からS6として示される一連の処理を実行する。即ち、TG605(#0)は、動作ファイル604(#0)先頭から順に命令の動作を取得し(ステップS1)、その動作が「読み」又は「書き」であるか否かを判定する(ステップS2)。TG605(#0)は、その動作が「読み」又は「書き」であれば、バス503を介して例えばSRAM502(#0から#3の何れか)に対するアクセスを発生させ(ステップS3)、アクセス結果を取得する(ステップS4)。TG605(#0)は、その動作が「読み」でも「書き」でもなければ、指定されている命令分のサイクルだけ待ち状態となる(ステップS5)。TG605(#0)は、ステップS4又はS5の処理の後、ステップS1に戻って次の命令の動作を処理する。
#1から#3の各コア501(図5参照)に対しても、上記と同様のコア単体のシミュレータ602の処理に基づく、動作結果603の取得、及び動作ファイル604への変換の処理が実行される。これにより得られた#1から#3の動作ファイル604(図6では例として#0と#3のみ記載してある)は、それぞれ#1から#3のTG605によってS1からS5で示されるシミュレーションの処理が実行される。
TG605は通常、SystemCのような、時間概念があり、抽象度の高いモデルで記述される。また、#0から#3の各TG605におけるバス503に対するアクセス動作は、やはりSystemCで記述されている。そして、図6の#0から#3の各SRAM502に同時にアクセスが発生してリソースが競合した場合、どのような挙動をするかは、SystemCで予め記述されているものとする。TG605による性能モデルの詳細については、例えば特許文献1又は2に記載の技術と同様とする。
以上のようにして、コア501をTG605として抽象化して動作させることで、性能モデルの負荷を軽くしつつ、精度を下げることなく、所望の動作を実行させることができる。特に、TG605によって、ある時刻においてリソースの競合が発生した場合の挙動を表現できる。
次に、図7は複数コアによる並列処理の説明図、図8は複数コアに対するTGシミュレーションの課題の説明図である。例えば、図7のプログラムコード701として示されるように、400回に及ぶループ内部で同様の関数処理(図中「func」で示されるコード)を実行するプログラムがあったとする。これを、変数iで制御されるループ0〜99まではコア501(#0)、ループ100〜199まではコア501(#1)、ループ200〜299まではコア501(#2)、ループ300〜399まではコア501(#3)に並列に割り当てたいとする。この割当ては、人間によるソフト開発(図1のステップS102参照)の段階で決定される。
図7のケースは、動作シーケンス(プログラム)は同じだが、入力データが異なる処理を複数のコア501に並列に実行させたい場合である。図7に例示されるように、4コアであれば従来手法でもさしたる手間ではない。しかし、コア501の数が100を超えるマルチコアLSIシステムでループ数も10000を超えるような場合には、図8のように、図6の動作ファイル604の生成のための処理と同様の一連処理801をN回(例えばN=100)繰返し実行する必要が生じる。即ち、コア単体のシミュレータ602の処理がN回繰り返されるということになる。LSIの大規模化に伴いコア501の数は増大しているため、コア数に比例してシミュレーション時間が増大しては開発のボトルネックとなってしまう。
図9は、上述の課題を解決するための、第1の実施形態の説明図である。第1の実施形態では、図6の場合と同様に、図1のステップS102で開発されたコア501(#0)(図5参照)のアプリケーションソフトウェア601(#0)が、コア501(#0)をシミュレートするコア単体のシミュレータ602(#0)で実行される。この結果、命令実行のログ情報を記録した動作結果603(#0)が取得される。更に、動作結果603(#0)から、バス503からSRAM502へのアクセスを伴う命令のログ情報(リソースアクセスの動作内容)を含む動作ファイル604(#0)が抽出される。
次に、複数(図9では#0〜#3)のコア501に対する実行処理における互いの特定の関係の下で、アドレス変換コピー生成部901が動作する。この特定の関係は例えば、#0から#3のコア501のそれぞれが、同一の一連の命令群からなる繰返し処理を、同一又は異なるプログラムアドレス又はロードストアアドレスに対して実行する関係である。
上記特定の関係の下で、アドレス変換コピー生成部901は、コア501(#0)によってアクセスするリソースのアドレスと他の#1から#3のコア501によってアクセスするリソースのアドレスとのアドレス差を計算する。そして、アドレス変換コピー生成部901は、このアドレス差を、動作ファイル604(#0)に反映させることにより、他の#1から#3のコア501に関する#1から#3の動作ファイル902を生成する。なお、アドレス変換コピー生成部901は、コア501(#0)に関する動作ファイル604(#0)は、そのまま動作ファイル902(#0)として出力する。
より具体的には、アドレス変換コピー生成部901は、基準となるコア501(#0)の動作ファイル604(#0)と、他の#1から#3の各コア501に関するアドレスのオフセット及びサイズ情報を入力する。アドレス変換コピー生成部901は、基準となる動作ファイル604(#0)を読み取り、下記(1)式に基づいて、1行毎に、アドレスを変換したコピーとして、#1から#3の動作ファイル902を生成する。
新アドレス=入力アドレス+オフセット+サイズ情報×コア番号 ・・・(1)
アドレス変換コピー生成部901は、例えば100個のコア501に対応する動作ファイル902を作成する場合には、上記(1)式に対応する演算を100回実行することにより、100種類の異なる動作ファイル902を得ることができる。
図6の場合と同様の#0から#3のTG605は、アドレス変換コピー生成部901によって生成された#0から#3の動作ファイル902を読込ながら、図6と同様の図9のステップS1からS5の処理で例示されるシミュレーションを実行する。
図10は、アドレス変換コピー生成部901の動作説明図である。図10は、#0から#3の各コア501は、SRAM502上の同じロードストアアドレス領域(0x8100〜)にアクセスし、プログラムアドレスが、オフセット=0x0000、サイズ情報=0x1000である場合の例を示している。なお、図10中のアドレス表記で、「0x」はそれに続く数値のアドレスが16進数のアドレスであることを示している。以下同様である。
アドレス変換コピー生成部901は、まずコア501(#0)に関して、動作ファイル604(#0)をそのまま動作ファイル902(#0)にコピーする。
次に、アドレス変換コピー生成部901は、コア501(#1)に関して、動作ファイル604(#0)から1行ずつログ情報を読込ながら、各ログ情報のプログラムアドレス0x0100、0x0104、0x0110等を、前述の(1)式に従って変換する。いま、オフセット=0x0000、サイズ情報=0x1000、コア番号=1であるため、下記アドレス変換の演算が実行される。
0x0100+0x0000+0x1000×1=0x1100
0x0104+0x0000+0x1000×1=0x1104
0x0110+0x0000+0x1000×1=0x1110
アドレス変換コピー生成部901は、コア501(#1)に関して、上記変換後のプログラムアドレスと、動作ファイル604(#0)中の各行の動作(「読み」又は「書き」)及びロードストアアドレスが記載された動作ファイル902(#1)を出力する。なお、アドレス変換コピー生成部901は、動作ファイル604(#0)中の「命令待ち」のログ情報については、そのまま動作ファイル902(#1)に出力する。
続いて、アドレス変換コピー生成部901は、コア501(#2)に関して、コア501(#1)の場合と同様のアドレス変換動作と動作ファイル902(#2)の生成動作を実行する。この場合、オフセット=0x0000、サイズ情報=0x1000、コア番号=2であるため、下記アドレス変換の演算が実行される。
0x0100+0x0000+0x1000×2=0x2100
0x0104+0x0000+0x1000×2=0x2104
0x0110+0x0000+0x1000×2=0x2110
アドレス変換コピー生成部901は、コア501(#2)に関して、上記変換後のプログラムアドレスと、動作ファイル604(#0)中の各行の動作(「読み」又は「書き」
)及びロードストアアドレスが記載された動作ファイル902(#2)を出力する。
続いて、アドレス変換コピー生成部901は、コア501(#3)に関しても同様に、アドレス変換動作と動作ファイル902(#3)の生成動作を実行する。この場合、オフセット=0x0000、サイズ情報=0x1000、コア番号=3であるため、下記アドレス変換の演算が実行される。
0x0100+0x0000+0x1000×3=0x3100
0x0104+0x0000+0x1000×3=0x3104
0x0110+0x0000+0x1000×3=0x3110
アドレス変換コピー生成部901は、コア501(#3)に関して、上記変換後のプログラムアドレスと、動作ファイル604(#0)中の各行の動作(「読み」又は「書き」
)及びロードストアアドレスが記載された動作ファイル902(#3)を出力する。
図9及び図10の例では、コア501の数が#0から#3の4個の場合について説明したが、アドレス変換コピー生成部901が実行する前述の(1)式のアドレス変換演算は、演算量が少ない演算である。このため、各コア501に対応する動作ファイル902を生成する処理の負荷は、例えばコア501の数が100個になったとしても、各コア501間で前述した特定の関係が成立する限り、ほとんど増加しない。
図9及び図10で説明した第1の実施形態の動作により、マルチコアLSIシステムのシミュレーションにかかる処理負荷を低減し速度アップを図ることが可能となる。特にコア数の多いマルチコアLSIステムにおいて、コア単体シミュレーションにかかる時間を大幅に削減することが可能となる。
なお、前述した特定の関係は、設計対象となる複数のコア501の全部である必要はない。この場合、その特定の関係にあるコア501についてのみアドレス変換コピー生成部901が動作し、動作ファイル604(#0)から動作ファイル902が生成される。
図11は、図9及び図10の動作を実現する第1の実施形態のシミュレーション装置の構成例を示すブロック図である。対象とするマルチコアLSIシステムは、前述した図5と同様であり、以下の説明において図5の各部を図5中の参照番号によって随時参照する。また、図9及び図10の各部も各図中の参照番号によって随時参照する。第1の実施形態のシミュレーション装置は、処理部1101と、記憶部1102とから構成される。
処理部1101は、コアシミュレータ部1110と、変換部1111と、アドレス変換コピー生成部1112、及びモデルシミュレート部1113を備える。
コアシミュレータ部1110は、図9のコア単体のシミュレータ602(#0)に対応し、複数のコア501のうちの少なくとも1つのコア、例えばコア501(#0)に関するシミュレーションを実行する。
変換部1111は、コアシミュレータ部1110における上記1つのコア501、例えばコア501(#0)に関する動作結果603(#0)(図9参照)からそのコア501に関する動作ファイル604(#0)(リソースアクセスの動作内容)を抽出する。
アドレス変換コピー生成部1112は、図9、図10のアドレス変換コピー生成部901と同様の動作を実行することにより、例えば#0から#3の各コア501に対応する#0から#3の動作ファイル902を生成する。
モデルシミュレート部1113は、図9のTG605に対応し、アドレス変換コピー生成部1112が生成した例えば#0から#3のコア501に関する動作ファイル902に基づいて、#0から#3の複数のコア501間のリソース競合のシミュレーションを実行する。
記憶部1102は、アプリケーション1120、データ1121、パラメータ1122、動作結果603(#0)、動作ファイル604(#0)、902(#0〜#3)、シミュレーション結果1125、及びモデル1126を記憶する。
アプリケーション1120は、図9のアプリケーション601(#0)に対応する。
データ1121は、アプリケーション1120で使用される各種データである。
パラメータ1122は、アドレス変換コピー生成部1112がアドレス変換を実行する際に参照する制御データである。
動作結果603(#0)、動作ファイル604(#0)、902(#0〜#3)は、図9及び図10で説明した各データに対応する。
シミュレーション結果1125は、モデルシミュレート部1113がシミュレーションを実行した結果のデータである。
モデル1126は、モデルシミュレート部1113のシミュレータプログラムである。
図12は、図11の第1の実施形態のシミュレーション装置において、アドレス変換コピー生成部1112が参照するパラメータ1122(図11参照))の例を示すデータ構成図である。
パラメータIは、動作ファイル902のコピー作成数であり、例えば前述した特定の関係にあるコア501の数が100コアならば、I=100である。
パラメータIIは、プログラムアドレスのオフセット値であり、設計対象のマルチコアLSIシステムで一意に定義されるメモリアドレス空間の0x0000番地(図12中では「0x0番地」と記載)からの差分値である。
パラメータIIIは、プログラムサイズ値であり、コア501毎のプログラムサイズの上限値である。
パラメータIVは、ロードストアアドレスのオフセット値であり、設計対象のマルチコアLSIシステムで一意に定義されるメモリアドレス空間の0x0000番地(図12中では「0x0番地」と記載)からの差分値である。
パラメータVは、ロードストアサイズ値であり、コア501毎に利用するメモリアドレス領域の上限値である。
図13は、図11の第1の実施形態のシミュレーション装置において処理部1101内のアドレス変換コピー生成部1112が実行する処理の動作例を示すフローチャートである。以下、図11の各部を図11中の参照番号によって随時参照する。
まず、アドレス変換コピー生成部1112は、記憶部1102からパラメータ1122中の上記IからVの各パラメータを取得する(ステップS1301)。
次に、アドレス変換コピー生成部1112は、変数iとkをそれぞれ0に初期化する(ステップS1302)。変数iは、コア501の番号を示し、変数kは、動作ファイル604(#0)中の行番号を示す。
続いて、アドレス変換コピー生成部1112は、ステップS1302で0に初期化された行番号を示す変数kの値を、ステップS1308で+1ずつ加算しながら、ステップS1309で変数kの値が最後の行に対応する値を超えたと判定するまで、ステップS1303からS1308の一連の処理を、動作ファイル604(#0)中の各行毎に繰り返し実行する。
まず、アドレス変換コピー生成部1112は、図11の変換部1111が生成した動作ファイル604(#0)の変数kが示すk行目の命令の動作を取得する(ステップS1303)。
アドレス変換コピー生成部1112は、ステップS1303で取得した命令の動作が「読み」又は「書き」であるか否かを判定する(ステップS1304)。
ステップS1304の判定がYESならば、アドレス変換コピー生成部1112は、前述した(1)式に対応する下記の(2)式の演算処理を実行することにより、プログラムアドレスを変換する(ステップS1305)。ここで、入力PCは、k行目の命令の動作に付加されているプログラムカウンタ値(プログラムアドレス)である。IIは、図12で説明したパラメータII(プログラムアドレスオフセット)である。IIIは、図12で説明したパラメータIII(プログラムサイズ)である。iは、変数iの現在値である。新PCは、動作ファイル902(#i)に書き込まれるべき変換後のプログラムカウンタ値(プログラムアドレス)である。
新PC=入力PC+II×III×i ・・・(2)
次に、アドレス変換コピー生成部1112は、前述した(1)式に対応する下記の(3)式の演算処理を実行することにより、ロードストアアドレスを変換する(ステップS1306)。ここで、入力アドレスは、k行目の命令の動作に付加されているロードストアアドレスである。IVは、図12で説明したパラメータIV(ロードストアアドレスオフセット)である。Vは、図12で説明したパラメータV(ロードストアサイズ)である。iは、変数iの現在値である。新アドレスは、動作ファイル902(#i)に書き込まれるべき変換後のロードストアアドレスである。
新アドレス=入力アドレス+IV×V×i ・・・(3)
アドレス変換コピー生成部1112は、ステップS1305で算出したプログラムアドレスと、ステップS1306で算出したロードストアアドレスを、動作ファイル604(#0)のk行目に記録されている命令の動作と共に、動作ファイル902(#i)のk
行目に書き込む(ステップS1307)。
アドレス変換コピー生成部1112は、ステップS1303で取得した命令の動作が「読み」でも「書き」でもなく待ち命令(図9の動作ファイル604(#0)を参照)である(ステップS1304の判定がNOである)場合には、以下の動作を実行する。アドレス変換コピー生成部1112は、上述のステップS1305及びS1306の処理はスキップして、ステップS1307で、動作ファイル604(#0)中のk行目の命令の動作を、動作ファイル902(#i)中のk行目に書き込む。
以上の一連の処理が動作ファイル604(#0)中の各行毎に繰り返された結果、変数kの値が動作ファイル604(#0)中の最後の行を超える(ステップS1309の判定がYESになる)と、アドレス変換コピー生成部1112は、以下の処理を実行する。アドレス変換コピー生成部1112は、変数iの値を1加算する(ステップS1310)。そして、アドレス変換コピー生成部1112はm、変数iの値が生成すべき最後の動作ファイル902(=最後のコア501)に対応する値を超えたか否かを判定する(ステップS1311)。そして、ステップS1311の判定がNOならば、アドレス変換コピー生成部1112は、変数kの値を0にリセットした後に、ステップS1303の処理に戻り、次の動作ファイル902(#i)の生成処理に移る。
以上の一連の処理が繰り返された結果、ステップS1311の判定がYESになると、アドレス変換コピー生成部1112は、全ての処理を完了して、図13のフローチャートで例示される処理を終了し、処理部1101における制御が図11のモデルシミュレート部1113に移る。
図14及び図15は、図13のフローチャートの処理によるアドレス変換コピー生成部1112によるアドレス変換の説明図である。図14は、#0から#3のコア501間で、プログラム領域及びデータ領域ともに重ならない場合のアドレス変換例である。一方、図15は、#0から#3のコア501間で、プログラム領域は重ならず、データ領域は重なってもよい場合のアドレス変換例である。
まず、図14においては、図12で説明したパラメータIIのプログラムサイズが例えば0x800に設定される。この結果、動作ファイル604(#0)中の各命令の動作のプログラムアドレスが、動作ファイル902(#1)の生成時には、プログラム領域0x0000〜0x0500中のアドレスからプログラム領域0x0800〜0x0D00中のアドレスに変換される。同様に、動作ファイル902(#2)の生成時には、プログラム領域0x0000〜0x0500中のアドレスからプログラム領域0x1000〜0x1500中のアドレスに変換される。更に、動作ファイル902(#3)の生成時には、プログラム領域0x0000〜0x0500中のアドレスからプログラム領域0x1800〜0x1D00中のアドレスに変換される。動作ファイル902(#0)のプログラム領域は、動作ファイル604(#0)中のプログラム領域0x0000〜0x0500と同じである。
次に、図14においては、図12で説明したパラメータVのロードストアサイズが例えば0x800に設定される。この結果、動作ファイル604(#0)中の各命令の動作のロードストアアドレスが、動作ファイル902(#1)の生成時には、データ領域0x8000〜0x8600中のアドレスから0x8800から始まるデータ領域中のアドレスに変換される。同様に、動作ファイル902(#2)の生成時には、データ領域0x8000〜0x8600中のアドレスから0x9000から始まるデータ領域中のアドレスに変換される。更に、動作ファイル902(#3)の生成時には、データ領域0x8000〜0x8600中のアドレスから0x9800から始まるデータ領域中のアドレスに変換される。動作ファイル902(#0)のデータ領域は、動作ファイル604(#0)中のデータ領域0x8000〜0x8600と同じである。
次に、図15においては、プログラム領域については、図12で説明したパラメータIIのプログラムサイズが例えば0x800に設定されることにより、図14の場合と同様の変換処理が実行される。
一方、図15において、データ領域については、図12で説明したパラメータVのロードストアサイズが0x0000に設定されることにより、動作ファイル604(#0)中の命令の動作のロードストアアドレスは、データ領域0x8000〜0x8600中のアドレスのままとなる。
このようにして、アドレス変換コピー生成部1112により、1つのコア501(#0)の動作ファイル604(#0)から、そのコア501(#0)と特定の関係にある例えば#1から#3のコア501の#1から#3の動作ファイル902を生成できる。これにより、特にコア数の多いマルチコアLSIステムにおいて、コア単体シミュレーションにかかる時間を大幅に削減することが可能となる。
図16は、第2の実施形態の説明図である。図9及び図10で説明した第1の実施形態では、アプリケーションのシーケンス(プログラム)が、コア501(#0)に関するアプリケーション601(#0)の1種類であったが、図16の第2の実施形態では、アプリケーションのシーケンス(プログラム)が、例えば、コア501(#0)に関するアプリケーション601(#0)と、コア501(#1)に関するアプリケーション601(#1)の2種類になる。これに基づいて、コア単体のシミュレータ602の実行と、それに基づく動作結果603の出力及び動作ファイル604への変換も、コア501(#0)とコア501(#1)に関する2種類となる。
そして、アドレス変換コピー生成部1601は、動作ファイル902(#i)の生成において、アプリケーション番号として#1が与えられた場合には動作ファイル604(#0)から動作ファイル604(#i)を生成し、アプリケーション番号として#2が与えられた場合には動作ファイル604(#1)から動作ファイル604(#i)を生成するように動作する。
このようにして、第2の実施形態のシミュレーション装置では、異なるシーケンスに対応する複数種類のシーケンスの動作ファイル902を生成することが可能となる。図16において、例えば動作ファイル902(#0)と動作ファイル902(#2)は、アプリケーション番号#1に対応するシーケンスで動作し、動作ファイル902(#1)と動作ファイル902(#3)は、アプリケーション番号#2に対応するシーケンスで動作するように制御することが可能となる。
図17は、図16の動作を実現する第2の実施形態のシミュレーション装置の構成例を示すブロック図である。図11の第1の実施形態と異なる点は、アドレス変換コピー生成部1601(図16と同様)が、記憶部1102内のアプリケーション番号1701に基づいて動作する点である。
アプリケーション番号1701は、#0から#3のコア501毎に、#1又は#2のアプリケーション番号を指定する情報である。
図18は、図17の第2の実施形態のシミュレーション装置において、アドレス変換コピー生成部1601が参照するパラメータ1122(図11参照))の例を示すデータ構成図である。パラメータI〜Vは、図12で説明したものと同様である。第2の実施形態では更に、パラメータI〜Vと同様の2組目のデータセットとして、パラメータVI〜IXが用意される。
図19は、図16の第2の実施形態のシミュレーション装置において処理部1101内のアドレス変換コピー生成部1601が実行する処理の動作例を示すフローチャートである。図19のフローチャートにおいて、第1の実施形態に係る図13のフローチャートと同じステップ番号を付したステップでは、図13の場合と同じ処理が実行される。
図19のフローチャートが図13のフローチャートと異なる点として、まず、アドレス変換コピー生成部1601が、記憶部1102からパラメータ1122中の上記IからIXの各パラメータを取得する(ステップS1901)。
次に、アドレス変換コピー生成部1601は、動作ファイル902を生成すべきコア501の番号を示す変数iの値が変化する毎に、図17の記憶部1102から変数iの値に対応するコア501に設定されているアプリケーション番号1701の値を取得する。そして、アドレス変換コピー生成部1601は、そのアプリケーション番号1701の値が#1であるか#2であるかを判定する(以上、ステップS1902)。
アドレス変換コピー生成部1601は、アプリケーション番号1701の値が#1である場合には、読込み元の動作ファイル604の番号を示す変数mの値を#0にセットする。また、アドレス変換コピー生成部1601は、プログラムアドレス変換のためのオフセット値を示す変数offset1とプログラムサイズを示す変数size1にそれぞれ、ステップS1901で取得したパラメータIIとIII(図18参照)の各値をセットする。更に、アドレス変換コピー生成部1601は、ロードストアアドレス変換のためのオフセット値を示す変数offset2とロードストアサイズを示す変数size2にそれぞれ、ステップS1901で取得したパラメータIVとV(図18参照)の各値をセットする(以上、ステップS1903)。
一方、アドレス変換コピー生成部1601は、アプリケーション番号1701の値が#2である場合には、読込み元の動作ファイル604の番号を示す変数mの値を#1にセットする。また、アドレス変換コピー生成部1601は、プログラムアドレス変換のためのオフセット値を示す変数offset1とプログラムサイズを示す変数size1にそれぞれ、ステップS1901で取得したパラメータVIとVII(図18参照)の各値をセットする。更に、アドレス変換コピー生成部1601は、ロードストアアドレス変換のためのオフセット値を示す変数offset2とロードストアサイズを示す変数size2にそれぞれ、ステップS1901で取得したパラメータVIIIとIX(図18参照)の各値をセットする(以上、ステップS1904)。
そして、アドレス変換コピー生成部1601は、図13のステップS1303に対応する図19のステップS1303′で、ステップS1903又はS1904でセットされた変数mが示す番号の動作ファイル604のk行目の命令を取得する。
また、アドレス変換コピー生成部1601は、図13のステップS1305に対応する図19のステップS1305′で、ステップS1903又はS1904でセットされた変数offset1とsize1を用いて、新プログラムアドレスを算出する。
更に、アドレス変換コピー生成部1601は、図13のステップS1306に対応する図19のステップS1306′で、ステップS1903又はS1904でセットされた変数offset2とsize2を用いて、新ロードストアアドレスを算出する。
以上の第2の実施形態のアドレス変換コピー生成部1601の動作により、異なるシーケンスに対応する複数種類のシーケンスの動作ファイル902を生成することが可能となる。
図20は、第3の実施形態の説明図である。図9、図10で説明した第1の実施形態では、アドレス変換コピー生成部901が1つの動作ファイル604(#0)中の各命令のアドレスを変換することにより、#1から#3の動作ファイル902を生成した。これに対して、第3の実施形態では、#0から#3の動作ファイル902は、動作ファイル604(#0)と同じものが使用される。そして、TG605が、図20のステップS2で「読み」又は「書き」の命令を認識したときに、現在のコア501の番号を取得する(ステップS6)。次に、TG605が、その番号に対応する第1の実施形態等と同様のアドレス変換を実行して、新プログラムアドレスと新ロードストアアドレスを生成する(ステップS7)。TG605は、その生成したアドレスに基づいて、バスアクセスを実行する(ステップS3)。
図21は、第3の実施形態のシミュレーション装置の構成例を示すブロック図である。図11で説明した第1の実施形態のシミュレーション装置の構成と比較すると、第1の実施形態におけるアドレス変換コピー生成部1112が省略されており、TG605であるモデルシミュレート部2101が、第1の実施形態におけるアドレス変換コピー生成部1112の機能を含んでいる。
以上の第3の実施形態により、第1の実施形態等と同等の機能を実現することが可能となる。
図22は、上記第1乃至第3の実施形態に対応するシミュレーション装置(コンピュータ)のハードウェア構成の一例を示す図である。
図22に示されるコンピュータは、CPU(Central Processing Unit)2201、メモリ2202、入力装置2203、出力装置2204、補助情報記憶装置2205、可搬型記録媒体2209が挿入される媒体駆動装置2206、及びネットワーク接続装置2207を有する。これらの構成要素は、バス2208により相互に接続されている。同図に示される構成は上記シミュレーション装置を実現できるコンピュータの一例であり、そのようなコンピュータはこの構成に限定されるものではない。
メモリ2202は、例えば、Read Only Memory(ROM)、Random Access Memory(RAM)、フラッシュメモリ等の半導体メモリであり、処理に用いられるプログラム及びデータを格納する。
CPU(プロセッサ)2201は、例えば、メモリ2202を利用してプログラムを実行することにより、例えば図11、図17、又は図21に示される処理部1101として動作する。
入力装置2203は、例えば、キーボード、ポインティングデバイス等であり、オペレータ又はユーザからの指示又は情報の入力に用いられる。出力装置2204は、例えば、表示装置、プリンタ、スピーカ等であり、オペレータ又はユーザへの問合せ又は処理結果の出力に用いられる。
補助情報記憶装置2205は、例えば、ハードディスク記憶装置、磁気ディスク記憶装置、光ディスク装置、光磁気ディスク装置、テープ装置、又は半導体記憶装置であり、例えば、図11、図17、又は図21に示される記憶部1102として動作する。図11、図17、又は図21のシミュレーション装置は、補助情報記憶装置2205にプログラム及びデータを格納しておき、それらをメモリ2202にロードして使用することができる。
媒体駆動装置2206は、可搬型記録媒体2209を駆動し、その記録内容にアクセスする。可搬型記録媒体2209は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体2209は、Compact Disk Read Only Memory(CD−ROM)、Digital Versatile Disk(DVD)、Universal Serial Bus(USB)メモリ等であってもよい。オペレータ又はユーザは、この可搬型記録媒体2209にプログラム及びデータを格納しておき、メモリ2202にロードして使用することができる。
このように、図11、図17、又は図21のシミュレーション装置のシミュレーション処理に用いられるプログラム及びデータを格納するコンピュータ読取り可能な記録媒体は、メモリ2202、補助情報記憶装置2205、又は可搬型記録媒体2209のような、物理的な(非一時的な)記録媒体である。
ネットワーク接続装置2207は、例えばLocal Area Network(LAN)等の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェースである。図11、図17、又は図21のシミュレーション装置は、プログラム又はデータを外部の装置からネットワーク接続装置2207を介して受信し、それらをメモリ2202にロードして使用することができる。
なお、図11、図17、又は図21のシミュレーション装置が図22の全ての構成要素を含む必要はなく、用途又は条件に応じて一部の構成要素を省略することも可能である。例えば、オペレータ又はユーザからの指示又は情報を入力する必要がない場合は、入力装置2203が省略されてもよい。可搬型記録媒体2209又は通信ネットワークを利用しない場合は、媒体駆動装置2206又はネットワーク接続装置2207が省略されてもよい。
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができる。
以上の実施形態に関して、更に以下の付記を開示する。
(付記1)
複数のコアの夫々に関するリソースアクセスの動作内容に基づいて前記複数のコア間のリソース競合のシミュレーションを実行するシミュレーションプログラムであって、
前記複数のコアのうちの少なくとも1つのコアに関するシミュレーションを実行して前記1つのコアに関するリソースアクセスの動作内容を抽出するステップと、
前記複数のコアに対する実行処理における互いの特定の関係の下で、前記1つのコアによってアクセスするリソースのアドレスと前記複数のコアのうちの前記1つのコア以外の他のコアによってアクセスするリソースのアドレスとのアドレス差を、前記1つのコアに関するリソースアクセスの動作内容に反映させることにより、前記他のコアに関するリソースアクセスの動作内容を生成するステップと、
をコンピュータに実行させるためのシミュレーションプログラム。
(付記2)
前記1つのコアに関するリソースアクセスの動作内容を抽出するステップにおいて、前記複数のコアのうちの2種類以上のコアに関するシミュレーションを実行して前記2種類以上のコアに関する2種類以上のリソースアクセスの動作内容を抽出し、
前記他のコアに関するリソースアクセスの動作内容を生成するステップにおいて、前記2種類以上のコアに関するリソースアクセスの動作内容の何れかに基づいて、前記他のコアに関するリソースアクセスの動作内容を生成する、
ことを特徴とする付記1に記載のシミュレーションプログラム。
(付記3)
前記他のコアに関するリソースアクセスの動作内容を生成するステップにおいて、記憶装置に記憶された前記他のコアに関するリソースアクセスの動作内容の生成数と、プログラムアドレスのオフセット値と、前記コア毎のプログラムサイズの上限を示すプログラムサイズ値と、ロードストアアドレスのオフセット値と、前記コア毎に利用するメモリアドレスの上限値を含むパラメータ情報に基づいて前記アドレス差を算出する、ことを特徴とする付記1又は2に記載のシミュレーションプログラム。
(付記4)
前記リソースアクセスの動作内容は、バスに接続されたメモリに対するロード命令又はストア命令である、ことを特徴とする付記1乃至3の何れかに記載のシミュレーションプログラム。
(付記5)
前記コアによってアクセスするリソースのアドレスは、前記ロード命令又はストア命令のプログラムアドレス又はロードストアアドレスである、ことを特徴とする付記4に記載のシミュレーションプログラム。
(付記6)
前記複数のコアに対する実行処理における互いの特定の関係は、前記コアのそれぞれが、同一の一連の命令群からなる繰返し処理を、同一又は異なるプログラムアドレス又はロードストアアドレスに対して実行する関係である、ことを特徴とする付記1乃至5の何れかに記載のシミュレーションプログラム。
(付記7)
複数のコアの夫々に関するリソースアクセスの動作内容に基づいて前記複数のコア間のリソース競合のシミュレーションを実行するシミュレーション実行方法であって、
前記複数のコアのうちの少なくとも1つのコアに関するシミュレーションを実行して前記1つのコアに関するリソースアクセスの動作内容を抽出し、
前記複数のコアに対する実行処理における互いの特定の関係の下で、前記1つのコアによってアクセスするリソースのアドレスと前記複数のコアのうちの前記1つのコア以外の他のコアによってアクセスするリソースのアドレスとのアドレス差を、前記1つのコアに関するリソースアクセスの動作内容に反映させることにより、前記他のコアに関するリソースアクセスの動作内容を生成する、
ことを特徴とするシミュレーション実行方法。
(付記8)
複数のコアの夫々に関するリソースアクセスの動作内容に基づいて前記複数のコア間のリソース競合のシミュレーションを実行するシミュレーション装置であって、
前記複数のコアのうちの少なくとも1つのコアに関するシミュレーションを実行するコアシミュレータ部と、
前記コアシミュレータ部における前記1つのコアに関する動作結果から前記1つのコアに関するリソースアクセスの動作内容を抽出する変換部と、
前記複数のコアに対する実行処理における互いの特定の関係の下で、前記1つのコアによってアクセスするリソースのアドレスと前記複数のコアのうちの前記1つのコア以外の他のコアによってアクセスするリソースのアドレスとのアドレス差を、前記1つのコアに関するリソースアクセスの動作内容に反映させることにより、前記他のコアに関するリソースアクセスの動作内容を生成するアドレス変換コピー生成部と、
前記変換部が抽出した前記1つのコアに関するリソースアクセスの動作内容と、前記アドレス変換コピー生成部が生成した前記他のコアに関するリソースアクセスの動作内容とに基づいて、前記複数のコア間のリソース競合のシミュレーションを実行するモデルシミュレート部と、
を備えることを特徴とするシミュレーション装置。
(付記9)
複数のコアの夫々に関するリソースアクセスの動作内容に基づいて前記複数のコア間のリソース競合のシミュレーションを実行するシミュレーションプログラムであって、
前記複数のコアのうちの少なくとも1つのコアに関するシミュレーションを実行して前記1つのコアに関するリソースアクセスの動作内容を抽出するステップと、
前記複数のコアに対する実行処理における互いの特定の関係の下で、前記1つのコアによってアクセスするリソースのアドレスと前記複数のコアのうちの前記1つのコア以外の他のコアによってアクセスするリソースのアドレスとのアドレス差を、前記1つのコアに関するリソースアクセスの動作内容に反映させることにより前記他のコアに関するリソースアクセスの動作内容を生成しながら、前記複数のコア間のリソース競合のシミュレーションを実行するステップと、
をコンピュータに実行させるためのシミュレーションプログラム。
501 コア
502 SRAM
503 バス
601 アプリケーション
602 コア単体のシミュレータ
603 動作結果
604、902 動作ファイル
605 TG
901、1112、1601 アドレス変換コピー生成部
1101 処理部
1102 記憶部
1110 コアシミュレータ部
1111 変換部
1113、2101 モデルシミュレート部
1120 アプリケーション
1122 パラメータ
1125 シミュレーション結果
1126 モデル
1701 アプリケーション番号

Claims (8)

  1. 複数のコアの夫々に関するリソースアクセスの動作内容に基づいて前記複数のコア間の動作のシミュレーションを実行するシミュレーションプログラムであって、
    前記複数のコアのうちの少なくとも1つのコアに関するシミュレーションを実行して前記1つのコアに関するリソースアクセスの動作内容を抽出するステップと、
    前記複数のコアに対する実行処理における互いの特定の関係の下で、前記1つのコアによってアクセスするリソースのアドレスと前記複数のコアのうちの前記1つのコア以外の他のコアによってアクセスするリソースのアドレスとのアドレス差を、前記1つのコアに関するリソースアクセスの動作内容に反映させることにより、前記他のコアに関するリソースアクセスの動作内容を生成するステップと、
    をコンピュータに実行させるためのシミュレーションプログラム。
  2. 前記1つのコアに関するリソースアクセスの動作内容を抽出するステップにおいて、前記複数のコアのうちの2種類以上のコアに関するシミュレーションを実行して前記2種類以上のコアに関する2種類以上のリソースアクセスの動作内容を抽出し、
    前記他のコアに関するリソースアクセスの動作内容を生成するステップにおいて、前記2種類以上のコアに関するリソースアクセスの動作内容の何れかに基づいて、前記他のコアに関するリソースアクセスの動作内容を生成する、
    ことを特徴とする請求項1に記載のシミュレーションプログラム。
  3. 前記他のコアに関するリソースアクセスの動作内容を生成するステップにおいて、記憶装置に記憶された前記他のコアに関するリソースアクセスの動作内容の生成数と、プログラムアドレスのオフセット値と、前記コア毎のプログラムサイズの上限を示すプログラムサイズ値と、ロードストアアドレスのオフセット値と、前記コア毎に利用するメモリアドレスの上限値を含むパラメータ情報に基づいて前記アドレス差を算出する、ことを特徴とする請求項1又は2に記載のシミュレーションプログラム。
  4. 前記リソースアクセスの動作内容は、バスに接続されたメモリに対するロード命令又はストア命令である、ことを特徴とする請求項1乃至3の何れかに記載のシミュレーションプログラム。
  5. 前記コアによってアクセスするリソースのアドレスは、前記ロード命令又はストア命令のプログラムアドレス又はロードストアアドレスである、ことを特徴とする請求項4に記載のシミュレーションプログラム。
  6. 前記複数のコアに対する実行処理における互いの特定の関係は、前記コアのそれぞれが、同一の一連の命令群からなる繰返し処理を、同一又は異なるプログラムアドレス又はロードストアアドレスに対して実行する関係である、ことを特徴とする請求項1乃至5の何れかに記載のシミュレーションプログラム。
  7. 複数のコアの夫々に関するリソースアクセスの動作内容に基づいて前記複数のコア間のリソース競合のシミュレーションをコンピュータが実行するシミュレーション実行方法であって、
    前記複数のコアのうちの少なくとも1つのコアに関するシミュレーションを実行して前記1つのコアに関するリソースアクセスの動作内容を抽出し、
    前記複数のコアに対する実行処理における互いの特定の関係の下で、前記1つのコアによってアクセスするリソースのアドレスと前記複数のコアのうちの前記1つのコア以外の他のコアによってアクセスするリソースのアドレスとのアドレス差を、前記1つのコアに関するリソースアクセスの動作内容に反映させることにより、前記他のコアに関するリソースアクセスの動作内容を生成する、
    ことを特徴とするシミュレーション実行方法。
  8. 複数のコアの夫々に関するリソースアクセスの動作内容に基づいて前記複数のコア間のリソース競合のシミュレーションを実行するシミュレーション装置であって、
    前記複数のコアのうちの少なくとも1つのコアに関するシミュレーションを実行するコアシミュレータ部と、
    前記コアシミュレータ部における前記1つのコアに関する動作結果から前記1つのコアに関するリソースアクセスの動作内容を抽出する変換部と、
    前記複数のコアに対する実行処理における互いの特定の関係の下で、前記1つのコアによってアクセスするリソースのアドレスと前記複数のコアのうちの前記1つのコア以外の他のコアによってアクセスするリソースのアドレスとのアドレス差を、前記1つのコアに関するリソースアクセスの動作内容に反映させることにより、前記他のコアに関するリソースアクセスの動作内容を生成するアドレス変換コピー生成部と、
    前記変換部が抽出した前記1つのコアに関するリソースアクセスの動作内容と、前記アドレス変換コピー生成部が生成した前記他のコアに関するリソースアクセスの動作内容とに基づいて、前記複数のコア間のリソース競合のシミュレーションを実行するモデルシミュレート部と、
    を備えることを特徴とするシミュレーション装置。
JP2017133099A 2017-07-06 2017-07-06 シミュレーションプログラム、方法、及び装置 Active JP6958038B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017133099A JP6958038B2 (ja) 2017-07-06 2017-07-06 シミュレーションプログラム、方法、及び装置
US16/026,459 US10908934B2 (en) 2017-07-06 2018-07-03 Simulation program, method, and device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017133099A JP6958038B2 (ja) 2017-07-06 2017-07-06 シミュレーションプログラム、方法、及び装置

Publications (2)

Publication Number Publication Date
JP2019016167A JP2019016167A (ja) 2019-01-31
JP6958038B2 true JP6958038B2 (ja) 2021-11-02

Family

ID=64903185

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017133099A Active JP6958038B2 (ja) 2017-07-06 2017-07-06 シミュレーションプログラム、方法、及び装置

Country Status (2)

Country Link
US (1) US10908934B2 (ja)
JP (1) JP6958038B2 (ja)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01314345A (ja) 1988-06-14 1989-12-19 Fujitsu Ltd トレースメモリ装置
JP3348445B2 (ja) * 1992-08-10 2002-11-20 富士通株式会社 並列計算機のシミュレーション方法およびシミュレータ
JP3175675B2 (ja) * 1997-12-04 2001-06-11 日本電気株式会社 プリフェッチ制御装置
JP3608915B2 (ja) * 1997-09-22 2005-01-12 富士通株式会社 マルチプロセッシングシステムの性能評価方法および装置並びにマルチプロセッシングシステムの性能評価プログラムを格納した記憶媒体
JP2004021907A (ja) 2002-06-20 2004-01-22 Matsushita Electric Ind Co Ltd 性能評価用シミュレーションシステム
CN101256502B (zh) * 2007-02-27 2011-02-09 国际商业机器公司 模拟多处理器系统的系统和方法
US7925489B2 (en) * 2007-10-31 2011-04-12 International Business Machines Corporation Defining and recording threshold-qualified count events of a simulation by testcases
TWI378356B (en) * 2009-04-21 2012-12-01 Nat Univ Tsing Hua Method and device for multi-core instruction-set simulation
JP2014215768A (ja) 2013-04-24 2014-11-17 富士通セミコンダクター株式会社 性能評価用トランザクション生成プログラム及び性能評価用トランザクション生成装置

Also Published As

Publication number Publication date
US10908934B2 (en) 2021-02-02
US20190012191A1 (en) 2019-01-10
JP2019016167A (ja) 2019-01-31

Similar Documents

Publication Publication Date Title
JP4994393B2 (ja) 単一のマスターモデルから異なる抽象化レベルの複数のモデルを生成するシステムと方法
US11803404B2 (en) Deep learning algorithm compiling method, device, and related product
US8458630B1 (en) Supporting dynamic aspects of polymorphism in high-level synthesis of integrated circuit designs
US10586003B1 (en) Circuit design using high level synthesis and linked hardware description language libraries
JP6289751B2 (ja) プログラム生成装置、プログラム生成方法及びプログラム生成プログラム
JP7492830B2 (ja) ベクトル要素内のビット値のテスト
CN114462338A (zh) 一种集成电路的验证方法、装置、计算机设备及存储介质
JP6345814B2 (ja) 高位合成を用いて高効率のエントロピーデコーダを実装するための方法、hlsツール、および記憶媒体
US20220114429A1 (en) Method and device for generating operation data and related product
US7496869B1 (en) Method and apparatus for implementing a program language description of a circuit design for an integrated circuit
US10331830B1 (en) Heterogeneous logic gate simulation using SIMD instructions
CN109891395B (zh) 调试系统和方法
JP5157534B2 (ja) 動作合成装置、および、プログラム
JP6958038B2 (ja) シミュレーションプログラム、方法、及び装置
Melnyk Self-Configurable FPGA-Based Computer Systems: Basics and Proof of Concep
JP6859878B2 (ja) シミュレーションプログラム、方法、及び装置
US11635947B2 (en) Instruction translation support method and information processing apparatus
US7113901B1 (en) Reuse of hardware components
US11556317B2 (en) Instruction translation support method and information processing apparatus
JP2014215768A (ja) 性能評価用トランザクション生成プログラム及び性能評価用トランザクション生成装置
JP2022102319A (ja) ベクトル推定プログラム、ベクトル推定装置、及び、ベクトル推定方法
JP6253048B2 (ja) 不揮発性論理集積回路設計支援システム
JP6788249B2 (ja) 生成装置、生成方法及びプログラム
JP2007018313A (ja) 回路設計プログラム、回路設計装置、回路設計方法
CN115989497A (zh) 设计感知自适应混合信号仿真

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200409

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210517

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210601

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210702

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20210702

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20210702

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210907

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210920

R150 Certificate of patent or registration of utility model

Ref document number: 6958038

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150