(57)【要約】【課題】ＣＰＵが複数の命令をパイプライン処理する場合に、パイプラインの処理待ちを防止しまたは処理待ち時間を短縮する条件を満たした上で、可能な限り低電力で動作するように適切にアクセスモードを選択することのできるキャッシュシステムを提供する。【解決手段】分岐・プリフェッチ判定部１７は、分岐要求信号を受け取ったときには、キャッシュアクセスモード切替信号を「Ｈ」レベルに設定する。これにより、キャッシュメモリ１００は、高消費電力の１サイクルアクセスモードで動作する。分岐・プリフェッチ判定部１７は、プリフェッチ要求信号を受け取ったときには、キャッシュアクセスモード切替信号を「Ｌ」レベルに設定する。これにより、キャッシュメモリ１００は、低消費電力の２サイクルアクセスモードで動作する。【選択図】        図５
2004171177.tif 000002
【特許請求の範囲】
【請求項１】
アクセスされて記憶されたデータを出力する動作を、第１の期間で行なう第１のアクセスモードと該第１の期間よりも長い第２の期間で行なう第２のアクセスモードとを有するキャッシュメモリと、
前記キャッシュメモリ内のデータをパイプライン処理するプロセッサと、
前記各アクセスモードで動作した場合のパイプラインのストールの有無に基づいて、前記キャッシュメモリに対して、前記第１のアクセスモードで動作するように指示する第１のアクセスモード信号、または前記第２のアクセスモードで動作するように指示する第２のアクセスモード信号のいずれかを出力するアクセスモード制御部とを備えたキャッシュシステム。
【請求項２】
前記プロセッサは、分岐命令を実行した後、分岐要求信号を出力するとともに、後続の命令につきパイプライン処理をフラッシュし、
前記アクセスモード制御部は、前記分岐要求信号を受け取ったときに、前記第１のアクセスモード信号を出力する、請求項１記載のキャッシュシステム。
【請求項３】
前記キャッシュメモリから出力された命令を保持する複数のキューと、
各キュー内の最後の命令が出力される際に、プリフェッチ要求信号を出力するキュー制御部とを含み、
前記キャッシュメモリは、少なくとも３個以上の命令を同時に１つのキューに出力し、
前記アクセスモード制御部は、前記プリフェッチ要求信号を受け取ったときに、前記第２のアクセスモード信号を出力する、請求項２記載のキャッシュシステム。
【請求項４】
前記キャッシュメモリから出力された命令を保持する複数のキューと、
各キュー内の最後の命令が出力される際に、プリフェッチ要求信号を出力するキュー制御部とを含み、
前記キャッシュメモリは、複数個の命令を同時に１つのキューに出力し、
前記プロセッサは、前記キューから命令を読み出して実行し、分岐命令を実行した後、さらに分岐先アドレスを出力し、
前記アクセスモード制御部は、分岐先命令のアドレスを受け取ったときに、当該分岐先アドレスの命令がキューに格納されたときにキュー内の最後の命令となる場合には、フラグを設定し、
前記アクセスモード制御部は、プリフェッチ要求信号を受け取ったときに、前記フラグが設定されている場合には、前記第１のアクセスモード信号を出力し、当該出力後に前記フラグを解除する、請求項２記載のキャッシュシステム。
【請求項５】
前記プロセッサは、レジスタにメモリにあるデータを格納する命令を解読したときに、当該命令に含まれる格納レジスタ番号を出力し、
前記命令に後続する命令であって、レジスタのデータを参照する命令を解読したときに、当該命令に含まれる参照レジスタ番号を出力し、
前記アクセスモード制御部は、前記格納レジスタ番号と前記参照レジスタ番号を受け取ったときに、前記格納レジスタ番号と前記参照レジスタ番号が一致するか否かを判定し、一致するときには、前記第１のアクセスモード信号を出力し、不一致のときには、前記第２のアクセスモード信号を出力する、請求項１記載のキャッシュシステム。
【請求項６】
前記キャッシュメモリは、前記第１のアクセスモードでは、複数ウェイを同時に動作させて複数のデータを出力し、そのうちの一つを選択して出力する処理を前記第１の期間で行ない、前記第２のアクセスモードでは、複数ウェイのうちの一つを選択して、該選択されたウェイのみを動作させてデータを出力する処理を前記第２の期間で行なう、請求項１〜５記載のいずれか一項記載のキャッシュシステム。
【請求項７】
アクセスされて記憶されたデータを出力する動作を、第１の期間で行なう第１のアクセスモードと該第１の期間よりも長い第２の期間で行なう第２のアクセスモードとを有するキャッシュメモリを制御するキャッシュメモリ制御装置であって、
前記キャッシュメモリ内のデータを処理するプロセッサであって、複数種類のクロック周波数のうちいずれかの周波数を選択して動作するプロセッサが所定値以上のクロック周波数で動作しているときに、前記第１のアクセスモード信号を出力し、前記所定値未満のクロック周波数で動作しているときに、前記第２のアクセスモード信号を出力するアクセスモード制御部とを備えたキャッシュメモリ制御装置。
【請求項８】
前記キャッシュメモリは、前記第１のアクセスモードでは、複数ウェイを同時に動作させて複数のデータを出力し、そのうちの一つを選択して出力する処理を前記第１の期間で行ない、前記第２のアクセスモードでは、複数ウェイのうちの一つを選択して、該選択されたウェイのみを動作させてデータを出力する処理を前記第２の期間で行なう、請求項７記載のキャッシュメモリ制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、キャッシュシステムおよびキャッシュメモリ制御装置に関し、特に、高速で高消費電力で動作させるアクセスモードと、低速で低消費電力で動作させるアクセスモードの２つのアクセスモードを有するキャッシュメモリを制御するキャッシュシステムおよびキャッシュメモリ制御装置に関する。
【０００２】
【従来の技術】
従来から、メインメモリのアクセス速度を補償するために、キャッシュメモリを用いたキャッシュシステムが実用化されている。キャッシュメモリとは、プロセッサとメインメモリとの間に置かれた高速な記録媒体である。このキャッシュメモリには、使用頻度の高いデータが置かれる。プロセッサは、メインメモリへアクセスする代わりに、このキャッシュメモリにアクセスして、そこからデータをとりだすことで、高速に処理を行なうことができる。
【０００３】
ところで、特許文献１では、２つのアクセスモードを有するキャッシュメモリが開示されている。すなわち、全部アクセスのモードでは、キャッシュメモリ内のアドレスメモリにおけるヒット／ミス判定動作に並行して、すべてのウェイに対するインデックス動作を行なう。これによって、キャッシュヒットに係るデータの外部出力を高速化することができる。一方、唯一アクセスのモードでは、キャッシュメモリ内のアドレスメモリにおけるヒット／ミス判定動作によって得られたウェイ選択信号によって選択されたウェイに対するインデックス動作を行なう。これによって、必要最小限のメモリ領域だけが動作することになり、低消費電力化を図ることができる。
【０００４】
【特許文献１】
特開平１１−３９２１６号公報
【０００５】
【発明が解決しようとする課題】
ところで、上記特許文献１において、全部アクセスモードと唯一アクセスモードの選択が行なわれる例として記載されているのは、連続読出しのようなバーストアクセスの場合のみである。すなわち、連続読出しのようなバーストアクセスの場合、第１回目のアクセスは全部アクセスモードでアクセスし、第２回目以降は、唯一アクセスモードでアクセスすることが記載されている。
【０００６】
しかしながら、上述のように２つのアクセスモードの選択が必要となるのは、連続読出しの場合の第１回目のアクセスと、第２回目以降のアクセスとに限らない。
【０００７】
たとえば、複数のデータをパイプライン処理しているキャッシュシステムでは、パイプラインのストール（処理待ち）を防止し、またはストールが起こってもその待ち時間ができるだけ短時間であることが望まれる。一方、パイプラインのストールが起こらないときには、できるだけ低消費電力で動作することが望まれる。
【０００８】
また、２種類以上のクロック周波数のうち１つを選択して動作するＣＰＵ（プロセッサ）が使用されるキャッシュシステムでは、高速のクロック周波数が選択されている場合には、消費電力を低くするよりも高速に動作させることが優先されており、低速のクロック周波数が選択されている場合には、動作速度を速くするよりも消費電力を低くすることが優先されている。
【０００９】
それゆえ、本発明の目的は、ＣＰＵが複数の命令をパイプライン処理する場合に、パイプラインの処理待ちを防止しまたは処理待ち時間を短縮する条件を満たした上で、可能な限り低消費電力で動作するように適切にアクセスモードを選択することのできるキャッシュシステムを提供することである。
【００１０】
また、本発明の他の目的は、２種類以上のクロック周波数のうち１つを選択して動作するＣＰＵが使用される場合に、選択されている現在のＣＰＵのクロック周波数に応じて、適切にアクセスモードを選択することのできるキャッシュメモリ制御装置を提供することである。
【００１１】
【課題を解決するための手段】
上記課題を解決するために、この発明に係わるキャッシュシステムは、アクセスされて記憶されたデータを出力する動作を、第１の期間で行なう第１のアクセスモードと該第１の期間よりも長い第２の期間で行なう第２のアクセスモードとを有するキャッシュメモリと、前記キャッシュメモリ内のデータをパイプライン処理するプロセッサと、前記アクセスモードで動作した場合のパイプラインの処理待ちの有無に基づいて、前記キャッシュメモリに対して、前記第１のアクセスモードで動作するように指示する第１のアクセスモード信号、または前記第２のアクセスモードで動作するように指示する第２のアクセスモード信号のいずれかを出力するアクセスモード制御部とを備える。
【００１２】
また、この発明に係るキャッシュメモリ制御装置は、アクセスされて記憶されたデータを出力する動作を、第１の期間で行なう第１のアクセスモードと該第１の期間よりも長い第２の期間で行なう第２のアクセスモードとを有するキャッシュメモリを制御するキャッシュメモリ制御装置であって、前記キャッシュメモリ内のデータを処理するプロセッサであって、複数種類のクロック周波数のうちいずれかの周波数を選択して動作するプロセッサが所定値以上のクロック周波数で動作しているときに、前記第１のアクセスモード信号を出力し、前記所定値未満のクロック周波数で動作しているときに、前記第２のアクセスモード信号を出力するアクセスモード制御部とを備える。
【００１３】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を用いて説明する。
【００１４】
＜第１の実施形態＞
（構成）
図１は、本実施の形態に係るキャッシュメモリの構成を示す。このキャッシュメモリ１００は、２ウェイ・セット・アソシアティブ方式で構成されている。同図を参照して、キャッシュメモリ１００は、ＴＡＧメモリ１と、比較器９２０，９２１と、ミス判定装置３と、キャッシュアクセスモード切替部９と、ＤＡＴＡメモリ４と、ラッチ回路６と、セレクタ５とから構成される。
【００１５】
ＴＡＧメモリ１は、アドレスメモリであって、２つのアドレスアレイであるタグＷａｙ０と、タグＷａｙ１とを含む。タグＷａｙ０と、タグＷａｙ１は、インデックスアドレスに対応させてタグアドレスを記憶する。
【００１６】
タグＷａｙ０のインデックスで特定されるタグアドレスは、後述するデータＷａｙ０の同一のインデックスで特定されるデータの上位アドレスを示す。同様に、タグＷａｙ１のインデックスで特定されるタグアドレスは、データＷａｙ１の同一のインデックスで特定されるデータの上位アドレスを示す。
【００１７】
タグＷａｙ０と、タグＷａｙ１は、指定されたアドレスの下位アドレスであるインデックスアドレスが入力され、そのインデックスアドレスに対応するタグアドレスを出力する。
【００１８】
タグＷａｙ０およびタグＷａｙ１には、タグイネーブル信号が入力される。タグＷａｙ０およびタグＷａｙ１は、タグイネーブル信号が「Ｈ」レベルのときには、動作し、タグイネーブル信号が「Ｌ」レベルのときには、動作しない。
【００１９】
比較器９２０は、タグＷａｙ０から出力されたタグアドレスと、指定されたアドレスの上位アドレスであるタグアドレスとを比較し、一致している場合には、データＷａｙ０に指定されたアドレスのデータが存在することを示すように、つまりヒットしたことを示すように、ＴａｇＨｉｔＷａｙ０を「Ｈ」レベルに設定し、不一致の場合には、データＷａｙ０に指定されたアドレスのデータが存在しないことを示すように、つまりミスヒットしたことを示すようにＴａｇＨｉｔＷａｙ０を「Ｌ」レベルに設定する。
【００２０】
比較器９２１は、タグＷａｙ１から出力されたタグアドレスと、指定されたアドレスの上位アドレスであるタグアドレスとを比較し、一致している場合には、データＷａｙ１に指定されたアドレスのデータが存在することを示すように、つまりヒットしたことを示すように、ＴａｇＨｉｔＷａｙ１を「Ｈ」レベルに設定し、不一致の場合には、データＷａｙ１に指定されたアドレスのデータが存在しないことを示す、つまりミスヒットしたことを示すようにＴａｇＨｉｔＷａｙ１を「Ｌ」レベルに設定する。
【００２１】
ミス判定装置３は、ＴａｇＨｉｔＷａｙ０＝「Ｌ」、かつＴａｇＨｉｔＷａｙ１＝「Ｌ」のときには、データＷａｙ０およびデータＷａｙに１指定されたアドレスのデータが存在しないことを示すＭｉｓｓ信号をＣＰＵ１２０へ出力する。ＣＰＵ１２０では、Ｍｉｓｓ信号を受け取ったときには、キャッシュメモリ１００から出力されたデータを無効なデータとして扱う。
【００２２】
ＤＡＴＡメモリ４は、２つのデータアレイであるデータＷａｙ０と、データＷａｙ１とを含む。データＷａｙ０およびデータＷａｙ１は、インデックスアドレスに対応させてデータを記憶する。ここで、データとは、命令またはオペランドデータであるとする。データと記している場合には、命令またはオペランドデータのいずれでもよいものとする。
【００２３】
データＷａｙ０に記憶されているデータは、対応するインデックスアドレスを下位アドレスとし、タグＷａｙ０内の同一のインデックスアドレスに対応させて記憶されているタグアドレスを上位アドレスとするデータである。
【００２４】
同様に、データＷａｙ１に記憶されているデータは、対応するインデックスアドレスを下位アドレスとし、タグＷａｙ１内の同一のインデックスアドレスに対応させて記憶されているタグアドレスを上位アドレスとするデータである。
【００２５】
データＷａｙ０およびデータＷａｙ１には、インデックスアドレスが入力される。
【００２６】
データＷａｙ０は、キャッシュアクセスモード切替部９から出力されるＷａｙ０Ｅｎａｂｌｅが「Ｈ」レベルのときに、入力されたインデックスアドレスに対応するデータをセレクタ５へ出力する。データＷａｙ０は、Ｗａｙ０Ｅｎａｂｌｅが「Ｌ」レベルのときには、動作しない。
【００２７】
データＷａｙ１は、キャッシュアクセスモード切替部９から出力されるＷａｙ１Ｅｎａｂｌｅが「Ｈ」レベルのときに、入力されたインデックスアドレスに対応するデータをセレクタ５へ出力する。データＷａｙ１は、Ｗａｙ１Ｅｎａｂｌｅが「Ｌ」レベルのときには、動作しない。
【００２８】
キャッシュアクセスモード切替部９には、外部からキャッシュアクセスモード切替信号が送られてくる。キャッシュアクセスモード切替信号が「Ｈ」レベルのときには、キャッシュメモリ１００は、１サイクルアクセスモードで動作し、キャッシュアクセスモード切替信号が「Ｌ」レベルのときには、キャッシュメモリ１００は、２サイクルアクセスモードで動作する。
【００２９】
図２は、キャッシュアクセスモード切替部９の詳細な構成を示す。同図を参照して、キャッシュアクセスモード切替部９は、ラッチ９１０，９１１と、セレクタ９３０，９３１，９４とを含む。
【００３０】
ラッチ回路９１０は、比較器９２０から出力されたＴａｇＨｉｔＷａｙ０を１／２サイクル期間遅延させて出力する。
【００３１】
ラッチ回路９１１は、比較器９２１から出力されたＴａｇＨｉｔＷａｙ１を１／２サイクル期間遅延させて出力する。
【００３２】
セレクタ９３０は、キャッシュアクセスモード切替信号が「Ｈ」レベルのときには、Ｗａｙ０Ｅｎａｂｌｅとして「Ｈ」レベルの信号を出力する。
【００３３】
セレクタ９３０は、キャッシュアクセスモード切替信号が「Ｌ」レベルのときには、Ｗａｙ０Ｅｎａｂｌｅとして、ラッチ回路９１０から出力される信号、すなわち、比較器９２０から出力されたＴａｇＨｉｔＷａｙ０を１／２サイクル遅延させた信号を出力する。これにより、データＷａｙ０が動作するサイクルは、ＴＡＧメモリ１が動作するサイクルよりも１サイクル後となる。
【００３４】
セレクタ９３１は、キャッシュアクセスモード切替信号が「Ｈ」レベルのときには、Ｗａｙ１Ｅｎａｂｌｅとして「Ｈ」レベルの信号を出力する。
【００３５】
セレクタ９３１は、キャッシュアクセスモード切替信号が「Ｌ」レベルのときには、Ｗａｙ１Ｅｎａｂｌｅとして、ラッチ回路９１１から出力される信号、すなわち、比較器９２１から出力されたＴａｇＨｉｔＷａｙ１を１／２サイクル遅延させた信号を出力する。これにより、データＷａｙ１が動作するサイクルは、ＴＡＧメモリ１が動作するサイクルよりも１サイクル後となる。
【００３６】
以上のように、セレクタ９３０および９３１によって、２サイクルアクセスモード時には、ＴＡＧメモリ１の動作（アクセス）するサイクルは、ＤＡＴＡメモリ４が動作（アクセス）するサイクルよりも１サイクル前となる。したがって、２サイクルでキャッシュメモリ１００からデータが出力される。一方、１サイクルアクセスモード時には、ＴＡＧメモリ１が動作（アクセス）するサイクルは、ＤＡＴＡメモリ４が動作（アクセス）するサイクルの１／２サイクル前となる。したがって、１サイクルでキャッシュメモリ１００からデータが出力される。
【００３７】
セレクタ９４は、キャッシュアクセスモード切替信号が「Ｌ」レベルのときには、Ｗａｙ１ＥｎａｂｌｅをＷａｙＳｅｌｅｃｔとして出力する。なぜなら、キャッシュアクセスモード切替信号が「Ｌ」レベルの場合に、データＷａｙ１が選択されるときには、Ｗａｙ１Ｅｎａｂｌｅは、ＴＡＧメモリ１のアクセスサイクルの１／２サイクル後、つまり、ＤＡＴＡメモリ４のアクセスサイクルの１／２サイクル前に「Ｈ」レベルとなるからである。
【００３８】
セレクタ９４は、キャッシュアクセスモード切替信号が「Ｈ」レベルのときには、ＴａｇＨｉｔＷａｙ１をＷａｙＳｅｌｅｃｔとして出力する。なぜなら、キャッシュアクセスモード切替信号が「Ｈ」レベルの場合に、データＷａｙ１が選択されるときには、ＴａｇＨｉｔＷａｙ１は、ＴＡＧメモリ１のアクセスサイクルと同一のサイクルであるＤＡＴＡメモリ４のアクセスサイクルに「Ｈ」レベルとなるからである。
【００３９】
ラッチ６は、セレクタ９４から出力されたＷａｙＳｅｌｅｃｔを保持する。
セレクタ５は、ラッチ６から出力される信号が「Ｌ」レベルのときには、データＷａｙ０から出力されたデータを出力し、ラッチ６から出力される信号が「Ｈ」レベルのときには、データＷａｙ１から出力されたデータを出力する。
【００４０】
（２サイクルアクセスモード時の動作）
次に、図３に示すタイミングチャートを用いて、２サイクルアクセスモードでのキャッシュメモリ１００の動作について説明する。
【００４１】
同図を参照して、２サイクルアクセスモードでは、ＴＡＧアクセスサイクルとＤＡＴＡアクセスサイクルの２サイクルでキャッシュメモリ１００からデータが出力される。
【００４２】
まず、ＴＡＧアクセスサイクルの前半で、ＴＡＧメモリ１にアクセスが行なわれ、タグＷａｙ０およびタグＷａｙ１からそれぞれタグアドレスが出力される。
【００４３】
比較器９２０は、タグＷａｙ０から出力されたタグアドレスと、外部から指定されたタグアドレスとを比較し、一致していれば、ＴａｇＨｉｔＷａｙ０＝「Ｈ」に設定し、不一致ならば、ＴａｇＨｉｔＷａｙ０＝「Ｌ」に設定する。比較器９２１は、タグＷａｙ１から出力されたタグアドレスと、外部から指定されたタグアドレスとを比較し、一致していれば、ＴａｇＨｉｔＷａｙ１＝「Ｈ」に設定し、不一致ならば、ＴａｇＨｉｔＷａｙ１＝「Ｌ」に設定する。したがって、キャッシュメモリ中に、指定されたアドレスのデータが存在する場合には、ＴａｇＨｉｔＷａｙ０およびＴａｇＨｉｔＷａｙ１のいずれかが「Ｈ」に設定され、指定されたアドレスのデータが存在しない場合には、ＴａｇＨｉｔＷａｙ０およびＴａｇＨｉｔＷａｙ１のいずれもが「Ｌ」に設定される。
【００４４】
次に、ＴＡＧアクセスサイクルの後半で、ＴａｇＨｉｔＷａｙ０＝「Ｈ」であれば、Ｗａｙ０Ｅｎａｂｌｅ＝「Ｈ」に設定され、ＴａｇＨｉｔＷａｙ１＝「Ｈ」であれば、Ｗａｙ１Ｅｎａｂｌｅ＝「Ｈ」に設定される。
【００４５】
次に、ＤＡＴＡアクセスサイクルの前半で、Ｗａｙ０Ｅｎａｂｌｅ＝「Ｈ」であれば、データＷａｙ０にアクセスが行なわれてデータが出力され、Ｗａｙ１Ｅｎａｂｌｅ＝「Ｈ」であれば、データＷａｙ１にアクセスが行なわれてデータが出力される。
【００４６】
このように、２サイクルアクセスモードでは、１サイクルでＴＡＧメモリアクセスが行なわれ、２サイクル目でＤＡＴＡメモリアクセスが行なわれる。この場合、データＷａｙ０およびデータＷａｙ１のいずれか一方が動作し、他方は動作しないので、消費電力が小さい。
【００４７】
（１サイクルアクセスモード時の動作）
次に、図４に示すタイミングチャートを用いて、１サイクルアクセスモードでのキャッシュメモリ１００の動作について説明する。
【００４８】
同図を参照して、１サイクルアクセスモードでは、１サイクルのＴＡＧ＆ＤＡＴＡアクセスサイクルでキャッシュメモリ１００からデータが出力される。
【００４９】
まず、ＴＡＧ＆ＤＡＴＡアクセスサイクルの前半で、ＴＡＧメモリ１にアクセスが行なわれ、タグＷａｙ０およびタグＷａｙ１からそれぞれタグアドレスが出力される。
【００５０】
比較器９２０は、タグＷａｙ０から出力されたタグアドレスと、外部から指定されたタグアドレスとを比較し、一致していれば、ＴａｇＨｉｔＷａｙ０＝「Ｈ」に設定し、不一致ならば、ＴａｇＨｉｔＷａｙ０＝「Ｌ」に設定する。比較器９２１は、タグＷａｙ１から出力されたタグアドレスと、外部から指定されたタグアドレスとを比較し、一致していれば、ＴａｇＨｉｔＷａｙ１＝「Ｈ」に設定し、不一致ならば、ＴａｇＨｉｔＷａｙ１＝「Ｌ」に設定する。したがって、キャッシュメモリ中に、指定されたアドレスのデータが存在する場合には、ＴａｇＨｉｔＷａｙ０およびＴａｇＨｉｔＷａｙ１のいずれかが「Ｈ」に設定され、指定されたアドレスのデータが存在しない場合には、ＴａｇＨｉｔＷａｙ０およびＴａｇＨｉｔＷａｙ１のいずれもが「Ｌ」に設定される。
【００５１】
比較器９２０および９２１による上記処理と並行して、同一のサイクルで、Ｗａｙ０Ｅｎａｂｌｅ＝「Ｈ」、かつ、Ｗａｙ１Ｅｎａｂｌｅ＝「Ｈ」に設定される。
【００５２】
次に、ＴＡＧ＆ＤＡＴＡアクセスサイクルの後半で、データＷａｙ０およびデータＷａｙ１にアクセスが行なわれてデータが出力される。
【００５３】
セレクタ５は、ＴａｇＨｉｔＷａｙ１の値によって定まるＷａｙＳｅｌｃｅｔの値に応じて、データＷａｙ０またはデータＷａｙ１から出力されたデータが選択される。
【００５４】
このように、１サイクルアクセスモードでは、１サイクルでＴＡＧメモリアクセスとＤＡＴＡメモリアクセスが行なわれる。この場合、データＷａｙ０およびデータＷａｙ１の両方が同時に動作するので、消費電力が大きくなる。
【００５５】
次に、このようなキャッシュメモリを用いたキャッシュシステムについて説明する。
【００５６】
図５は、本実施の形態に係るキャッシュシステムの構成を示す。同図を参照して、キャッシュシステム２００は、キャッシュメモリ１００と、ＣＰＵ（プロセッサ）１２０と、命令キュー１８と、キュー制御部３１と、分岐・プリフェッチ判定部１７とを含む。
【００５７】
このキャッシュシステム２００は、複数の命令を同時に実行するパイプライン処理を採用する。
【００５８】
キャッシュメモリ１００は、上述した図１に示したものである。キャッシュメモリ１００では、パイプラインのＩＦ１ステージで、命令アドレスで指定されるデータ（命令）に対して、ＴＡＧメモリアクセスおよびＤＡＴＡメモリアクセスが行なわれて、キャッシュメモリ１００から命令が出力される。このＩＦ１ステージは、２サイクルアクセスモード時には、２サイクルになり、１サイクルアクセスモード時には、１サイクルになる。このキャッシュメモリ１００では、外部より入力される命令アドレスの下位２ビットを除く上位アドレスを共通にする４個の命令を同時に出力する。
【００５９】
命令キュー１８は、キュー０およびキュー１とからなる。各キューには、パイプラインのＩＦ２ステージ（２サイクルの前半の１サイクル）で、キャッシュメモリ１００から出力された命令が書込まれる。
【００６０】
各キューは、最大４個の命令を保持する。各キューには、そのキュー内の最後の命令が出力された後、キャッシュメモリ１００から４個の命令が同時に送られてくる。各キューには、先頭から順に、下位アドレスの２ビットが「ＬＬ」、「ＬＨ」、「ＨＬ」、「ＨＨ」である命令が格納される。
【００６１】
各キューの最後の命令がＣＰＵ１２０へ出力されると別のキューから命令がＣＰＵ１２０へ出力される。すなわち、キュー０の最後の命令が出力された後には、キュー１から命令が出力される。キュー１の最後の命令が出力された後には、キュー０から命令が出力される。各キュー内の命令は、通常、先頭から順に出力される。すなわち、下位アドレスの２ビットが「ＬＬ」、「ＬＨ」、「ＨＬ」、「ＨＨ」である命令の順に出力される。したがって、下位アドレスの２ビットが「ＬＬ」の命令を先頭の命令と称し、下位アドレスの２ビットが「ＬＨ」の命令を２番目の命令と称し、下位アドレスの２ビットが「ＨＬ」の命令を３番目の命令と称し、下位アドレスの２ビットが「ＨＨ」の命令を最後の命令と称することにする。ただし、分岐命令の実行後には、上記順番に関係なく、分岐先アドレスの命令がキューから出力される。
【００６２】
キュー制御部３１は、命令キュー１８の各キューに保持されている命令の出力を制御する。キュー制御部３１は、各キューの最後の命令が出力されるときに、分岐・プリフェッチ判定部１７へプリフェッチ要求信号を出力する。
【００６３】
キュー制御部３１は、分岐要求信号を受け取った時には、命令キュー１８内のすべてのキューに保持されている命令をフラッシュ（削除）する。
【００６４】
ＣＰＵ（プロセッサ）１２０は、命令をパイプライン処理する。すなわち、ＣＰＵ１２０は、ＩＦ２ステージ（２サイクルの後半の１サイクル）でキューから命令を読出し、ＤＥＣステージで命令を解読し、Ｅｘｅステージで命令を実行し、ＷＢステージで実行結果をレジスタに格納する。ただし、このＷＢステージについては、実行結果をレジスタに格納することが不要な命令、たとえば、分岐命令では、省略される。
【００６５】
ＣＰＵ１２０は、分岐命令を実行した後、分岐・プリフェッチ判定部１７およびキュー制御部３１へ向けて分岐要求信号を出力する。
【００６６】
また、ＣＰＵ１２０は、分岐命令を実行した後、パイプラインをフラッシュする。すなわち、ＣＰＵ１２０は、その分岐命令に後続する処理中の命令に関して、既に行なわれた処理を行なわれなかったものとして扱う。
【００６７】
分岐・プリフェッチ判定部１７は、分岐要求信号およびプリフェッチ要求信号のいずれも受け取っていないときには、タグイネーブル信号を「Ｌ」レベルに設定し、キャッシュアクセスモード切替信号を「Ｌ」レベルに設定する。この場合、キャッシュメモリ１００内のＴＡＧメモリ１およびＤＡＴＡメモリ４はいずれも動作しない。
【００６８】
分岐・プリフェッチ判定部１７は、分岐要求信号を受け取ったときには、タグイネーブル信号を「Ｈ」レベルに設定し、キャッシュアクセスモード切替信号を「Ｈ」レベルに設定する。この場合、キャッシュメモリ１００は、１サイクルアクセスモードで動作し、キャッシュメモリ１００から命令が１サイクルで出力される。分岐命令実行後には、パイプラインのフラッシュと命令キュー部１８のすべてのキューのフラッシュが行なわれるので、このように１サイクルで命令を出力することによって、分岐命令実行後、次の命令が実行されるまでの待ち時間を少なくすることができる。
【００６９】
分岐・プリフェッチ判定部１７は、プリフェッチ要求信号を受け取ったときには、タグイネーブル信号を「Ｈ」レベルに設定し、キャッシュアクセスモード切替信号を「Ｌ」レベルに設定する。この場合、キャッシュメモリ１００は、２サイクルアクセスモードで動作し、キャッシュメモリ１００から命令が２サイクルで出力される。これは、１つのキューが空になったとしても、他のキュー内に４個の命令が格納されているからである。つまり、空になった方のキューに２サイクルで命令を出力している間に、他のキュー内の４個の命令の処理を行なうので、パイプラインのストールは、発生しないからである。
【００７０】
（通常時の動作）
図６は、分岐およびプリフェッチ動作以外の動作時における、キュッシュメモリ１００内の命令の読出しおよび実行手順を示す。同図を参照して、第１サイクルで、キューアクセスを行なって命令を読出し、第２サイクルで命令のデコートを行ない、第３サイクルで命令を実行し、第４サイクルで命令の実行結果をＣＰＵ内部のレジスタに書込む。複数の命令に対する上記パイプライン処理が１サイクルずつずらした形で、同時に行なわれる。この通常時には、キャッシュメモリ１００へのアクセスは行なわれない。
【００７１】
（分岐時の動作）
図７は、分岐時におけるキャッシュメモリ１００内の命令の読出しおよび実行手順を示す。同図を参照して、（１）に示すように、ＣＰＵ１２０で、分岐命令が実行された後、（２）に示すようにパイプラインがフラッシュされるとともに、命令キュー１８がフラッシュされる。その後、ＣＰＵ１２０から、分岐要求信号が分岐・プリフェッチ判定部１７に出力される。分岐・プリフェッチ判定部１７は、タグイネーブル信号を「Ｈ」レベルに設定し、キャッシュアクセスモード切替信号を「Ｈ」レベルに設定する。これにより、キャッシュメモリ１００は、（３）に示すように、１サイクルアクセスモードで動作し、キャッシュメモリ１００から命令が１サイクルで出力される。
【００７２】
（プリフェッチ時の動作）
図８は、プリフェッチ時におけるキャッシュメモリ１００内の命令の読出しおよび実行手順を示す。同図を参照して、（１）に示すように、ＣＰＵ１２０は、キュー０内の最後の命令を読み出す。キュー制御部３１は、キュー０の最後の命令が出力されるときに、分岐・プリフェッチ判定部１７へプリフェッチ要求信号を出力する。分岐・プリフェッチ判定部１７は、タグイネーブル信号を「Ｈ」レベルに設定し、キャッシュアクセスモード切替信号を「Ｌ」レベルに設定する。これにより、キャッシュメモリ１００は、（２）に示すように、２サイクルアクセスモードで動作し、キャッシュメモリ１００から命令が２サイクルで出力される。
【００７３】
また、キュー０の最後の命令が出力されると、（３）に示すように、キュー１内の４個の命令に対する処理が順次行なわれる。キュー１内の最後の命令が実行された後、キュー０内の命令が実行されることになるが、キュー１内に命令が４個格納されていたので、（２）に示すように、キャッシュメモリ１００が２サイクルアクセスモードで動作したとしても、パイプラインのストールは起こらない。
【００７４】
以上のように、本実施の形態に係るキャッシュシステムによれば、ＣＰＵが複数の命令をパイプライン処理する場合に、分岐命令の実行後には、キャッシュメモリ１００を２サイクルアクセスモードで動作させると（１サイクルアクセスモードで動作させても）、パイプラインのストールが発生するので、キャッシュメモリ１００を１サイクルアクセスモードで動作させることで、命令の実行待ち時間を短縮することができる。
【００７５】
また、プリフェッチが発生したときには、他のキュー内に３個以上の命令が保持されているので、キャッシュメモリ１００を２サイクルアクセスモードで動作させてもパイプラインのストールは発生しないので、キャッシュメモリ１００を２サイクルアクセスモードで動作させることで、低消費電力で動作させることができる。
【００７６】
＜第２の実施形態＞
図９は、本実施の形態に係るキャッシュシステムの構成を示す。同図を参照して、キャッシュシステム３００は、キャッシュメモリ１００と、ＣＰＵ１３０と、命令キュー１８と、キュー制御部３１と、分岐・プリフェッチ判定部１９とを含む。本実施の形態のキャッシュシステムは、図５に示す第１の実施形態のキャッシュシステムと共通する部分を有す。図９の構成要素のうち、図５と同一の構成要素には、図５の構成要素と同一の符号を付す。以下、相違する部分について説明する。
【００７７】
ＣＰＵ１３０は、分岐命令を実行した後、分岐・プリフェッチ判定部１９およびキュー制御部３１へ向けて分岐要求信号を出力するとともに、分岐先アドレス信号を分岐・プリフェッチ判定部１９へ向けて出力する。
【００７８】
分岐・プリフェッチ判定部１９は、分岐要求信号およびプリフェッチ要求信号のいずれも受け取っていないときには、タグイネーブル信号を「Ｌ」レベルに設定し、キャッシュアクセスモード切替信号を「Ｌ」レベルに設定する。この場合、キャッシュメモリ１００内のＴＡＧメモリ１およりＤＡＴＡメモリ４はいずれも動作しない。
【００７９】
分岐・プリフェッチ判定部１９は、分岐要求信号を受け取ったときには、当該信号とともに受け取った分岐先アドレスの下位２ビットの値を調べ、その値が「ＨＨ」のときには、プリフェッチモードフラグ２０を「Ｈ」にする。そして、分岐・プリフェッチ判定部は、第１の実施形態と同様に、タグイネーブル信号を「Ｈ」レベルに設定し、キャッシュアクセスモード切替信号を「Ｈ」レベルに設定する。この場合、キャッシュメモリ１００は、１サイクルアクセスモードで動作し、キャッシュメモリ１００から命令が１サイクルで出力される。
【００８０】
分岐・プリフェッチ判定部１９は、プリフェッチ要求信号を受け取ったときには、プリフェッチモードフラグの値を調べる。
【００８１】
分岐・プリフェッチ判定部１９は、プリフェッチモードフラグが「Ｌ」のときには（すなわち、分岐命令が実行されたが、分岐先アドレスの下位２ビットが「ＨＨ」でないとき、または分岐命令が実行されていないときには）、第１の実施形態と同様に、タグイネーブル信号を「Ｈ」レベルに設定し、キャッシュアクセスモード切替信号を「Ｌ」レベルに設定する。この場合、キャッシュメモリ１００は、２サイクルアクセスモードで動作し、キャッシュメモリ１００から命令が２サイクルで出力される。
【００８２】
分岐・プリフェッチ判定部１９は、プリフェッチモードフラグが「Ｈ」のときには、（すなわち、分岐命令が実行され、分岐先アドレスの下位２ビットが「ＨＨ」のときには）、タグイネーブル信号を「Ｈ」レベルに設定し、キャッシュアクセスモード切替信号を「Ｈ」レベルに設定する。この場合、キャッシュメモリ１００は、１サイクルアクセスモードで動作し、キャッシュメモリ１００から命令が１サイクルで出力される。１サイクルアクセスモードで動作させることとしたのは、分岐先アドレスの下位２ビットが「ＨＨ」の場合には、その分岐先アドレスの命令は、キュー内で最後の命令となる。その命令を実行後には、後続する命令は、キュー内に存在しないので、キャッシュメモリ１００から後続する命令をフェッチしなければならないからである。
【００８３】
さらに、分岐・プリフェッチ判定部１９は、キャッシュモードアクセス信号を出力した後、プリフェッチモードフラグを初期状態である「Ｌ」にもどす。
【００８４】
（分岐先アドレスの下位２ビットの値が「ＨＨ］のときの動作）
図１０は、分岐先アドレスが「ＨＨ」のときのキャッシュメモリ１００内の命令の読出しおよび実行手順を示す。図１１は、命令キュー１８の状態の遷移を示す。
【００８５】
図１０の（１）に示すように、ＣＰＵ１３０で、分岐命令が実行された後、図１０の（２）に示すようにパイプラインがフラッシュされるとともに、命令キュー１８がフラッシュされる。図１１の（１）は、このときの命令キュー１８の状態を示す。
【００８６】
ＣＰＵ１３０は、分岐要求信号および下位２ビットの値が「ＨＨ」である分岐先アドレスを分岐・プリフェッチ判定部１９に出力する。分岐・プリフェッチ判定部１９は、分岐先アドレスの下位２ビットの値が「ＨＨ」なので、プリフェッチモードフラグ２０を「Ｈ」にする。分岐・プリフェッチ判定部１９は、タグイネーブル信号を「Ｈ」レベルに設定し、キャッシュアクセスモード切替信号を「Ｈ」レベルに設定する。これにより、キャッシュメモリ１００は、図１０の（３）に示すように、１サイクルアクセスモードで動作し、キャッシュメモリ１００から命令が１サイクルで出力される。図１１の（２）は、このときの命令キュー１８の状態を示す。
【００８７】
ＣＰＵ１３０は、図１０の（４）に示すように、キュー０内の分岐先アドレスの命令、すなわち、キュー０内の最後の命令であるアドレスの下位２ビットが「ＨＨ」の命令を読み出す。図１１の（３）は、キュー０内の最後の命令の読出し前の命令キュー１８の状態を示し、図１１の（４）は、キュー０内の最後の命令の読出し後の命令キュー１８の状態を示す。
【００８８】
キュー制御部３１は、キュー０内の最後の命令であるアドレスの下位２ビットが「ＨＨ」である命令が出力されるときに、分岐・プリフェッチ判定部１９へプリフェッチ要求信号を出力する。
【００８９】
分岐・プリフェッチ判定部１９は、設定されているプリフェッチモードフラグが「Ｈ」なので、タグイネーブル信号を「Ｈ」レベルに設定し、キャッシュアクセスモード切替信号を「Ｈ」レベルに設定する。これにより、キャッシュメモリ１００は、図１０の（５）に示すように、１サイクルアクセスモードで動作し、キャッシュメモリ１００から命令が１サイクルで出力される。図１１の（５）は、このときの命令キュー１８の状態を示す。
【００９０】
以上のように、本実施の形態に係るキャッシュシステムによれば、ＣＰＵが複数の命令をパイプライン処理する場合に、分岐命令に含まれる分岐先アドレスの下位２ビットが「ＨＨ」の場合には、分岐命令の実行後、分岐先命令がキュー内の最後の命令となるように格納されるので、その分岐先命令がキューから出力された後、キャッシュメモリ１００を２サイクルアクセスモードで動作させると、パイプラインのストールが発生するので、キャッシュメモリ１００を１サイクルアクセスモードで動作させることで、命令の実行待ち時間を短縮することができる。
【００９１】
＜第３の実施形態＞
図１２は、本実施の形態に係るキャッシュシステムの構成を示す。同図を参照して、キャッシュシステム４００は、命令キャッシュメモリ９８と、データキャッシュメモリ９９と、ＣＰＵ１４０と、レジスタ番号一致判定部２１とを含む。本実施の形態のキャッシュシステムは、図５に示す第１の実施形態のキャッシュシステムと共通する部分を有する。図１２の構成要素のうち、図５と同一の構成要素には、図５の構成要素と同一の符号を付す。以下、相違する部分について説明する。
【００９２】
本実施の形態では、キャッシュメモリは、命令を格納する命令キャッシュメモリ９８と、データを格納するデータキャッシュメモリ９９に分けられている。
【００９３】
ＣＰＵ１４０は、ＤＥＣステージで命令をデコードしたときに、その命令がレジスタにデータを格納するロード命令であるときに、その命令に含まれるレジスタ番号を示す格納レジスタ番号信号をレジスタ番号一致判定部２１へ出力する。
【００９４】
ＣＰＵ１４０は、ロード命令に後続する（直後に限定されない）命令をＤＥＣステージでデコードしたときに、その命令がレジスタ内のデータを参照する参照命令であるときに、その命令に含まれるレジスタ番号を示す参照レジスタ番号信号をレジスタ番号一致判定部２１へ出力する。
【００９５】
レジスタ番号一致判定部２１は、ＣＰＵ１４０より送られた格納レジスタ番号と参照レジスタ番号が一致する場合には、キャッシュアクセスモード切替信号を「Ｈ」にする。
【００９６】
レジスタ番号一致判定部２１は、格納レジスタ番号と参照レジスタ番号が不一致の場合には、キュッシュアクセスモード切替信号を「Ｌ」にする。
【００９７】
（レジスタ番号が一致するときの動作）
図１３は、レジスタ番号が一致するときに、命令キャッシュメモリ９８内の命令およびデータキャッシュメモリ９９内のオペランドデータの読出しおよび実行手順を示す。
【００９８】
同図を参照して、まず、（１）に示すように、ＣＰＵ１４０でロード命令がデコードされたときには、格納レジスタ番号がレジスタ番号一致判定部２１に送られる。次に、（２）に示すように、ＣＰＵ１４０で参照命令がデコードされたときには、参照レジスタ番号がレジスタ番号一致判定部２１に送られる。格納レジスタ番号と参照レジスタ番号が一致するので、「Ｈ」レベルのキャッシュアクセスモード切替信号がデータキャッシュメモリ９９に送られる。データキャッシュメモリ９９は、（３）に示すように、１サイクルアクセスモードで動作し、データキャッシュメモリ９９からオペランドデータが１サイクルで出力される。
【００９９】
（レジスタ番号が不一致のときの動作）
図１４は、レジスタ番号が不一致のときに、命令キャッシュメモリ９８内の命令およびデータキャッシュメモリ９９内のオペランドデータの読出しおよび実行手順を示す。
【０１００】
同図を参照して、まず、（１）に示すように、ＣＰＵ１４０でロード命令がデコードされたときには、格納レジスタ番号がレジスタ番号一致判定部２１に送られる。次に、（２）に示すように、ＣＰＵ１４０で参照命令がデコードされたときには、参照レジスタ番号がレジスタ番号一致判定部２１に送られる。格納レジスタ番号と参照レジスタ番号が不一致なので、「Ｌ」レベルのキャッシュアクセスモード切替信号がデータキャッシュメモリ９９に送られる。データキャッシュメモリ９９は、（３）に示すように、２サイクルアクセスモードで動作し、データキャッシュメモリ９９からオペランドデータが２サイクルで出力される。
【０１０１】
以上のように、本実施の形態に係るキャッシュシステムによれば、レジスタにデータを格納する命令に含まれる格納レジスタ番号と、ロード命令に後続する命令で、レジスタ内のデータを参照する命令に含まれる参照レジスタ番号が一致するときには、データキャッシュメモリ９９を２サイクルアクセスモードで動作させると（１サイクルアクセスモードで動作させても）、パイプラインのストールが発生するので、１サイクルアクセスモードで動作させることにより、命令の実行待ち時間を短縮することができる。
【０１０２】
一方、格納レジスタ番号と参照レジスタ番号が不一致のときには、２サイクルアクセスモードで動作させても、パイプラインのストールは発生しないので、データキャッシュメモリ９９を２サイクルアクセスモードで動作させることにより、低消費電力で動作させることができる。
【０１０３】
＜第４の実施形態＞
図１５は、本実施の形態に係るキャッシュシステムの構成を示す。同図を参照して、キャッシュシステム５００は、キャッシュメモリ１００と、ＣＰＵ１５０と、クロック周波数設定部５１と、クロック周波数判定部２２とを含む。本実施の形態のキャッシュシステムは、図５に示す第１の実施形態のキャッシュシステムと共通する部分を有する。図１５の構成要素のうち、図５と同一の構成要素には、図５の構成要素と同一の符号を付す。以下、相違する部分について説明する。
【０１０４】
本実施の形態では、キャッシュメモリは、命令を格納する命令キャッシュメモリ９８と、データを格納するデータキャッシュメモリ９９に分けられている。
【０１０５】
クロック周波数設定部５１は、設定レジスタ５２に高速または低速のクロック周波数を設定する。
【０１０６】
ＣＰＵ１５０は、クロックギア機能を有し、クロック周波数設定レジスタに保持されている設定クロック周波数で動作する。
【０１０７】
クロック周波数判定部２２は、設定レジスタ５２から出力されるクロック周波数設定値信号が高速のクロック周波数を示している場合には、キャッシュアクセスモード切替信号を「Ｈ」レベルに設定する。これにより、命令キャッシュメモリ９８およびデータキャッシュメモリ９９は、１サイクルアクセスモードで動作する。
【０１０８】
クロック周波数判定部２２は、設定レジスタ５２から出力されるクロック周波数設定値信号が低速のクロック周波数を示している場合には、キャッシュアクセスモード切替信号を「Ｌ」レベルに設定する。これにより、命令キャッシュメモリ９８およびデータキャッシュメモリ９９は、２サイクルアクセスモードで動作する。
【０１０９】
（クロック周波数が高速時の動作）
図１６は、ＣＰＵのクロック周波数が高速の場合の命令キャッシュメモリ９８内の命令の読出しおよび実行手順を示す。
【０１１０】
同図を参照して、命令キャッシュメモリ９８は、（１）に示すように、１サイクルアクセスモードで動作し、命令キャッシュメモリ９８から命令が１サイクルで出力される。
【０１１１】
図１７は、ＣＰＵのクロック周波数が高速の場合の命令キャッシュメモリ９８内の命令およびデータキャッシュメモリ９９内のオペランドデータの読出しおよび実行手順を示す。
【０１１２】
同図を参照して、命令キャッシュメモリ９８は、（１）に示すように、１サイクルアクセスモードで動作し、命令キャッシュメモリ９８から命令が１サイクルで出力される。また、データキャッシュメモリ９９は、（２）に示すように、１サイクルアクセスモードで動作し、データキャッシュメモリ９９からオペランドデータが１サイクルで出力される。
【０１１３】
（クロック周波数が低速時の動作）
図１８は、ＣＰＵのクロック周波数が低速の場合の命令キャッシュメモリ９８内の命令の読出しの実行手順を示す。
【０１１４】
同図を参照して、命令キャッシュメモリ９８は、（１）に示すように、２サイクルアクセスモードで動作し、命令キャッシュメモリ９８から命令が２サイクルで出力される。
【０１１５】
図１９は、ＣＰＵのクロック周波数が低速の場合の命令キャッシュメモリ９８内の命令およびデータキャッシュメモリ９９内のオペランドデータの読出しおよび実行手順を示す。
【０１１６】
同図を参照して、命令キャッシュメモリ９８は、（１）に示すように、２サイクルアクセスモードで動作し、命令キャッシュメモリ９８から命令が２サイクルで出力される。また、データキャッシュメモリ９９は、（２）に示すように、２サイクルアクセスモードで動作し、データキャッシュメモリ９９からオペランドデータが２サイクルで出力される。
【０１１７】
以上のように、本実施の形態に係るキャッシュシステムによれば、ＣＰＵが高速のクロック周波数で動作しているときには、消費電力よりもデータの高速処理を優先しているので、１サイクルアクセスモードで動作させることで、キャッシュメモリ内のデータを高速に処理することができる。
【０１１８】
一方、ＣＰＵが低速のクロック周波数で動作しているときには、データの高速処理よりも低消費電力を優先しているので、２サイクルアクセスモードで動作させることで、キャッシュメモリを低消費電力で動作させることができる。
（変形例）
本発明は、上記実施の形態に限定されるものではなく、以下の変形例も当然ながら包含する。
【０１１９】
（１）第３の実施形態では、分岐先アドレスの命令であるキュー０内の最後の命令がキュー０から出力された後、プリフェッチ要求信号が発生し、この信号をトリガとして、プリフェッチが行なわれたが、これに限定するものではない。
【０１２０】
図２０は、分岐先アドレスが「ＨＨ」のときのキャッシュメモリ１００内の命令の読出しおよび実行手順の変形例を示す。
【０１２１】
同図において、キュー０内の分岐命令を処理する手順と、キュー０へ複数の命令をフェッチして、分岐先アドレスの命令であるキュー０内の最後の命令を処理する手順は、図１０に示したものと同様である。
【０１２２】
この変形例では、同図の（３）に示すように、分岐命令の実行をトリガにして、分岐命令の実行のサイクルから２サイクル後に、プリフェッチ要求信号を発生させる。これは、キュー０から分岐先アドレスの命令を読み出すステージと、プリフェッチした命令をキュー０に書込むステージが重複せず、命令が消失することがないからである。これによって、パイプラインの処理待ち時間を短縮することができる。
【０１２３】
（２）第３の実施形態では、分岐先アドレスの下位２ビットが「ＨＨ」の場合に、分岐先アドレスの命令がキュー０から出力された後、分岐先アドレスの命令に後続する命令がキャッシュメモリからキュー０に出力されたが、これに限定するものではない。
【０１２４】
図２１は、分岐先アドレスが「ＨＨ」のときのキャッシュメモリ１００内の命令の読出しおよび実行手順の変形例を示す。
【０１２５】
同図において、キュー０内の分岐命令を処理する手順と、キュー０へ複数の命令をフェッチして、分岐先アドレスの命令であるキュー０内の最後の命令を処理する手順は、図１０に示したものと同様である。
【０１２６】
この変形例では、同図の（３）に示すように、分岐命令の実行をトリガにして、分岐命令の実行のサイクルから１サイクル後に、キュー１へのプリフェッチ要求信号を発生させる。これは、キュー１は、分岐命令実行後フラッシュされており空の状態にあるので、分岐先アドレスの命令に後続する命令をキャッシュメモリからキュー１に出力させたとしても、命令が消失することがないからである。これによって、パイプラインのストールを防止することができる。
【０１２７】
（３）第４の実施形態では、ＣＰＵは、高速と低速の２種類のクロック周波数を切替えて動作するとしたが、これに限定するものではない。ＣＰＵは、３種類以上のクロック周波数を切替えて動作するものであってもよい。この場合、ＣＰＵが所定値以上のクロック周波数で動作する場合に、キャッシュメモリを１サイクルアクセスモードで動作させ、ＣＰＵが所定値未満のクロック周波数で動作する場合に、２サイクルアクセスモードで動作させるものとしてもよい。
【０１２８】
たとえば、ＣＰＵが、３種類のクロック周波数を切替えて動作する場合は、ＣＰＵが高速と中速で動作するときには、キャッシュメモリを１サイクルアクセスモードで動作させ、ＣＰＵが低速で動作するときには、キャッシュメモリを２サイクルアクセスモードで動作させるものとしてもよい。あるいは、ＣＰＵが高速で動作するときには、キャッシュメモリを１サイクルアクセスモードで動作させ、中速と低速で動作するときには、キャッシュメモリを２サイクルアクセスモードで動作させるものとしてもよい。
【０１２９】
（４）本発明の実施形態では、命令キュー１８は、キュー０とキュー１から構成されるものとして説明したが、これに限定するものではなく、３個以上のキューで構成されるものとしてもよい。
【０１３０】
（５）本発明の実施形態では、キャッシュメモリから出力された命令は、一旦命令キュー１８に格納されるものとしたが、プリフェッチを行なわない場合には、キャッシュメモリ１００から出力された命令は、直接ＣＰＵへ取りこまれるものとしてもよい。
【０１３１】
（６）第１および第２の実施形態では、キャッシュメモリ１００は、４個の命令を同時に出力し、各キューは、最大４個の命令を保持するものとしたが、これに限定するものではない。
【０１３２】
第１の実施形態では、キャッシュメモリ１００は、３個の命令を同時に出力し、各キューは、最大３個の命令を保持するものとしてもよい。この場合でも、プリフェッチ時にキャッシュメモリ１００を１サイクルアクセスモードで動作させることができる。
【０１３３】
また、第２の実施形態では、キャッシュメモリは、２個以上の命令を同時に出力し、各キューは、最大２個の命令を保持するものとしてもよい。この場合、分岐先アドレスを構成する所定のビットの値に基づいて、分岐先アドレスの命令がキューに格納されたときに、最後の命令となるか否かを判定するものとすればよい。
【０１３４】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【０１３５】
【発明の効果】
この発明に係わるキャッシュシステムによれば、各アクセスモードで動作した場合のパイプラインのストールの有無に基づいて、キャッシュメモリに対して、第１のアクセスモードで動作するように指示する第１のアクセスモード信号、または第２のアクセスモードで動作するように指示する第２のアクセスモード信号のいずれかを出力するアクセスモード制御部を備えるので、パイプラインの処理待ちを防止しまたは処理待ち時間を短縮する条件を満たした上で、可能な限り低消費電力で動作するように適切にアクセスモードを選択することができる。
【０１３６】
また、この発明に係るキャッシュメモリ制御装置は、キャッシュメモリ内のデータを処理するプロセッサであって、複数種類のクロック周波数のうちいずれかの周波数を選択して動作するプロセッサが所定値以上のクロック周波数で動作しているときに、第１のアクセスモード信号を出力し、所定値未満のクロック周波数で動作しているときに、第２のアクセスモード信号を出力するアクセスモード制御部を備えるので、選択されている現在のプロセッサのクロック周波数に応じて、適切にアクセスモードを選択することができる。
【図面の簡単な説明】
【図１】キャッシュメモリの構成を示す図である。
【図２】キャッシュアクセスモード切替部９の詳細な構成を示す図である。
【図３】２サイクルアクセスモードでのキャッシュメモリ１００の動作を示すタイミングチャートである。
【図４】１サイクルアクセスモードでのキャッシュメモリ１００の動作を示すタイミングチャートである。
【図５】本発明の実施の形態に係るキャッシュシステムの構成を示す図である。
【図６】分岐およびプリフェッチ動作以外の動作時における、キュッシュメモリ１００内の命令の読出しおよび実行手順を示す図である。
【図７】分岐時におけるキャッシュメモリ１００内の命令の読出しおよび実行手順を示す図である。
【図８】プリフェッチときにおけるキャッシュメモリ１００内の命令の読出しおよび実行手順を示す図である。
【図９】本発明の実施の形態に係るキャッシュシステムの構成を示す図である。
【図１０】分岐先アドレスが「ＨＨ」のときのキャッシュメモリ１００内の命令の読出しおよび実行手順を示す図である。
【図１１】命令キュー１８の状態の遷移を示す図である。
【図１２】本発明の実施の形態に係るキャッシュシステムの構成を示す図である。
【図１３】レジスタ番号が一致するときに、キャッシュメモリ１００内の命令およびオペランドデータの読出しおよび実行手順を示す図である。
【図１４】レジスタ番号が不一致のときに、キャッシュメモリ１００内の命令およびオペランドデータの読出しおよび実行手順を示す図である。
【図１５】本発明の実施の形態に係るキャッシュシステムの構成を示す図である。
【図１６】ＣＰＵのクロック周波数が高速の場合の命令キャッシュメモリ９８内の命令の読出しおよび実行手順を示す図である。
【図１７】ＣＰＵのクロック周波数が高速の場合の命令キャッシュメモリ９８内の命令およびデータキャッシュメモリ９９内のオペランドデータの読出しおよび実行手順を示す図である。
【図１８】ＣＰＵのクロック周波数が低速の場合の命令キャッシュメモリ９８内の命令の読出しの実行手順を示す図である。
【図１９】ＣＰＵのクロック周波数が低速の場合の命令キャッシュメモリ９８内の命令およびデータキャッシュメモリ９９内のオペランドデータの読出しおよび実行手順を示す図である。
【図２０】分岐先アドレスが「ＨＨ」のときのキャッシュメモリ１００内の命令の読出しおよび実行手順の変形例を示す図である。
【図２１】分岐先アドレスが「ＨＨ」のときのキャッシュメモリ１００内の命令の読出しおよび実行手順の変形例を示す図である。
【符号の説明】
１  ＴＡＧメモリ、３  ミス判定部、４  ＤＡＴＡメモリ、５，９４，９３０，９３１  セレクタ、６，９１０，９１１  ラッチ、９  キャッシュアクセスモード切替部、１８  命令キュー、１７，１９  分岐・プリフェッチ判定部、９２０，９２１  比較器、２０  プリフェッチモードフラグ、２１  レジスタ番号一致判定部、２２  クロック周波数判定部、３１  キュー制御部、５１  クロック周波数設定部、５２  設定レジスタ、１００  キャッシュメモリ、１２０，１３０，１４０，１５０  ＣＰＵ、１２１，１３１，１４１，１５１  レジスタ、２００，３００，４００，５００  キャッシュシステム。
【図１】
2004171177.tif 000003
【図２】
2004171177.tif 000004
【図３】
2004171177.tif 000005
【図４】
2004171177.tif 000006
【図５】
2004171177.tif 000007
【図６】
2004171177.tif 000008
【図７】
2004171177.tif 000009
【図８】
2004171177.tif 000010
【図９】
2004171177.tif 000011
【図１０】
2004171177.tif 000012
【図１１】
2004171177.tif 000013
【図１２】
2004171177.tif 000014
【図１３】
2004171177.tif 000015
【図１４】
2004171177.tif 000016
【図１５】
2004171177.tif 000017
【図１６】
2004171177.tif 000018
【図１７】
2004171177.tif 000019
【図１８】
2004171177.tif 000020
【図１９】
2004171177.tif 000021
【図２０】
2004171177.tif 000022
【図２１】
2004171177.tif 000023