JP2002508102A - 高水準プログラミング言語をコンパイルするための方法 - Google Patents

高水準プログラミング言語をコンパイルするための方法

Info

Publication number
JP2002508102A
JP2002508102A JP50587699A JP50587699A JP2002508102A JP 2002508102 A JP2002508102 A JP 2002508102A JP 50587699 A JP50587699 A JP 50587699A JP 50587699 A JP50587699 A JP 50587699A JP 2002508102 A JP2002508102 A JP 2002508102A
Authority
JP
Japan
Prior art keywords
group
task
time
code block
scheduling
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.)
Ceased
Application number
JP50587699A
Other languages
English (en)
Other versions
JP2002508102A5 (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 JP2002508102A publication Critical patent/JP2002508102A/ja
Publication of JP2002508102A5 publication Critical patent/JP2002508102A5/ja
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • 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/451Code distribution
    • 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

Landscapes

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

Abstract

(57)【要約】 高水準プログラミング言語で書かれたコンピュータプログラム(項目101)は、コンパイラ(103)により、それ自体の制御フローとデータフローとを表す中間データ構造(105)にコンパイルされる。このデータ構造は、全体の性能を向上させるための特定用途向け集積回路(117)として実装され得るロジックのクリティカルブロックを識別するために、オプティマイザおよびパラレライザ(111)において解析される。前記ロジックのクリティカルブロックは、最初に、最大データ並列処理を伴う新たな等価ロジックに変換される。次に、前記新たな並列処理ロジックは、特定用途向け集積回路(117)上における実行に適切なブールゲート表示に変換される。前記特定用途向け集積回路(117)は、包括的マイクロプロセッサ(107)と、該マイクロプロセッサ用のカスタム命令を介して、接続されている。次に、元のコンピュータプログラムは、新たな拡張されたターゲット命令セットを備えたオブジェクトコード(109)にコンパイルされる。

Description

【発明の詳細な説明】 高水準プログラミング言語をコンパイルするための方法 1.発明の背景 本発明は、再構成可能な(reconfigurable)コンピューティングに関する。2.従来技術 従来、集積回路は、その構成をブールゲート(Boolean gate)やレジスタのよ うな回路プリミティブ(circuit primitives)とともに記述することにより設計 される必要がある。回路設計者は、例えば、ビデオ圧縮アルゴリズムのような特 定の用途を念頭に置いて(設計を)開始する必要があり、かつ、この結果として 得られる集積回路については、目標とする用途に対してのみ用いることができる 。 あるいはまた、集積回路については、固定命令(fixed instruction)を備え た一般的な目的のマイクロプロセッサ(例えば、インテル社のx86プロセッサ )として設計してもよい。これにより、マイクロプロセッサの命令の任意のシー ケンスを呼び出すことができるコンピュータプログラムを書くことにおける柔軟 性が可能となる。この方法は、柔軟性を増加させる一方で性能を低下させる。そ の理由は、あらゆる用途に対して回路を最適化することができないためである。 高水準のプログラマーにとっては、任意のコンピュータプログラムを書くこと ができ、かつ、これらのプログラムを迅速な特定用途向け集積回路(applicatio n specific integrated circuits)に自動的に変換できることが望ましい。しか しながら、現在は、マイクロプロセッサに関するプログラミング言語の専門知識 を有するコンピュータプログラマーと、回路設計における専門知識を必要とする 特定用途向け集積回路との間の橋渡しが存在していない。 集積回路設計の研究および開発は、回路記述(circuit descriotion)の水準 を、徐々により高い抽象水準へ押し上げようと試みている。現在の技術状態は、 回路の記録/転送作用に関する行動言語記述である入力と、この行動を実行する の に必要な回路素子の構成記述である出力とを有する“行動(behavioral)シンセ サイザ”である。この入力記述は、特定の用途をターゲットとし、かつ、その作 用を高水準の回路プリミティブに記述する必要があるが、行動コンパイラは、低 水準な回路プリミティブがいくつ必要とされるのか、また、これらのプリミティ ブがどのように異なる諭理ブロック間で共有されるのか、また、これらのプリミ ティブの使用がどのように予定されている(scheduled)のかを自動的に判断す る。次に、これらの回路プリミティブの出力記述は、該回路プリミティブを有効 な“セル”のライブラリ上にマッピングする“論理シンセサイザ”に渡され、こ こで、各々のセルは、集積回路上の回路プリミティブの完備した手段である。論 理シンセサイザの出力は、全ての必要とされるセルとそれらの相互接続とに関す る記述である。次に、この記述は、全てのセルのレイアウトと集積回路上におけ る相互接続とを決定する“プレーサ(placer)およびルータ”に渡される。 その反面、コンピュータプログラミングの研究および開発は、特定用途向けプ ログラムを、特別に目標を定められた(custom taegeted)ハードウェアと整合 させることにより、抽象水準を押し下げようと試みている。このような試みの1 つは、インテル社のMMX命令セットである。この命令セットは、ディジタル信 号処理アルゴリズムを伴う用途を促進するために、特定の目的で設計されている 。このような用途については、包括的に書くことができ、かつ、MMXを意識し たコンパイラは、特別な命令を用いることにより、コンパイルされたコードを自 動的に加速させる。前記用途を適切なソフトウェアと整合させる他の試みは、並 列処理コンパイラ(parallelizing compiler)上における仕事である。これらの コンパイラは、順次的なプログラミング言語で書かれたコンピュータプログラム を用い、かつ、暗黙並列処理(implicit parallelism)を自動的に抽出し、次に 、この暗黙並列処理については、不定数のプロセッサ上における実行のための目 標とすることができる。したがって、様々な用途を、これらの特定の必要性に応 じて、様々な数のブロセッサ上において実行することができる。 ハードウェアおよびソフトウェア・コミュニティによる上述の努力にも関わら ず、高水準プログラミング言語と集積回路行動記述との間の隔たりに対する橋渡 しは、未だ行われていない。発明の概要 高水準プログラミング言語で書かれたコンピュータプログラムは、中問データ 構造(intermediate data structure)にコンパイルされ、このデータ構造は、 その制御およびデータのフローを表す。このデータ構造は、全体を性能を向上さ せるための特定用途向け集積回路として実行され得る、ロジックのクリティカル ブロックを識別するために解析される。このロジックのクリティカルブロックは 、最初に、最大のデータ並列処理を伴う新たな等価ロジックに変換される。次に 、この新たな並列処理されたロジックは、特定用途向け集積回路上における実行 に適切なブールゲート表示に変換される。この特定用途向け集積回路は、包括的 マイクロプロセッサと、該命令用のカスタム命令を介して接続されている。次に 、元のコンピュータプログラムは、新たに拡張されたターゲット命令セットを備 えたオブジェクトコードにコンパイルされる。 本発明のある実施形態によれば、コンピュータにより実行される方法は、高水 準プログラミング言語で書かれたコンピュータプログラムを、マイクロプロセッ サと接続された1つ以上の特定用途向け集積回路により実行するためのプログラ ムに、自動的にコンパイルする。前記1つ以上の特定用途向け集積回路内の回路 により実行されることになる機能を有するコードブロックが選択され、かつ、こ のコードブロックは、領域制約および実行時間制約のうちの少なくとも1つに基 づいて、グループにまとめられる。前記機能のローディングおよび活性化が予定 され、かつ、コードが、前記機能のローディングおよび活性化のための命令を備 えるマイクロプロセッサにより実行用に生成される。 本発明の他の特徴によれば、コンピュータにより実行される方法は、高水準プ ログラミング言語で書かれたコンピュータプログラムを、1つ以上の特定用途向 け集積回路に、自動的にコンパイルする。本発明のさらに他の特徴によれば、コ ンピュータにより実行される方法は、高水準プログラミング言語で書かれたコン ピュータプログラムを、標準マイクロプロセッサと接続された1つ以上の特定用 途向け集積回路により実行するためのプログラムに、自動的にコンパイルする。 本発明のさらに他の特徴によれば、再構成可能な論理ブロックは、コンパイルさ れた命令によりロックされ、この場合に、活性化コンフィギュレーション命令は 、前記ブロックを、あらゆる後続の活性化からロックし、かつ、解放コンフィギ ュレーション命令は、前記ブロックを解除する。本発明のさらに他の特徴によれ ば、高水準プログラミング言語コンパイラは、マイクロプロセッサの標準命令セ ットを拡張するための1つ以上の特別命令のセットを、自動的に決定し、これに より、所定の入力コンピュータプログラムに関する相対的な性能の向上という結 果が生じる。本発明のさらに他の特徴によれば、2つ以上のマイクロプロセッサ 標準命令の実行を、単一の特別命令の実行に変換するための方法が提供される。 本発明のさらに他の特徴によれば、高水準プログラミング言語コンパイラは、デ ータフローグラフの中間表示を介して、行動シンセサイザと接続される。 図面の簡潔な説明 本発明については、添付図面と関連した以下の説明から、さらに理解される。 図1は、好ましい実施形態のコンパイラの設計方法の流れ図を示す。 図2は、特定用途向け集積回路も好ましい実施形態の動作に関する制御フロー を示す。 図3は、コンパイラ内に入力され得る高水準ソースコードの例の一部を示す。 図4は、標準コンパイラにより出力されることになる、図3のコード例に関す る、マイクロプロセッサのオブジェクトコードを示す。 図5は、図3のコード例に関するコンパイラにより出力される特定用途向け回 路構成の例を示す。 好ましい実施形態の詳細な説明 本発明の好ましい実施形態によれば、高水準プログラミング言語を、特定用途 向け集積回路(ASIC)に自動的にコンパイルするための方法が呈される。 図1を参照すると、コンピュータプログラムソースコード101は、標準コン パイラ技術103によって、言語的に独立した中間フォーマット(Ianguage ind ependent intermediate format)105に構文解析される(parse)。この中間 メフォーマット105は、標準の制御およびデータフローグラフであるが、キャ プチャーループ、条件ステートメント、アレイアクセスの構成が追加されている 。このフォーマットの演算子は、言語的に独立した簡単なRISCに似た命令で あるが、アレイアクセス用のさらなる演算子と手続呼び出し(procedure calls )とが備えられている。これらの構成は、コードの並列処理に必要な全ての高水 準情報を捉える。コンパイルされた中間フォーマットに関するさらなる説明につ いては、例えば、S.P.Amarasinghe,J.H.Anderson,C.S.Wilson,S.-W.L iao,B.M.Murphy,R.S.French,M.S.Lam,M.W.HallによるMultiprocess ors from a Software Perspective;IEEE Micro,June 1996;pages 52-61を参照 のこと。 標準コンパイラ技術が用いられているので、入力コンピュータプログラムは、 サポートされた高水準プログラミング言語のための任意のリーガルソースコード であってもよい。この方法は、特にハードウェア実装要素を記述するための構成 を備えた特別な言語を必要としない。現在、フロントエンドパーサは、ANSI CとFORTRAN77用に存在しており、かつ、単に新たなフロントエンドパ ーサを加えることにより他の言語をサポートすることもできる。フロントエンド パーサに関するさらなる説明については、例えば、C.W.Fraser,D.R.Hanson によるA Retargetable Compiler for ANSI C;SIGPLAN Notices,26(10);October 1991を参照のこと。 前記中間フォーマット105から、本発明の方法は、標準マイクロプロセッサ およびASICという、2つの異なった形式のターゲットハードウェアのための コード生成を独自にサポートする。ASICはマイクロプロセッサよりもはるか に迅速である一方で、ASICはより大型でかつ高価であるが故に稀少資源とし て扱われる必要があるので、双方のターゲットが必要とされている。コンパイラ は、性能対領域のトレードオフを見積もり、かつ、どのコードブロックを所定の 有効ASIC領域のための目標とすべきかを自動的に判断する。 前記マイクロプロセッサのためのコード生成は、標準コンパイラ技術107に より処理される。現在、MIPSマイクロプロセッサ用のコード生成プログラム が存在しており、かつ、単に新たなバックエンド生成プログラムを加えることに より他のマイクロプロセッサをサポートすることもできる。生成されたオブジェ クトコード109において、ASICにより実行されるロジックを呼び出すカス タム命令が、特別命令として挿入される。 前記特別命令は、ロード(load)_コンフィギュレーション、活性化(activa te)_コンフィギュレーション、呼び出し(invoke)_コンフィギュレーション 、および、解放(release)_コンフィギュレーションという、4つの生成カテ ゴリーとなっている。前記ロード_コンフィギュレーション命令は、前記ロジッ クと、ASIC上において再構成可能なロジックの単一ブロック用の相互接続と を構成できる固定ビットストリームのアドレスを識別する。図2を参照すると、 ASIC200は、このような1つ以上のブロック201a,201bを、埋め 込み式マイクロプロセッサ205および再構成可能なロジック用の制御ロジック 207とともに、単一チップ上に有していてもよい。識別されたビットストリー ムは、例えば、ランダムアクセスメモリ(RAM)またはリードオンリーメモリ (PROMまたはEEPROM)203内に存在してもよい。このビットストリ ームは、ASIC上において可能なブロック構成のキャッシュへダウンロードさ れる。前記活性化_コンフィギュレーション命令は、以前にダウンロードされた 構成を識別し、この構成にしたがって、前記再構成可能なロジックをASICブ ロック上で再構成し、かつ、このブロックをあらゆる後続の活性化命令からロッ クする。呼び出し_コンフィギュレーションは、入力されたオペランドレジスタ をロードし、出力されたレジスタをロックし、かつ、ASIC上で構成されたロ ジックを呼び出す。ASICがこの結果を命令の出力レジスタにロードした後に 、ASICは、レジスタを解除し、かつ、マイクロプロセッサは、結果を得て実 行を継続することができる。前記解放_コンフィギュレーション命令は、ASI Cブロックを解除し、このブロックを、後続の活性化_コンフィギュレーション 命令のために有効にする。再構成可能なロジックを備える埋め込み式マイクロプ ロセッサに関するさらなる説明については、L.Cooke,C.Phillips,D.Wongに よるAn Integrated Processor and Programmable Data Path Chip for Reconfig u rable Computingという、参考文献として本明細書中に組み込まれている米国特 許第08/884,380号明細書を参照のこと。 ASICロジックのためのコード生成については、幾つかの方法により実行す ることができる。ある手段は、中間の制御およびデータフローグラフを行動シン セシスプログラムへ渡す。このインタフェースについては、データ構造を直接的 に渡すか、または、中間行動言語記述を生成するかのいずれかにより達成するこ とができる。行動シンセシスに関するさらなる説明については、例えば、D.Kna ppによるBehavioral Synthesis;Prentice Hall PTR;1996を参照のこと。他の手 段は、中間フォーマットプリミティブの回路手段上への1対1のマッピングを生 成する。例えば、スカラー変数およびアレイが、レジスタとして実装され、かつ 、適切なビット幅と、加算、乗算、累積、比較のような算術およびブール演算子 とを備えるレジスタファイルは、適切なビット幅を備える単一のセルとして実装 され、条件分岐手段およびループは、ステートマシンとして実装される。一般に 、図1に例示されるように、シリコンコンパイラ113は、中間フォーマット1 05におけるコンパイルされたコードと回路プリミティブライブラリ115から の回路プリミティブとを入力として受け取り、かつ、ASIC117のためのレ イアウトまたはコンフィギュレーション情報を生成する。ステートマシン・シン セシスに関するさらなる説明については、例えば、G.De Micheli,A.Sangiova nni-Vincentelli,P.AntognettiによるDesign Systems for VLSI Circuits;Mar tinus Nijhoff Publishers;1987;pp.327-364を参照のこと。 シンセシスまたはマッピング段階が完了した後に、セルとこれらセルの相互接 続とに関する等価リストが生成される。このリストは、通常は、ネットリストと 称される。このネットリストは、次に、前記セルとASIC上におけるこれらの セルの相互接続との実際のレイアウトを決定するプレーサおよびルータに渡され る。このレイアウト全体は、次に、暗号化され、かつ、ASICを構成するため の単一ユニットとして記憶されかつロードされ得るビットストリームフォーマッ ト形式で圧縮される。前述の処理に関する段階的な例は、図3〜図5に例示され ている。プレースおよびルート・アルゴリズムに関する一般的な説明については 、T.OhtsukiによるLayout Design and Verification;North-Holland;1986; pp.55-198を参照のこと。 ASICのための目標とされることになるコードの基本ユニットはループであ る。入力ソースコードにおける単一ループについては、中間フォーマット形式で 、ランタイムの最適化と図1のオプティマイザおよびパラレライザ111による 並列処理とのための多数の構成に変換してもよい。並列実行のためのループ変換 の程度が、ASIC対マイクロプロセッサの性能を向上させることにおける鍵と なる要因である。これらの変換は、一定の伝搬(constant propagation)と、順 方向伝搬(forward propagation)と、誘導変数検出(induction variable dete ction)と、一定の折り畳み(constant folding)と、スカラープライベータイ ゼイション(scalar privatization)解析と、ループ交換と、スキューイングと 、反転(reversal)とを備える標準並列処理コンパイラ技術により処理される。 並列コンパイラループ変換に関する一般的な説明については、Michael Wolfeに よるHigh Performance Compilers for Parallel Computing;Addison-Wesley Pub lishing Company;1996;pp.307-363を参照のこと。 どのソースコードループが最も相対的な性能向上をもたらすのかを決定するた めに、標準ソースコードコプロファイラがコンパイラに入力される。このプロフ ァイラの解析は、コードの各々のブロックに費やされたランタイムの百分率を示 す。これらの百分率を、各々のループに関して可能な並列処理の量と組み合わせ ることにより、各々のループの可能なゲインに関する効果尺度(figure of meri t)を見積もることができる。例えば、 ゲイン=(profilePercent)×(1−1/parallelPaths) ここで、profilePercent=このループで費やされたランタイムの百分率 parallelPaths=並列に実行することができるパスの数。 ソースコードループを実行するために必要なASIC領域の総計は、マッピン グされた全てのセルの個々の領域を加算することと、これらのセルを相互接続す るために必要な追加領域を見積もることとにより決定される。前記セルとこれら の相互接続とのサイズは、必要とされるデータの精度を実行するために必要なナ ンバービットに依存する。ASIC領域は、各々のループのコストに関する効果 尺度として機能することができる。例えば、 コスト=cellArea+MAX(0,(interconnectArea−overTheCellArea)) ここで、 cellArea=全ての成分セル領域の和 overTheCellArea=cellArea×(1/相互接続のために有効なセル領域) interconnectArea=(相互接続の数)×(interconnectLength) ×(相互接続の幅) interconnectLength=(セル数の平方根)/3。 相互接続領域の見積もりに関するさらなる情報については、B.Preas,M.Lor enzettiによるPhysical Design Automation of VLSI Systems;Benjamin/Cumming s Publishing Company;1988;pp.31-64を参照のこと。 前記方法は、ソースコードにおける全てのループに関する効果尺度を、実際に は計算しない。コンパイラは、目標とされたランタイムシステムに応じて、単一 ASICブロックのための最大領域、および、最大の総有効ASIC領域という 、2つのランタイムパラメータを与えられている。前記コンパイラは、最初に、 ループを、これらのランタイム百分率の降順にソートし、次に、各々のループに 関する効果尺度を、このループが、被評価領域の総数における所定の境界へ到達 するまで評価する。前記所定の境界は、前記最大総有効ASIC領域の一定の倍 数である。単一ASICブロックよりも広い領域を必要とするループについては 、より簡易な実行のためにスキップしてもよい。最後に、効果尺度が計算された 全てのループを用いて、ナップサック・アルゴリズムがこれらのループを選択す るために適用される。この手順については、異なったASICにあることと関連 したゲインやコストが存在しなければ多数のASICを目標とする場合を処理す るために僅かに拡張することができる。ナップサック・アルゴリズムの一般的な 説明については、Syslo,Deo,KowalikによるDiscrete Optimization Algorithm s;Prentice Hall;1983;pp.118-176を参照のこと。 単一のASIC上に詰め込まれている種々のソースコードループは、一般に、 互いに独立している。あるASIC形式、すなわち、フィールド・プログラマブ ル・ゲート・アレイ(FPGA)を用いて、ランタイム時に、機能の幾つかまた は全てを、FPGA上において変更することが可能である。FPGAは、再構成 可能なロジックに関する1つ以上の独立したブロックを有している。各々のブロ ックを、他のあらゆるブロックに影響を及ぼすことなく再構成することができる 。機能が現在実行されている変更は、コンピュータプログラムが異なったコード 領域を実行している際、または、完全に異なったコンピュータプログラムがロー ドされているとき、または、有効なFPGAロジックの総計が変化するときであ ることが望ましい。 再構成可能なFPGA環境は、実行すべき機能の総セットを選択することと、 この機能を多数のFPGAブロックに沿って区分することと、FPGAブロック のローディングおよび活性化の予定を立てることという、コンパイラが解決すべ き問題を呈する。これらの問題については、多項式時間(polynomial time)に おいては最適に解決することができない。以下のパラグラフば、これらの問題に 上手く適用され得る幾つかの発見的方法を説明している。 単一の瞬間においてFPGA上に同時に共存するコンフィギュレーションのセ ットを、スナップショットと称する。スナップショットを具備する種々の機能は 、コンパイラにより別個のブロックに区分され、これにより、このブロックのス トール(stall)時間が最小限にされ、それ故に、実行スケジュール全体も最小 限にされる。ブロックは、マイクロプロセッサが新たな活性化_コンフィギュレ ーション命令を発行したが前のコンフィギュレーションの全ての機能がまだ完了 していなければ、ストールされる。区分化は、同時に近い状態で終了する機能を ともにまとめる。前記ナップサック・アルゴリズムにより選択された全ての機能 は、これらの理想的に予定された終了時間にしたがってソートされる(理想的な 終了時間は、これらの機能が予定された開始時間に呼び出されるように、ブロッ クが遅延なしでダウンロードされかつ活性化されたと仮定している)。終了時間 を増加させることにより前記リストを横断して、各々の機能ば、FPGAブロッ ク領域の最大容量が到達されるまで、同じFPGAに割り当てられる。FPGA ブロックが満たされると、次のFPGAブロックが開放される。全ての機能がF PGAブロックに割り当てられた後に、最も早い終了時間と最も後の終了時間と の間の差が、各々のFPGAブロックに関して計算される。次に、各々の機能は 、逆の(減少する)順序で再訪される。前記機能を次のFPGAブロックに再度 割 り当てることが、その領域容量を超過せずに、かつ、2つのFPGAブロックに 対する2つの差のうちの最大値を縮小させれば、前記機能は、次のFPGAブロ ックに再度割り当てられる。 前記機能が区分された後に、FPGAブロックの各々のコンフィギュレーショ ンを、単一のタスクとして見てもよい。そのデータ依存性および制御依存性は、 その割り当てられた機能の依存性の和集合であり、かつ、その必要時間は、その 割り当てられた機能の最も遅い終了時間と最も早い開始時間との間の差である。 全てのスナップショットにわたる、全てのこのようなコンフィギュレーションタ スクのセットについては、各々の物理FPGAブロックをプロセッサとして処理 する標準マイクロプロセッサ・スケジューリング・アルゴリズムを用いて予定し てもよい。このことは、全ての活性化_コンフィギュレーション命令の予定を立 てる。 共通のスケジューリング・アルゴリズムは、リスト・スケジューリングと称さ れる。リスト・スケジューリングにおいては、以下の段階が通常の手段である。 1.タスクグラフにおける各々のノードは、優先順位を割り当てられる。この 優先順位は、タスクグラフの開始地点からノードへの最も長いパスの長さとして 規定される。タスクは、タスクの優先順位が減少していく順序でソートされる。 2.優先順位待ち行列(priority queue)が空でない限りは、以下のことを行 う。 a.タスクは、この待ち行列の前部から得られる。 b.アイドル状態のプロセッサは、タスクを実行するために選択される。 c.特定のタスクの全ての中間プロセッサが実行されるときに、このプロセ ッサは、準備ができており、かつ、前記優先順位待ち行列内に挿入され得る。 マイクロプロセッサ・スケジューリング・アルゴリズムに関するさらなる情報 については、A.ZomayaによるParallel and Distributed Computing Handbook;M cGraw-Hill;1996;pp.239-273を参照のこと。 全てのロード_コンフィギュレーション命令については、任意のFPGAブロ ックのためのコンフィギュレーションの総数が該FPGAブロックのコンフィギ ュレーション・キャッシュの容量を超過しなければ、プログラムの始めに発行し てもよい。同様に、このプログラムを2つ以上のセクションに分割してもよく、 この場合に、任意のFPGAブロックのためのコンフィギュレーションの総数は 、該FPGAブロックのコンフィギュレーション・キャッシュの容量を超過しな い。あるいはまた、ロード_コンフィギュレーション命令を、全てのブロックの 活性化_コンフィギュレーション命令に及ぶプログラムの制御フローグラフにお ける最も低い先行分岐地点に予定してもよい。これは、カバーリング・ロード命 令と称される。これは、ロード命令のための予備的なスケジュールであるが、実 際のロード時間が、マイクロプロセッサがロード_コンフィギュレーション命令 から最初の活性化_コンフィギュレーション命令へ行くために必要とする時間を 超過する場合には、ストールにつながる。さらに、FPGAブロックのためのコ ンフィギュレーションの数は、そのコンフィギュレーション・キャッシュの容量 を超過してもよい。このことは、再び、スケジュールにおけるストールにつなが る。このような場合には、コンパイラは、ストールの長さと、各々のコンフィギ ュレーションのために見積もられたゲインとを競合させて比較する。コンフィギ ュレーションのゲインは、その割り当てられた機能のゲインの和として見積もら れる。競合している全てのゲインの中で、最小と見積もられたゲインを有するも のが求めて得られる。ストールがこの最小ゲインより大きければ、最小ゲインを 伴うコンフィギュレーションは、スケジュール内のその地点においては用いられ ない。 カバーリング・ロード命令が上述のようにデ・スケジュール(de-schedule) されると、仮のロード_コンフィギュレーションタスクが各々の活性化_コンフ ィギュレーション命令の直前に作成される。これらは、活性化_コンフィギュレ ーション命令の直前に先行した最も低い分岐地点において作成される。これらは 、単一ロード命令と称される。スケジュールの地点においてFPGAブロックの コンフィギュレーション・キャッシュ容量を超過せずに単一ロード命令を予定す るための新たな試みがなされる。以前のスケジューリングの試みと同様に、コン フィギュレーション数が再びコンフィギュレーション・キャッシュ容量を超過す れば、ストールの長さは見積もられゲインと比較される。しかしながら、この場 合には、見積もられたコンフィギュレーション・ゲインは、単に、このブランチ の 下に呼び出される単一の機能のゲインである。再び、ストールが最小ゲインより 大きければ、最小ゲインを伴うコンフィギュレーションは、スケジュール内のそ の地点においては用いられない。 デ・スケジュールされたロード命令がカバーリング・ロード命令であれば、こ の処理は反復され(recursed)、そうではなく単一ロード命令であれば、この処 理は終了する。この処理については、ロード命令を1度に1段階だけ制御フロー グラフの下に移動させることと、サポートされる必要がある呼び出しの数を減少 させることとに対して一般化することができる。単一の段階に関しては、各々の 競合するコンフィギュレーションを2つの新たなタスクに区分する。既に予定さ れたコンフィギュレーションに関しては、割り当てられた機能を、現在時間まで に終了する機能と終了しない機能とに分割する。まだ予定されていないコンフィ ギュレーションに関しては、割り当てられた機能を、ストール時間後にスタート する機能とスタートしない機能とに分割する。 分岐予測については、ありそうな分岐結果を予測しかつこの分岐の結果として 必要とされそうなコンフィギュレーションをこの分岐に先行してロードするため に用いてもよい。必然的に、分岐予測は、時には、実際に必要とされていないコ ンフィギュレーションがロードされてしまったという結果を伴ってうまくいかな い。これらの例に備えるために、正味の実行時間の節約が結果として生ずる場合 には、分岐の前にロードされたコンフィギュレーションをクリアしかつ前記分岐 に続くために必要な異なったコンフィギュレーションをロードする命令を、分岐 命令の前に挿入してもよい。 本発明がその意図または本質的な特徴から逸脱することなく他の特定の形式で も実施され得ることが、当業者により理解される。したがって、現在開示されて いる実施形態は、あらゆる点において、例示的であって制限的なものではないと 考えられる。本発明の範囲は、前述の説明よりも、添付された請求項により示さ れており、かつ、本発明と同義なものの意義および範囲の内部で生ずるあらゆる 変更が、本発明中に包含されるように意図されている。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,ML,MR, NE,SN,TD,TG),AP(GH,GM,KE,L S,MW,SD,SZ,UG,ZW),EA(AM,AZ ,BY,KG,KZ,MD,RU,TJ,TM),AL ,AM,AT,AU,AZ,BA,BB,BG,BR, BY,CA,CH,CN,CU,CZ,DE,DK,E E,ES,FI,GB,GE,GH,GM,GW,HU ,ID,IL,IS,JP,KE,KG,KP,KR, KZ,LC,LK,LR,LS,LT,LU,LV,M D,MG,MK,MN,MW,MX,NO,NZ,PL ,PT,RO,RU,SD,SE,SG,SI,SK, SL,TJ,TM,TR,TT,UA,UG,US,U Z,VN,YU,ZW (72)発明者 クリストファー・イー・フィリップス アメリカ合衆国・カリフォルニア・ 95138・サン・ホセ・アシス・コート・ 5888 (72)発明者 デール・ウォン アメリカ合衆国・カリフォルニア・ 94121・サン・フランシスコ・サーティフ ィフス・アベニュ・855

