(57)【特許請求の範囲】
【請求項１】
複数の処理装置と記憶装置との間で転送するデータを一時記憶するキャッシュメモリのデータ転送処理方法において、
前記複数の処理装置の内の１つの処理装置からのアクセスによるキャッシュミスの発生により、記憶装置からキャッシュメモリにデータ転送を行っている最中に、他の処理装置からの緊急アクセス要求が発生したとき、該データ転送を中断し、
前記緊急アクセス要求の対象となるアドレスが、前記中断されたデータ転送の対象領域に含まれているか否かを判断し、
前記緊急アクセス要求の対象となるアドレスが、前記中断されたデータ転送の対象領域に含まれていると判断した場合、緊急アクセス要求が書き込み要求であるときは、キャッシュメモリ上及び記憶装置上に書き込み対象データを書き込む、
ことを特徴とするキャッシュメモリのデータ転送処理方法。
【請求項２】
複数の処理装置と記憶装置との間で転送するデータを一時記憶するキャッシュメモリのデータ転送処理方法において、
前記複数の処理装置の内の１つの処理装置からのアクセスによるキャッシュミスの発生またはキャッシュフラッシュ要求により、キャッシュメモリから記憶装置にデータ転送を行っている最中に、他の処理装置からの緊急アクセス要求が発生したとき、該データ転送を中断し、
前記緊急アクセス要求の対象となるアドレスが、前記中断されたデータ転送の対象領域に含まれているか否かを判断し、
前記緊急アクセス要求の対象となるアドレスが、前記中断されたデータ転送の対象領域に含まれていると判断した場合、緊急アクセス要求が読み出し要求であるか書き込み要求であるかを判断し、
前記緊急アクセス要求が書き込み要求であるときは、キャッシュメモリ上および記憶装置上に書き込み対象データを書き込む、
ことを特徴とするキャッシュメモリのデータ転送処理方法。
【請求項３】
前記緊急アクセス要求が読み出し要求であると判断した場合には、キャッシュメモリ上のデータを読み出すことを特徴とする請求項２記載のキャッシュメモリのデータ転送処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、キャッシュメモリのデータ転送処理方法に係り、より詳しくは、複数の処理装置と記憶装置との間で伝送するデータを一時記憶するキャッシュメモリのデータ転送処理方法に関する。
【０００２】
【従来の技術】
データ処理システムにおいて、処理装置と記憶装置の速度差が大きいとき、記憶装置へのアクセス時間が処理装置の処理効率の著しい低下を招く。処理装置と記憶装置の間に、この記憶装置よりもアクセス時間が短く容量が小さいキャッシュメモリを配置することで、処理効率の低下を抑えることができる。このようなキャッシュメモリは、処理装置から要求されたデータがキャッシュメモリ上にあれば、直ちにこれを処理装置に伝送し、無ければ、より低速な記憶装置からキャッシュメモリの管理単位であるキャッシュブロックサイズ分のデータ読み出しを行い、処理装置には要求されたデータのみを転送する。ここで、処理装置が複数ある場合、キャッシュメモリはある処理装置のアクセス要求に応えるために、キャッシュブロックサイズ分のデータ転送を開始した後で、別の処理装置がアクセス要求を出すと、先に開始されたデータ転送が完了するまで後のアクセス要求は待たされることになる。キャッシュブロックサイズが十分小さければ問題ないが、記憶装置のアクセスレイテンシの影響を抑える等の理由でキャッシュブロックサイズが大きく設定されている場合、且つ別の処理装置のアクセス要求が緊急を要する場合、この緊急アクセス要求が長時間待たされることになり、不都合が生じる。これを解決するには、先のキャッシュブロックサイズ分のデータ転送を中断し、後の緊急アクセス要求に先に応えた後、中断したデータ転送を再開すれば良い。このような例には、特開平５-３３４１８５号公報に記載された「３階層メモリシステム」があげられる。
【０００３】
このシステムでは、キャッシュメモリ(中間バッファ記憶装置)と主記憶装置の間でデータ転送中に、より優先度の高いアクセス要求が生じた場合、割り込みアクセス処理によりキャッシュメモリや主記憶装置へのアクセスができるようにしている。
【０００４】
【発明が解決しようとする課題】
しかし、このシステムに関しては次のような問題点が挙げられる。キャッシュメモリと主記憶装置の間のデータ転送を中断した後、割り込みアクセス処理により生じるアクセスの際に、中断されたデータ転送により読み込まれた、あるいは書き込まれたデータが反映されない。これは、割り込みアクセス処理による参照または書き込まれるアドレスが、中断されたデータ転送（割り込み前のアクセス処理による）の対象領域に含まれる場合に特別な処理を行っていないことに起因する。その結果、例えば主記憶装置からキャッシュメモリにデータ転送をしている際に、他のより優先度の高いアクセス要求が生じたために割り込みアクセス処理に入り、このアクセスが書き込みアクセスの場合、対象データが中断されたデータ転送で既にキャッシュメモリに読み込まれていた場合でも、データ転送は未だ完了していないため、キャッシュメモリには対象アドレスが含まれていないと判定される。割り込みアクセス処理の後、キャッシュメモリへのデータ転送が再開され、この転送が完了した場合、主記憶装置のキャッシュメモリに読み込まれたデータが書き換えられているが、キャッシュメモリには、書き換えられる前のデータが記憶される。即ち、主記憶装置とキャッシュメモリとの対応するデータの内容が相違することになる。このため、先の割り込みアクセス処理で対象となったアドレスからの読み出しアクセスが、この割り込みアクセス処理よりも時間的に後に発生したとしても、キャッシュメモリから古い値が読み出されることになる。
【０００５】
この問題を解決するために、中断されたキャッシュメモリへのデータ転送の対象ブロックに属するアドレス領域に、割り込みアクセス処理により書込みアクセスが生じた場合は、割り込みアクセス処理終了後、途中まで転送されたデータをすべて無効とし、ブロックの最初からデータ転送をやり直す方法が考えられる。しかし、この方法ではキャッシュメモリのブロックサイズが大きい場合に、データ転送がある程度進行してから先に述べたような割り込みアクセス処理が発生すると、途中まで行ったデータ転送のための処理時間がすべて無駄になる。
【０００６】
本発明の目的は、記憶装置とキャッシュメモリとの間のデータ転送を、緊急を要するアクセス要求により中断することができ、例え緊急にアクセスされるアドレスが、中断されたデータ転送のアドレス領域と重なっていても、このアクセスが終了した後、途中まで行われたデータ転送処理を無駄にすることなく、効率よく再開することの可能なキャッシュメモリのデータ転送処理方法を提供することにある。
【０００７】
【課題を解決するための手段】
上記目的達成のため請求項１記載の発明は、複数の処理装置と記憶装置との間で転送するデータを一時記憶するキャッシュメモリのデータ転送処理方法において、前記複数の処理装置の内の１つの処理装置からのアクセスによるキャッシュミスの発生により、記憶装置からキャッシュメモリにデータ転送を行っている最中に、他の処理装置からの緊急アクセス要求が発生したとき、該データ転送を中断し、前記緊急アクセス要求の対象となるアドレスが、前記中断されたデータ転送の対象領域に含まれているか否かを判断し、前記緊急アクセス要求の対象となるアドレスが、前記中断されたデータ転送の対象領域に含まれていると判断した場合、緊急アクセス要求が書き込み要求であるときは、キャッシュメモリ上及び記憶装置上に書き込み対象データを書き込むことを特徴とする。
【０００８】
即ち、本発明は、複数の処理装置と記憶装置との間で転送するデータを一時記憶するキャッシュメモリのデータ転送処理方法である。
【０００９】
ここで、複数の処理装置の内の１つの処理装置からのアクセスによるキャッシュミスの発生により、記憶装置からキャッシュメモリにデータキャッシュブロックサイズの転送（リフィル）を行っている最中に、他の処理装置からの緊急アクセス要求が発生したとき、該データ転送を中断する。
【００１０】
そして、前記緊急アクセス要求の対象となるアドレスが、前記中断されたデータ転送の対象領域に含まれているか否かを判断し、前記緊急アクセス要求の対象となるアドレスが、前記中断されたデータ転送の対象領域に含まれていると判断した場合、緊急アクセス要求が書き込み要求であるときは、キャッシュメモリ上及び記憶装置上に書き込み対象データを書き込む。
【００１１】
このように、リフィル中に緊急アクセス要求が発生したとき、該データ転送を中断し、前記緊急アクセス要求の対象となるアドレスが、前記中断されたデータ転送の対象領域に含まれ、かつ、緊急アクセス要求が書き込み要求であるときは、キャッシュメモリ上及び記憶装置上に書き込み対象データを書き込む。
【００１２】
よって、途中まで行われたデータ転送処理を無駄にすることなく、効率よく再開し、主記憶装置とキャッシュメモリとの対応するアドレスのデータの内容が相違することを防止できる。
【００１３】
また、請求項２記載の発明は、複数の処理装置と記憶装置との間で転送するデータを一時記憶するキャッシュメモリのデータ転送処理方法において、前記複数の処理装置の内の１つの処理装置からのアクセスによるキャッシュミスの発生またはキャッシュフラッシュ要求により、キャッシュメモリから記憶装置にデータ転送を行っている最中に、他の処理装置からの緊急アクセス要求が発生したとき、該データ転送を中断し、前記緊急アクセス要求の対象となるアドレスが、前記中断されたデータ転送の対象領域に含まれているか否かを判断し、前記緊急アクセス要求の対象となるアドレスが、前記中断されたデータ転送の対象領域に含まれていると判断した場合、緊急アクセス要求が読み出し要求であるか書き込み要求であるかを判断し、前記緊急アクセス要求が書き込み要求であるときは、キャッシュメモリ上および記憶装置上に書き込み対象データを書き込むことを特徴とする。
前記緊急アクセス要求が読み出し要求であると判断した場合には、請求項３の発明のように、キャッシュメモリ上のデータを読み出す。
【００１４】
即ち、本発明も、請求項１の発明と同様に、複数の処理装置と記憶装置との間で転送するデータを一時記憶するキャッシュメモリのデータ転送処理方法である。
【００１５】
ここで、複数の処理装置の内の１つの処理装置からのアクセスによるキャッシュミスの発生またはキャッシュフラッシュ要求により、キャッシュメモリから記憶装置にキャッシュブロックサイズのデータ転送（ライトバック）を行っている最中に、他の処理装置からの緊急アクセス要求が発生したとき、該データ転送を中断する。
【００１６】
緊急アクセス要求の対象となるアドレスが、中断されたデータ転送の対象領域に含まれているか否かを判断し、緊急アクセス要求の対象となるアドレスが、中断されたデータ転送の対象領域に含まれていると判断した場合、緊急アクセス要求が読み出し要求であるか書き込み要求であるかを判断する。
【００１７】
緊急アクセス要求が読み出し要求であると判断した場合には、キャッシュメモリ上のデータを読み出し、緊急アクセス要求が書き込み要求であるときは、キャッシュメモリ上および記憶装置上に書き込み対象データを書き込む。
【００１８】
このように、ライトバック中に他の処理装置からの緊急アクセス要求が発生したとき、該データ転送を中断し、緊急アクセス要求の対象となるアドレスが中断されたデータ転送の対象領域に含まれかつ緊急アクセス要求が読み出し要求である場合には、キャッシュメモリ上のデータを読み出し、緊急アクセス要求の対象となるアドレスが中断されたデータ転送の対象領域に含まれかつ緊急アクセス要求が書き込み要求であるときは、キャッシュメモリ上および記憶装置上に書き込み対象データを書き込む。
【００１９】
よって、途中まで行われたデータ転送処理を無駄にすることなく、効率よく再開し、主記憶装置とキャッシュメモリとの対応するアドレスのデータの内容が相違することを防止できる。
【００２０】
以上の内容を、図面を参照して、更に説明する。なお、以下に示した内容は、上記内容を理解し易くするためのものであり、本発明は、これに限定されるものでない。
【００２１】
図１に、本発明によるキャッシュメモリのアクセス方針を示す。データ転送が中断された領域に対して、割り込みアクセスが発生した場合、記憶装置への書き込み方式の違い、割り込みアクセスの種類、中断されたデータ転送の種類によって、このような動作をする。
【００２２】
図２にキャッシュメモリ１０の構成を示す。キャッシュメモリ１０は、キャッシュ制御回路１２、キャッシュアドレス生成器１４、キャッシュディレクトリ１６、データメモリ１８、バスインターフェース回路２０で構成される。キャッシュアドレス生成器１４には、リフィルまたはライトバックのためのデータ転送領域(アドレス)を保持するためのデータ転送領域保持手段２２と、割り込みアクセスの対象アドレスが中断されたデータ転送領域に含まれているかどうかを判断するためのデータ転送領域一致検出手段２４が含まれている。キャッシュディレクトリ１６とデータメモリ１８の組は、ウェイ数に応じて１〜複数組存在する。
【００２３】
図３は、キャッシュディレクトリ１６の１エントリ分、つまりキャッシュブロックに対応するエントリ情報の内容である。これには、少なくとも、このエントリが有効であるか無効であるかを示す「有効/無効」符号、このエントリが他のエントリに比べてどの程度頻繁に参照されたかを示す「参照状況」符号、このエントリが属するアドレスの上位ビットである「タグ」が含まれている。また、ライトバック方式のキャッシュメモリ１０であれば、これらに加えて、「変更/無変更」符号も必要である。これは、このエントリが有効であるとき、対応するキャッシュブロックのデータメモリ１８上のデータが、記憶装置から転送されてからバスマスタにより書き換えられたかどうかを示す情報である。
【００２４】
図４に、本発明のキャッシュメモリ１０を利用したシステム構成図を示す。
【００２５】
キャッシュメモリ１０は、記憶装置３０（及び記憶装置制御回路）、二つのバスマスタ３２、およびバススレーブ３４と、アドレスバス、データバスを介して接続されている。ここで、バスマスタ３２（処理装置）とは、中央処理装置、DMAコントローラ、他のキャッシュメモリ１０など、バスの使用を能動的に要求する装置のことであり、バススレーブ３４とは、記憶装置３０など、バスマスタ３２の制御下でバスを利用する装置のことである。バスマスタ３２の数は２個以上ならいくつでも本発明の効果を発揮することができ、バススレーブ３４は１個でも複数でも、あるいは接続されていなくても良い。バスはこのシステムのようにスプリットバス(アドレス/データ分離バス)でも、時分割のマルチプレクスバスでも、パケット志向のバスでも良いし、バスマスタ３２毎にキャッシュメモリ１０と接続するための専用バスを持っていても良い。
【００２６】
バスマスタ３２から読み出し要求があると、アドレスバスから入力されたアドレスはキャッシュディレクトリ１６で照合され、一致するエントリが存在すれば、データメモリ１８上の対応するデータを読み出し、バスインターフェース回路２０を介してデータバスに出力する。一致するエントリが無ければ、キャッシュ制御回路１２はキャッシュミス通知信号により、アクセスを要求したバスマスタ３２にキャッシュミスが発生したことを通知し、記憶装置３０から対応するキャッシュブロック分のデータ転送を開始する。
【００２７】
この時、転送完了まで、対応するキャッシュディレクトリ１６エントリの有効/無効符号は「無効」となっている。
【００２８】
このデータ転送中に、他のバスマスタ３２から緊急を要するアクセス要求が発生すると、データ転送を中断する。緊急アクセス要求が読み出し要求の場合、キャッシュディレクトリ１６検索後、アクセス対象データがキャッシュメモリ１０上に存在すれば、これをデータメモリ１８から読み出し、データバスに出力する。アクセス対象データがキャッシュメモリ１０上に存在しなければ、記憶装置３０から対象データのみを読み出し、要求したバスマスタ３２に伝送する。その後、中断されたデータ転送の続きを行う。データ転送が完了したら、対応するキャッシュディレクトリ１６エントリの有効/無効符号を「有効」にする。
【００２９】
緊急アクセス要求が書き込み要求の場合、キャッシュディレクトリ１６検索後、アクセス対象データがキャッシュメモリ１０上に存在すれば、データメモリ１８上の対応する場所にこのデータを書き込む。キャッシュメモリ１０がライトスルー方式を採っているなら、同時に記憶装置３０にもデータを書き込む。キャッシュメモリ１０がライトバック方式を採っているなら、記憶装置３０にデータを書き込んでも良いし、書き込まなくても良い。ただし、書き込まない場合は、対応するキャッシュエントリの変更/無変更符号を「変更」にする。アクセス対象データが、キャッシュメモリ１０上に存在しなければ、記憶装置３０にのみこのデータを書き込む。また、アクセス対象データが、中断されたデータ転送に対応するキャッシュブロックのアドレス空間に属するならば、データメモリ１８上の対応する場所にこのデータを書き込む。同時に、記憶装置３０にもこのデータを書き込む。
【００３０】
その後、中断されたデータ転送の続きを行う。データ転送が完了したら、対応するキャッシュディレクトリ１６エントリの有効/無効符号を「有効」にする。キャッシュメモリ１０がライトバック方式を採っている場合、キャッシュミス時またはキャッシュフラッシュ時にキャッシュメモリ１０から記憶装置３０へのデータ転送が発生する。
【００３１】
この時、転送開始前に、対応するキャッシュディレクトリ１６エントリの有効/無効符号を、「無効」にする。
このデータ転送中に、他のバスマスタ３２から緊急を要するアクセス要求が発生すると、データ転送を中断する。緊急アクセス要求が読み出し要求の場合、キャッシュディレクトリ１６検索後、アクセス対象データがキャッシュメモリ１０上に存在すれば、これをデータメモリ１８から読み出し、データバスに出力する。アクセス対象データがキャッシュメモリ１０上に存在しなければ、記憶装置３０から対象データのみを読み出し、要求したバスマスタ３２に伝送する。また、アクセス対象データが、中断されたデータ転送に対応するキャッシュブロックのアドレス空間に属するなら、データメモリ１８から対象データを読み出し、データバスに出力する。
【００３２】
その後、中断されたデータ転送の続きを行う。
【００３３】
緊急アクセス要求が書き込み要求の場合、キャッシュディレクトリ１６検索後、アクセス対象データがキャッシュメモリ１０上に存在すれば、データメモリ１８上の対応する場所にこのデータを書き込む。記憶装置３０には、このデータを書き込んでも良いし書き込まなくても良い。書き込まない場合は、対応するキャッシュエントリの変更/無変更符号を「変更」にする。アクセス対象データが、キャッシュメモリ１０上に存在しなければ、記憶装置３０にのみこのデータを書き込む。また、アクセス対象データが、中断されたデータ転送に対応するキャッシュブロックのアドレス空間に属するならば、データメモリ１８上の対応する場所にこのデータを書き込む。同時に、記憶装置３０にもこのデータを書き込む。その後、中断されたデータ転送の続きを行う。
【００３４】
以上のように処理することにより、データ転送が中断される前のデータ転送処理時間を無駄にすること無く、記憶装置３０とのコヒーレンシを保ったまま、効率の良い処理が可能なキャッシュメモリ１０を実現できる。
【００３５】
【発明の実施の形態】
以下、図面を参照して、本発明の実施の形態を詳細に説明する。
【００３６】
図５に、本実施の形態が適用されるキャッシュメモリを利用したシステムの構成図を示す。このシステムでは、マイクロプロセッサ１００と主記憶１０８および図示しない他のプロセッサが接続されている。マイクロプロセッサ１００は、他のプロセッサとリングバスによるプロセッサ間通信処理を行うリングバスインターフェースユニット(RBIU)１０１、マイクロプロセッサ全体の制御と３２ビット整数演算処理を行う整数演算ユニット(IAU)１０２、IAUに毎サイクル命令を供給することができる２KBの命令キャッシュユニット(ICU)１０３、IAUからのデータアクセス要求に迅速に応えることができる８KBのデータキャッシュユニット(DCU)１０４、マイクロプロセッサ外部の主記憶１０８の制御を行うメモリインターフェースユニット(MIU)１０５より構成される。
【００３７】
この中で、本実施の形態が適用されるキャッシュメモリはDCU１０４である。DCU１０４は、４ウェイセットアソシアティブ・LRUリプレース方式のキャッシュメモリであり、主記憶への書込みはライトバック方式により行う。このDCU１０４をキャッシュメモリとして利用するのはIAU１０２のみであり、IAU１０２は常に演算専用アドレスバス１０６および演算専用データバス１０7を用いてDCU１０４を介して主記憶１０８のデータをアクセスする。また、RBIU１０１も主記憶１０８に対するアクセスを行うが、これはMIU１０５の機能と内部アドレスバス１０９および内部データバス１１０を利用してDMA(Direct Memory Access)的に行われる。IAU１０２とRBIU１０１がアクセス可能なアドレス空間は重なり合っているので、DCU１０４は主記憶１０８とのデータの一意性を保つため、内部アドレスバス１０９および内部データバス１１０のスヌープを行い、必要に応じた処理を行わなければならない。また、RBIU１０１は他のプロセッサからの大量の通信データを受け付け、あるいは他のプロセッサへ大量の通信データを迅速に送信しなければならない。DCU１０４はラインサイズを最小４ワードから最大２５６ワードまで変化させることができるため、ラインサイズが大きいとき、リフィルあるいはライトバック操作において、内部アドレスバス１０９、内部データバス１１０を長時間占有し、RBIU１０１による迅速なプロセッサ間通信を阻害する恐れがある。そこで、DCU１０４には、リフィルおよびライトバック操作を中断し、RBIU-主記憶間(RBIU-MIU間)の割り込みデータ転送処理を可能にする機構が備わっている。
【００３８】
図６に、DCU１０４とIAU１０２の相互接続の様子を示す。IAU１０２はICU１０３からロード命令またはストア命令をフェッチし、実行したときに、DCU１０４に対して読み出し要求信号２００または書き込み要求信号２０１をそれぞれアサートする。同時に演算専用アドレスバス１０６にアクセスするアドレスを出力しておく。DCU１０４は、次のクロックエッジで読み出し要求信号２００がアクティブならばキャッシュメモリ内部のデータを読み出し、演算専用データバス１０7に出力する。キャッシュメモリ内に要求されたデータが無ければ、リードミスの処理に移る。また、書き込み要求信号２０１がアクティブであれば、次のクロックエッジでIAU１０２により演算専用データバス１０7に出力されるデータをキャッシュメモリ内に書き込む。キャッシュメモリ内にアクセス要求されたアドレス領域がなければ、ライトミスの処理に移る。リードミス、ライトミスなど何らかの理由で次のアクセス要求を受け付けられない場合は、キャッシュレディ信号２０２をインアクティブにする。それ以外の場合は、常にアクティブにしておく。
【００３９】
リフィル操作、ライトバック操作の際のDCU-主記憶間(DCU-MIU間)のデータ転送は、内部アドレスバス１０９および内部データバス１１０を利用して行う。これらの内部バスは、他のユニット間のデータ通信にも利用される共有バスであるため、IAU１０２内部のバス調停回路２０３により、バス利用の競合が発生しないよう制御される。以下に、この内部バスの調停方法を説明する。
【００４０】
図7に、このマイクロプロセッサ１００のバス調停機構を、図８に、内部アドレスバス１０９、内部データバス１１０を利用する際のタイミング図を示す。
【００４１】
マイクロプロセッサ１００内の各機能ユニットは、３種類の共有バスにより互いに接続されている。機能ユニット間のデータ転送に必要なアドレス情報を交換するための内部アドレスバス１０９、データ交換のための内部データバス１１０、内部アドレスバス１０９および内部データバス１１０の利用目的を各機能ユニットに伝達するためのトランザクション制御バス２０４である。更に、現在の内部アドレスバス１０９上の値が有効であることを示す内部アドレスバスアドレス有効信号２０５、および現在の内部データバス上の値が有効であることを示す内部データバスデータ有効信号２０６も、機能ユニット間で共有される。これらの共有バスの利用制御は、以下に示すトランザクションを単位に行われる。
・DCLDトランザクション: キャッシュリフィル処理(MIU→DCU転送)
・DCSTトランザクション: キャッシュライトバック処理(DCU→MIU転  送)
・RBLDトランザクション: プロセッサ間データ送信処理(MIU→RBIU転  送)
・RBSTトランザクション: プロセッサ間データ受信処理(RBIU→MIU  転送)
その他のトランザクションは、本実施の形態とは関わらないので省略する。各トランザクションにはトランザクションIDが割り当てられており、トランザクション制御バスにはこのIDを出力する。また、トランザクションIDには、トランザクションの終了を示す特別なIDLEトランザクションIDが設けられている。全てのトランザクションIDは、５ビットで表現され、MSBが１となっている。MSBが０の値は、未使用あるいはそのトランザクション内で用いられる制御パラメータを示す。
【００４２】
バス使用権の譲渡は、以下のように行われる。まずトランザクションアービタ３００により、各機能ユニットからのトランザクション開始要求３０１.１〜３０１.５の中から一つを受け付ける。その後、内部データバスアービタ３０２により、各機能ユニットからの内部データバス使用要求３０３.１〜３０３.５を調査し、現在処理中のトランザクションの種類に応じた内部データバス利用優先順位に基づいて、どの機能ユニットが内部データバス１１０をドライブすべきかを決定し、これを各機能ユニットに内部データバス使用許可信号３０４によって伝達する。内部アドレスバス１０９をドライブする機能ユニットは、トランザクションの種類によってあらかじめ決められており、トランザクションが開始された時点で内部アドレスバス使用許可信号３０５によって各機能ユニットに伝達される。
【００４３】
各機能ユニットのバスインターフェース回路内部３０６のバスドライバは、それぞれ、以下の信号をドライブイネーブル信号としてデコードする。
【００４４】
トランザクション制御バス２０４: トランザクションマスタ３０7
内部アドレスバス１０９:         内部アドレスバス使用許可３０５
内部データバス１１０:       内部データバス使用許可３０４
これらの制御信号には、各機能ユニットにそれぞれ唯一割り当てられた機能ユニット番号がセットされる。このため、ドライバの衝突は発生しない。以下に、内部アドレスバス１０９、内部データバス１１０を用いたデータ転送の手順を示す。
・各機能ユニットは、何らかのトランザクションを開始する必要が生  じると、自ユニットに対応するトランザクション開始要求信号３０１を  アサートする。これと同時に、トランザクション制御バス２０４にIDLE  トランザクションIDを出力する。
・IAU１０２のトランザクションアービタ３００は、アサートされた  トランザクション開始要求信号３０１の要求者と、現在の状況に応じて  トランザクションの開始を許可し、トランザクションマスタ信号３０7  にトランザクションの実行権を与えた機能ユニット番号を設定する。
・トランザクション開始要求信号３０１をアサートした機能ユニット  は、次のサイクルでトランザクション制御バス２０４に開始したいトラ  ンザクションのトランザクションIDを出力する。また、トランザクショ  ンマスタ信号３０7を監視し、自ユニットのユニット番号が出力される  までトランザクション開始要求信号３０１をアサートしつづける。
・トランザクション開始要求信号３０１をアサートした機能ユニット  は、トランザクションマスタ信号３０7に自ユニットのユニット番号が  出力されたら、トランザクションが開始されたと判断し、トランザクシ  ョン開始要求信号３０１をデアサートする。
・全ての機能ユニットは、トランザクション制御バス２０４を常に監  視し、IDLEトランザクションIDから、自ユニットが関わるトランザクシ  ョンIDに変化したら、適当なタイミングで内部データバス使用要求信号  ３０３をアサートする。内部データバス１１０の使用権を要求すると同  時に、内部データバス１１０に接続されたバスインターフェース回路内  部３０６のバスドライバへのデータ出力を開始する。開始されたトラン  ザクションに関与しない機能ユニットは、決して内部データバス使用要  求信号３０３をアサートしない。
・IAUの内部データバスアービタ３０２は、内部データバス使用要求  信号３０３を受けて、内部データバス使用許可信号３０４に機能ユニッ  ト番号を出力し、内部データバス１１０の使用を許可する。
【００４５】
以下に、各トランザクションにおけるバスユーザを示す。
DCLD:
要求者: DCU
内部アドレスバス使用者:ドライブ: DCU、センス: MIU
内部データバス使用者: ドライブ: MIU、センス: DCU
DCST:
要求者: DCU
内部アドレスバス使用者:ドライブ: DCU、センス: MIU
内部データバス使用者: ドライブ: DCU、センス: MIU
RBLD:
要求者: RBIU
内部アドレスバス使用者:ドライブ: RBIU、センス: MIU/DCU
内部データバス使用者: ドライブ: MIU/DCU、センス: RBIU
RBST:
要求者: RBIU
内部アドレスバス使用者:ドライブ: RBIU、センス: MIU/DCU
内部データバス使用者: ドライブ: RBIU、センス: MIU/DCU
トランザクションアービタ３００による調停は以下のように行われる。DCLDトランザクションおよびDCSTトランザクションは、RBIU１０１からのトランザクション開始要求３０１.４により中断することができる。その他の場合は、先に要求されたトランザクション開始要求３０１が優先され、一旦１つのトランザクションが開始されると、このトランザクションが終了するまで他のトランザクションの開始要求は受け付けられない。複数の機能ユニットから、トランザクション開始要求３０１が同時にアサートされた場合は、RBIU１０１からのトランザクション開始要求３０１.４がもっとも優先処理される。
【００４６】
トランザクションの中断処理の様子を図９に示す。DCU１０４が要求するトランザクションの制御パラメータ(トランザクションの開始と終了以外のタイミングでトランザクション制御バス２０４に出力されるデータのMSBが０)には、LOCKとSTEALがある。トランザクション制御パラメータLOCKが出力されている間は、他の機能ユニットが要求するトランザクションと同様に、現在処理中のトランザクションが完了するまで、別のトランザクション開始要求は一切受け付けられない。一方、トランザクション制御パラメータSTEALが出力され、かつRBIU１０１がトランザクション開始要求３０１.４をアサートしている場合、トランザクションアービタは、次のサイクルで強制的にトランザクションマスタをIAU１０２(トランザクションアービタ３００)に変更し、トランザクション制御バス２０４にIDLEトランザクションIDを出力することで、DCU１０４が処理中のトランザクションを中断する。その後、直ちにRBIU１０１のトランザクション開始要求を受けつける。
【００４７】
図１０に、DCU１０４の内部構成を示す。キャッシュディレクトリ部１０００、データメモリ部１００１、DCU制御回路１００２、キャッシュアドレス生成器１００３、演算専用バスインターフェース回路１００４、バスインターフェース回路３０６から構成される。
【００４８】
図１１は、キャッシュディレクトリの１エントリ分の内容である。一つのエントリの状態は、このエントリの有効/無効を示す１ビットのVフィールド１１００、このエントリに対する書き込みがあったかどうかを示す１ビットのMフィールド１１０１、このエントリがどの程度最近利用されたかを示す２ビットのLRUフィールド１１０２、そして２１ビットのタグフィールド１１０３で表現される。尚、LRUフィールド１１０２は００(２進数)が最も新しく、１１(２進数)が最も古いことを示し、リフィル直後およびアクセス直後にリセットされ、一つのエントリがアクセスされる度に、同じセット番号の他のウェイのエントリはインクリメントされる。
【００４９】
図１２〜図１５には、それぞれキャッシュアドレス生成器１００３、キャッシュディレクトリ部１０００、データメモリ部１００１、データ転送用アドレス生成器１２００の内部構成を示している。図１２〜図１５の内部構成図を用いて、図１６〜図３７に示したタイミングチャートを参照して、以下のような、いくつかのアクセス要求が発生した場合の動作について説明する。
▲１▼IAUから読み出し要求があり, リードヒットした場合の動作.
▲２▼IAUから書き込み要求があり, ライトヒットした場合の動作.
▲３▼IAUから読み出し要求があり, リードミスし, リフィルデータ転送する場合の動作.
▲４▼IAUから書き込み要求があり, ライトミスし, リフィルデータ転送する場合の動作.
▲５▼IAUから読み出し要求があり, リードミスし, ライトバックデータ転送後, リフィルデータ転送する場合の動作.
▲６▼IAUから書き込み要求があり, ライトミスし, ライトバックデータ転送後, リフィルデータ転送をする場合の動作.
▲７▼IAUから読み出し要求があり, リードミス後, リフィルデータ転送中にRBIUから緊急アクセス要求が発生した場合の動作.
▲８▼IAUから書き込み要求があり, ライトミス後, リフィルデータ転送中にRBIUから緊急アクセス要求が発生した場合の動作.
▲９▼IAUから読み出し要求があり, リードミス後, ライトバックデータ転送中にRBIUから緊急アクセス要求が発生した場合の動作.
[10]（ただし、図では○の中に１０と記載）IAUから書き込み要求があり, ライトミス後, ライトバックデータ転送中にRBIUから緊急アクセス要求が発生した場合の動作.
【００５０】
次に、▲１▼の動作の詳細を、図１６を参照しながら、詳細に説明する。
▲１▼-１第１ステップ
(１) キャッシュアドレスの選択と演算専用アドレスレジスタへのアドレスのロード
DCU制御回路１００２は、アドレスセレクタ１２０２により、演算専用アドレスバス１０６を選択する。また、演算専用アドレスバス上のアドレスを演算専用アドレスレジスタ１２０１にロードする。
(２) 実効セット番号の生成とデータメモリへのアドレス供給
アドレスセレクタ１２０２から出力されたキャッシュアドレスのうち、セット番号およびワードアドレスに相当するフィールドは固定ではなく、セット番号マスクレジスタ１２０３により、変更することができる。例えば、６ビットのセット番号マスクレジスタ１２０３に値１１００００(２進数)が設定されており、この値が予めセット番号マスク用DFF１２０４にロードされているとすると、このキャッシュメモリのブロックサイズは見かけ上６４ワードとなる。このとき、実質的なセット番号(実効セット番号)は、アドレスの第7ビットからセット番号マスクレジスタ１２０３によりマスクされない最下位のビットまで、つまり第６ビットまでとなる。演算専用アドレスレジスタ１２０１から出力されたアドレスの第7ビットから第２ビットは、セット番号マスク用DFF１２０４からの出力とAND演算され、実効セット番号が生成される。実効セット番号は、セット番号保持レジスタにロードされる。キャッシュアドレスのうち、第２８ビットから第８ビットは、タグとしてタグ保持レジスタ１２０7にロードされる。
【００５１】
また、DCU制御回路は、データメモリアドレスセレクタ１２０５により、キャッシュアドレスの第7ビットから第０ビットを選択し、データメモリアドレスとする。データメモリアドレスは、４つのデータメモリ１４００.０〜１４００.３に入力される。尚、データメモリ１４００.０〜１４００.３は、最初のクロックエッジでアドレスラッチを行い、次のクロックエッジで読み出し要求者がデータをラッチできるようにデータを出力する。書き込み時は、最初のクロックでアドレスラッチを行い、次のクロックエッジでデータラッチを行う。このときの書き込みデータは更に次のクロックエッジから始まる読み出しアクセスにより読み出すことができる。
【００５２】
▲１▼-２第２ステップ
(1)キャッシュディレクトリの検索
セット番号保持レジスタ１２０９の出力は、セット番号入力セレクタ１２１２により選択され、セット番号入力として、またタグ保持レジスタ１２０7の出力は、タグ入力セレクタ１２１３により選択され、タグ入力として、それぞれキャッシュディレクトリ部１０００へ送られる。セット番号入力はセットデコーダ１３００によりデコードされ、実効セット番号に対応する(つまり、アクセスされたアドレスに対応する)唯一のアクティブセット信号(１３０１.０〜１３０１.６３のうち一つ)がアクティブになる。実効セット番号sに対応する４つのキャッシュディレクトリ回路要素１３０２.s.０〜１３０２.s.３のすべてのTAGフィールドレジスタ１３０３.s.０〜１３０３.s.３と、タグ保持レジスタ１２０7から出力されるタグがTAG比較器１３０7.s.０〜１３０7.s.３により比較され、これが一致し且つ同じキャッシュディレクトリ回路要素１３０２.s.wのVフィールドレジスタ１３０４.s.wの出力がアクティブの時、このキャッシュディレクトリ回路要素１３０２.s.wが属するウェイwにおいてヒットしたと判定され、対応するウェイヒット通知出力信号(ウェイw)がアクティブになる。
【００５３】
(2)データメモリからのデータ出力
４つのデータメモリ１４００.０〜１４００.３から、それぞれデータがウェイセレクタ１４０１へ出力される。キャッシュディレクトリの４つのウェイヒット通知出力信号は、ヒット/ミス判定器１４０２のプライオリティエンコーダ１４０３に入力され、ヒットしたウェイ番号としてウェイ番号セレクタ１４０６へ出力される。ウェイ番号はウェイ番号セレクタ１４０６により選択され、ウェイセレクタ１４０１へ出力される。ウェイセレクタ１４０１は、ヒットしたウェイ番号に対応したデータを選択し、演算専用データバス１０7へ出力する。また、４つのウェイヒット通知出力信号はヒット/ミス判定器１４０２内でNOR演算され、キャッシュミス通知信号１４０４として出力される。
【００５４】
(3)キャッシュレディ信号の生成
IAU１０２から読み出し要求があり、且つキャッシュミス通知信号１４０４がインアクティブであれば、キャッシュレディ信号２０２をアクティブにする。
【００５５】
(4)キャッシュディレクトリの更新
DCU制御回路１００２は、キャッシュミス通知信号１４０４がインアクティブであるなら、ウェイヒット通知出力信号がアクティブになっているウェイwのLRUリセット要求(ウェイw)をアサートし、その他のウェイのLRU更新要求信号をアサートする。これにより、ヒットしたキャッシュディレクトリ回路要素１３０２.s.wのLRUフィールドレジスタ１３０５.s.wは、次のクロックエッジでリセットされ、最も最近アクセスされたエントリであることを示すようになる。ヒットしなかった、同じセットsのほかのウェイW０、W１、W２(≠w)のキャッシュディレクトリ回路要素１３０２.s.W０〜W２のLRUフィールドレジスタ１３０５.s.W０〜W２は、次のクロックエッジでインクリメントされ、ヒットしたエントリに比べて、最終アクセスが時間的に前であることを示すようになる。ここで、LRUフィールドレジスタ１３０５がオーバーフローした場合は、最大値１１(２進数)を維持しつづける。
【００５６】
このように、IAU１０２からの読み出し操作は、リードヒットする限り連続して行うことができる。
【００５７】
次に、▲２▼の動作を、図１７を参照して詳細に説明する。
▲２▼-１第１ステップ
(1)キャッシュアドレスの選択と演算専用アドレスレジスタへのアドレス  のロード
▲１▼-１-(１)と同様である。
(2)実行セット番号の生成とデータメモリへのアドレス供給
▲１▼-１-(２)と同様である。
▲２▼-２第２ステップ
(1)キャッシュディレクトリの検索
▲１▼-２-(１)と同様である。
(2)データメモリへのデータ入力と書き込み許可信号のアサート
DCU制御回路１００２は、データメモリデータセレクタ１４０５により演算専用データバス１０7を選択し、書き込みデータを４つのデータメモリ１４００.０〜１４００.３全てに供給する。また、ウェイヒット通知出力がアクティブであるウェイwに対応した書き込み許可信号(ウェイw)のみをアクティブにする。これにより、次のクロックエッジで演算専用データバス１０7上に出力されているデータがデータメモリ１４００.wのみに書き込まれることになる。
【００５８】
キャッシュディレクトリの４つのウェイヒット通知出力信号は、▲１▼-２-(２)と同様に処理され、キャッシュミス通知信号１４０４として出力される。
(3)キャッシュレディ信号の生成
IAU１０２から書き込み要求があり、且つキャッシュミス通知信号１４０４がインアクティブであれば、キャッシュレディ信号２０２をアクティブにする。
(4)キャッシュディレクトリの更新
▲１▼-２-(４)とほぼ同様である。ただし、ヒットしたウェイwのMセット要求信号をアサートする。これにより、該当するキャッシュディレクトリ回路要素１３０２.s.wのMフィールドレジスタ１３１１.s.wがセットされ、このエントリに対応するデータが更新されたことが記憶される。
【００５９】
このように、IAU１０２からの書き込み操作は、ライトヒットする限り連続して行うことができる。
【００６０】
次に、▲３▼の動作を、図１８を参照して詳細に説明する。
▲３▼-１第１ステップ
(1)キャッシュアドレスの選択と演算専用アドレスレジスタへのアドレス  のロード
▲１▼-１-(１)と同様である。
(2)実効セット番号の生成とデータメモリへのアドレス供給
▲１▼-１-(２)と同様である。
▲３▼-２第２ステップ
(1)キャッシュディレクトリの検索
▲１▼-２-(１)とほぼ同様である。ただし、検索結果はキャッシュミス、つまり全てのウェイヒット通知出力信号がインアクティブとなり、キャッシュミス通知信号１４０４がアクティブとなる。
【００６１】
また、LRU比較器１３０９.sにより、全てのウェイから出力されたV出力とLRU出力が比較され、まずVフィールドがセットされていないウェイ番号wRとTAGレジスタ１３０３.s.wRの出力を、全てのウェイのVフィールドがセットされている場合は、最後にアクセスされてから相対的に最も時間が経過したウェイ番号wR(最もLRUフィールドの値が大きいウェイ番号)とTAGレジスタ１３０３.s.wRの出力がセットセレクタ１３０８に入力される。セットセレクタ１３０８は、現在アクティブとなっているセット番号sに対応するLRU比較器１３０９.sの出力を選択し、リプレース対象ウェイ信号１３０６およびリプレース対象タグとして出力する。その結果、リプレース対象ウェイ信号１３０６には、現在アクティブとなっているセット番号sのエントリの中で、空きエントリ(無効エントリ)を含むウェイ番号wR、または最後にアクセスされてから相対的に最も時間が経過したエントリが属するウェイ番号wRが出力され、これがリプレース対象ウェイ番号wRとなる。このリプレース対象ウェイ番号wRはリプレース対象ウェイ保持レジスタ１３１０にロードされる。
【００６２】
更に、検索結果がキャッシュミスのとき、演算専用アドレスレジスタ１２０１の出力がアドレスセレクタ１２０２により選択され、これがキャッシュアドレスになる。
(2)キャッシュレディ信号の生成
IAU１０２から読み出し要求があり、且つキャッシュミス通知信号１４０４がアクティブであれば、キャッシュレディ信号２０２をインアクティブにする。IAU１０２は、次のクロックエッジで必要なデータを演算専用データバス１０7から読み出そうとするが、キャッシュレディ信号２０２がインアクティブであるので、演算専用データバス１０7上の値が無効であると判断し、キャッシュレディ信号２０２がアクティブとなるまで待ち続ける。
(3)DCLDトランザクションの開始要求
DCU制御回路１００２は、セットセレクタ１３０８により出力されるリプレース対象ウェイwRに対応するM出力(ウェイwR)を参照する。これがインアクティブであれば、このエントリのライトバック操作は必要ないと判断し、直ちにリフィル操作を開始する。
【００６３】
バス調停回路２０３に対して、トランザクション開始要求３０１.１をアサートする。
▲３▼-３第３ステップ
(1)DCLDトランザクションの開始とリフィルアドレスの出力
バス調停回路２０３により、トランザクション開始許可が得られると、DCLDトランザクションを開始する。この時、データ転送用アドレス生成器１２００内で生成されるキャッシュブロック先頭アドレスを内部アドレスバス１０９に出力する。データ転送用アドレス生成器１２００内では、キャッシュブロックアドレスセレクタ１５０２によりリプレース対象タグが選択され、キャッシュアドレスとセット番号マスク値から生成される６ビットのリプレース対象セット番号と連結され、３２ビットのキャッシュブロック先頭アドレスが生成される。
(２) MIUによる主記憶連続読み出し準備
MIU１０５がこのDCLDトランザクションに応答し、キャッシュブロック先頭アドレスをMIU１０５内部のアドレスレジスタにロードし、主記憶１０８から外部アドレスバス１１１、外部データバス１１２を介してデータを読み出す準備をする。
▲３▼-４第４ステップ
(１) MIUによる主記憶連続読み出し
MIU１０５は、内部のアドレスレジスタの値を外部アドレスバス１１１に出力し、アドレスレジスタをインクリメントする。次のクロックエッジで、主記憶１０８から読み出されたデータを外部データバス１１２から読み出し、内部データバス１１０に出力する。このとき、内部データバス使用要求信号３０３.２をアサートしておく。これを毎サイクル繰り返す。
【００６４】
(2)リフィルデータのデータメモリへの書き込み
DCU１０４は、MIU１０５により内部データバス１１０に出力されたデータを毎サイクルデータメモリ１４００.wRに書き込む。この時、DCU制御回路１００２は、データメモリアドレスセレクタ１２０５によりデータ転送用アドレス生成器１２００の出力を選択し、これをデータメモリアドレスとする。主記憶１０８から読み出されたデータは、データメモリデータセレクタ１４０５により内部データバス１１０を選択することで、データメモリ１４００.０〜１４００.３に入力される。DCU制御回路１００２はリプレース対象ウェイ信号１３０６を参照し、リプレースの対象となるウェイwRのデータメモリ１４００.wRの書込み許可信号(ウェイwR)をアクティブにする。次のクロックエッジでデータがデータメモリ１４００.wRに書き込まれる。リフィルのためのデータ転送用アドレスは、内部データバス１１０上のデータを読み出すたびにデータ転送用アドレス生成器１２００内部のワードアドレスカウンタ１５００をインクリメントすることにより生成される。
【００６５】
▲３▼-５第５ステップ
(１) DCLDトランザクションの終了
DCU制御回路１００２は、カウントアップ終了信号１５０１がアクティブになると、そのサイクルのデータ転送が終了した時点でリフィル操作終了と判断し、リプレースメント対象ウェイwRのMリセット要求信号(ウェイwR)、Vセット要求信号(ウェイwR)、TAG更新要求信号(ウェイwR)、LRUリセット要求信号(ウェイwR)をアサートし、キャッシュディレクトリエントリをリフィル直後の状態に設定する。
【００６６】
IDLEトランザクションIDをトランザクション制御バス２０４に出力し、MIU１０５にDCLDトランザクションが終了したことを通知する。
(２) MIUによる主記憶連続読み出しの終了
MIU１０５は、トランザクション制御バス２０４にIDLEトランザクションIDが出力されていることを確認すると、主記憶１０８からの連続データ読み出しを終了する。外部データバス１１２には、最後の２サイクルの間、不要なデータが読み出されているが、これらは内部データバス１１０には出力せず、破棄する。
(３) IAUからの読み出し要求に応える
DCU制御回路１００２は、データメモリアドレスセレクタ１２０５により、データメモリアドレスとして再びキャッシュアドレスを選択することで、IAU１０２に要求されたアドレスを選択する。データメモリ１４００から読み出されたデータを演算専用データバス１０7に出力する。
(４) キャッシュレディ信号の生成
キャッシュレディ信号２０２をアクティブにする。
【００６７】
次に、▲４▼の動作を、図１９を参照して、詳細に説明する。
▲４▼-１第１ステップ
(１) キャッシュアドレスの選択と演算専用アドレスレジスタへのアドレスのロード
▲１▼-１-(１)と同様である。
(２) 実効セット番号の生成とデータメモリへのアドレス供給
▲１▼-１-(２)と同様である。
▲４▼-２第２ステップ
(１) キャッシュディレクトリの検索
▲３▼-２-(１)と同様である。
(２) キャッシュレディ信号の生成
IAU１０２から書き込み要求があり、且つキャッシュミス通知信号１４０４がアクティブであれば、キャッシュレディ信号２０２をインアクティブにする。IAU１０２は、次のクロックエッジで状態遷移を行おうとするが、キャッシュレディ信号２０２がインアクティブであるため、演算専用データバス１０7上に同じ値を出力し続け、キャッシュレディ信号２０２がアクティブとなるまで待つ。
(３) DCLDトランザクションの開始要求
▲３▼-２-(３)と同様である。
▲４▼-３第３ステップ
(１) DCLDトランザクションの開始とリフィルアドレスの出力
▲３▼-３-(１)と同様である。
(２) MIUによる主記憶連続読み出し準備
▲３▼-３-(２)と同様である。
▲４▼-４第４ステップ
(１) MIUによる主記憶連続読み出し
▲３▼-４-(１)と同様である。
(２) リフィルデータのデータメモリへの書き込み
▲３▼-４-(２)と同様である。
【００６８】
▲４▼-５第５ステップ
(１) DCLDトランザクションの終了
▲３▼-５-(１)と同様である。
(２) MIUによる主記憶連続読み出しの終了
▲３▼-５-(２)と同様である。
(３) IAUからの書き込み要求に応える
DCU制御回路１００２は、データメモリアドレスセレクタ１２０５により、データメモリアドレスとしてキャッシュアドレスを選択することで、IAU１０２に要求されたアドレスを選択する。演算専用データバス１０7から入力されたデータをデータメモリ１４００に書き込む。
(４) キャッシュレディ信号の生成
▲３▼-５-(４)と同様である。
【００６９】
次に、▲５▼の動作を、図２０を参照して詳細に説明する。
▲５▼-１第１ステップ
(１) キャッシュアドレスの選択と演算専用アドレスレジスタへのアドレスのロード
▲１▼-１-(１)と同様である。
(２) 実効セット番号の生成とデータメモリへのアドレス供給
▲１▼-１-(２)と同様である。
▲５▼-２第２ステップ
(１) キャッシュディレクトリの検索
▲３▼-２-(１)と同様である。
(２) キャッシュレディ信号の生成
▲３▼-２-(２)と同様である。
(３) DCSTトランザクションの開始要求
DCU制御回路１００２は、セットセレクタ１３０８により出力されるリプレース対象ウェイwRに対応するM出力(ウェイwR)を参照する。これがアクティブであれば、このエントリに関して、リフィル操作に先立ってライトバック操作が必要であると判断する。
【００７０】
バス調停回路２０３に対して、トランザクション開始要求３０１.１をアサートする。
▲５▼-３第３ステップ
(１) DCSTトランザクションの開始とライトバックアドレスの出力
バス調停回路２０３により、トランザクション開始許可が得られると、DCSTトランザクションを開始する。この時、データ転送用アドレス生成器１２００内で生成されるキャッシュブロック先頭アドレスを内部アドレスバス１０９に出力する。
(２) MIUによる主記憶連続書き込み準備
MIU１０５がこのDCSTトランザクションに応答し、キャッシュブロック先頭アドレスをMIU１０５内部のアドレスレジスタにロードし、主記憶１０８へ外部アドレスバス１１１、外部データバス１１２を介してデータを書き込む準備をする。
【００７１】
▲５▼-４第４ステップ
(１) ライトバックデータのデータメモリからの読み出し
DCU制御回路１００２は、データメモリアドレスセレクタ１２０５によりデータ転送用アドレス生成器１２００の出力を選択し、これをデータメモリアドレスとする。DCU制御回路１００２は、ウェイ番号セレクタ１４０６によりリプレース対象ウェイ信号１３０６を選択する。これにより、リプレースの対象となるウェイwRのデータメモリ１４００wRの出力が、ウェイセレクタ１４０１により選択され、内部データバス１１０に出力される。このとき、内部データバス使用要求信号３０３.１をアサートしておく。データ転送用アドレスは、内部データバス１１０にデータを出力するたびにデータ転送用アドレス生成器１２００内部のワードアドレスカウンタ１５００をインクリメントすることにより生成される。これを毎サイクル繰り返す。
(２) MIUによる主記憶連続書き込み
MIU１０５は、内部のアドレスレジスタの値を外部アドレスバス１１１に出力し、アドレスレジスタをインクリメントする。次のクロックエッジで、内部データバス１１０からデータを読み出し、外部データバス１１２に出力する。このようにして、DCU１０４から出力されるライトバックデータが主記憶１０８に書き込まれる。
▲５▼-５第５ステップ
(１) DCSTトランザクションの終了
DCU制御回路１００２は、カウントアップ終了信号１５０１がアクティブになると、そのサイクルのデータ転送が終了した時点でライトバック操作終了と判断する。
【００７２】
IDLEトランザクションIDをトランザクション制御バス２０４に出力し、MIU１０５にDCSTトランザクションが終了したことを通知する。
(２) MIUによる主記憶連続書き込みの終了
MIU１０５は、トランザクション制御バス２０４にIDLEトランザクションIDが出力されていることを確認すると、主記憶１０８への連続データ書き込みを終了する。
(３) DCLDトランザクションの開始要求
DCU制御回路１００２は、バス調停回路２０３に対して、トランザクション開始要求３０１.１をアサートする。
▲５▼-６第６ステップ
(１) DCLDトランザクションの開始とリフィルアドレスの出力
▲３▼-３-(１)と同様である。
(２) MIUによる主記憶連続読み出し準備
▲３▼-３-(２)と同様である。
▲５▼-7第7ステップ
(１) MIUによる主記憶連続読み出し
▲３▼-４-(１)と同様である。
(２) リフィルデータのデータメモリへの書き込み
▲３▼-４-(２)と同様である。
▲５▼-８第８ステップ
(１) DCLDトランザクションの終了
▲３▼-５-(１)と同様である。
(２) MIUによる主記憶連続読み出しの終了
▲３▼-５-(２)と同様である。
(３) IAUからの読み出し要求に応える
▲３▼-５-(３)と同様である。
(４) キャッシュレディ信号の生成
▲３▼-５-(４)と同様である。
【００７３】
次に、▲６▼の動作を、図２１を参照して、詳細に説明する。
▲６▼-１第１ステップ
(１) キャッシュアドレスの選択と演算専用アドレスレジスタへのアドレスのロード
▲１▼-１-(１)と同様である。
(２) 実効セット番号の生成とデータメモリへのアドレス供給
▲１▼-１-(２)と同様である。
▲６▼-２第２ステップ
(１) キャッシュディレクトリの検索
▲３▼-２-(１)と同様である。
(２) キャッシュレディ信号の生成
▲４▼-２-(２)と同様である。
(３) DCSTトランザクションの開始要求
▲５▼-２-(３)と同様である。
▲６▼-３第３ステップ
(１) DCSTトランザクションの開始とライトバックアドレスの出力
▲５▼-３-(１)と同様である。
(２) MIUによる主記憶連続書き込み準備
▲５▼-３-(２)と同様である。
▲６▼-４第４ステップ
(１) ライトバックデータのデータメモリからの読み出し
▲５▼-４-(１)と同様である。
(２) MIUによる主記憶連続書き込み
▲５▼-４-(２)と同様である。
▲６▼-５第５ステップ
(１) DCSTトランザクションの終了
▲５▼-５-(１)と同様である。
(２) MIUによる主記憶連続書き込みの終了
▲５▼-５-(２)と同様である。
(３) DCLDトランザクションの開始要求
▲５▼-５-(３)と同様である。
▲６▼-６第６ステップ
(１) DCLDトランザクションの開始とリフィルアドレスの出力
▲３▼-３-(１)と同様である。
(２) MIUによる主記憶連続読み出し準備
▲３▼-３-(２)と同様である。
▲６▼-7第7ステップ
(１) MIUによる主記憶連続読み出し
▲３▼-４-(１)と同様である。
(２) リフィルデータのデータメモリへの書き込み
▲３▼-４-(２)と同様である。
▲６▼-８第８ステップ
(１) DCLDトランザクションの終了
▲３▼-５-(１)と同様である。
(２) MIUによる主記憶連続読み出しの終了
▲３▼-５-(２)と同様である。
(３) IAUからの書き込み要求に応える
▲４▼-５-(３)と同様である。
(４) キャッシュレディ信号の生成
▲３▼-５-(４)と同様である。
【００７４】
次に、▲７▼の動作を、図２２〜図２５を参照して、詳細に説明する。なお、緊急アクセス要求が読み出しの場合については図２２及び図２３、に、書き込みの場合は図２４及び図２５に、それぞれ示している。
▲７▼-１第１ステップ
(１) キャッシュアドレスの選択と演算専用アドレスレジスタへのアドレスのロード
▲１▼-１-(１)と同様である。
(２) 実効セット番号の生成とデータメモリへのアドレス供給
▲１▼-１-(２)と同様である。
▲７▼-２第２ステップ
(１) キャッシュディレクトリの検索
▲３▼-２-(１)と同様である。
(２) キャッシュレディ信号の生成
▲３▼-２-(２)と同様である。
(３) DCLDトランザクションの開始要求
▲３▼-２-(３)と同様である。
▲７▼-３第３ステップ
(１) DCLDトランザクションの開始とリフィルアドレスの出力
▲３▼-３-(１)と同様である。尚、DCU制御回路１００２は、DCLDトランザクションIDをトランザクション制御バス２０４に出力した後、２サイクルの間、トランザクション制御パラメータLOCKを出力する。その後、トランザクション制御パラメータSTEALを出力しつづける。これは、少なくとも１ワードの転送を終えるまでは割り込みを受け付けないようにするためである。
(２) MIUによる主記憶連続読み出し準備
▲３▼-３-(２)と同様である。
▲７▼-４第４ステップ
(１) MIUによる主記憶連続読み出し
▲３▼-４-(１)と同様である。
(２) リフィルデータのデータメモリへの書き込み
▲３▼-４-(２)と同様である。
▲７▼-５第５ステップ
(１) RBIUからの緊急アクセス要求とDCLDトランザクションの中断
DCLDトランザクション実行中で、且つトランザクション制御バス２０４にトランザクション制御パラメータSTEALが出力されているときに、RBIU１０１からトランザクション開始要求信号３０１.４がアサートされた場合、バス調停回路２０３(IAU１０２)は直ちにトランザクションマスタ３０7をIAUに設定する。バス調停回路２０３は、トランザクション制御バス２０４にIDLEトランザクションIDを出力し、DCLDトランザクションを中断する。
【００７５】
DCU制御回路１００２は、トランザクション制御パラメータSTEALを出力した次のサイクルで、トランザクションマスタ３０7を参照し、これがIAUに設定されていることを確認すると、トランザクションが中止されたと判断し、データ転送を中止する。データ転送用アドレス生成器１２００内のワードアドレスカウンタ１５００のカウントアップを中止し、状態を維持する。また、割り込み処理終了後、迅速にデータ転送を再開するために、トランザクション開始要求信号３０１.１をアサートする。
(２-R) RBLDトランザクションの開始(緊急アクセス要求が読み出しのとき)
バス調停回路２０３は、トランザクション制御バス２０４にIDLEトランザクションIDが出力されていることを確認すると、次のトランザクションの開始を許可するために各機能ユニットからのトランザクション開始要求信号３０１.１〜３０１.４を参照する。RBIU１０１からのトランザクション開始要求信号３０１.４がアサートされているため、トランザクションマスタ３０7をRBIUに設定する。
【００７６】
RBIU１０１は、トランザクションマスタ３０7を参照し、RBLDトランザクションが開始されたことを知ると、データ転送の準備をする。
(２-W) RBSTトランザクションの開始(緊急アクセス要求が書き込みのとき)
バス調停回路２０３は、トランザクション制御バス２０４にIDLEトランザクションIDが出力されていることを確認すると、次のトランザクションの開始を許可するために各機能ユニットからのトランザクション開始要求信号３０１.１〜３０１.４を参照する。RBIU１０１からのトランザクション開始要求信号３０１.４がアサートされているため、トランザクションマスタ３０7をRBIUに設定する。
【００７７】
RBIU１０１は、トランザクションマスタ３０7を参照し、RBSTトランザクションが開始されたことを知ると、データ転送の準備をする。
(３-R) MIUによる主記憶連続読み出し準備(緊急アクセス要求が読み出しのとき)
MIU１０５は、このRBLDトランザクションに応答し、RBLDトランザクションの開始と同時に内部アドレスバス１０９に出力されるデータ転送先頭アドレスを、MIU１０５内部のアドレスレジスタにロードし、主記憶１０８から外部アドレスバス１１１、外部データバス１１２を介してデータを読み出す準備をする。
(３-W) MIUによる主記憶連続書き込み準備(緊急アクセス要求が書き込みのとき)
MIU１０５は、このRBSTトランザクションに応答し、RBSTトランザクションの開始と同時に内部アドレスバス１０９に出力されるデータ転送先頭アドレスを、MIU１０５内部のアドレスレジスタにロードし、主記憶１０８へ外部アドレスバス１１１、外部データバス１１２を介してデータを書き込む準備をする。
(４) DCUによる内部バススヌープの準備
DCU１０４は、内部アドレスバス１０９に出力されたデータ転送先頭アドレスを、DCU１０４内部のスヌープアドレスレジスタ１２０６にロードする。
▲７▼-６第６ステップ
(１-R) MIUによる主記憶連続読み出し(緊急アクセス要求が読み出しのとき)
▲３▼-４-(１)と同様である。
(１-W) RBIUによる内部データバスへのデータ出力(緊急アクセス要求が書き込みのとき)
RBIU１０１は、内部データバス１１０にデータを出力する。このとき、内部データバス使用要求信号３０３.４をアサートしておく。これを毎サイクル繰り返す。
(２) DCUによる内部バススヌープ
DCU制御回路１００２は、アドレスセレクタ１２０２により、スヌープアドレスレジスタ１２０６から出力されるスヌープアドレスを選択し、これをキャッシュアドレスとしてキャッシュディレクトリの検索を行う。キャッシュディレクトリの検索手順は、▲１▼-２-(１)と同様である。
【００７８】
キャッシュディレクトリの検索と平行して、現在転送中のデータのアドレスが、中断されたリフィルまたはライトバック対象領域に含まれるかどうかを判定する。IAU１０２からのアクセス時に、セット番号保持レジスタ１２０９およびタグ保持レジスタ１２０7にそれぞれ予めロードしておいた実効セット番号とタグを、スヌープアドレスから生成される実効セット番号およびタグと比較し、結果を転送中断領域一致信号として出力する。
【００７９】
スヌープアドレスレジスタは毎サイクルインクリメントする。
(３-R) リードヒット時の動作(緊急アクセス要求が読み出しのとき)
キャッシュディレクトリの検索の結果、リードヒットした場合は、対応するデータをデータメモリから読み出し、内部データバス１１０に出力する。このとき、内部データバス使用要求信号３０３.１をアサートしておく。内部データバス１１０の使用権について、DCU１０４はMIU１０５よりも高い優先順位を持っているため、内部データバスアービタ３００は、内部データバス使用許可信号３０４にDCUを示す符号を出力する。これにより、MIU１０５の内部データバスドライバはディセーブルとなり、代わりにDCU１０４の内部データバスドライバがイネーブルとなる。その結果、DCU１０４のデータメモリ内のデータが内部データバス１１０に出力される。
【００８０】
尚、リードヒットしてもキャッシュディレクトリの更新は行わない。これは、DCU１０４がキャッシュメモリとして機能するのはIAU１０２に対してであって、RBIU１０１に対してではないからである。
(３'-R)リードミス時の動作(緊急アクセス要求が読み出しのとき)
MIU１０５から出力されるデータをそのまま見送る。
(３-W) ライトヒット時の動作(緊急アクセス要求が書き込みのとき)
キャッシュディレクトリの検索の結果、ライトヒットした場合は、内部データバス１１０上のデータをデータメモリ１４００に書き込む。DCU制御回路１００２は、データメモリデータセレクタ１４０５により、内部データバス１１０を選択し、４つのデータメモリ１４００.０〜１４００.３全てに供給する。また、ウェイヒット通知出力がアクティブであるウェイwに対応した書き込み許可信号(ウェイw)のみをアクティブにする。これにより、次のクロックエッジで内部データバス１１０上に出力されているデータがデータメモリ１４００.wに書き込まれることになる。
【００８１】
尚、ライトヒットしてもMフィールドはセットされない。これは、RBIU１０１から内部データバス１１０上に出力されるデータは、ライトヒットする、しないに関わらず、MIU１０５によって主記憶１０８に書き込まれるため、リプレースの際にライトバックの必要が無いからである。
(３'-W)ライトミスかつ転送中断領域一致信号がアクティブのときの動作(緊急アクセス要求が書き込みのとき)
ライトミスした場合は、DCU制御回路１００２は転送中断領域一致信号を参照し、これがアクティブであれば、スヌープアドレスが中断しているDCLDトランザクションの転送対象領域に含まれていると判断する。
【００８２】
転送中断領域一致信号がアクティブのとき、内部データバス１１０上に出力されているデータをデータメモリ１４００に書き込む。DCU制御回路１００２は、データメモリアドレスセレクタ１２０５によりキャッシュアドレス、つまりスヌープアドレスを選択し、これをデータメモリアドレスとしてデータメモリ１４００に供給する。リプレース対象ウェイ保持レジスタ１３１０の出力を参照し、中断されたDCLDトランザクションの対象ウェイwRに対応する書き込み許可信号(ウェイwR)をアサートする。また、データメモリデータセレクタ１４０５により内部データバスをデータ入力として選択しておく。このようにして、中断されたDCLDトランザクションの対象領域のうち、データ転送済みの領域にデータを書き込む。
(３''-W) ライトミスかつ転送中断領域一致信号がインアクティブのときの動作(緊急アクセス要求が書き込みのとき)
MIU１０５から出力されるデータをそのまま見送る。
【００８３】
(４-R) RBIUによる内部データバスの読み出し(緊急アクセス要求が読み出しのとき)
RBIU１０１は、MIU１０５またはDCU１０４によって内部データバス１１０に出力されたデータを読み出し、適当な処理を行う。
(４-W) MIUによる主記憶連続書き込み(緊急アクセス要求が書き込みのとき)
MIU１０５は、内部のアドレスレジスタの値を外部アドレスバス１１１に出力し、アドレスレジスタをインクリメントする。次のクロックエッジで、内部データバス１１０からデータを読み出し、外部データバス１１２に出力する。このようにして、RBIU１０１から出力されるデータが主記憶１０８に書き込まれる。
【００８４】
▲７▼-7第7ステップ
(１-R) RBLDトランザクションの終了(緊急アクセス要求が読み出しのとき)
RBIU１０１は、必要なデータ数だけのデータ転送が終了すると、IDLEトランザクションIDをトランザクション制御バス２０４に出力し、MIU１０５およびDCU１０４にRBLDトランザクションが終了したことを通知する。
(１-W) RBSTトランザクションの終了(緊急アクセス要求が書き込みのとき)
RBIU１０１は、必要なデータ数だけのデータ転送が終了すると、IDLEトランザクションIDをトランザクション制御バス２０４に出力し、MIU１０５およびDCU１０４にRBSTトランザクションが終了したことを通知する。
(２) DCLDトランザクションの開始とリフィルアドレスの出力
▲３▼-３-(１)と同様である。
(３) MIUによる主記憶連続読み出し準備
▲３▼-３-(２)と同様である。
【００８５】
▲７▼-８第８ステップ
(１) MIUによる主記憶連続読み出し
▲３▼-４-(１)と同様である。
(２) リフィルデータのデータメモリへの書き込み
▲３▼-４-(２)と同様である。
▲７▼-９第９ステップ
(１) DCLDトランザクションの終了
▲３▼-５-(１)と同様である。
(２) MIUによる主記憶連続読み出しの終了
▲３▼-５-(２)と同様である。
(３) IAUからの読み出し要求に応える
▲３▼-５-(３)と同様である。
(４) キャッシュレディ信号の生成
▲３▼-５-(４)と同様である。
【００８６】
次に、▲８▼の動作を、図２６〜図２９を参照して、詳細に説明する。なお、緊急アクセス要求が読み出しの場合については、図２６及び図２７に、緊急アクセス要求が書き込みの場合については、図２８及び図２９に示している。
▲８▼-１第１ステップ
(１) キャッシュアドレスの選択と演算専用アドレスレジスタへのアドレスのロード
▲１▼-１-(１)と同様である。
(２) 実効セット番号の生成とデータメモリへのアドレス供給
▲１▼-１-(２)と同様である。
▲８▼-２第２ステップ
(１) キャッシュディレクトリの検索
▲３▼-２-(１)と同様である。
(２) キャッシュレディ信号の生成
▲４▼-２-(２)と同様である。
(３) DCLDトランザクションの開始要求
▲３▼-２-(３)と同様である。
【００８７】
▲８▼-３第３ステップ
(１) DCLDトランザクションの開始とリフィルアドレスの出力
▲３▼-３-(１)と同様である。
(２) MIUによる主記憶連続読み出し準備
▲３▼-３-(２)と同様である。
▲８▼-４第４ステップ
(１) MIUによる主記憶連続読み出し
▲３▼-４-(１)と同様である。
(２) リフィルデータのデータメモリへの書き込み
▲３▼-４-(２)と同様である。
▲８▼-５第５ステップ
(１) RBIUからの緊急アクセス要求とDCLDトランザクションの中断
▲７▼-５-(１)と同様である。
(２-R) RBLDトランザクションの開始(緊急アクセス要求が読み出しのとき)
▲７▼-５-(２-R)と同様である。
(２-W) RBSTトランザクションの開始(緊急アクセス要求が書き込みのとき)
▲７▼-５-(２-W)と同様である。
(３-R) MIUによる主記憶連続読み出し準備(緊急アクセス要求が読み出しのとき)
▲７▼-５-(３-R)と同様である。
(３-W) MIUによる主記憶連続書き込み準備(緊急アクセス要求が書き込みのとき)
▲７▼-５-(３-W)と同様である。
(４) DCUによる内部バススヌープの準備
▲７▼-５-(４)と同様である。
【００８８】
▲８▼-６第６ステップ
(１-R) MIUによる主記憶連続読み出し(緊急アクセス要求が読み出しのとき)
▲３▼-４-(１)と同様である。
(１-W) RBIUによる内部データバスへのデータ出力(緊急アクセス要求が書き込みのとき)
▲７▼-６-(１-W)と同様である。
(２) DCUによる内部バススヌープ
▲７▼-６-(２)と同様である。
(３-R) リードヒット時の動作(緊急アクセス要求が読み出しのとき)
▲７▼-６-(３-R)と同様である。
(３'-R)リードミス時の動作(緊急アクセス要求が読み出しのとき)
▲７▼-６-(３'-R)と同様である。
(３-W) ライトヒット時の動作(緊急アクセス要求が書き込みのとき)
▲７▼-６-(３-W)と同様である。
(３'-W)ライトミスかつ転送中断領域一致信号がアクティブのときの動作(緊急アクセス要求が書き込みのとき)
▲７▼-６-(３'-W)と同様である。
(３''-W) ライトミスかつ転送中断領域一致信号がインアクティブのときの動作(緊急アクセス要求が書き込みのとき)
▲７▼-６-(３''-W)と同様である。
(４-R) RBIUによる内部データバスの読み出し(緊急アクセス要求が読み出しのとき)
▲７▼-６-(４-R)と同様である。
(４-W) MIUによる主記憶連続書き込み(緊急アクセス要求が書き込みのとき)
▲７▼-６-(４-W)と同様である。
【００８９】
▲８▼-7第7ステップ
(１-R) RBLDトランザクションの終了(緊急アクセス要求が読み出しのとき)
▲７▼-６-(１-R)と同様である。
(１-W) RBSTトランザクションの終了(緊急アクセス要求が書き込みのとき)
▲７▼-６-(１-W)と同様である。
(２) DCLDトランザクションの開始とリフィルアドレスの出力
▲３▼-３-(１)と同様である。
(３) MIUによる主記憶連続読み出し準備
▲３▼-３-(２)と同様である。
【００９０】
▲８▼-８第８ステップ
(１) MIUによる主記憶連続読み出し
▲３▼-４-(１)と同様である。
(２) リフィルデータのデータメモリへの書き込み
▲３▼-４-(２)と同様である。
▲８▼-９第９ステップ
(１) DCLDトランザクションの終了
▲３▼-５-(１)と同様である。
(２) MIUによる主記憶連続読み出しの終了
▲３▼-５-(２)と同様である。
(３) IAUからの書き込み要求に応える
▲４▼-５-(３)と同様である。
(４) キャッシュレディ信号の生成
▲３▼-５-(４)と同様である。
【００９１】
次に、▲９▼の動作を、図３０〜図３３を参照して、詳細に説明する。なお、緊急アクセス要求が読み出しの場合については、図３０及び図３１に、緊急アクセス要求が書き込みの場合については、図３２及び図３３に、示している。
▲９▼-１第１ステップ
(１) キャッシュアドレスの選択と演算専用アドレスレジスタへのアドレスのロード
▲１▼-１-(１)と同様である。
(２) 実効セット番号の生成とデータメモリへのアドレス供給
▲１▼-１-(２)と同様である。
▲９▼-２第２ステップ
(１) キャッシュディレクトリの検索
▲３▼-２-(１)と同様である。
(２) キャッシュレディ信号の生成
▲４▼-２-(２)と同様である。
(３) DCSTトランザクションの開始要求
▲５▼-２-(３)と同様である。
【００９２】
▲９▼-３第３ステップ
(１) DCSTトランザクションの開始とライトバックアドレスの出力
▲５▼-３-(１)と同様である。
(２) MIUによる主記憶連続書き込み準備
▲５▼-３-(２)と同様である。
▲９▼-４第４ステップ
(１) ライトバックデータのデータメモリからの読み出し
▲５▼-４-(１)と同様である。
(２) MIUによる主記憶連続書き込み
▲５▼-４-(２)と同様である。
【００９３】
▲９▼-５第５ステップ
(１) RBIUからの緊急アクセス要求とDCSTトランザクションの中断
DCSTトランザクション実行中で、且つトランザクション制御バス２０４にトランザクション制御パラメータSTEALが出力されているときに、RBIU１０１からトランザクション開始要求信号３０１.４がアサートされた場合、バス調停回路２０３(IAU１０２)は直ちにトランザクションマスタ３０7をIAUに設定する。バス調停回路２０３は、トランザクション制御バス２０４にIDLEトランザクションIDを出力し、DCSTトランザクションを中断する。
【００９４】
DCU制御回路１００２は、トランザクション制御パラメータSTEALを出力した次のサイクルで、トランザクションマスタ３０7を参照し、これがIAUに設定されていることを確認すると、トランザクションが中止されたと判断し、データ転送を中止する。データ転送用アドレス生成器１２００内のワードアドレスカウンタ１５００のカウントアップを中止し、状態を維持する。また、割り込み処理終了後、迅速にデータ転送を再開するために、トランザクション開始要求信号３０１.１をアサートする。
(２-R) RBLDトランザクションの開始(緊急アクセス要求が読み出しのとき)
▲７▼-５-(２-R)と同様である。
(２-W) RBSTトランザクションの開始(緊急アクセス要求が書き込みのとき)
▲７▼-５-(２-W)と同様である。
(３-R) MIUによる主記憶連続読み出し準備(緊急アクセス要求が読み出しのとき)
▲７▼-５-(３-R)と同様である。
(３-W) MIUによる主記憶連続書き込み準備(緊急アクセス要求が書き込みのとき)
▲７▼-５-(３-W)と同様である。
(４) DCUによる内部バススヌープの準備
▲７▼-５-(４)と同様である。
【００９５】
▲９▼-６第６ステップ
(１-R) MIUによる主記憶連続読み出し(緊急アクセス要求が読み出しのとき)
▲３▼-４-(１)と同様である。
(１-W) RBIUによる内部データバスへのデータ出力(緊急アクセス要求が書き込みのとき)
▲７▼-６-(１-W)と同様である。
(２) DCUによる内部バススヌープ
▲７▼-６-(２)と同様である。
(３-R) リードヒット時の動作(緊急アクセス要求が読み出しのとき)
▲７▼-６-(３-R)と同様である。
(３'-R)リードミスかつ転送中断領域一致信号がアクティブのときの動作(緊急アクセス要求が読み出しのとき)
リードミスした場合は、DCU制御回路１００２は転送中断領域一致信号を参照し、これがアクティブであれば、スヌープアドレスが中断しているDCSTトランザクションの転送対象領域に含まれていると判断する。
【００９６】
転送中断領域一致信号がアクティブのとき、対応するデータをデータメモリから読み出し、内部データバス１１０に出力する。
(３''-R) リードミスかつ転送中断領域一致信号がインアクティブのときの動作(緊急アクセス要求が読み出しのとき)
▲７▼-６-(３'-R)と同様である。
(３-W) ライトヒット時の動作(緊急アクセス要求が書き込みのとき)
▲７▼-６-(３-W)と同様である。
(３'-W)ライトミスかつ転送中断領域一致信号がアクティブのときの動作(緊急アクセス要求が書き込みのとき)
▲７▼-６-(３'-W)と同様である。
(３''-W) ライトミスかつ転送中断領域一致信号がインアクティブのときの動作(緊急アクセス要求が書き込みのとき)
▲７▼-６-(３''-W)と同様である。
(４-R) RBIUによる内部データバスの読み出し(緊急アクセス要求が読み出しのとき)
▲７▼-６-(４-R)と同様である。
(４-W) MIUによる主記憶連続書き込み(緊急アクセス要求が書き込みのとき)
▲７▼-６-(４-W)と同様である。
【００９７】
▲９▼-7第7ステップ
(１-R) RBLDトランザクションの終了(緊急アクセス要求が読み出しのとき)
▲７▼-7-(１-R)と同様である。
(１-W) RBSTトランザクションの終了(緊急アクセス要求が書き込みのとき)
▲７▼-7-(１-W)と同様である。
(２) DCSTトランザクションの開始とライトバックアドレスの出力
▲５▼-３-(１)と同様である。
(３) MIUによる主記憶連続書き込み準備
▲５▼-３-(２)と同様である。
▲９▼-８第８ステップ
(１) ライトバックデータのデータメモリからの読み出し
▲５▼-４-(１)と同様である。
(２) MIUによる主記憶連続書き込み
▲５▼-４-(２)と同様である。
【００９８】
▲９▼-９第９ステップ
(１) DCSTトランザクションの終了
▲５▼-５-(１)と同様である。
(２) MIUによる主記憶連続書き込みの終了
▲５▼-５-(２)と同様である。
(３) DCLDトランザクションの開始要求
▲５▼-５-(３)と同様である。
(４) DCLDトランザクションの開始とリフィルアドレスの出力
▲３▼-３-(１)と同様である。
(５) MIUによる主記憶連続読み出し準備
▲３▼-３-(２)と同様である。
▲９▼-１０第１０ステップ
(１) MIUによる主記憶連続読み出し
▲３▼-４-(１)と同様である。
(２) リフィルデータのデータメモリへの書き込み
▲３▼-４-(２)と同様である。
【００９９】
▲９▼-１１第１１ステップ
(１) DCLDトランザクションの終了
▲３▼-５-(１)と同様である。
(２) MIUによる主記憶連続読み出しの終了
▲３▼-５-(２)と同様である。
(３) IAUからの読み出し要求に応える
▲３▼-５-(３)と同様である。
(４) キャッシュレディ信号の生成
▲３▼-５-(４)と同様である。
【０１００】
次に、[10]の動作を、図３４〜図３７を参照して、詳細に説明する。なお、緊急アクセス要求が読み出しの場合については、図３４及び図３５に、緊急アクセス要求が書き込みの場合については、図３６及び図３７に、示している。
[10]-１第１ステップ
(１) キャッシュアドレスの選択と演算専用アドレスレジスタへのアドレスのロード
▲１▼-１-(１)と同様である。
(２) 実効セット番号の生成とデータメモリへのアドレス供給
▲１▼-１-(２)と同様である。
[10]-２第２ステップ
(１) キャッシュディレクトリの検索
▲３▼-２-(１)と同様である。
(２) キャッシュレディ信号の生成
▲４▼-２-(２)と同様である。
(３) DCSTトランザクションの開始要求
▲５▼-２-(３)と同様である。
[10]-３第３ステップ
(１) DCSTトランザクションの開始とライトバックアドレスの出力
▲５▼-３-(１)と同様である。
(２) MIUによる主記憶連続書き込み準備
▲５▼-３-(２)と同様である。
【０１０１】
[10]-４第４ステップ
(１) ライトバックデータのデータメモリからの読み出し
▲５▼-４-(１)と同様である。
(２) MIUによる主記憶連続書き込み
▲５▼-４-(２)と同様である。
[10]-５第５ステップ
(１) RBIUからの緊急アクセス要求とDCSTトランザクションの中断
▲９▼-５-(１)と同様である。
(２-R) RBLDトランザクションの開始(緊急アクセス要求が読み出しのとき)
▲７▼-５-(２-R)と同様である。
(２-W) RBSTトランザクションの開始(緊急アクセス要求が書き込みのとき)
▲７▼-５-(２-W)と同様である。
(３-R) MIUによる主記憶連続読み出し準備(緊急アクセス要求が読み出しのとき)
▲７▼-５-(３-R)と同様である。
(３-W) MIUによる主記憶連続書き込み準備(緊急アクセス要求が書き込みのとき)
▲７▼-５-(３-W)と同様である。
(４) DCUによる内部バススヌープの準備
▲７▼-５-(４)と同様である。
【０１０２】
[10]-６第６ステップ
(１-R) MIUによる主記憶連続読み出し(緊急アクセス要求が読み出しのとき)
▲３▼-４-(１)と同様である。
(１-W) RBIUによる内部データバスへのデータ出力(緊急アクセス要求が書き込みのとき)
▲７▼-６-(１-W)と同様である。
(２) DCUによる内部バススヌープ
▲７▼-６-(２)と同様である。
(３-R) リードヒット時の動作(緊急アクセス要求が読み出しのとき)
▲７▼-６-(３-R)と同様である。
(３'-R)リードミスかつ転送中断領域一致信号がアクティブのときの動作(緊急アクセス要求が読み出しのとき)
▲９▼-６-(３'-R)と同様である。
(３''-R) リードミスかつ転送中断領域一致信号がインアクティブのときの動作(緊急アクセス要求が読み出しのとき)
▲９▼-６-(３''-R)と同様である。
(３-W) ライトヒット時の動作(緊急アクセス要求が書き込みのとき)
▲７▼-６-(３-W)と同様である。
(３'-W)ライトミスかつ転送中断領域一致信号がアクティブのときの動作(緊急アクセス要求が書き込みのとき)
▲７▼-６-(３'-W)と同様である。
(３''-W) ライトミスかつ転送中断領域一致信号がインアクティブのときの動作(緊急アクセス要求が書き込みのとき)
▲７▼-６-(３''-W)と同様である。
(４-R) RBIUによる内部データバスの読み出し(緊急アクセス要求が読み出しのとき)
▲７▼-６-(４-R)と同様である。
(４-W) MIUによる主記憶連続書き込み(緊急アクセス要求が書き込みのとき)
▲７▼-６-(４-W)と同様である。
【０１０３】
[10]-7第7ステップ
(１-R) RBLDトランザクションの終了(緊急アクセス要求が読み出しのとき)
▲７▼-7-(１-R)と同様である。
(１-W) RBSTトランザクションいの終了(緊急アクセス要求が書き込みのとき)
▲７▼-7-(１-W)と同様である。
(２) DCSTトランザクションの開始とライトバックアドレスの出力
▲５▼-３-(１)と同様である。
(３) MIUによる主記憶連続書き込み準備
▲５▼-３-(２)と同様である。
[10]-８第８ステップ
(１) ライトバックデータのデータメモリからの読み出し
▲５▼-４-(１)と同様である。
(２) MIUによる主記憶連続書き込み
▲５▼-４-(２)と同様である。
[10]-９第９ステップ
(１) DCSTトランザクションの終了
▲５▼-５-(１)と同様である。
(２) MIUによる主記憶連続書き込みの終了
▲５▼-５-(２)と同様である。
(３) DCLDトランザクションの開始要求
▲５▼-５-(３)と同様である。
(４) DCLDトランザクションの開始とリフィルアドレスの出力
▲３▼-３-(１)と同様である。
(５) MIUによる主記憶連続読み出し準備
▲３▼-３-(２)と同様である。
【０１０４】
[10]-１０第１０ステップ
(１) MIUによる主記憶連続読み出し
▲３▼-４-(１)と同様である。
(２) リフィルデータのデータメモリへの書き込み
▲３▼-４-(２)と同様である。
[10]-１１第１１ステップ
(１) DCLDトランザクションの終了
▲３▼-５-(１)と同様である。
(２) MIUによる主記憶連続読み出しの終了
▲３▼-５-(２)と同様である。
(３) IAUからの書き込み要求に応える
▲４▼-５-(３)と同様である。
(４) キャッシュレディ信号の生成
▲３▼-５-(４)と同様である。
【０１０５】
なお、キャッシュフラッシュ要求があった場合については、前述したライトバックの場合と同様であるので、その説明を省略する。
【０１０６】
【発明の効果】
以上説明したように、本発明によれば、例え割り込み処理によりリフィルまたはライトバック操作時のデータ転送が中断されても、データ転送が中断される前のデータ転送処理時間を無駄にすること無く、記憶装置とのコヒーレンシを保ったまま、効率の良い処理が可能なキャッシュメモリを実現できる、という効果を有する。
【図面の簡単な説明】
【図１】  本発明によるキャッシュメモリの、割り込みアクセス処理が中断されたリフィル/ライトバックと同じ領域に対して行われた場合の動作方針である。
【図２】  本発明によるキャッシュメモリの構成図である。
【図３】  本発明によるキャッシュメモリのキャッシュディレクトリエントリを構成する情報である。
【図４】  本発明のキャッシュメモリを利用したシステムの構成図である。
【図５】  本発明によるキャッシュメモリを利用したシステムの実施例である。
【図６】  DCUとIAUの相互接続を示した図である。
【図７】  バス調停機構を示した図である。
【図８】  バス調停機構を利用して内部アドレスバスおよび内部データバスを利用する際の各信号のタイミングを示した図である。
【図９】  トランザクションが中断される様子を示した図である。
【図１０】  DCUの内部構成を示した図である。
【図１１】  キャッシュディレクトリの１エントリ分の内容を示した図である。
【図１２】  キャッシュアドレス生成器の内部構成を示した図である。
【図１３】  キャッシュディレクトリ部の内部構成を示した図である。
【図１４】  データメモリ部の内部構成を示した図である。
【図１５】  データ転送用アドレス生成器の内部構成を示した図である。
【図１６】  IAUから読み出し要求があり、リードヒットした場合のタイミングチャートである。
【図１７】  IAUから書き込み要求があり、ライトヒットした場合のタイミングチャートである。
【図１８】  IAUから読み出し要求があり、リードミスし、リフィルデータ転送をする場合のタイミングチャートである。
【図１９】  IAUから書き込み要求があり、ライトミスし、リフィルデータ転送する場合のタイミングチャートである。
【図２０】  IAUから読み出し要求があり、リードミスし、ライトバックデータ転送後、リフィルデータ転送する場合のタイミングチャートである。
【図２１】  IAUから書き込み要求があり、ライトミスし、ライトバックデータ転送後、リフィルデータ転送をする場合のタイミングチャートである。
【図２２】  IAUから読み出し要求があり、リードミス後、リフィルデータ転送中にRBIUから緊急読み出しアクセス要求が発生した場合のタイミングチャートの一部である。
【図２３】  図２２のタイミングチャートの続きを示した図である。
【図２４】  IAUから読み出し要求があり、リードミス後、リフィルデータ転送中にRBIUから緊急書き込みアクセス要求が発生した場合のタイミングチャートの一部である。
【図２５】  図２４のタイミングチャートの続きを示した図である。
【図２６】  IAUから書き込み要求があり、ライトミス後、リフィルデータ転送中にRBIUから緊急読み出しアクセス要求が発生した場合のタイミングチャートの一部である。
【図２７】  図２６のタイミングチャートの続きを示した図である。
【図２８】  IAUから書き込み要求があり、ライトミス後、リフィルデータ転送中にRBIUから緊急書き込みアクセス要求が発生した場合のタイミングチャートの一部である。
【図２９】  図２８のタイミングチャートの続きを示した図である。
【図３０】  IAUから読み出し要求があり、リードミス後、ライトバックデータ転送中にRBIUから緊急読み出しアクセス要求が発生した場合のタイミングチャートの一部である。
【図３１】  図３０のタイミングチャートの続きを示した図である。
【図３２】  IAUから読み出し要求があり、リードミス後、ライトバックデータ転送中にRBIUから緊急書き込みアクセス要求が発生した場合のタイミングチャートの一部である。
【図３３】  図３２のタイミングチャートの続きを示した図である。
【図３４】  IAUから書き込み要求があり、ライトミス後、ライトバックデータ転送中にRBIUから緊急読み出しアクセス要求が発生した場合のタイミングチャートの一部である。
【図３５】  図３４のタイミングチャートの続きを示した図である。
【図３６】  IAUから書き込み要求があり、ライトミス後、ライトバックデータ転送中にRBIUから緊急書き込みアクセス要求が発生した場合のタイミングチャートの一部である。
【図３７】  図３６のタイミングチャートの続きを示した図である。
【符号の説明】
１００    マイクロプロセッサ
１０１    リングバスインターフェースユニット(RBIU)
１０２    整数演算ユニット(IAU)
１０３    命令キャッシュユニット(ICU)
１０４    データキャッシュユニット(DCU)
１０５    メモリインターフェースユニット(MIU)
１０６    演算専用アドレスバス
１０7     演算専用データバス
１０８    主記憶
１０９    内部アドレスバス
１１０    内部データバス
１１１    外部アドレスバス
１１２    外部データバス
【図１】
0004373524.tif 000002
【図２】
0004373524.tif 000003
【図３】
0004373524.tif 000004
【図４】
0004373524.tif 000005
【図５】
0004373524.tif 000006
【図６】
0004373524.tif 000007
【図７】
0004373524.tif 000008
【図８】
0004373524.tif 000009
【図９】
0004373524.tif 000010
【図１０】
0004373524.tif 000011
【図１１】
0004373524.tif 000012
【図１２】
0004373524.tif 000013
【図１３】
0004373524.tif 000014
【図１４】
0004373524.tif 000015
【図１５】
0004373524.tif 000016
【図１６】
0004373524.tif 000017
【図１７】
0004373524.tif 000018
【図１８】
0004373524.tif 000019
【図１９】
0004373524.tif 000020
【図２０】
0004373524.tif 000021
【図２１】
0004373524.tif 000022
【図２２】
0004373524.tif 000023
【図２３】
0004373524.tif 000024
【図２４】
0004373524.tif 000025
【図２５】
0004373524.tif 000026
【図２６】
0004373524.tif 000027
【図２７】
0004373524.tif 000028
【図２８】
0004373524.tif 000029
【図２９】
0004373524.tif 000030
【図３０】
0004373524.tif 000031
【図３１】
0004373524.tif 000032
【図３２】
0004373524.tif 000033
【図３３】
0004373524.tif 000034
【図３４】
0004373524.tif 000035
【図３５】
0004373524.tif 000036
【図３６】
0004373524.tif 000037
【図３７】
0004373524.tif 000038