JP5404483B2 - メモリシステム - Google Patents

メモリシステム Download PDF

Info

Publication number
JP5404483B2
JP5404483B2 JP2010061181A JP2010061181A JP5404483B2 JP 5404483 B2 JP5404483 B2 JP 5404483B2 JP 2010061181 A JP2010061181 A JP 2010061181A JP 2010061181 A JP2010061181 A JP 2010061181A JP 5404483 B2 JP5404483 B2 JP 5404483B2
Authority
JP
Japan
Prior art keywords
block
free
blocks
list
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010061181A
Other languages
English (en)
Other versions
JP2011197788A (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
Toshiba Information Systems Japan Corp
Original Assignee
Toshiba Corp
Toshiba Information Systems Japan 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, Toshiba Information Systems Japan Corp filed Critical Toshiba Corp
Priority to JP2010061181A priority Critical patent/JP5404483B2/ja
Priority to TW099129131A priority patent/TWI475561B/zh
Priority to CN201010275123.8A priority patent/CN102193872B/zh
Priority to US12/884,844 priority patent/US8266396B2/en
Publication of JP2011197788A publication Critical patent/JP2011197788A/ja
Application granted granted Critical
Publication of JP5404483B2 publication Critical patent/JP5404483B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Description

本発明は、不揮発性半導体メモリを備えたメモリシステムに関するものである。
NAND型フラッシュメモリを備えたメモリシステムは、複数のチップを並列駆動することで転送性能を向上させている。特許文献1では、複数のプレーンを有するNAND型フラッシュメモリにおいて、各プレーンでの初期不良ブロックの個数に関係なく、各プレーンでの空きブロック数の下限値が均等になるように制御することで、各プレーンにおいて、書き込み済みのデータを書き換える際のプレーン内のブロックスワップ用として使用する空きブロックが無くなることを防止している。
しかしながら、特許文献1における空きブロック数の下限値は、後発的な不良ブロック発生を考慮して設定された値であり、後発的な不良ブロックが発生しない限り、確保された空きブロックが有効利用されることはない。
特開2007−199905号公報
本発明は、書き込み並列度の低下を防止可能なメモリシステムを提供する。
本願発明の一態様にかかるメモリシステムによれば、ブロックを複数個有する不揮発性半導体メモリと、前記不揮発性半導体メモリへの書き込みの際に、有効データを含まないブロックであるフリーブロックを1乃至複数個前記不揮発性半導体メモリから選択するブロック選択部と、前記選択されたフリーブロックに書き込みを行う書き込み制御部とを備え、前記ブロック選択部は、前記不揮発性半導体メモリに含まれるフリーブロックを、並列動作可能なブロックの集合単位を用いて複数本のフリーブロック管理リストに分類したリスト部と、通常優先度でフリーブロックを取得する際に、フリーブロック数が第1の閾値より多く存在するフリーブロック管理リストからフリーブロックを取得するよう動作する第1のフリーブロック選択部と、高優先度でフリーブロックを取得する際に、フリーブロック数が第1の閾値より多く存在するフリーブロック管理リストおよびフリーブロック数が第1の閾値より多く存在しないフリーブロック管理リストからフリーブロックを取得するよう動作する第2のフリーブロック選択部とを備えることを特徴とする。
本発明によれば、書き込み並列度の低下を防止可能なメモリシステムを提供できる。
図1は、SSDの構成例を示すブロック図である。 図2は、NANDコントローラとNANDメモリとの接続態様を示す図である。 図3は、NANDコントローラの内部構成例を示すブロック図である。 図4は、NANDメモリの物理的構成を示す図である。 図5は、NANDメモリおよびRAM内に形成された機能構成を示すブロック図である。 図6は、LBA論理アドレスを示す図である。 図7は、比較例による動的ブロック割り当て方式を概念的に示す図である。 図8は、比較例による動的ブロック割り当て方式を概念的に示す図である。 図9は、第1の実施形態の要部構成を示す機能ブロック図である。 図10は、フリーブロックリストおよびアクティブブロックリストを示す図である 図11は、書き込み動作の全体的流れを示すフローチャートである。 図12は、通常優先度でのフリーブロック選択手順を示すフローチャートである。 図13は、高優先度でのフリーブロック選択手順を示すフローチャートである。 図14は、第1の実施形態の要部構成を示す機能ブロック図である。 図15は、第2の実施形態の動作手順を示すフローチャートである。 図16は、パーソナルコンピュータの外観を示す斜視図である。 図17は、パーソナルコンピュータの機能構成例を示す図である。
以下に添付図面を参照して、本発明の実施の形態にかかるメモリシステムを詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。
NAND型フラッシュメモリに求められる性能の一つとして、ホスト機器が指定する論理アドレスが基本的に連続する書き込みであるシーケンシャルライト(逐次書き込み)時のデータ転送性能(以下、シーケンシャルライト性能)がある。シーケンシャルライト性能を上げるためには、同時に複数のチップを駆動するなどして、できるだけ書き込み並列数を上げることが重要になる。
また、NAND型フラッシュメモリでは、ホスト機器が指定するデータの論理アドレスと、NAND型フラッシュメモリ上での実際の記憶領域である物理アドレスとの関係を、データ更新の都度動的に関係付ける論物変換方式が採用されることがある。この論物変換方式では、空きブロックを複数のグループに分類し、並列に書き込みができる組み合わせで各グループから空きブロックを選択して並列処理を実現するが、ホスト機器が指定するデータのアドレスによっては、特定のグループのブロックに選択が集中し、選択が集中したグループのブロックが無くなり、その結果、並列に書き込みができる組み合わせで空きブロックの選択ができず、並列度が低下する可能性がある。
[第1の実施形態]
図1は、メモリシステムの一例としてのSSD(Solid State Drive)100の構成例を示すブロック図である。SSD100は、SSDコントローラとしてのドライブ制御回路4と、不揮発性半導体メモリとしてのNAND型フラッシュメモリ(以下、NANDメモリと略す)10と、バッファメモリ、作業用メモリ領域などとして機能する例えば揮発性半導体メモリで構成されるRAM20と、ATAインタフェース(ATA I/F)2などのメモリ接続インタフェースなどを備えている。SSD100は、ATA I/F2を介してパーソナルコンピュータあるいはCPUコアなどのホスト装置(以下、ホストと略す)1と接続され、ホスト1の外部メモリとして機能する。
NANDメモリ10は、ホスト1によって指定されたユーザデータを記憶したり、RAM20で管理される管理情報をバックアップ用に記憶したりする。NANDメモリ10は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。NANDメモリ10は、複数のメモリチップによって構成され、各メモリチップは、データ消去の単位である物理ブロックを複数配列して構成される。また、NANDメモリ10では、物理ページごとにデータの書き込み及びデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。図1では、NANDメモリ10は、4チャネル(4ch:ch0〜ch3)を介して、ドライブ制御回路4内部のNANDコントローラ113に並列接続されており、4つのチャネル並列動作要素10a〜10dを並列動作させることが可能である。チャネル数は4つに限らず、任意のチャネル数を採用可能である。
RAM20は、データ転送用、管理情報記録用または作業領域用の記憶部として使用される。具体的には、データ転送用の記憶部(データ転送用バッファ)としては、ホスト1から書込要求があったデータをNANDメモリ10に書込む前に一時的に保存したり、ホスト1から読出要求があったデータをNANDメモリ10から読出して一時的に保存したりするために使用される。また、管理情報記録用の記憶部としては、NANDメモリ10に記憶されるデータの格納位置などを管理するための管理情報(NANDメモリ10に記憶されている各種管理テーブルが起動時などに展開された管理テーブル、これら管理テーブルの変更差分情報であるログなど)を格納するために使用される。
ドライブ制御回路4は、ホスト1とNANDメモリ10との間でRAM20を介してデータ転送制御を行うとともに、SSD100内の各構成要素を制御する。
ドライブ制御回路4は、データアクセス用バス101、回路制御用バス102を備えている。回路制御用バス102には、ドライブ制御回路4全体を制御するプロセッサ104が接続されている。回路制御用バス102には、NANDメモリ10に記憶された各管理プログラム(FW:ファームウエア)をブートするブート用プログラムが格納されたブートROM105がROMコントローラ106を介して接続されている。
ATAインタフェースコントローラ(ATAコントローラ)111、NANDコントローラ113、及びRAMコントローラ114は、データアクセス用バス101と回路制御用バス102との両方に接続されている。ATAコントローラ111は、ATAインタフェース2を介してホスト1との間でコマンド(ライト、リード、フラッシュなど)およびデータなどを送受信する。データアクセス用バス101には、データ作業領域及びファームウェア展開領域として使用されるSRAM115がSRAMコントローラ116を介して接続されている。NANDメモリ10に記憶されているファームウェアは起動時、ブートROM105に記憶されたブート用プログラムによってSRAM115に転送される。
RAMコントローラ114は、プロセッサ104とRAM20とのインタフェース処理などを実行する。NANDコントローラ113は、プロセッサ104とNANDメモリ10とのインタフェース処理、NANDメモリ10−RAM20間のデータ転送制御、誤り訂正符号のエンコード/デコード処理などを実行する。
図2は、NANDコントローラ113とNANDメモリ10との接続態様を示すものである。NANDメモリ10は、前述したように、複数個のチャネル並列動作要素10a〜10dによって構成されている。各チャネル並列動作要素10a〜10dは、バンクインターリーブが可能な複数のバンク(図2では4バンク、Bank0〜Bank3)によって構成されており、各チャネル並列動作要素10a〜10d内の各々のバンクは、複数のメモリチップ(図2では、2メモリチップ、Chip0、Chip1)によって構成されている。
図2に示すように、NANDコントローラ113は、複数のチャネルを有し、各チャネルでは、コントロールI/O信号(CtrlI/O)を共有する複数のメモリチップを4本のチップイネーブル信号(CE)でバンク毎に個別に制御する。また、複数のチャネルを跨って4本のレディ/ビジー信号(RyBy)を共有し、レディ/ビジー信号(RyBy)を共有する各チャネルのメモリチップが同時に動作するように制御を行う。レディ/ビジー信号(RyBy)を共有するメモリチップ群をバンクと呼び、各々のバンクは独立して書き込み/読み出し/消去動作を行うことが可能である。
図3は、NANDコントローラ113の内部構成例を示すものである。NANDコントローラ113では、各チャネルを独立して動作させるために、チャネル毎に、DMAコントローラ(DMAC)50と、誤り訂正回路(ECC)51、コマンド発行を行うNANDインタフェース(NANDI/F)52を備える。各NANDI/F52には、4バンク分のチップイネーブル信号CE(CE0〜CE3)が接続され、アクセスするバンクに応じてCE信号(CE0〜CE3)を制御する。また、4バンクを独立して動作させるために、バンク毎に共通接続されたRyBy信号を監視してバンクの状態を管理するバンクコントローラ(BANK−C)53を4つ備える。BANK−C53は、それぞれのバンクに対する要求をキューイングする機能を備え、各バンクへの要求がある場合にチャネルの使用権を確保し、自らが管理するバンクへの読み出し/書き込み/消去要求を実行する。調停制御回路54は、NANDI/F52及びBANK−C53を監視し、各バンクのチャネル使用権を所定の規則に従って調停する。
図4は、NANDメモリ10のより詳細な内部構成を示すものである。図4では、チャネル数を(M+1)個として示し、バンク数をN+1個として示し、チップ数をK+1個として示した。図4に示すように、各メモリチップ(chip0〜chipK)は、例えば、それぞれ複数の物理ブロックを含むプレーン0(plane0)、プレーン1(plane1)の2つの領域(District)に分割されている。プレーン0及びプレーン1は、互いに独立した周辺回路(例えば、ロウデコーダ、カラムデコーダ、ページバッファ、データキャッシュ等)を備えており、倍速モードを使用することで、同時に消去/書き込み/読み出しを行うことが可能である。すなわち、同じプレーン内の複数の物理ブロック同士は並列にアクセスできないが、異なるプレーンに属する物理ブロック同士は並列にアクセス可能である。メモリチップ内のプレーン数は2個に限らず、任意である。また、1個のメモリチップは、図4で拡大して示すように、複数の物理ブロックで構成されている(図4ではX+1個の物理ブロック)。
このように、NANDメモリ10では、複数のチャネルによる並列動作、複数のバンクによる並列動作、複数のプレーンを用いた倍速モードによる並列動作が可能であり、チャネル数を4、バンク数を4、プレーン数を2とした場合、最大32個の物理ブロックを並列動作させることが可能となる。
図5は、NANDメモリ10およびRAM20内に形成された機能ブロックを示すものである。ホスト1とNANDメモリ10との間には、RAM20上に構成されたライトバッファ(WB)21およびリードバッファ(RB)22が介在している。WB21はホスト1からのWriteデータを一時保存し、RB22はNANDメモリ10からのReadデータを一時保存する。NANDメモリ10内のブロックは、書き込み時のNANDメモリ10に対する消去の量を減らすために、プロセッサ104により、中間ストレージ領域(VS)12、およびメインストレージ領域(MS)11という各管理領域に割り当てられている。VS12は、WB21からのデータを「小さな単位」であるクラスタ単位に管理するものである。MS11は、WB21、VS12からのデータを「大きな単位」であるトラック単位で管理する。
つぎに、図5の各構成要素の具体的な機能構成について説明する。ホスト1はSSD100に対し、ReadまたはWriteする際には、ATAインタフェース2を介して論理アドレスとしてのLBA(Logical Block Addressing)を入力する。LBAは、図6に示すように、セクタ(サイズ:512B)に対して0からの通し番号をつけた論理アドレスである。本実施の形態においては、図5の各構成要素であるWB21、RB22、VS12、MS11の管理単位として、LBAの下位(s+1)ビット目から上位のビット列で構成されるクラスタアドレスと、LBAの下位(s+t+1)ビットから上位のビット列で構成されるトラックアドレスとを定義する。
トラックと論理ブロックのサイズは同じであってもよいし、トラックサイズが論理ブロックのサイズより小さくてもよい。論理ブロックとは、NANDメモリ10のチップ上の物理ブロックを複数組み合わせて構成される仮想的なブロックのことであり、この実施の形態では、論理ブロックは1つの物理ブロックを最大、並列チャネル数分(この場合、図1に示すように最大4ch)まとめた単位のことをいう。また、論理ブロックを構成する物理ブロックは、バンクインターリーブを有効利用するため、同じバンクに属する物理ブロックから選択される。クラスタサイズはセクタサイズ以上であり、例えば、クラスタサイズは論理ページサイズより小さく設定される。論理ページも同様であり、1つの物理ページを最大、並列チャネル数分まとめた単位のことをいう。トラックサイズは、クラスタサイズの2以上の自然数倍であるとする。
NANDメモリ10では、前述したように、複数のバンクによる並列動作、複数のプレーンを用いた倍速モードによる並列動作が可能である。したがって、論理ブロック単位に考えた場合、NANDメモリ10では、バンクによる並列動作、プレーンを用いた並列動作を行うことにより、論理ブロックを複数個並列動作させることができる。
・リードバッファ(RB)22
RB22は、ホスト1からのRead要求に対して、NANDメモリ10(VS12、MS11)からのReadデータを一時的に保存するための領域であり、キャッシュメモリ機能を持たせるようにしてもよい。ホスト1へのデータ転送は、基本的に、RB22から行う。WB21に最新のデータがある場合は、WB21からホスト1へデータ転送が行われる。
・ライトバッファ(WB)21
WB21は、ホスト1からのWrite要求に対して、ホスト1からのWriteデータを一時的に保存するための領域であり、キャッシュメモリ機能を持たせるようにしてもよい。WB21上のデータは、クラスタ単位で管理し、書き込みと有効データの管理はセクタ単位で行う。WB21のリソースが不足した場合、WB21の記憶データをNANDメモリ10に追い出す。この追い出しの際、WB21上で有効クラスタの多いトラック(高密度トラック)は、MS11へ追い出され、WB21上で有効クラスタの少ないトラック(低密度トラック)は、VS12へ追い出される。高密度データとは、所定の論理アドレス範囲内に有効データが所定割合より多いデータであり、低密度データとは、所定の論理アドレス範囲内に有効データが所定割合より少ないデータである。
・メインストレージ領域(MS)11
MS11はトラック単位でデータの管理が行われ、ほとんどのユーザデータが格納される。WB21上で有効クラスタの多いトラック(高密度トラック:有効クラスタが所定の閾値α以上あるトラック)は、WB12から直接MS11に書き込まれる。その他、MS11には、VS12で管理しきれなくなったデータが入力される。MS11に入力されたトラックと同一LBAのトラックについてはMS11の論理ブロック内で無効化し、この論理ブロックを解放する。MS11に入力されたトラックと同一LBAのトラックに属するクラスタについては、VS12内で無効化し、論理ブロック内の全クラスタが無効になった論理ブロックは解放する。
・中間ストレージ領域(VS)12
VS12はクラスタ単位でデータを管理される例えばFIFO構造のバッファであり、入力は複数のクラスタをまとめた論理ページ単位で行われる。VS12には、WB21上で有効クラスタの少ないトラック(低密度トラック:有効クラスタが所定の閾値α未満のトラック)が書き込まれる。VS12は、例えば、データの書き込み順序で論理ブロックが並んだFIFO構造となっている。VS12に存在するクラスタと同一LBAのクラスタがVS12に入力された場合、VS12内のクラスタを無効化するだけでよく、書き換え動作を伴わない。VS12に入力されたクラスタと同一LBAのクラスタについては、論理ブロック内で無効化し、論理ブロック内の全クラスタが無効になった論理ブロックは解放する。VS12の容量が飽和した場合、VS12内のクラスタをトラックに統合して、MS11へ追い出す。
このようにNANDメモリ10のストレージ領域は、MS11とVS12とに分けて管理されているので、LBAアドレスが基本的には連続する書き込みであるシーケンシャルライトによるデータは高密度データとして主にMS11に書き込まれ、LBAアドレスが連続しないランダムな書き込みであるランダムライトによるデータは低密度データとして主にVS12に書き込まれる。
ここで、第1の実施形態では、論理ブロックを、フリーブロックFB、アクティブブロックABとして区別して管理する。フリーブロックFBとは、内部に有効データを含まない、用途未割り当ての論理ブロックのことである。アクティブブロックABとは、内部に有効データを含み、用途が割り当てられた(例えば、VS12、MS11に割り当てられた)論理ブロックのことである。ホスト1との間で使用されるLBAとしての論理アドレスと、実際のNANDメモリ10上での記憶位置を示す物理アドレスとの関係がブロック単位に管理されている。SSD100では、論理アドレスと物理アドレスとの関係は予め静的に決定されておらず、データの書込み時に動的に関係付けられる論物変換方式が採用されている。
例えば、同じLBAアドレス上のデータを上書きする場合は、つぎのようなブロック交換が行われる。論理アドレスA1に有効なデータが保存されており、記憶領域としてはブロックB1が使用されていたとする。ホスト1から論理アドレスA1のデータ(サイズはブロックと同じとする)を上書きするコマンドを受信した場合、フリーブロックFB(ブロックB2とする)を1個確保し、そのフリーブロックFBにホスト1から受信したデータを書き込む。その後、論理アドレスA1とブロックB2を関係付ける。その結果、ブロックB2はアクティブブロックABになり、ブロックB1に保存されたデータは無効になるためブロックB1はフリーブロックFBとなる。このように、SSD100では、同じ論理アドレスA1のデータであっても、実際の記録領域として使用されるブロックは書込みの度に変化する。
フリーブロックFBは、FB管理リストによって管理されている。FB管理リストは、例えば、フリーブロックFBとなった時間順やブロックの消去回数順にソートされたFIFO形式のリストであり、各エントリには、ブロック識別子が保持される。アクティブブロックABからフリーブロックFBとなったフリーブロックFBは、FB管理リストに追加され、フリーブロックFBが使用される際には、FB管理リストから取り出される。FB管理リストでは、全ての論理ブロックの消去回数、消去間隔を概ね等しくするウェアレベリング処理が実行されている。
次に、本実施形態の要部について説明する。本実施形態においては、VS12とMS11でのフリーブロックFBの割り当て管理を分離し、MS11には優先的にフリーブロックFBを割り当てる。
最初に、比較例について説明する。NANDメモリ10は、書き込み速度が遅いため、SSD100では、前述したように、チャネル、プレーン、バンクによる並列動作を可能にして、転送性能を向上させている。シーケンシャルライト時に論理ブロックの書き込み並列数を確保する最も簡単な方法は、LBAの順序と並列に書き込めるバンク、プレーンの順序を固定するLBA固定割り当て方式を採用し、常に最大並列数で書けるようにすることである。しかし、この方式では、特定のLBAに対する書き込みが繰り返されると、特定のプレーンの消去回数が増加し、製品寿命が短くなってしまう可能性がある。
そこで、LBAとバンク/チップ/プレーンの割り当てを動的に可変するLBA動的ブロック割り当て方式が考えられる。この方式では、図7に示すように、並列書き込み可能なプレーンの組(プレーン単位で構成された並列書き込み可能な複数本のFB管理リスト)を作り、書き込み要求がくるたびに並列に書き込めるブロックをラウンドロビンで新たなデータに割り当てていく。空白の四角は、フリーブロックFBを示し、「0」が挿入された四角は、LBAアドレス「0」のデータが格納されたブロックであるとする。図7では、ホストにおいて、4つのスレッドがシーケンシャルライトを行った状態を示しており、第1スレッドのLBAアドレスが「0,1,2,3,…」、第2スレッドのLBAアドレスが「8,9,10,11,…」、第3スレッドのLBAアドレスが「16,17,18,19,…」、第4スレッドのLBAアドレスが「24,25,26,27,…」であるとし、SSD100には、ホスト1から図示のような順番でデータが入力されたとする。図7では、データの入力順にラウンドロビンによってプレーンが選択され、LBAアドレスは各プレーンに分散されている。
このように、ラウンドロビン方式を用いた場合、通常の利用では、LBAアドレスは各プレーンに確率的に分散するが、書き込みパターンに依存してプレーンごとのブロック使用数が偏る場合がある。ブロックの使用数が偏り、特定のプレーンからブロックが確保できなくなると、書き込みの並列数が偏り、転送性能が低下してしまう。
図8は、LBA動的ブロック割り当て方式を用いた場合でも、特定のLBAパターンによってプレーンごとのブロック使用数が偏る場合を示している。まず、最初、全プレーンに対するシーケンシャルライト(全面シーケンシャルライト)を行ったとする。単純なランドロビンを用いた場合、図8(a)に示すように、LBA固定割り当て方式と同様のマッピングとなる。つぎに、特定プレーン(この場合はプレーン0)に存在するブロックのみを更新する書き込みが発生したとする。すなわち、プレーン0のブロックには、8の倍数の論理アドレス「0,8,16,24,…」のデータが格納されており、8の倍数の論理アドレス「0,8,16,24,…」に対する更新書き込みが発生したとする。LBA動的ブロック割り当て方式では、前述したように、同じ論理アドレスのデータであっても、実際の記録領域として使用されるブロックは書込みの度に変化するので、図8(b)に示すように、更新書き込みのデータは、各プレーンのブロックに分散されて書き込まれ、これに伴い、全面シーケンシャルライトのときにデータが書き込まれたプレーン0のブロックは、フリーブロックFBとして解放されていく。この結果、プレーン0のみにフリーブロックFBが集中し、プレーン0以外のプレーンでは、ブロックの解放(アクティブブロックのフリーブロック化)が発生しないので、フリーブロックが枯渇してしまう。このように、LBA動的ブロック割り当て方式を用いた場合でも、書き込みパターンによっては、特定のプレーンの使用数が多くなり、書き込み並列度が下がってしまう可能性がある。
前述したように、LBAアドレスが基本的には連続する書き込みであるシーケンシャルライトによるデータは高密度データとして主にMS11に書き込まれ、LBAアドレスが連続しないランダムな書き込みであるランダムライトによるデータは低密度データとして主にVS12に書き込まれる。シーケンシャルライトが行われるMS11には、シーケンシャルライト性能を向上させるために、書き込み並列数を上げることが要求されるので、LBA固定割り当て方式を採用することも考えられるが、この方式では、前述したように、特定のLBAに対する書き込みが繰り返されると、特定のプレーンの消去回数が増加し、製品寿命が短くなってしまう可能性がある。
以上のことから、本実施形態においては、VS12とMS11の双方で、動的ブロック割り当て方式を採用し、VS12とMS11でのフリーブロックFBの割り当て管理を分離し、MS11には優先的にフリーブロックFBを割り当てることで、シーケンシャルライトのときのブロック並列度の低下を防止する。
図9は、第1の実施形態の要部構成を示す機能ブロック図である。コントローラ5は、データ読出部60、データ書込部61、データ管理部62を備え、これらの機能要素は前述したファームウェアによって実現される。コントローラ5を、コントローラ5で実現すべき機能が回路として組み込まれたSoC(System-on-a-chip)で構成してもよい。コントローラ5には、バスを介して、前述したATAコントローラ111、ライトバッファ21、NANDメモリ10が接続されている。
データ管理部62は、ホスト1との間で使用されるLBAとしての論理アドレスと、実際のNANDメモリ10上での記憶位置を示す物理アドレスとの論物関係を管理する。論理アドレスと物理アドレスとの関係は予め静的に決定されておらず、データの書込み時に動的に関係付けられる前述した論物変換方式が採用されている。
データ読出部60は、ATAコントローラ111からリードコマンド受信を通知されると、データ管理部62にコマンドで指定されたアドレスに対応するブロックを検索させ、検索されたブロックからデータをリードバッファ(RB)22(図5参照)に読み出す。データ読出部60は、その後コマンドで指定された範囲のデータをホスト1に送信するようにATAコントローラ111を制御する。
データ書込部61は、ATAコントローラ111からライトコマンド受信を通知されると、ライトバッファ(WB)21の空き領域を確保して、ホスト1からデータを受信するようにATAコントローラ111を制御する。データ書込部61は、その後ライトバッファ(WB)21に十分な書込みデータが蓄積されてデータ追い出しが必要になると、ブロック管理部70に対しデータ書込みに必要な数のフリーブロックFBを確保する要求を出し、ブロック管理部70で確保されたブロックにデータを書き込む。その後、データ書込部61は、データ管理部62に対して、アドレスとブロックの対応関係を登録するよう要求する。
ブロック管理部70は、フリーブロック選択部71、フリーブロック管理部80、アクティブブロック管理部90を備え、ブロックの管理と、データ書込み時に使用するフリーブロックFBの選択と、アクティブブロックABの選択を行う。
フリーブロック管理部80は、フリーブロックFBを管理するものであり、プレーン毎にフリーブロックFBを管理するための複数本のフリーブロックリスト(FBリスト)を有する。FBリストは、前述した管理情報として、RAM20に記憶されて使用される。各フリーブロックは、自身が属するプレーンに対応するフリーブロックリストにより管理される。FBリストの詳細な形態としては、各フリーブロックFBに対応するブロック識別子を含むブロック情報をノードとしてつなぐリスト形態がある。フリーブロックリストにブロックをつなぐ順序は、単純なFIFOとしてもよいし、ブロックの消去回数でソートした順番でつないでもよい。
アクティブブロック管理部90は、アクティブブロックABを管理するものであり、プレーン毎にアクティブブロックABを管理する複数本のアクティブブロックリスト(ABリスト)を有する。ABリストは、前述した管理情報として、RAM20に記憶されて使用される。各アクティブブロックは、自身が属するプレーンに対応するアクティブブロックリストにより管理される。ABリストの詳細な形態としては、各アクティブブロックABに対応するブロック識別子を含むブロック情報をノードとしてつなぐリスト形態がある。ABリストにブロックをつなぐ順序は、単純なFIFOとし、確保された順番にソートされるようにする。確保された順序が判定できるのであれば、双方向リストの構造などでもよく、FIFOなどの構造に限らない。
フリーブロック選択部71は、データ書込部61から要求されたフリーブロック数βを確保するよう、フリーブロック管理部80で管理される複数本のFBリストから要求数βのフリーブロックFBを選択する。フリーブロック選択部71が並列書込み可能なフリーブロックFBの組を選択する際には、所定の順序規則に従いFBリストを選択し、選択したFBリストからフリーブロックFBを取得する。
本実施形態では、論理ブロックを、例えば、各チャネルから同一のバンク番号/チップ番号/プレーン番号を持つ物理ブロックを集めて構成する。即ち、本実施形態では、論理ブロックを構成する物理ブロックの組み合わせ方に関して、下記(1)乃至(4)の制約を設ける。
(1)各チャネルの物理ブロックを1つずつ選択すること。
(2)各チャネルの物理ブロックは、同じチップ番号に属する物理ブロックから選択すること。
(3)各チャネルの物理ブロックは、同じプレーン番号に属する物理ブロックから選択すること。
(4)同一バンク内の物理ブロックを選択すること。
したがって、論理ブロックは、バンク毎に、チップ毎に、プレーン毎に分類可能になる。また、図10に示すように、FBリスト80−0〜80−7は、それぞれ、同一のバンク番号、チップ番号、プレーン番号を持つ論理ブロックのリストとして構成される。
順序規則は、その順にFBリストを選択すれば、並列書込み可能な組のフリーブロックFBが取得できる順序であることが望ましい。
例えば、バンク数が4個、各バンク内のチップ数が1個、各チップ内のプレーン数が2個の場合(チップ数は全体で4個)、全体で8個のプレーンが存在し、それらのプレーン間では全て並列書込みが可能である。この場合、各プレーンからフリーブロックを1個ずつ選択すれば、最大で8並列での書込みが可能である。この場合、各プレーンに対応するフリーブロックリストに0から7までの識別子を付けて、
{0,1,2,3,4,5,6,7}
という長さ8の順序規則を作る。この順序規則を繰り返せば、どの位置からフリーブロックリストの選択を開始したとしても、最大8並列書込み可能なフリーブロックを選択できる。例えば位置4から始まった場合でも{4,5,6,7,0,1,2,3}とフリーブロックリストを選択すればよい。
並列書込み可能なプレーンの組に制約がある場合には、並列書込みできないプレーンが順序規則の中でできる限り距離を置くように配置すればよい。例えば、上記同様チップ数は全体で4個ではあるが、バンク数が2個、各バンク内のチップ数が2個、各チップ内のプレーン数が2個の場合、すなわち、各チップは2個ずつ組で2個のバンクを構成しており、同じバンクに属するチップは並列書込みできない制約がある場合を考える。この場合、全体で8個のプレーンが存在しているが、最大並列度は4である。この時、各プレーンを「B(バンク番号)C(バンク内チップ番号)P(チップ内プレーン番号)」と表記すると、図10に示すように、
{B0C0P0,B0C0P1,B1C0P0,B1C0P1,
B0C1P0,B0C1P1,B1C1P0,B1C1P1}
という順序規則を作ればよい。
図10においては、同じバンクに属するチップは並列書込みできないので、FBリスト80−0〜80−3に所属する4つのフリーブロックFBは並列動作可能である。また、FBリスト80−4〜80−7に所属する4つのフリーブロックFBも並列動作可能である。FBリスト80−2〜80−5に所属する4つのフリーブロックFBも並列動作可能である。FBリスト80−6〜80−1に所属する4つのフリーブロックFBも並列動作可能である。しかし、FBリスト80−0〜80−1に所属するフリーブロックFBとFBリスト80−4〜80−5に所属するフリーブロックFBとは並列動作不可能であり、FBリスト80−2〜80−3に所属するフリーブロックFBとFBリスト80−6〜80−7に所属するフリーブロックFBとは並列動作不可能であり、これらは順序規則の中で距離をおいて配置している。
また、図10においては、アクティブブロックリスト90−0〜90−7も示されている。各プレーンのFBリスト80−1〜80−7から取得されたフリーブロックのブロック識別子は、同じプレーンのABリスト90−1〜90−7に繋がれて、アクティブブロックABとして登録される。
フリーブロック選択部71は、順序規則上で何番目の選択かを示す情報を保持する。この情報は、順序規則に従いFBリストの順序列を作成した場合の、順序列上の位置を示すことから、位置情報Pと呼ぶ。また、フリーブロック選択部71は、順序規則と位置情報Pに従いFBリストを選択するリスト選択部と、フリーブロック選択後に位置情報Pを更新する位置情報更新部を持つ。リスト選択部および位置情報更新部は、優先度別に、高優先処理部と通常優先処理部の2組が備えられている。
本実施形態では、書込み時の転送能力を確保するため、ホストから受信した書込みデータを一時的にライトバッファ21に蓄積し、十分な量のデータが溜まってからNANDメモリ10の複数のフリーブロックに並列書込みを行う。NANDメモリ10への書き込みに際しては、ライトバッファ21からの追い出し対象(フラッシュ対象)となるデータの粒度(高密度、低密度)に応じて、書込み先(MS11かVS12か)を変更する方式が使用される。この様な方式については、特願2009−535161号において詳細に説明されている。例えば、シーケンシャルライトでは、連続した(高密度の)大きなデータとなり、ブロック単位でまとめてできるだけ大きな並列度を確保してMS11に並列に書き込む。
予備ブロック数情報95は、各FBリストで予備ブロックとして確保しておくフリーブロック数を保持する。この確保しておくフリーブロック数をRとする。この予備ブロックは、高優先リスト選択部72でのみ使用可能であり、通常優先リスト選択部74は、使用することができない。
高優先リスト選択部72は、データ書込部61から高優先度の指定があったときに動作し、データ書込部61から要求されたフリーブロック数βを確保すべく、FBリストの選択を行う。高優先リスト選択部72は、FBリストからフリーブロックFBを選択する際、各FBリストに確保された予備ブロックを使用することができる。高優先位置情報更新部73は、高優先リスト選択部72が動作しているとき、順序規則の位置情報Pの更新を行う。
通常優先リスト選択部74は、データ書込部61から通常優先度の指定があったときに動作し、データ書込部61から要求されたフリーブロック数βを確保すべく、FBリストの選択を行う。通常優先リスト選択部74は、FBリストからフリーブロックFBを選択する際、各FBリストに確保された予備ブロックを使用することができない。通常優先位置情報更新部75は、通常優先リスト選択部74が動作しているとき、順序規則の位置情報Pの更新を行う。なお、高優先位置情報更新部73および通常優先位置情報更新部75を設け、高優先および通常優先の際の位置情報Pの更新を独立に行うようにしたが、高優先および通常優先の際の位置情報Pの更新を共通化してもよい。
つぎに、図11にしたがって書込み処理の全体的な手順の概要について説明する。ATAコントローラ111は、ホスト1からコマンドを受信した場合(ステップS100)、受信したコマンドがライトコマンドであるか否かを判断する(ステップS110)。ATAコントローラ111は、ライトコマンド以外のコマンドである場合は、受信したコマンドに応じた処理を実行する(ステップS120)。
ATAコントローラ111は、受信したコマンドがライトコマンドである場合は、以下の処理を実行する。まず、ATAコントローラ111は、コントローラ5にライトコマンド受信を通知する(ステップS130)。この通知によって、コントローラ5のデータ書込部61がライトバッファ21内に書込みデータを受信する領域を確保し、確保した領域へデータを受信するようにATAコントローラ111に指示を出す(ステップS140)。つぎに、ATAコントローラ111がホスト1から書込みデータを受信し、受信したデータをライトバッファ21上の指示された領域へ格納する(ステップS150)。つぎに、データ書込部61が、ライトバッファ21の蓄積データを所定のフラッシュ閾値と比較することで、ライトバッファ21上に充分なデータが蓄積されているか否かを判断し(ステップS160)、ライトバッファ21上に充分なデータが蓄積されていない場合は、手順をステップS100に移行させ、コマンド待ちの状態に戻る。
ライトバッファ21にフラッシュ閾値以上のデータが蓄積されていた場合は、データ書込部61は、ライトバッファ21からNANDメモリ10へのデータ追い出しに必要なフリーブロック数β(要求数β)を計算する(ステップS170)。データ書込部61は、追い出すデータの粒度(密度)を判定し、データの粒度が細かい場合は(低密度の場合は)、通常優先度を指定し、データの粒度が粗い場合は(高密度の場合は)、高優先度を指定し、必要なフリーブロック数βとともに、ブロック管理部70にフリーブロックFBを要求する(ステップS180)。
ブロック管理部70は、要求数β以下の並列書込み可能なフリーブロックの組を選択して、選択したフリーブロックをデータ書込部61に通知する(ステップS190)。ブロック管理部では、FBリストから選択したフリーブロックFBをアクティブブロックABとし、対応する同じプレーンのABリストにつなぐ(ステップS200)。このステップS190での処理については、後で詳述する。
データ書込部61は、ライトバッファ21上のデータを、ブロック管理部70から通知されたフリーブロックに並列に書き込むようにRAMコントローラ114およびNANDコントローラ113(図1参照)に要求する。RAMコントローラ114は、ライトバッファ21からのデータ読み出しを実行し、NANDコントローラ113は、ライトバッファ21から読み出されたデータを、確保された並列度をもってNANDメモリ10に書込む(ステップS210)。
データ書込部61は、NANDメモリ10に書き込んだデータの論理アドレスとブロックの物理アドレスとの対応関係を登録するようデータ管理部62に要求する。データ管理部62は、データ書込みが行われた論理アドレスとブロックの論物関係を登録し(ステップS220)、さらにデータ書込みが行われた論理アドレスに以前対応付けられていたアクティブブロックABをABリストから取り除き、フリーブロックFBとして管理するようブロック管理部へ通知する(ステップS230)。ブロック管理部70は、データ管理部62から通知されたフリーブロックが属するプレーンに対応するFBリストを特定し、通知されたフリーブロックをFBリストにつなぐ。
データ書き込み部61は、ステップS190で選択された並列書き込み可能なフリーブロックの個数が、要求数βに達したか否かを判断する(ステップS240)。換言すれば、データ書き込み部61は、ライトバッファ21からNANDメモリ10へ追い出す必要のあるデータが残っているか否かを判断する。並列書き込み可能なフリーブロックの個数が要求数βに達していなければ、ステップS170に戻り、要求数βを再計算する。要求数βに達していれば、ライトバッファ21からNANDメモリ10へのデータ追い出し処理を終了する。
つぎに、図11のステップS180で通常優先度が指定されたときのブロック管理部70の動作手順を図12に従って説明する。なお、データ書込部61からのフリーブロック要求数をβ(要求数β)とする。
通常優先リスト選択部74は、通常優先位置情報更新部75から位置情報Pを取得する(ステップS300)。この位置情報Pは、前回の通常優先でのフリーブロック選択での順序規則の終了位置の次の位置である。通常優先リスト選択部74は、取得した位置情報Pから開始した場合の最大並列度mを計算する(ステップS310)。例えば、図10に示したFBリスト構造において、前述したように、FBリスト80−0からフリーブロックFBの取得を開始した場合は、FBリスト80−0からFBリスト80−3までの4つのFBリストを選択することが可能で、最大並列度は4となるが、FBリスト80−1からフリーブロックFBの取得を開始した場合は、FBリスト80−1からFBリスト80−3までの3つのFBリストしか選択することができず、最大並列度は3となる。つぎに、通常優先リスト選択部74は、ブロック取得数nb=0とし、リスト選択回数i=0とする(ステップS320,S330)。
通常優先リスト選択部74は、位置情報Pに対応するFBリスト(P)にフリーブロックFBが予備ブロック数情報95として設定されたR個以上残っているか否かを判定する(ステップS340)。この判定でフリーブロックがR個未満である場合は、通常優先リスト選択部74は、このFBリスト(P)からフリーブロックFBの取得を行わず、手順をステップS370に移行する。ステップS340の判定で、FBリスト(P)にフリーブロックがR個以上ある場合は、通常優先リスト選択部74は、FBリスト(P)から、フリーブロックFBを取得する(ステップS350)。つぎに、通常優先リスト選択部74は、ブロック取得数nbを+1し、リスト選択回数iを+1する(ステップS360、S370)。
つぎに、通常優先リスト選択部74は、位置情報Pを+1して、位置情報Pを次の位置に更新する(ステップS380)。位置情報Pが順序規則の最終位置を越えた場合は、位置情報Pを順序規則の先頭に設定する。つぎに、通常優先リスト選択部74は、ブロック取得数nbが要求数βに達したか否かを判定し(ステップS390)、nb=βである場合は、処理を終了する。また、通常優先リスト選択部74は、リスト選択回数iが計算した最大並列度mに達したか否かを判定し(ステップS395)、i=mである場合は、処理を終了する。このようにして、nb=βまたはi=mが成立するまで、位置情報Pを更新しながらFBリスト(P)からフリーブロックを取得する。
このように、通常優先リスト選択部74は、FBリストからフリーブロックFBを選択する際、各FBリストに確保された予備ブロックを使用することができない。
つぎに、図11のステップS180で高優先度が指定されたときのブロック管理部70の動作手順を図13に従って説明する。データ書込部61からのフリーブロック要求数をβ(要求数β)とする。
高優先リスト選択部72は、高優先位置情報更新部73から位置情報Pを取得する(ステップS400)。この位置情報Pは、前回の高優先でのフリーブロック選択での順序規則の終了位置の次の位置である。高優先リスト選択部72は、取得した位置情報Pから開始した場合の最大並列度mを計算する(ステップS410)。つぎに、高優先リスト選択部72は、ブロック取得数nb=0とし、リスト選択回数i=0とする(ステップS420,S430)。
高優先リスト選択部72は、位置情報Pに対応するFBリスト(P)にフリーブロックFBがあるか否かを判定する(ステップS440)。この判定でフリーブロックがない場合は、高優先リスト選択部72は、このFBリスト(P)からフリーブロックFBの取得を行わず、手順をステップS470に移行する。ステップS440の判定で、FBリスト(P)にフリーブロックがある場合は、通常優先リスト選択部74は、FBリスト(P)から、フリーブロックFBを取得する(ステップS450)。つぎに、高優先リスト選択部72は、ブロック取得数nbを+1し、リスト選択回数iを+1する(ステップS460、S470)。
つぎに、高優先リスト選択部72は、位置情報Pを+1して、位置情報Pを次の位置に更新する(ステップS480)。位置情報Pが順序規則の最終位置を越えた場合は、位置情報Pを順序規則の先頭に設定する。つぎに、高優先リスト選択部72は、ブロック取得数nbが要求数βに達したか否かを判定し(ステップS490)、nb=βである場合は、処理を終了する。また、高優先リスト選択部72は、リスト選択回数iが計算した最大並列度mに達したか否かを判定し(ステップS495)、i=mである場合は、処理を終了する。このようにして、nb=βまたはi=mが成立するまで、位置情報Pを更新しながらFBリスト(P)からフリーブロックを取得する。
このように、高優先リスト選択部72は、FBリストからフリーブロックFBを選択する際、各FBリストに確保された予備ブロックを使用することができる。
なお、ステップS310、S410において最大並列度を計算する際、β>mのとき、位置情報Pを例えば順序規則の先頭のプレーンのFBリストに対応する位置にするなど、位置情報Pを変更して、できるだけ最大並列度を確保するように制御してもよい。
また、上記では、FBリストを選ぶ際に、単純なラウンドロビン方式を採用したが、例えば、各バンク/チップ/プレーンで発生したバッドブロックBBの個数(BB数)に逆対応する値(例えばBB数の逆数)や各バンク/チップ/プレーンで利用可能な論理ブロック数(フリーブロックFBの数とアクティブブロックABの数との総和)や各FBリストに属するブロックの個数などで重み付けしたラウンドロビン方式により、フリーブロックFBを取得するリストを選ぶようにしてもよい。バッドブロックBBとは、誤りが多いなど記憶領域として使用できない物理ブロックのことであり、例えば、消去動作が正常に終了しなかった物理ブロックがバッドブロックBBとして登録される。このように、重み付けしたラウンドロビン方式によりフリーブロックFBを取得するリストを選ぶ方式については、特願2009−30299号において詳細に説明されている。
このように第1の実施形態では、LBA動的ブロック割り当て方式によるフリーブロックリスト管理を採用し、各フリーブロックリストに、所定個数Rの予備ブロックを残しておき、これら予備ブロックは、NANDメモリ10に高密度データの書込みが行われる場合に使用され、低密度データの書込みが行われる場合には、使用されないようにしたので、特定プレーンに存在するブロックのみを更新するような特殊な書き込みが発生したとしても、高密度トラックの書込みが行われるシーケンシャルライトの際の書込み並列度を低下させることなく、高速アクセスが可能となる。
なお、予備ブロック数の設定値Rは、各フリーブロックリスト内のバッドブロックBBの個数などに応じて異ならせてもよい。
[第2の実施形態]
つぎに、この発明の第2の実施形態について説明する。第1の実施形態での手法を用いてもフリーブロック数が各FBリスト間で偏ることは避けられない。そこで、第2の実施形態では、ブロックの使用数がプレーン間(FBリスト間)で偏ってしまった場合には、ホスト1からアクセスのない時間を利用して、ブロックの使用数が多いプレーンから、少ないプレーンにデータを移動し、各プレーンにおいて、ブロックの使用数が一定以下になるようにする。
図14は、第2の実施形態の要部構成を示す機能ブロック図である。図14では、図9に示したコントローラ5にブロック移動部78を追加している。その他の構成要素は、図9に示したものと同様であり、重複する説明は省略する。
ブロック移動部78は、フリーブロックの少なくなったプレーンに対応するアクティブブロックリストからアクティブブロックABを解放し、解放したブロックをFBリストに補充する処理を行う。ブロック移動部78は、どのフリーブロックリストに対して処理を行うかを記録するリスト位置情報79を持つ。
第2の実施形態において、書込み処理の全体的な手順は、図11を用いて説明した手順と同様であり、重複する説明は省略する。以下、図15にしたがって、ブロック移動部78でのデータ移動処理の手順を説明する。
ブロック移動部78は、まず、リスト位置情報79の位置情報P=0とする(ステップS500)。ブロック移動部78は、位置情報Pに対応するFBリスト(P)にフリーブロックが(R−1)個以上残っているか否かを判定する(ステップS510)。この判定で、FBリスト(P)にフリーブロックが(R−1)個以上残っていない場合、ブロック移動部78は、同じ位置情報PのABリスト(P)から、最も古いアクティブブロックABを取得する(ステップS520)。さらに、ブロック移動部78は、取得したアクティブブロックABをABリスト(P)から削除する(ステップS530)。
つぎに、ブロック移動部78は、RAM20の作業領域に、取得したアクティブブロックABの記憶データを読み出す(ステップS540)。つぎに、ブロック移動部78は、通常優先度を指定して、フリーブロック選択部71にフリーブロックを1つ要求する。通常優先リスト選択部74は、図12の手順にしたがって、フリーブロックFBを1つ選択する。通常優先リスト選択部74でのFBリスト選択では、前述したように、フリーブロックがR個以上残っていないFBリストは選択されないので、通常優先リスト選択部74は、ステップS510の判断がNOとなったFBリストとは異なるFBリストからフリーブロックを選択する。通常優先リスト選択部74は、選択したフリーブロックのブロック識別子をブロック移動部78に通知する(ステップS550)。
ブロック移動部78は、ブロック識別子が通知されたフリーブロックに対し、RAM20の作業領域に読み出されたアクティブブロックABの記憶データを書き込む(ステップS560)。つぎに、ブロック移動部78は、ステップS520で選択した位置情報PのアクティブブロックABをフリーブロックとして、同じ位置情報PをもつFBリストP)につなぐ(ステップS570)。さらに、ブロック移動部78は、ステップS550で取得されたフリーブロックFBを、そのフリーブロックが属するプレーンに対応するFBリストにつなぐ(ステップS580)。つぎに、ブロック移動部78は、同じ位置情報Pに対応するFBリスト(P)にフリーブロックが(R−1)個以上残っているか否かを再度判定し(ステップS510)、FBリスト(P)にフリーブロックが(R−1)個以上残っていない場合は、ステップS510の判断がYESとなるまで、ステップS520〜S580の処理を繰り返す。
ステップS510において、フリーブロックが(R−1)個以上残っていると判定された場合は、ブロック移動部78は、位置情報Pを+1などして、位置情報Pを次の位置に更新する(ステップS590)。つぎに、ブロック移動部78は、位置情報PがFBリストの最終位置になったか否かを判定し(ステップS600)、位置情報PがFBリストの最終位置になるまで、上記の処理を繰り返す。位置情報PがFBリストの最終位置になった場合は、処理を終了する。
なお、ステップS520でのアクティブブロックの選択時に、選択された最も古いアクティブブロックABが書き込まれて間もないブロックと予想できる場合は、このアクティブブロックABを選択せずに、他の位置情報PをもつABリストからアクティブブロックを選択するようにしてもよい。すなわち、短期にアクティブブロックが解放されると予想できるABリストに対しては、リスト間のデータ移動処理を行わなくてもフリーブロックが増加することが期待できるため、ステップ520でのアクティブブロックの選択時に、そのアクティブブロックリストに対する選択を中止して、手順をステップS590に移行させることもできる。予想は、つぎのような方法で行うことができる。
アクティブブロックリスト毎に、当該アクティブリストに対する更新の度に+1インクリメントされるシーケンスカウントCを持たせ、フリーブロックにデータを書き込み、アクティブブロックリストにつなぐ際に、そのブロックにその時点のカウントCを結びつける。以下、あるブロックbに結びついたカウントCをBC(b)と記述する。カウントCと、アクティブブロックリスト中の最も古いブロックABのBC(AB)の差が小さいほど、アクティブブロックABは最近書かれたものと判定でき、例えば、あるプレーンの全ブロックを順番に使う場合には、その差は、アクティブブロックリストの長さと等しくなる関係となる。
したがって、ステップS520で、最も古いアクティブブロックABを選択したときに、BC(AB)とアクティブブロックリストのカウントCを比較し、差が閾値以下である場合には、このアクティブブロックABが最近書き込まれたと判定し、そのアクティブブロックリストからのアクティブブロックの解放をスキップし、ステップS590に移るようにする。閾値としては、アクティブブロックリストの長さに一定の係数を乗じた値などを用いてもよい。
このように第2の実施形態では、フリーブロック数が閾値(R−1)より少ないフリーブロック管理リストに対応するアクティブブロックリストのアクティブブロックのデータを、フリーブロック数が閾値R以上あるフリーブロック管理リストから選択したフリーブロックに移動するようにしたので、フリーブロックが少ないフリーブロックリストにフリーブロックが補充され、フリーブロック数が各フリーブロックリスト間で偏ることが回避でき、各フリーブロックリストでR個以上の予備ブロックを常に確保することが可能となり、動的ブロック割り当て方式においても、シーケンシャルライト性能の低下が発生し難くなる。
なお、図15のステップS510で、閾値として(R−1)個を使用しているが、閾値はR未満の他の数値でもよい。この場合、各フリーブロックリストに常に確保される予備ブロックの数もRよりも少なくなる。
なお、ブロック移動部78でのデータ移動処理は、ホスト1からアクセスの無い時間を利用して行ってもよいし、ブロック移動部78が、いずれかのプレーンに対応するFBリストにおいてフリーブロック数が(R−1)個を下回ったことを検知した場合に、他の処理よりも優先的に行ってもよい。
なお、上記第1、第2の実施の形態では、NANDメモリ10は、複数のチャネルによってチャネル並列動作が可能に構成したが、単一チャネルでNANDメモリ10とドライブ制御回路4とを接続してもよい。また、上記第1、第2の実施の形態では、複数の物理ブロックにより論理ブロックを構成し、論理ブロック単位でフリーブロックリストを管理するとしたが、論理ブロックを構成せず、論理ブロック単位でフリーブロックリストを管理してもよい。
また、上記第1、第2の実施の形態では、フリーブロックリストを、チャネル、バンク、チップ、プレーンを使用して複数本に分類するようにしたが、不揮発性半導体メモリの仕様に応じて、チャネル、バンク、チップ、プレーンのうちの1つ以上を使用してフリーブロックリストを複数本に分類するようにしてもよい。また、フリーブロックリストの分類単位は、チャネル、バンク、チップ、プレーンに限らず、ブロックを並列動作可能なブロックの集合単位であれば、他の任意の集合単位を使用してもよい。
また、上記第1、第2の実施の形態では、データが高密度データであるか低密度データであるかに応じて高優先、通常優先のフリーブロック選択を行うようにしたが、他の選択基準に基づき高優先、通常優先の切り替え選択を行うようにしてもよい。例えば、ホスト1が書き込みの際にシーケンシャルライトであるかランダムライトであるかを指定する情報を付加することができるならば、シーケンシャルライトが指定されている場合は高優先、ランダムライトが指定されている場合は通常優先と判断し、切り替え選択を行うようにしてもよい。
また、例えば、管理テーブルの変更差分情報であるログなど、予めサイズが小さいことが分かっているデータについては、通常優先と判断するようにしてもよい。また、スタンドバイ状態に入るためにライトバッファ21からNAND10へデータを退避する場合など、高いデータ転送速度が必要とされる場合は、全てのデータを高優先と判断するようにしてもよい。また、上記第1、第2の実施の形態では、高優先及び通常優先の2つの優先度でフリーブロックリストの管理を行うこととしたが、優先度を3つ以上に分けて管理してもよい。
[第3の実施の形態]
図16は、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が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
図17は、SSDを搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ1200は、CPU1301、ノースブリッジ1302、主メモリ1303、ビデオコントローラ1304、オーディオコントローラ1305、サウスブリッジ1309、BIOS−ROM1310、SSD100、ODDユニット1311、エンベデッドコントローラ/キーボードコントローラIC(EC/KBC)1312、及びネットワークコントローラ1313等を備えている。
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)バス1314等を介してビデオコントローラ1304との通信、及びオーディオコントローラ1305との通信を実行する機能も有している。
主メモリ1303は、プログラムやデータを一時的に記憶し、CPU1301のワークエリアとして機能する。主メモリ1303は、例えばRAMから構成される。
ビデオコントローラ1304は、パーソナルコンピュータ1200のディスプレイモニタとして使用される表示ユニット1202を制御するビデオ再生コントローラである。
オーディオコントローラ1305は、パーソナルコンピュータ1200のスピーカ1306を制御するオーディオ再生コントローラである。
サウスブリッジ1309は、LPC(Low Pin Count)バス上の各デバイス、及び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する機能を有している。ネットワークコントローラ1313は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
1 ホスト装置、2 ATAインタフェース、4 ドライブ制御回路、5 コントローラ10 NANDメモリ、21 ライトバッファ、60 データ読出部、61 データ書込部、62 データ管理部、70 ブロック管理部、71 フリーブロック選択部、72 高優先リスト選択部、73 高優先位置情報更新部、74 通常優先リスト選択部、78 ブロック移動部、80 フリーブロック管理部、80−1〜80−n フリーブロックリスト、90 アクティブブロック管理部、90−1〜90−n アクティブブロックリスト、AB アクティブブロック、FB フリーブロック。

Claims (3)

  1. ブロックを複数個有する不揮発性半導体メモリと、
    前記不揮発性半導体メモリへの書き込みの際に、有効データを含まないブロックであるフリーブロックを1乃至複数個前記不揮発性半導体メモリから選択するブロック選択部と、
    前記選択されたフリーブロックに書き込みを行う書き込み制御部と、
    を備え、
    前記ブロック選択部は、
    前記不揮発性半導体メモリに含まれるフリーブロックを、並列動作可能なブロックの集合単位を用いて複数本のフリーブロック管理リストに分類したリスト部と、
    通常優先度でフリーブロックを取得する際に、フリーブロック数が第1の閾値より多く存在するフリーブロック管理リストからフリーブロックを取得するよう動作する第1のフリーブロック選択部と、
    高優先度でフリーブロックを取得する際に、フリーブロック数が第1の閾値より多く存在するフリーブロック管理リストおよびフリーブロック数が第1の閾値より多く存在しないフリーブロック管理リストからフリーブロックを取得するよう動作する第2のフリーブロック選択部と、
    を備えることを特徴とするメモリシステム。
  2. 前記リスト部は、前記不揮発性半導体メモリに含まれる、有効データを含むブロックであるアクティブブロックを前記ブロックの集合単位を用いて分類した複数本のアクティブブロック管理リストをさらに有し、
    フリーブロック数が第2の閾値より少ないフリーブロック管理リストに対応するアクティブブロックリストのアクティブブロックのデータを、フリーブロック数が、第2の閾値以上の第3の閾値より多いフリーブロック管理リストのフリーブロックに移動するブロック移動部をさらに備えることを特徴とする請求項1に記載のメモリシステム。
  3. 前記第1のフリーブロック選択部は、所定の論理アドレス範囲内に有効データが所定割合より多い高密度データを前記不揮発性半導体メモリに書き込む際に動作し、
    前記第2のフリーブロック選択部は、所定の論理アドレス範囲内に有効データが所定割合より少ない低密度データを前記不揮発性半導体メモリに書き込む際に動作することを特徴とする請求項1または2に記載のメモリシステム。
