JP6000376B2 - 特性の異なる複数種類のキャッシュメモリを有する情報処理装置 - Google Patents
特性の異なる複数種類のキャッシュメモリを有する情報処理装置 Download PDFInfo
- Publication number
- JP6000376B2 JP6000376B2 JP2014554203A JP2014554203A JP6000376B2 JP 6000376 B2 JP6000376 B2 JP 6000376B2 JP 2014554203 A JP2014554203 A JP 2014554203A JP 2014554203 A JP2014554203 A JP 2014554203A JP 6000376 B2 JP6000376 B2 JP 6000376B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- cache
- memory
- segment
- cpu
- 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.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims description 208
- 230000010365 information processing Effects 0.000 title claims description 21
- 238000000034 method Methods 0.000 claims description 191
- 238000003860 storage Methods 0.000 claims description 139
- 230000008569 process Effects 0.000 description 177
- 238000012545 processing Methods 0.000 description 69
- 238000010586 diagram Methods 0.000 description 34
- 230000005540 biological transmission Effects 0.000 description 20
- 230000004044 response Effects 0.000 description 17
- 238000007726 management method Methods 0.000 description 15
- 238000012546 transfer Methods 0.000 description 13
- 239000004065 semiconductor Substances 0.000 description 9
- 238000012552 review Methods 0.000 description 7
- 238000013500 data storage Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 239000000835 fiber Substances 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000002457 bidirectional effect Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000013403 standard screening design Methods 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/068—Hybrid storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/225—Hybrid cache memory, e.g. having both volatile and non-volatile portions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明は、データのキャッシュ制御の技術に関する。
メモリの一例として、半導体不揮発性メモリであるフラッシュメモリが知られている。フラッシュメモリは、DRAMやSRAM等の揮発性メモリ(以下、RAMと表記する。)に比べて記憶密度を高めやすく、容量当たりのコスト(ビットコスト)を安くすることが可能である。また、フラッシュメモリは、磁気ディスク等に比べて高速なデータアクセスが可能である。そのため、フラッシュメモリをディスクキャッシュとして利用することで安価な大容量ディスクキャッシュを作ることが可能となる。
しかし、フラッシュメモリには次のような制限がある。まず、フラッシュメモリの各ビットの更新は1から0(または0から1)の一方向に限定される。そして、ビットに対して逆の変更が必要な場合は、ブロックからデータの消去を行って一旦ブロック全体を1(または0)にする必要がある。ここで、フラッシュメモリが有している複数のブロック(物理ブロック)をブロックと呼ぶ。各ブロックは、複数のページ(物理ページ)で構成されている。また、フラッシュメモリにおけるブロックの消去回数には上限があり、例えばSLC(Single Level Cell)のNAND型フラッシュメモリの場合には、消去回数の上限が、一万から十万回程度であり、MLC(Multiple Level Cell)のNAND型フラッシュメモリの場合には、消去回数の上限が数千回程度である。そのため、フラッシュメモリをディスクキャッシュとして使用する場合、高頻度な書き換えを行うと、比較的短期間に消去回数が上限に達してしまい、使えなくなるおそれがある。
また、フラッシュメモリのアクセス性能はRAMに比べると低いため、RAMの代わりにフラッシュメモリをディスクキャッシュに用いると、ディスクキャッシュがシステム性能のボトルネックになるおそれがある。
また、フラッシュメモリ以外にも相変化メモリ、磁気抵抗メモリ、抵抗変化メモリなどの不揮発性半導体メモリも開発されており、これらの不揮発性半導体メモリもRAMに比べて記憶密度を高めやすく、RAMに比べて安価で大容量なメモリとなる可能性がある。しかしながら、これらの不揮発性半導体メモリも、一般的には、RAMに比べると低速であったり、あるいは短寿命であったりする。
キャッシュに関する技術としては、例えば特許文献1に開示された技術のように、RAMなどの揮発性メモリを一時格納先とし、不揮発性メモリを補助的に使用する技術が知られている。
フラッシュメモリなどの不揮発性半導体メモリは、一般的にRAMに比べてアクセス性能が低く、HDDに比べてアクセス性能が高い特性を有する。そのため、特許文献1のように、フラッシュメモリをRAMキャッシュと、HDD等のデータの最終格納先(最終ストレージデバイス)との間のキャッシュとして使用する方式が用いられている。
しかしながら、先に述べたとおりフラッシュメモリなどの不揮発性半導体メモリは消去回数の制約があり、高頻度な書き換えが行われる場合、比較的短期間のうちに消去回数が上限に達し、使用できなくなる(つまり、短寿命である)。一般にディスクキャッシュのアクセス頻度は、HDD等の最終ストレージデバイスのアクセス頻度よりも高いため、フラッシュメモリをディスクキャッシュとして用いる場合、フラッシュメモリを最終ストレージデバイスとして用いる場合に比べ、より早期に使用できなくなる(長期間の使用に耐えられない)可能性が高い。フラッシュメモリ部分が交換可能な装置構成であったとしても、フラッシュメモリ部分が短寿命であれば、当該部分の交換頻度が高くなるため、装置の保守管理コストを押し上げることになる。
また、特許文献1のようにRAMとフラッシュメモリとの階層構造を持つキャッシュ方式では、例えばリード対象データがフラッシュメモリに格納されていた場合、リード対象データを一旦RAMキャッシュにステージングした後に当該データをホスト計算機へ送信するため、ステージング処理のオーバヘッドが発生する。昨今のストレージシステムに対する要求性能の伸びを鑑みるに、この処理オーバヘッドは無視することのできないものであり、より処理オーバヘッドの小さいI/O処理方式が求められる。
また、前述のとおり、フラッシュメモリなどの不揮発性半導体メモリのアクセス性能は一般的にRAMに比べて低いため、不揮発性半導体メモリを用いたディスクキャッシュがシステム性能のボトルネックになるおそれがある。
本発明の情報処理装置は、特性の異なる複数種類のキャッシュメモリを有し、キャッシュ対象のデータのアクセス特性に基づいて、データのキャッシュ先とするキャッシュメモリの種類を決定し、決定した種類のキャッシュメモリにデータをキャッシュする。情報処理装置は、例えば、複数のストレージデバイスと、複数のストレージデバイスに接続されたコントローラとを有したストレージ装置であって良い。コントローラが、前述の複数種類のキャッシュメモリと、それら複数種類のキャッシュメモリに接続された制御デバイスとを有して良い。複数のストレージデバイスの各々は、例えば、後述の最終ストレージデバイスで良い。
本発明の一実施形態では、特性の異なる複数種類のキャッシュメモリとして、フラッシュメモリとRAMが用いられる。フラッシュメモリとRAMの特性を比較すると、フラッシュメモリはRAMと比べて、アクセス性能が低く、また書き換え回数に制限がある等の特性の違いがあるので、情報処理装置は、キャッシュメモリに格納されるデータが、RAMの特性に適合するデータは、RAMを用いたキャッシュメモリにキャッシュし、フラッシュメモリの特性に適合するデータは、フラッシュメモリを用いたキャッシュメモリにキャッシュする。具体的には、たとえば高スループットが求められる、あるいは更新頻度が高いと判断されるデータは、フラッシュメモリを用いたキャッシュメモリには書き込まず、RAMを用いたキャッシュメモリに直接キャッシュするよう制御する。
本発明によれば、高価なRAMに加え、RAMよりも低価格でHDDよりもアクセス性能が高いフラッシュメモリなどの記憶媒体をキャッシュとして適切に利用することができるようになるので、低価格で大容量のキャッシュを備えた情報処理装置を提供することができる。
最初に、本発明の概要を説明する。図1は、本発明の情報処理装置の一例であるストレージシステムにおける、キャッシング先選択処理の概要を示す概念図である。
企業や組織で扱われる電子情報は急増していることから、大量のデータをより高速に処理するために、ユーザのITシステムに対する要求性能は年々高くなってきている。一方でITシステムのコストを削減したいというニーズも高く、ユーザからは、高性能であるとともに、低価格な情報処理装置が求められている。たとえば大量のデータアクセスが発生する計算機システムでは、データを格納するためのストレージシステムの性能の良し悪しが、システムの性能を大きく左右する。
ストレージシステムには、そのアクセス性能を向上させるために、キャッシュ(ディスクキャッシュ)が設けられる。一般にキャッシュには、データの最終的な格納先(最終ストレージデバイス)であるハードディスク等よりもアクセス性能の高い記憶媒体である、DRAMやSRAMなどのランダムアクセスメモリ(以下、「RAM」と呼ぶ)が用いられることが多い。RAMの欠点は、高価格(ビットコストが高い)ことであり、RAMを用いたキャッシュをストレージシステムに多く搭載すれば、ストレージシステムの平均的な性能を引き上げることはできるが、高価格になるという問題がある。
本発明におけるストレージシステムは、図1に示すように、ストレージコントローラ30上にキャッシュとして、FM321とRAM34を搭載し、最終ストレージデバイスであるHDD40やSSD41に格納されるデータを、FM321またはRAM34のいずれかにキャッシュする。FMはRAMと比べて、低ビットコストであるため、低価格で大容量のキャッシュ記憶領域を提供することができる。
一方FMとRAMの特性を比較すると、FMはRAMと比べてアクセス性能が低く、また書き換え回数に制限がある等の特性の違いがあるので、ストレージコントローラ30は、キャッシュ対象のデータのアクセス特性に応じて、RAMの特性に適合するデータは、キャッシュ先としてRAM34を選択し、フラッシュメモリの特性に適合するデータは、キャッシュ先としてFM321を選択する制御を行う。データのアクセス特性としては、例えば、キャッシュ対象データのアクセス頻度や、アクセスパターン等が用いられ、ストレージコントローラ30はたとえば、高スループットが求められる、あるいは更新頻度が高いと判断されるデータは、フラッシュメモリを用いたキャッシュメモリには書き込まず、RAM34をキャッシュ先として選択する。
これにより、高価なRAMに加え、RAMよりも低価格でHDDよりもアクセス性能が高いフラッシュメモリなどの記憶媒体をキャッシュとして適切に利用することができるストレージシステムを実現できる。本発明におけるストレージシステムは特に、オンライントランザクション処理(OLTP)やERP(Enterprise Resource Planning)等の大量のデータに対するデータアクセスを行う業務アプリケーションが実行される、計算機システムにおける利用に好適である。
以下では、いくつかの実施例について、図面を参照して説明する。なお、以後の説明では「aaaテーブル」等の表現にて情報を説明する場合があるが、これら情報は、テーブル等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「aaaテーブル」等について「aaa情報」と呼ぶことがある。
また、以後の説明では「プログラム」を主語として説明を行う場合があるが、プログラムは、プロセッサ(典型的にはCPU(Central Processing Unit))を含む制御デバイスによって実行されることで、定められた処理をメモリ及びI/F(インタフェース)を用いながら行うため、プロセッサ又は制御デバイスを主語とした説明としてもよい。制御デバイスは、プロセッサであっても良いし、プロセッサとハードウェア回路を含んでいても良い。また、プログラムを主語として開示された処理は、ホスト計算機、ストレージシステムが行う処理としてもよい。また、プログラムの一部または全ては専用ハードウェアによって実現されてもよい。また、各種プログラムはプログラム配布サーバや、計算機が読み取り可能な記憶メディアによって各計算機にインストールされてもよい。記憶メディアとしては、例えば、ICカード、SDカード、DVD等であってもよい。
まず、実施例1に係る情報システムについて説明する。
図2は、実施例1に係る情報システムの第1の構成例を示す図である。
情報システムは、ホスト計算機10と、ホスト計算機に直接あるいはネットワークを介して接続されるストレージシステム20(情報処理装置の一例)とを有する。ストレージシステム20は、ストレージコントローラ30と、ストレージコントローラ30に接続されるHDD(Hard Disk Drive)40および/またはSSD(Solid State Drive)41とを有する。HDD40および/またはSSD41は、ストレージデバイスの一例である。HDD40および/またはSSD41は、ストレージコントローラ30に内蔵されていてもよい。
ストレージコントローラ30は、一つ以上のフロントエンドインタフェース(FE I/F)31、1つ以上のバックエンドインタフェース(BE I/F)35、1つ以上のFM(フラッシュメモリ)ボード32、CPU33、およびRAM(Random Access Memory)34を含む。RAM34は、メモリ(メモリデバイス)であり、キャッシュメモリの一例である。
本発明の実施例1に係るストレージコントローラ30は、複数のストレージデバイス(HDD40やSSD41)から1ないし複数の論理ボリューム(実体的な論理ボリューム)を形成して、ホスト計算機10に提供する(ホスト計算機10が当該形成された論理ボリュームを認識できるようにする)。あるいは、いわゆるシンプロビジョニング技術によって形成される論理ボリューム(仮想的な論理ボリュームであって、当該仮想的な論理ボリューム内の各領域には、動的に記憶領域が割り当てられる)をホスト計算機10に提供する。ホスト計算機10は、この提供された論理ボリューム(実体的な論理ボリュームまたは仮想的な論理ボリューム)及び論理ボリューム内の位置(論理ブロック番号。LBAと略記されることもある)を指定したI/Oコマンド(ライトコマンド又はリードコマンド)を発行して、論理ボリュームに対するデータのリード・ライト処理を行う。ただし、ストレージコントローラ30が論理ボリュームを提供するものでない態様、たとえばストレージシステム20が、各HDD40、各SSD41を、それぞれ単一の記憶デバイスとしてホスト計算機10に提供する構成であっても、本発明は有効である。なお、ホスト計算機が認識する論理ボリュームのことを、論理ユニット(Logical Unit。LUと略記されることもある)と呼ぶこともあり、本明細書においては特に断りのない限り、論理ボリュームと論理ユニット(LU)の語は、いずれも同一の概念を意味するものとして用いられている。
FE I/F31は、ホスト計算機10と通信するためのインタフェースデバイスである。BE I/F35は、HDD40又はSSD41と通信するためのインタフェースデバイスである。BE I/F35は、例えばSASやFibre Channelのインタフェースデバイスである。FMボード32は、FMチップ321(図4参照)を搭載したボードである。CPU33は、各種処理を実行する。RAM34は、CPU33で実行するプログラム及び各種テーブルを記憶する。RAM34は、キャッシュメモリ領域を含んでおり、キャッシュメモリ領域は、複数のキャッシュセグメントで構成される。キャッシュセグメントは、CPU33によって管理される単位領域である。例えば、RAM34におけるキャッシュメモリ領域では、キャッシュセグメント単位で、領域確保、データの読出し及びデータの書込みが行われて良い。キャッシュメモリ領域には、最終ストレージデバイスから読み出されるデータ、及び、最終ストレージデバイスに書き込まれるデータ(典型的には、ホスト計算機10からのI/Oコマンド(ライトコマンド又はリードコマンド)に従うデータであるユーザデータ)がキャッシュされる(一時的に格納される)。最終ストレージデバイスとは、I/Oコマンドで指定されているI/O先に従いストレージコントローラ30によってI/Oが行われるデータが格納されるストレージデバイスである。具体的には、例えば、I/Oコマンド(ライトコマンド)に従うデータは、一旦はキャッシュメモリ領域に格納されるが、その後、I/Oコマンドで指定されている論理ユニット(論理ボリューム)を構成しているストレージデバイスの領域(論理ボリュームが仮想的な論理ボリュームである場合には、当該論理ボリュームの領域に対して割り当てられているストレージデバイスの領域)に格納される。最終ストレージデバイスとは、この論理ボリュームを形成するストレージデバイスのことを意味する。本実施例では、最終ストレージデバイスは、HDD又はSSDであるが、他種のストレージデバイス、例えば、複数のストレージデバイスを有する外部ストレージシステムであっても良い。
図2では、情報システムの各構成要素を1つずつ図示しているが、冗長化、高性能化、あるいは大容量化などのために、各構成要素を複数備えるようにしてもよい。また、各構成要素間はネットワークを介して接続されてもよい。ネットワークは、スイッチやエキスパンダなどを含んでいても良い。情報システムとしては、例えば図3のような構成が考えられる。
図3は、実施例1に係る情報システムの第2の構成例を示す図である。
図3に示す情報システムは、2つのストレージコントローラ30(ストレージコントローラA、ストレージコントローラB)を含む、これらのストレージコントローラ30は、ノードインタフェース(ノードI/F)36を介して接続される。ノードインタフェース36は、例えばInfiniband、Fibre Channel(FC)、Ethernet(登録商標)等のネットワークインタフェースのデバイスでもよく、また、PCI Expressのようなバスのインタフェースのデバイスでもよい。
これらストレージコントローラ30は、Fibre Channel、Ethernet、Infiniband等のネットワーク50を介してホスト計算機10に接続される。図3では、ネットワーク50をSAN(Storage Area Network)と総称する。
情報システムは、ドライブエンクロージャ60を有する。ドライブエンクロージャ60は、複数のHDD40やSSD41を格納する。複数のHDD40やSSD41は、ドライブエンクロージャ60内のエキスパンダ42に接続される。エキスパンダ42は、各ストレージコントローラ30のBE I/F35に接続される。BE I/F35がSASのインタフェースデバイスである場合には、エキスパンダ42は、例えばSAS Expanderであり、BE I/F35がFibre Channelのインタフェースデバイスである場合、エキスパンダ42は、例えばFCスイッチである。
図3では、ストレージシステム20は、ドライブエンクロージャ60を1つ備えているが、複数のドライブエンクロージャ60を備えてもよい。この場合、BE I/F35の複数のポートのそれぞれに対して各ドライブエンクロージャ60を直接接続してもよいし、BE I/F35のポートに、スイッチを経由して複数のドライブエンクロージャ60を接続してもよい。また、各ドライブエンクロージャ60のエキスパンダ42同士をカスケード接続することで複数のドライブエンクロージャ60を数珠繋ぎにして、BE I/F35のポートに接続するようにしてもよい。
図4は、実施例1に係るFMボードの構成図である。
FMボード32は、一つ以上のフラッシュメモリ(FM)チップ321、FMアダプタ320、バスコネクタ322、バッファメモリ323、及びバッテリ324を含む。なお、本実施例及び以降の実施例では、フラッシュメモリチップ321を備えたメモリボードであるFMボード32を代表例として説明をするが、FMボード32に代えて、フラッシュメモリ以外の不揮発半導体メモリ、例えばPRAM(相変化メモリ)やMRAM(磁気抵抗メモリ)、ReRAM(抵抗変化メモリ)のチップを備えたメモリボードを用いてもよい。FMボード32のようなメモリボードは、メモリ(メモリデバイス)であって、キャッシュメモリの一例である。
FMチップ321は、例えば、NAND型のフラッシュメモリのチップである。本実施例では、複数のFMチップ321は、キャッシュメモリ領域として使用され、CPU33によって、複数のキャッシュセグメントとして管理される。1つのキャッシュセグメントのサイズは、例えば、FMチップ321の消去単位であるブロックの複数個分のサイズである。FMチップ321は、RAM34よりもアクセス性能が低く、また、データの消去回数に制限があるという特性を有している。1つのFMチップ321は、複数のブロック(物理ブロック)で構成されている。1つの物理ブロックは、複数のページ(物理ページ)で構成されている。
バスコネクタ322は、ストレージコントローラ30上のPCI ExpressなどのバスにFMボード32を接続するための接続端子である。例えば、FMボード32とストレージコントローラ30の主基板とを一体のものとして実装する場合は、バスコネクタ322を省略する構成としてもよい。
バッファメモリ323は、例えば、DRAMやSRAMなどのRAMであり、外部からFMチップ321へのデータ転送時や、FMチップ321から外部へのデータ転送時のバッファとして用いられる。バッファメモリ323は、FMプロセッサ320bが実行するプログラムや、FMプロセッサ320bやDMAC320d等が使用するデータを格納してもよい。
バッテリ324は、バッファメモリ323によるデータの記憶に必要な電力のバックアップを行うためのバッテリである。従って、バッファメモリ323は、外部からの電力供給が遮断された場合であっても、バッテリ324の電力により、継続してデータを記憶しておくことができる。
FMアダプタ320は、FMコントローラ320a、FMプロセッサ320b、バスコントローラ320c、DMA(Direct Memory Access)コントローラ(DMAC)320d、およびRAMコントローラ320eを含む。FMアダプタ320は、例えば、ASICなどの集積回路である。なお、本実施例では、FMアダプタ320は、一つの集積回路に各構成の回路群を内蔵しているが、これらの回路を複数の集積回路に分割して実装してもよい。また、ある回路(例えばDMAC320d)の機能を別の回路(例えばFMプロセッサ320b)で代替してもよい。
図5は、実施例1に係るストレージコントローラのRAMの構成図である。
RAM34は、例えばDRAMやSRAM等のランダムアクセスメモリである。RAM34は、CPU33が実行するストレージ制御プログラム340、キャッシュ制御情報341、アクセスモニタテーブル342、およびジョブ制御テーブル344を格納する。また、RAM34には、データをキャッシュして管理するための複数のキャッシュセグメント343が格納される。このキャッシュセグメント343に、HDD40又はSSD41に格納されるデータ、又は、HDD40又はSSD41から読み出されたデータをキャッシュすることができる。
ストレージ制御プログラム340は、キャッシュ制御プログラムの一例であり、キャッシュに関わる各種制御処理を実行する。なお、処理の詳細については後述する。キャッシュ制御情報341は、キャッシュディレクトリ100(図7参照)と、クリーンキュー(図9参照)と、ダーティキュー(図9参照)と、FMフリーキュー200(図7参照)と、RAMフリーキュー300(図7参照)が含まれる。キャッシュ制御情報341に関するデータ構造については後述する。
RAM34の実装方法としては、例えば基板上に複数のRAMのメモリチップを搭載したDIMMのようなメモリモジュールを構成しておき、このメモリモジュールをストレージコントローラ30の主基板上のメモリスロットに接続するようにしてもよい。なお、ストレージコントローラ30の主基板と別の基板上にRAMを搭載する構成とすることにより、ストレージコントローラ30の主基板とは独立に保守交換やRAM容量増設を行えるようにすることができる。また、停電など不慮の障害が発生した場合に、RAM34上の記憶内容が消失することを避けるために、バッテリを設けて、停電時等にもRAM34上の記憶内容を維持できるような構成にしてもよい。
図6は、実施例1に係るアクセスモニタテーブルの構成図である。
アクセスモニタテーブル342は、ストレージシステム20における論理ユニット(論理ボリューム)内の各部分領域に対するアクセスの頻度や、データ読み出し・書き込みの速度を集計するための情報を記憶するとともに、集計結果を記憶するためのテーブルである。アクセスモニタテーブル342は、論理ユニット内の各部分領域のそれぞれに対して、例えば、リード速度342a、ライト速度342b、リード頻度342c、ライト頻度342d、リード量(バイト数)カウンタ342e、ライト量カウンタ342f、リードコマンドカウンタ342g、ライトコマンドカウンタ342h、およびモニタ開始時刻342iを記憶する。部分領域(つまり1つのアクセスモニタテーブル342でアクセス頻度やアクセス速度を集計する単位)のサイズとしては、様々なサイズ(ただし論理ボリュームのサイズよりは小さいサイズ)を選択可能であるが、後述する通り、本発明におけるストレージシステムでは、アクセスモニタテーブル342の情報に基づいて、キャッシュセグメントの割り当てを行うので、部分領域のサイズを、キャッシュセグメントと同じサイズとする、あるいはキャッシュセグメントの整数倍とすることが、好ましい。
リード速度342aは、論理ユニット内の部分領域に対するリード速度(例えば、単位は、MB/Sec)である。ライト速度342bは、論理ユニット内の部分領域に対するライト速度(例えば、単位は、MB/Sec)である。リード頻度342cは、論理ユニット内の部分領域に対するリードの発生頻度である。ライト頻度342dは、論理ユニット内の部分領域に対するライトの発生頻度である。リード量カウンタ342eは、論理ユニット内の部分領域においてリードされたデータのデータ量のカウンタである。ライト量カウンタ342fは、論理ユニット内の部分領域においてライトされたデータのデータ量のカウンタである。リードコマンドカウンタ342gは、論理ユニット内の部分領域においてリードを行ったコマンドの数のカウンタである。ライトコマンドカウンタ342hは、論理ユニット内の部分領域においてライトを行ったコマンドの数のカウンタである。モニタ開始時刻342iは、論理ユニット内の部分領域に対するモニタを開始した時刻である。リード量カウンタ342e、ライト量カウンタ342f、リードコマンドカウンタ342g、およびライトコマンドカウンタ342hが集計用のカウンタであり、リード速度342a、ライト速度342b、リード頻度342c、およびライト頻度342dが、集計結果である。ストレージシステム20における論理ユニット内の各部分領域に対するアクセスの頻度(リード頻度、ライト頻度)や、データ読み出し・書き込みの速度(リード速度、ライト速度)を集計するアクセスモニタ集計処理(図17参照)については後述する。
続いて、図7以降では、実施例1に係るキャッシュ管理データ構造について説明するが、その前に、ボリューム(論理ボリューム)とキャッシュ管理データとの関係について、概要を説明する。図34は、本発明の実施例における、論理ボリューム、スロット、キャッシュセグメントの関係を示す概念図である。ホスト計算機10が論理ボリューム1000にアクセスする際、最小アクセス単位はブロック(たとえば512バイト)であり、論理ボリュームの各ブロックには、論理ブロックアドレス(LBA。あるいは本明細書では、論理アドレスと呼ぶこともある)が付与されている(図34の要素1010は論理ブロックアドレスを表している)。また、ストレージシステム20では、論理ボリューム上の記憶領域へのアクセス時等に排他制御を行うが、排他制御の単位として、スロット1100という概念が定義されている。スロット1100のサイズは、本発明の実施例では、256KB(つまり512ブロック)としているが、その他のサイズを採用しても良い。各スロット1100には一意な識別番号が付与されており、それをスロットIDと呼ぶ。なお、図34において、要素1110がスロットIDであり、論理ブロックアドレス1010とスロットID1100との関係は図34に示されたとおりである。例えばホスト計算機10から受信したI/Oコマンドで指定されている論理ブロックアドレスをスロットIDに変換する時には、指定された論理ブロックアドレスを512で除算して得られた値がスロットIDになる。またこの除算を行った時に剰余が0の場合には、I/Oコマンドで指定されている論理ブロックアドレスは、(スロットIDで特定される)スロットの先頭位置であることが分かり、剰余が0でない値(仮に、この値をRとする)の場合、この剰余Rは、論理ブロックアドレスで特定されるブロックが、(スロットIDで特定される)スロットの先頭ブロックからR番目の位置に存在するブロックであることを表す情報となる(以下、この情報Rのことを、スロット内相対アドレスと呼ぶ)。
また論理ボリューム上のデータをキャッシュする場合、RAM34またはFMチップ321上の記憶領域をキャッシュ領域として確保するが、キャッシュセグメント(またはセグメント)(図34中の要素1201、1202、1203、1204がキャッシュセグメントである。以下、キャッシュセグメント1201、1202、1203、1204を総称する場合、「キャッシュセグメント1200」と表記する)という領域単位でキャッシュ領域を確保する。本発明の実施例においては、キャッシュセグメント1200のサイズは64KBで、各スロットに対して4つのキャッシュセグメント1201、1202、1203、1204が対応付けられる。図34は、RAM34あるいはFMチップ321上の領域(キャッシュセグメント1200)がスロット1100に対応付けられる概念を表している。ストレージシステム20がこの対応付けを管理する方法の詳細は後述するが、ストレージシステム20は、スロットを管理する情報としてスロット制御テーブル110(詳細は図7を説明する際に説明する。スロット制御テーブル110は、スロット1100ごとに1つ存在する)を有しており、スロット制御テーブル110内に、当該スロットに対応付けられているキャッシュセグメント1200の情報(正確には、キャッシュセグメント1200を管理するための情報へのポインタ)が格納されている。ストレージシステム20は、このスロット制御テーブル110を作成、管理することによって、スロット1100とキャッシュセグメント1200の対応付けを管理する。なお、キャッシュセグメント1200のサイズを、64KB以外のサイズにすることも可能であり、また1つのスロット1100に対応付けられるキャッシュセグメント1200の数を、4つ以外の値にすることも可能である。
ホスト計算機10が論理ボリューム1000上の領域にアクセス(リードまたはライト等)する際の、キャッシュ領域の管理に関連する処理の概要は以下の通りである。ホスト計算機10はストレージシステム20に、論理ユニット番号(論理ユニット/論理ボリュームを特定する番号で、一般的にはLUN[Logical Unit Number]と略記される)と論理ブロックアドレス1010を指定したI/Oコマンドを発行する。ストレージシステム20は、受信したI/Oコマンドに含まれる論理ブロックアドレスを、スロットID1110とスロット内相対アドレスの組に変換し、当該変換で得られたスロットID1110で特定されるスロット制御テーブル110を参照する。そしてスロット制御テーブル110の情報に基づき、I/Oコマンドで指定された論理ボリューム上の領域(論理ブロックアドレスで特定される領域)に対してキャッシュセグメント1200が確保されているか否かを判定し、キャッシュセグメント1200が確保されていなければ、新規にキャッシュセグメント1200を確保する処理を行う。
続いてキャッシュ管理データ構造についての説明を行う。図7は、実施例1に係るキャッシュ管理データ構造の概念図である。
キャッシュ管理データ構造は、キャッシュディレクトリ100と、FMフリーキュー200と、RAMフリーキュー300と、ダーティキューおよびクリーンキュー(図9参照)とを含む。本実施例では、RAM34と、FMチップ321とにキャッシュセグメント(343、325)が管理される。各キャッシュセグメントは、セグメント制御テーブル120(SGCT:Segment Control Table)で管理される。SGCT120は、RAM34および全てのFMチップ321で管理されている全てのキャッシュセグメントのそれぞれと一対一に対応して管理される。
キャッシュディレクトリ100は、キャッシュ対象データの論理アドレス(キャッシュセグメントに格納されたデータの格納先である、論理ボリュームの論理ブロックアドレス)とメモリ(RAM34およびFMチップ321)上の物理アドレスとの対応関係を管理するデータ構造である。キャッシュディレクトリ100は、例えば、キャッシュ対象データの論理アドレス(又はスロットIDのような、論理アドレスから導かれる情報)をキーとするハッシュテーブルであり、SGCT120を示すためのポインタをエントリとして持っている。SGCT120は、そのSGCT120に対応するキャッシュセグメント(325、343)へのポインタを管理している。したがって、キャッシュディレクトリ100によると、キャッシュ対象データの論理アドレスに基づいて、当該論理アドレスに対応するデータがキャッシュされているキャッシュセグメントを特定することができる。なお、SGCT120の詳細な構成については、後述する。本実施例では、キャッシュディレクトリ100は、RAM34のキャッシュセグメント343と、すべてのFMチップ321のキャッシュセグメント325とをまとめて管理している。このため、当該キャッシュディレクトリ100を参照することにより、RAM34およびFMチップ321におけるキャッシュのヒット判定を容易に行うことができる。
FMフリーキュー200は、FMチップ321のフリーセグメント、すなわちいずれのデータも格納していないキャッシュセグメント325を管理する制御情報である。FMフリーキュー200は、例えばFMチップ321のフリーセグメントに対応するSGCT120をエントリに持つ双方向のリンクリストとして構成される。なお、フリーセグメントを管理する制御情報のデータ構造は、必ずしもキューである必要はなく、スタックなどを用いてもよい。
RAMフリーキュー300は、RAM34のフリーセグメントを管理する制御情報である。RAMフリーキュー300は、例えばRAM34のフリーセグメントに対応するSGCT120をエントリに持つ双方向のリンクリストとして構成される。なお、フリーセグメントを管理する制御情報のデータ構造は、必ずしもキューである必要はなく、スタックなどを用いてもよい。
SGCT120は、そのSGCT120に対応するキャッシュセグメントの状態および種類によって、キャッシュディレクトリ100、FMフリーキュー200、又はRAMフリーキュー300のいずれかに接続された状態をとる。具体的には、FMチップ321のキャッシュセグメント325に対応するSGCT120は、当該キャッシュセグメント325が未使用時には、FMフリーキュー200に接続され、当該キャッシュセグメント325がデータ格納用に割り当てられると、キャッシュディレクトリ100に接続される。一方、RAM34のキャッシュセグメント343に対応するSGCT120は、当該キャッシュセグメント343が未使用時には、RAMフリーキュー300に接続され、当該キャッシュセグメント343がデータ格納用に割り当てられると、キャッシュディレクトリ100に接続される。
図8は、実施例1に係るキャッシュ管理データ構造の一部のデータ構造を示す図である。
キャッシュディレクトリ100は、例えばスロットIDをキーとするハッシュテーブルである。キャッシュディレクトリ100のエントリ100a(ディレクトリエントリ)は、スロットIDに対応するスロット制御テーブル110(SLCT:Slot Control Table)を示すディレクトリエントリポインタを格納する。ここで、スロットは、排他制御を行うデータの単位(ロック単位)である。例えば、1つのスロットは、複数のキャッシュセグメントを含むことができる。なお、スロットの内の一部しかデータが格納されていない場合には、キャッシュセグメントが1つしか含まれていないこともある。
SLCT110は、ディレクトリエントリポインタ110aと、前方ポインタ110bと、後方ポインタ110cと、スロットID110dと、スロットステータス110eと、SGCTポインタ110fとを含む。ディレクトリエントリポインタ110aは、ハッシュテーブルの次のエントリに対応するSLCT110を指すディレクトリエントリポインタである。前方ポインタ110bは、クリーンキュー又はダーティキューにおける前の順番のSLCT110を示すポインタである。後方ポインタ110cは、クリーンキュー又はダーティキューにおける後の順番のSLCT110を示すポインタである。スロットID110dは、SLCT110に対応するスロットの識別情報である。スロットステータス110eは、スロットの状態を示す情報である。スロットの状態としては、例えば、当該スロットがロックされていることを示す「ロック中」等がある。SGCTポインタ110fは、当該スロットに含まれるキャッシュセグメントに対応するSGCT120を指すポインタである。当該スロットにキャッシュセグメントが割り当てられていないときは、SGCTポインタ110fは、ポインタ(アドレス)が無効であることを表す値(例えばNULL)となっている。またスロットに含まれるキャッシュセグメントが複数ある場合には、各SGCT120はリンクリストとして管理され、SGCTポインタ110fは、リンクリストにおける先頭のキャッシュセグメントに対応するSGCT120を指すポインタである。
SGCT120は、SGCTポインタ120aと、セグメントID120bと、メモリ種類120cと、セグメントアドレス120dと、ステージングビットマップ120eと、ダーティビットマップ120fとを含む。
SGCTポインタ120aは、同じスロットに含まれる次のキャッシュセグメントに対応するSGCT120を指すポインタである。セグメントID120bは、キャッシュセグメントの識別情報で、スロット内の何番目に位置づけられるキャッシュセグメントであるかを表す情報である。本実施例では、1スロットに最大で4つのキャッシュセグメントが割り当てられるので、各キャッシュセグメントのセグメントID120bには、0、1、2、3のいずれかの値が格納される(スロットの先頭に位置するキャッシュセグメントのセグメントID120bは0となり、以下順に1、2、3のセグメントID120bが付与される。たとえば図34におけるキャッシュセグメント1201〜1204を例にとると、スロット1100の先頭に対応付けられているキャッシュセグメント1201のセグメントID120bは0で、以下キャッシュセグメント1202、1203、1204のセグメントID120bはそれぞれ、1、2、3となる)。メモリ種類120cは、このSGCT120に対応するキャッシュセグメントが格納されているキャッシュメモリの種類である。キャッシュメモリの種類としては、FMと、RAMとのいずれかがある。セグメントアドレス120dは、キャッシュセグメントのアドレスである。ステージングビットマップ120eは、キャッシュセグメントの中でクリーンデータ、つまりドライブ(40、41)のデータと一致しているデータがキャッシュされている領域を示すビットマップである。ステージングビットマップ120eでは、各ビットがキャッシュセグメントにおける各領域に対応し、有効なデータ(ドライブと同じデータ)がキャッシュされている領域に対応するビットはON(1)に設定され、有効なデータがキャッシュされていない領域に対応するビットはOFF(0)に設定される。ダーティビットマップ120fは、キャッシュセグメントの中でダーティデータ、つまりドライブのデータと不一致なデータ(まだドライブに反映されていないデータ)がキャッシュされている領域を示すビットマップである。ダーティビットマップ120fでは、各ビットがキャッシュセグメントにおける各領域に対応し、ダーティデータがキャッシュされている領域に対応するビットはON(1)に設定され、ダーティデータがキャッシュされていない領域に対応するビットはOFF(0)に設定される。
図9は、実施例1に係るダーティキューおよびクリーンキューのデータ構造を示す図である。
ダーティキューおよびクリーンキューは、キャッシュデータ管理構造の一部である。ダーティキューは、ダーティデータを含むスロットに対応するSLCT110を接続するキューである。クリーンキューは、クリーンデータのみを含むスロットに対応するSLCT110を接続するキューである。ダーティキューおよびクリーンキューは、キャッシュリプレースやデステージのスケジューリング等に用いられ、それぞれのキャッシュリプレースやデステージのスケジューリング方式等によってさまざまな構造を取りうる。本実施例では、キャッシュリプレースおよびデステージのスケジューリングに用いるアルゴリズムをLRU(Least Recently Used)として説明する。なお、ダーティキューおよびクリーンキューは、接続するSLCT110が違うだけで、キューの基本的な構成は同様であるので、ここでは、ダーティキューを例に挙げて説明する。ダーティキューは、双方向のリンクリストとして構成されている。すなわち、ダーティキューは、MRU(Most Recently Used)ターミナル150の前方ポインタに、最近使用したダーティデータを含むスロット(最終使用時刻の新しいスロット)に対応するSLCT110を接続し、以降、SLCT110の前方ポインタ110bに、次の順番のスロット(次に最近使用したダーティデータを含むスロット)のSLCT110を順次接続し、最後の順番のSCLT110の前方ポインタ110bにLRUターミナル160を接続する一方、LRUターミナル160の後方ポインタに最後の順番のSCLT110を接続し、以降、後ろの順番のSCLT110の後方ポインタ110cに対して、その前の順番のスロットのSLCT110を順次接続し、最初の順番のSLCT110をMRUターミナル150に接続する。ダーティキューでは、MRUターミナル150側から、最終使用時刻の新しい順にSLCT110が並ぶこととなる。
図10は、実施例1に係るFMフリーキューおよびRAMフリーキューのデータ構造を示す図である。
FMフリーキュー200は、FMチップ321に格納されている空きキャッシュセグメント325を管理するためのキューであり、RAMフリーキュー300は、RAM34の空きキャッシュセグメント343を管理するためのキューであり、それぞれ空きキャッシュセグメントのSGCT120をポインタで接続したリンクリストである。FMフリーキュー200と、RAMフリーキュー300とは、管理するSGCT120が異なるだけであり、構成は同一である。FMフリーキュー200(RAMフリーキュー300)のフリーキューポインタ201(301)は、キューの先頭のSGCT120を指す。SGCT120のSGCTポインタ120aは、次の空きキャッシュセグメントのSGCT120を指す。
次に、実施例1に係る情報システムにおける処理動作を説明する。
図11は、実施例1に係るリードコマンド処理のフローチャートである。
リードコマンド処理は、ホスト計算機10からストレージコントローラ30がリードコマンドを受信した場合に実行される。
まず、リードコマンドを受信したストレージコントローラ30のCPU33は、リードコマンドで指定されている、論理ボリューム上のリード対象ブロックの論理ブロックアドレス(以下、「リード対象アドレス」と呼ぶ)に対応するキャッシュセグメントが割り当て済みであるか否かを判定する(ステップS1)。具体的には、先に説明したとおり、論理ブロックアドレスをスロットIDとスロット内相対アドレスの組に変換し、当該変換により得られたスロットID110dを有するSLCT110内のSGCTポインタ110fを参照する。SGCTポインタ110fが無効(たとえばNULL)値である場合には、キャッシュセグメントが未割り当てであることが判明する。SGCTポインタ110fに有効な値が含まれている場合、少なくともキャッシュセグメントが1つ割り当てられていることが判明するので、SGCTポインタ110fをたどって、スロット内相対アドレスで特定されるスロット内の位置にキャッシュセグメントが割り当てられているかを確認する。具体的には、「スロット内相対アドレス÷128」で得られた結果(整数値)と同一のセグメントID120bを有するSGCT120があるかを確認することで、キャッシュセグメントが割り当てられているかを確認することができる(スロット内相対アドレス÷128の計算を行うことで、0〜3のいずれかの整数値が得られるので、スロット内相対アドレスが、0〜3のいずれのセグメントIDが付与されたキャッシュセグメントに対応するアドレスであるかを知ることができる)。この結果、キャッシュセグメントが割り当て済みであれば(ステップS1:YES)、CPU33は、ステップS3へ処理を進める一方、キャッシュセグメントが未割り当てであれば(ステップS1:NO)、キャッシュ割り当て処理(図14参照)を実行し(ステップS2)、ステップS3へ処理を進める。ステップS2のキャッシュ割り当て処理の詳細は後述するが、キャッシュ割り当て処理では、キャッシュされるデータのアクセス特性に応じて、FMチップ321のキャッシュセグメント、またはRAM34のキャッシュセグメントを割り当てる処理が行われる。
ステップS3では、CPU33は、リード対象アドレスに対応するキャッシュセグメントを含むスロットをロックする。具体的には、CPU33は、このキャッシュセグメントを含むスロットのSLCT110のスロットステータス110eの「ロック中」を表すビットをONにすることで、当該スロットがロックされていることを表す。
続いてCPU33は、リード対象のデータがキャッシュセグメントに格納されているか否か、すなわち、キャッシュヒットか否かを判定する(ステップS4)。具体的には、CPU33は、リード対象のキャッシュセグメントに対応するSGCT120のステージングビットマップ120eおよびダーティビットマップ120fを調べ、リード対象の全ブロックに関して、当該ブロックに対応するステージングビットマップ120eのビットもしくはダーティビットマップ120fのビットのいずれかがONであれば、キャッシュヒットであると判断する。一方、CPU33は、リード対象の範囲内に、ダーティビットマップ120fとステージングビットマップ120eとの対応するビットがいずれもOFFであるブロックが一つでもある場合は、キャッシュミスであると判断する。
この結果、キャッシュヒットの場合(ステップS4:YES)は、CPU33は、処理をステップS6へ進める一方、キャッシュミスの場合(ステップS4:NO)は、ステージング処理(図12参照)を実行し(ステップS5)、処理をステップS6に進める。ステージング処理では、ドライブ(HDD40、またはSSD41)からキャッシュセグメント(325又は343)へデータが読み込まれる。ステージング処理が完了すると、リード対象のデータがキャッシュセグメント(325又は343)に格納された状態になる。
ステップS6では、CPU33は、キャッシュセグメントに格納されたデータをホスト計算機10に送信するデータ送信処理(図13参照)を実行する。
続いて、CPU33は、コマンドの完了ステータスをホスト計算機10に送信する(ステップS7)。すなわち、CPU33は、コマンドの処理中にエラーが発生してリード処理が正常に完了しなかった場合はエラーステータス(例えばCHECK CONDITION)を返す一方、リード処理が正常に完了した場合は正常ステータス(GOOD)を返す。
続いて、CPU33は、ロックしているスロットを解放(アンロック)し(ステップS8)、アクセスモニタテーブル342を更新し(ステップS9)、リードコマンド処理を終了する。アクセスモニタテーブル342の更新とは、例えば、リード量カウンタ342eに今回のリードコマンドで読み出したデータ量を加算し、リードコマンドカウンタ342gをインクリメントする。
図12は、実施例1に係るステージング処理のフローチャートである。
ステージング処理は、図11のリードコマンド処理のステップS5の処理に対応する。
まず、CPU33は、リード対象アドレスに対応するキャッシュセグメントのキャッシュメモリの種類を調べ、キャッシュセグメントがRAM34上のキャッシュセグメント(RAMセグメント)343であるか否かを判定する(ステップS11)。ここで、キャッシュセグメントの基になっているキャッシュメモリの種類は、対応するSGCT120のメモリ種類120cを参照することにより特定することができる。
この結果、キャッシュセグメントがRAMセグメント343であれば(ステップS11:YES)、CPU33は、処理をステップS12に進める一方、キャッシュセグメントがRAMセグメント343でなければ(ステップS11:NO)、処理をステップS13に進める。
ステップS12では、CPU33は、リード対象(ステージング対象)のデータをドライブ(HDD40またはSSD41)から読み出して、RAMセグメント343に格納し、ステージング処理を終了する。
ステップS13以降の処理では、キャッシュセグメントがRAMセグメント343でない、すなわちFMチップ321上のキャッシュセグメント(FMセグメント)325であるので、ドライブから読み上げたデータを直接FMチップ321に書くのではなく、一旦、FMボード32のバッファメモリ323に格納した後、バッファメモリ323からFMチップ321に書き込むようにする。これはFMチップ321の書き込み速度が遅いので、ドライブから読み上げたデータを直接FMチップ321に書いてしまうと、その速度に引きずられてストレージコントローラ30のBE I/F35の動作が遅くなり、ストレージシステム20のスループット性能を低くしてしまうことを防ぐためである。なお、本実施例では、BE I/F35が、CPU33の指示を受けて、ドライブからFMボード32のバッファメモリ323に対してデータを格納するようにしている。したがって、CPU33は、BE I/F35に対して指示を行った後は、他の処理を実行することができる。また、BE I/F35は、ドライブからFMボード32のバッファメモリ323に対してデータを格納した後には、この処理から解放されて、他の処理を実行することができるようになる。
まず、ステップS13では、CPU33は、バッファメモリ323にドライブから読み上げたデータを格納するための領域(バッファ)の確保を行う。すなわち、CPU33は、バッファメモリ323のうちステージング対象のデータを格納するのに十分な領域をバッファに割り当てる。
次に、CPU33は、ステージング対象のデータをドライブから読み出してバッファに格納する(ステップS14)。本実施例では、BE I/F35が、CPU33の指示を受けて、ドライブからFMボード32のバッファメモリ323のバッファに対してデータを格納している。
そして、CPU33は、FMプロセッサ320bに対し、バッファメモリ323のバッファ上のデータをFMチップ321に格納するよう要求する(ステップS15)。この要求に対してFMプロセッサ320bは、FMデータ書き込み処理(図23参照)を実行する。FMプロセッサ320bは、FMデータ書き込み処理を終了すると、その要求に対する完了応答をCPU33に返す。
続いて、CPU33は、その要求に対する完了応答をFMプロセッサ320bから受け取り(ステップS16)、バッファメモリ323のバッファを解放し(ステップS17)、ステージング処理を終了する。
図13は、実施例1に係るデータ送信処理のフローチャートである。
データ送信処理は、図11に示すリードコマンド処理のステップS6の処理に対応する。
データ送信処理では、FMセグメント325からデータを送信する場合に、一旦バッファメモリ323にデータを格納して、バッファメモリ323からホスト計算機10へデータを転送する。これは、FMチップ321の読み出し速度が遅いので、FMチップ321から直接転送すると、その速度に引きずられてストレージコントローラ30のFE I/F31の動作が遅くなり、ストレージシステム20のスループット性能を低くしてしまうことを防ぐためである。
まず、CPU33は、リード対象アドレスに対応するキャッシュセグメントの基になっているキャッシュメモリの種類を調べ、キャッシュセグメントがRAMセグメント343であるか否かを判定する(ステップS21)。ここで、キャッシュセグメントの基になっているキャッシュメモリの種類は、対応するSGCT120のメモリ種類120cを参照することにより特定することができる。
この結果、キャッシュセグメントがRAMセグメント343であれば(ステップS21:YES)、CPU33は、処理をステップS22に進める一方、キャッシュセグメントがRAMセグメント343でなければ(ステップS21:NO)、処理をステップS23に進める。
ステップS22では、CPU33は、リード対象(送信対象)のデータをRAMセグメント343からホスト計算機10へ転送し、データ送信処理を終了する。
ステップS23では、CPU33は、バッファメモリ323に、FMチップ321から読み出した送信対象のデータを格納するための領域(バッファ)の確保を行う。すなわち、CPU33は、バッファメモリ323のうち送信対象のデータを格納するのに十分な領域をバッファに割り当てる。
次に、CPU33は、FMプロセッサ320bに対し、FMチップ321上のデータをバッファメモリ323に読み出すよう要求する(ステップS24)。この要求に対してFMプロセッサ320bは、FMデータ読み出し処理(図22参照)を実行する。FMデータ読み出し処理により、バッファメモリ323には、送信対象のデータが格納される。FMプロセッサ320bは、FMデータ読み出し処理を終了すると、その要求に対する完了応答をCPU33に返す。
続いて、CPU33は、その要求に対する完了応答をFMプロセッサ320bから受け取り(ステップS25)、送信対象のデータをバッファメモリ323からホスト計算機10に送信する(ステップS26)。本実施例では、FE I/F31が、CPU33の指示(例えば、読み出すデータのバッファメモリ323上のアドレス等)を受けて、バッファメモリ323のバッファからホスト計算機10に対して送信対象のデータを送信している。その後、CPU33は、バッファメモリ323のバッファを解放し(ステップS27)、データ送信処理を終了する。
図14は、実施例1に係るキャッシュ割り当て処理のフローチャートである。
キャッシュ割り当て処理は、図11に示すリードコマンド処理のステップS2の処理、および後述する図19に示すライトコマンド処理のステップS72の処理に対応する。
キャッシュ割り当て処理では、CPU33がキャッシュするデータに対して、当該データに対するアクセス特性に応じて、FMチップ321のキャッシュセグメント、またはRAM34のキャッシュセグメントを割り当てる。
ここで、まず、割り当てるキャッシュセグメントのメモリ種類、すなわち、FMチップ321またはRAM34を選択する際の判断基準について説明する。ここで、FMチップ321は、(1)アクセス性能がRAM34に比べて低い、(2)書き換え回数に上限がある、という特性を有しているので、本実施例では、CPU33は、データの特性が、比較的RAMの特性に適合しているデータ(高性能を要求される、キャッシュセグメントの更新頻度が高くなる)は、RAM34を用いたキャッシュセグメントを選択し、フラッシュメモリの特性に適合するデータ(それほど高性能を要求されない、キャッシュセグメントの更新頻度が高くない)は、FMチップ321を用いたキャッシュセグメントを選択する制御を行う。具体的には、次のような基準で割り当てるキャッシュセグメントのメモリ種類を選択する。
(a)アクセス頻度(リード頻度/ライト頻度)が高いデータや、高スループットが求められるデータの場合は、CPU33は、RAM34を優先的に選択する。特に、アクセス頻度が高いデータをFMチップ321のキャッシュセグメントに格納するようにすると、FMチップ321の更新頻度が高くなる。更新頻度が高い場合、書き換えが多発しFMチップ321の寿命を短くしてしまうので、RAM34を優先的に選択した方がよい。これにより、FMチップ321の寿命の短縮を適切に抑制することができる。また、高スループットが求められるデータとしては、例えば、インメモリデータベースで利用するために読み込む大量データが該当する。この用途のデータは、一般的に、転送長が長いデータやシーケンシャルアクセスのデータであることが多いため、転送長が長いと判断されるデータについてはRAM34を優先的に選択する。これにより、高スループットを実現することができる。
(b)FMチップ321にキャッシュするとキャッシュヒットによる性能面の効果があまり得られないデータの場合は、CPU33は、RAM34を優先的に選択する。キャッシュヒットによる性能面の効果があまり得られないデータとしては、例えばSSD41に格納されるデータがある。これによると、キャッシュヒットによる効果を適切に得られるようにすることができる。
(c)アクセス単位が小さいデータがキャッシュ対象であれば、CPU33は、RAM34を優先的に選択する。これはFMチップ321における読み書き単位(ページ)の大きさがRAM34の最小アクセス単位に比べて大きく(例えば8KB)、小さい単位のデータの参照・更新の効率が悪いためである。例えば、制御情報などのメタデータは、通常16B程度のサイズであり、FMチップ321の読み書き単位のサイズと比較すると小さいため、RAM34にキャッシュした方がよい。
(d)すぐにキャッシュ上から破棄されるデータがキャッシュ対象の場合は、CPU33は、RAM34を優先的に選択する。その理由は、破棄に伴うFMチップ321の消去がすぐに発生することと、すぐ破棄するのであればRAM34に置いても容量の消費が一時的であり影響が小さいことが挙げられる。どのようなデータを優先的に破棄するかについては、ストレージシステムのポリシーとして設定されている。例えばデータコピーのために割り当てられる一時的なキャッシュセグメントに格納されるデータは、コピー処理が完了するとキャッシュ上から破棄される。他の例としては、シーケンシャルリードが行われるデータや、シーケンシャルライトが行われるデータがある。シーケンシャルリードが行われるデータについては、先頭から順番に読んでいって、読み終わったら同じ部分のデータがすぐに読まれることは基本的にはない。また、シーケンシャルライトが行われるデータは、例えば、当該データがRAIDで格納される場合には、必要なパリティが揃った時点で、データがデステージされ、その後キャッシュから破棄される。
(e)上記(a)−(d)以外の条件に適合するデータがキャッシュ対象の場合は、CPU33は、FMチップ321を優先的に選択する。
(a)アクセス頻度(リード頻度/ライト頻度)が高いデータや、高スループットが求められるデータの場合は、CPU33は、RAM34を優先的に選択する。特に、アクセス頻度が高いデータをFMチップ321のキャッシュセグメントに格納するようにすると、FMチップ321の更新頻度が高くなる。更新頻度が高い場合、書き換えが多発しFMチップ321の寿命を短くしてしまうので、RAM34を優先的に選択した方がよい。これにより、FMチップ321の寿命の短縮を適切に抑制することができる。また、高スループットが求められるデータとしては、例えば、インメモリデータベースで利用するために読み込む大量データが該当する。この用途のデータは、一般的に、転送長が長いデータやシーケンシャルアクセスのデータであることが多いため、転送長が長いと判断されるデータについてはRAM34を優先的に選択する。これにより、高スループットを実現することができる。
(b)FMチップ321にキャッシュするとキャッシュヒットによる性能面の効果があまり得られないデータの場合は、CPU33は、RAM34を優先的に選択する。キャッシュヒットによる性能面の効果があまり得られないデータとしては、例えばSSD41に格納されるデータがある。これによると、キャッシュヒットによる効果を適切に得られるようにすることができる。
(c)アクセス単位が小さいデータがキャッシュ対象であれば、CPU33は、RAM34を優先的に選択する。これはFMチップ321における読み書き単位(ページ)の大きさがRAM34の最小アクセス単位に比べて大きく(例えば8KB)、小さい単位のデータの参照・更新の効率が悪いためである。例えば、制御情報などのメタデータは、通常16B程度のサイズであり、FMチップ321の読み書き単位のサイズと比較すると小さいため、RAM34にキャッシュした方がよい。
(d)すぐにキャッシュ上から破棄されるデータがキャッシュ対象の場合は、CPU33は、RAM34を優先的に選択する。その理由は、破棄に伴うFMチップ321の消去がすぐに発生することと、すぐ破棄するのであればRAM34に置いても容量の消費が一時的であり影響が小さいことが挙げられる。どのようなデータを優先的に破棄するかについては、ストレージシステムのポリシーとして設定されている。例えばデータコピーのために割り当てられる一時的なキャッシュセグメントに格納されるデータは、コピー処理が完了するとキャッシュ上から破棄される。他の例としては、シーケンシャルリードが行われるデータや、シーケンシャルライトが行われるデータがある。シーケンシャルリードが行われるデータについては、先頭から順番に読んでいって、読み終わったら同じ部分のデータがすぐに読まれることは基本的にはない。また、シーケンシャルライトが行われるデータは、例えば、当該データがRAIDで格納される場合には、必要なパリティが揃った時点で、データがデステージされ、その後キャッシュから破棄される。
(e)上記(a)−(d)以外の条件に適合するデータがキャッシュ対象の場合は、CPU33は、FMチップ321を優先的に選択する。
次に、以上の基準に基づいてキャッシュ割り当てを行うキャッシュ割り当て処理を、図14を参照して説明する。
まず、CPU33は、アクセス対象(リード対象又はライト対象)のデータが高速にアクセスされるデータか否かを判定する(ステップS31)。具体的には、CPU33は、例えば、予め求められたアクセス速度の閾値と、アクセスモニタテーブル342に記録されたアクセス対象のデータの格納される領域のリード速度342aやライト速度342bとを比較して、アクセス対象のデータが高速にアクセスされるデータか否かを判定する。リード速度342aやライト速度342bの集計方法は後述するが、データアクセス頻度が高い場合、あるいは転送長が長いデータのアクセスの場合、本実施例で集計されるリード速度342aやライト速度342bは高くなるため、データのリード速度342aやライト速度342bを閾値と比較することで、アクセス頻度が高いデータであるか、または転送長が長いデータであるかを判定することができる。あるいは別の実施形態として、アクセス頻度(アクセスモニタテーブル342に記録された、アクセス対象のデータの格納される領域のリード頻度342cやライト頻度342d)を閾値と比較して判定してもよい。ステップS31の判定の結果が、真であれば(ステップS31:YES)、CPU33は処理をステップS37に進める一方、偽であれば(ステップS31:NO)、処理をステップS32に進める。
ステップS32では、CPU33は、アクセス対象のデータに対するアクセスパターンがシーケンシャルアクセスであるか否かを判定する。この判定は、CPU33が、処理対象のリードコマンドが、連続したアドレスを順にリードする一連のコマンドの一部であるか否かを判断することにより実現できる。具体的には、CPU33は、例えば、前回のリードコマンドの対象アドレスに当該コマンドの転送長を加えたアドレスが、今回のリードコマンドの対象アドレスであるか否かを判断するによって、シーケンシャルアクセスであるか否かを判定する。この結果、シーケンシャルアクセスであると判定した場合(ステップS32:YES)は、CPU33は、処理をステップS37に進める一方、偽であると判定した場合(ステップS32:NO)は、CPU33は、処理をステップS33に進める。
ステップS33では、CPU33は、アクセス対象のデータが最終的にSSD41に格納されるデータであるか否か、すなわち、アクセス対象データの最終ストレージデバイスがSSD41であるか否かを判定する。ここで、アクセス対象データの最終ストレージデバイスがSSD41であるか否かの判定は、例えば、予め記憶している論理ボリュームとデバイスとの対応関係を表す情報に基づいて、リードコマンドで指定された論理ボリュームに対応するデバイス種類を特定することにより実現できる。なお、シンプロビジョニングに従う論理ボリュームである場合には、論理ボリュームに割り当てられている実ページを提供するデバイスのデバイス種類を特定することにより、アクセス対象データの最終ストレージデバイスがSSD41であるか否か判定することができる。この結果、真であれば(ステップS33:YES)、CPU33は、処理をステップS37に進める一方、偽であれば、処理をステップS34に進める。
ステップS34では、CPU33は、アクセス対象のデータがメタデータであるか否かを判定する。ここでいうメタデータには、ストレージコントローラ30のRAM34からドライブ(40、41)に退避・格納した又は退避・格納する制御情報を含む。ここで、アクセス対象のデータがメタデータであるか否かは、例えば、アクセス先が、その論理ボリュームにおける制御情報が格納される所定の領域であるか否かにより判定することができる。なお、論理ボリュームにおける制御情報が格納される領域のアドレスについては、論理ボリュームを使用するホスト計算機10等から取得することができる。この結果、真であれば(ステップ34:YES)、CPU33は、処理をステップS37に進める一方、偽であれば、処理をステップS35に進める。
ステップS35では、CPU33は、アクセス対象のデータに対応するキャッシュセグメントが一時的なキャッシュセグメント(テンポラリセグメント)であるか否かを判定する。ここで、テンポラリセグメントとは、次のいずれかである。
(1)パリティ生成において旧データや旧パリティがキャッシュミスした場合に、当該旧データあるいは旧パリティを格納するために割り当てられるセグメント。
(2)ドライブ(例えば最終ストレージデバイス)のデータをコピーする処理のため一時的に割り当てられるセグメント。
(3)他ストレージ装置との間でデータを送受信する処理のため(例えば、リモートコピー処理のため)一時的に割り当てられるセグメント。
(1)パリティ生成において旧データや旧パリティがキャッシュミスした場合に、当該旧データあるいは旧パリティを格納するために割り当てられるセグメント。
(2)ドライブ(例えば最終ストレージデバイス)のデータをコピーする処理のため一時的に割り当てられるセグメント。
(3)他ストレージ装置との間でデータを送受信する処理のため(例えば、リモートコピー処理のため)一時的に割り当てられるセグメント。
なお、CPU33は、データに対してキャッシュセグメントを割り当てる際に、ホスト計算機10から高スループットか否かを示す情報、又は、I/Oの優先度を示す情報を受け付け、当該高スループットか否かを示す情報、又は、I/Oの優先度を示す情報をキャッシュセグメントに対応付けて記憶しておき、その情報に基づいて、キャッシュセグメントがテンポラリセグメントであるか否かを判断するようにしてもよい。
この結果、真であれば(ステップ35:YES)、CPU33は、処理をステップS37に進める一方、偽であれば、処理をステップS36に進める。
ステップS36では、CPU33は、FMチップ321のキャッシュセグメント325を優先して割り当てるFM優先セグメント割り当て処理(図15参照)を実行し、キャッシュ割り当て処理を終了する。
ステップS37では、CPU33は、RAM34のキャッシュセグメント343を優先して割り当てるRAM優先セグメント割り当て処理(図16参照)を実行し、キャッシュ割り当て処理を終了する。
キャッシュ割り当て処理が完了すると、アクセス対象のデータに対して、FMチップ321またはRAM34のいずれか一方のキャッシュセグメントが割り当てられることとなる。
図15は、実施例1に係るFM優先セグメント割り当て処理のフローチャートである。
FM優先セグメント割り当て処理は、図14に示すキャッシュ割り当て処理のステップS36に対応する処理である。
まず、CPU33は、使用可能なFMセグメント325があるか否かを判定する(ステップS41)。使用可能なFMセグメント325とは、フリーもしくは、クリーンかつロックされていないキャッシュセグメント325のことである。なお、使用可能なFMセグメント325があるか否かは、キャッシュ管理データ構造を参照することにより判定することができる。この判定結果が真の場合(ステップS41:YES)は、CPU33は、処理をステップ42に進める一方、偽の場合(ステップS41:NO)は、処理をステップS43に進める。
ステップS42では、CPU33は、FMセグメント割り当て処理を行う。ここで、クリーンなキャッシュセグメントを割り当てる場合は、CPU33は、当該キャッシュセグメントをクリーンキューおよびキャッシュディレクトリ100から切り離してフリーセグメントにしたうえでFMセグメント割り当て処理を行う。
FMセグメント割り当て処理では、まず、CPU33は、SGCT120に確保したキャッシュセグメントに対応するセグメントID120b、メモリ種類120c(FM)を設定する。そして、CPU33は、このキャッシュセグメントを含むスロットに対応するSLCT110のSGCTポインタ110fに当該キャッシュセグメントのSGCT120へのポインタを設定する。もし、対応するSLCT110がキャッシュディレクトリ100に接続されていない場合は、CPU33は、まずSLCT110の内容を設定したうえ、当該SLCT110をキャッシュディレクトリ100に接続して、その後にSLCT110へSGCT120を接続する。また、もし、確保したキャッシュセグメントに対応するSGCT120以外のSGCT120が既にSLCT110に接続されている場合は、CPU33は、そのSLCT110に接続されている終端のSGCT120に、確保したキャッシュセグメントのSGCT120を接続する。なお、FMセグメント割り当て処理の終了後には、FM優先セグメント割り当て処理を終了する。
ステップS43では、CPU33は、使用可能なRAMセグメント343があるか否かを判定する。この判定結果が真の場合(ステップS43:YES)は、CPU33は、処理をステップS45へ進める一方、偽の場合(ステップS43:NO)は、いずれかのキャッシュセグメントが使用可能になるまで待って(ステップS44)、処理をステップS41に進める。
ステップS45では、CPU33は、RAMセグメント割り当て処理を行う。RAMセグメント割り当て処理は、ステップS42におけるFMセグメント割り当て処理において、FMセグメント325を割り当てていたものを、RAMセグメント343を割り当てるようにしたものである。RAMセグメント割り当て処理の終了後には、FM優先セグメント割り当て処理を終了する。
このFM優先セグメント割り当て処理では、FMセグメント325が優先して割り当てられる。
図16は、実施例1に係るRAM優先セグメント割り当て処理のフローチャートである。
RAM優先セグメント割り当て処理は、図14に示すキャッシュ割り当て処理のステップS37に対応する処理である。
RAM優先セグメント割り当て処理は、図15に示すFM優先セグメント割り当て処理におけるFMセグメントと、RAMセグメントとを入れ替えた処理であるので、ここでは、簡単に説明を行う。
まず、CPU33は、使用可能なRAMセグメント343があるか否かを判定する(ステップS51)。この判定結果が真の場合(ステップS51:YES)は、CPU33は処理をステップS52に進める一方、偽の場合(ステップS51:NO)は、処理をステップS53に進める。
ステップS52では、CPU33は、RAMセグメント割り当て処理を行う。このRAMセグメント割り当て処理は、図15のステップS45と同様な処理である。RAMセグメント割り当て処理の終了後には、RAM優先セグメント割り当て処理を終了する。
ステップS53では、CPU33は、使用可能なFMセグメント325があるか否かを判定する。この判定結果が真の場合(ステップS53:YES)は、CPU33は、処理をステップS55に進める一方、偽の場合(ステップS53:NO)は、いずれかのキャッシュセグメントが使用可能になるまで待って(ステップS54)、処理をステップS51に進める。
ステップS55では、CPU33は、FMセグメント割り当て処理を行う。このFMセグメント割り当て処理は、図15のステップS42と同様な処理である。FMセグメント割り当て処理の終了後には、RAM優先セグメント割り当て処理を終了する。
このRAM優先セグメント割り当て処理では、RAMセグメント343が優先して割り当てられる。
図17は、実施例1に係るアクセスモニタ集計処理のフローチャートである。
アクセスモニタ集計処理は、例えば一定時間周期に実行され、その期間におけるリード・ライト量やリード・ライト頻度を集計してアクセスモニタテーブル342を更新する処理である。
まずCPU33は、アクセスモニタテーブル342のリード速度342aを更新する(ステップS61)。すなわち、CPU33は、リード量カウンタ342eの値を、モニタ開始時刻342iから現在までの時間(以下、モニタ時間と称する)で割った値を、リード速度として、アクセスモニタテーブル342のリード速度342aに設定する。
次に、CPU33は、アクセスモニタテーブル342のライト速度342bを更新する(ステップS62)。すなわち、CPU33は、ライト量カウンタ342fの値を、モニタ時間で割った値を、ライト速度として、アクセスモニタテーブル342のライト速度342bに設定する。
続いて、CPU33は、アクセスモニタテーブル342のリード頻度342cを更新する(ステップS63)。すなわち、CPU33は、リードコマンドカウンタ342gの値を、モニタ時間で割った値を、リード頻度として、アクセスモニタテーブル342のリード頻度342cに設定する。
その次に、CPU33は、アクセスモニタテーブル342のライト頻度342dを更新する(ステップS64)。すなわち、CPU33は、ライトコマンドカウンタ342hの値を、モニタ時間で割った値を、ライト頻度として、アクセスモニタテーブル342のライト頻度342dに設定する。
そして、CPU33は、アクセスモニタテーブル342のモニタ開始時刻342iに現在時刻を設定し(ステップS65)、リード量カウンタ342e、ライト量カウンタ342f、リードコマンドカウンタ342g、およびライトコマンドカウンタ342hの値を0にリセットし(ステップS66)、アクセスモニタ集計処理を終了する
このアクセスモニタ集計処理により、論理ユニット内の各部分領域についてのライト速度、リード速度、ライト頻度、およびリード頻度を適切に把握することができる。
上で説明したアクセスモニタ集計処理では、リード速度、ライト速度を、リード量・ライト量をモニタ時間で除算して算出しているが、別の実施形態として、アクセスモニタテーブル342に、リードコマンド、ライトコマンドの処理時間(コマンドを受信してから、ホスト計算機10に応答を返すまでに要した時間)の累積を記憶するようにし、リード量・ライト量をそれぞれ、リードコマンド、ライトコマンドの処理時間の累積で除算するようにしてもよい。論理ユニット内のある部分領域に対して、コマンド(リードあるいはライトコマンド)が複数回発行された場合を想定すると、リード量・ライト量をモニタ時間で除算してアクセス速度を算出すると、転送長が長いデータへのアクセスであっても、発行されるコマンドの時間間隔が長い場合には、算出されるアクセス速度が低くなる。リード量・ライト量をそれぞれ、リードコマンド、ライトコマンドの処理時間の累積で除算した値をリード速度、ライト速度とすると、論理ユニット内のある部分領域に対して発行されるコマンドの時間間隔が長い、短いにかかわらず、転送長が長いデータへのアクセスの場合には、算出されるリード速度、ライト速度が高くなるので、論理ユニット内のある部分領域に対して発行されるコマンドの時間間隔が長い、短いにかかわらず、転送長が長いデータへのアクセスの場合にRAMに優先的にキャッシュするようにしたい場合、リード量・ライト量をそれぞれ、リードコマンド、ライトコマンドの処理時間の累積で除算した値をリード速度、ライト速度とするとよい。
なお、アクセスモニタテーブル342は論理ユニット内の部分領域ごとに設けられ、部分領域ごとにアクセス頻度やアクセス速度が集計される。部分領域(つまり1つのアクセスモニタテーブル342でアクセス頻度やアクセス速度を集計する単位)のサイズとしては、先に述べたとおり様々なサイズを選択可能であるが、本発明におけるストレージシステムでは、アクセスモニタテーブル342の情報に基づいて、キャッシュセグメントとして割り当てるべきメモリ種類を決定するため、キャッシュセグメントとして割り当てるべきメモリ種類の決定される際、図14等の処理はキャッシュセグメント単位で判定を行っているが、結果としては部分領域単位に割り当てられるメモリ種類が定まることになる。そのため、割り当てられるキャッシュメモリの種類を、できるだけ小さい領域ごとに選択したい場合、部分領域のサイズを小さくすることが好ましい。たとえば部分領域のサイズが、キャッシュセグメントと同じサイズであれば、キャッシュセグメントごとのアクセス特性に応じたメモリ割り当てが可能になる。ただし、部分領域のサイズが小さいと、維持管理すべきアクセスモニタテーブル342の量が増加するため、キャッシュセグメントサイズの整数倍(たとえばスロットのサイズでもよい)、あるいはスロットサイズの整数倍としてもよい。
また、本実施例1におけるアクセスモニタテーブル342とアクセスモニタ集計処理は、キャッシュ割り当て処理を行うために専用に設けられているものだが、別の実施形態として、ストレージシステム20内に、キャッシュ割り当て処理以外の目的で、論理ボリュームの部分領域のアクセス頻度等の情報を集計する手段が設けられている場合、当該手段により集計された情報を用いるようにしてもよい。たとえば米国特許出願公開第2013/0036250号明細書や、米国特許出願公開第2010/0205390号明細書には、いわゆるシンプロビジョニングに従う論理ボリュームを提供するストレージ装置が、論理ボリュームの各部分領域(ページと呼ばれる)に割り当てるべき記憶領域を決定するために、ページ毎にアクセス頻度などを集計する機能を有することが開示されている。本発明の実施例に係るストレージシステム20がこのような機能を備えている場合には、上で説明したアクセスモニタテーブル342とアクセスモニタ集計処理に代えて、ページ毎に集計されたアクセス頻度情報を用いて、キャッシュ割り当ての判定を行うようにしてもよい。
図18は、実施例1に係る判定用閾値算出方法を説明する図である。
図14に示すキャッシュ割り当て処理のステップS31において、対象データが高速にアクセスされるか否かを判定する際に基準とする閾値は、FMボード32で使用されるFMチップ321の寿命が過度に短くならないよう、つまりFMチップ321に対する更新・消去頻度が高くなりすぎないような値を設定することが望ましい。そのため、使用するFMチップ321の書き換え可能回数や容量、ストレージシステム20の性能(たとえばホスト計算機10からのライト頻度)などを考慮して、閾値を決定する。この閾値はあらかじめ定められた固定値としてもよいが、下記のようにアクセスモニタテーブル342の値を用いて動的に決めてもよい。このようにすると、より状況にあった閾値を設定することができる。
まず、CPU33は、図18の左側のグラフに示すようなライト速度にある各領域(部分領域)について、ライト速度が遅い順にソートして図18の右側のグラフに示すようにする。ここで、各領域は、アクセスモニタテーブル342で管理されている部分領域である。そして、各領域のライト速度を順に足していき、合計が式(1)で求められる許容総ライト速度を超えたら、当該領域のライト速度を対象データが高速にアクセスされるか否かを判定する際に基準とする閾値とする。つまり当該領域のライト速度未満のライト速度となる領域がFMチップ321でキャッシュするのに適した領域(FM適切領域)であり、この領域についてFMチップ321にキャッシュするようにし、それ以外の領域については、FMチップ321にキャッシュしないようにする。
許容総ライト速度=残りライト可能量/(残り使用期間×マージン)−その他のFM更新速度・・・(1)
ここで、残りライト可能量は、FMチップ321の残り書き換え可能回数と容量、およびWA(Write Amplification:リクラメーションやウェアレベリングによってフラッシュメモリへのライト量が何倍に増幅されるかを表す指標)によって決まる。その他のFM更新速度は、ホスト計算機10からのライト以外の処理、例えばキャッシュリプレースやデステージなどによってFMチップ321が更新される速度である。残り使用期間は、FMチップ321を交換するとして想定されている期日までの期間に相当する。
情報システムでは、FMチップ321の残りライト可能量が少なくなった場合に、当該FMチップ321を搭載するFMボード32へのキャッシュ割り当てを止め、新しいFMボード32に交換させることもできる。例えば、FMチップ321の残りライト可能量が予め決められた閾値を下回った場合は、CPU33は、許容総ライト速度をゼロに設定する。こうすることで、FMセグメントの割り当てが行われなくなる。さらに、CPU33は、FMボード32の交換を促すメッセージを管理端末に表示したり、管理者宛にメールを送信したりするなどの方法で、FMボード32の交換が必要であることを管理者に知らせる。
FMボード32の交換時には、CPU33は、まず古いFMボード32上に残っているダーティデータをドライブに書き出した後に、抜去可能であるとの通知を、例えば管理端末に表示する。管理者が古いFMボード32をストレージコントローラ30から抜去して、新しいFMボード32をストレージコントローラ30に挿した後に、CPU33は新しいFMボード32の初期化を行い、残りライト可能量を初期化し、上記同様に許容総ライト速度を計算する。これにより、以降においては、新しいFMボード32を用いてFMセグメントの割り当てが行われることとなる。
図19は、実施例1に係るライトコマンド処理のフローチャートである。
ライトコマンド処理は、ホスト計算機10からストレージコントローラ30がライトコマンドを受信した場合に実行される。
まず、ライトコマンドを受信したストレージコントローラ30のCPU33は、ライトコマンドで指定されている、ライト対象の論理ボリュームの論理ブロックアドレス(ライト対象アドレス)に対応するキャッシュセグメントが割り当て済みであるか否かを判定する(ステップS71)。この処理はリード処理(図11のS1)と同様であるので詳細な説明は省略する。この結果、キャッシュセグメントが割り当て済みであれば(ステップS71:YES)、ステップS73へ処理を進める一方、キャッシュセグメントが未割り当てであれば(ステップS71:NO)、キャッシュ割り当て処理(図14参照)を実行し(ステップS72)、ステップS73へ処理を進める。キャッシュ割り当て処理では、ライト対象アドレスに対して、RAM34またはFMチップ321からキャッシュセグメントが割り当てられる。なお、ライトされたデータを二重化することで信頼性を確保するために、キャッシュセグメントを2つ割り当てるようにしてもよい。
ステップS73では、CPU33は、ライト対象アドレスに対応するキャッシュセグメントを含むスロットをロックする。具体的には、CPU33は、このキャッシュセグメントを含むスロットのSLCT110のスロットステータス110eの「ロック中」を表すビットをONにすることで、当該スロットがロックされていることを表す。
続いて、CPU33は、ホスト計算機10に対し、例えば、XFER_RDYを送信することで、データ受領準備ができたことを通知する(ステップS74)。
そして、CPU33は、割り当てたキャッシュセグメントがRAMセグメント343であるか否かを判定する(ステップS75)。この結果、割り当てたキャッシュセグメントがRAMセグメント343であれば(ステップS75:YES)、CPU33は、ホスト計算機10から受領したデータをRAMセグメント343に格納するデータ受領処理(RAM)(図20参照)を実行し(ステップS76)、処理をステップS78に進める。一方、割り当てたキャッシュセグメントがFMセグメント325であれば(ステップS75:NO)、CPU33は、ホスト計算機10から受領したデータをFMセグメント325に格納するデータ受領処理(FM)(図21参照)を実行し(ステップS77)、処理をステップS78に進める。
ステップS78では、CPU33は、アクセスモニタテーブル342を更新する。すなわち、CPU33は、アクセスモニタテーブル342のライト量カウンタ342fに、今回のライトコマンドで受領したデータ量を加算し、ライトコマンドカウンタ342hをインクリメントする。その後、CPU33は、ライトコマンド処理を終了する。
図20は、実施例1に係るデータ受領処理(RAM)のフローチャートである。
データ受領処理(RAM)は、図19に示すライトコマンド処理のステップS76の処理に対応する。
まず、CPU33は、ホスト計算機10から受領したデータを、RAMセグメント343に書き込む(ステップS81)。
次にCPU33は、書き込んだデータがダーティデータであると設定する(ステップS82)。すなわち、CPU33は、SGCT120のダーティビットマップ120fにおける受領したデータが書き込まれたブロックに対応するビットをONに設定する。
続いて、CPU33は、コマンドの完了ステータスをホスト計算機10に送信し、RAMセグメント343を含むスロットを解放(アンロック)し(ステップS84)、データ受領処理(RAM)を終了する。
図21は、実施例1に係るデータ受領処理(FM)のフローチャートである。
データ受領処理(FM)は、図19に示すライトコマンド処理のステップS77の処理に対応する。
まず、CPU33は、ホスト計算機10から受領したデータを、FMボード32のバッファメモリ323に書き込む(ステップS91)。
次に、CPU33は、書き込んだデータをバッファメモリ323から読み出すことができるかテストする(ステップS92)。このとき、CPU33は、例えばデータに付加されたCRC(Cyclic Redundancy Check)などの保証コードをチェックすることで、データが正常であることを確認してもよい。
次に、CPU33は、書き込んだデータがダーティデータであると設定する(ステップS93)。すなわち、CPU33は、SGCT120のダーティビットマップ120fにおける、受領したデータが書き込まれたブロックに対応するビットをONにする。
続いて、CPU33は、コマンドの完了ステータスをホスト計算機10に送信し、FMセグメント325を含むスロットを解放する(ステップS95)。
次に、CPU33は、FMプロセッサ302bに対して、バッファメモリ323上のデータをFMチップ321のキャッシュセグメント325に格納するよう要求し(ステップS96)、データ受領処理(FM)を終了する。
図22は、実施例1に係るFMデータ読み出し処理のフローチャートである。
FMデータ読み出し処理は、図13に示すデータ送信処理のステップS24における、FMチップ321上のデータをバッファに読み出す要求をFMプロセッサ320bが受信した場合に実行される。
まず、FMプロセッサ320bは、ストレージコントローラ30のCPU33から指定された論理アドレスを、FMチップ321上のデータ格納位置を表す物理アドレスに変換する(ステップS101)。なお、論理アドレスから物理アドレスへの変換は、バッファメモリ323に格納されている論理アドレスと物理アドレスとの対応関係を示すマッピングテーブルに基づいて行うことができる。
次に、FMプロセッサ320bは、FMチップ321の物理アドレスに対応する領域から対象データを読み出し、バッファメモリ323に格納する(ステップS102)。
そして、FMプロセッサ320bは、完了応答をストレージコントローラ30のCPU33に対して送信し(ステップS103)、FMデータ読み出し処理を終了する。
図23は、実施例1に係るFMデータ書き込み処理のフローチャートである。
FMデータ書き込み処理は、図21に示すデータ受領処理(FM)のステップS96における、バッファメモリ323上のデータをFMチップ321のキャッシュセグメント325に格納する要求を、FMプロセッサ320bが受信した場合に実行される。
まず、FMプロセッサ320bは、データ格納先のFMチップ321のページ(FMページともいう。)を確保する(ステップS111)。ここで、FMチップ321は、同一のページに対してデータを上書きできないので、FMプロセッサ320bは、既に消去済みのFMページをデータ格納先として選ぶ。もし消去済みのFMページが無い場合は、FMプロセッサ320bは、FMチップ321の空きブロック(空きFMブロックともいう)、すなわち有効データが格納されていないFMチップ321のブロック(FMブロックともいう)を消去して、そのFMブロックの先頭から必要な量のFMページをデータ格納先として選ぶ。
次に、FMプロセッサ320bは、バッファメモリ323上のデータを、確保したFMページに書き込む(ステップS112)。
そして、FMプロセッサ320bは、今回処理対象とした論理アドレスが、新たにデータを格納したFMページの物理アドレスに対応するよう、論理アドレスと物理アドレスとの対応関係を表すマッピングテーブルを更新し、また、古いデータが格納されているFMページが無効であることを記憶する(ステップS113)。このとき、FMプロセッサ320bは、無効になったFMページが含まれるFMブロックの全FMページが無効である場合には、当該FMブロックを空きFMブロックとして管理する。この時点で、空きFMブロックのデータを消去してもよいし、後でバックグラウンド処理として空きFMブロックのデータを消去してもよい。
そして、FMプロセッサ320bは、完了応答をストレージコントローラ30のCPU33に対して送信し(ステップS114)、FMデータ書き込み処理を終了する。
次に、実施例2に係る情報システムについて説明する。その際、前述の実施例のうちの少なくとも1つの実施例との相違点を主に説明し、前述の実施例のうちの少なくとも1つの実施例との共通点については説明を省略あるいは簡略化する。これは、実施例2に限らず、実施例3以降についても同様である。
図24は、実施例2に係る情報システムの構成図である。なお、実施例1に係る情報システムと同様な構成に対しては、同一の符号を付している。
実施例2に係る情報システムと、実施例1に係る情報システムとの主な違いは、FMボード32がホスト計算機80に搭載されることにある。このホスト計算機80が、情報処理装置の一例である。
実施例2に係る情報システムは、ホスト計算機80と、ホスト計算機80に直接あるいはネットワークを経由して接続されるHDD40、SSD41、またはストレージシステム20とを含む。
ホスト計算機80は、CPU81と、RAM84と、FMボード32と、ストレージインタフェース82と、ネットワークインタフェース83とを含む。
ストレージインタフェース82は、HDD40又はSSD41を接続するためのインタフェースである。ネットワークインタフェース83は、ネットワークを介してストレージシステム20と接続するためのインタフェースである。FMボード32は、図4に示す実施例1に係るFMボードと同様な構成である。
RAM84は、CPU81が実行するアプリケーションプログラム841と、オペレーティングシステム842(オペレーティングシステムA、オペレーティングシステムB)と、ハイパーバイザプログラム843と、ストレージ制御プログラム340と、キャッシュ制御情報341とを格納する。また、RAM84は、データをキャッシュするためのキャッシュセグメント343を格納する。
ハイパーバイザプログラム843は、ホスト計算機80で構築する仮想マシン(VM)を管理するプログラムである。なお、ハイパーバイザプログラム843の機能を、ハードウェアとして実装してもよい。
図25は、実施例2に係るデータ入出力処理の概要を示す図である。
本実施例に係るホスト計算機80においては、一番下の階層には、CPU81がハイパーバイザプログラム843を実行することにより構築されるハイパーバイザHVが位置する。ハイパーバイザHVは、仮想化機構の一種である。仮想化機構は、プログラムを実行するプロセッサを有した計算機であっても良い。ハイパーバイザHVによって、1以上の仮想マシン(図25では、仮想マシンA(VMA)及び仮想マシンB(VMB)が実現される。仮想マシンAでは、オペレーティングシステムAが動作し、その上でアプリケーションプログラム841が動く。また、仮想マシンBでは、オペレーティングシステムBが動作し、その上でストレージ制御プログラム340が動く。ストレージ制御プログラム340は、RAM34のキャッシュセグメント343およびFMチップ321のキャッシュセグメント325を用いて、実施例1と同様なキャッシュを制御する。なお、ストレージ制御プログラム340はホスト計算機80に接続されたHDD40、SSD41、またはストレージシステム20に対するデータ入出力の制御も行う。
仮想マシンAのアプリケーションプログラム841と、仮想マシンBのストレージ制御プログラム340とは、仮想マシン間通信によって互いに通信を行う。なお、この仮想マシン間通信は、ハイパーバイザHVあるいは各オペレーティングシステム842によって仮想化され、アプリケーションプログラム841やストレージ制御プログラム340にとっては、例えばSCSIのようなストレージインタフェースを介した通信と同様の仮想的なインタフェースを用いて行ってもよい。
実施例2に係る情報システムによると、ホスト計算機80において、RAMキャッシュセグメント343と、FMキャッシュセグメント325とを用いて、適切にデータのキャッシュを行うことができる。
次に、実施例3に係る情報システムについて説明する。
図26は、実施例3に係る情報システムの構成を示す図である。
実施例3に係る情報システムは、実施例2に係る情報システムとは、ホスト計算機におけるRAMで管理する内容が異なっている。
実施例3に係るホスト計算機90は、RAM91を含む。このホスト計算機90は、情報処理装置の一例である。RAM91は、オペレーティングシステム911を格納する。オペレーティングシステム911は、ストレージ制御プログラム340およびキャッシュ制御情報341をドライバとして含む。
図27は、実施例3に係るデータ入出力処理の概要を示す図である。
実施例3に係るホスト計算機90では、アプリケーションプログラム841がストレージ(HDD40、SSD41、またはストレージシステム20)に対する入出力を行う際、オペレーティングシステム911に含まれるストレージ制御プログラム341がこの入出力要求を処理し、実施例1と同様に、RAMキャッシュセグメント343やFMキャッシュセグメント325へのキャッシングを行う。また、ストレージ制御プログラム341は、ストレージに対して入出力を行うために、各種デバイスドライバ(912、913)にストレージに対する入出力要求を渡す。デバイスドライバA912は、入出力要求に基づいて、ストレージインタフェース82を制御する。デバイスドライバB913は、入出力要求に基づいて、ネットワークインタフェース83を制御する。
実施例3に係る情報システムによると、ホスト計算機90のオペレーティングシステム911が、RAMキャッシュセグメント343と、FMキャッシュセグメント325とを用いて、適切にデータのキャッシュを行うことができる。
次に、実施例4に係る情報システムについて説明する。
実施例4に係る情報システムと実施例1に係る情報システムとの違いは、リードコマンド処理の手順である。実施例4に係る情報システムでは、ドライブからステージングしたデータを、バッファメモリ323からFMチップ321に書き込む前に、まずバッファメモリ323からホスト計算機10へ送信し、その後でFMチップ321に書き込む。こうすることでリードコマンド完了までの所要時間(レスポンスタイム)を短くすることができる。
図28は、実施例4に係るジョブ制御テーブルの構成図である。
ジョブ制御テーブル344は、ジョブ種類344aと、論理ユニット番号344bと、論理ブロックアドレス344cと、転送長344dと、バッファアドレス344eとを記憶する。ジョブ種類344aは、ジョブが行う処理の種類を表す。ジョブ種類344aは、例えば、リードコマンド処理であれば「1」、ライトコマンド処理であれば「2」などのジョブを示すIDである。論理ユニット番号344b、論理ブロックアドレス344c、及び転送長344dは、それぞれ、ホスト計算機10から受信したリード・ライトコマンドに指定された、アクセス対象についての論理ユニットの番号、論理ブロックアドレス(LBA)、転送長を表す。バッファアドレス344eは、このジョブが確保しているバッファのアドレスを表す。バッファアドレス344eは、バッファが確保されてないときは、アドレスが無効であることを表す値(例えばNULL)となっている。
図29は、実施例4に係るリードコマンド処理の第1のフローチャートであり、図30は、実施例4に係るリードコマンド処理の第2のフローチャートである。図29のフローチャートの符号Aは、図30のフローチャートの符号Aに繋がっていることを示している。
リードコマンド処理は、ホスト計算機10からストレージコントローラ30がリードコマンドを受信した場合に実行される。
まず、リードコマンドを受信したストレージコントローラ30のCPU33は、リードコマンドで指定されているリード対象アドレスに対応するキャッシュセグメントが割り当て済みであるか否かを判定する(ステップS1)。この結果、キャッシュセグメントが割り当て済みであれば(ステップS1:YES)、CPU33は、ステップS3へ処理を進める一方、キャッシュセグメントが未割り当てであれば(ステップS1:NO)、キャッシュ割り当て処理(図14参照)を実行し(ステップS2)、ステップS3へ処理を進める。キャッシュ割り当て処理は、実施例1で説明した通りである。
ステップS3では、CPU33は、リード対象アドレスに対応するキャッシュセグメントを含むスロットをロックする。具体的には、CPU33は、このキャッシュセグメントを含むスロットのSLCT110のスロットステータス110eの「ロック中」を表すビットをONにすることで、当該スロットがロックされていることを表す。
続いてCPU33は、リード対象のデータがキャッシュセグメントに格納されているか否か、すなわち、キャッシュヒットか否かを判定する(ステップS4)。具体的には、CPU33は、リード対象のキャッシュセグメントに対応するSGCT120のステージングビットマップ120eおよびダーティビットマップ120fを調べ、リード対象の全ブロックに関して、当該ブロックに対応するステージングビットマップ120eのビットもしくはダーティビットマップ120fのビットのいずれかがONであれば、キャッシュヒットであると判断する。一方、CPU33は、リード対象の範囲内に、ダーティビットマップ120fとステージングビットマップ120eとの対応するビットがいずれもOFFであるブロックが一つでもある場合は、キャッシュミスであると判断する。
この結果、キャッシュヒットの場合(ステップS4:YES)は、CPU33は、処理をステップS122へ進める一方、キャッシュミスの場合(ステップS4:NO)は、ステージング処理(図31参照)を実行し(ステップS121)、処理をステップS122に進める。ステージング処理では、ドライブ(HDD40、またはSSD41)からキャッシュセグメント(325又は343)へデータが読み込まれる。ステージング処理が完了すると、リード対象のデータがキャッシュセグメント(325又は343)に格納された状態になる。
ステップS122では、CPU33は、キャッシュセグメントに格納されたデータをホスト計算機10に送信するデータ送信処理(図32参照)を実行する。
続いて、CPU33は、コマンドの完了ステータスをホスト計算機10に送信する(ステップS7)。すなわち、CPU33は、コマンドの処理中にエラーが発生してリード処理が正常に完了しなかった場合はエラーステータス(例えばCHECK CONDITION)を返す一方、リード処理が正常に完了した場合は正常ステータス(GOOD)を返す。
次に、CPU33は、FMチップ321へのライトを実施中か否かを判定する(ステップS123)。「FMチップ321へのライトを実施中」とは、バッファメモリ323からFMチップ321へのデータ書き込み要求をFMプロセッサ320bに送信した後、まだFMプロセッサ320bから完了通知を受信していない状態を意味する。この結果、真であれば(ステップS123:YES)、CPU33は、FMプロセッサ320bからの完了通知を待ち(ステップS124)、処理をステップS125に進める。一方、偽であれば(ステップS123:NO)、CPU33は、処理をステップS125に進める。
ステップS125では、CPU33は、バッファを解放する。次いで、CPU33は、ロックしているスロットを解放(アンロック)し(ステップS8)、アクセスモニタテーブル342を更新し(ステップS9)、リードコマンド処理を終了する。アクセスモニタテーブル342の更新とは、例えば、リード量カウンタ342eに今回のリードコマンドで読み出したデータ量を加算し、リードコマンドカウンタ342gをインクリメントする。
図31は、実施例4に係るステージング処理のフローチャートである。
ステージング処理は、図29のリードコマンド処理のステップS121の処理に対応する。
まず、CPU33は、リード対象アドレスに割り当てられたキャッシュセグメントの基になっているキャッシュメモリの種類を調べ、キャッシュセグメントがRAM34上のキャッシュセグメント(RAMセグメント)343であるか否かを判定する(ステップS11)。ここで、キャッシュセグメントの基になっているキャッシュメモリの種類は、対応するSGCT120のメモリ種類120cを参照することにより特定することができる。
この結果、キャッシュセグメントがRAMセグメント343であれば(ステップS11:YES)、CPU33は、処理をステップS12に進める一方、キャッシュセグメントがRAMセグメント343でなければ(ステップS11:NO)、処理をステップS13に進める。
ステップS12では、CPU33は、リード対象(ステージング対象)のデータをドライブ(HDD40またはSSD41)から読み出して、RAMセグメント343に格納し、ステージング処理を終了する。
ステップS13以降の処理では、キャッシュセグメントがRAMセグメント343でない、すなわちFMチップ321上のキャッシュセグメント(FMセグメント)325であるので、ドライブから読み上げたデータを直接FMチップ321に書くのではなく、一旦、FMボード32のバッファメモリ323に格納した後、バッファメモリ323からFMチップ321に書き込むようにする。
まず、ステップS13では、CPU33は、バッファメモリ323にドライブから読み上げたデータを格納するための領域(バッファ)の確保を行う。すなわち、CPU33は、バッファメモリ323のうちステージング対象のデータを格納するのに十分な領域をバッファに割り当てる。
次に、CPU33は、ステージング対象のデータをドライブから読み出してバッファに格納する(ステップS14)。本実施例では、BE I/F35が、CPU33の指示を受けて、ドライブからFMボード32のバッファメモリ323のバッファに対してデータを格納している。
そして、CPU33は、FMプロセッサ320bに対し、バッファメモリ323のバッファ上のデータをFMチップ321に格納するよう要求する(ステップS15)。この要求に対してFMプロセッサ320bは、データ送信処理(図32参照)を実行する。
その後、CPU33は、ステージング処理を終了する。
図32は、実施例4に係るデータ送信処理のフローチャートである。
データ送信処理は、図29に示すリードコマンド処理のステップS122の処理に対応する。
まず、CPU33は、リード対象アドレスに割り当てられたキャッシュセグメントの基になっているキャッシュメモリの種類を調べ、キャッシュセグメントがRAMセグメント343であるか否かを判定する(ステップS21)。ここで、キャッシュセグメントの基になっているキャッシュメモリの種類は、対応するSGCT120のメモリ種類120cを参照することにより特定することができる。
この結果、キャッシュセグメントがRAMセグメント343であれば(ステップS21:YES)、CPU33は、処理をステップS22に進める一方、キャッシュセグメントがRAMセグメント343でなければ(ステップS21:NO)、処理をステップS131に進める。
ステップS22では、CPU33は、リード対象(送信対象)のデータをRAMセグメント343からホスト計算機10へ転送し、データ送信処理を終了する。
ステップS131では、CPU33は、リード・ライトコマンドに対応するジョブ制御テーブル344のバッファアドレス344eが有効であるか否かをチェックする。この結果、バッファアドレス344eが有効であれば(ステップS131:VALID)、CPU33は、処理をステップS132に進める一方、バッファアドレス344eが無効であれば、処理をステップS23に進める。
ステップS23では、CPU33は、バッファメモリ323にバッファの確保を行う。すなわち、CPU33は、バッファメモリ323から送信対象のデータを格納するのに十分な領域を割り当てる。
次に、CPU33は、FMプロセッサ320bに対し、FMチップ321のデータをバッファメモリ323のバッファに読み出すよう要求する(ステップS24)。この要求に対してFMプロセッサ320bは、FMデータ読み出し処理(図22参照)を実行する。FMデータ読み出し処理により、バッファメモリ323には、送信対象のデータが格納される。FMプロセッサ320bは、FMデータ読み出し処理を終了すると、その要求に対する完了応答をCPU33に返す。
続いて、CPU33は、その要求に対する完了応答をFMプロセッサ320bから受け取り(ステップS25)、処理をステップS132に進める。
ステップS132では、CPU33は、送信対象のデータをバッファメモリ323からホスト計算機10に送信する。
次に、実施例5に係る情報システムについて説明する。
実施例5に係る情報システムと実施例1に係る情報システムとの違いは、実施例5に係る情報システムが、キャッシュセグメントが割り当てられているメモリ種類の見直しを行い、データのアクセス特性等に応じて、割り当て済のキャッシュセグメントから、異なるメモリ種類のキャッシュセグメントへデータを移動させるようにしたことである。これにより、データをそのデータのアクセス特性に応じた適切なキャッシュセグメントに格納することができる。
図33は、実施例5に係るメモリ種類見直し処理のフローチャートである。
メモリ種類見直し処理は、例えば割り当て済の各セグメントに対して定期的に行ってもよいし、データをあるドライブから別のドライブへ移す際に、当該データが格納されているセグメントに対して行ってもよい。
まず、CPU33は、処理対象のキャッシュセグメント(図33の説明において処理対象セグメントという)を含むスロットをロックする(ステップS151)。
次に、CPU33は、処理対象セグメントのメモリ種類が適切であるか否かを判定する(ステップS152)。この判定の基準には、図14に示したキャッシュ割り当て処理の判定基準の一部あるいは全部を用いることができる。例えばアクセス頻度が高い場合や、SSDのデータを格納している場合などは、RAMセグメント343が適切であり、それ以外の場合は、FMセグメント325が適切であると判定する。
この判定の結果が真、すなわちメモリ種類が適切な場合(ステップS152:YES)は、CPU33は、スロットを解放し(ステップS153)、メモリ種類見直し処理を終了する。一方、判定の結果が偽、すなわちメモリ種類が不適切な場合(ステップS152:NO)は、以下の処理に進む。
すなわち、CPU33は、適切なメモリ種類の空きセグメントがあるか調べる(ステップS154)。この結果、適切なメモリ種類の空きセグメントが無ければ(ステップS154:NO)、CPU33は、スロットを解放し(ステップS153)、メモリ種類見直し処理を終了する。
一方、適切なメモリ種類の空きセグメントが有れば(ステップS154:YES)、CPU33は、処理対象セグメントのデータに対して、適切なメモリ種類のセグメントを新しく割り当てる(ステップS155)。次に、CPU33は、データを古いキャッシュセグメントから新しいキャッシュセグメントにコピーし(ステップS156)、古いキャッシュセグメントを解放し(ステップS157)、スロットを解放し(ステップS153)、メモリ種類見直し処理を終了する。
以上、いくつかの実施例を説明したが、これらは、本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。すなわち、本発明は、他の種々の形態でも実施する事が可能である。
20:ストレージシステム
30:ストレージコントローラ
32:FMボード
34:RAM
321:FMチップ
30:ストレージコントローラ
32:FMボード
34:RAM
321:FMチップ
Claims (10)
- ホストコンピュータからのI/Oリクエストを受け付ける情報処理装置であって、
前記情報処理装置は、第1のメモリで構成された第1のキャッシュメモリと、
前記第1のメモリよりもアクセス性能が低い第2のメモリで構成された第2のキャッシュメモリと、
前記第1及び第2のキャッシュメモリに接続された制御デバイスとを備え、
前記制御デバイスは、
データが管理される1以上の論理ボリュームにおける所定の領域毎に、当該領域のデータに対するアクセスに関する情報を収集し、
前記アクセスに関する情報に基づいて、アクセス速度に関する閾値を決定し、
前記閾値よりも前記データに対するアクセス速度が高い場合には、前記第2のキャッシュメモリよりも前記第1のキャッシュメモリに優先的に前記データをキャッシュする、
情報処理装置。 - 前記制御デバイスは、前記閾値よりも前記データに対するアクセス速度が遅い場合に、前記第1のキャッシュメモリよりも前記第2のキャッシュメモリに優先的に前記データをキャッシュする
請求項1に記載の情報処理装置。 - 前記第2のキャッシュメモリよりもアクセス性能の高いバッファメモリを更に備え、
前記制御デバイスは、前記第2のキャッシュメモリに対して前記データを格納する際には、前記バッファメモリに前記データを格納し、その後、前記バッファメモリから前記第2のキャッシュメモリに格納する
請求項1に記載の情報処理装置。 - 前記第1のメモリは、RAM(Random Access Memory)であり、
前記第2のメモリは、フラッシュメモリである
請求項1に記載の情報処理装置。 - 前記制御デバイスは、前記データがシーケンシャルアクセスの対象となるデータである場合に、前記第2のキャッシュメモリよりも前記第1のキャッシュメモリに優先的にキャッシュする
請求項1に記載の情報処理装置。 - 前記制御デバイスは、
前記データが最終的に管理されるストレージデバイスが前記第2のメモリで構成されている場合には、前記第1のキャッシュメモリに優先的にキャッシュする
請求項1に記載の情報処理装置。 - 前記制御デバイスは、前記データが一時的に使用されるデータである場合に、前記第1のキャッシュメモリに優先的にキャッシュする
請求項1に記載の情報処理装置。 - ホストコンピュータからのI/Oリクエストを受け付ける情報処理装置のキャッシュ制御方法であって、
前記情報処理装置は、第1のメモリで構成された第1のキャッシュメモリと、
前記第1のメモリよりもアクセス性能が低い第2のメモリで構成された第2のキャッシュメモリと、
前記第1及び第2のキャッシュメモリに接続された制御デバイスとを備え、
前記制御デバイスが、
データが管理される1以上の論理ボリュームにおける所定の領域毎に、当該領域のデータに対するアクセスに関する情報を収集し、
前記アクセスに関する情報に基づいて、アクセス速度に関する閾値を決定し、
前記閾値よりも前記データに対するアクセス速度が高い場合には、前記第2のキャッシュメモリよりも前記第1のキャッシュメモリに優先的に前記データをキャッシュする、
キャッシュ制御方法。 - 前記制御デバイスは、前記閾値よりも前記データに対するアクセス速度が遅い場合、前記第1のキャッシュメモリよりも前記第2のキャッシュメモリに優先的に前記データをキャッシュする、
請求項8に記載のキャッシュ制御方法。 - 前記データがシーケンシャルアクセスの対象となるデータである場合は、前記第2のキャッシュメモリよりも前記第1のキャッシュメモリに優先的にキャッシュする
請求項8に記載のキャッシュ制御方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2012/008459 WO2014102886A1 (en) | 2012-12-28 | 2012-12-28 | Information processing apparatus and cache control method |
JPPCT/JP2012/008459 | 2012-12-28 | ||
PCT/JP2013/078731 WO2014103489A1 (ja) | 2012-12-28 | 2013-10-23 | 特性の異なる複数種類のキャッシュメモリを有する情報処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6000376B2 true JP6000376B2 (ja) | 2016-09-28 |
JPWO2014103489A1 JPWO2014103489A1 (ja) | 2017-01-12 |
Family
ID=47603955
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014554203A Active JP6000376B2 (ja) | 2012-12-28 | 2013-10-23 | 特性の異なる複数種類のキャッシュメモリを有する情報処理装置 |
Country Status (3)
Country | Link |
---|---|
US (2) | US20140189204A1 (ja) |
JP (1) | JP6000376B2 (ja) |
WO (2) | WO2014102886A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015179320A (ja) * | 2014-03-18 | 2015-10-08 | 株式会社東芝 | キャッシュメモリおよびプロセッサシステム |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8700949B2 (en) * | 2010-03-30 | 2014-04-15 | International Business Machines Corporation | Reliability scheme using hybrid SSD/HDD replication with log structured management |
CN103946812B (zh) * | 2011-09-30 | 2017-06-09 | 英特尔公司 | 用于实现多级别存储器分级体系的设备和方法 |
JP6098262B2 (ja) * | 2013-03-21 | 2017-03-22 | 日本電気株式会社 | 記憶装置および記憶方法 |
JP6191240B2 (ja) * | 2013-05-28 | 2017-09-06 | 富士通株式会社 | 変数更新装置、変数更新システム、変数更新方法、変数更新プログラム、変換プログラム、及びプログラム変更検証システム |
US9110809B2 (en) * | 2013-07-03 | 2015-08-18 | Nvidia Corporation | Reducing memory traffic in DRAM ECC mode |
KR20150010150A (ko) * | 2013-07-18 | 2015-01-28 | 삼성전자주식회사 | 메모리 시스템 및 이의 동작 방법 |
US9471357B2 (en) * | 2013-09-13 | 2016-10-18 | American Megatrends, Inc. | Monitoring virtual machine interface and local graphical user interface on a thin client and alternating therebetween |
WO2015097751A1 (ja) | 2013-12-24 | 2015-07-02 | 株式会社日立製作所 | 不揮発性キャッシュメモリにデータをバックアップするストレージシステム |
US9479265B2 (en) * | 2015-02-16 | 2016-10-25 | American Megatrends, Inc. | System and method for high speed and efficient virtual desktop insfrastructure using photonics |
US20160291887A1 (en) * | 2015-03-30 | 2016-10-06 | Kabushiki Kaisha Toshiba | Solid-state drive with non-volatile random access memory |
US10198192B2 (en) * | 2015-03-31 | 2019-02-05 | Veritas Technologies Llc | Systems and methods for improving quality of service within hybrid storage systems |
US10545684B2 (en) * | 2015-05-13 | 2020-01-28 | Hitachi, Ltd. | Storage device |
JP2017015553A (ja) * | 2015-07-01 | 2017-01-19 | ファナック株式会社 | 収集するデータ毎に記憶媒体を分けて保存できるデータロガー |
WO2017046871A1 (ja) * | 2015-09-15 | 2017-03-23 | 株式会社日立製作所 | 情報処理装置、拡張メモリおよび情報処理装置のメモリ制御方法 |
JP6039772B1 (ja) | 2015-09-16 | 2016-12-07 | 株式会社東芝 | メモリシステム |
JP6743358B2 (ja) * | 2015-09-24 | 2020-08-19 | 日本電気株式会社 | 情報処理システム及び情報処理方法 |
US10241683B2 (en) * | 2015-10-26 | 2019-03-26 | Nxp Usa, Inc. | Non-volatile RAM system |
US11977484B2 (en) | 2016-07-19 | 2024-05-07 | Sap Se | Adapting in-memory database in hybrid memory systems and operating system interface |
US10783146B2 (en) * | 2016-07-19 | 2020-09-22 | Sap Se | Join operations in hybrid main memory systems |
US10698732B2 (en) | 2016-07-19 | 2020-06-30 | Sap Se | Page ranking in operating system virtual pages in hybrid memory systems |
JP6703790B2 (ja) * | 2016-08-05 | 2020-06-03 | キヤノン株式会社 | 情報処理装置及びその制御方法、並びにプログラム |
JP6629253B2 (ja) * | 2017-03-01 | 2020-01-15 | 株式会社東芝 | 情報処理装置、情報処理システム、および情報処理プログラム |
JP6732684B2 (ja) | 2017-03-15 | 2020-07-29 | キオクシア株式会社 | 情報処理装置、ストレージデバイスおよび情報処理システム |
US11010379B2 (en) | 2017-08-15 | 2021-05-18 | Sap Se | Increasing performance of in-memory databases using re-ordered query execution plans |
CN109426623A (zh) * | 2017-08-29 | 2019-03-05 | 深圳市中兴微电子技术有限公司 | 一种读取数据的方法及装置 |
JP6928247B2 (ja) * | 2017-09-11 | 2021-09-01 | 富士通株式会社 | ストレージ制御装置およびストレージ制御プログラム |
US10444722B2 (en) * | 2017-09-29 | 2019-10-15 | Intel Corporation | Techniques to direct access requests to storage devices |
KR102507302B1 (ko) | 2018-01-22 | 2023-03-07 | 삼성전자주식회사 | 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
JP2020071583A (ja) * | 2018-10-30 | 2020-05-07 | 株式会社日立製作所 | データ管理装置、データ管理方法、及びデータ管理プログラム |
JP6898393B2 (ja) | 2019-03-22 | 2021-07-07 | 株式会社日立製作所 | ストレージシステム及びデータ転送方法 |
US10620868B1 (en) | 2019-03-22 | 2020-04-14 | Hitachi, Ltd. | Storage system and data transfer method |
US11494311B2 (en) * | 2019-09-17 | 2022-11-08 | Micron Technology, Inc. | Page table hooks to memory types |
US11269780B2 (en) | 2019-09-17 | 2022-03-08 | Micron Technology, Inc. | Mapping non-typed memory access to typed memory access |
US11650742B2 (en) | 2019-09-17 | 2023-05-16 | Micron Technology, Inc. | Accessing stored metadata to identify memory devices in which data is stored |
US10963396B1 (en) | 2019-09-17 | 2021-03-30 | Micron Technology, Inc. | Memory system for binding data to a memory namespace |
CN111813712A (zh) * | 2019-12-31 | 2020-10-23 | 泰斗微电子科技有限公司 | 一种缓存分配控制方法、装置、终端设备及存储介质 |
US11392499B2 (en) * | 2020-09-18 | 2022-07-19 | Kioxia Corporation | Dynamic buffer caching of storage devices |
KR20220055717A (ko) * | 2020-10-27 | 2022-05-04 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
CN112463037B (zh) * | 2020-11-13 | 2022-08-12 | 苏州浪潮智能科技有限公司 | 一种元数据保存方法、装置、设备、产品 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003076498A (ja) * | 2001-09-05 | 2003-03-14 | Hitachi Ltd | ディスク記憶装置 |
JP2009205335A (ja) * | 2008-02-27 | 2009-09-10 | Hitachi Ltd | 2種のメモリデバイスをキャッシュに用いるストレージシステム及びそのストレージシステムを制御する方法 |
JP2011022933A (ja) * | 2009-07-17 | 2011-02-03 | Toshiba Corp | メモリ管理装置を含む情報処理装置及びメモリ管理方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4430701A (en) * | 1981-08-03 | 1984-02-07 | International Business Machines Corporation | Method and apparatus for a hierarchical paging storage system |
US6934806B2 (en) * | 2002-09-23 | 2005-08-23 | International Business Machines Corporation | Method and system for improving input/output performance by proactively flushing and locking an entire page out of caches of a multiprocessor system |
US7051174B2 (en) * | 2002-09-24 | 2006-05-23 | International Business Machines Corporation | Method, system, and program for restoring data in cache |
US7613876B2 (en) * | 2006-06-08 | 2009-11-03 | Bitmicro Networks, Inc. | Hybrid multi-tiered caching storage system |
KR20080017982A (ko) * | 2006-08-23 | 2008-02-27 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그 프로그램 방법 |
US8131930B1 (en) * | 2008-03-31 | 2012-03-06 | Emc Corporation | System and method for improving cache efficiency |
KR101038167B1 (ko) * | 2008-09-09 | 2011-05-31 | 가부시끼가이샤 도시바 | 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법 |
US8397016B2 (en) * | 2008-12-31 | 2013-03-12 | Violin Memory, Inc. | Efficient use of hybrid media in cache architectures |
WO2010089795A1 (en) * | 2009-02-03 | 2010-08-12 | Hitachi, Ltd. | Storage control device, and control method for cache memory |
CN102576333B (zh) * | 2009-10-05 | 2016-01-13 | 马维尔国际贸易有限公司 | 非易失性存储器中的数据高速缓存 |
JP2011209892A (ja) * | 2010-03-29 | 2011-10-20 | Fujitsu Ltd | ストレージシステム、ストレージシステムの制御方法、スイッチ装置およびストレージ装置 |
US8230123B2 (en) * | 2010-08-23 | 2012-07-24 | International Business Machines Corporation | Using information on input/output (I/O) sizes of accesses to an extent to determine a type of storage device for the extent |
US8656088B2 (en) * | 2011-05-20 | 2014-02-18 | International Business Machines Corporation | Optimized flash based cache memory |
US8788742B2 (en) * | 2011-05-23 | 2014-07-22 | International Business Machines Corporation | Using an attribute of a write request to determine where to cache data in a storage system having multiple caches including non-volatile storage cache in a sequential access storage device |
JP5175953B2 (ja) * | 2011-06-02 | 2013-04-03 | 株式会社東芝 | 情報処理装置およびキャッシュ制御方法 |
-
2012
- 2012-12-28 US US13/812,285 patent/US20140189204A1/en not_active Abandoned
- 2012-12-28 WO PCT/JP2012/008459 patent/WO2014102886A1/en active Application Filing
-
2013
- 2013-10-23 JP JP2014554203A patent/JP6000376B2/ja active Active
- 2013-10-23 WO PCT/JP2013/078731 patent/WO2014103489A1/ja active Application Filing
- 2013-10-23 US US14/430,643 patent/US20150254186A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003076498A (ja) * | 2001-09-05 | 2003-03-14 | Hitachi Ltd | ディスク記憶装置 |
JP2009205335A (ja) * | 2008-02-27 | 2009-09-10 | Hitachi Ltd | 2種のメモリデバイスをキャッシュに用いるストレージシステム及びそのストレージシステムを制御する方法 |
JP2011022933A (ja) * | 2009-07-17 | 2011-02-03 | Toshiba Corp | メモリ管理装置を含む情報処理装置及びメモリ管理方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015179320A (ja) * | 2014-03-18 | 2015-10-08 | 株式会社東芝 | キャッシュメモリおよびプロセッサシステム |
Also Published As
Publication number | Publication date |
---|---|
WO2014102886A1 (en) | 2014-07-03 |
WO2014103489A1 (ja) | 2014-07-03 |
US20140189204A1 (en) | 2014-07-03 |
JPWO2014103489A1 (ja) | 2017-01-12 |
US20150254186A1 (en) | 2015-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6000376B2 (ja) | 特性の異なる複数種類のキャッシュメモリを有する情報処理装置 | |
US10996863B1 (en) | Nonvolatile memory with configurable zone/namespace parameters and host-directed copying of data across zones/namespaces | |
US10162536B2 (en) | Storage apparatus and storage control method | |
JP6073471B2 (ja) | ストレージ装置 | |
JP6807376B2 (ja) | 仮想ストレージシステム | |
US9405478B2 (en) | Storage apparatus provided with a plurality of nonvolatile semiconductor storage media and storage control method | |
US8832371B2 (en) | Storage system with multiple flash memory packages and data control method therefor | |
WO2014141411A1 (ja) | ストレージシステムおよびストレージシステム制御方法 | |
US12093533B1 (en) | Memory management of nonvolatile discrete namespaces | |
US10846231B2 (en) | Storage apparatus, recording medium, and storage control method | |
KR20150105323A (ko) | 데이터 스토리지 방법 및 시스템 | |
WO2016067328A1 (ja) | 不揮発メモリデバイスを有するストレージ装置、及び、不揮発メモリデバイス | |
JP2020071583A (ja) | データ管理装置、データ管理方法、及びデータ管理プログラム | |
US11016889B1 (en) | Storage device with enhanced time to ready performance | |
JP6817340B2 (ja) | 計算機 | |
US10915441B2 (en) | Storage system having non-volatile memory device | |
JP5768118B2 (ja) | 複数のフラッシュパッケージを有するストレージシステム | |
JP7373018B2 (ja) | 仮想ストレージシステム | |
US20240012580A1 (en) | Systems, methods, and devices for reclaim unit formation and selection in a storage device | |
JP6138318B2 (ja) | 複数のフラッシュパッケージを有するストレージシステム | |
CN117369718A (zh) | 在存储装置中形成和选择回收单元的系统、方法和装置 | |
JP2015201231A (ja) | 複数のフラッシュパッケージを有するストレージシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20160809 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160830 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6000376 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |