(57)【要約】【課題】データメモリのアドレスの一部をウェイ情報と置き換えることで、複数のウェイの全ての出力を同時に利用する。【解決手段】セットアソシアティブ方式のキャッシュメモリ１２は、アドレスの所定の上位ビットであるタグを記憶するタグメモリ２１と、リクエストアドレス（RA）の中のタグとタグメモリ２１に記憶されているタグとを比較するタグ比較器２２と、タグ比較器２２が比較して得られたウェイ情報をColumnアドレスの一部に組み入れたデータメモリ２５とを有する。【選択図】図２
2010097557.tif 000002
【特許請求の範囲】
【請求項１】
複数のウェイにより構成されるセットアソシアティブ方式のキャッシュ装置において、
アドレスの所定の上位ビットであるタグを記憶するタグメモリと
リクエストアドレスの中のタグと前記タグメモリに記憶されている前記タグとを比較するタグ比較器と、
前記タグ比較器が比較して得られたウェイ情報をアドレスの一部に組み入れたデータメモリと、
を有することを特徴とするセットアソシアティブ方式のキャッシュ装置。
【請求項２】
前記複数のウェイを選択するためのセレクト信号の情報を前記リクエストアドレスの中に含み、
前記アドレスの一部は、前記データメモリ中のデータを指定するためのアドレスの所定の下位ビットであり、
前記ウェイ情報を前記セレクト信号の情報に代わり、前記所定の下位ビットに組み入れることにより、前記複数のウェイからのデータを同時にアクセスすることを特徴とする請求項１に記載のセットアソシアティブ方式のキャッシュ装置。
【請求項３】
前記リクエストアドレスの中に含まれる前記セレクト信号の情報に基づいて、前記複数のウェイから動作させるウェイを判定し、判定結果に基づいて、前記動作させるウェイの動作を開始することを特徴とする請求項２に記載のセットアソシアティブ方式のキャッシュ装置。
【請求項４】
前記データメモリのアクセスに必要なデータ幅の情報を前記リクエストアドレスの中に含み、
前記リクエストアドレスの中に含まれる前記データ幅の情報に基づいて、前記複数のウェイからアクセスに必要なウェイを選択する、または、前記複数のウェイから動作させるウェイを判定し、判定結果に基づいて、前記動作させるウェイの動作を開始することを特徴とする請求項２または３に記載のセットアソシアティブ方式のキャッシュ装置。
【請求項５】
前記前記複数のウェイからのデータのうちいずれかを選択するセレクタをさらに有し、
前記セレクタは、同時にアクセスした前記複数のウェイからのデータのうち、前記セレクト信号により選択されたデータを出力することを特徴とする請求項２から４のいずれかに記載のセットアソシアティブ方式のキャッシュ装置。
【請求項６】
前記ウェイ情報は、ウェイヒット情報または前記ウェイヒット情報をエンコードして得られたウェイ番号情報であることを特徴とする請求項１から５のいずれかに記載のセットアソシアティブ方式のキャッシュ装置。
【請求項７】
複数のウェイにより構成されるセットアソシアティブ方式のキャッシュ装置からデータをアクセスするキャッシュ方法において、
アドレスの所定の上位ビットであるタグを記憶し、
リクエストアドレスの中のタグと前記タグメモリに記憶されている前記タグとを比較して、
比較して得られたウェイ情報をデータメモリ中のデータを指定するためのアドレスの一部に組み入れことを特徴とするセットアソシアティブ方式のキャッシュ方法。
【請求項８】
前記複数のウェイを選択するためのセレクト信号の情報を前記リクエストアドレスの中に含み、
前記リクエストアドレスの中に含まれる前記セレクト信号の情報に基づいて、前記複数のウェイから動作させるウェイを判定し、判定結果に基づいて、前記動作させるウェイの動作を開始することを特徴とする請求項７に記載のセットアソシアティブ方式のキャッシュ方法。
【請求項９】
前記データメモリのアクセスに必要なデータ幅の情報を前記リクエストアドレスの中に含み、
前記リクエストアドレスの中に含まれる前記データ幅の情報に基づいて、前記複数のウェイからアクセスに必要なウェイを選択する、または、前記複数のウェイから動作させるウェイを判定し、判定結果に基づいて、前記動作させるウェイの動作を開始することを特徴とする請求項７または８に記載のセットアソシアティブ方式のキャッシュ方法。
【請求項１０】
前記ウェイ情報は、ウェイヒット情報または前記ウェイヒット情報をエンコードして得られたウェイ番号情報であることを特徴とする請求項７から９のいずれかに記載のセットアソシアティブ方式のキャッシュ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セットアソシアティブ方式のキャッシュ装置及びキャッシュ方法に関する。
【背景技術】
【０００２】
従来、セットアソシアティブ方式のキャッシュメモリでは、論理的にウェイ数と同じ組のタグメモリとデータメモリを持っていた。キャッシュへのアクセスがあると、キャッシュ全体の容量をウェイ数で割った容量分のアドレスビットを境界として、MSB側をタグ、LSB側をインデックスとしてアドレスを分解する。インデックスをアクセス単位で割った値によりタグメモリ、データメモリを引き、タグメモリからの出力とアクセスしたアドレスから生成したタグを比較して一致していればキャッシュヒットとなる。さらに、タグが一致しているウェイの番号に基づいて、データメモリからの出力を選択することで目的とするアドレスに対応するデータを得ていた。
【０００３】
しかし、この方法では、データメモリからの出力ビット数をウェイ数で割ったビット数分しかデータとして使うことができない。
【０００４】
例えば、プロセッサから出力されるアドレスが32ビット、全体の容量が256kバイト、キャッシュのデータアクセス幅が128ビット（16バイト）、キャッシュラインサイズが128バイト（1024ビット）、４ウェイセットアソシアティブの構成のキャッシュでは、ウェイあたりのキャッシュ容量は256kバイト／４ウェイ＝64kバイトとなる。
【０００５】
すなわち、16ビットのアドレス空間をもつので、タグメモリのタグのビット数は32ビット−16ビット＝16ビットとなる。また、インデックスのビット数は、ウェイあたりのキャッシュのアドレス空間が64キロバイト（16ビット）、キャッシュラインサイズが128バイト（アドレス空間は7ビット）のため、16ビット−7ビット＝9ビットとなる。
【０００６】
一方、データメモリは、データのアクセス単位が16ビット（アドレス空間は4ビット）なので、16ビット−4ビット＝12ビットとなる。
【０００７】
便宜上、キャッシュ状態は、タグメモリと同じアドレスを持つステートメモリに分割されているものとし、データメモリのアドレスをタグメモリのインデックスに相当する9ビットとキャッシュラインの中でのブロックオフセットの3ビットに分割するような構成となる。
【０００８】
ここで、各データメモリは、128ビット幅のデータポートを持ち、４ウェイ分合計すると512ビットのリードデータを出力するが、リードデータの出力はタグメモリからのウェイ番号で選択されるため128ビットしか利用することができない。すなわち、各データメモリから出力されるリードデータは、別々のアドレスに対応するものであるため、４組のデータメモリ出力は、最大でも１組しか利用できないという問題があった。
【非特許文献１】柴山  潔著「コンピュータアーキテクチャ」オーム社出版、平成９年３月２０日  p.292
【非特許文献２】David.A.Patterson and John L. Hennessy著「Computer Organization and Design − The Hardware/Software interface − second edition」(1998 Morgan Kaufmann : ISBN 1-55860-428-6)  p.574 Figure 7.19
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、データメモリのアドレスの一部をウェイ情報と置き換えることで、複数のウェイの全ての出力を同時に利用することができるセットアソシアティブ方式キャッシュ装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一態様によれば、複数のウェイにより構成されるセットアソシアティブ方式のキャッシュ装置において、アドレスの所定の上位ビットであるタグを記憶するタグメモリと、リクエストアドレスの中のタグと前記タグメモリに記憶されている前記タグとを比較するタグ比較器と、前記タグ比較器が比較して得られたウェイ情報をアドレスの一部に組み入れたデータメモリとを有することを特徴とするセットアソシアティブ方式のキャッシュ装置を提供することができる。
【発明の効果】
【００１１】
本発明のセットアソシアティブ方式キャッシュ装置によれば、データメモリのアドレスの一部をウェイ情報と置き換えることで、複数のウェイの全ての出力を同時に利用することができる。また、必要とするデータ幅が複数のウェイの全ての出力の半分以下の場合、要求されたアドレスのみを用いて、複数のウェイのうちデータの存在する可能性のあるウェイのみを活性化することができる。
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照して本発明の実施の形態について詳細に説明する。  
（第１の実施の形態）  
まず、図１に基づき、本発明の第１の実施の形態に係るプロセッサシステムの構成について説明する。図１は、本発明の第１の実施の形態に係るプロセッサシステムの構成を示す構成図である。
【００１３】
図１に示すように、プロセッサシステム１は、中央処理装置（以下、CPUという）１１と、レベル１（L1）のキャッシュメモリ１２と、主メモリとしてのDRAM１３とを有して構成されている。キャッシュメモリ１２とDRAM１３は、互いにバスで接続されている。CPU１１は、いわゆるCPUコアである。
【００１４】
なお、本実施の形態では、１つのCPU１１がDRAM１３をアクセスする例であるが、CPU１１とキャッシュメモリ１２の対が複数あって、その複数の対が、システムバス等を介して、１つのDRAM１３と接続されるようなマルチコアの構成でもよい。
【００１５】
CPU１１は、主メモリ１３に記憶された命令あるいはデータを、キャッシュメモリ制御回路を含むキャッシュメモリ１２を介して読み出して実行する。CPU１１は、プログラムの実行に必要な命令あるいはデータ（以下、単にデータともいう）を、キャッシュメモリ１２から読み出してそのプログラムを実行する。
【００１６】
CPU１１は、そのデータを指定するためにリクエストアドレス（RA）をキャッシュメモリ１２に出力し、キャッシュメモリ１２は、キャッシュメモリ１２中に入力されたリクエストアドレス（RA）に対応するデータが存在すれば、そのデータをCPU１１へ出力する。キャッシュメモリ１２中にストアされたデータが無ければ、リフィル処理によりDRAM１３からそのデータを読み出してキャッシュメモリ１２に書き込み、CPU１１に出力する。
【００１７】
なお、CPU１１がキャッシュメモリ１２に出力するリクエストアドレスRAは、実アドレス、あるいは、仮想アドレスのいずれでもよい。
【００１８】
図２は、キャッシュメモリ１２の構成を説明するための構成図である。  
図２に示すように、キャッシュメモリ１２は、タグメモリ２１と、タグ比較器２２と、キャッシュステートメモリ２３と、マルチプレクサ（以下、MUXという）２４と、データメモリ２５と、MUX２６とを有して構成されている。
【００１９】
キャッシュメモリ１２は、L1キャッシュとしての機能を、４ウェイセットアソシアティブ構成のキャッシュメモリにより実現している。キャッシュメモリ１２のL1キャッシュとしての容量は、256KB（キロバイト。以下、同じ。）である。各キャッシュラインは、128Bであり、各キャッシュライン中の各ブロックは、128ビットである。
【００２０】
CPU１１から出力されるリクエストアドレス（RA）は、３２ビットとする。なお、リクエストアドレス（RA）のアドレスマッピングについては、後述する図３を用いて詳細に説明する。
【００２１】
タグメモリ２１は、ウェイ毎のタグメモリを含み、各タグメモリは、タグと、各エントリが有効であるか否かを示すValid（V）や状態を示すステート等の状態情報とを記憶可能である。タグは、リクエストアドレス（RA）中の上位ビット(31:16)に対応するデータである。各タグメモリのインデックス（Index）は、リクエストアドレス（RA）中のビット（15:7）により指定される。各タグメモリのタグ及びValidのそれぞれは、４つのタグ比較器２２に出力される。
【００２２】
各タグ比較器２２には、リクエストアドレス（RA）中の上位ビット(31:16)が供給される。各タグ比較器２２は、各タグメモリから出力されるタグとリクエストアドレス（RA）中の上位ビット(31:16)との比較を行う。各タグ比較器２２は、このような比較に基づいて、キャッシュヒット、キャッシュミスの判定を行い、データメモリ２５にキャッシュヒット、キャッシュミスの判定結果を出力する。また、各タグ比較器２２は、キャッシュヒットと判定した場合には４ビットのウェイヒット情報をMUX２４及びデータメモリ２５に出力する。
【００２３】
キャッシュステートメモリ２３は、ウェイ毎のキャッシュステートメモリを含む。各キャッシュステートメモリ２３の各データは、リクエストアドレス（RA）中の９ビット(15:7)により指定され、指定された各データをMUX２４に出力する。キャッシュステートメモリ２４は、キャッシュライン単位（すなわちキャッシュブロック単位）で、キャッシュのステート管理を行うためのメモリである。
【００２４】
４入力１出力のMUX２４は、キャッシュステートメモリ２３から出力された各データのうち、タグ比較器２２からのウェイヒット情報により選択されたデータを出力する。
【００２５】
データメモリ２５は、ウェイ毎のデータメモリを含む。各データメモリは、各データを128バイト単位で管理している。各データメモリの各データは、RowアドレスであるRowインデックスと、ColumnアドレスであるColumnインデックスとにより指定される。
【００２６】
Rowアドレスは、リクエストアドレス（RA）中の９ビット(15:7)が用いられる。また、Columnアドレスは、リクエストアドレス（RA）中の１ビット(6)とタグ比較器２２からのウェイヒット情報である4ビットとが用いられる。リクエストアドレス（RA）中の２ビット(5:4)は、データセレクト信号としてMUX２６に供給される。
【００２７】
従来では、リクエストアドレス（RA）中の３ビット(6:4)がColumnアドレスを指定し、４ビットのウェイヒット信号でデータメモリからの出力を選択していた。本実施の形態では、この３ビット(6:4)中の下位２ビット(5:4)をデータセレクト信号とし、この下位２ビット(5:4)の代わりに４ビットのウェイヒット情報が用いられる。なお、この下位２ビット(5:4)は、データメモリ２５内の図示しないデコーダによりデコードされ４ビットのデータ選択信号となる。そのため、本実施の形態では、データメモリ２５内においてデコードを行う処理を省くため、この下位２ビット(5:4)の代わりにタグ比較器２２からの４ビットのウェイヒット情報が用いられている。Rowアドレス及びColumnアドレスに基づいて、データメモリ２５から出力された４組の128 ビットの各データは、MUX２６に入力される。また、本構成では、データメモリ２５は、この512ビットのデータをそのまま出力することもできる。
【００２８】
４入力１出力のMUX２６は、データメモリ２５から出力された各データのうち、リクエストアドレス（RA）中の２ビット(5:4) により選択された128ビットのデータを出力する。
【００２９】
図３は、アドレスマッピングを説明するための説明図である。
【００３０】
CPUコアからのリクエストアドレス（RA）は、32ビットにより出力される。
【００３１】
CPUコアからのリクエストアドレス（RA）がキャッシュ領域に出力される場合、CPU１１のアドレスは、キャッシュラインサイズ128Bを境界としてキャッシュラインのブロック番号を示すブロックナンバ（Block number）と、ブロック内のオフセットを示すブロックオフセット（Block offset）とに分かれる。
【００３２】
タグメモリ２１のアクセスのためにアドレスを以下のように分解する。キャッシュラインサイズ128B以下は無視する（Don’t Care）。キャッシュ容量256KBをウェイ数の４で割った64KB境界よりMSB側をタグ（Tag）とする。タグはタグ比較部２２において比較してキャッシュヒット、あるいは、キャッシュミスの判定に用いるため、タグメモリ２１に記憶される。64KB境界と128B境界との間のアドレスをインデックス（index）として、タグメモリ２１のアドレスとして使う。
【００３３】
次に、データメモリ２５のアクセスのためにアドレスを以下のように分解する。キャッシュ容量256KBをウェイ数の４で割った64KB境界よりMSB側はdon’t careとして無視する。64KB境界と128B境界との間のアドレスをRowアドレスとする。128B境界と16B境界との間のアドレスをColumnアドレスとする。16B以下のアドレスは、データ幅であり、例えば、ライトではライトイネーブルを生成する。
【００３４】
従来との違いは、Columnアドレスのうち、LSB側２ビットをデータメモリ番号に割り当て、不足した２ビット分の情報に、タグメモリ２１から出力されるウェイ情報であるウェイヒット情報を割り当てることである。
【００３５】
データメモリでは外部から与えられたアドレスをRowアドレスとColumnアドレスに分解し、Rowアドレスを与えて出力されるデータメモリ内部のワードをColumnアドレスを与えてワードからビットを選択するような構成となっている。このため、Rowアドレスを与えてから一定のアクセスタイムをおいてColumnアドレスを与えるような構造になっている。データメモリにライトデータを書き込むときには、Columnアドレスとほぼ同時にライトイネーブルを与え、データメモリセルからRowアドレスで読みだされたワードのうち、Columnアドレスで指定されたビットを外部から与えられたライトデータに書き換える。そのため、データメモリの内部ではColumnアドレス、ライトイネーブル及びライトデータは、Rowアドレスよりも後に与えられる。言い換えると、あらかじめ投機的にRowアドレスを与えておいてからColumnアドレスやライトイネーブルを与えるまでの間に実際にライトして良いか否かを判定するような構成を取ることが可能である。つまり、タグメモリをアクセスするのとほぼ同時にデータメモリにRowアドレスを与えておき、Columnアドレス及びライトイネーブルを与えるまでの間にタグメモリでキャッシュヒット、あるいは、キャッシュミスと、ヒットしたウェイ番号とを知ることができるのならばRowアドレスを投機的に与えてアクセスタイムを短縮することが可能である。キャッシュミスの場合でもリードはデータを破壊しないが、ライトはデータを破壊してしまうので、高速なキャッシュメモリではライト時のキャッシュヒット判定、ウェイ選択ができるように設計する必要がある。
【００３６】
本実施の形態では、ウェイ番号をColumnアドレスのLSB側2ビットに割り当てているが、ウェイ番号はColumnアドレスを与えるタイミングより前に確定すればよいのでRowアドレスを与えるタイミングでは知る必要はない。ライト時にはキャッシュヒット、あるいは、キャッシュミス情報とウェイ番号情報からライトイネーブルを作成するが、Columnアドレスと同じくタグメモリ２１のアクセス結果を用いるので、Columnアドレスにウェイ情報を用いてもデータメモリへのライトのタイミングを悪化させない。つまり、もともとタイミングを決めていたライトイネーブル信号とColumnアドレスが同等の遅延であればタイミングを悪化させる要因にならない。
【００３７】
従来のアドレス割り付けでは、タグメモリのウェイ番号がデータメモリ番号と一致しているため、タグメモリを引くまではどのデータメモリにプロセッサが要求するデータが存在するか判定できない。
【００３８】
本実施の形態では、CPU１１からのリクエストアドレス（RA）により、どのデータメモリを選択するかを指定するためのデータセレクト信号を生成しているので、タグメモリ２１をアクセスしなくてもどのデータメモリをアクセスするのか判定できる。すなわち、CPU１１からのリクエストアドレス（RA）のアドレス情報から、直ちにアクセスするデータメモリがわかるので、アクセスする可能性のないデータメモリにはRowアドレスも供給する必要がなく、従来の構成よりも消費電力を抑えることができる。
【００３９】
図４は、データメモリのコマンドデコーダの構成を説明するための説明図である。
【００４０】
図４に示すデータメモリ２５のコマンドデコーダには、アドレス(5:4)と、リクエストのデータ幅と、リードまたはライト信号と、ウェイヒット情報とが供給される。コマンドデコーダは、これらの入力に基づいて、Rowアドレスイネーブル、Columnアドレスイネーブル、アウトプットイネーブル、ライトイネーブルをデータメモリ２５に出力する。
【００４１】
従来例との違いは入力にアドレス(5:4)が存在することである。前述のように、アドレス(5:4)を用いてどのSRAMのアドレスか、を判定する。また、データ幅によって1個のデータメモリだけ使うか、4個のデータメモリを使うか、を判定する。
【００４２】
図５は、データメモリのアクセスフローの流れの例を説明するためのフローチャートである。
【００４３】
リクエストアドレス（RA）中のアドレス(5:4)からデータメモリが選択される（ステップS1）。RowアドレスとRowアドレスイネーブルとが選択されたデータメモリに出力される（ステップS2）。タグ比較器２２において、キャッシュヒットしたか否かが判定される（ステップS3）。キャッシュヒットしていない場合、NOとなり、キャッシュミス処理が実行される。キャッシュヒットしている場合、YESとなり、アクセスタイプがリードかライトかが判定される（ステップS4）。アクセスタイプがライトの場合、Columnアドレス、Columnアドレスイネーブル、ライトイネーブル、ライトデータがデータメモリに出力され（ステップS5）、ライト終了となる。一方、アクセスタイプがリードの場合、Columnアドレス、Columnアドレスイネーブル、アウトプットイネーブルがデータメモリに出力され（ステップS6）、リードデータを出力して終了する。
【００４４】
従来のキャッシュ構成では、タグメモリを引き、リクエストのタグとの比較から出力されるウェイヒット信号が出力されるまでデータメモリの選択ができなかった。このため、キャッシュのアクセスタイムを短くするにはRowアドレスを出力して４個すべてのデータメモリを投機的にアクセスし、ウェイヒット信号を使って４個のデータメモリの出力の一つを選択する必要があった。特に、ライトアクセスではライトイネーブルをアサートしてしまうとデータメモリ内のデータが更新されてしまうため、ウェイヒット信号はライトイネーブルをアサートするまでに確定していなくてはいけない。
【００４５】
本実施の形態ではCPU１１が出力するアドレスの一部をデータセレクト信号として使用されているため、「キャッシュヒットした場合にどのデータメモリにアクセスすべきか」があらかじめ分かっている。つまり、CPU１１からのリクエストがあった時点で、アドレスとアクセスのデータ幅を見るだけでアクセスする可能性のないデータメモリが特定できるので、データメモリのデータ幅以下のデータサイズのアクセスであれば、４個のデータメモリのうち１個だけにRowアドレスとイネーブルを与え、他の３個のデータメモリにアドレスを与える必要がないことが判定できる。本実施の形態では、タグメモリ２１からウェイヒット情報を受け取らないとリード、ライトともにColumnアドレスが確定せず、データメモリにアクセスすることはできない。しかし、従来のキャッシュ構成でもライト時にはウェイヒット信号が確定しないとライトイネーブルをアサートできないことに注意すると、本実施の形態のキャッシュ構成でもタイミング設計は従来とほぼ同等であることがわかる。
【００４６】
以上のように、キャッシュメモリ１２において、上述したようなアドレスの組み換えを行うことにより、４個のデータメモリからの出力データが次のように代わっている。例えば、データメモリのウェイ０、インデックス０、オフセット０をアクセスしたとき、従来では、４個のデータメモリはそれぞれ、（ウェイ，インデックス，オフセット）という形式で表記した場合、（０，０，０）、（１，０，０）、（２，０，０）、（３，０，０）を出力している。これらは別々のキャッシュラインに属するデータである。よって、４個のデータメモリの出力は、ウェイ０に属する128ビットしか有効でない。
【００４７】
これに対し、本実施の形態では、同じ表記方法で（０，０，０）、（０，０，１）、（０，０，２）、（０，０，３）を出力している。これらは同じキャッシュラインに属するデータであり、４個のデータメモリの出力は、ウェイ０に属する128ビットだけ使うこともできるし、４個を連結して512ビットのデータとして使用することもできる。
【００４８】
このように、セットアソシアティブ方式キャッシュにおいて、ウェイ情報であるウェイヒット情報をデータメモリのアドレスの一部として使い、従来、データメモリのインデックスとして使っていたアドレスの一部をウェイ情報の代わりにデータセレクト信号として使うように、データメモリのアドレス生成方法を変更することで、セットアソシアティブ方式キャッシュのデータメモリからの出力信号すべてを有効なものとして使うことができる。
【００４９】
よって、本実施の形態のセットアソシアティブ方式キャッシュ装置によれば、データメモリのアドレスの一部をウェイ情報と置き換えることで、複数のウェイの全ての出力を同時に利用することができる。
【００５０】
また、本実施の形態では、４個のデータメモリからのデータをMUX２６により選択する128ビットのデータポートと、４個のデータメモリからのデータすべてを使用することができる512ビットのデータポートを設けている。そのため、例えば、128ビットのデータポートは、プロセッサのALUに入力し、512ビットのデータポートは、SIMD演算装置に入力するなど、異なったデータ幅を必要とするプロセッサに適用することができる。
【００５１】
さらに、例えば、キャッシュメモリ１２をデータと命令で共用する場合、128ビットのポートはデータバッファ用、512ビットのポートは命令バッファ用に使うなど、プリンストン型プロセッサにも有効である。
【００５２】
通常のALUとSIMD演算器で異なるデータ幅を必要とするプロセッサでは、キャッシュのハードウエア量を殆ど同じに保ったまま、ビット幅の広いデータをSIMD演算器に供給することができる。
【００５３】
また、命令とデータでキャッシュを共用するプリンストン型のプロセッサに本実施の形態のキャッシュ１２を適用すると、空間的局所性の強い命令フェッチにビット幅の広いポートを割り当てることで命令フェッチの実行バンド幅を広げることができ、命令とデータのそれぞれに専用のキャッシュを必要とするハーバード型プロセッサよりも少ないハードウエア量で必要なバンド幅を確保することができる。
【００５４】
（第２の実施の形態）
次に、第２の実施の形態について説明する。図２は、本発明の第２の実施の形態に係るキャッシュメモリの構成を説明するための構成図である。なお、本実施の形態のプロセッサシステムは、第１の実施の形態と同一のため、説明を省略する。また、図６において、図２と同一の構成については、同一の符号を付して説明を省略する。
【００５５】
図６に示すように、本実施の形態のキャッシュメモリ１２ａは、図２のキャッシュメモリ１２にエンコーダ２７が追加され構成されている。
【００５６】
エンコーダ２７は、タグメモリ２１から出力される４ビットのウェイヒット情報をエンコードしている。エンコーダ２７、タグメモリ２１からの４ビットのウェイヒット情報を２ビットのウェイ番号（Way_Num）情報と、１ビットのヒット情報とに変換する。ウェイ情報としてのウェイ番号情報は、データメモリ２５のColumnアドレスの一部として使用する。すなわち、リクエストアドレス（RA）中のビット(5:4)に代わり、２ビットのウェイ番号情報が用いられる。
【００５７】
１ビットのヒット情報は、CPU１１にキャッシュヒットあるいはキャッシュミスの情報を伝えるのに使用される。図６では明示的に示していないが、エンコードされたウェイ番号情報とヒット情報とに基づいて、ライトイネーブル信号、あるいは、データメモリ２５へのアウトプットイネーブル信号等が生成される。
【００５８】
他の構成及び動作は、第１の実施の形態と同様のため説明を省略する。
【００５９】
このように、セットアソシアティブ方式キャッシュにおいて、ウェイ情報であるウェイ番号情報をデータメモリのアドレスの一部として使い、従来、データメモリのインデックスとして使っていたアドレスの一部をウェイ情報の代わりにデータセレクト信号として使うように、データメモリのアドレス生成方法を変更することで、セットアソシアティブ方式キャッシュのデータメモリからの出力信号すべてを有効なものとして使うことができる。
【００６０】
よって、本実施の形態のセットアソシアティブ方式キャッシュ装置によれば、第１の実施の形態と同様に、データメモリのアドレスの一部をウェイ情報と置き換えることで、複数のウェイの全ての出力を同時に利用することができる。
【００６１】
なお、本明細書におけるフローチャート中の各ステップは、その性質に反しない限り、実行順序を変更し、複数同時に実行し、あるいは実行毎に異なった順序で実行してもよい。
【００６２】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【図面の簡単な説明】
【００６３】
【図１】本発明の第１の実施の形態に係るプロセッサシステムの構成を示すブロック図である。
【図２】キャッシュメモリ１２の構成を説明するための構成図である。
【図３】アドレスマッピングを説明するための説明図である。
【図４】データメモリのコマンドデコーダの構成を説明するための説明図である。
【図５】データメモリのアクセスフローの流れの例を説明するためのフローチャートである。
【図６】本発明の第２の実施の形態に係るキャッシュメモリの構成を説明するための構成図である。
【符号の説明】
【００６４】
１…プロセッサシステム、１１…CPU、１２，１２ａ…キャッシュメモリ、１３…DRAM、２１…タグメモリ、２２…タグ比較器、２３…キャッシュステートメモリ、２４…MUX、２５…データメモリ、２６…MUX、２７…エンコーダ。
【図１】
2010097557.tif 000003
【図２】
2010097557.tif 000004
【図３】
2010097557.tif 000005
【図４】
2010097557.tif 000006
【図５】
2010097557.tif 000007
【図６】
2010097557.tif 000008