JP2018041154A - ストレージシステムおよび処理方法 - Google Patents
ストレージシステムおよび処理方法 Download PDFInfo
- Publication number
- JP2018041154A JP2018041154A JP2016172869A JP2016172869A JP2018041154A JP 2018041154 A JP2018041154 A JP 2018041154A JP 2016172869 A JP2016172869 A JP 2016172869A JP 2016172869 A JP2016172869 A JP 2016172869A JP 2018041154 A JP2018041154 A JP 2018041154A
- Authority
- JP
- Japan
- Prior art keywords
- processors
- input
- command
- storage system
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- 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/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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
【課題】性能の低下を解消することができるストレージシステムを提供することである。
【解決手段】実施形態によれば、ストレージシステムは、1以上の第1プロセッサと、1以上の第2プロセッサとを具備する。前記1以上の第2プロセッサは、各々が1以上の不揮発性メモリ装置を有し、前記1以上の第1プロセッサから発行されるデータの入出力命令を処理する。前記1以上の第2プロセッサは、前記1以上の不揮発性メモリ装置へ発行した前記入出力命令に対する応答が、前記1以上の不揮発性メモリ装置が所定の状態にあることを検知するために設定される制限時間を超えて前記1以上の不揮発性メモリ装置から得られない場合、前記1以上の不揮発性メモリ装置が所定の状態にあるために前記1以上の第2プロセッサが前記入出力命令を処理不能な状態であることを、少なくとも前記入出力命令の発行元である第1プロセッサを含む前記1以上の第1プロセッサへ通知する。
【選択図】図16
【解決手段】実施形態によれば、ストレージシステムは、1以上の第1プロセッサと、1以上の第2プロセッサとを具備する。前記1以上の第2プロセッサは、各々が1以上の不揮発性メモリ装置を有し、前記1以上の第1プロセッサから発行されるデータの入出力命令を処理する。前記1以上の第2プロセッサは、前記1以上の不揮発性メモリ装置へ発行した前記入出力命令に対する応答が、前記1以上の不揮発性メモリ装置が所定の状態にあることを検知するために設定される制限時間を超えて前記1以上の不揮発性メモリ装置から得られない場合、前記1以上の不揮発性メモリ装置が所定の状態にあるために前記1以上の第2プロセッサが前記入出力命令を処理不能な状態であることを、少なくとも前記入出力命令の発行元である第1プロセッサを含む前記1以上の第1プロセッサへ通知する。
【選択図】図16
Description
本発明の実施形態は、ストレージシステムおよび処理方法に関する。
クラウドコンピューティングの普及に伴い、大量のデータを格納でき、かつ、データの入出力を高速に処理できるストレージシステムの需要が高まっている。ビッグデータへの関心が高まるにつれて、この傾向は益々強まってきている。このような要求に応え得るストレージシステムの1つとして、複数のメモリノードを相互に接続したストレージシステムが提案されている。
複数のメモリノードを相互に接続したストレージシステムにおいては、複数のメモリノードの中の1つのメモリノードによる処理の遅延が、ストレージシステム全体の性能低下を招いてしまう。
本発明が解決しようとする課題は、性能の低下を解消することができるストレージシステムおよび処理方法を提供することである。
実施形態によれば、ストレージシステムは、1以上の第1プロセッサと、1以上の第2プロセッサとを具備する。前記1以上の第2プロセッサは、各々が1以上の不揮発性メモリ装置を有し、前記1以上の第1プロセッサから発行されるデータの入出力命令を処理する。前記1以上の第2プロセッサは、前記1以上の不揮発性メモリ装置へ発行した前記入出力命令に対する応答が、前記1以上の不揮発性メモリ装置が所定の状態にあることを検知するために設定される制限時間を超えて前記1以上の不揮発性メモリ装置から得られない場合、前記1以上の不揮発性メモリ装置が所定の状態にあるために前記1以上の第2プロセッサが前記入出力命令を処理不能な状態であることを、少なくとも前記入出力命令の発行元である第1プロセッサを含む前記1以上の第1プロセッサへ通知する。
以下、実施の形態について図面を参照して説明する。
(第1実施形態)
まず、第1実施形態について説明する。
まず、第1実施形態について説明する。
図1は、本実施形態のストレージシステム1の構成の一例を示す図である。
このストレージシステム1は、たとえば、ネットワーク経由で接続されるクライアント装置2からの要求に応じて、データの書き込み、データの読み出し、データの更新、データの削除などを実行するファイルサーバとして機能する。図1に示されるように、ストレージシステム1は、ネットワークスイッチ10、複数のCU(Connection Unit)20および複数のNM(Node Module)30を有している。
NM30は、NC(Node Controller)31と、1以上のNAND型フラッシュメモリ32とを有している。NAND型フラッシュメモリ32は、たとえばエンベデッドマルチメディアカード(e・MMC(登録商標))である。NC31は、NAND型フラッシュメモリ32に対するアクセス制御と、データの転送制御とを実行する。NC31は、たとえば4系統の入出力ポートを有しており、NC31同士を接続することにより、複数のNM30を、例えばマトリックス状に相互に接続することができる。複数のNM30を相互に接続することにより、ストレージシステム1は、大容量のデータ記憶領域40を論理的に構築する。
CU20は、クライアント装置2からの要求に応じて、前述のように構築されたデータ記憶領域40に対するデータの入出力処理(データの更新、データの削除を含む)を実行する。より詳細には、クライアント装置2からの要求に対応する、複数のNM30の中の目的のNM30に対してデータの入出力命令を発行する。以下、CU20からNM30へ発行されるデータの入出力命令を、コマンドと称することがある。
CU20は、CPU21、RAM22およびNMインタフェース23を有している。CU20の各機能は、RAM22に格納され、CPU21によって実行されるプログラムにより実現される。NMインタフェース23は、NM30、より詳細には、NC31との間の通信を実行する。NMインタフェース23は、複数のNM30の中のいずれか1つのNM30のNC31と接続されている。つまり、CU20は、NMインタフェース23を介して、複数のNM30の中のいずれか1つのNM30と直接的に接続され、NM30のNC31を介して、その他のNM30と間接的に接続される。CU20と直接的に接続されるNM30は、CU20ごとに異なっている。
前述したように、CU20は、複数のNM30の中のいずれか1つのNM30と直接的に接続される。したがって、CU20が、直接的に接続されるNM30以外のNM30に対してデータの入出力命令を発行する場合においても、その入出力命令は、まず、直接的に接続されるNM30へ転送される。その後、その入出力命令は、各NM30のNC31を介して目的のNM30まで転送される。たとえば、NM30がマトリックス状に相互に接続される場合、行番号と列番号との組合せで各NM30に識別子(M,N)が付されるものと想定すると、NC31は、自NM30の識別子と、入出力命令の送り先として指定される識別子とを比較することにより、第1に、その入出力命令が自NM30宛てか否かを判断できる。自NM30宛てでない場合、NC31は、自NM30の識別子と、入出力命令の送り先として指定される識別子との関係、より詳細には、行番号、列番号それぞれの大小関係から、第2に、隣接するNM30の中のいずれのNM30へ転送すべきかを判断できる。入出力命令を目的のNM30まで転送する手法については、所定の手法に限定されるものではなく、既知のいずれの手法も採用し得る。本来であれば転送先として選ばれることがないNM30への経路も、予備経路として使用され得る。
また、NM30による、入出力命令に応じた入出力処理の結果、すなわち、NAND型フラッシュメモリ32に対するアクセスの結果も、前述した入出力命令の転送と同様、NC31の働きにより、他のNM30をいくつか経由して入出力命令の発行元であるCU20まで転送される。たとえば、入出力命令の発行元の情報として、CU20が直接的に接続されるNM30の識別子を含ませることで、この識別子を処理結果の転送先として指定することができる。
さらに、NC31は、割り込み要求信号を転送するための入出力ポートを別途たとえば4系統有しており、前述した入出力命令および処理結果と同様、NM30からCU20までの割り込み要求信号の転送経路が動的に決定される。
ネットワークスイッチ10は、クライアント装置2からの要求を受け付け、その要求を複数のCU20のいずれかに転送する。典型的には、ネットワークスイッチ10は、複数のCU20の負荷が均等となるように、クライアント装置2からの要求を複数のCU20へ振り分ける。なお、ここでは、ネットワークスイッチ10を設ける例を示しているが、複数のCU20の中の1つのCU20がマスタとして動作して、ネットワークスイッチ10の役割を担ってもよい。ネットワークスイッチ10は、CU20から受領した処理結果をクライアント装置2へ返送する。
図2は、NM30の構成(NC31の詳細な構成)の一例を示す図である。
前述したように、NM30は、NC31と、1以上のNAND型フラッシュメモリ32とを有している。NC31は、図2に示されるように、CPU311、RAM312、I/Oコントローラ313およびNANDインタフェース314を有している。NC31の各機能は、RAM312に格納され、CPU311によって実行されるプログラムにより実現される。I/Oコントローラ313は、CU20(より詳細には、NMインタフェース23)または他のNM30(より詳細には、NC31)との間の通信を実行する。NANDインタフェース314は、NAND型フラッシュメモリ32に対するアクセスを実行する。
図3は、CU20およびNM30の機能ブロックの一例を示す図である。
CU20において、RAM22に格納されたプログラムがCPU21によって実行されることにより、図3に示されるように、アプリケーション部101とストレージ管理部102とがユーザ空間に構成され、CU−FW(Firmware)ドライバ103がカーネル空間に構築される。一方、NM30において、RAM312に格納されたプログラムがCPU311によって実行されることにより、図3に示されるように、NM−FWドライバ103が構築される。ここでは、NM−FWドライバ103以外の構築物の図示を省略する。
アプリケーション部101は、クライアント装置2からデータの入出力要求を受信し、この入出力要求をストレージ管理部102に出力する。
ストレージ管理部102は、この入出力要求に応じて、NM30内のNAND型フラッシュメモリ32にアクセスするためのアクセス機能を有する。ストレージ管理部102は、入出力要求に対応するコマンド(命令)を、CU−FWドライバ103を介して発行する。入出力要求がたとえばデータのリード要求である場合、ストレージ管理部102は、NM−FWドライバ201に対して、NAND型フラッシュメモリ32からデータを読み出すためのリードコマンドを発行する。また、入出力要求がたとえばデータのライト要求である場合、ストレージ管理部102は、NM−FWドライバ201に対して、NAND型フラッシュメモリ32にデータを書き込むためのライトコマンドを発行する。
NM−FWドライバ201は、発行されたコマンドに応じて、NAND型フラッシュメモリ32に対する入出力処理を実行する。
また、ストレージ管理部102は、CU−FWドライバ103を介して、NM−FWドライバ201による入出力処理の実行結果を取得する。ストレージ管理部102は、たとえばリードコマンドに応じてNAND型フラッシュメモリ32から読み出されたデータを受け取る。また、ストレージ管理部102は、たとえばライトコマンドに応じたNAND型フラッシュメモリ32へのデータの書き込みが完了したことを示す通知を受け取る。
ストレージ管理部102は、さらに、CU20によってアクセス可能な複数のNM30の内の1つのNM30による処理が遅れている場合に、この1つのNM30に書き込まれるべきデータ(ライトデータ)を別のNM30に一時的に退避するための退避機能も有する。これは、ストレージシステム1において、1つのNM30による処理の遅れがシステム全体の性能低下を招いてしまうためである。
図4は、ストレージシステム1内のNM(0,0)、NM(0,1)、NM(1,0)、NM(1,1)に、処理の遅いNM(1,1)が含まれることによって、ストレージシステム1全体の処理が遅くなる例を示す。ここでは、CU20がNM(0,0)、NM(0,1)、NM(1,0)、NM(1,1)に対して、それぞれ4つのコマンドを発行する場合を想定する。
図4に示す例では、NM(0,0)、NM(0,1)、NM(1,0)の各々が1つのコマンドを1.5ミリ秒(ms)で処理しているのに対して、NM(1,1)は1つのコマンドを3.0ミリ秒で処理している。NM(1,1)は、たとえばガベージコレクション(GC)を実行中であることによって、コマンドの処理が遅くなっているNMである。
NM(0,0)、NM(0,1)、NM(1,0)がそれぞれ4つのコマンドを処理する期間内に、NM(1,1)は2つのコマンドしか処理できていない。そして、NM(1,1)がさらに2つのコマンド41,42を処理している間の待ち時間の分だけ、他のNM(0,0)、NM(0,1)、NM(1,0)ではアイドル時間が発生している。したがって、処理が遅い1つのNM(1,1)によってストレージシステム1全体の性能が大幅に低下することになる。
より具体的には、NM(0,0)、NM(0,1)、NM(1,0)が4つのコマンドを処理する6ミリ秒間に、NM(1,1)は2つのコマンドしか処理できていないので、NM(1,1)へのコマンドが2つ、CU−FWドライバ103のIOキューに残ることになる。つまり、遅いNM(1,1)へのコマンドが、6ミリ秒毎に2つずつIOキューに積まれることになる。そのため、たとえば、このIOキューに格納できるコマンド数が128個であるとすれば、64(=128/2)回の6ミリ秒である、おおよそ400ミリ秒で、IOキューに遅いNM(1,1)へのコマンドのみが格納されることになる。
IOキューが遅いNM(1,1)へのコマンドのみに専有された場合、それ以降に発行されるコマンドは、IOキューに空き領域ができるまで受け付けられない。つまり、ストレージシステム1では、すべてのNM(0,0)、NM(0,1)、NM(1,0)、NM(1,1)に対する新たな入出力の受け付けが不可能になる。したがって、処理が遅い1つのNM(1,1)によってストレージシステム1全体の性能が大幅に低下することになる。
このような性能の低下を軽減するために、本実施形態では、処理が遅いNMに対するデータの書き込みが要求される場合に、そのデータを別のNMに退避する。図5に示すように、GCを実行中である処理が遅いNM(1,1)に対するライトコマンド41,42が発行される代わりに、たとえば、書き込みが要求されたデータを、このNM(1,1)とは別のNM(0,0)に書き込むためのライトコマンド43,44が発行される。
上述したアクセス機能および退避機能を有するストレージ管理部102は、たとえばIO分割部1021、IO実行部1022、GC検知部1023、及び退避実行部1024を備える。以下では、ストレージ管理部102が、アプリケーション部101からデータの書き込み要求を受け取った場合を例示する。なお、説明を分かりやすくするために、ストレージシステム1内の複数のNM30で同時に処理の遅れが発生すること(たとえば、複数のNM30がガベージコレクションを同時に実行すること)がない場合を想定する。
IO分割部1021は、アプリケーション部101から受け取ったライトデータを、NM30への最大書き込み単位に分割し、分割されたデータのそれぞれが書き込まれるべきNM30を決定する。
図6は、書き込みが要求されたライトデータ50が、NM30への最大書き込み単位に分割され、各分割データ51〜58に書き込み先のNM30が割り当てられる例を示す。NM30への最大書き込み単位は、たとえば4KBである。
図6に示す例では、32KBのライトデータ50が、4KB単位の分割データ51〜58に分割されている。これら分割データ51〜58は、NM(0,0)、NM(0,1)、NM(1,0)、およびNM(1,1)のいずれかに書き込まれる。分割データ51〜58の書き込み先には、たとえば分割データ51〜58の先頭から、NM(0,0)、NM(0,1)、NM(1,0)、およびNM(1,1)が順に割り当てられている。
IO実行部1022は、割り当てられたNM30に対して、IO分割部1021によって分割されたデータを書き込むための命令(ライトコマンド)を発行するときに、GC検知部1023によってこのNM30による処理の遅れが検知されていないかどうかを判定する。NM30による処理の遅れは、NM30内のCPU311によるコマンド処理の遅れを示す。NM30では、たとえばGCが実行されることによって、コマンド処理が遅延する。IO実行部1022は、GC検知部1023によってこのNM30による処理の遅れが検知されていない場合には、NM30に対して当該データを書き込むための命令を発行する。
一方、IO実行部1022および退避実行部1024は、割り当てられたNM30に対して、IO分割部1021によって分割されたデータを書き込むための命令を発行するときに、GC検知部1023によってこのNM30による処理の遅れが検知されている場合には、このNM30とは別のNM30に対して、当該データを書き込むための命令を発行する。そして、IO実行部1022および退避実行部1024は、この遅れが検知されてから第1閾値時間が経過した場合、これら2つのNM30に対して、データを、その別のNM30内のNAND型フラッシュメモリ32から、当該データが本来書き込まれるべきNM30内のNAND型フラッシュメモリ32に書き戻すための命令を発行する。この第1閾値時間は、たとえばシステム管理者が事前に設定することができる。
また、GC検知部1023は、あるNM30に対してデータを書き込むための命令が発行された後、NM30がそのデータをNAND型フラッシュメモリ32に書き込むために要した書き込み時間を取得する。GC検知部1023は、たとえば、命令を発行してから、CU−FWドライバ103を介してNM30から書き込み完了の通知を受け取るまでの時間を、書き込み時間として取得する。GC検知部1023は、NM30毎の書き込み時間の平均値をNM応答履歴102Aとして保存する。
図7は、NM応答履歴102Aの一構成例を示す。NM応答履歴102Aは、複数のNM30に対応する複数のエントリを含む。各エントリは、たとえば、「NMID」フィールド、「平均書き込み時間」フィールド等を含む。
あるNM30に対応するエントリにおいて、「NMID」フィールドは、そのNM30に付与された識別子を示す。「平均書き込み時間」フィールドは、そのNM30がデータ書き込みに要した時間の平均値を示す。「平均書き込み時間」フィールドには、たとえば、IO実行部1022がそのNM30にライトコマンドを発行してから、当該NM30からの書き込み完了の通知を受け取るまでの時間の平均値を示す。
GC検知部1023は、NM応答履歴102Aに含まれる各エントリを、たとえば、対応するNM30に書き込みのための命令を初めて発行したときに作成してもよい。そして、GC検知部1023は、NM30に書き込みのための命令を発行する毎に、新たに得られた書き込み時間を用いて、対応するエントリの「平均書き込み時間」フィールドの値を更新するようにしてもよい。
GC検知部1023は、このようなNM応答履歴102Aを用いて、あるNM30による処理の遅れを検知する。GC検知部1023は、たとえば、あるNM30の書き込み時間を取得したときに、取得された書き込み時間が、NM応答履歴102Aに示されるそのNM30の平均書き込み時間(すなわち、過去にそのNM30によってデータが書き込まれた際の平均書き込み時間)に、第2閾値時間を加えた値よりも大きい場合、当該NM30による処理の遅れを検知する。
そして、GC検知部1023は、処理の遅れが検知されたNM30を示す情報をIO実行部1022および退避実行部1024に通知する。
IO実行部1022および退避実行部1024は、たとえばこの通知を受け取ってから第1閾値時間の間、処理の遅れが検知されたNM30内の第1NAND型フラッシュメモリ32に書き込まれるべきデータを、別のNM30内の第2NAND型フラッシュメモリ32に退避するための処理を実行する。この第2NAND型フラッシュメモリ32は、当該第2NAND型フラッシュメモリに書き込まれるべきデータのための第1領域と、第1NAND型フラッシュメモリ32に書き込まれるべきデータを一時的に退避するための第2領域とを含む。退避実行部1024は、この第1閾値時間の間、データが書き込まれるべき第1NAND型フラッシュメモリ32上の第1アドレスと、第2NAND型フラッシュメモリ32内の第2領域の大きさとを用いて、一時的な退避のためにデータが書き込まれるべき第2NAND型フラッシュメモリ32上の第2アドレスを決定する。IO実行部1022は、その別のNM30に対して、決定された第2アドレスにデータを書き込むための命令を発行する。また、退避実行部1024は、データが本来書き込まれるべきNM30内の第1NAND型フラッシュメモリ32上の第1アドレスと、このデータが退避された、別のNM30内の第2NAND型フラッシュメモリ32上の第2アドレスとを示す情報を退避情報102Bとして保存する。
図8を参照して、書き込みが要求されたライトデータ65が、本来の書き込み先のNM30とは別のNM30に退避される例を示す。このライトデータ65は、たとえば、NM30への最大書き込み単位(たとえば、4KB)に分割された分割データである。ここでは、ストレージシステム1に、CU20と、NAND型フラッシュメモリ32と当該NAND型フラッシュメモリ32に対するデータの入出力処理を実行するCPU311とをそれぞれ備えるNM(0,0)、NM(0,1)およびNM(1,1)とが設けられている場合を例示する。
NM(0,0)内のNAND型フラッシュメモリ32−1には、通常の記憶領域611と一時退避のための記憶領域612とが設けられている。NM(0,1)内のNAND型フラッシュメモリ32−2には、通常の記憶領域621と一時退避のための記憶領域622とが設けられている。また、NM(1,1)内のNAND型フラッシュメモリ32−3には、通常の記憶領域631と一時退避のための記憶領域632とが設けられている。
NM(0,1)上の一時退避のための記憶領域622は、本来、NM(0,0)上の通常の記憶領域611に書き込むべきデータを一時的に退避するための領域である。また、NM(0,0)上の一時退避のための記憶領域612は、本来、NM(1,1)上の通常の記憶領域631に書き込むべきデータを一時的に退避するための領域である。
データの記憶場所を示すアドレスのフォーマットは、NMのIDと当該NMによって管理されるNAND型フラッシュメモリ上の位置を特定するためのアドレスとを含む。たとえば、アドレス“0x010001”は、上位の二桁“01”でNMのID(0,1)を示し、下位の4桁“0001”でそのNMのNAND型フラッシュメモリ上の位置を特定するためのアドレスを示している。図8に示す例では、NM(0,0)上の通常の記憶領域611のアドレスNMANM00の範囲は“0x000000”から“0x009FFFF”であり、また一時退避のための記憶領域612のアドレスTMP_NMANM11の範囲は“0x00A000”から“0x00AFFF”である。NM(0,1)上の通常の記憶領域621のアドレスNMANM01の範囲は“0x010000”から“0x019FFFF”であり、また一時退避のための記憶領域622のアドレスTMP_NMANM00の範囲は“0x01A000”から“0x01AFFF”である。NM(1,1)上の通常の記憶領域631のアドレスNMANM11の範囲は“0x110000”から“0x119FFFF”であり、また一時退避のための記憶領域632のアドレスTMP_NMANM10の範囲は“0x11A000”から“0x11AFFF”である。
図8に示す例では、ライトデータ65をNM(0,0)上の通常の記憶領域611に書き込むためのライトコマンドが発行されようとする場合に、NM(0,0)がGC実行中であるか否かが判定される。そして、NM(0,0)がGC実行中であると判定された場合、ライトデータ65は、別のNM(ここでは、後続するIDを有するNM(0,1))上の一時退避のための記憶領域622に、一時的に書き込まれる。
同様にして、ライトデータをNM(1,1)上の通常の記憶領域631に書き込むためのライトコマンドが発行されようとする場合には、NM(1,1)がGC実行中であるか否かが判定される。そして、NM(1,1)がGC実行中であると判定された場合、ライトデータは、別のNM(ここでは、NM(0,0))上の一時退避のための記憶領域612に、一時的に書き込まれる。NM(NM1,1)は、最後のNMIDを有するNMであるので、退避先のNMとして、たとえば先頭のIDを有するNM(0,0)が選択されている。
書き込みが要求されたライトデータ65が、本来の書き込み先のNM(0,0)とは別のNM(0,1)に退避される場合、本来の書き込み先を示すアドレスNMANM00と、退避先の記憶領域222の大きさMAX_TMP_NMA_NUM(すなわち、最大書き込み単位のデータを書き込み可能な領域数)とを用いて、退避先のアドレスTMP_NMANM00が算出される。以下では、上述したアドレスのフォーマットの内、NM内の位置を特定するための下位の4桁の値を算出する方法を示す。
退避先のアドレスTMP_NMANM00は、たとえば、本来の書き込み先のアドレスNMANM00を、一時退避のための記憶領域の大きさMAX_TMP_NMA_NUMで割った場合の剰余R(=NMANM00 % MAX_TMP_NMA_NUM)を用いて算出される。たとえば、一時退避のための記憶領域内のR番目の領域のアドレスが、退避先のアドレスTMP_NMANM00として算出される。なお、算出された退避先のアドレスにデータが既に書き込まれている場合には、後続するアドレスを順に検索することによって見つかった空き領域にデータが書き込まれるようにしてもよい。
より具体的に、各NMに、たとえば、最大書き込み単位のデータ100個分の記憶領域が含まれ、先頭の90個が通常の記憶領域に設定され、それに後続する10個が一時退避のための記憶領域に設定される場合を例示する。100個の記憶領域のアドレスは、先頭から順に“0x0000”から“0x0063”(10進数で、99)である。したがって、通常の記憶領域のアドレスの範囲は“0x0000”から“0x0059”であり、一時退避のための記憶領域のアドレスの範囲は“0x005A”から“0x0063”である。
このような場合に、あるNMの通常の記憶領域内のアドレス“0x003C”に書き込まれようとしていたデータは、“0x003C”(10進数で、60)を10で割った場合の剰余が0であるので、別のNMの一時退避のための記憶領域における0番目の領域のアドレス“0x005A”に書き込まれることになる。同様に、あるNMの通常の記憶領域内のアドレス“0x003D”に書き込まれようとしていたデータは、“0x003D”(10進数で、61)を10で割った場合の剰余が1であるので、別のNMの一時退避のための記憶領域における1番目の領域のアドレス“0x005B”に書き込まれることになる。
なお、上述した例では、データが退避されるNMとして、データが本来書き込まれるべきNM30のNMIDに後続するNMIDを有するNMが選択されている(但し、最後のNMIDを有するNMでは、先頭のNMIDを有するNMが選択されている)。しかし、データが退避されるNMの選択方法はこの例に限られない。
退避実行部1024は、NM応答履歴102Aの「平均書き込み時間」フィールドの値に基づいてNMを順位付けし、平均書き込み時間が最も短い別のNMを、データが退避されるNMとして選択してもよい。たとえばNM(0,0)に対してライトデータ65を書き込むための命令を発行するときに、NM(0,0)による処理の遅れが検知されている場合について説明する。退避実行部1024は、過去にNM(1,1)によってデータが書き込まれた際の平均書き込み時間が、過去にNM(0,1)によってデータが書き込まれた際の平均書き込み時間よりも短いならば、NM(1,1)をデータの退避先として選択する。IO実行部1022は、ライトデータ65を、NM(1,1)内のNAND型フラッシュメモリ32−3に一時的に退避するために、NM(1,1)に対してライトデータ65を書き込むための命令を発行する。そして、IO実行部1022は、NM(0,0)による処理の遅れが検知されてから第1閾値時間が経過した場合、NM(0,0)とNM(1,1)とに対して、ライトデータ65を、NM(1,1)内のNAND型フラッシュメモリ32−3から、NM(0,0)内のNAND型フラッシュメモリ32−1に書き戻すための命令を発行する。以上により、処理がより速いNMにデータを退避することができる。
また、図9は、退避実行部1024によって保存される退避情報102Bの一構成例を示す。退避情報102Bは、退避された1つ以上のデータに対応する1つ以上のエントリを含む。各エントリは、たとえば、「エントリID」フィールド、「元アドレス」フィールド、「退避先アドレス」フィールド、および「書き戻し済みフラグ」フィールドを含む。
退避されたあるデータに対応するエントリにおいて、「エントリID」フィールドは、そのエントリに付与された識別情報を示す。「エントリID」フィールドには、たとえば、データの退避処理が実行される毎に、連番で割り振られた識別情報が設定される。「元アドレス」フィールドは、対応するデータが本来書き込まれるべきNMのアドレスを示す。つまり、「元アドレス」フィールドは、退避されたデータが書き込まれようとしていた元のNMのアドレスを示す。「退避先アドレス」フィールドは、対応するデータが退避されているNMのアドレスを示す。「元アドレス」フィールドおよび「退避先アドレス」フィールドに示されるアドレスは、上述したように、NMのIDと、当該NMによって管理されるNAND型フラッシュメモリ32上の位置を特定するためのアドレスとを含む。
「書き戻し済みフラグ」フィールドは、対応するデータが、本来書き込まれるべきNMに書き戻されたか否かを表すフラグを示す。「書き戻し済みフラグ」フィールドには、たとえば、対応するデータがまだ書き戻されていないことを示す“False”と、対応するデータが既に書き戻されたことを示す“True”のいずれかが設定される。
退避実行部1024は、このような退避情報102Bを用いて、あるNM30による処理の遅れが検知されてから第1閾値時間が経過した場合、データを、退避されたNM30から、当該データが本来書き込まれるべきであったNM30に書き戻すことを、IO実行部1022に要求する。IO実行部1022は、この要求に応じて、データを、退避されたNM30内の第2NAND型フラッシュメモリ32から、当該データが本来書き込まれるべきであったNM30内の第1NAND型フラッシュメモリ32に書き戻すための命令を発行する。
より具体的には、退避実行部1024は、たとえば、あるNM30による処理の遅れが検知されてから第1閾値時間が経過した場合、退避情報102Bから、「元アドレス」フィールドで示されるNMIDが当該NM30に対応し、且つ「書き戻し済みフラグ」の値が“False”であるエントリを抽出する。そして、退避実行部1024は、抽出された各エントリの「退避先アドレス」フィールドで示されるNM30上のアドレスからデータを読み出し、読み出されたデータを、「元アドレス」フィールドで示される別のNM30上のアドレスに書き込むことを、IO実行部1022に要求する。
IO実行部1022は、この要求に応じて、「退避先アドレス」フィールドで示されるNMIDで特定されるNM30に対して、その「退避先アドレス」フィールドで示されるアドレスのデータを読み出すための命令(リードコマンド)を発行する。そして、IO実行部1022は、「元アドレス」フィールドで示されるNMIDで特定される別のNM30に対して、読み出されたデータを、その「元アドレス」フィールドで示されるアドレスに書き込むための命令(ライトコマンド)を発行する。
図10に示すように、NM(0,1)上の一時退避のための記憶領域622に書き込まれていたライトデータ65は、たとえばNM(0,0)上でのGCの実行が終了した後(すなわち、第1閾値時間が経過した後)、本来、書き込まれるべきであったNM(0,0)上の通常の記憶領域611に書き戻されている。
このような動作に応じて、データが、退避先のNM30から、本来書き込まれるべきNM30に書き戻されたならば、退避実行部1024は、退避情報102Bの対応するエントリの「書き戻し済みフラグ」フィールドの値を“True”に変更するようにしてもよい。
以上の構成により、あるNM30による処理の遅れが検知された場合に、そのNM30に書き込まれようとしていたデータが別のNM30に退避され、また処理の遅れが解消された後に、そのデータが元のNM30に書き戻されるので、1つのNM30の処理の遅れによるストレージシステム1全体の性能の大幅な低下を軽減することができる。
次いで、図11のフローチャートを参照して、CU20のCPU21によって実行される書き込み処理の手順の一例を説明する。
まず、CPU21は、データの書き込み要求があるか否かを判定する(ステップC1)。この書き込み要求は、たとえばクライアント装置2からの書き込み要求である。書き込み要求がない場合(ステップC1のNO)、ステップC1の手順に戻り、書き込み要求があるか否かが再度判定される。
書き込み要求があった場合(ステップC1のYES)、CPU21は、その書き込み要求に対応するライトデータをNM30への最大書き込み単位に分割する(ステップC2)。これにより、ライトデータが分割された複数の分割データが得られる。CPU21は、各分割データの書き込み先を示す書き込み先アドレスを決定する(ステップC3)。この書き込み先アドレスは、上述したように、たとえばNM30のIDと、NM30内での書き込み先を示すアドレスとを含む。
次いで、CPU21は複数の分割データの内の一つを選択する(ステップC4)。そして、CPU21は、選択された分割データの書き込み先アドレスを用いて、書き込み先のNM30が、GCを実行中のNMであるか否かを判定する(ステップC5)。より具体的には、CPU21は、たとえば、書き込み先のNM30による処理の遅れが検知されているか否かを判定する。
書き込み先のNM30がGC実行中のNMでない場合(ステップC5のNO)、CPU21は、そのNM30に対して、書き込み先アドレスと分割データとが指定されたライトコマンドを発行する(ステップC6)。このライトコマンドに応じて、書き込み先のNM30は、指定されたアドレスに分割データを書き込み、書き込みが完了したことをCU20に通知する。
CPU21は、書き込み先のNM30の書き込み時間を取得する(ステップC7)。CPU21は、たとえば、ライトコマンドを発行してから、書き込みが完了したことを示す通知をNM30から受信するまでの時間を書き込み時間として取得する。そして、CPU21は、取得された書き込み時間が、書き込み先のNM30の平均書き込み時間に第2閾値時間(たとえば、1ミリ秒)を加えた値よりも大きいか否かを判定する(ステップC8)。この平均書き込み時間は、各NM30の過去の応答履歴に基づいて算出され、たとえばNM応答履歴102AとしてCU20内に格納されている。書き込み時間が書き込み先のNM30の平均書き込み時間に第2閾値時間を加えた値以下である場合(ステップC8のNO)、ステップC9の手順がスキップされる。つまり、CPU21は、書き込み先のNM30がGC実行中でないと判定する。
書き込み時間が書き込み先のNM30の平均書き込み時間に第2閾値時間を加えた値よりも大きい場合(ステップC8のYES)、CPU21は書き込み先のNM30がGC実行中であることを検知する(ステップC9)。書き込み先のNM30がGC実行中であることが検知された場合、CPU21は、たとえば、その検知されたタイミングから予め設定された第1閾値時間だけ、書き込み先のNM30がGC実行中であると推定し、上述したステップC5の手順において書き込み先がGC実行中のNMであると判定する。
ステップC5の手順において、書き込み先がGC実行中のNMであると判定された場合(ステップC5のYES)、CPU21は、書き込み先のNM30とは別のNM30に分割データを退避するために、その別のNM(すなわち、退避先のNM)30内の退避先アドレスを算出する(ステップC10)。この退避先アドレスは、退避先のNM30に付与されたIDと、当該退避先のNM30内での書き込み先を示すアドレスとを含む。CPU21は、この別のNM30に対して、退避先アドレスと分割データとが指定されたライトコマンドを発行する(ステップC11)。このライトコマンドに応じて、退避先のNM30は、指定されたアドレスに分割データを書き込み、書き込みが完了したことをCU20に通知する。CPU21は、CU20に格納された退避情報102Bに、分割データが退避されたことを示すエントリを追加する(ステップC12)。このエントリには、たとえば、書き込み先アドレス(すなわち、退避前の元のアドレス)と、退避先アドレスとが含まれている。
次いで、CPU21は、まだ書き込まれていない他の分割データがあるか否かを判定する(ステップC13)。まだ書き込まれていない他の分割データがある場合(ステップC13のYES)、ステップC4の手順に戻り、分割データを書き込むための手順が実行される。まだ書き込まれていない分割データがない場合(ステップC13のNO)、すなわち、全ての分割データの書き込みが完了した場合、処理を終了する。
また、図12のフローチャートは、CU20のCPU21によって実行される書き戻し処理の手順の例を示す。この書き戻し処理は、上述した書き込み処理において退避されたデータを、退避先のNM30から本来の書き込み先のNM30に書き戻すために実行される。
まず、CPU21は、あるNM30がGCを実行中であることが検知されてから第1閾値時間が経過したか否かを判定する(ステップD1)。より具体的には、CPU21は、たとえば、上述した図11のフローチャートのステップC9において、書き込み先のNM30がGC実行中であることが検知されてから第1閾値時間が経過したか否かを判定する。あるNM30がGC実行中であることが検知されてから第1閾値時間が経過していない場合には(ステップD1のNO)、そのNM30がまだGC実行中であると推定されるので、ステップD1の手順に戻る。
あるNM30がGC実行中であることが検知されてから第1閾値時間が経過した場合(ステップD1のYES)、CPU21は、退避情報102BからそのNM30に関するエントリを読み出す(ステップD2)。そして、CPU21は、読み出されたエントリの「書き戻し済みフラグ」フィールドに“False”が設定されているか否かを判定する(ステップD3)。「書き戻し済みフラグ」フィールドに“False”が設定されている場合(ステップD3のYES)、CPU21は、エントリの「退避先アドレス」フィールドに示される退避先アドレスに書き込まれているデータを、「元アドレス」フィールドに示される本来の書き込み先アドレスに書き戻すためのコマンドを発行する(ステップD4)。CPU21は、たとえば、退避先アドレスに格納されているデータを読み出すためのリードコマンドを発行した後、そのリードコマンドに応じて読み出されたデータを、本来の書き込み先アドレスに書き込むためのライトコマンドを発行する。データが本来の書き込み先アドレスに書き込まれた場合、CPU21は、エントリの「書き戻し済みフラグ」フィールドに“True”を設定する。
「書き戻し済みフラグ」フィールドに“False”が設定されていない場合(ステップD3のNO)、たとえば、「書き戻し済みフラグ」フィールドに“True”が設定されている場合、ステップD4の手順がスキップされる。
次いで、CPU21は、退避情報102Bに、GC実行中であることが検知されてから閾値時間が経過したNM30に関する他のエントリがあるか否かを判定する(ステップD5)。他のエントリがある場合(ステップD5のYES)、ステップD2の手順に戻り、新たなエントリに基づく処理が実行される。他のエントリがない場合(ステップD5のNO)、処理を終了する。
以上説明したように、本実施形態によれば、1つのNM30の処理の遅れによる、ストレージシステム1全体の性能の大幅な低下を軽減することができる。NM(0,0)のCPU311は、CU20のCPU21によって発行された入出力命令に基づいて、第1NAND型フラッシュメモリ32に対する入出力処理を実行する。NM(0,1)のCPU311は、CU20のCPU21によって発行された入出力命令に基づいて、第2NAND型フラッシュメモリ32に対する入出力処理を実行する。CU20のCPU21は、NM(0,0)に対して第1データを書き込むための命令を発行するときに、NM(0,0)のCPU311による処理の遅れが検知されている場合、第1データを第2NAND型フラッシュメモリ32に一時的に退避するために、NM(0,1)に対して第1データを書き込むための命令を発行する。そして、CPU21は、この遅れが検知されてから第1閾値時間が経過した場合、NM(0,0)およびNM(0,1)に対して、第1データを第2NAND型フラッシュメモリ32から第1NAND型フラッシュメモリ32に書き戻すための命令を発行する。これにより、NM(0,0)の処理の遅れによる、ストレージシステム1全体の性能の大幅な低下を軽減することができる。
(第2実施形態)
次に、第2実施形態について説明する。第1実施形態と同一の構成要素に対しては同一の符号を付し、その説明については省略する。
次に、第2実施形態について説明する。第1実施形態と同一の構成要素に対しては同一の符号を付し、その説明については省略する。
第1実施形態では、NAND型フラッシュメモリ32がガベージコレクション(GC)処理中のNM30に対して発行すべきコマンドが、CU20に貯まっていくことへの対応について説明した。これに対して、本実施形態では、NAND型フラッシュメモリ32がガベージコレクションを処理中のNM30に対してCU20が発行したコマンドが、そのNM30において滞留することへの対応について説明する。より詳細には、NAND型フラッシュメモリ32がガベージコレクションを処理中のNM30に対するコマンドの発行を、CU20において抑制・調停するために、CU20とNM30とが協働することについて説明する。
図13は、NAND型フラッシュメモリ32によるガベージコレクション処理がNM30に及ぼす影響を説明するための図である。
CU20からの入出力命令(コマンド)を一時的かつ時系列的に蓄積しておくための領域として、NM30のNM−FWドライバ201は、コマンドキュー201AをRAM312上に構築する。NM−FWドライバ201は、逐次的に、コマンドキュー201Aからコマンドを取り出し、NAND型フラッシュメモリ32へ発行する。
本実施形態においては、NAND型フラッシュメモリ32がガベージコレクション処理を開始した場合、図13に示されるように、このガベージコレクション処理が終了するまで、つまり、NAND型フラッシュメモリ32によるガベージコレクション処理中、NM30は、コマンドを処理不能な状態となるものと想定する。換言すれば、NAND型フラッシュメモリ32によるガベージコレクション処理が、NM30をロックしてしまうものと想定する。
一般論として、CU20、より詳細には、CU−FWドライバ103は、NAND型フラッシュメモリ32がガベージコレクション処理中のためにNM30がコマンドを処理不能な状態であることを、NM30へ発行したコマンドに対する応答、つまり処理結果が制限時間を超えて得られなかったこと(タイムアウト)で検知することができる。NM30がコマンドを処理不能な状態であることを検知すると、CU−FWドライバ103は、そのNM30へのコマンドの発行を抑止することができる。また、そのNM30へ発行すべきコマンドについて、たとえば第1実施形態で説明したような何らかの対応を取ることができる。
このタイムアウトとする制限時間が長いと、つまり、NM30がコマンドを処理不能な状態であることをCU20が検知するまでの所要時間が長いと、その間、そのNM30へのコマンドがCU20により発行され、NM30において滞留することになるため、ストレージシステム1全体の性能に大きな影響を与える。
しかしながら、タイムアウトとする制限時間を短くすることは、NAND型フラッシュメモリ32によるガベージコレクション処理以外の他の要因でのタイムアウトを誘発するおそれがあり、容易に実施することはできない。たとえば、前述したように、CU20とNM30との間のコマンドおよびその処理結果の転送経路は動的に決定されるため、タイムアウトとする制限時間を短くすると、この転送経路を要因として、タイムアウトを発生させるおそれがある。
そこで、本実施形態のストレージシステム1は、前述したように一般論として設定され得る、(NAND型フラッシュメモリ32がガベージコレクション処理中のためにNM30がコマンドを処理不能な状態であることを検知するために)CU−FWドライバ103においてタイムアウトとする制限時間と比較して極めて短い時間で、NM−FWドライバ201が、NAND型フラッシュメモリ32がガベージコレクション処理中であることを検知し、CU20へ通知する。図14は、NAND型フラッシュメモリ32がガベージコレクション処理を発生させた場合における本実施形態のストレージシステム1の動作の概要を説明するための図である。
NM−FWドライバ201は、NAND型フラッシュメモリ32へ発行したコマンドに対する応答が制限時間を超えて得られなかった場合、つまり、タイムアウトが発生した場合、NAND型フラッシュメモリ32がガベージコレクション処理中であると判断し、そのコマンドの発行元であるCU20に対して、NM30がコマンドを処理不能な状態であることを通知する。NM−FWドライバ201がコマンドに対する応答(処理結果)を待機する時間は、前述したように一般論として設定され得る、(NAND型フラッシュメモリ32がガベージコレクション処理中のためにNM30がコマンドを処理不能な状態であることを検知するために)CU−FWドライバ103においてタイムアウトとする制限時間と比較して極めて短い時間が設定される。NM−FWドライバ201がコマンドに対する応答(処理結果)を待機する時間の決め方については後述する。
これにより、図14に示されるように、少なくとも、NM−FWドライバ201によりタイムアウトが検知されたコマンドの発行元であるCU20による当該NM30へのコマンドの発行を抑止することができる。本実施形態のCU20−FWドライバ103は、NAND型フラッシュメモリ32がガベージコレクション処理中のNM30へのコマンドの発行を抑止するために、そのコマンドを退避しておくためのコマンド退避領域103AをRAM22上に構築する。本実施形態では、この通知を受けたCU20は、発行しようとするコマンドが、通知元のNM30へのコマンドであった場合、このコマンドをコマンド退避領域103Aへ退避することとする。言うまでもないが、CU20は、この通知を受けた際、たとえば第1実施形態で説明したように、その通知元のNM30へのコマンドを処理するようにしてもよい。また、この通知は、すべてのCU20に対して行うようにしてもよい。または、CU20間で通信できるようにし、この通知を受けたCU20が、他のCU20へ伝達するようにしてもよい。
NM−FWドライバ201からCU−FWドライバ103への通知は、たとえば、前述した割り込み要求信号により行うことが可能である。つまり、この通知は、コマンドがエラー終了したことの応答(処理結果)とは区別可能なものとする。NM30がコマンドを処理不能な状態であることをCU20が短時間に検知できるようになることは、そのNM30へのコマンドの発行の抑止をでき、または、そのNM30へ発行すべきコマンドについての何らかの対応を速やかに着手できることになるため、ストレージシステム1全体の性能改善に寄与する。
たとえば、CU20が、NM30に対するコマンドの発行を所定数並列に実行可能である場合、コマンドを処理不能な状態のNM30へのコマンドは退避し、コマンドを処理可能な状態のNM30へのコマンドの発行を当該所定数内においてより多く行うことで、ストレージシステム1全体の性能の低下を解消することができる。また、CU20が、コマンドを処理不能な状態のNM30へのコマンドを、たとえば第1実施形態で説明したように処理する場合においては、この処理に速やかに着手可能となることで、当然、ストレージシステム1全体の性能の低下を解消することができる。
まず、図15を参照して、NAND型フラッシュメモリ32がガベージコレクション処理中ではなく、コマンドを処理可能な状態のNM30へCU20がコマンドを発行した場合におけるCU20−NM30間の通信手順について説明する。なお、図15では、CU20のアプリケーション部101とストレージ管理部102とを統合して示している。
CU20は、クライアント装置2からの要求をネットワークスイッチ10より受け取ると、アプリケーション部101およびストレージ管理部102経由で、その要求に対応するNM30向けのコマンドをCU−FWドライバ103へ発行する(a1)。CU−FWドライバ103は、このコマンドを、指定されたNM30へ発行する(a2)。このコマンドは、発行先のNM30において、NM−FWドライバ201のコマンドキュー201Aへ投入される。前述したように、ここでは、このNM30のNAND型フラッシュメモリ32がガベージコレクション処理中ではないことを想定している。
NM30では、NM−FWドライバ201が、コマンドキュー201Aから取り出したコマンドをNAND型フラッシュメモリ32へ発行し(a3)、その処理結果をNAND型フラッシュメモリ32から受け取る(a4)。NM−FWドライバ201は、NAND型フラッシュメモリ32から受け取った処理結果を、コマンドの発行元であるCU20へ転送する(a5)。この処理結果は、CU20において、CU−FWドライバ103により受信され、CU−FWドライバ103は、NM30から受け取った処理結果をストレージ管理部102へ転送する(a6)。
次に、図16を参照して、NAND型フラッシュメモリ32がガベージコレクション処理中であり、コマンドを処理不能な状態のNM30へCU20がコマンドを発行した場合におけるCU20−NM30間の通信手順について説明する。なお、図16でも、CU20のアプリケーション部101とストレージ管理部102とを統合して示している。
前述したように、CU20は、クライアント装置2からの要求に対応するNM30向けのコマンドを、アプリケーション部101およびストレージ管理部102経由でCU−FWドライバ103へ発行する(b1)。CU−FWドライバ103は、このコマンドを、指定されたNM30へ発行する(b2)。このコマンドは、発行先のNM30において、NM−FWドライバ201のコマンドキュー201Aへ投入される。ここでは、このNM30のNAND型フラッシュメモリ32がガベージコレクション処理中であることを想定している。
NM30のNM−FWドライバ201は、コマンドキュー201Aからコマンドを取り出し、NAND型フラッシュメモリ32へ発行する(b3)。しかしながら、NAND型フラッシュメモリ32はガベージコレクション処理中であるため、NM−FWドライバ201は、そのコマンドの処理結果を、NAND型フラッシュメモリ32から制限時間内には得られない。この時、NM−FWドライバ201は、NAND型フラッシュメモリ32がガベージコレクション処理中であると判断し、そのコマンドの発行元であるCU20に対して、NM30がコマンドを処理不能な状態であることを通知する(b4)。前述したように、この通知は、割り込み要求信号により行い得る。
この通知は、CU20において、CU−FWドライバ103により受信される。CU−FWドライバ103は、この通知を受信した後、通知元のNM30向けのコマンドをストレージ管理部102から受け取った場合(b5)、そのコマンドをコマンド退避領域103Aへ退避する(b6)。なお、その他のNM30向けのコマンドについては、CU−FWドライバ103は、そのNM30へ向けたコマンドの発行を通常通り実行する。
NAND型フラッシュメモリ32がガベージコレクション処理を終了させると、NM−FWドライバ201によりタイムアウトが検知されたコマンドが処理され、その結果がNM−FWドライバ201へ転送される(b7)。この処理結果をNAND型フラッシュメモリ32から受け取ったNM−FWドライバ201は、NAND型フラッシュメモリ32がガベージコレクション処理を終了したと判断する。NM−FWドライバ201は、そのコマンドの発行元であるCU20に対し、NM30がコマンドを処理可能な状態に回復したこと(コマンドを処理不能な状態が解消されたこと)を通知するとともに、そのコマンドの処理結果を転送する(b8)。この通知も、割り込み要求信号により行い得る。
この通知およびコマンドの処理結果は、CU20において、CU−FWドライバ103により受信される。CU−FWドライバ103は、NM30から受け取ったコマンドの処理結果をストレージ管理部102へ転送する(b9)。また、この通知を受け取ったCU−FWドライバ103は、コマンド退避領域103Aへ退避した当該NM30向けのコマンドを発行する(b10)。
ここで、NAND型フラッシュメモリ32がガベージコレクション処理中であることを検知するためにNM−FWドライバ201において設定される、NAND型フラッシュメモリ32へ発行したコマンドに対する応答(処理結果)を待機する時間、つまりタイムアウトとする制限時間の決め方について説明する。
本実施形態のストレージシステム1においては、コマンドの種類ごとに、NAND型フラッシュメモリ32によるガベージコレクション処理の影響を受けていない状況下での応答時間、より詳細には、NM−FWドライバ201がNAND型フラッシュメモリ32へコマンドを発行してからそのコマンドに対する応答(処理結果)をNM−FWドライバ201がNAND型フラッシュメモリ32から取得するまでの時間を測定し、平均値(平均時間)と標準偏差とを算出する。ここでは、平均時間をm、標準偏差をσとする。
本実施形態のストレージシステム1は、NM−FWドライバ201がコマンドに対する応答(処理結果)を待機する時間、つまりタイムアウトとする制限時間として、m+3σを設定する。m+3σとする理由は、正規分布を仮定すれば、99.7%の確率で異常を検知できるためである。このm+3σという時間は、前述したように一般論として設定され得る、(NAND型フラッシュメモリ32がガベージコレクション処理中のためにNM30がコマンドを処理不能な状態であることを検知するために)CU−FWドライバ103においてタイムアウトとする制限時間と比較して極めて短い時間である。
いま、CU20からNM30までのコマンドの転送時間が0.5ms、上記平均時間mが1.0ms、上記標準偏差σが1.0、CU20における割り込みの処理の所要時間が0.2ms(NM30からCU20までの割り込み要求信号の転送時間0.5msを含めて合計0.7msとする)である場合を想定する。また、比較例として、(NAND型フラッシュメモリ32がガベージコレクション処理中のためにNM30がコマンドを処理不能な状態であることを検知するために)CU20においてタイムアウトとする制限時間が100msと設定されている場合を想定する。
この場合、NAND型フラッシュメモリ32によるガベージコレクション処理をNM30が検知するための制限時間は、上記m+3σより、4.0msとなる。これは、CU20から見ると、5.2ms(0.5ms+4.0ms+0.7ms)で、NAND型フラッシュメモリ32がガベージコレクション処理中のためにNM30がコマンドを処理不能な状態であることを検知できることになる。すなわち、本実施形態のストレージシステム1は、比較例の100msよりも極めて短い時間で、CU20が、NM30がコマンドを処理不能な状態であることを検知可能とする。
また、NAND型フラッシュメモリ32がガベージコレクション処理を終了したことについても、従来、CU20は、大凡の時間を仮定するしかなかったが、本実施形態のストレージシステム1では、ガベージコレクション処理の終了から、ブロックされていたコマンドの応答時間(1ms)+NM30からCU20への通知時間(0.7ms)の1.7msで検知可能となる。
なお、NM−FWドライバ201が、稼働中、コマンドの種類ごとに、応答時間を測定し続けて、前述の平均時間mと標準偏差σとを適宜に算出し、タイムアウトとする制限時間(m+3σ)を動的に更新するようにしてもよい。
図17は、NM30(NM−FWドライバ201)の動作の流れを示すフローチャートである。
NM−FWドライバ201は、CU20により発行されたコマンドをコマンドキュー201Aから取り出す(ステップA1)。NM−FWドライバ201は、当該取り出したコマンドをNAND型フラッシュメモリ32へ発行する(ステップA2)。
NM−FWドライバ201は、NAND型フラッシュメモリ32へコマンドを発行した後、予め定められた制限時間が経過していないかを監視する(ステップA3)。経過していない場合(ステップA3のNO)、NM−FWドライバ201は、続いて、発行したコマンドに対する応答(処理結果)がNAND型フラッシュメモリ32から得られたか否かを調べる(ステップA4)。得られた場合(ステップA4のYES)、NM−FWドライバ201は、その応答(処理結果)をCU20へ転送する(ステップA5)。得られていない場合(ステップA4のNO)、NM−FWドライバ201は、ステップA3の処理へ戻る。
発行したコマンドに対する応答(処理結果)がNAND型フラッシュメモリ32から得られないまま、予め定められた制限時間が経過した場合(ステップA3のYES)、NM−FWドライバ201は、自NM30のNAND型フラッシュメモリ32がガベージコレクション処理中であることをCU20へ転送する(ステップA6)。NM−FWドライバ201は、発行したコマンドに対する応答(処理結果)がNAND型フラッシュメモリ32から得られるのを待機し(ステップA7)、得られたら(ステップA7のYES)、その応答(処理結果)をCU20へ転送するとともに、ガベージコレクション処理の終了をCU20へ転送する(ステップA8)。
図18は、CU20(CU−FWドライバ103)の動作の流れを示すフローチャートである。
CU−FWドライバ103は、ストレージ管理部102により発行されたコマンドをNM30へ発行する(ステップB1)。CU−FWドライバ103は、発行したコマンドに対する応答(処理結果)がNM30から得られたか否かを調べる(ステップB2)。得られていない場合(ステップB2のNO)、CU−FWドライバ103は、続いて、コマンドを発行したNM30からNAND型フラッシュメモリ32がガベージコレクション処理中であることの通知を受けていないかを調べる(ステップB3)。受けていない場合(ステップB3のNO)、CU−FWドライバ103は、ステップB2の処理へ戻る。発行したコマンドに対する応答(処理結果)がNM30から得られた場合は(ステップB2のYES)、CU−FWドライバ103は、その応答(処理結果)をストレージ管理部102へ転送する(ステップB4)。
NAND型フラッシュメモリ32がガベージコレクション処理中であることの通知を受けた場合(ステップB3のYES)、CU−FWドライバ103は、通知元のNM30へのコマンドの発行の保留、つまりコマンド退避領域103Aへのコマンドの退避を開始する(ステップB5)。その後、CU−FWドライバ103は、ガベージコレクション処理の終了の通知を受けていないかを調べ(ステップB6)、受けていたら(ステップB6のYES)、通知元のNM30へのコマンドの退避を終了して、コマンド退避領域103Aへ退避したコマンドを発行する(ステップB7)。また、この時、CU−FWドライバ103は、NM30から得た応答(処理結果)をストレージ管理部102へ転送する(ステップB4)。
以上のように、本実施形態のストレージシステム1は、CU20とNM30とが協働することにより、NAND型フラッシュメモリ32がガベージコレクションを処理中のNM30に対するコマンドの発行を、CU20において抑制・調停し、ストレージシステム1全体の性能の低下を解消することを実現する。
なお、本実施形態では、NM30からCU20へ割り込み要求信号を転送することにより、NAND型フラッシュメモリ32がガベージコレクション処理中のためにNM30がコマンドを処理不能な状態であることをCU20へ通知する例を説明した。この割り込み要求信号の転送に代えて、NAND型フラッシュメモリ32がガベージコレクション処理中であることを検知したNM30が、その旨を示す情報を、たとえばCU20からI2Cバスなどのバス線経由でアクセス可能な内蔵レジスタへ格納することで、NAND型フラッシュメモリ32がガベージコレクション処理中のためにNM30がコマンドを処理不能な状態であることをCU20へ通知するようにしてもよい。この場合、CU20は、NM30の内蔵レジスタを巡回的にアクセスすることにより、NAND型フラッシュメモリ32がガベージコレクション処理中のためにNM30がコマンドを処理不能な状態であることを検知する。
また、本実施形態では、NM30、より詳細には、NM−FWドライバ201が、NAND型フラッシュメモリ32へコマンドを発行した際、そのコマンドに対する応答(処理結果)をm+3σを超えて得られなかった場合、NAND型フラッシュメモリ32がガベージコレクション処理中であることを検知する例を説明した。タイムアウトとする制限時間の決め方として、前述のようにm+3σとすることは、CU20が、NM30からの通知によらず、NAND型フラッシュメモリ32がガベージコレクション処理中のためにNM30がコマンドを処理不能な状態であることを検知する場合であって、たとえばCU−FWドライバ103がNM30へ発行したコマンドについてタイムアウトとする制限時間を設定する場合においても有効である。
この場合、CU−FWドライバ103がNM30へコマンドを発行してからそのコマンドに対する応答(処理結果)をCU−FWドライバ103がNM30から取得するまでの時間が測定され、平均値(平均時間m)と標準偏差σとが算出される。
また、NAND型フラッシュメモリ32がガベージコレクション処理中のためにNM30がコマンドを処理不能な状態であることを、CU−FWドライバ103ではなく、アプリケーション部101またはストレージ管理部102で検知する場合であって、アプリケーション部101またはストレージ管理部102においてタイムアウトとする制限時間を設定する場合においても、タイムアウトとする制限時間の決め方として、前述のようにm+3σとすることは有効である。
また、本実施形態では、NAND型フラッシュメモリ32がガベージコレクション処理中のためにNM30がコマンドを処理不能な状態であることをNM30からCU20へ通知する例を説明した。NM30がコマンドを処理不能な状態となる要因としては、NAND型フラッシュメモリ32によるガベージコレクション処理のほか、たとえばデータの更新のためのロック取得待ちなども考えられ得る。このような要因でNM30がコマンドを処理不能な状態となっていることについても、前述したように、CU20とNM30とが協働することにより、CU20へ通知するようにしてもよい。
本実施形態に記載された様々な機能の各々は、回路(処理回路)によって実現されてもよい。処理回路の例には、中央処理装置(CPU)のような、プログラムされたプロセッサが含まれる。このプロセッサは、メモリに格納されたコンピュータプログラム(命令群)を実行することによって、記載された機能それぞれを実行する。このプロセッサは、電気回路を含むマイクロプロセッサであってもよい。処理回路の例には、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、マイクロコントローラ、コントローラ、他の電気回路部品も含まれる。本実施形態に記載されたCPU以外の他のコンポーネントの各々もまた処理回路によって実現されてもよい。
また、本実施形態の各種処理はコンピュータプログラムによって実現することができるので、このコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのコンピュータプログラムをコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…ストレージシステム、2…クライアント装置、10…ネットワークスイッチ、20…コネクションユニット(CU)、21…CPU、22…RAM、23…ノードモジュールインターフェース(NM I/F)、30…NM、31…ノードコントローラ(NC)、32…NAND型フラッシュメモリ、40…データ記憶領域、101…アプリケーション部、102…ストレージ管理部、102A…NM応答履歴、102B…退避情報、103…CU−FWドライバ、103A…コマンド退避領域、201…NM−FWドライバ、201A…コマンドキュー、311…CPU、312…RAM、313…I/Oコントローラ、314…NANDインタフェース、1021…IO分割部、1022…IO実行部、1023…GC検知部、1024…退避実行部。
Claims (10)
- 1以上の第1プロセッサと、
各々が1以上の不揮発性メモリ装置を有し、前記1以上の第1プロセッサから発行されるデータの入出力命令を処理する1以上の第2プロセッサと、
を具備し、
前記1以上の第2プロセッサは、前記1以上の不揮発性メモリ装置へ発行した前記入出力命令に対する応答が、前記1以上の不揮発性メモリ装置が所定の状態にあることを検知するために設定される制限時間を超えて前記1以上の不揮発性メモリ装置から得られない場合、前記1以上の不揮発性メモリ装置が所定の状態にあるために前記1以上の第2プロセッサが前記入出力命令を処理不能な状態であることを、少なくとも前記入出力命令の発行元である第1プロセッサを含む前記1以上の第1プロセッサへ通知する、
ストレージシステム。 - 前記1以上の第1プロセッサは、前記通知を受けた場合、その通知元である第2プロセッサへの前記入出力命令の発行を保留し、前記通知元である第2プロセッサから前記入出力命令を処理可能な状態に回復したことが通知された後、前記保留した前記入出力命令の発行を実行する請求項1に記載のストレージシステム。
- 前記制限時間は、前記入出力命令の種類ごとに、応答時間の平均値mと標準偏差σとからm+3σと設定される請求項1または2に記載のストレージシステム。
- 前記1以上の第2プロセッサは、前記ストレージシステムの動作中、前記入出力命令の種類ごとに、応答時間を測定し、その平均値mと標準偏差σとを算出して、前記制限時間を動的に変更する請求項3に記載のストレージシステム。
- 前記1以上の第2プロセッサは、前記1以上の第1プロセッサへ割り込み要求信号を送信することで、前記通知を行う請求項1乃至4のいずれかに記載のストレージシステム。
- 前記1以上の第2プロセッサは、前記1以上の第1プロセッサからアクセス可能なレジスタであって、前記入出力命令の発行元である第1プロセッサが周期的にアクセスするレジスタへ前記入出力命令を処理不能な状態であることを示す情報を格納することで、前記通知を行う請求項1乃至4のいずれかに記載のストレージシステム。
- 前記所定の状態は、ガベージコレクション処理中の状態である請求項1乃至6のいずれかに記載のストレージシステム。
- 1以上の第1プロセッサと、
各々が1以上の不揮発性メモリ装置を有し、前記1以上の第1プロセッサから発行されるデータの入出力命令を処理する1以上の第2プロセッサと、
を具備し、
前記1以上の第1プロセッサは、前記1以上の第2プロセッサの中のいずれかの第2プロセッサに対して発行した前記入出力命令に対する応答が、前記1以上の不揮発性メモリ装置が所定の状態にあるために当該第2プロセッサが前記入出力命令を処理不能な状態であることを検知するための制限時間を超えて当該第2プロセッサから得られない場合、前記1以上の不揮発性メモリ装置が所定の状態にあるために当該第2プロセッサが前記入出力命令を処理不能な状態であると判定し、
前記制限時間は、前記入出力命令の種類ごとに、応答時間の平均値mと標準偏差σとからm+3σと設定される、
ストレージシステム。 - 前記1以上の第1プロセッサは、前記ストレージシステムの動作中、前記入出力命令の種類ごとに、応答時間を測定し、その平均値mと標準偏差σとを算出して、前記制限時間を動的に変更する請求項8に記載のストレージシステム。
- 1以上の第1プロセッサと、各々が1以上の不揮発性メモリ装置を有し、前記1以上の第1プロセッサから発行されるデータの入出力命令を処理する1以上の第2プロセッサとを具備するストレージシステムの処理方法であって、
前記1以上の第2プロセッサは、前記1以上の不揮発性メモリ装置へ発行した前記入出力命令に対する応答が、前記1以上の不揮発性メモリ装置が所定の状態にあることを検知するために設定される制限時間を超えて前記1以上の不揮発性メモリ装置から得られない場合、前記1以上の不揮発性メモリ装置が所定の状態にあるために前記1以上の第2プロセッサが前記入出力命令を処理不能な状態であることを、少なくとも前記入出力命令の発行元である第1プロセッサを含む前記1以上の第1プロセッサへ通知し、
前記制限時間は、前記入出力命令の種類ごとに、応答時間の平均値mと標準偏差σとからm+3σと設定される、
処理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016172869A JP2018041154A (ja) | 2016-09-05 | 2016-09-05 | ストレージシステムおよび処理方法 |
US15/438,685 US10514849B2 (en) | 2016-09-05 | 2017-02-21 | Storage system including a plurality of networked storage nodes |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016172869A JP2018041154A (ja) | 2016-09-05 | 2016-09-05 | ストレージシステムおよび処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018041154A true JP2018041154A (ja) | 2018-03-15 |
Family
ID=61280509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016172869A Pending JP2018041154A (ja) | 2016-09-05 | 2016-09-05 | ストレージシステムおよび処理方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10514849B2 (ja) |
JP (1) | JP2018041154A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018156263A (ja) * | 2017-03-16 | 2018-10-04 | 東芝メモリ株式会社 | メモリシステム、メモリコントローラおよびメモリシステムの制御方法 |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6801979B1 (en) * | 1995-07-31 | 2004-10-05 | Lexar Media, Inc. | Method and apparatus for memory control circuit |
US5717954A (en) * | 1995-10-13 | 1998-02-10 | Compaq Computer Corporation | Locked exchange FIFO |
KR100359414B1 (ko) * | 1996-01-25 | 2003-01-24 | 동경 엘렉트론 디바이스 주식회사 | 데이타독출/기록방법및그를이용한메모리제어장치및시스템 |
US6070254A (en) * | 1997-10-17 | 2000-05-30 | International Business Machines Corporation | Advanced method for checking the integrity of node-based file systems |
AU1729100A (en) * | 1998-11-17 | 2000-06-05 | Lexar Media, Inc. | Method and apparatus for memory control circuit |
US6839821B2 (en) * | 1999-11-16 | 2005-01-04 | Lexar Media, Inc. | Method and apparatus for memory control circuit |
US7353329B2 (en) * | 2003-09-29 | 2008-04-01 | Intel Corporation | Memory buffer device integrating refresh logic |
US8429313B2 (en) * | 2004-05-27 | 2013-04-23 | Sandisk Technologies Inc. | Configurable ready/busy control |
US7325095B2 (en) * | 2005-02-28 | 2008-01-29 | Hitachi Global Storage Technologies Netherlands B.V. | Data storage organization for distributed computing in an intelligent disk drive |
US7206230B2 (en) * | 2005-04-01 | 2007-04-17 | Sandisk Corporation | Use of data latches in cache operations of non-volatile memories |
KR100762259B1 (ko) * | 2005-09-12 | 2007-10-01 | 삼성전자주식회사 | 버스트 읽기 레이턴시 기능을 갖는 낸드 플래시 메모리장치 |
US7451265B2 (en) * | 2006-08-04 | 2008-11-11 | Sandisk Corporation | Non-volatile memory storage systems for phased garbage collection |
US7280398B1 (en) * | 2006-08-31 | 2007-10-09 | Micron Technology, Inc. | System and memory for sequential multi-plane page memory operations |
US7464216B2 (en) * | 2006-09-29 | 2008-12-09 | Sandisk Corporation | Method for phased garbage collection with state indicators |
US7797468B2 (en) * | 2006-10-31 | 2010-09-14 | Hewlett-Packard Development Company | Method and system for achieving fair command processing in storage systems that implement command-associated priority queuing |
JP2008204574A (ja) * | 2007-02-22 | 2008-09-04 | Fujitsu Ltd | 記憶装置とその制御方法 |
US20080294814A1 (en) * | 2007-05-24 | 2008-11-27 | Sergey Anatolievich Gorobets | Flash Memory System with Management of Housekeeping Operations |
US8438356B2 (en) * | 2007-10-01 | 2013-05-07 | Marvell World Trade Ltd. | Flash memory controller |
JP5603778B2 (ja) * | 2007-12-21 | 2014-10-08 | ラムバス・インコーポレーテッド | フラッシュメモリタイミングの事前特徴付け |
JP4489127B2 (ja) * | 2008-02-29 | 2010-06-23 | 株式会社東芝 | 半導体記憶装置 |
US8407407B1 (en) * | 2009-10-06 | 2013-03-26 | Marvell International Ltd. | Solid state drive access control system with equalized access timing |
US20110258366A1 (en) * | 2010-04-19 | 2011-10-20 | Mosaid Technologies Incorporated | Status indication in a system having a plurality of memory devices |
US8589655B2 (en) * | 2010-09-15 | 2013-11-19 | Pure Storage, Inc. | Scheduling of I/O in an SSD environment |
JP5238791B2 (ja) | 2010-11-10 | 2013-07-17 | 株式会社東芝 | 転送機能を有するメモリノードを相互に接続したストレージ装置及びデータ処理方法 |
JP5535128B2 (ja) | 2010-12-16 | 2014-07-02 | 株式会社東芝 | メモリシステム |
JP2014132505A (ja) | 2010-12-16 | 2014-07-17 | Toshiba Corp | メモリシステム |
JP5524156B2 (ja) | 2011-09-15 | 2014-06-18 | 株式会社東芝 | 情報処理装置および情報処理方法 |
US9075710B2 (en) * | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
JP2013257801A (ja) | 2012-06-14 | 2013-12-26 | Toshiba Corp | サーバコンピュータおよびドライブ制御装置 |
JP5931816B2 (ja) * | 2013-08-22 | 2016-06-08 | 株式会社東芝 | ストレージ装置 |
US20150055419A1 (en) * | 2013-08-23 | 2015-02-26 | Kabushiki Kaisha Toshiba | Controller, memory system, and method |
JP2015111334A (ja) | 2013-12-06 | 2015-06-18 | 富士通株式会社 | ストレージ制御装置、ストレージ制御プログラム、およびストレージ制御方法 |
US9727248B2 (en) * | 2014-02-05 | 2017-08-08 | Apple Inc. | Dynamic IO operation timeout assignment for a solid state drive |
JP2015176309A (ja) * | 2014-03-14 | 2015-10-05 | 株式会社東芝 | 半導体記憶装置 |
US9727456B2 (en) * | 2014-11-03 | 2017-08-08 | Pavilion Data Systems, Inc. | Scheduled garbage collection for solid state storage devices |
US20160266843A1 (en) * | 2015-03-09 | 2016-09-15 | Kabushiki Kaisha Toshiba | Memory device, communication device, and memory controller |
US10506042B2 (en) * | 2015-09-22 | 2019-12-10 | Toshiba Memory Corporation | Storage system that includes a plurality of routing circuits and a plurality of node modules connected thereto |
US9804787B2 (en) * | 2015-11-03 | 2017-10-31 | Samsung Electronics Co., Ltd. | Mitigating GC effect in a raid configuration |
US10108450B2 (en) * | 2016-04-21 | 2018-10-23 | Samsung Electronics Co., Ltd. | Mechanism for SSDs to efficiently manage background activity with notify |
JP2018041153A (ja) * | 2016-09-05 | 2018-03-15 | 東芝メモリ株式会社 | ストレージシステムおよび入出力処理方法 |
JP6334633B2 (ja) * | 2016-09-20 | 2018-05-30 | 株式会社東芝 | データ検索システムおよびデータ検索方法 |
CN108121673B (zh) * | 2016-11-29 | 2023-09-22 | 三星电子株式会社 | 控制器以及包括控制器和非易失性存储器件的存储设备 |
-
2016
- 2016-09-05 JP JP2016172869A patent/JP2018041154A/ja active Pending
-
2017
- 2017-02-21 US US15/438,685 patent/US10514849B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20180067649A1 (en) | 2018-03-08 |
US10514849B2 (en) | 2019-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109388340B (zh) | 数据存储装置及管理数据存储装置中的flr的方法 | |
US20180113615A1 (en) | Storage device generating adaptive interrupt and operating method thereof | |
US9122598B2 (en) | Semiconductor device and operating method thereof | |
US5682551A (en) | System for checking the acceptance of I/O request to an interface using software visible instruction which provides a status signal and performs operations in response thereto | |
US10976956B2 (en) | Non-volatile memory persistence method and computing device | |
US10445236B2 (en) | Method to consistently store large amounts of data at very high speed in persistent memory systems | |
US9811404B2 (en) | Information processing system and method | |
EP3404537B1 (en) | Processing node, computer system and transaction conflict detection method | |
CN110941395A (zh) | 动态随机存取存储器、内存管理方法、系统及存储介质 | |
JP6652647B2 (ja) | ストレージシステム | |
CN113794764A (zh) | 服务器集群的请求处理方法、介质和电子设备 | |
CN115617542A (zh) | 内存交换方法、装置、计算机设备及存储介质 | |
JP2018041153A (ja) | ストレージシステムおよび入出力処理方法 | |
US20190042443A1 (en) | Data acquisition with zero copy persistent buffering | |
US7823013B1 (en) | Hardware data race detection in HPCS codes | |
JP2018041154A (ja) | ストレージシステムおよび処理方法 | |
JP4990262B2 (ja) | バッファ装置 | |
CN111177027A (zh) | 动态随机存取存储器、内存管理方法、系统及存储介质 | |
US11061851B2 (en) | Computer system, processing method, and driver program | |
CN117687835A (zh) | 数据处理系统、内存镜像方法、装置和计算设备 | |
CN109308167B (zh) | 用于跟踪写入请求的设备和系统、以及控制器的方法 | |
US10540222B2 (en) | Data access device and access error notification method | |
CN111142795A (zh) | 分布式存储系统写操作的控制方法、控制装置、控制设备 | |
US20190163399A1 (en) | Information processing system and information processing method | |
JP2015014962A (ja) | 演算装置、演算方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20170531 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20180830 |