実施の形態1.
図1は、本発明の実施の形態1に係るキャッシュシステムが搭載されている半導体装置の構成を示すブロック図である。図1に示すように、半導体装置は、CPU(プロセッサ)1と、CPU1とは異なる機能ブロック(本実施の形態1の例ではCPU80)と、キャッシュ部100と、バス調停回路60と、外部バス3と、外部メモリ70とを備えている。キャッシュ部100は、キャッシュ制御部2と、キャッシュメモリ50とを有している。キャッシュ制御部2は、キャッシュメモリ50の動作を制御する。CPU1は、キャッシュ制御部2を介してキャッシュメモリ50にアクセス可能である。キャッシュメモリ50には、CPU80からも、キャッシュ制御部2を介してアクセス可能である。
CPU1には、キャッシュアクセス受付信号S5及びキャッシュデータレディ信号S6が、キャッシュ制御部2から入力される。また、CPU1には、例えば32ビットの出力データD2が、キャッシュメモリ50から入力される。CPU1は、キャッシュアクセス要求信号S4、及び、例えば27ビットのキャッシュアドレスA2を出力する。
キャッシュ制御部2には、キャッシュアクセス要求信号S4及びキャッシュアドレスA2が、CPU1から入力される。また、キャッシュ制御部2には、スヌープ要求信号S1、及び、例えば27ビットのスヌープアドレスA1が、CPU80から入力される。また、キャッシュ制御部2には、出力データD2及びMiss信号S11が、キャッシュメモリ50から入力される。また、キャッシュ制御部2には、バスアクセス受付信号S8が、バス調停回路60から入力される。キャッシュ制御部2は、キャッシュアクセス受付信号S5、キャッシュデータレディ信号S6、スヌープ要求受付信号S2、スヌープデータレディ信号S3、バスアクセス要求信号S7、例えば128ビットのライトバックデータD1、タグイネーブル信号S9、例えば27ビットのアクセスアドレスA3、及び、キャッシュアクセスモード切替信号S10を出力する。
CPU80には、スヌープ要求受付信号S2及びスヌープデータレディ信号S3が、キャッシュ制御部2から入力される。また、CPU80には、出力データD2が、キャッシュメモリ50から入力される。CPU80は、スヌープ要求信号S1及びスヌープアドレスA1を出力する。
キャッシュメモリ50には、タグイネーブル信号S9、アクセスアドレスA3、及び、キャッシュアクセスモード切替信号S10が、キャッシュ制御部2から入力される。キャッシュメモリ50は、Miss信号S11及び出力データD2を出力する。
バス調停回路60には、バスアクセス要求信号S7が、キャッシュ制御部2から入力される。バス調停回路60は、バスアクセス受付信号S8を出力する。
外部メモリ70には、ライトバックデータD1が、キャッシュ制御部2から外部バス3を介して入力される。
CPU1は、キャッシュメモリ50内に格納されているデータを読み出す場合、キャッシュアクセス要求信号S4及びキャッシュアドレスA2を出力する。キャッシュアクセス要求信号S4及びキャッシュアドレスA2は、キャッシュ制御部2に入力される。
キャッシュ制御部2は、同一のサイクル期間内にキャッシュメモリ50への複数のアクセス要求があった場合、それらを調停する機能を有する。かかる調停機能は周知であるため、詳細な説明は省略する。
キャッシュ制御部2は、キャッシュアクセス要求信号S4を受け付けると、キャッシュメモリ50がアクセス可能な状態であれば、キャッシュアクセス受付信号S5と、タグイネーブル信号S9と、キャッシュアドレスA2に基づきアクセスアドレスA3とを出力する。キャッシュアクセス受付信号S5は、CPU1に入力される。タグイネーブル信号S9及びアクセスアドレスA3は、キャッシュメモリ50に入力される。
CPU80は、キャッシュメモリ50内に格納されているデータを読み出す場合、スヌープ要求信号S1及びスヌープアドレスA1を出力する。スヌープ要求信号S1及びスヌープアドレスA1は、キャッシュ制御部2に入力される。
キャッシュ制御部2は、スヌープ要求信号S1を受け付けると、キャッシュメモリ50がアクセス可能な状態であれば、スヌープ要求受付信号S2と、タグイネーブル信号S9と、スヌープアドレスA1に基づきアクセスアドレスA3とを出力する。スヌープ要求受付信号S2は、CPU80に入力される。タグイネーブル信号S9及びアクセスアドレスA3は、キャッシュメモリ50に入力される。
CPU1及びCPU80からキャッシュメモリ50への各アクセスに関して、キャッシュ制御部2は、第1の速度、かつ第1の消費電力でアクセスするモード(以下「2サイクルアクセスモード」と称する)と、第1の速度よりも早い第2の速度、かつ第1の消費電力よりも高い第2の消費電力でアクセスするモード(本明細書において「1サイクルアクセスモード」)とを有している。
キャッシュ制御部2は、CPU80からキャッシュメモリ50へのアクセスの状況に応じて、2サイクルアクセスモードと1サイクルアクセスモードとを切り替える。具体的に、キャッシュ制御部2は、スヌープ要求信号S1がアサートされている「H(High)」期間、「H」レベルのキャッシュアクセスモード切替信号S10を出力し、それ以外の期間では、「L(Low)」レベルのキャッシュアクセスモード切替信号S10を出力する。キャッシュアクセスモード切替信号S10は、キャッシュメモリ50に入力される。キャッシュアクセスモード切替信号S10が「H」レベルの場合は1サイクルアクセスモードであり、キャッシュアクセスモード切替信号S10が「L」レベルの場合は2サイクルアクセスモードである。
あるいは、キャッシュ制御部2は、スヌープ要求信号S1に基づくキャッシュアクセスの場合は、「H」レベルのキャッシュアクセスモード切替信号S10を出力し、一方、キャッシュアクセス要求信号S4に基づくキャッシュアクセスの場合は、「L」レベルのキャッシュアクセスモード切替信号S10を出力してもよい。
キャッシュメモリ50は、タグイネーブル信号S9を受け付けると、アクセスアドレスA3及びキャッシュアクセスモード切替信号S10に基づいて、データの読み出し処理を開始し、Miss信号S11及び出力データD2を出力する。
キャッシュアクセス要求信号S4に基づくキャッシュアクセスである場合、キャッシュ制御部2は、CPU1が必要とするデータがキャッシュメモリ50内に格納されていることをMiss信号S11に基づいて判別すると、出力データD2の出力タイミングに同期してキャッシュデータレディ信号S6を出力する。キャッシュデータレディ信号S6は、CPU1に入力される。
スヌープ要求信号S1に基づくキャッシュアクセスである場合、キャッシュ制御部2は、CPU80が必要とするデータがキャッシュメモリ50内に格納されていることをMiss信号S11に基づいて判別すると、出力データD2の出力タイミングに同期してスヌープデータレディ信号S3を出力する。スヌープデータレディ信号S3は、CPU80に入力される。
キャッシュメモリ50から読み出した出力データD2を外部メモリ70に書き戻す場合、キャッシュ制御部2は、バスアクセス要求信号S7を出力する。バスアクセス要求信号S7は、バス調停回路60に入力される。バス調停回路60は、外部メモリ70に接続されている外部バス3が使用可能である場合は、バスアクセス受付信号S8を出力する。バスアクセス受付信号S8は、キャッシュ制御部2に入力される。キャッシュ制御部2は、バスアクセス受付信号S8を受け付けると、ライトバックデータD1を出力する。ライトバックデータD1は、外部バス3を介して外部メモリ70に入力される。
図2,3は、キャッシュ制御部2の構成の一部をそれぞれ示すブロック図である。図2を参照して、キャッシュ制御部2は、切替信号生成回路2aを有している。切替信号生成回路2aは、スヌープ要求信号S1を、キャッシュアクセスモード切替信号S10として出力する。
あるいは、図3に示すように、キャッシュ制御部2は、切替信号生成回路2bを有している。切替信号生成回路2bは、スヌープ要求受付信号S2を、キャッシュアクセスモード切替信号S10として出力する。
図4は、キャッシュメモリ50の具体的な構成を示すブロック図である。キャッシュメモリ50は、2ウェイ・セット・アソシアティブ方式の構成を有している。キャッシュメモリ50は、タグメモリ101と、ラッチ回路106と、比較器92a,92bと、ミス判定装置103と、キャッシュアクセスモード切替装置109と、データメモリ104と、セレクタ105,111と、フリップフロップ110とを有している。
タグメモリ101は、アドレスメモリであって、いずれもアドレスアレイであるタグWay0とタグWay1とを含んでいる。タグWay0及びタグWay1は、それぞれインデックスアドレスに対応させてタグアドレスを記憶している。
タグWay0及びタグWay1には、図1に示したアクセスアドレスA3の下位部であるインデックスアドレスA3b(例えば8ビット)がそれぞれ入力される。タグWay0及びタグWay1は、入力されたインデックスアドレスA3bに対応するタグアドレス(例えば17ビット)をそれぞれ出力する。
インデックスアドレスA3bによって特定されるタグWay0のタグアドレスは、同一のインデックスアドレスA3bによって特定されるデータWay0(後述)のデータに関するアドレスである。同様に、インデックスアドレスA3bによって特定されるタグWay1のタグアドレスは、同一のインデックスアドレスA3bによって特定されるデータWay1(後述)のデータに関するアドレスである。
タグWay0及びタグWay1には、タグイネーブル信号S9がそれぞれ入力される。タグWay0及びタグWay1は、タグイネーブル信号S9が「H」レベルの場合には動作し、タグイネーブル信号S9が「L」レベルの場合には動作しない。
比較器92a,92bには、図1に示したアクセスアドレスA3の上位部であるタグアドレスA3a(例えば17ビット)が、ラッチ回路106を介してそれぞれ入力される。ラッチ回路106は、入力されたタグアドレスA3aを1/2サイクル期間遅延させて出力する。
比較器92aは、タグWay0から入力されたタグアドレスと、ラッチ回路106から入力されたタグアドレスA3aとを比較する。そして、比較器92aは、両者が一致している場合、つまり、指定されたアドレスのデータがデータWay0に存在している場合(即ちヒットの場合)には、「H」レベルのTag hit Way0信号S20を出力する。一方、両者が一致していない場合、つまり、指定されたアドレスのデータがデータWay0に存在していない場合(即ちミスヒットの場合)には、「L」レベルのTag hit Way0信号S20を出力する。Tag hit Way0信号S20は、ミス判定装置103及びキャッシュアクセスモード切替装置109に入力される。
比較器92bは、タグWay1から入力されたタグアドレスと、ラッチ回路106から入力されたタグアドレスA3aとを比較する。そして、比較器92bは、両者が一致している場合、つまり、指定されたアドレスのデータがデータWay1に存在している場合(即ちヒットの場合)には、「H」レベルのTag hit Way1信号S21を出力する。一方、両者が一致していない場合、つまり、指定されたアドレスのデータがデータWay1に存在していない場合(即ちミスヒットの場合)には、「L」レベルのTag hit Way1信号S21を出力する。Tag hit Way1信号S21は、ミス判定装置103及びキャッシュアクセスモード切替装置109に入力される。
ミス判定装置103は、Tag hit Way0信号S20及びTag hit Way1信号S21がいずれも「L」レベルである場合は、指定されたアドレスのデータがデータWay0内にもデータWay1内にも存在していないことを示す内容のMiss信号S11を出力する。
データメモリ104は、いずれもデータアレイであるデータWay0とデータWay1とを含んでいる。データWay0及びデータWay1は、それぞれインデックスアドレスに対応させてデータを記憶している。なお、本明細書において、「データ」という用語には、命令コード及びオペランドデータの双方が含まれるものとする。
データWay0内に記憶されているデータは、インデックスアドレスA3bを下位アドレスとし、同一のインデックスアドレスA3bに対応させてタグWay0内に記憶されているタグアドレスを上位アドレスとするデータである。同様に、データWay1内に記憶されているデータは、インデックスアドレスA3bを下位アドレスとし、同一のインデックスアドレスA3bに対応させてタグWay1内に記憶されているタグアドレスを上位アドレスとするデータである。
フリップフロップ110は、入力されたインデックスアドレスA3bを、1サイクル期間遅延させて出力する。フリップフロップ110の出力は、セレクタ111の第1の入力端子に入力される。
セレクタ111の第2の入力端子には、インデックスアドレスA3bが入力される。
セレクタ111には、図1に示したキャッシュ制御部2からキャッシュアクセスモード切替信号S10が入力される。セレクタ111は、キャッシュアクセスモード切替信号S10が「L」レベルの場合には第1の入力端子を選択し、「H」レベルの場合には第2の入力端子を選択する。
データWay0及びデータWay1には、セレクタ111の出力がそれぞれ入力されるとともに、キャッシュアクセスモード切替装置109からWay0 enable信号S22及びWay1 enable信号S23がそれぞれ入力される。
Way0 enable信号S22が「H」レベルの場合には、データWay0は、セレクタ111の出力に対応するデータを出力する。データWay0から出力されたデータは、セレクタ105の第1の入力端子に入力される。Way0 enable信号S22が「L」レベルの場合には、データWay0は動作しない。
Way1 enable信号S23が「H」レベルの場合には、データWay1は、セレクタ111の出力に対応するデータを出力する。データWay1から出力されたデータは、セレクタ105の第2の入力端子に入力される。Way1 enable信号S23が「L」レベルの場合には、データWay1は動作しない。
セレクタ105には、キャッシュアクセスモード切替装置109からWay select信号S24が入力される。セレクタ105は、Way select信号S24が「L」レベルの場合には第1の入力端子を選択し、「H」レベルの場合には第2の入力端子を選択する。
キャッシュアクセスモード切替装置109には、図1に示したキャッシュ制御部2からキャッシュアクセスモード切替信号S10が入力される。キャッシュアクセスモード切替装置109による切替制御によって、キャッシュアクセスモード切替信号S10が「H」レベルの場合にはキャッシュメモリ50は1サイクルアクセスモードで動作し、キャッシュアクセスモード切替信号S10が「L」レベルの場合にはキャッシュメモリ50は2サイクルアクセスモードで動作する。
図5は、キャッシュアクセスモード切替装置109の具体的な構成を示すブロック図である。キャッシュアクセスモード切替装置109は、ラッチ回路910,911,920,921と、セレクタ930,931,94とを有している。
ラッチ回路910には、図4に示した比較器92aからTag hit Way0信号S20が入力される。ラッチ回路910は、入力されたTag hit Way0信号S20を、1/2サイクル期間遅延させて出力する。ラッチ回路910から出力されたTag hit Way0信号S20は、セレクタ930の第1の入力端子に入力される。
ラッチ回路911には、図4に示した比較器92bからTag hit Way1信号S21が入力される。ラッチ回路911は、入力されたTag hit Way1信号S21を、1/2サイクル期間遅延させて出力する。ラッチ回路911から出力されたTag hit Way1信号S21は、セレクタ931の第1の入力端子に入力される。
セレクタ930,931の各第2の入力端子には、「H」レベルを与える電源電位がそれぞれ入力されている。また、セレクタ930,931には、図1に示したキャッシュ制御部2からキャッシュアクセスモード切替信号S10が入力される。
キャッシュアクセスモード切替信号S10が「H」レベルの場合、セレクタ930は、Way0 enable信号S22として、「H」レベルの信号を出力する。従って、1サイクルアクセスモード時には、1サイクル期間を使ってキャッシュメモリ50からデータが出力される。
一方、キャッシュアクセスモード切替信号S10が「L」レベルの場合、セレクタ930は、Way0 enable信号S22として、ラッチ回路910から入力されたTag hit Way0信号S20を出力する。セレクタ930に入力されるTag hit Way0信号S20は、図4に示した比較器92aから出力されたTag hit Way0信号S20よりも、ラッチ回路910によって1/2サイクル期間遅延されている。従って、データWay0が動作するサイクル期間は、タグWay0が動作するサイクル期間よりも1サイクル期間後となる。従って、2サイクルアクセスモード時には、2サイクル期間を使ってキャッシュメモリ50からデータが出力される。
キャッシュアクセスモード切替信号S10が「H」レベルの場合、セレクタ931は、Way1 enable信号S23として、「H」レベルの信号を出力する。従って、1サイクルアクセスモード時には、1サイクル期間を使ってキャッシュメモリ50からデータが出力される。
一方、キャッシュアクセスモード切替信号S10が「L」レベルの場合、セレクタ931は、Way1 enable信号S23として、ラッチ回路911から入力されたTag hit Way1信号S21を出力する。セレクタ931に入力されるTag hit Way1信号S21は、図4に示した比較器92bから出力されたTag hit Way1信号S21よりも、ラッチ回路911によって1/2サイクル期間遅延されている。従って、データWay1が動作するサイクル期間は、タグWay1が動作するサイクル期間よりも1サイクル期間後となる。従って、2サイクルアクセスモード時には、2サイクル期間を使ってキャッシュメモリ50からデータが出力される。
ラッチ回路920は、図1に示したキャッシュ制御部2から入力されたキャッシュアクセスモード切替信号S10を、1/2サイクル期間遅延させて出力する。ラッチ回路920から出力されたキャッシュアクセスモード切替信号S10は、セレクタ94に入力される。
ラッチ回路921は、セレクタ931から入力されたWay1 enable信号S23を、1/2サイクル期間遅延させて出力する。ラッチ回路921から出力されたWay1 enable信号S23は、セレクタ94の第1の入力端子に入力される。セレクタ94の第2の入力端子には、図4に示した比較器92bから、Tag hit Way1信号S21が入力される。
ラッチ回路920から入力されたキャッシュアクセスモード切替信号S10が「L」レベルの場合には、セレクタ94は、ラッチ回路921から入力されたWay1 enable信号S23を、Way select信号S24として出力する。なぜなら、キャッシュアクセスモード切替信号S10が「L」レベルの場合にデータWay1が選択されるときには、Way1 enable信号S23は、タグメモリ101がアクセスされるサイクル期間の1/2サイクル期間後、つまり、データメモリ104がアクセスされるサイクル期間の1/2サイクル期間前に、「H」レベルとなるからである。
一方、ラッチ回路920から入力されたキャッシュアクセスモード切替信号S10が「H」レベルの場合には、セレクタ94は、Tag hit Way1信号S21を、Way select信号S24として出力する。なぜなら、キャッシュアクセスモード切替信号S10が「H」レベルの場合にデータWay1が選択されるときには、Tag hit Way1信号S21は、タグメモリ101がアクセスされるサイクル期間と同一であるデータメモリ104がアクセスされるサイクル期間に、「H」レベルとなるからである。
図4を参照して、Way select信号S24は、セレクタ105に入力される。Way select信号S24が「L」レベルの場合には、セレクタ105は、データWay0から入力されたデータを選択して、図1に示した出力データD2として出力する。一方、Way select信号S24が「H」レベルの場合には、セレクタ105は、データWay1から入力されたデータを選択して、図1に示した出力データD2として出力する。
図6は、2サイクルアクセスモードで動作している場合のキャッシュメモリ50の各部の波形を示したタイミングチャートである。以下、図4,6を参照して、2サイクルアクセスモード時におけるキャッシュメモリ50の動作について詳細に説明する。図6を参照して、2サイクルアクセスモードでは、タグアクセスサイクル及びデータアクセスサイクルの2サイクル期間を使って、キャッシュメモリ50からデータが出力される。
図4,6を参照して、まず、タグアクセスサイクルの前半で、タグメモリ101へのアクセスが実行され、タグWay0及びタグWay1からタグアドレスがそれぞれ出力される。
次に、比較器92aは、タグWay0から入力されたタグアドレスと、ラッチ回路106から入力されたタグアドレスA3aとを比較し、両者が一致している場合には「H」レベルのTag hit Way0信号S20を出力し、両者が一致していない場合には「L」レベルのTag hit Way0信号S20を出力する。比較器92bは、タグWay1から入力されたタグアドレスと、ラッチ回路106から入力されたタグアドレスA3aとを比較し、両者が一致している場合には「H」レベルのTag hit Way1信号S21を出力し、両者が一致していない場合には「L」レベルのTag hit Way1信号S21を出力する。従って、指定されたアドレスのデータがキャッシュメモリ50内に存在している場合には、Tag hit Way0信号S20及びTag hit Way1信号S21のいずれかが「H」レベルに設定され、一方、指定されたアドレスのデータがキャッシュメモリ50内に存在していない場合には、Tag hit Way0信号S20及びTag hit Way1信号S21の双方が「L」レベルに設定される。
次に、タグアクセスサイクルの後半で、Tag hit Way0信号S20が「H」レベルであればWay0 enable信号S22が「H」レベルに設定され、Tag hit Way1信号S21が「H」レベルであればWay1 enable信号S23が「H」レベルに設定される。
次に、データアクセスサイクルの前半で、Way0 enable信号S22が「H」レベルであればデータWay0へのアクセスが実行されてデータが出力され、Way1 enable信号S23が「H」レベルであればデータWay1へのアクセスが実行されてデータが出力される。
このように2サイクルアクセスモードでは、タグアクセスサイクルでタグメモリ101へのアクセスが行われ、続くデータアクセスサイクルでデータメモリ104へのアクセスが行われる。データアクセスサイクルにおいては、データWay0及びデータWay1のいずれか一方のみが動作し、他方は動作しないので、データWay0及びデータWay1の双方が動作する場合(1サイクルアクセスモード)と比較すると消費電力が小さい。
図7は、1サイクルアクセスモードで動作している場合のキャッシュメモリ50の各部の波形を示したタイミングチャートである。以下、図4,7を参照して、1サイクルアクセスモード時におけるキャッシュメモリ50の動作について詳細に説明する。図7を参照して、1サイクルアクセスモードでは、1サイクル期間であるタグ及びデータアクセスサイクルを使って、キャッシュメモリ50からデータが出力される。
図4,7を参照して、まず、タグ及びデータアクセスサイクルの前半で、タグメモリ101へのアクセスが実行され、タグWay0及びタグWay1からタグアドレスがそれぞれ出力される。
次に、比較器92aは、タグWay0から入力されたタグアドレスと、ラッチ回路106から入力されたタグアドレスA3aとを比較し、両者が一致している場合には「H」レベルのTag hit Way0信号S20を出力し、両者が一致していない場合には「L」レベルのTag hit Way0信号S20を出力する。比較器92bは、タグWay1から入力されたタグアドレスと、ラッチ回路106から入力されたタグアドレスA3aとを比較し、両者が一致している場合には「H」レベルのTag hit Way1信号S21を出力し、両者が一致していない場合には「L」レベルのTag hit Way1信号S21を出力する。従って、指定されたアドレスのデータがキャッシュメモリ50内に存在している場合には、Tag hit Way0信号S20及びTag hit Way1信号S21のいずれかが「H」レベルに設定され、一方、指定されたアドレスのデータがキャッシュメモリ50内に存在していない場合には、Tag hit Way0信号S20及びTag hit Way1信号S21の双方が「L」レベルに設定される。
比較器92a,92bによる上記の処理と並行して、同一のサイクル期間において、Way0 enable信号S22及びWay1 enable信号S23がいずれも「H」レベルに設定される。
次に、タグ及びデータアクセスサイクルの後半で、データWay0及びデータWay1への各アクセスが実行されて、データWay0及びデータWay1からデータがそれぞれ出力される。
そして、セレクタ105は、Way select信号S24に基づいて、データWay0及びデータWay1からそれぞれ出力されたデータの一方を選択して出力する。
このように1サイクルアクセスモードでは、1サイクル期間の間にタグメモリ101へのアクセスとデータメモリ104へのアクセスとが実行される。従って、タグメモリ101へのアクセスの後にデータメモリ104へのアクセスが行われる場合(2サイクルアクセスモード)と比較すると、キャッシュメモリ50から早期にデータを出力することができる。
このように本実施の形態1に係るキャッシュシステムによれば、キャッシュ制御部2は、スヌープ要求信号S1がアサートされている「H」期間では「H」レベルのキャッシュアクセスモード切替信号S10を出力することにより、1サイクルアクセスモードに設定する。2サイクルアクセスモードでCPU1がキャッシュメモリ50へアクセスしている状態で、CPU80からキャッシュメモリ50へのアクセス要求が発生した場合、CPU1からのアクセス要求の優先度が高いと、CPU1からのアクセス要求に基づく残りの処理が終了するまで、CPU80からのアクセス要求に基づく処理の開始は待たされることになる。しかしながら、本実施の形態1に係るキャッシュシステムによると、このような場合には、CPU1からキャッシュメモリ50へのアクセスが2サイクルアクセスモードから1サイクルアクセスモードに切り替えられるため、CPU1からのアクセス要求に基づく残りの処理を高速に実行することができる。従って、CPU80からのアクセス要求に基づく処理を早期に開始することができ、結果として、CPU80の性能が低下することを抑制することができる。特に、CPU80が高速動作を優先させている場合に有効となる。
なお、以上の説明では、CPU1のほかにキャッシュ部100にアクセス可能な素子として、スヌープ処理を実行するCPU80を挙げたが、CPU80以外のCPUであってもよい。また、CPU1のほかにキャッシュ部100にアクセス可能な素子は、CPU80又はCPU80以外のCPUに限らず、どのような機能ブロックであってもよい。後述する全ての実施の形態についても同様である。
実施の形態2.
図8は、本発明の実施の形態2に係るキャッシュシステムが搭載されている半導体装置の構成を示すブロック図である。図8に示した複数の構成要素のうち、上記実施の形態1と同一の構成要素については、図1と同一の参照符号を付している。以下、上記実施の形態1との相違点を中心に説明する。
図8に示すように、半導体装置は、CPU201と、CPU80と、キャッシュ部200と、バス調停回路60と、外部バス3と、外部メモリ70とを備えている。キャッシュ部200は、キャッシュ制御部202と、キャッシュメモリ50とを有している。キャッシュ制御部202は、キャッシュメモリ50の動作を制御する。CPU201は、キャッシュ制御部202を介してキャッシュメモリ50にアクセス可能である。キャッシュメモリ50には、CPU80からも、キャッシュ制御部202を介してアクセス可能である。
CPU201には、キャッシュアクセス受付信号S5及びキャッシュデータレディ信号S6が、キャッシュ制御部202から入力される。また、CPU201には、出力データD2が、キャッュメモリ50から入力される。CPU201は、キャッシュアクセス要求信号S4及びキャッシュアドレスA2を出力する。
キャッシュ制御部202には、キャッシュアクセス要求信号S4及びキャッシュアドレスA2が、CPU201から入力される。また、キャッシュ制御部202には、スヌープ要求信号S1及びスヌープアドレスA1が、CPU80から入力される。また、キャッシュ制御部202には、出力データD2及びMiss信号S11が、キャッシュメモリ50から入力される。また、キャッシュ制御部202には、バスアクセス受付信号S8が、バス調停回路60から入力される。キャッシュ制御部202は、キャッシュアクセス受付信号S5、キャッシュデータレディ信号S6、スヌープ要求受付信号S2、スヌープデータレディ信号S3、バスアクセス要求信号S7、ライトバックデータD1、タグイネーブル信号S9、アクセスアドレスA3、及び、キャッシュアクセスモード切替信号S10を出力する。
CPU80には、スヌープ要求受付信号S2及びスヌープデータレディ信号S3が、キャッシュ制御部202から入力される。また、CPU80には、出力データD2が、キャッシュメモリ50から入力される。CPU80は、スヌープ要求信号S1及びスヌープアドレスA1を出力する。
キャッシュメモリ50には、タグイネーブル信号S9、アクセスアドレスA3、及び、キャッシュアクセスモード切替信号S10が、キャッシュ制御部202から入力される。キャッシュメモリ50は、Miss信号S11及び出力データD2を出力する。
CPU201は、キャッシュメモリ50内に格納されているデータを読み出す場合、キャッシュアクセス要求信号S4及びキャッシュアドレスA2を出力する。キャッシュアクセス要求信号S4及びキャッシュアドレスA2は、キャッシュ制御部202に入力される。
キャッシュ制御部202は、キャッシュアクセス要求信号S4を受け付けると、キャッシュメモリ50がアクセス可能な状態であれば、キャッシュアクセス受付信号S5と、タグイネーブル信号S9と、キャッシュアドレスA2に基づきアクセスアドレスA3とを出力する。キャッシュアクセス受付信号S5は、CPU201に入力される。タグイネーブル信号S9及びアクセスアドレスA3は、キャッシュメモリ50に入力される。
CPU80は、キャッシュメモリ50内に格納されているデータを読み出す場合、スヌープ要求信号S1及びスヌープアドレスA1を出力する。スヌープ要求信号S1及びスヌープアドレスA1は、キャッシュ制御部202に入力される。
キャッシュ制御部202は、スヌープ要求信号S1を受け付けると、キャッシュメモリ50がアクセス可能な状態であれば、スヌープ要求受付信号S2と、タグイネーブル信号S9と、スヌープアドレスA1に基づきアクセスアドレスA3とを出力する。スヌープ要求受付信号S2は、CPU80に入力される。タグイネーブル信号S9及びアクセスアドレスA3は、キャッシュメモリ50に入力される。
CPU201及びCPU80からキャッシュメモリ50への各アクセスに関して、キャッシュ制御部202は、上記実施の形態1と同様の2サイクルアクセスモード及び1サイクルアクセスモードを有している。
キャッシュ制御部202は、CPU201からキャッシュメモリ50へのアクセス要求を受け付けることができるか否かに応じて、2サイクルアクセスモードと1サイクルアクセスモードとを切り替える。
具体的に、キャッシュ制御部202は、2サイクルアクセスモードでCPU201がキャッシュメモリ50へアクセスしている状態において、キャッシュミス又はライトバック処理中等の理由により、CPU201からキャッシュメモリ50への新たなアクセス要求を受け付けることができない場合、次回のアクセス又は次回以降のアクセスにおいて、「H」レベルのキャッシュアクセスモード切替信号S10を出力する。即ち、2サイクルアクセスモードを1サイクルアクセスモードに切り替える。
あるいは、キャッシュ制御部202は、2サイクルアクセスモードでCPU80がキャッシュメモリ50へアクセスしている状態において、スヌープ処理中等の理由により、CPU201からキャッシュメモリへのアクセス要求を受け付けることができない場合、次回のアクセス又は次回以降のアクセスにおいて、「H」レベルのキャッシュアクセスモード切替信号S10を出力する。即ち、2サイクルアクセスモードを1サイクルアクセスモードに切り替える。
図9は、キャッシュ制御部202の構成の一部を示すブロック図である。キャッシュ制御部202は、状態監視回路10及び切替信号生成回路11を有している。切替信号生成回路11はクリア回路12を有しており、クリア回路12は複数のカウンタ13を含んでいる。
状態監視回路10は、キャッシュメモリ50へのアクセス要求を検出すると、アクセス発生信号S30を出力する。また、状態監視回路10は、キャッシュメモリ50への新たなアクセス要求を受け付けることができない状態になると、キャッシュビジー信号S31を出力する。アクセス発生信号S30及びキャッシュビジー信号S31は、切替信号生成回路11に入力される。
切替信号生成回路11は、キャッシュビジー信号S31が入力されると、「H」レベルのキャッシュアクセスモード切替信号S10を出力する。これにより、キャッシュメモリ50の動作が1サイクルアクセスモードに設定される。
上記の通り、切替信号生成回路11はクリア回路12を有しており、クリア回路12は複数のカウンタ13を含んでいる。従って、切替信号生成回路11は、キャッシュアクセスモード切替信号S10が「H」レベルに設定されてからのサイクル期間及びアクセス回数を、アクセス発生信号S30及びキャッシュビジー信号S31に基づいて把握することができる。クリア回路12には、上記の次回のアクセスが完了したこと、キャッシュアクセスモード切替信号S10が「H」レベルに設定されてから所定数のサイクル期間が経過したこと、上記の次回以降のアクセスにおいてキャッシュメモリ50へのアクセスが途切れたこと等が、クリア条件として設定されている。クリア回路12は、クリア条件が満たされると、キャッシュアクセスモード切替信号S10を「L」レベルに切り替える。
このように本実施の形態2に係るキャッシュシステムによれば、キャッシュ制御部202は、キャッシュメモリ50への新たなアクセス要求を受け付けることができない場合、「H」レベルのキャッシュアクセスモード切替信号S10を出力することにより、1サイクルアクセスモードに設定する。例えば、2サイクルアクセスモードでCPU201がキャッシュメモリ50へアクセスしている状態で、CPU201からキャッシュメモリ50への新たなアクセス要求が発生し、キャッシュメモリ50がアクセス禁止の状態になった場合、パイプライン処理の後段の処理が詰まるために複数の命令間にレジスタ依存性が生じやすくなり、その結果、性能低下を引き起こす可能性が高くなる。しかしながら、本実施の形態2に係るキャッシュシステムによると、このような場合には、CPU201からキャッシュメモリ50へのアクセスが2サイクルアクセスモードから1サイクルアクセスモードに切り替えられるため、性能低下のペナルティを最小限に抑制することが可能となる。
実施の形態3.
図10は、本発明の実施の形態3に係るキャッシュシステムが搭載されている半導体装置の構成を示すブロック図である。図10に示した複数の構成要素のうち、上記実施の形態1と同一の構成要素については、図1と同一の参照符号を付している。以下、上記実施の形態1との相違点を中心に説明する。
図10に示すように、半導体装置は、CPU301と、CPU80と、キャッシュ部300と、バス調停回路60と、外部バス3と、外部メモリ70とを備えている。キャッシュ部300は、キャッシュ制御部302と、キャッシュメモリ50とを有している。キャッシュ制御部302は、キャッシュメモリ50の動作を制御する。CPU301は、キャッシュ制御部302を介してキャッシュメモリ50にアクセス可能である。キャッシュメモリ50には、CPU80からも、キャッシュ制御部302を介してアクセス可能である。
CPU301には、キャッシュアクセス受付信号S5及びキャッシュデータレディ信号S6が、キャッシュ制御部302から入力される。また、CPU301には、出力データD2が、キャッュメモリ50から入力される。CPU301は、キャッシュアクセス要求信号S4及びキャッシュアドレスA2を出力する。
キャッシュ制御部302には、キャッシュアクセス要求信号S4及びキャッシュアドレスA2が、CPU301から入力される。また、キャッシュ制御部302には、スヌープ要求信号S1及びスヌープアドレスA1が、CPU80から入力される。また、キャッシュ制御部302には、出力データD2及びMiss信号S11が、キャッシュメモリ50から入力される。また、キャッシュ制御部302には、バスアクセス受付信号S8が、バス調停回路60から入力される。キャッシュ制御部302は、キャッシュアクセス受付信号S5、キャッシュデータレディ信号S6、スヌープ要求受付信号S2、スヌープデータレディ信号S3、バスアクセス要求信号S7、ライトバックデータD1、タグイネーブル信号S9、アクセスアドレスA3、及び、キャッシュアクセスモード切替信号S10を出力する。
CPU80には、スヌープ要求受付信号S2及びスヌープデータレディ信号S3が、キャッシュ制御部302から入力される。また、CPU80には、出力データD2が、キャッシュメモリ50から入力される。CPU80は、スヌープ要求信号S1及びスヌープアドレスA1を出力する。
キャッシュメモリ50には、タグイネーブル信号S9、アクセスアドレスA3、及び、キャッシュアクセスモード切替信号S10が、キャッシュ制御部302から入力される。キャッシュメモリ50は、Miss信号S11及び出力データD2を出力する。
CPU301は、キャッシュメモリ50内に格納されているデータを読み出す場合、キャッシュアクセス要求信号S4及びキャッシュアドレスA2を出力する。キャッシュアクセス要求信号S4及びキャッシュアドレスA2は、キャッシュ制御部302に入力される。
キャッシュ制御部302は、キャッシュアクセス要求信号S4を受け付けると、キャッシュメモリ50がアクセス可能な状態であれば、キャッシュアクセス受付信号S5と、タグイネーブル信号S9と、キャッシュアドレスA2に基づきアクセスアドレスA3とを出力する。キャッシュアクセス受付信号S5は、CPU301に入力される。タグイネーブル信号S9及びアクセスアドレスA3は、キャッシュメモリ50に入力される。
CPU80は、キャッシュメモリ50内に格納されているデータを読み出す場合、スヌープ要求信号S1及びスヌープアドレスA1を出力する。スヌープ要求信号S1及びスヌープアドレスA1は、キャッシュ制御部302に入力される。
キャッシュ制御部302は、スヌープ要求信号S1を受け付けると、キャッシュメモリ50がアクセス可能な状態であれば、スヌープ要求受付信号S2と、タグイネーブル信号S9と、スヌープアドレスA1に基づきアクセスアドレスA3とを出力する。スヌープ要求受付信号S2は、CPU80に入力される。タグイネーブル信号S9及びアクセスアドレスA3は、キャッシュメモリ50に入力される。
CPU301及びCPU80からキャッシュメモリ50への各アクセスに関して、キャッシュ制御部302は、上記実施の形態1と同様の2サイクルアクセスモード及び1サイクルアクセスモードを有している。
キャッシュ制御部302は、CPU301からキャッシュメモリ50へのアクセス要求と、CPU80からキャッシュメモリ50へのアクセス要求とを重複して受けた場合、CPU301及びCPU80からキャッシュメモリ50への各アクセスに関して、いずれも「H」レベルのキャッシュアクセスモード切替信号S10を出力する。即ち、CPU301及びCPU80からキャッシュメモリ50への各アクセスを、いずれも1サイクルアクセスモードで実行する。
図11は、キャッシュ制御部302の構成の一部を示すブロック図である。キャッシュ制御部302は、調停回路15及び切替信号生成回路16を有している。
調停回路15は、CPU301からキャッシュメモリ50へのアクセス要求と、CPU80からキャッシュメモリ50へのアクセス要求とを同一のサイクル期間内に受けたことを検出すると、アクセス要求同時発生信号S40を出力する。アクセス要求同時発生信号S40は、切替信号生成回路16に入力される。
切替信号生成回路16は、アクセス要求同時発生信号S40が入力されると、アクセス要求同時発生信号S40が入力されたサイクル期間、及びそのサイクル期間に続く1サイクル期間において、「H」レベルのキャッシュアクセスモード切替信号S10を出力する。これにより、キャッシュアクセス要求信号S4に基づくアクセス期間、及びスヌープ要求信号S1に基づくアクセス期間の双方において、キャッシュメモリ50の動作が1サイクルアクセスモードに設定される。
このように本実施の形態3に係るキャッシュシステムによれば、キャッシュ制御部302は、CPU301からキャッシュメモリ50へのアクセス要求と、CPU80からキャッシュメモリ50へのアクセス要求とを重複して受けた場合、CPU301及びCPU80からキャッシュメモリ50への各アクセスをいずれも1サイクルアクセスモードで実行する。キャッシュシステムが複数のアクセス要求を同時に受けた場合、優先度の低いアクセス要求に対する処理の開始は、優先度の高いアクセス要求に対する処理が完了するのを待つこととなり、その結果、性能の低下を引き起こす。しかしながら、本実施の形態3に係るキャッシュシステムによると、このような場合には、CPU301及びCPU80からキャッシュメモリ50への各アクセスがいずれも1サイクルアクセスモードに切り替えられるため、性能低下のペナルティを最小限に抑制することが可能となる。
実施の形態4.
図12は、本発明の実施の形態4に係るキャッシュシステムが搭載されている半導体装置の構成を示すブロック図である。図12に示した複数の構成要素のうち、上記実施の形態1と同一の構成要素については、図1と同一の参照符号を付している。以下、上記実施の形態1との相違点を中心に説明する。
図12に示すように、半導体装置は、CPU401と、CPU80と、キャッシュ部400と、バス調停回路60と、外部バス3と、外部メモリ70とを備えている。キャッシュ部400は、キャッシュ制御部402と、キャッシュメモリ50とを有している。キャッシュ制御部402は、キャッシュメモリ50の動作を制御する。CPU401は、キャッシュ制御部402を介してキャッシュメモリ50にアクセス可能である。キャッシュメモリ50には、CPU80からも、キャッシュ制御部402を介してアクセス可能である。但し、本実施の形態4に関しては、必ずしもCPU80が設けられている必要はない。
CPU401には、キャッシュアクセス受付信号S5及びキャッシュデータレディ信号S6が、キャッシュ制御部402から入力される。また、CPU401には、出力データD2が、キャッュメモリ50から入力される。CPU401は、キャッシュアクセス要求信号S4、キャッシュアドレスA2、分岐要求信号S50、及び、例えば27ビットの分岐先アドレスA50を出力する。
キャッシュ制御部402には、キャッシュアクセス要求信号S4、キャッシュアドレスA2、分岐要求信号S50、及び、分岐先アドレスA50が、CPU401から入力される。また、キャッシュ制御部402には、スヌープ要求信号S1及びスヌープアドレスA1が、CPU80から入力される。また、キャッシュ制御部402には、出力データD2及びMiss信号S11が、キャッシュメモリ50から入力される。また、キャッシュ制御部402には、バスアクセス受付信号S8が、バス調停回路60から入力される。キャッシュ制御部402は、キャッシュアクセス受付信号S5、キャッシュデータレディ信号S6、スヌープ要求受付信号S2、スヌープデータレディ信号S3、バスアクセス要求信号S7、ライトバックデータD1、タグイネーブル信号S9、アクセスアドレスA3、及び、キャッシュアクセスモード切替信号S10を出力する。
CPU80には、スヌープ要求受付信号S2及びスヌープデータレディ信号S3が、キャッシュ制御部402から入力される。また、CPU80には、出力データD2が、キャッシュメモリ50から入力される。CPU80は、スヌープ要求信号S1及びスヌープアドレスA1を出力する。
キャッシュメモリ50には、タグイネーブル信号S9、アクセスアドレスA3、及び、キャッシュアクセスモード切替信号S10が、キャッシュ制御部402から入力される。キャッシュメモリ50は、Miss信号S11及び出力データD2を出力する。
CPU401は、キャッシュメモリ50内に格納されているデータを読み出す場合、キャッシュアクセス要求信号S4及びキャッシュアドレスA2を出力する。キャッシュアクセス要求信号S4及びキャッシュアドレスA2は、キャッシュ制御部402に入力される。
キャッシュ制御部402は、キャッシュアクセス要求信号S4を受け付けると、キャッシュメモリ50がアクセス可能な状態であれば、キャッシュアクセス受付信号S5と、タグイネーブル信号S9と、キャッシュアドレスA2に基づきアクセスアドレスA3とを出力する。キャッシュアクセス受付信号S5は、CPU401に入力される。タグイネーブル信号S9及びアクセスアドレスA3は、キャッシュメモリ50に入力される。
CPU80は、キャッシュメモリ50内に格納されているデータを読み出す場合、スヌープ要求信号S1及びスヌープアドレスA1を出力する。スヌープ要求信号S1及びスヌープアドレスA1は、キャッシュ制御部402に入力される。
キャッシュ制御部402は、スヌープ要求信号S1を受け付けると、キャッシュメモリ50がアクセス可能な状態であれば、スヌープ要求受付信号S2と、タグイネーブル信号S9と、スヌープアドレスA1に基づきアクセスアドレスA3とを出力する。スヌープ要求受付信号S2は、CPU80に入力される。タグイネーブル信号S9及びアクセスアドレスA3は、キャッシュメモリ50に入力される。
CPU401からキャッシュメモリ50へのアクセスに関して、キャッシュ制御部402は、上記実施の形態1と同様の2サイクルアクセスモード及び1サイクルアクセスモードを有している。
キャッシュ制御部402は、分岐命令の実行に基づくCPU401からキャッシュメモリ50へのアクセスが、キャッシュメモリ50からの特定の分岐先データの読み出しである場合、CPU401からキャッシュメモリ50へのアクセスに関して、「H」レベルのキャッシュアクセスモード切替信号S10を出力する。即ち、CPU401からキャッシュメモリ50へのアクセスを、1サイクルアクセスモードで実行する。
具体的に、CPU401は、分岐命令を実行する際、分岐要求信号S50及び分岐先アドレスA50を、キャッシュ制御部402に入力する。キャッシュ制御部402は、分岐要求信号S50及び分岐先アドレスA50が入力されると、分岐先アドレスA50が、予め設定されている特定のアドレス(複数)のいずれかに一致するか否かを判別する。そして、キャッシュ制御部402は、分岐先アドレスA50が上記特定のアドレスのいずれかに一致する場合は、「H」レベルのキャッシュアクセスモード切替信号S10を出力し、一方、分岐先アドレスA50が上記特定のアドレスのいずれにも一致しない場合は、「L」レベルのキャッシュアクセスモード切替信号S10を出力する。
なお、上記特定のアドレスは、システムの設計者によって、ハードウェア構成としてキャッシュ部400内に予め設定されている。あるいは、上記特定のアドレスは、システムのユーザが、キャッシュ部400内の図示しない記憶素子に、プログラムによって設定してもよい。また、上記特定のアドレスは、一つのみ設定されていてもよい。
図13は、キャッシュ制御部402の構成の一部を示すブロック図である。キャッシュ制御部402は、切替信号生成回路20を有している。切替信号生成回路20は、複数の比較器211〜21n(nは2以上の自然数)と、OR回路22と、セレクタ23と、ラッチ回路24,25とを有している。
比較器211〜21nの各第1の入力端子には、上記特定のアドレスが、設定値K1〜Knとしてそれぞれ入力されている。比較器211〜21nの各第2の入力端子には、分岐先アドレスA50がそれぞれ入力されている。比較器211〜21nの各出力端子は、OR回路22の複数の入力端子にそれぞれ接続されている。OR回路22の出力端子は、セレクタ23の第1の入力端子に接続されている。セレクタ23の出力端子はラッチ回路24の入力端子に接続されており、ラッチ回路24の出力端子はラッチ回路25の入力端子に接続されている。ラッチ回路24からは、キャッシュアクセスモード切替信号S10が出力されている。ラッチ回路25の出力端子は、セレクタ23の第2の入力端子に接続されている。セレクタ23には、分岐要求信号S50が入力されている。
セレクタ23は、分岐要求信号S50が入力されている期間は第1の入力端子を選択し、それ以外の期間は第2の入力端子を選択する。図12に示したCPU401からキャッシュ制御部402に分岐要求信号S50及び分岐先アドレスA50が入力された場合、分岐先アドレスA50が設定値K1〜Knのいずれかに一致すると、セレクタ23の第1の入力端子には「H」レベルの信号が入力される。この「H」レベルの信号は、セレクタ23から出力され、ラッチ回路24に入力される。従って、ラッチ回路24からは、「H」レベルのキャッシュアクセスモード切替信号S10が出力される。これにより、図12に示したキャッシュメモリ50の動作が、1サイクルアクセスモードに設定される。
このように本実施の形態4に係るキャッシュシステムによれば、キャッシュ制御部402は、分岐命令の実行に基づくCPU401からキャッシュメモリ50へのアクセスが、キャッシュメモリ50からの特定の分岐先データの読み出しである場合、CPU401からキャッシュメモリ50へのアクセスを1サイクルアクセスモードで実行する。従って、例えば分岐先アドレスに割り込みルーチンが指定されている場合に、1サイクルアクセスモードでキャッシュメモリ50を動作させることができる。組み込み用途における割り込み処理は、実時間内で応答が求められることが多い。本実施の形態4に係るキャッシュシステムによれば、キャッシュメモリ50の動作を1サイクルアクセスモードに切り替えることによって、実時間内で割り込み処理が完了する可能性を高くすることが可能となる。
なお、実行される分岐命令は、分岐条件が確定してから実行される分岐命令のみならず、分岐が発生することを見越して(分岐予測)、予め実行が開始されるような分岐命令を含む。
実施の形態5.
図14は、本発明の実施の形態5に係るキャッシュシステムが搭載されている半導体装置の構成を示すブロック図である。図15に示した複数の構成要素のうち、上記実施の形態1と同一の構成要素については、図1と同一の参照符号を付している。以下、上記実施の形態1との相違点を中心に説明する。
図14に示すように、半導体装置は、CPU501と、CPU80と、キャッシュ部500と、バス調停回路60と、外部バス3と、外部メモリ70とを備えている。キャッシュ部500は、キャッシュ制御部502と、キャッシュメモリ50とを有している。キャッシュ制御部502は、キャッシュメモリ50の動作を制御する。CPU501は、キャッシュ制御部502を介してキャッシュメモリ50にアクセス可能である。キャッシュメモリ50には、CPU80からも、キャッシュ制御部502を介してアクセス可能である。但し、本実施の形態5に関しては、必ずしもCPU80が設けられている必要はない。
CPU501には、キャッシュアクセス受付信号S5及びキャッシュデータレディ信号S6が、キャッシュ制御部502から入力される。また、CPU501には、出力データD2が、キャッュメモリ50から入力される。CPU501は、キャッシュアクセス要求信号S4、キャッシュアドレスA2、及び、例えば32ビットの命令コードC1を出力する。
キャッシュ制御部502には、キャッシュアクセス要求信号S4、キャッシュアドレスA2、及び、命令コードC1が、CPU501から入力される。また、キャッシュ制御部502には、スヌープ要求信号S1及びスヌープアドレスA1が、CPU80から入力される。また、キャッシュ制御部502には、出力データD2及びMiss信号S11が、キャッシュメモリ50から入力される。また、キャッシュ制御部502には、バスアクセス受付信号S8が、バス調停回路60から入力される。キャッシュ制御部502は、キャッシュアクセス受付信号S5、キャッシュデータレディ信号S6、スヌープ要求受付信号S2、スヌープデータレディ信号S3、バスアクセス要求信号S7、ライトバックデータD1、タグイネーブル信号S9、アクセスアドレスA3、及び、キャッシュアクセスモード切替信号S10を出力する。
CPU80には、スヌープ要求受付信号S2及びスヌープデータレディ信号S3が、キャッシュ制御部502から入力される。また、CPU80には、出力データD2が、キャッシュメモリ50から入力される。CPU80は、スヌープ要求信号S1及びスヌープアドレスA1を出力する。
キャッシュメモリ50には、タグイネーブル信号S9、アクセスアドレスA3、及び、キャッシュアクセスモード切替信号S10が、キャッシュ制御部502から入力される。キャッシュメモリ50は、Miss信号S11及び出力データD2を出力する。
CPU501は、キャッシュメモリ50内に格納されているデータを読み出す場合、キャッシュアクセス要求信号S4及びキャッシュアドレスA2を出力する。キャッシュアクセス要求信号S4及びキャッシュアドレスA2は、キャッシュ制御部502に入力される。
キャッシュ制御部502は、キャッシュアクセス要求信号S4を受け付けると、キャッシュメモリ50がアクセス可能な状態であれば、キャッシュアクセス受付信号S5と、タグイネーブル信号S9と、キャッシュアドレスA2に基づきアクセスアドレスA3とを出力する。キャッシュアクセス受付信号S5は、CPU501に入力される。タグイネーブル信号S9及びアクセスアドレスA3は、キャッシュメモリ50に入力される。
CPU80は、キャッシュメモリ50内に格納されているデータを読み出す場合、スヌープ要求信号S1及びスヌープアドレスA1を出力する。スヌープ要求信号S1及びスヌープアドレスA1は、キャッシュ制御部502に入力される。
キャッシュ制御部502は、スヌープ要求信号S1を受け付けると、キャッシュメモリ50がアクセス可能な状態であれば、スヌープ要求受付信号S2と、タグイネーブル信号S9と、スヌープアドレスA1に基づきアクセスアドレスA3とを出力する。スヌープ要求受付信号S2は、CPU80に入力される。タグイネーブル信号S9及びアクセスアドレスA3は、キャッシュメモリ50に入力される。
CPU501からキャッシュメモリ50へのアクセスに関して、キャッシュ制御部502は、上記実施の形態1と同様の2サイクルアクセスモード及び1サイクルアクセスモードを有している。
キャッシュ制御部502は、CPU501によってフェッチされた命令コードC1又は該命令コードC1のデコード結果を判定することにより、CPU501からキャッシュメモリ50へのアクセスに関して、「H」レベル又は「L」レベルのキャッシュアクセスモード切替信号S10を出力する。即ち、CPU501からキャッシュメモリ50へのアクセスを、キャッシュアクセスモード切替信号S10が「H」レベルの場合は1サイクルアクセスモードで実行し、キャッシュアクセスモード切替信号S10が「L」レベルの場合は2サイクルアクセスモードで実行する。
具体的に、CPU501は、フェッチした命令コードC1を、キャッシュ制御部502に入力する。キャッシュ制御部502は、入力された命令コードC1が、命令コードの種類に応じて予め設定されている特定の値(複数)のいずれに一致するか、又はいずれにも一致しないかを判定する。そして、キャッシュ制御部502は、その判定の結果に応じて、1サイクルアクセスモードに設定するか、2サイクルアクセスモードに設定するか、前状態のアクセスモードを保持するかを決定し、対応するキャッシュアクセスモード切替信号S10を出力する。
なお、上記特定の値は、システムの設計者によって、ハードウェア構成としてキャッシュ部500内に予め設定されている。あるいは、上記特定の値は、システムのユーザが、キャッシュ部500内の図示しないレジスタに、プログラムによって設定してもよい。
図15〜17は、本実施の形態5に係るキャッシュシステムの構成の一部をそれぞれ示すブロック図である。図14に示したキャッシュ部500は、図15〜17に示した判定装置31,33及びデコード回路30,32,34をそれぞれ有している。
図15を参照して、図14に示したCPU501によってフェッチされた命令コードC1は、デコード回路30に入力される。デコード回路30は、命令コードC1をデコードし、デコード結果D10を出力する。判定装置31には、命令コードC1(又はその一部)が入力される。判定装置31は、入力された命令コードC1が、上記特定の値のいずれに一致するか、又はいずれにも一致しないかを判定する。そして、その判定の結果に応じて、対応するキャッシュアクセスモード切替信号S10を出力する。
図16を参照して、図14に示したCPU501によってフェッチされた命令コードC1は、デコード回路32に入力される。デコード回路32は、命令コードC1をデコードし、デコード結果D10を出力する。判定装置33には、デコード結果D10の一部が入力される。判定装置33は、入力されたデコード結果D10に基づいて、命令コードC1が、上記特定の値のいずれに一致するか、又はいずれにも一致しないかを判定する。そして、その判定の結果に応じて、対応するキャッシュアクセスモード切替信号S10を出力する。
図17を参照して、図14に示したCPU501によってフェッチされた命令コードC1は、デコード回路34に入力される。デコード回路34は、命令コードC1をデコードし、デコード結果D10を出力する。また、デコード回路34は、図15,16にそれぞれ示した判定装置31,33と同様の判定機能を有しており、入力された命令コードC1が、上記特定の値のいずれに一致するか、又はいずれにも一致しないかを判定する。そして、その判定の結果に応じて、デコード結果D10の一部として、対応するキャッシュアクセスモード切替信号S10を出力する。
図18は、図14に示したキャッシュ制御部502の構成の一部を示すブロック図である。図18に示した例では、キャッシュ制御部502は、図15に示した判定装置31を有している。判定装置31は、複数の比較器351〜354と、OR回路36〜38と、セレクタ39と、ラッチ回路40,41とを有している。
比較器351〜354の各第1の入力端子には、上記特定の値が、設定値L1〜L4としてそれぞれ入力されている。比較器351〜354の各第2の入力端子には、命令コードC1(又はその一部)がそれぞれ入力されている。比較器351,352の各出力端子はOR回路36の2つの入力端子にそれぞれ接続されており、比較器353,354の各出力端子はOR回路37の2つの入力端子にそれぞれ接続されている。OR回路36,37の各出力端子は、OR回路38の2つの入力端子にそれぞれ接続されている。OR回路37の出力端子は、セレクタ39の第1の入力端子にも接続されている。セレクタ39には、OR回路38から出力された信号が入力されている。
セレクタ39の出力端子はラッチ回路40の入力端子に接続されており、ラッチ回路40の出力端子はラッチ回路41の入力端子に接続されている。ラッチ回路40からは、キャッシュアクセスモード切替信号S10が出力されている。ラッチ回路41の出力端子は、セレクタ39の第2の入力端子に接続されている。
セレクタ39は、OR回路38から「H」レベルの信号が入力されている場合は第1の入力端子を、「L」レベルの信号が入力されている場合は第2の入力端子を、それぞれ選択する。
図14に示したCPU501からキャッシュ制御部502に入力された命令コードC1が、設定値L3,L4のいずれかに一致した場合は、セレクタ39の第1の入力端子には「H」レベルの信号が入力される。この「H」レベルの信号は、セレクタ39から出力され、ラッチ回路40に入力される。従って、ラッチ回路40からは、「H」レベルのキャッシュアクセスモード切替信号S10が出力される。これにより、図14に示したキャッシュメモリ50の動作が、1サイクルアクセスモードに設定される。
図14に示したCPU501からキャッシュ制御部502に入力された命令コードC1が、設定値L1,L2のいずれかに一致した場合は、セレクタ39の第1の入力端子には「L」レベルの信号が入力される。この「L」レベルの信号は、セレクタ39から出力され、ラッチ回路40に入力される。従って、ラッチ回路40からは、「L」レベルのキャッシュアクセスモード切替信号S10が出力される。これにより、図14に示したキャッシュメモリ50の動作が、2サイクルアクセスモードに設定される。
図14に示したCPU501からキャッシュ制御部502に入力された命令コードC1が、設定値L1〜L4のいずれにも一致しない場合は、OR回路38からは「L」レベルの信号が出力されるため、セレクタ39の第2の入力端子が選択される。セレクタ39の第2の入力端子には、前状態のアクセスモードを決定するキャッシュアクセスモード切替信号S10が、ラッチ回路41から入力されている。このキャッシュアクセスモード切替信号S10が、セレクタ39を介してラッチ回路40から出力される。これにより、図14に示したキャッシュメモリ50の動作は、前状態のアクセスモードと同一に設定される。
なお、図16に示した判定装置33は、比較器351〜354の各第2の入力端子へ入力される信号が、命令コードC1ではなくデコード結果D10の一部となるだけで、その他の回路構成は、図18に示した判定装置31の構成と同様である。
このように本実施の形態5に係るキャッシュシステムによれば、キャッシュ制御部502は、CPU501によって実行される命令の種類に応じて、1サイクルアクセスモードと2サイクルアクセスモードとを切り替える。従って、ソフトウェアのコンパイルオプションを切り替えることによってアクセスモードを選択するといった使い方ができるようになる。また、1サイクルアクセスモード主体の高速道作用の命令セットと、2サイクルアクセスモード主体の低消費電力用の命令セットとを用意し、使用する命令セットに応じてアクセスモードを選択するといった使い方ができるようにもなる。
しかも、キャッシュ制御部502は、CPU501によってフェッチされた命令コードC1又は該命令コードC1のデコード結果D10を判定することによって、アクセスモードを選択する。従って、上記特許文献2に開示されたキャッシュシステムとは異なり、本実施の形態5に係るキャッシュシステムは、プリフェッチ装置を有しない装置にも対応でき、また、分岐命令予測器が不要であるために回路規模が増大することもない。
さらに、図16,17に示した例では、デコード回路の全部又は一部がアクセスモードの判定装置としても使用されているため、図15に示した例と比較すると、回路規模の増大を抑制することができる。
実施の形態6.
図19は、本発明の実施の形態6に係るキャッシュシステムが搭載されている半導体装置の構成を示すブロック図である。図19に示した複数の構成要素のうち、上記実施の形態1と同一の構成要素については、図1と同一の参照符号を付している。以下、上記実施の形態1との相違点を中心に説明する。
図19に示すように、半導体装置は、CPU601と、CPU80と、キャッシュ部600と、バス調停回路60と、外部バス3と、外部メモリ70とを備えている。キャッシュ部600は、キャッシュ制御部602と、キャッシュメモリ50とを有している。キャッシュ制御部602は、キャッシュメモリ50の動作を制御する。CPU601は、キャッシュ制御部602を介してキャッシュメモリ50にアクセス可能である。キャッシュメモリ50には、CPU80からも、キャッシュ制御部602を介してアクセス可能である。但し、本実施の形態6に関しては、必ずしもCPU80が設けられている必要はない。
CPU601には、キャッシュアクセス受付信号S5及びキャッシュデータレディ信号S6が、キャッシュ制御部602から入力される。また、CPU601には、出力データD2が、キャッュメモリ50から入力される。CPU601は、キャッシュアクセス要求信号S4及びキャッシュアドレスA2を出力する。
キャッシュ制御部602には、キャッシュアクセス要求信号S4及びキャッシュアドレスA2が、CPU601から入力される。また、キャッシュ制御部602には、スヌープ要求信号S1及びスヌープアドレスA1が、CPU80から入力される。また、キャッシュ制御部602には、出力データD2及びMiss信号S11が、キャッシュメモリ50から入力される。また、キャッシュ制御部602には、バスアクセス受付信号S8が、バス調停回路60から入力される。キャッシュ制御部602は、キャッシュアクセス受付信号S5、キャッシュデータレディ信号S6、スヌープ要求受付信号S2、スヌープデータレディ信号S3、バスアクセス要求信号S7、ライトバックデータD1、タグイネーブル信号S9、アクセスアドレスA3、及び、キャッシュアクセスモード切替信号S10を出力する。
CPU80には、スヌープ要求受付信号S2及びスヌープデータレディ信号S3が、キャッシュ制御部602から入力される。また、CPU80には、出力データD2が、キャッシュメモリ50から入力される。CPU80は、スヌープ要求信号S1及びスヌープアドレスA1を出力する。
キャッシュメモリ50には、タグイネーブル信号S9、アクセスアドレスA3、及び、キャッシュアクセスモード切替信号S10が、キャッシュ制御部602から入力される。キャッシュメモリ50は、Miss信号S11及び出力データD2を出力する。
CPU201は、キャッシュメモリ50内に格納されているデータを読み出す場合、キャッシュアクセス要求信号S4及びキャッシュアドレスA2を出力する。キャッシュアクセス要求信号S4及びキャッシュアドレスA2は、キャッシュ制御部602に入力される。
キャッシュ制御部602は、キャッシュアクセス要求信号S4を受け付けると、キャッシュメモリ50がアクセス可能な状態であれば、キャッシュアクセス受付信号S5と、タグイネーブル信号S9と、キャッシュアドレスA2に基づきアクセスアドレスA3とを出力する。キャッシュアクセス受付信号S5は、CPU601に入力される。タグイネーブル信号S9及びアクセスアドレスA3は、キャッシュメモリ50に入力される。
CPU80は、キャッシュメモリ50内に格納されているデータを読み出す場合、スヌープ要求信号S1及びスヌープアドレスA1を出力する。スヌープ要求信号S1及びスヌープアドレスA1は、キャッシュ制御部602に入力される。
キャッシュ制御部602は、スヌープ要求信号S1を受け付けると、キャッシュメモリ50がアクセス可能な状態であれば、スヌープ要求受付信号S2と、タグイネーブル信号S9と、スヌープアドレスA1に基づきアクセスアドレスA3とを出力する。スヌープ要求受付信号S2は、CPU80に入力される。タグイネーブル信号S9及びアクセスアドレスA3は、キャッシュメモリ50に入力される。
CPU601からキャッシュメモリ50へのアクセスに関して、キャッシュ制御部602は、上記実施の形態1と同様の2サイクルアクセスモード及び1サイクルアクセスモードを有している。
キャッシュ制御部602は、CPU601からキャッシュメモリ50へアクセスされたが、CPU601が必要とするデータがキャッシュメモリ50内に格納されていない場合に、CPU601からキャッシュメモリ50への次回のアクセス又は次回以降のアクセスにおいて、「H」レベルのキャッシュアクセスモード切替信号S10を出力する。即ち、キャッシュメモリ50の動作を1サイクルアクセスモードに設定する。
図20は、キャッシュ制御部602の構成の一部を示すブロック図である。キャッシュ制御部602は、状態監視回路51及び切替信号生成回路52を有している。切替信号生成回路52はクリア回路53を有しており、クリア回路53は複数のカウンタ54を含んでいる。
状態監視回路51は、キャッシュメモリ50へのアクセス要求を検出すると、アクセス発生信号S51を出力する。アクセス発生信号S51は、切替信号生成回路52に入力される。また、Miss信号S11が、図19に示したキャッシュメモリ50から切替信号生成回路52に入力される。
切替信号生成回路11は、指定されたデータがキャッシュメモリ50内に格納されていないことを示す内容のMiss信号S11が入力されると、「H」レベルのキャッシュアクセスモード切替信号S10を出力する。これにより、キャッシュメモリ50の動作が1サイクルアクセスモードに設定される。
上記の通り、切替信号生成回路52はクリア回路53を有しており、クリア回路53は複数のカウンタ54を含んでいる。従って、切替信号生成回路52は、キャッシュアクセスモード切替信号S10が「H」レベルに設定されてからのサイクル期間及びアクセス回数を、アクセス発生信号S51及びMiss信号S11に基づいて把握することができる。クリア回路53には、上記の次回のアクセスが完了したこと、キャッシュアクセスモード切替信号S10が「H」レベルに設定されてから所定数のサイクル期間が経過したこと、上記の次回以降のアクセスにおいてキャッシュメモリ50へのアクセスが途切れたこと等が、クリア条件として設定されている。クリア回路53は、クリア条件が満たされると、キャッシュアクセスモード切替信号S10を「L」レベルに切り替える。
このように本実施の形態6に係るキャッシュシステムによれば、キャッシュ制御部602は、キャッシュメモリ50が2サイクルアクセスモードで動作している場合であっても、CPU601が必要とするデータがキャッシュメモリ50内に格納されていない場合には、「H」レベルのキャッシュアクセスモード切替信号S10を出力することにより、1サイクルアクセスモードに設定する。必要とするデータがキャッシュメモリ50内に格納されていない場合は、外部メモリ70からデータを読み出す必要があるため、性能の低下を引き起こす可能性がある。しかも、パイプライン処理の後段の処理が詰まるために複数の命令間にレジスタ依存性が生じやすくなり、その結果、性能低下を引き起こす可能性がさらに高くなる。しかしながら、本実施の形態6に係るキャッシュシステムによると、このような場合には、CPU601からキャッシュメモリ50へのアクセスが1サイクルアクセスモードに設定されるため、性能低下のペナルティを最小限に抑制することが可能となる。
実施の形態7.
図21,22は、上記実施の形態1〜6に係るキャッシュシステムに関して、アクセスモードが切り替わる状況をそれぞれ示すタイミングチャートである。図21に示した例では、サイクル期間P1において2サイクルアクセスモードによるアクセス要求(アクセスAC1)が発生し、サイクル期間P2においてはアクセス要求が発生せず、サイクル期間P3において1サイクルアクセスモードによるアクセス要求(アクセスAC3)が発生している。アクセスAC1のデータメモリアクセスは、サイクル期間P3の前半で完了している。従って、アクセスAC3のタグ及びデータメモリアクセスはサイクル期間P3の後半から開始され、アクセスAC3に関して高速動作が実現されている。
図22に示した例では、サイクル期間P1において2サイクルアクセスモードによるアクセス要求(アクセスAC1)が発生し、サイクル期間P2においても2サイクルアクセスモードによるアクセス要求(アクセスAC2)が発生し、サイクル期間P3において1サイクルアクセスモードによるアクセス要求(アクセスAC3)が発生している。この場合、サイクル期間P3の後半からアクセスAC3のタグ及びデータメモリアクセスを開始しようとしても、その時点では、アクセスAC2のデータメモリアクセスがまだ完了していない。そのため、アクセスAC3のタグ及びデータメモリアクセスの開始は、サイクル期間P4の後半まで待たなければならない。その結果、アクセスAC3に関しては、アクセスAC1,AC2と比較して消費電力が高いうえに、高速動作も実現されていない。かかる状況は、上記実施の形態1〜6に係るキャッシュシステムに限らず、低速及び高速の二つのアクセスモードを有する任意のキャッシュシステム(上記特許文献1,2に開示されたキャッシュシステムを含む)において発生する。
本実施の形態7では、かかる状況が発生することを回避し得るキャッシュシステムについて説明する。
図23は、本発明の実施の形態7に係るキャッシュシステムが搭載されている半導体装置の構成を示すブロック図である。図23に示した複数の構成要素のうち、上記実施の形態1と同一の構成要素については、図1と同一の参照符号を付している。以下、上記実施の形態1との相違点を中心に説明する。
図23に示すように、半導体装置は、CPU701と、CPU80と、キャッシュ部700と、バス調停回路60と、外部バス3と、外部メモリ70とを備えている。キャッシュ部700は、キャッシュ制御部702と、キャッシュメモリ50とを有している。キャッシュ制御部702は、キャッシュメモリ50の動作を制御する。CPU701は、キャッシュ制御部702を介してキャッシュメモリ50にアクセス可能である。キャッシュメモリ50には、CPU80からも、キャッシュ制御部702を介してアクセス可能である。
CPU701には、キャッシュアクセス受付信号S5及びキャッシュデータレディ信号S6が、キャッシュ制御部702から入力される。また、CPU701には、出力データD2が、キャッュメモリ50から入力される。CPU701は、キャッシュアクセス要求信号S4及びキャッシュアドレスA2を出力する。
キャッシュ制御部702には、キャッシュアクセス要求信号S4及びキャッシュアドレスA2が、CPU701から入力される。また、キャッシュ制御部702には、スヌープ要求信号S1及びスヌープアドレスA1が、CPU80から入力される。また、キャッシュ制御部702には、出力データD2及びMiss信号S11が、キャッシュメモリ50から入力される。また、キャッシュ制御部702には、バスアクセス受付信号S8が、バス調停回路60から入力される。キャッシュ制御部702は、キャッシュアクセス受付信号S5、キャッシュデータレディ信号S6、スヌープ要求受付信号S2、スヌープデータレディ信号S3、バスアクセス要求信号S7、ライトバックデータD1、タグイネーブル信号S9、アクセスアドレスA3、及び、キャッシュアクセスモード切替信号S10を出力する。
CPU80には、スヌープ要求受付信号S2及びスヌープデータレディ信号S3が、キャッシュ制御部702から入力される。また、CPU80には、出力データD2が、キャッシュメモリ50から入力される。CPU80は、スヌープ要求信号S1及びスヌープアドレスA1を出力する。
キャッシュメモリ50には、タグイネーブル信号S9、アクセスアドレスA3、及び、キャッシュアクセスモード切替信号S10が、キャッシュ制御部702から入力される。キャッシュメモリ50は、Miss信号S11及び出力データD2を出力する。
CPU701は、キャッシュメモリ50内に格納されているデータを読み出す場合、キャッシュアクセス要求信号S4及びキャッシュアドレスA2を出力する。キャッシュアクセス要求信号S4及びキャッシュアドレスA2は、キャッシュ制御部702に入力される。
キャッシュ制御部702は、キャッシュアクセス要求信号S4を受け付けると、キャッシュメモリ50がアクセス可能な状態であれば、キャッシュアクセス受付信号S5と、タグイネーブル信号S9と、キャッシュアドレスA2に基づきアクセスアドレスA3とを出力する。キャッシュアクセス受付信号S5は、CPU701に入力される。タグイネーブル信号S9及びアクセスアドレスA3は、キャッシュメモリ50に入力される。
CPU80は、キャッシュメモリ50内に格納されているデータを読み出す場合、スヌープ要求信号S1及びスヌープアドレスA1を出力する。スヌープ要求信号S1及びスヌープアドレスA1は、キャッシュ制御部702に入力される。
キャッシュ制御部702は、スヌープ要求信号S1を受け付けると、キャッシュメモリ50がアクセス可能な状態であれば、スヌープ要求受付信号S2と、タグイネーブル信号S9と、スヌープアドレスA1に基づきアクセスアドレスA3とを出力する。スヌープ要求受付信号S2は、CPU80に入力される。タグイネーブル信号S9及びアクセスアドレスA3は、キャッシュメモリ50に入力される。
CPU701及びCPU80からキャッシュメモリ50への各アクセスに関して、キャッシュ制御部702は、上記実施の形態1と同様の2サイクルアクセスモード及び1サイクルアクセスモードを有している。
キャッシュ制御部702は、2サイクルアクセスモードでのアクセス要求に連続して1サイクルアクセスモードでのアクセス要求が発生したことに起因して、2サイクルアクセスモードでアクセスする期間(第1のアクセス期間)の一部に1サイクルアクセスモードでアクセスする期間(第2のアクセス期間)が重複することとなる場合、上記第2のアクセス期間におけるアクセスを2サイクルアクセスモードに変更する。例えば図22に示した例を参照すると、2サイクルアクセスモードでアクセスする第1のアクセス期間(サイクル期間P2の後半からサイクル期間P4の前半)の後半部分に、1サイクルアクセスモードでアクセスする第2のアクセス期間(サイクル期間P3の後半からサイクル期間P4の前半)が重複している。従って、キャッシュ制御部702は、上記第2のアクセス期間におけるアクセスAC3を、1サイクルアクセスモードから2サイクルアクセスモードに変更する。
図24は、本実施の形態7に係るキャッシュシステムに関して、アクセスモードが切り替わる状況を示すタイミングチャートである。図22に示した例と同様に、サイクル期間P1においては、2サイクルアクセスモードの判定条件を満たしたことにより、2サイクルアクセスモードによるアクセス要求(アクセスAC1)が発生している。また、サイクル期間P1に連続するサイクル期間P2においても、2サイクルアクセスモードの判定条件を満たしたことにより、2サイクルアクセスモードによるアクセス要求(アクセスAC2)が発生している。また、サイクル期間P2に連続するサイクル期間P3においては、1サイクルアクセスモードの判定条件を満たしたことにより、1サイクルアクセスモードによるアクセス要求(アクセスAC3)が発生している。
キャッシュ制御部702は、1サイクルアクセスモードでのアクセスAC3が2サイクルアクセスモードでのアクセスAC2に連続していることを判別すると、アクセスAC3に対応するキャッシュアクセスモード切替信号S10を、「H」レベルから「L」レベルに変更する。これにより、アクセスAC3のアクセスモードが、1サイクルアクセスモードから2サイクルアクセスモードに変更される。
なお、2サイクルアクセスモードでのアクセスの後に1サイクルアクセスモードでのアクセスが実行される場合であっても、1サイクルアクセスモードでのアクセスが2サイクルアクセスモードでのアクセスに連続していない場合には、図21と同様の動作が行われる。
図25は、キャッシュ制御部702の構成の一部を示すブロック図である。キャッシュ制御部702は、切替信号生成回路60を有している。切替信号生成回路60は、アクセスサイクル判定回路61、AND回路62,63,65、及び、フリップフロップ64を有している。アクセスサイクル判定回路61の出力端子は、AND回路63,65の各第1の入力端子に接続されている。AND回路63の出力端子は、フリップフロップ64の入力端子に接続されている。フリップフロップ64の出力端子は、AND回路62の第1の入力端子と、AND回路65の第2の入力端子とに接続されている。AND回路65からは、キャッシュアクセスモード切替信号S10が出力される。AND回路62の第2の入力端子には、タグイネーブル信号S9が入力される。AND回路62の出力端子は、AND回路63の第2の入力端子に接続されている。
アクセスサイクル判定回路61は、通常は「H」レベルの信号を出力し、2サイクルアクセスモードでキャッシュメモリ50へのアクセスを行う場合には、1サイクル期間だけ「L」レベルの信号を出力する。
アクセスサイクル判定回路61が1サイクル期間だけ「L」レベルの信号を出力すると、この1サイクル期間と、この1サイクル期間に続く次の1サイクル期間とにおいて、「L」レベルのキャッシュアクセスモード切替信号S10が出力される。
一方、アクセスサイクル判定回路61が「H」レベルの信号を出力すると、同一のサイクル期間内にタグメモリへのアクセスがあり、かつ、2サイクルアクセスモードでのデータメモリへのアクセスがある場合には、「L」レベルの信号がフリップフロップ64へ入力される。また、それ以外の場合には、「H」レベルの信号がフリップフロップ64へ入力される。AND回路65は、フリップフロップ64から入力される信号と、アクセスサイクル判定回路61から入力される信号との論理積をとり、キャッシュアクセスモード切替信号S10として出力する。
なお、本実施の形態7に係るキャッシュシステムにおいて、1サイクルアクセスモード及び2サイクルアクセスモードの各判定条件は、上記実施の形態1〜6で説明した判定条件に限定されるものではなく、どのようなものであってもよい。
このように本実施の形態7に係るキャッシュシステムによれば、キャッシュ制御部702は、1サイクルアクセスモードでのアクセスAC3が2サイクルアクセスモードでのアクセスAC2に連続していることを判別すると、アクセスAC3のアクセスモードを、1サイクルアクセスモードから2サイクルアクセスモードに変更する。従って、1サイクルアクセスモードに切り替えても高速動作が実現できない場合に2サイクルアクセスモードが維持されることによって、消費電力を抑制することが可能となる。
1,80,201,301,401,501,601,701 CPU、2,202,302,402,502,602,702 キャッシュ制御部、50 キャッシュメモリ。