(57)【要約】【課題】キャッシュメモリのヒット率を高めて処理速度を高める。【解決手段】メモリ２の上位に初期登録キャッシュ３２、１次キャッシュ３３および２次キャッシュ３４を配置する。１次キャッシュ３３は２次キャッシュ３４の上位の記憶階層に位置し、高速なアクセスが可能である。初期登録キャッシュ３２は、１次キャッシュ３３と同等あるいはそれより小さい記憶容量を有し、高速なアクセスが可能である。全キャッシュメモリでキャッシュミスが生じると、メモリ２からの新規データは初期登録キャッシュ３２に登録され（ステップＳ４１−１）、初期登録キャッシュ３２で置き換えられたデータは２次キャッシュ３４に登録される（ステップＳ４１−２）。これにより、メモリ２から読み出されて１度だけ使用されたデータ、あるいは連続して使用された後に全く使用されないデータは、１次キャッシュ３３に登録されず、使用頻度の低いデータが１次キャッシュ１３３に登録されることが少なくなる。【選択図】　　　　図４
2004070850.tif 000002
【特許請求の範囲】
【請求項１】
主記憶装置に記憶されたデータを読み込んで動作するデータ処理装置において、
前記主記憶装置より上位の記憶階層に配置された複数階層のキャッシュメモリと、
最上位階層の前記キャッシュメモリより小さい記憶容量を有する初期登録キャッシュメモリと、
キャッシュミスの発生により前記主記憶装置から新規データが読み出された場合に、前記新規データを前記初期登録キャッシュメモリに登録し、前記初期登録キャッシュメモリで置き換えられたデータを、最上位階層を除くいずれかの前記キャッシュメモリに登録するキャッシュ制御手段と、
を有することを特徴とするデータ処理装置。
【請求項２】
前記キャッシュ制御手段は、最上位階層を除く前記各キャッシュメモリにおいて、格納されたデータがヒットするたびにこのデータを１段階上位の階層の前記キャッシュメモリに登録することを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記キャッシュ制御手段は、最上位階層を除く前記各キャッシュメモリにおいて、格納されたデータがヒットした回数が所定値に達した場合に、このデータを１段階上位の階層の前記キャッシュメモリに登録することを特徴とする請求項１記載のデータ処理装置。
【請求項４】
前記主記憶装置において単位長さのデータに対してｍ倍（ｍ：ｍ＞０の整数）のデータを読み出して転送するバースト転送が行われた場合に、前記キャッシュ制御手段は、前記バースト転送が行われたデータ全体のうち最初から前記単位長さまたはそのｎ倍（ｎ：ｎ＜ｍの整数）の長さの先頭部データを前記初期登録キャッシュメモリに対して登録することを特徴とする請求項１記載のデータ処理装置。
【請求項５】
前記各キャッシュメモリまたは前記初期登録キャッシュメモリに登録された前記先頭部データが読み出される場合、前記先頭部データに対するアクセスとその残りのデータに対するアクセスとが同時に実行されることを特徴とする請求項４記載のデータ処理装置。
【請求項６】
前記キャッシュ制御手段は、前記先頭部データが最下位階層を除くいずれかの前記キャッシュメモリに登録された場合、残りのデータをそれより下位のいずれかの前記キャッシュメモリに登録することを特徴とする請求項４記載のデータ処理装置。
【請求項７】
メモリに記憶されたデータを読み込んで動作するデータ処理装置において、
各種のデータを記憶する主記憶装置と、
前記主記憶装置より上位の記憶階層に配置された複数階層のキャッシュメモリと、
前記主記憶装置において、単位長さのデータに対してｍ倍（ｍ：ｍ＞０の整数）のデータを読み出して転送するバースト転送が行われた場合に、前記バースト転送が行われたデータ全体のうち最初から前記単位長さまたはそのｎ倍（ｎ：ｎ＜ｍの整数）の長さの先頭部データを、いずれかの前記キャッシュメモリに対して登録するキャッシュ制御手段と、
を有することを特徴とするデータ処理装置。
【請求項８】
主記憶装置と複数階層のキャッシュメモリとを具備するデータ処理装置におけるキャッシュ制御方法において、
キャッシュミスの発生により前記主記憶装置から新規データが読み出された場合に、最上位階層の前記キャッシュメモリより小さい記憶容量を有する初期登録キャッシュメモリに対して前記新規データを登録し、前記初期登録キャッシュメモリで置き換えられたデータを、最上位階層を除くいずれかの前記キャッシュメモリに登録することを特徴とするキャッシュ制御方法。
【請求項９】
主記憶装置と複数階層のキャッシュメモリとを具備するデータ処理装置におけるキャッシュ制御方法において、
前記主記憶装置において、単位長さのデータに対してｍ倍（ｍ：ｍ＞０の整数）のデータを読み出して転送するバースト転送が行われた場合に、前記バースト転送が行われたデータ全体のうち最初から前記単位長さまたはそのｎ倍（ｎ：ｎ＜ｍの整数）の長さの先頭部データをいずれかの前記キャッシュメモリに対して登録することを特徴とするキャッシュ制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、主記憶装置に記憶されたデータを読み込んで動作するデータ処理装置、およびこのデータ処理装置におけるキャッシュ制御方法に関する。
【０００２】
【従来の技術】
従来の一般的な計算機システムは、命令に従って処理を実行するプロセッサと、命令や各種データが記憶される主記憶装置とを具備しているが、プロセッサの処理速度が向上し、かつ主記憶装置の大容量化が進むにつれ、プロセッサの処理速度と主記憶装置のアクセス速度との間に大きなギャップが生まれているのが実情である。このために、プロセッサ内のレジスタと主記憶装置との間に、小容量であるが主記憶装置よりアクセス速度が格段に高速なキャッシュメモリを配置し、計算機システム全体のスループットを向上させる技術が一般的に用いられている。また近年では、このようなキャッシュメモリを複数階層分だけ設けて、一層の性能向上を図っているものも多い。
【０００３】
図８は、複数階層のキャッシュメモリを具備する場合の従来のメモリ間のデータの流れを模式的に示す図である。
図８では、主記憶装置であるメモリ２０１と、１次キャッシュ２０２および２次キャッシュ２０３よりなる２階層のキャッシュメモリとを具備するデータ処理装置の場合を例示している。１次キャッシュ２０２は、２次キャッシュ２０３より小さな記憶容量を有しており、２次キャッシュ２０３と比較してアクセス速度が高速である。また、１次キャッシュ２０２は、ＣＰＵ（Ｃｅｎｔｒａｌ　Ｐｒｏｃｅｓｓｉｎｇ　Ｕｎｉｔ）側（すなわち上位階層側）に設けられ、２次キャッシュ２０３はメモリ２０１側に設けられている。なお、実際には例えば、１次キャッシュ２０２、または１次キャッシュ２０２と２次キャッシュ２０３の双方がＣＰＵの内部に設けられることが多い。
【０００４】
以下、このようなデータ処理装置における処理について説明する。
まず、例えばＣＰＵが必要とするデータが発生した場合、ＣＰＵは１次キャッシュ２０２に対してデータの要求を行う。このとき、該当するデータがヒットした場合には、ＣＰＵはこのデータを１次キャッシュ２０２から読み込む。しかし、ヒットしなかった場合は、２次キャッシュ２０３に対してデータの要求が行われる。そして、データがヒットした場合にはこのデータがＣＰＵに送られるとともに、１次キャッシュ２０２にも登録される（ステップＳ８１−１）。このとき、１次キャッシュ２０２で置き換えられた所定のデータは破棄される（ステップＳ８１−２）。
【０００５】
また、２次キャッシュ２０３でもヒットしなかった場合には、初めてメモリ２０１にアクセスされ、データが読み出されてＣＰＵに供給される。これとともに、同じデータが１次キャッシュ２０２および２次キャッシュ２０３に対しても登録される（ステップＳ８２−１）。このとき、１次キャッシュ２０２において置き換えられた所定のデータは破棄される（ステップＳ８２−２）。同様に、２次キャッシュ２０３において置き換えられた所定のデータも破棄される（ステップＳ８２−３）。
【０００６】
このような動作により、メモリ２０１から読み出されたデータはキャッシュメモリに記憶され、次回にＣＰＵに同じデータが要求された場合に、メモリ２０１にアクセスすることなく、キャッシュメモリからデータが高速で読み出される。また、複数階層のキャッシュメモリを設けることで、新規にメモリ２０１から読み出したデータをより高速で処理することが可能となる。
【０００７】
また、近年、主記憶装置として使用されているＤＲＡＭ（Ｄｙｎａｍｉｃ　Ｒａｎｄｏｍ　Ａｃｃｅｓｓ　Ｍｅｍｏｒｙ）では、読み出しが開始されてからの転送速度が向上している。このため、読み出しの際に１回のアドレス指定で、連続したアドレスに記憶されたひとまとまりのデータを一度に読み出すバースト転送が行われているものがある。さらに、最近のプロセッサではパイプラインで動作することが多く、バースト転送が行われる間隔が短縮されて動作が高速化されている。
【０００８】
【発明が解決しようとする課題】
上述した複数階層のキャッシュメモリを具備する従来のデータ処理装置では、ＣＰＵがデータの読み出しを要求した際に、いずれの階層においてデータがミスヒットした場合でも、読み出されたデータは常に最上位の１次キャッシュに登録されていた。しかし、この場合例えば、一度だけ、あるいは連続してＣＰＵからの読み出しが行われた後に全く使用されないといった一時的なデータが、ＣＰＵからの要求により連続して発生すると、このような一時的なデータが１次キャッシュを埋め尽くしてしまう可能性がある。この場合、１次キャッシュにおけるヒット率が低下して、データの処理速度が低下してしまうことが問題であった。
【０００９】
また、主記憶装置においてバースト転送が行われる場合、転送自体の速度は短縮されているが、この際に最初のデータの読み出しが開始されるまでの遅延時間はさほど短縮されていない。従って、読み出し速度を高速化するためには、より高コストのメモリを使用しなければならなかった。一方で、キャッシュメモリにはバースト転送された全データが必ず登録されている。このことから、低コストの主記憶装置を使用しながら、高速なデータ読み出しとキャッシュメモリ内のメモリ領域を節約することとを両立する仕組みが求められている。
【００１０】
本発明は、このような課題に鑑みてなされたものであり、キャッシュメモリのヒット率を高めて処理速度を高めることが可能なデータ処理装置を提供することを目的とする。
【００１１】
【課題を解決するための手段】
本発明では上記課題を解決するために、主記憶装置に記憶されたデータを読み込んで動作するデータ処理装置において、前記主記憶装置より上位の記憶階層に配置された複数階層のキャッシュメモリと、最上位階層の前記キャッシュメモリより小さい記憶容量を有する初期登録キャッシュメモリと、キャッシュミスの発生により前記主記憶装置から新規データが読み出された場合に、前記新規データを前記初期登録キャッシュメモリに登録し、前記初期登録キャッシュメモリで置き換えられたデータを、最上位階層を除くいずれかの前記キャッシュメモリに登録するキャッシュ制御手段とを有することを特徴とするデータ処理装置が提供される。
【００１２】
このようなデータ処理装置では、キャッシュミスの発生により主記憶装置から新規データが読み出された場合に、キャッシュ制御手段の制御により、この新規データが初期登録キャッシュメモリに登録され、初期登録キャッシュメモリで置き換えられたデータが、最上位階層を除くいずれかのキャッシュメモリに登録される。初期登録キャッシュメモリは、最上位階層のキャッシュメモリより小さな記憶容量を有しており、高速なアクセスが可能である。従って、初期登録キャッシュメモリに登録されたデータはその直後に連続的に読み出された場合に高速な読み出しが行われるが、使用されなくなった場合には最上位階層以外のキャッシュメモリに登録されるため、使用される頻度が低いデータが最上位階層のキャッシュメモリに登録されることが少なくなる。
【００１３】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、本発明の第１の実施の形態例であるデータ処理装置の構成例を示す機能ブロック図である。
【００１４】
図１に示すデータ処理装置は、命令に従って演算等の処理を行うプロセッサ１と、命令やデータを記憶するメモリ２とを具備する。また、このプロセッサ１とメモリ２との間は、アドレスバス３およびデータバス４によって接続されている。
【００１５】
プロセッサ１は、命令の取得および発行等の処理を行う制御部１０と、命令に従って演算を実行するデータパス部２０と、命令やデータを一時的に保持するキャッシュ部３０と、外部からのデータ等の読み込みや、演算結果の外部への出力を行うための外部バスＩ／Ｆ（インタフェース）４０によって構成される。
【００１６】
制御部１０は、命令デコーダ１１およびアドレス生成器１２によって構成される。命令デコーダ１１は、外部バスＩ／Ｆ４０を介してメモリ２から読み込んだ命令、あるいはキャッシュ部３０から読み込んだ命令に対するデコード処理を行い、命令実行のための内部の制御信号を生成して、データパス部２０に出力する。アドレス生成器１２は、命令の読み出しアドレスを生成して、命令デコーダ１１に供給する。
【００１７】
データパス部２０は、演算器２１と汎用レジスタ２２によって構成される。演算器２１は、命令デコーダ１１からの制御信号に従って、汎用レジスタ２２やキャッシュ部３０、メモリ２からデータを読み出し、このデータを用いて各種の算術処理や論理演算処理を実行する。汎用レジスタ２２は、演算器２１による演算処理中や終了後の演算結果を適宜格納する。
【００１８】
キャッシュ部３０は、キャッシュ制御部３１、初期登録キャッシュ３２、１次キャッシュ３３および２次キャッシュ３４によって構成される。キャッシュ制御部３１は、キャッシュ部３０内のデータのアドレスやアクセス履歴等をタグにより管理する機能を有しており、制御部１０やデータパス部２０からのデータの読み出し、書き出しの要求に応じて、初期登録キャッシュ３２、１次キャッシュ３３および２次キャッシュ３４におけるデータの読み出しや登録を制御する。また、必要に応じてメモリ２に対してアドレスやデータを送出する。
【００１９】
初期登録キャッシュ３２、１次キャッシュ３３および２次キャッシュ３４は、ＳＲＡＭ（Ｓｔａｔｉｃ　ＲＡＭ）等により構成される。また、この中では、２次キャッシュ３４の記憶容量が最も大きく、アクセス速度が低速である。
【００２０】
初期登録キャッシュ３２は、１次キャッシュ３３より小さな記憶容量を有している。例えば、初期登録キャッシュ３２は、キャッシュメモリ内の１ライン（例えば３２ビット）または数ライン分の記憶容量を有する。１次キャッシュ３３は例えば１６キロバイト〜３２キロバイト程度の記憶容量を有している。従って、初期登録キャッシュ３２のアクセス速度は、１次キャッシュ３３と同等かそれより高速となっている。
【００２１】
キャッシュ制御部３１の制御により、初期登録キャッシュ３２には、制御部１０やデータパス部２０からの要求に応じてメモリ２からデータが読み出された場合に、このデータが最初に登録される。また、初期登録キャッシュ３２で置き換えられたデータは２次キャッシュ３４に登録される。１次キャッシュ３３は、２次キャッシュ３４より上位の記憶階層に位置しており、要求されたデータが２次キャッシュ３４において所定回数だけヒットした場合に、このデータの登録を受ける。
【００２２】
さらに、キャッシュ部３０内の各キャッシュメモリは、１ラインをさらに分割した領域（例えば１ラインが３２ビットの場合、８ビットの領域）ごとに読み出しおよび書き込みを行うことが可能となっている。
【００２３】
なお、初期登録キャッシュ３２および１次キャッシュ３３を同一のメモリチップとして構成し、このメモリチップ上において１ライン分または数ライン分を初期登録キャッシュ３２として使用して、残りを１次キャッシュ３３として使用してもよい。また、制御部１０から要求された命令を保持するためのキャッシュ部と、データパス部２０から要求されたデータを保持するためのキャッシュ部とが個別に設けられてもよい。
【００２４】
外部バスＩ／Ｆ４０は、プロセッサ１の内部の信号を外部のバス信号に変換し、外部（ここではメモリ２）とのデータの読み書きを行う。
メモリ２は、例えばＤＲＡＭ等によってなり、２次キャッシュ３４より大きな記憶容量を有し、アクセス速度も遅い。このメモリ２は、プログラムに基づく命令や各種データを格納しており、外部バスＩ／Ｆ４０がアドレスバス３を介して要求するアドレスに格納された命令やデータを、データバス４を介して供給する。また、１回のバスクロックで転送可能な固定長のデータを、連続したアドレスを持つ複数分だけ一度に転送するバースト転送モードを具備している。
【００２５】
以上のデータ処理装置では、１次キャッシュ３３および２次キャッシュ３４の２階層のキャッシュメモリの他に、初期登録キャッシュ３２を設けたことを特徴とする。この初期登録キャッシュ３２は、１次キャッシュ３３と同等かそれ以上の高速なアクセスが可能となっており、制御部１０やデータパス部２０からの要求に応じてメモリ２から読み出されたデータ（命令を含む）を、この初期登録キャッシュ３２に対してまず登録し、置換データを低位なキャッシュメモリすなわち２次キャッシュ３４に登録する。これにより、一時的にしか使用されない命令やデータが１次キャッシュ３３を埋め尽くすことを防止し、１次キャッシュ３３のヒット率を向上させる。
【００２６】
次に、キャッシュ部３０におけるデータ登録手順を詳細に説明する。なお、以下では、説明を簡単にするために、データパス部２０からデータの読み出しが要求された場合について述べるが、制御部１０から命令の読み出しが要求された場合も同様の動作が行われる。また、ここでは例として、キャッシュ部３０内の各キャッシュメモリやメモリ２では、各キャッシュメモリの１ライン分を１回の読み出し・書き込み単位として用いる場合について説明する。
【００２７】
図２は、キャッシュ制御部３１における各キャッシュメモリに対する制御の流れを示すフローチャートである。
図２では、データパス部２０からのデータの読み出し要求が１回発せられたときのキャッシュ制御部３１における制御手順を示している。ステップＳ２０１において、データパス部２０からのデータ要求を受け取る。ステップＳ２０２において、受け取ったアドレスに基づいて、まず初期登録キャッシュ３２をスキャンする。ステップＳ２０３において、該当するデータが存在した場合、すなわちデータがヒットした場合には、ステップＳ２０４に進む。ステップＳ２０４において、該当するデータを初期登録キャッシュ３２から読み出し、データパス部２０に出力して、１回分のデータ読み出し処理を終了する。
【００２８】
また、ステップＳ２０３において、初期登録キャッシュ３２でキャッシュミスが発生した場合は、ステップＳ２０５に進み、１次キャッシュ３３のスキャンを行う。ステップＳ２０６において、１次キャッシュ３３においてデータがヒットした場合は、ステップＳ２０７に進む。ステップＳ２０７において、該当するデータを１次キャッシュ３３から読み出し、データパス部２０に出力する。
【００２９】
また、ステップＳ２０６において、１次キャッシュ３３でもキャッシュミスが発生した場合は、ステップＳ２０８に進み、２次キャッシュ３４のスキャンを行う。ステップＳ２０９において、２次キャッシュ３４においてデータがヒットした場合は、ステップＳ２１０に進む。ステップＳ２１０において、該当するデータを２次キャッシュ３４から読み出し、データパス部２０に出力する。
【００３０】
また、キャッシュ制御部３１は、２次キャッシュ３４における各登録データについてのヒット回数をカウントし、そのカウント数を保持している。そして、ステップＳ２１１において、この時点でヒットしたデータのヒット回数をカウントアップする。ステップＳ２１２において、ヒット回数が所定の値に達したか否かを判断し、達している場合はカウント値をクリアするとともにステップＳ２１３に進み、達していない場合は１回分のデータ読み出し処理を終了する。ステップＳ２１３において、該当するデータを１次キャッシュ３３に登録する。このとき、１次キャッシュ３３におけるアクセス履歴を参照し、例えば最終的にアクセスされたタイミングが最も古いデータを、新規のデータと置き換える。
【００３１】
また、ステップＳ２０９で２次キャッシュ３４でもキャッシュミスが発生した場合は、ステップＳ２１４に進み、外部バスＩ／Ｆ４０を通じてメモリ２にアクセスし、該当するデータを読み出してデータパス部２０に出力する。ステップＳ２１５において、メモリ２から読み出したデータを初期登録キャッシュ３２に登録する。このとき、初期登録キャッシュ３２が１ラインで構成される場合は、登録されていたデータを新規のデータと置き換える。また、複数ラインで構成される場合には、例えば最もアクセス履歴の古いデータを置き換える。ステップＳ２１６において、置き換えたデータを２次キャッシュ３４に登録する。このとき、例えば同様に、２次キャッシュ３４上でアクセス履歴の最も古いデータと置き換える。
【００３２】
図３は、以上の制御に基づくキャッシュ部３０およびメモリ２におけるデータ格納位置の遷移を示す図である。
まず、初期状態でメモリ２のみに格納されていたデータ（状態Ａ）に対して、データパス部２０が読み出しを要求すると、このデータはメモリ２および初期登録キャッシュ３２に置かれる（状態Ｂ）。この後、メモリ２からの新規データの読み出しに伴って初期登録キャッシュ３２で置き換えられたデータは、２次キャッシュ３４とメモリ２とに置かれることになる（状態Ｃ）。
【００３３】
さらに、データパス部２０からの読み出し要求により２次キャッシュ３４上でヒットしたデータは、２次キャッシュ３４、メモリ２とともに１次キャッシュ３３上にも置かれることになる（状態Ｄ）。この後、１次キャッシュ３３への新規データの登録に伴って１次キャッシュ３３で置き換えられたデータは、再び２次キャッシュ３４およびメモリ２にのみ置かれることになる（状態Ｃ）。一方、初期登録キャッシュ３２や１次キャッシュ３３でデータの置き換えが発生した場合、２次キャッシュ３４で置き換え対象となったデータはメモリ２にのみ置かれることとなる（状態Ａ）。
【００３４】
以上のように、本発明では、メモリ２から読み出されたデータは、１次キャッシュ３３ではなく初期登録キャッシュ３２に一旦登録され、その後に置換されると２次キャッシュ３４に登録される。このような制御により、一時的にしか使用されないデータを高階層のキャッシュメモリから効率よく排除して、１次キャッシュ３３のヒット率を高めることができる。このことを、以下の図４を用いて説明する。
【００３５】
図４は、キャッシュ部３０およびメモリ２におけるデータの流れを模式的に示す図である。
まず、データパス部２０からのデータの読み出し要求に応じて、初期登録キャッシュ３２、１次キャッシュ３３および２次キャッシュ３４のすべてでキャッシュミスが発生した場合は、メモリ２から読み出された新規のデータが初期登録キャッシュ３２に登録される（ステップＳ４１−１）。このとき初期登録キャッシュ３２で置き換えられたデータは、２次キャッシュ３４に登録される（ステップＳ４１−２）。なお、２次キャッシュ３４で置き換えられたデータは、従来通り破棄される（ステップＳ４１−３）。
【００３６】
また、初期登録キャッシュ３２および１次キャッシュ３３でキャッシュミスが発生し、２次キャッシュ３４でデータがヒットした場合には、このデータが１次キャッシュ３３に登録される（ステップＳ４２−１）。このとき１次キャッシュ３３で置き換えられたデータは破棄される（ステップＳ４２−２）。
【００３７】
ここで、例えばデータパス部２０によって１度だけ使用されるデータ（以下、一時的なデータと称す）がメモリ２から読み出された場合を考える。本発明の場合、この一時的なデータは初期登録キャッシュ３２に登録される。そして、その後に新規のデータがメモリ２から読み出された時点で、一時的なデータは２次キャッシュ３４に追い出される。また、このような一時的なデータばかりがメモリ２から連続して要求された場合には、これらのデータは同様に初期登録キャッシュ３２に登録後、２次キャッシュ３４に追い出される。従って、これらが１次キャッシュ３３に置かれることはない。
【００３８】
これに対し、従来では、上記のように一時的なデータが連続してメモリから読み出された場合は、これらのデータがすべて１次キャッシュに登録されてしまう。従って、その後に使用されないデータが１次キャッシュ上に多く置かれてしまい、使用頻度の高いデータが２次キャッシュ以下の記憶階層に置かれてしまう。本発明ではこのような事態を避けることができ、使用頻度の低いデータが１次キャッシュ３３上に登録されることが少なくなる。従って、初期登録キャッシュ３２と同等かそれに近い高速アクセスが可能な１次キャッシュ３３におけるヒット率が高められる。
【００３９】
このような効果は、メモリ２からの読み出し後に同一のデータが複数回連続して使用され、その後に使用されない場合にも同様に得られる。従って、このようなキャッシュ部３０における制御が行われることで、データ処理装置全体における処理速度が向上する。
【００４０】
次に、メモリ２においてバースト転送が行われる場合のキャッシュ部３０へのデータ登録手順について説明する。
上述したように、メモリ２はバースト転送モードを具備している。この動作モードでは、メモリ２は、連続するアドレスを有する複数の固定長のデータについて、読み出しのための１回のアクセスで連続して読み出し、制御部１０やデータパス部２０に転送する。
【００４１】
ここで、メモリ２から１回のバスクロックで転送される固定長のデータは、例えば８ビット分であるとする。このデータ長は、例えばデータバス４のバス幅に対応する。また、この場合にキャッシュ部３０内の１ライン分が３２ビットであるとする。
【００４２】
ここで、例えば３２ビット分のデータをメモリ２からバースト転送する場合、従来ではどの階層のキャッシュメモリに対しても、読み出された３２ビット分のすべてのデータがキャッシュされていた。本発明では、各キャッシュメモリと比較して、メモリ２におけるアクセス開始から実際のデータ転送が開始されるまでの遅延時間が比較的長いことを利用して、バースト転送時に各キャッシュメモリで保持するデータ量を削減し、キャッシュメモリの容量の有効利用と高速な読み出しとを両立させる。具体的には、バースト転送の対象のデータについては、先頭の１回または数回分のバスクロックに対応するデータのみキャッシュし、残りのデータはメモリ２に残しておく。そして、このデータがキャッシュメモリでヒットした場合に、先頭のデータと残りのデータの双方に同時にアクセスして読み出す。
【００４３】
図５は、バースト転送が行われた場合のキャッシュ部３０における制御の流れを示すフローチャートである。なお、図５の処理は、図２におけるステップＳ２０９とステップＳ２１４〜Ｓ２１６の処理に対応する。
【００４４】
この図５の処理は、ステップＳ５０１において、キャッシュ部３０内のすべてのキャッシュメモリにおいてキャッシュミスが発生することにより開始される。ステップＳ５０２において、該当する例えば３２ビット分のデータが、メモリ２からバースト転送によりデータパス部２０に転送される。
【００４５】
ステップＳ５０３において、キャッシュ制御部３１は、転送したデータのうち先頭から例えば８ビット分のデータのみを、初期登録キャッシュ３２に登録する。またこのとき、登録した８ビット分のデータと、メモリ２内の残りのデータの先頭アドレスとの対応付けを行い、この情報を保持する。ステップＳ５０４において、初期登録キャッシュ３２内で置き換えられたデータを、２次キャッシュ３４に登録する。
【００４６】
これにより、バースト転送されたデータは、先頭の８ビット分のみが初期登録キャッシュ３２および２次キャッシュ３４に遷移する。また、２次キャッシュ３４でヒットした場合は、先頭部のデータが１次キャッシュ３３に登録される。
【００４７】
図６は、バースト転送が行われたデータの読み出しタイミング例を示すタイムチャートである。
図６の例では、１回のバースト転送にバスクロック４回分（３２ビットに相当）のデータが転送されるものとする。また、バースト転送されたデータの先頭の８ビット分のデータが初期登録キャッシュ３２に登録され、さらにこのデータに対してデータパス部２０から読み出し要求が発せられた場合について例示している。
【００４８】
ここで、図６（Ａ）は、データパス部２０からの読み出し要求信号の出力タイミングを示している。この信号は、読み出し対象のアドレス等によってなる。また、（Ｂ）および（Ｃ）はそれぞれメモリ２および初期登録キャッシュ３２におけるデータの出力タイミングを示し、（Ｄ）はこれらをあわせたデータ全体の出力タイミングを示している。すなわち、（Ｄ）はデータパス部２０側でデータ全体を受け取る際のタイミングに相当する。また、（Ｅ）は、３２ビット分の全データがメモリ２から読み出されるときのタイミングを、参考のために示している。
【００４９】
まず、（Ａ）に示すように、タイミングＴ６０１において、データパス部２０からの読み出し要求信号の出力が完了する。そして、この読み出し要求信号に基づいて、メモリ２と初期登録キャッシュ３２に対して同時に読み出しのためのアクセスが行われる。このとき、メモリ２に対しては、初期登録キャッシュ３２に登録された先頭部のデータの後に続くデータの先頭アドレスが指定される。
【００５０】
ここで、（Ｂ）に示すように、上記のタイミングＴ６０１からタイミングＴ６０３までの間が、メモリ２におけるデータ転送開始までの遅延時間Ｄ１となる。一方、（Ｃ）に示すように、初期登録キャッシュ３２における遅延時間Ｄ２は、タイミングＴ６０１からタイミングＴ６０２までの間となり、メモリ２と比較してバスクロックのほぼ１回分だけ短い。従って、初期登録キャッシュ３２から先頭の８ビット分のデータがまず読み出され、続いてタイミングＴ６０３で、残りのデータに対するメモリ２からの読み出しが開始される。
【００５１】
これにより、（Ｄ）に示すように、３２ビット分のすべてのデータはタイミングＴ６０４において転送が完了する。このような制御により、（Ｅ）に示すように、単純に３２ビット分の全データがメモリ２から読み出された場合のタイミングＴ６０５と比較して、バスクロックのほぼ１回分だけ動作時間が短縮される。
【００５２】
従って、メモリ２におけるデータ転送開始までの遅延時間を有効に利用しながら、高速なデータ転送が維持され、かつ、キャッシュメモリへ登録するデータ量が縮小されて使用効率が高められる。例えば、各キャッシュメモリでは従来と比較してより多くの種類のデータを保持することが可能となる。逆に、各キャッシュメモリの容量を小さくすることも可能になり、この場合はヒット率やデータのアクセス速度を変えずにキャッシュメモリの低コスト化を実現することができる。
【００５３】
なお、以上の図５および図６では、バースト転送された全体のデータのうち、先頭のバスクロック１回分に相当する分のデータがキャッシュ部３０内に登録されたが、これに限らず、バスクロックの複数回分に相当するデータがキャッシュ部３０に登録され、その残りのデータをメモリ２に残してもよい。キャッシュ部３０に先頭からどれだけのデータを登録するかは、各キャッシュメモリとメモリ２との間の転送開始までの遅延時間の差に応じて決定されることが望ましい。
【００５４】
また、先頭部のデータが１次キャッシュ３３に登録された場合には、残りのデータが２次キャッシュ３４に登録されてもよい。この場合、１次キャッシュ３３と２次キャッシュ３４とのデータ転送開始までの遅延時間の差を利用して、１次キャッシュ３３からの先頭部のデータの転送が行われる。
【００５５】
以上のように、本実施の形態例では、初期登録キャッシュ３２を用いたキャッシュ制御と、バースト転送時のデータ登録制御とを併用することにより、キャッシュメモリのヒット率を高めるとともにキャッシュメモリの使用効率を高め、処理の実行を高速化することができる。特に、初期登録キャッシュ３２を設けたことによりキャッシュ部３０内の制御が従来と比較して複雑化し、コストが高まる場合があるため、キャッシュメモリの使用効率を高めてキャッシュメモリ自体を低コスト化することがたいへん有効である。
【００５６】
なお、上記の実施の形態例では、初期登録キャッシュの他に２階層のキャッシュメモリを設けたが、これよりさらに多くの階層構造を有するキャッシュメモリを使用した場合も本発明を適用することが可能である。この場合、初期登録キャッシュを破棄されたデータは、２次以下のいずれかの記憶階層のキャッシュメモリに登録される。また、このような場合に、キャッシュメモリでのヒット時に、必ず１階層分だけ上位のキャッシュメモリにデータを登録することにより、一時的なデータの読み出し発生時におけるヒット率の向上をもたらすことができる。以下、このような場合について第２の実施の形態例として補足説明する。
【００５７】
図７は、初期登録キャッシュと３階層以上のキャッシュメモリとを具備する場合のメモリ間のデータの流れを模式的に示す図である。
この第２の実施の形態例では、初期登録キャッシュ１３２と、１次キャッシュ１３３、２次キャッシュ１３４および３次キャッシュ１３５の３階層のキャッシュメモリを具備するものとする。なお、このような場合、３次キャッシュ１３５はプロセッサの外部において、メモリ１０２との間に設けられることが通常である。また、以下の説明でも上記と同様にデータパス部からのデータ読み出し要求が行われた場合について述べるが、制御部から命令の読み出し要求が行われた場合も同様の動作が行われる。
【００５８】
まず、上記の第１の実施の形態例と同様に、すべてのキャッシュメモリでキャッシュミスが発生した場合に、メモリ１０２から読み出されたデータは初期登録キャッシュ１３２に登録される（ステップＳ７１−１）。また、初期登録キャッシュ１３２で置き換えられたデータは、３次キャッシュ１３５に登録される（ステップＳ７１−２）。このとき、３次キャッシュ１３５で置き換えられたデータは破棄される（ステップＳ７１−３）。なお、初期登録キャッシュ１３２で置き換えられたデータは２次キャッシュ１３４に登録するように制御してもよい。
【００５９】
また、初期登録キャッシュ１３２、１次キャッシュ１３３および２次キャッシュ１３４でキャッシュミスし、３次キャッシュ１３５でヒットした場合は、このデータが２次キャッシュ１３４に登録され（ステップＳ７２−１）、置き換えられたデータが破棄される（ステップＳ７２−２）。さらに、初期登録キャッシュ１３２および１次キャッシュ１３３でキャッシュミスし、２次キャッシュ１３４でヒットした場合は、このデータが１次キャッシュ１３３に登録され（ステップＳ７３−１）、置き換えられたデータが破棄される（ステップＳ７３−２）。
【００６０】
この第２の実施の形態例では、階層構造を有するキャッシュメモリにおいて、データの登録階層を上げる場合には必ず１段階だけ上位の階層に登録する。これにより、１度だけしか使用されないデータが１次キャッシュ１３３および２次キャッシュ１３４に登録されないだけでなく、例えば、使用される間隔の空いたデータが上位階層のキャッシュメモリ（特に１次キャッシュ１３３）に登録されることが少なくなる。逆に、１次キャッシュ１３３には使用頻度の比較的高いデータが置かれることが多くなり、ヒット率が高まり、データ処理速度が向上する。
【００６１】
なお、３階層以上のキャッシュメモリを具備する場合には、初期登録キャッシュを設けずに、メモリを含めた記憶階層において、データの登録階層を必ず１段階だけ上位の階層に登録することで、ヒット率の向上効果を得ることができる。ただし、初期登録キャッシュをさらに設けることにより、メモリから読み出された後に同一のデータがさらに複数回連続して使用された場合に、初期登録キャッシュから高速で読み出すことが可能となる。
【００６２】
ところで、本実施の形態例においても、メモリ１０２からバースト転送が行われる場合は、そのデータの先頭部のみをキャッシュメモリに登録し、残りをメモリ１０２内に残す制御を行うことができる。そして、このデータがキャッシュメモリにおいてヒットした場合は、先頭部が登録されたキャッシュメモリと残りのデータが格納されたメモリ１０２とに対するアクセスが同時に行われる。
【００６３】
ここで、例えば先頭部のデータが２次キャッシュ１３４に登録された場合には、残りのデータを下位の３次キャッシュ１３５に登録してもよい。同様に、先頭部のデータが１次キャッシュ１３３に登録された場合には、残りのデータを２次キャッシュ１３４に登録してもよい。このような制御を行うか否かは、データ処理装置に実装される３次キャッシュ１３５と２次キャッシュ１３４との間、および２次キャッシュ１３４と１次キャッシュ１３３との間における、データ転送開始までの遅延時間の差に応じて決定される。
【００６４】
【発明の効果】
以上説明したように、本発明のデータ処理装置では、初期登録キャッシュメモリに登録されたデータはその直後に連続的に読み出された場合に高速な読み出しが行われるが、使用されなくなった場合には最上位階層以外のキャッシュメモリに登録されるため、使用される頻度が低いデータが最上位階層のキャッシュメモリに登録されることが少なくなる。従って、最上位階層のキャッシュメモリにおけるヒット率が高まり、全体のデータ処理速度を向上させることができる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態例であるデータ処理装置の構成例を示す機能ブロック図である。
【図２】キャッシュ制御部における各キャッシュメモリに対する制御の流れを示すフローチャートである。
【図３】キャッシュ部およびメモリにおけるデータ格納位置の遷移を示す図である。
【図４】キャッシュ部およびメモリにおけるデータの流れを模式的に示す図である。
【図５】バースト転送が行われた場合のキャッシュ部における制御の流れを示すフローチャートである。
【図６】バースト転送が行われたデータの読み出しタイミング例を示すタイムチャートである。
【図７】初期登録キャッシュと３階層以上のキャッシュメモリとを具備する場合のメモリ間のデータの流れを模式的に示す図である。
【図８】複数階層のキャッシュメモリを具備する場合の従来のメモリ間のデータの流れを模式的に示す図である。
【符号の説明】
１……プロセッサ、２……メモリ、３……アドレスバス、４……データバス、１０……制御部、１１……命令デコーダ、１２…アドレス生成器、２０……データパス部、２１……演算器、２２……汎用レジスタ、３０……キャッシュ部、３１……キャッシュ制御部、３２……初期登録キャッシュ、３３……１次キャッシュ、３４……２次キャッシュ、４０……外部バスインタフェース
【図１】
2004070850.tif 000003
【図２】
2004070850.tif 000004
【図３】
2004070850.tif 000005
【図４】
2004070850.tif 000006
【図５】
2004070850.tif 000007
【図６】
2004070850.tif 000008
【図７】
2004070850.tif 000009
【図８】
2004070850.tif 000010