JP5687649B2 - 半導体記憶装置の制御方法 - Google Patents

半導体記憶装置の制御方法 Download PDF

Info

Publication number
JP5687649B2
JP5687649B2 JP2012060698A JP2012060698A JP5687649B2 JP 5687649 B2 JP5687649 B2 JP 5687649B2 JP 2012060698 A JP2012060698 A JP 2012060698A JP 2012060698 A JP2012060698 A JP 2012060698A JP 5687649 B2 JP5687649 B2 JP 5687649B2
Authority
JP
Japan
Prior art keywords
block
data
condition
mode
satisfied
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
Application number
JP2012060698A
Other languages
English (en)
Other versions
JP2013196161A (ja
Inventor
矢野 浩邦
浩邦 矢野
三徳 田所
三徳 田所
明 澤岡
明 澤岡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2012060698A priority Critical patent/JP5687649B2/ja
Priority to US13/599,087 priority patent/US9251055B2/en
Publication of JP2013196161A publication Critical patent/JP2013196161A/ja
Application granted granted Critical
Publication of JP5687649B2 publication Critical patent/JP5687649B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明の実施形態は、不揮発性半導体メモリを備えた半導体記憶装置の制御方法に関する。
NANDフラッシュメモリの記録方式として多値記録(MLC:Multi −Level Cell)方式と、二値記録(SLC:Single−Level Cell)方式とがある。SLC方式(以下、SLCモードという)では、記録単位である1つのセルに1ビットが記録されるのに対し、MLC方式(以下、MLCモードという)では、1つのセルにNビット(N>1)を記録することができる。したがって、例えば2ビット記録のMLCフラッシュメモリでは、1つのセルが4値を表すことができ、3ビット記録のMLCフラッシュメモリでは、1つのセルが8値を表すことができる。
このようにMLCモードでの記録は、SLCモードでの記録よりも体積あたりの記録容量を大きくでき、また、記録容量あたりのコストを抑えられるというメリットがある。一方、SLCモードでの記録は、MLCモードでの記録に比べ、書込みや読出しのアクセス時間が短く、また、信頼性が高いというメリットがある。
特許第4533968号 特許第4643667号
本発明の一つの実施形態は、シーケンシャルライトであるか否かを簡単かつ軽量なアルゴリズムを用いて判定し、この判定結果に応じて多値記録または二値記録を行うことにより、基本性能を低下させることなく書き込み効率のよい書き込み動作を実現する半導体記憶装置の制御方法を提供することを目的とする。
本発明の一つの実施形態によれば、半導体記憶装置は、データ消去の単位であるブロックを複数個有する。実施形態によれば、前記半導体記憶装置外部からデータ及びアドレスを含むライト要求を複数受信し、前記ライト要求に含まれるアドレスに基づき、アドレスが連続するライト要求を所定回数以上連続して受信するという第1の条件が成立するか否かを判定し、前記第1の条件が成立する場合は、前記ブロックを多値モードで使用すると決定し、当該多値モードのブロックにデータを書き込み、前記第1の条件が成立しない場合は、前記ブロックを二値モードで使用すると決定し、当該二値モードのブロックにデータを書き込む。
図1は、SSDの内部構成例を示すブロック図である。 図2は、ブロック管理を概念的に示す図である。 図3は、コンパクションの処理手順を示すフローチャートである。 図4は、第1の実施形態のシーケンシャル書き込みを判定する一部手順を示すフローチャートである。 図5は、シーケンシャル書き込みを判定する残りの手順を示すフローチャートである。 図6は、判定時点と記録モードの切り替えタイミングとの関係を示す概念図である。 図7は、第2の実施形態のシーケンシャル書き込みを判定する一部手順を示すフローチャートである。 図8は、第3の実施形態のシーケンシャル書き込みを判定する一部手順を示すフローチャートである。
SSD(Solid State Drive)において、データの消去単位(ブロック)と、データの管理単位が異なる場合、フラッシュメモリの書き換えが進むと、無効な(最新ではない)データによって、ブロックは穴あき状態になる。このような穴あき状態のブロックが増えると、実質的に使用可能なブロックが少なくなり、フラッシュメモリの記憶領域を有効利用できなくなる。そこで、例えば、フラッシュメモリのフリーブロック(有効データを含まない用途未割り当てのブロック)が所定の閾値より少なくなった場合、有効な最新のデータを集めて、違うブロックに書き直すコンパクションなどのフラッシュメモリの整理を実行し、用途未割り当てのフリーブロックを確保する。
コンパクションが発生すると、ホストからのデータを書き込んだり、ホストから指定されるデータを読み出したりするSSD本来の処理に影響を与えてSSDの性能が低下する。このためコンパクションは、できるだけ発生し難くするほうが望ましい。
SLCモードおよびMLCモードでの記録が可能なSSDにおいて、ホストからのデータをSLCモードで書きこむと、高速に書き込みができるが、コンパクションが発生すると、ホストからのデータの書き込みと、コンパクションでの書き込みが並行して発生し、SSDの書き込み速度が低下したりする場合がある。
通常のPCユーザの用途においては、SSDへの書き込みアドレス範囲は限定されるため、ほとんどの書き込みがSLCモードでの記録で完結し、コンパクションが発生しないため、SSDの書き込み速度が低下したりすることはない。
一方、SSDのフラッシュメモリの全面に対するシーケンシャルライト(LBAアドレスが基本的には連続する書き込み)を実施するような用途の場合、ホストからのデータをSLCモードでフラッシュメモリに書き込んでいると、4値のMLCモードが採用されている場合、フラッシュメモリのMLC換算の容量のおよそ半分まで書き込んだところで、ブロックを使い切る。その後は、ホストからの書き込みに並行して、すでに書き込まれたSLCモードのブロックのデータをMLCモードで書き直す、コンパクション処理が動作し続けることになる。
この時、ホストから書き込まれるデータ量が1だとすると、SLCモードで書くデータ量が2(MLCモードの半分)で、コンパクション処理でMLCモードで書き直すデータ量が1で、トータル3のデータ書き込みがフラッシュメモリに発生し、書き込み効率=3となる。なお、書き込み効率とは、所定期間内における、ホストから書き込んだデータ量に対する、ブロックの消去量の統計値のことであり、小さいほどフラッシュメモリの消耗度が小さい。
また、産業機器(たとえばデジタルビデオレコーダ)などのリアルタイム性が要求される用途では、コンパクションの有無によって性能が変動するドライブは使いづらいという問題がある。
そこで、本実施形態では、シーケンシャルライトのような書き込みパターンを予測し、シーケンシャルライトと予測された場合には、MLCモードでデータを書き込み、コンパクションを発生しにくくする。書き込みパターンの予測処理が複雑であると、その予測処理がオーバヘッドとなり、基本性能が低下してしまうため、本実施形態では、経験則に基づく、簡単かつ軽量な予測方法を用いる。シーケンシャルライトの他に、短期的にはドライブの狭いアドレス範囲の書き込みが複数回実行されて、アクセスされるアドレス範囲が順次移動されて、長期的にはドライブ全面にわたって書き込みをするようなアクセスパターンにおいても、MLCモードで書き込めば、コンパクションが発生しにくくなるため、本実施形態では、このようなパターンも予想できるようにする。
以下に添付図面を参照して、実施形態にかかる半導体記憶装置の制御方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、SSD(Solid State Drive)100の構成例を示すブロック図である。SSD100は、ATAインタフェース(ATA I/F)などのホストインタフェース2を介してパーソナルコンピュータあるいはCPUなどのホスト装置(以下、ホストと略す)1と接続され、ホスト1の外部記憶装置として機能する。ホスト1は、例えば、パーソナルコンピュータ、スチルカメラ、ビデオカメラなどの撮像装置のCPUである。SSD100は、ホストインタフェース2と、不揮発性半導体メモリとしてのNAND型フラッシュメモリ(以下、NANDと略す)10と、NAND10よりも高速アクセスが可能な半導体メモリであるRAM20と、コントローラ30とを備える。
NAND10は、ホスト1によって指定されたユーザデータを記憶したり、RAM20で管理される管理情報をバックアップ記憶したりする。NAND10は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有する。NAND10は、複数のメモリチップによって構成され、各メモリチップは、データ消去の単位であるブロックを複数配列して構成される。また、NAND10では、ページごとにデータの書き込み及びデータの読み出しが行われる。ブロックは、複数のページによって構成されている。NAND10は、データ書込みの動作モードを、SLCモードとMLCモードのうちの何れかに切り替え可能なフラッシュメモリである。すなわち、ブロックに対しSLCモードで書き込むことも可能であるし、MLCモードで書き込むことも可能である。
RAM20は、ホスト1からのデータをNAND10にライトする際に一時的にデータを保存するためのライトバッファ25としての記憶領域と、NAND10で不揮発記憶される管理情報を記憶、更新するための記憶領域と、NAND10からリードされたデータを一時記憶するなどのための作業領域とを有する。
ホスト1は、SSD100に対しデータをライトする際には、ホストインタフェース2を介して論理アドレスとしてのLBA(Logical Block Addressing)と、データサイズとを含むライトコマンドとライトデータとをSSD100に入力する。LBAは、セクタ(サイズ:例えば512B)に対して0からの通し番号をつけた論理アドレスであり、データの先頭アドレスを示している。データサイズは、データのセクタ数を示している。本実施の形態においては、ライトバッファ25,NAND10でデータを管理する単位として、セクタサイズよりも大きく、物理ブロックサイズよりも小さい管理単位を使用する。管理単位がブロックサイズと異なるので、NAND10の書き換えが進むと、前述したコンパクションが必要となる。
コントローラ30は、本実施形態に関係する構成要素として、コマンド判定部31、カウンタ32、SLC/MLC判定部33、ブロック供給部34,整理部35、ライト制御部36を備える。
コマンド判定部31は、ホスト1から受信したコマンドを解析し、その解析結果に基づいて、カウンタ32の更新を行う。
カウンタ32は、コマンド判定部31によってその計数値が更新されるもので、このカウント値を使用してSLCモードを選択するかMLCモードを選択するかの切り替えが行われる。
SLC/MLC判定部33は、カウンタ32のカウント値を閾値T1と比較し、カウント値が閾値T1以上である場合は、MLCモードを選択し、カウント値が閾値T1未満である場合は、SLCモードを選択する。
ブロック供給部34は、用途未割り当てのフリーブロックを整理部35、ライト制御部36に供給する。ブロック供給部34は、フリーブロックをライト制御部36に供給する際には、SLC/MLC判定部33の判定結果とともにフリーブロックをライト制御部36に供給する。
整理部35は、NAND10でのデータ整理(コンパクション)を実行する。すなわち、NAND10のフリーブロックが所定の閾値より少なくなった場合、ブロック内の有効データを集めて別のブロックに書き直すコンパクションを実行し、フリーブロックを確保する。整理部35は、最初にSLCモードのブロックをコンパクション元のブロックとして、コンパクション先のブロックにMLCモードでの書き込みを行うコンパクションを行い、フリーブロックが十分に確保できなかった場合に、次に、MLCモードのブロックをコンパクション元のブロックとして、コンパクション先のブロックにMLCモードでの書き込みを行うコンパクションを行なう。コンパクション先のブロックは、ブロック供給部34から供給されるフリーブロックを使用する。整理部35は、コンパクションに伴って、データの論理アドレス(LBA)とNAND10の記録位置を示す物理アドレスとの対応を管理する管理情報を更新する。
ライト制御部36は、ホスト1からのライトデータを一旦ライトバッファ25にバッファリングした後、ライトデータをNAND10に書き込む。ライト制御部36は、NAND10へのデータ書込みの際、ブロック供給部34から供給されるフリーブロックを使用し、かつ指示された記録モード(SLCモードおよびMLCモードの何れか)に従って、データの書き込みを行う。ライト制御部36は、NAND10への書き込みに伴い、書き込みデータの論理アドレス(LBA)とNAND10の記録位置を示す物理アドレスとの対応を管理する管理情報を更新する。
図2は、SSD100でのブロック管理を概念的に示す図である。ブロックは、内部に有効データを含むアクティブブロックと、内部に有効データを含まない、用途未割り当てのフリーブロックに分類される。例えば、同じLBAのデータを上書きする場合は、つぎのような処理が行われる。論理アドレスA1にブロックサイズの有効なデータが保存されており、記憶領域としてはブロックB1が使用されていたとする。ホスト1から論理アドレスA1のブロックサイズの更新データを上書きするコマンドを受信した場合、フリーブロック(ブロックB2とする)を1個確保し、そのフリーブロックにホスト1から受信したデータを書き込む。その後、論理アドレスA1とブロックB2を関係付ける。その結果、ブロックB2はアクティブブロックABになり、ブロックB1に保存されたデータは無効になるためブロックB1はフリーブロックFBとなる。
このように、SSD100では、同じ論理アドレスA1のデータであっても、実際の記録領域として使用されるブロックは書込みの度に変化する。なお、ブロックサイズの更新データ書き込みでは、必ず書き込み先ブロックが変化するが、ブロックサイズ未満の更新データ書き込みでは、同じブロックに更新データが書き込まれることもある。例えばブロックサイズ未満のページデータが更新される場合、当該ブロック内において同じ論理アドレスの旧ページデータが無効化され、新たに書き込まれた最新のページデータが有効ページとして管理される。ブロック内の全データが無効化されると、当該ブロックはフリーブロックFBとして解放される。
ホスト1からのデータは、書き込み先ブロック(フリーブロック)に書き込まれる。この書き込み先ブロックへの書き込みの際、SLC/MLC判定部33の判定結果に基づき、SLCモードおよびMLCモードの何れかで書き込みが行われる。SLCモードで書き込まれたブロックはSLCアクティブブロックとなり、MLCモードで書き込まれたブロックはMLCアクティブブロックとなる。このように、NAND10では、SLCアクティブブロックとMLCアクティブブロックとが混在している。アクティブブロックは、NAND10の書き換えが進むと、フリーブロックとして解放されたり、コンパクションでの書き込み元のブロックを経てフリーブロックとして解放されたりする。フリーブロックは、その後、ホスト1からのユーザデータをライトするための書き込み先ブロックや、コンパクションにおいてデータをライトするためのコンパクション先ブロックとして利用される。
図3は、整理部35が行うコンパクション処理手順を示すフローチャートである。整理部35は、フリーブロック(FB)の個数が閾値Kを下回ったと判断すると(ステップS100)、まずSLCアクティブブロックをコンパクション元のブロックとし、コンパクション元のブロックから有効データを集め、集めた有効データをコンパクション先のフリーブロックにMLCモードでの書き込みを行う第1のコンパクションを実行する(ステップS110)。この第1のコンパクションによってフリーブロックの個数が閾値K以上となったと判断すると(ステップS120)、整理部35はこの時点でNAND整理を終了する。しかし、第1のコンパクションによってフリーブロックの個数が閾値K以上とならなかった場合、整理部35は、MLCアクティブブロックをコンパクション元のブロックとし、コンパクション元のブロックから有効データを集め、集めた有効データをコンパクション先のフリーブロックにMLCモードでの書き込みを行う第2のコンパクションを実行する(ステップS130)。整理部35は、このNAND整理に伴って、データの論理アドレス(LBA)とNAND10の記録位置を示す物理アドレスとの対応を管理する管理情報を更新する。
図4は、第1の実施形態でのコントローラ30のコマンド判定部31の動作手順を示すフローチャートである。第1の実施形態では、連続書き込みであることを、アドレスの連続性を見て判定する。すなわち、アドレスが連続するライト要求が所定回数以上連続すれば、その後も連続書き込みが続くと予測し、MLCモードでデータをNAND10に書き込む。
SSD100が起動されると(ステップS200)、コマンド判定部31は、カウンタ変数countを0に初期化するとともに、終端アドレス変数last_lbaを無効値(例えば−1)に初期化する(ステップS210)。カウンタ変数countはカウンタ32として示しており、カウンタ32のカウント値によってアドレスの連続性を判定する。終端アドレス変数last_lbaは、ホスト1からの前回のライトコマンドが指定する終端アドレスに続く次アドレス(終端アドレス+1のアドレス)を示している。終端アドレス変数last_lbaに代入されるアドレスをこの後、終端+1アドレスと呼称する。
ホスト1からライトコマンドが入力されると(ステップS220)、コマンド判定部31は、コマンドを解釈する。ライトコマンドには、前述したように、ライトデータの先頭アドレスを示すアドレス情報ADと、データサイズを示すセクタ数SZが含まれている。コマンド判定部31は、変数lbaにライトコマンドのアドレス情報ADを代入し、変数sector_countにセクタ数SZを代入する(ステップS230)。
コマンド判定部31は、変数lbaと変数last_lbaを比較し(ステップS240)、これらが不一致の場合は、変数countを0にクリアし(ステップS250)、これらが一致している場合は、変数count、すなわちカウンタ32を+1する(ステップS260)。さらに、コマンド判定部31は、変数lbaに変数sector_countを加えた値、すなわち今回のライトコマンドで指定されるデータの終端アドレスに続く次アドレスである終端+1アドレスを変数last_lbaに代入する(ステップS270)。このような処理を、SSD100がシャットダウンされるまで(ステップS280)、繰り返し実行する。
ライトコマンドが最初に受信された段階では、変数last_lbaに無効値が設定されているので、ステップS240は不一致となり、変数countを0にクリアされて(ステップS250)、今回のライトコマンドの終端アドレスに続く次アドレスである終端+1アドレスが変数last_lbaに設定される(ステップS270)。したがって、この後、連続するアドレスを含むライトコマンドがホスト1から入力された場合は、ステップS240の比較が一致となり、変数countが順次カウントアップされていく。一方、不連続のアドレスを含むライトコマンドがホスト1から入力された場合は、ステップS240の比較が不一致となり、変数countが0にクリアされる。
図5は、SLC/MLC判定部33の動作手順を示すフローチャートである。SLC/MLC判定部33は、変数countの値、すなわちカウンタ32のカウント値を閾値T1と比較し(ステップS300)、カウンタ32のカウント値が閾値T1以上の場合は、MLCモードを選択し(ステップS310)、カウンタ32のカウント値が閾値T1未満の場合は、SLCモードを選択する(ステップS320)。別言すれば、SLC/MLC判定部33は、アドレスが連続するライト要求が閾値回数T1以上連続すれば、MLCモードを選択する。SLC/MLC判定部33は、この選択した記録モードをブロック供給部34に通知する。ブロック供給部34は、SLC/MLC判定部33の選択結果である記録モードと、データを書き込むべきフリーブロックを示すブロック番号をライト制御部36に通知する。ライト制御部36は、ブロック番号を通知されたフリーブロックを書き込み先ブロックとして用い、この書き込み先ブロックに対し、通知された記録モード(MLCモードまはたSLCモード)による書き込みを行う。
これにより、アドレスが一定サイズ以上連続している場合は、MLCモードによる書き込みが行われ、それ以外の場合は、SLCモードによる書き込みが行われることになる。
ただし、図6に示すように、ブロック途中での記録モードの切替えは行わない。例えば、あるブロックA1に対し、SLCモードでデータを書き込んでいる途中の段階で、記録モードをSLCモードからMLCモードに切り替える判定結果がでた場合でも、ブロックA1に対しては、SLCモードでデータを書き続ける。すなわち、ブロックへのデータの書き込み中に、記録モードをSLCモードからMLCモードに切り替える判定結果がでた場合、当該ブロックの書き込みが終了するまでは、記録モードの切り替えを行わない。そして、書き込み先ブロックが次のブロックA2に代わった段階で、記録モードをSLCモードからMLCモードに切り替えるようにする。MLCモードからSLCモードへの切替えの際も同様であり、書き込み先ブロックが代わった段階で、記録モードの変更を行う。
このように第1の実施形態においては、ホストからの書き込みの際、アドレスが連続するライト要求が閾値回数T1以上連続していれば、MLCモードによる書き込みを行い、そうでない場合は、SLCモードによる書き込みを行うこととしており、シーケンシャルライトのような書き込みパターンが簡単かつ軽量な予測方法を用いて予測されることになり、また、コンパクションが発生し難くなり、SSDの書き込み速度の低下が抑制され、基本性能を低下させることなく書き込み効率のよい書き込み動作を実現することが可能となる。
(第2の実施形態)
第2の実施形態においては、アドレスの連続性を判定する際、所定の範囲内のアドレスのスキップ(飛び)を許容し、所定の範囲内のアドレスの飛びであれば、アドレスは連続していると判定する。すなわち、今回のライトコマンドと次回のライトコマンド間において、アドレスが完全に連続していなくても、所定の範囲内のアドレスの飛びであれば、アドレスは連続していると判定する。図7は、第2の実施形態のコマンド判定部31の動作手順を示すフローチャートである。図7においては、図4のフローチャートにステップS231、S232を追加している。図7において、図4と同じ処理を行うステップに関しては、同一ステップ番号を付している。
SSD100が起動されると(ステップS200)、コマンド判定部31は、カウンタ変数countを0に初期化するとともに、終端アドレス変数last_lbaを無効値(例えば−1)に初期化する(ステップS210)。ホスト1からライトコマンドが入力されると(ステップS220)、コマンド判定部31は、コマンドを解釈し、変数lbaにライトコマンドのアドレス情報ADを代入し、変数sector_countにセクタ数SZを代入する(ステップS230)。
コマンド判定部31は、変数lbaと変数last_lbaの差分の絶対値δを計算する(ステップS231)。すなわち、このステップS231で、前回のライトコマンドで指定されるデータに関する終端アドレスに続く次アドレスである終端+1アドレスと、今回のライトコマンドで指定されるデータに関する先頭アドレスとの差分を導出している。
つぎに、コマンド判定部31は、差分δが閾値T2以上あるか否かを判定し、差分δが閾値T2以上ある場合はアドレスの連続性がないものと判断し、変数countを0にクリアし(ステップS250)、差分δが閾値T2未満である場合は、アドレスの連続性があるものと判断し、変数count、すなわちカウンタ32を+1する(ステップS260)。さらに、コマンド判定部31は、変数lbaに変数sector_countを加えた値、すなわち今回のライトコマンドで指定されるデータの終端アドレスに続く次アドレスである終端+1アドレスを変数last_lbaに代入する(ステップS270)。このような処理を、SSD100がシャットダウンされるまで(ステップS280)、繰り返し実行する。
SLC/MLC判定部33は、図5と同様にして、記録モード(SLCモード、MLCモード)を判定する。すなわち、SLC/MLC判定部33は、変数countの値、すなわちカウンタ32のカウント値を閾値T1と比較し(ステップS300)、カウンタ32のカウント値が閾値T1以上の場合は、MLCモードを選択し(ステップS310)、カウンタ32のカウント値が閾値T1未満の場合は、SLCモードを選択する(ステップS320)。以下、第1の実施形態と同様に動作する。なお、第1の実施形態は、第2の実施形態のステップS232において、δ=0であるか否かを判定することに、相当する。
このように第2の実施形態においては、アドレスの連続性を判定する際、所定の範囲内のアドレスのスキップ(飛び)を許容し、所定の範囲内のアドレスの飛びであれば、アドレスは連続していると判定するようにしており、シーケンシャルライトに属する書き込みパターンが簡単かつ軽量な予測方法を用いて予測されることになり、また、コンパクションが発生し難くなり、SSDの書き込み速度の低下が抑制され、基本性能を低下させることなく書き込み効率のよい書き込み動作を実現することが可能となる。
(第3の実施形態)
第3の実施形態においては、シーケンシャル書き込みでよく使われるアクセスサイズ(セクタ数SZ)と、シーケンシャル書き込みでよく使われるアドレス(ライトコマンドに含まれるアドレス情報AD)のアラインメントとを、予測の判定材料として追加し、予測の信頼性を向上させている。。図8は、第3の実施形態のコマンド判定部31の動作手順を示すフローチャートである。図8では、図7に示す第2の実施形態の処理手順に、アクセスサイズおよびアドレスのアライメントを予測材料として追加している。図8においては、図7のフローチャートにステップS233、S234を追加している。図8において、図7と同じ処理を行うステップに関しては、同一ステップ番号を付している。
SSD100が起動されると(ステップS200)、コマンド判定部31は、カウンタ変数countを0に初期化するとともに、終端アドレス変数last_lbaを無効値(例えば−1)に初期化する(ステップS210)。ホスト1からライトコマンドが入力されると(ステップS220)、コマンド判定部31は、コマンドを解釈し、変数lbaにライトコマンドのアドレス情報ADを代入し、変数sector_countにセクタ数SZを代入する(ステップS230)。
コマンド判定部31は、変数lbaと変数last_lbaの差分の絶対値δを計算する(ステップS231)。つぎに、コマンド判定部31は、差分δが閾値T2以上あるか否かを判定し、差分δが閾値T2以上ある場合はアドレスの連続性がないものと判断し、変数countを0にクリアする(ステップS250)。
差分δが閾値T2未満である場合、次に、コマンド判定部31は、変数sector_countが所定の値S1に一致するか否かを判定する(ステップS233)。値S1としては、シーケンシャル書き込みでよく使われるアクセスサイズとして、例えば、128KiBが採用される。コマンド判定部31は、変数sector_countが所定の値S1に一致しない場合は、シーケンシャル書き込みではないと判断し、変数countを0にクリアする(ステップS250)。
ステップS233の判断がYesの場合、次に、コマンド判定部31は、変数lbaを値S1で割った剰余が0であるか否かを判定し、剰余が0でない場合、シーケンシャル書き込みではないと判断し、変数countを0にクリアする(ステップS250)。コマンド判定部31は、剰余が0である場合、すなわちステップS232、ステップS233、ステップS234の条件が全て成立したときに、シーケンシャル書き込みであると判断し、変数count、すなわちカウンタ32を+1する(ステップS260)。さらに、コマンド判定部31は、変数lbaに変数sector_countを加えた値、すなわち今回のライトコマンドで指定されるデータの終端アドレスに続く次アドレスである終端+1アドレスを変数last_lbaに代入する(ステップS270)。このような処理を、SSD100がシャットダウンされるまで(ステップS280)、繰り返し実行する。
SLC/MLC判定部33は、図5と同様にして、記録モード(SLCモード、MLCモード)を判定する。すなわち、SLC/MLC判定部33は、変数countの値、すなわちカウンタ32のカウント値を閾値T1と比較し(ステップS300)、カウンタ32のカウント値が閾値T1以上の場合は、MLCモードを選択し(ステップS310)、カウンタ32のカウント値が閾値T1未満の場合は、SLCモードを選択する(ステップS320)。以下、第1の実施形態と同様に動作する。
なお、図8では、アクセスサイズ(ステップS233)およびアドレスのアライメント(ステップS234)を予測の判断材料として第2の実施形態の処理手順に追加したが、アクセスサイズ(ステップS233)およびアドレスのアライメント(ステップS234)の何れか一方を第2の実施形態の処理手順に追加することにしてもよい。また、第1の実施形態の処理手順に対し、アクセスサイズ(ステップS233)およびアドレスのアライメント(ステップS234)のうちの少なくとも一方を、予測の判断材料として追加するようにしてもよい。
このように第3の実施形態では、シーケンシャル書き込みでよく使われるアクセスサイズ、アドレスのアライメントの少なくとも一方を予測の判断材料として追加しているので、簡単な手法で、シーケンシャル書き込みを予測するときの信頼性を向上させることが可能となる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 ホスト、2 ホストインタフェース、10 NAND、20 RAM、25 ライトバッファ、30 コントローラ、31 コマンド判定部、32 カウンタ、33 SLC/MLC判定部、34 ブロック供給部、35 整理部、36 ライト制御部。

Claims (5)

  1. データ消去の単位であるブロックを複数個有する半導体記憶装置の制御方法であって、
    前記半導体記憶装置外部からデータ及びアドレスを含むライト要求を複数受信し、
    前記ライト要求に含まれるアドレスに基づき、アドレスが連続するライト要求を所定回数以上連続して受信するという第1の条件が成立するか否かを判定し、
    前記第1の条件が成立する場合は、前記ブロックを多値モードで使用すると決定し、当該多値モードのブロックにデータを書き込み、
    前記第1の条件が成立しない場合は、前記ブロックを二値モードで使用すると決定し、当該二値モードのブロックにデータを書き込み、
    前記ブロックへのデータの書き込み中に前記第1の条件が成立するか否かの判定結果が変化した場合であっても、当該ブロックの書き込みが終了するまでは、記録モードの切り替えを行わない
    ことを特徴とする半導体記憶装置の制御方法。
  2. 前記ライト要求に含まれるアドレスに基づき、データサイズが所定値に一致するライト要求を所定回数以上連続して受信するという第2の条件が成立するか否かを判定し、
    前記第1の条件および前記第2の条件が成立する場合は、前記ブロックを多値モードで使用すると決定し、当該多値モードのブロックにデータを書き込み、
    前記第1の条件または前記第2の条件が成立しない場合は、前記ブロックを二値モードで使用すると決定し、当該二値モードのブロックにデータを書き込む、
    ことを特徴とする請求項1に記載の半導体記憶装置の制御方法。
  3. 前記ライト要求に含まれるアドレスに基づき、先頭アドレスを所定のデータサイズで割った剰余が0であるライト要求を所定回数以上連続して受信するという第3の条件が成立するか否かを判定し、
    前記第1の条件および前記第3の条件が成立する場合は、前記ブロックを多値モードで使用すると決定し、当該多値モードのブロックにデータを書き込み、
    前記第1の条件または前記第3の条件が成立しない場合は、前記ブロックを二値モードで使用すると決定し、当該二値モードのブロックにデータを書き込む、
    ことを特徴とする請求項1に記載の半導体記憶装置の制御方法。
  4. データ消去の単位であるブロックを複数個有する半導体記憶装置の制御方法において、
    前記半導体記憶装置外部からデータ及びアドレスを含むライト要求を複数受信し、
    前記ライト要求に含まれるアドレスに基づき、前回のライト要求の終端アドレスと今回のライト要求の先頭アドレスとの差分が所定の閾値以内であるライト要求を所定回数以上連続して受信するという第4の条件が成立するか否かを判定し、
    前記第4の条件が成立する場合は、前記ブロックを多値モードで使用すると決定し、当該多値モードのブロックにデータを書き込み、
    前記第4の条件が成立しない場合は、前記ブロックを二値モードで使用すると決定し、当該二値モードのブロックにデータを書き込み、
    前記ライト要求に含まれるアドレスに基づき、データサイズが所定値に一致するライト要求を所定回数以上連続して受信するという第2の条件が成立するか否かをさらに判定し、
    前記第4の条件および前記第2の条件が成立する場合は、前記ブロックを多値モードで使用すると決定し、当該多値モードのブロックにデータを書き込み、
    前記第4の条件または前記第2の条件が成立しない場合は、前記ブロックを二値モードで使用すると決定し、当該二値モードのブロックにデータを書き込む、
    ことを特徴とする半導体記憶装置の制御方法。
  5. 前記ライト要求に含まれるアドレスに基づき、先頭アドレスを所定のデータサイズで割った剰余が0であるライト要求を所定回数以上連続して受信するという第3の条件が成立するか否かを判定し、
    前記第4の条件および前記第3の条件が成立する場合は、前記ブロックを多値モードで使用すると決定し、当該多値モードのブロックにデータを書き込み、
    前記第4の条件または前記第3の条件が成立しない場合は、前記ブロックを二値モードで使用すると決定し、当該二値モードのブロックにデータを書き込む、
    ことを特徴とする請求項に記載の半導体記憶装置の制御方法。
JP2012060698A 2012-02-23 2012-03-16 半導体記憶装置の制御方法 Expired - Fee Related JP5687649B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012060698A JP5687649B2 (ja) 2012-03-16 2012-03-16 半導体記憶装置の制御方法
US13/599,087 US9251055B2 (en) 2012-02-23 2012-08-30 Memory system and control method of memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012060698A JP5687649B2 (ja) 2012-03-16 2012-03-16 半導体記憶装置の制御方法

Publications (2)

Publication Number Publication Date
JP2013196161A JP2013196161A (ja) 2013-09-30
JP5687649B2 true JP5687649B2 (ja) 2015-03-18

Family

ID=49395078

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012060698A Expired - Fee Related JP5687649B2 (ja) 2012-02-23 2012-03-16 半導体記憶装置の制御方法

Country Status (1)

Country Link
JP (1) JP5687649B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11526436B2 (en) 2019-10-17 2022-12-13 Kioxia Corporation Memory system and garbage collection control method

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9612773B2 (en) 2013-11-21 2017-04-04 Samsung Electronics Co., Ltd. User device having a host flash translation layer (FTL), a method for transferring an erase count thereof, a method for transferring reprogram information thereof, and a method for transferring a page offset of an open block thereof
WO2016185868A1 (ja) * 2015-05-18 2016-11-24 ソニー株式会社 記憶装置、リーダライタ、アクセス制御システム、およびアクセス制御方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11176178A (ja) * 1997-12-15 1999-07-02 Sony Corp 不揮発性半導体記憶装置およびそれを用いたicメモリカード
KR100771521B1 (ko) * 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
JP2010198407A (ja) * 2009-02-26 2010-09-09 Sony Corp 情報処理装置、およびデータ記録制御方法、並びにプログラム
TW201120900A (en) * 2009-12-07 2011-06-16 Jmicron Technology Corp Method and control unit for performing storage management upon storage apparatus and related storage apparatus thereof
JP2011154547A (ja) * 2010-01-27 2011-08-11 Toshiba Corp メモリ管理装置及びメモリ管理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11526436B2 (en) 2019-10-17 2022-12-13 Kioxia Corporation Memory system and garbage collection control method
US11853204B2 (en) 2019-10-17 2023-12-26 Kioxia Corporation Memory system and garbage collection control method

Also Published As

Publication number Publication date
JP2013196161A (ja) 2013-09-30

Similar Documents

Publication Publication Date Title
US9251055B2 (en) Memory system and control method of memory system
US11893238B2 (en) Method of controlling nonvolatile semiconductor memory
US9229876B2 (en) Method and system for dynamic compression of address tables in a memory
JP4518951B2 (ja) 不揮発性記憶システムにおける自動損耗均等化
US9298534B2 (en) Memory system and constructing method of logical block
JP5674999B2 (ja) Slc/mlc混成メモリのブロック管理構成
US8103820B2 (en) Wear leveling method and controller using the same
JP5728672B2 (ja) ハイブリッドメモリ管理
KR100974954B1 (ko) 플래시 메모리를 이용한 저장장치에서의 읽기 웨어 레벨링방법
TWI425357B (zh) 用來進行區塊管理之方法以及記憶裝置及控制器
US8335887B2 (en) Solid state storage systems and methods for flexibly controlling wear leveling
US11216368B2 (en) Memory system for garbage collection using page offsets, invalid offset ratio, sequential ratio, and logical address prediction
JP2011203916A (ja) メモリコントローラ、および半導体記憶装置
US8656090B2 (en) Method for performing block management, and associated memory device and controller thereof
US20090235015A1 (en) Memory system
KR101103061B1 (ko) 반도체 스토리지 시스템 및 그 제어 방법
JP5687649B2 (ja) 半導体記憶装置の制御方法
JP4434171B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP2013200726A (ja) 半導体記憶装置
US20240126433A1 (en) Method of controlling nonvolatile semiconductor memory
Phoenix High-Performance Low-Overhead Stochastic Wear Leveling of Flash Memory By Comparing Age of a Block with Age of a Randomly Selected Block
KR20110015280A (ko) 플래시 메모리에서 각 블록에 대한 블록 정보를 기록하는 방법
KR20110015288A (ko) 플래시 메모리의 소거 정보를 복원하는 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140210

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140623

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140708

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140829

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: 20141224

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150122

LAPS Cancellation because of no payment of annual fees