(57)【要約】【課題】複数のメモリ空間のデータをキャッシュメモリにキャッシュするキャッシュメモリ制御回路において、プロセッサの動作周波数の低減及びメモリアクセスのレイテンシの増加をさせることなく、消費電力を低減することができるキャッシュメモリ制御回路を提供する。【解決手段】キャッシュメモリ制御回路は、それぞれがセット２１ａ〜２１ｄ毎及びメモリ空間A及びB毎に設けられ、それぞれが対応するセットに対応するメモリ空間のデータがいくつ格納されているかをカウントする複数のカウンタ３２ａ〜３２ｄ及び３４ａ〜３４ｄを有する。そして、キャッシュメモリ制御回路は、複数のカウンタ３２ａ〜３２ｄ及び３４ａ〜３４ｄのそれぞれのカウント値に応じて、複数のセット２１ａ〜２１ｄのそれぞれのタグメモリ３８ａ〜３８ｄ及びデータメモリ４０ａ〜４０ｄの活性化を制御する。【選択図】図３
2011095852.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリ空間のデータをキャッシュメモリにキャッシュするキャッシュメモリ制御回路であって、
それぞれが前記複数のメモリ空間のデータを記憶するデータ記憶部を有する複数のセットと、
それぞれがセット毎及びメモリ空間毎に設けられ、それぞれが対応するセットに対応するメモリ空間のデータがいくつ格納されているかをカウントする複数のカウンタと、
それぞれがセット毎に設けられ、それぞれが対応するセットに設けられた前記複数のカウンタのそれぞれのカウント値に応じて、前記複数のセットのそれぞれのデータ記憶部の活性化を制御するための制御信号を生成する複数の制御信号生成部と、
を有することを特徴とするキャッシュメモリ制御回路。
【請求項２】
キャッシュミスが発生したときに、前記複数のカウンタのそれぞれのカウント値を参照して、前記複数のセットのうちリフィル対象のセットを選択するセット選択回路を有することを特徴とする請求項１に記載のキャッシュメモリ制御回路。
【請求項３】
前記セット選択回路は、前記複数のセットのそれぞれのデータ記憶部に、同一のメモリ空間のデータのみが格納されるように、前記複数のセットのうち前記リフィル対象のセットを選択することを特徴とする請求項２に記載のキャッシュメモリ制御回路。
【請求項４】
前記キャッシュミスが発生したときに、前記リフィル対象のセット及びリフィルされるデータのメモリ空間に対応するカウンタのカウント値をインクリメントするカウント値制御回路を有することを特徴とする請求項２または請求項３に記載のキャッシュメモリ制御回路。
【請求項５】
前記カウント値制御回路は、前記キャッシュミスが発生したときにキャストアウトされるデータが格納されているセット及び前記キャストアウトされるデータのメモリ空間に対応するカウンタのカウント値をデクリメントすることを特徴とする請求項４に記載のキャッシュメモリ制御回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリ制御回路に関し、特に、複数のメモリ空間のデータをキャッシュメモリにキャッシュするキャッシュメモリ制御回路に関する。
【背景技術】
【０００２】
従来より、プロセッサにおいて、主メモリからのデータの高速読み出しのために、キャッシュメモリが広く用いられている。キャッシュメモリは、中央処理装置（以下、CPUという）と主メモリとの間に設けられている。
【０００３】
従来、連想度が２以上、即ち、セット（ウェイともいう）数が２以上のキャッシュメモリにおいて、メモリアクセスレイテンシを最小にする場合、すべてのセットのデータメモリに対してアクセスを行い、すべてのセットのデータメモリから出力されたデータから必要なデータを選択するという方式が一般に用いられている。しかし、この方式では、すべてのセットのデータメモリを活性化するため、消費電力が高くなるという問題がある。
【０００４】
そこで、キャッシュメモリの消費電力を低減させるために、複数のウェイを有するキャッシュメモリにおいて、アクセスが連続的な場合の消費電力を低減させることができるキャッシュメモリが提案されている（例えば、特許文献１参照）。
【０００５】
しかし、この提案のキャッシュメモリは、連続的なアクセスに対しては消費電力を低減することができるが、ランダムなアクセスに対しては消費電力を低減することができないという問題がある。
【０００６】
また、すべてのセットのデータメモリの活性化を防ぐために、タグメモリ内の有効ビット（Valid Bit）だけを用いて、データメモリの活性化を判定する方式も考えられる。この方式のキャッシュメモリ制御回路によれば、必要なデータが格納されている可能性があるデータメモリだけ活性化することができる。
【０００７】
しかし、この方式のキャッシュメモリ制御回路は、キャッシュタグにアクセスした後に、アクセスして得られた情報に基づいて、データメモリのチップイネーブルを制御するため、１サイクルに通る論理パスの段数が多くなり、高い周波数を実現することができなくなるという問題がある。
【０００８】
ところで、近年、複数のメモリ空間を異なる命令によってアクセスし、複数のメモリ空間のデータを単一のキャッシュメモリに格納するキャッシュメモリ制御回路が提案されている。
【０００９】
このキャッシュメモリ制御回路において、あるメモリ空間のデータのみがキャッシュメモリに格納されている状態にもかかわらず、異なるメモリ空間のアクセスが発生すると、キャッシュメモリにそのメモリ空間のデータが存在しているか調べるため、データメモリやタグメモリへのアクセスが発生し、無駄な電力を消費する問題が存在する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００１−３０６３９６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明は、複数のメモリ空間のデータをキャッシュメモリにキャッシュするキャッシュメモリ制御回路において、プロセッサの動作周波数の低減及びメモリアクセスのレイテンシの増加をさせることなく、消費電力を低減することができるキャッシュメモリ制御回路を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の一態様によれば、複数のメモリ空間のデータをキャッシュメモリにキャッシュするキャッシュメモリ制御回路であって、それぞれが前記複数のメモリ空間のデータを記憶するデータ記憶部を有する複数のセットと、それぞれがセット毎及びメモリ空間毎に設けられ、それぞれが対応するセットに対応するメモリ空間のデータがいくつ格納されているかをカウントする複数のカウンタと、それぞれがセット毎に設けられ、それぞれが対応するセットに設けられた前記複数のカウンタのそれぞれのカウント値に応じて、前記複数のセットのそれぞれのデータ記憶部の活性化を制御するための制御信号を生成する複数の制御信号生成部と、を有することを特徴とするキャッシュメモリ制御回路を提供することができる。
【発明の効果】
【００１３】
本発明のキャッシュメモリ制御回路によれば、複数のメモリ空間のデータをキャッシュメモリにキャッシュするキャッシュメモリ制御回路において、プロセッサの動作周波数の低減及びメモリアクセスのレイテンシの増加をさせることなく、消費電力を低減することができる。
【図面の簡単な説明】
【００１４】
【図１】本実施の形態に係るプロセッサシステムの構成を示す構成図である。
【図２】アドレスデータの構成例を説明するための図である。
【図３】キャッシュメモリ１７の構成例を説明するための図である。
【図４】メモリ空間Aのデータ及びメモリ空間Bのデータが各セットに存在する場合を説明するための図である。
【図５】メモリ空間Aのデータ及びメモリ空間Bのデータがセット毎に偏って存在する場合を説明するための図である。
【図６】ロードアクセス時の処理の流れの例を説明するためのフローチャートである。
【図７】キャッシュミス時の処理の流れの例を説明するためのフローチャートである。
【発明を実施するための形態】
【００１５】
以下、図面を参照して本発明の実施の形態について詳細に説明する。  
まず、図１に基づき、本発明の実施の形態の形態に係るキャッシュメモリを含むプロセッサシステムの構成について説明する。図１は、本実施の形態に係るプロセッサシステムの構成を示す構成図である。
【００１６】
図１に示すように、プロセッサシステム１は、CPU１１と、バス１２と、DRAMコントローラ１３と、バス１４と、SRAM１５とを含んで構成されている。CPU１１は、CPUコア１６と、キャッシュメモリ１７とを含む。プロセッサシステム１は、例えば、１チップの半導体装置として構成され、このチップの外に主メモリとしてのDRAM１８を有する。
【００１７】
CPU１１は、DRAM１８に記憶された命令あるいはデータを、DRAMコントローラ１３、バス１２及びキャッシュメモリ１７を介して読み出して実行する。また、CPU１１は、SRAM１５に記憶された命令あるいはデータを、バス１４及びキャッシュメモリ１７を介して読み出して実行する。
【００１８】
このように、複数、ここでは２つのメモリ空間のデータを単一の、言い換えると、１つのキャッシュメモリ１７がキャッシュする構成となっている。即ち、キャッシュメモリ１７は、DRAM１８のメモリ空間のデータとSRAM１５のメモリ空間のデータとをキャッシュする。ここで、DRAM１８のメモリ空間をメモリ空間A、SRAM１５のメモリ空間をメモリ空間Bと名付ける。
【００１９】
また、CPU１１は、メモリ空間Aのデータ及びメモリ空間Bのデータのそれぞれに対して、異なる命令によってアクセスする。メモリ空間Aのデータにアクセスする命令を命令A、メモリ空間Bのデータにアクセスする命令を命令Bと名付ける。これらの命令A及び命令Bは、それぞれ以下の命令フォーマットを有する。
【００２０】
命令A  RT，RA，RB：動作定義RT←MEM_A（RA＋RB）
命令B  RT，RA，RB：動作定義RT←MEM_B（RA＋RB）
これらの命令フォーマットにより、RAとRBとのそれぞれで指定される図示しない汎用レジスタの値を足し合わせ、その足し合わせた値をデータにアクセスするアドレスデータADとして、命令Aまたは命令Bで指定されるメモリ空間Aまたはメモリ空間Bからデータを読み出し、RTで指定される図示しない汎用レジスタに読み出したデータを格納するという動作が実行される。
【００２１】
また、キャッシュメモリ１７は、後述するように４つのセットを有する４ウェイセットアソシアティブの構成であり、キャッシュ容量は１６KB、ラインサイズは１２８Bである。なお、キャッシュメモリ１７は、４ウェイセットアソシアティブの構成に限定されることなく、２ウェイまたは８ウェイ等のセット数が２以上であればよい。また、キャッシュ容量及びラインサイズは、それぞれ１６KB及び１２８Bに限定されることなく、例えば、それぞれ８KB及び６４B等の任意のキャッシュ容量及び任意のラインサイズであってもよい。
【００２２】
図２は、アドレスデータの構成例を説明するための図である。図２に示すように、アドレスデータADは、３２ビットであり、上位側の２０ビットのタグアドレスTAと、５ビットのインデックスアドレスIAと、下位側の７ビットのラインアドレスLAとからなる。
【００２３】
図３は、キャッシュメモリ１７の構成例を説明するための図である。
【００２４】
キャッシュメモリ１７は、上述したように４つのセット２１ａ、２１ｂ、２１ｃ及び２１ｄと、加算器２２と、マルチプレクサ（以下、MUXという）２３と、キャッシュミス制御回路２４とを含むキャッシュメモリ制御回路を有している。キャッシュミス制御回路２４は、セット選択回路２５を有する。なお、セット２１ａ、２１ｂ、２１ｃ及び２１ｄは同様の構成のため、説明を簡単にするためにセット２１ｂ及び２１ｃの図示を省略している。また、セット２１ａ〜２１ｄは同様の構成のため、以下の説明では主にセット２１ａを用いてキャッシュメモリ１７の構成を説明する。
【００２５】
セット２１ａは、メモリ空間A用のセット制御ビットSCB３１ａと、メモリ空間A用のカウンタ３２ａと、メモリ空間B用のセット制御ビットSCB３３ａと、メモリ空間B用のカウンタ３４ａと、AND回路３５ａ、３６ａと、OR回路３７ａと、タグメモリ３８ａと、比較器３９ａと、データメモリ４０ａとを含む。
【００２６】
メモリ空間A用のセット制御ビットSCB３１ａには、カウンタ３２ａのカウント値が０の場合、キャッシュミス制御回路２４によって０がセットされ、カウンタ３２ａのカウント値が０以外の場合、キャッシュミス制御回路２４によって１がセットされる。
【００２７】
メモリ空間A用のカウンタ３２ａは、現在、セット２１ａにメモリ空間Aのデータが何ライン存在しているかカウントする。カウンタ３２ａは、例えば、メモリ空間Aのデータがセット２１ａのデータメモリ４０ａにリフィルされる際に、キャッシュミス制御回路２４によってセット２１ａのカウンタ３２ａのカウント値に１が加算され、セット２１ａのデータメモリ４０ａからメモリ空間Aのデータがキャストアウトされる際に、キャッシュミス制御回路２４によってセット２１ａのカウンタ３２ａのカウント値から１が減算される。
【００２８】
また、各カウンタ３２ａ〜３２ｄ及び３４ａ〜３４ｄが保持しなければならないカウント値は、対応するセットに対応するメモリ空間のデータが最大何ライン存在するか、という数字によって決定する。そのため、キャッシュ容量が１６ＫＢ、ラインサイズが１２８Ｂ及び４ウェイセットアソシアティブである本実施の形態のキャッシュ構成においては、１セットあたり３２ライン存在するため、各カウンタ３２ａ〜３２ｄ及び３４ａ〜３４ｄは、最大３２カウントできればよい。各カウンタ３２ａ〜３２ｄ及び３４ａ〜３４ｄが保持しているカウント値は、キャッシュミス制御回路２４に供給される。
【００２９】
メモリ空間B用のセット制御ビットSCB３３ａには、カウンタ３４ａのカウント値が０の場合、キャッシュミス制御回路２４によって０がセットされ、カウンタ３４ａのカウント値が０以外の場合、キャッシュミス制御回路２４によって１がセットされる。
【００３０】
メモリ空間B用のカウンタ３４ａは、現在、セット２１ａにメモリ空間Bのデータが何ライン存在しているかを示し、例えば、メモリ空間Bのデータがキャッシュ上のセット２１ａにリフィルされる際に、キャッシュミス制御回路２４によってセット２１ａのカウンタ３４ａのカウント値に１が加算され、キャッシュ上のセット２１ａからメモリ空間Bのデータがキャストアウトされる際に、キャッシュミス制御回路２４によってセット２１ａのカウンタ３４ａのカウント値から１が減算される。
【００３１】
このように、キャッシュメモリ１７は、セット毎及びメモリ空間毎にセット制御ビット及びカウンタを有する。即ち、キャッシュメモリ１７は、４つのセット３１ａ〜３１ｄを有し、２つのメモリ空間A及びBのデータをキャッシュするので、８つのセット制御ビット３１ａ〜３１ｄ，３３ａ〜３３ｄ及び８つのカウンタ３２ａ〜３２ｄ，３４ａ〜３４ｄを有している。
【００３２】
AND回路３５ａには、Instruction Aの信号とセット制御ビットSCB３１ａからの信号とが供給される。AND回路３５ａは、Instruction Aの信号とセット制御ビットSCB３１ａからの信号とのAND演算を施し、演算結果をOR回路３７ａに出力する。Instruction Aの信号は、メモリ空間Aのデータがアクセスされる場合、１となり、メモリ空間Bのデータがアクセスされる場合、０となる。
【００３３】
AND回路３６ａには、Instruction Bの信号とセット制御ビットSCB３３ａからの信号とが供給される。AND回路３６ａは、Instruction Bの信号とセット制御ビットSCB３３ａからの信号とのAND演算を施し、演算結果をOR回路３７ａに出力する。Instruction Bの信号は、メモリ空間Aのデータがアクセスされる場合、０となり、メモリ空間Bのデータがアクセスされる場合、１となる。
【００３４】
OR回路３７ａは、AND回路３５ａ及び３６ａから出力された演算結果にOR演算を施し、演算結果をチップイネーブル信号CE0として、タグメモリ３８ａ及びデータメモリ４０ａに出力する。本実施の形態では、チップイネーブル信号CE0が１の場合、チップイネーブルが有効であるものとする。そのため、チップイネーブル信号CE0が１の場合、タグメモリ３８ａ及びデータメモリ４０ａは活性化され、チップイネーブル信号CE0が０の場合、タグメモリ３８ａ及びデータメモリ４０ａは活性化されない。
【００３５】
加算器２２には、Value A及びValue Bが供給される。Value A及びValue Bは、RA及びRBのそれぞれで指定される図示しない汎用レジスタの値である。加算器２２は、これらの汎用レジスタの値を加算して出力する。即ち、加算器２２の出力は、図２に示すアドレスデータADとなる。
【００３６】
アドレスデータADのうち、インデックスアドレスIAは、タグメモリ３８ａ〜３８ｄに供給され、タグアドレスTAは、比較器３９ａ〜３９ｄに供給され、インデックスアドレスIA及びラインアドレスLAは、データメモリ４０ａ〜４０ｄに供給される。
【００３７】
データ記憶部としてのタグメモリ３８ａは、インデックスアドレスIAによって指定されたラインに格納されているタグ情報を読み出し、読み出したタグ情報を比較器３９ａ及びキャッシュミス制御回路２４に出力する。各ラインに格納されているタグ情報は、１ビットのValid、２０ビットのタグ、１ビットのDirty及び１ビットのメモリ空間情報を含む。
【００３８】
比較器３９ａは、Validの値の確認およびタグメモリ３８ａから出力されたタグ情報に含まれる２０ビットのタグと、タグアドレスTAとを比較し、一致信号c0をMUX２３及びキャッシュミス制御回路２４に出力する。比較器３９ａは、Validの値が1かつ、タグ情報に含まれる２０ビットのタグと、タグアドレスTAとが一致した場合、キャッシュヒットと判定し、Validの値が0の場合や、タグとタグアドレスTAが一致しなかった場合、キャッシュミスと判定する。即ち、この一致信号c0は、キャッシュヒットまたはキャッシュミスを示す信号である。同様に、比較器３９ｂ〜３９ｄは、それぞれ一致信号c1〜c3をMUX２３及びキャッシュミス制御回路２４に出力する。
【００３９】
データ記憶部としてのデータメモリ４０ａは、供給されたインデックスアドレスIA及びラインアドレスLAによって指定されたデータをMUX２３に出力する。同様に、データメモリ４０ｂ〜４０ｃのそれぞれは、供給されたインデックスアドレスIA及びラインアドレスLAによって指定されたデータをMUX２３に出力する。
【００４０】
MUX２３は、データメモリ４０ａ〜４０ｄから出力されたデータを比較器３９ａ〜３９ｄのそれぞれから供給された一致信号c0〜c3に基づいて選択し、選択したデータを出力する。このデータは、CPUコア１６に出力され、RTにより指定された汎用レジスタに格納される。
【００４１】
キャッシュミス制御回路２４は、比較器３９ａ〜３９ｄのそれぞれから出力された一致信号c0〜c3に基づいて、キャッシュヒットまたはキャッシュミスの判定を行う。キャッシュミス制御回路２４は、キャッシュミスと判定した場合、リフィル及びライトバックの制御を行う。また、キャッシュミス制御回路２４は、リプレース及びリフィルの対象となったセットのメモリ空間のセット制御ビット及びカウンタのカウント値の制御を行う。例えば、キャッシュミス制御回路２４は、セット２１ａからメモリ空間Aのデータをリプレースし、メモリ空間Bのデータをリフィルする場合、カウンタ３２ａのカウント値から１をデクリメントし、カウンタ３４ａのカウント値に１をインクリメントする。キャッシュミス制御回路２４は、カウンタ３２ａ〜３２ｄ及び３４ａ〜３４ｄのそれぞれのカウント値を制御するカウント値制御回路を構成する。
【００４２】
セット選択回路２５は、キャッシュミス時に各セットのキャッシュヒットまたはキャッシュミスを示す信号、カウンタ３２ａ〜３２ｄ及び３４ａ〜３４ｄからのカウント値及びタグ情報に基づいて、新しいデータをセット２１ａ〜２１ｄのいずれに格納するかを選択する。新しいデータをセット２１ａ〜２１ｄのいずれに格納するかを選択するアルゴリズムについては、後述する。
【００４３】
ここで、キャッシュメモリ１７の消費電力の低減について説明する。例えば、データメモリ４０ａにメモリ空間Aのデータのみが格納されているものとする。この場合、カウンタ３２ａのカウントの値は、データメモリ４０ａに格納されているメモリ空間Aのデータの分だけカウントアップされる。そのため、セット制御ビットSCB３１ａには、カウンタ３２ａのカウントの値が０でないため、キャッシュミス制御回路２４によって１がセットされる。
【００４４】
一方、カウンタ３４ａのカウントの値は、データメモリ４０ａに格納されているメモリ空間Bのデータが存在しないため、０である。そのため、セット制御ビットSCB３３ａには、カウンタ３４ａのカウントの値が０のため、キャッシュミス制御回路２４によって０がセットされる。
【００４５】
ここで、メモリ空間Bのデータをアクセスする命令がキャッシュメモリ１７に供給された場合、Instruction Aとして０がAND回路３５ａに供給され、Instruction Bとして１がAND回路３６ａに供給される。また、AND回路３５ａには、セット制御ビットSCB３１ａから１が供給され、AND回路３６ａには、セット制御ビットSCB３３ａから０が供給される。
【００４６】
このため、AND回路３５ａ及び３６ａのそれぞれは、AND演算を施した結果である０をOR回路３７ａに出力する。この結果、OR回路３７ａは、制御信号としてのチップイネーブル信号CE0として０をタグメモリ３８ａ及びデータメモリ４０ａに出力する。よって、タグメモリ３８ａ及びデータメモリ４０ａは活性化されず、消費電力の低減が可能となる。このように、AND回路３５ａ、３６ａ及びOR回路３７ａは、タグメモリ３８ａ及びデータメモリ４０ａの活性化を制御するための制御信号を生成する制御信号生成部を構成する。
【００４７】
より具体的に、図４及び図５を用いて、キャッシュメモリ１７の消費電力の低減について説明する。図４は、メモリ空間Aのデータ及びメモリ空間Bのデータが各セットに存在する場合を説明するための図であり、図５は、メモリ空間Aのデータ及びメモリ空間Bのデータがセット毎に偏って存在する場合を説明するための図である。
【００４８】
キャッシュ上に存在するメモリ空間Aのデータの数と、メモリ空間Bのデータの数とが３：１の場合において、図４では、セット３１ａ〜３１ｄ毎にメモリ空間Aのデータとメモリ空間Bのデータとが均等に存在しており、図５では、セット２１ａ〜２１ｄ毎にメモリ空間Aのデータとメモリ空間Bのデータとが偏って存在している。
【００４９】
図４において、セット２１ａのデータメモリ４０ａには、メモリ空間Aのデータとメモリ空間Bのデータとが３：１で存在している。そのため、カウンタ３２ａに２４がセットされ、セット制御ビットSCB３１ａに１がセットされる。また、カウンタ３４ａに８がセットされ、セット制御ビットSCB３３ａに１がセットされる。他のセット２１ｂ〜２１ｄのそれぞれのデータメモリ４０ｂ〜４０ｄも同様に、メモリ空間Aのデータとメモリ空間Bのデータとが３：１で存在している。
【００５０】
このように、データメモリ４０ａ〜４０ｄのそれぞれにメモリ空間Aのデータ及びメモリ空間Bのデータが格納されている場合、メモリ空間Aのデータまたはメモリ空間Bのデータへのアクセスを行う度に、すべてのセット２１ａ〜２１ｄが活性化される。即ち、すべてのチップイネーブル信号CE0〜CE3が有効となり、タグメモリ３８ａ〜３８ｄ及びデータメモリ４０ａ〜４０ｄが活性化されることになる。
【００５１】
一方、図５において、データメモリ４０ａ〜４０ｃには、それぞれメモリ空間Aのデータのみが格納され、データメモリ４０ｄには、メモリ空間Bのデータのみが格納されている。そのため、カウンタ３４ａ〜３４ｃ及び３２ｄのそれぞれのカウント値が０となり、セット制御ビットSCB３３ａ〜３３ｃ及び３１ｄのそれぞれに０がセットされている。
【００５２】
このように、データメモリ４０ａ〜４０ｃのそれぞれにメモリ空間Aのデータが格納され、データメモリ４０ｄにメモリ空間Bのデータが格納されている場合、メモリ空間Aのデータへアクセスする場合にはセット２１ａ、２１ｂ及び２１ｃのタグメモリ３８ａ〜３８ｃ及びデータメモリ４０ａ〜４０ｃだけが活性化され、メモリ空間Bのデータへアクセスする場合にはセット２１ｄのタグメモリ３８ｄ及びデータメモリ４０ｄだけが活性化されるため、キャッシュメモリ１７の消費電力の低減が可能となる。
【００５３】
以上のように、キャッシュメモリ１７は、あるメモリ空間のデータをアクセスする命令が実行されたときに、そのメモリ空間のデータをキャッシュしていないセットのタグメモリ及びデータメモリが活性化されないため、消費電力を低減することができる。また、キャッシュメモリ１７は、命令の種類及びセット制御ビットに基づくAND演算及びOR演算によって、チップイネーブルを制御している。そのため、キャッシュメモリ１７は、従来のように、アドレスデータによってタグメモリをアクセスし、チップイネーブルを制御する、即ち、アドレスデータに基づくチップイネーブルの制御に比べ、高い動作周波数をねらうことができるとともに、各セットのタグメモリへのアクセス回数を低減させることができる。
【００５４】
しかしながら、本実施の形態のキャッシュメモリ１７の構成においては、図４に示すようにメモリ空間Aのデータ及びメモリ空間Bのデータが各セット２１ａ〜２１ｄのそれぞれに存在している場合、メモリアクセス命令の実行の度にすべてのセット２１ａ〜２１ｄのタグメモリ３８ａ〜３８ｄ及びデータメモリ４０ａ〜４０ｄが活性化することになる。
【００５５】
そのため、キャッシュのリフィル対象のセット選択する際に、カウンタ３２ａ〜３２ｄ及び３４ａ〜３４ｄのカウント値を参照し、できるだけリフィルするメモリ空間のデータのカウント値が大きいセットを選択することで、セット毎にメモリ空間Aのデータとメモリ空間Bのデータとの存在を偏らせる必要がある。
【００５６】
一般的に、キャッシュのリフィル時のセット選択にはLRU（Least Recently Used）アルゴリズムが使用されるが、本実施の形態では、以下に示すように、LRUアルゴリズムに加えて上述したカウンタ３２ａ〜３２ｄ及び３４ａ〜３４ｄのカウント値に基づき、リフィル時のセットを選択する。なお、本実施の形態では、このリフィル時のセットを選択するアルゴリズムをセット選択アルゴリズムという。また、以下のリフィル時のセットを選択する処理は、すべてセット選択回路２５によって実行される。
【００５７】
まず、各セット２１ａ〜２１ｄのタグ情報から、Valid、即ち、有効ビットが０のものがあるか否かを検出する。
【００５８】
有効ビットが０のセットが１つの場合、そのセットをリフィル対象に選択し、処理を終了する。
【００５９】
有効ビットが０のセットが複数の場合、それらのセットのカウンタのカウント値を参照する。そして、キャッシュミスを起こしたアクセスのメモリ空間のカウンタのカウント値が最も大きいセットをリフィル対象に選択し、処理を終了する。
【００６０】
ここで、キャッシュミスを起こしたアクセスのメモリ空間のカウンタのカウント値が同じ値のセットが複数あった場合、キャッシュミスを起こしたアクセスとは別のメモリ空間のカウンタのカウント値が最も小さいセットをリフィル対象に選択し、処理を終了する。
【００６１】
さらに、キャッシュミスを起こしたアクセスとは別のメモリ空間のカウンタのカウント値が同じ値のセットが複数あった場合、LRUアルゴリズムに従って、リフィル対象のセットを選択し、処理を終了する。
【００６２】
一方、各セットのタグ情報から、有効ビットが０のものが無い場合、LRUアルゴリズムの情報から、最後にアクセスされたセットをリフィル対象から除外する。そして、除外されたセット以外において、それぞれのセットのカウンタのカウント値を参照する。
【００６３】
キャッシュミスを起こしたアクセスのメモリ空間のカウンタのカウント値が最も大きいセットをリフィル対象に選択し、処理を終了する。
【００６４】
ここで、キャッシュミスを起こしたアクセスのメモリ空間のカウンタのカウント値が同じ値のセットが複数あった場合、キャッシュミスを起こしたアクセスとは別のメモリ空間のカウンタのカウント値が最も小さいセットをリフィル対象に選択し、処理を終了する。
【００６５】
さらに、キャッシュミスを起こしたアクセスとは別のメモリ空間のカウンタのカウント値が同じ値のセットが複数あった場合、LRUアルゴリズムに従って、リフィル対象のセットを選択し、処理を終了する。
【００６６】
上述のセット選択アルゴリズムによりリフィル時のセットを選択することで、セット毎にメモリ空間Aのデータとメモリ空間Bのデータとの存在が偏ることになり、キャッシュアクセス時の消費電力を低減することができる。
【００６７】
ここで、ロードアクセス時の処理について説明する。図６は、ロードアクセス時の処理の流れの例を説明するためのフローチャートである。
【００６８】
まず、CPUコア１６によってロード命令が実行される（ステップＳ１）。RA及びRBで指定された汎用レジスタの値が加算され、アドレスデータADが算出される（ステップＳ２）。各セット制御ビットSCBに基づいて、各セットのタグメモリ及びデータメモリが活性化される（ステップＳ３）。次に、データメモリ上、即ち、キャッシュ上に要求データが存在するか否かが判定される（ステップＳ４）。キャッシュ上に要求データが存在しないと判定された場合、NOとなり、キャッシュミス時の処理が実行され（ステップＳ５）、ステップＳ６に進む。なお、キャッシュミス時の処理については、後述する図７を用いて詳細に説明する。一方、キャッシュ上に要求データが存在する場合、YESとなり、要求データが存在したセットのデータメモリから出力されたデータが選択され、CPUコア１６にそのデータが返却される（ステップＳ６）。最後に、次のロード命令の実行まで待機し（ステップＳ７）、ロード命令が実行されるとステップＳ１に戻り、同様の処理が実行される。
【００６９】
次に、ステップＳ５におけるキャッシュミス時の処理について説明する。図７は、キャッシュミス時の処理の流れの例を説明するためのフローチャートである。
【００７０】
まず、キャッシュミスが発生すると、上述したセット選択アルゴリズムに基づいて、リフィル対象のセットが選択される（ステップＳ１１）。選択されたセットに既存データが存在するか否かが判定される（ステップＳ１２）。即ち、ステップＳ１２では、タグ情報中のValidが１か否かが判定されている。既存データが存在しない場合、NOとなり、ステップＳ１６に進む。一方、既存データが存在する場合、YESとなり、既存データを書き戻す必要があるか否かが判定される（ステップＳ１３）。即ち、ステップＳ１３では、タグ情報中のDirtyが１か否かが判定されている。既存データを書き戻す必要がない場合、NOとなり、ステップＳ１６に進む。一方、既存データを書き戻す必要がある場合、YESとなり、タグ情報の中のメモリ空間情報を参照し、既存データを対応するメモリ空間に書き戻す（ステップＳ１４）。
【００７１】
次に、対応するメモリ空間のカウンタのカウント値がデクリメントされ、カウント値が０の場合、セット制御ビットSCBに０がセットされる（ステップＳ１５）。要求データが選択したセットにリフィルされ（ステップＳ１６）、タグ情報が更新される（ステップＳ１７）。このタグ情報の更新では、Validに１、Dirtyに０、タグに要求データのアドレスから算出されたアドレス、メモリ空間情報に要求データのメモリ空間に応じて０または１がセットされる。
【００７２】
最後に、対応するメモリ空間のカウンタのカウント値がインクリメントされ、セット制御ビットSCBが０の場合、セット制御ビットSCBに１がセットされる（ステップＳ１８）。以上により、キャッシュミス時の処理が完了し、上述した図６のステップＳ６に進む。
【００７３】
以上のように、キャッシュメモリ１７は、キャッシュミス時に各セットのカウンタ３２ａ〜３２ｄ及び３４ａ〜３４ｄのカウント値に基づいて、新しいデータをセット２１ａ〜２１ｄのいずれに格納するかを選択するようにした。また、キャッシュメモリ１７は、Instruction A及びセット制御ビットSCB３１ａ〜３１ｄの各AND演算結果と、Instruction B及びセット制御ビットSCB３３ａ〜３３ｄの各AND演算結果とにそれぞれOR演算を施し、チップイネーブル信号CE0〜CE3を生成するようにした。
【００７４】
この結果、キャッシュメモリ１７は、あるメモリ空間のデータをアクセスする命令が実行されたときに、そのメモリ空間のデータをキャッシュしていないセットのタグメモリ及びデータメモリが活性化されないため、消費電力を低減することができる。また、キャッシュメモリ１７は、命令の種類及びセット制御ビットに基づくAND演算及びOR演算によって、チップイネーブルを制御している。そのため、キャッシュメモリ１７は、従来のように、アクセスアドレスによってタグメモリをアクセスし、チップイネーブルを制御する、即ち、アクセスアドレスに基づくチップイネーブルの制御に比べ、高い動作周波数をねらうことができるとともに、各セットのタグメモリへのアクセス回数を低減させることができる。
【００７５】
よって、本実施の形態のキャッシュメモリ制御回路によれば、複数のメモリ空間のデータをキャッシュメモリにキャッシュするキャッシュメモリ制御回路において、プロセッサの動作周波数の低減及びメモリアクセスのレイテンシの増加をさせることなく、消費電力を低減することができる。
【００７６】
なお、本明細書におけるフローチャート中の各ステップは、その性質に反しない限り、実行順序を変更し、複数同時に実行し、あるいは実行毎に異なった順序で実行してもよい。
【００７７】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【符号の説明】
【００７８】
１…プロセッサシステム、１１…CPU、１２…バス、１３…DRAMコントローラ、１４…バス、１５…SRAM、１６…CPUコア、１７…キャッシュメモリ、１８…DRAM、２１ａ〜２１ｄ…セット、２２…加算器、２３…MＵX、２４…キャッシュミス制御回路、２５…セット選択回路、３１ａ〜３１ｄ，３３ａ〜３３ｄ…セット制御ビット、３２ａ〜３２ｄ，３４ａ〜３４ｄ…カウンタ、３５ａ〜３５ｄ，３６ａ〜３６ｄ…AND回路、３７ａ〜３７ｄ…OR回路、３８ａ〜３８ｄ…タグメモリ、３９ａ〜３９ｄ…比較器、４０ａ〜４０ｄ…データメモリ。
【図１】
2011095852.tif 000003
【図２】
2011095852.tif 000004
【図３】
2011095852.tif 000005
【図４】
2011095852.tif 000006
【図５】
2011095852.tif 000007
【図６】
2011095852.tif 000008
【図７】
2011095852.tif 000009