JP2010061181A 2010-03-17 2010-03-17 メモリシステム Active JP5404483B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2010061181A JP5404483B2 (ja) 2010-03-17 2010-03-17 メモリシステム
TW099129131A TWI475561B (zh) 2010-03-17 2010-08-30 Memory system
CN201010275123.8A CN102193872B (zh) 2010-03-17 2010-09-06 存储系统
US12/884,844 US8266396B2 (en) 2010-03-17 2010-09-17 Memory system comprising blocks operable in parallel

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010061181A JP5404483B2 (ja) 2010-03-17 2010-03-17 メモリシステム

Publications (2)

Publication Number Publication Date
JP2011197788A JP2011197788A (ja) 2011-10-06
JP5404483B2 true JP5404483B2 (ja) 2014-01-29

Family

ID=44601967

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010061181A Active JP5404483B2 (ja) 2010-03-17 2010-03-17 メモリシステム

Country Status (4)

Country Link
US (1) US8266396B2 (ja)
JP (1) JP5404483B2 (ja)
CN (1) CN102193872B (ja)
TW (1) TWI475561B (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101077339B1 (ko) 2007-12-28 2011-10-26 가부시끼가이샤 도시바 반도체 기억 장치
JP5032371B2 (ja) 2008-03-01 2012-09-26 株式会社東芝 メモリシステム
TWI432961B (zh) 2009-02-12 2014-04-01 Toshiba Kk 記憶體系統及控制記憶體系統之方法
JP2012128643A (ja) 2010-12-15 2012-07-05 Toshiba Corp メモリシステム
JP2012128644A (ja) 2010-12-15 2012-07-05 Toshiba Corp メモリシステム
JP2012203863A (ja) * 2011-03-28 2012-10-22 Toshiba Corp メモリシステム
US9251055B2 (en) 2012-02-23 2016-02-02 Kabushiki Kaisha Toshiba Memory system and control method of memory system
US8924636B2 (en) 2012-02-23 2014-12-30 Kabushiki Kaisha Toshiba Management information generating method, logical block constructing method, and semiconductor memory device
KR101997572B1 (ko) 2012-06-01 2019-07-09 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 쓰기 방법
TWI492051B (zh) * 2012-09-05 2015-07-11 Silicon Motion Inc 資料儲存裝置與快閃記憶體控制方法
JP5976608B2 (ja) 2012-10-30 2016-08-23 株式会社東芝 メモリデバイス
JP5994647B2 (ja) * 2013-01-11 2016-09-21 三菱電機株式会社 データ記録装置、及びデータ記録方法
US9620181B2 (en) 2013-01-31 2017-04-11 Hewlett Packard Enterprise Development Lp Adaptive granularity row-buffer cache
JP6053557B2 (ja) * 2013-02-19 2016-12-27 三菱電機株式会社 メモリ管理装置
JPWO2015083225A1 (ja) * 2013-12-02 2017-03-16 富士通株式会社 情報処理装置、ストレージ、及びアクセス制御方法
US10055267B2 (en) * 2015-03-04 2018-08-21 Sandisk Technologies Llc Block management scheme to handle cluster failures in non-volatile memory
US9846650B2 (en) * 2015-03-09 2017-12-19 Samsung Electronics Co., Ltd. Tail response time reduction method for SSD
US10346039B2 (en) 2015-04-21 2019-07-09 Toshiba Memory Corporation Memory system
JP6358219B2 (ja) * 2015-10-02 2018-07-18 京セラドキュメントソリューションズ株式会社 記憶域管理プログラム及び電子機器
TWI639112B (zh) * 2016-03-14 2018-10-21 慧榮科技股份有限公司 儲存裝置及其控制單元、可用於儲存裝置的資料儲存方法
US10248333B1 (en) 2017-02-07 2019-04-02 Crossbar, Inc. Write distribution techniques for two-terminal memory wear leveling
US10409714B1 (en) * 2017-02-09 2019-09-10 Crossbar, Inc. Logical to physical translation for two-terminal memory
US10169246B2 (en) * 2017-05-11 2019-01-01 Qualcomm Incorporated Reducing metadata size in compressed memory systems of processor-based systems
US10877691B2 (en) * 2017-12-29 2020-12-29 Intel Corporation Stream classification based on logical regions
CN108920387B (zh) * 2018-06-06 2021-04-20 深圳忆联信息系统有限公司 降低读延迟的方法、装置、计算机设备及存储介质
KR20200042791A (ko) * 2018-10-16 2020-04-24 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
JP2022094705A (ja) * 2020-12-15 2022-06-27 キオクシア株式会社 メモリシステムおよび制御方法
US20220283738A1 (en) * 2021-03-04 2022-09-08 Macronix International Co., Ltd. Flash memory and writing method thereof
JP2022146494A (ja) * 2021-03-22 2022-10-05 キオクシア株式会社 半導体記憶装置およびメモリシステム
CN113094306B (zh) * 2021-04-06 2023-12-05 深圳宏芯宇电子股份有限公司 有效数据管理方法、存储器存储装置及存储器控制器
CN117131036B (zh) * 2023-10-26 2023-12-22 环球数科集团有限公司 一种基于大数据和人工智能的数据维护系统

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0628879A (ja) * 1992-07-07 1994-02-04 Fujitsu Ltd メモリ管理方式
WO1999031592A1 (fr) * 1997-12-16 1999-06-24 Tdk Corporation Systeme de memoire flash
JP2001101057A (ja) * 1999-09-30 2001-04-13 Casio Comput Co Ltd フラッシュrom制御方法及び記録媒体
JP4812192B2 (ja) * 2001-07-27 2011-11-09 パナソニック株式会社 フラッシュメモリ装置、及び、それに記憶されたデータのマージ方法
US7383375B2 (en) * 2003-12-30 2008-06-03 Sandisk Corporation Data run programming
JP5162846B2 (ja) * 2005-07-29 2013-03-13 ソニー株式会社 記憶装置、コンピュータシステム、および記憶システム
WO2007019198A2 (en) * 2005-08-03 2007-02-15 Sandisk Corporation Non-volatile memory with scheduled reclaim operations
JP3934659B1 (ja) * 2005-12-05 2007-06-20 Tdk株式会社 メモリコントローラ及びフラッシュメモリシステム
JP2007199905A (ja) * 2006-01-25 2007-08-09 Toshiba Corp 半導体記憶装置の制御方法
US9396103B2 (en) * 2007-06-08 2016-07-19 Sandisk Technologies Llc Method and system for storage address re-mapping for a memory device
KR101077339B1 (ko) * 2007-12-28 2011-10-26 가부시끼가이샤 도시바 반도체 기억 장치
JP4461170B2 (ja) * 2007-12-28 2010-05-12 株式会社東芝 メモリシステム
JP5010505B2 (ja) * 2008-03-01 2012-08-29 株式会社東芝 メモリシステム
JP4439569B2 (ja) 2008-04-24 2010-03-24 株式会社東芝 メモリシステム
JP4551958B2 (ja) 2008-12-22 2010-09-29 株式会社東芝 半導体記憶装置および半導体記憶装置の制御方法
JP2010152514A (ja) 2008-12-24 2010-07-08 Toshiba Corp メモリシステム
JP5317689B2 (ja) 2008-12-27 2013-10-16 株式会社東芝 メモリシステム
JP2010157130A (ja) 2008-12-27 2010-07-15 Toshiba Corp メモリシステム
JP5198245B2 (ja) 2008-12-27 2013-05-15 株式会社東芝 メモリシステム
TWI432961B (zh) * 2009-02-12 2014-04-01 Toshiba Kk 記憶體系統及控制記憶體系統之方法

Also Published As

Publication number Publication date
US20110231610A1 (en) 2011-09-22
JP2011197788A (ja) 2011-10-06
TW201133487A (en) 2011-10-01
CN102193872A (zh) 2011-09-21
US8266396B2 (en) 2012-09-11
CN102193872B (zh) 2014-09-17
TWI475561B (zh) 2015-03-01

Similar Documents

Publication Publication Date Title
JP5404483B2 (ja) メモリシステム
US11893238B2 (en) Method of controlling nonvolatile semiconductor memory
EP2396729B1 (en) Memory system and method of controlling memory system
US8443144B2 (en) Storage device reducing a memory management load and computing system using the storage device
US8639881B2 (en) Information processing apparatus and driver
US20120226850A1 (en) Virtual memory system, virtual memory controlling method, and program
JP2012141946A (ja) 半導体記憶装置
JP2009211233A (ja) メモリシステム
JP6139381B2 (ja) メモリシステムおよび方法
JP2009211227A (ja) メモリシステム
JP2012008651A (ja) 半導体記憶装置、その制御方法および情報処理装置
JP2009205335A (ja) 2種のメモリデバイスをキャッシュに用いるストレージシステム及びそのストレージシステムを制御する方法
US20080263282A1 (en) System for Caching Data
JP2012033001A (ja) 情報処理装置および情報処理方法
JP2011070365A (ja) メモリシステム
JP2009211229A (ja) メモリシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120814

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130927

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131029

R150 Certificate of patent or registration of utility model

Ref document number: 5404483

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313115

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313115

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313115

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350