JP4676981B2 - ハードウェア記述言語(hdl)プログラムの実行 - Google Patents

ハードウェア記述言語(hdl)プログラムの実行 Download PDF

Info

Publication number
JP4676981B2
JP4676981B2 JP2007519350A JP2007519350A JP4676981B2 JP 4676981 B2 JP4676981 B2 JP 4676981B2 JP 2007519350 A JP2007519350 A JP 2007519350A JP 2007519350 A JP2007519350 A JP 2007519350A JP 4676981 B2 JP4676981 B2 JP 4676981B2
Authority
JP
Japan
Prior art keywords
processor
program
processors
instructions
programs
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
JP2007519350A
Other languages
English (en)
Other versions
JP2008505397A (ja
Inventor
エング,トミー,キミング
Original Assignee
コヒーレント ロジックス インコーポレイテッド
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 コヒーレント ロジックス インコーポレイテッド filed Critical コヒーレント ロジックス インコーポレイテッド
Publication of JP2008505397A publication Critical patent/JP2008505397A/ja
Application granted granted Critical
Publication of JP4676981B2 publication Critical patent/JP4676981B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/457Communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、ハードウェア記述言語(HDL)で記述される電子装置のハードウェア実現に関し、より詳しくは、電子システムのハードウェアを実行するためのコンパイル方法およびマルチプロセッサ・アーキテクチャに関する。
集積回路として実行される意図を有する現代の電子システムの機能は、頻繁にハードウェア記述言語(HDL)で表される。HDLの目的は、明白な形でシステムの機能を表し、次にハードウェアへ設計を変換する前に、設計の正当性を確認するためにシミュレーションできる高い生産性を有する設計の媒体を設計者に提供することである。このようなHDL記述を実際のハードウェアの実行に変換するために今日、様々な技術が存在する。HDL記述のハードウェア実行を実現する従来のアプローチは、以下の通りである。
1.特定用途向け集積回路(ASIC):主要なカスタムASIC実行ステップは、以下の構成からなる:
1.)ハードウェア論理機能ブロックにマッピングすることができるより低いレベル記述(例えばゲート・レベル・ネットリスト)へのHDLの合成;
2.)それら間のルート経路遅延を最小化するため、論理機能ブロックの配置;
3.)ブロックを相互接続するため、経路の作成;
4.)電子設計の自動化(EDA)ソフトウェア・ツールを用いた、設計機能、タイミング、電力消費および信号整合性の確認;
5.)ASICまたは複数ASICのためのマスク設定の作成;および、
6.)チップの製造。
ASIC実行の利点は、高い非反復的な設計(NRE)費用、高いリスクおよび長い設計時間を対価とする、高性能、小型の金型(低コスト)および、低電力消費である。
2.フィールド・プログラマブル・ゲート・アレイ(FPGA)
FPGAは、装置の機能がオンボードの記憶にダウンロードされる(ビット・ストリームとして)プログラムによって定義されるプログラム可能な装置である。FPGAは、プログラマブル論理機能ブロック、および、機能ブロックと接続するためのプログラマブル・ワイヤで構成される。
カスタムASICアプローチと同様に、HDL記述は、FPGAのベースアレーへ既に構築された論理機能ブロックに合成される。FPGA設計ソフトウェアは、設計に必要とされる特定の機能を実行するように、プログラマブル機能ブロックおよびワイヤを構成するために用いるビット・ストリームを作成する。
ASICアプローチと異なって、カスタムの物理的な実行は、FPGAアプローチにおいて必要とされない。FPGAアプローチは、迅速な方向転換および低い設計費用およびリスクを提供するが、代わりに、カスタムASICよりも装置費用が高く、性能が低くなり、高い電力を消費する。
ASICsおよびFPGAsは、基礎をなすハードウェアにおいて対応する論理ゲートによって、HDL記述に含まれる論理機能が直接実行される直接的なハードウェア・マッピング・アプローチである。直接的なマッピング技術の代替的なアプローチは、いわゆるプロセッサ・ベースの論理評価アプローチ(例えば、アクセラレータまたはエミュレータ)である。
プロセッサ・ベースのアプローチにおいて、論理値は「プロセッサ」のクラスタを使用して計算される。文献がプロセッサとして演算要素に言及する一方で、それらは、単一のコマンドを送ることができる実際に原始的な演算要素である。コマンドおよび対応するオペランドに応答して、もし存在する場合、原始的な演算要素は答えを出す。例えば、AND、OR、Shiftなどのような論理演算要素が実行される。オペランドを加えるまたは減ずる加算演算要素は、時々実行される。場合によっては、「プロセッサ」は、4入力機能ルックアップ・テーブルの複雑なものである。しかしながら、「プロセッサ」は汎用プロセッサの意味でのプロセッサではなく、独立してプログラムを実行しない。HDL記述は、評価のため、メモリから様々なプロセッサへ、または、様々なプロセッサからデータを送る命令のフローにコンパイルされる。複雑な論理機能は複数プロセッサおよび実行のための多くのクロックサイクルを必要とするので、単純な「プロセッサ」は、複雑な相互接続(重いデータ・トラフィック)必要条件と、長い実行時間を生成する。
複雑な(例えば汎用の)プロセッサを適用する従来の試みは、HDL記述は常に低いレベルの原始的な論理機能に合成されてきたという事実のために問題を含んでいる。例えば、従来の「プロセッサ」ベースのアプローチにおいて、コンパイラは、HDL記述を原始的な論理演算に分解し、そして、様々な「プロセッサ」によってこれらの動作の実行を予定する。各々の原始的な動作の答えは、頻繁に記憶され、それから続く論理評価の入力オペランドとして使用されるために後に検索されることを必要とする。従来の「プロセッサ」ベースのアプローチにおける重いデータ・トラフィックは、性能および電力消費の弱点である。
原始的な論理機能を汎用プロセッサの複雑な命令セットにマッピングする効果的な技術は存在しなかった。結果として、プロセッサ・ベースの論理評価技術は、システムの性能、電力消費または費用条件を殆ど満たさない単純な「プロセッサ」をしばしば採用し、設計を実現するためのASICsまたはFPGAsの現実的な代替物ではない。それゆえに、プロセッサ・ベースのアプローチは、カスタムASICにおいてハードウェアが実行される前にHDLを確認するため、主に論理エミュレーションおよびシミュレーション加速システムにおいて使われる論理評価技術に任せられてきた。これは、このようなシステムにおいて、より迅速な方向転換の代わりに、より遅い速度、より高い電力消費およびより高い費用はあまり重要でないからである。
いくつかの実施例は、より低い費用および電力消費でより高い性能を達成するため、従来のプロセッサ・ベースのアプローチを改善し、これにより、HDL記述のハードウェア実行のためのASICまたはFPGAの代替物を作成する。
一実施例において、論理評価は、汎用マイクロプロセッサに類似した複雑性を有するプロセッサを利用する。プロセッサは、制御フロー(分岐)動作と同様に演算/論理を実行するための命令をサポートする。プロセッサが複数ビット幅のデータ上で複雑な動作を実行することができるので、複雑なプロセッサの使用は、データ・トラフィック(および、このようなトラフィックをサポートする相互接続および動力)を減少させ、計算効率を増加させる。
一実施例において、HDLプログラムの実行エンジンとしての汎用マイクロプロセッサを使用する要点は、マイクロプロセッサの命令セットに旨くマッピングする形にHDLコードをコンパイルすることである。
一実施例において、コンパイル技術はデータフロー動作を制御フロー動作から分離し、したがって、一連の条件付きデータフロー動作へ電子システムの動作を変換する。条件なしのデータフロー動作は、条件設定を真として条件付きデータフロー動作として処理される。この実施例は、HDLのランダム論理がデータフロー動作を制御するために使用される主に条件つきの論理であるという事実を利用する。類似したデータパス分離技術は、他のHDL分析適用において適用されてきた。例えば、米国特許第6,145,117号を参照のこと。条件付きのデータフロー動作は、マイクロプロセッサの命令セットによくマッピングされ、複数プロセッサによる最大の並列実行のために予定される。プロセッサにおける分岐命令の使用によるデータフロー実行の制御によって、データ・トラフィックの量は、いくつかの実施例においてかなり減少する。データフロー分析は、設計のデータ場所を活用し、さらにいくつかの実施例においてデータ・トラフィックの量を減少させる。
従来の技術は、複雑かつ柔軟性のない相互接続を有する特化したハードウェアによって実行される原始的な論理機能からなる「ハードウェア」モデルにHDL記述をコンパイルまたは合成する。対照的に、一実施例は、「ソフトウェア」プログラムにHDLをコンパイルし、流線形の相互接続を有するマイクロプロセッサのアレーを使用して、結果として生じるプログラムを実行する。
一実施例において、方法は、複数プログラムへの電子システムのハードウェア記述言語(HDL)記述のコンパイルであって、前記複数プログラムの各々は、少なくとも電子システムの動作の少なくとも一部を実現するためプロセッサで実行可能な複数命令から構成されるようなコンパイル、および、複数プロセッサのうちの1つの命令メモリへの複数プログラムの各々のダウンロードからなる。実行される場合、複数プログラムを実行するためのプロセッサからなる方法および装置を実行する複数命令を記憶するコンピュータでアクセス可能な媒体もまた、考えられる。
別の一実施例において、方法は、電子システムの動作を実現するためのプロセッサで実行可能な複数命令への電子システムのハードウェア記述言語(HDL)記述のコンパイルであって、そこにおいて、前記複数命令が演算/論理命令および制御フロー命令を含み、そして、複数命令の記憶からなる。実行される場合、命令を実行するための1つまたはそれ以上のプロセッサからなる方法および装置を実行する複数命令を記憶しているコンピュータでアクセス可能な媒体もまた、考えられる。
別の実施例において、方法は、データフローの電子システムのハードウェア記述言語(HDL)の記述からの抽出;データフローに対応する演算/論理命令の生成;HDL記述からデータフローのための制御の抽出;および、制御に対応した制御フロー命令の生成からなる。実行される場合、命令を実行するため1つまたはそれ以上のプロセッサからなる方法および装置を実行する複数命令を記憶するコンピュータでアクセス可能な媒体もまた、考えられる。
また別の実施例では、方法は、分岐命令の実行であって、そこにおいて、その実行が並列の複数分岐状態の評価からなる実行;および、前記分岐命令のコード化に対応する前記複数分岐状態のうちの1つの選択からなる。対応する装置もまた、考えられる。
さらに別の実施例では、方法は、電子システムのHDL記述のコンパイルであって、前記コンパイルがHDL記述から抽出された制御論理回路の少なくとも一部をプロセッサにおけるプログラム可能な論理ブロックへのマッピングからなるようなコンパイル;および、データフロー動作及びもし存在する場合、前記制御論理回路の残りの部分のプロセッサによって実行される命令へのマッピングからなる。実行される場合、プロセッサからなる方法および装置を実行する複数命令を記憶するコンピュータでアクセス可能な媒体もまた、考えられる。
別の一実施例において、装置は相互接続される複数プロセッサからなる。各々の複数プロセッサはそれにダウンロードされるプログラムを実行するように構成され、各々のプログラムは、演算/論理命令、および、演算/論理命令の実行を制御する制御フロー命令を含む複数命令からなる。各々のプログラムは、ハードウェア記述言語(HDL)で記述される電子システムの一部の動作を表す。複数プロセッサによるプログラムの実行は、電子システムの動作を集中的に実行する。
本発明は、様々な変更および代替の形に影響されやすい一方で、その特定の実施例は図面において一例として示され、本願明細書において詳述される。
しかしながら、それらの図面およびそれの詳細な説明は、開示される特定の形に本発明を制限する意図を有さず、これに反して、その意図は、添付の請求範囲で定義される本発明の範囲内におけるすべての変更、同等物および代替物に適用されると理解されるべきである。
HDL実行システムの概要
一実施例において、電子システムのHDL記述は、オブジェクトコードにコンパイルされ(例えば、1つまたはそれ以上のプログラムであって、各々のプログラムは、プロセッサによって実行される命令セット・アーキテクチャの複数命令からなる)、1つまたはそれ以上の命令メモリにダウンロードされ、プロセッサ・システムによって実行される。プロセッサ・システムは、ターゲット電子システムにおいて単一チップまたは多重チップで実行される。HDLは、いかなる高いレベルの言語(例えば、Verilog、VHDL、C言語の派生物など)であってもよい。プロセッサ・システムによって実行される命令セット・アーキテクチャは、演算/論理命令(またはビット操作命令)、及び制御フロー命令(例えば、分岐命令、および特に条件付きの分岐命令)の両方をサポートする。
プロセッサ・システム・アーキテクチャ
一実施例において、プロセッサ・システムは相互に連結したプロセッサのアレーからなる。各々のプロセッサ(P)は、1つまたはそれ以上の演算エンジン(CE)からなる。図1に示すように、図示されたプロセッサ・システムの一実施例の基本的な構築ブロックは、演算エンジン(CE)10である。CEは、複数ビット幅データを処理するために使用される論理および演算データパス・ハードウェアからなる。図1に示すように、CE10は、レジスタ12、シフタ14、演算論理装置(ALU)16および乗算器18からなる。CEの他の構造は、所望のように、上記の構成要素および他の構成要素のスーパーセットおよび/またはサブセットを含む他の実施例において使用される。
図2に示すように。一実施例において、プロセッサ(P)20は、1つまたはそれ以上の演算エンジン(CE)(例えば図2のCE10A‐1OD)、レジスタ・ファイル(RF)12、命令メモリ(IM)22、および、実行制御24からなる。CE10A‐10Dの各々は、例えば、図1において示されるCE 10の実例であってもよい。一実施例では、CE10A‐10Dは、図1に示すように個別のレジスタ12を含まないが、むしろ、図2に示すようにレジスタ・ファイル12を共有する。したがって、1つまたはそれ以上のCE、RF、IMおよび関連する制御論理は、図2に示すようにプロセッサ(P)を構成する。マルチポートのレジスタ・ファイル(RF)は、並列に作動する複数CEが並列に作動およびデータにアクセスするようにデータを記憶する。CEの動作は、命令メモリ(IM)22に記憶された命令によって制御される。IM 22は、いかなる種類のメモリ(例えば不揮発性メモリ、スタティック・ランダムアクセスメモリ(SRAM)、命令キャッシュのようなキャッシュメモリなど)から構成されてもよい。実行制御24は、命令を引き出し、実行のためのCE 10A‐10Dにそれらを送り、RF 12などに更新された正しい答えを保証する責任を負う。図2において図示される実施例は、さらにレジスタ・ファイル12およびCE 10A‐10Dに接続される実行制御24に結合されるIM 22を含む。CE10A‐10Dは、さらにレジスタ・ファイル12に接続される。多くのCEは、プロセッサ20の様々な実施例にはいくつかのCEが含まれてもよい。
いくつかの実施例において、プロセッサ20は、典型的なASICチップのそれよりかなり短いサイクルタイムで、作動するように高度に最適化された物理的な実行ができるパイプラインマシンである。典型的なASICチップは、広範囲の並列処理で適度なサイクルタイムにおいて高いスループットを達成し、結果として、複雑なカスタム・ハードウェアになる。本願明細書において記述されるシステムのいくつかの実施例は、多くのRISCのような単純命令を実行することにより、短いサイクルタイムで並列で動作する複数プロセッサで同等またはより高いスループットを達成し、結果として、容易に異なるアプリケーションに再目的化される汎用ハードウェアになる。本質的には、本願明細書において記述されるシステムは、時分割の単純ハードウェア資源によって、高いスループットを達成する。プロセッサ20は、上記したような命令セットアーキテクチャを実行し、演算/論理命令を含み、フロー命令を制御する。
図3は、ローカル・スイッチ(LS)32を通じてデータメモリ(DM)34に相互接続される、例えば、階層的なネットワークにおけるプロセッサ(P)20A‐20Dのクラスタ30を図示する。各々のプロセッサ20A‐20Dは、例えば、図2において示されるプロセッサ20の実例であってもよい。データメモリDM34は、プロセッサ20A‐20DにおけるRF12にとっては大きすぎるデータを記憶するために使用される。一実施例において、LS32はプロセッサ20A‐20DおよびDM 34間の高い帯域幅の並列の通信を容易にする。複数クラスタは、階層的なネットワーク・トポロジを形成するためにスイッチの他の層を通じて相互接続している(例えば、一実施例のために、図4に示すように、各々のクラスタ30A‐30Dが図3において例えば示されるクラスタ30の実例でもよいようにスイッチ36によって接続されるクラスタ30A‐30Dで)。提供されたクラスタの範囲内のプロセッサ30A‐30Dは、いくつかの実施例で、異なるクラスタ30A‐30Dにおいてプロセッサよりも効率的に通信する(例えば、プロセッサを有するクラスタに含まれるDM 34を通じて)。
代替的に、図5に示すように、スイッチ40のようなクロスバー・スイッチが、PおよびDMを相互接続させるために使われる。いくつかの実施例で、異機種間接続ネットワークは、階層的およびクロスバー・トポロジの組合せによって形成される。例えば、クロスバーは、最大ローカル相互接続を提供するため、階層のより低いレベルで使用され、一方で、階層的なトポロジが、相互接続の数が実行される設計の設計階層のより高いレベルで減る傾向があるという事実を活用するため、より高いレベルの大きいクラスタを相互接続するのに使われる。
プロセッサおよび相互接続アーキテクチャの一実施例は、「散在プロセッサおよび通信要素での演算処理システム」という表題で2003年6月24日に出願され、特許公表番号がUS 20040030859であり、発明者は、マイケルB.デール、ウィリアムH. ハリディ、デビット A.ギブソンおよびクレイグ M.チェースであり、十分かつ完全に本願明細書において記述されたかのように本願明細書に引用したものとする同時係属出願の出願番号10/602,292に記述される。
プロセッサおよび相互接続アーキテクチャのある実施例だけが本願明細書において記述される一方、本願明細書に含まれる教示を使用して、処理および通信間の最適バランスを達成するために別のアーキテクチャを実行することは、当業者に明白である。
コンパイル工程
一実施例において、HDL記述は、従来の論理合成動作に類似した基礎をなす論理機能ブロックのネットワークの内部データ構造を作成するため、解析され、精巧に作り上げられる。しかしながら、論理合成とは異なり、バス、データ動作、状態機械および条件実行制御ブロック(例えば、CASE構成、if‐then構成など)は、保存される。制御動作は、制御構成から直接推定される。データ(またはデータフロー)動作は、制御構成の本体から推定される。
別の実施例において、HDL記述に記述される論理機能は、米国特許第6,145,117号に記述されたものと類似したデータ・バス走査技術を適用することによって、データ(またはデータフロー)動作および制御動作に分けられる。例えば、データ・バスは識別され、データ・バスに接続される要素は、データフロー要素として識別される。データ・バスに連結されない要素は、制御論理回路と確認される。
他の一実施例において、すべての複数ビット幅データは、データフロー動作を識別するためにデータ・バスとして処理される。
データフロー分離の後、ネットワークは、相互連結されたメモリ素子、データ演算子、および、制御論理を備える。論理機能ブロックのネットワークは、区分間の通信の最小化に基づいてプログラム区分に仕切られる。
データフロー動作は、論理的および演算プロセッサ命令にマッピングされる。制御動作は、一定の条件変数によって制御される分岐命令にマッピングされる。一連の命令は、プロセッサによる実行に適したプログラムを形成する。プログラムは、一切を含めた通信がプロセッサ間の物理的分離の増加と共に増加するので、プロセッサ20の利用できるハードウェア資源、および、相互接続距離を減少させるプロセッサ20の設置に基づいて、並列実行のためプロセッサ20に割り当てられる。例えば、互いに通信するプログラムは、相互接続上において物理的に互いに近いプロセッサ(例えば、相互接続上の他のプロセッサと比較すると、相互接続上のより低い待ち時間で通信する)に割り当てられる。さらに一般的にいえば、プロセッサに対するプログラムの割当ては、効率的に互いに通信するプロセッサに互いに通信するそれらのプログラムを割り当てることを試みる、または、同じプロセッサ上でこのようなプログラムを時分割多重する可能性さえある。例えば、プロセッサのクラスタが実行される(例えば、図4または図5)場合、同じクラスタのプロセッサは互いに「近い」、または効率的に通信し、異なるクラスのプロセッサは互いに「近く」なく同じクラスタのプロセッサより効率的ではなく通信する。近さは、物理的な場所に言及する(例えば、第1プロセッサが、第2プロセッサが第3プロセッサに位置するよりも物理的に第3プロセッサのより近くにある場合、第1プロセッサは、第2プロセッサから第3プロセッサまでよりも近い)。通信の効率は、より短い待ち時間および/またはより高い帯域幅などに関して測定される。
実施例によっては、実行制御の複雑性を単純にするため、コンパイラは、命令配列を通じたプロセッサ間のパイプライン・インタロックおよびデータ依存関係、および/または無操作命令の挿入および/またはメッセージ通過のような明確な同期を決定する責任がある。コンパイラはレジスタ/メモリのような資源を割り当て、並列処理を最大にし、利用できるプロセッサ間で共有される並列操作をスケジュールする。スイッチの各追加的なレベルにより余分な遅延が加えられるので、コンパイラは、近傍でプロセッサと高度に接続された動作を実行するため、論理機能の場所を活用する。
プロセッサ・ハードウェア資源およびスループット間の複数トレードオフは、実行される。一実施例において、最も基本的なコンパイル・モードにおいて、HDL記述で特定された論理機能のタイミング関係は、コンパイル工程において保存される。コンパイラは、多くのプロセッサ間で並行に実行されるすべての並列動作をスケジュールする。結果として、直接のハードウェア・マッピングまたはハードウェア資源の時分割を通じてすべての並列動作を実行する十分なハードウェアがあるという条件で、HDL記述で示唆されるように、論理機能は同じ時間において完成される。
一実施例で、システムはハードウェア資源の時分割により、ハードウェア要件を削減するため、重要な動作は速度を上げまた重要でない動作は遅延させるように論理動作を再度時間調節する。
コンパイル工程の結果は、オンボードのプロセッサのための一連の命令である。一実施例において、命令はチップ全体にわたって別々のIMに記憶される。オンボードハードウェア資源がHDL記述において特定される並列動作を実行するのに十分な場合、ユーザによって特定される単一システム・サイクルにおいて、すべての動作のための十分な命令を含まなければならないだけなので、IMは浅い。
本願明細書において記述されるシステムの1つの適用において、ユーザは、単一HDLプロセッサ・チップに、設計中のチップのHDL記述をコンパイルする。しかしながら、設計中のチップの最小必要条件を越えた、追加的な動作のための命令を記憶する追加的なメモリロケーションの有効性は、複数チップ・システムをエミュレートするため、プロセッサ・チップのプログラムを可能にする。時分割ハードウェア資源にシステムへの追加的な命令は、他の部分をエミュレートするために用いられる。このようなエミュレーション手段がより遅く動く場合であっても、それは、依然として、いくつかの実施例で、FPGAを使用した既存のエミュレーション法よりかなり速くかつ安価である。
一実施例のために、図6および7はコンパイル工程を図示する。特に、図6は、実行のため、1つまたはそれ以上のプログラムへのHDL供給源の変換を図示しているブロック図である。図7は、コンパイラおよび特定のポスト-コンパイル動作の一実施例のための高レベルのフローチャートである。すなわち、コンパイラは実行される場合、図7において示される(および概略的に、図6において図示される)動作を実行する複数命令から構成される。
図6は、HDL供給源50(電子システムのHDL記述を記憶する1つまたはそれ以上のコンピュータ・ファイルから構成される)を図示する。一般に、HDL供給源50は、1つまたはそれ以上のHDL文(例えば、図6におけるHDLステートメント1からN)から構成されてもよい。HDLにおいて定義される構文を使用して、HDL文は電子システムおよびその論理動作を記述する。HDL文は、例えばレジスタ、フロップス、ラッチおよび他のクロック付き記憶装置のようなメモリ素子に記憶されるデータに実行される例えば加算器、シフタ、マルチプレクサ(多重通信回路)などのような電子システムのデータフロー要素に対応するデータフロー動作を含む。一般に、データフロー要素は、1つまたはそれ以上のデータ・バス(またはオペランド)を受容し、結果を生成するためにオペランドを操作する。加えて、HDL文は、データフロー要素を制御する電子システムにおいて論理(またランダム論理とも称される)を制御するために対応する制御動作を含む。少なくともいくつかのランダム論理は、データフロー要素に接続され、したがって、制御論理/動作およびデータフロー要素/動作の関係は、HDL供給源50から検出される。
コンパイラは、HDL供給源50において特定されるデータフロー動作および制御フロー動作を検出するためにHDL供給源50を分析する。すなわち、コンパイラはHDL供給源50(図7におけるブロック80)を解析する。コンパイラは、データフロー動作(例えばデータ演算子、メモリなど)を識別するため、バス(例えば様々な実施例において、HDL供給源50において明白に定義されたバス、または、HDL供給源50におけるいかなる複数ビット信号の値)を横断し、対応する制御動作(図7におけるブロック82)を識別するために制御信号を横断する。すなわち、データフロー要素はバスに接続されるとして検出され、一方で、制御論理は、データフロー要素の制御ポート、制御信号または他の制御論理と接続されるとして検出される。コンパイラは、HDL供給源50(図7におけるブロック84)において記述される電子システムを表すため、データフロー要素および制御論理のネットワークを形成する。いくつかの実施例で、ブロック80、82および84は論理変換動作に類似する(例えば、本願明細書にその全体を引用した米国特許第6,145,117号の記述に類似している)。
コンパイラは、ネットワークをプログラム区分に仕切る(例えば図6および図7のブロック86において示されるデータ構造52におけるプログラム区分54A‐54C)。各々の区分は、一緒に接続されるデータフロー要素に対応するデータフロー動作、および、それらのデータフロー要素を制御する制御論理に対応する制御動作から構成される。図6において、各々のプログラム区分54A‐54Cは、データフロー(参照番号56A‐56C)および制御論理(参照番号58A‐58C)を含む。いくつかのケースにおいて、プログラム区分(例えば区分54D)は、制御論理58Dのみしか含んでいない。制御論理回路58Dは、対応しているデータフロー要素を直接制御しない論理から構成される。通常、残りの制御論理回路58Dは、他の制御論理回路58A‐58Cと比較すると比較的小さい。
区分間の通信が可能な限り最小化されるように、区分は選ばれる。すなわち、以前に検出されたデータフロー要素に接続されるデータフロー要素が位置する場合、そのデータフロー要素/動作は以前に検出されたデータフロー要素/動作と同じ区分に含まれる。データフロー要素が以前に検出されたデータフロー要素に接続されない場合、データフロー要素/動作は異なるプログラム区分に含まれる。同様に、以前に検出されたデータフロー要素、または、以前に検出されたデータフロー要素を制御する制御論理に接続する制御論理が検出される場合、その制御論理/動作は、以前に検出されたデータフロー要素と同じ区分に含まれる。以前に検出されたデータフロー要素にも、また、以前に検出されたデータフロー要素に接続される制御論理にも接続されない制御論理が検出される場合、制御論理/動作は、異なるプログラム区分に含まれる。データフロー要素(および制御論理)間の接続はHDL記述において明確であり、したがって、接続は容易に検出される。
図6は、いくつかのデータフロー要素を含むように、データフロー要素を制御するため制御論理回路58Aからの接続を有するデータフロー56Aを図示する。データフロー要素は、一緒に接続され、場合によっては、またプログラム区分への入力および出力を有する。例えば、図6で、データフロー56Aは、プログラム区分54Bから(特に、データフロー56B‐矢印60から)入力を受容する。コンパイラが区分間の通信の最小化を試みる一方で、場合によっては、通信が回避されない。
コンパイラは、提供されたプログラム区分(区分54Aの矢印62)におけるデータフロー動作に対応する演算/論理命令(ALU命令)を生成し、対応する制御論理(区分54Aの矢印64)に基づいてALU命令の実行を制御するための条件付きの分岐命令のような制御フロー命令を生成する。ALU命令はまた、制御論理から生成される(例えば、論理機能が条件付きの分岐命令の条件として計算されるにはあまりに複雑である場合、制御論理において特定される論理機能を計算する)。ALU命令は、ビット操作命令(例えばシフト、マスク、AND、ORの類の論理命令など)および、演算命令(例えば、加算、減算、乗算など)を含む。命令は、コンパイラによって生成されるプログラムを実行するプロセッサによって実行される命令セットアーキテクチャにおいて定義される。
コンパイラは、プロセッサによって実行されるプログラムとして、ALU命令および制御フロー命令を配置する(例えば図6および図7のブロック88のプログラム66A‐66D)。各々のプログラム区分54A‐54Dは、結果として対応するプログラム66A‐66Dになる。一般に、制御フロー命令は、ALU命令の実行を制御する。例えば、2‐1多重通信回路は、1つまたはそれ以上のALU命令の2つのセットとして実行される。1セットは、多重通信回路の出力に2‐1多重通信回路の第1入力を伝達し、および、別のセットは、多重通信回路の出力に2‐1多重通信回路の第2入力を伝達する。条件付きの分岐は、結果に基づいたコードのセットの1つに選択および分岐を評価する。より大きい数の多重通信回路入力は、コードの追加的なセットによって同様に実行される。別の例として、1つのオペランドを別のオペランドによって示される多くのビットによってシフトするシフタが実行される。制御信号は、シフトが可能であるか否かを制御する。制御信号に基づく条件付きの分岐は、シフト・コードが実行されるか否かを制御する。多くの可能なコード分岐から1つのコード分岐だけが実行されるので、HDLハードウェア認識の他の方法と比較して、電力消費は減少する。
コンパイラ(または、コンパイラによって出力されたプログラム66A‐66Dを実行するスケジューラ・プログラム)は、プログラムを実行(図7のブロック90)のためのプロセッサに割り当てる。プロセッサに対するプログラムの配分は、対応しているプログラムが通信する場合プロセッサが通信することができる効率を考慮する。例えば、プロセッサP1‐P4(参照番号68A‐68D)は図6において示され、プロセッサ68A‐68Bは共有メモリ70に連結される。したがって、プロセッサ68A‐68Bは効率的に通信し、プログラム66A‐66B(通信する)は共有メモリ70で通信するそれらのプロセッサに割り当てられる。他のプログラム66C‐66Dは、残りのプロセッサ68C‐68Dに割り当てられる。プロセッサ68A‐68Dは、いかなる構造(例えば図3および/または4において示される構造)のプロセッサ20の実例であってもよい。
共有メモリ70が図示された実施例の通信に使われる一方、他の実施例は、他のやり方において通信する。例えば、プロセッサはプロセッサ間の相互接続を通じて直接メッセージまたは制御信号を通信する。それらが物理的に互いに近い場合、プロセッサは効率的に通信する(例えば、他のプロセッサの待ち時間と比較すると、相互接続における待ち時間が低い通信が使われる)。さらに他の実施例において、プロセッサは、効率に関してほぼ等しく通信し、プログラムはいかなる所望のやり方においてもプロセッサに割り当てられる。
コンパイラまたはスケジューラは、実行(ブロック92)のため割り当てられたプロセッサに、プログラム66A‐66Dをダウンロードし、プロセッサはプログラム(ブロック94)を実行する。各々がそれらの割り当てられたプログラムを実行するプロセッサは、HDL供給源50において記述される電子システムの機能を実行する。
ある場合は、付加的な加速のため構成可能な論理(例えばFGPAまたは他の構成可能論理回路)である制御動作を実施することが望ましい。ある場合は、プロセッサはFGPAまたはプロセッサへプログラムをダウンロードする一部としてプログラムされるほかの構成可能な論理回路を含む。
プログラム区分の数は、HDL供給源50、HDL供給源50それ自体、生成されるプログラムのサイズなどによって記述される電子システムに基づいて変化することに注意するべきである。加えて、プログラムを実行するための提供された装置のプロセッサの数はまた、変化する。
命令実行制御
IMの命令語は、複数フィールドから構成される。一実施例では、命令語における大部分のビットが、CEのデータパスの動作およびRFまたはDMからのメモリ・アクセスの制御に使われる。他のフィールドは、命令の配列を制御する。プログラム可能な論理アレイ・ハードウェアの形である条件論理アレイ(CLA)が、条件付きの動作のHDLプログラム変数を評価するため、一実施例において、実行制御論理において使われる。実質的に、IMおよびCLAの組合せがプロセッサの分岐動作を実行する。
CLAは、並列に分岐条件を評価し、一連の連続した命令の分岐条件を評価する従来のアプローチの上での実行を加速する。
図8は、分岐命令を実行するためのプロセッサの一実施例における命令メモリ98およびハードウェアの典型的な分岐命令を図示する。図8の分岐命令において、次のアドレス/条件コード選択(NACC)フィールド100は、分岐条件が満たされたかどうかを検査するため、CLAを供給する適切な制御変数を選ぶために使われる選択コードを含む。大きくかつ遅いCLAの使用を回避するために、図示された実施例において、複数CLA102A‐102Nが使われる。分岐の条件が正であると検査された場合、選択されたCLAは、その出力に次にアドレスを生成する。すなわち、コンパイラは、分岐条件が満たされる場合、実行される1つまたはそれ以上のALU命令のアドレスを生成するためにCLAを構成し、分岐条件が満たされない場合、実行される1つまたはそれ以上のALU命令のアドレスまたは別の分岐命令を生成するためにCLAを構成する。例えば、満たされた分岐条件は、加算またはシフト動作がRFから特定のオペランドに実行されることを示す。分岐条件が満たされる場合生成されるアドレスは、加算器またはシフタ・データフロー要素に対応するデータフロー動作を実行する1つまたはそれ以上の命令のIM98におけるアドレスである。次のアドレス供給源選択(NASS)フィールド104は、マルチプレクサ(多重通信回路)106を通じて、選択されたCLA102A‐102Nから分岐アドレスの供給源を選ぶ。選択されたアドレスは、命令メモリ98から次の命令を引き出すためにプログラム・アドレスレジスタ108に提供される。
コンパイラは、CLAによって評価される制御変数を割り当てる。CLAの入出力レジスタは、一実施例において、RFの拡張部分としてマッピングされ、アドレス指定される。
一実施例において、一度電源を入れられると各々のCLAの機能はセットアップされ、そして、新規なHDLプログラムがメモリにロードされるまで、構造は変わらない。非分岐命令において、NACCフィールドは次の命令のアドレスを含み、NASSフィールドはそれを次のアドレスとして選ぶ。
本発明の別の一実施例において、CLAは絶対分岐アドレスの代わりにオフセットされるアドレスを生成する。次にオフセットは、次のアドレスを生成するためにこのアドレスに加えられる。
CLAの拡張された使用
頻繁に制御論理において見られるように、多層のブール演算は、場合によって、単独でプロセッサのビット操作命令のみにマッピングされる場合、多数のプロセッサ・サイクルを消費することに注意することは重要である。それゆえに、分岐条件の復号化に加えて、CLAは実行プロセッサ命令よりも少ないサイクルで状態機械またはランダム論理を評価するように構成される。ランダム論理評価のためのCLAのこのような構成は、図6および7に関して前述したように、FPGAの一実施例または制御論理を実行するように構成されている他の構成可能な論理である。
図9は、CLA(例えばCLA102A)の一実施例である。図示された実施例において、CLAは、入力レジスタ114、AND配列116、OR配列118および出力レジスタ120を含む。入力レジスタ114は、出力レジスタ120に連結されるOR配列118に連結されるAND配列116に連結される。入力レジスタ114からのビットは、AND配列116(プログラム可能である)において、選択的にAND処理される。AND配列116から出力されたビットは、出力レジスタ120のための出力ビットを生じるため、OR配列118(これもプログラム可能である)によって、選択的にOR処理される。出力レジスタおよび入力レジスタ間のフィードバックパスは、状態機械を実行するために用いられる。代替的に、OR配列118の出力は、複数サイクルの連続した論理を実行するため、クロスバー・スイッチ110を通じて入力レジスタに連結される。OR配列118からのいかなる出力ビットも、クロスバー・スイッチ110を通じて入力レジスタ114のいかなる入力ビットにも供給される。
図示された実施例で、多重通信回路112A〜112N(例えば入力レジスタ114でビット当たり1多重通信回路112あ〜112N迄)クロスバースイッチ110の出力、出力レジスタビット120(例えば有限状態機械スイッチ)またはプロセッサのデータバスからのビット、該部I/O、命令メモリ98のNACCフィールド100等の間で選択するために使用される。多重通信回路112A〜112Nは同様にCLAを構成するためプログラム可能である。
状態機械およびランダム論理評価のためのCLAの構成は、資源利用および性能判定基準に基づいてコンパイラによって決定され、一度電源を入れられるとプログラムされ、または実行中、再構成される。
チップ外からの入力は、CLAレジスタに入れられる。
出力レジスタは、次のアドレスまたはオフセットをプログラム・アドレス108などに提供するため、チップ外通信のためのIOパッドに接続される。
コンピュータ支援設計ツールおよび環境
設計アナライザ‐設計アナライザは、HDL記述において特定されるマイクロ・アーキテクチャを見るため設計者のための視覚化ツールである。設計アナライザは、デバッグおよび最適化を容易にするために階層、データフローおよび設計の制御フローのグラフ表示を提供する。
シミュレータ‐シミュレータは、サイクルの正確な結果でHDL記述を実行しているプロセッサの機能をシミュレーションする。
スケジューラ‐スケジューラは、性能を最大にするために割り当てられたプロセッサによる実行のためデータパス、メモリおよびIO演算のスケジュールを行う。手入力メカニズムは、手動でのスケジューリングを最適化するために提供される。
コンパイラ‐コンパイラは、上記のようなプロセッサによる実行のために適切な対象コードに、HDL記述をコンパイルする。それはまた、CLAおよびIOのようなハードウェアを構成するために構成データを生成する。
行動のシンセサイザ‐行動シンセサイザは、高水準言語(例えばCおよび様々なC言語派生物)で表現される設計の早すぎるより高水準な記述をHDL記述へ転換するか、または、プロセッサによる実行のために適切なマシン・コードに直接転換する。
コンピュータでアクセス可能な媒体およびコンピュータシステム
コンパイラは、本願明細書において記述されるように、実行される場合、コンパイラの動作を実行する複数命令からなるプログラムとして実行される。コンパイラ自体を形成している命令が、いくつかの実施例で、プロセッサ20によって実行される命令セットアーキテクチャと異なる命令セットアーキテクチャで構成される。例えば、汎用コンピュータの命令セットアーキテクチャが使われ、プロセッサ20のための結果として生じるプログラムは、汎用コンピュータからプロセッサ20へダウンロードされる。他の実施例では、コンパイラ命令は、プロセッサ20と同じ命令セットアーキテクチャから構成され、コンパイラはプロセッサ20上で実行される。同様に、スケジューラおよび他のコンピュータ支援設計ツールは、プログラムとして実行される。これらのプログラムは、記憶されるかまたは、別にコンピュータでアクセス可能な媒体上でコード化される。
ここで図10に戻ると、コンピュータでアクセス可能な媒体200のブロック図が示される。一般的に言って、コンピュータでアクセス可能な媒体は、コンピュータに命令および/またはデータを提供するため、使用の間、コンピュータによってアクセス可能ないかなる媒体も含む。例えば、コンピュータでアクセス可能な媒体は、例えば、ディスク(固定またはリムーバブル)、テープ、CD‐ROMまたはDVD‐ROM、CD‐R、CD‐RW、DVD‐R、DVD‐RW、RAM(例えば、同期ダイナミックRAM(SDRAM)Rambus、DRAM、(RDRAM)、スタティックRAM(SRAM)など)のような揮発性または不揮発性メモリ媒体、ROM、フラッシュ・メモリ、例えばユニバーサルシリアルバス(USB)インタフェースなどのような周縁インタフェース経由でアクセス可能な不揮発性メモリ(例えばフラッシュ・メモリ)のような磁性または光学媒体のような記憶媒体を含む。図10のコンピュータでアクセス可能な媒体200は、1つまたはそれ以上のコンパイラ202、分析設計データ構造52および/またはプログラム66A‐66Dを記憶する。一般に、コンピュータでアクセス可能な媒体200は、実行される場合、図7の1つ以上において示されるフローチャートの一部またはすべて、および/または、コンパイラのための図6において図解される演算を実行する命令のいかなるセットも記憶する。コンピュータでアクセス可能な媒体200はさらに、実行される場合、スケジューラまたは上記した他のいかなるコンピュータ支援設計ツールも実行する命令のいかなるセットも記憶する。コンピュータでアクセス可能な媒体200はさらに、実行される場合、プログラム66A‐66Dの一部またはすべてを実行する命令のいかなるセットも記憶する。
図11は、典型的なコンピュータシステム210の一実施例のブロック図である。図11の実施例において、コンピュータシステム210はプロセッサ212、メモリ214および様々な周縁装置216を含む。プロセッサ212は、メモリ214および周縁装置216に連結される。
プロセッサ212は、本願明細書において記述されるコンパイラにおける命令を含む命令を実行するように構成される。様々な実施例において、プロセッサ212はいかなる所望の命令セットも実行する(例えば、インテル・アーキテクチャ‐32(IA‐32、別名x86)、64ビットの拡張部分を有するIA‐32、x86‐64、PowerPC、Sparc、MIPS、ARM、IA‐64など)。実施例によっては、コンピュータシステム210は1つ以上のプロセッサを含む。
プロセッサ212は、所望の方法でメモリ214および周縁装置216に連結される。例えば、実施例によっては、プロセッサ212は様々な相互接続を経てメモリ214および/または周縁装置216に連結される。代替的にまたはさらに、1つまたはそれ以上のブリッジ・チップは、プロセッサ212、メモリ214および周縁装置216を連結するために用いられ、これらの構成要素間の複数接続を生成する。メモリ214は、メモリ・システムのいかなるタイプも含む。例えばメモリ214は、DRAM、特に、ダブルデータ信号速度(DDR)SDRAM、RDRAMを含む。メモリコントローラは、メモリ214へのインタフェースのために含まれ、および/または、プロセッサ212はメモリコントローラを含む。
メモリ214は、(本願明細書において記述されるソフトウェアを実行する命令を含む)使用の間、プロセッサ212によって実行される命令、使用の間、プロセッサ212によって作動されるデータなどを記憶する。
周辺機器216は、コンピュータシステム210に含まれ、または、それに連結されるいかなる種類のハードウェア装置をも表す(例えば、任意にコンピュータでアクセス可能な媒体200を含む記憶装置、ビデオ・ハードウェア、音声ハードウェア、ユーザ・インタフェース機器、ネットワーク・ハードウェアなどの他の入出力(I/O)装置)。実施例によっては、複数コンピュータシステムが、クラスタで使われる。
上記の開示が十分に認識されるならば、数多くの変化および変更は当業者には明白であろう。以下の請求項はすべてのこのような変化および変更を受け入れるように解釈される意図を有する。
以下の詳細な説明は、以下に簡単に説明される添付の図面に言及する。
論理および演算命令を実行するためにローカルレジスタおよびハードウェアからなるプロセッサのデータ実行ユニットの一実施例のブロック図である。これは、基本的な演算エンジンの一実施例である。 命令メモリに記憶される命令によって、プロセッサを形成するために制御されるマルチポートのデータ記憶によりデータを共有する多重演算エンジンの一実施例のブロック図である。 多重プロセッサがスイッチメカニズムによりメモリを共有し、プロセッサのクラスタを形成する通信アーキテクチャの一実施例のブロック図である。 プロセッサの階層的なネットワークを形成するため、プロセッサ・クラスタを相互接続する一実施例のブロック図である。 高度に接続されたプロセッサおよびクロスバー・スイッチによるメモリの一実施例のブロック図である。 複数プログラムへのHDL記述のコンパイルの一実施例を図示するブロック図である。 複数プログラムにHDL記述をコンパイルするコンパイラの一実施例の動作を図示するフローチャートである。 並列に分岐状態を評価するために条件論理・アレイ(CLA)を含むプログラマブル論理ハードウェアを使う命令配列および条件付き分岐アーキテクチャの一実施例のブロック図である。 分岐状態の他に他の論理を評価するハードウェアを含むCLAの内部構造の一実施例のブロック図である。 コンピュータでアクセス可能な媒体の一実施例のブロック図である。 コンピュータシステムの一実施例のブロック図である。

