(57)【特許請求の範囲】
【請求項１】
タグを格納するタグ格納部と、
データを格納するデータ格納部と、
アクセスアドレスの一部とタグ格納部に格納されているタグとを比較し、どのウェイがヒットしたかを示すウェイ判定信号を出力するウェイ判定器と、
ウェイ選択信号に基づき、その選択されたウェイのデータ格納部のデータを選択するデータ選択器とを具備するセットアソシアティブ方式のメモリ装置であって、
ウェイの番号値を記憶する複数の予測ウェイラッチと、
複数の連続した領域をアクセスする場合に、対応する複数の予測ウェイラッチに記憶されたウェイの番号値をウェイ判定信号の予測値として出力するウェイ予測部と、
前記予測値をウェイ選択信号としてデータ選択器に入力する手段と、
前記ウェイ判定器からのウェイ判定信号と前記予測値を比較し、不一致の場合にウェイ予測判定信号を出力するウェイ予測判定部と、
前記ウェイ予測判定部からのウェイ予測判定信号に基づき、前記ウェイ予測部の予測値をヒットしたウェイを示すウェイ判定信号に変更する手段とを具備することを特徴とするセットアソシアティブ方式のメモリ装置。
【請求項２】
前記メモリ装置は、さらに、セットアソシアティブ方式のアドレス変換バッファを具備し、
前記メモリ装置のウェイ判定器は、アドレス変換バッファからのＴＬＢデータとタグ格納部に格納されているタグとを比較し、どのウェイがヒットしたかを示すウェイ判定信号を出力し、
前記アドレス変換バッファは、ＴＬＢタグを格納するＴＬＢタグ格納部と、
ＴＬＢデータを格納するＴＬＢデータ格納部と、
アクセスアドレスの一部とＴＬＢタグ格納部に格納されているＴＬＢタグとを比較し、どのウェイがヒットしたかを示すＴＬＢウェイ判定信号を出力するＴＬＢウェイ判定器と、
ウェイの番号値を記憶する複数のＴＬＢ予測ウェイラッチと、
複数の連続した領域をアクセスする場合に、対応する複数のＴＬＢ予測ウェイラッチに記憶されたＴＬＢウェイの番号値をＴＬＢウェイ判定信号の予測値として出力するＴＬＢウェイ予測部と、
前記ＴＬＢウェイ予測部からの予測値が選択信号として入力され、予測されたウェイのＴＬＢデータ格納部のＴＬＢデータを選択するＴＬＢデータ選択器と、
前記ＴＬＢウェイ判定器からのＴＬＢウェイ判定信号と前記予測値を比較し、不一致の場合にＴＬＢウェイ予測判定信号を出力するＴＬＢウェイ予測判定部と、
前記ＴＬＢウェイ予測判定部からのＴＬＢウェイ予測判定信号に基づき、ＴＬＢウェイ予測部の予測値をヒットしたウェイを示すＴＬＢウェイ判定信号に変更する手段とを具備することを特徴とする請求項１に記載のセットアソシアティブ方式のメモリ装置。
【請求項３】
前記ＴＬＢウェイ予測部は、任意のＴＬＢ予測ウェイラッチに記憶された番号値を他のＴＬＢ予測ウェイラッチに転送する手段を、さらに具備することを特徴とする請求項２に記載のセットアソシアティブ方式のメモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セットアソシアティブ方式のメモリ装置に係わり、特に、消費電力を低減させ、かつ、データ読み出し時のタイムラグを低減させたセットアソシアティブ方式のメモリ装置に関する。
【背景技術】
【０００２】
従来のセットアソシアティブ方式のメモリは、「並列計算機構成論」（富田眞治著、昭晃堂、２．３．２記憶制御装置、（１）記憶階層方式及び（２）キャッシュメモリ）に記載されている。
【０００３】
図１７は、前記公知文献に記載されている、従来のセットアソシアティブ方式のメモリの概略構成を示すブロック図であり、２セットアソシアティブのアドレス変換バッファ（以下、ＴＬＢと称す）６９１と２セットアソシアティブのキャッシュ６９２から構成される、ＴＬＢ・キャッシュ装置である。
【０００４】
アドレス６００は、論理アドレスであり、ＴＬＢ６９１により物理アドレスに変換されてキャッシュ６９２に入力される。
【０００５】
アドレス６００は、論理ページ番号６０４とページ内オフセット６０１により構成される。
【０００６】
論理ページ番号６０４は、ＴＬＢ６９１により物理ページ番号６２５に変換されキャッシュ６９２に入力される。
【０００７】
ページ内オフセット６０１は、変換されずにそのままキャッシュ６９２に入力される。
【０００８】
物理アドレスは、物理ページ番号６２５とページ内オフセット６０１により構成される。
【０００９】
以下、図１７に示すＴＬＢ・キャッシュ装置の動作を説明する。
【００１０】
論理ページ番号６０４の下位ビット６０２は、ＴＬＢタグ格納部（６１０，６１１）に入力され、ＴＬＢタグ（６１２，６１３）が出力される。
【００１１】
これらのＴＬＢタグは、ＴＬＢウェイ判定器６１４に入力される。
【００１２】
ここで、６１０はＴＬＢのウェイ０のタグを、６１１はＴＬＢのウェイ１のタグをそれぞれ格納するメモリである。
【００１３】
次に、ＴＬＢウェイ判定器６１４では、論理ページ番号６０４の上位ビット６０３と各ウェイのＴＬＢタグが比較され、どのウェイのＴＬＢタグと一致したかを表すＴＬＢウェイ判定信号６１５が出力される。
【００１４】
一方、論理ページ番号６０４の下位ビット６０２はＴＬＢのＴＬＢデータ格納部（６２０，６２１）に入力され、物理ページ番号（６２２，６２３）が出力される。
【００１５】
これらの物理ページ番号は、物理ページ番号選択器６２４に入力される。
【００１６】
ここで、６２０はウェイ０の物理ページ番号を、６２１はウェイ１の物理ページ番号をそれぞれ格納するメモリである。
【００１７】
物理ページ番号選択器６２４では、ＴＬＢウェイ判定信号６１５に基づいて、ウェイ０の物理ページ番号６２２またはウェイ１の物理ページ番号６２３のどちらかを選択し物理ページ番号６２５を出力する。
【００１８】
ページ内オフセット６０１は、キャッシュタグ格納部（６３０，６３１）に入力され、キャッシュタグ（６３２，６３３）が出力される。
【００１９】
これらのキャッシュタグ（６３２，６３３）は、キャッシュウェイ判定器６３４に入力される。
【００２０】
ここで、６３０はキャッシュのウェイ０のタグを、６３１はキャッシュのウェイ１のタグをそれぞれ格納するメモリである。
【００２１】
次に、キャッシュウェイ判定器６３４では、物理ページ番号６２５と各ウェイのキャッシュタグ（６３２，６３３）が比較され、どのウェイのキャッシュタグと一致したかを表すキャッシュウェイ判定信号６３５が出力される。
【００２２】
一方、ページ内オフセット６０１は、キャッシュデータ格納部（６４０，６４１）に入力され、データ（６４２，６４３）が出力される。
【００２３】
これらのデータ（６４２，６４３）は、データ選択器６４４に入力される。
【００２４】
ここで、６４０はウェイ０のデータを、６４１はウェイ１のデータをそれぞれ格納するメモリである。
【００２５】
データ選択器６４４では、キャッシュウェイ判定信号６３５に基づいて、データ６４２またはデータ６４３を選択しデータ６４５を出力する。
【００２６】
このとき、物理ページ番号６２５とウェイ０のキャッシュタグ６３２が一致していればウェイ０のデータ６４２、物理ページ番号６２５とウェイ１のキャッシュタグ６３３が一致していればウェイ１のデータ６４３の値がデータ６４５の値となる。
【００２７】
データ６４５の値は、一旦ラッチ６４６に格納されたあと、次のサイクルにおいてデータ６４７として出力される。
【００２８】
このＴＬＢ・キャッシュ装置においては、ＴＬＢタグ格納部（６１０，６１１）、ＴＬＢデータ格納部（６２０，６２１）、キャッシュタグ格納部（６３０，６３１）、キャッシュデータ格納部（６４０，６４１）の８つのメモリは、同時に並列的に動作することが可能である。
【００２９】
即ち、論理アドレス６００が入力された時点で、これら８つのメモリは動作を開始できる。
【００３０】
一方、ＴＬＢタグ格納部（６１０，６１１）、ＴＬＢウェイ判定器６１４、物理ページ番号選択器６２４、キャッシュウェイ判定器６３４は、同時に実行することはできず、この順番で順々に実行しなければならない。
【００３１】
したがって、キャッシュウェイ判定器６３４の出力であるキャッシュウェイ判定信号６３５の値を生成するのには時間がかかる。
【００３２】
このような理由から、従来の２セットアソシアティブ方式のキャッシュでは、キャッシュウェイ判定信号６３５の値が判明する前に、あらかじめキャッシュデータ格納部のウェイ０の部分６４０とウェイ１の部分６４１の両方を動作させ、ウェイ０のデータ６４２とウェイ１のデータ６４３を出力しておき、これをキャッシュウェイ判定信号６３５で選択する方式がとられていた。
【００３３】
この方式では、キャッシュデータ格納部（６４０，６４１）のウェイ０の部分６４０とウェイ１の部分６４１の両方を同時に動作させるために、キャッシュを動作させるための電力が大きくなるという問題点があった。
【００３４】
また、ＴＬＢタグ格納部（６１０，６１１）、ＴＬＢウェイ判定器６１４、物理ページ番号選択器６２４、キャッシュウェイ判定器６３４、及び、データ選択器６４４は順番に実行しなければならず、ＴＬＢ・キャッシュ装置に論理アドレス６００が入力されてからデータ６４５が出力されるまでのタイムラグ（遅延時間）が大きくなるという問題点があった。
【００３５】
前記問題点を解決するために、セットアソシアティブ方式のキャッシュメモリにおいて、データの読み出し時のセンスアンプの活性化を、タグからのヒット信号によって行い、ヒットした時点でセンスアンプを活性化して、データ読み出し時の消費電力を低減することが、特開平４−３２８６５６号公報に記載されている。
【００３６】
また、前記問題点を解決するために、セットアソシアティブ方式のキャッシュメモリにおいて、外部から入力されるアドレスとタグ部から読み出されたタグとを比較するアドレス比較部からのヒット信号が出力される前に、直前にアクセスしたデータ部を示すフラグ情報を記憶部に記憶しておき、該フラグ情報を用いることにより、アドレス比較器からのヒット信号が出力される前に、キャッシュメモリのデータ部からデータをデータバスに出力することが、特開平４−２５２３４３号公報に記載されている。
【発明の開示】
【発明が解決しようとする課題】
【００３７】
前記特開平４−３２８６５６号公報に記載されたセットアソシアティブ方式のキャッシュメモリでは、データ読み出し時の消費電力を低減することが可能であるが、データ読み出しのタイムラグを低減することについて考慮されていないという問題点があった。
【００３８】
また、前記特開平４−２５２３４３号公報に記載されたセットアソシアティブ方式のキャッシュメモリでは、データ読み出しのタイムラグを低減することが可能であるが、複数の連続した領域を交互にアクセスする場合にウェイを正しく予測する機構を具備しておらず、また、アドレス変換バッファを具備する、セットアソシアティブ方式のキャッシュメモリのデータ読み出し時のタイムラグについて考慮されていないという問題点があった。
【００３９】
本発明は、前記従来技術の問題点を解決するためになされたものであり、本発明の目的は、セットアソシアティブ方式のメモリ装置において、消費電力を低減させ、かつ、データ読み出し時のタイムラグを低減させることが可能な技術を提供することにある。
【００４０】
また、本発明の他の目的は、アドレス変換バッファを具備する、セットアソシアティブ方式のメモリ装置において、消費電力を低減させ、かつ、データ読み出し時のタイムラグを低減させることが可能な技術を提供することにある。
【００４１】
また、本発明の他の目的は、アドレス変換バッファを具備する、セットアソシアティブ方式のメモリ装置において、いくつかの連続した領域を交互にアクセスする場合に、データ読み出しのタイムラグを低減させることが可能な技術を提供することにある。
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述及び添付図面によって明らかにする。
【課題を解決するための手段】
【００４２】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、下記の通りである。
【００４３】
（１）タグを格納するタグ格納部と、データを格納するデータ格納部と、アクセスアドレスの一部とタグ格納部に格納されているタグとを比較しどのウェイがヒットしたかを示すウェイ判定信号を出力するウェイ判定器と、ウェイ選択信号に基づきその選択されたウェイのデータ格納部のデータを選択するデータ選択器とを具備するセットアソシアティブ方式のメモリ装置において、ウェイ判定信号の予測値を発生するウェイ予測部と、ウェイ予測部からの予測値に基づき予測されたウェイのデータ格納部だけを活性化する手段と、前記予測値をウェイ選択信号としてデータ選択器に入力する手段と、ウェイ判定器からのウェイ判定信号と前記予測値を比較し、不一致の場合にウェイ予測判定信号を出力するウェイ予測判定部と、ウェイ予測判定部からのウェイ予測判定信号に基づきウェイ予測部の予測値をヒットしたウェイを示すウェイ判定信号に変更する手段とを具備することを特徴とする。
【００４４】
（２）前記（１）の手段において、ウェイ予測部からの予測値に基づき予測されたウェイのタグ格納部だけを活性化する手段を、さらに具備することを特徴とする。
【００４５】
（３）前記（１）または（２）の手段において、ウェイ予測部が、ウェイの番号値を記憶する複数の予測ウェイラッチを有し、複数の連続した領域をアクセスする場合に、対応する複数の予測ウェイラッチに記憶されたウェイの番号値をウェイ判定信号の予測値として出力することを特徴とする。
【００４６】
（４）前記（１）ないし（３）の手段において、メモリ装置が、さらに、セットアソシアティブ方式のアドレス変換バッファを具備し、前記メモリ装置のウェイ判定器が、アドレス変換バッファからのＴＬＢデータとタグ格納部に格納されているタグとを比較しどのウェイがヒットしたかを示すウェイ判定信号を出力し、前記アドレス変換バッファが、ＴＬＢタグを格納するＴＬＢタグ格納部と、ＴＬＢデータを格納するＴＬＢデータ格納部と、アクセスアドレスの一部とＴＬＢタグ格納部に格納されているＴＬＢタグとを比較しどのウェイがヒットしたかを示すＴＬＢウェイ判定信号を出力するＴＬＢウェイ判定器と、ＴＬＢウェイ判定信号の予測値を発生するＴＬＢウェイ予測部と、前記ＴＬＢウェイ予測部からの予測値に基づき予測されたＴＬＢウェイのＴＬＢデータ格納部だけを活性化する手段と、前記ＴＬＢウェイ予測部からの予測値がウェイ選択信号として入力され、予測されたウェイのＴＬＢデータ格納部のＴＬＢデータを選択するＴＬＢデータ選択器と、ＴＬＢウェイ判定器からのＴＬＢウェイ判定信号と前記予測値を比較し、不一致の場合にＴＬＢウェイ予測判定信号を出力するＴＬＢウェイ予測判定部と、ＴＬＢウェイ予測判定部からのＴＬＢウェイ予測判定信号に基づきＴＬＢウェイ予測部の予測値をヒットしたウェイを示すＴＬＢウェイ判定信号に変更する手段とを具備することを特徴とする。
【００４７】
（５）前記（４）の手段において、ＴＬＢウェイ予測部からの予測値に基づき予測されたウェイのＴＬＢタグ格納部だけを活性化する手段を、さらに具備することを特徴とする。
【００４８】
（６）前記（４）または（５）の手段において、前記ＴＬＢウェイ予測部が、ウェイの番号値を記憶する複数のＴＬＢ予測ウェイラッチを有し、複数の連続した領域をアクセスする場合に、対応する複数のＴＬＢ予測ウェイラッチに記憶されたＴＬＢウェイの番号値をＴＬＢウェイ判定信号の予測値として出力することを特徴とする。
【００４９】
（７）タグを格納するタグ格納部と、データを格納するデータ格納部と、アクセスアドレスの一部とタグ格納部に格納されているタグとを比較しどのウェイがヒットしたかを示すウェイ判定信号を出力するウェイ判定器と、ウェイ選択信号に基づき選択されたウェイのデータ格納部のデータを選択するデータ選択器とを具備するセットアソシアティブ方式のメモリ装置において、ウェイの番号値を記憶する複数の予測ウェイラッチを有し、複数の連続した領域をアクセスする場合に、対応する複数の予測ウェイラッチに記憶されたウェイの番号値をウェイ判定信号の予測値として出力するウェイ予測部と、前記予測値をウェイ選択信号としてデータ選択器に入力する手段と、ウェイ判定器からのウェイ判定信号と前記予測値を比較し、不一致の場合にウェイ予測判定信号を出力するウェイ予測判定部と、ウェイ予測判定部からのウェイ予測判定信号に基づきウェイ予測部の予測値をヒットしたウェイを示すウェイ判定信号に変更する手段とを具備することを特徴とする。
【００５０】
（８）前記（７）の手段において、前記メモリ装置が、さらに、セットアソシアティブ方式のアドレス変換バッファを具備し、前記メモリ装置のウェイ判定器が、アドレス変換バッファからのＴＬＢデータとタグ格納部に格納されているタグとを比較しどのウェイがヒットしたかを示すウェイ判定信号を出力し、前記アドレス変換バッファが、ＴＬＢタグを格納するＴＬＢタグ格納部と、ＴＬＢデータを格納するＴＬＢデータ格納部と、アクセスアドレスの一部とＴＬＢタグ格納部に格納されているＴＬＢタグとを比較しどのウェイがヒットしたかを示すＴＬＢウェイ判定信号を出力するＴＬＢウェイ判定器と、ウェイの番号値を記憶する複数のＴＬＢ予測ウェイラッチを有し、複数の連続した領域をアクセスする場合に、対応する複数のＴＬＢ予測ウェイラッチに記憶されたＴＬＢウェイの番号値をＴＬＢウェイ判定信号の予測値として出力するＴＬＢウェイ予測部と、ＴＬＢウェイ予測部からの予測値が選択信号として入力され、予測されたウェイのＴＬＢデータ格納部のＴＬＢデータを選択するＴＬＢデータ選択器と、ＴＬＢウェイ判定器からのＴＬＢウェイ判定信号と前記予測値を比較し、不一致の場合にＴＬＢウェイ予測判定信号を出力するＴＬＢウェイ予測判定部と、ＴＬＢウェイ予測判定部からのＴＬＢウェイ予測判定信号に基づきＴＬＢウェイ予測部の予測値をヒットしたウェイを示すＴＬＢウェイ判定信号に変更する手段とを具備することを特徴とする。
【００５１】
前記（１）または（２）項に記載された手段によれば、セットアソシアティブ方式のメモリ装置において、ウェイ予測部によってどのウェイがヒットするかを予測し、予測されたウェイのデータ格納部、あるいは、予測されたタグ格納部およびデータ格納部のみを動作させるようにしたので、メモリ装置を動作させるための消費電力を低減させ、かつ、データ読み出しのタイムラグを低減させることが可能となる。
【００５２】
また、前記（３）項に記載された手段によれば、ウェイ予測部によってどのウェイがヒットするかを予測し、予測されたウェイのデータ格納部、あるいは、予測されたタグ格納部およびデータ格納部のみを動作させるようにしたセットアソシアティブ方式のメモリ装置において、複数の連続した領域をアクセスする場合に、ウェイ予測部の複数の予測ウェイラッチに記憶されたウェイの番号値をウェイ判定信号の予測値として用いるようにしたので、いくつかの連続した領域を交互にアクセスする場合に、メモリ装置を動作させるための消費電力を低減させ、かつ、データ読み出しのタイムラグを低減させることが可能となる。
【００５３】
また、前記（４）または（５）項に記載された手段によれば、アドレス変換バッファを具備するセットアソシアティブ方式のメモリ装置において、アドレス変換バッファのＴＬＢウェイ予測部によってアドレス変換バッファのどのウェイがヒットするかを予測し、予測されたウェイのＴＬＢデータ格納部、あるいは、予測されたＴＬＢタグ格納部およびＴＬＢデータ格納部のみを動作させるようにするとともに、メモリ装置のウェイ予測部によってメモリ装置のどのウェイがヒットするかを予測し、予測されたウェイのデータ格納部、あるいは、予測されたタグ格納部およびデータ格納部のみを動作させるようにしたので、アドレス変換バッファを具備するメモリ装置を動作させるための消費電力を低減させ、かつ、データ読み出しのタイムラグを低減させることが可能となる。
【００５４】
また、前記（６）項に記載された手段によれば、アドレス変換バッファのＴＬＢウェイ予測部によってアドレス変換バッファのどのウェイがヒットするかを予測し、予測されたウェイのＴＬＢデータ格納部、あるいは、予測されたＴＬＢタグ格納部およびＴＬＢデータ格納部のみを動作させるようにするとともに、メモリ装置のウェイ予測部によってメモリ装置のどのウェイがヒットするかを予測し、予測されたウェイのデータ格納部、あるいは、予測されたタグ格納部およびデータ格納部のみを動作させるようにした、アドレス変換バッファを具備するセットアソシアティブ方式のメモリ装置において、複数の連続した領域をアクセスする場合に、アドレス変換バッファのＴＬＢウェイ予測部およびメモリ装置のウェイ予測部の複数の予測ウェイラッチに記憶されたウェイの番号値を、アドレス変換バッファのＴＬＢウェイ判定信号およびメモリ装置のウェイ判定信号の予測値として用いるようにしたので、いくつかの連続した領域を交互にアクセスする場合に、メモリ装置を動作させるための消費電力を低減させ、かつ、データ読み出しのタイムラグを低減させることが可能となる。
【００５５】
また、前記（７）項に記載された手段によれば、セットアソシアティブ方式のメモリ装置において、ウェイの番号値を記憶する複数の予測ウェイラッチを有するウェイ予測部により、複数の連続した領域をアクセスする場合に、どのウェイがヒットするかを予測するようにしたので、いくつかの連続した領域を交互にアクセスする場合に、データ読み出しのタイムラグを低減させることが可能となる。
【００５６】
また、前記（８）項に記載された手段によれば、アドレス変換バッファを具備するセットアソシアティブ方式のメモリ装置において、複数の連続した領域をアクセスする場合に、ウェイの番号値を記憶する複数のＴＬＢ予測ウェイラッチを有するＴＬＢウェイ予測部により、アドレス変換バッファのどのウェイがヒットするかを予測するとともに、ウェイの番号値を記憶する複数の予測ウェイラッチを有するウェイ予測部により、メモリ装置のどのウェイがヒットするかを予測するようにしたので、データ読み出しのタイムラグを低減させることが可能となる。
【発明の効果】
【００５７】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、下記の通りである。
（１）セットアソシアティブ方式のメモリ装置において、ウェイ予測部によってどのウェイがヒットするかを予測し、予測されたウェイのデータ格納部、あるいは、予測されたタグ格納部およびデータ格納部のみを動作させるようにしたので、メモリ装置を動作させるための消費電力を低減させ、かつ、データ読み出しのタイムラグを低減させることが可能となる。
【００５８】
（２）ウェイ予測部によってどのウェイがヒットするかを予測するようにしたセットアソシアティブ方式のメモリ装置において、複数の連続した領域をアクセスする場合に、ウェイ予測部の複数の予測ウェイラッチに記憶されたウェイの番号値をウェイ判定信号の予測値として用いるようにしたので、いくつかの連続した領域を交互にアクセスする場合に、データ読み出しのタイムラグを低減させることが可能となる。
【００５９】
（３）アドレス変換バッファを具備するセットアソシアティブ方式のメモリ装置において、アドレス変換バッファのＴＬＢウェイ予測部によってアドレス変換バッファのどのウェイがヒットするかを予測し、予測されたウェイのＴＬＢデータ格納部、あるいは、予測されたＴＬＢタグ格納部およびＴＬＢデータ格納部のみを動作させるようにするとともに、メモリ装置のウェイ予測部によってメモリ装置のどのウェイがヒットするかを予測し、予測されたウェイのデータ格納部、あるいは、予測されたタグ格納部およびデータ格納部のみを動作させるようにしたので、アドレス変換バッファを具備するメモリ装置を動作させるための消費電力を低減させ、かつ、データ読み出しのタイムラグを低減させることが可能となる。
【００６０】
（４）アドレス変換バッファのＴＬＢウェイ予測部によってアドレス変換バッファのどのウェイがヒットするかを予測し、予測されたウェイのＴＬＢデータ格納部、あるいは、予測されたＴＬＢタグ格納部およびＴＬＢデータ格納部のみを動作させるようにするとともに、メモリ装置のウェイ予測部によってメモリ装置のどのウェイがヒットするかを予測し、予測されたウェイのデータ格納部、あるいは、予測されたタグ格納部およびデータ格納部のみを動作させるようにした、アドレス変換バッファを具備するセットアソシアティブ方式のメモリ装置において、複数の連続した領域をアクセスする場合に、アドレス変換バッファのＴＬＢウェイ予測部およびメモリ装置のウェイ予測部の複数の予測ウェイラッチに記憶されたウェイの番号値を、アドレス変換バッファのＴＬＢウェイ判定信号およびメモリ装置のウェイ判定信号の予測値として用いるようにしたので、いくつかの連続した領域を交互にアクセスする場合に、メモリ装置を動作させるための消費電力を低減させ、かつ、データ読み出しのタイムラグを低減させることが可能となる。
【００６１】
（５）セットアソシアティブ方式のメモリ装置において、ウェイの番号値を記憶する複数の予測ウェイラッチを有するウェイ予測部により、複数の連続した領域をアクセスする場合に、どのウェイがヒットするかを予測するようにしたので、いくつかの連続した領域を交互にアクセスする場合に、データ読み出しのタイムラグを低減させることが可能となる。
【００６２】
（６）アドレス変換バッファを具備するセットアソシアティブ方式のメモリ装置において、複数の連続した領域をアクセスする場合に、ウェイの番号値を記憶する複数のＴＬＢ予測ウェイラッチを有するＴＬＢウェイ予測部により、アドレス変換バッファのどのウェイがヒットするかを予測するとともに、ウェイの番号値を記憶する複数の予測ウェイラッチを有するウェイ予測部により、メモリ装置のどのウェイがヒットするかを予測するようにしたので、データ読み出しのタイムラグを低減させることが可能となる。
【００６３】
（７）発明によるメモリ装置を、プロセッサのキャッシュメモリに使用することにより、キャッシュメモリの消費電力を低減させるとともに、キャッシュメモリの動作を高速に行なうことができ、これにより、消費電力が少なくマシンサイクルの短いプロセッサを実現することが可能になる。
【発明を実施するための最良の形態】
【００６４】
以下、図面を参照して本発明の実施例を詳細に説明する。
なお、実施例を説明するための全図において、同一機能を有するものは同一符号を付け、その繰り返しの説明は省略する。
図１は、本発明のメモリ装置の一実施例（実施例１）であるキャッシュの概略構成を示すブロック図であり、本実施例１のキャッシュをプロセッサに適用した例を示す図である。
【００６５】
図１において、プロセッサは、プロセッサ本体１８２、アドレス変換バッファ（以下、ＴＬＢと称す）１９１、キャッシュ１９２、キャッシュウェイ予測部１９３、及び、キャッシュウェイ予測判定部１９４から構成される。
【００６６】
プロセッサ本体１８２は、アドレス生成部１９０とデータ処理部１９５を含んでいる。
【００６７】
ＴＬＢ１９１は、２セットアソシアティブ方式のメモリであり、また、キャッシュ１９２は２セットアソシアティブ方式のメモリであり、ウェイの予測を行なっている。
【００６８】
図２は、図１に示す、キャッシュ１９２、キャッシュウェイ予測部１９３、及び、キャッシュウェイ予測判定部１９４のより詳細な構成を拡大して示すブロック図であり、図３は、図１に示すＴＬＢ１９１のより詳細な構成を拡大して示すブロック図である。
【００６９】
図４は、図１に示すプロセッサのタイムチャートを示す図である。
【００７０】
図４は、キャッシュのウェイ０が予測され、予測がヒットした場合のタイムチャートを示す図である。
【００７１】
まず、図１と図４を用いて、図１に示すプロセッサの動作の概要を説明する。
【００７２】
図１に示すプロセッサは、パイプライン制御で処理される。
【００７３】
図４における、数字４０１は命令の番号を表し、１と番号の書かれた領域は、命令１を処理していることを示す。
【００７４】
以下、命令１の処理について述べる。
【００７５】
図１に示すように、ＴＬＢ１９１、キャッシュ１９２、キャッシュウェイ予測部１９３、及び、キャッシュウェイ予測判定器１９４から構成される部分は、動作するタイミングの違いによりメモリ部１８０とウェイ判定部１８１に分けられる。
【００７６】
時刻１で、アドレス生成部１９０はアドレスを生成し、次の時刻に前記アドレスをアドレス１００として出力する。
【００７７】
時刻２で、メモリ部１８０は、アドレス１００を入力して１サイクル後にデータ１４７をデータ処理部１９５に出力する。
【００７８】
このとき、キャッシュウェイ予測部１９３の出力信号であるキャッシュ予測ウェイ信号１５１はウェイ０を示しており、メモリ部１８０のキャッシュデータ格納部１４０、１４１に関しては、予測されたウェイ、すなわち、ウェイ０のキャッシュデータ格納部１４０のみが動作する。
【００７９】
そして、前記キャッシュデータ格納部１４０から読み出されたデータがデータ１４７として出力される。
【００８０】
時刻３では、データ処理部１９５がデータ１４７を入力して処理する。
【００８１】
また、時刻３では、ウェイ判定部１８１によって、メモリ部１８０から読み出されたデータ１４７が正しいウェイのデータであるか確認するための判定が行われる。
【００８２】
メモリ部１８０とこのウェイ判定部１８１はパイプライン方式で処理を行うことができる。
【００８３】
すなわち、時刻３において命令１がウェイ判定部１８１で処理されているときは、命令２がメモリ部１８０で処理される。
【００８４】
すべての命令のデータがウェイ判定部１８１によって、正しいウェイのデータであると判定されると（すなわち、ウェイ予測がヒットすると）、図４のようなタイムチャートとデータが処理される。
【００８５】
次に、図１〜図４を用いて、図１に示すプロセッサの動作の詳細を説明する。
【００８６】
最初に、時刻２におけるメモリ部１８０の動作ついて説明する。
【００８７】
まず、論理ページ番号上位ビット１０３は、ラッチ１０５に格納される。
【００８８】
また、論理ページ番号下位ビット１０２は、ＴＬＢタグ格納部（１１０，１１１）と、ＴＬＢのＴＬＢデータ格納部（１２０，１２１）にそれぞれ入力される。
【００８９】
そして、ＴＬＢタグ格納部（１１０，１１１）とＴＬＢのＴＬＢデータ格納部（１２０，１２１）が動作し、それぞれの出力がラッチ１１６、１１７、１２６および１２７にそれぞれ格納される。
【００９０】
一方、アドレスのページ内オフセット１０１は、キャッシュタグ格納部（１３０，１３１）と、キャッシュデータ格納部（１４０，１４１）に入力される。
【００９１】
そして、前記キャッシュタグ格納部（１３０，１３１）が動作して、それぞれキャッシュタグ（１３２，１３３）にタグの値を出力し、前記値はそれぞれラッチ（１３６，１３７）に格納される。
【００９２】
また、キャッシュウェイ予測部１９３からキャッシュ予測ウェイ信号１５１が出力される。
【００９３】
前記信号１５１の値は予測されたウェイ、すなわち、ウェイ０を示す。
【００９４】
この信号１５１は、ウェイデコーダ１６０でデコードされて、キャッシュデータ格納部（１４０，１４１）に入力される。
【００９５】
このとき、信号１５１の値がウェイ０を示すので、ウェイデコーダ１６０からウェイ０のデータ格納部１４０を動作させるための信号１６１が出力される。
【００９６】
この信号１６１により、データ格納部１４０が動作し、データ１４２を出力する。この場合、データ格納部１４１は動作しない。
【００９７】
データ選択器１４４には、予測されたウェイのデータ１４２とキャッシュ予測ウェイ信号１５１が入力される。
【００９８】
データ選択器１４４では、キャッシュ予測ウェイ信号１５１により示されたウェイ、すなわち、ウェイ０のデータ１４２が選択されてデータ１４５に出力される。
【００９９】
また、キャッシュ予測ウェイ信号１５１はラッチ１５２に格納される。
【０１００】
以上の処理が１サイクルで行なわれる。
【０１０１】
図７は、ウェイデコーダ１６０の構成を示す図である。
【０１０２】
キャッシュ予測ウェイ信号１５１は、２ビットの信号であり、ウェイ０が予測されたことを表す信号とウェイ１が予測されたことを表す信号により構成される。
【０１０３】
ウェイデコーダ１６０では、２ビットの信号を１ビットづつに分解してウェイ０が予測されたことを表す信号をキャッシュウェイ０イネーブル信号１６１として、ウェイ１が予測されたことを表す信号をキャッシュウェイ１イネーブル信号１６２としてそれぞれ出力する。
【０１０４】
次に、時刻３におけるウェイ判定部の動作について説明する。
【０１０５】
ラッチ１０５に格納された論理ページ番号上位ビットと、ラッチ（１１６，１１７）に格納されたＴＬＢタグと、ラッチ（１２６，１２７）に格納された物理ページ番号とに基づき、ＴＬＢウェイ判定器１１４と物理ページ番号選択器１２４によって、物理ページ番号１２５の値が生成される。
【０１０６】
さらに、ラッチ（１３６，１３７）に格納されたキャッシュタグと物理ページ番号１２５とに基づき、キャッシュウェイ判定器１３４によってキャッシュウェイ判定信号１３５に値が出力される。
【０１０７】
キャッシュウェイ判定信号１３５は２ビットの信号であり、物理ページ番号１２５とウェイ０のキャッシュタグ１３８が一致したかどうかを示す１ビット信号と物理ページ番号１２５とウェイ１のキャッシュタグ１３９が一致したかを示す１ビット信号により構成される。
【０１０８】
キャッシュウェイ予測判定器１５４では、ラッチ１５２に格納されたキャッシュ予測ウェイ信号１５１の値とキャッシュウェイ判定信号１３５とに基づいてキャッシュ１９２のウェイ予測がミスしたかどうかを判定する。
【０１０９】
図６は、図１に示すキャッシュウェイ予測判定器１５４を含むキャッシュウェイ予測判定部１９４のより詳細な構成を示すブロック図である。
【０１１０】
キャッシュ１９２の予測されたウェイを示す信号１５３は２ビットの信号であり、ウェイ０が予測されたことを示す信号７１０とウェイ１が予測されたことを示す信号７１１により構成される。
【０１１１】
また、キャッシュウェイ判定信号１３５は２ビットの信号であり、ウェイ０がヒットしたことを示す信号７１２とウェイ１がヒットしたことを示す信号７１３により構成される。
【０１１２】
ＡＮＤ演算器７００は、ウェイ０が予測され、かつ、ウェイ０がヒットしたときに１を出力する。
【０１１３】
また、ＡＮＤ演算器７０１は、ウェイ１が予測され、かつ、ウェイ１がヒットしたときに１を出力する。
【０１１４】
キャッシュウェイ予測判定禁止信号７０４は、キャッシュウェイ予測判定を行なわないときに１を出力する信号であり、時刻３では０を出力している。
【０１１５】
ＯＲ演算器７０５は、ウェイ０が予測されかつウェイ０がヒットしたか、または、ウェイ１が予測されかつウェイ１がヒットしたとき１を出力する。
【０１１６】
すなわち、ＯＲ演算器７０５は、キャッシュのウェイ予測がヒットした場合に１を出力する。
【０１１７】
ＮＯＴ演算器７０７は、キャッシュのウェイ予測がミスした場合にキャッシュウェイ予測判定信号１５５に１の値を出力する。
【０１１８】
時刻３では、命令１に関する処理がキャッシュウェイ予測判定器１５４で行なわれ、ウェイ０が予測されてウェイ０がヒットしているのでＡＮＤ演算器７００の出力信号７０２の値が１となる。
【０１１９】
そして、キャッシュウェイ予測判定信号１５５の値は０となり、キャッシュウェイ予測判定信号１５５ウェイ予測がヒットしたことを示す。
【０１２０】
ウェイ予測がヒットすれば、図４に示すように命令１と命令２はパイプラインで実行することができる。
【０１２１】
次に、キャッシュウェイ予測部１９３においてウェイ０を予測したにもかかわらず、キャッシュ１９２のウェイ１がヒットした場合について述べる。
【０１２２】
この場合には、ウェイ予測がミスしたことになる。
【０１２３】
キャッシュ１９２のウェイ１がヒットすると、キャッシュウェイ判定信号１３５の値はウェイ１を示し、図６に示す信号７１２の値が０に、信号７１３の値が１となる。
【０１２４】
一方、ウェイ０が予測されていたので、信号７１０の値は１、信号７１１の値は０であるから、ＡＮＤ演算器７００及び７０１の出力はともに０となり、信号７０６の値は０に、キャッシュウェイ予測判定信号１５５の値は１になる。
【０１２５】
すなわち、キャッシュウェイ予測判定信号１５５はウェイ予測ミスを示す。
【０１２６】
キャッシュウェイ予測判定信号１５５の値が１となると例外的な処理が実行される。
【０１２７】
図５は、前記した場合のタイムチャートを示す図である。
【０１２８】
図５は、命令１でウェイ０が予測されてウェイ予測がミスし、命令２以降でウェイ１が予測されてウェイ予測がヒットした場合のタイムチャートである。
【０１２９】
時刻３で、命令１のキャッシュウェイ予測判定信号１５５がウェイ予測のミスを示した場合、パイプライン制御信号１５６が出力されて、時刻３に行なわれようとしているプロセッサ本体１８２、ＴＬＢ１９１、キャッシュ１９２の動作を抑止する。
【０１３０】
ＴＬＢ１９１では、次の命令、すなわち、命令２の処理を開始しているが、途中で抑止される。
【０１３１】
また、時刻３では、キャッシュウェイ予測判定信号１５５によって、キャッシュウェイ判定信号１３５がラッチ１５０に格納される。
【０１３２】
これにより、キャッシュ予測ウェイ信号１５１の値が置き変わる。
【０１３３】
すなわち、時刻４からは、キャッシュ予測ウェイ信号１５１の値は、時刻３でキャッシュがヒットしたウェイであるウェイ１を示す。
【０１３４】
時刻４では、新しい値を持つキャッシュ予測ウェイ信号１５１が出力され、ウェイ１のキャッシュデータ格納部１４１を動作させる。
【０１３５】
キャッシュデータ格納部１４１の出力であるウェイ１のデータ１４３は、キャッシュ予測ウェイ信号１５１によりデータ選択器１４４で選択されてラッチ１４６に格納される。
【０１３６】
時刻５では、ラッチ１４６に格納されたウェイ１のデータがキャッシュ１９２から出力され、データ処理部１９５で処理される。
【０１３７】
なお、本実施例１において、キャッシュウェイ予測部１９３からの出力信号であるキャッシュ予測ウェイ信号１５１により、予測されたウェイのデータ格納部（１４０，１４１）だけでなく、予測されたウェイのタグ格納部（１３０，１３１）だけを活性化することも可能である。
【０１３８】
図８は、本発明のメモリ装置の他の実施例（実施例２）であるアドレス変換バッファ（ＴＬＢ）と、キャッシュの概略構成を示すブロック図であり、本実施例２のアドレス変換バッファ（ＴＬＢ）９９１と、キャッシュ９９２をプロセッサに適用した例を示す図である。
【０１３９】
図８に示すプロセッサは、図１に示すプロセッサにおいて、ＴＬＢウェイ予測部９９６とＴＬＢウェイ予測判定部９９７を付加し、ＴＬＢについてもウェイの予測を行なうようにしたものである。
【０１４０】
本実施例２のＴＬＢウェイ予測部９９６、および、ＴＬＢウェイ予測判定部９９７の構成は、前記実施例１のキャッシュウェイ予測部１９３、キャッシュウェイ予測判定部１９４と同じである。
【０１４１】
図８に示すプロセッサ本体９８２、キャッシュ９９２、キャッシュウェイ予測部９９３、キャッシュウェイ予測判定部９９４は、それぞれ、図１に示すプロセッサ本体１８２、キャッシュ１９２、キャッシュウェイ予測部１９３、キャッシュウェイ予測判定部１９４に対応している。
【０１４２】
図９は、図８に示すプロセッサのタイムチャートを示す図である。
【０１４３】
図９は、命令１から命令４のすべての命令について、ＴＬＢのウェイ０が予測され、予測がヒットした場合のタイムチャートを示す図である。
【０１４４】
図８、図９を用いて、図８に示すプロセッサの動作の概要を説明する。
【０１４５】
図８に示すプロセッサは、パイプライン制御で処理される。
【０１４６】
図９において、数字１００１は命令の番号を表し、１と番号の書かれた領域は、命令１を処理していることを示す。
【０１４７】
以下、命令１の処理について述べる。
【０１４８】
図９に示すように、ＴＬＢ９９１、キャッシュ９９２、ＴＬＢウェイ予測部９９６、及び、ＴＬＢウェイ予測判定部９９７、キャッシュウェイ予測部９９３、及び、キャッシュウェイ予測判定部９９４から構成される部分は、動作するタイミングの違いによりメモリ部９８０とウェイ判定部９８１に分けられる。
【０１４９】
時刻１で、アドレス生成部９９０はアドレスを生成し、次の時刻にアドレス９００を出力する。
【０１５０】
時刻２で、メモリ部９８０は、アドレス９００を入力して１サイクル後にデータ９４７をデータ処理部９９５に出力する。
【０１５１】
ＴＬＢデータ格納部（９２０，９２１）に関しては、ＴＬＢウェイ予測部９９６で予測されたウェイのＴＬＢデータ格納部９２０だけが動作する。
【０１５２】
ここでは、ＴＬＢウェイ予測部９９６でウェイ０が予測されているので、前記ＴＬＢウェイ予測部９９６の出力であるＴＬＢ予測ウェイ信号９６１はウェイ０を示す。
【０１５３】
そして、前記ＴＬＢ予測ウェイ信号９６１がＴＬＢ９９１に入力されて、ＴＬＢデータ格納部９２０が動作する。
【０１５４】
また、キャッシュデータ格納部（９４０，９４１）に関しては、キャッシュウェイ予測部９９３で予測されたウェイのキャッシュデータ格納部９４０だけが動作し、キャッシュデータ格納部９４０から読み出されたデータがデータ９４７として出力される。
【０１５５】
また、時刻２では、ＴＬＢタグ格納部（９１０，９１１）と、キャッシュタグ格納部（９３０，９３１）が動作する。
【０１５６】
そして、時刻３では、データ処理部９９５がデータ９４７を入力して処理する。
【０１５７】
また、ＴＬＢ９９１では、論理ページ番号９０４の上位ビットと前時刻にＴＬＢタグ格納部（９１０，９１１）から読みだされたＴＬＢタグが比較され、ＴＬＢウェイ判定信号９６０を出力する。
【０１５８】
さらに、ＴＬＢ９９１から前時刻にＴＬＢウェイ予測部９９６で予測されたウェイ、すなわち、ウェイ０のＴＬＢデータ格納部９２０から読みだされた物理ページ番号９２５が出力され、キャッシュ９９２に送られる。
【０１５９】
キャッシュ９９２では、物理ページ番号９２５と前時刻にキャッシュタグ格納部（９３０，９３１）から読みだされたキャッシュタグが比較され、キャッシュウェイ判定信号９３５を出力する。
【０１６０】
また、時刻３では、ＴＬＢウェイ予測判定部９９７において、ＴＬＢウェイ判定信号９６０の値と前時刻に出力されたＴＬＢ予測ウェイ信号９６１の値をもとにＴＬＢのウェイ予測がミスしていたかどうか判定する。
【０１６１】
さらに、時刻３では、キャッシュウェイ予測判定部９９４により、時刻２におけるキャッシュウェイ予測がミスしていたかどうかを判定する。
【０１６２】
もし、ＴＬＢウェイ予測とキャッシュウェイ予測がともにヒットしていれば、第１０図のようなタイムチャートとなる。
【０１６３】
次に、ＴＬＢのウェイ０を予測したにもかかわらず、ＴＬＢのウェイ１がヒットした場合について説明する。
【０１６４】
この場合には、ＴＬＢウェイ判定信号９６０の値がウェイ１を示し、ＴＬＢウェイ予測判定部９９７はＴＬＢウェイ予測がミスしたものと判定する。
【０１６５】
図１０は、前記した場合のタイムチャートを示す図である。
【０１６６】
この場合には、ＴＬＢウェイ予測判定信号９６２に値１が出力され、この値１は、ＴＬＢウェイ予測ミスを示している。
【０１６７】
そして、ＴＬＢウェイ予測判定信号９６２によって、ＴＬＢウェイ判定信号９６０の値がＴＬＢウェイ予測部９９６に格納される。
【０１６８】
この格納によって、時刻３におけるＴＬＢウェイ判定信号９６０の値、すなわち、ウェイ１を示す値が、時刻４からはＴＬＢ予測ウェイ信号９６１に出力される。
【０１６９】
また、時刻３において、パイプライン制御信号９６３が出力されて、時刻３に行なわれようとしているプロセッサ本体９８２、ＴＬＢ９９１、キャッシュ９９２の動作を抑止する。
【０１７０】
ＴＬＢ９９１やキャッシュ９９２では次の命令、すなわち、命令２の処理を開始しているが、途中で抑止される。
【０１７１】
時刻４では、新しい値をＴＬＢ予測ウェイ信号９６１が出力される。
【０１７２】
前記ＴＬＢ予測ウェイ信号９６１の値はウェイ１を示しており、ウェイ１のＴＬＢデータ格納部９２１を動作させる。
【０１７３】
一方、時刻４では、キャッシュ９９２は動作せずに内部状態を保持する。
【０１７４】
時刻５では、ＴＬＢデータ格納部９２１の出力が物理ページ番号９２５に出力される。
【０１７５】
そして、キャッシュ９９２よりキャッシュウェイ判定信号９３５が出力されてキャッシュウェイ予測判定部９９４に送られ、キャッシュウェイ予測判定部９９４でキャッシュのウェイ予測がミスしていないかどうかの判定が行なわれる。
【０１７６】
なお、本実施例２において、ＴＬＢウェイ予測部９９６からの出力信号であるＴＬＢ予測ウェイ信号９６１により、予測されたウェイのＴＬＢデータ格納部（９２０，９２１）だけでなく、予測されたウェイのＴＬＢタグ格納部（９１０，９１１）だけを活性化することも可能である。
【０１７７】
図１１は、本発明のメモリ装置の他の実施例（実施例３）であるキャッシュの概略構成を示すブロック図であり、本実施例３のキャッシュをプロセッサに適用した例を示す図である。
【０１７８】
図１１は、図１に示すプロッセサのアドレス生成部１９０をアドレス生成部１２９０に、キャッシュウェイ予測部１９３をキャッシュウェイ予測部１２９３にそれぞれ変更し、さらに、アドレス制御部１２９６を付加したものである。
【０１７９】
図１１に示すプロセッサ本体１２８２、ＴＬＢ１２９１、キャッシュ１２９２、キャッシュウェイ予測部１２９３、キャッシュウェイ予測判定部１２９４は、それぞれ、図１に示すプロセッサ本体１８２、ＴＬＢ１９１、キャッシュ１９２、キャッシュウェイ予測器１９３、キャッシュウェイ予測判定部１９４に対応している。
【０１８０】
アドレス生成部１２９０は、４つのアドレスラッチ１２２０〜１２２３を持っている。
【０１８１】
本実施例３においては、それぞれの前記アドレスラッチ１２２０〜１２２３に対応するキャッシュ予測ウェイラッチ１２３０〜１２３３をキャッシュウェイ予測部１２９３が持っていることが特徴である。
【０１８２】
アドレス生成部１２９０は、１２２０〜１２２３の４つのアドレスラッチを持ち、前記ラッチの出力のうちのいずれかひとつをアドレス選択器１２２４によって選択し、アドレス加算器１２２６とラッチ１２２８を経て１サイクル後にアドレス１２００に出力する。
【０１８３】
一方、キャッシュウェイ予測部１２９３は、アドレスラッチ１２２０〜１２２３に対応する４つのキャッシュ予測ウェイラッチ１２３０〜１２３３を持ち、アドレス選択器１２２４において、その出力が選択されたアドレスラッチに対応するキャッシュ予測ウェイラッチの出力をキャッシュ予測ウェイ選択器１２３４によって選択してキャッシュ予測ウェイ信号１２１２として出力する。
【０１８４】
このとき、アドレス選択器１２２４には、アドレス制御部１２９６から出力されるアドレスラッチ読みだし選択信号１２０５が、キャッシュ予測ウェイ選択器１２３４には、アドレスラッチ読みだし選択信号１２０５の１サイクル遅れの信号であるキャッシュ予測ウェイラッチ読みだし選択信号１２０８がそれぞれ入力される。
【０１８５】
そして、アドレスラッチ１２２０の出力がアドレス選択器１２２４において選択された場合には、キャッシュ予測ウェイラッチ１２３０の出力がキャッシュ予測ウェイ選択器１２３４において選択される。
【０１８６】
同様に、それぞれアドレスラッチ１２２１、１２２２、１２２３の出力がアドレス選択器１２２４において選択された場合には、それぞれキャッシュ予測ウェイラッチ１２３１、１２３２、１２３３の出力がキャッシュ予測ウェイ選択器１２３４において選択される。
【０１８７】
アドレス加算器１２２６は、同一のアドレスラッチを用いて連続するアドレス領域を次々にアクセスする場合に、アドレスラッチの値にある値を加えるときに使用する。
【０１８８】
ウェイ予測がミスしたときは、キャッシュ予測ウェイ信号１２１２に値を出力するために使用されたキャッシュ予測ウェイラッチにキャッシュウェイ判定信号１２１１の値が書き込まれる。
【０１８９】
この書き込みを行なうための機構が、ラッチ１２４０及びデコーダ１２４２である。
【０１９０】
ラッチ１２４０は、キャッシュ予測ウェイ選択器１２３４に入力されたキャッシュ予測ウェイラッチ読みだし選択信号１２０８の値を格納し記憶する。
【０１９１】
ウェイ予測がミスしたときは、キャッシュウェイ予測判定信号の値が１となる。
【０１９２】
デコーダ１２４２に入力される前記キャッシュウェイ予測判定信号１２１４の値が１となると、デコーダ１２４２はラッチ１２４０に格納された値をデコードしてラッチセット信号１２４３〜１２４６のいずれかひとつの値を１にする。
【０１９３】
図１２は、図１１に示すデコーダ１２４２の回路構成を示す図である。
【０１９４】
図１１に示す信号１２４１はデコード入力信号１４００に、図１１に示す信号１２４３〜１２４６はデコード出力信号１４３０〜１４３３に、図１１に示す信号１２１４はデコードイネーブル信号１４１０に対応している。
【０１９５】
デコード入力信号１４００は、２ビットの２進数により構成され、第０ビット目の信号１４０２と第１ビット目の信号１４０３に分解することができる。
【０１９６】
前記デコーダは、この２ビットの信号の値により、デコード出力信号１４３０〜１４３３のうちのいずれかひとつを１にする。
【０１９７】
ただし、デコードイネーブル信号１４１０の値が０のときは、デコード出力信号１４３０〜１４３３の値はすべて０となる。
【０１９８】
それぞれラッチセット信号１２４３〜１２４６が１のとき、それぞれキャッシュ予測ウェイラッチ１２３０〜１２３３にキャッシュウェイ判定信号１２１１の値が書き込まれる。
【０１９９】
図１３は、キャッシュ１２９２のデータ格納部に格納されたデータの一例を示す図である。
【０２００】
図１３において、１７００はウェイ０のキャッシュデータ格納部を、１７０１はウェイ１のキャッシュデータ格納部をそれぞれ表す。
【０２０１】
１７１０は、キャッシュ１２９２のラインであり、本例では１ラインに４つのデータが格納される。
【０２０２】
１７１１は、キャッシュ１２９２に格納されたデータである。
【０２０３】
１７１２は、データ１７１１のアドレスを補助的に示したものである。
【０２０４】
一般に、キャッシュ１２９２では、データはラインごとに管理され、同一ラインのデータは同一のウェイに格納される。
【０２０５】
図１３に示す例では、アドレス２００からアドレス２０３までが同一のラインに対応しており、データＢ［０］からデータＢ［３］までが同一ウェイに格納されている。
【０２０６】
同様に、データＡ［０］からデータＡ［３］までが同一ウェイに格納される。
【０２０７】
データＡは文字列データであり、データＡ［０］は１番目の文字データを、データＡ［１］は２番目の文字データを、データＡ［２］は３番目の文字データを、データＡ［３］は４番目の文字データを意味している。
【０２０８】
また、データＢも同様な文字列データである。
【０２０９】
ここでは、文字列データＡと文字列データＢとを比較するためにキャッシュ１２９２から順次文字データを読み出す処理の例を示す。
【０２１０】
文字列の比較では、文字データＡ［０］が文字データＢ［０］と、文字データＡ［１］が文字データＢ［１］と、以下同様に、文字データＡ［３］が文字データＢ［３］とそれぞれ比較される。
【０２１１】
そのために、文字データＡ［０］、文字データＢ［０］、文字データＡ［１］、文字データＢ［１］、以下同様に、文字データＡ［３］、文字データＢ［３］の順番でキャッシュ１２９２から文字データが読み出される。
【０２１２】
以下、図１４のタイムチャートを用いて、図１１に示すプロセッサの動作を説明する。
【０２１３】
図１４において、１６０１はラッチやキャッシュの出力信号の値、もしくは、信号の値を示す。
【０２１４】
時刻０において、文字列データＡの先頭アドレス１００がアドレスラッチ１２２０に、文字列データＢの先頭アドレス２００がアドレスラッチ１２２１にそれぞれ格納されているものとする。
【０２１５】
図１１に示すプロセッサでは、文字列データＡの各文字データを読み出すのにアドレスラッチ１２２０を使用し、文字データＡ〔０〕を読み出すときにはアドレス加算器１２２６において値０を、文字データＡ〔１〕を読み出すときにはアドレス加算器１２２６において値１を、以下同様に、文字データＡ〔３〕を読み出すときにはアドレス加算器１２２６において値３をそれぞれアドレスラッチ１２２０の値に加えている。
【０２１６】
同様に、文字列データＢの各文字データを読み出すのにアドレスラッチ１２２１を使用している。
【０２１７】
また、時刻０においては、キャッシュ予測ウェイラッチ１２３０、１２３１ともに値が０であるものとする。
【０２１８】
すなわち、アドレスラッチ１２２０、アドレスラッチ１２２１に対応する予測ウェイはともに０である。
【０２１９】
このタイムチャートにおいて、時刻１から読み出し処理を開始している。
【０２２０】
時刻１において、アドレス１００にある文字データＡ〔０〕を読み出すために、アドレスラッチ選択信号１２０５の値が０となりアドレスラッチ１２２０の値１００が選択されてアドレスラッチ選択出力信号１２２５に出力される。
【０２２１】
そして、アドレス加算器１２２６を経てアドレス１２２７に出力される。
【０２２２】
アドレス加算器１２２６では何も加えられずアドレス１２２７の値は１００のままである。
【０２２３】
時刻２で、アドレスラッチ選択信号１２０５の値の１サイクル遅れの信号であるキャッシュ予測ウェイラッチ読み出し選択信号１２０８の値０によって、アドレスラッチ１２２０に対応するキャッシュ予測ウェイラッチ１２３０の値０がキャッシュ予測ウェイ信号１２１２が読み出される。
【０２２４】
このことによって、キャッシュデータ格納部ウェイ０（１７００）が動作する。
【０２２５】
時刻３では、キャッシュウェイ判定信号１２１１が出力されるが、図１３に示すとおりアドレス１００にあるデータＡ〔０〕はキャッシュのウェイ１に存在するのでキャッシュウェイ判定信号１２１１の値は１となる。
【０２２６】
キャッシュウェイ予測判定部１２９４では、このキャッシュウェイ判定信号１２１１の値１と時刻２で出力されたキャッシュ予測ウェイ信号１２１２の値０とを比較するが、不一致なのでウェイ予測ミスとなる。
【０２２７】
そこで、パイプライン制御信号１２１３を発行するとともに、キャッシュウェイ予測判定信号１２１４の値を１にする。
【０２２８】
デコーダ１２４２には、キャッシュ予測ウェイラッチ読み出し選択信号１２０８の１サイクル遅れの信号であるデコーダ入力信号１２４１が入力され、時刻２で読み出しを行ったキャッシュ予測ウェイラッチ１２３０にラッチセット信号１２４３が入力される。
【０２２９】
このことによって、キャッシュウェイ判定信号１２１１の値１がキャッシュ予測ウェイラッチ１２３０に書き込まれる。
【０２３０】
すなわち、時刻３において、アドレスラッチ１２２０に対応する予測ウェイは１に変更される。
【０２３１】
時刻４では、キャッシュ予測ウェイラッチ１２３０の値が１となり、キャッシュ予測ウェイ信号１２１２には正しいウェイ予測値である１が出力され、キャッシュデータ格納部ウェイ１（１７０１）から文字データＡ〔０〕が読み出される。
【０２３２】
時刻５では、キャッシュの出力データ信号１２１５にＡ〔０〕が出力される。
【０２３３】
一方、時刻２では、アドレス２００にある文字データＢ〔０〕を読み出すために、アドレスラッチ選択信号１２０５の値が１となりアドレスラッチ１２２１の値２００が選択されてアドレスラッチ選択出力信号１２２５に出力される。
【０２３４】
そして、アドレス加算器１２２６を経てアドレス１２２７に出力される。
【０２３５】
アドレス加算器１２２６では、何も加えられずアドレス１２２７の値は２００のままである。
【０２３６】
時刻３では、この値２００がラッチ１２２８からアドレス１２００から出力される。
【０２３７】
また、アドレスラッチ選択信号１２０５の値１がラッチ１２０９からキャッシュ予測ウェイラッチ読み出し選択信号１２０８に出力される。
【０２３８】
時刻４では、キャッシュ予測ミス処理のために、一旦、アドレスラッチ選択信号１２０５の値とキャッシュ予測ウェイラッチ読み出し選択信号１２０８の値は、文字データＡ〔０〕の読み出しのために変更されてしまうが、時刻５では、再び時刻３と同じ値を取り戻す。
【０２３９】
ここで、ラッチ１２０９とラッチ１２２８は値回復機能付きラッチであり、その回路構成を図１５に示す。
【０２４０】
図１５において、回復機能付きラッチ１８００がラッチ１２０９またはラッチ１２２８に、入力信号１８０１が信号１２０５または信号１２２７に、出力信号１８０２が信号１２０８または１２００にそれぞれ対応している。
【０２４１】
値回復機能付きラッチ１８００は、通常、ラッチ１８１０を用いて入力信号１８０１を出力信号１８０２に出力する単なるラッチとして機能するが、１サイクル前の値をラッチ１８１１に記憶している。
【０２４２】
文字データＡ〔０〕読み出しのキャッシュのウェイ予測のミスが判定された時刻３では、既に、次の文字データＢ〔０〕のアドレスまたはキャッシュ予測ウェイラッチ読み出し選択信号（以下、文字データＢ〔０〕読み出しパラメータと呼ぶ）が回復機能付きラッチ１８００から出力されているが、文字データＡ〔０〕読み出しパラメータはラッチ１８１１に記憶されている。
【０２４３】
この時刻に発行されるパイプライン制御信号１２１３をもとに、時刻４では、ラッチ１８１１に格納された文字データＡ〔０〕読み出しパラメータを読み出してウェイ予測ミスをした文字データＡ〔０〕の読み出し処理を再実行し、時刻５では文字データＢ〔０〕読み出しパラメータをラッチ１８１０から読み出して通常の処理に戻る。
【０２４４】
そして、時刻５では、キャッシュ予測ウェイラッチ読み出し選択信号１２０８の値１によってキャッシュ予測ウェイラッチが選択されキャッシュ予測ウェイ信号１２１２に値０が出力される。
【０２４５】
このことによって、キャッシュデータ格納部ウェイ０（１７００）が動作して文字データＢ〔０〕を読み出す。
【０２４６】
文字データＢ〔０〕は、図１３に示されるようにウェイ０に格納されているのでウェイ予測はヒットとなる。
【０２４７】
時刻６では、文字データＢ〔０〕の値がキャッシュの出力データ信号１２１５に出力される。
【０２４８】
以上の２つの文字データの読み出しの後、アドレスラッチ１２２０に対応するキャッシュ予測ウェイラッチ１２３０の値が１に、アドレスラッチ１２２１に対応するキャッシュ予測ウェイラッチ１２３１の値が０となっている。
【０２４９】
したがって、この後、文字データＡ〔１〕、Ｂ〔１〕、Ａ〔２〕、Ｂ〔２〕、Ａ〔３〕、Ｂ〔３〕を読み出すときに、それぞれ、アドレスラッチ１２２０、１２２１、１２２０、１２２１、１２２０、１２２１を使用するので、キャッシュ予測ウェイの値はすべて正しいものとなり、ウェイ予測はヒットする。
【０２５０】
このように、本実施例においては、いくつかの連続した領域を交互にアクセスする場合にもウェイ予測がヒットする可能性が高くなる。
【０２５１】
図１６は、本発明の他の実施例（実施例４）であるキャッシュの概略構成を示すブロック図であり、本実施例４のキャッシュをプロセッサに適用した例を示す図である。
【０２５２】
なお、図１６においては、プロセッサで使用されるアドレス生成部、キャッシュウェイ予測部、及び、アドレス制御部だけを示している。
【０２５３】
図１６は、図１１に示すアドレス生成部１２９０、キャッシュウェイ予測部１２９３およびアドレス制御部１２９６を、アドレス生成部１３９０、キャッシュウェイ予測部１３９３およびアドレス制御部１３９６に置き換えて、プロセッサを構築したものである。
【０２５４】
図１６に示すアドレス生成部１３９０は、アドレスラッチからアドレスラッチへのアドレスの転送が可能であり、アドレスラッチ１３２０〜１３２３のうちのあるアドレスラッチの出力の値を、アドレス選択器１３２４及びアドレス加算器１３２６を経由してアドレスラッチ１３２０〜１３２３のうちの任意のアドレスラッチに書き込むことができる。
【０２５５】
ラッチセット信号１３５１〜１３５４は、アドレスラッチ１３２０〜１３２３にアドレス１３００の値をセットするための信号で、それぞれラッチセット信号１３５１〜１３５４の値が１のときにそれぞれアドレスラッチ１３２０〜１３２３にアドレス１３００の値がセットされる。
【０２５６】
ラッチセット信号１３５１〜１３５４の値は、アドレスラッチ書き込みイネーブル信号１３０７とアドレスラッチ書き込み選択信号１３０６とに基づき、デコーダ１３５０で生成される。
【０２５７】
アドレスラッチ書き込みイネーブル信号１３０７は、アドレスラッチ１３２０〜１３２３へのアドレスの転送が行なわれるときに１となる信号である。
【０２５８】
この信号が１のときには、アドレスラッチ書き込み選択信号１３０６がデコーダ１３５０においてデコードされて、ラッチセット信号１３５１〜１３５４が出力される。
【０２５９】
デコーダ１３５０の回路構成は、図１２と同じであり、図１６に示す信号１３０６はデコード入力信号１４００に、図１６に示す信号１３５１〜１３５４はデコード出力信号１４３０〜１４３３に、図１６に示す信号１３０７はデコードイネーブル信号１４１０に対応している。
【０２６０】
キャッシュウェイ予測部１３９３は、キャッシュ予測ウェイラッチ１３３０〜１３３３を持ち、キャッシュウェイ判定信号１３１１をキャッシュ予測ウェイラッチ１３３０〜１３３３に書き込むことができる。
【０２６１】
キャッシュウェイ予測部１３９３においては、さらに、キャッシュ予測ウェイラッチからキャッシュ予測ウェイラッチへのキャッシュ予測ウェイの値の転送が可能であり、キャッシュ予測ウェイラッチ１３３０〜１３３３のうちのあるキャッシュ予測ウェイラッチの出力の値をキャッシュ予測ウェイ選択器１３３４を経由してキャッシュ予測ウェイラッチ１３３０〜１３３３のうちの任意のキャッシュ予測ウェイラッチに書き込むことができる。
【０２６２】
キャッシュ予測ウェイの前記転送は、アドレスの前記転送が行なわれたときに行なわれる。
【０２６３】
アドレスの前記転送が行なわれるときにアドレスラッチ書き込みイネーブル信号１３０７の値が１になることにより、キャッシュ予測ウェイラッチ書き込み選択信号選択器１３６０では、アドレスラッチ書き込み選択信号１３０６の値がキャッシュ予測ウェイラッチ書き込み選択信号１３６１に出力され、キャッシュ予測ウェイラッチ書き込みデータ選択器１３６２ではキャッシュ予測ウェイ信号１３１２の値がキャッシュ予測ウェイラッチ書き込みデータ１３６３に出力され、そして、キャッシュ予測ウェイラッチ書き込みイネーブル信号選択器１３６４ではアドレスラッチ書き込みイネーブル信号１３０７の値、すなわち値１がキャッシュ予測ウェイラッチ書き込みイネーブル信号１３６５に出力される。
【０２６４】
デコーダ１３４２では、キャッシュ予測ウェイラッチ書き込み選択信号１３６１の値がデコードされてラッチセット信号１３４３〜１３４６が出力される。
【０２６５】
デコーダ１３４２の回路構成も、図１２と同じであり、図１６に示す信号１３６１はデコード入力信号１４００に、図１６に示す信号１３４３〜１３４６はデコード出力信号１４３０〜１４３３に、図１６に示す信号１３６５はデコードイネーブル信号１４１０に対応している。
【０２６６】
ラッチセット信号１３４３〜１３４６は、キャッシュ予測ウェイラッチ１３３０〜１３３３にキャッシュ予測ウェイラッチ書き込みデータ１３６３の値をセットするための信号で、それぞれラッチセット信号１３４３〜１３４６の値が１のときにそれぞれキャッシュ予測ウェイラッチ１３３０〜１３３３にキャッシュ予測ウェイラッチ書き込みデータ１３６３の値がセットされる。
【０２６７】
アドレスラッチ書き込みイネーブル信号１３０７の値が０のときのキャッシュウェイ予測部１３９３の動作は、前記図１１に示すキャッシュウェイ予測部１２９３の動作と同じである。
【０２６８】
なお、前記実施例３および実施例４において、アドレス変換バッファ（ＴＬＢ）においてウェイを予測するようにすることも可能であり、その際、キャッシュウェイ予測部（１２９３，１３９３）に示すようにＴＬＢウェイ予測部の予測ウェイラッチを複数個設けることも可能である。
【０２６９】
また、前記実施例３および実施例４は、予測値に基づいて予測されたウェイのデータ格納部、あるいは、ＴＬＢのＴＬＢデータ格納部の活性化を行わない、従来のキャッシュにも適用できることはいうまでもない。
以上、本発明者によってなされた発明を、前記実施例に基づき具体的に説明したが、本発明は、前記実施例に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは勿論である。
【図面の簡単な説明】
【０２７０】
【図１】本発明のメモリ装置の一実施例（実施例１）であるキャッシュの概略構成を示すブロック図であり、本実施例１のキャッシュをプロセッサに適用した例を示す図である。
【図２】図１に示す、キャッシュ、キャッシュウェイ予測部、及び、キャッシュウェイ予測判定部のより詳細な構成を拡大して示すブロック図である。
【図３】図１に示す、アドレス変換バッファ（ＴＬＢ）のより詳細な構成を拡大して示すブロック図である。
【図４】図１に示すプロセッサにおいて、キャッシュのウェイ予測がヒットしたときのタイムチャートを示す図である。
【図５】図１に示すプロセッサにおいて、キャッシュのウェイ予測がミスしたときのタイムチャートを示す図である。
【図６】図１に示すキャッシュウェイ予測判定部のより詳細な構成を示すブロック図である。
【図７】図２に示すウェイデコーダの構成を示す図である。
【図８】本発明のメモリ装置の他の実施例（実施例２）であるアドレス変換バッファ（ＴＬＢ）と、キャッシュの概略構成を示すブロック図であり、本実施例２のアドレス変換バッファ（ＴＬＢ）と、キャッシュをプロセッサに適用した例を示す図である。
【図９】図８に示すプロセッサにおいて、アドレス変換バッファ（ＴＬＢ）のウェイ予測がヒットしたときのタイムチャートを示す図である。
【図１０】図８に示すプロセッサにおいて、アドレス変換バッファ（ＴＬＢ）のウェイ予測がミスしたときのヒットしたときのタイムチャートを示す図である。
【図１１】本発明のメモリ装置の他の実施例（実施例３）であるキャッシュの概略構成を示すブロック図であり、本実施例３のキャッシュをプロセッサに適用した例を示す図である。
【図１２】図１１に示すデコーダの回路構成を示す図である。
【図１３】図１１に示すキャッシュのデータ格納部に格納されたデータの一例を示す図である。
【図１４】図１１に示すプロセッサのタイムチャートを示す図である。
【図１５】図１１に示す値回復機能付きラッチの回路構成を示す図である。
【図１６】本発明のメモリ装置の他の実施例（実施例４）であるキャッシュの概略構成を示すブロック図であり、本実施例４のキャッシュをプロセッサに適用した例を示す図である。
【図１７】従来のセットアソシアティブ方式のメモリの概略構成を示すブロック図である。
【符号の説明】
【０２７１】
１００，６００，９００，１２００，１２２７，１３００  アドレス
１０１，６０１，９０１，１２０１  ページ内オフセット
１０２，６０２  論理ページ番号下位ビット
１０３，６０３  論理ページ番号上位ビット
１０４，６０４，９０４，１２０４  論理ページ番号
１１０，１１１，６１０，６１１，９１０，９１１  ＴＬＢタグ格納部
１１２，１１３，６１２，６１３  ＴＬＢタグ
１１４，６１４  ＴＬＢウェイ判定器
１０５，１１６，１１７，１２６，１２７，１３６，１３７，１４６，１５２，６４６，１２４０，１３４０，１８１０，１８１１  ラッチ
１２０，１２１，６２０，６２１，９２０，９２１  ＴＬＢデータ格納部
１２２，１２３，６２２，６２３，６２５，９２５，１２１０  物理ページ番号
１２４，６２４  物理ページ番号選択器
１３０，１３１，６３０，６３１，９３０，９３１  キャッシュタグ格納部
１３２，１３３，６３２，６３３  キャッシュタグ
１３４，６３４  キャッシュウェイ判定器
１４０，１４１，６４０，６４１，９４０，９４１，１７００，１７０１  キャッシュデータ格納部
１４４，６４４  データ選択器
１５０，１２３０，１２３１，１２３２，１２３３，１３３０，１３３１，１３３２，１３３３  キャッシュ予測ウェイラッチ
１５４  キャッシュウェイ予測判定器
１６０  ウェイデコーダ
１８０，９８０  メモリ部
１８１，９８１  ウェイ判定部
１８２，９８２，１２８２  プロセッサ本体
１９０，９９０，１２９０，１３９０  アドレス生成部
１９１，６９１，９９１，１２９１  ＴＬＢ
１９２，６９２，９９２，１２９２  キャッシュ
１９３，９９３，１２９３，１３９３  キャッシュウェイ予測部
１９４，９９４，１２９４  キャッシュウェイ予測判定部
１９５，９９５，１２９５  データ処理部
４０１，１００１  命令の番号
７００，７０１，１４２０〜１４２３  ＡＮＤ演算器
７０５  ＯＲ演算器
７０７，１４０４，１４０５  ＮＯＴ演算器
７９０  キャッシュウェイ予測判定制御論理
９９６  ＴＬＢウェイ予測部
９９７  ＴＬＢウェイ予測判定部
１２０９，１２２８，１８００  値回復機能付きラッチ
１２２０，１２２１，１２２２，１２２３，１３２０，１３２１，１３２２，１３２３  アドレスラッチ
１２２４，１３２４  アドレス選択器
１２２６，１３２６  アドレス加算器
１２３４，１３３４  キャッシュ予測ウェイ選択器
１２４２，１３４２，１３５０，１４９０  デコーダ
１２９６，１３９６  アドレス制御部
１３６０  書き込み選択信号選択器
１３６２  書き込みデータ選択器
１３６４  書き込みイネーブル信号選択器
１７１０  キャッシュのライン
１７１１  データ
１７１２  データのアドレス。
【図１】
0003593123.tif 000002
【図２】
0003593123.tif 000003
【図３】
0003593123.tif 000004
【図４】
0003593123.tif 000005
【図５】
0003593123.tif 000006
【図６】
0003593123.tif 000007
【図７】
0003593123.tif 000008
【図８】
0003593123.tif 000009
【図９】
0003593123.tif 000010
【図１０】
0003593123.tif 000011
【図１１】
0003593123.tif 000012
【図１２】
0003593123.tif 000013
【図１３】
0003593123.tif 000014
【図１４】
0003593123.tif 000015
【図１５】
0003593123.tif 000016
【図１６】
0003593123.tif 000017
【図１７】
0003593123.tif 000018