JP2017010396A - ストレージ装置、キャッシュ書込制御方法及びキャッシュ書込制御プログラム - Google Patents

ストレージ装置、キャッシュ書込制御方法及びキャッシュ書込制御プログラム Download PDF

Info

Publication number
JP2017010396A
JP2017010396A JP2015126942A JP2015126942A JP2017010396A JP 2017010396 A JP2017010396 A JP 2017010396A JP 2015126942 A JP2015126942 A JP 2015126942A JP 2015126942 A JP2015126942 A JP 2015126942A JP 2017010396 A JP2017010396 A JP 2017010396A
Authority
JP
Japan
Prior art keywords
data
write
area
cache
unit area
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.)
Pending
Application number
JP2015126942A
Other languages
English (en)
Inventor
識実 工藤
Satomi Kudo
識実 工藤
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015126942A priority Critical patent/JP2017010396A/ja
Priority to US15/139,389 priority patent/US20160378656A1/en
Publication of JP2017010396A publication Critical patent/JP2017010396A/ja
Pending legal-status Critical Current

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/0893Caches characterised by their organisation or structure
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc

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)

Abstract

【課題】スループットを向上させつつ、ヒット率を確保し、システム性能を向上させるストレージ装置、キャッシュ書込制御方法及びキャッシュ書込制御プログラムを提供する。【解決手段】条件判定部108は、2次キャッシュ112の書込単位領域の一部へ書込データを書き込む場合、書込先の書込単位領域が2次キャッシュ112の管理単位領域をまたぐか否かを判定し、書込先の書込単位領域が管理単位領域をまたぐ場合、書込先の書込単位領域における書込データが書き込まれない非更新領域を含む管理単位領域の利用状況を基に、非更新領域の既格納データを保持するか否かを判定する。2次キャッシュ読書制御部107は、条件判定部108により既格納データを保持すると判定された場合、既格納データを保持しつつ書込データを書込先の管理単位領域へ書き込む。【選択図】図3

Description

本発明は、ストレージ装置、キャッシュ書込制御方法及びキャッシュ書込制御プログラムに関する。
近年、ストレージシステムなどにおいて、SSD(Solid State Drive)などのNAND型フラッシュメモリを2次キャッシュとして使用し、I/O(Input/Output)性能の向上を図るシステムが増加している。
このようなストレージシステムの一例として、ホスト及びストレージ装置を有するシステムがある。ホストは、サーバなどの情報処理装置である。ホストは、ストレージ装置に対して書込要求や読出要求といったI/O要求を発光する。
そして、ストレージ装置は、DRAM(Dynamic Random Access Memory)、NAND型フラッシュメモリ及びディスクを有する。DRAMは、1次キャッシュとして用いられる。また、ディスクは、ハードディスクなどのユーザデータを格納する補助記憶装置である。ディスクは、複数のハードディスクで構成された論理ユニット(Logical Unit)であってもよい。さらに、NAND型フラッシュメモリは、ディスクなどに比べて速度が速いため、2次キャッシュとして用いられる。
2次キャッシュへのデータの書き込み処理は2種類ある。1つは、ディスクから2次キャッシュへ新規にデータを書き込む処理である。ディスクから読み出したデータを1次キャッシュ及び2次キャッシュに書き込むことを「ステージング」という。
ステージングを行う場合、1次キャッシュ及び2次キャッシュ上では、データは、チャンク(Chunk)という単位で管理されることが多い。チャンクとは、連続なデータのまとまりの単位である。そして、1次キャッシュと2次キャッシュとでデータの管理単位のサイズが異なる場合がある。
具体的には、1次キャッシュは、高価であり容量が小さいことが一般的であるため、ステージングが効率的になるようにチャンクサイズは小さく設定されている場合が多い。一方、2次キャッシュの場合、1次キャッシュと比べて容量が大きいので、要求データの周辺部分も多くステージングしておくことが可能であり、そのため、チャンクサイズは、1次キャッシュよりも大きく設定される場合が多い。
ステージングの場合、2次キャッシュへの書き込みサイズは2次キャッシュのチャンクサイズもしくはその整数倍である。
もう一つは、ホストからの命令により、キャッシュ上の既存のデータを書き直してステージング状態を延長する処理である。この場合、ホストから送られた書込データは、まず1次キャッシュ上に書き込まれる。その後、書き込まれた1次キャッシュの領域に対応する領域が2次キャッシュ上に存在していれば、1次キャッシュと2次キャッシュとの間のデータの整合性を保つために1次キャッシュへのデータの書き込みが2次キャッシュに反映される。この場合の書き込みサイズは、2次キャッシュのチャンクサイズ以下となることが多い。
ここで、1次キャッシュへの書き込みは、ホストからのI/Oの単位サイズで行うことができる。ホストからのI/Oの単位サイズは、ディスクの論理ブロックサイズにあたる。例えば、ディスクの論理ブロックサイズは、多くのOS(Operating System)では、512バイトであり、ECC(Error Checking and Correction)などの保護情報を含む場合は、520バイトである。
一方、2次キャッシュとして使用されるNAND型フラッシュメモリでは、データの書き込みはNAND型フラッシュメモリのページ単位で行われる。ページは、例えば、4KB、8KB等といった2の累乗の値である。ページサイズ及びその整数倍とは異なるサイズのデータをNAND型フラッシュメモリに書きこむためには、以下に説明するRead Modify Writeの処理が行われる。ページサイズ及びその整数倍とは異なるサイズのデータの書き込みは、「非ページアライメントでのデータの書き込み」と呼ばれる場合がある。
ここで、Read Modify Writeの処理について説明する。非ページアライメントでのデータの書き込みの場合、2次キャッシュの何れかのページにおいて一部のデータが変更される。この場合、2次キャッシュではページ単位で書き込みが行われるため、単に更新データをそのページに書き込もうとすると、そのページに格納されている更新データ以外の隣接データが破壊されてしまう。そこで、一度ページの内容をRead Modify Write用バッファに読み出し、そのバッファ上で更新データと読み出したページの内容とをマージし、その後、マージしたデータをページに書き込む処理が行われる。このように一度2次キャッシュのページからデータを読み出し、新しいデータとマージした上で再度ページに戻す処理が、Read Modify Writeの処理である。このように、Read Modify Writeの処理を行うと、隣接データの破壊を防ぐことができる。
なお、1次及び2次キャッシュを有する技術として、1次キャッシュの最長時間未使用リストが一杯の場合、リストをスキャンして破棄することができる未修整のデータを特定し、修正データがあった場合にはリストの端部へ移動する従来技術がある。また、NAND型フラッシュメモリとDRAMとを有する情報処理装置の従来技術がある。
特開2007−141225号公報 特開2009−211232号公報
しかしながら、Read Modify Writeの処理を行った場合、2次キャッシュへのアクセス回数は、読み出し及び書き込みの2回となる。そのため、2次キャッシュへのアクセス量が増加し、2次キャッシュ全体のスループットが低下してしまう。
この点、2次キャッシュは1次キャッシュよりも大きなチャンクを使用して広範囲のデータを一括でステージングするため、データの中には実際にはホストからのアクセスが少ないデータが存在する。このようなデータの維持するためにRead Modify Writeの処理を行うことはスループット低下の一因である。このように、2次キャッシュにおいて、Read Modify Writeの処理を常に行って、全てのデータを維持することは効率的ではない場合がある。
ただし、常にRead Modify Writeの処理を行わずに、書込データの隣接データを破棄すればスループットの低下を抑えることはできるが、2次キャッシュの有効なデータが減ってしまう。そのため、2次キャッシュのヒット率が低下し、システム全体としての性能は低下してしまう。
開示の技術は、上記に鑑みてなされたものであって、スループットを向上させつつ、ヒット率を確保し、システム性能を向上させるストレージ装置、キャッシュ書込制御方法及びキャッシュ書込制御プログラムを提供することを目的とする。
本願の開示するストレージ装置、キャッシュ書込制御方法及びキャッシュ書込制御プログラムは、一つの態様において、キャッシュは、書込単位領域毎に1回のデータの書き込みが行われ、且つ、管理単位領域毎に書き込まれたデータが管理される。判定部は、前記キャッシュの特定の書込単位領域の一部へ書込データを書き込む場合、前記特定の書込単位領域が前記キャッシュの前記管理単位領域をまたぐか否かを判定し、前記特定の書込単位領域が前記管理単位領域をまたぐ場合、前記特定の書込単位領域における前記書込データが書き込まれない非更新領域を含む前記管理単位領域の利用状況を基に、前記非更新領域の既格納データを保持するか否かを判定する。書込部は、前記判定部により前記既格納データを保持すると判定された場合、前記既格納データを保持しつつ前記書込データを前記特定の管理単位領域へ書き込む。
本願の開示するストレージ装置、キャッシュ書込制御方法及びキャッシュ書込制御プログラムの一つの態様によれば、スループットを向上させつつ、ヒット率を確保し、システム性能を向上させることができるという効果を奏する。
図1は、ストレージ装置のハードウェア構成図である。 図2は、ストレージ装置におけるソフトウェア構成図である。 図3は、実施例1に係るストレージ装置のブロック図である。 図4は、1次キャッシュ管理テーブルの一例の図である。 図5は、2次キャッシュ管理テーブルの一例の図である。 図6Aは、アクセス回数を基に算出される優先度と2次キャッシュの領域との関係の一例を表す図である。 図6Bは、アクセス回数を基に算出される優先度と2次キャッシュの領域との関係の他の例を表す図である。 図7Aは、リードモディファイライト処理を実行する場合の動作を説明するための図である。 図7Bは、隣接チャンク領域を無効にした上でのデータ書き込みの動作を説明するための図である。 図8は、ページアライメントの場合のデータの書き込みについて説明するための図である。 図9は、リードモディファイライト処理を実行する場合のデータの書き込みについて説明するための図である。 図10は、隣接チャンク領域の優先度が閾値よりも高いのでリードモディファイライト処理を行う場合について説明するための図である。 図11は、隣接チャンク領域を無効としたうえでのデータの書き込みについて説明するための図である。 図12は、1つの対象領域に含まれるページに対する非ページアライメントのデータ書き込みについて説明するための図である。 図13は、隣接チャンク領域が無効にされた上でデータの書き込みが行われた場合の各管理テーブルの遷移を表す図である。 図14は、実施例1に係るストレージ装置によるライトアクセス延長時のデータ書き込み処理のフローチャートである。 図15は、実施例2に係るストレージ装置のブロック図である。 図16は、実施例2に係るストレージ装置によりライトアクセス延長時のデータ書き込み処理のフローチャートである。
以下に、本願の開示するストレージ装置、キャッシュ書込制御方法及びキャッシュ書込制御プログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示するストレージ装置、キャッシュ書込制御方法及びキャッシュ書込制御プログラムが限定されるものではない。
図1は、ストレージ装置のハードウェア構成図である。ストレージ装置1は、図1に示すように、コントローラ10、ディスク20及びNAND型フラッシュメモリ30を有する。
コントローラ10は、ストレージ装置1におけるデータの読み出し及び書き込みを管理する。コントローラ10は、CPU(Central Processing Unit)11、DRAM12、バススイッチ13及びアダプタ14を有する。ホスト2は、例えばサーバなどの情報処理装置である。
CPU11は、ストレージ装置1における演算処理装置である。CPU11は、チャネルアダプタ15及びバススイッチ13を経由してホスト2に接続する。そして、CPU11は、ホスト2との間でデータや命令の送受信を行う。
さらに、CPU11は、ホスト2からの命令を受けるなどして、ストレージ装置1におけるデータの読み出し及び書き込みの制御を行う。例えば、CPU11は、キャッシュを制御するためのアプリケーションを実行し動作させる。また、例えば、CPU11は、キャッシュを動作させるためのドライバ及びファームウェアなどを実行し動作させる。
DRAM12は、データの読み出し及び書き込みの高速化のために、ホスト2に対するデータの読み出し及び書き込みの際に、一時的にデータを格納する1次キャッシュの機能を有する。DRAM12のデータの読み出し及び書き込みは、ホスト2からのIOの単位サイズ、すなわちディスク20の論理ブロックサイズで行われる。
バススイッチ13は、CPU11からの指示を受けて、CPU11から接続するバスの経路をディスク20又はNAND型フラッシュメモリ30の何れかに切り替える。このように、実際には、CPU11からディスク20又はNAND型フラッシュメモリ30への接続はバススイッチ13を介して行われるが、以下の説明では、バススイッチ13の切り替え及び仲介を省略して説明する場合がある。
アダプタ14は、CPU11から延びるバスをディスク20へ接続するためのアダプタである。これについても、実際にはCPU11は、アダプタ14を介してディスク20とデータの送受信を行うが、以下の説明では、アダプタ14の仲介を省略して説明する場合がある。
ディスク20は、ハードディスクなどの補助記憶装置である。NAND型フラッシュメモリ30は、例えばSSDであり、データの読み出し及び書き込みの高速化のために一時的にデータを格納する2次キャッシュの機能を有する。
NAND型フラッシュメモリ30では、データの読み出しは、DRAM12と同様にディスク20の論理ブロックサイズで行われる。一方、データの書き込みは、NAND型フラッシュメモリ30では、ページ単位で行われる。さらに、NAND型フラッシュメモリ30は、データの消去はページが複数集まったブロックという単位で行われる。このNAND型フラッシュメモリ30におけるページが、「書込単位領域」の一例にあたる。NAND型フラッシュメモリ30では、全てのデータの格納領域が無効となったブロックにおいて、データの削除が行われる。
次に、図2を参照して、ストレージ装置1において動作し、データの読み出し及び書き込みを行う各種ソフトウェアについて説明する。図2は、ストレージ装置におけるソフトウェア構成図である。
図1のCPU11は、図2に示す、キャッシュ制御アプリケーション91、2次キャッシュドライバ92及びディスクドライバ93を実行し動作させる。キャッシュ制御アプリケーション91、2次キャッシュドライバ92及びディスクドライバ93を実現する各種プログラムは、例えばディスク20に格納されている。
キャッシュ制御アプリケーション91は、DRAM12で実現される1次キャッシュ及びNAND型フラッシュメモリ30で実現される2次キャッシュの制御を行う。例えば、キャッシュ制御アプリケーション91は、1次キャッシュ及び2次キャッシュの管理テーブルを管理する。具体的には、キャッシュ制御アプリケーション91は、管理テーブルを用いて1次キャッシュ及び2次キャッシュのデータ格納領域の有効無効を管理する。例えば、データの読み出しを行う場合、キャッシュ制御アプリケーション91は、管理テーブルを用いて1次キャッシュ及び2次キャッシュで読み出しデータがヒットするか否かを判定する。
また、キャッシュ制御アプリケーション91は、ホスト2からの指示を受けて1次キャッシュに対するデータの読み出し及び書き込みを行う。また、キャッシュ制御アプリケーション91は、ホスト2からの指示を受けて、ディスク20に対するデータの読み出し及び書き込みの命令をディスクドライバ93へ送信する。
また、キャッシュ制御アプリケーション91は、ホスト2からの指示を受けて、2次キャッシュに対するデータの読み出し及び書き込みの命令を2次キャッシュドライバ92へ送信する。この場合、キャッシュ制御アプリケーション91は、2次キャッシュに対するデータの書き込み先を決定する。例えば、キャッシュ制御アプリケーション91は、全ての領域が無効となった2次キャッシュのチャンク又はLRU(Least Recently Used)管理により最も古く参照された2次キャッシュのチャンクに新たなデータの書き込み先として決定する。
2次キャッシュドライバ92は、NAND型フラッシュメモリ30に対するデータの読み書きの命令をキャッシュ制御アプリケーション91から受ける。そして、2次キャッシュドライバ92は、受信した命令にしたがって、NAND型フラッシュメモリ30に対するデータの読み書きを行う。
さらに、後述するように、2次キャッシュドライバ92は、データの書き込み時に、NAND型フラッシュメモリ30により実現される2次キャッシュにおける各チャンクの優先度を求める。そして、2次キャッシュドライバ92は、求めた優先度に応じてデータの書き込みを行うページを含むチャンクのデータを破棄するか、リードモディファイライト処理を実行するかを決定する。
ディスクドライバ93は、ディスク20に対するデータの読み書きの命令をキャッシュ制御アプリケーション91から受ける。そして、ディスクドライバ93は、受信した命令にしたがって、ディスク20に対するデータの読み書きを行う。
次に、図3を参照して、ストレージ装置1におけるDRAM12及びNAND型フラッシュメモリ30に対するデータの読み出し及び書き込みについて詳細に説明する。図3は、実施例1に係るストレージ装置のブロック図である。
本実施例に係るストレージ装置1は、図3に示すように、統括制御部101、テーブル管理部102、1次キャッシュ管理テーブル103、2次キャッシュ管理テーブル104及び優先度算出部105を有する。また、ストレージ装置1は、1次キャッシュ読書制御部106、2次キャッシュ読書制御部107、条件判定部108、ディスク読書制御部109を有する。さらに、ストレージ装置1は、1次キャッシュ111、2次キャッシュ112、リードモディファイライト用バッファ113及びディスク20を有する。
図2に示したキャッシュ制御アプリケーション91が、統括制御部101、テーブル管理部102、優先度算出部105及び一次キャッシュ読書制御部106の機能を実現する。また、2次キャッシュドライバ92が、2次キャッシュ読書制御部107及び条件判定部108の機能を実現する。
また、1次キャッシュ111及びリードモディファイライト用バッファ113は、DRAM12により実現される。さらに、1次キャッシュ管理テーブル103及び2次キャッシュ管理テーブル104は、DRAM12に格納される。また、2次キャッシュ112はNAND型フラッシュメモリ30により実現される。
図4は、1次キャッシュ管理テーブルの一例の図である。1次キャッシュ管理テーブル103は、論理ブロック毎に有効フラグ及びDirtyフラグが登録されている。図4におけるLBA(Logical Block Address)が、論理ブロックの識別情報を表す。有効フラグは、対応する論理ブロックが有効の場合に「1」の値を取り、無効の場合に「0」の値を取る。論理ブロックが有効とは、その論理ブロックがディスク20もしくは2次キャッシュ112上から展開されているか否かを示す。例えば、ホスト2から指定された読出範囲を1次キャッシュ111にステージングする際に、チャンク全てをディスク20もしくは2次キャッシュ112からステージングせずに、読出範囲のみをステージングする場合に、チャンク内の未ステージング領域である論理ブロックが無効となる。
また、Dirtyのフラグの値が「1」の場合、ディスク20に書き戻していないホスト2からの書き込みデータが対応する論理ブロックに格納されていることを示す。この、ディスク20に書き戻していないホスト2からの書き込みデータを、「Dirtyデータ」という。Dirtyのフラグの値が「0」の場合、対応する論理ブロックにはDirtyデータが書き込まれていないことを示す。
より具体的には、1次キャッシュ管理テーブル103には、1次キャッシュ111のチャンクの識別情報であるチャンクID(Identifier)が対応付けられる。そして、1次キャッシュ管理テーブル103は、DRAM12上の開始アドレス、格納データのディスク20上の開始論理ブロックアドレス、各論理ブロックの状態及びLRU情報などのその他管理情報が含まれる。
ここで、本実施例では、1次キャッシュ111を論理ブロック単位で管理し、2次キャッシュ112を1次キャッシュ111のチャンク単位で管理するが、管理単位はこれに限らない。例えば、1次キャッシュ111をチャンク単位で一括でステージングしてチャンク毎に有効無効状態を管理してもよい。また、2次キャッシュ112のチャンクを論理ブロック毎に管理してもよい。ただし、2次キャッシュ112の管理単位が、後述するデータを破棄するか保持するかの判定単位となる。
図5は、2次キャッシュ管理テーブルの一例の図である。2次キャッシュ管理テーブル104は、例えば、2次キャッシュ112のチャンク毎にテーブルが設けられている。図5は、1つのチャンクに対応する2次キャッシュ管理テーブル104を示す。2次キャッシュ管理テーブル104には、そのテーブルが示す2次キャッシュ112のチャンクに対応する複数の1次キャッシュ111のチャンクが登録されている。すなわち、2次キャッシュ管理テーブル104では、1次キャッシュ111のチャンクの情報によって、そのチャンクに対応する2次キャッシュ112の領域が表されている。以下では、2次キャッシュ管理テーブル104に登録された1次キャッシュ111のチャンクの識別情報で表される2次キャッシュ112の領域を、1次キャッシュ111のチャンクの「対応領域」という。逆に、2次キャッシュ112の各対応領域に対応する1次キャッシュ111のチャンクを、2次キャッシュ112の対応領域の「対応チャンク」という。この対応領域が、「管理単位領域」の一例にあたる。
さらに、2次キャッシュ管理テーブル104には、1次キャッシュ111の各チャンクの識別情報で表される対応領域毎に、有効フラグ、Dirtyフラグ、読出回数及び書込回数が登録される。有効フラグは、対応領域が有効の場合に「1」の値を取り、無効の場合に「0」の値を取る。また、Dirtyのフラグの値が「1」の場合、ディスク20に書き戻していないホスト2からの書き込みデータが、その対応領域に格納されていることを示す。Dirtyのフラグの値が「0」の場合、その対応領域にはDirtyデータが書き込まれていないことを示す。
より具体的には、2次キャッシュ管理テーブル104には、2次キャッシュ112のチャンクの識別情報であるチャンクIDが対応付けられる。そして、2次キャッシュ管理テーブル104は、NAND型フラッシュメモリ30上の開始アドレス、格納データのディスク20上の開始論理ブロックアドレス、そのチャンクに含まれる各対応領域の状態及びLRU(Least Recently Used)情報などのその他管理情報が含まれる。
統括制御部101は、1次キャッシュ111、2次キャッシュ112及びディスク20に対するデータの読み書きを統括管理する。以下に、統括制御部101の機能の詳細を説明する。
統括制御部101は、ホスト2によるディスク20からのデータの読み出しの指示を受ける。そして、統括制御部101は、1次キャッシュ管理テーブル103及び2次キャッシュ管理テーブル104を参照し、1次キャッシュ111又は2次キャッシュ112の何れかで読出しのデータがヒットしたか否かを判定する。
1次キャッシュ111でヒットした場合、統括制御部101は、1次キャッシュ読書制御部106に対してデータの読み出しを指示する。その後、統括制御部101は、読み出しを指示したデータを1次キャッシュ読書制御部106から取得する。そして、統括制御部101は、取得したデータをホスト2へ送信する。
また、1次キャッシュ111ではヒットせずに2次キャッシュ112でヒットした場合、統括制御部101は、2次キャッシュ読書制御部107に対してデータの読み出しを指示する。その後、統括制御部101は、読み出しを指示したデータを2次キャッシュ読書制御部107から取得する。そして、統括制御部101は、取得したデータをホスト2へ送信する。さらに、統括制御部101は、データを読み出した2次キャッシュ112の領域を表す対応チャンクの識別情報及びデータの読み出しの通知をテーブル管理部102へ通知する。
一方ヒットしなかった場合、統括制御部101は、指示されたデータのディスク20からの読み出しをディスク制御部109へ要求する。その後、統括制御部101は、読み出しを指示したデータをディスク制御部109から取得する。そして、統括制御部101は、読み出したデータをホスト2へ送信する。さらに、統括制御部101は、ディスク20から読み出したデータを1次キャッシュ読書制御部106又は2次キャッシュ読書制御部107へ送信し、データの書き込みを指示する。すなわち、統括制御部101は、ステージングを行う。2次キャッシュ112へデータを書き込んだ場合、統括制御部101は、データを書き込んだ2次キャッシュ112の領域を表す対応チャンクの識別情報及びデータの書込通知をテーブル管理部102に通知する。
また、統括制御部101は、ディスク20に対するデータの書き込み命令をホスト2から受ける。そして、統括制御部101は、1次キャッシュ管理テーブル103及び2次キャッシュ管理テーブル104を参照し、1次キャッシュ111又は2次キャッシュ112の何れかで書き込みデータがヒットしたか否かを判定する。
書き込みデータがヒットしなかった場合、統括制御部101は、ディスク20へのデータの書き込み命令をディスク読書制御部109へ送信する。さらに、統括制御部101は、ディスク読書制御部109がすぐにディスク20へ書き込むことが困難なデータがある場合、そのデータを1次キャッシュ読書制御部106及び2次キャッシュ読書制御部107へ、書き込み先の論理ブロックの指定とともに送信する。
1次キャッシュ111へデータを書き込んだ場合、統括制御部101は、データを書き込んだ1次キャッシュ111の論理ブロックの識別情報及びDirtyの通知をテーブル管理部102へ出力する。同様に、2次キャッシュ112へデータを書き込んだ場合、統括制御部101は、データを書き込んだ2次キャッシュ112の領域を表す対応チャンクの識別子、データの書き込みの通知及びDirtyの通知をテーブル管理部102へ出力する。
その後、統括制御部101は、ディスク読書制御部109がディスク20へ新しいデータを書き込める状態になると、1次キャッシュ読書制御部106又は2次キャッシュ読書制御部107から書き込むデータを取得する。そして、統括制御部101は、取得したデータをディスク読書制御部109へ送信し、ディスク20へ書き込ませる。
この場合、1次キャッシュ111からデータを読み出すと、統括制御部101は、データを読み出した1次キャッシュ111の論理ブロックの識別情報及びDirtyの解除の通知をテーブル管理部102へ出力する。
同様に、2次キャッシュ112からデータを読み出した場合、統括制御部101は、データを読み出した2次キャッシュ112の領域を表す対応チャンクの識別子及びデータの読出通知をテーブル管理部102へ出力する。さらに、統括制御部101は、データを読み出した2次キャッシュ112の領域のDirtyの解除の通知をテーブル管理部102へ出力する。
また、書き込みデータが1次キャッシュ111でヒットした場合、統括制御部101は、1次キャッシュ111上のヒットした領域の新しいデータでの上書きを1次キャッシュ読書制御部106に指示する。また、書き込みデータが1次キャッシュ111でヒットせず、2次キャッシュ112でヒットした場合、統括制御部101は、書き込み先の論理ブロックの指定とともに1次キャッシュ111に書き込みデータを1次キャッシュ読書制御部106に送信する。
そして、いずれの場合にも、統括制御部101は、データを書き込んだ1次キャッシュ111の論理ブロックの識別情報及びDirtyの通知をテーブル管理部102へ出力する。その後、データを更新した1次キャッシュ111のチャンクの対応領域が2次キャッシュ112に存在する場合、統括制御部101は、キャッシュ間の整合性を保つため、2次キャッシュ読書制御部107にデータの変更、すなわちデータの書き込みを指示する。この場合、統括制御部101は、データの変更を行う2次キャッシュ112の領域を表す対応チャンクの識別情報を2次キャッシュ読書制御部107へ出力する。以下では、1次キャッシュ111のチャンクの対応領域が2次キャッシュに存在する場合に、キャッシュの整合性を保つために行う2次キャッシュ112への書き込みを、「ライトアクセス延長の書き込み」と呼ぶ。
ライトアクセス延長の書き込みを行う場合、統括制御部101は、リードモディファイライト処理を実施するか否かの判定を条件判定部108に指示する。この場合、統括制御部101は、データの変更を行う2次キャッシュ112の領域の情報を条件判定部108へ送信する。
その後、リードモディファイライト処理が実施される場合、統括制御部101は、リードモディファイライト処理の実行の通知を条件判定部108から受ける。そして、統括制御部101は、書込データのリードモディファイ用バッファ113への書込指示を1次キャッシュ読書制御部106へ指示する。また、統括制御部101は、リードモディファイライト処理により、データを読み出した2次キャッシュ112の領域を表す対応チャンクの識別情報及びデータの読出通知をテーブル管理部102へ出力する。さらに、統括制御部101は、リードモディファイライト処理により、データを書き込んだ2次キャッシュ112の領域を表す対応チャンクの識別情報及びデータの書込通知をテーブル管理部102へ出力する。
一方、リードモディファイライト処理が実行されない場合には、隣接チャンク領域を無効とした上での書き込みを行う場合、及び隣接チャンク領域を無効とせず書き込みを行う場合、すなわち単に書き込みが行われた場合がある。ここで、隣接チャンク領域とは、データを2次キャッシュ112に書き込む際に、書き込み先のページの領域が異なる1次キャッシュ111のチャンクの対応領域を跨ぐ場合における、データの更新が無い論理ブロックを有する対応領域を指す。隣接チャンク領域の無効については後で詳細に説明する。
隣接チャンク領域が無効とされた場合、統括制御部101は、隣接チャンク領域の無効及びデータの書込通知を2次キャッシュ読書制御部107から受ける。そして、統括制御部101は、無効とされた対応領域を表す対応チャンクの識別情報、データを書き込んだ対応領域を表す対応チャンクの識別情報及びデータの書込通知をテーブル管理部102へ出力する。
これに対して、隣接チャンクが無効とされなかった場合、統括制御部101は、データの書込通知を2次キャッシュ読書制御部107から受ける。そして、統括制御部101は、データを書き込んだ2次キャッシュ112の領域を表す対応チャンクの識別情報及びデータの書込通知をテーブル管理部102へ出力する。
テーブル管理部102は、ディスク20へのデータの書き込み時に1次キャッシュ111へデータが一時格納された場合、データの格納先の論理ブロックの情報及びDrityの通知の入力を統括制御部101から受ける。また、テーブル管理部102は、書込要求を受けた際に、1次キャッシュ111もしくは2次キャッシュ112、またはその両方で書き込むデータがヒットした場合も、データの格納先の論理ブロックの情報及びDrityの通知の入力を統括制御部101から受ける。
そして、テーブル管理部102は、1次キャッシュ管理テーブル103における通知を受けた論理ブロックのDirtyのフラグを「1」に設定する。その後、データの読み出し元の論理ブロックの情報及びDirtyの解除の通知を受けると、テーブル管理部102は、1次キャッシュ管理テーブル103における通知を受けた論理ブロックのDirtyのフラグを「0」に戻す。
同様に、ディスク20へのデータの書き込み時に2次キャッシュ112へデータが一時格納された場合、テーブル管理部102は、データの格納先の2次キャッシュ112の領域を表す対応チャンクの識別情報及びDrityの通知の入力を統括制御部101から受ける。そして、テーブル管理部102は、2次キャッシュ管理テーブル104における対応チャンクの識別子で表される対応領域のDirtyのフラグを「1」に設定する。その後、データの読出元の対応領域を表す対応チャンクの識別情報及びDirtyの解除の通知を受けると、テーブル管理部102は、通知を受けた対応チャンクの識別情報で表される対応領域のDirtyのフラグを「0」に戻す。
また、テーブル管理部102は、2次キャッシュ112に対してライトアクセス延長の書き込みを行う場合、単に書き込みが行われたか、リードモディファイライトが実施されたか又は隣接チャンク領域が無効とされたかによって統括制御部101から異なる情報の入力を受ける。
単に書き込みが行われた場合、テーブル管理部102は、データが書き込まれた2次キャッシュ112の領域を表す対応チャンクの識別情報及びデータの書込通知の入力を統括制御部101から受ける。ここで、テーブル管理部102は、書込回数をカウントするカウンタ及び読出回数をカウントするカウンタを、対応領域毎に有する。そして、テーブル管理部102は、通知を受けた対応チャンクの識別情報で表される対応領域の書込回数のカウンタを1つインクリメントする。
また、リードモディファイライトが実施された場合、テーブル管理部102は、リードモディファイライト処理により、データが書き込まれた2次キャッシュ112の領域を表す対応チャンクの識別情報及びデータの書込通知をテーブル管理部102へ出力する。そして、テーブル管理部102は、通知を受けた対応チャンクで表される対応領域の書込回数のカウンタを1つインクリメントする。
また、隣接チャンク領域が無効とされた場合、すなわち、隣接チャンク領域のデータが破棄された場合について説明する。この場合、テーブル管理部102は、無効とされた隣接チャンク領域を表す対応チャンクの識別情報、データを書き込んだ2次キャッシュ112の領域を表す対応チャンクの識別情報及びデータの書込通知の入力を統括制御部101から受ける。そして、テーブル管理部102は、無効とされた隣接チャンク領域の有効フラグを「0」に設定する。さらに、テーブル管理部102は、データが書き込まれた2次キャッシュ112の領域の書込回数のカウンタを1つインクリメントする。
また、テーブル管理部102は、一定期間毎に、各対応領域の書込回数及び読出回数のカウンタの値に、2次キャッシュ管理テーブル104の各対応領域の書込回数及び読出回数の値を更新する。その後、テーブル管理部102は、各対応領域の読出回数及び書込回数のカウンタの値を初期化し0とする。すなわち、テーブル管理部102は、一定期間における各対応領域の書込回数及び読出回数の値を2次キャッシュ管理テーブル104に書き込むことを繰り返す。
条件判定部108は、ライトアクセス延長の場合、データを書き込む2次キャッシュ112の領域の情報とともに、リードモディファイライト処理を実施するか否かの判定の要求を統括制御部101から受ける。そして、条件判定部108は、リードモディファイライト処理を実施するか否かの判定を以下の手順にしたがって行う。ここで、2次キャッシュ112に対するデータの書き込みは、2次キャッシュ112のページ単位で行われるので、条件判定部108は、2次キャッシュ112のページ単位でリードモディファイライト処理を行うか否かの判定を行う。
まず、条件判定部108は、書込サイズ、すなわちデータを書き込む2次キャッシュ112の領域の大きさが、2次キャッシュ112のページサイズの整数倍か否か、及び、NAND型フラッシュメモリ30上の書き込みを行う領域の開始位置がページサイズの整数倍か否かを判定する。書込サイズがページサイズの整数倍の場合、データを書き込む2次キャッシュ112の領域がページアライメントであるといえる。その場合、条件判定部108は、リードモディファイライトを行わずに、単なるデータ書き込みの実施を決定する。そして、条件判定部108は、単にデータを2次キャッシュ112へ書き込むことを2次キャッシュ読書制御部107へ指示する。
これに対して、書込サイズがページサイズの整数倍でない場合又は書き込みを行う領域の開始位置がページサイズの整数倍でない場合、データを書き込む2次キャッシュ112の領域が非ページアライメントであるといえる。この場合、条件判定部108は、データの更新が無い論理ブロックを有する書込先ページであって、異なる対象領域に跨る書込先ページがあるか否かを判定する。以下では、データの更新が無い論理ブロックを有する書込先ページであって、異なる対象領域に跨る書込先ページを「判定対象ページ」という。
判定対象ページが無い場合、条件判定部108は、リードモディファイライト処理の実行を決定する。そして、条件判定部108は、リードモディファイライト処理の実行を2次キャッシュ読書制御部107へ指示する。
判定対象ページがある場合、条件判定部108は、判定対象ページの隣接チャンク領域はデータの更新が無い論理ブロックのみを含み、且つ、判定対象ページの隣接チャンク以外の領域はデータの更新がある論理ブロックのみを含むか否かを判定する。以下では、判定対象ページに含まれる隣接チャンク領域以外の対象領域を「書込チャンク領域」という。すなわち、条件判定部108は、データを更新する論理ブロックとデータを更新しない論理ブロックとの境界が、隣接チャンク領域と書込チャンク領域との境界と一致するか否かを判定する。以下では、データを更新する論理ブロックとデータを更新しない論理ブロックとの境界が隣接チャンク領域と書込チャンク領域との境界と一致する場合を、「境界一致」という。
境界一致でない場合、条件判定部108は、リードモディファイライト処理の実行を決定する。そして、条件判定部108は、リードモディファイライト処理の実行を2次キャッシュ読書制御部107へ指示する。
これに対して、境界一致の場合、条件判定部108は、隣接チャンク領域の優先度の算出要求を、隣接チャンク領域を表す対応チャンクの識別情報とともに優先度算出部105へ出力する。その後、条件判定部108は、隣接チャンク領域の優先度の入力を優先度算出部105から受ける。そして、条件判定部108は、隣接チャンク領域の優先度が予め決められた閾値以上か否かを判定する。隣接チャンク領域の優先度が予め決められた閾値以上の場合、条件判定部108は、リードモディファイライト処理の実行を決定する。そして、条件判定部108は、リードモディファイライト処理の実行を2次キャッシュ読書制御部107へ指示する。
一方、隣接チャンク領域の優先度が閾値未満の場合、条件判定部108は、隣接チャンク領域を無効とすることを決定する。そして、条件判定部108は、隣接チャンク領域の無効を2次キャッシュ読書制御部107へ通知する。この条件判定部108が、「判定部」の一例にあたる。
ここで、優先度の閾値は、2次キャッシュ112上のデータを残すか破棄するかの指標となる値である。そして、優先度の閾値は、システムが扱う平均的なアクセスパターンに基づいて決定されることが好ましい。
そこで、図6A及び6Bを参照して、優先度の閾値の決定方法の一例について説明する。図6Aは、アクセス回数を基に算出される優先度と2次キャッシュの領域との関係の一例を表す図である。また、図6Bは、アクセス回数を基に算出される優先度と2次キャッシュの領域との関係の他の例を表す図である。図6A及び6Bともに、縦軸は優先度を表し、横軸は論理ブロックの番号順に並んだ2次キャッシュ112の対応領域を表している。ここで、アクセス回数とは、各論理ブロックに対するデータの読み出し及び書き込みの回数である。そして、優先度はアクセス回数に比例する。すなわち、図6A及び6Bともにアクセス回数が多いほど、縦軸の値は大きくなる。アクセス回数を用いた優先度の算出方法については、後で詳細に説明する。
1次キャッシュ111のチャンクに対応する2次キャッシュ112の各対応領域に対するアクセス回数には、時間的局所性と論理ブロック番号に基づく空間的局所性があると考えられる。すなわち、アクセス回数と2次キャッシュ112の各対応領域との関係を表すヒストグラムは、図6A及び6Bのような正規分布の重ね合わせで表される。優先度はアクセス回数に比例するので、図6A及び6Bは、優先度と2次キャッシュ112の各対応領域との関係を表すと考えることもできる。
ここで、閾値を高くすることで、隣接チャンク領域が無効とされる確率が高くなる。隣接チャンク領域が無効とされると、2次キャッシュ112において破棄されるデータが増加する。2次キャッシュ112上で多くのデータが破棄された場合、読み出しのヒット率が低下してしまい、システムの処理効率が低下してしまう。そこで、無効とされる領域の量は2次キャッシュ112上の全領域に対して少量となることが好ましい。
例えば、図6Aに示すグラフ201で表されるような分散が大きく優先度の平均値も大きいシステムの場合、閾値202を比較的大きな値にしても2次キャッシュ112上の破棄されるデータは少なく抑えることができる。しかし、図6Bに示すグラフ211で表されるようなアクセス数が少ない領域に集中しているようなシステムの場合、閾値212を大きくした場合、2次キャッシュ112上の多くのデータが破棄されてしまう可能性がある。そこで、このようなシステムにおいては、閾値212を小さくすることが好ましい。このように、閾値は、2次キャッシュ112におけるアクセス回数の傾向によって決定されることが好ましい。
優先度算出部105は、隣接チャンク領域を表す対応チャンクの識別情報とともに優先度の算出要求を条件判定部108から受ける。優先度算出部105は、優先度の算出要求を受けると、まず2次キャッシュ管理テーブル104を用いて隣接チャンク領域がDirtyデータを含むか否かを判定する。隣接チャンク領域がDirtyデータを含む場合、優先度算出部105は、隣接チャンク領域の優先度を無限大にする。これにより、隣接チャンク領域がDirtyデータを含む場合は、隣接チャンクの優先度が閾値以上になる。
これに対して、隣接チャンク領域がDirtyデータを含まない場合、優先度算出部105は、隣接チャンク領域の書込回数及び読出回数を2次キャッシュ管理テーブル104から取得する。そして、優先度算出部105は、書込回数と読出回数との合計に、読出回数を書込回数で除算した値を加算することで隣接チャンク領域の優先度を算出する。すなわち、書込回数の優先度をPとし、書込回数をRとし、読出回数をWとした場合、優先度算出部105は、P=R+W+(R/W)により隣接チャンク領域の優先度を算出する。このように、読出回数と書込回数の比を優先度に反映させることで、読出回数の割合が多い方がより隣接チャンクの優先度は高くなる。
その後、優先度算出部105は、求めた隣接チャンク領域の優先度を条件判定部108へ送信する。
1次キャッシュ読書制御部106は、データの書込命令を統括制御部101から受けて、指定された1次キャッシュ111の論理ブロックにデータを書き込む。また、1次キャッシュ読書制御部106は、データの読出命令を統括制御部101から受けて、指定されたデータを1次キャッシュ111から読み出し、統括制御部101へ送信する。
また、リードモディファイライトを実行する場合、1次キャッシュ読書制御部106は、2次キャッシュ112に書き込むデータのリードモディファイライト用バッファ113への出力の命令を統括制御部101から受ける。そして、1次キャッシュ読書制御部106は、指定されデータを1次キャッシュ111から読み出し、リードモディファイライト用バッファ113に書き込む。
2次キャッシュ読書制御部107は、データの書込命令を統括制御部101から受ける。この時、ホスト2からのライトアクセス延長の2次キャッシュ112への書き込みであれば、2次キャッシュ読書制御部107は、単なる書き込みを行うか、リードモディファイライト処理を行うか又は隣接チャンク領域を無効にしたうえでデータを書き込むかの指示を条件判定部108から受ける。
単なる書き込みの場合、2次キャッシュ読書制御部107は、指定されたページへのデータの書き込みを行う。この場合、2次キャッシュ読書制御部107は、書き込んだ対象チャンクの情報及びデータの書込通知を統括制御部101へ出力する。
また、リードモディファイライト処理の場合、2次キャッシュ読書制御部107は、対象となる2次キャッシュ112のページからデータを読み出す。次に、2次キャッシュ読書制御部107は、読み出したデータをリードモディファイライト用バッファ113へ書き込み、1次キャッシュ読書制御部106から書き込まれたデータとマージする。そして、2次キャッシュ読書制御部107は、マージしたデータをリードモディファイライト用バッファ113から取得し、2次キャッシュ112の対象となるページへ書き込む。この場合、2次キャッシュ読書制御部107は、データの読み出し及び書き戻しを行った2次キャッシュ112の領域を表す対象チャンクの識別情報及び読出通知及び書込通知を統括制御部101へ送信する。
また、隣接チャンク領域を無効にしたうえでデータを書き込む場合、2次キャッシュ読書制御部107は、隣接チャンク領域の無効を統括制御部101へ通知する。次に、2次キャッシュ読書制御部107は、対象となる2次キャッシュ112のページにデータを書き込む。その後、2次キャッシュ読書制御部107は、データを書き込んだ2次キャッシュ112の領域を表す対象チャンクの識別情報及びデータの書込通知を統括制御部101へ出力する。
また、2次キャッシュ読書制御部107は、データの読出命令を統括制御部101から受けて、指定されたデータを2次キャッシュ112から読み出し、統括制御部101へ送信する。さらに、2次キャッシュ読書制御部107は、データを読み出した2次キャッシュ112の領域を表す対象チャンクの識別情報及びデータの読出通知を統括制御部101へ出力する。この2次キャッシュ読書制御部107が、「書込部」の一例にあたる。
リードモディファイライト用バッファ113は、リードモディファイライト処理を行う場合の一時的な記憶領域を有する。リードモディファイライト用バッファ113は、例えば、図1のDRAM12に設けられる。
ディスク読書制御部109は、ディスク20へのデータの書込命令を統括制御部101から受ける。そして、ディスク読書制御部109は、指定されたデータをディスク20へ書き込む。
また、ディスク読書制御部109は、ディスク20からのデータの読出命令を統括制御部101から受ける。そして、ディスク読書制御部109は、指定されたデータをディスク20から読出し、統括制御部101へ出力する。
次に、図7A及び7Bを参照して、本実施例に係るストレージ装置1によるリードモディファイライト処理及び隣接チャンク領域を無効にした上でのデータ書き込みの動作の概要について説明する。図7Aは、リードモディファイライト処理を実行する場合の動作を説明するための図である。図7Bは、隣接チャンク領域を無効にした上でのデータ書き込みの動作を説明するための図である。
図7Aは、1次キャッシュ111上のデータ301が更新された場合である。この時、1次キャッシュ読書制御部106は、データ301を1次キャッシュ111から読み出し、リードモディファイライト用バッファ113に書き込む(ステップS11)。この書き込まれたデータがデータ302である。
次に、2次キャッシュ読書制御部107は、データ303を2次キャッシュ112から読み出し、リードモディファイライト用バッファ113に書き込む。この書き込まれたデータがデータ304である。そして、2次キャッシュ読書制御部107は、データ302とデータ304とをマージする(ステップS12)。
次に、2次キャッシュ読書制御部107は、リードモディファイライト用バッファ113からマージされたデータ302及び304を読み出し、2次キャッシュ112へ書き込む。これにより、2次キャッシュ112には、データ303を保持したままで、データ301に対応するデータ305が書き込まれる(ステップS13)。
図7Bは、1次キャッシュ111上のデータ306が更新された場合である。この時、2次キャッシュ読書制御部107は、隣接チャンク領域308を無効にする。そして、2次キャッシュ読書制御部107は、1次キャッシュ111から読み出されたデータ306を取得し、2次キャッシュ112へ書き込む。これにより、2次キャッシュ112では、隣接チャンク領域308が無効にされ、且つ、データ306に対応するデータ307が書き込まれる(ステップS14)。
次に、図8を参照して、ライトアクセス延長において書込データがページアライメントの場合のデータの書き込みについて説明する。図8は、ページアライメントの場合のデータの書き込みについて説明するための図である。状態41は、2次キャッシュ112にデータを書き込む前状態を表し、状態42は、2次キャッシュ112にデータを書き込んだ後の状態を表す。
論理ブロック401は、1次キャッシュ111における論理ブロックを表している。また、ページ402は、2次キャッシュ112における書き込み単位であるページを表している。そして、論理ブロック403は、2次キャッシュ112における論理ブロックを表している。2次キャッシュ112は、全体が論理ブロック単位に分かれているが、説明の都合上論理ブロック403は、2次キャッシュ112の一部にのみ表されている。ここでは、1つのページ402に、論理ブロック403が3つ含まれているものとして説明する。さらに、対応領域404は、1次キャッシュ111のチャンクに対応させて2次キャッシュ112を分割した場合の領域を表す。
この場合、1次キャッシュ111に更新された領域411が存在する。領域411は、X,Y,Zという3つのデータを有する。そして、領域411の対応領域である2次キャッシュ112のページ412には、A,B,Cという3つのデータが格納されている。
この場合、書込サイズはページアライメントであるので、2次キャッシュ読書制御部107は、領域411に格納されたデータを対応領域であるページ412にそのまま書き込み更新する。これにより、ページ412は、1次キャッシュ111の領域411と同じデータX,Y,Zを有するようになる。これで1次キャッシュ111と2次キャッシュ112との整合性が取れる。
次に、図9を参照して、アクセス延長においてリードモディファイライト処理を実行する場合のデータの書き込みについて説明する。図9は、リードモディファイライト処理を実行する場合のデータの書き込みについて説明するための図である。状態43は、2次キャッシュ112にデータを書き込む前状態を表す。状態44は、リードモディファイライト用バッファ113にデータを格納した場合の状態を表す。状態45は、リードモディファイライト処理実行後の2次キャッシュ112の状態を表す。
この場合、状態43に示すように、1次キャッシュ111に更新された領域431が存在する。領域431は、X,Yという2つのデータを有する。そして、領域431に対応する領域を含む2次キャッシュ112のページ432には、A,B,Cという3つのデータが格納されている。
この場合、書込サイズは2つの論理ブロックサイズであり、非ページアライメントである。また、書込対象となる2次キャッシュ112のページ432は、2つの対象領域に跨っている。そして、ページ432において対応する1次キャッシュ111の領域にデータの更新が無い論理ブロック、すなわちCというデータが格納された論理ブロックを有する対応領域が隣接チャンク領域433となる。
そして、隣接チャンク領域433に対応する1次キャッシュ111の領域にはデータの更新がある領域が存在する、すなわち境界一致でないので、この場合リードモディファイライト処理が実行される。1次キャッシュ読書制御部106は、領域431のデータ、すなわちX及びYというデータをリードモディファイライト用バッファ113に書き込む。また、2次キャッシュ読書制御部107は、ページ432における1次キャッシュ111上にデータの更新がない論理ブロックのデータ、すなわちCというデータをリードモディファイライト用バッファ113に書き込み、X,YとCとをマージする。これにより、状態44で表される状態となる。
その後、2次キャッシュ読書制御部107は、リードモディファイライト用バッファ113に格納されたデータをページ432に書き込み更新する。これにより、状態45で示す状態となる。すなわち、ページ432は、1次キャッシュ111の領域431と同じデータX,Y及び元から有するデータCを有するようになる。これで、1次キャッシュ111と2次キャッシュ112との整合性が取れるとともに、2次キャッシュ112のページ432は、1次キャッシュ111の領域にデータの更新が無い論理ブロックのデータを維持することができる。
次に、図10を参照して、アクセス延長において隣接チャンク領域の優先度が閾値よりも高いのでリードモディファイライト処理を行う場合について説明する。図10は、隣接チャンク領域の優先度が閾値よりも高いのでリードモディファイライト処理を行う場合について説明するための図である。状態46は、2次キャッシュ112にデータを書き込む前状態を表す。状態47は、リードモディファイライト処理を実行した後の状態を表す。
この場合、状態46に示すように、1次キャッシュ111に更新された領域461が存在する。領域461は、X,Yという2つのデータを有する。そして、領域461に対応する領域を含む2次キャッシュ112のページ462には、A,B,Cという3つのデータが格納されている。
この場合、書込サイズは2つの論理ブロックサイズであり、非ページアライメントである。また、書込対象となる2次キャッシュ112のページ462は、2つの対象領域に跨っている。そして、ページ462において対応する1次キャッシュ111の領域にデータの更新が無い論理ブロック、すなわちCというデータが格納された論理ブロックを有する対応領域が隣接チャンク領域463となる。
そして、隣接チャンク領域463に対応する1次キャッシュ111の領域にはデータの更新が無い領域のみであり、境界一致であるので、隣接チャンク領域463の優先度に応じてリードモディファイライト処理の実行が決定される。この場合は、隣接チャンク領域の優先度が閾値以上であるとして、リードモディファイライト処理が実行される。
1次キャッシュ読書制御部106及び2次キャッシュ読書制御部107は、図9で説明した方法と同じ方法で、リードモディファイライト処理を実行する。これにより、状態47で表される状態となる。すなわち、ページ462は、1次キャッシュ111の領域461と同じデータX,Y及び元から有するデータCを有するようになる。これで、1次キャッシュ111と2次キャッシュ112との整合性が取れるとともに、2次キャッシュ112のページ462は、1次キャッシュ111の領域に更新するデータが存在しない論理ブロックのデータを維持することができる。
これに対して、図11を参照して、アクセス延長において隣接チャンク領域を無効としたうえでのデータの書き込みについて説明する。図11は、隣接チャンク領域を無効としたうえでのデータの書き込みについて説明するための図である。状態48は、2次キャッシュ112にデータを書き込む前状態を表す。状態49は、隣接チャンク領域を無効としたうえでのデータの書き込んだ後の状態を表す。
この場合、状態48に示すように、1次キャッシュ111に更新された領域481が存在する。領域481は、X,Yという2つのデータを有する。そして、領域481に対応する領域を含む2次キャッシュ112のページ482には、A,B,Cという3つのデータが格納されている。
この場合、書込サイズは2つの論理ブロックサイズであり、非ページアライメントである。また、書込対象となる2次キャッシュ112のページ482は、2つの対象領域に跨っている。そして、ページ482において対応する1次キャッシュ111の領域にデータの更新が無い論理ブロック、すなわちCというデータが格納された論理ブロックを有する対応領域が隣接チャンク領域483となる。
そして、隣接チャンク領域483に対応する1次キャッシュ111の領域にはデータの更新が無い論理ブロックのみ、すなわち境界一致であるので、隣接チャンク領域483の優先度に応じてリードモディファイライト処理の実行が決定される。この場合は、隣接チャンク領域の優先度が閾値未満であるとして、隣接チャンク領域を無効としたうえでのデータの書き込みが実行される。
テーブル管理部102は、統括制御部101から隣接チャンク領域483を無効にする指示を受けて、2次キャッシュ管理テーブル104において隣接チャンク領域483を無効にする。状態49のグレーアウトされている領域が無効とされた領域である。すなわち、隣接チャンク483が無効であることを示している。そして、2次キャッシュ読書制御部107は、領域481に格納されているデータをページ482に書き込む。ここで、ページ482に含まれる論理ブロック484には1次キャッシュ111上でのデータ481の隣接データなどデータCとは異なるデータが書き込まれるが、隣接チャンク領域483は無効であるのでこのデータが参照されることはない。これで、1次キャッシュ111と2次キャッシュ112との間で新たに書き込まれたデータの整合性が取れる。また、誤ったデータが参照されないため、1次キャッシュ111と2次キャッシュ112との間でデータの不整合が発生しない。
次に、図12を参照して、1つの対象領域に含まれるページに対する非ページアライメントのデータ書き込みの場合について説明する。図12は、1つの対象領域に含まれるページに対する非ページアライメントのデータ書き込みについて説明するための図である。状態50は、2次キャッシュ112にデータを書き込む前状態を表す。状態51は、データ書き込みを実行した後の状態を表す。
この場合、状態50に示すように、1次キャッシュ111に更新された領域501が存在する。領域501は、X,Yという2つのデータを有する。そして、領域501に対応する領域を含む2次キャッシュ112のページ502には、A,B,Cという3つのデータが格納されている。
この場合、書込サイズは2つの論理ブロックサイズであり、非ページアライメントである。また、書込対象となる2次キャッシュ112のページ502は、1つの対象領域503に含まれるこの場合リードモディファイライト処理が実行される。
1次キャッシュ読書制御部106及び2次キャッシュ読書制御部107は、図9で説明した方法と同じ方法で、リードモディファイライト処理を実行する。これにより、状態51で表される状態となる。すなわち、ページ502は、1次キャッシュ111の領域501と同じデータX,Y及び元から有するデータCを有するようになる。これで、1次キャッシュ111と2次キャッシュ112との整合性が取れるとともに、2次キャッシュ112のページ502は、1次キャッシュ111の領域にデータの更新が無い論理ブロックのデータを維持することができる。
さらに、図13を参照して、隣接チャンク領域が無効にされた上でデータの書き込みが行われた場合の1次キャッシュ管理テーブル103及び2次キャッシュ管理テーブル104の遷移について説明する。図13は、隣接チャンク領域が無効にされた上でデータの書き込みが行われた場合の各管理テーブルの遷移を表す図である。状態52が、データ書き込み前の1次キャッシュ管理テーブル103及び2次キャッシュ管理テーブル104を表す。また、状態53が、データ書き込み後の1次キャッシュ管理テーブル103及び2次キャッシュ管理テーブル104を表す。
図13の1次キャッシュ管理テーブル103におけるLBAは、論理ブロックの識別番号である。また、2次キャッシュ管理テーブル104におけるチャンクA及びBは、対応領域を表す対応チャンクの識別情報である。
ここでは、LBA[6]に対応する領域を含むページが、対応チャンクの識別情報としてチャンクA及びチャンクBを有する2つの対応領域に跨っている。また、LBA[6]に対応する領域は、チャンクAで表される対応領域に含まれる。さらに、チャンクBで表される対応領域は隣接チャンク領域である。そして、チャンクAで表される対応領域とチャンクBで表される対応領域とは境界一致である。さらに、ここではチャンクBで表される対応領域の優先度が閾値未満である場合で説明する。
この場合、テーブル管理部102は、2次キャッシュ管理テーブル104上のチャンクBで表される対応領域を無効にする。すなわち、テーブル管理部102は、チャンクBに対応する有効フラグを「0」に設定する。
さらに、LBA[6]に対応する領域にデータが新たに書き込まれるので、テーブル管理部102は、2次キャッシュ管理テーブル104上のチャンクAで表される対応領域の書き込みのカウンタを1つインクリメントする。これにより、2次キャッシュ管理テーブル104は、状態53で表される状態となる。ただし、ここではライトカウンタがインクリメントされた状態に2次キャッシュ管理テーブル104を変更したが、所定時間が経過するまでにチャンクAにさらに書き込み又は読み出しの処理が行われた場合には、読み出しや書き込みの回数は変化する。
次に、図14を参照して、本実施例に係るストレージ装置1によるライトアクセス延長時のデータ書き込み処理の流れについて説明する。図14は、実施例1に係るストレージ装置によるライトアクセス延長時のデータ書き込み処理のフローチャートである。
ホスト2から送られてきた書込命令に1次キャッシュ111及び2次キャッシュ112がヒットして、ライトアクセス延長の処理により2次キャッシュ112を上書きする場合、統括制御部101は、条件判定部108にリードモディファイライトを実施するか否かの判定要求を出力する。条件判定部108は、リードモディファイライトを実施するか否かの判定要求を受けて、書込サイズがページサイズの整数倍であり、且つNAND型フラッシュメモリ30における書き込みの開始位置がページサイズの整数倍か否かを判定する(ステップS101)。書込サイズがページサイズの整数倍であり、且つNAND型フラッシュメモリ30における書き込みの開始位置がページサイズの整数倍の場合(ステップS101:肯定)、条件判定部108は、そのまま書き込むことを決定する。そして、2次キャッシュ読書制御部107は、1次キャッシュ111の更新データを、対応する2次キャッシュ112の領域にそのまま書き込む(ステップS110)。
これに対して、書込サイズがページサイズの整数倍でない場合又NAND型フラッシュメモリ30における書き込みの開始位置がページサイズの整数倍でない場合(ステップS101:否定)、条件判定部108は、データの更新が無い論理ブロックに対応する領域を含み、対象領域を跨る書込先ページがあるか否かを判定する(ステップS102)。いずれの書込先ページにもデータの更新が無い論理ブロックに対応する領域が無い又は対象領域を跨る書込先ページが無い場合(ステップS102:否定)、条件判定部108は、ステップS109へ進む。
これに対して、データの更新が無い論理ブロックに対応する領域を有し、且つ、対象領域を跨る書込先ページがある場合(ステップS102:肯定)、条件判定部108は、境界一致か否かを判定する(ステップS103)。境界一致とは、隣接チャンク領域がデータの更新が無い論理ブロックに対応する領域のみを含み、隣接チャンク領域の隣の対象領域は、データの更新がある論理ブロックに対応する領域のみとなる状態を指す。境界一致でない場合(ステップS103:否定)、条件判定部108は、ステップS109へ進む。
これに対して、境界一致の場合(ステップS103:肯定)、条件判定部108は、隣接チャンク領域の優先度の算出を優先度算出部105に指示する。優先度算出部105は、隣接チャンク領域がDirtyデータを含むか否かを判定する(ステップS104)。隣接チャンク領域がDirtyデータを含む場合(ステップS104:肯定)、優先度算出部105は、隣接チャンク領域の優先度を無限大にする(ステップS105)。そして、優先度算出部105は、隣接チャンク領域の優先度を条件判定部108に通知する。
これに対して、隣接チャンク領域がDirtyデータを含まない場合(ステップS104:否定)、優先度算出部105は、隣接チャンク領域の読出回数及び書込回数を2次キャッシュ管理テーブル104から取得する。そして、優先度算出部105は、隣接チャンク領域の読出回数及び書込回数から隣接チャンクの優先度を算出する(ステップS106)。そして、優先度算出部105は、隣接チャンク領域の優先度を条件判定部108に通知する。
条件判定部108は、隣接チャンク領域の優先度を優先度算出部105から取得する。そして、条件判定部108は、隣接チャンク領域の優先度が閾値以上か否かを判定する(ステップS107)。隣接チャンク領域の優先度が閾値未満の場合(ステップS107:否定)、条件判定部108は、隣接チャンク領域を無効にしたうえで、更新データを2次キャッシュ112に書き込むことを決定する。テーブル管理部102は、隣接チャンク領域の無効の指示を受けて、2次キャッシュ管理テーブル104において隣接チャンク領域を無効にする。そして、2次キャッシュ読書制御部107は、1次キャッシュ111の更新データを、対応する2次キャッシュ112の領域に書き込む(ステップS108)。
これに対して、隣接チャンク領域の優先度が閾値以上の場合(ステップS107:肯定)、条件判定部108は、リードモディファイライトの実行を決定する。そして、1次キャッシュ読書制御部106及び2次キャッシュ読書制御部107は、リードモディファイライト用バッファ113を用いてリードモディファイライトを実施する(ステップS109)。
以上に説明したように、本実施例に係るストレージ装置は、非ページアライメントでデータを更新する際に、更新データの状態によって、リードモディファイライト処理を行うか否かを決定する。このように、選択的にリードモディファイライトを行うことで、NAND型フラッシュメモリなどの2次キャッシュに対するアクセス回数を減らすことができ、スループットを向上させることができる。
また、リードモディファイライトを適切に行うことで、ヒット率を確保することができる。したがって、スループットを向上させつつ、ヒット率を確保して、システム性能を向上させることができる。
図15は、実施例2に係るストレージ装置のブロック図である。本実施例に係るストレージ装置1は、リードモディファイライト処理の実施の判定に用いる隣接チャンク領域の優先度の閾値を2次キャッシュ112へのアクセス状態に応じて変更することが実施例1と異なる。以下の説明では、各部の実施例1と同じ機能については説明を省略する。
本実施例に係るストレージ装置1は、実施例1の各部に加えて、コマンド数管理部121及び閾値算出部122を有する。
統括制御部101は、2次キャッシュ読書制御部107へ出力した読出命令及び書込命令をコマンド数管理部121にも出力する。また、統括制御部101は、読出命令及び書込命令で指定された処理を2次キャッシュ読出制御部107が終了すると、終了した読出命令及び書込命令の完了をコマンド数管理部121へ通知する。
また、統括制御部101は、条件判定部108にリードモディファイライトの実施の判定要求を出力した場合、コマンド数管理部121にコマンド数の送信の指示を、隣接チャンク領域の情報とともにコマンド数管理部121へ出力する。
コマンド数管理部121は、2次キャッシュ読書制御部107へ発行中の読出命令及び書出命令をカウントするためのカウンタを、読出命令及び書込命令毎に有する。以下、それぞれのカウンタを、「読出用カウンタ」及び「書込用カウンタ」という。
コマンド数管理部121は、2次キャッシュ読書制御部107へ出力された読出命令及び書込命令の入力を統括制御部101から受ける。読出命令を受信した場合、コマンド数管理部121は、読出用カウンタを1つインクリメントする。また、書込命令を受信した場合、コマンド数管理部121は、書込用カウンタを1つインクリメントする。
また、コマンド数管理部121は、2次キャッシュ読書制御部107へ出力された読出命令の完了の通知及び書込命令の完了の通知の入力を統括制御部101から受ける。読出命令の完了の通知を受信した場合、コマンド数管理部121は、読出用カウンタを1つデクリメントする。また、書込命令の完了の通知を受信した場合、コマンド数管理部121は、書込用カウンタを1つデクリメントする。
このように、コマンド数管理部121は、発行された読出命令及び書込命令の数をカウントし、完了した読出命令及び書込命令の数をカウント数から減らす。これにより、コマンド数管理部121は、その時点で2次キャッシュ読書制御部107へ発行中の読出命令及び書込命令の数、すなわち2次キャッシュ112に対するアクセス数が把握できる。
また、コマンド数管理部121は、コマンド数の送信指示の入力を統括制御部101から受ける。そして、コマンド数管理部121は、読出用カウンタ及び書込用カウンタの数を閾値算出部122へ出力する。以下では、コマンド数管理部121が出力した読出用カウンタの数を読出命令数という。また、コマンド数管理部121が出力した書込用カウンタの数を書込命令数という。このコマンド数管理部121が、「命令数管理部」の一例にあたる。
閾値算出部122は、NAND型フラッシュメモリ30に対する読出命令及び書込命令それぞれの負荷に基づく係数である、読出係数及び書込係数の情報を有する。ここでは、本実施例では、読出係数及び書込係数の一例として、NAND型フラッシュメモリ30の読み出しの応答性能と書き込みの応答性能の比の値を用いる。さらに、閾値算出部122は、NAND型フラッシュメモリ30が対応可能な最大コマンド数の情報を有する。また、閾値算出部122は、閾値算出の基準となる閾値の定数の情報を有する。ここで、本実施例では、閾値の定数として実施例1で算出される閾値を用いる場合で説明する。
閾値算出部122は、条件判定部108がリードモディファイライト処理を実行するか否かの判定を行う際に、読出命令数及び書込命令数の入力をコマンド数管理部121から受ける。そして、閾値算出部122は、読出命令数と読出係数とを乗算した値と書込命令数と書込係数とを乗算した値とを加算する。次に、閾値算出部122は、書込係数と最大コマンド数とを乗算した値で加算結果を除算する。そして、閾値算出部122は、除算結果と閾値の定数とを乗算して閾値を算出する。その後、閾値算出部122は、算出した閾値を条件判定部108へ出力する。
ここで、閾値の定数をCthとし、読出係数をaとし、書込係数をbとし、最大コマンド数をcmdmaxとし、時刻tにおける読出命令数をr(t)とし、時刻tにおける書込命令数をw(t)とする。そして、算出する時刻tの閾値をTH(t)とする。この場合、閾値算出部122は、TH(t)={a×r(t)+b×w(t)}/(b×cmdmax)という式により閾値を算出することができる。
閾値算出部122により算出される閾値は発行中の命令が多いと大きくなり、リードモディファイライト処理が実行され難くなる。反対に、閾値算出部122により算出される閾値は発行中の命令が少ないと小さくなり、リードモディファイライト処理が実行され易くなる。また、読出係数及び書込係数の値により、発行中の命令の数が同じでも、読出命令の比率が多い場合と、書込命令の比率が多い場合とで閾値が異なる。具体的には、書込処理の方が読出処理よりも応答性能が低いことから、閾値算出部122は、書込命令の比率が多い場合には閾値が大きくなり、読出命令の比率が多い場合には閾値が小さくなるように閾値を算出する。すなわち、閾値算出部122は、応答性能の低い書込命令を多く発行している場合、NAND型フラッシュメモリ30がビジー状態であると判定して、閾値を大きくし、リードモディファイライト処理を抑止する。
また、閾値算出部122により算出される閾値は、NAND型フラッシュメモリ30に最大コマンド数の書込命令が発行中の場合に最大となる、すなわち閾値の定数と一致する。また、NAND型フラッシュメモリ30に命令が1つも発行されていない場合は、閾値算出部122により算出される閾値は0となる。
このように、閾値算出部122は、閾値にNAND型フラッシュメモリ30への発行中の命令数を反映させる。これにより、ストレージ装置1は、NAND型フラッシュメモリ30にアクセスが集中しているときにはリードモディファイライト処理を控えて、NAND型フラッシュメモリ30のスループットを確保する。また、ストレージ装置1は、NAND型フラッシュメモリ30が空いているときにはリードモディファイライト処理の実行を増やすことで、2次キャッシュ112上のデータを保持しヒット率を確保する。このように、閾値算出部122による動的な閾値の変更により、スループットとヒット率とのバランスを取った制御を行うことが可能となる。
条件判定部108は、リードモディファイライト処理を実行するか否かの判定要求の入力を統括制御部101から受ける。さらに、条件判定部108は、閾値の入力を閾値算出部122から受ける。そして、条件判定部108は、閾値算出部122から取得した閾値を用いて、リードモディファイライトを実行するか否かの判定を行う。
次に、図16を参照して、本実施例に係るストレージ装置1によるリードモディファイライト処理を実行するか否かの判定処理の流れについて説明する。図16は、実施例2に係るストレージ装置によりライトアクセス延長時のデータ書き込み処理のフローチャートである。
コマンド数管理部121は、自己が有するカウンタを用いて、2次キャッシュ読書制御部107に対して発行中の読出命令の数及び書込命令の数である読出命令数及び書込命令数をカウントする(ステップS201)。
コマンド数管理部121は、統括制御部101からの通知により、リードモディファイライト処理を実行するか否かの判定を開始するか否かを判定する(ステップS202)。判定を開始しない場合(ステップS202:否定)、コマンド数管理部121は、ステップS201に戻る。
判定を開始する場合(ステップS202:肯定)、コマンド数管理部121は、読出命令数及び書込命令数を閾値算出部122へ出力する(ステップS203)。
閾値算出部122は、読出命令数及び書込命令数を閾値算出部122から取得する。そして、閾値算出部122は、閾値の定数、読出係数、書込係数、最大コマンド数、読出命令数及び書込命令数を用いて閾値を算出する(ステップS204)。そして、閾値算出部122は、算出した閾値を条件判定部108へ出力する。
条件判定部108は、判定に用いる閾値を閾値算出部122から取得する(ステップS205)。
その後、条件判定部108は、取得した閾値を用いて、リードモディファイライト処理を実行するか否かを判定する。そして、2次キャッシュ読書制御部107は、条件判定部108による判定結果にしたがって2次キャッシュ112へのデータの書き込みを行う(ステップS206)。ここで、ステップS206で実行される処理は、例えば、図14で示される処理である。
以上に説明したように、本実施例に係るストレージ装置は、2次キャッシュへのアクセス状態に応じてリードモディファイライトを実行する頻度を調整する。これにより、2次キャッシュのスループットの維持と2次キャッシュ上のデータの保持とのバランスをより適切に取ることができる。
ここで、以上の各実施例における説明では、2次キャッシュの管理単位として1次キャッシュのチャンクサイズを用いたが、管理単位はこれに限らない。例えば、管理単位は、論理ブロック単位でもよいし、2次キャッシュのチャンク単位でもよい。管理単位が細かくなるほど、管理単位領域を無効にしてよいか否かの判定が適切に行えるようになる。
なお、上記した各実施例を実現するためのプログラムは、必ずしも最初からディスク20に記憶させることを要しない。例えば、ホスト2に挿入されるFD(フレキシブルディスク)、CD−ROM(Compact Disk Read Only Memory)、DVD(Digital Versatile Disk)、光磁気ディスク、ICカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、ホスト2がこれらからプログラムを読み出してストレージ装置1に送信し実行させるようにしてもよい。
さらには、公衆回線、インターネット、LAN、WANなどを介してホスト2に接続される「他のコンピュータ(またはサーバ)」などにプログラムを記憶させておく。そして、ホスト2がこれらからプログラムを読み出してストレージ装置1に送信し実行させるようにしてもよい。
1 ストレージ装置
2 ホスト
10 コントローラ
11 CPU
12 DRAM
13 バススイッチ
14 アダプタ
15 チャネルアダプタ
20 ディスク
30 NAND型フラッシュメモリ
101 統括制御部
102 テーブル管理部
103 1次キャッシュ管理テーブル
104 2次キャッシュ管理テーブル
105 優先度算出部
106 1次キャッシュ読書制御部
107 2次キャッシュ読書制御部
108 条件判定部
109 ディスク読書制御部
111 1次キャッシュ
112 2次キャッシュ
113 リードモディファイライト用バッファ
121 コマンド数管理部
122 閾値算出部

Claims (7)

  1. 書込単位領域毎に1回のデータの書き込みが行われ、且つ、管理単位領域毎に書き込まれたデータが管理されるキャッシュと、
    前記キャッシュの特定の書込単位領域の一部へ書込データを書き込む場合、前記特定の書込単位領域が前記キャッシュの前記管理単位領域をまたぐか否かを判定し、前記特定の書込単位領域が前記管理単位領域をまたぐ場合、前記特定の書込単位領域における前記書込データが書き込まれない非更新領域を含む前記管理単位領域の利用状況を基に、前記非更新領域の既格納データを保持するか否かを判定する判定部と、
    前記判定部により前記既格納データを保持すると判定された場合、前記既格納データを保持しつつ前記書込データを前記特定の管理単位領域へ書き込む書込部と
    を備えたことを特徴とするストレージ装置。
  2. 前記書込部は、前記判定部により前記非更新領域のデータを保持しないと判定された場合、前記非更新領域を含む前記管理単位領域を無効にして、前記書込データを書き込むことを特徴とする請求項1に記載のストレージ装置。
  3. 一時記憶部をさらに有し、
    前記書込部は、前記書込データを前記一時記憶部に格納し、前記既格納データを前記一時記憶部に格納し、前記書込データと前記既格納データとを前記一時記憶部上で組み合わせて組合データを作成し、前記組合データを前記特定の書込単位領域へ書き込むことを特徴とする請求項1又は2に記載のストレージ装置。
  4. 前記判定部は、前記利用状況を基に前記非更新領域を含む前記管理単位領域の優先度を算出し、前記優先度が閾値を超える場合に前記非更新領域の前記既格納データを保持すると判定することを特徴とする請求項1〜3のいずれか一つに記載のストレージ装置。
  5. 発行中の前記キャッシュに対する書込命令及び読出命令の数をカウントする命令数管理部と、
    前記命令数管理部のカウント結果を基に、前記閾値を算出する閾値算出部とをさらに備え、
    前記判定部は、前記閾値算出部により算出された前記閾値を用いて判定を行うことを特徴とする請求項4に記載のストレージ装置。
  6. 書込単位領域毎に1回のデータの書き込みが行われ、且つ、管理単位領域毎に書き込まれたデータが管理されるキャッシュにおける特定の書込単位領域の一部へ書込データを書き込む場合、前記特定の書込単位領域が前記キャッシュの管理単位領域をまたぐか否かを判定し、
    前記特定の書込単位領域が前記管理単位領域をまたぐ場合、前記特定の書込単位領域における前記書込データが書き込まれない非更新領域を含む前記管理単位領域の利用状況を基に、前記非更新領域の既格納データを保持するか否かを判定し、
    前記既格納データを保持すると判定された場合、前記既格納データを保持しつつ前記書込データを前記特定の管理単位領域へ書き込む
    ことを特徴とするキャッシュ書込制御方法。
  7. 書込単位領域毎に1回のデータの書き込みが行われ、且つ、管理単位領域毎に書き込まれたデータが管理されるキャッシュにおける前記特定の書込単位領域の一部へ書込データを書き込む場合、前記特定の書込単位領域が前記キャッシュの管理単位領域をまたぐか否かを判定し、
    前記特定の書込単位領域が前記管理単位領域をまたぐ場合、前記特定の書込単位領域における前記書込データが書き込まれない非更新領域を含む前記管理単位領域の利用状況を基に、前記非更新領域の既格納データを保持するか否かを判定し、
    前記既格納データを保持すると判定された場合、前記既格納データを保持しつつ前記書込データを前記特定の管理単位領域へ書き込む
    処理をコンピュータに実行させることを特徴とするキャッシュ書込制御プログラム。
