JP2014523569A - 拡張可能な並列プロセッサのためのシステム、方法、および、装置 - Google Patents

拡張可能な並列プロセッサのためのシステム、方法、および、装置 Download PDF

Info

Publication number
JP2014523569A
JP2014523569A JP2014515970A JP2014515970A JP2014523569A JP 2014523569 A JP2014523569 A JP 2014523569A JP 2014515970 A JP2014515970 A JP 2014515970A JP 2014515970 A JP2014515970 A JP 2014515970A JP 2014523569 A JP2014523569 A JP 2014523569A
Authority
JP
Japan
Prior art keywords
processor
memory
design
event
test bench
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2014515970A
Other languages
English (en)
Other versions
JP2014523569A5 (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.)
Montana Systems Inc
Original Assignee
Montana Systems Inc
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 Montana Systems Inc filed Critical Montana Systems Inc
Publication of JP2014523569A publication Critical patent/JP2014523569A/ja
Publication of JP2014523569A5 publication Critical patent/JP2014523569A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/82Architectures of general purpose stored program computers data or demand driven
    • G06F15/825Dataflow computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/10Processors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Multi Processors (AREA)

Abstract

【解決手段】並列処理システムおよび方法が、制御フロー型のプロセッサである第1のプロセッサと、データフロー型のプロセッサである第2のプロセッサとを含むコンピュータシステムを備える。第2のプロセッサは、第2のメモリシステムに接続されており、第2のメモリシステムは、命令を実行順に格納すると共に、対応するイベントデータを実行順に格納する。命令のうちの最初の命令は、第2のメモリシステム内の所定の位置に格納される。システムは、さらに、第1のプロセッサおよび第2のプロセッサに接続された実行時イベント挿入・制御ユニットを備える。第1のプロセッサ、第2のプロセッサ、および、実行時イベント挿入・制御ユニットは、共通の集積回路上にある。
【選択図】図4B

Description

