説明

キャッシュ装置、メモリシステム及びデータ転送方法

【課題】キャッシュデータを効率的にメインメモリへライトバックすることができるキャッシュ装置、メモリシステム及びデータ転送方法を提供すること
【解決手段】本発明にかかるキャッシュ装置は、複数のキャッシュデータが、メインメモリ80に格納されている複数のデータと一致しているか否かを判定するライトバック制御部60と、複数のキャッシュデータのうち、不一致と判定されたキャッシュデータであって、メインメモリ80において連続するアドレスへ書き込まれる複数のキャッシュデータを格納するデータバッファ部13と、データバッファ部13へ格納されたキャッシュデータを一括してメインメモリ80へ書き込むメモリライト部14と、を備えるものである。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はライトバック制御を実行するキャッシュ装置に関する。
【背景技術】
【0002】
ライトバック方式のキャッシュ装置では、データの書き込み(ライト)時にキャッシュにヒットすると、キャッシュの内容とメインメモリの内容とが異なる状態(ダーティ)になり、キャッシュの内容をメインメモリに書き戻す(ライトバック)必要がある。アプリケーションの切り替えや電源OFF時等の場合には、キャッシュ内の全てのダーティなデータをメインメモリに書き戻す(フラッシュ)が、このときのライトバックにかかる時間はシステムの性能に影響を与えるため、高速にライトバックを実行することが要求されている。
【0003】
特許文献1では、ライトバック方式のキャッシュメモリにおいて、メインメモリへのライトバック処理がシステムバスを長期間占有することがないようにすることで、システムバスの使用効率を向上させることを目的としている。具体的に、図10を用いて特許文献1におけるライトバック処理について説明する。
【0004】
ライトバック装置101は、ライトバック制御部102と、スヌープ部104と、シングルライトバックライトバッファー部105とを備えている。ライトバック制御部102は、キャッシュメモリ100のインデックスを走査してダーティなキャッシュラインを検出する。スヌープ部104は、システムバス200を監視してシステムバス200のアイドル状態を検出する。シングルライトバックライトバッファー部は、ライトバック制御部102によりダーティであることが検出されたキャッシュラインのデータを一時保存し、その後、スヌープ部104によりシステムバス200がアイドル状態であることが検出されたときに、システムバス200を介してメインメモリ300へ1ワードごとにシングルライトでライトバックする。
【0005】
このライトバック装置101は、次のように動作する。ライトバック制御部102は、キャッシュラインのインデックス値を1ずつインクリメントしてカウントするカウンタ103を有している。ライトバック制御部102は、カウンタ103の出力に従ってキャッシュメモリ100のキャッシュラインを順次アクセスし、アクセスしたキャッシュラインのステートを読み出す。そして、ライトバック制御部102は、ステートがダーティであれば、そのキャッシュラインのデータをシングルライトバックライトバッファー部105に保存するようにシングルライトバックライトバッファー部105へ指示する。また、ライトバック制御部102は、ライトバックの終わったキャッシュラインのステートをクリーンにする。
【0006】
スヌープ部104は、システムバス200を監視する。スヌープ部104は、システムバス200がアイドル状態であることを検出すると、システムバス200がアイドル状態であることをシングルライトバックライトバッファー部105へ通知する。
【0007】
シングルライトバックライトバッファー部105は、ライトバック制御部102の指示に従ってキャッシュメモリ100のダーティなキャッシュラインのデータを一時保管する。そして、シングルライトバックライトバッファー部105は、スヌープ部104からシステムバス200がアイドル状態であることを通知されると、一時保管しているキャッシュラインのデータの1ワード分をシングルライトで、システムバス200を介してメインメモリ300へ書き込む。
【0008】
このとき、一時保管しているキャッシュラインのデータが複数ワード分あるときは、1ワード分の書き込みが終わるごとに、シングルライトバックライトバッファー部105は、システムバス200への他のデバイスからのアクセス要求がないかをスヌープ部104を介して確認する。他のデバイスからのアクセス要求があるときは、シングルライトバックライトバッファー部105は、その時点でメインメモリ300への書き込みを終了する。そして、次にシステムバス200がアイドル状態になったときに、シングルライトバックライトバッファー部105は、メインメモリ300への書き込みを再開する。
【0009】
このようにして、シングルライトバックライトバッファー部105は、一時保管しているキャッシュラインの総てのワードを1つのバスアイドル期間で書き込めないときは、データを複数のバスアイドル期間に分割してメインメモリ300へ書き込む。
【0010】
このような特許文献1のキャッシュメモリのライトバック装置によれば、インデックス順に順次走査されて検出されたダーティなキャッシュラインのデータを、システムバスの複数のアイドル期間に分割して1ワードごとのシングルライトでメインメモリへライトバックすることができる。これにより、メインメモリへのライトバックがシステムバスを長期間占有することがなく、システムバスを効率よく使用することができる。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開2006−091995号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
しかし、特許文献1においては、シングルのライトバックを行うため、頻繁なアプリケーションの切り替えや、電源OFF時等のように、バスの空き時間が無い状態で全領域のライトバックが必要になった時に、ライトバックにかかる時間が増大するという問題がある。その理由としては、シングル転送は、1回の転送で1データしか転送できないため、1回の転送で複数のデータを転送できるバースト転送に比較して転送効率が悪いためである。
【課題を解決するための手段】
【0013】
本発明の第1の態様にかかるキャッシュ装置は、複数のキャッシュデータが、メインメモリに格納されている複数のデータと一致しているか否かを判定する判定部と、前記複数のキャッシュデータのうち、不一致と判定されたキャッシュデータであって、前記メインメモリにおいて連続するアドレスへ書き込まれる複数のキャッシュデータを格納するバッファ部と、前記バッファ部へ格納されたキャッシュデータを一括して前記メインメモリへ書き込むメモリライト部と、を備えるものである。
【0014】
このようなキャッシュ装置を用いることにより、メインメモリにおいて連続するアドレスへ書き込まれる複数のキャッシュデータをバッファ部へ格納することができる。そのため、バッファ部へ格納されているキャッシュデータを一括してメインメモリへ書き込むことにより、効率的にメインメモリへキャッシュデータを転送することができる。
【0015】
本発明の第2の態様にかかるメモリシステムは、複数のデータが格納されているメインメモリと、複数のキャッシュデータが、前記メインメモリに格納されている複数のデータと一致しているか否かを判定する判定部と、前記複数のキャッシュデータのうち、不一致と判定されたキャッシュデータであって、前記メインメモリにおいて連続するアドレスへ書き込まれる複数のキャッシュデータを格納するバッファ部と、前記バッファ部へ格納されたキャッシュデータを一括して前記メインメモリへ書き込むメモリライト部とを有するキャッシュ装置と、を備えるものである。
【0016】
このようなメモリシステムを用いることにより、メインメモリにおいて連続するアドレスへ書き込まれる複数のキャッシュデータをバッファ部へ格納することができる。そのため、バッファ部へ格納されているキャッシュデータを一括してメインメモリへ書き込むことにより、効率的にメインメモリへキャッシュデータを転送することができる。
【0017】
本発明の第3の態様にかかるデータ転送方法は、複数のキャッシュデータが、メインメモリに格納されている複数のデータと一致しているか否かを判定し、前記複数のキャッシュデータのうち、不一致と判定されたキャッシュデータであって、前記メインメモリにおいて連続するアドレスへ書き込まれる複数のキャッシュデータをバッファへ格納し、
前記バッファへ格納されたキャッシュデータを一括して前記メインメモリへ書き込むものである。
【0018】
このようなデータ転送方法を用いることにより、メインメモリにおいて連続するアドレスへ書き込まれる複数のキャッシュデータをバッファ部へ格納することができる。そのため、バッファ部へ格納されているキャッシュデータを一括してメインメモリへ書き込むことにより、効率的にメインメモリへキャッシュデータを転送することができる。
【発明の効果】
【0019】
本発明により、キャッシュデータを効率的にメインメモリへライトバックすることができるキャッシュ装置、メモリシステム及びデータ転送方法を提供することができる。
【図面の簡単な説明】
【0020】
【図1】実施の形態1にかかるキャッシュ装置の構成図である。
【図2】実施の形態1にかかるライトバック制御部の構成図である。
【図3】実施の形態1にかかるデータRAM及びタグRAMにおけるデータ格納状態を示す図である。
【図4】実施の形態1にかかるキャッシュ装置のフローチャートである。
【図5】実施の形態1にかかるキャッシュ装置のフローチャートである。
【図6】実施の形態1にかかるライトバック時における転送状態を示す図である。
【図7】実施の形態2にかかるキャッシュ装置のフローチャートである。
【図8】実施の形態3にかかるキャッシュ装置のフローチャートである。
【図9】実施の形態3にかかるキャッシュ装置のフローチャートである。
【図10】特許文献1にかかるライトバック装置の構成図である。
【図11】シングル転送を用いたライトバック時における転送状態を示す図である。
【発明を実施するための形態】
【0021】
(実施の形態1)
以下、図面を参照して本発明の実施の形態について説明する。図1を用いて本発明の実施の形態1にかかるキャッシュ装置10の構成例について説明する。本図においては、セットアソシアティブ方式のキャッシュ装置について説明する。例えば、キャッシュ装置10は、4ウェイセットアソシアティブ方式のキャッシュ装置である。ただし、キャッシュ装置10は、4ウェイセットアソシアティブ方式に限定されず、任意のウェイ数を有するセットアソシアティブ方式を採用することができる。また、キャッシュ装置10は、CPU70及びメインメモリ80と接続されている。
【0022】
キャッシュ装置10は、4ウェイ分のデータRAM11と、データ選択部12と、データバッファ13と、メモリライト部14と、タグRAM21〜24と、AND回路31〜34と、比較部41〜44と、タグ選択部51と、タグ記憶部52と、ライトバック制御部60とを備えている。
【0023】
キャッシュ装置10は、本図においては、4つのデータRAM11を有している。データRAM11は、CPU70においてインデックスを用いて指定されたデータをメインメモリ80から受け取る。それぞれのデータRAM11は、記憶したデータをデータ選択部12へ出力する。
【0024】
タグRAM21〜24は、CPU70においてインデックスを用いて指定されたデータに関連付けられているタグがCPU70から書き込まれている。タグRAM21〜24は、4ウェイのいずれかのウェイに格納されているタグを一時的に記憶する。例えば、タグRAM21は、ウェイ0のタグを一時的に記憶し、タグRAM22は、ウェイ1のタグを一時的に記憶し、タグRAM23は、ウェイ2のタグを一時的に記憶し、タグRAM24は、ウェイ3のタグを一時的に記憶する。また、タグRAM21〜24は、タグと共にタグの有効性を示すバリッドビットと、タグに関連するデータがダーティな状態か否かを示すダーティビットとをあわせて記憶している。
【0025】
タグRAM21は、タグを記憶した場合に、そのタグが有効であることを示すバリッドビットを設定する。たとえば、記憶されたタグが有効であることを示すために、バリッドビットに1を設定する。ダーティビットは、1が設定されている場合に、タグに関連するデータがダーティな状態であることを示す。タグRAM21は、記憶したタグを比較部41及びタグ選択部51へ出力する。タグRAM22〜24についても同様である。
【0026】
AND回路31は、タグRAM21に記憶されているバリッドビットとダーティビットを用いて、ライトバックが必要なデータのタグか否かを判定する。AND回路31は、バリッドビットとダーティビットとが共に1に設定されている場合、ライトバックが必要なデータとしてダーティフラグに1を設定してタグ選択部51及びライトバック制御部60へ出力する。
【0027】
タグ選択部51は、AND回路31〜34から出力されるダーティフラグと、後に説明するライトバック制御部60から出力されるウェイ選択信号とを用いて、タグRAM21〜24から出力されるタグの中からタグ記憶部52へ記憶するタグを選択する。タグの選択処理については後に説明する。
【0028】
タグ記憶部52は、タグ選択部51から出力されたタグと、そのタグが有効か否かを示すバリッドビットを関連付けて記憶する。タグ記憶部52は、記憶したタグを比較部41〜44へ出力する。
【0029】
比較部41は、タグRAM21から出力されたタグとタグ記憶部52から出力されたタグが一致しているか否かを判定し、その結果を示す信号としてタグ比較一致信号をライトバック制御部60へ出力する。比較部42〜44も比較部41と同様に動作する。
【0030】
ライトバック制御部60は、比較部41〜44からタグ比較一致信号を受け取り、AND回路31〜34からダーティフラグを受け取り、タグ記憶部52から、タグ記憶部52に記憶されているタグが有効か否かを示すタグ記憶有効信号を受け取る。また、ライトバック制御部60は、受け取った情報に基づいて、データ選択部12及びタグ選択部51へウェイ選択信号を出力し、タグRAM21〜24へダーティビットクリア信号を出力し、タグ記憶部52へタグ記憶有効化信号を出力し、データバッファ13へ、データバッファ有効化信号を出力し、メモリライト部14へ、ライトバック実行指示信号を出力する。ウェイ選択信号、ダーティビットクリア信号、タグ記憶有効化信号、データバッファ有効化信号及びライトバック実行指示信号の生成処理については後に説明する。
【0031】
データ選択部12は、複数のデータRAM11それぞれからデータを受け取る。データ選択部12は、ライトバック制御部60から出力されるウェイ選択信号により指定されたウェイにおいて格納されていたデータを選択して、データバッファ13へ出力する。
【0032】
データバッファ13は、データ選択部12から出力されたデータを記憶する。また、データバッファ13は、データバッファ13に記憶されているデータが有効か否かを示すデータバッファバリッドビットと、データバッファの容量が所定の基準値を超えているか否かを示すデータバッファフルビットとをあわせて管理している。所定の基準値は、例えば、データバッファの最大容量であってもよい。
【0033】
メモリライト部14は、データバッファ13からデータを受け取り、ライトバック制御部60から出力されるライトバック実行指示信号に基づいて、メインメモリ80へライトデータを出力する。
【0034】
続いて、図2を用いて本発明の実施の形態1にかかるライトバック制御部60の構成例について説明する。ライトバック制御部60は、ダーティ判別部61と、タグ記憶有効判別部62と、タグ記憶一致比較部63と、タグ記憶操作部64と、データバッファ操作部65と、ライトバック実行指示部66と、ウェイ選択部67と、タグRAM操作部68とを備えている。
【0035】
ダーティ判別部61は、AND回路31〜34からダーティフラグを受け取る。AND回路31〜34から受け取ったダーティフラグの中に、1に設定されている信号がある場合、ダーティ判別部61は、ダーティウェイ有フラグをタグ記憶有効判別部62へ出力する。ダーティフラグが1に設定されている信号がない場合、ダーティ判別部61は、ダーティウェイ無フラグをタグ記憶操作部64及びライトバック実行指示部66へ出力する。
【0036】
タグ記憶有効判別部62は、ダーティ判別部61からダーティウェイ有フラグを受け取り、タグ記憶部52からタグ記憶有効信号を受け取る。タグ記憶有効判別部62は、ダーティウェイ有フラグを受け取った際に、有効を示すビットが設定されたタグ記憶有効信号を受け取った場合、タグ記憶一致比較部63に対してタグ記憶有効フラグを出力する。タグ記憶有効判別部62は、ダーティウェイ有フラグを受け取った際に、無効を示すビットが設定されたタグ記憶有効信号を受け取った場合、タグ記憶操作部64、データバッファ操作部65及びウェイ選択部67へタグ記憶無効フラグを出力する。
【0037】
タグ記憶一致比較部63は、タグ記憶有効判別部62からタグ記憶有効フラグを受け取り、比較部41〜44からタグ比較一致信号を受け取る。タグ記憶一致比較部63は、タグ記憶有効フラグを受け取った際に、比較部41〜44のいずれかからタグが一致しているとの情報が設定されたタグ比較一致信号を受け取った場合、ウェイ選択部67へ一致フラグを出力する。タグ記憶一致比較部63は、タグ記憶有効フラグを受け取った際に、比較部41〜44のいずれからもタグが一致しているとの情報が設定されていないタグ比較一致信号を受け取った場合、データバッファ操作部65、ライトバック実行指示部66及びウェイ選択部67へ不一致フラグを出力する。
【0038】
タグ記憶操作部64は、ダーティ判別部61からダーティウェイ無フラグを受け取った場合、タグ記憶部52のバリッドビットを無効、つまりバリッドビットを0に設定する。さらに、タグ記憶操作部64は、タグ記憶有効判別部62から受け取ったタグ記憶有効信号に無効を示すビットが設定されている場合、タグ記憶部52のバリッドビットを有効、つまりバリッドビットを1に設定する。
【0039】
データバッファ操作部65は、タグ記憶有効判別部62から受け取ったタグ記憶有効信号に無効を示すビットが設定されている場合、データバッファ13へデータバッファ有効化信号を出力して、データバッファを有効、つまりデータバッファバリッドビットを1に設定する。データバッファ操作部65は、タグ記憶一致比較部63から、不一致フラグを受け取った場合、データバッファ13へデータバッファ有効化信号を出力して、データバッファを無効、つまりデータバッファバリッドビットを0に設定する。
【0040】
ライトバック実行指示部66は、ダーティ判別部61からダーティウェイ無フラグを受け取った際に、データバッファ13からデータバッファバリッドビットが有効、つまりデータバッファバリッドビットに1が設定されている場合、メモリライト部14に対して、ライトバック実行指示信号を出力する。また、ライトバック実行指示部66は、タグ記憶一致比較部63から不一致フラグかつデータバッファ13からデータバッファが有効であるとの信号を受け取った場合についても、メモリライト部14に対してライトバック実行指示信号を出力する。また、ライトバック実行指示部66は、データバッファ13からデータバッファがフルであるとの信号を受け取った場合についても、メモリライト部14に対してライトバック実行指示信号を出力する。
【0041】
ウェイ選択部67は、タグ記憶有効判別部62から出力されるタグ記憶有効信号が無効に設定されており、さらに、タグ記憶一致比較部63から不一致フラグを受け取った場合に、タグRAM21〜24から出力されるタグと関連付けられている任意のウェイを選択して、データ選択部12及びタグ選択部51へ選択したウェイを通知するためにウェイ選択信号を出力する。ここで、タグ記憶一致比較部63から不一致フラグを受け取らない場合においても、ウェイ選択部67は、任意のウェイを選択して、ウェイ選択信号を出力してもよい。また、ウェイ選択部67は、タグ記憶一致比較部63から一致フラグを受け取った場合、一致したタグを出力したウェイを選択して、データ選択部12へウェイ選択信号を出力する。
【0042】
タグRAM操作部68は、ダーティ状態のデータをデータバッファ13へ格納した場合に、格納されたデータに関連するタグを記憶しているタグRAMに対して、ダーティビットクリア信号を出力して、ダーティビットをクリア、つまり0に設定する。タグRAM操作部68は、ウェイ選択信号に基づいて、ダーティビットクリア信号を出力するタグRAMを決定してもよい。
【0043】
続いて、図3を用いて、本発明の実施の形態1にかかるキャッシュ装置10のデータRAM11、タグRAM21〜24におけるデータ格納状態の例について説明する。本図は、4ウェイセットアソシアティブ方式を用いており、ラインサイズは8である。ウェイ0〜3は、インデックス0〜7毎に、データが有効であるか否かを示すバリッドビットと、データがダーティ状態であるか否かを示すダーティビットと、タグと、データとを関連付けて管理している。たとえば、ウェイ1のインデックス0には、データAと、データAと関連付けられているタグaと、データAが有効であることを示すバリッドビット1と、データAがダーティ状態であることを示すダーティビット1とが関連付けて管理されている。
【0044】
続いて、図4及び図5を用いて、本発明の実施の形態1にかかるキャッシュ装置10の動作について説明する。はじめに、データRAM11及びタグRAM21〜24は、CPU70からインデックス値を受け取り、受け取ったインデックス値の全ウェイのデータ、タグ、ダーティビット及びバリッドビットをタグRAM21〜24から読み出す(S101)。
【0045】
次に、ダーティ判別部61は、AND回路31〜34から出力されるダーティフラグを用いて、ダーティなデータを有するウェイが存在するか否かを判定する(S102)。ステップS102において、ダーティ判別部61によってダーティなデータを有するウェイが存在すると判定された場合、タグ記憶有効判別部62は、タグ記憶部52から出力されるタグ記憶有効信号を用いて、タグ記憶部52が有効か否かを判定する(S105)。例えば、タグ記憶部52が有効な状態とは、タグ記憶部52にタグが一時的に記憶されている状態である。例えば、タグ記憶部52が無効な状態とは、タグ記憶部52にタグが記憶されていない状態である。
【0046】
ステップS105において、タグ記憶有効判別部62によってタグ記憶部52が無効であると判定された場合、ウェイ選択部67は、ダーティなデータを有するウェイを選択し、ウェイ選択信号をデータ選択部12へ出力する。データ選択部12は、データRAM11から出力されたデータのうち、ウェイ選択信号によって指定されたウェイから出力されたデータを選択し、データバッファ13へ記憶する(S106)。この時、データバッファ操作部65は、データバッファ13へデータバッファ有効化信号を出力して、データバッファ13のバリッドビットを有効化する。
【0047】
次に、ウェイ選択部67は、ダーティなデータを有するウェイを選択したウェイ選択信号をタグ選択部51へ出力する。タグ選択部51は、タグRAM21〜24から出力されたデータのうち、ウェイ選択信号によって指定されたウェイから出力されたタグを選択し、タグ記憶部52へ記憶する(S107)。この時、タグ記憶操作部64は、タグ記憶部52へタグ記憶有効化信号を出力して、タグ記憶部52のバリッドビットを有効化する。
【0048】
次に、タグRAM操作部68は、データバッファ13へ保存されたデータに関連付けられたタグを有しているタグRAMへダーティビットクリア信号を出力して、ダーティビットをクリア、つまり0に設定する。
【0049】
次に、CPU70は、インデックス値をインクリメントしてステップS101に戻り処理を繰り返す(S115)。
【0050】
ここで、ステップS105において、タグ記憶有効判別部62によってタグ記憶部52が有効であると判定された場合、つまり、タグ記憶部52に有効なタグが記憶されている場合、タグ記憶一致比較部63は、比較部41〜44から出力されるタグ比較一致信号を用いて、タグ記憶部52に記憶されているタグと、タグRAM21〜24に記憶されているタグとが一致するか否かを判定する(S109)。タグ記憶一致比較部63は、タグ記憶部52に記憶されているタグと、タグRAM21〜24に記憶されているタグとが一致すると判定した場合、ウェイ選択部67は、一致したタグを記憶しているタグRAMにタグを出力したウェイを選択し、ウェイ選択信号をデータ選択部12へ出力する。データ選択部12は、ウェイ選択信号により指定されたウェイから出力されたデータをデータバッファ13へ格納する(S111)。
【0051】
次に、タグRAM操作部68は、データバッファ13へ保存されたデータに関連付けられたタグを有しているタグRAMへダーティビットクリア信号を出力して、ダーティビットをクリアする(S112)。
【0052】
次に、ライトバック実行指示部66は、データバッファ13からのデータバッファフル信号を用いて、データバッファ13がフルかどうかを判定する(S113)。ステップS113において、ライトバック実行指示部66は、データバッファがフルであると判定した場合、メモリライト部14へライトバック実行指示信号を出力してライトバックを実行する(S114)。
【0053】
次に、CPU70は、インデックス値をインクリメントしてステップS101に戻り処理を繰り返す(S115)。また、ステップS113において、ライトバック実行指示部66においてデータバッファがフルではないと判定された場合も、CPU70は、インデックス値をインクリメントしてステップS101に戻り処理を繰り返す。
【0054】
ここで、ステップS102において、ダーティ判別部61によってダーティなデータを有するウェイが存在しないと判定された場合、タグ記憶操作部64は、タグ記憶有効信号をタグ記憶部52へ出力し、タグ記憶部52のバリッドビットを無効化する(S103)。
【0055】
次に、ライトバック実行指示部66は、データバッファ13から出力されるデータバッファバリッド信号を用いて、データバッファ13に有効なデータがあるか否かを判定する。ライトバック実行指示部66は、データバッファ13に有効なデータがあると判定した場合、ステップS114へ進み、メモリライト部14へライトバック実行指示信号を出力する。ライトバック実行指示部66において、データバッファ13に有効なデータが無いと判定された場合、ステップS115へ進み、CPU70は、インデックス値をインクリメントしてステップS101に戻り処理を繰り返す。
【0056】
ここで、ステップS109において、タグ記憶一致比較部63によって、タグ記憶部52に記憶されているタグと、タグRAM21〜24に記憶されているタグとが一致しないと判定された場合、ライトバック実行指示部66は、メモリライト部14へライトバック実行指示信号を出力してライトバックを実行する(S110)。ライトバックが実行された後、ステップS106以降の処理を実行する。
【0057】
続いて、図6及び図11を用いて、図3のようにデータRAM11、タグRAM21〜24に格納されたデータのライトバック制御動作について説明する。図3のインデックスは、アドレスの一部を示し、タグと併せてメインメモリ中のアドレスを示す。タグをa、b、c及びdとし、データをA、B、C及びDとする。ここで、同じアルファベットのデータは、メインメモリ80において連続するアドレスに格納される。例えば、ウェイ1のインデックス0のデータAは、ウェイ2のインデックス1のデータAとはメインメモリ80において連続したアドレスに格納されるが、ウェイ1のインデックス1のデータCとは連続したアドレスには格納されない。
【0058】
つまり、ウェイ1のインデックス0、ウェイ2のインデックス1、ウェイ1のインデックス2、ウェイ0のインデックス3のデータは、メインメモリ80において連続したアドレスに格納されるため、4バーストによるライトバックが可能である。ここで、シングル転送を行う場合、1転送あたり3クロック分の時間を要し、4バースト転送を行う場合、1転送あたり6クロック分の時間を要するとする。
【0059】
ここで、図11を用いて、図3のように格納されている全てのデータをシングル転送する場合の動作について説明する。はじめに、ライトバック制御部は、ウェイ0のインデックス0のバリッドビットとダーティビットを確認するが、ダーティビットが0に設定されているため、ライトバックを行わない。次に、ウェイ0のインデックス1のバリッドビットとダーティビットを確認する。ここで、ウェイ0のインデックス1は、バリッドビット及びダーティビットがそれぞれ1であるため、ウェイ0のインデックス1に格納されているデータBをメインメモリ80にシングル転送を用いてライトバックする。
【0060】
これをウェイ0のインデックス7まで繰り返す。次に、ウェイ1のインデックス0〜7というように、ウェイ3のインデックス7まで順に処理する。このようにすると図11に示されるとおり、シングル転送を11回行うため、33クロック分の時間を必要とする。
【0061】
続いて、図6を用いて本発明の実施の形態1にかかるバースト転送を用いた場合の動作について説明する。はじめに、ウェイ0〜3のインデックス0のバリッドビットとダーティビットとタグとデータとを読み出す(S101)。ここで、ダーティ判別部61は、ウェイ1のインデックス0に格納されているバリッドビット及びダーティビットが1に設定されていると判定する(S102)。
【0062】
次に、タグ記憶有効判別部62は、タグ記憶部52が有効か否かを判定するが、まだこの時点においては、タグ記憶部52にタグは記憶されていないため、タグ記憶部52は無効であると判定する(S105)。次に、データ選択部12は、ダーティな状態のデータであるウェイ1のインデックス0に格納されているデータAを選択し、データバッファ13へ記憶する(S106)。次に、タグ選択部51は、ダーティな状態のデータAと共にウェイ1のインデックス0に格納されているタグaを選択し、タグ記憶部52へ記憶する(S107)。
【0063】
次にタグRAM操作部68は、ウェイ1のインデックス0に格納されていたデータを記憶するタグRAM22のダーティビットをクリアする(S108)。次に、CPU70は、インデックス値をインクリメント(S115)して、ウェイ0〜3のインデックス1のバリッドビットとダーティビットとタグとデータとを読み出す(S101)。
【0064】
次に、ダーティ判別部61は、ウェイ0、ウェイ1及びウェイ2のインデックス1に格納されているバリッドビット及びダーティビットが1に設定されていると判定する(S102)。次に、タグ記憶有効判別部62は、タグ記憶部52が有効か否かを判定する。タグ記憶部52には、タグaが記憶されているため、タグ記憶有効判別部62は、タグ記憶部52を有効と判定する(S105)。
【0065】
次に、タグ記憶一致比較部63は、タグ記憶部52に記憶されているタグaと、タグRAM21〜23に記憶されているタグとを比較する(S109)。この結果、タグRAM23に記憶されているウェイ2のインデックス1に格納されていたタグaが、タグ記憶部52に記憶されているタグaと一致する。そこで、ウェイ2のインデックス1に格納されているデータAをデータバッファ13に格納する(S111)。
【0066】
この時点においては、データバッファ13はフルではないため(S113)、ステップS115以降の処理を繰り返す。これをインデックス4まで繰り返した場合、インデックス4には、データAが存在しないため、ステップS109において、タグ記憶一致比較部63は、タグ記憶部52に記憶されているタグaと一致するタグはないと判定する。この時、メインメモリ80において連続するアドレスに書込まれるデータがなくなるため、メモリライト部14は、データバッファ13に格納されている4つのデータAをメインメモリ80へ一括転送し、ライトバックを行う(S110)。
【0067】
次に、ウェイ0〜3のインデックス4に格納されているデータの中からダーティな状態にあるデータをデータバッファ13へ格納する(S106)。ここで、ダーティな状態にあるデータは、ウェイ0のデータEと、ウェイ3のデータBがある。このような場合、特に制約がない場合、ウェイ番号の若い方を優先し、ウェイ0のデータEをデータバッファ13へ格納し、ウェイ0のタグeをタグ記憶部52へ記憶する(S107)。
【0068】
次に、ステップS115を経てウェイ0〜3のインデックス5に格納されているデータを対象に処理が実行される。ここで、インデックス5には、ダーティな状態であるデータは存在しない。そのため、ダーティ判別部61は、ダーティな状態にあるデータは存在しないと判定し(S102)。次に、タグ記憶操作部64は、タグ記憶部52を無効に設定する(S103)。
【0069】
次に、データバッファ13には、データEが記憶されているため(S104)、ライトバック実行指示部66はライトバック実行指示信号をメモリライト部14へ出力し、メインメモリ80へライトバックを行う(S114)。このような処理をインデックス7まで繰り返した後、再度インデックス0における処理を実行する。
【0070】
上述したように、図3のようにデータRAM11、タグRAM21〜24に格納されたデータをライトバック制御することにより、図6に示されるように、データA及びBの4バースト転送を2回行い、データE、C及びDのシングル転送を3回行うことになる。この場合、21クロック分の時間を必要とする。
【0071】
以上説明したように、本発明の実施の形態1にかかるキャッシュ装置10を用いることにより、メインメモリ80において連続するアドレスに書込まれるデータをデータバッファ13へまとめて記憶することができる。さらに、メモリライト部14は、データバッファ13へ記憶されている連続するデータを一括してメインメモリ80へ転送することができる。これにより、ライトバックにかかる時間を削減することができる。
【0072】
(実施の形態2)
続いて、図7を用いて本発明の実施の形態2にかかるキャッシュ装置10の動作について説明する。本発明の実施の形態1にかかるバースト転送を用いた場合の動作においては、図4のステップS102において、ダーティな状態のデータが検出されず、ステップS104において、データバッファ13にデータが存在すると判定された場合、ライトバックが実行される(S114)。
【0073】
ここで、本発明の実施の形態2においては、ステップS102において、ダーティな状態のデータが検出されず、ステップS104において、データバッファ13にデータが存在するか否かにかかわらず、ライトバックを実行せず、ステップS115に進みインデックス値をインクリメントし、次のインデックス値におけるデータ及びタグ等の処理を実行してもよい。このようにすることにより、データバッファにある程度データが蓄積されてからライトバックを行うことができるため、効率的なライトバック制御を行うことができる。具体的には、ステップS102において、ダーティな状態のデータが無いと判定された場合、ステップS103及び104の処理を実行せずに、ステップS115におけるインデックス値をインクリメントする処理を実行する。
【0074】
また、ダーティなデータが無いと判定した回数が所定の回数に達した場合に、ライトバックを実行するように処理を追加してもよい(S120)。このような処理を追加することにより、例えば、ダーティな状態が長時間継続される場合には、データバッファ13にある程度データが蓄積される前に、ライトバックを実行することができる。その他の処理については、図4及び図5と同様であるため、詳細な説明を省略する。
【0075】
以上説明したように、本発明の実施の形態2にかかるキャッシュ装置を用いることにより、データバッファ13にある程度データが蓄積された状態において、メインメモリ80へライトバックを実行することができる。これにより、1度にバースト転送を行うデータ量を増加させることができるため、ライトバック時の書込み効率を向上させることができる。
【0076】
(実施の形態3)
続いて、図8及び図9を用いて本発明の実施の形態3にかかるキャッシュ装置10の動作について説明する。本発明の実施の形態1及び2においては、ステップS109において、タグ記憶部52に記憶されているタグと、タグRAM21〜24から出力されるタグとが一致しないと判定された場合にライトバックが実行される(S110)。
【0077】
ここで、本発明の実施の形態3においては、ステップS109において、タグ記憶部52に記憶されているタグと、タグRAM21〜24から出力されるタグとが一致しないと判定された場合であっても、ライトバックを実行せず、ステップS115に進みインデックス値をインクリメントし、次のインデックス値におけるデータ及びタグ等の処理を実行してもよい。このようにすることにより、データバッファにある程度データが蓄積されてからライトバックを行うことができるため、効率的なライトバック制御を行うことができる。具体的には、ステップS109において、タグ記憶部52に記憶されているタグと、タグRAM21〜24から出力されるタグとが一致しないと判定された場合、ステップS110及びステップS106〜108の処理を実行せずに、ステップS115におけるインデックス値をインクリメントする処理を実行する。
【0078】
また、タグが一致しないと判定した回数が所定の回数に達した場合に、ライトバックを実行するように処理を追加してもよい(S130)。このような処理を追加することにより、例えば、メインメモリ80において連続するアドレスに書込まれるデータが存在しない場合に、インデックス値をインクリメントし続けることなく、ライトバックを実行することができる。
【0079】
以上説明したように、本発明の実施の形態3にかかるキャッシュ装置を用いることにより、データバッファ13にある程度データが蓄積された状態において、メインメモリ80へライトバックを実行することができる。これにより、1度にバースト転送を行うデータ量を増加させることができるため、ライトバック時の書込み効率を向上させることができる。
【0080】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、本発明の実施の形態3の制御と、実施の形態2の制御とを組み合わせて、ライトバック制御を行ってもよい。
【符号の説明】
【0081】
10 キャッシュ装置
11 データRAM
12 データ選択部
13 データバッファ
14 メモリライト部
21 タグRAM
22 タグRAM
23 タグRAM
24 タグRAM
31 AND回路
32 AND回路
33 AND回路
34 AND回路
41 比較部
42 比較部
43 比較部
44 比較部
51 タグ選択部
52 タグ記憶部
60 ライトバック制御部
61 ダーティ判別部
62 タグ記憶有効判別部
63 タグ記憶一致比較部
64 タグ記憶操作部
65 データバッファ操作部
66 ライトバック実行指示部
67 ウェイ選択部
68 タグRAM操作部
70 CPU
80 メインメモリ

【特許請求の範囲】
【請求項1】
複数のキャッシュデータが、メインメモリに格納されている複数のデータと一致しているか否かを判定する判定部と、
前記複数のキャッシュデータのうち、不一致と判定されたキャッシュデータであって、前記メインメモリにおいて連続するアドレスへ書き込まれる複数のキャッシュデータを格納するバッファ部と、
前記バッファ部へ格納されたキャッシュデータを一括して前記メインメモリへ書き込むメモリライト部と、を備えるキャッシュ装置。
【請求項2】
複数ウェイを用いて前記キャッシュデータを格納するデータメモリと、
前記キャッシュデータを識別するタグを格納するタグメモリと、をさらに備える請求項1に記載のキャッシュ装置。
【請求項3】
前記タグメモリに格納されている第1のタグと、前記第1のタグとは異なるその他のタグとを比較するタグ比較部をさらに備え、
前記バッファ部は、
前記第1のタグと同一のタグに対応する前記キャッシュデータを前記データメモリから抽出し格納する、請求項1又は2に記載のキャッシュ装置。
【請求項4】
前記比較部は、
前記第1のタグと同一のタグが格納されていたウェイ情報を出力し、
前記比較部から出力されたウェイ情報に基づいて、前記データメモリから前記第1のタグと同一のタグに対応する前記キャッシュデータを抽出し、前記抽出したキャッシュデータを前記バッファ部へ出力するデータ選択部をさらに備える、請求項3に記載のキャッシュ装置。
【請求項5】
前記比較部において、前記第1のタグと同一のタグがないと判定された場合、
前記メモリライト部は、
前記バッファ部に格納されているキャッシュデータを一括して前記メインメモリへ書き込む、請求項3又は4に記載のキャッシュ装置。
【請求項6】
前記メモリライト部は、
前記バッファ部に格納されたているキャッシュデータが予め定められた数を超えている場合に、前記バッファ部に格納されたキャッシュデータを一括して前記メインメモリへ書き込む、請求項1乃至5のいずれか1項に記載のキャッシュ装置。
【請求項7】
複数のデータが格納されているメインメモリと、
複数のキャッシュデータが、前記メインメモリに格納されている複数のデータと一致しているか否かを判定する判定部と、前記複数のキャッシュデータのうち、不一致と判定されたキャッシュデータであって、前記メインメモリにおいて連続するアドレスへ書き込まれる複数のキャッシュデータを格納するバッファ部と、前記バッファ部へ格納されたキャッシュデータを一括して前記メインメモリへ書き込むメモリライト部とを有するキャッシュ装置と、を備えるメモリシステム。
【請求項8】
前記キャッシュ装置は、
複数ウェイを用いて前記キャッシュデータを格納するデータメモリと、
前記キャッシュデータを識別するタグを格納するタグメモリと、をさらに備える請求項7に記載のメモリシステム。
【請求項9】
前記キャッシュ装置は、
前記タグメモリに格納されている第1のタグと、前記第1のタグとは異なるその他のタグとを比較するタグ比較部をさらに備え、
前記バッファ部は、
前記第1のタグと同一のタグに対応する前記キャッシュデータを前記データメモリから抽出し格納する、請求項7又は8に記載のメモリシステム。
【請求項10】
前記比較部は、
前記第1のタグと同一のタグが格納されていたウェイ情報を出力し、
前記キャッシュ装置は、
前記比較部から出力されたウェイ情報に基づいて、前記データメモリから前記第1のタグと同一のタグに対応する前記キャッシュデータを抽出し、前記抽出したキャッシュデータを前記バッファ部へ出力するデータ選択部をさらに備える、請求項9に記載のメモリシステム。
【請求項11】
前記比較部において、前記第1のタグと同一のタグがないと判定された場合、
前記メモリライト部は、
前記バッファ部に格納されているキャッシュデータを一括して前記メインメモリへ書き込む、請求項9又は10に記載のメモリシステム。
【請求項12】
前記メモリライト部は、
前記バッファ部に格納されたているキャッシュデータが予め定められた数を超えている場合に、前記バッファ部に格納されたキャッシュデータを一括して前記メインメモリへ書き込む、請求項7乃至11のいずれか1項に記載のメモリシステム。
【請求項13】
複数のキャッシュデータが、メインメモリに格納されている複数のデータと一致しているか否かを判定し、
前記複数のキャッシュデータのうち、不一致と判定されたキャッシュデータであって、前記メインメモリにおいて連続するアドレスへ書き込まれる複数のキャッシュデータをバッファへ格納し、
前記バッファへ格納されたキャッシュデータを一括して前記メインメモリへ書き込むデータ転送方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate