JP3606836B2 - コンパイラ装置 - Google Patents
コンパイラ装置 Download PDFInfo
- Publication number
- JP3606836B2 JP3606836B2 JP2001380413A JP2001380413A JP3606836B2 JP 3606836 B2 JP3606836 B2 JP 3606836B2 JP 2001380413 A JP2001380413 A JP 2001380413A JP 2001380413 A JP2001380413 A JP 2001380413A JP 3606836 B2 JP3606836 B2 JP 3606836B2
- Authority
- JP
- Japan
- Prior art keywords
- cpu
- bit width
- bit
- programmable device
- instruction
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Executing Machine-Instructions (AREA)
- Microcomputers (AREA)
- Devices For Executing Special Programs (AREA)
- Logic Circuits (AREA)
Description
【発明の属する技術分野】
本発明は、コンパイラ装置に関するものであり、特に、プログラマブルデバイスを備えた半導体集積回路によって実行されるオブジェクトプログラムを生成するコンパイル技術に属する。
【0002】
【従来の技術】
コンピュータに所望の処理を行わせるには、その処理をプログラムとして記述する必要がある。通常、このプログラムはC言語などの高級プログラム言語を用いて記述されるが、CPUは高級プログラム言語で書かれたソースプログラムを直接、実行することができない。このため、ソースプログラムを、CPUが実行することのできるオブジェクトプログラムに変換しなければならない。この変換処理(コンパイル)は、コンパイラによって行われる。
【0003】
コンパイラは、ソースプログラムのコンパイル時に、オブジェクトプログラムを実行するCPUとして、ソースプログラムの実行に必要とされる最大ビット幅のものを選択している。たとえば、図17に示されたC言語のソースプログラムでは、char型、 short型およびlong型の3つのデータ型が使用されており、各データ型の処理に必要なビット幅はそれぞれ8ビット、16ビットおよび32ビットである。したがって、コンパイラは、このソースプログラムの実行に必要なCPUとして32ビットCPUを選択する。
【0004】
図18は、図17のソースプログラムが32ビットCPUによって実行されることを前提として生成されたオブジェクトプログラムを示す。
【0005】
1および2行目の“ movbu”は、8ビット変数aおよびbの値を32ビットデータレジスタD0およびD1にゼロ拡張をして転送するゼロ拡張バイト転送命令である。同様に、6および7行目の“ movhu”は、16ビット変数dおよびeの値を32ビットデータレジスタD0およびD1にゼロ拡張をして転送するゼロ拡張ハーフワード転送命令である。
【0006】
3、8および13行目の“ add”、“ sub”および“ mul”は、それぞれ32ビットデータレジスタD0と32ビットデータレジスタD1との加算命令、減算命令および乗算命令である。そして、4、9および14行目の“ mov”は、CA、FAおよびIAでそれぞれ表されている変数c、fおよびiのアドレスをアドレスレジスタA0に転送する命令であり、11および12行目の“ mov”は、32ビット変数gおよびhの値を32ビットデータレジスタD0およびD1に転送する命令である。同様に、15行目の“ mov”は、32ビットレジスタD1の値をアドレスレジスタA0で表されるメモリに転送する命令である。
【0007】
5行目の“ movbu”は、32ビットデータレジスタD1の値の上位ビットを切り捨て、8ビットデータにしてからアドレスレジスタA0で表されるメモリに転送するバイト転送命令である。同様に、10行目の“ movhu”は、32ビットデータレジスタD1の値の上位ビットを切り捨て、16ビットデータにしてからアドレスレジスタA0で表されるメモリに転送するハーフワード転送命令である。
【0008】
【発明が解決しようとする課題】
ソースプログラムによっては、そのソースプログラムの実行に必要とされる最大ビット幅よりも小さなビット幅で実行される命令が頻繁に出現するようなものがある。このようなソースプログラムにおいて、CPUは、小さなビット幅で実行できる命令を、最大ビット幅に拡張して実行する。たとえば、図17のソースプログラム中の“c=a+b;”を実行するのに、図18のオブジェクトプログラム中の1および2行目のゼロ拡張バイト転送命令で8ビットデータを32ビットに拡張し、5行目のバイト転送命令で32ビットデータの上位ビットを切り捨てて8ビットデータにしてからメモリに転送している。同様に、ソースプログラム中の“f=d-e;”を実行するのに、オブジェクトプログラム中の6および7行目のゼロ拡張ハーフワード転送命令で16ビットデータを32ビットに拡張し、10行目のハーフワード転送命令で32ビットデータの上位ビットを切り捨てて16ビットデータにしてからメモリに転送している。
【0009】
このように、最大ビット幅のCPUによってソースプログラム中のすべての命令が実行されるのでは、効率的にCPUを使用することができない。さらに、小さなビット幅の命令を最大ビット幅に拡張することにより、ゼロ拡張されたデータを載せたバスの部分にもクロックが供給される。しかし、このゼロ拡張された部分に供給されるクロックは無駄であり、半導体集積回路の消費電力の増大を招く原因となる。
【0010】
上記の問題に鑑み、本発明は、CPUの使用効率を上げるとともに、半導体集積回路の消費電力が低減されるオブジェクトプログラムを生成するコンパイラ装置を実現することを課題とする。
【0011】
【課題を解決するための手段】
上記課題を解決するために、請求項1の発明が講じた手段は、ソースプログラムから、回路構成が書き換え可能なプログラマブルデバイスを備えた半導体集積回路によって実行されるオブジェクトプログラムを生成するコンパイラ装置であって、前記ソースプログラムの実行に必要なCPUのビット幅および個数を見積もる抽出手段と、前記抽出手段によって見積もられたビット幅および個数、および前記プログラマブルデバイスの使用可能領域に基づいて、前記プログラマブルデバイスに回路構成をされるべきCPUのビット幅および個数を決定し、これら回路構成をされるべきCPUによって実行される前記オブジェクトプログラムを生成するコンパイル手段と、前記コンパイル手段によって決定されたビット幅および個数のCPUの回路を前記プログラマブルデバイスに構成するための命令を、前記オブジェクトプログラムに付加する付加手段とを備えるものとする。
【0012】
請求項1の発明によると、ソースプログラムの実行に必要なCPUがプログラマブルデバイスに回路構成をされると想定して、これらCPUによって実行されるオブジェクトプログラムが生成される。このように生成されたオブジェクトプログラムにおいて、各命令の実行に必要なビット幅に応じたCPUでその命令が実行され、CPUの使用効率を上げることができる。
【0013】
請求項2の発明では、前記請求項1の抽出手段は、前記ソースプログラム中に記述された命令の実行に要するビット幅の出現回数をカウントし、データの依存関係をも解析して、前記ビット幅および個数を見積もるものとする。
【0014】
請求項3の発明では、前記請求項2のコンパイル手段は、前記抽出手段によってカウントされた出現回数が所定値以上であるビット幅ごとに少なくとも1個のCPUを、前記プログラマブルデバイスに回路構成をされるべきCPUとして決定するものとする。
【0015】
請求項4の発明では、前記請求項1のコンパイル手段は、前記オブジェクトプログラムの生成時に、前記ソースプログラム中のデータの依存関係を考慮して、前記プログラマブルデバイスに回路構成をされるべきCPUによって並列処理が行われるように最適化を行うものとする。
【0016】
そして、請求項5の発明が講じた手段は、ソースプログラムから、CPUと回路構成が書き換え可能なプログラマブルデバイスとが混載された半導体集積回路によって実行されるオブジェクトプログラムを生成するコンパイラ装置であって、前記ソースプログラムの実行に必要なCPUのビット幅および個数を見積もる抽出手段と、前記抽出手段によって見積もられたビット幅および個数、前記半導体集積回路に備えられたCPUのビット幅および個数、および前記プログラマブルデバイスの使用可能領域に基づいて、前記プログラマブルデバイスに回路構成をされるべきCPUのビット幅および個数を決定し、これら回路構成をされるべきCPUおよび前記半導体集積回路に備えられたCPUによって実行される前記オブジェクトプログラムを生成するコンパイル手段と、前記コンパイル手段によって決定されたビット幅および個数のCPUの回路を前記プログラマブルデバイスに構成するための命令を、前記オブジェクトプログラムに付加する付加手段とを備えたものとする。
【0017】
請求項5の発明によると、CPUを初めから備えた半導体集積回路においても、ソースプログラムの実行に必要なCPUがプログラマブルデバイスに回路構成をされると想定して、これらCPUによって実行されるオブジェクトプログラムが生成される。このように生成されたオブジェクトプログラムにおいて、各命令の実行に必要なビット幅に応じたCPUでその命令が実行され、CPUの使用効率を上げることができる。
【0018】
請求項6の発明では、前記請求項5の抽出手段は、前記ソースプログラム中に記述された命令の実行に要するビット幅の出現回数をカウントし、データの依存関係をも解析して、前記ビット幅および個数を見積もるものとする。
【0019】
請求項7の発明では、前記請求項6のコンパイル手段は、前記半導体集積回路に備えられたCPUのビット幅を除いて、前記抽出手段によってカウントされた出現回数が所定値以上であるビット幅ごとに少なくとも1個のCPUを、前記プログラマブルデバイスに回路構成をされるべきCPUとして決定するものとする。
【0020】
請求項8の発明では、前記請求項5のコンパイル手段は、前記オブジェクトプログラムの生成時に、前記ソースプログラム中のデータの依存関係を考慮して、前記プログラマブルデバイスに回路構成をされるべきCPUおよび前記半導体集積回路に備えられたCPUによって並列処理が行われるように最適化を行うものとする。
【0021】
【発明の実施の形態】
以下、図面を用いて、本発明の実施形態について説明する。
【0022】
(第1の実施形態)
図1は、本発明の第1の実施形態に係るコンパイラ装置の構成を示す。本実施形態に係るコンパイラ装置は、プログラマブルデバイスを備えた半導体集積回路によって実行されるオブジェクトプログラムを生成するものであり、ソースプログラムの実行に必要なCPUのビット幅および個数を見積もる抽出手段M1と、プログラマブルデバイスに回路構成をされるべきCPUのビット幅および個数を決定してこれらCPUによって実行されるオブジェクトプログラムを生成するコンパイル手段M2と、CPUの回路をプログラマブルデバイスに構成するための命令をオブジェクトプログラムに付加する付加手段M3とを備えている。以下、本実施形態に係るコンパイラ装置が行うコンパイル処理について、図2のフローチャートを用いて説明する。
【0023】
本実施形態に係るコンパイラ装置はコンパイルを開始すると、ステップS1において、ソースプログラム全体にわたり、ソースプログラム中に記述された命令が実行されるときのビット幅の出現回数をカウントする。このとき、データの依存関係についても解析する。そして、データの依存関係がある命令のビット幅については出現回数を減じて、ソースプログラムの実行に必要なCPUのビット幅およびそのビット幅ごとの個数を見積もる。以上のステップS1は、本実施形態に係るコンパイラ装置の抽出手段M1によって実行される。
【0024】
次に、ステップS2において、抽出手段M1によってカウントされたビット幅の出現回数と所定値とを比較し、出現回数が所定値以上のビット幅(以下、「必要ビット幅」)を抽出する。ここで、必要ビット幅を抽出するとしたのは、出現回数が少ないビット幅のCPUはプログラマブルデバイスに回路構成をされても無駄が多いため、このようなCPUは回路構成をされないようにするためである。たとえば、あるソースプログラムにおいて、16ビットおよび8ビットのビット幅の出現回数がそれぞれ18回および2回であるとき、出現回数が少ない8ビットのCPUは回路構成をされず、16ビットのCPUのみが回路構成をされるようにする。なお、本実施形態では、ソースプログラム全体に対するビット幅の出現割合と所定の閾値とを比較するものとする。そして、必要ビット幅が1つの場合はステップS3に進み、複数の場合はステップS4に進む。
【0025】
ステップS3では、必要ビット幅のCPUについて抽出手段M1によって見積もられた個数が1個である場合、必要ビット幅のCPUが1個だけプログラマブルデバイスに回路構成をされるものとしてステップS9に進む。一方、必要ビット幅のCPUの個数が複数個である場合、プログラマブルデバイスの使用可能領域に収まる個数のCPUが回路構成をされるものとしてステップS10に進む。
【0026】
ステップS4では、必要ビット幅に対する必要な個数のCPUがすべて回路構成をされたときの回路面積SCAを計算し、プログラマブルデバイスの使用可能領域の回路面積SFと比較する。そして、SF≧SCAの場合は、必要ビット幅のCPUがすべて回路構成をされるものとしてステップS8に進み、SF<SCAの場合はステップS5に進む。
【0027】
ステップS5では、必要ビット幅のCPUがその必要ビット幅ごとに1個だけ回路構成をされるものとして、この場合に要する回路面積SC1を計算する。そして、回路面積SC1とプログラマブルデバイスの使用可能領域の回路面積SFとの差(SF−SC1)と、必要ビット幅のCPUのうち回路構成に要する回路面積が最小であるものの回路面積SSとを比較する。つまり、必要ビット幅ごとに1個のCPUの回路構成をし、なおも残存するプログラマブルデバイスの使用可能領域に別の必要ビット幅のCPUが追加して回路構成をされ得るか否かを判断する。そして、SF−SC1≧SSの場合はステップS6に進み、SF−SC1<SSの場合は、複数ビット幅のCPUがビット幅ごとに1個、プログラマブルデバイスに回路構成をされるものとしてステップS7に進む。
【0028】
ステップS6では、必要ビット幅のCPUがビット幅ごとに1個、回路構成をされ、さらに、なおも残存するプログラマブルデバイスの使用可能領域に別の必要ビット幅のCPUが追加して回路構成をされるように、必要ビット幅のCPUの個数を見積もり直す処理が行われる。この処理については後述する。
【0029】
ステップS7では、複数ビット幅のCPUが、ビット幅ごとに1個、プログラマブルデバイスに回路構成をされると想定して、これらCPUによって実行されるオブジェクトプログラムを生成する。このとき、ソースプログラム中に記述された命令の実行に要するビット幅に応じて、各命令に各ビット幅のCPUを割り当てるようにコンパイルする。
【0030】
ステップS8では、複数ビット幅のCPUが、ビット幅ごとに複数個、プログラマブルデバイスに回路構成をされると想定して、これらCPUによって実行されるオブジェクトプログラムを生成する。このとき、ソースプログラム中に記述された命令の実行に要するビット幅に応じて、各命令に各ビット幅のCPUを割り当てるとともに、各命令が並列に実行されるように最適化を行ってコンパイルする。
【0031】
ステップS9では、単一ビット幅のCPUが1個、プログラマブルデバイスに回路構成をされると想定して、このCPUによって実行されるオブジェクトプログラムを生成する。
【0032】
ステップS10では、単一ビット幅のCPUが1または複数個、プログラマブルデバイスに回路構成をされると想定して、これらCPUによって実行されるオブジェクトプログラムを生成する。このとき、ソースプログラム中に記述された各命令が並列に実行されるように最適化を行ってコンパイルする。
【0033】
以上、ステップS2からステップS10までの処理は、本実施形態に係るコンパイラ装置のコンパイル手段M2によって実行される。
【0034】
最後に、ステップS11では、回路構成をされると想定したCPUの回路をプログラマブルデバイスに構成するための命令をオブジェクトプログラム付加する。まず、コンパイル手段M2によって生成されたオブジェクトプログラムを解析して、各ビット幅のCPUの使用頻度を調べる。そして、付加する命令において、ビット幅を表す数字が使用頻度の多い順に、先に現れるようにする。また、使用頻度が同一の場合は、ビット幅の大きい順に、先に現れるようにする。そして、コンパイル手段M2によって生成されたオブジェクトプログラムに、この命令を付加して、すべての処理を終了する。このステップS11は、本実施形態に係るコンパイラ装置の付加手段M3によって実行される。
【0035】
次に、ステップS6における処理について、図3のフローチャートを用いて説明する。
【0036】
ステップS61では、プログラマブルデバイスに残存する使用可能領域の回路面積(SF−SC1)と、必要ビット幅のCPUのうち回路構成に要する回路面積が最大であるものの回路面積SBとを比較する。つまり、プログラマブルデバイスの残存領域に必要バス幅のCPUのうち、任意のものが追加して回路構成をされ得るか否かを判断する。そして、SF−SC1≧SBの場合はステップS62に進み、SF−SC1<SBの場合はステップS64に進む。
【0037】
ステップS62では、出現回数が最多である必要ビット幅のCPUが追加して回路構成可能であるとして、この必要ビット幅のCPUの個数を1つ増やす。そして、この追加されたCPUが要する回路面積を回路面積SC1に加えて新たな回路面積SC1を計算し、ステップS63に進む。
【0038】
ステップS63では、プログラマブルデバイスに残存する使用可能領域の回路面積(SF−SC1)と、必要ビット幅のCPUのうち回路構成に要する回路面積が最小であるものの回路面積SSとを比較する。つまり、なおも残存するプログラマブルデバイスの使用可能領域に別の必要ビット幅のCPUが追加して回路構成可能か否かを判断する。そして、SF−SC1≧SSの場合は、なおもCPUが追加可能であるとして、ステップS61に戻ってCPUの個数をさらに見積もり直す。一方、SF−SC1<SSの場合は、これ以上のCPUを追加できないため、このときの選択されているビット幅およびそのビット幅ごとの個数のCPUが、プログラマブルデバイスに回路構成をされるものとしてステップS7に進む。
【0039】
ステップS64では、追加されるCPUとして、プログラマブルデバイスに残存する使用可能領域の回路面積(SF−SC1)に収まる回路面積であり、かつ、出現回数が最多のCPUを選択する。そして、このとき選択されているビット幅およびそのビット幅ごとの個数のCPUが、プログラマブルデバイスに回路構成をされるものとしてステップS7に進む。
【0040】
以上、本実施形態に係るコンパイラ装置の処理の流れを説明した。次に、図4に示されたC言語プログラムを例に、本実施形態に係るコンパイラ装置のコンパイル処理について具体的に説明する。なお、ソースプログラム中に記述された各命令に対するコンパイル処理については説明を省略し、オブジェクトプログラムの実行に必要なCPUを決定する処理およびこれらCPUの回路を構成するための命令を付加する処理について詳しく述べる。
【0041】
コンパイラ装置はコンパイルを開始すると、ステップS1において、図4のソースプログラム中の“c=a+b;”はすべてchar型データなのでこの命令を実行するのに要するビット幅は8ビット、“f=d-e;”はすべてchar型データなので8ビット、“i=g*h;”はすべて short型データなので16ビットであるため、8ビットの出現回数を2回、16ビットの出現回数を1回としてカウントする。さらに、データの依存関係を解析し、図4のソースプログラムにはデータの依存関係がないと判断する。そして、図4のソースプログラムの実行に必要なCPUとして、8ビットが2個、16ビットが1個であると見積もる。
【0042】
次に、ステップS2に進み、各ビット幅の出現割合をチェックする。ここでは、閾値を1/4とする。8ビットの出現割合は2/3および16ビットの出現割合は1/3であり、どちらも閾値以上なので、必要ビット幅として8ビットおよび16ビットの2種類を抽出し、ステップS4に進む。
【0043】
ステップS4に進むと、抽出されたビット幅のCPUがすべてプログラマブルデバイスに回路構成可能か否かを判断する。ここで、プログラマブルデバイスの使用可能な領域の回路面積SFを10、8ビットCPUの回路構成に要する回路面積を2、16ビットCPUの回路構成に要する回路面積を4とする。すべてのCPUを回路構成するのに要する回路面積SCAは2×2+4=8となり、SF≧SCAなので、すべてのCPUの回路を構成するものとしてステップS8に進む。
【0044】
ステップS8に進むと、8ビットCPUが2個および16ビットCPUが1個、プログラマブルデバイスに回路構成されると想定して、これら3個のCPUによって実行されるオブジェクトプログラムを生成し、ステップS11に進む。なお、ここで生成されるのは、図5に示されたオブジェクトプログラムの2行目以降となる。
【0045】
オブジェクトプログラムは、ソースプログラム中に記述された命令の実行に要するビット幅に応じて、各命令に各ビット幅のCPUを割り当てるように生成される。図5のオブジェクトプログラムの2行目以降に記述された命令の末尾に付された数字は、その命令がその数字のビット幅のCPUによって実行されることを示している。また、図4のソースプログラムに対して、2個の8ビットCPUが回路構成をされるため、この2個のCPUで並列処理が行われるように最適化されたオブジェクトプログラムが生成される。図5のオブジェクトプログラムでは、2行目以降の命令の末尾に付された数字の後に、さらに“a”や“b”といった記号を付して、その命令が実行されるべきCPUが指定されている。
【0046】
そして、ステップS11に進むと、コンパイル手段M2によって生成されたオブジェクトプログラムを解析して、各ビット幅のCPUの使用頻度を調べる。図5のオブジェクトプログラムでは、どのビット幅のCPUも使用頻度は5回であるので、ビット幅の大きい順に、16ビット、8ビット、8ビットとして bit命令に現れるようにする。この bit命令は、プログラマブルデバイスにCPUの回路を構成するための命令である。そして、図5のオブジェクトプログラムの1行目に示された“bit 16,8,8”を付加して、処理を終了する。
【0047】
以上は、データの依存関係がないソースプログラムを例にコンパイル処理の説明をした。次に、データの依存関係があるソースプログラムのコンパイル処理について、図6のC言語プログラムを例に説明をする。なお、先ほどと同様に、ソースプログラム中に記述された各命令に対するコンパイル処理については説明を省略し、オブジェクトプログラムの実行に必要なCPUを決定する処理およびこれらCPUの回路を構成するための命令を付加する処理について詳しく述べる。
【0048】
コンパイラ装置はコンパイルを開始すると、ステップS1において、図6のソースプログラム中の“c=a+b;”はすべてchar型データなのでこの命令を実行するのに必要なビット幅は8ビット、“f=c-e;”はすべてchar型データなので8ビット、“i=g*h;”はすべて short型データなので16ビットであるため、8ビットの出現回数を2回、16ビットの出現回数を1回としてカウントする。さらに、データの依存関係を解析し、変数cについてデータの依存関係があると判断する。したがって、図6のソースプログラムの実行に必要なCPUとして、8ビットが1個、16ビットが1個であると見積もり、ステップS2に進む。なお、ステップS2以降、コンパイル手段M2によって行われる処理は、先ほどの例と同様であるので説明を省略する。なお、コンパイル手段M2によって図7に示されたオブジェクトプログラムの2行目以降が生成される。
【0049】
最後に、ステップS11に進み、コンパイル手段M2によって生成されたオブジェクトプログラムを解析して、各ビット幅のCPUの使用頻度を調べる。図7のオブジェクトプログラムでは、8ビットCPUの使用頻度は9回、16ビットCPUは5回であるので、使用頻度の多い順に、8ビット、16ビットとして bit命令に現れるようにする。そして、図7のオブジェクトプログラムの1行目に示された“bit 8,16”を付加して、処理を終了する。
【0050】
次に、本実施形態に係る半導体集積回路について、図8を用いて説明する。本実施形態に係る半導体集積回路1は、上記の bit命令が付加されたオブジェクトプログラム、たとえば、本実施形態に係るコンパイラ装置によって生成されたオブジェクトプログラムを実行することができる。
【0051】
本実施形態に係る半導体集積回路1は、FPGA11と、FPGA11にさまざまな回路を構成する制御部12と、FPGA11に構成されるさまざまな回路の回路構成データを格納している構成データメモリ13と、半導体集積回路1によって実行される命令を格納する命令メモリ15と、データメモリ16とを備えている。なお、本実施形態で用いる回路構成データは、FPGAに回路を構成するための一般的なデータと同様のものである。
【0052】
FPGA11には、1または複数個(図8では4個)のCPU14と、命令メモリ15からCPU14に命令を供給するための共有命令バス17と、CPU14とデータメモリ16との間でデータを転送するための共有データバス18と、共有データバス18の使用に関してCPU14を調停するバス調停回路19とが回路構成をされている。
【0053】
制御部12は、指定されたビット幅および指定された個数のCPU14の回路をFPGA11に構成する機能と、共有命令バス17の回路をFPGA11に構成する機能と、共有データバス18の回路をFPGA11に構成する機能と、バス調停回路19の回路をFPGA11に構成する機能とを有する。なお、本実施形態におけるこれら回路の構成は、一般的な回路構成技術によって行うものとする。
【0054】
構成データメモリ13は、FPGA11に回路構成をされる8ビットCPU、16ビットCPU、32ビットCPUなどのさまざまなビット幅のCPUの回路構成データと、さまざまなビット幅のCPUに接続することのできる共有命令バスの回路構成データおよび共有データバスの回路構成データとを格納している。
【0055】
CPU14は、データレジスタおよびアドレスレジスタを有し、独立して命令を実行することができる。したがって、これらCPU14によって並列処理が行われる。
【0056】
共有命令バス17は、すべてのCPU14と命令メモリ15とに接続するように回路構成をされ、命令メモリ15から命令を受け取り、この命令がどのCPU14によって実行されるのかを判別する機能と、各命令をその命令が実行されるCPUに供給する機能とを有する。
【0057】
共有データバス18は、すべてのCPU14とデータメモリ16とに接続するように回路構成をされ、CPU14とデータメモリ16との間のデータ転送命令に関して、CPU14からデータメモリ16に指定アドレスを供給する機能と、データメモリ16からCPU14にデータを供給する機能とを有する。
【0058】
共有データバス18は複数のCPU14によって共有されているため、複数のCPU14によって同時にアクセスされる可能性がある。しかし、共有データバス18は、一度に1個のCPU14のデータしか扱えないため、CPU14間で共有データバス18を使用するタイミングを調整しなければならない。この調整を行うのがバス調停回路19である。
【0059】
バス調停回路19は、共有データバス18の使用状況を判断するためのレジスタを有する。このレジスタは、共有データバス18がCPU14によって使用されている場合は“1”、どのCPU14にも使用されていない場合は“0”の値を保持する。CPU14がデータメモリ16にアクセスするには、まず、バス調停回路19にバス使用要求信号DT1を発する。バス調停回路19はバス使用要求信号DT1を受けると、レジスタ値を参照して、レジスタ値が“0”の場合は、レジスタ値を“1”にして他のCPU14が共有データバス18を使用できないようにするとともに、バス使用要求信号DT1を発したCPU14にバス使用許可信号DT2を送る。一方、レジスタ値が“1”の場合は、レジスタ値が“0”になるまで、バス使用要求信号DT1を発したCPU14を待機させる。バス使用許可信号DT2を受けたCPU14は、共有データバス18を使用してデータメモリ16にアクセスができるようになる。そして、アクセスが終了すると、バス調停回路19にバス使用終了信号DT3を発する。バス調停回路19はバス使用終了信号DT3を受けると、レジスタ値を“0”にして他のCPU14が共有データバス18を使用できるようにする。
【0060】
次に、半導体集積回路1によって図5のオブジェクトプログラムが実行されるときの動作について説明する。なお、オブジェクトプログラム中の個々の命令に対する動作についての説明は省略し、 bit命令に対する動作について説明する。
【0061】
半導体集積回路1によって図5のオブジェクトプログラムが実行されると、まず、1行目の“bit 16,8,8”が命令メモリ15から制御部12に送られる。制御部12はこの bit命令を受けると、構成データメモリ13から、16ビットおよび8ビットのCPUの回路構成データ、および16ビットおよび8ビットのCPUに接続するための共有命令バスおよび共有データバスの回路構成データを読み込み、FPGA11にこれらの回路構成をする。
【0062】
図9は、制御部12が bit命令を実行した結果、FPGA11にCPU14−A,14−B,14−C、共有命令バス17および共有データバス18の回路が構成されたところを示す。図5のオブジェクトプログラムの bit命令において、回路構成をされるべきCPUのビット幅を示す数値として“16”が先に指定されているので、16ビットCPUのCPU14−AがFPGA11の領域内でメモリにより近い位置に回路構成をされる。共有データバス18は、CPU14−Aとは16ビット、CPU14−BおよびCPU14−Cとは8ビットで接続されるように回路構成をされる。なお、共有データバス18の下位8ビットはCPU14−A,14−B,14−Cに、上位8ビットはCPU14−Aのみに接続される。
【0063】
図5のオブジェクトプログラムの2行目以降に記述された命令は、共有命令バス17によって、その命令が実行されるべきCPUに供給される。図5のオブジェクトプログラムにおいて、命令の末尾に付された“16”はCPU14−A、“8a”はCPU14−B、そして“8b”はCPU14−Cでそれぞれ実行されることを表す。CPU14−A,14−B,14−Cは命令を受けると、それぞれ独立してその命令を実行するが、この実行については説明を省略する。
【0064】
以上、本実施形態によると、コンパイル時に、ソースプログラム中に記述された命令の実行に要するビット幅に応じてCPUのビット幅を選択し、その選択されたビット幅のCPUによってその命令が実行されるようにすることにより、CPUを効率的に使用するオブジェクトプログラムを生成することができる。
【0065】
(第2の実施形態)
図1は、本発明の第2の実施形態に係るコンパイラ装置の構成を示す。本実施形態に係るコンパイラ装置は、CPU(以下、「メインCPU」)とプログラマブルデバイスとが混載された半導体集積回路によって実行されるオブジェクトプログラムを生成するものであり、ソースプログラムの実行に必要なCPUのビット幅および個数を見積もる抽出手段M1と、プログラマブルデバイスに回路構成をされるべきCPUのビット幅および個数を決定してこれらCPUおよびメインCPUによって実行されるオブジェクトプログラムを生成するコンパイル手段M2Aと、プログラマブルデバイスにCPUの回路を構成するための命令をオブジェクトプログラムに付加する付加手段M3とを備えている。以下、本実施形態に係るコンパイラ装置が行うコンパイル処理について、図10のフローチャートを用いて説明する。
【0066】
コンパイル処理が開始されると、まず、抽出手段M1によってステップS1の処理が実行される。このステップS1は、第1の実施形態と同様であるので説明を省略する。続くステップS2も、第1の実施形態と同様であるので説明を省略する。ここで、ステップS2において、出現回数が所定値以上であるとして抽出されたビット幅(以下、「必要ビット幅」)の中には、メインCPUのビット幅と等しいビット幅があるとする。
【0067】
ステップS3Aでは、必要ビット幅としてメインCPUのビット幅を選択し、このビット幅のCPUについて抽出手段M1によって見積もられた個数が1個である場合、メインCPU1個によって実行されるオブジェクトプログラムを生成するためにステップS9Aに進む。一方、メインCPUと同一ビット幅のCPUの個数が複数個である場合、この個数からメインCPUの個数を減じ、さらに、プログラマブルデバイスの使用可能領域に収まる個数のCPUが回路構成をされるものとしてステップS10Aに進む。
【0068】
ステップS4Aでは、メインCPUを除く必要ビット幅に対する必要な個数のCPUがすべて回路構成をされたときの回路面積SCAを計算し、プログラマブルデバイスの使用可能領域の回路面積SFと比較する。そして、SF≧SCAの場合は、メインCPUを除く必要ビット幅のCPUがすべて回路構成をされるものとしてステップS8Aに進み、SF<SCAの場合はステップS5Aに進む。
【0069】
ステップS5Aでは、メインCPUのビット幅を除く必要ビット幅のCPUがその必要ビット幅ごとに1個だけ回路構成をされるものとして、この場合に要する回路面積SC1を計算する。そして、回路面積SC1とプログラマブルデバイスの使用可能領域の回路面積SFとの差(SF−SC1)と、必要ビット幅のCPUのうち回路構成に要する回路面積が最小であるものの回路面積SSとを比較する。つまり、メインCPUのビット幅を除く必要ビット幅ごとに1個のCPUの回路構成をし、なおも残存するプログラマブルデバイスの使用可能領域に別の必要ビット幅のCPUが追加して回路構成をされ得るか否かを判断する。そして、SF−SC1≧SSの場合はステップS6に進み、SF−SC1<SSの場合は、メインCPUのビット幅を除く複数ビット幅のCPUがビット幅ごとに1個、プログラマブルデバイスに回路構成をされるものとしてステップS7Aに進む。
【0070】
ステップS6では、メインCPUのビット幅を除く必要ビット幅のCPUがビット幅ごとに1個、回路構成され、さらに、なおも残存するプログラマブルデバイスの使用可能領域に別の必要ビット幅のCPUが追加して回路構成をされるように、必要ビット幅のCPUの個数を見積もり直す処理が行われる。この処理は、第1の実施形態と同様であるので説明を省略する。
【0071】
ステップS7Aでは、メインCPUのビット幅を除く複数ビット幅のCPUが、ビット幅ごとに1個、プログラマブルデバイスに回路構成をされると想定して、これら回路構成をされるCPUおよびメインCPUによって実行されるオブジェクトプログラムを生成する。このとき、ソースプログラム中に記述された命令の実行に要するビット幅に応じて、各命令に各ビット幅のCPUを割り当てるようにコンパイルする。
【0072】
ステップS8Aでは、メインCPUを除く複数ビット幅のCPUが、ビット幅ごとに1または複数個、プログラマブルデバイスに回路構成をされると想定して、これら回路構成をされるCPUおよびメインCPUによって実行されるオブジェクトプログラムを生成する。このとき、ソースプログラム中に記述された命令の実行に要するビット幅に応じて、各命令に各ビット幅のCPUを割り当てるようにするとともに、各命令が並列に実行されるように最適化を行ってコンパイルする。さらに、メインCPUと同一のビット幅のCPUが回路構成をされる場合、メインCPUを優先的に使用するように最適化を行う。
【0073】
ステップS9Aでは、メインCPU1個によって実行されるオブジェクトプログラムを生成する。
【0074】
ステップS10Aでは、メインCPUのビット幅のCPUが複数個、プログラマブルデバイスに回路構成をされると想定して、これら回路構成をされるCPUおよびメインCPUによって実行されるオブジェクトプログラムを生成する。このとき、メインCPUを優先的に使用し、ソースプログラム中に記述された各命令が並列に実行されるように最適化を行ってコンパイルする。
【0075】
以上、ステップS2からステップS10Aまでの処理は、本実施形態に係るコンパイラ装置のコンパイル手段M2Aによって実行される。
【0076】
最後に、付加手段M3によってステップS11の処理が実行される。このステップS11は、第1の実施形態と同様であるので説明を省略する。
【0077】
以上、本実施形態に係るコンパイラ装置の処理の流れを説明した。次に、図11に示されたC言語プログラムを例に、本実施形態に係るコンパイラ装置のコンパイル処理について具体的に説明する。なお、ソースプログラム中に記述された各処理に対するコンパイル処理については説明を省略し、オブジェクトプログラムの実行に必要なCPUを決定する処理およびこれらCPUの回路構成のための命令を付加する処理について詳しく述べる。また、生成されるオブジェクトプログラムを実行する半導体集積回路は、メインCPUとして32ビットCPUを備えているとする。
【0078】
コンパイラ装置はコンパイルを開始すると、ステップS1において、図11のソースプログラム中の“c=a+b;”はすべてchar型データなのでこの命令を実行するのに要するビット幅は8ビット、“f=d-e;”はすべて short型なので16ビット、処理“i=g*h;”はすべてlong型データなので32ビット、処理“l=j*k;”はすべてchar型データなので8ビットであるため、8ビットの出現回数を2回、16ビットの出現回数を1回、32ビットの出現回数を1回としてカウントする。さらに、データの依存関係を解析し、図11のソースプログラムにはデータの依存関係がないと判断する。そして、図11のソースプログラムの実行に必要なCPUとして、8ビットが2個、16ビットが1個、32ビットが1個であると見積もる。
【0079】
次に、ステップS2に進み、各ビット幅の出現割合をチェックする。ここでは、閾値を1/4とする。8ビットの出現割合は2/4、16ビットの出現割合は1/4および32ビットの出現割合は1/4であり、いずれも閾値以上であるので、必要ビット幅として8ビット、16ビットおよび32ビットの3種類を抽出し、ステップS4Aに進む。
【0080】
ステップS4Aに進むと、抽出されたビット幅のCPUからメインCPUを除く、2個の8ビットCPUおよび1個の16ビットCPUがプログラマブルデバイスに回路構成可能か否かを判断する。ここで、プログラマブルデバイスの使用可能な領域の回路面積SFを10、8ビットCPUの回路構成に要する回路面積を2、16ビットCPUの回路構成に要する回路面積を4とする。メインCPUを除くすべてのCPUを回路構成するのに要する回路面積SCAは2×2+4=8となり、SF≧SCAなので、メインCPUを除くすべてのCPUの回路を構成するものとしてステップS8Aに進む。
【0081】
ステップS8Aに進むと、8ビットCPUが2個および16ビットCPUが1個、プログラマブルデバイスに回路構成されると想定して、これら3個のCPUおよびメインCPUによって実行されるオブジェクトプログラムを生成し、ステップST11に進む。なお、ここで生成されるのは、図12に示されたオブジェクトプログラムの2行目以降となる。
【0082】
オブジェクトプログラムは、ソースプログラム中に記述された命令の実行に要するビット幅に応じて、各命令に各ビット幅のCPUを割り当てるように生成される。図12のオブジェクトプログラムの2行目以降に記述された命令の末尾に付された数字は、その命令がその数字のビット幅のCPUによって実行されることを示している。ただし、メインCPUによって実行される命令には数字は付されない。また、図11のソースプログラムに対して、2個の8ビットCPUが回路構成をされるため、この2個のCPUで並列処理が行われるように最適化されたオブジェクトプログラムが生成される。図12のオブジェクトプログラムでは、2行目以降の命令の末尾に付された数字の後に、さらに“a”や“b”といった記号を付して、その命令が実行されるべきCPUが指定されている。
【0083】
そして、ステップS11に進むと、コンパイル手段M2Aによって生成されたオブジェクトプログラムを解析して、プログラマブルデバイスに回路構成をされるべきCPUの使用頻度を調べる。図12のオブジェクトプログラムでは、どのビット幅のCPUも使用頻度は5回であるので、ビット幅の大きい順に、16ビット、8ビット、8ビットとして bit命令に現れるようにする。この bit命令は、プログラマブルデバイスにCPUの回路を構成するための命令である。そして、図12のオブジェクトプログラムの1行目に示された“bit 16,8,8”を付加して、処理を終了する。
【0084】
以上は、データの依存関係がないソースプログラムを例にコンパイル処理の説明をした。次に、データの依存関係があるソースプログラムのコンパイル処理について、図13のC言語プログラムを例に説明をする。
【0085】
コンパイラ装置はコンパイルを開始すると、ステップS1において、図13のソースプログラム中の“c=a+b;”はすべてchar型データなのでこの処理のビット幅は8ビット、“f=d-e;”はすべて short型データなので16ビット、“i=g*h;”はすべてlong型データなので32ビット、“l=c*k;”はすべてchar型データなので8ビットであるため、8ビットの出現回数を2回、16ビットの出現回数を1回、32ビットの出現回数が1回としてカウントする。さらに、データの依存関係を解析し、変数cについてデータの依存関係があると判断する。したがって、必要なCPUとして、8ビットが1個、16ビットが1個、32ビットが1個であると見積もり、ステップS2に進む。なお、ステップS2以降、コンパイル手段M2Aによって行われる処理は、先ほどの例と同様であるので説明を省略する。なお、コンパイル手段M2Aによって図14に示されたオブジェクトプログラムの2行目以降が生成される。
【0086】
最後に、ステップS11に進み、コンパイル手段M2Aによって生成されたオブジェクトプログラムを解析して、プログラマブルデバイスに回路構成をされるべきCPUの使用頻度を調べる。図14のオブジェクトプログラムでは、8ビットCPUの使用頻度は9回、16ビットCPUは5回であるので、使用頻度の多い順に、8ビット、16ビットとして bit命令に現れるようにする。そして、図14のオブジェクトプログラムの1行目に示された“bit 8,16”を付加して、処理を終了する。
【0087】
次に、本実施形態に係る半導体集積回路について、図15を用いて説明する。本実施形態に係る半導体集積回路1Aは、上記の bit命令が付加されたオブジェクトプログラム、たとえば、本実施形態に係るコンパイラ装置によって生成されたオブジェクトプログラムを実行することができる。
【0088】
本実施形態に係る半導体集積回路1Aは、メインCPU10と、FPGA11と、FPGA11にさまざまな回路を構成する制御部12と、FPGA11に構成されるさまざまな回路の回路構成データを格納している構成データメモリ13と、半導体集積回路1Aによって実行される命令を格納する命令メモリ15と、データメモリ16と、CPU10およびFPGA11に回路構成をされたCPU14に命令を供給するための共有命令バス17と、CPU10およびFPGA11に回路構成をされたCPU14とデータメモリ16との間でデータを転送するための共有データバス18とを備える。
【0089】
FPGA11には、1または複数(図15では4個)のCPU14と、共有データバス18の使用に関してCPU10およびCPU14を調停するバス調停回路19と、上記の共有命令バス17とCPU14とを接続するための延長部分と、上記の共有データバス18とCPU14とを接続するための延長部分とが回路構成をされている。
【0090】
なお、本実施形態に係る半導体集積回路1Aの各構成要素については、第1の実施形態と同様であるので説明を省略する。
【0091】
次に、半導体集積回路1Aによって図12のオブジェクトプログラムが実行されるときの動作について説明する。ここで、メインCPU10は32ビットCPUであるとする。なお、オブジェクトプログラム中の個々の命令に対する動作ついての説明は省略し、 bit命令に対する動作について説明する。
【0092】
半導体集積回路1Aによって図12のオブジェクトプログラムが実行されると、まず、1行目の“bit 16,8,8”が命令メモリ15から制御部12に送られる。制御部12は bit命令を受けると、構成データメモリ13から、16ビットCPUおよび8ビットCPUの回路構成データ、および16ビットCPUおよび8ビットCPUに接続するための共有命令バスおよび共有データバスの回路構成データを読み込み、FPGA11にこれらの回路構成をする。このとき、半導体集積回路1Aが、 bit命令に指定されたビット幅と同一ビット幅のメインCPUを既に備えていたなら、メインCPUの個数だけ減じて、CPU14の回路構成をするようにする。
【0093】
図16は、制御部12が bit命令を実行した結果、FPGA11にCPU14−A,14−B,14−C、共有命令バス17の延長部分および共有データバス18の延長部分の回路が構成されたところを示す。図12のオブジェクトプログラムの bit命令において、回路構成をされるべきCPUのビット幅を示す数値として“16”が先に指定されているので、16ビットCPUのCPU14−AがFPGA11の領域内でメモリにより近い位置に回路構成をされる。共有データバス18の延長部分は、CPU14−Aとは16ビット、CPU14−BおよびCPU14−Cとは8ビットで接続されるように回路構成をされる。なお、共有データバス18の下位8ビットはCPU10およびCPU14−A,14−B,14−Cに、下位16ビットはCPU10およびCPU14−Aに、上位16ビットはCPU10のみに接続される。
【0094】
図12のオブジェクトプログラムの2行目以降に記述された命令は、共有命令バス17によって、その命令が実行されるべきCPUに供給される。図12のオブジェクトプログラムにおいて、命令の末尾に付された“16”はCPU14−A、“8a”はCPU14−B、“8b”はCPU14−C、そして何も付されていないものはメインCPU10でそれぞれ実行されることを表す。CPU10およびCPU14−A,14−B,14−Cは命令を受けると、それぞれ独立してその命令を実行するが、各命令の実行については説明を省略する。
【0095】
以上、本実施形態によると、コンパイル時に、ソースプログラム中に記述された命令の実行に要するビット幅に応じてCPUのビット幅を選択し、その選択されたビット幅のCPUによってその処理が実行されるようにすることにより、CPUを効率的に使用するオブジェクトプログラムを生成することができる。
【0096】
また、半導体集積回路1Aが元来備えているCPU10を優先的に使用するようにコンパイルすることにより、半導体集積回路1Aに備えられたCPU10を効率的に使用することができ、高速に処理されるオブジェクトプログラムを作成することができる。
【0097】
【発明の効果】
以上、本発明によると、ソースプログラムを、これらCPUによって実行されるようにコンパイルすることにより、CPUの使用効率を上げ、かつ、処理速度が速くなるようなオブジェクトプログラムの生成が可能となる。
【0098】
なお、本発明に係るコンパイラ装置は、コンパイラプログラムを、たとえば、記録媒体を介して、コンピュータにインストールすることによって、実現することができる。
【図面の簡単な説明】
【図1】本発明のコンパイラ装置の構成図である。
【図2】本発明の第1の実施形態に係るコンパイラ装置のコンパイル処理を示すフローチャートである。
【図3】本発明の第1および第2の実施形態に係るコンパイラ装置のCPU個数見積もり直し処理のフローチャートである。
【図4】C言語プログラムの1例である。
【図5】本発明の第1の実施形態に係るコンパイラ装置が図4のC言語プログラムをコンパイルして生成したオブジェクトプログラムである。
【図6】C言語プログラムの1例である。
【図7】本発明の第1の実施形態に係るコンパイラ装置が図6のC言語プログラムをコンパイルして生成したオブジェクトプログラムである。
【図8】本発明の第1の実施形態に係る半導体集積回路のブロック図である。
【図9】本発明の第1の実施形態に係る半導体集積回路が図5のオブジェクトプログラムを実行してCPUが回路構成されたところを示した図である。
【図10】本発明の第2の実施形態に係るコンパイラ装置のコンパイル処理を示すフローチャートである。
【図11】C言語プログラムの1例である。
【図12】本発明の第2の実施形態に係るコンパイラ装置が図11のC言語プログラムをコンパイルして生成したオブジェクトプログラムである。
【図13】C言語プログラムの1例である。
【図14】本発明の第2の実施形態に係るコンパイラ装置が図13のC言語プログラムをコンパイルして生成したオブジェクトプログラムである。
【図15】本発明の第2の実施形態に係る半導体集積回路のブロック図である。
【図16】本発明の第2の実施形態に係る半導体集積回路が図12のオブジェクトプログラムを実行してCPUが回路構成されたところを示した図である。
【図17】C言語プログラムの1例である。
【図18】従来のコンパイラ装置が図17のC言語プログラムをコンパイルして生成したオブジェクトプログラムである。
【符号の説明】
M1 抽出手段
M2,M2A コンパイル手段
M3 付加手段
1,1A 半導体集積回路
10 半導体集積回路に備えられたCPU(メインCPU)
11 プログラマブルデバイス(FPGA)
12 制御部
13 構成データメモリ
14 プログラマブルデバイスに回路構成をされたCPU
15 命令メモリ
16 データメモリ
17 共有命令バス
18 共有データバス
19 バス調停回路
Claims (8)
- ソースプログラムから、回路構成が書き換え可能なプログラマブルデバイスを備えた半導体集積回路によって実行されるオブジェクトプログラムを生成するコンパイラ装置であって、
前記ソースプログラムの実行に必要なCPUのビット幅および個数を見積もる抽出手段と、
前記抽出手段によって見積もられたビット幅および個数、ならびに前記プログラマブルデバイスの使用可能領域に基づいて、前記プログラマブルデバイスに回路構成をされるべきCPUのビット幅および個数を決定し、該回路構成をされるべきCPUによって実行される前記オブジェクトプログラムを生成するコンパイル手段と、
前記コンパイル手段によって決定されたビット幅および個数のCPUを前記プログラマブルデバイスに回路構成するための命令を、前記オブジェクトプログラムに付加する付加手段とを備えた
ことを特徴とするコンパイラ装置。 - 請求項1記載のコンパイラ装置において、
前記抽出手段は、
前記ソースプログラム中に記述された命令の実行に要するビット幅の出現回数をカウントし、データの依存関係をも解析して、前記ビット幅および個数を見積もるものである
ことを特徴とするコンパイラ装置。 - 請求項2記載のコンパイラ装置において、
前記コンパイル手段は、
前記抽出手段によってカウントされた出現回数が所定値以上であるビット幅ごとに少なくとも1個のCPUを、前記プログラマブルデバイスに回路構成をされるべきCPUとして決定するものである
ことを特徴とするコンパイラ装置。 - 請求項1記載のコンパイラ装置において、
前記コンパイル手段は、
前記オブジェクトプログラムの生成時に、前記ソースプログラム中のデータの依存関係を考慮して、前記プログラマブルデバイスに回路構成をされるべきCPUによって並列処理が行われるように最適化を行うものである
ことを特徴とするコンパイラ装置。 - ソースプログラムから、CPUと回路構成が書き換え可能なプログラマブルデバイスとが混載された半導体集積回路によって実行されるオブジェクトプログラムを生成するコンパイラ装置であって、
前記ソースプログラムの実行に必要なCPUのビット幅および個数を見積もる抽出手段と、
前記抽出手段によって見積もられたビット幅および個数、前記半導体集積回路に備えられたCPUのビット幅および個数、ならびに前記プログラマブルデバイスの使用可能領域に基づいて、前記プログラマブルデバイスに回路構成をされるべきCPUのビット幅および個数を決定し、これら回路構成をされるべきCPUおよび前記半導体集積回路に備えられたCPUによって実行される前記オブジェクトプログラムを生成するコンパイル手段と、
前記コンパイル手段によって決定されたビット幅および個数のCPUを前記プログラマブルデバイスに回路構成するための命令を、前記オブジェクトプログラムに付加する付加手段とを備えた
ことを特徴とするコンパイラ装置。 - 請求項5記載のコンパイラ装置において、
前記抽出手段は、
前記ソースプログラム中に記述された命令の実行に要するビット幅の出現回数をカウントし、データの依存関係をも解析して、前記ビット幅および個数を見積もるものである
ことを特徴とするコンパイラ装置。 - 請求項6記載のコンパイラ装置において、
前記コンパイル手段は、
前記半導体集積回路に備えられたCPUのビット幅を除いて、前記抽出手段によってカウントされた出現回数が所定値以上であるビット幅ごとに少なくとも1個のCPUを、前記プログラマブルデバイスに回路構成をされるべきCPUとして決定するものである
ことを特徴とするコンパイラ装置。 - 請求項5記載のコンパイラ装置において、
前記コンパイル手段は、
前記オブジェクトプログラムの生成時に、前記ソースプログラム中のデータの依存関係を考慮して、前記プログラマブルデバイスに回路構成をされるべきCPUおよび前記半導体集積回路に備えられたCPUによって並列処理が行われるように最適化を行うものである
ことを特徴とするコンパイラ装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001380413A JP3606836B2 (ja) | 2001-12-13 | 2001-12-13 | コンパイラ装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001380413A JP3606836B2 (ja) | 2001-12-13 | 2001-12-13 | コンパイラ装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004250861A Division JP3981373B2 (ja) | 2004-08-30 | 2004-08-30 | 半導体集積回路 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003186680A JP2003186680A (ja) | 2003-07-04 |
JP3606836B2 true JP3606836B2 (ja) | 2005-01-05 |
Family
ID=27591480
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001380413A Expired - Fee Related JP3606836B2 (ja) | 2001-12-13 | 2001-12-13 | コンパイラ装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3606836B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007074583A1 (ja) * | 2005-12-27 | 2007-07-05 | Matsushita Electric Industrial Co., Ltd. | 再構成可能な演算器を持つプロセッサ |
-
2001
- 2001-12-13 JP JP2001380413A patent/JP3606836B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007074583A1 (ja) * | 2005-12-27 | 2007-07-05 | Matsushita Electric Industrial Co., Ltd. | 再構成可能な演算器を持つプロセッサ |
Also Published As
Publication number | Publication date |
---|---|
JP2003186680A (ja) | 2003-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Liang et al. | aSOC: A scalable, single-chip communications architecture | |
Van Gageldonk et al. | An asynchronous low-power 80C51 microcontroller | |
JP2002244881A (ja) | 順序外データのトレーシング | |
US5590349A (en) | Real time programmable signal processor architecture | |
JP2008097084A (ja) | プロセッサ及びデータ転送ユニット | |
JP2004171573A (ja) | 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ | |
US5111388A (en) | Processing apparatus with functional hierarchical structure using corresponding hierarchical machine instruction fields | |
US7062724B2 (en) | Method for designing a system LSI | |
JP2009064411A (ja) | データおよび命令をコンピュータにロードするための方法および装置 | |
AU665927B2 (en) | Programmable signal processor architecture | |
JP2007048280A (ja) | バスモニタリングのための集積回路装置及びその方法 | |
JP3606836B2 (ja) | コンパイラ装置 | |
JP5163306B2 (ja) | 動的再構成回路およびデータ送信制御方法 | |
Rowen | Reducing SoC simulation and development time | |
Gill et al. | Loop pipelining for high-throughput stream computation using self-timed rings | |
JP3727395B2 (ja) | マイクロコンピュータ | |
JP3981373B2 (ja) | 半導体集積回路 | |
JP2004110436A (ja) | メモリのリード/ライト制御回路、無接点メモリカード、リード/ライト装置及び無接点メモリカードのリード/ライトシステム | |
JP2008204341A (ja) | インタフェース合成装置 | |
Roy et al. | On efficient minimization techniques of logical constituents and sequential data transmission for digital IC | |
US5457803A (en) | Bit-field logic operation unit | |
US6505294B2 (en) | Direct control of operation blocks using operand signal of control instruction as extension to instruction set in a hardwired control processor | |
JP2006134347A (ja) | マイクロコンピュータ | |
US20090265515A1 (en) | Information Processing Apparatus, Information Processing Method, and Computer Program | |
JP2006004076A (ja) | 半導体集積装置の設計方法、設計プログラム、および記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040629 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040830 |
|
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: 20040928 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041005 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071015 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081015 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091015 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091015 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101015 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111015 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121015 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |