(57)【要約】【課題】ＣＰＵの使用効率を上げ、半導体集積回路の消費電力を低減するように生成されたオブジェクトプログラムの実行に必要となるさまざまなビット幅のＣＰＵを、プログラマブルデバイスを備えた半導体集積回路に構成する。【解決手段】回路構成が書き換え可能なプログラマブルデバイス（１１）を備えた半導体集積回路（１）において、制御部（１２）は、プログラマブルデバイス（１１）に、指定されたビット幅および指定された個数のＣＰＵ（１４）ならびにこれ接続されるバス（１７，１８）の回路構成をする。【選択図】図１
2005050363.tif 000002
【特許請求の範囲】
【請求項１】
回路構成が書き換え可能なプログラマブルデバイスを備えた半導体集積回路であって、
前記プログラマブルデバイスに、指定されたビット幅および指定された個数のＣＰＵならびに該ＣＰＵに接続されるバスの回路構成をする制御部を備えた
ことを特徴とする半導体集積回路。
【請求項２】
請求項１記載の半導体集積回路において、
前記制御部は、
ＣＰＵ回路構成データを参照して、前記プログラマブルデバイスに、指定されたビット幅および指定された個数のＣＰＵの回路構成をするものである
ことを特徴とする半導体集積回路。
【請求項３】
請求項２記載の半導体集積回路において、
前記ＣＰＵ回路構成データは、ビット幅でパラメータ化されている
ことを特徴とする半導体集積回路。
【請求項４】
請求項１記載の半導体集積回路において、
前記制御部は、
前記バスとして、命令メモリが保持する命令を前記ＣＰＵに供給する共有命令バスの回路構成をするものである
ことを特徴とする半導体集積回路。
【請求項５】
請求項４記載の半導体集積回路において、
前記制御部は、
共有命令バス回路構成データを参照して、前記プログラマブルデバイスに、前記共有命令バスの回路構成をするものである
ことを特徴とする半導体集積回路。
【請求項６】
請求項１記載の半導体集積回路において、
前記制御部は、
前記バスとして、データメモリと前記ＣＰＵとの間でデータを転送する共有データバスの回路構成をするものである
ことを特徴とする半導体集積回路。
【請求項７】
請求項６記載の半導体集積回路において、
前記制御部は、
共有データバス回路構成データを参照して、前記プログラマブルデバイスに、前記共有データバスの回路構成をするものである
ことを特徴とする半導体集積回路。
【請求項８】
請求項１記載の半導体集積回路において、
メモリを備え、
前記制御部は、
前記プログラマブルデバイスに回路構成をされるＣＰＵのうち、使用頻度が多い順に前記メモリに近い位置に配置されるように、前記指定されたビット幅および指定された個数のＣＰＵの回路構成をするものである
ことを特徴とする半導体集積回路。
【請求項９】
請求項１記載の半導体集積回路において、
メモリを備え、
前記制御部は、
前記プログラマブルデバイスに回路構成をされるＣＰＵのうち、ビット幅が大きい順に前記メモリに近い位置に配置されるように、前記指定されたビット幅および指定された個数のＣＰＵの回路構成をするものである
ことを特徴とする半導体集積回路。
【請求項１０】
請求項１記載の半導体集積回路において、
前記プログラマブルデバイスに回路構成をされたＣＰＵとは別個に、ＣＰＵを備えた
ことを特徴とする半導体集積回路。
【請求項１１】
請求項１０記載の半導体集積回路において、
前記制御部は、
前記指定されたビット幅と当該半導体集積回路に備えられたＣＰＵのビット幅とが等しい場合、該ビット幅に対して指定された個数から当該半導体集積回路に備えられたＣＰＵのうち該ビット幅と等しいビット幅のＣＰＵの個数を減じて、前記プログラマブルデバイスにＣＰＵの回路構成をするものである
ことを特徴とする半導体集積回路。
【請求項１２】
請求項１０記載の半導体集積回路において、
前記制御部は、
前記指定されたビット幅が当該半導体集積回路に備えられたＣＰＵのビット幅と等しいビット幅がなく、前記指定されたビット幅が当該半導体集積回路に備えられたＣＰＵのビット幅よりも小さい場合、該指定されたビット幅に対して指定された個数から当該半導体集積回路に備えられたＣＰＵの個数を減じて、前記プログラマブルデバイスにＣＰＵの回路構成をするものである
ことを特徴とする半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路に関するものであり、特に、プログラマブルデバイスを備えた半導体集積回路の回路構成技術に属する。
【背景技術】
【０００２】
コンピュータに所望の処理を行わせるには、その処理をプログラムとして記述する必要がある。通常、このプログラムはＣ言語などの高級プログラム言語を用いて記述されるが、ＣＰＵは高級プログラム言語で書かれたソースプログラムを直接、実行することができない。このため、ソースプログラムを、ＣＰＵが実行することのできるオブジェクトプログラムに変換しなければならない。この変換処理（コンパイル）は、コンパイラによって行われる。
【０００３】
コンパイラは、ソースプログラムのコンパイル時に、オブジェクトプログラムを実行するＣＰＵとして、ソースプログラムの実行に必要とされる最大ビット幅のものを選択している。たとえば、図９に示されたＣ言語のソースプログラムでは、char型、 short型およびlong型の３つのデータ型が使用されており、各データ型の処理に必要なビット幅はそれぞれ８ビット、１６ビットおよび３２ビットである。したがって、コンパイラは、このソースプログラムの実行に必要なＣＰＵとして３２ビットＣＰＵを選択する。
【０００４】
図１０は、図９のソースプログラムが３２ビットＣＰＵによって実行されることを前提として生成されたオブジェクトプログラムを示す。
【０００５】
１および２行目の“ movbu”は、８ビット変数ａおよびｂの値を３２ビットデータレジスタＤ０およびＤ１にゼロ拡張をして転送するゼロ拡張バイト転送命令である。同様に、６および７行目の“ movhu”は、１６ビット変数ｄおよびｅの値を３２ビットデータレジスタＤ０およびＤ１にゼロ拡張をして転送するゼロ拡張ハーフワード転送命令である。
【０００６】
３、８および１３行目の“ add”、“ sub”および“ mul”は、それぞれ３２ビットデータレジスタＤ０と３２ビットデータレジスタＤ１との加算命令、減算命令および乗算命令である。そして、４、９および１４行目の“ mov”は、ＣＡ、ＦＡおよびＩＡでそれぞれ表されている変数ｃ、ｆおよびｉのアドレスをアドレスレジスタＡ０に転送する命令であり、１１および１２行目の“ mov”は、３２ビット変数ｇおよびｈの値を３２ビットデータレジスタＤ０およびＤ１に転送する命令である。同様に、１５行目の“ mov”は、３２ビットレジスタＤ１の値をアドレスレジスタＡ０で表されるメモリに転送する命令である。
【０００７】
５行目の“ movbu”は、３２ビットデータレジスタＤ１の値の上位ビットを切り捨て、８ビットデータにしてからアドレスレジスタＡ０で表されるメモリに転送するバイト転送命令である。同様に、１０行目の“ movhu”は、３２ビットデータレジスタＤ１の値の上位ビットを切り捨て、１６ビットデータにしてからアドレスレジスタＡ０で表されるメモリに転送するハーフワード転送命令である。
【０００８】
図１０に示したオブジェクトプログラムは、ＦＰＧＡ（ Field Programmable Gate Array）などのプログラマブルデバイスを備えた半導体集積回路によって実行される（たとえば、特許文献１参照）。
【特許文献１】特表平８−５１６４１８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ソースプログラムによっては、そのソースプログラムの実行に必要とされる最大ビット幅よりも小さなビット幅で実行される命令が頻繁に出現するようなものがある。このようなソースプログラムにおいて、ＣＰＵは、小さなビット幅で実行できる命令を、最大ビット幅に拡張して実行する。たとえば、図９のソースプログラム中の“c=a+b;”を実行するのに、図１０のオブジェクトプログラム中の１および２行目のゼロ拡張バイト転送命令で８ビットデータを３２ビットに拡張し、５行目のバイト転送命令で３２ビットデータの上位ビットを切り捨てて８ビットデータにしてからメモリに転送している。同様に、ソースプログラム中の“f=d-e;”を実行するのに、オブジェクトプログラム中の６および７行目のゼロ拡張ハーフワード転送命令で１６ビットデータを３２ビットに拡張し、１０行目のハーフワード転送命令で３２ビットデータの上位ビットを切り捨てて１６ビットデータにしてからメモリに転送している。
【００１０】
このように、最大ビット幅のＣＰＵによってソースプログラム中のすべての命令が実行されるのでは、効率的にＣＰＵを使用することができない。さらに、小さなビット幅の命令を最大ビット幅に拡張することにより、ゼロ拡張されたデータを載せたバスの部分にもクロックが供給される。しかし、このゼロ拡張された部分に供給されるクロックは無駄であり、半導体集積回路の消費電力の増大を招く原因となる。
【００１１】
上記の問題に鑑み、本発明は、ＣＰＵの使用効率を上げるとともに、半導体集積回路の消費電力が低減されるように生成されたオブジェクトプログラムの実行に必要となるさまざまなビット幅のＣＰＵの回路をＦＰＧＡなどのプログラマブルデバイスを備えた半導体集積回路に構成することを課題とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、請求項１の発明が講じた手段は、回路構成が書き換え可能なプログラマブルデバイスを備えた半導体集積回路であって、前記プログラマブルデバイスに、指定されたビット幅および指定された個数のＣＰＵならびに該ＣＰＵに接続されるバスの回路構成をする制御部を備えるものとする。
【００１３】
請求項１の発明によると、たとえば、オブジェクトプログラムに指定されたビット幅および個数のＣＰＵを、半導体集積回路が備えるプログラマブルデバイスに回路構成をし、各命令の実行に必要なビット幅に応じたビット幅のＣＰＵによってその命令が実行される。これにより、ゼロ拡張命令などを実行することによる無駄なバス部分へのクロック供給がなくなり、半導体集積回路の消費電力を低減することができる。
【００１４】
請求項２の発明では、前記請求項１の制御部は、ＣＰＵ回路構成データを参照して、前記プログラマブルデバイスに、指定されたビット幅および指定された個数のＣＰＵの回路構成をするものとする。
【００１５】
請求項３の発明では、前記請求項２のＣＰＵ回路構成データは、ビット幅でパラメータ化されているものとする。
【００１６】
請求項４の発明では、前記請求項１の制御部は、前記バスとして、命令メモリが保持する命令を前記ＣＰＵに供給する共有命令バスの回路構成をするものとする。
【００１７】
請求項５の発明では、前記請求項４の制御部は、共有命令バス回路構成データを参照して、前記プログラマブルデバイスに、前記共有命令バスの回路構成をするものとする。
【００１８】
請求項６の発明では、前記請求項１の制御部は、前記バスとして、データメモリと前記ＣＰＵとの間でデータを転送する共有データバスの回路構成をするものとする。
【００１９】
請求項７の発明では、前記請求項６の制御部は、共有データバス回路構成データを参照して、前記プログラマブルデバイスに、前記共有データバスの回路構成をするものとする。
【００２０】
請求項８の発明では、前記請求項１の半導体集積回路はメモリを備えており、制御部は、前記プログラマブルデバイスに回路構成をされるＣＰＵのうち、使用頻度が多い順に前記メモリに近い位置に配置されるように、前記指定されたビット幅および指定された個数のＣＰＵの回路構成をするものとする。
【００２１】
請求項９の発明では、前記請求項１の半導体集積回路はメモリを備えており、制御部は、前記プログラマブルデバイスに回路構成をされるＣＰＵのうち、ビット幅が大きい順に前記メモリに近い位置に配置されるように、前記指定されたビット幅および指定された個数のＣＰＵの回路構成をするものとする。
【００２２】
また、請求項１０の発明が講じた手段は、前記請求項１の半導体集積回路は、前記プログラマブルデバイスに回路構成をされたＣＰＵとは別個に、ＣＰＵを備えているものとする。
【００２３】
請求項９の発明によると、ＣＰＵを備えた半導体集積回路においても、たとえば、オブジェクトプログラムに指定されたビット幅および個数のＣＰＵを、半導体集積回路が備えるプログラマブルデバイスに回路構成をし、各命令の実行に必要なビット幅に応じたビット幅のＣＰＵによってその命令が実行される。これにより、ゼロ拡張命令などを実行することによる無駄なバス部分へのクロック供給がなくなり、半導体集積回路の消費電力を低減することができる。
【００２４】
請求項１１の発明では、前記請求項１０の制御部は、前記指定されたビット幅と半導体集積回路に備えられたＣＰＵのビット幅とが等しい場合、該ビット幅に対して指定された個数から半導体集積回路に備えられたＣＰＵのうち該ビット幅と等しいビット幅のＣＰＵの個数を減じて、前記プログラマブルデバイスにＣＰＵの回路構成をするものとする。
【００２５】
請求項１２の発明では、前記請求項１０の制御部は、前記指定されたビット幅が半導体集積回路に備えられたＣＰＵのビット幅と等しいビット幅がなく、前記指定されたビット幅が当該半導体集積回路に備えられたＣＰＵのビット幅よりも小さい場合、該指定されたビット幅に対して指定された個数から半導体集積回路に備えられたＣＰＵの個数を減じて、前記プログラマブルデバイスにＣＰＵの回路構成をするものとする。
【発明の効果】
【００２６】
以上、本発明によると、オブジェクトプログラムの実行時に、半導体集積回路に備えられたＦＰＧＡなどのプログラマブルデバイスにさまざまなビット幅のＣＰＵの回路が、適宜、構成されるため、ゼロ拡張命令などを実行することによる無駄なバス部分へのクロック供給がなくなり、半導体集積回路の消費電力を低減することができる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明を実施するための最良の形態について、図面を参照しながら説明する。
【００２８】
（第１の実施形態）
図１は、本発明の第１の実施形態に係る半導体集積回路の構成を示す。本実施形態に係る半導体集積回路１は、ＦＰＧＡ１１と、ＦＰＧＡ１１にさまざまな回路を構成する制御部１２と、ＦＰＧＡ１１に構成されるさまざまな回路の回路構成データを格納している構成データメモリ１３と、半導体集積回路１によって実行される命令を格納する命令メモリ１５と、データメモリ１６とを備えている。なお、本実施形態で用いる回路構成データは、ＦＰＧＡに回路を構成するための一般的なデータと同様のものである。
【００２９】
ＦＰＧＡ１１には、１または複数個（図１では４個）のＣＰＵ１４と、命令メモリ１５からＣＰＵ１４に命令を供給するための共有命令バス１７と、ＣＰＵ１４とデータメモリ１６との間でデータを転送するための共有データバス１８と、共有データバス１８の使用に関してＣＰＵ１４を調停するバス調停回路１９とが回路構成をされている。
【００３０】
制御部１２は、指定されたビット幅および指定された個数のＣＰＵ１４の回路をＦＰＧＡ１１に構成する機能と、共有命令バス１７の回路をＦＰＧＡ１１に構成する機能と、共有データバス１８の回路をＦＰＧＡ１１に構成する機能と、バス調停回路１９の回路をＦＰＧＡ１１に構成する機能とを有する。なお、本実施形態におけるこれら回路の構成は、一般的な回路構成技術によって行うものとする。
【００３１】
構成データメモリ１３は、ＦＰＧＡ１１に回路構成をされる８ビットＣＰＵ、１６ビットＣＰＵ、３２ビットＣＰＵなどのさまざまなビット幅のＣＰＵの回路構成データと、さまざまなビット幅のＣＰＵに接続することのできる共有命令バスの回路構成データおよび共有データバスの回路構成データとを格納している。
【００３２】
ＣＰＵ１４は、データレジスタおよびアドレスレジスタを有し、独立して命令を実行することができる。したがって、これらＣＰＵ１４によって並列処理が行われる。
【００３３】
共有命令バス１７は、すべてのＣＰＵ１４と命令メモリ１５とに接続するように回路構成をされ、命令メモリ１５から命令を受け取り、この命令がどのＣＰＵ１４によって実行されるのかを判別する機能と、各命令をその命令が実行されるＣＰＵに供給する機能とを有する。
【００３４】
共有データバス１８は、すべてのＣＰＵ１４とデータメモリ１６とに接続するように回路構成をされ、ＣＰＵ１４とデータメモリ１６との間のデータ転送命令に関して、ＣＰＵ１４からデータメモリ１６に指定アドレスを供給する機能と、データメモリ１６からＣＰＵ１４にデータを供給する機能とを有する。
【００３５】
共有データバス１８は複数のＣＰＵ１４によって共有されているため、複数のＣＰＵ１４によって同時にアクセスされる可能性がある。しかし、共有データバス１８は、一度に１個のＣＰＵ１４のデータしか扱えないため、ＣＰＵ１４間で共有データバス１８を使用するタイミングを調整しなければならない。この調整を行うのがバス調停回路１９である。
【００３６】
バス調停回路１９は、共有データバス１８の使用状況を判断するためのレジスタを有する。このレジスタは、共有データバス１８がＣＰＵ１４によって使用されている場合は“１”、どのＣＰＵ１４にも使用されていない場合は“０”の値を保持する。ＣＰＵ１４がデータメモリ１６にアクセスするには、まず、バス調停回路１９にバス使用要求信号ＤＴ１を発する。バス調停回路１９はバス使用要求信号ＤＴ１を受けると、レジスタ値を参照して、レジスタ値が“０”の場合は、レジスタ値を“１”にして他のＣＰＵ１４が共有データバス１８を使用できないようにするとともに、バス使用要求信号ＤＴ１を発したＣＰＵ１４にバス使用許可信号ＤＴ２を送る。一方、レジスタ値が“１”の場合は、レジスタ値が“０”になるまで、バス使用要求信号ＤＴ１を発したＣＰＵ１４を待機させる。バス使用許可信号ＤＴ２を受けたＣＰＵ１４は、共有データバス１８を使用してデータメモリ１６にアクセスができるようになる。そして、アクセスが終了すると、バス調停回路１９にバス使用終了信号ＤＴ３を発する。バス調停回路１９はバス使用終了信号ＤＴ３を受けると、レジスタ値を“０”にして他のＣＰＵ１４が共有データバス１８を使用できるようにする。
【００３７】
本実施形態に係る半導体集積回路１は、プログラマブルデバイスにＣＰＵの回路を構成するための bit命令が付加されたオブジェクトプログラムを実行することができる。図２は、本実施形態に係る半導体集積回路１が実行するオブジェクトプログラムの一例である。なお、図２のオブジェクトプログラムは、図３に示したソースプログラムから得られたものである。
【００３８】
図２のオブジェクトプログラムは、図３のソースプログラム中に記述された命令の実行に要するビット幅に応じて、各命令に各ビット幅のＣＰＵを割り当てるように生成されている。具体的には、このオブジェクトプログラムは、２個の８ビットＣＰＵおよび１個の１６ビットＣＰＵの計３個のＣＰＵによって実行される。オブジェクトプログラムの２行目以降に記述された命令の末尾に付された数字は、その命令がその数字のビット幅のＣＰＵによって実行されることを示している。また、オブジェクトプログラムの２行目以降の命令の末尾に付された数字の後に、さらに“ａ”や“ｂ”といった記号が付されており、その命令を実行すべきＣＰＵが指定されている。
【００３９】
次に、半導体集積回路１によって図２のオブジェクトプログラムが実行されるときの動作について説明する。なお、オブジェクトプログラム中の個々の命令に対する動作についての説明は省略し、 bit命令に対する動作について説明する。
【００４０】
半導体集積回路１によって図２のオブジェクトプログラムが実行されると、まず、１行目の“bit 16,8,8”が命令メモリ１５から制御部１２に送られる。制御部１２はこの bit命令を受けると、構成データメモリ１３から、１６ビットおよび８ビットのＣＰＵの回路構成データ、および１６ビットおよび８ビットのＣＰＵに接続するための共有命令バスおよび共有データバスの回路構成データを読み込み、ＦＰＧＡ１１にこれらの回路構成をする。
【００４１】
図４は、制御部１２が bit命令を実行した結果、ＦＰＧＡ１１にＣＰＵ１４−Ａ，１４−Ｂ，１４−Ｃ、共有命令バス１７および共有データバス１８の回路が構成されたところを示す。図２のオブジェクトプログラムの bit命令において、回路構成をされるべきＣＰＵのビット幅を示す数値として“１６”が先に指定されているので、１６ビットＣＰＵのＣＰＵ１４−ＡがＦＰＧＡ１１の領域内でメモリにより近い位置に回路構成をされる。共有データバス１８は、ＣＰＵ１４−Ａとは１６ビット、ＣＰＵ１４−ＢおよびＣＰＵ１４−Ｃとは８ビットで接続されるように回路構成をされる。なお、共有データバス１８の下位８ビットはＣＰＵ１４−Ａ，１４−Ｂ，１４−Ｃに、上位８ビットはＣＰＵ１４−Ａのみに接続される。
【００４２】
図２のオブジェクトプログラムの２行目以降に記述された命令は、共有命令バス１７によって、その命令が実行されるべきＣＰＵに供給される。図２のオブジェクトプログラムにおいて、命令の末尾に付された“16”はＣＰＵ１４−Ａ、“8a”はＣＰＵ１４−Ｂ、そして“8b”はＣＰＵ１４−Ｃでそれぞれ実行されることを表す。ＣＰＵ１４−Ａ，１４−Ｂ，１４−Ｃは命令を受けると、それぞれ独立してその命令を実行するが、この実行については説明を省略する。
【００４３】
以上、本実施形態によると、半導体集積回路１のＦＰＧＡ１１に回路構成をされるＣＰＵ１４が、使用頻度が多い順にメモリに近い位置に配置されるため、使用頻度の多い共有データバス１８の配線長が短くなり、処理が高速化される。さらに、ビット幅が大きい順にメモリに近い位置に配置することにより、共有データバス１８の無駄な配線を削減することができ、ＦＰＧＡ１１の回路資源を有効に活用することができる。また、ソースプログラムの実行に必要なビット幅のＣＰＵ１４をＦＰＧＡ１１に回路構成をすることにより、小さなビット幅の命令を最大ビット幅に拡張して実行することがなくなり、拡張されたバスの部分に無駄に供給されるクロックを削減することができ、半導体集積回路１の消費電力を低減することができる。
【００４４】
なお、構成データメモリ１３、命令メモリ１５およびデータメモリ１６は半導体集積回路１に備えられるとしたが、これらは半導体集積回路１の外部にあるものでもよい。また、構成データメモリ１３は、さまざまなビット幅のＣＰＵ１４の回路構成データ、共有命令バス１７の回路構成データおよび共有データバス１８の回路構成データを格納しているとしたが、これら回路構成データをビット幅でパラメータ化して格納していてもよい。この場合、制御部１２から指定されたビット幅をパラメータとして、指定されたビット幅のＣＰＵ１４、共有命令バス１７および共有データバス１８の回路構成データを生成して制御部１２に送る機能を有する。
【００４５】
（第２の実施形態）
図５は、本発明の第２の実施形態に係る半導体集積回路の構成を示す。本実施形態に係る半導体集積回路１Ａは、メインＣＰＵ１０と、ＦＰＧＡ１１と、ＦＰＧＡ１１にさまざまな回路を構成する制御部１２と、ＦＰＧＡ１１に構成されるさまざまな回路の回路構成データを格納している構成データメモリ１３と、半導体集積回路１Ａによって実行される命令を格納する命令メモリ１５と、データメモリ１６と、ＣＰＵ１０およびＦＰＧＡ１１に回路構成をされたＣＰＵ１４に命令を供給するための共有命令バス１７と、ＣＰＵ１０およびＦＰＧＡ１１に回路構成をされたＣＰＵ１４とデータメモリ１６との間でデータを転送するための共有データバス１８とを備える。
【００４６】
ＦＰＧＡ１１には、１または複数（図５では４個）のＣＰＵ１４と、共有データバス１８の使用に関してＣＰＵ１０およびＣＰＵ１４を調停するバス調停回路１９と、上記の共有命令バス１７とＣＰＵ１４とを接続するための延長部分と、上記の共有データバス１８とＣＰＵ１４とを接続するための延長部分とが回路構成をされている。なお、本実施形態に係る半導体集積回路１Ａの各構成要素については、第１の実施形態と同様であるので説明を省略する。
【００４７】
本実施形態に係る半導体集積回路１Ａは、プログラマブルデバイスにＣＰＵの回路を構成するための bit命令が付加されたオブジェクトプログラムを実行することができる。図６は、本実施形態に係る半導体集積回路１Ａが実行するオブジェクトプログラムの一例である。なお、図６のオブジェクトプログラムは、図７に示したソースプログラムから得られたものである。
【００４８】
図６のオブジェクトプログラムは、図７のソースプログラム中に記述された命令の実行に要するビット幅に応じて、各命令に各ビット幅のＣＰＵを割り当てるように生成されている。具体的には、このオブジェクトプログラムは、２個の８ビットＣＰＵ個および１個の１６ビットＣＰＵの計が計３個のＣＰＵならびにメインＣＰＵによって実行される。オブジェクトプログラムの２行目以降に記述された命令の末尾に付された数字は、その命令がその数字のビット幅のＣＰＵによって実行されることを示している。ただし、メインＣＰＵによって実行される命令には数字は付されていない。また、オブジェクトプログラムの２行目以降の命令の末尾に付された数字の後に、さらに“ａ”や“ｂ”といった記号が付されており、その命令を実行すべきＣＰＵが指定されている。
【００４９】
次に、半導体集積回路１Ａによって図６のオブジェクトプログラムが実行されるときの動作について説明する。ここで、メインＣＰＵ１０は３２ビットＣＰＵであるとする。なお、オブジェクトプログラム中の個々の命令に対する動作ついての説明は省略し、 bit命令に対する動作について説明する。
【００５０】
半導体集積回路１Ａによって図６のオブジェクトプログラムが実行されると、まず、１行目の“bit 16,8,8”が命令メモリ１５から制御部１２に送られる。制御部１２は bit命令を受けると、構成データメモリ１３から、１６ビットＣＰＵおよび８ビットＣＰＵの回路構成データ、および１６ビットＣＰＵおよび８ビットＣＰＵに接続するための共有命令バスおよび共有データバスの回路構成データを読み込み、ＦＰＧＡ１１にこれらの回路構成をする。このとき、半導体集積回路１Ａが、 bit命令に指定されたビット幅と同一ビット幅のメインＣＰＵを既に備えていたなら、メインＣＰＵの個数だけ減じて、ＣＰＵ１４の回路構成をするようにする。
【００５１】
図８は、制御部１２が bit命令を実行した結果、ＦＰＧＡ１１にＣＰＵ１４−Ａ，１４−Ｂ，１４−Ｃ、共有命令バス１７の延長部分および共有データバス１８の延長部分の回路が構成されたところを示す。図６のオブジェクトプログラムの bit命令において、回路構成をされるべきＣＰＵのビット幅を示す数値として“１６”が先に指定されているので、１６ビットＣＰＵのＣＰＵ１４−ＡがＦＰＧＡ１１の領域内でメモリにより近い位置に回路構成をされる。共有データバス１８の延長部分は、ＣＰＵ１４−Ａとは１６ビット、ＣＰＵ１４−ＢおよびＣＰＵ１４−Ｃとは８ビットで接続されるように回路構成をされる。なお、共有データバス１８の下位８ビットはＣＰＵ１０およびＣＰＵ１４−Ａ，１４−Ｂ，１４−Ｃに、下位１６ビットはＣＰＵ１０およびＣＰＵ１４−Ａに、上位１６ビットはＣＰＵ１０のみに接続される。
【００５２】
図６のオブジェクトプログラムの２行目以降に記述された命令は、共有命令バス１７によって、その命令が実行されるべきＣＰＵに供給される。図６のオブジェクトプログラムにおいて、命令の末尾に付された“16”はＣＰＵ１４−Ａ、“8a”はＣＰＵ１４−Ｂ、“8b”はＣＰＵ１４−Ｃ、そして何も付されていないものはメインＣＰＵ１０でそれぞれ実行されることを表す。ＣＰＵ１０およびＣＰＵ１４−Ａ，１４−Ｂ，１４−Ｃは命令を受けると、それぞれ独立してその命令を実行するが、各命令の実行については説明を省略する。
【００５３】
以上、本実施形態によると、ＦＰＧＡ１１に回路構成をされるＣＰＵ１４が、使用頻度が多い順にメモリに近い位置に配置されるため、使用頻度の多い共有データバス１８の配線長が短くなり、処理が高速化される。さらに、ビット幅が大きい順にメモリに近い位置に配置することにより、共有データバス１８の無駄な配線を削減することができ、ＦＰＧＡ１１の回路資源を有効に活用することができる。また、ソースプログラムの実行に必要なＣＰＵでメインＣＰＵ１０を除くＣＰＵ１４をＦＰＧＡ１１に回路構成をすることにより、小さなビット幅の命令を最大ビット幅に拡張して実行することがなくなり、拡張されたバスの部分に無駄に供給されるクロックを削減することができ、半導体集積回路１Ａの消費電力を低減することができる。
【００５４】
なお、構成データメモリ１３、命令メモリ１５およびデータメモリ１６は半導体集積回路１Ａに備えられるとしたが、これらは半導体集積回路１Ａの外部にあってもよい。また、構成データメモリ１３は、さまざまなバス幅のＣＰＵ１４の回路構成データ、共有命令バス１７の回路構成データおよび共有データバス１８の回路構成データを格納しているとしたが、これら回路構成データをビット幅でパラメータ化して格納していてもよい。この場合、制御部１２から指定されたビット幅をパラメータとして、指定されたビット幅のＣＰＵ１４、共有命令バス１７および共有データバス１８の回路構成データを生成して制御部１２に送る機能を有する。
【産業上の利用可能性】
【００５５】
以上のように、本発明に係る半導体集積回路は、低消費電力で動作するため、携帯電話用のＬＳＩなどとして有用である。
【図面の簡単な説明】
【００５６】
【図１】本発明の第１の実施形態に係る半導体集積回路のブロック図である。
【図２】本発明の第１の実施形態に係る半導体集積回路が実行するオブジェクトプログラムの一例である。
【図３】図２のオブジェクトプログラムの元となるＣ言語プログラムである。
【図４】本発明の第１の実施形態に係る半導体集積回路が図２のオブジェクトプログラムを実行してＣＰＵが回路構成されたところを示した図である。
【図５】本発明の第２の実施形態に係る半導体集積回路のブロック図である。
【図６】本発明の第２の実施形態に係る半導体集積回路が実行するオブジェクトプログラムの一例である。
【図７】図６のオブジェクトプログラムの元となるＣ言語プログラムである。
【図８】本発明の第２の実施形態に係る半導体集積回路が図６のオブジェクトプログラムを実行してＣＰＵが回路構成されたところを示した図である。
【図９】Ｃ言語プログラムの１例である。
【図１０】従来のコンパイラ装置が図９のＣ言語プログラムをコンパイルして生成したオブジェクトプログラムである。
【符号の説明】
【００５７】
１，１Ａ  半導体集積回路
１０      半導体集積回路に備えられたＣＰＵ（メインＣＰＵ）
１１      プログラマブルデバイス（ＦＰＧＡ）
１２      制御部
１３      構成データメモリ
１４      プログラマブルデバイスに回路構成をされたＣＰＵ
１５      命令メモリ
１６      データメモリ
１７      共有命令バス
１８      共有データバス
１９      バス調停回路
【図１】
2005050363.tif 000003
【図２】
2005050363.tif 000004
【図３】
2005050363.tif 000005
【図４】
2005050363.tif 000006
【図５】
2005050363.tif 000007
【図６】
2005050363.tif 000008
【図７】
2005050363.tif 000009
【図８】
2005050363.tif 000010
【図９】
2005050363.tif 000011
【図１０】
2005050363.tif 000012