(57)【特許請求の範囲】
【請求項１】
インデックスされたキャッシュラインのタグ情報を用いる連想動作が可能なセットアソシアティブ型のキャッシュメモリを有するデータ処理装置であって、
前記キャッシュメモリは、前記連想動作に並行して予測に基づくウェイ選択を行うウェイ予測手段と、前記ウェイ予測手段による予測ミスに起因するペナルティサイクル中に、後続アクセスアドレスを用いた連想動作に基づいてウェイ選択確定情報を生成する生成手段と、前記ペナルティサイクル後の前記後続アクセスアドレスに対して、前記ウェイ選択確定情報によりウェイを選択させる制御手段と、を含んで成るものであることを特徴とするデータ処理装置。
【請求項２】
インデックスされたキャッシュラインのタグ情報を用いる連想動作が可能なセットアソシアティブ型のキャッシュメモリを有するデータ処理装置であって、
前記キャッシュメモリは、前記連想動作に並行して予測に基づくウェイ選択を行うウェイ予測手段と、キャッシュミスに起因するペナルティサイクル中に、後続アクセスアドレスを用いた連想動作に基づいてウェイ選択確定情報を生成する生成手段と、前記ペナルティサイクル後の前記後続アクセスアドレスに対して、前記ウェイ選択確定情報によりウェイを選択させる制御手段と、を含んで成るものであることを特徴とするデータ処理装置。
【請求項３】
前記制御手段は、前記ウェイ予測手段による予測に代えて前記ウェイ選択確定情報によりウェイを選択させるものであることを特徴とする請求項１又は２記載のデータ処理装置。
【請求項４】
前記制御手段は、前記ウェイ選択確定情報に対応するところの前記ウェイ予測手段による予測結果情報を書換え制御するものであることを特徴とする請求項１又は２記載のデータ処理装置。
【請求項５】
インデックスされたキャッシュラインのタグ情報を用いる連想動作が可能なセットアソシアティブ型のキャッシュメモリを有するデータ処理装置であって、
前記キャッシュメモリは、前記連想動作に並行して予測に基づくウェイ選択を行うウェイ予測手段と、前記ウェイ予測手段による予測ミスに起因するペナルティサイクル中に、後続アクセスアドレスのキャッシュミスに応答する外部メモリアクセスの指示を発行する制御手段と、を含んで成るものであることを特徴とするデータ処理装置。
【請求項６】
前記連想動作は、アクセスアドレス情報に含まれる所定のアドレス情報を、インデックスされたキャッシュラインの各ウェイのタグ情報と比較し、ウェイ毎に連想ヒット又は連想ミスを示す連想結果信号を生成する動作であることを特徴とする請求項１乃至５の何れか１項記載のデータ処理装置。
【請求項７】
前記ウェイ予測手段による予測は、キャッシュライン毎のウェイ選択の履歴情報に基づいて、最も最近選択されたウェイを選択ウェイとする処理であることを特徴とする請求項１乃至５の何れか１項記載のデータ処理装置。
【請求項８】
インデックスされたキャッシュラインのタグ情報を用いる連想動作が可能なセットアソシアティブ型のキャッシュメモリと、前記キャッシュメモリに接続されたＣＰＵとを有するデータプロセッサであって、
前記キャッシュメモリは、複数のウェイ及びキャッシュ制御手段を有し、
前記キャッシュ制御手段は、前記ＣＰＵのアクセス動作に応答して、前記連想動作に並行して予測に基づくウェイ選択を行い、予測選択ウェイが連想動作結果に不一致となる予測ミスに起因するペナルティサイクル中、又はキャッシュミスに起因するペナルティサイクル中に、後続アクセスアドレスを用いた連想動作に基づいてウェイ選択確定情報を生成し、前記ペナルティサイクル後の前記後続アクセスアドレスには前記ウェイ選択確定情報によりウェイを選択させる制御を行うものであることを特徴とするデータプロセッサ。
【請求項９】
前記キャッシュ制御手段は、前記予測ミスに起因するペナルティサイクル中に、後続アクセスのキャッシュミスに対して外部メモリアクセスの指示を発行するものであることを特徴とする請求項８記載のデータプロセッサ。
【請求項１０】
前記キャッシュ制御手段は、キャッシュライン毎のウェイ選択の履歴情報を記憶する記憶手段を有し、履歴情報は最も最近アクセスされた情報に応ずるウェイを選択ウェイとする情報であることを特徴とする請求項８記載のデータプロセッサ。
【請求項１１】
前記キャッシュ制御手段は、インデックスされたキャッシュラインの中から選ばれた最新のアクセスウェイを後の予測で指定可能とするように、前記履歴情報を更新するものであることを特徴とする請求項１０記載のデータプロセッサ。
【請求項１２】
前記キャッシュ制御手段はキャッシュラインをインデックスするアドレス情報により前記記憶手段から前記履歴情報を読み出し、読み出した履歴情報に基づいてウェイの予測選択を行うものであることを特徴とする請求項１０記載のデータプロセッサ。
【請求項１３】
前記キャッシュ制御手段は、インデックスされたキャッシュラインに含まれるタグ情報に基づいてキャッシュミス又はウェイ選択の予測ミスが発生したか否かを判定し、キャッシュヒット且つ予測ミスの判定結果に応答してウェイの選択をやり直し且つアクセス対象キャッシュラインに対応する前記履歴情報を更新し、キャッシュミスの判定結果に応答してアクセス対象キャッシュラインをリプレースするために外部アクセスを指示し且つリプレース対象キャッシュラインに対応する前記履歴情報を更新するものであることを特徴とする請求項１０記載のデータプロセッサ。
【請求項１４】
１個の半導体チップに形成されて成るものであることを特徴とする請求項８乃至１３の何れか１項記載のデータプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、キャッシュメモリを持つマイクロプロセッサやＤＳＰ（ディジタル信号処理プロセッサ）等のデータ処理装置もしくはデータプロセッサに係り、特にウェイ予測機能を用いるキャッシュ制御技術に適用して有効な技術に関する。
【０００２】
【従来の技術】
マイクロプロセッサ、ＤＳＰ等のデータ処理装置において，プロセッサが外部メモリとのデータ転送を極力減らし、性能を向上するために、高速動作可能なオンチップキャッシュメモリが一般的に搭載される。キャッシュメモリにヒットした場合、外部メモリへのアクセスサイクルを隠蔽することができ、高性能化が達成できるからである。また、消費電力の観点からも、キャッシュメモリ自体は電力を消費するが、外部入出力ピンもしくは外部入出力バッファ回路の駆動を必要としない等によりメモリ制御に伴う消費電力を低減することができ、プロセッサ全体として低消費電力化に寄与することが可能である。
【０００３】
キャッシュメモリの構成として、一定の大きさのブロックを単位として、外部メモリデータをキャッシュ内のデータに対応づけるマッピング方式として、ダイレクトマッピング方式、セットアソシアティブ方式、フルアソシアティブ方式がある。
【０００４】
ここで、ブロックの大きさをＢバイト、キャッシュ内のブロック数をｃとすると、外部メモリのアドレスａのバイトが含まれるブロックの番号ｍはａ／Ｂの整数部になる。
【０００５】
ダイレクトマッピング方式では、番号ｍの外部メモリのブロックはモジュロ演算式ｍ  ｍｏｄ  ｃで現されるキャッシュメモリ内の番号のブロックに一意的にマッピングされる。ダイレクトマッピングでは、キャッシュ内の同一ブロックに割り当てられ得る複数のブロックが同時に使用されると衝突が発生してキャッシュヒット率が低下する。これに対してフルアソシアティブ方式では、外部メモリのどのブロックもキャッシュメモリのどのブロックにでもマッピング可能とする方式である。しかしながら、フルアソシアティブ方式では、キャッシュの全ブロックを各アクセス毎に連想検索しなければならず、実用的なキャッシュ容量では、実現困難である。このため、実用的には、両者の中間のセットアソシアティブ方式が一般的に用いられる。セットアソシアティブ方式は、ｎ（Ｎ＝２、４又は８程度)個のキャッシュ内ブロックをまとめた単位をセットと定義し、このセットに対してはダイレクトマッピングを適用し、セット内のブロックに対しては、フルアソシアティブマッピングを適用することによって、両者の長所を生かす方法で、ｎの値によりｎウェイセットアソシアティブ方式と称される。
【０００６】
しかしながら、アクセス時間の観点ではセットアソシアティブ方式はダイレクトマッピング方式に劣る。一般的にキャッシュの１ライン（１キャッシュエントリ）はキャッシュに格納されているアドレスを示すタグと格納データで構成されるが、セット内のどのブロック（ウェイ）のデータ読み出せば良いかが、アクセスアドレスとタグの比較結果に依存するからである。ダイレクトマッピング方式では、読み出すべきデータは、アクセスアドレスにより一意に決定されるため、キャッシュ読み出しに要する時間はダイレクトマッピング方式が最も有利である。
【０００７】
また、消費電力の観点からもダイレクトマッピング方式が最も有利である。なぜなら、セットアソシアティブ方式では、セット内の全てのブロック（ウェイ）のタグを読み出す必要があることのみならず、高速に読み出しデータを確定させるために、データの読み出しもヒットしたウェイの決定を待たずに候補となる全ウェイのデータを読み出しておく制御が一般に行われるためである。
【０００８】
以上説明したダイレクトマッピング方式とセットアソシアティブ方式の両者の長所、すなわち、セットアソシアティブ方式のキャッシュの高ヒット率による高性能と、ダイレクトマッピング方式の各アクセス毎のキャッシュ検索を短時間で行えることによる高速化の両方を享受できる方法として、ウェイ予測セットアソシアティブ方式がある。
【０００９】
ウェイ予測セットアソシアティブ方式では、参照ラインが存在する唯一のウェイをタグ比較とは独立に予測することで、ヒットしたウェイの決定を待たずに読み出しデータを確定できるため、ダイレクトマッピング方式の高速読み出しを行えると同時に、セットアソシアティブ方式のキャッシュの高ヒット率を達成することができる。この種のウェイ予測セットアソシアティブ方式について記載された文献の例として特開平７−３３４４２３号公報が有る。
【００１０】
【発明が解決しようとする課題】
上述のウェイ予測セットアソシアティブ方式では、通常のキャッシュヒット、キャッシュミスの他に、キャッシュにはヒットしているが、予測ウェイを誤る場合が存在し、これを予測ミスと称する。本方式では以下の３つの状態がある。即ち、▲１▼予測ヒット（：通常のキャッシュヒットであり、且つウェイ予測が正しい場合）、▲２▼予測ミス（：通常のキャッシュヒットであり、且つウェイ予測が誤りの場合９、▲３▼キャッシュミス（：キャッシュリプレースの発生する通常のキャッシュミス）である。
【００１１】
予測ヒットの場合の実行サイクルは通常１サイクルであり、キャッシュミスの場合の実行サイクルは外部メモリへのアクセス時間で決まり、ダイレクトマッピング方式や通常のセットアソシアティブ方式と同一である。予測ミスが発生すると、リードアクセスの場合は改めて正しいウェイへアクセスする必要があるため、ペナルティサイクルが発生する。一般的に高速で動作するプロセッサはパイプライン構成を採用しており、次々と連続するキャッシュアクセスを処理するために、キャッシュ制御部はウェイの予測がヒットするものと想定して動作するために、ウェイ予測ミスの次の実行サイクルでは、当該次のアクセスの処理を行う制御を開始している。このような制御を行うため、改めて正しいウェイへアクセスするのは更にその次のサイクルになり、予測ミス発生時には、２サイクルもしくはそれ以上のペナルティサイクルが挿入されることになる。ライトアクセスの場合でウェイ予測にしたがって投機的に書き込みを行なう場合には、予測ミスが発生すると、既に書き込みを行ったウェイに対しては元の正しいデータをリカバリする必要があり、正しいウェイへ改めて書き込みを行う必要がある。
【００１２】
本発明者はそのような予測ミスによるペナルティサイクルについて更に検討した。例えばリードアクセスが連続するとき、予測ミスを生ずると、キャッシュメモリは正規の連想動作によるペナルティサイクルを実行し、その間、ＣＰＵでは当該予測ミスに係る命令実行サイクル（若しくはメモリアクセスサイクル）の次の命令実行サイクルがストールされ、後続の処理がウェイト若しくは待ち状態にされる。その間、キャッシュメモリは予測ミスに係るアクセスに対するペナルティサイクルを実行しているだけである。これにより、連続アクセスに対し連続する予測ミスを生ずると、予測ミス毎に毎回ペナルティサイクルが累積され、ＣＰＵによるメモリアクセスが著しく遅れる虞のあることが本発明者によって明らかにされた。キャッシュミスと予測ミスが前後して発生する場合も、同じように、夫々のミス毎に毎回ペナルティサイクルが累積される事情は同じである。
【００１３】
本発明の目的は、上述の予測ミスが連続して発生し、或はキャッシュミスと予測ミスが前後して発生する場合に、ペナルティサイクルの累積回数を低減させることができ、ひいてはＣＰＵ等によるデータ処理性能もしくはデータ処理速度向上に寄与することができるデータ処理装置もしくはデータプロセッサを提供することにある。
【００１４】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【００１５】
【課題を解決するための手段】
〔１〕《連続するウェイ予測ミスの発生防止》本発明の第１の観点は、連続するウェイ予測ミスの発生を防止するために、予測ミスに後続するアクセスのアクセスウェイを予め確定させることにある。この観点に立つデータ処理装置は、インデックスされたキャッシュラインのタグ情報を用いる連想動作が可能なセットアソシアティブ型のキャッシュメモリを有する。前記キャッシュメモリは、前記連想動作に並行して予測に基づくウェイ選択を行うウェイ予測手段（１３）と、前記ウェイ予測手段による予測ミスに起因するペナルティサイクル中に、後続アクセスアドレスを用いた連想動作に基づいてウェイ選択確定情報を生成する生成手段（３０）と、前記ペナルティサイクル後の前記後続アクセスアドレスに対して、前記ウェイ選択確定情報によりウェイを選択させる制御手段（３１，３１Ａ）と、を含んで成る。
【００１６】
前記連想動作は、例えば、アクセスアドレス情報に含まれる所定のアドレス情報を、インデックスされたキャッシュラインの各ウェイのタグ情報と比較し、ウェイ毎に連想ヒット又は連想ミスを示す連想結果信号を生成する動作である。
【００１７】
また、前記ウェイ予測手段による予測は、例えば、キャッシュライン毎のウェイ選択の履歴情報に基づいて、最も最近選択されたウェイを選択ウェイとする処理である。
【００１８】
前記制御手段（３１）は、前記ウェイ予測手段による予測に代えて前記ウェイ選択確定情報によりウェイを選択させるものである。或は、前記制御手段（３１Ａ）は、前記ウェイ選択確定情報に対応するところの前記ウェイ予測手段による予測結果情報を書換え制御するものである。
【００１９】
上記データ処理装置において、例えばＣＰＵが連続リードアクセスを行う場合、第１リードアクセスでは、先ず、インデックスされたキャッシュラインのタグ情報がＣＰＵからのアクセスアドレスと比較され、その比較結果から、キャッシュヒット又はキャッシュミスが判定される。判定結果は制御手段に保持されている。これに並行して、履歴情報を使用したアルゴリズムにしたがってウェイの選択（ウェイ予測選択）が行われ、選択されたウェイのデータがリードデータとしてＣＰＵに与えられる。制御手段は前記キャッシュヒット又はキャッシュミスの判定結果に基づいてウェイ予測が正しかったかを認識することができる。例えば、キャッシュヒットに係るウェイが履歴情報に基づくウェイ予測に一致するかを認識する。ウェイ予測が正しければ、それによって、第１リードアクセスに応答するキャッシュ動作を終了し、次のサイクルでは後続の第２リードアクセスに対する処理が可能になる。キャッシュミスが発生した場合は、従来のダイレクトマッピング方式やセットアソシアティブ方式と同様、外部メモリをアクセスして、キャッシュエントリのリプレースを行う必要がある。当然この場合にはリプレースなどの処理が完了されて正規のリードデータがＣＰＵに供給されるまでＣＰＵには第１リードアクセスの未完了が通知される。また、キャッシュヒットであってもウェイ予測が誤っていた場合、高速動作設計されたキャッシュメモリにおいて、次のサイクルを第１リードアクセスにおける正しいウェイへの再アクセスに切換えることが時間的に困難であり、当該次のサイクルでは、結果としてＣＰＵからの第２リードアクセスのためのアドレス情報などがキャッシュメモリに伝達されることになる。この時、キャッシュメモリはそのままアドレスアレイを動作させ、アドレスアレイから出力されるタグとＣＰＵからの第２リードアクセスのアドレスとを比較する。制御手段はその比較結果をＣＰＵからの第２リードアクセスに対する各ウェイの比較結果として、後から利用するために保存しておく。この段階では、ＣＰＵの第１リードアクセスに対する処理が未だ完了していないので、その次のサイクルでは、再度、第１リードアクセスのアドレスを使用してデータアレイを読み出す。その読み出しデータに対しては、前記制御手段が先に取得して保存している第１リードアクセスに対するタグとアドレスとの比較結果を直接用いてアクセスウェイを選択することができる。この比較結果を直接用いてアクセスウェイを選択する操作に代えて、先ず、その比較結果を用いて当該ウェイが予測選択対象にされるように対応するキャッシュラインの履歴情報を予め更新しておく。これにより、再アクセスのウェイ予測を必ずヒットさせることを保証できるから、第１リードアクセスの再アクセスにも履歴情報を用いたウェイの選択を行ってもよい。このように、第１のリードアクセス処理はこのサイクルで必ず完了し、次のサイクルには第２のアクセスを処理することになる。第１リードアクセスの予測ミスに続く第２リードアクセスでは、既に第２リードアクセスのアドレスとタグとの比較結果が制御手段に蓄えられているから、第２リードアクセスに対する処理では、履歴情報を使用したアルゴリズムに従うウェイ予測に代えて、前記既に取得されている比較結果を用いることにより、第２リードアクセスに対する予測内容に拘わらず、絶対的に正しいアクセスウェイを選択してデータをＣＰＵに供給することができる。したがって、キャッシュヒットに係る第２リードアクセスに関してはペナルティサイクルの発生する余地すらない。
【００２０】
このように前記データ処理装置は、ＣＰＵからの連続したリードアクセスを処理する場合に、第１のリードアクセスがウェイ予測ミスを起こした場合に必要となるペナルティサイクルの間に、後続のリードアクセスがヒットするウェイの選択確定情報を予め得て記憶し、これを第２リードアクセスにおけるウェイ選択に利用する。したがって、連続したウェイ予測ミスを防ぐことができる。これにより、ウェイ予測形式のセットアソシアティブ型キャッシュメモリは、セットアソシアティブ方式のキャッシュヒット性能を維持しつつ、ダイレクトマッピング方式と同じような高速動作を可能にすることができる。
【００２１】
上記作用説明は連続するリードアクセスを一例とするが、アクセスは特にリードに限定されるものではなく、ライト等の他のアクセスであってもよい。
【００２２】
〔２〕《キャッシュミスに後続するアクセスのウェイ確定》本発明の第２の観点は、キャッシュミスに後続するウェイ予測ミスの発生を防止するために、キャッシュミスに後続するアクセスのアクセスウェイを予め確定させることにある。要するに、前記第１のリードアクセスのようなアクセスはウェイ予測ミスに限らず、ペナルティサイクルが発生する処理であればキャッシュミス等であってもよい。この観点に立つデータ処理装置は、インデックスされたキャッシュラインのタグ情報を用いる連想動作が可能なセットアソシアティブ型のキャッシュメモリを有するデータ処理装置である。前記キャッシュメモリは、前記連想動作に並行して予測に基づくウェイ選択を行うウェイ予測手段と、キャッシュミスに起因するペナルティサイクル中に、後続アクセスアドレスを用いた連想動作に基づいてウェイ選択確定情報を生成する生成手段と、前記ペナルティサイクル後の前記後続アクセスアドレスに対して、前記ウェイ予測手段による予測に代えて前記ウェイ選択確定情報によりウェイを選択させる制御手段と、を含んで成る。
【００２３】
〔３〕《ウェイ予測ミスに後続するアクセスのキャッシュミスに応答する外部アクセス指示の先行発行》本発明の第３の観点は、ウェイ予測ミスに後続するアクセスのキャッシュミスに応答する外部アクセス指示を先行発行することにある。要するに、前記第２のリードアクセスのようなアクセスがキャッシュミスである場合を想定する。この観点に立つデータ処理装置は、インデックスされたキャッシュラインのタグ情報を用いる連想動作が可能なセットアソシアティブ型のキャッシュメモリを有する。前記キャッシュメモリは、前記連想動作に並行して予測に基づくウェイ選択を行うウェイ予測手段と、前記ウェイ予測手段による予測ミスに起因するペナルティサイクル中に、後続アクセスアドレスのキャッシュミスに応答する外部メモリアクセスの指示を発行する制御手段と、を含んで成る。これにより、ウェイ予測ミスに後続するアクセスがキャッシュミスである場合に、これを早く検出して、外部メモリアクセスを早く起動することが可能になる。
【００２４】
〔４〕《ウェイ予測機能の選択》本発明の第４の観点に係るデータ処理装置には、前記連想動作の結果に応じてウェイ選択を行う制御手段と、前記連想動作に並行して予測に基づくウェイ選択を行うウェイ予測手段と、ウェイ選択に前記制御手段又は前記ウェイ予測手段の何れを用いるかを切換え可能に選択する選択手段と、を含むキャッシュメモリを採用する。換言すれば、前記連想動作の結果に応じてウェイ選択を行う第１動作モードと、前記連想動作に並行して予測に基づくウェイ選択を行う第２動作モードと、を切換え可能に指示する指示手段を含んだキャッシュメモリを採用する。前記指示手段を内蔵ＣＰＵによってアクセス可能なレジスタ手段とすれば、キャッシュメモリの動作モードをＣＰＵのソフトウェアで設定可能になる。
【００２５】
〔５〕本発明の更に別の観点によるデータプロセッサは、インデックスされたキャッシュラインのタグ情報を用いる連想動作が可能なセットアソシアティブ型のキャッシュメモリと、前記キャッシュメモリに接続されたＣＰＵとを有し、例えば１個の半導体基板に形成される。前記キャッシュメモリは、複数のウェイ及びキャッシュ制御手段を有する。前記キャッシュ制御手段は、前記ＣＰＵのアクセス動作に応答して、前記連想動作に並行して予測に基づくウェイ選択行い、予測選択ウェイが連想動作結果に不一致となる予測ミスに起因するペナルティサイクル中、又はキャッシュミスに起因するペナルティサイクル中に、後続アクセスアドレスを用いた連想動作による検索ヒットに基づいてウェイ選択確定情報を生成し、前記ペナルティサイクル後の前記後続アクセスアドレスには前記予測に基づくウェイ選択に代えて前記ウェイ選択確定情報によりウェイを選択させる制御を行う。前記制御手段は、前記ウェイ選択確定情報に対応するところの前記ウェイ予測手段による予測結果情報を書換え制御するようにしてもよい。
【００２６】
前記キャッシュ制御手段は、前記予測ミスに起因するペナルティサイクル中に、後続アクセスのキャッシュミスに対して、メモリコントローラ若しくはバスステートコントローラに、外部メモリアクセスの指示を発行するように構成してよい。
【００２７】
前記キャッシュ制御手段は、例えばキャッシュライン毎のウェイ選択の履歴情報を記憶する記憶手段を有し、履歴情報は最も最近アクセスされた情報に応ずるウェイを選択ウェイとする情報である。
【００２８】
前記キャッシュ制御手段は、インデックスされたキャッシュラインの中から選ばれた最新のアクセスウェイを後の予測で指定可能とするように、前記履歴情報を更新するものである。
【００２９】
前記キャッシュ制御手段はキャッシュラインをインデックスするアドレス情報により前記記憶手段から前記履歴情報を読み出し、読み出した履歴情報に基づいてウェイの予測選択を行うものである。
【００３０】
前記キャッシュ制御手段は、インデックスされたキャッシュラインに含まれるタグ情報に基づいてキャッシュミス又はウェイ選択の予測ミスが発生したか否かを判定し、キャッシュヒット且つ予測ミスの判定結果に応答してウェイの選択をやり直し且つアクセス対象キャッシュラインに対応する前記履歴情報を更新し、キャッシュミスの判定結果に応答してアクセス対象キャッシュラインをリプレースするために外部アクセスを指示し且つリプレース対象キャッシュラインに対応する前記履歴情報を更新するものである。
【００３１】
【発明の実施の形態】
図１には本発明の一例に係るデータプロセッサが示される。同図に示されるデータプロセッサ４は、特に制限されないが、ＣＭＯＳ集積回路製造技術などによって単結晶シリコンなどの１個の半導体基板（半導体チップ）に形成される。データプロセッサ４は、代表的に示されたＣＰＵ(中央処理装置)１、キャッシュ部２、及びメモリ制御部３を有する。
【００３２】
ＣＰＵ１は、フェッチした命令を解読して制御信号を生成する命令制御部と、前記命令制御部の制御を受けて演算処理を行う実行部とを有する。６はアドレスバス、７はデータバス、８はコントロールバスであり、ＣＰＵ１は、それらバス６〜８を介してキャッシュ部２に接続される。ＣＰＵ１がメモリアクセスを行う場合には、実効アドレスはアドレスバス６に出力される。コントロールバス８にはリード信号、ライト信号などのストローブ信号が出力される。リードデータはデータバス７を介してＣＰＵ１に供給され、ＣＰＵ１はライトデータをデータバス７に出力する。
【００３３】
前記キャッシュ部２は、ウェイ予測機能付きの２ウェイセットアソシアティブキャッシュメモリとして構成される。図１に示されるキャッシュ部２の構成は、専らＣＰＵ１からのリードアクセスに応答するための構成を主体に例示してある。ＣＰＵ１のライトアクセス時におけるデータ経路の詳細については図示を省略している。
【００３４】
前記キャッシュ部２は２個のウェイ１０，１１、キャッシュ制御部１２、履歴情報記憶部１３、及びセレクタ１４，１５を有する。
【００３５】
ウェイ１０は、アドレスアレイ１６、データアレイ１７、及び比較器１８を有する。アドレスアレイ１６及びデータアレイ１７は、アドレスバス６から供給されるアドレス信号の下位側の一部をインデックスアドレス信号として共通に入力し、そのインデックスアドレス信号で選択される情報記憶領域領域としてキャッシュラインを有する。夫々のキャッシュラインは、特に制限されないがデータアレイ１７の側にデータ情報が格納され、アドレスアレイ１６の側にタグ情報等が格納される。比較器１８はインデックスされたキャッシュラインのタグ情報と、アクセスアドレス情報としてのアドレス信号のそれに対応するタグアドレス情報とを比較して、連想ヒット又は連想ミスを示す連想結果信号１９Ａを生成する。ウェイ１１も同様であり、図示を省略するアドレスアレイ、データアレイ、及び比較器を有し、図示を省略する比較器はインデックスされたキャッシュラインのタグ情報と、アドレス信号のそれに対応するタグアドレス情報とを比較して、連想ヒット又は連想ミスを示す連想結果信号１９Ｂを生成する。前記アクセスアドレス情報に含まれるタグアドレス情報を、インデックスされたキャッシュラインの各ウェイのタグ情報と比較し、ウェイ毎に連想ヒット又は連想ミスを示す連想結果信号１９Ａ，１９Ｂを生成する動作を、ここでは連想動作と称する。
【００３６】
前記セレクタ１５はウェイ１０，１１のデータアレイ１７から出力されるデータを選択する。セレクタ１４はセレクタ１５の選択制御信号として、履歴情報記憶部１３が出力するウェイ予測信号２２、又はキャッシュ制御部１２が出力するウェイ確定信号２３を選択する。セレクタ１４の選択信号２４はキャッシュ制御部１２が出力する。尚、セレクタ１５で選択されるデータ語長が例えばロングワード（３２ビット）のようなアクセス単位を超えるビット数（例えば１２８ビット）の場合には、アドレス信号の最下位側数ビット（例えばバイトアドレスの場合の4ビット）を用いて図示を省略する別のセレクタを用いて前記３２ビットを選択すればよい。
【００３７】
前記履歴情報記憶部１３はキャッシュライン毎のウェイ選択の履歴情報を保有し、履歴情報はキャッシュラインのインデックス動作に呼応して当該インデックスアドレス信号で選択される。この例では２ウェイであるから、履歴情報は１ビットで済み、インデックスアドレスで選択された履歴情報がウェイ予測信号２２とされる。このウェイ予測信号２２は対応するキャッシュラインにおいて最も最近選択されたウェイの選択を意味する信号とされる。
【００３８】
図１において、前記キャッシュ制御部１２は、インデックスされたキャッシュラインに含まれるタグ情報に基づいてキャッシュミス又はウェイ選択予測ミスが発生したか否かを判定する。キャッシュミスは前記連想結果信号１９Ａ，１９Ｂの双方が比較不一致を意味する状態である。前記連想結果信号１９Ａ，１９Ｂの何れか一方が比較一致を意味する状態がキャッシュヒットである。前記予測ミスは、キャッシュヒットにおいてヒットに係るウェイと前記ウェイ予測信号２２で示されるウェイが不一致の状態である。両者が一致する状態が予測ヒットである。
【００３９】
前記キャッシュ制御部１２による判定結果が予測ヒットである場合にはその時のキャッシュ動作は正常終了とされ、前記キャッシュ制御部１２はアクセス完了信号２５を活性化してＣＰＵ１に返す。ＣＰＵ１はアクセス完了信号２５の活性化により、そのときのデータバス７上のデータをアクセスデータとして認識する。要するに、ＣＰＵ１にとってアクセス完了信号２５はデータストローブ信号として機能する。
【００４０】
キャッシュ動作の異常終了は、予測ミス、キャッシュミスの場合である。一般に、高速で動作するデータプロセッサはパイプライン構成を採用しており、次々と連続するキャッシュアクセスを処理するために、キャッシュ制御部１２はウェイの予測がヒットするものと想定して動作する。これにより、ＣＰＵ１は、ウェイ予測ミスやキャッシュミスを生じても次の実行サイクルのためのアドレス出力動作などを開始してしまう。要するにＣＰＵは次の動作までオーバーランしてしまう。其の後、ＣＰＵ１はアクセス動作をウェイト状態とし、ミスに係るアクセス動作のペナルティサイクルが完了されて、アクセス完了信号２５がアサートされるのを待って、制御動作を再開する。
【００４１】
前記キャッシュ制御部１２は、そのようなペナルティサイクルとして、例えば予測ミスの判定結果に応答して、連想動作によるキャッシュヒットに係るウェイの選択をデータアレイでやり直す。且つ、インデックスされたキャッシュラインに対応する前記履歴情報を、当該やり直し動作で選択されるウェイが予測最優先とされるように履歴更新データ２６で更新する。例えば予測動作でウェイ１０が予測され、連想動作でウェイ１１が選択されるとき、当該キャッシュラインの履歴情報は、ウェイ予測信号２２がウェイ１１を意味するように履歴更新データ２６で更新される。このやり直し動作、即ちペナルティサイクル中に、ウェイ１０，１１はＣＰＵ１のオーバーラン動作で与えられる次のアクセスアドレスに対する連想動作も並行して行う。この並行する連想動作の結果がキャッシュヒットの場合、その連想結果を、後続アクセスに対するウェイ選択確定情報２３としてウェイ確定生成部３０に保持する。ウェイ確定生成部３０に保持したウェイ選択確定情報２３は、当該ペナルティサイクルに後続するキャッシュヒットに係るアクセスに応答してウェイ予測信号２２に代えてセレクタ１４で選択される。セレクタ１４の選択動作は制御回路３１が信号２４を用いて行う。前記信号２４によるウェイ選択確定情報２３の選択タイミングは、特に制限されないが、ウェイ予測ミスを生じた動作サイクルから２サイクル目とされる。
【００４２】
したがって、ＣＰＵ１からの連続したアクセスを処理する場合に、例えば第１のリードアクセスがウェイ予測ミスを起こしたときに必要なペナルティサイクル中に、後続のリードアクセスがヒットするウェイの選択確定情報２３を予め得て記憶し、これを第２リードアクセスにおけるウェイ選択に利用するから、連続したウェイ予測ミスを確実に防ぐことができる。
【００４３】
また、キャッシュ制御部１２は、キャッシュミスの判定結果に応答してアクセス対象キャッシュラインをリプレースするためにメモリ制御部３にアクセス制御信号４０及びアドレス信号４１を与えて外部アクセスを指示し、且つリプレース対象キャッシュラインに対応する前記履歴情報を上記同様に更新する。この間、キャッシュ制御部１２は、予測ミスの場合と同様、ウェイ選択確定情報２３をウェイ確定生成部３０に保持しておく。そして、制御部３１は、前述と同様に、キャッシュミスに係るペナルティサイクルに続くキャッシュヒットのアクセスに応答して、ウェイ予測信号２２に代えてセレクタ１４でウェイ選択確定情報２３を選択して、キャッシュミスに続いてウェイ予測ミスを生ずる事態を防止することができる。このときの前記信号２４によるウェイ選択確定情報２３の選択タイミングは、特に制限されないが、キャッシュミスを生じた動作サイクルから５サイクル目とされる。尚、キャッシュミスに係るペナルティサイクルで外部から得られるデータ４３は、所定のリプレース制御を経て、キャッシュミスに係るキャッシュラインに格納される。
【００４４】
更にキャッシュ制御部１２は、前記予測ミスに起因するペナルティサイクル中に、後続アクセスアドレスに対する予測結果信号１９Ａ，１９Ｂに基づいてキャッシュミスであるか否かを判定し、キャッシュミスの判定結果を得たとき、当該キャッシュミスに応答する外部メモリアクセスの指示をメモリ制御部３に予め発行する制御を行う。
【００４５】
図２には前記履歴情報記憶部１３の概略構成が例示される。Ｌａｔ０〜Ｌａｔｎはキャッシュラインに１対１対応で履歴情報を保持するラッチ回路である。ラッチ回路Ｌａｔ０〜Ｌａｔｎに対する書込みデータは履歴更新データ２６であり、更新信号は更新信号生成論理５０で生成される。ラッチ回路Ｌａｔ０〜Ｌａｔｎの出力データはセレクタ５１で選択される。セレクタ５１の選択動作はインデックスアドレス信号をデコードするデコーダ５２によるデコード信号によって決定される。履歴情報の書込みは、インデックスアドレスの供給サイクルに対して後の動作サイクルで行われるから、書きこみ更新信号生成論理５０側にレジスタ５３が配置されている。更新信号生成論理５０は、図示を省略するラッチタイミング信号を入力し、これによって指示されるラッチタイミングに同期してレジスタ５３に保持されているデコード信号をラッチ回路Ｌａｔ０〜Ｌａｔｎに与える。
【００４６】
図３にはキャッシュ制御部１２の詳細が例示される。キャッシュ制御部１２はウェイ確定生成部３０とその他の制御部としての状態遷移制御部（ステートマシン）３１に大別される。ウェイ確定生成部３０には連想結果信号１９Ａ，１９Ｂをラッチするラッチ回路３２Ａ，３２Ｂが代表的に図示され、ＣＰＵへのアクセス完了信号２５が入力され、ウェイ確定信号２３を出力する。ラッチ回路３２Ａ，３２Ｂは前記アクセス完了信号２５がハイレベルからローレベルにネゲートされたサイクルから２サイクル遅れたサイクルでラッチ動作を行う。要するに、アクセス完了信号２５はアクセス開始時点からネゲートされるから、ミスの発生した次のサイクルで後続アクセスのアドレスを取り込むためにそのようなタイミングでラッチ動作が行われることになる。この様子は、後述する図６、図８、図１０の完了信号の欄におけるアスタリスク（＊）が付されたサイクルをラッチ回路３２Ａ，３２Ｂのラッチタイミングとして位置付けていることから、更に明らかになる。
【００４７】
ステートマシン３１には、連想結果信号１９Ａ，１９Ｂをラッチするラッチ回路３３Ａ，３３Ｂ、履歴更新制御部３４及びリプレース制御部３５が代表的に図示される。ラッチ回路３３Ａ，３３Ｂはキャッシュ動作サイクル毎に連想結果信号１９Ａ，１９Ｂをラッチし、ラッチした連想結果信号１９Ａ，１９Ｂと前記ウェイ予測信号２２とに基づいて、キャッシュミス、ウェイ予測ヒット、及びウェイ予測ミスの判定を行う。特に履歴更新制御部３４は、履歴更新データ２６を生成し、リプレース制御部３５はリプレースすべきキャッシュラインを例えばＬＲＵ（Least Recently Used）やランダム等のアルゴリズムに従って決定する論理を有する。
【００４８】
図４にはキャッシュ制御部１２による制御内容がフローチャートで示される。ＣＰＵ１からアクセス指示があると、ＣＰＵ１から供給されるアドレス信号に基づいてデータアレイ及びアドレスアレイに対してインデックス動作され、インデックスされたキャッシュラインのデータがウェイ予測信号２２で選択されてＣＰＵ１に返される（Ｓ１）。これに並行してアドレスアレイでは、インデックスされたキャッシュラインから夫々のウェイのタグ情報がを読み出され、アドレス信号のタグアドレス情報と比較され、ウェイ毎の連想判定結果信号１９Ａ，１９Ｂが生成される。連想判定結果信号１９Ａ，１９Ｂに基づいてキャッシュヒットか否かが判定される（Ｓ２）。キャッシュミスの場合には、キャッシュリプレースのためのペナルティサイクルとして外部メモリアクセスが行われ、アクセスされたデータがＣＰＵ１に供給され、且つ其のデータをデータアレイに蓄えるためにＬＲＵ等のアルゴリズムに従ったリプレースが行われる。このリプレースに応答して履歴情報の更新も行われ、また、このキャッシュミスのペナルティサイクルに並行して、次のアクセスアドレスに関し前記ウェイ確定情報を取得しておく（Ｓ３）。キャッシュヒットの場合には予測ミスか否かが判定される（Ｓ４）。予測ミスでなければＣＰＵ１からの当該アクセス指示に応答する処理を終了する。予測ミスの場合には、他のウェイの再読み出しを行ってＣＰＵ１に与えるペナルティサイクルを実行し、これに伴って予測情報も更新する。そして、其のペナルティサイクルに並行して、次のアクセスアドレスに関し前記ウェイ確定情報を取得しておく（Ｓ５）。取得されたウェイ確定情報に従って可能ならば（処理時間が有るなら）予測情報も更新しておくことが望ましい。更新しなくても当該次のアクセスでは予測ミスを生ずることはない。
【００４９】
ステップＳ３又はステップＳ５でウェイ確定情報が取得されているとき、次のアクセスではステップＳ１において、予測情報に代えてウェイ確定情報を用いるウェイ選択が行われる。この場合には必ずキャッシュヒットになり、予測ヒットになる。従って、ウェイ確定情報を用いるウェイ選択を行った場合にはステップＳ２以降の処理は省いてもよい。
【００５０】
図５にはウェイ予測機能を有するがウェイ選択確定機能を有し得ていないキャッシュメモリの動作タイミングチャートが例示される。ここでは、ＣＰＵから５回のリードアクセスがなされる場合を考え、全てのリードのＣＰＵ要求データはウェイ１（Ｗ１）に存在するが、履歴情報はウェイ０（Ｗ０）を予測する状態を想定する。図５において、ＣＰＵアドレスの欄は、ＣＰＵから発行される実効アドレスＲ１，Ｒ２，Ｒ３，Ｒ４，Ｒ５を示し、５種類のアクセスアドレスを示す。アドレスアレイアクセスの欄は、キャッシュメモリのアドレスアレイへのアクセスがＣＰＵからの何れのアドレスに対してなされるかを示す。データアレイアクセスの欄は、キャッシュメモリのデータアレイへのアクセスがＣＰＵからのいずれのアドレスに対してなされるかを示す。履歴情報予測ウェイは、履歴情報に基づくウェイ予測信号（２２）がいずれのウェイを選択するように指示しているかを記す。ウェイ０を予測する状態をＷ０，ウェイ１を予測する状態をＷ１と略記する。ウェイセレクトの欄は、キャッシュ制御部が何れのウェイを選択するように実際に指示しているかを記す。ＣＰＵ要求データのありかの欄は、ＣＰＵの各アクセスの要求データの場所を示す。ＣＰＵ受け取りデータの欄は、ウェイセレクタにより選択されＣＰＵに渡されたデータが何れのウェイのものであるかを示す。また、外部メモリからデータが供給される場合もある。アクセス状態の欄は、ＣＰＵからの各アクセス予測ミス、予測ヒット、キャッシュミスのいずれの状態であるかを示す。外部メモリアクセスの欄は、キャッシュミス状態の場合に、どのサイクルで外部メモリアクセスがなされるかを示すものである。図５の例では、５回のリードアクセスは全て予測ミスを想定している。時刻１でＲ１が予測ミスであることがわかり、時刻３でＲ１のアクセスが完了している。そして、時刻４でＲ２が予測ミスであることがわかり、時刻６でＲ２のアクセスが完了している。以下同様であり、図５の場合には、ウェイ予測ミスが連続する場合、リードアクセス処理は３サイクル毎に完了することになる。
【００５１】
図６には、前記データプロセッサ４において予測確定情報２３を用いる場合の動作タイミングチャートが例示される。この動作例も図５と同様に、ＣＰＵ１から５回のリードアクセスがなされる場合を考え、全てのリードのＣＰＵ要求データはウェイ１（Ｗ１）に存在するが、履歴情報はウェイ０（Ｗ０）を予測する状態を想定する。図６では、ＣＰＵ１からのＲ１が予測ミスとなりそのペナルティサイクル中である時刻２に、Ｒ２に対するアドレスアレイアクセスを行い、各ウェイのヒット情報をキャッシュ制御部１２内に記憶しておくことで、時刻４では、履歴情報予測ウェイはＷ０であるにも関わらず、ウェイセレクトは正しく要求データの存在するＷ１を選択することができる。なお、時刻４でのアドレスアレイアクセスは必ずしも必要でないので、図６では（Ｒ２）と記している。時刻５から時刻８での動作は時刻１から時刻４の動作と同様である。このように、ウェイ予測ミスが連続する場合でも、後続のリードアクセス処理は予測ヒットするケースと同じ１サイクルで完了することができる。
【００５２】
図７にはウェイ予測機能を有するがウェイ選択確定機能を有し得ていないキャッシュメモリの別の動作タイミングチャートが例示される。ここでの例は、ＣＰＵから４回のリードアクセスがなされる場合で、Ｒ１はキャッシュミス、Ｒ２は予測ミス、Ｒ３はキャッシュミス、Ｒ４は予測ミスを想定している。時刻１でＲ１がキャッシュミスであることがわかり、時刻２で外部メモリアクセスが発行される。これに対するデータは外部メモリの仕様に依存するが時刻５でＣＰＵへ供給されることを想定しており、時刻５でＲ１の処理は完了する。そして、時刻６でＲ２が予測ミスであることがわかり、時刻８でＲ２のアクセスが完了している。その後、時刻９でＲ３がキャッシュミスであることがわかり、時刻１０で外部メモリアクセスが発行される。これに対するデータは時刻１３でＣＰＵへ供給されＲ１の処理は完了する。そして、時刻１４でＲ４が予測ミスであることがわかる。要するに、時刻５にキャッシュミスのペナルティ処理が終るのを待って、後続アクセス要求に答える処理手順とされ、当該後続アクセスが予測ミスであれば、更に今度は予測ミスに係るペナルティサイクルが加算される。
【００５３】
図８には前記データプロセッサ４において予測確定情報２３を用いる場合の別の動作タイミングチャートが例示される。ここでも、図７の例と同様に、ＣＰＵ１から４回のリードアクセスがなされる場合を考え、Ｒ１はキャッシュミス、Ｒ２は予測ミス、Ｒ３はキャッシュミス、Ｒ４は予測ミスを想定している。図８では、ＣＰＵ１からのＲ１がキャッシュミスとなりそのペナルティサイクル中である時刻２に、Ｒ２に対するアドレスアレイアクセスを行うことで、Ｒ２に対するウェイヒット情報を確定することができる。これをキャッシュ制御部１２に記憶しておくことで、時刻５でＲ１の外部メモリアクセスが完了した後の、時刻６において、履歴情報予測ウェイはＷ０であるにも関わらず、ウェイセレクトは正しく要求データの存在するＷ１を選択することができる。このように、キャッシュミスアクセスとウェイ予測ミスが連続する場合でも、後続のリードアクセス処理は予測ヒットするケースと同じ１サイクルで完了することができる。
【００５４】
図９にはウェイ予測機能を有するがウェイ選択確定機能を有していないキャッシュメモリの更に別の動作タイミングチャートが例示される。ここでの例は、ＣＰＵから４回のリードアクセスがなされる場合で、Ｒ１は予測ミス、Ｒ２はキャッシュミス、Ｒ３は予測ミス、Ｒ４はキャッシュミスを想定している。時刻１でＲ１が予測ミスであることがわかり、時刻３でＲ１のアクセスが完了している。その後、時刻４でＲ２がキャッシュミスであることがわかり、時刻５で外部メモリアクセスが発行される。これに対するデータは時刻８でＣＰＵへ供給されＲ２の処理は完了する。そして、時刻９でＲ３が予測ミスであることがわかり、時刻１１でＲ３のアクセスが完了している。その後、時刻１２でＲ４がキャッシュミスであることがわかり、時刻１３で外部メモリアクセスが発行される。要するに、予測ミスのペナルティサイクルと、キャッシュミスのペナルティサイクルが完全に直列的に行われている。
【００５５】
図１０には、前記データプロセッサ４における更に別の動作タイミングチャートが例示される。ここでも、図９での例と同様に、ＣＰＵ１から４回のリードアクセスがなされる場合を考え、Ｒ１は予測ミス、Ｒ２はキャッシュミス、Ｒ３は予測ミス、Ｒ４はキャッシュミスを想定している。図１０では、ＣＰＵ１からのＲ１が予測ミスとなりそのペナルティサイクル中である時刻２に、Ｒ２に対するアドレスアレイアクセスを行うことで、Ｒ２に対するアクセスがキャッシュミスであることを知り、Ｒ２に対する外部メモリアクセスを時刻３で発行することができる。このため、時刻３で予測ミスであったＲ１のアクセスが完了することは同じであるが、Ｒ２に対するデータは図９よりも２サイクル早い時刻６でＣＰＵ１へ供給されＲ２の処理が完了できることがわかる。その後同様に、時刻７でＲ３が予測ミスとなりそのペナルティサイクル中である時刻８に、Ｒ４に対するアドレスアレイアクセスを行うことで、Ｒ４に対するアクセスがキャッシュミスであることを知り、Ｒ４に対する外部メモリアクセスを時刻９で発行することができる。このように、予測ミスとキャッシュミスアクセスが連続する場合でも、後続のリードアクセスのための待ちサイクルを短縮することができる。
【００５６】
図１１には本発明に係るデータプロセッサの別の例が示される。同図に示されるデータプロセッサ４Ａは、ウェイ選択確定情報２３の利用形態が図１とは異なる。図１ではセレクタ１４でウェイ予測信号に代えて選択するようにしたが、図１１では、ウェイ選択確定情報２３で対応する履歴情報の書換えを行う。書換えは、図１２に例示されるように、セレクタ５４でウェイ選択確定情報２３を選択し、選択し得たウェイ確定情報の格納先はレジスタ５３にラッチされているインデックスアドレスを用いる。セレクタ５４を介するウェイ選択確定情報２３の書込みタイミング（ラッチタイミング）は制御信号２４Ａで規定する。制御信号２４Ａはウェイ予測ミス或はキャッシュミスを生じた動作サイクルの次の動作サイクルとされる。したがって、キャッシュミスを生じた動作サイクルの次の動作サイクルで確実にウェイ選択確定情報２３を生成できることが必要になる。
【００５７】
図１３には本発明に係るデータプロセッサの更に別の例が示される。同図に示されるデータプロセッサ４Ｂは、キャッシュ部２Ｂに切換えレジスタ６０を有する。切換えレジスタ６０はウェイセレクタ１５へのウェイセレクト信号６３を出力する切換えセレクタ６２の選択信号６１を出力する。切換えレジスタ６０により、セレクタ６２が比較器１８からのヒット信号１９Ａを選択する場合、データ処理装置４Ｂの動作は、セットアソシアティブ方式で動作を行う。切換えレジスタ６０により、セレクタ６２が履歴情報記憶部１３から生成されたウェイ予測信号２２を選択する場合、データ処理装置４Ｂの動作は、ウェイ予測式セットアソシアティブ方式で動作を行う。
【００５８】
切換えレジスタ６０の内容はプロセッサの起動時（リセット時）に設定してその後は固定値を保持する構成であっても良いし、ＣＰＵからアクセス可能でプログラムによってダイナミックに書き換え可能な構成であってもよい。
【００５９】
前記レジスタ６０は、前記連想動作の結果に応じてウェイ選択を行う第１動作モードと、前記連想動作に並行して予測に基づくウェイ選択を行う第２動作モードと、を切換え可能に指示する指示手段として位置付けられる。
【００６０】
ここで、ウェイ予測ミス後の再リードの際には、履歴情報記憶部１３が履歴更新信号２６により更新されるものとしており、図１で説明したウェイ確定信号２３を用いた構成は採用していない。その他の構成は図１と同様であるからその詳細な説明は省略する。
【００６１】
以上説明し得たデータプロセッサによれば以下の作用効果を得る。
【００６２】
ウェイ予測セットアソシアティブ方式は、キャッシュアクセスに関するアクセス時間、すなわち、動作速度の観点からは、通常のセットアソシアティブ方式に比べて、ヒット信号によりデータアレイから読み出されたデータをセレクトする必要がないため、ダイレクトマッピング方式と同じ高速動作を行うことができる。また、消費電力の観点からは、セットアソシアティブ方式では候補となるデータを全てデータアレイから読み出しておく必要があるが、ウェイ予測セットアソシアティブ方式では、動作の予測されるウェイからのみデータを読み出しておくだけでよいから、予測対象外のウェイに対してはメモリ動作は本質的に不要であり、低消費電力化も実現可能である。図面に基づく説明ではその点について省略したが、例えば、セレクタ１５の選択制御信号をデータアレイ１７及びアドレスアレイ１６のメモリイネーブル信号として利用すれば、予測対象とされたデータアレイ１７及びアドレスアレイ１６だけを動作させる制御が可能になる。
【００６３】
上記のウェイ予測セットアソシアティブ方式の性能面でセットアソシアティブ方式と比べて弱点となるウェイ予測ミスによるペナルティサイクル数は、図１に代表される構成により、半分程度にまで削減することが可能となる。すなわち、連続したメモリアクセス処理の際に、最初のアクセスによる一連の処理中のペナルティサイクル中に、後続のキャッシュアクセスのヒットするウェイを予め確定しておくことができるため、セットアソシアティブ方式の性能に極めて近いキャッシュ性能を得ることができる。連続するメモリアクセスの全てでウェイ予測ミスが発生するような最悪のケースでは、本発明による手法を用いなければ、各メモリアクセスはペナルティサイクルとして２サイクルを余計に消費することになる。これに対して、図１に代表される構成を採用すれば、ペナルティサイクルは交互にしか発生しなくなり、平均ペナルティサイクル数は１サイクルに減少される。
【００６４】
図１３で説明したようにセットアソシアティブ方式とウェイ予測セットアソシアティブ方式を切換えレジスタ６０で切換え可能にすれば、高速動作が必要な場合および低消費電力動作が必要な場合にはウェイ予測セットアソシアティブ方式で動作するモードを使用し、ウェイ予測ミスによるペナルティサイクルを避けたい場合には、セットアソシアティブ方式で動作するモードを使用するように切換えることができる。
【００６５】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００６６】
例えば、キャッシュメモリのウェイ数は２よりも多くてよい。また、キャッシュメモリは論理アドレス或は物理アドレスの何れで動作するものであってもよい。データプロセッサはキャッシュ制御部とメモリ部の間にメモリマネージメントユニットなどのアドレス変換バッファユニットが配置されるものであってもよい。また、データプロセッサのオンチップモジュールは上記の例に限定されず、タイマやシリアルインタフェースなど、その他の周辺回路を備えてもよい。また、予測によるウェイの選択は、ウェイからの読み出しデータの選択という手段に限定されない。アクセス動作させるべきウェイの選択、メモリイネーブルとすべきウェイの選択などの手段で置き換えて良いことは言うまでもない。
【００６７】
また、以上の説明では専ら連続リードアクセスにおけるウェイ予測ミスを生ずる場合について説明したが、ライトアクセスに関しても本発明は同様に適用される。ライトアクセスに対する予測ミスを生ずると、ペナルティサイクルではデータ書換えなどのデータリカバリ動作を行わなければならない。其の期間を使って、同様にペナルティサイクル後のアクセス動作に対して予めウェイ選択確定情報を求めておき、予測情報に代えてその確定情報を利用すれば、今まで説明した連続リードの場合と同様に、ライトアクセスに関しても、予測ミスやキャッシュミスに連続する予測ミスの発生を低減することができる。
【００６８】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００６９】
予測ミスが連続して発生し、或はキャッシュミスと予測ミスが前後して発生する場合に、先に生ずるペナルティサイクル中に、後続のキャッシュアクセスがヒットするウェイを予め確定しておくことができるため、ペナルティサイクルの累積数を低減させることができ、ひいてはＣＰＵ等によるデータ処理性能もしくはデータ処理速度向上に寄与することが可能になる。
【００７０】
さらにセットアソシアティブ方式とウェイ予測セットアソシアティブ方式を切換えレジスタで切換え機能を採用することにより、高速動作が必要な場合および低消費電力動作が必要な場合にはウェイ予測セットアソシアティブ方式で動作するモードを使用し、ウェイ予測ミスによるペナルティサイクルを避けたい場合には、セットアソシアティブ方式で動作するモードを使用するように切換えることができる。
【図面の簡単な説明】
【図１】本発明に係るデータプロセッサの一例を示すブロック図である。
【図２】履歴情報記憶部の概略構成を例示するブロック図である。
【図３】キャッシュ制御部の詳細を例示するブロック図である。
【図４】キャッシュ制御部による制御内容を例示するフローチャートである。
【図５】ウェイ予測機能を有するがウェイ選択確定機能を有し得ていないキャッシュメモリの動作を例示するタイミングチャートである。
【図６】図１のデータプロセッサにおいて予測確定情報を用いる場合の動作を例示するタイミングチャートである。
【図７】ウェイ予測機能を有するがウェイ選択確定機能を有し得ていないキャッシュメモリの別の動作を例示するタイミングチャートである。
【図８】図１のデータプロセッサにおいて予測確定情報を用いる場合の別の動作を例示するタイミングチャートである。
【図９】ウェイ予測機能を有するがウェイ選択確定機能を有し得ていないキャッシュメモリの更に別の動作を例示するタイミングチャートである。
【図１０】図１のデータプロセッサにおいて更に別の動作を例示するタイミングチャートである。
【図１１】本発明に係るデータプロセッサの別の例を示すブロック図である。
【図１２】図１１のデータプロセッサにおける履歴情報記憶部の概略構成を例示するブロック図である。
【図１３】本発明に係るデータプロセッサの更に別の例を示すブロック図である。
【符号の説明】
１  ＣＰＵ
２、２Ａ、２Ｂ  キャッシュ部
３  メモリ制御部
４、４Ａ、４Ｂ  データプロセッサ
１０，１１  ウェイ
１２、１２Ｂ  キャッシュ制御部
１３、１３Ａ  履歴情報記憶部
１４  セレクタ
１５  セレクタ
１６  アドレスアレイ
１７  データアレイ
１８  比較器
１９Ａ，１９Ｂ  連想結果信号
２２  ウェイ予測信号
２３  ウェイ確定信号
２４、２４Ａ  選択信号
２５  アクセス完了信号
２６  履歴更新データ
３０  ウェイ確定生成部
３１、３１Ａ  制御回路
３４  履歴更新制御部
３５  リプレース制御部
５０  更新信号生成論理
６０  切換えレジスタ
６１  選択信号
６２  切換えセレクタ
【図１】
0004071942.tif 000002
【図２】
0004071942.tif 000003
【図３】
0004071942.tif 000004
【図４】
0004071942.tif 000005
【図５】
0004071942.tif 000006
【図６】
0004071942.tif 000007
【図７】
0004071942.tif 000008
【図８】
0004071942.tif 000009
【図９】
0004071942.tif 000010
【図１０】
0004071942.tif 000011
【図１１】
0004071942.tif 000012
【図１２】
0004071942.tif 000013
【図１３】
0004071942.tif 000014