(57)【特許請求の範囲】
【請求項１】
命令を実行する中央処理装置と、前記命令をプリフェッチする命令プリフェッチバッファと、プリフェッチされた命令を保持する命令キャッシュメモリと、命令フェッチの指令に対して命令フェッチアドレスに応ずる命令を前記プリフェッチバッファ、命令キャッシュメモリ、又は外部から取得する制御を行い、命令プリフェッチの指令に対して命令プリフェッチアドレスに応ずる命令を外部から前記プリフェッチバッファに取得する制御を行うキャッシュ及びプリフェッチ制御回路と、割込み要求を受け付けたとき、当該要求に応答するための処理プログラムの先頭アドレス情報に基づいて命令プリフェッチバッファに命令をプリフェッチさせる指示を上記キャッシュ及びプリフェッチ制御回路に与える割込み制御回路と、前記中央処理装置に前記命令キャッシュメモリから命令を供給するか前記命令プリフェッチバッファから命令を供給するかを選択する選択回路を備え、前記命令プリフェッチバッファは、前記キャッシュデータ部の一つのデータブロックの命令語数に等しい語数の命令を一つのデータブロックとして格納可能なバッファデータ部と、バッファデータ部の命令とその命令アドレスとを関連付けるためのバッファアドレス部と、命令アクセスアドレスの一部がバッファアドレス部のアドレス情報に一致するか否かを検出するバッファ比較回路とを備え、前記選択回路は、前記割り込みを受け付けた際に、前記処理プログラムの先頭アドレス情報に対応する命令が前記キャッシュメモリに格納されている場合、前記キャッシュメモリを選択し、前記処理プログラムの先頭アドレス情報に対応する命令が前記命令キャッシュメモリに格納されておらず、且つ、前記命令プリフェッチバッファにも格納されていなかった場合、前記キャッシュ及びプリフェッチ制御回路は、前記命令プリフェッチアドレスに応ずる命令を外部から前記プリフェッチバッファに取得するように制御し、且つ、前記選択回路は、対応する命令が前記プリフェッチバッファに格納された時点で、前記プリフェッチバッファを選択して前記中央処理装置に当該命令を転送し、さらに、前記キャッシュ及びプリフェッチ制御回路は、その後、再び当該命令をプリフェッチさせる指示が前記キャッシュ及びプリフェッチ制御回路に与えられた際に、前記バッファ比較回路における一致の比較結果を検出した時点で、前記命令プリフェッチバッファに格納されていた当該命令を前記命令キャッシュメモリに書き込み制御することを特徴とするデータ処理装置。
【請求項２】
前記割込み制御回路からの割込み受け付けの通知を中央処理装置が受け付けてから当該中央処理装置が当該割込み要求に応答する処理プログラムの実行開始に至るまでの遷移制御期間に中央処理装置の内部状態の退避に利用されるデータ記憶手段を更に備え、全体として一つの半導体基板に形成されて成るものであることを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記データ記憶手段はデータキャッシュメモリであり、当該データキャッシュメモリと外部との間にライトバックバッファとを備えて成るものであることを特徴とする請求項２記載のデータ処理装置。
【請求項４】
前記割込み制御回路は、これが受け付けた割込み要求に応答するための処理プログラムの先頭アドレス情報をアドレスレジスタに供給し、前記キャッシュ及びプリフェッチ制御回路は、前記アドレスレジスタに保持されたアドレス情報に基づいて命令プリフェッチを行うものであることを特徴とする請求項１乃至３の何れか１項記載のデータ処理装置。
【請求項５】
前記割込み制御回路は、割込み要求に応答するための処理プログラムの先頭アドレス情報を割込み要因に対応させて記憶するテーブルを備え、割込み要求を受け付けたとき、当該要求の要因に応ずるアドレス情報を当該テーブルから前記アドレスレジスタに供給するものであることを特徴とする請求項４記載のデータ処理装置。
【請求項６】
前記割込み制御回路は更に、受け付けられた割込み要求元の周辺回路から、割込み要求に応答するための処理プログラムの先頭アドレス情報を受け、これを前記アドレスレジスタに与えるものであることを特徴とする請求項５記載のデータ処理装置。
【請求項７】
前記テーブルは前記中央処理装置によって書き換え可能にされて成るものであることを特徴とする請求項５又は６記載のデータ処理装置。
【請求項８】
命令を実行する中央処理装置と、前記命令をプリフェッチする命令プリフェッチバッファと、プリフェッチされた命令を保持する命令キャッシュメモリと、命令フェッチの指令に対して命令フェッチアドレスに応ずる命令を前記プリフェッチバッファ、命令キャッシュメモリ、又は外部から取得する制御を行い、命令プリフェッチの指令に対して命令プリフェッチアドレスに応ずる命令を外部から前記プリフェッチバッファに取得する制御を行うキャッシュ及びプリフェッチ制御回路とを備え、前記命令キャッシュメモリは、所定語数の命令を一つのデータブロックとして複数個格納するためのキャッシュデータ部と、キャッシュデータ部の命令とその命令アドレスとを関連付けるためのキャッシュアドレス部と、命令アクセスアドレスの一部がキャッシュアドレス部のアドレス情報に一致するか否かを検出するキャッシュ比較回路と、前記中央処理装置に前記命令キャッシュメモリから供給するか前記命令プリフェッチバッファから供給するかを選択する選択回路とを備え、前記命令プリフェッチバッファは、前記キャッシュデータ部の一つのデータブロックの命令語数に等しい語数の命令を一つのデータブロックとして格納可能なバッファデータ部と、バッファデータ部の命令とその命令アドレスとを関連付けるためのバッファアドレス部と、命令アクセスアドレスの一部がバッファアドレス部のアドレス情報に一致するか否かを検出するバッファ比較回路とを備え、前記キャッシュ及びプリフェッチ制御回路は、前記命令プリフェッチの指令に対して、前記キャッシュ比較回路及びバッファ比較回路の双方から不一致の比較結果を検出することにより命令プリフェッチバッファへの命令プリフェッチを起動するものであり、更に、割込み要求を受け付けたとき、当該要求に応答するための処理プログラムの先頭アドレス情報に基づいて命令プリフェッチバッファに命令をプリフェッチさせる指示を上記キャッシュ及びプリフェッチ制御回路に与える割込み制御回路を備え、前記選択回路は、前記キャッシュ比較回路において一致したことを検出した場合には、前記命令キャッシュメモリを選択し、前記キャッシュ比較回路において不一致を検出し、かつ、バッファ比較回路において一致したことを検出した場合、前記命令プリフェッチバッファを選択し、
前記処理プログラムの先頭アドレス情報に対応する命令が前記命令キャッシュメモリに格納されておらず、且つ、前記命令プリフェッチバッファにも格納されていなかった場合、前記キャッシュ及びプリフェッチ制御回路は、前記命令プリフェッチアドレスに応ずる命令を外部から前記プリフェッチバッファに取得するように制御し、且つ、前記選択回路は、対応する命令が前記プリフェッチバッファに格納された時点で、前記プリフェッチバッファを選択して前記中央処理装置に当該命令を転送し、さらに、前記キャッシュ及びプリフェッチ制御回路は、その後、再び当該命令をプリフェッチさせる指示が前記キャッシュ及びプリフェッチ制御回路に与えられた際に前記バッファ比較回路における一致の比較結果を検出した時点で、前記命令プリフェッチバッファに格納されていた当該命令を前記命令キャッシュメモリに書き込み制御することを特徴とするデータ処理装置。
【請求項９】
前記キャッシュ及びプリフェッチ制御回路は更に、命令プリフェッチバッファへの命令プリフェッチの完了後における命令アクセスに際して前記バッファ比較回路における一致の比較結果を検出することにより前記プリフェッチ完了された命令プリフェッチバッファの内容をキャッシュメモリに書込み制御するものであることを特徴とする請求項８記載のデータ処理装置。
【請求項１０】
命令フェッチと命令プリフェッチのための命令アクセスアドレスを保持するアドレスレジスタを備え、割込み処理プログラムの先頭アドレスと、プログラムカウンタの値と、プログラムカウンタの値に基づいて生成されたプリフェッチアドレスとから選ばれた一つのアドレスを前記アドレスレジスタに与える選択手段を有し、前記キャッシュ及びプリフェッチ制御回路は、命令フェッチの指令に対して前記キャッシュ比較回路及びバッファ比較回路の双方から不一致の比較結果を検出することにより選択手段にプログラムカウンタの値を選択させ、命令プリフェッチの指令に対して、その指令要因が割込み制御回路である場合には選択手段に割込み処理プログラムの先頭アドレスを選択させ、命令プリフェッチの指令に対して、その指令要因が中央処理装置である場合には選択手段にプログラムカウンタの値に基づいて生成されたプリフェッチアドレスを選択させるものであることを特徴とする請求項８又は９記載のデータ処理装置。
【請求項１１】
キャッシュ及びプリフェッチ制御回路は、前記処理プログラムの先頭アドレス情報に対応する命令が前記キャッシュメモリに格納されておらず、かつ、前記命令プリフェッチバッファに格納されていなかった場合に、命令プリフェッチアドレスに応ずる命令を外部から前記プリフェッチバッファに取得するように制御し、前記選択回路は、前記処理プログラムの先頭アドレス情報に対応する命令が前記キャッシュメモリに格納されておらず、かつ、前記プリフェッチバッファに格納されていなかった場合、前記プリフェッチバッファを選択し、前記対応する命令が前記プリフェッチバッファに格納された時点で、前記中央処理装置に当該命令を転送することを特徴とする請求項１乃至７のいずれか１項記載のデータ処理装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、中央処理装置が命令キャッシュメモリ及び命令プリフェッチバッファを利用してデータ処理を行うデータ処理装置に係り、詳しくは命令プリフェッチ機能を割込みに対しても拡張する技術に関し、例えばデータプロセッサ若しくはマイクロコンピュータそしてその応用システムに適用して有効な技術に関するものである。
【０００２】
【従来の技術】
中央処理装置のデータ処理能力を向上させるために、ＲＡＭ（ランダム・アクセス・メモリ）、ＲＯＭ（リード・オンリ・メモリ）、ハードディスク装置、フロッピーディスク装置などの大容量記憶装置の一部の情報を読込む比較的小容量だが大容量記憶装置に比べて命令やデータを高速にアクセスできるキャッシュメモリを内蔵または中央処理装置に密接に外付けすることが一般的に行われている。このような中央処理装置は、キャッシュメモリに情報が存在するうちはキャッシュメモリ中の命令やデータを参照しながら実行を継続し、また、実行結果を一時的にキャッシュメモリに格納することで、外部大容量記憶装置をアクセスしながら実行するのに比べて飛躍的にデータ処理能力を向上させることができる。但し、キャッシュメモリに中央処理装置が必要とする情報が存在しない場合、キャッシュメモリは、中央処理装置に命令の実行を中断させて外部大容量記憶装置より必要な情報を読込んで保持する動作を行い、その後中央処理装置に中断していた命令の実行を再開させる。この状態が多発すると逆に中央処理装置の性能が低下することになる。したがって、そのような中央処理装置の性能を最大限に引き出すには、命令実行の中断が無いように実行中に必要な情報を常にキャッシュメモリに存在させることが必要になる。
【０００３】
キャッシュメモリは、例えば一つのエントリを構成する１キャッシュラインの情報が外部記憶装置のどの位置（アドレス）に対応しているかを示す実効アドレス（仮想アドレスまたは物理アドレス）を記憶するキャッシュタグ、その実効アドレスを先頭とした連続するｎワードの情報を記憶するデータ部、そしてそのキャッシュラインに記憶している情報が有効であるかを示す有効ビットを備える。尚、必要に応じてキャッシュメモリの内容が更新され外部大容量記憶装置の内容と異なることを示すダーティビットなどを設ける場合もある。
【０００４】
命令キャッシュメモリにおいては、中央処理装置からの命令アドレスと命令キャッシュメモリ内のキャッシュタグの情報とを基に命令キャッシュメモリ内に有効な情報が存在するか否かの判定が行われ、存在する場合には中央処理装置はキャッシュメモリから命令をフェッチする。存在しない場合には、その命令アドレスを含むキャッシュメモリの１ライン分の情報（ｎワード分）をラインフェッチと呼ばれるバースト転送にて外部大容量記憶装置から該当キャッシュメモリの所定ラインのデータ部へ読込む。そして、ラインフェッチされた命令が中央処理装置にフェッチされる。命令実行中にキャッシュメモリ内に有効な情報が無い場合、中央処理装置はラインフェッチにて外部記憶装置から所要の命令が読込まれるまで、その命令の実行を開始することができない。この待ち時間、即ち命令実行停止時間をミスヒットペナルティと呼ぶが、中央処理装置の動作速度が飛躍的に速くなり外部記憶装置とのアクセス時間の相違が大きくなるにしたがい、ミスヒットペナルティがデータ処理性能低下へ著しく影響する。
【０００５】
そこで、中央処理装置が外部記憶装置との間でデータのやり取りを行っていない期間を利用して、中央処理装置が将来使用すると予想される情報を中央処理装置の実行に先行して読込むというプリフェッチの手法を採用することができる。このプリフェッチは、予想アドレスを用いる以外はラインフェッチとほぼ同様の動作によって実現される。ただし、プリフェッチを行なうと中央処理装置によるキャッシュメモリからの命令フェッチと外部記憶装置からキャッシュメモリへのラインフェッチがキャッシュメモリにおいて競合することがあるため、命令プリフェッチバッファを例えばキャッシュメモリの１ライン分以上備えることがある。これにより、中央処理装置による命令キャッシュメモリからの命令フェッチに並行して上記命令プリフェッチバッファに命令をプリフェッチ可能にすることができる。このような命令キャッシュメモリの構成は一般的にノンブロッキングキャッシュメモリと呼ばれる。尚、命令先取りを行う技術について記載された文献の例としては特開平３−９７０３２号公報がある。
【０００６】
【発明が解決しようとする課題】
プログラムの流れが、下位の命令アドレスから上位の命令アドレスに向かって連続している場合、命令プリフェッチは、常に現在の実行アドレスに対し単純に次のキャッシュ・メモリの１ライン分の情報（ｎワード分）を先取りするだけでも確実に効果がある。しかしながら、現在のプログラムの実行から次に動作するプログラムアドレスを動的にも静的にも推測できない事態（実行すべき命令アドレスが所定事象の発生によって途中で不連続とされる事態）は割込みなどによって生ずる。本明細書において割込みとは、ＣＰＵの命令実行途中に発生するアドレスエラーなどの例外事象の発生を含む概念として用いられる。割込みがＣＰＵの外部から要求される場合にはその要因とされる事象はＣＰＵの動作とは非同期で発生され、また、ＣＰＵの内部で割込みが発生される場合にも、ＣＰＵはそれが何時発生するかを予測することは実質的に不可能である。したがって、そのような割込み要求に応答するための割込み処理プログラムの命令をプリフェッチすることは従来行われておらず、これによる性能の低下は如何ともしがたいことが本発明者によって明らかにされた。このように、高性能化のために内蔵もしくは外付けしたキャッシュメモリに予測できる範囲で命令やデータをプリフェッチし、割込みのようにいつ処理動作が開始されるか予測不可能なプログラムについては、プリフェッチを断念しており、高速化のために備えたキャッシュメモリの性能を十分に生かしきっていないことが本発明者によって明らかにされた。
【０００７】
本発明の目的は、実行開始時点を予測できないような割込み処理プログラムについてもプリフェッチを行うことができるデータ処理装置を提供することにある。更に本発明は、従来からある多くの種類のプリフェッチ機能を有するキャッシュメモリや命令プリフェッチバッファの構成を極僅かに変更するだけで、換言すればコスト上昇を抑えて、上記目的を達成できるデータ処理装置を提供しようとするものである。
【０００８】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【０００９】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１０】
すなわち、割込みが発生してから中央処理装置による命令実行が割込み処理プログラム（割込み要求に応答するための処理プログラム）に切り替わるまでには必ず時間的な間隙があるため、この時間的隙間に、割込み処理プログラムを命令プリフェッチバッファや命令キャッシュにプリフェッチして、データ処理性能を向上させようとするものである。中央処理装置のデータ処理性能を向上するには、実行する確率が高い命令を高い確率で命令キャッシュメモリに留まらせる必要がある。確率を高くするには、単に命令キャッシュメモリの容量を大きくすることで対処することも可能であるが、システムコストが上昇する難点があり、現実的ではない。この点において本発明は、命令キャッシュメモリと命令プリフェッチバッファのプリフェッチ機構に着眼し、それらに対する命令のプリフェッチアルゴリズム（制御フロー）とキャッシュメモリ及び命令プリフェッチバッファの構造に若干の工夫を加えることで、コストアップを抑えて命令キャッシュメモリの高性能化を実現する。そのための手段を以下に示す。
【００１１】
〔１〕データ処理装置（データプロセッサ１）は、命令を実行する中央処理装置（３）と、前記命令をプリフェッチする命令プリフェッチバッファ（２３，２４，２５）と、プリフェッチされた命令を保持する命令キャッシュメモリ（２０，２１，２２）と、命令フェッチの指令に対して命令フェッチアドレスに応ずる命令を前記プリフェッチバッファ、命令キャッシュメモリ、又は外部から取得する制御を行い、命令プリフェッチの指令に対して命令プリフェッチアドレスに応ずる命令を外部から前記プリフェッチバッファに取得する制御を行うキャッシュ及びプリフェッチ制御回路（２６）と、割込み要求を受け付けたとき、当該要求に応答するための処理プログラムの先頭アドレス情報に基づいて命令プリフェッチバッファに命令をプリフェッチさせる指示（４０６）を上記キャッシュ及びプリフェッチ制御回路に与える割込み制御回路（４）とを備えて成る。
【００１２】
〔２〕割込み処理プログラムの命令プリフェッチは、割込みが発生した後、中央処理装置が内部状態を退避などするための割込み遷移制御の期間に並行して行われる。この割込み遷移制御の期間において、前記命令プリフェッチ可能な機会を多くするという観点に立てば、割込み制御回路からの割込み受け付けの通知を中央処理装置が受け付けてから当該中央処理装置が当該割込み要求に応答する処理プログラムの実行開始に至るまでの遷移制御期間に中央処理装置の内部状態が退避されるデータ記憶手段を更に備えて、データ処理装置を一つの半導体基板に形成する。例えば前記データ記憶手段をデータキャッシュメモリ（ＤＣＡＣＨＥ）とする場合には、当該データキャッシュメモリと外部との間にライトバックバッファ（ＷＢＢ）を設けるとよい。尚、ライトバックはコピーバックとも称されている。
【００１３】
〔３〕上記割込み制御回路（４）はこれが受け付けた割込み要求に応答するための割込み処理プログラムの先頭アドレス情報をアドレスレジスタ（２７）に供給し、前記キャッシュ及びプリフェッチ制御回路（２６）は、前記アドレスレジスタに保持されたアドレス情報に基づいて命令プリフェッチを行うように構成できる。また、割込み制御回路（４）は前記割込み処理プログラムの先頭アドレス情報を出力するために、割込み要因に対応させて各種先頭アドレス情報を保持するテーブル（４０）を供え、割込み要求を受け付けたとき、当該要求の要因に応ずるアドレスを上記テーブル（４０）から上記アドレスレジスタ（２７）に供給するように構成できる。このとき、割込み処理プログラムのマッピングに対する自由度を考慮するならば、上記テーブル（４０）は上記中央処理装置（３）によって書き換え可能にするとよい。更に前記割込み制御回路（４）は、受け付けられた割込み要求元の周辺回路（７）から、割込み処理プログラムの先頭アドレス情報を受け、これをアドレスレジスタ（２７）に与えるようにすることも可能である。
【００１４】
〔４〕命令キャッシュメモリが、所定語数の命令を一つのデータブロックとして複数個格納するためのキャッシュデータ部（２０）と、キャッシュデータ部の命令とその命令アドレスとを関連付けるためのキャッシュアドレス部（２１）と、命令アクセスアドレスの一部（ＡＴＡＧ）がキャッシュアドレス部のアドレス情報（ＣＴＡＧ）に一致するか否かを検出するキャッシュ比較回路（２２）とによって構成されるとき、前記命令プリフェッチバッファを、上記キャッシュデータ部の一つのデータブロックの命令語数に等しい語数の命令を一つのデータブロック（キャッシュデータ部２０の１ライン分のデータ）として格納可能なバッファデータ部（２３）と、該バッファデータ部の命令とその命令アドレスとを関連付けるためのバッファアドレス部（２４）と、命令アクセスアドレスの一部（ＡＴＡＧ，ＩＤＸ）がバッファアドレス部のアドレス情報（ＢＴＡＧ，ＩＤＸ）に一致するか否かを検出するバッファ比較回路（２５）とを供えて構成するとよい。これにより、命令キャッシュメモリにおける１キャッシュライン分のラインフェッチと同様の制御によって命令プリフェッチバッファに対するプリフェッチを行うことができるようになる。このとき、上記キャッシュ及びプリフェッチ制御回路（２６）は、前記命令プリフェッチの指令に対して、前記キャッシュ比較回路（２２）及びバッファ比較回路（２５）の双方から不一致の比較結果を検出することにより命令プリフェッチバッファへの命令プリフェッチを起動し（ステップＳ４４＝ＮＯ）、実質的に無駄なプリフェッチを行わない。命令プリフェッチバッファへの命令プリフェッチの完了後における命令アクセスに際して前記バッファ比較回路における一致の比較結果を検出することにより前記プリフェッチ完了された命令プリフェッチバッファの内容をキャッシュメモリに書込み制御する（ステップＳ８）。これにより、命令プリフェッチバッファにプリフェッチしてもバッファヒットにならず利用されないような命令によって、既存のキャッシュエントリを命令キャッシュメモリから追い出してしまう不都合を解消できる。このようなプリフェッチの機構に対して、割込み制御回路４０は、割込み要求を受け付けたとき、当該要求に応答するための処理プログラムの先頭アドレス情報に基づいて命令プリフェッチバッファに命令をプリフェッチさせる指令（４０６）をキャッシュ及びプリフェッチ制御回路２６に与える。
【００１５】
〔５〕上記手段〔４〕において、命令プリフェッチの指令発生元として、中央処理装置の他に割込み制御回路が追加されている。このとき、命令フェッチと命令プリフェッチのための命令アクセスアドレスを保持するアドレスレジスタを、双方からの命令プリフェッチの指令と共に命令フェッチに共用させるには、割込み処理プログラムの先頭アドレスと、プログラムカウンタの値と、プログラムカウンタの値に基づいて生成されたプリフェッチアドレスとから選ばれた一つのアドレスを前記アドレスレジスタに与える選択手段（２７１，２７２）を設け、前記キャッシュ及びプリフェッチ制御回路（２６）は、命令フェッチの指令に対して前記キャッシュ比較回路及びバッファ比較回路の双方から不一致の比較結果を検出することにより選択手段にプログラムカウンタ（３０）の値を選択させ、命令プリフェッチの指令に対して、その指令発生元が割込み制御回路である場合には選択手段に割込み処理プログラムの先頭アドレスを選択させ、命令プリフェッチの指令に対して、その指令発生元が中央処理装置である場合には選択手段にプログラムカウンタの値に基づいて生成されたプリフェッチアドレスを選択させるようにする。
【００１６】
【作用】
上記した手段によれば、割込みが発生してからプログラムが割込み処理に切り替わるまでには、中央処理装置はプログラムカウンタの値やプロセッサステータスレジスタの値などをハードウェア的に退避し、更に必要な情報を退避した後に、割込み処理プログラムを実行することになる。パイプライン処理が採用されている場合には、割込み処理プログラムに移る前に、割込みによるパイプラインの乱れを最小限にするための各種情報の退避も必要になる。データ処理装置はそのような退避などの割込み遷移制御に並行して、割込み処理プログラムの命令をプリフェッチする。プリフェッチすべき命令アドレスは割込み制御回路（４）から例えばアドレスレジスタ（２７）に与えられ、当該アドレスレジスタ（２７）の値を用いたプリフェッチ動作の指示が割込み制御回路（４）からキャッシュ及びプリフェッチ制御回路（２６）に与えられる。割込み処理プログラムのプリフェッチに必要なメモリアクセスの機会は、退避処理等の期間にバスが空いている時に与えられることになる。例えば、同じレジスタを複数組持ち、割込み時にレジスタを切り換えることによってレジスタの退避を行うアーキテクチャが採用されるデータ処理装置にあっては、当該切換え時にバスが空いているので少なくともその間に割込み処理プログラムの命令をプリフェッチすることができる。また、データに関してもデータキャッシュメモリとライトバックバッファとを備えたノンブロッキング・キャッシュ・メモリが採用されたものにあっては、レジスタの退避領域として外部メモリ領域を用いる場合にも、キャッシュヒットにおいては退避すべきデータをキャッシュメモリが蓄えることができるので、その間のバスの空きタイミングによって割込み処理プログラムの命令をプリフェッチすることができる。キャッシュミスの場合にもエントリ入れ替えのための外部メモリへの書き戻しデータをライトバックバッファが一時的に蓄えるので、当該外部メモリへの書き戻しを後回しにすることができる。
【００１７】
【実施例】
〔割込み遷移制御とそれに並行する命令プリフェッチ〕    先ず、本発明の一実施例に係るデータプロセッサ１の各部を容易に理解できるように、該データプロセッサ１による命令フェッチ及びプリフェッチのための構成、そして割込み遷移制御とそれに並行する割込み処理プログラムのプリフェッチを概略的に説明する。
【００１８】
図１には本発明の一実施例に係るデータプロセッサの部分ブロック図が示される。特に制限されないが、同図に示されるデータプロセッサ１は、公知の半導体集積回路製造技術によって単結晶シリコンなどの１個の半導体基板に形成される。本実施例のデータプロセッサ１は、代表的に示された命令キャッシュ・プリフェッチ部２、演算制御部としての中央処理装置（ＣＰＵ）３、及び割込み制御回路４を備え、それらは内部データバスＩＤＢと内部アドレスバスＩＡＢに接続される。５１，５２，５３，５４，５５で示されるものは代表的に図示された外部インタフェースであり、外部端子及び入出力用のバッファ回路を備えた回路ブロックを意味する。それら外部インタフェースには図２に例示的に示される主メモリ６、周辺回路７，８が外部データバスＥＤＢ及び外部アドレスバスＥＡＢなどを介して接続される。
【００１９】
上記命令キャッシュ・プリフェッチ部２は、命令キャッシュメモリ（２０，２１，２２）と、当該命令キャッシュメモリのための命令プリフェッチバッファ（２３，２４，２５）と、キャッシュ及びプリフェッチ制御回路２６とを備える。キャッシュ及びプリフェッチ制御回路２６は、主メモリ６からの命令フェッチの制御及び命令キャッシュメモリ及び命令プリフェッチバッファの動作を制御する。
【００２０】
前記中央処理装置３によって実行されるプログラムは主メモリ６に格納され、中央処理装置が最近実行した複数の命令は命令キャッシュメモリのキャッシュデータ部２０に格納されることになる。命令プリフェッチバッファのバッファデータ部２３は、命令キャッシュメモリにおけるキャッシュミス時に主メモリ６から読出されたデータ、又は命令プリフェッチのために主メモリ６から読出されたデータが一時的に格納されるバッファメモリである。キャッシュ及びプリフェッチ制御回路２６は、バッファデータ部２３に所定語数（本実施例に従えば８ワード）の命令が格納され、それが利用される状態になったとき（バッファヒット）、その命令列をキャッシュデータ部２０に新たなエントリとして内部転送する。中央処理装置３が次に実行すべき命令アドレスはプログラムカウンタ３０が保持する。
【００２１】
中央処理装置３による命令フェッチにおいて、プログラムカウンタ３０の命令アドレスに対応する命令が命令キャッシュデータ部２０に存在するか否かは、キャッシュ比較回路２２がキャッシュアドレス部２１の内容を参照して判断し、その結果がキャッシュヒット信号２２１にてキャッシュ及びプリフェッチ制御回路２６に通知される。また、プログラムカウンタ３０の命令アドレスに対応する命令がバッファデータ部２３に存在するか否かは、バッファ比較回路２５がバッファアドレス部２４の内容を参照して判断し、その結果がバッファヒット信号２５１にてキャッシュ及びプリフェッチ制御回路２６に通知される。キャッシュ及びプリフェッチ制御回路２６は、信号２２１にてキャッシュヒットが通知された場合にはプログラムカウンタ３０の命令アドレスに対応する命令をキャッシュデータ部２０から命令レジスタ３１に転送させる。信号２２１にてキャッシュミスが通知され、且つ信号２５１にてバッファヒットが通知された場合にキャッシュ及びプリフェッチ制御回路２６は、プログラムカウンタ３０の命令アドレスに対応する命令をバッファデータ部２３から命令レジスタ３１に転送させる。信号２２１にてキャッシュミスが通知され且つ信号２５１にてバッファミスが通知された場合にキャッシュ及びプリフェッチ制御回路２６は、プログラムカウンタ３０の命令アドレスをアドレスレジスタ２７を介して主メモリ６に与え、それによって主メモリ６から読出された命令をバッファデータ部２３を通して命令レジスタ３１に転送する。このときのプログラムカウンタ３０の命令アドレスは、セレクタ２７２，２７１を経由してアドレスレジスタ２７に与えられる。主メモリ６に対するアクセスはバーストアクセスとされ、全部で８ワード分の命令がバッファデータ部２３に格納され、且つ信号２５１にてバッファヒットが通知された場合に、当該８ワードの命令が新たなエントリとしてキャッシュデータ部２０に格納される。
【００２２】
キャッシュ及びプリフェッチ制御回路２６は、中央処理装置３がバスアクセスを行っていないとき命令プリフェッチを行う。命令プリフェッチのための主メモリ６のアクセスは、前記キャッシュミス且つバッファミスの場合と同様に、主メモリ６に対するバーストアクセスとされ、全部で８ワード分の命令がバッファデータ部２３に格納され、且つ前記信号２５１にてバッファヒットが通知された場合に、当該８ワードの命令が新たなエントリとしてキャッシュデータ部２０に格納される。このように命令プリフェッチの場合、バッファデータ部２３に格納された命令は、すぐにはキャッシュデータ部２０に転送されない。プリフェッチしてもバッファヒットにならないような命令をキャッシュデータ部２０の新たなエントリとして追加すると、一度命令実行に利用された既存のエントリを命令キャッシュメモリから追い出すことになって不都合だからである。プリフェッチされるべき命令アドレスは、プログラムカウンタ３０の命令アドレスをカウンタ２７３にて１キャッシュライン分増加（本実施例に従えば＋８）させてアドレスレジスタ２７に与えられる。アドレスレジスタ２７に命令プリフェッチアドレスを与えるタイミングは、中央処理装置３からの命令プリフェッチの指令に同期される。
【００２３】
さらに本実施例においては、上記命令プリフェッチのための構成を利用して、割込み制御回路４が割込み処理プログラムのための命令プリフェッチの指令を出す。割込み制御回路４は代表的に図１に示された割込み要求信号４０１、４０２、４０４にて要求される何れかの割込みを受け付けたとき、中央処理装置３に信号４０５にて割込みを通知し、また、キャッシュ及びプリフェッチ制御回路２６に信号４０６にて割込み処理プログラムのプリフェッチを指令する。信号４０５にて割込みが通知された中央処理装置３は、割込み処理プログラムからの復帰のために必要とされる現在の内部状態を退避したりするための割込み遷移制御を開始する。このとき割込み制御回路４は、受け付けた割込み要求に対応される割込み処理プログラムの先頭アドレスを、セレクタ２７２，２７１を経由し命令プリフェッチアドレスとしてアドレスレジスタ２７に供給する。前記信号４０６にて命令プリフェッチ動作が指示されたキャッシュ及びプリフェッチ制御回路２６は、アドレスレジスタ２７に供給された割込み処理プログラムの先頭アドレスを用いた命令プリフェッチ動作を、中央処理装置３の前記割込み遷移制御の期間に並行して開始する。
【００２４】
前記中央処理装置３は、図１１にその一例が示されるように、データレジスタ又はそれに類似するバススイッチ３７を介して内部データバスＩＤＢに接続されたプログラムカウンタ３０、ステータスレジスタ３３、退避用レジスタ３４、演算回路３５、及び制御回路３６を供え、内部アドレスバスＩＡＢは演算回路３５に結合される。演算回路３５は汎用レジスタ３５１、算術論理演算器３５２、及びシフタ３５３等を備える。前記制御回路３６は、命令レジスタ３１にフェッチされた命令を解読して順次命令を実行するに必要な制御信号を生成すると共に、割込み信号を受け付けてから所定の割込み処理プログラムへ命令実行状態を移すまでの前記割込み遷移制御などを行う。それらを実現するための制御論理は、マイクロプログラム制御又はワイヤードロジック、さらには双方を併用した論理構成を採用することができる。図１１においては割込み遷移制御部３６０が代表的に示されている。割込み遷移制御部３６０は、割込み信号４０５が活性化されると、その論理構成に従って制御信号を生成し、復帰時に必要とされる内部情報の退避を行い、その後で割込み処理プログラムへの分岐処理を行う。退避すべき内部情報は、プログラムカウンタ３０及びステータスレジスタ３３の値、そして汎用レジスタ３５１の値などとされる。ステータスレジスタ３３の値にはプロセッサステータスワード（ＰＳＷ）を含む。プログラムカウンタ３０及びステータスレジスタ３３が保有する情報の退避は、多重割込み（所定の割込み処理プログラムの実行中に多重に受け付けられた割込み）でない場合には避用レジスタ３４に対して行われ、多重割込みの場合には主メモリ６に対して行われる。汎用レジスタ３５１が保有する情報の退避は、多くの場合主メモリ６に対して行われる。そのような退避の処理を制御するための制御情報は割込み遷移制御部３６０がそのハードウェア構成に従って生成する。
【００２５】
特に図１には図示を省略しているが、本実施例のデータプロセッサ１は、中央処理装置３による命令実行に利用されるデータを格納するためのデータキャッシュメモリと、データキャッシュメモリのライトバックバッファ（ライトバッファ）とを備えている。データキャッシュメモリ及びライトバックバッファについては図８及び図９に基づいて別に説明するが、データキャッシュメモリは一旦利用された主メモリ６のデータをそのアドレス情報と共に保有する。キャッシュメモリを１次記憶とすると２次記憶としての主メモリとの間で相互に共有されるデータは整合（一致）されなければならない。このとき、ライトアクセスにてキャッシュヒットを生じてキャッシュメモリのエントリが書き換えられた場合、その内容を２次記憶に書き戻す制御手法にはライトスルー方式とライトバック方式がある。ライトスルー方式はキャッシュメモリの書き換えと同時に２次記憶にもデータのライトを行う。ライトバック方式は、ライトアクセスにおいてキャッシュメモリが書き換えられたとき当該書き換えられた内容を、その後キャッシュミスが生じてそのエントリが新たなエントリにリプレースされるときに主メモリに書き戻すという手法である。本実施例のデータプロセッサ１は、特に制限されないが、上記ライトバック方式が採用される。前記ライトバックバッファはデータキャッシュメモリの保有する情報が書き換えられるときにそれを主メモリ６の対応データに反映させるための主メモリ６への書込みデータを一時的に保持するバッファメモリとされる。したがって、主メモリ６を退避先とするメモリアクセスが行われたとき、データキャッシュメモリがそのアクセスアドレスに応ずるエントリを保有している場合には、データプロセッサ１は外部バスアクセスを起動することを要しない。更に、データキャッシュメモリと主メモリ６との間に配置されたライトバックバッファはデータキャッシュメモリのキャッシュミス時にキャッシュエントリをリプレースするとき、主メモリ６に書き戻すべきデータを一時的に蓄えて当該キャッシュミスに係るデータのキャッシュメモリへの書込みを優先させるから、前記書き戻しのための外部バスサイクルの起動を後回しにすることができる。これらにより、割込み遷移制御における前記退避のための処理においては、その全てを外部バスサイクル起動による主メモリ６のアクセスで行う必要はない。換言すれば、中央処理装置３による割込み遷移制御期間中における退避処理において外部バスサイクルが起動されない期間は必ず複数サイクル分存在することになる。したがって、中央処理装置３による割込み遷移制御に並行してキャッシュ及びプリフェッチ制御回路２６が割込み処理プログラムを主メモリ６からプリフェッチする動作を保証することができる。
【００２６】
〔データプロセッサの全体構成〕  前述の説明にてデータプロセッサ１における命令フェッチとプリフェッチの概略が理解されたところで、データプロセッサ１の各部の詳細を再び図１を参照しながら説明する。
【００２７】
上記命令キャッシュメモリは、所定語数のデータを一つのデータブロックとして複数個格納するためのキャッシュデータ部２０と、キャッシュデータ部２０のデータとそのデータのアドレスとを関連付けるためのキャッシュアドレス部２１と、命令アドレスの一部（アドレスタグＡＴＡＧ）がキャッシュアドレス部２１のタグ情報（キャッシュタグＣＴＡＧ）に一致するか否かを検出するキャッシュ比較回路２２とを主体として成る。本実施例に従えば、キャッシュデータ部２０はワード＃０〜ワード＃７の８ワード分のデータ記憶領域を複数組備え（ワード＃０〜＃７が一つのデータブロックを成す）、キャッシュアドレス部２１は８ワードのデータ記憶領域（＃０〜＃７）に対応されるキャッシュタグＣＴＡＧとその有効ビットＶｃの対を備える。８ワードのデータ記憶領域（＃０〜＃７）とそれに対応されるキャッシュタグＣＴＡＧ及び有効ビットＶｃを単にキャッシュラインと称する。ここで、本実施例のデータプロセッサ１において命令アクセスのためのアドレス信号は最下位側からワードＷＲＤ、インデックスＩＤＸ、アドレスタグＡＴＡＧとみなすことができる。このときワードＷＲＤは一つのキャッシュラインに含まれるワード＃０〜ワード＃７から一つを選択するためのアドレス情報とみなすことができる。この例に従えばワードＷＲＤは３ビットとされる。インデックスＩＤＸは複数のキャッシュラインから一つのキャッシュラインを選択するためのアドレス情報とみなすことができる。例えばキャッシュデータ部２０が２５６個のキャッシュラインを有する場合、インデックスＩＤＸは８ビットとされる。前記キャッシュタグＣＴＡＧは対応するキャッシュラインのワード＃０〜＃７に格納される各命令に共通なアドレスタグＡＴＡＧを保持することになる。前記有効ビットＶｃはそれが含まれるキャッシュラインの有効（実在又は確定）性をその論理値によって示し、例えば論理値”１”が有効、”０”が無効を示す。
【００２８】
命令プリフェッチバッファは、バッファデータ部２３と、該バッファデータ部２３のデータとそのアドレスとを関連付けるためのバッファアドレス部２４と、命令アドレスの一部（アドレスタグＡＴＡＧ及びインデックスＩＤＸ）がバッファアドレス部２４のアドレス情報（プリフェッチバッファタグＢＴＡＧ及びインデックスＩＤＸ）に一致するか否かを検出するバッファ比較回路２５とを主体として成る。上記バッファデータ部２３は、上記キャッシュデータ部２０と同様にワード＃０〜ワード＃７の８ワード分のデータ記憶領域を備え、当該データ記憶領域（＃０〜＃７）は、特に制限されないが、一組設けられている。バッファアドレス部２４は、バッファデータ部２３に格納される８ワードのデータに対応されるプリフェッチバッファタグＢＴＡＧ、有効ビットＶｂ、書込み完了ビットＣを有する。プリフェッチバッファタグＢＴＡＧにはバッファデータ部２３のワード＃０〜＃７に格納される各命令に共通なアドレスタグＡＴＡＧが保持されることになる。有効ビットＶｂはバッファデータ部２３に含まれるデータの有効性をその論理値によって示し、例えば論理値”１”が有効、”０”が無効を示す。書込み完了ビットＣは、命令プリフェッチに際してバッファデータ部２３にワード＃０〜＃７の合計８ワードが書き込まれたか否かをその論理値によって示し、例えば、論理値”１”が書込み完了、”０”が未完了を意味する。
【００２９】
バッファデータ部２３の各ワード＃０〜＃７に対応される記憶領域への入力データは主メモリ６から内部データバスＩＤＢを介して供給される。バッファデータ部２３に格納された記憶情報はキャッシュデータ部２０の所望キャッシュラインの記憶領域＃０〜＃７に書き込み可能にされる。バッファデータ部２３からキャッシュデータ部２０への書込みに応じてプリフェッチバッファタグＢＴＡＧの情報がキャッシュアドレス部２１に供給されてキャッシュタグＣＴＡＧとされる。このときのキャッシュラインの選択はバッファアドレス部２４のインデックスＩＤＸがセレクタ２０１を介してキャッシュデータ部２０及びキャッシュアドレス部２１に供給されることにより行われる。キャッシュデータ部２０で選択された１キャッシュラインの記憶領域＃０〜＃７に格納されたデータはセレクタ２００を介して一つのワードが選択される。また、前記セレクタ２３０はバッファデータ部２３の記憶領域＃０〜＃７の中から一つデータを選択してバイパス経路２３１に供給する。セレクタ２００，２３０の選択制御は、キャッシュ及びプリフェッチ制御回路２６がワードＷＲＤに基づいて行う。尚、図１に示される命令キャッシュメモリはダイレクトマップ形式のキャッシュメモリのように図示されているが、セットアソシアティブ形式を採用するができる。その場合、命令プリフェッチバッファもセットアソシアティブ形式におけるセット数若しくはウェイ数に応じて増設することで実現できる。
【００３０】
図１において命令アドレスを保持するレジスタとして、中央処理装置３に含まれるプログラムカウンタ３０と、命令キャッシュ・プリフェッチ部２に設けられたアドレスレジスタ２７とが図示されている。プログラムカウンタ３０は中央処理装置３が次に実行すべき命令アドレスを保有する。アドレスレジスタ２７は主メモリ６からフェッチ又はプリフェッチすべき命令アドレスを保持する。アドレスレジスタ２７が保持すべき命令アドレスのアドレスタグＡＴＡＧ、インデックスＩＤＸ、及びワードＷＲＤは、プログラムカウンタ３０、割込み制御回路４又はカウンタ２７３が出力し、セレクタ２７１，２７２でその何れかが選択されて、アドレスレジスタ２７に供給される。経路２７５にはプログラムカウンタ３０が保有している命令アドレス情報が供給される。経路２７４には割込み制御回路４が出力する後述の割込み処理プログラム先頭アドレスが供給される。カウンタ２７３は、プログラムカウンタ３０が保有する命令アドレスに基づいて命令プリフェッチアドレスを生成する。すなわち、カウンタ２７３はプログラムカウンタ３０の値を入力し、それを１キャッシュライン分だけ増加（＋８ワード分増加）して出力する。セレクタ２７１によるカウンタ２７３の出力選択は、プリフェッチの指令に基づいて行われる。
【００３１】
キャッシュデータ部２０とキャッシュアドレス部２１に対するキャッシュラインの選択はセレクタ２０１の出力を図示しないデコーダ（インデックスデコーダ）がデコードして行われる。セレクタ２０１はプログラムカウンタ３０が保有するアドレスのインデックスＩＤＸ、アドレスレジスタ２７が保有するアドレスのインデックスＩＤＸ、又はバッファアドレス部２４が保有するインデックスＩＤＸを選択して出力する。上記キャッシュ比較回路２２は、セレクタ２０１の出力に基づいて選択されたキャッシュラインの有効ビットＶｃにてそのキャッシュラインの有効性を判定し、それが有効であることを示すときは、セレクタ２２０で選択されたアドレスタグＡＴＡＧがそのキャッシュラインのキャッシュタグＣＴＡＧに一致するかを判定し、判定結果が一致である場合にキャッシュヒット信号２２１を活性化する。これによってキャッシュ及びプリフェッチ制御回路２６にキャッシュヒットが通知される。セレクタ２２０は、プログラムカウンタ３０から供給されるアドレスタグＡＴＡＧ又はアドレスレジスタ２７から供給されるアドレスタグＡＴＡＧを選択する。上記バッファ比較回路２５は、バッファアドレス部２４の有効ビットＶｂを入力し、それが有効であることを示すときは、セレクタ２２０で選択されたアドレスタグＡＴＡＧがそのバッファアドレス部２４のプリフェッチバッファタグＢＴＡＧに一致するか、そしてセレクタ２５０で選択されたインデックスＩＤＸがそのバッファアドレス部２４のインデックスＩＤＸに一致するかを判定し、夫々の判定結果が一致である場合にバッファヒット信号２５１を活性化する。これによってキャッシュ及びプリフェッチ制御回路２６にバッファヒットが通知される。セレクタ２５０は、プログラムカウンタ３０から供給されるインデックスＩＤＸ又はアドレスレジスタ２７から供給されるインデックスＩＤＸを選択する。
【００３２】
上記割込み制御回路４は、各種割込み要求に対する優先順位付けや割込み要求に対するマスキングのための情報に従って、データプロセッサ１の内部又は外部からの割込み要求を調停して受け付け、受け付けた割込み要求に対して応答を返す制御を行う。図１には外部割込み要求信号４０１，４０２とそれに対する応答信号４０３、そして中央処理装置３からの内部割込み要求信号４０４が代表的に示されている。信号４０５は割込み制御回路４が割込みを受け付けたことを中央処理装置３に通知するための割込み信号である。割込み信号４０５によって中央処理装置３が割込み受け付けを認識すると、当該中央処理装置３は前述のように割込み遷移制御部３６０の制御に従って、プログラムカウンタ３０やステータスレジスタ３３などに格納されている情報の退避を行う。退避処理等が済むと、プログラムカウンタ３０には、受け付けられた割込み要求に応答するための割込み処理プログラムの先頭アドレス（割込み開始アドレス）がセットされ、これによって中央処理装置３は割込み処理プログラムを実行可能な状態にされる。中央処理装置３がその内部を通常処理プログラムの実行状態から割込み要求に対する割込み処理プログラムの実行可能状態に遷移させるために必要な期間を割込み遷移期間と称する。割込み遷移期間における中央処理装置３の処理の一例については図１０に基づいて後述する。
【００３３】
前記割込み制御回路４は、中央処理装置３の前記割込み遷移期間に並行して命令キャッシュ・プリフェッチ部２に割込み処理プログラムのプリフェッチを開始させる。すなわち、上記割込み制御回路４は、割込み処理プログラムの先頭アドレスを割込み要因に対応させて保持するテーブル４０を供え、例えば周辺回路８からの割込み要求４０２又は中央処理装置３からの割込み要求４０３を受け付けたとき、その要求に対応される割込み処理プログラムの先頭アドレスを上記テーブル４０から選択し、選択した先頭アドレスの情報を経路２７４を介して前記アドレスレジスタ２７に供給する。また、周辺回路７が、割込み処理プログラムの先頭アドレスを格納するための割込み先頭アドレスレジスタ７１を有し、換言すれば、その周辺回路７に対応される割込み処理プログラムの先頭アドレスが前記テーブル４０には設定されていない場合、信号４０３にて割込み要求元に割込み込み受け付けの通知が返されたときに、割込み先頭アドレスレジスタ７１が保有するアドレス情報を内部データバスＩＤＢに出力する機能を有する場合、上記割込み制御回路４は、当該周辺回路７からの割込み要求信号４０１に対して割込みを受け付けると、周辺回路７から出力される割込み先頭アドレスを受け、これを経路２７４を介してアドレスレジスタ２７に与える。上記テーブル４０は中央処理装置３によって書き換え可能にされ、ユーザが記述する割込み処理プログラム（割込みハンドラ）に対するアドレスマッピングの自由度を保証する。上記テーブル４０は例えば中央処理装置３によってリード・ライト可能な複数のレジスタによって構成することができる。
【００３４】
割込み制御回路４は、割込み処理プログラムの先頭アドレスをレジスタ２７に与えるとき、その先頭アドレス（割込み開始アドレス）に従って命令をプリフェッチさせる指示を、割込み受け付け信号４０６にて上記キャッシュ及びプリフェッチ制御回路２６に与える。
【００３５】
割込み制御回路４から経路２７４に出力される割込み処理プログラムの先頭アドレスは、中央処理装置３にも供給される。図１１の例に従えば、割込み処理プログラムの先頭アドレスは制御回路３６のラッチ３６１に与えられる。中央処理装置３は、割込み信号４０５による割込みの通知に基づいて割込み遷移制御を行ってから、その割込み処理プログラムの先頭アドレスをラッチ３６１からプログラムカウンタ３０にセットして、割込み処理プログラムの実行に移る。
【００３６】
図２において上記周辺回路７には割込み制御論理７０と割込み開始アドレスレジスタ７１が代表的に示されている。割込み制御論理７０は周辺回路７の動作上、中央処理装置３による所定の割込み処理プログラムの実行を要するときに、割込み要求信号４０１を活性化する。特に制限されないが、割込み応答信号４０３は割込み要求元に固有の識別情報が含まれる。したがって割込み制御回路４がその割込み要求信号４０１による割込み要求を受け付けると、周辺回路７に固有の識別情報を含む割込み応答信号４０３を出力し、これによって周辺回路７は割込み要求が受け付けられたことを認識し、割込み開始アドレスレジスタ７１に格納されている割込み処理プログラムの先頭アドレスを外部データバスＥＤＢに出力する。割込み開始アドレスレジスタ７１に対する初期設定は中央処理装置３によって行うことができる。外部データバスＥＤＢに出力された割込み処理プログラムの先頭アドレスは外部インタフェース５５を介してデータプロセッサ１の割込み制御回路４に取り込まれる。図２に示される周辺回路８は割込みの要求と受け付けを認識する割込み制御論理８０を備え、割込み開始アドレスレジスタは保有しない。即ち、当該周辺回路８の割込み要求によって中央処理装置３が実行すべき割込み処理プログラムの先頭アドレスは上記割込み制御回路４のテーブル４０に格納されている。
【００３７】
前記主メモリ６はデータプロセッサ１のワーク領域と、中央処理装置３の動作プログラム（命令セット）及びデータが格納される記憶領域とを有する。命令キャッシュ・プリフェッチ部２が読み込むべき割込み処理プログラムやその他のプログラムは当該主メモリ６にストアされている。主メモリ６に対するアクセスアドレスは、本実施例に従えば、データプロセッサ１の外部インタフェース５４から外部アドレスバスＥＡＢを経由して与えられる。この実施例では主メモリ６はワード単位でデータアクセス可能なものとされる。主メモリ６に対する命令フェッチ及び命令プリフェッチのためのアクセスアドレスは、図１のアドレスレジスタ２７から与えられる。このとき、命令キャッシュ・プリフェッチ部２はバッファデータ部２３への命令プリフェッチをバースト転送にて行うことができるようになっている。主メモリ６それ自体がバースト転送モードを持つ場合には当該バースト転送モードをその主メモリ６の仕様に従って設定し、バースト転送の先頭語のアドレスを供給する。例えば、主メモリ６が８ワード分の情報のバースト転送機能を有する場合、アドレスレジスタ２７のワードＷＲＤは最初にフェッチされるべきワードを指定するビット列とされ、当該アドレスレジスタ２７のアドレスが主メモリ６に供給される。主メモリ６がバースト転送モードを持たない場合にはキャッシュ及びプリフェッチ制御回路２６は、アドレスレジスタ２７のワードＷＲＤを最初にフェッチすべきワード指定用のビット列として主メモリ６をアクセスさせ、アクセスの都度ワードＷＲＤを順次更新しながら８回のメモリアクセスによって８ワードの命令をプリフェッチする。すなわちその場合には、キャッシュ及びプリフェッチ制御回路２６は、特に図示はしないが、アドレスレジスタ２７のワードＷＲＤを３ビットのリングカウンタとして計数動作させる制御を行うことができるようになっている。割込み制御回路４のテーブル４０又は周辺回路７の割込み先頭アドレスレジスタ７１に格納されている割込み開始アドレスの下位３ビット（ワードＷＲＤ）と、プログラムカウンタ３０のワードＷＲＤもセレクタ２７１，２７２を介してレジスタ２７のワードＷＲＤに供給可能にされている。
【００３８】
〔命令フェッチ及びプリフェッチ起動の制御態様〕  図３には中央処理装置３からの指令に基づく命令フェッチ及びプリフェッチ起動の動作フローチャートが示される。同図において命令プリフェッチの指令には割込み制御回路４からの命令プリフェッチの指令は含まれていない。
【００３９】
中央処理装置３は、現在実行している命令から推測して次に実行するであろう命令をフェッチする指示を、キャッシュ及びプリフェッチ制御回路２６に要求する。このとき、中央処理装置３は、命令キャッシュ・プリフェッチ部２に向けてプログラムカウンタ３０の保有する命令フェッチアドレスを与える。命令キャッシュ・プリフェッチ部２は、与えられた命令フェッチアドレスを実効アドレスとして、命令フェッチ動作の制御を開始する（ステップＳ１）。命令フェッチ動作においては、フェッチすべき命令が命令キャッシュメモリのキャッシュデータ部２０に存在するか、又は命令プリフェッチバッファのバッファデータ部２３に存在するかが検索されることになる。図３では、便宜上、フェッチすべき命令が命令キャッシュメモリに存在する場合、命令プリフェッチバッファに存在する場合、及び双方に存在しない場合に大別してその処理が記述されている。
【００４０】
命令フェッチ動作の制御が開始されると、キャッシュデータ部２０とキャッシュアドレス部２１ではプログラムカウンタ３０のインデックスＩＤＸによって一つのキャッシュラインが選択される。選択されたキャッシュラインに有効な命令が既に読込まれているか否かは当該キャッシュラインの有効ビットＶｃが示し、有効ビットＶｃが真（論理値”１”）の場合、当該キャッシュラインに含まれるキャッシュタグＣＴＡＧとプログラムカウンタ３０に含まれるアドレスタグＡＴＡＧがキャッシュ比較回路２２にて比較される。比較結果が一致の場合（ステップＳ２＝ＹＥＳ、且つステップＳ３＝ＹＥＳ）、所要の命令が上記キャッシュラインに存在することがキャッシュヒット信号２２１にてキャッシュ及びプリフェッチ制御回路２６に通知される。これによって、キャッシュ及びプリフェッチ制御回路２６は、プログラムカウンタ３０のワードＷＲＤの情報に従ってセレクタ２００，３２を制御し、必要な命令を中央処理装置３の命令レジスタ３１に転送（フェッチ）させる（ステップＳ４）。尚、図１において命令レジスタ３１の前段に配置されたセレクタ３２はセレクタ２００の出力情報又はバイパス経路２３１からの情報を選択するものであり、キャッシュヒットの時はセレクタ２００の出力情報を、キャッシュミスの場合にはバイパス経路２３１からの情報を選択する。その指示は信号２６１にてキャッシュ及びプリフェッチ制御回路２６から与えられる。
【００４１】
特に制限されないが、ステップＳ４の命令フェッチの後には、中央処理装置３によるバスアクセスが行われていないタイミングを以て中央処理装置３が命令プリフェッチの指令をキャッシュ及びプリフェッチ制御回路２６に与える。例えば、そのときのプログラムカウンタ３０の命令アドレスがカウンタ２７３にて１キャッシュライン分増加され、中央処理装置３によるバスアクセスがない期間を利用して、その更新されたアドレス情報（アドレスレジスタ２７に格納されている）に基づき命令プリフェッチの動作が開始される。（ステップＳ５）。命令プリフェッチの指令があったときの処理については図４に基づいて後述する。
【００４２】
命令キャッシュメモリでキャッシュミスした場合には、命令プリフェッチバッファでのヒット判定の結果が参照される。即ち、命令プリフェッチバッファにおいて、１キャッシュライン分の命令を格納できるバッファデータ部２３に、有効な命令が既に読込まれているか否かは有効ビットＶｂが示す。有効ビットＶｂが真（論理値”１”）の場合、バッファアドレス部２４のプリフェッチバッファタグＢＴＡＧ及びインデックスＩＤＸがバッファ比較回路２５にてプログラムカウンタ３０のアドレスタグＡＴＡＧ及びインデックスＩＤＸと比較される。比較結果が一致の場合（ステップＳ２＝ＹＥＳ、且つステップＳ３＝ＮＯ）、必要な命令がバッファデータ部２３に存在することが信号２５１にてキャッシュ及びプリフェッチ制御回路２６に通知され、キャッシュ及びプリフェッチ制御回路２６は、プログラムカウンタ３０のワードＷＲＤの情報に基づいてセレクタ２３０を制御し、セレクタ２３０で選択した所要の命令をバイパス経路２３１を介して中央処理装置３に転送し（ステップＳ７）、その命令が命令レジスタ３１にフェッチされる。
【００４３】
このとき、有効ビットＶｂが真であっても命令プリフェッチバッファが外部主メモリ６より命令を読込み中の場合、即ち、読込み完了ビットＣが偽（論理値”０”）の場合、キャッシュ及びプリフェッチ制御回路２６は、ステップＳ６により８ワードのデータの読込み完了後に該当命令を中央処理装置３に転送する。キャッシュ及びプリフェッチ制御回路２６は、主メモリ６から命令プリフェッチバッファのバッファデータ部２３に第１ワード目の命令をプリフェッチするとき、読込み完了ビットＣを偽（論理値”０”）に初期化する。そして、キャッシュ及びプリフェッチ制御回路２６は命令プリフェッチバッファのバッファデータ部２３への書込みワードデータ数を計数する手段を有し、その計数値が８になったとき読込み完了ビットＣを真（論理値”１”）に設定する。
【００４４】
主メモリ６から命令プリフェッチバッファのバッファデータ部２３にプリフェッチされた８ワードの命令は、命令キャッシュメモリのキャッシュデータ部２０における該当キャッシュラインに書込まれ（ステップＳ８）、命令キャッシュメモリのキャッシュアドレス部２１における有効ビットＶｃが真（論理値”１”＝ＯＮ）に、かつ、キャッシュタグＣＴＡＧにはバッファアドレス部２４のバッファタグＢＴＡＧの内容が設定される。そして、命令プリフェッチバッファのバッファアドレス部２４における有効ビットＶｂが偽（論理値”０”＝ＯＦＦ）にされる（ステップＳ９）。これによりそれ以降、命令キャッシュメモリと命令プリフェッチバッファの両方でヒットすることが防止される。そして上記同様、命令プリフェッチが指令される（ステップＳ１０）。
【００４５】
尚、命令プリフェッチバッファの内容を命令キャッシュメモリに書き込むときの対応キャッシュラインの選択はバッファアドレス部２４が保有しているインデックスＩＤＸの情報を用いる。また、２ウェイ以上のセットアソシアティブ方式の命令キャッシュメモリでは、命令プリフェッチバッファの命令列をどのウェイに書込むかを制御する必要があるが、例えば図示しないが公知のＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔ  Ｕｓｅ）を用いることができる。これは、キャッシュラインのデータ部を入れ換える際の重み付けを行う論理であり、最も最近参照されたキャッシュラインを指すのに用いる。したがって、データ部の入れ替えでは、ＬＲＵが指定していない方のキャッシュラインが入れ替えの対象とされる。
【００４６】
命令キャッシュメモリにおいてキャッシュミスされ、命令プリフェッチバッファにおいてバッファミスされた場合（ステップＳ２＝ＮＯ）、中央処理装置３は主メモリ６より必要な命令を読込むまで命令を実行することができないため、即座に命令プリフェッチ動作が開始される。即ち、キャッシュ及びプリフェッチ制御回路２６はアドレスレジスタ２７の値（プログラムカウンタ３０の命令アドレス）に基づいて、主メモリ６から命令をプリフェッチする動作を開始させる（ステップＳ１２）。これによって、フェッチすべきアドレスの命令が読み込まれると、プログラムカウンタ３０のワードＷＲＤの情報に基づいて、セレクタ２３０が制御され、セレクタ２３０によって選択された命令がバイパス経路２３１を通って中央処理装置３に転送され、その命令が命令レジスタ３１にフェッチされる（ステップＳ１３，Ｓ１４）。本実施例においては、中央処理装置３が必要とする命令は主メモリ６から最初に読込まれる。すなわち、中央処理装置３のミスヒット・ペナルティ低減のためにフェッチすべきアドレスの命令を先頭として主メモリ６から８ワードの命令がバースト転送される。したがって、図３の制御フローには、命令プリフェッチバッファに最初に読込んだ１語の命令のみがバイパス経路２３１を経由して中央処理装置３に転送されるようになっている。さらに、命令プリフェッチバッファが外部の主メモリ６より命令を読込み中（読込み完了ビットＣが偽）の場合は、外部バスのトランズアクションの簡素化から命令プリフェッチバッファが動作停止（読込み完了）してからフェッチ動作を開始するようになっている（ステップＳ１１）。
【００４７】
〔割込みに基づく命令プリフェッチの起動〕  図３に示される命令プリフェッチの指令は、プログラムカウンタ３０の値に従った命令フェッチの指令に起因して発生される。命令プリフェッチのその他の指令要因には、前述のように割込み受け付けにて割込み制御回路４から信号４０６にてキャッシュ及びプリフェッチ制御回路２６に与えられる割込み処理プログラムの命令プリフェッチの指令が存在する。斯る命令プリフェッチの指令は、図５のステップＳ５６若しくはＳ５７又は図６のステップＳ６３にて発生される。図５及び図６の詳細については後述する。
【００４８】
〔命令プリフェッチの制御手順〕  図４には命令プリフェッチの指令を受けたときのキャッシュ及びプリフェッチ制御回路２６による制御手順が示される。命令プリフェッチの指令があると、その指令は割込みコントローラ４からの命令プリフェッチ（割込みプリフェッチ）の指令か、或いは中央処理装置３による命令実行段階における命令プリフェッチ（通常プリフェッチ）の指令かが判定される（ステップＳ４１）。通常プリフェッチの場合、命令プリフェッチアドレスとしてカウンタ２７３の出力もしくはプログラムカウンタ３０の出力が選択され、アドレスレジスタ２７にセットされる。アドレスレジスタ２７に設定された命令プリフェッチアドレスは命令キャッシュメモリ及び命令プリフェッチバッファに供給される（ステップＳ４２）。また、割込みプリフェッチの場合には命令プリフェッチアドレスとして割込み制御回路４からの割込み処理先頭アドレスが選択されて、アドレスレジスタ２７にセットされる。アドレスレジスタ２７に設定された命令プリフェッチアドレスは命令キャッシュメモリ及び命令プリフェッチバッファに供給される（ステップＳ４３）。命令プリフェッチアドレスに対してはキャッシュヒット／ミス、バッファヒット／ミスが判定され（ステップＳ４４）、既に命令キャッシュメモリ若しくは命令プリフェッチバッファに同一の命令列が存在している場合、主メモリ６からの読込みを抑制（命令プリフェッチ動作を終了）し、外部バスでの無駄なトランズアクションを防いでいる（ステップＳ４４＝ＹＥＳ）。
【００４９】
命令キャッシュメモリ及び命令プリフェッチバッファに同一の命令列が存在しない場合（ステップＳ４４＝ＮＯ）、通常プリフェッチかを判定し（ステップＳ４７）、割込みプリフェッチの場合には、プリフェッチバッファは読込み完了かの判定（ステップＳ４９＝ＹＥＳ）を待って、バッファーデータ部２３の１ライン分の命令を命令プリフェッチバッファに読込み開始する（ステップＳ４５）。通常プリフェッチの場合（ステップＳ４７＝ＹＥＳ）には完了ビットＣを参照してプリフェッチバッファが読込み完了状態にあるかを判定し（ステップＳ４８）、完了状態であればステップＳ４５にて命令プリフェッチバッファへの読込みが開始される。プリフェッチバッファが読込み完了状態でない場合には（ステップＳ４８＝ＮＯ）、既に開始されている命令プリフェッチバッファへの１ライン分の読込み完了を待たずに処理を終了する。仮に読込み完了まで待つとすれば、中央処理装置からの命令プリフェッチの指令がある度に命令プリフェッチバッファへの読込みを完了できるが、その間に発生する緊急の処理要求（例えば割込み要求）に対する応答性が低下される。また、既に開始されている命令プリフェッチバッファへの１ライン分の読込み完了を待たなくても、図３のフローチャートから明らかなように、その後の命令フェッチの指令の一貫として再度同様の命令プリフェッチの指令が発生されるので一切不都合はない。割込みプリフェッチの場合にステップＳ４９＝ＹＥＳの判断を待って命令プリフェッチバッファへの読込みを開始するのは、割込み処理プログラムのプリフェッチを優先させて、割込みに対する応答性を向上させるためである。したがって、割込みプリフェッチの場合には、別の命令プリフェッチの指令に基づく命令読込みが開始されず、かならず割込みプリフェッチが行なわれるため、割込みへの応答性が向上する。
【００５０】
ステップＳ４５の処理は、命令プリフェッチバッファのプリフェッチバッファタグＢＴＡＧにアドレスレジスタ２７のアドレスタグＡＴＡＧの値を設定し、アドレスレジスタ２７の命令プリフェッチアドレスにて外部主メモリ６から命令をバースト読込みを開始する処理とされる。その際、命令プリフェッチバッファの有効ビットＶｂを真（論理値”１”）、読込み完了ビットＣを偽（論理値”０”）にし、命令プリフェッチバッファが動作中であることを示す（ステップＳ４６）。なお、命令プリフェッチバッファの読込み完了ビットＣは、１ライン分の命令列を読込むと真（論理値”１”）にされ、読込み動作完了を示す。
【００５１】
図４において、割込みプリフェッチの場合における割込み処理プログラムの１ライン分の命令読込み（ステップＳ４５）は、図７に示される中央処理装置３の割込み遷移期間内に行われるものである。本実施例において、主メモリ６からプリフェッチした命令をプログラムカウンタ３０に転送することができるのは、制御を簡略化したため少なくとも、８ワードの命令をバッファデータ部２３に読込んだ以降とされる。これはステップＳ６による。したがって本実施例の場合、８ワードの命令を主メモリ６からデータバッファ部２３にバースト転送するために必要なメモリサイクル時間以上の割込み遷移期間が存在して初めて、ＣＰＵが割込み処理に遷移した時点でパイプラインに乱れなく、割込み処理プログラムの命令をフェッチすることができる。但し、前記データバッファ部２３の記憶容量が少なければ（キャッシュラインのライン長が短かければ）、割込み処理プログラムの命令プリフェッチに最低限必要な期間も短くなる。また、割込み遷移制御において割込み処理プログラムの先頭アドレスをプログラムカウンタ３０にセットする直前に割込み完了ビットＣを真値に変更する処理を追加すれば、図３のステップＳ６が実質的に無視される結果、割込み遷移期間に８ワードの命令プリフェッチが完了しなくても、ステップＳ７にて割込み処理プログラムの先頭命令をプログラムカウンタ３０にフェッチすることができる。ただし、図示はしないがステップ８にて実質として割込み完了のタイミングを調整する制御が必要になることは言うまでもない。
【００５２】
〔割込み発生時における割込み制御回路の制御〕  図５には外部割込み発生時の割込み制御回路４の制御フローが示される。割込み制御回路４は、周辺回路７，８より外部割込み要求信号４０１，４０２を受ける。この際、割込み制御回路４は、複数の周辺回路７，８より同時に外部割込みを受けたとき、そのどれを受付るかを判断するために、図示しない割込み優先順位決定回路及び要求信号に対応する受付マスク回路等を備える。そして、それら回路に設定された情報に基づいてどの外部割込みを受付けるかが判断される（ステップＳ５０）。
【００５３】
外部割込みが受け付けられたならば（ステップＳ５１＝ＹＥＳ）、割込み制御回路４は中央処理装置３に割込み信号４０５を与え、現在のプログラム実行を中断して割込み遷移制御に移ることを指示する（ステップＳ５２）。これにより、中央処理装置３は、後述する図７の割込み遷移制御に移り、現在のプログラム実行の停止ならびに割込み処理プログラムからの復帰のための退避処理などを開始する。
【００５４】
割込み制御回路４は中央処理装置３による割込み遷移制御に並行して以下の処理を行う。すなわち、割込み制御回路４は、割込み処理プログラムの開始アドレスを外部の周辺回路から受けるのか、前記テーブル４０が記憶する値を用いるかを割込み要求元に応じて判断する（ステップＳ５３）。前者において割込み開始アドレスは周辺回路７のレジスタ７１から供給される。後者は、周辺回路がそのような割込み開始アドレス供給機能を持たないものへの対応である。この判断は、外部割込み要求信号に付加された情報や外部割込み要求信号を受ける端子に意味を持たせるなどの方法にて決定することができる。それらテーブル４０やレジスタ７１への割込み開始アドレスの設定は、図１及び図２に示されるシステムの始動時（パワーオンリセット時など）で行ったり中央処理装置３が任意時点で行うことができる。或いは固定値を記憶するなど、別の手法を採用することもできる。
【００５５】
周辺回路７より割込み処理プログラムの開始アドレスを受ける場合（ステップＳ５３＝ＹＥＳ）、割込み制御回路４は、どの周辺回路からの外部割込みを受付けたのかをその要求元の周辺回路７に外部割込み応答信号４０３で知らせる（ステップＳ５４）。この際、この応答信号４０３には、周辺回路を特定するための情報や外部割込み要因を示す情報ならびに割込み処理プログラムの開始アドレスを割込み制御回路４が受けるためのプロトコール（受付けを促したり、受付けを完了したことを示すためなどの一連の手続き）を付加することで、周辺回路からの応答性を高めることができる。
【００５６】
割込み制御回路４は、周辺回路より割込み処理プログラムの開始アドレスを受け取ると（ステップＳ５５＝ＹＥＳ）、このアドレスは中央処理装置３とアドレスレジスタ２７に転送され、キャッシュ及びプリフェッチ制御回路２６には信号４０６にて割込み処理プログラムの命令フェッチが指令される（ステップＳ５６）。アドレスレジスタ２７に転送されたアドレスは、割込み処理プログラムの先頭命令プリフェッチのためのプリフェッチアドレスとして利用される。中央処理装置３に転送されるアドレスは、割込み遷移期間後に、割込み処理プログラムの先頭命令を命令レジスタ３１にフェッチするためのアドレスとして利用される。中央処理装置３による割込み遷移制御期間中において、キャッシュ及びプリフェッチ制御回路２６により前記割込み処理プログラムの命令フェッチが行われる結果、命令レジスタ３１にフェッチされるべき割込み処理プログラムの命令は、既に命令キャッシュメモリ若しくは命令プリフェッチバッファに読込まれており、割込み処理プログラムの実行に際して最初から主メモリ６をアクセスしなければならない事態が殆ど解消される。
【００５７】
上記周辺回路８のようにそれ自体が割込み開始アドレスレジスタを備えないものに対しては、割込み制御回路４のテーブル４０のようなレジスタに記憶されたアドレス情報を用いて上記同様の処理が行われる（ステップＳ５３＝ＮＯ）。
【００５８】
図６には内部割込み発生時の割込み制御回路４の制御フローが示される。内部割込みは、中央処理装置３のプログラム実行に伴い発生する割込みのことで、プログラム処理中にエラーが発生したり、内部タイマーなどで所定のイベントが発生したときなどに起きる。基本的な処理内容は図５と同じであり、割込み開始アドレスが割込み制御回路４から与えられ、割込み応答信号４０５が内部割込み要求に対応するものであることを中央処理装置３に返す点が相違され、その他の点は図５と同様のステップＳ６０からＳ６３にて実現されているので、その詳細な説明は省略する。
【００５９】
〔中央処理装置による割込み遷移期間中の処理〕  図７には中央処理装置３の割込み遷移期間中の処理（割込み遷移制御）の一例フローチャートが示される。同図に示される処理は、割込み処理プログラムからの復帰のための内部情報及びプログラムカウンタの値の退避、割込み処理プログラムへの遷移のための内部の初期化、そして割込み処理プログラムの先頭アドレスをプログラムカウンタ３０に設定する処理などとされる。すなわち、中央処理装置３は信号４０５にて割込み受け付けが通知されると、先ず、現在のプログラム実行を停止し、中央処理装置３の内部情報例えばステータスレジスタのプロセッサステータスワード（ＰＳＷ）等をデータプロセッサ１の内部又は外部に退避し、ＰＳＷを初期化する（ステップＳ７０）。次に、割込み処理からの戻りアドレスとしてプログラムカウンタ３０の値若しくはその前後の値（復帰後の処理が中断された処理からの継続処理か、最初から再実行するか等によって相違される）をデータプロセッサ１の内部又は外部に退避する（ステップＳ７１）。その後、必要に応じて特権レベルが最高レベルに変更される（ステップＳ７２）。そして、割込みに関連した情報例えば割込み要因解析情報、そして割込み復帰時に必要なその他のレジスタの値が、内部又は外部に退避される（ステップＳ７３）。上記夫々の退避先は、プログラムカウンタやＰＳＷ用のレジスタと対を成す退避用レジスタ３４、外部主メモリ６、又は内蔵データキャッシュメモリ等とされる。前記処理が終了された後、割込み制御回路４から割込み開始アドレスが供給されていることを条件に（ステップＳ７４＝ＹＥＳ）、割込み制御回路４からの割込み開始アドレスをプログラムカウンタ３０に与えて、割込み処理プログラムに遷移される（ステップＳ７５）。同図で説明したステップＳ７０から”終了”までは、中央処理装置３の割込み遷移期間とされる。
【００６０】
〔ノンブロッキングキャッシュ〕  図８には図１において図示が省略されているノンブロッキングキャッシュの構成を説明するためのブロック図である。図８においてＩＣＡＣＨＥは図１で説明した命令キャッシュメモリ、ＩＰＢは図１で説明した命令プリフェッチバッファ、ＤＣＡＣＨＥはデータキャッシュメモリ、ＷＢＢはライトバックバッファ、ＲＢはリードバッファである。命令プリフェッチバッファＩＰＢの入力、ライトバックバッファＷＢＢの出力、及びリードバッファＲＢの入力は外部インタフェース５５を介して外部データバスＥＤＢに接続される。命令プリフェッチバッファＩＰＢ、リードバッファＲＢ、及びライトバックバッファＷＢＢは命令キャッシュメモリＩＣＡＣＨＥ及びデータキャッシュメモリＤＣＡＣＨＥの動作を抑止しないようにするためのバッファ手段として機能されるものであり、その意味において図８に示されるキャッシュメモリの構成はノンブロッキングキャッシュとされ、更に命令とデータ用にキャッシュメモリが物理的に分離されているので、ハーバードアーキテクチャー形式のノンブロッキングキャッシュとして位置付けられる。その他の構成については図示していないが図１及び図２で説明した構成と全く同一である。斯る構成においては、中央処理装置３が命令キャッシュメモリＩＣＡＣＨＥから命令をフェッチしているとき、これに並行して命令プリフェッチバッファＩＰＢに命令をプリフェッチすることができる。また、命令プリフェッチバッファＩＰＢに命令をプリフェッチしているとき、データキャッシュメモリＤＣＡＣＨＥを介するデータアクセスを行うことができ、例えば主メモリ６との間でのデータの整合（一致）を保つためのライトバックはバスが空いているタイミングを見計らってライトバックバッファＷＢＢを介して後から行うことができる。また、割込み発生時における退避の処理に当たっても主メモリ６をアクセスせずにデータキャッシュメモリＤＣＡＣＨＥのアクセスだけで済む場合も数多くある。
【００６１】
図９にはノンブロッキングキャッシュの別の例が示される。同図に示される例は、命令とデータを同一キャッシュメモリに格納するユニファイドキャッシュメモリを採用した場合である。図９においてＵＣＡＣＨＥは図１で説明した命令キャッシュメモリの構成を備え、データキャッシュメモリと兼用のキャッシュメモリである。ＲＢはリードバッファ、ＷＢ１は第１のライトバッファ、ＷＢ２は第２のライトバッファである。この場合に図８の命令プリフェッチバッファＩＰＢの機能はリードバッファＲＢが実現する。リードバッファＲＢ及びライトバッファＷＢ１，ＷＢ２は、ユニファイドキャッシュメモリＵＣＡＣＨＥの動作を抑止しないようにするためのバッファ手段として機能されるものであり、その意味において図９に示されるキャッシュメモリの構成も同じくノンブロッキングキャッシュとされる。その場合に前記ライトバッファＷＢ２は、かならずしも必要ではない。その他の構成については図示していないが図１及び図２で説明した構成と全く同一である。斯る構成においては、中央処理装置３がユニファイドキャッシュメモリＵＣＡＣＨＥから命令をフェッチしているとき、これに並行してリードバッファＲＢに命令をプリフェッチすることができる。また、リードバッファＲＢに命令をプリフェッチしているとき、ユニファイドキャッシュメモリＵＣＡＣＨＥを介するデータアクセスをライトバッファＷＢ１，ＷＢ２に対して行うことができ、例えば主メモリ６との間でのデータの整合（一致）を保つためのライトバックはバスが空いているタイミングを見計らって第１のライトバッファＷＢ１を介して後から行うことができる。また、割込み発生時における退避の処理に当たっても主メモリ６をアクセスせずに予じめライトバッファＷＢ１，ＷＢ２へ書き込んで対処できる場合も数多くある。
【００６２】
〔シングルチップマイクロコンピュータ〕  図１０には図１で説明したデータプロセッサを更に別のデータプロセッサ即ちマイクロコンピュータそしてデータ処理システム等に展開した場合の実施例が示される。図１０においてＭＣＵとして図示している部分については、公知の半導体集積回路製造技術によって単結晶シリコンのような１個の半導体基板にシングルチップマイクロコンピュータとして構成することも可能である。
【００６３】
図１０においてキャッシュ及びプリフェッチ制御回路２、中央処理装置（ＣＰＵ）３、割込み制御回路４、そして主メモリ６は図１で説明した回路モジュールと同等のものである。図１０において主メモリ６はＲＡＭとＲＯＭを含む。９００で示されキャッシュメモリ装置は図１で説明した命令プリフェッチバッファ及び命令キャッシュメモリを含む回路ブロックである。その他にデータキャッシュメモリ及びライトバックバッファを含んでもよい。また、別のキャッシュメモリ装置９０１を設けてもよい。その他の回路モジュールとして、ハードディスク装置９１０やフロッピーディスク装置９１１を制御するファイル制御装置９０９、フレームバッファ９１３に対する描画制御とモニタ９１４に対する表示制御を行う表示制御装置９１２、バス権監視装置９０２、ダイレクトメモリアクセスコントローラのような高速データ転送装置９０３、システム監視装置９０５、コミュニケーションインタフェース装置９０６、プリンタ９１６やキーボード９１７とインタフェースされるパラレル／シリアルポート９１５などの周辺装置、更に、入出力コントローラ９０４及びメモリコントローラ９０８などを有する。上記キャッシュメモリ装置９００，９０１は、大容量記憶装置（ＲＡＭ及びＲＯＭを含む主メモリ６、ハードディスク装置９１０、フロッピーディスク装置９１１など）の一部の情報を読込む比較的小容量だが大容量記憶装置に比べて命令やデータを高速にアクセスできるようにする。
【００６４】
上記実施例によれば次に示す作用効果を得る。〔１〕割込みが発生してからプログラムが割込み処理に切り替わるまでには、中央処理装置３はプログラムカウンタ３０の値やステータスレジスタ３３の値などをハードウェア的に退避し、更に必要な情報を退避した後に、割込み処理プログラムを実行することになる。パイプライン処理が採用されている場合には、割込み処理プログラムに遷移する前に、割込みによるパイプラインの乱れを最小限にするための各種情報の退避も必要になる。データプロセッサ１は中央処理装置３によるそのような割込み遷移制御の期間に並行して、割込み処理プログラムの命令をプリフェッチする。プリフェッチすべき命令アドレスは割込み制御回路４からアドレスレジスタ２７に与えられ、当該アドレスレジスタ２７の値を用いたプリフェッチ動作の指示は割込み制御回路４からキャッシュ及びプリフェッチ制御回路２６に与えられる。割込み処理プログラムのプリフェッチに必要なメモリアクセスは、割込み遷移期間にバスが空いている時（中央処理装置３がバスアクセスを行っていないとき）に行われる。本実施例に従えば、中央処理装置３は退避用レジスタ３４を有し、また、データキャッシュメモリＤＣＡＣＨＥとライトバックバッファＷＢＢとを備えたノンブロッキングキャッシュメモリが採用されているので、中央処理装置３の内部状態を退避する場合に、一定の情報については退避用レジスタ３４に退避することにより主メモリ６のアクセスを省くことができ、また、退避に際してデータキャッシュメモリＤＣＡＣＨＥがキャッシュヒットであれば同様に主メモリ６のアクセスを省くことができ、更にキャッシュミスでもライトバックバッファＷＢＢの作用によってエントリ入れ替えに際しての主メモリ６への書き戻しを後回しにすることができる。このように割込み遷移制御期間において中央処理装置３による主メモリ６のアクセスが行われない間のバスの空きタイミングによって割込み処理プログラムの命令をプリフェッチすることができる。
【００６５】
〔２〕図７の割込み遷移期間中には、割込み要求に基づく命令プリフェッチ（割込みプリフェッチ）が並行される。すなわち、中央処理装置３が割込み遷移制御を行っている間隙をぬって割込み処理プログラムのプリフェッチが行われることになる。したがって、その実行開始時点を予測し難い割込み処理プログラムに対しても、その命令をプリフェッチすることが可能になる。割込み処理プログラムの命令が命令プリフェッチバッファのバッファデータ部２３にプリフェッチされれば、図７のステップＳ７５にて割込み処理プログラムに遷移するための命令フェッチを命令プリフェッチバッファのバッファデータ部２３からフェッチでき、割込み処理プログラムの実行開始時点から命令キャッシュメモリ及び命令プリフェッチバッファの性能を充分に生かして割込み処理の高速化を実現できる。
【００６６】
〔３〕命令キャッシュメモリを、キャッシュデータ部２０と、キャッシュアドレス部２１と、キャッシュ比較回路２２とによって構成するとき、前記命令プリフェッチバッファを、バッファデータ部２３と、バッファアドレス部２４と、バッファ比較回路２５とを供えて構成することにより、命令キャッシュメモリにおける１キャッシュライン分のラインフェッチと同様の制御によって命令プリフェッチバッファに対するプリフェッチを行うことができるようになる。このとき、上記キャッシュ及びプリフェッチ制御回路２６は、前記命令プリフェッチの指令に対して、前記キャッシュ比較回路２２及びバッファ比較回路２５の双方から不一致の比較結果を検出することにより命令プリフェッチバッファへの命令プリフェッチを起動し（ステップＳ４４＝ＮＯ）、実質的に無駄なプリフェッチを行わない。命令プリフェッチバッファへの命令プリフェッチの完了後における命令アクセスに際して前記バッファ比較回路２５における一致の比較結果を検出することにより前記プリフェッチ完了された命令プリフェッチバッファの内容をキャッシュメモリに書込み制御する（ステップＳ８）。これにより、命令プリフェッチバッファにプリフェッチしてもバッファヒットにならず利用されないような命令によって、既存のキャッシュエントリを命令キャッシュメモリから追い出してしまう不都合を解消できる。このようなプリフェッチの機構に対して、割込み制御回路４０は、割込み要求を受け付けたとき、当該要求に応答するための処理プログラムの先頭アドレス情報に基づいて命令プリフェッチバッファに命令をプリフェッチさせる指令４０６をキャッシュ及びプリフェッチ制御回路２６に与えるから、割込み開始アドレスを元にプリフェッチを行うと言う実に簡潔な構成により、従来のキャッシュメモリに多くの改造ならびに追加回路を必要とせずに上記作用効果を得ることができる。
【００６７】
〔４〕命令プリフェッチの指令発生元として、中央処理装置３の他に割込み制御回路４が追加されている。割込み処理プログラムの先頭アドレスと、プログラムカウンタ３０の値と、プログラムカウンタ３０の値に基づいて生成されたプリフェッチアドレスとから選ばれた一つのアドレスをアドレスレジスタ２７に与える選択手段２７１，２７２を設け、前記キャッシュ及びプリフェッチ制御回路２６は、命令フェッチの指令に対して前記キャッシュ比較回路及びバッファ比較回路の双方から不一致の比較結果を検出することにより選択手段にプログラムカウンタ３０の値を選択させ、命令プリフェッチの指令に対して、その指令発生元が割込み制御回路４である場合には選択手段２７１，２７２に割込み処理プログラムの先頭アドレスを選択させ、命令プリフェッチの指令に対して、その指令発生元が中央処理装置３である場合には選択手段２７１，２７２にプログラムカウンタ３０の値に基づいて生成されたプリフェッチアドレスを選択させるようにすることにより、命令フェッチと命令プリフェッチのための命令アクセスアドレスを保持するアドレスレジスタ２７を、双方からの命令プリフェッチの指令と共に命令フェッチに共用させることができる。
【００６８】
〔５〕上記中央処理装置３によって書き換え可能なテーブル４０やレジスタ７１に割込み開始アドレスを保持させることにより、割込み処理プログラムのマッピングに対する自由度を向上させることができる。
【００６９】
以上本発明者によってなされた発明を実施例に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。例えば、命令プリフェッチバッファは命令キャッシュメモリの複数キャッシュライン分の記憶領域を備えて構成できる。キャッシュメモリの構成は上記実施例に限定されず種々変更可能である。
【００７０】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００７１】
割込みが発生してから中央処理装置が割込み処理プログラムの実行に移るまでの割込み遷移期間に、割込み制御回路は割込み処理プログラムの先頭アドレスを出力してプリフェッチ及びキャッシュ制御回路に当該割込み処理プログラムの命令プリフェッチを指示する。これによって、プリフェッチ及びキャッシュ制御回路は、中央処理装置による割込み遷移制御の期間に並行して、割込み処理プログラムをプリフェッチすることができる。割込み処理プログラムの命令プリフェッチにはメモリアクセスが必要とされる。そのようなメモリアクセスは、中央処理装置による割込み遷移制御の期間におけるバスサイクルで実現される。そのようなバスの空きサイクルは、例えばデータキャッシュメモリを備えることにより、或いはデータキャッシュメモリにバッファを備えたノンブロッキングキャッシュの構成により、さらには中央処理装置が退避用レジスタを内蔵し又はバンクレジスタを備える構成などによって、保証される。このようにして割込み処理プログラムの命令がプリフェッチされることにより、割込み処理プログラムの実行開始時点から命令キャッシュメモリ及び命令プリフェッチバッファの性能を充分に生かしてデータ処理の高速化を実現できる。更に、割込み開始アドレスを元にプリフェッチを行うと言う実に簡潔な制御方式のため、従来のキャッシュメモリに多くの改造ならびに追加回路を必要とせず、換言すればコスト上昇を抑えて、上記効果を得ることができる。
【図面の簡単な説明】
【図１】本発明の一実施例に係るデータプロセッサの部分ブロック図である。
【図２】図１のデータプロセッサを用いたシステム構成例を示すブロック図である。
【図３】中央処理装置からの命令フェッチの指示に基づく命令フェッチ及びプリフェッチ起動の基本的な制御態様の一例フローチャートである。
【図４】命令プリフェッチの制御手順を示すフローチャートである。
【図５】外部割込み発生時の割込み制御回路の一例制御フローチャートである。
【図６】内部割込み発生時の割込み制御回路の一例制御フローチャートである。
【図７】中央処理装置の割込み前処理の一例フローチャートである。
【図８】図１において明瞭に示されていないノンブロッキングキャッシュの構成をハーバードアーキテクチャーを代表として説明するためのブロック図である。
【図９】ノンブロッキングキャッシュの別の例をユニファイドキャッシュメモリを採用したもので示すブロック図である。
【図１０】図１で説明したデータプロセッサを更に別のデータプロセッサ若しくはマイクロコンピュータそしてデータ処理システムに展開した場合の実施例ブロック図である。
【図１１】中央処理装置の一例ブロック図である。
【符号の説明】
１  データプロセッサ
２  命令キャッシュ・プリフェッチ部
２０  キャッシュデータ部
２１  キャッシュアドレス部
ＣＴＡＧ  キャッシュタグ
Ｖｃ  有効ビット
２２  キャッシュ比較回路
２３  バッファデータ部
２４  バッファアドレス部
ＢＴＡＧ  バッファタグ
Ｖｂ  有効ビット
Ｃ  読込み完了ビット
２５  バッファ比較回路
２６  キャッシュ及びプリフェッチ制御回路
２７  アドレスレジスタ
ＡＴＡＧ  アドレスタグ
ＩＤＸ  インデックス
ＷＲＤ  ワード
３  中央処理装置
３０  プログラムカウンタ
４  割込み制御回路
４０  テーブル
４０１，４０２，４０４  割込み要求信号
４０５  割込み信号
４０６  割込み受け付け信号
６  主メモリ
７  周辺回路
８  周辺回路
ＩＰＢ  命令プリフェッチバッファ
ＩＣＡＣＨＥ  命令キャッシュメモリ
ＷＢＢ  ライトバックバッファ
ＤＣＡＣＨＥ  データキャッシュメモリ
ＲＢ  リードバッファ
ＷＢ１，ＷＢ２  ライトバッファ
ＵＣＡＣＨＥ  ユニファイドキャッシュメモリ
【図１】
0003614207.tif 000002
【図２】
0003614207.tif 000003
【図３】
0003614207.tif 000004
【図４】
0003614207.tif 000005
【図５】
0003614207.tif 000006
【図６】
0003614207.tif 000007
【図７】
0003614207.tif 000008
【図８】
0003614207.tif 000009
【図９】
0003614207.tif 000010
【図１０】
0003614207.tif 000011
【図１１】
0003614207.tif 000012