JP2006505056A - 制御フローグラフ表現を制御データフローグラフ表現に変換するためのシステムおよび方法 - Google Patents
制御フローグラフ表現を制御データフローグラフ表現に変換するためのシステムおよび方法 Download PDFInfo
- Publication number
- JP2006505056A JP2006505056A JP2004549990A JP2004549990A JP2006505056A JP 2006505056 A JP2006505056 A JP 2006505056A JP 2004549990 A JP2004549990 A JP 2004549990A JP 2004549990 A JP2004549990 A JP 2004549990A JP 2006505056 A JP2006505056 A JP 2006505056A
- Authority
- JP
- Japan
- Prior art keywords
- code
- node
- flow graph
- cfg
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Description
この特許文献の開示の一部には、著作権保護の対象となる資料が含まれる。著作権所有者は、米国特許商標局の特許ファイルまたは特許記録に現われるように、特許開示の特許文献の何人による複製にも異議を唱えないが、それ以外ではいかなるすべての著作権を保有する。以下の表示は、適用可能であれは図面を含む以下に記載のソフトウェアおよびデータに適用される。(C)2002 エス・アール・シィ・コンピューターズ・インコーポレイテッド(SRC Computers, Inc.)
発明の背景
発明の分野
本発明は一般的に、高級言語プログラムをハイブリッドの再構成可能なハードウェア命令プロセッサの計算環境で動作するように適合させることに関する。より特定的に、本発明は、高級言語プログラムをハイブリッドの再構成可能なハードウェア命令プロセッサコンピュータで実行することのできる統一された実行可能要素に変換することに関する。
命令プロセッサが処理能力を急速に向上させ続ける中で、命令プロセッサはかつてスーパーコンピュータのみによって行なわれていたコンピュータを多用する計算を行なうために用いられることが多くなった。しかしながら、たとえば、現代の命令プロセッサで行なうにはまだ実用的でない、数値計算のイメージ処理および流体力学的なシミュレーションを含むコンピュータを多用するタスクが存在する。
本発明の一実施例は、高級言語ソフトコードを統一された実行可能要素に変換する方法を含み、上記方法は、高級言語ソースコードの再構成可能なハードウェア部分からオブジェクトファイルを生成するステップと、オブジェクトファイルを統一された実行可能な要素に統合するステップとを含む。
取可能プログラムコードを有するコンピュータ利用可能媒体を含み、上記コンピュータ読取可能プログラムコードは、コンピュータに高級言語ソースコードを制御フローグラフ表現に変換させるためのコンピュータ読取可能プログラムコード、コンピュータに制御フローグラフ表現を制御データフローグラフ表現に変換させるためのコンピュータ読取可能プログラムコード、コンピュータに制御データフローグラフを命令プロセッサ部分および再構成可能なハードウェア部分に区分化させるためのコンピュータ読取可能プログラムコード、コンピュータに制御データフローグラフの再構成可能なハードウェア部分をハードウェア定義言語部分に、および命令プロセッサ部分を命令プロセッサオブジェクトファイルに変換させるためのコンピュータ読取可能プログラムコード、コンピュータにハードウェア定義言語部分を再構成可能なハードウェアビットストリームに変換させるためのコンピュータ読取可能プログラムコード、コンピュータに再構成可能なビットストリームを命令プロセッサが読むことのできるビットストリームオブジェクトファイルに変換させるためのコンピュータ読取可能プログラムコード、およびコンピュータにビットストリームオブジェクトファイルを命令プロセッサオブジェクトファイルと統合して、統一された実行可能要素を形成させるためのコンピュータ読取可能プログラムコードとを含む。
システムの概観
ここで図1を参照すると、高級プログラミング言語で書かれたプログラムを、統一された実行可能要素に変換するためのハイブリッドの再構成可能なハードウェア命令プロセッサシステム100の実施例が示されている。一実施例において、システム100の再構成可能なハードウェア部分は、多重適応プロセッサ(MAP)を含み得、これはフィールド・プログラマブル・ゲートアレイ(FPGA)の再構成可能な回路をロジックと統合して、FPGAを制御し、システム100の命令プロセッサ部分と通信し得る。別の実施例において、システム100における再構成可能なハードウェアおよび命令プロセッサ間の電子通信は、スイッチ/ネットワークアダプタポートおよび/または多重MAPを命令プロセッサにリンクするためのスイッチの使用を含み得る。
level language))ファイルから統一された実行可能要素へのコンバータ104、サポートハードウェアロジックモジュール118、ユーザハードウェアロジックモジュール120およびランタイムライブラリ122を含むMAPプログラミング環境を含む。システム100の実施例において、HLLソースコードファイル102はコンバータ104に入力される。HLLソースコードファイル102は、たとえば特に、C,C++,Fortran,COBOL,BASIC,PASCALおよびJava(登録商標)等の従来の高級言語で書かれるかもしれない。
raph))表現に変換するHLLコンバータ106を含み得る。一実施例において、HLLコンバータ106は、高級言語ソースコードを読出し、ソースコードをパーズし、コードを内部表現およびシンボルテーブルに変換することによって、従来のコンパイルを開始するための論理命令を含むソフトウェアモジュールを含む。HLLコンバータ106は、ソースコードの構文および意味検査を行ない、かつソースコードにおけるエラーに応じて適切な診断メッセージを生成するための論理命令を含み得る。
、かつCFG表現および統一された実行可能要素を生成し得る。バイナリトランスレータは、実行可能なファイルを受入れ、これをCFG表現に変換し、かつこれをコンバータ104への二次入力に与えて、ソースコードの必要性を回避し得る。
ここで図2を参照すると、本発明の実施例に従って高級言語(HLL)を、統一された実行可能要素に変換する方法200が示されている。方法200は、ステップ202でHLLプログラムを制御フローグラフ(CFG)に変換することによって開始され得る。一実施例において、HLLプログラムの、指定されたCFGフォーマットへの変換202は、従来のHLLコンパイラによって行なわれ得る。HLLプログラムのCFGへの変換202では、HLLプログラムをCFG表現にパーズし、かつ命令プロセッサで実行可能な命令コードを生成するためにコンパイラが用いられるかもしれない。命令コードは次にオブジェクトファイルに書込まれ、このオブジェクトファイルはアドレスを解くリンカ・ローダとともにリンクされ得る。
構成し得る。
ロキシを生成し、一方でこの同じ部分がステップ414でハードウェア定義言語(HDL)コード(たとえばVerilog)に変換され、これは次にステップ418でハードウェアロジックバイナリに変換され得る。ハードウェアロジックバイナリは、ステップ424ですべての他のバイナリファイルとリンクされて、ハードウェアロジック実行可能要素426の一部になり得る。
例示の実施例において、ハードウェアロジックのために分離されかつ目標にされ得る、高級言語で書かれたソースコードの領域を識別するための方法が提供され、一方でコードの他の部分は、従来のプロセッサで実行するためにコンパイルされ得る。例示の方法では、コードのうちどの領域がハードウェアロジックで実行されるべきかを示す特別なブラケット構文が用いられ、ブラケット領域内に含まれる変数のスコーピング(scoping)情報が提供される。この情報を用いて、ユーザがさらに介入することなく、ハードウェアロジックで実行するように識別された領域の実行を容易にする通信およびデータ移動ルーチンを構築し得る。
によって生成される新しいサブプログラムに構築され得る。グローバルデータは同様の態様で処理されてデータの完全性が保護され得る。
コンパイルシステムのうち最初にコールされた構成要素が、いかなる命令プロセッサシステムでのコンパイルと同様の従来のコンパイル段階を開始する。この構成要素は、入力としていかなるプログラミング言語コードも受信し、ソースファイルから次にパーズすることのできるトークンを抽出する。パーズ段階が行なわれている間、意味解析も行なわれて、この段階の後でコードおよびシンボルテーブルの内部表現が生成されるようにしてもよい。意味上の誤り検査が行なわれて、適切な診断メッセージが出される。
有するコンパイルの混合モデルを用いて、共通の高級中間表現を生成する。この第1のレベルの表現は次に、制御フロー分析を含むさまざまな基本的な最適化に入力されるため、結果として生じる第2のレベルの中間表現は制御フロー表現と呼ぶことができる。制御フロー表現は、HLLコンバータが出力として生成する制御フロー情報における主要な構成要素となる。以下の文章では、このファイルおよびこの段階でのコンパイルの結果として生成することのできる追加のファイルの内容についての一層の詳細が示される。
た個々の命令を含む。これらの命令は、基本ブロックに分類され、その互いの関係は前のセクションで既に確立されている。これらはここで、コンパイルのプロセスで生成された順序で生成される。
なる。
コンパイルシステムの別の構成要素は、オペレータ、組込関数コール、および既存の(規定されたシステムの)ハードウェアロジックモジュールへのMAPプロシージャのソースにおけるプロシージャコールのマッピングを示すデータベースである。このデータベースはシステムinfoファイルと呼ばれる。
データフローグラフに加えて、CFG−DFGからHDLへのコンバータへの第2の入力ファイルがある。これは、CFG−DFGからHDLへのコンバータバイナリファイルであり、このファイルは、インターフェイスおよびハードウェアロジックモジュール情報ファイルに含まれるハードウェアロジックモジュールに関する情報を含む。本発明の実施例において、小さな実行可能要素を用いてもよく、この要素は、ASCIIハードウェアロジックモジュール情報ファイルをCFG−DFGからHDLへのコンバータの内部テーブルに翻訳し、CFG−DFGからHDLへのコンバータをコールする前にコンパイルの際に実行される。
valである。この翻訳プログラムは、ハードウェアロジックモジュール情報ファイルにおけるsigvalによって指定されたピンまたはワイヤ名の出現を、結果として生じるCFG−DFGからHDLへのコンバータテーブルにおけるストリングnewsigvalと置き換える。このオプションによって、CFG−DFGからHDLへのコンバータによって接続されるべきハードウェアロジックモジュールの入力および出力信号の改名が可能になる。CFG−DFGからHDLへのコンバータは、名前が“unconnected_”で始まるワイヤに接続されるべきいかなる接続も無視し得る。このオプションによって“unconnected_”ワイヤを改名することによって、これらはCFG−DFGからHDLへのコンバータによって処理され得る。−dオプションに関して、−rはVerilogのようなHDLを生成するときに有用であり、Verilogは、テストベンチまたはシミュレーション環境において用いられ、結果として生じるハードウェアロジックのために生成されたVerilogには実際に存在しない信号を有し得る。多重の−dおよび−rのオプションを指定してもよい。
が接続されるべき外部信号の名前を含む。−rコマンドラインオプションで指定された改名された信号のテーブルを検索して、信号が再びマップされたかどうかを見ることができる。再びマップされていれば、再びマップされた信号名が用いられる。そうでなければ、ハードウェアロジックモジュール情報ファイルで指定された名前が用いられる。外部信号名が指定さない場合、エラーが出される。PIN_NAMESテーブルエントリが、次に出力信号のために生成され得る。PIN_NAMESテーブルエントリは、現在のsubrefエントリのためのEQUIV_IN/EQUIV_OUTテーブル索引、出力信号のビット幅、この信号のために生成されるHELDテーブルエントリの索引、ハードウェアロジックモジュールの内部の信号名、および信号が出力でありかつ信号のためのHELDテーブルエントリがあることを示す2つのフラグを含む。これがsubref構造のために処理される最初の信号である場合、PIN_NAMESテーブルエントリの索引は、subrefのためのEQUIV_OUTテーブルエントリに挿入されるために保存される。
CFG表現をハイブリッドCDFG−DFG表現に変換するための実施例がここで説明される。もとのCFG表現は、ノードおよび有向の辺(directed edges)を含んでもよく、各ノードはコードの基本ブロックであるかもしれず、各辺は1つのブロックの終わりから別のブロックの始めへの制御の移動を示し得る。基本ブロックにおけるコードは、エン
トランスの単一の点、および単一の出口を有し得、すなわちこれは、始めおよび終わりのそれぞれ以外へ、またはそれ以外から分岐することのできない直線のシーケンスの文を示し得る。基本ブロックにおける文は連続しているかもしれない。
ることの安全性を推論することが可能であるかもしれない。たとえば、
で見られ、配置される項目は非常に小さな論理ブロックであるかもしれない。コンパイラが利用できるハードウェアロジックモジュールが指定された形状であると既に決定されている場合、コンパイラは、さらに高度な、したがってさらに単純な細分性のレベルで配置を行い、プロセスを潜在的にかなり高速化することができる。
)による。第2のセクションはコードブロックをリストにしたものである。この例においては、コードブロックはマージされていない。各々のブロックは一義的なID数および1組のデータフローノードを有する。各ブロックはいずれも、その始まりのノードおよび終わりのノードとしてSRC^INITIATE(開始)ノードおよびSRC^OUTPUT(出力)ノードを有する。各々のノードにつき以下の情報がある。すなわち、その機能、その入力および出力カウント、各々の入力のビット幅、入力が定数として指定される入力についての定数値、各々の出力のビット幅、各々の出力の目標リスト(すなわち他のノード入力ポートのうちどれがこの出力によって供給がなされるのか)、である。入力および出力ポートはまた括弧の中に一義的な擬似レジスタIDを有し得る。
R2から受取ると、エミュレートルーチンはユーザサブルーチンのパラメータについての初期値をロードし得る。次にdfg_simulateがコールされて、実行されるべきDFGファイルの名前が中へ通され得る。データフローシミュレータはトークン駆動シミュレーションを行ないEXITコードブロックの完了時に戻り得る。それからパラメータの終値が返されてこれにFR4ハンドシェイクが続き得る。次にルーチンはループの最上部へ戻って、実行すべき次の信号を待つことができる。
変数すべてのリストが作成され得る。DFGのヘッドとしてINITIATEノードが作成され、スカラの初期値を持ち込むためのLD_SCALARノードの層が作成され得る。データ構造の一時アレイが各々の変数のソースについての参照として作成され得る。この構造の一例を以下に示す。
/記憶とを区別し得る。DFG発生器はロードまたは記憶ノード(たとえばLDKRまたはSTKR)を見ると、そのアドレス入力を見ることでロード/記憶の種類を決定することができる。図14に示す形での何かを見ると、ACONノードを用いて変数の名前を見つけることができ、内部「変数」データ構造を調べてこれがスカラ変数であるかどうかを判断することができる。
調べられることを引き起こし得る。2つの入力は他のノードへの入力と同じ仕方で扱われ得る。すなわち、変数のソースが示され、LDKRノードがなくされ、そして入力がソースへ直接配線されるということがあり得る。出力については、入来する辺がなくされ、ACONノードを調べてどの変数が出力値を受取っているかが判断され、そしてこの出力をその変数の新たなソースとして示すということがあり得る。図20の右側においてDFGへの変換後の完全なコードブロックが示される。
されるが、それは、‘c’は条件文についてのいずれかの分岐において割当てられていないからである。このSELECTORはなくしてもよい。
次に図29を参照して、本発明の区分化部要素の一実施例を示す。一実施例において、区分化部要素は、アルゴリズムの一部が実行されることになるところを決定でき、したがってコンパイルプロセスの目標を決定できる。区分化部は、制御データフローグラフに対して、コンパイルされているアルゴリズムを定義するHLLの内部表現を演算し得る。区分化部により取られる制御データフローグラフは、CFGからCFG−DFGへのコンバータにより生成されるCFG−DFGであり得る。CFG−DFGは、コンパイルされているファイルの中に見つかり得る1組の関数のグラフである。決定プロセスの結果、命令プロセッサのための命令を目標としたコードのうちの部分と、多数の再構成可能プロセッサの中に入っている多数の再構成可能チップ内のロジックのうちの部分がもたらされる。
化構文または指示子に基づき区分ブロックに対するサブグラフの割当として定義され得る。
CFGからCFG−DFGへのコンバータの出力の1つは、コンパイルされているプロシージャについての変換されたデータフローグラフを表わすASCIIテキストファイルである。コンパイルにおける次のステップは、コンパイルにおける、CFG−DFGからHDLへのコンバータのVerilogコード生成段階により利用可能なフォーマットへと上記ファイル(すなわち.dfgファイル)を翻訳するステップである。MAPコンパイラは、CFG−DFGからHDLへのコンバータ「タプル」フォーマットでコンパイルされているプロシージャを表わす、CFG−DFGからHDLへのコンバータの内部フォーマット化テーブルへASCII.dfgファイルを翻訳する論理命令を含むソフトウェアモジュールを実現する。翻訳されたテーブルは、CFG−DFGからHDLへのコンバータへの入力の1つであるバイナリフォーマット化ファイル(.grfファイル)に書込まれ得る。
表現に用いられる内部データ構造は、CFGからCFG−DFGへのコンバータにより用いられるのと同じ構造である。上記2つの一次構造は、プロシージャ変数を表現する構造のアレイと、コンパイルされているプロシージャの実行可能部分を含む基本コードブロックを表現する構造のアレイとである。
いての最初および最後のCFG−DFGからHDLへのコンバータのRAW_NODESテーブルエントリに対する索引を含む。ブロックが終了ブロックであり、すなわちコンパイルされているプロシージャからの戻りを含むブロックであることを意味している場合、BLOCKSテーブルエントリにはこれ以上の情報は入れられない。ブロックがドロップスルーブロックであり、条件分岐で終わらないことを意味している場合、後継のブロックのためのBLOCKSテーブルエントリに対する索引が現在のブロックのBLOCKSテーブルエントリに入れられる。他ではブロックは条件分岐で終わることになる。この場合、2つのあり得る後継のブロック(分岐の真のブロックおよび分岐の偽ブロック)のBLOCKSテーブル索引が現在のブロックBLOCKSテーブルエントリに入れられる。
再構成可能FPGAチップについてのコンパイルシステムの一構成要素について説明する。このコンパイルシステムは、CやFortranのようなより高級な言語を、より大きな実行フレームワーク内で動作するFPGAのための構成ビットストリームにコンパイルする能力を有する。
。
はオペコード入力ファイルに担われる情報から生成される。一般的に、ファイル名は“.v”をサフィックスとする高級言語ファイルの「基底名」である。たとえば、“toto.c”と名付けられた高級言語ファイルは、結果として“toto.v”と名付けられたVerilog言語ファイルをもたらす。
れたハードウェアモジュールのMODULE索引を与える。このモジュール情報への索引はNODEテーブルに置かれる。
コンパイルシステムの1構成要素であって、ユーザの実行可能要素へと最終的に統合されることになるコンパイル可能なCコードへザイリンクス(Xilinx)ツールから作成されるビットストリームファイルを含める作業を行なう。この構成要素は、プログラミングデータのみを含むバイナリファイルの中にある1または2のFPGAビットストリームファイルを入力として取る。このコンパイル段階の結果は、一方が各々のFPGAビットストリームについてある2つの構造を含むCコードである。各々の構造は、下記のように、アレイの中に入ったFPGAビットストリームについてのパックされた表現;ビットストリームについての内部場所を指すポインタ;このビットストリームが表現するFPGAの数、ビットストリームアレイの長さ;ビットストリームアレイの始まりのアドレス;および、エミュレートに用いられるMAPルーチンのCバージョンを指すポインタ、を含む。
異なりしたがって一様でないプラットフォームに対して実行されるであろうオブジェクトファイルを作成した結果として、コンパイルプロセスにおける次のステップは、これらさまざまな構成要素を、「統一された実行可能要素」と称されるものを構築するようにまとめなければならない。次に、統一された実行可能要素は、命令プロセッサで実行されるマシンコードと、ハードウェアロジックプロセッサで実行されるマシンコードとの両方を含む。
統一されたバイナリが実行されるランタイム環境は、命令プロセッサバイナリが実行されるランタイム環境を超えて拡張され得る。MAPライブラリは、データフローグラフのエミュレートおよびシミュレーションのためのサポートルーチンを含み得る。ユーザの観点からは、ランタイム環境にはルーチンについて3つのカテゴリがある。すなわちメモリ管理、MAPリソース管理、およびMAP実行である。
環境との間で転送されるメモリのブロックはキャッシュの境界で開始することが必要な場合がある。このようなハードウェア制限が存在する場合でのキャッシュ整列を支援するための2つの関数が設けられる。
れれば、最も最近に割付けられたMAP IDは4および5である。
エミュレートは極めて有用なデバッグツールであるとともに、データフローグラフレベルでの性能プロファイリングを可能にするツールである。エミュレーションの能力は、MAPコンパイルシステムにより構築される実行可能要素のランタイム環境の中に構築される。
わりとなる。すなわち、通信リンク、オンボードメモリ、データレジスタ、およびフラグレジスタであり、これらリソースのソフトウェアエミュレートバージョンをもたらす。図31および図32はMAPエミュレータの構造を示す。
ドも、その入力に利用可能な値がある限り任意の時点で実行され得る。データ値は「トークン」と呼ばれ、トークンはノードの入力ポートで待ち行列を作ることができる。別の実施例においては、「クロック正確性(clock accurate)」シミュレーションが、システムクロックと機能ユニットの実行待ち時間とを考慮する。この場合、「同時」という語は意味を有する。
ータ関数へのコールを行なうことによりこれらノードを実行し得る。
「初期化された」フィールドが「偽」に設定される。状態を持つノードについてのノード実行ルーチンはこのフィールドを調べて、偽であれば初期化を実行することができる。これは典型的に、ノードタイプの状態のために適当なデータ構造を割付けて、これを指し示すように「状態」ポインタを設定することによって行なわれる。また、この構造のフィールドが適当な開始状態に設定される。それから、「初期化された」フィールドが「真」に設定され、こうしてノードにおける後続の発火が再初期化を試みないようにする。
Claims (20)
- 制御データフローグラフを形成する方法であって、
制御フローグラフを2つ以上の基本ブロックに分離するステップと、
前記2つ以上の基本ブロックをコードブロックに変換するステップとを含み、当該コードブロックは当該制御データフローグラフを形成する、方法。 - ロード(lode)ノードを前記基本ブロックの少なくとも1つにおいて形成するステップを含む、請求項1に記載の方法。
- 記憶ノードを前記コードブロックの少なくとも1つにおいて形成するステップを含む、請求項1に記載の方法。
- 遅延ノードを前記コードブロックの少なくとも1つに挿入するステップを含む、請求項1に記載の方法。
- 外部ハードウェアロジックモジュールを前記制御フローグラフから分離するステップを含む、請求項1に記載の方法。
- 前記コードブロックは、順次に実行される第1のコードブロックおよび第2のコードブロックを含む、請求項1に記載の方法。
- 前記第1のおよび第2のコードブロックを、並列して実行される並行コードブロックに変換するステップを含む、請求項6に記載の方法。
- 前記並行コードブロックからの完了信号を、LATCH_AND機能とマージするステップを含む、請求項7に記載の方法。
- 当該制御フローグラフは、少なくとも1つのオペコード(opcode)を含む、請求項1に記載の方法。
- 当該制御データフローグラフは、単一ビットの辺を有する上位レベルのノードを含む、請求項1に記載の方法。
- 不必要なセレクタを除去し、ブール演算式を簡略化し、またはパイプライン化されたループをヒューズすることによって、前記コードブロックを最適化するステップを含む、請求項1に記載の方法。
- 制御データフローグラフを形成する方法であって、
制御フローグラフの基本ブロックにおけるハードウェアロジックモジュールコールを個々のコードブロックに分離するステップと、
当該個々のコードブロックの2つ以上を、結合されたコードブロックへと結合するステップと、
当該結合されたコードブロックを当該制御データフローグラフの少なくとも一部に変換するステップとを含む、方法。 - ロードノードを、当該結合されたコードブロックにおいて形成するステップを含む、請求項12に記載の方法。
- 記憶ノードを当該制御データフローグラフにおいて形成するステップを含む、請求項1
2に記載の方法。 - 前記結合されたコードブロックはループ機能を含む、請求項12に記載の方法。
- ヘッドループブロックで始まる当該ループ機能と関連したコードブロックを位相的に記憶するステップを含む、請求項15に記載の方法。
- 循環ノードを、当該ループ機能と関連した当該コードブロックにおいて形成するステップを含む、請求項16に記載の方法。
- 遅延ノードを制御データフローグラフブロックにおいて形成するステップを含む、請求項12に記載の方法。
- 不必要なセレクタを除去し、ブール演算式を簡略化し、またはパイプライン化されたループをヒューズすることによって、前記コードブロックを最適化するステップを含む、請求項12に記載の方法。
- コンピュータプログラム製品であって、
制御データフローグラフの形成を引起すためのコンピュータ読取可能プログラムコードが中に実現されたコンピュータ利用可能媒体を含み、当該コンピュータ読取可能プログラムコードは、
コンピュータに、制御フローグラフの基本ブロックにおけるハードウェアロジックモジュールコールを個々のコードブロックに分離させるためのコンピュータ読取可能プログラムコードと、
当該コンピュータに、当該個々のコードブロックの2つ以上を、結合されたコードブロックに結合させるためのコンピュータ読取可能プログラムコードと、
当該コンピュータに、当該結合されたコードブロックを当該制御データフローグラフの少なくとも一部に変換させるためのコンピュータ読取可能プログラムコードとを含む、コンピュータプログラム製品。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/285,399 US7299458B2 (en) | 2002-10-31 | 2002-10-31 | System and method for converting control flow graph representations to control-dataflow graph representations |
PCT/US2003/031322 WO2004042568A1 (en) | 2002-10-31 | 2003-10-01 | System and method for conveting control flow graph representations to control-dataflow graph representations |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006505056A true JP2006505056A (ja) | 2006-02-09 |
Family
ID=32175183
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004549990A Pending JP2006505056A (ja) | 2002-10-31 | 2003-10-01 | 制御フローグラフ表現を制御データフローグラフ表現に変換するためのシステムおよび方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7299458B2 (ja) |
EP (1) | EP1556759A4 (ja) |
JP (1) | JP2006505056A (ja) |
AU (1) | AU2003279772A1 (ja) |
CA (1) | CA2498871A1 (ja) |
WO (1) | WO2004042568A1 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008077625A (ja) * | 2006-09-18 | 2008-04-03 | Samsung Electronics Co Ltd | ユーザ定義の拡張演算を処理する演算システムおよび方法 |
JP2010231635A (ja) * | 2009-03-27 | 2010-10-14 | Fujitsu Ltd | コンテキスト作成プログラム、コンパイラおよびコンテキスト作成方法 |
JP2012133756A (ja) * | 2010-11-10 | 2012-07-12 | Src Computers Inc | ヘテロジニアス黙示的及び明示的プロセッシング要素の計算の一体化のためのシステム及び方法 |
JP2012164316A (ja) * | 2011-02-08 | 2012-08-30 | Maxeler Technologies Ltd | ハードウェアストリームプロセッサデザインを生成するための方法、装置およびソフトウェアコード |
Families Citing this family (138)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7266725B2 (en) | 2001-09-03 | 2007-09-04 | Pact Xpp Technologies Ag | Method for debugging reconfigurable architectures |
US6542998B1 (en) | 1997-02-08 | 2003-04-01 | Pact Gmbh | Method of self-synchronization of configurable elements of a programmable module |
US8686549B2 (en) * | 2001-09-03 | 2014-04-01 | Martin Vorbach | Reconfigurable elements |
DE19861088A1 (de) | 1997-12-22 | 2000-02-10 | Pact Inf Tech Gmbh | Verfahren zur Reparatur von integrierten Schaltkreisen |
CN1378665A (zh) * | 1999-06-10 | 2002-11-06 | Pact信息技术有限公司 | 编程概念 |
JP2004506261A (ja) | 2000-06-13 | 2004-02-26 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | パイプラインctプロトコルおよびct通信 |
US8058899B2 (en) | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
US7444531B2 (en) | 2001-03-05 | 2008-10-28 | Pact Xpp Technologies Ag | Methods and devices for treating and processing data |
US7996827B2 (en) | 2001-08-16 | 2011-08-09 | Martin Vorbach | Method for the translation of programs for reconfigurable architectures |
US8686475B2 (en) * | 2001-09-19 | 2014-04-01 | Pact Xpp Technologies Ag | Reconfigurable elements |
US8281108B2 (en) | 2002-01-19 | 2012-10-02 | Martin Vorbach | Reconfigurable general purpose processor having time restricted configurations |
US8914590B2 (en) | 2002-08-07 | 2014-12-16 | Pact Xpp Technologies Ag | Data processing method and device |
US20110161977A1 (en) * | 2002-03-21 | 2011-06-30 | Martin Vorbach | Method and device for data processing |
WO2004088502A2 (de) * | 2003-04-04 | 2004-10-14 | Pact Xpp Technologies Ag | Verfahren und vorrichtung für die datenverarbeitung |
US7657861B2 (en) | 2002-08-07 | 2010-02-02 | Pact Xpp Technologies Ag | Method and device for processing data |
EP1537486A1 (de) | 2002-09-06 | 2005-06-08 | PACT XPP Technologies AG | Rekonfigurierbare sequenzerstruktur |
US6983456B2 (en) * | 2002-10-31 | 2006-01-03 | Src Computers, Inc. | Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms |
JP3956131B2 (ja) * | 2002-12-26 | 2007-08-08 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラム変換装置、プログラム変換方法及びプログラム |
US7266489B2 (en) * | 2003-04-28 | 2007-09-04 | International Business Machines Corporation | Method, system and program product for determining a configuration of a digital design by reference to an invertible configuration database |
US7162404B2 (en) * | 2003-04-28 | 2007-01-09 | International Business Machines Corporation | Method, system and program product for configuring a simulation model of a digital design |
US7168061B2 (en) * | 2003-04-28 | 2007-01-23 | International Business Machines Of Corporation | Method, system and program product for implementing a read-only dial in a configuration database of a digital design |
US7134098B2 (en) * | 2003-04-28 | 2006-11-07 | International Business Machines Corporation | Method, system and program product for specifying a configuration for multiple signal or dial instances in a digital system |
CA2539794A1 (en) * | 2003-09-22 | 2005-03-31 | Catena Corporation | Software generation method |
JP2005115498A (ja) * | 2003-10-06 | 2005-04-28 | Catena Corp | ソフトウェア開発前処理方法、ソフトウェア制御方法、ソフトウェア開発方法並びにソフトウェア開発装置 |
FR2864655B1 (fr) * | 2003-12-31 | 2006-03-24 | Trusted Logic | Procede de controle d'integrite de programmes par verification d'empreintes de traces d'execution |
US7353279B2 (en) * | 2004-01-08 | 2008-04-01 | Hughes Electronics Corporation | Proxy architecture for providing quality of service(QoS) reservations |
US8683426B2 (en) | 2005-06-28 | 2014-03-25 | The Mathworks, Inc. | Systems and methods for modeling execution behavior |
US8793602B2 (en) * | 2004-01-15 | 2014-07-29 | The Mathworks, Inc. | System and method for scheduling the execution of model components using model events |
US7353488B1 (en) * | 2004-05-27 | 2008-04-01 | Magma Design Automation, Inc. | Flow definition language for designing integrated circuit implementation flows |
US7971191B2 (en) * | 2004-06-10 | 2011-06-28 | Hewlett-Packard Development Company, L.P. | System and method for analyzing a process |
JP4275013B2 (ja) * | 2004-06-21 | 2009-06-10 | 三洋電機株式会社 | データフローグラフ処理装置、処理装置、リコンフィギュラブル回路。 |
US7278122B2 (en) * | 2004-06-24 | 2007-10-02 | Ftl Systems, Inc. | Hardware/software design tool and language specification mechanism enabling efficient technology retargeting and optimization |
US7464375B2 (en) * | 2004-06-24 | 2008-12-09 | International Business Machines Corporation | Method for flattening hierarchically structured flows |
AU2005277538C1 (en) | 2004-08-16 | 2010-02-04 | Qualcomm Incorporated | Methods and apparatus for managing group membership for group communications |
US7260800B1 (en) * | 2004-12-10 | 2007-08-21 | Synopsys, Inc. | Method and apparatus for initial state extraction |
US7900193B1 (en) * | 2005-05-25 | 2011-03-01 | Parasoft Corporation | System and method for detecting defects in a computer program using data and control flow analysis |
JP2007041796A (ja) * | 2005-08-02 | 2007-02-15 | Mitsubishi Electric Corp | コード生成装置 |
DE102005044728A1 (de) * | 2005-09-19 | 2007-03-29 | Silicon Software Gmbh | Programmierung und Layoutdesign von Hardware |
US9081609B2 (en) * | 2005-12-21 | 2015-07-14 | Xerox Corporation | Image processing system and method employing a threaded scheduler |
TW200725411A (en) * | 2005-12-30 | 2007-07-01 | Tatung Co Ltd | Method for automatically translating a high level programming language into an extended activity diagram |
US8291377B2 (en) * | 2006-01-25 | 2012-10-16 | Microsoft Corporation | External configuration of processing content for script |
US7506287B2 (en) * | 2006-09-16 | 2009-03-17 | International Business Machines Corporation | Method, system, and program product for pre-compile processing of hardware design language (HDL) source files |
US8843906B1 (en) * | 2006-10-16 | 2014-09-23 | The Mathworks, Inc. | Inferring data types from compiler call site |
EP2092424B1 (en) * | 2006-10-19 | 2015-12-30 | Checkmarx Ltd. | Locating security vulnerabilities in source code |
US7774189B2 (en) * | 2006-12-01 | 2010-08-10 | International Business Machines Corporation | System and method for simulating data flow using dataflow computing system |
US8656381B2 (en) * | 2006-12-07 | 2014-02-18 | International Business Machines Corporation | Presenting machine instructions in a machine-independent tree form suitable for post-link optimizations |
US7444603B1 (en) * | 2006-12-15 | 2008-10-28 | Xilinx, Inc. | Transformation of graphs representing an electronic design in a high modeling system |
FR2911971B1 (fr) * | 2007-01-26 | 2009-04-24 | Commissariat Energie Atomique | Procede et systeme de verification de proprietes d'un programme informatique. |
US7860863B2 (en) * | 2007-09-05 | 2010-12-28 | International Business Machines Corporation | Optimization model for processing hierarchical data in stream systems |
US7941460B2 (en) * | 2007-09-05 | 2011-05-10 | International Business Machines Corporation | Compilation model for processing hierarchical data in stream systems |
EP2220554A1 (de) * | 2007-11-17 | 2010-08-25 | Krass, Maren | Rekonfiguri erbare fliesskomma- und bit- ebenen datenverarbeitungseinheit |
US20110173596A1 (en) * | 2007-11-28 | 2011-07-14 | Martin Vorbach | Method for facilitating compilation of high-level code for varying architectures |
US20110119657A1 (en) * | 2007-12-07 | 2011-05-19 | Martin Vorbach | Using function calls as compiler directives |
WO2009102903A2 (en) * | 2008-02-12 | 2009-08-20 | Scrutiny, Inc. | Systems and methods for information flow analysis |
US8161380B2 (en) * | 2008-06-26 | 2012-04-17 | International Business Machines Corporation | Pipeline optimization based on polymorphic schema knowledge |
US8423980B1 (en) * | 2008-09-18 | 2013-04-16 | Google Inc. | Methods for handling inlined functions using sample profiles |
US8645923B1 (en) * | 2008-10-31 | 2014-02-04 | Symantec Corporation | Enforcing expected control flow in program execution |
US20120041743A1 (en) * | 2009-04-17 | 2012-02-16 | Rainer Heller | Output Signal Behavior for a PLC in an Automation System |
US8875111B2 (en) * | 2009-04-23 | 2014-10-28 | Microsoft Corporation | Intermediate language representation and modification |
US10698859B2 (en) | 2009-09-18 | 2020-06-30 | The Board Of Regents Of The University Of Texas System | Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture |
EP2519876A1 (en) | 2009-12-28 | 2012-11-07 | Hyperion Core, Inc. | Optimisation of loops and data flow sections |
US20110271253A1 (en) * | 2010-04-28 | 2011-11-03 | International Business Machines Corporation | Enhancing functional tests coverage using traceability and static analysis |
US8656369B2 (en) * | 2010-05-24 | 2014-02-18 | International Business Machines Corporation | Tracing flow of data in a distributed computing application |
WO2011159309A1 (en) | 2010-06-18 | 2011-12-22 | The Board Of Regents Of The University Of Texas System | Combined branch target and predicate prediction |
US9424010B2 (en) | 2010-08-30 | 2016-08-23 | International Business Machines Corporation | Extraction of functional semantics and isolated dataflow from imperative object oriented languages |
US9182962B2 (en) * | 2010-12-09 | 2015-11-10 | Todd Bradley KNEISEL | Method for translating a cobol source program into readable and maintainable program code in an object oriented second programming language |
JP5458065B2 (ja) | 2011-07-25 | 2014-04-02 | 伸一 石田 | モジュールの構造解析を支援する装置及びプログラム |
US9335977B2 (en) * | 2011-07-28 | 2016-05-10 | National Instruments Corporation | Optimization of a data flow program based on access pattern information |
US20130157639A1 (en) | 2011-12-16 | 2013-06-20 | SRC Computers, LLC | Mobile electronic devices utilizing reconfigurable processing techniques to enable higher speed applications with lowered power consumption |
US9256408B2 (en) * | 2012-01-20 | 2016-02-09 | Qualcomm Incorporated | Optimizing texture commands for graphics processing unit |
US9361079B2 (en) * | 2012-01-30 | 2016-06-07 | Nvidia Corporation | Method for compiling a parallel thread execution program for general execution |
US8983816B2 (en) * | 2012-06-18 | 2015-03-17 | International Business Machines Corporation | Efficient evaluation of network robustness with a graph |
US9137110B1 (en) * | 2012-08-16 | 2015-09-15 | Amazon Technologies, Inc. | Availability risk assessment, system modeling |
US9052956B2 (en) | 2012-08-30 | 2015-06-09 | Hewlett-Packard Development Company, L.P. | Selecting execution environments |
US8645885B1 (en) * | 2013-01-04 | 2014-02-04 | Altera Corporation | Specification of multithreading in programmable device configuration |
US8896344B1 (en) | 2013-01-04 | 2014-11-25 | Altera Corporation | Heterogeneous programmable device and configuration software adapted therefor |
US8713496B1 (en) | 2013-01-04 | 2014-04-29 | Altera Corporation | Specification of latency in programmable device configuration |
US8677298B1 (en) | 2013-01-04 | 2014-03-18 | Altera Corporation | Programmable device configuration methods adapted to account for retiming |
CN104049959A (zh) * | 2013-03-15 | 2014-09-17 | 苏州精易会信息技术有限公司 | 一种将流程图转换为可执行语言的方法 |
US9753960B1 (en) * | 2013-03-20 | 2017-09-05 | Amdocs Software Systems Limited | System, method, and computer program for dynamically generating a visual representation of a subset of a graph for display, based on search criteria |
US10102039B2 (en) * | 2013-05-17 | 2018-10-16 | Entit Software Llc | Converting a hybrid flow |
US10741226B2 (en) | 2013-05-28 | 2020-08-11 | Fg Src Llc | Multi-processor computer architecture incorporating distributed multi-ported common memory modules |
US9792252B2 (en) | 2013-05-31 | 2017-10-17 | Microsoft Technology Licensing, Llc | Incorporating a spatial array into one or more programmable processor cores |
US8806403B1 (en) * | 2013-06-21 | 2014-08-12 | Altera Corporation | Efficient configuration of an integrated circuit device using high-level language |
US9104432B2 (en) * | 2013-06-24 | 2015-08-11 | International Business Machines Corporation | Extracting stream graph structure in a computer language by pre-executing a deterministic subset |
EP3014470A4 (en) * | 2013-06-26 | 2017-02-22 | Hewlett-Packard Enterprise Development LP | Modifying an analytic flow |
US8863059B1 (en) | 2013-06-28 | 2014-10-14 | Altera Corporation | Integrated circuit device configuration methods adapted to account for retiming |
CN103744356B (zh) * | 2014-01-17 | 2016-08-17 | 重庆大学 | 一种基于dsp/fpga动态可配置的机床智能控制器及控制方法 |
US9530483B2 (en) | 2014-05-27 | 2016-12-27 | Src Labs, Llc | System and method for retaining dram data when reprogramming reconfigurable devices with DRAM memory controllers incorporating a data maintenance block colocated with a memory module or subsystem |
US9153311B1 (en) | 2014-05-27 | 2015-10-06 | SRC Computers, LLC | System and method for retaining DRAM data when reprogramming reconfigurable devices with DRAM memory controllers |
US9384311B1 (en) | 2014-07-25 | 2016-07-05 | Altera Corporation | Programmable device configuration methods incorporating retiming |
US9411613B1 (en) | 2015-04-22 | 2016-08-09 | Ryft Systems, Inc. | Systems and methods for managing execution of specialized processors |
US9542244B2 (en) | 2015-04-22 | 2017-01-10 | Ryft Systems, Inc. | Systems and methods for performing primitive tasks using specialized processors |
US9411528B1 (en) | 2015-04-22 | 2016-08-09 | Ryft Systems, Inc. | Storage management systems and methods |
US9720693B2 (en) | 2015-06-26 | 2017-08-01 | Microsoft Technology Licensing, Llc | Bulk allocation of instruction blocks to a processor instruction window |
US9952867B2 (en) | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
US11755484B2 (en) | 2015-06-26 | 2023-09-12 | Microsoft Technology Licensing, Llc | Instruction block allocation |
US9940136B2 (en) | 2015-06-26 | 2018-04-10 | Microsoft Technology Licensing, Llc | Reuse of decoded instructions |
US10175988B2 (en) | 2015-06-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Explicit instruction scheduler state information for a processor |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US9946548B2 (en) | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US10169044B2 (en) | 2015-06-26 | 2019-01-01 | Microsoft Technology Licensing, Llc | Processing an encoding format field to interpret header information regarding a group of instructions |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US10409599B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Decoding information about a group of instructions including a size of the group of instructions |
US11977891B2 (en) | 2015-09-19 | 2024-05-07 | Microsoft Technology Licensing, Llc | Implicit program order |
US11126433B2 (en) | 2015-09-19 | 2021-09-21 | Microsoft Technology Licensing, Llc | Block-based processor core composition register |
US10031756B2 (en) | 2015-09-19 | 2018-07-24 | Microsoft Technology Licensing, Llc | Multi-nullification |
US11681531B2 (en) | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
US10776115B2 (en) | 2015-09-19 | 2020-09-15 | Microsoft Technology Licensing, Llc | Debug support for block-based processor |
US10180840B2 (en) | 2015-09-19 | 2019-01-15 | Microsoft Technology Licensing, Llc | Dynamic generation of null instructions |
US10198263B2 (en) | 2015-09-19 | 2019-02-05 | Microsoft Technology Licensing, Llc | Write nullification |
US10768936B2 (en) | 2015-09-19 | 2020-09-08 | Microsoft Technology Licensing, Llc | Block-based processor including topology and control registers to indicate resource sharing and size of logical processor |
US10061584B2 (en) | 2015-09-19 | 2018-08-28 | Microsoft Technology Licensing, Llc | Store nullification in the target field |
US10452399B2 (en) | 2015-09-19 | 2019-10-22 | Microsoft Technology Licensing, Llc | Broadcast channel architectures for block-based processors |
US11016770B2 (en) | 2015-09-19 | 2021-05-25 | Microsoft Technology Licensing, Llc | Distinct system registers for logical processors |
US10871967B2 (en) | 2015-09-19 | 2020-12-22 | Microsoft Technology Licensing, Llc | Register read/write ordering |
US10678544B2 (en) | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
US10719321B2 (en) | 2015-09-19 | 2020-07-21 | Microsoft Technology Licensing, Llc | Prefetching instruction blocks |
US10095519B2 (en) | 2015-09-19 | 2018-10-09 | Microsoft Technology Licensing, Llc | Instruction block address register |
US10936316B2 (en) | 2015-09-19 | 2021-03-02 | Microsoft Technology Licensing, Llc | Dense read encoding for dataflow ISA |
US9940105B2 (en) | 2015-09-28 | 2018-04-10 | International Business Machines Corporation | Scalable code division and workflow chart |
US9690894B1 (en) * | 2015-11-02 | 2017-06-27 | Altera Corporation | Safety features for high level design |
US10769521B1 (en) | 2015-11-09 | 2020-09-08 | Google Llc | Processing loops in computational graphs |
US11687345B2 (en) | 2016-04-28 | 2023-06-27 | Microsoft Technology Licensing, Llc | Out-of-order block-based processors and instruction schedulers using ready state data indexed by instruction position identifiers |
US11531552B2 (en) | 2017-02-06 | 2022-12-20 | Microsoft Technology Licensing, Llc | Executing multiple programs simultaneously on a processor core |
US11087002B2 (en) | 2017-05-10 | 2021-08-10 | Checkmarx Ltd. | Using the same query language for static and dynamic application security testing tools |
US10346145B2 (en) * | 2017-06-23 | 2019-07-09 | Intel Corporation | Loop execution with predicate computing for dataflow machines |
US10963379B2 (en) | 2018-01-30 | 2021-03-30 | Microsoft Technology Licensing, Llc | Coupling wide memory interface to wide write back paths |
US10824429B2 (en) | 2018-09-19 | 2020-11-03 | Microsoft Technology Licensing, Llc | Commit logic and precise exceptions in explicit dataflow graph execution architectures |
US10846449B1 (en) * | 2018-12-11 | 2020-11-24 | Xilinx, Inc. | Conversion of block model-based circuit designs into circuit implementations |
US11194555B2 (en) * | 2020-04-13 | 2021-12-07 | International Business Machines Corporation | Optimization of execution of smart contracts |
US11836258B2 (en) | 2020-07-28 | 2023-12-05 | Checkmarx Ltd. | Detecting exploitable paths in application software that uses third-party libraries |
US11256488B1 (en) * | 2020-07-29 | 2022-02-22 | Bank Of America Corporation | Graph-based vectorization for software code optimizations |
DE102021201597A1 (de) * | 2021-02-19 | 2022-08-25 | Robert Bosch Gesellschaft mit beschränkter Haftung | Verwenden von hardware-beschleunigten befehlen |
US11474927B1 (en) | 2021-06-04 | 2022-10-18 | Ldra Technology, Inc. | Verification of control coupling and data coupling analysis in software code |
US11704226B2 (en) * | 2021-09-23 | 2023-07-18 | Intel Corporation | Methods, systems, articles of manufacture and apparatus to detect code defects |
CN115470737B (zh) * | 2022-08-04 | 2023-07-25 | 芯华章科技(北京)有限公司 | 生成数据流图的方法、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0916642A (ja) * | 1995-06-09 | 1997-01-17 | Sharp Corp | データ処理装置のアーキテクチャ評価方法 |
JP2002175344A (ja) * | 2000-10-17 | 2002-06-21 | Nec Corp | 電子回路と制御プログラムとのコバリデーション方法 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0360527B1 (en) | 1988-09-19 | 1995-01-04 | Fujitsu Limited | Parallel computer system using a SIMD method |
US5303377A (en) * | 1990-03-27 | 1994-04-12 | North American Philips Corporation | Method for compiling computer instructions for increasing instruction cache efficiency |
US5802290A (en) | 1992-07-29 | 1998-09-01 | Virtual Computer Corporation | Computer network of distributed virtual computers which are EAC reconfigurable in response to instruction to be executed |
US6052773A (en) | 1995-02-10 | 2000-04-18 | Massachusetts Institute Of Technology | DPGA-coupled microprocessors |
US5570040A (en) | 1995-03-22 | 1996-10-29 | Altera Corporation | Programmable logic array integrated circuit incorporating a first-in first-out memory |
US6077315A (en) * | 1995-04-17 | 2000-06-20 | Ricoh Company Ltd. | Compiling system and method for partially reconfigurable computing |
US5870588A (en) * | 1995-10-23 | 1999-02-09 | Interuniversitair Micro-Elektronica Centrum(Imec Vzw) | Design environment and a design method for hardware/software co-design |
US5903771A (en) | 1996-01-16 | 1999-05-11 | Alacron, Inc. | Scalable multi-processor architecture for SIMD and MIMD operations |
US5737766A (en) | 1996-02-14 | 1998-04-07 | Hewlett Packard Company | Programmable gate array configuration memory which allows sharing with user memory |
US5831864A (en) * | 1996-10-31 | 1998-11-03 | Trustees Of Princeton University | Design tools for high-level synthesis of a low-power data path |
US5892962A (en) | 1996-11-12 | 1999-04-06 | Lucent Technologies Inc. | FPGA-based processor |
US5978588A (en) * | 1997-06-30 | 1999-11-02 | Sun Microsystems, Inc. | Method and apparatus for profile-based code placement using a minimum cut set of the control flow graph |
US6226776B1 (en) | 1997-09-16 | 2001-05-01 | Synetry Corporation | System for converting hardware designs in high-level programming language to hardware implementations |
JP4751510B2 (ja) * | 1997-12-10 | 2011-08-17 | 株式会社日立製作所 | メモリアクセス最適化方法 |
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 |
US6202204B1 (en) * | 1998-03-11 | 2001-03-13 | Intel Corporation | Comprehensive redundant load elimination for architectures supporting control and data speculation |
US6745384B1 (en) * | 1998-05-29 | 2004-06-01 | Microsoft Corporation | Anticipatory optimization with composite folding |
US6192439B1 (en) | 1998-08-11 | 2001-02-20 | Hewlett-Packard Company | PCI-compliant interrupt steering architecture |
US6625797B1 (en) * | 2000-02-10 | 2003-09-23 | Xilinx, Inc. | Means and method for compiling high level software languages into algorithmically equivalent hardware representations |
JP2002083001A (ja) * | 2000-09-06 | 2002-03-22 | Hitachi Ltd | 論理回路の設計方法及びそれに使用するセルライブラリ |
CA2321018A1 (en) * | 2000-09-27 | 2002-03-27 | Ibm Canada Limited-Ibm Canada Limitee | Optimizing compilation by forward store movement |
JP3664473B2 (ja) * | 2000-10-04 | 2005-06-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラムの最適化方法及びこれを用いたコンパイラ |
JP3707727B2 (ja) * | 2000-10-30 | 2005-10-19 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラムの最適化方法及びこれを用いたコンパイラ |
US7039909B2 (en) * | 2001-09-29 | 2006-05-02 | Intel Corporation | Method and apparatus for performing compiler transformation of software code using fastforward regions and value specialization |
US20030140337A1 (en) * | 2001-12-21 | 2003-07-24 | Celoxica Ltd. | System, method, and article of manufacture for data transfer reporting for an application |
JP2003216943A (ja) * | 2002-01-22 | 2003-07-31 | Toshiba Corp | 画像処理装置、この装置に用いられるコンパイラおよび画像処理方法 |
US7140019B2 (en) * | 2002-06-28 | 2006-11-21 | Motorola, Inc. | Scheduler of program instructions for streaming vector processor having interconnected functional units |
-
2002
- 2002-10-31 US US10/285,399 patent/US7299458B2/en not_active Expired - Lifetime
-
2003
- 2003-10-01 WO PCT/US2003/031322 patent/WO2004042568A1/en active Application Filing
- 2003-10-01 CA CA002498871A patent/CA2498871A1/en not_active Abandoned
- 2003-10-01 JP JP2004549990A patent/JP2006505056A/ja active Pending
- 2003-10-01 AU AU2003279772A patent/AU2003279772A1/en not_active Abandoned
- 2003-10-01 EP EP03773109A patent/EP1556759A4/en not_active Withdrawn
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0916642A (ja) * | 1995-06-09 | 1997-01-17 | Sharp Corp | データ処理装置のアーキテクチャ評価方法 |
JP2002175344A (ja) * | 2000-10-17 | 2002-06-21 | Nec Corp | 電子回路と制御プログラムとのコバリデーション方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008077625A (ja) * | 2006-09-18 | 2008-04-03 | Samsung Electronics Co Ltd | ユーザ定義の拡張演算を処理する演算システムおよび方法 |
JP2010231635A (ja) * | 2009-03-27 | 2010-10-14 | Fujitsu Ltd | コンテキスト作成プログラム、コンパイラおよびコンテキスト作成方法 |
JP2012133756A (ja) * | 2010-11-10 | 2012-07-12 | Src Computers Inc | ヘテロジニアス黙示的及び明示的プロセッシング要素の計算の一体化のためのシステム及び方法 |
JP2012164316A (ja) * | 2011-02-08 | 2012-08-30 | Maxeler Technologies Ltd | ハードウェアストリームプロセッサデザインを生成するための方法、装置およびソフトウェアコード |
Also Published As
Publication number | Publication date |
---|---|
CA2498871A1 (en) | 2004-05-21 |
WO2004042568A1 (en) | 2004-05-21 |
EP1556759A4 (en) | 2008-04-09 |
AU2003279772A1 (en) | 2004-06-07 |
US20040088689A1 (en) | 2004-05-06 |
EP1556759A1 (en) | 2005-07-27 |
US7299458B2 (en) | 2007-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4482454B2 (ja) | 高級プログラミング言語におけるプログラムをハイブリッド計算プラットフォームの統一された実行可能要素に変換するためのプロセス | |
JP4403080B2 (ja) | 再構成可能なハードウェアエミュレーションによる制御データフローグラフを用いたデバッグ | |
US6964029B2 (en) | System and method for partitioning control-dataflow graph representations | |
US7299458B2 (en) | System and method for converting control flow graph representations to control-dataflow graph representations | |
EP0743599A2 (en) | Method of generating code for programmable processor, code generator and application thereof | |
WO2000046704A2 (en) | Automated processor generation system and method for designing a configurable processor | |
Qin et al. | Architecture Description Languages for Retargetable Compilation. | |
US7702499B1 (en) | Systems and methods for performing software performance estimations | |
Wirthlin et al. | Synthesizing RTL hardware from Java byte codes | |
Åkesson | An LLVM Back-end for REPLICA: Code Generation for a Multi-core VLIWProcessor with Chaining | |
Manual | Rough Draft User Manual (KiwiC Version Alpha 0.3. 2e)(Sept 2017) | |
Poulsen et al. | EPG source code instrumentation tools-user manual | |
Wahlen | C Compiler Aided Design of Application-Specific Instruction-Set Processors Using the Machine Description Language LISA | |
SVOBODA | ARCHITECTURE INFORMATION FOR LLVM COMPILER OPTIMIZATIONS | |
Mittal | A compiler infrastructure for compiling assembly and binary programs onto FPGAS | |
Janssen | Enhancing the Move framework | |
Chang | High-level cycle-accurate specification of microprocessors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060920 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090804 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20091102 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20091110 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20091203 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20091210 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20091225 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100107 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100203 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100309 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100607 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100614 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100914 |