JP5083757B2 - データをキャッシュする技術 - Google Patents

データをキャッシュする技術 Download PDF

Info

Publication number
JP5083757B2
JP5083757B2 JP2007110453A JP2007110453A JP5083757B2 JP 5083757 B2 JP5083757 B2 JP 5083757B2 JP 2007110453 A JP2007110453 A JP 2007110453A JP 2007110453 A JP2007110453 A JP 2007110453A JP 5083757 B2 JP5083757 B2 JP 5083757B2
Authority
JP
Japan
Prior art keywords
cache
segment
state
data
cache segment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007110453A
Other languages
English (en)
Other versions
JP2008269224A (ja
Inventor
信之 原田
武男 中田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2007110453A priority Critical patent/JP5083757B2/ja
Priority to US12/037,689 priority patent/US8112589B2/en
Publication of JP2008269224A publication Critical patent/JP2008269224A/ja
Application granted granted Critical
Publication of JP5083757B2 publication Critical patent/JP5083757B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、データをキャッシュする技術に関する。特に、本発明は、メインメモリから読み出したデータ、および、メインメモリに書き込むデータをキャッシュメモリに記憶する技術に関する。
近年、NAND型フラッシュメモリなどの不揮発性のメモリデバイスが用いられている。このようなメモリデバイスでは、データの書込みの所要時間がデータの読出しの所要時間と比較して非常に長い場合がある。これは、ブロックという大きなデータサイズでのみ消去動作が可能であるので、データサイズが小さなデータを書き込む場合であっても、(a)ブロック全体からの読出し、(b)読み出したデータの変更、および、(c)ブロック全体の書込み、という3処理が必要だからである。
特開2004−303232号公報
これを解決するために、CPUからメインメモリへのアクセスを効率化するためのキャッシュメモリに関する技術が応用できるとも考えられる。例えば、データサイズの小さなデータを書き込む場合には、それをキャッシュメモリに一旦書き込んだ上で、キャッシュメモリにある程度のサイズのデータが蓄積された場合に初めてフラッシュメモリに書込みを行うことで、書込みの回数を減らして高速化が図られるとも考えられる。データの書込みをキャッシュする技術としては、具体的には、いわゆるライトバックキャッシュと呼ばれる技術が挙げられる。
しかしながら、ライトバックキャッシュの技術をフラッシュメモリに応用すると不都合な場合がある。具体的には、キャッシュメモリが、メインメモリに書き込むべきであるがまだ書き込まれていないデータで満たされた場合である。この場合、その後に読出しが要求されると、読み出したデータをキャッシュするための領域を確保するために、キャッシュメモリ中の何れかのデータをメインメモリに書き戻さなければならない。この書き戻しの処理は、フラッシュメモリをメインメモリとした場合には非常に長い時間を要する。このため、本来は迅速に完了する読出しの処理が、非常に長い時間を要してしまう。
また、書込み前のデータによりキャッシュメモリが満たされないようにするため、読出し専用のキャッシュメモリおよび書込み専用のキャッシュメモリを独立して設ける技術を応用することも考えられる。しかしながら、この技術ではデータの一貫性の制御の処理のため、回路構成が複雑になるおそれがある。
さらに、キャッシュ装置に関する参考技術文献として上記の特許文献1を挙げる。この技術は、演算ユニットが出力するアドレス(例えばスタックポインタのアドレス)に基づき、その後にアクセスされ得る記憶領域(例えばアドレスの減少方向にある領域)を予想して、予めそこからデータを読み込むものである。この技術はスタックポインタなどの特定のアドレス値の存在が前提であり、様々な種類の読出し処理に対し広く応用することはできない。また、この技術をもってしても、書込みが連続した場合にはその後の読出は非常に長い時間を要する。
そこで本発明は、上記の課題を解決することのできる記憶装置および方法を提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
上記課題を解決するために、本発明の一側面においては、メインメモリから読み出したデータ、および、メインメモリに書き込むデータをキャッシュする記憶装置であって、複数のキャッシュセグメントを有し、メインメモリと一致しておらず、メインメモリに書き込むべきデータを含む状態のキャッシュセグメントを更新状態に設定され、メインメモリと一致するデータを保持する1以上のキャッシュセグメントを、予め定められた基準数を上限に、置き換えから保護される状態である保護状態に設定されているキャッシュメモリと、キャッシュセグメントの状態を制御するキャッシュ制御部とを備え、キャッシュ制御部は、書込みのキャッシュミスに応じ、保護状態でないキャッシュセグメントの中から選択したキャッシュセグメントを、書込みデータをキャッシュするために割り当てて、その選択したキャッシュセグメントにデータを書き込み、読出しのキャッシュミスに応じ、更新状態でないキャッシュセグメントの中から選択したキャッシュセグメントをメインメモリから読み出したデータをキャッシュするために割り当てて、割り当てた当該キャッシュセグメントにメインメモリから読み出したデータをキャッシュすると共に割り当てた当該キャッシュセグメントを保護状態に設定し、更に、保護状態のキャッシュセグメントが基準数を超えたことを条件に、割り当てた当該キャッシュセグメント以外の保護状態のキャッシュセグメントを選択して、メインメモリと一致しているが書込みに対しリプレースされ得る状態である共有状態に設定する記憶装置、および、当該記憶装置を制御する方法を提供する。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、本実施の形態に係るコンピュータ10の全体構成を示す。コンピュータ10は、ホストコントローラ1082により相互に接続されるCPU1000、RAM1020、及びグラフィックコントローラ1075を有するCPU周辺部を備える。また、コンピュータ10は、入出力コントローラ1084によりホストコントローラ1082に接続される通信インターフェイス1030、記憶装置20、及びCD−ROMドライブ1060を有する入出力部を備える。また、コンピュータ10は、入出力コントローラ1084に接続されるROM1010、フレキシブルディスクドライブ1050、及び入出力チップ1070を有するレガシー入出力部を更に備えてもよい。
ホストコントローラ1082は、RAM1020と、高い転送レートでRAM1020をアクセスするCPU1000及びグラフィックコントローラ1075とを接続する。CPU1000は、ROM1010及びRAM1020に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィックコントローラ1075は、CPU1000等がRAM1020内に設けたフレームバッファ上に生成する画像データを取得し、表示装置1080上に表示させる。これに代えて、グラフィックコントローラ1075は、CPU1000等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。
入出力コントローラ1084は、ホストコントローラ1082と、比較的高速な入出力装置である通信インターフェイス1030、記憶装置20、及びCD−ROMドライブ1060を接続する。通信インターフェイス1030は、ネットワークを介して外部の装置と通信する。記憶装置20は、コンピュータ10が使用するプログラム及びデータを格納する。記憶装置20は不揮発にデータを保持することのできるデバイス、例えば、フラッシュメモリ又はハードディスクドライブであってもよい。CD−ROMドライブ1060は、CD−ROM1095からプログラム又はデータを読み取り、RAM1020又は記憶装置20に提供する。
また、入出力コントローラ1084には、ROM1010と、フレキシブルディスクドライブ1050や入出力チップ1070等の比較的低速な入出力装置とが接続される。ROM1010は、コンピュータ10の起動時にCPU1000が実行するブートプログラムや、コンピュータ10のハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ1050は、フレキシブルディスク1090からプログラム又はデータを読み取り、入出力チップ1070を介してRAM1020または記憶装置20に提供する。入出力チップ1070は、フレキシブルディスク1090や、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
コンピュータ10に提供されるプログラムは、フレキシブルディスク1090、CD−ROM1095、又はICカード等の記録媒体に格納されて利用者によって提供される。プログラムは、入出力チップ1070及び/又は入出力コントローラ1084を介して、記録媒体から読み出されコンピュータ10にインストールされて実行される。以上に示したプログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク1090、CD−ROM1095の他に、DVDやPD等の光学記録媒体、MD等の光磁気記録媒体、テープ媒体、ICカード等の半導体メモリ等を用いることができる。
なお、本実施の形態においては記憶装置20を備えるものとしてコンピュータ10を例示したが、この記憶装置20は他の如何なる装置やシステムに備えられてもよい。記憶装置20を備える装置・システムは、例えば、USBメモリデバイス、携帯電話装置、PDA装置、オーディオ・プレーヤ、またはカーナビゲーション・システムなどの、携帯型あるいは移動体に設けられた機器であってもよいし、ファイルサーバやNASなどの据置型機器であってもよい。
図2は、記憶装置20の機能構成を示す。記憶装置20は、メインメモリ200と、キャッシュメモリ210と、キャッシュ制御部220とを有し、上述のホストコントローラ1082または入出力コントローラ1084を介してCPU1000からアクセスされる。メインメモリ200は、例えばフラッシュメモリなどの不揮発性の半導体デバイスであり、CPU1000から出力されるデータを格納する。これに代えて、メインメモリ200は、ハードディスクドライブ、光磁気ディスクドライブ、および、テープドライブの少なくとも1つを含んでもよい。キャッシュメモリ210は、CPU1000に提供するためにメインメモリ200から読み出したデータをキャッシュし、または、CPU1000からメインメモリ200に書き込むデータをキャッシュする。キャッシュメモリ210は、メインメモリ200と比較して特にデータの書込みにおいて極めて高速に動作する。このため、書込むべきデータをキャッシュメモリ210に蓄積してから一括してメインメモリ200に書き戻すことで、記憶装置20全体としての処理効率を高めることができる。
キャッシュ制御部220は、論理回路、プログラマブル回路、または、マイクロコントローラなどの電子回路によって実現され、具体的にはホスト側回路225Aおよびメモリ側回路225Bを有する。ホスト側回路225Aは、CPU1000から受けた読出し要求に応じ、データをキャッシュメモリ210から読み出してCPU1000に出力する。また、ホスト側回路225Aは、CPU1000から受けた書込み要求に応じ、データをキャッシュメモリ210に書き込む。メモリ側回路225Bは、読出しの要求されたデータがキャッシュメモリ210に記憶されていない場合に、メインメモリ200からそのデータを読み出してキャッシュメモリ210に格納する。また、メモリ側回路225Bは、キャッシュメモリ210に書き込まれたデータを、所定の条件が成立した場合にメインメモリ200に書き戻す。
図3は、キャッシュメモリ210のデータ構造の概略を示す。キャッシュメモリ210は、複数のキャッシュセグメント300を有し、これら複数のキャッシュセグメント300のそれぞれに対応付けられたタグ310を記憶している。キャッシュメモリ210の記憶領域は、このキャッシュセグメントを単位としてメインメモリ200に割り当てられる。即ち、キャッシュメモリ210の記憶領域はメインメモリ200の記憶領域と比較してデータサイズが小さく、それぞれのキャッシュセグメント300は、メインメモリ200内の何れかのセグメントに対し必要に応じて割り当てられる。割り当ての対象となるキャッシュセグメント300と、このキャッシュセグメント300に割り当てられるメインメモリ200中のセグメントとは、同一のデータサイズである。
また、それぞれのキャッシュセグメント300は複数のセクタ320を含んでよい。1つのキャッシュセグメント300に含まれるセクタ320の数は、好ましくは2の整数乗であり、一例としては4個である。この場合、キャッシュセグメント300と他のキャッシュセグメント300との境界アドレスの値は、セクタ320のデータサイズの2の整数乗であり、一例としてはデータサイズの4倍である。キャッシュセグメント300のデータサイズは、例えばメインメモリ200に対するデータの書込み単位と同一であってもよい。即ちこの場合、キャッシュセグメント300が書込むべきデータをその一部のみに含む場合には、キャッシュメモリ210は、キャッシュセグメント300の他の部分にメインメモリ200からデータを読み出したうえで、このキャッシュセグメント300内のデータをメインメモリ200に書き戻す。これに代えて、データの書込み単位は、アドレスの連続する2以上のキャッシュセグメント300を含むブロックであってもよい。また、メインメモリ200における読出しの単位は、この書き込みの単位よりも小さく、一例としては1または複数のセクタがこれに相当する。
タグ310は、対応するキャッシュセグメント300がメインメモリ200内の何れのセグメントに割り当てられているかを示す情報を少なくとも含んでいる。詳しくは次の通りである。
図4は、タグ310のデータ構造の一例を示す。キャッシュメモリ210は、タグ310を記憶するためのデータフィールドとして、上位アドレスフィールド400と、セクタ情報フィールド410と、LRU値フィールド420と、状態フィールド430とを有する。上位アドレスフィールド400は、対応するキャッシュセグメント300が割り当てられているメインメモリ200内のセグメントについて、そのアドレス値のうち最上位から予め定められた桁数のアドレス値を記憶する。たとえば、メインメモリ200内のアドレスが24ビットで表される場合に、そのうちの下位のnビットを除外した、上位の(24−n)ビットのアドレス値が上位アドレスフィールド400に記憶される。このアドレス値のことを上位アドレス、または、上位アドレス値と称す。また、上位アドレスを除外したアドレスのことを下位アドレス、または、下位アドレス値と称す。
上位アドレス値が(24−n)ビットで表され、各セクタは下位アドレス値によって一意に定まる場合には、1つのキャッシュセグメント300に含まれるセクタ320の数は2のn乗個である。従って、あるキャッシュセグメント300に含まれる各セクタ320が有効なデータを含むかどうかを示す情報は、2のn乗ビットで表現される。この情報をセクタ情報と称し、セクタ情報フィールド410はこのセクタ情報を記憶する。また、LRU値フィールド420は、LRU値を記憶するためのフィールドである。LRU値は、Least Recently Usedという名称のごとく、未使用の期間を示す指標値である。
具体的には、LRU値は、対応するキャッシュセグメント300についての、未使用期間の長さの順序、あるいは、未使用期間の短さの順序を示してもよい。ここで、「使用」とは、CPU1000による読出し、および、書込みの少なくとも1つの処理の対象となったことをいう。より詳細には、複数のキャッシュセグメント300に未使用期間の長さまたは短さに応じて順序を付した場合において、LRU値は、キャッシュセグメント300の数を上限とした数値と成る。従って、これを記憶するLRU値フィールド420は、2を底とするセグメント数Sの対数だけのビットが必要となる。
状態フィールド430は、対応するキャッシュセグメント300に設定している状態を記憶している。状態は例えば3ビットで表され、各キャッシュセグメント300は無効状態、共有状態、保護状態、変更状態、および、修正状態を含む複数の状態の何れかに設定されている。各状態の概要は次の通りである。無効状態は、含んでいる全てのセクタ320が無効セクタであるキャッシュセグメント300の状態を示す。無効セクタは、メインメモリ200と一致するデータを保持しておらず、かつ、メインメモリ200に書込むべきとしてCPU1000から要求されたデータの保持もしていないセクタである。コンピュータ10を起動した場合等の初期状態において、全てのキャッシュセグメント300は無効状態である。
共有状態は、有している全てのセクタ320が共有セクタであるが、書込みに対しリプレースされ得ることを示す、キャッシュセグメント300の状態のことをいう。共有セクタは有効セクタであり、メインメモリ200と一致するデータを保持している。保護状態は、有している全てのセクタ320が共有セクタであり、なおかつ、書き換えから保護される、キャッシュセグメント300の状態を示す。変更状態および修正状態は、それぞれ、本発明に係る更新状態の一例であり、メインメモリ200と一致しておらず、メインメモリ200に書込むべきデータを含む状態である。変更状態のキャッシュセグメント300は、一部のセクタ320に、メインメモリ200に書込むべきデータを含むのに対し、修正状態のキャッシュセグメント300は、有しているすべてのセクタ320に、メインメモリ200に書込むべきデータを含む。このようなセクタ320のことを変更セクタと呼ぶ。変更セクタは有効セクタである。
なお、キャッシュセグメントに状態を定義して遷移させる技術一般については、例えばMSIプロトコル、MESIプロトコル、またはMOESIプロトコルとして知られているように周知であるから、他の実装例やその他の詳細についてはこれらの技術のものを参照されたい。
図5は、キャッシュ制御部220による処理のフローチャートを示す。キャッシュ制御部220は、CPU1000から書込みまたは読出しの要求を受けたことに応じて、あるいは、予め定められたインターバルで定期的に、以下の処理を行う。キャッシュ制御部220は、読出しの要求を受信した場合に(S500:YES)、読出しの処理を行う(S510)。具体的には、キャッシュ制御部220は、要求されたデータがキャッシュメモリ210に記憶されていればキャッシュメモリ210から、要求されたデータがキャッシュメモリ210に記憶されていなければメインメモリ200から、そのデータを読み出して、CPU1000に出力する。
また、キャッシュ制御部220は、書込みの要求を受信した場合に(S520:YES)、書込みの処理を行う(S530)。具体的には、キャッシュ制御部220は、書込みの要求されたデータを書き込むためのキャッシュセグメント300が既に割り当てられていれば、そのキャッシュセグメント300にそのデータを書き込む。一方、割り当てられていなければ、キャッシュ制御部220は、新たにそのデータを書き込むためのキャッシュセグメント300を割り当てて、その割り当てたキャッシュセグメント300にそのデータを書き込む。また、キャッシュ制御部220は、要求の受信に関わらず、予め定められた条件が成立したかどうかを判断する(S540)。
予め定められた条件が成立した場合に(S540:YES)、キャッシュ制御部220は、上記の変更状態または上記の修正状態のキャッシュセグメント300を、メインメモリ200に書き戻す。書き戻されたキャッシュセグメント300は共有状態に遷移する。条件の具体例とは、たとえば、前回に条件が成立してから予め定められた時間が経過したかどうかである。また、条件とは、変更状態または修正状態のキャッシュセグメント300の総数が予め定められた基準数を超えたかどうかであってもよい。他の例として、条件とは、共有状態又は保護状態のキャッシュセグメント300の少数が予め定められた基準数を下回ったかどうかであってもよい。このように、要求に関わらず変更状態または修正状態を解消すれば、その後に新たにキャッシュセグメント300を割り当てる場合であっても、その時点で書き戻しは必要とならず、割り当て処理の完了待ちに要する時間を短縮できる。
図6は、S510における処理の詳細を示す。キャッシュ制御部220は、読出しの要求されたセクタの上位アドレスが、無効状態でない何れかのキャッシュセグメント300の上位アドレスと一致するかを判断する(S600)。これは、たとえば、各キャッシュセグメント300に対応する上位アドレスフィールド400および状態フィールド430を順次走査して、無効状態のキャッシュセグメント300を除外したうえで、読出しの要求されたアドレスと比較することによって実現される。何れのキャッシュセグメント300とも一致しないことを条件に(S600:NO)、キャッシュ制御部220は、何れかのキャッシュセグメント300を、読み出したデータをキャッシュするために割り当てて、その割り当てたキャッシュセグメント300にそのデータをメインメモリ200から読み出す(S610)。
このように、読出しの要求されたセクタの上位アドレスが、無効状態でない何れのキャッシュセグメント300の上位アドレスとも一致しないことを、読出しのキャッシュミスの発生、あるいは、単に読出しのキャッシュミスと呼ぶ。そして、キャッシュ制御部220は、読み出したデータをCPU1000に対し出力する(S650)。なお、データの出力処理(S650)およびデータをキャッシュメモリ210に読み出す処理(S610)の順序はこの順序に限定されず、かつ、同時であってもよい。
一方、キャッシュ制御部220は、読出しの要求されたセクタの上位アドレスが、無効状態でない何れかのキャッシュセグメント300の上位アドレスと一致した場合に(S600:YES)、読出しの要求されたアドレスが有効セクタかどうかを判断する(S620)。これは、たとえば、このキャッシュセグメント300に対応するタグ310のセクタ情報フィールド410を参照することで実現される。有効セクタの場合に(S620:YES)、キャッシュ制御部220は、その有効セクタからデータを読み出して(S640)、CPU1000に出力する。一方有効セクタでない場合には(S620:NO)、キャッシュ制御部220は、そのキャッシュセグメント300の無効セクタについてはメインメモリ200の対応するセクタからデータを取得して(S630)、そのデータのうち要求されたデータを出力する(S650)。これらのキャッシュメモリに対する処理、および、データ出力の順序についても、この順序には限定されない。
図7aは、S610における処理の詳細を示す。図7bは、S610の処理において発生し得る状態遷移を示す。これらの図を参照して、上記S610における処理の詳細について説明する。まず、キャッシュ制御部220は、キャッシュメモリ210が無効状態のキャッシュセグメント300を含むかどうか判断する(S700)。この判断は状態フィールド430を参照することで実現される。以降の説明において、あるキャッシュセグメント300の状態を判断する処理や、ある状態のキャッシュセグメント300がキャッシュメモリ210に含まれるか判断する処理、あるいはキャッシュセグメント300をある状態に遷移させる処理(設定する処理ともいう)は、状態フィールド430を参照または更新することで実現されるので説明を省略する。
キャッシュメモリ210が無効状態のキャッシュセグメント300を含むことを条件に(S700:YES)、キャッシュ制御部220は、そのキャッシュセグメント300を選択して、読み出したデータをキャッシュするために割り当てて、その選択したキャッシュセグメント300にメインメモリ200からデータを読み出し、そのキャッシュセグメント300の状態を保護状態に設定する(S710)。キャッシュセグメント300の割り当ては、例えば、読出しの要求されたメインメモリ200中のセクタの上位アドレスを、そのキャッシュセグメント300に対応する上位アドレスフィールド400に書き込むことによって実現される。また、この割り当てに応じ、キャッシュ制御部220は、そのキャッシュセグメント300に対応するLRU値を、未使用期間が最も短いことを示す値にリセットする。なお、メインメモリ200からキャッシュメモリ210へのこの読出しのことを、必要に応じて、キャッシュメモリ210からの読み出しと区別するためにキャッシュインと称する。
無効状態のキャッシュセグメント300が含まれていなければ(S700:NO)、キャッシュ制御部220は、キャッシュメモリ210が共有状態のキャッシュセグメント300を含むかどうか判断する(S720)。この判断時点で読出しのキャッシュミスが発生しているので、この判断の対象となるのは、読出しの要求されているデータではない他のデータを記憶するために割り当てられているキャッシュセグメント300である。共有状態のキャッシュセグメント300を含むことを条件に(S720:YES)、キャッシュ制御部220は、そのキャッシュセグメント300を選択して、読み出したデータをキャッシュするために割り当てて、その選択したキャッシュセグメント300にメインメモリ200からデータを読み出し、そのキャッシュセグメント300の状態を保護状態に設定する(S730)。この割り当てに応じ、キャッシュ制御部220は、そのキャッシュセグメント300に対応するLRU値を、未使用期間が最も短いことを示す値にリセットする。
次に、キャッシュセグメント300の割り当てに応じて、キャッシュ制御部220は、保護状態のキャッシュセグメント300が予め定められた基準数を超えたかどうかを判断する(S740)。超えた場合に(S740:YES)、キャッシュ制御部220は、保護状態の他のキャッシュセグメント300を選択して、共有状態に設定する(S750)。好ましくは、キャッシュ制御部220は、LRU値が最も長い未使用期間を示すキャッシュセグメント300を選択する。これにより、キャッシュメモリ210は、メインメモリと一致するデータを保持する1以上のキャッシュセグメントを、予め定められた基準数を上限に、保護状態に設定しておくことができる。
一方、キャッシュメモリ210が無効状態のキャッシュセグメント300も共有状態のキャッシュセグメント300も含んでいなければ(S720:NO)、キャッシュ制御部220は、キャッシュメモリ210が保護状態のキャッシュセグメント300を含むかどうか判断する(S760)。この判断時点で読出しのキャッシュミスが発生しているので、この判断の対象となるのは、読出しの要求されているデータではない他のデータを記憶するために割り当てられているキャッシュセグメント300である。保護状態のキャッシュセグメント300を含むことを条件に(S760:YES)、キャッシュ制御部220は、そのキャッシュセグメント300を、読み出したデータをキャッシュするために割り当てて、そのキャッシュセグメント300にメインメモリ200からデータを読み出し、そのキャッシュセグメント300の状態を保護状態のまま維持する(S770)。この割り当てに応じ、キャッシュ制御部220は、そのキャッシュセグメント300に対応するLRU値を、未使用期間が最も短いことを示す値にリセットする。
このように、キャッシュ制御部220は、読出しのキャッシュミスに応じ、ひとまず更新状態でないキャッシュセグメント300の中から新たに割り当てるべきキャッシュセグメント300を選択し、そのキャッシュセグメント300をデータ読出しのために新たに割り当てる。そして、その場合、キャッシュ制御部220は、遷移先の状態と同一状態の他のキャッシュセグメント300については、対応するLRU値を、より長い未使用期間を示す値に更新、例えばインクリメントする(S780)。例えば、遷移先の状態が保護状態ならば、キャッシュ制御部220は、新たに割り当てたそのキャッシュセグメント300以外の保護状態のキャッシュセグメント300に対応するLRU値のそれぞれを、より長い未使用期間を示す値に変更する。なお、元々保護状態にあるキャッシュセグメント300を割り当てに用いた場合には、割り当て前のそのキャッシュセグメント300のLRU値よりも未使用期間が短いキャッシュセグメント300についてのみ、そのLRU値を更新することが望ましい。これにより、LRU値が際限なく増加することを防ぎ、LRU値フィールド420のビット数を予め決定しておくことができる。
続いて、キャッシュ制御部220は、無効状態、共有状態および保護状態の何れのキャッシュセグメント300もキャッシュメモリ210に含まれていないことを条件に(S760:YES)、変更状態または修正状態にある何れかのキャッシュセグメント300を書き戻しの対象となるキャッシュセグメント300として選択する(S765)。具体的には、キャッシュ制御部220は、その選択したキャッシュセグメント300の無効セクタにメインメモリ200からデータを読み出したうえで、その選択したキャッシュセグメント300内のデータをメインメモリ200に書き戻す。変更状態および修正状態の何れのキャッシュセグメント300も存在する場合には、修正状態のキャッシュセグメント300が変更状態のキャッシュセグメント300よりも優先して書き戻しの対象となる。同一状態のキャッシュセグメント300の中ではLRU値がより長い未使用期間を示すキャッシュセグメント300が書き戻しの対象として選択される。LRU値の等しいキャッシュセグメント300は同時に書き戻しの対象となる。そして、キャッシュ制御部220は、書き戻した1又は複数のキャッシュセグメント300を共有状態に設定し、S700に処理を戻す。
図8は、S530における処理の詳細を示す。キャッシュ制御部220は、書込みの要求されたセクタの上位アドレスが、無効状態でない何れかのキャッシュセグメント300の上位アドレスと一致するかを判断する(S800)。何れのキャッシュセグメント300とも一致しないことを条件に(S800:NO)、キャッシュ制御部220は、保護状態でないキャッシュセグメント300の中から何れかのキャッシュセグメント300を選択して、書込み対象のセクタをキャッシュするために割り当て、変更状態に遷移させる(S810)。このように、書込みの要求されたセクタの上位アドレスが、無効状態でない何れのキャッシュセグメント300の上位アドレスとも一致しないことを、書込みのキャッシュミスの発生、あるいは、単に書込みのキャッシュミスと呼ぶ。
キャッシュ制御部220は、新たに割り当てるために選択したキャッシュセグメント300、または、上位アドレスの一致した無効状態でないキャッシュセグメント300にデータを書き込む(S820)。次に、キャッシュ制御部220は、データを書き込んだセクタを有効セクタに設定するべく、データを書き込んだキャッシュセグメント300に対応するセクタ情報フィールド410を更新する(S830)。次に、キャッシュ制御部220は、このセクタを有効セクタに設定したことによってこのキャッシュセグメント300中の全セクタが有効セクタになったかどうかに応じて、このキャッシュセグメント300の状態を遷移させる(S840)。この状態の遷移に応じて、キャッシュ制御部220は、このキャッシュセグメント300のLRU値を、最も未使用期間の短い値にリセットする。
そして、キャッシュ制御部220は、遷移先の状態と同一状態の他のキャッシュセグメント300については、対応するLRU値を、より長い未使用期間を示す値に更新する(S850)。なお、メインメモリ200への書込み単位が1つのキャッシュセグメント300ではなく、複数のキャッシュセグメント300を含むブロックである場合においては、同一ブロックに属するキャッシュセグメント300を同時に書き戻しの対象とするため、これらのキャッシュセグメント300のLRU値は同一であることが望ましい。このため、キャッシュ制御部220は更に次の手順でLRU値を更新することが望ましい。
キャッシュ制御部220は、新たにキャッシュセグメント300を割り当てて、そのキャッシュセグメント300を変更状態に遷移させた場合や、既に割り当てられていたキャッシュセグメント300に新たにデータを書き込んだ場合に、そのキャッシュセグメント300のLRU値を、最も未使用期間の短いことを示す値にリセットする。そして次に、キャッシュ制御部220は、このキャッシュセグメント300と同一のブロックのデータを記憶する、変更状態にある他のすべてのキャッシュセグメント300を選択する。そして、キャッシュ制御部220は、選択したキャッシュセグメント300のLRU値についても、最も未使用期間の短いことを示す値にリセットする。このようにすることで、同一のブロックについては同時に書き戻しの対象とし、書き戻しの必要回数を減少させて処理を全体として効率化できる。
図9aは、S810における処理の詳細を示す。図9bは、S810の処理において発生し得る状態遷移を示す。これらの図を参照して、S810における処理の詳細を説明する。まず、キャッシュ制御部220は、キャッシュメモリ210が無効状態のキャッシュセグメント300を含むかどうか判断する(S900)。キャッシュメモリ210が無効状態のキャッシュセグメント300を含むことを条件に(S900:YES)、キャッシュ制御部220は、そのキャッシュセグメント300を、書き込むデータをキャッシュするために割り当てて、そのキャッシュセグメント300の状態を変更状態に設定する(S910)。この割り当てに応じ、キャッシュ制御部220は、書込み対象以外のセクタを無効セクタに設定する。この時点ではメインメモリ200からのキャッシュインは行わない。
無効状態のキャッシュセグメント300が無ければ(S900:NO)、キャッシュ制御部220は、キャッシュメモリ210が共有状態のキャッシュセグメント300を含むかどうか判断する(S920)。この判断時点で書込みのキャッシュミスが発生しているので、この判断の対象となるのは、書込みの要求されているアドレスではなく他のアドレスのデータを記憶するために割り当てられているキャッシュセグメント300である。共有状態のキャッシュセグメント300を含むことを条件に(S920:YES)、キャッシュ制御部220は、そのキャッシュセグメント300を、書き込むデータをキャッシュするために割り当てて、そのキャッシュセグメント300の状態を変更状態に設定する(S930)。この時点ではメインメモリ200からのキャッシュインは行わない。
このように、この割り当ての時点ではメインメモリ200からのキャッシュインを行わず、後の書き戻し時点(例えばS765、S925またはS1310など)までキャッシュインを遅らせることで、読み出されるデータの量を低減して処理を効率化できる。
キャッシュメモリ210が共有状態のキャッシュセグメント300を複数含む場合には、そのうち割り当てに用いられるキャッシュセグメント300はLRU値に基づいて選択されてもよい。例えば、キャッシュ制御部220は、それらのキャッシュセグメント300のうち、LRU値が最も長い未使用期間を示すキャッシュセグメント300を選択して、書込みデータをキャッシュするために割り当てる。この割り当てに応じ、キャッシュ制御部220は、そのキャッシュセグメント300に対応するLRU値を、未使用期間が最も短いことを示す値にリセットする。
一方、キャッシュメモリ210が無効状態のキャッシュセグメント300も共有状態のキャッシュセグメント300も含んでいなければ(S920:NO)、キャッシュ制御部220は、変更状態または修正状態にある何れかのキャッシュセグメント300を選択して、そのキャッシュセグメント300の無効セクタにメインメモリ200からデータを読み出したうえで、そのデータをメインメモリ200に書き戻し、そのキャッシュセグメント300を共有状態に設定する(S925)。そして、キャッシュ制御部220は、そのキャッシュセグメント300を、書き込むデータをキャッシュするために割り当てて、そのキャッシュセグメント300の状態を変更状態に設定する(S930)。変更状態または修正状態のキャッシュセグメント300が複数ある場合には、変更状態よりも修正状態のキャッシュセグメント300が優先して選択され、同一状態のキャッシュセグメント300が複数ある場合にはLRU値が最も長い未使用期間を示すキャッシュセグメント300が選択される。
このように、キャッシュ制御部220は、書込みのキャッシュミスに応じて、保護状態でないキャッシュセグメントの中から選択したキャッシュセグメントを、書込みデータをキャッシュするために割り当てる。この結果、既にデータが読み出されて一旦保護状態に設定されたキャッシュセグメントについては、その後に書込みのキャッシュミスが連続した場合であっても、読出しのためのデータを保持するために書込みに対する書き換え(リプレース、置き換え、キャッシュアウト、あるいは、再割り当てとも称される)から保護することができる。
図10aは、S840における処理の詳細を示す。図10bは、S840の処理において発生し得る状態遷移を示す。まず、キャッシュ制御部220は、書き込みの対象が共有又は保護状態のキャッシュセグメント300であるか判断する(S1000)。共有または保護状態のキャッシュセグメント300であれば(S1000:YES)、キャッシュ制御部220は、そのキャッシュセグメント300の状態を修正状態に設定する(S1010)。この場合にはこのキャッシュセグメント300はその後も読出しのためのデータをキャッシュし続けることができる。また、キャッシュ制御部220は、そのキャッシュセグメント300の状態が共有状態でも保護状態でもなければ(S1000:NO)、その状態が変更状態かどうかを判断する(S1020)。変更状態でなければ(S1020:NO)、修正状態ということなので、キャッシュ制御部220は、そのキャッシュセグメント300の状態を修正状態のまま維持する(S1030)。もともと有効セクタのみを含むキャッシュセグメント300に新たに有効なデータを書き込んでも、有効セクタのみを含む状態には変わりがないからである。
一方、変更状態であれば(S1020:YES)、キャッシュ制御部220は、そのキャッシュセグメント300がまだ無効セクタを含むかどうか判断する(S1040)。即ち、この書込みによって全ての無効セクタに有効なデータが書き込まれたかどうかが判断される。無効セクタが含まれることを条件に(S1040:YES)、キャッシュ制御部220は、そのキャッシュセグメント300の状態を変更状態のまま維持する(S1050)。そのキャッシュセグメント300が無効セクタを含まないことを条件に(S1040:NO)、キャッシュ制御部220は、そのキャッシュセグメント300を修正状態に設定する(S1010)。
図11aは、S630における処理の詳細を示す。図11bは、S630の処理において発生し得る状態遷移を示す。読出しの要求されたアドレスがキャッシュセグメント300中の無効セクタであることを条件に、キャッシュ制御部220は、そのキャッシュセグメント300中のその無効セクタも含む全ての無効セクタにメインメモリ200からデータを読み出す(S1100)。これにより、読出しの連続性や局所性といった、一般的に知られるデータアクセスの性質を利用して、その後の読出しを高速化できる。この場合、そのキャッシュセグメント300に含まれる全てのセクタが有効セクタになるので、そのキャッシュセグメント300の状態は変更状態から修正状態に遷移する。
次に、キャッシュ制御部220は、そのキャッシュセグメント300のLRU値を、未使用期間が最も短いことを示す値に更新する(S1110)。キャッシュ制御部220は、他のキャッシュセグメント300のLRU値を、未使用期間がより長いことを示す値に更新する。これに加えて、キャッシュ制御部220は、全てのセクタを有効セクタとしたこのキャッシュセグメント300中のデータを、メインメモリ200に書き戻してもよい。この結果、このキャッシュセグメント300は、メインメモリ200と一致するデータを保持することを示す共有状態に遷移する。これに加えてさらに、このキャッシュセグメント300に保持されたデータを以降の読出しのために効果的に使用可能とさせるべく、キャッシュ制御部220は、このキャッシュセグメント300を保護状態に設定してもよい。この場合にはさらに、保護状態のキャッシュセグメント300の総数を基準数以下に維持する処理が必要となる。この処理は図7aのS740、S750およびS780を参照して説明した処理と略同一であるから説明を省略する。
図12aは、S640における処理の詳細を示す。図12bは、S640の処理において発生し得る状態遷移を示す。読出しの要求されたセクタがキャッシュセグメント300中の有効セクタであることを条件に、キャッシュ制御部220は、その有効セクタをデータ出力のために読み出したうえで(S1200)、以下の処理を行う。まず、キャッシュ制御部220は、そのキャッシュセグメント300の状態を判断する(S1210)。そのキャッシュセグメント300の状態が共有状態であることを条件に(S1210:共有)、キャッシュ制御部220は、そのキャッシュセグメント300を保護状態に設定して(S1230)、そのLRU値を最も短い未使用期間を示す値にリセットする。
この設定に応じ、キャッシュ制御部220は、保護状態のキャッシュセグメント300が予め定められた基準数を超えたかどうかを判断する(S1240)。超えた場合に(S1240:YES)、キャッシュ制御部220は、保護状態の他のキャッシュセグメント300の中から、LRU値が最も長い未使用期間を示すキャッシュセグメント300を選択して、共有状態に設定する(S1250)。そして、キャッシュ制御部220は、共有状態の他のキャッシュセグメント300のLRU値を、未使用期間がより長いことを示す値に更新する(S1260)。
一方、読出しの対象となったキャッシュセグメント300が保護状態であることを条件に(S1210:保護)、キャッシュ制御部220は、そのキャッシュセグメント300の状態を保護状態のまま維持する(S1220)。そして、キャッシュ制御部220は、保護状態の他のキャッシュセグメント300に対応するLRU値のそれぞれを、より長い未使用期間を示す値に更新する(S1225)。ここでも、キャッシュ制御部220は、アクセス前のキャッシュセグメント300よりも未使用期間が短い他のキャッシュセグメント300についてのみ、そのLRU値を更新することが望ましい。これにより、LRU値が際限なく増加することを防ぎ、LRU値フィールド420のビット数を予め決定しておくことができる。
一方、読出し他の対象となったキャッシュセグメント300が他の状態(変更又は修正状態)であることを条件に(S1210:それ以外)、キャッシュ制御部220は、そのキャッシュセグメント300の状態を変更状態又は修正状態のまま維持する(S1270)。そして、キャッシュ制御部220は、そのキャッシュセグメント300のLRU値を、未使用期間が最も短いことを示す値に更新し(S1280)、それと同一状態の他のキャッシュセグメント300のLRU値を、未使用期間がより長いことを示す値に更新する。
図13aは、S550における処理の詳細を示す。図13bは、S550の処理において発生し得る状態遷移を示す。キャッシュメモリ210にキャッシュされているがメインメモリ200に書き込まれていないデータを書き込むべき条件が成立した場合に、まず、キャッシュ制御部220は、書き戻すべきキャッシュセグメント300を、修正状態または変更状態のキャッシュセグメント300の中から選択する(S1300)。選択の優先順序は例えば次の通りである。まず、キャッシュ制御部220は、修正状態のキャッシュセグメント300をキャッシュメモリ210から検索する。複数検索された場合には、キャッシュ制御部220は、LRU値が最も未使用期間が長いことを示すキャッシュセグメント300を選択する。LRU値が同じ複数のキャッシュセグメント300があればそれらは同一のブロックに所属するので、それらはまとめて選択される。一方、修正状態のキャッシュセグメント300が検索されなければ、キャッシュ制御部220は、変更状態のキャッシュセグメント300を検索する。複数検索された場合には、キャッシュ制御部220は、LRU値が最も未使用期間が長いことを示すキャッシュセグメント300を選択する。LRU値が同じ複数のキャッシュセグメント300があればそれらは同一のブロックに所属するので、それらはまとめて選択される。
次に、キャッシュ制御部220は、選択したキャッシュセグメント300が変更状態かどうかを判断する(S1305)、変更状態であることを条件に(S1305:YES)、キャッシュ制御部220は、そのキャッシュセグメント300の無効セクタについてはメインメモリ200の対応するセクタからデータを取得する(S1310)。この時点でキャッシュセグメント300は修正状態に遷移する。そして、キャッシュ制御部220は、データを無効セクタのために取得したキャッシュセグメント300内、または、既に修正状態であったキャッシュセグメント300内のデータを、メインメモリ200に書き戻す(S1320)。そしてこの場合、キャッシュ制御部220は、このキャッシュセグメント300を共有状態に設定する。
以上、本実施の形態に沿って説明したように、記憶装置20によれば、書込みの処理速度が遅いメインメモリ200のために、同一のキャッシュセグメントに対する複数回の書込みをキャッシュして、その後にそれらをまとめてメインメモリ200に書き戻すことができる。また、一旦読出しの対象となったキャッシュセグメントを、その後の書込みによりリプレースの対象とならない保護状態に設定することで、書込みが連続した場合であっても読出しのためのデータを保持し続けることができる。これにより、読出しおよび書込みのためのキャッシュメモリを別々に設けなくとも、読出し処理の効率を低下させることなく書込みの処理速度を大幅に向上させることができ、結果として記憶装置20へのアクセスを総合的に効率化できる。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることのできることが当業者にとって明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
図1は、本実施の形態に係るコンピュータ10の全体構成を示す。 図2は、記憶装置20の機能構成を示す。 図3は、キャッシュメモリ210のデータ構造の概略を示す。 図4は、タグ310のデータ構造の一例を示す。 図5は、キャッシュ制御部220による処理のフローチャートを示す。 図6は、S510における処理の詳細を示す。 図7aは、S610における処理の詳細を示す。 図7bは、S610の処理において発生し得る状態遷移を示す。 図8は、S530における処理の詳細を示す。 図9aは、S810における処理の詳細を示す。 図9bは、S810の処理において発生し得る状態遷移を示す。 図10aは、S840における処理の詳細を示す。 図10bは、S840の処理において発生し得る状態遷移を示す。 図11aは、S630における処理の詳細を示す。 図11bは、S630の処理において発生し得る状態遷移を示す。 図12aは、S640における処理の詳細を示す。 図12bは、S640の処理において発生し得る状態遷移を示す。 図13aは、S550における処理の詳細を示す。 図13bは、S550の処理において発生し得る状態遷移を示す。
符号の説明
10 コンピュータ
20 記憶装置
200 メインメモリ
210 キャッシュメモリ
220 キャッシュ制御部
225A ホスト側回路
225B メモリ側回路
300 セグメント
310 タグ
320 セクタ
400 上位アドレスフィールド
410 セクタ情報フィールド
420 LRU値フィールド
430 状態フィールド
1000 CPU

Claims (17)

  1. メインメモリから読み出したデータ、および、メインメモリに書き込むデータをキャッシュする記憶装置であって、
    複数のキャッシュセグメントを有し、メインメモリと一致しておらず、メインメモリに書き込むべきデータを含む状態のキャッシュセグメントを更新状態に設定され、メインメモリと一致するデータを保持する1以上のキャッシュセグメントを、予め定められた基準数を上限に、置き換えから保護される状態である保護状態に設定されているキャッシュメモリと、
    キャッシュセグメントの状態を制御するキャッシュ制御部と
    を備え、
    前記キャッシュ制御部は、
    書込みのキャッシュミスに応じ、保護状態でないキャッシュセグメントの中から選択したキャッシュセグメントを、書込みデータをキャッシュするために割り当てて、その選択したキャッシュセグメントにデータを書き込み、
    読出しのキャッシュミスに応じ、更新状態でないキャッシュセグメントの中から選択したキャッシュセグメントをメインメモリから読み出したデータをキャッシュするために割り当てて、割り当てた当該キャッシュセグメントにメインメモリから読み出したデータをキャッシュすると共に割り当てた当該キャッシュセグメントを保護状態に設定し、更に、保護状態のキャッシュセグメントが前記基準数を超えたことを条件に、割り当てた当該キャッシュセグメント以外の保護状態のキャッシュセグメントを選択して、メインメモリと一致しているが書込みに対しリプレースされ得る状態である共有状態に設定する記憶装置。
  2. 前記キャッシュ制御部は、保護状態のキャッシュセグメントが前記基準数を超えたことを条件に、保護状態のキャッシュセグメントの中から、未使用の期間を示す指標値であるLRU値が最も長い期間を示すキャッシュセグメントを選択して、共有状態に設定する
    請求項1に記載の記憶装置。
  3. 前記キャッシュ制御部は、読出しのキャッシュミスに応じ、さらに、割り当てたそのキャッシュセグメント以外の保護状態のキャッシュセグメントに対応するLRU値のそれぞれを、より長い未使用期間を示す値に更新する
    請求項1または2に記載の記憶装置。
  4. 前記キャッシュ制御部は、読出しのキャッシュヒットに応じ、さらに、読出しの対象が保護状態のキャッシュセグメントであることを条件に、保護状態の他のキャッシュセグメントに対応するLRU値のそれぞれを、より長い未使用期間を示す値に更新する
    請求項1から3のいずれか1項に記載の記憶装置。
  5. それぞれのキャッシュセグメントは、有効なデータを含まない状態である無効状態、保護状態、メインメモリと一致しているが書込みに対しリプレースされ得る状態である共有状態、および、メインメモリに書き込むべきデータを含む状態である更新状態、を少なくとも含む、複数の状態の何れかであり、
    前記キャッシュ制御部は、書込みのキャッシュミスに応じ、無効状態のキャッシュセグメントがあればそのキャッシュセグメントを選択し、無効状態のキャッシュセグメントが無く共有状態のキャッシュセグメントがあればそのキャッシュセグメントを選択し、共有状態のキャッシュセグメントが無ければ更新状態のキャッシュセグメント内のデータをメインメモリに書き戻してからそのキャッシュセグメントを選択して、書込みデータをキャッシュするために割り当てる
    請求項1から4のいずれか1項に記載の記憶装置。
  6. 前記キャッシュ制御部は、書込みのキャッシュミスに応じ、共有状態のキャッシュセグメントがあればそれらのキャッシュセグメントのうち、未使用の期間を示す指標値であるLRU値がもっとも長い未使用期間を示すキャッシュセグメントを選択し、共有状態のキャッシュセグメントが無ければ更新状態のキャッシュセグメントのうちLRU値が最も長い未使用期間を示す少なくとも1つのキャッシュセグメント内のデータを書き戻してからそのうちの1つのキャッシュセグメントを選択する
    請求項1から5のいずれか1項に記載の記憶装置。
  7. 前記キャッシュ制御部は、選択した更新状態のキャッシュセグメントを、書込みデータをキャッシュするために割り当てたことを条件に、その割り当てたキャッシュセグメントのLRU値をリセットし、更新状態にある他のキャッシュセグメントのLRU値のそれぞれを、より長い未使用期間を示す値に更新する
    請求項1から6のいずれか1項に記載の記憶装置。
  8. 前記メインメモリは、ブロック単位で書き込みをすることができ、
    ブロックは、複数のキャッシュセグメントに対応しており、
    前記キャッシュ制御部は、選択した更新状態のキャッシュセグメントを、書込みデータをキャッシュするために割り当てたことを条件に、その割り当てたキャッシュセグメントのLRU値をリセットすると共に、さらに、その割り当てたキャッシュセグメントと同一のブロックのデータを記憶する、更新状態にある他のキャッシュセグメントのLRU値をリセットする
    請求項1から7のいずれか1項に記載の記憶装置。
  9. 前記キャッシュ制御部は、書込みのキャッシュヒットに応じ、書込みの対象が保護状態のキャッシュセグメントであることを条件に、そのキャッシュセグメントにデータを書込むと共に、メインメモリに書き込むべきデータを含む状態である更新状態にそのキャッシュセグメントを設定する
    請求項1から8のいずれか1項に記載の記憶装置。
  10. 前記メインメモリを更に備える請求項1から9のいずれか1項に記載の記憶装置。
  11. 前記メインメモリとして、フラッシュメモリを備える請求項1から10のいずれか1項に記載の記憶装置。
  12. 前記メインメモリとして、ハードディスクドライブ、光磁気ディスクドライブ、および、テープドライブの少なくとも1つを備える請求項1から10のいずれか1項に記載の記憶装置。
  13. それぞれのキャッシュセグメントは、複数のセクタを含み、
    前記キャッシュメモリは、それぞれのキャッシュセグメントに対応付けて、割り当てられているメインメモリ中のセグメントの最上位から予め定められた桁数のアドレス値、および、含んでいる各セクタが有効なデータを含むかどうかを示すセクタ情報、を記憶しており、
    前記キャッシュ制御部は、書込みの要求されるアドレスの最上位から予め定められた桁数のアドレス値が、前記キャッシュメモリに記憶されている何れのアドレス値にも一致しないことを条件に、書込みのキャッシュミスと判断し、アドレス値の一致するキャッシュセグメントにおいて対応するセクタが有効なデータを含まないことを条件に、そのセクタにデータを書き込む
    請求項1に記載の記憶装置。
  14. 前記キャッシュメモリは、それぞれのキャッシュセグメントに対応付けて、さらに、そのキャッシュセグメントの状態、および、そのキャッシュセグメントの未使用の期間を示す指標値であるLRU値を記憶しており、
    前記キャッシュ制御部は、ある状態のキャッシュセグメントを他の状態に変更する場合において、その状態のキャッシュセグメントのうちLRU値が最も長い期間を示すキャッシュセグメントを選択して、当該他の状態に変更する
    請求項13に記載の記憶装置。
  15. それぞれのキャッシュセグメントは複数のセクタを含み、
    前記キャッシュ制御部は、セクタへの書込みがキャッシュミスしたことを条件に、前記複数のキャッシュセグメントの中から選択したキャッシュセグメントを、書込み対象のセクタをキャッシュするために割り当てて、書込み対象以外のセクタを無効セクタに設定し、
    その選択したキャッシュセグメントをメインメモリに書き戻す場合において、その選択したキャッシュセグメントの無効セクタについてはメインメモリの対応するセクタからデータを取得してから、その選択したキャッシュセグメント内のデータをメインメモリに書き戻す、
    請求項1に記載の記憶装置。
  16. 電子回路によりキャッシュメモリの動作を制御する方法であって、
    キャッシュメモリは、複数のキャッシュセグメントを有し、メインメモリと一致しておらず、メインメモリに書き込むべきデータを含む状態のキャッシュセグメントを更新状態に設定され、メインメモリと一致するデータを保持する1以上のキャッシュセグメントを、予め定められた基準数を上限に、置き換えから保護される状態である保護状態に設定されており、
    キャッシュセグメントの状態を制御する電子回路のキャッシュ制御部が、
    書込みのキャッシュミスに応じ、保護状態でないキャッシュセグメントの中から選択したキャッシュセグメントを、書込みデータをキャッシュするために割り当てて、その選択したキャッシュセグメントにデータを書き込むステップ
    読出しのキャッシュミスに応じ、更新状態でないキャッシュセグメントの中から選択したキャッシュセグメントをメインメモリから読み出したデータをキャッシュするために割り当てるステップと、
    割り当てた当該キャッシュセグメントにメインメモリから読み出したデータをキャッシュすると共に割り当てた当該キャッシュセグメントを保護状態に設定するステップと、
    保護状態のキャッシュセグメントが前記基準数を超えたことを条件に、割り当てた当該キャッシュセグメント以外の保護状態のキャッシュセグメントを選択して、メインメモリと一致しているが書込みに対しリプレースされ得る状態である共有状態に設定するステップと
    を備えた方法。
  17. 込みのキャッシュヒットに応じ、
    電子回路のキャッシュ制御部が、書込みの対象が保護状態のキャッシュセグメントであることを条件に、そのキャッシュセグメントにデータを書込むと共に、メインメモリに書き込むべきデータを含む状態である更新状態にそのキャッシュセグメントを設定するステップを更に備えた請求項16に記載の方法。
JP2007110453A 2007-04-19 2007-04-19 データをキャッシュする技術 Expired - Fee Related JP5083757B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007110453A JP5083757B2 (ja) 2007-04-19 2007-04-19 データをキャッシュする技術
US12/037,689 US8112589B2 (en) 2007-04-19 2008-02-26 System for caching data from a main memory with a plurality of cache states

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007110453A JP5083757B2 (ja) 2007-04-19 2007-04-19 データをキャッシュする技術

Publications (2)

Publication Number Publication Date
JP2008269224A JP2008269224A (ja) 2008-11-06
JP5083757B2 true JP5083757B2 (ja) 2012-11-28

Family

ID=39873384

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007110453A Expired - Fee Related JP5083757B2 (ja) 2007-04-19 2007-04-19 データをキャッシュする技術

Country Status (2)

Country Link
US (1) US8112589B2 (ja)
JP (1) JP5083757B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI384488B (zh) * 2007-12-24 2013-02-01 Skymedi Corp Nonvolatile storage device and its data writing method
US8627015B2 (en) * 2009-07-31 2014-01-07 Emc Corporation Data processing system using cache-aware multipath distribution of storage commands among caching storage controllers
EP2761386B1 (en) 2011-09-30 2017-09-06 Intel Corporation Managing sideband segments in on-die system fabric
US8934332B2 (en) * 2012-02-29 2015-01-13 International Business Machines Corporation Multi-threaded packet processing
WO2015047314A1 (en) * 2013-09-27 2015-04-02 Intel Corporation Techniques to compose memory resources across devices
CN103778007B (zh) * 2014-02-14 2018-06-08 北京猎豹移动科技有限公司 一种应用管理方法及装置
JP2016028319A (ja) * 2014-07-08 2016-02-25 富士通株式会社 アクセス制御プログラム、アクセス制御装置及びアクセス制御方法
US10055139B1 (en) * 2016-03-31 2018-08-21 EMC IP Holding Company LLC Optimized layout in a two tier storage
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5432919A (en) * 1989-07-06 1995-07-11 Digital Equipment Corporation Sequential reference management for cache memories
JPH06282488A (ja) * 1993-03-25 1994-10-07 Mitsubishi Electric Corp キャッシュ記憶装置
JPH0816885B2 (ja) * 1993-04-27 1996-02-21 工業技術院長 キャッシュメモリ制御方法
JP3279253B2 (ja) * 1998-05-27 2002-04-30 日本電気株式会社 キャッシュページの管理方法およびキャッシュページの管理プログラムを記憶した媒体
US8261022B2 (en) * 2001-10-09 2012-09-04 Agere Systems Inc. Method and apparatus for adaptive cache frame locking and unlocking
JP2003316648A (ja) * 2002-04-24 2003-11-07 Toshiba Corp キャッシュメモリ装置
US6901483B2 (en) * 2002-10-24 2005-05-31 International Business Machines Corporation Prioritizing and locking removed and subsequently reloaded cache lines
US7526599B2 (en) * 2002-10-28 2009-04-28 Sandisk Corporation Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system
US7254681B2 (en) * 2003-02-13 2007-08-07 Intel Corporation Cache victim sector tag buffer
JP2004303232A (ja) 2003-03-20 2004-10-28 Matsushita Electric Ind Co Ltd データメモリキャッシュ装置及びデータメモリキャッシュシステム
JP4765249B2 (ja) * 2003-11-18 2011-09-07 セイコーエプソン株式会社 情報処理装置およびキャッシュメモリ制御方法
JP2005301387A (ja) * 2004-04-07 2005-10-27 Matsushita Electric Ind Co Ltd キャッシュメモリ制御装置およびキャッシュメモリ制御方法
KR100577384B1 (ko) * 2004-07-28 2006-05-10 삼성전자주식회사 페이지 정보를 이용한 페이지 대체 방법

Also Published As

Publication number Publication date
US8112589B2 (en) 2012-02-07
US20080263282A1 (en) 2008-10-23
JP2008269224A (ja) 2008-11-06

Similar Documents

Publication Publication Date Title
JP5083757B2 (ja) データをキャッシュする技術
US11893238B2 (en) Method of controlling nonvolatile semiconductor memory
US8443144B2 (en) Storage device reducing a memory management load and computing system using the storage device
JP4412676B2 (ja) メインメモリに書き込むデータをキャッシュする技術
TWI627536B (zh) 用於具有調適分割之一共用快取之系統及方法
US8392476B2 (en) Semiconductor memory device
KR100823171B1 (ko) 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법
US8407418B2 (en) Information processing apparatus and driver
US8639881B2 (en) Information processing apparatus and driver
TWI709854B (zh) 資料儲存裝置及用於存取邏輯至物理位址映射表之方法
JP6139381B2 (ja) メモリシステムおよび方法
JP2011128998A (ja) 半導体記憶装置
US11526296B2 (en) Controller providing host with map information of physical address for memory region, and operation method thereof
JP2010152909A (ja) 不揮発性半導体メモリドライブ装置、情報処理装置および不揮発性半導体メモリドライブ装置における記憶領域の管理方法
CN111338561B (zh) 存储器控制器与存储器页面管理方法
KR20190052546A (ko) 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법
JP2012128815A (ja) メモリシステム
KR20170109133A (ko) 하이브리드 메모리 장치 및 그의 데이터 관리 방법
US11669264B2 (en) Method for improving trim command response time
US7089394B2 (en) Optimally mapping a memory device
US20130173855A1 (en) Method of operating storage device including volatile memory and nonvolatile memory
JP4963088B2 (ja) データをキャッシュする技術
KR102267477B1 (ko) 스토리지 장치 및 이의 동작 방법
JP2022063466A (ja) メモリシステム及び情報処理システム
JP2012078939A (ja) 情報処理装置およびキャッシュ制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120522

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120719

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120807

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20120808

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120828

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150914

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees