(57)【要約】【課題】命令キャッシュにおける命令キャッシュコントローラに修正を加えることなく、命令キャッシュタグメモリへのアクセス回数を減らし、低消費電力化を図る。【解決手段】命令キャッシュ制御回路３１と、命令キャッシュタグメモリ３３と、命令キャッシュデータメモリ３４と、命令キャッシュ制御回路と命令キャッシュタグメモリの中間に位置し、命令キャッシュ制御回路から非分岐命令検出信号を供給されることなく、命令キャッシュ制御回路から命令キャッシュタグメモリへのアクセスのうちで命令キャッシュタグメモリアドレスが前回のアクセスと同じであるか否かをモニターし、その結果に応じて命令キャッシュタグメモリに対するアクセスの可否を制御する命令キャッシュタグアクセス制御回路３２を具備する。【選択図】　　図１
2004094807.tif 000002
【特許請求の範囲】
【請求項１】
命令キャッシュ制御回路と、
命令キャッシュタグメモリと、
命令キャッシュデータメモリと、
前記命令キャッシュ制御回路と命令キャッシュタグメモリの中間に位置し、前記命令キャッシュ制御回路から非分岐命令検出信号を供給されることなく、前記命令キャッシュ制御回路から命令キャッシュタグメモリへのアクセスのうちで命令キャッシュタグメモリアドレスが前回のアクセスと同じであるか否かをモニターし、その結果に応じて前記命令キャッシュタグメモリに対するアクセスの可否を制御する命令キャッシュタグアクセス制御回路
とを具備することを特徴とする命令キャッシュ。
【請求項２】
前記命令キャッシュタグアクセス制御回路は、
既存の前記命令キャッシュ制御回路との間および既存の命令キャッシュタグメモリとの中間で、前記命令キャッシュ制御回路と命令キャッシュタグメモリとの間のインターフェイスの変更を必要とせずに、前記命令キャッシュ制御回路と命令キャッシュタグメモリとの間のインターフェイスおよびプロトコルをエミュレートすることを特徴とする請求項１記載の命令キャッシュ。
【請求項３】
前記命令キャッシュタグアクセス制御回路は、
命令キャッシュに対する読み出し時の命令キャッシュタグメモリアドレスを保持するタグアドレスキャッシュと、
前記命令キャッシュタグメモリアドレスにより指定された前記命令キャッシュタグメモリからの読み出しデータを保持するタグデータキャッシュと、
命令キャッシュに対する読み出し時の命令キャッシュタグメモリアドレスと前記タグアドレスキャッシュに保持されている前回の読み出し時の命令キャッシュタグメモリアドレスを比較し、一致／不一致を検出する比較器と、
前記比較器の検出出力に基づいて前記命令キャッシュタグメモリに対するアクセスを制御する命令キャッシュタグメモリアクセス制御回路
を具備することを特徴とする請求項１または２記載の命令キャッシュ。
【請求項４】
前記命令キャッシュタグメモリアクセス制御回路は、
前記タグメモリキャッシュに保持されているデータまたは前記命令キャッシュタグメモリに保持されているデータを選択して前記命令キャッシュ制御回路へ出力するセレクタと、
前記比較器の一致検出出力に基づいて、前記命令キャッシュタグメモリに対するアクセスを禁止し、前記タグメモリキャッシュに保持されているデータを選択するように前記セレクタを制御し、前記比較器の不一致検出出力に基づいて、前記命令キャッシュタグメモリに対するアクセスを許可し、前記命令キャッシュタグメモリに保持されているデータを選択するように前記セレクタを制御するともに前記タグデータキャッシュへ書き込むように制御する論理回路
を具備することを特徴とする請求項３記載の命令キャッシュ。
【請求項５】
マイクロプロセッサ回路と同じ半導体チップ上に命令キャッシュが搭載されたマイクロプロセッサにおいて、前記命令キャッシュは、
命令キャッシュ制御回路と、
命令キャッシュタグメモリと、
命令キャッシュデータメモリと、
前記命令キャッシュ制御回路と命令キャッシュタグメモリの中間に位置し、前記命令キャッシュ制御回路から非分岐命令検出信号を供給されることなく、前記命令キャッシュ制御回路から命令キャッシュタグメモリへのアクセスのうちで命令キャッシュタグメモリアドレスが前回のアクセスと同じであるか否かをモニターし、その結果に応じて前記命令キャッシュタグメモリに対するアクセスの可否を制御する命令キャッシュタグアクセス制御回路
とを具備することを特徴とするマイクロプロセッサ。
【請求項６】
前記命令キャッシュタグアクセス制御回路は、
既存の前記命令キャッシュ制御回路との間および既存の命令キャッシュタグメモリとの中間で、前記命令キャッシュ制御回路と命令キャッシュタグメモリとの間のインターフェイスの変更を必要とせずに、前記命令キャッシュ制御回路と命令キャッシュタグメモリとの間のインターフェイスおよびプロトコルをエミュレートすることを特徴とする請求項５記載のマイクロプロセッサ。
【請求項７】
前記命令キャッシュタグアクセス制御回路は、
命令キャッシュに対する読み出し時の命令キャッシュタグメモリアドレスを保持するタグアドレスキャッシュと、
前記命令キャッシュタグメモリアドレスにより指定された前記命令キャッシュタグメモリからの読み出しデータを保持するタグデータキャッシュと、
命令キャッシュに対する読み出し時の命令キャッシュタグメモリアドレスと前記タグアドレスキャッシュに保持されている前回の読み出し時の命令キャッシュタグメモリアドレスを比較し、一致／不一致を検出する比較器と、
前記比較器の検出出力に基づいて前記命令キャッシュタグメモリに対するアクセスを制御する命令キャッシュタグメモリアクセス制御回路
を具備することを特徴とする請求項５または６記載のマイクロプロセッサ。
【請求項８】
前記命令キャッシュタグメモリアクセス制御回路は、
前記タグメモリキャッシュに保持されているデータまたは前記命令キャッシュタグメモリに保持されているデータを選択して前記命令キャッシュ制御回路へ出力するセレクタと、
前記比較器の一致検出出力に基づいて、前記命令キャッシュタグメモリに対するアクセスを禁止し、前記タグメモリキャッシュに保持されているデータを選択するように前記セレクタを制御し、前記比較器の不一致検出出力に基づいて、前記命令キャッシュタグメモリに対するアクセスを許可し、前記命令キャッシュタグメモリに保持されているデータを選択するように前記セレクタを制御するともに前記タグデータキャッシュへ書き込むように制御する論理回路
を具備することを特徴とする請求項７記載のマイクロプロセッサ。
【請求項９】
マイクロプロセッサに命令キャッシュを搭載設計する際、
チップサイズの小型化を低消費電力化よりも優先する場合には、命令キャッシュ制御回路と命令キャッシュタグメモリを配置設計し、両者間を直接に配線接続し、
低消費電力化をチップサイズの小型化より優先する場合には、命令キャッシュ制御回路と命令キャッシュタグメモリとの間に命令キャッシュタグアクセス制御回路を配置設計し、命令キャッシュ制御回路と命令キャッシュタグアクセス制御回路との間を配線接続し、命令キャッシュタグアクセス制御回路と命令キャッシュタグメモリとの間を配線接続することを特徴とするマイクロプロセッサの設計方法。
【請求項１０】
前記命令キャッシュタグアクセス制御回路は、
前記命令キャッシュ制御回路と命令キャッシュタグメモリの中間に位置し、命令キャッシュ制御回路から命令キャッシュタグメモリへのアクセスのうちで命令キャッシュタグメモリアドレスが前回のアクセスと同じであるか否かをモニターし、その結果に応じて前記命令キャッシュタグメモリに対するアクセスの可否を制御する命令キャッシュタグアクセス制御回路を具備することを特徴とする請求項９記載のマイクロプロセッサの設計方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、命令キャッシュおよびそれを搭載したマイクロプロセッサ（ＭＰＵ）ならびにその設計方法に係り、特にＭＰＵの低消費電力化を図る回路および手法に関するもので、例えばコンフィギュラブル・プロセッサ（Ｃｏｎｆｉｇｕｒａｂｌｅ　Ｐｒｏｃｅｓｓｏｒ）などに適用されるものである。
【０００２】
【従来の技術】
近年、例えば３２ビットの一般的なＭＰＵでは、低速なメインメモリに対するメモリ・アクセス・レーテンシを低減するために、少容量ではあるが高速な記憶装置である命令キャッシュが搭載されている。このようなＭＰＵは、メインメモリにある命令を高速に実行する際に、それ以前にメインメモリから読み出した命令を命令キャッシュ（オン・チップ命令キャッシュ）に一時的に蓄えておき、再び同一命令を読み出す際には、メインメモリからではなく、命令キャッシュ内に一時蓄えていた命令を使用する手続きを踏む場合が多い。
【０００３】
図２は、ＭＰＵに搭載されている命令キャッシュに外部のメインメモリ上の命令コードが格納されている様子を示す。
【０００４】
命令キャッシュに蓄えられるデータは、メインメモリ上の命令コードの位置から生成したアドレス（Ａｄｄｒ）をインデックス（Ｉｎｄｅｘ）　として、命令コード（キャッシュデータ）と、このキャッシュデータ（Ｃａｃｈｅ　Ｄａｔａ）のメインメモリ上の位置と有効無効を示すフラグがセットになっている。ここで、命令キャッシュの容量の制限と利用の効率化から、１つのインデックスには、１つのタグ（Ｔａｇ）　とメインメモリ上の連続した一定量の領域が対応している。
【０００５】
図８は、従来のＭＰＵに搭載された命令キャッシュの一例を示す。
【０００６】
命令キャッシュは、命令キャッシュコントローラ８１、命令キャッシュデータメモリ８２、命令キャッシュタグメモリ８３、ヒット／ミス判定回路（比較器）８４を備えている。
【０００７】
この命令キャッシュにおいて、命令キャッシュデータメモリ８２、命令キャッシュタグメモリ８３、ヒット／ミス判定回路８４は、ＭＰＵ内に設けられたフェッチカウンタ（図示せず）から命令キャッシュコントローラ８１を介して供給されるアクセスアドレスのうちのそれぞれ一部のビット信号が入力される。
【０００８】
前記命令キャッシュデータメモリ８２は、図２に示すように、連続したアクセスアドレスを有する複数のワード（本例では、１ワードは３２ビットであり、１つの命令の単位を示している）を格納するためのキャッシュラインを複数備えて構成されている。そして、ＭＰＵより入力されたアクセスアドレスに応じて読み出しデータを出力する。
【０００９】
前記命令キャッシュタグメモリ８３は、命令キャッシュデータメモリ８２のキャッシュライン毎に、各キャッシュラインが格納しているワードを特定するのに必要なデータを格納している。そして、ＭＰＵからのデータ読み出し要求により命令キャッシュコントローラ８１から入力されるメモリイネーブル（ＭＥＭＯＲＹ　Ｅｎａｂｌｅ）　信号がアクティブになると、入力されたアクセスアドレスに応じてデータが読み出される。
【００１０】
前記ヒット／ミス判定回路８４は、命令キャッシュタグメモリ８３から読み出されたアドレス入力とＭＰＵから入力されたアクセスアドレスを比較し、一致／不一致を判定（前記アクセスアドレスを有するワードが命令キャッシュデータメモリ８２内に格納されているか否かを判定）し、判定結果をヒット／ミス判別信号として生成する。このヒット／ミス判定回路８４の動作と平行して、命令キャッシュデータメモリ８２からキャッシュデータ（命令）が読み出され、命令キャッシュコントローラ８１へ出力される。
【００１１】
命令キャッシュコントローラ８１は、ヒット／ミス判定回路８４からのヒット／ミス判別信号に応じて、命令キャッシュデータメモリ８２から読み出されたキャッシュデータをＭＰＵの命令フェッチレジスタへ取り込むかどうかを決定する。
【００１２】
上記したように命令キャッシュは、命令としての３２ビットの読み出しデータと、命令キャッシュがヒットしたか否かをあらわす１ビットのヒット／ミス判別信号をＭＰＵへ出力する。
【００１３】
ヒットの場合には、ＭＰＵは、命令キャッシュデータメモリ８２からのデータを取り込み、ミスの場合には命令キャッシュデータメモリ８２からのデータを取り込まない。
【００１４】
ミスの場合は、命令キャッシュからメインメモリ（図示せず）へアクセスアドレスが出力され、メインメモリから命令としての３２ビットのデータが読み出されて命令キャッシュへ出力される。
【００１５】
図９は、ＭＰＵが図８に示した従来の命令キャッシュから実行命令を得るまでの動作フローを示す。
【００１６】
ＭＰＵにおける命令キャッシュ読み出し時に、データ読み出し要求により命令キャッシュの読み出し処理を開始（Ｓｔａｒｔ）　すると、ＭＰＵが命令キャッシュから読み出そうとするアドレスから命令キャッシュのインデックス番号を作る。次に、インデックス番号から対応するデータを得る。
【００１７】
次に、インデックスされたキャッシュデータが有効か否かを判定する。この結果、有効でない（Ｎ）と判定すれば、メインメモリから命令を読み出す処理に移行し、命令キャッシュの読み出し処理を終了（ＥＮＤ）　する。
【００１８】
これに対して、キャッシュデータが有効である（Ｙ）と判定すれば、キャッシュデータと命令キャッシュから読み出そうとするアドレスが同一か否かを判定する。この結果、同一である（Ｙ）と判定すれば、命令キャッシュから命令を読み出す処理に移行し、命令キャッシュの読み出し処理を終了（ＥＮＤ）　する。これに対して、同一でない（Ｎ）と判定すれば、メインメモリから命令を読み出す処理に移行し、命令キャッシュの読み出し処理を終了（ＥＮＤ）　する。
【００１９】
図９に示すＳｔａｒｔ　からＥＮＤ　までの処理は、ＭＰＵが命令を１つ実行する度に繰り返され、この処理中で二重線で囲んだ部分（インデックス番号からタグデータを得る処理、キャッシュメモリからの命令を読み出す処理、メインメモリからの命令を読み出す処理）は電力を大量に消費する動作である。
【００２０】
ところで、ＭＰＵの実行命令の大部分は、分岐命令以外の命令（非分岐命令）である。ここで、分岐命令とは、ジャンプ命令や、サブルーチンを呼び出す命令や、割り込み命令などのプロセッサ１４内のフェッチカウンタが飛ぶような命令の総称である。
【００２１】
ＭＰＵが非分岐命令を実行している際には、メインメモリに格納されている命令コードを順番に実行するので、同一のインデックスで命令キャッシュタグメモリを繰り返し読み出す。
【００２２】
例えば図２に示した命令コードの例では、Ｃｏｄｅ００からＣｏｄｅ１１まで連続に命令を実行する際、タグメモリを読み出す際のインデックスは　ＢＢＢＢＣＣＣＣＤＤＤＤ　となる。この際、同一のインデックスでアクセスした場合も同一動作を繰り返しており、この繰り返し動作が消費電力の増大の原因になっていた。
【００２３】
【発明が解決しようとする課題】
上記したように従来のＭＰＵは、実行命令の大部分を占める非分岐命令を実行している場合、命令キャッシュの読み出しに先立って読み出されるタグメモリのアドレスは同一であるにも拘らず、命令キャッシュの読み出し毎にタグメモリの読み出しを行なうので、無駄な電力を消費するという問題があった。
【００２４】
命令キャッシュの消費電力の増大を抑制するように、特開２０００−２００２１７の「命令キャッシュメモリ」により、ＭＰＵにおいて分岐命令が検出された場合に生成される分岐命令検出信号を用いて命令キャッシュのタグメモリの動作を制御することが提案されている。
【００２５】
本発明は、上記提案とは異なる手法として命令キャッシュタグメモリに対してもキャッシングを行なうことにより、従来の命令キャッシュコントローラに修正を加えることなく、命令キャッシュタグメモリへのアクセス回数を減らし、低消費電力化を図ることができ、設計の柔軟な対応が可能となる命令キャッシュおよびそれを搭載したマイクロプロセッサを提供することを目的とする。
【００２６】
また、本発明の他の目的は、オン・チップ命令キャッシュの低消費電力化を選択的に可能とし、コンフィギュラブル・プロセッサに適用して有効なマイクロプロセッサの設計方法を提供することにある。
【００２７】
【課題を解決するための手段】
本発明のマイクロプロセッサは、命令キャッシュ制御回路と、命令キャッシュタグメモリと、命令キャッシュデータメモリと、前記命令キャッシュ制御回路と命令キャッシュタグメモリの中間に位置し、前記命令キャッシュ制御回路から非分岐命令検出信号を供給されることなく、前記命令キャッシュ制御回路から命令キャッシュタグメモリへのアクセスのうちで命令キャッシュタグメモリアドレスが前回のアクセスと同じであるか否かをモニターし、その結果に応じて前記命令キャッシュタグメモリに対するアクセスの可否を制御する命令キャッシュタグアクセス制御回路を具備することを特徴とする。
【００２８】
また、本発明のマイクロプロセッサは、同一の半導体チップ上に、命令キャッシュ制御回路と、命令キャッシュタグメモリと、命令キャッシュデータメモリと、前記命令キャッシュ制御回路と命令キャッシュタグメモリの中間に位置し、命令キャッシュ制御回路から命令キャッシュタグメモリへのアクセスのうちで命令キャッシュタグメモリアドレスが前回のアクセスと同じであるか否かをモニターし、その結果に応じて前記命令キャッシュタグメモリに対するアクセスの可否を制御する命令キャッシュタグアクセス制御回路とを具備する命令キャッシュが搭載されたことを特徴とする。
【００２９】
また、本発明のマイクロプロセッサの設計方法は、マイクロプロセッサに命令キャッシュを搭載設計する際、チップサイズの小型化を低消費電力化よりも優先する場合には、命令キャッシュ制御回路と命令キャッシュタグメモリを配置設計し、両者間を直接に配線接続し、低消費電力化をチップサイズの小型化より優先する場合には、命令キャッシュ制御回路と命令キャッシュタグメモリとの間に命令キャッシュタグアクセス制御回路を配置設計し、命令キャッシュ制御回路と命令キャッシュタグアクセス制御回路との間を配線接続し、命令キャッシュタグアクセス制御回路と命令キャッシュタグメモリとの間を配線接続することを特徴とする。
【００３０】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【００３１】
＜第１の実施形態＞
図１は、本発明の第１の実施形態に係る命令キャッシュを搭載したＭＰＵ１０と外部のメインメモリ２１との接続関係を概略的に示す図である。
【００３２】
このＭＰＵ１０は、ＭＰＵ回路と同一半導体チップにデータキャッシュ２０および命令キャッシュ３０が搭載されている。
【００３３】
ＭＰＵ回路は、命令フェッチレジスタなどを含むコード・プリフェッチ・ユニット１１と、このコード・プリフェッチ・ユニット１１からの命令コードをデコードし、各種の制御信号を生成する命令デコード・ユニット１２と、この命令デコード・ユニット１２からの制御信号により制御され、各種の算術・論理演算処理を行なう演算回路（ＡＬＵ）を含む実行ユニット１３と、この実行ユニット１３と外部との間でインターフェイスの役割を有する制御ユニット１４と、外部バスとの間でインターフェイスの役割を有するバス・ユニット１５と、前記実行ユニット１３やバス・ユニット１５との間でデータを授受するメモリ管理ユニット１６などを含む。このメモリ管理ユニット１６によりデータキャッシュ２０を管理している。
【００３４】
前記命令キャッシュ３０は、命令キャッシュ制御回路（命令キャッシュコントローラ）３１、命令キャッシュタグアクセス制御回路（命令キャッシュタグアクセスコントローラ）３２、命令キャッシュタグメモリ３３、命令キャッシュデータメモリ３４、ヒット／ミス判定回路３５などからなる。なお、上記命令キャッシュタグメモリ３３と命令キャッシュデータメモリ３４は、通常、ＳＲＡＭが用いられる。
【００３５】
上記命令キャッシュタグアクセスコントローラ３２、命令キャッシュタグメモリ３３、命令キャッシュデータメモリ３４、ヒット／ミス判定回路３５は、ＭＰＵ内に設けられたフェッチカウンタ（図示せず）から供給されるアクセスアドレスのうちのそれぞれ一部のビット信号が命令キャッシュコントローラ３１を介して入力される。
【００３６】
図２は、図１のＭＰＵ１０に搭載されている命令キャッシュ３０に外部のメインメモリ２１上の命令コードが格納されている様子の一例を示す。
【００３７】
命令キャッシュに蓄えられるデータとして、メインメモリ上の命令コードの位置から生成したアドレスをインデックスとして、命令コード（キャッシュデータ）と、このキャッシュデータのメインメモリ上の位置と有効無効を示すフラグがセットになっている。ここで、命令キャッシュの容量の制限と利用の効率化から、１つのインデックスには、１つのタグとメインメモリ上の連続した一定量の領域が対応している。
【００３８】
図１中の命令キャッシュ３０に蓄えられるデータは、図２に示したように、メインメモリ２１上の命令コードの位置から生成したアドレスをインデックスとして、命令コード（キャッシュデータ）と、このキャッシュデータのメインメモリ２１上の位置と有効無効を示すフラグがセットになっている。
【００３９】
図３は、図１中の命令キャッシュ３０の一部を取り出して詳細に示している。
【００４０】
本実施形態の命令キャッシュ３０は、命令キャッシュタグメモリ（Ｔａｇ　Ｍｅｍｏｒｙ）３２に対してもキャッシングを行なうように構成されており、従来の命令キャッシュに対して、その命令キャッシュコントローラ（Ｉ−Ｃａｃｈｅ　Ｃｏｎｔｒｏｌｌｅｒ）３１　と命令キャッシュタグメモリ３３の間に命令キャッシュタグアクセスコントローラ（Ｉ−ＣａｃｈｅＴａｇ　Ａｃｃｅｓｓ　Ｃｏｎｔｒｏｌｌｅｒ）３２が挿入付加されたものである。
【００４１】
この場合、命令キャッシュタグアクセスコントローラ３２は、既存の命令キャッシュコントローラ３１との間および既存の命令キャッシュタグメモリ３３との間で、両者３１，３３間のインターフェイスの変更を必要とせずに、インターフェイスおよびプロトコルをエミュレートするように構成されている。
【００４２】
上記命令キャッシュタグアクセスコントローラ３２の一例は、命令キャッシュ３０に対する読み出し時の命令キャッシュタグメモリアドレスを保持するタグアドレスキャッシュ（Ｔａｇ　Ａｄｄｒ．　Ｃａｃｈｅ）３２１と、前記読み出し時の命令キャッシュタグメモリアドレスにより指定された命令キャッシュタグメモリ３３からの読み出しデータを保持するタグデータキャッシュ（Ｔａｇ　Ｄａｔａ　Ｃａｃｈｅ）３２２　と、前記タグアドレスキャッシュ３２１　に保持されている命令キャッシュタグメモリアドレスと命令キャッシュ３０に対する新たな読み出し時の命令キャッシュタグメモリアドレスとを比較し、一致／不一致を検出する比較器（Ｃｍｐ．）３２３　と、命令キャッシュタグメモリアクセス制御部を具備する。
【００４３】
上記命令キャッシュタグメモリアクセス制御部は、比較器３２３　の検出出力に基づいて命令キャッシュタグメモリ３３に対するアクセスを制御するように構成されている。即ち、比較器３２３　からの一致検出出力に基づいて、命令キャッシュタグメモリ３３に対するアクセスを省略し、タグデータキャッシュ３２２　に保持されているデータ（命令キャッシュ３０に対する前回の読み出し時の命令キャッシュタグメモリアドレスにより指定された命令キャッシュタグメモリ３３の内容）を命令キャッシュコントローラ３１へ出力する。
【００４４】
これに対して、比較器３２３　からの不一致検出出力に基づいて、命令キャッシュタグメモリ３３に対するアクセスを行い、命令キャッシュタグメモリ３３の内容を読み出して命令キャッシュコントローラ３１へ出力する。
【００４５】
次に、命令キャッシュタグメモリアクセスコントローラ３２の一具体例を説明する。
【００４６】
この命令キャッシュタグメモリアクセスコントローラ３２は、命令キャッシュタグメモリ読み出しの際のアドレス値（ＭＰＵ内に設けられたフェッチカウンタから供給されるアクセスアドレス信号のうちの一部のビット信号）とそのアドレスのタグデータを一時保存するバッファであるタグキャッシュ３２０　と、命令キャッシュタグメモリ３３を読み出す必要があるか否かの判断を行なうために比較器３２３　と、インバータ回路３２４　と、二入力のアンド回路３２５　と、タグデータセレクタ（Ｔａｇ　Ｄａｔａ　Ｓｅｌｅｃｔｏｒ）３２６が設けられている。
【００４７】
前記タグキャッシュ３２０　は、ＭＰＵが命令を得るために最後に命令キャッシュタグメモリ３３を読み出した際のタグアドレスが保存されるタグアドレスキャッシュ３２１　と、そのアドレスのタグデータが保存されるタグデータキャッシュ３２２　からなり、これら）　は、それぞれ例えばフリップフロップ回路群からなる。
【００４８】
前記比較器３２３　は、命令キャッシュタグメモリ読み出しの際のアドレス値が一方の入力端に入力され、前記タグアドレスキャッシュ３２１　から読み出されたタグアドレスが他方の入力端に入力され、両入力を比較し、一致（Ｈｉｔ　）／不一致（Ｍｉｓｓ）に応じて論理レベルが異なる出力信号を生成する。この比較器３２３　は、例えば排他的オア回路群からなる。
【００４９】
上記比較器３２３　の出力信号は、インバータ回路３２４　を介してアンド回路３２５　の一方の入力端に入力され、このアンド回路３２５　の他方の入力端に命令キャッシュコントローラ３１からメモリイネーブル信号が入力され、このアンド回路３２５　の出力信号は命令キャッシュタグメモリ３３の制御信号（Ｍｅｍｏｒｙ　Ｅｎａｂｌｅ）　として入力される。この場合、上記インバータ回路３２５　の出力信号は、タグデータキャッシュ３２２　のライトイネーブル（Ｗｒｉｔｅ　Ｅｎｂ）　信号として入力され、命令キャッシュタグメモリ３３からの読み出しデータをタグデータキャッシュ３２２　に書き込むか否かを制御する。
【００５０】
前記タグデータセレクタ３２６　は、タグデータキャッシュ３２２　からの読み出しデータと命令キャッシュタグメモリ３３からの読み出しデータを、前記比較器３２３　の出力信号（ヒット／ミス判別信号）に応じて選択し、前記命令キャッシュコントローラ３１へ出力するものである。
【００５１】
図４は、図３の命令キャッシュタグメモリに対するアクセス動作における命令キャッシュタグアクセスコントローラ３２の動作フローを示している。
【００５２】
図５は、図１のＭＰＵにおける命令キャッシュ読み出し時に命令キャッシュから実行命令を得るまでの動作フローを示しており、図４の動作フローを一部に含んでいる。
【００５３】
次に、図１のＭＰＵにおける命令キャッシュ読み出し時の動作について、図３乃至図５を参照しながら説明する。
【００５４】
ＭＰＵにおける命令キャッシュ読み出し時に、データ読み出し要求により命令キャッシュタグメモリ３３から指定アドレスのタグデータが読み出しが開始される。
【００５５】
この際、命令キャッシュタグメモリ３３に供給されるアドレス値とタグアドレスキャッシュ３２１　から読み出されるタグアドレスが前記比較器３２３　で比較される。この際、一致が検出されれば、タグデータキャッシュ３２２　のデータを使用でき、命令キャッシュタグメモリ３３からの読み出しが不要と判断して”Ｈ”　レベルのヒット判別信号が出力される。これに対して、不一致が検出されれば、タグデータキャッシュ３２２　のデータは使用できないので命令キャッシュタグメモリ３３からの読み出しが必要と判断して”Ｌ”　レベルのミス判別信号が出力される。
【００５６】
前記”Ｈ”　レベルのヒット判別信号が出力されると、インバータ回路３２５　の出力信号が”Ｌ”　レベルになってタグデータキャッシュ３２２　への書き戻しが禁止された状態になり、さらに、アンド回路３２５　の出力信号が”Ｌ”　レベルになって命令キャッシュタグメモリ３３からの読み出しが禁止される。
【００５７】
前記”Ｌ”　レベルのミス判別信号が出力されると、インバータ回路３２５　の出力信号が”Ｈ”　レベルになってタグデータキャッシュ３２２　への書き戻しが許可された状態になり、さらに、命令キャッシュコントローラ３１から入力されるメモリイネーブル信号がアクティブの期間にアンド回路３２５　の出力信号が”Ｈ”　レベルになって命令キャッシュタグメモリ３３からの読み出しが行われる。
【００５８】
そして、前記比較器３２３　の結果に応じて、タグデータキャッシュ３２２　からのデータ、または、命令キャッシュタグメモリ３３からのデータがタグデータセレクタ３２６　により選択されて出力される。
【００５９】
さらに、上記したように命令キャッシュタグメモリアクセスコントローラ３２から出力されたタグアドレスと、ＭＰＵ内に設けられたフェッチカウンタ（図示せず）から供給される命令キャッシュタグメモリ読み出しのためのアドレスが、キャッシュ制御信号生成用のヒット／ミス判定回路３５で比較される。このヒット／ミス判定回路３５は、２つのアドレス入力を比較し、一致／不一致に応じてヒット／ミス判別信号をキャッシュ制御信号として生成する。このヒット／ミス判定回路３５の動作と平行して、キャッシュデータメモリ３４からキャッシュデータ（命令）が読み出され、命令キャッシュコントローラ３１へ出力される。
【００６０】
命令キャッシュコントローラ３１は、前記キャッシュ制御信号生成用のヒット／ミス判定回路３５のヒット／ミス判別信号がヒットかミスかによって、キャッシュデータメモリ３４から読み出されたキャッシュデータを命令フェッチレジスタへ取り込むかどうかを決定する。即ち、ヒットしていればキャッシュデータメモリ３４からのデータを取り込み、ミスしていればキャッシュデータメモリ３４からのデータを取り込まない。ミスの場合は、メモリアクセスコントローラはメインメモリ２１へアクセスする。
【００６１】
即ち、上記実施形態において、命令キャッシュタグアクセスコントローラ３２は、タグメモリ読み出しの際のアドレス値とそのアドレスのタグデータを一時保存するバッファであるタグキャッシュ３２０　を導入している。このタグキャッシュ３２０は、最後にタグメモリを読み出した際のタグアドレスが保存されるタグアドレスキャッシュ３２１　と、そのアドレスのタグデータが保存されるタグデータキャッシュ３２２　から成る。
【００６２】
上記タグアドレスキャッシュ３２１　の出力側には、タグメモリを読み出す必要があるか否かの判断を行なうために、命令キャッシュ読み出し時のタグアドレスを比較する比較器３２３　が接続されている。この比較器３２３　において、一致が検出されなければタグキャッシュのデータは使用できないと判断し、タグメモリ３３への読み出し動作を行い、一致が検出されればタグキャッシュのデータを使用でき、タグメモリ３３からの読み出しが不要と判断する。
【００６３】
そして、上記比較器３２３　の結果に応じて、タグデータセレクタ３２６　により、タグメモリ３３からのデータまたはタグキャッシュ３２０　からのデータを選択する。
【００６４】
次に、上記実施形態による効果を説明する。
【００６５】
ＭＰＵが命令キャッシュに対して命令を要求する際、命令キャッシュコントローラ３１は命令キャッシュタグメモリ３３を参照し、その内容から命令キャッシュ３０または外部メモリ（メインメモリ２１）にアクセスを行なう。このシーケンスの中で、命令キャッシュタグメモリ３３は命令毎にアクセスされるが、ＭＰＵの命令の大きな部分を占める非分岐命令では命令はアドレス順に実行されるので、ＭＰＵの命令キャッシュタグメモリ３３に対するアクセスは同一のアドレスに対して行なわれることが多い。
【００６６】
この際、ＭＰＵから命令キャッシュ３０の読み出しに先立って行なわれる命令キャッシュタグメモリ３３の読み出し時に、命令キャッシュタグメモリアドレスが前回に命令キャッシュタグメモリ３３を読み出した際のアドレスと同一であれば、命令キャッシュタグアクセスコントローラ３２は、タグキャッシュ３２０　のデータを命令キャッシュタグメモリ３３のデータに代えて選択する。
【００６７】
即ち、図２を参照して前述したインデックス番号からタグデータを取得するフローは、図４および図５のフロー中に示したように、インデックスが変化した直後は経路▲１▼であるが、同一のインデックスを使用する間は経路▲２▼になるので、大電力を消費する命令キャッシュタグメモリアクセスを省略することが可能になる。
【００６８】
したがって、上記実施形態によれば、図５を参照して前述したフローにおいて、大電力を消費する命令キャッシュタグメモリ３３へのアクセス回数を減らし、ＭＰＵの低消費電力化を図ることができる。
【００６９】
なお、図２に示したように命令キャッシュ３０に格納されている１つのインデックスに対応する１キャッシュラインサイズは、通常は命令キャッシュの容量やヒット率により決められるが、本発明においては、１キャッシュラインサイズが大きいほど有効である。
【００７０】
また、前記命令キャッシュタグアクセスコントローラ３２は、命令キャッシュタグメモリ３３に対するアクセスが必要か否（省略可能）かを判定する回路が内蔵されており、既存の命令キャッシュコントローラ３１との間および既存の命令キャッシュタグメモリ３３との間で、両者間のインターフェイスの変更を必要とせずに、両者間のプロトコルをエミュレートする。
【００７１】
したがって、本発明に係る命令キャッシュタグアクセスコントローラ３２は、既存の命令キャッシュコントローラ３１や命令キャッシュタグメモリ３３に特別な回路を追加することを不要とせず、既存の回路へ選択的に付加し、あるいはそれを削除することが容易に可能であり、設計の柔軟な対応が可能となる。
【００７２】
このことは、最近のＭＰＵの設計方法の１つとして提案されているコンフィギュラブル・プロセッサ（Ｃｏｎｆｉｇｕｒａｂｌｅ　Ｐｒｏｃｅｓｓｏｒ）に本発明を適用でき、オン・チップ命令キャッシュの低消費電力化が選択的に可能になることを意味する。
【００７３】
コンフィギュラブル・プロセッサは、ＭＰＵの構成要素となり得る機能を予めＩＰ（インテレクチュアル・プロパティ）として自動配置配線設計ツールのライブラリに登録しておき、ユーザの仕様あるいはメーカの設計者の意図などに応じて、所望のＩＰを組み合わせて所望の構成を実現する手法である。
【００７４】
図６は、コンフィギュラブル・プロセッサの設計に際して本発明のＭＰＵの設計方法の一例を適用した場合を示すフローチャートである。
【００７５】
図７（ａ）および（ｂ）は、図６の設計方法により、ＭＰＵチップ上で既存の命令キャッシュコントローラ３１と命令キャッシュタグメモリ３３との間に、命令キャッシュタグアクセスコントローラ３２を選択的に付加できることを示している。
【００７６】
図６に示すように、コンフィギュラブル・プロセッサの設計に際して、ＭＰＵに命令キャッシュを搭載するか否かを判断し、搭載する場合（Ｙ）は、命令キャッシュの構造、マッピング方式（ダイレクトマッピング方式、セットアソシアティブマッピング方式、フルアソシアティブマッピング方式など）、データおよびタグのサイズなどを決定し、所要の回路を追加する。
【００７７】
次に、命令キャッシュタグアクセスコントローラ３２を付加するか否かを判断し、付加しない場合（Ｎ）は、図６（１）中に示したように、命令キャッシュコントローラ３１と命令キャッシュタグメモリ３３を配置設計し、両者間を直接に配線接続する。この場合は、付加する場合よりもチップサイズの小型化が可能になる。
【００７８】
これに対して、付加する場合（Ｙ）は、図６（ｂ）中に示したように、命令キャッシュコントローラ３１と命令キャッシュタグメモリ３３との間に命令キャッシュタグアクセスコントローラ３２を配置設計し、命令キャッシュコントローラ３１と命令キャッシュタグアクセスコントローラ３２との間を配線接続し、命令キャッシュタグアクセスコントローラ３２と命令キャッシュタグメモリ３３との間を配線接続する。この場合は、前述したように低消費電力化が可能になる。
【００７９】
なお、前記命令キャッシュコントローラ３１と命令キャッシュタグアクセスコントローラ３２をＭＰＵと同一チップ上に搭載し、命令キャッシュタグメモリ３３と命令キャッシュデータメモリ３４をＭＰＵ外部に設けるように変更することも可能である。
【００８０】
【発明の効果】
上述したように本発明の命令キャッシュおよびそれを搭載したマイクロプロセッサによれば、従来の命令キャッシュコントローラに修正を加えることなく、命令キャッシュタグメモリへのアクセス回数を減らし、低消費電力化を図ることができ、設計の柔軟な対応が可能となる。
【００８１】
また、本発明のマイクロプロセッサの設計方法は、オン・チップ命令キャッシュの低消費電力化を選択的に可能とし、コンフィギュラブル・プロセッサに適用して有効である。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係る命令キャッシュを搭載したＭＰＵと外部のメインメモリとの接続関係を概略的に示す図。
【図２】図１のＭＰＵに搭載されている命令キャッシュに外部のメインメモリ上の命令コードが格納されている様子を示す図。
【図３】図１中の命令キャッシュの一部を取り出して詳細に示す回路図。
【図４】図３の命令キャッシュタグメモリに対するアクセス動作における命令キャッシュタグアクセスコントローラの動作フローを示す図。
【図５】図１のＭＰＵにおける命令キャッシュ読み出し時に命令キャッシュから実行命令を得るまでの動作フローを示す図。
【図６】コンフィギュラブル・プロセッサの設計に際して本発明のＭＰＵの設計方法の一例を適用した場合を示すフローチャート。
【図７】図６の設計方法により、ＭＰＵチップ上で既存の命令キャッシュコントローラと命令キャッシュタグメモリとの間に命令キャッシュタグアクセスコントローラを選択的に付加できることを示すブロック図。
【図８】従来のＭＰＵに搭載された命令キャッシュの一例を示すブロック図。
【図９】従来のＭＰＵが命令キャッシュから実行命令を得るまでの動作フローを示す図。
【符号の説明】
１０…ＭＰＵ、
１１…コード・プリフェッチ・ユニット、
１２…命令デコード・ユニット、
１３…実行ユニット、
１４…制御ユニット、
１５…バス・ユニット、
１６…メモリ管理ユニット、
２０…データキャッシュ、
２１…メインメモリ、
３０…命令キャッシュ、
３１…命令キャッシュコントローラ、
３２…命令キャッシュタグアクセスコントローラ、
３３…命令キャッシュタグメモリ、
３４…命令キャッシュデータメモリ、
３５…ヒット／ミス判定回路。
【図１】
2004094807.tif 000003
【図２】
2004094807.tif 000004
【図３】
2004094807.tif 000005
【図４】
2004094807.tif 000006
【図５】
2004094807.tif 000007
【図６】
2004094807.tif 000008
【図７】
2004094807.tif 000009
【図８】
2004094807.tif 000010
【図９】
2004094807.tif 000011