(57)【要約】【課題】データキャッシュメモリへのクロック供給を止めて、消費電力の削減を図る。【解決手段】データメモリ部と、データメモリ部のラインと対応付けられたライン毎に、タグアドレスと、タグアドレスに対応するデータメモリ部のデータの状態を示すステート情報とを保持するタグメモリ部と、タグメモリ部のラインを検索する検索部と、検索されたタグメモリ部のラインに保持されたタグアドレスと、メモリアクセス要求のタグアドレスとを比較してキャッシュミスを検出するとともに、検索ラインのステート情報を読み出す比較部と、キャッシュミスを検出した場合、メモリアクセス要求の対象となるデータを記憶装置へ要求するとともに、要求したデータを格納するラインがデータメモリ部に無い場合、比較部が読み出したラインのステート情報に基づいて、データメモリ部へのクロックの供給を止める制御部を備えるキャッシュメモリ装置が提供される。【選択図】図１
2011028736.tif 000002
【特許請求の範囲】
【請求項１】
データを要求するメモリアクセス要求を出力する命令制御部と、データを記憶する記憶装置とに接続するキャッシュメモリ装置であって、
キャッシュライン毎にデータを保持するデータメモリ部と、
前記データメモリ部のキャッシュラインと対応付けられたキャッシュライン毎に、前記メモリアクセス要求の対象であるデータの前記記憶装置における記憶位置を特定するタグアドレスと、前記タグアドレスに対応するデータメモリ部のデータの状態を示すステート情報とを保持するタグメモリ部と、
前記メモリアクセス要求に含まれるインデックスアドレスに対応する前記タグメモリ部のキャッシュラインを検索する検索部と、
前記検索されたタグメモリ部のキャッシュラインに保持されたタグアドレスと、前記メモリアクセス要求に含まれるタグアドレスとを比較して両者が一致しない場合にキャッシュミスを検出するとともに、前記検索キャッシュラインのステート情報を読み出す比較部と、
前記比較部がキャッシュミスを検出した場合、前記メモリアクセス要求の対象となるデータを前記記憶装置へ要求するとともに、前記記憶装置に対して要求したデータを格納するキャッシュラインが前記データメモリ部に無い場合、前記比較部が読み出したキャッシュラインのステート情報に基づいて、前記データメモリ部へのクロックの供給を止める制御部を備えることを特徴とするキャッシュメモリ装置。
【請求項２】
前記キャッシュメモリ装置において、
前記記憶装置はさらに、他のキャッシュメモリ装置に接続し、
前記制御部は、前記比較部が読み出したステート情報が、前記検索されたキャッシュラインに対応する前記データメモリ部のデータが、前記第２のキャッシュメモリ装置のデータメモリ部のデータまたは前記記憶装置のデータの少なくとも一方と一致しない旨を示す場合、又は、前記検索されたキャッシュラインに対応する前記データメモリ部のデータと、前記記憶装置のデータと、前記第２のキャッシュメモリ装置のデータメモリ部のデータとが全て一致する旨を示す場合に、前記データメモリ部へのクロックの供給を止めることを特徴とする請求項１記載のキャッシュメモリ装置。
【請求項３】
前記キャッシュメモリ装置において、
前記制御部は、前記検索されたタグメモリ部のキャッシュラインを無効化する場合、前記データメモリ部へのクロックの供給を止めた状態で、前記タグメモリ部へクロックを供給することを特徴とする請求項１又は２に記載のキャッシュメモリ装置。
【請求項４】
前記キャッシュメモリ装置において、
前記制御部は、
前記検索されたキャッシュラインのステート情報が、前記データメモリ部のデータと前記記憶装置のデータとが一致しないことを示す場合、前記データメモリ部へのクロックの供給を開始して、前記データメモリ部からデータを読み出すとともに前記タグメモリ部から前記キャッシュラインのステート情報を読み出し、前記読み出されたステート情報が、前記データメモリ部のデータと前記記憶装置のデータとが一致することを示す場合、前記データメモリ部へのクロックの供給を停止することを特徴とする請求項１〜３の何れか１項に記載のキャッシュメモリ装置。
【請求項５】
前記キャッシュメモリ装置はさらに、
前記データメモリ部のキャッシュラインと対応付けられたキャッシュライン毎にタグアドレスとステート情報とを記憶する第２タグメモリ部を有し、
前記制御部はさらに、
前記タグメモリ部からの前記検索されたキャッシュラインの読み出し中にエラーを検出した場合、前記タグメモリ部及び前記第２タグメモリ部にクロックを供給して、前記タグメモリ部及び前記第２タグメモリ部の両方から前記検索されたキャッシュラインを読み出すことを特徴とする請求項１〜４の何れか１項に記載のキャッシュメモリ装置。
【請求項６】
前記キャッシュメモリ装置において、
前記制御部はさらに、
前記検索されたキャッシュラインのステート情報が、前記データメモリ部のデータと前記記憶装置のデータとが一致しないことを示す場合、前記データメモリ部へのクロックの供給を開始して、前記データメモリ部からデータを読み出すとともに前記タグメモリ部から前記キャッシュラインのステート情報を読み出し、前記読み出されたステート情報が、前記データメモリ部のデータと前記記憶装置のデータとが一致することを示す場合、前記データメモリ部へのクロックの供給を停止して、前記データメモリ部における前記検索されたキャッシュラインに保持されたデータを前記記憶装置に追い出す処理を中断するとともに、前記タグメモリ部から前記キャッシュラインのステート情報を読み出し、前記読み出されたステート情報が、前記検索されたデータメモリ部のキャッシュラインのデータが、前記記憶装置において対応するデータから変更されている旨を示す場合、前記データメモリ部へのクロックの供給を開始して、前記検索されたキャッシュラインに保持されたデータを前記記憶装置に追い出す処理を再開することを特徴とする請求項１〜５の何れか１項に記載のキャッシュメモリ装置。
【請求項７】
データを記憶する記憶装置に接続するとともに、前記記憶装置が記憶するデータの一部を保持するキャッシュメモリ装置と、前記キャッシュメモリにデータを要求するメモリアクセス要求を出力する命令制御部とを有する演算処理装置において、
前記キャッシュメモリ装置は、
キャッシュライン毎にデータを保持するデータメモリ部と、
前記データメモリ部のキャッシュラインと対応付けられたキャッシュライン毎に、前記メモリアクセス要求の対象であるデータの前記記憶装置における記憶位置を特定するタグアドレスと、前記タグアドレスに対応するデータメモリ部のデータの状態を示すステート情報とを保持するタグメモリ部と、
前記メモリアクセス要求に含まれるインデックスアドレスに対応する前記タグメモリ部のキャッシュラインを検索する検索部と、
前記検索されたタグメモリ部のキャッシュラインに保持されたタグアドレスと、前記メモリアクセス要求に含まれるタグアドレスとを比較して両者が一致しない場合にキャッシュミスを検出するとともに、前記検索キャッシュラインのステート情報を読み出す比較部と、
前記比較部がキャッシュミスを検出した場合、前記メモリアクセス要求の対象となるデータを前記記憶装置へ要求するとともに、前記記憶装置に対して要求したデータを格納するキャッシュラインが前記データメモリ部に無い場合、前記比較部が読み出したキャッシュラインのステート情報に基づいて、前記データメモリ部へのクロックの供給を止める制御部を備えることを特徴とする演算処理装置。
【請求項８】
前記演算処理装置において、
前記記憶装置はさらに、他のキャッシュメモリ装置に接続し、
前記制御部は、前記比較部が読み出したステート情報が、前記検索されたキャッシュラインに対応する前記データメモリ部のデータが、前記第２のキャッシュメモリ装置のデータメモリ部のデータまたは前記記憶装置のデータの少なくとも一方と一致しない旨を示す場合、又は、前記検索されたキャッシュラインに対応する前記データメモリ部のデータと、前記記憶装置のデータと、前記第２のキャッシュメモリ装置のデータメモリ部のデータとが全て一致する旨を示す場合に、前記データメモリ部へのクロックの供給を止めることを特徴とする請求項７記載の演算処理装置。
【請求項９】
前記演算処理装置において、
前記制御部は、前記検索されたタグメモリ部のキャッシュラインを無効化する場合、前記データメモリ部へのクロックの供給を止めた状態で、前記タグメモリ部へクロックを供給することを特徴とする請求項７又は８記載の演算処理装置。
【請求項１０】
前記演算処理装置において、
前記制御部は、
前記検索されたキャッシュラインのステート情報が、前記データメモリ部のデータと前記記憶装置のデータとが一致しないことを示す場合、前記データメモリ部へのクロックの供給を開始して、前記データメモリ部からデータを読み出すとともに前記タグメモリ部から前記キャッシュラインのステート情報を読み出し、前記読み出されたステート情報が、前記データメモリ部のデータと前記記憶装置のデータとが一致することを示す場合、前記データメモリ部へのクロックの供給を停止することを特徴とする請求項７〜９の何れか１項に記載の演算処理装置。
【請求項１１】
前記演算処理装置において、
前記キャッシュメモリ装置はさらに、
前記データメモリ部のキャッシュラインと対応付けられたキャッシュライン毎にタグアドレスとステート情報とを記憶する第２タグメモリ部を有し、
前記制御部はさらに、
前記タグメモリ部からの前記検索されたキャッシュラインの読み出し中にエラーを検出した場合、前記タグメモリ部及び前記第２タグメモリ部にクロックを供給して、前記タグメモリ部及び前記第２タグメモリ部の両方から前記検索されたキャッシュラインを読み出すことを特徴とする請求項７〜１０の何れか１項に記載の演算処理装置。
【請求項１２】
前記演算処理装置において、
前記制御部はさらに、
前記検索されたキャッシュラインのステート情報が、前記データメモリ部のデータと前記記憶装置のデータとが一致しないことを示す場合、前記データメモリ部へのクロックの供給を開始して、前記データメモリ部からデータを読み出すとともに前記タグメモリ部から前記キャッシュラインのステート情報を読み出し、前記読み出されたステート情報が、前記データメモリ部のデータと前記記憶装置のデータとが一致することを示す場合、前記データメモリ部へのクロックの供給を停止して、前記データメモリ部における前記検索されたキャッシュラインに保持されたデータを前記記憶装置に追い出す処理を中断するとともに、前記タグメモリ部から前記キャッシュラインのステート情報を読み出し、前記読み出されたステート情報が、前記検索されたデータメモリ部のキャッシュラインのデータが、前記記憶装置において対応するデータから変更されている旨を示す場合、前記データメモリ部へのクロックの供給を開始して、前記検索されたキャッシュラインに保持されたデータを前記記憶装置に追い出す処理を再開することを特徴とする請求項７〜１１の何れか１項に記載の演算処理装置。
【請求項１３】
データを要求するメモリアクセス要求を出力する命令制御部と、データを記憶する記憶装置とに接続するキャッシュメモリ装置の制御方法であって、
前記キャッシュメモリ装置が有する検索部が、キャッシュライン毎にデータを保持するデータメモリ部のキャッシュラインと対応付けられたキャッシュライン毎に、前記メモリアクセス要求の対象であるデータの前記記憶装置における記憶位置を特定するタグアドレスと、前記タグアドレスに対応するデータメモリ部のデータの状態を示すステート情報とを保持するタグメモリ部から、前記メモリアクセス要求に含まれるインデックスアドレスに対応する前記タグメモリ部のキャッシュラインを検索するステップと、
前記キャッシュメモリ装置が有する比較部が、前記検索されたタグメモリ部のキャッシュラインに保持されたタグアドレスと、前記メモリアクセス要求に含まれるタグアドレスとを比較して両者が一致しない場合にキャッシュミスを検出するとともに、前記検索キャッシュラインのステート情報を読み出すステップと、
前記比較部がキャッシュミスを検出した場合、前記キャッシュメモリ装置が有する制御部が、前記メモリアクセス要求の対象となるデータを前記記憶装置へ要求するとともに、前記記憶装置に対して要求したデータを格納するキャッシュラインが前記データメモリ部に無い場合、前記比較部が読み出したキャッシュラインのステート情報に基づいて、前記データメモリ部へのクロックの供給を止めるステップを備えることを特徴とするキャッシュメモリ装置の制御方法。
【請求項１４】
前記キャッシュメモリ装置の制御方法において、
前記記憶装置はさらに、他のキャッシュメモリ装置に接続し、
前記制御部は、前記比較部が読み出したステート情報が、前記検索されたキャッシュラインに対応する前記データメモリ部のデータが、前記第２のキャッシュメモリ装置のデータメモリ部のデータまたは前記記憶装置のデータの少なくとも一方と一致しない旨を示す場合、又は、前記検索されたキャッシュラインに対応する前記データメモリ部のデータと、前記記憶装置のデータと、前記第２のキャッシュメモリ装置のデータメモリ部のデータとが全て一致する旨を示す場合に、前記データメモリ部へのクロックの供給を止めることを特徴とする請求項１３記載のキャッシュメモリ装置の制御方法。
【請求項１５】
前記キャッシュメモリ装置の制御方法において、
前記制御部は、前記検索されたタグメモリ部のキャッシュラインを無効化する場合、前記データメモリ部へのクロックの供給を止めた状態で、前記タグメモリ部へクロックを供給することを特徴とする請求項１３又は１４に記載のキャッシュメモリ装置の制御方法。
【請求項１６】
前記キャッシュメモリ装置の制御方法はさらに、
前記検索されたキャッシュラインのステート情報が、前記データメモリ部へのクロックの供給を開始して、前記データメモリ部からデータを読み出すとともに前記タグメモリ部から前記キャッシュラインのステート情報を読み出し、前記読み出されたステート情報が、前記データメモリ部のデータと前記記憶装置のデータとが一致することを示す場合、前記データメモリ部へのクロックの供給を停止することを特徴とする請求項１３〜１５の何れか１項に記載のキャッシュメモリ装置の制御方法。
【請求項１７】
前記キャッシュメモリ装置の制御方法において、
前記キャッシュメモリ装置はさらに、
前記データメモリ部のキャッシュラインと対応付けられたキャッシュライン毎にタグアドレスとステート情報とを記憶する第２タグメモリ部を有し、
前記制御部はさらに、
前記タグメモリ部からの前記検索されたキャッシュラインの読み出し中にエラーを検出した場合、前記タグメモリ部及び前記第２タグメモリ部にクロックを供給して、前記タグメモリ部及び前記第２タグメモリ部の両方から前記検索されたキャッシュラインを読み出すことを特徴とする請求項１３〜１６の何れか１項に記載のキャッシュメモリ装置の制御方法。
【請求項１８】
前記キャッシュメモリ装置の制御方法において、
前記制御部はさらに、
前記検索されたキャッシュラインのステート情報が、前記データメモリ部のデータと前記記憶装置のデータとが一致しないことを示す場合、前記データメモリ部へのクロックの供給を開始して、前記データメモリ部からデータを読み出すとともに前記タグメモリ部から前記キャッシュラインのステート情報を読み出し、前記読み出されたステート情報が、前記データメモリ部のデータと前記記憶装置のデータとが一致することを示す場合、前記データメモリ部へのクロックの供給を停止して、前記データメモリ部における前記検索されたキャッシュラインに保持されたデータを前記記憶装置に追い出す処理を中断するとともに、前記タグメモリ部から前記キャッシュラインのステート情報を読み出し、前記読み出されたステート情報が、前記検索されたデータメモリ部のキャッシュラインのデータが、前記記憶装置において対応するデータから変更されている旨を示す場合、前記データメモリ部へのクロックの供給を開始して、前記検索されたキャッシュラインに保持されたデータを前記記憶装置に追い出す処理を再開することを特徴とする請求項１３〜１７の何れか１項に記載のキャッシュメモリ装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリ装置、演算処理装置及びキャッシュメモリ装置の制御方法に関する。
【背景技術】
【０００２】
演算処理装置としてのCentral Processing Unit（ＣＰＵ）は、Random Access Memory（ＲＡＭ）により実現されるキャッシュメモリを有する。キャッシュメモリは、異なるサイズ毎に、例えば、Ｌ１（Ｌｅｖｅｌ  １：１次）キャッシュメモリ及びＬ２（Ｌｅｖｅｌ  ２：２次）キャッシュメモリのように階層化して使用される。そして、Ｌ２キャッシュメモリは、Ｌ１キャッシュメモリの内容を包含して保持する。
【０００３】
キャッシュメモリは、アクセスされるＲＡＭにおけるメモリセルの数が少ないほど消費電力が少なくなるので、アクセス頻度の高いデータを、よりＣＰＵコア等の演算部に近いキャッシュメモリに記憶することにより、キャッシュメモリ全体の消費電力を下げることが出来る。
【０００４】
データを記憶するデータアレイと、データに関するタグを記憶するタグアレイと、タグアレイから読み出された物理アドレスであるタグアドレスと、外部から読出要求された物理アドレスであるタグアドレスとを比較する比較器を有するキャッシュメモリが提案されている。タグアレイは、インデックスアドレスにより特定されるメモリセルからタグアドレスを読み出す。比較器は、タグアレイから読み出されたタグアドレスと、外部から読出要求されたタグアドレスとが一致した場合、データアレイにキャッシュヒット信号を出力する。データアレイは、キャッシュヒット信号を受け取った後で、インデックスアドレスで特定されるメモリセルからデータを読み出す。
【０００５】
このように、キャッシュメモリは、タグアレイでインデックスアドレスに対応するタグアドレスを検索し、メモリアクセス要求に含まれるタグアドレスとタグメモリから読み出されたタグアドレスとが一致するキャッシュヒットが生じたとき、検索されたデータアレイからデータを読み出す。よって、キャッシュミスが発生した場合は、データアレイからデータは読み出されないので、データアレイを動作させる電力消費を抑えられる。
【０００６】
また、書換えがあったメインメモリからの書換えデータのアドレスを記憶するモデファイアドレス記憶部と、キャッシュメモリに含まれる所定のアドレス範囲のキャッシュメモリブロックと、を有するキャッシュメモリが提案されている。処理装置からのデータアクセスにおいてキャッシュミスが生じると、キャッシュメモリは、予め定められたアルゴリズムに基づいてキャッシュメモリから追出又は消去対象のブロックを決定し、モデファイアドレス記憶部を参照して対象ブロック内で書換えデータを検索する。そして、キャッシュメモリは、書換えデータがあれば、書換えデータをメインメモリに書き込み、メインメモリから読み出した読出対象データをキャッシュメモリに書き込む。
【０００７】
このように書換えデータを選択的にメインメモリに書き戻すことで、キャッシュメモリは、キャッシュメモリで書換えられていないデータを、書き戻す必要がない場合に、メインメモリに書き込むという無駄な動作をなくすことができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００３−１５０４４６号広報
【特許文献２】特開平４−２７３５４９号広報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、キャッシュメモリは、キャッシュミスにより主記憶装置に対してデータを要求したとき、キャッシュメモリに空きが無い場合、追い出し対象のキャッシュラインのデータが主記憶装置にあるときでも、当該キャッシュラインのデータとステートを読み出し、読み出したステートに基づいて当該キャッシュラインのデータの処理を行っていた。その結果、追い出し対象のキャッシュラインに主記憶装置と同じデータがあり、当該キャッシュラインのデータを追い出す必要がない場合でも、当該キャッシュラインのステートを読み出すためにタグキャッシュメモリとデータキャッシュメモリへのクロック印加を行っており、当該キャッシュラインのステート読み出し後におけるデータキャッシュに対して無駄なクロック印加がされていた。
【００１０】
開示のキャッシュメモリは、データキャッシュメモリへの不必要なクロック印加を抑止して、消費電力を削減することを目的とする。
【課題を解決するための手段】
【００１１】
開示のキャッシュメモリ装置は、データを要求するメモリアクセス要求を出力する命令制御部と、データを記憶する記憶装置とに接続するキャッシュメモリ装置であって、キャッシュライン毎にデータを保持するデータメモリ部と、前記データメモリ部のキャッシュラインと対応付けられたキャッシュライン毎に、前記メモリアクセス要求の対象であるデータの前記記憶装置における記憶位置を特定するタグアドレスと、前記タグアドレスに対応するデータメモリ部のデータの状態を示すステート情報とを保持するタグメモリ部と、前記メモリアクセス要求に含まれるインデックスアドレスに対応する前記タグメモリ部のキャッシュラインを検索する検索部と、前記検索されたタグメモリ部のキャッシュラインに保持されたタグアドレスと、前記メモリアクセス要求に含まれるタグアドレスとを比較して両者が一致しない場合にキャッシュミスを検出するとともに、前記検索キャッシュラインのステート情報を読み出す比較部と、前記比較部がキャッシュミスを検出した場合、前記メモリアクセス要求の対象となるデータを前記記憶装置へ要求するとともに、前記記憶装置に対して要求したデータを格納するキャッシュラインが前記データメモリ部に無い場合、前記比較部が読み出したキャッシュラインのステート情報に基づいて、前記データメモリ部へのクロックの供給を止める制御部を備える。
【発明の効果】
【００１２】
開示のキャッシュメモリ装置は、データキャッシュメモリへの不必要なクロック印加を抑止して、消費電力を削減するという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】記憶装置の構成の一例を示すブロック図である。
【図２】タグＲＡＭと比較回路の詳細例を示すブロック図である。
【図３】タグＲＡＭに保持されるデータフォーマット、及びステート保持部に保持されるデータフォーマットの一例を示すフォーマットである。
【図４】データＲＡＭのラインのステートを説明する状態遷移図である。
【図５】データＲＡＭの詳細例を示すブロック図である。
【図６】命令制御部がタグＲＡＭ及びデータＲＡＭにデータアクセスする一例を示すタイムチャートである。
【図７】タグＲＡＭ及びデータＲＡＭに対するデータアクセスの一例を示すタイムチャートである。
【図８】タグＲＡＭ及びデータＲＡＭに対するデータアクセスの一例を示すタイムチャートである。
【図９】タグＲＡＭ及びデータＲＡＭに対するデータアクセスの一例を示すタイムチャートである。
【図１０】タグＲＡＭ用クロック制御回路の詳細例を示すブロック図である。
【図１１】データＲＡＭ用クロック制御回路の詳細例を示すブロック図である。
【図１２】タグＲＡＭ用クロック制御回路の詳細例を示すブロック図である。
【図１３】キャッシュミスのデータアクセスの一例を示すタイムチャートである。
【図１４】キャッシュヒットのデータアクセスの一例を示すタイムチャートである。
【図１５】タグＲＡＭ及びデータＲＡＭへの登録処理の一例を示すタイムチャートである。
【図１６】タグの追出処理の一例を示すタイムチャートである。
【図１７】タグ及びデータの追出処理の一例を示すタイムチャートである。
【図１８】タグの追出処理の一例を示すタイムチャートである。
【図１９】タグの追出処理の一例を示すタイムチャートである。
【図２０】タグの追出処理の一例を示すタイムチャートである。
【図２１Ａ】記憶装置が行うデータ処理の一例を示すフローチャートである。
【図２１Ｂ】記憶装置が行うデータ処理の一例を示すフローチャートである。
【図２１Ｃ】記憶装置が行うデータ処理の一例を示すフローチャートである。
【図２１Ｄ】記憶装置が行うデータ処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、図面を参照して、記憶装置の実施形態を説明する。図１は、主記憶装置に接続された演算処理装置の構成の一例を示すブロック図である。演算処理装置１は、命令制御部５、１次キャッシュメモリ１０及び２次キャッシュメモリ４０を有し、主記憶装置６０に接続される。図１に示す記憶装置（１次キャッシュメモリ）１０は、アドレス変換回路（ＡＤ回路）１１、タグＲＡＭ１２、１３、データＲＡＭ１４、比較回路１６、１７、エラーチェック回路１８、１９、及びデータ制御回路３０を有する。データ制御回路３０は、追出ウェイ特定回路３１、データ要求回路３２、及びデータ追出回路３３を有する。
【００１５】
１次キャッシュメモリ１０は、命令制御部５、及び２次（Ｌ２）キャッシュメモリ４０と結線により接続されている。２次キャッシュメモリ４０は、主記憶装置６０と結線により接続されている。１次キャッシュメモリ１０は、２次キャッシュメモリ４０に記憶されるデータの一部をキャッシュするように適用される。２次キャッシュメモリ４０は、主記憶装置６０に記憶されるデータの一部をキャッシュするように適用される。以下、２次キャッシュメモリ４０、主記憶装置６０は、「下位階層メモリ」と称される。
【００１６】
なお、命令制御部５及び１次キャッシュメモリ１０、又は、命令制御部５、１次キャッシュメモリ１０及び２次キャッシュメモリ４０は、演算処理装置１に含まれる。図１は例示であるため、１次キャッシュメモリ１０は、２次キャッシュメモリ４０の代わりに、主記憶装置６０と直接接続しても良い。また、図１に示すタグＲＡＭ１２とデータＲＡＭ１４は、互いに別個のＲＡＭとして示されているが、タグ部とデータ部とを有する１つのキャッシュＲＡＭとしても良い。その場合、以下の説明では、タグＲＡＭに関する説明は、キャッシュＲＡＭのタグ部の説明に対応し、データＲＡＭに関する説明は、キャッシュＲＡＭのデータ部の説明に対応する。図１に示す１次キャッシュメモリ１０は、タグＲＡＭを２つ有するが、１次キャッシュメモリ１０は、タグＲＡＭを１つだけ有しても良い。タグＲＡＭ１２の説明は、タグＲＡＭ１３にも適用され得る。
【００１７】
また、命令制御部５と１次キャッシュメモリ１０は、プロセッサコア３に含まれる。図１には、２次キャッシュメモリ４０には１つのプロセッサコア３が接続されるが、複数のプロセッサコアが、２次キャッシュメモリ４０に接続されてもよい。
【００１８】
命令制御部５は、メモリアクセスアドレスを含むメモリアクセス要求を、アドレス変換回路１１、タグＲＡＭ１２、１３、データＲＡＭ１４に送信する。メモリアクセスアドレスはその下位部分に、アドレス変換回路１１、タグＲＡＭ１２、１３、データＲＡＭ１４それぞれのインデックスアドレスを含む。又、インデックスアドレスは、主記憶装置６０をアクセスする物理アドレスの下位部分のアドレスとして使用される。メモリアクセスアドレスの上位部分はオフセットとして使用され、オフセットによって主記憶装置６０の物理アドレスの複数の上位ビットが特定される。さらに、メモリアクセスアドレスは、上記のインデックスアドレスとオフセットの他に、メモリアクセス対象のデータを特定するタグを含む。
【００１９】
タグＲＡＭ１２、１３は、例えば、複数のエントリを有するＳＲＡＭ(Static Random Access Memory)により実現される。タグＲＡＭ１２、１３は、上記のタグを記憶するＲＡＭである。タグＲＡＭ１２、１３は、命令制御部５から出力されたメモリアクセス要求を、それぞれ信号線ｗ１２及びｗ１３を介して受け取る。タグＲＡＭ１２、１３は、データ追出回路３３から出力するクロック信号ＣＬＫを、それぞれ信号線ｗ３３ａ及びｗ３３ｂを介して受け取る。また、タグＲＡＭ１２、１３は、データ要求回路３２又はデータ追出回路３３から出力されたアドレス、及びウェイ選択情報を受け取り、クロックに同期して、アドレス、及びウェイ選択情報で特定されたエントリをアクセスする。
【００２０】
タグＲＡＭ１２、１３は、タグ及び制御情報をそれぞれ記憶するＲＡＭである。なお、以下、制御情報を「ステート」又は「キャッシュステート」と称する。ステートは、図４を用いて後述される。インデックスアドレスは、タグＲＡＭ１２、１３のラインを特定するアドレスとして使用される。データＲＡＭ１４は、主記憶装置６０の一部の物理アドレスのデータを記憶する。タグＲＡＭ１２、１３は、データＲＡＭ１４に記憶されたデータが主記憶装置６０のどの物理アドレスから取得したかを明確にするために、インデックスアドレスが特定するラインに、データＲＡＭ１４に記憶されたデータを取得した主記憶装置６０の物理アドレスを特定するタグを記憶する。また、タグＲＡＭ１２、１３のタグ及びステートと、データＲＡＭ１４のデータは、同じインデックスアドレスにより対応付けられて、記憶されている。そのため、インデックスアドレスを特定することで、同じインデックスアドレスに対応付けられたデータＲＡＭのデータ、及び、タグＲＡＭに記憶されたタグにより特定される物理アドレスは特定される。なお、タグは、主記憶装置６０におけるデータを特定する物理アドレスの一部に過ぎないため、タグのみでは、主記憶装置６０におけるデータを一意に特定するものではない。そのため、タグＲＡＭ１２、１３の出力タグを、アドレス変換回路１１の出力タグと比較することで、アクセス対象のデータについて、データＲＡＭ１４に記憶されているか、又は、下位階層メモリから取得するべきかの判断がなされる。
【００２１】
また、命令制御部５からのメモリアクセスにより１次キャッシュメモリ１０に記憶したデータが書き換えられたとき、１次キャッシュメモリ１０は、書き換えられたデータを主記憶装置６０に書き戻す処理を行う。さらに、命令制御部５からのメモリアクセスに対して、１次キャッシュメモリ１０でキャッシュミスが生じ、且つデータＲＡＭ１４のラインに空きが無い場合、１次キャッシュメモリ１０は、１次キャッシュメモリ１０に格納されているエントリに保持されたデータを追い出す処理を行う。そのため、タグＲＡＭ１２、１３は、データの状態を示すステートをタグと共に記憶する。タグＲＡＭ１２、１３の詳細例は、図２を用いて後述する。ステートの詳細例は、図４を用いて後述する。
【００２２】
データＲＡＭ１４は、例えば、ＳＲＡＭにより実現される。データＲＡＭ１４は、タグＲＡＭ１２、１３のインデックスアドレス及びタグＲＡＭ１２、１３に記憶されたタグに対応するデータを記憶するＲＡＭである。インデックスアドレスは、データＲＡＭ１４のラインを特定するアドレスとして使用される。データＲＡＭ１４は、命令制御部５から出力されたメモリアクセス要求を、信号線ｗ１４を介して受け取る。また、データＲＡＭ１４は、比較回路１６、１７から出力されるキャッシュミス判定信号をそれぞれ信号線ｗ２０、ｗ２１を介して受け取る。キャッシュミス判定信号が、アドレス変換回路１１が出力するタグと、タグＲＡＭ１２が出力するタグとが一致したことを示す「キャッシュヒット」を示す場合、データＲＡＭ１４は、タグＲＡＭの出力タグに対応するデータを命令制御部５に供給する。
【００２３】
データＲＡＭ１４は、データ追出回路３３から供給されたクロック信号ＣＬＫを、信号線ｗ３３ｃを介して受け取る。また、データＲＡＭ１４は、データ要求回路３２又はデータ追出回路３３から出力されたアドレス、及びウェイ選択情報を受け取り、データＲＡＭ１４は、クロックに同期して、アドレス、及びウェイ選択情報で特定されたデータを出力する。データＲＡＭ１４の詳細例は、図５を用いて後述する。
【００２４】
アドレス変換回路１１は、例えば、ＴＬＢ（Translation Lookaside Buffer）により実現される。アドレス変換回路１１は、インデックスアドレスにより特定されるメモリアクセス要求の対象となる物理アドレスを出力する回路である。アドレス変換回路１１は、主記憶装置６０の物理アドレスを一意に特定するタグを出力する。アドレス変換回路１１は、命令制御部５から出力されたメモリアクセス要求を、信号線ｗ１１を介して受け取る。メモリアクセス要求を受け取ったアドレス変換回路１１は、メモリアクセス要求が特定するインデックスアドレスと対応付けられた物理アドレスを、比較回路１６及び１７にそれぞれ出力する。
【００２５】
比較回路１６は、アドレス変換回路１１から出力されたタグと、タグＲＡＭ１２から出力されたタグとを比較して、２つのタグが一致するか否かを判定する回路である。比較回路１６は、アドレス変換回路１１から出力されたタグを、信号線ｗ１６を介して受け取り、タグＲＡＭ１２から出力されたタグを、信号線ｗ１８を介して受け取って、受け取った２つのタグが一致するか否かを判定する。比較回路１６は、アドレス変換回路１１から出力されたタグと、タグＲＡＭ１２から出力されたタグとが一致する場合、信号線ｗ２０を介してデータＲＡＭ１４に２つのタグが一致したことを示すキャッシュヒット判定信号を出力する。比較回路１７は、比較回路１６と同様に動作する。つまり、比較回路１７は、アドレス変換回路１１から出力されたタグと、タグＲＡＭ１３から出力されたタグとが一致する場合、キャッシュヒット判定信号を、信号線ｗ２１を介してデータＲＡＭ１４に出力する。
【００２６】
比較回路１６は、アドレス変換回路１１から出力されたタグと、タグＲＡＭ１２から出力されたタグとが一致しない場合、信号線ｗ２２を介してデータ要求回路３２にタグの不一致を示すキャッシュミス判定信号を出力する。比較回路１６は、キャッシュミス判定信号と共に、アドレス変換回路１１からのタグと、タグＲＡＭ１２からのタグ、及びステートをデータ要求回路３２に出力する。
【００２７】
なお、図２を用いて後述するように、タグＲＡＭ１２、１３がｎウェイセットアソシアティブ方式であっても良い。ｎウェイセットアソシアティブ方式とは、１つのインデックスアドレスに対して、複数ウェイそれぞれに保持されるタグが選択される方式を言う。ｎウェイセットアソシアティブ方式の場合、比較回路１６、１７は、アドレス変換回路１１から出力されたタグと、同一ラインで特定される複数のウェイから出力したタグとを比較する。その場合、比較回路１６、１７は、ウェイ毎に用意された複数の比較回路を有し、各比較回路は、タグ、及びステートを、データ要求回路３２に出力する。
【００２８】
比較回路１６は、タグの比較を行った後、キャッシュミス判定信号、アドレス変換回路１１から出力されたタグ、タグＲＡＭ１２から出力されたタグ、及び制御信号を、信号線ｗ２２を介してデータ要求回路３２に出力する。比較回路１７は、タグの比較を行った後、キャッシュミス判定信号、アドレス変換回路１１から出力されたタグ、タグＲＡＭ１３から出力されたタグ、及び制御信号を、信号線ｗ２３を介してデータ要求回路３２に出力する。また、比較回路１６、１７は、インデックスアドレスおよびキャッシュミス判定信号を、それぞれ信号線ｗ４０及びｗ４１を介して追出ウェイ特定回路３１に供給する。比較回路１６、１７の詳細例は、図２を用いて後述する。
【００２９】
エラーチェック回路１８及び１９は、タグＲＡＭ１２及び１３からそれぞれ出力したタグを受け取り、エラーチェックを行う回路である。エラーチェックとは、例えば、パリティエラーチェックやＥＣＣ(Error Check Correction)等である。エラーが生じた場合、エラーチェック回路１８及び１９は、データ追出回路３３にエラー信号を出力する。
【００３０】
追出ウェイ特定回路３１は、インデックスアドレス、及びキャッシュミス判定信号を用いて、１次キャッシュメモリ１０が有する複数のウェイのうち追い出し対象となる追出ウェイを特定する回路である。追出ウェイ特定回路３１は、インデックスアドレス、キャッシュミス判定信号を受け取り、追出ウェイを特定する。例えば、図２で後述するように、タグＲＡＭが２ウェイセットアソシアティブ型である場合、タグＲＡＭ１２又は１３は、１つのインデックスアドレスにより２つのウェイから２つのキャッシュミス判定信号を出力する。追出ウェイ特定回路３１は、タグＲＡＭ１２又は１３から２つのキャッシュミス判定信号を受け取り、２つのウェイの何れかを追出ウェイとして特定する。複数のウェイから追出ウェイを特定する方法は、アクセス頻度が最も少ないウェイ、参照されていない時間が最も長いウェイ（ＬＲＵ(Least Recently Used)方式）、後述するステートの種類などがある。追出ウェイ特定回路３１は、追出ウェイを特定した信号を、信号線ｗ２４を介してデータ要求回路３２に供給する。
【００３１】
このように、追出ウェイ特定回路３１は、追出ウェイを、キャッシュミスが生じたタグＲＡＭから受け取ったキャッシュミス判定信号を用いて選択する。そのため、１次キャッシュメモリ１０は、タグＲＡＭ１２、１３の追出ウェイを特定するために、キャッシュミス後に、タグＲＡＭ１２、１３に再度アクセスすることは無い。このように、１次キャッシュメモリ１０は、追出ウェイ特定のために再度タグＲＡＭにアクセスする場合と比して、追出処理の処理工程が少ないため、キャッシュミスにおける読出し処理を高速化および省電力化することが出来る。
【００３２】
データ要求回路３２は、ステート保持部３４を有する。ステート保持部３４は、キャッシュミス時に、比較回路１６、１７及び追出ウェイ特定回路３１から受け取ったステート、タグ、ウェイを保持する。
【００３３】
また、データ要求回路３２は、アドレス変換回路１１の出力タグと、インデックスアドレスで特定される物理アドレスのデータを、下位階層メモリである２次キャッシュメモリ４０又は2次キャッシュメモリ４０を介して主記憶装置６０から取得する。
【００３４】
データ要求回路３２は、比較回路１６から信号線ｗ２２を介して、キャッシュミス判定信号、アドレス変換回路１１から出力したタグ、タグＲＡＭ１２が出力したタグ、及び制御信号を受け取る。また、データ要求回路３２は、比較回路１７から信号線ｗ２３を介して、キャッシュミス判定信号、アドレス変換回路１１から出力したタグ、タグＲＡＭ１３が出力したタグ、及び制御信号を受け取る。
【００３５】
データ要求回路３２は、キャッシュミス判定信号がキャッシュミスを示す場合、物理アドレスのデータを、信号線ｗ３５を介して下位階層メモリである２次キャッシュメモリ４０に要求し、且つ信号線ｗ３６を介して物理アドレスのデータを取得する。データ要求回路３２は、ステート保持部３４に保持したステートを、信号線ｗ２５を介してデータ追出回路３３に供給する。
【００３６】
また、データ要求回路３２は、タグＲＡＭ１２、１３、及びデータＲＡＭ１４にそれぞれクロックを印加して、２次キャッシュから取得した対象データを、タグＲＡＭ１２、１３、及びデータＲＡＭ１４に登録する。
【００３７】
データ追出回路３３は、データ要求回路３２から受け取ったステートに応じてタグＲＡＭ１２、１３、又はデータＲＡＭ１４に対する追出処理を行う。追出処理の実施例は、図６〜図２１を用いて後述する。
【００３８】
なお、タグＲＡＭ及び／又はデータＲＡＭのデータのサイズが大きい場合、追出処理が複数のフローに分かれる場合がある。データ追出回路３３は、第１のフローにおいて、タグＲＡＭ１２、１３からステートを取得する。データ追出回路３３は、１フローで、タグＲＡＭから有効ビット及びステートビットを読み出し、データ追出回路３３は、２フローで、タグＲＡＭの有効ビットの無効化を、例えば、有効ビットを「１」から「０」に落とすことで行い、ステートビットを「Ｉ」に変更する。なお、タグＲＡＭのタグを読み出すのは、追出対象となったタグを、下位階層メモリで記憶するために、１フローでタグを読み出す。
【００３９】
図２は、タグＲＡＭと比較回路とを示す詳細例を示すブロック図である。例示されるタグＲＡＭ１２ａは、図１に示したタグＲＡＭ１２又は１３に相当する。例示される比較回路１６ａ、１６ｂのそれぞれは、タグＲＡＭ１２の１つのウェイのために用意される。タグＲＡＭ１２ａは、セットアソシアティブ型のＲＡＭである。そのため、タグＲＡＭ１２ａは、ウェイ１０１、ウェイ１１１を有する。図２には示さないが、タグＲＡＭ１２ａは、３つ以上のウェイを有しても良い。ウェイ１０１は、メモリセルアレイ１０２、センスアンプ１０３、ラッチ回路１０４、及びロウデコーダ１０５を有する。ウェイ１１１は、メモリセル１１２、センスアンプ１１３、ラッチ回路１１４、及びロウデコーダ１１５を有する。
【００４０】
命令制御部５から出力されたメモリアクセス要求に含まれるメモリアクセスアドレスは、仮想アドレス１２１として示される。仮想アドレス１２１の下位ビットは、ページ内オフセットを示す。仮想アドレス１２１のページ内オフセットの上位にインデックスアドレスを示す。インデックスアドレスは、メモリセルアレイ１０２及び１１２のラインを特定する。
【００４１】
メモリセルアレイ１０２、１１２のラインは、物理アドレスを特定するタグ及びステートをそれぞれ記憶する。タグ検索部としてのロウデコーダ１０５、１１５は、インデックスアドレスをデコードして、メモリセルアレイ１０２のキャッシュラインを選択するキャッシュライン選択信号を出力する。ロウデコーダ１０５又は１１５は、キャッシュライン選択信号により選択されたキャッシュラインを活性化する。活性化されたキャッシュラインに接続されたメモリセルは、図示しないカラム線の電位を変化させる。センスアンプ１０３、１１４は、カラム線の電位変化を増幅した信号を検出することで、ラッチ回路１０４、１１４にデータをそれぞれ記憶する。ラッチ回路１０４、１１４は、１サイクルだけデータを記憶した後に、比較回路１６ａ、１６ｂに記憶したデータをそれぞれ出力する。このようにして、タグＲＡＭ１２ａは、インデックスで特定されたタグ並びにステートを、比較回路１６ａ、１６ｂに出力する。
【００４２】
比較回路１６ａ及び１６ｂは、ラッチ回路１０４及び１１４からそれぞれ読み出したタグと、アドレス変換回路１１から出力されたタグを比較する。比較回路１６ａ、１６ｂは、キャッシュヒット信号、アドレス変換回路１１からの出力タグ、メモリセルアレイ１０２、１１２からの出力タグ及びステートを、それぞれデータ要求回路３２に出力する。ステートは、ステート保持部３４に保持される。
【００４３】
なお、アドレス変換回路１１についての詳細例は示さないが、アドレス変換回路１１も、図２に示されるようなセットアソシアティブ型のＲＡＭであっても良い。ただし、タグＲＡＭ１２、１３は、データＲＡＭ１４に記憶され且つ主記憶装置６０の一部のデータの物理アドレスを特定するタグを記憶するのに対して、アドレス変換回路１１は、主記憶装置６０の全ての物理アドレスを特定するタグを記憶する点で異なる。
【００４４】
図３は、タグＲＡＭに保持されるデータの構造、及びステート保持部に保持されるデータ構造の一例を示す図である。図３に示されるデータ構造１０００は、タグＲＡＭ１２、１３に保持されるデータのデータ構造である。データ構造１０００は、物理アドレス１０３０と、ステートを特定するステートビット１０２０とを含む。データ構造１１００は、ステート保持部に保持されるデータのデータ構造である。データ構造１１００は、物理アドレス１１３０と、追出対象のウェイを特定するウェイビット１１２０と、ステートを特定するステートビット１１１０とを含む。
【００４５】
図４は、データＲＡＭのラインのステートの例を説明する状態遷移図である。ステートは、上記のように、タグＲＡＭ１２、１３にタグと共に記憶される。図２に示されるように、データＲＡＭ１４のラインのステートは、ＭＥＳＩプロトコルに基づき、「Ｍ（Modified：変更）」、「Ｅ（Exclusive：排他）」、「Ｓ（Share：共有）」、「Ｉ（Invalidate無効）」の４つの状態のいずれかにある。図２に示す、「ＷＴ（WriTe）」は、書き込みを示し、「ＲＤ（ReaD）」は、読み出しを示す。なお、ステートの例は、ＭＥＳＩプロトコルに基づいて説明するが、本実施形態で使用可能なステートは、ＭＥＳＩプロトコルに限定されず、「Ｏ（Own：所有）」の状態を加えたＭＯＳＩプロトコル又はＭＯＥＳＩプロトコルであっても良い。
【００４６】
「Ｍ」は、データＲＡＭ１４のラインだけにデータが存在し、データＲＡＭ１４のデータは、主記憶装置６０に記憶されるデータＲＡＭ１４のラインと同じ物理アドレスのデータから変更されていることを示す。
【００４７】
「Ｅ」は、データＲＡＭ１４のラインのデータと、主記憶装置６０に記憶されるデータＲＡＭ１４のラインと同じ物理アドレスのデータとが一致するが、プロセッサコア３と異なる他のプロセッサコアの１次キャッシュメモリとは一致するデータが無い状態を示す。「Ｓ」は、データＲＡＭ１４のラインのデータと、主記憶装置６０に記憶されるデータＲＡＭ１４のラインと同じ物理アドレスのデータと、他のプロセッサコアの１次キャッシュメモリに記憶されるデータＲＡＭのラインと同じ物理アドレスのデータと、が全て一致する状態を示す。「Ｉ」は、データＲＡＭ１４のラインは、無効であることを示す。
【００４８】
図４において実線は、命令制御部５から出力されたメモリアクセス要求を示し、図２に示す破線は、他の命令制御部から出力されたメモリアクセス要求を示す。状態遷移ａ１は、他の命令制御部が、他のキャッシュメモリにおいてデータを書き換えようとしているため、書き換えようとしているデータと同じ物理アドレスのデータＲＡＭ１４のデータのステートが「Ｍ」から「Ｉ」に遷移したことを示す。また、状態遷移ａ２は、他の命令制御部が、他のキャッシュメモリにおいてデータを書き換えようとしているため、書き換えようとしているデータと同じ物理アドレスのデータＲＡＭ１４のデータのステートが「Ｓ」から「Ｉ」に遷移したことを示す。さらに、状態遷移ａ３は、他の命令制御部が、他のキャッシュメモリにおいてデータを書き換えようとしているため、書き換えようとしているデータと同じ物理アドレスのデータＲＡＭ１４のデータのステートが「Ｅ」から「Ｉ」に遷移したことを示す。
【００４９】
状態遷移ａ４は、命令制御部５が、他のキャッシュメモリ上にあるデータをデータＲＡＭ１４に登録したため、データのステートが「Ｉ」から「Ｓ」に遷移したことを示す。状態遷移ａ５は、他の命令制御部が、データＲＡＭ１４のデータを要求したため、データのステートが「Ｅ」から「Ｓ」に遷移したことを示す。状態遷移ａ６は、他の命令制御部が、データＲＡＭ１４のデータを要求したため、読み出されたデータのステートが「Ｍ」から「Ｓ」に遷移したことを示す。
【００５０】
ステートａ７は、命令制御部５が、データＲＡＭ１４のデータを書き換えたため、データＲＡＭ１４の書き換えられたデータのステートが「Ｅ」から「Ｍ」に遷移したことを示す。ステートａ８は、命令制御部５が、他の１次キャッシュメモリが保持していないデータをデータＲＡＭ１４に登録したため、データのステートが「Ｉ」から「Ｅ」に遷移したことを示す。
【００５１】
図５は、データＲＡＭの詳細例を示すブロック図である。例示されるデータＲＡＭ１４ａは、図１に示したデータＲＡＭ１４に相当する。図５のデータＲＡＭ１４ａは、ｎウェイセットアソシアティブ方式のＲＡＭである。そのため、タグＲＡＭ１２ａは、ウェイ１４１、ウェイ１５１を有する。図５には示さないが、データＲＡＭ１４ａは、例えば３つ以上のウェイを有しても良い。ウェイ１４１は、メモリセルアレイ１４２、センスアンプ１４３、ラッチ回路１４４、ロウデコーダ１４５、デマルチプレクサ１４６、及びＡＮＤ回路１４７を有する。ウェイ１５１は、メモリセルアレイ１５２、センスアンプ１５３、ラッチ回路１５４、ロウデコーダ１５５、デマルチプレクサ１５６、及びＡＮＤ回路１５７を有する。
【００５２】
データＲＡＭ１４ａのウェイは、タグＲＡＭ１２、１３のウェイに対応する。比較回路１６、１７は、キャッシュヒットしたタグを有するウェイを特定するウェイ選択信号を、データＲＡＭ１４ａにそれぞれ供給する。データＲＡＭ１４ａは、活性化したウェイ選択信号を受け取ることで、タグＲＡＭ１２、１３でキャッシュヒットしたアドレスを有するウェイに対応するデータＲＡＭ１４ａのウェイを特定することが出来る。
【００５３】
命令制御部５から出力されたメモリアクセス要求に含まれるメモリアクセスアドレスは、仮想アドレス１３１として示される。仮想アドレス１２１の下位ビットは、ページ内オフセットを示す。仮想アドレス１３１では、ページ内オフセットの上位にインデックスアドレスがある。インデックスアドレスは、メモリセルアレイ１４２及び１５２のラインを特定する。メモリセルアレイ１４２及び１５２のラインは、データを記憶する。ＡＮＤ回路１４７、１５７は、仮想アドレス１３１のインデックスアドレス、比較回路１６、１７から出力されたキャッシュヒット信号及びウェイ選択信号、をそれぞれ受け取る。
【００５４】
キャッシュヒットアドレスを有するウェイを特定するウェイ選択信号を、ＡＮＤ回路１４７及びＡＮＤ回路１５７の何れかが受け取ることで、ＡＮＤ回路１４７及びＡＮＤ回路１５７の何れかの論理が成立する。ロウデコーダ１４５又は１５５は、ＡＮＤ回路１４７又は１５７の出力が活性化したとき、インデックスアドレスをデコードして、キャッシュライン選択信号を出力する。ロウデコーダ１４５又は１５５は、キャッシュライン選択信号により特定されるメモリセルアレイ１４２及び１５２の何れかのラインを活性化する。このようにして、キャッシュヒットアドレスを有するタグＲＡＭのウェイに対応するデータＲＡＭ１４ａのウェイは特定され、特定されたウェイのメモリセルアレイのラインが活性化する。
【００５５】
活性化したラインに接続されたメモリセルは、図示しないカラム線の電位を変化させる。センスアンプ１４３、１５４は、カラム線の電位変化を増幅した信号を生成することで、ラッチ回路１４４、１５４にデータを記憶する。ラッチ回路１４４及び１５４は、１サイクルだけデータを記憶した後に、デマルチプレクサ１４６及び１５６に記憶したデータをそれぞれ出力する。デマルチプレクサ１４６及び１５６は、ラッチ回路１４４から読み出したデータを命令制御部５に出力する。
【００５６】
図６は、命令制御部がタグＲＡＭ及びデータＲＡＭにデータアクセスしたときのタイムチャートの一例を示す図である。図６に示すタイムチャートでは、命令制御部５から１次キャッシュメモリ１０に対してデータ要求が発行され、１次キャッシュメモリ１０に該当するデータが存在せず、キャッシュミスが生じる。そして、１次キャッシュメモリ１０のラインに空きが無いため、１次キャッシュメモリ１０は、下位階層メモリに対してデータ要求を発行し、１次キャッシュメモリ１０に記憶されているエントリを追い出す。図６に示す例では、追出処理は２フローに分かれている。１フローにおいて、タグＲＡＭの追出処理は、タグとして記憶された有効ビット及びステートビットの読み出しを行う。２フローでは、タグＲＡＭの有効ビットの無効化を行う。
【００５７】
図６に示すタイムチャートでは、時間区間Ｔ１におけるキャッシュミスの後、リードデータのステートが「Ｓ」又は「Ｅ」であるため、１次キャッシュメモリ１０は、データＲＡＭ１４に記憶したデータを下位階層メモリに記憶しなくて良い。そのため、１次キャッシュメモリ１０は、リードデータをデータＲＡＭ１４から追い出さず、有効ビット及びステートビットをタグＲＡＭから無効化して、下位階層メモリから読み出した読出対象データをタグＲＡＭ及びデータＲＡＭに書き込む。
【００５８】
時間区間Ｔ０及びＴ１は、命令制御部５によるデータアクセスの動作を示す。時間区間Ｔ０では、タグＲＡＭ１２及びデータＲＡＭ１４は、命令制御部５からメモリアクセス要求を受け取り、Ｔ２０１及びＴ２０２に示すように、タグＲＡＭ１２及びデータＲＡＭ１４にクロックを印加する。
【００５９】
時間区間Ｔ１では、比較回路１６は、Ｔ２０３に示すキャッシュミスにより、キャッシュミス判定信号をデータ要求回路３２に出力する。追出ウェイ特定回路３１は、比較回路１６受け取ったタグのうち、少なくとも１つのウェイから出力されたタグにより示されるラインを、追出ラインとする。データ要求回路３２が、ステート保持部３４に保持する追出ラインのステートは、Ｔ２０４に示すように、「Ｓ」又は「Ｅ」を示す。
【００６０】
時間区間Ｔ２及びＴ３は、１次キャッシュメモリ１０による追出処理の動作を示す。時間区間Ｔ２では、Ｔ２０５に示すように、データ要求回路３２は、メモリアクセス要求の対象データを下位階層メモリへ要求する。
【００６１】
時間区間Ｔ２から１サイクル前の時間区間Ｔ１でステート保持部３４から読み出された追出ラインのステートは、Ｔ２０４に示すように、「Ｓ」又は「Ｅ」である。ステート「Ｓ」又は「Ｅ」は、追出ラインのデータが修正されたデータではなく、主記憶装置に格納されているデータと一致することを示すので、データ追出回路３３は、データＲＡＭ１４から追出ラインのデータを追い出して、主記憶装置６０に記憶する必要は無い。よって、データ追出回路は、区間Ｔ２データＲＡＭ１４へのクロック供給を止めることにより、消費電力を削減することが可能となる。
【００６２】
時間区間Ｔ２では、Ｔ２０６に示すように、データ要求回路３２は、追出ラインのアドレスを特定し、データ追出回路３３は、タグＲＡＭ１２にクロックを印加する。Ｔ２０６では、タグＲＡＭの追出処理の第１フローとして、タグとして記憶された有効ビット及びステートビットの読み出しを行う。読み出したステートは、Ｔ２０７に示すように、「Ｓ」又は「Ｅ」を示す。
【００６３】
時間区間Ｔ３では、データ要求回路３２は、Ｔ２０８に示すように、下位階層メモリからデータを取得する。時間区間Ｔ３から１サイクル前の時間区間Ｔ２でステート保持部３４から読み出された追出ラインのステートは、Ｔ２０７に示すように、「Ｓ」又は「Ｅ」であるので、時間区間Ｔ３では、データ追出回路３３は、データＲＡＭ１４へクロックを供給しない。
【００６４】
Ｔ２０７に示す追出ラインのステートが「Ｓ」又は「Ｅ」であるため、Ｔ２０９に示すように、データ要求回路３２は、追出ラインのアドレスを特定し、データ追出回路３３は、タグＲＡＭ１２にクロックを印加する。Ｔ２０９では、タグＲＡＭの追出処理の第２フローとして、タグＲＡＭ１２の有効ビットを、例えば、「１」から「０」に落とすことで、無効化を行う。
【００６５】
時間区間Ｔ４及びＴ５では、タグＲＡＭ１２及びデータＲＡＭ１４にデータが登録される。Ｔ２１０では、データ要求回路３２は、データＲＡＭ１４の追出ラインのウェイ、アドレス信号を活性化し、且つ、データＲＡＭ１４にクロックを印加して、データＲＡＭ１４へ、下位階層メモリ又は主記憶装置から取得したデータの登録処理を行う。また、時間区間Ｔ５では、Ｔ２１１では、タグＲＡＭ１２にクロックを印加することで、データ要求回路３２は、タグＲＡＭ１２に下位階層メモリ又は主記憶装置から取得したデータのタグをタグＲＡＭ１２に登録する。
【００６６】
時間区間Ｔ６及びＴ７は、命令制御部５によるデータアクセスの動作を示す。時間区間Ｔ６では、タグＲＡＭ１２にクロックが印加される。データＲＡＭ１４には下位階層メモリからデータアクセス対象のデータが記憶されているので、Ｔ２１３に示すように、キャッシュヒットが生じる。Ｔ２１４では、キャッシュヒット判定信号を受け取ったデータＲＡＭ１４は、タグＲＡＭ１２から出力した物理アドレスに対応するデータを、命令制御部５に出力する。時間区間Ｔ７では、Ｔ２１５に示すように、命令制御部５によるデータアクセスは完了する。
【００６７】
このように、キャッシュミスが起こった後に、キャッシュミスと判定されたタグから選択した追出ラインの追い出しを開始すると共に、追出ラインのステートが下位階層メモリにある場合、下位階層メモリに追出ラインのデータを書き戻さない。１次キャッシュメモリ１０は、ステートを判断して、追い出しを迅速に開始することが出来るとともに、主記憶装置への書き戻しという不要な処理を開始しない。データＲＡＭ１４へのクロックの供給を止めて、データＲＡＭ１４から主記憶装置へのデータの書き戻しを止めるので、１次キャッシュメモリ１０の消費電力を抑えることが出来る。
【００６８】
図７は、タグＲＡＭ及びデータＲＡＭに対するデータアクセスの一例を示すタイムチャートである。図７は、キャッシュミス後、下位階層メモリからデータを取得した時、追出ラインのステートが「Ｍ」であるため、追出ラインのデータを追い出すと共に、追出ラインのデータを主記憶装置６０へ書き込むケースを示す。なお、図７に示すＴ２０１〜Ｔ２０６、Ｔ２０８、及びＴ２１０〜Ｔ２１５は、図６に示すＴ２０１〜Ｔ２０６、Ｔ２０８、及びＴ２１０〜Ｔ２１５と同じであるので、説明を省略する。
【００６９】
時間区間Ｔ２から１サイクル前の時間区間Ｔ１でステート保持部３４から読み出された追出ラインのステートは、Ｔ２０４に示すように、「Ｓ」又は「Ｅ」である。従って、時間区間Ｔ２では時間区間Ｔ１と同様、データ追出回路３３は、データＲＡＭ１４へクロックを供給しない。データ追出回路３３は、Ｔ２２１に示すように、タグＲＡＭ１２の追出ラインのステート「Ｍ」を取得する。Ｔ２０４及びＴ２２１に示すように、追出ラインのステートがタグＲＡＭ１２からの追出処理の第１フロー中に「Ｓ／Ｅ」から「Ｍ」に変化する。
【００７０】
時間区間Ｔ３では、時間区間Ｔ３から１サイクル前の時間区間Ｔ２でデータ追出回路３３が識別する追出ラインのステートは、Ｔ２２１に示すように、「Ｍ」である。従って、データ追出回路３３は、Ｔ２２３に示すように時間区間Ｔ３でデータＲＡＭ１４へのクロック供給を行なう。Ｔ２２２に示すように、データ追出回路３３は、第１フローを再度行い、タグＲＡＭ１２にクロックを供給して、タグＲＡＭ１２からタグとして記憶された有効ビット及びステートビットの読み出しを行う。
【００７１】
Ｔ２２３及びＴ２２５では、データ追出回路３３は、データＲＡＭ１４の追出ラインのデータを、下位階層メモリである２次キャッシュメモリ４０又は２次キャッシュメモリを介して主記憶装置６０に書き戻すため、データＲＡＭ１４にクロックを印加して、データを追い出す。Ｔ２２４では、タグＲＡＭの追出処理の第２フローとして、データ追出回路３３は、タグＲＡＭ１２にクロックを供給して、タグＲＡＭの有効ビットの無効化を行う。
【００７２】
キャッシュミスが生じた後に、キャッシュミスと判定されたタグから選択した追出ラインの追い出しを開始すると共に、追い出しの途中に監視した追出ラインのステートが「Ｍ」に変更した場合、タグＲＡＭ及びデータＲＡＭのデータを下位階層メモリに書き戻す。そのため、１次キャッシュメモリ１０は、ステートを判断して、追出処理を迅速に開始することが出来るとともに、途中でステートが「Ｍ」に変更した場合も、迅速な対応することが出来る。また、追い出しの途中まで、データＲＡＭ１４へのクロックの供給を止めるので、１次キャッシュメモリ１０の消費電力を抑えることが出来る。
【００７３】
図８は、タグＲＡＭ及びデータＲＡＭに対するデータアクセスの一例を示すタイムチャートである。図８は、キャッシュミスが生じた後、下位階層メモリからデータ取得時、タグＲＡＭ１２の追出ラインの読み出しでエラーが生じたため、タグＲＡＭ１２及び１３の何れかの追出ラインのデータを追い出すケースを示す。なお、図８に示すＴ２０１〜Ｔ２０６、Ｔ２０８、及びＴ２１０〜Ｔ２１５は、図６に示すＴ２０１〜Ｔ２０６、Ｔ２０８、及びＴ２１０〜Ｔ２１５と同じであるので、説明を省略する。
【００７４】
時間区間Ｔ２から１サイクル前の時間区間Ｔ１でステート保持部３４から読み出した追出ラインのステートは、Ｔ２３１に示すように「Ｍ」である。従って、データ追出回路３３は、Ｔ２３２に示すように時間区間Ｔ２でデータＲＡＭ１４へのクロックの供給を行ない、下位階層メモリに書き戻しを行う。
【００７５】
Ｔ２３３では、追出ラインのステートがタグＲＡＭからの追出処理の第１フロー中に、タグＲＡＭの読み出しにおいてエラーが発生した場合を示す。追出ウェイ特定回路３１は、エラーが発生した追出ラインに対して追い出しを継続しない。Ｔ２３４では、リトライ処理として、データ追出回路３３は、第１フローを再度、タグＲＡＭ１２及び１３に対して行い、タグとして記憶された有効ビット及びステートビットの読み出しを行う。Ｔ２３５では、データ追出回路３３は、タグＲＡＭ１２及び１３の追出ラインのタグに相当するデータＲＡＭ１４のラインを追い出す。
【００７６】
Ｔ２３６では、データ追出回路３３は、タグＲＡＭ１２及び１３の追出ラインのステートを取得する。１つのタグＲＡＭのみエラーが生じている場合は、エラーしていないタグＲＡＭの読み出し情報を使用し、両方のタグＲＡＭにエラーが生じている場合は、ステートを「Ｍ」扱いにして追い出しを進める。
【００７７】
Ｔ２３７では、タグＲＡＭの追出処理の第２フローとして、タグＲＡＭ１２の有効ビットの無効化を行う。Ｔ２３８では、タグＲＡＭの追出処理の第２フローとして、タグＲＡＭ１３の有効ビットの無効化を行う。Ｔ２３９では、データ追出回路３３は、タグＲＡＭ１３の追出ラインのタグに相当するデータＲＡＭ１４のラインを追い出す。
【００７８】
このように、１次キャッシュメモリ１０は、キャッシュミスが生じたときの追出ラインのステートが「Ｍ」である場合、下位階層メモリからデータ取得後すぐに、データＲＡＭからのデータを追い出し、又は消去を開始する。そのため、１次キャッシュメモリ１０は、キャッシュミスによる下位階層からのデータ読出処理において、短時間で追出し処理を終了するという効果を奏する。また、タグＲＡＭにエラーが生じた場合、データ追出回路は、他のタグＲＡＭを使用して追出処理を実行するため、エラーによる追出処理の遅延を防ぐことが出来る。
【００７９】
図９は、タグＲＡＭ及びデータＲＡＭに対するデータアクセスの一例を示すタイムチャートである。図９は、キャッシュミス後、下位階層メモリからデータを取得した時、追出ラインのステートが「Ｍ」であるため、追出ラインのデータの追い出しを開始する共に、ステートが「Ｓ／Ｅ」に変更した場合、追出処理を中止するケースを示す。なお、図９に示すＴ２０１〜Ｔ２０３、Ｔ２０５、Ｔ２０８、及びＴ２１０〜Ｔ２１５は、図６に示すＴ２０１〜Ｔ２０３、Ｔ２０５、Ｔ２０８、及びＴ２１０〜Ｔ２１５と同じであるので、説明を省略する。
【００８０】
Ｔ２４１では、キャッシュミスと判定されたタグから読み出された追出ラインのステートが「Ｍ」である。従って、データ追出回路３３は、下位階層メモリに書き戻し処理を行うために、Ｔ２４２に示すように、データＲＡＭ１４にクロックを印加する。Ｔ２４３では、追出ラインのステートがタグＲＡＭからの追出処理の第１フロー中に「Ｍ」から「Ｓ／Ｅ」に変化したため、追出ウェイ特定回路３１は、時間区間Ｔ３で、データＲＡＭ１４へのクロック供給を中止する。
【００８１】
上記のように、１次キャッシュメモリ１０は、キャッシュミスが生じたときの追出ラインのデータのステートが「Ｍ」である場合、下位階層メモリからデータ取得後すぐに、データＲＡＭからのデータの追い出し又は消去を開始する。しかしながら、ステートが「Ｓ／Ｅ」に変更されると、下位階層メモリへの追出ラインのデータの書き戻しが不要となるため、データＲＡＭの追出処理及びデータＲＡＭへのクロックの供給を停止する。よって、１次キャッシュメモリ１０は、ステートを判断して、主記憶装置への不要な書き戻し処理を実行せず、クロックのも供給しない。
【００８２】
データ追出回路３３は、タグＲＡＭ用クロック制御回路２００、４００、データＲＡＭ用クロック制御回路３００を有する。図１０は、タグＲＡＭ用クロック制御回路の詳細例を示す図である。
【００８３】
図１０に示すタグＲＡＭ用クロック制御回路２００は、タグＲＡＭ１２へ供給するクロックを制御する回路である。タグＲＡＭ用クロック制御回路２００は、データ追出回路３３が、タグＲＡＭ１２に対して追出アクセスを開始したとき、タグＲＡＭ１２にクロックを供給する。
【００８４】
タグＲＡＭ用クロック制御回路２００は、ＯＲ回路２０１、ラッチ回路２０２、ＯＲ回路２０３、クロック出力回路２０４を有する。ＯＲ回路２０１は、データ追出回路３３の制御部から、追出アクセスを受け取ると、ＯＲ回路２０３及びラッチ回路２０２に信号を出力する。ラッチ回路２０２は、ＯＲ回路２０１の出力を１サイクル分ラッチする。ＯＲ回路２０３は、Ｐ１時間にＯＲ回路２０１からの信号を受け取り、又は、Ｐ２時間にラッチ回路２０２の信号を受け取るので、２クロックサイクルに亘って、クロック出力回路２０４にイネーブル信号を出力する。クロック出力回路２０４は、ＯＲ回路２０３からの信号をイネーブル信号として受け取り、クロックに同期することで、パイプラインのＰ２及びＰ３サイクルに亘って、タグＲＡＭ１２にクロックを供給する。
【００８５】
図１１は、データＲＡＭ用クロック制御回路の詳細例を示すタイムチャートである。図１１に示すデータＲＡＭ用クロック制御回路３００は、データＲＡＭ１４へ供給するクロックを制御する回路である。データＲＡＭ用クロック制御回路３００は、データ追出回路３３の制御部から追出アクセスを受け取り且つ追出ラインのステートが「Ｍ」のとき、又は、登録アクセスを受け取ったときに、データＲＡＭ１４にクロックを供給する。データＲＡＭ用クロック制御回路３００は、ＯＲ回路３０１、３０３、３０５、ＡＮＤ回路３０２、ラッチ回路３０４、及びクロック出力回路３０６を有する。
【００８６】
ＯＲ回路３０１は、データ要求回路３２から、追出ラインのステート「Ｍ」、又は、リトライステートを受け取ったとき、ＡＮＤ回路３０２に信号を出力する。ＯＲ回路３０１の信号が出力されない限り、データＲＡＭ用クロック制御回路３００はクロックを出力しないので、追い出しラインのステートが「Ｍ」のときに限り、データＲＡＭ用クロック制御回路３００はクロックを出力するように動作する。
【００８７】
ＡＮＤ回路３０２は、データ追出回路３３の制御部から追出アクセスを受け取り、且つ、ＯＲ回路３０１からの信号を受け取ったとき、ＯＲ回路３０３に信号を出力する。ＯＲ回路３０３は、ＡＮＤ回路３０２からの信号を受け取るか、登録アクセスなどの追出アクセス以外のアクセスをデータ追出回路３３の制御部から受け取ったとき、ＯＲ回路３０５及びラッチ回路３０４に信号を出力する。
【００８８】
ラッチ回路３０４は、ＯＲ回路３０３の出力を１サイクル分保持する。ＯＲ回路３０５は、Ｐ１時間にＯＲ回路３０３からの信号を受け取り、又は、Ｐ２時間にラッチ回路３０４の信号を受け取るので、２クロックサイクルに亘って、クロック出力回路３０６に信号を出力する。クロック出力回路３０６は、ＯＲ回路３０３からの信号をイネーブル信号として受け取り、クロックに同期することで、パイプラインのＰ２及びＰ３サイクルに亘って、タグＲＡＭ１２にクロックを供給する。
【００８９】
図１２は、タグＲＡＭ用クロック制御回路の詳細例を示す図である。図１２に示すタグＲＡＭ用クロック制御回路４００は、タグＲＡＭ１３にクロックを供給する回路である。上記したように、タグＲＡＭ１３は、タグの読み出しエラーが発生し、追出ラインを設けるために、クロックが供給される。そのため、タグＲＡＭ用クロック制御回路４００は、ＡＮＤ回路４０１に示すように、タグエラー信号を受け取ると、動作する。また、タグＲＡＭ用クロック制御回路４００は、ＡＮＤ回路４０２に示すように追出処理において読み出したタグのステートが「Ｍ」のとき、動作する。
【００９０】
タグＲＡＭ用クロック制御回路４００は、ＡＮＤ回路４０１、４０２、４０４、４０６、ＯＲ回路４０３、４０７、４０９、ラッチ回路４０８、及びクロック出力回路４１０を有する。タグＲＡＭ用クロック制御回路４００は、追出ラインから読み出したステートが「Ｍ」ではなく、且つタグエラー信号が入力されるとともに、第１フローの追い出しアクセスの場合に、クロックをタグＲＡＭ１３に供給する回路である。
【００９１】
ＡＮＤ回路４０１は、追い出しにおいてタグエラー信号によりタグエラーを検出したとき、信号を出力するように動作する。ＡＮＤ回路４０１は、データ追出回路３３の制御部から追出処理アクセス、及び、タグエラー信号を受け取ると、信号をＯＲ回路４０３に出力する。ＡＮＤ回路４０２は、追い出しにおいて追出ラインから読み出したステートが「Ｍ」であった場合に、信号を出力するように動作する。ＡＮＤ回路４０２は、データ追出回路３３の制御部から追出処理アクセス、追出処理の第１フローでＭステートを読み出し、且つ、データ要求回路で保持したステートがＭではない場合、信号をＯＲ回路４０３に出力する。ＯＲ回路４０３は、リトライステート、ＡＮＤ回路４０１からの信号、ＡＮＤ回路４０２からの信号を受け取ると、信号をＡＮＤ回路４０４に出力する。
【００９２】
ＡＮＤ回路４０４は、追出アクセスの第２フローでは信号を出力しないように動作する。第２フローの追出アクセスの反転信号と、ＯＲ回路４０３の出力とを受け取るとき、ラッチ回路４０５に信号を出力する。ラッチ回路４０５は、ＡＮＤ回路４０４が追出アクセスの第２フローの信号を受け取るまで、リトライステートを保持する。ＡＮＤ回路４０６は、リトライステートと、第１フローの追出アクセスとを受け取るとき、信号を出力する回路である。ＯＲ回路４０７は、データ追出回路３３の制御部から追出アクセス以外のアクセス、第２フローの追出アクセス、ＡＮＤ回路４０６からの信号のいずれかを受け取るとき、信号を出力する。
【００９３】
ラッチ回路４０８は、パイプラインのＰ２時間に加えて、パイプラインのＰ３時間にもクロックを供給するために、ＯＲ回路３０３の出力を１サイクル分保持する。ＯＲ回路４０９は、Ｐ１時間にＯＲ回路４０７からの信号を受け取り、又は、Ｐ２時間にラッチ回路２０２からの信号を受け取るので、２クロックサイクルに亘って、クロック出力回路４１０に信号を出力する。クロック出力回路４１０は、ＯＲ回路４０９からの信号をイネーブル信号として受け取り、クロックに同期することで、パイプラインのＰ２及びＰ３サイクルに亘って、タグＲＡＭ１３にクロックを供給する。
【００９４】
図１３は、キャッシュミスのデータアクセスの一例を示すタイムチャートである。Ｔ３０１では、ＯＲ回路２０１は、追出アクセス及び追出アクセス以外のアクセスで動作するので、タグＲＡＭ用クロック制御回路２００は、クロックをタグＲＡＭ１２に供給する。Ｔ３０５では、ラッチ回路２０２に保持した信号により、タグＲＡＭ用クロック制御回路２００は、クロックをタグＲＡＭ１２に供給する。
【００９５】
Ｔ３０２では、ＯＲ回路４０７は、追出アクセス及び追出アクセス以外のアクセスで動作するので、タグＲＡＭ用クロック制御回路４００は、クロックをタグＲＡＭ１３に供給する。Ｔ３０６では、ラッチ回路４０８に保持した信号により、タグＲＡＭ用クロック制御回路４００は、クロックをタグＲＡＭ１３に供給する。Ｔ３０３では、ＯＲ回路３０３は、追出アクセス以外のアクセスにより動作することで、データＲＡＭ用クロック制御回路３００は、クロックをデータＲＡＭ１４に供給する。Ｔ３０７では、ラッチ回路３０４が信号を保持することにより、データＲＡＭ用クロック制御回路３００は、クロックをデータＲＡＭ１４に供給する。Ｔ３０８では、タグＲＡＭ１２、１３、及びデータＲＡＭ１４へのクロック供給の結果、タグ又はデータが読み出される。Ｔ３０４では、タグ読み出しにより、キャッシュミスが生じる。Ｔ３０９では、キャッシュミスにより、データ要求回路３２が下位階層メモリへデータを要求する。
【００９６】
図１４は、キャッシュヒットのデータアクセスの一例を示すタイムチャートである。図１４に示すＴ３１１〜Ｔ３１３及びＴ３１５〜Ｔ３１８は、図１３に示すＴ３０１〜Ｔ３１３及びＴ３１５〜Ｔ３０８にそれぞれ相当するので、説明を省略する。Ｔ３１９では、キャッシュヒットにより、データＲＡＭ１４に記憶したデータが、下位階層渇主への読み出しをせずに使用されるので、パイプラインＰ４で命令制御部５へデータが送出されて、Ｔ３２０でアクセスが完了する。
【００９７】
図１５は、タグＲＡＭ及びデータＲＡＭへの登録処理の一例を示すタイムチャートである。Ｔ３３１では、登録処理は、追出アクセス以外のアクセスであるため、ＯＲ回路３０３が追出アクセス以外のアクセスを受け取ることで、データＲＡＭ用クロック制御回路３００はデータＲＡＭ１４にクロックを供給する。Ｔ３３２では、ＯＲ回路２０１が追出アクセス以外のアクセスを受け取ることで、タグＲＡＭ用クロック制御回路２００はタグＲＡＭ１２にクロックを供給する。Ｔ３３３では、ＯＲ回路４０７が追出アクセス以外のアクセスを受け取ることで、タグＲＡＭ用クロック制御回路４００はタグＲＡＭ１３にクロックを供給する。Ｔ３３４では、ＯＲ回路３０３が追出アクセス以外のアクセスを受け取ることで、データＲＡＭ用クロック制御回路３００はデータＲＡＭ１４にクロックを供給する。
【００９８】
図１６は、タグの追出処理の一例を示すタイムチャートである。図１６のタイムチャートは、追出処理前のステートが「Ｓ」又は「Ｅ」であり、追出処理後のステートが変化しない場合の追出処理を示す。Ｔ３４１では、ＯＲ回路２０１は追出アクセスを受け取ることにより、タグＲＡＭ用クロック制御回路２００は、クロックをタグＲＡＭ１２に供給する。Ｔ３４２では、ラッチ回路３０４が信号を保持することにより、タグＲＡＭ用クロック制御回路２００は、クロックをタグＲＡＭ１３に供給する。Ｔ３４３では、ＯＲ回路２０１が追出アクセス以外のアクセスを受け取ることで、タグＲＡＭ用クロック制御回路２００はタグＲＡＭ１２にクロックを供給する。なお、図６及び図１１を用いて説明したように、追出ラインのステートは、「Ｍ」ではないので、データＲＡＭ用クロック制御回路３００は、クロックをデータＲＡＭ１４に供給しない。
【００９９】
図１７は、タグ及びデータの追出処理の一例を示すタイムチャートである。図１７のタイムチャートは、追出処理前のステートが「Ｍ」であり、追出処理後のステートが変化しない場合の追出処理を示す。図１７に示すＴ３５１、Ｔ３５３、及びＴ３５５は、図１６に示すＴ３４１、Ｔ３４２、及びＴ３４３にそれぞれ相当するので、説明を省略する。Ｔ３５２では、ＡＮＤ回路３０２は、第１フローの追出アクセスと、データ要求回路の「Ｍ」ステートで動作することで、データＲＡＭ用クロック制御回路３００は、データＲＡＭ１４にクロックを供給する。Ｔ３５４では、ラッチ回路３０４がＯＲ回路３０３からの信号を一定期間保持して、ＯＲ回路３０５に信号を出力することにより、データＲＡＭ用クロック制御回路３００は、データＲＡＭ１４にクロックを供給する。Ｔ３５６では、ＡＮＤ回路３０２は、第２フローの追出アクセスと、データ要求回路の「Ｍ」ステートで動作することで、データＲＡＭ用クロック制御回路３００は、データＲＡＭ１４にクロックを供給する。Ｔ３５７では、ラッチ回路３０４がＯＲ回路３０３からの信号を一定期間保持して、ＯＲ回路３０５に信号を出力することにより、データＲＡＭ用クロック制御回路３００は、データＲＡＭ１４にクロックを供給する。
【０１００】
図１８は、タグの追出処理の一例を示すタイムチャートである。図１８のタイムチャートは、追出処理前のステートが「Ｓ」又は「Ｅ」であり、追出処理後のステートが「Ｍ」に変化する場合の追出処理を示す。Ｔ３６１及びＴ３６２では、図１６に示したＴ３４１及びＴ３４２と同じ処理が行われる。７クロックサイクル以降は、第１フローでデータ追出回路３３が読み出しデータのステートが「Ｍ」に変更されたため、図１７と同じ処理が繰り返される。
【０１０１】
図１９は、タグの追出処理の一例を示すタイムチャートである。図１９のタイムチャートは、追出処理前のステートが「Ｍ」であり、第１フローでエラーを検出し、第２フローのステートも変化しない場合の追出処理を示す。Ｔ３７１及びＴ３７３は、図１７に示すＴ３５１及びＴ３５３に対応し、Ｔ３７２及びＴ３７４は、図１７に示すＴ３５２及びＴ３５４に相当するため、説明を省略する。Ｔ３７５では、エラーが検出される。第２フローのタグＲＡＭ１２へのクロックの供給Ｔ３７６及びＴ３７９、及び、第２フローのデータＲＡＭ１４へのクロックの供給Ｔ３７８及びＴ３８１は、それぞれ図１７に示すＴ３５１及びＴ３５３、及び、Ｔ３５２及びＴ３５４に相当するため、説明を省略する。
【０１０２】
第１フローリトライのＰ２サイクルであるＴ３７７では、ＡＮＤ回路４０１は、Ｔ３７５で検出したタグエラーを受け取り、ＡＮＤ回路４０４は、第２フローの追出アクセスの反転信号を受け取る。さらに、ＡＮＤ回路４０６が第１フローの追出アクセスを受け取ることで、タグＲＡＭ用クロック制御回路４００は、タグＲＡＭ１３にクロックを供給する。第１フローのＰ３サイクルであるＴ３８０では、ラッチ回路４０８がＯＲ回路４０７の出力をラッチすることで、タグＲＡＭ用クロック制御回路４００は、タグＲＡＭ１３にクロックを供給する。第２フローのＰ２サイクルであるＴ３８３では、ＯＲ回路４０７は、第２フローの追出アクセスを受け取って、動作することで、タグＲＡＭ用クロック制御回路４００は、タグＲＡＭ１３へクロックを供給する。
【０１０３】
図２０は、タグの追出処理の一例を示すタイムチャートである。図２０のタイムチャートは、追出処理前のステートが「Ｍ」であり、第１フロー終了後、ステートが「Ｓ」又は「Ｅ」に変化する場合の追出処理を示す。図２０の第１フローは、図１７の第１フローと同じなので、説明を省略する。第２フローでは、ステートが「Ｍ」ではないので、図１１に示すＯＲ回路３０１が動作せず、データＲＡＭ用クロック制御回路３００は、データＲＡＭ１４へクロックを供給しない。一方、Ｔ３９６では、第２フローの追出アクセスで、ＯＲ回路２０１が動作して、タグＲＡＭ用クロック制御回路２００は、タグＲＡＭ１２へクロックを供給する。２フローでタグＲＡＭの読み出しを行う場合において、１フロー後にステートが「Ｍ」から「Ｓ」又は「Ｅ」に変化すると、データ追出回路３３は、データＲＡＭ１４へクロックを供給しないので、１次キャッシュメモリ１０の消費電力を抑えることが出来る。
【０１０４】
図２１Ａ〜図２１Ｄは、記憶装置が行うデータ処理の一例を示すフローチャートである。まず、１次キャッシュメモリ１０が、命令制御部５から供給されたメモリアクセス要求を受け取る（Ｓ１００１）。ロウデコーダが、メモリアクセス要求に含まれるインデックスアドレスに対応するタグＲＡＭのキャッシュラインを検索する（Ｓ１００２）。比較回路１６又は１７は、キャッシュミスが生じたか否かを判定する（Ｓ１００３）。言い換えれば、比較回路１６又は１７は、タグＲＡＭ１２又は１３から検索したキャッシュラインのタグが、アクセス要求の対象データのタグと一致するか否かを比較し、一致しない場合、キャッシュミス信号を出力する。
【０１０５】
キャッシュヒットの場合（Ｓ１００３  Ｎｏ）、比較回路１６、１７は、キャッシュヒットしたタグ及びウェイを特定する信号を、データＲＡＭ１４に供給する（Ｓ１１０１）。データＲＡＭ１４は、受け取ったタグ及びウェイにより特定されるデータを、命令制御部５に供給し（Ｓ１１０２）、処理を終了する。
【０１０６】
キャッシュミスが生じた場合（Ｓ１００３  Ｙｅｓ）、データ制御回路３０は、キャッシュミスが生じたデータを下位階層メモリに要求する（Ｓ１００４）。データ制御回路３０は、読み出したタグから追出ラインを決定する（Ｓ１００５）。言い換えれば、タグＲＡＭがｎウェイセットアソシアティブ方式の場合、データ制御回路３０は、タグを出力したウェイを選択して、選択されたウェイが出力したタグのラインを、追出ラインとする。データ制御回路３０は、追出ラインのステートが、「Ｍ」か否かを判断する（Ｓ１００６）。
【０１０７】
そして、追出ラインのステートが「Ｍ」の場合（Ｓ１００６  Ｙｅｓ）、図２１Ｂに示すように、データ制御回路３０は、第１フローの追出処理として、タグＲＡＭ１２又は１３、及びデータＲＡＭ１４にクロックの供給を開始して、追出ラインを読み出す（Ｓ１００７）。データ制御回路３０は、読み出しエラーが発生したか否かを判断する（Ｓ１００８）。読出しエラーが発生しない場合（Ｓ１００８  エラー無し）、ステップＳ１００９に進む。読出しエラーが発生した場合（Ｓ１００８  エラー有り）、ステップＳ１３０１に進む。
【０１０８】
図２１Ｂに示すように、データ制御回路３０は、読み出した追出ラインのステートがＭか否か判断する（Ｓ１００９）。追出ラインのステートがＭの場合（Ｓ１００９  Ｙｅｓ）、データ制御回路３０は、第２フローの追出処理として、タグＲＡＭ１２又は１３にクロックを供給して、追出ラインを無効化するとともにデータＲＡＭ１４の追出ラインを読み出す（Ｓ１０１０）。データ制御回路３０は、読み出したタグ及びデータを下位階層メモリに書き込む（Ｓ１０１１）。データ制御回路３０は、タグＲＡＭ及びデータＲＡＭにクロックを供給して、下位階層メモリから取得したタグ及びデータをそれぞれ書き込む（Ｓ１０１２）。データＲＡＭ１４は、受け取ったタグ及びウェイにより特定されるデータを、命令制御部５に供給し（Ｓ１０１３）、処理を終了する。
【０１０９】
図２１Ａに示すステップＳ１００６において、追出ラインのステートが「Ｍ」ではなく、追出ラインのステートが「Ｓ」又は「Ｅ」の場合（Ｓ１００６  Ｎｏ）、データ制御回路３０は、第１フローの追出処理として、タグＲＡＭ１２にクロックの供給を開始して追出ラインのタグを読み出すとともに、データＲＡＭ１４にはクロックを供給しない（Ｓ１２０１）。データ制御回路３０は、読み出しエラーが発生したか否かを判断する（Ｓ１２０２）。読出しエラーが発生しない場合（Ｓ１２０２  エラー無し）、ステップＳ１２０３に進む。読出しエラーが発生した場合（Ｓ１２０２  エラー有り）、ステップＳ１３０１に進む。データ制御回路３０は、読み出した追出ラインのステートが「Ｓ」又は「Ｅ」か判断する（Ｓ１２０３）。追出ラインのステートが「Ｓ」又は「Ｅ」の場合（Ｓ１２０３  Ｙｅｓ）、データ制御回路３０は、第２フローの追出処理として、タグＲＡＭにクロックを供給して、追出ラインを無効化するとともに、データＲＡＭ１４にはクロックを供給しない（Ｓ１２０４）。データ制御回路３０は、読み出したタグを下位階層メモリに書き込み（Ｓ１２０５）、ステップＳ１０１２に進む。追出ラインのステートが「Ｍ」の場合（Ｓ１２０３  Ｎｏ）、ステップＳ１００７に進む。
【０１１０】
図２１Ｂに示すステップＳ１００９において、追出ラインのステートが「Ｍ」ではなく、追出ラインのステートが「Ｓ」又は「Ｅ」の場合（Ｓ１００９  Ｎｏ）、データ制御回路３０は、第２フローの追出処理として、タグＲＡＭ１２又は１３にクロックを供給して、追出ラインを無効化し、データＲＡＭ１４にクロックを供給しない（Ｓ１０５１）。データ制御回路３０は、読み出したタグを下位階層メモリに書き込み（Ｓ１０５２）、ステップＳ１０１２に進む。
【０１１１】
図２１Ｄに示すように、データ制御回路３０は、第１フローの追出処理として、複数のタグＲＡＭ、及びデータＲＡＭ１４にクロックを、それぞれ供給する（Ｓ１３０１）。データ制御回路３０は、読み出しエラーが発生したか否かを判断する（Ｓ１３０２）。読出しエラーが発生しない場合（Ｓ１３０２  エラー無し）、ステップＳ１３０３に進む。読出しエラーが発生した場合（Ｓ１３０２  エラー有り）、ステップＳ１３０５に進む。データ制御回路３０は、追出ラインのステートが、「Ｍ」か否かを判断する（Ｓ１３０３）。追出ラインのステートが「Ｍ」の場合（Ｓ１３０３  Ｙｅｓ）、データ制御回路３０は、第２フローの追出処理として、タグＲＡＭ１２及びデータＲＡＭ１４にクロックを供給して、追出ラインを無効化し（Ｓ１３０５）、ステップＳ１３０６に進む。追出ラインのステートが「Ｓ」又は「Ｅ」の場合（Ｓ１３０３  Ｎｏ）、データ制御回路３０は、第２フローの追出処理として、タグＲＡＭ１２及びデータＲＡＭ１４にクロックを供給して、追出ラインを無効化し（Ｓ１３０４）、ステップＳ１３０６に進む。データ制御回路３０は、読み出したタグ及びデータを下位階層メモリに書き込み（Ｓ１３０６）、処理を終了する。
【符号の説明】
【０１１２】
１    演算処理装置
５    命令制御部
１０    記憶装置
１１    アドレス変換回路
１２、１３    タグＲＡＭ
１４    データＲＡＭ
１６、１７    比較回路
１８    エラーチェック回路
３０    データ制御回路
３１    追出ウェイ特定回路
３２    データ要求回路
３３    データ追出回路
３４    ステート保持部
５０    ２次キャッシュメモリ
６０    主記憶装置
２００    タグＲＡＭ用クロック制御回路
３００    データＲＡＭ用クロック制御回路
４００    タグＲＡＭ用クロック制御回路
【図１】
2011028736.tif 000003
【図２】
2011028736.tif 000004
【図３】
2011028736.tif 000005
【図４】
2011028736.tif 000006
【図５】
2011028736.tif 000007
【図６】
2011028736.tif 000008
【図７】
2011028736.tif 000009
【図８】
2011028736.tif 000010
【図９】
2011028736.tif 000011
【図１０】
2011028736.tif 000012
【図１１】
2011028736.tif 000013
【図１２】
2011028736.tif 000014
【図１３】
2011028736.tif 000015
【図１４】
2011028736.tif 000016
【図１５】
2011028736.tif 000017
【図１６】
2011028736.tif 000018
【図１７】
2011028736.tif 000019
【図１８】
2011028736.tif 000020
【図１９】
2011028736.tif 000021
【図２０】
2011028736.tif 000022
【図２１Ａ】
2011028736.tif 000023
【図２１Ｂ】
2011028736.tif 000024
【図２１Ｃ】
2011028736.tif 000025
【図２１Ｄ】
2011028736.tif 000026