(57)【要約】【課題】キャッシュデータを効率的にメインメモリへライトバックすることができるキャッシュ装置、メモリシステム及びデータ転送方法を提供すること【解決手段】本発明にかかるキャッシュ装置は、複数のキャッシュデータが、メインメモリ８０に格納されている複数のデータと一致しているか否かを判定するライトバック制御部６０と、複数のキャッシュデータのうち、不一致と判定されたキャッシュデータであって、メインメモリ８０において連続するアドレスへ書き込まれる複数のキャッシュデータを格納するデータバッファ部１３と、データバッファ部１３へ格納されたキャッシュデータを一括してメインメモリ８０へ書き込むメモリライト部１４と、を備えるものである。【選択図】図１
2013097637.tif 000002
【特許請求の範囲】
【請求項１】
複数のキャッシュデータが、メインメモリに格納されている複数のデータと一致しているか否かを判定する判定部と、
前記複数のキャッシュデータのうち、不一致と判定されたキャッシュデータであって、前記メインメモリにおいて連続するアドレスへ書き込まれる複数のキャッシュデータを格納するバッファ部と、
前記バッファ部へ格納されたキャッシュデータを一括して前記メインメモリへ書き込むメモリライト部と、を備えるキャッシュ装置。
【請求項２】
複数ウェイを用いて前記キャッシュデータを格納するデータメモリと、
前記キャッシュデータを識別するタグを格納するタグメモリと、をさらに備える請求項１に記載のキャッシュ装置。
【請求項３】
前記タグメモリに格納されている第１のタグと、前記第１のタグとは異なるその他のタグとを比較するタグ比較部をさらに備え、
前記バッファ部は、
前記第１のタグと同一のタグに対応する前記キャッシュデータを前記データメモリから抽出し格納する、請求項１又は２に記載のキャッシュ装置。
【請求項４】
前記比較部は、
前記第１のタグと同一のタグが格納されていたウェイ情報を出力し、
前記比較部から出力されたウェイ情報に基づいて、前記データメモリから前記第１のタグと同一のタグに対応する前記キャッシュデータを抽出し、前記抽出したキャッシュデータを前記バッファ部へ出力するデータ選択部をさらに備える、請求項３に記載のキャッシュ装置。
【請求項５】
前記比較部において、前記第１のタグと同一のタグがないと判定された場合、
前記メモリライト部は、
前記バッファ部に格納されているキャッシュデータを一括して前記メインメモリへ書き込む、請求項３又は４に記載のキャッシュ装置。
【請求項６】
前記メモリライト部は、
前記バッファ部に格納されたているキャッシュデータが予め定められた数を超えている場合に、前記バッファ部に格納されたキャッシュデータを一括して前記メインメモリへ書き込む、請求項１乃至５のいずれか１項に記載のキャッシュ装置。
【請求項７】
複数のデータが格納されているメインメモリと、
複数のキャッシュデータが、前記メインメモリに格納されている複数のデータと一致しているか否かを判定する判定部と、前記複数のキャッシュデータのうち、不一致と判定されたキャッシュデータであって、前記メインメモリにおいて連続するアドレスへ書き込まれる複数のキャッシュデータを格納するバッファ部と、前記バッファ部へ格納されたキャッシュデータを一括して前記メインメモリへ書き込むメモリライト部とを有するキャッシュ装置と、を備えるメモリシステム。
【請求項８】
前記キャッシュ装置は、
複数ウェイを用いて前記キャッシュデータを格納するデータメモリと、
前記キャッシュデータを識別するタグを格納するタグメモリと、をさらに備える請求項７に記載のメモリシステム。
【請求項９】
前記キャッシュ装置は、
前記タグメモリに格納されている第１のタグと、前記第１のタグとは異なるその他のタグとを比較するタグ比較部をさらに備え、
前記バッファ部は、
前記第１のタグと同一のタグに対応する前記キャッシュデータを前記データメモリから抽出し格納する、請求項７又は８に記載のメモリシステム。
【請求項１０】
前記比較部は、
前記第１のタグと同一のタグが格納されていたウェイ情報を出力し、
前記キャッシュ装置は、
前記比較部から出力されたウェイ情報に基づいて、前記データメモリから前記第１のタグと同一のタグに対応する前記キャッシュデータを抽出し、前記抽出したキャッシュデータを前記バッファ部へ出力するデータ選択部をさらに備える、請求項９に記載のメモリシステム。
【請求項１１】
前記比較部において、前記第１のタグと同一のタグがないと判定された場合、
前記メモリライト部は、
前記バッファ部に格納されているキャッシュデータを一括して前記メインメモリへ書き込む、請求項９又は１０に記載のメモリシステム。
【請求項１２】
前記メモリライト部は、
前記バッファ部に格納されたているキャッシュデータが予め定められた数を超えている場合に、前記バッファ部に格納されたキャッシュデータを一括して前記メインメモリへ書き込む、請求項７乃至１１のいずれか１項に記載のメモリシステム。
【請求項１３】
複数のキャッシュデータが、メインメモリに格納されている複数のデータと一致しているか否かを判定し、
前記複数のキャッシュデータのうち、不一致と判定されたキャッシュデータであって、前記メインメモリにおいて連続するアドレスへ書き込まれる複数のキャッシュデータをバッファへ格納し、
前記バッファへ格納されたキャッシュデータを一括して前記メインメモリへ書き込むデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はライトバック制御を実行するキャッシュ装置に関する。
【背景技術】
【０００２】
ライトバック方式のキャッシュ装置では、データの書き込み（ライト）時にキャッシュにヒットすると、キャッシュの内容とメインメモリの内容とが異なる状態（ダーティ）になり、キャッシュの内容をメインメモリに書き戻す（ライトバック）必要がある。アプリケーションの切り替えや電源ＯＦＦ時等の場合には、キャッシュ内の全てのダーティなデータをメインメモリに書き戻す（フラッシュ）が、このときのライトバックにかかる時間はシステムの性能に影響を与えるため、高速にライトバックを実行することが要求されている。
【０００３】
特許文献１では、ライトバック方式のキャッシュメモリにおいて、メインメモリへのライトバック処理がシステムバスを長期間占有することがないようにすることで、システムバスの使用効率を向上させることを目的としている。具体的に、図１０を用いて特許文献１におけるライトバック処理について説明する。
【０００４】
ライトバック装置１０１は、ライトバック制御部１０２と、スヌープ部１０４と、シングルライトバックライトバッファー部１０５とを備えている。ライトバック制御部１０２は、キャッシュメモリ１００のインデックスを走査してダーティなキャッシュラインを検出する。スヌープ部１０４は、システムバス２００を監視してシステムバス２００のアイドル状態を検出する。シングルライトバックライトバッファー部は、ライトバック制御部１０２によりダーティであることが検出されたキャッシュラインのデータを一時保存し、その後、スヌープ部１０４によりシステムバス２００がアイドル状態であることが検出されたときに、システムバス２００を介してメインメモリ３００へ１ワードごとにシングルライトでライトバックする。
【０００５】
このライトバック装置１０１は、次のように動作する。ライトバック制御部１０２は、キャッシュラインのインデックス値を１ずつインクリメントしてカウントするカウンタ１０３を有している。ライトバック制御部１０２は、カウンタ１０３の出力に従ってキャッシュメモリ１００のキャッシュラインを順次アクセスし、アクセスしたキャッシュラインのステートを読み出す。そして、ライトバック制御部１０２は、ステートがダーティであれば、そのキャッシュラインのデータをシングルライトバックライトバッファー部１０５に保存するようにシングルライトバックライトバッファー部１０５へ指示する。また、ライトバック制御部１０２は、ライトバックの終わったキャッシュラインのステートをクリーンにする。
【０００６】
スヌープ部１０４は、システムバス２００を監視する。スヌープ部１０４は、システムバス２００がアイドル状態であることを検出すると、システムバス２００がアイドル状態であることをシングルライトバックライトバッファー部１０５へ通知する。
【０００７】
シングルライトバックライトバッファー部１０５は、ライトバック制御部１０２の指示に従ってキャッシュメモリ１００のダーティなキャッシュラインのデータを一時保管する。そして、シングルライトバックライトバッファー部１０５は、スヌープ部１０４からシステムバス２００がアイドル状態であることを通知されると、一時保管しているキャッシュラインのデータの１ワード分をシングルライトで、システムバス２００を介してメインメモリ３００へ書き込む。
【０００８】
このとき、一時保管しているキャッシュラインのデータが複数ワード分あるときは、１ワード分の書き込みが終わるごとに、シングルライトバックライトバッファー部１０５は、システムバス２００への他のデバイスからのアクセス要求がないかをスヌープ部１０４を介して確認する。他のデバイスからのアクセス要求があるときは、シングルライトバックライトバッファー部１０５は、その時点でメインメモリ３００への書き込みを終了する。そして、次にシステムバス２００がアイドル状態になったときに、シングルライトバックライトバッファー部１０５は、メインメモリ３００への書き込みを再開する。
【０００９】
このようにして、シングルライトバックライトバッファー部１０５は、一時保管しているキャッシュラインの総てのワードを１つのバスアイドル期間で書き込めないときは、データを複数のバスアイドル期間に分割してメインメモリ３００へ書き込む。
【００１０】
このような特許文献１のキャッシュメモリのライトバック装置によれば、インデックス順に順次走査されて検出されたダーティなキャッシュラインのデータを、システムバスの複数のアイドル期間に分割して１ワードごとのシングルライトでメインメモリへライトバックすることができる。これにより、メインメモリへのライトバックがシステムバスを長期間占有することがなく、システムバスを効率よく使用することができる。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００６−０９１９９５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかし、特許文献１においては、シングルのライトバックを行うため、頻繁なアプリケーションの切り替えや、電源ＯＦＦ時等のように、バスの空き時間が無い状態で全領域のライトバックが必要になった時に、ライトバックにかかる時間が増大するという問題がある。その理由としては、シングル転送は、１回の転送で１データしか転送できないため、１回の転送で複数のデータを転送できるバースト転送に比較して転送効率が悪いためである。
【課題を解決するための手段】
【００１３】
本発明の第１の態様にかかるキャッシュ装置は、複数のキャッシュデータが、メインメモリに格納されている複数のデータと一致しているか否かを判定する判定部と、前記複数のキャッシュデータのうち、不一致と判定されたキャッシュデータであって、前記メインメモリにおいて連続するアドレスへ書き込まれる複数のキャッシュデータを格納するバッファ部と、前記バッファ部へ格納されたキャッシュデータを一括して前記メインメモリへ書き込むメモリライト部と、を備えるものである。
【００１４】
このようなキャッシュ装置を用いることにより、メインメモリにおいて連続するアドレスへ書き込まれる複数のキャッシュデータをバッファ部へ格納することができる。そのため、バッファ部へ格納されているキャッシュデータを一括してメインメモリへ書き込むことにより、効率的にメインメモリへキャッシュデータを転送することができる。
【００１５】
本発明の第２の態様にかかるメモリシステムは、複数のデータが格納されているメインメモリと、複数のキャッシュデータが、前記メインメモリに格納されている複数のデータと一致しているか否かを判定する判定部と、前記複数のキャッシュデータのうち、不一致と判定されたキャッシュデータであって、前記メインメモリにおいて連続するアドレスへ書き込まれる複数のキャッシュデータを格納するバッファ部と、前記バッファ部へ格納されたキャッシュデータを一括して前記メインメモリへ書き込むメモリライト部とを有するキャッシュ装置と、を備えるものである。
【００１６】
このようなメモリシステムを用いることにより、メインメモリにおいて連続するアドレスへ書き込まれる複数のキャッシュデータをバッファ部へ格納することができる。そのため、バッファ部へ格納されているキャッシュデータを一括してメインメモリへ書き込むことにより、効率的にメインメモリへキャッシュデータを転送することができる。
【００１７】
本発明の第３の態様にかかるデータ転送方法は、複数のキャッシュデータが、メインメモリに格納されている複数のデータと一致しているか否かを判定し、前記複数のキャッシュデータのうち、不一致と判定されたキャッシュデータであって、前記メインメモリにおいて連続するアドレスへ書き込まれる複数のキャッシュデータをバッファへ格納し、
前記バッファへ格納されたキャッシュデータを一括して前記メインメモリへ書き込むものである。
【００１８】
このようなデータ転送方法を用いることにより、メインメモリにおいて連続するアドレスへ書き込まれる複数のキャッシュデータをバッファ部へ格納することができる。そのため、バッファ部へ格納されているキャッシュデータを一括してメインメモリへ書き込むことにより、効率的にメインメモリへキャッシュデータを転送することができる。
【発明の効果】
【００１９】
本発明により、キャッシュデータを効率的にメインメモリへライトバックすることができるキャッシュ装置、メモリシステム及びデータ転送方法を提供することができる。
【図面の簡単な説明】
【００２０】
【図１】実施の形態１にかかるキャッシュ装置の構成図である。
【図２】実施の形態１にかかるライトバック制御部の構成図である。
【図３】実施の形態１にかかるデータＲＡＭ及びタグＲＡＭにおけるデータ格納状態を示す図である。
【図４】実施の形態１にかかるキャッシュ装置のフローチャートである。
【図５】実施の形態１にかかるキャッシュ装置のフローチャートである。
【図６】実施の形態１にかかるライトバック時における転送状態を示す図である。
【図７】実施の形態２にかかるキャッシュ装置のフローチャートである。
【図８】実施の形態３にかかるキャッシュ装置のフローチャートである。
【図９】実施の形態３にかかるキャッシュ装置のフローチャートである。
【図１０】特許文献１にかかるライトバック装置の構成図である。
【図１１】シングル転送を用いたライトバック時における転送状態を示す図である。
【発明を実施するための形態】
【００２１】
（実施の形態１）
以下、図面を参照して本発明の実施の形態について説明する。図１を用いて本発明の実施の形態１にかかるキャッシュ装置１０の構成例について説明する。本図においては、セットアソシアティブ方式のキャッシュ装置について説明する。例えば、キャッシュ装置１０は、４ウェイセットアソシアティブ方式のキャッシュ装置である。ただし、キャッシュ装置１０は、４ウェイセットアソシアティブ方式に限定されず、任意のウェイ数を有するセットアソシアティブ方式を採用することができる。また、キャッシュ装置１０は、ＣＰＵ７０及びメインメモリ８０と接続されている。
【００２２】
キャッシュ装置１０は、４ウェイ分のデータＲＡＭ１１と、データ選択部１２と、データバッファ１３と、メモリライト部１４と、タグＲＡＭ２１〜２４と、ＡＮＤ回路３１〜３４と、比較部４１〜４４と、タグ選択部５１と、タグ記憶部５２と、ライトバック制御部６０とを備えている。
【００２３】
キャッシュ装置１０は、本図においては、４つのデータＲＡＭ１１を有している。データＲＡＭ１１は、ＣＰＵ７０においてインデックスを用いて指定されたデータをメインメモリ８０から受け取る。それぞれのデータＲＡＭ１１は、記憶したデータをデータ選択部１２へ出力する。
【００２４】
タグＲＡＭ２１〜２４は、ＣＰＵ７０においてインデックスを用いて指定されたデータに関連付けられているタグがＣＰＵ７０から書き込まれている。タグＲＡＭ２１〜２４は、４ウェイのいずれかのウェイに格納されているタグを一時的に記憶する。例えば、タグＲＡＭ２１は、ウェイ０のタグを一時的に記憶し、タグＲＡＭ２２は、ウェイ１のタグを一時的に記憶し、タグＲＡＭ２３は、ウェイ２のタグを一時的に記憶し、タグＲＡＭ２４は、ウェイ３のタグを一時的に記憶する。また、タグＲＡＭ２１〜２４は、タグと共にタグの有効性を示すバリッドビットと、タグに関連するデータがダーティな状態か否かを示すダーティビットとをあわせて記憶している。
【００２５】
タグＲＡＭ２１は、タグを記憶した場合に、そのタグが有効であることを示すバリッドビットを設定する。たとえば、記憶されたタグが有効であることを示すために、バリッドビットに１を設定する。ダーティビットは、１が設定されている場合に、タグに関連するデータがダーティな状態であることを示す。タグＲＡＭ２１は、記憶したタグを比較部４１及びタグ選択部５１へ出力する。タグＲＡＭ２２〜２４についても同様である。
【００２６】
ＡＮＤ回路３１は、タグＲＡＭ２１に記憶されているバリッドビットとダーティビットを用いて、ライトバックが必要なデータのタグか否かを判定する。ＡＮＤ回路３１は、バリッドビットとダーティビットとが共に１に設定されている場合、ライトバックが必要なデータとしてダーティフラグに１を設定してタグ選択部５１及びライトバック制御部６０へ出力する。
【００２７】
タグ選択部５１は、ＡＮＤ回路３１〜３４から出力されるダーティフラグと、後に説明するライトバック制御部６０から出力されるウェイ選択信号とを用いて、タグＲＡＭ２１〜２４から出力されるタグの中からタグ記憶部５２へ記憶するタグを選択する。タグの選択処理については後に説明する。
【００２８】
タグ記憶部５２は、タグ選択部５１から出力されたタグと、そのタグが有効か否かを示すバリッドビットを関連付けて記憶する。タグ記憶部５２は、記憶したタグを比較部４１〜４４へ出力する。
【００２９】
比較部４１は、タグＲＡＭ２１から出力されたタグとタグ記憶部５２から出力されたタグが一致しているか否かを判定し、その結果を示す信号としてタグ比較一致信号をライトバック制御部６０へ出力する。比較部４２〜４４も比較部４１と同様に動作する。
【００３０】
ライトバック制御部６０は、比較部４１〜４４からタグ比較一致信号を受け取り、ＡＮＤ回路３１〜３４からダーティフラグを受け取り、タグ記憶部５２から、タグ記憶部５２に記憶されているタグが有効か否かを示すタグ記憶有効信号を受け取る。また、ライトバック制御部６０は、受け取った情報に基づいて、データ選択部１２及びタグ選択部５１へウェイ選択信号を出力し、タグＲＡＭ２１〜２４へダーティビットクリア信号を出力し、タグ記憶部５２へタグ記憶有効化信号を出力し、データバッファ１３へ、データバッファ有効化信号を出力し、メモリライト部１４へ、ライトバック実行指示信号を出力する。ウェイ選択信号、ダーティビットクリア信号、タグ記憶有効化信号、データバッファ有効化信号及びライトバック実行指示信号の生成処理については後に説明する。
【００３１】
データ選択部１２は、複数のデータＲＡＭ１１それぞれからデータを受け取る。データ選択部１２は、ライトバック制御部６０から出力されるウェイ選択信号により指定されたウェイにおいて格納されていたデータを選択して、データバッファ１３へ出力する。
【００３２】
データバッファ１３は、データ選択部１２から出力されたデータを記憶する。また、データバッファ１３は、データバッファ１３に記憶されているデータが有効か否かを示すデータバッファバリッドビットと、データバッファの容量が所定の基準値を超えているか否かを示すデータバッファフルビットとをあわせて管理している。所定の基準値は、例えば、データバッファの最大容量であってもよい。
【００３３】
メモリライト部１４は、データバッファ１３からデータを受け取り、ライトバック制御部６０から出力されるライトバック実行指示信号に基づいて、メインメモリ８０へライトデータを出力する。
【００３４】
続いて、図２を用いて本発明の実施の形態１にかかるライトバック制御部６０の構成例について説明する。ライトバック制御部６０は、ダーティ判別部６１と、タグ記憶有効判別部６２と、タグ記憶一致比較部６３と、タグ記憶操作部６４と、データバッファ操作部６５と、ライトバック実行指示部６６と、ウェイ選択部６７と、タグＲＡＭ操作部６８とを備えている。
【００３５】
ダーティ判別部６１は、ＡＮＤ回路３１〜３４からダーティフラグを受け取る。ＡＮＤ回路３１〜３４から受け取ったダーティフラグの中に、１に設定されている信号がある場合、ダーティ判別部６１は、ダーティウェイ有フラグをタグ記憶有効判別部６２へ出力する。ダーティフラグが１に設定されている信号がない場合、ダーティ判別部６１は、ダーティウェイ無フラグをタグ記憶操作部６４及びライトバック実行指示部６６へ出力する。
【００３６】
タグ記憶有効判別部６２は、ダーティ判別部６１からダーティウェイ有フラグを受け取り、タグ記憶部５２からタグ記憶有効信号を受け取る。タグ記憶有効判別部６２は、ダーティウェイ有フラグを受け取った際に、有効を示すビットが設定されたタグ記憶有効信号を受け取った場合、タグ記憶一致比較部６３に対してタグ記憶有効フラグを出力する。タグ記憶有効判別部６２は、ダーティウェイ有フラグを受け取った際に、無効を示すビットが設定されたタグ記憶有効信号を受け取った場合、タグ記憶操作部６４、データバッファ操作部６５及びウェイ選択部６７へタグ記憶無効フラグを出力する。
【００３７】
タグ記憶一致比較部６３は、タグ記憶有効判別部６２からタグ記憶有効フラグを受け取り、比較部４１〜４４からタグ比較一致信号を受け取る。タグ記憶一致比較部６３は、タグ記憶有効フラグを受け取った際に、比較部４１〜４４のいずれかからタグが一致しているとの情報が設定されたタグ比較一致信号を受け取った場合、ウェイ選択部６７へ一致フラグを出力する。タグ記憶一致比較部６３は、タグ記憶有効フラグを受け取った際に、比較部４１〜４４のいずれからもタグが一致しているとの情報が設定されていないタグ比較一致信号を受け取った場合、データバッファ操作部６５、ライトバック実行指示部６６及びウェイ選択部６７へ不一致フラグを出力する。
【００３８】
タグ記憶操作部６４は、ダーティ判別部６１からダーティウェイ無フラグを受け取った場合、タグ記憶部５２のバリッドビットを無効、つまりバリッドビットを０に設定する。さらに、タグ記憶操作部６４は、タグ記憶有効判別部６２から受け取ったタグ記憶有効信号に無効を示すビットが設定されている場合、タグ記憶部５２のバリッドビットを有効、つまりバリッドビットを１に設定する。
【００３９】
データバッファ操作部６５は、タグ記憶有効判別部６２から受け取ったタグ記憶有効信号に無効を示すビットが設定されている場合、データバッファ１３へデータバッファ有効化信号を出力して、データバッファを有効、つまりデータバッファバリッドビットを１に設定する。データバッファ操作部６５は、タグ記憶一致比較部６３から、不一致フラグを受け取った場合、データバッファ１３へデータバッファ有効化信号を出力して、データバッファを無効、つまりデータバッファバリッドビットを０に設定する。
【００４０】
ライトバック実行指示部６６は、ダーティ判別部６１からダーティウェイ無フラグを受け取った際に、データバッファ１３からデータバッファバリッドビットが有効、つまりデータバッファバリッドビットに１が設定されている場合、メモリライト部１４に対して、ライトバック実行指示信号を出力する。また、ライトバック実行指示部６６は、タグ記憶一致比較部６３から不一致フラグかつデータバッファ１３からデータバッファが有効であるとの信号を受け取った場合についても、メモリライト部１４に対してライトバック実行指示信号を出力する。また、ライトバック実行指示部６６は、データバッファ１３からデータバッファがフルであるとの信号を受け取った場合についても、メモリライト部１４に対してライトバック実行指示信号を出力する。
【００４１】
ウェイ選択部６７は、タグ記憶有効判別部６２から出力されるタグ記憶有効信号が無効に設定されており、さらに、タグ記憶一致比較部６３から不一致フラグを受け取った場合に、タグＲＡＭ２１〜２４から出力されるタグと関連付けられている任意のウェイを選択して、データ選択部１２及びタグ選択部５１へ選択したウェイを通知するためにウェイ選択信号を出力する。ここで、タグ記憶一致比較部６３から不一致フラグを受け取らない場合においても、ウェイ選択部６７は、任意のウェイを選択して、ウェイ選択信号を出力してもよい。また、ウェイ選択部６７は、タグ記憶一致比較部６３から一致フラグを受け取った場合、一致したタグを出力したウェイを選択して、データ選択部１２へウェイ選択信号を出力する。
【００４２】
タグＲＡＭ操作部６８は、ダーティ状態のデータをデータバッファ１３へ格納した場合に、格納されたデータに関連するタグを記憶しているタグＲＡＭに対して、ダーティビットクリア信号を出力して、ダーティビットをクリア、つまり０に設定する。タグＲＡＭ操作部６８は、ウェイ選択信号に基づいて、ダーティビットクリア信号を出力するタグＲＡＭを決定してもよい。
【００４３】
続いて、図３を用いて、本発明の実施の形態１にかかるキャッシュ装置１０のデータＲＡＭ１１、タグＲＡＭ２１〜２４におけるデータ格納状態の例について説明する。本図は、４ウェイセットアソシアティブ方式を用いており、ラインサイズは８である。ウェイ０〜３は、インデックス０〜７毎に、データが有効であるか否かを示すバリッドビットと、データがダーティ状態であるか否かを示すダーティビットと、タグと、データとを関連付けて管理している。たとえば、ウェイ１のインデックス０には、データＡと、データＡと関連付けられているタグａと、データＡが有効であることを示すバリッドビット１と、データＡがダーティ状態であることを示すダーティビット１とが関連付けて管理されている。
【００４４】
続いて、図４及び図５を用いて、本発明の実施の形態１にかかるキャッシュ装置１０の動作について説明する。はじめに、データＲＡＭ１１及びタグＲＡＭ２１〜２４は、ＣＰＵ７０からインデックス値を受け取り、受け取ったインデックス値の全ウェイのデータ、タグ、ダーティビット及びバリッドビットをタグＲＡＭ２１〜２４から読み出す（Ｓ１０１）。
【００４５】
次に、ダーティ判別部６１は、ＡＮＤ回路３１〜３４から出力されるダーティフラグを用いて、ダーティなデータを有するウェイが存在するか否かを判定する（Ｓ１０２）。ステップＳ１０２において、ダーティ判別部６１によってダーティなデータを有するウェイが存在すると判定された場合、タグ記憶有効判別部６２は、タグ記憶部５２から出力されるタグ記憶有効信号を用いて、タグ記憶部５２が有効か否かを判定する（Ｓ１０５）。例えば、タグ記憶部５２が有効な状態とは、タグ記憶部５２にタグが一時的に記憶されている状態である。例えば、タグ記憶部５２が無効な状態とは、タグ記憶部５２にタグが記憶されていない状態である。
【００４６】
ステップＳ１０５において、タグ記憶有効判別部６２によってタグ記憶部５２が無効であると判定された場合、ウェイ選択部６７は、ダーティなデータを有するウェイを選択し、ウェイ選択信号をデータ選択部１２へ出力する。データ選択部１２は、データＲＡＭ１１から出力されたデータのうち、ウェイ選択信号によって指定されたウェイから出力されたデータを選択し、データバッファ１３へ記憶する（Ｓ１０６）。この時、データバッファ操作部６５は、データバッファ１３へデータバッファ有効化信号を出力して、データバッファ１３のバリッドビットを有効化する。
【００４７】
次に、ウェイ選択部６７は、ダーティなデータを有するウェイを選択したウェイ選択信号をタグ選択部５１へ出力する。タグ選択部５１は、タグＲＡＭ２１〜２４から出力されたデータのうち、ウェイ選択信号によって指定されたウェイから出力されたタグを選択し、タグ記憶部５２へ記憶する（Ｓ１０７）。この時、タグ記憶操作部６４は、タグ記憶部５２へタグ記憶有効化信号を出力して、タグ記憶部５２のバリッドビットを有効化する。
【００４８】
次に、タグＲＡＭ操作部６８は、データバッファ１３へ保存されたデータに関連付けられたタグを有しているタグＲＡＭへダーティビットクリア信号を出力して、ダーティビットをクリア、つまり０に設定する。
【００４９】
次に、ＣＰＵ７０は、インデックス値をインクリメントしてステップＳ１０１に戻り処理を繰り返す（Ｓ１１５）。
【００５０】
ここで、ステップＳ１０５において、タグ記憶有効判別部６２によってタグ記憶部５２が有効であると判定された場合、つまり、タグ記憶部５２に有効なタグが記憶されている場合、タグ記憶一致比較部６３は、比較部４１〜４４から出力されるタグ比較一致信号を用いて、タグ記憶部５２に記憶されているタグと、タグＲＡＭ２１〜２４に記憶されているタグとが一致するか否かを判定する（Ｓ１０９）。タグ記憶一致比較部６３は、タグ記憶部５２に記憶されているタグと、タグＲＡＭ２１〜２４に記憶されているタグとが一致すると判定した場合、ウェイ選択部６７は、一致したタグを記憶しているタグＲＡＭにタグを出力したウェイを選択し、ウェイ選択信号をデータ選択部１２へ出力する。データ選択部１２は、ウェイ選択信号により指定されたウェイから出力されたデータをデータバッファ１３へ格納する（Ｓ１１１）。
【００５１】
次に、タグＲＡＭ操作部６８は、データバッファ１３へ保存されたデータに関連付けられたタグを有しているタグＲＡＭへダーティビットクリア信号を出力して、ダーティビットをクリアする（Ｓ１１２）。
【００５２】
次に、ライトバック実行指示部６６は、データバッファ１３からのデータバッファフル信号を用いて、データバッファ１３がフルかどうかを判定する（Ｓ１１３）。ステップＳ１１３において、ライトバック実行指示部６６は、データバッファがフルであると判定した場合、メモリライト部１４へライトバック実行指示信号を出力してライトバックを実行する（Ｓ１１４）。
【００５３】
次に、ＣＰＵ７０は、インデックス値をインクリメントしてステップＳ１０１に戻り処理を繰り返す（Ｓ１１５）。また、ステップＳ１１３において、ライトバック実行指示部６６においてデータバッファがフルではないと判定された場合も、ＣＰＵ７０は、インデックス値をインクリメントしてステップＳ１０１に戻り処理を繰り返す。
【００５４】
ここで、ステップＳ１０２において、ダーティ判別部６１によってダーティなデータを有するウェイが存在しないと判定された場合、タグ記憶操作部６４は、タグ記憶有効信号をタグ記憶部５２へ出力し、タグ記憶部５２のバリッドビットを無効化する（Ｓ１０３）。
【００５５】
次に、ライトバック実行指示部６６は、データバッファ１３から出力されるデータバッファバリッド信号を用いて、データバッファ１３に有効なデータがあるか否かを判定する。ライトバック実行指示部６６は、データバッファ１３に有効なデータがあると判定した場合、ステップＳ１１４へ進み、メモリライト部１４へライトバック実行指示信号を出力する。ライトバック実行指示部６６において、データバッファ１３に有効なデータが無いと判定された場合、ステップＳ１１５へ進み、ＣＰＵ７０は、インデックス値をインクリメントしてステップＳ１０１に戻り処理を繰り返す。
【００５６】
ここで、ステップＳ１０９において、タグ記憶一致比較部６３によって、タグ記憶部５２に記憶されているタグと、タグＲＡＭ２１〜２４に記憶されているタグとが一致しないと判定された場合、ライトバック実行指示部６６は、メモリライト部１４へライトバック実行指示信号を出力してライトバックを実行する（Ｓ１１０）。ライトバックが実行された後、ステップＳ１０６以降の処理を実行する。
【００５７】
続いて、図６及び図１１を用いて、図３のようにデータＲＡＭ１１、タグＲＡＭ２１〜２４に格納されたデータのライトバック制御動作について説明する。図３のインデックスは、アドレスの一部を示し、タグと併せてメインメモリ中のアドレスを示す。タグをａ、ｂ、ｃ及びｄとし、データをＡ、Ｂ、Ｃ及びＤとする。ここで、同じアルファベットのデータは、メインメモリ８０において連続するアドレスに格納される。例えば、ウェイ１のインデックス０のデータＡは、ウェイ２のインデックス１のデータＡとはメインメモリ８０において連続したアドレスに格納されるが、ウェイ１のインデックス１のデータＣとは連続したアドレスには格納されない。
【００５８】
つまり、ウェイ１のインデックス０、ウェイ２のインデックス１、ウェイ１のインデックス２、ウェイ０のインデックス３のデータは、メインメモリ８０において連続したアドレスに格納されるため、４バーストによるライトバックが可能である。ここで、シングル転送を行う場合、１転送あたり３クロック分の時間を要し、４バースト転送を行う場合、１転送あたり６クロック分の時間を要するとする。
【００５９】
ここで、図１１を用いて、図３のように格納されている全てのデータをシングル転送する場合の動作について説明する。はじめに、ライトバック制御部は、ウェイ０のインデックス０のバリッドビットとダーティビットを確認するが、ダーティビットが０に設定されているため、ライトバックを行わない。次に、ウェイ０のインデックス１のバリッドビットとダーティビットを確認する。ここで、ウェイ０のインデックス１は、バリッドビット及びダーティビットがそれぞれ１であるため、ウェイ０のインデックス１に格納されているデータＢをメインメモリ８０にシングル転送を用いてライトバックする。
【００６０】
これをウェイ０のインデックス７まで繰り返す。次に、ウェイ１のインデックス０〜７というように、ウェイ３のインデックス７まで順に処理する。このようにすると図１１に示されるとおり、シングル転送を１１回行うため、３３クロック分の時間を必要とする。
【００６１】
続いて、図６を用いて本発明の実施の形態１にかかるバースト転送を用いた場合の動作について説明する。はじめに、ウェイ０〜３のインデックス０のバリッドビットとダーティビットとタグとデータとを読み出す（Ｓ１０１）。ここで、ダーティ判別部６１は、ウェイ１のインデックス０に格納されているバリッドビット及びダーティビットが１に設定されていると判定する（Ｓ１０２）。
【００６２】
次に、タグ記憶有効判別部６２は、タグ記憶部５２が有効か否かを判定するが、まだこの時点においては、タグ記憶部５２にタグは記憶されていないため、タグ記憶部５２は無効であると判定する（Ｓ１０５）。次に、データ選択部１２は、ダーティな状態のデータであるウェイ１のインデックス０に格納されているデータＡを選択し、データバッファ１３へ記憶する（Ｓ１０６）。次に、タグ選択部５１は、ダーティな状態のデータＡと共にウェイ１のインデックス０に格納されているタグａを選択し、タグ記憶部５２へ記憶する（Ｓ１０７）。
【００６３】
次にタグＲＡＭ操作部６８は、ウェイ１のインデックス０に格納されていたデータを記憶するタグＲＡＭ２２のダーティビットをクリアする（Ｓ１０８）。次に、ＣＰＵ７０は、インデックス値をインクリメント（Ｓ１１５）して、ウェイ０〜３のインデックス１のバリッドビットとダーティビットとタグとデータとを読み出す（Ｓ１０１）。
【００６４】
次に、ダーティ判別部６１は、ウェイ０、ウェイ１及びウェイ２のインデックス１に格納されているバリッドビット及びダーティビットが１に設定されていると判定する（Ｓ１０２）。次に、タグ記憶有効判別部６２は、タグ記憶部５２が有効か否かを判定する。タグ記憶部５２には、タグａが記憶されているため、タグ記憶有効判別部６２は、タグ記憶部５２を有効と判定する（Ｓ１０５）。
【００６５】
次に、タグ記憶一致比較部６３は、タグ記憶部５２に記憶されているタグａと、タグＲＡＭ２１〜２３に記憶されているタグとを比較する（Ｓ１０９）。この結果、タグＲＡＭ２３に記憶されているウェイ２のインデックス１に格納されていたタグａが、タグ記憶部５２に記憶されているタグａと一致する。そこで、ウェイ２のインデックス１に格納されているデータＡをデータバッファ１３に格納する（Ｓ１１１）。
【００６６】
この時点においては、データバッファ１３はフルではないため（Ｓ１１３）、ステップＳ１１５以降の処理を繰り返す。これをインデックス４まで繰り返した場合、インデックス４には、データＡが存在しないため、ステップＳ１０９において、タグ記憶一致比較部６３は、タグ記憶部５２に記憶されているタグａと一致するタグはないと判定する。この時、メインメモリ８０において連続するアドレスに書込まれるデータがなくなるため、メモリライト部１４は、データバッファ１３に格納されている４つのデータＡをメインメモリ８０へ一括転送し、ライトバックを行う（Ｓ１１０）。
【００６７】
次に、ウェイ０〜３のインデックス４に格納されているデータの中からダーティな状態にあるデータをデータバッファ１３へ格納する（Ｓ１０６）。ここで、ダーティな状態にあるデータは、ウェイ０のデータＥと、ウェイ３のデータＢがある。このような場合、特に制約がない場合、ウェイ番号の若い方を優先し、ウェイ０のデータＥをデータバッファ１３へ格納し、ウェイ０のタグｅをタグ記憶部５２へ記憶する（Ｓ１０７）。
【００６８】
次に、ステップＳ１１５を経てウェイ０〜３のインデックス５に格納されているデータを対象に処理が実行される。ここで、インデックス５には、ダーティな状態であるデータは存在しない。そのため、ダーティ判別部６１は、ダーティな状態にあるデータは存在しないと判定し（Ｓ１０２）。次に、タグ記憶操作部６４は、タグ記憶部５２を無効に設定する（Ｓ１０３）。
【００６９】
次に、データバッファ１３には、データＥが記憶されているため（Ｓ１０４）、ライトバック実行指示部６６はライトバック実行指示信号をメモリライト部１４へ出力し、メインメモリ８０へライトバックを行う（Ｓ１１４）。このような処理をインデックス７まで繰り返した後、再度インデックス０における処理を実行する。
【００７０】
上述したように、図３のようにデータＲＡＭ１１、タグＲＡＭ２１〜２４に格納されたデータをライトバック制御することにより、図６に示されるように、データＡ及びＢの４バースト転送を２回行い、データＥ、Ｃ及びＤのシングル転送を３回行うことになる。この場合、２１クロック分の時間を必要とする。
【００７１】
以上説明したように、本発明の実施の形態１にかかるキャッシュ装置１０を用いることにより、メインメモリ８０において連続するアドレスに書込まれるデータをデータバッファ１３へまとめて記憶することができる。さらに、メモリライト部１４は、データバッファ１３へ記憶されている連続するデータを一括してメインメモリ８０へ転送することができる。これにより、ライトバックにかかる時間を削減することができる。
【００７２】
（実施の形態２）
続いて、図７を用いて本発明の実施の形態２にかかるキャッシュ装置１０の動作について説明する。本発明の実施の形態１にかかるバースト転送を用いた場合の動作においては、図４のステップＳ１０２において、ダーティな状態のデータが検出されず、ステップＳ１０４において、データバッファ１３にデータが存在すると判定された場合、ライトバックが実行される（Ｓ１１４）。
【００７３】
ここで、本発明の実施の形態２においては、ステップＳ１０２において、ダーティな状態のデータが検出されず、ステップＳ１０４において、データバッファ１３にデータが存在するか否かにかかわらず、ライトバックを実行せず、ステップＳ１１５に進みインデックス値をインクリメントし、次のインデックス値におけるデータ及びタグ等の処理を実行してもよい。このようにすることにより、データバッファにある程度データが蓄積されてからライトバックを行うことができるため、効率的なライトバック制御を行うことができる。具体的には、ステップＳ１０２において、ダーティな状態のデータが無いと判定された場合、ステップＳ１０３及び１０４の処理を実行せずに、ステップＳ１１５におけるインデックス値をインクリメントする処理を実行する。
【００７４】
また、ダーティなデータが無いと判定した回数が所定の回数に達した場合に、ライトバックを実行するように処理を追加してもよい（Ｓ１２０）。このような処理を追加することにより、例えば、ダーティな状態が長時間継続される場合には、データバッファ１３にある程度データが蓄積される前に、ライトバックを実行することができる。その他の処理については、図４及び図５と同様であるため、詳細な説明を省略する。
【００７５】
以上説明したように、本発明の実施の形態２にかかるキャッシュ装置を用いることにより、データバッファ１３にある程度データが蓄積された状態において、メインメモリ８０へライトバックを実行することができる。これにより、１度にバースト転送を行うデータ量を増加させることができるため、ライトバック時の書込み効率を向上させることができる。
【００７６】
（実施の形態３）
続いて、図８及び図９を用いて本発明の実施の形態３にかかるキャッシュ装置１０の動作について説明する。本発明の実施の形態１及び２においては、ステップＳ１０９において、タグ記憶部５２に記憶されているタグと、タグＲＡＭ２１〜２４から出力されるタグとが一致しないと判定された場合にライトバックが実行される（Ｓ１１０）。
【００７７】
ここで、本発明の実施の形態３においては、ステップＳ１０９において、タグ記憶部５２に記憶されているタグと、タグＲＡＭ２１〜２４から出力されるタグとが一致しないと判定された場合であっても、ライトバックを実行せず、ステップＳ１１５に進みインデックス値をインクリメントし、次のインデックス値におけるデータ及びタグ等の処理を実行してもよい。このようにすることにより、データバッファにある程度データが蓄積されてからライトバックを行うことができるため、効率的なライトバック制御を行うことができる。具体的には、ステップＳ１０９において、タグ記憶部５２に記憶されているタグと、タグＲＡＭ２１〜２４から出力されるタグとが一致しないと判定された場合、ステップＳ１１０及びステップＳ１０６〜１０８の処理を実行せずに、ステップＳ１１５におけるインデックス値をインクリメントする処理を実行する。
【００７８】
また、タグが一致しないと判定した回数が所定の回数に達した場合に、ライトバックを実行するように処理を追加してもよい（Ｓ１３０）。このような処理を追加することにより、例えば、メインメモリ８０において連続するアドレスに書込まれるデータが存在しない場合に、インデックス値をインクリメントし続けることなく、ライトバックを実行することができる。
【００７９】
以上説明したように、本発明の実施の形態３にかかるキャッシュ装置を用いることにより、データバッファ１３にある程度データが蓄積された状態において、メインメモリ８０へライトバックを実行することができる。これにより、１度にバースト転送を行うデータ量を増加させることができるため、ライトバック時の書込み効率を向上させることができる。
【００８０】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、本発明の実施の形態３の制御と、実施の形態２の制御とを組み合わせて、ライトバック制御を行ってもよい。
【符号の説明】
【００８１】
１０  キャッシュ装置
１１  データＲＡＭ
１２  データ選択部
１３  データバッファ
１４  メモリライト部
２１  タグＲＡＭ
２２  タグＲＡＭ
２３  タグＲＡＭ
２４  タグＲＡＭ
３１  ＡＮＤ回路
３２  ＡＮＤ回路
３３  ＡＮＤ回路
３４  ＡＮＤ回路
４１  比較部
４２  比較部
４３  比較部
４４  比較部
５１  タグ選択部
５２  タグ記憶部
６０  ライトバック制御部
６１  ダーティ判別部
６２  タグ記憶有効判別部
６３  タグ記憶一致比較部
６４  タグ記憶操作部
６５  データバッファ操作部
６６  ライトバック実行指示部
６７  ウェイ選択部
６８  タグＲＡＭ操作部
７０  ＣＰＵ
８０  メインメモリ
【図１】
2013097637.tif 000003
【図２】
2013097637.tif 000004
【図３】
2013097637.tif 000005
【図４】
2013097637.tif 000006
【図５】
2013097637.tif 000007
【図６】
2013097637.tif 000008
【図７】
2013097637.tif 000009
【図８】
2013097637.tif 000010
【図９】
2013097637.tif 000011
【図１０】
2013097637.tif 000012
【図１１】
2013097637.tif 000013