(57)【特許請求の範囲】
【請求項１】
タグを格納するタグ・キャッシュメモリと、
データを格納するデータ・キャッシュメモリと、
を含む複数ウエイのセット・アソシアティブ・キャッシュメモリを制御するキャッシュメモリ制御装置であって、
前記データ・キャッシュメモリを第１のクロック信号で駆動し、キャッシュアドレスとウエイ情報とをそれぞれ前記第１のクロック信号で同期させた第１のアドレス信号とデータウエイとを、前記データ・キャッシュメモリに供給する第１のクロック同期部と、
前記タグ・キャッシュメモリを第２のクロック信号で駆動し、前記キャッシュアドレスとウエイ情報とをそれぞれ前記第２のクロック信号で同期させた第２のアドレス信号とタグウエイとを、前記タグ・キャッシュメモリに供給する第２のクロック同期部と、
ＣＰＵのアクセスアドレスのうちタグに対応する所定のビットフィールドと、前記タグ・キャッシュメモリから読み出された各ウエイのタグと、を比較し一致／不一致を判定するアドレス比較部と、
を備え、
前記第２のクロック信号は、前記第１のクロック信号を予め定められた所定の逓倍数で逓倍したクロック信号であり、
前記タグ・キャッシュメモリの各ウエイからのタグの読み出し時間は、前記データ・キャッシュメモリの対応するウエイからのデータの読み出し時間よりも速められ、
前記タグ・キャッシュメモリ及び前記データ・キャッシュメモリの複数のウエイに対して所定の順番で順次読み出しを行い、
前記第２のクロック信号で駆動される前記タグ・キャッシュメモリの最初のウエイのタグの読み出しサイクルと、前記第１のクロック信号で駆動される前記データ・キャッシュメモリの最初のウエイのデータの読み出しサイクルとは、同一のタイミングで開始され、
前記データ・キャッシュメモリでは、与えられた前記第１のアドレス信号と前記データウエイとから、該当するウエイのデータ格納位置から、データを読み出し、
前記タグ・キャッシュメモリでは、与えられた前記第２のアドレス信号と前記タグウエイから該当するウエイのタグ格納位置からタグを読み出し、
前記データ・キャッシュメモリの最初に指定されたウエイから読み出しデータが出力されるサイクルよりも前に、前記タグ・キャッシュメモリから複数のウエイ分の複数のタグの読み出しが終了するようにした、キャッシュメモリ制御装置。
【請求項２】
タグを格納するタグ・キャッシュメモリと、
データを格納するデータ・キャッシュメモリと、
を含む２ウエイのセット・アソシアティブ・キャッシュメモリを制御するキャッシュメモリ制御装置であって、
前記データ・キャッシュメモリを第１のクロック信号で駆動し、キャッシュアドレスとウエイ情報とをそれぞれ前記第１のクロック信号で同期させた第１のアドレス信号とデータウエイとを、前記データ・キャッシュメモリに供給する第１のクロック同期部と、
前記タグ・キャッシュメモリを第２のクロック信号で駆動し、前記キャッシュアドレスとウエイ情報とをそれぞれ前記第２のクロック信号で同期させた第２のアドレス信号とタグウエイとを、前記タグ・キャッシュメモリに供給する第２のクロック同期部と、
ＣＰＵのアクセスアドレスのうちタグに対応する所定のビットフィールドと、前記タグ・キャッシュメモリから読み出された各ウエイのタグとを比較し一致／不一致を判定するアドレス比較部と、
を備え、
前記第２のクロック信号は、前記第１のクロック信号を２逓倍したクロック信号であり、
前記タグ・キャッシュメモリの各ウエイからのタグの読み出し時間は、前記データ・キャッシュメモリの対応するウエイからのデータの読み出し時間よりも速められ、
前記タグ・キャッシュメモリ及び前記データ・キャッシュメモリの２ウエイに対して所定の順番で順次読み出しを行い、
前記第２のクロック信号で駆動される前記タグ・キャッシュメモリの最初のウエイのタグの読み出しサイクルと、前記第１のクロック信号で駆動される前記データ・キャッシュメモリの最初のウエイのデータの読み出しサイクルとは、同一のタイミングで開始され、
前記データ・キャッシュメモリの最初に指定されたウエイから読み出しデータが出力されるサイクルよりも前に、前記タグ・キャッシュメモリから２ウエイ分のタグの読み出しが終了するようにした、キャッシュメモリ制御装置。
【請求項３】
前記ＣＰＵのアクセスアドレスのタグに対応する所定のビットフィールドと２つのウエイのタグとの一致・不一致を比較した結果、２番目のウエイで一致したことで、前記データ・キャッシュメモリに前記第１のクロック信号に同期して第１のアドレス信号、データウエイを与えて２番目のウエイからデータの読み出しを行う場合の前記読み出しを開始するタイミングは、前記データ・キャッシュメモリを前記第１のクロック信号で駆動した場合よりも時間的に速くなる、請求項２に記載のキャッシュメモリ制御装置。
【請求項４】
前記ＣＰＵのアクセスアドレスの所定の下位アドレスから前記キャッシュアドレスを生成するキャッシュアドレス生成部と、
前記アドレス比較部の比較結果、及び、前記ＣＰＵのアクセスアドレスの予め定められた所定の上位アドレスから、アクセスするウエイを決定するウエイ予測器と、
前記ウエイ予測器で決定されたウエイに対応して前記データウエイを生成するデータウエイ生成部と、
前記ウエイ予測器で決定されたウエイに対応して前記タグウエイを生成するタグウエイ生成部と、
前記タグ・キャッシュメモリの複数のウエイに対応して設けられ、読み出されたタグをそれぞれ格納する複数の第１のレジスタと、
前記データ・キャッシュメモリの複数のウエイに対応して設けられ、読み出されたデータをそれぞれ格納する複数の第２のレジスタと、
前記複数の第２のレジスタのデータから、前記アドレス比較部で一致したウエイのデータを選択するデータ選択部と、
を備え、
前記第１のクロック同期部は、前記キャッシュアドレス生成部からのキャッシュアドレスと、前記データウエイ生成部からのデータウエイとを、前記第１のクロック信号に同期させて、前記第１のアドレス信号と前記データウエイとして出力し、
前記第２のクロック信号は、前記第１のクロック信号を予め定められた所定の逓倍数で逓倍した信号であり、
前記第２のクロック同期部は、前記第２のクロック信号により、前記キャッシュアドレス生成部からの前記キャッシュアドレスと、前記タグウエイ生成部からの前記タグウエイとを同期させて、前記第２のアドレス信号と、前記タグウエイとして出力する、請求項１又は２に記載のキャッシュメモリ制御装置。
【請求項５】
請求項１乃至４のいずれか１項記載のキャッシュメモリ制御装置を備えたＣＰＵ。
【請求項６】
ＣＰＵとメインメモリに接続されるメモリコントローラであって、請求項１乃至４のいずれか１項記載のキャッシュメモリ制御装置を備えたメモリコントローラ。
【請求項７】
タグを格納するタグ・キャッシュメモリと、
データを格納するデータ・キャッシュメモリと、
を含む複数ウエイのセット・アソシアティブ・キャッシュメモリを制御するキャッシュメモリ制御方法であって、
前記データ・キャッシュメモリを第１のクロック信号で駆動し、キャッシュアドレスとウエイ情報とをそれぞれ第１のクロック信号で同期させた第１のアドレス信号とデータウエイとを、前記データ・キャッシュメモリに供給し、
前記タグ・キャッシュメモリを第２のクロック信号で駆動し、前記キャッシュアドレスとウエイ情報とをそれぞれ第２のクロック信号で同期させた第２のアドレス信号とタグウエイとを、前記タグ・キャッシュメモリに供給し、
ＣＰＵのアクセスアドレスのうちタグに対応する所定のビットフィールドと、前記タグ・キャッシュメモリから読み出された各ウエイのタグとを比較し一致／不一致を判定し、
前記第２のクロック信号は、前記第１のクロック信号を予め定められた所定の逓倍数で逓倍したクロック信号であり、
前記タグ・キャッシュメモリの各ウエイからのタグの読み出し時間は、前記データ・キャッシュメモリの対応するウエイからのデータの読み出し時間よりも速められ、
前記タグ・キャッシュメモリ及び前記データ・キャッシュメモリの複数のウエイに対して所定の順番で順次読み出しを行い、
前記第２のクロック信号で駆動される前記タグ・キャッシュメモリの最初のウエイのタグの読み出しサイクルと、前記第１のクロック信号で駆動される前記データ・キャッシュメモリの最初のウエイのデータの読み出しサイクルとは、同一のタイミングで開始され、
前記データ・キャッシュメモリでは、与えられた前記第１のアドレス信号と前記データウエイとから、該当するウエイのデータ格納位置から、データを読み出し、
前記タグ・キャッシュメモリでは、与えられた前記第２のアドレス信号と前記タグウエイから該当するウエイのタグ格納位置からタグを読み出し、
前記データ・キャッシュメモリの最初に指定されたウエイから読み出しデータが出力されるサイクルよりも前に、前記タグ・キャッシュメモリから複数のウエイ分の複数のタグの読み出しが終了するようにした、キャッシュメモリ制御方法。
【請求項８】
タグを格納するタグ・キャッシュメモリと、
データを格納するデータ・キャッシュメモリと、
を含む２ウエイ・セット・アソシアティブ・キャッシュメモリを制御するキャッシュメモリ制御方法であって、
前記データ・キャッシュメモリを第１のクロック信号で駆動し、キャッシュアドレスとウエイ情報とをそれぞれ第１のクロック信号で同期させた第１のアドレス信号とデータウエイとを、前記データ・キャッシュメモリに供給し、
前記タグ・キャッシュメモリを第２のクロック信号で駆動し、前記キャッシュアドレスとウエイ情報とをそれぞれ第２のクロック信号で同期させた第２のアドレス信号とタグウエイとを、前記タグ・キャッシュメモリに供給し、
ＣＰＵのアクセスアドレスのうちタグに対応する所定のビットフィールドと、前記タグ・キャッシュメモリから読み出された各ウエイのタグとを比較し一致／不一致を判定し、
前記第２のクロック信号は、前記第１のクロック信号を２逓倍したクロック信号であり、前記タグ・キャッシュメモリの各ウエイからのタグの読み出し時間は、前記データ・キャッシュメモリの対応するウエイからのデータの読み出し時間よりも速められ、
前記タグ・キャッシュメモリ及び前記データ・キャッシュメモリの２ウエイに対して所定の順番で順次読み出しを行い、
前記第２のクロック信号で駆動される前記タグ・キャッシュメモリの最初のウエイのタグの読み出しサイクルと、前記第１のクロック信号で駆動される前記データ・キャッシュメモリの最初のウエイのデータの読み出しサイクルとは、同一のタイミングで開始され、
前記データ・キャッシュメモリの最初に指定されたウエイからの読み出しデータが出力されるサイクルよりも前に、前記タグ・キャッシュメモリから２ウエイ分のタグの読み出しが終了する、キャッシュメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュ技術に関し、特に、キャッシュメモリを制御する装置と方法に関する。
【背景技術】
【０００２】
キャッシュメモリは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：中央処理装置）で高い頻度で使用されるデータを蓄積しておくことで、ＣＰＵからメインメモリへのアクセス回数を減らし高速化を図るために用いられる高速メモリである。キャッシュメモリは、通常、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ Ｍｅｍｏｒｙ：スタティックランダムアクセスメモリ）からなり、メインメモリを構成するＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：ダイナミックランダムアクセスメモリ）よりも高速である（アクセス時間が短い）。キャッシュメモリ制御装置は、ＣＰＵからキャッシュメモリへのアクセスを制御する。
【０００３】
ＣＰＵからキャッシュメモリへのアクセスを高速化するための手法の一つとして、キャッシュメモリ制御装置とキャッシュメモリ間のリード／ライト処理を駆動するクロックの周波数を高くする手法がある。
【０００４】
図６は、キャッシュメモリ制御装置とキャッシュメモリの典型的な接続構成の一例を示す図である。なお、特に制限されるものでないが、図６において、キャッシュメモリ制御装置１０’は、ＣＰＵに内蔵されているものとする。各キャッシュメモリは、クロック信号で駆動されるＳＳＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  ＳＲＡＭ：クロック同期型ＳＲＡＭ）で構成されている。４つのデータ・キャッシュメモリ２０Ａはデータを格納する。タグ・キャッシュメモリ２０Ｂは、タグ（アドレスの予め定められた所定のビットからＭＳＢ（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）側の上位ビット）を格納する。
【０００５】
キャッシュメモリ制御装置１０’は、４つのデータ・キャッシュメモリ２０Ａに、クロック１、アドレス１、データウエイの各信号を共通に供給し、４つのデータ・キャッシュメモリ２０Ａとの間でデータのパラレル入力／パラレル出力を行う。
【０００６】
キャッシュメモリ制御装置１０’は、タグ・キャッシュメモリ２０Ｂに対して、データ・キャッシュメモリ２０Ａと共通のクロック１、アドレス１を供給し、タグウエイを供給し、タグの入出力を行う。
【０００７】
図６の構成の場合、タグ・キャッシュメモリ２０Ｂに格納されるタグのビット幅に対して、データの入出力単位のビット幅が大きいため（例えば４倍）、１つのタグ・キャッシュメモリ２０Ｂに対して、４つのデータ・キャッシュメモリ２０Ａが並置されている。特に制限されないが、例えば、タグ・キャッシュメモリ２０Ｂが、ＣＰＵからの３２ビットのアドレス信号のうちの１６から３１ビットのビットフィールドをタグとして格納する場合、キャッシュメモリ制御装置１０’は、４つのデータ・キャッシュメモリ２０Ａとの間で、４×１６ビット＝６４ビット幅のデータを単位として入出力を行う。したがって、データのキャッシュラインサイズが１２８ビットの場合、キャッシュ制御装置１０’は、４つのデータ・キャッシュメモリ２０Ａとの間で、４×１６ビット＝６４ビット幅のデータのパラレル入出力を、時分割で、２回行うことで、１２８ビット幅のデータを取得する。
【０００８】
なお、図６の構成は、ｎ（ｎは例えば２、４、８等の整数）ウエイ・セット・アソシエイティブ方式とされる。ｎウエイ・セット・アソシエイティブ方式のキャッシュメモリは、各セットあたり、ｎウエイ（ウエイ０〜ウエイｎ−１）のブロックを有し、各ブロックは、キャッシュアクセス用のアドレス（インデックス）でアクセスされる。特に制限されないが、以下では、単に説明の都合で、２ウエイ・セット・アソシエイティブ方式のキャッシュメモリとするが、４、８ウエイ等のセット・アソシエイティブ方式のキャッシュメモリについても、２ウエイ（ウエイ０、１）を、４ウエイ（ウエイ０−３）、８ウエイ（ウエイ０−７）とすることで同様に説明される。
【０００９】
キャッシュメモリ制御装置１０’から４つのデータ・キャッシュメモリ２０Ａに共通に出力されるデータウエイと、アドレス１は、データ・キャッシュメモリ２０Ａをアクセスするためのアドレスを構成する。例えばデータウエイ信号を上位ビット、アドレス１を下位ビットとするアドレスにより、ウエイ０、ウエイ１内の該当ロケーション（データの格納エントリ）がアクセスされる。
【００１０】
タグ・キャッシュメモリ２０Ｂにおいて、キャッシュメモリ制御装置１０’から出力されるタグウエイと、アドレス１は、タグ・キャッシュメモリ２０Ｂをアクセスするアドレスを構成する。例えばタグウエイ信号を上位ビット、アドレス１を下位ビットとするアドレスにより、ウエイ０、ウエイ１の各ウエイのロケーション（タグの格納エントリ）がアクセスされる。
【００１１】
リードアクセス時、キャッシュメモリ制御装置１０’は、２つのウエイのうち先に読み出しを行うウエイ（ウエイ０又は１）に対応したタグウエイ、データウエイを出力し、ＣＰＵのアクセスアドレスの下位アドレスからキャッシュアクセス用のアドレス１を生成する。タグ・キャッシュメモリ２０Ｂにおいて、タグウエイとアドレス１とに基づき、指定されたウエイの該当アドレス（ロケーション）からタグが読み出され、キャッシュメモリ制御装置１０’は、読み出されたタグと、ＣＰＵのアクセスアドレスの上位アドレスとを比較し、一致・不一致を判定する。一致した場合、先に読み出しを行った方のウエイでヒットしているため、キャッシュメモリ制御装置１０’は、データ・キャッシュメモリ２０Ａの該当ウエイから読み出したデータ（例えば図６の４つのデータ・キャッシュメモリ２０Ａからパラレルに読み出み出されたデータ）をＣＰＵに転送する。あるいは、４つのデータ・キャッシュメモリ２０Ａからパラレルに読み出み出されたデータのうちＣＰＵのアクセスアドレスの所定の下位ビットで指定されたワードデータ又はバイトデータを選択してＣＰＵに転送する。
【００１２】
キャッシュメモリ制御装置１０’において、タグ・キャッシュメモリ２０Ｂから先に読み出しを行ったウエイのタグが、ＣＰＵのアクセスアドレスの上位アドレスと不一致の場合、次に読み出すウエイに対応したタグウエイ、データウエイを出力し、タグ・キャッシュメモリ２０Ｂの該当するウエイのアドレス（ロケーション）からタグを読み出してＣＰＵのアクセスアドレスの上位アドレスと比較し、一致・不一致を判定する。ここで、一致した場合、データ・キャッシュメモリ２０Ａの該ウエイから読み出されたデータ（例えば４つのデータ・キャッシュメモリ２０Ａからパラレルに読み出されたデータ）をＣＰＵに転送する。一方、タグ・キャッシュメモリ２０Ｂの２つのウエイの該当するアドレス（ロケーション）から読み出されたタグが、ＣＰＵのアクセスアドレスの上位アドレスといずれも不一致の場合には、キャッシュ・ミスヒットとなる。この場合、メインメモリからデータを読み出し、データ・キャッシュメモリ２０Ａの所定のウエイのアドレスにデータを格納してＣＰＵに転送し、タグ・キャッシュメモリ２０Ｂの該所定のウエイにタグ（アクセスアドレスの上位アドレス）を設定する。
【００１３】
ライトアクセス時、キャッシュメモリ制御装置１０’は、選択されたウエイのタグ・キャッシュメモリ２０Ｂのアドレスに、タグ（アクセスアドレスの上位アドレス）を格納し、データ・キャッシュメモリ２０Ａの当該ウエイの対応するロケーション（アドレス）にデータを書き込み、ライトスルー方式またはライトバック方式でメインメモリにデータを書き込む。
【００１４】
図７は、図６のキャッシュメモリ制御装置１０’の内部構成の一例を模式的に示す図である。なお、キャッシュメモリにおいて、ウエイ毎に、タグ、データ、フラグ（Ｖａｌｉｄフラグ等）が設けられているが、図７では、ウエイ毎のフラグ情報は省略されている。また、図７では、簡単のため、図６の４つのデータ・キャッシュメモリ２０Ａのうちの１つが模式図として例示されている。
【００１５】
図７において、ウエイ予測器１２は、アクセスに際してウエイの予測（決定）（最初にどのウエイから読み出すか、次にどのウエイを読み出すか等の決定）を行う。またウエイ予測器１２は、キャッシュ・ミスヒット時のウエイの予測を行う。ウエイの予測（決定）にあたり、ウエイ予測器１２は、例えば直前（最後）に選択されたウエイを選択する。また、ウエイの置き換えを行う場合、ウエイ予測器１２は、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）アルゴリズム等で決定される。
【００１６】
キャッシュアドレス生成部１３は、ＣＰＵ３０の予め定められた所定の下位アドレスから、キャッシュアドレス（インデックス）を生成し、アドレス１を出力する。
【００１７】
データウエイ生成部１４とタグウエイ生成部１５は、ウエイ予測器１２の出力（ウエイ情報）を共通に受け、データウエイ信号とタグウエイ信号をそれぞれ出力する。
【００１８】
クロック同期部１６は、例えばＣＰＵ３０のクロック生成部３１で生成されたクロック信号ＣＫを受け、クロック信号ＣＫの周波数を逓倍しキャッシュ駆動用の高速なクロック１を生成し、アドレス１、データウエイ、タグウエイを該クロック１に同期して、データ・キャッシュメモリ２０Ａ、タグ・キャッシュメモリ２０Ｂに供給し、該クロック１をデータ・キャッシュメモリ２０Ａ、タグ・キャッシュメモリ２０Ｂに共通に与える。
【００１９】
データ・キャッシュメモリ２０Ａにおいて、データウエイとアドレス１から、該当するウエイ内でのアドレスが生成される。タグ・キャッシュメモリ２０Ｂにおいて、タグウエイとアドレス１から、該当するウエイ内でのアドレスが生成される。アドレス１とタグウエイから、例えばタグ・キャッシュメモリ２０Ｂのウエイ０（ＴａｇＸ）内のタグ１のロケーションを指示するアドレスが生成され、アドレス１とデータウエイからデータ・キャッシュメモリ２０Ａのウエイ０（ＤａｔａＸ）内のデータ１のロケーションを指示するアドレスが生成され、タグ１、データ１の読み出しがそれぞれ行われる。
【００２０】
アドレス比較部１１−１／２では、タグ・キャッシュメモリ２０Ｂにおいて、ウエイ０とウエイ１から、それぞれ読み出されたタグ（タグＸ、タグＹ）を、ＣＰＵ３０のアクセスアドレスの所定の上位アドレス（上位アドレスのビットフィールド）と比較し、一致／不一致の比較結果を、ウエイ予測器１２とデータ選択部１９とＣＰＵ３０に供給する。
【００２１】
データ選択部１９は、データ・キャッシュメモリ２０Ａのウエイ０、１から読み出されたデータを受け、アドレス比較部１１−１／２からの比較結果（一致／不一致）に基づき、一致した方のウエイから読み出したデータを、ＣＰＵ３０に供給する。すなわち、アドレス比較部１１−１／２において、タグＸとタグＹのうちの一方と、ＣＰＵ３０からのアクセスアドレスの上位アドレスとが一致した場合、キャッシュ・ヒットとなり、データ・キャッシュメモリ２０Ａの読み出しデータＸ、データＹのうち、ヒットしたウエイから読み出されたデータが、データ選択部１９で選択され、ＣＰＵ３０に供給される。なお、キャッシュメモリがウエイを順番に指定して各ウエイから時分割で順次読み出す方式の場合、あるウエイ（例えばウエイ０）でキャッシュ・ヒットした場合、通常、残りのウエイ（例えばウエイ１）からのデータの読み出しは行われない。
【００２２】
また図７では、データ・キャッシュメモリ２０Ａから読み出され、データ選択部１９で選択されたデータがＣＰＵ３０に読み出しデータとして出力されているが、ＣＰＵ３０からのアクセスアドレスの下位ビットを選択信号として入力し、ワードデータを選択するセレクタ（不図示）を備え、読み出されたデータ（複数ワード、複数バイト長）から、ＣＰＵ３０のアクセスアドレスに対応するワードデータを選択する構成としてもよい。
【００２３】
図６、図７に示した構成において、データ・キャッシュメモリ２０Ａとタグ・キャッシュメモリ２０Ｂ、アドレス１、２、データウエイ、タグウエイは共通のクロック１で駆動される。
【００２４】
なお、特許文献１には、４ウエイ・セットアソシアティブ方式のキャッシュメモリのアドレスアレイコントローラと、データアレイコントローラに、クロック信号φ１、φ２（φ２はφ１と周波数は同一であり、φ１から所定の位相遅延している）を供給し、クロック周波数が高い場合において、アドレスアレイをクロックφ１で起動したのちアドレスアレイでのヒットチェックが確定する前の時刻に、クロックφ２でデータアレイの全てを起動し、ヒットチェックが確定したときに、データアレイ内のヒットしたウエイから読み出されたデータをデータ線に出力し、クロック周波数が低いときは、ヒットチェック完了後に、データアレイ内のヒットしたウエイのみを起動する構成とされる。すなわち、特許文献１では、クロック周波数が限界周波数よりもかなり高い場合、ヒットチェック完了時に、センスアンプによるデータの読み出し動作がほぼ完了し、クロック周波数が限界周波数よりも高い場合、センスアンプ起動前（データ読み出し前）にヒットチェックが完了する。低速動作の場合、データアレイ起動前に、ヒットチェックが確定しているため、ヒットした１つのウエイのみが動作することで消費電力を低減している。
【先行技術文献】
【特許文献】
【００２５】
【特許文献１】特開平９−５０４０３号公報
【発明の概要】
【発明が解決しようとする課題】
【００２６】
以下に関連技術の分析を与える。
【００２７】
図６に示した構成においては、データ・キャッシュメモリ２０Ａとタグ・キャッシュメモリ２０Ｂは共通のクロック１で駆動される。
【００２８】
キャッシュメモリ制御装置と、キャッシュメモリ間の信号の配線遅延や出力遅延のばらつき等により、データ・キャッシュメモリ２０Ａとタグ・キャッシュメモリ２０Ｂへのクロック１を等しく速くして高速動作させる手法では、タイミング・マージンの確保が困難となり、アクセス時間の短縮が限界となっている。
【００２９】
また、ＣＰＵからメインメモリへのアクセスの高速化のためのキャッシュメモリを、ＣＰＵの外部に構成する場合、キャッシュメモリ制御装置と、キャッシュメモリ間の動作速度に限界がある。
【００３０】
さらに、データを１２８ビット等の多ビットで構成する場合、キャッシュメモリとして機能するＳＳＲＡＭが複数必要となり（図６参照）、キャッシュメモリ制御装置と複数のＳＳＲＡＭ（複数のデータ・キャッシュメモリ２０Ａ）の間のタイミング設計（タイミングスキュー、データスキュー）が厳しくなる傾向にある。例えば図６において、キャッシュメモリ制御装置１０’と４個のデータ・キャッシュメモリ２０Ａ間のデータ信号、クロック信号等のスキューや、そのばらつき等を抑えることは、クロック１の高速化とともに困難となる。
【００３１】
そして、データ・キャッシュメモリ２０Ａとタグ・キャッシュメモリ２０Ｂとで、同じ速度（動作周波数）のクロックとアドレスを用いているため、タグ・キャッシュメモリのＳＳＲＡＭも、データ・キャッシュメモリと同一のタイミング設計とする必要があり、さらなる高速化に限界となっている。
【００３２】
したがって、本発明の目的は、タイミング・マージンを確保しつつ、高速化を可能としキャッシュメモリのアクセス時間の短縮を可能とするキャッシュメモリ制御装置と方法を提供することにある。
【課題を解決するための手段】
【００３３】
前記課題の少なくとも１つを解決するため、本発明が概略以下の構成とされる。
【００３４】
本発明の１つの側面によれば、タグを格納するタグ・キャッシュメモリと、データを格納するデータ・キャッシュメモリと、を含む複数ウエイのセット・アソシアティブ・キャッシュメモリを制御するキャッシュメモリ制御装置であって、前記データ・キャッシュメモリを第１のクロック信号で駆動し、キャッシュアドレスとウエイ情報とをそれぞれ第１のクロック信号で同期させた第１のアドレス信号とデータウエイとを、前記データ・キャッシュメモリに供給する第１のクロック同期部と、前記タグ・キャッシュメモリを第２のクロック信号で駆動し、前記キャッシュアドレスとウエイ情報とをそれぞれ第２のクロック信号で同期させた第２のアドレス信号とタグウエイとを、前記タグ・キャッシュメモリに供給する第２のクロック同期部と、ＣＰＵのアクセスアドレスのうちタグに対応する所定のビットフィールドと、前記タグ・キャッシュメモリから読み出されたタグとを比較し一致／不一致を判定するアドレス比較部と、を備え、前記第２のクロック信号の周波数は前記第１のクロック信号の周波数よりも高く設定され、前記タグ・キャッシュメモリの各ウエイからのタグの読み出し時間は、前記データ・キャッシュメモリの対応するウエイからのデータの読み出し時間よりも速められ、前記タグ・キャッシュメモリ及び前記データ・キャッシュメモリの複数のウエイに対して所定の順番で順次読み出しを行い、前記データ・キャッシュメモリの一のウエイからデータが読み出される前に、前記タグ・キャッシュメモリの複数のウエイからのタグの読み出しが完了するように制御するキャッシュ制御装置が提供される。
【００３５】
本発明の他の側面によれば、タグを格納するタグ・キャッシュメモリと、データを格納するデータ・キャッシュメモリと、を含む複数ウエイのセット・アソシアティブ・キャッシュメモリを制御するキャッシュメモリ制御方法であって、
前記データ・キャッシュメモリを第１のクロック信号で駆動し、キャッシュアドレスとウエイ情報とをそれぞれ第１のクロック信号で同期させた第１のアドレス信号とデータウエイとを、前記データ・キャッシュメモリに供給し、
前記タグ・キャッシュメモリを第２のクロック信号で駆動し、前記キャッシュアドレスとウエイ情報とをそれぞれ第２のクロック信号で同期させた第２のアドレス信号とタグウエイとを、前記タグ・キャッシュメモリに供給し、
ＣＰＵのアクセスアドレスのうちタグに対応する所定のビットフィールドと、前記タグ・キャッシュメモリから読み出されたタグとを比較し一致／不一致を判定し、
前記第２のクロック信号の周波数を前記第１のクロック信号の周波数よりも高く設定し、前記タグ・キャッシュメモリの各ウエイからのタグの読み出し時間は、前記データ・キャッシュメモリの対応するウエイからのデータの読み出し時間よりも速められ、前記タグ・キャッシュメモリ及び前記データ・キャッシュメモリの複数のウエイに対して所定の順番で順次読み出しを行い、前記データ・キャッシュメモリの一のウエイからデータが読み出される前に、前記タグ・キャッシュメモリの複数のウエイからのタグの読み出しが完了するように制御するキャッシュメモリ制御方法が提供される。
【発明の効果】
【００３６】
本発明によれば、タイミング・マージンを確保しつつ高速化することで、キャッシュメモリのアクセス時間を短縮することができる。
【図面の簡単な説明】
【００３７】
【図１】本発明の例示的な一実施形態の構成を示す図である。
【図２】本発明の例示的な一実施形態のキャッシュメモリ制御装置の内部構成を示す図である。
【図３】本発明の例示的な一実施形態のタイミング動作の一例を示すタイミング図である。
【図４】本発明の一実施形態のシステム構成の一例を示す図である。
【図５】本発明の一実施形態のシステム構成の別の例を示す図である。
【図６】関連技術としてキャッシュメモリとキャッシュメモリ制御装置の典型的な構成の一例を示す図である。
【図７】関連技術のキャッシュメモリ制御装置の内部構成の一例を示す図である。
【図８】関連技術のタイミング動作の一例を示すタイミング図である。
【発明を実施するための形態】
【００３８】
本発明の一つの態様によれば、キャッシュメモリ制御装置において、タグ・キャッシュメモリを駆動するクロックとアドレスを、データ・キャッシュメモリを駆動するクロックとアドレスから分離し、タグ・キャッシュメモリに対するアクセスを高速化することで、キャッシュメモリへのアクセス時間を短縮する。本発明の一つの態様においては、複数ウエイ（ｎウエイ、ｎは２、４、８・・のうちの所定の整数）のセット・アソシアティブ・キャッシュメモリを制御するキャッシュメモリ制御装置は、データ・キャッシュメモリ（２０Ａ）を第１のクロック信号（クロック１）で駆動し、キャッシュアドレスとウエイ情報とをそれぞれ第１のクロック信号で同期させた第１のアドレス信号(アドレス)１とデータウエイとを、前記データ・キャッシュメモリに供給する第１のクロック同期部（１６Ａ）と、タグ・キャッシュメモリ（２０Ｂ）を第２のクロック信号（クロック２）で駆動し、前記キャッシュアドレスとウエイ情報とをそれぞれ第２のクロック信号で同期させた第２のアドレス信号（アドレス２）とタグウエイとを、前記タグ・キャッシュメモリに供給する第２のクロック同期部（１６Ｂ）と、ＣＰＵのアクセスアドレスのうちタグに対応する所定のビットフィールドと、前記タグ・キャッシュメモリから読み出されたタグとを比較し一致／不一致を判定するアドレス比較部（１１−１／２）と、を備え、前記第２のクロック信号（クロック２）の周波数は前記第１のクロック信号（クロック１）の周波数よりも高く設定され、前記タグ・キャッシュメモリ（２０Ｂ）の各ウエイからのタグの読み出し時間は、前記データ・キャッシュメモリ（２０Ａ）の対応するウエイからデータの読み出し時間よりも短縮され、前記タグ・キャッシュメモリ（２０Ｂ）及び前記データ・キャッシュメモリ（２０Ａ）の複数のウエイに対して所定の順番で順次読み出しを行い、前記データ・キャッシュメモリ（２０Ａ）の一のウエイからデータが読み出される前に、前記タグ・キャッシュメモリ（２０Ｂ）の複数のウエイからのタグの読み出しが完了するように制御する。
【００３９】
本発明の一つの態様によれば、かかる構成により、タグ・キャッシュメモリのタイミング設計を、データ・キャッシュメモリから独立させることができる。また、タグ・キャッシュメモリをキャッシュメモリ制御装置の近くに配置することが可能となり、クロック周波数を上げることが可能となる。
【００４０】
タグ・キャッシュメモリを駆動するクロック信号の周波数を高速にしても、データ・キャッシュメモリは、タグ・キャッシュメモリを駆動するクロック信号よりも低速のクロック信号で駆動すればよいことから、複数のデータ・キャッシュメモリの信号配線遅延、出力遅延、スキュー等のタイミング・マージンを緩和し、タイミング設計を容易化している。またキャッシュメモリ制御装置の近くに配置されるタグ・キャッシュメモリでの信号の配線遅延や出力遅延は、データ・キャッシュメモリとは別個に、そのタイミング設計時点で考慮すればよい。このように、タグ・キャッシュメモリの動作クロックを速くすることによって、キャッシュメモリアクセス全体の高速化を実現可能としている。以下、実施形態に即して説明する。
【００４１】
図１は、本発明の一実施形態の構成を示す図である。図１は、キャッシュメモリ制御装置とキャッシュメモリの接続構成の一例が示されている。特に制限されないが、キャッシュメモリ制御装置１０は、図４に示すように、ＣＰＵ３０内部に構成される。なお、図１において、図６の要素と同一又は同等の要素には同一の参照番号が付されている。
【００４２】
各キャッシュメモリ２０Ａ、２０Ｂは、ＳＳＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  ＳＲＡＭ）で構成され、データを格納する４つのデータ・キャッシュメモリ２０Ａと、タグを格納するタグ・キャッシュメモリ２０Ｂを備えている。各キャッシュメモリ２０Ａ、２０Ｂは図６の構成と同一である。
【００４３】
図１を参照すると、本実施形態においては、図６と相違して、キャッシュメモリ制御装置１０は、４つのキャッシュメモリ２０Ａに、クロック１、アドレス１、データウエイの各信号を共通に供給し、４つのデータ・キャッシュメモリ２０Ａの共通に指定されたウエイと、データの入出力をパラレルに行う。
【００４４】
キャッシュメモリ制御装置１０は、タグ・キャッシュメモリ２０Ｂに、クロック２、アドレス２、タグウエイを供給し、タグの入出力を行う。タグ・キャッシュメモリ２０Ｂのクロック２とアドレス２を、データ・キャッシュメモリ２０Ａのクロック１とアドレス１と分離し、タグ・キャッシュメモリ２０Ｂをクロック１よりも高速なクロック２で駆動する。
【００４５】
図１において、タグ・キャッシュメモリ２０Ｂに格納されるタグのビット幅に対して、データのキャッシュラインのビット幅が大きいため、１つのタグ・キャッシュメモリ２０Ｂに対し、４つのデータ・キャッシュメモリ２０Ａが並置されている。特に制限されないが、図１の構成は、２ウエイ・セット・アソシエイティブ方式のキャッシュメモリとする。
【００４６】
キャッシュメモリ制御装置１０から、データ・キャッシュメモリ２０Ａに出力されるデータウエイとアドレス１で、指定されたウエイにおけるインデックス（データを格納したロケーション）を指定する。タグ・キャッシュメモリ２０Ｂに出力されるタグウエイとアドレス２で、指定されたウエイにおけるインデックス（タグを格納したロケーション）を指定する。
【００４７】
ＣＰＵのリードアクセス時、キャッシュメモリ制御装置１０は、ＣＰＵのアクセスアドレスからキャッシュアクセス用のアドレスを生成し、タグ・キャッシュメモリ２０Ｂからタグを読み出す。その際、タグ・キャッシュメモリ２０Ｂに供給されるクロック２、アドレス２は、データ・キャッシュメモリ２０Ａに供給されるクロック１、アドレス１よりも高速であるため（クロック２はクロック１の周波数を例えば２逓倍したもの）、タグ・キャッシュメモリ２０Ｂにおいて、ウエイからのタグの読み出しは、データの読み出し時間よりも短時間に行われる。例えばウエイ０のデータ０が出力される前に、ウエイ０のタグが読み出され、読み出されたタグと、ＣＰＵからの所定の上位アドレスとを比較することで、キャッシュのヒット／ミスヒットを判定する。
【００４８】
キャッシュメモリ制御装置１０は、タグ・キャッシュメモリ２０Ｂのウエイ０又はウエイ１のタグが、ＣＰＵからの所定の上位アドレスと一致した時（キャッシュヒット時）には、データ・キャッシュメモリ２０Ａの該当ウエイから読み出されたデータ（キャッシュラインデータ又は、下位ビットアドレスで指定されたワードデータ）をＣＰＵに転送する。ミスヒット時（ウエイ０、１のいずれのタグも、ＣＰＵからの所定の上位アドレスと不一致の場合）には、不図示のメインメモリにアクセスしてデータを読み出し、データ・キャッシュメモリ２０Ａの所定のウエイのアドレスにデータを格納し、タグ・キャッシュメモリ２０Ｂにタグを設定し、ＣＰＵに転送する。ＣＰＵからのライトアクセス時に、選択されたウエイのタグ・キャッシュメモリの該当アドレスにタグを格納し、データキャッシュの該当ウエイの該当アドレスにデータを書き込み、ライトスルー方式またはライトバック方式でメインメモリにデータを書き込む。
【００４９】
図２は、図１の２ウエイ・セット・アソシエイティブ方式のキャッシュメモリ制御装置１０の構成の一例を模式的に示す図である。なお、図２のキャッシュメモリにおいて、ウエイ毎に、タグ、データ、フラグが設けられるが、フラグ情報は省略されている。
【００５０】
ウエイ予測器１２は、ウエイを選択する。キャッシュアドレス生成部１３は、ＣＰＵの下位アドレスから、キャッシュアドレスを生成して出力する。データウエイ生成部１４は、タグウエイ生成部１５は、ウエイ予測器１２の出力を受け、データウエイ、タグウエイを出力する。
【００５１】
第１のクロック同期部１６Ａは、ＣＰＵ３０のクロック生成部３１からのクロック信号ＣＫを受け、該クロック信号の周波数を逓倍し、データ・キャッシュメモリ２０Ａ駆動用の高速のクロック１（第１のクロック信号）を生成する。また、第１のクロック同期部１６Ａは、キャッシュアドレス生成部１３から出力されるキャッシュアドレスと、ウエイ予測器１２で決定されたウエイ情報を入力し、該クロック１に同期して、アドレス１（第１のアドレス信号）とデータウエイを、データ・キャッシュメモリ２０Ａに出力し、該クロック１を、データ・キャッシュメモリ２０Ａに与える。データ・キャッシュメモリ２０Ａは、第１のクロック同期部１６Ａからのクロック１で駆動される。
【００５２】
第２のクロック同期部１６Ｂは、クロック１の周波数を予め定められた逓定数（例えば２）で逓倍したクロック２（第２のクロック信号）を生成し、キャッシュアドレス生成部１３から出力されるキャッシュアドレスと、ウエイ予測器１２で決定されたウエイ情報を入力し、該クロック１に同期して、アドレス２（第２のアドレス信号）とタグウエイをタグ・キャッシュメモリ２０Ｂに供給し、該クロック２をタグ・キャッシュメモリ２０Ｂに与える。タグ・キャッシュメモリ２０Ｂは該クロック２で駆動される。
【００５３】
アドレス比較部１１−１／２は、タグ・キャッシュメモリ２０Ｂのウエイ０、１から読み出されたタグＸ、Ｙ（レジスタ１７−１／２に格納される）を、ＣＰＵ３０からのアクセスアドレスの上位アドレス（タグに対応する上位のビットフィールド）と比較し、一致・不一致を判定する。そして、一致・不一致の比較結果を、ウエイ予測器１２と、ＣＰＵ３０とデータ選択部１９に供給する。
【００５４】
データ選択部１９は、データ・キャッシュメモリ２０Ａのウエイ０、１から読み出されたデータを受け、アドレス比較部１１−１／２からの比較結果に基づき、一致した方のウエイから読み出したデータを、ＣＰＵ３０に供給する。すなわち、アドレス比較部１１−１／２において、タグＸとタグＹのうちの一方と、ＣＰＵ３０からのアクセスアドレスの上位アドレスが一致した場合、キャッシュヒットとなり、データ・キャッシュメモリ２０Ａの読み出しデータＸ、データＹのうち、ヒットしたウエイから読み出されたデータが、データ選択部１９で選択され、ＣＰＵ３０に供給される。なお、特に制限されないが、ここでは、キャッシュメモリは、指定された順番でウエイからタグ、データを順次読み出す方式とされ、あるウエイ（例えばウエイ０）でヒットした場合、残りのウエイ（例えばウエイ１）からのデータの読み出しは行われない。
【００５５】
なお、図２においてレジスタ１７−１／２は、クロック２をサンプリングクロックとして、タグ・キャッシュメモリ２０Ｂからの読み出しデータＴａｇＸ、ＴａｇＹをキャプチャする。一方、レジスタ（データレジスタ）１８−１／２は、クロック１をサンプリングクロックとして、データ・キャッシュメモリ２０Ａからの読み出しデータ、データＹをキャプチャする。
【００５６】
なお、図２では、簡単のため、データ・キャッシュメモリ２０Ａから読み出されデータ選択部１９で選択されたキャシュラインのデータがそのままＣＰＵ３０に読出しデータとして出力されているが、読み出されたキャッシュラインからワードデータを選択するセレクタを備え、アクセスアドレスに対応するワードデータをＣＰＵ３０に供給する構成としてもよい。
【００５７】
以下、図２の回路動作の説明を行う。キャッシュメモリ制御装置１０にＣＰＵ３０が必要とするデータのアクセスアドレスが入力されると、上位アドレスと下位アドレスに分離される。
【００５８】
キャッシュアドレス生成部１３は、ＣＰＵ３０のアクセスアドレスの下位アドレスから、タグ・キャッシュメモリ２０Ｂとデータ・キャッシュメモリ２０Ａのアドレスを生成する。
【００５９】
ウエイ予測器１２で選択されたウエイの情報から、データウエイ生成部１４は、データウエイを生成し、タグウエイ生成部１４はタグウエイを生成する。ウエイ予測器１２において、ウエイ０と１のどちらを先にリードするかは、直前（最後）に選択されたウエイを選択する等の条件で決定するが、ここでは、ウエイの０を先に選択したと仮定する。
【００６０】
ウエイ０は、タグウエイ０のＴａｇＸと、データウエイ０のＤａｔａＸのメモリ領域に格納されている。また、ウエイ１は、タグウエイ１のＴａｇＹと、データウエイ１のＤａｔａＹのメモリ領域に格納されている。
【００６１】
キャッシュアドレス生成部１３、データウエイ生成部１４で生成されたアドレス、データウエイは、第１のクロック同期部１６Ａで、キャッシュメモリをアクセスするためのクロック１（ＣＰＵ３０のクロック生成部３１からのクロックＣＫを逓倍したクロック）と同期され、アドレス１、データウエイとして出力され、最初のアドレスサイクルで、データウエイの０に格納されるＤａｔａＸのリード動作を実行する。
【００６２】
キャッシュアドレス生成部１３、タグウエイ生成部１５で生成されたアドレス、タグウエイは、第２のクロック同期部１６Ｂで、キャッシュメモリをアクセスするためのクロック２（クロック１を逓倍したクロック）と同期され、アドレス２、タグウエイとして出力され、最初のアドレスサイクルで、タグウエイの０に格納されるＴａｇＸ、タグウエイの１に格納されるＴａｇＹのリード動作を実行する。
【００６３】
このようなリード動作で読み出されたデータは、キャッシュメモリ制御装置１０のデータＸ、データＹを格納するレジスタ１８−１／２に格納され、タグはタグＸ、タグＹを格納するレジスタ１７−１／２に格納される。
【００６４】
データ・キャッシュメモリに、ＣＰＵ３０が必要とするデータが格納されているか否かは、タグ・キャッシュメモリ２０Ｂに格納されたタグであるＴａｇＸ、ＴａｇＹをリードし、アドレス比較部１１−１／２でＣＰＵのアクセスアドレスの上位アドレスとの一致・不一致をチェックすることによって判断される。
【００６５】
ＴａｇＸ、ＴａｇＹには、ＣＰＵ３０が必要とするデータのアクセスアドレスの上位アドレスが格納されている可能性があり、ＣＰＵ３０からのアクセスアドレスが入力された時に、分離した上位アドレスとＴａｇＸが一致する場合には、ＤａｔａＸに、ＣＰＵ３０が必要とするデータが格納されている、分離した上位アドレスと、ＴａｇＹが一致する場合は、ＤａｔａＹにＣＰＵが必要とするデータが格納されている。
【００６６】
ＣＰＵ３０のアクセスアドレスの上位アドレスが、ＴａｇＸ、ＴａｇＹの両方と不一致の場合、データ・キャッシュメモリ２０Ａには、ＣＰＵ３０が必要とするデータが格納されていないことになる。すなわち、アドレス比較部１１−１／２の出力がともに不一致の場合、不図示のメインメモリからデータが読み出され、ウエイ予測器１２で指定されたウエイの、該当アドレスに、メインメモリからの読み出しデータが格納され、タグ・キャッシュメモリの当該ウエイの該当アドレス（アドレス１とデータウエイ信号で指示される格納位置）に、ＣＰＵのアクセスアドレスの上位アドレス（タグアドレス）が格納され、該読み出しデータは、ＣＰＵ３０に供給される。
【００６７】
図３は、図１、図２を参照して説明した本発明の一実施形態のキャッシュメモリのリードのタイミング動作の一例を示す図である。図３には、図２のウエイ予測器１２の制御よりウエイ０、ウエイ１の順で、タグＴａｇＸ、ＴａｇＹを読み出し、ＣＰＵの上位アドレス（タグアドレス）とのアドレス比較の結果、ウエイ０のＴａｇＸは不一致、ウエイ１のＴａｇＹが一致した場合の動作が示されている。なお、図３において、キャッシュメモリのリード動作とクロックサイクルの関係（レーテンシ等）は理解を容易とするために模式的に表されている。また、図３では、説明の簡単のため、データがクロックの立ち上がりエッジに同期して出力される構成とされているが、ＳＳＲＡＭにおいて立ち上がりエッジと立ち下がりエッジ等に同期してデータが転送されるＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）型等であってもよいことは勿論である。
【００６８】
図３に示す例では、図２の第２のクロック同期部１６Ｂから出力されるクロック２は、第１のクロック同期部１６Ａから出力されるクロック１の２倍の周波数とし（クロック２はクロック１を２逓倍した信号）、タグ・キャッシュメモリ２０Ｂは、データ・キャッシュメモリ２０Ａよりも２倍高速に動作する。クロック１の立ち上がりエッジと立ち下がりエッジは、クロック２の立ち上がりエッジに同期している。
【００６９】
図３において、データ・キャッシュメモリ２０Ａでは、アドレス１とデータウエイとにより、データアクセス用のアドレスが生成され、タグ・キャッシュメモリ２０Ｂでは、アドレス２とタグウエイとからタグのアクセス用アドレスが生成される。
【００７０】
タグ・キャッシュメモリ２０Ｂには、時刻ｔ０から始まるクロック２の第１のサイクルにおいて、クロック２の立ち上がりエッジに同期して、アドレス２のＡｄｄｒ０と、タグウエイ（ウエイ０）ＴｗａｙＸ、次の第２のサイクルにおいて、クロック２の立ち上がりエッジに同期して、アドレス２のＡｄｄｒ１とタグウエイ（ウエイ１）ＴｗａｙＹが入力され、タイミングｔ１からｔ２のクロック２の第３、第４のサイクルにおいて、ウエイ０、ウエイ１からの読み出しデータであるタグＴａｇＸ、ＴａｇＹが順次読み出され、レジスタ１７−１、１７−２に保持される。本実施形態によれば、図６、図７のようにタグ・キャッシュメモリをクロック１で駆動する比較例（図８を参照して後述される）よりも、ＴａｇＸ、ＴａｇＹの読み出しが速くなる。
【００７１】
一方、データ・キャッシュメモリ２０Ａには、タイミングｔ０から始まるクロック１の第１のサイクルに、クロック１の立ち上がりエッジに同期して、アドレス１のＡｄｄｒ０とデータウエイ（ウエイ０）ＤｗａｙＸが入力され、タイミングｔ１から始まるクロック１の第２のサイクルに、クロック１の立ち上がりエッジに同期して、アドレス１のＡｄｄｒ１とデータウエイ（ウエイ０）ＤｗａｙＸが入力される。
【００７２】
そして、タイミングｔ２、ｔ３から始まるクロック１の第３、第４のサイクル（クロック２の５、７番目のサイクルに該当する）に、データ・キャッシュメモリ２０ＡのＤｗａｙＸ（ウエイ０）からの読み出しデータであるＤａｔａＸ０、ＤａｔａＸ１が順次出力される。本実施形態では、ＴａｇＸ、ＴａｇＹの読み出しは、タイミングｔ２からＤａｔａＸ０、ＤａｔａＸ１の読み出しサイクル前の完了している。なお、図３に示す例では、データ・キャッシュメモリ２０Ａから読み出されるデータは、タグ・キャッシュメモリ２０Ｂから読み出されるタグよりもビット幅が大であり、２回に分けて順次時分割で読み出され、ＤａｔａＸ０、ＤａｔａＸ１は、１個のキャッシュメモリ２０Ａに格納されるデータ単位を構成している。図２のレジスタ１８−１に、ＤａｔａＸ０、ＤａｔａＸ１が保持される。
【００７３】
アドレス比較部１１−１／２で、ＣＰＵの上位アドレスとの比較が行われ、ウエイ０のタグＴａｇＸは不一致、ウエイ１のタグＴａｇＹは一致（キャッシュヒット）していることが判別される。アドレス比較部１１−１／２での比較結果を受け、ウエイ予測器１２、キャッシュアドレス生成部１３、データウエイ生成部１４から、アドレス１のＡｄｄｒ０、Ａｄｄｒ１、データウエイＤｗａｙＹが生成され、データ・キャッシュメモリ２０Ａに供給される（タイミングｔｎ〜ｔｎ＋１）。
【００７４】
そして、データ・キャッシュメモリ２０Ａのウエイ１からの読み出しデータであるＤａｔａＹ０、ＤａｔａＹ１が順次出力され（タイミングｔｎ＋２〜ｔｎ＋４）、図２のレジスタ１８−２に、ＤａｔａＹ０、ＤａｔａＹ１が保持される。
【００７５】
このように、本実施形態においては、最初に読み出されたウエイ０のＴａｇＸがＣＰＵのアクセスアドレスの上位アドレスと一致しない場合には、ただちに、ウエイ１のＴａｇＹのチェックを実行し、ＴａｇＹが該上位アドレスと一致した場合、ウエイ１のデータを、データ・キャッシュメモリ２０Ａから読み出す。データ・キャッシュメモリ２０Ａのウエイ１（Ｄｗａｙ１）から読み出されたデータＤａｔａＹ０、ＤａｔａＹ１は、レジスタ１８−２から、データ選択部１９を介して、ＣＰＵ３０に転送される。
【００７６】
なお、ＴａｇＹが上位アドレスと不一致の場合（したがってＴａｇＸ、ＴａｇＹとも不一致の場合）、キャッシュ・ミスヒットとなり、メインメモリ（図４の５０）からの読み出しが行われ、読み出しデータが、ウエイ予測器で選択されたウエイの該当アドレスに書き込まれ、タグが選択されたウエイの該当アドレスに書き込まれる。タグのタグ・キャッシュメモリへの書き込みはクロック２で駆動される。
【００７７】
本実施形態では、タグ・キャッシュメモリ２０Ｂのクロック信号入力をクロック２、アドレス信号入力をアドレス２とすることにより、データ・キャッシュメモリと分離させ、タグ・キャッシュメモリ２０Ｂのアクセス速度を高速化することを実現させる。
【００７８】
また、本実施形態によれば、ＴａｇＸのウエイ予測が一致しなかった場合に実行するＴａｇＹのチェック実行タイミングを、時間的に速めることにより、ＤａｔａＹ０とＤａｔａＹ１をリード開始するまでの時間を短縮している。
【００７９】
比較例として、図８に、図６、図７を参照して説明した関連技術のリード時のタイミングを示す。図８には、図３と同様、ウエイ０、１の順でタグ・キャッシュメモリ２０ＢからタグＴａｇＸ、ＴａｇＹを順次リードし、ウエイ０のＴａｇＸで不一致、ウエイ１のＴａｇＹで一致した場合の動作が示されている。
【００８０】
データ・キャッシュメモリ２０Ａ、タグ・キャッシュメモリ２０Ｂには、タイミングｔ０から始まる第１のサイクルに、クロック１の立ち上がりエッジに同期して、アドレス１のＡｄｄｒ０と、データウエイＤｗａｙＸ、タグウエイＴｗａｙＸが入力され、タイミングｔ１から始まる第２のサイクルに、クロック１の立ち上がりエッジに同期して、アドレス１のＡｄｄｒ１と、データウエイＤｗａｙＸ、タグＴｗａｙＹが入力される。
【００８１】
データ・キャッシュメモリ２０Ａ、タグ・キャッシュメモリ２０Ｂからは、タイミングｔ２、ｔ３から始まる第３、第４のサイクルに、ウエイ０のデータＤａｔａＸ０、ＤａｔａＸ１、ウエイ０、ウエイ１から読み出されたタグＴａｇＸ、ＴａｇＹが出力される。なお、図３と同様、データ・キャッシュメモリ２０Ａから読み出されるデータは、タグ・キャッシュメモリ２０Ｂから読み出されるタグよりもビット幅が大であり、２回に分けて時分割で読み出され、ＤａｔａＸ０、ＤａｔａＸ１は、キャッシュライン（ブロック）を構成している。
【００８２】
タイミングｔ４以降、ウエイ１のＴａｇＹとＣＰＵの上位アドレスとの一致の結果を受け、ウエイ予測器１２、キャッシュアドレス生成部１３、データウエイ生成部１４で、アドレス１データウエイＤｗａｙＹが生成され、タイミングｔｎ＋２から、ウエイ１のアドレス、データウエイがデータキャッシュに出力され、タイミングｔｎ＋４からデータＤａｔａＹ０、ＤａｔａＹ１が順次出力される。
【００８３】
図３に示した本実施形態では、タイミングｔｎからウエイ１のアドレス、データウエイがデータ・キャッシュメモリ２０Ａに出力され、タイミングｔｎ＋２から、読み出しデータＤａｔａＹ０、ＤａｔａＹ１が出力され、図８の比較例よりも、ＤａｔａＹ０、ＤａｔａＹ１読み出しが早くなる。すなわち、クロック１の２クロックサイクル分、時間を短縮し、キャッシュメモリのアクセス時間を高速化している。
【００８４】
また本実施形態によれば、タグ・キャッシュメモリ２０Ｂを、クロック１の２逓倍クロックであるクロック２で駆動しているため、タグ・キャッシュメモリ２０Ｂの読み出し時間のほか、更新（書き込み）時間も高速化している。
【００８５】
本実施形態において、キャッシュメモリへの書き込み動作は、タグ・キャッシュメモリ２０Ｂへの書き込み動作がクロック２で行われる他は、図６、図７の関連技術と同一である。
【００８６】
前述したように、本実施形態では、図４に示すように、キャッシュメモリ制御装置１０がＣＰＵ３０内部に構成され、キャッシュメモリ２０に接続される。ＣＰＵ３０は、メインメモリ制御装置（メモリコントローラ）４０を介して、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）からなるメインメモリ５０に接続される。
【００８７】
あるいは、図５に示すように、キャッシュメモリ制御装置１０は、ＣＰＵ３０の外部、例えばメインメモリ制御装置（メモリコントローラ）４０内部に組み込む構成としてもよい。この場合、ＣＰＵ３０は、メインメモリ制御装置４０内のキャッシュ制御装置１０を介してキャッシュメモリ２０にアクセスする。
【００８８】
なお、上記実施形態では、２ウエイ・セットアソシアティブ方式のキャッシュメモリを例に本発明を説明したが、ｎウエイ（ｎは４、８・・・の整数）のセットアソシアティブ方式のキャッシュメモリについても同様にして適用できることは勿論である。この場合、図３において、クロック２はクロック１をｎ逓倍したクロック信号としてもよい。
【００８９】
本発明は、ＰＣや交換機等、キャッシュメモリを制御する機能を有する装置に適用可能である。
【００９０】
なお、上記の特許文献１の開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【００９１】
１０、１０’  キャッシュメモリ制御装置
１１−１、１１−２  アドレス比較部
１２  ウエイ予測器
１３  キャッシュアドレス生成部
１４  データウエイ生成部
１５  タグウエイ生成部
１６、１６Ａ、１６Ｂ  クロック同期部
１７−１  ＴａｇＸ（レジスタ）
１７−２  ＴａｇＹ（レジスタ）
１８−１  データＸ
１８−２  データＹ
１９  データ選択部
２０  キャッシュメモリ
２０Ａ  データ・キャッシュメモリ
２０Ｂ  タグ・キャッシュメモリ
３０  ＣＰＵ
３１  クロック生成部
４０  メインメモリ制御装置
５０  メインメモリ
【図１】
0005565864.tif 000002
【図２】
0005565864.tif 000003
【図３】
0005565864.tif 000004
【図４】
0005565864.tif 000005
【図５】
0005565864.tif 000006
【図６】
0005565864.tif 000007
【図７】
0005565864.tif 000008
【図８】
0005565864.tif 000009