JP6001873B2 - 並列パイプライン化ハードウェアにおけるストリームスケジューリング方法および装置 - Google Patents
並列パイプライン化ハードウェアにおけるストリームスケジューリング方法および装置 Download PDFInfo
- Publication number
- JP6001873B2 JP6001873B2 JP2012031618A JP2012031618A JP6001873B2 JP 6001873 B2 JP6001873 B2 JP 6001873B2 JP 2012031618 A JP2012031618 A JP 2012031618A JP 2012031618 A JP2012031618 A JP 2012031618A JP 6001873 B2 JP6001873 B2 JP 6001873B2
- Authority
- JP
- Japan
- Prior art keywords
- hardware
- data path
- stream
- data
- clock cycle
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 94
- 239000000872 buffer Substances 0.000 claims description 53
- 238000013461 design Methods 0.000 claims description 44
- 230000003139 buffering effect Effects 0.000 claims description 37
- 238000004364 calculation method Methods 0.000 claims description 31
- 238000012545 processing Methods 0.000 claims description 28
- 230000006870 function Effects 0.000 claims description 25
- 238000005457 optimization Methods 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 7
- 238000007620 mathematical function Methods 0.000 claims description 4
- 238000004519 manufacturing process Methods 0.000 claims description 2
- 230000001902 propagating effect Effects 0.000 claims 2
- 230000001419 dependent effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 7
- 230000015572 biosynthetic process Effects 0.000 description 6
- 238000003786 synthesis reaction Methods 0.000 description 6
- 230000014509 gene expression Effects 0.000 description 5
- 230000006399 behavior Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000010079 rubber tapping Methods 0.000 description 3
- 238000005094 computer simulation Methods 0.000 description 2
- 238000011960 computer-aided design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000009472 formulation Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
- 238000001308 synthesis method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
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/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30079—Pipeline control instructions, e.g. multicycle NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Advance Control (AREA)
- Image Processing (AREA)
Description
方程式として表現すると、所望する計算は次のようになる。
(A+B)+C=Output
これは次のように記述することができる。
そのため、例として、方程式(8)を取ると、
方程式(8)は新しい定式化の元で次のように書くことができ、
最適化プロセスの実際的な例として、方程式(10)を取ると、
これは一般的なケースであり、本発明において次のように表わすことができる。
および
本発明の方法は標準コンピューティング装置400またはWindows(登録商標)やLinux(登録商標)のようなオペレーティングシステムを実行する他のプログラムドまたはプログラマブル装置で実行することができる。
GUI406を介して、ユーザは所望するデータフローを式として指定する。これはadd(add(a,b),c)のようなコマンドを含むことができる。例として、ユーザは式(18)に定義されているような典型的な2D断面畳み込みを処理したいことがある。式(18)は、簡潔にするため、速記用語を使用し、
a*bはmul(a,b)が2入力を有する複数のノードを生成することを意味し、
a+bはadd(a,b)が2入力を有するaddノードを生成することを意味し、
a[b]はstreamOffset(a,b)が1入力およびbのオフセットを有するストリームオフセットノードを生成することを意味する。
ここに、oは出力であり、iは入力でありnxはデータセット内の高速次元(fast dimension)の可変サイズである。
ステップ302においてコマンドが入力されると、アプリケーション402はJavaライブラリ404を利用してJavaオブジェクトにより表わされるグラフを作り出す。式(18)において前記した例を使用して、これはグラフを次のように発生する。
本方法は次にステップ306へ進む。
ステップ306において、ステップ304で作り出されたグラフ内のレーテンシ情報が抽出される。式(18)に示された例を取るために、レーテンシが次のように作り出される。
次に、本方法はステップ308へ進む。
ステップ302に記載したようなグラフの定義およびステップ306で定義または仮定された関連するレーテンシから、本方法は次に各データパスを定義する1組の線形不等式を発生する。式(18)の例を使用して、これはグラフ内のノードに対するレーテンシの定数部に対する制約とバッファリング式の下記の組合せを提供する。
また、nxに対する下記の制約とバッファリング式を提供する。
一度制約が線形不等式のグループとして設定されると、本方法はステップ310へ進む。
ステップ310において、そこで発生された線形不等式が解かれる。線形不等式はそれらを整数線形プログラミング(ILP)ソルバーへ通して実行することにより解くことができる。このような線形(linear system)は、たとえば、GNU LinearProgramming Kit(GLPK)を使用して解くことができる。こうして、ここで使用された例を取ると、下記の式(19)は定数とnxの両方に対して最小化される。
最小化の結果から下記のパイプラインスケジュールが作り出される。
次に、本方法はステップ312へ進む。
ステップ310で計算された最小化されたスケジュールが決定されると、このスケジュールはそれを満たすバッファノードを挿入することによりグラフに適用される。定義された前記例を使用するために、これは次のようにバッファリングを作り出す。
次に、本方法はステップ314へ進む。
さまざまな最適化パスをデータパス上で実行することができる。前記したように、これはタップおよびフォールド操作を含むことができる。フォールド操作はそこで2つのバッファが端と端をつないで見えて1つのより長いバッファへ併合される操作である。
スケジュールが定義されると、本方法はステップ316へ進む。
最適化されたスケジュールが決定されると、グラフは次に物理的FPGAを形成できるようなフォーマットへコンパイルすることができる。コンパイラおよびコンパイル方法は公知であり、当業者ならば本発明で使用できるソフトウエア、ハードウェアおよび実装が容易にお判りであろう。次に、本方法はステップ318へ進む。
ステップ316においてグラフが正しいフォーマットにコンパイルされていると、ストリームプロセッサに対するFPGA設計が形成される。次に、FPGA設計を随意使用して最適化されたデータパス(またはカーネル)およびデータフローをハードウェア内に実装することができる。FPGA設計がFPGAチップまたはデバイス上のハードウェア内に形成されていると、エンドユーザは必要に応じてそれを使用してステップ302で定義されたストリーム計算を行うことができる。
12 CLB
14 インターコネクト
16 入力パッド
18 出力パッド
20 LUT
22 フリップフロップユニット
24 一時的メモリストレージおよび出力
26 ブロックメモリユニット
30、40、52、54 データパス
32 算術演算
42、56、108、112 出力
44、46、102、104 ノード
48、114 エッジ
9、10、19、50、58 バッファ
106、110 入力
400、500 コンピューティング装置
402 アプリケーション
404 Javaライブラリ
406 GUI
502 FPGA設計
504 CPU
506 メインメモリ
508 データバス
510 アクセラレータカード
Claims (33)
- パイプライン化並列ストリームプロセッサに対するハードウェア設計を発生する方法であって、前記方法は、
コンピューティングデバイス上で、前記パイプライン化並列ストリームプロセッサの一部としてハードウェア内に実装されるプロセスを指示する処理操作を定義するステップと、
コンピューティングデバイス上で、前記処理操作をタイムドメイン内の並列構造として表わすグラフをクロックサイクルの関数として定義するステップであって、前記グラフは前記パイプライン化並列ストリームプロセッサに対するハードウェア設計として実装される少なくとも1つのデータパスを含み、かつデータ値がその中をストリーミングできるように構成された複数の並列分岐を含み、前記または各データパスは少なくとも1つの入力、少なくとも1つの出力、前記パイプライン化並列ストリームプロセッサの一部としてハードウェア内に実装されるハードウェアエレメントに直接対応する少なくとも1つの個別オブジェクトを含むものとして表わされ、前記または各個別オブジェクトは1クロックサイクル以上機能を実行するように動作することができ、かつ予め定義されたレーテンシが関連付けられており、前記予め定義されたレーテンシは前記ハードウェアエレメントが前記機能を実行するのに要する時間を表し、前記データ値は増加するクロックサイクルの関数として前記データパス中を少なくとも1つの入力から少なくとも1つの出力まで伝播するステップと、
コンピューティングデバイス上で、前記少なくとも1つのデータパスおよび前記グラフの関連付けられたレーテンシを1組の代数線形不等式として定義するステップと、
コンピューティングデバイス上で、前記1組の代数線形不等式を解くステップと、
コンピューティングデバイス上で、前記解かれた線形不等式を使用して前記グラフ内の前記少なくとも1つのデータパスを最適化して最適化されたグラフを作り出すステップと、
コンピューティングデバイス上で、前記最適化されたグラフを利用してハードウェア内に実装する最適化されたハードウェア設計を前記パイプライン化並列ストリームプロセッサとして定義するステップと、
さらに、コンピューティングデバイス上で、データパス内の特定のポイントにある少なくとも1つのストリームオフセットオブジェクトを提供するステップを含み、
前記ストリームオフセットオブジェクトは、特定のクロックサイクルおよびデータパス内の前記特定のポイントに対して、前記特定のクロックサイクルとは異なるクロックサイクルからのデータ値へアクセスするように動作することができ、そして、
前記少なくとも1つのストリームオフセットオブジェクトは前記特定のクロックサイクルから変数に依存するクロックサイクル数だけオフセットしたクロックサイクルからのデータ値へアクセスするように動作することができ、前記変数の値は前記最適化されたハードウェア設計が前記パイプライン化並列ストリームプロセッサとしてハードウェア内に実装された後で指定される、
方法。 - 請求項1記載の方法であって、前記処理操作は前記パイプライン化並列ストリームプロセッサとしてハードウェア内に実装される数学関数または計算を含む方法。
- 請求項1または2記載の方法であって、前記または各ハードウェアエレメントは前記パイプライン化並列ストリームプロセッサ上に1つ以上のハードウェアユニットを含む方法。
- 請求項1、2または3記載の方法であって、前記または各ハードウェアエレメントは予め定められた数学関数を実施するように構成されている方法。
- 請求項1から4のいずれか1項記載の方法であって、前記最適化ステップは前記データパスをスケジュールするのに必要なバッファリングの量を最小化するステップを含む方法。
- 請求項1から5のいずれか1項記載の方法であって、前記最小化ステップは、さらに、
必要ならば、前記データパスの少なくともいくつかの分岐にバッファリングを挿入するステップを含む方法。 - 請求項5または6記載の方法であって、前記バッファリングは前記パイプライン化並列ストリームプロセッサ上のメモリユニットを表す方法。
- 請求項5、6または7記載の方法であって、前記バッファリングは全体グラフに対して最小化される方法。
- 請求項5から8のいずれか1項記載の方法であって、前記最適化ステップは、さらに、2つ以上のバッファを併合して単一バッファとするステップを含む方法。
- 請求項5から9のいずれか1項記載の方法であって、前記最適化ステップは、さらに、前記少なくとも1つのデータパスの2つ以上の分岐に単一バッファを割り当てるステップを含む方法
- 請求項1から10のいずれか1項記載の方法であって、前記グラフは複数の入力および複数の出力を含み、各入力および各出力は前記少なくとも1つのデータパスの少なくとも1つの分岐に接続されている方法。
- 請求項11記載の方法であって、前記入力はサイクルが揃えられていない方法。
- 請求項11または12記載の方法であって、前記出力はサイクルが揃えられていない方法。
- 請求項1から13のいずれか1項記載の方法であって、前記グラフは前記パイプライン化並列ストリームプロセッサとしてハードウェア内に実装される複数の並列データパスを含み、前記解答および最適化ステップは前記複数の並列データパスの各々に対して実施される方法。
- 請求項1から14のいずれか一項記載の方法であって、前記少なくとも1つのストリームオフセットオブジェクトは前記特定のクロックサイクルの前のクロックサイクルからのデータ値へアクセスするように動作することができる方法。
- 請求項1から14のいずれか一項記載の方法であって、前記少なくとも1つのストリームオフセットオブジェクトは前記特定のクロックサイクルの後のクロックサイクルからのデータ値へアクセスするように動作することができる方法。
- 請求項1から16のいずれか1項記載の方法であって、前記少なくとも1つのストリームオフセットオブジェクトは前記特定のクロックサイクルから予め選定されたクロックサイクル数だけオフセットしたクロックサイクルからのデータ値へアクセスするように動作することができる方法。
- 請求項1から17のいずれか一項記載の方法であって、前記処理操作が前記パイプライン化並列ストリームプロセッサ上で実行される前に指定される方法。
- ストリームプロセッサに対するハードウェア設計を発生する方法であって、前記方法は、
コンピューティングデバイス上で、前記ストリームプロセッサの一部としてハードウェア内に実装されるプロセスを指示する処理操作を定義するステップと、
コンピューティングデバイス上で、タイムドメイン内の前記処理操作を表わすグラフをクロックサイクルの関数として定義するステップであって、前記グラフは前記ストリームプロセッサの一部としてハードウェア内に実装されかつデータがその中をストリーミングできるように構成された少なくとも1つのデータパスを含み、前記または各データパスは少なくとも1つの入力、少なくとも1つの出力、および少なくとも1つの個別オブジェクトを含み、前記データは増加するクロックサイクルの関数として前記データパス中を少なくとも1つの入力から少なくとも1つの出力まで伝播するステップと、
コンピューティングデバイス上で、データパス内の特定のポイントにある少なくとも1つのストリームオフセットオブジェクトを提供するステップであって、前記ストリームオフセットオブジェクトは、特定のクロックサイクルおよび前記データパス内の前記特定のポイントに対して、前記特定のクロックサイクルとは異なるクロックサイクルからのデータ値へアクセスするように動作することができるステップと、
コンピューティングデバイス上で、前記グラフ内の前記少なくとも1つのデータパスを最適化して最適化されたグラフを作り出すステップと、
コンピューティングデバイス上で、前記最適化されたグラフを利用して前記ストリームプロセッサとしてハードウェア内に実装される最適化されたハードウェア設計を定義するステップと、を含み、
前記少なくとも1つのストリームオフセットオブジェクトは前記特定のクロックサイクルから変数に依存するクロックサイクル数だけオフセットされたクロックサイクルからのデータ値へアクセスするように動作することができ、前記変数は前記最適化されたハードウェア設計が前記ストリームプロセッサの一部としてハードウェア内に実装された後で指定される、
方法。 - 請求項19記載の方法であって、前記少なくとも1つのストリームオフセットオブジェクトは前記特定のクロックサイクルの前のクロックサイクルからのデータ値へアクセスするように動作することができる方法。
- 請求項19記載の方法であって、前記少なくとも1つのストリームオフセットオブジェクトは前記特定のクロックサイクルの後のクロックサイクルからのデータ値へアクセスするように動作することができる方法。
- 請求項19、20または21のいずれか1記載の方法であって、前記少なくとも1つのストリームオフセットオブジェクトは前記特定のクロックサイクルから予め選定されたクロックサイクル数だけオフセットされたクロックサイクルからのデータ値へアクセスするように動作することができる方法。
- 請求項19から21のいずれか一項記載の方法であって、前記変数の値は前記処理操作が前記ストリームプロセッサ上で実行される前に指定される方法。
- 請求項19から23のいずれか一項記載の方法であって、前記最適化は、さらに、
コンピューティングデバイス上で、前記グラフの前記少なくとも1つのデータパスを1組の代数線形不等式として定義するステップと、
コンピューティングデバイス上で、前記1組の代数線形不等式を解くステップと、
コンピューティングデバイス上で、前記解かれた線形不等式を使用して前記グラフ内の前記少なくとも1つのデータパスを最適化して最適化されたグラフを作り出すステップと、を含む方法。 - 請求項1から18のいずれか1項記載の方法であって、前記パイプライン化並列ストリームプロセッサはフィールド プログラマブル ゲート アレイまたは特定用途集積回路上に実装される方法。
- 請求項19から24のいずれか1項記載の方法であって、前記ストリームプロセッサはフィールド プログラマブル ゲート アレイまたは特定用途集積回路上に実装される方法。
- 請求項1から18のいずれか1項記載の方法であって、さらに、前記パイプライン化並列ストリームプロセッサが前記処理操作を実施するように動作できるように前記最適化されたハードウェア設計を前記ストリームプロセッサ上に形成するステップを含む方法。
- 請求項19から25のいずれか1項記載の方法であって、さらに、前記ストリームプロセッサが前記処理操作を実施するように動作できるように前記最適化されたハードウェア設計を前記ストリームプロセッサ上に形成するステップを含む方法。
- プログラマブルロジックデバイスを作る方法であって、
請求項1から26のいずれか1項の方法を使用して設計を発生するステップと、
発生された設計を具現するように前記ロジックデバイスをプログラミングするステップと、を含む方法。 - コンピュータ上で実行されると請求項1から26のいずれか1項記載のステップを実行するようにされているコンピュータプログラム。
- 請求項30記載のコンピュータプログラムであって、コンピュータ読取可能媒体上に格納されたコンピュータプログラム。
- 請求項1から26のいずれか1項記載の方法を使用して発生された設計を有するフィールド プログラマブル ゲート アレイ、特定用途集積回路または他のプログラマブルロジックデバイス。
- ハードウェアストリームプロセッサを発生するシステムであって、前記システムは、
請求項1から26のいずれか1項記載の方法を実行して前記発生された設計を有するプログラマブルロジックデバイスをプログラミングする命令のリストを発生するステップを含む方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/029,696 US8464190B2 (en) | 2011-02-17 | 2011-02-17 | Method of, and apparatus for, stream scheduling in parallel pipelined hardware |
US13/029,696 | 2011-02-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012174268A JP2012174268A (ja) | 2012-09-10 |
JP6001873B2 true JP6001873B2 (ja) | 2016-10-05 |
Family
ID=45524278
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012031618A Active JP6001873B2 (ja) | 2011-02-17 | 2012-02-16 | 並列パイプライン化ハードウェアにおけるストリームスケジューリング方法および装置 |
Country Status (4)
Country | Link |
---|---|
US (2) | US8464190B2 (ja) |
EP (1) | EP2490141B1 (ja) |
JP (1) | JP6001873B2 (ja) |
GB (1) | GB2488195A (ja) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2370946A4 (en) | 2008-12-15 | 2012-05-30 | Exegy Inc | METHOD AND DEVICE FOR HIGH-SPEED PROCESSING OF FINANCIAL MARKET DEFINITIONS |
US8972923B2 (en) * | 2011-02-08 | 2015-03-03 | Maxeler Technologies Ltd. | Method and apparatus and software code for generating a hardware stream processor design |
US9367658B2 (en) * | 2011-06-22 | 2016-06-14 | Maxeler Technologies Ltd. | Method and apparatus for designing and generating a stream processor |
US20130046912A1 (en) * | 2011-08-18 | 2013-02-21 | Maxeler Technologies, Ltd. | Methods of monitoring operation of programmable logic |
US8671371B1 (en) * | 2012-11-21 | 2014-03-11 | Maxeler Technologies Ltd. | Systems and methods for configuration of control logic in parallel pipelined hardware |
US8701069B1 (en) * | 2012-11-21 | 2014-04-15 | Maxeler Technologies, Ltd. | Systems and methods for optimizing allocation of hardware resources to control logic in parallel pipelined hardware |
US9934043B2 (en) | 2013-08-08 | 2018-04-03 | Linear Algebra Technologies Limited | Apparatus, systems, and methods for providing computational imaging pipeline |
US9727113B2 (en) | 2013-08-08 | 2017-08-08 | Linear Algebra Technologies Limited | Low power computational imaging |
US11768689B2 (en) | 2013-08-08 | 2023-09-26 | Movidius Limited | Apparatus, systems, and methods for low power computational imaging |
US10001993B2 (en) | 2013-08-08 | 2018-06-19 | Linear Algebra Technologies Limited | Variable-length instruction buffer management |
US9910675B2 (en) | 2013-08-08 | 2018-03-06 | Linear Algebra Technologies Limited | Apparatus, systems, and methods for low power computational imaging |
JP6072383B1 (ja) * | 2016-03-10 | 2017-02-01 | 三菱電機株式会社 | 高位合成装置、高位合成方法及び高位合成プログラム |
US10460704B2 (en) | 2016-04-01 | 2019-10-29 | Movidius Limited | Systems and methods for head-mounted display adapted to human visual mechanism |
US10152566B1 (en) * | 2016-09-27 | 2018-12-11 | Altera Corporation | Constraint based bit-stream compression in hardware for programmable devices |
US9661052B1 (en) * | 2016-10-14 | 2017-05-23 | International Business Machines Corporation | Reconfiguring a streaming application to reduce latency mismatches |
US10949947B2 (en) | 2017-12-29 | 2021-03-16 | Intel Corporation | Foveated image rendering for head-mounted display devices |
US11301295B1 (en) * | 2019-05-23 | 2022-04-12 | Xilinx, Inc. | Implementing an application specified as a data flow graph in an array of data processing engines |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002123563A (ja) * | 2000-10-13 | 2002-04-26 | Nec Corp | コンパイル方法および合成装置ならびに記録媒体 |
US7000213B2 (en) | 2001-01-26 | 2006-02-14 | Northwestern University | Method and apparatus for automatically generating hardware from algorithms described in MATLAB |
US6934938B2 (en) | 2002-06-28 | 2005-08-23 | Motorola, Inc. | Method of programming linear graphs for streaming vector computation |
US6941541B2 (en) | 2002-07-19 | 2005-09-06 | Hewlett-Packard Development Company, L.P. | Efficient pipelining of synthesized synchronous circuits |
US7107199B2 (en) * | 2002-10-31 | 2006-09-12 | Hewlett-Packard Development Company, L.P. | Method and system for the design of pipelines of processors |
US7478377B2 (en) | 2004-06-07 | 2009-01-13 | International Business Machines Corporation | SIMD code generation in the presence of optimized misaligned data reorganization |
US7395531B2 (en) | 2004-06-07 | 2008-07-01 | International Business Machines Corporation | Framework for efficient code generation using loop peeling for SIMD loop code with multiple misaligned statements |
US7305649B2 (en) | 2005-04-20 | 2007-12-04 | Motorola, Inc. | Automatic generation of a streaming processor circuit |
JP2009512089A (ja) | 2005-10-18 | 2009-03-19 | マイトリオニクス エービー | データフローマシンにおけるデッドロックを回避するための方法 |
US7454597B2 (en) * | 2007-01-02 | 2008-11-18 | International Business Machines Corporation | Computer processing system employing an instruction schedule cache |
US7817655B1 (en) | 2008-10-30 | 2010-10-19 | Xilinx, Inc. | Determining sizes of FIFO buffers between functional blocks in an electronic circuit |
-
2011
- 2011-02-17 US US13/029,696 patent/US8464190B2/en active Active
- 2011-12-28 EP EP11195864.1A patent/EP2490141B1/en active Active
- 2011-12-28 GB GB1122363.3A patent/GB2488195A/en not_active Withdrawn
-
2012
- 2012-02-16 JP JP2012031618A patent/JP6001873B2/ja active Active
-
2013
- 2013-02-27 US US13/779,457 patent/US8689156B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20130173890A1 (en) | 2013-07-04 |
GB201122363D0 (en) | 2012-02-01 |
US20120216019A1 (en) | 2012-08-23 |
EP2490141A2 (en) | 2012-08-22 |
GB2488195A (en) | 2012-08-22 |
JP2012174268A (ja) | 2012-09-10 |
US8689156B2 (en) | 2014-04-01 |
EP2490141B1 (en) | 2019-06-12 |
US8464190B2 (en) | 2013-06-11 |
EP2490141A3 (en) | 2012-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6001873B2 (ja) | 並列パイプライン化ハードウェアにおけるストリームスケジューリング方法および装置 | |
Hauck et al. | Reconfigurable computing: the theory and practice of FPGA-based computation | |
Coussy et al. | GAUT: A High-Level Synthesis Tool for DSP Applications: From C Algorithm to RTL Architecture | |
Ku et al. | High level synthesis of ASICs under timing and synchronization constraints | |
US8671371B1 (en) | Systems and methods for configuration of control logic in parallel pipelined hardware | |
US8739101B1 (en) | Systems and methods for reducing logic switching noise in parallel pipelined hardware | |
US8701069B1 (en) | Systems and methods for optimizing allocation of hardware resources to control logic in parallel pipelined hardware | |
Guo et al. | Analysis and optimization of the implicit broadcasts in FPGA HLS to improve maximum frequency | |
Koul et al. | Aha: An agile approach to the design of coarse-grained reconfigurable accelerators and compilers | |
Casseau et al. | Design of multi-mode application-specific cores based on high-level synthesis | |
Liu et al. | Unified buffer: Compiling image processing and machine learning applications to push-memory accelerators | |
Zhou et al. | Khronos: Fusing Memory Access for Improved Hardware RTL Simulation | |
Rykunov | Design of asynchronous microprocessor for power proportionality | |
Sadasue et al. | LLVM-C2RTL: C/C++ based system level RTL design framework using LLVM compiler infrastructure | |
Dutta et al. | A holistic approach for tightly coupled reconfigurable parallel processors | |
Mehdipour et al. | A design scheme for a reconfigurable accelerator implemented by single-flux quantum circuits | |
Nielsen et al. | Behavioral synthesis of asynchronous circuits using syntax directed translation as backend | |
Ayala-Rincón et al. | Prototyping time-and space-efficient computations of algebraic operations over dynamically reconfigurable systems modeled by rewriting-logic | |
Daigneault et al. | Fast description and synthesis of control-dominant circuits | |
Horváth et al. | A proposed synthesis method for application-specific instruction set processors | |
Toi et al. | High-level synthesis challenges for mapping a complete program on a dynamically reconfigurable processor | |
Cong et al. | A variation-tolerant scheduler for better than worst-case behavioral synthesis | |
Horváth et al. | A proposed novel description language in digital system modeling | |
Chinnadurai et al. | Survey On Scheduling And Allocation In High Level Synthesis | |
Hannig et al. | Parallelization approaches for hardware accelerators–loop unrolling versus loop partitioning |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120607 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20150209 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160114 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20160414 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20160614 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160714 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20160803 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160902 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6001873 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |