JP3614207B2 - データ処理装置 - Google Patents
データ処理装置 Download PDFInfo
- Publication number
- JP3614207B2 JP3614207B2 JP13739295A JP13739295A JP3614207B2 JP 3614207 B2 JP3614207 B2 JP 3614207B2 JP 13739295 A JP13739295 A JP 13739295A JP 13739295 A JP13739295 A JP 13739295A JP 3614207 B2 JP3614207 B2 JP 3614207B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- prefetch
- cache
- buffer
- address
- 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
Images
Landscapes
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【産業上の利用分野】
本発明は、中央処理装置が命令キャッシュメモリ及び命令プリフェッチバッファを利用してデータ処理を行うデータ処理装置に係り、詳しくは命令プリフェッチ機能を割込みに対しても拡張する技術に関し、例えばデータプロセッサ若しくはマイクロコンピュータそしてその応用システムに適用して有効な技術に関するものである。
【0002】
【従来の技術】
中央処理装置のデータ処理能力を向上させるために、RAM(ランダム・アクセス・メモリ)、ROM(リード・オンリ・メモリ)、ハードディスク装置、フロッピーディスク装置などの大容量記憶装置の一部の情報を読込む比較的小容量だが大容量記憶装置に比べて命令やデータを高速にアクセスできるキャッシュメモリを内蔵または中央処理装置に密接に外付けすることが一般的に行われている。このような中央処理装置は、キャッシュメモリに情報が存在するうちはキャッシュメモリ中の命令やデータを参照しながら実行を継続し、また、実行結果を一時的にキャッシュメモリに格納することで、外部大容量記憶装置をアクセスしながら実行するのに比べて飛躍的にデータ処理能力を向上させることができる。但し、キャッシュメモリに中央処理装置が必要とする情報が存在しない場合、キャッシュメモリは、中央処理装置に命令の実行を中断させて外部大容量記憶装置より必要な情報を読込んで保持する動作を行い、その後中央処理装置に中断していた命令の実行を再開させる。この状態が多発すると逆に中央処理装置の性能が低下することになる。したがって、そのような中央処理装置の性能を最大限に引き出すには、命令実行の中断が無いように実行中に必要な情報を常にキャッシュメモリに存在させることが必要になる。
【0003】
キャッシュメモリは、例えば一つのエントリを構成する1キャッシュラインの情報が外部記憶装置のどの位置(アドレス)に対応しているかを示す実効アドレス(仮想アドレスまたは物理アドレス)を記憶するキャッシュタグ、その実効アドレスを先頭とした連続するnワードの情報を記憶するデータ部、そしてそのキャッシュラインに記憶している情報が有効であるかを示す有効ビットを備える。尚、必要に応じてキャッシュメモリの内容が更新され外部大容量記憶装置の内容と異なることを示すダーティビットなどを設ける場合もある。
【0004】
命令キャッシュメモリにおいては、中央処理装置からの命令アドレスと命令キャッシュメモリ内のキャッシュタグの情報とを基に命令キャッシュメモリ内に有効な情報が存在するか否かの判定が行われ、存在する場合には中央処理装置はキャッシュメモリから命令をフェッチする。存在しない場合には、その命令アドレスを含むキャッシュメモリの1ライン分の情報(nワード分)をラインフェッチと呼ばれるバースト転送にて外部大容量記憶装置から該当キャッシュメモリの所定ラインのデータ部へ読込む。そして、ラインフェッチされた命令が中央処理装置にフェッチされる。命令実行中にキャッシュメモリ内に有効な情報が無い場合、中央処理装置はラインフェッチにて外部記憶装置から所要の命令が読込まれるまで、その命令の実行を開始することができない。この待ち時間、即ち命令実行停止時間をミスヒットペナルティと呼ぶが、中央処理装置の動作速度が飛躍的に速くなり外部記憶装置とのアクセス時間の相違が大きくなるにしたがい、ミスヒットペナルティがデータ処理性能低下へ著しく影響する。
【0005】
そこで、中央処理装置が外部記憶装置との間でデータのやり取りを行っていない期間を利用して、中央処理装置が将来使用すると予想される情報を中央処理装置の実行に先行して読込むというプリフェッチの手法を採用することができる。このプリフェッチは、予想アドレスを用いる以外はラインフェッチとほぼ同様の動作によって実現される。ただし、プリフェッチを行なうと中央処理装置によるキャッシュメモリからの命令フェッチと外部記憶装置からキャッシュメモリへのラインフェッチがキャッシュメモリにおいて競合することがあるため、命令プリフェッチバッファを例えばキャッシュメモリの1ライン分以上備えることがある。これにより、中央処理装置による命令キャッシュメモリからの命令フェッチに並行して上記命令プリフェッチバッファに命令をプリフェッチ可能にすることができる。このような命令キャッシュメモリの構成は一般的にノンブロッキングキャッシュメモリと呼ばれる。尚、命令先取りを行う技術について記載された文献の例としては特開平3−97032号公報がある。
【0006】
【発明が解決しようとする課題】
プログラムの流れが、下位の命令アドレスから上位の命令アドレスに向かって連続している場合、命令プリフェッチは、常に現在の実行アドレスに対し単純に次のキャッシュ・メモリの1ライン分の情報(nワード分)を先取りするだけでも確実に効果がある。しかしながら、現在のプログラムの実行から次に動作するプログラムアドレスを動的にも静的にも推測できない事態(実行すべき命令アドレスが所定事象の発生によって途中で不連続とされる事態)は割込みなどによって生ずる。本明細書において割込みとは、CPUの命令実行途中に発生するアドレスエラーなどの例外事象の発生を含む概念として用いられる。割込みがCPUの外部から要求される場合にはその要因とされる事象はCPUの動作とは非同期で発生され、また、CPUの内部で割込みが発生される場合にも、CPUはそれが何時発生するかを予測することは実質的に不可能である。したがって、そのような割込み要求に応答するための割込み処理プログラムの命令をプリフェッチすることは従来行われておらず、これによる性能の低下は如何ともしがたいことが本発明者によって明らかにされた。このように、高性能化のために内蔵もしくは外付けしたキャッシュメモリに予測できる範囲で命令やデータをプリフェッチし、割込みのようにいつ処理動作が開始されるか予測不可能なプログラムについては、プリフェッチを断念しており、高速化のために備えたキャッシュメモリの性能を十分に生かしきっていないことが本発明者によって明らかにされた。
【0007】
本発明の目的は、実行開始時点を予測できないような割込み処理プログラムについてもプリフェッチを行うことができるデータ処理装置を提供することにある。更に本発明は、従来からある多くの種類のプリフェッチ機能を有するキャッシュメモリや命令プリフェッチバッファの構成を極僅かに変更するだけで、換言すればコスト上昇を抑えて、上記目的を達成できるデータ処理装置を提供しようとするものである。
【0008】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【0009】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【0010】
すなわち、割込みが発生してから中央処理装置による命令実行が割込み処理プログラム(割込み要求に応答するための処理プログラム)に切り替わるまでには必ず時間的な間隙があるため、この時間的隙間に、割込み処理プログラムを命令プリフェッチバッファや命令キャッシュにプリフェッチして、データ処理性能を向上させようとするものである。中央処理装置のデータ処理性能を向上するには、実行する確率が高い命令を高い確率で命令キャッシュメモリに留まらせる必要がある。確率を高くするには、単に命令キャッシュメモリの容量を大きくすることで対処することも可能であるが、システムコストが上昇する難点があり、現実的ではない。この点において本発明は、命令キャッシュメモリと命令プリフェッチバッファのプリフェッチ機構に着眼し、それらに対する命令のプリフェッチアルゴリズム(制御フロー)とキャッシュメモリ及び命令プリフェッチバッファの構造に若干の工夫を加えることで、コストアップを抑えて命令キャッシュメモリの高性能化を実現する。そのための手段を以下に示す。
【0011】
〔1〕データ処理装置(データプロセッサ1)は、命令を実行する中央処理装置(3)と、前記命令をプリフェッチする命令プリフェッチバッファ(23,24,25)と、プリフェッチされた命令を保持する命令キャッシュメモリ(20,21,22)と、命令フェッチの指令に対して命令フェッチアドレスに応ずる命令を前記プリフェッチバッファ、命令キャッシュメモリ、又は外部から取得する制御を行い、命令プリフェッチの指令に対して命令プリフェッチアドレスに応ずる命令を外部から前記プリフェッチバッファに取得する制御を行うキャッシュ及びプリフェッチ制御回路(26)と、割込み要求を受け付けたとき、当該要求に応答するための処理プログラムの先頭アドレス情報に基づいて命令プリフェッチバッファに命令をプリフェッチさせる指示(406)を上記キャッシュ及びプリフェッチ制御回路に与える割込み制御回路(4)とを備えて成る。
【0012】
〔2〕割込み処理プログラムの命令プリフェッチは、割込みが発生した後、中央処理装置が内部状態を退避などするための割込み遷移制御の期間に並行して行われる。この割込み遷移制御の期間において、前記命令プリフェッチ可能な機会を多くするという観点に立てば、割込み制御回路からの割込み受け付けの通知を中央処理装置が受け付けてから当該中央処理装置が当該割込み要求に応答する処理プログラムの実行開始に至るまでの遷移制御期間に中央処理装置の内部状態が退避されるデータ記憶手段を更に備えて、データ処理装置を一つの半導体基板に形成する。例えば前記データ記憶手段をデータキャッシュメモリ(DCACHE)とする場合には、当該データキャッシュメモリと外部との間にライトバックバッファ(WBB)を設けるとよい。尚、ライトバックはコピーバックとも称されている。
【0013】
〔3〕上記割込み制御回路(4)はこれが受け付けた割込み要求に応答するための割込み処理プログラムの先頭アドレス情報をアドレスレジスタ(27)に供給し、前記キャッシュ及びプリフェッチ制御回路(26)は、前記アドレスレジスタに保持されたアドレス情報に基づいて命令プリフェッチを行うように構成できる。また、割込み制御回路(4)は前記割込み処理プログラムの先頭アドレス情報を出力するために、割込み要因に対応させて各種先頭アドレス情報を保持するテーブル(40)を供え、割込み要求を受け付けたとき、当該要求の要因に応ずるアドレスを上記テーブル(40)から上記アドレスレジスタ(27)に供給するように構成できる。このとき、割込み処理プログラムのマッピングに対する自由度を考慮するならば、上記テーブル(40)は上記中央処理装置(3)によって書き換え可能にするとよい。更に前記割込み制御回路(4)は、受け付けられた割込み要求元の周辺回路(7)から、割込み処理プログラムの先頭アドレス情報を受け、これをアドレスレジスタ(27)に与えるようにすることも可能である。
【0014】
〔4〕命令キャッシュメモリが、所定語数の命令を一つのデータブロックとして複数個格納するためのキャッシュデータ部(20)と、キャッシュデータ部の命令とその命令アドレスとを関連付けるためのキャッシュアドレス部(21)と、命令アクセスアドレスの一部(ATAG)がキャッシュアドレス部のアドレス情報(CTAG)に一致するか否かを検出するキャッシュ比較回路(22)とによって構成されるとき、前記命令プリフェッチバッファを、上記キャッシュデータ部の一つのデータブロックの命令語数に等しい語数の命令を一つのデータブロック(キャッシュデータ部20の1ライン分のデータ)として格納可能なバッファデータ部(23)と、該バッファデータ部の命令とその命令アドレスとを関連付けるためのバッファアドレス部(24)と、命令アクセスアドレスの一部(ATAG,IDX)がバッファアドレス部のアドレス情報(BTAG,IDX)に一致するか否かを検出するバッファ比較回路(25)とを供えて構成するとよい。これにより、命令キャッシュメモリにおける1キャッシュライン分のラインフェッチと同様の制御によって命令プリフェッチバッファに対するプリフェッチを行うことができるようになる。このとき、上記キャッシュ及びプリフェッチ制御回路(26)は、前記命令プリフェッチの指令に対して、前記キャッシュ比較回路(22)及びバッファ比較回路(25)の双方から不一致の比較結果を検出することにより命令プリフェッチバッファへの命令プリフェッチを起動し(ステップS44=NO)、実質的に無駄なプリフェッチを行わない。命令プリフェッチバッファへの命令プリフェッチの完了後における命令アクセスに際して前記バッファ比較回路における一致の比較結果を検出することにより前記プリフェッチ完了された命令プリフェッチバッファの内容をキャッシュメモリに書込み制御する(ステップS8)。これにより、命令プリフェッチバッファにプリフェッチしてもバッファヒットにならず利用されないような命令によって、既存のキャッシュエントリを命令キャッシュメモリから追い出してしまう不都合を解消できる。このようなプリフェッチの機構に対して、割込み制御回路40は、割込み要求を受け付けたとき、当該要求に応答するための処理プログラムの先頭アドレス情報に基づいて命令プリフェッチバッファに命令をプリフェッチさせる指令(406)をキャッシュ及びプリフェッチ制御回路26に与える。
【0015】
〔5〕上記手段〔4〕において、命令プリフェッチの指令発生元として、中央処理装置の他に割込み制御回路が追加されている。このとき、命令フェッチと命令プリフェッチのための命令アクセスアドレスを保持するアドレスレジスタを、双方からの命令プリフェッチの指令と共に命令フェッチに共用させるには、割込み処理プログラムの先頭アドレスと、プログラムカウンタの値と、プログラムカウンタの値に基づいて生成されたプリフェッチアドレスとから選ばれた一つのアドレスを前記アドレスレジスタに与える選択手段(271,272)を設け、前記キャッシュ及びプリフェッチ制御回路(26)は、命令フェッチの指令に対して前記キャッシュ比較回路及びバッファ比較回路の双方から不一致の比較結果を検出することにより選択手段にプログラムカウンタ(30)の値を選択させ、命令プリフェッチの指令に対して、その指令発生元が割込み制御回路である場合には選択手段に割込み処理プログラムの先頭アドレスを選択させ、命令プリフェッチの指令に対して、その指令発生元が中央処理装置である場合には選択手段にプログラムカウンタの値に基づいて生成されたプリフェッチアドレスを選択させるようにする。
【0016】
【作用】
上記した手段によれば、割込みが発生してからプログラムが割込み処理に切り替わるまでには、中央処理装置はプログラムカウンタの値やプロセッサステータスレジスタの値などをハードウェア的に退避し、更に必要な情報を退避した後に、割込み処理プログラムを実行することになる。パイプライン処理が採用されている場合には、割込み処理プログラムに移る前に、割込みによるパイプラインの乱れを最小限にするための各種情報の退避も必要になる。データ処理装置はそのような退避などの割込み遷移制御に並行して、割込み処理プログラムの命令をプリフェッチする。プリフェッチすべき命令アドレスは割込み制御回路(4)から例えばアドレスレジスタ(27)に与えられ、当該アドレスレジスタ(27)の値を用いたプリフェッチ動作の指示が割込み制御回路(4)からキャッシュ及びプリフェッチ制御回路(26)に与えられる。割込み処理プログラムのプリフェッチに必要なメモリアクセスの機会は、退避処理等の期間にバスが空いている時に与えられることになる。例えば、同じレジスタを複数組持ち、割込み時にレジスタを切り換えることによってレジスタの退避を行うアーキテクチャが採用されるデータ処理装置にあっては、当該切換え時にバスが空いているので少なくともその間に割込み処理プログラムの命令をプリフェッチすることができる。また、データに関してもデータキャッシュメモリとライトバックバッファとを備えたノンブロッキング・キャッシュ・メモリが採用されたものにあっては、レジスタの退避領域として外部メモリ領域を用いる場合にも、キャッシュヒットにおいては退避すべきデータをキャッシュメモリが蓄えることができるので、その間のバスの空きタイミングによって割込み処理プログラムの命令をプリフェッチすることができる。キャッシュミスの場合にもエントリ入れ替えのための外部メモリへの書き戻しデータをライトバックバッファが一時的に蓄えるので、当該外部メモリへの書き戻しを後回しにすることができる。
【0017】
【実施例】
〔割込み遷移制御とそれに並行する命令プリフェッチ〕 先ず、本発明の一実施例に係るデータプロセッサ1の各部を容易に理解できるように、該データプロセッサ1による命令フェッチ及びプリフェッチのための構成、そして割込み遷移制御とそれに並行する割込み処理プログラムのプリフェッチを概略的に説明する。
【0018】
図1には本発明の一実施例に係るデータプロセッサの部分ブロック図が示される。特に制限されないが、同図に示されるデータプロセッサ1は、公知の半導体集積回路製造技術によって単結晶シリコンなどの1個の半導体基板に形成される。本実施例のデータプロセッサ1は、代表的に示された命令キャッシュ・プリフェッチ部2、演算制御部としての中央処理装置(CPU)3、及び割込み制御回路4を備え、それらは内部データバスIDBと内部アドレスバスIABに接続される。51,52,53,54,55で示されるものは代表的に図示された外部インタフェースであり、外部端子及び入出力用のバッファ回路を備えた回路ブロックを意味する。それら外部インタフェースには図2に例示的に示される主メモリ6、周辺回路7,8が外部データバスEDB及び外部アドレスバスEABなどを介して接続される。
【0019】
上記命令キャッシュ・プリフェッチ部2は、命令キャッシュメモリ(20,21,22)と、当該命令キャッシュメモリのための命令プリフェッチバッファ(23,24,25)と、キャッシュ及びプリフェッチ制御回路26とを備える。キャッシュ及びプリフェッチ制御回路26は、主メモリ6からの命令フェッチの制御及び命令キャッシュメモリ及び命令プリフェッチバッファの動作を制御する。
【0020】
前記中央処理装置3によって実行されるプログラムは主メモリ6に格納され、中央処理装置が最近実行した複数の命令は命令キャッシュメモリのキャッシュデータ部20に格納されることになる。命令プリフェッチバッファのバッファデータ部23は、命令キャッシュメモリにおけるキャッシュミス時に主メモリ6から読出されたデータ、又は命令プリフェッチのために主メモリ6から読出されたデータが一時的に格納されるバッファメモリである。キャッシュ及びプリフェッチ制御回路26は、バッファデータ部23に所定語数(本実施例に従えば8ワード)の命令が格納され、それが利用される状態になったとき(バッファヒット)、その命令列をキャッシュデータ部20に新たなエントリとして内部転送する。中央処理装置3が次に実行すべき命令アドレスはプログラムカウンタ30が保持する。
【0021】
中央処理装置3による命令フェッチにおいて、プログラムカウンタ30の命令アドレスに対応する命令が命令キャッシュデータ部20に存在するか否かは、キャッシュ比較回路22がキャッシュアドレス部21の内容を参照して判断し、その結果がキャッシュヒット信号221にてキャッシュ及びプリフェッチ制御回路26に通知される。また、プログラムカウンタ30の命令アドレスに対応する命令がバッファデータ部23に存在するか否かは、バッファ比較回路25がバッファアドレス部24の内容を参照して判断し、その結果がバッファヒット信号251にてキャッシュ及びプリフェッチ制御回路26に通知される。キャッシュ及びプリフェッチ制御回路26は、信号221にてキャッシュヒットが通知された場合にはプログラムカウンタ30の命令アドレスに対応する命令をキャッシュデータ部20から命令レジスタ31に転送させる。信号221にてキャッシュミスが通知され、且つ信号251にてバッファヒットが通知された場合にキャッシュ及びプリフェッチ制御回路26は、プログラムカウンタ30の命令アドレスに対応する命令をバッファデータ部23から命令レジスタ31に転送させる。信号221にてキャッシュミスが通知され且つ信号251にてバッファミスが通知された場合にキャッシュ及びプリフェッチ制御回路26は、プログラムカウンタ30の命令アドレスをアドレスレジスタ27を介して主メモリ6に与え、それによって主メモリ6から読出された命令をバッファデータ部23を通して命令レジスタ31に転送する。このときのプログラムカウンタ30の命令アドレスは、セレクタ272,271を経由してアドレスレジスタ27に与えられる。主メモリ6に対するアクセスはバーストアクセスとされ、全部で8ワード分の命令がバッファデータ部23に格納され、且つ信号251にてバッファヒットが通知された場合に、当該8ワードの命令が新たなエントリとしてキャッシュデータ部20に格納される。
【0022】
キャッシュ及びプリフェッチ制御回路26は、中央処理装置3がバスアクセスを行っていないとき命令プリフェッチを行う。命令プリフェッチのための主メモリ6のアクセスは、前記キャッシュミス且つバッファミスの場合と同様に、主メモリ6に対するバーストアクセスとされ、全部で8ワード分の命令がバッファデータ部23に格納され、且つ前記信号251にてバッファヒットが通知された場合に、当該8ワードの命令が新たなエントリとしてキャッシュデータ部20に格納される。このように命令プリフェッチの場合、バッファデータ部23に格納された命令は、すぐにはキャッシュデータ部20に転送されない。プリフェッチしてもバッファヒットにならないような命令をキャッシュデータ部20の新たなエントリとして追加すると、一度命令実行に利用された既存のエントリを命令キャッシュメモリから追い出すことになって不都合だからである。プリフェッチされるべき命令アドレスは、プログラムカウンタ30の命令アドレスをカウンタ273にて1キャッシュライン分増加(本実施例に従えば+8)させてアドレスレジスタ27に与えられる。アドレスレジスタ27に命令プリフェッチアドレスを与えるタイミングは、中央処理装置3からの命令プリフェッチの指令に同期される。
【0023】
さらに本実施例においては、上記命令プリフェッチのための構成を利用して、割込み制御回路4が割込み処理プログラムのための命令プリフェッチの指令を出す。割込み制御回路4は代表的に図1に示された割込み要求信号401、402、404にて要求される何れかの割込みを受け付けたとき、中央処理装置3に信号405にて割込みを通知し、また、キャッシュ及びプリフェッチ制御回路26に信号406にて割込み処理プログラムのプリフェッチを指令する。信号405にて割込みが通知された中央処理装置3は、割込み処理プログラムからの復帰のために必要とされる現在の内部状態を退避したりするための割込み遷移制御を開始する。このとき割込み制御回路4は、受け付けた割込み要求に対応される割込み処理プログラムの先頭アドレスを、セレクタ272,271を経由し命令プリフェッチアドレスとしてアドレスレジスタ27に供給する。前記信号406にて命令プリフェッチ動作が指示されたキャッシュ及びプリフェッチ制御回路26は、アドレスレジスタ27に供給された割込み処理プログラムの先頭アドレスを用いた命令プリフェッチ動作を、中央処理装置3の前記割込み遷移制御の期間に並行して開始する。
【0024】
前記中央処理装置3は、図11にその一例が示されるように、データレジスタ又はそれに類似するバススイッチ37を介して内部データバスIDBに接続されたプログラムカウンタ30、ステータスレジスタ33、退避用レジスタ34、演算回路35、及び制御回路36を供え、内部アドレスバスIABは演算回路35に結合される。演算回路35は汎用レジスタ351、算術論理演算器352、及びシフタ353等を備える。前記制御回路36は、命令レジスタ31にフェッチされた命令を解読して順次命令を実行するに必要な制御信号を生成すると共に、割込み信号を受け付けてから所定の割込み処理プログラムへ命令実行状態を移すまでの前記割込み遷移制御などを行う。それらを実現するための制御論理は、マイクロプログラム制御又はワイヤードロジック、さらには双方を併用した論理構成を採用することができる。図11においては割込み遷移制御部360が代表的に示されている。割込み遷移制御部360は、割込み信号405が活性化されると、その論理構成に従って制御信号を生成し、復帰時に必要とされる内部情報の退避を行い、その後で割込み処理プログラムへの分岐処理を行う。退避すべき内部情報は、プログラムカウンタ30及びステータスレジスタ33の値、そして汎用レジスタ351の値などとされる。ステータスレジスタ33の値にはプロセッサステータスワード(PSW)を含む。プログラムカウンタ30及びステータスレジスタ33が保有する情報の退避は、多重割込み(所定の割込み処理プログラムの実行中に多重に受け付けられた割込み)でない場合には避用レジスタ34に対して行われ、多重割込みの場合には主メモリ6に対して行われる。汎用レジスタ351が保有する情報の退避は、多くの場合主メモリ6に対して行われる。そのような退避の処理を制御するための制御情報は割込み遷移制御部360がそのハードウェア構成に従って生成する。
【0025】
特に図1には図示を省略しているが、本実施例のデータプロセッサ1は、中央処理装置3による命令実行に利用されるデータを格納するためのデータキャッシュメモリと、データキャッシュメモリのライトバックバッファ(ライトバッファ)とを備えている。データキャッシュメモリ及びライトバックバッファについては図8及び図9に基づいて別に説明するが、データキャッシュメモリは一旦利用された主メモリ6のデータをそのアドレス情報と共に保有する。キャッシュメモリを1次記憶とすると2次記憶としての主メモリとの間で相互に共有されるデータは整合(一致)されなければならない。このとき、ライトアクセスにてキャッシュヒットを生じてキャッシュメモリのエントリが書き換えられた場合、その内容を2次記憶に書き戻す制御手法にはライトスルー方式とライトバック方式がある。ライトスルー方式はキャッシュメモリの書き換えと同時に2次記憶にもデータのライトを行う。ライトバック方式は、ライトアクセスにおいてキャッシュメモリが書き換えられたとき当該書き換えられた内容を、その後キャッシュミスが生じてそのエントリが新たなエントリにリプレースされるときに主メモリに書き戻すという手法である。本実施例のデータプロセッサ1は、特に制限されないが、上記ライトバック方式が採用される。前記ライトバックバッファはデータキャッシュメモリの保有する情報が書き換えられるときにそれを主メモリ6の対応データに反映させるための主メモリ6への書込みデータを一時的に保持するバッファメモリとされる。したがって、主メモリ6を退避先とするメモリアクセスが行われたとき、データキャッシュメモリがそのアクセスアドレスに応ずるエントリを保有している場合には、データプロセッサ1は外部バスアクセスを起動することを要しない。更に、データキャッシュメモリと主メモリ6との間に配置されたライトバックバッファはデータキャッシュメモリのキャッシュミス時にキャッシュエントリをリプレースするとき、主メモリ6に書き戻すべきデータを一時的に蓄えて当該キャッシュミスに係るデータのキャッシュメモリへの書込みを優先させるから、前記書き戻しのための外部バスサイクルの起動を後回しにすることができる。これらにより、割込み遷移制御における前記退避のための処理においては、その全てを外部バスサイクル起動による主メモリ6のアクセスで行う必要はない。換言すれば、中央処理装置3による割込み遷移制御期間中における退避処理において外部バスサイクルが起動されない期間は必ず複数サイクル分存在することになる。したがって、中央処理装置3による割込み遷移制御に並行してキャッシュ及びプリフェッチ制御回路26が割込み処理プログラムを主メモリ6からプリフェッチする動作を保証することができる。
【0026】
〔データプロセッサの全体構成〕 前述の説明にてデータプロセッサ1における命令フェッチとプリフェッチの概略が理解されたところで、データプロセッサ1の各部の詳細を再び図1を参照しながら説明する。
【0027】
上記命令キャッシュメモリは、所定語数のデータを一つのデータブロックとして複数個格納するためのキャッシュデータ部20と、キャッシュデータ部20のデータとそのデータのアドレスとを関連付けるためのキャッシュアドレス部21と、命令アドレスの一部(アドレスタグATAG)がキャッシュアドレス部21のタグ情報(キャッシュタグCTAG)に一致するか否かを検出するキャッシュ比較回路22とを主体として成る。本実施例に従えば、キャッシュデータ部20はワード#0〜ワード#7の8ワード分のデータ記憶領域を複数組備え(ワード#0〜#7が一つのデータブロックを成す)、キャッシュアドレス部21は8ワードのデータ記憶領域(#0〜#7)に対応されるキャッシュタグCTAGとその有効ビットVcの対を備える。8ワードのデータ記憶領域(#0〜#7)とそれに対応されるキャッシュタグCTAG及び有効ビットVcを単にキャッシュラインと称する。ここで、本実施例のデータプロセッサ1において命令アクセスのためのアドレス信号は最下位側からワードWRD、インデックスIDX、アドレスタグATAGとみなすことができる。このときワードWRDは一つのキャッシュラインに含まれるワード#0〜ワード#7から一つを選択するためのアドレス情報とみなすことができる。この例に従えばワードWRDは3ビットとされる。インデックスIDXは複数のキャッシュラインから一つのキャッシュラインを選択するためのアドレス情報とみなすことができる。例えばキャッシュデータ部20が256個のキャッシュラインを有する場合、インデックスIDXは8ビットとされる。前記キャッシュタグCTAGは対応するキャッシュラインのワード#0〜#7に格納される各命令に共通なアドレスタグATAGを保持することになる。前記有効ビットVcはそれが含まれるキャッシュラインの有効(実在又は確定)性をその論理値によって示し、例えば論理値”1”が有効、”0”が無効を示す。
【0028】
命令プリフェッチバッファは、バッファデータ部23と、該バッファデータ部23のデータとそのアドレスとを関連付けるためのバッファアドレス部24と、命令アドレスの一部(アドレスタグATAG及びインデックスIDX)がバッファアドレス部24のアドレス情報(プリフェッチバッファタグBTAG及びインデックスIDX)に一致するか否かを検出するバッファ比較回路25とを主体として成る。上記バッファデータ部23は、上記キャッシュデータ部20と同様にワード#0〜ワード#7の8ワード分のデータ記憶領域を備え、当該データ記憶領域(#0〜#7)は、特に制限されないが、一組設けられている。バッファアドレス部24は、バッファデータ部23に格納される8ワードのデータに対応されるプリフェッチバッファタグBTAG、有効ビットVb、書込み完了ビットCを有する。プリフェッチバッファタグBTAGにはバッファデータ部23のワード#0〜#7に格納される各命令に共通なアドレスタグATAGが保持されることになる。有効ビットVbはバッファデータ部23に含まれるデータの有効性をその論理値によって示し、例えば論理値”1”が有効、”0”が無効を示す。書込み完了ビットCは、命令プリフェッチに際してバッファデータ部23にワード#0〜#7の合計8ワードが書き込まれたか否かをその論理値によって示し、例えば、論理値”1”が書込み完了、”0”が未完了を意味する。
【0029】
バッファデータ部23の各ワード#0〜#7に対応される記憶領域への入力データは主メモリ6から内部データバスIDBを介して供給される。バッファデータ部23に格納された記憶情報はキャッシュデータ部20の所望キャッシュラインの記憶領域#0〜#7に書き込み可能にされる。バッファデータ部23からキャッシュデータ部20への書込みに応じてプリフェッチバッファタグBTAGの情報がキャッシュアドレス部21に供給されてキャッシュタグCTAGとされる。このときのキャッシュラインの選択はバッファアドレス部24のインデックスIDXがセレクタ201を介してキャッシュデータ部20及びキャッシュアドレス部21に供給されることにより行われる。キャッシュデータ部20で選択された1キャッシュラインの記憶領域#0〜#7に格納されたデータはセレクタ200を介して一つのワードが選択される。また、前記セレクタ230はバッファデータ部23の記憶領域#0〜#7の中から一つデータを選択してバイパス経路231に供給する。セレクタ200,230の選択制御は、キャッシュ及びプリフェッチ制御回路26がワードWRDに基づいて行う。尚、図1に示される命令キャッシュメモリはダイレクトマップ形式のキャッシュメモリのように図示されているが、セットアソシアティブ形式を採用するができる。その場合、命令プリフェッチバッファもセットアソシアティブ形式におけるセット数若しくはウェイ数に応じて増設することで実現できる。
【0030】
図1において命令アドレスを保持するレジスタとして、中央処理装置3に含まれるプログラムカウンタ30と、命令キャッシュ・プリフェッチ部2に設けられたアドレスレジスタ27とが図示されている。プログラムカウンタ30は中央処理装置3が次に実行すべき命令アドレスを保有する。アドレスレジスタ27は主メモリ6からフェッチ又はプリフェッチすべき命令アドレスを保持する。アドレスレジスタ27が保持すべき命令アドレスのアドレスタグATAG、インデックスIDX、及びワードWRDは、プログラムカウンタ30、割込み制御回路4又はカウンタ273が出力し、セレクタ271,272でその何れかが選択されて、アドレスレジスタ27に供給される。経路275にはプログラムカウンタ30が保有している命令アドレス情報が供給される。経路274には割込み制御回路4が出力する後述の割込み処理プログラム先頭アドレスが供給される。カウンタ273は、プログラムカウンタ30が保有する命令アドレスに基づいて命令プリフェッチアドレスを生成する。すなわち、カウンタ273はプログラムカウンタ30の値を入力し、それを1キャッシュライン分だけ増加(+8ワード分増加)して出力する。セレクタ271によるカウンタ273の出力選択は、プリフェッチの指令に基づいて行われる。
【0031】
キャッシュデータ部20とキャッシュアドレス部21に対するキャッシュラインの選択はセレクタ201の出力を図示しないデコーダ(インデックスデコーダ)がデコードして行われる。セレクタ201はプログラムカウンタ30が保有するアドレスのインデックスIDX、アドレスレジスタ27が保有するアドレスのインデックスIDX、又はバッファアドレス部24が保有するインデックスIDXを選択して出力する。上記キャッシュ比較回路22は、セレクタ201の出力に基づいて選択されたキャッシュラインの有効ビットVcにてそのキャッシュラインの有効性を判定し、それが有効であることを示すときは、セレクタ220で選択されたアドレスタグATAGがそのキャッシュラインのキャッシュタグCTAGに一致するかを判定し、判定結果が一致である場合にキャッシュヒット信号221を活性化する。これによってキャッシュ及びプリフェッチ制御回路26にキャッシュヒットが通知される。セレクタ220は、プログラムカウンタ30から供給されるアドレスタグATAG又はアドレスレジスタ27から供給されるアドレスタグATAGを選択する。上記バッファ比較回路25は、バッファアドレス部24の有効ビットVbを入力し、それが有効であることを示すときは、セレクタ220で選択されたアドレスタグATAGがそのバッファアドレス部24のプリフェッチバッファタグBTAGに一致するか、そしてセレクタ250で選択されたインデックスIDXがそのバッファアドレス部24のインデックスIDXに一致するかを判定し、夫々の判定結果が一致である場合にバッファヒット信号251を活性化する。これによってキャッシュ及びプリフェッチ制御回路26にバッファヒットが通知される。セレクタ250は、プログラムカウンタ30から供給されるインデックスIDX又はアドレスレジスタ27から供給されるインデックスIDXを選択する。
【0032】
上記割込み制御回路4は、各種割込み要求に対する優先順位付けや割込み要求に対するマスキングのための情報に従って、データプロセッサ1の内部又は外部からの割込み要求を調停して受け付け、受け付けた割込み要求に対して応答を返す制御を行う。図1には外部割込み要求信号401,402とそれに対する応答信号403、そして中央処理装置3からの内部割込み要求信号404が代表的に示されている。信号405は割込み制御回路4が割込みを受け付けたことを中央処理装置3に通知するための割込み信号である。割込み信号405によって中央処理装置3が割込み受け付けを認識すると、当該中央処理装置3は前述のように割込み遷移制御部360の制御に従って、プログラムカウンタ30やステータスレジスタ33などに格納されている情報の退避を行う。退避処理等が済むと、プログラムカウンタ30には、受け付けられた割込み要求に応答するための割込み処理プログラムの先頭アドレス(割込み開始アドレス)がセットされ、これによって中央処理装置3は割込み処理プログラムを実行可能な状態にされる。中央処理装置3がその内部を通常処理プログラムの実行状態から割込み要求に対する割込み処理プログラムの実行可能状態に遷移させるために必要な期間を割込み遷移期間と称する。割込み遷移期間における中央処理装置3の処理の一例については図10に基づいて後述する。
【0033】
前記割込み制御回路4は、中央処理装置3の前記割込み遷移期間に並行して命令キャッシュ・プリフェッチ部2に割込み処理プログラムのプリフェッチを開始させる。すなわち、上記割込み制御回路4は、割込み処理プログラムの先頭アドレスを割込み要因に対応させて保持するテーブル40を供え、例えば周辺回路8からの割込み要求402又は中央処理装置3からの割込み要求403を受け付けたとき、その要求に対応される割込み処理プログラムの先頭アドレスを上記テーブル40から選択し、選択した先頭アドレスの情報を経路274を介して前記アドレスレジスタ27に供給する。また、周辺回路7が、割込み処理プログラムの先頭アドレスを格納するための割込み先頭アドレスレジスタ71を有し、換言すれば、その周辺回路7に対応される割込み処理プログラムの先頭アドレスが前記テーブル40には設定されていない場合、信号403にて割込み要求元に割込み込み受け付けの通知が返されたときに、割込み先頭アドレスレジスタ71が保有するアドレス情報を内部データバスIDBに出力する機能を有する場合、上記割込み制御回路4は、当該周辺回路7からの割込み要求信号401に対して割込みを受け付けると、周辺回路7から出力される割込み先頭アドレスを受け、これを経路274を介してアドレスレジスタ27に与える。上記テーブル40は中央処理装置3によって書き換え可能にされ、ユーザが記述する割込み処理プログラム(割込みハンドラ)に対するアドレスマッピングの自由度を保証する。上記テーブル40は例えば中央処理装置3によってリード・ライト可能な複数のレジスタによって構成することができる。
【0034】
割込み制御回路4は、割込み処理プログラムの先頭アドレスをレジスタ27に与えるとき、その先頭アドレス(割込み開始アドレス)に従って命令をプリフェッチさせる指示を、割込み受け付け信号406にて上記キャッシュ及びプリフェッチ制御回路26に与える。
【0035】
割込み制御回路4から経路274に出力される割込み処理プログラムの先頭アドレスは、中央処理装置3にも供給される。図11の例に従えば、割込み処理プログラムの先頭アドレスは制御回路36のラッチ361に与えられる。中央処理装置3は、割込み信号405による割込みの通知に基づいて割込み遷移制御を行ってから、その割込み処理プログラムの先頭アドレスをラッチ361からプログラムカウンタ30にセットして、割込み処理プログラムの実行に移る。
【0036】
図2において上記周辺回路7には割込み制御論理70と割込み開始アドレスレジスタ71が代表的に示されている。割込み制御論理70は周辺回路7の動作上、中央処理装置3による所定の割込み処理プログラムの実行を要するときに、割込み要求信号401を活性化する。特に制限されないが、割込み応答信号403は割込み要求元に固有の識別情報が含まれる。したがって割込み制御回路4がその割込み要求信号401による割込み要求を受け付けると、周辺回路7に固有の識別情報を含む割込み応答信号403を出力し、これによって周辺回路7は割込み要求が受け付けられたことを認識し、割込み開始アドレスレジスタ71に格納されている割込み処理プログラムの先頭アドレスを外部データバスEDBに出力する。割込み開始アドレスレジスタ71に対する初期設定は中央処理装置3によって行うことができる。外部データバスEDBに出力された割込み処理プログラムの先頭アドレスは外部インタフェース55を介してデータプロセッサ1の割込み制御回路4に取り込まれる。図2に示される周辺回路8は割込みの要求と受け付けを認識する割込み制御論理80を備え、割込み開始アドレスレジスタは保有しない。即ち、当該周辺回路8の割込み要求によって中央処理装置3が実行すべき割込み処理プログラムの先頭アドレスは上記割込み制御回路4のテーブル40に格納されている。
【0037】
前記主メモリ6はデータプロセッサ1のワーク領域と、中央処理装置3の動作プログラム(命令セット)及びデータが格納される記憶領域とを有する。命令キャッシュ・プリフェッチ部2が読み込むべき割込み処理プログラムやその他のプログラムは当該主メモリ6にストアされている。主メモリ6に対するアクセスアドレスは、本実施例に従えば、データプロセッサ1の外部インタフェース54から外部アドレスバスEABを経由して与えられる。この実施例では主メモリ6はワード単位でデータアクセス可能なものとされる。主メモリ6に対する命令フェッチ及び命令プリフェッチのためのアクセスアドレスは、図1のアドレスレジスタ27から与えられる。このとき、命令キャッシュ・プリフェッチ部2はバッファデータ部23への命令プリフェッチをバースト転送にて行うことができるようになっている。主メモリ6それ自体がバースト転送モードを持つ場合には当該バースト転送モードをその主メモリ6の仕様に従って設定し、バースト転送の先頭語のアドレスを供給する。例えば、主メモリ6が8ワード分の情報のバースト転送機能を有する場合、アドレスレジスタ27のワードWRDは最初にフェッチされるべきワードを指定するビット列とされ、当該アドレスレジスタ27のアドレスが主メモリ6に供給される。主メモリ6がバースト転送モードを持たない場合にはキャッシュ及びプリフェッチ制御回路26は、アドレスレジスタ27のワードWRDを最初にフェッチすべきワード指定用のビット列として主メモリ6をアクセスさせ、アクセスの都度ワードWRDを順次更新しながら8回のメモリアクセスによって8ワードの命令をプリフェッチする。すなわちその場合には、キャッシュ及びプリフェッチ制御回路26は、特に図示はしないが、アドレスレジスタ27のワードWRDを3ビットのリングカウンタとして計数動作させる制御を行うことができるようになっている。割込み制御回路4のテーブル40又は周辺回路7の割込み先頭アドレスレジスタ71に格納されている割込み開始アドレスの下位3ビット(ワードWRD)と、プログラムカウンタ30のワードWRDもセレクタ271,272を介してレジスタ27のワードWRDに供給可能にされている。
【0038】
〔命令フェッチ及びプリフェッチ起動の制御態様〕 図3には中央処理装置3からの指令に基づく命令フェッチ及びプリフェッチ起動の動作フローチャートが示される。同図において命令プリフェッチの指令には割込み制御回路4からの命令プリフェッチの指令は含まれていない。
【0039】
中央処理装置3は、現在実行している命令から推測して次に実行するであろう命令をフェッチする指示を、キャッシュ及びプリフェッチ制御回路26に要求する。このとき、中央処理装置3は、命令キャッシュ・プリフェッチ部2に向けてプログラムカウンタ30の保有する命令フェッチアドレスを与える。命令キャッシュ・プリフェッチ部2は、与えられた命令フェッチアドレスを実効アドレスとして、命令フェッチ動作の制御を開始する(ステップS1)。命令フェッチ動作においては、フェッチすべき命令が命令キャッシュメモリのキャッシュデータ部20に存在するか、又は命令プリフェッチバッファのバッファデータ部23に存在するかが検索されることになる。図3では、便宜上、フェッチすべき命令が命令キャッシュメモリに存在する場合、命令プリフェッチバッファに存在する場合、及び双方に存在しない場合に大別してその処理が記述されている。
【0040】
命令フェッチ動作の制御が開始されると、キャッシュデータ部20とキャッシュアドレス部21ではプログラムカウンタ30のインデックスIDXによって一つのキャッシュラインが選択される。選択されたキャッシュラインに有効な命令が既に読込まれているか否かは当該キャッシュラインの有効ビットVcが示し、有効ビットVcが真(論理値”1”)の場合、当該キャッシュラインに含まれるキャッシュタグCTAGとプログラムカウンタ30に含まれるアドレスタグATAGがキャッシュ比較回路22にて比較される。比較結果が一致の場合(ステップS2=YES、且つステップS3=YES)、所要の命令が上記キャッシュラインに存在することがキャッシュヒット信号221にてキャッシュ及びプリフェッチ制御回路26に通知される。これによって、キャッシュ及びプリフェッチ制御回路26は、プログラムカウンタ30のワードWRDの情報に従ってセレクタ200,32を制御し、必要な命令を中央処理装置3の命令レジスタ31に転送(フェッチ)させる(ステップS4)。尚、図1において命令レジスタ31の前段に配置されたセレクタ32はセレクタ200の出力情報又はバイパス経路231からの情報を選択するものであり、キャッシュヒットの時はセレクタ200の出力情報を、キャッシュミスの場合にはバイパス経路231からの情報を選択する。その指示は信号261にてキャッシュ及びプリフェッチ制御回路26から与えられる。
【0041】
特に制限されないが、ステップS4の命令フェッチの後には、中央処理装置3によるバスアクセスが行われていないタイミングを以て中央処理装置3が命令プリフェッチの指令をキャッシュ及びプリフェッチ制御回路26に与える。例えば、そのときのプログラムカウンタ30の命令アドレスがカウンタ273にて1キャッシュライン分増加され、中央処理装置3によるバスアクセスがない期間を利用して、その更新されたアドレス情報(アドレスレジスタ27に格納されている)に基づき命令プリフェッチの動作が開始される。(ステップS5)。命令プリフェッチの指令があったときの処理については図4に基づいて後述する。
【0042】
命令キャッシュメモリでキャッシュミスした場合には、命令プリフェッチバッファでのヒット判定の結果が参照される。即ち、命令プリフェッチバッファにおいて、1キャッシュライン分の命令を格納できるバッファデータ部23に、有効な命令が既に読込まれているか否かは有効ビットVbが示す。有効ビットVbが真(論理値”1”)の場合、バッファアドレス部24のプリフェッチバッファタグBTAG及びインデックスIDXがバッファ比較回路25にてプログラムカウンタ30のアドレスタグATAG及びインデックスIDXと比較される。比較結果が一致の場合(ステップS2=YES、且つステップS3=NO)、必要な命令がバッファデータ部23に存在することが信号251にてキャッシュ及びプリフェッチ制御回路26に通知され、キャッシュ及びプリフェッチ制御回路26は、プログラムカウンタ30のワードWRDの情報に基づいてセレクタ230を制御し、セレクタ230で選択した所要の命令をバイパス経路231を介して中央処理装置3に転送し(ステップS7)、その命令が命令レジスタ31にフェッチされる。
【0043】
このとき、有効ビットVbが真であっても命令プリフェッチバッファが外部主メモリ6より命令を読込み中の場合、即ち、読込み完了ビットCが偽(論理値”0”)の場合、キャッシュ及びプリフェッチ制御回路26は、ステップS6により8ワードのデータの読込み完了後に該当命令を中央処理装置3に転送する。キャッシュ及びプリフェッチ制御回路26は、主メモリ6から命令プリフェッチバッファのバッファデータ部23に第1ワード目の命令をプリフェッチするとき、読込み完了ビットCを偽(論理値”0”)に初期化する。そして、キャッシュ及びプリフェッチ制御回路26は命令プリフェッチバッファのバッファデータ部23への書込みワードデータ数を計数する手段を有し、その計数値が8になったとき読込み完了ビットCを真(論理値”1”)に設定する。
【0044】
主メモリ6から命令プリフェッチバッファのバッファデータ部23にプリフェッチされた8ワードの命令は、命令キャッシュメモリのキャッシュデータ部20における該当キャッシュラインに書込まれ(ステップS8)、命令キャッシュメモリのキャッシュアドレス部21における有効ビットVcが真(論理値”1”=ON)に、かつ、キャッシュタグCTAGにはバッファアドレス部24のバッファタグBTAGの内容が設定される。そして、命令プリフェッチバッファのバッファアドレス部24における有効ビットVbが偽(論理値”0”=OFF)にされる(ステップS9)。これによりそれ以降、命令キャッシュメモリと命令プリフェッチバッファの両方でヒットすることが防止される。そして上記同様、命令プリフェッチが指令される(ステップS10)。
【0045】
尚、命令プリフェッチバッファの内容を命令キャッシュメモリに書き込むときの対応キャッシュラインの選択はバッファアドレス部24が保有しているインデックスIDXの情報を用いる。また、2ウェイ以上のセットアソシアティブ方式の命令キャッシュメモリでは、命令プリフェッチバッファの命令列をどのウェイに書込むかを制御する必要があるが、例えば図示しないが公知のLRU(Least Recent Use)を用いることができる。これは、キャッシュラインのデータ部を入れ換える際の重み付けを行う論理であり、最も最近参照されたキャッシュラインを指すのに用いる。したがって、データ部の入れ替えでは、LRUが指定していない方のキャッシュラインが入れ替えの対象とされる。
【0046】
命令キャッシュメモリにおいてキャッシュミスされ、命令プリフェッチバッファにおいてバッファミスされた場合(ステップS2=NO)、中央処理装置3は主メモリ6より必要な命令を読込むまで命令を実行することができないため、即座に命令プリフェッチ動作が開始される。即ち、キャッシュ及びプリフェッチ制御回路26はアドレスレジスタ27の値(プログラムカウンタ30の命令アドレス)に基づいて、主メモリ6から命令をプリフェッチする動作を開始させる(ステップS12)。これによって、フェッチすべきアドレスの命令が読み込まれると、プログラムカウンタ30のワードWRDの情報に基づいて、セレクタ230が制御され、セレクタ230によって選択された命令がバイパス経路231を通って中央処理装置3に転送され、その命令が命令レジスタ31にフェッチされる(ステップS13,S14)。本実施例においては、中央処理装置3が必要とする命令は主メモリ6から最初に読込まれる。すなわち、中央処理装置3のミスヒット・ペナルティ低減のためにフェッチすべきアドレスの命令を先頭として主メモリ6から8ワードの命令がバースト転送される。したがって、図3の制御フローには、命令プリフェッチバッファに最初に読込んだ1語の命令のみがバイパス経路231を経由して中央処理装置3に転送されるようになっている。さらに、命令プリフェッチバッファが外部の主メモリ6より命令を読込み中(読込み完了ビットCが偽)の場合は、外部バスのトランズアクションの簡素化から命令プリフェッチバッファが動作停止(読込み完了)してからフェッチ動作を開始するようになっている(ステップS11)。
【0047】
〔割込みに基づく命令プリフェッチの起動〕 図3に示される命令プリフェッチの指令は、プログラムカウンタ30の値に従った命令フェッチの指令に起因して発生される。命令プリフェッチのその他の指令要因には、前述のように割込み受け付けにて割込み制御回路4から信号406にてキャッシュ及びプリフェッチ制御回路26に与えられる割込み処理プログラムの命令プリフェッチの指令が存在する。斯る命令プリフェッチの指令は、図5のステップS56若しくはS57又は図6のステップS63にて発生される。図5及び図6の詳細については後述する。
【0048】
〔命令プリフェッチの制御手順〕 図4には命令プリフェッチの指令を受けたときのキャッシュ及びプリフェッチ制御回路26による制御手順が示される。命令プリフェッチの指令があると、その指令は割込みコントローラ4からの命令プリフェッチ(割込みプリフェッチ)の指令か、或いは中央処理装置3による命令実行段階における命令プリフェッチ(通常プリフェッチ)の指令かが判定される(ステップS41)。通常プリフェッチの場合、命令プリフェッチアドレスとしてカウンタ273の出力もしくはプログラムカウンタ30の出力が選択され、アドレスレジスタ27にセットされる。アドレスレジスタ27に設定された命令プリフェッチアドレスは命令キャッシュメモリ及び命令プリフェッチバッファに供給される(ステップS42)。また、割込みプリフェッチの場合には命令プリフェッチアドレスとして割込み制御回路4からの割込み処理先頭アドレスが選択されて、アドレスレジスタ27にセットされる。アドレスレジスタ27に設定された命令プリフェッチアドレスは命令キャッシュメモリ及び命令プリフェッチバッファに供給される(ステップS43)。命令プリフェッチアドレスに対してはキャッシュヒット/ミス、バッファヒット/ミスが判定され(ステップS44)、既に命令キャッシュメモリ若しくは命令プリフェッチバッファに同一の命令列が存在している場合、主メモリ6からの読込みを抑制(命令プリフェッチ動作を終了)し、外部バスでの無駄なトランズアクションを防いでいる(ステップS44=YES)。
【0049】
命令キャッシュメモリ及び命令プリフェッチバッファに同一の命令列が存在しない場合(ステップS44=NO)、通常プリフェッチかを判定し(ステップS47)、割込みプリフェッチの場合には、プリフェッチバッファは読込み完了かの判定(ステップS49=YES)を待って、バッファーデータ部23の1ライン分の命令を命令プリフェッチバッファに読込み開始する(ステップS45)。通常プリフェッチの場合(ステップS47=YES)には完了ビットCを参照してプリフェッチバッファが読込み完了状態にあるかを判定し(ステップS48)、完了状態であればステップS45にて命令プリフェッチバッファへの読込みが開始される。プリフェッチバッファが読込み完了状態でない場合には(ステップS48=NO)、既に開始されている命令プリフェッチバッファへの1ライン分の読込み完了を待たずに処理を終了する。仮に読込み完了まで待つとすれば、中央処理装置からの命令プリフェッチの指令がある度に命令プリフェッチバッファへの読込みを完了できるが、その間に発生する緊急の処理要求(例えば割込み要求)に対する応答性が低下される。また、既に開始されている命令プリフェッチバッファへの1ライン分の読込み完了を待たなくても、図3のフローチャートから明らかなように、その後の命令フェッチの指令の一貫として再度同様の命令プリフェッチの指令が発生されるので一切不都合はない。割込みプリフェッチの場合にステップS49=YESの判断を待って命令プリフェッチバッファへの読込みを開始するのは、割込み処理プログラムのプリフェッチを優先させて、割込みに対する応答性を向上させるためである。したがって、割込みプリフェッチの場合には、別の命令プリフェッチの指令に基づく命令読込みが開始されず、かならず割込みプリフェッチが行なわれるため、割込みへの応答性が向上する。
【0050】
ステップS45の処理は、命令プリフェッチバッファのプリフェッチバッファタグBTAGにアドレスレジスタ27のアドレスタグATAGの値を設定し、アドレスレジスタ27の命令プリフェッチアドレスにて外部主メモリ6から命令をバースト読込みを開始する処理とされる。その際、命令プリフェッチバッファの有効ビットVbを真(論理値”1”)、読込み完了ビットCを偽(論理値”0”)にし、命令プリフェッチバッファが動作中であることを示す(ステップS46)。なお、命令プリフェッチバッファの読込み完了ビットCは、1ライン分の命令列を読込むと真(論理値”1”)にされ、読込み動作完了を示す。
【0051】
図4において、割込みプリフェッチの場合における割込み処理プログラムの1ライン分の命令読込み(ステップS45)は、図7に示される中央処理装置3の割込み遷移期間内に行われるものである。本実施例において、主メモリ6からプリフェッチした命令をプログラムカウンタ30に転送することができるのは、制御を簡略化したため少なくとも、8ワードの命令をバッファデータ部23に読込んだ以降とされる。これはステップS6による。したがって本実施例の場合、8ワードの命令を主メモリ6からデータバッファ部23にバースト転送するために必要なメモリサイクル時間以上の割込み遷移期間が存在して初めて、CPUが割込み処理に遷移した時点でパイプラインに乱れなく、割込み処理プログラムの命令をフェッチすることができる。但し、前記データバッファ部23の記憶容量が少なければ(キャッシュラインのライン長が短かければ)、割込み処理プログラムの命令プリフェッチに最低限必要な期間も短くなる。また、割込み遷移制御において割込み処理プログラムの先頭アドレスをプログラムカウンタ30にセットする直前に割込み完了ビットCを真値に変更する処理を追加すれば、図3のステップS6が実質的に無視される結果、割込み遷移期間に8ワードの命令プリフェッチが完了しなくても、ステップS7にて割込み処理プログラムの先頭命令をプログラムカウンタ30にフェッチすることができる。ただし、図示はしないがステップ8にて実質として割込み完了のタイミングを調整する制御が必要になることは言うまでもない。
【0052】
〔割込み発生時における割込み制御回路の制御〕 図5には外部割込み発生時の割込み制御回路4の制御フローが示される。割込み制御回路4は、周辺回路7,8より外部割込み要求信号401,402を受ける。この際、割込み制御回路4は、複数の周辺回路7,8より同時に外部割込みを受けたとき、そのどれを受付るかを判断するために、図示しない割込み優先順位決定回路及び要求信号に対応する受付マスク回路等を備える。そして、それら回路に設定された情報に基づいてどの外部割込みを受付けるかが判断される(ステップS50)。
【0053】
外部割込みが受け付けられたならば(ステップS51=YES)、割込み制御回路4は中央処理装置3に割込み信号405を与え、現在のプログラム実行を中断して割込み遷移制御に移ることを指示する(ステップS52)。これにより、中央処理装置3は、後述する図7の割込み遷移制御に移り、現在のプログラム実行の停止ならびに割込み処理プログラムからの復帰のための退避処理などを開始する。
【0054】
割込み制御回路4は中央処理装置3による割込み遷移制御に並行して以下の処理を行う。すなわち、割込み制御回路4は、割込み処理プログラムの開始アドレスを外部の周辺回路から受けるのか、前記テーブル40が記憶する値を用いるかを割込み要求元に応じて判断する(ステップS53)。前者において割込み開始アドレスは周辺回路7のレジスタ71から供給される。後者は、周辺回路がそのような割込み開始アドレス供給機能を持たないものへの対応である。この判断は、外部割込み要求信号に付加された情報や外部割込み要求信号を受ける端子に意味を持たせるなどの方法にて決定することができる。それらテーブル40やレジスタ71への割込み開始アドレスの設定は、図1及び図2に示されるシステムの始動時(パワーオンリセット時など)で行ったり中央処理装置3が任意時点で行うことができる。或いは固定値を記憶するなど、別の手法を採用することもできる。
【0055】
周辺回路7より割込み処理プログラムの開始アドレスを受ける場合(ステップS53=YES)、割込み制御回路4は、どの周辺回路からの外部割込みを受付けたのかをその要求元の周辺回路7に外部割込み応答信号403で知らせる(ステップS54)。この際、この応答信号403には、周辺回路を特定するための情報や外部割込み要因を示す情報ならびに割込み処理プログラムの開始アドレスを割込み制御回路4が受けるためのプロトコール(受付けを促したり、受付けを完了したことを示すためなどの一連の手続き)を付加することで、周辺回路からの応答性を高めることができる。
【0056】
割込み制御回路4は、周辺回路より割込み処理プログラムの開始アドレスを受け取ると(ステップS55=YES)、このアドレスは中央処理装置3とアドレスレジスタ27に転送され、キャッシュ及びプリフェッチ制御回路26には信号406にて割込み処理プログラムの命令フェッチが指令される(ステップS56)。アドレスレジスタ27に転送されたアドレスは、割込み処理プログラムの先頭命令プリフェッチのためのプリフェッチアドレスとして利用される。中央処理装置3に転送されるアドレスは、割込み遷移期間後に、割込み処理プログラムの先頭命令を命令レジスタ31にフェッチするためのアドレスとして利用される。中央処理装置3による割込み遷移制御期間中において、キャッシュ及びプリフェッチ制御回路26により前記割込み処理プログラムの命令フェッチが行われる結果、命令レジスタ31にフェッチされるべき割込み処理プログラムの命令は、既に命令キャッシュメモリ若しくは命令プリフェッチバッファに読込まれており、割込み処理プログラムの実行に際して最初から主メモリ6をアクセスしなければならない事態が殆ど解消される。
【0057】
上記周辺回路8のようにそれ自体が割込み開始アドレスレジスタを備えないものに対しては、割込み制御回路4のテーブル40のようなレジスタに記憶されたアドレス情報を用いて上記同様の処理が行われる(ステップS53=NO)。
【0058】
図6には内部割込み発生時の割込み制御回路4の制御フローが示される。内部割込みは、中央処理装置3のプログラム実行に伴い発生する割込みのことで、プログラム処理中にエラーが発生したり、内部タイマーなどで所定のイベントが発生したときなどに起きる。基本的な処理内容は図5と同じであり、割込み開始アドレスが割込み制御回路4から与えられ、割込み応答信号405が内部割込み要求に対応するものであることを中央処理装置3に返す点が相違され、その他の点は図5と同様のステップS60からS63にて実現されているので、その詳細な説明は省略する。
【0059】
〔中央処理装置による割込み遷移期間中の処理〕 図7には中央処理装置3の割込み遷移期間中の処理(割込み遷移制御)の一例フローチャートが示される。同図に示される処理は、割込み処理プログラムからの復帰のための内部情報及びプログラムカウンタの値の退避、割込み処理プログラムへの遷移のための内部の初期化、そして割込み処理プログラムの先頭アドレスをプログラムカウンタ30に設定する処理などとされる。すなわち、中央処理装置3は信号405にて割込み受け付けが通知されると、先ず、現在のプログラム実行を停止し、中央処理装置3の内部情報例えばステータスレジスタのプロセッサステータスワード(PSW)等をデータプロセッサ1の内部又は外部に退避し、PSWを初期化する(ステップS70)。次に、割込み処理からの戻りアドレスとしてプログラムカウンタ30の値若しくはその前後の値(復帰後の処理が中断された処理からの継続処理か、最初から再実行するか等によって相違される)をデータプロセッサ1の内部又は外部に退避する(ステップS71)。その後、必要に応じて特権レベルが最高レベルに変更される(ステップS72)。そして、割込みに関連した情報例えば割込み要因解析情報、そして割込み復帰時に必要なその他のレジスタの値が、内部又は外部に退避される(ステップS73)。上記夫々の退避先は、プログラムカウンタやPSW用のレジスタと対を成す退避用レジスタ34、外部主メモリ6、又は内蔵データキャッシュメモリ等とされる。前記処理が終了された後、割込み制御回路4から割込み開始アドレスが供給されていることを条件に(ステップS74=YES)、割込み制御回路4からの割込み開始アドレスをプログラムカウンタ30に与えて、割込み処理プログラムに遷移される(ステップS75)。同図で説明したステップS70から”終了”までは、中央処理装置3の割込み遷移期間とされる。
【0060】
〔ノンブロッキングキャッシュ〕 図8には図1において図示が省略されているノンブロッキングキャッシュの構成を説明するためのブロック図である。図8においてICACHEは図1で説明した命令キャッシュメモリ、IPBは図1で説明した命令プリフェッチバッファ、DCACHEはデータキャッシュメモリ、WBBはライトバックバッファ、RBはリードバッファである。命令プリフェッチバッファIPBの入力、ライトバックバッファWBBの出力、及びリードバッファRBの入力は外部インタフェース55を介して外部データバスEDBに接続される。命令プリフェッチバッファIPB、リードバッファRB、及びライトバックバッファWBBは命令キャッシュメモリICACHE及びデータキャッシュメモリDCACHEの動作を抑止しないようにするためのバッファ手段として機能されるものであり、その意味において図8に示されるキャッシュメモリの構成はノンブロッキングキャッシュとされ、更に命令とデータ用にキャッシュメモリが物理的に分離されているので、ハーバードアーキテクチャー形式のノンブロッキングキャッシュとして位置付けられる。その他の構成については図示していないが図1及び図2で説明した構成と全く同一である。斯る構成においては、中央処理装置3が命令キャッシュメモリICACHEから命令をフェッチしているとき、これに並行して命令プリフェッチバッファIPBに命令をプリフェッチすることができる。また、命令プリフェッチバッファIPBに命令をプリフェッチしているとき、データキャッシュメモリDCACHEを介するデータアクセスを行うことができ、例えば主メモリ6との間でのデータの整合(一致)を保つためのライトバックはバスが空いているタイミングを見計らってライトバックバッファWBBを介して後から行うことができる。また、割込み発生時における退避の処理に当たっても主メモリ6をアクセスせずにデータキャッシュメモリDCACHEのアクセスだけで済む場合も数多くある。
【0061】
図9にはノンブロッキングキャッシュの別の例が示される。同図に示される例は、命令とデータを同一キャッシュメモリに格納するユニファイドキャッシュメモリを採用した場合である。図9においてUCACHEは図1で説明した命令キャッシュメモリの構成を備え、データキャッシュメモリと兼用のキャッシュメモリである。RBはリードバッファ、WB1は第1のライトバッファ、WB2は第2のライトバッファである。この場合に図8の命令プリフェッチバッファIPBの機能はリードバッファRBが実現する。リードバッファRB及びライトバッファWB1,WB2は、ユニファイドキャッシュメモリUCACHEの動作を抑止しないようにするためのバッファ手段として機能されるものであり、その意味において図9に示されるキャッシュメモリの構成も同じくノンブロッキングキャッシュとされる。その場合に前記ライトバッファWB2は、かならずしも必要ではない。その他の構成については図示していないが図1及び図2で説明した構成と全く同一である。斯る構成においては、中央処理装置3がユニファイドキャッシュメモリUCACHEから命令をフェッチしているとき、これに並行してリードバッファRBに命令をプリフェッチすることができる。また、リードバッファRBに命令をプリフェッチしているとき、ユニファイドキャッシュメモリUCACHEを介するデータアクセスをライトバッファWB1,WB2に対して行うことができ、例えば主メモリ6との間でのデータの整合(一致)を保つためのライトバックはバスが空いているタイミングを見計らって第1のライトバッファWB1を介して後から行うことができる。また、割込み発生時における退避の処理に当たっても主メモリ6をアクセスせずに予じめライトバッファWB1,WB2へ書き込んで対処できる場合も数多くある。
【0062】
〔シングルチップマイクロコンピュータ〕 図10には図1で説明したデータプロセッサを更に別のデータプロセッサ即ちマイクロコンピュータそしてデータ処理システム等に展開した場合の実施例が示される。図10においてMCUとして図示している部分については、公知の半導体集積回路製造技術によって単結晶シリコンのような1個の半導体基板にシングルチップマイクロコンピュータとして構成することも可能である。
【0063】
図10においてキャッシュ及びプリフェッチ制御回路2、中央処理装置(CPU)3、割込み制御回路4、そして主メモリ6は図1で説明した回路モジュールと同等のものである。図10において主メモリ6はRAMとROMを含む。900で示されキャッシュメモリ装置は図1で説明した命令プリフェッチバッファ及び命令キャッシュメモリを含む回路ブロックである。その他にデータキャッシュメモリ及びライトバックバッファを含んでもよい。また、別のキャッシュメモリ装置901を設けてもよい。その他の回路モジュールとして、ハードディスク装置910やフロッピーディスク装置911を制御するファイル制御装置909、フレームバッファ913に対する描画制御とモニタ914に対する表示制御を行う表示制御装置912、バス権監視装置902、ダイレクトメモリアクセスコントローラのような高速データ転送装置903、システム監視装置905、コミュニケーションインタフェース装置906、プリンタ916やキーボード917とインタフェースされるパラレル/シリアルポート915などの周辺装置、更に、入出力コントローラ904及びメモリコントローラ908などを有する。上記キャッシュメモリ装置900,901は、大容量記憶装置(RAM及びROMを含む主メモリ6、ハードディスク装置910、フロッピーディスク装置911など)の一部の情報を読込む比較的小容量だが大容量記憶装置に比べて命令やデータを高速にアクセスできるようにする。
【0064】
上記実施例によれば次に示す作用効果を得る。〔1〕割込みが発生してからプログラムが割込み処理に切り替わるまでには、中央処理装置3はプログラムカウンタ30の値やステータスレジスタ33の値などをハードウェア的に退避し、更に必要な情報を退避した後に、割込み処理プログラムを実行することになる。パイプライン処理が採用されている場合には、割込み処理プログラムに遷移する前に、割込みによるパイプラインの乱れを最小限にするための各種情報の退避も必要になる。データプロセッサ1は中央処理装置3によるそのような割込み遷移制御の期間に並行して、割込み処理プログラムの命令をプリフェッチする。プリフェッチすべき命令アドレスは割込み制御回路4からアドレスレジスタ27に与えられ、当該アドレスレジスタ27の値を用いたプリフェッチ動作の指示は割込み制御回路4からキャッシュ及びプリフェッチ制御回路26に与えられる。割込み処理プログラムのプリフェッチに必要なメモリアクセスは、割込み遷移期間にバスが空いている時(中央処理装置3がバスアクセスを行っていないとき)に行われる。本実施例に従えば、中央処理装置3は退避用レジスタ34を有し、また、データキャッシュメモリDCACHEとライトバックバッファWBBとを備えたノンブロッキングキャッシュメモリが採用されているので、中央処理装置3の内部状態を退避する場合に、一定の情報については退避用レジスタ34に退避することにより主メモリ6のアクセスを省くことができ、また、退避に際してデータキャッシュメモリDCACHEがキャッシュヒットであれば同様に主メモリ6のアクセスを省くことができ、更にキャッシュミスでもライトバックバッファWBBの作用によってエントリ入れ替えに際しての主メモリ6への書き戻しを後回しにすることができる。このように割込み遷移制御期間において中央処理装置3による主メモリ6のアクセスが行われない間のバスの空きタイミングによって割込み処理プログラムの命令をプリフェッチすることができる。
【0065】
〔2〕図7の割込み遷移期間中には、割込み要求に基づく命令プリフェッチ(割込みプリフェッチ)が並行される。すなわち、中央処理装置3が割込み遷移制御を行っている間隙をぬって割込み処理プログラムのプリフェッチが行われることになる。したがって、その実行開始時点を予測し難い割込み処理プログラムに対しても、その命令をプリフェッチすることが可能になる。割込み処理プログラムの命令が命令プリフェッチバッファのバッファデータ部23にプリフェッチされれば、図7のステップS75にて割込み処理プログラムに遷移するための命令フェッチを命令プリフェッチバッファのバッファデータ部23からフェッチでき、割込み処理プログラムの実行開始時点から命令キャッシュメモリ及び命令プリフェッチバッファの性能を充分に生かして割込み処理の高速化を実現できる。
【0066】
〔3〕命令キャッシュメモリを、キャッシュデータ部20と、キャッシュアドレス部21と、キャッシュ比較回路22とによって構成するとき、前記命令プリフェッチバッファを、バッファデータ部23と、バッファアドレス部24と、バッファ比較回路25とを供えて構成することにより、命令キャッシュメモリにおける1キャッシュライン分のラインフェッチと同様の制御によって命令プリフェッチバッファに対するプリフェッチを行うことができるようになる。このとき、上記キャッシュ及びプリフェッチ制御回路26は、前記命令プリフェッチの指令に対して、前記キャッシュ比較回路22及びバッファ比較回路25の双方から不一致の比較結果を検出することにより命令プリフェッチバッファへの命令プリフェッチを起動し(ステップS44=NO)、実質的に無駄なプリフェッチを行わない。命令プリフェッチバッファへの命令プリフェッチの完了後における命令アクセスに際して前記バッファ比較回路25における一致の比較結果を検出することにより前記プリフェッチ完了された命令プリフェッチバッファの内容をキャッシュメモリに書込み制御する(ステップS8)。これにより、命令プリフェッチバッファにプリフェッチしてもバッファヒットにならず利用されないような命令によって、既存のキャッシュエントリを命令キャッシュメモリから追い出してしまう不都合を解消できる。このようなプリフェッチの機構に対して、割込み制御回路40は、割込み要求を受け付けたとき、当該要求に応答するための処理プログラムの先頭アドレス情報に基づいて命令プリフェッチバッファに命令をプリフェッチさせる指令406をキャッシュ及びプリフェッチ制御回路26に与えるから、割込み開始アドレスを元にプリフェッチを行うと言う実に簡潔な構成により、従来のキャッシュメモリに多くの改造ならびに追加回路を必要とせずに上記作用効果を得ることができる。
【0067】
〔4〕命令プリフェッチの指令発生元として、中央処理装置3の他に割込み制御回路4が追加されている。割込み処理プログラムの先頭アドレスと、プログラムカウンタ30の値と、プログラムカウンタ30の値に基づいて生成されたプリフェッチアドレスとから選ばれた一つのアドレスをアドレスレジスタ27に与える選択手段271,272を設け、前記キャッシュ及びプリフェッチ制御回路26は、命令フェッチの指令に対して前記キャッシュ比較回路及びバッファ比較回路の双方から不一致の比較結果を検出することにより選択手段にプログラムカウンタ30の値を選択させ、命令プリフェッチの指令に対して、その指令発生元が割込み制御回路4である場合には選択手段271,272に割込み処理プログラムの先頭アドレスを選択させ、命令プリフェッチの指令に対して、その指令発生元が中央処理装置3である場合には選択手段271,272にプログラムカウンタ30の値に基づいて生成されたプリフェッチアドレスを選択させるようにすることにより、命令フェッチと命令プリフェッチのための命令アクセスアドレスを保持するアドレスレジスタ27を、双方からの命令プリフェッチの指令と共に命令フェッチに共用させることができる。
【0068】
〔5〕上記中央処理装置3によって書き換え可能なテーブル40やレジスタ71に割込み開始アドレスを保持させることにより、割込み処理プログラムのマッピングに対する自由度を向上させることができる。
【0069】
以上本発明者によってなされた発明を実施例に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。例えば、命令プリフェッチバッファは命令キャッシュメモリの複数キャッシュライン分の記憶領域を備えて構成できる。キャッシュメモリの構成は上記実施例に限定されず種々変更可能である。
【0070】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【0071】
割込みが発生してから中央処理装置が割込み処理プログラムの実行に移るまでの割込み遷移期間に、割込み制御回路は割込み処理プログラムの先頭アドレスを出力してプリフェッチ及びキャッシュ制御回路に当該割込み処理プログラムの命令プリフェッチを指示する。これによって、プリフェッチ及びキャッシュ制御回路は、中央処理装置による割込み遷移制御の期間に並行して、割込み処理プログラムをプリフェッチすることができる。割込み処理プログラムの命令プリフェッチにはメモリアクセスが必要とされる。そのようなメモリアクセスは、中央処理装置による割込み遷移制御の期間におけるバスサイクルで実現される。そのようなバスの空きサイクルは、例えばデータキャッシュメモリを備えることにより、或いはデータキャッシュメモリにバッファを備えたノンブロッキングキャッシュの構成により、さらには中央処理装置が退避用レジスタを内蔵し又はバンクレジスタを備える構成などによって、保証される。このようにして割込み処理プログラムの命令がプリフェッチされることにより、割込み処理プログラムの実行開始時点から命令キャッシュメモリ及び命令プリフェッチバッファの性能を充分に生かしてデータ処理の高速化を実現できる。更に、割込み開始アドレスを元にプリフェッチを行うと言う実に簡潔な制御方式のため、従来のキャッシュメモリに多くの改造ならびに追加回路を必要とせず、換言すればコスト上昇を抑えて、上記効果を得ることができる。
【図面の簡単な説明】
【図1】本発明の一実施例に係るデータプロセッサの部分ブロック図である。
【図2】図1のデータプロセッサを用いたシステム構成例を示すブロック図である。
【図3】中央処理装置からの命令フェッチの指示に基づく命令フェッチ及びプリフェッチ起動の基本的な制御態様の一例フローチャートである。
【図4】命令プリフェッチの制御手順を示すフローチャートである。
【図5】外部割込み発生時の割込み制御回路の一例制御フローチャートである。
【図6】内部割込み発生時の割込み制御回路の一例制御フローチャートである。
【図7】中央処理装置の割込み前処理の一例フローチャートである。
【図8】図1において明瞭に示されていないノンブロッキングキャッシュの構成をハーバードアーキテクチャーを代表として説明するためのブロック図である。
【図9】ノンブロッキングキャッシュの別の例をユニファイドキャッシュメモリを採用したもので示すブロック図である。
【図10】図1で説明したデータプロセッサを更に別のデータプロセッサ若しくはマイクロコンピュータそしてデータ処理システムに展開した場合の実施例ブロック図である。
【図11】中央処理装置の一例ブロック図である。
【符号の説明】
1 データプロセッサ
2 命令キャッシュ・プリフェッチ部
20 キャッシュデータ部
21 キャッシュアドレス部
CTAG キャッシュタグ
Vc 有効ビット
22 キャッシュ比較回路
23 バッファデータ部
24 バッファアドレス部
BTAG バッファタグ
Vb 有効ビット
C 読込み完了ビット
25 バッファ比較回路
26 キャッシュ及びプリフェッチ制御回路
27 アドレスレジスタ
ATAG アドレスタグ
IDX インデックス
WRD ワード
3 中央処理装置
30 プログラムカウンタ
4 割込み制御回路
40 テーブル
401,402,404 割込み要求信号
405 割込み信号
406 割込み受け付け信号
6 主メモリ
7 周辺回路
8 周辺回路
IPB 命令プリフェッチバッファ
ICACHE 命令キャッシュメモリ
WBB ライトバックバッファ
DCACHE データキャッシュメモリ
RB リードバッファ
WB1,WB2 ライトバッファ
UCACHE ユニファイドキャッシュメモリ
Claims (11)
- 命令を実行する中央処理装置と、前記命令をプリフェッチする命令プリフェッチバッファと、プリフェッチされた命令を保持する命令キャッシュメモリと、命令フェッチの指令に対して命令フェッチアドレスに応ずる命令を前記プリフェッチバッファ、命令キャッシュメモリ、又は外部から取得する制御を行い、命令プリフェッチの指令に対して命令プリフェッチアドレスに応ずる命令を外部から前記プリフェッチバッファに取得する制御を行うキャッシュ及びプリフェッチ制御回路と、割込み要求を受け付けたとき、当該要求に応答するための処理プログラムの先頭アドレス情報に基づいて命令プリフェッチバッファに命令をプリフェッチさせる指示を上記キャッシュ及びプリフェッチ制御回路に与える割込み制御回路と、前記中央処理装置に前記命令キャッシュメモリから命令を供給するか前記命令プリフェッチバッファから命令を供給するかを選択する選択回路を備え、前記命令プリフェッチバッファは、前記キャッシュデータ部の一つのデータブロックの命令語数に等しい語数の命令を一つのデータブロックとして格納可能なバッファデータ部と、バッファデータ部の命令とその命令アドレスとを関連付けるためのバッファアドレス部と、命令アクセスアドレスの一部がバッファアドレス部のアドレス情報に一致するか否かを検出するバッファ比較回路とを備え、前記選択回路は、前記割り込みを受け付けた際に、前記処理プログラムの先頭アドレス情報に対応する命令が前記キャッシュメモリに格納されている場合、前記キャッシュメモリを選択し、前記処理プログラムの先頭アドレス情報に対応する命令が前記命令キャッシュメモリに格納されておらず、且つ、前記命令プリフェッチバッファにも格納されていなかった場合、前記キャッシュ及びプリフェッチ制御回路は、前記命令プリフェッチアドレスに応ずる命令を外部から前記プリフェッチバッファに取得するように制御し、且つ、前記選択回路は、対応する命令が前記プリフェッチバッファに格納された時点で、前記プリフェッチバッファを選択して前記中央処理装置に当該命令を転送し、さらに、前記キャッシュ及びプリフェッチ制御回路は、その後、再び当該命令をプリフェッチさせる指示が前記キャッシュ及びプリフェッチ制御回路に与えられた際に、前記バッファ比較回路における一致の比較結果を検出した時点で、前記命令プリフェッチバッファに格納されていた当該命令を前記命令キャッシュメモリに書き込み制御することを特徴とするデータ処理装置。
- 前記割込み制御回路からの割込み受け付けの通知を中央処理装置が受け付けてから当該中央処理装置が当該割込み要求に応答する処理プログラムの実行開始に至るまでの遷移制御期間に中央処理装置の内部状態の退避に利用されるデータ記憶手段を更に備え、全体として一つの半導体基板に形成されて成るものであることを特徴とする請求項1記載のデータ処理装置。
- 前記データ記憶手段はデータキャッシュメモリであり、当該データキャッシュメモリと外部との間にライトバックバッファとを備えて成るものであることを特徴とする請求項2記載のデータ処理装置。
- 前記割込み制御回路は、これが受け付けた割込み要求に応答するための処理プログラムの先頭アドレス情報をアドレスレジスタに供給し、前記キャッシュ及びプリフェッチ制御回路は、前記アドレスレジスタに保持されたアドレス情報に基づいて命令プリフェッチを行うものであることを特徴とする請求項1乃至3の何れか1項記載のデータ処理装置。
- 前記割込み制御回路は、割込み要求に応答するための処理プログラムの先頭アドレス情報を割込み要因に対応させて記憶するテーブルを備え、割込み要求を受け付けたとき、当該要求の要因に応ずるアドレス情報を当該テーブルから前記アドレスレジスタに供給するものであることを特徴とする請求項4記載のデータ処理装置。
- 前記割込み制御回路は更に、受け付けられた割込み要求元の周辺回路から、割込み要求に応答するための処理プログラムの先頭アドレス情報を受け、これを前記アドレスレジスタに与えるものであることを特徴とする請求項5記載のデータ処理装置。
- 前記テーブルは前記中央処理装置によって書き換え可能にされて成るものであることを特徴とする請求項5又は6記載のデータ処理装置。
- 命令を実行する中央処理装置と、前記命令をプリフェッチする命令プリフェッチバッファと、プリフェッチされた命令を保持する命令キャッシュメモリと、命令フェッチの指令に対して命令フェッチアドレスに応ずる命令を前記プリフェッチバッファ、命令キャッシュメモリ、又は外部から取得する制御を行い、命令プリフェッチの指令に対して命令プリフェッチアドレスに応ずる命令を外部から前記プリフェッチバッファに取得する制御を行うキャッシュ及びプリフェッチ制御回路とを備え、前記命令キャッシュメモリは、所定語数の命令を一つのデータブロックとして複数個格納するためのキャッシュデータ部と、キャッシュデータ部の命令とその命令アドレスとを関連付けるためのキャッシュアドレス部と、命令アクセスアドレスの一部がキャッシュアドレス部のアドレス情報に一致するか否かを検出するキャッシュ比較回路と、前記中央処理装置に前記命令キャッシュメモリから供給するか前記命令プリフェッチバッファから供給するかを選択する選択回路とを備え、前記命令プリフェッチバッファは、前記キャッシュデータ部の一つのデータブロックの命令語数に等しい語数の命令を一つのデータブロックとして格納可能なバッファデータ部と、バッファデータ部の命令とその命令アドレスとを関連付けるためのバッファアドレス部と、命令アクセスアドレスの一部がバッファアドレス部のアドレス情報に一致するか否かを検出するバッファ比較回路とを備え、前記キャッシュ及びプリフェッチ制御回路は、前記命令プリフェッチの指令に対して、前記キャッシュ比較回路及びバッファ比較回路の双方から不一致の比較結果を検出することにより命令プリフェッチバッファへの命令プリフェッチを起動するものであり、更に、割込み要求を受け付けたとき、当該要求に応答するための処理プログラムの先頭アドレス情報に基づいて命令プリフェッチバッファに命令をプリフェッチさせる指示を上記キャッシュ及びプリフェッチ制御回路に与える割込み制御回路を備え、前記選択回路は、前記キャッシュ比較回路において一致したことを検出した場合には、前記命令キャッシュメモリを選択し、前記キャッシュ比較回路において不一致を検出し、かつ、バッファ比較回路において一致したことを検出した場合、前記命令プリフェッチバッファを選択し、
前記処理プログラムの先頭アドレス情報に対応する命令が前記命令キャッシュメモリに格納されておらず、且つ、前記命令プリフェッチバッファにも格納されていなかった場合、前記キャッシュ及びプリフェッチ制御回路は、前記命令プリフェッチアドレスに応ずる命令を外部から前記プリフェッチバッファに取得するように制御し、且つ、前記選択回路は、対応する命令が前記プリフェッチバッファに格納された時点で、前記プリフェッチバッファを選択して前記中央処理装置に当該命令を転送し、さらに、前記キャッシュ及びプリフェッチ制御回路は、その後、再び当該命令をプリフェッチさせる指示が前記キャッシュ及びプリフェッチ制御回路に与えられた際に前記バッファ比較回路における一致の比較結果を検出した時点で、前記命令プリフェッチバッファに格納されていた当該命令を前記命令キャッシュメモリに書き込み制御することを特徴とするデータ処理装置。 - 前記キャッシュ及びプリフェッチ制御回路は更に、命令プリフェッチバッファへの命令プリフェッチの完了後における命令アクセスに際して前記バッファ比較回路における一致の比較結果を検出することにより前記プリフェッチ完了された命令プリフェッチバッファの内容をキャッシュメモリに書込み制御するものであることを特徴とする請求項8記載のデータ処理装置。
- 命令フェッチと命令プリフェッチのための命令アクセスアドレスを保持するアドレスレジスタを備え、割込み処理プログラムの先頭アドレスと、プログラムカウンタの値と、プログラムカウンタの値に基づいて生成されたプリフェッチアドレスとから選ばれた一つのアドレスを前記アドレスレジスタに与える選択手段を有し、前記キャッシュ及びプリフェッチ制御回路は、命令フェッチの指令に対して前記キャッシュ比較回路及びバッファ比較回路の双方から不一致の比較結果を検出することにより選択手段にプログラムカウンタの値を選択させ、命令プリフェッチの指令に対して、その指令要因が割込み制御回路である場合には選択手段に割込み処理プログラムの先頭アドレスを選択させ、命令プリフェッチの指令に対して、その指令要因が中央処理装置である場合には選択手段にプログラムカウンタの値に基づいて生成されたプリフェッチアドレスを選択させるものであることを特徴とする請求項8又は9記載のデータ処理装置。
- キャッシュ及びプリフェッチ制御回路は、前記処理プログラムの先頭アドレス情報に対応する命令が前記キャッシュメモリに格納されておらず、かつ、前記命令プリフェッチバッファに格納されていなかった場合に、命令プリフェッチアドレスに応ずる命令を外部から前記プリフェッチバッファに取得するように制御し、前記選択回路は、前記処理プログラムの先頭アドレス情報に対応する命令が前記キャッシュメモリに格納されておらず、かつ、前記プリフェッチバッファに格納されていなかった場合、前記プリフェッチバッファを選択し、前記対応する命令が前記プリフェッチバッファに格納された時点で、前記中央処理装置に当該命令を転送することを特徴とする請求項1乃至7のいずれか1項記載のデータ処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP13739295A JP3614207B2 (ja) | 1994-12-13 | 1995-05-11 | データ処理装置 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP6-332212 | 1994-12-13 | ||
JP33221294 | 1994-12-13 | ||
JP13739295A JP3614207B2 (ja) | 1994-12-13 | 1995-05-11 | データ処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08221270A JPH08221270A (ja) | 1996-08-30 |
JP3614207B2 true JP3614207B2 (ja) | 2005-01-26 |
Family
ID=26470722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP13739295A Expired - Fee Related JP3614207B2 (ja) | 1994-12-13 | 1995-05-11 | データ処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3614207B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4247132B2 (ja) | 2004-01-29 | 2009-04-02 | 株式会社ルネサステクノロジ | 情報処理装置 |
JP5440419B2 (ja) | 2010-06-29 | 2014-03-12 | 富士通セミコンダクター株式会社 | 情報処理システム |
-
1995
- 1995-05-11 JP JP13739295A patent/JP3614207B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH08221270A (ja) | 1996-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5941981A (en) | System for using a data history table to select among multiple data prefetch algorithms | |
US5706407A (en) | System for reallocation of memory banks in memory sized order | |
JP3778573B2 (ja) | データプロセッサ及びデータ処理システム | |
US6018759A (en) | Thread switch tuning tool for optimal performance in a computer processor | |
CA2299348C (en) | Method and apparatus for selecting thread switch events in a multithreaded processor | |
JP3577331B2 (ja) | キャッシュメモリシステムおよびマイクロプロセッサ内の命令を操作するための方法 | |
US8539485B2 (en) | Polling using reservation mechanism | |
US5822758A (en) | Method and system for high performance dynamic and user programmable cache arbitration | |
JP2005502119A (ja) | 複数スレッドの同時実行に対応するコンピュータシステムにおける割込み処理の方法 | |
WO1999021088A1 (en) | An apparatus and method to guarantee forward progress in a multithreaded processor | |
EP1027645A1 (en) | Thread switch control in a multithreaded processor system | |
JPH11312122A (ja) | 使用者が構築可能なオンチッププログラムメモリシステム | |
US4500959A (en) | Apparatus for invalidating the content of an instruction buffer by program store compare check | |
US20100268887A1 (en) | Information handling system with immediate scheduling of load operations in a dual-bank cache with dual dispatch into write/read data flow | |
JP2002007210A (ja) | デジタルデータ処理システム、それに使用される集積回路キャッシュメモリ装置およびキャッシュメモリの動作方法 | |
JP4071942B2 (ja) | データ処理装置及びデータプロセッサ | |
EP1030243B1 (en) | Optimized hardware cleaning function for virtual index virtual tag data cache | |
US20030097550A1 (en) | Interruptible and re-entrant cache clean range instruction | |
JP2000259498A (ja) | マルチスレッド・プロセッサの命令キャッシュ | |
JP3614207B2 (ja) | データ処理装置 | |
JPH06161779A (ja) | データ処理装置の割込み制御方式 | |
JPH07282023A (ja) | データ転送量可変プロセッサ及びそれを用いたシステム | |
JP3284508B2 (ja) | データ先読み制御装置 | |
EP0318702A2 (en) | Data processor with direct data transfer between coprocessor and memory | |
JP2011191865A (ja) | 半導体装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040205 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040224 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040426 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040713 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040913 |
|
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: 20041019 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041026 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071112 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081112 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081112 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091112 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |