JP6081832B2 - 動作合成装置及び動作合成プログラム - Google Patents

動作合成装置及び動作合成プログラム Download PDF

Info

Publication number
JP6081832B2
JP6081832B2 JP2013049820A JP2013049820A JP6081832B2 JP 6081832 B2 JP6081832 B2 JP 6081832B2 JP 2013049820 A JP2013049820 A JP 2013049820A JP 2013049820 A JP2013049820 A JP 2013049820A JP 6081832 B2 JP6081832 B2 JP 6081832B2
Authority
JP
Japan
Prior art keywords
information
description
loop
behavioral synthesis
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013049820A
Other languages
English (en)
Other versions
JP2014174940A (ja
Inventor
戸井 崇雄
崇雄 戸井
藤井 太郎
太郎 藤井
中村 典嗣
典嗣 中村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2013049820A priority Critical patent/JP6081832B2/ja
Publication of JP2014174940A publication Critical patent/JP2014174940A/ja
Application granted granted Critical
Publication of JP6081832B2 publication Critical patent/JP6081832B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、動作合成装置及び動作合成プログラムに関し、例えばループ記述を効果的にパイプライン化するのに適した動作合成装置及び動作合成プログラムに関する。
C言語等による回路の動作に関する記述(動作記述)から、RTL(Register Transfer Level)記述等の回路の構造に関する記述(構造記述)を自動生成する動作合成装置の開発が進んでいる。特に近年では、高いスループット(処理能力)のRTL記述を生成することが可能な動作合成装置が求められている。
関連する技術が特許文献1及び非特許文献1に開示されている。
特許文献1に開示されたパイプライン合成システムは、動作記述に含まれるループ記述から、パイプライン動作するRTL記述を生成している。それにより、このパイプライン合成システムは、実行サイクル数を低減して高いスループットのRTL記述を生成している。また、非特許文献1には、ループ記述のパイプライン化に関する技術が開示されている。
ところで、動作記述に含まれるループ記述をパイプライン化する場合において、あるループ処理でデータ書き込み処理が行われる前に次のループ処理でデータ読み出し処理が行われると、意図しないデータの読み出しが行われてしまう可能性がある。このような問題をデータハザードと称す。
このデータハザードの発生を防ぐため、例えば、動作合成のスケジューリング時にフォワーディング処理を施す等の対策が取られている(非特許文献2参照)。
しかしながら、フォワーディング処理を施す動作記述に対する遅延制約条件が厳しい場合や、フォワーディング処理を施す動作記述に複数の状態を要する要素が含まれる場合には、フォワーディング処理だけでは不十分な場合がある。そこで、特許文献2及び特許文献3では、さらなる対策を行っている。
特許文献2には、パイプラインのステージごとに実行を制御する技術が開示されている。また、特許文献3には、ループ処理を実際にパイプライン化してみてスケジューリング制約違反が生じるかどうかを検出する技術が開示されている。
その他、特許文献4には、C言語等による回路の動作に関する記述(ここでは設計記述)と、動作合成によりスケジューリングされた各状態と、の対応関係を出力する技術が開示されている。
特許第4770657号明細書 特開2009−238085号公報 特開2010−15339号公報 特開2011−108164号公報
Takao Toi, Noritsugu Nakamura, Yoshinosuke Kato, Toru Awashima, Kazutoshi Wakabayashi, "High-level Synthesis Challenges for Mapping a Complete Program on a Dynamically Reconfigurable Processor", IPSJ Transaction on System LSI Design Methodology, Feb, 2010, vol.3, pp91-104 デビット・A・パターソン、ジョン・L・ヘネシー著、"コンピュータの構成と設計"、日経BP社
例えば、特許文献3に開示された構成は、ループ記述を実際にパイプライン化してみてデータハザードが発生するか否かを検出するものであり、データハザード発生の恐れがあるにも関わらず回路規模等を犠牲にして自動的にデータハザードの発生を回避した場合には、データハザードを検出しない。つまり、この関連する技術は、データハザードを起こし得る全てのループ記述の情報を出力するものではない。このように、この関連する技術は、設計者に対してデータハザードに関する有効な情報を出力しないため、ループ記述を効果的にパイプライン化することができないという問題があった。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
一実施の形態によれば、動作合成装置は、回路の動作に関する記述に含まれるパイプライン化対象のループ記述内に記述された変数のうち、イタレーション間に依存性のある変数の情報を、その依存性を示す情報とともに表示装置に表示させる表示制御部、を備える。
一実施の形態によれば、動作合成プログラムは、回路の動作に関する記述に含まれるパイプライン化対象のループ記述内に記述された変数のうち、イタレーション間に依存性のある変数の情報を、その依存性を示す情報とともに表示装置に表示させる表示制御処理、を備える。
前記一実施の形態によれば、データハザードに関する有効な情報を出力することにより、ループ記述を効果的にパイプライン化することが可能な動作合成装置及び動作合成プログラムを提供することができる。
実施の形態1にかかる動作合成装置の構成例を示すブロック図である。 実施の形態1にかかる動作合成部を説明するための概念図である。 実施の形態1にかかる動作合成部の論理構成の一例を示すブロック図である。 パイプライン化を説明するための概念図である。 パイプライン化を説明するための概念図である。 パイプライン化を説明するための概念図である。 データハザードを説明するための概念図である。 フォワーディングを説明するための概念図である。 実施の形態1にかかる動作合成部の動作を示すフローチャートである。 ループカウンタ回路のソースコードを示す図である。 ループカウンタ回路の論理構成を示すブロック図である。 表示装置の具体的な表示内容の一例を示す図である。 表示装置の具体的な表示内容の一例を示す図である。 表示装置の具体的な表示内容の一例を示す図である。 表示装置の具体的な表示内容の一例を示す図である。 表示装置の具体的な表示内容の一例を示す図である。 実施の形態1にかかる動作合成装置のハードウエア構成の一例を示すブロック図である。 実施の形態1にかかるデータ処理システムの構成例を示すブロック図である。 実施の形態1にかかるデータ処理システムの構成例を示すブロック図である。
以下、図面を参照しつつ、実施の形態について説明する。なお、図面は簡略的なものであるから、この図面の記載を根拠として実施の形態の技術的範囲を狭く解釈してはならない。また、同一の要素には、同一の符号を付し、重複する説明は省略する。
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
さらに、以下の実施の形態において、その構成要素(動作ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等(個数、数値、量、範囲等を含む)についても同様である。
<実施の形態1>
図1は、実施の形態1にかかる動作合成装置10の構成例を示すブロック図である。本実施の形態にかかる動作合成装置10は、回路の動作に関する記述に含まれるパイプライン化対象のループ記述内に記述された変数のうち、イタレーション間に依存性のある変数の情報を、その依存性を示す情報とともに表示装置に表示させる。それにより、本実施の形態にかかる動作合成装置10は、データハザードに関する有効な情報を設計者に知らせることができるため、ループ記述を効果的にパイプライン化することができる。以下、具体的に説明する。
図1に示す動作合成装置10は、動作合成部100と、入出力制御部200と、を備える。なお、図1の例では、入力装置300及び表示装置400も示されている。
(動作合成部100)
動作合成部100は、C言語等の回路の動作に関する記述(動作記述:以下、ソースコードと称す)11を動作合成して、回路の構造に関する記述(構造記述;以下、RTL記述と称す)14を出力する部である。なお、RTL記述14は、図2の概念図にも示すように、例えば、状態遷移マシン(FSM;Finite State Machine)と、状態遷移マシン中の複数の状態のそれぞれに対応する複数のデータパスと、からなる。
(入力装置300)
入力装置300は、例えば、キーボード等の文字入力部と、マウスやタッチパッドなどの位置入力部と、によって構成される。文字入力部は、ソースコード11、合成制約12及び回路情報13等を入出力制御部200に入力する。位置入力部は、表示装置400の表示画面の任意の位置を指定(例えば、マウスでクリック)することにより、指定位置に対応する情報を入出力制御部200に入力する。
(入出力制御部200)
入出力制御部(表示制御部)200は、入力装置300からのソースコード11、合成制約12及び回路情報13等を動作合成部100に渡す。また、入出力制御部200は、動作合成部100による動作合成結果(RTL記述14の情報)及びデータハザードに関する情報(後述)を編集して表示装置400に渡す。
(表示装置400)
表示装置400は、動作合成部100による動作合成結果及び入出力制御部200によって編集されたデータハザードに関する情報を表示画面に表示する。
(動作合成部100の詳細)
続いて、図3を参照して、動作合成部100の詳細を説明する。図3は、本実施の形態にかかる動作合成部100の論理構成の一例を示すブロック図である。なお、本実施の形態では、動作合成部100によって生成されるRTL記述14が、その後オブジェクトコードに変換され、状態毎に動的に回路構成を変化させるアレイ型プロセッサ(動的再構成プロセッサ)20に適用される場合を例に説明する。
図3に示す動作合成部100は、DFG生成部101と、スケジューリング部102と、アロケーション部103と、FSM生成部104と、データパス生成部105と、パイプライン構成生成部106と、RTL記述生成部107と、パイプライン判定部108と、を有する。
DFG生成部101は、ソースコード11の構文解析をして、演算等の各種処理機能を表す節点と、データの流れを表す枝と、からなるDFG(Data Flow Graph)を作成する。
パイプライン判定部108は、ソースコード11に含まれるループ記述のそれぞれについてパイプライン化するか否かを判定する。本実施の形態では、パイプライン判定部108は、ユーザーによって指定されたループ記述を、パイプライン化対象のループ記述と判定している。なお、パイプライン判定部108は、各ループ記述についてパイプライン化するか否かを自動で判定する構成であっても良い。
(パイプライン化について)
以下、図4A〜図4Cを参照して、ループ記述のパイプライン化について簡単に説明する。図4Aは、ループ記述(状態数=4)をパイプライン化しない場合の処理内容を示す概念図である。図4Bは、ループ記述の4状態を2状態に折り畳んでパイプライン化した場合の処理内容を示す概念図である。図4Cは、ループ記述の4状態を1状態に折り畳んでパイプライン化した場合の処理内容を示す概念図である。なお、本例では、パイプライン段数が4段、ループ回数が10回であるものとする。また、本例では、1ステージ(一つの処理のまとまり)を実行するために1実行サイクル(クロックサイクル)が必要であるものとする。
図4Aに示すように、ループ記述(状態数=4)をパイプライン化しない場合、まず、1回目のループ処理である4ステージA1,B1,C1,D1が順に実行される。その後、2回目のループ処理である4ステージA2,B2,C2,D2が順に実行される。このような処理が、10回目のループ処理まで繰り返される。その結果、ループ処理を実行するために必要な実行サイクル数は、40実行サイクルとなる。
図4Bに示すように、ループ記述の4状態を2状態に折り畳んでパイプライン化した場合、まず、1回目のループ処理である4ステージA1,B1,C1,D1が順に実行される。また、1回目のループ処理開始から2ステップ(2実行サイクル)遅れて、2回目のループ処理である2ステージA2,B2,C2,D2が順に実行される。同様にして、直前のループ処理開始から2ステップ(2実行サイクル)遅れて、3〜10回目の各ループ処理の4ステージが順に実行される。それにより、例えば、2ステージC1,A2や2ステージD1,B2がそれぞれ並列実行される。また、例えば、2ステージC2,A3や2ステージD2,B3がそれぞれ並列実行される。その結果、ループ処理を実行するために必要な実行サイクル数は、18実行サイクルに初期化(エピローグ)及び後処理(プロローグ)分を加えた実行サイクル数のみとなる。
図4Cに示すように、ループ記述の4状態を1状態に折り畳んでパイプライン化した場合、まず、1回目のループ処理である4ステージA1,B1,C1,D1が順に実行される。また、1回目のループ処理開始から1ステップ(1実行サイクル)遅れて、2回目のループ処理である4ステージA2,B2,C2,D2が順に実行される。同様にして、直前のループ処理開始から1ステップ(1実行サイクル)遅れて、3〜10回目の各ループ処理の4ステージが順に実行される。それにより、例えば、4ステージD1,C2,B3,A4や4ステージD2,C3,B4,A5が並列実行される。その結果、ループ処理を実行するために必要な実行サイクル数は、7実行サイクルに初期化(エピローグ)及び後処理(プロローグ)分を加えた実行サイクル数のみとなる。なお、ループ記述の状態数が1状態に折り畳まれた場合、ループ記述の他に記述が無ければ、初期化や後処理を除いて状態遷移マシンが生成されないこととなる。
上記のように、ループ記述をパイプライン化すると、パイプライン化しない場合と比較して、実行サイクル数が抑制される。したがって、パイプライン化するループ記述に対して短い遅延(厳しい遅延制約)を設定して動作合成が行われれば、パイプライン段数が増加するが、パイプライン化により実行サイクル数の増加が抑制され、かつ、1ステップ当たりの処理時間が短縮されるため、結果としてスループットは向上する。
(データハザードについて)
ただし、ループ記述をパイプライン化する場合には、データハザードが発生するおそれがあるためそれを回避する必要がある。以下、図5を参照して、データハザードについて簡単に説明する。本例では、図4Cと同条件であると仮定して説明する。
まず、1回目のループ処理である4ステージA1(Read)、B1(Write)、C1(Read)、D1(Read)が順に実行される。また、1回目のループ処理開始から1ステップ遅れて、2回目のループ処理である4ステージA2(Read)、B2(Write)、C2(Read)、D2(Read)が順に実行される。また、2回目のループ処理開始から1ステップ遅れて、3回目のループ処理である4ステージA3(Read)、B3(Write)、C3(Read)、D3(Read)が順に実行される。また、3回目のループ処理開始から1ステップ遅れて、4回目のループ処理である4ステージA4(Read)、B4(Write)、C4(Read)、D4(Read)が順に実行される。ここで、例えば、ステージA2のデータ読み出し処理は、ステージB1のデータ書き込み処理よりも先に行われる可能性があるため、意図しないデータを読み出してしまう可能性がある。このような問題をデータハザードと称す。
(フォワーディングについて)
そのため、例えば、動作合成のスケジューリング時にフォワーディング(バイパシング)処理を施すことにより、ステージA2のデータ読み出し処理がステージB1のデータ書き込み処理よりも先に実行されないようにする。
図6は、フォワーディングを説明するための図である。図6の例では、1状態目及び2状態目がマージされて新たな1状態目としてスケジューリングされている。より具体的には、1回目のループ処理のうちステージA1,B1がマージされて1ステージとして実行され、2回目のループ処理のうちステージA2,B2がマージされて1ステージとして実行され、3回目のループ処理のうちステージA3,B3がマージされて1ステージとして実行され、4回目のループ処理のうちステージA4,B4がマージされて1ステージとして実行される。さらに、あるループ処理でのデータ書き込み処理(例えば、ステージB1のデータ書き込み処理)が完了した後に、次のループ処理でのデータ読み出し処理(例えば、ステージA2のデータ読み出し処理)が行われるようにスケジューリングされている。このようなフォワーディング処理を施すことにより、データハザードが解消される。
図3に戻り、スケジューリング部102は、合成制約12及び回路情報13に基づいてDFG中の複数の節点をそれぞれいつ実行させるか決定(スケジューリング)し、CDFG(Control Data Flow Graph)として出力する。アロケーション部103は、合成制約12及び回路情報13に基づいて、CDFG中の枝で表されるデータを一時記憶するためのレジスタ及びメモリユニットを決定するとともに、CDFG中の節点で表される演算をどの演算ユニットを用いて行うかを決定する。
なお、合成制約12には、回路規模、資源量、遅延制約(タイミング制約;クロック周波数)、パイプライン化対象のループ記述の情報等が設定されている。また、回路情報13には、例えば、後述するアレイ型プロセッサ30aに設けられた各資源(演算ユニット,レジスタ,メモリユニット等)の規模及び遅延等の情報が設定されている。
次に、FSM生成部104は、スケジューリング部102及びアロケーション部103の結果に基づき、状態遷移マシン(FSM;Finite State Machine)を生成する。また、データパス生成部105は、スケジューリング部102及びアロケーション部103の結果に基づき、状態遷移マシンに含まれる複数の状態のそれぞれに対応する複数のデータパスを生成する。さらに、パイプライン構成生成部106は、パイプライン化対象のループ記述に含まれる複数の状態を折り畳んでパイプライン化する。
RTL記述生成部107は、上記した状態遷移マシンと、当該状態遷移マシンに含まれる複数の状態のそれぞれに対応する複数のデータパスと、をRTL記述14として出力する。
このようにして、動作合成部100は、ソースコード11から状態遷移マシンと状態遷移マシン中の複数の状態のそれぞれに対応する複数のデータパスとを生成し、RTL記述14として出力する。
(フローチャート)
続いて、図7を参照して、動作合成部100の動作について説明する。図7は、動作合成部100の動作を示すフローチャートである。
まず、動作合成部100は、ソースコード11を受け取って構文解析を行った後(S101)、動作記述言語レベルの最適化を行い(S102)、各種処理機能を表す接点とデータの流れを表す枝とを割り当てて(S103)、DFGを作成する(S104)。
次に、動作合成部100は、ソースコード11に含まれるループ記述のそれぞれについてパイプライン化するか否かを判定した後(S105)、合成制約12及び回路情報13に従ってスケジューリング(S106)及びアロケーション(S107)を行う。
次に、動作合成部100は、スケジューリング及びアロケーションの結果に基づき、状態遷移マシンと、当該状態遷移マシンに含まれる複数の状態のそれぞれに対応する複数のデータパスと、を生成する(S108,S109)。さらに、動作合成部100は、パイプライン化対象のループ記述に含まれる複数の状態を折り畳んでパイプライン化する(S110)。その後、動作合成部100は、状態遷移マシン及び複数のデータパスに対し、RTレベルや論理レベルの最適化を行った後(S111)、RTL記述14として出力する(S112)。
このようにして、動作合成部100は、ソースコード11から状態遷移マシンと状態遷移マシン中の複数の状態のそれぞれに対応する複数のデータパスとを生成し、RTL記述14として出力する。
(フォワーディング処理における問題点)
なお、フォワーディング処理を施した場合でも、データハザードの発生を防ぐことができない場合がある。以下では、フォワーディング処理における問題点について説明する。
データハザードは、既に図5等で説明したように、あるループ処理でのデータ書き込み処理と、次のループ処理でのデータ読み出し処理と、の順序が逆転してしまうことにより発生する。したがって、データハザードは、変数を自己参照する記述が含まれているループ記述をパイプライン化する場合に発生しやすい。具体的には、データハザードは、変数を自己参照するループカウンタ回路等の動作記述をパイプライン化する場合に発生しやすい。
図8A及び図8Bは、それぞれループカウンタ回路500のソースコード及びその論理構成を示す図である。図8Bに示すように、ループカウンタ回路500は、セレクタ(SEL)501と、加算回路502と、比較回路503と、レジスタ504〜506と、を有する。レジスタ504〜506には、それぞれ、値1、x(任意の自然数)、xの最大値(max)が格納されている。
加算回路502は、値1と値x(初期値0)とを加算して加算結果"1"を出力する。セレクタ501は、ループ処理を実行中、加算回路502の加算結果"1"を選択して出力する。レジスタ505は、クロックに同期してセレクタ501の出力"1"を取り込み出力する。それにより、加算回路502は、値1と値x(値1)とを加算して加算結果"2"を出力する。このような動作が繰り返され、x>maxになると、比較回路503は、出力値を初期値から他の値に切り替える。それにより、ループ処理が終了する。なお、ループ処理が行われていない場合、セレクタ501は、レジスタ505の出力をそのままその当該レジスタの入力に供給する。
ここで、動作合成時のスケジューリングにて、ループカウンタ回路500のループ記述に対してフォワーディング処理を施すと、レジスタ505の書き込み及び読み出しが折り畳む状態数以内にスケジューリングされることとなる(なお、以下の例では、説明を分かりやすくするため、レジスタ505の書き込み処理及び読み出し処理が同一状態にスケジューリングされる場合を例に説明する)。そのため、加算回路502やセレクタ501の前後段にフリップフロップ(レジスタ)を挿入してパイプライン段数を増加させることはできない(但し、比較回路503の前後段にフリップフロップ(レジスタ)を挿入することは可能)。つまり、このループ記述は、1実行サイクル内で動作する組み合わせ回路として動作合成されることとなる。
このループカウンタ回路500のパイプライン化では、遅延制約が緩い場合、上記したようにフォワーディング処理を施すことによりデータハザードの発生を防ぐことができる。しかしながら、遅延制約が厳しい場合、加算回路502やセレクタ501等の遅延の影響によりフォワーディング処理を施すことができず、データハザードの発生を防ぐことができない可能性がある。
また、ループカウンタ回路500以外の回路であっても、あるレジスタに対するデータ読み出し処理からデータ書き込み処理までの間に、同期メモリや同期演算器のような複数の実行サイクルを要する要素の処理が含まれる場合、指定された状態内にループ記述をパイプライン化することができない可能性がある。つまり、このような回路のパイプライン化では、フォワーディング処理を施すことができず、データハザードの発生を防ぐことができない可能性がある。
さらに、あるレジスタに対するデータ読み出し処理及びデータ書き込み処理の回数が多い場合や、データハザードを起こし得る動作記述が多い場合、スケジューリング時にすべての変数(レジスタ)に対してフォワーディング処理を施そうとすると矛盾が生じてしまう可能性がある。つまり、このような回路のパイプライン化では、フォワーディング処理を施すことができず、データハザードの発生を防ぐことができない可能性がある。
そこで、本実施の形態にかかる動作合成装置10は、パイプライン化対象のループ記述内に記載された変数のうち、データハザードを起こし得る(イタレーション間に依存性のある)変数の情報を、その依存性を示す情報とともに表示装置400に表示させる。それにより、本実施の形態にかかる動作合成装置10は、データハザードに関する有効な情報を設計者に知らせることができるため、ループ記述を効果的にパイプライン化することができる。
なお、本実施の形態にかかる動作合成装置10では、例えば、動作合成部100が、スケジューリング前(例えばパイプライン判定時)にデータハザードに関連する情報を入出力制御部200に渡し、入出力制御部200が、動作合成部100から受け取ったデータハザードに関連する情報に基づいて上記した変数及び依存性を示す情報を表示装置400に表示させる。さらに、入出力制御部200は、動作合成部100から受け取ったデータハザードに関連する情報に基づいて、イタレーション間に依存性のある変数に対応させてソースコードを表示させたり、演算処理やメモリアクセス処理などの情報を表示させたりしてもよい。
(表示装置400の表示内容)
図9〜図13を参照して、表示装置400の具体的な表示内容を説明する。図9〜図13は、表示装置400の具体的な表示内容の一例を示す図である。
図9〜図13の例では、表示装置400の画面左側(紙面左側)の動作記述表示部にソースコード(動作記述)が表示されている。また、表示装置400の画面右側(紙面右側)の依存性表示部には、パイプライン化対象のループ記述内に記載された変数のうちイタレーション間に依存性のある変数の情報(図中の変数)が、その依存性を示す情報(図中の矢印)とともに表示されている。より具体的には、依存性表示部には、パイプライン化対象のループ記述内に記述された変数のうち、一つのループ処理内においてデータ読み出し後にデータ書き込みが行われる変数の情報(図中の変数)が、当該データ読み出し及び当該データ書き込みの依存性を示す情報(図中の矢印)とともに表示されている。換言すると、ある一つのループ処理内においデータ書き込みが行われ、かつ、次のループ処理内においてデータ読み出しが行われる変数の情報(図中の変数)が、当該データ読み出し及び当該データ書き込みの依存性を示す情報(図中の矢印)とともに表示されている。
なお、図9〜図13の例では、依存性表示部に表示される変数の情報は、動作記述表示部に表示されるソースコードの対応する変数と同じ行に表示されている。また、図9〜図13の例では、依存性表示部に表示される変数のうち、矢印を挟んで左側の変数が当該変数へのデータの書き込みを示し、矢印を挟んで右側の変数が当該変数からのデータの読み出しを示している。そして、矢印は、データの書き込みからデータの読み出しまでの依存性を示している。なお、この表示方式は、プログラムの記述において左辺が代入、右辺が読み出しであることに対応している。したがって、例えば、変数及び矢印の表示は左右逆であってもよい。
図9の例では、依存性表示部において、矢印を挟んで左側の変数iは、"i++"、即ち"i<=i+1"の左辺(書き込み側)の変数iを示し、矢印を挟んで右側の変数iは、"i++"、即ち"i<=i+1"の右辺(読み出し側)の変数iを示している。また、矢印を挟んで左側上段の変数countは、"count=7"の左辺(書き込み側)の変数countを示し、矢印を挟んで左側下段の変数countは、"count−−"、即ち"count<=count−1"の左辺(書き込み側)の変数countを示し、矢印を挟んで右側下段の変数countは、"count−−"、即ち"count<=count−1"の右辺(読み出し側)の変数countを示し、矢印を挟んで右側上段の変数countは、"count==0"の左辺(読み出し側)の変数countを示している。
次に、図10の例では、イタレーション間に依存性のある変数に対するデータ読み書きの間に演算処理又はメモリアクセス処理が行われる場合、当該演算処理又は当該メモリアクセスに関する情報(図中の+、−、==)が依存性表示部にさらに表示されている。その他、入出力ポートへのアクセス処理に関する情報が依存性表示部にさらに表示されてもよい。さらに、動作合成エラーの原因となった箇所が太字や赤線で強調表示されてもよい。
次に、図11の例では、依存性表示部に表示されたイタレーション間に依存性のある変数の情報(図中の変数)及びその依存性を示す情報(図中の矢印)の何れかを、マウスなどの位置入力部で指定できるようになっている。それにより、表示装置400には、例えば、指定された変数の情報又はその依存性を示す情報に対応するRTL記述の情報(例えば、回路図)、文字情報(回路の規模、遅延情報を含む)等が表示される。なお、遅延がもっとも長いパスはクリティカルパスになるため、該当箇所が予め太字や赤線で強調表示されていてもよい。
次に、図12には、パイプライン化対象のループ記述の他の例が示されている。このパイプライン化対象のループ記述内には、展開対象のループ記述が2つ含まれている。このような記述の場合、ソースコードのみを見ただけではイタレーション間の依存性がどこに存在するのかわかりにくい。そこで、図13に示すように、展開対象の2つのループ記述を展開してみる。そうすると、変数inpix[1],inpix[2]では、データ読み出し後にデータ書き込みが行われるため、イタレーション間に依存性が存在することがわかる。また、inpix[3]では、条件分岐(if)のthen側の条件でデータが書き込まれる前に条件分岐のelse側でデータが読み出される可能性があるため、やはりイタレーション間に依存性が存在することがわかる。
このように、本実施の形態にかかる動作合成装置10は、パイプライン化対象のループ記述内に記載された変数のうち、データハザードを起こし得る(イタレーション間に依存性のある)変数の情報を、その依存性を示す情報とともに表示装置400に表示させる。それにより、本実施の形態にかかる動作合成装置10は、データハザードに関する有効な情報を設計者に知らせることができるため、ソースコードを修正して動作合成エラーを回避したり、性能低下を引き起こす記述を特定して修正したりして、ループ記述を効果的にパイプライン化することができる。
(動作合成装置10のハードウエア構成例)
なお、本実施の形態にかかる動作合成装置10は、例えば、汎用的なコンピュータシステムにより実現可能である。以下、図14を用いて簡単に説明する。
図14は、本実施の形態にかかる動作合成装置10のハードウエア構成の一例を示すブロック図である。コンピュータ110は、例えば、制御装置であるCPU(Central Processing Unit)111と、RAM(Random Access Memory)112と、ROM(Read Only Memory)113と、外部とのインターフェースであるIF(Inter Face)114と、不揮発性記憶装置の一例であるHDD(Hard Disk Drive)115と、を備える。さらに、コンピュータ110には、キーボードやマウス等の入力装置300やディスプレイ等の表示装置400が設けられている。
HDD115には、OS(Operating System)(不図示)と、動作記述情報116と、構造記述情報117と、動作合成プログラム118と、が記憶されている。動作記述情報116は、回路の動作に関する情報であって、図3におけるソースコード(動作記述)11に相当する。構造記述情報117は、回路の構造に関する情報であって、図3におけるRTL記述14に相当する。動作合成プログラム118は、本実施の形態にかかる動作合成処理が実装されたコンピュータプログラムである。
CPU111は、コンピュータ110における各種処理、RAM112,ROM113,IF114及びHDD115へのアクセス等を制御する。コンピュータ110は、CPU111がHDD115に記憶されたOS及び動作合成プログラム118を読み込み、実行する。これにより、コンピュータ110は、本実施の形態にかかる動作合成装置10を実現する。
本実施の形態では、動作合成部100によって生成されるRTL記述14が、その後オブジェクトコードに変換され、状態毎に動的に回路構成を変化させるアレイ型プロセッサ(動的再構成プロセッサ)に適用される場合を例に説明したが、これに限られない。動作合成部100によって生成されるRTL記述14は、その後論理合成や配置配線を経てレイアウトデータに変換された後、半導体集積回路(LSI)や、FPGA及び動的再構成プロセッサ等の書き換え可能なプログラマブルデバイス向けの回路に適用されてもよい。以下、簡単に説明する。
(データ処理システム1a)
図15Aは、動作合成装置10を含むデータ処理装置と、その出力結果が適用される処理装置と、からなるデータ処理システムの第1の構成例を示すブロック図である。
図15Aに示すデータ処理システム1aは、動作合成装置10及びオブジェクトコード生成装置20aからなるデータ処理装置と、アレイ型プロセッサ(FPGA及び動的再構成プロセッサ等の書き換え可能なプログラマブルデバイス向けの回路)30aと、を備える。
オブジェクトコード生成装置20aは、動作合成装置10から出力されたRTL記述14に対してテクノロジマッピングや配置配線等を行ってネットリストを生成した後、当該ネットリストをバイナリ変換してオブジェクトコード15aとして出力する。
アレイ型プロセッサ30aは、オブジェクトコード15aに基づいて状態毎に動的に回路構成を切り替えながら、外部から供給される処理データに演算処理を施し結果データとして出力する。
(データ処理システム1b)
図15Bは、動作合成装置10を含むデータ処理装置と、その出力結果が適用される処理装置と、からなるデータ処理システムの第2の構成例を示すブロック図である。
図15Bに示すデータ処理システム1bは、動作合成装置10及びレイアウト装置20bからなるデータ処理装置と、半導体集積回路30bと、を備える。
レイアウト装置20bは、動作合成装置10から出力されたRTL記述14に対して論理合成や配置配線等を行ってレイアウトデータ15bを生成する。
半導体集積回路30bは、レイアウトデータ15bが適用された回路であり、外部から供給される処理データに演算処理を施し結果データとして出力する。
以上のように、上記実施の形態にかかる動作合成装置は、パイプライン化対象のループ記述内に記載された変数のうち、データハザードを起こし得る(イタレーション間に依存性のある)変数の情報を、その依存性を示す情報とともに表示装置に表示させる。それにより、上記実施の形態にかかる動作合成装置は、データハザードに関する有効な情報を設計者に知らせることができるため、ソースコードを修正して動作合成エラーを回避したり、性能低下を引き起こす記述を特定して修正したりして、ループ記述を効果的にパイプライン化することができる。
また、上記実施の形態にかかる動作合成装置は、スケジューリングを行う前に、データハザードを起こし得る変数の情報を表示装置に表示させるため、潜在的な問題箇所を早期に把握することができる。
また、上記実施の形態にかかる動作合成装置は、イタレーション間に依存性がある変数の情報を、その依存性を示す情報とともに表示装置に表示させるため、ソースコードの修正箇所を特定しやすい。また、依存性が可視化されるため、修正内容の決定も比較的容易である。例えば、データ読み書きの順序を修正したり、データ書き込みとデータ読み出しとで別の変数を使用したりすればよい。また、依存性の複雑度も可視化されるため、複雑な依存性を持つ変数が輻輳している場合にはアルゴリズム自体を書き換える等の対策をとることができる。
その他、設計者は、例えば、複数のカウンタ回路を一つに纏めることによってフォワーディング処理を施す記述自体を減らすことが可能になる。また、設計者は、フォワーディング処理を施してもクリティカルパスの短縮や実行サイクルを減らすことが難しい動作記述に対して、パイプライン化以外の方法で並列性を高めるように最適化ことも可能になる。
このように、上記実施の形態にかかる動作合成装置では、設計者による動作記述の変更を効率良く行うことが可能となる。
なお、上記実施の形態にかかる動作合成装置は、任意の処理を、CPU(Central Processing Unit)にコンピュータプログラムを実行させることにより実現することも可能である。
上述の例において、プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、DVD(Digital Versatile Disc)、BD(Blue-ray(登録商標) Disc)、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
(従来技術との差異)
特許文献3に開示された構成は、ループ記述を実際にパイプライン化してみてデータハザードが発生するか否かを検出するものであり、例えばデータハザード発生の恐れがあるにも関わらず回路規模等を犠牲にして自動的にデータハザードの発生を回避した場合には、データハザードを検出しない。つまり、この関連する技術は、データハザードを起こし得る全てのループ記述の情報を出力するものではない。このように、この関連する技術は、設計者に対してデータハザードに関する有効な情報を出力しないため、ループ記述を効果的にパイプライン化することができないという問題がある。さらに、この関連する技術は、変数の依存性の情報を出力しないため、設計者による動作記述の変更を効率良く行うことができないという問題がある。それに対し、上記実施の形態にかかる動作合成装置では、このような問題は生じない。
また、特許文献2に開示された構成は、フォワーディング処理を施してもデータハザードの発生を避けられないような記述に対しては、正常に動作できるようになるまで次の動作に進むのを待つような動作合成を自動的に行っている。そのため、この関連する技術では、性能を改善しようとしても、データハザードを起こし得る動作記述を特定することが困難である。それに対し、上記実施の形態にかかる動作合成装置では、このような問題は生じない。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
1a,1b データ処理システム
10 動作合成装置
11 ソースコード
12 合成制約
13 回路情報
14 RTL記述
15a オブジェクトコード
15b レイアウトデータ
20a オブジェクトコード生成装置
20b 論理合成及びレイアウト装置
30a アレイ型プロセッサ
30b LSI
100 動作合成部
101 DFG生成部
102 スケジューリング部
103 アロケーション部
104 FSM生成部
105 データパス生成部
106 パイプライン構成生成部
107 RTL記述生成部
108 パイプライン判定部
110 コンピュータ
111 CPU
112 RAM
113 ROM
114 IF
115 HDD
116 動作記述情報
117 構造記述情報
118 動作合成プログラム
200 入出力制御部
300 入力装置
400 表示装置
500 ループカウンタ回路
501 セレクタ
502 加算回路
503 比較回路
504〜506 レジスタ

Claims (9)

  1. 回路の動作に関する記述を動作合成して、回路の構造に関する記述を生成する動作合成部と、
    前記回路の動作に関する記述に含まれるパイプライン化対象のループ記述内に記述された変数のうち、イタレーション間に依存性のある変数の情報を、その依存性を示す情報とともに表示装置に表示させる表示制御部と、を備え
    前記表示制御部は、パイプライン化対象のループ記述内に記述された変数のうち、一つのループ処理内においてデータ読み出しが行われた後にデータ書き込みが行われる変数の情報を、当該データ読み出し及び当該データ書き込みの依存性を示す情報とともに前記表示装置に表示させ、
    前記表示制御部は、前記データ読み出し及び前記データ書き込みの間に演算処理又はメモリアクセス処理が行われる場合、当該演算処理又は当該メモリアクセス処理に関する情報をさらに前記表示装置に表示させる、動作合成装置。
  2. 前記表示制御部は、パイプライン化対象のループ記述内に記述された変数のうち、一つのループ処理内においてデータ読み出しが行われた後にデータ書き込みが行われる変数の情報を、当該データ読み出し及び当該データ書き込みの依存性を示す情報とともに前記表示装置に表示させる、請求項1に記載の動作合成装置。
  3. 前記表示制御部は、前記変数の情報及びその依存性を示す情報のうち指定された変数の情報又はその依存性を示す情報に対応する前記回路の構造に関する記述の情報を前記表示装置に表示させる、請求項1に記載の動作合成装置。
  4. 前記表示制御部は、前記回路の動作に関する記述を、前記変数の情報に対応させてさらに前記表示装置に表示させる、請求項1に記載の動作合成装置。
  5. 前記表示装置をさらに備えた、請求項1〜の何れか一項に記載の動作合成装置。
  6. 回路の動作に関する記述を動作合成して、回路の構造に関する記述を生成する動作合成処理と、
    前記回路の動作に関する記述に含まれるパイプライン化対象のループ記述内に記述された変数のうち、イタレーション間に依存性のある変数の情報を、その依存性を示す情報とともに表示装置に表示させる表示制御処理と、をコンピュータに実行させる動作合成プログラムであって、
    前記表示制御処理は、パイプライン化対象のループ記述内に記述された変数のうち、一つのループ処理内においてデータ読み出しが行われた後にデータ書き込みが行われる変数の情報を、当該データ読み出し及び当該データ書き込みの依存性を示す情報とともに前記表示装置に表示させ、
    前記表示制御処理は、前記データ読み出し及び前記データ書き込みの間に演算処理又はメモリアクセス処理が行われる場合、当該演算処理又は当該メモリアクセス処理に関する情報をさらに前記表示装置に表示させる、動作合成プログラム。
  7. 前記表示制御処理は、パイプライン化対象のループ記述内に記述された変数のうち、一つのループ処理内においてデータ読み出しが行われた後にデータ書き込みが行われる変数の情報を、当該データ読み出し及び当該データ書き込みの依存性を示す情報とともに前記表示装置に表示させる、請求項に記載の動作合成プログラム。
  8. 前記表示制御処理は、前記変数の情報及びその依存性を示す情報のうち指定された変数の情報又はその依存性を示す情報に対応する前記回路の構造に関する記述の情報を前記表示装置に表示させる、請求項に記載の動作合成プログラム。
  9. 前記表示制御処理は、前記回路の動作に関する記述を、前記変数の情報に対応させてさらに前記表示装置に表示させる、請求項に記載の動作合成プログラム。
JP2013049820A 2013-03-13 2013-03-13 動作合成装置及び動作合成プログラム Active JP6081832B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013049820A JP6081832B2 (ja) 2013-03-13 2013-03-13 動作合成装置及び動作合成プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013049820A JP6081832B2 (ja) 2013-03-13 2013-03-13 動作合成装置及び動作合成プログラム

Publications (2)

Publication Number Publication Date
JP2014174940A JP2014174940A (ja) 2014-09-22
JP6081832B2 true JP6081832B2 (ja) 2017-02-15

Family

ID=51696056

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013049820A Active JP6081832B2 (ja) 2013-03-13 2013-03-13 動作合成装置及び動作合成プログラム

Country Status (1)

Country Link
JP (1) JP6081832B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10599803B2 (en) 2016-03-10 2020-03-24 Mitsubishi Electric Corporation High level synthesis apparatus, high level synthesis method, and computer readable medium
WO2017158785A1 (ja) * 2016-03-17 2017-09-21 三菱電機株式会社 高位合成装置、高位合成方法及び高位合成プログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002222228A (ja) * 2001-01-26 2002-08-09 Toshiba Corp 高位合成システム及び高位合成方法
JP2006285865A (ja) * 2005-04-04 2006-10-19 Nec Electronics Corp レジスタ転送レベル記述と動作記述間の対応関係特定方法、装置及びプログラム
JP2007287044A (ja) * 2006-04-19 2007-11-01 Toshiba Corp 設計支援装置
JP5348065B2 (ja) * 2010-05-06 2013-11-20 富士通株式会社 検証支援プログラム、検証支援装置および検証支援方法
JP5644344B2 (ja) * 2010-10-05 2014-12-24 富士通セミコンダクター株式会社 設計データ生成装置、設計データ生成方法及びプログラム

Also Published As

Publication number Publication date
JP2014174940A (ja) 2014-09-22

Similar Documents

Publication Publication Date Title
JP5985900B2 (ja) 動作合成装置、動作合成装置を備えたデータ処理システム、及び、動作合成プログラム
JP2014016894A (ja) 並列演算装置、並列演算装置を備えたデータ処理システム、及び、データ処理プログラム
US7913194B1 (en) Systems and methods for super-threading
US20070168902A1 (en) Method for high-level synthesis of semiconductor integrated circuit
US10691856B1 (en) System design flow with runtime customizable circuits
US10289093B1 (en) Runtime adaptive generator circuit
JP5450840B2 (ja) プログラムの実行性能評価のためのテストデータ生成方法
JP6081832B2 (ja) 動作合成装置及び動作合成プログラム
US20110295536A1 (en) Clock jitter analyzing method and apparatus
JP5040758B2 (ja) シミュレーション装置、シミュレーション方法及びプログラム
KR102611888B1 (ko) 스위칭 액티비티에 기초한 반도체 장치의 배치 방법 및 이에 의해 제조된 반도체 장치
JP5644344B2 (ja) 設計データ生成装置、設計データ生成方法及びプログラム
JP2010073136A (ja) ホールドタイムエラーの収束方法、収束装置、及び収束プログラム
US6505340B2 (en) Circuit synthesis method
US6532584B1 (en) Circuit synthesis method
JP5009243B2 (ja) 動作合成装置、動作合成方法、プログラム、記録媒体、および半導体集積回路の製造方法
JP5338919B2 (ja) 集積回路の消費電力算出方法、消費電力算出プログラム及び消費電力算出装置
JP2010033540A (ja) レジスタ転送レベル構造の変更量見積もり装置及び方法
JP4779908B2 (ja) 回路設計支援システム、回路設計支援方法及びプログラム
JP5347995B2 (ja) 動作合成装置、動作合成方法及びプログラム
JP6807721B2 (ja) 状態遷移編集装置および状態遷移編集プログラム
US20120112827A1 (en) Apparatus for semiconductor integrated circuit, design method for semiconductor integrated circuit, and semiconductor integrated circuit
JP6317603B2 (ja) 情報処理装置、情報処理装置の制御方法及びプログラム
JP6559995B2 (ja) 半導体集積回路の設計支援装置及び設計支援方法
JP4268620B2 (ja) 回路記述言語の等価性検証方法及び等価性検証装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150810

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160719

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160912

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170119

R150 Certificate of patent or registration of utility model

Ref document number: 6081832

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250