本発明は、一般に、マイクロプロセッサの動作およびアーキテクチャに関し、特に、メモリアクセスを改善された拡張可能なマイクロプロセッサのためのシステム、方法、および、装置に関する。
メインメモリのアクセス待ち時間は、1または複数の典型的なプロセッサを有する典型的なサーバに配備された多くのアプリケーションの性能に影響を与える最大の要因の1つである。集積回路設計の機能検証は、平均よりも長いメモリ待ち時間を有するかかるアプリケーションの1つである。長いメモリ待ち時間は、ランタイム速度を実質的に遅くする。
メモリ待ち時間は、典型的なサーバプラットフォーム上の多くの汎用アプリケーション(例えば、検証アプリケーション)の性能を低下させる。典型的なプロセッサアーキテクチャは、制御フロープロセッサ(例えば、フォン・ノイマン)である。プログラムは、制御フロープロセッサ内の一連のアドレス可能な命令である。アドレス可能な各命令は、オペランドの記憶場所と共に演算を指定するか、もしくは、他の命令への制御の条件付きまたは無条件の移行を指定する。実行フローのどの時点でも、次の命令のアドレスは知ることができず、プロセッサが次の命令に着手した時に初めてわかる。
検証アプリケーションで検証される設計内の要素を記述するために、一連の命令が用いられる。設計内の要素の機能を評価する一連の命令を実行するには、評価に必要なデータオペランドをフェッチするために、プロセッサのメモリ階層にわたって頻繁なアクセスが必要になる。
設計構成は、設計検証処理の始めに知られる。検証される設計は、通例、設計内の要素の多くが、評価サイクル内の或る時点に設計内の他の要素へのデータ依存も制御依存もなしに評価されうるため、同時に評価されうる点で、高度に並列である。設計構成、その中の個々の要素、および、その相互接続性は、設計検証処理中に変化しない。設計および構成は、設計検証処理中に変化しないが、設計要素を通したデータフローは、通例、検証アプリケーション(例えば、テストベンチ)の他のコンポーネントによって引き起こされた通りに変化する。
高度に並列の設計は、市販のソフトウェアパッケージであってよい典型的なシミュレータアプリケーションプログラムによって直列化される。典型的なシミュレータソフトウェアパッケージは、設計をCプログラムに変換する。次いで、設計を記述するCプログラムは、標準的なCコンパイラ(例えば、GNUコンパイラコレクション型のコンパイラまたは任意の他の適切なコンパイラ)によってコンパイルされ、メモリの任意の利用可能な記憶場所にロードされる。この処理は、典型的な制御フロー型のプロセッサの制御フロー処理モデルを満たすためのものである。実行時のメモリ待ち時間は、命令実行のランダム性およびメインメモリDRAMアクセスのランダム性のために悪化する。
実行はオペランドの利用可能性によって駆動されるため、データフロー処理モデルがより効率的な場合がある。しかしながら、データフロー処理モデルは、構造として効率的に機能せず、設計の接続性が、メモリ内に保たれる必要があるが、それは、標準的なコンパイル技術で行うことができない。
図1は、典型的なサーバベースの検証プラットフォーム100を示すブロック図である。検証される設計102は、RTL形態であってもゲート形態であってもよく(例えば、Verilog、VHDLなど)、シミュレータアプリケーション104によってコンパイルされる。シミュレータアプリケーション104は、標準的なCコンパイラ106およびデータ構造112を用いて設計をコンパイルし、典型的なサーバ120のメモリシステム108にロードする。メモリシステム108は、DRAM108Aを備える。サーバ120は、さらに、標準的なCPU122と、キャッシュメモリ124と、システムコントローラ126と、マスストレージ128(例えば、ディスクまたはハードドライブまたは他の適切なマスストレージ技術)とを備える。
検証される設計102を制御および駆動するアプリケーションは、テストベンチ110と呼ばれる。テストベンチ110もコンパイルされ、次いで、サーバのメモリシステム108にロードされる。検証されるコンパイル済みの設計102およびコンパイル済みのテストベンチ110は、実行時にリンクされ、メモリシステム108内の同じメモリレイアウト空間を共有する。データ構造112は、システム用112A、シミュレータ用112B、設計用112C、および、テストベンチ用112Dのデータおよび命令を含む。
テストベンチアプリケーション110は、しばしば、同じコンパイラ106Cを用いて、および/または、Cコンパイラ106Aへの入力のための変換を経た後に、別個にコンパイルされる。典型的なサーバ120は、検証アプリケーションを実行するために用いられる。サーバ120は、検証アプリケーションのソフトウェアエコシステムのためのプラットフォームとして用いられる。リンカ106Bが、テストベンチアプリケーションおよび設計シミュレーションを連結する。ローダ106Dが、コンパイル、連結、および、結合されたテストベンチアプリケーション110と、設計102とを、システムメモリ108にロードする。テストベンチ110は、設計102のための刺激を生成するため、アプリケーションのランタイム実行へのゲートとして機能し、さらに、前のテストベンチ110の刺激が評価されると、応答を確認できる。
テストベンチ110アプリケーションと設計102とは、しばしば、異なった矛盾するプロファイルを有する。テストベンチ110アプリケーションは、高度に直列で並列化不可能なコードであるが、設計102は、高度に並列であり、シミュレータアプリケーションプログラムによって直列コードに編成されて、制御フロープロセッサ実行モデルに適合する。典型的なCPU122を備える典型的なサーバ120は、1つの実行可能ファイルにコンパイルされた異なるタイプのソフトウェアアプリケーションのかかる奇妙な混合を効率的に実行するよう最適化されていない。結果として、メモリ待ち時間が過度に長くなる。
メモリ待ち時間は、プロセッサ速度と同じ割合で改善しない。半導体産業の先例に基づくと、メモリ待ち時間は、歴史的に、10年ごとに約2倍の割合で改善してきた。したがって、メモリ待ち時間は、多くのアプリケーションの処理を遅くするボトルネックである。
検証アプリケーションの互換性能を改善する以前の試みは、プログラム可能なソリューションを実現できなかった。ほとんどすべての進歩が、アクセラレータおよびエミュレータに由来するものであった。アクセラレータは、論理合成と、フィールドプログラマブルゲートアレイ(FPGA)または特定用途向け集積回路(ASIC)へのマッピングとによって、設計の合成可能な部分を加速するだけである。アクセラレータは、上述のテストベンチを加速してシームレスに実行することができない。エミュレータおよびアクセラレータの両方を用いて、テストベンチアプリケーションは、標準的なサーバ上で実行し、FPGAまたはASIC上で以前に合成された設計と通信チャネルを通して通信しなければならない。通信チャネルを通したテストベンチと設計との間の通信は、検証アプリケーション全体の実行を劇的に遅くする。設計、テストベンチ、生産性ソフトウェアの遅延と、通信時間、および、処理時間から、各命令の実行に必要な総時間遅延が得られる。
以上の観点から、メモリ待ち時間を実質的または完全に排除したアプリケーションのより効率的な実行を提供することで、アプリケーションがより効率的かつ高速で実行することを可能にするシステム、方法、または、装置が求められている。
概して、本発明は、メモリ待ち時間を低減または完全に排除したより効率的なアプリケーションの実行を提供することで、アプリケーションがより効率的かつ高速で実行することを可能にするシステム、方法、または、装置を提供することによって、上記の要求を満たす。本発明は、処理、装置、システム、コンピュータ読み取り可能な媒体、または、デバイスなど、種々の形態で実施できることを理解されたい。以下では、本発明の実施形態をいくつか説明する。
一実施形態は、コンピュータシステムを提供しており、そのシステムは、制御フロー型のプロセッサである第1のプロセッサと、データフロー型のプロセッサである第2のプロセッサとを備える。第2のプロセッサは、第2のメモリシステムに接続されており、第2のメモリシステムは、設計の接続性に基づいてそこに格納された命令と、対応するイベントとを含む。システムは、さらに、第1のプロセッサおよび第2のプロセッサに接続された実行時イベント挿入・制御ユニットを備える。第1のプロセッサ、第2のプロセッサ、および、実行時イベント挿入・制御ユニットは、共通の集積回路上にある。
第1のプロセッサは、第1のキャッシュメモリ、第1のメモリコントローラ、および、第1のCPUを備えてよく、第1のプロセッサは、第1のメモリシステムに接続されてよい。第2のプロセッサは、第2のキャッシュメモリ、第2のメモリコントローラ、並列に接続された複数のモンタナ命令セットアーキテクチャ(MISA)処理コアを備えてよい。
第2のプロセッサは、通信FIFOによって第1のプロセッサに接続されてよい。第2のキャッシュメモリは、命令キャッシュメモリおよびイベントキャッシュメモリを含んでよい。第2のメモリシステムは、命令メモリおよびイベントメモリを含んでよく、命令メモリは、第1の対応するメモリコントローラによってプリフェッチユニットを介して命令キャッシュメモリに接続され、イベントメモリは、第2の対応するメモリコントローラによってプリフェッチユニットを介してイベントキャッシュメモリに接続される
第2のプロセッサは、さらに、プリフェッチユニットに接続されたイベントFIFO待ち行列を備えてよい。複数のMISA処理コアは、1から約128のMISA処理コアを含む。
別の実施形態は、設計をテストする方法を提要しており、その方法は、第1のコンパイラでテストベンチアプリケーションをコンパイルする工程と、テストベンチプロセッサに接続されたテストベンチメモリシステムに、コンパイルされたテストベンチアプリケーションをロードする工程と、を備える。テストベンチプロセッサは、制御フロー型のプロセッサである。設計が、第2のコンパイラでコンパイルされる。コンパイルされた設計は、設計プロセッサに接続された設計メモリシステムにロードされる。設計プロセッサは、通信FIFOによってテストベンチプロセッサに接続される。通信FIFOは、実行時イベント挿入・制御FIFOを含む。設計メモリシステムに、コンパイルされた設計アプリケーションをロードする工程は、設計の接続性の順に複数の命令を格納する工程、および、対応するイベントデータを格納する工程を含む。最初の命令が、テストベンチプロセッサでの対応する最初の命令の出力に従って、設計プロセッサで実行される。
方法は、さらに、設計プロセッサで実行された最初の命令からの出力結果を現行データ値と比較する工程を備えてもよい。設計プロセッサで実行された最初の命令からの出力結果が現行データ値と異なる場合、次の命令がロードされる。次の命令をロードする工程は、後続の命令を制御メモリキャッシュにロードする工程と、それと同時に、対応する後続のイベントデータをイベントデータキャッシュにロードする工程と、を含んでよい。
方法は、さらに、設計プロセッサで実行された最初の命令からの出力結果が現行データ値と異なる場合に、出力結果を格納する工程を備えてもよい。出力結果を格納する工程は、イベントキャッシュメモリに出力結果を格納する工程と、設計プロセッサの命令キャッシュメモリに次の命令をロードする工程と、を含んでよい。
第1のコンパイラは、第2のコンパイラと機能的に等価であってよい。第1のコンパイラおよび第2のコンパイラは、Cコンパイラであってよい。第2のコンパイラで設計をコンパイルする工程は、MISAコンパイラで設計をコンパイルする工程を含んでよい。
本発明のその他の態様および利点については、本発明の原理を例示した添付図面を参照しつつ行う以下の詳細な説明から明らかになる。
添付の図面を参照して行う以下の詳細な説明から、本発明を容易に理解することができる。
典型的なサーバベースの検証プラットフォームを示すブロック図。
本発明の実施形態に従って、並列プロセッサシステムを示すブロック図。
本発明の実施形態に従って、テストベンチプロセッサを示すブロック図。
本発明の実施形態に従って、設計プロセッサを示すブロック図。
本発明の実施形態に従って、実行時イベント挿入・制御ユニットを示すブロック図。
本発明の実施形態に従って、設計プロセッサを示すより詳細なブロック図。
本発明の実施形態に従って、MISAコアを示すブロック図。
本発明の実施形態に従って、データ構造を示す図。
本発明の実施形態に従って、代表的な設計検証システムに含まれる並列プロセッサシステムを示す図。
本発明の一実施形態に従って、並列プロセッサでの実行に向けて設計を準備する際に実行される方法動作を示すフローチャート。
本発明の一実施形態に従って、並列プロセッサでの実行に向けてアプリケーションを準備する際に実行される方法動作を示すフローチャート。
本発明の一実施形態に従って、代表的な設計検証システム500に含まれる並列プロセッサを動作させる際に実行される方法動作を示すフローチャート。
本発明の実施形態に従って、FPGAプロトタイプ並列システムを示すブロック図。
ここで、メモリ待ち時間を低減した論理回路およびシステムの検証アプリケーションのより効率的な実行を提供することで、検証アプリケーションがより効率的かつ高速で実行することを可能にするシステム、方法、および、装置のいくつかの代表的な実施形態について説明する。当業者にとって明らかなように、本発明は、本明細書に記載する具体的な詳細事項の一部または全てがなくとも実施可能である。
メインメモリ待ち時間は、設計の機能を検証するために用いられる検証アプリケーションを含む多くのアプリケーションの性能を制限する主な要因である。メモリ待ち時間のボトルネックによる論理回路およびシステムのシミュレーションのシステム性能(例えば、処理速度)を改善する1つのアプローチは、以下で詳述する拡張可能な並列プロセッサアーキテクチャによって提供されうる。実証された性能の改善は、通例用いられるプロセッサシステムと桁違いの改善である。メインメモリ待ち時間を最小化するために、ハードウェアおよびソフトウェア技術の組み合わせが用いられる。設計に固有の並列性が、イネーブリングハードウェアおよびソフトウェア手段として用いられる。
論理回路およびシステムの代表的な検証アプリケーションに対するメモリ待ち時間のボトルネックは、後にプロセッサメモリシステムにロードされる一様な命令セットに設計をコンパイルすることによって低減される。このように設計要素を表す命令は、設計を含む(例えば、固定された既知のアドレスにある)すべての他の命令に対する要素の位置についての情報を有する。これは、プロセッサが、設計の構成全体、メモリ内での設計要素の位置、および、メモリシステム内でのデータ依存性を「知る」ことを可能にする。このように、設計は、効率的な命令セットアーキテクチャにコンパイルされて、メモリシステム内の既知の位置に格納されるため、実質的なメモリ待ち時間を全く招くことなしにストリーミング方式でアクセスできる。
本明細書に記載の並列プロセッサシステムは、アクセラレータおよびエミュレータを用いて論理回路を加速し、論理合成を通して設計の合成可能な部分を加速するという過去の試みとは異なる。並列プロセッサシステムは、制御フローおよびデータフロー処理を組み合わせてただ1つのエンティティにする。
図2Aは、本発明の実施形態に従って、並列プロセッサシステム200を示すブロック図である。システム200は、並列で動作するテストベンチプロセッサ202および設計プロセッサ204を備える。実行時イベント挿入・制御ロジック206が、テストベンチプロセッサ202および設計プロセッサ204をリンクする。実行時、テストベンチプロセッサ202は、設計プロセッサ204でシミュレートされる設計にテストを適用する。
テストベンチプロセッサ202は、制御フロー型の処理がテストベンチアプリケーションを処理する最も効率的な方法であるため、制御フロー型のプロセッサである。テストベンチプロセッサ202は、任意の適切な縮小命令セットコンピューティング(RISC)プロセッサであってよい。テストベンチプロセッサ202は、テストベンチアプリケーションを処理する専用である。テストベンチプロセッサ202は、テストベンチアプリケーションを実行して、設計プロセッサ204に出力される刺激(例えば、イベント)を生成する。
テストベンチプロセッサ202の性能は、さらに速い実行時間を可能にする予測可能、決定論的、かつ、高速のアクセス時間を有する同期型ダイナミックランダムアクセスメモリ(SDRAM)の代わりに、テストベンチメモリ202Aのオフチップ・スタティックランダムアクセスメモリ(SRAM)によって強化される。テストベンチメモリ202Aは、任意のサイズであってよい。例えば、テストベンチメモリ202Aは、制御メモリ212Aおよびイベントデータメモリ212B、212Cで用いられるメモリ速度に適合するように、250MHz QDRまたは1GHzの通常のクロック速度で動作する約16MBであってよい。
必要に応じて、並列で動作する複数のテストベンチプロセッサ202が備えられてもよい。例えば、第1のテストベンチプロセッサ202’が、テストベンチアプリケーションを処理している間に、第2のテストベンチプロセッサ202’’が、入力/出力の多いタスクを実行し、第3のテストベンチプロセッサ202’’’が、例外、エラー、回復タスク、および、他の関連した例外イベントを管理するものとしてよい。
設計プロセッサ204は、データフロー型のプロセッサが設計を評価するのに最も効率的なプロセッサであるため、データフロー型のプロセッサである。設計は、コンパイルされて、専用のメモリにロードされ、専用の設計プロセッサ204に割り当てられる。設計プロセッサ204は、命令によって表された設計要素を実行する。
2つのプロセッサ202および204を並列で用いることにより、メモリ待ち時間のボトルネックを低減する。改良されたメモリ利用スキームが、さらに、メモリ待ち時間のボトルネックを低減する。上述のように、テストベンチおよび設計が同じCPUで処理され直列化される典型的なサーバおよびシミュレータソリューションと異なり、本発明の並列プロセッサシステム200は、各々の処理が専用のプロセッサに割り当てられるため、テストベンチ処理を設計処理から切り離す。並列プロセッサシステム200のさらなる利点は、システム200の拡張性がアムダールの法則の原理によって制限されないことである。
テストベンチプロセッサ202および設計プロセッサ204は、1つの集積回路(すなわち、チップ)に備えられてよいため、ほとんどの通信遅延を避けることができる。テストベンチプロセッサ202および設計プロセッサ204は、同じクロック境界内に備えられてもよい。
テストベンチアプリケーション110が、第1のコンパイラ106Aでコンパイルされる。次いで、コンパイルされたテストベンチアプリケーションは、テストベンチプロセッサ202用のテストベンチプロセッサメモリにロードされる。
設計102が、第2のコンパイラ106Bでコンパイルされる。次いで、コンパイルされた設計は、設計プロセッサ204用の設計プロセッサメモリ212A、212B、212Cにロードされる。
第1のコンパイラ106Aおよび第2のコンパイラ106Bは、同じコンパイラであっても異なるコンパイラであってもよいことを理解されたい。少なくとも1つの実施形態において、第1のコンパイラ106Aおよび第2のコンパイラ106Bは同じコンパイラであるが、一部の例では、2つの異なるコンパイラを用いた方が効率的な場合もある。
図2Bは、本発明の実施形態に従って、テストベンチプロセッサ202を示すブロック図である。テストベンチプロセッサ202は、テストベンチプロセッサの外部のシステムと通信するためのI/Oインターフェース220を備える。テストベンチプロセッサ202は、さらに、CPUコア202Bと、少なくとも1レベルのキャッシュメモリ202Cと、メモリコントローラ216と、を備える。メモリコントローラ216は、テストベンチメモリ202Aにアクセスして制御するために、テストベンチプロセッサ202によって用いられる。テストベンチメモリ202Aは、テストベンチコードを格納するために用いられる。
I/Oインターフェース220は、必要に応じて、USB、イーサネット(登録商標)、PCIエクスプレス、および、HT(ハイパートランスポート)など、1または複数の標準的なインターフェースを含んでよい。I/Oインターフェース220は、並列プロセッサ200と、並列プロセッサが接続されるシステムの残り部分との間の通信を提供する。様々なインターフェースを配備することにより、並列プロセッサシステム200と、システムの残り部分との間でデータを同時に転送することが可能である。
図2Cは、本発明の実施形態に従って、設計プロセッサ204を示すブロック図である。設計プロセッサ204は、複数のMISAコア208と、イベント先入れ先出し(FIFO)待ち行列210と、命令キャッシュメモリ406およびイベントキャッシュメモリ408を含むメモリシステムと、を備える。
図3は、本発明の実施形態に従って、実行時イベント挿入・制御ユニット206を示すブロック図である。実行時イベント挿入・制御ユニット206は、書き込み要求先入れ先出し(FIFO)バッファ308と、読み出し要求先入れ先出し(FIFO)バッファ310と、I/O処理ユニット207と、を備える。
動作時、テストベンチプロセッサ202は、読み出しおよび書き込み要求302を読み出しおよび書き込み要求FIFO310、308に送信する。書き込み要求FIFO308は、書き込み要求を処理のためにイベント処理ユニット312に送信する。読み出し要求FIFO310は、所望の記憶場所にアクセスするために、読み出し要求をI/O処理ユニット207に送信する。テストベンチアプリケーションは、いつでも介入して、設計検証に用いられるイベント入力データを変更することができる。テストベンチの読み出しおよび書き込み要求302は、それぞれのFIFO308、310に格納される。次いで、テストベンチの読み出しおよび書き込み要求302は、受信順に処理される。
イベント処理ユニット312は、設計プロセッサ204がテストベンチ読み出しおよび書き込み要求302を処理する準備ができていない時に、待機要求304の制御信号をアサートする。テストベンチプロセッサ202は、待機要求304の制御信号を受信すると、テストベンチプロセッサが待機しなければならないと決定する。
実行時イベント挿入・制御ユニット206のさらなる機能は、読み出し要求が、要求されたトランザクションを管理するのに、書き込み要求のハードウェア待ち行列(例えば、書き込みFIFO308)とは別のハードウェア待ち行列(例えば、読み出しFIFO310)を共有するため、全く性能に影響を与えることなしに、テストベンチプロセッサ202が設計プロセッサ204に送信する任意の読み出しまたはI/O要求を処理し、要求をコンパイルできることである。さらに、イベント処理専用のデータ経路は、テストベンチ読み出しおよび書き込み要求302の影響を受けないため、I/Oトランザクションは、イベント処理と同時に行われる。
テストベンチプロセッサ202でのテストベンチ処理を設計プロセッサ204での設計から分離することにより、アムダールの法則の影響は実質的に低減され、実質的な性能の目標が達成される。したがって、ランタイム実行の直列化がない。テストベンチアプリケーションは、プロセッサが設計の検証に用いられるためにプロセッサリソースが利用可能になるまで待つ必要がないので、並列プロセッサシステム200では、典型的なプロセッサよりも高速で実行する。
図4Aは、本発明の実施形態に従って、設計プロセッサ204を示すより詳細なブロック図である。並列プロセッサシステム200は、設計構図に関連する複数のタスクを同時に処理できる。設計機能を検証することは、以下のタスクのうちの1または複数を含んでよく、それらのタスクの一部は、同時に行われうる:
(a)2状態機能評価;
(b)4状態機能評価;
(c)整数遅延を伴った(a)または(b);
(d)規格によって規定された強度特性を伴った(a)または(b);
(e)電気遅延(SDFタイミング)を伴った(a)または(b);
(f)(a)または(b)または(c)または(d)または(e)ならびにI/Oタスク
設計プロセッサ204は、設計を処理する複数のMISAコア208を備える。設計は、モンタナ命令セットアーキテクチャ(MISA)にコンパイルされる。設計プロセッサ204は、1ないし128の間、もしくは、必要であればさらに多くのMISAコア208を備えうる。MISAコア208は、算術関数および論理関数など様々な計算関数、フロー制御、および、メモリ演算を実行する。図4Aに示す実装例において、設計プロセッサ204は、128個のMISAコア208を備える。図4Bは、本発明の実施形態に従って、1つのMISAコア450を示すブロック図である。図4Cは、本発明の実施形態に従ったデータ構造480を示す。MISAコア208は、検証アプリケーションをコンパイルするMISAコンパイラ534によって生成されたモンタナ命令セットデータ構造を処理する。求められる性能と、メモリインターフェースの利用可能性とに応じて、さらなるMISAコア208を設計プロセッサ204に追加したり除去したりしてもよいし、設計プロセッサの複数のレジスタ452の一部であるプロセッサ状態レジスタ452’のビットを有効にすることによってMISAコア208を有効にしたり無効にしたりしてもよい。
MISAコア208は、外部メモリインターフェース以下の周波数で動作可能である点で拡張可能である。例えば、メモリインターフェースが533MHzで動作している場合、1つのMISAコア208が533MHzで動作する、2つのMISAコアが266MHZで動作する、4つのMISAコアが133MHzで動作する、または、任意の他の数のMISAコアがそれに応じた周波数で動作することが可能である。MISAコア208の処理速度は、コアの電力消費の大部分を決定する。処理速度が遅いほど電量消費が小さくなり、速度が速いほど電力消費が大きくなる。したがって、プロセッサ状態レジスタ452’で有効にされるMISAコア208の数および速度を選択することにより、電力消費を制限することが所望の動作点である場合に電力消費を管理することができる。
MISAコア208の各々は、他のMISAコア(存在しても存在しなくてもよい)に依存しない。したがって、各MISAコア208は、他のMISAコアと独立して動作しうる。
図4Bに示すように、1つのMISAコア450は、デコードユニット454と、整数計算ユニット456と、メモリ演算ユニット458と、イベント生成ユニット460と、コヒーレンシユニット462と、フロー制御ユニット464と、その他の処理ユニット468と、を備える。
データ構造470は、MISA命令セットに含まれる256の異なる命令のうちの1つを定義する8ビットの関数フィールド472を含めた224ビットを含む。より少ないまたは多い異なる命令が必要な場合、関数フィールド472に、8ビットよりも多いまたは少ないビットを用いてもよい。MISAアーキテクチャ内のデータオペランドのサイズに制限はない。
データ構造470は、次の命令で用いられるデータの入力ビット/バイト/ワード/ダブルワード数を定義する8ビットのInPortフィールド473を備える。データ構造470は、特定の関数が実行されうる前に必要なゲート遅延の数を定義する8ビットの遅延フィールド474を備える。
データ構造470は、さらに、1ビットのファンアウトフィールド475を備える。ファンアウトフィールド475は、この命令の結果が、定義された出力ノード以外のノードに分配されるか否かを特定する。
繰り返される命令を特定するために、1ビットの繰り返しフィールド476が用いられる。現行の命令の結果がI/Oサブシステムに出力されることを特定するために、1ビットのI/Oフィールド477が用いられる。
データ構造470は、さらに、宛先出力ポートの正確な位置を特定する5ビットのポートフィールド478を備える。32ビットの宛先フィールド479は、次の命令のための次のアドレスである。32ビットのデータフィールド480は、現行の命令で演算されるデータを含む。
データ構造470は、さらに、関数の電気タイミング仕様を定義するSDFフィールド481を備える。
デコードユニット454は、関数フィールド472、InPortフィールド473、遅延フィールド474、ファンアウトフィールド475、繰り返しフィールド476、I/Oフィールド477に基づいて、MISAデータ構造470をデコードし、関数フィールドによって命令された要求タスクを正しい計算関数に実行させる。
整数計算ユニット456は、ALU関数、データ移動、複製、分割、連結、バッファリングなど、標準的な整数計算関数を実行する。これらの関数は、MISAコアと、整数計算ユニットに入力されたデータオペランドとを用いて呼び出される。
メモリ演算ユニット(MOU)458は、内部メモリ406、408、410、および、外部メモリ212A〜Cに関するすべてのメモリ演算を実行する。メモリ212A〜C、406、408、410と共に働き、プロセッサ内のすべてのデータ移動を実行するロードおよび格納命令がある。MOU458は、さらに、内部メモリ406、408、410、および、外部メモリ212A〜Cに対して、読み取り要求および書き込み動作を開始する。
イベント生成ユニット460は、新しいイベントが、将来の実行のためにイベント待ち行列に格納されるか否か、そして、いつ格納されるのかを決定する。整数比較ユニット456およびメモリ演算ユニット458の実行結果に基づいて、新しいイベントが格納されるか否かを決定する複数の基準がある。基準は、以下を含みうる:新しい出力は、前サイクルの出力と異なるか?無条件呼び出しが要求されているか?ジャンプおよび条件付き計算を通して、新しいイベントの宛先に到達するか?
コヒーレンシユニット462は、MISA命令およびデータオペランドを含む内部メモリ406、408、410および外部メモリ212A〜Cの間のコヒーレンシを維持する。
フロー制御ユニット464は、所与の時点の全リソースの状態に基づいて、次のサイクル演算の命令先を決定する。イベント待ち行列210が空の状態で、もはや評価すべきコヒーレントイベントが存在しない場合、実行の状態は次のサイクルに進められ、内部レジスタがその状態変化を反映するように更新される。
IOおよびシステムトランザクションは、フロー制御ユニット464によって、異なる方法で処理される。システム書き込み要求および読み出し要求は、テストベンチプロセッサ202によって開始されたテストベンチ(TB)要件に基づいて処理される。MISAコア208は、実行されている設計コードのフローに基づいて利用可能である時にMISA実行に基づいてデータをシステムに提供することが許可されるなど、システムアクセスを生成する。次いで、要求されたシステムデータは、FIFO210に書き込まれ、システムによって決定された時間にシステムによって読み出されうる。
並列処理は、複数のMISAコア208を利用する。例えば、タスク(e)を処理するために、プロセッサは、関数を評価し、関数の論理遷移を決定し、遷移に関する遅延を計算しなければならない。このタスクは、並列処理を必要とする。典型的なプロセッサは、多数の処理サイクルおよびメモリアクセスを使って、同じタスクを達成するが、顕著に対照的に、並列プロセッサシステム200は、このタスクを完了するのに、1回のメモリアクセスおよび1回の処理サイクルしか必要としない。
設計プロセッサ204は、アクティベートされたすべてのエンティティのオペランドを演算する。すべての処理サイクルが、次のサイクルの処理に向けてスケジューリングされる必要のある新規イベントデータ412Aを生成する(イベントとは、後に処理される必要のある設計要素をアクティベートする設計ノードの入力時のデータの変化である)。新規イベントデータ412Aは、実行時に生成され、一時的なデータであり、イベントFIFO待ち行列210に保持される。現行のイベントがイベントFIFO待ち行列210から読み出され、評価されると、生成された次のサイクルのイベントが、反対側からイベントFIFO待ち行列210に書き込まれる。結果として、イベント管理を、イベントFIFO待ち行列210の管理および制御として見ることができる。
設計プロセッサ204は、さらに、関数またはゲートまたはイベントを処理するために用いられる2つの別個のオンチップメモリ406、408、410を備える。関数またはゲートまたはイベントの処理は、並列プロセッサシステム200の計算的側面を説明するための交換可能な処理であることに注意されたい。制御メモリ406は、実行時(すなわち、制御時)に実行される命令を含む。データメモリまたはイベントキャッシュ408、410は、設計の初期データおよび実行時一時データ(例えば、生成されたデータ)の両方を格納するために用いられる。データメモリまたはイベントメモリは、さらに、2つの部分に分割される。現行サイクルのデータが、その命令と同時に1つの部分から読み出される(EまたはO)。次のサイクルのデータ(EまたはO)は、他方の部分に格納される。例えば、現行サイクルにおいて、制御およびEデータ(イベント)メモリが読み出されて実行された場合、次のサイクルのデータは、Oデータ(イベント)メモリに格納される。
命令メモリキャッシュ406およびイベントデータメモリキャッシュ408には、プリフェッチユニット416によって、次のサイクルの計算のために、命令およびイベントデータがそれぞれロードされる。
プリフェッチユニット416は、対応するDRAMコントローラ214A、214B、214Cを用いて、対応する制御メモリ212Aならびにイベントデータメモリ212Bおよび212C内の情報をリトリーブおよび/または格納する。イベントFIFO待ち行列210は、次の処理サイクルのためのデータをリトリーブまたは格納する場所をプリフェッチユニット416に指示する。
命令が、それぞれのデータと共にオンチップメモリ406、408、410からフェッチされて実行されると、評価された関数の現行の出力と以前の出力データとの間に状態の変化がある場合には、次のサイクルのデータおよびアドレスが生成される。現行の命令は、以前のサイクルの出力データを含むため、比較ユニット412は、現在実行されている命令からの新規イベントデータ412Aを、以前のサイクルの実行からの以前のイベントデータ412Bと比較して、次のサイクルのメモリが、新規イベントについての情報での更新を必要とするのか否かを判定できる。情報は、更新されるか否かに関わらず、次のサイクルで評価される。
新規イベントデータ412Aが以前のサイクルの実行からの以前のイベントデータ412Bと異なる場合、次のサイクルのメモリは更新を必要とする。次のサイクルのメモリを更新することは、次のサイクルのイベントのアドレスをイベントFIFO210に書き込むことを含む。次の処理サイクルの開始時に、命令のアドレスが、イベントFIFO210から読み出され、それに応じて実行される。
演算中、ライトバックバッファ414のデータが、データメモリ212B〜212Cの一方に書き込まれると同時に、次のサイクルのデータが、プリフェッチユニット416を用いて、他方のデータメモリからフェッチされる。したがって、既存のサイクルの生成済みデータがメモリ212B〜212Cにストリーミングされると同時に、次のイベントが同じメモリから読み出される。
比較ユニット412は、MISAコア208の出力を比較して、MISAコアの出力が、格納される必要のある新規データであるか否かを判定する。MISAコア208の出力が格納される必要がない場合、比較ユニット412は、次のサイクルの計算のためのデータをリトリーブまたは格納するよう、イベントFIFO待ち行列210に通知する。
複数のオペランドに対して演算を行う多くの演算で当てはまりうるように、演算の結果が1ビット出力の生成ではない場合、その演算の宛先アドレスがトリガされ、出力の状態に関わらず、次のサイクルのイベントとして用いられる。この例では、次の演算は暗示されているので、比較ユニット412での出力比較は必要ない。
この処理は、既存のサイクルのイベントが実行されてイベントFIFO210に書き込まれるまで継続する。この処理サイクルの終わりに、2つのタスクが完了される:新たに生成されたイベントデータは、ライトバックバッファ414を用いてメインメモリ212Bおよび212Cに書き戻され、同時に、新たに生成されたイベントのアドレスは、残りの新規イベントデータがメインメモリ212A〜Cから読み出されて、実行に向けて設計プロセッサ204に提供されるように、プリフェッチユニット416に供給される。この処理は、メモリ待ち時間を全く生じさせることなしに、1サイクルメモリアクセスを保証する。
制御メモリ212A、イベントデータメモリ212B、212Cは、設計プロセッサ204の外部にあり(すなわち、オフチップであり)、すぐ近く、すなわち、設計プロセッサ204と同じ回路基板上にあってよい。制御メモリ212A、イベントデータメモリ212Bおよび212Cの記憶場所の中でのデータの組織化は、メモリ待ち時間のボトルネックを低減して、一部の例では桁違いにスループットを改善するので、重要である。
図5は、本発明の実施形態に従って、代表的な設計検証システム500に含まれる並列プロセッサシステム200を示す図である。図6Aは、本発明の一実施形態に従って、並列プロセッサ200での実行に向けて設計を準備する際に実行される方法動作600を示すフローチャートである。ここに図示された動作は例示であり、いくつかの動作がサブ動作を含んでもよく、別の例において、ここに記載された特定の動作が図の動作に含まれなくてもよいことを理解されたい。これを念頭に置いて、以下では、方法動作600について、設計検証システム500と併せて説明する。
並列プロセッサ200およびそれに関連付けられたメモリは、拡張カード502(例えば、PCIカードまたは任意の他の適切な標準インターフェースカード)に収納されてもよいし、上述のような様々なインターフェース構成要素と共にコンピュータのマザーボードに直接収納されてもよい。動作602で、並列プロセッサ200は、I/Oインターフェース220を介して典型的なサーバ120に接続される。上述のように、I/Oインターフェース220は、USBインターフェースまたは任意の他の適切なデータ接続システム(例えば、イーサネット(登録商標)、PCI、PCIエクスプレス、光ネットワーク、無線ネットワークなど)であってよい。典型的なサーバ120は、対応するインターフェースのいずれかを含むPCまたは任意の他のコンピュータシステムであってよい。
設計520は、任意の適切な表現の設計(例えば、Verilog、VHDLなど)であってよい。設計520は、並列プロセッサシステムのISAコンパイラ(MISA)510によって設定された設計プロセッサ204の命令にコンパイルされる。MISAコンパイラ510は、設計を直接的に並列プロセッサのISAにコンパイルする(すなわち、ネイティブコンパイル)。MISAコンパイラ510は、2つの主要部分:プリプロセッサ532およびISAコンパイラ534を有する。
動作604で、プリプロセッサ532は、設計を構文解析して、設計要素の関数依存性を記述するフォーマットに最適化し、動作606で、この関数依存性を含む 70を出力する。プリプロセッサへの入力は、標準的な設計言語であり、構文解析および最適化の機能は、市販またはオープンソースの形態で入手可能な標準的な商用ソフトウェアパッケージによって提供される標準機能であってもよい。
動作608で、構文解析済みのプリプロセッサ532の出力は、MISAコンパイラ534に入力される。動作610で、MISAコンパイラ534は、1セットのアセンブリレベルのコードを生成し、次いで、コードは、動作612で、ローダ522によって設計プロセッサのSDRAMメモリ212A〜Cに直接ロードされる。
MISAコンパイラ534は、プリプロセッサ532からの設計の接続情報を保持および利用して、次の命令の位置へのポインタと、設計の全メモリ空間または設計のメモリレイアウト内での場所とを提供する。メモリポインタおよび記憶場所は、実行時に設計プロセッサ204によって利用され、メモリからの命令のプリフェッチを可能にし、ひいては、メモリ待ち時間をほとんどゼロに低減することを可能にする。メモリから命令をプリフェッチする際に起きる唯一の遅延は、メモリ内のページをアクティベートしてアクティベートされたメモリページの内容を読み出すのに必要な遅延である。実行の次の段階に必要な命令およびデータを含む内容を読み出す前に、メモリページをアクティベートするために、十分な時間を利用できる。
図6Bは、本発明の一実施形態に従って、並列プロセッサ200での実行に向けてアプリケーションを準備する際に実行される方法動作620を示すフローチャートである。ここに図示された動作は例示であり、いくつかの動作がサブ動作を含んでもよく、別の例において、ここに記載された特定の動作が図の動作に含まれなくてもよいことを理解されたい。これを念頭に置いて、以下では、方法動作620について、図5に示した設計検証システム500と併せて説明する。
テストベンチアプリケーション512は、任意の適切なテストベンチアプリケーション(例えば、C言語、Vera、e、HDLなど)であってよい。任意選択的な動作622で、テストベンチアプリケーション512は、C言語アプリケーションでない場合、Cプログラミング言語コンバータ514にロードされる。動作624で、テストベンチアプリケーション512は、コンバータ514によってCプログラミング言語に変換される。
変換されたテストベンチアプリケーションは、動作626で、典型的なCコンパイラ516に入力される。変換されたテストベンチアプリケーションは、動作628で、典型的なCコンパイラ516を用いてコンパイルされる。動作630で、ローダ518が、コンパイル済みのテストベンチアプリケーションをテストベンチメモリ202Aにロードする。
図6Cは、本発明の一実施形態に従って、代表的な設計検証システム500に含まれる並列プロセッサ200を動作させる際に実行される方法動作650を示すフローチャートである。ここに図示された動作は例示であり、いくつかの動作がサブ動作を含んでもよく、別の例において、ここに記載された特定の動作が図の動作に含まれなくてもよいことを理解されたい。これを念頭に置いて、以下では、方法動作650について説明する。図6Aおよび図6Bに記載したように、設計およびテストベンチアプリケーションがコンパイルされ、並列プロセッサ200のメモリ212A〜Cおよび202Aにロードされると、並列プロセッサは、方法動作650で設計検証を実行できる。
動作652で、テストベンチプロセッサ202は、最初の検証命令をロードする。最初の検証命令は、実行すべき次の命令に対応するメモリポインタを含む。動作654で、テストベンチプロセッサ202は、ロードされた検証命令を実行する。同時に、テストベンチプロセッサ202は、実行すべき次の命令をロードする。
例えば、動作654で、テストベンチプロセッサ202は、通信ユニット206を通して、設計プロセッサ204から最初の検証データを要求してもよいし、データを設計プロセッサ204に送信してもよい。現行サイクルの命令実行中、次のサイクルの命令は、同時にフェッチされて、次の利用のためにオンチップメモリに置かれるため、制御フロー処理パラダイムにより、典型的なプロセッサ100で見られたようなメモリの遅延および待ち時間が回避される。
動作656で、設計プロセッサ204は、第1の検証イベントデータを処理する。図4を参照して上述したように、現行の命令は、以前のサイクルの出力データを含むため、動作658において、比較ユニット412は、現在実行されている命令からの新規イベントデータ412Aを、以前のサイクルの実行からの以前のイベントデータ412Bと比較して、次のサイクルのメモリが、次のサイクルで評価される必要のある新規イベントについての情報での更新を必要とするのか否かを判定できる。
新規イベントデータ412Aが、以前のサイクルの実行からの以前のイベントデータ412Bと異ならない場合、動作660で、イベントデータ412Aのみが更新されればよい。
新規イベントデータ412Aが以前のサイクルの実行からの以前のイベントデータ412Bと異なる場合、次のサイクルのメモリは更新を必要とする。次のサイクルのメモリを更新することは、動作662で、次のサイクルのイベントのアドレス414をイベントFIFO210に書き込むことを含む。
設計検証を完了させるのに、さらなる検証命令が必要な場合、方法動作は、動作664で判定された通りに動作654に戻る。設計検証が完了した場合、方法動作は終了しうる。
MISA510は、メモリ待ち時間を全く生じさせることなしに、設計のコンパイルおよび実行を提供する。MISA510は、約256以上の演算の定義を可能にする。MISA510は、制御およびデータオペランドを組み合わせて1つのメモリ演算にする。結果として、演算を完了するのに必要な命令フィールドのビットおよびデータビットをすべて得るために、1回のメモリフェッチだけで済む。上述のメモリ待ち時間削減技術と、MISA510および並列プロセッサ200のハードウェアアーキテクチャとを組み合わせると、メモリからの命令をストリーミングのようにフェッチおよび処理することが可能になる。
MISA510および並列プロセッサ200のハードウェアアーキテクチャは、1メモリサイクル当たり1演算という持続的な速度を提供する。より速い速度(例えば、演算当たり1/2メモリサイクル)を達成するために、さらなるメモリインターフェースを追加することができる。このように、この解決法は、より速い速度を達成するために拡張可能である。メモリサイクルの半分でイベントを評価する一例として、合計6のメモリインターフェースのために制御メモリおよび2つのイベントデータメモリを追加する。インターフェースの総数を12に増やす、または、超高速インターフェースのように、他の手段によって求められる帯域幅を拡大すると、イベントの処理に必要な時間は、メモリサイクルアクセスの1/8に減少する。これにより、3つのメモリインターフェースの400倍に性能が向上し、100倍の性能向上が可能になる。
MISA510は、さらに、設計におけるメモリのフットプリントおよび対応するランタイム実行を劇的に低減する。比較として、システムメモリマップ540が図5に示されており、典型的なメモリマップ112が図1に示されている。
上述のように、設計およびテストベンチアプリケーションによって用いられるメモリは、並列プロセッサ200のカード502に設けられており、サーバのメモリ内には存在しない。典型的なシミュレータコードは大きく、通例、約50から約100MB以上のサイズである。コンパイルされると、典型的なシミュレータは、サーバの利用可能メモリのうちの大部分を占める。
典型的なソフトウェアシミュレータは、設計サイズに関わらない最小のコードサイズを有する。設計サイズが増大すると、典型的なシミュレータの実行時メモリ使用量およびワーキングセットが、それに応じて大きくなる。結果として、各回路評価は、典型的な検証アプリケーションでは、メモリとの間で複数回のアクセスを必要とする。
並列プロセッサ200は、典型的なシミュレータシステム100と異なり、ゲート当たりメモリ空間の約10%しか必要としない。並列プロセッサ200の性能は一定かつ決定論的であり、メモリサイズおよび必要メモリは実行時に変化しない。
並列プロセッサ200は、標準的なサーバプラットフォーム(例えば、システム100)と比べると、100倍以上の回路検証処理性能を提供しうる。例えば、100倍の性能向上は、以下のように算出される:2入力のNANDゲートを評価するには、4つの半導体トランジスタの構築が必要である。典型的なサーバシステムにおける大型の設計(例えば、サイクル当たり100万超のイベントを有する設計)に関しては、市販のシミュレータを用いるのに、約5回のメモリアクセスが必要である。典型的なメモリアクセスは、約50nsを必要とする。したがって、典型的なサーバシステムで2入力のゲートを評価するには、約250nsが必要になる。一方、MISAプロセッサは、メモリ待ち時間を全く生じさせることなく、1回のメモリアクセスしか必要としない。MISAプロセッサのアクセスが2.5nsのサイクル時間(400MHzのSDRAMメモリについてのサイクル時間など)であったとすれば、典型的な検証システムの100倍の性能を有することになる。図7は、本発明の実施形態に従って、FPGAプロトタイプ並列システム700を示すブロック図である。テスト段階のFPGAプロトタイプ並列システム700の設計は、Verilogゲートレベルの設計と、単純なVerilogテストベンチとを利用し、テストベンチは、96の32ビット加算器を含み、各加算器は、加算器当たり192のゲートを備え、合計で約18,432のゲートおよび約40,000のイベントがある。テストベンチは、96の加算器すべてを同時かつ並列に駆動する。Mentor Graphics社のModelsimというVerilogシミュレータ(Alteraウェブエディション、バージョン6.1)に含まれるシミュレーションハードウェアおよびソフトウェアを、2.67GHzの速度および4GBの物理メモリを備えたIntel Core i5(デュアルコア)プロセッサ上で実行した。
FPGAプロトタイプ並列システム700で用いられているFPGAは、50MHzで動作するAltera Cylcone III FPGAである。FPGAプロトタイプ並列システム700は、テストベンチプロセッサ702と、設計CPU704と、テストベンチメモリ702Aと、I/Oインターフェース720(この実施形態では、USB)とを備える。メモリコントローラ716が、テストベンチメモリをテストベンチプロセッサ702に接続する。テストベンチプロセッサ702は、さらに、二次キャッシュ702Cに接続されている。
テストベンチプロセッサ702は、図2A〜図5を参照して上述したテストベンチプロセッサ202と同じ機能を提供する。設計CPU704は、上述の設計プロセッサ204と同じ機能を提供する。I/Oインターフェース720は、FPGAプロトタイプ並列システム700と、結果としての出力データを表示するための外部コンピュータシステム730との間のデータ通信を提供する。
設計は、上述のMISA命令セットにコンパイルされた。プロトタイプ並列プロセッサシステム700のためのテストベンチアプリケーションは、標準的なサーバベースのプラットフォーム(すなわち、上述のシステム100)と共に用いられるVerilogテストベンチと同じ関数を実行する単純なCプログラムである。Cテストベンチアプリケーションは、設計のコンパイルの際にMISAコンパイラ510によって生成された情報を利用する。生成されたオペランドは、テストベンチプロセッサ702の書き込み要求を開始して加算演算の完了後の加算器の演算結果を読み出すことによって、命令メモリアドレスに書き込まれる。
Cテストベンチは、Altera社のNiosIIプロセッサの開発環境の一部であるCコンパイラを用いてコンパイルされた。次いで、コンパイルされたCテストベンチは、テストベンチプロセッサのメモリ702A、702Cにロードされた。
設計プロセッサ704は、まず、Verilog RTLで実装され、Modelsimシミュレータを用いて機能することを検証された後に、テストベンチプロセッサ702をさらに含んだ同じAltera Cyclone III FPGAを用いて実装された。
テストベンチプロセッサ702は、Cテストベンチを実行し、インターフェース720に接続されたコンピュータ730を通して、テストベンチを実行して演算の結果を読み出すように命令された。96の32ビット加算器すべてが、この実験でテストされた。典型的なサーバシステム100と比べて、およそ100倍の性能向上が実現され、検証された。
上述のテストベンチおよび設計の実施形態は、代表的な実施形態にすぎないことを理解されたい。
本明細書に記載の発明およびその部分は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な家電、ミニコンピュータ、メインフレームコンピュータなど、他のコンピュータシステム構成で実施されてもよい。本発明は、ネットワークを通して接続された遠隔処理デバイスによってタスクが実行される分散コンピューティング環境で実施されてもよい。
上述の実施形態を念頭に置いて、本発明は、コンピュータシステムに格納されたデータを含め、コンピュータによって実行される様々な動作を用いてよいことを理解されたい。これらの動作は、物理量の物理操作を必要とするものである。通常、必ずしも当てはまるわけではないが、これらの物理量は、格納、転送、合成、比較、および、その他の操作を施すことが可能な電気または磁気の信号の形態を取る。さらに、実行される操作は、生成、特定、決定、または、比較などの用語で呼ばれることが多い。
本発明の一部を形成する本明細書で説明した動作はいずれも、有用な機械動作である。本発明は、さらに、これらの動作を実行するためのデバイスまたは装置に関する。装置は、専用コンピュータなど、必要とされる目的向けに特別に構築されてよい。専用コンピュータとして規定された場合、コンピュータは、特殊目的に含まれない他の処理、プログラム実行、または、ルーチンも実行しつつ、特殊目的のために動作することができる。あるいは、動作は、コンピュータメモリ、キャッシュに格納されたまたはネットワークを介して取得された1または複数のコンピュータプログラムによって選択的にアクティベートまたは構成された汎用コンピュータで処理されてもよい。データがネットワークを介して取得されると、そのデータは、ネットワーク上の他のコンピュータ(例えば、クラウドのコンピューティング資源)によって処理されうる。
本発明の実施形態は、データを或る状態から別の状態に変換するマシンとして規定されてもよい。変換されたデータは、ストレージに保存された後に、プロセッサによって操作されうる。このように、プロセッサは、データを或るものから他のものに変換する。さらに、方法は、ネットワークを介して接続されうる1または複数のマシンまたはプロセッサによって処理されうる。各マシンは、データを或る状態またはものから別の状態またはものに変換することが可能であり、さらに、データを処理、データをストレージに保存、ネットワークを介してデータを送信、結果を表示、または、結果を別のマシンに通信することができる。
また、本発明は、コンピュータ読み取り可能な媒体上のコンピュータ読み取り可能なコードとして実現されてもよい。コンピュータ読み取り可能な媒体は、コンピュータシステムによって読み出し可能なデータを格納できる任意のデータ格納装置である。コンピュータ読み取り可能な媒体の例としては、ハードドライブ、ネットワーク接続ストレージ(NAS)、読み出し専用メモリ、ランダムアクセスメモリ、CD−ROM、CD−R、CD−RW、DVD、フラッシュ、磁気テープ、および、その他の光学および非光学式のデータ格納装置が挙げられる。コンピュータ読み取り可能な媒体は、コンピュータ読み取り可能なコードが、分散的に格納および実行されるように、ネットワーク接続された複数のコンピュータシステムに分散されてもよい。
理解を深めるために、上述の発明について、ある程度詳しく説明したが、添付の特許請求の範囲内で、ある程度の変更や変形を行ってもよいことは明らかである。したがって、本実施形態は、例示的なものであって、限定的なものではないとみなされ、本発明は、本明細書に示した詳細に限定されず、添付の特許請求の範囲および等価物の範囲内で変形されてよい。
設計プロセッサ204は、設計を処理する複数のMISAコア208を備える。設計は、モンタナ命令セットアーキテクチャ(MISA)にコンパイルされる。設計プロセッサ204は、1ないし128の間、もしくは、必要であればさらに多くのMISAコア208を備えうる。MISAコア208は、算術関数および論理関数など様々な計算関数、フロー制御、および、メモリ演算を実行する。図4Aに示す実装例において、設計プロセッサ204は、128個のMISAコア208を備える。図4Bは、本発明の実施形態に従って、1つのMISAコア450を示すブロック図である。図4Cは、本発明の実施形態に従ったデータ構造40を示す。MISAコア208は、検証アプリケーションをコンパイルするMISAコンパイラ534によって生成されたモンタナ命令セットデータ構造を処理する。求められる性能と、メモリインターフェースの利用可能性とに応じて、さらなるMISAコア208を設計プロセッサ204に追加したり除去したりしてもよいし、設計プロセッサの複数のレジスタ452の一部であるプロセッサ状態レジスタ452’のビットを有効にすることによってMISAコア208を有効にしたり無効にしたりしてもよい。
設計プロセッサ204は、さらに、関数またはゲートまたはイベントを処理するために用いられるつの別個のオンチップメモリ406、408、410を備える。関数またはゲートまたはイベントの処理は、並列プロセッサシステム200の計算的側面を説明するための交換可能な処理であることに注意されたい。制御メモリ406は、実行時(すなわち、制御時)に実行される命令を含む。データメモリまたはイベントキャッシュ408、410は、設計の初期データおよび実行時一時データ(例えば、生成されたデータ)の両方を格納するために用いられる。データメモリまたはイベントメモリは、さらに、2つの部分に分割される。現行サイクルのデータが、その命令と同時に1つの部分から読み出される(EまたはO)。次のサイクルのデータ(EまたはO)は、他方の部分に格納される。例えば、現行サイクルにおいて、制御およびEデータ(イベント)メモリが読み出されて実行された場合、次のサイクルのデータは、Oデータ(イベント)メモリに格納される。
FPGAプロトタイプ並列システム700で用いられているFPGAは、50MHzで動作するAltera Cyclone III FPGAである。FPGAプロトタイプ並列システム700は、テストベンチプロセッサ702と、設計CPU704と、テストベンチメモリ702Aと、I/Oインターフェース720(この実施形態では、USB)とを備える。メモリコントローラ716が、テストベンチメモリをテストベンチプロセッサ702に接続する。テストベンチプロセッサ702は、さらに、二次キャッシュ702Cに接続されている。
理解を深めるために、上述の発明について、ある程度詳しく説明したが、添付の特許請求の範囲内で、ある程度の変更や変形を行ってもよいことは明らかである。したがって、本実施形態は、例示的なものであって、限定的なものではないとみなされ、本発明は、本明細書に示した詳細に限定されず、添付の特許請求の範囲および等価物の範囲内で変形されてよい。
適用例1:
コンピュータシステムであって、制御フロー型のプロセッサである第1のプロセッサと、データフロー型のプロセッサである第2のプロセッサであって、第2のメモリシステムに接続され、前記第2のメモリシステムは、複数の命令を実行順に格納すると共に、対応する複数のイベントデータを実行順に格納し、前記複数の命令のうちの最初の命令は、前記第2のメモリシステム内の所定の位置に格納される、第2のプロセッサと、前記第1のプロセッサおよび前記第2のプロセッサに接続された実行時イベント挿入・制御ユニットと、を備え、前記第1のプロセッサ、前記第2のプロセッサ、および、前記実行時イベント挿入・制御ユニットは、共通の集積回路上にある、システム。
適用例2:
適用例1に記載のシステムであって、前記第1のプロセッサは、第1のキャッシュメモリ、第1のメモリコントローラ、および、第1のCPUを備え、前記第1のプロセッサは、第1のメモリシステムに接続されている、システム。
適用例3:
適用例1に記載のシステムであって、前記第2のプロセッサは、第2のキャッシュメモリ、第2のメモリコントローラ、および、並列に接続された複数のMISA処理コアを備える、システム。
適用例4:
適用例3に記載のシステムであって、前記第2のプロセッサは、通信ユニットによって前記第1のプロセッサに接続されている、システム。
適用例5:
適用例3に記載のシステムであって、前記第2のキャッシュメモリは、命令キャッシュメモリおよびイベントキャッシュメモリを含む、システム。
適用例6:
適用例5に記載のシステムであって、前記第2のメモリシステムは、命令メモリおよびイベントメモリを含み、前記命令メモリは、第1の対応するメモリコントローラによってプリフェッチユニットを介して制御キャッシュメモリに接続され、Eイベントメモリは、第2の対応するメモリコントローラによって前記プリフェッチユニットを介して前記イベントキャッシュメモリに接続され、Oイベントメモリは、第3の対応するメモリコントローラによって前記プリフェッチユニットを介してOキャッシュメモリに接続されている、システム。
適用例7:
適用例6に記載のシステムであって、前記第2のプロセッサは、さらに、プリフェッチユニットに接続されたイベントFIFO待ち行列を備える、システム。
適用例8:
適用例3に記載のシステムであって、前記複数のMISA処理コアは、1から約128のMISA処理コアを含む、システム。
適用例9:
適用例1に記載のシステムであって、前記第2のプロセッサは、さらに、前記複数のMISA処理コアの出力に接続された比較ユニットを備える、システム。
適用例10:
設計をテストする方法であって、第1のコンパイラでテストベンチアプリケーションをコンパイルする工程と、テストベンチプロセッサに接続されたテストベンチメモリシステムに前記コンパイルされたテストベンチアプリケーションをロードする工程であって、前記テストベンチプロセッサは、制御フロー型のプロセッサである、工程と、回路シミュレータアプリケーションで設計をシミュレートする工程と、第2のコンパイラで前記シミュレートされた設計をコンパイルする工程と、設計プロセッサに接続された設計メモリシステムに前記コンパイルされた設計アプリケーションをロードする工程であって、前記設計プロセッサは、データ型のプロセッサであり、実行時イベント挿入・制御ユニットによって前記テストベンチプロセッサに接続され、前記設計メモリシステムに前記コンパイルされた設計アプリケーションをロードする工程は、複数の命令を格納する工程、および、対応する複数のイベントデータを格納する工程を含み、前記複数の命令のうちの最初の命令は、前記設計メモリシステム内の所定の位置に格納される、工程と、前記テストベンチプロセッサでの対応する最初の命令の出力に従って、前記設計プロセッサで最初の命令を実行する工程と、を備える、方法。
適用例11:
適用例10に記載の方法であって、さらに、前記設計プロセッサで実行された前記最初の命令からの出力結果を、現行データ値と比較する工程を備える、方法。
適用例12:
適用例11に記載の方法であって、さらに、前記設計プロセッサで実行された前記最初の命令からの前記出力結果が、前記現行データ値と同じ場合に、次の命令をロードする工程を備える、方法。
適用例13:
適用例12に記載の方法であって、前記次の命令をロードする工程は、後続の命令を制御メモリキャッシュにロードする工程と、それと同時に、対応する後続のイベントデータをイベントデータキャッシュにロードする工程と、を含む、方法。
適用例14:
適用例11に記載の方法であって、さらに、前記設計プロセッサで実行された前記最初の命令からの前記出力結果が、前記現行データ値と異なる場合に、前記出力結果を格納する工程を備える、方法。
適用例15:
適用例14に記載の方法であって、前記出力結果を格納する工程は、演算キャッシュメモリに前記出力結果を格納する工程と、前記設計プロセッサに次の命令をロードする工程と、を含む、方法。
適用例16:
適用例10に記載の方法であって、前記第1のコンパイラは、前記第2のコンパイラと機能的に等価である、方法。
適用例17:
適用例10に記載の方法であって、前記第1のコンパイラおよび前記第2のコンパイラは、Cコンパイラである、方法。
適用例18:
適用例10に記載の方法であって、第2のコンパイラで前記シミュレートされた設計をコンパイルする工程は、MISAコンパイラで前記シミュレートされた設計をコンパイルした後に、前記第2のコンパイラで前記MISAコンパイルされた設計をコンパイルする工程を含む、方法。

Claims (18)

  1. コンピュータシステムであって、
    制御フロー型のプロセッサである第1のプロセッサと、
    データフロー型のプロセッサである第2のプロセッサであって、第2のメモリシステムに接続され、前記第2のメモリシステムは、複数の命令を実行順に格納すると共に、対応する複数のイベントデータを実行順に格納し、前記複数の命令のうちの最初の命令は、前記第2のメモリシステム内の所定の位置に格納される、第2のプロセッサと、
    前記第1のプロセッサおよび前記第2のプロセッサに接続された実行時イベント挿入・制御ユニットと、
    を備え、
    前記第1のプロセッサ、前記第2のプロセッサ、および、前記実行時イベント挿入・制御ユニットは、共通の集積回路上にある、システム。
  2. 請求項1に記載のシステムであって、前記第1のプロセッサは、第1のキャッシュメモリ、第1のメモリコントローラ、および、第1のCPUを備え、前記第1のプロセッサは、第1のメモリシステムに接続されている、システム。
  3. 請求項1に記載のシステムであって、前記第2のプロセッサは、第2のキャッシュメモリ、第2のメモリコントローラ、および、並列に接続された複数のMISA処理コアを備える、システム。
  4. 請求項3に記載のシステムであって、前記第2のプロセッサは、通信ユニットによって前記第1のプロセッサに接続されている、システム。
  5. 請求項3に記載のシステムであって、前記第2のキャッシュメモリは、命令キャッシュメモリおよびイベントキャッシュメモリを含む、システム。
  6. 請求項5に記載のシステムであって、前記第2のメモリシステムは、命令メモリおよびイベントメモリを含み、前記命令メモリは、第1の対応するメモリコントローラによってプリフェッチユニットを介して制御キャッシュメモリに接続され、Eイベントメモリは、第2の対応するメモリコントローラによって前記プリフェッチユニットを介して前記イベントキャッシュメモリに接続され、Oイベントメモリは、第3の対応するメモリコントローラによって前記プリフェッチユニットを介してOキャッシュメモリに接続されている、システム。
  7. 請求項6に記載のシステムであって、前記第2のプロセッサは、さらに、プリフェッチユニットに接続されたイベントFIFO待ち行列を備える、システム。
  8. 請求項3に記載のシステムであって、前記複数のMISA処理コアは、1から約128のMISA処理コアを含む、システム。
  9. 請求項1に記載のシステムであって、前記第2のプロセッサは、さらに、前記複数のMISA処理コアの出力に接続された比較ユニットを備える、システム。
  10. 設計をテストする方法であって、
    第1のコンパイラでテストベンチアプリケーションをコンパイルする工程と、
    テストベンチプロセッサに接続されたテストベンチメモリシステムに前記コンパイルされたテストベンチアプリケーションをロードする工程であって、前記テストベンチプロセッサは、制御フロー型のプロセッサである、工程と、
    回路シミュレータアプリケーションで設計をシミュレートする工程と、
    第2のコンパイラで前記シミュレートされた設計をコンパイルする工程と、
    設計プロセッサに接続された設計メモリシステムに前記コンパイルされた設計アプリケーションをロードする工程であって、前記設計プロセッサは、データ型のプロセッサであり、実行時イベント挿入・制御ユニットによって前記テストベンチプロセッサに接続され、前記設計メモリシステムに前記コンパイルされた設計アプリケーションをロードする工程は、複数の命令を格納する工程、および、対応する複数のイベントデータを格納する工程を含み、前記複数の命令のうちの最初の命令は、前記設計メモリシステム内の所定の位置に格納される、工程と、
    前記テストベンチプロセッサでの対応する最初の命令の出力に従って、前記設計プロセッサで最初の命令を実行する工程と、
    を備える、方法。
  11. 請求項10に記載の方法であって、さらに、前記設計プロセッサで実行された前記最初の命令からの出力結果を、現行データ値と比較する工程を備える、方法。
  12. 請求項11に記載の方法であって、さらに、前記設計プロセッサで実行された前記最初の命令からの前記出力結果が、前記現行データ値と同じ場合に、次の命令をロードする工程を備える、方法。
  13. 請求項12に記載の方法であって、前記次の命令をロードする工程は、
    後続の命令を制御メモリキャッシュにロードする工程と、
    それと同時に、対応する後続のイベントデータをイベントデータキャッシュにロードする工程と、
    を含む、方法。
  14. 請求項11に記載の方法であって、さらに、前記設計プロセッサで実行された前記最初の命令からの前記出力結果が、前記現行データ値と異なる場合に、前記出力結果を格納する工程を備える、方法。
  15. 請求項14に記載の方法であって、前記出力結果を格納する工程は、演算キャッシュメモリに前記出力結果を格納する工程と、前記設計プロセッサに次の命令をロードする工程と、を含む、方法。
  16. 請求項10に記載の方法であって、前記第1のコンパイラは、前記第2のコンパイラと機能的に等価である、方法。
  17. 請求項10に記載の方法であって、前記第1のコンパイラおよび前記第2のコンパイラは、Cコンパイラである、方法。
  18. 請求項10に記載の方法であって、第2のコンパイラで前記シミュレートされた設計をコンパイルする工程は、MISAコンパイラで前記シミュレートされた設計をコンパイルした後に、前記第2のコンパイラで前記MISAコンパイルされた設計をコンパイルする工程を含む、方法。
JP2014515970A 2011-06-14 2012-06-13 拡張可能な並列プロセッサのためのシステム、方法、および、装置 Pending JP2014523569A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161496900P 2011-06-14 2011-06-14
US61/496,900 2011-06-14
US13/494,913 US9430596B2 (en) 2011-06-14 2012-06-12 System, method and apparatus for a scalable parallel processor
US13/494,913 2012-06-12
PCT/US2012/042322 WO2012174167A1 (en) 2011-06-14 2012-06-13 System, method and apparatus for a scalable parallel processor

Publications (2)

Publication Number Publication Date
JP2014523569A true JP2014523569A (ja) 2014-09-11
JP2014523569A5 JP2014523569A5 (ja) 2015-07-30

Family

ID=47354375

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014515970A Pending JP2014523569A (ja) 2011-06-14 2012-06-13 拡張可能な並列プロセッサのためのシステム、方法、および、装置

Country Status (5)

Country Link
US (2) US9430596B2 (ja)
EP (1) EP2721508A4 (ja)
JP (1) JP2014523569A (ja)
KR (1) KR20140068863A (ja)
WO (1) WO2012174167A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103678114B (zh) * 2012-09-07 2018-11-02 三星电子株式会社 产生断言的设备和方法以及验证处理器的设备和方法
US10552126B2 (en) * 2013-03-15 2020-02-04 Teradata Us, Inc. Transitioning between code-based and data-based execution forms in computing systems and environments
US10564929B2 (en) * 2016-09-01 2020-02-18 Wave Computing, Inc. Communication between dataflow processing units and memories
US10360028B2 (en) * 2016-03-04 2019-07-23 Montana Systems Inc. Event-driven design simulation
US11675681B2 (en) * 2021-09-21 2023-06-13 International Business Machines Corporation Configuration of weighted address pools for component design verification
US11868786B1 (en) * 2022-01-14 2024-01-09 Cadence Design Systems, Inc. Systems and methods for distributed and parallelized emulation processor configuration
CN117935901B (zh) * 2024-02-19 2024-09-06 北京中科昊芯科技有限公司 一种用于访问sdram的emif的验证方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5969861A (ja) * 1982-10-14 1984-04-20 Matsushita Electric Ind Co Ltd デイジタル回路シミユレ−シヨン装置
JPH0212343A (ja) * 1988-03-31 1990-01-17 Internatl Business Mach Corp <Ibm> シミユレーシヨン・エンジン
JPH05108852A (ja) * 1991-10-11 1993-04-30 Sanyo Electric Co Ltd データ駆動型データ処理装置
JPH07334384A (ja) * 1994-06-03 1995-12-22 Internatl Business Mach Corp <Ibm> 多重プロセッサ・エミュレーション・システム
JP2000082094A (ja) * 1998-08-18 2000-03-21 Advantest Corp 半導体集積回路設計検証システム
JP2009517783A (ja) * 2005-12-01 2009-04-30 リーガ システムズ, インコーポレイテッド ロジックおよびメモリのシミュレーション用ハードウェア加速システム
JP2009533785A (ja) * 2006-04-17 2009-09-17 リガ システムズ, インコーポレイテッド Vliwプロセッサのための分岐および行動分割
JP2009271653A (ja) * 2008-05-02 2009-11-19 Fujitsu Ltd 消費電力見積方法、回路設計支援装置及びプログラム
JP2010128722A (ja) * 2008-11-26 2010-06-10 Canon Inc シミュレーションシステム、シミュレーション方法及びプログラム

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS54107239A (en) 1978-02-09 1979-08-22 Nec Corp Program execution order control system
US4298954A (en) * 1979-04-30 1981-11-03 International Business Machines Corporation Alternating data buffers when one buffer is empty and another buffer is variably full of data
US4701844A (en) 1984-03-30 1987-10-20 Motorola Computer Systems, Inc. Dual cache for independent prefetch and execution units
US5126966A (en) 1986-06-25 1992-06-30 Ikos Systems, Inc. High speed logic simulation system with stimulus engine using independent event channels selectively driven by independent stimulus programs
US4882673A (en) * 1987-10-02 1989-11-21 Advanced Micro Devices, Inc. Method and apparatus for testing an integrated circuit including a microprocessor and an instruction cache
JP2583949B2 (ja) 1988-03-10 1997-02-19 松下電器産業株式会社 論理シミュレーション方法と論理シミュレーション装置
US5293500A (en) 1989-02-10 1994-03-08 Mitsubishi Denki K.K. Parallel processing method and apparatus
US6163793A (en) 1994-08-05 2000-12-19 Intel Corporation Method and apparatus for using a driver program executing on a host processor to control the execution of code on an auxiliary processor
JP3543181B2 (ja) 1994-11-09 2004-07-14 株式会社ルネサステクノロジ データ処理装置
US5875293A (en) * 1995-08-08 1999-02-23 Dell Usa, L.P. System level functional testing through one or more I/O ports of an assembled computer system
US6047367A (en) 1998-01-20 2000-04-04 International Business Machines Corporation Microprocessor with improved out of order support
JP2001188745A (ja) * 1999-12-28 2001-07-10 Mitsubishi Electric Corp 制御装置及び制御方法
US6738895B1 (en) 2000-08-31 2004-05-18 Micron Technology, Inc. Method and system for substantially registerless processing
US7613858B1 (en) 2005-01-24 2009-11-03 Altera Corporation Implementing signal processing cores as application specific processors
US20070074195A1 (en) 2005-09-23 2007-03-29 Shih-Wei Liao Data transformations for streaming applications on multiprocessors
EP1783604A3 (en) 2005-11-07 2007-10-03 Slawomir Adam Janczewski Object-oriented, parallel language, method of programming and multi-processor computer
US7996203B2 (en) 2008-01-31 2011-08-09 International Business Machines Corporation Method, system, and computer program product for out of order instruction address stride prefetch performance verification
WO2010029812A1 (ja) 2008-09-09 2010-03-18 日本電気株式会社 マルチコアにおけるプログラミングシステム、その方法及びそのプログラム
US20100153934A1 (en) 2008-12-12 2010-06-17 Peter Lachner Prefetch for systems with heterogeneous architectures
US20110213949A1 (en) 2010-03-01 2011-09-01 Sonics, Inc. Methods and apparatus for optimizing concurrency in multiple core systems
CN102207916B (zh) 2011-05-30 2013-10-30 西安电子科技大学 一种基于指令预取的多核共享存储器控制设备

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5969861A (ja) * 1982-10-14 1984-04-20 Matsushita Electric Ind Co Ltd デイジタル回路シミユレ−シヨン装置
JPH0212343A (ja) * 1988-03-31 1990-01-17 Internatl Business Mach Corp <Ibm> シミユレーシヨン・エンジン
JPH05108852A (ja) * 1991-10-11 1993-04-30 Sanyo Electric Co Ltd データ駆動型データ処理装置
JPH07334384A (ja) * 1994-06-03 1995-12-22 Internatl Business Mach Corp <Ibm> 多重プロセッサ・エミュレーション・システム
JP2000082094A (ja) * 1998-08-18 2000-03-21 Advantest Corp 半導体集積回路設計検証システム
JP2009517783A (ja) * 2005-12-01 2009-04-30 リーガ システムズ, インコーポレイテッド ロジックおよびメモリのシミュレーション用ハードウェア加速システム
JP2009533785A (ja) * 2006-04-17 2009-09-17 リガ システムズ, インコーポレイテッド Vliwプロセッサのための分岐および行動分割
JP2009271653A (ja) * 2008-05-02 2009-11-19 Fujitsu Ltd 消費電力見積方法、回路設計支援装置及びプログラム
JP2010128722A (ja) * 2008-11-26 2010-06-10 Canon Inc シミュレーションシステム、シミュレーション方法及びプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
TOM BLANK: ""A survey of Hardware Accelerators Used in Computer-Aided Design"", DESIGN & TEST OF COMPUTERS, IEEE, JPN6016005336, August 1984 (1984-08-01), US, pages 21 - 39, XP011337993, ISSN: 0003254703, DOI: 10.1109/MDT.1984.5005647 *

Also Published As

Publication number Publication date
WO2012174167A1 (en) 2012-12-20
KR20140068863A (ko) 2014-06-09
EP2721508A1 (en) 2014-04-23
US20160364514A1 (en) 2016-12-15
US9430596B2 (en) 2016-08-30
US20120323549A1 (en) 2012-12-20
EP2721508A4 (en) 2015-04-01

Similar Documents

Publication Publication Date Title
Krommydas et al. Opendwarfs: Characterization of dwarf-based benchmarks on fixed and reconfigurable architectures
US20160364514A1 (en) System, Method and Apparatus for a Scalable Parallel Processor
Rogers et al. gem5-salam: A system architecture for llvm-based accelerator modeling
US20070219771A1 (en) Branching and Behavioral Partitioning for a VLIW Processor
Matthews et al. MosaicSim: A lightweight, modular simulator for heterogeneous systems
US11934825B2 (en) Event-driven design simulation
US11275582B2 (en) Event-driven design simulation
Feng et al. Heterosim: A heterogeneous cpu-fpga simulator
US9483379B2 (en) Randomly branching using hardware watchpoints
Giorgi et al. Translating timing into an architecture: the synergy of COTSon and HLS (domain expertise—designing a computer architecture via HLS)
Wunderlich et al. In-system FPGA prototyping of an Itanium microarchitecture
Li et al. Automatic data placement for CPU-FPGA heterogeneous multiprocessor System-on-Chips
Matthews et al. The MosaicSim Simulator (Full Technical Report)
Sotiriou-Xanthopoulos et al. OpenCL-based virtual prototyping and simulation of many-accelerator architectures
Bailey et al. Codesign experiences based on a virtual platform
Silbermintz et al. Soc modeling methodology for architectural exploration and software development
Martin et al. Processor Simulation and Characterization
JP2003223476A (ja) 機能シミュレーションのためのハードウェア・アクセラレーション・システム
Giorgi et al. Research Article Translating Timing into an Architecture: The Synergy of COTSon and HLS (Domain Expertise—Designing a Computer Architecture via HLS)
Zhong et al. Accelerating Data Analytics Kernels with Heterogeneous Computing
Tkachov Accelerating Unstructured Mesh Computations using Custom Streaming Architectures
Kao Performance and area evaluations of processor-based benchmarks on FPGA devices
Deng et al. Asynchronous Parallel Logic Simulation on Modern Graphics Processors
Ributzka et al. The Role of Non-strict Fine-grain Synchronization
Nigania FPGA prototyping of custom GPGPUs

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140708

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150610

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150610

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160331

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160823

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20161020

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170223

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170808