JP2013200692A - Memory system - Google Patents
Memory system Download PDFInfo
- Publication number
- JP2013200692A JP2013200692A JP2012068367A JP2012068367A JP2013200692A JP 2013200692 A JP2013200692 A JP 2013200692A JP 2012068367 A JP2012068367 A JP 2012068367A JP 2012068367 A JP2012068367 A JP 2012068367A JP 2013200692 A JP2013200692 A JP 2013200692A
- Authority
- JP
- Japan
- Prior art keywords
- command
- queue
- access
- execution
- semiconductor memory
- 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
Abstract
Description
本発明の実施形態は、メモリシステムに関する。 Embodiments described herein relate generally to a memory system.
コンピュータシステムに用いられるメモリシステムとして、NAND型フラッシュメモリなどの不揮発性半導体メモリを搭載したSSD(Solid State Drive)が注目されている。SSDなどのメモリシステムには、優先度の異なる複数のコマンドキューを持つものがある。このとき、優先度の異なる複数のコマンドキューにそれぞれ格納されたコマンドを適切に処理することが望まれる。 As a memory system used in a computer system, an SSD (Solid State Drive) equipped with a nonvolatile semiconductor memory such as a NAND flash memory has attracted attention. Some memory systems such as SSDs have a plurality of command queues having different priorities. At this time, it is desirable to appropriately process commands stored in a plurality of command queues having different priorities.
1つの実施形態は、例えば、優先度の異なる複数のコマンドキューにそれぞれ格納されたコマンドを適切に処理できるメモリシステムを提供することを目的とする。 An object of one embodiment is to provide a memory system that can appropriately process, for example, commands stored in a plurality of command queues having different priorities.
1つの実施形態によれば、不揮発性半導体メモリと制御部とを有するメモリシステムが提供される。制御部は、不揮発性半導体メモリを制御する。制御部は、第1のコマンドキューと第2のコマンドキューと処理部とを有する。第2のコマンドキューは、第1のコマンドキューより高い優先度を有する。処理部は、第1のコマンドキュー及び第2のコマンドキューのいずれかのコマンドキューを選択する。処理部は、選択されたコマンドキューに格納されたコマンドを実行させ不揮発性半導体メモリへのアクセス処理を行う。処理部は、第1のコマンドキューに格納された第1のコマンドの実行中に第2のコマンドキューに第2のコマンドが格納された場合、第2のコマンドが第2のコマンドキューに格納されたタイミングにおける第1のコマンドによる不揮発性半導体メモリへのアクセス進捗状況に応じて、中断処理と完了処理とのいずれかを行う。中断処理では、第1のコマンドの実行を中断して第2のコマンドを実行させる。完了処理では、第1のコマンドの実行を完了させる。 According to one embodiment, a memory system having a nonvolatile semiconductor memory and a control unit is provided. The control unit controls the nonvolatile semiconductor memory. The control unit includes a first command queue, a second command queue, and a processing unit. The second command queue has a higher priority than the first command queue. The processing unit selects one of the first command queue and the second command queue. The processing unit executes a command stored in the selected command queue and performs an access process to the nonvolatile semiconductor memory. When the second command is stored in the second command queue during execution of the first command stored in the first command queue, the processing unit stores the second command in the second command queue. Depending on the progress of access to the nonvolatile semiconductor memory by the first command at the specified timing, either the interruption process or the completion process is performed. In the interruption process, the execution of the first command is interrupted and the second command is executed. In the completion process, the execution of the first command is completed.
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、この実施形態により本発明が限定されるものではない。 Hereinafter, a memory system according to an embodiment will be described in detail with reference to the accompanying drawings. In addition, this invention is not limited by this embodiment.
(実施形態)
実施形態にかかるメモリシステム100について図1を用いて説明する。図1は、メモリシステム100の構成を示す図である。
(Embodiment)
A
メモリシステム100は、ホスト装置HAに対する外部記憶媒体として機能するものであり、例えば、SSD(Solid State Drive)又はメモリカードである。ホスト装置HAは、例えば、パーソナルコンピュータ又はCPUコアを含む。
The
メモリシステム100は、コントローラとしてのドライブ制御回路4と、不揮発性半導体メモリとしてのNAND型フラッシュメモリ10と、ランダムアクセス可能な半導体メモリとしてのRAM20と、ATAインタフェース(ATA I/F)2などのメモリ接続インタフェースなどを備えている。
The
RAM20としては、例えば揮発性半導体メモリを採用する。RAM20として、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase Change Random Access Memory)などを採用することができる。RAM20は、データ転送用、管理情報記録用または作業領域用の記憶部として使用される。
For example, a volatile semiconductor memory is employed as the
ドライブ制御回路4は、ホストHAとNAND型フラッシュメモリ10との間でRAM20を介してデータ転送制御を行うとともに、メモリシステム100内の各構成要素を制御する。
The drive control circuit 4 controls data transfer between the host HA and the
ドライブ制御回路4は、データアクセス用バス101、回路制御用バス102を備えている。回路制御用バス102には、ドライブ制御回路4全体を制御するプロセッサ104が接続されている。回路制御用バス102には、NAND型フラッシュメモリ10に記憶された各管理プログラム(FW:ファームウエア)をブートするブート用プログラムが格納されたブートROM105がROMコントローラ106を介して接続されている。
The drive control circuit 4 includes a data access bus 101 and a
ATAインタフェースコントローラ(ATAコントローラ)117、NANDコントローラ110、及びRAMコントローラ114は、データアクセス用バス101と回路制御用バス102との両方に接続されている。ATAコントローラ117は、ATAインタフェース2を介してホストHAとの間でデータを送受信する。データアクセス用バス101には、データ作業領域及びファームウェア展開領域として使用されるSRAM115がSRAMコントローラ116を介して接続されている。NAND型フラッシュメモリ10に記憶されているファームウェアは起動時、ブートROM105に記憶されたブート用プログラムによってSRAM115に転送される。プロセッサ104は、SRAM115に転送されたファームウェアを実行することで、メモリシステム100内での最上位のコントローラとして動作し、ドライブ制御回路4内の構成要素を制御する。
The ATA interface controller (ATA controller) 117, the
RAMコントローラ114は、プロセッサ104とRAM20とのインタフェース処理、ATA I/F2−RAM20間のデータ転送制御、NAND型フラッシュメモリ10−RAM20間のデータ転送制御などを実行する。NANDコントローラ110は、プロセッサ104とNAND型フラッシュメモリ10とのインタフェース処理、NAND型フラッシュメモリ10−RAM20間のデータ転送制御、誤り訂正符号のエンコード/デコード処理などを実行する。
The
NAND型フラッシュメモリ10は、ホスト装置100からのライトデータを記憶したり、ワークエリア(図示せず)にロードされているアドレス変換テーブルのバックアップデータや差分データを記憶したりする。NAND型フラッシュメモリ10は、1以上のメモリチップにより構成される。NAND型フラッシュメモリ10が複数のメモリチップで構成される場合、複数のメモリチップを並列駆動することで高速動作を実現する事が可能である。NAND型フラッシュメモリ10は、1つのメモリセルに1ビットを記憶する二値メモリ(SLC: Single Level Cell)であってもよいし、1つのメモリセルに2ビット以上を記憶する多値メモリ(MLC: Multi Level Cell)であってもよい。以下、NANDメモリ2は多値メモリであるとして説明する。
次に、NAND型フラッシュメモリ10について図2を用いて説明する。図2は、NAND型フラッシュメモリ10の構成を示す図である。
The
Next, the
NAND型フラッシュメモリ10は、制御回路15、メモリセルアレイ11、ページバッファ12、データキャッシュ13、及びステータスレジスタ14を有する。
制御回路15は、NAND型フラッシュメモリ10の各部を全体的に制御する。
The
The
メモリセルアレイ11は、例えば多値メモリである場合、複数のメモリセルがマトリクス状に配列されて構成されており、個々のメモリセルは、上位ページ及び下位ページを使用して多値記憶が可能である。また、メモリセルアレイ11は、消去の単位である物理ブロックを複数備えており、個々の物理ブロックは、読み出しおよび書き込みの単位である物理ページ(以降、単にページ)を複数備えて構成されている。また、個々のメモリセルは、1回データが書き込まれたら消去されるまでそのデータを不揮発に保持するので、データをさらに上書きすることが困難である。
When the
データキャッシュ13およびページバッファ12は、例えば1ページ分の記憶容量を備えている。データキャッシュ13は、NAND型フラッシュメモリ10がNANDコントローラ110との間でデータを送受信するためのバッファとして使用され、ページバッファ12は、NAND型フラッシュメモリ10がデータをメモリセルアレイ11に入出力するためのバッファとして使用される。
The data cache 13 and the
具体的には、書き込みコマンド実行時には、制御回路15は、NANDコントローラ110から書き込みデータが送られてきたら、データキャッシュ13に格納されたデータをクリアして、書き込みデータをデータキャッシュ13に格納する。制御回路15は、さらに、データキャッシュ13に格納された書き込みデータをページバッファ12にコピーする。そして、制御回路15は、ページバッファ12に格納された書き込みデータをメモリセルアレイ11にプログラムする。プログラムの際には、制御回路15は、プログラムされた書き込みデータとページバッファ12に格納されている書き込みデータとを比較して、正しくプログラムされたか否かをベリファイする。
Specifically, when a write command is executed, the
読み出しコマンド時には、制御回路15は、メモリセルアレイ11からページバッファ12に対象のデータを読み出す。そして、制御回路15は、データキャッシュ13に格納されたデータをクリアした後に、ページバッファ12に格納された読み出しデータをデータキャッシュ13にコピーする。制御回路15は、データキャッシュ13に格納された読み出しデータを、データ出力信号(例えばRE信号)によりNANDコントローラ110に送る。
At the time of a read command, the
ステータスレジスタ14には、制御回路15が生成したステータス情報が格納される。ステータスレジスタ14に格納されたステータス情報は、制御回路15による制御の下、NANDコントローラ110に送られる。
The status register 14 stores status information generated by the
具体的には、書き込みコマンド実行時又は消去コマンド実行時に、制御回路15は、NANDコントローラ110から、ステータスリード命令(Cmd70−StatusOut)を受信する。制御回路15は、ステータスリード命令を受信すると、ステータスレジスタ14に格納されたステータス情報をNANDコントローラ110へ出力する。
Specifically, the
例えば、書き込みコマンド実行時、制御回路15は、書き込みデータにかかるライト命令(Cmd80h−Adr−DataIn−Cmd10h)の後にステータスリード命令(Cmd70−StatusOut)を受信すると、データキャッシュ13に書き込みデータが格納されていれば、ステータス情報として、書き込みデータにかかるプログラミングが成功したか否かを出力する。
For example, when the write command is executed, the
なお、制御回路15は、データキャッシュ13に格納された書き込みデータをクリアした場合、それに応じて書き込みデータにかかるステータス情報もステータスレジスタ14からクリアする。そのため、制御回路15は、データキャッシュ13に書き込みデータが格納されていない場合に、書き込みデータにかかるステータス情報を出力することが困難である。
Note that when the write data stored in the data cache 13 is cleared, the
例えば、消去コマンド実行時、制御回路15は、消去コマンドにかかるイレース命令(Cmd60h−Adr−CmdD0h)の後にステータスリード命令(Cmd70−StatusOut)を受信すると、ステータス情報として、消去コマンドにかかるイレースが成功したか否かを出力する。
次に、NANDコントローラ110について図3を用いて説明する。図3は、NANDコントローラ110の構成を示す図である。
For example, when executing the erase command, the
Next, the
メモリシステム100では、優先度の異なるコマンドが異なるタイミングで要求されることがある。この優先度は、例えば、コマンド実行中における他のコマンドとの関係での実行順に関する優先度である。その点を考慮して、NANDコントローラ110は、優先度の異なる2つのコマンドキューを持ち、優先度の高いコマンドキューにコマンドがセットされたイベントで優先度の低いコマンドキューから優先度の高いコマンドキューへの切り替えを行うか否か判断する機構を持つ。
In the
具体的には、NANDコントローラ110は、優先度低のコマンドキュー(第1のコマンドキュー)111、優先度高のコマンドキュー(第2のコマンドキュー)112、及び処理部113を有する。
Specifically, the
優先度低のコマンドキュー111は、優先度高のコマンドキュー112に比べて低い優先度を有する。すなわち、優先度低のコマンドキュー111には、コマンドの実行順に関して、優先度高のコマンドキュー112に格納されるコマンドよりも優先度の低いコマンドが格納される。優先度低のコマンドキュー111は、例えば、複数のコマンドを格納可能である。優先度低のコマンドキュー111は、例えば、FIFO(First In First Out)構造を有し、複数のコマンドをその格納された順に投入位置111aから実行位置111b(図5(a)参照)へ移動させる。
The low
優先度高のコマンドキュー112は、優先度低のコマンドキュー111に比べて高い優先度を有する。すなわち、優先度高のコマンドキュー112には、コマンドの実行順に関して、優先度低のコマンドキュー111に格納されるコマンドよりも優先度の高いコマンドが格納される。優先度高のコマンドキュー112は、例えば、1以上のコマンドを格納可能である。以下では、説明の簡略化のために、優先度高のコマンドキュー112が1つのコマンドを格納する場合について例示的に説明するが、以下の考え方は、優先度高のコマンドキュー112が複数のコマンドを格納可能である場合にも同様に適用できる。
The high
処理部113は、優先度低のコマンドキュー111及び優先度高のコマンドキュー112のいずれかのコマンドキューを選択し、選択されたコマンドキューに格納されたコマンドを実行させNAND型フラッシュメモリ10へのアクセス処理を行う。
The processing unit 113 selects one of the
例えば、処理部113は、優先度高のコマンドキュー112にコマンドが格納されていない場合、優先度低のコマンドキュー111を選択し、優先度低のコマンドキュー111における実行位置111bに格納されたコマンドを実行させる。例えば、処理部113は、優先度低のコマンドキュー111における実行位置111bに書き込みコマンドWR0が格納されていれば(図5(a)参照)、書き込みコマンドWR0を実行させる。
For example, if no command is stored in the
例えば、処理部113は、優先度低のコマンドキュー111にコマンドが格納されていない状態で、優先度高のコマンドキュー112にコマンドが格納された場合、優先度高のコマンドキュー112を選択し、優先度高のコマンドキュー112に格納されたコマンドを実行させる。例えば、処理部113は、優先度高のコマンドキュー112に書き込みコマンドWR2が格納されていれば(図5(a)参照)、書き込みコマンドWR2を実行させる。
For example, when a command is stored in the
一方、優先度低のコマンドキュー111に1以上のコマンドが格納されており、その実行位置111bに格納されたコマンドを実行中に、優先度高のコマンドキュー112にコマンドが格納された場合が問題となる。
On the other hand, when one or more commands are stored in the low
ここで、仮に、処理部113が、優先度低のコマンドキュー111のコマンドの処理を必ず完了させてから優先度高のコマンドキュー112のコマンドの処理を行う場合を考える。この場合、優先度の低いコマンドの処理完了を待つ時間分、優先度の高いコマンドへのレイテンシ(コマンド応答までの時間)が長くなる傾向にある。
Here, it is assumed that the processing unit 113 always completes the command processing of the
そこで、実施形態では、処理部113が、優先度低のコマンドキュー111に格納された第1のコマンドの実行中に優先度高のコマンドキュー112に第2のコマンドが格納された場合、第2のコマンドが優先度高のコマンドキュー112に格納されたタイミングにおける第1のコマンドによるNAND型フラッシュメモリ10へのアクセス進捗状況に応じて、中断処理と完了処理とのいずれかを行う。中断処理は、第1のコマンドの実行を中断して第2のコマンドを実行させるような処理である。完了処理は、第1のコマンドの実行を完了させるような処理である。すなわち、優先度低のコマンドキュー111の第1のコマンドの処理を必ず完了させるのではなく、第1のコマンドによるNAND型フラッシュメモリ10へのアクセス進捗状況を考慮して、第1のコマンドを完了させるか中断させるかを切り替える制御を行う。
具体的には、処理部113は、キュー切り替え部113a及びコマンドシーケンス発行部113bを有する。
Therefore, in the embodiment, when the processing unit 113 stores the second command in the high
Specifically, the processing unit 113 includes a
キュー切り替え部113aは、優先度低のコマンドキュー111及び優先度高のコマンドキュー112のそれぞれに格納されたコマンドを監視し、コマンドシーケンス発行部113bによるコマンドシーケンス発行前であれば、それぞれにおけるコマンドの格納状況に応じて、優先度低のコマンドキュー111及び優先度高のコマンドキュー112のいずれかのコマンドキューを選択し、選択されたコマンドキューに格納されたコマンドの内容をコマンドシーケンス発行部113bへ通知する。
The
コマンドシーケンス発行部113bは、実行すべきコマンドの内容の通知をキュー切り替え部113aから受けたら、実行すべきコマンドの内容に応じてコマンドシーケンスを発行する。コマンドシーケンス発行部113bは、発行されたコマンドシーケンスに従って、NAND型フラッシュメモリ10へ供給すべき命令やデータを生成しそれらをNAND型フラッシュメモリ10へ供給するアクセス処理を行う。また、コマンドシーケンス発行部113bは、コマンドシーケンスを発行したその旨をキュー切り替え部113aへ通知する。
When the command
一方、キュー切り替え部113aは、コマンドシーケンス発行部113bによるコマンドシーケンス発行後、例えば優先度低のコマンドキュー111に格納された第1のコマンドの実行中に優先度高のコマンドキュー112に第2のコマンドが格納された場合、第2のコマンドが優先度高のコマンドキュー112に格納されたタイミングにおける第1のコマンドによるNAND型フラッシュメモリ10へのアクセス進捗状況をコマンドシーケンス発行部113bに問い合わせる。
On the other hand, after issuing the command sequence by the command
コマンドシーケンス発行部113bは、その問い合わせに応じて、アクセス進捗状況を判定する。すなわち、コマンドシーケンス発行部113bは、コマンドシーケンスが発行された後、NAND型フラッシュメモリ10からBusy信号を逐一受信する。コマンドシーケンス発行部113bは、Busy信号の値が「Ready」なのか「Busy」なのかに応じてアクセス進捗状況を判定する。
The command
例えば、コマンドシーケンス発行部113bは、Busy信号の値が、コマンドシーケンス発行後に「Busy」になる前の「Ready」であれば、アクセス進捗状況がビジー状態開始前(例えば、図10に示す「NANDBusy前」)であると判定する。
For example, if the value of the Busy signal is “Ready” before issuing “Busy” after the command sequence issuance, the command
例えば、コマンドシーケンス発行部113bは、Busy信号の値が「Busy」であれば、アクセス進捗状況がビジー状態中(例えば、図10に示す「NANDBusy中」)であると判定する。
For example, if the value of the Busy signal is “Busy”, the command
例えば、コマンドシーケンス発行部113bは、Busy信号の値が、コマンドシーケンス発行後に「Busy」になった後の「Ready」であれば、アクセス進捗状況がビジー状態満了後(例えば、図10に示す「NANDBusy後」)であると判定する。
コマンドシーケンス発行部113bは、判定されたアクセス進捗状況をキュー切り替え部113aに通知する。
For example, if the value of the Busy signal is “Ready” after becoming “Busy” after issuance of the command sequence, the command
The command
キュー切り替え部113aは、アクセス進捗状況の通知を受けたら、アクセス進捗状況に応じて、実行中の第1のコマンドに関して中断処理と完了処理とのいずれかを行う。
When receiving the notification of the access progress status, the
すなわち、キュー切り替え部113aは、中断処理を行う場合、優先度低のコマンドキュー111を選択した状態から優先度高のコマンドキュー112を選択した状態へ切り替えることで、第1のコマンドを中断して第2のコマンドを実行させる。このとき、キュー切り替え部113aは、第1のコマンドが中断中であることを示す中断状態フラグを保持してもよい。
That is, when performing the interruption process, the
あるいは、キュー切り替え部113aは、完了処理を行う場合、優先度低のコマンドキュー111を選択した状態を維持することで、第1のコマンドの実行を完了させる。そして、キュー切り替え部113aは、完了処理により第1のコマンドの実行が完了された後に、第2のコマンドの実行を開始する。例えば、キュー切り替え部113aは、第1のコマンドの実行が完了した旨の通知をコマンドシーケンス発行部113bから受けたら、優先度低のコマンドキュー111を選択した状態から優先度高のコマンドキュー112を選択した状態へ切り替えることで、第2のコマンドの実行を開始させる。
Alternatively, when performing the completion process, the
さらに、例えば、キュー切り替え部113aは、第1のコマンドの実行に伴うNAND型フラッシュメモリ10へのアクセス進捗状況と、第1のコマンドの種類とに応じて、中断処理と完了処理とのいずれかを行う。例えば、キュー切り替え部113aは、第1のコマンドが消去コマンド又は読み出しコマンドであることに応じて中断処理を行い、第1のコマンドが書き込みコマンドであることに応じて完了処理を行う。
Furthermore, for example, the
より具体的には、キュー切り替え部113aは、第1のコマンドが書き込みコマンドであり、且つNAND型フラッシュメモリ10へのアクセス進捗状況がNAND型フラッシュメモリ10のビジー状態開始前であることに応じて、中断処理を行う。また、キュー切り替え部113aは、第1のコマンドが書き込みコマンドであり、且つNAND型フラッシュメモリ10へのアクセス進捗状況がNAND型フラッシュメモリ10のビジー状態開始後であることに応じて、完了処理を行う。
More specifically, the
あるいは、ここで、仮に、処理部113が、中断処理を行う際に、優先度低のコマンドキュー111のコマンドの処理を強制的に破棄してから、優先度高のコマンドキュー112のコマンドの処理を行う場合について考える。この場合、優先度低のコマンドキュー111のコマンドの処理を強制的に破棄してしまうことから、優先度低のコマンドキュー111のコマンドの処理に関してスループットが低下する傾向にある。
Alternatively, suppose that the processing unit 113 forcibly discards the command processing in the low
それに関して、実施形態では、処理部113が、中断処理により第1のコマンドの実行が中断され第2のコマンドの実行が完了された後に、中断されたタイミングにおける第1のコマンドによるNAND型フラッシュメモリ10へのアクセス進捗状況に応じて、継続処理とリトライ処理とのいずれかを行う。継続処理は、第1のコマンドの実行を中断時の処理から継続させるような処理である。リトライ処理は、第1のコマンドの実行を最初の処理からやり直させるような処理である。 In this regard, in the embodiment, after the execution of the first command is interrupted by the interruption process and the execution of the second command is completed, the processing unit 113 performs the NAND flash memory according to the first command at the interruption timing. Depending on the progress status of access to 10, either continuation processing or retry processing is performed. The continuation process is a process that continues the execution of the first command from the process at the time of interruption. The retry process is a process that causes the first command to be executed again from the first process.
例えば、キュー切り替え部113aは、中断処理により第1のコマンドの実行が中断され第2のコマンドの実行が完了された後に、優先度高のコマンドキュー112を選択した状態から優先度低のコマンドキュー111を選択した状態へ切り替えることで、中断されていた第1のコマンドの実行を実行すべき旨をコマンドシーケンス発行部113bへ通知する。
For example, after the execution of the first command is interrupted by the interruption process and the execution of the second command is completed, the
これに応じて、コマンドシーケンス発行部113bは、中断処理により第1のコマンドの実行が中断されたタイミングにおけるNAND型フラッシュメモリ10へのアクセス進捗状況を判定する。このとき、コマンドシーケンス発行部113bは、判定されたアクセス進捗状況として、例えば中断処理を行うときに用いたアクセス進捗状況を用いてもよい。そして、例えば、コマンドシーケンス発行部113bは、NAND型フラッシュメモリ10へのアクセス進捗状況がNAND型フラッシュメモリ10のビジー状態満了前であることに応じて、第1のコマンドのコマンドシーケンスを最初から発行することで、第1のコマンドの実行を最初の処理からやり直させるようにするリトライ処理を行う。あるいは、例えば、コマンドシーケンス発行部113bは、NAND型フラッシュメモリ10へのアクセス進捗状況がNAND型フラッシュメモリ10のビジー状態満了後であることに応じて、第1のコマンドのコマンドシーケンスを中断時のものから発行することで、第1のコマンドの実行を中断時の処理から継続させる継続処理を行う。
In response to this, the command
さらに、例えば、コマンドシーケンス発行部113bは、中断されたタイミングにおける第1のコマンドによるNAND型フラッシュメモリ10へのアクセス進捗状況と、第1のコマンドの種類及び第2のコマンドの種類の組み合わせとに応じて、継続処理とリトライ処理とのいずれかを行う。例えば、コマンドシーケンス発行部113bは、第1のコマンドの種類及び第2のコマンドの種類の組み合わせが消去コマンド及び読み出しコマンドを含むことに応じて、継続処理を行い、第1のコマンドの種類及び第2のコマンドの種類の組み合わせが消去コマンド及び読み出しコマンドを含まないことに応じて、リトライ処理を行う。
Further, for example, the command
より具体的には、コマンドシーケンス発行部113bは、第1のコマンドの種類及び第2のコマンドの種類の組み合わせが消去コマンド及び読み出しコマンドを含み、且つNAND型フラッシュメモリ10へのアクセス進捗状況がNAND型フラッシュメモリ10のビジー状態満了前であることに応じて、リトライ処理を行う。コマンドシーケンス発行部113bは、第1のコマンドの種類及び第2のコマンドの種類の組み合わせが消去コマンド及び読み出しコマンドを含み、且つNAND型フラッシュメモリ10へのアクセス進捗状況がNAND型フラッシュメモリ10のビジー状態満了後であることに応じて、継続処理を行う。
More specifically, the command
なお、コマンドシーケンス発行部113bは、例えば、実行中のコマンドが書き込みコマンド又は消去コマンドであれば、ステータスリード命令に対する応答(例えば、ステータス情報)をNAND型フラッシュメモリ10から受信したことに応じて実行中のコマンドが完了したと判断する。あるいは、コマンドシーケンス発行部113bは、例えば、実行中のコマンドが読み出しコマンドであれば、読み出し予定のデータの最終アドレスのデータをNAND型フラッシュメモリ10から受信したことに応じて実行中のコマンドが完了したと判断する。コマンドシーケンス発行部113bは、実行中のコマンドが完了したと判断したらその旨をキュー切り替え部113aへ通知する。
次に、メモリシステム100の動作について図4を用いて説明する。図4は、メモリシステム100の動作を示すフローチャートである。
For example, if the command being executed is a write command or an erase command, the command
Next, the operation of the
ステップS1では、NANDコントローラ110が、優先度高のコマンドキュー112に第2のコマンドが格納されたことに応じて、優先度低のコマンドキュー111のコマンド(第1のコマンド)の処理を実行中であるか否かを判定する。NANDコントローラ110は、優先度低のコマンドキュー111のコマンドの処理を実行中である場合(ステップS1でYes)、処理をステップS10へ進め、優先度低のコマンドキュー111のコマンドの処理を実行中でない場合(ステップS1でNo)、処理をステップS7へ進める。
In step S1, the
ステップS10では、NANDコントローラ110が、第2のコマンドが優先度高のコマンドキュー112に格納されたタイミングにおける第1のコマンドによるNAND型フラッシュメモリ10へのアクセス進捗状況等に応じて、完了処理と中断処理とのいずれかを選択するための停止判定を行う。完了処理では、優先度の低いコマンドキューで実施中であった第1のコマンドによるアクセス処理を完結させた後、優先度の高いコマンドキューの第2のコマンドを実行する。中断処理では、優先度の低いコマンドキューで実施中であった第1のコマンドによるアクセス処理を中断して、優先度の高いコマンドキューの第2のコマンドを実行する。
具体的には、ステップS10において、NANDコントローラ110は、以下のステップS11〜ステップS13の処理を行う。
In step S10, the
Specifically, in step S10, the
ステップS11では、NANDコントローラ110が、NAND型フラッシュメモリ10へのアクセス進捗状況がビジー状態開始後か否かを判定する。NANDコントローラ110は、アクセス進捗状況がビジー状態開始前であれば、処理をステップS7へ進め、アクセス進捗状況がビジー状態開始前でなければ(すなわち、ビジー状態開始後であれば)、処理をステップS13へ進める。
In step S11, the
ステップS13では、NANDコントローラ110が、実行中の第1のコマンドの種類が書き込みコマンド(WRアクセス)であるか否かを判断する。NANDコントローラ110は、第1のコマンドの種類が書き込みコマンドである場合(ステップS13でYes)、処理をステップS2へ進め、第1のコマンドの種類が書き込みコマンドでない場合(ステップS13でNo)、処理をステップS7へ進める。
In step S13, the
ステップS2では、NANDコントローラ110が、完了処理を行う。すなわち、NANDコントローラ110は、優先度低のコマンドキュー111の第1のコマンドの実行を完了させる。
In step S2, the
ステップS7では、NANDコントローラ110が、中断処理を行う。すなわち、NANDコントローラ110は、優先度低のコマンドキュー111の第1のコマンドの実行を中断させる。このとき、NANDコントローラ110は、第1のコマンドの実行を中断中であることを示す中断状態フラグを生成して保持してもよい。
ステップS3では、NANDコントローラ110が、優先度高のコマンドキュー112の第2のコマンドの実行を行い、第2のコマンドの実行を完了させる。
In step S7, the
In step S3, the
ステップS20では、NANDコントローラ110が、中断されたタイミングにおける第1のコマンドによるNAND型フラッシュメモリ10へのアクセス進捗状況に応じて、通常処理と継続処理とリトライ処理とのいずれかを行うための復帰判定を行う。通常処理では、停止判定(ステップS10)で第1のコマンドを完了すべきと判定されたことに応じて完了処理(ステップS2)がなされた場合に対応し、通常通り優先度低のコマンドキューの処理を行う。継続処理では、停止判定(ステップS10)で第1のコマンドを中断すべきと判定されたことに応じて中断処理(ステップS7)がなされた場合に対応し、中断処理(ステップS7)で中断していた以降のアクセス処理を継続する。リトライ処理では、停止判定(ステップS10)で第1のコマンドを中断すべきと判定されたことに応じて中断処理(ステップS7)がなされた場合に対応し、優先度高のコマンドキュー112への切り替え前の優先度低のコマンドキュー111の第1のコマンドをリトライ処理する。
具体的には、ステップS20において、NANDコントローラ110は、以下のステップS21〜ステップS23の処理を行う。
In step S20, the
Specifically, in step S20, the
ステップS21では、NANDコントローラ110が、例えば上記の中断状態フラグを参照することなどにより、優先度低のコマンドキュー111が中断中か否かを判定する。NANDコントローラ110は、優先度低のコマンドキュー111が中断中でない、すなわち、第1のコマンドの処理が完了している場合(ステップS21でNo)、処理をステップS4へ進め、優先度低のコマンドキュー111が中断中である(ステップS22でYes)、処理をステップS22へ進める。
In step S21, the
ステップS22では、NANDコントローラ110が、中断されたタイミングにおける第1のコマンドによるNAND型フラッシュメモリ10へのアクセス進捗状況がビジー状態満了後(ビジー状態満了済み)であるか否かを判定する。NANDコントローラ110は、アクセス進捗状況がビジー状態満了後である場合(ステップS22でYes)、処理をステップS23へ進め、アクセス進捗状況がビジー状態満了後でない、すなわちビジー状態満了前である場合(ステップS22でYes)、処理をステップS6へ進める。
In step S22, the
ステップS23では、NANDコントローラ110が、優先度低のコマンドキュー111の第1のコマンドの処理が、優先度高のコマンドキュー112の第2のコマンドで実行した処理がNAND型フラッシュメモリ10内の内部情報(キャッシュやステータス情報等)を更新するアクセスであることにより影響を受ける処理であるか否かを判定する。
In step S23, the processing executed by the
例えば、NANDコントローラ110は、優先度低のコマンドキュー111の第1のコマンドの種類と優先度高のコマンドキュー112の第2のコマンドの種類との組み合わせが、消去コマンド及び読み出しコマンドを含む場合、第1のコマンドの処理が、NAND型フラッシュメモリ10内の内部情報の更新アクセスにより影響を受けない処理であると判定し(ステップS23でNo)、処理をステップS5へ進める。
For example, when the combination of the first command type of the low
あるいは、例えば、NANDコントローラ110は、第1のコマンドの種類及び第2のコマンドの種類の組み合わせが消去コマンド及び読み出しコマンドを含まない場合、第1のコマンドの処理が、NAND型フラッシュメモリ10内の内部情報の更新アクセスにより影響を受ける処理であると判定し(ステップS23でYes)、処理をステップS6へ進める。
Alternatively, for example, when the combination of the first command type and the second command type does not include an erase command and a read command, the
ステップS4では、NANDコントローラ110が、通常処理を行う。すなわち、NANDコントローラ110は、優先度低のコマンドキュー111で第1のコマンドの次に格納されたコマンドを実行する。
In step S4, the
ステップS5では、NANDコントローラ110が、継続処理を行う。すなわち、NANDコントローラ110は、第1のコマンドの実行を中断時の処理から継続させて完了させる。
In step S5, the
ステップS6では、NANDコントローラ110が、リトライ処理を行う。すなわち、NANDコントローラ110は、第1のコマンドの実行を最初の処理からやり直させるように開始させ完了させる。
次に、停止判定(ステップS10)及び復帰判定(ステップS20)に伴う動作について、具体的なケースを例示しながら説明する。
In step S6, the
Next, operations associated with the stop determination (step S10) and the return determination (step S20) will be described with reference to specific cases.
第1のケースは、図5(a)に示すように、優先度低のコマンドキュー111の書き込みコマンドWR0を実行中に優先度高のコマンドキュー112に書き込みコマンドWR2が格納されたケースである。第1のケースは、例えば、図4に示す通常処理(ステップS4)に対応したケースである。
In the first case, as shown in FIG. 5A, the write command WR2 is stored in the
図5(b)に示すように、優先度低のコマンドキュー111の書き込みコマンドWR0のコマンドシーケンスでは、ライト命令(Cmd80h−Adr−DataIn−Cmd10h)、NANDコントローラ110からNAND型フラッシュメモリ10への書き込みデータの転送等のアクセス処理(tProg)、ステータスリード命令(Cmd70−StatusOut)が順に処理されることが予定されている。また、Busy信号の値は、アクセス処理(tProg)の前後で「Ready」であり、アクセス処理(tProg)中に「Busy」になることが予定されている。
As shown in FIG. 5B, in the command sequence of the write command WR0 of the low
このとき、「Busy」状態開始後のタイミングt1やタイミングt2において優先度高のコマンドキュー112に書き込みコマンドWR2が格納された場合、図5(c)に示すように、コマンドWR0のコマンドシーケンスの全て(すなわち、ライト命令とアクセス処理とステータスリード命令と)を完了させてから、優先度高のコマンドキュー112の書き込みコマンドWR2の実行を開始する。
At this time, when the write command WR2 is stored in the
ここで、仮に、タイミングt1やタイミングt2において優先度高のコマンドキュー112に書き込みコマンドWR2が格納された場合に、優先度低のコマンドキュー111の書き込みコマンドWR0を中断させてしまうと、優先度高のコマンドキュー112の書き込みコマンドWR2完了後に優先度低のコマンドキュー111の書き込みコマンドWR0を中断時点から開始しようとしても、NAND型フラッシュメモリ10への書き込みが上書きになってしまう。NAND型フラッシュメモリ10は、上記のように一度書き込まれたメモリセルに上書きすることが困難であるため、代替のメモリセルを探して書き込むことになるが、先に途中まで書き込まれたメモリセルは無効なメモリセルとして破棄されることになる。これにより、NAND型フラッシュメモリ10におけるリソースを無駄な消費することになる。
Here, if the write command WR2 is stored in the
それに対して、実施形態では、アクセス処理(tProg)が開始されたタイミング以降のタイミングt1やタイミングt2で優先度高のコマンドキュー112に書き込みコマンドWR2が格納された場合、NAND型フラッシュメモリ10の特性を考慮して、実行中のコマンドWR0のコマンドシーケンスを中断せずに全て完了させる。これにより、NAND型フラッシュメモリ10におけるリソースの無駄な消費を低減できる。
On the other hand, in the embodiment, when the write command WR2 is stored in the
第2のケースは、図6(a)に示すように、優先度低のコマンドキュー111の消去コマンドER0を実行中に優先度高のコマンドキュー112に読み出しコマンドRD0が格納されたケースである。第2のケースは、例えば、図4に示す継続処理(ステップS5)に対応したケースである。
As shown in FIG. 6A, the second case is a case where the read command RD0 is stored in the high
図6(b)に示すように、優先度低のコマンドキュー111の消去コマンドER0のコマンドシーケンスでは、イレース命令(Cmd60h−Adr−CmdD0h)、NANDコントローラ110からNAND型フラッシュメモリ10への消去動作に伴うアクセス処理(tBERASE)、ステータスリード命令(Cmd70−StatusOut)が順に処理されることが予定されている。また、Busy信号の値は、アクセス処理(tBERASE)の前後で「Ready」であり、アクセス処理(tBERASE)中に「Busy」になることが予定されている。
As shown in FIG. 6B, in the command sequence of the erase command ER0 of the low
このとき、「Busy」状態満了後のタイミングt3において優先度高のコマンドキュー112に読み出しコマンドRD0が格納された場合、図6(c)に示すように、消去コマンドER0のコマンドシーケンスのうちイレース命令とアクセス処理とを完了させてから、消去コマンドER0を中断して、優先度高のコマンドキュー112の読み出しコマンドRD0の実行を開始する。そして、優先度高のコマンドキュー112の読み出しコマンドRD0の実行を完了したら、中断中の消去コマンドER0のコマンドシーケンスのうちステータスリード命令から処理を継続して再開し完了させる。
At this time, when the read command RD0 is stored in the
本ケースにおいては、優先度高のコマンドキュー112の読み出しコマンドRD0の処理によって優先度低のコマンドキュー111で中断した際のNAND型フラッシュメモリ10の内部情報(キャッシュやステータス情報等)が棄損しない為、中断後、優先度高のコマンドキュー112の読み出しコマンドRD0の実行が完了してから、中断中の消去コマンドER0の継続処理が可能である。
In this case, because the internal information (cache, status information, etc.) of the
第3のケースは、図7(a)に示すように、優先度低のコマンドキュー111の読み出しコマンドRD0を実行中に優先度高のコマンドキュー112に消去コマンドER0が格納されたケースである。第3のケースは、例えば、図4に示す継続処理(ステップS5)に対応したケースである。
As shown in FIG. 7A, the third case is a case where the erase command ER0 is stored in the high
図7(b)に示すように、優先度低のコマンドキュー111の読み出しコマンドRD0のコマンドシーケンスでは、リード命令(Cmd00h−Adr−Cmd30h)、NANDコントローラ110からNAND型フラッシュメモリ10へのデータ読み出し動作に伴うアクセス処理(tR)、NAND型フラッシュメモリ10からNANDコントローラ110へのデータ転送処理(DataOut)が順に処理されることが予定されている。また、Busy信号の値は、アクセス処理(tR)の前後で「Ready」であり、アクセス処理(tR)中に「Busy」になることが予定されている。
As shown in FIG. 7B, in the command sequence of the read command RD0 of the low
このとき、「Busy」状態満了後のタイミングt4において優先度高のコマンドキュー112に消去コマンドER0が格納された場合、図7(c)に示すように、読み出しコマンドRD0のコマンドシーケンスのうちリード命令とアクセス処理とを完了させてから、読み出しコマンドRD0を中断して、優先度高のコマンドキュー112の消去コマンドER0の実行を開始する。そして、優先度高のコマンドキュー112の消去コマンドER0の実行を完了したら、中断中の読み出しコマンドRD0のコマンドシーケンスのうちデータ転送処理から処理を継続して再開し完了させる。
At this time, if the erase command ER0 is stored in the
本ケースにおいては、優先度高のコマンドキュー112の消去コマンドER0の処理によって優先度低のコマンドキュー111で中断した際のNAND型フラッシュメモリ10の内部情報(キャッシュやステータス情報等)が棄損しない為、中断後、優先度高のコマンドキュー112の消去コマンドER0の実行が完了してから、中断中の読み出しコマンドRD0の継続処理が可能である。
In this case, because the internal information (cache, status information, etc.) of the
第4のケースは、図8(a)に示すように、優先度低のコマンドキュー111の消去コマンドER0を実行中に優先度高のコマンドキュー112に消去コマンドER1が格納されたケースである。第4のケースは、例えば、図4に示すリトライ処理(ステップS6)に対応したケースである。
In the fourth case, as shown in FIG. 8A, the erase command ER1 is stored in the
図8(b)に示すように、優先度低のコマンドキュー111の消去コマンドER0のコマンドシーケンスでは、イレース命令(Cmd60h−Adr−CmdD0h)、NANDコントローラ110からNAND型フラッシュメモリ10への消去動作に伴うアクセス処理(tBERASE)、ステータスリード命令(Cmd70−StatusOut)が順に処理されることが予定されている。また、Busy信号の値は、アクセス処理(tBERASE)の前後で「Ready」であり、アクセス処理(tBERASE)中に「Busy」になることが予定されている。
As shown in FIG. 8B, in the command sequence of the erase command ER0 of the low
このとき、「Busy」状態満了後のタイミングt5において優先度高のコマンドキュー112に消去コマンドER1が格納された場合、図8(c)に示すように、消去コマンドER0を中断して、優先度高のコマンドキュー112の消去コマンドER1の実行を開始する。そして、優先度高のコマンドキュー112の消去コマンドER1の実行を完了したら、中断中の消去コマンドER0のコマンドシーケンスのうち最初のイレース命令から処理をやり直すように処理を開始し完了させる。
At this time, when the erase command ER1 is stored in the high
本ケースにおいては、優先度高のコマンドキュー112の消去コマンドER1の処理によって優先度低のコマンドキュー111で中断した際のNAND型フラッシュメモリ10の内部情報(キャッシュやステータス情報等)が棄損される為、中断後、優先度高のコマンドキュー112の消去コマンドER1の実行が完了してから、中断中の消去コマンドER0のリトライ処理が必要になる。
In this case, the internal information (cache, status information, etc.) of the
第5のケースは、図9(a)に示すように、優先度低のコマンドキュー111の消去コマンドER0を実行中に優先度高のコマンドキュー112に消去コマンドER1が格納されたケースである。第5のケースは、例えば、図4に示すリトライ処理(ステップS6)に対応したケースである。
In the fifth case, as shown in FIG. 9A, the erase command ER1 is stored in the
図9(b)に示すように、優先度低のコマンドキュー111の消去コマンドER0のコマンドシーケンスでは、イレース命令(Cmd60h−Adr−CmdD0h)、NANDコントローラ110からNAND型フラッシュメモリ10への消去動作に伴うアクセス処理(tBERASE)、ステータスリード命令(Cmd70−StatusOut)が順に処理されることが予定されている。また、Busy信号の値は、アクセス処理(tBERASE)の前後で「Ready」であり、アクセス処理(tBERASE)中に「Busy」になることが予定されている。
As shown in FIG. 9B, in the command sequence of the erase command ER0 of the low
このとき、「Busy」状態開始前のタイミングt6において優先度高のコマンドキュー112に消去コマンドER1が格納された場合、図9(c)に示すように、消去コマンドER0を中断して、優先度高のコマンドキュー112の消去コマンドER1の実行を開始する。そして、優先度高のコマンドキュー112の消去コマンドER1の実行を完了したら、中断中の消去コマンドER0のコマンドシーケンスのうち最初のイレース命令から処理をやり直すように処理を開始し完了させる。
At this time, if the erase command ER1 is stored in the high
あるいは、「Busy」状態中のタイミングt7において優先度高のコマンドキュー112に消去コマンドER1が格納された場合、図9(d)に示すように、消去コマンドER0を中断して、優先度高のコマンドキュー112の消去コマンドER1の実行を開始する。そして、優先度高のコマンドキュー112の消去コマンドER1の実行を完了したら、中断中の消去コマンドER0のコマンドシーケンスのうち最初のイレース命令から処理をやり直すように処理を開始し完了させる。
Alternatively, when the erase command ER1 is stored in the high
本ケースにおいては、優先度高のコマンドキュー112の消去コマンドER1の処理によって優先度低のコマンドキュー111で中断した際のNAND型フラッシュメモリ10の内部情報(キャッシュやステータス情報等)が棄損される為、中断後、優先度高のコマンドキュー112の消去コマンドER1の実行が完了してから、中断中の消去コマンドER0のリトライ処理が必要になる。
In this case, the internal information (cache, status information, etc.) of the
このように、停止判定(ステップS10)及び復帰判定(ステップS20)に伴う動作について、第1のケース〜第5のケースを例示して説明したが、それ以外にも様々なケースが考えられる。様々なケースについてまとめたものを図10に示す。 As described above, the operations associated with the stop determination (step S10) and the return determination (step S20) have been described by exemplifying the first case to the fifth case, but various other cases are conceivable. A summary of the various cases is shown in FIG.
ここで、仮に、処理部113が、優先度低のコマンドキュー111のコマンドの処理を必ず完了させてから優先度高のコマンドキュー112のコマンドの処理を行う場合を考える。この場合、優先度の低いコマンドの処理完了を待つ時間分、優先度の高いコマンドへのレイテンシ(コマンド応答までの時間)が長くなる傾向にある。
Here, it is assumed that the processing unit 113 always completes the command processing of the
それに対して、実施形態では、処理部113が、優先度低のコマンドキュー111に格納された第1のコマンドの実行中に優先度高のコマンドキュー112に第2のコマンドが格納された場合、第2のコマンドが優先度高のコマンドキュー112に格納されたタイミングにおける第1のコマンドによるNAND型フラッシュメモリ10へのアクセス進捗状況に応じて、中断処理と完了処理とのいずれかを行う。中断処理は、第1のコマンドの実行を中断して第2のコマンドを実行させるような処理である。完了処理は、第1のコマンドの実行を完了させるような処理である。これにより、第1のコマンドの実行を必ず完了させる場合に比べて、優先度の高いコマンドへのレイテンシ(コマンド応答までの時間)を短縮できる。
On the other hand, in the embodiment, when the processing unit 113 stores the second command in the high
また、実施形態では、処理部113が、第1のコマンドの実行に伴うNAND型フラッシュメモリ10へのアクセス進捗状況と、第1のコマンドの種類とに応じて、中断処理と完了処理とのいずれかを行う。これにより、第1のコマンドを停止することに関して、アクセス進捗状況と第1のコマンドの種類との両方を考慮した適切な処理を行うことができる。
In the embodiment, the processing unit 113 selects either the interruption process or the completion process depending on the progress of access to the
例えば、実施形態では、処理部113が、第1のコマンドが消去コマンド又は読み出しコマンドであることに応じて中断処理を行い、第1のコマンドが書き込みコマンドであることに応じて完了処理を行う。これにより、コマンドの実行に伴うNAND型フラッシュメモリ10の特性を考慮して、中断処理と完了処理とを切り替えて行うことができる。
For example, in the embodiment, the processing unit 113 performs an interruption process in response to the first command being an erase command or a read command, and performs a completion process in response to the first command being a write command. As a result, the interruption process and the completion process can be switched in consideration of the characteristics of the
あるいは、仮に、第1のコマンドが書き込みコマンドであり、且つNAND型フラッシュメモリ10へのアクセス進捗状況がNAND型フラッシュメモリ10のビジー状態開始後であるときに中断処理を行う場合について考える。この場合、優先度高のコマンドキュー112の第2のコマンドの実行完了後に優先度低のコマンドキュー111の第1のコマンド(書き込みコマンド)を中断時点から開始しようとしても、NAND型フラッシュメモリ10への書き込みが上書きになってしまう。NAND型フラッシュメモリ10は、上記のように一度書き込まれたメモリセルに上書きすることが困難であるため、代替のメモリセルを探して書き込むことになるが、先に途中まで書き込まれたメモリセルは無効なメモリセルとして破棄されることになる。これにより、NAND型フラッシュメモリ10におけるリソースを無駄に消費することになる。
Alternatively, suppose that the interruption process is performed when the first command is a write command and the progress of access to the
あるいは、仮に、第1のコマンドが書き込みコマンドであり、且つNAND型フラッシュメモリ10へのアクセス進捗状況がNAND型フラッシュメモリ10のビジー状態開始前であるときに完了処理を行う場合について考える。この場合、優先度高のコマンドキュー112の第2のコマンドの実行完了後に優先度低のコマンドキュー111の第1のコマンド(書き込みコマンド)を中断時点から開始することができる。すなわち、ビジー状態開始前であればNAND型フラッシュメモリ10へのメモリセルへの書き込みがまだ実施されていないので、メモリセルへの書き込みが上書きにならずにメモリセルへ書き込みを行うことができる。すなわち、この場合に完了処理を行うことは、無駄に、第1のコマンドの実行を完了させるものであり、優先度の高いコマンドへのレイテンシ(コマンド応答までの時間)が長くなる傾向にある。
Alternatively, suppose that the completion processing is performed when the first command is a write command and the progress of access to the
それに対して、実施形態では、処理部113が、第1のコマンドが書き込みコマンドであり、且つNAND型フラッシュメモリ10へのアクセス進捗状況がNAND型フラッシュメモリ10のビジー状態開始前であることに応じて、中断処理を行う。これにより、NAND型フラッシュメモリ10の特性を考慮して、実行中の第1のコマンド(書き込みコマンド)のコマンドシーケンスを中断させるので、優先度の高いコマンドへのレイテンシを低減できる。また、処理部113は、第1のコマンドが書き込みコマンドであり、且つNAND型フラッシュメモリ10へのアクセス進捗状況がNAND型フラッシュメモリ10のビジー状態開始後であることに応じて、完了処理を行う。すなわち、処理部113は、完了処理により第1のコマンドの実行が完了された後に、第2のコマンドの実行を開始する。これにより、NAND型フラッシュメモリ10の特性を考慮して、実行中の第1のコマンド(書き込みコマンド)のコマンドシーケンスを中断せずに全て完了させるので、NAND型フラッシュメモリ10におけるリソースの無駄な消費を低減できる。すなわち、実施形態によれば、優先度の高いコマンドへのレイテンシを低減できるとともに、NAND型フラッシュメモリ10におけるリソースの無駄な消費を低減できる。
On the other hand, in the embodiment, the processing unit 113 responds that the first command is a write command and the progress of access to the
あるいは、仮に、処理部113が、中断処理を行う際に、優先度低のコマンドキュー111の第1のコマンドの処理を強制的に破棄してから、優先度高のコマンドキュー112の第2のコマンドの処理を行う場合について考える。この場合、優先度低のコマンドキュー111の第1のコマンドの処理を強制的に破棄してしまうことから、優先度低のコマンドキュー111の第1のコマンドの処理に関してスループットが低下する傾向にある。
Alternatively, if the processing unit 113 performs the interruption process, the processing of the first command in the low
それに対して、実施形態では、処理部113が、中断処理により第1のコマンドの実行が中断され第2のコマンドの実行が完了された後に、中断されたタイミングにおける前記第1のコマンドによるNAND型フラッシュメモリ10へのアクセス進捗状況に応じて、継続処理とリトライ処理とのいずれかを行う。継続処理は、第1のコマンドの実行を中断時の処理から継続させる処理である。リトライ処理は、第1のコマンドの実行を最初の処理からやり直す処理である。これにより、NAND型フラッシュメモリ10の特性、すなわちNAND型フラッシュメモリ10の内部状態が棄損されるか否かを考慮して、可能な場合に第1のコマンドを中断時の処理から継続させることができる。この結果、優先度低のコマンドキュー111の第1のコマンドの処理に関してスループットを向上できる。
On the other hand, in the embodiment, after the execution of the first command is interrupted by the interruption process and the execution of the second command is completed, the processing unit 113 performs the NAND type based on the first command at the interruption timing. Depending on the progress of access to the
また、実施形態では、処理部113が、NAND型フラッシュメモリ10へのアクセス進捗状況がNAND型フラッシュメモリ10のビジー状態満了前であることに応じて、リトライ処理を行い、NAND型フラッシュメモリ10へのアクセス進捗状況がNAND型フラッシュメモリ10のビジー状態満了後であることに応じて、継続処理を行う。これにより、アクセス進捗状況を考慮して、可能な場合に第1のコマンドを中断時の処理から継続させることができる。
In the embodiment, the processing unit 113 performs a retry process in response to the progress of access to the
また、実施形態では、処理部113が、中断されたタイミングにおける第1のコマンドによるNAND型フラッシュメモリ10へのアクセス進捗状況と、第1のコマンドの種類及び第2のコマンドの種類の組み合わせとに応じて、継続処理とリトライ処理とのいずれかを行う。これにより、第1のコマンドの実行へ復帰させることに関して、アクセス進捗状況と第1のコマンドの種類及び第2のコマンドの種類の組み合わせとの両方を考慮した適切な処理を行うことができる。
Further, in the embodiment, the processing unit 113 performs the progress of access to the
また、実施形態では、処理部113が、第1のコマンドの種類及び第2のコマンドの種類の組み合わせが消去コマンド及び読み出しコマンドを含むことに応じて、継続処理を行い、第1のコマンドの種類及び第2のコマンドの種類の組み合わせが消去コマンド及び読み出しコマンドを含まないことに応じて、リトライ処理を行う。これにより、NAND型フラッシュメモリ10の特性、すなわちNAND型フラッシュメモリ10の内部状態が棄損されるか否かを考慮して、可能な場合に第1のコマンドを中断時の処理から継続させることができる。
In the embodiment, the processing unit 113 performs a continuation process in response to the combination of the first command type and the second command type including an erase command and a read command, and the first command type. In response to the combination of the second command type not including the erase command and the read command, the retry process is performed. Thus, in consideration of the characteristics of the
また、実施形態では、処理部113が、第1のコマンドの種類及び第2のコマンドの種類の組み合わせが消去コマンド及び読み出しコマンドを含み、且つNAND型フラッシュメモリ10へのアクセス進捗状況がNAND型フラッシュメモリ10のビジー状態満了前であることに応じて、リトライ処理を行う。処理部113は、第1のコマンドの種類及び第2のコマンドの種類の組み合わせが消去コマンド及び読み出しコマンドを含み、且つNAND型フラッシュメモリ10へのアクセス進捗状況がNAND型フラッシュメモリ10のビジー状態満了後であることに応じて、継続処理を行う。これにより、アクセス進捗状況と第1のコマンドの種類及び第2のコマンドの種類の組み合わせとの両方を考慮して、NAND型フラッシュメモリ10の内部状態が棄損されない場合に、第1のコマンドを中断時の処理から継続させることができる。
In the embodiment, the processing unit 113 includes a combination of the first command type and the second command type that includes an erase command and a read command, and the access progress status to the
なお、上記の実施形態では、書き込みコマンドのコマンドシーケンスにおいて、アクセス処理(tProg)の完了後にステータスリード命令(Cmd70−StatusOut)を行う場合について例示している(図5(b)参照)が、ステータスリード命令は、ステータポーリング命令として、アクセス処理中から開始され繰り返し行われてもよい。 In the above embodiment, the case where the status read command (Cmd70-StatusOut) is performed after the completion of the access process (tProg) in the command sequence of the write command is illustrated (see FIG. 5B). The read command may be repeated as a status polling command, starting from the access process.
同様に、消去コマンドのコマンドシーケンスにおいて、アクセス処理(tBERASE)の完了後にステータスリード命令(Cmd70−StatusOut)を行う場合について例示している(図6(b)参照)が、ステータスリード命令は、ステータポーリング命令として、アクセス処理中から開始され繰り返し行われてもよい。 Similarly, in the command sequence of the erase command, a case where a status read command (Cmd70-StatusOut) is performed after the completion of the access process (tBERASE) is illustrated (see FIG. 6B). As a polling instruction, it may be started repeatedly during access processing.
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。 Although several embodiments of the present invention have been described, these embodiments are presented by way of example and are not intended to limit the scope of the invention. These novel embodiments can be implemented in various other forms, and various omissions, replacements, and changes can be made without departing from the scope of the invention. These embodiments and modifications thereof are included in the scope and gist of the invention, and are included in the invention described in the claims and the equivalents thereof.
2 ATA I/F、4 ドライブ制御回路、10 NAND型フラッシュメモリ、11 メモリセルアレイ、12 ページバッファ、13 データキャッシュ、14 ステータスレジスタ、15 制御回路、20 RAM、100 メモリシステム、101 データアクセス用バス、102 回路制御用バス、104 プロセッサ、105 ブートROM、106 ROMコントローラ、110 NANDコントローラ、111 優先度低のコマンドキュー、112 優先度高のコマンドキュー、113 処理部、113a キュー切り替え部、113b コマンドシーケンス発行部、114 RAMコントローラ、115 SRAM、116 SRAMコントローラ、117 ATAコントローラ。 2 ATA I / F, 4 drive control circuit, 10 NAND flash memory, 11 memory cell array, 12 page buffer, 13 data cache, 14 status register, 15 control circuit, 20 RAM, 100 memory system, 101 data access bus, 102 circuit control bus, 104 processor, 105 boot ROM, 106 ROM controller, 110 NAND controller, 111 low priority command queue, 112 high priority command queue, 113 processing unit, 113a queue switching unit, 113b command sequence issue Part, 114 RAM controller, 115 SRAM, 116 SRAM controller, 117 ATA controller.
Claims (10)
前記不揮発性半導体メモリを制御する制御部と、
を備え、
前記制御部は、
第1のコマンドキューと、
前記第1のコマンドキューより高い優先度を有する第2のコマンドキューと、
前記第1のコマンドキュー及び前記第2のコマンドキューのいずれかのコマンドキューを選択し、選択されたコマンドキューに格納されたコマンドを実行させ前記不揮発性半導体メモリへのアクセス処理を行う処理部であって、前記第1のコマンドキューに格納された第1のコマンドの実行中に前記第2のコマンドキューに第2のコマンドが格納された場合、前記第2のコマンドが前記第2のコマンドキューに格納されたタイミングにおける前記第1のコマンドによる前記不揮発性半導体メモリへのアクセス進捗状況に応じて、前記第1のコマンドの実行を中断して前記第2のコマンドを実行させる中断処理と前記第1のコマンドの実行を完了させる完了処理とのいずれかを行う処理部と、
を有する
ことを特徴とするメモリシステム。 Non-volatile semiconductor memory;
A control unit for controlling the nonvolatile semiconductor memory;
With
The controller is
A first command queue;
A second command queue having a higher priority than the first command queue;
A processing unit that selects any one of the first command queue and the second command queue, executes a command stored in the selected command queue, and performs access processing to the nonvolatile semiconductor memory. If the second command is stored in the second command queue during execution of the first command stored in the first command queue, the second command is stored in the second command queue. And an interrupt process for interrupting execution of the first command and executing the second command in accordance with the progress of access to the nonvolatile semiconductor memory by the first command at the timing stored in A processing unit that performs any one of a completion process for completing the execution of one command;
A memory system comprising:
ことを特徴とする請求項1に記載のメモリシステム。 The processing unit performs either the interruption process or the completion process depending on the progress of access to the nonvolatile semiconductor memory accompanying the execution of the first command and the type of the first command. The memory system according to claim 1, wherein the memory system is performed.
ことを特徴とする請求項2に記載のメモリシステム。 The processing unit performs the interruption process in response to the first command being an erase command or a read command, and performs the completion process in response to the first command being a write command. The memory system according to claim 2.
ことを特徴とする請求項3に記載のメモリシステム。 The processing unit performs the interruption process when the first command is a write command and the progress of access to the nonvolatile semiconductor memory is before the busy state of the nonvolatile semiconductor memory is started. The completion processing is performed in response to the first command being a write command and the progress of access to the nonvolatile semiconductor memory being after the busy state of the nonvolatile semiconductor memory is started. The memory system according to claim 3.
ことを特徴とする請求項1から4のいずれか1項に記載のメモリシステム。 5. The method according to claim 1, wherein the processing unit starts executing the second command after the execution of the first command is completed by the completion processing. 6. Memory system.
ことを特徴とする請求項1から4のいずれか1項に記載のメモリシステム。 After the execution of the first command is interrupted by the interruption process and the execution of the second command is completed, the processing unit applies the first command to the nonvolatile semiconductor memory at the interruption timing. According to an access progress situation, either the continuation process for continuing the execution of the first command from the process at the time of interruption or the retry process for re-executing the execution of the first command from the first process is performed. The memory system according to any one of claims 1 to 4.
ことを特徴とする請求項6に記載のメモリシステム。 The processing unit performs the retry process in response to the progress of access to the non-volatile semiconductor memory being before the busy state of the non-volatile semiconductor memory expires, and the progress of access to the non-volatile semiconductor memory is The memory system according to claim 6, wherein the continuation process is performed in response to the expiration of the busy state of the nonvolatile semiconductor memory.
ことを特徴とする請求項6に記載のメモリシステム。 The processing unit, according to the progress of access to the nonvolatile semiconductor memory by the first command at the interrupted timing, and a combination of the type of the first command and the type of the second command, The memory system according to claim 6, wherein either the continuation process or the retry process is performed.
ことを特徴とする請求項8に記載のメモリシステム。 The processing unit performs the continuation process in response to the combination including an erase command and a read command, and performs the retry process in response to the combination not including an erase command and a read command. The memory system according to claim 8.
ことを特徴とする請求項9に記載のメモリシステム。 The processing unit performs the retry process when the combination includes an erase command and a read command and the progress of access to the nonvolatile semiconductor memory is before the busy state of the nonvolatile semiconductor memory expires. The continuation processing is performed when the combination includes an erase command and a read command, and the progress of access to the nonvolatile semiconductor memory is after the busy state of the nonvolatile semiconductor memory has expired. The memory system according to claim 9.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012068367A JP2013200692A (en) | 2012-03-23 | 2012-03-23 | Memory system |
US13/600,578 US8996782B2 (en) | 2012-03-23 | 2012-08-31 | Memory system and bank interleaving method |
US14/641,930 US9304691B2 (en) | 2012-03-23 | 2015-03-09 | Memory system and bank interleaving method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012068367A JP2013200692A (en) | 2012-03-23 | 2012-03-23 | Memory system |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013200692A true JP2013200692A (en) | 2013-10-03 |
Family
ID=49520896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012068367A Pending JP2013200692A (en) | 2012-03-23 | 2012-03-23 | Memory system |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2013200692A (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016046970A1 (en) * | 2014-09-26 | 2016-03-31 | 株式会社日立製作所 | Storage device |
WO2017077624A1 (en) * | 2015-11-05 | 2017-05-11 | 株式会社日立製作所 | Nonvolatile memory device, and storage device having nonvolatile memory device |
JP2018101301A (en) * | 2016-12-20 | 2018-06-28 | 株式会社ソニー・インタラクティブエンタテインメント | Information processing apparatus and memory access method |
US11494082B2 (en) | 2018-03-19 | 2022-11-08 | Kioxia Corporation | Memory system |
-
2012
- 2012-03-23 JP JP2012068367A patent/JP2013200692A/en active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016046970A1 (en) * | 2014-09-26 | 2016-03-31 | 株式会社日立製作所 | Storage device |
WO2017077624A1 (en) * | 2015-11-05 | 2017-05-11 | 株式会社日立製作所 | Nonvolatile memory device, and storage device having nonvolatile memory device |
US10310770B2 (en) | 2015-11-05 | 2019-06-04 | Hitachi, Ltd. | Nonvolatile memory device, and storage apparatus having nonvolatile memory device |
JP2018101301A (en) * | 2016-12-20 | 2018-06-28 | 株式会社ソニー・インタラクティブエンタテインメント | Information processing apparatus and memory access method |
WO2018116937A1 (en) * | 2016-12-20 | 2018-06-28 | 株式会社ソニー・インタラクティブエンタテインメント | Information processing device and memory access method |
US11281572B2 (en) | 2016-12-20 | 2022-03-22 | Sony Interactive Entertainment Inc. | Information processing apparatus and memory access method |
US11494082B2 (en) | 2018-03-19 | 2022-11-08 | Kioxia Corporation | Memory system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6250613B2 (en) | Resource allocation and release for power management in equipment | |
US9304691B2 (en) | Memory system and bank interleaving method | |
JP4844639B2 (en) | MEMORY CONTROLLER, FLASH MEMORY SYSTEM HAVING MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD | |
US11669272B2 (en) | Predictive data transfer based on availability of media units in memory sub-systems | |
KR101562973B1 (en) | Memory apparatus and method for operating thereof | |
US11487666B2 (en) | Timed data transfer between a host system and a memory sub-system | |
US8392649B2 (en) | Memory storage device, controller, and method for responding to host write commands triggering data movement | |
JP4788528B2 (en) | Disk control device, disk control method, and disk control program | |
US11709632B2 (en) | Input/output size control between a host system and a memory sub-system | |
CN113785278A (en) | Dynamic data placement for avoiding conflicts between concurrent write streams | |
US11269552B2 (en) | Multi-pass data programming in a memory sub-system having multiple dies and planes | |
US11520487B2 (en) | Managing write operations during a power loss | |
JP2011070365A (en) | Memory system | |
JP2013200692A (en) | Memory system | |
US10929061B2 (en) | Memory system and memory control method | |
CN113424165A (en) | Interruption of programming operations at a memory subsystem | |
KR20100102283A (en) | Flash memory apparatus and method of controlling the same | |
US20140218767A1 (en) | Image forming apparatus, memory management method for image forming apparatus, and program | |
US20240036768A1 (en) | Partial Execution of a Write Command from a Host System | |
EP3834072B1 (en) | Controller command scheduling in a memory system to increase command bus utilization | |
US10872008B2 (en) | Data recovery after storage failure in a memory system | |
CN112306401A (en) | Storage device and data storage method | |
US20230376223A1 (en) | Memory system and controlling method |