JP6249360B2 - ハードウェア設計装置,及びハードウェア設計用プログラム - Google Patents
ハードウェア設計装置,及びハードウェア設計用プログラム Download PDFInfo
- Publication number
- JP6249360B2 JP6249360B2 JP2013105024A JP2013105024A JP6249360B2 JP 6249360 B2 JP6249360 B2 JP 6249360B2 JP 2013105024 A JP2013105024 A JP 2013105024A JP 2013105024 A JP2013105024 A JP 2013105024A JP 6249360 B2 JP6249360 B2 JP 6249360B2
- Authority
- JP
- Japan
- Prior art keywords
- hardware
- pipeline
- program
- pipeline processing
- output
- 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
Images
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
Description
サを含んでおり、パイプライン処理の手順を記述したプログラムに従って、各プロセッサにパイプライン処理に係る複数の処理を実行させることで、パイプライン処理結果を得ることができる。
路:パイプラインハードウェアと呼ぶ)の開発が求められている。
ェア設計用プログラム,このようなプログラムを記録したコンピュータ読み取り可能な記録媒体,及び上記制御装置によるパイプラインハードウェア記述の生成方法としても特定することができる。
図1は、ハードウェア設計用プログラムの実行によってハードウェア設計装置として機能する情報処理装置(コンピュータ)の構成例を示す図である。情報処理装置10として、例えば、パーソナルコンピュータ(PC),ワークステーション,専用又は汎用のサーバマシンを適用することができる。
び補助記憶装置13のそれぞれは、記億装置,記録媒体の一例である。
図2は、SPCの仕組みを説明する図である。図2に示すように、SPCに対する入力として、“Flow-model(フローモデル)”と呼ばれる、パイプライン処理のモデルを定義したモデル定義情報と、パイプライン処理で行われる演算が記述されたプログラムとが所定の記述言語で記述されたファイル(パイプライン処理モデルのファイル)が用意される。各ファイルは、補助記憶装置13に記憶され、CPU11によるSPCの実行に際して使用される。
Model:HAM)を生成する(図2(1))。抽象化モデル(HAM)は、フローモデルにおける演算内容に従った演算を行う演算子である2以上のコンポーネントを特定し、2以上のコンポーネントを合成することによって生成される。さらに、SPCは、HAMをハードウェア記述言語(HDL)で記述したパイプラインハードウェアの記述(Hardware
Description)を生成して出力する(図2(2))。
フローモデルの記述言語として、例えば、XML(Extensible Markup Language)を含む様々なマークアップ言語を適用可能である。
述されたプログラムを使用することができる。但し、パイプライン処理で行われる演算内容が特定可能に記述される限り、OpenCL以外の他のプログラム言語を適用することもできる。
値(id番号))の記述と、例えば、“c[id]=+a[id]-100+b[id]”のような、idの指定を含む演算内容の記述とにより、並列処理において個々の処理を行うプロセッサを指定することができる。
れている。図2の例では、“a”,“b”,“c”のそれぞれの定義(名称,データタイプ,データ長等)が記述されている。
次に、パイプラインハードウェアの抽象化モデル(HAM)の詳細について説明する。SPCによって生成されるHAMは、以下のように規定(設定)される。
・入力は、“(入力)データ”,“(入力)データのアドレス”,“クロック”,及び“
リセット”を含む。
・出力は、“(出力)データ”,“(出力)データの有効性を示すValid信号”,“(出
力)データのアドレス”を含む。
・パイプラインハードウェアに対する入力は、メモリ(図1のメモリ3を参照)からの読み出しによって行われる。
・出力データは、メモリ(図1のメモリ4を参照)に書き込まれる。
・入力時における“(入力)データのアドレス”から読み出された“(入力)データ”のメモリからの読み出し時間“Tad”は、SPCの合成変数として与えられる。
・パイプラインハードウェアへの入力データを“入力ポート”,パイプラインハードウェアからの出力データを“出力ポート”と呼ぶ。
パイプラインハードウェアに対する入力データ(入力ポート)及び出力データ(出力ポート)に関して、例えば、以下のように規定される。
・パイプラインハードウェアを構成するための演算式(例えば、図2のフローモデルにおける“c[id]=+a[id]-100+b[id]”)に現れる入力ポート(a及びb)は必ず演算式の右辺になくてはならない。
・上記演算式において、出力ポート(c)は左辺にだけ現れなくてはならない。
入力とされるプログラム(上記したフローモデル中のカーネルプログラム)で使用される入力データ(入力ポート)及び出力データ(出力ポート)の各アドレスは、カーネルプログラムで記述されたプロセッサID値(id値:「識別子」に相当)に基づいて指定される。プログラムの構造において、プロセッサIDは連続的な値を有し、カウンタのインクリメントによってプロセッサIDが変更される。変更されたプロセッサIDが次のアドレスとして機能する。
合には、SPCは、演算式(“c[id]=+a[id]-100+b[id]”)に基づき、図4の下段に図示するようなパイプラインハードウェアのモデルを生成する。
“b_addr”は、入力ポート側にあるメモリ3(図2)のアドレスとして機能する。そして、アドレスとして指定された箇所から読み出された“a”の値は、即値“100”とともに、減算器(Subtract)に入力される。“b”の値は、減算器の出力とともに、加算器(adder)に入力される。そして、加算器から出力ポートである“c”の値が出力される。
“c”の値は、アドレス“c_addr”として指定されたカウンタ値に対応する、出力ポート側のメモリ4(図2)の記憶領域に書き込まれる。そして、所定の契機(例えば、“c”の出力“書き込み”)で、カウンタ値がインクリメント(現在のカウンタ値に1を加算)される。そして、次のカウンタ値に対応するメモリ3の記憶領域から、入力ポート“a”及び“b”を取得し、次のカウンタ値に対応するメモリ4の記憶領域に出力ポート“b”を書き込むことができる。
ストリームデータを処理するためのパイプライン処理に使用可能な複数のハードウェアコンポーネントの定義を含むコンポーネント情報として、例えば、コンポーネントの定義ファイルが、コンポーネント毎に用意される。コンポーネント定義ファイルは、以下のような情報を含む。
・コンポーネントの実装のファイル(例えば、HDLファイル)。
・クロック,イネーブル,リセットのそれぞれの入力と、各入力に合致する実装(コンポーネント)におけるポート(端子)の識別情報(例えばポート名)との組(関連)。
・Valid出力と、Valid出力に対応する実装(部分ハードウェア)上のポート識別情報との組(関連)
・演算において、演算式の左側(左辺)に位置すべき出力ポート,及び演算式の(右辺)に位置すべき入力ポートにそれぞれ対応する実装上のポート識別情報との組(関連)。
・演算に要求されるクロックサイクル数(遅延)
・演算タイプ(加算,減算,積算など)
まれる。
ゲート(negate)のような様々なコンポーネントの定義ファイルを受け取り、その中から、演算に適合したコンポーネントを選択(抽出)し(図6では、加算器(1),減算器,及び積算回路)、これらを合成(配線接続)したパイプラインハードウェアを生成する様子が図示されている。
SPCは、入力プログラム(カーネルプログラム)に記述されたパイプライン処理で実行される演算の構文解析を行い、二分木構造を有する抽象構文木(Abstract Syntax Tree:AST)を作成する。ASTの作成は、SPCによるカーネルプログラムのコンパイル時に、bisonやyaccのようなバーサジェネレータを用いて行うことができる。
ノードには、代入(例えば等式における等号)が指定される。代入部分(幹ノード)の左側の葉ノードには出力ポート“a”が指定される。一方、代入部分の右側には、葉ノードと枝ノードとが配置される。なお、ノード間を結ぶ線(リンク)は、ハードウェアにおける信号線として宣言される。
コンポーネントとして、積算回路がマッピングされる。
れたパイプラインハードウェアのモデル(HAM)における遅延を説明する図である。各入力ポート“b”〜“e”のメモリ3(図2)からの読み出し時間は、それぞれ遅延時間Tadで同じであると仮定する。
時間がT1で、T1から減算器(演算子“−”)が減算結果を出力するまでの遅延時間がT2で、T2から加算器(演算子“+”)が加算結果を出力するまでの遅延時間がT3である。
まで、演算処理を開始することができない。この結果、減算器及び加算器の少なくとも一方から正確な演算結果が出力されない虞がある。
する各遅延はそれぞれTadであるので、遅延の挿入は行われない。これに対し、演算子“−”の枝ノードに注目すると、演算子“+”側の入力に係る遅延時間は、Tad+T1であるのに対し、入力ポート“e”側の入力に係る遅延時間はTadである。このため、差分|T1+Tad−Tad|が生じる。そこで、当該差分を、演算子“*”の枝ノードによる遅延D(“*”)として、入力ポート“e”側に挿入する。
の枝ノードに着目した場合には、入力ポート“b”側の入力に関して、遅延の差分D(“−”)=|T2+T(“+”)−Tad|が挿入される。なお、演算子“+”の枝ノードから演
算結果が出力されるまでの遅延は、T(“+”)=T1+T2+T3+Tadである。
図9は、CPU11によって実行されるSPCにおける処理を大略して示すフローチャートである。図9において、CPU11は、例えば、入力装置14を用いた操作に応じて、SPCの実行を開始すると、補助記憶装置13に記憶されたパイプライン処理のプログラム及びモデル定義情報(フローモデルのXMLファイル)を取得する(01)。
見したときに、カウンタを生成する。このとき、生成されたカウンタの値は、代入先の変数を使う部分、すなわち、出力データをメモリに書き込むポートに接続する。これによって、出力データの書き込みアドレスがカウンタ値によって制御される。また、カウンタ値は、入力ポートに対するアドレスとして使用することもできる。なお、プロセッサIDを含む構文が発見されない場合(02AのNo)には、CPU11は、処理を04に進める。
U11は、ASTにおけるノード間の接続(リンク)をsignal(信号線)として宣言し、さらに、architecture宣言の中で、ASTにおけるコンポーネント(ノード)の接続状態に基づき、パイプライン構造を作成する。このようにして、パイプラインハードウェアのVHDLによる記述(Hardware Description)が生成される。当該記述は、出力装置15にて出力(表示又は印刷)されることができる。
実施形態によれば、パイプライン処理における演算の内容が記述されたプログラム,パイプライン処理の入出力に係る定義情報,及びコンポーネント情報を用いて、パイプラインハードウェアのHDLによる記述が自動的に作成される。このため、GPUを用いたパイプライン処理のプログラムをパイプラインハードウェアのHDL記述に自動的に変換することが可能となる。これによって、ハードウェア設計の作業負担の軽減を図ることがで
きる。
11・・・CPU(制御装置)
12・・・主記憶装置
13・・・補助記憶装置
14・・・入力装置
15・・・出力装置
Claims (8)
- ストリームデータを処理するためのパイプライン処理に使用可能な複数のハードウェアコンポーネントの定義を含むコンポーネント情報と、前記パイプライン処理で行われる演算が記述されたプログラムと、前記演算における入力及び出力の定義を少なくとも含む定義情報とを用いて、前記演算の内容及び前記定義情報に応じた2以上のハードウェアコンポーネントを前記コンポーネント情報に基づき特定し、前記2以上のハードウェアコンポーネントが前記パイプライン処理を行うように合成されたパイプラインハードウェアのハードウェア記述言語による記述を生成する制御装置を含み、
前記プログラムは、前記演算を行うプロセッサを識別子の記述により指定可能なストリームコンピューティング向けのプログラム言語で記述され、
前記制御装置は、前記プログラム中の演算に関して識別子の指定が記述されている場合には、当該演算によって得られる出力データの書き込みアドレスを示すカウンタ値を出力するカウンタを含む前記パイプラインハードウェアのハードウェア記述言語による記述を生成し、
前記カウンタから出力されるカウンタ値は、前記演算の実行毎に変更される
ことを特徴とするハードウェア設計装置。 - 前記制御装置は、前記プログラムに記述された前記パイプライン処理で実行される演算の構文解析を行い、前記演算の代入部分を幹ノードとし、この幹ノードの左側に前記パイプライン処理の出力データを示す葉ノードが置かれ、且つ幹ノードの右側が前記パイプライン処理に係る複数の入力データのそれぞれを示す葉ノードと前記複数の入力データを用いて前記出力データを算出するために使用される演算子を示す枝ノードとを含む二分木構造で表された抽象構文木の生成を試行し、前記抽象構文木が生成されないときにエラーを出力する
請求項1に記載のハードウェア設計装置。 - 前記制御装置は、前記抽象構文木が生成されたときに、前記枝ノードに対する2つの入力のそれぞれにおける遅延が均等になるように遅延を挿入し、挿入した遅延を含む前記パイプラインハードウェアのハードウェア記述言語による記述を生成する
請求項2に記載のハードウェア設計装置。 - 前記制御装置は、前記コンポーネント情報が同一の演算タイプを有する複数のハードウェアコンポーネントの定義を含むときに、演算による遅延が最も小さいハードウェアコンポーネントを前記2以上のハードウェアコンポーネントの1つとして選択する
請求項1から3のいずれか1項に記載のハードウェア設計装置。 - ストリームデータを処理するためのパイプライン処理に使用可能な複数のハードウェアコンポーネントの定義を含むコンポーネント情報と、前記パイプライン処理で行われる演算が記述されたプログラムと、前記演算における入力及び出力の定義を少なくとも含む定義情報とを用いて、前記演算の内容及び前記定義情報に応じた2以上のハードウェアコンポーネントを前記コンポーネント情報に基づき特定するステップと、
特定された2以上のハードウェアコンポーネントが前記パイプライン処理を行うように合成されたパイプラインハードウェアのハードウェア記述言語による記述を生成するステップとをコンピュータに実行させるハードウェア設計用プログラムにおいて、
前記プログラムは、前記演算を行うプロセッサを識別子の記述により指定可能なストリームコンピューティング向けのプログラム言語で記述され、
前記制御装置は、前記プログラム中の演算に関して識別子の指定が記述されている場合には、当該演算によって得られる出力データの書き込みアドレスを示すカウンタ値を出力するカウンタを含む前記パイプラインハードウェアのハードウェア記述言語による記述を生成するステップを前記コンピュータに実行させ、
前記カウンタから出力されるカウンタ値は、前記演算の実行毎に変更される
ことを特徴とするハードウェア設計用プログラム。 - 前記プログラムに記述された前記パイプライン処理で実行される演算の構文解析を行うステップと、
前記演算の代入部分を幹ノードとし、この幹ノードの左側に前記パイプライン処理の出力データを示す葉ノードが置かれ、且つ幹ノードの右側が前記パイプライン処理に係る複数の入力データのそれぞれを示す葉ノードと前記複数の入力データを用いて前記出力データを算出するために使用される演算子を示す枝ノードとを含む二分木構造で表された抽象構文木の生成を試行するステップと、
前記抽象構文木が生成されないときにエラーを出力するステップと
を前記コンピュータに実行させる請求項5に記載のハードウェア設計用プログラム。 - 前記抽象構文木が生成されたときに、前記枝ノードに対する2つの入力のそれぞれにおける遅延が均等になるように遅延を挿入するステップと、
挿入した遅延を含む前記パイプラインハードウェアのハードウェア記述言語による記述を生成するステップと
を前記コンピュータに実行させる請求項6に記載のハードウェア設計用プログラム。 - 前記コンポーネント情報が同一の演算タイプを有する複数のハードウェアコンポーネントの定義を含むときに、演算による遅延が最も小さいハードウェアコンポーネントを前記2以上のハードウェアコンポーネントの1つとして選択するステップ
を前記コンピュータに実行させる請求項5から7のいずれか1項に記載のハードウェア設計用プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013105024A JP6249360B2 (ja) | 2013-05-17 | 2013-05-17 | ハードウェア設計装置,及びハードウェア設計用プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013105024A JP6249360B2 (ja) | 2013-05-17 | 2013-05-17 | ハードウェア設計装置,及びハードウェア設計用プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014225194A JP2014225194A (ja) | 2014-12-04 |
JP6249360B2 true JP6249360B2 (ja) | 2017-12-20 |
Family
ID=52123815
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013105024A Active JP6249360B2 (ja) | 2013-05-17 | 2013-05-17 | ハードウェア設計装置,及びハードウェア設計用プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6249360B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016114532A1 (ko) * | 2015-01-16 | 2016-07-21 | 서울대학교 산학협력단 | 프로그램 컴파일 장치 및 프로그램 컴파일 방법 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7107199B2 (en) * | 2002-10-31 | 2006-09-12 | Hewlett-Packard Development Company, L.P. | Method and system for the design of pipelines of processors |
JP2005018626A (ja) * | 2003-06-27 | 2005-01-20 | Ip Flex Kk | 並列処理システムの生成方法 |
JP5267243B2 (ja) * | 2009-03-17 | 2013-08-21 | 日本電気株式会社 | 動作記述変換装置、動作記述変換方法、およびプログラム |
-
2013
- 2013-05-17 JP JP2013105024A patent/JP6249360B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2014225194A (ja) | 2014-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Feist | Vivado design suite | |
US9612806B2 (en) | Verification of computer-executable code generated from a model | |
US8141011B1 (en) | Hardware description language code generation from a state diagram | |
TW539965B (en) | Automated processor generation system for designing a configurable processor and method for the same | |
US8463589B2 (en) | Modifying a virtual processor model for hardware/software simulation | |
JP5910108B2 (ja) | 高位合成装置,高位合成方法,高位合成プログラム,集積回路の設計方法 | |
US20120254830A1 (en) | Verification of computer-executable code generated from a model | |
US10296673B1 (en) | Mixed-language simulation | |
JPH07160744A (ja) | 自律進化型ハードウェア設計システム | |
US8881074B2 (en) | Device and method for refactoring hardware code | |
US10031732B1 (en) | Operation processing for high level synthesis | |
US20100070257A1 (en) | Methods, Systems, and Computer Program Products for Evaluating Electrical Circuits From Information Stored in Simulation Dump Files | |
JP6249360B2 (ja) | ハードウェア設計装置,及びハードウェア設計用プログラム | |
US9098661B1 (en) | Extensible platform for back-annotation of target-specific characterization onto a model of a hardware system | |
JP2022536648A (ja) | 平坦化されたネットリストからの挙動設計回復 | |
US10666255B1 (en) | System and method for compacting X-pessimism fixes for gate-level logic simulation | |
Sadasue et al. | LLVM-C2RTL: C/C++ based system level RTL design framework using LLVM compiler infrastructure | |
Morimoto et al. | Early development of visualization tool for instruction implement of microprocessor | |
US10997333B1 (en) | Methods, systems, and computer program product for characterizing an electronic design with a schematic driven extracted view | |
JP7184689B2 (ja) | 高位合成方法、高位合成装置、及び高位合成システム | |
JP2006190085A (ja) | デジタル回路のモデリング方法及び設計方法 | |
Ostroumov et al. | Generation of structural vhdl code with library components from formal event-b models | |
US8650019B1 (en) | Linking untimed data-path and timed control-path models | |
Sisto et al. | A design platform for flexible programmable DSP for automotive sensor conditioning | |
US11928409B2 (en) | Dynamic abstract generation and synthesis flow with area prediction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160516 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170512 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170704 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170901 |
|
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: 20171031 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20171113 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6249360 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |