(57)【特許請求の範囲】
【請求項１】
コンピュータマイクロアーキテクチャであって、
整数ロードデータを受信するように適合された整数ロード変換索引バッファ（ＴＬＢ）と、及び
前記整数ロードＴＬＢと並列に接続され、前記整数ロードデータを受信し、かつ前記整数ロードＴＬＢにおける前記整数ロードデータの受信と並列に、整数ストアデータ、浮動小数点ロードまたはストアデータ、及びＴＬＢ参照命令および更新命令のうちの１つ又は複数を受信するように適合されたマスタＴＬＢとを含み、
前記整数ロードＴＬＢが、第１および第２のメモリポートによってアクセスされ、前記マスタＴＬＢが、前記第１および第２のメモリポート、ならびに第３および第４のメモリポートによってアクセスされる、コンピュータマイクロアーキテクチャ。
【請求項２】
整数ロードのための仮想アドレスが供給される整数ロードＴＬＢであって、当該仮想アドレスに対応する仮想タグの当該整数ロードＴＬＢにおける位置を示す仮想ＴＬＢヒットを提供する整数ロードＴＬＢと、
データセクションとタグセクションを有する整数ロードデータキャッシュであって、当該データセクションに格納されているキャッシュデータの、物理タグの、前記整数ロードＴＬＢにおける位置を示す物理ＴＬＢヒットを当該タグセクションに保持し、前記整数ロードＴＬＢから提供される前記仮想ＴＬＢヒットと前記タグセクションに保持されている前記物理ＴＬＢヒットとを用いてヒット判定を行う整数ロードデータキャッシュと、
前記整数ロードＴＬＢと並列に動作し、ロード及びストアのための仮想アドレスが供給されるマスタＴＬＢであって、当該仮想アドレスに対応する仮想タグのための物理タグを提供するマスタＴＬＢと、
データセクションとタグセクションを有するデータキャッシュであって、当該データセクションに格納されているキャッシュデータの物理タグを当該タグセクションに保持し、前記マスタＴＬＢから提供される物理タグと当該タグセクションに保持されている物理タグとを用いてヒット判定を行うデータキャッシュとを含む、装置。
【請求項３】
前記整数ロードＴＬＢが第１のメモリポートによってアクセスされ、前記マスタＴＬＢが前記第１のメモリポート、ならびに第２のメモリポートによってアクセスされる、請求項２に記載の装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明の属する技術分野には、変換索引バッファを事前検査済み(prevalidated)キャッシュタグ設計に使用するコンピュータシステムが包含される。
【０００２】
【従来の技術】
コンピュータシステムは、マルチレベル階層のメモリシステムを使用する。そのマルチレベル階層のメモリシステムは、最上位レベルの階層には、比較的高速かつ高価であるが容量が制限されるメモリから、最下位レベルの階層には、比較的低速かつ低コストであるが容量の大きいメモリに至る階層構造を有する。階層は、物理的にプロセッサ内に一体化されるか、あるいは物理的にプロセッサに近接して取り付けられる、キャッシュと呼ばれる小型かつ高速のメモリを速度を得るために含むことができる。コンピュータシステムは、命令キャッシュとデータキャッシュを別個に採用することも可能である。さらに、コンピュータシステムは、マルチレベルのキャッシュを使用することも可能である。キャッシュの使用は、命令レベルにおいてコンピュータプログラムにとって透過的であるため、命令セットを変更せずに、または既存のプログラムに対する修正を必要とせずにコンピュータアーキテクチャに追加可能である。
【０００３】
プロセッサがキャッシュからある項目を要求し、その項目がキャッシュに存在する場合、キャッシュヒットが発生する。一方、プロセッサがキャッシュからある項目を要求し、その項目がキャッシュに存在しない場合、キャッシュミスが発生する。キャッシュミスの場合、プロセッサは、要求された項目を、より低いレベルのメモリ階層から検索する。多くのプロセッサ設計において、キャッシュヒットのために、項目にアクセスするのに要する時間は、設計者が単一サイクルのキャッシュアクセス時間を求めている(seek)場合には、プロセッサのクロックレートの主要なリミッタの１つである。他の設計において、キャッシュアクセス時間は、複数サイクルとしてもよいが、プロセッサの性能は、サイクル単位でのキャッシュアクセス時間が短縮されるほとんどの場合には、改善可能である。したがって、キャッシュヒットのためにアクセス時間を最適化することは、コンピュータシステムの性能にとって重要である。
【０００４】
キャッシュ設計には、仮想記憶装置の概念が結びつけられる。仮想記憶システムにより、コンピュータプログラマは、メモリを単一レベルの一定の１つの記憶ユニットとして考えることができるが、実際には、補助記憶装置と高速記憶装置（キャッシュ）との間で、ページ上のプログラムブロックをオンデマンドで自動的に移動させる動的アドレス変換ユニットが提供されている。
【０００５】
また、キャッシュ設計には、フルアソシエイティブまたは内容指定メモリ（ＣＡＭ：Content Addressable Memory）の概念も結びつけられる。内容指定メモリは、従来のハード的に組み込まれたアドレス指定機構を有することに加え、所望のビット位置との比較を可能にして、１つのメモリサイクル時間中にすべてのエントリが同時に指定のマッチングをされるようにハード的に組み込まれた論理も有するランダムアクセスメモリである。したがって、その内容の一部を使用することでエントリにアクセスできるため、所望のエントリの特定アドレスを知る必要はない。指定されたビット位置と一致するすべてのエントリにはフラグが立てられ、現在または後続のメモリサイクルにおいてアドレス指定が可能である。
【０００６】
メモリは、ワードに編成されても良い（たとえば、１ワードあたり３２ビットまたは６４ビット）。キャッシュと次に下位レベルのメモリ階層との間で転送可能な最小メモリ量をラインまたはブロックという。１ラインは、複数のワードとしてもよい（たとえば、１６ワード／ライン）。また、メモリをページまたはセグメントに分割して、各ページが多数のラインを有するようにしてもよい。コンピュータシステムによっては、ページサイズを可変にすることも可能である。
【０００７】
今日のコンピュータメモリアーキテクチャにおいて、中央処理装置（ＣＰＵ）は、ハードウェアとソフトウェアとの組合せにより物理アドレスに変換される仮想アドレスを生成する。物理アドレスは、物理的なメインメモリにアクセスするために使用される。一群の仮想アドレスを、各ページに動的に割り当てることが可能である。仮想メモリでは、仮想アドレスを物理アドレスに変換する、ページテーブルと呼ばれることもあるデータ構造が必要とされる。アドレス変換時間を短縮するために、コンピュータは、変換索引バッファ（ＴＬＢ：Translation Lookaside Buffer）と呼ばれるアドレス位置専用の特殊な連想キャッシュを使用してもよい。
【０００８】
キャッシュは、多数のセグメントまたはウェイ(way)を含むことができる。キャッシュがデータとともにラインアドレス全体を記憶し、キャッシュ内の任意の場所に任意のラインを配置することが可能な場合、そのキャッシュはフルアソシエイティブであるという。任意のラインが任意の場所に配置できる大容量キャッシュの場合、キャッシュに項目があるか否か、そしてどこにあるかを迅速に決定するために要するハードウェアは、極めて大型かつ高価になる可能性がある。キャッシュが大容量であるほど、高速かつ省スペースの代替物が、アドレスのサブセット（インデックスと呼ばれる）を用いてキャッシュ内のライン位置を指定し、次いでタグと呼ばれる各物理アドレスのより上位ビットの残りのセットをデータとともに記憶する。索引づけを行うキャッシュにおいて、特定アドレスを有する項目は、インデックス（索引）により指定されるラインのセット内にしか配置することができない。所定アドレスのインデックスがサブセットまたはウェイにおける１ラインに正確にマッピングするようにキャッシュが構成される場合、そのキャッシュは直接マッピング式であるといわれる。インデックスが、サブセットまたはウェイにおいて２ライン以上にマッピングする場合、そのキャッシュはセットアソシエイティブであるといわれる。アドレス空間をセットに分割するセットインデックスを提供するためにアドレスの一部または全部をハッシュしてもよい。
【０００９】
直接マッピングでは、あるラインが要求されると、キャッシュの１ラインのみが、一致するインデックスビットを有する。したがって、アドレスの残りが一致するか否かをコンピュータシステムが決定する前に、データは直ちに検索され、データバスに送り込むことが可能である。データは、有効であっても無効であってもよいが、データが有効である通常の場合には、データビットは、コンピュータシステムが有効性を決定する前に、データバスにおいて使用可能である。セットアソシエイティブキャッシュでは、コンピュータシステムは、完全なアドレスを比較するまで、どのラインがアドレスに対応しているか分からない。すなわち、セットアソシエイティブキャッシュでは、タグの比較結果を使用して、１セットのラインにおけるどのラインのデータビットがプロセッサに供給されるかを選択する。
【００１０】
【発明が解決しようとする課題】
ＴＬＢを有するキャッシュにおいて、ヒットのためのクリティカルタイミングパスは、以下の４つの動作のシーケンスを必要とする。すなわち、１）仮想タグをＴＬＢにおけるＣＡＭに提示して、ＴＬＢのランダムアクセスメモリ（ＲＡＭ）において対応する物理タグの位置を決定する必要がある、２）次に、物理タグをＴＬＢランダムアクセスメモリから検索する必要がある、３）次に、ＴＬＢ  ＲＡＭからの物理タグを、キャッシュのタグセクションからアクセスした物理タグと比較する必要がある、そして、４）適切なデータラインを選択する必要がある。この４つの動作のシーケンスは、キャッシュを読み出すために必要とされ、プロセッサ周波数およびプロセッサ性能に対するリミッタとなり得る。
【００１１】
【課題を解決するための手段】
事前検査済みタグキャッシュは、従来の慣例のようにアドレス情報ではなく、変換索引バッファ（ＴＬＢ）からのヒット情報を保有する。すなわち、ＴＬＢからの出力として物理アドレスが提供されるのではなく、仮想アドレスがＴＬＢに提供される場合、ＴＬＢヒットビットが提供される。次に、ＴＬＢヒットビットは、（ＴＬＢヒット情報を保有している）事前検査済みキャッシュタグと比較され、キャッシュヒットが発生したか、またはキャッシュミスが発生したかを決定する。処理速度を高めるために、ＴＬＢは、たとえば、３２エントリと小さくしてもよい。ＴＬＢは、整数ロード動作等、要求されるレイテンシーが短い動作に使用される。
【００１２】
小型ＴＬＢは、たとえば、キャッシュの性能を低下させるというスラッシング、すなわち、ページまたはＴＬＢエントリをスワップアウトするという、潜在的な問題を呈する。ＴＬＢが小さいので、ＴＬＢエントリが非常に素早く排除できるため、事実上、キャッシュからデータが損失する。すなわち、事前検査済みキャッシュタグは、ＴＬＢのヒット情報を含み、物理アドレスを含まないため、ＴＬＢエントリが変化すると、ヒット情報は有効ではなくなり、古い方のＴＬＢエントリと関連づけられたデータがいずれも失われる。
【００１３】
このマイクロアーキテクチャにおいて、ＴＬＢエントリを小さいまま、ＴＬＢのスラッシングを防ぐために、別個の大型ＴＬＢを、ストア動作等、より長いレイテンシーで対処できるプロセス動作に追加してもよい。この大型ＴＬＢは、たとえば浮動小数点演算に対して、より大きい帯域幅を提供することもできる。小型ＴＬＢにおいて必要とされるＴＬＢエントリを、たとえば、整数ロードに必要とされるＴＬＢエントリに限定し、他のすべてのＴＬＢエントリを大型ＴＬＢに転送してもよい。ＴＬＢは、並列に動作する。さらに、すべての例外および特権の検査を大型ＴＬＢにおいて実行してもよく、大型ＴＬＢには、整数ロードアクセス時間を短縮する作用もある。この並列ＴＬＢアーキテクチャを使用することで、小型および大型ＴＬＢが直列にアクセスされると発生する可能性のあるパイプラインの機能停止を低減する利点がさらにある。
【００１４】
物理アドレスの代わりにＴＬＢヒット情報のみを有するキャッシュタグのさらなる結果として、キャッシュラインを更新および無効にする機構を設けてもよい。この機構において、小型ＴＬＢの機構および整数ロードデータパスとは別にキャッシュラインを探索、更新および／または無効にする並列構造を設けることができる。さらに、状況によっては、データキャッシュに単なる物理アドレスが設けられる。適切なキャッシュラインを見つけるために、物理アドレスのみに基づいて、物理アドレスを有するタグと大型ＴＬＢの周りをバイパスする物理アドレスとを含むコントロールが提供される。
【００１５】
【発明の実施の形態】
以下、図面を参照して並列分散機能変換索引バッファを説明する。図中、同様の符号は同様の要素を表す。
【００１６】
物理タグをＴＬＢから検索する必要のない、ＴＬＢを有するキャッシュは、ＴＬＢを有するキャッシュにアクセスするためにクリティカルパスの全体時間を改良できる。かかる設計において、物理タグをキャッシュに記憶する代わりに、キャッシュは、物理タグが記憶されるＴＬＢ内の位置を記憶する。ＴＬＢは、２つ以上のＣＡＭを含むことができる。キャッシュヒットにおいて、ＴＬＢにおけるＣＡＭの１つは、物理アドレスが記憶されるＴＬＢ内の位置を指定するベクトルを生成することができる。このベクトルを、キャッシュに記憶されている位置ベクトルと比較してもよい。位置ベクトルの比較により、物理アドレスを実際に検索することを必要とせずに、１セット内の１つのデータラインの選択を可能にするのに十分な情報が提供される。その結果、相当な時間を消費する動作（物理アドレス検索）が、キャッシュヒットのクリティカルタイムパスから排除される。さらに、物理タグではなく位置ベクトルを比較することで、従来のディジタル比較器に比べて高速かつ単純な比較論理の使用が可能になる。
【００１７】
図１は、従来技術のキャッシュの一例を示す。システム１０は、仮想アドレス１２と、ランダムアクセスメモリアレイ１４と、比較器１６と、物理アドレスレジスタ１８と、を含む。システム１０は、セットアソシエイティブ論理を採用している。ランダムアクセスメモリアレイ１４は、２個の仮想ページアドレスビットを必要とする合計１２８（４個）のエントリを含む。４個の各セットは、ランダムアクセスアレイの１物理ワード（水平方向）の部分であるため、かかるワードが１２８個あり、７個のアドレスインデックスビットが必要とされる。キャッシュページがあるか否か、そして、どこにあるかを決定するために、アドレス変換において、合計仮想ページ数アドレスｎ＝９が使用される必要がある。下位ビットｎは、ページ内のバイトを表すが、変換される必要はない。７個の仮想ビットは、１２８セットの１つを直接選択するために使用される。セットから読み出されたワードは、比較器１６を使用して、同時に仮想アドレスと比較される。比較の１つが「ＹＥＳ」である場合、ランダムアクセスメモリアレイにある、キャッシュにおけるページの正しい実アドレスまたは物理アドレスは、物理キャッシュアドレスレジスタ１８にゲートされる。この物理アドレスが次のサイクルで使用され、キャッシュアレイ（図示せず）から正しい情報を入手する。
【００１８】
図２は、別の従来技術のキャッシュを示す。４ウェイのセットアソシエイティブキャッシュが説明のために用いられる。仮想アドレス１００は、下位インデックスビット１０２と上位（仮想）タグビット１０４からなる。インデックスビット１０２は、一般に、仮想アドレスおよび物理アドレスについて同一である。インデックスビット１０２は、キャッシュのデータセクション１０６において、１セットのデータのラインを選択するために使用される。データセクション１０６の出力は４つのデータライン１０８である。また、インデックスビット１０２は、キャッシュのタグセクション１１０において１セットの物理タグを選択するためにも使用される。タグセクション１１０の出力は４つの物理タグ１１２であり、それぞれが１つのデータライン１０８に対応している。仮想タグビット１０４は、ＴＬＢ１１４内のＣＡＭ１１６における１つのエントリを選択するために使用される。ＴＬＢ１１４は、仮想タグと物理タグの両方を記憶する。仮想タグビット１０４の一致がＣＡＭ１１６にない場合、ＴＬＢミスが発生する。図２に示すシステムにおいて、複数の仮想タグを１つの物理タグにマッピングしてもよい。ＴＬＢヒットに関して、選択されたＣＡＭエントリは、仮想タグ１０４に対応する物理タグについて、ＴＬＢ  ＲＡＭ１１８におけるアドレスを指定する。そして、ＴＬＢ  ＲＡＭ１１８から物理タグが検索される。４個のディジタル比較器１２０のそれぞれは、ＴＬＢ  ＲＡＭ１１８からの物理タグを、タグセクション１１０からの物理タグ１１２と比較する。一致する一対の物理タグは、論理１２２を介して、データの４ラインのうちどのラインがマルチプレクサ１２４により選択されるかを示す。特定のインデックスビットに関して、一致する一対の物理タグが存在しないこともあり、この場合、キャッシュミスが発生する。
【００１９】
図３は、４ウェイのセットアソシエイティブキャッシュ２００を有するコンピュータマイクロアーキテクチャを示す。キャッシュ２００は、インデックスビット２０２と、データセクション２０３と、マルチプレクサ２０５と、を含む。キャッシュタグセクション２０４は、データラインに対応する物理ＴＬＢヒットタグを含む。物理アドレスタグがキャッシュタグセクション２０４に記憶されるのではなく、新たなデータのラインがキャッシュ２００に配置されると、ベクトル２１２（物理ＴＬＢヒットベクトルと呼ばれる）がキャッシュタグセクション２０４に記憶される。
【００２０】
事前検査済みキャッシュアーキテクチャに関するさらなる詳細については、１９９７年１０月２２日付けで出願された「CACHE MEMORY WITH REDUCED ACCESS TIME」と題する同時係属中の米国特許出願第０８／９５５，８２１号に提示されている。その開示は、参照することにより、本明細書に組み込まれる。
【００２１】
キャッシュ２００において、ＴＬＢ２１０は、物理タグを含む物理ＣＡＭ２０６、および仮想タグを含む仮想ＣＡＭ２０８の２つのＣＡＭを有する。新たな仮想タグ２０７が仮想ＣＡＭ２０８に記憶されると、対応する物理タグ２０９もコンピュータオペレーティングシステムを用いて入手可能となり、この対応する物理タグ２０９が物理ＣＡＭ２０６に記憶される。物理ＴＬＢヒットベクトル２１２は、物理タグ２０９を有する物理ＣＡＭ２０６における各位置に対応するバイナリ「１」を有する。新たなラインをキャッシュ２００に入力すると、この新たなラインの物理タグ２０９の物理ＣＡＭ２０６におけるすべてのインスタンスの位置を示す物理ＴＬＢヒットベクトル２１２が、物理ＣＡＭ２０６により生成され、インデックスビット２０２により決定される行位置およびセット配置アルゴリズムにより決定される列位置において、キャッシュタグセクション２０４へ記憶される。
【００２２】
キャッシュアクセスに関して、仮想タグ２０７は、仮想ＣＡＭ２０８により使用され、仮想ＴＬＢヒットベクトル２１４を生成する。ＴＬＢミスがある場合、仮想ＴＬＢヒットベクトル２１４は、すべてバイナリ「０」になる。ＴＬＢヒットがある場合、仮想ＴＬＢヒットベクトル２１４は、仮想ＣＡＭ２０８における仮想タグ２０７の位置を示す単一のバイナリ「１」を有する。ＴＬＢ２１０における各仮想タグ２０７は、一意でなければならない。
【００２３】
キャッシュアクセスに関して、インデックスビット２０２は、キャッシュタグセクション２０４において、４個の物理ＴＬＢヒットベクトル２１２の１セットを選択する。キャッシュタグセクション２０４における４個の物理ＴＬＢヒットベクトル２１２のそれぞれは、４個の比較器２１６の１個を使用して、仮想ＣＡＭ２０８からの仮想ＴＬＢヒットベクトル２１４と比較される。任意の所定セットのインデックスビット２０２に関して、キャッシュタグセクション２０４における４個の選択された物理タグの１個だけが、ＴＬＢ２１０からの仮想ＴＬＢヒットベクトル２１４と固定ページサイズに関して一致する。固定ページサイズに関して、４個の物理ＴＬＢヒットベクトル２１２における単一対をなす一致する「１」は、次に、どのデータラインがマルチプレクサ２０５により選択されるかを決定する。所定セットのインデックスビット２０２に関して、比較された４個の物理ＴＬＢヒットベクトル２１２において一致する「１」がない場合、キャッシュミスが発生する。
【００２４】
キャッシュ２００において、ＴＬＢ２１０からの物理タグは、キャッシュアクセスのために検索されない。ＴＬＢ２１０からの物理タグの検索動作を無くすことにより、キャッシュアクセスのクリティカルタイムパスの時間が実質的に短縮される。キャッシュ２００は一対の一致する論理「１」を検索して一致を決定するため、比較器２１６は、単純なＡＮＤゲートに続いて大きいファンインのＯＲゲートとしてもよい。
【００２５】
図３に示すマイクロアーキテクチャは、事前検査済みタグキャッシュを含む。事前検査は、コンピュータマイクロアーキテクチャ設計者がキャッシュロードのレイテンシーを最小にしつつ全帯域幅を最大にしようとする場合にマイクロアーキテクチャにおけるＴＬＢがどのように動作するかについて制限を加える。たとえば、事前検査済みタグキャッシュは、特定のロードについて極めて高速なアクセス時間を提供するが、マイクロアーキテクチャ設計者は、仮想アドレスと物理アドレスとの間の変換を制限し、かつ異なるキャッシュレベルの中での処理の分散を制限するように選択してもよい。マイクロアーキテクチャは、たとえば、高速整数ロードおよび大きい帯域幅の浮動小数点ロードを提供するようにしてもよい。すなわち、整数ロードデータは、高速アクセス時間を有する必要があるが、その動作設定サイズは一般的に小さい。整数ロードのレイテンシーを最適化するために、プロセッサの中には、小型だが高速の第１のレベルキャッシュを提供するものもある。仮想アドレス変換を提供し、かつアドレスエイリアシング問題を回避するために、プロセッサの中にはＴＬＢにアクセスして、データがキャッシュに存在しているか否かを決定するためにキャッシュタグによる確認を行うための物理アドレスを提供する必要があるものもある。高速整数データアクセスの目的で、メモリのレイテンシーを減らすために、ＴＬＢサイズを最小数のエントリ（１６〜３２等）に制限してもよい。これは、２５６以上のＴＬＢエントリを必要とする可能性がある大型キャッシュ構造を有するプロセッサ上で必要とされる多数のエントリと競合する。
【００２６】
図３に示すような事前検査済みキャッシュタグシステムにおいて、ＴＬＢエントリは、キャッシュラインを識別するためにキャッシュタグにおいて論理的に使用される。ＴＬＢエントリが除去されると、通常、コントロールを使用して、除去されたＴＬＢエントリと関連づけられた事前検査済みキャッシュタグにおけるデータをすべて無効にする。しかしながら、１つのＴＬＢエントリをデータキャッシュの大部分またはすべてにマッピングできるため、このアクションは、処理を遅らせる可能性がある。従ってＴＬＢは、プログラム実行を支援するのではなく、メモリへ及びメモリからページを連続的にスワッピング（すなわち、スラッシング）することができる。
【００２７】
浮動小数点データ処理の性能は、通常、浮動小数点実行ユニットへの及びそれからのメモリ帯域幅により制限される。短いレイテンシーを必要とする整数ロードデータアクセスとは対照的に、通常、浮動小数点アクセスはスケジュールされることができるため、潜在期間（latency period）を長くすることができる。同様に、整数データサイズは通常小さいが、浮動小数点データセットは、通常、非常に大きい。理想的には、浮動小数点ロード／ストア動作のＴＬＢ動作は、大きい帯域幅かつ大型データスペースの変換（アクセスされた大量のＴＬＢエントリ）の両方を提供する。１つの設計は、すべてのメモリポートに全帯域幅を提供するとともに、浮動小数点要求の変換については大型であるが遅いＴＬＢを提供する。さらに、メモリポートの使用は、制限されなくてもよいため、より多くのロードとストアの組合せを可能にする。
【００２８】
事前検査済み整数ロードデータキャッシュへの記憶、またはこのデータキャッシュの無効化は、キャッシュラインの物理アドレスがキャッシュタグにおいて使用可能でないため困難であるが、これは、キャッシュタグが事前検査済みＴＬＢヒット情報を保有しているにすぎないことによる。さらに、ＴＬＢが、高速のレイテンシーの必要性により小さい（たとえば、１６または３２エントリ）ため、小型の整数ロードデータキャッシュＴＬＢはストア変換に使用されない。１つのオプションは、より大型かつ低速のＴＬＢへのストアＴＬＢアクセスを分離して、（浮動小数点ストア等）第１レベルのキャッシュにおいて実行されないおそれがあるストア動作、およびフラッシュキャッシュ、バススヌープ等の他の無効化動作に対して、事前検査済み整数ロードキャッシュを無効化するための機構を提供することである。
【００２９】
浮動小数点ロードおよびストア、パージ、挿入およびプローブを含むＴＬＢ支援命令、整数ストア等の多数のコンピュータ命令は、高速整数データキャッシュに即座にアクセスする必要がない。コンピュータ命令の一部は、より小型キャッシュのスラッシングを回避するために、高速整数ロードキャッシュにあるデータを有するものでなくてもよい。高速整数データキャッシュのより良好な使用を支援するため、このタイプのデータが整数データキャッシュをロードしないようにする機構を設けてもよい。これらの命令が整数キャッシュをバイバスできるために、すべての例外情報が大型ＴＬＢにのみ記憶され、大型ＴＬＢが、たとえば、すべてのストア動作、浮動小数点ロード、またはＴＬＢ参照（読み出し）と更新命令を含むＴＬＢ支援命令でのみアクセスされる必要があるようにしてもよい。
【００３０】
最後に、すべての命令を第１レベルのＴＬＢ（高速にするためには小型であることが必要とされる）に通過させることで、ＴＬＢミス率が高くなるため、プロセッサにおいてパイプライン機能停止が生じることがある。したがって、図３に示すマイクロアーキテクチャは、ＴＬＢミス率およびパイプライン機能停止を低減する並列ＴＬＢ構造を使用するように適合されても良い。
【００３１】
図４は、並列分散機能ＴＬＢ構造を採用するコンピュータマイクロアーキテクチャ２５０を示す。コンピュータマイクロアーキテクチャ２５０は、整数ロード命令ではない命令によって必要とされるエントリにより小型ＴＬＢをスラッシュしないことによって高速整数ロードデータアクセスに対し、小型ＴＬＢを効率よく使用できるようにする。マイクロアーキテクチャ２５０は、小型ＴＬＢにおけるスラッシングを減少させることによって事前検査済みキャッシュタグ設計のキャッシュデータ無効化を減少させ、減少したメモリポートの帯域を提供して、小型（整数ロードデータ）ＴＬＢの設計をより小型かつ高速にする。マイクロアーキテクチャ２５０は、より大型キャッシュにある浮動小数点アプリケーション等大型データ構造に対処するためにより大型のＴＬＢを提供し、かつ、浮動小数点アプリケーションの大きい帯域幅の必要性に対処するために大きい帯域幅のＴＬＢを提供する。また、マイクロアーキテクチャ２５０は、高速整数データキャッシュを中断（disrupt）することなくストアおよび無効化の要求変換を処理する方法も提供する。最後に、マイクロアーキテクチャ２５０は、アドレス指定するための例外および保護コントロールに単一の位置を提供するが、これは、整数ロードデータキャッシュにおいて、小型ＴＬＢとは別のものである。
【００３２】
コンピュータマイクロアーキテクチャ２５０は、整数ロードデータＴＬＢ（Ｌ０ＴＬＢ）２５２と、マスタＴＬＢ（ＤＴＬＢ）２５４とからなる並列ＴＬＢを含む。また、マイクロアーキテクチャ２５０は、整数ロードデータキャッシュ（Ｌ０Ｄ）２６４、Ｌ１データキャッシュ２６６、および並列物理タグ検索を有するストア／無効化コントロール２６２も含む。図４に示すように、ＴＬＢは、４個のメモリポート０〜３を介してアクセスされる。しかしながら、マイクロアーキテクチャ２５０は、この構成に制限されるものではなく、任意の数のメモリポートがＴＬＢにアクセスできる。
【００３３】
Ｌ０ＴＬＢ２５２は、整数ロードデータに短いレイテンシーを提供するように設計される。これを達成するために、Ｌ０ＴＬＢ２５２にはいくつかの制限が加えられる。図４に示す例では、４個のメモリポートの２個のみがＬ０ＴＬＢ２５２にアクセスすることを許されて、Ｌ０ＴＬＢ２５２のサイズおよび複雑性を低減させ、従ってその速度が増加する。この低減は、整数ロードを４個のメモリポートの２個にのみ割り当てることによって可能である。さらに、整数ストア命令は、Ｌ０ＴＬＢ２５２にアクセスしないが、ＤＴＬＢ２５４において処理される。この構成は、マイクロアーキテクチャ２５０がＬ０ＴＬＢ２５２においてロード専用ＴＬＢエントリを割り付けることを可能とし、ＴＬＢエントリのスラッシングを低減させ、事前検査済みタグキャッシュ設計においてはキャッシュラインを無効化するという副作用を有する。
【００３４】
次に、浮動小数点ロードおよびストアならびにその他の様々なＴＬＢアクセス命令は、Ｌ０ＴＬＢ２５２にアクセスしなくてもよく、Ｌ０ＴＬＢ２５２におけるＴＬＢエントリのスラッシングを低減させる。浮動小数点アクセスは、Ｌ１データキャッシュ２６６により処理され、ＤＴＬＢ２５４を介して変換される。
【００３５】
例外および保護の情報は、Ｌ０ＴＬＢ２５２に含まれないため、より小型でより高速の設計が可能になる。整数ロード命令は、例外および保護情報がＤＴＬＢ２５４にのみ存在することから、Ｌ０ＴＬＢ２５２とＤＴＬＢ２５４の両方において、処理されるべき有効キャッシュヒットのエントリを有する。最後に、すべての整数ロード命令を検索してキャッシュヒットを決定するためのパスが、Ｌ０ＴＬＢ２５２からＬ０Ｄ２６４まで提供される。
【００３６】
ＤＴＬＢ２５４は、大量のＴＬＢエントリを提供し、かつＬ０ＴＬＢ２５２の場合より長いレイテンシーを有する大きい帯域幅を提供するように設計される。ＤＴＬＢ２５４は、すべてのＴＬＢアクセスにパラレルポートを提供して、１サイクルにつき４つのメモリ動作の実行を支援するための大きい帯域幅を提供する。しかしながら、上述したように、マイクロアーキテクチャ２５０は、４個のメモリポートに制限されるものではない。また、ＤＴＬＢ２５４は、各メモリポートがロードまたはストアをサービスできるように汎用メモリポートをさらに提供する。Ｌ０Ｄ２６４は、１サイクルにつき２個のロードまたは２個のストアに制限され、高速のレイテンシーを提供するので、ＤＴＬＢ２５４は、１サイクルあたり最大４個の浮動小数点ロードまたは最大４個の浮動小数点ストアの実行を可能にする。
【００３７】
ＤＴＬＢ２５４は、すべての４個のメモリポートに例外および保護の情報を提供する。これにより、この情報を必要とすることなく、Ｌ０ＴＬＢ２５２がより小型かつ高速になるようにＬ０ＴＬＢ２５２を構成することができる。ＤＴＬＢ２５４は、整数データパスに対する変換パスを、ストアアドレス更新およびキャッシュライン無効化機能に提供する。最後に、ＤＴＬＢ２５４は、Ｌ１データキャッシュ２６６に対するパスを提供し、すべての浮動小数点ロードおよびストア動作についてキャッシュ検索を実行する。
【００３８】
マイクロアーキテクチャ２５０において、整数ストア更新アドレスおよび無効化アドレスがＬ０Ｄ２６４に提供されてもよい。コントロール２６２により、マイクロアーキテクチャ２５０は、キャッシュラインの物理アドレスを、事前検査済みキャッシュタグエントリと並列で記憶することができる。さらに、パス２６１がＤＴＬＢ２５４からストア更新およびストア無効化の整数データパスまで、提供される。ＤＴＬＢ２５４アドレスは、物理アドレスキャッシュタグ構造におけるあらゆる方式の連想性(associativity)と比較され、どの方式の連想性が現在のストアまたは無効化要求に一致するかを検出する。コントロール２６２により、事前検査済みタグキャッシュＬ０Ｄ２６４の有効状態が無効化要求に応じて更新され、整数ストア動作に応じて整数ロードデータキャッシュを更新する。最後に、例外情報モジュール２６８は、４個のメモリポート０〜３すべてについてＤＴＬＢ２５４からの例外情報を受信する。
【００３９】
以上、例示および説明の目的で、機能が並列に分散された変換索引バッファについて説明してきた。本記載は、これをもってすべてとするものでもなければ、本発明を開示される厳密な形式に制限するものでもなく、上記の教示に照らして他の修正および変形も可能である。本記載は、機能が並列に分散された変換索引バッファおよびその実用的な適用の原理を説明することで、当業者が、企図された特定用途に適合される各種実施態様および修正案において最もよく使用できるようにしたものである。
【００４０】
本発明を要約すると次のようになる。コンピュータシステムにおいて、機能が並列に分散された変換索引バッファ（ＴＬＢ）は、小型で高速のＴＬＢ（252）及び大型であるがより低速の別のＴＬＢ（254）を含む。2つのＴＬＢは並列に動作する。小型のＴＬＢ（252）は整数ロードデータを受信し、大型のＴＬＢ（254）は他の仮想アドレス情報を受信する。２つのＴＬＢ間において、ロードとストア命令、整数と浮動小数点命令等の機能を分散することにより、小型のＴＬＢは短いレイテンシーで動作でき、スラッシング及び類似の問題を回避する一方、大型のＴＬＢはメモリの集約的な動作に対して、大きい帯域幅を提供する。この機構は、事前検査済みキャッシュタグ設計に特に有用である並列ストア更新および無効化機構（262）も提供する。
【００４１】
以下においては、本発明の種々の構成要件の組み合わせからなる例示的な実施態様を示す。
１．第１のデータを受信するように適合される第１の変換索引バッファ（ＴＬＢ）（252）と、
前記第１のＴＬＢ（252）と並列な第２のＴＬＢ（254）であって、前記第１のデータを受信し、かつ前記第１のＴＬＢにおいて前記第１のデータの受信と並列に第２のデータを受信するように適合される第２のＴＬＢ（254）と、
を含むコンピュータマイクロアーキテクチャ。
２．前記第１のデータが整数ロードデータからなり、前記第２のデータは、整数ストアデータ、浮動小数点ロードまたはストアデータ、ＴＬＢ参照および更新命令、ならびに例外およびキャッシュミスのための整数ロードデータの１つ以上を含む、上記１記載のコンピュータマイクロアーキテクチャ。
３．第１のキャッシュ（264）と、
第２のキャッシュ（266）とをさらに含み、
前記第１のＴＬＢ（252）が、受信した第１のデータに基づいてＴＬＢヒット情報を提供し、前記第１のキャッシュ（264）が、前記ＴＬＢヒット情報を保有し、
前記第２のＴＬＢ（254）が物理アドレス情報を提供し、前記第２のキャッシュ（266）が、前記物理アドレス情報を保有する、上記１記載のコンピュータマイクロアーキテクチャ。
４．事前検査済みキャッシュタグエントリの物理アドレスを保持するコントロール（262）をさらに含む、上記１記載のコンピュータマイクロアーキテクチャ。５．前記第１のＴＬＢ（252）は、第１および第２のメモリポートによってアクセスされ、前記第２のＴＬＢ（254）は、前記第１および第２のメモリポート、ならびに第３および第４のメモリポートによってアクセスされ、かつ前記第２のＴＬＢ（254）は、例外および特権の情報を記憶する、上記１記載のコンピュータマイクロアーキテクチャ。
６．事前検査済みタグキャッシュを有するコンピュータマイクロアーキテクチャにおいて、
整数ロードＴＬＢ（252）と、
前記整数ロードＴＬＢ（252）と並列に動作するマスタＴＬＢ（254）であって、整数ロードが前記整数ロードＴＬＢに供給され、かつロードおよびストアが前記マスタＴＬＢ（254）に提供される、マスタＴＬＢ（254）と、
前記整数ロードＴＬＢ（252）からの出力を受信する整数ロードデータキャッシュ（264）と、及び
前記マスタＴＬＢ（254）からの出力を受信するデータキャッシュ（266）であって、前記整数ロードＴＬＢが、仮想アドレスに基づいてＴＬＢヒット情報を提供するとともに、前記整数ロードデータキャッシュが前記ＴＬＢヒット情報を記憶し、かつ前記マスタＴＬＢが、物理アドレスを前記データキャッシュに提供するとともに、前記データキャッシュが前記物理アドレスを保持する、データキャッシュ（266）と、
を含む変換索引バッファ（ＴＬＢ）構造。
７．前記マスタＴＬＢ（254）および前記整数ロードデータキャッシュ（264）に結合され、前記整数ロードデータキャッシュのキャッシュラインに更新信号または無効化信号を提供する、ストア更新および無効化コントロール（262）と、及び
前記マスタＴＬＢが例外および特権の情報を受信する、例外および特権の情報モジュール（268）と、
をさらに含む、前記６記載の変換索引バッファ（ＴＬＢ）構造。
８．コンピュータシステムにおける仮想アドレス情報変換の方法であって、
第１の変換索引バッファ（ＴＬＢ）（252）において第１の仮想アドレス情報を受信するステップと、及び
同時に、第２のＴＬＢ（254）において第２の仮想アドレス情報を受信するステップとを含む方法。
９．前記第１の仮想アドレス情報は整数ロード情報からなり、前記第２の仮想アドレス情報は、整数ストアデータ、浮動小数点ロードおよびストアデータ、ならびにＴＬＢ参照および更新命令の１つ以上を含む、上記８記載の方法。
１０．前記第１の仮想アドレス情報をＴＬＢヒット情報に変換するステップと、
前記ＴＬＢヒット情報を第１のキャッシュに提供するステップと、
前記第２の仮想アドレス情報を物理アドレス情報に変換するステップと、
前記物理アドレス情報を前記第１のキャッシュおよび第２のキャッシュに提供するステップと、
前記第２のＴＬＢに例外および特権の情報を記憶するステップと、
をさらに含む、上記８記載の方法。
【００４２】
【発明の効果】
本発明により、変換索引バッファを有するキャッシュにおいて、キャッシュヒットのためのアクセス時間が最適化され、コンピュータシステムの性能が改善される。
【図面の簡単な説明】
【図１】従来技術のキャッシュ構造を示す。
【図２】従来技術のキャッシュ構造を示す。
【図３】事前検査済みタグキャッシュを有するコンピュータシステムを示す。
【図４】図３の事前検査済みタグキャッシュとともに使用される並列分散型変換索引バッファ構造を示す。
【符号の説明】
250  コンピュータマイクロアーキテクチャ
252  整数ロードＴＬＢ（Ｌ０ＴＬＢ）
254  マスタＴＬＢ（ＤＴＬＢ）
262  ストア／無効化コントロール
264  整数ロードデータキャッシュ（Ｌ０Ｄ）
266  Ｌ１データキャッシュ
【図１】
0004065660.tif 000002
【図２】
0004065660.tif 000003
【図３】
0004065660.tif 000004
【図４】
0004065660.tif 000005