JP2003186680A - コンパイラ装置および半導体集積回路 - Google Patents
コンパイラ装置および半導体集積回路Info
- Publication number
- JP2003186680A JP2003186680A JP2001380413A JP2001380413A JP2003186680A JP 2003186680 A JP2003186680 A JP 2003186680A JP 2001380413 A JP2001380413 A JP 2001380413A JP 2001380413 A JP2001380413 A JP 2001380413A JP 2003186680 A JP2003186680 A JP 2003186680A
- Authority
- JP
- Japan
- Prior art keywords
- cpu
- bit width
- semiconductor integrated
- integrated circuit
- circuit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
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
- Logic Circuits (AREA)
- Executing Machine-Instructions (AREA)
- Microcomputers (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
消費電力を低減するオブジェクトプログラムを生成する
コンパイラ装置を提供する。さらに、このオブジェクト
プログラムの実行に必要となるさまざまなビット幅のC
PUを、プログラマブルデバイスを備えた半導体集積回
路に構成する。 【解決手段】 コンパイラ装置の抽出手段M1はソース
プログラムの実行に必要なCPUのビット幅および個数
を見積もり、コンパイル手段M2は回路構成すべきCP
Uを決定してこれらCPUを想定したコンパイルを行
い、付加手段M3は想定したCPUの回路構成をするた
めの命令をオブジェクトプログラムに付加する。このよ
うに生成されたオブジェクトプログラムを、CPUとプ
ログラマブルデバイスとが混載された半導体集積回路で
実行することにより、プログラマブルデバイスに必要な
CPUが回路構成され、CPUの使用効率を向上させる
ことができる。
Description
よび半導体集積回路に関するものであり、特に、プログ
ラマブルデバイスを備えた半導体集積回路の回路構成技
術および該半導体集積回路によって実行されるオブジェ
クトプログラムを生成するコンパイル技術に属する。
は、その処理をプログラムとして記述する必要がある。
通常、このプログラムはC言語などの高級プログラム言
語を用いて記述されるが、CPUは高級プログラム言語
で書かれたソースプログラムを直接、実行することがで
きない。このため、ソースプログラムを、CPUが実行
することのできるオブジェクトプログラムに変換しなけ
ればならない。この変換処理(コンパイル)は、コンパ
イラによって行われる。
イル時に、オブジェクトプログラムを実行するCPUと
して、ソースプログラムの実行に必要とされる最大ビッ
ト幅のものを選択している。たとえば、図17に示され
たC言語のソースプログラムでは、char型、 short型お
よびlong型の3つのデータ型が使用されており、各デー
タ型の処理に必要なビット幅はそれぞれ8ビット、16
ビットおよび32ビットである。したがって、コンパイ
ラは、このソースプログラムの実行に必要なCPUとし
て32ビットCPUを選択する。
2ビットCPUによって実行されることを前提として生
成されたオブジェクトプログラムを示す。
変数aおよびbの値を32ビットデータレジスタD0お
よびD1にゼロ拡張をして転送するゼロ拡張バイト転送
命令である。同様に、6および7行目の“ movhu”は、
16ビット変数dおよびeの値を32ビットデータレジ
スタD0およびD1にゼロ拡張をして転送するゼロ拡張
ハーフワード転送命令である。
b”および“ 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で表される
メモリに転送する命令である。
レジスタD1の値の上位ビットを切り捨て、8ビットデ
ータにしてからアドレスレジスタA0で表されるメモリ
に転送するバイト転送命令である。同様に、10行目の
“ movhu”は、32ビットデータレジスタD1の値の上
位ビットを切り捨て、16ビットデータにしてからアド
レスレジスタA0で表されるメモリに転送するハーフワ
ード転送命令である。
っては、そのソースプログラムの実行に必要とされる最
大ビット幅よりも小さなビット幅で実行される命令が頻
繁に出現するようなものがある。このようなソースプロ
グラムにおいて、CPUは、小さなビット幅で実行でき
る命令を、最大ビット幅に拡張して実行する。たとえ
ば、図17のソースプログラム中の“c=a+b;”を実行す
るのに、図18のオブジェクトプログラム中の1および
2行目のゼロ拡張バイト転送命令で8ビットデータを3
2ビットに拡張し、5行目のバイト転送命令で32ビッ
トデータの上位ビットを切り捨てて8ビットデータにし
てからメモリに転送している。同様に、ソースプログラ
ム中の“f=d-e;”を実行するのに、オブジェクトプログ
ラム中の6および7行目のゼロ拡張ハーフワード転送命
令で16ビットデータを32ビットに拡張し、10行目
のハーフワード転送命令で32ビットデータの上位ビッ
トを切り捨てて16ビットデータにしてからメモリに転
送している。
てソースプログラム中のすべての命令が実行されるので
は、効率的にCPUを使用することができない。さら
に、小さなビット幅の命令を最大ビット幅に拡張するこ
とにより、ゼロ拡張されたデータを載せたバスの部分に
もクロックが供給される。しかし、このゼロ拡張された
部分に供給されるクロックは無駄であり、半導体集積回
路の消費電力の増大を招く原因となる。
用効率を上げるとともに、半導体集積回路の消費電力が
低減されるオブジェクトプログラムを生成するコンパイ
ラ装置を実現することを課題とする。さらに、オブジェ
クトプログラムの実行に必要となるさまざまなビット幅
のCPUの回路をFPGA( Field Programmable Gate
Array)などのプログラマブルデバイスを備えた半導体
集積回路に構成することを課題とする。
に、請求項1の発明が講じた手段は、ソースプログラム
から、回路構成が書き換え可能なプログラマブルデバイ
スを備えた半導体集積回路によって実行されるオブジェ
クトプログラムを生成するコンパイラ装置であって、前
記ソースプログラムの実行に必要なCPUのビット幅お
よび個数を見積もる抽出手段と、前記抽出手段によって
見積もられたビット幅および個数、および前記プログラ
マブルデバイスの使用可能領域に基づいて、前記プログ
ラマブルデバイスに回路構成をされるべきCPUのビッ
ト幅および個数を決定し、これら回路構成をされるべき
CPUによって実行される前記オブジェクトプログラム
を生成するコンパイル手段と、前記コンパイル手段によ
って決定されたビット幅および個数のCPUの回路を前
記プログラマブルデバイスに構成するための命令を、前
記オブジェクトプログラムに付加する付加手段とを備え
るものとする。
ムの実行に必要なCPUがプログラマブルデバイスに回
路構成をされると想定して、これらCPUによって実行
されるオブジェクトプログラムが生成される。このよう
に生成されたオブジェクトプログラムにおいて、各命令
の実行に必要なビット幅に応じたCPUでその命令が実
行され、CPUの使用効率を上げることができる。
手段は、前記ソースプログラム中に記述された命令の実
行に要するビット幅の出現回数をカウントし、データの
依存関係をも解析して、前記ビット幅および個数を見積
もるものとする。
パイル手段は、前記抽出手段によってカウントされた出
現回数が所定値以上であるビット幅ごとに少なくとも1
個のCPUを、前記プログラマブルデバイスに回路構成
をされるべきCPUとして決定するものとする。
パイル手段は、前記オブジェクトプログラムの生成時
に、前記ソースプログラム中のデータの依存関係を考慮
して、前記プログラマブルデバイスに回路構成をされる
べきCPUによって並列処理が行われるように最適化を
行うものとする。
ソースプログラムから、CPUと回路構成が書き換え可
能なプログラマブルデバイスとが混載された半導体集積
回路によって実行されるオブジェクトプログラムを生成
するコンパイラ装置であって、前記ソースプログラムの
実行に必要なCPUのビット幅および個数を見積もる抽
出手段と、前記抽出手段によって見積もられたビット幅
および個数、前記半導体集積回路に備えられたCPUの
ビット幅および個数、および前記プログラマブルデバイ
スの使用可能領域に基づいて、前記プログラマブルデバ
イスに回路構成をされるべきCPUのビット幅および個
数を決定し、これら回路構成をされるべきCPUおよび
前記半導体集積回路に備えられたCPUによって実行さ
れる前記オブジェクトプログラムを生成するコンパイル
手段と、前記コンパイル手段によって決定されたビット
幅および個数のCPUの回路を前記プログラマブルデバ
イスに構成するための命令を、前記オブジェクトプログ
ラムに付加する付加手段とを備えたものとする。
ら備えた半導体集積回路においても、ソースプログラム
の実行に必要なCPUがプログラマブルデバイスに回路
構成をされると想定して、これらCPUによって実行さ
れるオブジェクトプログラムが生成される。このように
生成されたオブジェクトプログラムにおいて、各命令の
実行に必要なビット幅に応じたCPUでその命令が実行
され、CPUの使用効率を上げることができる。
手段は、前記ソースプログラム中に記述された命令の実
行に要するビット幅の出現回数をカウントし、データの
依存関係をも解析して、前記ビット幅および個数を見積
もるものとする。
パイル手段は、前記半導体集積回路に備えられたCPU
のビット幅を除いて、前記抽出手段によってカウントさ
れた出現回数が所定値以上であるビット幅ごとに少なく
とも1個のCPUを、前記プログラマブルデバイスに回
路構成をされるべきCPUとして決定するものとする。
パイル手段は、前記オブジェクトプログラムの生成時
に、前記ソースプログラム中のデータの依存関係を考慮
して、前記プログラマブルデバイスに回路構成をされる
べきCPUおよび前記半導体集積回路に備えられたCP
Uによって並列処理が行われるように最適化を行うもの
とする。
回路構成が書き換え可能なプログラマブルデバイスを備
えた半導体集積回路であって、前記プログラマブルデバ
イスに、指定されたビット幅および指定された個数のC
PUならびに該CPUに接続されるバスの回路構成をす
る制御部を備えるものとする。
ジェクトプログラムに指定されたビット幅および個数の
CPUを、半導体集積回路が備えるプログラマブルデバ
イスに回路構成をし、各命令の実行に必要なビット幅に
応じたビット幅のCPUによってその命令が実行され
る。これにより、ゼロ拡張命令などを実行することによ
る無駄なバス部分へのクロック供給がなくなり、半導体
集積回路の消費電力を低減することができる。
御部は、CPU回路構成データを参照して、前記プログ
ラマブルデバイスに、指定されたビット幅および指定さ
れた個数のCPUの回路構成をするものとする。
CPU回路構成データは、ビット幅でパラメータ化され
ているものとする。
御部は、前記バスとして、命令メモリが保持する命令を
前記CPUに供給する共有命令バスの回路構成をするも
のとする。
制御部は、共有命令バス回路構成データを参照して、前
記プログラマブルデバイスに、前記共有命令バスの回路
構成をするものとする。
御部は、前記バスとして、データメモリと前記CPUと
の間でデータを転送する共有データバスの回路構成をす
るものとする。
制御部は、共有データバス回路構成データを参照して、
前記プログラマブルデバイスに、前記共有データバスの
回路構成をするものとする。
導体集積回路はメモリを備えており、制御部は、前記プ
ログラマブルデバイスに回路構成をされるCPUのう
ち、使用頻度が多い順に前記メモリに近い位置に配置さ
れるように、前記指定されたビット幅および指定された
個数のCPUの回路構成をするものとする。
導体集積回路はメモリを備えており、制御部は、前記プ
ログラマブルデバイスに回路構成をされるCPUのう
ち、ビット幅が大きい順に前記メモリに近い位置に配置
されるように、前記指定されたビット幅および指定され
た個数のCPUの回路構成をするものとする。
前記請求項9の半導体集積回路は、前記プログラマブル
デバイスに回路構成をされたCPUとは別個に、CPU
を備えているものとする。
た半導体集積回路においても、たとえば、オブジェクト
プログラムに指定されたビット幅および個数のCPU
を、半導体集積回路が備えるプログラマブルデバイスに
回路構成をし、各命令の実行に必要なビット幅に応じた
ビット幅のCPUによってその命令が実行される。これ
により、ゼロ拡張命令などを実行することによる無駄な
バス部分へのクロック供給がなくなり、半導体集積回路
の消費電力を低減することができる。
制御部は、前記指定されたビット幅と半導体集積回路に
備えられたCPUのビット幅とが等しい場合、該ビット
幅に対して指定された個数から半導体集積回路に備えら
れたCPUのうち該ビット幅と等しいビット幅のCPU
の個数を減じて、前記プログラマブルデバイスにCPU
の回路構成をするものとする。
制御部は、前記指定されたビット幅が半導体集積回路に
備えられたCPUのビット幅と等しいビット幅がなく、
前記指定されたビット幅が当該半導体集積回路に備えら
れたCPUのビット幅よりも小さい場合、該指定された
ビット幅に対して指定された個数から半導体集積回路に
備えられたCPUの個数を減じて、前記プログラマブル
デバイスにCPUの回路構成をするものとする。
施形態について説明する。
の実施形態に係るコンパイラ装置の構成を示す。本実施
形態に係るコンパイラ装置は、プログラマブルデバイス
を備えた半導体集積回路によって実行されるオブジェク
トプログラムを生成するものであり、ソースプログラム
の実行に必要なCPUのビット幅および個数を見積もる
抽出手段M1と、プログラマブルデバイスに回路構成を
されるべきCPUのビット幅および個数を決定してこれ
らCPUによって実行されるオブジェクトプログラムを
生成するコンパイル手段M2と、CPUの回路をプログ
ラマブルデバイスに構成するための命令をオブジェクト
プログラムに付加する付加手段M3とを備えている。以
下、本実施形態に係るコンパイラ装置が行うコンパイル
処理について、図2のフローチャートを用いて説明す
る。
イルを開始すると、ステップS1において、ソースプロ
グラム全体にわたり、ソースプログラム中に記述された
命令が実行されるときのビット幅の出現回数をカウント
する。このとき、データの依存関係についても解析す
る。そして、データの依存関係がある命令のビット幅に
ついては出現回数を減じて、ソースプログラムの実行に
必要なCPUのビット幅およびそのビット幅ごとの個数
を見積もる。以上のステップS1は、本実施形態に係る
コンパイラ装置の抽出手段M1によって実行される。
1によってカウントされたビット幅の出現回数と所定値
とを比較し、出現回数が所定値以上のビット幅(以下、
「必要ビット幅」)を抽出する。ここで、必要ビット幅
を抽出するとしたのは、出現回数が少ないビット幅のC
PUはプログラマブルデバイスに回路構成をされても無
駄が多いため、このようなCPUは回路構成をされない
ようにするためである。たとえば、あるソースプログラ
ムにおいて、16ビットおよび8ビットのビット幅の出
現回数がそれぞれ18回および2回であるとき、出現回
数が少ない8ビットのCPUは回路構成をされず、16
ビットのCPUのみが回路構成をされるようにする。な
お、本実施形態では、ソースプログラム全体に対するビ
ット幅の出現割合と所定の閾値とを比較するものとす
る。そして、必要ビット幅が1つの場合はステップS3
に進み、複数の場合はステップS4に進む。
について抽出手段M1によって見積もられた個数が1個
である場合、必要ビット幅のCPUが1個だけプログラ
マブルデバイスに回路構成をされるものとしてステップ
S9に進む。一方、必要ビット幅のCPUの個数が複数
個である場合、プログラマブルデバイスの使用可能領域
に収まる個数のCPUが回路構成をされるものとしてス
テップS10に進む。
必要な個数のCPUがすべて回路構成をされたときの回
路面積SCAを計算し、プログラマブルデバイスの使用
可能領域の回路面積SFと比較する。そして、SF≧S
CAの場合は、必要ビット幅のCPUがすべて回路構成
をされるものとしてステップS8に進み、SF<SCA
の場合はステップS5に進む。
がその必要ビット幅ごとに1個だけ回路構成をされるも
のとして、この場合に要する回路面積SC1を計算す
る。そして、回路面積SC1とプログラマブルデバイス
の使用可能領域の回路面積SFとの差(SF−SC1)
と、必要ビット幅のCPUのうち回路構成に要する回路
面積が最小であるものの回路面積SSとを比較する。つ
まり、必要ビット幅ごとに1個のCPUの回路構成を
し、なおも残存するプログラマブルデバイスの使用可能
領域に別の必要ビット幅のCPUが追加して回路構成を
され得るか否かを判断する。そして、SF−SC1≧S
Sの場合はステップS6に進み、SF−SC1<SSの
場合は、複数ビット幅のCPUがビット幅ごとに1個、
プログラマブルデバイスに回路構成をされるものとして
ステップS7に進む。
がビット幅ごとに1個、回路構成をされ、さらに、なお
も残存するプログラマブルデバイスの使用可能領域に別
の必要ビット幅のCPUが追加して回路構成をされるよ
うに、必要ビット幅のCPUの個数を見積もり直す処理
が行われる。この処理については後述する。
が、ビット幅ごとに1個、プログラマブルデバイスに回
路構成をされると想定して、これらCPUによって実行
されるオブジェクトプログラムを生成する。このとき、
ソースプログラム中に記述された命令の実行に要するビ
ット幅に応じて、各命令に各ビット幅のCPUを割り当
てるようにコンパイルする。
が、ビット幅ごとに複数個、プログラマブルデバイスに
回路構成をされると想定して、これらCPUによって実
行されるオブジェクトプログラムを生成する。このと
き、ソースプログラム中に記述された命令の実行に要す
るビット幅に応じて、各命令に各ビット幅のCPUを割
り当てるとともに、各命令が並列に実行されるように最
適化を行ってコンパイルする。
が1個、プログラマブルデバイスに回路構成をされると
想定して、このCPUによって実行されるオブジェクト
プログラムを生成する。
Uが1または複数個、プログラマブルデバイスに回路構
成をされると想定して、これらCPUによって実行され
るオブジェクトプログラムを生成する。このとき、ソー
スプログラム中に記述された各命令が並列に実行される
ように最適化を行ってコンパイルする。
での処理は、本実施形態に係るコンパイラ装置のコンパ
イル手段M2によって実行される。
されると想定したCPUの回路をプログラマブルデバイ
スに構成するための命令をオブジェクトプログラム付加
する。まず、コンパイル手段M2によって生成されたオ
ブジェクトプログラムを解析して、各ビット幅のCPU
の使用頻度を調べる。そして、付加する命令において、
ビット幅を表す数字が使用頻度の多い順に、先に現れる
ようにする。また、使用頻度が同一の場合は、ビット幅
の大きい順に、先に現れるようにする。そして、コンパ
イル手段M2によって生成されたオブジェクトプログラ
ムに、この命令を付加して、すべての処理を終了する。
このステップS11は、本実施形態に係るコンパイラ装
置の付加手段M3によって実行される。
て、図3のフローチャートを用いて説明する。
イスに残存する使用可能領域の回路面積(SF−SC
1)と、必要ビット幅のCPUのうち回路構成に要する
回路面積が最大であるものの回路面積SBとを比較す
る。つまり、プログラマブルデバイスの残存領域に必要
バス幅のCPUのうち、任意のものが追加して回路構成
をされ得るか否かを判断する。そして、SF−SC1≧
SBの場合はステップS62に進み、SF−SC1<S
Bの場合はステップS64に進む。
る必要ビット幅のCPUが追加して回路構成可能である
として、この必要ビット幅のCPUの個数を1つ増や
す。そして、この追加されたCPUが要する回路面積を
回路面積SC1に加えて新たな回路面積SC1を計算
し、ステップS63に進む。
イスに残存する使用可能領域の回路面積(SF−SC
1)と、必要ビット幅のCPUのうち回路構成に要する
回路面積が最小であるものの回路面積SSとを比較す
る。つまり、なおも残存するプログラマブルデバイスの
使用可能領域に別の必要ビット幅のCPUが追加して回
路構成可能か否かを判断する。そして、SF−SC1≧
SSの場合は、なおもCPUが追加可能であるとして、
ステップS61に戻ってCPUの個数をさらに見積もり
直す。一方、SF−SC1<SSの場合は、これ以上の
CPUを追加できないため、このときの選択されている
ビット幅およびそのビット幅ごとの個数のCPUが、プ
ログラマブルデバイスに回路構成をされるものとしてス
テップS7に進む。
して、プログラマブルデバイスに残存する使用可能領域
の回路面積(SF−SC1)に収まる回路面積であり、
かつ、出現回数が最多のCPUを選択する。そして、こ
のとき選択されているビット幅およびそのビット幅ごと
の個数のCPUが、プログラマブルデバイスに回路構成
をされるものとしてステップS7に進む。
処理の流れを説明した。次に、図4に示されたC言語プ
ログラムを例に、本実施形態に係るコンパイラ装置のコ
ンパイル処理について具体的に説明する。なお、ソース
プログラム中に記述された各命令に対するコンパイル処
理については説明を省略し、オブジェクトプログラムの
実行に必要なCPUを決定する処理およびこれらCPU
の回路を構成するための命令を付加する処理について詳
しく述べる。
と、ステップ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個で
あると見積もる。
出現割合をチェックする。ここでは、閾値を1/4とす
る。8ビットの出現割合は2/3および16ビットの出
現割合は1/3であり、どちらも閾値以上なので、必要
ビット幅として8ビットおよび16ビットの2種類を抽
出し、ステップS4に進む。
幅のCPUがすべてプログラマブルデバイスに回路構成
可能か否かを判断する。ここで、プログラマブルデバイ
スの使用可能な領域の回路面積SFを10、8ビットC
PUの回路構成に要する回路面積を2、16ビットCP
Uの回路構成に要する回路面積を4とする。すべてのC
PUを回路構成するのに要する回路面積SCAは2×2
+4=8となり、SF≧SCAなので、すべてのCPU
の回路を構成するものとしてステップS8に進む。
2個および16ビットCPUが1個、プログラマブルデ
バイスに回路構成されると想定して、これら3個のCP
Uによって実行されるオブジェクトプログラムを生成
し、ステップS11に進む。なお、ここで生成されるの
は、図5に示されたオブジェクトプログラムの2行目以
降となる。
ラム中に記述された命令の実行に要するビット幅に応じ
て、各命令に各ビット幅のCPUを割り当てるように生
成される。図5のオブジェクトプログラムの2行目以降
に記述された命令の末尾に付された数字は、その命令が
その数字のビット幅のCPUによって実行されることを
示している。また、図4のソースプログラムに対して、
2個の8ビットCPUが回路構成をされるため、この2
個のCPUで並列処理が行われるように最適化されたオ
ブジェクトプログラムが生成される。図5のオブジェク
トプログラムでは、2行目以降の命令の末尾に付された
数字の後に、さらに“a”や“b”といった記号を付し
て、その命令が実行されるべきCPUが指定されてい
る。
イル手段M2によって生成されたオブジェクトプログラ
ムを解析して、各ビット幅のCPUの使用頻度を調べ
る。図5のオブジェクトプログラムでは、どのビット幅
のCPUも使用頻度は5回であるので、ビット幅の大き
い順に、16ビット、8ビット、8ビットとして bit命
令に現れるようにする。この bit命令は、プログラマブ
ルデバイスにCPUの回路を構成するための命令であ
る。そして、図5のオブジェクトプログラムの1行目に
示された“bit 16,8,8”を付加して、処理を終了する。
ログラムを例にコンパイル処理の説明をした。次に、デ
ータの依存関係があるソースプログラムのコンパイル処
理について、図6のC言語プログラムを例に説明をす
る。なお、先ほどと同様に、ソースプログラム中に記述
された各命令に対するコンパイル処理については説明を
省略し、オブジェクトプログラムの実行に必要なCPU
を決定する処理およびこれらCPUの回路を構成するた
めの命令を付加する処理について詳しく述べる。
と、ステップ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行目以降が生成される。
ル手段M2によって生成されたオブジェクトプログラム
を解析して、各ビット幅のCPUの使用頻度を調べる。
図7のオブジェクトプログラムでは、8ビットCPUの
使用頻度は9回、16ビットCPUは5回であるので、
使用頻度の多い順に、8ビット、16ビットとして bit
命令に現れるようにする。そして、図7のオブジェクト
プログラムの1行目に示された“bit 8,16”を付加し
て、処理を終了する。
ついて、図8を用いて説明する。本実施形態に係る半導
体集積回路1は、上記の bit命令が付加されたオブジェ
クトプログラム、たとえば、本実施形態に係るコンパイ
ラ装置によって生成されたオブジェクトプログラムを実
行することができる。
PGA11と、FPGA11にさまざまな回路を構成す
る制御部12と、FPGA11に構成されるさまざまな
回路の回路構成データを格納している構成データメモリ
13と、半導体集積回路1によって実行される命令を格
納する命令メモリ15と、データメモリ16とを備えて
いる。なお、本実施形態で用いる回路構成データは、F
PGAに回路を構成するための一般的なデータと同様の
ものである。
では4個)のCPU14と、命令メモリ15からCPU
14に命令を供給するための共有命令バス17と、CP
U14とデータメモリ16との間でデータを転送するた
めの共有データバス18と、共有データバス18の使用
に関してCPU14を調停するバス調停回路19とが回
路構成をされている。
指定された個数のCPU14の回路をFPGA11に構
成する機能と、共有命令バス17の回路をFPGA11
に構成する機能と、共有データバス18の回路をFPG
A11に構成する機能と、バス調停回路19の回路をF
PGA11に構成する機能とを有する。なお、本実施形
態におけるこれら回路の構成は、一般的な回路構成技術
によって行うものとする。
回路構成をされる8ビットCPU、16ビットCPU、
32ビットCPUなどのさまざまなビット幅のCPUの
回路構成データと、さまざまなビット幅のCPUに接続
することのできる共有命令バスの回路構成データおよび
共有データバスの回路構成データとを格納している。
レスレジスタを有し、独立して命令を実行することがで
きる。したがって、これらCPU14によって並列処理
が行われる。
と命令メモリ15とに接続するように回路構成をされ、
命令メモリ15から命令を受け取り、この命令がどのC
PU14によって実行されるのかを判別する機能と、各
命令をその命令が実行されるCPUに供給する機能とを
有する。
4とデータメモリ16とに接続するように回路構成をさ
れ、CPU14とデータメモリ16との間のデータ転送
命令に関して、CPU14からデータメモリ16に指定
アドレスを供給する機能と、データメモリ16からCP
U14にデータを供給する機能とを有する。
よって共有されているため、複数のCPU14によって
同時にアクセスされる可能性がある。しかし、共有デー
タバス18は、一度に1個のCPU14のデータしか扱
えないため、CPU14間で共有データバス18を使用
するタイミングを調整しなければならない。この調整を
行うのがバス調停回路19である。
の使用状況を判断するためのレジスタを有する。このレ
ジスタは、共有データバス18がCPU14によって使
用されている場合は“1”、どのCPU14にも使用さ
れていない場合は“0”の値を保持する。CPU14が
データメモリ16にアクセスするには、まず、バス調停
回路19にバス使用要求信号DT1を発する。バス調停
回路19はバス使用要求信号DT1を受けると、レジス
タ値を参照して、レジスタ値が“0”の場合は、レジス
タ値を“1”にして他のCPU14が共有データバス1
8を使用できないようにするとともに、バス使用要求信
号DT1を発したCPU14にバス使用許可信号DT2
を送る。一方、レジスタ値が“1”の場合は、レジスタ
値が“0”になるまで、バス使用要求信号DT1を発し
たCPU14を待機させる。バス使用許可信号DT2を
受けたCPU14は、共有データバス18を使用してデ
ータメモリ16にアクセスができるようになる。そし
て、アクセスが終了すると、バス調停回路19にバス使
用終了信号DT3を発する。バス調停回路19はバス使
用終了信号DT3を受けると、レジスタ値を“0”にし
て他のCPU14が共有データバス18を使用できるよ
うにする。
ブジェクトプログラムが実行されるときの動作について
説明する。なお、オブジェクトプログラム中の個々の命
令に対する動作についての説明は省略し、 bit命令に対
する動作について説明する。
クトプログラムが実行されると、まず、1行目の“bit
16,8,8”が命令メモリ15から制御部12に送られる。
制御部12はこの bit命令を受けると、構成データメモ
リ13から、16ビットおよび8ビットのCPUの回路
構成データ、および16ビットおよび8ビットのCPU
に接続するための共有命令バスおよび共有データバスの
回路構成データを読み込み、FPGA11にこれらの回
路構成をする。
結果、FPGA11にCPU14−A,14−B,14
−C、共有命令バス17および共有データバス18の回
路が構成されたところを示す。図5のオブジェクトプロ
グラムの bit命令において、回路構成をされるべきCP
Uのビット幅を示す数値として“16”が先に指定され
ているので、16ビットCPUのCPU14−AがFP
GA11の領域内でメモリにより近い位置に回路構成を
される。共有データバス18は、CPU14−Aとは1
6ビット、CPU14−BおよびCPU14−Cとは8
ビットで接続されるように回路構成をされる。なお、共
有データバス18の下位8ビットはCPU14−A,1
4−B,14−Cに、上位8ビットはCPU14−Aの
みに接続される。
降に記述された命令は、共有命令バス17によって、そ
の命令が実行されるべきCPUに供給される。図5のオ
ブジェクトプログラムにおいて、命令の末尾に付された
“16”はCPU14−A、“8a”はCPU14−B、そ
して“8b”はCPU14−Cでそれぞれ実行されること
を表す。CPU14−A,14−B,14−Cは命令を
受けると、それぞれ独立してその命令を実行するが、こ
の実行については説明を省略する。
に、ソースプログラム中に記述された命令の実行に要す
るビット幅に応じてCPUのビット幅を選択し、その選
択されたビット幅のCPUによってその命令が実行され
るようにすることにより、CPUを効率的に使用するオ
ブジェクトプログラムを生成することができる。
回路構成をされるCPU14を、使用頻度が多い順にメ
モリに近い位置に配置することにより、使用頻度の多い
共有データバス18の配線長を短くすることができ、処
理の高速化が可能となる。さらに、ビット幅が大きい順
にメモリに近い位置に配置することにより、共有データ
バス18の無駄な配線を削減することができ、FPGA
11の回路資源を有効に活用することができる。また、
ソースプログラムの実行に必要なビット幅のCPU14
をFPGA11に回路構成をすることにより、小さなビ
ット幅の命令を最大ビット幅に拡張して実行することが
なくなり、拡張されたバスの部分に無駄に供給されるク
ロックを削減することができ、半導体集積回路1の消費
電力を低減することができる。
15およびデータメモリ16は半導体集積回路1に備え
られるとしたが、これらは半導体集積回路1の外部にあ
るものでもよい。また、構成データメモリ13は、さま
ざまなビット幅のCPU14の回路構成データ、共有命
令バス17の回路構成データおよび共有データバス18
の回路構成データを格納しているとしたが、これら回路
構成データをビット幅でパラメータ化して格納していて
もよい。この場合、制御部12から指定されたビット幅
をパラメータとして、指定されたビット幅のCPU1
4、共有命令バス17および共有データバス18の回路
構成データを生成して制御部12に送る機能を有する。
の実施形態に係るコンパイラ装置の構成を示す。本実施
形態に係るコンパイラ装置は、CPU(以下、「メイン
CPU」)とプログラマブルデバイスとが混載された半
導体集積回路によって実行されるオブジェクトプログラ
ムを生成するものであり、ソースプログラムの実行に必
要なCPUのビット幅および個数を見積もる抽出手段M
1と、プログラマブルデバイスに回路構成をされるべき
CPUのビット幅および個数を決定してこれらCPUお
よびメインCPUによって実行されるオブジェクトプロ
グラムを生成するコンパイル手段M2Aと、プログラマ
ブルデバイスにCPUの回路を構成するための命令をオ
ブジェクトプログラムに付加する付加手段M3とを備え
ている。以下、本実施形態に係るコンパイラ装置が行う
コンパイル処理について、図10のフローチャートを用
いて説明する。
出手段M1によってステップS1の処理が実行される。
このステップS1は、第1の実施形態と同様であるので
説明を省略する。続くステップS2も、第1の実施形態
と同様であるので説明を省略する。ここで、ステップS
2において、出現回数が所定値以上であるとして抽出さ
れたビット幅(以下、「必要ビット幅」)の中には、メ
インCPUのビット幅と等しいビット幅があるとする。
メインCPUのビット幅を選択し、このビット幅のCP
Uについて抽出手段M1によって見積もられた個数が1
個である場合、メインCPU1個によって実行されるオ
ブジェクトプログラムを生成するためにステップS9A
に進む。一方、メインCPUと同一ビット幅のCPUの
個数が複数個である場合、この個数からメインCPUの
個数を減じ、さらに、プログラマブルデバイスの使用可
能領域に収まる個数のCPUが回路構成をされるものと
してステップS10Aに進む。
必要ビット幅に対する必要な個数のCPUがすべて回路
構成をされたときの回路面積SCAを計算し、プログラ
マブルデバイスの使用可能領域の回路面積SFと比較す
る。そして、SF≧SCAの場合は、メインCPUを除
く必要ビット幅のCPUがすべて回路構成をされるもの
としてステップS8Aに進み、SF<SCAの場合はス
テップS5Aに進む。
ト幅を除く必要ビット幅のCPUがその必要ビット幅ご
とに1個だけ回路構成をされるものとして、この場合に
要する回路面積SC1を計算する。そして、回路面積S
C1とプログラマブルデバイスの使用可能領域の回路面
積SFとの差(SF−SC1)と、必要ビット幅のCP
Uのうち回路構成に要する回路面積が最小であるものの
回路面積SSとを比較する。つまり、メインCPUのビ
ット幅を除く必要ビット幅ごとに1個のCPUの回路構
成をし、なおも残存するプログラマブルデバイスの使用
可能領域に別の必要ビット幅のCPUが追加して回路構
成をされ得るか否かを判断する。そして、SF−SC1
≧SSの場合はステップS6に進み、SF−SC1<S
Sの場合は、メインCPUのビット幅を除く複数ビット
幅のCPUがビット幅ごとに1個、プログラマブルデバ
イスに回路構成をされるものとしてステップS7Aに進
む。
幅を除く必要ビット幅のCPUがビット幅ごとに1個、
回路構成され、さらに、なおも残存するプログラマブル
デバイスの使用可能領域に別の必要ビット幅のCPUが
追加して回路構成をされるように、必要ビット幅のCP
Uの個数を見積もり直す処理が行われる。この処理は、
第1の実施形態と同様であるので説明を省略する。
ト幅を除く複数ビット幅のCPUが、ビット幅ごとに1
個、プログラマブルデバイスに回路構成をされると想定
して、これら回路構成をされるCPUおよびメインCP
Uによって実行されるオブジェクトプログラムを生成す
る。このとき、ソースプログラム中に記述された命令の
実行に要するビット幅に応じて、各命令に各ビット幅の
CPUを割り当てるようにコンパイルする。
複数ビット幅のCPUが、ビット幅ごとに1または複数
個、プログラマブルデバイスに回路構成をされると想定
して、これら回路構成をされるCPUおよびメインCP
Uによって実行されるオブジェクトプログラムを生成す
る。このとき、ソースプログラム中に記述された命令の
実行に要するビット幅に応じて、各命令に各ビット幅の
CPUを割り当てるようにするとともに、各命令が並列
に実行されるように最適化を行ってコンパイルする。さ
らに、メインCPUと同一のビット幅のCPUが回路構
成をされる場合、メインCPUを優先的に使用するよう
に最適化を行う。
よって実行されるオブジェクトプログラムを生成する。
ット幅のCPUが複数個、プログラマブルデバイスに回
路構成をされると想定して、これら回路構成をされるC
PUおよびメインCPUによって実行されるオブジェク
トプログラムを生成する。このとき、メインCPUを優
先的に使用し、ソースプログラム中に記述された各命令
が並列に実行されるように最適化を行ってコンパイルす
る。
までの処理は、本実施形態に係るコンパイラ装置のコン
パイル手段M2Aによって実行される。
11の処理が実行される。このステップS11は、第1
の実施形態と同様であるので説明を省略する。
処理の流れを説明した。次に、図11に示されたC言語
プログラムを例に、本実施形態に係るコンパイラ装置の
コンパイル処理について具体的に説明する。なお、ソー
スプログラム中に記述された各処理に対するコンパイル
処理については説明を省略し、オブジェクトプログラム
の実行に必要なCPUを決定する処理およびこれらCP
Uの回路構成のための命令を付加する処理について詳し
く述べる。また、生成されるオブジェクトプログラムを
実行する半導体集積回路は、メインCPUとして32ビ
ットCPUを備えているとする。
と、ステップ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回、3
2ビットの出現回数を1回としてカウントする。さら
に、データの依存関係を解析し、図11のソースプログ
ラムにはデータの依存関係がないと判断する。そして、
図11のソースプログラムの実行に必要なCPUとし
て、8ビットが2個、16ビットが1個、32ビットが
1個であると見積もる。
出現割合をチェックする。ここでは、閾値を1/4とす
る。8ビットの出現割合は2/4、16ビットの出現割
合は1/4および32ビットの出現割合は1/4であ
り、いずれも閾値以上であるので、必要ビット幅として
8ビット、16ビットおよび32ビットの3種類を抽出
し、ステップ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に進
む。
が2個および16ビットCPUが1個、プログラマブル
デバイスに回路構成されると想定して、これら3個のC
PUおよびメインCPUによって実行されるオブジェク
トプログラムを生成し、ステップST11に進む。な
お、ここで生成されるのは、図12に示されたオブジェ
クトプログラムの2行目以降となる。
ラム中に記述された命令の実行に要するビット幅に応じ
て、各命令に各ビット幅のCPUを割り当てるように生
成される。図12のオブジェクトプログラムの2行目以
降に記述された命令の末尾に付された数字は、その命令
がその数字のビット幅のCPUによって実行されること
を示している。ただし、メインCPUによって実行され
る命令には数字は付されない。また、図11のソースプ
ログラムに対して、2個の8ビットCPUが回路構成を
されるため、この2個のCPUで並列処理が行われるよ
うに最適化されたオブジェクトプログラムが生成され
る。図12のオブジェクトプログラムでは、2行目以降
の命令の末尾に付された数字の後に、さらに“a”や
“b”といった記号を付して、その命令が実行されるべ
きCPUが指定されている。
イル手段M2Aによって生成されたオブジェクトプログ
ラムを解析して、プログラマブルデバイスに回路構成を
されるべきCPUの使用頻度を調べる。図12のオブジ
ェクトプログラムでは、どのビット幅のCPUも使用頻
度は5回であるので、ビット幅の大きい順に、16ビッ
ト、8ビット、8ビットとして bit命令に現れるように
する。この bit命令は、プログラマブルデバイスにCP
Uの回路を構成するための命令である。そして、図12
のオブジェクトプログラムの1行目に示された“bit 1
6,8,8”を付加して、処理を終了する。
ログラムを例にコンパイル処理の説明をした。次に、デ
ータの依存関係があるソースプログラムのコンパイル処
理について、図13のC言語プログラムを例に説明をす
る。
と、ステップ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行目以降が生成される。
ル手段M2Aによって生成されたオブジェクトプログラ
ムを解析して、プログラマブルデバイスに回路構成をさ
れるべきCPUの使用頻度を調べる。図14のオブジェ
クトプログラムでは、8ビットCPUの使用頻度は9
回、16ビットCPUは5回であるので、使用頻度の多
い順に、8ビット、16ビットとして bit命令に現れる
ようにする。そして、図14のオブジェクトプログラム
の1行目に示された“bit 8,16”を付加して、処理を終
了する。
ついて、図15を用いて説明する。本実施形態に係る半
導体集積回路1Aは、上記の bit命令が付加されたオブ
ジェクトプログラム、たとえば、本実施形態に係るコン
パイラ装置によって生成されたオブジェクトプログラム
を実行することができる。
メインCPU10と、FPGA11と、FPGA11に
さまざまな回路を構成する制御部12と、FPGA11
に構成されるさまざまな回路の回路構成データを格納し
ている構成データメモリ13と、半導体集積回路1Aに
よって実行される命令を格納する命令メモリ15と、デ
ータメモリ16と、CPU10およびFPGA11に回
路構成をされたCPU14に命令を供給するための共有
命令バス17と、CPU10およびFPGA11に回路
構成をされたCPU14とデータメモリ16との間でデ
ータを転送するための共有データバス18とを備える。
では4個)のCPU14と、共有データバス18の使用
に関してCPU10およびCPU14を調停するバス調
停回路19と、上記の共有命令バス17とCPU14と
を接続するための延長部分と、上記の共有データバス1
8とCPU14とを接続するための延長部分とが回路構
成をされている。
Aの各構成要素については、第1の実施形態と同様であ
るので説明を省略する。
のオブジェクトプログラムが実行されるときの動作につ
いて説明する。ここで、メインCPU10は32ビット
CPUであるとする。なお、オブジェクトプログラム中
の個々の命令に対する動作ついての説明は省略し、 bit
命令に対する動作について説明する。
ジェクトプログラムが実行されると、まず、1行目の
“bit 16,8,8”が命令メモリ15から制御部12に送ら
れる。制御部12は bit命令を受けると、構成データメ
モリ13から、16ビットCPUおよび8ビットCPU
の回路構成データ、および16ビットCPUおよび8ビ
ットCPUに接続するための共有命令バスおよび共有デ
ータバスの回路構成データを読み込み、FPGA11に
これらの回路構成をする。このとき、半導体集積回路1
Aが、 bit命令に指定されたビット幅と同一ビット幅の
メインCPUを既に備えていたなら、メインCPUの個
数だけ減じて、CPU14の回路構成をするようにす
る。
た結果、FPGA11にCPU14−A,14−B,1
4−C、共有命令バス17の延長部分および共有データ
バス18の延長部分の回路が構成されたところを示す。
図12のオブジェクトプログラムの bit命令において、
回路構成をされるべきCPUのビット幅を示す数値とし
て“16”が先に指定されているので、16ビットCP
UのCPU14−AがFPGA11の領域内でメモリに
より近い位置に回路構成をされる。共有データバス18
の延長部分は、CPU14−Aとは16ビット、CPU
14−BおよびCPU14−Cとは8ビットで接続され
るように回路構成をされる。なお、共有データバス18
の下位8ビットはCPU10およびCPU14−A,1
4−B,14−Cに、下位16ビットはCPU10およ
びCPU14−Aに、上位16ビットはCPU10のみ
に接続される。
以降に記述された命令は、共有命令バス17によって、
その命令が実行されるべきCPUに供給される。図12
のオブジェクトプログラムにおいて、命令の末尾に付さ
れた“16”はCPU14−A、“8a”はCPU14−
B、“8b”はCPU14−C、そして何も付されていな
いものはメインCPU10でそれぞれ実行されることを
表す。CPU10およびCPU14−A,14−B,1
4−Cは命令を受けると、それぞれ独立してその命令を
実行するが、各命令の実行については説明を省略する。
に、ソースプログラム中に記述された命令の実行に要す
るビット幅に応じてCPUのビット幅を選択し、その選
択されたビット幅のCPUによってその処理が実行され
るようにすることにより、CPUを効率的に使用するオ
ブジェクトプログラムを生成することができる。
るCPU10を優先的に使用するようにコンパイルする
ことにより、半導体集積回路1Aに備えられたCPU1
0を効率的に使用することができ、高速に処理されるオ
ブジェクトプログラムを作成することができる。また、
FPGA11に回路構成をされるCPU14を、使用頻
度が多い順にメモリに近い位置に配置することにより、
使用頻度の多い共有データバス18の配線長を短くする
ことができ、処理の高速化が可能となる。さらに、ビッ
ト幅が大きい順にメモリに近い位置に配置することによ
り、共有データバス18の無駄な配線を削減することが
でき、FPGA11の回路資源を有効に活用することが
できる。また、ソースプログラムの実行に必要なCPU
でメインCPU10を除くCPU14をFPGA11に
回路構成をすることにより、小さなビット幅の命令を最
大ビット幅に拡張して実行することがなくなり、拡張さ
れたバスの部分に無駄に供給されるクロックを削減する
ことができ、半導体集積回路1Aの消費電力を低減する
ことができる。
幅の中にメインCPUのビット幅と等しいビット幅があ
るとしているが、必要ビット幅の中にメインCPUのビ
ット幅がなくてもよい。そのとき、必要ビット幅がメイ
ンCPUのビット幅より小さいものがある場合、必要ビ
ット幅の中で一番大きなビット幅のCPUをメインCP
Uに割り当てる一方、必要ビット幅がメインCPUのビ
ット幅よりすべて大きい場合、メインCPUを使用せ
ず、必要ビット幅のCPUをプログラマブルデバイスで
回路構成する。
15およびデータメモリ16は半導体集積回路1Aに備
えられるとしたが、これらは半導体集積回路1Aの外部
にあってもよい。また、構成データメモリ13は、さま
ざまなバス幅のCPU14の回路構成データ、共有命令
バス17の回路構成データおよび共有データバス18の
回路構成データを格納しているとしたが、これら回路構
成データをビット幅でパラメータ化して格納していても
よい。この場合、制御部12から指定されたビット幅を
パラメータとして、指定されたビット幅のCPU14、
共有命令バス17および共有データバス18の回路構成
データを生成して制御部12に送る機能を有する。
ログラムの実行時に、半導体集積回路に備えられたFP
GAなどのプログラマブルデバイスにさまざまなビット
幅のCPUの回路が、適宜、構成されるため、ゼロ拡張
命令などを実行することによる無駄なバス部分へのクロ
ック供給がなくなり、半導体集積回路の消費電力を低減
することができる。また、ソースプログラムを、これら
CPUによって実行されるようにコンパイルすることに
より、CPUの使用効率を上げ、かつ、処理速度が速く
なるようなオブジェクトプログラムの生成が可能とな
る。
ンパイラプログラムを、たとえば、記録媒体を介して、
コンピュータにインストールすることによって、実現す
ることができる。
のコンパイル処理を示すフローチャートである。
パイラ装置のCPU個数見積もり直し処理のフローチャ
ートである。
が図4のC言語プログラムをコンパイルして生成したオ
ブジェクトプログラムである。
が図6のC言語プログラムをコンパイルして生成したオ
ブジェクトプログラムである。
のブロック図である。
が図5のオブジェクトプログラムを実行してCPUが回
路構成されたところを示した図である。
置のコンパイル処理を示すフローチャートである。
置が図11のC言語プログラムをコンパイルして生成し
たオブジェクトプログラムである。
置が図13のC言語プログラムをコンパイルして生成し
たオブジェクトプログラムである。
路のブロック図である。
路が図12のオブジェクトプログラムを実行してCPU
が回路構成されたところを示した図である。
グラムをコンパイルして生成したオブジェクトプログラ
ムである。
CPU) 11 プログラマブルデバイス(FPGA) 12 制御部 13 構成データメモリ 14 プログラマブルデバイスに回路構成をされた
CPU 15 命令メモリ 16 データメモリ 17 共有命令バス 18 共有データバス 19 バス調停回路
Claims (20)
- 【請求項1】 ソースプログラムから、回路構成が書き
換え可能なプログラマブルデバイスを備えた半導体集積
回路によって実行されるオブジェクトプログラムを生成
するコンパイラ装置であって、 前記ソースプログラムの実行に必要なCPUのビット幅
および個数を見積もる抽出手段と、 前記抽出手段によって見積もられたビット幅および個
数、ならびに前記プログラマブルデバイスの使用可能領
域に基づいて、前記プログラマブルデバイスに回路構成
をされるべきCPUのビット幅および個数を決定し、該
回路構成をされるべきCPUによって実行される前記オ
ブジェクトプログラムを生成するコンパイル手段と、 前記コンパイル手段によって決定されたビット幅および
個数のCPUを前記プログラマブルデバイスに回路構成
するための命令を、前記オブジェクトプログラムに付加
する付加手段とを備えたことを特徴とするコンパイラ装
置。 - 【請求項2】 請求項1記載のコンパイラ装置におい
て、 前記抽出手段は、 前記ソースプログラム中に記述された命令の実行に要す
るビット幅の出現回数をカウントし、データの依存関係
をも解析して、前記ビット幅および個数を見積もるもの
であることを特徴とするコンパイラ装置。 - 【請求項3】 請求項2記載のコンパイラ装置におい
て、 前記コンパイル手段は、 前記抽出手段によってカウントされた出現回数が所定値
以上であるビット幅ごとに少なくとも1個のCPUを、
前記プログラマブルデバイスに回路構成をされるべきC
PUとして決定するものであることを特徴とするコンパ
イラ装置。 - 【請求項4】 請求項1記載のコンパイラ装置におい
て、 前記コンパイル手段は、 前記オブジェクトプログラムの生成時に、前記ソースプ
ログラム中のデータの依存関係を考慮して、前記プログ
ラマブルデバイスに回路構成をされるべきCPUによっ
て並列処理が行われるように最適化を行うものであるこ
とを特徴とするコンパイラ装置。 - 【請求項5】 ソースプログラムから、CPUと回路構
成が書き換え可能なプログラマブルデバイスとが混載さ
れた半導体集積回路によって実行されるオブジェクトプ
ログラムを生成するコンパイラ装置であって、 前記ソースプログラムの実行に必要なCPUのビット幅
および個数を見積もる抽出手段と、 前記抽出手段によって見積もられたビット幅および個
数、前記半導体集積回路に備えられたCPUのビット幅
および個数、ならびに前記プログラマブルデバイスの使
用可能領域に基づいて、前記プログラマブルデバイスに
回路構成をされるべきCPUのビット幅および個数を決
定し、これら回路構成をされるべきCPUおよび前記半
導体集積回路に備えられたCPUによって実行される前
記オブジェクトプログラムを生成するコンパイル手段
と、 前記コンパイル手段によって決定されたビット幅および
個数のCPUを前記プログラマブルデバイスに回路構成
するための命令を、前記オブジェクトプログラムに付加
する付加手段とを備えたことを特徴とするコンパイラ装
置。 - 【請求項6】 請求項5記載のコンパイラ装置におい
て、 前記抽出手段は、 前記ソースプログラム中に記述された命令の実行に要す
るビット幅の出現回数をカウントし、データの依存関係
をも解析して、前記ビット幅および個数を見積もるもの
であることを特徴とするコンパイラ装置。 - 【請求項7】 請求項6記載のコンパイラ装置におい
て、 前記コンパイル手段は、 前記半導体集積回路に備えられたCPUのビット幅を除
いて、前記抽出手段によってカウントされた出現回数が
所定値以上であるビット幅ごとに少なくとも1個のCP
Uを、前記プログラマブルデバイスに回路構成をされる
べきCPUとして決定するものであることを特徴とする
コンパイラ装置。 - 【請求項8】 請求項5記載のコンパイラ装置におい
て、 前記コンパイル手段は、 前記オブジェクトプログラムの生成時に、前記ソースプ
ログラム中のデータの依存関係を考慮して、前記プログ
ラマブルデバイスに回路構成をされるべきCPUおよび
前記半導体集積回路に備えられたCPUによって並列処
理が行われるように最適化を行うものであることを特徴
とするコンパイラ装置。 - 【請求項9】 回路構成が書き換え可能なプログラマブ
ルデバイスを備えた半導体集積回路であって、 前記プログラマブルデバイスに、指定されたビット幅お
よび指定された個数のCPUならびに該CPUに接続さ
れるバスの回路構成をする制御部を備えたことを特徴と
する半導体集積回路。 - 【請求項10】 請求項9記載の半導体集積回路におい
て、 前記制御部は、 CPU回路構成データを参照して、前記プログラマブル
デバイスに、指定されたビット幅および指定された個数
のCPUの回路構成をするものであることを特徴とする
半導体集積回路。 - 【請求項11】 請求項10記載の半導体集積回路にお
いて、 前記CPU回路構成データは、ビット幅でパラメータ化
されていることを特徴とする半導体集積回路。 - 【請求項12】 請求項9記載の半導体集積回路におい
て、 前記制御部は、 前記バスとして、命令メモリが保持する命令を前記CP
Uに供給する共有命令バスの回路構成をするものである
ことを特徴とする半導体集積回路。 - 【請求項13】 請求項12記載の半導体集積回路にお
いて、 前記制御部は、 共有命令バス回路構成データを参照して、前記プログラ
マブルデバイスに、前記共有命令バスの回路構成をする
ものであることを特徴とする半導体集積回路。 - 【請求項14】 請求項9記載の半導体集積回路におい
て、 前記制御部は、 前記バスとして、データメモリと前記CPUとの間でデ
ータを転送する共有データバスの回路構成をするもので
あることを特徴とする半導体集積回路。 - 【請求項15】 請求項14記載の半導体集積回路にお
いて、 前記制御部は、 共有データバス回路構成データを参照して、前記プログ
ラマブルデバイスに、前記共有データバスの回路構成を
するものであることを特徴とする半導体集積回路。 - 【請求項16】 請求項9記載の半導体集積回路におい
て、 メモリを備え、 前記制御部は、 前記プログラマブルデバイスに回路構成をされるCPU
のうち、使用頻度が多い順に前記メモリに近い位置に配
置されるように、前記指定されたビット幅および指定さ
れた個数のCPUの回路構成をするものであることを特
徴とする半導体集積回路。 - 【請求項17】 請求項9記載の半導体集積回路におい
て、 メモリを備え、 前記制御部は、 前記プログラマブルデバイスに回路構成をされるCPU
のうち、ビット幅が大きい順に前記メモリに近い位置に
配置されるように、前記指定されたビット幅および指定
された個数のCPUの回路構成をするものであることを
特徴とする半導体集積回路。 - 【請求項18】 請求項9記載の半導体集積回路におい
て、 前記プログラマブルデバイスに回路構成をされたCPU
とは別個に、CPUを備えたことを特徴とする半導体集
積回路。 - 【請求項19】 請求項18記載の半導体集積回路にお
いて、 前記制御部は、 前記指定されたビット幅と当該半導体集積回路に備えら
れたCPUのビット幅とが等しい場合、該ビット幅に対
して指定された個数から当該半導体集積回路に備えられ
たCPUのうち該ビット幅と等しいビット幅のCPUの
個数を減じて、前記プログラマブルデバイスにCPUの
回路構成をするものであることを特徴とする半導体集積
回路。 - 【請求項20】 請求項18記載の半導体集積回路にお
いて、 前記制御部は、 前記指定されたビット幅が当該半導体集積回路に備えら
れたCPUのビット幅と等しいビット幅がなく、前記指
定されたビット幅が当該半導体集積回路に備えられたC
PUのビット幅よりも小さい場合、該指定されたビット
幅に対して指定された個数から当該半導体集積回路に備
えられた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 true JP2003186680A (ja) | 2003-07-04 |
JP3606836B2 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) |
Families Citing this family (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
Also Published As
Publication number | Publication date |
---|---|
JP3606836B2 (ja) | 2005-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2762670B2 (ja) | データ処理装置 | |
US8181054B2 (en) | Arrangement and method for controlling power modes of hardware resources | |
US4626985A (en) | Single-chip microcomputer with internal time-multiplexed address/data/interrupt bus | |
JPS6051134B2 (ja) | デ−タ処理システム | |
JPH0922318A (ja) | プロセッサ及びその制御方法 | |
JP2008097084A (ja) | プロセッサ及びデータ転送ユニット | |
JPH08194563A (ja) | コンピュータシステム | |
US6675289B1 (en) | System and method for executing hybridized code on a dynamically configurable hardware environment | |
JP2004171573A (ja) | 新規な分割命令トランズアクションモデルを使用して構築したコプロセッサ拡張アーキテクチャ | |
EP0158320B1 (en) | Processing apparatus with hierarchical structure | |
JP3467631B2 (ja) | ロジックlsi | |
JPS61194557A (ja) | 制御用lsi | |
JP2008152409A (ja) | 半導体集積回路 | |
Buyuktosunoglu et al. | An oldest-first selection logic implementation for non-compacting issue queues [microprocessor power reduction] | |
JP2010003058A (ja) | 動的再構成回路およびデータ送信制御方法 | |
JP2003186680A (ja) | コンパイラ装置および半導体集積回路 | |
JP4800582B2 (ja) | 演算処理装置 | |
US6993674B2 (en) | System LSI architecture and method for controlling the clock of a data processing system through the use of instructions | |
JP2001092661A (ja) | データ処理装置 | |
JP4838458B2 (ja) | 半導体装置 | |
JP3981373B2 (ja) | 半導体集積回路 | |
CN111176409B (zh) | 一种通用可在线编程的功耗控制电路、系统与方法 | |
WO2012151822A1 (zh) | 一种处理器的环回结构及数据环回处理方法 | |
WO2003090055A1 (en) | Power control of a processor using hardware structures controlled by a compiler with an accumulated instruction profile | |
JPS6158861B2 (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 |