(57)【特許請求の範囲】
【請求項１】
外部メモリから論理ユニットまで階層化された記憶項目を提供するキャッシュメモリ装置であって：
記憶容量が固定である一次キャシュと；
上記階層化された記憶項目を格納する記憶項目部と、一つのキャッシュエントリーを識別するキャッシュタグを格納するキャッシュタグ部とからなる複数のキャッシュエントリーを有する少なくとも一つの単一キャッシュアレイ構造により構成され、上記単一キャッシュアレイの数を決定することにより記憶容量を変えることが可能であり、第二アドレス信号に応答し少なくとも一つの上記キャッシュエントリーの内容を読み出す二次キャッシュと；
上記キャッシュタグと比較するための第一アドレス信号と、上記複数のキャッシュエントリーから１つのキャッシュエントリーを選択するための第二アドレス信号と、上記１つのキャッシュエントリー内の一部を選択するための第三アドレス信号を発生し、上記キャッシュタグを上記第一アドレス信号と比較する手段を有する論理回路と；
上記キャッシュアレイと上記論理回路を相互接続し、上記第二アドレス信号を上記キャッシュアレイに伝達するアドレスバスと；
上記キャッシュアレイと上記論理回路を相互接続し、上記キャッシュアレイと上記論理回路の間で上記キャッシュタグと上記記憶項目とを伝達するデータバスと；
を備え、上記キャッシュエントリーは、連続的なキャッシュエントリーの系列からなる複数のキャッシュラインに分類され、上記キャッシュアレイは上記キャッシュラインの内容を上記データバスを介して順次に送出させる手段を更に有し、
キャッシュラインがキャッシュタグにより識別され、キャッシュラインのキャッシュデータは複数のキャッシュエントリーにわたって格納され、各キャッシュエントリーは単一キャッシュアレイ構造内にあり、各キャッシュエントリーは記憶項目部とキャッシュタグ部から成り、キャッシュタグは複数のセグメントに分割され、分割された各セグメントはそれぞれ異なるキャッシュエントリーのキャッシュタグ部に格納される
ことを特徴とするキャッシュメモリ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般的にキャッシュメモリ装置と方法に係り、特に、階層化された記憶項目とキャッシュタグを単一キャッシュアレイ構造内に格納するキャッシュメモリ装置と方法に関する。
【０００２】
【従来の技術】
現在のコンピュータシステムは、アクセス時間と記憶容量に関し記憶装置を順序付けする階層的なメモリ設計を採用している。参考のため引用したストーン(H.S. Stone)の“高性能コンピュータアーキテクチャー(High-Performance Computer Architecture)”、第２版（１９９０年）、アディソン−ウェスレイ(Addison-Wesley)発行、２９−８７ページに記載されているように、最高速のアクセス時間と、最小の記憶容量が得られるキャッシュメモリ装置は階層の最上位に置かれる。キャッシュメモリ装置は、コンピュータのプログラムとデータの中で最も頻繁に使用されるセグメントを格納するため使用される。キャッシュメモリよりも下位の階層には、アクセス時間が低下し、記憶容量が増加する順序で、主メモリと２次記憶装置が置かれている。メモリキャッシュは、主メモリから階層化された２種類の記憶項目：読み出し専用として扱われるプログラム命令と、データを格納するため使用される。
【０００３】
キャッシュメモリ装置は：中央処理装置（ＣＰＵ）の一体的な部分としてオンチップに設けられた１次又はレベル−１キャッシュと、ＣＰＵの外部にある２次又はレベル−２キャッシュの二つのタイプに分類される。１次キャッシュは、より高速のアクセス時間が得られるが、寸法、電力消費、及びＣＰＵに関連する他のエンジニアリング上の得失によって１次キャッシュの設計は制限され得るので、記憶容量は固定されている。
【０００４】
一方、２次キャッシュはＣＰＵから分離した物理的構成部品のため、上記得失による影響を受けないので、付加的なメモリチップを追加することにより容量を増加させることが可能である。典型的に、スタティックランダムアクセスメモリ（ＳＲＡＭ）チップは、通常のダイナミックランダムアクセスメモリ（ＤＲＡＭ）チップよりも高速のアクセス時間が得られるので使用される。
【０００５】
２次メモリキャッシュの容量は、一般的に主メモリの容量よりも著しく小さいので、各キャッシュエントリーが対応する主メモリの位置を識別するためにキャッシュタグを使用することが必要である。従って、二つの別個のメモリチップの実体が使用され、これにより、実体は少なくとも一つの離散的なメモリチップである可能性があり、一方の実体は階層化された記憶項目を格納し、もう一方の実体がキャッシュタグを格納する。階層化された記憶項目とキャッシュタグを格納するため別個のメモリチップの実体を利用する２次メモリキャッシュの例は、クロフォード(Crawford)他の米国特許第5,210,845 号明細書と、リー(Lee) 他の米国特許第5,339,399 号明細書と、マックウィリアムズ(MacWilliams) 他の米国特許第5,239,603 号及び第5,228,134 号明細書に記載されている。
【０００６】
【発明が解決しようとする課題】
階層化された記憶項目とキャッシュタグを格納するための別個のメモリアレイ構造の使用によって生じる問題は、付加的な構成部品のためにアーキテクチャー上の複雑さが増大し、製造コストが増加し、動作速度が低下することである。
本発明は、上記従来技術の問題点を解決するため、階層化された記憶項目（プログラムの命令又はデータ）とキャッシュタグを格納する単一メモリアレイを使用するキャッシュメモリ装置及び方法の提供を目的とする。
【０００７】
【課題を解決するための手段】
上記目的を達成するため、本発明の階層化された記憶項目（プログラムの命令又はデータ）とキャッシュタグを格納する単一メモリアレイにおいて、キャッシュタグは複数のメモリチップ上に広がる連続的なキャッシュエントリーに亘って分散され、タグは２次メモリキャッシュアレイ構造への連続的な読みを行なうことにより再構築される。
【０００８】
本発明の一実施例によれば、外部メモリから論理ユニットまで階層化された記憶項目を提供するキャッシュメモリ装置が得られる。当該装置は、記憶容量が固定である一次キャシュと；上記階層化された記憶項目を格納する記憶項目部と、一つのキャッシュエントリーを識別するキャッシュタグを格納するキャッシュタグ部とからなる複数のキャッシュエントリーを有する少なくとも一つの単一キャッシュアレイ構造により構成され、上記単一キャッシュアレイの数を決定することにより記憶容量を変えることが可能であり、アドレス信号に応答し少なくとも一つの上記キャッシュエントリーの内容を読み出す二次キャッシュと；上記キャッシュタグと比較するための第一アドレス信号と、上記複数のキャッシュエントリーから１つのキャッシュエントリーを選択するための第二アドレス信号と、上記１つのキャッシュエントリー内の一部を選択するための第三アドレス信号を発生し、上記キャッシュタグを上記第一アドレス信号と比較する手段を有する論理回路と；上記キャッシュアレイと上記論理回路を相互接続し、上記アドレス信号を上記キャッシュアレイに伝達するアドレスバスと；上記キャッシュアレイと上記論理回路を相互接続し、上記キャッシュアレイと上記論理回路の間で上記キャッシュタグと上記記憶項目とを伝達するデータバスとからなるキャッシュメモリ装置である。
【０００９】
本発明の他の実施例によれば、階層化された記憶項目を格納する部分と、上記階層化された記憶項目を識別するキャッシュタグを格納する部分とからなる単一キャッシュアレイ構造内に上記階層化された記憶項目と上記キャッシュタグとを格納するキャッシュメモリ装置が得られる。当該装置は：実行ユニットからのメモリ要求に応じて論理回路を用いてアドレス信号を発生する手段、及び、上記論理回路と上記キャッシュアレイ構造を相互接続するアドレスバスに沿って上記アドレス信号をアサートする手段と；上記構造の連続的な部分にあり、複数の上記階層化された記憶項目とキャッシュラインに対応する一つのキャッシュタグとからなるキャッシュラインを、上記アドレス信号に応じて選択する手段と；上記複数の階層化された記憶項目の各々と、上記対応するキャッシュタグを、上記論理回路と上記キャッシュアレイ構造を相互接続するデータバスに沿って上記論理回路に順次に送る手段と；上記キャッシュタグと上記アドレス信号の間の一致よりなる初期キャッシュヒット、又は、上記キャッシュタグと上記アドレス信号の間の不一致よりなる初期キャッシュミスを検出する手段とからなるキャッシュメモリ装置である。
【００１０】
本発明を実施するため考え得るその例に限定されることのない最良の形態の例による本発明の実施例だけが以下の詳細な説明に示され説明されている。当業者は、かかる以下の詳細な説明に基づいて本発明の他の実施例を容易に知ることができる。本発明の精神と範囲から逸れることなく、本発明の他の種々の実施例を形成することが可能であり、かつ、本発明の幾つかの細部は、種々の明らかな点で変更し得ることが分かる。従って、添付図面及び以下の説明は本質的に例示であり、その例に限定されるものではないと見なす必要がある。
【００１１】
【発明の実施の形態】
本発明は２個の別々のＳＲＡＭチップ上に分散した４個の３ビットセグメントを結合することによりキャッシュタグが形成される２次メモリキャッシュに関する。本発明の一実施例は、パイプライン化された実行ユニットと共に縮小命令セットコンピュータ（ＲＩＳＣ）設計を利用するＳＰＡＲＣ（登録商標）（スケーラブル  プロセッサ  アークテクチャー）マイクロプロセッサ上で実現されている。ＳＰＡＲＣは、カリフォルニア州、マウンテン  ビューのサンマイクロシステムズ社の登録商標である。
【００１２】
本発明は、更に、２重キャッシュタグが、多重の記憶場所への読出しに完全なキャッシュタグを得ることが必要とされる環境で２次キャッシュの多重の場所に格納された部分に分割され、これにより、冗長なキャッシュタグを利用してキャッシュラインの多重記憶場所の全部が読まれる前にキャッシュヒット又はキャッシュミスを検出することが可能になる２次メモリキャッシュに関する。
【００１３】
図１には本発明の一実施例のキャッシュメモリ装置の概略図が示されている。キャッシュメモリ装置１は、キャッシュアドレスバス４と、キャッシュ制御信号５の組を用いて共有されたキャッシュデータとキャッシュタグを含む２次キャッシュ３に接続されたマイクロプロセッサ２のような論理ユニットからなる。マイクロプロセッサ２は、主メモリアドレスバス８と、主メモリ制御信号９の組を用いて主メモリ７にも接続されている。２次キャッシュ３と主メモリ７は共に、共有データバス６を用いて、マイクロプロセッサとの間で記憶項目を転送する。４−段の先入れ先出し（ＦＩＦＯ）双方向記憶バッファ１０は、マイクロプロセッサから主メモリに書き込まれる記憶項目を緩衝するため使用される。
【００１４】
マイクロプロセッサ内の実行ユニット（図示しない）は、２８ビットの物理的主メモリアドレスからなる読出し要求を発生する。全部で３２バイトのキャッシュラインが要求される場合、２次キャッシュのルックアップ（検査）は主メモリのルックアップと並行して始められる。要求された記憶項目が２次キャッシュで検出された場合、主メモリへのルックアップは取り消される。要求された記憶項目が２次キャッシュで検出されなかった場合、要求された記憶項目は主メモリから取り出され、２次キャッシュ内の適当な場所は、取り出された主メモリの項目が利用可能になると同時に上記取り出された主メモリの項目で更新される。
【００１５】
実行ユニットは更にメモリ書込み要求を発生する。キャッシュメモリ装置は、ライトスルー  キャッシュ  コヒーレンシー  プロトコル（Write-through cache coherency protocol) を使用する。全てのキャッシュラインが書き込まれたとき、新しいデータは２次メモリキャッシュと主メモリとに同時に書き込まれ、２次キャッシュタグは新しいタグの物理アドレスを使用して更新される。
【００１６】
２次キャッシュ３は直接アドレスマッピングを介してアクセスされる。直接アドレスマッピングとは、アドレスバス４を介して２次キャッシュ３に送られたアドレスがキャッシュ内の固有の場所を直接参照することを意味する。マイクロプロセッサ２は、主メモリ７内の場所の２８ビット物理アドレスの形でメモリアクセスの要求を形成する。
【００１７】
上記２８ビット物理アドレスは、三つの構成要素に分割される。最初の３ビットＡＤＤＲ〔２：０〕は、単一キャッシュエントリーに対応する６４ビットのダブルワード内の１バイトを選択するため実行ユニットによって内部的に使用される。次の１５ビットＡＤＤＲ〔１７：３〕は、キャッシュエントリーを選択するため、キャッシュアドレスバス４、即ち、図２のＡ〔１４：０〕を介して送られる。２次キャッシュ３は、キャッシュアドレスバス４上でアサートされた１５ビットアドレスに応答し、２次キャッシュ３はキャッシュエントリーを読出し始める。２次キャッシュへのルックアップは、４個の６４ビットのキャッシュエントリーからなる３２バイトのキャッシュラインを使用して行なわれる。残りの１０ビットＡＤＤＲ〔２７：１８〕は、上記１０ビットを２次キャッシュタグと比較することによりキャッシュヒット又はキャッシュミスを検出するためマイクロプロセッサによって内部的に使用される。キャッシュタグとビットＡＤＤＲ〔２７：１８〕の間の一致はキャッシュヒットであり、キャッシュタグとビットＡＤＤＲ〔２７：１８〕の間の不一致はキャッシュミスである。キャッシュヒットとキャッシュミスの両方は、実行ユニットへの信号によってマイクロプロセッサ内で示される。
【００１８】
図２には、マイクロプロセッサと２次キャッシュの間で接続されたアドレスバス及び制御信号と、キャッシュメモリ装置用のデータバスが示されている。キャッシュアドレスバス４は、アドレスデータＡ〔１４：０〕の１５ビットを伝達する一組のアドレス線によって構成される。上記１５ビットは物理アドレスＡＤＤＲ〔１７：３〕から得られる。このアドレスはキャッシュエントリーを識別するため２次キャッシュで絶対アドレスとして使用される。キャッシュ制御信号５は、アクセスするためのメモリチップを選択する３本のチップ選択信号ＣＳ〔０〕−〔３〕の一組と、ストローブ信号を伝送するための４本の１ビット信号線と、進行信号と、２次キャッシュへの書込みイネーブル信号とを含む４組の信号からなる。
【００１９】
データバス６は７２ビットのデータを伝達するデータ線の三つのグループからなる。第１のグループはキャッシュタグデータＴ〔５：０〕の６ビットを伝達する。第２のグループはパリティＰ〔１：０〕の２ビットを伝達する。第３のグループはキャッシュデータＤ〔６３：０〕の６４ビットを伝達する。キャッシュタグデータ線は、マイクロプロセッサ２と２次キャッシュ３とによって排他的に使用される。
【００２０】
図３乃至５には２次キャッシュ３の３通りの構成の概略図が示されている。２次キャッシュ３は、例えば、図３の２５６ＫＢ（キロバイト）キャッシュ、図４の５１２ＫＢキャッシュ、又は、図５の１ＭＢ（メガバイト）キャッシュを含むあらゆる数の記憶容量で構成することが可能であり、これにより、記憶容量は使用されるメモリチップの数で決まる。２５６ＫＢの構成は１対のメモリチップ（２０ａ及び２０ｂ）を使用する。５１２ＫＢの構成は２対のメモリチップ（２０ａ及び２０ｂと、２８ａ及び２８ｂ）を使用する。１ＭＢの構成は、４対のメモリチップ（２０ａ及び２０ｂと、２８ａ及び２８ｂと、２９ａ及び２９ｂと、３０ａ及び３０ｂ）を使用する。
【００２１】
図２に示されたチップ選択信号ＣＳ〔０〕−〔３〕は、所望のメモリチップの対を選択するため使用され、これにより、ＣＳ〔０〕にアサートされた信号はチップ対２０ａ及び２０ｂを選択し、ＣＳ〔１〕はチップ対２８ａ及び２８ｂを選択し、ＣＳ〔２〕はチップ対２９ａ及び２９ｂを選択し、ＣＳ〔３〕はチップ対３０ａ及び３０ｂを選択する。
【００２２】
本発明の一実施例によれば、各メモリチップは、３６ビットのデータの３２ＫＢのＳＲＡＭチップにより構成される。ＳＲＡＭチップの一例は、富士通製の３２Ｋ  ×  ３６  ＭＢ８２ＶＰ０３６形のＳＲＡＭメモリチップである。
以下の説明は２５６ＫＢの構成だけに基づいているが、５１２ＫＢ及び１ＭＢの構成にも同様に適用される。
【００２３】
図３には１対のメモリチップ２０ａ及び２０ｂからなる２５６ＫＢキャッシュとして構成された２次メモリが示されている。各メモリチップは、３２，７６８個の３６ビットの個別にアドレス指定可能なエントリーからなる単一キャッシュアレイ構造をなす。各３６ビットのエントリーは、３２ビット（又は４バイト）のデータと、１パリティビットと、３ビットのキャッシュタグデータを含む。キャッシュエントリーは、常に対の形で取り出されるので、７２ビットの各対がキャッシュエントリーとして参照される。キャッシュラインは、３２バイトのアドレス境界から始まる４個の連続的に格納されたキャッシュエントリーからなり、かつ、３２バイトのデータ（１キャッシュエントリー当たり８バイト  ×  １キャッシュライン当たり４エントリー）を含む。
【００２４】
従来技術の場合、典型的に、少なくとも一つのキャッシュアレイ構造は、階層化された記憶項目（データ）と、対応するパリティビットとを格納するため使用され、少なくとも一つのキャッシュアレイ構造がキャッシュタグを格納するため使用される。しかし、本発明によれば、少なくとも一つのデータキャッシュアレイ構造内の余分な場所はキャッシュタグを格納するため使用されるので、キャッシュタグを別の専用の構造に格納する必要は取り除かれる。
【００２５】
各単一キャッシュアレイ構造は、キャッシュデータと、パリティビットと、キャッシュタグを格納する３列に論理的に分割される。図３において、キャッシュタグは、メモリチップ２０ａ及び２０ｂの夫々の列２１ａ及び２１ｂに格納されている。同様に、パリティビットは列２２ａ及び２２ｂに格納され、キャッシュデータは列２３ａ及び２３ｂに格納される。
【００２６】
７２ビットのデータは、１回のアクセスにつき２次キャッシュメモリとマイクロプロセッサの間で伝送される。データバス６は２次キャッシュ３の内部データバス２４に接続する。内部データバスは、キャッシュタグセグメントバス２５ａ及び２５ｂと、パリティセグメントバス２６ａ及び２６ｂと、キャッシュデータセグメントバス２７ａ及び２７ｂを用いて３ビットのキャッシュデータと、１ビットのパリティと、３２ビットのキャッシュデータを得るため、各キャッシュアレイ構造で枝分かれする。
【００２７】
図６には２次キャッシュの２５６ＫＢ構成で使用される内部バスの配線図が示されている。同様の内部バスは２次キャッシュの５１２ＫＢ又は１ＭＢの構成で使用される。マイクロプロセッサと２次キャッシュの間でキャッシュタグデータを伝達する６本の線のグループは主メモリには延在しないにも係わらず、データバス６と内部データバス２４は同一データを伝達する。キャッシュタグセグメントバス２５ａ及び２５ｂは、キャッシュタグを二つの３ビットセグメントのＴ〔２：０〕とＴ〔５：３〕に分割する。パリティビットセグメントバス２６ａ及び２６ｂは、パリティビットを二つの１ビットセグメントのＰ〔０〕とＰ〔１〕に分割する。キャッシュデータセグメントバス２７ａ及び２７ｂは、キャッシュデータを二つの３２ビットセグメントのＤ〔３１：０〕とＤ〔６４：３２〕に分割する。
【００２８】
２次キャッシュ内の４個の連続的なキャッシュエントリーの４回の連続的な読出しには、一本のキャッシュラインを読むことが要求される。しかし、完全なキャッシュタグは、キャッシュラインを構成する４個のキャッシュエントリーの中の２個のキャッシュエントリーだけに格納することが可能である。図７にはキャッシュタグの構成図が示されている。キャッシュタグは、三つのフィールドを含む１２ビット長からなる。ビット０乃至９よりなる物理アドレスフィールドは、上記キャッシュラインに格納された階層化された記憶項目の物理アドレスの上位１０ビットを含む。ビット１０によって構成される有効ビットフィールドＶは、キャッシュラインに有効データが含まれているかどうかを示す。ビット１１からなるパリティビットフィールドＰは、２次キャッシュタグのパリティ検査のため使用される。動作中、キャッシュタグ有効ビットがクリアされている場合、キャッシュタグパリティビットは検査されない。更に、キャッシュタグのパリティエラーにより２次キャッシュのミスが発生し、キャッシュタグのパリティエラーはシステムソフトウェアでは分からない。
【００２９】
２次キャッシュタグは四つの３ビットセグメント内の二つの連続的なキャッシュエントリーに格納されている。図８にはキャッシュタグセグメントの記憶スキームの概略が示されている。キャッシュラインは４個のキャッシュエントリーからなり、４個のキャッシュエントリーの中の２個だけがキャッシュタグを格納するため必要とされるので、キャッシュタグを冗長的に格納し、キャッシュヒット又はキャッシュミスの初期検出を行なうため使用できる利点がある。
【００３０】
キャッシュタグを２回格納することにより、キャッシュラインを構成する４個のキャッシュエントリーの中の二つだけがマイクロプロセッサによって受け取られた後に、キャッシュヒット又はキャッシュミスを検出することが可能である。キャッシュヒットは初期に検出されるので、ラップアラウンドの特徴（以下に説明する）を使用して、２次キャッシュは、更なる遅延を受けることなく即座に利用可能になる連続的なキャッシュエントリーを送出し続ける。逆に、キャッシュミスは既に受信されたデータの取消を要求するだけである。
【００３１】
本発明の一実施例において、マイクロプロセッサは、多段の命令パイプライン（図示しない）と共に実行ユニット（図示しない）を有する。好ましくは、マイクロプロセッサは、データと共にロードされ、概念的なパイプで同時に実行されるプログラム命令の重複を使用する命令の同時又は並列処理を行なうパイプラインプロセッサである。キャッシュラインを構成する最初の二つのキャッシュエントリーは、キャッシュヒット又はキャッシュミスが発生したかどうかが分かる前に読まれる。それにも係わらず、上記エントリーの両方のデータは、受取と同時に即座に実行ユニットに進められ、命令パイプラインの中に置かれる。１クロックサイクル当たり一つのキャッシュエントリーが受けられる。同様に、パイプライン中の１段は、１クロックサイクルで実行される。かくして、最初の二つのエントリーからのデータは、キャッシュヒット又はキャッシュミスが検出されたとき、命令パイプラインの中を２段進められている。キャッシュミスが発生したとき、マイクロプロセッサはデータを取り消し、実行ユニットによって使用される前にパイプラインから実際に取り除く。キャッシュヒットが発生した場合、データはパイプライン中で２段の深さにあり、２クロックサイクルが節約される利点がある。
【００３２】
より一般的に言うと、パイプライン化された実行ユニットを有するマイクロプロセッサに適用可能なだけではなく、キャッシュタグの冗長な格納によって、マイクロプロセッサは、完全なキャッシュラインが受け取られたときキャッシュヒット又はキャッシュミスが発生したかどうかを判定することができる。
２次キャッシュメモリはラップアラウンドの特徴を利用し、これによって、一つのキャッシュエントリーは連続的な各クロックサイクルで出力される。もう一度図２を参照すると、ストローブ制御信号でローレベルをアサートすることにより、キャッシュエントリーアドレスがキャッシュアドレスバス４上でアサートされたことが示されている。応答として、２次キャッシュはアドレスバス４上でアサートされたアドレスに格納されたキャッシュエントリーを送出する。進行制御信号上で同様にローレベルがアサートされている場合、２次キャッシュは、１クロック当たり１エントリーで、２次キャッシュ内の連続的な記憶場所にあるキャッシュエントリーを送り続ける。２次キャッシュは、キャッシュラインを構成する４個のキャッシュエントリーが送られる前にキャッシュラインの最後に達したとき、キャッシュをキャッシュラインの先頭にラップアラウンドさせるモジュロー４のカウンタを使用する。ラップアラウンドの特徴を使用することにより、マイクロプロセッサは、完全な４−エントリーのキャッシュラインの３２バイト境界に対応する必要がない一つのキャッシュエントリーアドレスをアサートするだけでよい。
【００３３】
図９には、キャッシュヒット又はキャッシュミスの検出回路を表わす論理図が示されている。上記回路の目的は、連続的なクロックサイクルで受けられたキャッシュエントリーに関してキャッシュタグの上側と下側のセグメントを比較することによりキャッシュヒット又はキャッシュミスを検出することである。最初に、キャッシュタグの一方の半分が比較され、その結果が格納される。次のクロックサイクル中に、キャッシュタグのもう一方の半分が比較され、上側及び下側の両方のセグメントが一致する結果を有するかどうかを判定するため、その結果と前の比較の結果が併せて比較される。上側及び下側の両方のセグメントが一致する結果を有するならば、キャッシュヒットが発生している。上側及び下側の両方のセグメントが一致しない場合、キャッシュミスが発生している。
【００３４】
上記回路はマイクロプロセッサの内側にある。キャッシュタグの物理アドレスフィールドには、キャッシュラインに格納された階層化された記憶項目の物理アドレスの上位１０ビットが含まれている点に注意する必要がある。各キャッシュタグは、二つの連続的なキャッシュエントリーに格納されているので、２次キャッシュメモリからデータバスを介して二つの６ビットセグメントＴ〔５：０〕に受け取られる。２次キャッシュから受けられたような各セグメントは、内部キャッシュタグバス８０に沿って一時記憶装置用のレジスタ８１に進められる。要求された記憶項目の上位１０ビットＰＡ〔２７：１８〕は、内部物理アドレスバス８２上でアサートされ、内部バス８３及び８４で夫々アサートされた下位５ビットのＰＡ〔２２：１８〕及び上位５ビットのＰＡ〔２７：２３〕の二つの５ビットセグメントに分割される。
【００３５】
レジスタ８１に格納されたキャッシュタグセグメントは、排他的否定論理和（ＸＮＯＲ）論理ゲート８５及び８６を用いて両方の５ビット物理アドレスセグメントと比較される。ＸＮＯＲ演算から得られた結果は、上側又は下側の何れが比較されているかに基づいて適当な結果を選択するためマルチプレクサ８７を用いて選択される。ＳＥＬ＿ＬＯＷ＿ＴＡＧ信号は、上側又は下側のキャッシュタグセグメントの比較結果を選択するためマルチプレクサ８７への入力として制御信号８８でアサートされる。
【００３６】
マルチプレクサ８７からの結果は、共にレジスタ８９に格納され、ＡＮＤ論理ゲート９０に進められる。レジスタ８９は前のクロックサイクルで判定された比較演算の結果を含み、次の連続的なクロックサイクルがＩＯ＿ＣＬＫ信号９７上でアサートされたとき、ＡＮＤ論理ゲートに進められる。現在のタグセグメントのヒットは線９０に沿って示される。前のタグセグメントのヒットは線９１にそって示される。両方の線にアサートされた値は、線９３でキャッシュヒット又はキャッシュミスを示す信号をアサートするＡＮＤ論理ゲート９２によって比較される。キャッシュミスが発生し、取消イネーブル信号（ＥＮＢ＿ＣＡＮＣＥＬ）が線９４にアサートされた場合、ＡＮＤ論理ゲート９５は線９６上に取消信号をアサートし、これにより、前のクロックサイクル中に実行ユニットに既に送られたデータ準備完了（ＤＡＴＡ＿ＲＤＹ）信号を取り消す。上記取消によって、例えば、命令パイプライン中の記憶項目が取り消される。
【００３７】
図１０には、キャッシュエントリーパリティ検査回路を表わす論理図が示されている。この回路の目的は、キャッシュエントリーを構成する何れかの３６ビットセグメントに関しパリティエラーが発生したかどうかを判定することである。上記回路はマイクロプロセッサの内部にある。パリティエラーがない場合を想定すると、内部ＤＡＴＡ＿ＲＤＹ信号がアサートされ、これにより、２次キャッシュからの有効データの存在が示される。２次キャッシュからデータバス６を介して受けられた６４ビットのキャッシュデータ及び二つのパリティビットは、二つの３２ビットセグメントのＤ〔６３：３２〕及びＤ〔３１：０〕と、２個の別個のパリティビットＰ〔１〕及びＰ〔０〕とに分割される。キャッシュデータセグメントは、内部キャッシュデータバス１００及び１０１でアサートされ、パリティビットはバス１０２及び１０３に沿ってアサートされる。キャッシュデータは、キャッシュデータセグメントのパリティを定めるためＸＯＲ論理ゲート１０４及び１０５に入力される。次いで、その結果は、ＸＯＲ論理ゲート１０６及び１０７を用いて上記セグメントに関しパリティビットと比較される。その結果はＯＲ論理ゲート１０８によって比較され、レジスタ１０９に格納される。レジスタは、ＣＰＵ＿ＣＬＫ信号１１０上でアサートされるような次のクロックサイクルに上記結果を先に進める。準備完了信号イネーブル（ＥＮＢ＿ＲＥＡＤＹ）がアサートされ、ＡＮＤ論理ゲートによって定められたようなパリティエラーが存在しない場合、データ準備完了（ＤＡＴＡ＿ＲＤＹ）信号１１２がアサートされ、有効キャッシュエントリーがパリティエラー無しで受け取られたことを示す。
【００３８】
上記キャッシュメモリ装置は、ライトスルー  キャッシュ  コヒーレンシー  プロトコルを利用する。書込み動作の実行時に、新しいデータが２次キャッシュメモリと主メモリとに同時に書き込まれる。全てのメモリ書込みは上記キャッシュタグを更新する。非ブロック（キャッシュライン以外の）書込みはキャッシュタグエントリーを抹消し、一方、ブロック書込みはキャッシュタグエントリーを更新する。読出し動作の実行時に、非ブロック読出しは２次キャッシュメモリを回避し、一方、ブロック書込みにより２次キャッシュのルックアップが行なわれる。ルックアップの結果がキャッシュミスである場合、対応する主メモリのデータは、利用可能なときに２次キャッシュに書き込まれ、これに従ってキャッシュタグが更新される。
【００３９】
２次キャッシュの階層化された記憶項目は、マイクロプロセッサ２内の受取時にパリティエラーが検査される。パリティエラーが最初の二つのデータエントリーに生じた場合、パリティエラーはキャッシュミスと同様に処理され、既に読まれたデータは取り消され、キャッシュタグは更新される。パリティエラーが最後の二つのキャッシュデータエントリーに生じた場合、パリティエラーによってパリティエラーが通知される。外部主メモリのブロック読出しのパリティエラーは、２次キャッシュミスがあるならば、指定された２次キャッシュラインを抹消する。
【００４０】
図１１には、書込み動作用のキャッシュ  コヒーレンシー  プロトコルのフローチャートが示されている。書込みがブロック書込みを試みる場合（ステップ４０）、キャッシュは、キャッシュラインとそのタグを置き換えることにより更新される（ステップ４１）。ブロック書込み以外の場合、非ブロック書込みが行なわれるならば、キャッシュラインは、４回の連続的なキャッシュエントリーの書込みでキャッシュタグを無効化、又は、ヌル値に設定することにより抹消される。
【００４１】
図１２には、読出し動作用のキャッシュ  コヒーレンシー  プロトコルのフローチャートが示されている。非ブロック読出しが行なわれる場合（ステップ５０）、２次キャッシュメモリは回避され、データは主メモリから直接読まれる（ステップ５１）。非ブロック読出し以外の場合、２次キャッシュのルックアップが行なわれる。最初のキャッシュエントリーが読まれ（ステップ５２）、データパリティエラーが検出された場合（ステップ５３）、データは取り消され、キャッシュラインは、利用可能になったとき主メモリのデータで更新される（ステップ５４）。データパリティが検出されなかった場合、２次キャッシュメモリが読まれ（ステップ５５）、データパリティが検出された場合（ステップ５６）、データは取り消され、キャッシュラインは、利用可能になったとき主メモリのデータで更新される（ステップ５７）。
【００４２】
第１又は第２のキャッシュエントリーの何れにおいてもパリティエラーが発生していない場合を想定すると、完全なキャッシュタグが受け取られ、ステップ５８から始めるキャッシュヒット又はキャッシュミスの初期の検出が行なわれる。キャッシュタグの有効ビットが検査され、クリアされている場合（ステップ５８）、キャッシュラインは取り消される無効データを有し、キャッシュラインは、利用可能になったとき主メモリのデータで更新される（ステップ５９）。クリアされていない場合、キャッシュタグパリティビットが検査され、パリティエラーが検出された場合（ステップ６０）、パリティエラーが通知され、キャッシュラインは抹消される（ステップ６１）。パリティエラーは検出されなかった場合、キャッシュタグが検査され、キャッシュミスが検出された場合（ステップ６２）、データは取り消され、キャッシュラインは、利用可能になったとき主メモリのデータで更新される（ステップ６３）。キャッシュヒットが検出された場合を想定すると、第３及び第４のキャッシュエントリーが読まれる（ステップ６４及びステップ６７）。データパリティエラーが何れかのキャッシュエントリーに関し検出された場合（ステップ６５及び６８）、パリティエラーが通知され、キャッシュラインは抹消される（ステップ６６及び６９）。データパリティエラーが発生しなかった場合、２次キャッシュのルックアップは成功する。
【００４３】
図１３には、２次キャッシュのヒットを表わすタイミングチャートが示されている。読出し要求は時点Ｔ0 で行なわれる。２次キャッシュのストローブ制御信号と、キャッシュラインのアドレスは、時点Ｔ1 でアサートされる。時点Ｔ2 で２次キャッシュは読出し動作を開始し、マイクロプロセッサは順次のキャッシュエントリーのルックアップを示す進行制御信号をアサートする。２次キャッシュは、時点Ｔ3 で第１のキャッシュエントリーを送り始める。マイクロプロセッサは、第１のキャッシュエントリーを受け、内部的にその受取を示すハイレベルの推測的な読出し準備完了（ＳＣ  Ｒｅａｄ  Ｒｅａｄｙ）信号をアサートし、一方、２次キャッシュは、時点Ｔ4 で第２のキャッシュエントリーを送り始める。キャッシュタグのもう一方の半分を含む第２のキャッシュエントリーは、時点Ｔ5 で受けられ、キャッシュヒットの初期検出が時点Ｔ5 で行なわれる。キャッシュラインを構成する残りの二つのキャッシュエントリーは、時点Ｔ6 及びＴ7 で受けられる。
【００４４】
図１４には、２次キャッシュのミスを表わすタイミングチャートが示されている。読出し要求は時点Ｔ0 で行なわれる。２次キャッシュのストローブ制御信号と、キャッシュラインのアドレスは、時点Ｔ1 でアサートされる。時点Ｔ2 で２次キャッシュは読出し動作を開始し、マイクロプロセッサは順次のキャッシュエントリーのルックアップを示す進行制御信号をアサートする。２次キャッシュは、時点Ｔ3 で第１のキャッシュエントリーを送り始める。マイクロプロセッサは、第１のキャッシュエントリーを受け、内部的にその受取を示すハイレベルの推測的な読出し準備完了信号をアサートし、一方、２次キャッシュは、時点Ｔ4 で第２のキャッシュエントリーを送り始める。キャッシュタグのもう一方の半分を含む第２のキャッシュエントリーは、時点Ｔ5 で受けられ、キャッシュミスの初期検出が時点Ｔ5 で行なわれる。マイクロプロセッサは、キャッシュミスの検出時に、ローレベルの読出し準備完了信号をアサートし、ハイレベルの取消信号をアサートする。
【００４５】
図１５には、主メモリ読出しを伴う２次キャッシュミスを表わすタイミングチャートが示されている。読出し要求は時点Ｔ0 で行なわれる。キャッシュラインのアドレスは時点Ｔ1 でアサートされる。時点Ｔ2 で２次キャッシュは読出し動作を開始し、マイクロプロセッサは、順次のキャッシュエントリーのルックアップを示す進行制御信号をアサートする。２次キャッシュは、時点Ｔ3 で第１のキャッシュエントリーを送り始める。マイクロプロセッサは、第１のキャッシュエントリーを受け、内部的にその受取を示すハイレベルの推測的な読出し準備完了信号をアサートし、一方、２次キャッシュは、時点Ｔ4 で第２のキャッシュエントリーを送り始める。キャッシュタグのもう一方の半分を含む第２のキャッシュエントリーは、時点Ｔ5 で受けられ、キャッシュミスの初期検出が時点Ｔ5 で行なわれる。マイクロプロセッサは、キャッシュミスの検出時に、ローレベルの読出し準備完了信号をアサートし、ハイレベルの取消信号をアサートする。２次キャッシュラインの内容は、時点Ｔ23から主メモリより受けられたデータを用いて更新され、新しいキャッシュエントリーは９クロック周期毎に受けられる。
【００４６】
上記本発明を、特に、その実施例を参照して示し、かつ、説明しているが、当業者は、本発明の精神と範囲から逸れるこなく、形態及び細部の点で上記実施例の上記及び他の変形をなし得ることが分かる。
【００４７】
【発明の効果】
本発明によれば、少なくとも一つのデータキャッシュアレイ構造内の余分な場所はキャッシュタグを格納するため使用されるので、キャッシュタグを別の専用の構造に格納する必要は取り除かれる利点がある。
本発明によれば、２次キャッシュが用いられるので、使用するメモリチップの数で記憶容量を決めることができる利点が得られる。
【００４８】
更に、キャッシュタグを冗長的に格納することができるので、キャッシュヒット及びキャッシュミスの初期検出を行なうため使用できる利点がある。
【図面の簡単な説明】
【図１】本発明の一実施例のキャッシュメモリ装置の概略図である。
【図２】マイクロプロセッサと２次キャッシュの間で接続されたアドレスバス及び制御信号と、キャッシュメモリ装置のデータバスの配線図である。
【図３】２次キャッシュの第１の構成の概略図である。
【図４】２次キャッシュの第２の構成の概略図である。
【図５】２次キャッシュの第３の構成の概略図である。
【図６】２次キャッシュで使用される内部バスの配線図である。
【図７】キャッシュタグの説明図である。
【図８】キャッシュタグセグメントの記憶スキームを示す図である。
【図９】キャッシュヒット又はミス検出回路を表わす論理図である。
【図１０】キャッシュエントリーのパリティー検査回路を表わす論理図である。
【図１１】書込み動作用のキャッシュコヒーレンシープロトコルを表わすフローチャートである。
【図１２】読出し動作用のキャッシュコヒーレンシープロトコルを表わすフローチャートである。
【図１３】２次キャッシュヒットを表わすタイミングチャートである。
【図１４】２次キャッシュミスを表わすタイミングチャートである。
【図１５】主メモリ読出しを伴う２次キャッシュミスを表わすタイミングチャートである。
【符号の説明】
１    キャッシュメモリ装置
２    マイクロプロセッサ
３    ２次キャッシュ
４    キャッシュアドレスバス
５    キャッシュ制御信号
６    キャッシュデータバス
７    主メモリ
８    主メモリアドレスバス
９    主メモリ制御信号
１０    ＦＩＦＯ記憶バッファ
【図１】
0003709235.tif 000002
【図２】
0003709235.tif 000003
【図３】
0003709235.tif 000004
【図４】
0003709235.tif 000005
【図５】
0003709235.tif 000006
【図６】
0003709235.tif 000007
【図７】
0003709235.tif 000008
【図８】
0003709235.tif 000009
【図９】
0003709235.tif 000010
【図１０】
0003709235.tif 000011
【図１１】
0003709235.tif 000012
【図１２】
0003709235.tif 000013
【図１３】
0003709235.tif 000014
【図１４】
0003709235.tif 000015
【図１５】
0003709235.tif 000016