JP7150668B2 - 高位合成装置及び高位合成方法 - Google Patents

高位合成装置及び高位合成方法 Download PDF

Info

Publication number
JP7150668B2
JP7150668B2 JP2019115205A JP2019115205A JP7150668B2 JP 7150668 B2 JP7150668 B2 JP 7150668B2 JP 2019115205 A JP2019115205 A JP 2019115205A JP 2019115205 A JP2019115205 A JP 2019115205A JP 7150668 B2 JP7150668 B2 JP 7150668B2
Authority
JP
Japan
Prior art keywords
code
level synthesis
external memory
access
unit
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
JP2019115205A
Other languages
English (en)
Other versions
JP2021002185A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2019115205A priority Critical patent/JP7150668B2/ja
Priority to PCT/JP2020/018589 priority patent/WO2020255576A1/ja
Priority to US17/621,010 priority patent/US20220366111A1/en
Publication of JP2021002185A publication Critical patent/JP2021002185A/ja
Application granted granted Critical
Publication of JP7150668B2 publication Critical patent/JP7150668B2/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
    • 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/33Design verification, e.g. functional simulation or model checking

Description

本発明は、プログラミング言語を用いて論理回路の記述を生成する高位合成装置に関する。
FPGA(Field Programmable Gate Array)等の集積回路(又は論理回路)の構成を記述する言語としてハードウェア記述言語(HDL:hardware description language)が知られている。
ハードウェア記述言語を用いた集積回路の設計では、ソースコードの量が膨大になる場合があり、近年では、C言語などの高級言語を用いてアルゴリズム等の設計を行ってソースコード(高位合成コード)の量を低減し、ハードウェア記述言語を生成する技術が知られている(例えば、特許文献1)。
特許文献1では、高位合成コードに含まれるループ処理を抽出し、ループ内の処理時間を短縮するように高位合成コードを変更する技術が開示されている。
国際公開2017/154183号
近年では、FPGA等の集積回路で画像処理や機械学習等の大量のデータを処理することが検討されている。画像等の大量のデータを扱う場合では、FPGAの外部にメモリを付加して、入力されたデータを一旦外部メモリに格納してから集積回路で処理する構成が望ましい。
しかしながら、上記従来例では、集積回路に外部メモリを付加した構成を考慮しておらず、外部メモリを利用する最適なハードウェア記述言語を自動的に生成できない、という問題があった。
そこで本発明は、上記問題点に鑑みてなされたもので、集積回路に外部メモリを付加したハードウェアに最適なハードウェア記述言語を自動的に生成することを目的とする。
本発明は、プロセッサとメモリを有し、外部メモリに接続された集積回路の構成を記述したハードウェア記述コードを生成する高位合成装置であって、前記集積回路に実行させる処理を記述した高位合成コードと、前記外部メモリとの間でデータの授受を行う外部メモリアクセス変数とを受け付けて、前記高位合成コードを解析し、解析結果に基づいて前記高位合成コードを再構成する高位合成コード調整部を有し、前記高位合成コード調整部は、前記高位合成コード内の外部メモリアクセス変数を解析し、前記外部メモリにバーストアクセスが可能か否かを判定するバーストアクセス判定部と、前記バーストアクセスが可能な外部メモリアクセス変数に対して、バーストアクセスを実行するコードを前記高位合成コードに付加して再構成するコード再構成部と、を含む。
したがって、本発明は、外部メモリへのアクセスを効率よく行う集積回路の高位合成コードを生成することで、集積回路に外部メモリを付加したハードウェアに最適なハードウェア記述言語を自動的に生成することができる。
本明細書において開示される主題の、少なくとも一つの実施の詳細は、添付されている図面と以下の記述の中で述べられる。開示される主題のその他の特徴、態様、効果は、以下の開示、図面、請求項により明らかにされる。
本発明の実施例1を示し、高位合成装置の一例を示すブロック図である。 本発明の実施例1を示し、設計対象のハードウェアで行われる処理の一例を示す図である。 本発明の実施例1を示し、生成されたハードウェア記述言語を集積回路に適用したハードウェアの一例を示すブロック図である。 本発明の実施例1を示し、集積回路が外部メモリにアクセスする処理の一例を示す図である。 本発明の実施例1を示し、高位合成装置で行われる処理の一例を示すフローチャートである。 本発明の実施例1を示し、高位合成装置で行われるバーストアクセス判定処理の一例を示すフローチャートである。 本発明の実施例1を示し、高位合成装置で行われるコード再構成処理の一例を示すフローチャートである。 本発明の実施例1を示し、高位合成装置に入力される高位合成コードの一例を示す図である。 本発明の実施例1を示し、高位合成装置が使用するコード再構成情報の一例を示す図である。 本発明の実施例1を示し、外部メモリのアクセスパターンがアドレスのインクリメントの例を示す図である 本発明の実施例1を示し、外部メモリのアクセスパターンがアドレスのデクリメントの例を示す図である 本発明の実施例1を示し、外部メモリのアクセスパターンがランダムなアドレスの例を示す図である 本発明の実施例1を示し、高位合成装置が再構成した高位合成コードの一例を示す図である。 従来例を示し、従来例によるハードウェアの構成の一例を示すブロック図である。 従来例を示し、従来例による外部メモリへのアクセスの一例を示す図である。 本発明の実施例2を示し、高位合成装置の一例を示すブロック図である。 本発明の実施例2を示し、高位合成装置で行われる処理の一例を示すフローチャートである。 本発明の実施例2を示し、高位合成装置で行われるデータ幅判定処理の一例を示すフローチャートである。 本発明の実施例2を示し、高位合成装置のコード再構成情報の一例を示す図である。 本発明の実施例2を示し、高位合成装置のコード再構成処理の一例を示す図である。 本発明の実施例2を示し、高位合成装置が生成する高位合成コードの一例を示す図である。 本発明の実施例3を示し、高位合成装置の一例を示すブロック図である。 本発明の実施例4を示し、高位合成装置の一例を示すブロック図である。
以下、本発明の実施形態を添付図面に基づいて説明する。
図1は、本発明の実施例1を示し、高位合成装置1の一例を示すブロック図である。高位合成装置1は、高位合成コードと外部メモリ情報を受け付けて、外部メモリを接続した集積回路(論理回路)の構成を記述したハードウェア記述言語(HDL:hardware description language)を生成する。
高位合成装置1は、処理装置(プロセッサ)100と、主記憶(メモリ)101と、記憶装置(ストレージ)200と、入力装置300と、表示装置400を含む計算機である。
記憶装置200には、高位合成コード記憶部210と、外部メモリ情報記憶部220と、HDLコード記憶部240と、コード再構成データベース230が格納されている。
高位合成コード記憶部210には、C言語やC++言語やPython等の高級言語で記述された集積回路で行われる処理の定義(またはアルゴリズム)が格納される。外部メモリ情報記憶部220は、集積回路に付加された外部メモリの情報が格納される。
コード再構成データベース230には、外部メモリへのアクセスパターンに応じた集積回路の構成情報が格納される。HDLコード記憶部240には、高位合成装置1が生成したハードウェア記述言語が格納される。ハードウェア記述言語としては、VerilogやVHDLを採用することができる。
主記憶101には、高位合成コードを調整(Tune up)する高位合成コード調整部10と、高位合成コード調整部10で再構成された高位合成コードからHDLコードを生成する高位合成部160がプログラムとして格納されて処理装置100によって実行される。
高位合成コード調整部10は、ループ処理抽出部110と、外部メモリアクセス変数決定部120と、アクセスパターン解析部130と、バーストアクセス判定部140と、コード再構成部150から構成される。
処理装置100は、ループ処理抽出部110と、外部メモリアクセス変数決定部120と、アクセスパターン解析部130と、バーストアクセス判定部140と、コード再構成部150と、高位合成部160のプログラムを主記憶101から読み込んでそれぞれ機能させる。
処理装置100は、各機能部のプログラムに従って処理を実行することによって、所定の機能を提供する機能部として稼働する。例えば、処理装置100は、ループ処理検出プログラムに従って処理を実行することでループ処理抽出部110として機能する。他のプログラムについても同様である。さらに、処理装置100は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
ループ処理抽出部110は、高位合成コード記憶部210から高位合成コードを読み込んで、高位合成コード内のループ処理を検出する。外部メモリアクセス変数決定部120は、外部メモリ情報記憶部220から外部メモリ情報を読み込んで、ループ処理抽出部110で検出されたループ処理で外部メモリからアクセスした値を格納する変数を決定する。
アクセスパターン解析部130は、検出されたループ処理で、集積回路が外部メモリをアクセスするパターンを解析する。バーストアクセス判定部140は、アクセスパターンの解析結果と決定された変数に基づいて、ループ処理におけるバーストアクセスの適用を判定する。
コード再構成部150は、バーストアクセスの判定結果に基づいて高位合成コードのループ処理にバーストアクセスのコードを追加し、変数をバッファに置き換え、処理の並列化またはパイプライン処理を加え、再構成した高位合成コードを出力する。
高位合成部160は、コード再構成部150でコードを再構成された高位合成コードを読み込んで、集積回路のハードウェアの構成を決定するハードウェア記述言語のコード(以下HDLコード)を出力してHDLコード記憶部240に格納する。
図2は、ハードウェアで行われる処理の一例を示す図である。本実施例では、集積回路を含むハードウェア50に画像1と画像2を入力し、画像1と画像2を合成する積算処理と、図中水平方向で反転させた画像を出力させる反転処理を実行させる。
高位合成コードは、上記画像処理をハードウェア50の集積回路で実現させるためのHDLコードを高位合成装置1で生成させる入力である。
図3は、本発明の実施例1を示し、高位合成装置1で生成したハードウェア記述言語を集積回路に適用したハードウェア50の一例を示すブロック図である。
ハードウェア50は、基板上に集積回路60と外部メモリ70を配置し、メモリバス80で集積回路60と外部メモリ70を接続する例を示す。集積回路60としては、FPGA(Field Programmable Gate Array)や、ASIC(Application Specific Integrated Circuits)あるいはPLD(Programmable Logic Device)を採用することができる。外部メモリ70としては、バースト転送が可能なDRAM等を採用することができる。
集積回路60の内部は、図4(後述)に示す処理を行うように、高位合成コードから生成されたHDLコードによって構成された回路の一例を示す。
集積回路60は、処理を並列的に実行する並列実行制御62と、外部メモリ70から画像1と画像2を連続的に読み込むバーストアクセス制御63と、読み込んだ画像1と画像2を一時的に格納するバッファ(FIFO:First In First Out)64、65と、バッファ64、65から画像1と画像2を読み込んで、積算処理と反転処理を実行して出力画像を生成する積算・反転処理61と、出力画像を一時的に格納するバッファ(BRAM:Block RAM)65を含む。なお、バッファ65に格納された出力画像は、バーストアクセス制御63によって、所定のタイミングで外部メモリ70に書き込まれる。
図4は、集積回路60が外部メモリ70にアクセスする処理の一例を示す図である。集積回路60は、外部メモリ70から画像1と画像2を5画素ずつ連続的に読み込み(バーストアクセス)、FIFOで構成されたバッファへ投入して積算及び反転処理を並列的に実行する。なお、バーストアクセスのデータは5個に限定されるものではなく、外部メモリ70の仕様などに応じて適宜設定することができる。
バーストアクセス制御63が読み込んだ画像1と画像2は、FIFOで構成されたバッファ64、65へ並列的に読み込まれる。そして、バッファ64、65に読み込まれた順に積算・反転処理61で画像1と画像2を取得して処理を実行し出力画像を生成する。
本実施例の高位合成コードから得られたHDLコードを集積回路60へ適用することで、複数の画素を連続的に読み込むバーストアクセスと、演算処理を並列的に実行させることで、ハードウェア50の処理能力を向上させることができる。
図5は、高位合成装置1で行われる処理の一例を示すフローチャートである。この処理は、高位合成装置1の利用者等の指令に基づいて開始される。処理の開始に先立って、高位合成コードが高位合成コード記憶部210に格納され、集積回路60が外部メモリ70から読み込むデータを格納する変数の情報(外部メモリアクセス変数情報221)等が外部メモリ情報記憶部220に予め格納されている。
高位合成装置1の処理は、高位合成コード調整部10が、高位合成コードと外部メモリアクセス変数情報221を受け付けて、高位合成コードの解析結果に基づいて当該高位合成コードを再構成する処理と、再構成された高位合成コードを高位合成部160へ入力してHDLコードを生成する処理が行われる。
まず、ループ処理抽出部110が高位合成コード記憶部210から高位合成コードを読み込んで、高位合成コードに含まれるループ処理を抽出し、ループの抽出結果231をコード再構成データベース230のコード再構成情報235に格納する(S100)。
次に、外部メモリアクセス変数決定部120は、外部メモリ情報記憶部220から外部メモリアクセス変数情報221を読み込んで、高位合成コードのループ処理で使用する変数を決定し、外部メモリアクセス変数決定結果232としてコード再構成データベース230のコード再構成情報235に書き込む(S200)。
なお、外部メモリアクセス変数情報221としては、外部メモリ70からデータを読み込む配列変数(図10A~図10C)等であり、予め設定された情報である。また、外部メモリ情報記憶部220は、ハードウェア50(基板上)に搭載する外部メモリ70と、外部メモリ70をアクセスする集積回路60の設計情報等に基づいて予め設定される。
アクセスパターン解析部130は、高位合成コードのループ処理で外部メモリ70からデータを読み込む際のアクセスパターンを解析し、解析結果をアクセスパターン結果233としてコード再構成データベース230のコード再構成情報235に書き込む(S300)。アクセスパターン結果233は、例えば、外部メモリ70のアドレスをインクリメントまたはデクリメントあるいはランダム等に分類することができる。
次に、バーストアクセス判定部140が、アクセスパターン結果233に基づいてバーストアクセスが可能か否かを判定し、バーストアクセス判定結果234をコード再構成データベース230のコード再構成情報235に書き込む(S400)。
コード再構成部150は、コード再構成データベース230からコード再構成情報235を読み込んで、バーストアクセス判定結果234がバーストアクセス可能であれば、アクセス方法とアクセスパターンに基づいて、バーストアクセスのコードを高位合成コードのループ処理に追加する(S500)。また、コード再構成部150は、高位合成コード211中の変数をバッファに変更する。また、コード再構成部150は、高位合成コード211中の処理を使用するバッファの種類に応じて並列化処理またはパイプライン処理に変更する。
上述のように、ステップS500では、コード再構成部150が、バーストアクセス処理の追加や、バッファへの変更、並列化またはパイプライン化などのコードの再構成(変更)を実施する。コード再構成部150は、バーストアクセス等でコードを再構成した高位合成コードを生成して、高位合成部160へ出力する。
高位合成部160は、コード再構成部150から出力された高位合成コードを解析して、HDLコードを出力し、HDLコード記憶部240に格納する(S600)。
上記処理により、高位合成コードのループ処理の抽出と、バーストアクセスの追加及び並列処理のコードの再構成が自動的に実行されて、コードが再構成された高位合成コードから高位合成部160がHDLコード241を生成してHDLコード記憶部240に格納する。
なお、本実施例では、高位合成コードと外部メモリアクセス変数情報221を記憶装置200に予め格納しておいた例を示すが、処理の開始時に高位合成コードと外部メモリアクセス変数情報221を外部や入力装置300から受け付けるようにしてもよい。
図8は、高位合成装置1に入力される高位合成コード211の一例を示す図である。高位合成コード211は、集積回路60で実行する処理を記述したソースコードで、高位合成コード記憶部210に予め格納されている。
本実施例の高位合成コード211は、集積回路60が2つの画像(図中img1、img2)を外部メモリ70から読み込みながら、同一の座標の画素を加算して反転させて出力画像を生成する処理を示す。高位合成コード211には、2つのループ処理500、501が含まれる。
ループ処理500にはラベル「LOOP1」が設定され、ループ処理501には、ラベル「LOOP11」が設定される。
本実施例では、高位合成コード211をC++言語で記述した例を示すが、これに限定されるものではなく、C言語やSystemC言語、Matlab言語あるいはPython言語等で記述することができる。
図9は、高位合成装置1が使用するコード再構成情報235の一例を示す図である。コード再構成情報235は、高位合成コード211から抽出したループ処理の識別子を格納するループ#2351と、ループ処理の名称を格納するループ名2352と、データを格納する変数の識別子を格納する変数#2353と、データを格納する変数の名称を格納する外部メモリアクセス変数2354と、外部メモリ70へのアクセス方法及びアクセスパターンを格納するアクセス方法/アクセスパターン2355と、バーストアクセスの可否を格納するバーストアクセス2356と、バッファの形式を格納するバッファ2357と、バッファの名称を格納するバッファ名2358と、バッファの容量を格納するバッファサイズ2359をひとつのエントリに含む。
ループ#2351は、ループ処理抽出部110によって付与される識別子で、高位合成コード211から抽出されたループ毎に設定される。ループ名2352は、ループ処理抽出部110が高位合成コード211から取得したループの名称(ラベル)を格納する。
変数#2353は、外部メモリアクセス変数決定部120が設定した識別子が格納される。外部メモリアクセス変数2354には、外部メモリアクセス変数決定部120が高位合成コード211から取得した変数の名称が格納される。
アクセス方法/アクセスパターン2355には、アクセスパターン解析部130が解析したループ処理中の外部メモリ70へのアクセス方法とアクセスパターンが格納される。バーストアクセス2356には、バーストアクセス判定部140が決定したバーストアクセスの可否が格納される。バーストアクセスが可能であれば「OK」が格納され、不可であれば「NG」が格納される。
バッファ2357には、バーストアクセス判定部140が決定した外部メモリアクセス変数2354に割り当てるバッファの形式が格納される。バッファの形式としては、FIFOやダブルバッファなどを設定することができる。
バッファ名2358には、バーストアクセス判定部140が高位合成コード211に基づいて決定したバッファの名称が格納される。バッファサイズ2359には、バーストアクセス判定部140が高位合成コード211に基づいて決定した容量が格納される。
図10Aは、外部メモリ70のアクセスパターンがインクリメントの例を示す図である。図示の例は、変数Xのデータ配列131に対して、アドレス(またはインデックス)iをインクリメント(加算)して隣り合うアドレスに順次アクセスするパターンを示す。アクセスする方向134は、アドレスが増大する方向となる。
図10Bは、外部メモリ70のアクセスパターンがデクリメントの例を示す図である。図示の例は、変数Yのデータ配列132に対して、アドレス(またはインデックス)iをデクリメント(減算)して隣り合うアドレスに順次アクセスするパターンを示す。アクセスする方向134は、アドレスが減少する方向となる。
図10Cは、外部メモリ70のアクセスパターンがランダムなアドレスの例を示す図である。図示の例は、変数Zのデータ配列133に対して、アドレス(またはインデックス)iがランダムに増減する方向134でアクセスを行う例を示す。
アクセスパターン解析部130では、ループ処理内の外部メモリ70のアクセスパターンが上記図10A~図10Cのいずれであるかを判定し、判定結果をコード再構成情報235のアクセス方法/アクセスパターン2355に書き込む。
本実施例では、図10Aや図10Bで示すように、隣り合うアドレスのデータを順次アクセスするループ処理を、バーストアクセスに変更して隣り合うアドレスのデータを複数個まとめてアクセスする。
本実施例のバーストアクセスは、図4で示したように、1回のバーストリード命令で、アドレスが連続する5個のデータを読み込む例を示している。本実施例では、外部メモリ70から画像のデータを読み込む際には、図10Aのアドレスをインクリメントする方向へバーストアクセスを行う。また、画像の反転処理では、図10Bのように、アドレスをデクリメントする方向でアクセスする。
なお、アクセスパターン解析部130は、高位合成コード211の構文解析やコードをコンパイルしてからアドレスを解析することでアクセスパターンを解析することができる。
図6は、高位合成装置1で行われるバーストアクセス判定処理の一例を示すフローチャートである。この処理は、図5のステップS400に示したバーストアクセス判定部140の処理である。
バーストアクセス判定部140は、コード再構成情報235から外部メモリアクセス変数2354をひとつ選択して当該エントリを読み込む(S401)。バーストアクセス判定部140は、アクセス方法/アクセスパターン2355のアクセスパターンがインクリメントであるか否かを判定する(S402)。インクリメントであればステップS404へ進み、そうでない場合にはステップS403に進む。
ステップS404では、バーストアクセス判定部140が当該変数をバーストアクセスが可能な変数と判定して、コード再構成情報235のバーストアクセス2356に「OK」を格納する。ステップS405では、バーストアクセス判定部140がバッファの形式をFIFOに決定して、コード再構成情報235のバッファ2357に書き込む。
一方、ステップS403では、バーストアクセス判定部140はアクセスパターンがデクリメントであるか否を判定する。デクリメントであればステップS405へ進み、そうでない場合にはステップS409に進む。
ステップS405では、バーストアクセス判定部140が当該変数をバーストアクセスが可能な変数と判定して、コード再構成情報235のバーストアクセス2356に「OK」を格納する。ステップS407では、バーストアクセス判定部140がバッファの形式をダブルバッファに決定して、コード再構成情報235のバッファ2357に書き込む。
次に、ステップS408では、バーストアクセス判定部140が、ループ処理の回数をバッファサイズ2359としてコード再構成情報235に登録する。
ステップS409では、バーストアクセス判定部140がコード再構成情報235の全ての変数について処理が完了したか否かを判定して、完了していなければステップS401へ戻って上記処理を繰り返し、完了していれば処理を終了する。
アクセスパターンがインクリメントの場合、集積回路60は、アクセスしたデータを順次演算で使用することになるため、FIFO(先入れ先出し)にすることでバーストアクセスしながら「並列」に演算することが可能になる。
逆にデクリメントの場合、データのアクセス方向を逆にしなければならない。バーストアクセスはインクリメント方向のみ可能であるため、FIFOの順番では演算順序が逆になってしまう。そこで、バーストアクセス判定部140は、ダブルバッファの構成を設定する。ダブルバッファでは、データアクセス用のバッファと演算用バッファの2つを設定し、交互に切り替えることでバーストアクセスと演算を同時に処理することが可能になる。すなわち、本実施例では、バーストアクセスと演算処理をパイプライン化することで処理の高速化を実現する。
図7は、高位合成装置で行われるコード再構成処理の一例を示すフローチャートである。この処理は、図5のステップS500に示したコード再構成部150の処理である。
ステップS501でコード再構成部150は、コードの再構成処理が未実施で、かつ、外部メモリアクセス変数2354を内包するループ処理があるか否かを判定し、未実施のループ処理があればステップS502へ進み、そうでない場合には処理を終了する。
ステップS502では、コード再構成部150が、コード再構成情報235から未実施のループ処理(ループ名2352)をひとつ選択する。
ステップS503では、コード再構成部150が、コード再構成情報235のバーストアクセス2356を読み込んで、バーストアクセスが可能であるか否かを判定する。バーストアクセス2356が「OK」であればステップS504に進み、そうでなければステップS505へ進む。
ステップS505では、コード再構成部150がループ処理の高速化を行ってからステップS501へ戻って上記の処理を繰り返す。なお、ループ処理の高速化の一例としては、ループ処理内の演算をパイプライン化、もしくは並列化する等の処理を行えば良い。
ステップS504では、コード再構成部150が、選択されたループ処理から外部メモリアクセス変数2354をひとつ選択する。ステップS506では、コード再構成部150が、選択された変数がリードとライトのいずれであるかを判定する。リードであればステップS507へ進み、ライトであればステップS508へ進む。
ステップS507では、コード再構成部150が、現在選択されているループ処理の外側にバーストリードのコードを高位合成コード211に追加する。一方、ステップS508では、コード再構成部150が、現在選択されているループ処理の外側にバーストライトのコードを高位合成コード211に追加する。
次に、ステップS509では、コード再構成部150が、コード再構成情報235からバッファ名2538を読み込んで、バーストアクセスで使用するバッファ変数として高位合成コード211に追加する。
ステップS510では、コード再構成部150が、高位合成コード211の外部メモリアクセス変数2354を、バッファ変数(2358)に置き換える。そして、ステップS511では、コード再構成部150が、コード再構成情報235のバッファ2357を参照して、現在選択している変数のバッファがFIFOであるか否かを判定する。コード再構成部150は、バッファがFIFOであればステップS512へ進み、FIFOでなければステップS513に進む。
ステップS512では、コード再構成部150が、高位合成コード211にバーストアクセスによるループの並列処理を追加する。一方、ステップS513では、コード再構成部150が、高位合成コード211にバーストアクセスによるループのパイプライン処理を追加する。
そして、コード再構成部150は、ステップS503へ戻って、同一のループ処理(2352)の他の変数について処理を行う。コード再構成部150は、処理対象の全てのループ処理について上記処理を実行する。
上記処理によって、入力された図8の高位合成コード211は、図11に示すように再構成される。図11は、高位合成装置1が再構成した高位合成コード212の一例を示す図である。
図中符号510のコード群は、図7のステップS509で追加されたバッファを示す。図中符号511のコード「#pragama」はステップS512またはS513の並列処理またはパイプライン処理の制御コードである。「#pragama」はプリプロセッサ指示子で、ループ処理のパイプライン化や並列化は、当該指示子に基づいて実施される。なお、高位合成部160の種類によって表記は異なる。
図中符号512のコード群は、図7のステップS507で追加されたバーストリードの制御コードを示す。また、図中符号513のコード群は、図7のステップS505及びS510による変数をバッファに置換し、処理の高速化を行う例を示す。図中符号513のコード群は、図7のステップS508で追加されたバーストライトの制御コードを示す。
図12は、従来例を示し、従来例によるハードウェアの構成の一例を示すブロック図である。前記従来例によって、集積回路60から外部メモリ70にアクセスして積算及び反転処理を行うHDLコードを生成し、ハードウェア50に適用した例を示す。
図3に示した本実施例のHDLコードによるハードウェア50とは異なり、バーストアクセス制御やバッファ類はない。
図13は、従来例を示し、従来例によるハードウェアの処理の一例を示す図である。図12のハードウェア50で、画像1と画像2を読み込んで、積算、反転処理を加えた出力画像を生成する処理では、1画素ずつ読み込んで演算処理を実施している。
これに対して本実施例によるHDLコードを適用したハードウェア50では、図4で示したように、5画素を連続して読み込んで、読み込みの途中から演算処理を開始できるため、処理速度を大幅に向上させることが可能となる。
以上のように、本実施例によれば、外部メモリ70へのアクセスを効率よく行う高位合成コード212を生成することで、集積回路60に外部メモリ70を付加したハードウェア50に最適なハードウェア記述言語を自動的に生成することが可能となる。
図14は、本発明の実施例2を示し、高位合成装置の一例を示すブロック図である。実施例2では、高位合成コード調整部10に前記実施例1のバーストアクセス判定部140に代わってデータ幅判定部170を設け、コード再構成情報235は、図17で示すように前記実施例1のバーストアクセス2356を並列アクセス可能数2360に置き換え、バッファ2357、バッファ名2358、バッファサイズ2359をテンポラリレジスタ名2361に置き換えたもので、その他の構成は前記実施例1と同様である。
データ幅判定部170は、外部メモリ70と集積回路60を接続するメモリバス80のデータ幅を有効に利用できるように、外部メモリアクセス変数のデータ型と比較して、並列にアクセス可能なデータ数を判別する。
例えば、メモリバス80のデータ幅が16ビットで、1画素が8ビットの場合、集積回路60が2画素を並列的にアクセスすることで、処理速度を前記従来例に比して高速化させることが可能となる。
集積回路60が外部メモリ70からアクセスするデータのアドレスは連続している必要があるため、アクセスパターン解析部130では前記実施例1と同様にアクセスパターンを解析する。
図15は、高位合成装置1で行われる処理の一例を示すフローチャートである。ステップS100~S300は、前記実施例1の図5と同様である。
データ幅判定部170が、ステップS300のアクセスパターン結果に基づいて複数の画素を並列にアクセスすることが可能か否かを判定し、可能な場合は並列アクセス可能数を算出し、データ幅判定結果236をコード再構成データベース230のコード再構成情報235の並列アクセス可能数2360に書き込む(S400)。
コード再構成部150は、コード再構成データベース230からコード再構成情報235を読み込んで、並列アクセス可能数2360が2以上であれば並列アクセスが可能であるので、アクセス方法とアクセスパターンに基づいて、並列アクセスのコードを高位合成コードのループ処理に追加する(S700)。また、コード再構成部150は、高位合成コード211中の変数をテンポラリレジスタに変更する。
コード再構成部150は、並列アクセスの追加、テンポラリレジスタへの変更などのコードの再構成(変更)を実施する(S800)。
コード再構成部150は、並列アクセス等でコードを再構成した高位合成コードを生成して、高位合成部160へ出力する。
高位合成部160は、コード再構成部150から出力された高位合成コードを解析して、HDLコードを出力し、HDLコード記憶部240に格納する(S600)。
上記処理により、高位合成コードのループ処理の抽出と、並列アクセスの追加等の再構成が自動的に実行されて、コードが再構成された高位合成コードから高位合成部160がHDLコード241を生成する。
図16は、高位合成装置1で行われるデータ幅判定処理の一例を示すフローチャートである。この処理は、図15のステップS700に示したデータ幅判定部170の処理である。
データ幅判定部170は、コード再構成情報235から外部メモリアクセス変数2354をひとつ選択して当該エントリを読み込む(S701)。データ幅判定部170は、アクセス方法/アクセスパターン2355のアクセスパターンがインクリメントまたはデクリメントであるか否かを判定する(S702)。インクリメントまたはデクリメントであればステップS703へ進み、そうでない場合にはステップS705に進む。
ステップS703では、データ幅判定部170が当該変数を並列アクセスが可能な変数と判定して、読み込む1データのビット数とメモリバス80のデータ幅に基づいて並列アクセス可能数を算出する。データ幅判定部170は、コード再構成情報235の並列アクセス可能数2360へ同時にアクセス可能な画素数を格納する。なお、本実施例では、画素数を用いるが、画像データ以外の場合はデータ数を格納すればよい。
ステップS704では、データ幅判定部170が、並列アクセスを実行するレジスタをコード再構成情報235のテンポラリレジスタ名2361へ登録する。テンポラリレジスタ名2361は、入出力を行う外部メモリアクセス変数2354に応じて設定することができる。
ステップS705では、データ幅判定部170がコード再構成情報235の全ての変数について処理が完了したか否かを判定して、完了していなければステップS701へ戻って上記処理を繰り返し、完了していれば処理を終了する。
図17は、高位合成装置のコード再構成情報の一例を示す図である。コード再構成情報235は、実施例1のバーストアクセス2356を並列アクセス可能数2360に置き換え、バッファ2357、バッファ名2358、バッファサイズ2359をテンポラリレジスタ名2361に置き換えたものである。
図示の例では、変数のデータ型が8ビットで、メモリバス80のデータ幅が16ビットの例を示し、同時にアクセス可能なデータ数は「2」となる。
図18は、高位合成装置1のコード再構成処理の一例を示す図である。この処理は、図15のステップS800に示したコード再構成部150の処理である。
ステップS801でコード再構成部150は、コードの再構成処理が未実施で、かつ、外部メモリアクセス変数2354を内包するループ処理があるか否かを判定し、未実施のループ処理があればステップS802へ進み、そうでない場合には処理を終了する。
ステップS802では、コード再構成部150が、コード再構成情報235から未実施のループ処理(ループ名2352)をひとつ選択する。
ステップS803では、コード再構成部150が、コード再構成情報235の並列アクセス可能数2360を読み込んで、並列アクセスが可能であるか否かを判定する。並列アクセス可能数2360が2以上であればステップS804に進み、そうでなければステップS801へ戻って、次のループについて上記処理を実施する。
ステップS804では、コード再構成部150が、選択されたループ処理から外部メモリアクセス変数2354をひとつ選択する。ステップS805では、コード再構成部150が、選択された変数のデータ型(ビット数)を並列アクセス可能数2360に応じて変更する。
ステップS806では、コード再構成部150が、現在選択されている変数に対応するテンポラリレジスタ変数を高位合成コード211に追加する。
次に、ステップS807では、コード再構成部150が、データ型を変更した外部メモリアクセス変数を上記テンポラリレジスタに置換する。
ステップS808では、コード再構成部150が、コード再構成情報235のアクセス方法/アクセスパターン2355を参照して、外部メモリアクセス変数のアクセスがリードであるか否かを判定する。コード再構成部150は、アクセスがリードであればステップS809へ進み、ライトであればステップS810に進む。
ステップS809では、コード再構成部150が、外部メモリアクセス変数2354からテンポラリレジスタへの代入処理を高位合成コード211へ追加する。なお、コード再構成部150は、複数の画素を同時にアクセスするために、画素毎にシフトさせるなどの所定のビット操作を追加する。
一方、ステップS810では、コード再構成部150が、テンポラリレジスタから外部メモリアクセス変数2354への代入処理を高位合成コード211へ追加する。なお、コード再構成部150は、複数の画素を同時にアクセスするために、画素毎にシフトさせるなどの所定のビット操作を追加する。
次に、ステップS811では、コード再構成部150が、現在のループ処理で並列アクセスが可能な未処理の変数があるか否かを判定し、未処理の変数があればステップS804に戻って上記処理を繰り返し、未処理の変数がなければステップS812へ進む。
ステップS812では、コード再構成部150が、高位合成コード211のループ処理の回数を、ループ処理回数/並列アクセス数に変更する。そして、上記ステップS801へ戻って上記処理を繰り返して、処理対象の全てのループ処理について上記処理を実行する。
上記処理によって、入力された図8の高位合成コード211は、図19に示すように再構成される。図19は、高位合成装置1が再構成した高位合成コード213の一例を示す図である。
本実施例の高位合成コード213は、集積回路60がアクセスしたデータを並列数に応じて用意したテンポラリレジスタに読み込んで、並列的に演算を実施する処理に再構成されたものである。
図中符号520のコードは、図18のステップS805で変更されたデータ型(ビット数)を示す。図中符号521のコード群は、図18のステップS806によって追加されたテンポラリレジスタを示す。
図中符号522のコードは、図18のステップS812で変更されたループ数を示す。図中符号523のコード群は、図18のステップS809による、外部メモリアクセス変数からテンポラリレジスタへの代入処理を示す。
図中符号524のコード群は、図18のステップS807による外部メモリアクセス変数のテンポラリレジスタへの置換と演算の並列化の記述を示す。図中符号525のコード群は、図18のステップS810によるテンポラリレジスタから外部メモリアクセス変数への代入処理を示す。
以上のように、本実施例では、高位合成コード調整部10が、外部メモリ70のメモリバス80のデータ幅に合わせて並列演算数を増やすことで処理時間を短縮してハードウェア50の処理性能を向上させることが可能となる。
図20は、本発明の実施例3を示し、高位合成装置1の一例を示すブロック図である。本実施例では、集積回路60の制約条件として最大バッファサイズが指定されていた場合に、再構成後の高位合成コードが制約条件を満足するようにループ数を分割させる例を示す。
本実施例の高位合成装置1は、前記実施例1の構成に、制約条件記憶部250と、制約条件判定部180と、コード修正案決定部190を加えたもので、その他の構成は前記実施例1と同様である。なお、制約条件判定部180と、コード修正案決定部190は、高位合成コード調整部10内に追加される。
制約条件記憶部250には、集積回路60で設定可能なバッファサイズの最大値が格納されている。制約条件判定部180は、コード再構成部150が出力した高位合成コード212を読み込んで、記述されたバッファサイズが制約条件記憶部250の条件を満たしているか否かを判定する。
制約条件判定部180は、高位合成コード212のバッファサイズが制約条件記憶部250の最大値を超えている場合、コード修正案決定部190に通知する。コード修正案決定部190は、バッファサイズが制約条件記憶部250の最大値を超えているループ処理を特定し、ループ処理の分割等を提案する。なお、提案の内容は、表示装置400へ出力すればよい。
本実施例では、集積回路60の制約条件を超えた場合、高位合成装置1の利用者に、ループ処理の修正個所を提案することが可能となる。
図21は、本発明の実施例4を示し、高位合成装置の一例を示すブロック図である。本実施例では、実施例1のバーストアクセス制御と、実施例2の並列アクセスを組み合わせたものである。
高位合成コード調整部10内ではデータ幅判定部170の後段にバーストアクセス判定部140が配置される。その他の構成は前記実施例1、2と同様である。
本実施例の構成によれば、バーストアクセスに加えて、テンポラリレジスタによる並列アクセスによって、集積回路60の処理性能をさらに向上させることが可能となる。
<結び>
以上のように、上記実施例1~4の高位合成装置は、以下のような構成とすることができる。
(1)プロセッサ(処理装置100)とメモリ(主記憶101)を有し、外部メモリ(70)に接続された集積回路(60)の構成を記述したハードウェア記述コードを生成する高位合成装置(1)であって、前記集積回路(60)に実行させる処理を記述した高位合成コード(211)と、前記外部メモリ(70)との間でデータの授受を行う外部メモリアクセス変数(221)とを受け付けて、前記高位合成コード(211)を解析し、解析結果に基づいて前記高位合成コード(211)を再構成する高位合成コード調整部(10)を有し、前記高位合成コード調整部(10)は、前記高位合成コード(211)内の外部メモリアクセス変数(221)を解析し、前記外部メモリ(70)にバーストアクセスが可能か否かを判定するバーストアクセス判定部(140)と、前記バーストアクセスが可能な外部メモリアクセス変数(221)に対して、バーストアクセスを実行するコードを前記高位合成コード(211)に付加して再構成するコード再構成部(150)と、を含む。
上記構成によれば、高位合成コード211の外部メモリアクセス変数でバーストアクセスが可能であれば、高位合成装置は、高位合成コード211にバーストアクセスを実行するコードを付加して高位合成コード212を再構成することができる。バーストアクセスによりデータをまとめてアクセスすることで、集積回路60で行われる処理を高速化することができる。
(2)上記(1)に記載の高位合成装置(1)であって、コード再構成部(150)で再構成された前記高位合成コード(212)を入力して、前記ハードウェア記述コードを生成する高位合成部(160)を、さらに有する。
上記構成によれば、高位合成部160は、バーストアクセスのコードを付加された高位合成コード212を入力として集積回路60のHDLコードを生成することができる。集積回路60に当該HDLコードを適用することで、集積回路60はバーストアクセスによりデータをまとめてアクセスすることで、処理を高速化することができる。
(3)上記(1)に記載の高位合成装置(1)であって、前記高位合成コード調整部(10)は、前記高位合成コード(211)内のループ処理を抽出するループ処理抽出部(110)と、前記ループ処理内に記述された前記外部メモリアクセス変数(221)を決定する外部メモリアクセス変数決定部(120)と、さらに含む。
上記構成によれば、高位合成コード211のループ処理内に記述された外部メモリアクセス変数をバーストアクセスの対象とすることで、バーストアクセスのコードを付加して高位合成コード212を再構成することができる。
(4)上記(3)に記載の高位合成装置(1)であって、前記高位合成コード調整部(10)は、前記外部メモリアクセス変数(221)において、前記外部メモリ(70)へのアクセスパターンを解析するアクセスパターン解析部(130)を、さらに含む。
上記構成によれば、高位合成コード211のループ処理内に記述された外部メモリアクセス変数をバーストアクセスの対象とし、バーストアクセスのパターンを判定することが可能となる。
(5)上記(4)に記載の高位合成装置(1)であって、前記バーストアクセス判定部(140)は、前記アクセスパターンに応じて予め設定されたバッファを決定し、前記コード再構成部(150)は、前記決定された前記バッファの種類に応じてパイプライン処理または並列処理のコードを追加する。
上記構成によれば、コード再構成部150が、バーストアクセス処理の追加や、バッファへの変更、並列化またはパイプライン化などのコードの再構成(変更)を実施する。コード再構成部150は、バーストアクセス等でコードを再構成した高位合成コード212を生成して高位合成部160へ出力することができる。高位合成コード212からHDLコードを生成することで、集積回路60が外部メモリ70を効率よくアクセスして高速に演算処理を実行することが可能となる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
<補足>
特許請求の範囲に記載した以外の本発明の観点の代表的なものとして、次のものがあげられる。
<13>
プロセッサとメモリを有する高位合成装置が、外部メモリに接続された集積回路の構成を記述したハードウェア記述コードを生成する高位合成方法であって、
前記高位合成装置が、前記集積回路に実行させる処理を記述した高位合成コードと、前記外部メモリとの間でデータの授受を行う外部メモリアクセス変数とを受け付ける入力ステップと、
前記高位合成装置が、前記高位合成コード内の外部メモリアクセス変数のデータ型と前記外部メモリのデータ幅から、並列にアクセス可能なデータ数を算出するデータ幅判定ステップと、
前記高位合成装置が、前記並列にアクセスが可能な前記外部メモリアクセス変数に対して、並列に所定の処理を実行するコードを前記高位合成コードに付加して再構成するコード再構成ステップと、
を含むことを特徴とする高位合成方法。
<14>
上記<13>に記載の高位合成方法であって、
前記高位合成装置が、前記再構成された前記高位合成コードを入力して、前記ハードウェア記述コードを生成する高位合成ステップを、さらに含むことを特徴とする高位合成方法。
<15>
プロセッサとメモリとストレージ装置を備えた計算機で、外部メモリに接続された集積回路の構成を記述したハードウェア記述コードを生成させるためのプログラムを格納した記憶媒体であって、
前記集積回路に実行させる処理を記述した高位合成コードと、前記外部メモリとの間でデータの授受を行う外部メモリアクセス変数とを受け付ける入力ステップと、
前記高位合成コード内の外部メモリアクセス変数を解析し、前記外部メモリにバーストアクセスが可能か否かを判定するバーストアクセス判定ステップと、
前記バーストアクセスが可能な外部メモリアクセス変数に対して、バーストアクセスを実行するコードを前記高位合成コードに付加して再構成するコード再構成ステップと、
を前記計算機に実行させるためのプログラムを格納した非一時的な計算機読み取り可能な記憶媒体。
1 高位合成装置
50 ハードウェア
60 集積回路
70 外部メモリ
100 処理装置
101 主記憶
110 ループ処理抽出部
120 外部メモリアクセス変数決定部
130 アクセスパターン解析部
140 バーストアクセス判定部
150 コード再構成部
160 高位合成部
200 記憶装置
211、212 高位合成コード
220 外部メモリ情報記憶部
221 外部メモリアクセス変数情報221
230 コード再構成データベース
235 コード再構成情報
300 入力装置
400 出力装置

Claims (12)

  1. プロセッサとメモリを有し、外部メモリに接続された集積回路の構成を記述したハードウェア記述コードを生成する高位合成装置であって、
    前記集積回路に実行させる処理を記述した高位合成コードと、前記外部メモリとの間でデータの授受を行う外部メモリアクセス変数とを受け付けて、前記高位合成コードを解析し、解析結果に基づいて前記高位合成コードを再構成する高位合成コード調整部を有し、
    前記高位合成コード調整部は、
    前記高位合成コード内の外部メモリアクセス変数を解析し、前記外部メモリにバーストアクセスが可能か否かを判定するバーストアクセス判定部と、
    前記バーストアクセスが可能な外部メモリアクセス変数に対して、バーストアクセスを実行するコードを前記高位合成コードに付加して再構成するコード再構成部と、
    を含むことを特徴とする高位合成装置。
  2. 請求項1に記載の高位合成装置であって、
    前記コード再構成部で再構成された前記高位合成コードを入力して、前記ハードウェア記述コードを生成する高位合成部を、さらに有することを特徴とする高位合成装置。
  3. 請求項1に記載の高位合成装置であって、
    前記高位合成コード調整部は、
    前記高位合成コード内のループ処理を抽出するループ処理抽出部と、
    前記ループ処理内に記述された前記外部メモリアクセス変数を決定する外部メモリアクセス変数決定部と、
    をさらに含むことを特徴とする高位合成装置。
  4. 請求項3に記載の高位合成装置であって、
    前記高位合成コード調整部は、
    前記外部メモリアクセス変数において、前記外部メモリへのアクセスパターンを解析するアクセスパターン解析部を、さらに含むことを特徴とする高位合成装置。
  5. 請求項4に記載の高位合成装置であって、
    前記バーストアクセス判定部は、
    前記アクセスパターンに応じて予め設定されたバッファを決定し、
    前記コード再構成部は、
    前記決定された前記バッファの種類に応じてパイプライン処理または並列処理のコードを追加することを特徴とする高位合成装置。
  6. プロセッサとメモリを有し、外部メモリに接続された集積回路の構成を記述したハードウェア記述コードを生成する高位合成装置であって、
    前記集積回路に実行させる処理を記述した高位合成コードと、前記外部メモリとの間でデータの授受を行う外部メモリアクセス変数とを受け付けて、前記高位合成コードを解析し、解析結果に基づいて前記高位合成コードを再構成する高位合成コード調整部を有し、
    前記高位合成コード調整部は、
    前記高位合成コード内の外部メモリアクセス変数のデータ型と前記外部メモリのデータ幅から、並列にアクセス可能なデータ数を算出するデータ幅判定部と、
    前記並列にアクセスが可能な前記外部メモリアクセス変数に対して、並列に所定の処理を実行するコードを前記高位合成コードに付加して再構成するコード再構成部と、
    を含むことを特徴とする高位合成装置。
  7. 請求項6に記載の高位合成装置であって、
    前記コード再構成部で再構成された前記高位合成コードを入力して、前記ハードウェア記述コードを生成する高位合成部を、さらに有することを特徴とする高位合成装置。
  8. プロセッサとメモリを有する高位合成装置が、外部メモリに接続された集積回路の構成を記述したハードウェア記述コードを生成する高位合成方法であって、
    前記高位合成装置が、前記集積回路に実行させる処理を記述した高位合成コードと、前記外部メモリとの間でデータの授受を行う外部メモリアクセス変数とを受け付ける入力ステップと、
    前記高位合成装置が、前記高位合成コード内の外部メモリアクセス変数を解析し、前記外部メモリにバーストアクセスが可能か否かを判定するバーストアクセス判定ステップと、
    前記高位合成装置が、前記バーストアクセスが可能な外部メモリアクセス変数に対して、バーストアクセスを実行するコードを前記高位合成コードに付加して再構成するコード再構成ステップと、
    を含むことを特徴とする高位合成方法。
  9. 請求項8に記載の高位合成方法であって、
    前記高位合成装置が、前記再構成された前記高位合成コードを入力して、前記ハードウェア記述コードを生成する高位合成ステップを、さらに含むことを特徴とする高位合成方法。
  10. 請求項8に記載の高位合成方法であって、
    前記高位合成装置が、前記高位合成コード内のループ処理を抽出するループ処理抽出ステップと、
    前記高位合成装置が、前記ループ処理内に記述された前記外部メモリアクセス変数を決定する外部メモリアクセス変数決定ステップと、
    をさらに含むことを特徴とする高位合成方法。
  11. 請求項10に記載の高位合成方法であって、
    前記高位合成装置が、前記外部メモリアクセス変数において、前記外部メモリへのアクセスパターンを解析するアクセスパターン解析ステップを、さらに含むことを特徴とする高位合成方法。
  12. 請求項11に記載の高位合成方法であって、
    前記バーストアクセス判定ステップでは、
    前記アクセスパターンに応じて予め設定されたバッファを決定し、
    前記コード再構成ステップでは、
    前記決定された前記バッファの種類に応じてパイプライン処理または並列処理のコードを追加することを特徴とする高位合成方法。
JP2019115205A 2019-06-21 2019-06-21 高位合成装置及び高位合成方法 Active JP7150668B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2019115205A JP7150668B2 (ja) 2019-06-21 2019-06-21 高位合成装置及び高位合成方法
PCT/JP2020/018589 WO2020255576A1 (ja) 2019-06-21 2020-05-07 高位合成装置及び高位合成方法
US17/621,010 US20220366111A1 (en) 2019-06-21 2020-05-07 High-level synthesis device and high-level synthesis method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019115205A JP7150668B2 (ja) 2019-06-21 2019-06-21 高位合成装置及び高位合成方法

Publications (2)

Publication Number Publication Date
JP2021002185A JP2021002185A (ja) 2021-01-07
JP7150668B2 true JP7150668B2 (ja) 2022-10-11

Family

ID=73995583

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019115205A Active JP7150668B2 (ja) 2019-06-21 2019-06-21 高位合成装置及び高位合成方法

Country Status (3)

Country Link
US (1) US20220366111A1 (ja)
JP (1) JP7150668B2 (ja)
WO (1) WO2020255576A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013235472A (ja) 2012-05-10 2013-11-21 Nec Corp 装置情報管理装置、装置情報取得システム、装置情報取得方法およびプログラム
JP2014106639A (ja) 2012-11-26 2014-06-09 Ricoh Co Ltd 高位合成装置、高位合成方法、及び高位合成プログラム
JP2016177454A (ja) 2015-03-19 2016-10-06 富士通株式会社 動作合成方法、動作合成プログラムおよび動作合成装置
WO2017154183A1 (ja) 2016-03-10 2017-09-14 三菱電機株式会社 高位合成装置、高位合成方法及び高位合成プログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013235472A (ja) 2012-05-10 2013-11-21 Nec Corp 装置情報管理装置、装置情報取得システム、装置情報取得方法およびプログラム
JP2014106639A (ja) 2012-11-26 2014-06-09 Ricoh Co Ltd 高位合成装置、高位合成方法、及び高位合成プログラム
JP2016177454A (ja) 2015-03-19 2016-10-06 富士通株式会社 動作合成方法、動作合成プログラムおよび動作合成装置
WO2017154183A1 (ja) 2016-03-10 2017-09-14 三菱電機株式会社 高位合成装置、高位合成方法及び高位合成プログラム

