(57)【要約】【課題】  再構成可能な処理回路を具備し、プログラムを実行するプロセッサにおいて、コンパイラによるコンフィグレーションデータのキャッシュへの格納を判断できるようにする。【解決手段】  処理回路２ａ〜２ｄ，…の構成を規定するコンフィグレーションデータ１は、キャッシュ５の動作を規定するキャッシュ動作情報を含む。キャッシュ動作情報取得部３は、実行されるコンフィグレーションデータ１からキャッシュ動作情報を取得する。キャッシュ制御部４は、キャッシュ動作情報に基づいて、コンフィグレーションデータ１を保持するキャッシュ５の動作を制御する。このように、コンフィグレーションデータ１にキャッシュ動作情報を含めるようにし、そのキャッシュ動作情報に基づいて、キャッシュの動作を制御するように構成したので、コンパイラは、プログラムの動作を予測して、コンフィグレーションデータにキャッシュ動作情報を含ませることができる。【選択図】  図１
2006011705.tif 000002
【特許請求の範囲】
【請求項１】
再構成可能な所定の処理を行う処理回路を具備し、プログラムを実行するプロセッサにおいて、
前記処理回路の構成を規定するコンフィグレーションデータが、キャッシュの動作を規定するキャッシュ動作情報を含み、実行される前記コンフィグレーションデータから前記キャッシュ動作情報を取得するキャッシュ動作情報取得部と、
前記キャッシュ動作情報に基づいて、前記コンフィグレーションデータを保持する前記キャッシュの動作を制御するキャッシュ制御部と、
を有することを特徴とするプロセッサ。
【請求項２】
前記コンフィグレーションデータは、さらに次に実行される前記コンフィグレーションデータを示す次ステート情報を含み、
前記キャッシュ制御部は、前記キャッシュ動作情報が先読み動作を示す場合、前記次ステート情報の示す前記コンフィグレーションデータを先読みし、前記キャッシュの動作を制御することを特徴とする請求項１記載のプロセッサ。
【請求項３】
前記キャッシュは、複数のレジスタによって構成されることを特徴とする請求項１記載のプロセッサ。
【請求項４】
前記キャッシュ制御部の制御によって、前記複数のレジスタから出力されている前記コンフィグレーションデータを選択し、前記処理回路に出力する選択回路を有することを特徴とする請求項３記載のプロセッサ。
【請求項５】
前記複数のレジスタは、フリップフロップによって構成されることを特徴とする請求項３記載のプロセッサ。
【請求項６】
前記キャッシュ制御部は、中央演算処理装置によって前記コンフィグレーションデータの前記キャッシュへの格納が制御されることを特徴とする請求項１記載のプロセッサ。
【請求項７】
前記キャッシュ動作情報には、キャッシュヒットしなかった前記コンフィグレーションデータを前記キャッシュに格納するか否かを示す情報が含まれることを特徴とする請求項１記載のプロセッサ。
【請求項８】
再構成可能な所定の処理を行う処理回路を具備し、プログラムを実行する半導体装置において、
前記処理回路の構成を規定するコンフィグレーションデータが、キャッシュの動作を規定するキャッシュ動作情報を含み、実行される前記コンフィグレーションデータから前記キャッシュ動作情報を取得するキャッシュ動作情報取得部と、
前記キャッシュ動作情報に基づいて、前記コンフィグレーションデータを保持する前記キャッシュの動作を制御するキャッシュ制御部と、
を有することを特徴とする半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプロセッサおよび半導体装置に関し、特に再構成可能な所定の処理を行う処理回路を具備し、プログラムを実行するプロセッサおよび半導体装置に関する。
【背景技術】
【０００２】
従来、ＣＰＵ（Central Processing Unit）と再構成可能な演算器複合ユニットとを具備したプロセッサがある。このプロセッサは、例えば、Ｃ言語で記述されたプログラムを解析し、ＣＰＵで処理する部分と、演算器複合ユニットで処理する部分とに分けて、プログラムを高速に実行する。
【０００３】
ＶＬＩＷ（Very Long Instruction Word）やスーパスカラなどの機能を搭載したプロセッサは、複数の演算器を搭載し、その複数の演算器で１つのデータフローを処理する。そのため、演算器間の動作結合が非常に強い。これに対し、再構成可能なプロセッサでは、演算器群は、複数のデータフローを処理できるよう、単純なパイプライン的な結合によって結線され、または、ある程度自由度の確保された専用バスによって結線されている。再構成可能なプロセッサでは、この演算器群の構成を決めるコンフィグレーションデータをどのように伝播させて動かすかが重要となる。
【０００４】
演算器複合ユニットの構成の切替え条件は、例えば、演算器複合ユニット内の演算器がある演算を実行し、ある条件に適合したとき発生する。そして、演算器複合ユニットの構成の切替えは、プロセッサ内のＣＰＵによって制御される。プロセッサは、コンフィグレーションデータを格納するバンク（キャッシュ）を複数備え、このキャッシュを切替えることによって、瞬時の構成の切替えを実現している（例えば、特許文献１参照）。
【０００５】
なお、各種の処理を行うモジュールやプロセッサそのもののパフォーマンスを測定し、その測定結果に基づいて、モジュールやプロセッサのコンフィグレーションを変更することにより、ユーザの実行するプログラムに適したコンフィグレーションを設定することができるプロセッサがある（例えば、特許文献２参照）。
【特許文献１】国際公開第０１／０１６７１１号パンフレット（特願２００１−５２０５９８号明細書）
【特許文献２】特開２００２−１６３１５０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、従来のプロセッサでは、複数のキャッシュは、ＣＰＵのミドルウェア（ＣＰＵの関数）によって制御されるようになっており、コンフィグレーションデータのキャッシュへの格納は、ユーザがプログラム上で予め設定しなければならないという問題点があった。
【０００７】
本発明はこのような点に鑑みてなされたものであり、コンパイラによるコンフィグレーションデータのキャッシュへの格納を判断できるようにしたプロセッサおよび半導体装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明では上記問題を解決するために、図１に示すような再構成可能な所定の処理を行う処理回路２ａ〜２ｄ，…を具備し、プログラムを実行するプロセッサにおいて、処理回路２ａ〜２ｄ，…の構成を規定するコンフィグレーションデータ１が、キャッシュ５の動作を規定するキャッシュ動作情報を含み、実行されるコンフィグレーションデータ１からキャッシュ動作情報を取得するキャッシュ動作情報取得部３と、キャッシュ動作情報に基づいて、コンフィグレーションデータ１を保持するキャッシュ５の動作を制御するキャッシュ制御部４と、を有することを特徴とするプロセッサが提供される。
【０００９】
このようなプロセッサによれば、コンフィグレーションデータ１の含むキャッシュ動作情報に基づいて、キャッシュ５の動作を制御するように構成したので、コンパイラは、プログラムの動作を予測して、コンフィグレーションデータにキャッシュ動作情報を含ませることが可能となる。
【発明の効果】
【００１０】
本発明のプロセッサでは、コンフィグレーションデータにキャッシュ動作情報を含めるようにし、そのコンフィグレーションデータに含められたキャッシュ動作情報に基づいて、キャッシュの動作を制御するように構成した。これによって、コンパイラは、プログラムの動作を予測して、コンフィグレーションデータにキャッシュ動作情報を含ませることができ、コンパイラによるコンフィグレーションデータのキャッシュへの格納を判断できるようになる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の原理を図面を参照して詳細に説明する。
図１は、本発明のプロセッサの原理図である。
図に示すプロセッサは、再構成可能な所定の処理を行う処理回路２ａ〜２ｄ，…を具備し、プログラムを実行する。プロセッサは、キャッシュ動作情報取得部３、キャッシュ制御部４、キャッシュ５、および記憶装置６を有している。なお、記憶装置６は、プロセッサの外部に設けてもよい。また、図には、コンフィグレーションデータ１が示してある。
【００１２】
コンフィグレーションデータ１は、処理回路２ａ〜２ｄ，…の構成を規定する回路構成情報と、キャッシュ５の動作を規定するキャッシュ動作情報とを含む。
キャッシュ動作情報取得部３は、実行されるコンフィグレーションデータ１からキャッシュ動作情報を取得する。
【００１３】
キャッシュ制御部４は、キャッシュ動作情報取得部３によって取得されたキャッシュ動作情報に基づいて、コンフィグレーションデータ１を保持するキャッシュ５の動作を制御する。記憶装置６は、コンフィグレーションデータ１を保持しており、キャッシュ制御部４は、例えば、キャッシュ５からコンフィグレーションデータ１を読み出すか、記憶装置６から読み出すかを制御する。また、記憶装置６のコンフィグレーションデータ１をキャッシュ５に保持するように制御する。
【００１４】
このように、コンフィグレーションデータにキャッシュ動作情報を含めるようにし、そのコンフィグレーションデータに含められたキャッシュ動作情報に基づいて、キャッシュの動作を制御するように構成した。この構成によって、コンパイラは、プログラムの動作を予測して、コンフィグレーションデータにキャッシュ動作情報を含ませることができ、コンパイラによるコンフィグレーションデータのキャッシュへの格納を判断できるようになる。
【００１５】
次に、本発明の実施の形態を図面を参照して詳細に説明する。
図２は、プロセッサの概略を示したブロック図である。
図に示すようにプロセッサ１０は、シーケンス部２０、処理回路群３０、およびＣＰＵ４０を有している。プロセッサ１０は、例えば、１チップの半導体によって構成される。なお、図には、プロセッサ１０が実行するプログラムのメモリマップ５０が示してある。
【００１６】
プログラムは、メモリマップ５０に示すように、ＣＰＵ４０が実行する命令とデータの領域と、シーケンス部２０と処理回路群３０が実行するコンフィグレーションデータの領域とに分かれる。ＣＰＵ４０は、メモリマップ５０に示す命令とデータのプログラムを実行し、シーケンス部２０は、メモリマップ５０に示すコンフィグレーションデータに基づいて処理回路群３０の処理回路を所定の構成にし、プログラムを実行する。
【００１７】
処理回路群３０について詳細に説明する。
図３は、図２のシーケンス部と処理回路群を示したブロック図である。
図に示すように処理回路群３０は、演算器ユニット３１ａ，３１ｂ，…、カウンタ３２ａ，３２ｂ，…、外部インタフェース３３、および配線スイッチ３４の所定の処理を行う処理回路を有している。なお、図に示す処理回路は一例を示しており、処理回路群３０は、例えば、メモリやレジスタなどの記憶装置を有していてもよい。
【００１８】
シーケンス部２０は、処理回路群３０の構成を規定するコンフィグレーションデータを、所定のシーケンスに基づいて処理回路群３０に出力する。処理回路群３０は、シーケンス部２０から出力されるコンフィグレーションデータに基づいて、各処理回路の構成を変更し、固定する。処理回路群３０の各処理回路は、シーケンス部２０から出力されるコンフィグレーションデータによって、動作や結線を変更することにより、その構成を変更し、固定する。
【００１９】
例えば、処理回路群３０の演算器ユニット３１ａ，３１ｂ，…、カウンタ３２ａ，３２ｂ，…、外部インタフェース３３、および配線スイッチ３４は、コンフィグレーションデータによって動作を変更する。また、配線スイッチ３４は、コンフィグレーションデータによって、演算器ユニット３１ａ，３１ｂ，…、カウンタ３２ａ，３２ｂ，…、および外部インタフェース３３間の結線を変更する。
【００２０】
処理回路群３０は、プログラムの演算を実行し、演算結果がある条件に適合したとき切替え条件信号をシーケンス部２０に出力する。例えば、処理回路群３０は、外部インタフェース３３にデータが入力され、このデータに対し、ある演算をＮ回繰り返すとする。演算器ユニット３１ａ，３１ｂ，…は、入力されたデータを繰り返し演算し、カウンタ３２ａは、その回数をカウントアップするとする。カウンタ３２ａは、カウント値がＮとなると、シーケンス部２０に切替え条件信号を出力する。
【００２１】
シーケンス部２０は、切替え条件信号を受けると、次に実行されるコンフィグレーションデータを処理回路群３０に出力し、処理回路群３０は、コンフィグレーションデータに基づいて処理回路を再構成する。このように、ユーザのプログラムを実行する処理回路が処理回路群３０に構成され、高速に実行される。
【００２２】
次に、シーケンス部２０について詳細に説明する。
図４は、図３のシーケンス部の詳細なブロック図である。
図に示すようにシーケンス部２０は、次ステート決定部２１、動作決定部２２、アドレス発生部２３、ＲＡＭ（Random Access Memory）２４、およびキャッシュ部２５を有している。
【００２３】
次ステート決定部２１には、次に実行される（次に実行される複数の候補も含む）コンフィグレーションデータを示す番号（ステート番号）が格納される。このステート番号は、コンフィグレーションデータに含まれており、次に実行されるコンフィグレーションデータのステート番号は、現在実行されているコンフィグレーションデータを参照することによりわかる。また、次ステート決定部２１には、図３に示した処理回路群３０から切替え条件信号が入力される。次ステート決定部２１は、切替え条件信号の切替え条件に応じた、次に実行されるコンフィグレーションデータの次ステート番号を決定する。
【００２４】
動作決定部２２は、現在実行されているコンフィグレーションデータの動作モードが格納されている。動作決定部２２は、動作モードに応じて、キャッシュ部２５の動作を制御する。動作モードは、例えば、以前にキャッシュ部２５にキャッシュされたコンフィグレーションデータを使用する単キャッシュモードと、次に実行される次ステート番号のコンフィグレーションデータを先読みして、キャッシュ部２５に格納する先読みモードとがある。
【００２５】
例えば、単キャッシュモードの場合、動作決定部２２は、切替え条件信号によって実行されるコンフィグレーションデータのステート番号が決まると、そのステート番号に対応するコンフィグレーションデータが、キャッシュ部２５に格納されているか（キャッシュヒットしたか）判定する。キャッシュヒットすれば、そのステート番号に対応するコンフィグレーションデータがキャッシュ部２５から出力されるようにキャッシュ部２５を制御する。キャッシュヒットしなければ、ＲＡＭ２４からコンフィグレーションデータが出力されるようにアドレス発生部２３を制御する。ＲＡＭ２４から出力されるコンフィグレーションデータは、キャッシュ部２５を介して、処理回路群３０に出力される。
【００２６】
先読みモードの場合、動作決定部２２は、次ステート決定部２１に保持されている次ステート番号を読み出し、次ステート番号に対応するコンフィグレーションデータがキャッシュヒットしたか判定する。キャッシュヒットしなければ、その次ステート番号に対応するコンフィグレーションデータをＲＡＭ２４から読み出して、予めキャッシュ部２５に格納する。キャッシュヒットすれば、次のステートのコンフィグレーションデータが実行されるとき、キャッシュ部２５から出力されるようにキャッシュ部２５を制御する。先読みモードは、現在実行されているコンフィグレーションデータによるプログラムの処理に時間がかかる場合、その間に次に実行される候補のコンフィグレーションデータを予めキャッシュ部２５に格納しておくことにより、プログラムの処理の高速化を図る。
【００２７】
アドレス発生部２３には、動作決定部２２から出力されるステート番号と、キャッシュ部２５から出力されるレディ信号が入力される。アドレス発生部２３は、キャッシュ部２５からのレディ信号に応じて、ステート番号に対応するコンフィグレーションデータのアドレスをＲＡＭ２４に出力する。
【００２８】
ＲＡＭ２４は、図３で示した処理回路群３０の構成を規定するためのコンフィグレーションデータが格納されている。ＲＡＭ２４は、アドレス発生部２３からのアドレスに応じたコンフィグレーションデータを、キャッシュ部２５、動作決定部２２、および次ステート決定部２１に出力する。なお、コンフィグレーションデータには、上記でも説明したように、次に実行されるコンフィグレーションのステート番号が含まれている。従って、ＲＡＭ２４からコンフィグレーションデータが出力されたとき、次ステート決定部２１は、次に実行されるべきコンフィグレーションデータのステート番号がわかる。動作決定部２２は、現在実行されるコンフィグレーションデータの動作モードがわかる。
【００２９】
キャッシュ部２５は、動作決定部２２の制御に応じて、ＲＡＭ２４から出力されるコンフィグレーションデータを記憶する。また、キャッシュ部２５は、動作決定部２２によってキャッシュヒットしたと判定された場合、そのキャッシュヒットに対応する、キャッシュしているコンフィグレーションデータを処理回路群３０に出力する。また、キャッシュ部２５は、空き状態が発生したとき、ＲＡＭ２４から出力されるコンフィグレーションデータの書き込みが可能になったことを示すレディ信号をアドレス発生部２３に出力する。
【００３０】
次に、単キャッシュモードと先読みモードについて詳細に説明する。まず、単キャッシュモードについて説明する。
図５は、図４の詳細なブロック図である。
【００３１】
図５において図４と同じものには同じ符号を付し、その説明を省略する。図に示すように動作決定部２２は、タグ部２２ａおよび判定部２２ｂを有している。キャッシュ部２５は、キャッシュ２５ａａ〜２５ａｃ、出力部２５ｂ、およびセレクタ２５ｃを有している。
【００３２】
動作決定部２２のタグ部２２ａは、キャッシュ部２５のキャッシュ２５ａａ〜２５ａｃに格納されているコンフィグレーションデータのステート番号が格納されている。タグ部２２ａは、ＲＡＭ２４から出力されたコンフィグレーションデータがキャッシュ２５ａａ〜２５ａｃに格納されるとき、そのコンフィグレーションデータのステート番号が格納される。
【００３３】
判定部２２ｂは、次ステート決定部２１で切替え信号によって決定された、実行されるコンフィグレーションデータのステート番号と、タグ部２２ａに格納されているステート番号とを比較する。ステート番号が一致した場合（キャッシュヒットした場合）、判定部２２ｂは、そのステート番号のコンフィグレーションデータを格納しているキャッシュ２５ａａ〜２５ａｃのデータを出力するようにセレクタ２５ｃを制御する。ステート番号が一致しなかった場合は、ステート番号のコンフィグレーションデータのアドレスを発生するように、アドレス発生部２３を制御し、ＲＡＭ２４からコンフィグレーションデータを出力するように制御する。すなわち、判定部２２ｂは、実行されるコンフィグレーションデータがキャッシュヒットするか否かを判定し、キャッシュヒットすれば、そのコンフィグレーションデータを格納しているキャッシュ２５ａａ〜２５ａｃからデータが出力されるようにセレクタ２５ｃを制御する。キャッシュヒットしなければ、ＲＡＭ２４のコンフィグレーションデータを出力するように、セレクタ２５ｃを制御する。
【００３４】
キャッシュ部２５のキャッシュ２５ａａ〜２５ａｃは、コンフィグレーションデータのビット幅を持つレジスタであり、フリップフロップによって構成される。例えば、キャッシュ２５ａａ〜２５ａｃは、ｎ（コンフィグレーションデータのビット幅）×３（キャッシュの数）のフリップフロップで構成される。
【００３５】
出力部２５ｂは、ＲＡＭ２４から出力されるコンフィグレーションデータを、キャッシュ２５ａａ〜２５ａｃおよびセレクタ２５ｃに出力する。
ここで、単キャッシュモードはさらに２つのモードに分かれるとする。１のモードは、キャッシュヒットしなかった場合にＲＡＭ２４から出力されるコンフィグレーションデータをキャッシュ２５ａａ〜２５ａｃに格納するようにする。他のモードは、キャッシュヒットしなかった場合にＲＡＭ２４から出力されるコンフィグレーションデータをキャッシュ２５ａａ〜２５ａｃに格納しないようにする。
【００３６】
１のモードの場合、出力部２５ｂは、ＲＡＭ２４から出力されるコンフィグレーションデータをキャッシュ２５ａａ〜２５ａｃに格納し、セレクタ２５ｃに出力する。他のモードの場合、出力部２５ｂは、ＲＡＭ２４から出力されるコンフィグレーションデータをキャッシュ２５ａａ〜２５ａｃに格納せず、セレクタ２５ｃに出力する。このように、単キャッシュモードを２つに分けることによって、キャッシュヒットしなかった場合にキャッシュ２５ａａ〜２５ａｃが頻繁に書き換えられることを抑制することができる。
【００３７】
なお、新たなコンフィグレーションデータは、一番古いコンフィグレーションデータを格納しているキャッシュ２５ａａ〜２５ａｃに格納する。または、ヒット率の低いコンフィグレーションデータを格納しているキャッシュ２５ａａ〜２５ａｃに格納する。
【００３８】
セレクタ２５ｃは、判定部２２ｂからの制御に応じて、キャッシュ２５ａａ〜２５ａｃから出力されているコンフィグレーションデータおよび出力部２５ｂから出力されるＲＡＭ２４のコンフィグレーションデータを選択的に出力する。キャッシュ２５ａａ〜２５ａｃは、上述したようにレジスタであり、セレクタ２５ｃにコンフィグレーションデータを常時出力している状態となっている。セレクタ２５ｃは、キャッシュ２５ａａ〜２５ａｃから常時出力されているコンフィグレーションデータと、出力部２５ｂから出力されるコンフィグレーションデータの１つを選択的に出力する。キャッシュのアドレスを指定してコンフィグレーションを出力しないので、高速にコンフィグレーションデータを出力することができる。
【００３９】
図５において、次ステート決定部２１に入力される切替え条件信号によって、実行されるコンフィグレーションデータのステート番号が決まったとする。このステート番号のコンフィグレーションデータの動作モードは、単キャッシュモードであったとする。
【００４０】
動作決定部２２の判定部２２ｂは、タグ部２２ａに格納されているステート番号と、次ステート決定部２１で決定されたステート番号とを比較する。ステート番号が一致（キャッシュヒット）すれば、一致したステート番号のコンフィグレーションデータを出力しているキャッシュ２５ａａ〜２５ａｃのデータを出力するように、セレクタ２５ｃを制御する。一致しなければ、そのステート番号のコンフィグレーションデータのアドレスを出力するようにアドレス発生部２３を制御する。
【００４１】
ＲＡＭ２４は、アドレス発生部２３から出力されるアドレスに基づいたデータをキャッシュ部２５の出力部２５ｂに出力する。ここで、単キャッシュモードが１のモードであれば、出力部２５ｂは、コンフィグレーションデータをキャッシュ２５ａａ〜２５ａｃとセレクタ２５ｃに出力する。他のモードであれば、出力部２５ｂは、コンフィグレーションデータをセレクタ２５ｃのみに出力する。この場合、セレクタ２５ｃは、出力部２５ｂから出力されるコンフィグレーションデータを図３に示した処理回路群３０に出力するようにする。このようにして、単キャッシュモードにおけるコンフィグレーションデータのキャッシュ動作が行われる。
【００４２】
次に、先読みモードについて説明する。
図６は、図５の動作決定部の詳細なブロック図である。
先読みモード時のキャッシュ動作では、図５の動作決定部２２は、さらに図に示すような機能ブロックを有し、タグ部２２ａ、判定部２２ｂ、および動作モード設定部２２ｃを有している。なお、図には、図５の次ステート決定部２１も示してある。
【００４３】
動作モード設定部２２ｃは、実行されているコンフィグレーションデータの動作モードが先読みモードである場合、次ステート決定部２１が保持している次に処理される次ステート番号を判定部２２ｂに出力するよう、次ステート決定部２１にプリフェッチ要求信号を出力する。また、動作モード設定部２２ｃは、判定部２２ｂにプリフェッチ動作をするように指示する。また、動作モード設定部２２ｃは、先読み動作が終了すると、判定部２２ｂに次ステート出力完了信号を出力する。
【００４４】
判定部２２ｂは、タグ部２２ａに格納されているステート番号と、先読みする次ステート番号とを比較し、先読みするコンフィグレーションデータがキャッシュ２５ａａ〜２５ａｃに格納されているか判定する。タグ部２２ａに格納されているステート番号と、先読みする次ステート番号とが一致する場合、先読みすべきコンフィグレーションデータがすでにキャッシュ２５ａａ〜２５ａｃに格納されているので、動作モード設定部２２ｃは何もしない。
【００４５】
タグ部２２ａに格納されているステート番号と、先読みする次ステート番号とが一致しない場合、先読みすべきコンフィグレーションデータがキャッシュ２５ａａ〜２５ａｃに格納されていないので、動作モード設定部２２ｃは、タグ部２２ａからキャッシュ空き番号を取得し、プリフェッチ動作によるキャッシュ番号を出力部２５ｂに出力する。判定部２２ｂは、次ステート番号をアドレス発生部２３に出力し、ＲＡＭ２４は、次ステート番号に対応したコンフィグレーションデータを出力部２５ｂに出力する。出力部２５ｂは、動作モード設定部２２ｃからのキャッシュ番号に対応するキャッシュ２５ａａ〜２５ａｃに、ＲＡＭ２４からのコンフィグレーションデータを格納する。判定部２２ｂは、先読みされたコンフィグレーショデータの次ステート番号をタグ部２２ａに格納する。
【００４６】
なお、出力部２５ｂは、先読みするコンフィグレーションデータをキャッシュ２５ａａ〜２５ａｃに格納できる状態にあるとき、レディ信号をアドレス発生部２３に出力し、アドレス発生部２３は、レディ信号を受けて、プリフェッチするステートに対応するアドレスをＲＡＭ２４に出力する。
【００４７】
切替え条件信号によって実行される次ステート番号が決まった場合、判定部２２ｂは、次ステート番号に対応するコンフィグレーションデータがキャッシュ２５ａａ〜２５ａｃに格納されているか判定する。キャッシュ２５ａａ〜２５ａｃに格納されていれば、セレクタ２５ｃにキャッシュ番号を出力する。セレクタ２５ｃは、キャッシュ番号に対応するキャッシュ２５ａａ〜２５ａｃから出力されているコンフィグレーションデータを処理回路群３０に出力する。
【００４８】
図６において、実行されているコンフィグレーションデータの動作モードが先読みモードである場合、動作モード設定部２２ｃは、次ステート決定部２１にプリフェッチ要求信号を出力する。次ステート決定部２１は、先読みすべき次ステート番号を判定部２２ｂに出力する。また、動作モード設定部２２ｃは、先読み動作をするように、判定部２２ｂに指示する。
【００４９】
判定部２２ｂは、タグ部２２ａに格納されているステート番号と、先読みする次ステート番号とを比較して、先読みする次ステート番号に対応するコンフィグレーションデータがキャッシュ２５ａａ〜２５ａｃに格納されているか判定する。判定部２２ｂは、判定結果を動作モード設定部２２ｃに出力する。
【００５０】
動作モード設定部２２ｃは、キャッシュヒットしなかった場合、キャッシュヒットしなかったコンフィグレーションデータがキャッシュ２５ａａ〜２５ａｃに先読みされるように動作する。このようにして、先読みモードにおけるコンフィグレーションデータのキャッシュ動作が行われる。
【００５１】
次にコンフィグレーションデータと動作モードについて説明する。
図７は、コンフィグレーションデータを説明するためのプログラム例を示した図で、（Ａ）はプログラム例、（Ｂ）はプログラムの処理フローを示している。
【００５２】
図７（Ａ）に示すプログラムは、例えば、Ｃ言語で記述される。ｆｏｒは、左側の括弧内の条件が成立するまで処理を繰り返す。図のプログラムでは、条件１が成立するまで、条件２のｆｏｒ文と演算２を繰り返し、条件２が成立するまで演算１を実行することを示している。
【００５３】
図７（Ｂ）に示す処理フローは、図７（Ａ）に示すプログラムが、まず、ステップＳ１において条件１の判定を行い、ステップＳ２において条件２の判定を行い、ステップＳ３において演算１を行い、ステップＳ４において条件２の判定を行い、ステップＳ５において演算１を行うことを示している。そして、ステップＳＮ（Ｎ：正の整数）において条件２の判定を行い、ステップＳＮ＋１において演算２を行い、ステップＳＮ＋２において、条件１の判定を行い、ステップＳＮ＋３において、条件２の判定を行い、以下、条件１，２が成立するまで上記処理が繰り返されることを示している。
【００５４】
図８は、コンフィグレーションデータのデータ構成例を示す図で、（Ａ）はデータ構成例、（Ｂ）はデータ例を示している。
図８（Ａ）に示すようにコンフィグレーションデータ６１は、モードビット、回路構成情報、および次実行予定の次ステート番号の領域に分かれている。
【００５５】
モードビットの領域には、動作モードを示す情報が格納される。例えば、動作モードは、図８（Ｂ）に示すように２ビットで表され、０，１で前回読み込んだコンフィグレーションデータをキャッシュする単キャッシュモードを示す。また、１，０でコンフィグレーションデータを先読みして、キャッシュ２５ａａ〜２５ａｃに格納する先読みモードを示す。なお、前記２つの動作モードは、一例であり、さらに複数の動作モードを設けることができる。例えば、連続してキャッシュする動作モードなどを設けることができる。
【００５６】
回路構成情報の領域には、図３で示した処理回路群３０の処理回路の構成を規定する情報が格納される。すなわち、処理回路群３０は、コンフィグレーションデータ６１の回路構成情報によって、回路構成が決まる。
【００５７】
次ステート番号の領域には、コンフィグレーションデータ６１が実行された場合、次に実行されるコンフィグレーションデータのステート番号が格納される。例えば、図７（Ｂ）に示した処理フローより、条件１の判定の次に実行されるコンフィグレーションデータのステート番号は、条件２のステート番号であることがわかる。よって、図８（Ｂ）に示すように、条件１のコンフィグレーションデータのモードビッドは、単キャッシュの動作モードが設定され、次ステート番号の領域には、条件２のステート番号が格納される。これによって、条件２のステートのコンフィグレーションがキャッシュ２５ａａ〜２５ａｃに格納されていれば、キャッシュヒットすることになる。
【００５８】
図７（Ｂ）に示した処理フローより、条件２の判定の次に実行されるコンフィグレーションデータのステート番号は、演算１または演算２であることがわかる。よって、図８（Ｂ）に示すように、条件２のコンフィグレーションデータのモードビットは、先読みモードが設定され、次ステート番号の領域には、演算１，２のステート番号が格納される。これによって、キャッシュ２５ａａ〜２５ａｃには、演算１，２のコンフィグレーションデータが先読みされる。
【００５９】
切替え条件信号に応じて、次には演算１または演算２が実行されることになるが、演算１，２はキャッシュ２５ａａ〜２５ａｃに先読みされているので、どちらが実行されても、高速に処理回路群３０を構成することができる。このように、先読みして演算１および演算２のコンフィグレーションデータがキャッシュ２５ａａ〜２５ａｃに格納されるので、条件２の結果によらず、ＲＡＭ２４にアクセスすることなく高速にコンフィグレーションデータを切替えることができる。
【００６０】
このように、コンフィグレーションデータにキャッシュの動作モードを格納するようにし、動作モードに応じて、キャッシュ動作を制御するように構成した。これによって、コンパイラが解析できるプログラムの動作予測の範囲において、コンパイラによるコンフィグレーションデータのキャッシュへの格納を判断可能にすることができる。
【００６１】
具体的には、コンパイラは、プログラムを解析して、どのような処理が行われるか把握することができるので、例えば、ループ記述による繰り返し行われる特定の処理に対して、自動でキャッシュ判定をし、動作モードを付加することができるようになる。そして、ユーザは意識することなく、最適な性能を得ることができる。
【００６２】
また、コンパイラによってキャッシュ判定されなかった部分は、ユーザによって制御することも可能である。例えば、コンパイルされたコンフィグレーションデータ６１のモードビットを操作することによって可能となる。
【００６３】
なお、ＣＰＵ４０の制御によって、キャッシュ動作を強制的にロックおよび解除することができる。また、連続的に行われるキャッシュ動作を停止させることができる。また、キャッシュ２５ａａ〜２５ａｃの全部および一部のみのコンフィグレーションデータをロックおよび解除することができる。さらに、強制的にコンフィグレーションデータをキャッシュ２５ａａ〜２５ａｃに格納することができる。
【００６４】
これは、例えば、図２で示したメモリマップ５０のコンフィグレーションデータ領域の一部に、ＣＰＵ４０が上記の設定をするための制御領域を設ける。ＣＰＵ４０が制御領域に所定の設定データを格納すると、シーケンス部２０は、制御領域の設定データに応じて、キャッシュ動作を制御する。例えば、上記で説明したキャッシュ２５ａａ〜２５ａｃの全部または一部をロックする。このように、キャッシュ２５ａａ〜２５ａｃをＣＰＵ４０から制御できるようにすることによって、例えば、デバック時にキャッシュ２５ａａ〜２５ａｃの内容を確認することができる。
【図面の簡単な説明】
【００６５】
【図１】本発明のプロセッサの原理図である。
【図２】プロセッサの概略を示したブロック図である。
【図３】図２のシーケンス部と処理回路群を示したブロック図である。
【図４】図３のシーケンス部の詳細なブロック図である。
【図５】図４の詳細なブロック図である。
【図６】図５の動作決定部の詳細なブロック図である。
【図７】コンフィグレーションデータを説明するためのプログラム例を示した図で、（Ａ）はプログラム例、（Ｂ）はプログラムの処理フローを示している。
【図８】コンフィグレーションデータのデータ構成例を示す図で、（Ａ）はデータ構成例、（Ｂ）はデータ例を示している。
【符号の説明】
【００６６】
１  コンフィグレーションデータ
２ａ〜２ｄ  処理回路
３  キャッシュ動作情報取得部
４  キャッシュ制御部
５  キャッシュ
６  記憶装置
【図１】
2006011705.tif 000003
【図２】
2006011705.tif 000004
【図３】
2006011705.tif 000005
【図４】
2006011705.tif 000006
【図５】
2006011705.tif 000007
【図６】
2006011705.tif 000008
【図７】
2006011705.tif 000009
【図８】
2006011705.tif 000010