[go: up one dir, main page]

JP2008059066A - コンパイラ装置および半導体集積回路装置 - Google Patents

コンパイラ装置および半導体集積回路装置 Download PDF

Info

Publication number
JP2008059066A
JP2008059066A JP2006232365A JP2006232365A JP2008059066A JP 2008059066 A JP2008059066 A JP 2008059066A JP 2006232365 A JP2006232365 A JP 2006232365A JP 2006232365 A JP2006232365 A JP 2006232365A JP 2008059066 A JP2008059066 A JP 2008059066A
Authority
JP
Japan
Prior art keywords
circuit
fpga
circuit information
information
execution
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.)
Withdrawn
Application number
JP2006232365A
Other languages
English (en)
Inventor
Jiro Miyake
二郎 三宅
Ryoji Kusuki
良二 楠木
Toru Morikawa
徹 森河
Hiroyuki Mizobata
博幸 溝端
Yasunori Shimizu
康了 志水
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co 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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2006232365A priority Critical patent/JP2008059066A/ja
Priority to US11/896,131 priority patent/US20080059777A1/en
Publication of JP2008059066A publication Critical patent/JP2008059066A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Logic Circuits (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】ソースプログラム毎にFPGAの回路を設計する必要がなく、ソースプログラムを高速に演算可能で、FPGAの回路規模を最小に抑えるコンパイラ装置および半導体集積回路装置を提供する。
【解決手段】ソースプログラムのコンパイル時に、処理内容毎に設計した回路情報を複数格納した回路情報ライブラリ6を参照し、構成サイクル数および実行サイクル数が最小となるようFPGA14とプロセッサ12で実行する処理内容に切り分け、FPGA実行命令とFPGA構成命令をプログラムに組み込んで実行プログラムを生成し、FPGA実行命令が必要とする回路情報を回路情報ライブラリ6より抽出して回路情報保持構成制御手段13に格納し、プロセッサ12がFPGA構成命令を実行すると動的に回路情報を回路情報保持構成制御手段13によりFPGA14に組み込み構成させ、FPGA実行命令を実行すると処理内容をFPGA14で実行する。
【選択図】図1

Description

本発明はプロセッサとプログラマブルデバイスとを混載したコンパイラ装置および半導体集積回路装置にかかわり、特には、半導体集積回路装置の処理性能を向上するための技術に関する。
現在、PLD(Programmable Logic Device)もしくはFPGA(FieldProgrammable Gate Array)と呼ばれるプログラマブルデバイス(以下、FPGAで代表させる)は広く知られている。FPGAはユーザーがその回路を設計することを可能とするデバイスであり、ユーザーが設計した回路を即座に構成し、その動作を実現することができるというメリットがある。また、FPGAは回路を繰り返し構成することができるので、その時々に必要な回路に柔軟に変更することができ、FPGAに構成した回路に不具合がある場合には即座に不具合を修正し、修正した回路をFPGAに再構成できるというメリットがある。また、要求している処理性能を満たさない場合には、回路を修正し、もう一度FPGAに回路を構成することによって処理性能を上げることができるというメリットがある。
さらに、近年、このFPGAとプロセッサとを1つの半導体集積回路装置上に混載したものが提案されている。このような半導体集積回路装置においては、従来のプロセッサのプログラムの変更に加えて、FPGAで構成された部分の回路構成が変更可能となったため、システムの変更に柔軟に対応することができることになる。
従来のプロセッサとFPGAを混載した半導体集積回路装置の例として、次のようなデータ処理装置がある。それは、プロセッサに汎用性を持たせるために、プロセッサにFPGAを接続したシステム構成を有している。プログラムをコンパイルする際に、プロセッサで実行した場合に、実行速度を低下させるプログラム中の特定部分を検証する。そして、その特定部分を高速に実行することができるFPGA用の回路情報を生成する。さらに、当該のプログラムの起動時に、上記回路情報をFPGAに構成して、プログラムを高速に実行可能なシステム構成を実現する。
特開平8−69447号公報(第3−4頁、第1−3図)
しかしながら、上記従来のプロセッサとFPGAを混載した半導体集積回路装置においては、実行するソースプログラム毎にFPGAに構成する専用の回路を開発しなければならないという課題がある。また、上記従来装置では、プログラムの実行中にFPGAの回路を構成し直すことは想定していない。その結果として、事前に必要となるすべての回路をFPGAに構成しなければならず、FPGAの回路規模が大きなものになってしまうという課題がある。
本発明は上記従来の課題を解決するもので、ソースプログラム毎にFPGAの回路を設計する必要がなく、FPGAの回路規模を小さく抑えるコンパイラ装置および半導体集積回路装置を提供することを目的としている。
第1の発明における半導体集積回路装置は、
プロセッサと、
前記プロセッサが実行するもので実行命令および構成命令を含む実行プログラムを保持する実行プログラム保持手段と、
回路を再構成可能なプログラマブルデバイスで構成され、前記プロセッサが前記実行命令を実行して指示する処理内容を実行する再構成可能処理装置(FPGA等)と、
前記再構成可能処理装置に組み込んで回路構成(コンフィギュレーション)するための回路情報を保持し、前記プロセッサが前記構成命令の実行時に指定する前記回路情報を前記再構成可能処理装置に組み込んで回路構成する回路情報保持構成制御手段とを備えたものである。
また、第1の発明におけるコンパイラ装置は、再構成可能処理装置(FPGA等)に組み込み構成する処理内容毎の回路情報を複数格納した回路情報ライブラリと、ソースプログラムを実行プログラムに変換するコンパイラとを備えたものである。
ここで、前記コンパイラは、プログラム中の各処理内容について、実行サイクル数と前記再構成可能処理装置に各回路情報を組み込み構成するのに必要となる構成サイクル数とを考慮し、プログラム全体の処理サイクル数が小さくなるようにプロセッサと前記再構成可能処理装置で実行する処理内容を切り分ける機能を備えているものとする。
なお、処理内容とは、例えば、除算「div」、乗算「mulu」,「mul」などの命令のことである。
上記の構成において、コンパイラはソースプログラムのコンパイル時に、処理内容毎の回路情報を複数格納した回路情報ライブラリを参照し、プログラム全体の処理サイクル数が小さくなるように再構成可能処理装置(FPGA等)で実行する処理内容とプロセッサで実行する処理内容とに切り分け、再構成可能処理装置の実行命令と構成命令をプログラムに組み込んで実行プログラムを生成し、実行命令が必要とする回路情報を回路情報ライブラリより抽出して回路情報保持構成制御手段に格納し、プロセッサが構成命令を実行すると、回路情報を回路情報保持構成制御手段によって再構成可能処理装置に前もって組み込み構成させ、実行命令を実行すると処理内容を再構成可能処理装置で実行するという態様がある。
なお、同じ回路情報を組み込み構成する構成命令が連続で実行された場合には、2回目以降の構成命令は無効化するものとする。
また、実行命令を実行したとき、実行に必要となる回路情報が組み込み構成されていない場合にはプロセッサの動作を止め、再構成可能処理装置に必要となる回路情報を組み込み構成する。
以上のように、第1の発明によれば、コンパイラは回路情報ライブラリに格納された回路情報を有効利用してソースプログラムをコンパイルするので、従来技術のようにソースプログラム毎に再構成可能処理装置(FPGA等)に組み込み構成する回路を開発する必要がない。すなわち、あらかじめ用意されている回路情報ライブラリを有効活用するので、ソースプログラム毎に専用回路を設計する必要がなく、開発期間の短縮、開発コストを削減することができる。
また、実行命令の実行に必要となる回路情報の再構成可能処理装置への組み込み構成を動的に行うので、その処理内容の実行に必要となる回路情報だけを再構成可能処理装置に組み込み構成すればよく、再構成可能処理装置は小規模のものを用意すればよい。
また、コンパイラがプロセッサで実行する処理内容と再構成可能処理装置で実行する処理内容とを切り分けるときの条件が、構成サイクル数と実行サイクル数を考慮し、プログラム全体の処理サイクル数が小さくなるようにすることであるので、プログラムを高速に実行することができる。
上記構成の半導体集積回路装置における前記回路情報保持構成制御手段は、
前記再構成可能処理装置(FPGA等)に組み込んで回路構成するための回路情報を保持する回路情報リスト保持手段と、
前記回路情報リスト保持手段に保持されている各回路情報のアドレス情報を保持するアドレスリスト保持手段と、
前記プロセッサが指定する前記回路情報の前記アドレス情報を前記アドレスリスト保持手段から読み出し、前記アドレス情報を用いて前記回路情報リスト保持手段から前記回路情報を読み出し、前記回路情報を前記再構成可能処理装置に組み込んで回路構成する組み込み構成手段とを備えているという態様がある。
また、上記構成の半導体集積回路装置における前記回路情報保持構成制御手段は、前記再構成可能処理装置(FPGA等)にすでに組み込まれて回路構成されている回路情報を識別するシリアルナンバーなどの回路識別情報を保持する回路識別情報レジスタを備え、
前記組み込み構成手段は、前記プロセッサが回路識別情報に対応する回路情報を前記再構成可能処理装置に組み込んで回路構成するように命令した場合には、その命令にかかわる前記回路識別情報と前記回路識別情報レジスタに保持されている前記回路識別情報とを比較し、一致しない場合のみ前記回路情報を前記再構成可能処理装置へ組み込んで回路構成するという態様がある。
また、上記構成の半導体集積回路装置における前記プロセッサは、前記実行命令を実行する場合に、前記実行命令が示すシリアルナンバーなどの回路識別情報と前記回路識別情報レジスタに保持されている前記回路識別情報とを比較し、一致する場合は前記実行命令が示す処理内容の実行を前記再構成可能処理装置(FPGA等)へ指示し、一致しない場合は前記実行命令が示す前記回路識別情報に対応する前記回路情報を前記再構成可能処理装置へ組み込んで回路構成するように指示し、前記再構成可能処理装置への組み込み構成後、前記実行命令が示す処理内容の実行を前記再構成可能処理装置に指示するという態様がある。
また、上記構成の半導体集積回路装置における前記回路情報保持構成制御手段は、前記回路識別情報レジスタに保持されている前記回路識別情報に対応する回路情報の前記再構成可能処理装置(FPGA等)に対する組み込み構成が終了しているかを示すステータスレジスタを備え、
前記プロセッサは、前記実行命令を実行する場合に、前記ステータスレジスタの値を読み出し、前記回路識別情報レジスタの回路識別情報に対応する回路情報の前記再構成可能処理装置に対する組み込み構成が終了しているか否かを判断し、組み込み構成が終了していない場合は前記再構成可能処理装置への処理内容の実行の指示を待たせ、組み込み構成が終了している場合は前記再構成可能処理装置への処理内容の実行の指示を出すという態様がある。
また、上記構成のコンパイラ装置における前記コンパイラは、前記再構成可能処理装置(FPGA等)で実行するために切り分けた処理内容について、その処理内容を実行命令に置き換える機能と、置き換えた前記実行命令が示す回路識別情報を示す構成命令をプログラムに組み込む機能とを備えているという態様がある。
また、上記構成のコンパイラ装置における前記コンパイラは、前記実行命令を前記再構成可能処理装置(FPGA等)で実行するのに必要となる前記回路情報を前記回路情報ライブラリから抽出して回路情報リストを作成する機能と、前記回路情報リストに格納した各回路情報を格納しているアドレスを記載したアドレスリストを作成する機能とを備えているという態様がある。
また、分岐や割り込みが発生し、実行命令が必要とする回路情報とは異なる回路情報が再構成可能処理装置(FPGA等)に組み込み構成された状態で実行命令が実行された場合でも、前もって実行命令が必要とする回路情報を組み込み構成し、処理内容を実行することができる。
また、分岐や割り込みが発生し、任意の回路情報を組み込み構成している間に同じ回路情報を再構成可能処理装置(FPGA等)に組み込み構成する構成命令を実行した場合、2回目以降の構成命令を無視することによって構成サイクル数を考慮することなく実行命令を実行することができる。
ところで、上記の第1の発明においては、再構成可能処理装置(FPGA等)で実行することができる処理内容の配置アドレスが連続していたり接近していたりすると、構成サイクル数の観点からは再構成可能処理装置で実行できる処理内容であるにもかかわらずプロセッサで実行すべきと判断してしまう可能性がある。このような場合には、プロセッサで実行すべきと判断された処理内容については、再構成可能処理装置で実行することによる処理能力の向上を図ることができない。これに対応するのが、次に説明する第2の発明である。
第2の発明の半導体集積回路装置においては、前記回路情報リスト保持手段は、複数の処理内容を実行可能な回路情報を備えているものとする。再構成可能処理装置(FPGA等)に組み込んで回路構成するための回路情報について、少なくともその一部は実行可能な処理内容として複数の処理内容を備えているものとする。
また、前記実行プログラム保持手段において、前記回路情報で構成される前記再構成可能処理装置(FPGA等)は複数の処理内容を実行することができ、前記実行命令は前記回路情報の複数の処理内容のいずれかを指定する回路選択情報を含み、前記プロセッサは前記回路選択情報で示される処理内容の実行を前記再構成可能処理装置に指示するものとする。
これに対応するコンパイラ装置としては、前記回路情報ライブラリは、複数の処理内容を実行することができる複数の回路情報を備えているものとする。
また、前記コンパイラは、プログラム中の各処理内容について、前記実行サイクル数と、前記再構成可能処理装置(FPGA等)に各回路情報を組み込み構成するのに必要となる構成サイクル数と、回路情報で実行することができる処理内容を考慮し、プログラム全体の処理サイクル数が小さくなるように前記プロセッサと前記再構成可能処理装置で実行する処理内容を切り分ける機能を備えているものとする。
第2の発明におけるコンパイラ装置および半導体集積回路装置は、ソースプログラムのコンパイル時に、複数の処理内容を実行することができる回路情報を格納した回路情報ライブラリを参照し、構成サイクル数と実行サイクル数と回路情報で実行することができる処理内容を考慮し、プログラム全体の処理サイクル数が小さくなるように再構成可能処理装置(FPGA等)とプロセッサで実行する処理内容に切り分け、実行命令と構成命令をプログラムに組み込んで実行プログラムを生成し、実行命令が必要とする回路情報を回路情報ライブラリより抽出して回路情報保持構成制御手段に格納し、プロセッサが構成命令を実行すると、回路情報を回路情報保持構成制御手段によって再構成可能処理装置に前もって組み込み構成させ、実行命令を実行すると回路選択情報が示す処理内容を再構成可能処理装置で実行する。
これによれば、構成サイクル数を確保できない処理内容についても再構成可能処理装置(FPGA等)で実行することができ、システム全体のパフォーマンスを向上することが可能となる。
ところで、上記第1および第2の発明において、プログラム実行中に割り込みが発生し、割り込み処理で異なる回路情報を再構成可能処理装置(FPGA等)に組み込み構成した場合に、割り込み処理からの復帰後に実行命令を実行すると、再構成可能処理装置に必要となる回路情報を組み込み構成し終えるまでプロセッサを止めることになるという課題がある。これに対応するのが、次に説明する第3の発明である。
第3の発明においては、さらに、データを格納するデータメモリを備え、前記プロセッサは、実行プログラム実行中に割り込みが発生した場合に、前記回路識別情報レジスタに格納されている回路識別情報(シリアルナンバー)を前記データメモリに格納し、割り込み処理復帰後に前記データメモリから読み出した前記回路識別情報に対応する回路情報を前記再構成可能処理装置(FPGA等)に組み込んで回路構成するように前記回路情報保持構成制御手段に命令する機能を備えているというものがある。上記のデータメモリとして、プロセッサにおけるスタック領域を利用してもよい。
第3の発明におけるコンパイラおよび半導体集積回路装置は、上記第1および第2の発明において、プログラム実行中に割り込みが発生した場合、再構成可能処理装置(FPGA等)に組み込み構成している回路情報の回路識別情報(シリアルナンバー)をプロセッサのスタック等のデータメモリに格納し、割り込み処理からの復帰後にデータメモリに格納した回路識別情報に対応する回路情報を再構成可能処理装置に組み込み構成するものである。
これによれば、割り込み処理からの復帰後に、割り込みが発生する前に組み込み構成していた回路情報を実行命令が必要とする回路情報として直ちに再構成可能処理装置(FPGA等)に組み込み構成し始めることができ、プロセッサを待たせる分のサイクル数のロスを小さくすることができる。
ところで、上記第1および第2の発明において分岐が発生し、実行プログラム実行中に任意の構成命令と実行命令との間に分岐してきた場合、再構成可能処理装置(FPGA等)には実行命令が必要とする回路情報とは異なる回路情報が組み込み構成された状態で実行命令を実行してしまう可能性がある。これに対応するのが、次に説明する第4の発明である。
第4の発明では、上記第1および第2の発明において、前記コンパイラは、ソースプログラムコンパイル時に、プログラム中に分岐処理が含まれているかを判断する第1の判別手段と、前記第1の判別手段の結果を受け、分岐処理の分岐先が確定しているか否かを判断する第2の判別手段と、前記第2の判別手段の結果を受け、分岐先を基点として配置アドレスの昇順に実行命令があるか否かを判断する第3の判別手段と、前記第3の判別手段の結果を受け、前記実行命令が示す回路情報を組み込み構成する構成命令を分岐先に組み込む機能を備えたものである。
ソースプログラムコンパイル時にコンパイラが中間コードから分岐条件を検索し、分岐先が確定している場合に、分岐先に再構成可能処理装置(FPGA等)に組み込み構成する命令を組み込む。これによれば、実行プログラム実行中に分岐が発生しても、分岐先には分岐後に最初に実行する実行命令が必要とする回路情報を再構成可能処理装置に組み込み構成する構成命令が組み込まれているので、実行命令を実行する前に実行命令が必要とする回路情報を再構成可能処理装置が組み込み構成し始めることができ、プロセッサを待たせる分のサイクル数のロスを小さくすることができる。
第1の発明によれば、コンパイラは回路情報ライブラリに格納された回路情報を用いてソースプログラムを実行するので、ソースプログラム毎に再構成可能処理装置に組み込み構成(コンフィギュレーション)する回路を開発する必要がない。また、実行命令の実行に必要となる回路情報を動的に再構成可能処理装置に組み込み構成するので、その処理内容の実行に必要となる回路のみを再構成可能処理装置に組み込み構成することになり、再構成可能処理装置としては小規模のものを用意すればよい。また、コンパイラはプログラム全体の処理サイクル数が小さくなるようにプロセッサと再構成可能処理装置で実行する処理内容を切り分けるので、高速にソースプログラムを実行することができる。
また、分岐や割り込みが発生し、実行命令が必要とする回路情報とは異なる回路情報が再構成可能処理装置に組み込み構成された状態で実行命令が実行された場合でも前もってそこから実行命令が必要とする回路情報を組み込み構成し、処理内容を実行することができる。
また、分岐や割り込みが発生し、任意の回路情報を組み込み構成している間に同じ回路情報を再構成可能処理装置に組み込み構成する構成命令を実行した場合、2回目以降の構成命令を無視することによって構成サイクル数を考慮することなく実行命令を実行することができる。
第2の発明によれば、第1の発明において、構成サイクル数を確保できない処理内容についても再構成可能処理装置(FPGA等)で実行することができ、システム全体のパフォーマンスを向上させることが可能となる。
第3の発明によれば、割り込み処理からの復帰後に、割り込みが発生する前に組み込み構成していた回路情報を実行命令が必要とする回路情報として直ちに再構成可能処理装置(FPGA等)に組み込み構成し始めることができ、プロセッサを待たせる分のサイクル数のロスを小さくすることができる。
第4の発明によれば、実行プログラム実行中に分岐が発生しても、分岐先には分岐後に最初に実行する実行命令が必要とする回路情報を再構成可能処理装置(FPGA等)に組み込み構成するための構成命令が組み込まれているので、実行命令を実行する前に実行命令が必要とする回路情報を構成命令が組み込み構成し始めることができ、プロセッサを待たせる分のサイクル数のロスを小さくすることができる。
以下、本発明にかかわるシステムオンチップの実施の形態について図面に基づいて詳細に説明する。
(第1の実施形態)
―システム構成―
図1は、本発明の第1の実施形態におけるコンパイラおよび半導体集積回路装置のシステム構成図である。同図に示すように、本実施形態のシステムは、コンパイラ装置Aと半導体集積回路装置Bとから構成されている。コンパイラ装置Aは、コンパイラ5および回路情報ライブラリ6からなる。回路情報ライブラリ6は、半導体集積回路装置B中の後述する再構成可能処理装置としてのFPGA14をコンフィギュレーションするための回路情報を格納している。ここで、回路情報とはFPGA14をコンフィギュレーションするためのデータであり、各回路情報によりそれぞれ特定の処理内容を実行する。コンフィギュレーションとは、回路情報をFPGA14に組み込んで回路構成することである。コンパイラ5は、各処理内容を後述のプロセッサ12で実行する場合に必要となるクロックサイクル数を記載したプロセッサ実行サイクルリスト5aを保有している。コンパイラ5は、回路情報ライブラリ6およびプロセッサ実行サイクルリスト5aを参照してソースプログラムF0をコンパイルし、実行プログラムF1、回路情報リストF2およびアドレスリストF3を作成するように構成されている。ソースプログラムF0は高級言語などで記述されたプログラムである。
半導体集積回路装置Bは、実行プログラム保持手段11、プロセッサ12、回路情報保持構成制御手段13および再構成可能処理装置としてのFPGA14からなる。実行プログラム保持手段11は、コンパイラ5が作成した実行プログラムF1の内容を保持する。プロセッサ12は、実行プログラム保持手段11から読み出した実行プログラムに応じて動作する。回路情報保持構成制御手段13は、コンパイラ5が作成した回路情報リストF2およびアドレスリストF3の内容を保持する。回路情報保持構成制御手段13は、プロセッサ12が指定する回路情報をFPGA14にコンフィギュレーションする機能を有している。FPGA14は、プロセッサ12の指示により、回路情報保持構成制御手段13が転送する回路情報によってコンフィギュレーションされる。
なお、同図には示していないが、プロセッサ12やFPGA14以外に論理回路やアナログ回路があってもよく、それらの処理については、従来の半導体集積回路装置と同様の制御で行うことができる。また、本実施形態では半導体集積回路装置Bは1つのチップではないが、1つのチップで構成してもよい。
―回路情報ライブラリのデータ構造―
図1の回路情報ライブラリ6はあらかじめ用意されたものであり、FPGA14をコンフィギュレーションするための回路情報を格納している。図2は回路情報ライブラリ6のデータ構造を示す。回路情報ライブラリ6は、回路情報の他に、回路情報の管理番号、回路情報で実行可能な処理内容、回路情報をコンフィギュレーションするのに必要となる構成サイクル数、回路情報で処理内容を実行するのに必要となる実行サイクル数からなる。
図3に回路情報ライブラリ6の一例を示す。処理内容の「div」、「mulu」、「mul」は、FPGA14で実行することができる命令を示しており、それぞれ除算、符号なし乗算、符号付き乗算を実行する命令である。また、処理内容の「A,B」の「A」、「B」はそれぞれレジスタや即値、メモリアドレスを示しており、それらを用いて命令を実行することを示す。図3の例では、管理番号1の回路情報1は処理内容「divA,B(A割るB)」を5サイクルで実行することができ、回路情報1をFPGA14にコンフィギュレーションするのに100サイクル必要となることを示している。
―プロセッサ実行サイクルリストのデータ構造―
図4はコンパイラ5が備えるプロセッサ実行サイクルリスト5aのデータ構造を示す。プロセッサ実行サイクルリスト5aは、プロセッサ12で実行することができる処理内容、および各処理内容をプロセッサ12で実行するのに必要となる実行サイクル数で構成される。
図5にプロセッサ実行サイクルリスト5aの一例を示す。処理内容の「cmp」、「mov」、「add」は、プロセッサ12で実行することができる命令を示しており、それぞれ比較、転送、加算を実行する命令である。「mulu」、「div」、「mul」については、図3の説明と同様の処理内容である。また、処理内容の「A,B」の「A」、「B」はそれぞれレジスタや即値、メモリアドレスを示しており、それらを用いて命令を実行することを示している。図5の1行目の例では、「cmpA,B(A,Bの比較)」をプロセッサ12で実行するのに2サイクル必要であることを示している。
―コンパイラの処理―
図1のコンパイラ5は、ソースプログラムF0を読み込んで中間コードを生成し、中間コードの各処理内容について回路情報ライブラリ6およびプロセッサ実行サイクルリスト5aを参照し、FPGA14で実行するとすれば実行プログラムF1の実行速度が向上することになる処理内容を切り分ける。コンパイラ5は、FPGA14で実行すべきと判断した各処理内容を実行するのに必要となる回路情報を回路情報ライブラリ6より抽出し、回路情報リストF2を作成するとともに、回路情報リストF2の各回路情報が格納されるアドレスを示すアドレスリストF3も同時に作成する。コンパイラ5は、FPGA14で実行すべきと決定した各処理内容をFPGA実行命令に置き換える。さらに、コンパイラ5は、各FPGA実行命令を実行するのに必要となる回路情報のコンフィギュレーションを開始すべき中間コードの配置アドレスを算出し、FPGA構成命令を組み込む。コンパイラ5は、コード生成を経て実行プログラムF1を作成する。
FPGA構成命令はプロセッサ12で実行されて、FPGA構成命令中に示された回路情報をFPGA14にコンフィギュレーションするように回路情報保持構成制御手段13に指示を出す。一方、FPGA実行命令はプロセッサ12で実行されて、処理内容の実行に必要となるデータやアドレスをFPGA14に転送するが、処理内容の実行はFPGA14で行うものである。FPGA14は、処理内容の実行を終えると、実行結果をプロセッサ12へ転送する。プロセッサ12がFPGA構成命令およびFPGA実行命令を実行するときの処理の詳細については、後述する。
図6は、コンパイラ5がソースプログラムF0をコンパイルする過程を示したフローチャートである。また、図7は図6におけるST40の詳細なフローチャートを示す。以下に、図6および図7を用いてコンパイラ5の処理を説明する。
コンパイラ5は、以下ST10〜ST80の手順に従ってソースプログラムF0をコンパイルする。なお、より具体的には、後述の「―コンパイラの処理例―」でステップ毎に説明する。
ST10:ソースプログラムF0を読み込む。
ST20:字句解析ルーチン、構文解析ルーチン、意味解析ルーチン、中間コード生成ルーチン、コード最適化ルーチンを経て、ST10で読み込んだソースプログラムF0から中間コードを生成する(例えば図8参照)。中間コードはアセンブリ言語であってもよい。
ST30:ST20で生成した中間コードの各処理内容について、回路情報ライブラリ6を参照し、FPGA14で実行することができる処理内容を検索する(図8の3行目の「mulu d2,d0」、6行目の「div d1,d0」、9行目の「mul d0,d2」を参照)。回路情報ライブラリ6に記載されていない処理内容についてはプロセッサ12で実行するものとする。
ST40:ST30においてFPGA14で実行できると判断した処理内容を、中間コードの配置アドレスの昇順に、処理内容毎にFPGA14で実行すべきかプロセッサ12で実行すべきかを判断し、判断対象となるすべての処理内容について判断を完了するとST50へ進む。なお、「実行できる」とは、実行可能性をいい、必ずしも実行するとは限らない。
ST40の詳細な処理については、図7のST41〜ST45で示す。ST41〜ST45の説明で使用する語句について、FPGA14で実行すべきかプロセッサ12で実行すべきかの判断対象となる処理内容を処理内容Aと定義する。また、処理内容Aの配置アドレスに対し、降順でアドレスが最短、かつ、前の判断でのST45においてFPGA14で実行すべきと決定した処理内容を処理内容Bと定義する。すなわち、処理内容BはFPGA14にかかわるものとなる。
ST41:処理内容Aは処理内容Bの回路情報で実行可能か(すなわち今回の判断対象の処理内容Aと先行して決定された処理内容Bの回路情報が同一か)を判断する。つまり、回路情報のナンバー(図3の回路情報の1や2や3)が同じか否かの判定を行う。実行可能ならST45へ、実行可能でないならST42へそれぞれ処理を進める。また、処理内容Bに該当する処理内容がない場合には、無条件でST42へそれぞれ処理を進める。
ST42:処理内容Aの実行に必要となる回路情報をFPGA14にコンフィギュレーションするのに十分な構成サイクル数を確保することができるか判断する。処理内容Bと処理内容Aの間の処理内容をプロセッサ12で実行するのに必要となるサイクル数CCと回路情報ライブラリ6の構成サイクル数FCの数値の大小を比較し、FC≦CCの条件式が成り立たない(構成サイクル数を十分に確保できない)ならばST43へ処理を進め、条件式が成り立つ(構成サイクル数を十分に確保できる)ならばST45へ処理を進める。処理内容Bに該当する処理内容がない場合(処理内容Aの配置アドレスに降順でFPGA14で実行する処理内容がない場合)は、実行プログラムの先頭の配置アドレスからの処理内容から処理内容Aの前の配置アドレスの処理内容までをプロセッサ12で実行するのに必要となるサイクル数をCCとする。
ST43:処理内容Aについて、第1モード処理#1の方が高速か、第2モード処理#2の方が高速かを判断する。第1モード処理#1というのは、処理内容Aをプロセッサ12で実行する処理である。また、第2モード処理#2というのは、FPGA14に対する回路情報のコンフィギュレーションが完了するまでプロセッサ12の動作を停止し、コンフィギュレーションが完了してから処理内容AをFPGA14で実行する処理である。この判断は、FC+FD<CC+CDの条件式にて行う。
ここで、処理内容Aをプロセッサ12で実行する場合の実行サイクル数をCDと、FPGA14で実行する場合の実行サイクル数をFDとする。条件式が成り立つ(第2モード処理#2の方が高速)ならばST45へ、条件式が成り立たない(第1モード処理#1の方が高速)ならばST44へ処理を進める。
ST44:処理内容Aをプロセッサ12で実行することを決定する。
ST45:処理内容AをFPGA14で実行することを決定する。
ST50:ST40においてFPGA14で実行すると決定した各処理内容を実行するのに必要となる回路情報を回路情報ライブラリ6より管理番号順に抽出し、回路情報リストF2およびアドレスリストF3を作成する。
図9は回路情報リストF2のデータ構造を示す図である。回路情報ライブラリ6より抽出する回路情報に、管理番号順にシリアルナンバーを割り振る。シリアルナンバーは、回路情報ライブラリ6より抽出した各回路情報をコンパイラ5が識別するためのものである。回路情報リストF2は、ST40においてFPGA14で実行すると決定した各処理内容を実行するのに必要となる回路情報からなる。
図10はアドレスリストF3のデータ構造を示す図である。アドレスリストF3は、ST40においてFPGA14で実行すると決定した各処理内容を実行するのに必要となる回路情報を格納するスタートアドレス、エンドアドレスからなる。スタートアドレスおよびエンドアドレスは、回路情報リストF2に格納された各回路情報の開始アドレスおよび終了アドレスに対応する。
ST60:ST40においてFPGA14で実行すると決定した各処理内容をFPGA実行命令(図13の「fpgad 2,d2,d0」、「fpgad 1,d1,d0」参照)に置き換える。
ST70:中間コードの各FPGA実行命令で使用する回路情報をFPGA14にコンフィギュレーションし始める配置アドレスを判断し、判断した配置アドレスにFPGA構成命令(図14の「fpgac 1」、「fpgac 2」参照)を組み込む。本ステップでは配置アドレスの先頭アドレスから昇順にFPGA実行命令を検索し、見つけたFPGA実行命令が使用する回路情報をコンフィギュレーションするFPGA構成命令を組み込む。判断対象となるFPGA実行命令をFPGA実行命令Aと定義し、FPGA実行命令Aの配置アドレスに対し、降順でアドレスが最短なFPGA実行命令をFPGA実行命令Bと定義する。
コンパイラ5はFPGA実行命令Aが示すシリアルナンバー(図13では「fpgad 2」の「2」や「fpgad1」の「1」がシリアルナンバー)を示すFPGA構成命令(図14の「fpgac 1」、「fpgac 2」参照)を降順で最短とするFPGA実行命令Bの配置アドレスの後に組み込む。
ST80:コード生成ルーチンを経て、実行プログラムF1を作成する。
―コンパイラの処理例―
以下に、コンパイラ5がソースプログラムF0から図8の中間コードを生成し、図3の回路情報ライブラリおよび図5のプロセッサ実行サイクルリストを参照し、実行プログラムF1、回路情報リストF2、アドレスリストF3を作成するフローを例にて説明する。図8の「d0」、「d1」、「d2」はデータレジスタを、「0x11112222」、「0x04」、「0x33334444」は即値を示している。図8の各命令については図3および図5の説明した内容と同様である。
ST10:ソースプログラムF0を読み込む。
ST20:図8に示す中間コード例を生成する。
ST30:図3の回路情報ライブラリおよび図5のプロセッサ実行サイクルリストを参照し、図8の中間コード例においてFPGA14で実行できる処理内容を検索する。この例では、図8の3行目の「mulu d2,d0」、6行目の「div d1,d0」、9行目の「mul d0,d2」をFPGA14で実行することができると判断する(処理内容「mulu」、「div」、「mul」は図3の回路情報ライブラリに存在する。)。また、その他の処理内容についてはプロセッサ12で実行することを決定する。
ST40:図8の3行目の「mulu d2,d0」、6行目の「div d1,d0」、9行目の「muld0,d2」の各処理内容について、FPGA14で実行するかプロセッサ12で実行するかを中間コードの配置アドレスで昇順(下向き)に判断する。処理内容毎にST41〜ST45の処理を行う。
まず、最初に3行目の「mulu d2,d0」についてST40の処理を行う。
ST41:3行目の「mulu d2,d0」の配置アドレスに対し、降順(上向き)にFPGA14で実行すると決定した処理内容がないのでステップ42へ進む。
ST42:3行目の「mulu d2,d0」について、コンパイラ5は1行目の「cmp d0,d1」から2行目の「mov0x11112222,d2」までをプロセッサ12で実行するときに必要となるサイクル数CCを算出する。CCが150サイクルである場合、FCは120サイクルであるので、コンパイラ5はFC≦CCが成り立つ(構成サイクル数を十分に確保できる)と判断し、ステップST45へ進む。
ST45:3行目の「mulu d2,d0」をFPGA14で実行することを決定する。
次に、6行目の「div d1,d0」についてST40の処理を行う。
ST41:図3を参照すると、3行目の「mulu d2,d0」は回路情報2を用いて実行される。しかし、「divd1,d0」は回路情報2では実行することができないと判断し、ST42へ進む。
ST42:6行目の「div d1,d0」について、4行目の「add d0,d1」から5行目の「mov0x04,d0」までをプロセッサ12で実行するときに必要となるサイクル数CCを算出する。サイクル数CCが80サイクルである場合、FCは100サイクルであるので、コンパイラ5はFC≦CCが成り立たない(構成サイクル数を十分に確保できない)と判断し、ST43へ進む。
ST43:6行目の「div d1,d0」について、第1モード処理#1の方が方が高速か、第2モード処理#2の方が高速かを判断する。第1モード処理#1というのは、プロセッサ12で実行する処理である。また、第2モード処理#2というのは、FPGA14に対する回路情報のコンフィギュレーションが完了するまでプロセッサ12の動作を停止し、コンフィギュレーションが完了してからFPGA14で実行する処理である。
6行目の「div d1,d0」については、FCが100サイクル、FDが5サイクル、CCが80サイクル、CDが40サイクルであり、FC+FD<CC+CDの条件を満たす(第2モード処理#2の方が高速である)のでST45へ進む。
ST45:6行目の「div d1,d0」をFPGA14で実行することを決定する。
最後に、9行目の「mul d0,d2」についてST40の処理を行う。
ST41:図3を参照すると、6行目の「div d1,d0」は回路情報1を用いて実行される。しかし、「muld0,d2」は回路情報1では実行することができない判断し、ST42へ進む。
ST42:9行目の「mul d0,d2」について、7行目の「add 0x100,d0」から8行目の「mov0x33334444,d0」までをプロセッサ12で実行するときに必要となるサイクル数CCを算出する。サイクル数CCが30サイクルである場合、FCは105サイクルであるので、コンパイラ5はFC≦CCが成り立たない(構成サイクルを十分に確保できない)と判断し、ST43へ進む。
ST43:9行目の「mul d0,d2」について、プロセッサ12での実行を伴う第1モード処理#1の方が高速か、プロセッサ12の動作停止・FPGA14へのコンフィギュレーション・FPGA14での実行を伴う第2モード処理#2の方が高速かを判断する。9行目の「muld0,d2」について、FCが105サイクル、FDが6サイクル、CCが30サイクル、CDが40サイクルであり、FC+FD<CC+CDの条件を満たさない(第1モード処理#1の方が高速である)のでST44へ進む。
ST44:9行目の「mul d0,d2」をプロセッサ12で実行することを決定する。
ST50:ST40においてFPGA14で実行すると決定した3行目の「mulu d2,d0」、6行目の「divd1,d0」の実行に必要となる回路情報1,2を抽出した回路情報リストF2を作成する。
図11は回路情報1,2を回路情報ライブラリ6より抽出した回路情報リストF2の例を示す。図11の左端の数値は各回路情報が格納されるアドレスを示す。
本ステップにおいて抽出する回路情報1,2が格納されるアドレスを示すアドレスリストF3を作成する。図12は回路情報1,2を格納するスタートアドレスおよびエンドアドレスを示すアドレスリストF3の例である。図12の左端の数値はスタートアドレスおよびエンドアドレスが格納されるアドレスを示す。
なお、回路情報リストF2およびアドレスリストF3は、回路情報保持構成制御手段13の仕様に合わせてコンパイラ5が作成すればよい。回路情報を抽出する際に回路情報1,2にシリアルナンバー1,2を割り振る。
ST60:ST40で、FPGA14で実行すると決定した3行目の「mulu d2,d0」、6行目の「divd1,d0」をFPGA実行命令に置き換える。
図13は上記ST60までを実行したときの中間コード例である。「fpgad」はFPGA実行命令の一例を示したものである。3行目の「fpgad」が示す数字の「2」は回路情報2に対応するシリアルナンバーを示し、「d2,d0」は処理内容の実行に必要となるデータレジスタを示している。6行目の「fpgad」についてはシリアルナンバー「1」に対応した回路情報1のFPGA実行命令となる。
ST70:各FPGA実行命令の実行に必要となる回路情報をFPGA14にコンフィギュレーションを行うに際して、コンフィギュレーションを開始する配置アドレスをどこに設定するかについては、次のように行う。「fpgad 2,d2,d0」の場合には、「fpgad 2,d2,d0」の配置アドレスより降順にFPGA14で実行すべき処理内容が存在しないため、1行目の「cmpd0,d1」の前にコンフィギュレーションの開始アドレスを設定する。また、「fpgad 1,d1,d0」の場合には、「fpgad 1,d1,d0」の配置アドレスより降順にFPGA14で実行すべき処理内容として最短に3行目の「fpgad2,d2,d0」が存在するので、その次の配置アドレスであると判断する。判断された配置アドレスには、各FPGA実行命令が示すシリアルナンバーを示すFPGA構成命令を組み込む。
図14は上記ST70までを実行したときの中間コード例である。「fpgac」はFPGA構成命令の一例を示すものである。1行目の「fpgac」が示す数字の「2」は回路情報2に対応するシリアルナンバーである。同様に5行目の「fpgac」はシリアルナンバー「1」に対応した回路情報1のFPGA構成命令となる。
ST80:ST70で変換した中間コードから実行プログラムF1を生成する。
―実行プログラム保持手段―
図1の実行プログラム保持手段11は、FPGA構成命令(「fpgac …」)およびFPGA実行命令(「fpgad…」)を含む実行プログラムF1を格納する。FPGA構成命令およびFPGA実行命令をプロセッサ12が実行したときの詳細な処理は後述のFPGA構成命令およびFPGA実行命令で説明する。
―回路情報保持構成制御手段―
図15は、図1の半導体集積回路装置Bの詳細なブロック回路図を示す。回路情報保持構成制御手段13は、組み込み構成手段20、FPGAステータスレジスタ31、シリアルナンバーレジスタ32、アドレスリスト保持手段33および回路情報リスト保持手段34からなる。組み込み構成手段20は、読み出しアドレスレジスタ21、エンドアドレスレジスタ22、構成制御部23、デコーダ24およびデータ制御部25からなる。構成制御部23は、プロセッサ12からの指示を受け、FPGA14へのコンフィギュレーションを制御する。シリアルナンバーレジスタ32は、プロセッサ12から転送されるシリアルナンバーを格納する。FPGAステータスレジスタ31は、FPGA14のコンフィギュレーションが完了しているかを示す。アドレスリスト保持手段33は、コンパイラ5が作成したアドレスリストF3を格納する。回路情報リスト保持手段34は、コンパイラ5が作成した回路情報リストF2を格納する。デコーダ24は、シリアルナンバーレジスタ32が格納しているシリアルナンバーをデコードする。デコーダ24はシリアルナンバーをデコードすると、シリアルナンバーに対応するアドレスリスト保持手段33のアドレスを示す。読み出しアドレスレジスタ21は、回路情報リスト保持手段34のアドレスを示す。エンドアドレスレジスタ22は、アドレスリスト保持手段33から読み出したエンドアドレスを格納する。データ制御部25は、回路情報リスト保持手段34より読み出した回路情報をFPGA14へ転送する。回路情報保持構成制御手段13の詳細な処理の流れは後述のFPGA構成命令、FPGA実行命令にて説明する。
―FPGA構成命令―
プロセッサ12は、FPGA構成命令を実行すると、FPGA構成命令が示すシリアルナンバーを回路情報保持構成制御手段13の構成制御部23に転送する。
例として、FPGAステータスレジスタ31に「0」が書き込まれている場合、FPGA14はコンフィギュレーション中であることを示し、FPGAステータスレジスタ31に「1」が書き込まれている場合、FPGA14はコンフィギュレーションが完了していることを示す。以下では上記の例を使って説明する。
アドレスリスト保持手段33は、コンパイラ5が作成したアドレスリストF3を格納する。
回路情報リスト保持手段34は、コンパイラ5が作成した回路情報リストF2を格納する。
構成制御部23は、プロセッサ12より転送されてきたシリアルナンバーとシリアルナンバーレジスタ32に格納されている値を比較する。構成制御部23は、比較した値が同じ場合、以降の処理をせず、FPGA実行命令に処理を進める。構成制御部23は、比較した値が異なる場合、転送されてきたシリアルナンバーをシリアルナンバーレジスタ32に格納し、FPGA14にはコンフィギュレーション開始要求を通知し、FPGAステータスレジスタ31には「0」を書き込む。構成制御部23は、シリアルナンバーレジスタ32に格納したシリアルナンバーを読み出してデコーダ24へ転送する。構成制御部23は、データ制御部25に読み出しアドレスレジスタおよびエンドアドレスレジスタを更新するよう命令する。
FPGA14は、構成制御部23からコンフィギュレーション開始要求を受信すると、データ制御部25より転送されてくる回路情報でコンフィギュレーションを開始する。
デコーダ24は、構成制御部23より入力されるシリアルナンバーをデコードし、デコード結果をデータ制御部25へ出力する。デコーダ24がデコードした結果は、シリアルナンバーに対応したアドレスリスト保持手段33のアドレスを示す。
データ制御部25は、構成制御部23から読み出したアドレスレジスタ21およびエンドアドレスレジスタ22を更新するよう命令を受けると、デコーダ24から入力されるアドレスをアドレスリスト保持手段33に出力し、読み出したスタートアドレスおよびエンドアドレスをそれぞれ読み出しアドレスレジスタ21、エンドアドレスレジスタ22に格納する。データ制御部25は、スタートアドレスおよびエンドアドレスを読み出しアドレスレジスタ21およびエンドアドレスレジスタ22に格納すると、読み出しアドレスレジスタ21に格納したアドレスを回路情報リスト保持手段34へ出力し、回路情報リスト保持手段34より読み出した回路情報をFPGA14へ転送する。読み出した回路情報のFPGA14への転送を完了すると、データ制御部25は読み出しアドレスレジスタ21とエンドアドレスレジスタ22の値を比較し、読み出しアドレスレジスタ21の値がエンドアドレスレジスタ22の値以下である場合、読み出しアドレスレジスタ21の値をインクリメントして読み出しアドレスレジスタ21に格納する。データ制御部25は、読み出しアドレスレジスタ21に格納したアドレスを再び回路情報リスト保持手段34に出力し、読み出した回路情報をFPGA14へ転送する。読み出しアドレスレジスタ21の値がエンドアドレスレジスタ22の値よりも大きい場合、データ制御部25はFPGA14への回路情報の転送を完了する。
FPGA14はコンフィギュレーションを完了すると、構成制御部23に対しコンフィギュレーションが完了したことを通知する。
構成制御部23はFPGA14のコンフィギュレーションが完了したことを知ると、FPGAステータスレジスタ31に「1」を書き込む。
―FPGA実行命令―
プロセッサ12はFPGA実行命令を実行すると、データ制御部25を通してシリアルナンバーレジスタ32およびFPGAステータスレジスタ31を読み出す。プロセッサ12は、FPGA実行命令が示すシリアルナンバーとシリアルナンバーレジスタ32の値が同じであるか、FPGAステータスレジスタ31の値が「1」であるかを確認する。FPGA実行命令が示すシリアルナンバーとシリアルナンバーレジスタ32の値が異なる場合、FPGA実行命令が示すシリアルナンバーに対応する回路情報をFPGA14にコンフィギュレーションするよう、プロセッサ12は回路情報保持構成制御手段13に指示を出し、FPGA14のコンフィギュレーションが完了し、FPGAステータスレジスタ31の値が「1」になるまでプロセッサ12の動作を止める。
一方、シリアルナンバーとシリアルナンバーレジスタ32の値が一致し、FPGAステータスレジスタ31の値が「1」でない場合、プロセッサ12は、FPGA14のコンフィギュレーションが完了し、FPGAステータスレジスタ31の値が「1」になるまで動作を停止する。
また、シリアルナンバーとシリアルナンバーレジスタ32の値が一致し、FPGAステータスレジスタ31の値が「1」である場合、プロセッサ12は処理内容の実行に必要となるレジスタに格納されている値や即値をFPGA14へ転送する。プロセッサ12は、レジスタの値や即値のFPGA14への転送を完了すると、動作を停止する。処理内容はFPGA14で実行される。FPGA14は、処理内容の実行を完了すると、プロセッサ12に対し実行が完了したことを知らせるとともに、FPGA14での実行結果をプロセッサ12に転送する。プロセッサ12は、FPGA14での実行が完了したことを受信すると、再び動作を開始する。
以上のように本実施の形態によれば、コンパイラ5は回路情報ライブラリ6に格納された回路情報を有効利用してソースプログラムF0をコンパイルするので、従来技術のようにソースプログラム毎にFPGA14にコンフィギュレーションする回路を開発する必要がない。すなわち、あらかじめ用意されている回路情報ライブラリ6を有効活用するので、ソースプログラム毎に専用回路を設計する必要がなく、開発期間の短縮、開発コストを削減することができる。
また、実行命令の実行に必要となる回路情報のFPGA14へのコンフィギュレーションを動的に行うので、その処理内容の実行に必要となる回路だけをFPGA14にコンフィギュレーションすればよく、FPGA14は小規模のものを用意すればよい。
また、コンパイラ5がプロセッサ12で実行する処理内容とFPGA14で実行する処理内容とを切り分けるときの条件が、構成サイクル数と実行サイクル数が最小となるようにすることであるので、プログラムを高速に実行することができる。
(第2の実施形態)
上記第1の実施形態では、図1のコンパイラ5が生成する中間コードにおいて、FPGA14で実行することができる処理内容の配置アドレスが連続している、もしくは配置アドレスの差が小さい処理内容列がある場合に課題がある。以下に、課題を説明する。
第1の実施形態では、コンパイラ5が図6のST30でFPGA14で実行することができると判断した任意の処理内容A,B(処理内容Bの方が配置アドレスは大きい)の配置アドレスが連続している場合、もしくは配置アドレスの差が小さい場合、処理内容BはFPGA14で実行した方が高速に実行できるにもかかわらず、FPGA14で実行するのに必要となる回路情報をFPGA14にコンフィギュレーションする構成サイクル数が確保することができず、コンパイラ5によってプロセッサ12で実行すべきと決定される場合がある。この場合、処理内容Bについては、FPGA14で実行することによる処理能力向上を図ることができない。
そこで、本発明の第2の実施形態は、処理内容A,Bの配置アドレスが連続している、もしくは配置アドレスの差が小さい場合でも、処理内容BをFPGA14で実行できるように考慮したものである。本実施形態のシステム構成を以下に説明する。
以下では、2つの処理内容を実行できる回路情報を含んだシステムについて説明する。
図16は、本実施形態における回路情報ライブラリ6のデータ構造を示す図である。第1の実施形態の回路情報ライブラリ6のデータ構造と異なり、各回路情報で実行できる処理内容(処理内容1と処理内容2)、各処理内容を実行するときに必要となる実行サイクル数(実行サイクル数1と実行サイクル数2)、各処理内容をFPGA14で実行するときにFPGA実行命令に付加する回路選択情報(回路選択情報1と回路選択情報2)をそれぞれ2つずつ持つ。処理内容1は実行サイクル数1、回路選択情報1と対応しており、処理内容2は実行サイクル数2、回路選択情報2と対応している。
回路選択情報は、回路情報で実行することができる処理内容のうち、どの処理内容をFPGA14で実行するかを決定する情報であり、実行したい処理内容に対応した回路選択情報がFPGA実行命令に付加される。プロセッサ12はFPGA実行命令を実行すると、FPGA実行命令が示すデータ、アドレス、回路選択情報をFPGA14に転送し、回路選択情報に対応する処理内容をFPGA14に実行させる。FPGA14は実行結果をプロセッサ12に転送する。FPGA14には、プロセッサ12より転送される回路選択情報に従って、どの処理内容を実行するかを選択する機構が含まれる。
図17は本実施形態における回路情報ライブラリ6の一例を示す図である。各処理内容についての説明は図3と同様である。図17の例では、管理番号4の回路情報4は処理内容「mul A,B(A掛けるB)」および「div A,B(A割るB)」をそれぞれ6サイクル、5サイクルで実行することができ、各処理内容を回路情報4を使って実行する場合、FPGA実行命令には回路選択情報「1」および「2」を付加する必要があり、回路情報4をFPGA14にコンフィギュレーションするのに130サイクル必要であることを示している。また、管理番号1の処理内容2および実行サイクル数2の項目には「−」とあるが、これは回路情報1が1つの処理内容しか実行できないことを示している。管理番号2および3についても同様である。
本実施形態において、コンパイラ5がソースプログラムF0をコンパイルする過程を示したフローチャートは、第1の実施形態と同様に図6で示すが、ST40の詳細なフローチャートについては図18で示す。
本実施形態におけるコンパイラ5は、図6のST10〜ST80の手順に従いソースプログラムF0をコンパイルする。ST10およびST20は第1の実施形態と同じ説明であるので説明を省略する。
ST30:ST20で生成した中間コードの各処理内容について、回路情報ライブラリ6を参照し、FPGA14で実行することができる処理内容を回路情報ライブラリ6の処理内容1と処理内容2から検索する。回路情報ライブラリ6を検索した結果、中間コードの各処理内容と回路情報ライブラリ6の処理内容1または処理内容2が一致した回路情報がある場合は、その処理内容はFPGA14で実行することができると判断し、処理内容が一致したすべての回路情報の管理番号を処理内容の中間コードに情報として付加する。回路情報ライブラリ6に記載されていない処理内容についてはプロセッサ12で実行する。
ST40:ST40に関しては、ST30においてFPGA14で実行できると判断した処理内容を、中間コードの配置アドレスの昇順に処理内容毎にFPGA14で実行するかプロセッサ12で実行するか判断し、判断対象となるすべての処理内容について判断を完了するとST50へ進む。ST40の詳細な処理については図18のST401〜ST410で示す。ST40の説明で使用する語句で、FPGA14で実行するかプロセッサ12で実行するかの判断対象となる処理内容を処理内容Aと、処理内容Aの配置アドレスに対し、降順でアドレスが最短、かつ、ST408およびST410においてFPGA14で実行すると決定した処理内容を処理内容Bと定義する。
ST401:処理内容Aは処理内容Bの回路情報で実行可能か(回路情報ライブラリ6を参照し、先行して決定された処理内容Bを実行するのに用いる回路情報の処理内容1もしくは処理内容2の処理内容と処理内容Aが一致するか)を判断する。実行可能ならST406へ、実行可能でないならST402へ進む。処理内容Bに該当する処理内容がない場合はST402へ進む。
ST402:処理内容Aの実行に必要となる回路情報をFPGA14にコンフィギュレーションするのに十分な構成サイクル数を確保することができるか判断する。判断対象となる回路情報は、処理内容Aに情報として付加されている管理番号のうち、構成サイクル数が最小の回路情報である。処理内容Bと処理内容Aの間の処理内容をプロセッサ12で実行するのに必要となるサイクル数CCと回路情報ライブラリ6の構成サイクル数FCの数値の大小を比較し、FC≦CCの条件式が成り立たない(構成サイクル数を十分に確保できない)ならばST403へ、条件式が成り立つ(構成サイクル数を十分に確保できる)ならばST408へ処理を進める。処理内容Bに該当する処理内容がない場合(処理内容Aの配置アドレスに降順でFPGA14で実行する処理内容がない場合)は、実行プログラムの先頭の配置アドレスからの処理内容から処理内容Aの前の配置アドレスの処理内容までをプロセッサ12で実行するのに必要となるサイクル数をCCとする。
ST403:処理内容Bにロックフラグが付加されているかを判断する。ロックフラグは、各処理内容について処理内容の実行に使用する回路情報を変更することを拒絶するか否かを示す情報であり、ST409およびST410においてFPGA14で実行すると決定した処理内容の中間コードに付加される。処理内容Bにロックフラグが付加されているならST405へ進み、ロックフラグが付加されていないならばST404へ進む。
ST404:処理内容Aおよび処理内容Bを実行することができる回路情報があるか(処理内容Aおよび処理内容Bに共通に付加されている管理番号があるか)を判断する。処理内容Aおよび処理内容Bを実行することができる回路情報があるならばST410へ進み、該当する回路情報がなければST405へ進む。
ST405:処理内容Aについて、第1モード処理#1の方が高速か、第2モード処理#2の方が高速かを判断する。第1モード処理#1というのは、処理内容Aをプロセッサ12で実行する処理である。また、第2モード処理#2というのは、FPGA14に対する回路情報のコンフィギュレーションが完了するまでプロセッサ12の動作を停止し、コンフィギュレーションが完了してから処理内容AをFPGA14で実行する処理である。この判断は、FC+FD<CC+CDの条件式にて行う。判断対象となる回路情報はST402で判断対象となった回路情報である。条件式が成り立つ(第2モード処理#2の方が高速)ならばST408へ、条件式が成り立たない(第1モード処理#1の方が高速)ならばST407へ処理を進める。
ST406:処理内容Bにロックフラグが付加されているかを判断し、付加されているならST409へ、付加されていないならST408へ進む。
ST407:処理内容Aをプロセッサ12で実行することを決定する。
ST408:処理内容AをST402、ST405、ST406で判断対象となった回路情報を使用してFPGA14で実行することを決定する。処理内容Aの中間コードに、判断対象となった回路情報の管理番号と、判断対象となった回路情報で処理内容Aを実行するために必要となる回路選択情報を情報として新たに付加する。
ST409:ST406で判断対象となった回路情報を使用して処理内容AをFPGA14で実行することを決定する。処理内容Aの中間コードに、判断対象となった回路情報の管理番号と、判断対象となった回路情報で処理内容Aを実行するために必要となる回路選択情報を情報として新たに付加する。また、処理内容Aにロックフラグを付加する。
ST410:ST404で判断した回路情報を使って処理内容Aおよび処理内容BをFPGA14で実行することを決定する。処理内容Aの中間コードに、判断対象となった回路情報の管理番号と、判断対象となった回路情報で処理内容Aを実行するために必要となる回路選択情報を情報として付加する。また、処理内容Aに対してロックフラグを付加する。処理内容Bに付加されている管理番号を処理内容Aと同じ管理番号に置き換え、付加されている回路選択情報を置き換えた管理番号の回路情報で処理内容Bを実行するために必要となる回路選択情報に置き換える。
ST50:ST408、ST409、ST410においてFPGA14で実行すると決定した各処理内容に付加した管理番号を検索し、検索して見つけた管理番号の回路情報を回路情報ライブラリ6より管理番号順に抽出し、回路情報リストF2およびアドレスリストF3を作成する。このとき、抽出する回路情報の管理番号にシリアルナンバーを割り振り、コンパイラはシリアルナンバーと管理番号との対応を記憶する。
ST60:ST408、ST409、ST410においてFPGA14で実行すると決定した各処理内容を、FPGA実行命令に置き換える。ST408、ST409、ST410で各処理に付加した管理番号に対応するシリアルナンバー、およびST408、ST409、ST410で付加した回路選択情報を示すFPGA実行命令で各処理内容を置き換える。置き換えが完了すると、ST40で付加してきた管理番号、回路選択情報、ロックフラグの情報を消す。
ST70:各FPGA実行命令で使用する回路情報のFPGA14へのコンフィギュレーションを開始する中間コードの配置アドレスを判断し、判断した配置アドレスにFPGA構成命令を組み込む。本ステップでは配置アドレスの先頭アドレスから昇順にFPGA実行命令を検索し、見つけたFPGA実行命令が使用する回路情報をコンフィギュレーションするFPGA構成命令を組み込む。
FPGA構成命令を組み込む配置アドレスを判断する方法を以下に示す。以下説明で使用する語句の説明をする。判断対象となるFPGA実行命令をFPGA実行命令Aと、FPGA実行命令Aの配置アドレスに対し、降順でアドレスが最短なFPGA実行命令をFPGA実行命令Bと定義する。
FPGA実行命令Aが示すシリアルナンバーとFPGA実行命令Bが示すシリアルナンバーが一致しているか(FPGA実行命令AとFPGA実行命令Bは同じ回路情報を使用して実行するか)を判断する。FPGA実行命令AとFPGA実行命令Bのシリアルナンバーが一致している(FPGA実行命令AとFPGA実行命令Bは同じ回路情報を使用して実行する)場合、FPGA構成命令(「fpgac …」)を中間コードに組み込まない。FPGA実行命令とFPGA実行命令Bのシリアルナンバーが異なっている(FPGA実行命令AとFPGA実行命令Bは異なる回路情報を使用して実行する)場合、FPGA実行命令Aが示すシリアルナンバーを示すFPGA構成命令をFPGA実行命令Bの後の配置アドレスに組み込む。FPGA実行命令Aに対し、FPGA実行命令Bに該当するFPGA実行命令がない場合、FPGA実行命令Aが示すシリアルナンバーを示すFPGA構成命令を中間コードの先頭アドレスに組み込む。
上記のような判断をすることにより、同じ回路情報を使用するFPGA実行命令が連続する場合、同じシリアルナンバーを示すFPGA構成命令を中間コードに組み込まずに済み、実行プログラムF1のサイズを小さくすることができる。
ST80:コード生成ルーチンを経て、実行プログラムF1を作成する。
以下に、コンパイラ5がソースプログラムF0から図19の中間コード例を生成し、図17の回路情報ライブラリおよび図5のプロセッサ実行サイクルリストを参照し、実行プログラムF1、回路情報リストF2、アドレスリストF3を作成するフローを例にて説明する。図19の「d0」、「d1」、「d2」、「d3」はデータレジスタを、「0x00」、「0x10」、「0x100」、「0x33333333」は即値を示している。図19の各命令については図3および図5で説明した内容と同様である。
ST10:ソースプログラムF0を読み込む。
ST20:図19に示す中間コード例を生成する。
ST30:図17の回路情報ライブラリおよび図5のプロセッサ実行サイクルリストを参照し、図19の中間コード例においてFPGA14で実行できる処理内容を検索する。この例では、図19の3行目の「mulu d1,d3」、6行目の「div d1,d2」、9行目の「mul d2,d3」、11行目の「mulu d0,d1」をFPGA14で実行することができると判断する。3行目の「mulud1,d3」を実行できるのは回路情報2、6行目の「div d1,d2」を実行できるのは回路情報1および4、9行目の「mul d2,d3」を実行できるのは回路情報3および4、11行目の「muld0,d1」を実行できるのは回路情報3および4である。
図20は、上記処理内容を実行することができる回路情報の管理番号を各処理内容の中間コードに情報として付加する例であり、「*」と「*」で囲まれた数値が管理番号を示す。上記の処理内容以外についてはプロセッサ12で実行することを決定する。
ST40:図19の3行目の「mulu d1,d3」、6行目の「div d1,d2」、9行目の「muld2,d3」、11行目の「mul d0,d1」の順で、各処理内容をFPGA14で実行するかプロセッサ12で実行するかを判断する。処理内容毎にST401〜ST410の処理を行う。
まず、最初に3行目の「mulu d1,d3」についてST40の処理を行う。
ST401:3行目の「mulu d1,d3」については処理内容Bに該当する処理内容がないのでST402へ進む。
ST402:3行目の「mulu d1,d3」の実行に必要となる回路情報をFPGA14にコンフィギュレーションするのに十分な構成サイクル数を確保することができるか判断する。判断対象となる回路情報は回路情報2である。3行目の「mulud1,d3」について、コンパイラ5は1行目の「mov 0x00,d1」から2行目の「mov d2,d3」までをプロセッサ12で実行するときに必要となるサイクル数CCを算出する。CCが150サイクルである場合、FCは120サイクルであるので、コンパイラ5はFC≦CCが成り立つ(構成サイクル数を十分に確保できる)と判断し、ST408へ進む。
ST408:3行目の「mulu d1,d3」は、回路情報2を使ってFPGA14で実行することを決定する。3行目の「mulud1,d3」に、新たに管理番号の「2」と、回路情報2で「mulu d1,d3」を実行するために必要となる回路選択情報の「1」を情報として付加する。
図21は、上記ST408を実行し終えた時点での中間コード例である。Fで囲まれた「2」、「1」がそれぞれST408で付加した管理番号と回路選択情報である。
次に、6行目の「div d1,d2」についてST40の処理を行う。
ST401:3行目の「mulu d1,d3」は回路情報2を用いて実行され、回路情報2では「divd1,d2」を実行することができないとコンパイラ5は判断し、ST402へ進む。
ST402:6行目の「div d1,d2」の実行に必要となる回路情報をFPGA14にコンフィギュレーションするのに十分な構成サイクル数を確保することができるか判断する。判断対象となる回路情報は構成サイクル数が最小の回路情報1である。6行目の「divd1,d2」について、4行目の「mov 0x33333333,d2」から5行目の「add 0x10,d2」までをプロセッサ12で実行するときに必要となるサイクル数CCを算出する。サイクル数CCが80サイクルである場合、FCは100サイクルであるので、コンパイラ5はFC≦CCが成り立たない(構成サイクル数を十分に確保できない)と判断し、ST403へ進む。
ST403:3行目の「mulu d1,d3」にはロックフラグ(処理内容の実行に使用する回路情報を変更することを拒絶するか否かを示す情報)が付加されていないのでST404へ進む。
ST404:6行目の「div d1,d2」について、3行目の「mulu d1,d3」も実行できる回路情報があるかを判断する。6行目の「divd1,d2」の「*」で囲まれた数値(「1」と「4」)と、3行目の「mulu d1,d3」の「*」で囲まれた数値(「2」)を検索し、一致する管理番号がないと判断し、ST405へ進む。
ST405:6行目の「div d1,d2」について、プロセッサ12での実行を伴う第1モード処理#1の方が高速か、プロセッサ12の動作停止・FPGA14へのコンフィギュレーション・FPGA14での実行を伴う第2モード処理#2の方が高速かを判断する。判断対象となる回路情報はST402と同様に回路情報1である。6行目の「divd1,d2」について、FCが100サイクル、FDが5サイクル、CCが80サイクル、CDが40サイクルであり、FC+FD<CC+CDの条件を満たす(第2モード処理#2の方が高速である)のでST408へ進む。
ST408:6行目の「div d1,d2」は回路情報1を使ってFPGA14で実行することを決定する。6行目の「divd1,d2」に、新たに管理番号の「1」と、回路情報1で「div d1,d2」を実行するために必要となる回路選択情報の「1」を情報として付加する。
図22は、上記ST408を実行し終えた時点での中間コード例である。「F」で囲まれた「1」、「1」がそれぞれ上記ST408で付加した管理番号と回路選択情報である。
次に、9行目の「mul d2,d3」についてST40の処理を行う。
ST401:6行目の「div d1,d2」は回路情報1を用いて実行され、回路情報1では「muld2,d3」を実行することができないとコンパイラ5は判断し、ST402へ進む。
ST402:9行目の「mul d2,d3」の実行に必要となる回路情報をFPGA14にコンフィギュレーションするのに十分な構成サイクル数を確保することができるか判断する。判断対象となる回路情報は構成サイクルが最小の回路情報3である。9行目の「muld2,d3」について、7行目の「mov d2,d3」から8行目の「add 0x10,d2」までをプロセッサ12で実行するときに必要となるサイクル数CCを算出する。サイクル数CCが30サイクルである場合、FCは105サイクルであるので、コンパイラ5はFC≦CCが成り立たない(構成サイクルを十分に確保できない)と判断し、ST403へ進む。
ST403:6行目の「div d1,d2」にはロックフラグが付加されていないのでST404へ進む。
ST404:6行目の「div d1,d2」および9行目の「mul d2,d3」を実行することができる回路情報があるかを判断する。6行目の「divd1,d2」の「*」で囲まれた数値と、9行目の「mul d2,d3」の「*」で囲まれた数値を検索し、管理番号4が一致すると判断し、ST410へ進む。
ST410:6行目の「div d1,d2」および9行目の「mul d2,d3」を回路情報4で実行することを決定する。9行目の「muld2,d3」に、新たに管理番号の「4」と、回路情報4で「mul d2,d3」を実行するために必要となる回路選択情報の「1」を情報として付加する(図17の4行目で「mulA,B」に対応する回路選択情報は「1」)。また、9行目の「mul d2,d3」にはロックフラグ(処理内容の実行に使用する回路情報を変更することを拒絶することを示す情報)を付加する。6行目の「divd1,d2」については、「F」で囲まれた管理番号「1」を管理番号「4」に置き換え、回路選択情報「1」を回路情報4で「div d1,d2」を実行するために必要となる回路選択情報「2」に置き換える。
図23は、上記ST410を実行し終えた時点での中間コード例である。「L」はロックフラグを示す。
最後に、11行目の「mul d0,d1」についてST40の処理を行う。
ST401:9行目の「mul d2,d3」は回路情報4を使用して実行され、回路情報4で「muld0,d1」を実行することができるとコンパイラ5は判断し、ST406へ進む。
ST406:9行目の「mul d2,d3」の中間コードにはロックフラグが付加されているので、ST409へ進む。
ST409:11行目の「mul d0,d1」は回路情報4を使用してFPGA14で実行することを決定する。11行目の「muld0,d1」に、新たに管理番号の「4」と、回路情報4で「mul d0,d1」を実行するために必要となる回路選択情報の「1」を情報として付加する。また、11行目の「muld0,d1」にロックフラグを付加する。
図24は、上記ST409を終えた時点での中間コード例である。
ST50:ST40においてFPGA14で実行すると判断した「mulu d1,d3」、「divd1,d2」、「mul d2,d3」、「mul d0,d1」の実行に必要となる回路情報2,4を抽出した回路情報リストF2およびアドレスリストF3を作成する。
図25は回路情報2,4を回路情報ライブラリ6より抽出した回路情報リストF2の例を示す。図25の左端の数値は各回路情報が格納されるアドレスを示す。
本ステップにおいて抽出する回路情報2,4が格納されるアドレスを示すアドレスリストF3を作成する。図26は回路情報2、4を格納するスタートアドレスおよびエンドアドレスを示すアドレスリストF3の例である。図26の左端の数値はスタートアドレスおよびエンドアドレスが格納されるアドレスを示す。
なお、回路情報リストF2およびアドレスリストF3は、回路情報保持構成制御手段13の仕様に合わせてコンパイラ5は回路情報リストF2およびアドレスリストF3を作成すればよい。コンパイラ5は回路情報を抽出する際に回路情報2,4の管理番号2,4にシリアルナンバー1,2を割り振り、管理番号2とシリアルナンバー1が、管理番号4とシリアルナンバー2が対応することを記憶する。
ST60:ST408、ST409、ST410においてFPGA14で実行すると決定した3行目の「mulud1,d3」、6行目の「div d1,d2」、9行目の「mul d2,d3」、11行目の「mul d0,d1」を、FPGA実行命令に置き換える。各処理内容について「F」で囲まれている管理番号に対応するシリアルナンバーおよび、「F」に囲まれた回路選択情報を示すFPGA実行命令で各処理内容を置き換える。置き換えが完了すると、ST40で付加した管理番号、回路選択情報、ロックフラグを消す。
図27は、上記ST60までを実行したときの中間コード例である。「fpgad」はFPGA実行命令の一例を示したものである。3行目の「fpgad」が示す数字の「1」は回路情報2に対応するシリアルナンバーを示し、シリアルナンバーが示す「1」は「muluA,B」をシリアルナンバー1対応の回路情報で実行するための回路選択情報を示し、「d1,d3」は処理内容の実行に必要となるデータレジスタを示している。同様に6行目の「fpgad」、9行目の「fpgad」,11行目の「fpgad」についてもシリアルナンバー「2」に対応した回路情報4のFPGA構成命令、FPGA実行命令となり、6行目のFPGA実行命令は「divA,B」を実行するための回路選択情報「2」を、9行目および11行目のFPGA実行命令は「mul A,B」を実行するための回路選択情報「1」を示している。
ST70:中間コードの3行目の「fpgad 1,1,d1,d3」、6行目の「fpgad2,2,d1,d2」、9行目の「fpgad 2,1,d2,d3」、11行目の「fpgad 2,1,d0,d1」について、各処理内容の実行に必要となる回路情報をFPGA14にコンフィギュレーションを開始する配置アドレスを判断する。「fpgad」の次の数値はシリアルナンバーを示し、その次の数値は回路選択情報を示す。
3行目の「fpgad 2,1d1,d3」の場合、3行目の「fpgad 2,1,d1,d3」の配置アドレスより降順にFPGA実行命令が存在しないため、1行目の「mov0x00,d1」の前にシリアルナンバー1を示すFPGA構成命令(「fpgac 1」)を組み込む。
6行目の「fpgad 2,2,d1,d2」の場合、3行目の「fpgad 1,1,d1,d3」とは異なるシリアルナンバーが後に続いているので、3行目の「fpgad1,1,d1,d3」の次の配置アドレスにシリアルナンバー2が続くFPGA構成命令(「fpgac 2」)を組み込む。
9行目の「fpgad 2,1,d2,d3」および11行目の「fpgad 2,1,d0,d1」は6行目の「fpgad2,2,d1,d2」と同じシリアルナンバーであるので、FPGA構成命令を組み込まない。
図28は、上記ST70までを実行したときの中間コードである。「fpgac」はFPGA構成命令の一例であり、「fpgac」が示す数値はシリアルナンバーである。1行目の「fpgac1」はシリアルナンバー1対応の回路情報2をFPGA14にコンフィギュレーションする処理内容で、5行目の「fpgac 2」はシリアルナンバー2対応の回路情報4をFPGA14にコンフィギュレーションする処理内容である。
ST80:ST70で変換した中間コードから実行プログラムF1を生成する。
以上の例のように、9行目の「mul d2,d3」について、回路情報3はFPGA14にコンフィギュレーションする構成サイクル数を確保できないが、処理内容「mulA,B」および「div A,B」を実行することができる回路情報4をあらかじめFPGA14にコンフィギュレーションしておくことにより、9行目の「muld2,d3」もFPGA14で実行することができ、実行プログラムF1の処理速度を向上させることが可能となる。
本実施形態によれば、コンパイラ5が生成する中間コードにおいてFPGA14で実行できる処理内容が近接していた場合、複数の処理内容を実行することができる回路情報をあらかじめFPGA14にコンフィギュレーションするように実行プログラムF1を生成することにより、回路情報をコンフィギュレーションするサイクル数が確保できない処理内容に関してもFPGA14で実行することができ、システム全体のパフォーマンスを向上させることが可能となる。
なお、本実施形態のST402およびST405で判断対象となった回路情報は構成サイクル数が最小の回路情報としたが、構成サイクル数が多少大きくても実行サイクル数が最小の回路情報を判断対象としてもよい。実行サイクル数が最小の回路情報を判断対象とする場合、同じFPGA実行命令を繰り返し実行することが多い実行プログラムF1において処理能力向上を図ることができる。また、本実施形態では2つの処理内容を実行することができる回路情報を含んだシステムについて説明したが、3つ以上の処理内容を実行することができる回路情報を含んだシステムを構築しても良い。
(第3の実施形態)
上記第1および第2の実施形態では、実行プログラムF1の実行中に割り込みやサブルーチン分岐が発生した場合に課題がある。以下の説明において、その課題を説明する。
第1および第2の実施形態において、シリアルナンバー1対応の回路情報1をFPGA14にコンフィギュレーションしている間に割り込みやサブルーチン分岐が発生し、割り込み処理やサブルーチン処理の中でシリアルナンバー2対応の回路情報2をFPGA14にコンフィギュレーションした場合、プロセッサ12が割り込み処理やサブルーチン処理より復帰し、シリアルナンバー1対応の回路情報1を用いるFPGA実行命令を実行すると、FPGA14には回路情報2がコンフィギュレーションされているので、プロセッサ12は再度、回路情報1をFPGA14にコンフィギュレーションするように回路情報保持構成制御手段13に命令を出す。その結果として、プロセッサ12は、FPGA14のコンフィギュレーションが完了するまでプロセッサ12の動作を止め、FPGA14のコンフィギュレーションが完了すると、プロセッサ12は処理内容をFPGA14に実行させる。このように、FPGA実行命令を実行してからFPGA14をコンフィギュレーションしなければならないため、サイクル数のロスが大きくなり、FPGA14による処理能力の向上を図ることができなくなることがある。
そこで、本発明の第3の実施形態は上記課題を解決するものである。本発明の第3の実施形態が第1および第2の実施形態と異なるのは、プロセッサ12が実行プログラムF1を実行している間に割り込みやサブルーチン分岐が発生した場合、PC(Program Counter)とともに、図15に示す回路情報保持構成制御手段13のシリアルナンバーレジスタ32から読み出したシリアルナンバーを格納するためのデータメモリとして、プロセッサ12のスタック領域を設け、このスタック領域にPCとシリアルナンバーを格納し、割り込み処理やサブルーチン処理から復帰すると、スタック領域に格納したシリアルナンバーに対応する回路情報でFPGA14をコンフィギュレーションするように回路情報保持構成制御手段13に命令する機構をプロセッサ12に設けたことである。
なお、スタック領域は図1および図15には示していないが、プロセッサ外部に設けたメモリに配置してもよい。
図29の中間コード例を用いて、第3の実施形態において実行プログラムF1を実行している間に割り込みが発生した場合の処理を説明する。
図29は中間コードの例を示しており、24行目の「rti」は割り込み処理からの復帰を行う処理内容で、他の各処理内容については図3、図5、図13の説明と同様の処理内容を示す。また、各行の左端に行数を示す。20〜24行目の処理内容は、割り込みが発生したときにプロセッサ12が実行する割り込み処理であり、プロセッサ12は割り込み処理を実行し終えると復帰する。
プロセッサ12は、図29の中間コードをコンパイルして作成した実行プログラムF1を読み出すと、図29の中間コード例の1行目の「fpgac 2」から順に実行する。プロセッサ12は5行目の「fpgac 1」を実行すると、回路情報保持構成制御手段13にシリアルナンバー1対応の回路情報でFPGA14をコンフィギュレーションするように命令する。
プロセッサ12が6行目の「add d0,d1」を実行しているときに割り込みが発生した場合、プロセッサ12は6行目の「addd0,d1」の実行を終えてから、プロセッサ12のスタック領域にPCおよびシリアルナンバーレジスタ32から読み出したシリアルナンバー(この例ではシリアルナンバー0)を格納する。プロセッサ12はスタック領域への格納を終えると、20行目に分岐して割り込み処理を実行し始める。プロセッサ12は、20行目の「fpgac3」を実行して回路情報保持構成制御手段13にシリアルナンバー3に対応する回路情報をFPGA14にコンフィギュレーションするように命令を出す。プロセッサ12は、23行目の「fpgad3,d2,d0」をFPGA14で実行させ、実行結果をFPGA14から受け取ると、24行目の「rti」を実行して7行目の「mov 0x10,d2」の実行に復帰する。プロセッサ12は、7行目の「mov0x10,d2」を実行する前に、スタック領域に格納したシリアルナンバー1対応の回路情報でFPGA14をコンフィギュレーションするように回路情報保持構成制御手段13に命令を出す。このときの回路情報保持構成制御手段13の処理は、プロセッサ12がFPGA構成命令を実行した場合と同様である。プロセッサ12は、回路情報保持構成制御手段13にFPGA14のコンフィギュレーションをするように命令を出すと、7行目の「mov0x10,d2」以降の処理内容を実行する。
ここで、図29の割り込み処理でシリアルナンバー3を示したFPGA構成命令とFPGA実行命令ではなく、シリアルナンバー2を示したFPGA構成命令とFPGA実行命令があった場合や、FPGA構成命令およびFPGA実行命令がなかった場合は、割り込み処理復帰後にシリアルナンバー2対応の回路情報をFPGA14にコンフィギュレーションしようとするが、シリアルナンバーレジスタ23にはシリアルナンバー2が格納されており、回路情報保持構成制御手段13はすでにシリアルナンバーに対応する回路情報がFPGA14に構成されていると判断するので、割り込み処理復帰後にコンフィギュレーションは発生しない。
以上のように、本実施形態によれば、割り込み処理やサブルーチン処理からの復帰後に、プロセッサ12のスタック領域に格納したシリアルナンバーに対応する回路情報をFPGA14にコンフィギュレーションするように命令を出すことよって、FPGA実行命令を実行する前に、そのFPGA実行命令を実行するのに必要となる回路情報のコンフィギュレーションを開始することができ、サイクル数のロスを小さくすることができる。
(第4の実施形態)
上記第1および第2の実施形態では、図1の実行プログラムF1の実行中に分岐が発生した場合に課題がある。その課題を以下に詳しく説明する。
ある任意の回路情報AのFPGA構成命令AからFPGA実行命令Aの間にプログラムが分岐してきた場合、FPGA構成命令Aを実行せずにFPGA実行命令Aを実行する場合がある。第1の実施の形態においては、FPGA実行命令Aを実行するときにFPGAステータスレジスタ31とシリアルナンバーレジスタ32を読み出し、回路情報AがFPGA14にコンフィギュレーションされているか確認した後、FPGA実行命令Aを実行することになる。しかし、この場合では回路情報Aがコンフィギュレーションされていない場合が考えられ、FPGA14に回路情報Aをコンフィギュレーションする工程が発生する。コンフィギュレーション中はプロセッサ12が待たされた状態となり、その間のサイクル数が無駄となり、システム全体のパフォーマンスが低下する原因となる。そこで本実施の形態では、分岐も考慮したシステム構成を以下に説明する。
本発明の第4の実施形態が第1および第2の実施形態と異なるのは、図1のコンパイラ5が中間コードから分岐命令を検索し、分岐命令があるようなら、その分岐命令のオペランドがラベルまたは即値であるかを判断し、オペランドがラベルか即値を示すならそのオペランドが示す分岐先の配置アドレスの昇順の処理内容においてFPGA実行命令を配置アドレスの昇順に検索し、最初に見つけたFPGA実行命令が示すシリアルナンバーを調べ、そのシリアルナンバーを示すFPGA構成命令を分岐先の中間コードの配置アドレスに組み込むステップを設けたことである。
図30は、本実施形態におけるコンパイラの処理を示すものである。図30のST75は前述した分岐先の配置アドレスにFPGA構成命令を組み込むステップである。ST75以外はすべて図6のコンパイラの処理と同様である。
図31は、図30のST70までを実行して得た中間コードの例である。12行目の「beq」は、11行目の「cmpd1,d2」の演算結果を反映し、「d1」と「d2」が等しくなければ次の命令を実行し、「d1」、「d2」が等しければ「beq」のオペランドが示すアドレスへ分岐する命令である。この例では、「beq」のオペランドは3行目の「label1」を示しているので、「d1」、「d2」が等しければプロセッサ12は3行目に分岐する。
本実施形態において、図1のコンパイラ5が図31の中間コード例をST75で処理した場合、コンパイラ5は、図31の中間コード例から分岐命令を検索する。この例では、12行目の「beq」が分岐命令であるので、コンパイラ5はその命令のオペランドがラベルまたは即値であるかを判断する。12行目の「beq」のオペランドが「label1」でラベルであると判断すると、コンパイラ5は3行目の「label1」を基点として配置アドレスの昇順にFPGA実行命令を検索する。コンパイラ5は、最初に見つけた6行目の「fpgad2,d2,d0」のシリアルナンバーを調べ、そのシリアルナンバーが示すFPGA構成命令を3行目に組み込む。6行目の「fpgad 2,d2,d0」は、シリアルナンバー2対応の回路情報を用いて実行されるので、3行目に組み込むFPGA構成命令は「fpgac2」となる。ここでFPGA実行命令に対応したFPGA構成命令がある場合やFPGA実行命令がない場合は、FPGA構成命令の組み込みは行わない。
図32は、図31の中間コード例にFPGA構成命令を組み込んだ後の中間コード例である。図31と異なる点は3行目に「fpgac 2」を組み込んだことである。この中間コードをコンパイルして実行プログラムを作成し、プロセッサ12がその実行プログラムを読み込むと、プロセッサ12は1行目の「fpgac2」から配置アドレスの昇順に実行する。プロセッサ12はシリアルナンバー2対応の回路情報をFPGA14にコンフィギュレーションするように回路情報保持構成制御手段13に命令を出す。回路情報保持構成制御手段13は、プロセッサ12が指示するシリアルナンバー2とシリアルナンバーレジスタ32の値を比較し、値が異なるため、シリアルナンバー2対応の回路情報をFPGA14にコンフィギュレーションする。プロセッサ12は順次命令を実行していき、3行目の「fpgac2」を実行する。プロセッサ12はシリアルナンバー2対応の回路情報をFPGA14にコンフィギュレーションするように回路情報保持構成制御手段13に命令を出す。回路情報保持手段13は、命令に従いFPGA14をコンフィギュレーションしようとするが、シリアルナンバーレジスタ32の値がシリアルナンバー2と同値であるため、コンフィギュレーションは行わない。
次にプロセッサ12は7行目の「fpgac 1」を実行するときは、シリアルナンバー1対応の回路情報をFPGA14にコンフィギュレーションするように回路情報保持構成制御手段13に命令を出す。回路情報保持構成制御手段13は、命令に従いFPGA14をコンフィギュレーションする。10行目の「fpgad1,d1,d0」を実行し、12行目の「beq label1」において、分岐が発生した場合は3行目に分岐する。分岐しない場合は、次の命令を実行する。3行目に分岐するとプロセッサ12は「fpgac2」を実行してシリアルナンバー2対応の回路情報をFPGA14にコンフィギュレーションするように回路情報保持構成制御手段13に命令を出す。回路情報保持構成制御手段13は、命令に従いFPGA14をコンフィギュレーションする。こうすることにより、FPGA実行命令を実行する前にあらかじめFPGA14をコンフィギュレーションすることが可能となる。
以上のように、本実施形態によれば、実行プログラムF1において分岐命令で分岐が発生しても、分岐先にFPGA構成命令を組み込んでおくことにより、プロセッサ12がFPGA実行命令を実行する前にFPGA実行命令の実行に必要となる回路情報でFPGA14のコンフィギュレーションを開始することができ、プロセッサ12を待たせるサイクル数を小さくすることができ、システム全体のパフォーマンスを向上させることが可能となる。
以上のように、本発明によれば、従来、回路規模が大きいFPGAとプロセッサを用いて実行されていた処理を、回路規模が小さいFPGAとプロセッサで実行することができるようになるため、FPGAの導入コストを抑えることができ、より安価な半導体集積回路装置を提供することができる。また、FPGAでの処理内容の実行には回路情報ライブラリに格納された回路情報を用いるので、ソースプログラム毎に専用回路を設計する必要がないため、開発期間の短縮、開発コストを削減することができる。また、ソースプログラムを専用回路ではなく、汎用性のある回路情報ライブラリの回路情報を用いて実行するため、様々なソースプログラムを実行することが可能なコンパイラ装置および半導体集積回路装置を提供することができる。
本発明の第1の実施形態におけるコンパイラ装置および半導体集積回路装置のシステム構成図 本発明の第1の実施形態における回路情報ライブラリのデータ構造を示す図 本発明の第1の実施形態における回路情報ライブラリの一例を示す図 本発明の第1の実施形態におけるプロセッサ実行サイクルリストのデータ構造を示す図 本発明の第1の実施形態におけるプロセッサ実行サイクルリストの一例を示す図 本発明の第1の実施形態におけるコンパイラのソースプログラムのコンパイル過程を示すフローチャート 本発明の第1の実施形態におけるコンパイラのソースプログラムのコンパイル過程のST40の詳細なフローチャート 本発明の第1の実施形態における中間コードの一例を示す図 本発明の第1の実施形態における回路情報リストのデータ構造を示す図 本発明の第1の実施形態におけるアドレスリストのデータ構造を示す図 本発明の第1の実施形態における回路情報リストの一例を示す図 本発明の第1の実施形態におけるアドレスリストの一例を示す図 本発明の第1の実施形態におけるコンパイラのST60までを実行したときの中間コード例を示す図 本発明の第1の実施形態におけるコンパイラのST70までを実行したときの中間コード例を示す図 本発明の第1の実施形態における半導体集積回路装置の詳細なブロック回路図 本発明の第2の実施形態における回路情報ライブラリのデータ構造を示す図 本発明の第2の実施形態における回路情報ライブラリの一例を示す図 本発明の第2の実施形態におけるコンパイラのソースプログラムのコンパイル過程のST40の詳細なフローチャート 本発明の第2の実施形態における中間コードの一例を示す図 本発明の第2の実施形態におけるコンパイラのST30までを実行したときの中間コード例を示す図 本発明の第2の実施形態において「mulu d1,d3」についてコンパイラのST408までを実行したときの中間コード例を示す図 本発明の第2の実施形態において「div d1,d2」についてコンパイラのST408までを実行したときの中間コード例を示す図 本発明の第2の実施形態において「mul d2,d3」についてコンパイラのST410までを実行したときの中間コード例を示す図 本発明の第2の実施形態において「mul d0,d1」についてコンパイラのST409までを実行したときの中間コード例を示す図 本発明の第2の実施形態における回路情報リストの一例を示す図 本発明の第2の実施形態におけるアドレスリストの一例を示す図 本発明の第2の実施形態におけるコンパイラのST60までを実行したときの中間コード例を示す図 本発明の第2の実施形態におけるコンパイラのST70までを実行したときの中間コード例を示す図 本発明の第3の実施形態における中間コードの一例を示す図 本発明の第4の実施形態におけるコンパイラのソースプログラムのコンパイル過程を示すフローチャート 本発明の第4の実施形態におけるコンパイラのST70までを実行したときの中間コード例を示す図 本発明の第4の実施形態におけるコンパイラのST75までを実行したときの中間コード例を示す図
符号の説明
A コンパイラ装置
B 半導体集積回路装置
5 コンパイラ
5a プロセッサ実行サイクルリスト
6 回路情報ライブラリ
11 実行プログラム保持手段
12 プロセッサ
13 回路情報保持構成制御手段
14 FPGA(再構成可能処理装置)
20 FPGA組み込み構成手段
21 読み出しアドレスレジスタ
22 エンドアドレスレジスタ
23 構成制御部
24 デコーダ
25 データ制御部
31 FPGAステータスレジスタ
32 シリアルナンバーレジスタ
33 アドレスリスト保持手段
34 回路情報リスト保持手段
F0 ソースプログラム
F1 実行プログラム
F2 回路情報リスト
F3 アドレスリスト

Claims (15)

  1. プロセッサと、
    前記プロセッサが実行するもので実行命令および構成命令を含む実行プログラムを保持する実行プログラム保持手段と、
    回路を再構成可能なプログラマブルデバイスで構成され、前記プロセッサが前記実行命令を実行して指示する処理内容を実行する再構成可能処理装置と、
    前記再構成可能処理装置に組み込んで回路構成するための回路情報を保持し、前記プロセッサが前記構成命令の実行時に指定する前記回路情報を前記再構成可能処理装置に組み込んで回路構成する回路情報保持構成制御手段とを備えた半導体集積回路装置。
  2. 前記回路情報保持構成制御手段は、
    前記再構成可能処理装置に組み込んで回路構成するための回路情報を保持する回路情報リスト保持手段と、
    前記回路情報リスト保持手段に保持されている各回路情報のアドレス情報を保持するアドレスリスト保持手段と、
    前記プロセッサが指定する前記回路情報の前記アドレス情報を前記アドレスリスト保持手段から読み出し、前記アドレス情報を用いて前記回路情報リスト保持手段から前記回路情報を読み出し、前記回路情報を前記再構成可能処理装置に組み込んで回路構成する組み込み構成手段とを備えている請求項1に記載の半導体集積回路装置。
  3. 前記回路情報保持構成制御手段は、前記再構成可能処理装置にすでに組み込まれて回路構成されている回路情報を識別する回路識別情報を保持する回路識別情報レジスタを備え、
    前記組み込み構成手段は、前記プロセッサが回路識別情報に対応する回路情報を前記再構成可能処理装置に組み込んで回路構成するように命令した場合には、その命令にかかわる前記回路識別情報と前記回路識別情報レジスタに保持されている前記回路識別情報とを比較し、一致しない場合のみ前記回路情報を前記再構成可能処理装置へ組み込んで回路構成する請求項2に記載の半導体集積回路装置。
  4. 前記プロセッサは、前記実行命令を実行する場合に、前記実行命令が示す回路識別情報と前記回路識別情報レジスタに保持されている前記回路識別情報とを比較し、一致する場合は前記実行命令が示す処理内容の実行を前記再構成可能処理装置へ指示し、一致しない場合は前記実行命令が示す前記回路識別情報に対応する前記回路情報を前記再構成可能処理装置へ組み込んで回路構成するように指示し、前記再構成可能処理装置への組み込み構成後、前記実行命令が示す処理内容の実行を前記再構成可能処理装置に指示する請求項2に記載の半導体集積回路装置。
  5. 前記回路情報保持構成制御手段は、前記回路識別情報レジスタに保持されている前記回路識別情報に対応する回路情報の前記再構成可能処理装置に対する組み込み構成が終了しているかを示すステータスレジスタを備え、
    前記プロセッサは、前記実行命令を実行する場合に、前記ステータスレジスタの値を読み出し、前記回路識別情報レジスタの回路識別情報に対応する回路情報の前記再構成可能処理装置に対する組み込み構成が終了しているか否かを判断し、組み込み構成が終了していない場合は前記再構成可能処理装置への処理内容の実行の指示を待たせ、組み込み構成が終了している場合は前記再構成可能処理装置への処理内容の実行の指示を出す請求項4に記載の半導体集積回路装置。
  6. 再構成可能処理装置に組み込み構成する処理内容毎の回路情報を複数格納した回路情報ライブラリと、ソースプログラムを実行プログラムに変換するコンパイラとを備えたコンパイラ装置。
  7. 前記コンパイラは、プログラム中の各処理内容について、実行サイクル数と前記再構成可能処理装置に各回路情報を構成するのに必要となる構成サイクル数とを考慮し、プログラム全体の処理サイクル数が小さくなるようにプロセッサと前記再構成可能処理装置で実行する処理内容を切り分ける機能を備えている請求項6に記載のコンパイラ装置。
  8. 前記コンパイラは、前記再構成可能処理装置で実行するために切り分けた処理内容について、その処理内容を実行命令に置き換える機能と、置き換えた前記実行命令が示す回路識別情報を示す構成命令をプログラムに組み込む機能とを備えている請求項7に記載のコンパイラ装置。
  9. 前記コンパイラは、前記実行命令を前記再構成可能処理装置で実行するのに必要となる前記回路情報を前記回路情報ライブラリから抽出して回路情報リストを作成する機能と、前記回路情報リストに格納した各回路情報を格納しているアドレスを記載したアドレスリストを作成する機能とを備えている請求項8に記載のコンパイラ装置。
  10. 前記回路情報リスト保持手段は、複数の処理内容を実行可能な回路情報を備えている請求項2に記載の半導体集積回路装置。
  11. 前記実行プログラム保持手段において、前記回路情報で構成される前記再構成可能処理装置は複数の処理内容を実行することができ、前記実行命令は前記回路情報の複数の処理内容のいずれかを指定する回路選択情報を含み、前記プロセッサは前記回路選択情報で示される処理内容の実行を前記再構成可能処理装置に指示する請求項10に記載の半導体集積回路装置。
  12. 前記回路情報ライブラリは、複数の処理内容を実行することができる複数の回路情報を備えている請求項9に記載のコンパイラ装置。
  13. 前記コンパイラは、プログラム中の各処理内容について、前記実行サイクル数と、前記
    再構成可能処理装置に各回路情報を構成するのに必要となる構成サイクル数と、回路情報
    で実行することができる処理内容を考慮し、プログラム全体の処理サイクル数が小さくな
    るように前記プロセッサと前記再構成可能処理装置で実行する処理内容を切り分ける機能
    を備えている請求項12に記載のコンパイラ装置。
  14. さらに、データを格納するデータメモリを備え、
    前記プロセッサは、実行プログラム実行中に割り込みが発生した場合に、前記回路識別情報レジスタに格納されている回路識別情報を前記データメモリに格納し、割り込み処理復帰後に前記データメモリから読み出した前記回路識別情報に対応する回路情報を前記再構成可能処理装置に組み込んで回路構成するように前記回路情報保持構成制御手段に命令する機能を備えている請求項2に記載の半導体集積回路装置。
  15. 前記コンパイラは、
    ソースプログラムコンパイル時に、プログラム中に分岐処理が含まれているかを判断する第1の判別手段と、
    前記第1の判別手段の結果を受け、分岐処理の分岐先が確定しているか否かを判断する第2の判別手段と、
    前記第2の判別手段の結果を受け、分岐先を基点として配置アドレスの昇順に実行命令があるか否かを判断する第3の判別手段と、
    前記第3の判別手段の結果を受け、前記実行命令が示す回路情報を構成する構成命令を分岐先に組み込む機能を備えた請求項11に記載のコンパイラ装置。
JP2006232365A 2006-08-29 2006-08-29 コンパイラ装置および半導体集積回路装置 Withdrawn JP2008059066A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006232365A JP2008059066A (ja) 2006-08-29 2006-08-29 コンパイラ装置および半導体集積回路装置
US11/896,131 US20080059777A1 (en) 2006-08-29 2007-08-29 Semiconductor integrated circuit device and compiler device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006232365A JP2008059066A (ja) 2006-08-29 2006-08-29 コンパイラ装置および半導体集積回路装置

Publications (1)

Publication Number Publication Date
JP2008059066A true JP2008059066A (ja) 2008-03-13

Family

ID=39153437

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006232365A Withdrawn JP2008059066A (ja) 2006-08-29 2006-08-29 コンパイラ装置および半導体集積回路装置

Country Status (2)

Country Link
US (1) US20080059777A1 (ja)
JP (1) JP2008059066A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5943736B2 (ja) 2012-06-28 2016-07-05 キヤノン株式会社 情報処理装置、情報処理装置の制御方法及びプログラム
GB2563841A (en) * 2017-06-26 2019-01-02 Sony Interactive Entertainment Europe Ltd Data processing

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5307505A (en) * 1992-05-05 1994-04-26 The United States Of America As Represented By The Secretary Of The Navy Rapid reprogramming terminal
DE19654846A1 (de) * 1996-12-27 1998-07-09 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.)
US7152027B2 (en) * 1998-02-17 2006-12-19 National Instruments Corporation Reconfigurable test system
US6096091A (en) * 1998-02-24 2000-08-01 Advanced Micro Devices, Inc. Dynamically reconfigurable logic networks interconnected by fall-through FIFOs for flexible pipeline processing in a system-on-a-chip
US20020100029A1 (en) * 2000-07-20 2002-07-25 Matt Bowen System, method and article of manufacture for compiling and invoking C functions in hardware
WO2002037264A2 (en) * 2000-11-06 2002-05-10 Broadcom Corporation Reconfigurable processing system and method
US6654934B1 (en) * 2002-03-28 2003-11-25 Cyrpess Semiconductor Corporation Programmable event engine
AU2003265891A1 (en) * 2002-09-04 2004-03-29 Mentor Graphics (Holdings) Ltd. Polymorphic computational system and method in signals intelligence analysis
EP1443418A1 (en) * 2003-01-31 2004-08-04 STMicroelectronics S.r.l. Architecture for reconfigurable digital signal processor
US7065733B2 (en) * 2003-12-02 2006-06-20 International Business Machines Corporation Method for modifying the behavior of a state machine
JP2006011825A (ja) * 2004-06-25 2006-01-12 Fujitsu Ltd 再構成可能演算装置および半導体装置

Also Published As

Publication number Publication date
US20080059777A1 (en) 2008-03-06

Similar Documents

Publication Publication Date Title
Clark et al. An architecture framework for transparent instruction set customization in embedded processors
US7565631B1 (en) Method and system for translating software binaries and assembly code onto hardware
JP6043374B2 (ja) 動的アウトオブオーダプロセッサパイプラインを実装する方法および装置
US8448150B2 (en) System and method for translating high-level programming language code into hardware description language code
US7343482B2 (en) Program subgraph identification
US9639371B2 (en) Solution to divergent branches in a SIMD core using hardware pointers
CN101876890B (zh) 管线式微处理器及其执行两种条件分支指令的方法
US7318143B2 (en) Reuseable configuration data
Leupers Code generation for embedded processors
EP2951682B1 (en) Hardware and software solutions to divergent branches in a parallel pipeline
WO2006114642A1 (en) Reconfigurable instruction cell array
WO2007083613A1 (ja) プログラム処理装置、並列処理プログラム、プログラム処理方法、並列処理コンパイラ、並列処理コンパイラを格納した記録媒体およびマルチプロセッサシステム
JP2014016894A (ja) 並列演算装置、並列演算装置を備えたデータ処理システム、及び、データ処理プログラム
US20190171449A1 (en) Tool-level and hardware-level code optimization and respective hardware modification
Huang et al. The design of dynamically reconfigurable datapath coprocessors
TW201423579A (zh) 指令碼轉譯的自訂鏈結存根
Reshadi et al. Utilizing horizontal and vertical parallelism with a no-instruction-set compiler for custom datapaths
US20150227371A1 (en) Processors with Support for Compact Branch Instructions & Methods
JPH11250112A (ja) ハードウェア合成方法およびハードウェア合成装置並びにハードウェア合成プログラムを記録した記録媒体
JP2008059066A (ja) コンパイラ装置および半導体集積回路装置
US7120905B2 (en) System and method for transformation of assembly code for conditional execution
Curzel et al. Higher-Level Synthesis: experimenting with MLIR polyhedral representations for accelerator design
KR20030088892A (ko) 인터럽트를 핸들링하기 위한 방법 및 장치
CN101253480A (zh) 具有实时动态可变指令集的计算机
US7865862B2 (en) Design structure for dynamically selecting compiled instructions

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090803

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20110106