JP2014006650A - 動作合成装置、動作合成方法、動作合成装置を備えたデータ処理システム、及び、動作合成プログラム - Google Patents

動作合成装置、動作合成方法、動作合成装置を備えたデータ処理システム、及び、動作合成プログラム Download PDF

Info

Publication number
JP2014006650A
JP2014006650A JP2012141058A JP2012141058A JP2014006650A JP 2014006650 A JP2014006650 A JP 2014006650A JP 2012141058 A JP2012141058 A JP 2012141058A JP 2012141058 A JP2012141058 A JP 2012141058A JP 2014006650 A JP2014006650 A JP 2014006650A
Authority
JP
Japan
Prior art keywords
unit
data
register
arithmetic
behavioral synthesis
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.)
Granted
Application number
JP2012141058A
Other languages
English (en)
Other versions
JP5985900B2 (ja
Inventor
Takao Toi
崇雄 戸井
Taro Fujii
太郎 藤井
Noritsugu Nakamura
典嗣 中村
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 JP2012141058A priority Critical patent/JP5985900B2/ja
Priority to US13/922,945 priority patent/US9201996B2/en
Publication of JP2014006650A publication Critical patent/JP2014006650A/ja
Priority to US14/922,435 priority patent/US20160042099A1/en
Application granted granted Critical
Publication of JP5985900B2 publication Critical patent/JP5985900B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist

Landscapes

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

Abstract

【課題】高いスループットのRTL記述を生成することが可能な動作合成装置を提供すること。
【解決手段】一実施の形態によれば、動作合成装置100は、ループ記述をパイプライン化するか否かを判定するパイプライン判定部108と、パイプライン化するループ記述に対してパイプライン化しない場合よりも厳しい遅延制約を設定して動作合成を行う合成部と、を備える。それにより、動作合成装置100は、従来よりも高いスループットのRTL記述を生成することができる。
【選択図】図1

Description

本発明は動作合成装置、動作合成方法、動作合成装置を備えたデータ処理システム、及び、動作合成プログラムに関する。
C言語等による回路の動作に関する記述(動作記述)から、RTL(Register Transfer Level)記述等の回路の構造に関する記述(構造記述)を自動生成する動作合成装置の開発が進んでいる。特に近年では、高いスループット(処理能力)のRTL記述を生成することが可能な動作合成装置が求められている。
関連する技術が特許文献1に開示されている。特許文献1に開示されたパイプライン合成システムは、動作記述に含まれるループ記述から、パイプライン動作するRTL記述を生成している。それにより、このパイプライン合成システムは、実行サイクル数を低減して高いスループットのRTL記述を生成している。
上記した動作合成装置によって生成されたRTL記述は、配置配線処理等を経て、オブジェクトコードに変換された後、例えば、FPGA(Field Programmable Gate Array)や動的再構成プロセッサ等の書き換え可能なプログラマブルデバイス向けの回路として利用される。
関連する技術が特許文献2に開示されている。特許文献2に開示された並列演算装置は、データ処理装置からのオブジェクトコードに基づいて状態毎にコンテキスト(動作状態)を切り替え、複数の処理回路を並列動作させている。この並列演算装置は、複数の処理回路を状態に応じて構成し直すことができるため(即ち、複数の処理回路を動的に再構成することができるため)、小さな回路規模で複雑な処理を実行することができる。
特許第4770657号明細書 特許第3921367号明細書
ところで、ループ記述をパイプライン回路として合成する場合、遅延を短く(遅延制約を厳しく)すると、レジスタが多く挿入されるため、パイプライン段数は増加する。しかしながら、パイプライン化により状態数が折り畳まれるため、初期化(エピローグ)や後処理(プロローグ)を除き実行サイクル数は変化しない。したがって、パイプライン回路では、遅延を短く(遅延制約を厳しく)するほど、スループット(処理能力)が向上する。
一方、パイプライン化せずに多状態回路として合成する場合、遅延を短く(遅延制約を厳しく)すると、レジスタが多く挿入されるため、状態数が増加する。それに伴い、実行サイクル数も増加する。したがって、多状態回路では、実行サイクル数の増加による処理時間の増大が遅延短縮による処理時間の縮小を上回ると、スループット(処理能力)は低下する。一般的に、多状態回路では、遅延を短く(遅延制約を厳しく)するほど、レジスタやメモリ等のセットアップ時間及びホールド時間の合計時間の割合が大きくなり、演算自体に要する時間の割合が小さくなるため、スループットは低下する傾向にある。
ここで、特許文献1には、パイプライン合成システムが、スケジューリング及びアロケーション時に遅延制約をどのように設定しているのかについて記載されていない。したがって、このパイプライン合成システムは、ループ記述をパイプライン回路として合成するか否かに関わらず、回路全体に一律の遅延制約を設定してスケジューリング及びアロケーションを行っていると考えられる。
そのため、このパイプライン合成システムは、遅延を短くした場合(遅延制約を厳しくした場合)、多状態回路のスループットを向上させることができず、遅延を長くした場合(遅延制約を緩くした場合)、パイプライン回路のスループットを向上させることができない、という問題があった。換言すると、従来のパイプライン合成システムは、高いスループットのRTL記述を生成することができない、という問題があった。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
一実施の形態によれば、動作合成装置は、ループ記述をパイプライン化するか否かを判定する判定部と、パイプライン化するループ記述に対してパイプライン化しない場合よりも厳しい遅延制約を設定して動作合成を行う合成部と、を備える。
また、一実施の形態によれば、動作合成方法は、パイプライン化するループ記述に対してパイプライン化しない場合よりも厳しい遅延制約を設定し、動作合成を行う。
また、一実施の形態によれば、動作合成プログラムは、ループ記述をパイプライン化するか否かを判定する判定処理と、パイプライン化するループ記述に対してパイプライン化しない場合よりも厳しい遅延制約を設定して動作合成を行う動作合成処理と、をコンピュータに実行させる。
前記一実施の形態によれば、高いスループットのRTL記述を生成することが可能な動作合成装置を提供することができる。
実施の形態1にかかるデータ処理装置の論理構成の一例を示すブロック図である。 実施の形態1にかかる動作合成部を説明するための概念図である。 パイプライン化を説明するための概念図である。 パイプライン化を説明するための概念図である。 パイプライン化を説明するための概念図である。 データハザードを説明するための概念図である。 実施の形態1にかかる動作合成部の動作を示すフローチャートである。 実施の形態1にかかるデータ処理装置のハードウェア構成の一例を示すブロック図である。 実施の形態2にかかるアレイ型プロセッサの構成例を示すブロック図である。 実施の形態2にかかるプロセッサエレメント及びスイッチエレメントの構成例を示す図である。 実施の形態2にかかるデータ処理システムの構成例を示すブロック図である。 演算ユニット及びレジスタの接続関係を示す図である。 演算ユニット及びレジスタの接続関係を示す図である。 演算ユニットの構成例を示すブロック図である。 実施の形態3にかかる演算ユニットの構成例を示すブロック図である。 実施の形態3にかかる演算ユニットの構成例を示すブロック図である。 実施の形態3にかかる演算ユニットの構成例を示すブロック図である。 メモリユニットの構成例を示すブロック図である。 実施の形態3にかかるメモリユニットの構成例を示すブロック図である。 実施の形態3にかかるメモリユニットの構成例を示すブロック図である。 実施の形態3にかかるレジスタユニットの構成例を示す図である。 実施の形態3にかかるアレイ型プロセッサの一部を示すブロック図である。 実施の形態3にかかる動作合成部の動作を示すフローチャートである。 実施の形態3にかかる動作合成部の動作を示すフローチャートである。 ループカウンタ回路のソースコードを示す図である。 ループカウンタ回路の論理構成を示すブロック図である。 ループカウンタ回路の配置例を示す図である。
以下、図面を参照しつつ、実施の形態について説明する。なお、図面は簡略的なものであるから、この図面の記載を根拠として実施の形態の技術的範囲を狭く解釈してはならない。また、同一の要素には、同一の符号を付し、重複する説明は省略する。
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
さらに、以下の実施の形態において、その構成要素(動作ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等(個数、数値、量、範囲等を含む)についても同様である。
<実施の形態1>
図1は、実施の形態1にかかる動作合成部(動作合成装置)を備えたデータ処理装置10の論理構成の一例を示すブロック図である。本実施の形態にかかる動作合成部は、パイプライン化するループ記述に対してパイプライン化しない場合よりも短い遅延(厳しい遅延制約;厳しいタイミング制約;高いクロック周波数)を設定して、動作合成を行う。それにより、本実施の形態にかかる動作合成部は、従来よりも高いスループット(処理能力)のRTL記述を生成することができる。以下、具体的に説明する。
図1に示すデータ処理装置10は、動作合成部(動作合成装置)100と、オブジェクトコード生成部(レイアウト部)109と、を備える。動作合成部100は、DFG生成部101と、スケジューリング部102と、アロケーション部103と、FSM生成部104と、データパス生成部105と、パイプライン構成生成部106と、RTL記述生成部107と、パイプライン判定部108と、を有する。なお、動作合成部100のうちパイプライン判定部108以外の回路をまとめて合成部とも称する。
動作合成部100は、図2の概念図にも示すように、C言語等の回路の動作に関する記述(動作記述:以下、ソースコードと称す)11から、状態遷移マシン(FSM;Finite State Machine)と、状態遷移マシン中の複数の状態のそれぞれに対応する複数のデータパスと、を生成し、回路の構造に関する記述(構造記述;以下、RTL記述と称す)14として出力する部である。
DFG生成部101は、ソースコード11の構文解析をして、演算等の各種処理機能を表す節点と、データの流れを表す枝と、からなるDFG(Data Flow Graff)を作成する。
パイプライン判定部108は、ソースコード11に含まれるループ記述のそれぞれについてパイプライン化するか否かを判定する。本実施の形態では、パイプライン判定部108は、ユーザーによって指定されたループ記述を、パイプライン化対象のループ記述と判定している。なお、パイプライン判定部108は、各ループ記述についてパイプライン化するか否かを自動で判定する構成であっても良い。
以下、図3A〜図3Cを参照して、ループ記述のパイプライン化について簡単に説明する。図3Aは、ループ記述(状態数=4)をパイプライン化しない場合の処理内容を示す概念図である。図3Bは、ループ記述の4状態を2状態に折り畳んでパイプライン化した場合の処理内容を示す概念図である。図3Cは、ループ記述の4状態を1状態に折り畳んでパイプライン化した場合の処理内容を示す概念図である。なお、本例では、パイプライン段数が4段、ループ回数が10回であるものとする。また、本例では、1ステージ(一つの処理のまとまり)を実行するために1実行サイクル(クロックサイクル)が必要であるものとする。
図3Aに示すように、ループ記述(状態数=4)をパイプライン化しない場合、まず、1回目のループ処理である4ステージA1,B1,C1,D1が順に実行される。その後、2回目のループ処理である4ステージA2,B2,C2,D2が順に実行される。このような処理が、10回目のループ処理まで繰り返される。その結果、ループ処理を実行するために必要な実行サイクル数は、40実行サイクルとなる。
図3Bに示すように、ループ記述の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実行サイクルに初期化(エピローグ)及び後処理(プロローグ)分を加えた実行サイクル数のみとなる。
図3Cに示すように、ループ記述の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ステップ当たりの処理時間が短縮されるため、結果としてスループットは向上する。
なお、ループ記述のパイプライン化の詳細は、本発明者らによって発表された「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」にも開示されている。
ただし、ループ記述をパイプライン化する場合には、データハザードが発生するおそれがあるためそれを回避する必要がある。以下、図4を参照して、データハザードについて簡単に説明する。本例では、図3Cと同条件であると仮定して説明する。
まず、1回目のループ処理である4ステージA1(Read)、B1(Read)、C1(Write)、D1(Read)が順に実行される。また、1回目のループ処理開始から1ステップ遅れて、2回目のループ処理である4ステージA2(Read)、B2(Read)、C2(Write)、D2(Read)が順に実行される。ここで、ステージA2のデータ読み出し処理は、ステージC1のデータ書き込み処理よりも先に行われるため、意図しないデータを読み出してしまう可能性がある。このような問題をデータハザードと称す。
このデータハザードを回避するため、例えば、動作合成のスケジューリング時にフォワーディング(バイパシング)処理を施すことにより、ステージA2のデータ読み出し処理がステージC1のデータ書き込み処理よりも先に実行されないようにする。なお、フォワーディングの詳細は、「デビット・A・パターソン、ジョン・L・ヘネシー著、"コンピュータの構成と設計"、日経BP社」にも開示されている。
図1に戻り、スケジューリング部102は、合成制約12及び回路情報13に基づいてDFG中の複数の節点をそれぞれいつ実行させるか決定(スケジューリング)し、CDFG(Control Data Flow Graff)として出力する。アロケーション部103は、合成制約12及び回路情報13に基づいて、CDFG中の枝で表されるデータを一時記憶するためのレジスタ及びメモリユニットを決定するとともに、CDFG中の節点で表される演算をどの演算ユニットを用いて行うかを決定する。
なお、合成制約12には、回路規模、資源量、遅延制約(タイミング制約;クロック周波数)、パイプライン化対象のループ記述の情報等が設定されている。さらに、合成制約には、遅延制約として、多状態回路向け遅延制約と、多状態回路向け遅延制約よりも厳しい遅延制約であるパイプライン回路向け遅延制約と、が設定されている。また、回路情報13には、例えば、後述するアレイ型プロセッサ20に設けられた各資源(演算ユニット212,レジスタ213,メモリユニット210等)の規模及び遅延等の情報が設定されている。
ここで、ループ記述をパイプライン回路として合成する場合、遅延を短く(遅延制約を厳しく)すると、レジスタが多く挿入されるため、パイプライン段数は増加する。しかしながら、パイプライン化により状態数が折り畳まれるため、初期化(エピローグ)や後処理(プロローグ)を除き実行サイクル数は変化しない。したがって、パイプライン回路では、遅延を短く(遅延制約を厳しく)するほど、スループット(処理能力)が向上する。
一方、パイプライン化せずに多状態回路として合成する場合、遅延を短く(遅延制約を厳しく)すると、レジスタが多く挿入されるため、状態数が増加する。それに伴い、実行サイクル数も増加する。したがって、多状態回路では、実行サイクル数の増加による処理時間の増大が遅延短縮による処理時間の縮小を上回ると、スループット(処理能力)は低下する。一般的に、多状態回路では、遅延を短く(遅延制約を厳しく)するほど、レジスタやメモリ等のセットアップ時間及びホールド時間の合計時間の割合が大きくなり、演算自体に要する時間の割合が小さくなるため、スループットは低下する傾向にある。
そこで、スケジューリング部102及びアロケーション部103は、パイプライン化するループ記述に対してパイプライン回路向け遅延制約を設定するとともに、それ以外の記述に対して多状態回路向け遅延制約を設定して、それぞれスケジューリング及びアロケーションを行う。換言すると、スケジューリング部102及びアロケーション部103は、パイプライン化するループ記述に対して、それ以外の記述に対してよりも短い遅延(厳しい遅延制約)を設定して、それぞれスケジューリング及びアロケーションを行う。
それにより、パイプライン回路では、パイプライン段数が増加してレイテンシーは増加するが、パイプライン化により実行サイクル数の増加が抑制され、かつ、1ステップ当たりの処理時間が短くなるため、遅延を長くした場合よりもスループットが向上する。また、パイプライン回路以外の多状態回路では、状態数が抑制されて実行サイクル数が少なくなるとともに、レジスタやメモリ等のセットアップ時間やホールド時間の合計時間が短縮されるため、遅延を短くした場合よりもスループットが向上する。つまり、回路全体として、従来よりもスループットが向上することとなる。
次に、FSM生成部104は、スケジューリング部102及びアロケーション部103の結果に基づき、状態遷移マシン(FSM;Finite State Machine)を生成する。また、データパス生成部105は、スケジューリング部102及びアロケーション部103の結果に基づき、状態遷移マシンに含まれる複数の状態のそれぞれに対応する複数のデータパスを生成する。さらに、パイプライン構成生成部106は、パイプライン化対象のループ記述に含まれる複数の状態を折り畳んでパイプライン化する。
RTL記述生成部107は、上記した状態遷移マシンと、当該状態遷移マシンに含まれる複数の状態のそれぞれに対応する複数のデータパスと、をRTL記述14として出力する。
その後、オブジェクトコード生成部109は、RTL記述14を読み込んでテクノロジマッピングや配置配線等を行ってネットリストを生成し、バイナリ変換してオブジェクトコード15として出力する。
このように、本実施の形態にかかる動作合成部100は、パイプライン化するループ記述に対したパイプライン化しない場合よりも短い遅延(厳しい遅延制約)を設定して、動作合成を行う。それにより、本実施の形態にかかる動作合成部100は、従来よりも高いスループット(処理能力)のRTL記述を生成することができる。
(フローチャート)
続いて、図5を参照して、データ処理装置10内の動作合成部100の動作について説明する。図5は、動作合成部100の動作を示すフローチャートである。
まず、動作合成部100は、ソースコード11を受け取って構文解析を行った後(S101)、動作記述言語レベルの最適化を行い(S102)、各種処理機能を表す接点とデータの流れを表す枝とを割り当てて(S103)、DFGを作成する(S104)。
次に、動作合成部100は、ソースコード11に含まれるループ記述のそれぞれについてパイプライン化するか否かを判定した後(S105)、合成制約12及び回路情報13に従ってスケジューリング(S106)及びアロケーション(S107)を行う。
ここで、動作合成部100は、パイプライン化するループ記述に対してパイプライン回路向け遅延制約を設定するとともに、それ以外の記述に対して多状態回路向け遅延制約を設定して、スケジューリング及びアロケーションを行う。換言すると、動作合成部100は、パイプライン化するループ記述に対して、それ以外の記述に対してよりも短い遅延(厳しい遅延制約)を設定して、スケジューリング及びアロケーションを行う。それにより、パイプライン回路では、パイプライン段数が増加してレイテンシーは増加するが、パイプライン化により実行サイクル数の増加が抑制され、かつ、1ステップ当たりの処理時間が短くなるため、遅延を長くした場合よりもスループットが向上する。また、パイプライン回路以外の多状態回路では、状態数が抑制されて実行サイクル数が少なくなるとともに、レジスタやメモリ等のセットアップ時間やホールド時間の合計時間が短縮されるため、遅延を短くした場合よりもスループットが向上する。つまり、回路全体として、従来よりもスループットが向上することとなる。
次に、動作合成部100は、スケジューリング及びアロケーションの結果に基づき、状態遷移マシンと、当該状態遷移マシンに含まれる複数の状態のそれぞれに対応する複数のデータパスと、を生成する(S108,S109)。さらに、動作合成部100は、パイプライン化対象のループ記述に含まれる複数の状態を折り畳んでパイプライン化する(S110)。その後、動作合成部100は、状態遷移マシン及び複数のデータパスに対し、RTレベルや論理レベルの最適化を行った後(S111)、RTL記述14として出力する(S112)。
このように、本実施の形態にかかる動作合成部100は、パイプライン化するループ記述に対してパイプライン化しない場合よりも短い遅延(厳しい遅延制約)を設定して、動作合成を行う。それにより、本実施の形態にかかる動作合成部100は、従来よりも高いスループット(処理能力)のRTL記述を生成することができる。
(データ処理装置10のハードウェア構成例)
なお、本実施の形態にかかる動作合成部100及びそれを備えたデータ処理装置10は、例えば、汎用的なコンピュータシステムにより実現可能である。以下、図6を用いて簡単に説明する。
図6は、本実施の形態にかかるデータ処理装置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は、その他図示しない構成として、キーボードやマウス等の入力装置やディスプレイ等の表示装置を備えていても良い。
HDD115には、OS(Operating System)(不図示)と、動作記述情報116と、構造記述情報117と、動作合成プログラム118と、が記憶されている。動作記述情報116は、回路の動作に関する情報であって、図1におけるソースコード(動作記述)11に相当する。構造記述情報117は、回路の構造に関する情報であって、図1におけるRTL記述14に相当する。動作合成プログラム118は、本実施の形態にかかる動作合成処理が実装されたコンピュータプログラムである。
CPU111は、コンピュータ110における各種処理、RAM112,ROM113,IF114及びHDD115へのアクセス等を制御する。コンピュータ110は、CPU111がHDD115に記憶されたOS及び動作合成プログラム118を読み込み、実行する。これにより、コンピュータ110は、本実施の形態にかかる動作合成部100及びそれを備えたデータ処理装置10を実現する。
<実施の形態2>
本実施の形態では、データ処理装置10の出力結果(オブジェクトコード15)が適用される回路の具体例について説明する。
図7は、オブジェクトコード15に基づいて状態毎に動的に回路構成を変化させるアレイ型プロセッサ(並列演算装置)20の構成例を示すブロック図である。図7に示すアレイ型プロセッサ20は、I/F部201と、コードメモリ202と、状態管理部203と、マトリクス回路部205と、データメモリ部206と、を備える。マトリクス回路部205には、複数のプロセッサエレメント(PE)207と、複数のスイッチエレメント(SWE)208と、がそれぞれマトリクス状に配置されている。データメモリ部206は、複数のメモリユニット210により構成される。複数のメモリユニット210は、例えば、マトリクス回路部205を囲むように配置されている。
なお、オブジェクトコード15には、複数のコンテキスト(複数のデータパスに対応)と、状態遷移条件(状態遷移マシンに対応)と、が含まれている。各コンテキストには、複数のプロセッサエレメント207及び複数のスイッチエレメント208のそれぞれへの動作命令が設定されている。また、状態遷移条件には、状態に応じて複数のコンテキストの何れかを選択する状態管理部203への動作命令が設定されている。
I/F部201には、データ処理装置10からのオブジェクトコード15が供給される。コードメモリ202は、RAM等の情報記憶媒体によって構成され、I/F部201に供給されたオブジェクトコード15を記憶する。
状態管理部203は、状態に応じて複数のコンテキストの何れかを選択し、選択したコンテキストに応じた複数の命令ポインタ(IP)をそれぞれ複数のプロセッサエレメント207に出力する。
図8は、一組のプロセッサエレメント207及びスイッチエレメント208の構成例を示す図である。プロセッサエレメント207は、命令メモリ211と、演算ユニット212と、レジスタ213と、を有する。スイッチエレメント208は、配線接続スイッチ214〜218を有する。なお、本実施の形態では、演算ユニット212が、1つの演算器(ALU)のみを有する場合を例に説明する。また、プロセッサエレメント207内の各要素は、図示していないが、データ配線を介してデータの受け渡しを行い、フラグ配線を介してフラグの受け渡しを行う。
プロセッサエレメント207は、データ配線を介して他のプロセッサエレメント207から供給されたデータに演算処理を施し、演算結果(データ)をデータ配線を介して別のプロセッサエレメント207に出力する。また、プロセッサエレメント207では、フラグ配線を介して他のプロセッサエレメント207からフラグが供給され、フラグ配線を介して別のプロセッサエレメント207にフラグが出力される。例えば、プロセッサエレメント207は、他のプロセッサエレメント207から供給されたフラグに基づいて演算処理の開始の有無を決定し、演算処理の結果に応じたフラグを別のプロセッサエレメント207に出力する。
命令メモリ211には、プロセッサエレメント207及びスイッチエレメント208への動作命令がコンテキストの数に応じて複数格納されている。そして、命令メモリ211では、状態管理部203からの命令ポインタ(IP)に基づいて、複数の動作命令のうち何れかの動作命令が読み出される。プロセッサエレメント207及びスイッチエレメント208は、命令メモリ211から読み出された動作命令に従って動作を実行する。
演算ユニット212は、命令メモリ211から読み出された動作命令に従った演算処理内容で、入力されたデータに演算処理を施す。
レジスタ213は、演算ユニット212に入力されるデータ、演算ユニット212による演算結果、演算ユニット212による演算処理の中間データ等を一時的に記憶する。なお、演算ユニット212の演算結果は、レジスタ213を介さずに直接プロセッサユニットの外部に出力されても良い。
配線接続スイッチ214〜216は、命令メモリ211から読み出された動作命令に従って、対応するプロセッサエレメント207(当該動作命令を格納している命令メモリ211を備えたプロセッサエレメント207)と、他のプロセッサエレメント207(例えば、隣接するプロセッサエレメント207)と、をデータ配線で接続する。
配線接続スイッチ216〜218は、命令メモリ211から読み出された動作命令に従って、対応するプロセッサエレメント207(当該動作命令を格納している命令メモリ211を備えたプロセッサエレメント207)と、他のプロセッサエレメント207(例えば、隣接するプロセッサエレメント207)と、をフラグ配線で接続する。
なお、配線接続スイッチ214〜216は、命令メモリ211から読み出された動作命令に従って、配線を接続する。なお、配線接続スイッチ216は、データ配線やフラグ配線の交差部に配置される。
(データ処理システム1)
図9は、データ処理装置10及びアレイ型プロセッサ20を備えたデータ処理システム1の構成例を示すブロック図である。
図9に示すデータ処理システム1において、データ処理装置10は、ソースコード11、合成制約12及び回路情報13を読み込んでオブジェクトコード15を生成する。アレイ型プロセッサ20は、データ処理装置10から出力されたオブジェクトコード15に基づいて状態毎に動的に回路構成を切り替えながら、外部から供給される処理データに演算処理を施し結果データとして出力する。
(アレイ型プロセッサ20の再構成内容)
続いて、図10A及び図10Bを参照して、動作合成時の遅延制約に応じたアレイ型プロセッサ20の再構成内容について説明する。図10Aは、遅延制約が緩い(例えば、遅延制約が12ns)場合の演算ユニット212及びレジスタ213の接続関係を示す図である。図10Bは、遅延制約が厳しい(例えば、遅延制約が7ns)場合の演算ユニット212及びレジスタ213の接続関係を示す図である。なお、本例では、説明の簡単化のため、レジスタ213の遅延が一律0ns、演算ユニット212の遅延が一律3ns、配線遅延が一律2nsであるものとし、セットアップ時間やホールド時間は考慮しない。
まず、図10Aの例では、遅延制約が12nsと緩いため、レジスタ間には2つの演算ユニット212が接続される。それにより、実行サイクルの周期が長くなるが、状態数が抑制されて実行サイクル数は少なくなる。多状態回路向けの動作合成は、このような緩い遅延制約を設定して実施される。
一方、図10Bの例では、遅延制約が7nsと厳しいため、レジスタ間には1つの演算ユニット212のみ接続される。つまり、図10Bの例では、図10Aの場合と比較して、2つの演算ユニット212間にレジスタ213がさらに挿入されている。それにより、状態数が増加して実行サイクル数は増加するが、実行サイクルの周期は短くなる。ここで、パイプライン回路では、状態数が折り畳まれて実行サイクル数の増加が抑制されるため、遅延を短くして実行サイクルの周期を短くするほど、高速動作が可能になる。パイプライン回路向けの動作合成は、このような厳しい遅延制約を設定して実施される。
<実施の形態3>
本実施の形態では、アレイ型プロセッサ20の変形例について説明する。
(演算ユニット212の変形例)
まず、図11A〜図11Dを参照して、アレイ型プロセッサ20に設けられた演算ユニット212の変形例について説明する。図11Aは、演算ユニット212を示すブロック図である。また、図11B〜図11Cは、演算ユニット212の変形例をそれぞれ演算ユニット212b〜212dとして示すブロック図である。
図11Aに示す演算ユニット212は、演算器(ALU)2121を有する。演算器2121は、演算ユニット212の入力データに演算処理を施して演算結果を出力する。
図11Bに示す演算ユニット212bは、演算器の前段にフリップフロップを有する。具体的には、演算ユニット212bは、演算器2121bと、フリップフロップ(F/F)2122bと、セレクタ(SEL)2123bと、を有する。フリップフロップ2122bは、演算ユニット212bの入力データをクロックに同期して取り込み出力する。セレクタ2123bは、フリップフロップ2122bの出力と、演算ユニット212bの入力データと、を状態(即ち、命令メモリから読み出された動作命令)に応じて選択的に出力する。演算器2121bは、セレクタ2123bの出力に演算処理を施して演算結果を出力する。
図11Cに示す演算ユニット212cは、演算器の後段にフリップフロップを有する。具体的には、演算ユニット212cは、演算器2121cと、フリップフロップ2122cと、セレクタ2123cと、を有する。演算器2121cは、演算ユニット212cの入力データに演算処理を施して演算結果を出力する。フリップフロップ2122cは、演算器2121cの演算結果をクロックに同期して取り込み出力する。セレクタ2123cは、フリップフロップ2122cの出力と、演算器2121cの演算結果と、を状態に応じて選択的に出力する。
図11Dに示す演算ユニット212dは、2つに分割された演算器の間にフリップフロップを有する。具体的には、演算ユニット212dは、2つに分割された演算器(第1演算器)2121d及び演算器(第2演算器)2124dと、フリップフロップ2122dと、セレクタ2123dと、を有する。演算器2121dは、演算ユニット212dの入力データに演算処理を施して演算結果(中間データ)を出力する。フリップフロップ2122dは、演算器2121dの演算結果をクロックに同期して取り込み出力する。セレクタ2123dは、フリップフロップ2122dの出力と、演算器2121dの演算結果と、を状態に応じて選択的に出力する。演算器2124dは、セレクタ2123dの出力に演算処理を施して演算結果を出力する。
ここで、本実施の形態にかかるアレイ型プロセッサ20は、複数の演算ユニット212の一部又は全部に代えて、それぞれ演算ユニット212b〜212dの何れかを備える。それにより、本実施の形態にかかるアレイ型プロセッサ20は、演算ユニット間にレジスタ213を挿入できるのみならず、演算ユニット内にもフリップフロップ(レジスタ)を挿入することが可能となる。
それにより、本実施の形態にかかるアレイ型プロセッサ20は、さらに遅延を短くしてパイプライン段数を増加させたパイプライン回路を動的に再構成することができる。つまり、本実施の形態にかかるアレイ型プロセッサ20は、さらに高いスループットのパイプライン回路を動的に再構成することができる。なお、このとき、動作合成部100は、パイプライン化するループ記述に対してさらに短い遅延(厳しい遅延制約)を設定して動作合成を行う。
(メモリユニットの変形例)
続いて、図12A〜図12Cを参照して、アレイ型プロセッサ20に設けられたメモリユニット210の変形例について説明する。図12Aは、メモリユニット210を示すブロック図である。また、図12B,図12Cは、メモリユニット210の変形例をそれぞれメモリユニット210b,210cとして示すブロック図である。
図12Aに示すメモリユニット210は、メモリ(MEM)2101を有する。ライト時、メモリ2101では、アドレス信号によって指定されたメモリセルにデータが書き込まれる。一方、リード時、メモリ2101では、アドレス信号によって指定されたメモリセルからデータが読み出される。
図12Bに示すメモリユニット210bは、メモリの前段にフリップフロップを有する。具体的には、メモリユニット210bは、メモリ2101bと、フリップフロップ(F/F)2102bと、セレクタ(SEL)2103bと、を有する。フリップフロップ2102bは、外部から供給されるアドレス信号及びライト時に外部から供給される書き込みデータをクロックに同期して取り込み出力する。セレクタ2103bは、フリップフロップ2102bの出力(アドレス信号及び書き込みデータ)と、外部から供給されるアドレス信号及びライト時に外部から供給される書き込みデータと、の何れかを状態に応じて選択的に出力する。メモリ2101bでは、セレクタ2103bの出力によりデータの書き込み又は読み出しが行われる。
図12Cに示すメモリユニット210cは、メモリの後段にフリップフロップを有する。具体的には、メモリユニット210cは、メモリ2101cと、フリップフロップ2102cと、セレクタ2103cと、を有する。メモリ2101cでは、リード時に、外部からのアドレス信号により指定されたメモリセルに外部からの書き込みデータが書き込まれ、ライト時に、外部からのアドレス信号により指定されたメモリセルからデータが読み出される。フリップフロップ2102cは、リード時にメモリ2101cから読み出されたデータをクロックに同期して取り込み出力する。セレクタ2103cは、フリップフロップ2102cの出力と、メモリ2101cから読み出されたデータと、の何れかを状態に応じて選択的に出力する。
ここで、本実施の形態にかかるアレイ型プロセッサ20は、データメモリ部206を構成する複数のメモリユニット210の一部又は全部に代えて、それぞれメモリユニット210b,210cの何れかを備える。それにより、本実施の形態にかかるアレイ型プロセッサ20は、演算ユニット間や演算ユニット及びメモリユニット間にレジスタ213を挿入できるのみならず、メモリユニット内にもフリップフロップ(レジスタ)を挿入することが可能となる。
それにより、本実施の形態にかかるアレイ型プロセッサ20は、さらに遅延を短くしてパイプライン段数を増加させたパイプライン回路を動的に再構成することができる。つまり、本実施の形態にかかるアレイ型プロセッサ20は、さらに高いスループットのパイプライン回路を動的に再構成することができる。なお、このとき、動作合成部100は、パイプライン化するループ記述に対してさらに短い遅延(厳しい遅延制約)を設定して動作合成を行う。
(その他の変形例)
続いて、図13A,図13Bを参照して、アレイ型プロセッサ20のその他の変形例について説明する。本例では、フリップフロップ及びセレクタからなるレジスタユニット209が、マトリクス回路部205内のデータ配線上に複数設けられている。同様にして、レジスタユニット209は、マトリクス回路部205のフラグ配線上にも複数設けられている。
図13Aは、複数のレジスタユニット209の構成例を示す図である。図13Bは、レジスタユニット209を用いて動的に再構成されたアレイ型プロセッサ20の一部を示す図である。
図13Aに示すように、フリップフロップ及びセレクタからなるレジスタユニット209は、データ配線上に複数設けられている。セレクタは、入力データをフリップフロップを介して出力するかバイパスするかを状態に応じて切り替える。例えば、複数のレジスタユニット209のうち任意のレジスタユニット209のフロップフロップを有効にすることで、データ配線上のフリップフロップの挿入位置を適宜変更することが可能となる。
図13Bの例では、複数のレジスタユニット209のうちある一つのレジスタユニット209のフリップフロップを有効にして前段レジスタ(REG1)213及び演算ユニット212の間にフリップフロップを挿入している。それにより、前段レジスタ213と演算ユニット212との間の配線遅延を短くしている。例えば、フリップフロップは、前段レジスタ213と演算ユニット212との間の配線遅延と、演算ユニット212と後段レジスタ213との間の配線遅延と、が略同一になるような位置に挿入される。
このように、本実施の形態にかかるアレイ型プロセッサ20は、データ配線上に挿入されるフリップフロップの挿入位置を適宜変更することが可能となる。それにより、本実施の形態にかかるアレイ型プロセッサ20は、さらに遅延を短くしてパイプライン段数を増加させたパイプライン回路を動的に再構成することができる。つまり、本実施の形態にかかるアレイ型プロセッサ20は、さらに高いスループットのパイプライン回路を動的に再構成することができる。また、回路全体の遅延を最適化することも可能である。なお、このとき、データ処理装置10は、オブジェクトコード生成部109にて配置配線処理を行う際、上記したフリップフロップの挿入位置を決定する。
なお、データ配線上に複数のレジスタユニット209を備えた構成の詳細は、「D. Singh, S. Brown, "The case for registered routing swiches in field programmable gate arrays", Proceedings ACM/SIGDA International Synposium on Field-Programmable Gate Arrays, Feb, 2001, pp.161-169」にも開示されている。
本例では、レジスタユニット209が、フリップフロップ及びセレクタを有する場合を例に説明したがこれに限られない。レジスタユニット209は、フリップフロップのみを有する構成であっても良い。
続いて、図14及び図15を参照して、本実施の形態にかかるアレイ型プロセッサ20向けの動作合成フローについて説明する。図14は、本実施の形態にかかる動作合成部100の第1の動作を示すフローチャートである。図15は、本実施の形態にかかる動作合成部100の第2の動作を示すフローチャートである。
(第1のフローチャート)
図14の例では、動作合成部100は、回路情報13に代えて回路情報13Aを読み込む。回路情報13Aには、パイプライン回路向け回路情報と、多状態回路向け回路情報と、が含まれる。パイプライン回路向け回路情報には、アレイ型プロセッサ20に設けられた各資源のうち比較的遅延の短い資源(演算ユニット212b〜212c,メモリユニット210b,210c,レジスタ213等)の情報が設定されている。一方、多状態回路向け回路情報には、アレイ型プロセッサ20に設けられた各資源のうち比較的遅延の長い資源(演算ユニット212,メモリユニット210,レジスタ213等)の情報が設定されている。
この動作合成部100は、パイプライン化するループ記述に対してパイプライン回路向け遅延制約及び回路情報を設定するとともに、それ以外の記述に対して多状態回路向け遅延制約及び回路情報を設定して、スケジューリング及びアロケーションを行う(S106,S107)。換言すると、動作合成部100は、パイプライン化するループ記述に対して、それ以外の記述に対してよりも短い遅延制約及び短い遅延の資源を設定して、スケジューリング及びアロケーションを行う。
図14に示す動作合成部100のその他の動作については、図5に示す動作を同様であるため、その説明を省略する。
(第2のフローチャート)
図15の例では、動作合成部100は、図5の場合と同様の動作を経て、RTレベルや論理レベルの最適化までを行う(S111)。その後、動作合成部100は、パイプライン化する回路部分に対してフリップフロップを追加で挿入した後(S1112)、RTL記述14として出力する(S112)。
図15に示す動作では、図14の場合と比較して、2種類の回路情報を準備する必要が無い。ただし、この場合、データハザードが発生し得るパイプライン回路に対してフリップフロップが追加挿入されないように留意する必要がある。
<実施の形態4>
本実施の形態では、ループ記述のパイプライン化によりデータハザードが発生する回路の配置配線について説明する。
データハザードは、既に図4等で説明したように、データ書き込み処理と、データ読み出し処理又はデータ書き込み処理と、の順序が逆転してしまうことにより発生する。したがって、データハザードは、変数を自己参照する回路記述にて発生しやすい。具体的には、データハザードは、変数を自己参照するループカウンタ回路等で発生しやすい。
図16A及び図16Bは、それぞれループカウンタ回路300のソースコード及びその論理構成を示す図である。
図16Bに示すように、ループカウンタ回路300は、セレクタ(SEL)301と、加算回路302と、比較回路303と、レジスタ304〜306と、を有する。レジスタ304〜306には、それぞれ、値1、x(任意の自然数)、xの最大値(max)が格納されている。
加算回路302は、値1と値x(初期値0)とを加算して加算結果"1"を出力する。セレクタ301は、ループ処理を実行中、加算回路302の加算結果"1"を選択して出力する。レジスタ305は、クロックに同期してセレクタ301の出力"1"を取り込み出力する。それにより、加算回路302は、値1と値x(値1)とを加算して加算結果"2"を出力する。このような動作が繰り返され、x>maxになると、比較回路303は、出力値を初期値から他の値に切り替える。それにより、ループ処理が終了する。なお、ループ処理が行われていない場合、セレクタ301は、レジスタ305の出力をそのままその当該レジスタの入力に供給する。
ここで、動作合成時のスケジューリングにて、ループカウンタ回路300のループ記述に対してフォワーディング処理を施すと、レジスタ205の書き込み及び読み出しが折り畳む状態数以内にスケジューリングされることとなる。なお、以下の例では、説明を分かりやすくするため、レジスタ305の書き込み処理及び読み出し処理が同一状態にスケジューリングされる場合を例に説明する。そのため、加算回路302やセレクタ301の前後段にフリップフロップ(レジスタ)を挿入してパイプライン段数を増加させることはできない(但し、比較回路303の前後段にフリップフロップ(レジスタ)を挿入することは可能)。つまり、このループ記述は、1実行サイクル内で動作する組み合わせ回路として動作合成されることとなる。
そこで、本実施の形態にかかるデータ処理装置10は、データハザードの発生するループ記述に対してフォワーディング処理を施す場合、当該ループ記述に基づき生成された論理回路群(図16Bの例では、セレクタ301,加算回路302,レジスタ305等)にフラグを設定する。より具体的には、当該論理回路群のそれぞれから識別可能な所定レベルの信号を出力させるようにしておく。そして、データ処理装置10は、オブジェクトコード生成部109にて配置配線処理を行うときに、当該フラグの設定された論理回路群を近接配置して配線遅延をできるだけ短くする。それにより、データ処理装置10は、フォワーディング処理が施されたパイプライン回路の処理時間を短くすることができる。
図17は、ループカウンタ回路300の一部の配置例を示す図である。図17に示すように、例えば、ループカウンタ回路300は、隣接するプロセッサエレメント207によって動的に再構成される。
なお、アレイ型プロセッサ20では、ゲートアレイやセルベース等のLSI(Large Scale Integration)の場合と比較して、ルックアップテーブルやプロセッサエレメント(PE)等の大きな回路単位で配置配線処理が行われる。したがって、近接配置を考慮して動作合成を行うことは、スループット向上に有効である。
<実施の形態5>
上記実施の形態1〜4にかかるアレイ型プロセッサ20では、パイプライン回路がそれ以外の回路(多状態回路)よりも高い周波数のクロックに同期して動作する。つまり、パイプライン回路と多状態回路とはそれぞれ異なる周波数のクロックに同期して動作する。本実施の形態にかかるアレイ型プロセッサ20は、さらに、状態によって回路遅延が変化する場合に、各状態の回路の最大遅延(クリティカルパル)に応じて動的にクロックの周波数を切り替える。
なお、状態によって回路遅延を変化させる方法は、例えば、特許第4753895号明細書に開示されている。
それに対し、動的にクロックの周波数を切り替える方法としては、例えば、複数のクロック供給配線の何れかを状態に応じて選択し、選択されたクロック供給配線のクロックを対応する回路に供給する方法がある。ただし、この方法では、クロック供給配線の本数が多くなり配線混雑するため、クロックの周波数の種類をそれほど多くすることはできない。また、クロック供給配線を切り替えるためのスイッチが別途必要になる。そこで、動的にクロックの周波数を切り替えるその他の方法としては、クロック供給元が状態に応じた周波数のクロックを生成し、当該クロックを一つのクロック供給配線に供給する方法がある。この方法は、例えば、国際公開WO2009/116398号公報に開示されている。
このように、本実施の形態にかかるアレイ型プロセッサ20は、状態によって回路遅延が変化する場合に、パイプライン回路、多状態回路、複数の状態を有するパイプライン回路に関わらず、各状態の回路の最大遅延(クリティカルパス)に応じて動的にクロックの周波数を切り替えることができる。
以上のように、上記実施の形態にかかる動作合成部(動作合成装置)100は、パイプライン化するループ記述に対してパイプライン化しない場合よりも短い遅延(厳しい遅延制約)を設定して動作合成を行う。それにより、パイプライン回路では、パイプライン段数が増加してレイテンシーは増加するが、パイプライン化により実行サイクル数の増加が抑制され、かつ、1ステップ当たりの処理時間が短くなるため、スループットが向上する。また、パイプライン回路以外の多状態回路では、状態数が抑制されて実行サイクル数が少なくなるとともに、レジスタやメモリ等のセットアップ時間やホールド時間の合計時間が短縮されるため、スループットが向上する。つまり、上記実施の形態にかかる動作合成部100は、回路全体として、従来よりもスループットを向上させることができる。
また、上記実施の形態にかかるアレイ型プロセッサ(並列処理装置)20は、例えば、内部にフリップフロップを有する演算ユニット、メモリユニット及びレジスタユニットを備える。それにより、上記実施の形態にかかるアレイ型プロセッサ20は、遅延をさらに短くしてパイプライン段数を増加させたパイプライン回路を動的に再構成することができる。つまり、上記実施の形態にかかるアレイ型プロセッサ20は、さらに高いスループットのパイプライン回路を動的に再構成することができる。
また、上記実施の形態にかかるデータ処理装置10は、データハザードの発生するループ記述に対してフォワーディング処理を施す場合、当該ループ記述に基づき生成された論理回路群にフラグを設定する。そして、上記実施の形態にかかるデータ処理装置10は、配置配線処理を行うときに、当該フラグの設定された論理回路群を近接配置して配線遅延をできるだけ短くする。それにより、上記実施の形態にかかるデータ処理装置10は、フォワーディング処理が施された回路の処理時間を短くすることができる。つまり、スループットを向上させることができる。
さらに、上記実施の形態にかかるアレイ型プロセッサ20は、状態によって回路遅延が変化する場合に、パイプライン回路、多状態回路、複数の状態を有するパイプライン回路に関わらず、各状態の回路の最大遅延(クリティカルパス)に応じて動的にクロックの周波数を切り替えることができる。
また、上記実施の形態にかかる動作合成部及びそれを備えたデータ処理装置は、任意の処理を、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)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
1 データ処理システム
10 データ処理装置
11 ソースコード
12 合成制約
13,13A 回路情報
14 RTL記述
15 オブジェクトコード
20 アレイ型プロセッサ
101 DFG生成部
102 スケジューリング部
103 アロケーション部
104 FSM生成部
105 データパス生成部
106 パイプライン構成生成部
107 RTL記述生成部
108 パイプライン判定部
109 オブジェクトコード生成部
110 コンピュータ
111 CPU
112 RAM
113 ROM
114 IF
115 HDD
116 動作記述情報
117 構造記述情報
118 動作合成プログラム
201 IF部
202 コードメモリ
203 状態管理部
205 マトリクス回路部
206 データメモリ
207 プロセッサエレメント
208 スイッチエレメント
209 レジスタユニット
210 メモリユニット
211 命令メモリ
212,212b〜212d 演算ユニット
2101,2101b,2101c メモリ
2102b,2102c フリップフロップ
2103b,2103c セレクタ
2121,2121b〜2121d,2124d 演算器
2122b〜2122d フリップフロップ
2123b〜2123d レジスタ
213 レジスタ
214〜218 配線接続スイッチ

Claims (20)

  1. ループ記述をパイプライン化するか否かを判定する判定部と、
    パイプライン化するループ記述に対してパイプライン化しない場合よりも厳しい遅延制約を設定して動作合成を行う合成部と、を備えた動作合成装置。
  2. 前記合成部は、パイプライン化する前記ループ記述に対してフォワーディング処理を施す場合、当該ループ記述に基づき生成された論理回路群にフラグを設定する、請求項1に記載の動作合成装置。
  3. 請求項1に記載の動作合成装置と、
    前記動作合成装置から出力された構造記述を論理合成した上で配置配線するレイアウト部と、を備えたデータ処理装置。
  4. 請求項2に記載の動作合成装置と、
    前記動作合成装置から出力された構造記述を論理合成した上で配置配線するレイアウト部と、を備え、
    前記レイアウト部は前記フラグの設定された論理回路群を近接配置する、データ処理装置。
  5. 請求項3に記載のデータ処理装置と、
    前記データ処理装置から出力されたネットリストに基づいて状態に応じた回路が動的に構成される並列演算装置と、を備えたデータ処理システム。
  6. 請求項4に記載のデータ処理装置と、
    前記データ処理装置から出力されたネットリストに基づいて状態に応じた回路が動的に構成される並列演算装置と、を備えたデータ処理システム。
  7. 前記ネットリストは、状態遷移マシンと、当該状態遷移マシンに含まれる複数の状態のそれぞれに対応する複数のデータパスと、によって構成され、
    前記並列演算装置は、
    前記複数のデータパスのそれぞれに対応する複数のコンテキストのうち、前記状態遷移マシンの状態に応じたコンテキストを選択する状態管理部と、
    前記状態管理部によって選択された前記コンテキストに基づき演算処理内容を決定する複数のプロセッサエレメントと、
    前記状態管理部によって選択された前記コンテキストに基づき前記複数のプロセッサエレメントのそれぞれの接続関係を決定する複数のスイッチエレメントと、を備えた、請求項5又は6に記載のデータ処理システム。
  8. 前記各プロセッサエレメントは、
    前記複数のコンテキストのそれぞれに対応する複数の動作命令を記憶し、前記複数の動作命令のうち前記状態管理部によって選択された前記コンテキストに対応する動作命令が読み出される命令メモリと、
    前記動作命令に従った演算処理内容で、入力データに演算処理を施す演算ユニットと、
    前記入力データ、前記演算ユニットによる演算結果、及び、前記演算ユニットによる演算処理の中間データの少なくとも何れかを一時的に記憶するレジスタと、を備えた、請求項7に記載のデータ処理システム。
  9. 複数の前記演算ユニットのうち少なくとも1つの演算ユニットは、
    当該演算ユニットの外部から供給される前記入力データを一時的に記憶するレジスタと、
    当該演算ユニットの外部から供給される前記入力データと前記レジスタに記憶された前記入力データとの何れかを前記動作命令に従って選択的に出力するセレクタと、
    前記動作命令に従った演算処理内容で、前記セレクタから出力されたデータに演算処理を施す演算器と、を備えた、請求項8に記載のデータ処理システム。
  10. 複数の前記演算ユニットのうち少なくとも1つの演算ユニットは、
    前記動作命令に従った演算処理内容で、前記入力データに演算処理を施す演算器と、
    前記演算器の演算結果を一時的に記憶するレジスタと、
    前記演算器の前記演算結果と前記レジスタに記憶された前記演算結果との何れかを前記動作命令に従って選択的に出力するセレクタと、を備えた、請求項8に記載のデータ処理システム。
  11. 複数の前記演算ユニットのうち少なくとも1つの演算ユニットは、
    前記動作命令に従った演算処理内容で、前記入力データに演算処理を施し中間データを生成する第1演算器と、
    前記中間データを一時的に記憶するレジスタと、
    前記第1演算器から出力された前記中間データと前記レジスタに記憶された前記中間データとの何れかを前記動作命令に従って選択的に出力するセレクタと、
    前記動作命令に従った演算処理内容で、前記セレクタから出力されたデータに演算処理を施す第2演算器と、を備えた、請求項8に記載のデータ処理システム。
  12. 前記並列演算装置は、
    前記複数のプロセッサエレメントのそれぞれの出力結果を記憶する複数のメモリユニットをさらに備え、
    前記複数のメモリユニットのうち少なくとも1つのメモリユニットは、
    当該メモリユニットの外部から供給されるアドレス信号と、ライト時に当該メモリユニットの外部から供給されるデータと、を一時的に記憶するレジスタと、
    当該メモリユニットの外部から供給される前記アドレス信号及び前記データと、前記レジスタに記憶された前記アドレス信号及び前記データと、の何れかを状態に応じて選択的に出力するセレクタと、
    前記セレクタから出力されたアドレス信号によって指定されたメモリセルに前記セレクタから出力されたデータが書き込まれ、又は、前記セレクタから出力されたアドレス信号によって指定されたメモリセルに記憶されたデータが読み出される、メモリと、を備えた、請求項7に記載のデータ処理システム。
  13. 前記並列演算装置は、
    前記複数のプロセッサエレメントのそれぞれの出力結果を記憶する複数のメモリユニットをさらに備え、
    前記複数のメモリユニットのうち少なくとも1つのメモリユニットは、
    アドレス信号によって指定されたメモリセルにデータが書き込まれ、又は、アドレス信号によって指定されたメモリセルに記憶されたデータが読み出される、メモリと、
    リード時に前記メモリから読み出されたデータを一時的に記憶するレジスタと、
    前記メモリから読み出された前記データと、前記レジスタに記憶された前記データと、の何れかを状態に応じて選択的に出力するセレクタと、を備えた、請求項7に記載のデータ処理システム。
  14. 前記並列演算装置は、
    前記複数のプロセッサエレメント間を接続するデータ配線上に設けられた複数のレジスタユニットをさらに備え、
    前記各レジスタユニットは、
    当該レジスタユニットの外部から供給される入力データを一時的に記憶するレジスタと、
    当該レジスタユニットの外部から供給される前記入力データと前記レジスタに記憶された前記入力データとの何れかを状態に応じて選択的に出力するセレクタと、を有する、請求項7に記載のデータ処理システム。
  15. 前記並列演算装置は、
    各状態にて、構成される回路の最大遅延に応じた周波数のクロックを生成し当該回路に供給する、請求項5に記載のデータ処理システム。
  16. 前記レイアウト部は、前記並列演算装置に設けられた回路資源を用いて、論理合成し、かつ、配置配線する、請求項5に記載のデータ処理システム。
  17. パイプライン化するループ記述に対してパイプライン化しない場合よりも厳しい遅延制約を設定し、
    動作合成を行う、動作合成方法。
  18. パイプライン化する前記ループ記述に対してフォワーディング処理を施す場合、当該ループ記述に基づき生成された論理回路群にフラグを設定し、
    前記動作合成を行う、請求項17に記載の動作合成方法。
  19. ループ記述をパイプライン化するか否かを判定する判定処理と、
    パイプライン化するループ記述に対してパイプライン化しない場合よりも厳しい遅延制約を設定して動作合成を行う動作合成処理と、をコンピュータに実行させる動作合成プログラム。
  20. パイプライン化する前記ループ記述に対してフォワーディング処理を施す場合、当該ループ記述に基づき生成された論理回路群にフラグを設定するフラグ設定処理と、
    前記フラグ設定処理の後に動作合成を行う前記動作処理と、をコンピュータに実行させる請求項19に記載の動作合成プログラム。
JP2012141058A 2012-06-22 2012-06-22 動作合成装置、動作合成装置を備えたデータ処理システム、及び、動作合成プログラム Active JP5985900B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2012141058A JP5985900B2 (ja) 2012-06-22 2012-06-22 動作合成装置、動作合成装置を備えたデータ処理システム、及び、動作合成プログラム
US13/922,945 US9201996B2 (en) 2012-06-22 2013-06-20 Behavioral synthesis apparatus, behavioral synthesis method, data processing system including behavioral synthesis apparatus, and non-transitory computer readable medium storing behavioral synthesis program
US14/922,435 US20160042099A1 (en) 2012-06-22 2015-10-26 Behavioral synthesis apparatus, behavioral synthesis method, data processing system including behavioral synthesis apparatus, and non-transitory computer readable medium storing behavioral synthesis program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012141058A JP5985900B2 (ja) 2012-06-22 2012-06-22 動作合成装置、動作合成装置を備えたデータ処理システム、及び、動作合成プログラム

Publications (2)

Publication Number Publication Date
JP2014006650A true JP2014006650A (ja) 2014-01-16
JP5985900B2 JP5985900B2 (ja) 2016-09-06

Family

ID=49775547

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012141058A Active JP5985900B2 (ja) 2012-06-22 2012-06-22 動作合成装置、動作合成装置を備えたデータ処理システム、及び、動作合成プログラム

Country Status (2)

Country Link
US (2) US9201996B2 (ja)
JP (1) JP5985900B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017104149A1 (ja) * 2015-12-16 2017-06-22 株式会社ソシオネクスト 設計方法、設計プログラム及び設計装置
WO2017158785A1 (ja) * 2016-03-17 2017-09-21 三菱電機株式会社 高位合成装置、高位合成方法及び高位合成プログラム
US10599803B2 (en) 2016-03-10 2020-03-24 Mitsubishi Electric Corporation High level synthesis apparatus, high level synthesis method, and computer readable medium
JP2020537789A (ja) * 2017-10-17 2020-12-24 ザイリンクス インコーポレイテッドXilinx Incorporated 超並列ソフトウェア定義ハードウェアシステムにおける静的ブロックスケジューリング

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106155755B (zh) * 2015-06-03 2020-06-23 上海红神信息技术有限公司 程序编译方法和程序编译器
US10192014B2 (en) * 2015-08-27 2019-01-29 Mitsubishi Electric Corporation Circuit design support apparatus and computer readable medium
US10481881B2 (en) * 2017-06-22 2019-11-19 Archeo Futurus, Inc. Mapping a computer code to wires and gates
US20230325566A1 (en) * 2022-04-11 2023-10-12 Arteris, Inc. Automatic configuration of pipeline modules in an electronics system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006351047A (ja) * 2006-10-02 2006-12-28 Nec Corp データ処理装置および方法、コンピュータプログラム、情報記憶媒体、並列演算装置、データ処理システム
JP2008071089A (ja) * 2006-09-13 2008-03-27 Nec Corp 動作合成システム、動作合成方法、プログラム
JP2009025973A (ja) * 2007-07-18 2009-02-05 Sharp Corp 動作合成装置、半導体集積回路の製造方法、動作合成方法、動作合成制御プログラムおよび可読記録媒体
JP2009238085A (ja) * 2008-03-28 2009-10-15 Nec Corp 動作合成システム、動作合成方法および動作合成用プログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6782511B1 (en) * 1999-05-26 2004-08-24 Cadence Design Systems, Inc. Behavioral-synthesis electronic design automation tool business-to-business application service provider
JP3921367B2 (ja) 2001-09-26 2007-05-30 日本電気株式会社 データ処理装置および方法、コンピュータプログラム、情報記憶媒体、並列演算装置、データ処理システム
JP4204039B2 (ja) * 2003-04-24 2009-01-07 シャープ株式会社 動作合成システム、動作合成方法、制御プログラム、可読記録媒体、論理回路の製造方法および論理回路

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008071089A (ja) * 2006-09-13 2008-03-27 Nec Corp 動作合成システム、動作合成方法、プログラム
JP2006351047A (ja) * 2006-10-02 2006-12-28 Nec Corp データ処理装置および方法、コンピュータプログラム、情報記憶媒体、並列演算装置、データ処理システム
JP2009025973A (ja) * 2007-07-18 2009-02-05 Sharp Corp 動作合成装置、半導体集積回路の製造方法、動作合成方法、動作合成制御プログラムおよび可読記録媒体
JP2009238085A (ja) * 2008-03-28 2009-10-15 Nec Corp 動作合成システム、動作合成方法および動作合成用プログラム

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017104149A1 (ja) * 2015-12-16 2017-06-22 株式会社ソシオネクスト 設計方法、設計プログラム及び設計装置
US10606972B2 (en) 2015-12-16 2020-03-31 Socionext Inc. Method, design program, and design apparatus of a high level synthesis process of a circuit
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 三菱電機株式会社 高位合成装置、高位合成方法及び高位合成プログラム
JP6246445B1 (ja) * 2016-03-17 2017-12-13 三菱電機株式会社 高位合成装置、高位合成方法及び高位合成プログラム
JP2020537789A (ja) * 2017-10-17 2020-12-24 ザイリンクス インコーポレイテッドXilinx Incorporated 超並列ソフトウェア定義ハードウェアシステムにおける静的ブロックスケジューリング
JP7337053B2 (ja) 2017-10-17 2023-09-01 ザイリンクス インコーポレイテッド 超並列ソフトウェア定義ハードウェアシステムにおける静的ブロックスケジューリング

Also Published As

Publication number Publication date
US20160042099A1 (en) 2016-02-11
JP5985900B2 (ja) 2016-09-06
US20130346929A1 (en) 2013-12-26
US9201996B2 (en) 2015-12-01

Similar Documents

Publication Publication Date Title
JP5985900B2 (ja) 動作合成装置、動作合成装置を備えたデータ処理システム、及び、動作合成プログラム
JP2014016894A (ja) 並列演算装置、並列演算装置を備えたデータ処理システム、及び、データ処理プログラム
US20070283311A1 (en) Method and system for dynamic reconfiguration of field programmable gate arrays
US8286025B1 (en) Selection of port adapters for clock crossing boundaries
US10691856B1 (en) System design flow with runtime customizable circuits
US10289093B1 (en) Runtime adaptive generator circuit
JP6728345B2 (ja) 対話型マルチステップ物理合成
JP4272108B2 (ja) データ処理装置用バス相互接続ブロックの設計に関するフレキシビリティの改善
CN109408846B (zh) 集成电路、非暂时性计算机可读介质以及计算系统
US7313768B2 (en) Register file and method for designing a register file
JP2000057201A (ja) 低電力vlsiデザインのための制限付きレジスタ共用方法及びそのシステム
JP5797438B2 (ja) シミュレーション装置、シミュレーション方法、シミュレーター及び記憶媒体
US9779197B1 (en) Method and system of merging memory cells into multi-bit registers in an integrated circuit layout
JP2018531457A6 (ja) 対話型マルチステップ物理合成
JP2020154803A (ja) 回路設計方法およびプログラム
US10303833B1 (en) Parallelizing timing-based operations for circuit designs
Schölzel Software-based self-repair of statically scheduled superscalar data paths
US8146041B1 (en) Latch based optimization during implementation of circuit designs for programmable logic devices
KR102611888B1 (ko) 스위칭 액티비티에 기초한 반도체 장치의 배치 방법 및 이에 의해 제조된 반도체 장치
JP6081832B2 (ja) 動作合成装置及び動作合成プログラム
US10606972B2 (en) Method, design program, and design apparatus of a high level synthesis process of a circuit
JP2008299464A (ja) 消費電力計算方法、消費電力計算プログラムおよび消費電力計算装置
US6532584B1 (en) Circuit synthesis method
JP2008198003A (ja) アレイ型プロセッサ
JPH11232077A (ja) 情報処理システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150219

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160317

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160412

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160420

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160804

R150 Certificate of patent or registration of utility model

Ref document number: 5985900

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150