(57)【特許請求の範囲】
【請求項１】
ＳＲＡＭアレイ・キャッシュ・メモリと、
バスを介して一連の読み出しまたは書込みメモリアドレスを転送することにより実行されるバースト読み出しまたはバースト書込みを含むバースト・アクセスを実行するよう構成されたプロセッサであって、連続する２つのバースト・アクセスを順次実行させるよう構成されているとともに該バースト・アクセスに関わる一連のメモリアドレスの一つが前記キャッシュメモリでキャッシュミスを生じた場合に、該キャッシュミスに応答して該キャッシュミスを起こしたメモリアドレスを含むバースト・アクセスを中断するとともに、該キャッシュミスを起こしたメモリアドレスを含むバースト・アクセスがバースト読み出しであった場合にはバースト書込みを、前記キャッシュミスを起こしたメモリアドレスを含むバースト・アクセスがバースト書込みであった場合にはバースト読み出しを、該中断されたバースト・アクセスに引き続いて挿入実行するよう構成されたプロセッサと、
前記一連の読み出しまたは書込みメモリアドレスにしたがってキャッシュメモリをアクセスするとともにその一連の読み出しまたは書込みメモリアドレスの一つでキャッシュミスを生じた場合に、外部メモリから前記キャッシュミスを生じたメモリアドレスに対するデータを取り出している間に前記挿入されたバースト書込みまたはバースト読み出しにしたがってキャッシュメモリをアクセスするキャッシュ制御器と
を有したコンピュータ・システム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明はコンピュータ装置アーキテクチャに関するものである。更に詳しくいえば、本発明はコンピュータ装置の処理能力を向上させるためのキャッシュ・メモリ用のマイクロプロセッサ・バス・プロトコルに関するものである。
【０００２】
【従来の技術】
コンピュータ装置の処理能力を向上させるための一般的な技術はキャッシュ・メモリを採用することである。キャッシュ・メモリというのは限られたサイズの高速メモリであって、選択された外部メモリ場所を表す、行として知られているデータのブロックを記憶するスタチックＲＡＭ（ＳＲＡＭ）で通常構成される。キャッシュ・メモリは外部メモリより小さい。これは、キャッシュ・メモリが完全にはアドレス可能でなく、各データ行に対してタグ・フィールドを記憶せねばならないことを意味する。タグ・フィールドは特定のデータ行に対応する外部メモリ・アドレスを識別する。
【０００３】
プロセッサが読出し要求および希望のデータ行に対応するアドレスを出すと、キャッシュ制御器に維持されているタグ・フィールドとそのアドレスを比較することによりキャッシュ・メモリが検査される。希望のデータ行がキャッシュ・メモリに記憶されているとするとヒットが起き、その希望のデータ行をプロセッサが利用できる。希望のデータ行がキャッシュ・メモリに記憶されていないとするとミスが起き、その希望のデータ行をより遅い外部メモリから取り出さねばならない。
【０００４】
従来のキャッシュ・メモリ装置においては、通常読出しトランザクションが次の３つのステップを要求する。すなわち、プロセッサがアドレスをキャッシュ・メモリへ送ること、キャッシュ制御器がタグを検査すること、ヒットが起きたならばプロセッサデータ行をキャッシュ・メモリから読出すことがそれである。その後で、プロセッサは次のアドレスをキャッシュ・メモリへ送り、シーケンスが繰返される。実際に、その３つのステップ順序はキャッシュ・メモリから読出された各データ行に対して繰返される。
【０００５】
同様に、従来のキャッシュ装置は３つのステップの書込みトランザクションを典型的に要求する。それらの書込みトランザクションは、プロセッサがアドレスと対応するデータ行をキャッシュ・メモリへ送ること、キャッシュ制御器がタグを検査すること、キャッシュ制御器がデータ行をキャッシュ・メモリに記憶することである。次に、プロセッサは次のアドレスとデータ行をキャッシュ・メモリへ送り、このシーケンスが繰返される。
【０００６】
従来のキャッシュ・メモリ装置においては、より高い処理能力を達成するためにバス信号の待ち時間を短くする事を求めていた。しかし、より高いクロック周波数が使用されるにつれて、バス信号線の固有の物理的特性のために待ち時間の限界に達する。たとえば、周波数を高くするとバス信号線における信号反射の問題がひき起こされる。
【０００７】
後で述べるように、現在の構成のマイクロプロセッサ・バス・プロトコルは、読出しバースト・トランザクションおよび書込みバースト・トランザクションをキャッシュ・メモリに対して実行し、ミスしたキャッシュ行のために外部命令取り出し段階中にバス・トランザクションをインターリーブすることによりシステムの処理能力を向上させている。全体のバス待ち時間に対する物理的制約にもかかわらず、高いバス周波数において高い処理能力を達成することによりバスの性能が向上される。
【０００８】
【発明が解決しようとする課題】
本発明の目的はシステムの性能を向上させるための構成のマイクロプロセッサ・バス・プロトコルを提供するものである。
【０００９】
【課題を解決するための手段】
本発明のバス・プロトコルによりキャッシュに対する読出しバースト・トランザクションおよび書込みバースト・トランザクションと、ミスされたキャッシュ行に対する外部命令取り出し段階中のインターリーブされたバス・トランザクションとを並行して行うことが可能にされる。本発明は、バスの全体の待ち時間に対する制約にもかかわらず、高いバス周波数において高い処理能力を達成することによりバスの性能を向上させるものである。このバス・プロトコルは、ＣＰＵと第２のキャッシュ・メモリを備える装置において実現される。第２のキャッシュ・メモリはＳＲＡＭアレイ・キャッシュ・メモリとキャッシュ制御器を備える。ＣＰＵは命令パイプラインと主キャッシュ・システムを含む。
【００１０】
第２のキャッシュからのバースト読出しを実行するために、ＣＰＵは第１の読出しアドレスをＳＲＡＭアレイ・キャッシュ制御器へ送る。トランザクションの第１のバス・クロック・サイクルにおいては、ＣＰＵはＳＲＡＭアレイ・キャッシュにおいて第１の読出しサイクルを開始し、キャッシュ制御器は第１の読出しアドレスをタグのセットに対してテストする。タグは、第１の読出しアドレスに対応する第１のデータ行がＳＲＡＭアレイ・キャッシュに記憶されているかどうかを示す。次のクロック・サイクルにおいては、ＣＰＵは第２の読出しアドレスをＳＲＡＭアレイ・キャッシュへ送り、ＳＲＡＭアレイ・キャッシュにおいて第２の読出しサイクルを開始する。その次のクロック・サイクルにおいては、ＣＰＵは第３の読出しアドレスをＳＲＡＭアレイ・キャッシュへ送り、ＳＲＡＭアレイ・キャッシュにおいて第３の読出しサイクルを開始し、その間に第１のデータ行をＳＲＡＭアレイ・キャッシュから読出す。更に次のクロック・サイクルにおいては、ＣＰＵは第４の読出しアドレスをＳＲＡＭアレイ・キャッシュへ送り、ＳＲＡＭアレイ・キャッシュにおいて第４の読出しサイクルを開始し、その間に第２の読出しアドレスに対応する第２のデータ行をＳＲＡＭアレイ・キャッシュから読出す。その次のクロック・サイクルにおいては、ＣＰＵは第３の読出しアドレスに対応する第３のデータ行をＳＲＡＭアレイ・キャッシュから読出す。また次のクロック・サイクルにおいては、ＣＰＵは第４の読出しアドレスに対応する第４のデータ行をＳＲＡＭアレイ・キャッシュから読出す。
【００１１】
データ・ブロックがＳＲＡＭアレイ・キャッシュに保存されていないことをキャッシュ制御器内のタグが示したとすると、ミスされたデータ行を含んでいるデータ・ブロックをキャッシュ制御器が外部で取出している間に、ＣＰＵは書込みトランザクションをインターリーブできる。同様に、書込みトランザクション中に、データ行がＳＲＡＭアレイ・キャッシュに保存されていないことをキャッシュ制御器内のタグが示したとすると、ミスされたデータ行を含んでいるデータ・ブロックをキャッシュ制御器が外部で取出している間に、ＣＰＵは読出しトランザクションをインターリーブできる。
【００１２】
この明細書ではキャッシュの性能を向上させるための高性能マイクロプロセッサ・バス・プロトコルを開示する。以下の説明においては、本発明を完全に理解できるようにするために、特定の回路装置、特定のアーキテクチャ、および特定に部品等のような数多くの特定の詳細について述べる。しかし、それらの特定の詳細なしに本発明を実施できることが当業者には明らかであろう。他の場合には、本発明を不必要にあいまいにしないようにするために、周知の回路および装置は概略的な態様で示した。
【００１３】
【実施例】
図１は本発明に教示を用いるプロセッサおよびキャッシュ・メモリ・サブシステムの一例を示す。このシステムはＣＰＵ１５と、ＳＲＡＭアレイ・キャッシュ１６と、キャッシュ制御器１７とで構成される。ＣＰＵ１５と、ＳＲＡＭアレイ・キャッシュ１６と、キャッシュ制御器１７とはアドレス・バス１８を介して転送アドレスへ結合される。また、ＣＰＵ１５と、ＳＲＡＭアレイ・キャッシュ１６と、キャッシュ制御器１７とはデータ・バス１９を介してデータへ結合される。
ここで説明している実施例においては、アドレス・バス１８は３６ビットであり、データ・バス１９は６４ビットである。ＣＰＵ１５はストローブ信号を制御バス２０を介してキャッシュ制御器１７へ送る。ＣＰＵ１５はストローブ信号を制御バス２１を介してキャッシュ制御器１７から受ける。
【００１４】
この実施例においては、ＳＲＡＭアレイ・キャッシュ１６は８つの１２８ｋ×９ビット同期ＳＲＡＭを備える。９ビットの８つの層で７２ビットを生じ、その７２ビットの内６４ビットがデータであり、８ビットがパリティである。ＳＲＡＭアレイ・キャッシュ１６はＣＰＵ１５のための第２のキャッシュとして機能する。キャッシュ制御器１７は、ＳＲＡＭアレイ・キャッシュ１６の内容を示すタグ１６０を維持する。
【００１５】
図２は、本発明の教示を用いるＣＰＵ１５のための主キャッシュ・システムの例を示す。命令パイプライン２２がＣＰＵ１５のための命令プロセッサを表す。命令パイプライン２２は命令キャッシュ２３から命令を受ける。命令パイプライン２２はデータ・キャッシュ２４からデータをアクセスする。
命令プリフェッチ装置２５が命令を先取りし、命令キャッシュ２３へ供給する。プリフェッチ装置２６がデータを先取りし、データ・キャッシュ２４へ供給する。命令プリフェッチ装置２５とプリフェッチ装置２６がバス・インターフェイス装置２８を介してＳＲＡＭアレイ・キャッシュ１６とそれぞれ通信する。ＳＲＡＭアレイ・キャッシュ１６に記憶すべきデータは記憶バッファ２７に累積される。記憶バッファ２７はデータをＳＲＡＭアレイ・キャッシュ１６へバス・インターフェイス装置２８を介して転送する。
以下に詳しく説明する高性能マイクロプロセッサ・バス・プロトコルによりＳＲＡＭアレイ・キャッシュ１６と、命令プリフェッチ装置２５、データ・プリフェッチ装置２６、および記憶バッファ２７との間の高速転送を可能にする。
【００１６】
図３は並行する読出しブロック・トランザクションを示す。それら２つのトランザクションはＳＲＡＭアレイ・キャッシュ１６をヒットする。第１の読出しブロックはアドレスＡ０〜Ａ３により定められるデータ行に対応し、第２の読出しブロックはアドレスＢ０〜Ｂ３により定められるデータ行に対応する。
【００１７】
アドレス・バス１８とデータ・バス１９を介する情報データ転送を同期させるためにクロック信号（ＣＬＯＣＫ）が用いられる。アドレス・バス１８を介して送られるアドレス信号はＡＤＤＲ信号により表される。バースト・トランザクションを指示するためにバースト信号が用いられる。各バス・トランザクションのスタートを支持するためにＣＭＤＳが用いられる。読出しトランザクションが進行中であることを示すためにＲＤ信号が用いられ、書込みトランザクションを示すためにＷＲ信号が用いられる。ＣＣサイクルがキャッシュ制御器１７の活動を示し、ＳＲＡＭサイクルがＳＲＡＭアレイ・キャッシュ１６の活動を示す。読出しトランザクションを行うことができることをＲＧＲＴ信号が示し、書込みトランザクションを行うことができることをＷＧＲＴ信号が示す。読出しデータを利用できることをＲＲＤＹ信号が示し、データバス１９の状態をＤＡＴＡが表す。
【００１８】
第１の読出しブロック・トランザクションが時刻３０に始まる。その時にはバス・インターフェイス装置２８により送られてＣＭＤＳ信号が有効であって、バス・トランザクションの状態を示す。ＡＤＤＲ信号により示されているように、第１の読出しブロックの第１のアドレスＡ０も時刻３０には有効であって、クロック信号の立上がり縁部でＳＲＡＭアレイ・アドレス・レジスタ１３０とキャッシュ制御器アドレス・レジスタ１４０へロードされる。その第１のアドレスＡ０はバス・インターフェイス装置２８によりアドレス・バス１８を介して送られる。ＣＣサイクル信号により示されているように、キャッシュ制御器１７のタグ１６０がキャッシュ制御器アドレス・レジスタ１４０に保存されているアドレスＡ０に対して検査される。また、時刻３０には、ＳＲＡＭサイクル信号により示されているように、ＳＲＡＭアレイ・キャッシュ１６の読出しサイクルが始まる。アドレス・バス１８に存在するアドレスＡ０が読出しトランザクションに対するものであることをＲＤ信号が示し、アドレス・バス１８に存在するアドレスＡ０がバースト・トランザクションの一部であることをバースト信号が示す。信号ＲＤとバーストはバス・インターフェイス装置２８により制御バスを介して送られる。
【００１９】
時刻３１には、バス・インターフェイス装置２８により送られて第２のアドレスＡ１がアドレス・バス１８において有効であって、クロック信号の立上がり縁部でＳＲＡＭアレイ・アドレス・レジスタ１３０へロードされる。時刻３１と３２の間で、ＳＲＡＭサイクル信号により示されているように、ＳＲＡＭアレイ・キャッシュ１６の読出しサイクルが起きる。同様にして、第１のブロックの第３のアドレスＡ２と第４のアドレスＡ３が、時刻３２と３３におけるクロック信号の立上がり縁部においてＳＲＡＭアレイ・キャッシュ１３０へ供給される。
【００２０】
時刻３２には、データ・バス１９を介して供給される読出しデータが有効であることをＲＲＤＹ信号がバス・インターフェイス装置２８へ示す。そのＲＲＤＹ信号はキャッシュ制御器１７により制御バス２１を介して送られる。時刻３０と３１の間のタグ１６０の検査の結果としてアドレスＡ０がヒットされるから、時刻３２にはＲＲＤＹ信号が有効であることをキャッシュ制御器１７は表明する。時刻３２には、アドレスＡ０に対応するＳＲＡＭアレイ・キャッシュ１６からのデータ行がＳＲＡＭアレイ・データ・レジスタ１３１に保存される。それは、ＲＲＤＹ信号により示されているように、データ・バス１９において有効である。同様に、時刻３３，３４，３５には、アドレスＡ１，Ａ２，Ａ３に対応するＳＲＡＭアレイ・キャッシュ１６からのデータ行がＳＲＡＭアレイ・データ・レジスタ１３１に順次保存され、データ・バス１９を介して順次送られる。
【００２１】
時刻３４においては、第１の読出しブロックの最後のアドレスＡ３がＳＲＡＭアレイ・アドレス・レジスタ１３０に保存された後の次のクロック・サイクルでは、第２の読出しブロック・トランザクションが始まり、ＣＭＤＳ信号がバス・インターフェイス装置２８により有効であると表明される。アドレスＢ０〜Ｂ３に対応する第２の読出しブロックは、時刻３０と３５の間の読出しブロック・トランザクションと同じ順序で、時刻３４から時刻３９間で進む。
【００２２】
第１の読出しブロック・トランザクションと第２の読出しブロック・トランザクションは時刻３４と３５においてオーバラップすることがわかるであろう。時刻３４においては、第２の読出しブロックの第１のアドレスＢ０が、第１の読出しトランザクションが終わることを待つことなしに、アドレス・バス１８を介して送られる。時刻３５においては、第２の呼出しブロックの第２のアドレスＢ１がＳＲＡＭアレイ・アドレス・レジスタ１３０にロードされ、その間に、第１の読出しブロックの最後のアドレスＡ３に対応するデータ行がデータ・バスで有効である。
【００２３】
図４はＳＲＡＭアレイ・キャッシュ１６をヒットする書込みブロック・トランザクションを示す。この書込みブロックはアドレスＡ０〜Ａ３により定められるデータ行に対応する。
時刻４０においては、バス・インターフェイス装置２８は書込みブロック・トランザクションの開始を示す。時刻４０においてＡＤＤＲ信号により示されているように、書込みブロックの第１のアドレスＡ０はアドレス・バス１８において有効である。また、時刻４０においてデータ信号により示されているように、アドレスＡ０に対応するデータ行はデータ・バス１９において有効である。バースト信号は、アドレスＡ０がバースト・トランザクションの一部であることを示し、ＷＲ信号が書込みトランザクションであることを示す。バースト信号とＷＲはバス・インターフェイス装置２８により制御バス２０を介して送られる。クロック信号の立上がり縁部においてアドレスＡ０はキャッシュ制御器アドレス・レジスタ１４０へロードされる。ＣＣサイクル信号により示されているように、キャッシュ制御器１７のタグ１６０は、時刻４０と４１の間でアドレスＡ０に対応するデータ行に対して検査される。
【００２４】
時刻４２においては、アドレスＡ０に対するタグ１６０についてのヒットが起きたことをＷＥＥ信号が示す。ＷＥＥ信号はキャッシュ制御器１７により制御バス２１を介して送られる。時刻４３においては、アドレスＡ０および対応するデータ行はアドレス・バス１８およびデータ・バス１９において依然として有効であって、ＷＥ［０：７］信号がＳＲＡＭアレイ・キャッシュ１６へ送られてＳＲＡＭ書込みサイクルを可能にする。ＷＲＤＹ信号がアドレスＡ０に対応するデータ行書込みの終了を示す。
時刻４４〜４６においては、残りのアドレスＡ１〜１３と、それらのアドレスに対応するデータ行がアドレス・バス１８とデータ・バス１９を介して送られる。各クロックサイクルにおいて、ＷＥ「０：７」信号はＳＲＡＭアレイ・キャッシュ１６書込みサイクルを可能にし、ＷＲＤＹはデータ行書込みの終りを示す。ＳＲＡＭサイクル信号は時刻４３で始まるＳＲＡＭアレイ・キャッシュ１６書込みサイクルのタイミングを示す。
【００２５】
上記の例は、４つのデータ行をＳＲＡＭアレイ・キャッシュ１６へ転送する書込みブロック・トランザクションを示す。しかし、この実施例においては、書込みブロック・トランザクションは任意の長さにできる。更に、書込みブロックの間に出されたアドレスはＳＲＡＭアレイ・キャッシュ１６の１つの３２バイト・キャッシュ行内の任意のものにできる。
【００２６】
図５はＳＲＡＭアレイ・キャッシュ１６をヒットする読出しブロック・トランザクションと、それに続く、ＳＲＡＭアレイ・キャッシュ１６をヒットする書込みブロック・トランザクションとを示す。読出しブロックのためのアドレスおよびデータは「ｒ」記号により示され、書込みブロックのためのアドレスおよびデータは［ｗ］記号により示される。
【００２７】
読出しブロック・トランザクションは時刻５０で始まり、その時にはＣＭＤＳ信号がバス・トランザクションの開始を示す。時刻５０においては、ＡＤＤＲ信号により示されているように、読出しブロックの第１のアドレスがアドレス・バス１８で有効である。読出しブロックの第１のアドレスはＳＲＡＭアレイ・アドレス・レジスタ１３０とキャッシュ制御器アドレス・レジスタ１４０へロードされる。ＣＣサイクルが、キャッシュ制御器１７のタグ１６０が時刻５０に検査されることを示す。また、時刻５０においては、ＳＲＡＭサイクル信号により示されているように、ＳＲＡＭアレイ・キャッシュ１６の読出しサイクルが始まる。ＲＤ信号は、アドレス・バス１８におけるアドレスが読出しトランザクションに対するものであることを示し、バス・インターフェイス装置２８からのバースト信号が、アドレス・バス１８におけるアドレスがバースト・トランザクションの一部であることを示す。時刻５０と５２の間で、読出しブロック・トランザクションについて先に説明したように、クロック信号の立上がり縁部において、読出しブロックの新しいアドレスがＳＲＡＭアレイ・アドレス・レジスタ１３０へロードされる。
【００２８】
時刻５１においては、データ・バス１９を介して供給された読出しデータが有効であり、データ信号が読出しブロックの第１のアドレスに対応するデータ行を繰り上げる事をキャッシュ制御器１７からのＲＲＤＹ信号がバス・インターフェイス装置２８へ知らせる。先に説明したように、時刻５２，５３，５４においては、ＲＲＤＹ信号により示されているように、読出しブロックの残りのアドレスに対応するデータ行が、データ・バス１９において有効である。
【００２９】
書込みブロック・トランザクション時刻５３に始まり、その時にはバス・インターフェイス装置２８からのＣＭＤＳ信号バス・トランザクションの開始を示し、かつその時には、ＡＤＤＲ信号により示されているように、アドレス・バス１８において書込みブロックの第１のアドレスが有効である。バス・インターフェイス装置２８からのバースト信号が、アドレス・バス１８におけるアドレスがバースト・トランザクションの一部であることを示し、バス・インターフェイス装置２８からのＷＲ信号が書込みトランザクションを示す。時刻５３においては、書込みブロックの第１のアドレスがキャッシュ制御器のアドレス・レジスタ１４０へロードされる。ＣＣ信号サイクルにより示されているように、キャッシュ制御器１７のタグ１６０が時刻５３と５４の間で検査される。
【００３０】
時刻５５においては、キャッシュ制御器１７からのＷＥＥ信号が、書込みブロックの第１のアドレスでタグ１６０のヒットが起きて、対応するデータ行がＳＲＡＭアレイ・キャッシュ１６に保存されることを意味する事を示す。時刻５６においては、アドレス・バス１８におけるアドレスが依然として有効であり、新しいデータ行がバス・インターフェイス装置２８によりデータ・バス１９を介して送られる。また時刻５６においては、ＷＥ［０：７］信号がＳＲＡＭアレイ・キャッシュ１６へ送られて、ＳＲＡＭ書込みサイクルを可能にする。書込みトランザクションの第１のアドレスに対応する書込みの終了をＷＲＤＹ信号が示す。
【００３１】
図６は、ＳＲＡＭアレイ・キャッシュ１６をミスする読出しブロック・トランザクションと、ＳＲＡＭアレイ・キャッシュ１６をヒットするインターリーブされた書込み行トランザクションを示す。書込み行トランザクションはミスされた読出しブロックの外部取り出し中に起きるから、その書込み行トランザクションはインターリーブされる。読出しブロックのためのアドレスとデータは記号「ｒｄ」により示され、書込みブロックのためのアドレスとデータは記号「ｗｒ」により示される。
【００３２】
読出しブロック・トランザクションは通常時刻６０で起き、ＣＭＤＳ信号がバス・トランザクションの開始を示す。時刻６０においては、ＡＤＤＲ信号により示されているように、読出しブロックの第１のアドレスはアドレス・バス１８において有効である。また時刻６０においては、読出しブロックの第１のアドレスがＳＲＡＭアレイ・アドレス・レジスタ１３０とキャッシュ制御器アドレス・レジスタ１４０へロードされる。ＣＣ信号により示されているように、キャッシュ制御器１７のタグ１６０の検査が時刻６０から始まる。ＳＲＡＭサイクル信号により示されているように、時刻６０にＳＲＡＭアレイ・キャッシュ１６の読出しサイクルが始まる。前のように、アドレス・バス１８におけるアドレスが読出しトランザクションに対するためのものであることをＲＤ信号が示し、バースト信号がバースト・トランザクションであることを示す。読出しブロック・トランザクションについて先に示したように、時刻６０から始まって、読出しブロック内のアドレスがクロック信号の立上がり縁部でＳＲＡＭアレイ・アドレス・レジスタ１３０へロードされる。
【００３３】
時刻６１で始まって、アドレスに対応してＳＲＡＭアレイ・アドレス・レジスタ１３０へロードされたデータは、ＳＲＡＭアレイ・データ・レジスタ１３１から転送される。しかし、時刻６１においては、キャッシュ制御器１７からのＲＧＲＴ信号はアクティブでない。それは、読出しブロックの第１のアドレスがＳＲＡＭアレイ・キャッシュ１６をミスした事を示す。ＲＧＲＴ信号はキャッシュ制御器１７により制御バス２１を介して送られる。
【００３４】
キャッシュ制御器１７がミスされた読出しブロックを外部から取り出している間に、バス・インターフェイス装置はインターリーブされている書込み行トランザクションを開始する。インターリーブされている書込み行トランザクションは時刻６２に開始され、その時にバス・インターフェイス装置２８からのＣＭＤＳ信号がバス・トランザクションの開始を示す。また時刻６２には、書込み行のアドレスはアドレス・バスにおいて有効であり、キャッシュ制御器アドレス・レジスタ１４０へロードされる。バースト信号がアクティブでなくて、アドレス・バス１８におけるアドレスがバースト・トランザクションの一部ではない事を示し、ＷＲ信号が書込みトランザクションを示す。キャッシュ制御器１７のタグが時刻６２と６３の間で検査されることをＣＣサイクル信号が示す。
【００３５】
時刻６４においては、書込みブロックのアドレスにおいてタグ１６０のヒットが起きたことをキャッシュ制御器１７からのＷＥＥ信号が示す。時刻６５においては、アドレス・バス１８におけるアドレスは依然として有効であり、対応するデータ行がデータ・バス１９で有効であり、ＷＥ［０：７］信号がＳＲＡＭアレイ・キャッシュ１６へ送られてＳＲＡＭ書込みサイクルを可能にする。ＷＲＤＹ信号が書込み行の終了を示す。
【００３６】
時刻６６においては、キャッシュ制御器１７からの信号ＷＧＲＴとＲＧＲＴがアクティブではなく、ミスした読出しブロックが受けられているからそれ以上のバス・トランザクションが許されないことを示す。時刻６６においては、ＣＣサイクル信号により示されているように、ミスされた読出しブロックの第１のアドレスがキャッシュ制御器１７のタグ１６０の内部へ進む。時刻６７においては、ミスされた読出しブロックの第１のアドレスがアドレス・バス１８において再び有効であり、対応するデータがターゲット・データ・バス１９において有効である。ＲＲＤＹ信号は、有効なデータを利用できることをバス・インターフェイス装置２８に示し、ＷＥ［０：７］信号がＳＲＡＭアレイ・キャッシュ１６へ送られてミスされた読出しブロックの第１のデータ行を保存する。このようにして、ミスされたデータ行がＳＲＡＭアレイ・キャッシュ１６とバス・インターフェイス装置２８へ同時に供給される。
【００３７】
同様に、ミスされた読出しブロックの残りの３つのデータ行が、時刻６８〜時刻６９に始まって、バス・インターフェイス装置２８とＳＲＡＭアレイ・キャッシュ１６へ転送される。ＳＲＡＭサイクルＳＲＡＭアレイ・キャッシュ１６の書込みサイクルを示して、入来するミスされたデータ行を保存する。ＣＣサイクルがキャッシュ制御器１７のタグ１６０の更新を示す。
【００３８】
図７は、ＳＲＡＭアレイ・キャッシュ１６をミスする書込み行トランザクションを、ＳＲＡＭアレイ・キャッシュ１６をヒットするインターリーブされた読出しブロック・トランザクションとともに示す。インターリーブされた読出しブロックの後で、ミスされた書込み行が受けられ、書込み行トランザクションが再び試みられる。ミスされた書込み行の外部取り出し中に読出しブロック・トランザクションが起きるから、そのトランザクションはインターリーブされる。書込み行のためのアドレスとデータが「ｗ」記号により示され、読出し行のためのアドレスとデータが「ｒ」記号により示される。
【００３９】
書込み行トランザクションが時刻７０に始まる。その時に、バス・インターフェイス装置２８からのＣＭＤＳ信号がバス・トランザクションの開始を示し、ＡＤＤＲ信号により示されているように、書込み行のアドレスがアドレス・バス１８で有効である。書込み行のアドレスがキャッシュ制御器アドレス・レジスタ１６０へロードされる。バス・インターフェイス装置２８からのバースト信号がアクティブではなくて、アドレス・バス１８におけるアドレスがバースト・トランザクションの一部ではない事を示し、バス・インターフェイス装置２８からのＷＲ信号が書込み・トランザクションを示す。時刻７０から始まって、キャッシュ制御器１７のタグ１６０が検査され、バス・インターフェイス装置２８からの書込みデータ行がデータ・バスにおいて有効である。
しかし、時刻７１においては、ＷＧＲＴ信号はアクティブではない。これはタグ１６０のミスが起きたこと、および希望のデータがＳＲＡＭアレイ・キャッシュ１６に保存されない事を示す。その後で、キャッシュ制御器１７は書込み行に対応するミスされた書込みブロックを外部で取り出す。
【００４０】
その間に、バス・インターフェイス装置２８は時刻７２に、ＣＭＤＳ信号を起動させることにより読出しブロック・トランザクションを開始して、バス・トランザクションの開始を示す。時刻７２には、ＡＤＤＲ信号により示されているように、読出しブロックの第１のアドレスがアドレス・バス１８で有効であって、ＳＲＡＭアレイ・アドレス・レジスタ１３０とキャッシュ制御器アドレス・レジスタ１４０へロードされる。ＣＣサイクル信号により示されているように、キャッシュ制御器１７のタグが時刻７２に検査される。ＳＲＡＭサイクル信号により示されているように、ＳＲＡＭアレイ・キャッシュ１６の読出しサイクルが起きる。ＲＤ信号が読出しトランザクションを示し、バースト信号がバースト・トランザクションを示す。読出しブロック・トランザクションは時刻７２と７３の間で前記のようにして進む。
【００４１】
時刻７４においては、キャッシュ制御器１７からのＷＧＲＴ信号とＲＧＲＴ信号はアクティブではない。これは、ミスされた読出しブロックが受けられているから、バス・トランザクションが許されない事をバス・インターフェイス装置２８へ示す。時刻７５においては、ミスされた読出しブロックの第１のアドレスがＳＲＡＭアレイ・アドレス・レジスタ１３０へロードされ、外部で受けられたデータ行がデータ・バス１９で有効である。ＷＥ［０：７］信号がＳＲＡＭアレイ・キャッシュ１６へ送られてミスされたデータ行を保存する。
【００４２】
類似のやり方で、残りの３つのミスされたデータ行が、時刻７６まで、ＳＲＡＭアレイ・キャッシュ１６へ転送される。ＣＣサイクルはキャッシュ制御器１７のタグの更新を示し、ＳＲＡＭサイクルはＳＲＡＭアレイ・キャッシュ１６の書込みサイクルを示す。
【００４３】
時刻７７に書込み行再試行トランザクションが始まる。その時に、バス・インターフェイス装置２８からのＣＭＤＳ信号がバス・トランザクションの開始を示し、書込み行のアドレスはアドレス・バス１８で有効である。書込み行のアドレスがキャッシュ制御器アドレス・レジスタに保存される。バースト信号はアクティブでなく、ＷＲ信号が書込みトランザクションを示す。ＣＣサイクル信号により示されているように、キャッシュ制御器１７のタグ１６０が時刻７７に検査される。
時刻７８には、キャッシュ制御器１７からのＷＥＥ信号がキャッシュ制御器１７のタグ１６０におけるヒットを示す。時刻７９には、ＷＥ［０：７］信号はＳＲＡＭアレイ・キャッシュ１６へ送られてデータ行を保存する。ＷＲＤＹ信号は書込み行再試行の終りを示す。
【００４４】
図８は、ＳＲＡＭアレイ・キャッシュ１６をミスする読出しブロック・トランザクション、およびその後に続く、同様にミスするインターリーブされた書込み行トランザクションを示す。その後で、ミスされた読出しブロックに対して読出し充填トランザクションが起き、それからミスされた書込み行を含んでいる書込みブロックに対して書込み重点トランザクションが起きる。最後に、ミスした書込み行に対して書き込み行再試行が起きる。読出しブロックに対するアドレスとデータが「ｒ」記号により示され、書込み行に対するアドレスとデータが「ｗ」記号により示される。
試みられた読出しブロック・トランザクションが時刻８０で始まり、ＣＭＤＳ信号がバス・トランザクションの開始を示す。時刻８０においては、ＡＤＤＲ信号により示されているように、読出しブロックの第１のアドレスがアドレス・バス１８において有効である。また、時刻８０においては、その第１のアドレスはＳＲＡＭアレイ・アドレス・レジスタ１３０とキャッシュ制御器アドレス・レジスタ１４０へロードされ、キャッシュ制御器１７のタグ１６０が検査される。ＳＲＡＭサイクル信号により示されているように、ＳＲＡＭアレイ・キャッシュ１６の読出しサイクルが起き、ＲＤ信号は読出しトランザクションを示し、バースト信号はバースト・トランザクションを示す。読出しブロック・トランザクションについて先に説明したように、時刻８０から始まって、引き続く読出しブロックがクロック信号の各立上がり縁部においてＳＲＡＭアレイ・アドレス・レジスタ１３０へロードされる。
【００４５】
時刻８１から始まって、読出しブロック・アドレスに対応する引き続くデータ行がＳＲＡＭアレイ・データ・レジスタ１３１へ転送される。しかし、時刻８１には、キャッシュ制御器１７からのＲＧＲＴ信号はアクティブでない。これは読出しブロックの第１のアドレスがキャッシュ制御器１７のタグ１６０をミスした事を示す。
ミスされた読出しブロックがキャッシュ制御器１７により外部で取り出されている間に、時刻８２に書込み行トランザクションが始まる。その時には、バス・インターフェイス装置２８からのＣＭＤＳ信号がバス・トランザクションの開始を示す。ＡＤＤＲ信号により示されているように、書込み行のアドレスはアドレス・バス１８において有効であり、キャッシュ制御器アドレス・レジスタ１４０へロードされる。バス・インターフェイス装置２８からのバースト信号はアクティブでなく、バス・インターフェイス装置２８からのＷＲ信号が書込みトランザクションを示す。時刻８２から始まって、キャッシュ制御器１７のタグ１６０が検査される。
【００４６】
時刻８３には、ＷＧＲＴ信号はアクティブでない。これは、希望のデータ行がキャッシュ制御器１７のタグ１６０をミスした事を示す。その後で、希望のデータ行を含んでいる書込みブロックがキャッシュ制御器１７により外部で取り出される。
時刻８４においては、キャッシュ制御器１７からの信号ＷＧＲＴとＲＧＲＴがアクティブでない。これは、ミスされた読出しブロックが受けられているからバス・トランザクションが許されない事を示す。時刻８５においては、ミスされた読出しブロックの第１のデータ行はデータ・バス１９において有効であり、ＲＲＤＹ信号はアクティブであって、有効なデータを利用できることをバス・インターフェイス装置２８へ示し、ＷＥ［０：７］信号がＳＲＡＭアレイ・キャッシュ１６へ送られてデータ行を保存する。
【００４７】
類似のやり方で、ミスされた読出しブロックの残りの３つのデータ行が、時刻８６まで、バス・インターフェイス装置２８とＳＲＡＭアレイ・キャッシュ１６へ転送される。ＣＣサイクルはキャッシュ制御器１７のタグ１６０が更新される時を示し、ＳＲＡＭサイクルは入来データ行を保存するＳＲＡＭアレイ・キャッシュ１６の書込みサイクルを示す。
時刻８４においては、信号ＷＧＲＴとＲＧＲＴがアクティブでない。これは、ミスされた書込みブロックが受けられているからバス・トランザクションが許されない事を示す。時刻８７においては、ミスされた書込みブロックの第１の行はデータ・バス１９において有効であり、ＷＥ［０：７］信号がＳＲＡＭアレイ・キャッシュ１６へ送られてミスされた行を保存する。
【００４８】
ミスされた書込みブロックの残りの３つの行が、時刻８８まで、ＳＲＡＭアレイ・キャッシュ１６へ転送される。ＣＣサイクルはキャッシュ制御器１７のタグ１６０の更新を示し、ＳＲＡＭサイクルは入来データ行を保存するＳＲＡＭアレイ・キャッシュ１６の書込みサイクルを示す。
書込み行エントリ・トランザクションが時刻８９で始まる。その時には、バス・インターフェイス装置２８からのＣＭＤＳ信号がバス・トランザクションの開始を示し、ＡＤＤＲ信号により示されているように、書込み行のアドレスがアドレス・バス１８において有効である。アドレスはキャッシュ制御器アドレス・レジスタ１４０へロードされる。バースト信号はアクティブでなく、ＷＲ信号が書込みトランザクションを示す。ＣＣサイクル信号により示されているように、キャッシュ制御器１７のタグ１６０が時刻８９において検査される。また時刻８９においては、書込み行のためのデータはデータ・バス１９において有効である。
【００４９】
その後で、キャッシュ制御器１７からのＷＥＥ信号がタグ１６０におけるヒットを示す。書込みデータ行を保存するためにＷＥ［０：７］信号がＳＲＡＭアレイ・キャッシュ１６へ送られ、ＷＲＤＹ信号が書込み行再試行の終了を示す。
【００５０】
図９は、スワップ・トランザクションを示す。このスワップ・トランザクションはＣＰＵ１５の内部レジスタの内容をメモリ場所と交換する。スワップ・トランザクションは時刻９０で始まり、その時に、バス・インターフェイス装置２８はＣＭＤＳ信号と、スワップ・アドレスＡ０と、対応するデータ行ｗと、スワップ・トランザクションを示すＬＤＳＴ信号を送る。その後で、キャッシュ制御器１７はデータ行ｗをバッファする。時刻９１と９２の間で、データ行が共用されているとすると、スワップ書込みが別のＣＰＵへ放送される。時刻９２から始まって、キャッシュ制御器１７はデータ行を外部で読出し、データ行をＣＰＵ１５へ送る。時刻９４から始まって、キャッシュ制御器１７はバッファされたデータ行ｗをＳＲＡＭアレイ・キャッシュ１６へ書込む。
【図面の簡単な説明】
【図１】本発明の教示を採用するプロセッサおよびキャッシュ・メモリ装置の例を示す。
【図２】本発明の教示を採用できるＣＰＵ１５のための主キャッシュの例を示す。
【図３】オーバラップする読出しブロック・トランザクションを示す。それらのトランザクションの両方はＳＲＡＭアレイ・キャッシュをヒットする。第１の読出しブロックはアドレスＡ０〜Ａ３により定められたデータ行に対応し、第２の読出しブロックはアドレスＢ０〜Ｂ３により定められたデータ行に対応する。
【図４】ＳＲＡＭアレイ・キャッシュをヒットする書込みブロック・トランザクションを示す。書込みブロックはアドレスＡ０〜Ａ３により定められたデータ行に対応する。
【図５】オーバラップする読出しブロック・トランザクションと書込みブロック・トランザクションを示す。それらのトランザクションの両方はＳＲＡＭアレイ・キャッシュをヒットする。読出しブロックに対するアドレスおよびデータと、書込みブロックに対するアドレスおよびデータはそれぞれ異なる記号により示される。
【図６】ＳＲＡＭアレイ・キャッシュをミスする読出しブロック・トランザクションを示し、それのインターリーブされた書込み行がＳＲＡＭアレイ・キャッシュをヒットする。読出しブロックに対するアドレスおよびデータと、書込みブロックに対するアドレスおよびデータはそれぞれ異なる記号により示される。
【図７】ＳＲＡＭアレイ・キャッシュをミスする書込み行ブロック・トランザクションを示し、それのインターリーブされた読出しブロック・トランザクションがＳＲＡＭアレイ・キャッシュをヒットする。書込み行に対するアドレスおよびデータと、読出しブロックに対するアドレスおよびデータはそれぞれ異なる記号により示される。
【図８】ＳＲＡＭアレイ・キャッシュをミスする読出しブロック・トランザクションを示し、それに、同様にミスするインターリーブされた書込み行トランザクションが続く。読出しブロックに対するアドレスおよびデータと、書込み行に対するアドレスおよびデータはそれぞれ異なる記号により示される。
【図９】ＣＰＵの内部レジスタの内容をメモリ場所と交換するスワップ・トランザクションを示す。このスワップ・トランザクションに対する書込みデータと読出しデータがそれぞれの記号により示される。
【符号の説明】
１５  ＣＰＵ
１６  ＳＲＡＭアレイ・キャッシュ
１７  キャッシュ制御器
１８  アドレス・バス
１９  データ・バス
２０，２１  制御バス
２２  命令パイプライン
２３  命令キャッシュ
２４  データキャッシュ
２５  命令プリフェッチ装置
２６  プリフェッチ装置
２７  保存バッファ
２８  バス・インターフェイス装置
１３０，１４０，１５０  アドレス・レジスタ
１４１，１５１  データ・レジスタ
【図１】
0003920931.tif 000002
【図２】
0003920931.tif 000003
【図３】
0003920931.tif 000004
【図４】
0003920931.tif 000005
【図５】
0003920931.tif 000006
【図６】
0003920931.tif 000007
【図７】
0003920931.tif 000008
【図８】
0003920931.tif 000009
【図９】
0003920931.tif 000010