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
Application number
JP2001380413A
Other languages
English (en)
Other versions
JP3606836B2 (ja
Inventor
Kimihiko Aeba
侯彦 饗庭
Shuichi Takayama
秀一 高山
Junichi Yano
純一 矢野
Hisato Yoshida
久人 吉田
Katsuyuki Imamura
勝幸 今村
Junichi Mori
淳一 森
Junya Yamamoto
淳也 山本
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 JP2001380413A priority Critical patent/JP3606836B2/ja
Publication of JP2003186680A publication Critical patent/JP2003186680A/ja
Application granted granted Critical
Publication of JP3606836B2 publication Critical patent/JP3606836B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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

(57)【要約】 【課題】 CPUの使用効率を上げ、半導体集積回路の
消費電力を低減するオブジェクトプログラムを生成する
コンパイラ装置を提供する。さらに、このオブジェクト
プログラムの実行に必要となるさまざまなビット幅のC
PUを、プログラマブルデバイスを備えた半導体集積回
路に構成する。 【解決手段】 コンパイラ装置の抽出手段M1はソース
プログラムの実行に必要なCPUのビット幅および個数
を見積もり、コンパイル手段M2は回路構成すべきCP
Uを決定してこれらCPUを想定したコンパイルを行
い、付加手段M3は想定したCPUの回路構成をするた
めの命令をオブジェクトプログラムに付加する。このよ
うに生成されたオブジェクトプログラムを、CPUとプ
ログラマブルデバイスとが混載された半導体集積回路で
実行することにより、プログラマブルデバイスに必要な
CPUが回路構成され、CPUの使用効率を向上させる
ことができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンパイラ装置お
よび半導体集積回路に関するものであり、特に、プログ
ラマブルデバイスを備えた半導体集積回路の回路構成技
術および該半導体集積回路によって実行されるオブジェ
クトプログラムを生成するコンパイル技術に属する。
【0002】
【従来の技術】コンピュータに所望の処理を行わせるに
は、その処理をプログラムとして記述する必要がある。
通常、このプログラムはC言語などの高級プログラム言
語を用いて記述されるが、CPUは高級プログラム言語
で書かれたソースプログラムを直接、実行することがで
きない。このため、ソースプログラムを、CPUが実行
することのできるオブジェクトプログラムに変換しなけ
ればならない。この変換処理(コンパイル)は、コンパ
イラによって行われる。
【0003】コンパイラは、ソースプログラムのコンパ
イル時に、オブジェクトプログラムを実行するCPUと
して、ソースプログラムの実行に必要とされる最大ビッ
ト幅のものを選択している。たとえば、図17に示され
たC言語のソースプログラムでは、char型、 short型お
よびlong型の3つのデータ型が使用されており、各デー
タ型の処理に必要なビット幅はそれぞれ8ビット、16
ビットおよび32ビットである。したがって、コンパイ
ラは、このソースプログラムの実行に必要なCPUとし
て32ビットCPUを選択する。
【0004】図18は、図17のソースプログラムが3
2ビット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”、“ su
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で表される
メモリに転送する命令である。
【0007】5行目の“ movbu”は、32ビットデータ
レジスタD1の値の上位ビットを切り捨て、8ビットデ
ータにしてからアドレスレジスタA0で表されるメモリ
に転送するバイト転送命令である。同様に、10行目の
“ movhu”は、32ビットデータレジスタD1の値の上
位ビットを切り捨て、16ビットデータにしてからアド
レスレジスタA0で表されるメモリに転送するハーフワ
ード転送命令である。
【0008】
【発明が解決しようとする課題】ソースプログラムによ
っては、そのソースプログラムの実行に必要とされる最
大ビット幅よりも小さなビット幅で実行される命令が頻
繁に出現するようなものがある。このようなソースプロ
グラムにおいて、CPUは、小さなビット幅で実行でき
る命令を、最大ビット幅に拡張して実行する。たとえ
ば、図17のソースプログラム中の“c=a+b;”を実行す
るのに、図18のオブジェクトプログラム中の1および
2行目のゼロ拡張バイト転送命令で8ビットデータを3
2ビットに拡張し、5行目のバイト転送命令で32ビッ
トデータの上位ビットを切り捨てて8ビットデータにし
てからメモリに転送している。同様に、ソースプログラ
ム中の“f=d-e;”を実行するのに、オブジェクトプログ
ラム中の6および7行目のゼロ拡張ハーフワード転送命
令で16ビットデータを32ビットに拡張し、10行目
のハーフワード転送命令で32ビットデータの上位ビッ
トを切り捨てて16ビットデータにしてからメモリに転
送している。
【0009】このように、最大ビット幅のCPUによっ
てソースプログラム中のすべての命令が実行されるので
は、効率的にCPUを使用することができない。さら
に、小さなビット幅の命令を最大ビット幅に拡張するこ
とにより、ゼロ拡張されたデータを載せたバスの部分に
もクロックが供給される。しかし、このゼロ拡張された
部分に供給されるクロックは無駄であり、半導体集積回
路の消費電力の増大を招く原因となる。
【0010】上記の問題に鑑み、本発明は、CPUの使
用効率を上げるとともに、半導体集積回路の消費電力が
低減されるオブジェクトプログラムを生成するコンパイ
ラ装置を実現することを課題とする。さらに、オブジェ
クトプログラムの実行に必要となるさまざまなビット幅
のCPUの回路をFPGA( Field Programmable Gate
Array)などのプログラマブルデバイスを備えた半導体
集積回路に構成することを課題とする。
【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および前記半導体集積回路に備えられたCP
Uによって並列処理が行われるように最適化を行うもの
とする。
【0021】そして、請求項9の発明が講じた手段は、
回路構成が書き換え可能なプログラマブルデバイスを備
えた半導体集積回路であって、前記プログラマブルデバ
イスに、指定されたビット幅および指定された個数のC
PUならびに該CPUに接続されるバスの回路構成をす
る制御部を備えるものとする。
【0022】請求項9の発明によると、たとえば、オブ
ジェクトプログラムに指定されたビット幅および個数の
CPUを、半導体集積回路が備えるプログラマブルデバ
イスに回路構成をし、各命令の実行に必要なビット幅に
応じたビット幅のCPUによってその命令が実行され
る。これにより、ゼロ拡張命令などを実行することによ
る無駄なバス部分へのクロック供給がなくなり、半導体
集積回路の消費電力を低減することができる。
【0023】請求項10の発明では、前記請求項9の制
御部は、CPU回路構成データを参照して、前記プログ
ラマブルデバイスに、指定されたビット幅および指定さ
れた個数のCPUの回路構成をするものとする。
【0024】請求項11の発明では、前記請求項10の
CPU回路構成データは、ビット幅でパラメータ化され
ているものとする。
【0025】請求項12の発明では、前記請求項9の制
御部は、前記バスとして、命令メモリが保持する命令を
前記CPUに供給する共有命令バスの回路構成をするも
のとする。
【0026】請求項13の発明では、前記請求項12の
制御部は、共有命令バス回路構成データを参照して、前
記プログラマブルデバイスに、前記共有命令バスの回路
構成をするものとする。
【0027】請求項14の発明では、前記請求項9の制
御部は、前記バスとして、データメモリと前記CPUと
の間でデータを転送する共有データバスの回路構成をす
るものとする。
【0028】請求項15の発明では、前記請求項14の
制御部は、共有データバス回路構成データを参照して、
前記プログラマブルデバイスに、前記共有データバスの
回路構成をするものとする。
【0029】請求項16の発明では、前記請求項9の半
導体集積回路はメモリを備えており、制御部は、前記プ
ログラマブルデバイスに回路構成をされるCPUのう
ち、使用頻度が多い順に前記メモリに近い位置に配置さ
れるように、前記指定されたビット幅および指定された
個数のCPUの回路構成をするものとする。
【0030】請求項17の発明では、前記請求項9の半
導体集積回路はメモリを備えており、制御部は、前記プ
ログラマブルデバイスに回路構成をされるCPUのう
ち、ビット幅が大きい順に前記メモリに近い位置に配置
されるように、前記指定されたビット幅および指定され
た個数のCPUの回路構成をするものとする。
【0031】また、請求項18の発明が講じた手段は、
前記請求項9の半導体集積回路は、前記プログラマブル
デバイスに回路構成をされたCPUとは別個に、CPU
を備えているものとする。
【0032】請求項18の発明によると、CPUを備え
た半導体集積回路においても、たとえば、オブジェクト
プログラムに指定されたビット幅および個数のCPU
を、半導体集積回路が備えるプログラマブルデバイスに
回路構成をし、各命令の実行に必要なビット幅に応じた
ビット幅のCPUによってその命令が実行される。これ
により、ゼロ拡張命令などを実行することによる無駄な
バス部分へのクロック供給がなくなり、半導体集積回路
の消費電力を低減することができる。
【0033】請求項19の発明では、前記請求項18の
制御部は、前記指定されたビット幅と半導体集積回路に
備えられたCPUのビット幅とが等しい場合、該ビット
幅に対して指定された個数から半導体集積回路に備えら
れたCPUのうち該ビット幅と等しいビット幅のCPU
の個数を減じて、前記プログラマブルデバイスにCPU
の回路構成をするものとする。
【0034】請求項20の発明では、前記請求項18の
制御部は、前記指定されたビット幅が半導体集積回路に
備えられたCPUのビット幅と等しいビット幅がなく、
前記指定されたビット幅が当該半導体集積回路に備えら
れたCPUのビット幅よりも小さい場合、該指定された
ビット幅に対して指定された個数から半導体集積回路に
備えられたCPUの個数を減じて、前記プログラマブル
デバイスにCPUの回路構成をするものとする。
【0035】
【発明の実施の形態】以下、図面を用いて、本発明の実
施形態について説明する。
【0036】(第1の実施形態)図1は、本発明の第1
の実施形態に係るコンパイラ装置の構成を示す。本実施
形態に係るコンパイラ装置は、プログラマブルデバイス
を備えた半導体集積回路によって実行されるオブジェク
トプログラムを生成するものであり、ソースプログラム
の実行に必要なCPUのビット幅および個数を見積もる
抽出手段M1と、プログラマブルデバイスに回路構成を
されるべきCPUのビット幅および個数を決定してこれ
らCPUによって実行されるオブジェクトプログラムを
生成するコンパイル手段M2と、CPUの回路をプログ
ラマブルデバイスに構成するための命令をオブジェクト
プログラムに付加する付加手段M3とを備えている。以
下、本実施形態に係るコンパイラ装置が行うコンパイル
処理について、図2のフローチャートを用いて説明す
る。
【0037】本実施形態に係るコンパイラ装置はコンパ
イルを開始すると、ステップS1において、ソースプロ
グラム全体にわたり、ソースプログラム中に記述された
命令が実行されるときのビット幅の出現回数をカウント
する。このとき、データの依存関係についても解析す
る。そして、データの依存関係がある命令のビット幅に
ついては出現回数を減じて、ソースプログラムの実行に
必要なCPUのビット幅およびそのビット幅ごとの個数
を見積もる。以上のステップS1は、本実施形態に係る
コンパイラ装置の抽出手段M1によって実行される。
【0038】次に、ステップS2において、抽出手段M
1によってカウントされたビット幅の出現回数と所定値
とを比較し、出現回数が所定値以上のビット幅(以下、
「必要ビット幅」)を抽出する。ここで、必要ビット幅
を抽出するとしたのは、出現回数が少ないビット幅のC
PUはプログラマブルデバイスに回路構成をされても無
駄が多いため、このようなCPUは回路構成をされない
ようにするためである。たとえば、あるソースプログラ
ムにおいて、16ビットおよび8ビットのビット幅の出
現回数がそれぞれ18回および2回であるとき、出現回
数が少ない8ビットのCPUは回路構成をされず、16
ビットのCPUのみが回路構成をされるようにする。な
お、本実施形態では、ソースプログラム全体に対するビ
ット幅の出現割合と所定の閾値とを比較するものとす
る。そして、必要ビット幅が1つの場合はステップS3
に進み、複数の場合はステップS4に進む。
【0039】ステップS3では、必要ビット幅のCPU
について抽出手段M1によって見積もられた個数が1個
である場合、必要ビット幅のCPUが1個だけプログラ
マブルデバイスに回路構成をされるものとしてステップ
S9に進む。一方、必要ビット幅のCPUの個数が複数
個である場合、プログラマブルデバイスの使用可能領域
に収まる個数のCPUが回路構成をされるものとしてス
テップS10に進む。
【0040】ステップS4では、必要ビット幅に対する
必要な個数のCPUがすべて回路構成をされたときの回
路面積SCAを計算し、プログラマブルデバイスの使用
可能領域の回路面積SFと比較する。そして、SF≧S
CAの場合は、必要ビット幅のCPUがすべて回路構成
をされるものとしてステップS8に進み、SF<SCA
の場合はステップS5に進む。
【0041】ステップS5では、必要ビット幅のCPU
がその必要ビット幅ごとに1個だけ回路構成をされるも
のとして、この場合に要する回路面積SC1を計算す
る。そして、回路面積SC1とプログラマブルデバイス
の使用可能領域の回路面積SFとの差(SF−SC1)
と、必要ビット幅のCPUのうち回路構成に要する回路
面積が最小であるものの回路面積SSとを比較する。つ
まり、必要ビット幅ごとに1個のCPUの回路構成を
し、なおも残存するプログラマブルデバイスの使用可能
領域に別の必要ビット幅のCPUが追加して回路構成を
され得るか否かを判断する。そして、SF−SC1≧S
Sの場合はステップS6に進み、SF−SC1<SSの
場合は、複数ビット幅のCPUがビット幅ごとに1個、
プログラマブルデバイスに回路構成をされるものとして
ステップS7に進む。
【0042】ステップS6では、必要ビット幅のCPU
がビット幅ごとに1個、回路構成をされ、さらに、なお
も残存するプログラマブルデバイスの使用可能領域に別
の必要ビット幅のCPUが追加して回路構成をされるよ
うに、必要ビット幅のCPUの個数を見積もり直す処理
が行われる。この処理については後述する。
【0043】ステップS7では、複数ビット幅のCPU
が、ビット幅ごとに1個、プログラマブルデバイスに回
路構成をされると想定して、これらCPUによって実行
されるオブジェクトプログラムを生成する。このとき、
ソースプログラム中に記述された命令の実行に要するビ
ット幅に応じて、各命令に各ビット幅のCPUを割り当
てるようにコンパイルする。
【0044】ステップS8では、複数ビット幅のCPU
が、ビット幅ごとに複数個、プログラマブルデバイスに
回路構成をされると想定して、これらCPUによって実
行されるオブジェクトプログラムを生成する。このと
き、ソースプログラム中に記述された命令の実行に要す
るビット幅に応じて、各命令に各ビット幅のCPUを割
り当てるとともに、各命令が並列に実行されるように最
適化を行ってコンパイルする。
【0045】ステップS9では、単一ビット幅のCPU
が1個、プログラマブルデバイスに回路構成をされると
想定して、このCPUによって実行されるオブジェクト
プログラムを生成する。
【0046】ステップS10では、単一ビット幅のCP
Uが1または複数個、プログラマブルデバイスに回路構
成をされると想定して、これらCPUによって実行され
るオブジェクトプログラムを生成する。このとき、ソー
スプログラム中に記述された各命令が並列に実行される
ように最適化を行ってコンパイルする。
【0047】以上、ステップS2からステップS10ま
での処理は、本実施形態に係るコンパイラ装置のコンパ
イル手段M2によって実行される。
【0048】最後に、ステップS11では、回路構成を
されると想定したCPUの回路をプログラマブルデバイ
スに構成するための命令をオブジェクトプログラム付加
する。まず、コンパイル手段M2によって生成されたオ
ブジェクトプログラムを解析して、各ビット幅のCPU
の使用頻度を調べる。そして、付加する命令において、
ビット幅を表す数字が使用頻度の多い順に、先に現れる
ようにする。また、使用頻度が同一の場合は、ビット幅
の大きい順に、先に現れるようにする。そして、コンパ
イル手段M2によって生成されたオブジェクトプログラ
ムに、この命令を付加して、すべての処理を終了する。
このステップS11は、本実施形態に係るコンパイラ装
置の付加手段M3によって実行される。
【0049】次に、ステップS6における処理につい
て、図3のフローチャートを用いて説明する。
【0050】ステップS61では、プログラマブルデバ
イスに残存する使用可能領域の回路面積(SF−SC
1)と、必要ビット幅のCPUのうち回路構成に要する
回路面積が最大であるものの回路面積SBとを比較す
る。つまり、プログラマブルデバイスの残存領域に必要
バス幅のCPUのうち、任意のものが追加して回路構成
をされ得るか否かを判断する。そして、SF−SC1≧
SBの場合はステップS62に進み、SF−SC1<S
Bの場合はステップS64に進む。
【0051】ステップS62では、出現回数が最多であ
る必要ビット幅のCPUが追加して回路構成可能である
として、この必要ビット幅のCPUの個数を1つ増や
す。そして、この追加されたCPUが要する回路面積を
回路面積SC1に加えて新たな回路面積SC1を計算
し、ステップS63に進む。
【0052】ステップS63では、プログラマブルデバ
イスに残存する使用可能領域の回路面積(SF−SC
1)と、必要ビット幅のCPUのうち回路構成に要する
回路面積が最小であるものの回路面積SSとを比較す
る。つまり、なおも残存するプログラマブルデバイスの
使用可能領域に別の必要ビット幅のCPUが追加して回
路構成可能か否かを判断する。そして、SF−SC1≧
SSの場合は、なおもCPUが追加可能であるとして、
ステップS61に戻ってCPUの個数をさらに見積もり
直す。一方、SF−SC1<SSの場合は、これ以上の
CPUを追加できないため、このときの選択されている
ビット幅およびそのビット幅ごとの個数のCPUが、プ
ログラマブルデバイスに回路構成をされるものとしてス
テップS7に進む。
【0053】ステップS64では、追加されるCPUと
して、プログラマブルデバイスに残存する使用可能領域
の回路面積(SF−SC1)に収まる回路面積であり、
かつ、出現回数が最多のCPUを選択する。そして、こ
のとき選択されているビット幅およびそのビット幅ごと
の個数のCPUが、プログラマブルデバイスに回路構成
をされるものとしてステップS7に進む。
【0054】以上、本実施形態に係るコンパイラ装置の
処理の流れを説明した。次に、図4に示されたC言語プ
ログラムを例に、本実施形態に係るコンパイラ装置のコ
ンパイル処理について具体的に説明する。なお、ソース
プログラム中に記述された各命令に対するコンパイル処
理については説明を省略し、オブジェクトプログラムの
実行に必要なCPUを決定する処理およびこれらCPU
の回路を構成するための命令を付加する処理について詳
しく述べる。
【0055】コンパイラ装置はコンパイルを開始する
と、ステップ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個で
あると見積もる。
【0056】次に、ステップS2に進み、各ビット幅の
出現割合をチェックする。ここでは、閾値を1/4とす
る。8ビットの出現割合は2/3および16ビットの出
現割合は1/3であり、どちらも閾値以上なので、必要
ビット幅として8ビットおよび16ビットの2種類を抽
出し、ステップS4に進む。
【0057】ステップS4に進むと、抽出されたビット
幅のCPUがすべてプログラマブルデバイスに回路構成
可能か否かを判断する。ここで、プログラマブルデバイ
スの使用可能な領域の回路面積SFを10、8ビットC
PUの回路構成に要する回路面積を2、16ビットCP
Uの回路構成に要する回路面積を4とする。すべてのC
PUを回路構成するのに要する回路面積SCAは2×2
+4=8となり、SF≧SCAなので、すべてのCPU
の回路を構成するものとしてステップS8に進む。
【0058】ステップS8に進むと、8ビットCPUが
2個および16ビットCPUが1個、プログラマブルデ
バイスに回路構成されると想定して、これら3個のCP
Uによって実行されるオブジェクトプログラムを生成
し、ステップS11に進む。なお、ここで生成されるの
は、図5に示されたオブジェクトプログラムの2行目以
降となる。
【0059】オブジェクトプログラムは、ソースプログ
ラム中に記述された命令の実行に要するビット幅に応じ
て、各命令に各ビット幅のCPUを割り当てるように生
成される。図5のオブジェクトプログラムの2行目以降
に記述された命令の末尾に付された数字は、その命令が
その数字のビット幅のCPUによって実行されることを
示している。また、図4のソースプログラムに対して、
2個の8ビットCPUが回路構成をされるため、この2
個のCPUで並列処理が行われるように最適化されたオ
ブジェクトプログラムが生成される。図5のオブジェク
トプログラムでは、2行目以降の命令の末尾に付された
数字の後に、さらに“a”や“b”といった記号を付し
て、その命令が実行されるべきCPUが指定されてい
る。
【0060】そして、ステップS11に進むと、コンパ
イル手段M2によって生成されたオブジェクトプログラ
ムを解析して、各ビット幅のCPUの使用頻度を調べ
る。図5のオブジェクトプログラムでは、どのビット幅
のCPUも使用頻度は5回であるので、ビット幅の大き
い順に、16ビット、8ビット、8ビットとして bit命
令に現れるようにする。この bit命令は、プログラマブ
ルデバイスにCPUの回路を構成するための命令であ
る。そして、図5のオブジェクトプログラムの1行目に
示された“bit 16,8,8”を付加して、処理を終了する。
【0061】以上は、データの依存関係がないソースプ
ログラムを例にコンパイル処理の説明をした。次に、デ
ータの依存関係があるソースプログラムのコンパイル処
理について、図6のC言語プログラムを例に説明をす
る。なお、先ほどと同様に、ソースプログラム中に記述
された各命令に対するコンパイル処理については説明を
省略し、オブジェクトプログラムの実行に必要なCPU
を決定する処理およびこれらCPUの回路を構成するた
めの命令を付加する処理について詳しく述べる。
【0062】コンパイラ装置はコンパイルを開始する
と、ステップ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行目以降が生成される。
【0063】最後に、ステップS11に進み、コンパイ
ル手段M2によって生成されたオブジェクトプログラム
を解析して、各ビット幅のCPUの使用頻度を調べる。
図7のオブジェクトプログラムでは、8ビットCPUの
使用頻度は9回、16ビットCPUは5回であるので、
使用頻度の多い順に、8ビット、16ビットとして bit
命令に現れるようにする。そして、図7のオブジェクト
プログラムの1行目に示された“bit 8,16”を付加し
て、処理を終了する。
【0064】次に、本実施形態に係る半導体集積回路に
ついて、図8を用いて説明する。本実施形態に係る半導
体集積回路1は、上記の bit命令が付加されたオブジェ
クトプログラム、たとえば、本実施形態に係るコンパイ
ラ装置によって生成されたオブジェクトプログラムを実
行することができる。
【0065】本実施形態に係る半導体集積回路1は、F
PGA11と、FPGA11にさまざまな回路を構成す
る制御部12と、FPGA11に構成されるさまざまな
回路の回路構成データを格納している構成データメモリ
13と、半導体集積回路1によって実行される命令を格
納する命令メモリ15と、データメモリ16とを備えて
いる。なお、本実施形態で用いる回路構成データは、F
PGAに回路を構成するための一般的なデータと同様の
ものである。
【0066】FPGA11には、1または複数個(図8
では4個)のCPU14と、命令メモリ15からCPU
14に命令を供給するための共有命令バス17と、CP
U14とデータメモリ16との間でデータを転送するた
めの共有データバス18と、共有データバス18の使用
に関してCPU14を調停するバス調停回路19とが回
路構成をされている。
【0067】制御部12は、指定されたビット幅および
指定された個数のCPU14の回路をFPGA11に構
成する機能と、共有命令バス17の回路をFPGA11
に構成する機能と、共有データバス18の回路をFPG
A11に構成する機能と、バス調停回路19の回路をF
PGA11に構成する機能とを有する。なお、本実施形
態におけるこれら回路の構成は、一般的な回路構成技術
によって行うものとする。
【0068】構成データメモリ13は、FPGA11に
回路構成をされる8ビットCPU、16ビットCPU、
32ビットCPUなどのさまざまなビット幅のCPUの
回路構成データと、さまざまなビット幅のCPUに接続
することのできる共有命令バスの回路構成データおよび
共有データバスの回路構成データとを格納している。
【0069】CPU14は、データレジスタおよびアド
レスレジスタを有し、独立して命令を実行することがで
きる。したがって、これらCPU14によって並列処理
が行われる。
【0070】共有命令バス17は、すべてのCPU14
と命令メモリ15とに接続するように回路構成をされ、
命令メモリ15から命令を受け取り、この命令がどのC
PU14によって実行されるのかを判別する機能と、各
命令をその命令が実行されるCPUに供給する機能とを
有する。
【0071】共有データバス18は、すべてのCPU1
4とデータメモリ16とに接続するように回路構成をさ
れ、CPU14とデータメモリ16との間のデータ転送
命令に関して、CPU14からデータメモリ16に指定
アドレスを供給する機能と、データメモリ16からCP
U14にデータを供給する機能とを有する。
【0072】共有データバス18は複数のCPU14に
よって共有されているため、複数のCPU14によって
同時にアクセスされる可能性がある。しかし、共有デー
タバス18は、一度に1個のCPU14のデータしか扱
えないため、CPU14間で共有データバス18を使用
するタイミングを調整しなければならない。この調整を
行うのがバス調停回路19である。
【0073】バス調停回路19は、共有データバス18
の使用状況を判断するためのレジスタを有する。このレ
ジスタは、共有データバス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を使用できるよ
うにする。
【0074】次に、半導体集積回路1によって図5のオ
ブジェクトプログラムが実行されるときの動作について
説明する。なお、オブジェクトプログラム中の個々の命
令に対する動作についての説明は省略し、 bit命令に対
する動作について説明する。
【0075】半導体集積回路1によって図5のオブジェ
クトプログラムが実行されると、まず、1行目の“bit
16,8,8”が命令メモリ15から制御部12に送られる。
制御部12はこの bit命令を受けると、構成データメモ
リ13から、16ビットおよび8ビットのCPUの回路
構成データ、および16ビットおよび8ビットのCPU
に接続するための共有命令バスおよび共有データバスの
回路構成データを読み込み、FPGA11にこれらの回
路構成をする。
【0076】図9は、制御部12が bit命令を実行した
結果、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の
みに接続される。
【0077】図5のオブジェクトプログラムの2行目以
降に記述された命令は、共有命令バス17によって、そ
の命令が実行されるべきCPUに供給される。図5のオ
ブジェクトプログラムにおいて、命令の末尾に付された
“16”はCPU14−A、“8a”はCPU14−B、そ
して“8b”はCPU14−Cでそれぞれ実行されること
を表す。CPU14−A,14−B,14−Cは命令を
受けると、それぞれ独立してその命令を実行するが、こ
の実行については説明を省略する。
【0078】以上、本実施形態によると、コンパイル時
に、ソースプログラム中に記述された命令の実行に要す
るビット幅に応じてCPUのビット幅を選択し、その選
択されたビット幅のCPUによってその命令が実行され
るようにすることにより、CPUを効率的に使用するオ
ブジェクトプログラムを生成することができる。
【0079】また、半導体集積回路1のFPGA11に
回路構成をされるCPU14を、使用頻度が多い順にメ
モリに近い位置に配置することにより、使用頻度の多い
共有データバス18の配線長を短くすることができ、処
理の高速化が可能となる。さらに、ビット幅が大きい順
にメモリに近い位置に配置することにより、共有データ
バス18の無駄な配線を削減することができ、FPGA
11の回路資源を有効に活用することができる。また、
ソースプログラムの実行に必要なビット幅のCPU14
をFPGA11に回路構成をすることにより、小さなビ
ット幅の命令を最大ビット幅に拡張して実行することが
なくなり、拡張されたバスの部分に無駄に供給されるク
ロックを削減することができ、半導体集積回路1の消費
電力を低減することができる。
【0080】なお、構成データメモリ13、命令メモリ
15およびデータメモリ16は半導体集積回路1に備え
られるとしたが、これらは半導体集積回路1の外部にあ
るものでもよい。また、構成データメモリ13は、さま
ざまなビット幅のCPU14の回路構成データ、共有命
令バス17の回路構成データおよび共有データバス18
の回路構成データを格納しているとしたが、これら回路
構成データをビット幅でパラメータ化して格納していて
もよい。この場合、制御部12から指定されたビット幅
をパラメータとして、指定されたビット幅のCPU1
4、共有命令バス17および共有データバス18の回路
構成データを生成して制御部12に送る機能を有する。
【0081】(第2の実施形態)図1は、本発明の第2
の実施形態に係るコンパイラ装置の構成を示す。本実施
形態に係るコンパイラ装置は、CPU(以下、「メイン
CPU」)とプログラマブルデバイスとが混載された半
導体集積回路によって実行されるオブジェクトプログラ
ムを生成するものであり、ソースプログラムの実行に必
要なCPUのビット幅および個数を見積もる抽出手段M
1と、プログラマブルデバイスに回路構成をされるべき
CPUのビット幅および個数を決定してこれらCPUお
よびメインCPUによって実行されるオブジェクトプロ
グラムを生成するコンパイル手段M2Aと、プログラマ
ブルデバイスにCPUの回路を構成するための命令をオ
ブジェクトプログラムに付加する付加手段M3とを備え
ている。以下、本実施形態に係るコンパイラ装置が行う
コンパイル処理について、図10のフローチャートを用
いて説明する。
【0082】コンパイル処理が開始されると、まず、抽
出手段M1によってステップS1の処理が実行される。
このステップS1は、第1の実施形態と同様であるので
説明を省略する。続くステップS2も、第1の実施形態
と同様であるので説明を省略する。ここで、ステップS
2において、出現回数が所定値以上であるとして抽出さ
れたビット幅(以下、「必要ビット幅」)の中には、メ
インCPUのビット幅と等しいビット幅があるとする。
【0083】ステップS3Aでは、必要ビット幅として
メインCPUのビット幅を選択し、このビット幅のCP
Uについて抽出手段M1によって見積もられた個数が1
個である場合、メインCPU1個によって実行されるオ
ブジェクトプログラムを生成するためにステップS9A
に進む。一方、メインCPUと同一ビット幅のCPUの
個数が複数個である場合、この個数からメインCPUの
個数を減じ、さらに、プログラマブルデバイスの使用可
能領域に収まる個数のCPUが回路構成をされるものと
してステップS10Aに進む。
【0084】ステップS4Aでは、メインCPUを除く
必要ビット幅に対する必要な個数のCPUがすべて回路
構成をされたときの回路面積SCAを計算し、プログラ
マブルデバイスの使用可能領域の回路面積SFと比較す
る。そして、SF≧SCAの場合は、メインCPUを除
く必要ビット幅のCPUがすべて回路構成をされるもの
としてステップS8Aに進み、SF<SCAの場合はス
テップS5Aに進む。
【0085】ステップS5Aでは、メインCPUのビッ
ト幅を除く必要ビット幅の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に進
む。
【0086】ステップS6では、メインCPUのビット
幅を除く必要ビット幅のCPUがビット幅ごとに1個、
回路構成され、さらに、なおも残存するプログラマブル
デバイスの使用可能領域に別の必要ビット幅のCPUが
追加して回路構成をされるように、必要ビット幅のCP
Uの個数を見積もり直す処理が行われる。この処理は、
第1の実施形態と同様であるので説明を省略する。
【0087】ステップS7Aでは、メインCPUのビッ
ト幅を除く複数ビット幅のCPUが、ビット幅ごとに1
個、プログラマブルデバイスに回路構成をされると想定
して、これら回路構成をされるCPUおよびメインCP
Uによって実行されるオブジェクトプログラムを生成す
る。このとき、ソースプログラム中に記述された命令の
実行に要するビット幅に応じて、各命令に各ビット幅の
CPUを割り当てるようにコンパイルする。
【0088】ステップS8Aでは、メインCPUを除く
複数ビット幅のCPUが、ビット幅ごとに1または複数
個、プログラマブルデバイスに回路構成をされると想定
して、これら回路構成をされるCPUおよびメインCP
Uによって実行されるオブジェクトプログラムを生成す
る。このとき、ソースプログラム中に記述された命令の
実行に要するビット幅に応じて、各命令に各ビット幅の
CPUを割り当てるようにするとともに、各命令が並列
に実行されるように最適化を行ってコンパイルする。さ
らに、メインCPUと同一のビット幅のCPUが回路構
成をされる場合、メインCPUを優先的に使用するよう
に最適化を行う。
【0089】ステップS9Aでは、メインCPU1個に
よって実行されるオブジェクトプログラムを生成する。
【0090】ステップS10Aでは、メインCPUのビ
ット幅のCPUが複数個、プログラマブルデバイスに回
路構成をされると想定して、これら回路構成をされるC
PUおよびメインCPUによって実行されるオブジェク
トプログラムを生成する。このとき、メインCPUを優
先的に使用し、ソースプログラム中に記述された各命令
が並列に実行されるように最適化を行ってコンパイルす
る。
【0091】以上、ステップS2からステップS10A
までの処理は、本実施形態に係るコンパイラ装置のコン
パイル手段M2Aによって実行される。
【0092】最後に、付加手段M3によってステップS
11の処理が実行される。このステップS11は、第1
の実施形態と同様であるので説明を省略する。
【0093】以上、本実施形態に係るコンパイラ装置の
処理の流れを説明した。次に、図11に示されたC言語
プログラムを例に、本実施形態に係るコンパイラ装置の
コンパイル処理について具体的に説明する。なお、ソー
スプログラム中に記述された各処理に対するコンパイル
処理については説明を省略し、オブジェクトプログラム
の実行に必要なCPUを決定する処理およびこれらCP
Uの回路構成のための命令を付加する処理について詳し
く述べる。また、生成されるオブジェクトプログラムを
実行する半導体集積回路は、メインCPUとして32ビ
ットCPUを備えているとする。
【0094】コンパイラ装置はコンパイルを開始する
と、ステップ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個であると見積もる。
【0095】次に、ステップS2に進み、各ビット幅の
出現割合をチェックする。ここでは、閾値を1/4とす
る。8ビットの出現割合は2/4、16ビットの出現割
合は1/4および32ビットの出現割合は1/4であ
り、いずれも閾値以上であるので、必要ビット幅として
8ビット、16ビットおよび32ビットの3種類を抽出
し、ステップS4Aに進む。
【0096】ステップ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に進
む。
【0097】ステップS8Aに進むと、8ビットCPU
が2個および16ビットCPUが1個、プログラマブル
デバイスに回路構成されると想定して、これら3個のC
PUおよびメインCPUによって実行されるオブジェク
トプログラムを生成し、ステップST11に進む。な
お、ここで生成されるのは、図12に示されたオブジェ
クトプログラムの2行目以降となる。
【0098】オブジェクトプログラムは、ソースプログ
ラム中に記述された命令の実行に要するビット幅に応じ
て、各命令に各ビット幅のCPUを割り当てるように生
成される。図12のオブジェクトプログラムの2行目以
降に記述された命令の末尾に付された数字は、その命令
がその数字のビット幅のCPUによって実行されること
を示している。ただし、メインCPUによって実行され
る命令には数字は付されない。また、図11のソースプ
ログラムに対して、2個の8ビットCPUが回路構成を
されるため、この2個のCPUで並列処理が行われるよ
うに最適化されたオブジェクトプログラムが生成され
る。図12のオブジェクトプログラムでは、2行目以降
の命令の末尾に付された数字の後に、さらに“a”や
“b”といった記号を付して、その命令が実行されるべ
きCPUが指定されている。
【0099】そして、ステップS11に進むと、コンパ
イル手段M2Aによって生成されたオブジェクトプログ
ラムを解析して、プログラマブルデバイスに回路構成を
されるべきCPUの使用頻度を調べる。図12のオブジ
ェクトプログラムでは、どのビット幅のCPUも使用頻
度は5回であるので、ビット幅の大きい順に、16ビッ
ト、8ビット、8ビットとして bit命令に現れるように
する。この bit命令は、プログラマブルデバイスにCP
Uの回路を構成するための命令である。そして、図12
のオブジェクトプログラムの1行目に示された“bit 1
6,8,8”を付加して、処理を終了する。
【0100】以上は、データの依存関係がないソースプ
ログラムを例にコンパイル処理の説明をした。次に、デ
ータの依存関係があるソースプログラムのコンパイル処
理について、図13のC言語プログラムを例に説明をす
る。
【0101】コンパイラ装置はコンパイルを開始する
と、ステップ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行目以降が生成される。
【0102】最後に、ステップS11に進み、コンパイ
ル手段M2Aによって生成されたオブジェクトプログラ
ムを解析して、プログラマブルデバイスに回路構成をさ
れるべきCPUの使用頻度を調べる。図14のオブジェ
クトプログラムでは、8ビットCPUの使用頻度は9
回、16ビットCPUは5回であるので、使用頻度の多
い順に、8ビット、16ビットとして bit命令に現れる
ようにする。そして、図14のオブジェクトプログラム
の1行目に示された“bit 8,16”を付加して、処理を終
了する。
【0103】次に、本実施形態に係る半導体集積回路に
ついて、図15を用いて説明する。本実施形態に係る半
導体集積回路1Aは、上記の bit命令が付加されたオブ
ジェクトプログラム、たとえば、本実施形態に係るコン
パイラ装置によって生成されたオブジェクトプログラム
を実行することができる。
【0104】本実施形態に係る半導体集積回路1Aは、
メインCPU10と、FPGA11と、FPGA11に
さまざまな回路を構成する制御部12と、FPGA11
に構成されるさまざまな回路の回路構成データを格納し
ている構成データメモリ13と、半導体集積回路1Aに
よって実行される命令を格納する命令メモリ15と、デ
ータメモリ16と、CPU10およびFPGA11に回
路構成をされたCPU14に命令を供給するための共有
命令バス17と、CPU10およびFPGA11に回路
構成をされたCPU14とデータメモリ16との間でデ
ータを転送するための共有データバス18とを備える。
【0105】FPGA11には、1または複数(図15
では4個)のCPU14と、共有データバス18の使用
に関してCPU10およびCPU14を調停するバス調
停回路19と、上記の共有命令バス17とCPU14と
を接続するための延長部分と、上記の共有データバス1
8とCPU14とを接続するための延長部分とが回路構
成をされている。
【0106】なお、本実施形態に係る半導体集積回路1
Aの各構成要素については、第1の実施形態と同様であ
るので説明を省略する。
【0107】次に、半導体集積回路1Aによって図12
のオブジェクトプログラムが実行されるときの動作につ
いて説明する。ここで、メインCPU10は32ビット
CPUであるとする。なお、オブジェクトプログラム中
の個々の命令に対する動作ついての説明は省略し、 bit
命令に対する動作について説明する。
【0108】半導体集積回路1Aによって図12のオブ
ジェクトプログラムが実行されると、まず、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の回路構成をするようにす
る。
【0109】図16は、制御部12が bit命令を実行し
た結果、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のみ
に接続される。
【0110】図12のオブジェクトプログラムの2行目
以降に記述された命令は、共有命令バス17によって、
その命令が実行されるべきCPUに供給される。図12
のオブジェクトプログラムにおいて、命令の末尾に付さ
れた“16”はCPU14−A、“8a”はCPU14−
B、“8b”はCPU14−C、そして何も付されていな
いものはメインCPU10でそれぞれ実行されることを
表す。CPU10およびCPU14−A,14−B,1
4−Cは命令を受けると、それぞれ独立してその命令を
実行するが、各命令の実行については説明を省略する。
【0111】以上、本実施形態によると、コンパイル時
に、ソースプログラム中に記述された命令の実行に要す
るビット幅に応じてCPUのビット幅を選択し、その選
択されたビット幅のCPUによってその処理が実行され
るようにすることにより、CPUを効率的に使用するオ
ブジェクトプログラムを生成することができる。
【0112】また、半導体集積回路1Aが元来備えてい
るCPU10を優先的に使用するようにコンパイルする
ことにより、半導体集積回路1Aに備えられたCPU1
0を効率的に使用することができ、高速に処理されるオ
ブジェクトプログラムを作成することができる。また、
FPGA11に回路構成をされるCPU14を、使用頻
度が多い順にメモリに近い位置に配置することにより、
使用頻度の多い共有データバス18の配線長を短くする
ことができ、処理の高速化が可能となる。さらに、ビッ
ト幅が大きい順にメモリに近い位置に配置することによ
り、共有データバス18の無駄な配線を削減することが
でき、FPGA11の回路資源を有効に活用することが
できる。また、ソースプログラムの実行に必要なCPU
でメインCPU10を除くCPU14をFPGA11に
回路構成をすることにより、小さなビット幅の命令を最
大ビット幅に拡張して実行することがなくなり、拡張さ
れたバスの部分に無駄に供給されるクロックを削減する
ことができ、半導体集積回路1Aの消費電力を低減する
ことができる。
【0113】なお、コンパイラ手段M2Aは必要ビット
幅の中にメインCPUのビット幅と等しいビット幅があ
るとしているが、必要ビット幅の中にメインCPUのビ
ット幅がなくてもよい。そのとき、必要ビット幅がメイ
ンCPUのビット幅より小さいものがある場合、必要ビ
ット幅の中で一番大きなビット幅のCPUをメインCP
Uに割り当てる一方、必要ビット幅がメインCPUのビ
ット幅よりすべて大きい場合、メインCPUを使用せ
ず、必要ビット幅のCPUをプログラマブルデバイスで
回路構成する。
【0114】また、構成データメモリ13、命令メモリ
15およびデータメモリ16は半導体集積回路1Aに備
えられるとしたが、これらは半導体集積回路1Aの外部
にあってもよい。また、構成データメモリ13は、さま
ざまなバス幅のCPU14の回路構成データ、共有命令
バス17の回路構成データおよび共有データバス18の
回路構成データを格納しているとしたが、これら回路構
成データをビット幅でパラメータ化して格納していても
よい。この場合、制御部12から指定されたビット幅を
パラメータとして、指定されたビット幅のCPU14、
共有命令バス17および共有データバス18の回路構成
データを生成して制御部12に送る機能を有する。
【0115】
【発明の効果】以上、本発明によると、オブジェクトプ
ログラムの実行時に、半導体集積回路に備えられたFP
GAなどのプログラマブルデバイスにさまざまなビット
幅のCPUの回路が、適宜、構成されるため、ゼロ拡張
命令などを実行することによる無駄なバス部分へのクロ
ック供給がなくなり、半導体集積回路の消費電力を低減
することができる。また、ソースプログラムを、これら
CPUによって実行されるようにコンパイルすることに
より、CPUの使用効率を上げ、かつ、処理速度が速く
なるようなオブジェクトプログラムの生成が可能とな
る。
【0116】なお、本発明に係るコンパイラ装置は、コ
ンパイラプログラムを、たとえば、記録媒体を介して、
コンピュータにインストールすることによって、実現す
ることができる。
【図面の簡単な説明】
【図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 バス調停回路
───────────────────────────────────────────────────── フロントページの続き (72)発明者 矢野 純一 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 (72)発明者 吉田 久人 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 (72)発明者 今村 勝幸 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 (72)発明者 森 淳一 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 (72)発明者 山本 淳也 大阪府門真市大字門真1006番地 松下シス テムテクノ株式会社内 Fターム(参考) 5B081 AA10 CC21 5J042 BA01 BA11 DA02 DA04

Claims (20)

    【特許請求の範囲】
  1. 【請求項1】 ソースプログラムから、回路構成が書き
    換え可能なプログラマブルデバイスを備えた半導体集積
    回路によって実行されるオブジェクトプログラムを生成
    するコンパイラ装置であって、 前記ソースプログラムの実行に必要なCPUのビット幅
    および個数を見積もる抽出手段と、 前記抽出手段によって見積もられたビット幅および個
    数、ならびに前記プログラマブルデバイスの使用可能領
    域に基づいて、前記プログラマブルデバイスに回路構成
    をされるべきCPUのビット幅および個数を決定し、該
    回路構成をされるべきCPUによって実行される前記オ
    ブジェクトプログラムを生成するコンパイル手段と、 前記コンパイル手段によって決定されたビット幅および
    個数のCPUを前記プログラマブルデバイスに回路構成
    するための命令を、前記オブジェクトプログラムに付加
    する付加手段とを備えたことを特徴とするコンパイラ装
    置。
  2. 【請求項2】 請求項1記載のコンパイラ装置におい
    て、 前記抽出手段は、 前記ソースプログラム中に記述された命令の実行に要す
    るビット幅の出現回数をカウントし、データの依存関係
    をも解析して、前記ビット幅および個数を見積もるもの
    であることを特徴とするコンパイラ装置。
  3. 【請求項3】 請求項2記載のコンパイラ装置におい
    て、 前記コンパイル手段は、 前記抽出手段によってカウントされた出現回数が所定値
    以上であるビット幅ごとに少なくとも1個のCPUを、
    前記プログラマブルデバイスに回路構成をされるべきC
    PUとして決定するものであることを特徴とするコンパ
    イラ装置。
  4. 【請求項4】 請求項1記載のコンパイラ装置におい
    て、 前記コンパイル手段は、 前記オブジェクトプログラムの生成時に、前記ソースプ
    ログラム中のデータの依存関係を考慮して、前記プログ
    ラマブルデバイスに回路構成をされるべきCPUによっ
    て並列処理が行われるように最適化を行うものであるこ
    とを特徴とするコンパイラ装置。
  5. 【請求項5】 ソースプログラムから、CPUと回路構
    成が書き換え可能なプログラマブルデバイスとが混載さ
    れた半導体集積回路によって実行されるオブジェクトプ
    ログラムを生成するコンパイラ装置であって、 前記ソースプログラムの実行に必要なCPUのビット幅
    および個数を見積もる抽出手段と、 前記抽出手段によって見積もられたビット幅および個
    数、前記半導体集積回路に備えられたCPUのビット幅
    および個数、ならびに前記プログラマブルデバイスの使
    用可能領域に基づいて、前記プログラマブルデバイスに
    回路構成をされるべきCPUのビット幅および個数を決
    定し、これら回路構成をされるべきCPUおよび前記半
    導体集積回路に備えられたCPUによって実行される前
    記オブジェクトプログラムを生成するコンパイル手段
    と、 前記コンパイル手段によって決定されたビット幅および
    個数のCPUを前記プログラマブルデバイスに回路構成
    するための命令を、前記オブジェクトプログラムに付加
    する付加手段とを備えたことを特徴とするコンパイラ装
    置。
  6. 【請求項6】 請求項5記載のコンパイラ装置におい
    て、 前記抽出手段は、 前記ソースプログラム中に記述された命令の実行に要す
    るビット幅の出現回数をカウントし、データの依存関係
    をも解析して、前記ビット幅および個数を見積もるもの
    であることを特徴とするコンパイラ装置。
  7. 【請求項7】 請求項6記載のコンパイラ装置におい
    て、 前記コンパイル手段は、 前記半導体集積回路に備えられたCPUのビット幅を除
    いて、前記抽出手段によってカウントされた出現回数が
    所定値以上であるビット幅ごとに少なくとも1個のCP
    Uを、前記プログラマブルデバイスに回路構成をされる
    べきCPUとして決定するものであることを特徴とする
    コンパイラ装置。
  8. 【請求項8】 請求項5記載のコンパイラ装置におい
    て、 前記コンパイル手段は、 前記オブジェクトプログラムの生成時に、前記ソースプ
    ログラム中のデータの依存関係を考慮して、前記プログ
    ラマブルデバイスに回路構成をされるべきCPUおよび
    前記半導体集積回路に備えられたCPUによって並列処
    理が行われるように最適化を行うものであることを特徴
    とするコンパイラ装置。
  9. 【請求項9】 回路構成が書き換え可能なプログラマブ
    ルデバイスを備えた半導体集積回路であって、 前記プログラマブルデバイスに、指定されたビット幅お
    よび指定された個数のCPUならびに該CPUに接続さ
    れるバスの回路構成をする制御部を備えたことを特徴と
    する半導体集積回路。
  10. 【請求項10】 請求項9記載の半導体集積回路におい
    て、 前記制御部は、 CPU回路構成データを参照して、前記プログラマブル
    デバイスに、指定されたビット幅および指定された個数
    のCPUの回路構成をするものであることを特徴とする
    半導体集積回路。
  11. 【請求項11】 請求項10記載の半導体集積回路にお
    いて、 前記CPU回路構成データは、ビット幅でパラメータ化
    されていることを特徴とする半導体集積回路。
  12. 【請求項12】 請求項9記載の半導体集積回路におい
    て、 前記制御部は、 前記バスとして、命令メモリが保持する命令を前記CP
    Uに供給する共有命令バスの回路構成をするものである
    ことを特徴とする半導体集積回路。
  13. 【請求項13】 請求項12記載の半導体集積回路にお
    いて、 前記制御部は、 共有命令バス回路構成データを参照して、前記プログラ
    マブルデバイスに、前記共有命令バスの回路構成をする
    ものであることを特徴とする半導体集積回路。
  14. 【請求項14】 請求項9記載の半導体集積回路におい
    て、 前記制御部は、 前記バスとして、データメモリと前記CPUとの間でデ
    ータを転送する共有データバスの回路構成をするもので
    あることを特徴とする半導体集積回路。
  15. 【請求項15】 請求項14記載の半導体集積回路にお
    いて、 前記制御部は、 共有データバス回路構成データを参照して、前記プログ
    ラマブルデバイスに、前記共有データバスの回路構成を
    するものであることを特徴とする半導体集積回路。
  16. 【請求項16】 請求項9記載の半導体集積回路におい
    て、 メモリを備え、 前記制御部は、 前記プログラマブルデバイスに回路構成をされるCPU
    のうち、使用頻度が多い順に前記メモリに近い位置に配
    置されるように、前記指定されたビット幅および指定さ
    れた個数のCPUの回路構成をするものであることを特
    徴とする半導体集積回路。
  17. 【請求項17】 請求項9記載の半導体集積回路におい
    て、 メモリを備え、 前記制御部は、 前記プログラマブルデバイスに回路構成をされるCPU
    のうち、ビット幅が大きい順に前記メモリに近い位置に
    配置されるように、前記指定されたビット幅および指定
    された個数のCPUの回路構成をするものであることを
    特徴とする半導体集積回路。
  18. 【請求項18】 請求項9記載の半導体集積回路におい
    て、 前記プログラマブルデバイスに回路構成をされたCPU
    とは別個に、CPUを備えたことを特徴とする半導体集
    積回路。
  19. 【請求項19】 請求項18記載の半導体集積回路にお
    いて、 前記制御部は、 前記指定されたビット幅と当該半導体集積回路に備えら
    れたCPUのビット幅とが等しい場合、該ビット幅に対
    して指定された個数から当該半導体集積回路に備えられ
    たCPUのうち該ビット幅と等しいビット幅のCPUの
    個数を減じて、前記プログラマブルデバイスにCPUの
    回路構成をするものであることを特徴とする半導体集積
    回路。
  20. 【請求項20】 請求項18記載の半導体集積回路にお
    いて、 前記制御部は、 前記指定されたビット幅が当該半導体集積回路に備えら
    れたCPUのビット幅と等しいビット幅がなく、前記指
    定されたビット幅が当該半導体集積回路に備えられたC
    PUのビット幅よりも小さい場合、該指定されたビット
    幅に対して指定された個数から当該半導体集積回路に備
    えられたCPUの個数を減じて、前記プログラマブルデ
    バイスにCPUの回路構成をするものであることを特徴
    とする半導体集積回路。
JP2001380413A 2001-12-13 2001-12-13 コンパイラ装置 Expired - Fee Related JP3606836B2 (ja)

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)

* Cited by examiner, † Cited by third party
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
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