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

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

Info

Publication number
JP2003241975A
JP2003241975A JP2002044334A JP2002044334A JP2003241975A JP 2003241975 A JP2003241975 A JP 2003241975A JP 2002044334 A JP2002044334 A JP 2002044334A JP 2002044334 A JP2002044334 A JP 2002044334A JP 2003241975 A JP2003241975 A JP 2003241975A
Authority
JP
Japan
Prior art keywords
instruction
circuit
code
arithmetic unit
register file
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.)
Pending
Application number
JP2002044334A
Other languages
English (en)
Inventor
Junichi Mori
淳一 森
Katsuyuki Imamura
勝幸 今村
Junya Yamamoto
淳也 山本
Shuichi Takayama
秀一 高山
Junichi Yano
純一 矢野
Hisato Yoshida
久人 吉田
Kimihiko Aeba
侯彦 饗庭
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 JP2002044334A priority Critical patent/JP2003241975A/ja
Publication of JP2003241975A publication Critical patent/JP2003241975A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 CPU51とFPGA52とが混載された半
導体集積回路5において、プログラムの実行の高速化お
よびコスト削減を図る。 【解決手段】 コンパイラ装置2は、ソースプログラム
1から、オブジェクトプログラム3およびFPGA52
にプログラムの処理の一部を実行させるための回路コー
ド4を生成する。回路コード4によって生成されるもの
は、拡張演算器および拡張レジスタファイルである。オ
ブジェクトプログラム3は、回路コード4に基づいてF
PGA52に回路構成されるものを使用することを前提
としており、プログラムの実行を高速化することができ
る。また、FPGA52に拡張命令デコーダを回路構成
して、オブジェクトプログラム3のコードサイズを縮小
する。これにより、命令メモリの容量を低減することが
でき、コストを削減することができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンパイラ装置お
よび半導体集積回路に関するものであり、特に、CPU
と回路構成が書き換え可能なプログラマブルデバイスと
が混載された半導体集積回路およびこの半導体集積回路
によって実行されるプログラムのコンパイル技術に関す
る。
【0002】
【従来の技術】近年、PLD(Programmable Logic Dev
ice )やFPGA(Field Programmable Gate Array )
などの回路構成が書き換え可能なプログラマブルデバイ
ス(以下、「FPGA」と称する。)およびCPUを1
つの半導体集積回路上に混載したプロセッサが提案され
ている。このような半導体集積回路を用いることで、従
来ではすべてCPUが処理していたプログラムについ
て、その一部をFPGAに回路化してハードウェア的に
処理させることにより、プログラム全体としての実行速
度を向上させることができる。たとえば、特開平6−3
01522号公報に開示された技術によると、ソースプ
ログラム中での出現頻度の高い処理をFPGAに回路化
することにより、プログラムの実行速度の向上を図って
いる。
【0003】FPGAに回路構成をするためには、回路
コードが必要となる。同公報に開示された技術では、ソ
ースプログラムをコンパイルしてオブジェクトプログラ
ムを生成する過程において、ソースプログラム中の出現
頻度の高い処理をFPGAに回路構成するための回路コ
ードをも生成している。
【0004】
【発明が解決しようとする課題】FPGAに回路面積は
有限である。したがって、プログラム中でソフトウェア
的に処理するには最も過負荷となる部分をFPGAにハ
ードウェア化することが重要である。このようにFPG
Aへの回路構成が最適化されることにより、プログラム
の実行速度を最も向上することができる。
【0005】上記公報に開示された技術によると、FP
GAにハードウェア化すべき処理部分として、ソースプ
ログラムにおける処理の出現頻度に着目し、頻繁に出現
する処理を選択している。しかし、この方法では、必ず
しもFPGAへの回路化が最適されるとは言えない。た
とえば、出現頻度は低いがFPGAに回路化することに
よりプログラム全体としての処理速度が向上するような
処理もあるからである。
【0006】上記問題に鑑み、本発明は、CPUとFP
GAとが混載された半導体集積回路を対象として、与え
られたソースプログラムから、実行時の性能が高くなる
ようなオブジェクトプログラムおよび回路コードを生成
するコンパイラ装置を提供し、また、このようなオブジ
ェクトプログラムおよび回路コードに基づいて、FPG
Aに処理の一部を回路構成してプログラムを高速に実行
できる半導体集積回路を提供することを課題とする。
【0007】
【課題を解決するための手段】上記の課題を解決するた
めに、請求項1の発明が講じた手段は、ソースプログラ
ムから、第1の演算器を備えたCPUと回路構成が書き
換え可能なプログラマブルデバイスとが混載された半導
体集積回路によって実行されるオブジェクトプログラム
と、該プログラマブルデバイスの回路構成を決定する回
路コードとを生成するコンパイラ装置であって、前記ソ
ースプログラムから少なくとも1つの第1の命令列を抽
出する命令列抽出手段と、前記第1の命令列について、
前記第1の演算器によって実行される場合の第1の処理
性能と、前記プログラマブルデバイスに回路構成された
と想定した想定演算器によって実行される場合の第2の
処理性能との性能差をそれぞれ見積もる処理見積手段
と、前記性能差に基づいて前記第1の命令列の中から前
記プログラマブルデバイスに回路構成される第2の演算
器によって実行されるべき第2の命令列を選択し、該第
2の演算器の構成を決定する処理決定手段と、前記第2
の命令列を複合命令として該複合命令に前記第2の演算
器用の命令コードを割り当てる命令コード割当手段と、
前記複合命令に割り当てられた命令コードを用いて前記
オブジェクトプログラムを生成するコンパイル手段と、
前記第2の演算器の前記回路コードを生成する回路コー
ド生成手段とを備えるものとする。
【0008】請求項1の発明によると、ソースプログラ
ムから抽出された第1の命令列の中から、第1の演算器
による実行と想定演算器による実行との処理性能の差に
基づいて、第2の演算器によって実行されるべき第2の
命令列が選択される。そして、第2の演算器の回路コー
ド、および第2の演算器用の命令コードを使用したオブ
ジェクトプログラムを生成することができる。この結
果、CPUとプログラマブルデバイスとが混載された半
導体集積回路において、プログラマブルデバイスに上記
の回路コードに基づいて第2の演算器を回路構成して上
記のオブジェクトプログラムを実行することにより、プ
ログラムの実行性能、たとえば、実行速度を向上させる
ことができる。
【0009】請求項2の発明では、請求項1の命令列抽
出手段は、前記第1の命令列の前記ソースプログラムに
おける出現回数をカウントするものとし、また、処理見
積手段は、前記第1の処理性能として前記第1の演算器
が前記第1の命令列を前記出現回数だけ実行する場合の
第1の処理時間を見積もり、前記第2の処理性能として
前記想定演算器が前記第1の命令列を前記出現回数だけ
実行する場合の第2の処理時間を見積もり、前記性能差
として該第1の処理時間と該第2の処理時間との差に相
当する短縮時間を見積もるものとする。
【0010】請求項2の発明によると、性能差として、
ソースプログラムにおける出現回数を考慮した短縮時間
が見積もられる。このため、実行1回あたりの短縮時間
は小さいが、出現回数が多い命令列が、第2の演算器に
よって実行されるべき第2の命令列として確実に選択さ
れる。したがって、プログラムの実行速度の向上を図る
ことができる。
【0011】請求項3の発明では、請求項2の処理決定
手段は、前記第2の演算器の回路面積が前記プログラマ
ブルデバイスの使用可能領域の回路面積以下であり、か
つ前記短縮時間の合計が最大となるように前記第2の命
令列を選択するものとする。
【0012】請求項4の発明では、請求項1の命令列抽
出手段は、前記第1の命令列の前記ソースプログラムに
おける出現回数をカウントするものとし、また、処理見
積手段は、前記第1の処理性能として前記第1の演算器
が前記第1の命令列を前記出現回数だけ実行する場合の
第1の消費電力を見積もり、前記第2の処理性能として
前記想定演算器が前記第1の命令列を前記出現回数だけ
実行する場合の第2の消費電力を見積もり、前記性能差
として該第1の消費電力と該第2の消費電力との差に相
当する削減電力を見積もるものとする。
【0013】請求項4の発明によると、性能差として、
ソースプログラムにおける出現回数を考慮した削減電力
が見積もられる。このため、実行1回あたりの削減電力
は小さいが、出現回数が多い命令列が、第2の演算器に
よって実行されるべき第2の命令列として確実に選択さ
れる。したがって、プログラム実行時の消費電力を低減
することができる。
【0014】請求項5の発明では、請求項4の処理決定
手段は、前記第2の演算器の回路面積が前記プログラマ
ブルデバイスの使用可能領域の回路面積以下であり、か
つ前記削減電力の合計が最大となるように前記第2の命
令列を選択するものとする。
【0015】請求項6の発明では、請求項1の命令列抽
出手段は、前記第1の命令列の前記ソースプログラムに
おける出現回数をカウントするものとし、また、処理見
積手段は、前記第1の処理性能として前記第1の演算器
が前記第1の命令列を前記出現回数だけ実行する場合の
第1の処理時間および第1の消費電力を見積もり、前記
第2の処理性能として前記想定演算器が前記第1の命令
列を前記出現回数だけ実行する場合の第2の処理時間お
よび第2の消費電力を見積もり、前記性能差として該第
1の処理時間と該第2の処理時間との差に相当する短縮
時間および該第1の消費電力と該第2の消費電力との差
に相当する削減電力を見積もるものとする。また、処理
決定手段は、前記第2の演算器の回路面積が前記プログ
ラマブルデバイスの使用可能領域の回路面積以下であ
り、かつ前記短縮時間の合計が所定値以上で前記削減電
力の合計が最大となるように前記第2の命令列を選択す
るものとする。
【0016】請求項6の発明によると、プログラムの実
行に関して、所望の実行速度を確保しつつ、消費電力を
低減することができるような第2の演算器の回路コー
ド、および第2の演算器用の命令コードを使用したオブ
ジェクトプログラムを生成することができる。
【0017】請求項7の発明では、請求項1のコンパイ
ラ装置は、命令列、前記第1の演算器が該命令列を実行
する場合の処理時間、前記想定演算器が該命令列を実行
する場合の処理時間および前記想定演算器が要する回路
面積があらかじめ記載された演算テーブルを用いるもの
とする。そして、命令列抽出手段は、前記演算テーブル
を参照して前記第1の命令列を抽出するものとし、処理
見積手段は、前記演算テーブルを参照して前記性能差を
見積もるものとする。
【0018】請求項8の発明では、請求項7の命令列抽
出手段は、前記ソースプログラムから前記演算テーブル
に記載外の命令列をも抽出し、該記載外の命令列につい
て、前記第1の演算器によって実行される場合の処理時
間と、前記想定演算器によって実行される場合の処理時
間と、該想定演算器が要する回路面積とを見積もり、前
記演算テーブルに追加するものとする。
【0019】請求項9の発明では、請求項1のコンパイ
ラ装置は、命令列、前記第1の演算器が該命令列を実行
する場合の消費電力、前記想定演算器が該命令列を実行
する場合の消費電力および前記想定演算器が要する回路
面積があらかじめ記載された演算テーブルを用いるもの
とする。そして、命令列抽出手段は、前記演算テーブル
を参照して前記第1の命令列を抽出するものとし、処理
見積手段は、前記演算テーブルを参照して前記性能差を
見積もるものとする。請求項1のコンパイラ装置は、抽
出されるべき命令列、前記第1の演算器が該命令列を実
行する場合の消費電力、前記想定演算器が該命令列を実
行する場合の消費電力および前記想定演算器が要する回
路面積があらかじめ記載された演算テーブルを参照して
動作するものとする。
【0020】請求項10の発明では、請求項9の命令列
抽出手段は、前記ソースプログラムから前記演算テーブ
ルに記載外の命令列をも抽出し、該記載外の命令列につ
いて、前記第1の演算器によって実行される場合の消費
電力と、前記想定演算器によって実行される場合の消費
電力と、該想定演算器が要する回路面積とを見積もり、
前記演算テーブルに追加するものとする。
【0021】請求項7または9の発明によると、請求項
1のコンパイラ装置は、演算テーブルにあらかじめ記載
された情報を基にして、第2の演算器として回路構成す
べき命令列を、ソースプログラムから抽出し、その命令
列についての処理性能差を見積もることができる。ま
た、請求項8または10の発明によると、命令列抽出手
段は、演算テーブルに記載されていない命令列をも抽出
することができ、その抽出した命令列についての各種情
報を演算テーブルに追加し、演算テーブルを自動的に拡
張することができる。
【0022】そして、請求項11の発明が講じた手段
は、ソースプログラムから、第1のレジスタファイルを
備えたCPUと回路構成が書き換え可能なプログラマブ
ルデバイスとが混載された半導体集積回路によって実行
されるオブジェクトプログラムと、該プログラマブルデ
バイスの回路構成を決定する回路コードとを生成するコ
ンパイラ装置であって、前記ソースプログラムの実行に
必要な必要レジスタファイルの数を見積もるレジスタ処
理見積手段と、前記必要レジスタファイルの数および前
記第1のレジスタファイルの数を考慮して前記プログラ
マブルデバイスに回路構成をすべき第2のレジスタファ
イルの構成を決定するとともに、該第2のレジスタファ
イルに前記第1のレジスタファイルに割り当てられる第
1のレジスタファイル名とは別の第2のレジスタファイ
ル名を割り当てるレジスタ処理決定手段と、前記第2の
レジスタファイル名を用いて前記オブジェクトプログラ
ムを生成するコンパイル手段と、前記第2のレジスタフ
ァイルの前記回路コードを生成する回路コード生成手段
とを備えたものとする。
【0023】請求項11の発明によると、ソースプログ
ラムから、第2のレジスタファイルの回路コード、およ
び第2のレジスタファイルに割り当てられた第2のレジ
スタファイル名を使用したオブジェクトプログラムを生
成することができる。この結果、CPUとプログラマブ
ルデバイスとが混載された半導体集積回路において、プ
ログラマブルデバイスに上記の回路コードに基づいて第
2のレジスタファイルを回路構成して上記のオブジェク
トプログラムを実行することにより、プログラムの実行
性能、たとえば、実行速度を向上させることができる。
【0024】請求項12の発明では、請求項11のレジ
スタ処理見積手段は、前記必要レジスタファイルの数と
して前記ソースプログラムにおける使用頻度が所定値以
上である変数の個数を見積もるものとする。
【0025】プログラマブルデバイスの回路面積は有限
であり、ソースプログラム中のすべての変数についてレ
ジスタファイルを割り当てることはできない。したがっ
て、請求項12の発明によると、第2のレジスタファイ
ルの候補としての必要レジスタファイルの数を制限する
ことができる。
【0026】請求項13の発明では、請求項12のレジ
スタ処理決定手段は、前記必要レジスタファイルのうち
前記使用頻度の高いものから順に前記第1および第2の
レジスタファイルの順に割り当て、前記第2のレジスタ
ファイルに割り当てられるレジスタファイルについて
は、前記使用頻度の高い順に前記CPUに近い位置に配
置するようにして、前記第2のレジスタファイルの構成
を決定するものとする。
【0027】請求項13の発明によると、使用頻度の高
いレジスタファイルを、よりアクセスタイムが短くて済
む第1のレジスタファイル、およびCPUに近い位置に
配置した第2のレジスタファイルに割り付けることがで
きる。
【0028】請求項14の発明では、請求項11のレジ
スタ処理決定手段は、前記必要レジスタファイルの数と
前記第1のレジスタファイルの数との差に相当する数の
レジスタファイルが前記プログラマブルデバイスに回路
構成される場合に要する第1の回路面積と、前記プログ
ラマブルデバイスの使用可能領域の第2の回路面積とを
比較するものとする。そして、該第1の回路面積が該第
2の回路面積よりも大きい場合、前記レジスタ見積手段
に前記必要レジスタファイルの数を見積もり直させる一
方、該第1の回路面積が該第2の回路面積以下である場
合、前記差に相当する数を前記第2のレジスタファイル
の数として決定するものとする。
【0029】請求項15の発明では、請求項11のレジ
スタ処理決定手段は、前記第2のレジスタファイルが回
路構成されてもなお前記プログラマブルデバイスに使用
可能な空き領域が存在すると判断する場合、該空き領域
に演算器を回路構成することを決定するものとする。
【0030】請求項15の発明によると、プログラマブ
ルデバイスに、第2のレジスタファイルに加えて、たと
えば、請求項1の第2の演算器を回路構成させることが
でき、プログラムの実行速度をより高速化することがで
きる。
【0031】請求項16の発明が講じた手段は、ソース
プログラムから、第1の命令デコーダを備えたCPUと
回路構成が書き換え可能なプログラマブルデバイスとが
混載された半導体集積回路によって実行されるオブジェ
クトプログラムと、該プログラマブルデバイスの回路構
成を決定する回路コードとを生成するコンパイラ装置で
あって、前記ソースプログラムから命令を抽出して該命
令の出現回数をカウントする命令抽出手段と、前記出現
回数および前記CPUが実行可能な命令の命令コードか
ら命令リストを作成する命令リスト作成手段と、前記命
令リストを参照して、(L1×N1+L2×N2)>
(L2×N1+L1×N2)(ただし、L1は前記命令
リストにおける第1の命令の命令コード長、N1は該第
1の命令の前記出現回数、L2は前記命令リストにおけ
る該第2の命令の命令コード長、N2は該第2の命令の
前記出現回数である。)となる場合、該第1の命令に対
応する第1の命令コードと該第2の命令に対応する第2
の命令コードとを交換する命令コード交換手段と、前記
命令コード交換手段によって交換された前記第1および
第2の命令コードを用いて前記オブジェクトプログラム
を生成するコンパイル手段と、前記第1の命令デコーダ
による前記第1の命令コードのデコード結果に相当する
ものを前記第2の命令コードから生成するとともに、前
記第1の命令デコーダによる前記第2の命令コードのデ
コード結果に相当するものを前記第1の命令コードから
生成する第2の命令デコーダが、前記プログラマブルデ
バイスに回路構成されるように、前記回路コードを生成
する回路コード生成手段とを備えたものとする。
【0032】請求項16の発明によると、L1、N1が
大、L2、N2が小のときは、(L1×N1+L2×N
2)>(L2×N1+L1×N2)が成立するので、第
1の命令と第2の命令とにおいて命令コードが交換され
る。すなわち、ソースプログラム中に頻繁に出現する可
変長命令であって命令コード長の長いものと、あまり
(または、まったく)出現しない可変長命令コードであ
ってコード長の短いものとについて、命令コードが交換
されるので、プログラム全体としてのコードサイズを縮
小したオブジェクトプログラムを生成することができ
る。また、交換した命令コードから交換前のデコード結
果を得るための第2の命令デコーダの回路コードを生成
することができる。
【0033】請求項17の発明では、ソースプログラム
から、第1の命令デコーダを備えたCPUと回路構成が
書き換え可能なプログラマブルデバイスとが混載された
半導体集積回路によって実行されるオブジェクトプログ
ラムと、該プログラマブルデバイスの回路構成を決定す
る回路コードとを生成するコンパイラ装置であって、前
記ソースプログラムから命令列を抽出する命令列抽出手
段と、前記命令列を複合命令として該複合命令に、該複
合命令に対応する第1の命令コードの命令コード長より
も短いコード長の第2の命令コードを割り当てる命令コ
ード割当手段と、前記第2の命令コードを用いて前記オ
ブジェクトプログラムを生成するコンパイル手段と、前
記第1の命令デコーダによる前記第1の命令コードのデ
コード結果に相当するものを前記第2の命令コードから
生成する第2の命令デコーダが前記プログラマブルデバ
イスに回路構成されるように、前記回路コードを生成す
る回路コード生成手段とを備えたものとする。
【0034】請求項17の発明によると、たとえば、ソ
ースプログラム中に頻繁に出現する命令列に、その命令
列全体の命令コードのコード長よりも短い新たな命令コ
ード(第2の命令コード)を割り当てることにより、プ
ログラム全体としてのコードサイズを縮小したオブジェ
クトプログラムを生成することができる。また、新たに
割り当てた命令コードから元の命令列のデコード結果を
得るための第2の命令デコーダの回路コードを生成する
ことができる。
【0035】請求項18の発明では、請求項17の命令
列抽出手段は、前記ソースプログラムにおける出現回数
が所定値以上の、一連の命令の組み合わせからなる命令
列を抽出するものとする。
【0036】そして、請求項19の発明が講じた手段
は、ソースプログラムから、第1の演算器、第1のレジ
スタファイルおよび第1の命令デコーダを備えたCPU
と回路構成が書き換え可能なプログラマブルデバイスと
が混載された半導体集積回路によって実行されるオブジ
ェクトプログラムと、該プログラマブルデバイスの回路
構成を決定する回路コードとを生成するコンパイラ装置
であって、前記ソースプログラムから少なくとも1つの
第1の命令列を抽出する第1の命令列抽出手段と、前記
第1の命令列について、前記第1の演算器によって実行
される場合の処理性能と、前記プログラマブルデバイス
に回路構成をされたと想定した想定演算器によって実行
される場合の処理性能との性能差をそれぞれ見積もる処
理見積手段と、前記性能差に基づいて、前記第1の命令
列の中から前記プログラマブルデバイスに回路構成され
る第2の演算器によって実行されるべき第2の命令列を
選択し、該第2の演算器の構成を決定する処理決定手段
と、前記第2の命令列を複合命令として該複合命令に前
記第2の演算器用の第1の命令コードを割り当てる第1
の命令コード割当手段と、前記ソースプログラムの実行
に必要な必要レジスタファイルの数を見積もるレジスタ
処理見積手段と、前記必要レジスタファイルの数、前記
第1のレジスタファイルの数および前記プログラマブル
デバイスの使用可能領域の回路面積を考慮して、前記プ
ログラマブルデバイスに回路構成をすべき第2のレジス
タファイルの数を最適化するレジスタ数最適化手段と、
前記第2のレジスタファイルに、前記第1のレジスタフ
ァイルに割り当てられる第1のレジスタファイル名とは
別の第2のレジスタファイル名を割り当てるレジスタ処
理決定手段と、前記第1の命令コードおよび前記第2の
レジスタファイル名を用いて、オブジェクトプログラム
を仮生成する第1のコンパイル手段と、前記第1のコン
パイル手段によって仮生成されたオブジェクトプログラ
ムから第2の命令列を抽出し、該第2の命令列の出現回
数をカウントする第2の命令列抽出手段と、前記出現回
数が所定値以上の前記第2の命令列を複合命令として該
複合命令に、該複合命令に対応する第2の命令コードの
命令コード長よりも短いコード長の第3の命令コードを
割り当てる第2の命令コード割当手段と、前記第1およ
び第3の命令コードならびに前記第2のレジスタファイ
ル名を用いて、前記オブジェクトプログラムを生成する
第2のコンパイル手段と、前記第2の演算器の前記回路
コードおよび前記第2のレジスタファイルの前記回路コ
ードを生成するとともに前記第1の命令デコーダによる
前記第2の命令コードのデコード結果に相当するものを
前記第3の命令コードから生成する第2の命令デコーダ
が、前記プログラマブルデバイスに回路構成されるよう
に、前記回路コードを生成する回路コード生成手段とを
備えたものとする。
【0037】請求項19の発明によると、ソースプログ
ラムから、第2の演算器および第2のレジスタファイル
の回路コード、ならびに第2の演算器用の命令コードお
よび第2のレジスタファイルに割り当てられた第2のレ
ジスタファイル名を使用したオブジェクトプログラムを
生成することができる。この結果、CPUとプログラマ
ブルデバイスとが混載された半導体集積回路において、
プログラマブルデバイスに上記の回路コードに基づいて
第2のレジスタファイルを回路構成して上記のオブジェ
クトプログラムを実行することにより、プログラムの実
行性能、たとえば、実行速度を向上させることができ
る。また、プログラム全体としてのコードサイズを縮小
したオブジェクトプログラム、およびこのオブジェクト
プログラムの命令コードをデコードすることが可能な第
2の命令デコーダの回路コードを生成することができ
る。
【0038】請求項20の発明が講じた手段は、レジス
タファイルおよび命令デコーダを備えたCPUと、回路
構成が書き換え可能なプログラマブルデバイスとが混載
された半導体集積回路であって、前記レジスタファイル
に保持されたデータを、前記プログラマブルデバイスに
転送する第1のデータ転送機構と、前記命令デコーダの
出力を、前記プログラマブルデバイスに転送する第2の
データ転送機構とを備えたものとする。
【0039】請求項20の発明によると、CPUとプロ
グラマブルデバイスとが混載された半導体集積回路につ
いて、第1および第2のデータ転送機構によって、CP
U内のレジスタファイルおよび命令デコーダから、プロ
グラマブルデバイスにデータを転送することができる。
【0040】請求項21の発明では、請求項20の半導
体集積回路において、プログラマブルデバイスは、演算
器が回路構成されたものとし、当該半導体集積回路は、
前記演算器の出力を、前記レジスタファイルに転送する
第3のデータ転送機構を備えたものとする。また、第1
のデータ転送機構は、前記レジスタファイルに保持され
たデータを前記演算器に転送するものとし、第2のデー
タ転送機構は、前記命令デコーダの出力を前記演算器に
転送するものとする。
【0041】請求項21の発明によると、第1および第
2のデータ転送機構によって、CPU内のレジスタファ
イルおよび命令デコーダから、プログラマブルデバイス
に回路構成された演算器にデータを転送することができ
る。また、第3のデータ転送機構によって、この演算器
からCPU内のレジスタファイルにデータを転送するこ
とができる。これにより、プログラマブルデバイスに回
路構成された演算器を、CPU内の演算器と同様に取り
扱うことができる。
【0042】請求項22の発明では、請求項20の半導
体集積回路において、メモリと、前記メモリと前記プロ
グラマブルデバイスとの間でデータ転送を行う第3のデ
ータ転送機構とを備えたものとする。
【0043】そして、請求項23の発明が講じた手段
は、演算器および命令デコーダを備えたCPUと、回路
構成が書き換え可能なプログラマブルデバイスとが混載
された半導体集積回路であって、前記演算器および命令
デコーダの出力を前記プログラマブルデバイスに転送す
る第1のデータ転送機構を備えたものとする。
【0044】請求項23の発明によると、CPUとプロ
グラマブルデバイスとが混載された半導体集積回路につ
いて、第1のデータ転送機構によって、CPU内の演算
器および命令デコーダから、プログラマブルデバイスに
データを転送することができる。
【0045】請求項24の発明では、請求項23の半導
体集積回路において、プログラマブルデバイスは、レジ
スタファイルが回路構成されたものとし、当該半導体集
積回路は、前記レジスタファイルに保持されたデータを
前記演算器に転送する第2のデータ転送機構を備えたも
のとする。また、第1のデータ転送機構は、前記演算器
および命令デコーダの出力を前記レジスタファイルに転
送するものとする。
【0046】請求項24の発明によると、第1のデータ
転送機構によって、CPU内の演算器および命令デコー
ダから、プログラマブルデバイスに回路構成されたレジ
スタファイルにデータを転送するができる。また、第2
のデータ転送機構によって、このレジスタファイルから
CPU内の演算器にデータを転送することができる。こ
れにより、プログラマブルデバイスに回路構成されたレ
ジスタファイルを、CPU内のレジスタファイルと同様
に取り扱うことができる。
【0047】請求項25の発明が講じた手段は、第1の
命令デコーダを備えたCPUと、回路構成が書き換え可
能なプログラマブルデバイスとが混載された半導体集積
回路であって、前記第1の命令デコーダが入力するデー
タを前記プログラマブルデバイスに転送する第1のデー
タ転送機構を備えたものとする。
【0048】請求項26の発明では、請求項25の半導
体集積回路において、プログラマブルデバイスは第2の
命令デコーダが回路構成されたものとし、当該半導体集
積回路は、前記第2の命令デコーダの出力を、前記CP
Uに転送する第2のデータ転送機構を備えたものとす
る。また、第1のデータ転送機構は、前記第1の命令デ
コーダが入力するデータを前記第2の命令デコーダに転
送するものとする。
【0049】請求項27の発明では、請求項26の半導
体集積回路において、CPUは、前記第1の命令デコー
ダの出力、および前記第2のデータ転送機構によって転
送された前記第2の命令デコーダの出力のいずれか一方
を選択し、当該CPUが有する演算器およびレジスタフ
ァイルに出力する選択回路を備えたものとする。
【0050】請求項27の発明によると、第1および第
2の命令デコーダのいずれか一方のデコード結果を選択
して、CPU内の演算器およびレジスタファイルに出力
することができる。これにより、第2の命令デコーダの
デコード結果を、第1の命令デコーダのデコード結果と
同様に取り扱うことができる。
【0051】請求項28の発明では、第1の演算器、第
1のレジスタファイルおよび命令デコーダを備えたCP
Uと、回路構成が書き換え可能なプログラマブルデバイ
スとが混載された半導体集積回路であって、プログラマ
ブルデバイスは、第2の演算器と、第2のレジスタファ
イルとが回路構成されたものとし、当該半導体集積回路
は、前記第1のレジスタファイルに保持されたデータを
前記第2の演算器に転送する第1のデータ転送機構と、
前記命令デコーダの出力を前記第2の演算器に転送する
第2のデータ転送機構と、前記第2の演算器の出力を前
記第1のレジスタファイルに転送する第3のデータ転送
機構と、前記第1の演算器および第1の命令デコーダの
出力を前記第2のレジスタファイルに転送する第4のデ
ータ転送機構と、前記第2のレジスタファイルに保持さ
れたデータを前記第1の演算器に転送する第5のデータ
転送機構と、前記第2のレジスタファイルに保持された
データを前記第2の演算器に転送する第6のデータ転送
機構と、前記第2の演算器の出力を前記第2のレジスタ
ファイルに転送する第7のデータ転送機構とを備えたも
のとする。
【0052】請求項29の発明では、第1の演算器、レ
ジスタファイルおよび第1の命令デコーダを備えたCP
Uと、回路構成が書き換え可能なプログラマブルデバイ
スとが混載された半導体集積回路であって、前記プログ
ラマブルデバイスは、第2の演算器と、第2の命令デコ
ーダとが回路構成されたものとし、前記CPUは、前記
第1の命令デコーダの出力および前記第2の命令デコー
ダの出力のいずれか一方を選択し、前記第1の演算器お
よびレジスタファイルに出力する選択回路を備えたもの
とし、当該半導体集積回路は、前記レジスタファイルに
保持されたデータを前記第2の演算器に転送する第1の
データ転送機構と、前記第1の命令デコーダの出力を前
記第2の演算器に転送する第2のデータ転送機構と、前
記第2の演算器の出力を前記レジスタファイルに転送す
る第3のデータ転送機構と、前記第1の命令デコーダが
入力するデータを前記第2の命令デコーダに転送する第
4のデータ転送機構と、前記第2の命令デコーダの出力
を前記選択回路に転送する第5のデータ転送機構とを備
えたものとする。
【0053】請求項30の発明では、演算器、第1のレ
ジスタファイルおよび第1の命令デコーダを備えたCP
Uと、回路構成が書き換え可能なプログラマブルデバイ
スとが混載された半導体集積回路であって、前記プログ
ラマブルデバイスは、第2のレジスタファイルと、第2
の命令デコーダとが回路構成されたものとし、前記CP
Uは、前記第1の命令デコーダの出力および前記第2の
命令デコーダの出力のいずれか一方を選択し、前記演算
器および第1のレジスタファイルに出力する選択回路を
備えたものとし、当該半導体集積回路は、前記演算器お
よび第1の命令デコーダの出力を前記第2のレジスタフ
ァイルに転送する第1のデータ転送機構と、前記第2の
レジスタファイルに保持されたデータを前記演算器に転
送する第2のデータ転送機構と、前記第1の命令デコー
ダが入力するデータを前記第2の命令デコーダに転送す
る第3のデータ転送機構と、前記第2の命令デコーダの
出力を前記選択回路に転送する第4のデータ転送機構
と、前記第2の命令デコーダの出力を前記第2のレジス
タファイルに転送する第5のデータ転送機構とを備えた
ものとする。
【0054】
【発明の実施の形態】まず、本発明のコンパイラ装置お
よび半導体集積回路からなるシステムの構成を図1に示
す。
【0055】コンパイラ装置2は、C言語などの高級言
語で記述されたソースプログラム1から、オブジェクト
プログラム3および回路コード4を生成する。また、C
PU51とFPGA52とを備えた半導体集積回路5
は、回路コード4に基づいてFPGA52にソースプロ
グラム1の処理の一部を回路構成し、オブジェクトプロ
グラム3に従ってプログラムを実行する。
【0056】なお、本発明に係るコンパイラ装置2は、
コンパイラプログラムを、たとえば、記録媒体を介して
コンピュータにインストールすることによって、コンピ
ュータを本発明の各手段として機能させることができ
る。
【0057】以下、本発明の実施の形態について、図面
を用いて詳細に説明する。なお、特に断りがない限り、
図1に付した符号を用いて各構成要素を参照する。
【0058】(第1の実施形態)本発明の第1の実施形
態に係るコンパイラ装置2は、本発明における第2の演
算器に相当する拡張演算器の回路コード4を生成するも
のである。以下、本実施形態に係るコンパイラ装置2の
動作について、図2のフローチャートに従って説明す
る。
【0059】処理が開始すると、まず、ステップS20
1において、ソースプログラム1から命令列が抽出され
る。ここで、抽出される命令列は、あらかじめ演算テー
ブルに記載されているものである。演算テーブルについ
ては後述する。さらに、抽出された各命令列について、
ソースプログラム1における出現回数がカウントされ、
演算テーブルに書き込まれる。なお、本ステップS20
1は、本発明における命令列抽出手段が行うものであ
る。
【0060】ここで、演算テーブルについて、図3を用
いて説明する。同図中、(a)は、抽出された命令列の
出現回数が書き込まれる前の演算テーブルを示す。この
演算テーブルには、抽出すべき命令列と、CPU51内
の演算器(この演算器は、本発明における第1の演算器
に相当する。)がその命令列を実行する場合に要するク
ロックサイクル数と、その命令列用としてFPGA52
に回路構成されたと想定した想定演算器がその命令列を
実行する場合に要するクロックサイクル数と、その想定
演算器の回路構成に必要な回路面積とがあらかじめ記載
されている。また、同図中、(b)は、抽出された命令
列の出現回数が書き込まれた後の演算テーブルを示す。
【0061】次に、ステップS202では、図3のよう
な演算テーブルを参照し、抽出された各命令列に関し
て、CPU51内の演算器による処理と想定演算器によ
る処理との処理性能差が見積もられる。ここでは、各命
令列を、CPU51内の演算器が実行する場合の処理時
間と、想定演算器が実行する場合の処理時間とを比較し
て、想定演算器が実行する場合に短縮される短縮時間が
見積もられるものとする。なお、本ステップS202
は、本発明における処理見積手段が行うものである。
【0062】ここで、短縮時間の見積もりについて、図
3(b)の演算テーブルを用いて説明する。演算テーブ
ル1行目の命令列“(a+b) *c”の出現回数は10、CP
U51内の演算器がこの命令列を実行する場合の処理時
間は、2×10=20クロックである。一方、想定演算
器の場合は、1×10=10クロックの処理時間で済
む。したがって、想定演算器による短縮時間は、20−
10=10クロックということになる。同様に、演算テ
ーブル2行目の命令列“(a+b+c+d) ”の出現回数は7、
CPU51内の演算器がこの命令列を実行する場合の処
理時間は、3×7=21クロックである。一方、想定演
算器の場合は、1×7=7クロックの処理時間で済む。
したがって、想定演算器による短縮時間は、21−7=
14クロックということになる。
【0063】次に、ステップS203では、ステップS
201において抽出された命令列の中から、ステップS
202において見積もられた短縮時間に基づいて、拡張
演算器によって実行されるべき命令列が選択され、拡張
演算器の構成が決定される。なお、本ステップS203
は、本発明における処理決定手段が行うものである。
【0064】ここで、ステップS203における処理に
ついて、図4のフローチャートに従って詳細に説明す
る。まず、ステップS201において抽出されたすべて
の命令列が選択される(S2031)。そして、選択さ
れた命令列を実行する拡張演算器の回路面積SAが見積
もられる。回路面積SAは、演算テーブルを参照して各
命令列に対応した想定演算器の回路面積Snを得て、こ
れら回路面積Snを合計することにより見積もることが
できる。そして、回路面積SAとFPGA52の使用可
能領域の回路面積SFとが比較され、SF<SAである
ときはステップS2033に進み、SF≧SAであると
きはステップS2034に進む(S2032)。ステッ
プS2033では、選択されている命令列のうち、ステ
ップS202において見積もられた短縮時間が最も小さ
い命令列をFPGA52に回路構成しないものとして選
択から除外し、ステップS2032に戻る。一方、ステ
ップS2034では、選択された命令列を実行する拡張
演算器が決定される。
【0065】次に、ステップS204では、ステップS
203において選択された命令列を新たな複合命令とみ
なして、この複合命令に、あらかじめ複数用意されてい
る拡張命令コードが割り当てられる。この拡張命令コー
ドは、FPGA52に回路構成される拡張演算器によっ
て実行されるものである。なお、本ステップS204
は、本発明における命令コード割当手段が行うものであ
る。
【0066】最後に、ステップS205において、最適
化やレジスタ割り付けが行われてオブジェクトプログラ
ム3が生成される。このオブジェクトプログラム3のコ
ーディングに用いられる命令コードは、ステップS20
4において割り当てられた拡張命令コードを含むもので
ある。また、ステップS206において、ステップS2
03において決定された拡張演算器の回路コード4が生
成される。なお、ステップS205は、本発明における
コンパイル手段が行うものであり、ステップS206
は、回路コード生成手段が行うものである。
【0067】次に、本実施形態に係る半導体集積回路に
ついて説明する。
【0068】図5は、本実施形態に係る半導体集積回路
5の構成を示す。半導体集積回路5は、CPU51と、
FPGA52と、メモリ53とを備えている。CPU5
1は、演算器511と、レジスタファイル512と、命
令デコーダ513とを備えている。また、FPGA52
には、拡張演算器521が回路構成されている。この拡
張演算器521は、たとえば、本実施形態に係るコンパ
イラ装置2によって生成された回路コード4に基づいて
回路構成されたものである。そして、半導体集積回路5
は、たとえば、本実施形態に係るコンパイラ装置2によ
って生成されたオブジェクトプログラム3に従って、プ
ログラムを実行するものである。
【0069】半導体集積回路5は、上記の各構成要素間
のデータ転送機構として、5つのデータ転送機構TM
1、TM2、TM3、TM4およびTM5を備えてい
る。データ転送機構TM1は、レジスタファイル512
に保持されたデータを、拡張演算器521に転送する。
データ転送機構TM2は、命令デコーダ513のデコー
ド結果を、拡張演算器521に転送する。データ転送機
構TM3は、拡張演算器521の演算結果を、レジスタ
ファイル512に転送する。データ転送機構TM4は、
メモリ53と拡張演算器521との間でデータ転送を行
う。そして、データ転送機構TM5は、メモリ53と演
算器511との間でデータ転送を行う。
【0070】以下、半導体集積回路5の動作について説
明する。なお、演算器511、レジスタファイル512
および命令デコーダ513は一般のCPUに備えられた
ものと同様であるので説明を省略し、拡張演算器521
の動作を中心に説明する。
【0071】まず、命令デコーダ513は、命令メモリ
6から命令コードをフェッチし、デコードを行う。この
デコード結果は、演算器511およびレジスタファイル
512に転送されるとともに、転送機構TM2によっ
て、拡張演算器521にも転送される。このときの命令
コードが、演算器511では扱えないもの、たとえば、
上述した拡張命令コードであるときは、拡張命令コード
による命令は拡張演算器521によって実行されること
になる。なお、拡張命令コードは、あらかじめ命令デコ
ーダ513に拡張演算命令用として複数用意されてお
り、たとえば、図2のステップS204において複合命
令に割り当てられるものである。
【0072】拡張演算器521における命令の実行時に
必要があれば、レジスタファイル512からはデータ転
送機構TM1によって、また、メモリ53からはデータ
転送機構TM4によって、拡張演算器521にデータが
転送される。そして、拡張演算器521の演算結果は、
データ転送機構TM3によって、レジスタファイル51
2に転送され、また、データ転送機構TM4によってメ
モリ53に書き込むこともできる。これにより、拡張演
算器521の演算結果を演算器511における演算処理
に利用することが可能となる。
【0073】以上、本実施形態によると、ソースプログ
ラム1において処理負荷の大きな命令列を実行する拡張
演算器521をFPGA52に回路構成するための回路
コード4、および拡張演算器521を使用するようなオ
ブジェクトプログラム3を生成することができる。そし
て、回路コード4に基づいて、実際に、FPGA52に
拡張演算器521を回路構成し、オブジェクトプログラ
ム3に従って、プログラムを高速に実行することができ
る。また、FPGA52に回路構成される拡張演算器5
21は、CPU51に備えられた演算器511と同様に
制御することができるため、プログラムの実行時に制御
が複雑化することがない。
【0074】なお、半導体集積回路5はメモリ53を備
えているとしたが、これらは半導体集積回路5の外部に
あるものでもよい。
【0075】また、拡張演算器521が扱う拡張命令コ
ードが増えて複雑化して、命令デコーダ513では対応
できない、つまりあらかじめ与えられた拡張命令コード
で対応できない場合、FPGA52に新たな命令デコー
ダを回路構成して、この命令デコーダから拡張演算器5
21に命令コードを転送するようにしてもよい。
【0076】(第2の実施形態)本発明の第2の実施形
態に係るコンパイラ装置2は、処理速度および消費電力
を考慮して、拡張演算器の回路コード4を生成するもの
である。本実施形態に係るコンパイラ装置2の動作は、
第1の実施形態に係るコンパイラ装置2とほぼ同様であ
るので、重複する部分の説明は省略し、以下、異なる部
分について、図2のフローチャートに従って説明する。
【0077】本実施形態に係るコンパイラ装置2が参照
する演算テーブルは、図3に示した情報に加えて、CP
U51内の演算器が命令列を実行する場合の消費電力お
よび想定演算器が命令列を実行する場合の消費電力に関
する情報が記載されている。そして、この演算テーブル
を参照して、ステップS202Aにおいて、上述の短縮
時間に加えて、CPU51内の演算器が実行する場合の
消費電力、想定演算器が実行する場合の消費電力とを比
較した削減電力が見積もられる。なお、削減電力の見積
もり方法は、短縮時間の場合と同様である。
【0078】次に、ステップS203Aにおいて、ステ
ップS201において抽出された命令列の中から、ステ
ップS202Aにおいて見積もられた短縮時間および削
減電力に基づいて、拡張演算器によって実行されるべき
命令列が選択される。本ステップS203Aは、第1の
実施形態に係るコンパイラ装置2に関するステップS2
03とほぼ同様の処理内容であるので、以下、ステップ
S203Aの処理について、具体例を用いて、図4のフ
ローチャートに従って説明する。
【0079】具体例として、ステップS201におい
て、命令列A、BおよびCが抽出され、ステップS20
2Aにおいて、命令列Aに関して、短縮時間が3および
削減電力が8、命令列Bに関して、短縮時間が4および
削減電力が7、命令列Cに関して、短縮時間が5および
削減電力が6として、それぞれ見積もられたとものとす
る。また、命令列A、BおよびCについての回路面積S
nはいずれも5であるとし、FPGA52の使用可能領
域の回路面積SFは10であるとする。
【0080】まず、ステップS2031において、抽出
された命令列A、BおよびCを選択する。次に、ステッ
プS2032において、回路面積SAとして、命令列A
についての回路面積5+命令列Bについての回路面積5
+命令列Cについての回路面積5=15が見積もられ
る。SF(=10)<SA(=15)であるので、ステ
ップS2033Aに進む。
【0081】ステップS2033Aでは、短縮時間の合
計が与えられた所定値以上で、削減電力の合計が最大と
なるように、選択されている命令列の中から、不必要な
ものが除外される。命令列Aが除外された第1の場合の
短縮時間の合計は、命令列Bについての短縮時間4+命
令列Cについての短縮時間5=9であり、削減電力の合
計は、命令列Bについての削減電力7+命令列Cについ
ての削減電力6=13である。命令列Bが除外された第
2の場合の短縮時間の合計は、命令列Aについての短縮
時間3+命令列Cについての短縮時間5=8であり、削
減電力の合計は、命令列Aについての削減電力8+命令
列Cについての削減電力6=14である。命令列Cが除
外された第3の場合の短縮時間の合計は、命令列Aにつ
いての短縮時間3+命令列Bについての短縮時間4=7
であり、削減電力の合計は、命令列Aについての削減電
力8+命令列Bについての削減電力7=15である。
【0082】ここで、短縮時間の所定値を、たとえば8
とする。上記の3つの組み合わせのうち、短縮時間の合
計が所定値以上という条件を満たすものは、第1および
第2の場合である。さらに、第1および第2の場合にお
ける削減電力の合計を比較すると、第2の場合のほうが
削減電力の合計が大きいことがわかる。したがって、ス
テップS2033Aにおいて、命令列Bが選択から除外
され、ステップS2032に戻る。
【0083】ステップS2032では、回路面積SAと
して、命令列Aについての回路面積5+命令列Bについ
ての回路面積5=10が見積もられる。SF(=10)
≧SA(=10)を満たすので、ステップS2034に
進み、命令列AおよびCを実行する拡張演算器がFPG
A52に回路構成されるものと決定される。
【0084】以上、本実施形態によると、所望の実行速
度の高速化を図りつつ、実行時の消費電力を低減するこ
とができるようなオブジェクトプログラム3および回路
コード4を生成することが可能となる。
【0085】なお、図2のステップS202Aにおいて
性能差として短縮時間および削減電力を見積もるものと
したが、削減できる消費電力のみを見積もるようにして
もよい。これにより、消費電力をより抑えて実行できる
ようなオブジェクトプログラム3および回路コード4を
生成することができる。
【0086】(第3の実施形態)本発明の第3の実施形
態に係るコンパイラ装置2は、ソースプログラム1か
ら、演算テーブルに記載されていない命令列をも抽出し
て、拡張演算器の回路コード4を生成するものである。
これ以外の点については、第1または第2の実施形態に
係るコンパイラ装置2と同様であるので説明を省略し、
以下、本実施形態に係るコンパイラ装置2の特徴部分に
ついて、図2のフローチャートに従って説明する。
【0087】処理が開始すると、まず、ステップS20
1Aにおいて、ソースプログラム1から命令列が抽出さ
れる。ここで、抽出される命令列は、あらかじめ演算テ
ーブルに記載されているものに限定されない。たとえ
ば、3命令以上からなる命令列をも抽出するものとす
る。そして、抽出された各命令列について、ソースプロ
グラム1における出現回数がカウントされ、その出現回
数は演算テーブルに書き込まれる。
【0088】抽出された命令列が演算テーブルに記載さ
れていないものである場合、CPU51内の演算器がそ
の命令列を実行する場合に要するクロックサイクル数、
想定演算器がその命令列を実行する場合に要するクロッ
クサイクル数、想定演算器が要する回路面積などの情報
は、演算テーブル上にない。したがって、これら情報
は、本ステップS201Aにおいて見積もられ、演算テ
ーブルに追加されることになる。
【0089】具体的には、抽出された命令列について論
理圧縮が行われ、この命令列をFPGA52に回路構成
するときの回路コードが見積もられる。そして、この回
路コードから、FPGA52の構成要素のゲート遅延、
配線遅延などが記載されたFPGA基本データに基づい
て、上記の各情報が見積もられ、演算テーブルに追加さ
れる。
【0090】ステップS202(またはS202A)以
降、上記の情報が追加された演算テーブルを参照して処
理が行われ、オブジェクトプログラム3および回路コー
ド4が生成される。
【0091】以上、本実施形態によると、演算テーブル
には記載されていないが、FPGAに構成されることに
より大幅に実行速度が改善されるような命令列や、低消
費電力化ができる命令列などを抽出することができ、ま
た、抽出された命令列に関する各種情報を自動的に見積
もり、それらを演算テーブルに追加することができる。
したがって、FPGA52に回路化する対象となる命令
列を限定することなく、より一層の、FPGA52の回
路構成の最適化を図ることができる。
【0092】(第4の実施形態)本発明の第4の実施形
態に係るコンパイラ装置2Aは、本発明における第2の
レジスタファイルに相当する拡張レジスタファイルの回
路コード4を生成するものである。以下、本実施形態に
係るコンパイラ装置2Aの動作について、図6のフロー
チャートに従って説明する。
【0093】処理が開始すると、まず、ステップS21
1において、ソースプログラム1における各変数の使用
頻度がカウントされる。そして、使用頻度が所定値K以
上の変数に対してレジスタファイルを割り付けるものと
し、このときのレジスタファイルを必要レジスタファイ
ルとして、その数Naが見積もられる。また、必要レジ
スタファイルに対して、それぞれの使用頻度がパラメー
タとして蓄積される。なお、本ステップS211は、本
発明におけるレジスタ処理見積手段が行うものである。
【0094】ステップS212では、必要レジスタファ
イルの数NaとCPU51A内のレジスタファイル(こ
のレジスタファイルは、本発明における第1のレジスタ
ファイルに相当する。)の数との差に相当するNf個の
レジスタファイルが、拡張レジスタファイルとして回路
構成されるものと仮決定される。具体的には、必要レジ
スタファイルを、使用頻度の高い順に、CPU51A内
のレジスタファイルに割り当て、続いて、拡張レジスタ
ファイルに割り当てる。なお、拡張レジスタファイル
は、使用頻度の高い順に、物理的に、CPU51Aに近
い位置に配置されるものとし、この配置に関する配置情
報もあわせて見積もられる。そして、拡張レジスタファ
イル1個あたりの回路面積にNfを乗じた回路面積SR
が見積もられる。
【0095】上記のように、より使用頻度の高いレジス
タファイルをCPU51A内のレジスタファイルに割り
当て、また、より使用頻度の高い拡張レジスタファイル
をCPU51Aに近い位置に配置することにより、CP
U51A内の演算器がレジスタファイルまたは拡張レジ
スタファイルに保持されたデータをアクセスする際のア
クセス時間を短縮することができる。これにより、プロ
グラムの実行をより高速化することができる。
【0096】次に、ステップS213では、FPGA5
2Aの使用可能領域の回路面積SFと回路面積SRとが
比較される。SF<SRであるときは、必要レジスタフ
ァイルの数を削減すべくステップS214に進み、SF
≧SRであるときはステップS215に進む。
【0097】ステップS214では、ステップS211
における所定値Kの値を1つ増加させて、ステップS2
11に戻って必要レジスタファイルの数を再見積もりさ
せる。ステップS211では、所定値Kが大きな値とな
るほど、必要レジスタファイルとして見積もられる数N
aが小さくなる。
【0098】一方、ステップS215では、拡張レジス
タファイルとして仮決定されたものを、すべてFPGA
52Aに回路構成するものとして、拡張レジスタファイ
ルの構成が決定される。そして、拡張レジスタファイル
に、あらかじめ用意されている拡張レジスタファイル名
が割り当てられる。なお、ステップS212からS21
5は、本発明におけるレジスタ処理決定手段が行うもの
である。
【0099】最後に、ステップS216において、最適
化やレジスタ割り付けが行われてオブジェクトプログラ
ム3が生成される。このオブジェクトプログラム3のコ
ーディングに用いられるレジスタファイル名は、ステッ
プS215において割り当てられた拡張レジスタファイ
ル名を含むものである。また、ステップS217におい
て、ステップS214において決定された拡張レジスタ
ファイルの回路コード4が生成される。なお、ステップ
S216は、本発明におけるコンパイル手段が行うもの
であり、ステップS217は、回路コード生成手段が行
うものである。
【0100】次に、本実施形態に係る半導体集積回路に
ついて説明する。
【0101】図7は、本実施形態に係る半導体集積回路
5Aの構成を示す。半導体集積回路5Aは、CPU51
AとFPGA52Aとを備えている。CPU51Aは、
演算器511と、レジスタファイル512と、命令デコ
ーダ513とを備えている。また、FPGA52Aに
は、拡張レジスタファイル522が回路構成されてい
る。この拡張レジスタファイル522は、たとえば、本
実施形態に係るコンパイラ装置2Aによって生成された
回路コード4に基づいて回路構成されたものである。そ
して、半導体集積回路5Aは、たとえば、本実施形態に
係るコンパイラ装置2Aによって生成されたオブジェク
トプログラム3に従って、プログラムを実行するもので
ある。
【0102】半導体集積回路5Aは、上記の各構成要素
間のデータ転送機構として、2つのデータ転送機構TM
6およびTM7を備えている。データ転送機構TM6
は、演算器511および命令デコーダ513の出力を、
拡張レジスタファイル522に転送する。データ転送機
構TM7は、拡張レジスタファイル522に保持された
データを、演算器511に転送する。
【0103】以下、半導体集積回路5Aの動作について
説明する。なお、演算器511、レジスタファイル51
2および命令デコーダ513は一般のCPUに備えられ
たものと同様であるので説明を省略し、拡張レジスタフ
ァイル522の動作を中心に説明する。
【0104】まず、命令デコーダ513は、命令メモリ
6から命令コードをフェッチし、デコードを行う。この
デコード結果は、演算器511およびレジスタファイル
512に転送されるとともに、転送機構TM6によっ
て、拡張レジスタファイル522にも転送することがで
きる。また、拡張レジスタファイル522に保持された
データは、データ転送機構TM7によって、演算器51
1に転送することができる。そして、演算器511の演
算結果は、レジスタファイル512だけではなく、デー
タ転送機構TM6によって、拡張レジスタファイル52
2にも転送することができる。したがって、CPU51
Aは、拡張レジスタファイル522を、レジスタファイ
ル512と同様なレジスタファイルとして取り扱うこと
ができる。
【0105】以上、本実施形態によると、ソースプログ
ラム1の実行に必要なレジスタファイルを、CPU51
A内のレジスタファイルの数に制約を受けることなく、
FPGA52Aに拡張レジスタファイルとして回路構成
することができる。これにより、レジスタファイルが不
足することにより、演算に用いる変数をメモリに退避さ
せるスタック処理による演算処理速度の低下を防ぐこと
ができ、プログラムを高速に実行させることが可能とな
る。また、FPGA52Aに回路構成される拡張レジス
タファイル522は、CPU51A内のレジスタファイ
ル512と同様に取り扱うことができるため、制御が複
雑化することがない。
【0106】なお、たとえば、第1の実施形態のように
FPGA52Aに拡張演算器を回路構成するものとし、
拡張演算器が回路構成されてなおもFPGA52Aに使
用可能領域が残存する場合、拡張レジスタファイル52
2を構成するようにしてもよい。また、これとは逆に、
FPGA52Aに拡張レジスタファイル522の回路構
成がされて、なおもFPGA52Aに使用可能領域が残
存する場合に、拡張演算器を回路構成するようにしても
よい。いずれの場合においても、FPGA52Aに拡張
演算器および拡張レジスタファイルを回路構成すること
により、プログラムの実行速度をより高速化することが
できる。
【0107】(第5の実施形態)本発明の第5の実施形
態に係るコンパイラ装置2Bは、本発明における第2の
命令デコーダに相当する拡張命令デコーダの回路コード
4を生成するものである。以下、本実施形態に係るコン
パイラ装置2Bの動作について、図8のフローチャート
に従って説明する。
【0108】処理が開始すると、まず、ステップS22
1において、ソースプログラム1から命令が抽出され
る。ここで抽出される命令は、たとえば、可変長命令で
ある。さらに、抽出された各命令について、ソースプロ
グラム1における出現回数がカウントされる。なお、本
ステップS221は、本発明における命令抽出手段が行
うものである。
【0109】次に、ステップS222では、CPU51
Bが実行可能な命令と、その命令に対応する命令コード
の命令コード長と、その命令の出現回数とが記載された
命令リストが作成される。図9は、命令Aから命令Fま
でについて作成された命令リストの例を示す。命令リス
トAは出現回数の降順にソートしたものであり、後ほど
説明する命令コードの交換処理において交換対象となる
命令を設定するためのものである。また、命令リストB
は、命令コード長の昇順および出現回数の昇順にソート
したものであり、命令コードの交換処理において交換候
補となる命令を設定するためのものである。なお、本ス
テップS222は、本発明における命令リスト作成手段
が行うものである。
【0110】ステップS223では、上記の命令リスト
を用いて、命令コードの交換が行われる。この命令コー
ドの交換処理については、後ほど詳細に説明する。な
お、本ステップS223は、本発明における命令コード
交換手段が行うものである。
【0111】最後に、ステップS224において、最適
化やレジスタ割り付けが行われてオブジェクトプログラ
ム3が生成される。このオブジェクトプログラム3のコ
ーディングは、ステップS223において命令コードの
交換が行われた後の命令リストに基づいて生成される。
また、ステップS225において、ステップS223に
おいて命令コードの交換が行われた後の命令リストに基
づいてコードマップが作成され、このコードマップを基
にして、拡張命令デコーダの回路コード4が生成され
る。なお、ステップS224は、本発明におけるコンパ
イル手段が行うものであり、ステップS225は、回路
コード生成手段が行うものである。
【0112】次に、ステップS223における命令コー
ドの交換処理について、図10のフローチャートに従っ
て詳細に説明する。
【0113】まず、ステップS2231では、命令リス
トAにおいて、命令コードの交換対象の命令として命令
Xが設定される。命令Xは、命令リストAの命令欄に記
載された命令のうちのいずれか1つを指すものである。
また、ステップS2232では、命令リストBにおい
て、命令コードの交換候補の命令として命令Yが設定さ
れる。命令Yは、命令リストBの命令欄に記載された命
令のうちのいずれか1つを指すものである。
【0114】続くステップS2233では、命令Xの命
令コード長と命令Yの命令コード長とが比較される。そ
して、“命令Xの命令コード長>命令Yの命令コード
長”であるときは、ステップS2234に進む一方、
“命令Xの命令コード長≦命令Yの命令コード長”であ
るときは、命令Xおよび命令Yについて、命令コードの
交換を行わないものとしてステップS2237に進む。
【0115】ステップS2234に進むと、命令リスト
Aを参照し、命令コード交換前の命令コード長総和とし
てL0(=命令Xの命令コード長×命令Xの出現回数+
命令Yの命令コード長×命令Yの出現回数)が算出され
る。また、命令コードが交換されたと想定し、命令コー
ド交換後の命令コード長総和としてL1(=命令Yの命
令コード長×命令Xの出現回数+命令Xの命令コード長
×命令Yの出現回数)が算出される。
【0116】ステップS2235では、命令コード長総
和L0とL1との比較が行われ、L0>L1であるとき
は、これは命令コードの交換を行うことにより総命令コ
ード長が削減可能であることを意味しているので、ステ
ップS2236に進む。一方、L0≦L1であるとき
は、命令コードの交換を行わないものとしてステップS
2232に戻る。ステップS2232に戻ると、命令リ
ストBにおける命令Yの次行の命令が、新たな命令Yと
して設定されることになる。
【0117】ステップS2236に進むと、命令Xの命
令コードと命令Yの命令コードが交換される。そして、
命令リストAおよび命令リストBが更新される。具体的
には、命令リストAにおいては、命令Xの命令コード長
と命令Yの命令コード長とが交換され、命令リストBに
おいては、命令Xの命令コード長と命令Yの命令コード
長とが交換されて命令Xの行が削除され、命令コードの
昇順および出現回数の昇順にソートされる。
【0118】ステップS2237では、命令リストAに
おける命令Xの次行以降に、交換対象および交換候補と
して設定可能な命令が存在するか否かが判定され、存在
するときは、ステップS2231に戻り、命令Xの次行
の命令が新たな命令Xとして設定される。一方、存在し
ないときは、命令コードの交換処理を終了する。
【0119】次に、上記のステップS2231〜223
7までのフローについて、図9に示した命令リストを用
いて具体的に説明する。
【0120】まず、命令リストAの第1行目の命令A
が、命令コードの交換対象の命令Xとして設定される
(S2231)。また、命令リストBの第1行目の命令
Fが、命令コードの交換候補の命令Yとして設定される
(S2232)。ここで、命令Aの命令コード長(=2
4)>命令Fの命令コード長(=8)なので、命令コー
ドの交換を行うものとする(S2233)。
【0121】次に、命令コード交換前の命令コード長総
和としてL0=24×20+8×0=480が、命令コ
ード交換後の命令コード長総和としてL1=8×20+
24×0=160がそれぞれ算出される(S223
4)。ここでL0(=480)>L1(=160)なの
で、命令Aの命令コードおよび命令Fの命令コードの交
換が決定される。そして、命令リストAにおいて、命令
Aの命令コード長と命令Fの命令コード長とが交換され
る。また、命令リストBにおいて、命令Aの命令コード
長と命令Fの命令コード長とが交換されて命令Fの行は
削除され、命令コードの昇順および出現回数の昇順にソ
ートされる(S2236)。こうして得たのが図11に
示した命令リストである。
【0122】命令リストAにおいて、命令Aの次行以降
には、交換対象となる命令Bおよび交換候補となる命令
Cから命令Fが存在するので、次は命令Bについて、命
令コードの交換処理が行われる(S2237)。そし
て、命令Bについて、上記と同様の命令コードの交換処
理が行われた結果、図12に示した命令リストを得る。
【0123】次は、図12の命令リストAにおける命令
Cを交換対象、そして、命令リストBにおける命令Eを
交換候補として命令コードの交換処理が行われる(S2
231、S2232)。しかし、ここで、命令Cの命令
コード長(=16)と命令Eの命令コード長(=16)
とは等しいため、命令コードの交換は行わないものとす
る(S2233)。そして、命令リストAにおいて、命
令Cの次行以降には、交換対象となる命令Dおよび交換
候補となる命令E、Fが存在するので、次は命令Dにつ
いて、命令コードの交換処理が行われる(S223
7)。そして、図12の命令リストAにおける命令Dを
交換対象、そして、命令リストBにおける命令Eを交換
候補として命令コードの交換処理が行われた結果、図1
3に示した命令リストを得る。
【0124】次は、図13の命令リストAにおける命令
Eを交換対象、そして、命令リストBにおける命令Cを
交換候補として命令コードの交換処理が行われる(S2
231、S2232)。命令Eの命令コード長(=3
2)>命令Cの命令コード長(=16)なので、命令コ
ードの交換を行うものとする(S2233)。そして、
命令コード交換前の命令コード長総和としてL0=32
×1+16×5=116が、命令コード交換後の命令コ
ード長総和としてL1=16×1+32×5=176が
それぞれ算出される(S2234)。ここで、L0(=
116)<L1(=176)となり、命令コードの交換
後の命令コード長総和L1の方が交換前の総和L0より
も大きいので、命令Eの命令コードと命令Cの命令コー
ドの交換を行わないものとする(S2235)。
【0125】次に、命令リストBにおける命令Cの次行
の命令Fが交換候補として設定される(S2232)。
命令Eの命令コード長(=32)>命令Fの命令コード
長(=24)なので、命令コードの交換を行うものとす
る(S2233)。そして、命令コード交換前の命令コ
ード長総和としてL0=32×1+24×0=32が、
命令コード交換後の命令コード長総和としてL1=24
×1+32×0=24がそれぞれ算出される(S223
4)。ここで、L0(=32)>L1(=24)なの
で、命令Eの命令コードと命令Fの命令コードとの交換
が決定される。そして、命令リストAにおいて、命令E
の命令コード長と命令Fの命令コード長とが交換され
る。また、命令リストBにおいて、命令Eの命令コード
長と命令Fの命令コード長とが交換されて命令Fの行は
削除され、命令コードの昇順および出現回数の昇順にソ
ートされる(S2236)。こうして得たのが図14に
示した命令リストである。
【0126】図14の命令リストAにおいて、命令Eの
次行以降には命令Fしか存在しないので、命令コードの
交換処理を終了する(S2237)。以上の結果、命令
コード長の総和は、命令コードの交換処理を行うことに
より、交換処理前の1080から、交換処理後の432
に削減される。
【0127】次に、本実施形態に係る半導体集積回路に
ついて説明する。
【0128】図15は、本実施形態に係る半導体集積回
路5Bの構成を示す。半導体集積回路5Bは、CPU5
1BとFPGA52Bとを備えている。CPU51B
は、演算器511と、レジスタファイル512と、命令
デコーダ513と、選択回路514とを備えている。ま
た、FPGA52Bには、拡張命令デコーダ523が回
路構成されている。この拡張命令デコーダ523は、た
とえば、本実施形態に係るコンパイラ装置2Bによって
生成された回路コード4に基づいて回路構成されたもの
である。そして、半導体集積回路5Bは、たとえば、本
実施形態に係るコンパイラ装置2Bによって生成された
オブジェクトプログラム3に従って、プログラムを実行
するものである。
【0129】半導体集積回路5Bは、上記の各構成要素
間のデータ転送機構として、2つのデータ転送機構TM
8およびTM9を備えている。データ転送機構TM8
は、命令デコーダ513が命令メモリ6から入力する命
令コードを拡張命令デコーダ523に転送する。データ
転送機構TM9は、拡張命令デコーダ523のデコード
結果を、選択回路514に転送する。
【0130】選択回路514は、命令デコーダ513の
デコード結果、およびデータ転送機構TM9によって転
送される拡張命令デコーダ523のデコード結果のいず
れか一方を選択し、演算器511およびレジスタファイ
ル512に出力する。この選択のために、拡張命令デコ
ーダ523は、デコード結果だけではなく、選択回路5
14を制御するための制御信号をも出力するように構成
される。選択回路514は、データ転送機構TM9によ
って転送された制御信号に基づいて、デコード結果の選
択を行う。
【0131】以下、半導体集積回路5Bの動作について
説明する。なお、演算器511、レジスタファイル51
2および命令デコーダ513は一般のCPUに備えられ
たものと同様であるため説明を省略し、選択回路514
および拡張命令デコーダ523の動作を中心に説明す
る。
【0132】まず、命令デコーダ513は、命令メモリ
6から命令コードをフェッチし、デコードを行う。ま
た、これと同じ命令コードが、データ転送機構TM8に
より、拡張命令デコーダ523にも転送される。命令デ
コーダ513のデコード結果は選択回路514に送ら
れ、拡張命令デコーダ523のデコード結果もまた、デ
ータ転送機構TM9によって、選択回路514に転送さ
れる。ここで、拡張命令デコーダ523が、たとえば、
本実施形態に係るコンパイラ装置2Bによって交換され
た命令コードを入力する場合、選択回路514に、デコ
ード結果とともに制御信号も転送される。
【0133】選択回路514は、データ転送機構TM9
によって制御信号を受けた場合、拡張命令デコーダ52
3のデコード結果を選択する。一方、制御信号がない場
合、命令デコーダ513のデコード結果を選択する。そ
して、選択したデコード結果を、演算器511およびレ
ジスタファイル512に出力する。
【0134】以上、本実施形態によると、オブジェクト
プログラム3の命令コードのコード長総和を小さくする
ことができる。これにより、命令メモリ6の容量を削減
することができ、コストを削減することができる。ま
た、FPGA52Bに拡張命令デコーダ523を回路構
成することにより、命令コードの交換処理に対して、半
導体集積回路5Bを作り変えることなく、柔軟に対応す
ることができる。
【0135】(第6の実施形態)本発明の第6の実施形
態に係るコンパイラ装置2Cは、本発明における第2の
命令デコーダに相当する拡張命令デコーダの回路コード
4を生成するものである。以下、本実施形態に係るコン
パイラ装置2Cの動作について、図16のフローチャー
トに従って説明する。
【0136】処理が開始すると、まず、ステップS23
1において、ソースプログラム1において頻繁に使用さ
れる命令列として、ソースプログラム1での出現回数が
所定値以上である命令列が抽出される。ここで抽出され
る命令列は、たとえば、一連の命令の組み合わせからな
る特定命令列である。また、特定命令列は、演算テーブ
ルなどにより、あらかじめ与えられているものとする。
なお、本ステップS221は、本発明における命令列抽
出手段が行うものである。
【0137】次に、ステップS232に進み、ステップ
S231において抽出された特定命令列を1つの複合命
令とみなし、その特定命令列に新たな命令コードを割り
当てる。このとき、新たな命令コードのコード長が、特
定命令列全体の命令コードのコード長よりも小さくなる
ようにする。なお、新たな命令コードは、CPU51B
用にあらかじめ用意されているものとは異なるものであ
る。なお、本ステップS232は、本発明の命令コード
割当手段が行うものである。
【0138】最後に、ステップS233において、最適
化やレジスタ割り付けが行われてオブジェクトプログラ
ム3が生成される。このオブジェクトプログラム3のコ
ーディングは、ステップS232において新たに割り当
てられた命令コードを用いて生成される。また、ステッ
プS234において、ステップS232において新たに
割り当てられた命令コードに基づいてコードマップが作
成され、このコードマップを基にして、拡張命令デコー
ダの回路コード4が生成される。なお、ステップS23
3は、本発明におけるコンパイル手段が行うものであ
り、ステップS234は、本発明における回路コード生
成手段が行うものである。
【0139】以上、本実施形態によると、オブジェクト
プログラム3の命令コードのコード長総和を小さくする
ことができる。これにより、命令メモリ6の容量を削減
することができ、コストを削減することができる。ま
た、FPGA52Bに拡張命令デコーダ523を回路構
成することにより、命令コードの交換処理に対して、半
導体集積回路5Bを作り変えることなく、柔軟に対応す
ることができる。
【0140】(第7の実施形態)本発明の第7の実施形
態に係るコンパイラ装置2Dは、本発明における第2の
演算器に相当する拡張演算器と、第2のレジスタファイ
ルに相当する拡張レジスタファイルと、第2の命令デコ
ーダに相当する拡張命令デコーダの回路コード4を生成
するものである。以下、本実施形態に係るコンパイラ装
置2Dの動作について、図17のフローチャートに従っ
て説明する。
【0141】処理が開始すると、まず、ステップS24
01において、ソースプログラム1から命令列が抽出さ
れる。本ステップS2401は、図2のステップS20
1またはS201Aと同様であり、本発明の第1の命令
列抽出手段が行うものである。
【0142】ステップS2402では、図3に示したよ
うな演算テーブルを参照して、抽出された各命令列に関
するCPU51C内の演算器と想定演算器との処理性能
差が見積もられる。本ステップS2402は、図2のス
テップS202またはS202Aと同様であり、本発明
の処理見積手段が行うものである。
【0143】ステップS2403では、ステップS24
01において抽出された命令列の中から、ステップS2
402において見積もられた処理性能、たとえば、短縮
時間を基にして、拡張演算器によって実行されるべき命
令列が選択され、拡張演算器の構成が決定される。本ス
テップS2403は、図2のステップS203またはS
203Aと同様であり、本発明の処理決定手段が行うも
のである。
【0144】ステップS2404では、ステップS24
03において選択された命令列を新たな複合命令とみな
して、この複合命令に、あらかじめ複数用意されている
拡張命令コードが割り当てられる。この拡張命令コード
は、FPGA52Cに回路構成される拡張演算器によっ
て実行されるものである。本ステップS2404は、図
2のステップS204と同様であり、本発明の第1の命
令コード割当手段が行うものである。
【0145】次に、ステップS2405において、ソー
スプログラム1での使用頻度が所定値K以上の変数に対
して必要レジスタファイルを割り付けるものとし、その
数Naが見積もられる。また、必要レジスタファイルに
対して、それぞれの使用頻度がパラメータとして蓄積さ
れる。本ステップS2405は、図6のステップS21
1と同様であり、本発明のレジスタ見積手段が行うもの
である。
【0146】続くステップS2406では、拡張レジス
タファイルの数が最適化される。まず、拡張レジスタフ
ァイルが仮決定され、拡張レジスタファイルの回路面積
SRが見積もられる。なお、仮決定および回路面積SR
の算出方法は、図6のステップS212において行われ
るものと同様である。
【0147】そして、回路面積SRとFPGA52Cの
使用可能領域の回路面積SFとが比較される。ここでの
回路面積SFは、ステップS2403において決定され
た拡張演算器が要する回路面積SFFが既に引き去られ
たものとする。比較の結果、SR≦SFであるときは、
ステップS2408に進み、拡張レジスタファイルの構
成を決定する。一方、SR>SFであるときは、拡張レ
ジスタファイルの数の最適化が行われる。
【0148】拡張レジスタファイルの数の最適化におい
ては、まず、FPGA52Cの使用可能領域に回路構成
可能な拡張レジスタファイルの最大数Nbが見積もられ
る。これは、回路面積SFを拡張レジスタファイル1つ
あたりの回路面積で除算することにより見積もることが
できる。ここで、FPGA52Cに回路構成できない拡
張レジスタファイルとして使用頻度の低いものを選択
し、この拡張レジスタファイルに割り当てられる変数の
データが、拡張レジスタファイルが回路構成されないこ
とによりメモリにスタックされる回数SDが見積もられ
る。
【0149】上記のスタック動作に必要なクロック数を
SSとすると、拡張レジスタファイルの数をNbより1
つ増やしたとき、プログラム実行の短縮時間RT1はS
D×SSである。ここで、短縮時間RT1と、ステップ
S2403において選択された命令列のうち、その想定
演算器の回路面積が拡張レジスタファイル1個分の面積
であるようなものについての短縮時間RT2とが比較さ
れる。このとき、RT1>RT2であるときは、その命
令列を拡張演算器用として選択された命令列から除外し
て、代わりに拡張レジスタファイルを1つ増やす方がプ
ログラムの実行速度が速くなる。したがって、RT1>
RT2の場合、Nbを1つ増やして、再度、本ステップ
S2406における拡張レジスタファイルの最適化の処
理を行う。
【0150】一方、RT1≦RT2であるときは、これ
以上拡張レジスタファイルを増やしても、プログラムの
速度向上は図れないので、ステップS2408に進み、
拡張レジスタファイルの決定を行う。以上、本ステップ
S2406は、本発明のレジスタ数最適化手段が行うも
のである。
【0151】次に、ステップS2408では、拡張レジ
スタファイルとして仮決定されたものが、すべてFPG
A52Cに回路構成するものとして、最終的な拡張レジ
スタファイルの構成が決定される。そして、拡張レジス
タファイルに、あらかじめ用意されている拡張レジスタ
ファイル名が割り当てられる。なお、本ステップS24
08は、本発明のレジスタ処理決定手段が行うものであ
る。
【0152】そして、ステップS2409において、最
適化やレジスタ割り付けが行われてオブジェクトプログ
ラムが仮生成される。このオブジェクトプログラムのコ
ーディングには、ステップS2404において割り当て
られた拡張命令コード、およびステップS2408にお
いて割り当てられた拡張レジスタファイル名が用いられ
る。なお、本ステップS2407は、本発明の第1のコ
ンパイル手段が行うものである。
【0153】ここで、ソースプログラム1からオブジェ
クトプログラムが仮生成されるまで(S2401からS
2407まで)について、図18のソースプログラム例
を用いて説明する。なお、説明の都合上、CPU51C
内のレジスタファイルの数を2、拡張レジスタファイル
1つあたりの回路面積SRを1、FPGA52Cの回路
面積SFAを20、FPGA52Cにおいて拡張演算器
および拡張レジスタファイルの回路構成に使用可能な領
域の回路面積SFを8とし、CPU51Cは拡張命令コ
ードとしてexfunc1 、exfunc2 およびexfunc3 を準備し
ているものとする。また、演算テーブルとして、図3に
示したものを用いるものとする。
【0154】まず、ソースプログラムから、演算テーブ
ル1行目の命令列“(a+b)*c ”が抽出される(S240
1)。また、命令列“(a+b)*c ”の出現回数は1回とカ
ウントされ、演算テーブルに書き込まれる。そして、演
算テーブルを参照して、想定演算器が命令列“(a+b)*c
”を実行することにより、1(=2×1−1×1)だ
け、プログラムの実行時間が短縮されることが見積もら
れる(S2402)。ここで、命令列“(a+b)*c ”を実
行する拡張演算器をFPGA52Cに回路構成するのに
要する回路面積SAは3であり、SF(=8)>SA
(=3)であるから、この演算器はFPGA52Cに回
路構成されるものとして決定され(S2403)、命令
列“(a+b)*c ”に拡張命令コードexfunc1 が割り当てら
れる(S2404)。
【0155】次に、ソースプログラムにおいて変数とし
て使用されているものは、a、bおよびcの3つであ
り、必要レジスタファイルの数として3が見積もられる
(S2405)。そして、CPU51Cは2つのレジス
タファイルを備えるので、拡張レジスタファイルの数と
して1が見積もられる。ここで、FPGA52Cに残存
する使用可能領域の回路面積SF=5(=8−3)であ
り、SF(=5)>SR(=1)なので、1個の拡張レ
ジスタファイルを回路構成することが決定される(S2
406、S2408)。
【0156】以上のようにして、図19に示すオブジェ
クトプログラムが仮生成される(S2407)。このオ
ブジェクトプログラムにおいて、拡張命令コードは4行
目の“exfunc1 ”であり、拡張レジスタファイル名は3
および4行目の“D2”である。このオブジェクトプログ
ラムを、拡張演算器および拡張レジスタファイルのいず
れも回路構成しないという条件で生成された図20のオ
ブジェクトプログラムと比較すると、図19のオブジェ
クトプログラムの方が、プログラム全体の命令コード数
が削減されていることがわかる。また、拡張レジスタフ
ァイルのみを回路構成するという条件で生成された図2
1のオブジェクトプログラムと比較しても、図19のオ
ブジェクトプログラムの方が、プログラム全体の命令コ
ード数が削減されていることがわかる。
【0157】次に、図17におけるステップS2410
以降について説明する。
【0158】ステップS2410では、ステップS24
09において仮生成されたオブジェクトプログラムか
ら、命令列が抽出される。ここで抽出される命令列は、
たとえば、一連の命令の組み合わせからなる特定命令列
である。また、特定命令列は、演算テーブルなどに、あ
らかじめ与えられているものとする。なお、本ステップ
S2410は、本発明の第2の命令列抽出手段が行うも
のである。
【0159】続くステップS2411では、ステップS
2410において抽出された特定命令列を1つの複合命
令とみなし、その特定命令列に新たな命令コードを割り
当てる。このとき、この新たな命令コードのコード長
が、特定命令列全体の命令コードのコード長よりも小さ
くなるようにする。なお、新たな命令コードは、CPU
51C用にあらかじめ用意されているものとは異なるも
のである。なお、本ステップS2411は、本発明の第
2の命令コード割当手段が行うものである。
【0160】最後に、ステップS2412において、最
適化やレジスタ割り付けが行われてオブジェクトプログ
ラム3が生成される。このオブジェクトプログラム3の
コーディングに用いられる命令コードおよびレジスタフ
ァイル名は、ステップS2404において割り当てられ
た拡張命令コード、およびステップS2408において
割り当てられた拡張レジスタファイル名を含むものであ
る。また、ステップS2413において、ステップS2
411において新たに割り当てられた命令コードに基づ
いてコードマップが作成され、このコードマップを基に
して、拡張命令デコーダの回路コード4が生成される。
また、ステップS2404において決定された拡張演算
器、およびステップS2408において決定された拡張
レジスタファイルの回路コード4も生成される。なお、
ステップS2412は、本発明の第2のコンパイル手段
が行うものであり、ステップS2413は、回路コード
生成手段が行うものである。
【0161】次に、本実施形態に係る半導体集積回路に
ついて説明する。
【0162】図22は、本実施形態に係る半導体集積回
路5Cの構成を示す。半導体集積回路5Cは、CPU5
1Cと、FPGA52Cと、メモリ53とを備えてい
る。CPU51Cは、演算器511と、レジスタファイ
ル512と、命令デコーダ513と、選択回路514と
を備えている。また、FPGA52Cには、拡張演算器
521と、拡張レジスタファイル522と、拡張命令デ
コーダ523とが回路構成されている。この拡張演算器
521、拡張レジスタファイル522および拡張命令デ
コーダ523は、たとえば、本実施形態に係るコンパイ
ラ装置2Dによって生成された回路コード4に基づい
て、それぞれ回路構成されたものである。そして、半導
体集積回路5Cは、たとえば、本実施形態に係るコンパ
イラ装置2Dによって生成されたオブジェクトプログラ
ム3に従って、プログラムを実行するものである。
【0163】半導体集積回路5Cは、上記の各構成要素
間のデータ転送機構として、12個のデータ転送機構T
M1、TM2A、TM3、TM4、TM5、TM6A、
TM7、TM8、TM9、TM10、TM11およびT
M12を備えている。
【0164】データ転送機構TM2Aは、選択回路51
4によって選択されたデコード結果を拡張演算器521
に転送するものであり、データ転送機構TM6Aは、演
算器511の出力および選択回路514によって選択さ
れたデコード結果を拡張レジスタファイル522に転送
するものであり、データ転送機構TM10は、拡張レジ
スタファイル522に保持されたデータを拡張演算器5
21に転送するものであり、データ転送機構TM11
は、拡張命令デコーダ523のデコード結果を拡張レジ
スタファイル522に転送するものであり、そして、デ
ータ転送機構TM12は、拡張演算器521の演算結果
を拡張レジスタファイル522に転送するものである。
これ以外のデータ転送機構については、これまでに説明
したとおりであるので説明を省略する。
【0165】以下、半導体集積回路5Cの動作について
説明する。なお、演算器511、レジスタファイル51
2および命令デコーダ513は一般のCPUに備えられ
たものと同様であるため説明を省略し、拡張演算器52
1、拡張レジスタファイル522および拡張命令デコー
ダ523の動作を中心に説明する。
【0166】まず、命令デコーダ513は、命令メモリ
6から命令コードをフェッチし、デコードを行う。ま
た、これと同じ命令コードが、データ転送機構TM8に
より、拡張命令デコーダ523にも転送される。命令デ
コーダ513のデコード結果は選択回路514に送ら
れ、拡張命令デコーダ523のデコード結果もまた、デ
ータ転送機構TM9によって、選択回路514に転送さ
れる。ここで、制御信号も転送されるが、これについて
は、第5の実施形態において説明したとおりである。
【0167】次に、選択回路514によって選択された
命令デコードの結果は、演算器511やレジスタファイ
ル512だけではなく、データ転送機構TM2Aによっ
て拡張演算器521に、そして、データ転送機構TM6
Aによって拡張レジスタファイル522にも転送するこ
とができる。つまり、拡張演算器521および拡張レジ
スタファイル522は、演算器511やレジスタファイ
ル512と同様に制御することが可能である。
【0168】以上、本実施形態によると、拡張演算器5
21および拡張レジスタファイル522の回路コード4
を生成し、また、拡張演算器521および拡張レジスタ
ファイル522を使用するようなオブジェクトプログラ
ム3を生成することができる。そして、回路コード4に
基づいて、実際に、FPGA52Cに拡張演算器521
および拡張レジスタファイル522を回路構成し、オブ
ジェクトプログラム3に従って、プログラムを高速に実
行することができる。また、拡張演算器521および拡
張レジスタファイル522は、演算器511およびレジ
スタファイル512と同様に取り扱うことができるた
め、制御が複雑化することがない。
【0169】さらに、オブジェクトプログラム3の命令
コードのコード長総和を小さくすることができる。これ
により、命令メモリ6の容量を削減することができ、コ
ストを削減することができる。
【0170】なお、本実施形態に係るコンパイラ装置2
Dは、先に拡張演算器の構成を決定し、その後、拡張レ
ジスタファイルの構成を決定するものとしたが、これと
は逆に、先に拡張レジスタファイルの構成を決定し、そ
の後、拡張演算器の構成を決定するようにしてもよい。
【0171】以上で説明したコンパイラ装置2、2A、
2B、2C、2Dと半導体集積回路5、5A、5B、5
Cとは互いに独立して動作することができる。したがっ
て、半導体集積回路5、5A、5B、5Cが入力するオ
ブジェクトプログラム3および回路コード4は、コンパ
イラ装置2、2A、2B、2C、2D以外によって生成
されるものであってもよい。
【0172】
【発明の効果】上記の説明のとおり、本発明によると、
ソースプログラムから、ソースプログラムにおいて処理
負荷の大きな部分を実行する拡張演算器(第2の演算
器)やソースプログラムの実行に必要な数の拡張レジス
タファイル(第2の拡張レジスタファイル)の回路コー
ドを生成するとともに、これら拡張演算器や拡張レジス
タファイルの使用を前提としたオブジェクトプログラム
を生成することができる。そして、CPUとFPGAと
が混載された半導体集積回路において、回路コードに基
づいてFPGAに拡張演算器や拡張レジスタファイルが
回路構成されることにより、オブジェクトプログラムの
実行が可能な半導体集積回路を実現することができる。
このような半導体集積回路でオブジェクトプログラムを
実行することにより、プログラムの実行速度を高速化す
ることができる。
【0173】また、生成されるオブジェクトプログラム
および回路コードとして、プログラムの実行速度を高速
化するものだけではなく、所望の実行速度を確保しつつ
消費電力を抑えたようなものをも生成することができ
る。
【0174】さらに、ソースプログラムから、コードサ
イズを縮小したオブジェクトプログラムを生成するとと
もに、このオブジェクトプログラムの実行に必要な拡張
命令デコーダ(第2の命令デコーダ)の回路コードを生
成することができる。そして、CPUとFPGAとが混
載された半導体集積回路において、回路コードに基づい
てFPGAに拡張命令デコーダが回路構成されることに
より、半導体集積回路は、コードサイズが縮小されたオ
ブジェクトプログラムの実行が可能となる。これによ
り、オブジェクトプログラムを格納するための命令メモ
リ容量が少なくて済み、メモリに係るコストを削減する
ことができる。
【図面の簡単な説明】
【図1】本発明のコンパイラ装置および半導体集積回路
からなるシステムの構成図である。
【図2】本発明の第1から第3の実施形態に係るコンパ
イラ装置のフローチャートである。
【図3】演算テーブルの具体例である。
【図4】本発明の第1から第3の実施形態に係るコンパ
イラ装置における処理決定手段のフローチャートであ
る。
【図5】本発明の第1の実施形態に係る半導体集積回路
の構成図である。
【図6】本発明の第4の実施形態に係るコンパイラ装置
のフローチャートである。
【図7】本発明の第4の実施形態に係る半導体集積回路
の構成図である。
【図8】本発明の第5の実施形態に係るコンパイラ装置
のフローチャートである。
【図9】命令リストの具体例である。
【図10】本発明の第5の実施形態に係るコンパイラ装
置における命令コード交換手段のフローチャートであ
る。
【図11】命令リストの具体例である。
【図12】命令リストの具体例である。
【図13】命令リストの具体例である。
【図14】命令リストの具体例である。
【図15】本発明の第5の実施形態に係る半導体集積回
路の構成図である。
【図16】本発明の第6の実施形態に係るコンパイラ装
置のフローチャートである。
【図17】本発明の第7の実施形態に係るコンパイラ装
置のフローチャートである。
【図18】ソースプログラムの具体例である。
【図19】オブジェクトプログラムの具体例である。
【図20】オブジェクトプログラムの具体例である。
【図21】オブジェクトプログラムの具体例である。
【図22】本発明の第7の実施形態に係る半導体集積回
路の構成図である。
【符号の説明】
1 ソースプログラム 2、2A、2B、2C、2D コンパイラ装置 3 オブジェクトプログラム 4 回路コード 5、5A、5B、5C 半導体集積回路 51、51A、51B、51C CPU 511 演算器(第1の演算器) 512 レジスタファイル(第1のレジスタファイル) 513 命令デコーダ(第1の命令デコーダ) 514 選択回路 52、52A、52B、52C FPGA(プログラマ
ブルデバイス) 521 拡張演算器(第2の演算器) 522 拡張レジスタファイル(第2のレジスタファイ
ル) 523 拡張命令デコーダ(第2の命令デコーダ) 53 メモリ TM1 データ転送機構(第1のデータ転送機構) TM2、TM2A データ転送機構(第2のデータ転送
機構) TM3 データ転送機構(第3のデータ転送機構) TM4 データ転送機構(第3のデータ転送機構) TM5 データ転送機構 TM6、TM6A データ転送機構(第1のデータ転送
機構、第4のデータ転送機構) TM7 データ転送機構(第2のデータ転送機構、第5
のデータ転送機構) TM8 データ転送機構(第1のデータ転送機構、第4
のデータ転送機構、第3のデータ転送機構) TM9 データ転送機構(第2のデータ転送機構、第5
のデータ転送機構、第4のデータ転送機構) TM10 データ転送機構(第6のデータ転送機構) TM11 データ転送機構(第5のデータ転送機構) TM12 データ転送機構(第7のデータ転送機構) S201、S201A 命令列抽出手段 S202、S202A 処理見積手段 S203、S203A 処理決定手段 S204 命令コード割当手段 S205 コンパイル手段 S206 回路コード生成手段 S211 レジスタ処理見積手段 S212、S213、S214、S215 レジスタ処
理決定手段 S216 コンパイル手段 S217 回路コード生成手段 S221 命令抽出手段 S222 命令リスト作成手段 S223 命令コード交換手段 S224 コンパイル手段 S225 回路コード生成手段 S231 命令列抽出手段 S232 命令コード割当手段 S233 コンパイル手段 S234 回路コード生成手段 S2401 第1の命令列抽出手段 S2402 処理見積手段 S2403 処理決定手段 S2404 第1の命令コード割当手段 S2405 レジスタ処理見積手段 S2406、S2407 レジスタ数最適化手段 S2408 レジスタ処理決定手段 S2409 第1のコンパイル手段 S2410 第2の命令列抽出手段 S2411 第2の命令コード割当手段 S2412 第2のコンパイル手段 S2413 回路コード生成手段
───────────────────────────────────────────────────── フロントページの続き (72)発明者 山本 淳也 大阪府門真市大字門真1006番地 松下シス テムテクノ株式会社内 (72)発明者 高山 秀一 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 (72)発明者 矢野 純一 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 (72)発明者 吉田 久人 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 (72)発明者 饗庭 侯彦 大阪府門真市大字門真1006番地 松下電器 産業株式会社内 Fターム(参考) 5B046 AA08 BA03 5B079 BC01 DD13 5B081 CC21 CC25

Claims (30)

    【特許請求の範囲】
  1. 【請求項1】 ソースプログラムから、第1の演算器を
    備えたCPUと回路構成が書き換え可能なプログラマブ
    ルデバイスとが混載された半導体集積回路によって実行
    されるオブジェクトプログラムと、該プログラマブルデ
    バイスの回路構成を決定する回路コードとを生成するコ
    ンパイラ装置であって、 前記ソースプログラムから少なくとも1つの第1の命令
    列を抽出する命令列抽出手段と、 前記第1の命令列について、前記第1の演算器によって
    実行される場合の第1の処理性能と、前記プログラマブ
    ルデバイスに回路構成されたと想定した想定演算器によ
    って実行される場合の第2の処理性能との性能差をそれ
    ぞれ見積もる処理見積手段と、 前記性能差に基づいて、前記第1の命令列の中から、前
    記プログラマブルデバイスに回路構成される第2の演算
    器によって実行されるべき第2の命令列を選択し、該第
    2の演算器の構成を決定する処理決定手段と、 前記第2の命令列を複合命令として、該複合命令に前記
    第2の演算器用の命令コードを割り当てる命令コード割
    当手段と、 前記複合命令に割り当てられた命令コードを用いて、前
    記オブジェクトプログラムを生成するコンパイル手段
    と、 前記第2の演算器の前記回路コードを生成する回路コー
    ド生成手段とを備えたことを特徴とするコンパイラ装
    置。
  2. 【請求項2】 請求項1記載のコンパイラ装置におい
    て、 前記命令列抽出手段は、 前記第1の命令列の前記ソースプログラムにおける出現
    回数をカウントするものであり、 前記処理見積手段は、 前記第1の処理性能として、前記第1の演算器が前記第
    1の命令列を前記出現回数だけ実行する場合の第1の処
    理時間を見積もり、前記第2の処理性能として、前記想
    定演算器が前記第1の命令列を前記出現回数だけ実行す
    る場合の第2の処理時間を見積もり、前記性能差とし
    て、該第1の処理時間と該第2の処理時間との差に相当
    する短縮時間を見積もるものであることを特徴とするコ
    ンパイラ装置。
  3. 【請求項3】 請求項2記載のコンパイラ装置におい
    て、 前記処理決定手段は、 前記第2の演算器の回路面積が前記プログラマブルデバ
    イスの使用可能領域の回路面積以下であり、かつ前記短
    縮時間の合計が最大となるように、前記第2の命令列を
    選択するものであることを特徴とするコンパイラ装置。
  4. 【請求項4】 請求項1記載のコンパイラ装置におい
    て、 前記命令列抽出手段は、 前記第1の命令列の前記ソースプログラムにおける出現
    回数をカウントするものであり、 前記処理見積手段は、 前記第1の処理性能として、前記第1の演算器が前記第
    1の命令列を前記出現回数だけ実行する場合の第1の消
    費電力を見積もり、前記第2の処理性能として、前記想
    定演算器が前記第1の命令列を前記出現回数だけ実行す
    る場合の第2の消費電力を見積もり、前記性能差とし
    て、該第1の消費電力と該第2の消費電力との差に相当
    する削減電力を見積もるものであることを特徴とするコ
    ンパイラ装置。
  5. 【請求項5】 請求項4記載のコンパイラ装置におい
    て、 前記処理決定手段は、 前記第2の演算器の回路面積が前記プログラマブルデバ
    イスの使用可能領域の回路面積以下であり、かつ前記削
    減電力の合計が最大となるように、前記第2の命令列を
    選択するものであることを特徴とするコンパイラ装置。
  6. 【請求項6】 請求項1記載のコンパイラ装置におい
    て、 前記命令列抽出手段は、 前記第1の命令列の前記ソースプログラムにおける出現
    回数をカウントするものであり、 前記処理見積手段は、 前記第1の処理性能として、前記第1の演算器が前記第
    1の命令列を前記出現回数だけ実行する場合の第1の処
    理時間および第1の消費電力を見積もり、前記第2の処
    理性能として、前記想定演算器が前記第1の命令列を前
    記出現回数だけ実行する場合の第2の処理時間および第
    2の消費電力を見積もり、前記性能差として、該第1の
    処理時間と該第2の処理時間との差に相当する短縮時間
    および該第1の消費電力と該第2の消費電力との差に相
    当する削減電力を見積もるものであり、 前記処理決定手段は、 前記第2の演算器の回路面積が前記プログラマブルデバ
    イスの使用可能領域の回路面積以下であり、かつ前記短
    縮時間の合計が所定値以上で前記削減電力の合計が最大
    となるように、前記第2の命令列を選択するものである
    ことを特徴とするコンパイラ装置。
  7. 【請求項7】 請求項1記載のコンパイラ装置におい
    て、 命令列、前記第1の演算器が該命令列を実行する場合の
    処理時間、前記想定演算器が該命令列を実行する場合の
    処理時間および前記想定演算器が要する回路面積があら
    かじめ記載された演算テーブルを用い、 前記命令列抽出手段は、 前記演算テーブルを参照して、前記第1の命令列を抽出
    するものであり、 前記処理見積手段は、 前記演算テーブルを参照して、前記性能差を見積もるも
    のであることを特徴とするコンパイラ装置。
  8. 【請求項8】 請求項7記載のコンパイラ装置におい
    て、 前記命令列抽出手段は、 前記ソースプログラムから前記演算テーブルに記載外の
    命令列をも抽出し、該記載外の命令列について、前記第
    1の演算器によって実行される場合の処理時間と、前記
    想定演算器によって実行される場合の処理時間と、該想
    定演算器が要する回路面積とを見積もり、前記演算テー
    ブルに追加するものであることを特徴とするコンパイラ
    装置。
  9. 【請求項9】 請求項1記載のコンパイラ装置におい
    て、 命令列、前記第1の演算器が該命令列を実行する場合の
    消費電力、前記想定演算器が該命令列を実行する場合の
    消費電力および前記想定演算器が要する回路面積があら
    かじめ記載された演算テーブルを用い、 前記命令列抽出手段は、 前記演算テーブルを参照して、前記第1の命令列を抽出
    するものであり、 前記処理見積手段は、 前記演算テーブルを参照して、前記性能差を見積もるも
    のであることを特徴とするコンパイラ装置。
  10. 【請求項10】 請求項9記載のコンパイラ装置におい
    て、 前記命令列抽出手段は、 前記ソースプログラムから前記演算テーブルに記載外の
    命令列をも抽出し、該記載外の命令列について、前記第
    1の演算器によって実行される場合の消費電力と、前記
    想定演算器によって実行される場合の消費電力と、該想
    定演算器が要する回路面積とを見積もり、前記演算テー
    ブルに追加するものであることを特徴とするコンパイラ
    装置。
  11. 【請求項11】 ソースプログラムから、第1のレジス
    タファイルを備えたCPUと回路構成が書き換え可能な
    プログラマブルデバイスとが混載された半導体集積回路
    によって実行されるオブジェクトプログラムと、該プロ
    グラマブルデバイスの回路構成を決定する回路コードと
    を生成するコンパイラ装置であって、 前記ソースプログラムの実行に必要な必要レジスタファ
    イルの数を見積もるレジスタ処理見積手段と、 前記必要レジスタファイルの数および前記第1のレジス
    タファイルの数を考慮して、前記プログラマブルデバイ
    スに回路構成をすべき第2のレジスタファイルの構成を
    決定するとともに、該第2のレジスタファイルに、前記
    第1のレジスタファイルに割り当てられる第1のレジス
    タファイル名とは別の第2のレジスタファイル名を割り
    当てるレジスタ処理決定手段と、 前記第2のレジスタファイル名を用いて、前記オブジェ
    クトプログラムを生成するコンパイル手段と、 前記第2のレジスタファイルの前記回路コードを生成す
    る回路コード生成手段とを備えたことを特徴とするコン
    パイラ装置。
  12. 【請求項12】 請求項11記載のコンパイラ装置にお
    いて、 前記レジスタ処理見積手段は、 前記必要レジスタファイルの数として、前記ソースプロ
    グラムにおける使用頻度が所定値以上である変数の個数
    を見積もるものであることを特徴とするコンパイラ装
    置。
  13. 【請求項13】 請求項12記載のコンパイラ装置にお
    いて、 前記レジスタ処理決定手段は、 前記必要レジスタファイルのうち前記使用頻度の高いも
    のから順に前記第1および第2のレジスタファイルの順
    に割り当て、前記第2のレジスタファイルに割り当てら
    れるレジスタファイルについては、前記使用頻度の高い
    順に前記CPUに近い位置に配置するようにして、前記
    第2のレジスタファイルの構成を決定するものであるこ
    とを特徴とするコンパイラ装置。
  14. 【請求項14】 請求項11記載のコンパイラ装置にお
    いて、 前記レジスタ処理決定手段は、 前記必要レジスタファイルの数と前記第1のレジスタフ
    ァイルの数との差に相当する数のレジスタファイルが前
    記プログラマブルデバイスに回路構成される場合に要す
    る第1の回路面積と、前記プログラマブルデバイスの使
    用可能領域の第2の回路面積とを比較し、該第1の回路
    面積が該第2の回路面積よりも大きい場合、前記レジス
    タ見積手段に前記必要レジスタファイルの数を見積もり
    直させる一方、該第1の回路面積が該第2の回路面積以
    下である場合、前記差に相当する数を前記第2のレジス
    タファイルの数として決定するものであることを特徴と
    するコンパイラ装置。
  15. 【請求項15】 請求項11記載のコンパイラ装置にお
    いて、 前記レジスタ処理決定手段は、 前記第2のレジスタファイルが回路構成されてもなお前
    記プログラマブルデバイスに使用可能な空き領域が存在
    すると判断する場合、該空き領域に演算器を回路構成す
    ることを決定するものであることを特徴とするコンパイ
    ラ装置。
  16. 【請求項16】 ソースプログラムから、第1の命令デ
    コーダを備えたCPUと回路構成が書き換え可能なプロ
    グラマブルデバイスとが混載された半導体集積回路によ
    って実行されるオブジェクトプログラムと、該プログラ
    マブルデバイスの回路構成を決定する回路コードとを生
    成するコンパイラ装置であって、 前記ソースプログラムから命令を抽出し、該命令の出現
    回数をカウントする命令抽出手段と、 前記出現回数および前記CPUが実行可能な命令の命令
    コードから命令リストを作成する命令リスト作成手段
    と、 前記命令リストを参照して、(L1×N1+L2×N
    2)>(L2×N1+L1×N2)(ただし、L1は前
    記命令リストにおける第1の命令の命令コード長、N1
    は該第1の命令の前記出現回数、L2は前記命令リスト
    における該第2の命令の命令コード長、N2は該第2の
    命令の前記出現回数である。)となる場合、該第1の命
    令に対応する第1の命令コードと該第2の命令に対応す
    る第2の命令コードとを交換する命令コード交換手段
    と、 前記命令コード交換手段によって交換された前記第1お
    よび第2の命令コードを用いて、前記オブジェクトプロ
    グラムを生成するコンパイル手段と、 前記第1の命令デコーダによる前記第1の命令コードの
    デコード結果に相当するものを前記第2の命令コードか
    ら生成するとともに、前記第1の命令デコーダによる前
    記第2の命令コードのデコード結果に相当するものを前
    記第1の命令コードから生成する第2の命令デコーダ
    が、前記プログラマブルデバイスに回路構成されるよう
    に、前記回路コードを生成する回路コード生成手段とを
    備えたことを特徴とするコンパイラ装置。
  17. 【請求項17】 ソースプログラムから、第1の命令デ
    コーダを備えたCPUと回路構成が書き換え可能なプロ
    グラマブルデバイスとが混載された半導体集積回路によ
    って実行されるオブジェクトプログラムと、該プログラ
    マブルデバイスの回路構成を決定する回路コードとを生
    成するコンパイラ装置であって、 前記ソースプログラムから命令列を抽出する命令列抽出
    手段と、 前記命令列を複合命令として、該複合命令に、該複合命
    令に対応する第1の命令コードの命令コード長よりも短
    いコード長の第2の命令コードを割り当てる命令コード
    割当手段と、 前記第2の命令コードを用いて、前記オブジェクトプロ
    グラムを生成するコンパイル手段と、 前記第1の命令デコーダによる前記第1の命令コードの
    デコード結果に相当するものを前記第2の命令コードか
    ら生成する第2の命令デコーダが、前記プログラマブル
    デバイスに回路構成されるように、前記回路コードを生
    成する回路コード生成手段とを備えたことを特徴とする
    コンパイラ装置。
  18. 【請求項18】 請求項17記載のコンパイラ装置であ
    って、 前記命令列抽出手段は、 前記ソースプログラムにおける出現回数が所定値以上
    の、一連の命令の組み合わせからなる命令列を抽出する
    ものであることを特徴とするコンパイラ装置。
  19. 【請求項19】 ソースプログラムから、第1の演算
    器、第1のレジスタファイルおよび第1の命令デコーダ
    を備えたCPUと回路構成が書き換え可能なプログラマ
    ブルデバイスとが混載された半導体集積回路によって実
    行されるオブジェクトプログラムと、該プログラマブル
    デバイスの回路構成を決定する回路コードとを生成する
    コンパイラ装置であって、 前記ソースプログラムから少なくとも1つの第1の命令
    列を抽出する第1の命令列抽出手段と、 前記第1の命令列について、前記第1の演算器によって
    実行される場合の処理性能と、前記プログラマブルデバ
    イスに回路構成をされたと想定した想定演算器によって
    実行される場合の処理性能との性能差をそれぞれ見積も
    る処理見積手段と、 前記性能差に基づいて、前記第1の命令列の中から、前
    記プログラマブルデバイスに回路構成される第2の演算
    器によって実行されるべき第2の命令列を選択し、該第
    2の演算器の構成を決定する処理決定手段と、 前記第2の命令列を複合命令として、該複合命令に前記
    第2の演算器用の第1の命令コードを割り当てる第1の
    命令コード割当手段と、 前記ソースプログラムの実行に必要な必要レジスタファ
    イルの数を見積もるレジスタ処理見積手段と、 前記必要レジスタファイルの数、前記第1のレジスタフ
    ァイルの数および前記プログラマブルデバイスの使用可
    能領域の回路面積を考慮して、前記プログラマブルデバ
    イスに回路構成をすべき第2のレジスタファイルの数を
    最適化するレジスタ数最適化手段と、 前記第2のレジスタファイルに、前記第1のレジスタフ
    ァイルに割り当てられる第1のレジスタファイル名とは
    別の第2のレジスタファイル名を割り当てるレジスタ処
    理決定手段と、 前記第1の命令コードおよび前記第2のレジスタファイ
    ル名を用いて、オブジェクトプログラムを仮生成する第
    1のコンパイル手段と、 前記第1のコンパイル手段によって仮生成されたオブジ
    ェクトプログラムから第2の命令列を抽出し、該第2の
    命令列の出現回数をカウントする第2の命令列抽出手段
    と、 前記出現回数が所定値以上の前記第2の命令列を複合命
    令として、該複合命令に、該複合命令に対応する第2の
    命令コードの命令コード長よりも短いコード長の第3の
    命令コードを割り当てる第2の命令コード割当手段と、 前記第1および第3の命令コードならびに前記第2のレ
    ジスタファイル名を用いて、前記オブジェクトプログラ
    ムを生成する第2のコンパイル手段と、 前記第2の演算器の前記回路コードおよび前記第2のレ
    ジスタファイルの前記回路コードを生成するとともに、
    前記第1の命令デコーダによる前記第2の命令コードの
    デコード結果に相当するものを前記第3の命令コードか
    ら生成する第2の命令デコーダが、前記プログラマブル
    デバイスに回路構成されるように、前記回路コードを生
    成する回路コード生成手段とを備えたことを特徴とする
    コンパイラ装置。
  20. 【請求項20】 レジスタファイルおよび命令デコーダ
    を備えたCPUと、回路構成が書き換え可能なプログラ
    マブルデバイスとが混載された半導体集積回路であっ
    て、 前記レジスタファイルに保持されたデータを、前記プロ
    グラマブルデバイスに転送する第1のデータ転送機構
    と、 前記命令デコーダの出力を、前記プログラマブルデバイ
    スに転送する第2のデータ転送機構とを備えたことを特
    徴とする半導体集積回路。
  21. 【請求項21】 請求項20記載の半導体集積回路にお
    いて、 前記プログラマブルデバイスは、 演算器が回路構成されたものであり、 当該半導体集積回路は、 前記演算器の出力を、前記レジスタファイルに転送する
    第3のデータ転送機構を備え、 前記第1のデータ転送機構は、 前記レジスタファイルに保持されたデータを、前記演算
    器に転送するものであり、 前記第2のデータ転送機構は、 前記命令デコーダの出力を、前記演算器に転送するもの
    であることを特徴とする半導体集積回路。
  22. 【請求項22】 請求項20記載の半導体集積回路にお
    いて、 メモリと、 前記メモリと前記プログラマブルデバイスとの間でデー
    タ転送を行う第3のデータ転送機構とを備えたことを特
    徴とする半導体集積回路。
  23. 【請求項23】 演算器および命令デコーダを備えたC
    PUと、回路構成が書き換え可能なプログラマブルデバ
    イスとが混載された半導体集積回路であって、 前記演算器および命令デコーダの出力を、前記プログラ
    マブルデバイスに転送する第1のデータ転送機構を備え
    たことを特徴とする半導体集積回路。
  24. 【請求項24】 請求項23記載の半導体集積回路にお
    いて、 前記プログラマブルデバイスは、 レジスタファイルが回路構成されたものであり、 当該半導体集積回路は、 前記レジスタファイルに保持されたデータを、前記演算
    器に転送する第2のデータ転送機構を備え、 前記第1のデータ転送機構は、 前記演算器および命令デコーダの出力を、前記レジスタ
    ファイルに転送するものであることを特徴とする半導体
    集積回路。
  25. 【請求項25】 第1の命令デコーダを備えたCPU
    と、回路構成が書き換え可能なプログラマブルデバイス
    とが混載された半導体集積回路であって、 前記第1の命令デコーダが入力するデータを、前記プロ
    グラマブルデバイスに転送する第1のデータ転送機構を
    備えたことを特徴とする半導体集積回路。
  26. 【請求項26】 請求項25記載の半導体集積回路にお
    いて、 前記プログラマブルデバイスは、 第2の命令デコーダが回路構成されたものであり、 当該半導体集積回路は、 前記第2の命令デコーダの出力を、前記CPUに転送す
    る第2のデータ転送機構を備え、 前記第1のデータ転送機構は、 前記第1の命令デコーダが入力するデータを、前記第2
    の命令デコーダに転送するものであることを特徴とする
    半導体集積回路。
  27. 【請求項27】 請求項26記載の半導体集積回路にお
    いて、 前記CPUは、 前記第1の命令デコーダの出力、および前記第2のデー
    タ転送機構によって転送された前記第2の命令デコーダ
    の出力のいずれか一方を選択し、当該CPUが有する演
    算器およびレジスタファイルに出力する選択回路を備え
    たものであることを特徴とする半導体集積回路。
  28. 【請求項28】 第1の演算器、第1のレジスタファイ
    ルおよび命令デコーダを備えたCPUと、回路構成が書
    き換え可能なプログラマブルデバイスとが混載された半
    導体集積回路であって、 前記プログラマブルデバイスは、 第2の演算器と、第2のレジスタファイルとが回路構成
    されたものであり、 当該半導体集積回路は、 前記第1のレジスタファイルに保持されたデータを、前
    記第2の演算器に転送する第1のデータ転送機構と、 前記命令デコーダの出力を、前記第2の演算器に転送す
    る第2のデータ転送機構と、 前記第2の演算器の出力を、前記第1のレジスタファイ
    ルに転送する第3のデータ転送機構と、 前記第1の演算器および命令デコーダの出力を、前記第
    2のレジスタファイルに転送する第4のデータ転送機構
    と、 前記第2のレジスタファイルに保持されたデータを、前
    記第1の演算器に転送する第5のデータ転送機構と、 前記第2のレジスタファイルに保持されたデータを、前
    記第2の演算器に転送する第6のデータ転送機構と、 前記第2の演算器の出力を、前記第2のレジスタファイ
    ルに転送する第7のデータ転送機構とを備えたことを特
    徴とする半導体集積回路。
  29. 【請求項29】 第1の演算器、レジスタファイルおよ
    び第1の命令デコーダを備えたCPUと、回路構成が書
    き換え可能なプログラマブルデバイスとが混載された半
    導体集積回路であって、 前記CPUは、 前記第1の命令デコーダの出力および前記第2の命令デ
    コーダの出力のいずれか一方を選択し、前記第1の演算
    器およびレジスタファイルに出力する選択回路を備えた
    ものであり、 前記プログラマブルデバイスは、 第2の演算器と、第2の命令デコーダとが回路構成され
    たものであり、 当該半導体集積回路は、 前記レジスタファイルに保持されたデータを、前記第2
    の演算器に転送する第1のデータ転送機構と、 前記第1の命令デコーダの出力を、前記第2の演算器に
    転送する第2のデータ転送機構と、 前記第2の演算器の出力を、前記レジスタファイルに転
    送する第3のデータ転送機構と、 前記第1の命令デコーダが入力するデータを、前記第2
    の命令デコーダに転送する第4のデータ転送機構と、 前記第2の命令デコーダの出力を、前記選択回路に転送
    する第5のデータ転送機構とを備えたことを特徴とする
    半導体集積回路。
  30. 【請求項30】 演算器、第1のレジスタファイルおよ
    び第1の命令デコーダを備えたCPUと、回路構成が書
    き換え可能なプログラマブルデバイスとが混載された半
    導体集積回路であって、 前記CPUは、 前記第1の命令デコーダの出力および前記第2の命令デ
    コーダの出力のいずれか一方を選択し、前記演算器およ
    び第1のレジスタファイルに出力する選択回路を備えた
    ものであり、 前記プログラマブルデバイスは、 第2のレジスタファイルと、第2の命令デコーダとが回
    路構成されたものであり、 当該半導体集積回路は、 前記演算器および第1の命令デコーダの出力を、前記第
    2のレジスタファイルに転送する第1のデータ転送機構
    と、 前記第2のレジスタファイルに保持されたデータを、前
    記演算器に転送する第2のデータ転送機構と、 前記第1の命令デコーダが入力するデータを、前記第2
    の命令デコーダに転送する第3のデータ転送機構と、 前記第2の命令デコーダの出力を、前記選択回路に転送
    する第4のデータ転送機構と、 前記第2の命令デコーダの出力を、前記第2のレジスタ
    ファイルに転送する第5のデータ転送機構とを備えたこ
    とを特徴とする半導体集積回路。
JP2002044334A 2002-02-21 2002-02-21 コンパイラ装置および半導体集積回路 Pending JP2003241975A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002044334A JP2003241975A (ja) 2002-02-21 2002-02-21 コンパイラ装置および半導体集積回路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002044334A JP2003241975A (ja) 2002-02-21 2002-02-21 コンパイラ装置および半導体集積回路

Publications (1)

Publication Number Publication Date
JP2003241975A true JP2003241975A (ja) 2003-08-29

Family

ID=27783751

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002044334A Pending JP2003241975A (ja) 2002-02-21 2002-02-21 コンパイラ装置および半導体集積回路

Country Status (1)

Country Link
JP (1) JP2003241975A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008062768A1 (fr) * 2006-11-21 2008-05-29 Nec Corporation Système de génération de code d'opération de commande
US7607005B1 (en) 2004-12-22 2009-10-20 Rmt, Inc. Virtual hardware system with universal ports using FPGA
US7707386B2 (en) 2004-01-30 2010-04-27 Kabushiki Kaisha Toshiba Program segment searching for extension instruction determination to design a processor that meets performance goal
JP2012133756A (ja) * 2010-11-10 2012-07-12 Src Computers Inc ヘテロジニアス黙示的及び明示的プロセッシング要素の計算の一体化のためのシステム及び方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7707386B2 (en) 2004-01-30 2010-04-27 Kabushiki Kaisha Toshiba Program segment searching for extension instruction determination to design a processor that meets performance goal
US7607005B1 (en) 2004-12-22 2009-10-20 Rmt, Inc. Virtual hardware system with universal ports using FPGA
WO2008062768A1 (fr) * 2006-11-21 2008-05-29 Nec Corporation Système de génération de code d'opération de commande
TWI381309B (en) * 2006-11-21 2013-01-01 Nec Corp Instruction operation code generation system
US8935512B2 (en) 2006-11-21 2015-01-13 Nec Corporation Instruction operation code generation system
JP2012133756A (ja) * 2010-11-10 2012-07-12 Src Computers Inc ヘテロジニアス黙示的及び明示的プロセッシング要素の計算の一体化のためのシステム及び方法

Similar Documents

Publication Publication Date Title
JP4231516B2 (ja) 実行コードの生成方法及びプログラム
Benini et al. Power optimization of core-based systems by address bus encoding
US7840777B2 (en) Method and apparatus for directing a computational array to execute a plurality of successive computational array instructions at runtime
US7525457B2 (en) Transforming design objects in a computer by converting data sets between data set types
Wong et al. High-level synthesis of asynchronous systems by data-driven decomposition
Cardoso et al. Compilation for FPGA-based reconfigurable hardware
JP2003099409A (ja) データ処理装置および方法、コンピュータプログラム、情報記憶媒体、並列演算装置、データ処理システム
CN101341656A (zh) 用于多周期时钟门控的方法
JP2000057201A (ja) 低電力vlsiデザインのための制限付きレジスタ共用方法及びそのシステム
JP2001202397A (ja) システム・オン・チップのアーキテクチャ設計支援システム及びアーキテクチャ生成方法
JPH0877221A (ja) 消費電力を低減する有限状態マシンを設計するシステム及び方法
Kajstura et al. Low power synthesis of finite state machines—State assignment decomposition algorithm
JP2003241975A (ja) コンパイラ装置および半導体集積回路
US20070028198A1 (en) Method and apparatus for allocating data paths to minimize unnecessary power consumption in functional units
US8041551B1 (en) Algorithm and architecture for multi-argument associative operations that minimizes the number of components using a latency of the components
KR0165992B1 (ko) 논리 회로 합성 방법 및 장치
US6490716B1 (en) Automated design of processor instruction units
KR20080096306A (ko) 규칙에 기반하여 스케일링 쉬프트의 최적의 위치를 찾는컴파일 방법 및 시스템
EP1733303A2 (en) Methods and apparatus for multi-processor pipeline parallelism
US20090235220A1 (en) Data processing device, behavioral synthesis device, data processing method, and recording medium
US8479179B2 (en) Compiling method, compiling apparatus and computer system for a loop in a program
Wu et al. A Novel $\Delta\Sigma $ Control System Processor and Its VLSI Implementation
US20100153899A1 (en) Methods and apparatuses for designing logic using arithmetic flexibility
US8176451B2 (en) Behavioral synthesis apparatus, behavioral synthesis method, and computer readable recording medium
Maunder et al. FPLD HDL synthesis employing high-level evolutionary algorithm optimisation