Claims (19)

  1. 電子システムのハードウェア記述言語(HDL)記述の、複数のプログラムへのコンパイルであり、
    複数のプログラムの各々は、電子システムの少なくとも一部の演算を実現するため、プロセッサで実行可能な複数の命令からな、前記コンパイルは、データフロー演算および制御演算を検出するためのHDL記述の分析からなり、前記データフロー演算および制御演算は、前記複数のプログラムにコンパイルされ、前記コンパイルは、前記データフロー演算が第1の命令セットへコンパイルされ、前記制御演算が第2の命令セットへコンパイルされるように、HDLで記述されたデータフロー要素をHDLで記述された制御論理と分離し、そして、並列演算は同時的な実行のために異なるプログラムにコンパイルされるコンパイルと
    前記複数のプロセッサの命令メモリへの前記複数のプログラムのダウンロード;からなる方法であって
    前記複数のプロセッサが、前記複数のプログラムを実行するように構成される方法
  2. 請求項1に記載の方法であって、さらに、前記複数のプロセッサ上での前記複数のプログラムの実行からなる方法。
  3. 請求項1または2に記載の方法であって、前記ダウンロードは、前記複数のプログラムの第1のプログラム、および、前記複数のプログラムの第2のプログラムの、前記複数のプロセッサの第1のプロセッサへのダウンロードからなる方法。
  4. 請求項3に記載の方法であって、前記実行は、前記第1のプロセッサ上の、前記第1のプログラム、および、前記第2のプログラムの時分割多重化実行からなる方法。
  5. 請求項1または2に記載の方法であって、前記実行の間、前記複数のプログラムの第1のプログラム、および、前記複数のプログラムの第2のプログラムの両プログラム相互間の通信を、さらに含む方法。
  6. 請求項5に記載の方法であって、前記通信は、前記第1のプログラムを実行している第1のプロセッサ、および前記第2のプログラムを実行している第2のプロセッサの間で共有メモリを通じて実行される方法。
  7. 請求項5または6に記載の方法であって、前記複数のプロセッサの第1のプロセッサ上での前記第1のプログラムの実行、および、前記第1のプロセッサの近くにある前記複数のプロセッサの第2のプロセッサ上での前記第2のプログラムの実行を、さらに含む方法。
  8. 請求項5または6に記載の方法であって、前記複数のプロセッサの第1のプロセッサ上での前記第1のプログラムの実行、および、前記第1のプロセッサと通信することが可能である前記複数のプロセッサの第2のプロセッサ上での前記第2のプログラムの実行を、さらに含む方法。
  9. 請求項1〜8に記載の方法であって、前記コンパイルは、計算効率を増加させるため、HDLで記載される制御ロジック、HDL記載されるデータフロー要素の分離からなる方法。
  10. 請求項9に記載の方法であって、前記コンパイルは、さらに、複数のプログラム区分間の通信を最小化するため、前記データフロー要素、および、前記データフロー要素を制御する前記制御論理の、対応する複数のプログラム区分への配置からなる方法。
  11. 請求項10に記載の方法であって、前記コンパイルは、さらに、
    実行される場合、前記複数のプログラム区分のうちの1つにおける、前記データフロー要素の演算を実行する複数の論理演算命令の生成;
    実行される場合、前記複数のプログラム区分のうちの1つにおける、前記制御論理に対応する前記複数の論理演算命令の実行を制御する複数の制御フロー命令の生成;
    および、前記複数の論理演算命令を使用する、前記複数のプログラム、および前記複数の制御フロー命令のうちの1つの作成、からなる方法。
  12. 請求項1〜11に記載の方法であって、前記分析は、電子システムのハードウェア記述言語(HDL)記述からのデータフローの抽出;
    前記データフローに対応する論理演算命令の生成;
    前記HDL記述からの前記データフローのための制御の抽出;
    および、前記制御に対応する制御フロー命令の生成、からなる方法。
  13. 前記複数のプログラムにおける分岐命令の実行から、更になる請求項1〜12に記載の方法であって、
    前記実行は、複数の分岐条件の並列的な評価;
    および、前記複数の分岐命令のコード化に対応した分岐条件のうちの1つの選択、からなる方法。
  14. 請求項13に記載の方法であって、前記評価は、複数のターゲット・アドレスの生成からなり、前記選択は、次のフェッチ・アドレスとしての前記複数のターゲット・アドレスの1つの選択からなる方法。
  15. 請求項13または14に記載の方法であって、前記複数の分岐条件の評価は、プログラム可能な論理ハードウェアによって実行される方法。
  16. 請求項1〜15に記載の方法であって、更に
    前記プロセッサのプログラム可能なロジックブロックへの、前記制御演算の少なくとも一部のマッピング;
    および、もしあれば、データフロー演算、および前記制御論理の残りの部分の、前記プロセッサによって実行される命令へのマッピング、からなる方法。
  17. 請求項16に記載の方法であって、前記制御論理の前記部分実行するため前記プログラム可能なロジックブロックのプログラミング、および、前記プロセッサへの前記命令のダウンロード、からなる方法。
  18. 実行される場合、請求項1〜17に記載の前記方法を実行する、複数の命令を格納しているコンピュータ・アクセス可能な媒体。
  19. 相互接続される複数のプロセッサからなる装置であって、前記複数のプロセッサの各々は、プログラムを実行するために構成され、各々のプログラムは、論理演算命令および/または前記論理演算命令の実行を制御する制御フロー命令を含む複数の命令からなり、ハードウェア記述言語(HDL)記載される電子システムの一部の演算を表わし、および、前記複数のプロセッサによる前記複数のプログラムの実行は、集中的に前記電子システムの演算を実行し、そして、平行演算は、異なるプロセッサ上での同時的な実行のため、異なるプログラムにコンパイルされる、複数のプロセッサからなる装置。