Claims (1)

  1. 【特許請求の範囲】 1. 高水準プログラミング言語で書かれたコンピュータプログラムを、マイ クロプロセッサと接続された1つ以上の特定用途向け集積回路による実行のため のプログラムへ自動的にコンパイルするための、コンピュータにより実行される 方法であって、 前記1つ以上の特定用途向け集積回路により実行されるべき特別命令であって 、前記マイクロプロセッサによる実行用に書かれた所定の入力コンピュータプロ グラムに関する相対的な性能向上という結果となる1つ以上の特別命令のセット を自動的に決定する段階と、 前記1つ以上の特別命令を有するコードを生成する段階と を具備することを特徴とする方法。 2. 前記コードを生成する段階は、前述の機能のローディングおよび活性化 のための命令を有する、前記マイクロプロセッサによる実行用のコードを生成す る段階を具備することを特徴とする請求項1に記載の方法。 3. 前記1つ以上の特定用途向け集積回路内の回路構成により実行されるべ き機能を有するコードブロックを選択する段階と、 前記コードブロックを、領域制約および実行時間制約のうちの少なくとも1つ に基づいてグループにまとめる段階と、 前記機能のローディングを予定する段階と、 前記機能の活性化を予定する段階と をさらに具備することを特徴とする請求項2に記載の方法。 4. 前記回路構成の詳細な集積回路レイアウトを生成する段階をさらに具備 することを特徴とする請求項2に記載の方法。 5. 前記機能に関するコンフィギュレーションデータを生成する段階をさら に具備することを特徴とする請求項4に記載の方法。 6. 前記命令は、特定用途向け集積回路上において実行される、ロード、活 性化、呼び出し、および/または解放機能に対する特別命令を備えることを特徴 とする請求項2に記載の方法。 7. 前記グループにまとめる段階は、前記選択されたコードブロックに関す る開始時間と終了時間とを計算する段階であることを特徴とする請求項2に記載 の方法。 8. 前記開始時間および前記終了時間は、前記選択されたコードブロックが 各々の並列動作に関して固定されたオーバーヘッドと並列に実行されると仮定し て計算されることを特徴とする請求項7に記載の方法。 9. 前記固定されたオーバーヘッドは、OV=I+A+Lとして計算され、 ここでIは、前記特定用途向け集積回路をコプロセッサ命令として呼び出すため に必要とされる平均時間であり、Aは、活性化コンフィギュレーション命令を発 行するために必要とされる平均時間+活性化のための平均ストール時間であり、 Lは、ロードコンフィギュレーションを発行するために必要とされる平均時間+ ローディングのための平均ストール時間であることを特徴とする請求項8に記載 の方法。 10. 前記グループにまとめる段階は、グループ内において最も遅い終了時 間と最も早い終了時間との間の差が最小とされるように実行されることを特徴と する請求項7に記載の方法。 11. 前記グループにまとめる段階は、各々のグループに関して、そのグル ープの機能を実行するための回路構成が特定用途向け集積回路のブロックの指定 された容量を超過しないように実行されることを特徴とする請求項7に記載の方 法。 12. 前記グループにまとめる段階は、 ゼロの総割り当て領域を備える新たなグループを開く段階と、 前記コードブロックを所定の順序でソートしかつ横断する段階と、 各々のコードブロックに関して、前記ブロックの前記領域+前記グループの割 り当て領域が、単一のグループ用に指定された最大領域を超過しなければ、前記 コードブロックを前記グループへ追加し、かつ、前記コードブロックの前記領域 を前記グループの割り当て領域へ追加し、そうでなければ、新たなグループを開 いて、前記コードブロックを前記新たなグループへ追加し、かつ、前記コードブ ロックの前記領域を前記新たなグループの割り当て領域へ追加する段階と を具備することを特徴とする請求項7に記載の方法。 13. 前記所定の順序は、終了時間の増加方向の順序を一次鍵とし、かつ、 開始時間の増加方向の順序を二次鍵とする形式であることを特徴とする請求項1 2に記載の方法。 14. 前記グループにまとめる段階は、 前記コードブロックを、前記終了時間の減少方向の順序に横断する段階と、 各々のコードブロックに関して、前記コードブロックが属するグループの開始 幅と終了幅とを決定する段階と、 前記コードブロックの領域+異なるグループの割り当てられた領域が単一のグ ループ用に指定された最大領域を超過せず、かつ、前記コードブロックを再度割 り当てることが、前記コードブロックが属するグループと、異なるグループとに 関する前記開始幅と前記終了幅のうちの少なくとも1つにおける正味の向上とい う結果となれば、前記コードブロックを前記異なるグループへ再度割り当てる段 階とをさらに具備し、 前記開始幅は、同じグループに属する全てのコードブロックの最も遅い開始時 間と最も早い開始時間との間の差であり、前記終了幅は、同じグループに属する 全てのコードブロックの最も遅い終了時間と最も早い終了時間との間の差である ことを特徴とする請求項13に記載の方法。 15. 前記選択する段階は、前記コンピュータプログラムが単一のマイクロ プロセッサ上で実行されるときに、各々のコードブロックに費やされた時間の百 分率をサンプリングする段階を具備することを特徴とする請求項2に記載の方法 。 16. 前記選択する段階は、 前記高水準プログラミング言語を、前記コンピュータプログラムの制御依存性 とデータ依存性とを表す中間データ構造に構文解析する段階と、 前記中間データ構造における暗黙並列処理の総計を解析する段階と をさらに具備することを特徴とする請求項15に記載の方法。 17. 前記選択する段階は、前記コンピュータプログラムの前記コードブロ ックのうちの少なくとも幾つかに関して、特定用途向け集積回路内の回路構成を 用いてコードブロックを実装することに関するコストおよび利益を見積もる段階 をさらに具備することを特徴とする請求項16に記載の方法。 18. 前記コードブロックを実装することに関するコストおよび利益を見積 もる段階は、 前記コードブロックが特定用途向け集積回路として実装されれば、実行時間の 縮小を見積もる段階と、 前記コードブロックが特定用途向け集積回路として実装されれば、必要とされ るレイアウト領域を見積もる段階と を具備することを特徴とする請求項17に記載の方法。 19. 前記選択する段階は、 特定用途向け集積回路の単一ブロックの最大領域を表す第1ランタイムパラメ ータと、特定用途向け集積回路として実装するために考慮すべき全てのブロック のための最大総領域を表す第2ランタイムパラメータを受け入れる段階と、 前記第1および第2ランタイムパラメータを満たしかつ実行時間の見積もり総 縮小量を最大にするコードブロックのセットを選択する段階と をさらに具備することを特徴とする請求項18に記載の方法。 20. 前記第1および第2ランタイムパラメータを満たしかつ実行時間の見 積もり総縮小量を最大にするコードブロックのセットを選択する段階は、 前記コードブロックを、実行時間の縮小量が減少していく順序にソートしかつ 横断する段階と、 各々のコードブロックに関して、 前記縮小がゼロに等しければ、終了する段階と、 前記必要とされるレイアウトを見積もる段階と、 前記領域が、特定用途向け集積回路の単一のブロック用に指定された最大領 域を超過しなければ、このコードブロックをスキップする段階と、 前記全てのブロック用に指定された最大総領域を、1より大きな一定値だけ 増加させる段階と、 以前選択されたコードブロックの総領域+現在のコードブロック用に見積も られた必要なレイアウト領域が、前記一定値だけ増加された指定された最大総領 域を超過すれば、終了する段階と、 そうでなければ、前記コードブロックを選択する段階と、 前記選択されたコードブロック上においてさらなる選択を行うために、ナッ プサック・アルゴリズムと前記最大総領域とを用いる段階と を具備することを特徴とする請求項19に記載の方法。 21. 前記実行時間の縮小が、R=T(1−1/P)という式にしたがって 見積もられ、ここでTは、前記コードブロックに費やされた実行時間の百分率で あり、Pは、前記コードブロックにおいて並列に実行され得るパスの数であるこ とを特徴とする請求項18に記載の方法。 22. 前記中間データ構造は、ノードを有するツリー構造であり、かつ、前 記レイアウト領域を見積もる段階は、 前記ツリー構造の上向きの横断を実行する段階と、 前記ツリー内の各々のノードを回路プリミティブのライブラリからのセルにマ ッピングする段階と、 前記マッピングされたセルの総領域を計算する段階と、 セルの相互接続のために必要とされるさらなる領域を計算する段階と を具備することを特徴とする請求項18に記載の方法。 23. 前記マッピングは、レジスタへのスカラー変数マップ、レジスタファ イルへのアレイマップ、加算器への加算および減算演算子マップ、加算器へのイ ンクリメントおよびデクリメント演算子マップ、乗算器への乗算および除算演算 子マップ、比較器への等式および不等式演算子マップ、アキュムレータへの+= ,−=演算子マップ、乗算−アキュムレータへの*=,/=演算子マップ、シフ トレジスタへの<<,>>演算子マップ、ブールゲートへの&,|,〜,^演算 子マップ、ステートマシンへの分岐マップ、およびステートマシンへのループマ ップのうちの少なくとも1つを有する多数の所定のマッピングにしたがって実行 されることを特徴とする請求項22に記載の方法。 24. 前記マッピングは、前記コンピュータプログラムにより期待されるデ ータ精度をサポートするために必要とされる有効ピット数を決定することを有す ることを特徴とする請求項22に記載の方法。 25. 前記相互接続のために必要とされるさらなる領域を計算する段階は、 領域=max(0,(A−B))という式にしたがって実行され、ここで、Aは、 相互接続のために必要とされる総領域の椎定値であり、Bば、前記相互接続によ る使用のためにマッピングされたセル内において有効な領域の推定値であること を特徴とする請求項22に記載の方法。 26. 前記Aは、相互接続の幅と、前記マッピングされたセル数の平方根の 分数倍として計算された相互接続の平均長さと、相互接続の総数とに関するラン タイムパラメータの積として計算されることを特徴とする請求項25に記載の方 法。 27. 前記Bは、相互接続のためのセル領域の分数と、前記マッピングされ た全セルの総領域とに関するランタイムパラメータの積として計算されることを 特徴とする請求項25に記載の方法。 28. 各々のグループに関する実行時間の縮小を見積もる段階をさらに具備 することを特徴とする請求項16に記載の方法。 29. スケジューリングの活性化は、領域制約および実行時間制約のうちの 少なくとも1つを条件として、実行時間全体が最小にされるように実行されるこ とを特徴とする請求項28に記載の方法。 30. 前記スケジューリングの活性化は、グループ内の全てのコードブロッ クのデータ依存性および制御依存性が侵害されないように実行されることを特徴 とする請求項29に記載の方法。 31. 前記スケジューリングの活性化は、特定用途向け回路の同時ブロック の指定された数が超過されないように実行されることを特徴とする請求項29に 記載の方法。 32. 前記スケジューリングは、 各々のグループを別個のタスクとしてモデリングする段階と、 特定用途向け集積回路上において再構成可能なロジックの各々の有効ブロック をプロセッサとしてモデリングする段階と、 変更されたマイクロプロセッサ・スケジューリング・アルゴリズムを実行する 段階と をさらに具備することを特徴とする請求項29に記載の方法。 33. 前記中間データ構造は、アークが依存性を表すグラフであり、 前記各々のグループを別個のタスクとしてモデリングする段階は、 各々のグループに関して、ノードを前記グラフに加える段階と、 グループに割り当てられた各々のコードブロックに関して、以前にノードの代 わりに前記コードブロックの地点を指していたアークが前記グループを表すよう に前記グラフを変更する段階と、 前記グループに割り当てられたコードブロックの最も遅い終了時間と最も早い 開始時間との間の差を決定する段階と、 前記差と等しい、前記グループの必要とされる時間を設定する段階と を具備することを特徴とする請求項32に記載の方法。 34. 前記変更されたマイクロプロセッサ・スケジューリング・アルゴリズ ムを実行する段階は、 標準リストスケジューリング・マイクロプロセッサ・スケジューリング・アル ゴリズムを実行する段階と、 前記アルゴリズムの実行中に、新たに準備状態となったタスクの準備ができた ときにどのプロセッサも有効ではない場合に、 プロセッサが有効となるまでストール時間を計算する段階と、 新たに準備状態となったタスクと、該新たに準備状態となったタスクの準備が できた時刻に実行するように予定されたタスクとを備える競合するタスクのリス トを作成する段階と、 最小に見積もられた実行時間の縮小を伴う競合するタスクを見つける段階とを 具備することを特徴とする請求項32に記載の方法。 35. 前記変更されたマイクロプロセッサ・スケジューリング・アルゴリズ ムを実行する段階は、前記ストール時間が前記最小の縮小以下であれば、プロセ ッサが有効となったときに実行するための新たに準備状態となったタスクをスケ ジューリングし、かつ、前記マイクロプロセッサ・スケジューリング・アルゴリ ズムを実行し続ける段階とをさらに具備することを特徴とする請求項34に記載 の方法。 36. 前記変更されたマイクロプロセッサ・スケジューリング・アルゴリズ ムを実行する段階は、前記ストール時間が前記最小の縮小よりも長ければ、前記 最小の縮小を伴うタスクを捨て、かつ、前記マイクロプロセッサ・スケジューリ ング・アルゴリズムを実行し続ける段階をさらに具備することを特徴とする請求 項35に記載の方法。 37. 前記変更されたマイクロプロセッサ・スケジューリング・アルゴリズ ムを実行する段階は、前記ストール時間が前記最小の縮小よりも長ければ、 前記新たに準備状態となったタスクを、2つの新たなタスクに置き換える段階 と、 前記新たに準備状態となったタスクの準備ができる時刻に実行するように予定 されたそれそれのタスクを、2つの新たなタスクそれぞれに置き換える段階とを さらに具備し、前記2つの新たなタスクのうち、 第1の新たなタスクは、プロセッサが有効となるときより後の開始時間を有す る前記新たに準備状態となったタスクのコードブロックを有し、 第2の新たなタスクは、前記新たに準備状態となったタスクの他のコードブロ ックを有することをさらに具備することを特徴とする請求項35に記載の方法。 38. 前記変更されたマイクロプロセッサ・スケジューリング・アルゴリズ ムを実行する段階は、 前記新たなタスクのうち、最小の実行時間の縮小を伴うタスクを見つける段階 と、 前記最小の実行時間の縮小を伴うタスクを捨てる段階と をさらに具備することを特徴とする請求項37に記載の方法。 39. スケジューリング・ローディングは、領域制約および実行時間制約の うちの少なくとも1つを条件として、実行時間全体が最小にされるように実行さ れることを特徴とする請求項28に記載の方法。 40. 前記スケジューリング・ローディングは、各々の機能の活性化がロー ディングによって先行されるように実行されることを特徴とする請求項39に記 載の方法。 41. 前記スケジューリング・ローディングは、特定用途向け回路のブロッ クのためにロードされた共存するグループ用に指定された容量が超過されないよ うに実行されることを特徴とする請求項39に記載の方法。 42. 前記データ構造は、制御フローグラフを有し、 前記スケジューリング・ローディングは、 各々のグループをタスクとして、かつ、特定用途向け集積回路の各々の有効ブ ロックを、指定された最大数の同時タスクを備えたプロセッサとしてモデリング する段階と、 首尾よく予定された活性化を伴う各々のグループに関して、前記グループを表 すタスクの終了時間と等しい終了時間と、前記グループを表す前記タスクの開始 時間から、グループをロードするために必要な時間を指定するランタイムパラメ ータを差し引いたものに等しい開始時間とを有する新たなロード_グループタス クを作成する段階と を具備することを特徴とする請求項39に記載の方法。 43. 前記スケジューリング・ローディングは、各々の新たなロード_グル ープタスクに関して、ノードを前記制御フローグラフ内に挿入する段階をさらに 具備することを特徴とする請求項42に記載の方法。 44. 前記スケジューリング・ローディングは、活性化の直前に先行する前 記制御フローグラフ内に分岐ノードを見つける段階と、 ロード_グループタスクのストール時間を、前記分岐ノードの終了時間から前 記ロード_グループタスクの開始時間を差し引いたものとして計算する段階と、 前記ストール時間が前記グループ用に見積もられた実行時間の縮小以下であれ ば、前記分岐ノードから前記ロード_グループタスクへの制御フローアークを作 成し、そうでなければ、前記ロード_グループタスクを捨て、かつ、前記グルー プを捨てる段階と をさらに具備することを特徴とする請求項42に記載の方法。 45. 前記スケジューリング・ローディングは、変更されたリスト処理マイ クロプロセッサ・スケジューリング・アルゴリズムを実行する段階をさらに具備 することを特徴とする請求項43または請求項44に記載の方法。 46. 前記変更されたリスト処理マイクロプロセッサ・スケジューリング・ アルゴリズムを実行する段階は、 指定された最大数の同時タスクをプロセッサ毎に伴うリストスケジューリング ・マイクロプロセッサ・スケジューリング・アルゴリズムを実行する段階と、 前記アルゴリズムの実行中に、新たに準備状態となったタスクの準備ができた ときにどのプロセッサも有効ではない場合に、 プロセッサが有効となるまでストール時間を計算する段階と、 新たに準備状態となったタスクと、該新たに準備状態となったタスクの準備が できた時刻に実行するように予定されたタスクとを備える競合するタスクのリス トを作成する段階と、 最小に見積もられた実行時間の縮小を伴う競合するタスクを見つける段階とを 具備することを特徴とする請求項45に記載の方法。 47. 前記変更されたマイクロプロセッサ・スケジューリング・アルゴリズ ムを実行する段階は、 前記ストール時間が前記最小の縮小以下であれば、プロセッサが有効となった ときに実行するための新たに準備状態となったタスクをスケジューリングし、対 応するグループタスクのために前記スケジューリングを調整し、かつ、前記マイ クロプロセッサ・スケジューリング・アルゴリズムを実行し続ける段階をさらに 具備することを特徴とする請求項46に記載の方法。 48. 前記変更されたマイクロプロセッサ・スケジューリング・アルゴリズ ムを実行する段階は、前記ストール時間が前記最小の縮小よりも長ければ、前記 最小の縮小を伴うタスクとその対応するグループとを捨て、かつ、前記マイクロ プロセッサ・スケジューリング・アルゴリズムを実行し続ける段階を具備するこ とを特徴とする請求項46に記載の方法。 49. 前記変更されたマイクロプロセッサ・スケジューリング・アルゴリズ ムを実行する段階は、 前記制御フローグラフにおいて、捨てられたロード_グループタスクを表すノ ードと、前記対応するグループの活性化を表すノードとの間に分岐ノードが介在 すれば、 活性化の直前に先行する前記制御フローグラフ内に分岐ノードを見つける段階 と、 ロード_グループタスクのストール時間を、前記分岐ノードの終了時間から前 記ロード_グループタスクの開始時間を差し引いたものとして計算する段階と、 前記ストール時間が前記グループ用に見積もられた実行時間の縮小以下であれ ば、前記分岐ノードから前記ロード_グループタスクへの制御フローアークを作 成し、そうでなければ、前記ロード_グループタスクを捨て、かつ、前記グルー プを捨てる段階と をさらに具備することを特徴とする請求項48に記載の方法。 50. 前記変更されたマイクロプロセッサ・スケジューリング・アルゴリズ ムを実行する段階は、前記ストール時間が前記最小の縮小よりも長ければ、 前記新たに準備状態となったタスクを、2つの新たなそれそれのタスクおよび 対応するグループに置き換える段階と、 前記新たに準備状態となったタスクの準備ができる時刻に実行するように予定 されたそれそれのタスクを、2つの新たなタスクおよび対応するグループに置き 換える段階と をさらに具備し、 第1の新たなグループは、プロセッサが有効となるときより後の開始時間を有 する前記新たに準備状態となったタスクのコードブロックを有し、 第2の新たなグループは、前記新たに準備状態となったタスクの他のコードブ ロックを有することをさらに具備することを特徴とする請求項48に記載の方法 。 51. 前記変更されたマイクロプロセッサ・スケジューリング・アルゴリズ ムを実行する段階は、 前記新たなタスクのうち、最小の実行時間の縮小を有する対応するグループを 伴うタスクを見つける段階と、 前記最小の縮小を有する対応する区画を伴うタスクを捨てる段階と をさらに具備することを特徴とする請求項50に記載の方法。 52. 前記変更されたマイクロプロセッサ・スケジューリング・アルゴリズ ムを実行する段階は、 前記制御フローグラフにおいて、捨てられたロード_グループタスクを表すノ ードと、前記対応グループの活性化を表すノードとの間に分岐ノードが介在すれ ば、 活性化の直前に先行する前記制御フローグラフ内に分岐ノードを見つける段階 と、 ロード_グループタスクのストール時間を、前記分岐ノードの終了時間から前 記ロード_グループタスクの開始時間を差し引いたものとして計算する段階と、 前記ストール時間が前記グループ用に見積もられた実行時間の縮小以下であれ ば、前記分岐ノードから前記ロード_グループタスクへの制御フローアークを作 成し、そうでなければ、前記ロード_グループタスクを捨て、かつ、前記グルー プを捨てる段階と をさらに具備することを特徴とする請求項51に記載の方法。
