(57)【特許請求の範囲】
【請求項１】
データ・キャッシュを利用し、順不同に命令を実行する処理システムに関連する主メモリへの帯域幅を保持するシステムであって、
プロセッサと、
主メモリと、
上記プロセッサと連絡し、上記主メモリからデータラインを受け取り、格納するデータ・キャッシュと、
上記プロセッサおよび上記主メモリと相互接続するシステム・インターフェースと、
それぞれの命令を順不同に受け取り、実行し、上記命令に従って上記データ・キャッシュにアクセスするように構成される、上記プロセッサに関連する複数の命令処理機構と、
別の命令処理機構が、上記データ・キャッシュに不在のキャッシュ・ミス・データをすでに上記主メモリから要求しているとき、上記ミス・データについてそれぞれの命令処理機構から上記主メモリへの要求を妨げるように構成される、上記命令処理機構の各々に関連する論理と、
を備える上記システム。
【請求項２】
データ・キャッシュを利用し、順不同に命令を実行する処理システムに関連する主メモリへの帯域幅を保持する方法であって、
データアクセスへ向けられる命令を順不同に実行するステップと、
上記命令に従って、上記処理システムを用いて上記データ・キャッシュにアクセスするステップと、
上記処理システムを用いて上記データ・キャッシュに不在のミス・データを認識するステップと、
上記ミス・データについて上記主メモリへの複数の要求を妨げるステップと、
それぞれの命令を受け取る上記処理システムに関連する複数のアドレス並べ替えバッファ命令処理機構を維持するステップと、
各々の上記命令処理機構で、そのそれぞれの命令処理機構に関連する命令が上記ミス・データに従属するかどうか示すミス従属インジケータを維持するステップと、
上記命令処理機構の各々が、その対応するミス従属インジケータがアサートされるとき、上記主メモリから上記ミス・データを要求することをできなくするステップと、
を含む、上記方法。
【請求項３】
データ・キャッシュを利用し、順不同に命令を実行する処理システムに関連する主メモリへの帯域幅を保持する方法であって、
データアクセスへ向けられる命令を順不同に実行するステップと、
上記命令に従って、上記処理システムを用いて上記データ・キャッシュにアクセスするステップと、
上記処理システムを用いて上記データ・キャッシュに不在のミス・データを認識するステップと、
上記ミス・データについて上記主メモリへの複数の要求を妨げるステップと、
上記キャッシュの各々のキャッシュ・データラインにステータス・インジケータを関連付け、対応するキャッシュ・データラインが無効であり、かつすでに上記主メモリ から要求されているときに該ステータス・インジケータによってミス・ペンディング状態を示すステップと、
上記命令を受け取って実行するよう構成される命令処理機構のうち１つのそれぞれの命令に従って上記キャッシュにアクセスし、上記ステータス・インジケータを調べることによって上記ミス・ペンディング状態を認識するステップと、
上記ステータス・インジケータが上記ミス・ペンディング状態を示すとき、上記命令処理機構に関連付けられる命令が上記ミス・データに依存するかどうかを示すミス従属インジケータをアサートするステップと、
上記命令処理機構の各々が、その対応するミス従属インジケータがアサートされるとき、上記主メモリから上記ミス・データを要求することをできなくするステップと、
を含む上記方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にコンピュータ・プロセッサ・アーキテクチャに関し、特に、順不同に命令を実行するプロセッサにおいて、冗長なメモリ要求が排除され、メモリ帯域幅が最適化されるように、キャッシュ・ミスに起因するメモリ要求をトラッキングするミス追跡システムおよび方法に関する。
【０００２】
【従来の技術】
一般に、コンピュータ・プロセッサ(処理ユニット)は、システムの演算を指示する制御ユニット、および計算演算を実施する算術論理ユニット(ALU)からなる。プロセッサの設計は、１つまたは複数のレジスタ組の選択、これらレジスタ間の通信経路、およびこれらがどのように動作するか指示し、制御する手段を伴う。普通、プロセッサは、主メモリに保有される一連の命令からなるプログラムによって指示される。各々の命令は、通常長さが１または複数ワードの１グループのビットであり、プロセッサによって実行される演算を明示する。一般に、プロセッサの基本サイクルは、(a)命令を主メモリから命令レジスタへフェッチするステップと、(b) その命令を解読する(すなわちそれが示すなされるべきことを判断する。各々の命令は、実施される演算および演算が適用されるデータを示す)ステップと、(c)その命令によって明示される演算を実行するステップと、(d)次の命令が位置するところを判断するステップとを含む。普通、次の命令とは、現在の命令のすぐ後に続くものである。
【０００３】
しかし、２以上のスカラ演算が並行に実施されるスーパースカラ・プロセッサのような高性能なプロセッサにおいて、プロセッサは、順不同である、またはプロセッサを駆動するソフトウェアによって規定される順序と一貫しない順序である命令を実施するように設計されることができる。これらのシステムで、命令は、それらがプログラムによって規定されるシーケンスに現れるときに対し、それらが実行されることができるときに実行される。さらに、順不同の命令の実行の後、その結果は、命令の順序と一致するように最終的に並べ替えられる。
【０００４】
性能を最適化するために、キャッシュ・メモリがしばしばコンピュータのプロセッサに関連して用いられる。キャッシュ・メモリは、コンピュータのプロセッサと主メモリの間に位置する高速なバッファである。プロセッサで現在使用中のデータおよび命令は、キャッシュ・メモリへ移動させられ、それによって２つの利益をもたらす。第１に、プロセッサのメモリ要求に関する平均アクセス時間が低減され、プロセッサのスループットを増加させる。第２に、それによって利用可能なメモリ帯域幅のプロセッサの利用が低減されるので、システム・バス上のその他のデバイスは、プロセッサのじゃまをすることなくメモリを使用することができる。このようにキャッシュ・メモリは、主メモリからプロセッサへの命令およびデータのフローの速度を上げるために使用される。主メモリのサイクル時間は、典型的にプロセッサのクロッキング速度よりも遅いので、このキャッシュ・ファンクションが重要である。
【０００５】
プロセッサがあるデータラインについてデータ・キャッシュにアクセスするとき、プロセッサはそのキャッシュにアドレスを送る。キャッシュは、アドレスからキャッシュ索引を解析し、所望のデータラインを含みうる１つまたは複数の記憶位置を選択するためにそれを使用する。キャッシュは、いくつかの設計で、１または複数の位置に対応する実ページ番号(RPN)であるタグ、およびそのタグに対応するデータラインが有効であるか無効であるかを示すステータス・インジケータ(indicator)を出力する。
【０００６】
典型的にキャッシュに関連する支援回路は、ステータス・インジケータおよびタグを受け取る。ステータス・インジケータが無効データを示すとき、支援回路は「ミス(miss)」表示をプロセッサに送り、その場合、プロセッサはそのデータラインについて主メモリをアクセスしなければならない。ステータス・インジケータが有効データを示すとき、支援回路は、キャッシュが所望のデータラインを現在格納しているか判断するために、タグをアドレスの残りのものと比較する。キャッシュが、タグの比較によって判断されるように要求されるデータラインを持たないとき、支援回路は、「ミス」表示をプロセッサに送り、その場合、プロセッサはそのデータラインについて主メモリをアクセスしなければならない。キャッシュが、タグの比較によって判断されるように要求されているデータラインを持つとき、支援回路は、「ヒット(hit)」表示をプロセッサに送り、要求されるデータラインを読み取るようにプロセッサを促進する。
【０００７】
命令の順不同の実行、または命令のスーパースカラの実行を実施するプロセッサでは、２つ以上の命令が同一のデータラインをシークすることがありえる。さらに、データラインがキャッシュで利用可能でない場合、主メモリへの複数のメモリ要求が、システム・インターフェースすなわち１または複数のバス上に生成され、連絡されうる。この状態は、トラフィックを増やすことによりシステム・インターフェースの帯域幅を減少させるので望ましくない。
【０００８】
【発明が解決しようとする課題】
本発明の目的は、上述のような従来技術の不適当な点および不足する点を克服することである。
【０００９】
本発明の別の目的は、順不同に命令を実行するプロセッサの性能を改善することである。
【００１０】
本発明の別の目的は、順不同に処理するシステムでキャッシュ・ミスが起きた場合に、主メモリへのメモリ要求を最小限にするミス追跡システムおよび方法を提供することである。
【００１１】
本発明の別の目的は、順不同に処理するシステムで、データラインが主メモリから返されると、冗長なメモリ要求を排除し、メモリ要求に従属する命令を更新するミス追跡システムおよび方法を提供することである。
【００１２】
本発明の別の目的は、設計が簡単であり、操作上効率的で信頼でき、安価に大量生産できるミス追跡システムおよび方法を提供することである。
【００１３】
【課題を解決するための手段】
手短に述べると、本発明は、データ・キャッシュを利用し、順不同に命令を実行する処理システムに関連する主メモリへの帯域幅を最適化するミス追跡システムおよび方法を提供する。ミス追跡システムは、プロセッサ、システム・インターフェースを経由してプロセッサに連絡する主メモリ、およびプロセッサに関連するデータ・キャッシュ(DCACHE)を含む。
【００１４】
プロセッサは、メモリ・アクセスすなわち主メモリまたはDCACHEへのロードまたは格納へ向けられる命令を受け取り、実行する命令並べ替え機構をもつ。命令並べ替え機構は、メモリ待ち行列(MQUEUE)であることが好ましいが、これに限定されない。MQUEUEは、それぞれのメモリ命令を受け取る複数の命令処理機構を含む。各々の命令処理機構は、対応する命令を格納する命令レジスタ、および命令の実行に関して結果のデータ・アドレスを受け取るアドレス並べ替えスロット(ARBSLOT)を含む。命令処理機構は、順不同に(実行を開始するための)命令を送り出し、その命令によって、DCACHEへのアクセスが行われる。
【００１５】
発明の重要な特徴に従うと、各々の命令処理機構、具体的にはARBSLOTに関連するミス従属(dependent-on-miss、ＤＭ)インジケータ論理は、別のARBSLOTがDCACHEに不在のミス・データをすでに主メモリから要求しているとき、そのミス・データについてそれぞれのARBSLOTから主メモリへの要求を妨げる。ＤＭインジケータ論理は、現在それぞれのARBSLOTに関連する命令がそれぞれ、まだ受け取られていないミス・データに従属するか否か示す信号ＤＭをアサートする、およびアサートから外す(deasserted)ように構成される、例えばラッチその他の適当な機構のようなＤＭインジケータを含む。キャッシュ・ミスが起こると、ＤＭインジケータ論理は信号ＤＭをアサートするが、別のARBSLOTがすでに要求を行っているときは、そのミス・データについてそのそれぞれのARBSLOTから主メモリへの要求を妨げる。ＤＭインジケータは、DCACHEによってミス・データが主メモリから受け取られると、信号ＤＭをアサートからはずし、アサートからはずすことによって、特定のARBSLOTはそのデータについてもう一度DCACHEにアクセスする。
【００１６】
さらに、好ましい実施例では１または複数のビットであるステータス・インジケータは、各々のキャッシュ・データラインに関連する。ステータス・インジケータは、対応するキャッシュ・データラインが、無効であり、かつすでに主メモリから要求されていることを示す「ミス・ペンディング(miss pending)」のステータスを、適切なときに示すことができる。論理は、キャッシュ・アクセスの間、ステータス・インジケータを調べる。ステータス・インジケータがミス・ペンディングのステータスを示すとき、論理は、ＤＭインジケータを用いて信号ＤＭをアサートし、主メモリへアクセスを起動することを控える。
【００１７】
より高い性能を実現するために、データラインの半分だけが有効であるとき、ステータス・インジケータは、「キャッシュ・ラインが半分有効」のステータスを示すことができる。好ましい実施例で、キャッシュ・ラインは、主メモリから２つの半分で返される。この付加のステータス情報によって、論理は、キャッシュ・ラインの半分が利用可能であるときを、および所与のARBSLOTのデータ・アドレスが先に進んで、DCACHEにある半分のラインからそのデータをアクセスすることができるかどうかを認識することができる。
【００１８】
またこの発明は、データ・キャッシュを利用し、順不同に命令を実行する処理システムに関連する主メモリへの帯域幅を保持する新しい方法を提供することを目的とする。これに関して、方法は、データアクセスに向けられる命令を順不同に実行し、その命令に従って処理システムを用いてデータ・キャッシュにアクセスし、処理システムを用いてデータ・キャッシュに不在のミス・データを認識し、そのミス・データについて主メモリへの複数の要求を妨げるように、広く概念化されることができる。
【００１９】
【発明の実施の形態】
図１に示されるように、本発明のミス追跡システム100(より詳しくは図３および図４を参照)および関連する方法は、コンピュータ11内で実現され、特に、プロセッサ14の命令フェッチ/実行システム12内のメモリ待ち行列(MQUEUE)、およびコンピュータ11のプロセッサ14に接続されるデータ・キャッシュ(DCACHE)24に関連する。一般に、コンピュータ11は、プロセッサ14、プロセッサ14を駆動するソフトウェア(S/W)18をもつ主メモリ16、参照矢印23で示されるようにプロセッサ14と相互接続するDCACHE24、およびプロセッサ14および主メモリ16と相互接続する１または複数のバスのようなシステム・インターフェース22からなる。演算において、プロセッサ14の命令フェッチ/実行システム12がソフトウェア18を実行するとき、プロセッサ14で現在使用中のデータはDCACHE24へ転送され、それによってプロセッサのメモリ要求に関する平均アクセス時間を減少させ、システム・インターフェース22上のトラフィックを最小限にする。最後に、新しいミス追跡システム100を除いては、前述のコンピュータ構成要素およびそれらの相互作用はすべて従来技術でよく知られており、理解されていることを述べなければならない。
【００２０】
DCACHE24の典型的なキャッシュ・ラインは、タグ、ステータス・インジケータおよびデータを含む。所望のデータラインを含みうる１つまたは複数の記憶位置を選ぶために、キャッシュ索引が、DCACHE24に送られ、DCACHE24で使用される。キャッシュ索引の受領に応答して、DCACHE24は、１つまたは複数の位置に対応する、好ましい実施例では実ページ番号(RPN)であるタグ、そのタグに対応するデータラインが有効であるか無効であるか示すステータス・インジケータ、および有効または無効でありうるデータを出力する。典型的に、ステータス・インジケータは以下の状態を示す。「無効」は、存在するデータがないことを意味する。「有効、共有(valid shared)」は、データは存在するが、どこかほかに位置することがありえることを意味する。「有効、専有、クリーン(valid private clean)」は、ラインが唯一のコピーをもち、DCACHE24がまだラインに書き込みをしていないことを意味する。「有効、専有、ダーティ(valid private dirty)」は、ラインが唯一のコピーをもち、DCACHE24がすでにラインに書き込みをしている(従って主メモリへのラインをコピーする必要がある)ことを意味する。
【００２１】
DCACHE24に関連するタグ比較機構108(図３)は、ステータス・インジケータおよびタグを受け取る。ステータス・インジケータが無効データを示すとき、タグ比較機構は、「ミス」表示をプロセッサ14へ送り、その場合プロセッサ14は、そのデータラインについて主メモリ16にアクセスする。ステータス・インジケータが有効なデータを示すとき、タグ比較機構は、DCACHE24が所望のデータラインを現在格納しているかどうか判断するために、タグをアドレスの残りのものと比較する。DCACHE24が、タグの比較によって判断されるように、要求されているデータラインを持たないとき、タグ比較機構は、「ミス」表示をプロセッサ14へ送り、その場合プロセッサ14は、そのデータラインについて主メモリ16にアクセスする。DCACHE24が、タグの比較によって判断されるように、要求されているデータラインをもつ場合、タグ比較機構は、「ヒット」表示をプロセッサ14へ送り、要求されるデータラインを読み取るようにプロセッサ14を促進する。
【００２２】
命令フェッチ/実行システム12の可能な実施例が、図２のブロック図によって示される。図２で示すように、命令フェッチ/実行システム12は、命令をソフトウェア18(図１)から格納するための命令キャッシュ(ICACHE)26をもつ。命令フェッチ機構(IFETCH)28はICACHE26と連絡し、最終の実行のためにICACHE26から命令を取り出す。好ましい実施例では、IFETCH28は、一度に４命令(各々３２ビット)をフェッチし、その命令をソート機構32へ転送する。
【００２３】
ソート機構32は、各々の命令が、算術論理ユニット(ALU)またはメモリのどちらに向けられているか判断し、それに応じて、対応する参照矢印36a、36bで示されるように命令を算術論理ユニット待ち行列(AQUEUE)38aおよびMQUEUE38bへそれぞれ分配する。
【００２４】
算術論理ユニット待ち行列38aは、複数のALU命令処理機構39a(好ましい実施例で数は28)を含み、それらは、参照矢印43で示されるように算術論理ユニット42へ向けられるそれぞれの命令を格納するレジスタ41aを持つ。算術論理ユニット待ち行列38aの中の命令は、任意の可能な順序で(好ましくはデータフロー形態で)実行され、それらが完了するとき、その結果が捕らえられ、完了とマークされる。
【００２５】
待ち行列38aによって制御されるALU42は、インターフェース45で示されるようにリネーム(rename)・レジスタ44a、44bおよび汎用レジスタ46からオペランドを取り出すことができる。ALU42がオペランド上に演算したあと、演算の結果は、参照矢印49で示されるように、AQUEUEリネーム・レジスタ44aに格納される。
【００２６】
メモリ待ち行列38bは、複数の命令処理機構39bを含む。それぞれの命令処理機構39bは、それぞれのメモリ命令を格納するレジスタ41bを含み、また参照数字48によって示される、それぞれのアドレスを格納するアドレス並べ替えバッファ・スロット(ARBSLOT、好ましい実施例で数は28である)を含む。メモリ待ち行列38bの中のメモリ命令は、メモリへの「ロード」および「格納」と分類されることができる。「ロード」は、データをメモリ(キャッシュまたは主メモリ)からレジスタへ転送する要求であり、「格納」は、データをレジスタからメモリへ転送する要求である。
【００２７】
命令の実行の間に、第１のフェーズは、アドレスを計算するために、規定される数学的演算をオペランドに実行することを伴い、第２のフェーズは、計算されたアドレスに基づいて、データについてメモリ/キャッシュをアクセスすることを伴う。MQUEUE38bは、任意の可能な順序で(好ましくはデータフロー形態で)各々の命令および実行の２つのフェーズ(アドレス計算およびメモリ/キャッシュ・アクセス)を実行する。命令が完了すると、その結果は、MQUEUEリネーム・レジスタ44bによって捕らえられ、命令は、MQUEUE38bで完了とマークされる。好ましい実施例において、MQUEUE38bは、ソート機構32から１サイクルあたり４命令(各々３２ビット)までを受け取り、参照矢印51bで示されるように、退去機構52へ１サイクルあたり２命令(３２ビット)までを転送する。
【００２８】
より詳しくは、命令の実行の第１フェーズの間に、アドレスはアドレス計算器58によって生成される。アドレス計算器58は、リネーム・レジスタ44bから取り出されるオペランドに基づいてアドレスを計算し、参照矢印62で示されるように、メモリ待ち行列38bの中の命令に対応するARBSLOT48へ(実または仮想)アドレスを渡す。命令による計算の制御は、図２の参照矢印64で示される。メモリの命令の実行の第２フェーズが遂行されるとき、計算されたアドレス(キャッシュ索引を含む)が、参照矢印54で示されるようにDCACHE24へ転送され、DCACHE24でロードまたは格納を達成する。好ましい実施例では、可能であれば２つのアドレスが、各々のサイクルに、メモリ待ち行列38bからDCACHE24へ転送される。この多重アドレス特徴を適応させるために、DCACHE24は、例として２重ポートを用いて実現されることができる。代わりに別の例として、また好ましい実施例で実現されるように、奇数および偶数アドレスが、単一ポートのランダム・アクセス・メモリ(RAM)のそれぞれの奇数および偶数キャッシュ・バンクへ同時に送られる。後者の設計の詳細は、同じ発明者によって同日に出願されている「Address Aggregation System And Method For Increasing Throughput Of Addresses To A Data Cache From A Processor」というタイトルの同時継続出願特許の明細書に説明されている。DCACHE24がアドレスを処理すると、データ結果は、参照矢印56で示されるようにリネーム・レジスタ44bへ転送される。
【００２９】
退去機構52は、対応する参照矢印51a、51bで示されるように、待ち行列38a、38bの各々から実行された命令を受け取る(好ましくは１サイクルあたり２つの32ビット)。退去機構52は、命令の結果をアーキテクチャの状態に付する。ソフトウェア18(図１)は、退去機構52によってアーキテクチャの状態に変換されない結果には気付かない。退去機構52は、それぞれ参照矢印73、74で示されるように、命令の属性に依存して命令の結果を汎用レジスタ46および/または制御レジスタ72へ移動させることにより、ソフトウェア18によって規定されるプログラムの順序で待ち行列38a、38bの命令を退去させ、結果として参照矢印76a、76bで示されるように、命令の結果がリネーム・レジスタ44a、44bから汎用レジスタ46へ渡される。
【００３０】
退去機構52がDCACHE24のデータラインへの格納をもたらす命令を退去させるとき、退去機構52は、ラインに対応するステータス・インジケータに「ダーティ」とマークし、ラインは変わり、主メモリ16でラインを更新するために最終的に主メモリ16に送られなければならないことを示す。
【００３１】
また退去機構52は、命令に関連する例外があるかどうか判断するための論理をもつ。例外とは、現在退去させている命令の１つに対応する特別な状況を示すフラグである。例外が起きた場合、退去機構52は、例外を示した命令の後に続く待ち行列38a、38b内のすべての命令を捨て、IFETCH28に、再実行のために未解決の命令をもう一度取り出させる、または特別な状況を扱うための特別なソフトウェアを取り出させる。
【００３２】
ミス追跡システムおよび方法
本発明のミス追跡システムおよび方法の特徴に従って、付加のキャッシュ状態が、上述された典型的な状態に加えられる。具体的に言うと、「ミス・ペンディング」状態および「キャッシュ・ラインが半分有効」状態が加えられる。上述の状態は、命令の順不同の処理およびDCACHE24への複数の同時のアクセスを可能にするために加えられている。好ましい実施例で、ステータス・インジケータ82は３ビットを使って実現され、符号は以下の表１で示される通りである。
【００３３】
【表１】
0003876034.tif 000002
【００３４】
この明細書でさらに詳しく後述されるが、「ミス・ペンディング」状態は、対応するデータラインが、現在はDCACHE24内になく、現在主メモリ16(図１)からシークされていることを示す。さらに、「キャッシュ・ラインが半分有効」状態は、データラインの半分のみが主メモリ16からDCACHE24へ転送されているときを示す。DCACHE24へのデータ読み取りアクセスすなわちロードがあり、ステータス・インジケータ82が「キャッシュ・ラインが半分有効」を示すとき、要求している命令は、要求されるデータがラインの第１の半分にあるか第２の半分にあるか判断する。それが第１の半分であれば、要求している命令は実行し、それ自身に完了とマークする。対照的に、それが第２の半分であれば、要求している命令は再び試みる。前述の特徴はシステムの性能を向上させる。
【００３５】
ここで本発明のミス追跡システム100が、図３および図４を参照して記述される。図３を参照すると、ミス追跡システム100は、システム・インターフェース制御102、複数のメモリ命令処理機構39b(それらの各々はARBSLOT48を含む)、DCACHE24、ミス・アービトレータ107、タグ比較機構108、およびアドレス計算器58を伴う。
【００３６】
システム・インターフェース制御102は、システム・インターフェース22へ/からのアクセスを制御し、具体的には、データについて主メモリ16へデータラインを要求し、データラインが主メモリ16から送られてくるとき、データライン105および制御信号106をDCACHE24へ転送する。システム・インターフェース制御102は、主メモリ16(図１)からのデータを要求するために、ミス制御信号MISS_CAV101およびMISS/COPY_IN_ADDR104の両方をARBSLOT48から受け取る。次にシステム・インターフェース制御102は、適当なデータ要求信号を生成し、主メモリ16に連絡する。システム・インターフェース制御102が主メモリ16からデータラインを受け取るとき、システム・インターフェース制御102は、データライン105をDCACHE24へ連絡し、参照矢印106で示されるように、DCACHE24へ制御信号COPY_IN103およびステータス・インジケータ「1xx」の両方を発行する。さらに、システム・インターフェース制御102は、そのラインに対応するアドレスMISS/COPY_IN_ADDR104および制御信号COPY_IN103をARBSLOT48へ送り、ARBSLOT48は、そのデータラインについてDCACHE24へアクセスするように促される。
【００３７】
各々のメモリ命令処理機構39bは、簡潔にする目的でそれらのうち１つだけが図３に示されており、DCACHE24、システム・インターフェース制御102およびタグ比較機構108と相互接続するARBSLOT48を含む。さらに詳しく後述されるように、ARBSLOT48は、それぞれのARBSLOT48に関連する命令が、すでに要求されており、かつDCACHE24に不在のミス・データラインに依存するか否かを示す内部のミス従属(ＤＭ)インジケータ135(図４)を維持する。さらにARBSLOT48は、別のARBSLOT48がすでに主メモリ16からミス・データラインを要求しているとき、そのミス・データラインについてARBSLOT48から主メモリ16へ要求が行われないようにする論理を含む。
【００３８】
図３を参照すると、ARBSLOT48はミス制御信号MISS_CAV101を発行することができ、また別のARBSLOT48からその信号を受け取ることができる。またARBSLOT48は、システム・インターフェース制御102または別のARBSLOT48から、アドレスMISS/COPY_IN_ADDRを受け取ることができる。最後に、ARBSLOT48は、システム・インターフェース制御102によって送られてくるアドレスをコピーするようにARBSLOT48に通知する、システム・インターフェース制御102からの制御信号COPY_IN103を受け取ることができる。
【００３９】
ミス・アービトレータ107は、図３に示されるように、各々のARBSLOT48と相互接続される。ミス・アービトレータ107は、キャッシュ・ミスが起きた場合に、複数のARBSLOT48の間でシステム・インターフェース22へのアクセスを裁定する。あるARBSLOT48でキャッシュ・ミスがあると判断されると、そのARBSLOT48は、参照数字111で示されるように、ミス要求信号MISS_REQを生成し、ミス・アービトレータ107にそのミス要求信号MISS_REQ111を転送する。ミス・アービトレータ107は、多くのARBSLOT48からのミス要求に優先順位を付け、選択する。ミス・アービトレータ107は、ミス要求を許可すると、選択されたARBSLOT48に許可信号MISS_GRANT112を発行し、それによってARBSLOT48はミス制御信号MISS_CAV101およびアドレスMISS/COPY_IN_ADDR104をシステム・インターフェース制御102へ発行する。
【００４０】
ARBSLOT48は、DCACHE24からデータ56を取り出すために、アドレスACCESS_ADDR114およびアクセス要求信号ACCESS_REQ115をDCACHE24に連絡する。DCACHE24は、アドレスACCESS_ADDR114(キャッシュ索引を含む)および信号ACCESS_REQ115を受け取ると、DCACHEタグ81およびステータス・インジケータ82を生成し、それらは両方ともタグ比較機構108へ送られる。
【００４１】
タグ比較機構108は、タグ81およびステータス・インジケータ82を受け取ることに加えて、ARBSLOT48からアドレスACCESS_ADDR114に対応するアクセス・タグACCESS_TAG116を受け取る。タグ比較機構108は、ステータス・インジケータ82を調べ、上述される表１に従って同じものを解読する。ステータス・インジケータ82が、DCACHEタグ81は有効であると示すとき、すなわちステータス・インジケータ82が「1xx」であるとき、またタグ比較機構108は、ヒットがあるかミスがあるか決定するためにDCACHEタグ81をタグACCESS_TAG116と比較する。タグ比較機構108は、それぞれミスがあるかヒットがあるかを示す信号〜HIT118をアサートし、またはアサートから外し、この信号をARBSLOT48へ送る。
【００４２】
ステータス・インジケータ82が「ミス・ペンディング」があると示すとき、すなわちステータス・インジケータ82が、シークされるキャッシュ・ラインと関係する「010」を示すとき、タグ比較機構108は、信号HIT_DMをアサートする。信号HIT_DM121がアサートされるとき、ARBSLOT48は、ARBSLOT48内のＤＭ変数をアサートするようにＤＭラッチを設定する。ＤＭ変数がARBSLOT48でアサートされる場合、ARBSLOT48は、ミス・データラインについて主メモリ16(図１)へのデータ要求を起動することを控える。
【００４３】
アドレス計算器58は、(図２に示されるように)リネーム・レジスタ44a、44bおよび/または汎用レジスタ46からオペランド126を受け取り、演算する加算器124を含む。加算器124は、ARBSLOT48および変換脇見(lookaside)バッファ(ＴＬＢ)132へ渡される仮想アドレスを生成する。ＴＬＢ132は、仮想アドレス128に基づいて実アドレス・タグ134を生成し、実アドレス・タグ134をARBSLOT48へ渡す。タグ134は、最終的にACCESS_TAG116としてタグ比較機構108へ渡される。
【００４４】
各々のARBSLOT48内に位置するミス従属(ＤＭ)インジケータ論理133は、図４に詳細に示される。一般にＤＭインジケータ論理133は、ARBSLOT48がそれぞれミス・データラインに従属するか否かを示す信号ＤＭ141をアサートする、またはアサートから外す、例えばラッチまたはその他適当な装置のようなミス従属(ＤＭ)インジケータ135を維持するように構成される。ARBSLOT48がミス・データラインに従属する場合、ARBSLOT48は、主メモリ16からデータラインを要求することを控える。さらにミス・データラインが、主メモリ16からそれを要求したARBSLOT48へ転送される場合、ミス・データラインを要求した各ARBSLOT48の信号ＤＭ141は、ＤＭインジケータ135によってアサートから外され、未解決のARBSLOT48は、DCACHE24から所望のミス・データラインを取り出すことを許される。
【００４５】
図４を参照すると、ＤＭインジケータ論理133は、(a)タグ比較機構108からの信号〜HIT118によって設定される否定ヒット(〜HIT)インジケータ136a、(b)アドレス計算器58(図３)からのアドレスADDR128から解析されるキャッシュ索引136b、および(c)アドレス計算機58のＴＬＢ132(図３)から実アドレス・タグ136c、を格納するレジスタ136を含む。
【００４６】
〜HITインジケータ136aは、参照矢印139で示されるようにＡＮＤ論理ゲート137へ渡される。またＡＮＤ論理ゲート137は、ＤＭインジケータ135からの信号ＤＭ141を反転器143を用いて反転させることによって生成される信号〜ＤＭ142、DCACHE24がARBSLOT48の命令によってすでにアクセスされているか否か示す信号〜ＣＰ131、および有効アドレス104があるか否かを示す信号CA_VALID138を受け取る。上述の信号に基づいて、ＡＮＤ論理ゲート137は、ミス・アービトレータ107(図３)へのミス要求信号MISS_REQUEST111を生成する。信号〜ＨＩＴ139がミスを示し、信号〜ＤＭがARBSLOT48はミスに従属しないことを示し、信号〜ＣＰ131が否定のキャッシュ・ペンディングを示し、信号CA_VALID138が有効アドレス104を示すとき、信号MISS_REQUEST111が、ＡＮＤ論理ゲート137によってアサートされる。信号MISS_REQUEST111のアサートによって、ミスされたキャッシュ・ラインについて主メモリ16(図１)への要求が置かれる。なお〜HITインジケータ136aがヒットを示すとき、および/または信号〜ＤＭ142が、ARBSLOT48がミスに従属することを示すとき、ＡＮＤ論理ゲート137は、ミス要求信号MISS_REQUEST111をアサートすることを控える。
【００４７】
比較機構145は、参照矢印146で示されるようにアドレスMISS/COPY_IN_ADDRからキャッシュ索引を受け取り、参照矢印147で示されるようにそれをレジスタ136からのキャッシュ索引と比較する。比較機構145の結果は、参照矢印149で示されるようにＡＮＤゲート148へ渡される。ミス制御信号MISS_CAVがアサートされるならば、比較信号149は、ＤＭインジケータ135に、比較に基づく信号ＤＭ141をアサートさせる。
【００４８】
これに関して、ＡＮＤ論理ゲート148は、比較信号149、およびミス要求が主メモリ16に対して行われているか否か示すミス制御信号MISS_CAVを受け取る。ＡＮＤ論理ゲート148は、比較信号149およびミス制御信号MISS_CAV101の状態に基づいてトランジスタ152を作動させる。作動信号153がアサートされるとき、トランジスタ152は、ＤＭインジケータ135に信号ＤＭ141のアサートをもたらす。
【００４９】
信号ＤＭ141はまた、トランジスタ154の制御のもとで、ＤＭインジケータ135によってアサートされることができる。ミスが起きたとき、トランジスタ154は、タグ比較機構108から信号HIT_DM121を受け取る。さらにシステムは、DCACHE24へのアクセスが許可された後、すなわち信号ACCESS_REQ115が発行された２クロック後に信号HIT_DM121が受け取られるように、時間を定められている。これに関して、トランジスタ154は、参照数字158で示されるように、信号ACCESS_REQ115(図３)の２サイクル後に信号ACCESS_+_2によってイネーブルにされる。信号HIT_DM121がこの信号の２サイクル後に受け取られるならば、トランジスタ154は、線156で示されるように、信号ＤＭ141をアサートするようにＤＭインジケータ135を設定する。
【００５０】
ＡＮＤ論理ゲート162は、システム・インターフェース制御102(図３)から制御信号COPY_IN103、および比較機構145から比較信号149を受け取る。これらの信号に基づいて、ＡＮＤ論理ゲート162は、トランジスタ166を作動させる作動信号164を生成する。トランジスタ166が作動させられるとき、接続168で示されるように、ＤＭインジケータ135によって信号ＤＭ141がアサートから外される。一般に、信号ＤＭ141は、アサートされている信号ＤＭを引き起こすデータラインが主メモリから送られてくるときにアサートから外される。
【００５１】
ミス・アービトレータ107(図３)からの許可信号MISS_GRANTEDは、ミス制御信号MISS_CAVを駆動するドライバ172に渡される。ミス制御信号MISS_CAVが発行されるとき、すべてのARBSLOT48は、それらのそれぞれの信号ＤＭ141がそれらの対応するＤＭインジケータ135によってアサートされるべきか判断するために、それらのそれぞれのキャッシュ索引136bをアドレスMISS/COPY_IN_ADDR104に帰するキャッシュ索引と比較することができる。
【００５２】
操作
ここでミス追跡システム100の操作が、図３および図４を参照して記述される。
【００５３】
最初に図３を参照すると、ARBSLOT48は、DCACHE24からキャッシュ・ラインを要求するとき、アドレスACCESS_ADDR114(キャッシュ索引含む)と共に信号ACCESS_REQ115をアサートする。DCACHE24に可能性のあるヒットがある場合には、ステータス・インジケータ82は、符号「1xx」(表１)により有効なキャッシュ・ラインを表す。さらにタグ比較機構108は、タグDCACHE_TAG81を読み取り、それをアクセス・アドレスACCESS_ADDR114に関連するタグACCESS_TAG116と比較する。適合するとき、タグ比較機構108は、ヒットがあると結論を下し、ヒット118を示すために信号〜HITをアサートから外し、その結果ARBSLOT48は、それ自身に完了とマークする。操作の結果は、命令が退去するまでリネーム・レジスタに保有され、そのとき結果はアーキテクチャのレジスタ46へ移される。
【００５４】
キャッシュ・アクセスが、「0xx」の符号をもつステータス・インジケータ82に基づいてミスするとき、あるいは代わりにタグDCACHE_TAG81がタグACCESS_TAG116と適合しないとき、タグ比較機構108は、ARBSLOT48にミスを示すために〜HIT信号118をアサートする。これが、このミス・データラインにアクセスしようする第１のARBSLOT48であると仮定すると、信号〜ＤＭ142がアサートされ、その場合ＡＮＤ論理ゲート137は、ミス要求信号MISS_REQUEST111をミス・アービトレータ107へ発行する。ミス・アービトレータ107は、いろいろなARBSLOTS48によって生成されうるいろいろなミス要求に優先順位をつけることによって裁定する。結局ミス・アービトレータ107は、ミス要求を許可する信号MISS_GRANTED112を発行する。この信号は、ARBSLOT48のドライバ172へ送られ、それはミス制御信号MISS_CAV信号101をシステム・インターフェース制御102へアサートする。システム・インターフェース制御102は、ARBSLOT48からシステム・インターフェース制御102へ送られてくるアドレスMISS/COPY_IN_ADDR104に基づいて、そのデータラインについて主メモリ16(図１)へメモリ要求を行う。
【００５５】
データラインがいったん主メモリ16からシステム・インターフェース制御102へ転送されると、システム・インターフェース制御102は、参照矢印105で示されるようにデータラインをDCACHE24へ渡し、制御信号COPY_INをDCACHE24へアサートし、ステータス・ビット「1xx」をDCACHE24へ発行する。同時にシステム・インターフェース制御102は、制御信号COPY_IN103をARBSLOT48へアサートし、MISS/COPY_IN_ADDR104上の関連するアドレスをARBSLOT48へ置く。データラインを必要とする各々のARBSLOT48は、対応するアサートされた信号ＤＭ141をもつが、それは論理162、166に基づいてアサートから外される。これに関して、ＡＮＤ論理ゲート162は、比較機構145からアサートされる信号149と、アサートされる信号COPY_INを受け取る。これらの信号に基づいて、ＡＮＤ論理ゲート162はトランジスタ166を作動させ、ＤＭインジケータ135によって維持される信号ＤＭ141をアサートから外す。
【００５６】
別のARBSLOT148が、現在主メモリ16から要求されているミス・データラインについてDCACHE24にアクセスしようとする場合、特定のARBSLOT48は、ステータス・インジケータ82が、「010」の符号を用いてミス・ペンディングのステータスすなわちキャッシュ・ラインが別のARBSLOT48によって要求されていることを示すように、ステータス・インジケータ82によって通知される。この場合、特定のARBSLOT48は、そのタグ比較機構108から信号HIT_DM121をアサートすることにより、そのＤＭインジケータ135を用いてそれ自身の信号ＤＭ141をアサートする。図４に示されるように、信号HIT_DM121のアサートによって、ＤＭインジケータ135は信号ＤＭ141をアサートし、ＡＮＤ論理ゲート137はアサートから外される信号〜ＤＭ142を受けるので、ARBSLOT48が主メモリ16への要求を行えないようにする。
【００５７】
多くの変形および修正が、上述のような発明の好ましい実施例に作成されうる。例えば待ち行列38a、38bは、当業者に良く知られている予約ステーションを含む任意の命令並べ替え機構と取り替えられることができる。
【００５８】
本発明は例として次の実施態様を含む。
（１）データ・キャッシュを利用し、順不同に命令を実行する処理システム(14)に関連する主メモリ(16)への帯域幅を保持するシステム(11)であって、
プロセッサ(14)と、
主メモリ(16)と、
上記プロセッサ(14)と連絡し、上記主メモリ(16)からデータラインを受け取り、格納するデータ・キャッシュ(24)と、
上記プロセッサ(14)および上記主メモリ(16)と相互接続するシステム・インターフェース(22)と、
それぞれの命令を順不同に受け取り、実行し、上記命令に従って上記データ・キャッシュ(24)にアクセスするように構成される、上記プロセッサ(14)に関連する複数の命令処理機構(39b)と、
別の命令処理機構(39b)が、上記データ・キャッシュ(24)に不在のキャッシュ・ミス・データをすでに上記主メモリ(16)から要求しているとき、上記ミス・データについてそれぞれの命令処理機構(39b)から上記主メモリ(16)への要求を妨げるように構成される、上記命令処理機構(39b)の各々に関連する論理(100)と、を備える上記システム(11)。
【００５９】
（２）上記論理(100)がさらに、各々の上記命令処理機構(39b)に関連し、上記論理(100)に接続されるミス従属インジケータ(135)を含み、上記ミス従属インジケータ(135)は、そのそれぞれの命令処理機構(39b)に関連する命令が上記ミス・データに依存するときを示すミス従属信号(141)を生成するように構成される、上記(1)のシステム(11)。
（３）さらに、上記キャッシュによって維持される各々のキャッシュ・データラインに関連するステータス・インジケータ(82)を含み、上記ステータス・インジケータ(82)は、対応するキャッシュ・データラインが無効であり、かつ上記主メモリ(16)からすでに要求されているときを示すように構成される、上記(1)のシステム(11)。
【００６０】
（４）さらに、上記複数の命令処理機構(39b)に接続されるミス・アービトレータ(107)を含み、上記ミス・アービトレータ(107)は、上記主メモリ(16)からのそれぞれのデータラインについて上記命令処理機構(39b)からの命令に優先順位を付ける、上記(1)のシステム(11)。
（５）上記論理(100)がさらに、上記データ・キャッシュ(24)によって上記ミス・データラインが上記主メモリ(16)から受け取られるとき、上記ミス従属インジケータ(135)をアサートから外す手段(162、166)を含む、上記(2)のシステム(11)。
【００６１】
（６）さらに、
上記データ・キャッシュ(24)によって維持される各々のキャッシュ・データラインに関連し、対応するキャッシュ・データラインが無効であり、かつ上記主メモリ(16)からすでに要求されているときにミス・ペンディング状態を示すように構成されるステータス・インジケータ(82)と、
上記命令処理機構(39b)の各々に関連し、キャッシュ・アクセスの間に上記ステータス・インジケータ(82)を調べ、上記ステータス・インジケータ(82)が上記ミス・ペンディング状態を示すときに上記ミス従属インジケータ(135)をアサートするように構成される他の論理(108)と、
を備える、上記(2)のシステム(11)。
（７）上記論理(100)がさらに、
キャッシュ索引がそれぞれの命令処理機構(39b)から上記データ・キャッシュ(24)に送られるとき、上記データ・キャッシュ(24)からデータ・キャッシュ・タグおよび上記ステータス・インジケータ(82)を受け取るように構成され、また上記ステータス・インジケータ(82)が上記キャッシュは上記キャッシュ索引に対応する有効データを持つと示すとき、ヒット/ミス信号をアサートするまたはアサートから外すために、上記データ・キャッシュ・タグを上記キャッシュ索引に対応する別のタグと比較するように構成される、上記データ・キャッシュ(24)と相互接続されるタグ比較機構(108)と、
裁定要求(111)を引き出すために、上記ヒット/ミス信号および上記ミス従属インジケータ(135)を結び付ける手段(137)と、
を含み、さらに、
上記命令処理機構(39b)に接続され、上記命令処理機構(39b)からの上記裁定要求(111)に優先順位を付け、上記主メモリ(16)からデータラインについて要求をもたらすミス制御信号(112)を発行するミス・アービトレータ(107)を含む、
上記(3)のシステム(11)。
【００６２】
（８）データ・キャッシュ(24)を利用し、順不同に命令を実行する処理システム(14)に関連する主メモリ(16)への帯域幅を保持する方法(100)であって、
データアクセスへ向けられる命令を順不同に実行するステップと、
上記命令に従って、上記処理システム(14)を用いて上記データ・キャッシュ(24)にアクセスするステップと、
上記処理システム(14)を用いて上記データ・キャッシュ(24)に不在のミス・データを認識するステップと、
上記ミス・データについて上記主メモリ(16)への複数の要求を妨げるステップと、
を含む上記方法(100)。
【００６３】
（９）さらに、
それぞれの命令を受け取る上記処理システム(14)に関連する複数のアドレス並べ替えバッファ命令処理機構(39b)を維持するステップと、
各々の上記命令処理機構(39b)で、そのそれぞれの命令処理機構(39b)に関連する命令が上記ミス・データに従属するかどうか示すミス従属インジケータ(135)を維持するステップと、
上記命令処理機構(39b)の各々が、その対応するミス従属インジケータ(135)がアサートされるとき、上記主メモリ(16)から上記ミス・データを要求することをできなくするステップと、
を含む、上記(8)の方法(100)。
【００６４】
（１０）対応するキャッシュ・データラインが無効であり、かつすでに上記主メモリ(16)から要求されているときにミス・ペンディングのステータスを示すために、ステータス・インジケータ(82)を上記キャッシュの各々のキャッシュ・データラインと関連させるステップと、
上記命令処理機構(39b)のうち１つのそれぞれの命令に従って上記キャッシュにアクセスし、上記ステータス・インジケータ(82)を調べることによって上記ミス・ペンディング状態を認識するステップと、
上記１つの命令処理機構(39)の上記ミス従属インジケータ(135)をアサートするステップと、
を含む、上記(8)の方法(100)
【００６５】
【発明の効果】
本発明によると、順不同に命令を処理するシステムでキャッシュ・ミスが起きる場合に、主メモリへのメモリ要求を最小限にし、主メモリへの帯域幅を最適化することができる。
【図面の簡単な説明】
【図１】本発明のミス追跡システムおよび方法を実現するコンピュータを示すブロック図。
【図２】図１のプロセッサにおける命令フェッチ/実行システムの可能な実現を示すブロック図。
【図３】図１の新しいミス追跡システムの可能な実現を示すブロック図。
【図４】各々のアドレス並べ替えバッファ・スロット(ARBSLOT)のキャッシュ・ミスを追跡するミス従属(ＤＭ)インジケータ論理の可能な実現を示すブロック図。
【符号の説明】
１４        処理システム
１６        主メモリ
２２        システム・インターフェース
２４        データ・キャッシュ(DCASH)
３８ｂ      メモリ待ち行列(MQUEUE)
３９ｂ      命令処理機構
４８        アドレス並べ替えバッファ・スロット(ARBSLOT)
５８        アドレス計算器
８２        ステータス・インジケータ
１００      ミス追跡システム
１０２      システム・インターフェース制御
１０７      ミス・アービトレータ
１０８      タグ比較機構
１３５      ＤＭ従属インジケータ論理
【図１】
0003876034.tif 000003
【図２】
0003876034.tif 000004
【図３】
0003876034.tif 000005
【図４】
0003876034.tif 000006