JP2007519350A 2004-06-30 2005-06-28 ハードウェア記述言語(hdl)プログラムの実行 Active JP4676981B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US58424204P 2004-06-30 2004-06-30
PCT/US2005/022850 WO2006004710A2 (en) 2004-06-30 2005-06-28 Execution of hardware description language (hdl) programs

Publications (2)

Publication Number Publication Date
JP2008505397A JP2008505397A (ja) 2008-02-21
JP4676981B2 true JP4676981B2 (ja) 2011-04-27

Family

ID=35447714

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007519350A Active JP4676981B2 (ja) 2004-06-30 2005-06-28 ハードウェア記述言語(hdl)プログラムの実行

Country Status (5)

Country Link
US (1) US8230408B2 (ja)
EP (1) EP1766544B1 (ja)
JP (1) JP4676981B2 (ja)
CN (1) CN100543753C (ja)
WO (1) WO2006004710A2 (ja)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006172219A (ja) * 2004-12-16 2006-06-29 Toshiba Corp 半導体集積回路の自動設計装置、半導体集積回路の自動設計方法、及び半導体集積回路の自動設計プログラム
US8082526B2 (en) * 2006-03-08 2011-12-20 Altera Corporation Dedicated crossbar and barrel shifter block on programmable logic resources
US7562320B2 (en) * 2006-09-15 2009-07-14 International Business Machines Corporation Asic based conveyor belt style programmable cross-point switch hardware accelerated simulation engine
US7774189B2 (en) * 2006-12-01 2010-08-10 International Business Machines Corporation System and method for simulating data flow using dataflow computing system
US7945433B2 (en) * 2007-04-30 2011-05-17 International Business Machines Corporation Hardware simulation accelerator design and method that exploits a parallel structure of user models to support a larger user model size
JP5416694B2 (ja) * 2007-05-22 2014-02-12 コーニンクレッカ フィリップス エヌ ヴェ 複数の装置を有するネットワーク制御システムのコンパイラ及びコンパイル方法
US7941460B2 (en) * 2007-09-05 2011-05-10 International Business Machines Corporation Compilation model for processing hierarchical data in stream systems
US7860863B2 (en) * 2007-09-05 2010-12-28 International Business Machines Corporation Optimization model for processing hierarchical data in stream systems
US9858053B2 (en) 2008-02-08 2018-01-02 Reservoir Labs, Inc. Methods and apparatus for data transfer optimization
US8661422B2 (en) * 2008-02-08 2014-02-25 Reservoir Labs, Inc. Methods and apparatus for local memory compaction
US8572595B1 (en) * 2008-02-08 2013-10-29 Reservoir Labs, Inc. Methods and apparatus for aggressive scheduling in source code compilation
US8930926B2 (en) * 2008-02-08 2015-01-06 Reservoir Labs, Inc. System, methods and apparatus for program optimization for multi-threaded processor architectures
US8161380B2 (en) * 2008-06-26 2012-04-17 International Business Machines Corporation Pipeline optimization based on polymorphic schema knowledge
WO2010033622A2 (en) 2008-09-17 2010-03-25 Reservoir Labs, Inc. Methods and apparatus for joint parallelism and locality optimization in source code compilation
GB2464703A (en) * 2008-10-22 2010-04-28 Advanced Risc Mach Ltd An array of interconnected processors executing a cycle-based program
KR101553652B1 (ko) * 2009-02-18 2015-09-16 삼성전자 주식회사 이종 프로세서에 대한 명령어 컴파일링 장치 및 방법
WO2010127173A2 (en) * 2009-04-30 2010-11-04 Reservoir Labs, Inc. System, apparatus and methods to implement high-speed network analyzers
US8769357B1 (en) * 2009-07-23 2014-07-01 Gidel Ltd. System and method for evaluation of a field programmable gate array (FPGA)
US8255847B1 (en) * 2009-10-01 2012-08-28 Altera Corporation Method and apparatus for automatic hierarchical design partitioning
US20110225297A1 (en) 2010-03-11 2011-09-15 International Business Machines Corporation Controlling Access To A Resource In A Distributed Computing System With A Distributed Access Request Queue
US9348661B2 (en) * 2010-03-11 2016-05-24 International Business Machines Corporation Assigning a unique identifier to a communicator
US9448850B2 (en) * 2010-03-11 2016-09-20 International Business Machines Corporation Discovering a resource in a distributed computing system
US8621446B2 (en) * 2010-04-29 2013-12-31 International Business Machines Corporation Compiling software for a hierarchical distributed processing system
US8892483B1 (en) 2010-06-01 2014-11-18 Reservoir Labs, Inc. Systems and methods for planning a solution to a dynamically changing problem
WO2012051577A1 (en) 2010-10-15 2012-04-19 Coherent Logix, Incorporated Disabling communication in a multiprocessor system
US8914601B1 (en) 2010-10-18 2014-12-16 Reservoir Labs, Inc. Systems and methods for a fast interconnect table
US9134976B1 (en) 2010-12-13 2015-09-15 Reservoir Labs, Inc. Cross-format analysis of software systems
US9489180B1 (en) 2011-11-18 2016-11-08 Reservoir Labs, Inc. Methods and apparatus for joint scheduling and layout optimization to enable multi-level vectorization
US9830133B1 (en) 2011-12-12 2017-11-28 Significs And Elements, Llc Methods and apparatus for automatic communication optimizations in a compiler based on a polyhedral representation
US9798588B1 (en) 2012-04-25 2017-10-24 Significs And Elements, Llc Efficient packet forwarding using cyber-security aware policies
US10936569B1 (en) 2012-05-18 2021-03-02 Reservoir Labs, Inc. Efficient and scalable computations with sparse tensors
US9684865B1 (en) 2012-06-05 2017-06-20 Significs And Elements, Llc System and method for configuration of an ensemble solver
CN104360899B (zh) * 2014-11-03 2019-06-07 上海斐讯数据通信技术有限公司 一种进程管理系统及管理方法
GB2544083B (en) * 2015-11-05 2020-05-20 Advanced Risc Mach Ltd Data stream assembly control
CN107704248A (zh) * 2017-10-30 2018-02-16 北京华为数字技术有限公司 一种检测方法及设备
RU2703773C1 (ru) * 2019-04-02 2019-10-22 Российская Федерация, от имени которой выступает ФОНД ПЕРСПЕКТИВНЫХ ИССЛЕДОВАНИЙ Способ изготовления массивов регулярных субмикронных отверстий в тонких металлических пленках на подложках
KR20200139525A (ko) * 2019-06-04 2020-12-14 삼성전자주식회사 Fpga를 포함하는 전자 시스템 및 이의 동작 방법
JP7423920B2 (ja) * 2019-07-03 2024-01-30 オムロン株式会社 制御システム、設定装置およびコンピュータプログラム
CN111343106B (zh) * 2020-02-25 2023-03-24 母国标 多路中频数字信号处理装置和方法
CN113095015B (zh) * 2021-05-08 2024-05-24 中国科学院上海微系统与信息技术研究所 Sfq时序电路综合计算方法、系统以及终端

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6466898B1 (en) * 1999-01-12 2002-10-15 Terence Chan Multithreaded, mixed hardware description languages logic simulation on engineering workstations
US20030149859A1 (en) * 2000-02-24 2003-08-07 Hyduke Stanley M. Digital circuit implementation by means of parallel sequencers

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04175974A (ja) * 1990-11-09 1992-06-23 Hitachi Ltd コプロセッサ論理回路自動生成方法
JPH05257709A (ja) 1992-03-16 1993-10-08 Hitachi Ltd 並列化判別方法およびそれを用いた並列化支援方法
GB9305263D0 (en) 1993-03-15 1993-05-05 Univ Westminster Parrallel computation
US5903466A (en) * 1995-12-29 1999-05-11 Synopsys, Inc. Constraint driven insertion of scan logic for implementing design for test within an integrated circuit design
US6145117A (en) * 1998-01-30 2000-11-07 Tera Systems Incorporated Creating optimized physical implementations from high-level descriptions of electronic design using placement based information
US20020138244A1 (en) * 1999-09-30 2002-09-26 Meyer Steven J. Simulator independent object code HDL simulation using PLI
US7206732B2 (en) * 2002-04-04 2007-04-17 International Business Machines Corporation C-API instrumentation for HDL models

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6466898B1 (en) * 1999-01-12 2002-10-15 Terence Chan Multithreaded, mixed hardware description languages logic simulation on engineering workstations
US20030149859A1 (en) * 2000-02-24 2003-08-07 Hyduke Stanley M. Digital circuit implementation by means of parallel sequencers