Also Published As

Publication number Publication date
JP2021002185A (ja) 2021-01-07
US20220366111A1 (en) 2022-11-17
WO2020255576A1 (ja) 2020-12-24

Similar Documents

Publication Publication Date Title
EP3698313B1 (en) Image preprocessing for generalized image processing
JP7329533B2 (ja) 演算を加速するための方法および加速器装置
US20220365700A1 (en) Matrix transfer accelerator system and method
JP7337053B2 (ja) 超並列ソフトウェア定義ハードウェアシステムにおける静的ブロックスケジューリング
JP4833303B2 (ja) 動作合成ツールにおける配列変換
US20190212982A1 (en) Processor, information processing apparatus and operation method for processor
JP2010134697A (ja) コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
US8782591B1 (en) Physically aware logic synthesis of integrated circuit designs
WO2019170049A1 (zh) 一种卷积神经网络加速装置和方法
CN108388527B (zh) 直接存储器存取引擎及其方法
JP2008310700A (ja) 演算処理装置及び方法
US11455781B2 (en) Data reading/writing method and system in 3D image processing, storage medium and terminal
JP5071707B2 (ja) データ処理装置およびその制御方法
JP2017151604A (ja) 演算処理装置
JP7381429B2 (ja) ストレージ周辺の階層的ソート加速のためのストレージシステム及び方法
Srivastava et al. Accelerating face detection on programmable SoC using C-based synthesis
US9570125B1 (en) Apparatuses and methods for shifting data during a masked write to a buffer
JP7150668B2 (ja) 高位合成装置及び高位合成方法
JP7410961B2 (ja) 演算処理装置
TWI634436B (zh) 緩衝裝置及卷積運算裝置與方法
JP6365102B2 (ja) データ処理装置およびプログラム
JP2010244096A (ja) データ処理装置、印刷システムおよびプログラム
Sanchez-Roman et al. An euler solver accelerator in FPGA for computational fluid dynamics applications
Lee et al. VLSI design of a wavelet processing core
JP3675255B2 (ja) 情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211108

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220928

R150 Certificate of patent or registration of utility model

Ref document number: 7150668

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150