JP3636986B2 - 半導体集積回路 - Google Patents
半導体集積回路 Download PDFInfo
- Publication number
- JP3636986B2 JP3636986B2 JP2000371299A JP2000371299A JP3636986B2 JP 3636986 B2 JP3636986 B2 JP 3636986B2 JP 2000371299 A JP2000371299 A JP 2000371299A JP 2000371299 A JP2000371299 A JP 2000371299A JP 3636986 B2 JP3636986 B2 JP 3636986B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- reservation
- configuration data
- auxiliary arithmetic
- arithmetic unit
- 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.)
- Expired - Fee Related
Links
- 239000004065 semiconductor Substances 0.000 title claims description 36
- 230000015654 memory Effects 0.000 claims description 104
- 238000000034 method Methods 0.000 claims description 48
- 230000007704 transition Effects 0.000 claims description 46
- 230000008569 process Effects 0.000 claims description 42
- 230000004044 response Effects 0.000 claims description 18
- 230000006870 function Effects 0.000 claims description 15
- 230000008859 change Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 22
- 230000008901 benefit Effects 0.000 description 5
- 230000006872 improvement Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
- G06F9/3897—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Stored Programmes (AREA)
- Semiconductor Integrated Circuits (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Microcomputers (AREA)
Description
【発明の属する技術分野】
本発明は、CPUとプログラマブルデバイスとを混載した半導体集積回路に係わり、特にその処理性能向上対策に関する。
【0002】
【従来の技術】
従来より、PLD(Programmable Logic Device)もしくはFPGA(Field Programmable Gate Array)と呼ばれるプログラマブルデバイスが広く知られている(以下、本明細書ではFPGAと記載する)。FPGAはユーザーがその回路構成をプログラミングすることが可能であるデバイスであって、ユーザーが設計した回路を即座に構成し、その動作を実現することができるというメリットがある。特に回路構成を繰り返し再構成することができるFPGAの場合には、その時々に必要な回路構成に柔軟に変更して処理性能が上げられるというメリットもある。
【0003】
さらに、近年、このFPGAとCPUとを1つの半導体集積回路上に混載したものが提案されてきている。このような半導体集積回路においては、従来のCPUのプログラムの変更に加えて、FPGAで構成された部分の回路構成が変更可能となったため、システムの変更により柔軟に対応することができることになる。
【0004】
従来のCPUとFPGAを混載した半導体集積回路の例として、例えば特開平05-242050 号公報に開示されるようなものがあり、CPUとFPGAとを備え、処理すべき演算の一部をFPGA部に構成される回路によって行う方法が知られている。
【0005】
【発明が解決しようとする課題】
しかしながら、上記従来のCPUとFPGAを混載した半導体集積回路においては、FPGAで処理する命令が来た場合にFPGAにその処理を行う回路が構成されていなければ未実装命令(undefined operation)として扱われ処理がストップするという問題があった。
【0006】
また、上記従来のCPUとFPGAを混載した半導体集積回路においてはFPGAに構成される回路を固定した場合には、回路構成がダイナミックに変更することができるというFPGAの特徴を生かしておらず、その時々に必要な回路に柔軟に対応できず、処理性能向上に限界があった。
【0007】
また、FPGAに構成される回路をダイナミックに変更するようにした場合にも、回路構成変更のタイミングはあらかじめユーザーが指定する必要があり、自動的に回路構成の変更ができなかった。また、異なるユーザーが異なる処理を同じ半導体集積回路に行わせる場合にはFPGAの回路構成や回路構成を変更するタイミングを再検討しなくてはならないことになる。
【0008】
すなわち、従来のCPUとFPGAを混載した半導体集積回路においては、FPGAによる処理性能向上は自動的に行われないという問題があった。
【0009】
本発明の目的は、FPGAに構成される回路を自動的にダイナミックに変更でき、処理性能の高いCPUとFPGAを混載した半導体集積回路を提供することにある。
【0010】
【課題を解決するための手段】
本発明の半導体集積回路は、CPUと、回路構成が書き換え可能であるプログラマブルデバイスで構成される上記CPUの補助演算装置と、命令あるいは複数の命令からなる命令列を受けて、上記命令あるいは命令列が上記補助演算装置で処理が可能な予約命令か否かを判別する命令種類判別手段と、上記予約命令の処理を行う回路構成データを上記補助演算装置に書き込むための構成データ書き込み手段と、上記命令種類判別手段の判別結果を受けて、上記命令が上記予約命令であるときには、上記補助演算装置を用いて上記予約命令の処理を行うか否かを判別する使用装置判別手段とを備え、上記使用装置判別手段の判別結果を受けて、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行う場合には上記補助演算装置を用いて上記予約命令の処理を行い、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行わない場合には上記CPUを用いて上記予約命令の処理を行うものである。
【0011】
これにより、プログラマブルデバイスによって構成される回路を自動的にダイナミックに変更することができ、処理性能の高いCPUとプログラマブルデバイスとを混載した半導体集積回路を提供することが可能になった。
【0013】
上記命令種類判別手段の判別結果を受けて、上記命令が上記予約命令であるときには、上記予約命令の処理を行う回路が上記補助演算装置内に存在するか否かを判別する存在判別手段と、上記存在判別手段の判別結果を受けて、上記予約命令の処理を行う回路が上記補助演算装置内に存在する場合に、上記予約命令の処理を上記補助演算装置で行わせるように指示し、上記予約命令の処理を行う回路が上記補助演算装置内に存在しない場合に、上記予約命令の処理を上記CPUで行うように指示する命令切り替え手段とをさらに備えることにより、プログラマブルデバイス内に予約命令の構成データがない場合でも、未実装命令として扱われてCPUが停止するような事態は発生しない。
【0014】
上記予約命令はCPUで実行され得ない命令であり、上記予約命令と同等の処理をCPUで行うための代替命令を供給する代替命令供給手段とをさらに備え、上記命令切り替え手段は、上記代替命令供給手段から上記代替命令を取得する機能を有していることにより、予約命令がない場合には、代替命令を送ることにより、CPUによって予約命令による処理と同等の処理が行なわれる。したがって、プログラマブルデバイス内に予約命令の構成データがない場合でも、未実装命令として扱われてCPUが停止するような事態は発生しない。
【0015】
上記予約命令はCPUで実行され得ない命令であり、上記命令又は命令列と、上記予約命令と同等の処理をCPUで行うための代替命令とを供給する機能を有する命令供給手段をさらに備え、上記命令切り替え手段は上記命令供給手段から上記予約命令または上記代替命令を選択して取得する機能を有していることにより、予約命令又は代替命令を迅速に実行することが可能になる。
【0016】
上記予約命令はCPUで実行され得る命令であり、上記命令切り替え手段は、上記予約命令の処理を上記補助演算装置で行わせる場合は上記予約命令の処理を上記補助演算装置で行わせるように上記命令を変更し、上記予約命令の処理を上記CPUで行わせる場合は上記予約命令を変更しない機能をさらに有していることが好ましい。
【0017】
上記構成データ書き込み手段は、上記予約命令を受けたときに、当該予約命令の処理を行う回路が上記補助演算装置に存在しない場合に、上記補助演算装置に上記予約命令の回路構成データを書き込む機能を有していることにより、プログラムが変更された場合でも、その変更に応じたプログラマブルデバイスの利用が可能になる。したがって、プログラマブルデバイスを利用したHW/SWの切り換えなどのダイナミックな書き換えにより、処理能率の向上を図ることができる。
【0018】
上記予約命令の使用頻度を記憶する履歴記憶手段をさらに備え、上記構成データ書き込み手段は、上記履歴記憶手段を参照して、使用頻度がより高い予約命令の処理を行う回路構成データを優先的に上記補助演算装置に書き込むことにより、頻度を指標とするプログラマブルデバイスの使用の最適化を図ることができる。
【0019】
メモリをさらに備え、上記構成データ書き込み手段は、上記履歴記憶手段を参照して、上記予約命令の回路構成データを、使用頻度の高い順に、上記補助演算装置と上記メモリとに書き込むことが好ましい。
【0020】
メモリをさらに備え、上記構成データ書き込み手段は、上記履歴記憶手段を参照して、上記予約命令の回路構成データを、上記補助演算装置に上記予約命令の回路構成データよりも空き容量が多ければ書込み、空き容量が少なければ上記予約命令の回路構成データよりも空き容量が多くなるまで上記予約命令よりも使用頻度の低い予約命令を上記補助演算装置から解放し、上記解放された予約命令を、上記メモリの上記メモリに書き込む第4の判別手段をさらに備えていることがより好ましい。
【0021】
上記予約命令を複数回受けたときの予約命令の遷移パターンを記憶する履歴記憶手段をさらに備え、上記構成データ書き込み手段は、上記履歴記憶手段を参照して、現在受けている予約命令から遷移する確率がより高い予約命令の回路構成データを優先的に上記補助演算装置に書き込むことにより、特定の遷移パターンを示す種類のデバイスに特に適合した回路が得られることになる。
【0022】
その場合、上記予約命令を複数回受けたとき、第1の予約命令の次に実行される第2の予約命令の頻度を各予約命令ごとに記憶する履歴記憶手段をさらに備え、上記構成データ書き込み手段は、上記履歴記憶手段を参照して、現在受けている第1の予約命令の次に実行される頻度が高い第2の予約命令の回路構成データを優先的に上記補助演算装置に書き込むことが好ましい。
【0023】
また、上記予約命令を2回受けたときの予約命令の遷移パターンと、上記2つの予約命令を受ける時間間隔とを記憶する履歴記憶手段をさらに備え、上記構成データ書き込み手段は、上記履歴記憶手段を参照して、現在受けている予約命令から遷移する確率がより高い予約命令の回路構成データを、上記時間間隔が回路構成データの書き込みに要する時間よりも長いときに限り上記補助演算装置に書き込むことにより、処理能力の向上を図ることができる。
【0024】
上記予約命令を2回受けたときの予約命令の遷移パターンと、上記2つの予約命令を受ける時間間隔とを記憶する履歴記憶手段をさらに備え、上記構成データ書き込み手段は、上記履歴記憶手段を参照して、現在受けている第1の予約命令の次に実行される頻度が高い第2の予約命令の回路構成データを、上記時間間隔が回路構成データの書き込みに要する時間よりも長いときに限り上記補助演算装置に書き込むことによっても、処理能力の向上を図ることができる。
【0025】
上記構成データ書き込み手段は、上記補助演算装置の空き容量が上記予約命令の構成データの容量よりも大きければ上記予約命令の構成データの書き込みを行い、空き容量が少なければ上記予約命令の回路構成データの容量よりも空き容量が多くなるまで上記予約命令よりも使用頻度の低い予約命令を上記補助演算装置から解放することにより、処理能力の向上を図ることができる。
【0026】
上記補助演算装置はバンク構成を有しており、上記構成データ書き込み手段は、上記補助演算装置の空きバンクが上記予約命令の構成データの必要バンクよりも大きければ上記予約命令の構成データの書き込みを行い、空きバンクが少なければ上記予約命令の回路構成データの必要バンクよりも空きバンクの方が多くなるまで上記予約命令よりも使用頻度の低い予約命令を上記補助演算装置から解放することにより、より確実に処理能力の向上を図ることができる。
【0027】
【発明の実施の形態】
(第1の実施形態)
−システムの概略構成−
図1は、本発明の第1の実施形態における半導体集積回路のブロック回路図である。同図に示すように、本実施形態の半導体集積回路10は、外付けされたコンフィギュレーションメモリ11と信号の授受が可能になっている。そして、半導体集積回路10の内部には、データ等を処理するためのプログラムを記憶している命令メモリ12と、FPGAで処理する予約命令(以下“F命令”)と同じ処理をCPUで行なうための代替命令を記憶している代替命令記憶部13と、命令メモリ12及び代替命令記憶部13から命令を取り込むためのプリフェッチ部14と、命令メモリ12から入力されたF命令の履歴を記憶するための履歴記憶部15と、履歴記憶部15の出力を受けてFPGA19に構成する回路を判断する判別部16と、判別部16の出力を受けてFPGA19に構成する回路を書き換えるための書き換え制御部17と、プリフェッチ部14から供給される命令に応じて動作するCPU18と、FPGA19と、内蔵メモリ21と、構成データタグ22とを備えている。FPGA19内にはFPGA19に構成する回路の構成データを記憶するための構成データメモリ20が含まれている。命令はCPU18内でデータ処理が完結する基本命令とCPU18外の回路によりデータ処理を行う拡張命令からなり、F命令は拡張命令に相当し、代替命令は基本命令に相当する。
【0028】
なお、図示しないが、半導体集積回路10内には、CPU18やFPGA19以外の論理回路やアナログ回路があってもよく、それらによっても各種の処理が行われるが、これらの処理については、従来と同様の制御で行なうことができる。
【0029】
−記憶部全般の構成−
まず、命令メモリ12、代替命令記憶部13、FPGA19、構成データタグ22、コンフィギュレーションメモリ11及び履歴記憶部15などの記憶部全般の構成について説明する。
【0030】
命令メモリ12には、CPU18で実行するプログラムが格納されている。このプログラム内にF命令が含むことがある。F命令は、各F命令を識別するためのIDコードが付される。代替命令記憶部13には、各F命令と同じ処理をCPU18で行うための代替命令が格納されている。
【0031】
図4は、命令メモリ12に格納されるプログラムの例を示す図である。符号#よりも左側の「ADD D1,D2」は命令メモリに格納される命令であり、符号#よりも右側に記載されている内容は命令の動作を説明するコメントで命令メモリには格納されない。この例では、D1,D2,D3という3つのレジスタがあり、1行目の命令はD1とD2とを加算してその加算結果をD2に代入する命令で、2行目の命令は、D2のデータをD3の値だけ右にシフトしてD2に代入する命令である。
【0032】
構成データタグ22は、FPGAのバンクの数だけのレジスタ(又はメモリ)によって構成されており、この各レジスタ(又はメモリ)には、構成データのIDコードが格納されている。
【0033】
図5は、バンク数が8で(バンク0〜バンク7)、構成データ数が4(ID=1〜4)の場合の構成データタグ22のデータ構造を示す図である。ただし、同図において、ID=0とは何も入っていないことを示している。同図に示すように、この例では、バンク0〜1にID1のF命令の構成データが入っており、バンク2〜4には、ID4のF命令の構成データが入っており、バンク5〜7には構成データが入っていないことを示している。構成データタグ22は、プリフェッチ部14などからの“あるIDで特定される構成データがあるか?”という問い合わせに対して回答する機構を有している。たとえば、“ID=4の構成データがあるか?”という問いに対しては、“バンク2〜4にある”と回答する。また、“空きがあるか”という問い合わせに対しても、回答する機構を備えており、図5に示す場合には、上記問い合わせに対して“バンク5〜7が空いている”と回答することになる。
【0034】
図6(a),(b)は、それぞれ代替命令記憶部13,命令メモリ12に格納されるプログラムのうちF命令の例を示す図である。図6(b)に示す例では、F命令であることを示すFPGAという文字列の後に、IDコードである1と、この命令で使用される3つのレジスタD1、D2、D3が指定されている。そして、このF命令で実行される処理は、ここでは図4で示されるプログラムと同じである。
【0035】
図6(b)に示す例では、図6(a)のF命令に対する代替命令の例を示している。すなわち、CPU18で、図6(a)のF命令と同じ処理を行うプログラムが格納されている。
【0036】
すなわち、代替命令記憶部13には、F命令をFPGA19で処理せずにCPU18で処理する場合に、F命令と同じ処理を実現するための代替命令が格納されている。つまり、ここでいう代替命令とは、FPGA19によって処理する拡張命令がきても、その処理を行う回路がFPGA19に構成されていない場合に、CPU18によって同じ処理を行わせるための基本命令である。
【0037】
F命令がプリフェッチ部14によりフェッチされ、かつ、代替命令を実行することになると、プリフェッチ部14は代替命令記憶部13に対して当該F命令の代わりとなる代替命令をフェッチするようアクセスする。このとき、当該F命令のIDコードを代替命令記憶部13に送ると、代替命令記憶部13は、IDコードに対応する代替命令を供給する。そして、終了コードFPGAend を検知すると、代替命令の終了信号プリフェッチ部14に供給する。プリフェッチ部14は、代替命令の終了信号を受けると、再び命令メモリ12から命令をフェッチするように動作する。
【0038】
一般的に、FPGAは回路構成データが与えられることによって、その回路構成が決定される。回路構成データは、一般的にチップ外部に備えられた不揮発性メモリであるコンフィギュレーションメモリに記憶されており、コンフィギュレーションメモリから回路構成データがFPGAに与えられる。また、FPGA内では、回路構成データがFPGA内に構成された構成データメモリに保持され、回路構成データに基づき回路の最小単位であるロジックモジュールの論理動作とロジックモジュール間の接続関係が決まり、これによりFPGAの回路構成が確定する。
【0039】
本実施形態においては、FPGA19は、図1に示すように、複数のバンクに区画されており、各バンクに対応する構成データメモリ20が付設されている。構成データメモリ20へのコンフィギュレーション(構成データの書き込み)は、このバンク単位で、CPUの動作とは独立して行なうことができる。また、CPU18とFPGA19との間はバスによって接続されており、F命令で必要なだけのデータのやりとりが可能に構成されている。
【0040】
履歴記憶部15は、各F命令の頻度をカウントするものであり、F命令の数と同じ数のレジスタと、カウンタとによって構成されている。プリフェッチ部14がF命令を検知すると、そのF命令のIDコードが履歴記憶部15に送られ、履歴記憶部15は送られたIDコードに対応するレジスタの値を1増やす。
【0041】
−プリフェッチ部の処理−
プリフェッチ部14は、命令メモリ12から命令をフェッチする機能と、代替命令記憶部13から代替命令をフェッチする機能と、フェッチしてきた命令がF命令か否かを判断する機能とを有する。図2は、プリフェッチ部14の処理の流れを示すフローチャートである。すなわち、ステップST11で、命令を命令メモリ12からフェッチして、ステップST12で、命令がF命令か否かを判断する。そして、F命令でない場合には、ステップ16でCPU18にそのまま命令を送る一方、F命令である場合には、ステップST13に進んで、構成データタグ22の内容を参照して、F命令のID番号に基づいてFPGA19にそのIDのF命令の回路が構成されているかどうかを判断する。そして、FPGA19にそのIDのF命令の回路が構成されている場合には、ステップST14に進んで、F命令をそのままCPU18に送り、FPGA19にそのIDのF命令の回路が構成されていない場合には、ステップST15に移行して、代替命令を代替命令記憶部13からフェッチして、CPU18に送る。代替命令列が終了するまでは、プリフェッチ部14は、命令メモリ12からではなく、代替命令記憶部13から代替命令をフェッチしてくる。
【0042】
このように、F命令の処理を行う回路がFPGA19に構成されていない場合には、代替命令をCPU18に送ることにより、F命令による処理と同じ処理が行なわれる。すなわち、FPGA内にF命令の処理を行う回路が構成されていない場合でも、従来のように未実装命令として扱われてCPUが停止するような事態は発生しない。
【0043】
−判別部及び書き換え制御部の処理−
判別部16は、主として、コンフィギュレーションメモリ11、FPGA19内の構成データメモリ20及び内蔵メモリ21間の構成データの移動を決定するものである。入力として、履歴記憶部15からの履歴情報、構成データタグ22からの構成データ情報、コンフィギュレーションメモリ11からのバンク数情報などがある。これらの情報を用いて、どのF命令の構成データを構成データメモリ20のどこのバンクにローディングするかを決定する。そして、書き換え制御部17により、構成データのローディングを制御する。
【0044】
従来のCPUとFPGAを混載した半導体集積回路では、どのF命令の構成データをいつFPGAのどこにローディングすれば処理性能が高くなるかをあらかじめ考える必要があった。これに対して、本実施形態では、以下のアルゴリズムでFPGA19の構成データの更新を行なうことにより、どのF命令の構成データをいつFPGAのどこにローディングすれば処理性能が高くなるかを自動的に判断し、構成データの更新を自動的に行うことができる。
【0045】
図3は、判別部16及び書き換え制御部17における処理の流れを示すフローチャートである。まず、ステップST21で、当該F命令Aを構成するのに必要なバンク数をコンフィギュレーションメモリ11から読み出す。次に、ステップST22で、FPGA19の空きバンク数NN がF命令Aの必要バンク数NA 以上か否かを判別し、NN ≧NA (YES)であれば、ST23でFPGA19中の空きバンクの構成データメモリにF命令Aの構成データをローディングする。このとき、構成データが内蔵メモリ21にあればそちらからローディングし、終了する。
【0046】
一方、ステップST22の判別で、NN <NA (NO)のときには、FPGA19に構成されたF命令のうちで使用頻度の低いF命令との置き換えを図るための処理を行う。そこで、ステップST24に移行して、まず、FPGA19に構成されているF命令のうち使用頻度のもっとも低いものを選択して、これを置換用のF命令Bとする。
【0047】
そして、ステップST25で、F命令Aの使用頻度UA がF命令Bの使用頻度UB よりも大きいか否かを判断し、UA ≦UB (NO)のときには、置き換えるべきでないと判断して、何もせずに終了する。
【0048】
一方、UA >UB (YES)のときには、ステップST27で、内蔵メモリ21にF命令Bの構成データを記憶することができるだけの空間があるかを調べる。そして、内蔵メモリ21にF命令Bの構成データを記憶することができるだけの空間がある(YES)場合には、ステップST28で、F命令BをFPGA19の構成データメモリ20から内蔵メモリ21に移動させた後、ステップST29で、FPGA19の構成データメモリ20中のF命令Bが格納されているバンクを空きバンクとして、ステップST22に戻る。このとき、空きバンク数NN がF命令Bの分だけ増えるので、ステップST22の判別結果がYES(NN ≧NA )になる確率が高くなるが、NO(NN <NA )のときには、別のF命令が置換用のF命令Bに指定されて、ステップST24以降の処理が行われる。
【0049】
また、ステップST27の判別で、内蔵メモリ21にF命令Bの構成データを記憶することができるだけの空間がない(NO)場合には、ステップST30に移行して、内蔵メモリ21に記憶されているF命令の構成データがあるか否かを判別する。そして、内蔵メモリ21に記憶されているF命令の構成データがあれば、ステップST31に進んで、内蔵メモリ21について、FPGA19中の構成データメモリ20について行なったステップST24、ST25と同様の処理を行なう。すなわち、ステップST31で、内蔵メモリ21に格納されているF命令のうち使用頻度がもっとも低い命令を置換用のF命令Cとする。そして、ステップST32で、F命令Bの使用頻度UB がF命令Cの使用頻度UC よりも大きいか否かを判断し、UB >UC であれば、ステップST33で、内蔵メモリ21中のF命令Cが格納されている領域を空き空間として、ステップST27の処理に戻る。
【0050】
一方、ステップST30の判別において内蔵メモリ21中にF命令が存在していない場合や、ステップST32の判別においてUB ≦UC (NO)のときには、ステップST29に移行して、F命令Bの構成情報が格納されたバンクを空きとしてST22へと戻る。
【0051】
以上のような処理の結果、最終的に、F命令の構成データは使用頻度の高い順番に構成データメモリ20、内蔵メモリ21に格納される。
【0052】
以上の処理において、F命令B、F命令Cは置換用のF命令を意味するもので、特定の1つのF命令を指すものではない。
【0053】
なお、リセット時には、FPGA19内の構成データメモリ20に対してF命令の構成データの初期コンフィギュレーションが行なわれる。この初期コンフィギュレーションは、構成データメモリ20に任意のF命令の構成データをローディングする方法と、履歴記憶部15の履歴データからより使用頻度の高いF命令の構成データを構成データメモリ20に優先的にローディングする方法とがある。後者の場合には、リセットによって履歴記憶部15の情報が消去されないようにする必要がある。パワーオンリセット時も同様の動作が必要な場合には、履歴記憶部15の記憶情報が不揮発性を有している必要がある。
【0054】
本実施形態によると、“使用頻度U”というパラメータをFPGA19中の構成データメモリ20の構成データを決定する際に用いることにより、使用頻度の高いものから順に構成データメモリ20、内蔵メモリ21に格納されることになる。
【0055】
したがって、どのF命令の構成データをいつどこにローディングするかを予め考えることなく、使用頻度をパラメータとしてFPGAの構成を自動的に変更させることが可能になる。その結果、より使用頻度の高いF命令をFPGAに自動的に構成することが可能となり、処理性能の向上を図ることができる。
【0056】
なお、履歴記憶部で記憶することができる使用頻度Uの数値には上限があるので、上限以上の頻度の更新結果が正しく反映されないおそれがある。そこで、あるIDのF命令の使用頻度Uが上限に達したとき、適正化が終了したものと見なし以降の更新を停止するか、全てのF命令の使用頻度Uを一律に減少させて更新を継続する方法をとることにより、使用頻度の高いF命令をFPGAに保持することができる。
【0057】
(第2の実施形態)
次に、F命令と代替命令とが併記されたデータ構造を有する命令メモリを有する場合の制御方法に関する第2の実施形態について説明する。本実施形態においては、図1に示す構成において、代替命令記憶部13を備えていないことが前提である。
【0058】
図7は、命令メモリ12中のプログラムにF命令と代替命令が併記されている場合の具体例を示す図である。図7においては、図6(a)に示すF命令および図6(b)に示すF命令と、それらの代替命令とが併記されている場合を例にとっている。
【0059】
図7に示すように、プリフェッチ部14がF命令を受けて、F命令をFPGA19で処理する場合には、プリフェッチ部はF命令をCPU18に送った後、F命令に記述されているアドレスaddrまでジャンプする。したがって、代替命令は実行されず、次の命令が実行されることになる。一方、F命令をFPGA18で処理せず代替命令を実行する場合には、プリフェッチ部14はF命令を無視し、F命令に続いて記述された代替命令をフェッチし、CPU18に送る。したがって、この場合には代替命令がCPU18で実行されることになる。
【0060】
本実施形態においては、プリフェッチ部14が命令メモリ12からフェッチした命令がF命令であり、かつ、そのF命令の回路がFPGA19内に構成されていない場合には、F命令を行なうことなく代替命令を行なう。
【0061】
本実施形態においては、上記第1の実施形態に比べて、F命令と代替命令とを切り換えるための切り換え機構が不要になり、代替命令を記憶するためのハードウェアも必要でないという利点がある。ただし、第1の実施形態では、F命令と代替命令とを並列にフェッチすることができるので、本実施形態のごとく、スキップなどのときに生じる待ち時間が少ないという利点がある。
【0062】
本実施形態においても、構成データタグ22を利用したF命令の存在の確認や、判別部16、書き換え制御部17を利用したF命令の構成データのローディングなどの制御は、第1の実施形態と同様に行なうことができ、第1の実施形態と同じ効果を発揮することができる。
【0063】
(第3の実施形態)
上記第1、第2の実施形態においては、命令メモリ内のプログラムにF命令が含まれ、そのF命令を検知することによってF命令の処理をFPGAで行なうかどうかを判断するように構成されている。したがって、F命令を使用していないプログラムを使用した場合には、混載されたFPGAを使用した処理ができないため、FPGAによる処理能力の向上を図ることができない。そこで、本実施形態においては、命令メモリには、F命令を使用していないプログラムを格納し、かつFPGAを使用した処理を実現し、このような場合でも処理能力の向上を図りうるようにする。
【0064】
図11は、本実施形態における半導体集積回路のブロック回路図である。同図に示すように、本実施形態においては、代替命令記憶部が設けられていない。そして、本実施形態においては、命令メモリ12内のプログラムには、F命令が含まれていない。そして、FPGA19で行う処理として、F命令以外の命令から成る命令列と同等の処理を行う回路の構成データを用意して、その命令列、構成データおよびIDコードを、予めコンフィギュレーションメモリ11に格納しておく。
【0065】
図8は、本実施形態において、命令メモリ12から供給される命令列の例を示す図である。この例では、レジスタに格納されたD1、D2、D3という3つのデータがあり、1行目の命令でデータD1とデータD2とを加算してその加算結果をD2に代入し、2行目の命令で、データD2の値をデータD3の値だけ右にシフトしてデータD2に代入する。
【0066】
図9は、本実施形態におけるコンフィギュレーションメモリのデータ構造を示す図である。同図に示すように、コンフィギュレーションメモリのデータは、IDコード、命令列、対応する構成データとバンク数とを含んでいる。
【0067】
図10は、図8に示す命令列の例に対するコンフィギュレーションメモリのデータ構造の例を示す図である。具体的にはIDコードは1で、命令列は「ADDD1、D2・LSR D3、D2」で、バンク数は1で対応する構成データ(図では項目のみ)となっている。
【0068】
構成データタグ22の構造は上記第1の実施形態で説明したとおりである。
【0069】
そして、本実施形態においては、プリフェッチ部14が命令メモリ12から命令列をフェッチしたときに、コンフィギュレーションメモリ11内の命令列部を参照して、フェッチした命令列と一致するものがコンフィギュレーションメモリ11内の命令列中に存在しているか否かを判別部で判別し、一致するものがある場合には、第1、第2の実施形態のF命令をフェッチしたときと同様に、以下の動作を行う。本実施形態では、命令メモリ12からフェッチされた命令列と一致するものがコンフィギュレーションメモリ11内の命令列中に存在しており、かつその処理をFPGA19で行わないと判定された命令列が第1、第2の実施形態における代替命令に相当することになる。また、本実施形態では、命令メモリ12からフェッチされた命令列と一致するものがコンフィギュレーションメモリ11内の命令列中に存在しており、かつ、その処理をFPGA19で行うと判断した場合には、プリフェッチ部は図8で示す命令列を図6(a)に示すF命令に書き換えてCPU18に送る。これにより、その処理はFPGA19で行われることになる。
【0070】
なお、リセット時やパワーオンリセット時に、コンフィギュレーションメモリ11内の命令列データをプリフェッチ部に取り込むことも可能であり、その場合には、コンフィギュレーションメモリに命令列の参照を行う必要がないため、処理の迅速化が可能である。
【0071】
本実施形態においても、構成データタグ22を利用した構成データの存在の確認や、判別部16、書き換え制御部17を利用した構成データのローディングなどの制御は、第1の実施形態と同様に行なうことができる。
【0072】
本実施形態によると、F命令が含まれないプログラムに対しても、FPGAを使用した処理を可能とし、処理能力の向上を図ることができる。
【0073】
(第4の実施形態)
次に、図1、図11に示す履歴記憶部15に1つのF命令だけでなく複数のF命令の履歴を記憶する機能を持たせるようにした第4の実施形態について説明する。
【0074】
本実施形態においては、上記図1又は図11に示す半導体集積回路を前提とし、履歴記憶部15の構成が上記第1〜第3の実施形態とは異なっている場合について説明する。
【0075】
図12は、本実施形態における履歴記憶部の主要部の構成を示す図である。同図に示すように、履歴記憶部15aには、構成データ数の2乗分のレジスタと、、前回F命令ID記憶部と、インクリメンタとが設けられている。本実施形態においては、構成データ数が5つの場合を例にとっている。履歴記憶部15aには、前回のF命令から今回のF命令への遷移パターン、つまりID番号1、2、3、4、5の遷移パターンに対応して、5×5=25の頻度のレジスタが設けられており、各頻度のレジスタには、その遷移パターンが生じた頻度が登録されている。同図には、一部のレジスタについてのみ頻度値が例示されている。この遷移頻度の登録方法は、以下の通りである。
【0076】
履歴記憶部15aに、図1,図11に示すプリフェッチ部14からF命令のIDが入力されると、次のF命令が入力されるまでの間、前回F命令ID記憶部にそのID番号が保持される。そして、履歴記憶部15aに次のF命令のIDが入力されると、前回のF命令と次のF命令とのID番号の遷移パターンが分かるので、インクリメンタがその遷移パターンに対応するレジスタから現在の頻度を取り出して、その値に1を加算してレジスタに戻し、次のF命令は前回F命令ID記憶部に保持される。これにより、各レジスタには、各遷移パターンの頻度が更新されながら登録される。
【0077】
一方、図1又は図11に示す判別部16では、履歴記憶部15aの頻度のレジスタに登録されている頻度を参照して、現在実行されているF命令のID番号から次にどのF命令の構成データを構成データメモリ20にローディングしておくかを決定する。例えば、頻度のレジスタには図12に例示されている頻度値が登録されている場合、現在実行されているF命令のID番号が1であるとすると、そのF命令が終了した後に、遷移する確率がもっとも高いID番号3のF命令の構成データをFPGA19の構成データメモリ20にローディングしておく。
【0078】
上記第1、第2の実施形態におけるF命令の構成データのローディングの制御は、入力される頻度がもっとも高いF命令の構成データを優先的にFPGA19の構成データメモリ20に格納したが、本実施形態においては、現在のF命令から予想される遷移の確率がもっとも高いF命令の構成データを優先的にFPGA19の構成データメモリ20に格納する。言い換えると、本実施形態では、遷移パターンの発生頻度を指標として、F命令の構成データのローディングの制御を行なうことになる。具体的には、図3に示すフローチャートにおいて、ステップST24、ST31においては遷移する確率が低いF命令をF命令B、F命令Cとし、ステップST25、ST32における判別において、使用頻度Uに代えて遷移頻度Tの大小を比較する。
【0079】
本実施形態によると、現在のF命令から遷移する確率がもっとも高いF命令の構成データを予めFPGAの構成データメモリにローディングしておくことにより、新F命令が入力されたときに、新F命令の構成データがFPGA19の構成データメモリ中に存在しないために代替命令を使用せざるを得ない,という事態をできるだけ回避することができる。したがって、特定の遷移パターンが現れやすいプログラムでは処理能力の向上が期待できる。
【0080】
なお、上記第4の実施形態においては、2つのF命令間の遷移パターンを履歴記憶部に記憶させる場合について説明したが、3つ以上のF命令の遷移パターンを履歴記憶部に記憶させる場合についても適用することができる。
【0081】
(第5の実施形態)
次に、上記第4の実施形態に加えて、F命令の遷移に要するインターバルも記憶するようにした例である第5の実施形態について説明する。
【0082】
本実施形態においても、上記図1又は図11に示す半導体集積回路を前提とし、履歴記憶部の構成が上記第1〜第4の実施形態とは異なっている場合について説明する。
【0083】
図13は、本実施形態における履歴記憶部の主要部の構成を示す図である。同図に示すように、履歴記憶部15bには、構成データ数の2乗の2倍分のレジスタと、前回F命令ID記憶部と、インクリメンタと、インターバル検出部(カウンタ)と、インターバル更新部とが設けられている。本実施形態においては、構成データ数が5つの場合を例に採っている。履歴記憶部15bには、前回のF命令から今回のF命令への遷移パターン、つまりID番号1、2、3、4、5の遷移パターンに対応して、5×5×2=50のレジスタが設けられており、これらのレジスタには、その遷移パターンが生じた頻度が登録されている頻度のレジスタと、その遷移に要した時間であるインターバルの平均値が登録されているインターバルのレジスタとがある。同図には、一部のレジスタについてのみ頻度値及びインターバルの平均値が例示されている。この遷移頻度やインターバルの平均値の登録方法は、以下の通りである。
【0084】
履歴記憶部15bにプリフェッチ部14からF命令のIDが入力されると、第4の実施形態と同様の動作によって、頻度のレジスタに各遷移パターンが発生した頻度が登録される。また、インターバル検出部により、前回のF命令が入力されたときからの経過時間がカウントされており、前回のF命令が入力されたときから次のF命令が入力されるまでのインターバルが検出される。そこで、インターバル更新部により、インターバルのレジスタから前回までのインターバルの平均値を取り出して、以下の計算式
新平均値=(前回までの平均値×前回までの遷移頻度+今回のインターバル値)/(前回までの遷移頻度+1)
に基づいて、インターバルの平均値を更新する。
【0085】
これにより、頻度、インターバルのレジスタには、システムの動作中における各遷移パターンの頻度、インターバルが更新されながら登録される。
【0086】
一方、図1又は図11に示す判別部16では、履歴記憶部15aの頻度のレジスタに登録されている頻度及びインターバルのレジスタに登録されているインターバルの平均値を参照して、現在実行されているF命令のID番号から次にどのF命令をFPGAにローディングするかを決定する。例えば、頻度のレジスタには、図13に例示されている頻度値、インターバル値が登録されている場合、現在ID番号が1であるF命令が実行されているとすると、そのF命令が終了した後は、現在遷移する確率がもっとも高いのはID番号が3のF命令である。しかし、ID番号が1のF命令からID番号が3のF命令に遷移するインターバルの平均値は300(クロックサイクル)しかないが、この時間はID番号3の構成データをコンフィギュレーションメモリからFPGAへのローディングに要する時間(例えば500クロックサイクル)よりも短いので、構成データの書き換えを行なう時間がない。そこで、図13に示す頻度、インターバルのレジスタの値を参照すると、ID番号1→3の次にID番号1→4の遷移確率が高く、かつ、ID番号1→4へのインターバルの平均値は1100(クロックサイクル)であり、ID番号が4の構成データをローディングする時間(例えば500クロックサイクル)よりも大きいので、構成データの書き換えを行なう時間がある。そこで、ID番号が4のF命令の構成データをFPGA19の構成データメモリ20にローディングしておく。
【0087】
上記第1、第2の実施形態におけるF命令の構成データのローディングの制御は、入力される頻度がもっとも高いF命令の構成データを優先的にFPGA19の構成データメモリ20に格納したが、本実施形態においては、現在のF命令から予想される遷移の確率がもっとも高く、かつ、書き換える時間のあるF命令の構成データを優先的にFPGA19の構成データメモリ20に格納する。言い換えると、本実施形態では、遷移のインターバルを考慮しつつ遷移パターンの発生頻度を指標として、F命令の構成データのローディングの制御を行なうことになる。具体的には、図3に示すフローチャートにおいて、ステップST24、ST31においては遷移する確率が低くインターバルの平均値がローディングに要する時間よりも長いF命令をF命令B、F命令Cとし、ステップST25、ST32における判別において、使用頻度Uに代えてインターバルの平均値がローディングに要する時間よりも長いという条件下で遷移頻度Tの大小を比較する。
【0088】
本実施形態によると、現在のF命令から遷移する確率がもっとも高いF命令の構成データを予めFPGAの構成データメモリにローディングしておくことにより、新F命令が入力されたときに、新F命令の構成データがFPGA19の構成データメモリ中に存在しないために、代替命令を使用せざるを得ないという事態をインターバルも考慮しながら回避することができる。したがって処理能力の向上を期待することができる。
【0089】
(その他の実施形態)
なお、上記第1〜第4の実施形態において、命令メモリ12が内蔵されておらずに外付けでもよい。また、プリフェッチ部14はCPU18と一体化されていてもよい。FPGA19はバンク構成になっている必要はない。内蔵メモリ21はなくてもよい。また、コンフィギュレーションメモリ11は、外付けでなく内蔵されていてもよい。
【0090】
また、上記第1〜第3の実施形態において、F命令の使用頻度の代わりに(使用頻度)×(そのF命令をFPGAで処理することによって短縮される処理時間)を構成データのローディングの制御の指標とすることもできる。つまり、当該F命令の使用頻度が大きくても、そのF命令についてFPGAを使用したことによる処理性能の向上が低ければ、当該F命令を優先的に使用してもトータルとして処理性能の向上が小さくなるためである。
【0091】
【発明の効果】
本発明によると、CPUとFPGAを混載した半導体集積回路において、FPGAに構成される回路を処理性能が高くなるように自動的に書き換えることができる。
【図面の簡単な説明】
【図1】本発明の第1の実施形態における半導体集積回路のブロック回路図である。
【図2】第1の実施形態におけるプリフェッチ部の処理の流れを示すフローチャートである。
【図3】第1の実施形態における判別部及び書き換え制御部における処理の流れを示すフローチャートである。
【図4】第1の実施形態において用いるプログラムの例を示す図である。
【図5】第1の実施形態におけるバンク数が8で構成データ数が4の場合の構成データタグのデータ構造を示す図である。
【図6】(a),(b)は、それぞれ順に、第1の実施形態におけるF命令,代替命令の具体例を示す図である。
【図7】第2の実施形態における、プログラム中にF命令と代替命令が併記されている場合の具体例を示す図である。
【図8】第3の実施形態において命令メモリから供給される命令列の例を示す図である。
【図9】第3の実施形態におけるコンフィギュレーションメモリのデータ構造を示す図である。
【図10】図8に示す命令列の例に対するコンフィギュレーションメモリのデータ構造の例を示す図である。
【図11】第3の実施形態における半導体集積回路のブロック回路図である。
【図12】第4の実施形態における履歴記憶部の主要部の構成を示す図である。
【図13】第5の実施形態における履歴記憶部の主要部の構成を示す図である。
【符号の説明】
10 半導体集積回路
11 コンフィギュレーションメモリ
12 命令メモリ
13 代替命令記憶部
14 プリフェッチ部
15 履歴記憶部
16 判別部
17 書き換え制御部
18 CPU
19 FPGA
20 構成データメモリ
21 内蔵メモリ
22 構成データタグ
Claims (10)
- CPUと、
回路構成が書き換え可能であるプログラマブルデバイスで構成される上記CPUの補助演算装置と、
命令あるいは複数の命令からなる命令列を受けて、上記命令あるいは命令列が上記補助演算装置で処理が可能な予約命令か否かを判別する命令種類判別手段と、
上記予約命令の処理を行う回路構成データを上記補助演算装置に書き込むための構成データ書き込み手段と、
上記命令種類判別手段の判別結果を受けて、上記命令が上記予約命令であるときには、上記予約命令の処理を行う回路が上記補助演算装置内に存在するか否かによって、上記補助演算装置を用いて上記予約命令の処理を行うか否かを判別する使用装置判別手段と、
上記使用装置判別手段の判別結果を受けて、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行う場合に、上記予約命令の処理を上記補助演算装置で行い、
上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行わない場合に、上記予約命令の処理を上記CPUで行うとともに、
上記予約命令がCPUで実行され得る命令である場合に、
上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行う場合には、上記予約命令の処理を上記補助演算装置で行わせるように上記予約命令を変更し、
上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行わない場合には、上記予約命令を変更しない機能を有する命令切り替え手段と、
を備えていることを特徴とする半導体集積回路。 - CPUと、
回路構成が書き換え可能であるプログラマブルデバイスで構成される上記CPUの補助演算装置と、
命令あるいは複数の命令からなる命令列を受けて、上記命令あるいは命令列が上記補助演算装置で処理が可能な予約命令か否かを判別する命令種類判別手段と、
上記予約命令の使用頻度を記憶する履歴記憶手段と、
上記予約命令の処理を行う回路構成データを上記補助演算装置に書き込む機能を有し、書き込みを行う際に、上記履歴記憶手段を参照して、使用頻度がより高い予約命令の処理を行う回路構成データを優先的に上記補助演算装置に書き込む構成データ書き込み手段と、
上記命令種類判別手段の判別結果を受けて、上記命令が上記予約命令であるときには、上記補助演算装置を用いて上記予約命令の処理を行うか否かを判別する使用装置判別手段と、
を備え、
上記使用装置判別手段の判別結果を受けて、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行う場合には上記補助演算装置を用いて上記予約命令の処理を行い、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行わない場合には上記CPUを用いて上記予約命令の処理を行うことを特徴とする半導体集積回路。 - 請求項2記載の半導体集積回路において、
メモリをさらに備え、
上記構成データ書き込み手段は、上記履歴記憶手段を参照して、上記予約命令の回路構成データを、使用頻度の高い順に、上記補助演算装置と上記メモリとに書き込むことを特徴とする半導体集積回路。 - 請求項2記載の半導体集積回路において、
メモリをさらに備え、
上記構成データ書き込み手段は、上記履歴記憶手段を参照して、上記予約命令の回路構成データを、上記補助演算装置に上記予約命令の回路構成データよりも空き容量が多ければ書込み、空き容量が少なければ上記予約命令の回路構成データよりも空き容量が多くなるまで上記予約命令よりも使用頻度の低い予約命令を上記補助演算装置から解放し、上記解放された予約命令を、上記メモリの上記メモリに書き込む第4の判別手段をさらに備えていることを特徴とする半導体集積回路。 - CPUと、
回路構成が書き換え可能であるプログラマブルデバイスで構成される上記CPUの補助演算装置と、
命令あるいは複数の命令からなる命令列を受けて、上記命令あるいは命令列が上記補助演算装置で処理が可能な予約命令か否かを判別する命令種類判別手段と、
上記予約命令を複数回受けたときの予約命令の遷移パターンを記憶する履歴記憶手段と、
上記予約命令の処理を行う回路構成データを上記補助演算装置に書き込む機能を有し、書き込みを行う際に、上記履歴記憶手段を参照して、現在受けている予約命令から遷移する確率がより高い予約命令の回路構成データを優先的に上記補助演算装置に書き込む構成データ書き込み手段と、
上記命令種類判別手段の判別結果を受けて、上記命令が上記予約命令であるときには、上記補助演算装置を用いて上記予約命令の処理を行うか否かを判別する使用装置判別手段と、
を備え、
上記使用装置判別手段の判別結果を受けて、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行う場合には上記補助演算装置を用いて上記予約命令の処理を行い、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行わない場合には上記CPUを用いて上記予約命令の処理を行うことを特徴とする半導体集積回路。 - CPUと、
回路構成が書き換え可能であるプログラマブルデバイスで構成される上記CPUの補助演算装置と、
命令あるいは複数の命令からなる命令列を受けて、上記命令あるいは命令列が上記補助演算装置で処理が可能な予約命令か否かを判別する命令種類判別手段と、
上記予約命令を複数回受けたとき、第1の予約命令の次に実行される第2の予約命令の頻度を各予約命令ごとに記憶する履歴記憶手段と、
上記予約命令の処理を行う回路構成データを上記補助演算装置に書き込む機能を有し、書き込みを行う際に、上記履歴記憶手段を参照して、現在受けている第1の予約命令の次に実行される頻度が高い第2の予約命令の回路構成データを優先的に上記補助演算装置に書き込む構成データ書き込み手段と、
上記命令種類判別手段の判別結果を受けて、上記命令が上記予約命令であるときには、上記補助演算装置を用いて上記予約命令の処理を行うか否かを判別する使用装置判別手段と、
を備え、
上記使用装置判別手段の判別結果を受けて、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行う場合には上記補助演算装置を用いて上記予約命令の処理を行い、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行わない場合には上記CPUを用いて上記予約命令の処理を行うことを特徴とする半導体集積回路。 - CPUと、
回路構成が書き換え可能であるプログラマブルデバイスで構成される上記CPUの補助演算装置と、
命令あるいは複数の命令からなる命令列を受けて、上記命令あるいは命令列が上記補助演算装置で処理が可能な予約命令か否かを判別する命令種類判別手段と、
上記予約命令を2回受けたときの予約命令の遷移パターンと、上記2つの予約命令を受ける時間間隔とを記憶する履歴記憶手段と、
上記予約命令の処理を行う回路構成データを上記補助演算装置に書き込む機能を有し、書き込みを行う際に、上記履歴記憶手段を参照して、現在受けている予約命令から遷移する確率がより高い予約命令の回路構成データを、上記時間間隔が回路構成データの書き込みに要する時間よりも長いときに限り上記補助演算装置に書き込む構成データ書き込み手段と、
上記命令種類判別手段の判別結果を受けて、上記命令が上記予約命令であるときには、上記補助演算装置を用いて上記予約命令の処理を行うか否かを判別する使用装置判別手段と、
を備え、
上記使用装置判別手段の判別結果を受けて、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行う場合には上記補助演算装置を用いて上記予約命令の処理を行い、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行わない場合には上記CPUを用いて上記予約命令の処理を行うことを特徴とする半導体集積回路。 - CPUと、
回路構成が書き換え可能であるプログラマブルデバイスで構成される上記CPUの補助演算装置と、
命令あるいは複数の命令からなる命令列を受けて、上記命令あるいは命令列が上記補助演算装置で処理が可能な予約命令か否かを判別する命令種類判別手段と、
上記予約命令を2回受けたときの予約命令の遷移パターンと、上記2つの予約命令を受ける時間間隔とを記憶する履歴記憶手段と、
上記予約命令の処理を行う回路構成データを上記補助演算装置に書き込む機能を有し、書き込みを行う際に、上記履歴記憶手段を参照して、現在受けている第1の予約命令の次に実行される頻度が高い第2の予約命令の回路構成データを、上記時間間隔が回路構成データの書き込みに要する時間よりも長いときに限り上記補助演算装置に書き込む構成データ書き込み手段と、
上記命令種類判別手段の判別結果を受けて、上記命令が上記予約命令であるときには、上記補助演算装置を用いて上記予約命令の処理を行うか否かを判別する使用装置判別手段と、
を備え、
上記使用装置判別手段の判別結果を受けて、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行う場合には上記補助演算装置を用いて上記予約命令の処理を行い、上記判別結果が上記補助演算装置を用いて上記予約命令の処理を行わない場合には上記CPUを用いて上記予約命令の処理を行うことを特徴とする半導体集積回路。 - 請求項1〜8のうちいずれか1つに記載の半導体集積回路において、
上記構成データ書き込み手段は、上記補助演算装置の空き容量が上記予約命令の構成データの容量よりも大きければ上記予約命令の構成データの書き込みを行い、空き容量が少なければ上記予約命令の回路構成データの容量よりも空き容量が多くなるまで上記予約命令よりも使用頻度の低い予約命令を上記補助演算装置から解放することを特徴とする半導体集積回路。 - 請求項1〜8のうちいずれか1つに記載の半導体集積回路において、
上記補助演算装置はバンク構成を有しており、
上記構成データ書き込み手段は、上記補助演算装置の空きバンクが上記予約命令の構成データの必要バンクよりも大きければ上記予約命令の構成データの書き込みを行い、
空きバンクが少なければ上記予約命令の回路構成データの必要バンクよりも空きバンクの方が多くなるまで上記予約命令よりも使用頻度の低い予約命令を上記補助演算装置から解放することを特徴とする半導体集積回路。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000371299A JP3636986B2 (ja) | 2000-12-06 | 2000-12-06 | 半導体集積回路 |
US10/001,967 US6901502B2 (en) | 2000-12-06 | 2001-12-05 | Integrated circuit with CPU and FPGA for reserved instructions execution with configuration diagnosis |
US11/038,024 US20050144515A1 (en) | 2000-12-06 | 2005-01-21 | Semiconductor integrated circuit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000371299A JP3636986B2 (ja) | 2000-12-06 | 2000-12-06 | 半導体集積回路 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002175183A JP2002175183A (ja) | 2002-06-21 |
JP3636986B2 true JP3636986B2 (ja) | 2005-04-06 |
Family
ID=18841045
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000371299A Expired - Fee Related JP3636986B2 (ja) | 2000-12-06 | 2000-12-06 | 半導体集積回路 |
Country Status (2)
Country | Link |
---|---|
US (2) | US6901502B2 (ja) |
JP (1) | JP3636986B2 (ja) |
Families Citing this family (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7266725B2 (en) | 2001-09-03 | 2007-09-04 | Pact Xpp Technologies Ag | Method for debugging reconfigurable architectures |
DE19651075A1 (de) | 1996-12-09 | 1998-06-10 | Pact Inf Tech Gmbh | Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen |
DE19654595A1 (de) | 1996-12-20 | 1998-07-02 | Pact Inf Tech Gmbh | I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen |
DE59710317D1 (de) | 1996-12-27 | 2003-07-24 | Pact Inf Tech Gmbh | VERFAHREN ZUM SELBSTÄNDIGEN DYNAMISCHEN UMLADEN VON DATENFLUSSPROZESSOREN (DFPs) SOWIE BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALEN PROGRAMMIERBAREN ZELLSTRUKTUREN (FPGAs, DPGAs, o.dgl.) |
US6542998B1 (en) | 1997-02-08 | 2003-04-01 | Pact Gmbh | Method of self-synchronization of configurable elements of a programmable module |
US8686549B2 (en) | 2001-09-03 | 2014-04-01 | Martin Vorbach | Reconfigurable elements |
DE19861088A1 (de) | 1997-12-22 | 2000-02-10 | Pact Inf Tech Gmbh | Verfahren zur Reparatur von integrierten Schaltkreisen |
JP2003505753A (ja) | 1999-06-10 | 2003-02-12 | ペーアーツェーテー インフォルマツィオーンステヒノロギー ゲゼルシャフト ミット ベシュレンクテル ハフツング | セル構造におけるシーケンス分割方法 |
ATE476700T1 (de) | 2000-06-13 | 2010-08-15 | Richter Thomas | Pipeline ct-protokolle und -kommunikation |
AU2002220600A1 (en) * | 2000-10-06 | 2002-04-15 | Pact Informationstechnologie Gmbh | Cell system with segmented intermediate cell structure |
US8058899B2 (en) | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
US7844796B2 (en) | 2001-03-05 | 2010-11-30 | Martin Vorbach | Data processing device and method |
US9037807B2 (en) | 2001-03-05 | 2015-05-19 | Pact Xpp Technologies Ag | Processor arrangement on a chip including data processing, memory, and interface elements |
US7444531B2 (en) | 2001-03-05 | 2008-10-28 | Pact Xpp Technologies Ag | Methods and devices for treating and processing data |
AU2002347560A1 (en) | 2001-06-20 | 2003-01-02 | Pact Xpp Technologies Ag | Data processing method |
US7996827B2 (en) * | 2001-08-16 | 2011-08-09 | Martin Vorbach | Method for the translation of programs for reconfigurable architectures |
US7434191B2 (en) | 2001-09-03 | 2008-10-07 | Pact Xpp Technologies Ag | Router |
US8686475B2 (en) | 2001-09-19 | 2014-04-01 | Pact Xpp Technologies Ag | Reconfigurable elements |
US7394823B2 (en) * | 2001-11-20 | 2008-07-01 | Broadcom Corporation | System having configurable interfaces for flexible system configurations |
US7577822B2 (en) * | 2001-12-14 | 2009-08-18 | Pact Xpp Technologies Ag | Parallel task operation in processor and reconfigurable coprocessor configured based on information in link list including termination information for synchronization |
WO2003060747A2 (de) | 2002-01-19 | 2003-07-24 | Pact Xpp Technologies Ag | Reconfigurierbarer prozessor |
ATE538439T1 (de) | 2002-02-18 | 2012-01-15 | Richter Thomas | Bussysteme und rekonfigurationsverfahren |
US8914590B2 (en) | 2002-08-07 | 2014-12-16 | Pact Xpp Technologies Ag | Data processing method and device |
US8090928B2 (en) * | 2002-06-28 | 2012-01-03 | Intellectual Ventures I Llc | Methods and apparatus for processing scalar and vector instructions |
JP3904493B2 (ja) * | 2002-07-24 | 2007-04-11 | 株式会社ルネサステクノロジ | 半導体装置 |
WO2004021176A2 (de) | 2002-08-07 | 2004-03-11 | Pact Xpp Technologies Ag | Verfahren und vorrichtung zur datenverarbeitung |
US7657861B2 (en) | 2002-08-07 | 2010-02-02 | Pact Xpp Technologies Ag | Method and device for processing data |
JP4388895B2 (ja) | 2002-09-06 | 2009-12-24 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | リコンフィギュアラブルなシーケンサ構造 |
EP1550950A4 (en) * | 2002-09-13 | 2007-03-07 | Hitachi Ltd | SEMICONDUCTOR DEVICE |
US20060001669A1 (en) | 2002-12-02 | 2006-01-05 | Sehat Sutardja | Self-reparable semiconductor and method thereof |
US7185225B2 (en) * | 2002-12-02 | 2007-02-27 | Marvell World Trade Ltd. | Self-reparable semiconductor and method thereof |
US7340644B2 (en) * | 2002-12-02 | 2008-03-04 | Marvell World Trade Ltd. | Self-reparable semiconductor and method thereof |
EP1443418A1 (en) * | 2003-01-31 | 2004-08-04 | STMicroelectronics S.r.l. | Architecture for reconfigurable digital signal processor |
EP1676208A2 (en) | 2003-08-28 | 2006-07-05 | PACT XPP Technologies AG | Data processing device and method |
US7584345B2 (en) | 2003-10-30 | 2009-09-01 | International Business Machines Corporation | System for using FPGA technology with a microprocessor for reconfigurable, instruction level hardware acceleration |
US7254800B1 (en) * | 2004-02-26 | 2007-08-07 | Xilinx, Inc. | Methods of providing error correction in configuration bitstreams for programmable logic devices |
JP4978006B2 (ja) * | 2006-01-05 | 2012-07-18 | 日本電気株式会社 | データ処理装置及びデータ処理方法 |
WO2007082730A1 (de) | 2006-01-18 | 2007-07-26 | Pact Xpp Technologies Ag | Hardwaredefinitionsverfahren |
JP2007207136A (ja) * | 2006-02-06 | 2007-08-16 | Nec Corp | データ処理装置、データ処理方法、及びデータ処理プログラム |
JP2007251329A (ja) * | 2006-03-14 | 2007-09-27 | Matsushita Electric Ind Co Ltd | プログラマブルロジックデバイス |
JP4659774B2 (ja) * | 2007-03-07 | 2011-03-30 | 三菱電機株式会社 | 電気機器 |
US20090024839A1 (en) * | 2007-07-21 | 2009-01-22 | Arssov Paul Plamen | Variable instruction set microprocessor |
US8718079B1 (en) | 2010-06-07 | 2014-05-06 | Marvell International Ltd. | Physical layer devices for network switches |
US8516466B2 (en) * | 2010-06-30 | 2013-08-20 | International Business Machines Corporation | Optimization of automated system-managed storage operations |
US9135213B2 (en) * | 2011-01-13 | 2015-09-15 | Xilinx, Inc. | Extending a processor system within an integrated circuit and offloading processes to process-specific circuits |
JP5786434B2 (ja) * | 2011-04-28 | 2015-09-30 | 富士ゼロックス株式会社 | 画像データ処理装置及びプログラム |
JP6228381B2 (ja) * | 2012-04-30 | 2017-11-08 | 株式会社半導体エネルギー研究所 | 半導体装置 |
JP6049344B2 (ja) * | 2012-08-01 | 2016-12-21 | 東芝メディカルシステムズ株式会社 | 超音波診断装置 |
CN103150143A (zh) * | 2013-02-06 | 2013-06-12 | 王鸿雁 | 一种基于fpga的五流水线数字信号处理器 |
JP5971214B2 (ja) * | 2013-08-16 | 2016-08-17 | 富士ゼロックス株式会社 | データ処理装置及びデータ処理プログラム |
US9698790B2 (en) * | 2015-06-26 | 2017-07-04 | Advanced Micro Devices, Inc. | Computer architecture using rapidly reconfigurable circuits and high-bandwidth memory interfaces |
JP6569508B2 (ja) * | 2015-12-11 | 2019-09-04 | 富士通株式会社 | 処理装置及び処理装置の制御方法 |
JP2018101267A (ja) * | 2016-12-20 | 2018-06-28 | 東芝デベロップメントエンジニアリング株式会社 | 管理装置 |
JP6909128B2 (ja) * | 2017-10-30 | 2021-07-28 | 日立Astemo株式会社 | 電子制御装置 |
WO2020147068A1 (en) * | 2019-01-17 | 2020-07-23 | Intel Corporation | Scenario profile based partitioning and management of application code |
US11030147B2 (en) | 2019-03-27 | 2021-06-08 | International Business Machines Corporation | Hardware acceleration using a self-programmable coprocessor architecture |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0383136A (ja) | 1989-08-25 | 1991-04-09 | Seiko Epson Corp | 電子計算機 |
JPH05242050A (ja) | 1992-03-02 | 1993-09-21 | Mitsubishi Electric Corp | プロセッサ装置 |
US5361373A (en) * | 1992-12-11 | 1994-11-01 | Gilson Kent L | Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor |
US6067615A (en) * | 1993-11-30 | 2000-05-23 | Trw Inc. | Reconfigurable processor for executing successive function sequences in a processor operation |
JPH07175631A (ja) | 1993-12-16 | 1995-07-14 | Dainippon Printing Co Ltd | 演算処理装置 |
US5748979A (en) * | 1995-04-05 | 1998-05-05 | Xilinx Inc | Reprogrammable instruction set accelerator using a plurality of programmable execution units and an instruction page table |
US5996004A (en) * | 1996-01-02 | 1999-11-30 | Bp Microsystems, Inc. | Concurrent programming apparatus and method for electronic devices |
US6067815A (en) * | 1996-11-05 | 2000-05-30 | Tes Technology, Inc. | Dual evaporator refrigeration unit and thermal energy storage unit therefore |
US6134707A (en) * | 1996-11-14 | 2000-10-17 | Altera Corporation | Apparatus and method for in-system programming of integrated circuits containing programmable elements |
US6112317A (en) * | 1997-03-10 | 2000-08-29 | Digital Equipment Corporation | Processor performance counter for sampling the execution frequency of individual instructions |
KR100731371B1 (ko) | 1999-02-15 | 2007-06-21 | 코닌클리즈케 필립스 일렉트로닉스 엔.브이. | 구성가능 기능 유닛을 포함하는 프로세서를 사용해서 컴퓨터 프로그램을 실행하는 방법, 프로세서 및 컴퓨터 판독가능 기록 매체 |
JP2000235489A (ja) | 1999-02-15 | 2000-08-29 | Hitachi Ltd | プロセッサ |
EP1306751A4 (en) * | 2000-06-06 | 2009-05-06 | Tadahiro Ohmi | SYSTEM AND METHOD FOR MANAGING VARIABLE FUNCTION INFORMATION PROCESSING CIRCUITS |
US6912706B1 (en) * | 2001-08-15 | 2005-06-28 | Xilinx, Inc. | Instruction processor and programmable logic device cooperative computing arrangement and method |
-
2000
- 2000-12-06 JP JP2000371299A patent/JP3636986B2/ja not_active Expired - Fee Related
-
2001
- 2001-12-05 US US10/001,967 patent/US6901502B2/en not_active Expired - Fee Related
-
2005
- 2005-01-21 US US11/038,024 patent/US20050144515A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US6901502B2 (en) | 2005-05-31 |
US20050144515A1 (en) | 2005-06-30 |
JP2002175183A (ja) | 2002-06-21 |
US20020133690A1 (en) | 2002-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3636986B2 (ja) | 半導体集積回路 | |
US6321318B1 (en) | User-configurable on-chip program memory system | |
US20050066152A1 (en) | Method and apparatus for processing data in a reconfigurable manner | |
JP4136359B2 (ja) | マイクロコンピュータ | |
JPH096633A (ja) | データ処理システムに於ける高性能多重論理経路の動作用の方法とシステム | |
KR20020047199A (ko) | 비휘발성 메모리가 데이터 저장/처리 디바이스로서동작하면서 코드를 실행할 수 있게 하는 방법 및 시스템 | |
US6898671B2 (en) | Data processor for reducing set-associative cache energy via selective way prediction | |
JP2000065899A (ja) | 半導体装置およびそのデータ書き換え方法 | |
US7051191B2 (en) | Resource management using multiply pendent registers | |
US20210232430A1 (en) | Processor zero overhead task scheduling | |
AU752641B2 (en) | Controller for a digital processor | |
US7596681B2 (en) | Processor and processing method for reusing arbitrary sections of program code | |
JP2022542630A (ja) | データ構造放棄 | |
JPH06275084A (ja) | 不揮発性半導体記憶装置及びそれを用いたデータ処理装置 | |
US5664156A (en) | Microcontroller with a reconfigurable program status word | |
US8484446B2 (en) | Microprocessor saving data stored in register and register saving method | |
KR100861896B1 (ko) | 데이터 프로세싱 장치 및 데이터 프로세싱 방법 | |
US8200943B2 (en) | Microprocessor | |
JP3810805B2 (ja) | 情報修正システム | |
JP3956305B2 (ja) | 不揮発性半導体記憶装置およびデータ処理装置 | |
JP2001147862A (ja) | フラッシュメモリ書込方法 | |
US20040044916A1 (en) | Microcontroller | |
US20010021973A1 (en) | Processor | |
JP2003223372A (ja) | メモリ制御装置及びシリアルメモリ | |
JPH08221270A (ja) | データ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040629 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040830 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040928 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041129 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20041221 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050106 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |