(57)【特許請求の範囲】
【請求項１】
ＣＰＵと、
回路構成が書き換え可能であるプログラマブルデバイスで構成される上記ＣＰＵの補助演算装置と、
命令あるいは複数の命令からなる命令列を受けて、上記命令あるいは命令列が上記補助演算装置で処理が可能な予約命令か否かを判別する命令種類判別手段と、
上記予約命令の処理を行う回路構成データを上記補助演算装置に書き込むための構成データ書き込み手段と、
上記命令種類判別手段の判別結果を受けて、上記命令が上記予約命令であるときには、上記予約命令の処理を行う回路が上記補助演算装置内に存在するか否かによって、上記補助演算装置を用いて上記予約命令の処理を行うか否かを判別する使用装置判別手段と、
上記使用装置判別手段の判別結果を受けて、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行う場合に、上記予約命令の処理を上記補助演算装置で行い、
上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行わない場合に、上記予約命令の処理を上記ＣＰＵで行うとともに、
上記予約命令がＣＰＵで実行され得る命令である場合に、
上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行う場合には、上記予約命令の処理を上記補助演算装置で行わせるように上記予約命令を変更し、
上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行わない場合には、上記予約命令を変更しない機能を有する命令切り替え手段と、
を備えていることを特徴とする半導体集積回路。
【請求項２】
ＣＰＵと、
回路構成が書き換え可能であるプログラマブルデバイスで構成される上記ＣＰＵの補助演算装置と、
命令あるいは複数の命令からなる命令列を受けて、上記命令あるいは命令列が上記補助演算装置で処理が可能な予約命令か否かを判別する命令種類判別手段と、
上記予約命令の使用頻度を記憶する履歴記憶手段と、
上記予約命令の処理を行う回路構成データを上記補助演算装置に書き込む機能を有し、書き込みを行う際に、上記履歴記憶手段を参照して、使用頻度がより高い予約命令の処理を行う回路構成データを優先的に上記補助演算装置に書き込む構成データ書き込み手段と、
上記命令種類判別手段の判別結果を受けて、上記命令が上記予約命令であるときには、上記補助演算装置を用いて上記予約命令の処理を行うか否かを判別する使用装置判別手段と、
を備え、
上記使用装置判別手段の判別結果を受けて、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行う場合には上記補助演算装置を用いて上記予約命令の処理を行い、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行わない場合には上記ＣＰＵを用いて上記予約命令の処理を行うことを特徴とする半導体集積回路。
【請求項３】
請求項２記載の半導体集積回路において、
メモリをさらに備え、
上記構成データ書き込み手段は、上記履歴記憶手段を参照して、上記予約命令の回路構成データを、使用頻度の高い順に、上記補助演算装置と上記メモリとに書き込むことを特徴とする半導体集積回路。
【請求項４】
請求項２記載の半導体集積回路において、
メモリをさらに備え、
上記構成データ書き込み手段は、上記履歴記憶手段を参照して、上記予約命令の回路構成データを、上記補助演算装置に上記予約命令の回路構成データよりも空き容量が多ければ書込み、空き容量が少なければ上記予約命令の回路構成データよりも空き容量が多くなるまで上記予約命令よりも使用頻度の低い予約命令を上記補助演算装置から解放し、上記解放された予約命令を、上記メモリの上記メモリに書き込む第４の判別手段をさらに備えていることを特徴とする半導体集積回路。
【請求項５】
ＣＰＵと、
回路構成が書き換え可能であるプログラマブルデバイスで構成される上記ＣＰＵの補助演算装置と、
命令あるいは複数の命令からなる命令列を受けて、上記命令あるいは命令列が上記補助演算装置で処理が可能な予約命令か否かを判別する命令種類判別手段と、
上記予約命令を複数回受けたときの予約命令の遷移パターンを記憶する履歴記憶手段と、
上記予約命令の処理を行う回路構成データを上記補助演算装置に書き込む機能を有し、書き込みを行う際に、上記履歴記憶手段を参照して、現在受けている予約命令から遷移する確率がより高い予約命令の回路構成データを優先的に上記補助演算装置に書き込む構成データ書き込み手段と、
上記命令種類判別手段の判別結果を受けて、上記命令が上記予約命令であるときには、上記補助演算装置を用いて上記予約命令の処理を行うか否かを判別する使用装置判別手段と、
を備え、
上記使用装置判別手段の判別結果を受けて、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行う場合には上記補助演算装置を用いて上記予約命令の処理を行い、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行わない場合には上記ＣＰＵを用いて上記予約命令の処理を行うことを特徴とする半導体集積回路。
【請求項６】
ＣＰＵと、
回路構成が書き換え可能であるプログラマブルデバイスで構成される上記ＣＰＵの補助演算装置と、
命令あるいは複数の命令からなる命令列を受けて、上記命令あるいは命令列が上記補助演算装置で処理が可能な予約命令か否かを判別する命令種類判別手段と、
上記予約命令を複数回受けたとき、第１の予約命令の次に実行される第２の予約命令の頻度を各予約命令ごとに記憶する履歴記憶手段と、
上記予約命令の処理を行う回路構成データを上記補助演算装置に書き込む機能を有し、書き込みを行う際に、上記履歴記憶手段を参照して、現在受けている第１の予約命令の次に実行される頻度が高い第２の予約命令の回路構成データを優先的に上記補助演算装置に書き込む構成データ書き込み手段と、
上記命令種類判別手段の判別結果を受けて、上記命令が上記予約命令であるときには、上記補助演算装置を用いて上記予約命令の処理を行うか否かを判別する使用装置判別手段と、
を備え、
上記使用装置判別手段の判別結果を受けて、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行う場合には上記補助演算装置を用いて上記予約命令の処理を行い、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行わない場合には上記ＣＰＵを用いて上記予約命令の処理を行うことを特徴とする半導体集積回路。
【請求項７】
ＣＰＵと、
回路構成が書き換え可能であるプログラマブルデバイスで構成される上記ＣＰＵの補助演算装置と、
命令あるいは複数の命令からなる命令列を受けて、上記命令あるいは命令列が上記補助演算装置で処理が可能な予約命令か否かを判別する命令種類判別手段と、
上記予約命令を２回受けたときの予約命令の遷移パターンと、上記２つの予約命令を受ける時間間隔とを記憶する履歴記憶手段と、
上記予約命令の処理を行う回路構成データを上記補助演算装置に書き込む機能を有し、書き込みを行う際に、上記履歴記憶手段を参照して、現在受けている予約命令から遷移する確率がより高い予約命令の回路構成データを、上記時間間隔が回路構成データの書き込みに要する時間よりも長いときに限り上記補助演算装置に書き込む構成データ書き込み手段と、
上記命令種類判別手段の判別結果を受けて、上記命令が上記予約命令であるときには、上記補助演算装置を用いて上記予約命令の処理を行うか否かを判別する使用装置判別手段と、
を備え、
上記使用装置判別手段の判別結果を受けて、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行う場合には上記補助演算装置を用いて上記予約命令の処理を行い、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行わない場合には上記ＣＰＵを用いて上記予約命令の処理を行うことを特徴とする半導体集積回路。
【請求項８】
ＣＰＵと、
回路構成が書き換え可能であるプログラマブルデバイスで構成される上記ＣＰＵの補助演算装置と、
命令あるいは複数の命令からなる命令列を受けて、上記命令あるいは命令列が上記補助演算装置で処理が可能な予約命令か否かを判別する命令種類判別手段と、
上記予約命令を２回受けたときの予約命令の遷移パターンと、上記２つの予約命令を受ける時間間隔とを記憶する履歴記憶手段と、
上記予約命令の処理を行う回路構成データを上記補助演算装置に書き込む機能を有し、書き込みを行う際に、上記履歴記憶手段を参照して、現在受けている第１の予約命令の次に実行される頻度が高い第２の予約命令の回路構成データを、上記時間間隔が回路構成データの書き込みに要する時間よりも長いときに限り上記補助演算装置に書き込む構成データ書き込み手段と、
上記命令種類判別手段の判別結果を受けて、上記命令が上記予約命令であるときには、上記補助演算装置を用いて上記予約命令の処理を行うか否かを判別する使用装置判別手段と、
を備え、
上記使用装置判別手段の判別結果を受けて、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行う場合には上記補助演算装置を用いて上記予約命令の処理を行い、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行わない場合には上記ＣＰＵを用いて上記予約命令の処理を行うことを特徴とする半導体集積回路。
【請求項９】
請求項１〜８のうちいずれか１つに記載の半導体集積回路において、
上記構成データ書き込み手段は、上記補助演算装置の空き容量が上記予約命令の構成データの容量よりも大きければ上記予約命令の構成データの書き込みを行い、空き容量が少なければ上記予約命令の回路構成データの容量よりも空き容量が多くなるまで上記予約命令よりも使用頻度の低い予約命令を上記補助演算装置から解放することを特徴とする半導体集積回路。
【請求項１０】
請求項１〜８のうちいずれか１つに記載の半導体集積回路において、
上記補助演算装置はバンク構成を有しており、
上記構成データ書き込み手段は、上記補助演算装置の空きバンクが上記予約命令の構成データの必要バンクよりも大きければ上記予約命令の構成データの書き込みを行い、
空きバンクが少なければ上記予約命令の回路構成データの必要バンクよりも空きバンクの方が多くなるまで上記予約命令よりも使用頻度の低い予約命令を上記補助演算装置から解放することを特徴とする半導体集積回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＣＰＵとプログラマブルデバイスとを混載した半導体集積回路に係わり、特にその処理性能向上対策に関する。
【０００２】
【従来の技術】
従来より、ＰＬＤ（Programmable Logic Device）もしくはＦＰＧＡ(Field Programmable Gate Array)と呼ばれるプログラマブルデバイスが広く知られている（以下、本明細書ではＦＰＧＡと記載する）。ＦＰＧＡはユーザーがその回路構成をプログラミングすることが可能であるデバイスであって、ユーザーが設計した回路を即座に構成し、その動作を実現することができるというメリットがある。特に回路構成を繰り返し再構成することができるＦＰＧＡの場合には、その時々に必要な回路構成に柔軟に変更して処理性能が上げられるというメリットもある。
【０００３】
さらに、近年、このＦＰＧＡとＣＰＵとを１つの半導体集積回路上に混載したものが提案されてきている。このような半導体集積回路においては、従来のＣＰＵのプログラムの変更に加えて、ＦＰＧＡで構成された部分の回路構成が変更可能となったため、システムの変更により柔軟に対応することができることになる。
【０００４】
従来のＣＰＵとＦＰＧＡを混載した半導体集積回路の例として、例えば特開平05-242050 号公報に開示されるようなものがあり、ＣＰＵとＦＰＧＡとを備え、処理すべき演算の一部をＦＰＧＡ部に構成される回路によって行う方法が知られている。
【０００５】
【発明が解決しようとする課題】
しかしながら、上記従来のＣＰＵとＦＰＧＡを混載した半導体集積回路においては、ＦＰＧＡで処理する命令が来た場合にＦＰＧＡにその処理を行う回路が構成されていなければ未実装命令（undefined operation）として扱われ処理がストップするという問題があった。
【０００６】
また、上記従来のＣＰＵとＦＰＧＡを混載した半導体集積回路においてはＦＰＧＡに構成される回路を固定した場合には、回路構成がダイナミックに変更することができるというＦＰＧＡの特徴を生かしておらず、その時々に必要な回路に柔軟に対応できず、処理性能向上に限界があった。
【０００７】
また、ＦＰＧＡに構成される回路をダイナミックに変更するようにした場合にも、回路構成変更のタイミングはあらかじめユーザーが指定する必要があり、自動的に回路構成の変更ができなかった。また、異なるユーザーが異なる処理を同じ半導体集積回路に行わせる場合にはＦＰＧＡの回路構成や回路構成を変更するタイミングを再検討しなくてはならないことになる。
【０００８】
すなわち、従来のＣＰＵとＦＰＧＡを混載した半導体集積回路においては、ＦＰＧＡによる処理性能向上は自動的に行われないという問題があった。
【０００９】
本発明の目的は、ＦＰＧＡに構成される回路を自動的にダイナミックに変更でき、処理性能の高いＣＰＵとＦＰＧＡを混載した半導体集積回路を提供することにある。
【００１０】
【課題を解決するための手段】
本発明の半導体集積回路は、ＣＰＵと、回路構成が書き換え可能であるプログラマブルデバイスで構成される上記ＣＰＵの補助演算装置と、命令あるいは複数の命令からなる命令列を受けて、上記命令あるいは命令列が上記補助演算装置で処理が可能な予約命令か否かを判別する命令種類判別手段と、上記予約命令の処理を行う回路構成データを上記補助演算装置に書き込むための構成データ書き込み手段と、上記命令種類判別手段の判別結果を受けて、上記命令が上記予約命令であるときには、上記補助演算装置を用いて上記予約命令の処理を行うか否かを判別する使用装置判別手段とを備え、上記使用装置判別手段の判別結果を受けて、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行う場合には上記補助演算装置を用いて上記予約命令の処理を行い、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行わない場合には上記ＣＰＵを用いて上記予約命令の処理を行うものである。
【００１１】
これにより、プログラマブルデバイスによって構成される回路を自動的にダイナミックに変更することができ、処理性能の高いＣＰＵとプログラマブルデバイスとを混載した半導体集積回路を提供することが可能になった。
【００１３】
上記命令種類判別手段の判別結果を受けて、上記命令が上記予約命令であるときには、上記予約命令の処理を行う回路が上記補助演算装置内に存在するか否かを判別する存在判別手段と、上記存在判別手段の判別結果を受けて、上記予約命令の処理を行う回路が上記補助演算装置内に存在する場合に、上記予約命令の処理を上記補助演算装置で行わせるように指示し、上記予約命令の処理を行う回路が上記補助演算装置内に存在しない場合に、上記予約命令の処理を上記ＣＰＵで行うように指示する命令切り替え手段とをさらに備えることにより、プログラマブルデバイス内に予約命令の構成データがない場合でも、未実装命令として扱われてＣＰＵが停止するような事態は発生しない。
【００１４】
上記予約命令はＣＰＵで実行され得ない命令であり、上記予約命令と同等の処理をＣＰＵで行うための代替命令を供給する代替命令供給手段とをさらに備え、上記命令切り替え手段は、上記代替命令供給手段から上記代替命令を取得する機能を有していることにより、予約命令がない場合には、代替命令を送ることにより、ＣＰＵによって予約命令による処理と同等の処理が行なわれる。したがって、プログラマブルデバイス内に予約命令の構成データがない場合でも、未実装命令として扱われてＣＰＵが停止するような事態は発生しない。
【００１５】
上記予約命令はＣＰＵで実行され得ない命令であり、上記命令又は命令列と、上記予約命令と同等の処理をＣＰＵで行うための代替命令とを供給する機能を有する命令供給手段をさらに備え、上記命令切り替え手段は上記命令供給手段から上記予約命令または上記代替命令を選択して取得する機能を有していることにより、予約命令又は代替命令を迅速に実行することが可能になる。
【００１６】
上記予約命令はＣＰＵで実行され得る命令であり、上記命令切り替え手段は、上記予約命令の処理を上記補助演算装置で行わせる場合は上記予約命令の処理を上記補助演算装置で行わせるように上記命令を変更し、上記予約命令の処理を上記ＣＰＵで行わせる場合は上記予約命令を変更しない機能をさらに有していることが好ましい。
【００１７】
上記構成データ書き込み手段は、上記予約命令を受けたときに、当該予約命令の処理を行う回路が上記補助演算装置に存在しない場合に、上記補助演算装置に上記予約命令の回路構成データを書き込む機能を有していることにより、プログラムが変更された場合でも、その変更に応じたプログラマブルデバイスの利用が可能になる。したがって、プログラマブルデバイスを利用したＨＷ／ＳＷの切り換えなどのダイナミックな書き換えにより、処理能率の向上を図ることができる。
【００１８】
上記予約命令の使用頻度を記憶する履歴記憶手段をさらに備え、上記構成データ書き込み手段は、上記履歴記憶手段を参照して、使用頻度がより高い予約命令の処理を行う回路構成データを優先的に上記補助演算装置に書き込むことにより、頻度を指標とするプログラマブルデバイスの使用の最適化を図ることができる。
【００１９】
メモリをさらに備え、上記構成データ書き込み手段は、上記履歴記憶手段を参照して、上記予約命令の回路構成データを、使用頻度の高い順に、上記補助演算装置と上記メモリとに書き込むことが好ましい。
【００２０】
メモリをさらに備え、上記構成データ書き込み手段は、上記履歴記憶手段を参照して、上記予約命令の回路構成データを、上記補助演算装置に上記予約命令の回路構成データよりも空き容量が多ければ書込み、空き容量が少なければ上記予約命令の回路構成データよりも空き容量が多くなるまで上記予約命令よりも使用頻度の低い予約命令を上記補助演算装置から解放し、上記解放された予約命令を、上記メモリの上記メモリに書き込む第４の判別手段をさらに備えていることがより好ましい。
【００２１】
上記予約命令を複数回受けたときの予約命令の遷移パターンを記憶する履歴記憶手段をさらに備え、上記構成データ書き込み手段は、上記履歴記憶手段を参照して、現在受けている予約命令から遷移する確率がより高い予約命令の回路構成データを優先的に上記補助演算装置に書き込むことにより、特定の遷移パターンを示す種類のデバイスに特に適合した回路が得られることになる。
【００２２】
その場合、上記予約命令を複数回受けたとき、第１の予約命令の次に実行される第２の予約命令の頻度を各予約命令ごとに記憶する履歴記憶手段をさらに備え、上記構成データ書き込み手段は、上記履歴記憶手段を参照して、現在受けている第１の予約命令の次に実行される頻度が高い第２の予約命令の回路構成データを優先的に上記補助演算装置に書き込むことが好ましい。
【００２３】
また、上記予約命令を２回受けたときの予約命令の遷移パターンと、上記２つの予約命令を受ける時間間隔とを記憶する履歴記憶手段をさらに備え、上記構成データ書き込み手段は、上記履歴記憶手段を参照して、現在受けている予約命令から遷移する確率がより高い予約命令の回路構成データを、上記時間間隔が回路構成データの書き込みに要する時間よりも長いときに限り上記補助演算装置に書き込むことにより、処理能力の向上を図ることができる。
【００２４】
上記予約命令を２回受けたときの予約命令の遷移パターンと、上記２つの予約命令を受ける時間間隔とを記憶する履歴記憶手段をさらに備え、上記構成データ書き込み手段は、上記履歴記憶手段を参照して、現在受けている第１の予約命令の次に実行される頻度が高い第２の予約命令の回路構成データを、上記時間間隔が回路構成データの書き込みに要する時間よりも長いときに限り上記補助演算装置に書き込むことによっても、処理能力の向上を図ることができる。
【００２５】
上記構成データ書き込み手段は、上記補助演算装置の空き容量が上記予約命令の構成データの容量よりも大きければ上記予約命令の構成データの書き込みを行い、空き容量が少なければ上記予約命令の回路構成データの容量よりも空き容量が多くなるまで上記予約命令よりも使用頻度の低い予約命令を上記補助演算装置から解放することにより、処理能力の向上を図ることができる。
【００２６】
上記補助演算装置はバンク構成を有しており、上記構成データ書き込み手段は、上記補助演算装置の空きバンクが上記予約命令の構成データの必要バンクよりも大きければ上記予約命令の構成データの書き込みを行い、空きバンクが少なければ上記予約命令の回路構成データの必要バンクよりも空きバンクの方が多くなるまで上記予約命令よりも使用頻度の低い予約命令を上記補助演算装置から解放することにより、より確実に処理能力の向上を図ることができる。
【００２７】
【発明の実施の形態】
（第１の実施形態）
−システムの概略構成−
図１は、本発明の第１の実施形態における半導体集積回路のブロック回路図である。同図に示すように、本実施形態の半導体集積回路１０は、外付けされたコンフィギュレーションメモリ１１と信号の授受が可能になっている。そして、半導体集積回路１０の内部には、データ等を処理するためのプログラムを記憶している命令メモリ１２と、ＦＰＧＡで処理する予約命令（以下“Ｆ命令”）と同じ処理をＣＰＵで行なうための代替命令を記憶している代替命令記憶部１３と、命令メモリ１２及び代替命令記憶部１３から命令を取り込むためのプリフェッチ部１４と、命令メモリ１２から入力されたＦ命令の履歴を記憶するための履歴記憶部１５と、履歴記憶部１５の出力を受けてＦＰＧＡ１９に構成する回路を判断する判別部１６と、判別部１６の出力を受けてＦＰＧＡ１９に構成する回路を書き換えるための書き換え制御部１７と、プリフェッチ部１４から供給される命令に応じて動作するＣＰＵ１８と、ＦＰＧＡ１９と、内蔵メモリ２１と、構成データタグ２２とを備えている。ＦＰＧＡ１９内にはＦＰＧＡ１９に構成する回路の構成データを記憶するための構成データメモリ２０が含まれている。命令はＣＰＵ１８内でデータ処理が完結する基本命令とＣＰＵ１８外の回路によりデータ処理を行う拡張命令からなり、Ｆ命令は拡張命令に相当し、代替命令は基本命令に相当する。
【００２８】
なお、図示しないが、半導体集積回路１０内には、ＣＰＵ１８やＦＰＧＡ１９以外の論理回路やアナログ回路があってもよく、それらによっても各種の処理が行われるが、これらの処理については、従来と同様の制御で行なうことができる。
【００２９】
−記憶部全般の構成−
まず、命令メモリ１２、代替命令記憶部１３、ＦＰＧＡ１９、構成データタグ２２、コンフィギュレーションメモリ１１及び履歴記憶部１５などの記憶部全般の構成について説明する。
【００３０】
命令メモリ１２には、ＣＰＵ１８で実行するプログラムが格納されている。このプログラム内にＦ命令が含むことがある。Ｆ命令は、各Ｆ命令を識別するためのＩＤコードが付される。代替命令記憶部１３には、各Ｆ命令と同じ処理をＣＰＵ１８で行うための代替命令が格納されている。
【００３１】
図４は、命令メモリ１２に格納されるプログラムの例を示す図である。符号＃よりも左側の「ＡＤＤ  Ｄ１，Ｄ２」は命令メモリに格納される命令であり、符号＃よりも右側に記載されている内容は命令の動作を説明するコメントで命令メモリには格納されない。この例では、Ｄ１，Ｄ２，Ｄ３という３つのレジスタがあり、１行目の命令はＤ１とＤ２とを加算してその加算結果をＤ２に代入する命令で、２行目の命令は、Ｄ２のデータをＤ３の値だけ右にシフトしてＤ２に代入する命令である。
【００３２】
構成データタグ２２は、ＦＰＧＡのバンクの数だけのレジスタ（又はメモリ）によって構成されており、この各レジスタ（又はメモリ）には、構成データのＩＤコードが格納されている。
【００３３】
図５は、バンク数が８で（バンク０〜バンク７）、構成データ数が４（ＩＤ＝１〜４）の場合の構成データタグ２２のデータ構造を示す図である。ただし、同図において、ＩＤ＝０とは何も入っていないことを示している。同図に示すように、この例では、バンク０〜１にＩＤ１のＦ命令の構成データが入っており、バンク２〜４には、ＩＤ４のＦ命令の構成データが入っており、バンク５〜７には構成データが入っていないことを示している。構成データタグ２２は、プリフェッチ部１４などからの“あるＩＤで特定される構成データがあるか？”という問い合わせに対して回答する機構を有している。たとえば、“ＩＤ＝４の構成データがあるか？”という問いに対しては、“バンク２〜４にある”と回答する。また、“空きがあるか”という問い合わせに対しても、回答する機構を備えており、図５に示す場合には、上記問い合わせに対して“バンク５〜７が空いている”と回答することになる。
【００３４】
図６（ａ），（ｂ）は、それぞれ代替命令記憶部１３，命令メモリ１２に格納されるプログラムのうちＦ命令の例を示す図である。図６（ｂ）に示す例では、Ｆ命令であることを示すＦＰＧＡという文字列の後に、ＩＤコードである１と、この命令で使用される３つのレジスタＤ１、Ｄ２、Ｄ３が指定されている。そして、このＦ命令で実行される処理は、ここでは図４で示されるプログラムと同じである。
【００３５】
図６（ｂ）に示す例では、図６（ａ）のＦ命令に対する代替命令の例を示している。すなわち、ＣＰＵ１８で、図６（ａ）のＦ命令と同じ処理を行うプログラムが格納されている。
【００３６】
すなわち、代替命令記憶部１３には、Ｆ命令をＦＰＧＡ１９で処理せずにＣＰＵ１８で処理する場合に、Ｆ命令と同じ処理を実現するための代替命令が格納されている。つまり、ここでいう代替命令とは、ＦＰＧＡ１９によって処理する拡張命令がきても、その処理を行う回路がＦＰＧＡ１９に構成されていない場合に、ＣＰＵ１８によって同じ処理を行わせるための基本命令である。
【００３７】
Ｆ命令がプリフェッチ部１４によりフェッチされ、かつ、代替命令を実行することになると、プリフェッチ部１４は代替命令記憶部１３に対して当該Ｆ命令の代わりとなる代替命令をフェッチするようアクセスする。このとき、当該Ｆ命令のＩＤコードを代替命令記憶部１３に送ると、代替命令記憶部１３は、ＩＤコードに対応する代替命令を供給する。そして、終了コードＦＰＧＡend を検知すると、代替命令の終了信号プリフェッチ部１４に供給する。プリフェッチ部１４は、代替命令の終了信号を受けると、再び命令メモリ１２から命令をフェッチするように動作する。
【００３８】
一般的に、ＦＰＧＡは回路構成データが与えられることによって、その回路構成が決定される。回路構成データは、一般的にチップ外部に備えられた不揮発性メモリであるコンフィギュレーションメモリに記憶されており、コンフィギュレーションメモリから回路構成データがＦＰＧＡに与えられる。また、ＦＰＧＡ内では、回路構成データがＦＰＧＡ内に構成された構成データメモリに保持され、回路構成データに基づき回路の最小単位であるロジックモジュールの論理動作とロジックモジュール間の接続関係が決まり、これによりＦＰＧＡの回路構成が確定する。
【００３９】
本実施形態においては、ＦＰＧＡ１９は、図１に示すように、複数のバンクに区画されており、各バンクに対応する構成データメモリ２０が付設されている。構成データメモリ２０へのコンフィギュレーション（構成データの書き込み）は、このバンク単位で、ＣＰＵの動作とは独立して行なうことができる。また、ＣＰＵ１８とＦＰＧＡ１９との間はバスによって接続されており、Ｆ命令で必要なだけのデータのやりとりが可能に構成されている。
【００４０】
履歴記憶部１５は、各Ｆ命令の頻度をカウントするものであり、Ｆ命令の数と同じ数のレジスタと、カウンタとによって構成されている。プリフェッチ部１４がＦ命令を検知すると、そのＦ命令のＩＤコードが履歴記憶部１５に送られ、履歴記憶部１５は送られたＩＤコードに対応するレジスタの値を１増やす。
【００４１】
−プリフェッチ部の処理−
プリフェッチ部１４は、命令メモリ１２から命令をフェッチする機能と、代替命令記憶部１３から代替命令をフェッチする機能と、フェッチしてきた命令がＦ命令か否かを判断する機能とを有する。図２は、プリフェッチ部１４の処理の流れを示すフローチャートである。すなわち、ステップＳＴ１１で、命令を命令メモリ１２からフェッチして、ステップＳＴ１２で、命令がＦ命令か否かを判断する。そして、Ｆ命令でない場合には、ステップ１６でＣＰＵ１８にそのまま命令を送る一方、Ｆ命令である場合には、ステップＳＴ１３に進んで、構成データタグ２２の内容を参照して、Ｆ命令のＩＤ番号に基づいてＦＰＧＡ１９にそのＩＤのＦ命令の回路が構成されているかどうかを判断する。そして、ＦＰＧＡ１９にそのＩＤのＦ命令の回路が構成されている場合には、ステップＳＴ１４に進んで、Ｆ命令をそのままＣＰＵ１８に送り、ＦＰＧＡ１９にそのＩＤのＦ命令の回路が構成されていない場合には、ステップＳＴ１５に移行して、代替命令を代替命令記憶部１３からフェッチして、ＣＰＵ１８に送る。代替命令列が終了するまでは、プリフェッチ部１４は、命令メモリ１２からではなく、代替命令記憶部１３から代替命令をフェッチしてくる。
【００４２】
このように、Ｆ命令の処理を行う回路がＦＰＧＡ１９に構成されていない場合には、代替命令をＣＰＵ１８に送ることにより、Ｆ命令による処理と同じ処理が行なわれる。すなわち、ＦＰＧＡ内にＦ命令の処理を行う回路が構成されていない場合でも、従来のように未実装命令として扱われてＣＰＵが停止するような事態は発生しない。
【００４３】
−判別部及び書き換え制御部の処理−
判別部１６は、主として、コンフィギュレーションメモリ１１、ＦＰＧＡ１９内の構成データメモリ２０及び内蔵メモリ２１間の構成データの移動を決定するものである。入力として、履歴記憶部１５からの履歴情報、構成データタグ２２からの構成データ情報、コンフィギュレーションメモリ１１からのバンク数情報などがある。これらの情報を用いて、どのＦ命令の構成データを構成データメモリ２０のどこのバンクにローディングするかを決定する。そして、書き換え制御部１７により、構成データのローディングを制御する。
【００４４】
従来のＣＰＵとＦＰＧＡを混載した半導体集積回路では、どのＦ命令の構成データをいつＦＰＧＡのどこにローディングすれば処理性能が高くなるかをあらかじめ考える必要があった。これに対して、本実施形態では、以下のアルゴリズムでＦＰＧＡ１９の構成データの更新を行なうことにより、どのＦ命令の構成データをいつＦＰＧＡのどこにローディングすれば処理性能が高くなるかを自動的に判断し、構成データの更新を自動的に行うことができる。
【００４５】
図３は、判別部１６及び書き換え制御部１７における処理の流れを示すフローチャートである。まず、ステップＳＴ２１で、当該Ｆ命令Ａを構成するのに必要なバンク数をコンフィギュレーションメモリ１１から読み出す。次に、ステップＳＴ２２で、ＦＰＧＡ１９の空きバンク数ＮN がＦ命令Ａの必要バンク数ＮA 以上か否かを判別し、ＮN ≧ＮA （ＹＥＳ）であれば、ＳＴ２３でＦＰＧＡ１９中の空きバンクの構成データメモリにＦ命令Ａの構成データをローディングする。このとき、構成データが内蔵メモリ２１にあればそちらからローディングし、終了する。
【００４６】
一方、ステップＳＴ２２の判別で、ＮN ＜ＮA （ＮＯ）のときには、ＦＰＧＡ１９に構成されたＦ命令のうちで使用頻度の低いＦ命令との置き換えを図るための処理を行う。そこで、ステップＳＴ２４に移行して、まず、ＦＰＧＡ１９に構成されているＦ命令のうち使用頻度のもっとも低いものを選択して、これを置換用のＦ命令Ｂとする。
【００４７】
そして、ステップＳＴ２５で、Ｆ命令Ａの使用頻度ＵA がＦ命令Ｂの使用頻度ＵＢ よりも大きいか否かを判断し、ＵA ≦ＵB （ＮＯ）のときには、置き換えるべきでないと判断して、何もせずに終了する。
【００４８】
一方、ＵA ＞ＵB （ＹＥＳ）のときには、ステップＳＴ２７で、内蔵メモリ２１にＦ命令Ｂの構成データを記憶することができるだけの空間があるかを調べる。そして、内蔵メモリ２１にＦ命令Ｂの構成データを記憶することができるだけの空間がある（ＹＥＳ）場合には、ステップＳＴ２８で、Ｆ命令ＢをＦＰＧＡ１９の構成データメモリ２０から内蔵メモリ２１に移動させた後、ステップＳＴ２９で、ＦＰＧＡ１９の構成データメモリ２０中のＦ命令Ｂが格納されているバンクを空きバンクとして、ステップＳＴ２２に戻る。このとき、空きバンク数ＮN がＦ命令Ｂの分だけ増えるので、ステップＳＴ２２の判別結果がＹＥＳ（ＮN ≧ＮA ）になる確率が高くなるが、ＮＯ（ＮN ＜ＮA ）のときには、別のＦ命令が置換用のＦ命令Ｂに指定されて、ステップＳＴ２４以降の処理が行われる。
【００４９】
また、ステップＳＴ２７の判別で、内蔵メモリ２１にＦ命令Ｂの構成データを記憶することができるだけの空間がない（ＮＯ）場合には、ステップＳＴ３０に移行して、内蔵メモリ２１に記憶されているＦ命令の構成データがあるか否かを判別する。そして、内蔵メモリ２１に記憶されているＦ命令の構成データがあれば、ステップＳＴ３１に進んで、内蔵メモリ２１について、ＦＰＧＡ１９中の構成データメモリ２０について行なったステップＳＴ２４、ＳＴ２５と同様の処理を行なう。すなわち、ステップＳＴ３１で、内蔵メモリ２１に格納されているＦ命令のうち使用頻度がもっとも低い命令を置換用のＦ命令Ｃとする。そして、ステップＳＴ３２で、Ｆ命令Ｂの使用頻度ＵB がＦ命令Ｃの使用頻度ＵC よりも大きいか否かを判断し、ＵB ＞ＵC であれば、ステップＳＴ３３で、内蔵メモリ２１中のＦ命令Ｃが格納されている領域を空き空間として、ステップＳＴ２７の処理に戻る。
【００５０】
一方、ステップＳＴ３０の判別において内蔵メモリ２１中にＦ命令が存在していない場合や、ステップＳＴ３２の判別においてＵB ≦ＵC （ＮＯ）のときには、ステップＳＴ２９に移行して、Ｆ命令Bの構成情報が格納されたバンクを空きとしてＳＴ２２へと戻る。
【００５１】
以上のような処理の結果、最終的に、Ｆ命令の構成データは使用頻度の高い順番に構成データメモリ２０、内蔵メモリ２１に格納される。
【００５２】
以上の処理において、Ｆ命令Ｂ、Ｆ命令Ｃは置換用のＦ命令を意味するもので、特定の１つのＦ命令を指すものではない。
【００５３】
なお、リセット時には、ＦＰＧＡ１９内の構成データメモリ２０に対してＦ命令の構成データの初期コンフィギュレーションが行なわれる。この初期コンフィギュレーションは、構成データメモリ２０に任意のＦ命令の構成データをローディングする方法と、履歴記憶部１５の履歴データからより使用頻度の高いＦ命令の構成データを構成データメモリ２０に優先的にローディングする方法とがある。後者の場合には、リセットによって履歴記憶部１５の情報が消去されないようにする必要がある。パワーオンリセット時も同様の動作が必要な場合には、履歴記憶部１５の記憶情報が不揮発性を有している必要がある。
【００５４】
本実施形態によると、“使用頻度Ｕ”というパラメータをＦＰＧＡ１９中の構成データメモリ２０の構成データを決定する際に用いることにより、使用頻度の高いものから順に構成データメモリ２０、内蔵メモリ２１に格納されることになる。
【００５５】
したがって、どのＦ命令の構成データをいつどこにローディングするかを予め考えることなく、使用頻度をパラメータとしてＦＰＧＡの構成を自動的に変更させることが可能になる。その結果、より使用頻度の高いＦ命令をＦＰＧＡに自動的に構成することが可能となり、処理性能の向上を図ることができる。
【００５６】
なお、履歴記憶部で記憶することができる使用頻度Ｕの数値には上限があるので、上限以上の頻度の更新結果が正しく反映されないおそれがある。そこで、あるＩＤのＦ命令の使用頻度Ｕが上限に達したとき、適正化が終了したものと見なし以降の更新を停止するか、全てのＦ命令の使用頻度Ｕを一律に減少させて更新を継続する方法をとることにより、使用頻度の高いＦ命令をＦＰＧＡに保持することができる。
【００５７】
（第２の実施形態）
次に、Ｆ命令と代替命令とが併記されたデータ構造を有する命令メモリを有する場合の制御方法に関する第２の実施形態について説明する。本実施形態においては、図１に示す構成において、代替命令記憶部１３を備えていないことが前提である。
【００５８】
図７は、命令メモリ１２中のプログラムにＦ命令と代替命令が併記されている場合の具体例を示す図である。図７においては、図６（ａ）に示すＦ命令および図６（ｂ）に示すＦ命令と、それらの代替命令とが併記されている場合を例にとっている。
【００５９】
図７に示すように、プリフェッチ部１４がＦ命令を受けて、Ｆ命令をＦＰＧＡ１９で処理する場合には、プリフェッチ部はＦ命令をＣＰＵ１８に送った後、Ｆ命令に記述されているアドレスａｄｄｒまでジャンプする。したがって、代替命令は実行されず、次の命令が実行されることになる。一方、Ｆ命令をＦＰＧＡ１８で処理せず代替命令を実行する場合には、プリフェッチ部１４はＦ命令を無視し、Ｆ命令に続いて記述された代替命令をフェッチし、ＣＰＵ１８に送る。したがって、この場合には代替命令がＣＰＵ１８で実行されることになる。
【００６０】
本実施形態においては、プリフェッチ部１４が命令メモリ１２からフェッチした命令がＦ命令であり、かつ、そのＦ命令の回路がＦＰＧＡ１９内に構成されていない場合には、Ｆ命令を行なうことなく代替命令を行なう。
【００６１】
本実施形態においては、上記第１の実施形態に比べて、Ｆ命令と代替命令とを切り換えるための切り換え機構が不要になり、代替命令を記憶するためのハードウェアも必要でないという利点がある。ただし、第１の実施形態では、Ｆ命令と代替命令とを並列にフェッチすることができるので、本実施形態のごとく、スキップなどのときに生じる待ち時間が少ないという利点がある。
【００６２】
本実施形態においても、構成データタグ２２を利用したＦ命令の存在の確認や、判別部１６、書き換え制御部１７を利用したＦ命令の構成データのローディングなどの制御は、第１の実施形態と同様に行なうことができ、第１の実施形態と同じ効果を発揮することができる。
【００６３】
（第３の実施形態）
上記第１、第２の実施形態においては、命令メモリ内のプログラムにＦ命令が含まれ、そのＦ命令を検知することによってＦ命令の処理をＦＰＧＡで行なうかどうかを判断するように構成されている。したがって、Ｆ命令を使用していないプログラムを使用した場合には、混載されたＦＰＧＡを使用した処理ができないため、ＦＰＧＡによる処理能力の向上を図ることができない。そこで、本実施形態においては、命令メモリには、Ｆ命令を使用していないプログラムを格納し、かつＦＰＧＡを使用した処理を実現し、このような場合でも処理能力の向上を図りうるようにする。
【００６４】
図１１は、本実施形態における半導体集積回路のブロック回路図である。同図に示すように、本実施形態においては、代替命令記憶部が設けられていない。そして、本実施形態においては、命令メモリ１２内のプログラムには、Ｆ命令が含まれていない。そして、ＦＰＧＡ１９で行う処理として、Ｆ命令以外の命令から成る命令列と同等の処理を行う回路の構成データを用意して、その命令列、構成データおよびＩＤコードを、予めコンフィギュレーションメモリ１１に格納しておく。
【００６５】
図８は、本実施形態において、命令メモリ１２から供給される命令列の例を示す図である。この例では、レジスタに格納されたＤ１、Ｄ２、Ｄ３という３つのデータがあり、１行目の命令でデータＤ１とデータＤ２とを加算してその加算結果をＤ２に代入し、２行目の命令で、データＤ２の値をデータＤ３の値だけ右にシフトしてデータＤ２に代入する。
【００６６】
図９は、本実施形態におけるコンフィギュレーションメモリのデータ構造を示す図である。同図に示すように、コンフィギュレーションメモリのデータは、ＩＤコード、命令列、対応する構成データとバンク数とを含んでいる。
【００６７】
図１０は、図８に示す命令列の例に対するコンフィギュレーションメモリのデータ構造の例を示す図である。具体的にはＩＤコードは１で、命令列は「ＡＤＤＤ１、Ｄ２・ＬＳＲ  Ｄ３、Ｄ２」で、バンク数は１で対応する構成データ（図では項目のみ）となっている。
【００６８】
構成データタグ２２の構造は上記第１の実施形態で説明したとおりである。
【００６９】
そして、本実施形態においては、プリフェッチ部１４が命令メモリ１２から命令列をフェッチしたときに、コンフィギュレーションメモリ１１内の命令列部を参照して、フェッチした命令列と一致するものがコンフィギュレーションメモリ１１内の命令列中に存在しているか否かを判別部で判別し、一致するものがある場合には、第１、第２の実施形態のＦ命令をフェッチしたときと同様に、以下の動作を行う。本実施形態では、命令メモリ１２からフェッチされた命令列と一致するものがコンフィギュレーションメモリ１１内の命令列中に存在しており、かつその処理をＦＰＧＡ１９で行わないと判定された命令列が第１、第２の実施形態における代替命令に相当することになる。また、本実施形態では、命令メモリ１２からフェッチされた命令列と一致するものがコンフィギュレーションメモリ１１内の命令列中に存在しており、かつ、その処理をＦＰＧＡ１９で行うと判断した場合には、プリフェッチ部は図８で示す命令列を図６（ａ）に示すＦ命令に書き換えてＣＰＵ１８に送る。これにより、その処理はＦＰＧＡ１９で行われることになる。
【００７０】
なお、リセット時やパワーオンリセット時に、コンフィギュレーションメモリ１１内の命令列データをプリフェッチ部に取り込むことも可能であり、その場合には、コンフィギュレーションメモリに命令列の参照を行う必要がないため、処理の迅速化が可能である。
【００７１】
本実施形態においても、構成データタグ２２を利用した構成データの存在の確認や、判別部１６、書き換え制御部１７を利用した構成データのローディングなどの制御は、第１の実施形態と同様に行なうことができる。
【００７２】
本実施形態によると、Ｆ命令が含まれないプログラムに対しても、ＦＰＧＡを使用した処理を可能とし、処理能力の向上を図ることができる。
【００７３】
（第４の実施形態）
次に、図１、図１１に示す履歴記憶部１５に１つのＦ命令だけでなく複数のＦ命令の履歴を記憶する機能を持たせるようにした第４の実施形態について説明する。
【００７４】
本実施形態においては、上記図１又は図１１に示す半導体集積回路を前提とし、履歴記憶部１５の構成が上記第１〜第３の実施形態とは異なっている場合について説明する。
【００７５】
図１２は、本実施形態における履歴記憶部の主要部の構成を示す図である。同図に示すように、履歴記憶部１５ａには、構成データ数の２乗分のレジスタと、、前回Ｆ命令ＩＤ記憶部と、インクリメンタとが設けられている。本実施形態においては、構成データ数が５つの場合を例にとっている。履歴記憶部１５ａには、前回のＦ命令から今回のＦ命令への遷移パターン、つまりＩＤ番号１、２、３、４、５の遷移パターンに対応して、５×５＝２５の頻度のレジスタが設けられており、各頻度のレジスタには、その遷移パターンが生じた頻度が登録されている。同図には、一部のレジスタについてのみ頻度値が例示されている。この遷移頻度の登録方法は、以下の通りである。
【００７６】
履歴記憶部１５ａに、図１，図１１に示すプリフェッチ部１４からＦ命令のＩＤが入力されると、次のＦ命令が入力されるまでの間、前回Ｆ命令ＩＤ記憶部にそのＩＤ番号が保持される。そして、履歴記憶部１５ａに次のＦ命令のＩＤが入力されると、前回のＦ命令と次のＦ命令とのＩＤ番号の遷移パターンが分かるので、インクリメンタがその遷移パターンに対応するレジスタから現在の頻度を取り出して、その値に１を加算してレジスタに戻し、次のＦ命令は前回Ｆ命令ＩＤ記憶部に保持される。これにより、各レジスタには、各遷移パターンの頻度が更新されながら登録される。
【００７７】
一方、図１又は図１１に示す判別部１６では、履歴記憶部１５ａの頻度のレジスタに登録されている頻度を参照して、現在実行されているＦ命令のＩＤ番号から次にどのＦ命令の構成データを構成データメモリ２０にローディングしておくかを決定する。例えば、頻度のレジスタには図１２に例示されている頻度値が登録されている場合、現在実行されているＦ命令のＩＤ番号が１であるとすると、そのＦ命令が終了した後に、遷移する確率がもっとも高いＩＤ番号３のＦ命令の構成データをＦＰＧＡ１９の構成データメモリ２０にローディングしておく。
【００７８】
上記第１、第２の実施形態におけるＦ命令の構成データのローディングの制御は、入力される頻度がもっとも高いＦ命令の構成データを優先的にＦＰＧＡ１９の構成データメモリ２０に格納したが、本実施形態においては、現在のＦ命令から予想される遷移の確率がもっとも高いＦ命令の構成データを優先的にＦＰＧＡ１９の構成データメモリ２０に格納する。言い換えると、本実施形態では、遷移パターンの発生頻度を指標として、Ｆ命令の構成データのローディングの制御を行なうことになる。具体的には、図３に示すフローチャートにおいて、ステップＳＴ２４、ＳＴ３１においては遷移する確率が低いＦ命令をＦ命令Ｂ、Ｆ命令Ｃとし、ステップＳＴ２５、ＳＴ３２における判別において、使用頻度Ｕに代えて遷移頻度Ｔの大小を比較する。
【００７９】
本実施形態によると、現在のＦ命令から遷移する確率がもっとも高いＦ命令の構成データを予めＦＰＧＡの構成データメモリにローディングしておくことにより、新Ｆ命令が入力されたときに、新Ｆ命令の構成データがＦＰＧＡ１９の構成データメモリ中に存在しないために代替命令を使用せざるを得ない，という事態をできるだけ回避することができる。したがって、特定の遷移パターンが現れやすいプログラムでは処理能力の向上が期待できる。
【００８０】
なお、上記第４の実施形態においては、２つのＦ命令間の遷移パターンを履歴記憶部に記憶させる場合について説明したが、３つ以上のＦ命令の遷移パターンを履歴記憶部に記憶させる場合についても適用することができる。
【００８１】
（第５の実施形態）
次に、上記第４の実施形態に加えて、Ｆ命令の遷移に要するインターバルも記憶するようにした例である第５の実施形態について説明する。
【００８２】
本実施形態においても、上記図１又は図１１に示す半導体集積回路を前提とし、履歴記憶部の構成が上記第１〜第４の実施形態とは異なっている場合について説明する。
【００８３】
図１３は、本実施形態における履歴記憶部の主要部の構成を示す図である。同図に示すように、履歴記憶部１５ｂには、構成データ数の２乗の２倍分のレジスタと、前回Ｆ命令ＩＤ記憶部と、インクリメンタと、インターバル検出部（カウンタ）と、インターバル更新部とが設けられている。本実施形態においては、構成データ数が５つの場合を例に採っている。履歴記憶部１５ｂには、前回のＦ命令から今回のＦ命令への遷移パターン、つまりＩＤ番号１、２、３、４、５の遷移パターンに対応して、５×５×２＝５０のレジスタが設けられており、これらのレジスタには、その遷移パターンが生じた頻度が登録されている頻度のレジスタと、その遷移に要した時間であるインターバルの平均値が登録されているインターバルのレジスタとがある。同図には、一部のレジスタについてのみ頻度値及びインターバルの平均値が例示されている。この遷移頻度やインターバルの平均値の登録方法は、以下の通りである。
【００８４】
履歴記憶部１５ｂにプリフェッチ部１４からＦ命令のＩＤが入力されると、第４の実施形態と同様の動作によって、頻度のレジスタに各遷移パターンが発生した頻度が登録される。また、インターバル検出部により、前回のＦ命令が入力されたときからの経過時間がカウントされており、前回のＦ命令が入力されたときから次のＦ命令が入力されるまでのインターバルが検出される。そこで、インターバル更新部により、インターバルのレジスタから前回までのインターバルの平均値を取り出して、以下の計算式
新平均値＝（前回までの平均値×前回までの遷移頻度＋今回のインターバル値）／（前回までの遷移頻度＋１）
に基づいて、インターバルの平均値を更新する。
【００８５】
これにより、頻度、インターバルのレジスタには、システムの動作中における各遷移パターンの頻度、インターバルが更新されながら登録される。
【００８６】
一方、図１又は図１１に示す判別部１６では、履歴記憶部１５ａの頻度のレジスタに登録されている頻度及びインターバルのレジスタに登録されているインターバルの平均値を参照して、現在実行されているＦ命令のＩＤ番号から次にどのＦ命令をＦＰＧＡにローディングするかを決定する。例えば、頻度のレジスタには、図１３に例示されている頻度値、インターバル値が登録されている場合、現在ＩＤ番号が１であるＦ命令が実行されているとすると、そのＦ命令が終了した後は、現在遷移する確率がもっとも高いのはＩＤ番号が３のＦ命令である。しかし、ＩＤ番号が１のＦ命令からＩＤ番号が３のＦ命令に遷移するインターバルの平均値は３００（クロックサイクル）しかないが、この時間はＩＤ番号３の構成データをコンフィギュレーションメモリからＦＰＧＡへのローディングに要する時間（例えば５００クロックサイクル）よりも短いので、構成データの書き換えを行なう時間がない。そこで、図１３に示す頻度、インターバルのレジスタの値を参照すると、ＩＤ番号１→３の次にＩＤ番号１→４の遷移確率が高く、かつ、ＩＤ番号１→４へのインターバルの平均値は１１００（クロックサイクル）であり、ＩＤ番号が４の構成データをローディングする時間（例えば５００クロックサイクル）よりも大きいので、構成データの書き換えを行なう時間がある。そこで、ＩＤ番号が４のＦ命令の構成データをＦＰＧＡ１９の構成データメモリ２０にローディングしておく。
【００８７】
上記第１、第２の実施形態におけるＦ命令の構成データのローディングの制御は、入力される頻度がもっとも高いＦ命令の構成データを優先的にＦＰＧＡ１９の構成データメモリ２０に格納したが、本実施形態においては、現在のＦ命令から予想される遷移の確率がもっとも高く、かつ、書き換える時間のあるＦ命令の構成データを優先的にＦＰＧＡ１９の構成データメモリ２０に格納する。言い換えると、本実施形態では、遷移のインターバルを考慮しつつ遷移パターンの発生頻度を指標として、Ｆ命令の構成データのローディングの制御を行なうことになる。具体的には、図３に示すフローチャートにおいて、ステップＳＴ２４、ＳＴ３１においては遷移する確率が低くインターバルの平均値がローディングに要する時間よりも長いＦ命令をＦ命令Ｂ、Ｆ命令Ｃとし、ステップＳＴ２５、ＳＴ３２における判別において、使用頻度Ｕに代えてインターバルの平均値がローディングに要する時間よりも長いという条件下で遷移頻度Ｔの大小を比較する。
【００８８】
本実施形態によると、現在のＦ命令から遷移する確率がもっとも高いＦ命令の構成データを予めＦＰＧＡの構成データメモリにローディングしておくことにより、新Ｆ命令が入力されたときに、新Ｆ命令の構成データがＦＰＧＡ１９の構成データメモリ中に存在しないために、代替命令を使用せざるを得ないという事態をインターバルも考慮しながら回避することができる。したがって処理能力の向上を期待することができる。
【００８９】
（その他の実施形態）
なお、上記第１〜第４の実施形態において、命令メモリ１２が内蔵されておらずに外付けでもよい。また、プリフェッチ部１４はＣＰＵ１８と一体化されていてもよい。ＦＰＧＡ１９はバンク構成になっている必要はない。内蔵メモリ２１はなくてもよい。また、コンフィギュレーションメモリ１１は、外付けでなく内蔵されていてもよい。
【００９０】
また、上記第１〜第３の実施形態において、Ｆ命令の使用頻度の代わりに（使用頻度）×（そのＦ命令をＦＰＧＡで処理することによって短縮される処理時間）を構成データのローディングの制御の指標とすることもできる。つまり、当該Ｆ命令の使用頻度が大きくても、そのＦ命令についてＦＰＧＡを使用したことによる処理性能の向上が低ければ、当該Ｆ命令を優先的に使用してもトータルとして処理性能の向上が小さくなるためである。
【００９１】
【発明の効果】
本発明によると、ＣＰＵとＦＰＧＡを混載した半導体集積回路において、ＦＰＧＡに構成される回路を処理性能が高くなるように自動的に書き換えることができる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態における半導体集積回路のブロック回路図である。
【図２】第１の実施形態におけるプリフェッチ部の処理の流れを示すフローチャートである。
【図３】第１の実施形態における判別部及び書き換え制御部における処理の流れを示すフローチャートである。
【図４】第１の実施形態において用いるプログラムの例を示す図である。
【図５】第１の実施形態におけるバンク数が８で構成データ数が４の場合の構成データタグのデータ構造を示す図である。
【図６】（ａ），（ｂ）は、それぞれ順に、第１の実施形態におけるＦ命令，代替命令の具体例を示す図である。
【図７】第２の実施形態における、プログラム中にＦ命令と代替命令が併記されている場合の具体例を示す図である。
【図８】第３の実施形態において命令メモリから供給される命令列の例を示す図である。
【図９】第３の実施形態におけるコンフィギュレーションメモリのデータ構造を示す図である。
【図１０】図８に示す命令列の例に対するコンフィギュレーションメモリのデータ構造の例を示す図である。
【図１１】第３の実施形態における半導体集積回路のブロック回路図である。
【図１２】第４の実施形態における履歴記憶部の主要部の構成を示す図である。
【図１３】第５の実施形態における履歴記憶部の主要部の構成を示す図である。
【符号の説明】
１０    半導体集積回路
１１    コンフィギュレーションメモリ
１２    命令メモリ
１３    代替命令記憶部
１４    プリフェッチ部
１５    履歴記憶部
１６    判別部
１７    書き換え制御部
１８    ＣＰＵ
１９    ＦＰＧＡ
２０    構成データメモリ
２１    内蔵メモリ
２２    構成データタグ
【図１】
0003636986.tif 000002
【図２】
0003636986.tif 000003
【図３】
0003636986.tif 000004
【図４】
0003636986.tif 000005
【図５】
0003636986.tif 000006
【図６】
0003636986.tif 000007
【図７】
0003636986.tif 000008
【図８】
0003636986.tif 000009
【図９】
0003636986.tif 000010
【図１０】
0003636986.tif 000011
【図１１】
0003636986.tif 000012
【図１２】
0003636986.tif 000013
【図１３】
0003636986.tif 000014