(57)【特許請求の範囲】
【請求項１】
少なくとも２つのメモリ単位から構成されるキャッシュメモリについて、メモリ単位毎に予めキャッシュリフィルの可否を設定しておき、前記キャッシュメモリのうちキャッシュリフィルが可と設定されたメモリ単位について選択的にアクセスして第１のキャッシュヒットミス判定を行い、キャッシュヒット時に前記キャッシュメモリへのアクセスを終了するキャッシュメモリ制御方法であって、
前記第１のキャッシュヒットミス判定の結果、キャッシュミスであったときには、前記キャッシュメモリのうちキャッシュリフィルが否とされたメモリ単位について選択的にアクセスして第２のキャッシュヒットミス判定を行うキャッシュメモリ制御方法。
【請求項２】
少なくとも２つのメモリ単位から構成されるキャッシュメモリについて、メモリ単位毎に予めキャッシュリフィルの可否を設定しておき、前記キャッシュメモリのうちキャッシュリフィルが可と設定されたメモリ単位について選択的にアクセスして第１のキャッシュヒットミス判定を行い、キャッシュヒット時に前記キャッシュメモリへのアクセスを終了するキャッシュメモリ制御方法であって、
前記第１のキャッシュヒットミス判定の結果、キャッシュミスであったときには、前記キャッシュメモリの全てのメモリ単位についてアクセスして第２のキャッシュヒットミス判定を行うキャッシュメモリ制御方法。
【請求項３】
少なくとも２つのメモリ単位から構成されるキャッシュメモリと、前記キャッシュメモリについてメモリ単位毎にキャッシュリフィルの可否を設定するキャッシュリフィル可否設定部と、前記キャッシュリフィル可否設定部の設定状態に応じて前記キャッシュメモリのうち前記キャッシュリフィル可否設定部によってキャッシュリフィル可と設定されたメモリ単位について選択的にアクセスを可能とするメモリ単位選択手段と、前記キャッシュリフィル可と設定されたメモリ単位について第１のキャッシュメモリヒットミス判定を行い、キャッシュヒット時に前記キャッシュメモリへのアクセスを終了させるヒットミス制御部とを備え、
前記メモリ単位選択手段は、前記ヒットミス制御部によりキャッシュミスと判定された時に、前記キャッシュメモリのうちキャッシュリフィルが否とされたメモリ単位について選択的にアクセスを可能とし、前記ヒットミス制御部は、前記キャッシュリフィルが否とされたメモリ単位について第２のキャッシュヒットミス判定を行うキャッシュメモリ制御装置。
【請求項４】
少なくとも２つのメモリ単位から構成されるキャッシュメモリと、前記キャッシュメモリについてメモリ単位毎にキャッシュリフィルの可否を設定するキャッシュリフィル可否設定部と、前記キャッシュリフィル可否設定部の設定状態に応じて前記キャッシュメモリのうち前記キャッシュリフィル可否設定部によってキャッシュリフィル可と設定されたメモリ単位について選択的にアクセスを可能とするメモリ単位選択手段と、前記キャッシュリフィル可と設定されたメモリ単位について第１のキャッシュメモリヒットミス判定を行い、キャッシュヒット時に前記キャッシュメモリへのアクセスを終了させるヒットミス制御部とを備え、
前記メモリ単位選択手段は、前記ヒットミス制御部によりキャッシュミスと判定された時に、前記キャッシュメモリの全てのメモリ単位についてアクセスを可能とし、前記ヒットミス制御部は、前記キャッシュメモリの全てのメモリ単位について第２のキャッシュヒットミス判定を行うキャッシュメモリ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はキャッシュメモリを搭載したマイクロプロセッサにおけるキャッシュメモリ制御方法およびキャッシュメモリ制御装置に関するものである。
【背景技術】
【０００２】
マイクロプロセッサにおいて、外部メモリへのアクセスでの実行ペナルティを隠蔽するためにキャッシュメモリが搭載される。また、近年のマイクロプロセッサを搭載したシステムにおいては、プログラムの実行性能を向上させるために、複数のプロセッサコアを搭載したマルチプロセッサシステムや、ひとつのプロセッサで複数のプログラムを効率よく実行するためのマルチスレッド処理が可能なプロセッサが採用されつつある。
【０００３】
マルチプロセッサや、マルチスレッディングプロセッサにおいては、複数のプログラムを実行するときのメモリは、ひとつのメモリ空間を共有して使用する場合が多い。上記のキャッシュメモリについても、各プロセッサ、各スレッドに個別のキャッシュメモリを搭載するのではなく、ひとつのキャッシュメモリ、またはキャッシュメモリシステムを共有して使用する場合が多い。
【０００４】
通常、キャッシュメモリは複数のウェイをもったセットアソシアティブ構成をとる。プログラムがキャッシュメモリをアクセスする場合、アクセスアドレスがキャッシュヒットするかキャッシュミスするかは、通常全ウェイをアクセスして判定される。
【０００５】
マルチプロセッサやマルチスレッド処理を行うプロセッサにおいて、それぞれのプログラムがキャッシングするデータが、互いのプログラムに対して影響を与えないように、キャッシュウェイを割り当てる方法がある。この場合、キャッシュミスの場合には各プログラムに割り当てられたウェイにデータがリフィルされるために、各プログラムにおいてキャッシュヒットするウェイは割り当てられたウェイである確率が高い。
【０００６】
それにもかかわらず、共有メモリをキャッシングする共有キャッシュであるためにヒットミス判定は全ウェイに対して行わなくてはならず、全ウェイをアクセスしてのキャッシュヒットミス判定は無駄な電力を消費している状態となる。
【０００７】
キャッシュアクセス時の消費電力の低減のために、前回アクセスしたウェイに対してのみキャッシュヒットミス判定を行う、あるいは前回アクセスしたウェイに対してはデータアレイのみアクセスする方法（特許文献１）がある。しかし、この方法が有効なのは命令フェッチなど、アドレスがシーケンシャルに変化する場合に限られる。また、マルチプロセッサシステムや、マルチスレッド処理を行うプロセッサの場合、並列処理されているプログラムの命令フェッチアドレスや、データアクセスアドレスは連続にならない場合があり、効果が十分に発揮できない。
【特許文献１】特開平１１−３９２１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
複数のプロセッサや、スレッドからアクセスされる共有キャッシュメモリにおいて、上記キャッシュメモリが各プロセッサ、またはスレッドに対してリフィルするウェイが割り当て可能なものである場合、割り当てられたウェイにヒットする確率が高いためヒットミス判定を全ウェイに対して同時に行うと無駄な電力を消費する。
【０００９】
したがって、本発明の目的は、キャッシュヒットミス判定に伴う電力の消費を削減することができるキャッシュメモリ制御方法およびキャッシュメモリ制御装置を提供することである。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明のキャッシュメモリ制御方法は、少なくとも２つのメモリ単位から構成されるキャッシュメモリについて、メモリ単位毎に予めキャッシュリフィルの可否を設定しておき、キャッシュメモリのうちキャッシュリフィルが可と設定されたメモリ単位について選択的にアクセスして第１のキャッシュヒットミス判定を行い、キャッシュヒット時にキャッシュメモリへのアクセスを（キャッシュリフィルが可と設定されたメモリ単位へのアクセスのみで）終了するキャッシュメモリ制御方法であって、第１のキャッシュヒットミス判定の結果、キャッシュミスであったときには、キャッシュメモリのうちキャッシュリフィルが否とされたメモリ単位について選択的にアクセスして第２のキャッシュヒットミス判定を行う。
【００１１】
この方法によれば、キャッシュメモリのうちキャッシュリフィルが可と設定されたメモリ単位について選択的に第１のキャッシュヒットミス判定を行い、キャッシュヒット判定時にキャッシュメモリへのアクセスを（キャッシュリフィルが可と設定されたメモリ単位へのアクセスのみで）終了するので、キャッシュヒットミス判定に伴う電力の消費を削減することができる。しかも、キャッシュリフィルが可と設定されたメモリ単位は、キャッシュヒットする確率が高いので、キャッシュリフィルが可と設定されたメモリ単位へのアクセスのみで終了する確率が高く、消費電力を有効に削減できる。
【００１２】
また、キャッシュリフィルが否とされたメモリ単位について第２のキャッシュヒットミス判定を行うので、それぞれが許可されているメモリ単位が異なる複数のアクセスでアクセスされるキャッシュメモリであっても、同一のアドレス空間をキャッシングすることが可能となる。
【００１３】
また、上記本発明のキャッシュメモリ制御方法においては、第１のキャッシュヒットミス判定の結果、キャッシュミスであったときには、キャッシュメモリのうちキャッシュリフィルが否とされたメモリ単位について選択的にアクセスして第２のキャッシュヒットミス判定を行う代わりに、キャッシュメモリの全てのメモリ単位についてアクセスして第２のキャッシュヒットミス判定を行うようにしてもよい。
【００１４】
この方法によれば、すべてのメモリ単位について第２のキャッシュヒットミス判定を行うので、それぞれが許可されているメモリ単位が異なる複数のアクセスでアクセスされるキャッシュメモリであっても、同一のアドレス空間をキャッシングすることが可能となる。
【００１５】
本発明のキャッシュメモリ制御装置は、少なくとも２つのメモリ単位から構成されるキャッシュメモリと、キャッシュメモリについてメモリ単位毎にキャッシュリフィルの可否を設定するキャッシュリフィル可否設定部と、キャッシュリフィル可否設定部の設定状態に応じてキャッシュメモリのうちキャッシュリフィル可否設定部によってキャッシュリフィル可と設定されたメモリ単位について選択的にアクセスを可能とするメモリ単位選択手段と、キャッシュリフィル可と設定されたメモリ単位について第１のキャッシュメモリヒットミス判定を行い、キャッシュヒット時にキャッシュメモリへのアクセスを（キャッシ
ュリフィルが可と設定されたメモリ単位へのアクセスのみで）終了させるヒットミス制御部とを備えている。
【００１６】
そして、メモリ単位選択手段は、ヒットミス制御部によりキャッシュミスと判定された時に、キャッシュメモリのうちキャッシュリフィルが否とされたメモリ単位について選択的にアクセスを可能とし、ヒットミス制御部は、キャッシュリフィルが否とされたメモリ単位について第２のキャッシュヒットミス判定を行う。
【００１７】
この構成によれば、キャッシュメモリのうちキャッシュリフィルが可と設定されたメモリ単位について選択的に第１のキャッシュヒットミス判定を行い、キャッシュヒット判定時にキャッシュメモリへのアクセスを（キャッシュリフィルが可と設定されたメモリ単位へのアクセスのみで）終了するので、キャッシュヒットミス判定に伴う電力の消費を削減することができる。しかも、キャッシュリフィルが可と設定されたメモリ単位は、キャッシュヒットする確率が高いので、キャッシュリフィルが可と設定されたメモリ単位へのアクセスのみで終了する確率が高く、消費電力を有効に削減できる。
【００１８】
また、キャッシュリフィルが否とされたメモリ単位について第２のキャッシュヒットミス判定を行うので、それぞれが許可されているメモリ単位が異なる複数のアクセスでアクセスされるキャッシュメモリであっても、同一のアドレス空間をキャッシングすることが可能となる。
【００１９】
また、上記本発明のキャッシュメモリ制御装置においては、メモリ単位選択手段が、ヒットミス制御部によりキャッシュミスと判定された時に、キャッシュメモリのうちキャッシュリフィルが否とされたメモリ単位について選択的にアクセスを可能とし、ヒットミス制御部が、キャッシュリフィルが否とされたメモリ単位について第２のキャッシュヒットミス判定を行う代わりに、メモリ単位選択手段が、ヒットミス制御部によりキャッシュミスと判定された時に、キャッシュメモリの全てのメモリ単位についてアクセスを可能とし、ヒットミス制御部が、キャッシュメモリの全てのメモリ単位について第２のキャッシュヒットミス判定を行うようにしてもよい。
【００２０】
この構成によれば、すべてのメモリ単位について第２のキャッシュヒットミス判定を行うので、それぞれが許可されているメモリ単位が異なる複数のアクセスでアクセスされるキャッシュメモリであっても、同一のアドレス空間をキャッシングすることが可能となる。
【発明の効果】
【００２１】
本発明を用いれば、マルチプロセッサやマルチスレッド処理するＣＰＵ（Central Processing Unit）を搭載し共有キャッシュメモリを搭載するシステムにおいて、キャッシュメモリ制御部が各プロセッサまたはスレッドに対してリフィルするウェイを割り当て可能な場合、キャッシュアクセスサイクルの性能を低下させることなくキャッシュアクセスの電力低減が可能となる。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の実施例を、図面を参照しながら説明する。
【実施例１】
【００２３】
図１は実施例１におけるキャッシュメモリ制御装置のシステム構成図を示す。図１にはリードアクセス時のキャッシュヒット動作に必要な機能部を示している。このシステムは、ＣＰＵ１（１−１）およびＣＰＵ２（１−２）がキャッシュ制御部（１−３）によりキャッシュメモリ（１−４）を共有して動作する。
【００２４】
キャッシュ制御部（１−３）において、符号（１−５）はアクセス調停制御部を示し、符号（１−６）はリフィル許可ウェイ設定部を示し、符号（１−７）はＣＳ（Chip Select）信号生成部を示し、符号（１−８）はヒットミス制御部を示す。符号（１−４３）は許可設定レジスタ１、符号（１−４４）は許可設定レジスタ２を示す。符号（１−４１）はバス制御部であるＢＣＵ（Bus Control Unit）を示し、符号（１−４２はＩＯ（Input/Output）バスを示す。
【００２５】
キャッシュメモリ（１−４）において、符号（１−９）はウェイ１を示し、符号（１−１０）はウェイ２を示し、符号（１−１１）はウェイ３を示し、符号（１−１２）はウェイ４を示す。
【００２６】
符号（１−１３）はＣＰＵ１リクエストを示し、符号（１−１４）はＣＰＵ１ＩＤを示し、符号（１−１５）はＣＰＵ１アドレスを示す。符号（１−１６）はＣＰＵ２リクエストを示し、符号（１−１７）はＣＰＵ２ＩＤを示し、符号（１−１８）はＣＰＵ２アドレスを示す。符号（１−１９）はキャッシュ制御部（１−３）によるアクセスアドレスを示す。
【００２７】
符号（１−２０）はウェイ１ＣＳ信号を示し、符号（１−２１）はウェイ２ＣＳ信号を示し、符号（１−２２）はウェイ３ＣＳ信号を示し、符号（１−２３）はウェイ４ＣＳ信号を示す。各ウェイのＣＳ信号、つまり符号（１−２０）〜（１−２３）で示す各信号は負論理の信号とする。符号（１−２４）はウェイ１ヒット信号を示し、符号（１−２５）はウェイ２ヒット信号を示し、符号（１−２６）はウェイ３ヒット信号を示し、符号（１−２７）はウェイ４ヒット信号を示す。符号（１−２８）はデータセレクト信号を示す。符号（１−２９）はウェイ１データを示し、符号（１−３０）はウェイ２データを示し、符号（１−３１）はウェイ３データを示し、符号（１−３２）はウェイ４データを示す。符号（１−３３）はキャッシュリードデータを示す。符号（１−３４）はウェイセレクタを示す。符号（１−３５）はアクセス終了信号を示す。符号（１−３６）はＣＰＵ１アクノリッジを示し、符号（１−３７）はＣＰＵ２アクノリッジを示す。符号（１−３８）はクロックを示す。符号（１−３９）はアクセスＩＤを示す。符号（１−４０）はリフィル許可情報を示す。
【００２８】
以下、この実施例のキャッシュメモリ制御装置について詳しく説明する。ＣＰＵ１（１−１）およびＣＰＵ２（１−２）からメモリアクセスが行われる場合、キャッシュ制御部（１−３）のアクセス調停制御部（１−５）において、どちらのＣＰＵからのアクセスを行うかが調停され、処理を受理したＣＰＵのＩＤからキャッシュアクセスを行うアクセスＩＤ（１−３９）が生成される。ここでは、処理を受理したＣＰＵのＩＤがそのままアクセスＩＤ（１−３９）となる。
【００２９】
アクセスＩＤ（１−３９）によりキャッシュ制御部（１−３）は、例えばＣＰＵ１アドレス（１−１５）を選択してキャッシュメモリ（１−４）へ送る。
【００３０】
キャッシュ制御部（１−３）にはリフィル許可ウェイ設定部（１−６）を有しており、ＣＰＵ１（１−１）およびＣＰＵ２（１−２）で実行中のプログラムがどのウェイに対してリフィルを許可するかを設定する許可設定レジスタ１（１−４３）、許可設定レジスタ２（１−４４）がある。許可設定レジスタ１（１−４３）はＣＰＵ１（１−１）に対しての設定を保持し、許可設定レジスタ２はＣＰＵ２に対しての設定を保持する。また、許可設定レジスタ１（１−４３）、許可設定レジスタ２（１−４３）はＢＣＵ（１−４１）からIOバス（１−４２）を経由してアクセス可能なレジスタであり、ソフトウェアにより自由に設定可能なものである。
【００３１】
キャッシュメモリ（１−４）はセットアソシアティブ構成を有している。図には４ウェイセットアソシアティブの構成のキャッシュメモリ（１−４）が示されている。具体的には、キャッシュメモリ（１−４）は、ウェイ１（１−９）、ウェイ２（１−１０）、ウェイ３（１−１１）、ウェイ４（１−１２）の４つのメモリブロック（メモリ単位）から構成される。各ウェイはタグデータを保持しているタグメモリと、データを保持しているデータメモリとから構成される。
【００３２】
各ウェイへのアクセスは、ＣＳ信号生成部（１−７）からＣＳ信号が入力されることにより実行される。ウェイ１（１−９）に対してはＣＳ信号生成部（１−７）がウェイ１ＣＳ信号（１−２０）を生成して入力する。ＣＳ信号が入力されたウェイ１（１−９）は、アクセスアドレス（１−１９）、この例ではＣＰＵ１アドレス（１−１５）に対してキャッシュヒットミス判定を行い、ウェイ１ヒット信号（１−２４）をヒットミス制御部（１−８）に出力する。キャッシュヒットの場合にはウェイ1内のデータメモリからウェイ１データ（１−２９）を出力する。他のウェイも同様に動作する。
【００３３】
ヒットミス制御部（１−８）はウェイ１ヒット信号（１−２４）、ウェイ２ヒット信号（１−２５）、ウェイ３ヒット信号（１−２６）、ウェイ４ヒット信号（１−２７）を受け、いずれかのヒット信号がアサートされていればキャッシュヒットと判断し、データセレクト信号（１−２８）を出力する。また、ヒットミス制御部（１−８）は、データセレクト信号（１−２８）の出力と同時にアクセス終了信号（１−３５）を出力し、アクセスが終了することをアクセス調停制御部（１−５）に知らせ、アクセス調停制御部（１−５）はいまアクセスしているアクセスＩＤ（１−３９）を基にＣＰＵ１アクノリッジ（１−３６）、または、ＣＰＵ２アクノリッジ（１−３７）を出力する。
【００３４】
ウェイセレクタ（１−３４）は、上記したようにデータセレクト信号（１−２８）を受け、ヒットしたウェイのデータを選択し、キャッシュリードデータ（１−３３）をＣＰＵ１（１−１）とＣＰＵ２（１−２）に出力する。
【００３５】
図２は本発明の実施例１におけるキャッシュアクセスのフローチャートを示す。ＣＰＵ１（１−１）またはＣＰＵ２（１−２）からアクセスが発生すると、アクセス調停制御部（１−５）でアクセスを受理するＣＰＵを決定し、アクセスＩＤ（１−３９）を生成し、キャッシュアクセスを開始する。
【００３６】
キャッシュアクセスを開始すると、リフィル許可ウェイ設定部（１−６）からＣＳ信号生成部（１−７）へ、アクセスＩＤ（１−３９）を元にリフィル許可情報（１−４０）が出力される。ＣＰＵ１（１−１）を受理した場合には許可設定レジスタ１（１−４３）の内容が、ＣＰＵ２（１−２）を受理した場合には、許可設定レジスタ２（１−４４）の内容がリフィル許可情報（１−４０）として出力される。その結果、ＣＳ信号生成部（１−７）では、割り当てられたウェイに対してのみＣＳ信号を生成し、それによって割り当てられたウェイに対してアクセスが行われる（ステップ２−１）。
【００３７】
アクセスが行われたウェイは、ヒットミス判定を行い、ヒットミス判定を行った結果であるヒット信号をヒットミス制御部（１−８）に返す。ヒットミス制御部（１−８）では第１のヒットミス判定が行われる（ステップ２−２）。
【００３８】
ヒットミス制御部（１−８）はいずれかのウェイからヒット信号がアサートされた場合、ヒットと判定し、ヒットしたウェイのデータを出力（ステップ２−６）した後、アクセスを終了する（ステップ２−７）。
【００３９】
ステップ２−２でミスであるとヒットミス制御部（１−８）で判定された場合、ＣＳ信号生成部（１−７）では、リフィル許可ウェイ設定部（１−６）内の許可設定レジスタ１（１−４３）で割り当てられていない残りのウェイに対してＣＳ信号を生成し、第２のアクセスを行う（ステップ２−３）。
【００４０】
第２のアクセスが行われたウェイは、ヒットミス判定を行った結果であるヒット信号をヒットミス制御部（１−８）に返す。ヒットミス制御部（１−８）では第２のヒットミス判定が行われる（ステップ２−４）。いずれかのウェイからヒット信号がアサートされた場合、ヒットと判定し、ヒットしたウェイのデータを出力（ステップ２−６）した後、アクセスを終了する（ステップ２−７）。
【００４１】
第２のヒットミス判定（ステップ２−４）がミスの場合、外部メモリからのリフィルの処理が開始される（ステップ２−５）。
【００４２】
図３は実施例１におけるタイミング図であり、割り当てられたウェイ内でヒットする場合のタイミング図である。図ではＣＰＵ１（１−１）からのアクセスがあった場合を示している。
【００４３】
また、ＣＰＵ１（１−１）に対して、リフィル許可ウェイ設定部（１−６）ではウェイ１とウェイ２に対してリフィルの許可が設定されているとする。
【００４４】
サイクル３−１でＣＰＵ１（１−１）からのキャッシュリクエストが発生し、アクセス調停制御部（１−５）においてＣＰＵ１（１−１）からのアクセスが受理され、アクセスＩＤ（１−３９）が生成される。すなわち、アクセスＩＤ（１−３９）はＣＰＵ１（１−１）を示す「ＩＤ１」が出力される。
【００４５】
リフィル許可ウェイ設定部（１−６）はアクセスＩＤ（１−３９）からリフィル許可情報（１−４０）として「００１１」をＣＳ信号生成部（１−７）に出力する。図ではリフィル許可情報（１−４０）は各ビットが各ウェイに対応し、１であれば許可されていることを示す。
【００４６】
ＣＳ信号生成部（１−７）はウェイ１、ウェイ２のみのＣＳ信号を生成し、ウェイ１ＣＳ信号（１−２０）、ウェイ２ＣＳ信号（１−２１）をアサートし、ウェイ３ＣＳ信号（１−２２）、ウェイ４ＣＳ信号（１−２３）はアサートしない。
【００４７】
ＣＳ信号が入力されたウェイ１（１−９）、ウェイ２（１−１０）は、アクセスアドレス（１−１９）に対してヒットミス判定を行い、サイクル３−２において、ウェイ１ヒット信号（１−２４）、ウェイ２ヒット信号（１−２５）を出力する。図３ではではウェイ１にヒットする場合を示している。
【００４８】
ヒットミス制御部（１−８）は、ウェイ１ヒット信号（１−２４）、ウェイ２ヒット信号（１−２５）を見て、ウェイ１にヒットしたと判定しアクセス終了信号（１−３５）を出力し、キャッシュ制御を終了する。同時にデータセレクト信号（１−２８）としてウェイ１を選択する信号を出力する。
【００４９】
アクセス調停制御部（１−５）ではアクセス終了信号（１−３５）と、アクセスＩＤ（１−３９）とから、アクセスＩＤ（１−３９）が示すＣＰＵに対してアクノリッジ信号を返す。図ではＣＰＵ１（１−１）からのアクセスであるため、ＣＰＵ１アクノリッジ（１−３６）をアサートする。
【００５０】
ウェイセレクタ（１−３４）ではデータセレクト信号（１−２８）をみてウェイ１データ（１−２９）を選択し、キャッシュリードデータ（１−３３）としてウェイ１のデータを出力する。
【００５１】
マルチプロセッサの各ＣＰＵや各スレッドにキャッシュをリフィルするウェイを割り当て、リフィルするウェイが各ＣＰＵ、各スレッドで限定される場合、キャッシュアクセスがヒットするウェイは上記の割り当てられたウェイ内である確率が高い。特に、各ＣＰＵ、各スレッドがメモリ空間を分割して同一物理メモリ内でも共有メモリ空間がない場合にはその確率は１００％になる。
【００５２】
このような場合、共有キャッシュメモリの全ウェイにアクセスしても、割り当てられた
ウェイ内でヒットする確率が高いために、割り当てられていないウェイのメモリを動作させることは電力が無駄に消費されることになる。
【００５３】
割り当てられたウェイのみアクセスし、そのウェイ内でヒットする場合には残りのウェイをアクセスする必要が無い。
【００５４】
また、本発明の方法では割り当てられたウェイ内でヒットする場合、第１のアクセスで全ウェイアクセスする場合とアクセス終了までのサイクル数は変わらない。
【００５５】
本発明により、前述した割り当てられたウェイ内にヒットする確率を考慮すれば性能劣化なしに電力低減を実現可能である。
【００５６】
図４は実施例１におけるタイミング図であり、割り当てられたウェイ以外にヒットする場合のタイミング図である。図４ではウェイ３にヒットする場合の動作を示す。サイクル３−４の動作は図３のサイクル３−１と同じである。
【００５７】
サイクル３−５において、アクセスされたウェイ１、ウェイ２にはヒットしないために、ウェイ１ヒット信号（１−２４）およびウェイ２ヒット信号（１−２５）はアサートされない。キャッシュ制御部（１−３）は第１のヒットミス判定でヒットしなかったと判断し、第２のヒットミス判定を開始する。
【００５８】
サイクル３−５では割り当てられていないウェイ３、ウェイ４のアクセスを行うためＣＳ信号生成部（１−７）からウェイ３ＣＳ信号（１−２２）、ウェイ４ＣＳ信号（１−２３）を生成する。
【００５９】
サイクル３−６ではウェイ３ヒット信号（１−２６）と、ウェイ４ヒット信号（１−２７）が出力される。
【００６０】
ヒットミス制御部（１−８）は第２の判定サイクルを行い、ウェイ３ヒット信号（１−２６）からウェイ３がヒットしたとしてキャッシュ制御を終了し、アクセス終了信号（１−３５）を出力する。同時に、データセレクト信号（１−２８）としてウェイ３のセレクト信号を出力する。
【００６１】
ウェイセレクタ（１−３４）ではデータセレクト信号（１−２８）をみてウェイ３データ（１−３１）を選択し、キャッシュリードデータ（１−３３）としてウェイ３のデータを出力する。
【００６２】
なお、図示はしていないが、図３のサイクル３−６においてウェイ３ヒット信号（１−２６）、ウェイ４ヒット信号（１−２７）がともにアサートされない場合、ヒットミス制御部（１−８）はキャッシュミスと判断し、サイクル３−６以降において、キャッシュ制御部（１−３）は外部メモリからのリフィルの処理を開始する。
【００６３】
上記２段階のアクセスを行えば、共有メモリ空間内で自ＣＰＵ以外のＣＰＵによって、自ＣＰＵに割り当てられているウェイ以外のウェイにヒットするデータが存在している場合でもキャッシュからのデータリードが可能である。
【００６４】
また、キャッシュアクセスによって外部メモリにアクセスする必要もなく、全ウェイアクセス時と同様に共有キャッシュメモリを使用可能である。
【００６５】
また、前述したように通常キャッシュヒットするウェイは割り当てられたウェイ内にヒ
ットする確率が高いために、プログラムの全体実行から考えると全ウェイアクセス時と同等のアクセス性能で電力低下が実現可能である。
【００６６】
なお、本実施例ではリードアクセスを説明しているが、ライトアクセスについても同様の方法で電力低下を実現可能である。
また、本実施例ではキャッシュメモリの各ウェイはＣＳ信号が入力されるとヒットミス判定を行いデータ出力するキャッシュメモリで説明しているが、キャッシュメモリ内のタグメモリ、データメモリは、タグメモリ用のＣＳ信号、データメモリ用のＣＳ信号で別々にアクセス可能なキャッシュメモリでも同様の処理を実行することが可能である。
【実施例２】
【００６７】
図５は本発明の実施例２におけるキャッシュアクセスのフローチャートである。
実施例２では、実施例１においての第２のアクセス時のアクセスウェイ数が異なるのみであり、アクセス開始から、第１のアクセスまでのステップ（ステップ２−１，２−２）と、第２のアクセス以降のステップ（ステップ２−４，２−５，２−６，２−７）は同じである。
【００６８】
実施例２では第２のアクセス（ステップ３−１）において、全ウェイに対してアクセスを行う。
【００６９】
図６は実施例２におけるタイミング図である。図には割り当てられていないウェイにヒットした場合のタイミングを示している。
【００７０】
なお、割り当てられたウェイにヒットする場合は実施例１とまったく同じアクセスタイミング（図３）である。
【００７１】
サイクル６−１の動作は図３のサイクル３−１と同じである。
【００７２】
サイクル６−１において、アクセスされたウェイ１、ウェイ２にはヒットしないために、ウェイ１ヒット信号（１−２４）およびウェイ２ヒット信号（１−２５）はアサートされない。キャッシュ制御部（１−３）は第１のヒットミス判定でヒットしなかったと判断し、第２のヒットミス判定を開始する。
【００７３】
サイクル６−２では全ウェイのアクセスを行う。ＣＳ信号生成部（１−７）からウェイ１ＣＳ信号（１−２０）、ウェイ２ＣＳ信号（１−２１）、ウェイ３ＣＳ信号（１−２２）、ウェイ４ＣＳ信号（１−２３）を生成する。
【００７４】
サイクル６−３では、ウェイ１ヒット信号（１−２４）、ウェイ２ヒット信号（１−２５）、ウェイ３ヒット信号（１−２６）、ウェイ４ヒット信号（１−２７）が出力される。
【００７５】
ヒットミス制御部（１−８）は第２のヒットミス判定を行い、ウェイ３ヒット信号（１−２６）からウェイ３がヒットしたとしてキャッシュ制御を終了し、アクセス終了信号（１−３５）を出力する。同時に、データセレクト信号（１−２８）としてウェイ３のセレクト信号を出力する。
【００７６】
ウェイセレクタ（１−３４）ではデータセレクト信号（１−２８）をみてウェイ３データ（１−３１）を選択し、キャッシュリードデータ（１−３３）としてウェイ３のデータを出力する。
【００７７】
なお、実施例１と同様、実施例２でもリードアクセスのみ示しているが、同様の方法をライトアクセスに対しても適用できる。
【実施例３】
【００７８】
図７に実施例３におけるキャッシュメモリ制御装置のシステム構成図を示す。図７にはリードアクセス時のキャッシュヒット動作に必要な機能部を示している。
【００７９】
このシステムにおけるＣＰＵ（７−１）は、複数のプログラムを時間単位でプログラムカウンタなどの内部資源情報を切り替えて実行するＣＰＵ、あるいは、一つのＣＰＵで複数のプログラムを並列実行するＣＰＵである（マルチスレッド）。ここで、本実施例のＣＰＵ(７−１)は、通常のマルチスレッド動作をし、メモリアクセスの実行中にスレッドが切り替わらないＣＰＵであるとする。
【００８０】
符号（７−２）はアクセス制御部を示し、符号（７−３）はＣＰＵアドレスを示し、符号（７−４）はＣＰＵリクエストを示し、符号（７−５）はＣＰＵアクノリッジを示し、符号（７−６）は処理ＩＤを示す。符号（７−７）は処理ID毎のリフィル許可ウェイの設定を保持する許可設定レジスタを示す。
【００８１】
ＣＰＵ（７−１）からアクセスが行われる場合、ＣＰＵリクエスト（７−４）が出力され、それと同期して現在実行している処理の識別子である処理ＩＤ（７−６）が出力される。アクセス制御部（７−２）はＣＰＵリクエスト（７−４）を受けてキャッシュアクセスを開始する。またアクセスＩＤ（１−３９）をリフィル許可ウェイ設定部（１−６）に出力する。リフィル許可ウェイ設定部（１−６）には処理ID毎にリフィル許可ウェイを設定可能な許可設定レジスタ（７−７）があり、アクセスID(１−３９)に対応する設定をリフィル許可情報（１−４０）として出力する。この実施例では、処理ＩＤ（７−６）がそのままアクセスＩＤ（１−３９）として出力されるが、処理ＩＤ（７−６）と対応がとれれば異なるデータであってもよい。
【００８２】
その後の処理は、実施例１、および実施例２と同様であり、同様の効果が得られる。
【００８３】
上記したように、ＣＰＵ（７−１）は、通常のマルチスレッド動作をし、リードアクセス途中に（リードデータが返ってくる前に）スレッドが切り替わることはない。すなわち、キャッシュリードデータ（１−３３）がＣＰＵ(７−１) に入力されるまでスレッドは切り替わらない。したがって、キャッシュリードデータ（１−３３）は常にそのリードアクセスを起動した処理ＩＤ（７−６）に対応するデータとなる。したがって、キャッシュリードデータ１−３３をＣＰＵ（７−１）がそのまま取り込めばよい。
【００８４】
また、実施例１同様、リードアクセスのみの機能を示しているが、同様の方法をライトアクセスに対しても適用できる。
【００８５】
なお、上記の各実施例では、第１のヒットミス判定の結果、キャッシュヒットの場合キャッシュメモリへのアクセスを完了し、キャッシュミスの場合キャッシュメモリの残りのウェイもしく全ウェイへのアクセスを行い、第２のヒットミス判定を行うようにしていた。しかし、第１のヒットミス判定の結果、キャッシュミスの場合にキャッシュメモリの残りのウェイもしく全ウェイへのアクセスを行わず、つまり第２のヒットミス判定を行わず、外部メモリからのリフィルの処理を開始させるようにしてもよい。
【産業上の利用可能性】
【００８６】
本発明に係るキャッシュメモリ制御装置は、キャッシュアクセスサイクルの性能をほとんど低下させることなくキャッシュアクセスの電力低減が可能となるという効果を有し、マルチプロセッサやマルチスレッド処理するＣＰＵを搭載し共有キャッシュメモリを搭載するシステムとして有用である。
【図面の簡単な説明】
【００８７】
【図１】図１は本発明の実施例１におけるキャッシュメモリ制御装置のシステム構成を示すブロック図である。
【図２】図２は本発明の実施例１におけるキャッシュアクセスのフローチャートである。
【図３】図３は本発明の実施例１におけるキャッシュメモリ制御装置のタイミング図（割り当てウェイ内のヒット）である。
【図４】図４は本発明の実施例１におけるキャッシュメモリ制御装置のタイミング図（割り当てウェイ以外でのヒット）である。
【図５】図５は本発明の実施例２におけるキャッシュアクセスのフローチャートである。
【図６】図６は本発明の実施例２におけるキャッシュメモリ制御装置のタイミング図である。
【図７】図７は本発明の実施例３におけるキャッシュメモリ制御装置のシステム構成を示すブロック図である。
【符号の説明】
【００８８】
（１−１）    ＣＰＵ１
（１−２）    ＣＰＵ２
（１−３）  キャッシュ制御部
（１−４）  キャッシュメモリ
（１−５）  アクセス調停制御部
（１−６）  リフィル許可ウェイ設定部
（１−７）  ＣＳ信号生成部
（１−８）  ヒットミス制御部
（１−９）    ウェイ１
（１−１０）  ウェイ２
（１−１１）  ウェイ３
（１−１２）  ウェイ４
（１−１３）  ＣＰＵ１リクエスト
（１−１４）  ＣＰＵ１ＩＤ
（１−１５）  ＣＰＵ１アドレス
（１−１６）  ＣＰＵ２リクエスト
（１−１７）  ＣＰＵ２ＩＤ
（１−１８）  ＣＰＵ２アドレス
（１−１９）  アクセスアドレス
（１−２０）  ウェイ１ＣＳ信号
（１−２１）  ウェイ２ＣＳ信号
（１−２２）  ウェイ３ＣＳ信号
（１−２３）  ウェイ４ＣＳ信号
（１−２４）  ウェイ１ヒット信号
（１−２５）  ウェイ２ヒット信号
（１−２６）  ウェイ３ヒット信号
（１−２７）  ウェイ４ヒット信号
（１−２８）  データセレクト信号
（１−２９）  ウェイ１データ
（１−３０）  ウェイ２データ
（１−３１）  ウェイ３データ
（１−３２）  ウェイ４データ
（１−３３）  キャッシュリードデータ
（１−３４）  ウェイセレクタ
（１−３５）  アクセス終了信号
（１−３６）  ＣＰＵ１アクノリッジ
（１−３７）  ＣＰＵ２アクノリッジ
（１−３８）  クロック
（１−３９）  アクセスＩＤ
（１−４０）  リフィル許可情報
（１−４１）  ＢＣＵ
（１−４２）  ＩＯバス
（１−４３）  許可設定レジスタ１
（１−４４）  許可設定レジスタ２
２−１  第１アクセスのステップ
２−２  第１のヒットミス判定のステップ
２−３  第２アクセスのステップ
２−４  第２のヒットミス判定のステップ
２−５  キャッシュリフィルのステップ
２−６  データ出力のステップ
２−７  アクセス終了のステップ
【図１】
0004080527.tif 000002
【図２】
0004080527.tif 000003
【図３】
0004080527.tif 000004
【図４】
0004080527.tif 000005
【図５】
0004080527.tif 000006
【図６】
0004080527.tif 000007
【図７】
0004080527.tif 000008