(57)【特許請求の範囲】
【請求項１】
Ｎが２以上で、Ｍが２以上であるとき、Ｎ個のコンパートメントを有するＮウェイ・セットアソシエーティブ・キャッシュを有し、各コンパートメントが複数のマルチワード・ラインとして構成され、前記キャッシュが、アドレスを含むタグ・ワードを受け取り、これに応答してＭ個のワードを出力するコンピュータにおいて、正しいＭ個のワードの出力を保証するためにコンピュータによって実施される方法であって、
前記Ｎ個のコンパートメントのうちの１つのライン内に保持されたターゲット・ワードの第１のアドレスを前記キャッシュに入力するステップと、
Ｎ個のコンパートメントのうちのどれが、前記ターゲット・ワードを保持するラインの終わりにあるワードの後に続く少なくとも１つの他のワードを保持するラインを含むかを示す第１の情報を前記キャッシュに入力するステップと、
前記ターゲット・ワードが前記ラインの終わりのＭ−１個のワード内であるときに、前記ターゲット・ワードを含むコンパートメントからの前記ターゲット・ワードと前記第１の情報が示すコンパートメントからの少なくとも１つの他のワードとを含むM個のワードを前記キャッシュから出力するステップとを含むことを特徴とする方法。
【請求項２】
さらに、前記第１の情報が有効であるかどうかを示す第２の情報を前記キャッシュに入力することを含むことを特徴とする請求項１に記載の方法。
【請求項３】
Ｎが、２以上で、Ｍが２以上であるとき、Ｎ個のバンクを有するＮウェイ・セットアソシエーティブ・キャッシュを有し、各バンクが複数のワードを保持する複数のラインとして構成され、前記キャッシュが、アドレスを含むタグ・ワードを受け取り、これに応答してＭ個のワードを出力するコンピュータにおいて、正しいＭ個のワードの出力を保証する装置であって、
前記キャッシュ中の、前記バンクのうちの１つのライン内に保持されたターゲット・ワードの第１のアドレスを受け取る手段と、
前記ターゲット・ワードの前記アドレスを受け取るとともに、そのターゲット・ワードを保持するラインの終わりにあるワードの後に続く少なくとも１つの他のワードを保持するラインを含むのはＮ個のバンクのうちのどれかを示す第１の情報を受け取る手段と、
前記ターゲット・ワードが前記ラインの終わりのＭ−１個のワード内にあるときに、前記ターゲット・ワードを含むバンクからの前記ターゲット・ワードと前記第１の情報が示すバンクからの少なくとも１つの他のワードとを含むＭ個のワードを前記キャッシュから出力する手段とを備えることを特徴とする装置。
【請求項４】
さらに、前記第１の情報が有効であるかどうかを示す第２の情報を受け取る手段を備えることを特徴とする請求項３に記載の装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にコンピュータ中の命令を取り出す方法および装置に関し、詳細には、Ｎウェイ・セットアソシエーティブ・キャッシュに記憶されている一連の命令を効率的に取り出すことに関する。
【０００２】
【従来の技術】
多数のコンピュータ・システムは、キャッシュ・メモリを使用して、メイン・メモリに記憶されている項目、例えば命令、の取り出しに関連する遅延を短縮する。メモリ・アクセス時間は、しばしばホスト・プロセッサ・スループットを制限する要因である。したがって、多くの場合キャッシュ・メモリが使用される。
【０００３】
図１は、命令キャッシュ・メモリ・システム１０の簡略化された構成を示す。メイン・メモリ２４と実行装置１２との間に命令キャッシュ２０が配設される。メイン・メモリ２４にいくつかの他の実行装置１３を結合することもできる。この場合、命令キャッシュ２０は実行装置１２のメモリ・アクセス時間を短縮する働きをする。実行装置１２が命令を実行した後、プログラム・カウンタ１４は、次の命令または予想される次の命令を示す。ある種のケースでは、プログラム・カウンタによって出力されるアドレスの、たとえば仮想アドレスから物理アドレスへの完全な、あるいは部分的な変換を行う必要がある。仮想アドレスに基づいて物理アドレスの参照を行う必要があることもある。これは、ページング装置１６および変換索引バッファ（ＴＬＢ１７）を当技術分野でよく知られているように使用することによって行うことができる。システムは、次の（または予想される次の）命令のアドレスをキャッシュ制御１８に提供する。キャッシュ制御１８は、命令の各部を１つまたは複数のタグと比較することによって、要求された命令が現在、命令キャッシュ２０に存在しているかどうかを判定する。必要な命令が命令キャッシュ２０にない場合（「ミス」）、キャッシュ制御１８は制御２２を与え、その結果、命令のブロックがメイン・メモリ２４からキャッシュ２０内へ送られる。キャッシュのアクセスが再試行される。
【０００４】
キャッシュ２０が、必要な命令を含む場合（「ヒット」）、アドレスがプログラム・カウンタ１４内にあるワードを含め、１つまたは複数の命令ワードがキャッシュ２０から出力される。通常、いくつかのワードが一度に出力される。４ワードの転送が一般的である。これらのワードはたとえば、通常いくつかの命令を保持できる、命令バッファ２６に記憶することができる。したがって、通常、実行装置１２が迅速にアクセスできる複数の命令がある。これは、実行装置１２が、ある周期中には（たとえば、キャッシュ・ミス後にキャッシュ２０が書き込まれているとき）、キャッシュ２０から出力されるときよりも高速に命令を受け取ることができるので、有用である。しかし、いくつかのケースでは、命令バッファ２６に蓄積された命令は無効化または削除される。たとえば、こうなるのは、実行装置１２が分岐命令を取り出し、実行装置１２に新しい命令シーケンスを入力する必要があるときである。
【０００５】
複数の実行装置がメイン・メモリへのアクセスを許可され、キャッシュに書込みが行われるケースでは、システムは通常、キャッシュ２０中のデータとメモリ２４中のデータが互いに対応するようにする何らかの方法を含む。これは通常、「キャッシュ・コヒーレンシ」の維持と呼ばれる。いくつかのキャッシュ・コヒーレンシ技法が知られている。この例として、「ライトスルー」および「ライトバック」と呼ばれる技法がある。ある種のシステムでは、バス監視装置２８を使用することによってキャッシュ・コヒーレンシが維持される。この装置２８は、グローバル・アドレス・バス３１を監視し、たとえば他のバス・マスタ（図示せず）によるメモリへの書込み動作を検出する。これによって、キャッシュ制御１８は、他の装置が共用メモリ中の位置に書き込むときにキャッシュ・エントリを無効化することができる。
【０００６】
いくつかのキャッシュ・メモリ間のマッピング技法が知られている。１つの技法は「セットアソシエーティブ・マッピング」として知られており、この技法では、キャッシュは２つ以上のセット（場合によっては「バンク」、または「コンパートメント」、または「ウェイ」と呼ばれる）に分割されるとみなされる。図２は、２ウェイ・セットアソシエーティブ・キャッシュ２０の例を示す。この図では、キャッシュ２０は、第１のセットまたはコンパートメント３２と第２のセットまたはコンパートメント３４とを含む。各コンパートメント３２、３４は複数のスロットまたはライン３６ａないし３６ｎ、３８ａないし３８ｎを含む。各ラインは、いくつかのワード４２ａないし４２ｋ、４４ａないし４４ｋを含む。議論の都合上、本明細書の全体にわたって、アクセス当たり４つのワードを検索するキャッシュ・システムについて説明する。さらに、説明する例示的なシステムは、ライン当たり８つのワードを含む。当業者なら、アクセス当たりに異なる数のワードを検索することができ、セットアソシエーティブ・キャッシュ中のラインが８つよりも多くのワードを含むことができることを認識されよう。
【０００７】
従来の命令取出し方法における１つの問題は、１つのライン３６ａないし３６ｎ、３８ａないし３８ｎの終わり付近に配置されたワードに対して取出しが行われる状況である。これはたとえば、分岐命令が取り出された後に比較的頻繁に発生する。通常の動作では、プログラム・カウンタ１４がワード４５ｂなどラインの終わり付近にはない命令を指し示すと、キャッシュ２０は、まずタグを使用して、要求されたデータがライン３６ａ上に存在するデータであることを検証した後にいくつかのワード（たとえば、４つのワード４５ｂ、４５ｃ、４５ｄ、４５ｅ）を出力する。ライン３６ａの始め付近でアクセスが行われるとき、これは容易に実行される。というのは、キャッシュ中の所与のスロットまたはラインが連続的なアドレスを含む一連の命令ワードを含むことが分かっており、すなわち、ワード４５ｂのアドレスの次のアドレスを有する命令ワードがワード４５ｃであることが分かっているからである。
【０００８】
しかし、ライン３６ａの終わり付近では、現行のシステムでは、ライン３６ａの最後のワード４５ｋの後に続くワードが何になるかは分からない。通常、４５ｋの後に続くワードは、次のライン（すなわち、３６ｂ）の第１のワード４６ａとキャッシュ２０の他方のセット３４中の対応するライン３８ｂ中の第１のワード４８ａとのどちらかになる。しかし、従来のセットアソシエーティブ・システムでは、これらの位置のうちのどちらがライン３６ａの最後の命令４５ｋの後に続く命令を保持するかに関する情報が得られなかった。したがって、従来の装置では、４５ｊなどラインの終わり付近のワードに対して読取りアクセスが行われると、４５ｊや４５ｋなどラインの終わりにあるワードは命令バッファ２６に出力することができたが、４５ｋの後のワードは、位置が得られないので出力できなかった。通常、このため、たとえばＴＬＢ１７を参照し、あるいは次のワードの位置を判定し、次いでキャッシュ２０の第２のアクセスを試すのに必要な他の処置をとることが必要になる。したがって、ラインの終わりから離れた位置のアクセスでは、アクセス当たりの平均歩留まりがいくつかのワードの出力、たとえば（前述のように）アクセス当たり４ワードであったことが分かる。しかし、ラインの終わり付近でアクセスが行われると、アクセスの結果、出力される有効ワードが４つよりも少なくなることがあった。
【０００９】
ラインの終わり付近でのキャッシュ・アクセスのこの低い効率が特に厄介ないくつかの状況がある。最初のアクセス・アドレスがラインの終わりに近ければ近いほど、効率が悪くなる。たとえば、ワード４５ｋにアクセスする場合、キャッシュのそのアクセス中に命令バッファ２６に有用であるのは、４つのワードではなく単一のワードだけである。また、キャッシュ・アクセス当たりに４つよりも多くのワードを出力するように構成されたシステムは、ラインの終わりから離れた位置で生じる効率の相対低減と比べてずっと大きな低減をラインの終わり付近に有する。下記の説明から明らかなように、キャッシュの各アクセスの結果、通常ｉ個のワードが出力され、キャッシュ・ラインの長さがｋワードである場合、ラインの終わり付近の問題の可能性は、アクセスがラインの（ｋ−ｉ＋１）番目のワードとラインのｋ番目のワードとの間で行われるときに常に生じる。さらに、この問題は、キャッシュ・ラインの終わり付近のアクセスが、命令バッファ２６が空のときに行われた場合に悪化する。この状況は、分岐が行われた後にしばしば発生する。
【００１０】
図３は、前述のキャッシュ・システムと共に使用できるキャッシュ・タグを示す。この例では、タグは、各ワードごとに１セクションずつ、いくつかのセクション５４ａ、５４ｂ、５４ｃ、５４ｄを含む。たとえば、キャッシュへのアクセス当たり４ワードの場合、図のように、それぞれのタグは４つのセクションを含む。５４ａに代表される各セクションは、たとえば実アドレス・タグまたは仮想アドレス・タグ（ＡＤＤＲＥＳＳ）、すなわち通常はメイン・メモリ中の対応するワードのアドレスの一部を含むいくつかのエントリを含む。各タグ内にいくつかのフラグも含まれる。当業者なら分かるように、「ダーティ」フラグ（通常、たとえばキャッシュ・コヒーレンシのために使用できる１ビット）および有効フラグを使用して、キャッシュのこの位置に記憶されるデータが有効なデータであるかどうかを示すことができる。
【００１１】
【発明が解決しようとする課題】
したがって、セットアソシエーティブ・キャッシュ・システム中のラインの終わり付近でのアクセスの結果として生じる非効率を低減させるシステムが必要である。
【００１２】
【課題を解決するための手段】
本発明は、ラインの終わりにあるワードの後に続くワードの位置を判定できるようにする情報を提供することによってキャッシュ・ラインの終わり付近でのアクセスの問題に対処する。ある特定の実施態様では、この情報は拡張タグに含まれる。
【００１３】
それぞれ、複数のマルチワード・ラインとして構成された、Ｎ個のセットまたはコンパートメントを有するＮウェイ・セットアソシエーティブ・キャッシュでは、キャッシュは、アドレスを含むタグ・ワードを受け取り、それに応答してＭ個のワードを出力する。２ウェイ・セットアソシエーティブ・キャッシュでは、Ｎ＝２であり、４ウェイ・セットアソシエーティブ・キャッシュでは、Ｎ＝４である。キャッシュ・アクセスに応答して４つのワードが出力されるシステムでは、Ｍ＝４である。本発明の一実施態様によれば、Ｎ個のコンパートメントのうちの１つの第１のラインに保持された第１のワードにアドレスする第１のタグがキャッシュに入力される。これとほぼ同時に、Ｎ個のコンパートメントのうちのどれが、第１のワードを保持するラインの終わりにあるワードの後に続く少なくとも１つの他のワードを保持するラインを含むかを示す情報もキャッシュに入力される。アドレスされたワードが、それを含むラインの終わりのＭ−１ワード内にあるとき、キャッシュは、少なくともアドレスされたワードと少なくとも１つの他のワードとを含むＭ個のワードを出力する。好ましくは、この情報は、タグ情報の一部として含まれる。
【００１４】
一実施態様では、後に続くラインの位置を指し示すポインタが有効なデータを指し示すかどうかを判定する「ポインタ有効」情報も含まれる。たとえば、現在アドレスされているラインの終わりが連続命令文字列または「命令スレッド」の終わりを表す場合、後に続くライン上のデータは無効である可能性がある。
【００１５】
キャッシュの他の実施態様では、キャッシュは２ウェイ・セットアソシエーティブ・キャッシュであり、各ワードごとの各タグ付き部分には、２つの追加ビットしか必要ではなく、第１ビットは、後に続くワードがセットアソシエーティブ・タグの第１のセット内にあるか、それともセットアソシエーティブ・タグの第２のセット内にあるかを示し、第２ビットは、後に続くラインを指し示すポインタが有効かどうかを示す。他の実施態様では、キャッシュは４ウェイ・セットアソシエーティブ・キャッシュであり、次の連続ラインを指し示すワード当たり３つ以上の追加ビットがタグに提供される。
【００１６】
本発明の性質および利点をより完全に理解するには、添付の図面に関連して下記の説明を参照すべきである。
【００１７】
【発明の実施の形態】
一実施形態によれば、タグ６２は、図４に示されており、２ウェイ・セットアソシエーティブ・キャッシュ中の特定のワードに関連付けられ、通常はタグ・フィールド５６、５８、６０だけでなく１ビット・ポインタ６４と１ビット「ポインタ有効」フラグ６６も含む。２ウェイ・セットアソシエーティブ・キャッシュでは、キャッシュ・ライン中の最後のワードの後に続く命令スレッド中のワードは、アクセス・ワードと同じセットと他方のセットのどちらかにある。したがって、命令スレッド中の後に続くラインを含むセットを指し示すために必要なのは単一のビット６４だけである。後に続くラインが有効と無効のどちらかなので、「ポインタ有効」タグとして必要なのは単一のビット６６だけである。したがって、本発明の一実施形態によれば、本発明のこの実施形態を実施するためにタグがワード当たり２ビットだけ拡張される。
【００１８】
図５に示したように、タグが、キャッシュのセットのｊ番目のライン上に存在するアドレスを受け取ると（７２）、そのタグが調べられ、ポインタ６４が得られる（７４）。そのアドレスを使用してアクセスすべきワードがラインの終わりのＭ−１個（Ｍは、キャッシュ２０への通常のアクセス時に命令バッファ２６に出力されるワードの数である）のワード内にない場合（７６）、ステップ７８で命令バッファ２６にＭ個のワードが出力される。しかし、アドレスされたワードがラインの終わりのＭ−１個のワード内にある場合、キャッシュ２０は、アクセスされたワードからラインの終わりまでの、ｊ番目のラインに残っているすべてのワード、すなわち合計でＭ−Ｌ個のワードを出力し（８２）、ポインタ有効タグが、ポインタが有効であることを示す（８４）場合は、ステップ８６で、ステップ７４で得られたポインタによって示されたどちらかのセットの（ｊ＋１）番目のラインのＬ個のワードも命令バッファ２６に出力する。
【００１９】
次に、一例として図２を参照すると分かるように、ポインタ６４の値零が第１のセット３２を表し、値１が第２のセット３４を表すと仮定される。たとえば、キャッシュ２０がセット３２のライン３６ａ上のワード４５ｊの読取りアドレスを受け取ると仮定する。さらに、タグ６２を検査したときに、ワード４５ｊのポインタ６４が（第２のセット３４の使用を示す）「１」に等しいことが分かったと仮定する。これに応答して、キャッシュ２０は、ライン３６ａから２つのワード４５ｊおよび４５ｋを出力し、キャッシュ２０の第２のセット３４のライン３８ｂから２つのワード４８ａおよび４８ｂを出力する（「ポインタ有効」フラグ６６が、ポインタ６４が有効であることを示す場合）。
【００２０】
好ましくは、ライン３６ａからのワード４５ｊ、４５ｋの出力およびライン３８ｂからのワード４８ａおよび４８ｂの出力は、たとえばキャッシュ２０のアドレス・デコーダの適当な構成によって、単一のキャッシュ・メモリ・アクセスの時間内に行われる。たとえば、一実施形態における復号は、修理回路が行または列の復号配線をそれぞれ１行または１列以上シフトするある種のメモリ冗長構造で使用されるような回路によって行うことができる。そのような１つの方式は、モリシゲル等著「Ａ  ４５−ｎｓ  ６４Ｍｂ  ＤＲＡＭ  ｗｉｔｈ  ａ  Ｍｅｒｇｅｄ  Ｍａｔｃｈ−Ｌｉｎｅ  Ｔｅｓｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ」（ＩＥＥＥ  Ｊｏｕｒｎａｌ  ｏｆ  Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｃｉｒｃｕｉｔｓ、第２６巻、第１１号、１９９１年１１月号、１４８６ページないし１４９２ページ）に記載されている。そのような復号方式はたとえば、セグメント化ワード・ラインを使用できるようにするために使用することができる。前述の文献のヒューズ構造をライン内の復号済み開始点で置き換え、隣接するワード・ラインに部分的にアクセスできるようにすることができる。別々のラインにアクセスできるようにする他の復号方式を使用することもできる。
【００２１】
システムが適切に動作できるように、コンピュータ・システムは、正しいポインタ情報６４など正しい情報をタグに記憶するように構成しなければならない。この情報は、たとえば新しいデータ・ラインがメイン・メモリ２４からキャッシュ２０にロードされたときに正しく記憶し、あるいは、たとえばキャッシュのラインが無効化されたときに改訂しなければならない。このタスク専用の回路を設計し構築することは可能であるが、すでにコンピュータ内で使用することができ、かつ必要な情報を有する回路を使用することによって、コストを最小限に抑えることが好ましい。バス監視装置２８は、当技術分野でよく知られている構成を有し、この装置を使用して、ポインタ６４を正しく記憶するのに必要な情報を生成することができる。通常、バス監視装置２４は、どのアドレスが、他のアドレス・セットの後に続き、あるいはそのようなセットに一致するかを判定できる回路を含む。この情報は、キャッシュ・ラインの終わりまたは終わり付近にあるデータの場合に、後に続くラインが同じセットにあるか、それとも他のセットにあるかを判定するために必要である。
【００２２】
図５に示した方法を使用することに対する１つの例外は、ラインの終わりがページ境界に一致するときに発生する。この場合、図５の方法は使用すべきではない。すなわち、後に続くラインのデータは、判定できる場合でも出力すべきではない。これは、保護レベルなどの項目がページ境界全体にわたって異なり、したがってページ境界を横切る際には、システムに、後に続くラインからワードを自動的に出力させるのではなく、ＴＬＢ１７を参照させることが好ましいからである。
【００２３】
図６は、４ウェイ・セットアソシエーティブ・キャッシュ中の単一のワードのタグ部８８を示す。４ウェイ・セットアソシエーティブ・キャッシュは４つの状態を有するので、４つの状態のうちの１つを指し示すために２ビットが必要であり、「ポインタ有効」フラグ用に１つの追加ビットが必要である。したがって、各ワードごとの（あるいは少なくとも各ラインの終わり付近にあるワードの）タグ用に３つの追加ビットのみを提供することによって４ウェイ・セットアソシエーティブ・キャッシュ用の本発明のシステムを実施することができる。しかし、一実施形態による実施上の理由で、この場合は４ビット９２を与えることが好ましい。対応するビット位置に特定のセットを示す「１」値を有するなど、各ビットに４つのセットのうちの１つを指し示すようにすることによって、４ビット９２を使用することができる。したがって、４ビット・ポインタ９２は、第１のセットを指し示す値１０００と、第２のセットを指し示す値０１００と、第３のセットを指し示す値００１０と、第４のセットを指し示す値０００１とを有する。（００００など）任意の他の値を「ポインタ無効」フラグとして使用することができる。
【００２４】
上記の説明に照らして、本発明の利点は明らかである。本発明は、従来の方法に対してキャッシュ・アクセス当たりに出力されるワードの平均数を向上させることができる。本発明は、キャッシュ・アクセスによって、ＴＬＢの参照が必要になることなど、ワードが得られないことを示す表示が返されたときに発生するオーバヘッドを回避する。
【００２５】
本発明のいくつかの変形例を使用することができる。本発明は、２ウェイ・キャッシュや４ウェイ・キャッシュ以外のＮウェイ・セットアソシエーティブ・キャッシュと共に使用することができる。本発明は、命令キャッシュ以外のキャッシュと共に使用することができる。本発明は、いくつかの異なるタグ構造と共に使用することができる。本発明は、タグ位置以外の位置にポインタを記憶することができる。ただし、情報は、タグ情報が得られるのと同じ位置で得られることが好ましい。
【００２６】
ある種の変形および修正を含む好ましい実施形態を介して本発明を説明したが、他の変形および修正を使用することもできる。したがって、本発明の範囲は、請求項によって確認すべきである。
【図面の簡単な説明】
【図１】  命令キャッシュを含むコンピュータ・システムの簡略化されたブロック図である。
【図２】  ２ウェイ・セットアソシエーティブ・キャッシュの概略図である。
【図３】  キャッシュ・タグの構造の図である。
【図４】  本発明の一実施形態によるキャッシュ・タグの図である。
【図５】  本発明の実施形態による命令タグの命令にアクセスする方法を示す流れ図である。
【図６】  本発明の一実施形態によるタグの構造の図である。
【符号の説明】
１０  キャッシュ・メモリ・システム
１２  実行装置
１４  プログラム・カウンタ
１７  変換索引緩衝機構
１８  キャッシュ制御
２０  命令キャッシュ
２２  制御
２４  メイン・メモリ
２６  命令バッファ
２８  バス監視装置
３１  グローバル・アドレス・バス
３２  第１のセットまたはコンパートメント
３４  第２のセットまたはコンパートメント
３６  スロットまたはライン
４２  ワード
５６  タグ・フィールド
６２  タグ
６４  ビット
【図１】
0003718302.tif 000002
【図２】
0003718302.tif 000003
【図３】
0003718302.tif 000004
【図４】
0003718302.tif 000005
【図５】
0003718302.tif 000006
【図６】
0003718302.tif 000007