(57)【特許請求の範囲】
【請求項１】
コンピュータ・システムであって、
少なくとも１つのプロセッサと、
少なくとも１つのキャッシュ・メモリと、
前記プロセッサと前記キャッシュ・メモリとの間のキャッシュ・メモリ・インタフェースの少なくとも１つと、
を含み、前記キャッシュ・メモリはリフレッシュされる必要のあるＲＡＭ又はリフレッシュされる必要のないＲＡＭ又はこれらの組み合わせであってよく、
前記キャッシュ・メモリ・インタフェースは、キャッシュ・メモリ毎に存在する部分（キャッシュ部分）と、前記キャッシュ部分の各々と夫々接続されるプロセッサ上の部分（プロセッサ部分）とを含み、
前記キャッシュ部分はキャッシュ・メモリ内に存在する情報を示すディレクトリと、
前記キャッシュ・メモリがリフレッシュ状態であることに起因するビジー信号をアサートする手段とを含み、
前記プロセッサ部分は、キャッシュ・メモリのＲＡＭタイプを指示するためのプログラマブルな手段と、前記ビジー信号を受信するための受信器とを含み、
前記キャッシュ・メモリ・インタフェースは、前記ＲＡＭタイプを指示する手段が、リフレッシュされる必要のあるＲＡＭであることを示す場合には、前記プロセッサからのアクセスに対する該ＲＡＭからのビジー信号の受信に応答して、前記プロセッサにアクセスを再試行するように指図し、リフレッシュされる必要のないＲＡＭであることを示す場合には、前記受信器をディスエーブルする、ことによってリフレッシュされる必要のあるＲＡＭ及びリフレッシュされる必要のないＲＡＭの双方をサポートする、
ことを特徴とするコンピュータ・システム。
【請求項２】
リフレッシュされる必要のあるＲＡＭがＤＲＡＭ又は組み込みＤＲＡＭ（ＥＤＲＡＭ）であり、及び、前記リフレッシュされる必要のないＲＡＭがＳＲＡＭである、請求項１記載のコンピュータ・システム。
【請求項３】
前記ビジー信号が、前記キャッシュ・メモリがプリチャージ、初期化、またはスタンバイ状態であるときにもアサートされる、請求項１または２記載のコンピュータ・システム。
【請求項４】
前記キャッシュ・メモリが一のＳＲＡＭと、一のＤＲＡＭまたはＥＤＲＡＭからなり、前記少なくとも１つのプロセッサがプロセッサ部分を２つ含み、前記プロセッサ部分の１つが前記ＳＲＡＭのキャッシュ部分と、他の１つが前記ＤＲＡＭまたはＥＤＲＡＭのキャッシュ部分と夫々接続されていることを特徴とする請求項１〜３のいずれか１項記載のコンピュータ・システム。
【請求項５】
前記プロセッサ部分は、プロセッサとキャッシュ・メモリとの対話を制御するためのキャッシュ制御装置をさらに含み、前記キャッシュ制御装置が、前記受信器によるビジー信号の受信に応答してプロセッサにアクセスを再試行するように指図することを特徴とする請求項１〜４のいずれか１項記載のコンピュータ・システム。
【請求項６】
前記ＤＲＡＭキャッシュ・メモリがクロックに接続され、前記ビジー信号をアサートする手段は、前記ビジー信号が前記クロックの立ち上りエッジで、または前記クロックの立ち下りエッジでアサートされることを可能にする、請求項１〜５のいずれか１項記載のコンピュータ・システム。
【請求項７】
前記キャッシュ・メモリが、パイプライン式キャッシュ・メモリであり、前記プロセッサ部分及び前記キャッシュ部分の両方が、パイプライン処理をサポートすることを特徴とする請求項１〜６のいずれか１項記載のコンピュータ・システム。
【請求項８】
前記キャッシュ・メモリが複数のバンクに分割されるキャッシュ・メモリを含み、前記バンクの各々がクラスに対応し、複数のキャッシュ・ラインを含む、請求項１〜７のいずれか１項記載のコンピュータ・システム。
【請求項９】
前記プロセッサが前記クラスのキャッシュ・ラインの１つからデータを要求するとき、前記キャッシュ・メモリの各前記バンク内のキャッシュ・ラインからのデータが、前記キャッシュ・インタフェースによりフェッチされる、請求項８記載のコンピュータ・システム。
【請求項１０】
前記ＤＲＡＭキャッシュ・メモリがデータを含むことのできる複数のキャッシュ・ラインを含み、前記ＤＲＡＭキャッシュ・メモリ上の前記キャッシュ部分が前記ＤＲＡＭキャッシュ・メモリからのデータのコピーを含む読出しバッファをさらに含み、前記プロセッサが前記ＤＲＡＭキャッシュ・メモリから前記データの少なくとも一部を要求するとき、前記データのコピーの一部がフェッチされ、前記プロセッサに出力される、請求項１〜９のいずれか１項記載のコンピュータ・システム。
【請求項１１】
前記キャッシュ・メモリが、複数のキャッシュ・ラインを含み、前記キャッシュ・ラインの各々がアドレス範囲に対応し、前記キャッシュ部分が、前記キャッシュ・ラインの１つに対応するデータを含む書込みバッファを含み、前記プロセッサが、前記書込みバッファ内のデータに対応するアドレス範囲内のアドレスからのデータを要求するとき、前記データの少なくとも一部が前記プロセッサに出力される、請求項１〜１０のいずれか１項記載のコンピュータ・システム。
【請求項１２】
前記キャッシュ・メモリが、複数のキャッシュ・ラインを含み、前記キャッシュ・ラインの各々がアドレス範囲に対応し、前記キャッシュ部分が、前記キャッシュ・ラインの１つに対応するデータを含む書込みバッファを含み、前記プロセッサが、前記書込みバッファ内のデータに対応するアドレス範囲内にないアドレスへの書込みを要求するとき、前記データの少なくとも一部が、前記アドレスに対応する前記キャッシュ・メモリ内のキャッシュ・ラインに書込まれる、請求項１〜１１のいずれか１項記載のコンピュータ・システム。
【請求項１３】
前記プロセッサ部分が、様々なサイズのキャッシュ・メモリとインタフェースするためのＲＡＭサイズを指示する手段を含む、請求項１〜１２のいずれか１項記載のコンピュータ・システム。
【請求項１４】
前記プロセッサがあるスピードで動作し、前記キャッシュ・メモリ・インタフェースのプロセッサ部分がインタフェース・スピードを指示する手段及びクロック分周器を含み、前記クロック分周器が前記インタフェース・スピードを指示する手段からの指示を用いて、前記プロセッサのスピードを分周し、前記キャッシュ・メモリに接続されて使用される少なくとも１つのクロックを生成する、請求項１〜１３のいずれか１項記載のコンピュータ・システム。
【請求項１５】
プロセッサとキャッシュ・メモリとの間のキャッシュ・メモリ・インタフェースであって、
前記キャッシュ・メモリはリフレッシュされる必要のあるＲＡＭ又はリフレッシュされる必要のないＲＡＭ又はこれらの組み合わせであってよく、
前記キャッシュ・メモリ・インタフェースは、キャッシュ・メモリ毎に存在する部分（キャッシュ部分）と、前記キャッシュ部分の各々と夫々接続されるプロセッサ上の部分（プロセッサ部分）とを含み、
前記キャッシュ部分はキャッシュ・メモリ内に存在する情報を示すディレクトリと、
前記キャッシュ・メモリがリフレッシュ状態であることに起因するビジー信号をアサートする手段とを含み、
前記プロセッサ部分は、キャッシュ・メモリのＲＡＭタイプを指示するためのプログラマブルな手段と、前記ビジー信号を受信するための受信器とを含み、
前記キャッシュ・メモリ・インタフェースは、前記ＲＡＭタイプを指示する手段が、リフレッシュされる必要のあるＲＡＭであることを示す場合には、前記プロセッサからのアクセスに対する該ＲＡＭからのビジー信号の受信に応答して、前記プロセッサにアクセスを再試行するように指図し、リフレッシュされる必要のないＲＡＭであることを示す場合には、前記受信器をディスエーブルする、ことによってリフレッシュされる必要のあるＲＡＭ及びリフレッシュされる必要のないＲＡＭの双方をサポートする、
ことを特徴とするキャッシュ・メモリ・インタフェース。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は一般にコンピュータ・システムのキャッシュ・メモリに関し、特に、ランダム・アクセス・キャッシュ・メモリのためのインタフェースに関する。
【０００２】
【関連出願】
本願は、Ｋｒｏｌａｋらによる１９９７年９月５日付けの係属中の米国特許出願第９２４２７２号”Ｄａｔａ Ｐｒｏｃｅｓｓｉｎｇ Ｓｙｓｔｅｍ ａｎｄ Ｍｕｌｔｉ−Ｗａｙ Ｓｅｔ Ａｓｓｏｃｉａｔｉｖｅ Ｃａｃｈｅ Ｕｔｉｌｉｚｉｎｇ Ｃｌａｓｓ Ｐｒｅｄｉｃｔ Ｄａｔａ Ｓｔｒｕｃｔｕｒｅ ａｎｄ Ｍｅｔｈｏｄ Ｔｈｅｒｅｏｆ”に関連する。
【０００３】
【従来の技術】
今日、我々の社会はその毎日の活動がコンピュータに大きく依存している。コンピュータは家庭内、オフィス内、及びほとんどの生産及び製造環境において見い出される。ほとんどのコンピュータ・システムは中央処理ユニット（ＣＰＵ）により制御され、プログラムされた様々な機能を実行するためにＣＰＵにより使用される、様々なレベルのメモリを有する。一般に、コンピュータ・プログラムはコンピュータ・システムのメモリ記憶領域にロードされ、ＣＰＵにより実行される。プログラム及びデータは、コンピュータがどのタイプの機能を実行しているかに応じて、コンピュータ・システムのメモリの異なる領域に記憶される。従来、コンピュータ・システムのメモリは主メモリ（１次または主記憶装置）と、補助メモリ（補助記憶装置）とに分類された。プログラム及びデータが実行中のプログラムにより実行または参照されるためには、それらは主メモリ内に存在する必要がある一方で、即時必要でないプログラムやデータは必要とされるまで補助メモリに記憶され、その後主記憶装置にロードされて、実行または参照される。
【０００４】
１９６０年代に、従来のメモリ記憶階層が追加の１レベルにより拡張可能で、それにより性能及び利用度の劇的な改善がもたらされることが明らかとなった。この追加のレベル、すなわち”キャッシュ”は、主メモリよりもはるかに高速な高速メモリである。キャッシュ記憶装置は主メモリに比較してかなり高価であり、従って、通常のコンピュータ・システムでは、比較的小容量のキャッシュ・メモリだけが使用される。更に、キャッシュ記憶装置のサイズを制限すると、キャッシュのスピードが向上する。
【０００５】
キャッシュ・メモリは一般に、主メモリよりも高速に動作し（通常は５倍乃至１０倍）、特定の状況ではＣＰＵそれ自体の動作スピードに近づく。最も頻繁にアクセスされる命令及びデータを高速キャッシュ・メモリに保持することにより、システムの平均全体メモリ・アクセス時間がキャッシュのアクセス時間に近づく。様々なメモリ・ロケーション間で情報を往来させるための特定量のオーバヘッドが存在する。このオーバヘッドは、キャッシュ記憶装置を利用することにより達成される性能向上を無効にしないように、できるだけ小さく保たれる。更に、実行される特定のプログラム命令がキャッシュにプリロードされた場合、ＣＰＵは主メモリまたは補助メモリに戻ることなくプログラム命令を実行できるので、システムの動作スピードを著しく増加させる。ＣＰＵは特定の命令またはデータ項目を要求する度に、命令またはデータが見い出されるであろうメモリ内のアドレスまたはロケーションの一部としてタグを含む要求を生成する。ＣＰＵにより要求される情報のタグが、キャッシュ内に現在存在するメモリのラインのタグに合致する場合、ＣＰＵはデータまたは命令をキャッシュからアクセスする。タグがキャッシュ内のメモリのラインに対応するタグに合致しない場合、情報はフェッチされ、キャッシュにロードされなければならない。
【０００６】
キャッシュ・メモリは、それがコンピュータ・システムのどの部分に配置または関連づけられるかにもとづき、異なるカテゴリに細分される。レベル１キャッシュ・メモリは一般に、プロセッサが配置されるのと同一の半導体ダイ・エリア内に配置される。従来、マイクロプロセッサと同一のチップ上に配置されない追加のキャッシュ・メモリは、通常、レベル２キャッシュ・メモリと呼ばれた。現在、より多くのプロセッサ設計者がレベル２キャッシュをプロセッサと同一の半導体チップ上に配置している。レベル３メモリは通常”主メモリ”と呼ばれるが、一部のコンピュータは、キャッシュ・メモリであるレベル３メモリと、主メモリであるレベル４メモリとを有する。
【０００７】
従来、キャッシュはもっぱら、静的なランダム・アクセス・メモリ（ＲＡＭ）により構成された。このスタティックＲＡＭ（ＳＲＡＭ）は、データのビットを含む個々のセルがリフレッシュされる必要のないように構成される。ＳＲＡＭは個々のセルのデータを保持する設計基準により、非常に大きな半導体面積を専有し、比較的高価である反面高速である。別の競合ＲＡＭはダイナミックＲＡＭ（ＤＲＡＭ）である。ＤＲＡＭは、データのセルがリフレッシュされる必要のあるＲＡＭである。各セルはリフレッシュされない場合、その情報をゆっくりと失う。ＤＲＡＭの設計は、たくさんのメモリをカバーすることを可能にする。更に同一の領域では、ＤＲＡＭはＳＲＡＭよりもより多くの情報ビットを保持する。しかしながら、ＤＲＡＭアレイ内の各セルは周期的にリフレッシュされる必要があるので、リフレッシュが発生しているために特定のセルまたはセル・グループが書込みまたは読出しできないときが存在する。
【０００８】
最近、ＤＲＡＭの小面積内に配置可能な多数のデータ・ビットに頼り、一部の設計者はＤＲＡＭをＬ２キャッシュ内で使用した。例えば、Ｌｅｕｎｇらによる米国特許第５８２９０２６号”Ｍｅｔｈｏｄ ａｎｄ Ｓｔｒｕｃｔｕｒｅ ｆｏｒ Ｉｍｐｌｅｍｅｎｔｉｎｇ ａ Ｃａｃｈｅ Ｍｅｍｏｒｙ Ｕｓｉｎｇ ａ ＤＲＡＭ Ａｒｒａｙ”では、プロセッサを保持するのと同一のチップ上にある、または同一のチップ上にないＤＲＡＭキャッシュが開示される。また、Ｂｏｙｄらによる米国特許第５８９５４８７号”Ｉｎｔｅｇｒａｔｅｄ Ｐｒｏｃｅｓｓｉｎｇ ａｎｄ Ｌ２ ＤＲＡＭ Ｃａｃｈｅ”では、プロセッサと同一の半導体チップ上に配置されるＬ２  ＤＲＡＭキャッシュが開示される。組み込みＤＲＡＭ（ＥＤＲＡＭ：Ｅｍｂｅｄｄｅｄ ＤＲＡＭ）は、通常のＤＲＡＭよりも小さな密度を有するロジック技術により形成されるＤＲＡＭであるが、ＳＲＡＭアクセス時間に近いアクセス時間を有する。
【０００９】
プロセッサと、オフチップまたはオンチップＬ２キャッシュを有する半導体チップを設計する場合、Ｌ２キャッシュがＳＲＡＭかＤＲＡＭかに関するオプションを有することが有益である。しかしながら前述の特許は、ＤＲＡＭとインタフェースするキャッシュ・インタフェースだけしか提供しない。同様に、ＳＲＡＭのためのキャッシュ・インタフェースは、ＳＲＡＭだけとしかインタフェースしない。
【００１０】
更に、現キャッシュ・インタフェースはプログラム可能性を提供しない。ＳＲＡＭキャッシュを有するシステムでは特に、特定サイズ及びスピードのＳＲＡＭキャッシュを追加しない設計者は、この特定サイズ及びスピードのＳＲＡＭキャッシュのためのインタフェースを作成しなければならない。次のバージョンのプロセッサで、ＳＲＡＭキャッシュのサイズまたはスピードが変更されると、インタフェースが再設計されなければならない。同様に設計者がＤＲＡＭキャッシュを拡大したい場合は、キャッシュ・インタフェースを再設計しなければならない。
【００１１】
これらの問題は特に、プロセッサ・メーカが異なる容量またはスピードのキャッシュを有する、同一のプロセッサの複数のバージョンを販売しようとする今日のプロセッサ市場環境において顕著である。
【００１２】
【発明が解決しようとする課題】
ＳＲＡＭ及びＤＲＡＭキャッシュ・インタフェースが存在するものの、ＳＲＡＭ及びＤＲＡＭキャッシュの両方をサポートするプログラマブル・キャッシュ・インタフェースを提供することが待望される。更に設計者は現在、キャッシュのサイズまたはスピードが変更する度に、新たなキャッシュ・インタフェースを作成する負担を担っており、従ってキャッシュのサイズ及びスピードが容易に変更可能なプログラマブル・キャッシュ・インタフェースが必要とされる。
【００１３】
【課題を解決するための手段】
本発明によれば、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）及びダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）の両方をサポートするキャッシュ・インタフェースが開示される。キャッシュ・インタフェースは好適には２つの部分、すなわちプロセッサ上の部分と、キャッシュ上の部分とを含む。設計者は単に自分がどちらのＲＡＭをキャッシュとして使用したいかを選択すればよく、プロセッサＲＡＭ上のキャッシュ・インタフェース部分が、このタイプのＲＡＭを使用するようにプロセッサを構成する。キャッシュ上のキャッシュ・インタフェース部分は、ＤＲＡＭと共に使用される場合単純である。なぜなら、プロセッサ及びＤＲＡＭキャッシュにより生成されるアクセス間で、アクセス衝突が発生するとき、ビジー指示がアサートされ、プロセッサはそれを認識するからである。アクセス衝突は、ＤＲＡＭキャッシュがプリチャージ、初期化、リフレッシュ、またはスタンバイ状態のためにデータを読み書きできないときに発生する。ビジー指示が、既にキャッシュ・ミス論理を有するＬ２キャッシュ制御装置と共に使用される場合、ビジー指示は好適には、キャッシュ・ミス論理に経路指定される。なぜならビジー指示は、あたかもプロセッサがキャッシュ・ミスを有したかのように、プロセッサに（論理的に）振る舞わせるからである。この構成の利点は、キャッシュ・ミス構造が既に存在し、Ｌ２キャッシュ制御装置が本発明を使用するために構造の小変更だけが必要とされる点である。Ｌ２制御装置がキャッシュ・ミス論理を有さない場合、Ｌ２キャッシュ制御装置はビジー指示をサポートするために、ここで開示される幾つかの変更を有さねばならない。キャッシュ・インタフェースがＳＲＡＭキャッシュと共に使用される場合、ビジー指示は好適には、プロセッサ及びプロセッサのキャッシュ・インタフェース部分により無視される。
【００１４】
更に、開示されるキャッシュ・インタフェースは、キャッシュのスピード及びサイズ要件が、インタフェース内にプログラムされることを可能にする。このように、インタフェースは異なるサイズまたはスピードのキャッシュと共に使用されるために再設計される必要がない。
【００１５】
本発明の前述の及び他のフィーチャ及び利点が、添付の図面に関連して述べる、本発明の好適な実施例に関する以下の詳細な説明から明らかとなろう。
【００１６】
【発明の実施の形態】
スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）及びダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）の両方をサポートするキャッシュ・インタフェースが開示される。キャッシュ・インタフェースは好適には２つの部分、すなわち、プロセッサ上の部分（好適にはＬ２キャッシュ制御装置の一部分）と、キャッシュ上の部分とを含む。キャッシュ・インタフェースのプロセッサ部分はプログラマブルであり、ＤＲＡＭまたはＳＲＡＭ  Ｌ２（またはより高位の）キャッシュ、複数の異なるキャッシュ・スピード、及び異なるキャッシュ・サイズをサポートすることができる。従って、キャッシュ・インタフェースのプロセッサ部分は、プロセッサが多様な異なるサイズ、スピード及びタイプのキャッシュをアクセスするために変更される必要はない。しかしながら、キャッシュ・インタフェースのキャッシュ部分は、異なるキャッシュＲＡＭ（ＤＲＡＭまたはＳＲＡＭ）を最適にサポートするために変更可能であることが好ましい。
【００１７】
本発明は、リフレッシュされる必要のあるＲＡＭ（ＤＲＡＭ）、及びリフレッシュされる必要のないＲＡＭ（ＳＲＡＭ）から成るキャッシュ及びキャッシュ・アレイと協働する。ＤＲＡＭについてだけ述べるが、本発明は任意のタイプのＤＲＡＭ、特に組み込みＤＲＡＭ（ＥＤＲＡＭ）に適用可能である。ＥＤＲＡＭは現在、単一データ・レート（ＳＤＲ）及びダブル・データ・レート（ＤＤＲ）インタフェースをサポートするのに十分に高速なＤＲＡＭだけである。しかしながら、ＥＤＲＡＭはリフレッシュされなければならないため、依然ＤＲＡＭであって、ＤＲＡＭカテゴリに一括される。更に、本発明はビジー指示に等価な機能を有する任意のタイプのメモリと協働する。
【００１８】
ＤＲＡＭキャッシュ・インタフェースは、プロセッサとＤＲＡＭキャッシュとにより生成されるアクセス間で、アクセス衝突が発生するときをプロセッサが知るために、ビジー指示がアサートされる点で単純である。アクセス衝突は、ＤＲＡＭキャッシュがプリチャージ、初期化、リフレッシュ、またはスタンバイ状態のためにデータを読み書きできないときに発生する。ビジー指示は、プロセッサによるある数の拒否されるアクセスが存在することを意味するが、この拒否の数は、深い入出力バッファ、先入れ先出しバッファ（ＦＩＦＯ）、または複雑なクロッキング機構が要求されない程度に小さくなるべきである。しかしながら、バッファの提供はアクセス衝突を低減させ、それにより追加の改善を提供する。この結果、好適には”外部”キャッシュ・バス（キャッシュとプロセッサとの間のバス）よりも幅広の読出し／書込みバッファが提供され、アクセス衝突の数を更に低減させる。
【００１９】
更に、本発明の最も好適な実施例は、Ｋｒｏｌａｋらによる１９９７年９月５日付けの係属中の米国特許出願第９２４２７２号”Ｄａｔａ Ｐｒｏｃｅｓｓｉｎｇ Ｓｙｓｔｅｍ ａｎｄ Ｍｕｌｔｉ−Ｗａｙ Ｓｅｔ Ａｓｓｏｃｉａｔｉｖｅ Ｃａｃｈｅ Ｕｔｉｌｉｚｉｎｇ Ｃｌａｓｓ Ｐｒｅｄｉｃｔ Ｄａｔａ Ｓｔｒｕｃｔｕｒｅ ａｎｄ Ｍｅｔｈｏｄ Ｔｈｅｒｅｏｆ”（以下ＫｒｏＬａｋ出願）で開示されるキャッシュ機構を使用する。ＫｒｏＬａｋ出願で開示される発明を使用するキャッシュ制御装置は、既にキャッシュ・ミス論理を有し、ビジー指示が経路指定されて、キャッシュ・ミス論理の論理拡張として作用する。更に、本発明の最も好適な実施例は、Ｉｒｉｓｈらによる米国特許第５７９０８３８号”Ｐｉｐｅｌｉｎｅｄ Ｍｅｍｏｒｙ Ｉｎｔｅｒｆａｃｅ ａｎｄ Ｍｅｔｈｏｄ ｆｏｒ Ｕｓｉｎｇ ｔｈｅ Ｓａｍｅ”（以下、Ｉｒｉｓｈ特許）で述べられるような、パイプライン式メモリ・インタフェースを含む。これらの概念が以下で詳述される。
【００２０】
ＳＲＡＭがキャッシュ・アレイ内で使用される場合、ＤＲＡＭキャッシュに関連する性能強化を削除するために、キャッシュ・インタフェースのキャッシュ部分が変更されることが好ましい。なぜなら、これらの性能強化は一般にＳＲＡＭにとっては不要であるからである。これらのＤＲＡＭ性能強化には、読出しバッファ、読出しバッファ・アドレス・レジスタ、及びビジー指示が含まれる。ＳＲＡＭまたはＤＲＡＭがキャッシュとして使用されるときに、キャッシュ・インタフェースのキャッシュ部分が変化するとしても、キャッシュ・インタフェースのプロセッサ部分は変化すべきでない。
【００２１】
設計者は、プロセッサ・キャッシュ・インタフェース部分上のＲＡＭ標識のタイプを調整することにより、インタフェースと協働するキャッシュのタイプ（ＳＲＡＭまたはＤＲＡＭ）を選択できる。ＲＡＭ標識のタイプがＳＲＡＭを示すように調整される場合、プロセッサはビジー指示が無視されることを認識する。逆に、ＲＡＭ標識のタイプがＤＲＡＭを示すように調整される場合、プロセッサはビジー指示が重要なことを認識する。
【００２２】
更に、開示されるキャッシュ・インタフェースは、キャッシュのスピード及びサイズ要件を、キャッシュ・インタフェースのキャッシュ部分にプログラムすることを可能にする。設計者はこれらのフィーチャに対する標識を調整することにより、インタフェースのスピードまたはＲＡＭのサイズを変更できる。このように、インタフェースはキャッシュの異なるサイズまたはスピードに伴って、再設計される必要がない。
【００２３】
前述のように、本発明のキャッシュ・インタフェースは２つの部分、すなわち、一方はプロセッサと同一の半導体領域内またはその近傍にあり、他方はキャッシュ内またはその近傍にある。キャッシュ・インタフェースを分割することにより、プロセッサは自身にとって重要且つローカルな、キャッシュ・インタフェースのほとんどのフィーチャのプログラミングを制御することができる。一方、キャッシュ・インタフェースは、キャッシュにとって重要且つローカルなフィーチャを制御する。このことが図２に関する説明の中でより明らかにされよう。或いは、キャッシュ・インタフェースは、タイミングや電力、経路指定密度などの他の要求に合う半導体上のスポットに配置される１つ以上の部分を含む。
【００２４】
図１を参照すると、本発明の好適な実施例を使用する半導体パッケージの可能な１構成が示される。半導体パッケージ１００はプロセッサ１３０を含み、これはそれぞれバス１５０及び１６０を通じて、２つのＳＲＡＭキャッシュ１１０またはＤＲＡＭキャッシュ１２０に接続される。２つのＳＲＡＭまたはＤＲＡＭキャッシュの存在は、プロセッサ１３０にキャッシュとプロセッサとの間のより広いバスの利用（結果的にデータ・レートの向上）を提供する。キャッシュ１１０のキャッシュ・インタフェースは、好適にはキャッシュ部分１８０とプロセッサ部分１３３の２つの部分から成る。同様に、キャッシュ１２０のキャッシュ・インタフェースは、好適にはキャッシュ部分１９０とプロセッサ部分１３６の２つの部分から成る。これらの部分については、図２及び図３に関連して後述される。
【００２５】
半導体パッケージ１００はまた第２のプロセッサ１４０を含み、これはバス１５５及び１６６を介して、それぞれＳＲＡＭキャッシュ１１５またはＤＲＡＭキャッシュ１２５に接続される。再度、２つのＳＲＡＭまたはＤＲＡＭキャッシュの存在は、プロセッサ１４０にキャッシュとプロセッサとの間のより広いバスの利用（結果的にデータ・レートの向上）を提供する。キャッシュ１１５のキャッシュ・インタフェースは、好適にはキャッシュ部分１８５とプロセッサ部分１４３の２つの部分から成る。同様に、キャッシュ１２５のキャッシュ・インタフェースは、好適にはキャッシュ部分１９５とプロセッサ部分１４６の２つの部分から成る。
【００２６】
半導体パッケージ１００は２つのプロセッサを有し、各プロセッサは２つのＳＲＡＭまたはＤＲＡＭキャッシュに接続される。各キャッシュ及びキャッシュ・インタフェースは、好適には業界標準キャッシュ・インタフェースである単一データ・レート（ＳＤＲ）インタフェースまたはダブル・データ・レート（ＤＤＲ）インタフェースをサポートする。周知のように、ＳＤＲインタフェースでは、データはクロックのエッジで、キャッシュからまたはキャッシュに転送される（図１には示されていない）。ＤＤＲインタフェースでは、データはクロックの立ち上りエッジ及び立ち下りエッジの両方で転送される。キャッシュ・インタフェースは、ＤＤＲ及びＳＤＲ仕様の通り、キャッシュ・インタフェースからプロセッサに向けて駆動される、１つ以上の”エコー”・クロック（図１には示されていない）を提供する。これらのクロックは、プロセッサとキャッシュとの間のタイミングを改善する。
【００２７】
半導体パッケージ１００はコンピュータ・システム内に配置され、他のレベルのメモリを装備する。こうしたメモリには、潜在的に他のレベルのキャッシュ・メモリ、ハード・ドライブ、入出力装置、ネットワーク接続等が含まれる。
【００２８】
図１に示されるキャッシュ及びキャッシュ・インタフェースは、各プロセッサのための２つのキャッシュから、１プロセッサ当たり１つの大きなキャッシュに結合され、必要なバス幅が提供される。更に、通常の半導体チップ内にある多くの他のフィーチャは図１に示されていない。例えば、各プロセッサ内のＬ１キャッシュや、オフチップ・メモリ及び入出力装置と通信するバス、及びＬ２キャッシュと相互接続するためのバスなどは示されていない。更に、図１のブロック図は、プロセッサ及びキャッシュがはっきりと別の位置に配置される点で、レイアウトが極度に単純化して示されているが、各ブロックの機能は半導体エリア内で広がっていてもよく、従って特定のエリア・ブロックに追いやられなくてもよい。図１は単に、本発明の幾つかの顕著な特徴、及び好適な１実施例を示すに過ぎない。
【００２９】
更に図示のように、各ブロックは別々の半導体上に存在してもよいし、全てのブロックが１つの大きな半導体上に存在してもよい。パッケージ１００は個々のパッケージに分割され、各々は図１の１つ以上の部品を含む。更に、ＳＲＡＭまたはＤＲＡＭ  Ｌ２キャッシュ１１０、１１５、１２０及び１２５内で、ＳＲＡＭまたは代替ＤＲＡＭが使用されるかに拘わらず、キャッシュ・インタフェースのプロセッサ部分１３３、１４３、１３６及び１４６が変更されないことが好ましい。このことは、キャッシュ・インタフェースのプロセッサ部分が異なるサイズ、スピード及びメモリ・タイプ（ＳＲＡＭまたは代替ＤＲＡＭ）を有する様々なキャッシュとインタフェースできる利点を与える。更に、ＳＲＡＭがＬ２キャッシュ内で使用される場合、アクセス・スピード、帯域幅または他の要件により、各キャッシュ１１０、１１５、１２０及び１２５に対して、複数のＳＲＡＭキャッシュが存在してもよい。
【００３０】
用語”ＳＲＡＭまたはＤＲＡＭ  Ｌ２キャッシュ”は、”ＳＲＡＭまたは代替ＤＲＡＭ  Ｌ２キャッシュ”と解釈されるべきである。なぜなら、一方のＲＡＭまたは他方がキャッシュとして選択されるからである。両方のタイプのＲＡＭを有する１つのキャッシュを有すること、特に、基本的にＤＲＡＭキャッシュ上にＳＲＡＭバッファを有することが可能であるが、ここでは用語”キャッシュ・メモリ”は、主メモリからの情報（または主メモリに転送される情報）を記憶するために使用される、実際のビット及びロケーションを示すために使用される。この用語は、キャッシュ・メモリ内の情報のコピーとして使用される中間ステージを示すためには使用されない。例えば、Ｂｏｙｄらによる米国特許第５８９５４８７号”Ｉｎｔｅｇｒａｔｅｄ Ｐｒｏｃｅｓｓｉｎｇ ａｎｄ Ｌ２ ＤＲＡＭ Ｃａｃｈｅ”（以下Ｂｏｙｄ特許）では、ＳＲＡＭ及びＤＲＡＭの両方を有するＬ２キャッシュ・メモリが開示される。しかしながら、キャッシュのＳＲＡＭ部分は、本質的にＤＲＡＭ内の情報のコピーを含む高速バッファである。ＤＲＡＭ部分は、実際の情報を記憶する部分であり、ＳＲＡＭ部分は、単にＤＲＡＭ部分のコピーである。この定義に従えば、Ｂｏｙｄ特許のＳＲＡＭ／ＤＲＡＭキャッシュは、ＤＲＡＭキャッシュといえる。
【００３１】
図２を参照すると、１つのプロセッサとＳＲＡＭまたはＤＲＡＭキャッシュとの間のキャッシュ・インタフェースの詳細が示される。このプロセッサと追加のキャッシュとの間のキャッシュ・インタフェースは示されていない。プロセッサ９１０は、キャッシュ・インタフェースのプロセッサ部分９０５を含み、ＳＲＡＭまたはＤＲＡＭキャッシュ９７０は、同じキャッシュ・インタフェースのキャッシュ部分９６０を含む。従って、キャッシュ・インタフェース９０３は２つの部分９０５及び９６０を含む。プロセッサ・キャッシュ・インタフェース部分９０５は３つの指示、すなわち、ＲＡＭタイプ９２０、インタフェース・スピード９３０、ＲＡＭサイズ９４０を含む。プロセッサ・キャッシュ・インタフェース部分９０５は更に、Ｌ２キャッシュ制御装置９４７及びクロック分周器９４５を含む。プロセッサ９１０はＳＲＡＭまたはＤＲＡＭキャッシュ９７０と、バス９４８、ビジー指示（好適にはアクティブ・ロウ）、クロック（ＣＫ及びＣＫ’）、及びエコー・クロック（ＣＱ及びＣＢ）を介して通信する。ビジー信号のためのビジー指示及びエコー・クロックは、好適には周知の受信器やラッチなどを通じて、Ｌ２キャッシュ制御装置９４７に経路指定される。ビジー指示を受信し、それに作用するプロセッサ・インタフェース部分９０５を構成する、当業者には既知の任意の機構が本発明に適用可能である。これらの機構は一般に”受信器（ｒｅｃｅｉｖｅｒ）”と呼ばれ、受信器はＤＲＡＭからの及びプロセッサ・チップに向けて、ビジー指示を接続する。重要な点は、ＤＲＡＭがキャッシュとして使用されている間、プロセッサ・キャッシュ部分がビジー指示に作用することである。同様に重要な点は、ＳＲＡＭがキャッシュとして使用されているとき、ビジー指示及びビジー・クロックをディセーブルする能力である。半導体チップの外部の（またはキャッシュがオンチップの場合、チップの内部の）信号をイネーブル及びディセーブルする構造及び方法は、当業者には周知である。
【００３２】
ＳＲＡＭまたはＤＲＡＭ  Ｌ２キャッシュ９７０は、ディレクトリ（タグＲＡＭとも呼ばれる）９４９、キャッシュ・インタフェース９０３のキャッシュ部分９６０、及びビジー・タイミング指示９５０を含む。ＳＲＡＭまたはＤＲＡＭ  Ｌ２キャッシュ９７０は好適には関連性（ａｓｓｏｃｉａｔｉｖｉｔｙ）をサポートするが、関連性は決して要求されるものではない。
【００３３】
図２では示されないが、ＲＡＭタイプ９２０、インタフェース／キャッシュ・スピード９３０、ＲＡＭサイズ９４０の指示がそれらの支援論理（クロック分周器９４５など）と共に、Ｌ２キャッシュ制御装置９４７内に配置されることが有利で且つ好ましい。このことはキャッシュ制御装置９４７が、プロセッサ９１０とキャッシュ９７０が交わすほとんどのまたは全ての対話を制御する、別個の機構であることを可能にする。この実施例では、Ｌ２キャッシュ制御装置９４７及びプロセッサ・インタフェース部分９０５は同一の機構となる。しかしながら、図２は、キャッシュ制御装置及び指示が必要に際して結合されるのであれば、この機能がキャッシュ制御装置の外部に配置され得るように示される。特に、キャッシュ制御装置はＲＡＭサイズ指示９４０を知る必要があろう。ＲＡＭタイプ指示９２０は、Ｌ２キャッシュ制御装置に経路指定されるビジー指示及びビジー・クロックをイネーブルまたはディセーブルする。従って、これはキャッシュ制御装置の外部で発生する。インタフェース／キャッシュ・スピード指示９３０もキャッシュ制御装置の外部で発生する。なぜなら、これは適切なタイミングのために、キャッシュ制御装置に供給されるものと思われるからである。
【００３４】
本発明の最も好適な実施例は、前記Ｉｒｉｓｈ特許で述べられるパイプライン式メモリ・インタフェースを含む。パイプライン式キャッシュでは、キャッシュ・インタフェース９０３のプロセッサ部分９０５及びキャッシュ部分９６０の両方が、パイプラインをサポートしなければならない。Ｉｒｉｓｈ特許で述べられるように、キャッシュ・インタフェース９０３のプロセッサ部分９０５は、読出し及び書込みが実際に発生する以前に、読出し及び書込みを発行するようにしてパイプラインをサポートする。キャッシュ・インタフェース９０３のキャッシュ部分９６０がプロセッサにビジーを出すとき（ビジー信号をアサートする）、ビジー指示がパイプラインに追加される。ビジー指示は、パイプライン式データ転送が発生するときアサートされる。ビジー指示のタイミングについては以下で詳述する。
【００３５】
本発明の最も好適な実施例では、前記Ｋｒｏｌａｋ出願で開示されるキャッシュ機構が使用される。Ｋｒｏｌａｋ出願で開示される発明を用いるＬ２キャッシュ制御装置９４７は、既にＬ２キャッシュ制御装置９４７内にキャッシュ・ミス論理（図２では別々に示されていない）を有し、ビジー指示が経路指定され、キャッシュ・ミス論理の論理拡張として作用する。一般に、パイプライン化されるＬ２キャッシュのキャッシュ・ミス論理は、タグ・パイプ論理及びデータ・パイプ論理の一部を含む。周知のように、タグ・パイプ論理はキャッシュ・ミスを判断し、データ・パイプ論理は読出し、書込み及び再試行を発行する。
【００３６】
ビジー指示は論理的にキャッシュ・ミスのように作用し、キャッシュ・ミスとの論理和と見なされる。パイプラインにおけるイベントのシーケンスは、Ｌ２キャッシュ制御装置９４７のデータ・パイプ論理により制御され、Ｌ２キャッシュ・ミス及びビジー指示の両方に対して同一である。Ｌ２キャッシュ・ミス及びビジー指示の両方に対して、プロセッサは（データ・パイプ論理により指示され、）アクセスを再試行する。パイプラインを通じて新たなデータが到来するのを待機し、旧データ（及び不適切なデータ）を廃棄し、パイプラインをクリアするステップは、キャッシュ・ミス及びビジーの両方において同一である。しかしながら、これらのステップが開始するタイミングは異なる。タグ・パイプ論理はキャッシュ・ミスをかなり迅速に判断できる。なぜなら、タグ・パイプ論理は、ローカル・タグＲＡＭ（ディレクトリとも呼ばれる）へのアクセスを有し、タグＲＡＭ内のルックアップを迅速に実行可能であるからである。しかしながらビジー信号は、ビジーであったデータ・アクセスがパイプラインを通過するときアサートされる。すなわちビジー指示は、キャッシュとプロセッサとの間でデータ転送が発生するまで遅延されるのに対して、キャッシュ・ミスはパイプ論理により直ちに発見される。一端タグ・パイプがキャッシュ・ミスを判断するか、ビジー信号を受信すると、タグ・パイプはデータ・パイプ論理に知らせ、次にデータ・パイプ論理が、キャッシュ・ミスとなったまたはビジーであったアクセスの再試行をスケジュールする。本来、キャッシュ制御装置（及びプロセッサ・キャッシュ・インタフェース部分）は、プロセッサにアクセスを再試行するように指図する。
【００３７】
指示（９２０、９３０、９４０、及び９５０）は、好適には１ビット以上を含み、始動時に初期化されるレジスタである。必要に応じて、これらはレジスタのビットをグラウンドまたは電源に接続することにより、”ハードコード化”され、レジスタ内に正しいコードを生成する。
【００３８】
ＲＡＭタイプ指示９２０は、ＳＲＡＭまたはＤＲＡＭ  Ｌ２キャッシュ９７０内で使用されるキャッシュＲＡＭのタイプ（ＳＲＡＭまたはＤＲＡＭ）を示す。インタフェース・スピード指示９３０は、キャッシュ・インタフェースのキャッシュ部分９６０のスピードを示し、これはまた、データがＳＲＡＭまたはＤＲＡＭキャッシュ９７０に、またはキャッシュ９７０から転送されるスピードを（クロック周波数の観点から）示す。しかしながら、ＳＤＲ及びＤＤＲ転送指示は別途議論されるべきである。インタフェース・スピード指示９３０はクロック除数としてプログラムされることが好ましい。クロック分周器９４５はプロセッサのクロックを受け取り（図２では図示せず）、このクロックをクロック除数により分周し、クロックＣＫ及びＣＫ’（ＣＫの反転信号で、図中バー記号により示される）を生成する。これらの信号は、キャッシュ・インタフェース９０３のキャッシュ部分９６０に入力される。クロック分周器は当業者には周知であり、入力クロックのスピードを変更し、異なる（または同一の）スピードの出力クロックを生成可能な任意の機構が、クロック分周器９４５として使用できる。このクロック変更機構を提供することにより、より高速のまたは低速のＳＲＡＭまたはＥＤＲＡＭが、キャッシュ・インタフェースを変更することなく使用可能となる。
【００３９】
ＲＡＭサイズ指示９４０は、好適にはＳＲＡＭまたはＤＲＡＭ  Ｌ２キャッシュ９７０の”深さ”を表す。例えば、ＲＡＭが６４Ｋ（Ｋは２の累乗で１０２４）ロケーションを有する場合、数値６４または６５５３６（６４Ｋ）がＲＡＭサイズ指示９４０に設定される。この数は好適には、キャッシュＲＡＭの”幅”を示す。例えば、バス９４８が１６バイト幅の場合、ＲＡＭサイズ指示９４０は好適にはこのサイズを示さない。ＲＡＭサイズ指示９４０は、ＲＡＭのサイズと関連する数に短縮されてもよい。例えば数０が６４Ｋを示し、数１が１２８Ｋを示してもよい。ＲＡＭサイズ指示９４０は好適には、キャッシュのサイズに対する制限として作用するレジスタである。この数はプロセッサ及びオペレーティング・システムにキャッシュ・サイズを提供する。それにより、プロセッサ及びオペレーティング・システムはキャッシュのサイズを知り、キャッシュ内に配置可能なデータ量を知ることになる。
【００４０】
ディレクトリ９４９、及びＬ２キャッシュ制御装置９４７内のディレクトリ（図２に示されない）は、キャッシュ内に現在存在する情報を追跡するために使用される機構である。周知のように、トラッキング機構は一般に”タグ”である。別途述べるが、複数のディレクトリが１つのディレクトリに結合されてもよい。
【００４１】
キャッシュ・インタフェース９０３のキャッシュ部分９６０は、ビジー指示（この場合ビジー信号）を生成し、これがプロセッサ９１０に、アクセス衝突が発生したことを示す。ＳＲＡＭまたはＤＲＡＭキャッシュ９７０がＤＲＡＭから構成される場合のみ、ビジー信号は有効である。ＳＲＡＭまたはＥＤＲＡＭ  Ｌ２キャッシュ９７０がＳＲＡＭから構成される場合、ビジー信号は使用されない。ビジー信号及びビジー・エコー・クロックが、Ｌ２キャッシュ制御装置９４７（及び前述のように、Ｌ２キャッシュ制御装置内のキャッシュ・ミス論理）に経路指定される。ＳＲＡＭはリフレッシュを必要としないので、キャッシュ９７０がＳＲＡＭから構成される場合、ビジー指示は使用されない。ＳＲＡＭがキャッシュとして使用される場合には、ビジー信号及びエコー・クロック（ＣＢ）が使用されず、キャッシュ・インタフェース部分９６０内に存在しないことが好ましい。更に、ＳＲＡＭがキャッシュとして使用される場合には、信号がプロセッサに経路指定されない。プロセッサ９１０が別の半導体チップ上に存在する場合、これらの信号のために、キャッシュ・インタフェースのプロセッサ部分上に受信器が存在することが好ましい。ＳＲＡＭが使用される場合、これらの受信器はハイまたはロウ・レベルに接続される。更に、受信器からプロセッサ内部への信号の経路が存在するが、受信器は好適にはディセーブルされ、それにより受信器の出力は非アクティブのビジー指示を出力する。これらの信号が、（プロセッサの外部または内部で）特定の電圧レベルに接続されるか否かに拘わらず、ＳＲＡＭがキャッシュとして使用される場合、Ｌ２キャッシュ制御装置９４７は単にビジー指示及びビジー・エコー・クロックを無視する。
【００４２】
ＳＲＡＭまたはＤＲＡＭキャッシュ９７０がＤＲＡＭから構成される場合、ＤＲＡＭキャッシュは複数の状態の１つにある。プロセッサ及びＤＲＡＭキャッシュにより生成されるアクセス（すなわちＤＲＡＭキャッシュへの読出しまたは書込み）間の衝突は、ＤＲＡＭキャッシュがプリチャージ、初期化、リフレッシュ、またはスタンバイ状態であることに起因する。プリチャージは、アドレスへの読出しまたは書込みが発生した後に発生し、ロケーションにあるビットが正しい電位に充電されるための時間である。リフレッシュは、あるアドレスが再充電されるときに発生する。リフレッシュは好適には、プロセッサ及びキャッシュ・インタフェースとは独立に発生する。換言すると、プロセッサもキャッシュ・インタフェースもリフレッシュを制御しない。ＤＲＡＭ自体が好適にはリフレッシュを制御する。しかしながら、その他の機構も可能であり、図３に関連して述べられる。初期化は、パワーがチップに供給された直後に発生する。この期間にレジスタがプログラムされ、論理がリセットされる。スタンバイは省電力モードであり、この間、最小のリフレッシュが実行される。ＤＲＡＭキャッシュがこれらのいずれかの状態にあるとき、ＤＲＡＭキャッシュは新たな情報を受け取ったり、キャッシュから情報を取り出すことができない。
【００４３】
しかしながら、関連性をサポートするキャッシュでは、アクセスの直後に別のアクセスが続くことができる。キャッシュが関連性をサポートする場合、キャッシュは２つ以上のバンクに分割され、これらが１つ以上のクラス・ビットにより示される。４ウェイの関連性では、キャッシュが（２つのクラス・ビットにより示される）４つのバンクに分割される。あるバンク内のロケーションがアクセスされるとき、他の３つのバンクの１つが次のサイクルの間にプリチャージの不都合無しにアクセスされ得る。しかしながら、最近アクセスされたバンクは、プリチャージ期間が終わるまで再度アクセスされることはできない。前述の状況の間に提供される利点により、ＤＲＡＭキャッシュが関連性をサポートすることが好ましい。
【００４４】
キャッシュ・インタフェース９０３のキャッシュ部分９６０は、クロックＣＫ及びＣＫ’を受信し、これらを用いて、エコー・クロックＣＱ及びＣＢを生成する。これについては、図３に関連して詳述する。キャッシュ・インタフェース９０３のキャッシュ部分９６０はまた、好適にはビジー・タイミング指示９５０を含む。ビジー・タイミング指示９５０は、ビジー信号のタイミングを示し、これは特に、クロックＣＫを基準とする。ビジー・タイミング９５０は、ビジー指示が調整されて、クロックＣＫの立ち上りエッジまたは立ち下りエッジで有効か否かを示す。ビジー指示のタイミングについては、図３に関連して詳述する。
【００４５】
これまでに開示したことは、ＤＲＡＭ及びＳＲＡＭキャッシュの両方をサポートするキャッシュ・メモリのためのキャッシュ・インタフェースである。キャッシュ・インタフェースは好適には、２つの部分、すなわちプロセッサ上またはその近傍の部分と、キャッシュ上またはその近傍の他の部分とに分割されるが、前者が前述の一部のまたは全ての機能を有してもよい。ＳＲＡＭ及びＤＲＡＭの両方をサポートするプログラマブルなキャッシュ・インタフェースの提供は、設計者に多くの柔軟性を与え、設計者がプロセッサ上のキャッシュ・インタフェースを再設計する必要無しに、自身のアプリケーションにとって、最善のシステムを選択することを可能にする。
【００４６】
図３乃至図５では、ＳＲＡＭまたはＤＲＡＭ  Ｌ２キャッシュ９７０（図２）がＤＲＡＭにより実現されるように述べられ、ＤＲＡＭキャッシュのための１つの可能なＤＲＡＭキャッシュ・インタフェースについて述べられる。図７乃至図９では、ＳＲＡＭ及びＤＲＡＭ  Ｌ２キャッシュ９７０（図２）が、ＳＲＡＭにより実現されるように述べられ、ＳＲＡＭキャッシュのための１つの可能なＳＲＡＭキャッシュ・インタフェースについて述べられる。
【００４７】
図３乃至図４を参照すると、ＤＲＡＭとインタフェースするときのキャッシュ・インタフェースのキャッシュ部分が詳細に示される。図２に関連して、ＳＲＡＭまたはＤＲＡＭキャッシュ９７０（図３ではＤＲＡＭキャッシュ２００として示される）は、４つの別々のＤＲＡＭキャッシュ・アレイ２２０、２２１、２２２及び２２３と、キャッシュ・インタフェース部分２０１とを含む。ＤＲＡＭキャッシュ２００は好適にはパイプラインをサポートするが、パイプラインは単純化のため、明示的に示されていない。ＤＲＡＭのサポートとＳＲＡＭのサポートとの違いについては、図７乃至図９に関連して述べられる。ＤＲＡＭアレイ２２０乃至２２３及びキャッシュ・インタフェース部分２０１は、単一データ・レート（ＳＤＲ）及びダブル・データ・レート（ＤＤＲ）インタフェース仕様を満足することが好ましい。キャッシュ２００はバス２８５を介して、プロセッサ（図示せず）と通信する。アドレス・ビットＳＡ０乃至ＳＡ１７（この例では１８ビットで、合計２５６Ｋロケーション）は、プロセッサから受信される。同様にプロセッサから受信されるものに、クロックＣＫ及びＣＫ’、ビットＢ１乃至Ｂ３があり、これらは以下で詳述するように、プロセッサ、キャッシュ・インタフェース、及びキャッシュの間の対話を示す。
【００４８】
ＤＲＡＭをサポートするために、キャッシュ・インタフェース部分２０１は、ＳＲＡＭにとっては実際に必要のない拡張を有する。特に、読出しバッファ・アドレス・レジスタ２１１、読出しバッファ２３５、及びビジー指示２９２（その出力レジスタ２５４を含む）が、ＳＲＡＭには必要のない拡張である。ＳＲＡＭとインタフェースし、これらの拡張を使用しないキャッシュ・インタフェース部分が、図７乃至図９に示される。
【００４９】
制御論理２３０は、キャッシュ・インタフェース部分２０１が読出しまたは書込みのいずれを実行するか、及び内部タイミングの一部、更にＳＤＲ転送またはＤＤＲ転送のいずれが発生するかを制御する。これについては以下で詳述する。制御論理は少なくとも４つの信号、すなわちロード、書込み、出力許可、及びアドバンスを生成する。ロード信号はプロセッサによる読出し要求の間に生成され、読出しアドレス・ブロック２０５をイネーブルする。書込み信号はプロセッサによる書込み要求の間に生成され、入力レジスタ２４１、２４２及び書込みアドレス・レジスタ２１０をイネーブルする。出力許可信号は、データが読出しバッファ２３５及び出力レジスタ２５０、２５１を通じて、バス２８５上にドライブされるときに生成される。アドバンス信号は、制御論理１１５、読出しバッファ・アドレス・レジスタ２１１、及びマルチプレクサ２１５を進めるために生成される。更に、出力レジスタ２５０及び２５１の出力上のマルチプレクサなど、追加のマルチプレクサが存在するが、これらは単純化のためにマークされていない。比較ブロック２２５及び制御論理１１５は、後述のように、出力レジスタ２５４を通じてビジー指示（この例ではビジー信号２９２）を生成する。
【００５０】
クロックＣＫ及びＣＫ’特定のスピードであり、好適にはキャッシュ・インタフェース９０３のプロセッサ部分９０５のインタフェース・スピード指示９３０及びクロック分周器９４５のサイズによりセットされる。一般に、クロックＣＫ及びＣＫ’はプロセッサ・クロックのスピードの半分であるが、必要に応じて、クロックはプロセッサ・スピードで走行してもよい。クロックが走行するスピードの制限要因が存在する。また、キャッシュ・アレイ及びキャッシュ・インタフェースは好適にはＤＤＲをサポートするので、プロセッサのスピードの半分よりも速いクロック・スピードは、実際には必要とされない。なぜなら、（ＣＫ及びＣＫ’がプロセッサ・スピードの半分にセットされていると仮定すると、）ＤＤＲは本来、データをプロセッサのスピードで転送しているからである。キャッシュ・インタフェース部分２０１は、出力レジスタ２５２及び２５３を通じてＣＫクロック（”Ｋ”クロックと呼ばれる）を通過させることにより、エコー・クロックＣＱ及びＣＢを生成する。ＣＢはビジー指示２９２と同期されるクロックである。ＣＱクロックは、業界標準ＳＤＲ及びＤＤＲインタフェースの要求を満足するＳＤＲ及びＤＤＲエコー・クロックである。この例では、１８ビットにつき１ＣＱクロックが存在する。これらのエコー・クロックは好適にはＫクロックから生成され、読出し、書込み、及びノーオペレーション（ｎｏｏｐ）サイクルの間に走行し続ける。
【００５１】
バス２８５はこの例では１６バイト幅である（エラー訂正コードのための余分ビット、及びセキュリティ・ビットを含め、合計１４４ビット）。キャッシュ・インタフェースのキャッシュ部分２０１は、ＤＲＡＭアレイ２２０、２２１、２２、及び２２３とやり取りする。ＤＲＡＭアレイ２２０、２２１、２２２、及び２２３は、”ライン”に分割されるビットのアレイである。各キャッシュ・ラインは多数のビットを有し、これは好適には２８５の倍数である。この例では、倍数は８である。従って、各キャッシュ・ラインは１２８バイトを有し、エラー訂正コード及びセキュリティ・ビットを含めると、１ライン当たり合計１１５２ビットを有する。プロセッサは１度に１６バイトしか読み書きできないのに対して、キャッシュ・ラインは１２８バイトなので、１キャッシュ・ラインは８つの１６バイト・データ部分を有することになる。キャッシュは１つの特定のデータ部分を認識できなければならないので、各データ部分は１アドレスに対応する。従って、各キャッシュ・ラインは、ある範囲のアドレス及び多数のデータ部分に対応する。前述の数は一例であり、必要に応じて変更可能である。好適には、キャッシュ部分２０１は、ＤＲＡＭアレイ２２０、２２１、２２２、及び２２３への情報の完全なラインを読み書きするだけである。より小さなデータ部分が読み書きされるようにすることも可能であるが、これはプリチャージ状態により、アクセス時間を制限するかもしれない。
【００５２】
高速アクセスをサポートするために、１つのＤＲＡＭアレイを有する変わりに、４つのＤＲＡＭアレイ２２０乃至２２３が存在する。これらのアレイの各々は独立に動作する。ＤＲＡＭアレイを分割することは、本発明では必要でない。これは単に、ＤＲＡＭキャッシュ・アレイからＳＲＡＭ性能を達成することを容易にするためである。アレイを４つのブロックに分割することにより、読出しまたは書込み対称のブロックが、プリチャージやリフレッシュのためにビジーになる可能性が低減される。この特定の例では、独立したアレイの各々が１キャッシュ・ラインよりも小さな幅を有し、１キャッシュ・ラインを取り出すか、または書込むために、それぞれ幾度か読出しまたは書込みを実施されなければならない。ほとんどのメモリと同様、最初の読出しまたは書込みは、続く読出しまたは書込みよりも長い時間を要する。好適には、各アレイは読出しの間に並列にアクセスされる。これは読出しバッファ２３５が、各アレイからの情報の４つのキャッシュ・ラインを含むことを可能にする。従って、あるクラスからの情報が要求されるとき、好適には各クラスの各キャッシュ・ラインが読出される。
【００５３】
この好適な実施例は低能力アプリケーションにとっては、余りにも多くの能力を費やすかもしれない。なぜなら、４つの全てのＤＲＡＭアレイ２２０乃至２２３がイネーブルされ、データを１度に転送するからである。低能力を有するシステムでは、各ＤＲＡＭアレイが独立にアクセスされてもよいし、或いは４つのアレイが１つの大きな低速のアレイに形成されてもよい。
【００５４】
この場合、読出しバッファ２３５及び書込みバッファ２４０は、好適には各キャッシュ・ラインの幅（バイトまたはビット幅）と同じである。プロセッサがＤＲＡＭアレイ２２０乃至２２３を通じて書込みを実行するとき、データがバス２８５上にドライブされる一方で、ＳＡ０乃至ＳＡ１７はアドレスによりドライブされ、Ｂ１乃至Ｂ３は書込みを示すようにドライブされる（これについては以下で詳述する）。入力レジスタ２４１及び２４２はデータをラッチし、データを書込みバッファ２４０に転送する。現キャッシュ・ラインのアドレス範囲が充填されるまで、プロセッサが各アドレスを書込むことが好ましい。例えば、書込みバッファがアドレス０乃至７に対するデータを含む場合（各アドレスは１６バイトのデータを保持する）、プロセッサはアドレス０から開始し、データを順次アドレス８を超えて書込むことが好ましい。好適には、完全なキャッシュ・ラインだけが、キャッシュと読出し／書込みバッファとの間で転送される。この実施例の利点は、キャッシュ・ライン・アドレス境界がキャッシュ・インタフェースへの書込みにより横断されるとき、書込みバッファ２４０はアレイ２２０、２２１、２２２、２２３の１つに対して、書込みを行うことである。次のサイクル（またはＤＤＲの場合、クロック・エッジ）で、プロセッサからの即時書込みが発生する場合、書込みバッファは、前の書込みによりＤＲＡＭアレイ内で生じたプリチャージ期間に関係なく、直前に書込まれたデータを自由に受け入れることができる。全部のキャッシュ・ラインが転送されない場合（例えばプロセッサがアドレス０に書込み、次にアドレス２２に、続いてアドレス４３に書込むような場合）、書込みバッファは第２のアドレス（すなわちアドレス２２）のデータを受信するので、最初のアドレス（すなわちアドレス０）のデータをＤＲＡＭアレイに書込まねばならない。第３のアドレスがキャッシュ・インタフェースに書込まれるとき、キャッシュ・インタフェースはビジー指示をイネーブルしなければならない。なぜなら、プリチャージのために、書込みバッファが第２のアドレスのデータをＤＲＡＭアレイに書込むことができないからである。
【００５５】
読出しについても、１度に１キャッシュ・ラインとして発生することが好ましい。換言すると、読出しバッファ２３５は１キャッシュ・ラインを読出し、次にプロセッサが好適には、個々のアドレスに対応する全てのデータ要素をアクセスする。これは第１のデータ要素をアクセスし、続いて他の全てのデータ要素を順次アクセスすることにより行われる。再度、データ要素及び個々のアドレスを順次読出すこと（或いは、別のキャッシュ・ラインをアクセスする前に、バッファから少なくとも２つのデータ要素を読出すこと）は、プリチャージ期間によるアクセス衝突を制限する。
【００５６】
キャッシュ・ライン境界を自由に横断できるように、プロセッサが各アドレスをランダムに書込むまたは読出すことが所望される場合、読出しバッファ２３５及び書込みバッファ２４０の深さを増加することが可能である。バッファ内により多くのキャッシュ・ラインを記憶可能にすることにより、アクセス衝突が低減するはずである。なぜなら、バッファが他のデータを受信または送信しながら、ＳＲＡＭまたはＤＲＡＭアレイへの書込み、またはアレイからの読出しが可能になるからである。しかしながら、ＤＲＡＭアレイはデータが存在し、キャッシュ・インタフェースに入力するスピードよりも遅いことが好ましいので、キャッシュ・ライン境界の横断がたくさん生じる場合、バッファはフルになる。
【００５７】
アクセス衝突を更に制限するために、追加の読出しまたは書込みバッファと共に、または無しに、深い読出しまたは書込み先入れ先出し（ＦＩＦＯ）バッファを使用することが可能である。これについては、Ｌｅｕｎｇらによる米国特許第５８２９０２６号”Ｍｅｔｈｏｄ ａｎｄ Ｓｔｒｕｃｔｕｒｅ ｆｏｒ Ｉｍｐｌｅｍｅｎｔｉｎｇ ａ Ｃａｃｈｅ Ｍｅｍｏｒｙ Ｕｓｉｎｇ ａ ＤＲＡＭ Ａｒｒａｙ”（以下Ｌｅｕｎｇ特許）で述べられている。しかしながら、本発明の利点の１つは、ＤＲＡＭキャッシュを扱うときのキャッシュ・インタフェースの容易さである。本発明は単純なバッファ及び比較的単純なクロッキング機構を有する。Ｌｅｕｎｇ特許のクロッキング機構及びバッファはかなり複雑であり、大きなバッファ及びＦＩＦＯは大きな半導体領域を必要とする。この複雑性及び追加の半導体領域は、ＤＲＡＭアレイ２２０（及び２２１、２２２、２２３）がＳＲＡＭにより実現されるとき、本質的に浪費される。なぜなら、ＳＲＡＭは一般に、これらのクロッキング機構及びバッファを必要としないからである。従って、本発明は、ＳＲＡＭがキャッシュとして使用されるとき、無益な複雑性及び半導体領域を制限し、またＤＲＡＭがキャッシュとして使用されるとき、複雑性及び半導体領域を制限する。
【００５８】
関連性はこの分析に幾分影響を与える。図３乃至図４では、関連性をサポートするＤＲＡＭアレイが示され、同一のバンクが順次アクセスにおいてアクセスされる場合に限り、順次アクセス間でアクセス衝突が発生する。例えば、プロセッサがバンク０に書込み、次に即時バンク１に書込みたい場合、これらのアクセス間でアクセス衝突は発生しない。しかしながら、プロセッサがバンク０に書込み、続いて、最初の書込みが完了する前に（プリチャージを含む）、同一のバンク内の異なるキャッシュ・ラインに書込みたい場合、キャッシュ・インタフェースはアクセス衝突を生成する。
【００５９】
ＤＲＡＭアレイが関連性をサポートする場合、キャッシュ・インタフェース部分２１０も関連性をサポートすべきである。必要に応じて、アドレス・ビットＳＡ０乃至ＳＡ１７の２ビットが、クラス・ビットとして指定される。或いは、アドレス・ビットとは別の追加の２ビット（図３乃至図４には示されていない）が、クラス・ビットとして指定されてもよい。プロセッサがキャッシュ・ミスを有する場合（及びＤＲＡＭがアレイ２２０乃至２２３内で使用される場合、）正しいクラス・ビットを有する続く読出しは、ビジーにされない。なぜなら、正しいデータを含むバンクはアクセスされる準備が整っているからである。例えば、プロセッサがクラス１から読出したいが、実際にはクラス２から読出したいと出力する場合、キャッシュ・インタフェースはクラス１のＤＲＡＭアレイをアクセスし、キャッシュ・ミスを生成する。キャッシュ・ミス論理は前述のように、キャッシュ・インタフェースのプロセッサ部分の一部であることが望ましい。プロセッサは次にクラス２に対する読出しを再発行し、キャッシュ・インタフェースがクラス２から即時読出すことができる。なぜなら、プリチャージが発生しているのはクラス１のバンクであり、クラス２のバンクでないからである。
【００６０】
最適な実施例では、プロセッサが特定のアドレスに対応するあるバンクからのデータを要求するとき、読出しバッファ２３５は全てのバンクからデータをアクセスさせられる。このように、読出しバッファは全てのバンクからの全てのデータを含む。キャッシュ・ミスが依然発生し得るが、プロセッサが次にデータを要求するとき、ＤＲＡＭアレイの１つのアクセスに関連付けられる待ち時間は発生しない。なぜなら、４つの全てのクラスからの４つの全てのキャッシュ・ライン・データが、読出しバッファ２３５内に存在するからである。前述のようにこのことは、読出しバッファが４つのキャッシュ・ライン・データを保持でき、全てのバンクから同時に読出せることを意味する。図３乃至図４の例では、ＤＲＡＭアレイの幅が１キャッシュ・ラインの幅よりも小さく、バス２８５に対応する正しい数のビットを取り出すために、複数回読出される。更に、４つの全てのアレイは好適には、４つの全てのクラスから４つの全てのキャッシュ・ラインを取り出すために、並列に読出される。
【００６１】
例えば前の例を用いると、プロセッサがクラス１からのデータに対する要求を発行するが、実際にはクラス２から読出したい場合、読出しバッファ２３５は現連想（ａｓｓｏｃｉａｔｉｖｉｔｙ）機構にもとづき、キャッシュ・ラインをバンクの各々から取り出す。ＤＲＡＭアレイが４ウェイの関連性をサポートし、アドレス・ビットＳＡ０乃至ＳＡ１７の最下位２ビットがクラス・ビットの場合、読出しバッファ２３５は、アドレスＸ０、Ｘ１、Ｘ２、及びＸ３に対応するキャッシュ・ラインを読出す。ここで”Ｘ”はアドレスの同じ上位１６ビットに対応する。このとき、読出しバッファ２３５は全ての可能なバンクの全ての可能なデータを有し、キャッシュ・ミスは発生しない。プロセッサが正しいクラスの正しいデータを要求するとき、読出しバッファは正しいデータをプロセッサに手渡す。この例では、クラス２からのデータが正しいデータであり、他の３つのキャッシュ・ラインは無視される。
【００６２】
制御論理１１５は、キャッシュ・インタフェース部分２０１の大きな部分である。制御論理１１５は、プロセッサにアクセス衝突が発生したときを知らせるビジー信号２９２を制御する。アクセス衝突は前述のように、ＤＲＡＭキャッシュがプリチャージ、初期化、リフレッシュ、またはスタンバイ状態のときに発生する。これらのＤＲＡＭキャッシュ状態の間、制御論理１１５はビジー指示２９２（この例ではアクティブ・ロウの信号）をアサートする。ＤＲＡＭアレイが前記状態のいずれかであることを制御論理１１５が知るために、２つのエンティティ間で特定タイプの通信が行われる。一般にこの通信は、ＤＲＡＭアレイ２２０、２２１、２２２または２２３がリフレッシュできないことを制御論理に知らせる信号である。
【００６３】
各ＤＲＡＭアレイ２２０乃至２２３は、それ自身のリフレッシュ・インターバル・カウンタ及びリフレッシュ・アドレスを有し、ＤＲＡＭがそれ自身のリフレッシュを実行することを可能にする。Ｋクロックが走行しているとき、リフレッシュ・インターバル・カウンタはＫクロックで動作する。Ｋクロックが停止すると、ＤＲＡＭは好適には内部の自己生成クロックに切り替わり、低電力スタンバイ・モードに入り、データを保持するのに必要な頻度でリフレッシュする。Ｋクロックの始動に際して、ＤＲＡＭは特定のサイクル数内にスタンバイ・モードからアクティブ・モードに切り替わる。スタンバイ・モードでは、ビジー指示が制御論理１１５によりアサートされる。更に、初期化の間（初期化は通常パワーオンの後に発生するが、キャッシュ及びキャッシュ・インタフェースのリセットが許可される場合、いつでも発生し得る）、制御論理１１５がビジー指示２９２をアサートする。
【００６４】
更に、制御論理１１５はＤＲＡＭアレイ２２０乃至２２３のリフレッシュをスケジュールさせられる。しかしながら、ＤＲＡＭアレイがそれら自身のリフレッシュをスケジュールすることを可能にすることにより、制御論理１１５（及びキャッシュ・インタフェース部分２０１）は、ＳＲＡＭがアレイ２２０乃至２２３内で使用される場合に、ＳＲＡＭをサポートするように変更される必要がない。必要に応じて、制御論理１１５またはキャッシュ・インタフェース部分２０１の別の部分がプログラマブルであってもよく、例えば、あるプログラムド状態において、キャッシュ・インタフェース部分２０１がリフレッシュを制御でき、別のプログラムド状態では、リフレッシュを実行できないようにプログラムされる。しかしながら、これはキャッシュ・インタフェース部分２０１をより複雑にするので、ＤＲＡＭアレイ２２０乃至２２３が独自でリフレッシュを制御できることが好ましい。
【００６５】
しかしながら、必要に応じてキャッシュ・インタフェース部分２０１は、ビットＢ１乃至Ｂ３及び制御論理２３０を通じて、プロセッサからリフレッシュ・コマンドを受け入れさせられる。後述のように、Ｂ１乃至Ｂ３は使用されない余分な組み合わせを有する。これにもとづき制御論理２３０は、ＤＲＡＭアレイをリフレッシュするための、Ｂ１及びＢ２の特定の組み合わせを有するように変更される。この実施例は、プリチャージ及びリフレッシュによる潜在的にアクセス衝突を低減するが、プロセッサがリフレッシュを追跡することを要求する。従って、プロセッサがリフレッシュの追跡から解放され、ＤＲＡＭアレイ２２０がリフレッシュの実行に責任を負うことがより望ましい。
【００６６】
ビットＢ１乃至Ｂ３に関連して、次の表は、プロセッサとキャッシュ・インタフェース２０１との間の対話を示す。
Ｉ．Ｋクロックの立ち上り時に、次の事象が発生する。すなわち、
アドレス及びコマンドがラッチ入力される。前のオペレーションが非ビジーのストアの場合、データがストア・バッファにラッチ入力される。
ｉ）Ｉｆ Ｂ１＝’０’ ａｎｄ Ｂ２＝’１’（フェッチ）：
アレイの選択バンクが”フリー”の場合、それがアクセスされ、データがフェッチ・バッファに移動され、フェッチ・バッファが有効とマークされる。一方、バッファ内のアドレスと、要求アドレスとの比較が行われる。アレイがフリーであったか、フェッチ・アドレスがフェッチ・バッファ・アドレスと合致した場合、ビジーがＫの次の立ち上り後のＫの立ち下り時（すなわち１．５サイクル後）にオフされ、データ・マルチプレクサが、Ｋの次の立ち上り後の立ち下り／立ち上り対において（再度１．５サイクル後）、データを適切に転送するようにセットアップされる。それ以外の場合、Ｋの次の立ち上り後のＫの立ち下り時に、ビジーがオンされる。ビジーのタイミングは、図２に示されるビジー指示９５０により変更され、Ｋの立ち下りの代わりに、Ｋの立ち上りエッジでイネーブル／ディセーブルすることも可能である。
また、フェッチ・アドレスが有効ストア・バッファ・エントリに合致した場合、ストア・エントリがフェッチ・バッファ、更に出力に転送され、データ・コヒーレンスを維持する。
ｉｉ）Ｉｆ Ｂ１＝’０’ ａｎｄ Ｂ２＝’０’（ストア）：
現ストア・アドレスがストア・バッファ・アドレスに等しくなく、アレイがフリーの場合、ストア・バッファがアレイに転送され、ビジーがＫの次の立ち上り後のＫの立ち下り時にオフされる。ストア・バッファは、ストア・データを次のサイクルで受信する準備を整える。
現ストア・アドレスが有効ストア・バッファ・アドレスに合致する場合、次のサイクルでデータをラッチ入力する準備を整え、ビジーがＫの次の立ち上り後のＫの立ち下り時にオフされる。
それ以外の場合、Ｋの次の立ち上り後のＫの立ち下り時に、ビジーがオンされる。ビジーのタイミングは、図２に示されるビジー指示９５０により変更され、Ｋの立ち下りの代わりに、Ｋの立ち上りエッジでイネーブル／ディセーブルすることも可能である。
ｉｉｉ）Ｉｆ Ｂ１＝’１’ ａｎｄ Ｂ２＝’Ｘ’（ノーオペレーション）：
パイプライン化オペレーションを終了し、ビジーがＫの次の立ち上り後のＫの立ち下り時にオンされる。ビジーのタイミングは、図２に示されるビジー指示９５０により変更され、Ｋの立ち下りの代わりに、Ｋの立ち上りエッジでイネーブル／ディセーブルすることも可能である。ノーオペレーションは、ストア・バッファをアレイに転送する機会として、見なされるべきでない。
ＩＩ． Ｋクロックの立ち下り時に、次の事象が発生する。すなわち、
パイプライン状態により、ＤＤＲフェッチまたはストア・データが、適切に移動される。
【００６７】
前記のように、３つの状態が存在するが、Ｂ１及びＢ２により、４つの可能な選択が提供される。第４の状態は、リフレッシュのプロセッサ制御として、または”増分及び継続”オペレーションとして、或いは当業者には既知の他のオペレーションとして実現される。
【００６８】
更に、ビットＢ１乃至Ｂ３は一斉に作用して、同期機能を示す。キャッシュ・インタフェース部分２０１の同期機能は、Ｂ１乃至Ｂ３により制御され、これらはクロックＫの立ち上りエッジで捕獲すなわちラッチされる。同期機能が下記のクロック真理値表で示される（”ｎ”は現立ち上りエッジを指し示し、”ｎ＋１”はクロックＫの次の立ち上りエッジを指し示し、”ｎ＋１．５”はその後の立ち下りエッジを指し示し、”ｎ＋２”はその後の立ち上りエッジを指し示す）。
【表１】
0003629519.tif 000002
【００６９】
図３乃至図４に加えて、図５を参照すると、図５は、プロセッサがキャッシュ・インタフェース部分２０１及びＤＲＡＭアレイ２２０乃至２２３からの読出しを要求するときに発生する、データの経路指定の論理フロー図を示す。図５は、イベントのシーケンスと見なされるべきではない。なぜなら、図５に示される多くのステップが並列に発生するからである。前出の表は、図５に示されるイベントのタイミングを詳細に示すのに対して、図５はキャッシュ・インタフェース部分２０１を通じるデータの経路指定を示し、本発明の理解を支援するフロー図３００は、プロセッサがデータに対する要求を行う度に実行される（前記テーブルにおけるフェッチに相当する）。
【００７０】
プロセッサの読出し要求の後（または同時に）、キャッシュ・インタフェース部分２０１は、要求データが書込みバッファ内に存在するか（ステップ３１０）、または読出しバッファ内に存在するか（ステップ３２０）を判断する。これを行うために、比較回路２２５が、読出しアドレス・レジスタ２０５からのアドレスと、読出しバッファ・アドレス・レジスタ２１１内のアドレス、及び書込みアドレス・レジスタ２１０内のアドレスとを比較する。読出しアドレス・レジスタ２０５内のアドレスが、書込みアドレス・レジスタ２１０内のアドレスに合致する場合（ステップ３１０がｙｅｓ）、データが書込みバッファ２４０内に存在する。前述のように、読出しバッファ２３５及び書込みバッファ２４０は、好適には少なくとも１つのキャッシュ・ラインを含み、（バス２８５の幅がキャッシュ・ラインの幅よりもはるかに小さいために、）キャッシュ・ラインが好適には複数のアドレスからのデータを含むので、プロセッサはそれぞれのバッファを複数回読出すか、或いは書込む。各読出しは読出しバッファにより、ＤＲＡＭアレイ２２０乃至２２３に対して実行されれ、各書込みは書込みバッファ２４０により、ＤＲＡＭアレイ２２０乃至２２３に対して実行される。書込みバッファが要求アドレスに対する要求データを有する場合、制御論理１１５は（制御論理２３０と協力して、）データを書込みバッファ２４０から、マルチプレクサ（図３の読出しバッファ２３５の下に配置される）を通じて、更に出力レジスタ２５０、２５１、別のマルチプレクサ、及びドライバを経て、バス２８５上に経路指定する（ステップ３５０）。
【００７１】
読出しアドレス・レジスタ２０５及び書込みアドレス・レジスタ２１０内のアドレスが合致しない場合（ステップ３１０がｎｏ）、キャッシュ・インタフェース部分２０１は、要求データが読出しバッファ内に存在するか否かをチェックする。あるアドレスに対応するデータが、読出しバッファ及び書込みバッファの両方に存在する場合、書込みバッファからのデータが選択される。これはデータ・コヒーレンスの理由による（データが読出され、同一アドレスに同時に書込まれる場合、書込まれるデータは読出されるデータよりも新しいと見なされる）。比較回路２２５は、読出しアドレス・レジスタ２０５内のアドレスを、読出しバッファ・アドレス・レジスタ２１１内のアドレスと比較する。合致が存在する場合（ステップ３２０がｙｅｓ）、制御論理１１５が（制御論理２３０と協力して、）データを読出しバッファ２３５からマルチプレクサ、出力レジスタ２５０、２５１、別のマルチプレクサ、及びドライバを通じてバス２８５上に経路指定する。
【００７２】
制御論理１１５は、アクセス衝突が存在するか否かを判断する。前述のように、アクセス衝突は、ＤＲＡＭキャッシュがプリチャージ、初期化、リフレッシュまたはスタンバイ状態のとき、引き起こされる。最適な実施例では、制御論理がＤＲＡＭアレイ２２０乃至２２３に接続され、ＤＲＡＭキャッシュがこれらの状態のいずれかであるかを判断する。プロセッサに全キャッシュ・ラインを書込ませたり、読出させることは（これはキャッシュへのまたはキャッシュからの、複数回の書込み及び読出しをそれぞれ要す）、発生するプリチャージ衝突の数の点で、性能を改善する。更に、アソシアティブＤＲＡＭアレイについても、発生するプリチャージ衝突を低減する点で、性能を改善する。
【００７３】
制御論理１１５が、アクセス衝突が発生したと判断すると（ステップ３３０がｙｅｓ）、制御論理はステップ３３５で、ビジー指示（この場合ビジー信号）をイネーブルする。ビジー信号はプロセッサにプロセッサが読出しを再試行しなければならないことを知らせる。ビジー信号のタイミングについては、既に述べた通りである。
【００７４】
データが読出しバッファまたは書込みバッファ内に存在せず（ステップ３１０及び３１１の両方がｎｏ）、アクセス衝突が存在しない場合（ステップ３３０がｎｏ）、制御論理１１５は読出しバッファにアドレス及びデータに対応するキャッシュ・ラインを、アレイ２２０乃至２２３からフェッチするように指図する。データがフェッチされた後、制御論理１１５はデータを読出しバッファ２３５から、マルチプレクサ、出力レジスタ２５０、２５１、別のマルチプレクサ、及びドライバを通じてバス２８５上に経路指定する（ステップ３５０）。
【００７５】
図３乃至図４に加えて、図６を参照すると、図６は、プロセッサがキャッシュ・インタフェース部分２０１及びＤＲＡＭアレイ２２０乃至２２３への書込みを要求するときに発生する、データの経路指定の論理フロー図を示す。図６は、イベントのシーケンスと見なされるべきではない。なぜなら、図６に示される多くのステップが並列に発生するからである。前出の表は、図６に示されるイベントのタイミングを詳細に示すのに対して、図６はキャッシュ・インタフェース部分２０１の理解を支援する。フロー図４００は、プロセッサがデータの書込み要求を行う度に実行される（前記テーブルにおけるストアに相当する）。
【００７６】
本発明の最適な実施例では、プロセッサが異なるキャッシュ・ラインに進む前に、（複数のアドレスを含む）完全なキャッシュ・ラインをキャッシュ・インタフェースに書込む。この実施例では、図６のフロー図は実際には適用可能でない。なぜなら、アクセス衝突は書込みの間には発生すべきでないからである。書込みバッファ２４０は、プロセッサが別のキャッシュ・ラインに書込む前に、キャッシュ・ラインをＤＲＡＭアレイ２２０乃至２２３の適切なキャッシュ・ラインに書込めるべきである。書込みバッファは次にエンプティとなり、プロセッサからの他のキャッシュ・ラインへの新たな書込みを受け入れることができる。フロー図４００は、キャッシュ・ライン境界（アドレス境界）が横断される前に、（２つのアドレスに対応する）少なくとも２つのデータ要素が書込みバッファに書込まれることを保証しない実施例に対応する。これは、書込みバッファ及びＤＲＡＭアレイ内のキャッシュ・ラインの幅がデータ・バス２８５の幅と同一の場合にも発生する。なぜなら、ＤＲＡＭアレイへの各アクセスは、プリチャージにより、アクセス衝突を生じるはずだからである。これは特に、ＤＲＡＭアレイがアソシアティブでない場合に当てはまり、アソシアティブ・アレイを有することにより幾分改善される。
【００７７】
フロー図４００は、プロセッサの書込み要求の後に（または同時に）開始する。次にステップ４１０で、キャッシュ・インタフェース部分２０１は、要求ストア・アドレスが書込みバッファ２４０に対応するアドレス範囲により示されるものとは異なるキャッシュ・ライン・アドレス上にあるかを判断する。例えば、各キャッシュ・ラインが１２８バイトを保持し、バス２８５が１６バイト幅の場合、各キャッシュ・ラインは８つのアドレスからのデータを保持する。このように、各キャッシュ・ラインは好適にはアドレス範囲に対応する。ストア・アドレスが書込みバッファ内のキャッシュ・ラインのアドレス範囲内にある場合、制御論理１１５は（制御論理２３０と協力して）、入力レジスタ２４１、２４２がデータを書込みバッファ２４０内の現アドレスに対応する適切なロケーションに配置することを可能にする（ステップ４１５）。
【００７８】
ストア・アドレスが書込みバッファ内のキャッシュ・ラインのアドレス範囲内にない場合（ステップ４１０がｙｅｓ）、制御論理１１５はプリチャージまたは再チャージ、或いは他の条件により、アクセス衝突が存在するか否かを判断する（ステップ４２０）。例えば、（図３乃至図４に示されるように）ＤＲＡＭアレイが４ウェイの関連性をサポートする場合に、４つのバンクのバンク２が丁度書込まれた場合、同じバンクへの即時アクセスはプリチャージによりアクセス衝突を生じる。アクセス衝突が存在する場合（ステップ４２０がｙｅｓ）、制御論理１１５はビジー信号をイネーブルする（ステップ４２５）。
【００７９】
制御論理１１５がアクセス衝突が存在しないと判断すると（ステップ４２０がｎｏ）、制御論理１１５は（制御論理２３０と協力して）書込みバッファ２４０からＤＲＡＭアレイ２２０乃至２２３へのデータの書込みを生じて、新たなデータが入力バッファ２４１、２４２から書込みバッファ２４０に書込まれる（ステップ４３０）。
【００８０】
これまでの説明は主にＤＲＡＭアレイ（図３乃至図４参照）について述べてきた。ＳＲＡＭアレイでは、プロセッサ上のキャッシュ・インタフェース部分（図２の９０５）は、好適にはＤＲＡＭアレイの場合のキャッシュ・インタフェース部分と全く同様に留まる。しかしながら、ビジー信号２９２（図３乃至図４参照）は、単にプロセッサにより無視される。更に、ビジー信号に対応するプロセッサへの入力はハイ・レベルに接続され（但し、ビジー指示がアクティブ・ロウの場合）、その信号がディセーブルされることを保証する。しかしながら、たとえビジー信号が特定の論理値に接続されなくても、プロセッサはビジー指示を無視することができる。なぜなら、ビジーはキャッシュがＳＲＡＭアレイにより実現される場合、必要とされないからである。
【００８１】
図７乃至図９を参照すると、この図はＳＲＡＭがキャッシュ・アレイとして使用される場合の本発明の潜在的な１実施例を示す。ＳＲＡＭキャッシュ５００は、ＳＲＡＭアレイ５２０及びキャッシュ・インタフェース部分５０１を含む。キャッシュ・インタフェース部分５０１は、好適には図３乃至図４のキャッシュ・インタフェース部分２０１に示される多くの拡張を欠いている。ＳＲＡＭにとっては不要なＤＲＡＭのために使用された拡張には、ビジー指示、読出しバッファ、及び読出しバッファ・アドレス・レジスタが含まれる（ビジー指示については、ＳＲＡＭはリフレッシュ、プリチャージ、または他の条件によりビジーとならないことによる）。ＳＲＡＭアレイは超高速読出しをサポートし、アクセス衝突の危険が無いため、読出しバッファ（及び読出しバッファ・アドレス・レジスタ）は使用されない。書込み許可が遅れて書込む。
【００８２】
プロセッサ及びプロセッサ・インタフェース部分の視点から見ると、キャッシュ・インタフェース部分５０１を有するインタフェースは、キャッシュ・インタフェース部分２０１（図３乃至図４）を有するインタフェースと同一である。依然、アドレス・ビット、クロックＣＫ及びＣＫ’、制御ビットＢ１乃至Ｂ３、エコー・クロックＣＱ及びＣＱ’（この例では数少ないクロックしか存在しない）、及びデータ・バスが存在する。この例では、キャッシュ・インタフェース部分２０１と比較して追加の１アドレス・ビットが存在する。また、データ・バス５８５は７２ビット幅に過ぎない。従って、キャッシュ・インタフェース部分２０１の１４４ビット・データ・バスを得るためには、４つのＳＲＡＭキャッシュ５００が使用されなければならない。
【００８３】
キャッシュ・インタフェース部分５０１は、キャッシュ・インタフェース部分２０１（図３乃至図４）と非常に類似する。エコー・クロック５９０は出力レジスタ５６０、５６１から生成され、制御論理５３０は前述のように、状態とタイミングの同一の組み合わせによりキャッシュを制御する。読出しアドレス・レジスタ５０５、書込みアドレス・レジスタ５１０、出力レジスタ５６２及び５６３、比較ブロック５３５、及び書込みバッファ５５０、５５１が存在する（図示されないが、書込みバッファのためのレジスタも存在する）。バースト論理５２５はこの例では、アドレス・ビットＡ０及びＡ１を制御論理を通じて経路指定する。これらはクラス・ビットである。類似のインプリメンテーションがキャッシュ・インタフェース部分２０１内でも使用され得る（制御論理１１５により実行される）。キャッシュ・インタフェース部分５０１は、プロセッサが現在書込みバッファ内に記憶されるアドレスからの読出しを要求する場合、データを書込みバッファ５５０、５５１から、データ・バス５８５に転送する。
【００８４】
ＳＲＡＭキャッシュ５００は、パイプライン、ＳＤＲ及びＤＤＲインタフェース、クラス及び関連性、及びタイミング要求などの前述の他の全ての機能を、図３乃至図４のキャッシュ２００によりサポートされるように、サポートする。プロセッサの視点から見ると、ＤＲＡＭまたはＳＲＡＭのいずれがキャッシュとして使用されているかを判別できない。しかしながら、２つの実施例におけるビジー指示は異なる。ＤＲＡＭでは、ビジー指示はアクセス衝突を示すために使用されるのに対して、ＳＲＡＭでは、プロセッサ及びプロセッサ・キャッシュ・インタフェース部分がビジー信号を無視する。
【００８５】
前述の図面が示すように、ＳＲＡＭ及びＤＲＡＭの両方をサポートするキャッシュ・インタフェースが開示された。このインタフェースは、システム設計者がＲＡＭタイプの指示を変更することにより、ＲＡＭのタイプを選択することを可能にする。キャッシュ・インタフェースは、ＤＲＡＭがキャッシュとして使用される場合にも、その単純さを維持される。すなわち、プロセッサ及びＤＲＡＭキャッシュにより生成されるアクセスの間でアクセス衝突が発生するとき、ビジー指示がアサートされ、プロセッサはそのことを知ることができる。アクセス衝突は、ＤＲＡＭキャッシュがそのプリチャージ、初期化、リフレッシュ、またはスタンバイ状態により、データを読出しまたは書込みできない場合に発生する。キャッシュ・インタフェースがＳＲＡＭキャッシュと共に使用される場合、ビジー指示は好適には無視される。更に、開示されるキャッシュ・インタフェースは、キャッシュのスピード及びサイズ要求がインタフェースにプログラムされることを可能にする。このように、キャッシュ・インタフェースのプロセッサ部分は、異なるサイズまたはスピードのキャッシュと共に使用されるために再設計される必要がない。
【００８６】
本発明はＬ２キャッシュに関連して述べられてきたが、本発明はＬ３、Ｌ４等の他のレベルのキャッシュや、主メモリにも同様に適用することができる。
【００８７】
本発明は特に、好適な実施例に関連して述べられてきたが、当業者であれば、様々な変更が本発明の趣旨及び範囲から逸れることなく可能であることが理解できよう。
【図面の簡単な説明】
【図１】本発明の好適な実施例を有する半導体パッケージのブロック図である。
【図２】プロセッサ及びキャッシュ上に存在する、好適なキャッシュ・インタフェース実施例の一部のブロック図である。
【図３】本発明の好適な実施例に従い、インタフェースがＤＲＡＭに接続されるときの、キャッシュ・インタフェースのキャッシュ部分の回路図である。
【図４】本発明の好適な実施例に従い、インタフェースがＤＲＡＭに接続されるときの、キャッシュ・インタフェースのキャッシュ部分の回路図である。
【図５】ＤＲＡＭとインタフェースするキャッシュ・インタフェースのキャッシュ部分に対するプロセッサ読出しサイクルを示す、本発明の好適な実施例に従う論理フロー図である。
【図６】ＤＲＡＭとインタフェースするキャッシュ・インタフェースのキャッシュ部分に対するプロセッサ書込みサイクルを示す、本発明の好適な実施例に従う論理フロー図である。
【図７】本発明の好適な実施例に従い、インタフェースがＳＲＡＭに接続されるときの、キャッシュ・インタフェースのキャッシュ部分の回路図である。
【図８】本発明の好適な実施例に従い、インタフェースがＳＲＡＭに接続されるときの、キャッシュ・インタフェースのキャッシュ部分の回路図である。
【図９】本発明の好適な実施例に従い、インタフェースがＳＲＡＭに接続されるときの、キャッシュ・インタフェースのキャッシュ部分の回路図である。
【符号の説明】
１００  半導体パッケージ
１１０、１１５、５００  ＳＲＡＭキャッシュ
１２０、１２５、２００  ＤＲＡＭキャッシュ
１３０、１４０、９１０  プロセッサ
１３３、１３６、１４３、１４６、９０５  プロセッサ部分
１５０、１５５、１６０、１６６、２８５、９４８  バス
１８０、１８５、１９０、１９５、９６０  キャッシュ部分
２０１、５０１、９０３  キャッシュ・インタフェース
２０５  読出しアドレス
２１０、５１０  書込みアドレス・レジスタ
２１１、５０５  読出し・アドレス・レジスタ
２１５  マルチプレクサ
２２０、２２１、２２２、２２３  ＤＲＡＭキャッシュ・アレイ
２３０  制御論理
２３５  読出しバッファ
２４０、５５０、５５１  書込みバッファ
２４１、２４２  入力レジスタ
２５０、２５１、２５２、２５３、２５４、５６０、５６１、５６２、５６３  出力レジスタ
５２０  ＳＲＡＭアレイ
５２５  バースト論理
５８５  データ・バス
５９０  エコー・クロック
９２０  ＲＡＭタイプ
９３０  インタフェース・キャッシュ・スピード
９４０  ＲＡＭサイズ
９４５  クロック分周器
９４７  Ｌ２キャッシュ制御装置
９７０  ＳＲＡＭまたはＤＲＡＭ  Ｌ２キャッシュ
【図１】
0003629519.tif 000003
【図２】
0003629519.tif 000004
【図３】
0003629519.tif 000005
【図４】
0003629519.tif 000006
【図５】
0003629519.tif 000007
【図６】
0003629519.tif 000008
【図７】
0003629519.tif 000009
【図８】
0003629519.tif 000010
【図９】
0003629519.tif 000011