Also Published As

Publication number Publication date
EP1766544B1 (en) 2019-12-04
WO2006004710A3 (en) 2006-07-27
US8230408B2 (en) 2012-07-24
WO2006004710A2 (en) 2006-01-12
EP1766544A2 (en) 2007-03-28
CN1985256A (zh) 2007-06-20
US20060005173A1 (en) 2006-01-05
CN100543753C (zh) 2009-09-23
JP2008505397A (ja) 2008-02-21

Similar Documents

Publication Publication Date Title
JP4676981B2 (ja) ハードウェア記述言語(hdl)プログラムの実行
KR100998586B1 (ko) 구성가능한 실행 유닛들을 구비한 고성능 하이브리드프로세서
Salefski et al. Re-configurable computing in wireless
US8438510B2 (en) Partial hardening of a software program from a software implementation to a hardware implementation
US20110197047A1 (en) Method for forming a parallel processing system
US11232247B1 (en) Adaptable dynamic region for hardware acceleration
US7007264B1 (en) System and method for dynamic reconfigurable computing using automated translation
So et al. FPGA overlays
CN114327620A (zh) 用于具有数据流执行电路的可配置加速器的装置、方法和系统
Koul et al. Aha: An agile approach to the design of coarse-grained reconfigurable accelerators and compilers
JP5146451B2 (ja) ハードウエアエミュレーションシステムのプロセッサを同期化する方法及び装置
JP2007293871A (ja) プロセッサの異種クラスターを有するハードウエアエミュレーションシステム
US20050097306A1 (en) No-instruction-set-computer processor
Jain et al. Coarse Grained FPGA Overlay for Rapid Just-In-Time Accelerator Compilation
US9805152B1 (en) Compilation of system designs
Harbaum et al. Auto-SI: An adaptive reconfigurable processor with run-time loop detection and acceleration
Hirvonen et al. AEx: Automated customization of exposed datapath soft-cores
van As et al. ρ-VEX: A reconfigurable and extensible VLIW processor
Fl et al. Dynamic Reconfigurable Architectures and Transparent Optimization Techniques: Automatic Acceleration of Software Execution
Svensson Reconfigurable architectures for embedded systems
Shendi Run-Time Customisation of Soft-Core CPUs on FPGA
Pimentel et al. The Artemis architecture workbench
Mitra et al. Dynamic co-processor architecture for software acceleration on csocs
Noguera et al. Wireless MIMO sphere detector implemented in FPGA
Anjam Run-time Adaptable VLIW Processors

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080528

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100706

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101005

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101013

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101110

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101112

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

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

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

Free format text: PAYMENT UNTIL: 20140204

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4676981

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250