JP2015126942A 2015-06-24 2015-06-24 ストレージ装置、キャッシュ書込制御方法及びキャッシュ書込制御プログラム Pending JP2017010396A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015126942A JP2017010396A (ja) 2015-06-24 2015-06-24 ストレージ装置、キャッシュ書込制御方法及びキャッシュ書込制御プログラム
US15/139,389 US20160378656A1 (en) 2015-06-24 2016-04-27 Storage device, cache-write control method, and cache-write control program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015126942A JP2017010396A (ja) 2015-06-24 2015-06-24 ストレージ装置、キャッシュ書込制御方法及びキャッシュ書込制御プログラム

Publications (1)

Publication Number Publication Date
JP2017010396A true JP2017010396A (ja) 2017-01-12

Family

ID=57602670

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015126942A Pending JP2017010396A (ja) 2015-06-24 2015-06-24 ストレージ装置、キャッシュ書込制御方法及びキャッシュ書込制御プログラム

Country Status (2)

Country Link
US (1) US20160378656A1 (ja)
JP (1) JP2017010396A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107103652A (zh) * 2017-03-13 2017-08-29 珠海格力电器股份有限公司 数据的存储方法和装置

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI588824B (zh) * 2015-12-11 2017-06-21 捷鼎國際股份有限公司 加快在不連續頁面寫入資料之電腦系統及其方法
US10331385B2 (en) * 2016-09-29 2019-06-25 Intel Corporation Cooperative write-back cache flushing for storage devices
CN108228088B (zh) * 2016-12-21 2020-10-23 伊姆西Ip控股有限责任公司 用于管理存储***的方法和设备
US11188234B2 (en) 2017-08-30 2021-11-30 Micron Technology, Inc. Cache line data
US10140042B1 (en) 2017-09-13 2018-11-27 Toshiba Memory Corporation Deterministic read disturb counter-based data checking for NAND flash
US10691358B2 (en) * 2018-06-14 2020-06-23 Silicon Motion, Inc. Memory controller and method capable of using different storing modes to store data units having different data sizes
JP7089423B2 (ja) * 2018-07-12 2022-06-22 ルネサスエレクトロニクス株式会社 情報処理装置及び制御方法
CN111914116B (zh) * 2019-05-09 2024-04-05 浙江宇视科技有限公司 视频数据存储方法、装置、终端设备及可读存储介质
US11474941B2 (en) 2020-03-09 2022-10-18 International Business Machines Corporation Using multi-tiered cache to satisfy input/output requests
CN111813340A (zh) * 2020-07-10 2020-10-23 杭州海康威视数字技术股份有限公司 基于固态硬盘的指令响应方法、***、装置及电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020174253A1 (en) * 2001-05-18 2002-11-21 Broadcom Corporation System on a chip for networking
JP2007034944A (ja) * 2005-07-29 2007-02-08 Sony Corp コンピュータシステム
JP2010033396A (ja) * 2008-07-30 2010-02-12 Sony Corp 情報処理装置、および情報処理方法、並びにプログラム
JP2010160544A (ja) * 2009-01-06 2010-07-22 Core Micro Systems Inc キャッシュメモリシステム及びキャッシュメモリの制御方法
US20110173395A1 (en) * 2010-01-12 2011-07-14 International Business Machines Corporation Temperature-aware buffered caching for solid state storage
US20150149721A1 (en) * 2013-11-25 2015-05-28 Apple Inc. Selective victimization in a multi-level cache hierarchy

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5008886A (en) * 1989-01-27 1991-04-16 Digital Equipment Corporation Read-modify-write operation
US5802572A (en) * 1996-03-15 1998-09-01 International Business Machines Corporation Write-back cache having sub-line size coherency granularity and method for maintaining coherency within a write-back cache
US6718444B1 (en) * 2001-12-20 2004-04-06 Advanced Micro Devices, Inc. Read-modify-write for partial writes in a memory controller
US8108619B2 (en) * 2008-02-01 2012-01-31 International Business Machines Corporation Cache management for partial cache line operations
US8285918B2 (en) * 2009-12-11 2012-10-09 Nimble Storage, Inc. Flash memory cache for data storage device
US8806153B2 (en) * 2011-02-22 2014-08-12 International Business Machines Corporation Partial line cache write injector for direct memory access write
US9158706B2 (en) * 2011-10-31 2015-10-13 International Business Machines Corporation Selective space reclamation of data storage memory employing heat and relocation metrics

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020174253A1 (en) * 2001-05-18 2002-11-21 Broadcom Corporation System on a chip for networking
JP2007034944A (ja) * 2005-07-29 2007-02-08 Sony Corp コンピュータシステム
JP2010033396A (ja) * 2008-07-30 2010-02-12 Sony Corp 情報処理装置、および情報処理方法、並びにプログラム
JP2010160544A (ja) * 2009-01-06 2010-07-22 Core Micro Systems Inc キャッシュメモリシステム及びキャッシュメモリの制御方法
US20110173395A1 (en) * 2010-01-12 2011-07-14 International Business Machines Corporation Temperature-aware buffered caching for solid state storage
US20150149721A1 (en) * 2013-11-25 2015-05-28 Apple Inc. Selective victimization in a multi-level cache hierarchy

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107103652A (zh) * 2017-03-13 2017-08-29 珠海格力电器股份有限公司 数据的存储方法和装置
CN107103652B (zh) * 2017-03-13 2020-06-16 珠海格力电器股份有限公司 数据的存储方法和装置

