(57)【特許請求の範囲】
【請求項１】
処理ユニットと、
該処理ユニットがアクセスするキャッシュメモリと、
前記処理ユニットが前記キャッシュメモリにアクセスするアドレスを予測するアドレス予測回路と、
前記処理ユニットが前記キャッシュメモリへのアクセスを開始したことを検出してアクセス開始信号を生成するアクセス開始検出回路と、
クロックおよび前記アクセス開始信号を受け取って前記処理ユニットに対する処理クロックを制御するクロック制御回路と、
前記キャッシュメモリからのリードデータを遅延して前記処理ユニットに供給する遅延回路と、を有することを特徴とする半導体集積回路装置。
【請求項２】
請求項１に記載の半導体集積回路装置において、さらに、
前記処理ユニットから前記キャッシュメモリに対する最初のアクセスは、前記処理ユニットからのアドレスを前記キャッシュメモリに入力すると共に、前記処理ユニットから前記キャッシュメモリに対する２回目以降のアクセスは、前記アドレス予測回路で生成した予測アドレスを前記キャッシュメモリに入力するセレクタを有することを特徴とする半導体集積回路装置。
【請求項３】
請求項１または２に記載の半導体集積回路装置において、さらに、
前記処理ユニットからのアドレスと、前記アドレス予測回路で生成された予測アドレスを前記遅延回路で遅延したアドレスとを比較して、前記アドレス予測回路の予測が失敗したことを示すアドレス予測失敗信号を生成するアドレス比較回路を有することを特徴とする半導体集積回路装置。
【請求項４】
請求項３に記載の半導体集積回路装置において、
前記クロック制御回路は、前記アドレス予測失敗信号を受け取って前記処理クロックを停止し、前記処理ユニットからのアドレスを前記キャッシュメモリに入力することを特徴とする半導体集積回路装置。
【請求項５】
請求項３または４に記載の半導体集積回路装置において、
前記クロック制御回路は、前記アドレス予測失敗信号を１クロックサイクル遅延させた信号、前記アクセス開始信号、および、前記クロックの論理積を取って前記処理クロックを制御することを特徴とする半導体集積回路装置。
【請求項６】
請求項１〜５のいずれか１項に記載の半導体集積回路装置において、
前記アドレス予測回路は、前記処理ユニットの仕様に応じて加算値の設定が可能な加算器を有することを特徴とする半導体集積回路装置。
【請求項７】
請求項１〜６のいずれか１項に記載の半導体集積回路装置において、
前記アクセス開始検出回路は、前記処理ユニットから出力される前記キャッシュメモリのチップセレクト信号と、該チップセレクト信号を遅延した信号との論理積を取って前記アクセス開始信号を生成することを特徴とする半導体集積回路装置。
【請求項８】
請求項７に記載の半導体集積回路装置において、
前記クロック制御回路は、前記アクセス開始信号の反転論理の信号をフリップフロップを介したのち前記クロックとの論理積を取って前記処理ユニットに対するクロックを生成することを特徴とする半導体集積回路装置。
【請求項９】
請求項１〜８のいずれか１項に記載の半導体集積回路装置において、
前記遅延回路は、遅延用フリップフロップを有し、
前記処理ユニットは、内部フリップフロップを有し、
前記遅延用フリップフロップにより前記キャッシュメモリからのリードデータを１クロックサイクルだけ遅延して前記処理ユニットに供給することで前記内部フリップフロップまでのセットアップマージンを稼ぎ、該内部フリップフロップのセットアップ時間を満たす範囲で前記処理ユニットの動作周波数を高めることを特徴とする半導体集積回路装置。
【請求項１０】
処理ユニット、および、該処理ユニットがアクセスするキャッシュメモリを有する半導体集積回路装置におけるキャッシュメモリ制御方法であって、
前記処理ユニットが前記キャッシュメモリにアクセスするアドレスを予測し、
前記処理ユニットが前記キャッシュメモリへのアクセスを開始したことを検出してアクセス開始信号を生成し、
クロックおよび前記アクセス開始信号を受け取って前記処理ユニットに対する処理クロックを制御し、
前記キャッシュメモリからのリードデータを遅延して前記処理ユニットに供給することを特徴とするキャッシュメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路装置およびキャッシュメモリ制御方法に関する。
【背景技術】
【０００２】
近年、デジタル機器の複雑化に伴って、搭載されるシステムＬＳＩ(Large Scale Integration)も高速化および高性能化が要求されている。特に、システムＬＳＩに内蔵されるＣＰＵ(Central Processing Unit)は、高速に動作させることが強く求められている。
【０００３】
従来、ＣＰＵ(処理ユニット)を高速動作させる一般的な手法としては、例えば、ＣＰＵの動作を規定するパイプラインの段数を増やすといった抜本的な対策を講じる場合が多い。
【０００４】
このような場合でも、例えば、ＣＰＵのランダムロジックとＣＰＵ自身が持つキャッシュメモリ(例えば、一次キャッシュメモリ)間のアクセスタイミングは、スループット向上のためにキャッシュメモリからのデータリードがゼロウェイトであることが望まれる。
【０００５】
さらに、ＣＰＵのランダムロジック(内部論理回路)が高速になればなるほど、キャッシュメモリ(例えば、ＳＲＡＭ：Static Random Access Memory)のリードアクセスタイムもより高速なものが必要になってくる。
【０００６】
ところで、従来、ＣＰＵからメモリに対するアクセス速度を向上させることができるメモリアクセス技術および情報処理技術、並びに、キャッシュメモリ(ＳＲＡＭ)からの高速データ読み出しが可能な回路等としては、様々なものが提案されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１０−３３３９８０号公報
【特許文献２】特開平０１−２７６３３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述したように、ＣＰＵ(処理ユニット)は、例えば、パイプライン段数を増やすことで大幅に動作速度を向上させることはできるが、キャッシュメモリ(ＳＲＡＭ)は、論理回路の改善等を行っても高速化することはできない。
【０００９】
すなわち、キャッシュメモリを高速化するには、例えば、そのキャッシュメモリに使用するＳＲＡＭ自身を高速化しなければならず、現実問題としては、困難な状況にある。
【００１０】
さらに、近年、例えば、ＳＲＡＭのキャッシュメモリを内蔵するＣＰＵの動作速度(動作クロック)は、そのＳＲＡＭのデータリードアクセスタイムとＣＰＵのランダムロジック間のパスのタイミングに支配されるようにもなってきている。
【００１１】
図１は半導体集積回路装置の一例を示すブロック図であり、また、図２は図１の半導体集積回路装置の動作を説明するためのタイミング図である。なお、図１および図２を参照して説明する半導体集積回路装置は、キャッシュメモリからのデータリードがゼロウェイトのものを示している。
【００１２】
図１において、参照符号１００は処理ユニット(ＣＰＵ)，１０１はランダムロジック，１０２は内部フリップフロップ，そして，２００はキャッシュメモリ(ＳＲＡＭ)を示している。
【００１３】
なお、キャッシュメモリ２００は、例えば、システムＬＳＩ等の半導体集積回路装置に設けられるキャッシュメモリに限定されるものではなく、ＣＰＵ１００自体に内蔵される一次或いは二次キャッシュメモリであってもよい。
【００１４】
図２に示されるように、キャッシュメモリ２００からのデータリードがゼロウェイトの場合でも、クロックＣＬＫの１周期におけるＳＲＡＭのアクセスタイムＡＴrが大きく、次段のフリップフロップ１０２までのセットアップマージンＳＭfが小さくなる。
【００１５】
そのため、図１に示す半導体集積回路装置は、クロックＣＬＫの周波数を上げることができず、例えば、そのＣＰＵを内蔵するシステムＬＳＩ、或いは、そのシステムＬＳＩを搭載するデジタル機器の高速化および高性能化の要求を満たすことが困難になっていた。
【００１６】
図３は半導体集積回路装置の他の例を示すブロック図であり、また、図４は図３の半導体集積回路装置の動作を説明するためのタイミング図である。なお、図３および図４を参照して説明する半導体集積回路装置は、キャッシュメモリ２００とＣＰＵ１００との間にフリップフロップ３００を設けたものである。
【００１７】
図３に示す半導体集積回路装置において、キャッシュメモリ２００とＣＰＵ１００のランダムロジック１０１間のパスは、挿入したフリップフロップ３００により一度区切られることになり、ＣＰＵ１００の動作速度の高速化が期待できる。
【００１８】
すなわち、図４に示されるように、フリップフロップ３００により、次段のフリップフロップ１０２までのセットアップマージンＳＭfを大きく取ることができるようになっている。
【００１９】
しかしながら、図３に示す半導体集積回路装置において、ＣＰＵ１００がキャッシュメモリ２００からゼロウェイトでリードデータの取得を期待しているのに対して、リードデータは、フリップフロップ３００により１サイクル遅れて到着する。
【００２０】
そのため、例えば、２サイクルのクロックＣＬＫから１サイクルのＣＰＵクロックｃｌｋを生成するＣＰＵクロック制御回路３０１を設け、ＣＰＵ１００をクロックＣＬＫの半分の周波数で動作させる必要があり、結果としてＣＰＵ１００の処理性能が低下する。
【００２１】
具体的に、例えば、ＣＰＵ１００により、キャッシュメモリ２００から連続した８個の読み出しが発生した場合、１個のデータを取得する度にクロックＣＬＫが２サイクル必要になるめ、８／(８×２)＝５０％になる。すなわち、ＣＰＵ１００の性能が５０％低下することになる。
【課題を解決するための手段】
【００２２】
一実施形態の半導体集積回路装置は、処理ユニットと、該処理ユニットがアクセスするキャッシュメモリと、アドレス予測回路と、アクセス開始検出回路と、クロック制御回路と、遅延回路と、を有する。
【００２３】
前記アドレス予測回路は、前記処理ユニットが前記キャッシュメモリにアクセスするアドレスを予測し、前記アクセス開始検出回路は、前記処理ユニットが前記キャッシュメモリへのアクセスを開始したことを検出してアクセス開始信号を生成する。
【００２４】
前記クロック制御回路は、クロックおよび前記アクセス開始信号を受け取って前記処理ユニットに対する処理クロックを制御し、前記遅延回路は、前記キャッシュメモリからのリードデータを遅延して前記処理ユニットに供給する。
【発明の効果】
【００２５】
開示の半導体集積回路装置およびキャッシュメモリ制御方法は、処理ユニットの性能劣化を抑えつつ動作周波数を高速化することができるという効果を奏する。
【図面の簡単な説明】
【００２６】
【図１】半導体集積回路装置の一例を示すブロック図である。
【図２】図１の半導体集積回路装置の動作を説明するためのタイミング図である。
【図３】半導体集積回路装置の他の例を示すブロック図である。
【図４】図３の半導体集積回路装置の動作を説明するためのタイミング図である。
【図５】半導体集積回路装置の第１実施例を示すブロック図である。
【図６】図５の半導体集積回路装置の動作を説明するためのタイミング図である。
【図７】図５の半導体集積回路装置におけるアドレス予測回路の一例を示す図である。
【図８】図５の半導体集積回路装置におけるアクセス開始検出回路の一例を示す図である。
【図９】図５の半導体集積回路装置におけるクロック制御回路の一例を示す図である。
【図１０】半導体集積回路装置の第２実施例を示すブロック図である。
【図１１】図１０の半導体集積回路装置の動作を説明するためのタイミング図である。
【図１２】図１０の半導体集積回路装置におけるアドレス予測回路の一例を示す図である。
【図１３】図１０の半導体集積回路装置におけるアドレス比較回路の一例を示す図である。
【図１４】図１０の半導体集積回路装置におけるクロック制御回路の一例を示す図である。
【発明を実施するための形態】
【００２７】
以下、添付図面を参照して、半導体集積回路装置およびキャッシュメモリ制御方法の実施例を詳述する。
【００２８】
図５は半導体集積回路装置の第１実施例を示すブロック図であり、また、図６は図５の半導体集積回路装置の動作を説明するためのタイミング図である。
【００２９】
図５において、参照符号１００は処理ユニット(ＣＰＵ)，１０１はランダムロジック，１０２は内部フリップフロップ，そして，２００はキャッシュメモリ(ＳＲＡＭ)を示している。
【００３０】
さらに、参照符号４００はＣＰＵ高速化システム，４０１はアドレス予測回路，４０２はアクセス開始検出回路，４０３はクロック制御回路，４０４はセレクタ，そして，４０５は遅延回路(遅延用フリップフロップ)を示している。
【００３１】
なお、キャッシュメモリ２００は、例えば、システムＬＳＩ等の半導体集積回路装置に設けられるキャッシュメモリに限定されるものではなく、ＣＰＵ１００自体に内蔵される一次或いは二次キャッシュメモリであってもよい。
【００３２】
図５に示されるように、ＣＰＵ１００は、キャッシュメモリ２００にアクセスするためのポート(キャッシュアドレスおよびキャッシュデータ用端子)を有する。なお、実際には、その他に、キャッシュメモリ２００に対するチップセレクト，ライトイネーブルおよびライトデータ等のポートも有しているが、ここでは省略する。
【００３３】
ＣＰＵ高速化システム４００は、アドレス予測回路４０１，アクセス開始検出回路４０２，クロック制御回路４０３，セレクタ４０４，および，遅延用フリップフロップ４０５を有する。なお、ＣＰＵ高速化システム４００の名称は、例えば、図１の半導体集積回路装置との差異を明確化するために、便宜的に付したものである。
【００３４】
図５および図６に示されるように、ＣＰＵ１００からキャッシュメモリ２００に対して最初のリードアクセスが発生すると、そのリードアドレス(キャッシュアドレスＡ０)は、アドレス予測回路４０１およびセレクタ４０４に供給される。
【００３５】
なお、ＣＰＵ１００からアクセス開始検出回路４０２に対しては、最初のリードアクセスの発生を通知するために、例えば、キャッシュメモリ２００に対するチップセレクト信号ＣＳが供給されている。
【００３６】
そして、アクセス開始検出回路４０２は、ＣＰＵ１００からの最初のリードアクセスが発生したことを検出してアクセス開始信号ＡＳＳを出力(アサート)する。
【００３７】
アドレス予測回路４０１は、ＣＰＵ１００からのキャッシュアドレスＡ０に基づいて、次の(２回目の)ＣＰＵ１００からのリードアドレスＡ１を予測して生成する。
【００３８】
この予測リードアドレスＡ１は、セレクタ４００に供給され、同様に、３回目以降の予測リードアドレスＡ２，Ａ３，…も、アドレス予測回路４０１により生成され、セレクタ４００に供給される。
【００３９】
なお、後述するように、アドレス予測回路４０１には、アクセス開始信号ＡＳＳも供給され、また、予測アドレスは、例えば、ＣＰＵ１００の仕様に応じた所定の加算値が順次加算されて生成されるようになっている。
【００４０】
セレクタ４０４は、アクセス開始検出回路４０２からのアクセス開始信号ＡＳＳがアサートされると、ＣＰＵ１００からのリードアドレス(Ａ０)を選択する。
【００４１】
また、セレクタ４０４は、アクセス開始検出回路４０２からのアクセス開始信号がアサートされていない場合、すなわち、２回目以降のリードアドレスによる転送時には、アドレス予測回路４０１で生成された予測リードドレス(Ａ１，Ａ２，Ａ３，…)を選択する。
【００４２】
さらに、セレクタ４０４によって選択されたリードアドレスは、キャッシュメモリ２００のアドレス用端子に供給される。
【００４３】
そして、所定のリードアクセスタイムの後、キャッシュメモリ２００のリードデータ用端子からリードデータが出力され、遅延用フリップフロップ４０５の入力に供給される。
【００４４】
この遅延用フリップフロップ４０５のクロック端子には、後述するクロック制御回路４０３の出力信号(ＣＰＵクロック)ｃｌｋが供給され、リードデータを、例えば、ＣＰＵクロックｃｌｋの立ち上がりエッジで取り込んで、次の立ち上がりエッジで出力する。
【００４５】
この遅延用フリップフロップ４０５から出力された信号(遅延されたリードデータ)は、ＣＰＵ１００のキャッシュデータ用端子に供給され、例えば、内部のランダムロジック１０１を介して内部フリップフロップ１０２の入力端子に供給される。
【００４６】
これにより、例えば、ＣＰＵクロックｃｌｋの立ち上がりエッジで出力されたリードデータには、内部フリップフロップ１０２に供給されるまでに時間的な余裕が含まれることになる。
【００４７】
具体的に、ＣＰＵ１００からの最初のリードアクセスが発生すると、アクセス開始信号ＡＳＳにより、セレクタ４０４はキャッシュアドレスＡ０を選択し、また、クロック制御回路４０３はＣＰＵクロックｃｌｋの供給を１サイクルだけ停止する。
【００４８】
これにより、遅延用フリップフロップ４０５を介したリードデータがＣＰＵ１００にとって１サイクル遅れて到着することによる弊害を回避することが可能になる。
【００４９】
すなわち、図６に示されるように、ＣＰＵ１００からの最初のリードアクセスのアドレスＡ０に対応したデータＤ０を、内部フリップフロップ１０２までのセットアップマージンＳＭfを満たして提供することができる。
【００５０】
さらに、２回目以降のアクセスに対して、セレクタ４０４はアドレス予測回路４０１により生成されたアドレスＡ１，Ａ２，Ａ３，…を選択するため、キャッシュメモリ２００からのリードデータＤ１，Ｄ２，Ｄ３，…はクロックＣＬＫに同期して出力される。
【００５１】
これは、図６に示されるように、２回目以降のアクセスに対して、クロック制御回路４０３は、ＣＰＵクロックｃｌｋをクロックＣＬＫと同じタイミング(周波数)となるように制御するためである。
【００５２】
これにより、ＣＰＵ１００からの２回目以降のアクセスは，クロックＣＬＫと同じ周波数のＣＰＵクロックｃｌｋで動作させることができ、ＣＰＵ１００の性能劣化を抑えつつ動作周波数を高速化することが可能になる。
【００５３】
本第１実施例の半導体集積回路装置によれば、ＣＰＵ１００からの最初のアクセスのみ１サイクルのペナルティを持つだけで、ＣＰＵ１００の性能劣化を抑えることができる。
【００５４】
具体的に、例えば、ＣＰＵ１００によりキャッシュメモリ２００から連続した８個の読み出しが発生した場合を考えると、８＋１＝９サイクルかかるだけであり、８／９＝８９［％］となり、１１％の性能劣化に留めることができることになる。
【００５５】
さらに、ＣＰＵ１００とキャッシュメモリ２００間のリードデータのパスは、遅延用フリップフロップ４０５で区切られているため、ＣＰＵの動作周波数をさらに上げることが可能になる。
【００５６】
図７は図５の半導体集積回路装置におけるアドレス予測回路の一例を示す図であり、また、図８は図５の半導体集積回路装置におけるアクセス開始検出回路の一例を示す図である。さらに、図９は図５の半導体集積回路装置におけるクロック制御回路の一例を示す図である。
【００５７】
まず、図７に示されるように、アドレス予測回路４０１は、セレクタ４１１，加算回路４１２およびフリップフロップ４１３を有する。
【００５８】
セレクタ４１１は、ＣＰＵ１００からのキャッシュアドレスとフリップフロップ４１３の出力である予測アドレスを受け取り、アクセス開始検出回路４０２で生成されたアクセス開始信号ＡＳＳに従って選択する。
【００５９】
すなわち、セレクタ４１１は、ＣＰＵ１００からの最初のリードアクセスが発生してアクセス開始検出回路４０２からのアクセス開始信号ＡＳＳが出力されると(図６では、高レベル『Ｈ』になると)、キャッシュアドレスを選択して加算回路４１２に供給する。
【００６０】
さらに、セレクタ４１１は、ＣＰＵ１００からの２回目以降のリードアクセスに対しては、アクセス開始信号ＡＳＳが低レベル『Ｌ』になるため、予測アドレスを選択して加算回路４１２に供給する。
【００６１】
加算回路４１２は、セレクタ４１１で選択されたアドレスに対して、例えば、ＣＰＵ１００の仕様に応じた所定値(定数)を加算してフリップフロップ４１３の入力端子に供給する。
【００６２】
フリップフロップ４１３は、その入力端子に供給されたアドレスを、例えば、クロックＣＬＫの立ち上がりエッジで取り込み、その出力端子から予測アドレスとして出力する。
【００６３】
また、図８に示されるように、アクセス開始検出回路４０２は、フリップフロップ４２１，インバータ４２２およびＡＮＤゲート４２３を有する。
【００６４】
フリップフロップ４２１は、例えば、キャッシュメモリ２００へのチップセレクト信号ＣＳをその入力端子で受け取り、クロックＣＬＫの立ち上がりエッジで取り込む。
【００６５】
フリップフロップ４２１の出力信号は、チップセレクト信号ＣＳをインバータ４２２で反転した信号と共にＡＮＤゲート４２３に供給され、それらの論理積を取った信号がアクセス開始信号ＡＳＳとしてＡＮＤゲート４２３から出力される。
【００６６】
具体的に、例えば、チップセレクト信号ＣＳはローイネーブル信号であり、ＣＰＵ１００からキャッシュメモリ２００に対する最初のアクセスを検出して高レベル『Ｈ』となるアクセス開始信号ＡＳＳを生成する。
【００６７】
さらに、図９に示されるように、クロック制御回路４０３は、インバータ４３１，ＡＮＤゲート４３２およびフリップフロップ４３３を有する。
【００６８】
フリップフロップ４３３は、クロックＣＬＫの立ち上がりエッジでアクセス開始信号ＡＳＳをインバータ４３１で反転した信号を取り込み、フリップフロップ４３３の出力とクロックＣＬＫの論理積を取った信号がＣＰＵクロックｃｌｋとしてＡＮＤゲート４３２から出力される。
【００６９】
すなわち、図６に示されるように、ＣＰＵクロックｃｌｋは、キャッシュメモリ２００に対する最初のアクセスを検出して出力されるアクセス開始信号ＡＳＳが高レベル『Ｈ』になった次のサイクルは低レベル『Ｌ』のままで、クロックＣＬＫの２倍の周期の信号になる。
【００７０】
そして、ＣＰＵクロックｃｌｋは、キャッシュメモリ２００に対する２回目以降のアクセスに対しては、クロックＣＬＫと同じ周期の信号になる。
【００７１】
なお、図７に示すアドレス予測回路４０１、図８に示すアクセス開始検出回路４０２および図９に示すクロック制御回路４０３は、単なる例であり、様々に変形することができるのはもちろんである。
【００７２】
図１０は半導体集積回路装置の第２実施例を示すブロック図であり、また、図１１は図１０の半導体集積回路装置の動作を説明するためのタイミング図である。
【００７３】
図１０と前述した図５との比較から明らかなように、本第２実施例の半導体集積回路装置は、図５に示す第１実施例の半導体集積回路装置に対して、さらに、アドレス比較回路４０６を設けたものに相当する。
【００７４】
すなわち、第１実施例の半導体集積回路装置において、アドレス予測回路４０１は、常に、ＣＰＵ１００のキャッシュアドレスを正確に予測できるものではない。
【００７５】
そこで、アドレス予測回路が予測を失敗したとき、すなわち、アドレス予測回路が生成した予測アドレスが、ＣＰＵがキャッシュメモリにアクセスするアドレスとは相違するとき、それに対処するようにしたものが本第２実施例である。
【００７６】
図１０に示されるように、ＣＰＵ高速化システム４００’は、アドレス予測回路４０１’，アクセス開始検出回路４０２，クロック制御回路４０３’，セレクタ４０４，遅延用フリップフロップ４０５，および，アドレス比較回路４０６を有する。なお、ＣＰＵ高速化システム４００’の名称は、便宜的に付したものなのは前述した通りである。
【００７７】
まず、図１１に示されるように、ＣＰＵ１００がキャッシュメモリ２００にアクセスするキャッシュアドレスがＡ０→Ａ５→Ａ６→Ａ７に変化する場合を考える。
【００７８】
このとき、アドレス予測回路４０１’は、ＣＰＵ１００からのキャッシュアドレスの最初の値Ａ０から、２回目および３回目のアドレスをＡ１およびＡ２と予測する。すなわち、アドレス予測回路４０１’による予測アドレスは、Ａ０→Ａ１→Ａ２へと変化する。
【００７９】
図１０に示されるように、アドレス比較回路４０６は、ＣＰＵ１００からのキャッシュアドレスとアドレス予測回路４０１’で生成された予測アドレスとを比較し、両者のアドレス値が異なればアドレス予測失敗信号ＡＥＦＳを出力する。
【００８０】
上記のケースでは、アドレス予測回路４０１’が、キャッシュアドレスＡ５，Ａ６とは異なるアドレスＡ１，Ａ２を生成したために、アドレス比較回路４０６からアドレス予測失敗信号ＡＥＦＳがアサートされることになる。
【００８１】
このアドレス予測失敗信号ＡＥＦＳは、図１１に示されるように、例えば、クロックＣＬＫの２サイクルの期間だけアサートされる(高レベル『Ｈ』になる)。
【００８２】
クロック制御回路４０３’は、アドレス予測失敗信号ＡＥＦＳを受けて、ＣＰＵ１００へのＣＰＵクロックｃｌｋをクロックＣＬＫの２サイクルの期間だけ停止する。
【００８３】
このＣＰＵクロックｃｌｋの停止により、ＣＰＵ１００が受け取るキャッシュアドレスＡ０に対応するデータＤ０(遅延用フリップフロップ４０５の出力信号)もクロックＣＬＫの３サイクルの期間だけ保持される。
【００８４】
これは、アドレス予測回路４０１’によるアドレス予測の失敗がＣＰＵ１００に影響を及ぼさないようにするためである。
【００８５】
アドレス予測失敗信号ＡＥＦＳのアサートとＣＰＵクロックｃｌｋの停止の間、キャッシュメモリ２００へのリードアドレスは、Ａ０→Ａ１→Ａ２の後、図１２を参照して後述するように、アドレス予測回路４０１’によりＡ５になる。
【００８６】
ここで、キャッシュメモリ２００のクロックＣＬＫは、アドレス予測失敗信号ＡＥＦＳがアサートされていても供給され続けており、キャッシュメモリ２００から出力されたリードデータもＡ０，Ａ１，Ａ２に対応したデータＤ０，Ｄ１，Ｄ２が出力される。
【００８７】
これらのリードデータＤ０，Ｄ１，Ｄ２は、遅延用フリップフロップ４０５に供給されるが、この遅延用フリップフロップ４０５はＣＰＵクロックｃｌｋで動作するようになっている。
【００８８】
すなわち、遅延用フリップフロップ４０５は、アドレス予測失敗信号ＡＥＦＳがアサートされている間は最初に取りこんだデータＤ０のみをＣＰＵ１００に供給し、データＤ１およびＤ２はＣＰＵ１００に供給しないようになっている。
【００８９】
アドレス予測回路４０１’のアドレス予測の失敗により、次のメモリアドレスとしてＣＰＵ１００からのキャッシュアドレスＡ５がＣＰＵ高速化システム４００’に取り込まれる。
【００９０】
すなわち、後述するように、アドレス予測回路４０１’は、アドレス予測失敗信号ＡＥＦＳのアサートによりＣＰＵ１００からのキャッシュアドレスＡ５を予測アドレスとして出力する。
【００９１】
そして、アドレス比較回路４０６で比較されるアドレスが一致すると、アドレス予測失敗信号ＡＥＦＳはネゲート(解除)される。
【００９２】
このアドレス予測失敗信号ＡＥＦＳの解除により、ＣＰＵクロックｃｌｋの停止もＣＰＵクロック制御回路４０３’によって解除され、ＣＰＵ１００はリードアドレスＡ５の次のアドレスとしてＡ６をキャッシュアドレスとして駆動する。
【００９３】
なお、アドレス予測回路４０１’は、既に取り込んだアドレスＡ５から、予測アドレスＡ６，Ａ７を生成してメモリアクセスを行う。
【００９４】
図１２は図１０の半導体集積回路装置におけるアドレス予測回路の一例を示す図であり、また、図１３は図１０の半導体集積回路装置におけるアドレス比較回路の一例を示す図である。さらに、図１４は図１０の半導体集積回路装置におけるクロック制御回路の一例を示す図である。
【００９５】
まず、図１２に示されるように、アドレス予測回路４０１’は、セレクタ４１１’，加算回路４１２’およびフリップフロップ４１３を有する。
【００９６】
セレクタ４１１’は、ＣＰＵ１００からのキャッシュアドレスとフリップフロップ４１３の出力である予測アドレスを受け取り、アクセス開始検出回路４０２で生成されたアクセス開始信号ＡＳＳおよびアドレス予測失敗信号ＡＥＦＳに従って選択する。
【００９７】
すなわち、セレクタ４１１’は、前述した第１実施例のセレクタ４１１と同様に、アクセス開始信号ＡＳＳがアサート(高レベル『Ｈ』)されると、ＣＰＵ１００からのキャッシュアドレスを選択して加算回路４１２’に供給する。
【００９８】
また、セレクタ４１１’は、ＣＰＵ１００からの２回目以降のリードアクセスに対しては、アクセス開始信号ＡＳＳが低レベル『Ｌ』になるため、予測アドレスを選択して加算回路４１２に供給する。
【００９９】
さらに、セレクタ４１１’は、アドレス予測失敗信号ＡＥＦＳがアサート(高レベル『Ｈ』)されると、ＣＰＵ１００からのキャッシュアドレスを選択して加算回路４１２’に供給する。
【０１００】
ここで、アドレス予測失敗信号ＡＥＦＳは、加算回路４１２’にも供給され、アドレス予測失敗信号ＡＥＦＳがアサートされると、セレクタ４１１’からの入力アドレスをそのまま出力する。
【０１０１】
なお、アドレス予測失敗信号ＡＥＦＳがアサートされていないと、加算回路４１２’は、入力アドレスに対してＣＰＵ１００の仕様に応じた定数を加算してフリップフロップ４１３の入力端子に供給するのは、第１実施例の加算回路４１２と同様である。なお、フリップフロップ４１３も第１実施例と同様であり、その説明は省略する。
【０１０２】
これにより、図１１に示されるように、アドレス予測が失敗してアドレス比較回路４０６からアドレス予測失敗信号ＡＥＦＳがアサートされると、ＣＰＵ１００からのキャッシュアドレス(Ａ５)が予測アドレスとして出力されることになる。
【０１０３】
次に、図１３に示されるように、アドレス比較回路４０６は、フリップフロップ４６１および比較器４６２を有する。
【０１０４】
フリップフロップ４６１は、アドレス予測回路４０１’からの予測アドレスをクロックＣＬＫの立ち上がりエッジで取り込む。比較回路４６２は、フリップフロップ４６１の出力信号(予測アドレス)とＣＰＵ１００からのキャッシュアドレスを比較し、両者のアドレス値が異なればアドレス予測失敗信号ＡＥＦＳを出力する。
【０１０５】
そして、図１４に示されるように、クロック制御回路４０３’は、インバータ４３１，４３５，３入力ＡＮＤゲート４３２’およびフリップフロップ４３３，４３４を有する。
【０１０６】
フリップフロップ４３４は、クロックＣＬＫの立ち上がりエッジでアドレス予測失敗信号ＡＥＦＳを取り込む。
【０１０７】
３入力ＡＮＤゲート４３２’は、フリップフロップ４３４の出力信号をインバータ４３５で反転した信号と、アクセス開始信号ＡＳＳをインバータ４３１で反転した後クロックの立ち上がりエッジで取り込むフリップフロップ４３３の出力と、クロックＣＬＫを受け取り、それらの論理積を取ってＣＰＵクロックｃｌｋを生成する。
【０１０８】
これにより、図１１に示されるように、ＣＰＵクロックｃｌｋは、第１実施例と同様に、アクセス開始信号ＡＳＳが高レベル『Ｈ』になった次のサイクル期間は低レベル『Ｌ』のままで、クロックＣＬＫの２倍の周期の信号になる。
【０１０９】
さらに、ＣＰＵクロックｃｌｋは、アドレス予測失敗信号ＡＥＦＳを受けて、ＣＬＫの２サイクルの期間だけ停止することになる。
【０１１０】
以上において、アドレス予測回路が予測を失敗すると動作遅延が生じることになるが、例えば、キャシュメモリに保持されるデータは、連続した所定の容量を有するデータであるため、アドレス予測が失敗しても、それによる動作遅延の影響は、実用上殆どない。
【０１１１】
なお、アクセス開始検出回路４０２，セレクタ４０４および遅延用フリップフロップ４０５は、第１実施例と同様でありその説明は省略する。また、図１２に示すアドレス予測回路４０１’、図１３に示すアドレス比較回路４０６および図１４に示すクロック制御回路４０３’は、単なる例であり、様々に変形することができるのはいうまでもない。
【符号の説明】
【０１１２】
１００    処理ユニット(ＣＰＵ)
１０１    ランダムロジック
１０２    内部フリップフロップ
２００    キャッシュメモリ
３００    フリップフロップ
３０１    ＣＰＵクロック制御回路
４００，４００’    ＣＰＵ高速化システム
４０１，４０１’    アドレス予測回路
４０２    アクセス開始検出回路
４０３，４０３’    クロック制御回路
４０４    セレクタ
４０５    遅延回路(遅延用フリップフロップ)
４０６    アドレス比較回路
ＡＥＦＳ    アドレス予測失敗信号
ＡＳＳ    アクセス開始信号
ＣＬＫ    クロック
ｃｌｋ    処理クロック(ＣＰＵクロック)
【図１】
0005471437.tif 000002
【図２】
0005471437.tif 000003
【図３】
0005471437.tif 000004
【図４】
0005471437.tif 000005
【図５】
0005471437.tif 000006
【図６】
0005471437.tif 000007
【図７】
0005471437.tif 000008
【図８】
0005471437.tif 000009
【図９】
0005471437.tif 000010
【図１０】
0005471437.tif 000011
【図１１】
0005471437.tif 000012
【図１２】
0005471437.tif 000013
【図１３】
0005471437.tif 000014
【図１４】
0005471437.tif 000015