(57)【特許請求の範囲】
【請求項１】
連続したアクセスアドレスを有する複数のワードを格納するためのキャッシュラインを、複数備えて構成され、プロセッサより入力された前記アクセスアドレスに応じて読み出しデータを出力する、データＲＡＭと、
前記データＲＡＭの前記キャッシュライン毎に、前記各キャッシュラインが格納しているワードを特定するのに必要なデータを格納し、前記プロセッサから入力された前記アクセスアドレスに応じてこのデータをタグ信号として出力する、タグＲＡＭと、
前記タグＲＡＭから出力された前記タグ信号と、前記プロセッサからの前記アクセスアドレスとを、比較して、前記アクセスアドレスを有するワードが前記データＲＡＭ内に格納されているか否かを判別し、この判別結果をヒット／ミス判別信号として出力する、ヒット／ミス判別回路と、
読み出そうとするワードが格納されるべき前記キャッシュラインが変わった場合、又は、前記プロセッサにおいて分岐命令が検出された場合にのみ、前記タグＲＡＭへクロック信号を供給し、これ以外の場合には前記タグＲＡＭへのクロック信号の供給を停止する、クロックゲート回路と、
を備えたことを特徴とする命令キャッシュメモリ。
【請求項２】
読み出そうとするワードが格納されるべき前記キャッシュラインが変わったかどうかは、前記キャッシュラインから順番にワードを読み出す場合に、１のキャッシュラインの最後のアクセスアドレスから次のキャッシュラインの先頭のアクセスアドレスに移る場合にのみ変化するアクセスアドレスのビットである移行ビットを監視することにより、検知することを特徴とする請求項１に記載の命令キャッシュメモリ。
【請求項３】
プロセッサにおいて分岐命令が検出されたかどうかは、プロセッサが出力する分岐命令検出信号に基づいて判断する、ことを特徴とする請求項２に記載の命令キャッシュメモリ。
【請求項４】
前記ヒット／ミス判別回路は、前記タグＲＡＭへのクロック信号の供給を停止している間は、キャッシュヒットである旨のヒット／ミス判別信号を出力する、ことを特徴とする請求項１乃至請求項３のいずれかに記載の命令キャッシュメモリ。
【請求項５】
前記クロックゲート回路は、
前記移行ビットが入力されるフリップフロップ回路と、
前記フリップフロップの出力信号と前記移行ビットとが入力されるＥＸＯＲ回路と、
前記ＥＸＯＲ回路の出力信号と前記分岐命令検出信号とが入力されるＯＲ回路と、
前記ＯＲ回路の出力信号と、１クロックサイクルでハイとロウに切り替わりこれを各クロックサイクル毎に繰り返す基本クロック信号とが入力される、ＡＮＤ回路であって、出力信号を前記クロック信号として前記タグＲＡＭへ出力する、ＡＮＤ回路と、
を備えることを特徴とする請求項３に記載の命令キャッシュメモリ。
【請求項６】
ｎビットのアクセスアドレスと、クロック信号とが、入力され、１ビットのヒット／ミス判別信号と、ｍビットの読み出しデータとが、出力される、命令キャッシュメモリであって、
ｐビットであらわせる個数の連続したアクセスアドレスを有するワードを格納するためのキャッシュラインを、複数備えて構成された、ｑビットであらわせるメモリサイズを有する、データＲＡＭであって、ｎビットのアクセスアドレスのうち下位のビットｑ−１からビット０が入力され、ｍビットの読み出しデータが出力される、データＲＡＭと、
前記各キャッシュラインが格納する複数のワードのｎビットのアクセスアドレスのうち、上位のビットｎ−１からビットｑを格納した、タグＲＡＭであって、ｎビットのアクセスアドレスのうちのビットｑ−１からビットｐが入力され、該当するキャッシュラインに対応して格納されたビットｎ−１からビットｑのアクセスアドレスをタグ信号として出力する、タグＲＡＭと、
前記タグＲＡＭから出力されたタグ信号と、ｎビットのアクセスアドレスのうちの上位のビットｎ−１からビットｑとが入力され、これらタグ信号とビットｎ−１からビットｑとを比較して、前記アクセスアドレスを有するワードが前記データＲＡＭ内に格納されているか否かを判別した１ビットのヒット／ミス判別信号を出力する、ヒット／ミス判別回路と、
読み出そうとするワードが格納されるべき前記キャッシュラインが変わった場合、又は、プロセッサにおいて分岐命令が検出された場合にのみ、前記タグＲＡＭへクロック信号を供給し、これ以外の場合には前記タグＲＡＭへのクロック信号の供給を停止する、クロックゲート回路と、
を備えたことを特徴とする命令キャッシュメモリ。
【請求項７】
ビットｎ−１からビット０のｎビットを有するアクセスアドレスと、１クロックサイクルでハイとロウに切り替わりこれを各クロックサイクル毎に繰り返す基本クロック信号とが、入力され、１ビットのヒット／ミス判別信号が２のｘ乗個出力され、ｍビットのユニット読み出しデータが１個出力される、セットアソシアティブマッピング方式の命令キャッシュメモリであって、
当該命令キャッシュメモリは、１個の１ビットのヒット／ミス判別信号と１個のｍビットのユニット読み出しデータを出力する基本ユニットを２のｘ乗個備えており、
前記基本ユニットのそれぞれは、
ｐビットであらわせる個数の連続したメモリアドレスを有するワードを格納するためのキャッシュラインを、複数備えて構成された、ｑ−ｘビットであらわせるメモリサイズを有する、データＲＡＭであって、ｎビットの前記アクセスアドレスのうち下位のビットｑ−ｘ−１からビット０が入力され、ｍビットの前記ユニット読み出しデータが出力される、データＲＡＭと、
前記各キャッシュラインが格納する複数のワードのｎビットの前記メモリアドレスのうち、上位のビットｎ−１からビットｑ−ｘをタグアドレスとして前記各キャッシュライン毎に格納する、タグＲＡＭであって、ｎビットの前記アクセスアドレスのうちのビットｑ−ｘ−１からビットｐが入力され、ビットｑ−ｘ−１からビットｐで特定されるキャッシュラインに対応して格納されている前記タグアドレスをタグ信号として出力する、タグＲＡＭと、
前記タグＲＡＭから出力された前記タグ信号と、ｎビットの前記アクセスアドレスのうちの上位のビットｎ−１からビットｑ−ｘとが入力され、これらタグ信号とビットｎ−１からビットｑ−ｘとを比較して、前記アクセスアドレスに該当する前記メモリアドレスを有するワードが前記データＲＡＭ内に格納されているか否かを判別した１ビットのヒット／ミス判別信号を出力する、ヒット／ミス判別回路と、
読み出そうとするワードが格納されるべき前記キャッシュラインが変わった場合、又は、プロセッサにおいて分岐命令が検出された場合にのみ、前記タグＲＡＭへ前記基本クロック信号をクロック信号として供給し、これ以外の場合には前記タグＲＡＭへの前記クロック信号の供給を停止する、クロックゲート回路と、
を備えるとともに、
当該命令キャッシュメモリは、前記各基本ユニットが出力する前記各ユニット読み出しデータと前記各ヒット／ミス判別信号とが入力されるマルチプレクサであって、前記各ヒット／ミス判別信号のうち前記アクセスアドレスに該当するメモリアドレスを有するワードが前記データＲＡＭ内に格納されていることを示す前記ヒット／ミス判別信号を出力した基本ユニットが、出力した前記ユニット読み出しデータを、前記プロセッサへ出力する、マルチプレクサを備える、
ことを特徴とする命令キャッシュメモリ。
【請求項８】
読み出すワードが格納されるべき前記キャッシュラインが変わったかどうかは、ｎビットのアクセスアドレスのうちのビットｐが変化したか否かにより、検知することを特徴とする請求項６に記載の命令キャッシュメモリ。
【請求項９】
プロセッサにおいて分岐命令が検出されたかどうかは、プロセッサが出力する１ビットの分岐命令検出信号に基づいて判断する、ことを特徴とする請求項８に記載の命令キャッシュメモリ。
【請求項１０】
前記ヒット／ミス判別回路は、前記タグＲＡＭへのクロック信号の供給を停止している間は、キャッシュヒットである旨のヒット／ミス判別信号を出力する、ことを特徴とする請求項６に記載の命令キャッシュメモリ。
【請求項１１】
前記クロックゲート回路は、
ｎビットの前記アクセスアドレスのうちのビットｐが入力されるフリップフロップ回路と、
前記フリップフロップの出力信号とｎビットの前記アクセスアドレスのうちのビットｐとが入力されるＥＸＯＲ回路と、
前記ＥＸＯＲ回路の出力信号と前記分岐命令検出信号とが入力されるＯＲ回路と、
前記ＯＲ回路の出力信号と、１クロックサイクルでハイとロウに切り替わりこれを各クロックサイクル毎に繰り返す基本クロック信号とが入力される、ＡＮＤ回路であって、出力信号を前記クロック信号として前記タグＲＡＭへ出力する、ＡＮＤ回路と、
を備えることを特徴とする請求項９に記載の命令キャッシュメモリ。
【請求項１２】
前記ヒット／ミス判別回路は、
前記タグＲＡＭからの前記タグ信号と、ｎビットの前記アクセスアドレスのうちの上位のビットｎ−１からビットｑとが入力され、前記タグ信号とｎビットの前記アクセスアドレスのうちの上位のビットｎ−１からビットｑとを比較して、比較結果信号を出力する、比較器と、
前記比較器からの前記比較結果信号と、前記クロックゲート回路の前記ＯＲ回路からの出力信号とが入力され、前記ＯＲ回路からの出力信号がハイになったときの前記比較結果信号の状態を保持して、前記ヒット／ミス判別信号として出力する、ラッチ回路と、
を備えることを特徴とする請求項１１に記載の命令キャッシュメモリ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は命令キャッシュメモリに関するものであり、特に低消費電力化を図った命令キャッシュメモリに関する。
【０００２】
【従来の技術】
近年、一般的なプロセッサでは、メモリ・アクセス・レーテンシを低減するために命令キャッシュメモリが搭載されている。図７は従来におけるダイレクトマッピング方式の命令キャッシュメモリの構成を示す図である。
【０００３】
この図７からわかるように、命令キャッシュメモリ１００は、データＲＡＭ１０２とタグＲＡＭ１０４と比較器１０６とを備えて構成されている。命令キャッシュメモリ１００には、プロセッサ内に設けられたフェッチカウンタからアクセスアドレスが入力される。このアクセスアドレスのうち、命令キャッシュメモリ１００のサイズ、構成に応じて、一部がデータＲＡＭ１０２へ入力され、一部がタグＲＡＭ１０４へ入力される。この従来技術においては、データＲＡＭ容量１ｋワード、１キャッシュラインサイズ８ワード、総キャッシュライン数１２８の命令キャッシュメモリ１００を想定している。ここで、１ワードとは、１つの命令の単位を示しており、本従来技術においては、３２ビットと仮定している。
【０００４】
この場合、フェッチカウンタからのアクセスアドレス１６ビットは、下位ビットであるｂｉｔ９〜ｂｉｔ０の合計１０ビットがデータＲＡＭへ入力され、ｂｉｔ９〜ｂｉｔ３の合計７ビットがタグＲＡＭ１０４へ入力され、上位ビットであるｂｉｔ１５〜ｂｉｔ１０の合計６ビットが比較器１０６へ入力される。これらのビットを一般式であらわすと、データＲＡＭ１０２に入力されるのがｂｉｔ  ｑ−１〜ｂｉｔ  ０であらわされ、タグＲＡＭ１０４に入力されるのがｂｉｔ  ｑ−１〜ｂｉｔ  ｐであらわされ、比較器１０６に入力されるのがｂｉｔ  ｎ−１〜ｂｉｔ  ｑであらわされる。ここで、この図７では、ｎ（アクセスアドレスのビット数）＝１６、ｐ（１キャッシュライン内のアドレスを特定するのに必要なビット数）＝３、ｑ（データＲＡＭ１０２内のアドレスを特定するのに必要なビット数）＝１０である。また、データＲＡＭ１０２とタグＲＡＭ１０４とには、クロック信号ＣＬＫも入力されている。
【０００５】
タグＲＡＭ１０４からは、ｂｉｔ９〜ｂｉｔ３であらわされたアドレスに割り当てられたキャッシュラインが保持するアクセスアドレスを、合計６ビットのタグ信号として出力される。また、この該当するキャッシュラインが少なくとも１度はメインメモリからデータを取り込んだか否かをあらわすステイタスビットが出力される。これらタグ信号とステイタスビットとは、比較器１０６へ入力される。比較器１０６では、この入力された６ビットのタグ信号と、アクセスアドレスのｂｉｔ１５〜ｂｉｔ１０の合計６ビットとを、比較する。両者が一致していればヒットであり、両者が一致していなければミスである。この比較結果に基づいて、比較器１０６はヒット／ミス判別信号をプロセッサへ出力する。
【０００６】
この比較器１０６の動作と平行して、データＲＡＭ１０２からはデータが読み出され、プロセッサへ命令として供給される。このデータＲＡＭ１０２から供給された命令をプロセッサが取り込むかどうかは、比較器１０６のヒット／ミス判別信号がヒットかミスかで決定される。すなわち、ヒットしていればプロセッサはこのデータを命令として取り込み、ミスしていればプロセッサはこのデータは取り込まない。
【０００７】
【発明が解決しようとする課題】
ところで、図７に示すようなキャッシュメモリ１００では、アクセスのたびにデータＲＡＭ１０２とタグＲＡＭ１０４の２つのメモリが稼働する。このため、キャッシュメモリ１００はプロセッサと比べて、多くのハードウェア量を占有し、消費電力も大きいという問題があった。
【０００８】
そこで、本発明は上記課題に鑑みてなされたものであり、命令キャッシュメモリの消費電力の抑制を図ることを目的とする。具体的には、命令キャッシュメモリのタグＲＡＭの稼働を減少させ、このタグＲＡＭでの消費電力の低減を図ることを目的とする。
【０００９】
【課題を解決するための手段】
上記課題を解決するため、本発明に係る命令キャッシュメモリは、連続したアクセスアドレスを有する複数のワードを格納するためのキャッシュラインを、複数備えて構成され、プロセッサより入力された前記アクセスアドレスに応じて読み出しデータを出力する、データＲＡＭと、前記データＲＡＭの前記キャッシュライン毎に、前記各キャッシュラインが格納しているワードを特定するのに必要なデータを格納し、前記プロセッサから入力された前記アクセスアドレスに応じてこのデータをタグ信号として出力する、タグＲＡＭと、前記タグＲＡＭから出力された前記タグ信号と、前記プロセッサからの前記アクセスアドレスとを、比較して、前記アクセスアドレスを有するワードが前記データＲＡＭ内に格納されているか否かを判別し、この判別結果をヒット／ミス判別信号として出力する、ヒット／ミス判別回路と、読み出そうとするワードが格納されるべき前記キャッシュラインが変わった場合、又は、前記プロセッサにおいて分岐命令が検出された場合にのみ、前記タグＲＡＭへクロック信号を供給し、これ以外の場合には前記タグＲＡＭへのクロック信号の供給を停止する、クロックゲート回路と、を備えたことを特徴とする。
【００１０】
また、本発明に係る命令キャッシュメモリは、ｎビットのアクセスアドレスと、クロック信号とが、入力され、１ビットのヒット／ミス判別信号と、ｍビットの読み出しデータとが、出力される、命令キャッシュメモリであって、
ｐビットであらわせる個数の連続したアクセスアドレスを有するワードを格納するためのキャッシュラインを、複数備えて構成された、ｑビットであらわせるメモリサイズを有する、データＲＡＭであって、ｎビットのアクセスアドレスのうち下位のビットｑ−１からビット０が入力され、ｍビットの読み出しデータが出力される、データＲＡＭと、
前記各キャッシュラインが格納する複数のワードのｎビットのアクセスアドレスのうち、上位のビットｎ−１からビットｑを格納した、タグＲＡＭであって、ｎビットのアクセスアドレスのうちのビットｑ−１からビットｐが入力され、該当するキャッシュラインに対応して格納されたビットｎ−１からビットｑのアクセスアドレスをタグ信号として出力する、タグＲＡＭと、
前記タグＲＡＭから出力されたタグ信号と、ｎビットのアクセスアドレスのうちの上位のビットｎ−１からビットｑとが入力され、これらタグ信号とビットｎ−１からビットｑとを比較して、前記アクセスアドレスを有するワードが前記データＲＡＭ内に格納されているか否かを判別した１ビットのヒット／ミス判別信号を出力する、ヒット／ミス判別回路と、
読み出そうとするワードが格納されるべき前記キャッシュラインが変わった場合、又は、プロセッサにおいて分岐命令が検出された場合にのみ、前記タグＲＡＭへクロック信号を供給し、これ以外の場合には前記タグＲＡＭへのクロック信号の供給を停止する、クロックゲート回路と、
を備えたことを特徴とする。
また、本発明に係る命令キャッシュメモリは、ビットｎ−１からビット０のｎビットを有するアクセスアドレスと、１クロックサイクルでハイとロウに切り替わりこれを各クロックサイクル毎に繰り返す基本クロック信号とが、入力され、１ビットのヒット／ミス判別信号が２のｘ乗個出力され、ｍビットのユニット読み出しデータが１個出力される、セットアソシアティブマッピング方式の命令キャッシュメモリであって、
当該命令キャッシュメモリは、１個の１ビットのヒット／ミス判別信号と１個のｍビットのユニット読み出しデータを出力する基本ユニットを２のｘ乗個備えており、
前記基本ユニットのそれぞれは、
ｐビットであらわせる個数の連続したメモリアドレスを有するワードを格納するためのキャッシュラインを、複数備えて構成された、ｑ−ｘビットであらわせるメモリサイズを有する、データＲＡＭであって、ｎビットの前記アクセスアドレスのうち下位のビットｑ−ｘ−１からビット０が入力され、ｍビットの前記ユニット読み出しデータが出力される、データＲＡＭと、
前記各キャッシュラインが格納する複数のワードのｎビットの前記メモリアドレスのうち、上位のビットｎ−１からビットｑ−ｘをタグアドレスとして前記各キャッシュライン毎に格納する、タグＲＡＭであって、ｎビットの前記アクセスアドレスのうちのビットｑ−ｘ−１からビットｐが入力され、ビットｑ−ｘ−１からビットｐで特定されるキャッシュラインに対応して格納されている前記タグアドレスをタグ信号として出力する、タグＲＡＭと、
前記タグＲＡＭから出力された前記タグ信号と、ｎビットの前記アクセスアドレスのうちの上位のビットｎ−１からビットｑ−ｘとが入力され、これらタグ信号とビットｎ−１からビットｑ−ｘとを比較して、前記アクセスアドレスに該当する前記メモリアドレスを有するワードが前記データＲＡＭ内に格納されているか否かを判別した１ビットのヒット／ミス判別信号を出力する、ヒット／ミス判別回路と、
読み出そうとするワードが格納されるべき前記キャッシュラインが変わった場合、又は、プロセッサにおいて分岐命令が検出された場合にのみ、前記タグＲＡＭへ前記基本クロック信号をクロック信号として供給し、これ以外の場合には前記タグＲＡＭへの前記クロック信号の供給を停止する、クロックゲート回路と、
を備えるとともに、
当該命令キャッシュメモリは、前記各基本ユニットが出力する前記各ユニット読み出しデータと前記各ヒット／ミス判別信号とが入力されるマルチプレクサであって、前記各ヒット／ミス判別信号のうち前記アクセスアドレスに該当するメモリアドレスを有するワードが前記データＲＡＭ内に格納されていることを示す前記ヒット／ミス判別信号を出力した基本ユニットが、出力した前記ユニット読み出しデータを、前記プロセッサへ出力する、マルチプレクサを備える、
ことを特徴とする。
【００１１】
【発明の実施の形態】
本実施形態に係る命令キャッシュメモリは、分岐命令の発生の有無をあらわす１ビットと、アクセスされるキャッシュラインの変更の有無をあらわす１ビットとの、計２ビットの信号を用いて、キャッシュラインが変更されていないことを認識することにより、この命令キャッシュメモリがヒットすると判断して、タグＲＡＭへのアクセスと比較器の動作を停止させることにより、命令キャッシュメモリの低消費電力化を図ったものである。より詳しくを以下に説明する。
【００１２】
図１は本実施形態に係る命令キャッシュメモリの構成を示す図であり、図２はダイレクトマッピング方式におけるタグＲＡＭとデータＲＡＭの論理構成を示す図であり、図３は本実施形態に係る命令キャッシュメモリを有するプロセッシングユニットの構成を示す図である。
【００１３】
図３からわかるように、本実施形態に係るプロセッシングユニットは、メインメモリ１０と命令キャッシュメモリ１２とプロセッサ１４とを備えて構成されている。
【００１４】
プロセッサ１４からは命令キャッシュメモリ１２へ、１６ビットのアクセスアドレスと、分岐命令を処理したか否かをあらわす１ビットの分岐命令検出信号とが、出力される。ここで分岐命令とは、ジャンプ命令や、サブルーチンを呼び出す命令や、割り込み命令などのプロセッサ１４内のフェッチカウンタが飛ぶような命令の総称である。命令キャッシュメモリ１２からはプロセッサ１４へ、命令としての３２ビットの読み出しデータと、命令キャッシュメモリ１２がヒットしたか否かをあらわす１ビットのヒット／ミス判別信号とが、出力される。
【００１５】
命令キャッシュメモリ１２からはメインメモリ１０へ、１６ビットのアクセスアドレスが出力される。メインメモリ１０からは命令キャッシュメモリ１２へ、命令としての３２ビットのデータが出力される。これにより、命令キャッシュメモリ１２がキャッシュミスした場合に、外部のメインメモリ１０から必要なデータを取り込むことができるようになっている。この取り込み動作に必要なコントローラも命令キャッシュメモリ１２は備えている。
【００１６】
図１は、このような命令キャッシュメモリ１２でダイレクトマッピング方式を採用した場合の内部構成を示す図である。
【００１７】
この図１からわかるように、命令キャッシュメモリ１２は、データＲＡＭ２０とタグＲＡＭ２２とヒット／ミス判別回路２４とクロックゲート回路２６とラッチ回路２８とを備えて構成されている。命令キャッシュメモリ１２には、プロセッサ１４内に設けられたフェッチカウンタからアクセスアドレスが入力される。本実施形態においては、この命令キャッシュメモリ１２は、データＲＡＭ容量１ｋワード、１キャッシュラインサイズ８ワード、総キャッシュライン数１２８で構成されている。ここで、１ワードとは、１つの命令の単位を示しており、本実施形態においては、３２ビットと仮定している。
【００１８】
この場合、フェッチカウンタからのアクセスアドレス１６ビットは、下位ビットであるｂｉｔ９〜ｂｉｔ０の合計１０ビットがデータＲＡＭ２０へ入力され、ｂｉｔ９〜ｂｉｔ３の合計７ビットがタグＲＡＭ２２へ入力され、上位ビットであるｂｉｔ１５〜ｂｉｔ１０の合計６ビットが比較器２４へ入力され、ｂｉｔ３の１ビットがクロックゲート回路２６へ入力される。これらのビットを一般式であらわすと、データＲＡＭ２０に入力されるのがｂｉｔ  ｑ−１〜ｂｉｔ  ０であらわされ、タグＲＡＭ２２に入力されるのがｂｉｔ  ｑ−１〜ｂｉｔ  ｐであらわされ、比較器２４に入力されるのがｂｉｔ  ｎ−１〜ｂｉｔ  ｑであらわされ、クロックゲート回路２６に入力されるのがｂｉｔ  ｐであらわされる。ここで、本実施形態においては、ｎ（アクセスアドレスのビット数）＝１６、ｐ（１キャッシュライン内のアドレスを特定するのに必要なビット数）＝３、ｑ（データＲＡＭ１０２内のアドレスを特定するのに必要なビット数）＝１０である。
【００１９】
図２からわかるように、データＲＡＭ２０内においては、ｂｉｔ９〜ｂｉｔ３の合計７ビットで、アクセスアドレスで指定されたワードの格納されるべきキャッシュラインが、どのキャッシュラインであるかが一意に決定される。さらにｂｉｔ２〜ｂｉｔ０の合計３ビットで、キャッシュライン内アドレスが決定され、アクセスアドレスで指定されたワードの格納されるべき位置が特定される。このように特定された位置にある１ワード分のデータが、データＲＡＭ２０から３２ビットの読み出しデータとして出力される。
【００２０】
タグＲＡＭ２２内には、各キャッシュライン毎に、そのキャッシュラインが格納しているワードのアドレスを特定するのに必要な６ビットのデータを持っている。この６ビットのデータは、アクセスアドレスの上位ビットであるｂｉｔ１５〜ｂｉｔ１０に相当している。このタグＲＡＭ２２には、アクセスアドレスのうちのｂｉｔ９〜ｂｉｔ３の合計７ビットが入力され、そのアクセスアドレスで指定されたワードの格納されるべきキャッシュラインが、一意に決定される。そして、タグＲＡＭ２２はその一意に決定されたキャッシュラインに格納されている６ビットのデータをタグ信号として出力する。このタグ信号は、上述のように、アクセスアドレスの上位ビットであるｂｉｔ１５〜ｂｉｔ１０に相当する。
【００２１】
タグＲＡＭ２２内には、各キャッシュライン毎に、そのキャッシュラインが少なくとも一度はメインメモリ１０からデータを取り込んだかどうかを示すステイタスビットが１ビット備えられている。本実施形態におては、例えば、電源投入直後のように、まだ、キャッシュラインにメインメモリ１０からデータが取り込まれていない場合は、このステイタスビットはすべて０になっている。そして、そのキャッシュラインがプロセッサ１４により特定されてメインメモリ１０からデータを取り込んだ時点で、そのキャッシュラインに対応するステイタスを１にセットする。タグＲＡＭ２２がタグ信号を出力する際には、このステイタスビットのうち該当するキャッシュラインのステイタスビットも、プロセッサ１４へ出力する。
【００２２】
図１からわかるように、データＲＡＭ２０には、クロック信号ＣＬＫが直接的に入力されている。タグＲＡＭ２２には、クロックゲート回路２６を介して、クロック信号ＣＬＫが入力されている。このクロックゲート回路２６は、後述する特定のタイミングでのみ、クロック信号ＣＬＫをタグＲＡＭ２２に供給する回路である。
【００２３】
クロックゲート回路２６に入力されたｂｉｔ３は、フリップフロップ回路３０とＥＸＯＲ回路３２とに入力される。このＥＸＯＲ回路３２には、フリップフロップ回路３０の出力信号ＳＧ１も入力される。フリップフロップ回路３０は、前回のｂｉｔ３の値を保持するための回路である。ＥＸＯＲ回路３２からの出力信号ＳＧ２は、ＯＲ回路３４に入力される。このＯＲ回路３４には、分岐命令検出信号も入力されている。ＯＲ回路３４の出力信号ＳＧ３は、ＡＮＤ回路３６とヒット／ミス判別回路２４とに入力される。ＡＮＤ回路３６には、クロック信号ＣＬＫも入力されている。このＡＮＤ回路３６の出力信号ＳＧ４は、タグＲＡＭ２２に入力されている。これらのことからわかるように、クロックゲート回路２６は、フリップフロップ回路３０とＥＸＯＲ回路３２とＯＲ回路３４とＡＮＤ回路３６とを、備えて構成されている。すなわち、このクロックゲート回路２６は、プロセッサ１４で分岐命令が検出され分岐命令検出信号がハイとなった場合、又は、アクセスアドレスのｂｉｔ３が変化してデータＲＡＭ２０内のキャッシュラインが変わった場合にのみ、クロック信号ＣＬＫをタグＲＡＭ２２へ供給する回路である。
【００２４】
上述したように、タグＲＡＭ２２からは、ダイレクトマッピングにおいて該当するキャッシュラインが保持するアドレスについて、合計６ビットのタグ信号が出力される。また、この該当するキャッシュラインが少なくとも１度はメインメモリ１０からデータを取り込んだか否かをあらわすステイタスビットが出力される。これらタグ信号とステイタスビットとは、ヒット／ミス判別回路２４へ入力される。
【００２５】
ヒット／ミス判別回路は、比較器４０とラッチ回路４２とを備えて構成されている。比較器４０には、６ビットのタグ信号と、１ビットのステイタスビットと、アクセスアドレスのｂｉｔ１５〜ｂｉｔ１０の６ビットとが、入力される。この比較器４０では、この入力された６ビットのタグ信号と、アクセスアドレスのｂｉｔ１５〜ｂｉｔ１０の合計６ビットとを、比較する。この比較の結果、両者が一致していればキャッシュヒットであり、両者が一致していなければキャッシュミスである。本実施形態におけるこの比較器４０は、ヒットした場合はロウの出力信号ＳＧ５を出力し、ミスした場合はハイの出力信号ＳＧ５を出力する。
【００２６】
この比較器４０からの出力信号ＳＧ５と、ＯＲ回路２４からの出力信号ＳＧ３とは、ラッチ回路４２に入力される。このラッチ回路４２は、出力信号ＳＧ３がハイになったときの出力信号ＳＧ５の状態を、次に出力信号ＳＧ３がハイになるまで保持して、ヒット／ミス判別信号として出力する回路である。また、出力信号ＳＧ３がハイになっている間は、そのとき入力されている出力信号ＳＧ５の値をそのままヒット／ミス判別信号として出力する回路である。このヒット／ミス判別信号はプロセッサ１４へ入力される。本実施形態においては、ヒットした場合はこのヒット／ミス判別信号はロウとなり、ミスした場合はこのヒット／ミス判別信号はハイとなる。
【００２７】
これらの動作と平行して、データＲＡＭ２０からはデータが読み出され、プロセッサ１４へ命令として供給される。このデータＲＡＭ２０から供給された命令をプロセッサ１４が取り込むかどうかは、ヒット／ミス判別信号に基づいて決定される。すなわち、このヒット／ミス判別信号がキャッシュヒットをあらわしていればプロセッサ１４はこのデータを命令として取り込み、ヒット／ミス判別信号がキャッシュミスをあらわしていればプロセッサ１４はこのデータは取り込まない。
【００２８】
次に、図４及び図５に示すタイミングチャートに基づいて、このキャッシュメモリの動作を説明する。図４は、アクセスアドレスのｂｉｔ３が変化し、キャッシュラインが変わる場合のタイミングチャートを示す図であり、図５は、分岐命令が検出されて、キャッシュラインが変わる場合のタイミングチャートを示す図である。
【００２９】
まず、図４に基づいて、アクセスアドレスのｂｉｔ３が変化して、キャッシュラインが変わる場合を説明する。この図４からわかるように、時刻ｔ１でｂｉｔ３がロウからハイへ切り替わったとする。すなわち、アクセスアドレスのｂｉｔ３が０から１に変化したとする。このことは、図２からわかるように、読み出すべきワードが格納されているデータＲＡＭ２０内のキャッシュラインが次のキャッシュラインに移ったことを意味している。なぜなら、本実施形態においては１つのキャッシュラインは８ワードで構成されており、命令が順番に読み込まれて、ｂｉｔ２〜ｂｉｔ０が変化している範囲では同一のキャッシュラインに読み出すべきワードが格納されていると判断できるからである。このように順番に命令が読み込まれている状態で、ｂｉｔ３が変化するということは、１つのキャッシュラインに格納されているワードの読み出しが終了して、次のキャッシュラインに格納されるべきワードの読み出しが開始されたことを意味する。したがって、読み出そうとするワードの格納されるべきキャッシュラインが、次のキャッシュラインに移ったか否かは、ｂｉｔ３のみを監視していればわかるのである。
【００３０】
図４からわかるように、フリップフロップ回路３０の出力信号ＳＧ１は、ｂｉｔ３がハイに切り替わった時刻ｔ１よりも、１クロックサイクルだけおくれた時刻ｔ２でハイに切り替わる。したがって、この時刻ｔ１と時刻ｔ２の間におけるＥＸＯＲ回路３２の出力信号ＳＧ２はハイになる。この図４においては、分岐命令は検出されない場合を想定しているので、分岐命令検出信号はロウのままである。
【００３１】
時刻ｔ１から時刻ｔ２の間、ハイの出力信号ＳＧ２が入力されたＯＲ回路３４は、ハイの出力信号ＳＧ３を出力する。したがって、ＡＮＤ回路３６からは、出力信号ＳＧ４が１クロックサイクルだけ出力される。この１クロックサイクルの出力信号ＳＧ４に基づいて、タグＲＡＭ２２は動作をして、６ビットのタグ信号をヒット／ミス検出回路２４へ出力する。つまり、この時刻ｔ１から時刻ｔ２以外の時間ではタグＲＡＭ２２へのクロック供給は停止していることになる。したがって、タグ信号については、時刻ｔ１から時刻ｔ２における後半の半クロックサイクルの間だけ有効な信号であり、それ以外では無効な信号である。なお、出力信号ＳＧ２、ＳＧ３、ＳＧ４は論理回路の動作遅延により、クロック信号ＣＬＫより若干の遅れが生じている。
【００３２】
次に、図５に基づいて、プロセッサ１４において分岐命令が検出され、キャッシュラインが変化する場合を説明する。
【００３３】
この図５からわかるように、ここではｂｉｔ３は変化しない場合を想定しているので、出力信号ＳＧ１、ＳＧ２はロウのままである。そして、時刻ｔ１において、プロセッサ１４で分岐命令が検出され分岐命令検出信号がロウからハイに切り替わる。この分岐命令検出信号は、１クロックサイクルの間だけ、このハイ状態を維持する。このため、分岐命令検出信号は時刻ｔ２で、ハイからロウに切り替わる。
【００３４】
時刻ｔ１でハイに切り替わった分岐命令検出信号は、ＯＲ回路３４に入力されている。このため、このＯＲ回路３４からは、時刻ｔ１から時刻ｔ２の間、ハイの出力信号ＳＧ３が出力される。この出力信号ＳＧ３が入力されたＡＮＤ回路３６からは、時刻ｔ１から時刻ｔ２の間に、１クロックサイクルだけ出力信号ＳＧ４が出力される。この１クロックサイクルの出力信号ＳＧ４に基づいて、タグＲＡＭ２２は動作をして、６ビットのタグ信号をヒット／ミス判別回路２４へ出力する。つまり、この時刻ｔ１から時刻ｔ２以外の時間ではタグＲＡＭ２２へのクロック供給は停止していることになる。したがって、タグ信号については、時刻ｔ１から時刻ｔ２における後半の半クロックサイクルの間だけ有効な信号であり、それ以外では無効な信号である。なお、出力信号ＳＧ３、ＳＧ４は論理回路の動作遅延により、クロック信号ＣＬＫより若干の遅れが生じている。
【００３５】
以上のように、本実施形態に係る命令キャッシュメモリ１２によれば、読み出そうとするワードが格納されるべきデータＲＡＭ２０内のキャッシュラインが変わる場合にのみ、タグＲＡＭ２２へクロック信号ＣＬＫを供給するようにしたので、この命令キャッシュメモリ１２における消費電力を抑制することができる。より詳しくは、プロセッサ１４からのアクセスアドレスにおけるｂｉｔ３が変化した場合、又は、プロセッサからの分岐命令検出信号がハイになった場合にのみ、クロック信号ＣＬＫをタグＲＡＭ２２へ供給するようにしたので、これ以外の場合のクロック信号ＣＬＫの供給を停止した分だけ、消費電力の抑制を図ることができる。
【００３６】
これは、計算機の命令というのは、分岐命令でない場合はフェッチカウンタが１つづつカウントアップされるよう構成されており、８ワードのキャッシュライン内であれば、次のアクセスアドレスのワードもデータＲＡＭ内に格納されていると判断することができる。したがって、１つのキャッシュライン内に格納されているワードを読み込んでいる間は、タグＲＡＭを動作させずとも、キャッシュヒットしていると判断することができる。また、読み出すべきワードが８ワードのキャッシュライン内を超えて、次のキャッシュラインに移るのは、８ワード毎である。したがって、アクセスアドレスのｂｉｔ３が変化したかどうかを監視していれば、読み出そうとするワードが格納されるべきキャッシュラインが、次のキャッシュラインに移ったかどうかがわかる。次のキャッシュラインに移った場合には、アクセスアドレスのワードがそのキャッシュラインに格納されているかどうか不明であるので、タグＲＡＭ２２を動作させて、ヒットしたかどうかを判別する必要がある。このため、ｂｉｔ３が変化した場合には、タグＲＡＭ２２へクロック信号ＣＬＫを供給する必要があるのである。
【００３７】
さらに、プロセッサ１４で分岐命令が検出された場合は、分岐命令検出信号がハイになる。このような分岐命令が実行されると、フェッチカウンタの値が、目的のアクセスアドレスまで飛んでしまう。したがって、その飛んだアクセスアドレスのワードがデータＲＡＭ２０に格納されているかは不明である。このため、分岐命令が検出された場合は、タグＲＡＭ２２へクロック信号ＣＬＫを供給して、タグＲＡＭ２２を動作させて、ヒットしたどうかを判別する必要があるのである。
【００３８】
これらプロセッサ１４からのアクセスアドレスにおけるｂｉｔ３が変化した場合、又は、プロセッサからの分岐命令検出信号がハイになった場合を除いては、読み出すべき命令としてのワードはデータＲＡＭ２０内に格納されていることが明らかである。したがって、あえてタグＲＡＭ２２を動作させるまでもなく、ラッチ回路４２からキャッシュヒットした旨のロウのヒット／ミス判別信号を出力すれば足りるのである。そして、このヒット／ミス判別信号がロウであるので、データＲＡＭ２０からの読み出しデータはプロセッサ１４へ取り込まれるのである。
【００３９】
しかも、プロセッサ１４からの分岐命令検出信号は、一般的なプロセッサが備えている信号であるので、新たにプロセッサを設計変更せずとも実現することができる。すなわち、一般的なプロセッサ１４は、プロセッサ内のフェッチカウンタの内容を、前回のフェッチカウンタのインクリメント値にするか、分岐アドレスにするかの、選択信号を備えている。したがって、この選択信号を、本実施形態に係る分岐命令検出信号として使えば足りるのである。
【００４０】
なお、本発明は上記実施形態に限定されず、種々に変形可能である。例えば、上記実施形態においては１ワード、３２ビットであると仮定したが、１ワード１６ビット等であってもよい。また、アクセスアドレスのビット数や、データＲＡＭ２０のメモリサイズや、１キャッシュラインあたりのワード数も、これらに限定されるものではない。
【００４１】
さらに、上記実施形態はダイレクトマッピング方式の命令キャッシュメモリについて説明したが、セットアソシアティブマッピング方式の命令キャッシュメモリや、フルアソシアティブマッピング方式の命令キャッシュメモリについても、同様に適用することができる。
【００４２】
図６は、本発明を適用した２ウェイセットアソシアティブマッピング方式の命令キャッシュメモリの構成を示す図である。この図６からわかるように、命令キャッシュメモリ１２’は、概略的には２組のダイレクトマッピングの命令キャッシュメモリ１２を合わせたような構成がとられている。データＲＡＭ２０ａのメモリサイズは５１２ワードであり、データＲＡＭ２０ｂのメモリサイズも５１２ワードである。したがって、データＲＡＭ２０ａ、２０ｂは両者をあわせて、上述した実施形態と同様の１Ｋワードのメモリサイズである。データＲＡＭ２０ａ、２０ｂは、それぞれ、１キャッシュライン８ワード、総キャッシュライン数６４で構成されている。タグＲＡＭ２２ａ、２２ｂは、それぞれ、６４キャッシュライン分のタグを有している。また、命令キャッシュメモリ１２’は、マルチプレクサ５０を備えている。このマルチプレクサ５０は２つのデータＲＡＭ２０ａ、２０ｂのうちの、いずれか一方を選択して、読み出しデータとしてプロセッサへ供給するための回路である。このため、このマルチプレクサ５０には、データＲＡＭ２０ａ、２０ｂの読み出しデータと、ヒット／ミス判別回路２４ａ、２４ｂのヒット／ミス判別信号とが、入力されている。そして、データＲＡＭ２０ａ、２０ｂのうちのどちらに読み出そうとするワードが格納されているかを、ヒット／ミス判別回路２４ａ、２４ｂの出力信号であるヒット／ミス判別信号で選択する。
【００４３】
【発明の効果】
以上のように、本発明に係る命令キャッシュメモリによれば、クロックゲート回路を設けることにより、読み出そうとするワードが格納されるべきキャッシュラインが変わった場合、又は、プロセッサにおいて分岐命令が検出された場合にのみ、タグＲＡＭへクロック信号を供給し、これ以外の場合にはタグＲＡＭへのクロック信号の供給を停止するようにしたので、タグＲＡＭの稼働を低減し、消費電力の抑制を図ることができる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るダイレクトマッピング方式の命令キャッシュメモリの構成を示す図。
【図２】ダイレクトマッピング方式におけるタグＲＡＭとデータＲＡＭの論理的構成を示す図。
【図３】本発明に係る命令キャッシュメモリを有するプロセッシングユニットの構成を示す図。
【図４】本実施形態に係る命令キャッシュメモリの動作を説明するためのタイミングチャートを示す図（アクセスアドレスのｂｉｔ３が変化し、キャッシュラインが変わる場合）。
【図５】本実施形態に係る命令キャッシュメモリの動作を説明するためのタイミングチャートを示す図（プロセッサにおいて分岐命令が検出されて、キャッシュラインが変わる場合）。
【図６】本発明をセットアソシアティブマッピング方式の命令キャッシュメモリに適用した場合の一例を示す図。
【図７】従来の命令キャッシュメモリの構成を示す図。
【符号の説明】
１０  メインメモリ
１２  命令キャッシュメモリ
１４  プロセッサ
２０  データＲＡＭ
２２  タグＲＡＭ
２４  ヒット／ミス判別回路
２６  クロックゲート回路
３０  フリップフロップ回路
３２  ＥＸＯＲ回路
３４  ＯＲ回路
３６  ＡＮＤ回路
４０  比較器
４２  ラッチ回路
【図１】
0003798563.tif 000002
【図２】
0003798563.tif 000003
【図３】
0003798563.tif 000004
【図４】
0003798563.tif 000005
【図５】
0003798563.tif 000006
【図６】
0003798563.tif 000007
【図７】
0003798563.tif 000008