(57)【要約】【課題】アドレスマッチングを用いないＷＡＹ予測により、ＷＡＹ予測の失敗を減らし、システムの誤動作を防ぐことができるキャッシュメモリシステム及びキャッシュメモリのＷＡＹ予測の制御方法を提供すること。【解決手段】本発明にかかるキャッシュ装置１は、キャッシュメモリ１４へアクセスした命令におけるＷＡＹの選択結果であるＷＡＹ情報を格納するＷＡＹ情報バッファ７９と、一連の命令群が繰り返し実行されている間に、当該命令群におけるＷＡＹ情報をＷＡＹ情報バッファ７９へ格納するための格納処理及びＷＡＹ情報バッファ７９からＷＡＹ情報を読み出すための読み出し処理を制御する制御回路８０と、を備える。【選択図】図１
2011065503.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリへアクセスした命令におけるＷＡＹの選択結果であるＷＡＹ情報を格納するＷＡＹ情報記憶手段と、
一連の命令群が繰り返し実行されている間に、当該命令群における前記ＷＡＹ情報を前記ＷＡＹ情報記憶手段へ格納するための格納処理及び前記ＷＡＹ情報記憶手段から前記ＷＡＹ情報を読み出すための読み出し処理を制御する制御手段と、
を備えるキャッシュシステム。
【請求項２】
前記制御手段は、入力される複数の命令から、前記命令群が繰り返し実行されていることを検出し、当該検出した場合に、前記格納処理及び前記読み出し処理を制御することを特徴とする請求項１に記載のキャッシュシステム。
【請求項３】
前記制御手段は、前記命令群が繰り返し実行されていることを検出した場合に、当該命令群における前記ＷＡＹ情報についての前記格納処理を開始し、前記格納処理が開始した後、当該命令群が再度実行されることを検出した場合に、前記読み出し処理を開始することを特徴とする請求項２に記載のキャッシュシステム。
【請求項４】
前記制御手段は、前記検出した命令群が実行された直後に同一の命令群が実行されることを検出した場合に、前記読み出し処理を開始することを特徴とする請求項３に記載のキャッシュシステム。
【請求項５】
前記制御手段は、同一の分岐命令が定期的に実行されると判定した場合に、前記命令群が繰り返し実行されていると検出することを特徴とする請求項３又は４に記載のキャッシュシステム。
【請求項６】
前記制御手段は、前記検出された命令群に含まれる分岐先アドレスと、前記読み出し処理を開始した後の命令群に含まれる分岐先アドレスとが一致しない場合に、当該読み出し処理を終了することを特徴とする請求項３乃至５のいずれか１項に記載のキャッシュシステム。
【請求項７】
前記制御手段は、前記命令群に属する各命令の前記ＷＡＹ情報を、前記各命令が実行される実行順序に従って前記ＷＡＹ情報記憶手段へ格納するように前記格納処理を制御し、当該格納されたＷＡＹ情報を、前記ＷＡＹ情報記憶手段に格納された格納順序に従って前記ＷＡＹ情報記憶手段から読み出すように前記読み出し処理を制御することを特徴とする請求項１乃至６のいずれか１項に記載のキャッシュシステム。
【請求項８】
前記制御手段は、
前記入力される複数の命令をデコードし、当該命令が分岐命令か否か判定する分岐命令判定回路と、
前回実行された分岐命令のアドレスを保持する分岐命令アドレス保持回路と、
当該分岐命令の分岐先のアドレスを保持する分岐先アドレス保持回路と、
１命令実行毎にカウントアップし、分岐命令と判定された場合にリセットされる命令カウンタと、
前記繰り返し実行される複数の命令のループ制御を行なうループカウンタと、
を有することを特徴とする請求項１乃至７のいずれか１項に記載のキャッシュシステム。
【請求項９】
キャッシュメモリと、
当該キャッシュメモリへアクセスした命令におけるＷＡＹの選択結果であるＷＡＹ情報を格納するＷＡＹ情報バッファと、
前記ＷＡＹ情報バッファの動作を制御する制御回路と、
を有するキャッシュ装置における前記キャッシュメモリのＷＡＹ予測の制御方法であって、
前記制御回路が、
一連の命令群が繰り返し実行されている間に、当該命令群における前記ＷＡＹ情報を前記ＷＡＹ情報バッファへ格納するステップと、
前記命令群が繰り返し実行されている間に、前記ＷＡＹ情報バッファから前記ＷＡＹ情報を読み出すステップと、
を実行することを特徴とする制御方法。
【請求項１０】
前記制御回路が、
入力される複数の命令から、前記命令群が繰り返し実行されているか否かを検出する第１の検出ステップと、
前記第１の検出ステップにより、前記命令群が繰り返し実行されていると検出された場合に、当該命令群が再度実行されるか否かを検出する第２の検出ステップと、をさらに実行し、
前記格納するステップは、前記第１の検出ステップにより前記命令群が繰り返し実行されていると検出された場合に、当該検出した命令群における前記ＷＡＹ情報についての前記ＷＡＹ情報バッファへの格納処理を開始し、
前記読み出すステップは、前記第２の検出ステップにより、当該命令群が再度実行されることを検出した場合に、前記ＷＡＹ情報バッファからの読み出し処理を開始することを特徴とする請求項９に記載の制御方法。
【請求項１１】
前記第２の検出ステップは、当該検出した命令群が実行された直後に同一の命令群が実行されるか否かを検出し、
前記読み出すステップは、前記第２の検出するステップにより当該検出した命令群が実行された直後に同一の命令群が実行されることを検出した場合に、前記読み出し処理を開始することを特徴とする請求項１０に記載の制御方法。
【請求項１２】
前記第１及び第２の検出ステップは、同一の分岐命令が定期的に実行されるか否かを判定することにより、前記命令群が繰り返し実行されているか否かを検出することを特徴とする請求項１０又は１１に記載の制御方法。
【請求項１３】
前記制御回路が、前記検出された命令群に含まれる分岐先アドレスと、前記読み出し処理を開始した後の命令群に含まれる分岐先アドレスとが一致するか否かを判定する判定ステップをさらに実行し、
前記読み出すステップは、前記判定ステップにより一致しないと判定された場合に、前記読み出し処理を終了することを特徴とする請求項１１又は１２に記載の制御方法。
【請求項１４】
前記格納するステップは、前記命令群に属する各命令の前記ＷＡＹ情報を、前記各命令が実行される実行順序に従って前記ＷＡＹ情報バッファへ格納し、
前記読み出すステップは、当該格納されたＷＡＹ情報を、前記ＷＡＹ情報バッファに格納された格納順序に従って前記ＷＡＹ情報バッファから読み出すことを特徴とする請求項９乃至１３のいずれか１項に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリシステム及びキャッシュメモリのＷＡＹ予測の制御方法に関し、特に、ＷＡＹ予測を行うキャッシュメモリシステム及びキャッシュメモリのＷＡＹ予測の制御方法に関する。
【背景技術】
【０００２】
近年、半導体装置の動作性能の向上を図るために、キャッシュメモリを有するキャッシュ装置を搭載した半導体装置が増えている。ここで、キャッシュ装置とは、プロセッサからのメモリアクセス要求に対して、キャッシュメモリを介してメインメモリへアクセスを行ういわゆるキャッシュアクセスを行うものである。しかし、キャッシュアクセスの際は、キャッシュメモリに含まれる複数のタグメモリやデータメモリへ同時にアクセスが行われるため、キャッシュメモリ内の複数のＲＡＭ（Random Access Memory）へのアクセスの回数が増加する。そのため、半導体装置の消費電力も増大する。そこで、発熱等の問題から低消費電力化を考慮した半導体装置を設計する必要性が高まっている。特に、低消費電力を実現するために、キャッシュアクセス時にＷＡＹ予測を行うことにより、キャッシュメモリへのアクセス回数を低減する方法が知られている。
【０００３】
例えば、特許文献１には、メモリアドレスバッファと、タグアクセスを無効化（disable）する回路（以下、タグ無効化回路と称す。）と、ＷＡＹアクセスを無効化（disable）する回路（以下、ＷＡＹ無効化回路と称す。）と、キャッシュメモリと、を用いてＷＡＹ予測を行なうことにより、キャッシュアクセスにおける消費電力を削減する装置に関する技術が開示されている。以下では、図７、図８及び図９を用いて、特許文献１の技術について説明する。
【０００４】
図７は、特許文献１にかかるキャッシュ装置の構成を示すブロック図である。システム１０は、プロセッサ１２及びメインメモリ（不図示）を有する。プロセッサ１２は、キャッシュメモリ１４を備える。そして、メインメモリ及びキャッシュメモリ１４は、アドレスバス及びデータバスを用いて互いに結合されている。キャッシュメモリ１４は、２ＷＡＹの連結キャッシュメモリである。キャッシュメモリ１４は、メモリアドレス１８、ＷＡＹ２２、ＷＡＹ２４並びにマルチプレクサ３０、３２及び３４等を備える。メモリアドレス１８は、タグ、セットインデックス（Ｓｅｔ−Ｉｎｄｅｘ）及びオフセットを含む。例えば、図７では、タグは１８ビット、セットインデックスは９ビット及びオフセットは５ビットである。ＷＡＹ２２及び２４は、それぞれタグメモリ及びデータメモリを含む。例えば、図７では、タグメモリは、１８ビットで５１２行、データメモリは、２５６ビットで５１２行である。
【０００５】
一般に、ＷＡＹとは、タグメモリとデータメモリが一固まりになったものであり、キャッシュメモリに複数搭載することで、性能を向上させることができる。
【０００６】
ここで、システム１０におけるキャッシュメモリへの通常のアクセス方法について説明する。まず、メモリアドレス１８に含まれるセットインデックスは、ＷＡＹ２２及び２４の各行に対応している。つまり、キャッシュメモリ１４は、セットインデックスに基づき、対応するＷＡＹ２２及び２４のタグメモリ及びデータメモリを選択することができる。そして、キャッシュメモリ１４は、選択されたＷＡＹ２２及び２４のタグメモリと、メモリアドレス１８のタグとを比較し、ＷＡＹ２２のタグメモリとＷＡＹ２４のタグメモリのいずれがメモリアドレス１８のタグと一致するかを判定する。また、マルチプレクサ３０及び３２は、セットインデックスに基づき選択されたＷＡＹ２２及び２４のデータメモリと、メモリアドレス１８のオフセットから出力対象のデータをマルチプレクサ３４へ出力する。そして、マルチプレクサ３４は、上述したメモリアドレス１８のタグと一致するＷＡＹ２２及び２４のタグメモリのいずれかにより、出力対象のデータを選択して出力する。また、上述したメモリアドレス１８のタグと、ＷＡＹ２２及び２４のタグメモリとのいずれもが一致しない場合、キャッシュミスとなり、当該データを抽出するためにメインメモリが参照される。
【０００７】
このようなアクセス方法では、キャッシュメモリ１４がアクセスされる毎にエネルギが費やされ、電力が消費される。そこで、システム１０では、電力消費を減らすために、ＷＡＹ２２及び２４への冗長なアクセスを減らす方法を実行する。そのため、システム１０は、キャッシュメモリ１４内に、以前にアクセスされたアクセスアドレスを記録するためのメモリアドレスバッファを設けて、ＷＡＹ予測を行う。
【０００８】
図８は、特許文献１にかかるメモリアドレスバッファを用いたＷＡＹ予測の概念を説明するためのブロック図である。メモリアドレスバッファ３８は、２７ビットのアドレス領域と、少なくとも１ビットのＷＡＹを識別する情報、例えば、ＷＡＹ番号とを保持するバッファである。アドレス領域は、ＭＲＵアドレスのメモリアドレス１８の内、タグとセットインデックスの２７ビット分が格納される。また、ＷＡＹ番号は、当該ＭＲＵアドレスがキャッシュアクセスされ、キャッシュヒットした際のＷＡＹの選択結果が格納される。また、説明のため、図７のキャッシュメモリ１４の内、ＷＡＹ２２及び２４のみを図８に示す。そして、ＷＡＹ２２又は２４のタグメモリ及びデータメモリの網掛け領域は、それぞれメモリアドレスバッファ３８の各アドレス領域に対応する行であることを示す。つまり、図８の例では、メモリアドレスバッファ３８のアドレス１、３及び４は、ＷＡＹ２２を示すＷＡＹ番号"０"に対応し、アドレス２は、ＷＡＹ２４を示すＷＡＹ番号"１"に対応する。
【０００９】
続いて、図８に基づき、ＷＡＹ予測の動作例を説明する。まず、あるアドレスについてキャッシュメモリ１４へアクセスし、キャッシュヒットした場合、キャッシュメモリ１４は、当該キャッシュヒットしたアドレスとＷＡＹ番号とをメモリアドレスバッファ３８に格納する。例えば、ＷＡＹ２４のアドレス２がキャッシュヒットした場合、キャッシュメモリ１４は、アドレス２を示す情報とＷＡＹ番号として"１"とをメモリアドレスバッファ３８に格納する。その後、再度、アドレス２についてキャッシュアクセスされる場合、キャッシュメモリ１４は、メモリアドレスバッファ３８を参照し、アドレス２が以前にキャッシュアクセスされたことを確認する。つまり、メインメモリへアクセスせずとも、ＷＡＹ２２及び２４にキャッシュ済みであることがわかる。さらに、キャッシュメモリ１４は、メモリアドレスバッファ３８からアドレス２に対応して格納されているＷＡＹ番号により、ＷＡＹ２４にキャッシュ済みであることがわかる。すなわち、キャッシュメモリ１４は、キャッシュアクセス対象のアドレスからキャッシュされているＷＡＹを予測することができる。また、メモリアドレスバッファ３８に格納される値は、新たなアドレスについてキャッシュアクセスされる度に更新される。
【００１０】
図９は、特許文献１にかかるＷＡＹ予測装置の例を示すブロック図である。図９のＷＡＹ予測装置は、付加的な回路５０と、オリジナル回路６０と、キャッシュメモリ１４とを備える。尚、キャッシュメモリ１４は、図７と同様であるため、説明を省略する。
【００１１】
オリジナル回路６０は、基礎のアドレスであるベースアドレス６２とベースアドレス６２からの変位成分（即ち、変位アドレス又は変位の値）である変位６４を入力し、３２ビットＡＬＵ６３によりターゲットアドレス６５を生成し、キャッシュメモリ１４へアクセスする。ここで、オリジナル回路６０におけるターゲットアドレス６５を生成する処理をアドレス生成ステージと呼ぶ。
【００１２】
また、付加的な回路５０は、メモリアドレスバッファ３８と、タグ無効化回路５１と、ＷＡＹ無効化回路５２とを備える。メモリアドレスバッファ３８は、ＷＡＹ番号３９を含む。そして、付加的な回路５０は、アドレス生成ステージの間に、ベースアドレス６２と変位６４とを入力し、メモリアドレスバッファ３８においてアドレスがヒットするか否かを判定し、結果をタグ無効化回路５１及びＷＡＹ無効化回路５２によりキャッシュメモリ１４を制御する。タグ無効化回路５１は、メモリアドレスバッファ３８において、アドレスヒットした場合に、キャッシュメモリ１４におけるタグメモリを無効化する。また、ＷＡＹ無効化回路５２は、メモリアドレスバッファ３８において、アドレスヒットした場合に、キャッシュメモリ１４におけるデータメモリを無効化する。
【００１３】
このように、図９では、メモリアドレスバッファ３８においてヒットした場合に、無駄なタグ及びＷＡＹアクセスを省略することができる。
【００１４】
尚、上述した方法は、ターゲットアドレスがベースアドレスと変位の和であり、通常は少ない数の値をとるという仮定に基づいている。更に、その値は典型的には小さい。具体的には、多くの変位値は、２＾１４より小さい。そのため、タグの値は、アドレスを生成せずに容易に計算できる。これは、ベースアドレスの上位１８ビット、変位の符号拡張及び１４ビット加算器のキャリービットを検査することで実行できる。そして、加算器は、ベースアドレスの下位１４ビットと変位を加算する。従って、付加される回路の遅延は、１４ビット加算器の遅延とセットインデックステーブルにアクセスする遅延との和になる。一般に、この遅延は、アドレスを計算するのに使用される３２ビット加算器の遅延よりも小さい。
【００１５】
また、特許文献２には、主アドレスレジスタと副アドレスレジスタとラッチ回路とコンパレータと制御回路によりＷＡＹ予測を行うキャッシュメモリに関する技術が開示されている。特に、特許文献２にかかるキャッシュメモリは、直前に実行されたアドレスを副アドレスレジスタに保持する。そして、コンパレータは、主アドレスレジスタと副アドレスレジスタとに保持されたアドレスを比較する。そして、比較結果に応じてラッチ回路に保持された複数のデータのいずれかを選択し、キャッシュのヒットデータとして出力する。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開２００６−１２０１６３号公報
【特許文献２】特開２００６−３４３８０３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１７】
しかしながら、特許文献１には、キャッシュ装置を搭載したシステムでＷＡＹ予測が失敗した場合にプログラムが暴走し、システムが誤作動して大きな問題を引き起こす可能性があるという課題がある。
【００１８】
特許文献１は、ベースアドレス６２と変位６４との下位１４ビットのみを使用して簡易にアドレスを算出し、算出したアドレスとメモリアドレスバッファ３８に格納されたアドレスとを比較することによりＷＡＹ予測を行う。そのため、アドレス計算において、１５ビット目への桁上がりが発生した場合、正しいアドレス計算を行えない。そして、誤ったアドレスがメモリアドレスバッファ３８内のアドレスと一致してしまった場合にシステムが誤りを検出できずに、誤ったキャッシュデータで処理を行い、システムが誤動作してしまう。尚、特許文献１において、アドレスの算出に下位１４ビットのみを使用している理由は、３２ビットの全てを用いると、１サイクル以内にメモリアドレスバッファ３８との比較処理を完了できないためである。
【００１９】
また、特許文献２は、副アドレスレジスタが保持するアドレスが直前のアクセスのアドレスのみである。そのため、十分なＷＡＹ予測を行うことができない。
【課題を解決するための手段】
【００２０】
本発明の第１の態様にかかるキャッシュシステムは、キャッシュメモリへアクセスした命令におけるＷＡＹの選択結果であるＷＡＹ情報を格納するＷＡＹ情報記憶手段と、一連の命令群が繰り返し実行されている間に、当該命令群における前記ＷＡＹ情報を前記ＷＡＹ情報記憶手段へ格納するための格納処理及び前記ＷＡＹ情報記憶手段から前記ＷＡＹ情報を読み出すための読み出し処理を制御する制御手段と、を備える。
【００２１】
本発明の第２の態様にかかるキャッシュメモリのＷＡＹ予測の制御方法は、キャッシュメモリと、当該キャッシュメモリへアクセスした命令におけるＷＡＹの選択結果であるＷＡＹ情報を格納するＷＡＹ情報バッファと、前記ＷＡＹ情報バッファの動作を制御する制御回路と、を有するキャッシュ装置における前記キャッシュメモリのＷＡＹ予測の制御方法であって、前記制御回路が、一連の命令群が繰り返し実行されている間に、当該命令群における前記ＷＡＹ情報を前記ＷＡＹ情報バッファへ格納するステップと、前記命令群が繰り返し実行されている間に、前記ＷＡＹ情報バッファから前記ＷＡＹ情報を読み出すステップと、を実行することを特徴とする。
【００２２】
上述したように、本発明の実施の形態１及び２では、ＷＡＹ予測にアドレスのマッチングを行うのではなく、連続して繰り返される命令群におけるＷＡＹ情報のみを格納する。そのため、読み出されるＷＡＹ情報は、当該命令群のもののみとなる。よって、命令群が連続して繰り返し実行される間は、確実にＷＡＹ情報の予測を行うことができる。
【発明の効果】
【００２３】
本発明により、ＷＡＹ予測の失敗を減らし、システムの誤動作を防ぐことができるキャッシュメモリシステム及びキャッシュメモリのＷＡＹ予測の制御方法を提供することができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の実施の形態１にかかるキャッシュ装置の構成を示すブロック図である。
【図２】本発明の実施の形態１にかかる制御回路の構成を示すブロック図である。
【図３】本発明の実施の形態１にかかるキャッシュアクセスフローチャートの流れを示すフローチャート図である。
【図４】本発明の実施の形態１にかかるイベント待ち状態検出フローチャートの流れを示すフローチャート図である。
【図５】本発明の実施の形態１にかかるキャッシュアクセス開始までのタイミング図である。
【図６】本発明の実施の形態１にかかるイベント待ち状態終了検出のタイミング図である。
【図７】関連技術にかかるキャッシュ装置の構成を示すブロック図である。
【図８】関連技術にかかるメモリアドレスバッファを用いたＷＡＹ予測の概念を説明するためのブロック図である。
【図９】関連技術にかかるＷＡＹ予測装置の例を示すブロック図である。
【発明を実施するための形態】
【００２５】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００２６】
＜発明の実施の形態１＞
図１は、本発明の実施の形態１にかかるキャッシュシステムの一例であるキャッシュ装置１の構成を示すブロック図である。例えば、キャッシュ装置１は、半導体装置等に搭載され、プロセッサ（不図示）等の制御装置と共に用いられるものであるとよい。キャッシュ装置１は、アドレス計算部１００とＷＡＹ情報管理部１０１とキャッシュメモリ１４とキャッシュデータ出力部１０２とを備える。
【００２７】
アドレス計算部１００は、ベースアドレス６２と変位６４と３２ビット加算器７８とを備える。そして、アドレス計算部１００は、キャッシュメモリ１４へアクセスするためのターゲットアドレス１０３を出力する。３２ビット加算器７８は、ベースアドレス６２と変位６４とを入力して、加算処理によりターゲットアドレス１０３を生成する。また、３２ビット加算器７８は、ターゲットアドレス１０３をキャッシュメモリ１４、ＷＡＹ情報管理部１０１、タグ０比較器７１及びタグ１比較器７２に出力する。
【００２８】
ＷＡＹ情報管理部１０１は、ＷＡＹ予測を行う。ＷＡＹ情報管理部１０１は、ＷＡＹ情報バッファ７９と、制御回路８０と、タグアクセス制御回路８１と、データアクセス制御回路８２とを備える。ＷＡＹ情報バッファ７９は、キャッシュメモリ１４へアクセスした命令におけるＷＡＹの選択結果であるＷＡＹ情報を格納する記憶手段である。そして、ＷＡＹ情報バッファ７９は、制御回路８０からの指示に応じて、キャッシュデータ出力部１０２から出力されるＷＡＹ情報１１５及び１１６のいずれかを選択し、選択したＷＡＹ情報の記憶及び読み出しを行う。特に、ＷＡＹ情報バッファ７９は、イベント待ち状態の時のみＷＡＹ情報の記憶及び読み出しを行う。具体的には、ＷＡＹ情報バッファ７９は、制御回路８０からＷＡＹ情報記憶ポインタ１０６、ＷＡＹ情報読み出しポインタ１０７、ＷＡＹ情報記憶許可信号１０８及びＷＡＹ情報読み出し許可信号１０９を入力し、タグ０比較器７１からＷＡＹ情報１１５及びタグ１比較器７２からＷＡＹ情報１１６を入力する。そして、制御回路８０は、ＷＡＹ選択情報１１２をデータアクセス制御回路８２及びセレクタ７３に出力する。
【００２９】
ここで、イベント待ち状態とは、一連の命令群が繰り返し実行されている状態である。例えば、イベント待ち状態は、ポーリングなどの同じ命令ループが繰り返し実行されている状態を指す。また、命令ループは、分岐命令すなわちブランチ命令を基点として繰り返される一定範囲の命令の集合を示す。そして、命令ループの先頭から終端までの実行を１ループと定義する。尚、イベント待ち状態における命令ループ内で実行される命令は、ポーリングに限定されず、任意の命令であって構わない。
【００３０】
制御回路８０は、イベント待ち状態の検出、ＷＡＹ情報バッファ７９に対するＷＡＹ情報の記憶及び読み出しの制御並びにタグ及びデータメモリへのアクセスの制御を行う制御手段である。制御回路８０は、ターゲットアドレス１０３と、キャッシュ装置１の外部から入力される実行命令１０４及びブランチ命令における分岐先アドレス１０５とを入力信号とする。そして、制御回路８０は、ＷＡＹ情報記憶ポインタ１０６、ＷＡＹ情報読み出しポインタ１０７、ＷＡＹ情報記憶許可信号１０８、ＷＡＹ情報読み出し許可信号１０９をＷＡＹ情報バッファ７９に出力する。また、制御回路８０は、アクセス制御信号１１０をタグアクセス制御回路８１とデータアクセス制御回路８２に出力する。
【００３１】
言い換えると、制御回路８０は、一連の命令群が繰り返し実行されている間に、当該命令群におけるＷＡＹ情報をＷＡＹ情報バッファ７９へ格納するための格納処理及びＷＡＹ情報バッファ７９からＷＡＹ情報を読み出すための読み出し処理を制御する。さらに、制御回路８０は、入力される複数の命令から、命令群が繰り返し実行されていることを検出し、当該検出した場合に、格納処理及び読み出し処理を制御する。尚、制御回路８０の内部構成は、図２において詳細に説明する。
【００３２】
タグアクセス制御回路８１は、キャッシュメモリ１４のタグへのアクセスを制御する。具体的には、タグアクセス制御回路８１は、アクセス制御信号１１０を入力として、タグアクセス禁止信号１１３をキャッシュメモリ１４に出力する。また、データアクセス制御回路８２は、キャッシュメモリ１４のデータへのアクセスを制御する。具体的には、データアクセス制御回路８２は、アクセス制御信号１１０とＷＡＹ選択情報１１２を入力として、データアクセス制御信号１１４をキャッシュメモリ１４に出力する。
【００３３】
キャッシュメモリ１４は、ＷＡＹ２２及び２４を備える。ＷＡＹ２２は、タグメモリ（以下、タグ０と称す。）とデータメモリ（以下、データ０と称す。）を有する。ＷＡＹ２４は、タグメモリ（以下、タグ１と称す。）とデータメモリ（以下、データ１と称す。）を有する。キャッシュメモリ１４は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ＥＰＲＯＭ（Erasable Programmable Read Only Memory）、ＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory）、ＦＣＲＡＭ（Fast Cycle RAM）、ＳＲＡＭ（Static Random Access Memory）又はこれらの格納動作を支援することができる適切な他の対象物でもよい。他の実施例では、キャッシュメモリ１４は、別のプロセッサ又はソフトウエアで置換されてもよく、その別のプロセッサ等はここで概説されたのと同様な形式でプロセッサとインターフェースをとることができるものであるとよい。その他、キャッシュメモリ１４、ＷＡＹ２２及び２４は、上述した図７と同等であるため、詳細な説明を省略する。
【００３４】
キャッシュデータ出力部１０２は、タグ０比較器７１と、タグ１比較器７２と、セレクタ７３とを備える。タグ０比較器７１は、キャッシュメモリ１４のタグ０と、ターゲットアドレス１０３とを入力とし、タグ０とターゲットアドレス１０３の比較結果をＷＡＹ情報１１５として、ＷＡＹ情報バッファ７９とセレクタ７３に出力する。タグ１比較器７２は、タグ１と、ターゲットアドレス１０３を入力とし、タグ１とターゲットアドレス１０３の比較結果を、ＷＡＹ情報１１６として、ＷＡＹ情報バッファ７９とセレクタ７３に出力する。セレクタ７３は、キャッシュメモリ１４のデータ０とデータ１とＷＡＹ情報１１５とＷＡＹ情報１１６とＷＡＹ選択情報１１２とを入力として、キャッシュメモリ１４から読み出した命令をキャッシュ装置１の外部に出力する。そして、セレクタ７３は、ＷＡＹ選択情報１１２がローである場合に、ＷＡＹ情報１１５及び１１６に応じてデータ０又はデータ１のいずれかを選択して出力する。また、セレクタ７３は、ＷＡＹ選択情報１１２がハイである場合に、データ０又はデータ１のいずれかしか入力されないため、入力されたデータを出力する。
【００３５】
図２は、本発明の実施の形態１にかかる制御回路８０の詳細な内部構成を示すブロック図である。制御回路８０は、ブランチ命令判定回路８３、アドレス保持レジスタ８４、命令カウンタ８５、ループカウンタ８６、ＷＡＹ情報バッファＯＮ／ＯＦＦ制御回路８７、タグ／データアクセス制御回路８８、ブランチ命令アドレス比較器８９、ＷＡＹ情報バッファエントリ数保持レジスタ９０、命令カウント数比較器９１、ループカウンタ閾値保持レジスタ９２、分岐先アドレス比較器９３及びループカウント数比較器９４を備える。
【００３６】
図１のアドレス計算部１００より出力されるターゲットアドレス１０３は、ブランチ命令アドレス比較器８９とアドレス保持レジスタ８４に入力される。キャッシュ装置１の外部より入力される実行命令１０４は、ブランチ命令判定回路８３に入力される。キャッシュ装置１の外部より入力される分岐先アドレス１０５は、分岐先アドレス比較器９３とアドレス保持レジスタ８４に入力される。
【００３７】
ブランチ命令判定回路８３は、実行命令がブランチ命令かを判定する。具体的には、ブランチ命令判定回路８３は、実行命令１０４を入力として、ブランチ命令検出信号２０１を命令カウンタ８５とアドレス保持レジスタ８４とブランチ命令アドレス比較器８９と命令カウント数比較器９１に出力する。このとき、ブランチ命令判定回路８３は、実行命令１０４がブランチ命令であると判定した場合、ブランチ命令検出信号２０１をハイに設定し、実行命令１０４がブランチ命令でないと判定した場合、ブランチ命令検出信号２０１をローに設定する。
【００３８】
命令カウンタ８５は、命令実行数をカウントする。具体的には、命令カウンタ８５は、ブランチ命令検出信号２０１を入力とし、図１のＷＡＹ情報バッファ７９にＷＡＹ情報読み出しポインタ１０７と、ＷＡＹ情報読み出しポインタ１０７をフリップフロップ９８により１サイクル遅らせたＷＡＹ情報記憶ポインタ１０６を出力する。また、命令カウンタ８５は、ブランチ命令検出信号２０１がハイである場合、命令カウンタ値をリセットする。つまり、命令カウンタ８５は、同一命令ループ内の命令の実行数をカウントする。
【００３９】
アドレス保持レジスタ８４は、前回ブランチ命令アドレス保持レジスタ９６と、前回分岐先アドレス保持レジスタ９５とを備えるレジスタである。そして、アドレス保持レジスタ８４は、ターゲットアドレス１０３、分岐先アドレス１０５及びブランチ命令検出信号２０１を入力する。アドレス保持レジスタ８４は、前回ブランチ命令アドレス保持レジスタ９６に格納された値を前回ブランチ命令実行アドレス２０２としてブランチ命令アドレス比較器８９に出力し、前回分岐先アドレス保持レジスタ９５に格納された値を前回分岐先アドレス２０３として分岐先アドレス比較器９３に出力する。併せて、アドレス保持レジスタ８４は、ブランチ命令検出信号２０１がハイである場合、前回ブランチ命令アドレス保持レジスタ９６に格納された値をターゲットアドレス１０３により更新し、前回分岐先アドレス保持レジスタ９５に格納された値を分岐先アドレス１０５により更新する。
【００４０】
ブランチ命令アドレス比較器８９は、ターゲットアドレス１０３と前回ブランチ命令実行アドレス２０２とブランチ命令検出信号２０１を入力として、アドレス一致信号２０４をループカウンタ加算制御器９７に出力する。
【００４１】
ＷＡＹ情報バッファエントリ数保持レジスタ９０は、ＷＡＹ情報バッファ７９の最大エントリ数を保持するレジスタである。そして、ＷＡＹ情報バッファエントリ数保持レジスタ９０は、ＷＡＹ情報バッファエントリ数２０５を命令カウント数比較器９１に出力する。
【００４２】
命令カウント数比較器９１は、ＷＡＹ情報読み出しポインタ１０７とＷＡＹ情報バッファエントリ数２０５を入力とし、エントリ許可信号２０６をループカウンタ加算制御器９７に出力する。
【００４３】
ループカウンタ加算制御器９７は、アドレス一致信号２０４とエントリ許可信号２０６を入力とし、ループカウンタ加算許可信号２１１をループカウンタ８６とＷＡＹ情報バッファＯＮ／ＯＦＦ制御回路８７に出力する。
【００４４】
分岐先アドレス比較器９３は、分岐先アドレス１０５と前回分岐先アドレス２０３を入力として、分岐先不一致信号２０７をループカウンタ８６に出力する。
【００４５】
ループカウンタ８６は、命令ループを何ループ実行したかカウントする。ループカウンタ８６は、ループカウンタ加算許可信号２１１と分岐先不一致信号２０７を入力として、ループカウント数２０８をループカウント数比較器９４に出力する。
【００４６】
ループカウンタ閾値保持レジスタ９２は、ループカウンタ閾値を保持するレジスタである。おり、ループカウンタ閾値２０９をループカウント数比較器９４に出力する。
【００４７】
ループカウント数比較器９４は、ループカウント数２０８とループカウンタ閾値２０９を入力とし、イベント待ち状態検出信号２１０をＷＡＹ情報バッファＯＮ／ＯＦＦ制御回路８７とタグ／データアクセス制御回路８８に出力する。
【００４８】
ＷＡＹ情報バッファＯＮ／ＯＦＦ制御回路８７は、ＷＡＹ情報バッファ７９の記憶及び読み出しを制御する。ＷＡＹ情報バッファＯＮ／ＯＦＦ制御回路８７は、ループカウンタ加算許可信号２１１及びイベント待ち状態検出信号２１０を入力とし、ＷＡＹ情報記憶許可信号１０８をＷＡＹ情報バッファ７９に出力し、ＷＡＹ情報読み出し許可信号１０９をＷＡＹ情報バッファ７９とタグ／データアクセス制御回路８８に出力する。
【００４９】
タグ／データアクセス制御回路８８は、イベント待ち状態検出信号２１０とＷＡＹ情報読み出し許可信号１０９を入力とし、アクセス制御信号１１０をタグアクセス制御回路８１とデータアクセス制御回路８２に出力する。
【００５０】
すなわち、制御回路８０は、命令群が繰り返し実行されていることを検出した場合に、当該命令群におけるＷＡＹ情報についての格納処理を開始し、格納処理が開始した後、当該命令群が再度実行されることを検出した場合に、読み出し処理を開始する。これにより、格納されたＷＡＹ情報を確実に読み出すことができる。
【００５１】
さらに、制御回路８０は、検出した命令群が実行された直後に同一の命令群が実行されることを検出した場合に、読み出し処理を開始する。これにより、格納処理が完了する前に、読み出し処理を開始でき、不要なキャッシュメモリアクセスを抑えることができる。また、例えば、複数の命令の内、全てが格納完了しなくとも、最初に格納された命令から読み出すことで、より早くＷＡＹ予測の結果を用いて、キャッシュアクセス処理を行うことができる。
【００５２】
さらに、制御回路８０は、同一の分岐命令が定期的に実行されると判定した場合に、命令群が繰り返し実行されていると検出する。これにより、命令ループに属する全ての命令の判定を行う必要がなく、最小限の判定より繰り返されていることを検出することができ、検出処理の負荷を抑えることができる。
【００５３】
また、制御回路８０は、検出された命令群に含まれる分岐先アドレスと、読み出し処理を開始した後の命令群に含まれる分岐先アドレスとが一致しない場合に、当該読み出し処理を終了する。これにより、命令ループの繰り返しの終了を適切に検出できる。
【００５４】
また、制御回路８０は、命令群に属する各命令のＷＡＹ情報を、各命令が実行される実行順序に従ってＷＡＹ情報バッファ７９へ格納するように格納処理を制御し、当該格納されたＷＡＹ情報を、ＷＡＹ情報バッファ７９に格納された格納順序に従ってＷＡＹ情報バッファ７９から読み出すように読み出し処理を制御する。これにより、命令群の実行順序に合わせて確実にＷＡＹ情報を読み出すことができる。そのため、ＷＡＹ予測の精度を高めることができる。
【００５５】
また、制御回路８０は、少なくとも、入力される複数の命令をデコードし、当該命令が分岐命令か否か判定する分岐命令判定回路と、前回実行された分岐命令のアドレスを保持する分岐命令アドレス保持回路と、当該分岐命令の分岐先のアドレスを保持する分岐先アドレス保持回路と、１命令実行毎にカウントアップし、分岐命令と判定された場合にリセットされる命令カウンタと、前記繰り返し実行される複数の命令のループ制御を行なうループカウンタと、を有するものであるとよい。
【００５６】
続いて、図３及び図４を用いて、図１及び図２の動作を説明する。パイプラインを搭載するシステムでは、ブランチ命令を実行して分岐先アドレスを計算する時にパイプラインが乱れてしまう。そのため、分岐命令の次の命令（以降、遅延スロット命令と称す）も実行するのが一般的である。本発明の実施の形態１にかかるキャッシュシステムは、パイプライン構造で、分岐予測を持たず、ブランチ命令実行時に遅延スロット命令を実行するシステムを示す。
【００５７】
図３は、本発明の実施の形態１にかかるキャッシュアクセスフローチャートの流れを示すフローチャート図である。まず、ＷＡＹ情報管理部１０１は、ターゲットアドレス１０３が入力されたときに、イベント待ち状態であるか否かを判定する（Ｓ１０１）。例えば、制御回路８０は、イベント待ち状態検出信号２１０がハイである場合に、イベント待ち状態であると判定する。また、ＷＡＹ情報管理部１０１は、イベント待ち状態検出信号２１０がローである場合に、イベント待ち状態でないと判定する。尚、ステップＳ１０１における判定は、これに限定されない。
【００５８】
ステップＳ１０１においてイベント待ち状態でないと判定された場合、ＷＡＹ情報管理部１０１は、通常のキャッシュアクセスを実施する（Ｓ１０２）。通常のキャッシュアクセスを実施する場合、まず、キャッシュメモリ１４は、ターゲットアドレス１０３のインデックス部を入力として、タグ０、タグ１、データ０及びデータ１の全てにアクセスして、データを出力する。次に、タグ０比較器７１は、ターゲットアドレス１０３のタグ部とタグ０から出力されたデータを比較する。一致する場合、タグ０比較器７１は、ＷＡＹ情報１１５をハイに設定する。同様に、タグ１比較器７２は、ターゲットアドレス１０３のタグ部とタグ１から出力されたデータを比較する。一致する場合、タグ１比較器７２は、ＷＡＹ情報１１６をハイに設定する。そして、セレクタ７３は、ＷＡＹ情報１１５がハイの場合に、データ０をキャッシュ装置１外部へ出力し、ＷＡＹ情報１１６がハイの場合に、データ１をキャッシュ装置１外部へ出力する。
【００５９】
ステップＳ１０２の後、制御回路８０は、イベント待ち状態の検出判定を実施する（Ｓ１０３）。イベント待ち状態の検出方法については、後述の図４で詳細に説明する。
【００６０】
ステップＳ１０１においてイベント待ち状態であると判定された場合、制御回路８０内の分岐先アドレス比較器９３は、分岐先アドレス１０５と前回分岐先アドレス２０３を比較して同一のアドレスであるか否かを判定する（Ｓ２０１）。
【００６１】
ステップＳ２０１において分岐先アドレス１０５と前回分岐先アドレス２０３が一致しなかった場合、分岐先アドレス比較器９３は、分岐先不一致信号２０７をハイに設定する。そして、ループカウンタ８６は、ループカウント数２０８をリセットする。さらに、ループカウント数比較器９４は、イベント待ち状態検出信号２１０をローに設定する。そして、ＷＡＹ情報バッファＯＮ／ＯＦＦ制御回路８７は、ＷＡＹ情報記憶許可信号１０８とＷＡＹ情報読み出し許可信号１０９をローに設定する。そして、タグ／データアクセス制御回路８８は、アクセス制御信号１１０をローに設定する。これにより、ＷＡＹ情報管理部１０１は、イベント待ち状態が終了したとする（Ｓ２３１）。その後、ＷＡＹ情報管理部１０１は、通常のキャッシュアクセスを実施して当該キャッシュアクセス処理を終了する（Ｓ２３２）。
【００６２】
ステップＳ２０１において分岐先アドレス１０５と前回分岐先アドレス２０３が一致した場合、ＷＡＹ情報管理部１０１は、ＷＡＹ情報記憶許可中であるか否かを確認する（Ｓ２０２）。ＷＡＹ情報記憶許可中である場合、制御回路８０は、ＷＡＹ情報バッファ７９内のＷＡＹ情報記憶ポインタ１０６の指し示すエントリにＷＡＹ情報１１５又は１１６の値を直前のキャッシュアクセスのＷＡＹ情報として記憶する（Ｓ２０３）。具体的には、ＷＡＹ情報記憶許可信号１０８がハイであり、かつ、ＷＡＹ情報１１５がハイである場合、ＷＡＹ情報管理部１０１は、"０"を格納する。また、ＷＡＹ情報記憶許可信号１０８がハイであり、かつ、ＷＡＹ情報１１６がハイである場合、ＷＡＹ情報管理部１０１は、"１"を格納する。
【００６３】
その後、ＷＡＹ情報管理部１０１は、ＷＡＹ情報読み出し許可中かを確認する（Ｓ２０４）。ＷＡＹ情報読み出しが不許可、すなわち、ＷＡＹ情報読み出し許可信号１０９がローである場合、ＷＡＹ情報管理部１０１は、通常のキャッシュアクセスを実施する（Ｓ２１１）。
【００６４】
一方、ステップＳ２０４においてＷＡＹ情報読み出しが許可中、すなわち、ＷＡＹ情報読み出し許可信号１０９がハイである場合、ＷＡＹ情報管理部１０１は、ＷＡＹ情報バッファ７９内のＷＡＹ情報読み出しポインタ１０７の指し示すエントリに格納された情報をＷＡＹ選択情報１１２として出力する（Ｓ２０５）。
【００６５】
続いて、ＷＡＹ情報管理部１０１は、出力されたＷＡＹ選択情報１１２を用いてキャッシュアクセスを実施する（Ｓ２０６）。具体的には、タグアクセス制御回路８１は、キャッシュメモリ１４の全てのＷＡＹのタグアクセスを禁止するようにタグアクセス禁止信号１１３を設定する。また、データアクセス制御回路８２は、ＷＡＹ選択情報１１２が示すＷＡＹ以外へのデータアクセスを禁止するようにデータアクセス制御信号１１４を設定する。そして、セレクタ７３は、キャッシュメモリ１４のＷＡＹの内、ＷＡＹ選択情報１１２が示すＷＡＹから読み出したデータをキャッシュ装置１の外部へ出力する。
【００６６】
その後、ＷＡＹ情報管理部１０１は、読み出した命令がイベント待ち状態になって最初のブランチ命令であるかを判定する（Ｓ２０７）。最初のブランチ命令であると判定した場合、ＷＡＹ情報管理部１０１は、ＷＡＹ情報の読み出し許可をする（Ｓ２０８）。具体的には、ＷＡＹ情報バッファＯＮ／ＯＦＦ制御回路８７は、ＷＡＹ情報読み出し許可信号１０９をハイに設定する。そして、タグ／データアクセス制御回路８８は、アクセス制御信号１１０をハイに設定する。さらに、タグアクセス制御回路８１は、キャッシュメモリ１４の全てのＷＡＹのタグアクセスを許可するようにタグアクセス禁止信号１１３を設定する。また、データアクセス制御回路８２は、キャッシュメモリ１４の全てのＷＡＹのデータアクセスを許可するようにデータアクセス制御信号１１４を設定する。その後、ステップＳ１０１に戻る。
【００６７】
ステップＳ２０７において最初のブランチ命令でないと判定した場合、ＷＡＹ情報管理部１０１は、ＷＡＹ情報の記憶が完了したか否かを判定する（Ｓ２２１）。具体的には、ＷＡＹ情報管理部１０１は、ＷＡＹ情報記憶許可信号１０８とＷＡＹ情報読み出し許可信号１０９によりＷＡＹ情報の記憶が完了したか否かを判定する。ＷＡＹ情報の記憶が完了していないと判定した場合、ステップＳ１０１に戻る。
【００６８】
ステップＳ２２１においてＷＡＹ情報の記憶が完了したと判定した場合、すなわち、ＷＡＹ情報記憶許可信号１０８とＷＡＹ情報読み出し許可信号１０９が共にハイである場合、ＷＡＹ情報バッファＯＮ／ＯＦＦ制御回路８７は、ＷＡＹ情報記憶許可信号１０８をローに設定し，ステップＳ１０１に戻る（Ｓ２２２）。
【００６９】
図４は、本発明の実施の形態１にかかるイベント待ち状態検出フローチャートの流れを示すフローチャート図である。まず、制御回路８０内のブランチ命令判定回路８３は、実行命令１０４をデコードし、デコード後の実行命令がブランチ命令か否かを判定する（Ｓ３０１）。ブランチ命令でないと判定した場合、制御回路８０は、命令カウンタ８５をインクリメントして、当該処理を終了する（Ｓ３１１）。
【００７０】
ステップＳ３０１においてブランチ命令であると判定した場合、ブランチ命令判定回路８３は、ブランチ命令検出信号２０１をハイに設定する（Ｓ３０２）。アドレス保持レジスタ８４は、前回分岐先アドレス保持レジスタ９５及び前回ブランチ命令アドレス保持レジスタ９６に格納された値をそれぞれ前回分岐先アドレス２０３及び前回ブランチ命令実行アドレス２０２として分岐先アドレス比較器９３及びブランチ命令アドレス比較器８９に出力する。また、アドレス保持レジスタ８４は、ブランチ命令検出信号２０１がハイである場合、前回ブランチ命令アドレス保持レジスタ９６に格納された値を破棄し、ターゲットアドレス１０３を格納する。同様に、アドレス保持レジスタ８４は、ブランチ命令検出信号２０１がハイである場合、前回分岐先アドレス保持レジスタ９５に格納された値を破棄し、分岐先アドレス１０５を格納する。
【００７１】
続いて、ブランチ命令アドレス比較器８９は、分岐先アドレスが一致するか否かを判定する（Ｓ３０３）。具体的には、ブランチ命令アドレス比較器８９は、ターゲットアドレス１０３と前回ブランチ命令実行アドレス２０２のアドレスが一致するかを判定する。一致しなかった場合、ループカウンタ８６をリセット（Ｓ３２１）し、ステップＳ３１０に進む。また、ステップＳ３０３において分岐先アドレスが一致すると判定した場合、ブランチ命令アドレス比較器８９は、アドレス一致信号２０４にハイを設定する（Ｓ３０４）。
【００７２】
その後、命令カウント数比較器９１は、命令カウンタ８５の内部カウンタの値であるＷＡＹ情報読み出しポインタ１０７がＷＡＹ情報バッファエントリ数２０５以下であるか否かを判定する（Ｓ３０５）。このとき、ＷＡＹ情報読み出しポインタ１０７がＷＡＹ情報バッファエントリ数２０５より大きいと判定した場合、ステップＳ３２１に進む。
【００７３】
ステップＳ３０５においてＷＡＹ情報読み出しポインタ１０７がＷＡＹ情報バッファエントリ数２０５以下であると判定した場合、命令カウント数比較器９１は、エントリ許可信号２０６をハイに設定する（Ｓ３０６）。この場合、直前までに連続して繰り返し実行されている命令ループの１ループ当たりの命令数がＷＡＹ情報バッファ７９へ格納できる命令数の範囲内であると判断できるためである。
【００７４】
そして、ループカウンタ加算制御器９７は、ループカウンタ加算許可信号２１１をハイに設定し、ループカウンタ８６をインクリメントする（Ｓ３０７）。その後、ループカウント数比較器９４は、ループカウント数２０８がループカウンタ閾値２０９以上であるか否かを判定する（Ｓ３０８）。ループカウント数２０８がループカウンタ閾値２０９未満と判定した場合、ステップＳ３１０に進み，当該処理を終了する。
【００７５】
ステップＳ３０８においてループカウント数２０８がループカウンタ閾値２０９以上と判定した場合、制御回路８０は、イベント待ち状態と検出し、ＷＡＹ情報記憶許可を行う（Ｓ３０９）。具体的には、ループカウント数比較器９４は、イベント待ち状態検出信号２１０をハイに設定する。また、ＷＡＹ情報バッファＯＮ／ＯＦＦ制御回路８７は、ＷＡＹ情報記憶許可信号１０８をハイに設定する。その後、制御回路８０は、命令カウンタ８５をリセット（Ｓ３１０）し、当該処理を終了する。
【００７６】
図５は、本発明の実施の形態１にかかるキャッシュアクセス開始までのタイミング図である。特に、図５は、４命令で構成された命令ループでイベント待ち状態が検出された場合を例として、ＷＡＹ情報の記憶／読み出しを示したものである。ここで、キャッシュメモリ１４から命令を読み出し実行するまで手順は、アドレス計算（図示せず）、命令読み出し（以下、ＩＦと称す）、命令デコード（以下、ＲＦと称す）及び命令実行（以下、ＥＸと称す）の順にそれぞれ１サイクルで実行されものとする。
【００７７】
また、ＷＡＹ情報読み出しポインタ１０７は、命令カウンタ８５の内部カウンタの値であり、命令が実行される度に１カウントアップし、ブランチ命令検出信号２０１がハイになるとリセットされる。つまり、命令ループを実行している間は、命令ループの先頭命令からブランチ命令までの命令数をカウントしている。また、ＷＡＹ情報記憶ポインタ１０６は、ＷＡＹ情報読み出しポインタ１０７をフリップフロップ９８でラッチしたものである。
【００７８】
図５のサイクルＴ１乃至Ｔ１０の動作は、イベント待ち状態と判定するループカウント数の閾値を１０として説明する。また、サイクルＴ１以前に、ループカウント数が９となるまで命令ループが実行済みとする。
【００７９】
サイクルＴ１では、キャッシュ装置１は、キャッシュメモリ１４からブランチ命令Ｃ１を読み出す。この時点では、実行命令１０４は、ブランチ命令ではないため、直前のサイクルから引き続いて、キャッシュ装置１は、ＷＡＹ情報記憶ポインタ１０６に１を設定し、ＷＡＹ情報読み出しポインタ１０７に２を設定する。
【００８０】
サイクルＴ２では、キャッシュ装置１は、ブランチ命令Ｃ１をデコードし、キャッシュメモリ１４から遅延スロット命令Ｃ２を読み出す。このとき、制御回路８０は、実行命令１０４をブランチ命令と判定し、イベント待ち状態であるとしてＷＡＹ情報記憶ポインタ１０６に２を設定し、ＷＡＹ情報読み出しポインタ１０７に３を設定する。
【００８１】
サイクルＴ３では、キャッシュ装置１は、ブランチ命令Ｃ１を実行し、遅延スロット命令Ｃ２をデコードし、キャッシュメモリ１４からループの先頭命令Ｃ３を読み出す。このとき、制御回路８０は、イベント待ち状態検出信号２１０をハイに設定し、ＷＡＹ情報記憶ポインタ１０６に３を設定し、ＷＡＹ情報読み出しポインタ１０７に０を設定する。
【００８２】
サイクルＴ４では、キャッシュ装置１は、遅延スロット命令Ｃ２を実行し、命令ループの先頭命令Ｃ３をデコードし、キャッシュメモリ１４からループの２番目の命令Ｃ４を読み出す。制御回路８０は、ＷＡＹ情報記憶許可信号１０８をハイに設定し、ＷＡＹ情報記憶ポインタ１０６に０を設定し、ＷＡＹ情報読み出しポインタ１０７に１を設定する。そして、ＷＡＹ情報管理部１０１は、ＷＡＹ情報記憶ポインタ１０６の指し示すＷＡＹ情報バッファ７９のエントリ０にループの先頭命令Ｃ３のＷＡＹ情報を記憶する。
【００８３】
サイクルＴ５では、キャッシュ装置１は、ループの先頭命令Ｃ３を実行し、命令ループ２番目の命令Ｃ４をデコードし、キャッシュメモリ１４からブランチ命令Ｃ５を読み出す。制御回路８０は、ＷＡＹ情報記憶ポインタ１０６に１を設定し、ＷＡＹ情報読み出しポインタ１０７に２を設定する。そして、ＷＡＹ情報管理部１０１は、ＷＡＹ情報記憶ポインタ１０６の指し示すＷＡＹ情報バッファ７９のエントリ１にループの２番目の命令Ｃ４のＷＡＹ情報を記憶する。
【００８４】
サイクルＴ６では、キャッシュ装置１は、命令ループの２番目の命令Ｃ４を実行し、ブランチ命令Ｃ５をデコードし、キャッシュメモリ１４から遅延スロット命令Ｃ６を読み出す。制御回路８０は、ＷＡＹ情報記憶ポインタ１０６に２を設定し、ＷＡＹ情報読み出しポインタ１０７に３を設定する。そして、ＷＡＹ情報管理部１０１は、ＷＡＹ情報記憶ポインタ１０６の指し示すＷＡＹ情報バッファ７９のエントリ２にブランチ命令Ｃ５のＷＡＹ情報を記憶する。
【００８５】
サイクルＴ７では、キャッシュ装置１は、ブランチ命令Ｃ５を実行し、遅延スロット命令Ｃ６をデコードし、キャッシュメモリ１４からループの先頭命令Ｃ７を読み出す。制御回路８０は、ＷＡＹ情報記憶許可信号１０８をハイに設定し、ＷＡＹ情報記憶ポインタ１０６に３を設定し、ＷＡＹ情報読み出しポインタ１０７をリセットする。そして、ＷＡＹ情報管理部１０１は、ＷＡＹ情報記憶ポインタ１０６の指し示すＷＡＹ情報バッファ７９のエントリ３に遅延スロット命令Ｃ６のＷＡＹ情報を記憶する。また、ＷＡＹ情報管理部１０１は、ＷＡＹ情報読み出しポインタ１０７の指し示すＷＡＹ情報バッファ７９のエントリ０からループの先頭命令Ｃ３のＷＡＹ情報を読み出す。
【００８６】
サイクルＴ８では、キャッシュ装置１は、遅延スロット命令Ｃ６を実行し、ループの先頭命令Ｃ７をデコードし、キャッシュメモリ１４からループ２番目の命令Ｃ８を読み出す。制御回路８０は、ＷＡＹ情報記憶許可信号１０８をローに設定し、ＷＡＹ情報記憶ポインタ１０６に０を設定し、ＷＡＹ情報読み出しポインタ１０７に１を設定する。そして、ＷＡＹ情報管理部１０１は、ＷＡＹ情報読み出しポインタ１０７の指し示すＷＡＹ情報バッファ７９のエントリ１からループの２番目の命令Ｃ４のＷＡＹ情報を読み出す。
【００８７】
サイクルＴ９では、キャッシュ装置１は、ループの先頭命令Ｃ７を実行し、ループの２番目の命令Ｃ８をデコードし、キャッシュメモリ１４からブランチ命令Ｃ９を読み出す。制御回路８０は、ＷＡＹ情報記憶ポインタ１０６に１を設定し、ＷＡＹ情報読み出しポインタ１０７に２を設定する。そして、ＷＡＹ情報管理部１０１は、ＷＡＹ情報読み出しポインタ１０７の指し示すＷＡＹ情報バッファ７９のエントリ２からブランチ命令Ｃ５のＷＡＹ情報を読み出す。
【００８８】
サイクルＴ１０では、キャッシュ装置１は、ループの２番目の命Ｃ８令を実行し、ブランチ命令Ｃ９をデコードし、キャッシュメモリ１４から遅延スロット命令Ｃ１０を読み出す。制御回路８０は、ＷＡＹ情報記憶ポインタ１０６に２を設定し、ＷＡＹ情報読み出しポインタ１０７に３を設定する。そして、ＷＡＹ情報管理部１０１は、ＷＡＹ情報読み出しポインタ１０７の指し示すＷＡＹ情報バッファ７９のエントリ３から遅延スロット命令Ｃ６のＷＡＹ情報を読み出す。
【００８９】
図６は、本発明の実施の形態１にかかるイベント待ち状態終了検出のタイミング図である。尚、サイクルＴ１１は、サイクルＴ１０以降、所定のサイクル数が実行されたことにより、ループカウント数２０８が１５に至った時点である。また、図６において、命令Ｃ１６乃至Ｃ１８は、任意の命令であることを示す。
【００９０】
サイクルＴ３では、キャッシュ装置１は、キャッシュメモリ１４からブランチ命令Ｃ１３を読み出す。サイクルＴ４では、キャッシュ装置１は、ブランチ命令Ｃ１３をデコードする。サイクルＴ５では、キャッシュ装置１は、ブランチ命令Ｃ１３の分岐先アドレス１０５の計算を行う。
【００９１】
ここで、サイクルＴ５で計算される分岐先アドレス１０５は、同サイクルでキャッシュメモリ１４からの命令読み出しに使用される。サイクルＴ５において、分岐先アドレス比較器９３は、分岐先アドレス１０５と前回分岐先アドレス２０３とを比較する。その結果、一致しなかった場合、分岐先アドレス比較器９３は、分岐先不一致信号２０７をハイに設定する。そして、同一サイクルにおいて、ループカウンタ８６は、ループカウント数２０８をリセットする。さらに、ループカウント数比較器９４は、イベント待ち状態検出信号２１０をローに設定する。そして、ＷＡＹ情報バッファＯＮ／ＯＦＦ制御回路８７は、ＷＡＹ情報読み出し許可信号１０９をローに設定する。そのため、イベント待ち状態が終了する。そして、キャッシュ装置１は、サイクルＴ６以降のサイクルから通常のキャッシュアクセスを行う。
【００９２】
以上のことから、本発明の実施の形態１にかかるキャッシュシステムにより、ＷＡＹ予測にアドレスのマッチングを行うのではなく、繰り返し実行される命令群におけるＷＡＹ情報のみを格納する。そのため、読み出されるＷＡＹ情報は、当該命令群のもののみとなる。よって、命令群が連続して繰り返し実行される間は、確実にＷＡＹ情報の予測を行うことができる。そのため、ＷＡＹ予測の失敗を減らし、システムの誤作動を防ぐことができる。
【００９３】
その理由としては、本発明の実施の形態１では、イベント待ち状態を検出した際にＷＡＹ記憶を行うため、特定の命令ループの繰り返しであるイベント待ち状態中の全命令のＷＡＹ情報がＷＡＹ情報バッファに記憶され、確実にＷＡＹ予測を実現できるためである。
【００９４】
さらに、本発明の実施の形態１では、キャッシュアクセスを低消費電力化することができる。その理由としては、イベント待ち状態中は、制御回路８０が不要なタグメモリ及びデータメモリへのアクセスを禁止するため、通常のキャッシュアクセスと比較してキャッシュメモリへのアクセスの回数が低減するからである。
尚、本発明の実施の形態１にかかるＷＡＹ情報バッファ７９は、アドレスの値自体を保持しない。特に、特許文献１及び２に比べて、タグの値及びセットインデックスの値も保持していない。そのため、ＷＡＹ情報バッファ７９の容量を少なくすることができる。または、特許文献１及び２に比べて、より多くのエントリをＷＡＹ情報バッファ７９に保持することが可能となり、ＷＡＹ予測の精度を高めることができる。
【００９５】
このように、本発明の実施の形態１では、ＷＡＹ予測機能を搭載しているキャッシュ装置において、ＷＡＹ情報バッファと制御回路とを有する。ＷＡＹ情報バッファは、イベント待ち状態中に実行するキャッシュアクセスのＷＡＹ情報を記憶する。また、制御回路は、イベント待ち状態を検出してイベント待ち状態の時のみタグ／データアクセスを制御し、ＷＡＹ情報バッファに対するＷＡＹ情報の記憶／読み出しを制御する。ここで、ＷＡＹ情報バッファは、キャッシュアクセスを行う際にＷＡＹ情報読み出しポインタの指し示すエントリが保持するＷＡＹ情報をＷＡＹ選択情報から出力するため、誤ったキャッシュアクセスによるシステムの誤作動を防ぐことができる。
【００９６】
＜その他の発明の実施の形態＞
本発明の実施の形態１にかかるキャッシュ装置１が搭載されるプロセッサは、適切な如何なる態様で包含されてもよい。更には、アルゴリズムが適切な如何なる形式（例えば、ソフトウェア形式、ハードウェア形式等）で具現化されてもよい。例えば、当該プロセッサは、マイクロプロセッサでもよいし、単独の集積回路、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレー（ＦＰＧＡ）その他の適切な如何なる処理オブジェクト、デバイス又は素子の一部でもよい。アドレスバス及びデータバスはデータ（例えば、２進データ）を伝送可能なワイヤである。或いはそのようなワイヤはデータ伝搬を促すよう機能する他の如何なる技術（例えば、光放射、レーザ技術等）でもそれと置換されてもよい。
【００９７】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【符号の説明】
【００９８】
１  キャッシュ装置
１０  システム
１２  プロセッサ
１４  キャッシュメモリ
１８  メモリアドレス
２２  ＷＡＹ
２４  ＷＡＹ
３０  マルチプレクサ
３２  マルチプレクサ
３４  マルチプレクサ
３８  メモリアドレスバッファ
３９  ＷＡＹ番号
５０  付加的な回路
５１  タグ無効化回路
５２  ＷＡＹ無効化回路
６０  オリジナル回路
６２  ベースアドレス
６３  ３２ビットＡＬＵ
６４  変位
６５  ターゲットアドレス
７１  タグ０比較器
７２  タグ１比較器
７３  セレクタ
７８  ３２ビット加算器
７９  ＷＡＹ情報バッファ
８０  制御回路
８１  タグアクセス制御回路
８２  データアクセス制御回路
８３  ブランチ命令判定回路
８４  アドレス保持レジスタ
８５  命令カウンタ
８６  ループカウンタ
８７  ＷＡＹ情報バッファＯＮ／ＯＦＦ制御回路
８８  タグ／データアクセス制御回路
８９  ブランチ命令アドレス比較器
９０  ＷＡＹ情報バッファエントリ数保持レジスタ
９１  命令カウント数比較器
９２  ループカウンタ閾値保持レジスタ
９３  分岐先アドレス比較器
９４  ループカウント数比較器
９５  前回分岐先アドレス保持レジスタ
９６  前回ブランチ命令アドレス保持レジスタ
９７  ループカウンタ加算制御器
９８  フリップフロップ
１００  アドレス計算部
１０１  ＷＡＹ情報管理部
１０２  キャッシュデータ出力部
１０３  ターゲットアドレス
１０４  実行命令
１０５  分岐先アドレス
１０６  ＷＡＹ情報記憶ポインタ
１０７  ＷＡＹ情報読み出しポインタ
１０８  ＷＡＹ情報記憶許可信号
１０９  ＷＡＹ情報読み出し許可信号
１１０  アクセス制御信号
１１２  ＷＡＹ選択情報
１１３  タグアクセス禁止信号
１１４  データアクセス制御信号
１１５  ＷＡＹ情報
１１６  ＷＡＹ情報
２０１  ブランチ命令検出信号
２０２  前回ブランチ命令実行アドレス
２０３  前回分岐先アドレス
２０４  アドレス一致信号
２０５  ＷＡＹ情報バッファエントリ数
２０６  エントリ許可信号
２０７  分岐先不一致信号
２０８  ループカウント数
２０９  ループカウンタ閾値
２１０  イベント待ち状態検出信号
２１１  ループカウンタ加算許可信号
Ｃ１  ブランチ命令
Ｃ２  遅延スロット命令
Ｃ３  ループの先頭命令
Ｃ４  ループの２番目の命令
Ｃ５  ブランチ命令
Ｃ６  遅延スロット命令
Ｃ７  ループの先頭命令
Ｃ８  ループの２番目の命令
Ｃ９  ブランチ命令
Ｃ１０  遅延スロット命令
Ｃ１１  ループの先頭命令
Ｃ１２  ループの２番目の命令
Ｃ１３  ブランチ命令
Ｃ１４  遅延スロット命令
Ｃ１５  非分岐時の命令
Ｃ１６  命令
Ｃ１７  命令
Ｃ１８  命令
Ｔ１  サイクル
Ｔ２  サイクル
Ｔ３  サイクル
Ｔ４  サイクル
Ｔ５  サイクル
Ｔ６  サイクル
Ｔ７  サイクル
Ｔ８  サイクル
Ｔ９  サイクル
Ｔ１０  サイクル
Ｔ１１  サイクル
Ｔ１２  サイクル
Ｔ１３  サイクル
Ｔ１４  サイクル
Ｔ１５  サイクル
Ｔ１６  サイクル
Ｔ１７  サイクル
Ｔ１８  サイクル
Ｔ１９  サイクル
Ｔ２０  サイクル
【図１】
2011065503.tif 000003
【図２】
2011065503.tif 000004
【図３】
2011065503.tif 000005
【図４】
2011065503.tif 000006
【図５】
2011065503.tif 000007
【図６】
2011065503.tif 000008
【図７】
2011065503.tif 000009
【図８】
2011065503.tif 000010
【図９】
2011065503.tif 000011