(57)【要約】【課題】高速なアクセスを可能とすること。【解決手段】キャッシュ装置１２は、ＣＰＵ１１とキャッシュメモリ２１との間にライトバッファ２２ａ，２２ｂを有する。制御回路２６は、ＣＰＵ１１からのアクセス要求に基づいて、キャッシュミスが発生した場合には、ＣＰＵ１１の出力データをライトバッファ２２ａ，２２ｂに格納するとともに、アクセス要求に対応するデータを含むラインのデータをメインメモリからデータを読み出してキャッシュメモリ２１に書き込む。そして、制御回路２６は、ライトバッファ２２ａ，２２ｂに格納したデータをキャッシュメモリ２１に転送する。【選択図】図２
2010191638.tif 000002
【特許請求の範囲】
【請求項１】
処理装置と記憶装置との間に介在されるキャッシュ装置であって、
前記記憶装置のデータを記憶するキャッシュメモリと、
前記処理装置から出力される出力データを保持するバッファと、
前記記憶装置に対するアクセス要求に基づいてキャッシュ判定をし、キャッシュミスの場合には前記アクセス要求に対応して前記出力データを前記バッファに保持し、前記アクセス要求により要求されたデータを含むラインのデータを前記記憶装置から読み出すためのリード要求を出力し、前記記憶装置の前記ラインから出力されたデータを前記キャッシュメモリに格納し、前記バッファに保持してある前記出力データを前記キャッシュメモリに格納させる制御回路と、
を有することを特徴とするキャッシュ装置。
【請求項２】
前記キャッシュメモリは、複数のラインを含み、各ラインは前記出力データの容量のｎ倍（ｎは２以上の整数）に設定され、前記ラインに前記記憶装置のデータを記憶し、
前記バッファは、少なくとも前記キャッシュメモリの１ライン分の記憶容量に設定されてなること、
を特徴とする請求項１記載のキャッシュ装置。
【請求項３】
前記バッファは複数設けられ、
前記出力データのアドレスが前記ラインのアドレス範囲を超える場合に前記データを格納する前記バッファに切り替えること
を特徴とする請求項１又は２記載のキャッシュ装置。
【請求項４】
前記バッファから前記キャッシュメモリに前記出力データを転送する転送量は前記ラインの容量値と等しく設定され、
前記アクセス要求がライトアクセスの場合に、そのライトアクセスにより発生するキャッシュミスに対する前記記憶装置からのデータリードをキャンセルすること、
を特徴とする請求項１〜３のうちの何れか１項に記載のキャッシュ装置。
【請求項５】
処理装置と記憶装置との間に介在されるキャッシュ装置であって、
前記記憶装置のデータを記憶するキャッシュメモリと、
前記キャッシュメモリから前記処理装置に出力される入力データを保持する第１バッファと、を有すること
を特徴とするキャッシュ装置。
【請求項６】
前記キャッシュメモリから前記処理装置に対して入力データを直接出力する経路を有し、
前記記憶装置に対するアクセス要求に基づいて前記キャッシュメモリから前記第１バッファに１ライン分のデータを転送する際に、前記アクセス要求に基づいて対応するデータを前記第１バッファに格納するとともに前記処理装置に出力させる、
を特徴とする請求項５記載のキャッシュ装置。
【請求項７】
処理装置と記憶装置との間に介在されるキャッシュ装置であって、
前記記憶装置のデータを記憶するキャッシュメモリと、
前記キャッシュメモリから前記記憶装置にライトバックするデータを保持するバッファと、
を有し、
前記記憶装置に対するリード要求を出力し、前記キャッシュメモリからライトバックするデータを前記バッファに転送し、前記記憶装置から読み出したデータを前記キャッシュメモリに格納すること、
を特徴とするキャッシュ装置。
【請求項８】
処理装置と記憶装置との間に介在されるキャッシュ装置であって、
前記記憶装置のデータを記憶するキャッシュメモリを有し、
前記キャッシュメモリは複数のラインを含み、複数の前記ラインを順次使用して前記記憶装置のデータを格納し、
前記記憶装置のデータを格納可能なラインを使用可能ラインとし、
前記使用可能ラインが無くなったときに、次にキャッシュミスが発生した場合に使用するラインのデータを前記記憶装置にライトバックすること、
を特徴とするキャッシュ装置。
【請求項９】
処理装置から出力される出力データを保持するバッファと、
前記バッファが出力する前記出力データを記憶するキャッシュメモリと、
前記キャッシュメモリの第１ラインに対応する第１データが前記バッファに格納されている場合に前記キャッシュメモリにおける前記第１ラインとは異なる第２ラインに対応する第２のデータのキャッシュ判定においてキャッシュミスと判定されると、記憶装置に前記第２データに対応するリード要求の発行以降に前記第１データの前記第１ラインへの書き込みを開始させる制御回路と、
を有することを特徴とするキャッシュ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
キャッシュ装置に関する。
【背景技術】
【０００２】
従来、コンピュータシステムでは、主記憶装置のアクセス時間を短縮するために、主記憶装置と、その主記憶装置の情報（データ）を読み出す処理装置との間に、キャッシュ装置が接続されている（例えば、特許文献１参照）。
【０００３】
キャッシュ装置は、主記憶装置と比べてアクセス速度、即ちデータの書き込み・読み出し速度が高速な記憶領域（キャッシュメモリ）を有している。キャッシュ装置は、このキャッシュメモリに処理装置が主記憶装置をアクセスした内容（データ）を記憶しておき、同じデータにアクセスしたときにはキャッシュメモリから取り出すことにより、主記憶装置に対するアクセス速度を見かけ上高速化している。
【０００４】
また、連続した複数のアドレスに記憶されたデータは、連続的にアクセスされる可能性が高いことから、キャッシュ装置は、所定数（例えば３２バイト）のデータを１つのブロックとし、複数のブロックをキャッシュメモリに格納する。そして、キャッシュ装置は、ブロックの格納位置（ライン番号）と主記憶装置のアドレスとを対応付けて記憶する管理領域を有している。
【０００５】
要求されたデータがキャッシュメモリに記憶されている場合をキャッシュヒットといい、データがキャッシュメモリに記憶されていない場合をキャッシュミスという。従来のキャッシュ装置は、処理装置から主記憶装置内のデータに対するアクセスが要求されると、データのアドレスと管理領域に記憶されたアドレスとを比較してキャッシュヒットかキャッシュミスかを判断する。キャッシュヒットの場合、キャッシュ装置は、管理領域を参照して、データが含まれるブロックのライン番号を検索し、そのライン番号のブロックに対してアクセスに対応する処理を実行する。例えば、アクセス要求が書き込み要求の場合、キャッシュ装置は、処理装置から出力されるデータを該当するブロックに格納し、アクセス要求が読み出し要求の場合には該当するブロックのデータを処理装置に出力する。キャッシュミスの場合、キャッシュ装置は、主記憶装置からデータが含まれる１ブロック分の記憶領域のデータを読み出してキャッシュメモリに格納し、その格納したブロックに対してアクセスに対応する処理を実行する。
【０００６】
主記憶装置のブロックとキャッシュメモリのブロックとを対応付けるマッピング方式の代表的なものとして、セットアソシアティブ方式、フルアソシアティブ方式、セクタ方式がある。フルアソシアティブ方式は、他の方式と比べてランダムアクセスに適しており、キャッシュヒット率が高い。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平７−１５２５６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、キャッシュ装置は、キャッシュヒットであっても、アクセスを終了するまでに時間、所謂レイテンシが発生する。このため、アクセスを終了するまでの時間短縮、即ち高速なアクセスが求められている。
【０００９】
このキャッシュ装置で、高速なアクセスを可能とすることを目的とする。
【課題を解決するための手段】
【００１０】
開示のキャッシュ装置は、処理装置と記憶装置との間に介在されるキャッシュ装置であって、前記記憶装置のデータを記憶するキャッシュメモリと、前記処理装置から出力される出力データを保持するバッファと、前記記憶装置に対するアクセス要求に基づいてキャッシュ判定をし、キャッシュミスの場合には前記アクセス要求に対応して前記出力データを前記バッファに保持し、前記アクセス要求により要求されたデータを含むラインのデータを前記記憶装置から読み出すためのリード要求を出力し、前記記憶装置の前記ラインから出力されたデータを前記キャッシュメモリに格納し、前記バッファに保持してある前記出力データを前記キャッシュメモリに格納させる制御回路と、を有する。
【発明の効果】
【００１１】
開示のキャッシュ装置は、高速なアクセスを可能とすることができるという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】コンピュータシステムの概略構成図である。
【図２】キャッシュ装置の概略ブロック図である。
【図３】キャッシュメモリ及び各バッファの説明図である。
【図４】（ａ）（ｂ）はデータライト時の動作説明図である。
【図５】（ａ）（ｂ）はデータライト時のタイミング図である。
【図６】データライト時の動作説明図である。
【図７】（ａ）〜（ｃ）はデータライト時のタイミング図である。
【図８】（ａ）（ｂ）はデータリード時の動作説明図である。
【図９】（ａ）（ｂ）はデータリード時のタイミング図である。
【図１０】ライトバック時の動作説明図である。
【図１１】ライトバック時のタイミング図である。
【図１２】ライトバック時のタイミング図である。
【図１３】（ａ）（ｂ）はライトバック時の動作説明図である。
【図１４】ライトバック時のタイミング図である。
【図１５】（ａ）〜（ｃ）はライトバック時の動作説明図である。
【図１６】データライト時の動作説明図である。
【図１７】データライト時の動作説明図である。
【図１８】ライトバック時のタイミング図である。
【図１９】（ａ）〜（ｃ）はキャッシュメモリのライン設定の説明図である。
【発明を実施するための形態】
【００１３】
以下、一実施形態を図１〜図１２に従って説明する。
図１に示すように、コンピュータシステムは、処理装置としてのＣＰＵ１１、キャッシュ装置１２、メモリコントローラ１３、主記憶装置としてのメインメモリ１４を含む。ＣＰＵ１１とキャッシュ装置１２はバスＢ１を介して接続され、キャッシュ装置１２とメモリコントローラ１３はバスＢ２を介して接続され、メモリコントローラ１３とメインメモリ１４はバスＢ３を介して接続されている。バスＢ１は、ＣＰＵ１１とキャッシュ装置１２との間でデータの授受を行うために必要な１又は複数の制御信号を伝達する配線からなる制御バス、複数ビットのアドレス信号を伝達する配線からなるアドレスバス、複数ビットのデータを伝達する配線からなるデータバスを含む。同様に、バスＢ２，Ｂ３は、それぞれ、制御バス、アドレスバス、データバスを含む。以下、ＣＰＵ１１とキャッシュ装置１２との間のバスをＣＰＵバスといい、キャッシュ装置１２とメインメモリ１４との間のバスをメモリバスという。
【００１４】
ＣＰＵ１１は、キャッシュ装置１２及びメモリコントローラ１３を介してメインメモリ１４をアクセスする。メインメモリ１４は例えばＳＤＲＡＭである。メインメモリ１４には、ＣＰＵ１１が実行する制御プログラム、制御プログラムの実行に用いられるデータ、制御プログラムを実行するＣＰＵ１１により生成されるデータが格納される。なお、制御プログラムやデータは、ＣＰＵ１１や他の処理装置が実行するブートプログラムにより、図示しないＲＯＭやディスク装置等の補助記憶装置から読み出されてメインメモリ１４に格納される。
【００１５】
ＣＰＵ１１は、制御プログラムやデータをメインメモリ１４から読み出すためのアクセス要求（リードリクエスト）、変更又は生成したデータをメインメモリ１４に書き込むためのアクセス要求（ライトリクエスト）を出力する。
【００１６】
キャッシュ装置１２は、メインメモリ１４と比べて小容量かつ高速なメモリ（以下、キャッシュメモリという）を有している。キャッシュメモリは、例えばスタティックＲＡＭである。キャッシュ装置１２は、過去にＣＰＵ１１がメインメモリ１４をアクセスしたデータをキャッシュメモリに記憶する。次にＣＰＵ１１から出力されるアクセス要求に対応するデータがキャッシュメモリに記憶されている場合をキャッシュヒットといい、データがキャッシュメモリに記憶されていない場合をキャッシュミスという。キャッシュ装置１２は、ＣＰＵ１１から出力されるアクセス要求に応答して、キャッシュヒットのリード動作の場合にはキャッシュメモリに記憶したデータをＣＰＵ１１に出力し、キャッシュヒットのライト動作の場合にはキャッシュメモリに書き込みを行う。即ち、キャッシュヒットの場合、ＣＰＵ１１のアクセス要求は、ＣＰＵ１１とキャッシュ装置１２との間のデータの送受信だけで終了する。従って、ＣＰＵ１１におけるデータ入出力のためのアクセスを高速化することができる。
【００１７】
キャッシュ装置１２は、キャッシュミスの場合にメインメモリ１４をアクセスするための要求をメモリコントローラ１３に出力する。この時、キャッシュ装置１２は、要求されるデータのアドレスから連続したアドレスによって指定される複数バイト（例えば３２バイト）のデータをメインメモリ１４から読み出すようにアクセス要求を出力する。この複数バイトのデータを格納する領域をラインと呼ぶ。つまり、１つのラインには複数バイトのデータが格納され、各データのアドレスは連続している。ＣＰＵ１１が実行する制御プログラムは、複数の命令語（オペコード）とデータ（オペランド）から構成され、逐次実行する命令語及びその命令語の実行に必要なデータはメインメモリ１４上の連続したアドレスにより指定される領域に格納されていることが多い。従って、ＣＰＵ１１のアクセス要求は、ある時点の前後でメインメモリ１４の限られた領域に集中する。これを局所性と呼ぶ。このように、アクセス要求が集中する領域のデータを、キャッシュ装置１２のキャッシュメモリに記憶することで、アクセスの高速化を図るとともにメインメモリ１４に対するアクセス回数を低減する。
【００１８】
メモリコントローラ１３は、キャッシュ装置１２から出力される要求に応じて、メインメモリ１４をアクセスするための１又は複数の信号をメインメモリ１４に出力する。メインメモリ１４は、その信号に応答してリード処理又はライト処理を実行し、メモリセルからデータの読み出し、又はメモリセルへのデータの書き込みを行う。そして、メモリコントローラ１３は、メインメモリ１４が出力するデータを受け取り、その受け取ったデータをキャッシュ装置１２に出力する。
【００１９】
次に、キャッシュ装置１２の構成を説明する。
図２に示すように、キャッシュ装置１２は、キャッシュメモリ２１、複数（本実施形態では２つ）のライトバッファ（ＷＢ）２２ａ，２２ｂ、リードバッファ（ＲＢ）２３、ライトバックバッファ（ＷＢＢ）２４、タグメモリ（タグ）２５、制御回路２６を有している。なお、カッコ内は図中の表記を示す。
【００２０】
キャッシュメモリ２１は、複数（例えば、１２８）のラインに区画可能な記憶容量を持つ。
キャッシュメモリ２１とＣＰＵ１１との間には、ライトバッファ２２ａ，２２ｂ及びリードバッファ２３が接続されている。ライトバッファ２２ａ，２２ｂ及びリードバッファ２３は、１ラインのデータを記憶可能な容量（例えば、３２バイト）のバッファメモリである。ライトバッファ２２ａ，２２ｂ及びリードバッファ２３は、内部バスＩＢ１及びＣＰＵバスＢ１を介してＣＰＵ１１と接続されている。また、ライトバッファ２２ａ，２２ｂ及びリードバッファ２３は、内部バスＩＢ２を介してキャッシュメモリ２１と接続されている。
【００２１】
この内部バスＩＢ１のバス幅は、ＣＰＵバスＢ１のバス幅と同じ値に設定されている。内部バスＩＢ２のバス幅は、内部バスＩＢ１のバス幅、即ちＣＰＵバスＢ１のバス幅の正数倍（本実施形態では１倍）に設定されている。ＣＰＵ１１は、１回のアクセス要求に対して複数バイト（例えば４バイト）のデータを入出力可能に構成されている。従って、ＣＰＵバスＢ１のバス幅は、この複数バイト（４バイト）のデータ転送が可能なバス幅に設定されている。そして、内部バスＩＢ１，ＩＢ２のバス幅は、ＣＰＵバスＢ１のバス幅と同じ値（４バイト）に設定されている。
【００２２】
尚、内部バスＩＢ１，ＩＢ２は、ライトバッファ２２ａ，２２ｂとＣＰＵ１１との間のバス幅と、ライトバッファ２２ａ，２２ｂとキャッシュメモリ２１との間のバス幅を示すためのものであり、両内部バスが電気的に接続された１つのバスにより構成されている。即ち、キャッシュメモリ２１は、シングルポート構成のスタティックＲＡＭである。
【００２３】
ＣＰＵ１１から出力された４バイトのライトデータ（出力データ）ＷＤｃは、ＣＰＵバスＢ１及び内部バスＩＢ１を介してライトバッファ２２ａ、２２ｂに供給され、ライトバッファ２２ａ又はライトバッファ２２ｂは供給されたデータＷＤｃを記憶する。ライトバッファ２２ａ，２２ｂから読み出されたデータは内部バスＩＢ２を介してキャッシュメモリ２１に供給され、キャッシュメモリ２１は供給されたデータを記憶する。
【００２４】
キャッシュメモリ２１から読み出されたデータは内部バスＩＢ２を介してリードバッファ２３に供給され、そのリードバッファ２３はそのデータを記憶する。リードバッファ２３から読み出されたデータは、内部バスＩＢ１及びＣＰＵバスＢ１を介してＣＰＵ１１にリードデータ（入力データ）ＲＤｃとして供給される。
【００２５】
また、リードバッファ２３は内部バスＩＢ１に接続されている。従って、ＣＰＵ１１から出力されたライトデータＷＤｃを記憶可能に構成されている。また、本実施形態のキャッシュ装置１２は、キャッシュメモリ２１から読み出されたデータを直接的にＣＰＵ１１に供給する経路（データパス）Ｐ１を有している。従って、キャッシュメモリ２１から読み出したデータをリードデータＲＤｃとして直接的にＣＰＵ１１に供給可能に構成されている。
【００２６】
キャッシュメモリ２１とメモリコントローラ１３との間には、ライトバックバッファ２４が接続されている。ライトバックバッファ２４は、１ラインのデータを記憶可能な容量（３２バイト）のバッファである。キャッシュメモリ２１から読み出された１ライン分のデータは、ライトバックバッファ２４に記憶される。そして、ライトバックバッファ２４から読み出されたデータは、ライトデータＷＤｍとしてメモリバスＢ２を介してメモリコントローラ１３に出力される。一方、メモリコントローラ１３からメモリバスＢ２に出力されたリードデータＲＤｍは、直接的にキャッシュメモリ２１に供給され、キャッシュメモリ２１は供給された１ライン分のデータを記憶する。
【００２７】
タグメモリ２５は、キャッシュメモリ２１の使用状況、キャッシュメモリ２１に記憶されたラインと、メインメモリ１４に記憶されたラインとを対応付けるための情報（タグ情報）、等を記憶するためのメモリである。制御回路２６は、タグメモリ２５に格納した情報に基づいて、キャッシュメモリ２１、各バッファ２２ａ，２２ｂ，２３，２４における書き込み、読み出しを制御する。制御回路２６は、ＣＰＵバスＢ１を介してＣＰＵ１１と接続されるとともに、メモリバスＢ２を介してメモリコントローラ１３と接続されている。制御回路２６には、ＣＰＵ１１から出力されるアクセス要求のための制御信号Ｓｃｃ及びアドレス信号Ａｄｃが供給される。尚、制御信号Ｓｃｃは、制御回路２６がＣＰＵ１１に出力する応答信号を含む。
【００２８】
制御回路２６は、アドレス信号Ａｄｃに基づいて、ＣＰＵ１１がアクセスするアドレスのデータがキャッシュメモリ２１に格納されているか否か、即ちキャッシュヒットかキャッシュミスかを判断する。上記したように、タグメモリ２５には、キャッシュメモリ２１に記憶されたラインと、メインメモリ１４に記憶されたラインとを対応付けたタグ情報が記憶されている。制御回路２６は、タグメモリ２５を検索する。そして、制御回路２６は、アクセス要求のアドレスがタグ情報に含まれている場合にはキャッシュヒットと判断し、アクセス要求に対応する処理を行う。また、制御回路２６は、アクセス要求のアドレスがタグ情報に含まれていない場合にはキャッシュミスと判断し、アクセス要求に対応する処理を行う。
【００２９】
キャッシュメモリ２１とメインメモリ１４との対応関係、タグメモリ２５に記憶する情報を、図３に従って説明する。
図３に示すように、タグメモリ２５は、管理領域３１とタグ領域３２を含む。管理領域３１には、総ライン数、使用ライン数、先頭ポインタ、末尾ポインタが格納されている。尚、カッコ内の文字は、図３におけるキャッシュメモリ２１の状態を示す値である。図３には、説明を理解し易くするために、１０個のラインＬ０〜Ｌ９を記憶可能なキャッシュメモリ２１と、２８個のラインＭ０〜Ｍ２７に区分されたメインメモリ１４を示している。メインメモリ１４において、ハッチングを付したラインＭ３，Ｍ７，Ｍ９，Ｍ１２，Ｍ１５は、アクセス要求に応答してデータを読み出したラインを示している。そして、図中の矢印は、キャッシュメモリ２１のラインＬ０，Ｌ１，Ｌ２，Ｌ３，Ｌ４，Ｌ５に、メインメモリ１４のラインＭ３，Ｍ１２，Ｍ７，Ｍ１５，Ｍ９のデータが格納されていることを示す。
【００３０】
この状態において、キャッシュメモリ２１の総ライン数は「１０」であり、使用ライン数は「５」である。また、先頭ポインタは、最新のラインが書き込まれた位置を示し、末尾ポインタは、最古のラインが書き込まれた位置を示す。
【００３１】
タグ領域３２に格納された情報は、ライン番号３２ａと、アドレス３２ｂと、変更ビット３２ｃと、有効ビット３２ｄを含む。ライン番号３２ａとアドレス３２ｂは、データが格納された領域を示すとともに、キャッシュメモリ２１とメインメモリ１４との対応関係（関連付け）を示す。即ち、アドレス３２ｂにて示される領域のデータがメインメモリ１４から読み出され、そのデータがキャッシュメモリ２１のライン番号３２ａにて示されるラインに格納されている。また、ライン番号３２ａにて示されるラインのデータは、アドレス３２ｂにて示されるメインメモリ１４の領域に書き戻される。
【００３２】
変更ビット３２ｃは、対応するラインのデータがＣＰＵ１１により書き換えられているか否かを示すビットであり、例えば「１」の場合には書換えられていることを示し、「０」の場合は書き換えられていないことを示す。有効ビット３２ｄは、キャッシュメモリ２１のラインが使用可能か否か、つまりデータの書き込みが可能か否かを示すビットであり、例えば「１」は使用不能を示し、「０」は使用可能を示す。
【００３３】
図３に示す状態において、リードアクセスによりキャッシュミスが発生した場合、制御回路２６は、該当するアドレスのデータをメインメモリ１４から読み出す。そして、制御回路２６は、管理領域３１の情報に基づいて、メインメモリ１４から読み出したデータをラインＬ５に格納するとともに、そのラインＬ５を示す情報と、読み出したデータのアドレスとを関連付けてタグ領域３２に格納する。更に、データを読み出したのみであり、そのデータは書き換えられていないため、制御回路２６は、変更ビット３２ｃに「０」をセットするとともに、ラインＬ５のデータが有効であることを示すため、有効ビット３２ｄに「１」をセットする。
【００３４】
尚、図２に示す制御回路２６は、キャッシュメモリ２１をラウンドロビン方式にて管理する。即ち、制御回路２６は、メインメモリ１４から読み出したデータをラインＬ０からラインＬ９に向って順次格納する。そして、データをラインＬ９に格納した後、制御回路２６は、次にメインメモリ１４から読み出したデータをラインＬ０に格納する。つまり、制御回路２６は、キャッシュメモリ２１のラインに循環的に使用し、メインメモリ１４から読み出したデータをラインに書き込む。
【００３５】
次に、制御回路２６が実行する処理を、アクセス要求に応じて説明する。
先ず、アクセス要求がライトアクセスの場合を説明する。
制御回路２６は、制御信号Ｓｃｃに基づいて、ＣＰＵ１１からのアクセス要求がライトアクセスと判断すると、２つのライトバッファ２２ａ，２２ｂのうちの何れか一方を選択し、ＣＰＵ１１に対してデータライトを許可する。その許可に応答してＣＰＵ１１は、ライトするデータを出力する。例えば、ライトバッファ２２ａを選択した場合、図４（ａ）に示すように、ライトバッファ２２ａはＣＰＵ１１から出力されたライトデータを格納する。これにより、ＣＰＵ１１における書き込み要求及びライトデータの書き込みが終了する。つまり、ライトバッファ２２ａ，２２ｂにライトデータを書き込むことにより、ＣＰＵ１１に対するライトアクセスの処理が終了する。従って、ライトアクセスを出力してからライトバッファ２２ａにライトデータを格納するまでの時間が、ＣＰＵ１１のライトアクセスに対する応答時間となる。
【００３６】
ライトバッファ２２ａに格納されたデータはキャッシュメモリ２１に格納しなければならない。このため、制御回路２６は、ＣＰＵ１１からのアクセス要求がライトアクセスと判断すると、アドレス信号Ａｄｃに基づいて、ＣＰＵ１１がアクセスするアドレスのデータがキャッシュメモリ２１に格納されているか否か、即ちキャッシュヒットかキャッシュミスかを判断する。上記したように、タグメモリ２５には、キャッシュメモリ２１に記憶されたラインと、メインメモリ１４に記憶されたラインとを対応付けたタグ情報が記憶されている。制御回路２６は、タグメモリ２５を検索する。そして、制御回路２６は、アクセス要求のアドレスがタグ情報に含まれている場合にはキャッシュヒットと判断し、アクセス要求のアドレスがタグ情報に含まれていない場合にはキャッシュミスと判断する。
【００３７】
キャッシュヒットの場合、制御回路２６は、図４（ａ）に示すように、ライトバッファ２２ａのデータをキャッシュメモリ２１のラインＬｃに格納する。そして、制御回路２６は、このラインＬｃに対応する変更ビット３２ｃを「１」にセットする。
【００３８】
一方、キャッシュミスの場合、制御回路２６は、アドレスのデータを含むラインのデータを読み出すためのアクセス要求をメモリコントローラ１３に出力する。このアクセス要求は、読み出しを示す信号を含む制御信号Ｓｃｍと、ラインのアドレスを指定するためのアドレス信号Ａｄｍを含む。このアクセス要求に従って図１に示すメインメモリ１４から読み出されたラインは、メモリコントローラ１３を介してリードデータＲＤｍとしてキャッシュ装置１２に供給される。図４（ｂ）に示すように、制御回路２６は、このリードデータＲＤｍをキャッシュメモリ２１のラインＬｃに格納するとともに、そのラインの番号とリードデータＲＤｍを読み出したアドレスとを対応付けて図３に示すタグメモリ２５に格納する。そして、制御回路２６は、キャッシュヒットの時と同様に、ライトバッファ２２ａのデータをキャッシュメモリ２１のラインＬｃに格納し、このラインＬｃに対応する変更ビット３２ｃを「１」にセットする。
【００３９】
キャッシュミスした場合における動作、即ち上記のライトバッファ２２ａ（２２ｂ）にデータを書き込む動作と、メインメモリ１４からデータを読み出してキャッシュメモリ２１に書き込む動作は、データ転送経路が異なる。従って、制御回路２６は、上記のライトバッファ２２ａ（２２ｂ）に対するデータの書き込み処理と、メインメモリ１４からデータを読み出してキャッシュメモリ２１に書き込む処理とを、並行して行う。その動作を図５（ａ）に示す。図中、メインメモリ１４を「ＲＡＭ」、キャッシュメモリ２１を「ＣＭ」、ライトバッファ２２ａを「ＷＢ０」として記す。「書込要求」に対応して図面右側に向って延びる矢印は、ＣＰＵ１１がライトアクセスを出力してからアクセスが許可されてデータを出力するまでの動作期間を示す。「ＣＰＵ→ＷＢ０」はＣＰＵ１１が出力するデータをライトバッファ２２ａに格納するまでの動作期間を示す。「ＲＡＭ→ＣＭ」は、制御回路２６がメモリコントローラ１３にリード要求を出力してからメインメモリ１４から読み出した１ライン分のデータをキャッシュメモリ２１に格納するまでの動作期間を示す。「ＷＢ０→ＣＭ」は、ライトバッファ２２ａのデータを読み出してキャッシュメモリ２１に格納する、即ちライトバッファ２２ａのデータをキャッシュメモリ２１に転送する動作期間を示す。尚、上記の図５（ａ）（ｂ）及び以下の説明に対するタイミング図において、矢印は、動作の順番とその動作に要する期間を概念的に示すものであって、実際の動作期間を示していない場合がある。
【００４０】
図５（ａ）に示すように、ＣＰＵ１１がライトバッファ２２ａにデータを書き込む処理（ＣＰＵ→ＷＢ０）は、メインメモリ１４からキャッシュメモリ２１にデータを転送する処理（ＲＡＭ→ＣＭ）の一部と、並行に実行される。そして、キャッシュメモリ２１にデータが格納されると、制御回路２６は、ライトバッファ２２ａからキャッシュメモリ２１にデータを転送する（ＷＢ０→ＣＭ）。
【００４１】
図５（ｂ）は、通常のライトアロケート動作を行うキャッシュ装置におけるライト動作を示す。このキャッシュ装置では、書込要求によってキャッシュミスが発生すると、メインメモリからキャッシュメモリにデータを転送（ＲＡＭ→ＣＭ）した後にＣＰＵに対してアクセスを許可し、ＣＰＵからキャッシュメモリにデータが書き込まれる（ＣＰＵ→ＣＭ）。図中、「書込要求」について実線の矢印はキャッシュミスが発生するまでを示し、二点線の矢印はアクセスが許可されるまで、即ち要求が保留される期間を示している。従って、ＣＰＵのライトアクセスに対する応答時間は、キャッシュメモリにデータが書き込まれるまでとなる。
【００４２】
つまり、本実施形態のキャッシュ装置１２は、ライトアロケート動作におけるキャッシュミスに対するメインメモリ１４のリード動作と、ＣＰＵ１１のデータ書き込み動作とを並行して行う。従って、本実施形態のキャッシュ装置１２は、従来の構成に比べて応答速度が短くなる、即ち従来構成と比べて高速なアクセスを実現することができる。
【００４３】
尚、図５（ｂ）に示す動作を行うキャッシュ装置では、キャッシュヒットの場合、書き込み要求の後にＣＰＵからキャッシュメモリにデータが書き込まれる。従って、キャッシュミスの場合とキャッシュヒットの場合とで応答時間が異なることになる。その点、本実施形態のキャッシュ装置１２では、ＣＰＵ１１からライトバッファ２２ａ（２２ｂ）にライトデータを書き込むため、キャッシュヒットの場合の応答速度と、キャッシュミスの場合の応答速度が同じになる。つまり、ライトアクセスにおいて常に同じ応答速度で処理を行うことができる。
【００４４】
尚、図５（ａ）の動作説明では、ライトバッファ２２ａの状態がデータを書き込み可能である場合について説明し。しかし、ライトバッファ２２ａにデータが保持され、そのデータがキャッシュメモリ２１に囲まれていない場合がある。このような状態は、１ライン分のアドレス範囲を超えるアドレスの第１データと第２データが同一のライトバッファに対して書き込まれる場合に発生する。このような場合、制御回路２６は、第２データに対するアクセス要求に対するキャッシュ判定においてキャッシュミスと判定すると、その第２データメインメモリ１４に対して第２データに対応するリード要求の発行以降に、第１データをキャッシュメモリ２１に書き込む動作を開始する。そして、制御回路２６は、キャッシュメモリ２１に対する第１データの書き込みを終了すると、第２データをライトバッファ２２ａに格納する。従って、この場合における応答時間は、ＣＰＵ１１が第２データにおけるアクセス要求を出力してから第２データをライトバッファ２２ａに格納するまでの時間が、ＣＰＵ１１のライトアクセスに対する応答時間となる。
【００４５】
第１データをキャッシュメモリ２１に書き込む処理に要する時間と、第２データをライトバッファ２２ａに格納する処理に要する時間の合計値は、図５（ｂ）に示す応答時間と比べて十分に短い。従って、本実施形態のキャッシュ装置１２は、従来の構成に比べて応答速度が短くなる、即ち従来構成と比べて高速なアクセスを実現することができる。
【００４６】
更に、本実施形態のキャッシュ装置１２は、２つのライトバッファ２２ａ，２２ｂを有している。制御回路２６は、ＣＰＵ１１が書き込むデータのアドレスに対応して２つのライトバッファ２２ａ，２２ｂを交互に使用することで、複数の連続したライトアクセスに対する応答時間を短縮することができる。
【００４７】
即ち、図１に示すＣＰＵ１１は、図６に示すように、１つのラインに格納されたデータのアドレスの範囲を超えるアドレスのデータＤ１，Ｄ２を連続的にライトアクセスする。図２に示す制御回路２６は、先ず第１のライトバッファ２２ａを選択してこのライトバッファ２２ａにデータＤ１を格納する。次に、制御回路２６は、第２のライトバッファ２２ｂを選択してこのライトバッファ２２ｂにデータＤ２を格納する。データＤ１，Ｄ２の書き込みが終了すると、ＣＰＵ１１が出力したライトアクセスに対する見かけ上の処理が終了するため、ＣＰＵ１１は他の処理を実行することができる。
【００４８】
制御回路２６は、両データＤ１，Ｄ２のライトアクセスがそれぞれキャッシュミスであると判断すると、それぞれのアドレスに対応するラインＬａ，Ｌｂのデータをメインメモリ１４から順次読み込み、キャッシュメモリ２１のラインＬａ，Ｌｂに書き込む。そして、制御回路２６は、各ライトバッファ２２ａ，２２ｂのデータを、キャッシュメモリ２１のラインＬａ，Ｌｂにそれぞれ書き込む。これにより、データＤ１，Ｄ２をキャッシュメモリ２１に格納する処理を終了する。
【００４９】
同様に、３つの連続したライトアクセスがキャッシュミスの場合における動作を、図７に従って説明する。
図７（ａ）〜（ｃ）は、ライトアクセスする３つのデータＤ１，Ｄ２，Ｄ３のアドレスが、１ラインのアドレス範囲を超える場合の動作を示す。データＤ１に対する書き込み動作を実線細線矢印で示し、データＤ２に対する書き込み動作を実線太線矢印で示し、データＤ３に対する書き込み動作を一点鎖線矢印で示している。
【００５０】
図７（ａ）は、データＤ１〜Ｄ３のアドレスが、１ラインのアドレス範囲を相互に超えている場合の動作波形を示す。
先ず、図１に示すＣＰＵ１１は、データＤ１のライトアクセスを出力する。図２に示す制御回路２６は、第１のライトバッファ２２ａ（ＷＢ０）を選択してデータＤ１に対するアクセスを許可するとともに、そのデータＤ１のアドレスに対応するラインのデータのアクセス要求をメモリコントローラ１３に出力する。従って、データＤ１をライトバッファ２２ａに書き込む処理（ＣＰＵ→ＷＢ０）と、メインメモリ１４をアクセスしてデータをキャッシュメモリ２１に書き込む処理（ＲＡＭ→ＣＭ）とを並列に実行する。
【００５１】
次に、ＣＰＵ１１は、アクセス許可に応答してデータＤ１を出力した後、データＤ２のライトアクセスを出力する。制御回路２６は、第２のライトバッファ２２ｂ（ＷＢ１）を選択してデータＤ２に対するアクセスを許可する。ＣＰＵ１１は、アクセス許可に応答してデータＤ２を出力した後、データＤ３のライトアクセスを出力する。
【００５２】
制御回路２６は、データＤ１に対応するメインメモリ１４のデータがキャッシュメモリ２１に格納される（ＲＡＭ→ＣＭ）と、データＤ２のアドレスに対応するラインのデータのアクセス要求をメモリコントローラ１３に出力するとともに、第１のライトバッファ２２ａに格納されたデータＤ１をキャッシュメモリ２１に転送する（ＷＢ０→ＣＭ）。
【００５３】
すると、第１のライトバッファ２２ａに対する書き込みが可能となるため、制御回路２６は、第１のライトバッファ２２ａ（ＷＢ０）を選択してデータＤ３に対するアクセスを許可し、ＣＰＵ１１はアクセス許可に応答してデータＤ３を出力する。
【００５４】
制御回路２６は、データＤ２に対応するメインメモリ１４のデータがキャッシュメモリ２１に格納される（ＲＡＭ→ＣＭ）と、データＤ３のアドレスに対応するラインのデータのアクセス要求をメモリコントローラ１３に出力するとともに、第２のライトバッファ２２ｂに格納されたデータＤ２をキャッシュメモリ２１に転送する（ＷＢ１→ＣＭ）。
【００５５】
そして、制御回路２６は、データＤ３に対応するメインメモリ１４のデータがキャッシュメモリ２１に格納される（ＲＡＭ→ＣＭ）と、第１のライトバッファ２２ａに格納されたデータＤ３をキャッシュメモリ２１に転送する（ＷＢ０→ＣＭ）。
【００５６】
図７（ｂ）は、データＤ１，Ｄ２のアドレスが１ラインのアドレス範囲内であり、データＤ３のアドレス範囲がデータＤ１，Ｄ２のアドレスに対して１ラインのアドレス範囲を超える場合の動作波形を示す。
【００５７】
先ず、図１に示すＣＰＵ１１は、データＤ１のライトアクセスを出力する。図２に示す制御回路２６は、第１のライトバッファ２２ａ（ＷＢ０）を選択してデータＤ１に対するアクセスを許可するとともに、そのデータＤ１のアドレスに対応するラインのデータのアクセス要求をメモリコントローラ１３に出力する。更に、制御回路２６は、出力したアクセス要求に対応するアドレス、つまりデータＤ１のアドレス値を含み、ラインの容量に対応するアドレスの範囲の値を図示しないレジスタに記憶する。従って、データＤ１をライトバッファ２２ａに書き込む処理（ＣＰＵ→ＷＢ０）と、メインメモリ１４をアクセスしてデータをキャッシュメモリ２１に書き込む処理（ＲＡＭ→ＣＭ）とを並列に実行する。
【００５８】
次に、ＣＰＵ１１は、アクセス許可に応答してデータＤ１を出力した後、データＤ２のライトアクセスを出力する。制御回路２６は、データＤ２のアドレスとレジスタに記憶した値と比較し、そのアドレスが上記のアドレス範囲内か否かを判断する。データＤ２のアドレスは、データＤ１を格納するラインのアドレスの範囲内であるため、制御回路２６は、選択を変更することなくデータＤ２に対するアクセスを許可する。即ち、本実施形態の制御回路２６は、アクセス要求に対して、そのアクセス要求に伴うアドレスを、図３に示すタグ領域３２に格納したアドレスと比較するとともに、レジスタに記憶したアドレス、つまりメインメモリ１４から読み出しを行っている途中のデータのアドレス範囲と比較する。そして、制御回路２６は、その比較結果に基づいて、メインメモリ１４に対するアクセス要求、ライトバッファ２２ａ，２２ｂの選択、等の動作を行う。
【００５９】
ＣＰＵ１１は、アクセス許可に応答してデータＤ２を出力した後、データＤ３のライトアクセスを出力する。制御回路２６は、第２のライトバッファ２２ｂ（ＷＢ１）を選択してデータＤ３に対するアクセスを許可する。ＣＰＵ１１は、アクセス許可に応答してデータＤ３を出力する。
【００６０】
次に、制御回路２６は、データＤ１に対応するメインメモリ１４のデータがキャッシュメモリ２１に格納される（ＲＡＭ→ＣＭ）と、第１のライトバッファ２２ａに格納されたデータＤ１，Ｄ２をキャッシュメモリ２１に転送する（ＷＢ０→ＣＭ）。
【００６１】
制御回路２６は、データＤ３に対応するメインメモリ１４のデータがキャッシュメモリ２１に格納される（ＲＡＭ→ＣＭ）と、第２のライトバッファ２２ｂに格納されたデータＤ３をキャッシュメモリ２１に転送する（ＷＢ１→ＣＭ）。
【００６２】
図７（ｃ）は従来のライトアロケート動作を行うキャッシュ装置の動作波形を示す。
このキャッシュ装置は、データＤ１に対するライトアクセスに応答してメインメモリからキャッシュメモリに該当するラインのデータを転送した後、ＣＰＵにアクセスを許可することで、ＣＰＵからキャッシュメモリにデータＤ１が書き込まれる。データＤ２，Ｄ３に対しても同様の動作を行う。
【００６３】
次に、アクセス要求がリードアクセスの場合を説明する。
図２に示すリードバッファ２３は、連続したリードアクセスのアドレスが、キャッシュメモリ２１の１つのラインに格納したデータのアドレス範囲内のときにアクセス速度を向上する。
【００６４】
詳述すると、制御回路２６は、制御信号Ｓｃｃに基づいて、ＣＰＵ１１からのアクセス要求がリードアクセスと判断すると、アドレス信号Ａｄｃに基づいて、ＣＰＵ１１がアクセスするアドレスのデータがキャッシュメモリ２１に格納されているか否か、即ちキャッシュヒットかキャッシュミスかを判断する。
【００６５】
キャッシュヒットの場合、制御回路２６は、リードアクセスに伴うアドレスのデータが格納されたラインのデータをリードバッファ２３に格納する。例えば、図８（ａ）に示すように、リードアクセスに伴うアドレスのデータがキャッシュメモリ２１のラインＬ２に格納されている場合、制御回路２６は、キャッシュメモリ２１のラインＬ２からデータを出力させてリードバッファ２３に格納する、即ちデータをキャッシュメモリ２１からリードバッファ２３に転送する。そして、制御回路２６は、リードバッファ２３からリードアクセスに対応するリードデータを出力させるとともに、このリードデータのアドレスを図示しないレジスタに記憶する。このリードデータをＣＰＵ１１が受け取ることで、リードアクセスに対応する処理が終了する。従って、ＣＰＵ１１がリードアクセスを出力してからデータを受け取るまでの時間が、リードアクセスの応答時間となる。
【００６６】
次に、ＣＰＵ１１がリードアクセスを出力すると、制御回路２６は、そのリードアクセスに伴うアドレスとレジスタに格納したアドレスとを比較する。そして、制御回路２６は、ＣＰＵ１１から新たに出力されたアドレスが、レジスタに格納したアドレスに対して、ラインに格納したデータのアドレス範囲内、即ちリードバッファ２３に格納された複数のデータを示すアドレスのうちの１つである場合、そのアドレスに対応するリードデータをリードバッファ２３から出力される。
【００６７】
上記例示したように、リードバッファ２３の容量は３２バイトであり、ＣＰＵ１１が１回のアクセスにより要求するデータのサイズ（バス幅）は４バイトである。従って、制御回路２６のレジスタには、リードバッファ２３に格納された複数のデータの先頭アドレスと末尾アドレスが記憶される。制御回路２６は、この２つのアドレスとＣＰＵ１１から出力されたアドレスとを比較することで、ＣＰＵ１１から要求されているデータがリードバッファ２３内に格納されているか否かを判断することができる。この判断に要する時間は、キャッシュメモリ２１に要求されているデータが格納されているか否か、即ちキャッシュヒットかキャッシュミスかを判断する時間に比べて短い。従って、制御回路２６は、ＣＰＵ１１が要求するデータを、キャッシュヒット／キャッシュミスを判断するよりも早く出力する。これにより、ＣＰＵ１１のリードアクセスに対する応答時間が短くなる、即ちアクセス速度が従来例よりも高くなる。
【００６８】
更に、本実施形態のキャッシュ装置１２は、図２に示すように、キャッシュメモリ２１から読み出されたデータを直接的にＣＰＵ１１に供給する経路（データパス）Ｐ１を有している。制御回路２６は、図８（ｂ）に示すように、リードアクセスに伴うアドレスのデータがキャッシュメモリ２１のラインＬ２に格納されている場合、そのラインＬ２のデータをリードバッファ２３に格納するとともに、リードアクセスに伴うアドレスに対応するデータを、経路Ｐ１を介して出力する。なお、図８（ｂ）では、ラインＬ２に格納されている複数のデータのうち、先頭アドレスのデータ（ラインＬ２の左端のデータ）が要求されている場合を示す。従って、ラインＬ２のデータを一旦リードバッファ２３に格納してからＣＰＵ１１に出力する場合と比べて、ＣＰＵ１１がデータを受け取るまでに要する時間、即ち応答時間が短くなる。
【００６９】
また、本実施形態のキャッシュ装置１２は、図２に示すように、リードバッファ２３が内部バスＩＢ１に接続され、ＣＰＵ１１から出力されたライトデータＷＤｃをリードバッファ２３に記憶可能に構成されている。この構成は、同一アドレスに対するリードアクセスとライトアクセスとが連続する場合のアクセス速度を高速化する。即ち、リードバッファ２３から出力されたデータを図１に示すＣＰＵ１１が処理した後、処理後のデータをリードアクセスの時のアドレスと同一のアドレスにてライトアクセスする。このライトアクセスにより、ＣＰＵ１１から出力されるデータは、ライトバッファ２２ａ，２２ｂの何れかに書き込まれることになる。例えば、ライトバッファ２２ａに書き込まれた場合、このライトバッファ２２ａ内のデータと、リードバッファ２３内のデータとが相違する、即ちコヒーレンシが保てなくなる。すると、次に同一のアドレスに対してリードアクセスする場合には、図９（ｂ）に示すように、ライトバッファ２２ａのデータをキャッシュメモリ２１に格納した後、再びキャッシュメモリ２１からリードバッファ２３にデータを転送しなくてはならない。しかし、本実施形態のキャッシュ装置１２の制御回路２６は、図９（ａ）に示すように、ライトアクセス（Ｗ）に応答してＣＰＵ１１から出力されるデータをライトバッファ２２ａ（ＷＢ０）に格納するとともにリードバッファ２３（ＲＢ）に格納する。この動作により、このライトバッファ２２ａ内のデータと、リードバッファ２３内のデータとのコヒーレンシが保てるため、次のリードアクセス（Ｒ）において、リードバッファ２３から同一アドレスのデータをＣＰＵ１１に出力することができるため、応答時間が短くなる、即ち高速なアクセスを実現することができる。
【００７０】
次に、ライトバック動作を説明する。
キャッシュメモリ２１の各ラインに格納されたデータは、ＣＰＵ１１が実行する処理に使用される。そして、ラインに格納されたデータは、ＣＰＵ１１が実行する処理に応じて、書き換えられる場合がある。この場合、キャッシュメモリ２１に格納されたラインのデータと、メインメモリ１４に格納されたデータが相違する。このように、データが相違するラインのデータをダーティなデータといい、このラインをダーティライン（又はダーティエントリ）と呼ぶ。メインメモリ１４のデータと、キャッシュメモリ２１のデータとが一致するように、キャッシュメモリ２１のデータをメインメモリ１４の該当するアドレスに書き込む必要がある。このキャッシュメモリ２１のデータをメインメモリ１４に格納する動作をライトバックという。
【００７１】
図１０に示すように、キャッシュ装置１２はライトバックバッファ２４を有し、このライトバックバッファ２４は、キャッシュメモリ２１とメモリコントローラ１３との間に接続されている。キャッシュメモリ２１のすべてのラインＬａ〜Ｌｄには、データが格納されている。図２に示す制御回路２６は、アクセス要求がキャッシュミスと判断すると、ライトバックするラインＬｂのデータをライトバックバッファ２４に転送する。そして、制御回路２６は、メモリコントローラ１３に対してライト要求を出力した後、ライトバックバッファ２４に格納したデータをメモリコントローラ１３を介してメインメモリ１４に格納する。
【００７２】
このように、ライトバックバッファ２４を利用することにより、ＣＰＵ１１に対する応答時間を短縮することができる。
即ち、図１１に示すように、ＣＰＵ１１からアクセス要求（例えばライトアクセス）が出力され、キャッシュミスが発生すると、制御回路２６は、アクセス要求のアドレスに基づいてリード要求をメモリコントローラ１３に出力する。そして、制御回路２６は、キャッシュメモリ２１のラインＬｂ（図１０参照）のデータをライトバックバッファ２４に転送する（ＣＭ→ＷＢＢ）。つまり、キャッシュ装置１２は、図１１に示すように、メインメモリ１４からデータを読み出してキャッシュメモリ２１に格納する動作の一部と、キャッシュメモリ２１のデータをライトバックバッファ２４に転送する動作を同時に行う。そして、ラインＬｂのデータをライトバックバッファ２４に転送することにより、ラインＬｂにデータを書き込むことが可能となる。
【００７３】
やがて、メインメモリ１４から読み出したデータがメモリコントローラ１３から出力されると、制御回路２６は、そのデータをキャッシュメモリ２１に格納する（ＲＡＭ→ＣＭ）。そして、制御回路２６は、ＣＰＵ１１にアクセスを許可し、ＣＰＵ１１から出力されるデータをキャッシュメモリ２１（ラインＬｂ）に格納する（ＣＰＵ→ＣＭ）。このデータ格納により、ＣＰＵ１１のアクセス要求に対する処理を終了する。つまり、ＣＰＵ１１がアクセス要求と出力してから、ＣＰＵ１１が出力するデータをキャッシュメモリ２１に格納するまでの時間が、ＣＰＵ１１に対する応答時間となる。
【００７４】
上記動作に対し、ライトバックバッファを備えていないキャッシュ装置（従来例）の場合、アクセス要求によりキャッシュミスが発生すると、ラインのデータをキャッシュメモリからメインメモリにライトバックする（ＣＭ→ＲＡＭ）。次に、メインメモリをアクセスしてデータをキャッシュメモリに格納する（ＲＡＭ→ＣＭ）。そして、ＣＰＵから出力されるデータをキャッシュメモリに格納する（ＣＰＵ→ＣＭ）。このように、従来例は、ライトバックの期間と、メインメモリからキャッシュメモリにデータを転送する時間、ＣＰＵの要求が待たされることになる。その点、本実施形態のキャッシュ装置１２は、ＣＰＵ１１はメインメモリ１４からキャッシュメモリ２１にデータを転送する時間のみアクセス要求が待たされることになり、応答時間が短くなる。そして、上記したように、図２に示すライトバッファ２２ａ，２２ｂを用いることにより、更に応答時間が短くなる。
【００７５】
また、制御回路２６は、ライトバックバッファ２４にデータを格納した時点で、メモリコントローラ１３に対してそのライトバックバッファ２４のデータをメインメモリ１４に格納するためのライト要求を出力する。従って、制御回路２６は、キャッシュミスに対してメモリコントローラ１３に出力したリード要求に続いてライト要求を出力することができる。
【００７６】
そして、メインメモリ１４に書き込むデータは、ライトバックバッファ２４から出力され、キャッシュメモリ２１に書き込むデータは、メモリコントローラ１３から直接キャッシュメモリ２１に入力される。そして、効率的なメモリコントローラ１３において、図１２に示すように、リードデータ転送と、ライトデータ転送とが重なることがある。従って、キャッシュ装置１２とメモリコントローラ１３との間、メモリコントローラ１３とメインメモリ１４との間のバスにおいて、リードデータとライトデータが競合しないように、バスを分離することや、メモリコントローラ１３及びメインメモリ１４の動作タイミング（又はデータの出力タイミング）を調整することにより、図１１に示すように、ライトバックバッファ２４からデータを出力する動作を、他の動作と並行して実施することができるようになり、動作効率を高めることができる。
【００７７】
以上記述したように、本実施形態によれば、以下の効果を奏する。
（１）キャッシュ装置１２は、ＣＰＵ１１とキャッシュメモリ２１との間にライトバッファ２２ａ，２２ｂを有する。制御回路２６は、ＣＰＵ１１から出力されるデータをライトバッファ２２ａ，２２ｂに格納するライト動作と、キャッシュミスによりメインメモリ１４からデータを読み出してキャッシュメモリ２１に書き込むメモリリード動作とを同時に行う。その結果、ＣＰＵ１１のライトアクセスは、ライトバッファ２２ａ，２２ｂにデータを格納することで終了するため、ＣＰＵ１１に対する応答時間が短くなり、高速なアクセスを可能とすることができる。
【００７８】
（２）キャッシュ装置１２は、２つのライトバッファ２２ａ，２２ｂを有している。制御回路２６は、ＣＰＵ１１が書き込むデータのアドレスに対応して２つのライトバッファ２２ａ，２２ｂを交互に使用することで、複数の連続したライトアクセスに対する応答時間を短縮することができる。
【００７９】
（３）キャッシュ装置１２は、ＣＰＵ１１とキャッシュメモリ２１との間にリードバッファ２３を有する。制御回路２６は、ＣＰＵ１１のアクセス要求に応答してキャッシュメモリ２１から１ライン分のデータをリードバッファ２３に転送し、そのリードバッファ２３からリードデータを出力するようにした。その結果、リードバッファ２３に格納されたデータのアドレスをアクセスする要求に対して、リードバッファ２３からリードデータを出力させることで対応することができるため、応答時間が短くなり、高速なアクセスを可能とすることができる。
【００８０】
（４）キャッシュ装置１２は、キャッシュメモリ２１から読み出されたデータを直接的にＣＰＵ１１に供給する経路（データパス）Ｐ１を有している。従って、ラインＬ２のデータを一旦リードバッファ２３に格納してからＣＰＵ１１に出力する場合と比べて、ＣＰＵ１１がデータを受け取るまでに要する時間、即ち応答時間が短くなり、高速なアクセスを可能とすることができる。
【００８１】
（５）キャッシュ装置１２は、ＣＰＵ１１から出力されたライトデータＷＤｃをリードバッファ２３に記憶可能に構成されている。制御回路２６は、ライトバッファ２２ａ，２２ｂに格納したデータのアドレスと、リードバッファ２３に格納したデータのアドレスが同じ場合に、ＣＰＵ１１から出力されるライトデータをライトバッファ２２ａ，２２ｂに格納するとともに、リードバッファ２３にも格納する。従って、同じアドレスに対するリードアクセスの場合に、ライトバッファ２２ａ内のデータと、リードバッファ２３内のデータとのコヒーレンシが保てるため、次のリードアクセス（Ｒ）において、リードバッファ２３から同一アドレスのデータをＣＰＵ１１に出力することができるため、応答時間が短くなる、即ち高速なアクセスを実現することができる。
【００８２】
（６）キャッシュ装置１２はライトバックバッファ２４を有している。制御回路２６は、アクセス要求がキャッシュミスと判断すると、ライトバックするラインＬｂのデータをライトバックバッファ２４に転送する。そして、制御回路２６は、メモリコントローラ１３に対してライト要求を出力した後、ライトバックバッファ２４に格納したデータをメモリコントローラ１３を介してメインメモリ１４に格納する。この結果、データをメインメモリ１４に格納する前に、アクセス要求に対応するデータをメインメモリ１４から読み出すことができるため、ＣＰＵ１１に対する応答時間を短縮して高速なアクセスを実現することができる。
【００８３】
尚、上記各実施形態は、以下の態様で実施してもよい。
・上記実施形態では、ライトバックバッファ２４により、ライトバック動作におけるアクセス速度を高速化するようにしたが、その他の構成により、アクセス速度を高速化するようにしてもよい。
【００８４】
例えば、ライトバックするタイミングを変更する。
上記したように、図２に示す制御回路２６は、キャッシュメモリ２１の各ラインを循環的に使用している。制御回路２６は、図３に示す管理領域３１に、キャッシュメモリ２１の総ライン数、有効なデータを格納したライン数を示す使用ライン数、最新のデータを格納したラインを示す先頭ポインタ、現時点で最も使用していないデータを格納したラインを示す末尾ポインタを格納している。また、制御回路２６は、図３に示すタグ領域３２に、各ラインに対応する変更ビット３２ｃと有効ビット３２ｄを格納している。制御回路２６は、これらの情報に基づいて、使用可能なラインが無くなったときに、ライトバック動作を実行する。
【００８５】
制御回路２６は、ＣＰＵ１１のアクセス要求によってキャッシュミスが発生すると、そのアクセス要求に必要なデータをメインメモリ１４から読み出すべくリード要求をメモリコントローラ１３に出力する。そして、制御回路２６は、メインメモリ１４から読み出したデータを、無効なラインに格納するとともに、そのラインを有効化する。制御回路２６は、ラインの有効・無効を、そのラインに格納したデータが有効か無効かにより判断する。
【００８６】
有効なデータは、ラインに格納されたデータをキャッシュメモリ２１又はメインメモリ１４に保存しなければならないデータであり、無効なデータは、保存する必要のないデータである。
【００８７】
１つの有効なデータは、ＣＰＵ１１により書き込まれたデータである。キャッシュメモリ２１のラインには、メインメモリ１４から読み出されたデータが格納される。このデータは、ＣＰＵ１１が実行する処理に応じて、書き換えられる場合がある。また、ＣＰＵ１１が実行する処理に応じて生成したデータをキャッシュメモリ２１のラインに書き込む。このようなデータは、メインメモリ１４のデータと相違するため、メインメモリ１４に書き込まなければならないので、キャッシュメモリ２１に保存する必要がある。
【００８８】
別の有効なデータは、最近、メインメモリ１４から読み出してキャッシュメモリ２１のラインに格納したデータである。キャッシュ装置１２は、データの局所性、即ち、アクセスしたデータ、又はそのデータのアドレスと連続するアドレスのデータは近い将来に高い確率でアクセスされる。従って、このようなデータは、キャッシュメモリ２１に保存する必要がある。
【００８９】
１つの無効なデータは、ライトバックしたデータである。別の無効なデータは、最も長い間使用されなかったデータである。
制御回路２６は、ラウンドロビン方式によりキャッシュメモリ２１のラインを使用し、使用状況を図３に示す管理領域３１の情報により管理する。上記したように、制御回路２６は、図１３（ａ）に示すように、メインメモリ１４から読み出してラインＬｃにデータを書き込み、そのラインＬｃを有効化する。従って、全てのラインにデータを書き込むと、全てのラインＬａ〜Ｌｄが有効となる。この時、管理領域３１の情報、即ち末尾ポインタが示すラインＬｄに格納したデータが、最も長い間使用されなかったデータである。
【００９０】
次に、制御回路２６は、このラインＬｄに対応する変更ビット３２ｃにより、このラインＬｄのデータが変更されているか否かを判断する。データが変更されている場合、制御回路２６は、このラインＬｄのデータをライトバックする。そして、制御回路２６は、この末尾ポインタが示すラインＬｄに対応するタグ領域３２の有効ビット３２ｄを「０」にしてこのラインＬｄを無効化するとともに、末尾ポインタを次のラインＬａを示す値に変更する。
【００９１】
つまり、制御回路２６は、キャッシュミスによりメインメモリ１４から読み出したデータをキャッシュメモリ」２１に格納した時に、ライトバックの要否を判断し、必要な場合、即ちラインのデータが変更されている場合にライトバックを実行し、そのラインを無効化する。
【００９２】
尚、キャッシュメモリ２１の各ラインは、ＣＰＵ１１によりデータを書き込む、メインメモリ１４から読み出したデータを格納することにより、データが上書きされる。無効化されたラインは、ライトバックを実行するまでは別のデータによる上書きを禁止し、別のデータにより上書きするまで元のデータを保持している。従って、この無効化したラインに対してアクセス要求が発生した場合、制御回路２６は、無効化されていたラインを有効とする、即ちラインに対応する有効ビット３２ｄに「１」をセットすることもできる。この場合も、メインメモリ１４からデータを読み出す場合と比べて、応答時間が短くなる、即ち高速なアクセスを行うことができる。
【００９３】
このように、無効化されていたラインを有効とすると、使用可能なラインが無くなる。そして、この有効化したラインは、最近使用したデータを含むラインである。従って、制御回路２６は、この有効化したラインのライン番号を、先頭ポインタに設定する。すると、使用可能なラインが無くなる。このため、制御回路２６は、上記と同様に、末尾ポインタが示すラインについて、ライトバックの要否を判断して必要な処理を行った後、このラインを無効化する。
【００９４】
そして、無効化したラインには、キャッシュミスにより発生したメモリアクセス、即ちメインメモリ１４をアクセスして読み出したデータを格納することができる。つまり、制御回路２６は、ＣＰＵ１１のアクセス要求によりキャッシュミスが発生した場合、メモリコントローラ１３にリード要求を出力する。そして、制御回路２６は、メインメモリ１４から読み出したデータを、上記の処理によって無効化したラインに格納する。言い換えると、キャッシュミスに対応するデータを書き込むラインを、そのキャッシュミスより先に実行するメインメモリ１４のアクセスに応じて無効化する。また、キャッシュミスに対応するデータを書き込むラインのデータを、そのキャッシュミスより先に実行するメインメモリ１４のアクセスに応じてライトバックする、ということもできる。つまり、制御回路２６は、キャッシュミスによりデータを書き込むラインのデータ、そのキャッシュミスより先行してライトバックする。従って、キャッシュミスが発生した時には常に無効なラインが存在することになるため、キャッシュミスの後にライトバックする方式と比べて応答時間を短くすることができる。
【００９５】
なお、図１３（ａ）を用いた説明においては、無効化したラインとは、キャッシュミスがあった場合に、メインメモリからキャッシュメモリに読み出してくるデータを格納する次のラインと読み替えてもよい。
【００９６】
図１３（ｂ）は、上記のようにライトバックを行わないキャッシュ装置における動作を示す。尚、符号は本実施形態と同じ符号を付す。キャッシュメモリ２１の全てのラインＬａ〜Ｌｄが使用されている。この時、キャッシュメモリ２１のラインＬｃのデータをメインメモリ１４にライトバックした後、メインメモリ１４から読み出したデータをラインＬｃに格納する。
【００９７】
図１４は、ライトアクセスに対するキャッシュ装置１２と、従来例、つまり先行ライトバックを行わないキャッシュ装置の動作を示す。
本実施形態のキャッシュ装置１２は、アクセス要求によりキャッシュミスが発生すると、メインメモリ１４をアクセスしてデータをキャッシュメモリ２１に格納する（ＲＡＭ→ＣＭ）。そして、ＣＰＵ１１から出力されるデータをキャッシュメモリ２１に格納し（ＣＰＵ→ＣＭ）、次のラインのデータをキャッシュメモリ２１からメインメモリ１４にライトバックする（ＣＭ→ＲＡＭ）。ＣＰＵ１１に対する応答時間は、ＣＰＵ１１がアクセス要求を出力してから、ＣＰＵ１１から出力されるデータをキャッシュメモリ２１に格納するまでの期間となる。
【００９８】
従来例のキャッシュ装置は、図１４の下段に示すように、アクセス要求によりキャッシュミスが発生すると、ラインのデータをキャッシュメモリからメインメモリにライトバックする（ＣＭ→ＲＡＭ）。次に、メインメモリをアクセスしてデータをキャッシュメモリに格納する（ＲＡＭ→ＣＭ）。そして、ＣＰＵから出力されるデータをキャッシュメモリに格納する（ＣＰＵ→ＣＭ）。このように、従来例は、ライトバックの期間と、メインメモリからキャッシュメモリにデータを転送する時間、ＣＰＵの要求が待たされることになる。その点、図１４の上段に示す動作では、ＣＰＵはメインメモリからキャッシュメモリにデータを転送する時間のみアクセス要求が待たされることになり、応答時間が短くなる。そして、上記したように、図２に示すライトバッファ２２ａ，２２ｂを用いることにより、更に応答時間が短くなる。
【００９９】
尚、上記の説明では、ライトバックしたラインの有効ビット３２ｄに「０」をセットして無効化したが、有効ビット３２ｄを「１」のままとしてもよい。即ち、図１５（ａ）に示すように、キャッシュメモリ２１のラインＬ０〜Ｌ８までデータを格納した。従って、管理領域３１の先頭ポインタはＬ８を示し、末尾ポインタはＬ０を示す。この状態において、キャッシュミスが発生すると、制御回路２６は、図１５（ｂ）に示すように、ラインＬ９にデータを格納し、先頭ポインタにＬ９をセットするとともに、有効ビット３２ｄに「１」をセットする。そして、制御回路２６は、図１５（ａ）にて末尾ポインタが示すラインＬ０のデータをライトバックした後、図１５（ｂ）に示すように、末尾ポインタにＬ１をセットする。
【０１００】
次に、キャッシュミスが発生した場合、上記と同様に、図１５（ｃ）に示すように、ラインＬ０にデータを格納し、先頭ポインタにＬ０をセットする。そして、制御回路２６は、図１５（ｂ）にて末尾ポインタが示すラインＬ１のデータをライトバックした後、図１５（ｃ）に示すように、末尾ポインタにＬ２をセットする。
【０１０１】
このように、ライトバックしたラインの有効ビット３２ｄを「１」のままとすることで、有効ライン数は、減少しない。つまり、キャッシュヒットとなるライン数が減少しないため、アクセス要求の総数に対するキャッシュヒットの数の比率、即ちヒット率を高くすることができるようになる。
【０１０２】
・上記実施形態では、ＣＰＵ１１とライトバッファ２２ａ，２２ｂとの間のバス幅と、ライトバッファ２２ａ，２２ｂとキャッシュメモリ２１との間のバス幅と同じ値に設定したが、バス幅が相違するようにしてもよい。
【０１０３】
例えば、図１６に示すように、ライトバッファ２２ａ，２２ｂとキャッシュメモリ２１との間のバス幅を、ＣＰＵ１１とライトバッファ２２ａ，２２ｂの間のバス幅のｎ倍（ｎ＝２，４，８，…）の構成とする。例えば、２倍とすると、図１８に示すように、ライトバッファ２２ａに対して２回のアクセスにより書き込んだデータを、１回でキャッシュメモリ２１に転送することができる。従って、ライトバッファ２２ａ，２２ｂからキャッシュメモリ２１へデータ転送する転送サイクル数を削減可能となる。このため、ライトバッファ２２ａ，２２ｂのデータをキャッシュメモリ２１に転送する動作が、ＣＰＵ１１からライトバッファ２２ａ，２２ｂにデータを書き込む動作に対する影響を低減することができる。つまりライトバッファ２２ａ，２２ｂからキャッシュメモリ２１にデータを転送している間に、ＣＰＵ１１がライトアクセスを出力すると、そのライトアクセスは、ライトバッファ２２ａ，２２ｂからキャッシュメモリ２１へのデータ転送を終了するまで待たされることになる。このため、ライトバッファ２２ａ，２２ｂからキャッシュメモリ２１へのデータ転送にかかる時間を短くすることで、このデータ転送とＣＰＵ１１のライトアクセスが重なり難くなる、またはライトアクセスが許容されるまでの時間が短くなる、即ちアクセス要求に対するレイテンシを低減することができる。
【０１０４】
また、図１７に示すように、ライトバッファ２２ａ，２２ｂとキャッシュメモリ２１との間のバス幅を、ライトバッファ２２ａ，２２ｂの容量値と等しくする。この場合、ライトバッファ２２ａ，２２ｂからキャッシュメモリ２１へデータ転送する転送サイクル数を更に削減可能となり、レイテンシを低減することができる。更に、ライトバッファ２２ａ，２２ｂに、ライトバッファ２２ａ，２２ｂの容量値と等しい転送量であって、その後ライトバッファ２２ａ，２２ｂからキャッシュメモリ２１に書き込まれるデータが転送（例えば、バースト転送でもよい）された場合に、キャッシュ判定のヒット又はミスによらずとも、メインメモリ１４へのリード要求をキャンセルする。その後、ライトバッファ２２ａ，２２ｂに書き込まれたデータを、キャッシュメモリ２１のラインに含まれる全てのデータに対して上書きするように書き込む。従って、メインメモリ１４からキャッシュメモリ２１にデータを転送する必要がなくなる。このため、ＣＰＵ１１のアクセス要求がライトアクセスの場合、キャッシュミスが発生しても、メインメモリ１４からキャッシュメモリ２１にデータを転送する処理を行わないようにする。これにより、ライトアクセスに対するレイテンシを削減することができ、ライトアクセスにおけるアクセスを高速化することができる。そして、ライトアクセスにおいてメインメモリ１４からデータを読み出す処理を省略するため、メインメモリ１４に対するアクセス数を低減することができる。
【０１０５】
・上記実施形態では、キャッシュメモリ２１を１つとして示したが、複数のＲＡＭ（複数チップ又は複数ブロック）によりキャッシュメモリを構成してもよい。この構成により、複数のアクセス要求を連続して処理することができるようになる。
【０１０６】
即ち、図１８に示すように、メインメモリ１４に対するリード要求とライト要求が交互に２回発生すると、リード要求に対するリード動作と、ライトバックバッファ２４へのライト動作が重なる場合がある。
【０１０７】
図１９（ａ）に示すように、全てのラインＬ０〜Ｌ９を含む１つのキャッシュメモリ２１の場合、キャッシュミスによって使用するラインのデータをライトバッファに格納し、そのラインにメインメモリ１４から読み出したデータをその格納する。そのアクセス要求の順序は以下のようになる。尚、以下の説明において、キャッシュメモリ２１のラインからライトバックへの転送を「ラインｎのリード」（ｎはライン番号）と表記し、メインメモリ１４からラインｍへの転送を「ラインｍのライト」（ｍはライン番号）と表記する。
［使用するラインがラインＬ０の場合］
＜１−１＞ラインＬ０のリード、ラインＬ０のライト。
＜１−２＞ラインＬ１のリード、ラインＬ１のライト。
［使用するラインがラインＬ１の場合］
＜２−１＞ラインＬ１のリード、ラインＬ１のライト。
＜２−２＞ラインＬ２のリード、ラインＬ２のライト。
【０１０８】
ここで、＜１−１＞のライト動作と、＜１−２＞のリード動作が重なる。ラインＬ１から使用する場合も同様である。このため、これらの処理を同時に実行することができない。
【０１０９】
このため、図１９（ｂ）に示すように、２つのキャッシュメモリ４１，４２を含む構成とし、各キャッシュメモリ４１，４２に対して、ライン番号を交互に割り当てる。すると、＜１−１＞におけるライト動作はキャッシュメモリ４１に対して実行され、＜１−２＞のリード動作はキャッシュメモリ４２に対して実行される。つまり、異なるキャッシュメモリに対する動作となるため、同時に実行することができる。
【０１１０】
上記したように、先行ライトバックを行う場合、１つのキャッシュメモリ２１に対するアクセス要求は、以下のようになる。
［使用するラインがラインＬ０の場合］
＜３−１＞ラインＬ１のリード、ラインＬ０のライト。
＜３−２＞ラインＬ２のリード、ラインＬ１のライト。
［使用するラインがラインＬ１の場合］
＜４−１＞ラインＬ２のリード、ラインＬ１のライト。
＜４−２＞ラインＬ３のリード、ラインＬ２のライト。
【０１１１】
ここで、＜３−１＞のライト動作と、＜３−２＞のリード動作が重なる。ラインＬ１から使用する場合も同様である。このため、これらの処理を同時に実行することができない。
【０１１２】
このため、キャッシュ装置を２つのキャッシュメモリ５１，５２を含む構成とする。そして、一方のキャッシュメモリにおいてライン番号４Ｎとライン番号４Ｎ＋３が連続するように設定し、他方のキャッシュメモリにおいてライン番号４Ｎ＋１とライン番号４Ｎ＋２で連続するように設定し、それらの規則を両キャッシュメモリに交互に割り当てる（なお、Ｎは例えば０以上とする）。例えば、図１９（ｃ）に示すように、キャッシュ装置を２つのキャッシュメモリ５１，５２を含む構成とする。そして、キャッシュメモリ５１においてラインＬ０とラインＬ３が連続するように設定し、キャッシュメモリ５２において、ラインＬ１とラインＬ２とが連続するように設定する。次に、キャッシュメモリ５２において、ラインＬ２とラインＬ５が連続するように設定し、キャッシュメモリ５１において、ラインＬ３とラインＬ４とが連続するように設定する。すると、＜３−１＞におけるライト動作はキャッシュメモリ５１に対して実行され、＜３−２＞のリード動作はキャッシュメモリ５２に対して実行される。つまり、異なるキャッシュメモリに対する動作となるため、同時に実行することができる。
【０１１３】
・上記実施形態では、メインメモリ１４のデータを保持するキャッシュ装置１２について説明したが、キャッシュ装置１２に保持するデータはメインメモリ１４に限らず、磁気ディスク装置、光ディスク装置、光磁気ディスク装置等の媒体記憶装置におけるキャッシュ装置に適用してもよい。
【０１１４】
・上記実施形態に基づき、ライトバッファとリードバッファとライトバックバッファのうちの少なくとも１つを含むキャッシュ装置に具体化してもよい。
・上記実施形態のキャッシュ装置１２は、ライトバッファ２２ａ，２２ｂとリードバッファ２３とを含む構成としたが、リードライト可能な複数のバッファを含む構成としてもよい。また、キャッシュ装置が含む各バッファの数を適宜変更してもよい。
【０１１５】
・上記各実施形態では、シングルポートのスタティックＲＡＭをキャッシュメモリ２１に用いたが、デュアルポートのＲＡＭを用いてもよい。
上記各実施形態に関し、以下の付記を開示する。
（付記１）
処理装置と記憶装置との間に介在されるキャッシュ装置であって、
前記記憶装置のデータを記憶するキャッシュメモリと、
前記処理装置から出力される出力データを保持するバッファと、
前記記憶装置に対するアクセス要求に基づいてキャッシュ判定をし、キャッシュミスの場合には前記アクセス要求に対応して前記出力データを前記バッファに保持し、前記アクセス要求により要求されたデータを含むラインのデータを前記記憶装置から読み出すためのリード要求を出力し、前記記憶装置の前記ラインから出力されたデータを前記キャッシュメモリに格納し、前記バッファに保持してある前記出力データを前記キャッシュメモリに格納させる制御回路と
を有することを特徴とするキャッシュ装置。
（付記２）
前記キャッシュメモリは、複数のラインを含み、各ラインは前記出力データの容量のｎ倍（ｎは２以上の整数）に設定され、前記ラインに前記記憶装置のデータを記憶し、
前記バッファは、少なくとも前記キャッシュメモリの１ライン分の記憶容量に設定されてなること、
を特徴とする付記１記載のキャッシュ装置。
（付記３）
前記バッファは複数設けられ、
前記出力データのアドレスが前記ラインのアドレス範囲を超える場合に前記データを格納する前記バッファに切り替えること
を特徴とする付記１又は２記載のキャッシュ装置。
（付記４）
前記バッファから前記キャッシュメモリに前記出力データを転送する転送量は前記ラインの容量値と等しく設定され、
前記アクセス要求がライトアクセスの場合に、そのライトアクセスにより発生するキャッシュミスに対する前記記憶装置からのデータリードをキャンセルすること、
を特徴とする付記１〜３のうちの何れか１項に記載のキャッシュ装置。
（付記５）
処理装置と記憶装置との間に介在されるキャッシュ装置であって、
前記記憶装置のデータを記憶するキャッシュメモリと、
前記キャッシュメモリから前記処理装置に出力される入力データを保持する第１バッファと、を有すること
を特徴とするキャッシュ装置。
（付記６）
前記キャッシュメモリから前記処理装置に対して入力データを直接出力する経路を有し、
前記キャッシュメモリから前記第１バッファに１ライン分のデータを転送する際に、前記アクセス要求に対応するデータを前記第１バッファに格納するとともに前記処理装置に出力させる、
を特徴とする付記５記載のキャッシュ装置。
（付記７）
前記処理装置から出力される出力データを保持する第２バッファを有し、
前記アクセス要求により前記第２バッファに前記ライトデータを格納する場合に、該出力データのアドレスが前記第１バッファのアドレス範囲内の場合には前記出力データを前記第２バッファに格納すること、
を特徴とする付記５又は６記載のキャッシュ装置。
（付記８）
処理装置と記憶装置との間に介在されるキャッシュ装置であって、
前記記憶装置のデータを記憶するキャッシュメモリと、
前記キャッシュメモリから前記記憶装置にライトバックするデータを保持するバッファと、
を有し、
前記記憶装置に対するリード要求を出力し、前記キャッシュメモリからライトバックするデータを前記バッファに転送し、前記記憶装置から読み出したデータを前記キャッシュメモリに格納すること、
を特徴とするキャッシュ装置。
（付記９）
処理装置と記憶装置との間に介在されるキャッシュ装置であって、
前記記憶装置のデータを記憶するキャッシュメモリを有し、
前記キャッシュメモリは複数のラインを含み、複数の前記ラインを順次使用して前記記憶装置のデータを格納し、
前記記憶装置のデータを格納可能なラインを使用可能ラインとし、
前記使用可能ラインが無くなったときに、次にキャッシュミスが発生した場合に使用するラインのデータを前記記憶装置にライトバックすること、
を特徴とするキャッシュ装置。
（付記１０）
各ラインのデータが有効か・無効かを管理し、前記ライトバックしたラインのデータを無効化すること、
を特徴とする付記９記載のキャッシュ装置。
（付記１１）
無効化した前記ラインに対してキャッシュヒットした場合には当該ラインを有効化するとともに、次にキャッシュミスが発生したときに使用するラインのデータを前記記憶装置にライトバックすること、
を特徴とする付記１０記載のキャッシュ装置。
（付記１２）
各ラインのデータが有効か・無効かを管理し、前記ライトバックしたラインのデータを有効のままとすること、
を特徴とする付記９記載のキャッシュ装置。
（付記１３）
処理装置から出力される出力データを保持するバッファと、
前記バッファが出力する前記出力データを記憶するキャッシュメモリと、
前記キャッシュメモリの第１ラインに対応する第１データが前記バッファに格納されている場合に前記キャッシュメモリにおける前記第１ラインとは異なる第２ラインに対応する第２のデータのキャッシュ判定においてキャッシュミスと判定されると、記憶装置に前記第２データに対応するリード要求の発行以降に前記第１データの前記第１ラインへの書き込みを開始させる制御回路と、
を有することを特徴とするキャッシュ装置。
【符号の説明】
【０１１６】
１１  ＣＰＵ（処理装置）
１２  キャッシュ装置
１４  メインメモリ（記憶装置）
２１  キャッシュメモリ
２２ａ，２２ｂ  ライトバッファ
２３  リードバッファ
２４  ライトバックバッファ
２５  タグメモリ
２６  制御回路
【図１】
2010191638.tif 000003
【図２】
2010191638.tif 000004
【図３】
2010191638.tif 000005
【図４】
2010191638.tif 000006
【図５】
2010191638.tif 000007
【図６】
2010191638.tif 000008
【図７】
2010191638.tif 000009
【図８】
2010191638.tif 000010
【図９】
2010191638.tif 000011
【図１０】
2010191638.tif 000012
【図１１】
2010191638.tif 000013
【図１２】
2010191638.tif 000014
【図１３】
2010191638.tif 000015
【図１４】
2010191638.tif 000016
【図１５】
2010191638.tif 000017
【図１６】
2010191638.tif 000018
【図１７】
2010191638.tif 000019
【図１８】
2010191638.tif 000020
【図１９】
2010191638.tif 000021