Also Published As

Publication number Publication date
US20160378656A1 (en) 2016-12-29

Similar Documents

Publication Publication Date Title
JP2017010396A (ja) ストレージ装置、キャッシュ書込制御方法及びキャッシュ書込制御プログラム
EP3229142B1 (en) Read cache management method and device based on solid state drive
JP5066241B2 (ja) メモリシステム
US8898541B2 (en) Storage controller, storage device, information processing system, and storage controlling method
US8645626B2 (en) Hard disk drive with attached solid state drive cache
US8886882B2 (en) Method and apparatus of storage tier and cache management
US8886880B2 (en) Write cache management method and apparatus
US9189410B2 (en) Hypervisor-based flash cache space management in a multi-VM environment
JP6106028B2 (ja) サーバ及びキャッシュ制御方法
US9910798B2 (en) Storage controller cache memory operations that forego region locking
US20170024140A1 (en) Storage system and method for metadata management in non-volatile memory
TW201142591A (en) Semiconductor memory device
US20170185520A1 (en) Information processing apparatus and cache control method
US8656119B2 (en) Storage system, control program and storage system control method
JP2015001909A (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
US10884924B2 (en) Storage system and data writing control method
KR102220468B1 (ko) 트랜잭션 지원을 가진 선점형 캐시 후기록
JP3431581B2 (ja) ディスク制御システムおよびデータ再配置方法
KR101456370B1 (ko) 스토리지 관리 방법 및 장치
US10608670B2 (en) Control device, method and non-transitory computer-readable storage medium
JP2018181207A (ja) ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
US20140337583A1 (en) Intelligent cache window management for storage systems
JP6721765B2 (ja) メモリシステムおよび制御方法
US20210263648A1 (en) Method for managing performance of logical disk and storage array
US11914519B2 (en) Affinity-based cache operation for a persistent storage device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180306

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181130

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20190611