JP2012008651A - 半導体記憶装置、その制御方法および情報処理装置 - Google Patents
半導体記憶装置、その制御方法および情報処理装置 Download PDFInfo
- Publication number
- JP2012008651A JP2012008651A JP2010141774A JP2010141774A JP2012008651A JP 2012008651 A JP2012008651 A JP 2012008651A JP 2010141774 A JP2010141774 A JP 2010141774A JP 2010141774 A JP2010141774 A JP 2010141774A JP 2012008651 A JP2012008651 A JP 2012008651A
- Authority
- JP
- Japan
- Prior art keywords
- semiconductor memory
- unit
- organizing
- data
- storage unit
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
【課題】コマンド応答速度および書き込み効率が改善される半導体記憶装置を提供すること。
【解決手段】キャッシュメモリとしての第1の記憶部と、ページ単位で読み出し及び書き込みが行われ、ページ単位より大きなブロック単位で消去が行われる不揮発性半導体メモリに含まれる第2及び第3の記憶部と、不揮発性半導体メモリの記憶領域を、1以上の前記ブロックに対応付けられた論理ブロック単位で、第2及び第3の記憶部に割り当てるコントローラとを備え、コントローラは、不揮発性半導体メモリのリソース使用量が所定の閾値を越えている場合に、不揮発性半導体メモリのデータを整理してリソースを増加させる整理部と、ホストから整理状態通知要求が入力されると、整理部による整理状態を判別し、その判別結果を整理状態通知としてホストへ出力する整理状態通知部とを備える。
【選択図】図18
【解決手段】キャッシュメモリとしての第1の記憶部と、ページ単位で読み出し及び書き込みが行われ、ページ単位より大きなブロック単位で消去が行われる不揮発性半導体メモリに含まれる第2及び第3の記憶部と、不揮発性半導体メモリの記憶領域を、1以上の前記ブロックに対応付けられた論理ブロック単位で、第2及び第3の記憶部に割り当てるコントローラとを備え、コントローラは、不揮発性半導体メモリのリソース使用量が所定の閾値を越えている場合に、不揮発性半導体メモリのデータを整理してリソースを増加させる整理部と、ホストから整理状態通知要求が入力されると、整理部による整理状態を判別し、その判別結果を整理状態通知としてホストへ出力する整理状態通知部とを備える。
【選択図】図18
Description
本発明の実施形態は、不揮発性半導体メモリを備えた半導体記憶装置、その制御方法および情報処理装置に関する。
ホスト装置の外部記憶装置として、NAND型フラッシュメモリなどの不揮発性半導体メモリを搭載したSSD(Solid State Drive)が注目されている。NAND型フラッシュメモリは、磁気ディスク装置に比べ、高速、軽量などの利点を有している。
本発明の実施形態は、コマンド応答速度および書き込み効率が改善される半導体記憶装置、その制御方法および情報処理装置を提供することを目的とする。
実施形態によれば、キャッシュメモリとしての第1の記憶部と、ページ単位で読み出し及び書き込みが行われ、前記ページ単位より大きなブロック単位で消去が行われる不揮発性半導体メモリに含まれる第2及び第3の記憶部と、前記不揮発性半導体メモリの記憶領域を、1以上の前記ブロックに対応付けられた論理ブロック単位で、前記第2及び第3の記憶部に割り当てるコントローラとを備え、前記コントローラは、セクタ単位の複数のデータを第1の記憶部に書き込む書き込み制御部と、前記第1の記憶部に書き込まれた複数のデータを前記セクタ単位の2以上の自然数倍の大きさである第1の管理単位のデータとして前記第2の記憶部に追い出し、前記第1の記憶部に書き込まれた複数のデータを前記第1の管理単位の2以上の自然数倍の大きさである第2の管理単位のデータとして前記第3の記憶部に追い出すフラッシュ制御部と、前記不揮発性半導体メモリのリソース使用量が所定の閾値を越えている場合に、前記不揮発性半導体メモリのデータを整理してリソースを増加させる整理部と、ホストから整理状態通知要求が入力されると、前記整理部による整理状態を判別し、その判別結果を整理状態通知としてホストへ出力する整理状態通知部とを備えることを特徴とする。
SSDにおいては、フラッシュメモリとホスト装置との間に、キャッシュメモリを介在させて、フラッシュメモリでの書き込み回数(消去回数)を減らすように構成されていることが多い。キャッシュメモリにホスト装置からの書き込みが発生した際に、キャッシュメモリが満杯の場合は、キャッシュメモリからフラッシュメモリへのデータ追い出しを行ってから、キャッシュメモリにデータを書き込むことになる。
また、SSDにおいて、データの消去単位(ブロック)と、データの管理単位が異なる場合、フラッシュメモリの書き換えが進むと、無効な(最新ではない)データによって、ブロックは穴あき状態になる。このような穴あき状態のブロックが増えると、実質的に使用可能なブロックが少なくなり、フラッシュメモリの記憶領域を有効利用できなくなるので、有効な最新のデータを集めて、違うブロックに書き直すコンパクションなどのフラッシュメモリの整理が必要になる。
フラッシュメモリの整理中に、ホストから連続した書き込み要求が発生したとき、書き込み要求を優先させた場合は、整理が中断され続ける。この整理の中断中に、キャッシュメモリが満杯になった場合、フラッシュメモリの空きブロックが不足し、キャッシュメモリからフラッシュメモリへのデータ追い出しが困難となり、コマンド応答速度および書き込み効率の低下につながる。
以下、本発明の実施の形態について図面を参照して説明する。なお、以下の説明において、同一の機能および構成を有する要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
先ず、本明細書で用いる用語について定義しておく。
・物理ページ:NAND型フラッシュメモリ内部において一括して書き込み/読み出しが可能な単位のこと。
・論理ページ:SSD内部で設定される書き込み/読み出し単位であり、1以上の物理ページを組み合わせて構成される。
・物理ブロック:NAND型フラッシュメモリ内部において独立して消去可能な最小単位のことであり、複数の物理ページから構成される。
・論理ブロック:SSD内部で設定される消去単位であり、1以上の物理ブロックを組み合わせて構成される。論理ブロックは、複数の論理ページから構成される。
・セクタ:ホストからの最小アクセス単位のこと。セクタサイズは、例えば512B。
・クラスタ:SSD内部で「小さなデータ」を管理する管理単位。クラスタサイズはセクタサイズ以上であり、ホストのOSが採用するファイルシステムのデータ管理単位、または、論理ページサイズと等しくなるように定められる。例えば、クラスタサイズの2以上の自然数倍が論理ページサイズとなるように定められてもよい。
・トラック:SSD内部で「大きなデータ」を管理する管理単位。クラスタサイズの2以上の自然数倍がトラックサイズとなるように定められる。例えば、トラックサイズが論理ブロックサイズと等しくなるように定められてもよい。
・フリーブロック(FB):内部に有効データを含まない、用途未割り当ての論理ブロックのこと。以下の、CFB、FFBの2種類がある。
・コンプリートフリーブロック(CFB):再利用のために消去動作を行う必要があるFBのこと。消去動作の実行後は、論理ブロックの先頭に位置する論理ページから書き込むことが可能である。
・フラグメントフリーブロック(FFB):未書き込みの論理ページが残っており、消去動作を実行することなく再利用が可能なFBのこと。残りの未書き込み状態のままの論理ページに書き込むことが可能である。
・書き込み効率:所定期間内における、ホストから書き込んだデータ量に対する、論理ブロックの消去量の統計値のこと。小さいほどNAND型フラッシュメモリの消耗度が小さい。
・有効クラスタ:論理アドレスに対応するクラスタサイズの最新データ。
・無効クラスタ:同一論理アドレスのデータが他の場所に書きこまれ、参照されることがなくなったクラスタサイズのデータ。
・有効トラック:論理アドレスに対応するトラックサイズの最新データ。
・無効トラック:同一論理アドレスのデータが他の場所に書きこまれ、参照されることがなくなったトラックサイズのデータ。
・MLC(Multi Level Cell)モード:多値記憶が可能なNAND型フラッシュメモリにおいて、通常通り、上位ページおよび下位ページを使用して書き込みを行うモード。MLCモードで使用する1以上の物理ブロックを組み合わせて、MLCモードの論理ブロックが構成される。
・擬似SLC(Single Level Cell)モード:多値記憶が可能なNAND型フラッシュメモリにおいて、下位ページのみを使用して書き込みを行うモード。擬似SLCモードで使用する1以上の物理ブロックを組み合わせて、擬似SLCモードの論理ブロックが構成される。一度擬似SLCモードで使用した物理ブロックであっても、消去動作後はMLCモードで使用することが可能である。
・物理ページ:NAND型フラッシュメモリ内部において一括して書き込み/読み出しが可能な単位のこと。
・論理ページ:SSD内部で設定される書き込み/読み出し単位であり、1以上の物理ページを組み合わせて構成される。
・物理ブロック:NAND型フラッシュメモリ内部において独立して消去可能な最小単位のことであり、複数の物理ページから構成される。
・論理ブロック:SSD内部で設定される消去単位であり、1以上の物理ブロックを組み合わせて構成される。論理ブロックは、複数の論理ページから構成される。
・セクタ:ホストからの最小アクセス単位のこと。セクタサイズは、例えば512B。
・クラスタ:SSD内部で「小さなデータ」を管理する管理単位。クラスタサイズはセクタサイズ以上であり、ホストのOSが採用するファイルシステムのデータ管理単位、または、論理ページサイズと等しくなるように定められる。例えば、クラスタサイズの2以上の自然数倍が論理ページサイズとなるように定められてもよい。
・トラック:SSD内部で「大きなデータ」を管理する管理単位。クラスタサイズの2以上の自然数倍がトラックサイズとなるように定められる。例えば、トラックサイズが論理ブロックサイズと等しくなるように定められてもよい。
・フリーブロック(FB):内部に有効データを含まない、用途未割り当ての論理ブロックのこと。以下の、CFB、FFBの2種類がある。
・コンプリートフリーブロック(CFB):再利用のために消去動作を行う必要があるFBのこと。消去動作の実行後は、論理ブロックの先頭に位置する論理ページから書き込むことが可能である。
・フラグメントフリーブロック(FFB):未書き込みの論理ページが残っており、消去動作を実行することなく再利用が可能なFBのこと。残りの未書き込み状態のままの論理ページに書き込むことが可能である。
・書き込み効率:所定期間内における、ホストから書き込んだデータ量に対する、論理ブロックの消去量の統計値のこと。小さいほどNAND型フラッシュメモリの消耗度が小さい。
・有効クラスタ:論理アドレスに対応するクラスタサイズの最新データ。
・無効クラスタ:同一論理アドレスのデータが他の場所に書きこまれ、参照されることがなくなったクラスタサイズのデータ。
・有効トラック:論理アドレスに対応するトラックサイズの最新データ。
・無効トラック:同一論理アドレスのデータが他の場所に書きこまれ、参照されることがなくなったトラックサイズのデータ。
・MLC(Multi Level Cell)モード:多値記憶が可能なNAND型フラッシュメモリにおいて、通常通り、上位ページおよび下位ページを使用して書き込みを行うモード。MLCモードで使用する1以上の物理ブロックを組み合わせて、MLCモードの論理ブロックが構成される。
・擬似SLC(Single Level Cell)モード:多値記憶が可能なNAND型フラッシュメモリにおいて、下位ページのみを使用して書き込みを行うモード。擬似SLCモードで使用する1以上の物理ブロックを組み合わせて、擬似SLCモードの論理ブロックが構成される。一度擬似SLCモードで使用した物理ブロックであっても、消去動作後はMLCモードで使用することが可能である。
[第1の実施形態]
図1は、SSD(Solid State Drive)100の構成例を示すブロック図である。SSD100は、ATAインタフェース(ATA I/F)2などのメモリ接続インタフェースを介してパーソナルコンピュータあるいはCPUコアなどのホスト装置(以下、ホストと略す)1と接続され、ホスト1の外部メモリとして機能する。ホスト1としては、パーソナルコンピュータのCPU、スチルカメラ、ビデオカメラなどの撮像装置のCPUなどがあげられる。また、SSD100は、RS232Cインタフェース(RS232C I/F)などの通信インタフェース3を介して、デバッグ用/製造検査用機器200との間でデータを送受信することができる。SSD100は、不揮発性半導体メモリとしてのNAND型フラッシュメモリ(以下、NANDメモリと略す)10と、コントローラとしてのドライブ制御回路4と、NANDメモリ10よりも高速記憶動作が可能な半導体メモリであるRAM20と、電源回路5と、状態表示用のLED6と、ドライブ内部の温度を検出する温度センサ7と、フューズ8とを備えている。RAM20としては、DRAM(Dynamic Random Access Memory)、又はFeRAM(Ferroelectric Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase Change Random Access Memory)などを採用することができる。
図1は、SSD(Solid State Drive)100の構成例を示すブロック図である。SSD100は、ATAインタフェース(ATA I/F)2などのメモリ接続インタフェースを介してパーソナルコンピュータあるいはCPUコアなどのホスト装置(以下、ホストと略す)1と接続され、ホスト1の外部メモリとして機能する。ホスト1としては、パーソナルコンピュータのCPU、スチルカメラ、ビデオカメラなどの撮像装置のCPUなどがあげられる。また、SSD100は、RS232Cインタフェース(RS232C I/F)などの通信インタフェース3を介して、デバッグ用/製造検査用機器200との間でデータを送受信することができる。SSD100は、不揮発性半導体メモリとしてのNAND型フラッシュメモリ(以下、NANDメモリと略す)10と、コントローラとしてのドライブ制御回路4と、NANDメモリ10よりも高速記憶動作が可能な半導体メモリであるRAM20と、電源回路5と、状態表示用のLED6と、ドライブ内部の温度を検出する温度センサ7と、フューズ8とを備えている。RAM20としては、DRAM(Dynamic Random Access Memory)、又はFeRAM(Ferroelectric Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase Change Random Access Memory)などを採用することができる。
電源回路5は、ホスト1側の電源回路から供給される外部直流電源から複数の異なる内部直流電源電圧を生成し、これら内部直流電源電圧をSSD100内の各回路に供給する。また、電源回路5は、外部電源の立ち上がりを検知し、パワーオンリセット信号を生成して、ドライブ制御回路4に供給する。フューズ8は、ホスト1側の電源回路とSSD100内部の電源回路5との間に設けられている。外部電源回路から過電流が供給された場合フューズ8が切断され、内部回路の誤動作を防止する。
NANDメモリ10は、ホスト1によって指定されたユーザデータを記憶したり、RAM20で管理される管理情報をバックアップ用に記憶したりする。NANDメモリ10は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。NANDメモリ10は、複数のメモリチップによって構成され、各メモリチップは、データ消去の単位である物理ブロックを複数配列して構成される。また、NANDメモリ10では、物理ページごとにデータの書き込み及びデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。
図1では、NANDメモリ10は、4チャネル(4ch:ch0〜ch3)を介して、ドライブ制御回路4内部のNANDコントローラ113に並列接続されており、4つのチャネル並列動作要素10a〜10dを並列動作させることが可能である。チャネル数は4つに限らず、任意のチャネル数を採用可能である。各並列動作要素10a〜10dは、バンクインターリーブが可能な複数のバンク(この場合、4バンク、Bank0〜Bank3)によって構成されており、各バンクは、複数のメモリチップ(この場合、2メモリチップ、Chip0、Chip1)によって構成されている。各メモリチップは、例えば、それぞれ複数の物理ブロックを含むプレーン0、プレーン1の2つの領域(District)に分割されている。プレーン0およびプレーン1は、互いに独立した周辺回路(例えば、ロウデコーダ、カラムデコーダ、ページバッファ、データキャッシュ等)を備えており、倍速モードを使用することで、同時に消去/書き込み/読み出しを行うことが可能である。このように、NANDメモリ10の各NANDメモリチップは、複数のチャネルによる並列動作、複数のバンクによるバンクインターリーブ動作、複数のプレーンを用いた倍速モードによる並列動作が可能である。なお、各メモリチップは、4つのプレーンに分割された構成であってもよいし、あるいは、全く分割されていなくてもよい。
RAM20は、ホスト1とNANDメモリ10間でのデータ転送用キャッシュおよび作業領域用メモリなどとして機能する。RAM20の作業領域用メモリに記憶されるものとしては、NANDメモリ10に記憶されている各種管理テーブル(後述する)が起動時などに展開されたマスターテーブル(スナップショット)、管理テーブルの変更差分であるログ情報などがある。ドライブ制御回路4は、ホスト1とNANDメモリ10との間でRAM20を介してデータ転送制御を行うとともに、SSD100内の各構成要素を制御する。また、ドライブ制御回路4は、状態表示用LED6にステータス表示用信号を供給するとともに、電源回路5からのパワーオンリセット信号を受けて、リセット信号およびクロック信号を自回路内およびSSD100内の各部に供給する機能も有している。
図2は、ドライブ制御回路4のハードウェア的な内部構成例を示すブロック図である。ドライブ制御回路4は、データアクセス用バス101、第1の回路制御用バス102、および第2の回路制御用バス103を備えている。第1の回路制御用バス102には、ドライブ制御回路4全体を制御するプロセッサ104が接続されている。第1の回路制御用バス102には、NANDメモリ10に記憶された各管理プログラム(FW:ファームウエア)をブートするブート用プログラムが格納されたブートROM105がROMコントローラ106を介して接続されている。また、第1の回路制御用バス102には、図1に示した電源回路5からのパワーオンリセット信号を受けて、リセット信号およびクロック信号を各部に供給するクロックコントローラ107が接続されている。
第2の回路制御用バス103は、第1の回路制御用バス102に接続されている。第2の回路制御用バス103には、図1に示した温度センサ7からのデータを受けるためのI2C回路108、状態表示用LED6にステータス表示用信号を供給するパラレルIO(PIO)回路109、RS232C I/F3を制御するシリアルIO(SIO)回路110が接続されている。
ATAインタフェースコントローラ(ATAコントローラ)111、第1のECC(Error Checking and Correction)回路112、NANDコントローラ113、およびRAMコントローラ114は、データアクセス用バス101と第1の回路制御用バス102との両方に接続されている。ATAコントローラ111は、ATAインタフェース2を介してホスト1との間でデータを送受信する。データアクセス用バス101には、データ作業領域およびファームウェア展開領域として使用されるSRAM115がSRAMコントローラ116を介して接続されている。NANDメモリ10に記憶されているファームウェアは起動時、ブートROM105に記憶されたブート用プログラムによってSRAM115に転送される。
NANDコントローラ113は、NANDメモリ10とのインタフェース処理を行うNAND I/F117、第2のECC回路118、およびNANDメモリ10−RAM20間のアクセス制御を行うDMA転送制御用のDMAコントローラ119を備えている。第2のECC回路118は第2の訂正符号のエンコードを行い、また、第1の誤り訂正符合のエンコードおよびデコードを行う。第1のECC回路112は、第2の誤り訂正符号のデコードを行う。第1の誤り訂正符号、第2の誤り訂正符号は、例えば、ハミング符号、BCH(Bose Chaudhuri Hocqenghem)符号、RS(Reed Solomon)符号、或いはLDPC(Low Density Parity Check)符号等であり、第2の誤り訂正符号の訂正能力は、第1の誤り訂正符号の訂正能力よりも高いとする。
図1に示したように、NANDメモリ10においては、4つの並列動作要素10a〜10dが各複数ビットの4チャネル(4ch)を介して、ドライブ制御回路4内部のNANDコントローラ112に並列接続されており、4つの並列動作要素10a〜10dを並列動作させることが可能である。また、各チャネルのNANDメモリ10は、バンクインターリーブが可能な4つのバンクに分割されており、各メモリチップのプレーン0およびプレーン1に対しても、同時にアクセスを行うことが可能である。したがって、1チャネルに付き、最大8物理ブロック(4バンク×2プレーン)、ほぼ同時に書き込みなどの処理を実行可能である。
図3は、プロセッサ104により実現されるファームウェアの機能構成例を示すブロック図である。プロセッサ104により実現されるファームウェアの各機能は、大きく、データ管理部120、ATAコマンド処理部121、セキュリティ管理部122、ブートローダ123、初期化管理部124、デバッグサポート部125に分類される。
データ管理部120は、NANDコントローラ113、第1のECC回路112を介して、NANDメモリ10−RAM20間のデータ転送、NANDメモリ10に関する各種機能を制御する。ATAコマンド処理部121は、ATAコントローラ111、およびRAMコントローラ114を介して、データ管理部120と協動してRAM20−ホスト1間のデータ転送処理を行う。セキュリティ管理部122は、データ管理部120およびATAコマンド処理部121と協動して各種のセキュリティ情報を管理する。
ブートローダ123は、パワーオン時、各管理プログラム(ファームウェア)をNANDメモリ10からSRAM115にロードする。初期化管理部124は、ドライブ制御回路4内の各コントローラ/回路の初期化を行う。デバッグサポート部125は、外部からRS232Cインタフェースを介して供給されたデバッグ用データを処理する。主に、データ管理部120、ATAコマンド処理部121、およびセキュリティ管理部122が、SRAM115に記憶される各管理プログラムをプロセッサ104が実行することによって実現される機能部である。
データ管理部120は、ATAコマンド処理部121が記憶デバイスであるNANDメモリ10やRAM20に対して要求する機能の提供(ホストからのWrite要求、Cache Flush要求、Read要求等の各種コマンドへの応答)と、ホスト1から与えられる論理アドレスとNANDメモリ10の物理アドレスとの対応関係の管理と、スナップショット、ログによる管理情報の保護と、RAM10およびNANDメモリ10を利用した高速で効率の良いデータ読み出し/書き込み機能の提供と、NANDメモリ10の信頼性の確保などを行う。
図4は、NANDメモリ10およびRAM20内に形成された機能ブロックを示すものである。ホスト1とNANDメモリ10との間には、RAM20上に構成されたライトキャッシュ(WC)21およびリードキャッシュ(RC)22が介在している。WC21はホスト1からのWriteデータを一時保存し、RC22はNANDメモリ10からのReadデータを一時保存する。NANDメモリ10内のブロックは、書き込み時のNANDメモリ10に対する消去の量を減らすために、データ管理部120により、前段ストレージ領域(FS:Front Storage)12、中段ストレージ領域(IS:Intermediate Storage)13およびメインストレージ領域(MS:Main Storage)11という各管理領域に割り当てられている。FS12は、WC21からのデータを「小さな単位」であるクラスタ単位に管理するものであり、小データを短期間保存する。IS13は、FS12から溢れたデータを「小さな単位」であるクラスタ単位に管理するものであり、小データを長期間保存する。MS11は、WC21、FS12、IS13からのデータを「大きな単位」であるトラック単位で管理する。
つぎに、図4の各構成要素の具体的な機能構成について詳述する。ホスト1はSSD100対し、ReadまたはWriteする際には、ATAインタフェースを介して論理アドレスとしてのLBA(Logical Block Addressing)を入力する。LBAは、図5に示すように、セクタ(サイズ:例えば512B)に対して0からの通し番号をつけた論理アドレスである。本実施の形態においては、図4の各構成要素であるWC21、RC22、FS12、IS13、MS11の管理単位として、LBAの下位(s+1)ビット目から上位のビット列で構成されるクラスタアドレスと、LBAの下位(s+t+1)ビットから上位のビット列で構成されるトラックアドレスとを定義する。この第1の実施の形態では、トラックと論理ブロックのサイズは同じとする。論理ブロックとは、NANDメモリ10のチップ上の物理ブロックを複数組み合わせて構成される仮想的なブロックのことであり、この実施の形態では、論理ブロックは1つの物理ブロックを並列チャネル数分(この場合、図1に示すように4ch)まとめた単位のことをいう。論理ページも同様であり、物理ページを4ch分まとめた単位のことをいう。また、論理ブロックは、バンクインターリーブを有効利用するため、同じバンクに属する物理ブロックから選択される。
・リードキャッシュ(RC)22
RC22は、ホスト1からのRead要求に対して、NANDメモリ10(FS12、IS13、MS11)からのReadデータを一時的に保存するための領域である。ホスト1へのデータ転送は、基本的に、RC22から行う。WC21に最新のデータがある場合は、WC21からホスト1へデータ転送が行われる。
RC22は、ホスト1からのRead要求に対して、NANDメモリ10(FS12、IS13、MS11)からのReadデータを一時的に保存するための領域である。ホスト1へのデータ転送は、基本的に、RC22から行う。WC21に最新のデータがある場合は、WC21からホスト1へデータ転送が行われる。
・ライトキャッシュ(WC)21
WC21は、ホスト1からのWrite要求に対して、ホスト1からのWriteデータを一時的に保存するための領域である。WC21上のデータは、クラスタ単位で管理し、書き込みと有効データの管理はセクタ単位で行う。WC21のリソースが不足した場合、WC21の記憶データをNAND10に追い出す。この追い出しの際、WC21上で有効クラスタの多いトラック(高密度トラック)は、MS11へ追い出され、WC21上で有効クラスタの少ないトラック(低密度トラック)は、FS12へ追い出される。高密度データとは、所定の論理アドレス範囲内に有効データが所定割合より多いデータであり、低密度データとは、所定の論理アドレス範囲内に有効データが所定割合より少ないデータである。但し、FS12の空きリソースが不足した場合、WC21上の低密度トラックをFS12に追い出すことができず、ホスト1からのWrite要求を待たせることになるので、FS12の空きリソース不足により一定時間以上Write要求を待たせた場合は、トラック密度に関係なく全てのデータをMS11に強制的に書き込む緊急避難的なモード(以下、バイパスモード)が発生する。
WC21は、ホスト1からのWrite要求に対して、ホスト1からのWriteデータを一時的に保存するための領域である。WC21上のデータは、クラスタ単位で管理し、書き込みと有効データの管理はセクタ単位で行う。WC21のリソースが不足した場合、WC21の記憶データをNAND10に追い出す。この追い出しの際、WC21上で有効クラスタの多いトラック(高密度トラック)は、MS11へ追い出され、WC21上で有効クラスタの少ないトラック(低密度トラック)は、FS12へ追い出される。高密度データとは、所定の論理アドレス範囲内に有効データが所定割合より多いデータであり、低密度データとは、所定の論理アドレス範囲内に有効データが所定割合より少ないデータである。但し、FS12の空きリソースが不足した場合、WC21上の低密度トラックをFS12に追い出すことができず、ホスト1からのWrite要求を待たせることになるので、FS12の空きリソース不足により一定時間以上Write要求を待たせた場合は、トラック密度に関係なく全てのデータをMS11に強制的に書き込む緊急避難的なモード(以下、バイパスモード)が発生する。
・メインストレージ領域(MS)11
MS11はトラック単位でデータの管理が行われ、ほとんどのユーザデータが格納される。WC21上で有効クラスタの多いトラック(高密度トラック:有効クラスタが所定の閾値α以上あるトラック)は、WC21から直接MS11に書き込まれる。その他、MS11には、FS12、IS13で管理しきれなくなったデータが入力される。MS11に入力されたトラックと同一LBAのトラックについてはMS11の論理ブロック内で無効化し、この論理ブロックを解放する。MS11に入力されたトラックと同一LBAのトラックに属するクラスタについては、FS12またはIS13内で無効化し、論理ブロック内の全クラスタが無効になった論理ブロックは解放する。MS11は、MLCモードの複数の論理ブロックで構成される。この実施の形態では、トラックと論理ブロックのサイズは同じとしているので、FS12やIS13で行われる追記処理や、IS13で行われるコンパクション(有効クラスタのみを集めて新しい論理ブロックを作り、無効なクラスタ部分を解放する処理)はMS11では不要となる。もしトラックサイズが論理ブロックサイズよりも小さい場合は、FS12やIS13で行われる追記処理や、IS13で行われるコンパクションをMS11に適用してもよい。
MS11はトラック単位でデータの管理が行われ、ほとんどのユーザデータが格納される。WC21上で有効クラスタの多いトラック(高密度トラック:有効クラスタが所定の閾値α以上あるトラック)は、WC21から直接MS11に書き込まれる。その他、MS11には、FS12、IS13で管理しきれなくなったデータが入力される。MS11に入力されたトラックと同一LBAのトラックについてはMS11の論理ブロック内で無効化し、この論理ブロックを解放する。MS11に入力されたトラックと同一LBAのトラックに属するクラスタについては、FS12またはIS13内で無効化し、論理ブロック内の全クラスタが無効になった論理ブロックは解放する。MS11は、MLCモードの複数の論理ブロックで構成される。この実施の形態では、トラックと論理ブロックのサイズは同じとしているので、FS12やIS13で行われる追記処理や、IS13で行われるコンパクション(有効クラスタのみを集めて新しい論理ブロックを作り、無効なクラスタ部分を解放する処理)はMS11では不要となる。もしトラックサイズが論理ブロックサイズよりも小さい場合は、FS12やIS13で行われる追記処理や、IS13で行われるコンパクションをMS11に適用してもよい。
・前段ストレージ領域(FS)12
FS12はクラスタ単位でデータを管理されるFIFO構造のバッファであり、入力は複数のクラスタをまとめた論理ページ単位で行われる。FS12には、WC21上で有効クラスタの少ないトラック(低密度トラック:有効クラスタが所定の閾値α未満のトラック)が書き込まれる。FS12は、例えば、データの書き込み順序で論理ブロックが並んだFIFO構造となっている。FS12に存在するクラスタと同一LBAのクラスタがFS12に入力された場合、FS12内のクラスタを無効化するだけでよく、書き換え動作を伴わない。FS12に入力されたクラスタと同一LBAのクラスタについては、論理ブロック内で無効化し、論理ブロック内の全クラスタが無効になった論理ブロックは解放する。FS12のFIFO構造の最後まで到達した論理ブロックに格納されたクラスタは、ホスト1から再書き込みされる可能性の低いクラスタとみなし、論理ブロックごとIS13の管理下に移動する。FS12は、この実施の形態では、書き込みの高速化を図るため擬似SLCモードの複数の論理ブロックで構成される。なお、FS12は、MLCモードの複数の論理ブロックで構成されてもよい。更新頻度の高いデータはFS12を通過している最中に無効化され、更新頻度の低いデータだけがFS12から溢れていくため、更新頻度の高いデータと低いデータとをFS12で選り分けることができる。これにより、後段のIS13でコンパクションが頻繁に発生する可能性を低減させることが可能である。
FS12はクラスタ単位でデータを管理されるFIFO構造のバッファであり、入力は複数のクラスタをまとめた論理ページ単位で行われる。FS12には、WC21上で有効クラスタの少ないトラック(低密度トラック:有効クラスタが所定の閾値α未満のトラック)が書き込まれる。FS12は、例えば、データの書き込み順序で論理ブロックが並んだFIFO構造となっている。FS12に存在するクラスタと同一LBAのクラスタがFS12に入力された場合、FS12内のクラスタを無効化するだけでよく、書き換え動作を伴わない。FS12に入力されたクラスタと同一LBAのクラスタについては、論理ブロック内で無効化し、論理ブロック内の全クラスタが無効になった論理ブロックは解放する。FS12のFIFO構造の最後まで到達した論理ブロックに格納されたクラスタは、ホスト1から再書き込みされる可能性の低いクラスタとみなし、論理ブロックごとIS13の管理下に移動する。FS12は、この実施の形態では、書き込みの高速化を図るため擬似SLCモードの複数の論理ブロックで構成される。なお、FS12は、MLCモードの複数の論理ブロックで構成されてもよい。更新頻度の高いデータはFS12を通過している最中に無効化され、更新頻度の低いデータだけがFS12から溢れていくため、更新頻度の高いデータと低いデータとをFS12で選り分けることができる。これにより、後段のIS13でコンパクションが頻繁に発生する可能性を低減させることが可能である。
・中段ストレージ領域(IS)13
IS13は、再書き込みされる可能性の低いクラスタを格納するためのバッファであり、FS13と同様にクラスタ単位でデータの管理が行われる。IS13に存在するクラスタと同一LBAのクラスタがFS12、IS13に入力された場合、IS13内のクラスタを無効化するだけでよく、書き換え動作を伴わない。IS13においては、FS12と同様、データの書き込まれた順序(FS12から移動された順序)が古い論理ブロックから並んだリスト構造をとるが、コンパクションを行う点がFS12と異なる。IS13の容量が飽和した場合、あるいはFS12、IS13管理用のテーブルが飽和した場合は、コンパクション(IS13から有効クラスタを集めてIS13へ書き戻すこと)やデフラグ(FS12およびIS13のクラスタをトラックに統合して、MS11へ追い出すこと)を行う。IS13は、この実施の形態では、MLCモードの論理ブロックと擬似SLCモードの論理ブロックの混在で構成される。すなわち、FS12からIS13に移動されるブロックは擬似SLCモードの論理ブロックであるが、IS13内でコンパクションする際に、MLCモードの論理ブロックに書き直す。なお、FS12がMLCモードの論理ブロックで構成される場合は、IS13もMLCモードの論理ブロックのみで構成されることになる。
IS13は、再書き込みされる可能性の低いクラスタを格納するためのバッファであり、FS13と同様にクラスタ単位でデータの管理が行われる。IS13に存在するクラスタと同一LBAのクラスタがFS12、IS13に入力された場合、IS13内のクラスタを無効化するだけでよく、書き換え動作を伴わない。IS13においては、FS12と同様、データの書き込まれた順序(FS12から移動された順序)が古い論理ブロックから並んだリスト構造をとるが、コンパクションを行う点がFS12と異なる。IS13の容量が飽和した場合、あるいはFS12、IS13管理用のテーブルが飽和した場合は、コンパクション(IS13から有効クラスタを集めてIS13へ書き戻すこと)やデフラグ(FS12およびIS13のクラスタをトラックに統合して、MS11へ追い出すこと)を行う。IS13は、この実施の形態では、MLCモードの論理ブロックと擬似SLCモードの論理ブロックの混在で構成される。すなわち、FS12からIS13に移動されるブロックは擬似SLCモードの論理ブロックであるが、IS13内でコンパクションする際に、MLCモードの論理ブロックに書き直す。なお、FS12がMLCモードの論理ブロックで構成される場合は、IS13もMLCモードの論理ブロックのみで構成されることになる。
図6は、データ管理部120が図4に示した各構成要素を制御管理するための管理テーブルを示すものである。RAM20を管理するためのテーブルとしては、RC管理テーブル23、WCトラックテーブル24、WCトラック情報テーブル25,WC高密度トラック情報テーブル26、WC低密度トラック情報テーブル27などがある。NANDメモリ10を管理するためのテーブルとしては、トラックテーブル30、クラスタディレクトリテーブル31、クラスタテーブル32、クラスタブロック情報テーブル33、論物変換テーブル40などがある。
・RC管理テーブル23
RC管理テーブル23は、NANDメモリ10からRC22に転送されるデータを管理するためのものである。
RC管理テーブル23は、NANDメモリ10からRC22に転送されるデータを管理するためのものである。
・WCトラックテーブル24
WCトラックテーブル24は、WC21上に記憶されたデータに関するWCトラック情報をLBAからルックアップするためのテーブルであり、LBAのトラックアドレスのLSB数ビットをインデックスとし、インデックス毎に複数のエントリ(タグ)を有する。各タグには、LBAトラックアドレスと該トラックアドレスに対応するWCトラック情報へのポインタが記憶されている。
WCトラックテーブル24は、WC21上に記憶されたデータに関するWCトラック情報をLBAからルックアップするためのテーブルであり、LBAのトラックアドレスのLSB数ビットをインデックスとし、インデックス毎に複数のエントリ(タグ)を有する。各タグには、LBAトラックアドレスと該トラックアドレスに対応するWCトラック情報へのポインタが記憶されている。
・WCトラック情報テーブル25
WCトラック情報テーブル25には、アクセスのあったWCトラック情報の新旧の順序をLRU(Least Recently used)で双方向リストで管理するためのWCトラックLRU情報テーブル25aと、空いているWCトラック情報の番号を管理するWCトラック空き情報テーブル25bとがある。WC21からNANDメモリ10にデータを追い出すときに、WCトラックLRU情報テーブル25aを用いてより古くにアクセスされたトラックを取り出す。
WCトラック情報は、WC21内に存在する複数のトラックの1つに対応する。
WCトラック情報には、
(1)WC21内に存在するトラックアドレス、トラック内のWC21上の有効クラスタの個数、各クラスタが有効であるかどうかの情報、各クラスタがWC21のどこに存在するかを示すWC内クラスタ位置情報、
(2)1クラスタに含まれる複数のセクタのうちのどのセクタに有効なデータを保持しているかを示す情報(セクタビットマップ)、
(3)トラックの状態情報(有効、無効、ATAからのデータ転送中、NANDに書き込み中など)
などが含まれている。なお、上記のWCトラック情報では、有効クラスタが存在する記憶位置で自トラック内に存在するクラスタアドレスのLSB(t)ビットを管理するようにしたが、クラスタアドレスの管理方法は任意であり、例えば、自トラック内に存在するクラスタアドレスのLSB(t)ビット自体を管理するようにしてもよい。
WCトラック情報テーブル25には、アクセスのあったWCトラック情報の新旧の順序をLRU(Least Recently used)で双方向リストで管理するためのWCトラックLRU情報テーブル25aと、空いているWCトラック情報の番号を管理するWCトラック空き情報テーブル25bとがある。WC21からNANDメモリ10にデータを追い出すときに、WCトラックLRU情報テーブル25aを用いてより古くにアクセスされたトラックを取り出す。
WCトラック情報は、WC21内に存在する複数のトラックの1つに対応する。
WCトラック情報には、
(1)WC21内に存在するトラックアドレス、トラック内のWC21上の有効クラスタの個数、各クラスタが有効であるかどうかの情報、各クラスタがWC21のどこに存在するかを示すWC内クラスタ位置情報、
(2)1クラスタに含まれる複数のセクタのうちのどのセクタに有効なデータを保持しているかを示す情報(セクタビットマップ)、
(3)トラックの状態情報(有効、無効、ATAからのデータ転送中、NANDに書き込み中など)
などが含まれている。なお、上記のWCトラック情報では、有効クラスタが存在する記憶位置で自トラック内に存在するクラスタアドレスのLSB(t)ビットを管理するようにしたが、クラスタアドレスの管理方法は任意であり、例えば、自トラック内に存在するクラスタアドレスのLSB(t)ビット自体を管理するようにしてもよい。
・WC高密度トラック情報テーブル26
WC高密度トラック情報テーブル26は、MS11に書き込むことになる高密度のトラック情報を管理するためのもので、高密度トラックに関するWCトラック情報とその個数を管理している。
WC高密度トラック情報テーブル26は、MS11に書き込むことになる高密度のトラック情報を管理するためのもので、高密度トラックに関するWCトラック情報とその個数を管理している。
・WC低密度トラック情報テーブル27
WC低密度トラック情報テーブル27は、FS12に書き込むことになる低密度のトラック情報を管理するためのもので、低密度トラックのクラスタ数の合計を管理している。
WC低密度トラック情報テーブル27は、FS12に書き込むことになる低密度のトラック情報を管理するためのもので、低密度トラックのクラスタ数の合計を管理している。
・トラックテーブル30
トラックテーブル30は、LBAのトラックアドレスからトラック情報を取得するためのテーブルである。トラック情報としては、
(1)論理ブロックアドレス(トラックのデータが記憶されている論理ブロックを示す情報である)
(2)クラスタディレクトリ番号(トラック内のデータの少なくとも一部がFS12またはIS13に記憶されている場合に有効となる情報であり、トラック内のデータがFS12またはIS13に記憶されている場合に、トラック毎に存在するクラスタディレクトリテーブルのテーブル番号を示す情報である)
(3)FS/ISクラスタ数(当該トラック内のクラスタが、いくつFS12またはIS13に記憶されているかを示す情報であり、デフラグするかどうかを決めるために使用する)。
トラックテーブル30は、LBAのトラックアドレスからトラック情報を取得するためのテーブルである。トラック情報としては、
(1)論理ブロックアドレス(トラックのデータが記憶されている論理ブロックを示す情報である)
(2)クラスタディレクトリ番号(トラック内のデータの少なくとも一部がFS12またはIS13に記憶されている場合に有効となる情報であり、トラック内のデータがFS12またはIS13に記憶されている場合に、トラック毎に存在するクラスタディレクトリテーブルのテーブル番号を示す情報である)
(3)FS/ISクラスタ数(当該トラック内のクラスタが、いくつFS12またはIS13に記憶されているかを示す情報であり、デフラグするかどうかを決めるために使用する)。
・クラスタディレクトリテーブル31
クラスタディレクトリテーブル31は、トラック内のデータがFS12またはIS13に記憶されている場合に、その論理ブロックまでたどるための中間的なテーブルであり、トラック別に備えられている。各クラスタディレクトリテーブル31に登録されるクラスタディレクトリ情報は、クラスタテーブル32のテーブル番号を示す情報(クラスタテーブル番号情報)の配列からなる。LBAのクラスタアドレスのLSB(t)ビット中の上位数ビットで、1つのクラスタディレクトリテーブル31中に配列されている複数のクラスタテーブル番号情報からひとつの情報を選択する。
クラスタディレクトリテーブル31は、トラック内のデータがFS12またはIS13に記憶されている場合に、その論理ブロックまでたどるための中間的なテーブルであり、トラック別に備えられている。各クラスタディレクトリテーブル31に登録されるクラスタディレクトリ情報は、クラスタテーブル32のテーブル番号を示す情報(クラスタテーブル番号情報)の配列からなる。LBAのクラスタアドレスのLSB(t)ビット中の上位数ビットで、1つのクラスタディレクトリテーブル31中に配列されている複数のクラスタテーブル番号情報からひとつの情報を選択する。
このクラスタディレクトリテーブル31としては、書き込み時刻を基準として、クラスタディレクトリ情報(クラスタテーブル番号情報の配列)の新旧の順序を、対応するトラックアドレスとともに、LRU(Least Recently used)で双方向リストで管理するためのクラスタディレクトリLRUテーブル31aと、空いているクラスタディレクトリを、対応するトラックアドレスとともに、双方向リストで管理するクラスタディレクトリ空き情報テーブル31bとがある。
・クラスタテーブル32
クラスタディレクトリテーブル31と関連し、トラック内のデータがFS12またはIS13に記憶されている場合に、どの論理ブロックのどのクラスタ位置にデータが記憶されているかを管理するテーブルである。トラックテーブル30からクラスタディレクトリテーブル31を経由して間接参照される。実体は、複数クラスタ分の論理ブロックアドレス+クラスタ位置の配列である。LBAのクラスタアドレスのLSB(t)ビット中の下位数ビットで、1つのクラスタテーブル32中に配列されている複数の(論理ブロックアドレス+クラスタ位置)からひとつの情報を選択する。後述のクラスタブロック情報の番号とその中のクラスタ位置の情報も配列としてもつ。
クラスタディレクトリテーブル31と関連し、トラック内のデータがFS12またはIS13に記憶されている場合に、どの論理ブロックのどのクラスタ位置にデータが記憶されているかを管理するテーブルである。トラックテーブル30からクラスタディレクトリテーブル31を経由して間接参照される。実体は、複数クラスタ分の論理ブロックアドレス+クラスタ位置の配列である。LBAのクラスタアドレスのLSB(t)ビット中の下位数ビットで、1つのクラスタテーブル32中に配列されている複数の(論理ブロックアドレス+クラスタ位置)からひとつの情報を選択する。後述のクラスタブロック情報の番号とその中のクラスタ位置の情報も配列としてもつ。
・クラスタブロック情報テーブル33
クラスタブロックとは、論理ブロックのうちクラスタ単位でデータを記憶するものをいう。クラスタブロック情報は、FS12、IS13の論理ブロックを管理するための情報であり、論理ブロック内にどのようなクラスタが入っているかを示す情報である。クラスタブロック情報同士を双方向リストとしてFS12、IS13内のFIFOの順序で連結される。
クラスタブロック情報は、
(1)論理ブロックアドレス
(2)有効クラスタ数
(3)当該論理ブロックに含まれるクラスタのLBA
を有する。
クラスタブロック情報テーブル33は、使われていないクラスタブロック情報を管理する空き情報管理用のクラスタブロック情報テーブル33a、FS12に含まれるクラスタブロック情報を管理するFS用のクラスタブロック情報テーブル33b、IS13に含まれるクラスタブロック情報を管理するIS用のクラスタブロック情報テーブル33cを有し、各テーブル33a〜33cは、双方向リストとして管理されている。このクラスタブロック情報テーブル33の主な用途はIS13のコンパクションであり、コンパクション対象の論理ブロックにどのようなクラスタが記憶されているかを調べ、データを他の場所へ書き直すために使用する。
クラスタブロックとは、論理ブロックのうちクラスタ単位でデータを記憶するものをいう。クラスタブロック情報は、FS12、IS13の論理ブロックを管理するための情報であり、論理ブロック内にどのようなクラスタが入っているかを示す情報である。クラスタブロック情報同士を双方向リストとしてFS12、IS13内のFIFOの順序で連結される。
クラスタブロック情報は、
(1)論理ブロックアドレス
(2)有効クラスタ数
(3)当該論理ブロックに含まれるクラスタのLBA
を有する。
クラスタブロック情報テーブル33は、使われていないクラスタブロック情報を管理する空き情報管理用のクラスタブロック情報テーブル33a、FS12に含まれるクラスタブロック情報を管理するFS用のクラスタブロック情報テーブル33b、IS13に含まれるクラスタブロック情報を管理するIS用のクラスタブロック情報テーブル33cを有し、各テーブル33a〜33cは、双方向リストとして管理されている。このクラスタブロック情報テーブル33の主な用途はIS13のコンパクションであり、コンパクション対象の論理ブロックにどのようなクラスタが記憶されているかを調べ、データを他の場所へ書き直すために使用する。
・論物変換テーブル40
論物変換テーブル40は、論理ブロックアドレスと物理ブロックアドレスとの変換、寿命に関する情報を管理するためのテーブルである。論理ブロックアドレス毎に、当該論理ブロックに所属する複数の物理ブロックアドレスを示す情報、当該論理ブロックアドレスの消去回数を示す消去回数情報、クラスタブロック情報の番号などの情報を有している。あるLBAのデータを他の場所に書き直すには、元のクラスタブロック内のLBAを無効にする必要があり、LBAからクラスタブロックをたどる必要がある。そのために、論物変換テーブル40で管理する論理ブロックの管理情報に、クラスタブロック情報の識別子を記憶している。
論物変換テーブル40は、論理ブロックアドレスと物理ブロックアドレスとの変換、寿命に関する情報を管理するためのテーブルである。論理ブロックアドレス毎に、当該論理ブロックに所属する複数の物理ブロックアドレスを示す情報、当該論理ブロックアドレスの消去回数を示す消去回数情報、クラスタブロック情報の番号などの情報を有している。あるLBAのデータを他の場所に書き直すには、元のクラスタブロック内のLBAを無効にする必要があり、LBAからクラスタブロックをたどる必要がある。そのために、論物変換テーブル40で管理する論理ブロックの管理情報に、クラスタブロック情報の識別子を記憶している。
上記各管理テーブルで管理される管理情報によって、ホスト1で使用されるLBAと、SSD100で使用される論理NANDアドレス(論理ブロックアドレス+オフセット)と、NANDメモリ10で使用される物理NANDアドレス(物理ブロックアドレス+オフセット)との間を対応付けることができ、ホスト1とNANDメモリ10との間のデータのやり取りを行うことが可能となる。
上記各管理テーブルのうちNAND管理用のテーブル(図6のトラックテーブル30、クラスタディレクトリテーブル31、クラスタテーブル32、クラスタブロック情報テーブル33、論物変換テーブル40など)は、不揮発性のNANDメモリ10の所定の領域に記憶されており、起動時に、NANDメモリ10に記憶されていた各管理テーブルをRAM20の作業領域に展開して、この展開されたRAM20上の管理テーブルをデータ管理部120が使用することで、各管理テーブルは更新されていく。RAM20上の管理テーブル(マスターテーブルと呼ぶ)は、電源が切れても、電源が切れる以前の状態に復元する必要があり、このためマスターテーブルとマスターテーブルの変更差分であるログを不揮発性のNANDメモリ10に、適宜のタイミングで保存している。
・Read処理
つぎに、読み出し処理の概要について説明する。ATAコマンド処理部121から、Readコマンドおよび読み出しアドレスとしてのLBAが入力されると、データ管理部120は、RC管理テーブル23とWCトラックテーブル24を検索することで、WC21またはRC22にLBAに対応するデータが存在しているか否かを探査し、キャッシュヒットの場合は、該当LBAに対応するWC21またはRC22のデータを読み出して、ATAコマンド処理部121に送る。
つぎに、読み出し処理の概要について説明する。ATAコマンド処理部121から、Readコマンドおよび読み出しアドレスとしてのLBAが入力されると、データ管理部120は、RC管理テーブル23とWCトラックテーブル24を検索することで、WC21またはRC22にLBAに対応するデータが存在しているか否かを探査し、キャッシュヒットの場合は、該当LBAに対応するWC21またはRC22のデータを読み出して、ATAコマンド処理部121に送る。
データ管理部120は、RC22またはWC21でヒットしなかった場合は、検索対象のデータがNANDメモリ10のどこに格納されているかを検索する。データがMS11に記憶されている場合は、データ管理部120は、LBA→トラックテーブル30→論物変換テーブル40と辿ることで、MS11上のデータを取得する。一方、データがFS12,IS13に記憶されている場合は、データ管理部120は、LBA→トラックテーブル30→クラスタディレクトリテーブル31→クラスタテーブル32→論物変換テーブル40と辿ることで、FS12,IS13上のデータを取得する。
・Write処理
(WC21での処理)
つぎに、図7に示すフローチャートに従って書き込み処理の概要について説明する。書き込み処理では、ATAコマンド処理部121からWriteコマンドおよび書き込みアドレスとしてのLBAが入力されると(ステップS100)、データ管理部120は、LBAで指定されたデータをWC21に書き込む。具体的には、データ管理部120は、WC21に当該書き込み要求に応じた空きが有るか否かを判定し(ステップS110)、WC21に空きがある場合は、LBAで指定されたデータをWC21に書き込む(ステップS150)。
(WC21での処理)
つぎに、図7に示すフローチャートに従って書き込み処理の概要について説明する。書き込み処理では、ATAコマンド処理部121からWriteコマンドおよび書き込みアドレスとしてのLBAが入力されると(ステップS100)、データ管理部120は、LBAで指定されたデータをWC21に書き込む。具体的には、データ管理部120は、WC21に当該書き込み要求に応じた空きが有るか否かを判定し(ステップS110)、WC21に空きがある場合は、LBAで指定されたデータをWC21に書き込む(ステップS150)。
一方、WC21に空き領域がない場合は、データ管理部120は、RAM管理用の各種管理テーブルを参照してWC21からデータを追い出し、追い出したデータをNANDメモリ10に書き込み、空き領域を作成する。具体的には、データ管理部120は、トラック内の有効クラスタ数を調べ(ステップS120)、トラック内の有効クラスタ数が所定パーセントα未満のトラックは低密度トラックとし、クラスタサイズデータとしてFS12を追い出し先とする(ステップS140)。FS12が追い出し先の場合は、トラック内の有効クラスタを論理ページ単位で書き込む。
ステップS120の判断で、トラック内の有効クラスタ数が所定パーセントα以上のトラックと判断された場合は、このトラックを高密度トラックとし、トラックサイズのデータとしてMS11を追い出し先とする(ステップS130)。MS11が追い出し先の場合は、トラックサイズのデータのまま論理ブロック全体に書き込む。書き込み対象の論理ブロック数が複数の場合は、倍速モードやバンクインターリーブを利用して転送効率を上げる。
このようにして、WC21に空きを作った後、LBAで指定されたデータをWC21に書き込む(ステップS150)。WC21に書き込まれたデータに応じて、またNANDメモリ10へのデータ追い出しに応じて、RAM管理用の各種管理テーブルを更新する。
(WC21からMS11への書き込み)
つぎに、WC21からMS11への高密度トラックの書き込み処理について、図8および図9に従って説明する。図8はその動作手順を示すフローチャート、図9はその動作概念を示す模式図である。
つぎに、WC21からMS11への高密度トラックの書き込み処理について、図8および図9に従って説明する。図8はその動作手順を示すフローチャート、図9はその動作概念を示す模式図である。
MS11への書き込みは、次の手順で実行される。データ管理部120は、追い出し対象となった高密度トラックに加えて、バンクインターリーブを利用して並列に書き込める高密度トラックを複数選択してもよい。
1.データ管理部120は、RAM20上にトラックのデータイメージを作成(穴埋め処理)する(ステップS200)。すなわち、WC21に存在しないクラスタ、WC21に全セクタを保持していないクラスタに関しては、NANDメモリ10から読み出して、WC21のデータと統合する。
2.データ管理部120は、MS11用に、論理ブロック(トラックブロック)をコンプリートフリーブロックCFBから確保する(ステップS210)。トラックブロックとは、論理ブロックのうちトラック単位でデータを記憶するものをいう。
3.データ管理部120は、ステップS200で作成したトラックのデータイメージを、ステップS210で確保した論理ブロックに書き込む(ステップS220)。
4.データ管理部120は、トラックのLBAからトラック情報を調べ、トラック情報と書き込んだ論理ブロックに対応する論理ブロックアドレスとを関連付け、NAND管理用の所要のテーブルに登録する(ステップS230)。
5.データ管理部120は、WC21,NANDメモリ10の古いデータを無効化する(ステップS240)。すなわち、MS11にフラッシュされたWC21のキャッシュデータと、ステップS200での穴埋め処理に使用されたNANDメモリ10のデータを、管理テーブル上で有効から無効にすることで無効化する。
2.データ管理部120は、MS11用に、論理ブロック(トラックブロック)をコンプリートフリーブロックCFBから確保する(ステップS210)。トラックブロックとは、論理ブロックのうちトラック単位でデータを記憶するものをいう。
3.データ管理部120は、ステップS200で作成したトラックのデータイメージを、ステップS210で確保した論理ブロックに書き込む(ステップS220)。
4.データ管理部120は、トラックのLBAからトラック情報を調べ、トラック情報と書き込んだ論理ブロックに対応する論理ブロックアドレスとを関連付け、NAND管理用の所要のテーブルに登録する(ステップS230)。
5.データ管理部120は、WC21,NANDメモリ10の古いデータを無効化する(ステップS240)。すなわち、MS11にフラッシュされたWC21のキャッシュデータと、ステップS200での穴埋め処理に使用されたNANDメモリ10のデータを、管理テーブル上で有効から無効にすることで無効化する。
(WC21からFS12への書き込み)
つぎに、WC21からFS12への低密度トラックの書き込み処理について、図10および図11に従って説明する。図10はその動作手順を示すフローチャート、図11はその動作概念を示す模式図である。
つぎに、WC21からFS12への低密度トラックの書き込み処理について、図10および図11に従って説明する。図10はその動作手順を示すフローチャート、図11はその動作概念を示す模式図である。
FS12への書き込みは、RAM20上にクラスタのデータイメージを作成(穴埋め処理)し、新たに確保する論理ブロック(クラスタブロック)に対し論理ページ単位の書き込みを、擬似SLCモードを使用して行う。確保する論理ブロックは、書き込むデータイメージ以上の書き込み可能な論理ページをもつフラグメントフリーブロック(FFB)を優先し、ない場合はコンプリートフリーブロック(CFB)を使用する。FS12への書き込みは、以下の手順で実行する。
WC21からFS12に低密度トラックのデータを書き込むための論理ブロック(クラスタブロック)のことをFS Input Buffer(以下、FSIB)と呼ぶ。データ管理部120は、追い出し対象となった低密度トラックに加えて、書き込むクラスタデータ量が擬似SLCモードの論理ブロック境界に揃うように、他の低密度トラックを巻き添えにしてもよい。
1.データ管理部120は、WC21から入力された低密度トラック内の総データ量を判定し(ステップS300)、判定した総データ量が小さい場合、すなわち有効クラスタ数が所定の閾値よりも少ない場合には、それを書き込めるFFBを確保し、FSIBとする(ステップS310)。
2.データ管理部120は、WC21から渡された低密度トラック内の総データ量が大きいと判定した場合、すなわち有効クラスタ数が所定の閾値以上の場合には、CFBを確保し、FSIBとする(ステップS320)。このとき、並列で書き込むことが出来る複数の論理ブロックを確保し、FSIBとする。
3.データ管理部120は、RAM20上で、書き込むクラスタのデータイメージを作成する(ステップS330)。すなわち、WC21に全セクタを保持していないクラスタに関しては、WC21上に存在しないセクタのデータをNANDメモリ10から読み出し、WC21上のセクタのデータと統合する。
4.データ管理部120は、WC21上のクラスタと、作業領域上に作ったクラスタイメージをFSIBに書き込む(ステップS340)。
5.データ管理部120は、このFSIBに関するクラスタブロック情報をFS用のクラスタブロック情報テーブル33bに追加する(ステップS350)。
6.データ管理部120は、FSIBに書き込んだ低密度トラックに関するクラスタディレクトリ情報を、対応するトラックアドレスとともに、クラスタディレクトリLRUテーブル31aの末尾に挿入しなおす(ステップS360)。
1.データ管理部120は、WC21から入力された低密度トラック内の総データ量を判定し(ステップS300)、判定した総データ量が小さい場合、すなわち有効クラスタ数が所定の閾値よりも少ない場合には、それを書き込めるFFBを確保し、FSIBとする(ステップS310)。
2.データ管理部120は、WC21から渡された低密度トラック内の総データ量が大きいと判定した場合、すなわち有効クラスタ数が所定の閾値以上の場合には、CFBを確保し、FSIBとする(ステップS320)。このとき、並列で書き込むことが出来る複数の論理ブロックを確保し、FSIBとする。
3.データ管理部120は、RAM20上で、書き込むクラスタのデータイメージを作成する(ステップS330)。すなわち、WC21に全セクタを保持していないクラスタに関しては、WC21上に存在しないセクタのデータをNANDメモリ10から読み出し、WC21上のセクタのデータと統合する。
4.データ管理部120は、WC21上のクラスタと、作業領域上に作ったクラスタイメージをFSIBに書き込む(ステップS340)。
5.データ管理部120は、このFSIBに関するクラスタブロック情報をFS用のクラスタブロック情報テーブル33bに追加する(ステップS350)。
6.データ管理部120は、FSIBに書き込んだ低密度トラックに関するクラスタディレクトリ情報を、対応するトラックアドレスとともに、クラスタディレクトリLRUテーブル31aの末尾に挿入しなおす(ステップS360)。
(FS12からIS13への移動)
つぎに、FS12からIS13へのデータ移動について、図12および図13に従って説明する。図12はその動作手順を示すフローチャート、図13はその動作概念を示す模式図である。
つぎに、FS12からIS13へのデータ移動について、図12および図13に従って説明する。図12はその動作手順を示すフローチャート、図13はその動作概念を示す模式図である。
データ管理部120は、FS12管理下の論理ブロック数が所定の最大論理ブロック数を越えているか否かを判定し(ステップS400)、FS12管理下の論理ブロック数が所定の最大論理ブロック数を越えている場合は、図13に示すように、FS12から溢れた論理ブロックをそのままIS13に移動する。FS12は、この実施の形態では、擬似SLCモードの複数の論理ブロックで構成されるようにしており、擬似SLCモードの論理ブロックがFS12からIS13にそのまま移動される。一度の処理単位で移動する論理ブロック数は、溢れた論理ブロック内の有効クラスタ数などに応じて、以下のルールで決定する(ステップS410)。
・溢れた論理ブロック内のクラスタ数の合計がMLCモードの1論理ブロック分の境界に近くなるよう、すなわち1論理ブロック分の個数(2t)またはその倍数(m×2t mは自然数)に近くなるように、FS12の最も古い論理ブロックから移動する論理ブロックを追加する。例えば、溢れた論理ブロック内のクラスタ数が2t個と2t+1個の間の値である場合は、クラスタ数が2t+1個に近く(2t+1も含む)なるように、移動対象の論理ブロックを増やす。MLCモードの1論理ブロック分の境界に近くするのは、コンパクション後の論理ブロックに、なるべく多くの有効クラスタを収容させるためである。
・クラスタ数がIS13で同時にコンパクションできるクラスタ数zを超える場合は、このクラスタ数z以下になるような論理ブロック数とする。
・一度の処理で移動する論理ブロック数には、上限値を設ける。この制限は、IS管理下の論理ブロック数が一時的に増えないようにするためである。
このようにして決定された移動対象の論理ブロックがFS12からIS13に移動される(ステップS420)。
・一度の処理で移動する論理ブロック数には、上限値を設ける。この制限は、IS管理下の論理ブロック数が一時的に増えないようにするためである。
このようにして決定された移動対象の論理ブロックがFS12からIS13に移動される(ステップS420)。
(IS13でのコンパクションとデフラグ)
つぎに、IS13でのコンパクションとデフラグ処理について、図14に示すフローチャートに従って説明する。
つぎに、IS13でのコンパクションとデフラグ処理について、図14に示すフローチャートに従って説明する。
データ管理部120は、IS13管理下の論理ブロック数が所定の最大論理ブロック数を越えているか否かを判定し(ステップS500)、IS管理下の論理ブロック数が最大論理ブロック数を越えた場合に、MS11へのデータ移動(デフラグ処理)と、コンパクション処理を実行することによって、管理下の論理ブロック数を最大数以下に抑える(ステップS510)。データの消去単位(論理ブロック)と、データの管理単位(クラスタ)が異なる場合、NANDメモリ10の書き換えが進むと、無効なデータによって、論理ブロックは穴あき状態になる。このような穴あき状態の論理ブロックが増えると、実質的に使用可能な論理ブロックが少なくなり、NANDメモリ10の記憶領域を有効利用できないので、有効クラスタを集めて、違う論理ブロックに書き直すことをコンパクションという。デフラグ処理とは、FS12,IS13のクラスタをトラックに統合して、MS11に追い出す処理をいう。デフラグ処理として、IS13内のみのクラスタをトラックに統合して、MS11に追い出すようにしてもよい。
つぎに、本実施の形態の要部について説明する。上述したSSD100において、NANDメモリ10上でバッファとして機能するFS12、IS13にはリソースに制限がある。すなわち、NANDメモリ10は、ホスト1から見えるユーザデータ記憶領域(リザーブド領域という)の他に、ホスト1からは見えない記憶領域(マージン領域という)を通常備えている。リザーブド領域は、ホスト1で使用される論理アドレスとしてのLBAによって指定可能な領域であり、MS11がこれに対応する。マージン領域は、FS12、IS13用の記憶領域と、図6に示した各種管理テーブル用の記憶領域などとして使用される。このように、NANDメモリ10上のマージン領域は、ユーザからは見えない領域であるため、このマージン領域に多くの記憶領域を割り当てることができず、マージン領域には、そのリソースに制限がある。
このように、FS12、IS13にはリソースに制限があるため、FS12、IS13の空きリソース量をできるだけ一定に保つ必要がある。そのため、データ管理部120は、ホスト1から一定期間要求が無くアイドル状態へ遷移する時に、所定個数を超えたクラスタがFS12、IS13に格納されていると判定すると、前述したFS12からIS13へのデータ移動、コンパクションおよびデフラグ処理などを含むNAND整理を実行する。NAND整理はホスト1に意識させないように裏処理で実行しており、ホスト1からのアクセス要求やスタンバイ、スリープなどの省電力モードへの遷移要求があれば、NAND整理の途中であっても直ちにNAND整理を中断して要求を受け付ける。
NAND整理の実行状態をホスト1へ通知しないようシステムを構成した場合は、ホスト1はNAND整理を実行中であるか否かを知ることができない。このようなシステムでは、NAND整理中にホスト1から連続したライト要求が発生した場合、NAND整理も中断され続けることで、WC21からNANDメモリ10へのデータ追い出しが発生したときに、FS12の空きリソースが足りず、低密度トラックであるにも関わらず高密度トラック格納用のMS11への強制的な記録が行われる前述のバイパスモードに遷移する確率が上がり、コマンドレスポンスおよび書き込み効率の低下に繋がる。また、ホスト1からのライト要求を実行直後にスタンバイ、スリープ遷移要求された場合は、NAND整理が中断され続けた後(さらにその状態から電源を切られた場合も含め)、その復帰後のライト要求でも同様の現象が発生する。
そこで、本実施の形態では、ホスト1がSSD100に対しNANDメモリ10の整理を実行/中止させるコマンド(以下、整理実行要求コマンドEXE_ORG、整理中止要求コマンドABT_ORGという)と、ホスト1がNANDメモリ10の整理の実行状態を確認するコマンド、すなわち整理の実行状態の通知を要求するコマンド(以下、整理状態通知要求コマンドRQSTS_ORGという)とを新たに定義する。ホスト1から整理状態通知要求コマンドRQSTS_ORGが入力された場合、SSD100は、その応答として、ホスト1にNANDメモリ10の整理状態を通知する。
まず、NAND整理について詳述する。NAND整理としては、この実施形態では、FS12からIS13へのデータ移動、デフラグ、コンパクションを含むものとする。NAND整理は、この実施形態では、例えば、
・ホスト1から一定期間要求が無くアイドル状態へ遷移するときに、
・ホスト1から整理実行要求コマンドEXE_ORGを受信したときに、
FS12、IS13の空きリソースが不足している場合、あるいはクラスタ管理用の管理テーブル(クラスタディレクトリテーブル31、クラスタテーブル32)の空きリソースが不足している場合に、実行される。
・ホスト1から一定期間要求が無くアイドル状態へ遷移するときに、
・ホスト1から整理実行要求コマンドEXE_ORGを受信したときに、
FS12、IS13の空きリソースが不足している場合、あるいはクラスタ管理用の管理テーブル(クラスタディレクトリテーブル31、クラスタテーブル32)の空きリソースが不足している場合に、実行される。
図15は、NAND整理をトリガするための複数のパラメータ(NANDリソース名)と、2つの閾値(目標値、上限値)と、整理の具体的アクションとの関係の一例を示す図である。NAND整理をトリガするための複数のパラメータ(リソース名)としては、
・FSブロック数(FS12に所属する論理ブロック数)
・ISブロック数(IS13に所属する論理ブロック数)
・クラスタディレクトリ(クラスタディレクトリテーブル31の占有容量)
・クラスタテーブル(クラスタテーブル32の占有容量)
がある。これらNAND整理をトリガするための複数のパラメータをNANDリソース使用量(使用リソース量)とも呼ぶ。
・FSブロック数(FS12に所属する論理ブロック数)
・ISブロック数(IS13に所属する論理ブロック数)
・クラスタディレクトリ(クラスタディレクトリテーブル31の占有容量)
・クラスタテーブル(クラスタテーブル32の占有容量)
がある。これらNAND整理をトリガするための複数のパラメータをNANDリソース使用量(使用リソース量)とも呼ぶ。
これら4つのパラメータには、NAND整理をトリガするために、2つの閾値(目標値、上限値)が設定されている。図15において、各パラメータに設定されている「最大値」は各パラメータが取り得る実質的な最大値を示すもので、NAND整理をトリガする閾値としての意味はない。「上限値」は、使用中のリソース量が少なくともこの値以下になるまで、NAND整理を継続するという値であり、使用リソース量が上限値を超えている場合は、WC21からFS12への追い出しが不可能となりバイパスモードへと遷移するため、WC21からNANDメモリ10への追い出し後に使用リソース量が上限値以下になるようにNAND整理が実行される。「目標値」は、この値以下になるまで、NAND整理を続行するという値であり、余裕を持ったリソースを確保するために、NANDメモリ10がアイドル時に先行して使用リソース量が目標値以下になるようにNAND整理を実行する。最大値、上限値、目標値は、Xmax>Xlmt>Xtgt、Ymax≧Ymax>Ylmt、Zmax>Zlmt>Ztgt、Wmax>Wlmt≧Ztgtの大小関係を持つ。
この実施の形態では、図15に示すように、FSブロック数が上限値Xlmt、あるいは目標値Xtgtを越えている場合は、FS12からIS13へのデータ移動が実行され、ISブロック数が上限値Ylmt、あるいは目標値Ytgtを越えている場合は、コンパクションが実行され、クラスタディレクトリテーブル31の占有容量が、上限値Zlmt、あるいは目標値Ztgtを越えている場合は、デフラグが実行され、クラスタテーブル32の占有容量が、上限値Wlmt、あるいは目標値Wtgtを越えている場合は、デフラグが実行される。なお、FSブロック数が上限値Xlmt、あるいは目標値Xtgtを越えている場合、FS12からIS13へのデータ移動の他にデフラグを行うようにしてもよいし、ISブロック数が上限値Ylmt、あるいは目標値Ytgtを越えている場合に、コンパクションの他にデフラグを行うようにしてもよく、クラスタ用の管理テーブル(クラスタディレクトリテーブル31、クラスタテーブル32)が上限値、あるいは目標値を越えている場合、コンパクションを行うようにしてもよく、使用リソース量が閾値を越えている場合のアクションは、図15に示したものに限らない。
図16は、整理実行要求コマンドEXE_ORG、整理中止要求コマンドABT_ORG、整理状態通知要求コマンドRQSTS_ORGを、SATA(Serial ATA)インタフェースに適用した場合の、ホストからデバイスに指示を出すためのRegister Device to HostのFIS(Frame Instruction Structure)の一例を示すものである。図16に示すFISでは、フィーチャーフィールドの値が01hの場合、整理実行要求(整理実行要求コマンドEXE_ORG)が指定され、02hの場合、整理状態通知要求(整理状態通知要求RQSTS_ORG)が指定され、03hの場合、整理中止要求(整理中止要求コマンドABT_ORG)が指定される。
コマンドフィールドには、整理実行要求コマンドEXE_ORG、整理中止要求コマンドABT_ORG、整理状態通知要求コマンドRQSTS_ORGに共通の所定のコマンドコードが指定される。カウントフィールドは、N/A(該当なし)である。LBAフィールドには、整理実行要求コマンドEXE_ORGが有する2つのモードの何れを実行するかが指定される。すなわち、フィーチャーフィールドの値が01hの場合に、LBAフィールドの値が01hの場合は、ショートモード(短時間モード)でのNAND整理実行が指定され、LBAフィールドの値が02hの場合は、ロングモード(長時間モード)でのNAND整理実行が指定される。ショートモードが指定された場合は、NANDメモリ10の使用リソース量を、上限値以下になるようなNAND整理が実行され、ロングモードが指定された場合は、NANDメモリ10の使用リソース量を、目標値以下になるようなNAND整理が実行される。
図17は、整理状態通知要求コマンドRQSTS_ORGをSATAインタフェースに適用した場合の、デバイスからホストに実行結果を通知するためのRegister Host to DeviceのFISの一例を示すものである。図17に示すFISでは、フィーチャーフィールドでNAND整理の実行状態を示すようにしており、フィーチャーフィールドの値が00hの場合、現在NAND整理が「非実行中」であることを示し、01hである場合は、現在NAND整理が「中断中」であることを示し、02hである場合は、現在NAND整理が「実行中」であることを示す。初期状態は「非実行中」、NAND整理が開始(再開)されると「実行中」、NAND整理が中断されると「中断中」、NAND整理が完了すると「非実行中」となる。コマンドフィールドには、図16に示したコマンドフィールドに指定されるコマンドコードと同じコマンドコードが指定される。
図17において、カウントフィールドはNAND整理内容を示すフィールドであり、カウントフィールドには、NAND整理の実行対象リソースと、実行対象リソース閾値(上限値および目標値のうちの何れの閾値に対してNAND整理を実行しているか)とを含んでいる。フィーチャーフィールドでNAND整理の実行状態が「非実行中」であれば、カウントフィールドは不定となる。図17の場合は、NAND整理の対象リソースとしてFSブロック数およびISブロック数の2つを採用している。カウント値が00hであるときはFSブロック数を上限値Xlmt以下にするNAND整理を行っていることを示し、カウント値が01hであるときはFSブロック数を目標値Xtgt以下にするNAND整理を行っていることを示し、カウント値が10hであるときはISブロック数を上限値Ylmt以下にするNAND整理を行っていることを示し、カウント値が11hであるときはISブロック数を目標値Ytgt以下にするNAND整理を行っていることを示している。NAND整理の対象リソースとしてクラスタディレクトリテーブル31、クラスタテーブル32などのクラスタ管理テーブルも含める場合は、これらのNANDリソースの整理内容が判るようにカウントフィールドのフォーマットを変更する。
図17において、LBAフィールドは、NAND整理の進捗度を示すフィールドである。フィーチャーフィールドでNAND整理の実行状態が「非実行中」であれば、LBAフィールドは不定となる。この進捗度としては、NAND整理の対象である各使用リソース量の最大値からNAND整理のリソース量の閾値までを100%として、現在のリソース量からNAND整理の進捗度を算出することが出来る。この進捗度として、
(1)各リソース閾値別に対する進捗度(最大値→上限値 また上限値→目標値)
(2)各リソース単位での進捗度(最大値→目標値)
(3)各リソースへの重み付けによる総合値でのNAND整理全体の進捗度
のうちの何れかを通知してもよく、全てを通知してもよい。
(1)各リソース閾値別に対する進捗度(最大値→上限値 また上限値→目標値)
(2)各リソース単位での進捗度(最大値→目標値)
(3)各リソースへの重み付けによる総合値でのNAND整理全体の進捗度
のうちの何れかを通知してもよく、全てを通知してもよい。
例えば、NAND整理対象リソースが「FSブロック数」と「ISブロック数」の場合、FSブロック数のリソース設定が最大値1000、上限値800、目標値500とし、ISブロック数のリソース設定が最大値1000、上限値900、目標値800として、現在のFSの使用ブロック数が900、ISの使用ブロック数が800の場合は、
各リソースの閾値別に対する進捗度は、
「FSブロック数」の「上限値」に対する進捗度、50%
「FSブロック数」の「目標値」に対する進捗度、0%
「ISブロック数」の「上限値」に対する進捗度、100%
「ISブロック数」の「目標値」に対する進捗度、100%
各リソース単位での進捗度は、
「FSブロック数」に対する進捗度、20%
「ISブロック数」に対する進捗度、100%
NAND整理全体に対しての重み付けがFSブロック数0.9、ISブロック数0.1とした場合、
NAND整理全体の進捗度は、20×0.9+100×0.1=28%となる。
各リソースの閾値別に対する進捗度は、
「FSブロック数」の「上限値」に対する進捗度、50%
「FSブロック数」の「目標値」に対する進捗度、0%
「ISブロック数」の「上限値」に対する進捗度、100%
「ISブロック数」の「目標値」に対する進捗度、100%
各リソース単位での進捗度は、
「FSブロック数」に対する進捗度、20%
「ISブロック数」に対する進捗度、100%
NAND整理全体に対しての重み付けがFSブロック数0.9、ISブロック数0.1とした場合、
NAND整理全体の進捗度は、20×0.9+100×0.1=28%となる。
図18は、本実施の形態の要部の機能構成を示すブロック図である。前述したように、NANDメモリ10は、MS11、FS12,IS13と、図6に示した各種管理テーブルを記憶する管理テーブル記憶部15を備えている。RAM20には、WC21が備えられ、また前述したマスターテーブルが記憶されている。データ管理部であるコントローラ120は、ホスト1からのコマンドを解析するコマンド解析部210と、ホスト1からのデータをWC21に対して書き込む制御を行うWC書き込み制御部211と、WC21からNANDメモリ10にデータを追い出してNANDメモリ10に書き込む追い出し制御を実行するWC追い出し制御部212と、NANDメモリ10での整理(コンパクション、デフラグ、FS12からIS13へのデータ移動など)を実行するNAND整理部214と、NANDメモリ10での現在の整理状態を判断してホスト1に通知する整理状態通知部215を備えている。NAND整理部214は、ホスト1から整理実行要求コマンドEXE_ORGが入力されたとき、あるいはホスト1から一定期間要求が無くアイドル状態へ遷移するときに、NANDメモリ10の使用リソース量が図15に示した上限値または目標値を上回っている場合に、NAND整理を実行する。
図19は、ホスト1とSSD100との間でのNAND整理に関するコマンドの送受信シーケンスの一例を示すものである。図19では、まずホスト1からSSD100に整理実行要求コマンドEXE_ORGが送信され、この整理実行要求コマンドEXE_ORGに対する応答がSSD100からホスト1に返信されている。NAND整理実行要求ORGの受信をトリガとして、SSD100ではNAND整理を開始する。図19では、この後、SSD100でのNAND整理状態を確認するためにホスト1からSSD100に整理状態通知要求コマンドRQSTS_ORGが送信されており、これに応答してNANDの整理状態を示すデータを含む応答信号がSSD100からホスト1に返信されている。図19では、ホスト1がNANDの整理状態を確認した後、NANDの整理を中止するために、整理中止要求コマンドABT_ORGがホスト1からSSD100に送信されている。この整理中止要求コマンドABT_ORGにより、SSD100では、NANDの整理を中止するとともに、その応答信号をホスト1に返信している。
図20は、整理実行要求コマンドEXE_ORGを受信したときのSSD100での動作手順を示すものである。コントローラ120のコマンド解析部210は、ホスト1から送信されたコマンドのフィーチャーフィールドを解析し、受信したコマンドが整理実行要求コマンドEXE_ORGであると判断すると(ステップS600)、つぎにLBAフィールドを解析することで、ショートモードが指定されているかロングモードが指定されているかを判定し、その判定結果をNAND整理部214に通知する(ステップS610)。NAND整理部214は、ショートモードが指定されている場合は、NAND整理対象のリソースのうち上限値を超えているリソースが存在するか否かを判定し(ステップS620)、上限値が存在するリソースが存在して場合は、そのリソースに対応したNAND整理(デフラグ、コンパクション、FSからISへのデータ移動など)を実行して、使用リソース量を上限値以下にする(ステップS640)。また、NAND整理部214は、ロングモードが指定されている場合は、NAND整理対象のリソースのうち目標値を超えているリソースが存在するか否かを判定し(ステップS630)、目標値が存在するリソースが存在して場合は、そのリソースに対応したNAND整理(デフラグ、コンパクション、FSからISへのデータ移動など)を実行して、使用リソース量を目標値以下にする(ステップS640)。
図21は、整理状態通知要求コマンドRQSTS_ORGを受信したときのSSD100での動作手順を示すものである。コマンド解析部210は、ホスト1から送信されたコマンドのフィーチャーフィールドを解析し、受信したコマンドが整理状態通知要求コマンドRQSTS_ORGであると判断すると(ステップS700)、整理状態通知部215にその旨を通知する。この通知を受けると、整理状態通知部215は、現在のNAND整理状態が、中断中か、実行中か、非実行中のいずれであるかをNAND整理部214に問い合わせる(ステップS705、S710)。整理状態通知部215は、NAND整理状態が非実行中であると判断した場合は、ホスト1に返信する応答コマンドのNAND整理状態のフィールド(図16の場合はフィーチャーフィールド)を非実行中「00h」に設定し(ステップS715)、応答コマンドをホスト1に返信させる(ステップS780)。
また、整理状態通知部215は、NAND整理状態が中断中であると判断した場合は、ホスト1に返信する応答コマンドのNAND整理状態のフィールドを中断中「01h」に設定し(ステップS725)、NAND整理状態が実行中である場合は、ホスト1に返信する応答コマンドのNAND整理状態のフィールドを実行中「02h」に設定する(ステップS720)。つぎに、整理状態通知部215は、NAND整理部214に問い合わせ、整理対象のリソースが何であるかを判定する(ステップS730)。図21の場合は、整理対象のリソースとしては、FSブロック数と、ISブロック数の2つである場合を示している。整理状態通知部215は、整理対象のリソースがFSブロック数である場合は、NAND整理対象リソースのフィールド(図17ではカウントフィールドの上位数ビット)をFSブロック数「0h」に設定し(ステップS735)、整理対象のリソースがISブロック数である場合は、NAND整理対象リソースのフィールドをISブロック数「1h」に設定する(ステップS740)。
つぎに、整理状態通知部215は、NAND整理部214に問い合わせ、現在の使用リソース量を判定する(ステップS750)。整理状態通知部215は、現在の使用リソース量が上限値以上である場合は、NAND整理対象リソース閾値のフィールド(図17ではカウントフィールドの下位数ビット)を上限値「0h」に設定し(ステップS760)、現在の使用リソース量が上限値より少なく目標値より多い場合は、NAND整理対象リソース閾値のフィールドを目標値「1h」に設定する(ステップS755)。つぎに、NAND整理の進捗度を、(1)リソース閾値別で、(2)リソース単位で、(3)重み付けによる総合値の何れかあるいは全てについて計算し(ステップS765)、計算した進捗度をNAND整理進捗度のフィールド(図17ではLBAフィールド)に設定する(ステップS770)。そして、NAND整理部214は、各フィールドに現在のNAND整理状態に対応する値が設定された応答コマンドをホスト1に返信させる(ステップS780)。
図22は、ホスト1が整理状態通知要求コマンドRQSTS_ORGに対する応答信号をSSD100から受信した場合の制御手順を示すものであり、この動作例では、SSD100から通知されたRQSTS_ORGに対する応答信号の内容に応じてパワーモードをスタンバイモードに遷移させている。この場合、スタンバイモードへの遷移条件は、FSブロック数についてのNAND整理が目標値に対して50%以上進行していることとする。
ホスト1では、整理状態通知要求コマンドRQSTS_ORGを発行し(ステップS800)、その後、SSD100からの応答がない等のエラーが発生した場合は(ステップ)、SSD100側からの応答に関係なく、スタンバイ条件が成立したらパワーモードをスタンバイに遷移させる(ステップS860)。一方、ホスト1は、エラーが発生せず、SSDからの応答コマンドを受信した場合(ステップS820)、応答コマンド中のNAND整理状態フィールドを確認し、SSD100がNAND整理を実行中でない場合は(ステップS830 NO)、スタンバイ条件が成立したらパワーモードをスタンバイに遷移させる(ステップS860)。
ホスト1は、SSD100がNAND整理を実行中であると判断すると、つぎに、応答コマンド中のNAND整理対象リソースのフィールドを確認し(ステップS835)、SSD100がFSブロック数に対してNAND整理を実行中でない場合は(ステップS840 NO)、処理を終了し、SSD100がFSブロック数に対してNAND整理を実行中である場合は(ステップS840 YES)、つぎに応答コマンド中のNAND整理対象リソース閾値のフィールドを確認する(ステップS845)。この確認により、SSD100がFSブロック数を目標値にするためのNAND整理を行っていないと判断した場合は(ステップS850 NO)、処理を終了する。しかし、SSD100がFSブロック数を目標値にするためのNAND整理を行っていると判断した場合は(ステップS850 YES)、つぎに、NAND整理進捗度フィールドを確認する(ステップS855)。このNAND整理進捗度フィールドの確認によりFSブロック数についてのNAND整理が目標値に対して50%以上進行していることが確認できれば、ホスト1は、スタンバイ条件が成立したらパワーモードをスタンバイに遷移させる(ステップS860)。しかし、FSブロック数についてのNAND整理が目標値に対して50%以上進行していな場合は、スタンバイへの遷移を行わず、ここで処理を終了する。
このように第1の実施形態においては、整理状態通知要求コマンドRQSTS_ORGを定義するようにしたので、ホストがNAND整理の実行状態を知ることが可能となり、NAND整理の実行状態を意識して、アクセス制御やスタンバイ、スリープの省電力モードへの遷移制御を実行できる。ホストがNAND整理の進捗度を監視しながらホスト側の都合も考慮して、ライト要求やパワーモードのスタンバイ、スリープ遷移要求を遅延させることで、後続のライト要求に対してのコマンドレスポンス性能を細かに調整することができる。また、ホストが消費電力を意識して小まめなスタンバイ、スリープ遷移が必要な場合も、NAND整理が完了または進行していることを確認した上でスタンバイ、スリープ遷移の実行が可能なため、NAND整理を先送りにせずに効率的な省電力制御ができる。また、この実施の形態では、整理実行要求コマンドEXE_ORGを定義するようにしたので、ホスト側がSSDに任意のタイミングでNAND整理を実行させることができ、ホスト側から見ると、WRITEコマンド等の応答性の向上が期待でき、SSDでは、NANDメモリへの書き込み効率を向上させることが可能となる。また、整理実行要求コマンドEXE_ORGは、ショートとロングの2つのモードを有するようにしたので、ホストの都合に応じて、2つのモードを使い分けるようにすれば、WRITEコマンド等の応答性のさらなる向上が期待でき、SSDでは、NANDメモリへの書き込み効率をさらに向上させることが可能となる。
上記実施形態では、MS11の前段にFS12,IS13の2つのバッファを形成するようにしたが、MS11の前段に、WC21から低密度データが入力されて、クラスタ管理される1つのバッファVSを形成するようにしてもよい。MS11に1つのバッファVSを形成する場合は、整理対象のNANDリソース名としては、VSブロック数、VS用の管理テーブルの占有容量などを採用し、そのNAND整理のアクション例としては、例えば、バッファVSのクラスタをトラックに統合してMS11に追い出すデフラグ処理、バッファVSでのコンパクションなどを採用する。
また、上記実施の形態では、NANDメモリ10は、複数のチャネルによってチャネル並列動作が可能に構成したが、単一チャネルでNANDメモリ10とドライブ制御回路4とを接続してもよい。また、バンクインターリーブを行わないNANDメモリ10に対し、あるいはプレーン並列動作を行わないNANDメモリ10に対して、本発明を適用するようにしてもよい。
また、整理状態通知要求コマンドRQSTS_ORGに対するSSD100からの応答信号には、NAND整理の対象リソース名と、整理対象閾値とを除き、NAND整理の状態(実行中/非実行中)と、進捗度のみを含めるようにしてもよい。
[第2の実施形態]
図23にしたがって第2の実施形態について説明する。図23は、NANDメモリ10およびRAM20内に形成された第2の実施形態の機能ブロックを示すものである。第1の実施形態では、トラックと論理ブロックサイズが同じとしたが、トラックと論理ブロックサイズが異なるようにしてもよい。第2の実施形態では、論理ブロックサイズはトラックサイズよりも大きいものとする。このようにデータの消去の単位である論理ブロックサイズと、データの管理単位であるトラックサイズが異なると、MS11においても、NANDメモリの書き換えが進むと、無効な(最新ではない)データによって、ブロックは穴あき状態になる。このような穴あき状態のブロックが増えると、実質的に使用可能なブロックが少なくなり、NANDメモリ10の記憶領域を有効利用できない。そこで、この第2の実施形態では、MS11においても、MS11に割り当てられている論理ブロックの個数がMS11として許容されるブロック数の上限値を越えるような状況が発生すると、コンパクションを行って無効なフリーブロックを作るようにする。MS11でのコンパクションでは、有効トラック数の少ない論理ブロックから、有効トラックを集めて、新たな論理ブロック(フリーブロック)に集めた有効トラックを書き込むといった処理を実行する。
図23にしたがって第2の実施形態について説明する。図23は、NANDメモリ10およびRAM20内に形成された第2の実施形態の機能ブロックを示すものである。第1の実施形態では、トラックと論理ブロックサイズが同じとしたが、トラックと論理ブロックサイズが異なるようにしてもよい。第2の実施形態では、論理ブロックサイズはトラックサイズよりも大きいものとする。このようにデータの消去の単位である論理ブロックサイズと、データの管理単位であるトラックサイズが異なると、MS11においても、NANDメモリの書き換えが進むと、無効な(最新ではない)データによって、ブロックは穴あき状態になる。このような穴あき状態のブロックが増えると、実質的に使用可能なブロックが少なくなり、NANDメモリ10の記憶領域を有効利用できない。そこで、この第2の実施形態では、MS11においても、MS11に割り当てられている論理ブロックの個数がMS11として許容されるブロック数の上限値を越えるような状況が発生すると、コンパクションを行って無効なフリーブロックを作るようにする。MS11でのコンパクションでは、有効トラック数の少ない論理ブロックから、有効トラックを集めて、新たな論理ブロック(フリーブロック)に集めた有効トラックを書き込むといった処理を実行する。
前述したように、図4、図23に示したバッファ構造では、FS12を設けることで、後段のIS13におけるコンパクション処理に更新頻度の高いデータが紛れ込む可能性を低減している。第2の実施形態では、MS11でコンパクションを行うこととしたので、MS11の前段にFS11と同様の機能を有するバッファ(トラック前段ストレージ領域:TFS)16を設け、MS11におけるコンパクション処理に更新頻度の高いデータが紛れ込む可能性を低減させる。
TFS16は、トラック単位でデータが管理され、データの入力順序に論理ブロックが並んだFIFO構造を有している。TFS16には、WC21、FS12、IS13からデータがトラック単位に書き込まれる。複数のトラックが書き込まれてフルになった論理ブロックは、後段に移動される。TFS16のブロック数がTFS16として許容される所定の上限値を超えると、最も古いブロックがTFS16からMS11に追い出される。なお、TFS16に、MS11内のコンパクション処理によって形成された論理ブロックを入力するようにしてもよい。
また、TFS16を設けた場合、MS11に入力されるデータは、TFS16を経由する場合と、TFS16を経由せずにMS11に直接入力される場合との2経路となる。WC21から高密度トラックをMS11に追い出す場合は、高密度トラックを論理ブロック分集め、論理ブロック分集められた高密度トラックについては直接MS11に追い出し、1論理ブロック分に満たない個数の高密度トラックをTFS16に追い出す。デフラグ処理などにより、FS12あるいはIS13からMS11へデータを追い出す場合、追い出しクラスタをトラック単位にまとめ、トラック内有効クラスタ数が所定の閾値以上のトラックを論理ブロック分集め、論理ブロック分集められたトラックについては直接MS11に追い出し、1論理ブロック分に満たない個数のトラックをTFS16に追い出す。
このように、第2の実施形態においては、MS11でコンパクションを行うとともに、MS11の前段にTFS16を設けている。このため、この第2の実施形態においては、NAND整理の対象リソースに、TFSブロック数と、MSブロック数を追加する。TFSブロック数とは、TFSに所属する論理ブロック数であり、MSブロック数とは、MS11に所属する現在の論理ブロック数(フリーブロックFBからMS管理下のブロックとなったブロック数)であり、MS最大ブロック数に対する有効データの割合であるともいえる。そして、TFSブロック数、MSブロック数に対し、上限値および目標値を設定し、TFSブロック数、MSブロック数が上限値、あるいは目標値を上回った場合に、MSコンパクションなどのNAND整理を実行する。
したがって、ホスト1から整理実行要求コマンドEXE_ORGを受信したときは、TFSブロック数と、MSブロック数もNAND整理対象のリソースに含め、これらのリソースが上限値、目標値を上回っているときは、MSコンパクションなどのNAND整理を実行する。また、ホスト1から整理状態通知要求コマンドRQSTS_ORGを受信した場合は、これらのTFSブロック数と、MSブロック数もNAND整理対象のリソースに含めて、NAND整理状態をホスト1に通知する。
なお、論理ブロックサイズがトラックサイズよりも大きい場合でも、MS11の前段にFS12,IS13の2つのバッファを形成するのではなく、MS11の前段に、前述した1つのバッファVSを形成するようにしてもよい。この場合の整理対象のNANDリソース名としては、VSブロック数、VS用の管理テーブルの占有容量、TFSブロック数、MSブロック数などを採用し、そのNAND整理のアクション例としては、例えば、バッファVSのクラスタをトラックに統合してMS11に追い出すデフラグ処理、バッファVSでのコンパクション、MS11でのコンパクションなどを採用する。
[第3の実施の形態]
図24は、SSD100を搭載した情報処理装置としてのパーソナルコンピュータ1200の一例を示す斜視図である。パーソナルコンピュータ1200は、本体1201、及び表示ユニット1202を備えている。表示ユニット1202は、ディスプレイハウジング1203と、このディスプレイハウジング1203に収容された表示装置1204とを備えている。
図24は、SSD100を搭載した情報処理装置としてのパーソナルコンピュータ1200の一例を示す斜視図である。パーソナルコンピュータ1200は、本体1201、及び表示ユニット1202を備えている。表示ユニット1202は、ディスプレイハウジング1203と、このディスプレイハウジング1203に収容された表示装置1204とを備えている。
本体1201は、筐体1205と、キーボード1206と、ポインティングデバイスであるタッチパッド1207とを備えている。筐体1205内部には、メイン回路基板、ODD(optical disk device)ユニット、カードスロット、及びSSD100等が収容されている。
カードスロットは、筐体1205の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部1208が設けられている。ユーザは、この開口部1208を通じて筐体1205の外部から追加デバイスをカードスロットに挿抜することが可能である。
SSD100は、従来のHDDの置き換えとして、パーソナルコンピュータ1200内部に実装された状態として使用してもよいし、パーソナルコンピュータ1200が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
図25は、SSD100を搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ1200は、CPU1301、ノースブリッジ1302、主メモリ1303、ビデオコントローラ1304、オーディオコントローラ1305、サウスブリッジ1309、BIOS−ROM1310、SSD100、ODDユニット1311、エンベデッドコントローラ/キーボードコントローラIC(EC/KBC)1311、及びネットワークコントローラ1312等を備えている。
CPU1301は、パーソナルコンピュータ1200の動作を制御するために設けられたプロセッサであり、SSD100から主メモリ1303にロードされるオペレーティングシステム(OS)を実行する。更に、ODDユニット1311が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも1つの処理の実行を可能にした場合に、CPU1301は、それらの処理の実行をする。
CPU1301は、パーソナルコンピュータ1200の動作を制御するために設けられたプロセッサであり、SSD100から主メモリ1303にロードされるオペレーティングシステム(OS)を実行する。更に、ODDユニット1311が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも1つの処理の実行を可能にした場合に、CPU1301は、それらの処理の実行をする。
また、CPU1301は、BIOS−ROM1310に格納されたシステムBIOS(Basic Input Output System)も実行する。尚、システムBIOSは、パーソナルコンピュータ1200内のハードウェア制御のためのプログラムである。
ノースブリッジ1302は、CPU1301のローカルバスとサウスブリッジ1309との間を接続するブリッジデバイスである。ノースブリッジ1302には、主メモリ1303をアクセス制御するメモリコントローラも内蔵されている。
また、ノースブリッジ1302は、AGP(Accelerated Graphics Port)バス等を介してビデオコントローラ1304との通信、及びオーディオコントローラ1305との通信を実行する機能も有している。
主メモリ1303は、プログラムやデータを一時的に記憶し、CPU1301のワークエリアとして機能する。主メモリ1303は、例えばRAMから構成される。
ビデオコントローラ1304は、パーソナルコンピュータ1200のディスプレイモニタとして使用される表示ユニット1202を制御するビデオ再生コントローラである。
オーディオコントローラ1305は、パーソナルコンピュータ1200のスピーカ1306を制御するオーディオ再生コントローラである。
サウスブリッジ1309は、LPC(Low Pin Count)バス1314上の各デバイス、及びPCI(Peripheral Component Interconnect)バス1315上の各デバイスを制御する。また、サウスブリッジ1309は、各種ソフトウェア及びデータを格納する記憶装置であるSSD100を、ATAインタフェースを介して制御する。
パーソナルコンピュータ1200は、セクタ単位でSSD100へのアクセスを行う。ATAインタフェースを介して、書き込みコマンド、読出しコマンド、フラッシュコマンド等がSSD100に入力される。
また、サウスブリッジ1309は、BIOS−ROM1310、及びODDユニット1311をアクセス制御するための機能も有している。
EC/KBC1312は、電力管理のためのエンベデッドコントローラと、キーボード(KB)1206及びタッチパッド1207を制御するためのキーボードコントローラとが集積された1チップマイクロコンピュータである。
このEC/KBC1312は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ1200の電源をON/OFFする機能を有している。ネットワークコントローラ1312は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
なお、SSD100が搭載される情報処理装置として、スチルカメラ、ビデオカメラなどの撮像装置を採用してもよい。
1 ホスト、4 ドライブ制御回路、10 NANDメモリ、11 MS、12 FS、13 IS、16 TFS、104 プロセッサ、120 データ管理部、100 SSD、210 コマンド解析部、211 WC書き込み制御部、212 WC追い出し制御部、214 NAND整理部、215 整理状態通知部。
Claims (21)
- キャッシュメモリとしての第1の記憶部と、
ページ単位で読み出し及び書き込みが行われ、前記ページ単位より大きなブロック単位で消去が行われる不揮発性半導体メモリに含まれる第2及び第3の記憶部と、
前記不揮発性半導体メモリの記憶領域を、1以上の前記ブロックに対応付けられた論理ブロック単位で、前記第2及び第3の記憶部に割り当てるコントローラと、
を備え、
前記コントローラは、
セクタ単位の複数のデータを第1の記憶部に書き込む書き込み制御部と、
前記第1の記憶部に書き込まれた複数のデータを前記セクタ単位の2以上の自然数倍の大きさである第1の管理単位のデータとして前記第2の記憶部に追い出し、前記第1の記憶部に書き込まれた複数のデータを前記第1の管理単位の2以上の自然数倍の大きさである第2の管理単位のデータとして前記第3の記憶部に追い出すフラッシュ制御部と、
前記不揮発性半導体メモリのリソース使用量が所定の閾値を越えている場合に、前記不揮発性半導体メモリのデータを整理してリソースを増加させる整理部と、
ホストから整理状態通知要求が入力されると、前記整理部による整理状態を判別し、その判別結果を整理状態通知としてホストへ出力する整理状態通知部と、
を備えることを特徴とする半導体記憶装置。 - 前記整理部は、ホストから整理実行要求が入力されたとき、前記不揮発性半導体メモリのリソース使用量が前記閾値を越えている場合に、前記整理を実行することを特徴とする請求項1に記載の半導体記憶装置。
- 前記整理部は、ホストから整理中止要求が入力されたとき、前記整理を中止することを特徴とする請求項2に記載の半導体記憶装置。
- 前記閾値は、第1の閾値およびこの第1の閾値より小さな第2の閾値を有し、
前記不揮発性半導体メモリのリソース使用量が前記第1の閾値を越えている場合は、前記リソース使用量が前記第1の閾値以下になるまで、前記整理を実行し、
前記不揮発性半導体メモリがアイドル時に、前記不揮発性半導体メモリのリソース使用量が前記第2の閾値を越えている場合は、前記リソース使用量が前記第2の閾値以下になるまで、前記整理を実行することを特徴とする請求項1に記載の半導体記憶装置。 - 前記閾値は、第1の閾値およびこの第1の閾値より小さな第2の閾値を有し、
前記整理部は、ホストから第1のモードでの整理実行要求が入力されたとき、前記不揮発性半導体メモリのリソース使用量が前記第1の閾値を越えている場合は、前記リソース使用量が前記第1の閾値以下になるまで、前記整理を実行し、
ホストから第2のモードでの整理実行要求が入力されたとき、前記不揮発性半導体メモリのリソース使用量が前記第2の閾値を越えている場合は、前記リソース使用量が前記第2の閾値以下になるまで、前記整理を実行することを特徴とする請求項2に記載の半導体記憶装置。 - 前記不揮発性半導体メモリの前記リソース使用量は、前記第2の記憶部に所属する論理ブロック数についてのリソース使用量、前記第3の記憶部に所属する論理ブロック数についてのリソース使用量、前記第2の記憶部に記憶された前記第1の管理単位のデータを管理する管理テーブルについてのリソース使用量のうちの少なくとも1つを含むことを特徴とする請求項1〜5の何れか一つに記載の半導体記憶装置。
- 前記整理部は、第2の記憶部に所属する論理ブロック数が前記閾値を超えているとき、前記第2の記憶部に記憶された複数のデータを前記第2の管理単位のデータとして前記第3の記憶部に追い出す前記整理を実行することを特徴とする請求項6に記載の半導体記憶装置。
- 前記整理部は、第2の記憶部に所属する論理ブロック数が前記閾値を超えているとき、前記第2の記憶部に記憶された前記第1の管理単位の有効データを複数選択して新たな論理ブロック内に書き直す前記整理を実行することを特徴とする請求項6に記載の半導体記憶装置。
- 前記整理部は、第3の記憶部に所属する論理ブロック数が前記閾値を超えているとき、前記第3の記憶部に記憶された前記第2の管理単位の有効データを複数選択して新たな論理ブロック内に書き直す前記整理を実行することを特徴とする請求項6に記載の半導体記憶装置。
- 前記整理部は、前記管理テーブルについての前記不揮発性半導体メモリのリソース使用量が前記閾値を超えているとき、前記第2の記憶部に記憶された複数のデータを前記第2の管理単位のデータとして前記第3の記憶部に追い出す前記整理を実行することを特徴とする請求項6に記載の半導体記憶装置。
- 前記整理部は、前記管理テーブルについての前記不揮発性半導体メモリのリソース使用量が前記閾値を超えているとき、前記第2の記憶部に記憶された前記第1の管理単位の有効データを複数選択して新たな論理ブロック内に書き直す前記整理を実行することを特徴とする請求項6に記載の半導体記憶装置。
- 前記第2の記憶部は、第1の記憶部から追い出された複数のデータが書き込まれる第4の記憶部と、第4の記憶部に記憶された複数のデータが論理ブロック単位で移動される第5の記憶部とを含み、
前記整理部は、第4の記憶部に所属する論理ブロック数が前記閾値を超えているとき、第4の記憶部に記憶された複数のデータを論理ブロック単位で第5の記憶部に移動する前記整理を実行することを特徴とする請求項2に記載の半導体記憶装置。 - 前記閾値は、第1の閾値およびこの第1の閾値より小さな第2の閾値を有し、
前記整理部は、ホストから第1のモードでの整理実行要求が入力されたとき、前記不揮発性半導体メモリのリソース使用量が前記第1の閾値を越えている場合は、前記リソース使用量が前記第1の閾値以下になるまで、前記整理を実行し、
ホストから第2のモードでの整理実行要求が入力されたとき、前記不揮発性半導体メモリのリソース使用量が前記第2の閾値を越えている場合は、前記リソース使用量が前記第2の閾値以下になるまで、前記整理を実行することを特徴とする請求項12に記載の半導体記憶装置。 - 前記整理状態通知部は、整理の実行状態、整理の進捗度を含む整理状態通知をホストへ出力することを特徴とする請求項1〜13の何れか一つに記載の半導体記憶装置。
- 前記整理状態通知には、整理対象リソース名をさらに含むことを特徴とする請求項14に記載の半導体記憶装置。
- 前記整理状態通知部は、整理の実行状態、整理の進捗度、整理対象リソース名、および第1および第2の閾値の何れに対する整理であるかを示す情報を含む整理状態通知をホストへ出力することを特徴とする請求項4または5に記載の半導体記憶装置。
- キャッシュメモリとしての第1の記憶部と、ページ単位で読み出し及び書き込みが行われ、前記ページ単位より大きなブロック単位で消去が行われる不揮発性半導体メモリに含まれる第2及び第3の記憶部と、を備える半導体記憶装置の制御方法であって、
前記不揮発性半導体メモリの記憶領域を、1以上の前記ブロックに対応付けられた論理ブロック単位で、前記第2及び第3の記憶部に割り当て、
セクタ単位の複数のデータを第1の記憶部に書き込み、
前記第1の記憶部に書き込まれた複数のデータを前記セクタ単位の2以上の自然数倍の大きさである第1の管理単位のデータとして前記第2の記憶部に追い出し、前記第1の記憶部に書き込まれた複数のデータを前記第1の管理単位の2以上の自然数倍の大きさである第2の管理単位のデータとして前記第3の記憶部に追い出し、
前記不揮発性半導体メモリのリソース使用量が所定の閾値を越えている場合に、前記不揮発性半導体メモリのデータを整理してリソースを増加させ、
ホストから整理状態通知要求が入力されると、前記整理状態を判別し、その判別結果を整理状態通知としてホストへ出力する
ことを特徴とする半導体記憶装置の制御方法。 - ホストと、
キャッシュメモリとしての第1の記憶部と、ページ単位で読み出し及び書き込みが行われ、前記ページ単位より大きなブロック単位で消去が行われる不揮発性半導体メモリに含まれる第2及び第3の記憶部と、前記不揮発性半導体メモリの記憶領域を、1以上の前記ブロックに対応付けられた論理ブロック単位で、前記第2及び第3の記憶部に割り当てるコントローラとを有する半導体記憶装置と、
を備える情報処理装置であって、
前記ホストは、
整理状態通知要求を発行する手段を備え、
前記半導体記憶装置のコントローラは、
セクタ単位の複数のデータを第1の記憶部に書き込む書き込み制御部と、
前記第1の記憶部に書き込まれた複数のデータを前記セクタ単位の2以上の自然数倍の大きさである第1の管理単位のデータとして前記第2の記憶部に追い出し、前記第1の記憶部に書き込まれた複数のデータを前記第1の管理単位の2以上の自然数倍の大きさである第2の管理単位のデータとして前記第3の記憶部に追い出すフラッシュ制御部と、
前記不揮発性半導体メモリのリソース使用量が所定の閾値を越えている場合に、前記不揮発性半導体メモリのデータを整理してリソースを増加させる整理部と、
ホストから前記整理状態通知要求が入力されると、前記整理部による整理状態を判別し、その判別結果を整理状態通知としてホストへ出力する整理状態通知部と、
を備えることを特徴とする情報処理装置。 - 前記ホストは、整理実行要求を発行する手段をさらに備え、
前記半導体記憶装置の整理部は、ホストから整理実行要求が入力されたとき、前記不揮発性半導体メモリのリソース使用量が前記閾値を越えている場合に、前記整理を実行することを特徴とする請求項18に記載の情報処理装置。 - 前記ホストは、整理中止要求を発行する手段をさらに備え、
前記半導体記憶装置の整理部は、ホストから整理中止要求が入力されたとき、前記整理を中止することを特徴とする請求項19に記載の情報処理装置。 - 前記ホストは、
整理状態通知部からの整理状態通知を判別し、この判別結果に基づいてスタンバイモードへの遷移を決定することを特徴とする請求項18〜20の何れか一つに記載の情報処理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010141774A JP2012008651A (ja) | 2010-06-22 | 2010-06-22 | 半導体記憶装置、その制御方法および情報処理装置 |
US13/052,146 US8527727B2 (en) | 2010-06-22 | 2011-03-21 | Semiconductor storage device, with organizing-state notify processing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010141774A JP2012008651A (ja) | 2010-06-22 | 2010-06-22 | 半導体記憶装置、その制御方法および情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012008651A true JP2012008651A (ja) | 2012-01-12 |
Family
ID=45329692
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010141774A Pending JP2012008651A (ja) | 2010-06-22 | 2010-06-22 | 半導体記憶装置、その制御方法および情報処理装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8527727B2 (ja) |
JP (1) | JP2012008651A (ja) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013121596A1 (ja) * | 2012-02-15 | 2013-08-22 | 国立大学法人東京大学 | メモリコントローラ,データ記憶装置およびメモリの制御方法 |
WO2014185037A1 (ja) * | 2013-05-17 | 2014-11-20 | 学校法人中央大学 | データ記憶システムおよびその制御方法 |
EP2884396A1 (en) | 2013-12-06 | 2015-06-17 | Fujitsu Limited | Storage control apparatus, storage control program, and storage control method |
US9361911B1 (en) | 2015-05-14 | 2016-06-07 | Kabushiki Kaisha Toshiba | Magnetic recording head and disk device with the same |
JP2016134166A (ja) * | 2015-01-16 | 2016-07-25 | 株式会社東芝 | 検索装置 |
US9690652B2 (en) | 2015-01-16 | 2017-06-27 | Kabushiki Kaisha Toshiba | Search device and search method searching data based on key |
US10474569B2 (en) | 2014-12-29 | 2019-11-12 | Toshiba Memory Corporation | Information processing device including nonvolatile cache memory and processor |
JP2020003836A (ja) * | 2018-06-25 | 2020-01-09 | 日本精機株式会社 | 車両用表示装置 |
JP2020510905A (ja) * | 2017-02-06 | 2020-04-09 | 中興通訊股▲ふん▼有限公司Zte Corporation | フラッシュメモリファイルシステム及びそのデータ管理方法 |
US10775865B2 (en) | 2018-08-23 | 2020-09-15 | Toshiba Memory Corporation | Memory system including a nonvolatile memory and a volatile memory, and method |
JP2022078261A (ja) * | 2018-06-25 | 2022-05-24 | 日本精機株式会社 | 車両用表示装置 |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4461170B2 (ja) | 2007-12-28 | 2010-05-12 | 株式会社東芝 | メモリシステム |
CN101632068B (zh) | 2007-12-28 | 2015-01-14 | 株式会社东芝 | 半导体存储装置 |
US20120284474A1 (en) * | 2011-05-06 | 2012-11-08 | International Business Machines Corporation | Enabling recovery during data defragmentation |
US8924636B2 (en) | 2012-02-23 | 2014-12-30 | Kabushiki Kaisha Toshiba | Management information generating method, logical block constructing method, and semiconductor memory device |
US9251055B2 (en) | 2012-02-23 | 2016-02-02 | Kabushiki Kaisha Toshiba | Memory system and control method of memory system |
US8990477B2 (en) * | 2012-04-19 | 2015-03-24 | Sandisk Technologies Inc. | System and method for limiting fragmentation |
TWI493339B (zh) * | 2012-06-13 | 2015-07-21 | Silicon Motion Inc | 資料儲存裝置及資料清除方法 |
US8804452B2 (en) * | 2012-07-31 | 2014-08-12 | Micron Technology, Inc. | Data interleaving module |
US9286986B2 (en) * | 2012-08-13 | 2016-03-15 | Phison Electronics Corp. | Data writing method, and memory control circuit unit and memory storage apparatus using the same |
KR20140099737A (ko) | 2013-02-04 | 2014-08-13 | 삼성전자주식회사 | 존-기반 조각모음 방법 및 그것을 이용한 유저 장치 |
US8990458B2 (en) | 2013-02-28 | 2015-03-24 | Kabushiki Kaisha Toshiba | Controller, semiconductor storage device and method of controlling data writing |
US20140250277A1 (en) * | 2013-03-04 | 2014-09-04 | Kabushiki Kaisha Toshiba | Memory system |
JP6021759B2 (ja) * | 2013-08-07 | 2016-11-09 | 株式会社東芝 | メモリシステムおよび情報処理装置 |
US10521387B2 (en) * | 2014-02-07 | 2019-12-31 | Toshiba Memory Corporation | NAND switch |
TW201441927A (zh) * | 2014-07-08 | 2014-11-01 | Nexcom Int Co Ltd | 一種固態硬碟裝置 |
US20160041762A1 (en) | 2014-08-08 | 2016-02-11 | Kabushiki Kaisha Toshiba | Memory system, host device and information processing system |
US9612904B2 (en) * | 2015-02-02 | 2017-04-04 | Sandisk Technologies Llc | Memory system and method for securing volatile memory during sleep mode using the same ECC module used to secure non-volatile memory during active mode |
KR20160095468A (ko) * | 2015-02-03 | 2016-08-11 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치, 그것을 포함하는 메모리 시스템 및 그것의 동작 방법 |
US10198061B2 (en) | 2015-09-01 | 2019-02-05 | Toshiba Memory Corporation | Storage and storage system |
CN106126396A (zh) * | 2016-06-17 | 2016-11-16 | 深圳市金泰克半导体有限公司 | 一种带温控led呼吸灯的内存***及其实现方法 |
KR20180038109A (ko) * | 2016-10-05 | 2018-04-16 | 삼성전자주식회사 | 모니터링 회로를 포함하는 전자 장치 및 그것에 포함되는 스토리지 장치 |
JP2022032569A (ja) | 2020-08-12 | 2022-02-25 | キオクシア株式会社 | メモリシステム |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6779045B2 (en) * | 2001-03-21 | 2004-08-17 | Intel Corporation | System and apparatus for increasing the number of operations per transmission for a media management system |
US7721059B2 (en) * | 2006-07-06 | 2010-05-18 | Nokia Corporation | Performance optimization in solid-state media |
JP4461170B2 (ja) | 2007-12-28 | 2010-05-12 | 株式会社東芝 | メモリシステム |
CN101632068B (zh) | 2007-12-28 | 2015-01-14 | 株式会社东芝 | 半导体存储装置 |
JP4489127B2 (ja) | 2008-02-29 | 2010-06-23 | 株式会社東芝 | 半導体記憶装置 |
JP4745356B2 (ja) | 2008-03-01 | 2011-08-10 | 株式会社東芝 | メモリシステム |
JP4675985B2 (ja) * | 2008-03-01 | 2011-04-27 | 株式会社東芝 | メモリシステム |
JP4439569B2 (ja) | 2008-04-24 | 2010-03-24 | 株式会社東芝 | メモリシステム |
JP2009282678A (ja) * | 2008-05-21 | 2009-12-03 | Hitachi Ltd | フラッシュメモリモジュール及びストレージシステム |
JP4551958B2 (ja) | 2008-12-22 | 2010-09-29 | 株式会社東芝 | 半導体記憶装置および半導体記憶装置の制御方法 |
JP2010157130A (ja) | 2008-12-27 | 2010-07-15 | Toshiba Corp | メモリシステム |
JP5198245B2 (ja) | 2008-12-27 | 2013-05-15 | 株式会社東芝 | メモリシステム |
JP5317689B2 (ja) | 2008-12-27 | 2013-10-16 | 株式会社東芝 | メモリシステム |
JP2011128998A (ja) | 2009-12-18 | 2011-06-30 | Toshiba Corp | 半導体記憶装置 |
-
2010
- 2010-06-22 JP JP2010141774A patent/JP2012008651A/ja active Pending
-
2011
- 2011-03-21 US US13/052,146 patent/US8527727B2/en not_active Expired - Fee Related
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013121596A1 (ja) * | 2012-02-15 | 2013-08-22 | 国立大学法人東京大学 | メモリコントローラ,データ記憶装置およびメモリの制御方法 |
JP2013168015A (ja) * | 2012-02-15 | 2013-08-29 | Univ Of Tokyo | メモリコントローラ,データ記憶装置およびメモリの制御方法 |
US9977733B2 (en) | 2012-02-15 | 2018-05-22 | The University Of Tokyo | Memory controller, data storage device and memory control method using data utilization ratio |
WO2014185037A1 (ja) * | 2013-05-17 | 2014-11-20 | 学校法人中央大学 | データ記憶システムおよびその制御方法 |
JP2014225197A (ja) * | 2013-05-17 | 2014-12-04 | 学校法人 中央大学 | データ記憶システムおよびその制御方法 |
EP2884396A1 (en) | 2013-12-06 | 2015-06-17 | Fujitsu Limited | Storage control apparatus, storage control program, and storage control method |
US9501406B2 (en) | 2013-12-06 | 2016-11-22 | Fujitsu Limited | Storage control apparatus and storage control method |
US10474569B2 (en) | 2014-12-29 | 2019-11-12 | Toshiba Memory Corporation | Information processing device including nonvolatile cache memory and processor |
US9690652B2 (en) | 2015-01-16 | 2017-06-27 | Kabushiki Kaisha Toshiba | Search device and search method searching data based on key |
JP2016134166A (ja) * | 2015-01-16 | 2016-07-25 | 株式会社東芝 | 検索装置 |
US9361911B1 (en) | 2015-05-14 | 2016-06-07 | Kabushiki Kaisha Toshiba | Magnetic recording head and disk device with the same |
JP2020510905A (ja) * | 2017-02-06 | 2020-04-09 | 中興通訊股▲ふん▼有限公司Zte Corporation | フラッシュメモリファイルシステム及びそのデータ管理方法 |
JP2020003836A (ja) * | 2018-06-25 | 2020-01-09 | 日本精機株式会社 | 車両用表示装置 |
JP7047628B2 (ja) | 2018-06-25 | 2022-04-05 | 日本精機株式会社 | 車両用表示装置 |
JP2022078261A (ja) * | 2018-06-25 | 2022-05-24 | 日本精機株式会社 | 車両用表示装置 |
JP7256976B2 (ja) | 2018-06-25 | 2023-04-13 | 日本精機株式会社 | 車両用表示装置 |
US10775865B2 (en) | 2018-08-23 | 2020-09-15 | Toshiba Memory Corporation | Memory system including a nonvolatile memory and a volatile memory, and method |
Also Published As
Publication number | Publication date |
---|---|
US20110314204A1 (en) | 2011-12-22 |
US8527727B2 (en) | 2013-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8527727B2 (en) | Semiconductor storage device, with organizing-state notify processing | |
JP5317689B2 (ja) | メモリシステム | |
JP5221332B2 (ja) | メモリシステム | |
JP5198245B2 (ja) | メモリシステム | |
KR101186788B1 (ko) | 메모리 시스템 및 메모리 시스템의 제어 방법 | |
KR101101655B1 (ko) | 메모리 시스템 | |
US8443144B2 (en) | Storage device reducing a memory management load and computing system using the storage device | |
KR101079890B1 (ko) | 메모리 시스템 | |
KR101066937B1 (ko) | 메모리 시스템 및 그 데이터 소거 방법 | |
US20130275650A1 (en) | Semiconductor storage device | |
JP2011128998A (ja) | 半導体記憶装置 | |
JP2010152909A (ja) | 不揮発性半導体メモリドライブ装置、情報処理装置および不揮発性半導体メモリドライブ装置における記憶領域の管理方法 | |
JP2013200741A (ja) | 半導体記憶装置、その制御方法及び情報処理装置 | |
JP2010152517A (ja) | 不揮発性半導体メモリドライブ装置および不揮発性半導体メモリドライブ装置のアドレス管理方法 |