JP5646633B2 - ストレージ装置 - Google Patents
ストレージ装置 Download PDFInfo
- Publication number
- JP5646633B2 JP5646633B2 JP2012529828A JP2012529828A JP5646633B2 JP 5646633 B2 JP5646633 B2 JP 5646633B2 JP 2012529828 A JP2012529828 A JP 2012529828A JP 2012529828 A JP2012529828 A JP 2012529828A JP 5646633 B2 JP5646633 B2 JP 5646633B2
- Authority
- JP
- Japan
- Prior art keywords
- controller
- flash
- flash memory
- storage
- memory chip
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Description
図2は、本発明の実施の形態1に係るストレージシステム10000の構成を示す図である。ストレージシステム10000は、ストレージ装置10、ホスト計算機40を備える。ホスト計算機40は、ストレージ装置10を利用する上位装置、例えばアプリケーションサーバである。
ストレージ装置10は、ホスト計算機40から、データライト要求またはデータリード要求(I/O要求)を受信する。ストレージコントローラ100は、本フローチャートを開始する。
ストレージコントローラ100は、ステップS10で受信した要求がリード(RD)要求であるか、ライト(WR)要求であるかを判断する。リード要求である場合はステップS30へ進み、ライト要求である場合はステップS50へ進む。
ストレージコントローラ100は、リード要求を受けたデータをFlash Box210からメモリ140に転送するステージング処理を実行する。本ステップの詳細は、後述の図15〜図16で改めて説明する。
ストレージコントローラ100は、ステップS30でFlash Box210からメモリ140に転送したデータを、ホスト計算機40に送信する。本ステップにより、ホスト計算機40から依頼されたリード要求処理は終了する。
ストレージコントローラ100は、ホスト計算機40に対し、ライト要求の対象であるデータを転送するよう依頼する。ストレージコントローラ100はそのデータを受信し、メモリ140に格納する。
ストレージコントローラ100は、ホスト計算機40に対して、転送が正常終了した旨の応答を送信する。
ストレージコントローラ100は、メモリ140に保持しているデータをFlash Box210に格納するデステージ処理を行う。本図では、ライト要求が発生するたびにデステージ処理を実行しているが、デステージ処理は任意のタイミングで実行してもよい。この場合、ステップS50〜S60を複数回実行した後に、デステージ処理をまとめて実行することになる。これにより、1回のデステージ処理でライト対象データをFlash Box210に対してまとめて転送することができ、処理の効率化が期待できる。
(図15:ステップS100)
ストレージコントローラ100は、ホスト計算機40からI/O要求が到着しているか否かを判断する。I/O要求が到着していればステップS110へ進み、到着していなければステップS140へ進む。
ストレージコントローラ100は、ホスト計算機40が発行したコマンドを解析し、要求種別がRDかWRかを判断する。要求種別がRDである場合はステップS120へ進み、WRである場合はステップS130へ進む。ここでは要求種別がRDであったものと過程して以下のステップを説明する。
ストレージコントローラ100は、ステージング処理(Flashメモリチップ231に格納されているデータを読み出す処理)を実行するため、データ転送要求(BE転送要求(1))を作成する。具体的には、メモリ管理テーブル1423を参照し、Flashメモリチップ231から読み出したデータを格納すべきキャッシュセグメントを確保する。次に、転送リスト1424を作成する。この場合、転送元14242には「BE」、転送先14243には「Mem」が設定され、キャッシュセグメントNo14244には、確保したキャッシュセグメントの番号等が設定される。ストレージコントローラ100は、再度ステップS100に戻り、別のI/O要求が到着していないかを判断する。ここでは別のI/O要求は到着していないものと仮定し、ステップS140へ進む。
ストレージコントローラ100は、転送リスト1424の有無を確認することにより、データ転送要求の有無を判断する。転送リスト1424が作成されている場合は、転送要求ありと判断してステップS150へ進み、転送リスト1424が作成されていなければステップS160へ進む。
ストレージコントローラ100は、転送リスト1424の記述にしたがって、データ転送処理を実行する。本ステップの詳細は、後述の図16で説明する。
ストレージコントローラ100は、転送終了リスト1425の有無を確認することにより、ステップS150で実行したデータ転送のうち終了しているものが有るか否かを確認する。終了したデータ転送がある場合はステップS180へ進み、ない場合はステップS170へ進む。
ストレージコントローラ100は、動作を継続する場合はステップS100へ戻って同様の処理を繰り返し、動作を終了する場合は本フローを終了する。
ストレージコントローラ100は、終了したデータ転送処理のリストNo14251をキーにして転送リスト1424を参照し、転送元14242および転送先14243の値を取得する。転送元14242が「BE」で転送先14243が「Mem」である場合はステップS190へ進み、転送元14242が「Mem」で転送先14243が「FE」である場合はステップS220へ進む。
転送元14242が「BE」で転送先14243が「Mem」である場合は、Flash Box210からメモリ140にデータを読み出す処理が完了したことが分かる。この場合はさらにメモリ140からホスト計算機40へデータを転送する必要があるので、ステップS190でそのためのデータ転送要求を作成する必要がある。転送元14242が「Mem」で転送先14243が「FE」である場合は、メモリ140からホスト計算機40へデータを転送する処理、すなわちリード処理が完了したことが分かる。
ストレージコントローラ100は、ステップS150でFlash Box210からメモリ140に読み出したデータをホスト計算機40へ転送するためのデータ転送要求(FE転送要求(3))を、転送リスト1424として作成する。転送リスト1424の転送元14242には「Mem」、転送先14243には「FE」が設定される。ストレージコントローラ100は、再度ステップS160に戻り、終了したデータ転送があるか否かを確認する。
ストレージコントローラ100は、データをホスト計算機40へ転送する処理が完了したものと判断する。
(図15:ステップS100〜S110)
ストレージコントローラ100は、リード処理で説明したステップS100〜S110と同様の処理を実行する。ここでは要求種別がWRであったものと過程して以下のステップを説明する。
ストレージコントローラ100は、データ受信処理(ホスト計算機40から書き込み対象データを受信する処理)を実行するため、データ転送要求(FE転送要求(2))を作成する。具体的には、メモリ管理テーブル1423を参照し、ホスト計算機40から受信したデータを格納すべきキャッシュセグメントを確保する。次に、転送リスト1424を作成する。この場合、転送元14242には「FE」、転送先14243には「Mem」が設定され、キャッシュセグメントNo14244には、確保したキャッシュセグメントの番号等が設定される。ストレージコントローラ100は、再度ステップS100に戻り、別のI/O要求が到着していないかを判断する。ここでは別のI/O要求は到着していないものと仮定し、ステップS140へ進む。
これらのステップは、リード処理における各ステップと同様である。
ストレージコントローラ100は、終了したデータ転送処理のリストNo14251をキーにして転送リスト1424を参照し、転送元14242および転送先14243の値を取得する。転送元14242が「FE」で転送先14243が「Mem」である場合はステップS200へ進み、転送元14242が「Mem」で転送先14243が「BE」である場合はステップS230へ進む。
ストレージコントローラ100は、データ書込みが正常終了した旨をホスト計算機40に通知する。実際にデータ書込みを実行するのは以後のステップであるが、ホスト計算機40に対して応答を早く返すため、データを受信し終えた時点でホスト計算機40に応答を返すこととした。
ストレージコントローラ100は、ステップS150でホスト計算機40から受信しメモリ140に格納したデータをFlash Box210へ転送するためのデータ転送要求(BE転送要求(4))を、転送リスト1424として作成する。転送リスト1424の転送元14242には「Mem」、転送先14243には「BE」が設定される。ストレージコントローラ100は、再度ステップS160に戻り、終了したデータ転送があるか否かを確認する。
ストレージコントローラ100は、データをFlash Box210へ転送する処理が完了したものと判断する。
CPU130は、転送リスト1424を参照し、リストNo14241の最も若い番号のものを処理対象コマンドとして決定する。
CPU130は、ステップS151で処理対象として定めたコマンドがFlash Box210に対するI/Oであるか否かを、転送先14243を参照することにより判断する。具体的には、転送先14243「BE」が設定されているものが、Flash Box210に対するI/O要求であると判断する。Flash Box210に対するI/O要求であればステップS153へ進み、Flash Box210に対するI/O要求でなければステップS155へ進む。
Flash Box210に対するI/O要求ではない場合とは、例えばホスト計算機40に対するデータ転送要求のことである。
CPU130は、Flash Box210に対しデータ転送の可否を問い合わせる。本ステップの詳細は、後述の図17〜図19で改めて説明する。
CPU130は、Flash Box210からの回答にしたがって、データ転送可否を判断する。データ転送可能であればステップS155へ進み、データ転送不可であればステップS156へ進む。
CPU130は、ASICs150に転送リスト1424を渡す。ASICs150はDMA転送部151の機能を用いて、転送リスト1424に記載されているデータ転送を実行する。
CPU130は、ステップS154でデータ転送不可と判断した場合、Flash Box210が即座にライト処理を実行することができないものと判断する。CPU130は、データ転送を開始することなく、所定時間待機する。CPU130は、本ステップでデータ転送を行わなかったデータについては、本フローを再度実行するときに改めて転送を試みる。
CPU130は、転送リスト1424を参照し、実行していない転送要求が存在するか否かを判断する。実行していない転送要求がある場合はステップS151へ戻り、同様の処理を繰り返す。実行していない転送要求がない場合は、本フローを終了する。
ストレージコントローラ100は、要求コマンド1000を作成する。要求コマンド1000の各項目には、図17で説明した通り、ASICs150が現在処理している転送リスト1424の内容がそれぞれ設定される。
ストレージコントローラ100は、作成した要求コマンド1000をFlashコントローラ220に対して送付する。
Flashコントローラ220は、要求コマンド1000を受信する。
Flashコントローラ220は、要求コマンド1000の内容を確認する。本ステップの詳細は、後述の図19で改めて説明する。
Flashコントローラ220は、ステップS1533の結果に基づき応答コマンド2000を作成し、ストレージコントローラ100に送付する。
ストレージコントローラ100は、応答コマンド2000を受信し、その内容を確認した後、本フローを終了する。
Flashコントローラ220は、アドレス管理テーブル22422を参照し、要求コマンド1000で指定されたデータが格納されているChip No224222およびBlock No224223を探索する。
Flashコントローラ220は、Block管理テーブル22423のステータス情報224234を参照し、当該Block232が現在GC実行中であるか否かを判断する。GC実行中であればステップS15336へ進み、GC実行中でなければステップS15332へ進む。
Flashコントローラ220は、Block管理テーブル22423のステータス情報224234を参照し、当該Blockが現在WL実行中であるか否かを判断する。WL実行中であればステップS15336へ進み、WL実行中でなければステップS15333へ進む。
Flashコントローラ220は、データ転送要求を受領したBlockにおいて、GCが発生するか否かを判断する。具体的には、要求コマンド1000に含まれるライト要求サイズ1004から、データを格納するために更新領域のPage233がどれだけ必要であるかを判断する。必要となるPage233の数が不足していればGCが発生すると判断し、足りていればGCは発生しないと判断する。GCが発生すると判断する場合はステップS15335へ進み、GCが発生しないと判断する場合はステップS15334へ進む。
本ステップにおける判断方法として、例えば、ライト要求サイズをPage233のサイズで除算して、必要Page数を算出する方法がある。この場合、Flashコントローラ220は、商が当該Blockの有効Page残数224235よりも大きい場合はGCが発生すると判断し、その商が当該Blockの有効Page残数224235以下の場合は、GCは発生しないと判断する。
Flashコントローラ220は、データ転送可能と判定し、本フローを終了する。
Flashコントローラ220は、当該Blockに対してGCを開始する。
Flashコントローラ220は、データ転送不可と判定し、本フローを終了する。
Flashコントローラ220は、Flashメモリチップ231に対してGCを実行しているものとする。
ストレージコントローラ100は、Flashメモリチップ231にデータを書き込むことができるか否かをFlashコントローラ220に対して問い合わせる処理を開始する。ストレージコントローラ100は、Flashメモリチップ231にデータを書込むことができるか否かを問い合わせる要求コマンド1000を、Flashコントローラ220に送信する。
Flashコントローラ220は、本ステップの時点ではFlashメモリチップ231に対してGCを実行している。したがって、Flashメモリチップ231にデータを書込むことができない旨を示す応答コマンド2000を、ストレージコントローラ100に送信する。
ストレージコントローラ100は、Flashメモリチップ231にデータを書き込む処理を待機し、別の処理を実行する。このときの待機時間は、固定的に定めておいてもよいし、都度定めてもよい。
Flashコントローラ220は、GCが完了した後は、Flashメモリチップ231に対するデータ書込み要求を受け付けることができる状態になる。
ストレージコントローラ100は、ステップS3105で待機していたデータ書込み処理を再開し、ステップS3101〜S3102と同様の処理を実行する。
Flashコントローラ220は、ステップS3103〜S3104と同様に、ストレージコントローラ100に対して応答コマンド2000を送信する。ここではGCが完了しているので、Flashメモリチップ231にデータを書込むことができる旨を示す応答コマンド2000を送信することになる。
ストレージコントローラ100は、Flashメモリチップ231にデータを書き込む処理を開始する。ストレージコントローラ100は、Flashメモリチップ231にデータを書込む要求コマンド1000を、Flashコントローラ220に送信する。
Flashコントローラ220は、Flashメモリチップ231に対してデータ書込みを実行する。データ書込みが完了すると、ストレージコントローラ100に対して、その旨を通知する応答コマンド2000を送信する。ストレージコントローラ100は、その応答コマンド2000を受信すると、データ書込み処理を終了する。
本発明の実施の形態2では、ストレージコントローラ100がFlashコントローラ220に対してデータ書込み要求を発行する前に、あらかじめGCを実行しておく動作例を説明する。その他の構成は実施の形態1で説明したものと同様である。
ストレージコントローラ100は、現在処理しているI/O要求がシーケンシャルライト要求であるか否かを判断する。シーケンシャルライト要求であればステップS242へ進み、シーケンシャルライト要求でなければ本フローを終了する。
本ステップでシーケンシャルライトであるか否かを判断しているのは、一般にシーケンシャルライトはサイズの大きいデータを書き込む際に実行される書込みコマンドだからである。
シーケンシャルライトであるか否かを判定する方法としては、例えば書き込もうとしているデータのアドレスが連続しているか否かによって判定する方法がある。具体的には、ストレージコントローラ100は、ホスト計算機40から受信したI/O要求の直前のアドレス(LBA)におけるデータがメモリ140上に存在するかを、メモリ管理テーブル1423を用いて確認する。そのデータがメモリ140上に存在する場合、当該I/O要求をシーケンシャルライト要求であると判断する。
ストレージコントローラ100は、GCを実行するよう指示する要求コマンド1000を作成し、Flashコントローラ220に対して送信する。
ストレージコントローラ100は、ホスト計算機40よりシーケンシャルライト要求を受け取ったものと仮定する。ストレージコントローラ100は、GC実行を開始する要求コマンド1000を、Flashコントローラ220に送信する。ストレージコントローラ100は、Flashメモリチップ231にデータを書き込む処理を待機し、別の処理を実行する。
Flashコントローラ220は、Flashメモリチップ231に対してGCを実行する。Flashコントローラ220は、GCが完了した後は、Flashメモリチップ231に対するデータ書込み要求を受け付けることができる状態になる。
これらのステップは、図20のステップS3107〜S3116と同様である。
実施の形態2では、ストレージコントローラ100がFlashメモリチップ231に対してデータを書き込む前に、あらかじめGCを実行しておくことを説明した。GCを行うためには、Flashメモリチップ231内にあるデータをいったん代替Block237に退避させなければならないため、空いている代替Block237が存在している必要がある。
ストレージコントローラ100は、LUを削除する処理を実行した後、またはLUを削除する処理の過程で、本処理フローを実行する。
ストレージコントローラ100は、削除したLUに割り当てられていたBlock232を解放するよう要求する要求コマンド1000を、Flashコントローラ220に対して発行する。要求コマンド1000の各パラメータには、解放対象とする領域の開始LBAと終了LBAなどを設定する。この解放範囲は、LU管理テーブル1422上で、削除対象としたLUのSTART LBA14223およびLAST LBA14224を参照することにより特定できる。
Flashコントローラ220は、要求コマンド1000を受信する。
Flashコントローラ220は、要求コマンド1000の内容にしたがって、指示されたBlock232を解放する。具体的には、Flashコントローラ220は、アドレス管理テーブル22422を用いて解放すべきBlock232を特定し、当該Block232に対して消去コマンドを発行する。併せて、Block管理テーブル22423の当該Blockの属性224233を「代替」に変更する。
Flashコントローラ220は、Block232を解放する処理が完了した旨を通知するための応答コマンド2000を作成し、ストレージコントローラ100に対して送付する。
ストレージコントローラ100は、Flashコントローラ220から応答コマンド2000を受信し、本処理フローを終了する。
本発明の実施の形態4では、ストレージ装置10が容量仮想化技術を採用した場合において、代替Block237の数を確保する手法について説明する。代替Block237を確保することが必要となる理由は、実施形態3で説明したものと同様である。
本発明の実施の形態5では、複数のFlash Box210間でライトI/O頻度、データ消去回数などを均一化する手法を説明する。本実施形態5では、実施形態4で説明した容量仮想化技術を採用した構成を前提とするが、同様の手法を実施形態1〜3で説明した構成の下で用いることもできる。
ストレージコントローラ100は、Flashコントローラ220に対して、Flash Box210の統計情報を送付するよう要求するための要求コマンド1000を作成し、Flashコントローラ220に対して送信する。
Flashコントローラ220は、要求コマンド1000を受信する。
Flashコントローラ220は、要求コマンド1000の内容にしたがって、Flash Box210の統計情報を取得する。具体的には、まずBlock管理テーブル22423を参照し、各Block232の状態を取得する。次に、全Block232の消去回数の合計値などの統計情報を、統計情報管理テーブル1428から取得する。
Flashコントローラ220は、要求コマンド1000の要求内容に応じた応答コマンド2000を作成し、ストレージコントローラ100に送付する。
本ステップにおいて、Flashコントローラ220がストレージコントローラ100に対して通知する統計情報としては、通常Block236と代替Block237の割り当て数、GCやWLを実行しているBlock232の数、有効Page残数や、データ消去回数などが考えられる。Flashコントローラ220は、ストレージコントローラ100からの要求に応じて、Flash Box210の各種統計情報を通知することができるものとする。
ストレージコントローラ100は、Flashコントローラ220から応答コマンド2000を受信する。
ストレージコントローラ100は、入れ替え対象となるセグメントを決定する。例えば、Flashコントローラ220から取得したFlash Box210のデータ消去回数と、統計情報管理テーブル1428のライトコマンド数14282の値とを比較し、データ消去回数が最も少ないFlash Box210にライトコマンド数が最も多いセグメントを配置するよう決定する。
ストレージコントローラ100は、ステップS405の結果にしたがって、セグメントを入れ替える。これにより、セグメントに対するアクセスが均一になり、Flash Box210間のI/O処理を平準化することができる。
Claims (12)
- それぞれがデータを格納する複数のブロックを複数のFlashメモリチップと、前記複数のFlashメモリチップに対するデータの書き込みおよび前記複数のFlashメモリチップからのデータの読み取りを制御するプロセッサと、前記複数のブロックのそれぞれについて内部制御が実行中か否かを管理するブロック管理情報を格納するメモリと、を有するFlashコントローラと、を備えるFlashボックスと、
前記Flashボックスの前記Flashコントローラに対してアクセス要求コマンドを送信するストレージコントローラと、
を備え、
前記ストレージコントローラは、
前記Flashコントローラに対して前記アクセス要求コマンドを送信する前に、前記Flashコントローラに対して問い合わせ要求コマンドを送信し、
前記Flashコントローラのプロセッサは、前記問い合わせ要求コマンドを受信すると、前記問い合わせ要求コマンドの対象となる対象ブロックを特定し、前記ブロック管理情報を参照して前記Flashボックス内部における前記複数のFlashメモリチップのうちの前記対象ブロックに対する内部制御を実行中か否かを判断し、前記内部制御を実行していない場合は前記ストレージコントローラに対してデータ転送許可応答を送信し、
前記ストレージコントローラは、前記データ転送許可応答を受信した後に、前記アクセス要求コマンドを前記Flashコントローラに対して送信する
ことを特徴とするストレージ装置。 - 前記ストレージコントローラは、
前記アクセス要求コマンドに対する応答として前記データ転送許可応答を前記Flashコントローラから受け取らなかった場合は他の処理を実行し、その後に、前記問い合わせ要求コマンドを前記Flashコントローラに対して改めて送信し、
前記Flashメモリチップに対して所定サイズ以上のデータを書き込む要求またはシーケンシャルライトを実行する要求を発行する前に、前記Flashメモリチップにデータを書き込むことができる容量を確保するためのガベージコレクションを実行するよう前記Flashコントローラに要求し、
前記Flashメモリチップ上の記憶領域に割り当てた論理ユニットを削除する際に、前記論理ユニットに対応する前記Flashメモリチップ上の記憶領域を解放するよう前記Flashコントローラに通知し、
前記Flashメモリチップ上の記憶領域に仮想的な記憶領域であるセグメントを割り当て、
前記セグメントを移動または削除する際に、前記セグメントが移動または削除された前記Flashメモリチップ上の記憶領域を解放するよう前記Flashコントローラに通知し、
前記Flashメモリチップに対する書込頻度を前記Flashボックス間で平準化し、
前記Flashメモリチップに対する書込頻度が前記Flashボックス間で平準化されるように前記セグメントを割り当て、
前記Flashコントローラは、
前記Flashメモリチップにデータを書き込むことができる容量を確保するためのガベージコレクションを実行し、
前記ガベージコレクションを実行している間に前記ストレージコントローラから前記問い合わせ要求コマンドを受信した場合は、前記ストレージコントローラに対して前記データ転送許可応答を送信せず、
前記ストレージコントローラより、前記ガベージコレクションを実行する要求を受け取ると、前記Flashメモリチップに対して前記ガベージコレクションを開始し、
前記Flashメモリチップに対して所定サイズ以上のデータを書き込む要求またはシーケンシャルライトを実行する要求を前記ストレージコントローラから受け取ると、前記所定サイズ以上のデータを前記Flashメモリチップに書き込む処理を開始する前に前記ガベージコレクションを開始し、
前記ストレージコントローラより、前記論理ユニットに対応する前記Flashメモリチップ上の記憶領域を解放すべき旨の通知を受け取ると、前記論理ユニットに対応する前記Flashメモリチップ上の記憶領域を解放し、
前記ストレージコントローラより、前記セグメントが移動または削除された後の前記Flashメモリチップ上の記憶領域を解放すべき旨の通知を受け取ると、前記セグメントが移動または削除された前記Flashメモリチップ上の記憶領域を解放し、
前記Flashメモリチップに対する書込頻度を前記ストレージコントローラに通知する
ことを特徴とする請求項1記載のストレージ装置。 - 前記ストレージコントローラは、
前記アクセス要求コマンドに対する応答として前記データ転送許可応答を前記Flashコントローラから受け取らなかった場合は他の処理を実行する
ことを特徴とする請求項1記載のストレージ装置。 - 前記ストレージコントローラは、
前記他の処理を実行した後、前記問い合わせ要求コマンドを前記Flashコントローラに対して改めて送信する
ことを特徴とする請求項3記載のストレージ装置。 - 前記Flashコントローラは、
前記Flashメモリチップにデータを書き込むことができる容量を確保するためのガベージコレクションを実行し、
前記ガベージコレクションを実行している間に前記ストレージコントローラから前記問い合わせ要求コマンドを受信した場合は、前記ストレージコントローラに対して前記データ転送許可応答を送信しない
ことを特徴とする請求項1記載のストレージ装置。 - 前記ストレージコントローラは、
前記Flashメモリチップに対して所定サイズ以上のデータを書き込む要求またはシーケンシャルライトを実行する要求を発行する前に、前記ガベージコレクションを実行するよう前記Flashコントローラに要求し、
前記Flashコントローラは、
前記ストレージコントローラよりその要求を受け取ると、前記Flashメモリチップに対して前記ガベージコレクションを開始する
ことを特徴とする請求項5記載のストレージ装置。 - 前記Flashコントローラは、
前記Flashメモリチップに対して所定サイズ以上のデータを書き込む要求またはシーケンシャルライトを実行する要求を前記ストレージコントローラから受け取ったとき、
前記所定サイズ以上のデータを前記Flashメモリチップに書き込む処理を開始する前に前記ガベージコレクションを開始する
ことを特徴とする請求項5記載のストレージ装置。 - 前記ストレージコントローラは、
前記Flashメモリチップ上の記憶領域に割り当てた論理ユニットを削除する際に、前記論理ユニットに対応する前記Flashメモリチップ上の記憶領域を解放するよう前記Flashコントローラに通知し、
前記Flashコントローラは、
前記ストレージコントローラより前記通知を受け取ると、前記論理ユニットに対応する前記Flashメモリチップ上の記憶領域を解放する
ことを特徴とする請求項1記載のストレージ装置。 - 前記ストレージコントローラは、
前記Flashメモリチップ上の記憶領域に仮想的な記憶領域であるセグメントを割り当て、
前記セグメントを移動または削除する際に、前記セグメントが移動または削除された前記Flashメモリチップ上の記憶領域を解放するよう前記Flashコントローラに通知し、
前記Flashコントローラは、
前記ストレージコントローラより前記通知を受け取ると、前記セグメントが移動または削除された前記Flashメモリチップ上の記憶領域を解放する
ことを特徴とする請求項1記載のストレージ装置。 - 前記Flashコントローラは、
前記Flashメモリチップに対する書込頻度を前記ストレージコントローラに通知し、
前記ストレージコントローラは、
前記Flashメモリチップに対する書込頻度を前記Flashボックス間で平準化する
ことを特徴とする請求項1記載のストレージ装置。 - 前記Flashコントローラは、
前記Flashメモリチップに対する書込頻度を前記ストレージコントローラに通知し、
前記ストレージコントローラは、
前記Flashメモリチップ上の記憶領域に仮想的な記憶領域であるセグメントを割り当て、
前記Flashメモリチップに対する書込頻度が前記Flashボックス間で平準化されるように前記セグメントを割り当てる
ことを特徴とする請求項1記載のストレージ装置。 - 前記Flashコントローラは、前記複数のFlashメモリチップが有する物理記憶領域に論理記憶領域を対応付けて前記ストレージコントローラに提供し、
前記ストレージコントローラは、前記Flashコントローラに対して、前記論理記憶領域におけるアドレスを指定して前記アクセス要求コマンドおよび前記問い合わせ要求コマンドを送信する
ことを特徴とする請求項1記載のストレージ装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2010/002639 WO2011128928A1 (en) | 2010-04-12 | 2010-04-12 | Storage device |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013515979A JP2013515979A (ja) | 2013-05-09 |
JP5646633B2 true JP5646633B2 (ja) | 2014-12-24 |
Family
ID=43431936
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012529828A Expired - Fee Related JP5646633B2 (ja) | 2010-04-12 | 2010-04-12 | ストレージ装置 |
Country Status (3)
Country | Link |
---|---|
US (2) | US8392670B2 (ja) |
JP (1) | JP5646633B2 (ja) |
WO (1) | WO2011128928A1 (ja) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8392670B2 (en) | 2010-04-12 | 2013-03-05 | Hitachi, Ltd. | Performance management of access to flash memory in a storage device |
JP2012033002A (ja) * | 2010-07-30 | 2012-02-16 | Toshiba Corp | メモリ管理装置およびメモリ管理方法 |
US9015426B2 (en) * | 2011-02-28 | 2015-04-21 | Kove Corporation | High performance data storage using observable client-side memory access |
JP5792313B2 (ja) * | 2011-06-07 | 2015-10-07 | 株式会社日立製作所 | ストレージシステム |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US10445229B1 (en) * | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
WO2014141411A1 (ja) | 2013-03-13 | 2014-09-18 | 株式会社日立製作所 | ストレージシステムおよびストレージシステム制御方法 |
WO2014184941A1 (ja) * | 2013-05-17 | 2014-11-20 | 株式会社日立製作所 | ストレージ装置 |
TWI582594B (zh) * | 2014-01-22 | 2017-05-11 | 群聯電子股份有限公司 | 資料保護方法、記憶體儲存裝置及記憶體控制電路單元 |
US9881680B2 (en) | 2014-06-03 | 2018-01-30 | Qualcomm Incorporated | Multi-host power controller (MHPC) of a flash-memory-based storage device |
US9690720B2 (en) | 2014-06-03 | 2017-06-27 | Qualcomm Incorporated | Providing command trapping using a request filter circuit in an input/output virtualization (IOV) host controller (HC) (IOV-HC) of a flash-memory-based storage device |
US9632953B2 (en) * | 2014-06-03 | 2017-04-25 | Qualcomm Incorporated | Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers |
US9947386B2 (en) * | 2014-09-21 | 2018-04-17 | Advanced Micro Devices, Inc. | Thermal aware data placement and compute dispatch in a memory system |
WO2016139787A1 (ja) * | 2015-03-04 | 2016-09-09 | 株式会社日立製作所 | ストレージシステム及びデータ書込み制御方法 |
US10678458B2 (en) * | 2018-02-09 | 2020-06-09 | Micron Technology, Inc. | Data storage device idle time processing |
US10489085B2 (en) | 2018-02-28 | 2019-11-26 | Micron Technology, Inc. | Latency-based scheduling of command processing in data storage devices |
JP2022120544A (ja) * | 2021-02-05 | 2022-08-18 | 東芝テック株式会社 | メモリ制御装置およびプログラム |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63147219A (ja) * | 1986-12-10 | 1988-06-20 | Fujitsu Ltd | 半導体デイスク装置 |
US8027194B2 (en) * | 1988-06-13 | 2011-09-27 | Samsung Electronics Co., Ltd. | Memory system and method of accessing a semiconductor memory device |
US5603001A (en) | 1994-05-09 | 1997-02-11 | Kabushiki Kaisha Toshiba | Semiconductor disk system having a plurality of flash memories |
JPH07302176A (ja) * | 1994-05-09 | 1995-11-14 | Toshiba Corp | 半導体ディスク装置 |
JP2000105734A (ja) * | 1998-07-29 | 2000-04-11 | Fujitsu Ltd | メモリ制御方法、メモリ装置及びコントローラ |
US6449625B1 (en) * | 1999-04-20 | 2002-09-10 | Lucent Technologies Inc. | Use of a two-way stack approach to optimize flash memory management for embedded database systems |
JP2002366380A (ja) * | 2001-06-13 | 2002-12-20 | Canon Inc | 電子機器および電子機器の制御方法 |
GB0123416D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Non-volatile memory control |
JP4280055B2 (ja) * | 2001-11-28 | 2009-06-17 | 株式会社Access | メモリ制御方法および装置 |
US6721820B2 (en) * | 2002-05-15 | 2004-04-13 | M-Systems Flash Disk Pioneers Ltd. | Method for improving performance of a flash-based storage system using specialized flash controllers |
JP4317436B2 (ja) | 2003-12-16 | 2009-08-19 | 株式会社日立製作所 | ディスクアレイシステム及びインターフェイス変換装置 |
US7315917B2 (en) * | 2005-01-20 | 2008-01-01 | Sandisk Corporation | Scheduling of housekeeping operations in flash memory systems |
JP2008529825A (ja) | 2005-01-20 | 2008-08-07 | スリーエム イノベイティブ プロパティズ カンパニー | 構造化ポリマーフィルムおよびその製造方法 |
JP2007066259A (ja) * | 2005-09-02 | 2007-03-15 | Hitachi Ltd | 計算機システムとストレージシステム並びにボリューム容量拡張方法 |
WO2007081638A2 (en) | 2005-12-21 | 2007-07-19 | Sandisk Corporation | Non-volatile memories and methods with adaptive file handling in a directly mapped file storage system |
JP4863749B2 (ja) * | 2006-03-29 | 2012-01-25 | 株式会社日立製作所 | フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム |
TW200743113A (en) | 2006-05-08 | 2007-11-16 | Apacer Technology Inc | Dynamic management method of portable data storage device |
JP4897524B2 (ja) * | 2007-03-15 | 2012-03-14 | 株式会社日立製作所 | ストレージシステム及びストレージシステムのライト性能低下防止方法 |
JP5238235B2 (ja) * | 2007-12-07 | 2013-07-17 | 株式会社日立製作所 | 管理装置及び管理方法 |
US8533384B2 (en) * | 2007-12-27 | 2013-09-10 | Sandisk Enterprise Ip Llc | Flash memory controller garbage collection operations performed independently in multiple flash memory groups |
US7873619B1 (en) * | 2008-03-31 | 2011-01-18 | Emc Corporation | Managing metadata |
JP5489434B2 (ja) | 2008-08-25 | 2014-05-14 | 株式会社日立製作所 | フラッシュメモリ搭載ストレージ装置 |
US8392670B2 (en) | 2010-04-12 | 2013-03-05 | Hitachi, Ltd. | Performance management of access to flash memory in a storage device |
US8335766B2 (en) * | 2010-12-14 | 2012-12-18 | International Business Machines Corporation | Flash-copying within asynchronous mirroring environment |
-
2010
- 2010-04-12 US US12/742,783 patent/US8392670B2/en active Active
- 2010-04-12 JP JP2012529828A patent/JP5646633B2/ja not_active Expired - Fee Related
- 2010-04-12 WO PCT/JP2010/002639 patent/WO2011128928A1/en active Application Filing
-
2013
- 2013-02-06 US US13/760,144 patent/US8924659B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20130151762A1 (en) | 2013-06-13 |
US8924659B2 (en) | 2014-12-30 |
US20110283046A1 (en) | 2011-11-17 |
JP2013515979A (ja) | 2013-05-09 |
US8392670B2 (en) | 2013-03-05 |
WO2011128928A1 (en) | 2011-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5646633B2 (ja) | ストレージ装置 | |
US8447918B2 (en) | Garbage collection for failure prediction and repartitioning | |
JP5489434B2 (ja) | フラッシュメモリ搭載ストレージ装置 | |
JP5075761B2 (ja) | フラッシュメモリを用いたストレージ装置 | |
US20150254186A1 (en) | Information processing device having a plurality of types of memory caches with different characteristics | |
JP5028381B2 (ja) | ストレージ装置およびキャッシュ制御方法 | |
JP6459644B2 (ja) | ストレージ制御装置、制御システム及び制御プログラム | |
CN107908571B (zh) | 一种数据写入方法、闪存装置及存储设备 | |
KR20150105323A (ko) | 데이터 스토리지 방법 및 시스템 | |
US10649891B2 (en) | Storage device that maintains mapping data therein | |
JP2015501960A (ja) | 不揮発半導体メモリを含んだ不揮発半導体記憶デバイスを有するストレージシステム | |
WO2017148242A1 (zh) | 一种访问叠瓦式磁记录smr硬盘的方法及服务器 | |
US11543989B2 (en) | Storage system and control method thereof | |
JP2011070365A (ja) | メモリシステム | |
US8799573B2 (en) | Storage system and its logical unit management method | |
JP5942037B2 (ja) | データ管理メカニズムを備えたストレージシステムおよびその動作方法 | |
JP5910596B2 (ja) | ストレージ管理システム、ストレージ管理方法、プログラム、および、情報処理システム | |
JP5597266B2 (ja) | ストレージシステム | |
US11474750B2 (en) | Storage control apparatus and storage medium | |
WO2018142622A1 (ja) | 計算機 | |
US8850087B2 (en) | Storage device and method for controlling the same | |
JP6895551B2 (ja) | 情報処理システム | |
EP4033346B1 (en) | Affinity-based cache operation for a persistent storage device | |
US20140019678A1 (en) | Disk subsystem and method for controlling memory access |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130827 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130828 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131025 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140325 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140516 |
|
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: 20141007 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20141105 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 5646633 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
LAPS | Cancellation because of no payment of annual fees |