JP50587699A 1997-06-27 1998-06-29 高水準プログラミング言語をコンパイルするための方法 Ceased JP2002508102A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/884,377 1997-06-27
US08/884,377 US5966534A (en) 1997-06-27 1997-06-27 Method for compiling high level programming languages into an integrated processor with reconfigurable logic
PCT/US1998/013563 WO1999000731A1 (en) 1997-06-27 1998-06-29 Method for compiling high level programming languages

Publications (2)

Publication Number Publication Date
JP2002508102A true JP2002508102A (ja) 2002-03-12
JP2002508102A5 JP2002508102A5 (ja) 2005-11-24

Family

ID=25384489

Family Applications (1)

Application Number Title Priority Date Filing Date
JP50587699A Ceased JP2002508102A (ja) 1997-06-27 1998-06-29 高水準プログラミング言語をコンパイルするための方法

Country Status (7)

Country Link
US (2) US5966534A (ja)
EP (1) EP0991997A4 (ja)
JP (1) JP2002508102A (ja)
KR (1) KR100614491B1 (ja)
AU (1) AU8275498A (ja)
CA (1) CA2290649A1 (ja)
WO (1) WO1999000731A1 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7191312B2 (en) 2001-05-24 2007-03-13 Ipflex Inc. Configurable interconnection of multiple different type functional units array including delay type for different instruction processing
JP2010146577A (ja) * 2002-10-31 2010-07-01 Src Computers Inc 高級プログラミング言語におけるプログラムをハイブリッド計算プラットフォームの統一された実行可能要素に変換するためのプロセス
JP2012089154A (ja) * 2005-09-30 2012-05-10 Coware Inc マルチコアアーキテクチャにおけるスケジューリング
JP2019506695A (ja) * 2016-01-26 2019-03-07 アイキャット・エルエルシー 再構成可能アルゴリズムによるパイプラインコアおよびアルゴリズムマッチングパイプラインコンパイラを有するプロセッサ
JP7461380B2 (ja) 2019-05-23 2024-04-03 ザイリンクス インコーポレイテッド ヘテロジニアスプログラマブルデバイスのためのハードウェアソフトウェア設計時のフロー収束

