(57)【要約】【課題】アクセス時間を短縮する効果を得つつ、消費電力を低減することを目的とする。【解決手段】キャッシュメモリ１は、セット番号が複数のグループに分けられ、そのグループ毎にタグメモリブロックを有するとともに、各タグメモリブロック内にそのグループに属するセット番号毎に複数の領域からなるタグアレイを有するタグメモリ７と、前記グループ毎にデータメモリブロックを有するとともに、各データメモリブロック内にそのグループに属するセット番号毎に複数の領域からなるデータアレイを有するデータメモリ８とを備える。キャッシュメモリ１は、要求されたデータのセット番号が属するタグメモリブロックの各領域とデータメモリブロックの各領域とから並列してデータを読み出す。【選択図】図６
2012022567.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサから送信されるアドレスに対応するキャッシュデータを読み出して、読み出したキャッシュデータを前記プロセッサへ送信するキャッシュメモリであり、
１つのセット番号に複数のアドレスが割り当てられたセット番号が複数のグループに分けられ、そのグループ毎にタグメモリブロックを有するとともに、各タグメモリブロック内にそのグループに属するセット番号毎に複数の領域からなるタグアレイを有するタグメモリであって、各タグメモリブロックにおける各タグアレイの各領域に、そのタグアレイに対応するセット番号が割り当てられた複数のアドレスのうちいずれかのアドレスに対応するタグ情報を保持するタグメモリと、
前記グループ毎にデータメモリブロックを有するとともに、各データメモリブロック内にそのグループに属するセット番号毎に複数の領域からなるデータアレイを有するデータメモリであって、前記タグメモリが保持するタグ情報に対応するアドレスのデータをキャッシュデータとして、そのタグ情報が保持されるタグアレイの領域に対応するデータアレイの領域に保持するデータメモリと、
前記プロセッサから送信されるアドレスを受信するインターフェース部と、
前記インターフェース部が受信したアドレスからセット番号を計算するアクセス制御部と、
前記アクセス制御部が計算したセット番号が属するグループのタグメモリブロックにアクセスし、そのセット番号のタグアレイのいずれかの領域に前記インターフェース部が受信したアドレスに対応するタグ情報が保持されているか否かを判定するアドレスコントロール部と、
前記アクセス制御部が計算したセット番号が属するグループのデータメモリブロックにアクセスし、そのセット番号のデータアレイの各領域からキャッシュデータを読み出すデータコントロール部と
を備え、
前記インターフェース部は、前記アドレスに対応するタグ情報が保持されていると前記アドレスコントロール部が判定した場合、前記タグ情報が保持されているタグアレイの領域に対応するデータアレイの領域から、前記データコントロール部が読み出したキャッシュデータを前記プロセッサへ送信する
ことを特徴とするキャッシュメモリ。
【請求項２】
前記データコントロール部は、前記アドレスコントロール部がアドレスに対応するタグ情報が保持されているか否かを判定する処理と並列して、前記データメモリブロックにアクセスする
ことを特徴とする請求項１に記載のキャッシュメモリ。
【請求項３】
前記データメモリが有する各データアレイの各領域は、保持されるデータの上位所定のビット数のデータが保持される上位データメモリと、残りの下位のビットのデータが保持される下位データメモリとに分かれており、
前記データコントロール部は、データアレイからキャッシュデータを読み出す場合、前記上位データメモリと前記下位データメモリとから並列してデータを読み出す
ことを特徴とする請求項１又は２に記載のキャッシュメモリ。
【請求項４】
前記データコントロール部は、前記アドレスコントロール部が前記タグ情報を検索している間は、前記上位データメモリと前記下位データメモリとのいずれかからのみデータを読み出す
ことを特徴とする請求項３に記載のキャッシュメモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プロセッサがメモリからデータを取得するアクセス時間を短縮するためのキャッシュメモリに関する。特に、この発明は、セットアソシアティブ方式で構成されたキャッシュメモリの構成および制御方式に関する。
【背景技術】
【０００２】
特許文献１には、タグ情報とデータとを別個のメモリブロックとして構成したキャッシュメモリについての記載がある。このキャッシュメモリでは、プロセッサからの読出しに対し、キャッシュメモリのヒット／ミスヒットを判定する際にはデータメモリにはアクセスせず、タグメモリのみにアクセスすることで、消費電力を低減する効果を得ている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−３１８０８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載されたキャッシュメモリでは、タグメモリとデータメモリとを順に読出しする必要があり、キャッシュメモリ本来のアクセス時間短縮の効果が弱い。
なお、タグとデータとを同一のメモリブロックとして構成したキャッシュメモリでは、タグ情報とデータとを同時に読み出すことでアクセス時間を短縮することはできるが、データメモリにおける該当するセット番号の全領域（全ｗａｙ）へアクセスするため、特許文献１に記載されたキャッシュメモリに比べ消費電力が多くなる。
【０００５】
この発明は、アクセス時間を短縮する効果を得つつ、消費電力を低減することを目的とする。
【課題を解決するための手段】
【０００６】
この発明に係るキャッシュメモリは、
プロセッサから送信されるアドレスに対応するキャッシュデータを読み出して、読み出したキャッシュデータを前記プロセッサへ送信するキャッシュメモリであり、
１つのセット番号に複数のアドレスが割り当てられたセット番号が複数のグループに分けられ、そのグループ毎にタグメモリブロックを有するとともに、各タグメモリブロック内にそのグループに属するセット番号毎に複数の領域からなるタグアレイを有するタグメモリであって、各タグメモリブロックにおける各タグアレイの各領域に、そのタグアレイに対応するセット番号が割り当てられた複数のアドレスのうちいずれかのアドレスに対応するタグ情報を保持するタグメモリと、
前記グループ毎にデータメモリブロックを有するとともに、各データメモリブロック内にそのグループに属するセット番号毎に複数の領域からなるデータアレイを有するデータメモリであって、前記タグメモリが保持するタグ情報に対応するアドレスのデータをキャッシュデータとして、そのタグ情報が保持されるタグアレイの領域に対応するデータアレイの領域に保持するデータメモリと、
前記プロセッサから送信されるアドレスを受信するインターフェース部と、
前記インターフェース部が受信したアドレスからセット番号を計算するアクセス制御部と、
前記アクセス制御部が計算したセット番号が属するグループのタグメモリブロックにアクセスし、そのセット番号のタグアレイのいずれかの領域に前記インターフェース部が受信したアドレスに対応するタグ情報が保持されているか否かを判定するアドレスコントロール部と、
前記アクセス制御部が計算したセット番号が属するグループのデータメモリブロックにアクセスし、そのセット番号のデータアレイの各領域からキャッシュデータを読み出すデータコントロール部と
を備え、
前記インターフェース部は、前記アドレスに対応するタグ情報が保持されていると前記アドレスコントロール部が判定した場合、前記タグ情報が保持されているタグアレイの領域に対応するデータアレイの領域から、前記データコントロール部が読み出したキャッシュデータを前記プロセッサへ送信する
ことを特徴とする。
【発明の効果】
【０００７】
この発明に係るキャッシュメモリは、タグ情報とキャッシュデータとを同時に読み出すためアクセス時間を短縮することができる。また、このキャッシュメモリは、タグ情報が保持されるタグメモリと、キャッシュデータが保持されるデータメモリとが、グループ毎に複数のメモリブロックに分かれており、そのうちキャッシュデータが格納されている可能性のあるメモリブロックにのみアクセスする。そのため、駆動するメモリブロックを少なくでき、消費電力を低減することができる。さらに、駆動するメモリブロックをデータ内で複数に分割し、分割数に応じた周期で並列に読み出すことにより消費電力を低減することができる。
【図面の簡単な説明】
【０００８】
【図１】メインメモリからキャッシュメモリへのデータコピーの説明図。
【図２】フルアソシアティブ方式の説明図。
【図３】ダイレクトマップ方式の説明図。
【図４】セットアソシアティブ方式の説明図。
【図５】セットアソシアティブ方式におけるキャッシュメモリの構成図。
【図６】実施の形態１に係るキャッシュメモリ１の説明図。
【図７】タグメモリ７の構成図。
【図８】データメモリ８の構成図。
【図９】バーストアクセス制御部９の構成図。
【図１０】キャッシュメモリ１の動作を示すタイミングチャート。
【図１１】メモリブロックのアウトプットを抑止する回路構成の例を示す図。
【発明を実施するための形態】
【０００９】
実施の形態１．
まず、キャッシュメモリの基本的な事項について簡単に説明する。
キャッシュメモリは、プロセッサがメインメモリにアクセスするアクセス時間を短縮するために用いられる。キャッシュメモリは、メインメモリよりも容量が小さく高速なメモリであり、プロセッサに頻繁に利用される（可能性の高い）一部のデータを、メインメモリからコピーしておき、要求に応じてプロセッサにコピーしたデータを提供する。
【００１０】
図１は、メインメモリからキャッシュメモリへのデータコピーの説明図である。
キャッシュメモリは、所定の単位データのサイズ毎に、メインメモリのデータをコピーする。一般に、この単位データをキャッシュラインと呼び、そのサイズをラインサイズと呼ぶ。なお、ここでは、ラインサイズを１２８バイトとしている。キャッシュメモリにおいて、キャッシュラインを格納する各領域をラインと呼び、各ラインにはライン番号が付けられている。
通常、各キャッシュラインのメインメモリにおける開始アドレスは、ラインサイズの整数倍のアドレスに限定される。つまり、メインメモリのデータを、先頭からラインサイズ毎に分割してできるブロック毎に、メインメモリからキャッシュメモリへデータがコピーされる。
【００１１】
キャッシュメモリがコピーしたデータを保持する方式には、フルアソシアティブ方式、ダイレクトマップ方式、セットアソシアティブ方式等がある。
【００１２】
図２は、フルアソシアティブ方式の説明図である。
図２に示すように、フルアソシアティブ方式は、コピーしたデータをキャッシュメモリにおけるどこのラインにでも格納可能な方式である。
フルアソシアティブ方式では、各ラインにメインメモリのどのブロックでも保持できるため、キャッシュメモリの利用効率という観点では効率がよい。しかし、フルアソシアティブ方式では、要求されたデータがどのラインに保持されているかを判定するアドレス比較回路の規模が大きくなることから、回路規模や消費電力が増大してしまう。
【００１３】
図３は、ダイレクトマップ方式の説明図である。
図３に示すように、ダイレクトマップ方式は、メインメモリにおけるアドレスに応じて格納するラインを限定した方式である。例えば、メインメモリのアドレスの小さい順にブロックを並べ、各ブロックを順に各ライン番号に割り当てる。図３では、ブロック０，ｎ，２ｎ，・・・がライン番号０に割り当てられ、ブロック１，ｎ＋１，２ｎ＋１，・・・がライン番号１に割り当てられる。
ダイレクトマップ方式では、要求されたデータのアドレスから一意にライン番号を特定できるため、読出し時間が短い。しかし、ダイレクトマップ方式では、例えば、ちょうどライン数の整数倍離れたブロック（例えば、ブロック０とブロックｎ）のデータを交互に読み出すような場合、常にキャッシュメモリにデータがなく、メインメモリにアクセスしなければならなくなる。この現象は、スラッシングと呼ばれ、性能が著しく低下してしまう。
【００１４】
図４は、セットアソシアティブ方式の説明図である。なお、図４は、２ｗａｙセットアソシアティブ方式を例として示す。
図４に示すように、セットアソシアティブ方式は、ダイレクトマップ方式と同様に、メインメモリにおけるアドレスに応じて格納するラインを限定した方式である。しかし、セットアソシアティブ方式は、ダイレクトマップ方式とは異なり、キャッシュメモリの各ライン（セットアソシアティブ方式ではセットと呼ぶ）に複数の領域からなるアレイを有する。ここでは、２ｗａｙセットアソシアティブ方式であるため、各セットにｗａｙ０とｗａｙ１との２つの領域からなるアレイを有する。Ｘ個の領域からなるアレイを有する場合、Ｘｗａｙセットアソシアティブ方式と呼ばれる。
Ｘｗａｙセットアソシアティブ方式では、キャッシュメモリは、同じセット番号に割り当てられたブロックのデータを同時にＸ個保持することができる。したがって、アレイの領域数Ｘを増やすほど、ダイレクトマップ方式で説明したスラッシングが発生しづらい。
【００１５】
図５は、セットアソシアティブ方式におけるキャッシュメモリの構成図である。なお、図５は、２ｗａｙセットアソシアティブ方式を例として示す。
図５に示すように、セットアソシアティブ方式では、キャッシュメモリは、タグ情報を保持するタグメモリと、キャッシュデータを保持するデータメモリとを有する。そして、タグメモリとデータメモリとは、それぞれ同じ数のセットを有するとともに、同じ数の領域からなるアレイを有している。
プロセッサからキャッシュメモリに送信されるリード命令には、要求するデータのアドレスが含まれる。キャッシュメモリは、リード命令に含まれるアドレスからセット番号を計算して、タグメモリにおける計算したセット番号のアレイの各領域からタグ情報を取得する。取得したタグ情報と読み出し要求に含まれるアドレス情報とが一致していれば、要求したデータがキャッシュメモリに保持されていることがわかる。そして、一致したタグ情報から要求したデータが格納されている領域の識別情報（ｗａｙ番号）を特定し、計算したセット番号のデータアレイにおける、特定したｗａｙ番号の領域から、データを取得する。例えば、一致したタグ情報が保持されていた領域の識別情報（ｗａｙ番号）、要求したデータが格納されている領域の識別情報（ｗａｙ番号）として特定する。一方、対応するタグ情報が保持されていなければ、要求されたデータがキャッシュメモリに保持されていないことがわかる。したがって、キャッシュメモリは、メインメモリから要求されたデータを取得する必要がある。
【００１６】
次に、実施の形態１に係るキャッシュメモリ１について説明する。
図６は、実施の形態１に係るキャッシュメモリ１の説明図である。
図６に示すように、キャッシュメモリ１は、プロセッサ２とメインメモリ３との間に接続される。キャッシュメモリ１は、通常のキャッシュメモリと同様に、プロセッサ２からリード命令を受信すると、キャッシュメモリ１内に要求されたデータが保持されている場合には、そのデータをプロセッサ２へ送信する。また、保持されていない場合にはメインメモリ３からそのデータを取得してプロセッサ２へ送信するとともに、そのデータをキャッシュメモリ１内に保持する。
【００１７】
図６に示すように、キャッシュメモリ１は、プロセッサＩ／Ｆ部４（インターフェース部）、アドレスコントロール部５、データコントロール部６、タグメモリ７、データメモリ８、バーストアクセス制御部９（アクセス制御部）を備える。
【００１８】
プロセッサＩ／Ｆ部４は、プロセッサ２と外部との接続プロトコルであるプロセッサバスを介して、プロセッサ２からのリード命令（読出し要求）／ライト命令（書込み要求）を受信する。プロセッサＩ／Ｆ部４は、受信した要求を解釈し、リード命令かライト命令かを判定して、判定結果に応じた制御信号をアドレスコントロール部５へ送信する。
なお、ここでは、リード命令を受信した場合について説明する。リード命令には、読み出すデータの開始アドレスと、データ長とが含まれる。
【００１９】
アドレスコントロール部５は、開始アドレスを含む制御信号をプロセッサＩ／Ｆ部４から受信する。また、アドレスコントロール部５は、後述するバーストアクセス制御部９から、開始アドレスに対して割り当てられたセット番号等を受信する。アドレスコントロール部５は、受信したセット番号等に基づきタグメモリ７からタグ情報を取得し、取得したタグ情報と受信したアドレス情報とから、要求されているデータがデータメモリ８に保持されているか否かを判定する。そして、アドレスコントロール部５は、判定結果をデータコントロール部６へ送信する。
【００２０】
データコントロール部６は、アドレスコントロール部５から送信された判定結果に従い、プロセッサＩ／Ｆ部４と、データメモリ８又はメインメモリ３との間のデータ送受信を制御する。
具体的には、要求されたデータがデータメモリ８に保持されていることを判定結果が示す場合には、データコントロール部６は、データメモリ８からデータを読み出してプロセッサＩ／Ｆ部４へ送信する。一方、要求されたデータがデータメモリ８に保持されていないことを判定結果が示す場合には、メインメモリ３からデータを取得して、データメモリ８に書込むとともに、プロセッサＩ／Ｆ部４へ送信する。
なお、データコントロール部６は、バーストアクセス制御部９からセット番号等を受信し、受信したセット番号等に基づきデータメモリ８等からデータを取得する。
【００２１】
タグメモリ７は、タグ情報を保持するメモリである。図７は、タグメモリ７の構成図である。
図７に示すように、タグメモリ７は、偶数セット用（偶数ライン用）の偶数セットブロック１０（タグメモリブロック）と、奇数セット用（奇数ライン用）の奇数セットブロック１１（タグメモリブロック）との２つのメモリブロックを有する。また、偶数セットブロックと奇数セットブロックとは、それぞれ、ｗａｙ０とｗａｙ１との２つの領域からなるアレイ（タグアレイ）を有する。
【００２２】
データメモリ８は、キャッシュデータを保持するメモリである。図８は、データメモリ８の構成図である。
図８に示すように、データメモリ８は、偶数セット用（偶数ライン用）の偶数セットブロック２０（データメモリブロック）と、奇数セット用（奇数ライン用）の奇数セットブロック２１（データメモリブロック）との２つのメモリブロックを有する。また、偶数セットブロック２０と奇数セットブロック２１とは、それぞれ、キャッシュラインの上位半分のビットを保持する上位データメモリ２２，２４と、残り半分のビットを保持する下位データメモリ２３，２５とのメモリブロックを有する。さらに、上位データメモリ２２，２４と下位データメモリ２３，２５とは、それぞれ、ｗａｙ０とｗａｙ１との２つの領域からなるアレイ（データアレイ）を有する。
また、各上位データメモリ２２，２４と各下位データメモリ２３，２５とは、各ｗａｙのデータから読み出したデータを切り替えるウェイセレクタ２９，３０，３１，３２を備える。
また、偶数セットブロック２０は、ウェイセレクタ２９，３０が上位データメモリ２２と下位データメモリ２３とから読み出したデータをインターリーブ（交互配置）して、データセレクタ２８へ送信するセレクタ２６を備える。同様に、奇数セットブロック２１は、ウェイセレクタ３１，３２上位データメモリ２４と下位データメモリ２５とから読み出したデータをインターリーブ（交互配置）して、データセレクタ２８へ送信するセレクタ２７を備える。
データセレクタ２８は、セレクタ２６又はセレクタ２７から受信したデータをデータコントロール部６へ出力する。
【００２３】
バーストアクセス制御部９は、プロセッサＩ／Ｆ部４が受信したリード命令が、単一のキャッシュラインの内容が格納されたデータメモリのアドレスを順次加算などをしながら連続して読み出すバーストアクセスである場合に、処理を制御する。図９は、バーストアクセス制御部９の構成図である。
バーストアクセス制御部９は、データ長判定回路４０、開始アドレス判定回路４１、選択メモリ判定回路４２、メモリ選択回路４３を備える。なお、バーストアクセス制御部９は、プロセッサＩ／Ｆ部４から要求されたデータの開始アドレスとデータ長と受信する。
データ長判定回路４０は、開始アドレスとデータ長とからバーストアクセスであるか否かを判定する。
開始アドレス判定回路４１は、プロセッサ２から送信された開始アドレスが含まれるキャッシュラインのセット番号を特定する。
選択メモリ判定回路４２は、要求されたデータがタグメモリ７とデータメモリ８とのどちらのセットブロックに保持されているかを判定する。ここでは、選択メモリ判定回路４２は、開始アドレスの下位１ビットが０であれば偶数セットブロック、１であれば奇数セットブロックに要求されたデータが保持されていると判定する。
メモリ選択回路４３は、開始アドレス判定回路４１が特定したセット番号と、選択メモリ判定回路４２が選択したセットブロックとを示すメモリ選択信号（メモリチップセレクト信号）をアドレスコントロール部５とデータコントロール部６とへ送信する。
なお、バーストアクセスは、一般に、キャッシュメモリ１が２次キャッシュや３次キャッシュとして用いられている場合や、プロセッサ２がストリーミングデータを扱う場合等に発生する。
【００２４】
次に、キャッシュメモリ１の動作について説明する。
なお、ここでは、プロセッサ２からバーストアクセスを指示するリード命令が送信され、要求されたデータがキャッシュメモリ１に保持されている場合について説明する。また、前提として、バーストアクセスされるデータは、同一のセットブロック（偶数セットブロック又は奇数セットブロック）に保持されているとする。
図１０は、キャッシュメモリ１の動作を示すタイミングチャートである。
【００２５】
（Ｔ０前の処理）
まず、プロセッサＩ／Ｆ部４は、プロセッサ２から命令を受信する。プロセッサＩ／Ｆ部４は、受信した命令がリード命令であるか、ライト命令であるかを判定する。ここでは、リード命令と判定される。プロセッサＩ／Ｆ部４は、読出しの開始アドレスを、リード命令であることを示す制御信号とともに、アドレスコントロール部５へ送信する。また、プロセッサＩ／Ｆ部４は、開始アドレスと、データ長とをバーストアクセス制御部９へ送信する。
【００２６】
（Ｔ０での処理）
バーストアクセス制御部９のデータ長判定回路４０は、プロセッサＩ／Ｆ部４から受信した開始アドレスと、データ長とから、リード命令がバーストアクセスであるか否かを判定する。ここでは、バーストアクセスであると判定されたとする。また、開始アドレス判定回路４１は、プロセッサ２から送信された開始アドレスに対応するセット番号を特定する。さらに、選択メモリ判定回路４２は、偶数セットブロックか、奇数セットブロックかを判定する。
そして、バーストアクセス制御部９のメモリ選択回路４３は、特定されたセットブロック及びセット番号を示すメモリ選択信号をアドレスコントロール部５へ送信する。
【００２７】
（Ｔ１での処理）
アドレスコントロール部５は、バーストアクセス制御部９から受信したメモリ選択信号に従い、タグメモリ７からタグ情報を読み出す。なお、アドレスコントロール部５は、選択メモリ判定回路４２から送信されたメモリ選択信号に従い、タグメモリ７の偶数セットブロック１０又は奇数セットブロック１１（ここでは、偶数セットブロック１０）へアクセスする。そして、アドレスコントロール部５は、偶数セットブロック１０におけるメモリ選択回路４３から送信されたセット番号のアレイの各領域（ｗａｙ０，ｗａｙ１）からタグ情報を読み出す。
この際、アクセスしていないセットブロック（ここでは、奇数セットブロック１１）のアウトプットは抑止される。つまり、奇数セットブロック１１のメモリブロックは駆動しない。
また、メモリ選択回路４３は、特定されたセットブロック及びセット番号を示すメモリ選択信号（Ａｄｄｒ０）をデータコントロール部６へ送信する。
【００２８】
（Ｔ２での処理）
アドレスコントロール部５は、読み出したタグ情報と、プロセッサＩ／Ｆ部４から送信されたアドレス情報とを比較して、データメモリ８にそのアドレスのデータが保持されているか否かの判定であるＨＩＴ判定を実行する。これにより、アレイのどの領域に要求されたデータが保持されているかが特定される。ここでは、ｗａｙ１に要求されたデータが保持されているとする。アドレスコントロール部５は、特定された領域を示す信号をバーストアクセス制御部９へ送信するとともに、要求されたデータがデータメモリ８に保持されていることを示す信号をデータコントロール部６へ送信する。
また、データコントロール部６は、メモリ選択信号（Ａｄｄｒ０）に従い、データメモリ８からキャッシュデータの下位ビット（ＲＤ＃０）の読み出しを開始する。なお、データコントロール部６は、メモリ選択信号（Ａｄｄｒ０）に従い、データメモリ８の偶数セットブロック２０又は奇数セットブロック２１（ここでは、偶数セットブロック２０）へアクセスする。そして、データコントロール部６は、アクセスした偶数セットブロック２０の下位データメモリ２３における、メモリ選択信号（Ａｄｄｒ０）が示すセット番号のアレイの各領域（ｗａｙ０，ｗａｙ１）からキャッシュデータを読み出す。
この際、アクセスしていないセットブロック（ここでは、奇数セットブロック２１）のアウトプットは抑止される。つまり、奇数セットブロック２１のメモリブロックは駆動しない。
また、メモリ選択回路４３は、特定されたセットブロック及びセット番号を示すメモリ選択信号（Ａｄｄｒ１）をデータコントロール部６へ送信する。
【００２９】
（Ｔ３での処理）
データコントロール部６は、メモリ選択信号（Ａｄｄｒ１）に従い、データメモリ８からキャッシュデータの上位ビット（ＲＤ＃１）の読み出しを開始する。なお、データコントロール部６は、メモリ選択信号（Ａｄｄｒ１）に従い、データメモリ８の偶数セットブロック２０へアクセスする。そして、データコントロール部６は、アクセスした偶数セットブロック２０の上位データメモリ２４における、メモリ選択信号（Ａｄｄｒ１）が示すセット番号のアレイの各領域（ｗａｙ０，ｗａｙ１）からキャッシュデータを読み出す。
この際、バーストアクセス制御部９からタグメモリ７へメモリ選択信号が送信されており、これによりアクセスしていないセットブロック（ここでは、奇数セットブロック２１）のアウトプットは抑止される。
また、メモリ選択回路４３は、特定されたセットブロック及びセット番号と、アドレスコントロール部５が判定した領域（ここでは、ｗａｙ１）とを示すメモリ選択信号（Ａｄｄｒ２）とをデータコントロール部６へ送信する。
【００３０】
（Ｔ４での処理）
データコントロール部６は、メモリ選択信号（Ａｄｄｒ２）に従い、データメモリ８からキャッシュデータの下位ビット（ＲＤ＃２）の読み出しを開始する。なお、データコントロール部６は、メモリ選択信号（Ａｄｄｒ２）に従い、偶数セットブロック２０の下位データメモリ２３における、メモリ選択信号（Ａｄｄｒ２）が示すセット番号のアレイの各領域（ｗａｙ１）からキャッシュデータを読み出す。
この際、バーストアクセス制御部９からタグメモリ７へメモリ選択信号が送信されており、これによりアクセスしていないセットブロック（ここでは、奇数セットブロック２１）のアウトプットは抑止される。
また、メモリ選択回路４３は、特定されたセットブロック及びセット番号と、アドレスコントロール部５が判定した領域（ここでは、ｗａｙ１）とを示すメモリ選択信号（Ａｄｄｒ３）とをデータコントロール部６へ送信する。
【００３１】
（Ｔ５での処理）
データコントロール部６は、メモリ選択信号（Ａｄｄｒ３）に従い、データメモリ８からキャッシュデータの上位ビット（ＲＤ＃３）の読み出しを開始する。なお、データコントロール部６は、メモリ選択信号（Ａｄｄｒ３）に従い、偶数セットブロック２０の上位データメモリ２２における、メモリ選択信号（Ａｄｄｒ３）が示すセット番号のアレイの各領域（ｗａｙ１）からキャッシュデータを読み出す。
この際、バーストアクセス制御部９からタグメモリ７へメモリ選択信号が送信されており、これによりアクセスしていないセットブロック（ここでは、奇数セットブロック２１）のアウトプットは抑止される。つまり、奇数セットブロック２１のメモリブロックは駆動しない。
また、メモリ選択回路４３は、特定されたセットブロック及びセット番号と、アドレスコントロール部５が判定した領域（ここでは、ｗａｙ１）とを示すメモリ選択信号（Ａｄｄｒ４）とをデータコントロール部６へ送信する。
【００３２】
Ｔ６以降も同様に、要求されたデータを全て取得するまで処理を繰り返す。
そして、データコントロール部６は、読み出したキャッシュデータを順次所定のビット幅でプロセッサＩ／Ｆ部４へ送信し、送信されたデータは、プロセッサＩ／Ｆ部４からプロセッサ２へプロセッサバスを介して送信される。例えば、プロセッサにはＴ４で読み出されたＤ０、Ｔ５で読み出されたＤ１、Ｔ６で読み出されたＤ２が順次送信される。
【００３３】
なお、ここでは、要求されたデータがキャッシュメモリ１に保持されている場合について説明した。要求されたデータがキャッシュメモリ１に保持されていない場合、Ｔ２でアドレスコントロール部５により、要求されたデータがキャッシュメモリ１に保持されていないと判定される。そして、その判定結果がデータコントロール部６へ送信される。この場合、データコントロール部６は、Ｔ１，Ｔ２でデータメモリ８から読み出したデータを破棄して、メインメモリ３からデータを取得する。
【００３４】
以上のように、キャッシュメモリ１は、リード要求を受信すると、タグメモリ７からタグ情報を読み出し、要求されたデータがデータメモリ８に保持されているか否かを判定する処理と、データメモリ８からデータを読み出す処理とを並列に実行する。そのため、タグ情報を読み出し判定した後、データを読み出す方法に比べ、プロセッサ２へのデータ転送を開始するまでの時間を短縮することができる。
【００３５】
また、キャッシュメモリ１は、タグメモリ７やデータメモリ８からデータを読み出す前に、データがどのセットブロックに保持されているかを特定する。そして、特定したセットブロックのメモリブロックへのみアクセスする。したがって、消費電力を低減することができる。
【００３６】
また、キャッシュメモリ１は、各キャッシュラインの上位ビットと下位ビットとを別のメモリブロックに保持しておき、半分の周波数でデータを読み出すことができる。したがって、消費電力を低減することができる。
【００３７】
また、キャッシュメモリ１は、バーストアクセスの場合、データが格納された領域が特定されるまでは、各領域（ｗａｙ０，ｗａｙ１）からデータを読み出すが、特定された後は、特定された領域のみからデータを読み出す。また、データが格納された領域を特定する処理も、初めに１回実行するのみである。したがって、消費電力を低減することができる。
【００３８】
また、上記説明では、アドレスコントロール部５やデータコントロール部６がアクセスしていないセットブロックのアウトプットは抑止されると説明した。これは、例えば、バーストアクセス制御部９からタグメモリ７へメモリ選択信号が送信されており、これによりタグメモリ７やデータメモリ８のうち、選択されていないメモリブロックのアウトプットが抑止される。
また、図１１に示すような回路構成として、メモリ選択信号により、特定のメモリブロック以外のメモリブロックへのクロック信号を遮断し、消費電力を低減してもよい。
【００３９】
以上の説明において、「〜部」として説明したものは、回路等で構成されている。
【符号の説明】
【００４０】
１  キャッシュメモリ、２  プロセッサ、３  メインメモリ、４  プロセッサＩ／Ｆ部、５  アドレスコントロール部、６  データコントロール部、７  タグメモリ、８  データメモリ、９  バーストアクセス制御部、１０  偶数セットブロック、１１  奇数セットブロック、２０  偶数セットブロック、２１  奇数セットブロック、２２  上位データメモリ、２３  下位データメモリ、２４  上位データメモリ、２５  下位データメモリ、２６，２７  セレクタ、２８  データセレクタ、２９，３０，３１，３２  ウェイセレクタ、４０  データ長判定回路、４１  開始アドレス判定回路、４２  選択メモリ判定回路、４３  メモリ選択回路。
【図１】
2012022567.tif 000003
【図２】
2012022567.tif 000004
【図３】
2012022567.tif 000005
【図４】
2012022567.tif 000006
【図５】
2012022567.tif 000007
【図６】
2012022567.tif 000008
【図７】
2012022567.tif 000009
【図８】
2012022567.tif 000010
【図９】
2012022567.tif 000011
【図１０】
2012022567.tif 000012
【図１１】
2012022567.tif 000013