Families Citing this family (190)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6077315A (en) * 1995-04-17 2000-06-20 Ricoh Company Ltd. Compiling system and method for partially reconfigurable computing
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
DE19654846A1 (de) 1996-12-27 1998-07-09 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.)
ATE243390T1 (de) 1996-12-27 2003-07-15 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen umladen von datenflussprozessoren (dfps) sowie bausteinen mit zwei- oder mehrdimensionalen programmierbaren zellstrukturen (fpgas, dpgas, o.dgl.)
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
DE19704728A1 (de) * 1997-02-08 1998-08-13 Pact Inf Tech Gmbh Verfahren zur Selbstsynchronisation von konfigurierbaren Elementen eines programmierbaren Bausteines
DE19704742A1 (de) * 1997-02-11 1998-09-24 Pact Inf Tech Gmbh Internes Bussystem für DFPs, sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen, zur Bewältigung großer Datenmengen mit hohem Vernetzungsaufwand
US6330659B1 (en) 1997-11-06 2001-12-11 Iready Corporation Hardware accelerator for an object-oriented programming language
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
JP3539613B2 (ja) * 1997-12-03 2004-07-07 株式会社日立製作所 ループ飛び出し文を含むループに対する配列サマリ解析方法
US7565461B2 (en) 1997-12-17 2009-07-21 Src Computers, Inc. Switch/network adapter port coupling a reconfigurable processing element to one or more microprocessors for use with interleaved memory controllers
US6076152A (en) * 1997-12-17 2000-06-13 Src Computers, Inc. Multiprocessor computer architecture incorporating a plurality of memory algorithm processors in the memory subsystem
US7373440B2 (en) 1997-12-17 2008-05-13 Src Computers, Inc. Switch/network adapter port for clustered computers employing a chain of multi-adaptive processors in a dual in-line memory module format
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
EP1351154A2 (en) 1998-11-20 2003-10-08 Altera Corporation Reconfigurable programmable logic device computer system
US6286138B1 (en) * 1998-12-31 2001-09-04 International Business Machines Corporation Technique for creating remotely updatable programs for use in a client/server environment
US6477683B1 (en) 1999-02-05 2002-11-05 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
US6453407B1 (en) * 1999-02-10 2002-09-17 Infineon Technologies Ag Configurable long instruction word architecture and instruction set
WO2002013000A2 (de) 2000-06-13 2002-02-14 Pact Informationstechnologie Gmbh Pipeline ct-protokolle und -kommunikation
DE19910863A1 (de) * 1999-03-11 2000-09-21 Siemens Ag Vorrichtung und Verfahren zum Verarbeiten von Aufträgen
DE10081643D2 (de) 1999-06-10 2002-05-29 Pact Inf Tech Gmbh Sequenz-Partitionierung auf Zellstrukturen
WO2001013583A2 (en) 1999-08-16 2001-02-22 Iready Corporation Internet jack
CA2348261C (en) 1999-08-30 2006-02-14 Ip Flex Inc. Program product and data processor
US6714978B1 (en) * 1999-12-04 2004-03-30 Worldcom, Inc. Method and system for processing records in a communications network
US6986128B2 (en) * 2000-01-07 2006-01-10 Sony Computer Entertainment Inc. Multiple stage program recompiler and method
US6625797B1 (en) 2000-02-10 2003-09-23 Xilinx, Inc. Means and method for compiling high level software languages into algorithmically equivalent hardware representations
US6681383B1 (en) 2000-04-04 2004-01-20 Sosy, Inc. Automatic software production system
US7334216B2 (en) * 2000-04-04 2008-02-19 Sosy, Inc. Method and apparatus for automatic generation of information system user interfaces
WO2001090887A1 (fr) * 2000-05-25 2001-11-29 Fujitsu Limited Procede de traitement de programme permettant un traitement haute vitesse au moyen d'un materiel a reconfiguration dynamique et programme permettant d'executer ce procede de traitement
US7340596B1 (en) * 2000-06-12 2008-03-04 Altera Corporation Embedded processor with watchdog timer for programmable logic
US7168069B1 (en) 2000-07-12 2007-01-23 Stmicroelectronics, Inc. Dynamic generation of multimedia code for image processing
JP2002049652A (ja) * 2000-08-03 2002-02-15 Hiroshi Yasuda デジタル回路設計方法、そのコンパイラーおよびシミュレータ
US7343594B1 (en) 2000-08-07 2008-03-11 Altera Corporation Software-to-hardware compiler with symbol set inference analysis
EP1356401A2 (en) * 2000-08-07 2003-10-29 Altera Corporation Software-to-hardware compiler
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
AU2002220600A1 (en) * 2000-10-06 2002-04-15 Pact Informationstechnologie Gmbh Cell system with segmented intermediate cell structure
US20040015899A1 (en) * 2000-10-06 2004-01-22 Frank May Method for processing data
JP2002123563A (ja) * 2000-10-13 2002-04-26 Nec Corp コンパイル方法および合成装置ならびに記録媒体
US6904105B1 (en) * 2000-10-27 2005-06-07 Intel Corporation Method and implemention of a traceback-free parallel viterbi decoder
US6834291B1 (en) 2000-10-27 2004-12-21 Intel Corporation Gold code generator design
US7039717B2 (en) 2000-11-10 2006-05-02 Nvidia Corporation Internet modem streaming socket method
US7379475B2 (en) 2002-01-25 2008-05-27 Nvidia Corporation Communications processor
WO2005045692A2 (en) 2003-08-28 2005-05-19 Pact Xpp Technologies Ag Data processing device and method
US9037807B2 (en) * 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US20090210653A1 (en) * 2001-03-05 2009-08-20 Pact Xpp Technologies Ag Method and device for treating and processing data
US9250908B2 (en) 2001-03-05 2016-02-02 Pact Xpp Technologies Ag Multi-processor bus and cache interconnection system
US9436631B2 (en) 2001-03-05 2016-09-06 Pact Xpp Technologies Ag Chip including memory element storing higher level memory data on a page by page basis
US9411532B2 (en) 2001-09-07 2016-08-09 Pact Xpp Technologies Ag Methods and systems for transferring data between a processing device and external devices
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US9552047B2 (en) 2001-03-05 2017-01-24 Pact Xpp Technologies Ag Multiprocessor having runtime adjustable clock and clock dependent power supply
US9141390B2 (en) 2001-03-05 2015-09-22 Pact Xpp Technologies Ag Method of processing data with an array of data processors according to application ID
US20070299993A1 (en) * 2001-03-05 2007-12-27 Pact Xpp Technologies Ag Method and Device for Treating and Processing Data
US20090300262A1 (en) * 2001-03-05 2009-12-03 Martin Vorbach Methods and devices for treating and/or processing data
US7210129B2 (en) * 2001-08-16 2007-04-24 Pact Xpp Technologies Ag Method for translating programs for reconfigurable architectures
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US7624204B2 (en) * 2001-03-22 2009-11-24 Nvidia Corporation Input/output controller node in an adaptable computing environment
US6836839B2 (en) 2001-03-22 2004-12-28 Quicksilver Technology, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US7962716B2 (en) 2001-03-22 2011-06-14 Qst Holdings, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US7325123B2 (en) 2001-03-22 2008-01-29 Qst Holdings, Llc Hierarchical interconnect for configuring separate interconnects for each group of fixed and diverse computational elements
US7752419B1 (en) 2001-03-22 2010-07-06 Qst Holdings, Llc Method and system for managing hardware resources to implement system functions using an adaptive computing architecture
US7433909B2 (en) 2002-06-25 2008-10-07 Nvidia Corporation Processing architecture for a reconfigurable arithmetic node
US7653710B2 (en) 2002-06-25 2010-01-26 Qst Holdings, Llc. Hardware task manager
US7489779B2 (en) * 2001-03-22 2009-02-10 Qstholdings, Llc Hardware implementation of the secure hash standard
US20040133745A1 (en) 2002-10-28 2004-07-08 Quicksilver Technology, Inc. Adaptable datapath for a digital processing system
US6577678B2 (en) 2001-05-08 2003-06-10 Quicksilver Technology Method and system for reconfigurable channel coding
US6618434B2 (en) * 2001-05-31 2003-09-09 Quicksilver Technology, Inc. Adaptive, multimode rake receiver for dynamic search and multipath reception
US10031733B2 (en) * 2001-06-20 2018-07-24 Scientia Sol Mentis Ag Method for processing data
EP1402382B1 (de) * 2001-06-20 2010-08-18 Richter, Thomas Verfahren zur bearbeitung von daten
CA2458199A1 (en) * 2001-08-16 2003-02-27 Pact Xpp Technologies Ag Method for the translation of programs for reconfigurable architectures
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US20030037319A1 (en) * 2001-08-20 2003-02-20 Ankur Narang Method and apparatus for partitioning and placement for a cycle-based simulation system
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US20030056091A1 (en) * 2001-09-14 2003-03-20 Greenberg Craig B. Method of scheduling in a reconfigurable hardware architecture with multiple hardware configurations
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US20030149962A1 (en) * 2001-11-21 2003-08-07 Willis John Christopher Simulation of designs using programmable processors and electronically re-configurable logic arrays
US7046635B2 (en) 2001-11-28 2006-05-16 Quicksilver Technology, Inc. System for authorizing functionality in adaptable hardware devices
US8412915B2 (en) 2001-11-30 2013-04-02 Altera Corporation Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements
US6986021B2 (en) 2001-11-30 2006-01-10 Quick Silver Technology, Inc. Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements
US7215701B2 (en) 2001-12-12 2007-05-08 Sharad Sambhwani Low I/O bandwidth method and system for implementing detection and identification of scrambling codes
US7577822B2 (en) * 2001-12-14 2009-08-18 Pact Xpp Technologies Ag Parallel task operation in processor and reconfigurable coprocessor configured based on information in link list including termination information for synchronization
US20030120460A1 (en) * 2001-12-21 2003-06-26 Celoxica Ltd. System, method, and article of manufacture for enhanced hardware model profiling
US7403981B2 (en) 2002-01-04 2008-07-22 Quicksilver Technology, Inc. Apparatus and method for adaptive multimedia reception and transmission in communication environments
AU2003214046A1 (en) * 2002-01-18 2003-09-09 Pact Xpp Technologies Ag Method and device for partitioning large computer programs
EP1483682A2 (de) 2002-01-19 2004-12-08 PACT XPP Technologies AG Reconfigurierbarer prozessor
AU2003214003A1 (en) 2002-02-18 2003-09-09 Pact Xpp Technologies Ag Bus systems and method for reconfiguration
WO2004088502A2 (de) * 2003-04-04 2004-10-14 Pact Xpp Technologies Ag Verfahren und vorrichtung für die datenverarbeitung
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
EP1518186A2 (de) * 2002-03-21 2005-03-30 PACT XPP Technologies AG Verfahren und vorrichtung zur datenverarbeitung
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
US6732354B2 (en) * 2002-04-23 2004-05-04 Quicksilver Technology, Inc. Method, system and software for programming reconfigurable hardware
JP4647307B2 (ja) * 2002-04-25 2011-03-09 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ スケーラブルプロセッサにおける自動タスク分散
USRE43393E1 (en) 2002-05-13 2012-05-15 Qst Holdings, Llc Method and system for creating and programming an adaptive computing engine
US7328414B1 (en) 2003-05-13 2008-02-05 Qst Holdings, Llc Method and system for creating and programming an adaptive computing engine
US7660984B1 (en) 2003-05-13 2010-02-09 Quicksilver Technology Method and system for achieving individualized protected space in an operating system
US6931612B1 (en) * 2002-05-15 2005-08-16 Lsi Logic Corporation Design and optimization methods for integrated circuits
EP1509861A2 (en) * 2002-05-23 2005-03-02 Koninklijke Philips Electronics N.V. Integrated circuit design method
US20030233639A1 (en) * 2002-06-11 2003-12-18 Tariq Afzal Programming interface for a reconfigurable processing system
US7024654B2 (en) * 2002-06-11 2006-04-04 Anadigm, Inc. System and method for configuring analog elements in a configurable hardware device
US7802108B1 (en) 2002-07-18 2010-09-21 Nvidia Corporation Secure storage of program code for an embedded system
US20110238948A1 (en) * 2002-08-07 2011-09-29 Martin Vorbach Method and device for coupling a data processing unit and a data processing array
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
WO2004021176A2 (de) 2002-08-07 2004-03-11 Pact Xpp Technologies Ag Verfahren und vorrichtung zur datenverarbeitung
US8108656B2 (en) 2002-08-29 2012-01-31 Qst Holdings, Llc Task definition for specifying resource requirements
AU2003289844A1 (en) * 2002-09-06 2004-05-13 Pact Xpp Technologies Ag Reconfigurable sequencer structure
US7502915B2 (en) * 2002-09-30 2009-03-10 Nvidia Corporation System and method using embedded microprocessor as a node in an adaptable computing machine
US7346902B2 (en) * 2002-10-22 2008-03-18 Sun Microsystems, Inc. System and method for block-based concurrentization of software code
US7603664B2 (en) 2002-10-22 2009-10-13 Sun Microsystems, Inc. System and method for marking software code
US7222218B2 (en) * 2002-10-22 2007-05-22 Sun Microsystems, Inc. System and method for goal-based scheduling of blocks of code for concurrent execution
US7937591B1 (en) 2002-10-25 2011-05-03 Qst Holdings, Llc Method and system for providing a device which can be adapted on an ongoing basis
US7225324B2 (en) 2002-10-31 2007-05-29 Src Computers, Inc. Multi-adaptive processing systems and techniques for enhancing parallelism and performance of computational functions
US8949576B2 (en) * 2002-11-01 2015-02-03 Nvidia Corporation Arithmetic node including general digital signal processing functions for an adaptive computing machine
US8276135B2 (en) 2002-11-07 2012-09-25 Qst Holdings Llc Profiling of software and circuit designs utilizing data operation analyses
US7225301B2 (en) 2002-11-22 2007-05-29 Quicksilver Technologies External memory controller node
SE0300742D0 (sv) * 2003-03-17 2003-03-17 Flow Computing Ab Data Flow Machine
US7373640B1 (en) * 2003-07-31 2008-05-13 Network Appliance, Inc. Technique for dynamically restricting thread concurrency without rewriting thread code
US8296764B2 (en) 2003-08-14 2012-10-23 Nvidia Corporation Internal synchronization control for adaptive integrated circuitry
US20050039189A1 (en) * 2003-08-14 2005-02-17 Todd Anderson Methods and apparatus to preemptively compile an application
US7174432B2 (en) 2003-08-19 2007-02-06 Nvidia Corporation Asynchronous, independent and multiple process shared memory system in an adaptive computing architecture
DE10349349A1 (de) * 2003-10-23 2005-05-25 Kuka Roboter Gmbh Verfahren zum Bestimmen und Bereitstellen von Laufzeitinformationen für Roboter-Steuerprogramme
US7685587B2 (en) * 2003-11-19 2010-03-23 Ecole Polytechnique Federal De Lausanne Automated instruction-set extension
US7689958B1 (en) 2003-11-24 2010-03-30 Sun Microsystems, Inc. Partitioning for a massively parallel simulation system
US7899913B2 (en) 2003-12-19 2011-03-01 Nvidia Corporation Connection management system and method for a transport offload engine
US8065439B1 (en) 2003-12-19 2011-11-22 Nvidia Corporation System and method for using metadata in the context of a transport offload engine
US7260631B1 (en) 2003-12-19 2007-08-21 Nvidia Corporation System and method for receiving iSCSI protocol data units
US8176545B1 (en) 2003-12-19 2012-05-08 Nvidia Corporation Integrated policy checking system and method
US8549170B2 (en) 2003-12-19 2013-10-01 Nvidia Corporation Retransmission system and method for a transport offload engine
US7624198B1 (en) 2003-12-19 2009-11-24 Nvidia Corporation Sequence tagging system and method for transport offload engine data lists
KR100552675B1 (ko) * 2003-12-26 2006-02-20 한국전자통신연구원 확장 인스트럭션 선택 장치 및 그 방법
US7206872B2 (en) 2004-02-20 2007-04-17 Nvidia Corporation System and method for insertion of markers into a data stream
US7249306B2 (en) 2004-02-20 2007-07-24 Nvidia Corporation System and method for generating 128-bit cyclic redundancy check values with 32-bit granularity
US7343378B2 (en) * 2004-03-29 2008-03-11 Microsoft Corporation Generation of meaningful names in flattened hierarchical structures
US7698413B1 (en) 2004-04-12 2010-04-13 Nvidia Corporation Method and apparatus for accessing and maintaining socket control information for high speed network connections
US7765539B1 (en) 2004-05-19 2010-07-27 Nintendo Co., Ltd. System and method for trans-compiling video games
US7353488B1 (en) * 2004-05-27 2008-04-01 Magma Design Automation, Inc. Flow definition language for designing integrated circuit implementation flows
US7487497B2 (en) * 2004-08-26 2009-02-03 International Business Machines Corporation Method and system for auto parallelization of zero-trip loops through induction variable substitution
US8984496B2 (en) * 2004-09-20 2015-03-17 The Mathworks, Inc. Extensible internal representation of systems with parallel and sequential implementations
US7957379B2 (en) 2004-10-19 2011-06-07 Nvidia Corporation System and method for processing RX packets in high speed network applications using an RX FIFO buffer
US7343482B2 (en) * 2004-10-20 2008-03-11 Arm Limited Program subgraph identification
US7318143B2 (en) * 2004-10-20 2008-01-08 Arm Limited Reuseable configuration data
US7350055B2 (en) * 2004-10-20 2008-03-25 Arm Limited Tightly coupled accelerator
KR20070097051A (ko) * 2004-11-30 2007-10-02 동경 엘렉트론 주식회사 동적으로 재구성 가능한 프로세서
US7426708B2 (en) * 2005-01-31 2008-09-16 Nanotech Corporation ASICs having programmable bypass of design faults
US20090031104A1 (en) * 2005-02-07 2009-01-29 Martin Vorbach Low Latency Massive Parallel Data Processing Device
US20060225049A1 (en) * 2005-03-17 2006-10-05 Zhiyuan Lv Trace based signal scheduling and compensation code generation
TWI306215B (en) 2005-04-29 2009-02-11 Ind Tech Res Inst Method and corresponding apparatus for compiling high-level languages into specific processor architectures
US7401314B1 (en) * 2005-06-09 2008-07-15 Altera Corporation Method and apparatus for performing compound duplication of components on field programmable gate arrays
KR100731976B1 (ko) * 2005-06-30 2007-06-25 전자부품연구원 재구성 가능 프로세서의 효율적인 재구성 방법
US9774699B2 (en) * 2005-09-20 2017-09-26 The Mathworks, Inc. System and method for transforming graphical models
US7890686B2 (en) * 2005-10-17 2011-02-15 Src Computers, Inc. Dynamic priority conflict resolution in a multi-processor computer system having shared resources
WO2007062327A2 (en) * 2005-11-18 2007-05-31 Ideal Industries, Inc. Releasable wire connector
US7716100B2 (en) * 2005-12-02 2010-05-11 Kuberre Systems, Inc. Methods and systems for computing platform
JP2007156926A (ja) * 2005-12-06 2007-06-21 Matsushita Electric Ind Co Ltd 割込制御装置
JP2009524134A (ja) 2006-01-18 2009-06-25 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト ハードウェア定義方法
JP4528728B2 (ja) 2006-01-31 2010-08-18 株式会社東芝 デジタル回路の自動設計装置、自動設計方法、および自動設計プログラム
US20070220235A1 (en) * 2006-03-15 2007-09-20 Arm Limited Instruction subgraph identification for a configurable accelerator
JP2007286671A (ja) * 2006-04-12 2007-11-01 Fujitsu Ltd ソフトウェア/ハードウェア分割プログラム、および分割方法。
US7761817B2 (en) * 2006-05-22 2010-07-20 Coherent Logix, Incorporated Designing an ASIC based on execution of a software program on a processing system
US7693257B2 (en) * 2006-06-29 2010-04-06 Accuray Incorporated Treatment delivery optimization
WO2008061557A1 (en) * 2006-11-20 2008-05-29 Freescale Semiconductor, Inc. System, apparatus and method for translating data
KR100893527B1 (ko) * 2007-02-02 2009-04-17 삼성전자주식회사 재구성 가능 멀티 프로세서 시스템에서의 매핑 및 스케줄링방법
US8250556B1 (en) * 2007-02-07 2012-08-21 Tilera Corporation Distributing parallelism for parallel processing architectures
EP1975791A3 (en) * 2007-03-26 2009-01-07 Interuniversitair Microelektronica Centrum (IMEC) A method for automated code conversion
US7987065B1 (en) 2007-04-17 2011-07-26 Nvidia Corporation Automatic quality testing of multimedia rendering by software drivers
US7996798B2 (en) * 2007-05-24 2011-08-09 Microsoft Corporation Representing binary code as a circuit
KR100940362B1 (ko) 2007-09-28 2010-02-04 고려대학교 산학협력단 모드 집합을 사용하는 명령어 처리기에서의 모드 명령어최적화 방법
JP5175524B2 (ja) * 2007-11-13 2013-04-03 株式会社日立製作所 コンパイラ
JP5109764B2 (ja) * 2008-03-31 2012-12-26 日本電気株式会社 記述処理装置、記述処理方法およびプログラム
JP5576605B2 (ja) * 2008-12-25 2014-08-20 パナソニック株式会社 プログラム変換装置およびプログラム変換方法
KR101511273B1 (ko) * 2008-12-29 2015-04-10 삼성전자주식회사 멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 방법 및시스템
US8667474B2 (en) * 2009-06-19 2014-03-04 Microsoft Corporation Generation of parallel code representations
JP5990466B2 (ja) 2010-01-21 2016-09-14 スビラル・インコーポレーテッド ストリームに基づく演算を実装するための汎用複数コアシステムのための方法および装置
US9176845B2 (en) * 2010-03-19 2015-11-03 Red Hat, Inc. Use of compiler-introduced identifiers to improve debug information pertaining to user variables
US8601013B2 (en) 2010-06-10 2013-12-03 Micron Technology, Inc. Analyzing data using a hierarchical structure
US8661424B2 (en) * 2010-09-02 2014-02-25 Honeywell International Inc. Auto-generation of concurrent code for multi-core applications
WO2012051577A1 (en) 2010-10-15 2012-04-19 Coherent Logix, Incorporated Disabling communication in a multiprocessor system
US20130232471A1 (en) * 2010-11-11 2013-09-05 Thomas Henties Method and Apparatus for Assessing Software Parallelization
EP2668574B1 (en) 2011-01-25 2021-11-24 Micron Technology, INC. Utilizing special purpose elements to implement a fsm
WO2012103151A2 (en) 2011-01-25 2012-08-02 Micron Technology, Inc. State grouping for element utilization
CN103443767B (zh) 2011-01-25 2016-01-20 美光科技公司 展开量化以控制自动机的入度和/或出度
JP5763783B2 (ja) 2011-01-25 2015-08-12 マイクロン テクノロジー, インク. 正規表現をコンパイルするための方法および装置
US8533698B2 (en) * 2011-06-13 2013-09-10 Microsoft Corporation Optimizing execution of kernels
US8997065B2 (en) * 2011-12-06 2015-03-31 The Mathworks, Inc. Automatic modularization of source code
US8959469B2 (en) 2012-02-09 2015-02-17 Altera Corporation Configuring a programmable device using high-level language
JP2013242700A (ja) * 2012-05-21 2013-12-05 Internatl Business Mach Corp <Ibm> コード最適化方法、プログラム及びシステム
US8819618B2 (en) * 2012-09-26 2014-08-26 The Mathworks, Inc. Behavior invariant optimization of maximum execution times for model simulation
JP6849371B2 (ja) * 2015-10-08 2021-03-24 三星電子株式会社Samsung Electronics Co.,Ltd. 側面発光レーザ光源、及びそれを含む三次元映像取得装置
US11477302B2 (en) 2016-07-06 2022-10-18 Palo Alto Research Center Incorporated Computer-implemented system and method for distributed activity detection
US20220321403A1 (en) * 2021-04-02 2022-10-06 Nokia Solutions And Networks Oy Programmable network segmentation for multi-tenant fpgas in cloud infrastructures

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870308A (en) * 1990-04-06 1999-02-09 Lsi Logic Corporation Method and system for creating and validating low-level description of electronic design
US5625797A (en) * 1990-08-10 1997-04-29 Vlsi Technology, Inc. Automatic optimization of a compiled memory structure based on user selected criteria
US5513124A (en) * 1991-10-30 1996-04-30 Xilinx, Inc. Logic placement using positionally asymmetrical partitioning method
US5485455A (en) * 1994-01-28 1996-01-16 Cabletron Systems, Inc. Network having secure fast packet switching and guaranteed quality of service
US5511067A (en) * 1994-06-17 1996-04-23 Qualcomm Incorporated Layered channel element in a base station modem for a CDMA cellular communication system
US5603063A (en) * 1994-06-27 1997-02-11 Quantum Corporation Disk drive command queuing method using two memory devices for storing two types of commands separately first before queuing commands in the second memory device
US5548587A (en) * 1994-09-12 1996-08-20 Efficient Networks, Inc. Asynchronous transfer mode adapter for desktop applications
US5752035A (en) * 1995-04-05 1998-05-12 Xilinx, Inc. Method for compiling and executing programs for reprogrammable instruction set accelerator
US5794062A (en) * 1995-04-17 1998-08-11 Ricoh Company Ltd. System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization
US5729705A (en) * 1995-07-24 1998-03-17 Symbios Logic Inc. Method and apparatus for enhancing throughput of disk array data transfers in a controller
US5794044A (en) * 1995-12-08 1998-08-11 Sun Microsystems, Inc. System and method for runtime optimization of private variable function calls in a secure interpreter
GB2317245A (en) * 1996-09-12 1998-03-18 Sharp Kk Re-timing compiler integrated circuit design
US5864535A (en) * 1996-09-18 1999-01-26 International Business Machines Corporation Network server having dynamic load balancing of messages in both inbound and outbound directions
US5898860A (en) * 1996-10-01 1999-04-27 Leibold; William Steven System and method for automatically generating a control drawing for a real-time process control system
US6078736A (en) * 1997-08-28 2000-06-20 Xilinx, Inc. Method of designing FPGAs for dynamically reconfigurable computing
US6212650B1 (en) * 1997-11-24 2001-04-03 Xilinx, Inc. Interactive dubug tool for programmable circuits
US6075935A (en) * 1997-12-01 2000-06-13 Improv Systems, Inc. Method of generating application specific integrated circuits using a programmable hardware architecture
US6510546B1 (en) * 2000-07-13 2003-01-21 Xilinx, Inc. Method and apparatus for pre-routing dynamic run-time reconfigurable logic cores

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7191312B2 (en) 2001-05-24 2007-03-13 Ipflex Inc. Configurable interconnection of multiple different type functional units array including delay type for different instruction processing
US7577821B2 (en) 2001-05-24 2009-08-18 Ipflex Inc. IC containing matrices of plural type operation units with configurable routing wiring group and plural delay operation units bridging two wiring groups
JP2010146577A (ja) * 2002-10-31 2010-07-01 Src Computers Inc 高級プログラミング言語におけるプログラムをハイブリッド計算プラットフォームの統一された実行可能要素に変換するためのプロセス
JP2012089154A (ja) * 2005-09-30 2012-05-10 Coware Inc マルチコアアーキテクチャにおけるスケジューリング
US8732439B2 (en) 2005-09-30 2014-05-20 Synopsys, Inc. Scheduling in a multicore processor
US8751773B2 (en) 2005-09-30 2014-06-10 Synopsys, Inc. Scheduling in a multicore architecture
US9164953B2 (en) 2005-09-30 2015-10-20 Synopsys, Inc. Scheduling in a multicore architecture
US9286262B2 (en) 2005-09-30 2016-03-15 Synopsys, Inc. Scheduling in a multicore architecture
US9442886B2 (en) 2005-09-30 2016-09-13 Synopsys, Inc. Scheduling in a multicore architecture
JP2019506695A (ja) * 2016-01-26 2019-03-07 アイキャット・エルエルシー 再構成可能アルゴリズムによるパイプラインコアおよびアルゴリズムマッチングパイプラインコンパイラを有するプロセッサ
JP7015249B2 (ja) 2016-01-26 2022-02-02 アイキャット・エルエルシー 再構成可能アルゴリズムによるパイプラインコアおよびアルゴリズムマッチングパイプラインコンパイラを有するプロセッサ
JP7461380B2 (ja) 2019-05-23 2024-04-03 ザイリンクス インコーポレイテッド ヘテロジニアスプログラマブルデバイスのためのハードウェアソフトウェア設計時のフロー収束

Also Published As

Publication number Publication date
EP0991997A1 (en) 2000-04-12
AU8275498A (en) 1999-01-19
KR100614491B1 (ko) 2006-08-22
WO1999000731A1 (en) 1999-01-07
EP0991997A4 (en) 2004-12-29
US6708325B2 (en) 2004-03-16
KR20010020544A (ko) 2001-03-15
US5966534A (en) 1999-10-12
CA2290649A1 (en) 1999-01-07
US20030014743A1 (en) 2003-01-16

Similar Documents

Publication Publication Date Title
JP2002508102A (ja) 高水準プログラミング言語をコンパイルするための方法
US7886283B2 (en) Phantom serializing compiler and method of operation of same
Gokhale et al. NAPA C: Compiling for a hybrid RISC/FPGA architecture
Rau Iterative modulo scheduling: An algorithm for software pipelining loops
US7797691B2 (en) System and method for automatic parallelization of sequential code
Gupta et al. Coordinated parallelizing compiler optimizations and high-level synthesis
Venkataramani et al. C to asynchronous dataflow circuits: An end-to-end toolflow
Corporaal et al. Using transport triggered architectures for embedded processor design
Eles et al. VHDL system-level specification and partitioning in a hardware/software co-synthesis environment
Plevyak et al. Obtaining sequential efficiency for concurrent object-oriented languages
Rim et al. Global scheduling with code-motions for high-level synthesis applications
Bringmann et al. Resource sharing in hierarchical synthesis
Gupta et al. Constrained software generation for hardware-software systems
Bezati High-level synthesis of dataflow programs for heterogeneous platforms: design flow tools and design space exploration
Wall Experience with a software-defined machine architecture
JP3311381B2 (ja) コンパイラにおける命令スケジューリング処理方法
Giorgi Accelerating haskell on a dataflow architecture: a case study including transactional memory
Scheichenzuber et al. Global hardware synthesis from behavioral dataflow descriptions
Roh et al. Generation and quantitative evaluation of dataflow clusters
Lin Compiler support for predicated execution in superscalar processors
Ping Seng et al. Flexible instruction processors
Saint-Mleux et al. SHard: a Scheme to hardware compiler
Tremblay et al. Partners in platform design
Fernandes A clustered VLIW architecture based on queue register files
Ferrandi et al. Automatic parallelization of sequential specifications for symmetric mpsocs

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050224

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060808

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20061108

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20061225

A313 Final decision of rejection without a dissenting response from the applicant

Free format text: JAPANESE INTERMEDIATE CODE: A313

Effective date: 20070323

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070424