JP5323199B2 - メモリシステム及びメモリシステムの制御方法 - Google Patents

メモリシステム及びメモリシステムの制御方法 Download PDF

Info

Publication number
JP5323199B2
JP5323199B2 JP2011532412A JP2011532412A JP5323199B2 JP 5323199 B2 JP5323199 B2 JP 5323199B2 JP 2011532412 A JP2011532412 A JP 2011532412A JP 2011532412 A JP2011532412 A JP 2011532412A JP 5323199 B2 JP5323199 B2 JP 5323199B2
Authority
JP
Japan
Prior art keywords
free block
chip
blocks
free
plane
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011532412A
Other languages
English (en)
Other versions
JP2012517627A (ja
Inventor
創 山崎
康浩 木村
浩 八尾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2011532412A priority Critical patent/JP5323199B2/ja
Publication of JP2012517627A publication Critical patent/JP2012517627A/ja
Application granted granted Critical
Publication of JP5323199B2 publication Critical patent/JP5323199B2/ja
Expired - Fee Related 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • 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/7202Allocation control and policies
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices
    • 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/7211Wear leveling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、不揮発性半導体メモリを備えたメモリシステムに関するものである。
不揮発性半導体メモリには、NAND型フラッシュメモリのように、データを記憶させる場合にブロック単位で一度データを消去してからその後に書き込みを行うもの、ページ単位で書き込み/読み出しを行うものなど、消去/書き込み/読み出しの単位が固定されているものがある。
一方、パーソナルコンピュータなどのホスト機器がハードディスクをはじめとする2次記憶装置に対してデータの書き込み/読み出しを行う単位は、セクタと呼ばれる。セクタは、半導体記憶装置の消去/書き込み/読み出しの単位とは独立に定められる。通常、ホスト機器のセクタの大きさ(セクタサイズ)は、不揮発性半導体メモリのブロックの大きさ(ブロックサイズ)、ページの大きさ(ページサイズ)よりも小さい。
そこで、不揮発性半導体メモリを用いてハードディスクのようなパーソナルコンピュータの2次記憶装置を構成する場合、ホスト機器としてのパーソナルコンピュータからの小さなサイズのデータは、不揮発性半導体メモリのブロックサイズ、ページサイズに適合させて書き込みを行う必要がある。
また、パーソナルコンピュータなどのホスト機器が記録するデータは、時間的局所性、及び領域的局所性を兼ね備えている(例えば、非特許文献1参照。)。そのため、データを記録する際に外部から指定されたアドレスにそのまま記録していくと、特定の領域に短時間に書き換え、即ち消去処理が集中し、消去回数の偏りが大きくなる。そのため、NAND型フラッシュメモリでは、データ更新箇所を均等に分散させるウェアレベリングと呼ばれる処理が行われる。ウェアレベリング処理では、例えば、ホスト機器から指定される論理アドレスを、データ更新箇所が均等に分散されるように不揮発性半導体メモリの物理アドレスにアドレス変換している。
NAND型フラッシュメモリを用いて大容量の2次記憶装置を構成する場合においては、上記アドレス変換を行う場合に、データ管理の単位が小さいサイズ(例えば、ページサイズ)であると、管理テーブルのサイズが大きくなって、2次記憶装置のコントローラの主記憶メモリに納まらなくなり、アドレス変換が高速にできなくなるという問題がある。このように、2次記憶装置としてのNAND型フラッシュメモリの大容量化に伴い管理テーブルのサイズは必然的に大きくなるため、管理テーブルをできるだけ小容量にするための手法が求められている。
特表2007−517325号公報
David A. Patterson and John L. Hennessy, "Computer Organization and Design: The Hardware/Software Interface", Morgan Kaufmann Pub, 2004/8/31
本発明の一態様によれば、複数のメモリチップで構成されるチャネル並列動作要素を複数個有する不揮発性半導体メモリであって、各メモリチップは並列動作可能な複数のプレーンに分割され、各プレーンはデータ消去の単位である物理ブロックを複数有し、並列駆動される各チャネル並列動作要素内の複数のメモリチップを複数のチャネル並列動作要素に跨ってそれぞれがレディ/ビジー信号を共有する複数のバンクに分割した不揮発性半導体メモリと、前記並列駆動される複数のチャネル並列動作要素から選択した複数の物理ブロックに対応付けられた論理ブロックに基づいてフリーブロックを管理し、前記プレーン、バンク、またはチャネル並列動作要素による並列動作を制御するコントローラと備え、前記コントローラは、同一のバンク番号、同一のチップ番号、同一のプレーン番号を持つ前記論理ブロックをフリーブロックとしてそれぞれ管理する複数本のフリーブロック管理リストと、前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択し、選択したフリーブロック管理リストからフリーブロックを取得するフリーブロック選択部とを備えることを特徴とする。
図1は、SSDの構成例を示すブロック図。 図2は、NANDコントローラとNANDメモリとの接続態様を示す図。 図3は、NANDコントローラの内部構成例を示すブロック図。 図4は、NANDメモリの物理的構成を示す図。 図5は、プロセッサの機能構成例を示すブロック図。 図6は、データ管理部の機能構成を示すブロック図。 図7は、バンクによる並列動作がない場合の比較例による論理ブロック構成を概念的に示す図。 図8は、バンクによる並列動作がある場合の比較例による論理ブロック構成を概念的に示す図。 図9は、第1の実施の形態によるFB管理部の構成例を示す図。 図10は、FB管理リストを示す図。 図11は、第1の実施形態による論理ブロックの構成を概念的に示す図。 図12は、リザーブ領域、マージン領域を概念的に示す図。 図13は、第2の実施形態によるFB管理部の構成例を示す図。 図14は余裕度テーブルを示す図。 図15はプレーン余裕度、チップ余裕度を説明するための図。 図16は第3の実施形態における倍速優先モードの制御手順を示すフローチャート。 図17は余裕度テーブルの登録データの一例を示す図。 図18は、第3の実施形態におけるバンク優先モードの制御手順を示すフローチャート。 図19は、第4の実施形態によるパーソナルコンピュータの外観を示す斜視図。 図20は、第4の実施形態によるパーソナルコンピュータの機能構成例を示す図。
ところで、フラッシュメモリのセルの劣化に関しては、ホスト機器側からの書き込みデータ量に対する必要なフラッシュメモリのブロックの消去量が重要なファクターとなる。このようなホスト機器からの書き込みデータ量に対するブロックの消去量を書き込み効率と呼び、値が小さいほどよい。通常、NAND型フラッシュメモリでは、ブロックの消去処理及び書き込み処理に多くの時間を費やすため、書き込み効率が悪いということは、ホスト機器からのデータ書き込み量に対して、ブロックの消去や消去したブロックへの書き込みが多いことを表し、フラッシュメモリの速度性能を悪くすることを同時に意味する。このように、フラッシュメモリに対する書き込みデータ量を、ブロックの消去量に近づけて書き込み効率をよくするための手法も求められている。
そこで、消去単位である物理ブロックを複数個組み合わせた仮想ブロックの概念を導入し(例えば、特許文献1参照。)、この仮想ブロック単位に並列に消去/書き込み/読み出しを行うことで、書き込み効率の向上と並列処理による高速化を図っている。
しかしながら、物理ブロックによる仮想ブロックの構成の仕方、即ち物理ブロックの組み合わせの仕方には、制約がある場合が多く、仮想ブロックのサイズが大きすぎる場合は、少量のデータを保存したい場合でも無駄に多くの物理ブロックを使用することになり、書き込み効率が悪化することになる。
以下に添付図面を参照して、本発明の実施の形態にかかるメモリシステムを詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。
[第1の実施形態]
図1は、SSD(Solid State Drive)100の構成例を示すブロック図である。SSD100は、コントローラとしてのドライブ制御回路4と、不揮発性半導体メモリとしてのNAND型フラッシュメモリ(以下、NANDメモリと略す)10と、揮発性半導体メモリとしてのDRAM20と、ATAインタフェース(ATA I/F)2などのメモリ接続インタフェースなどを備えている。SSD100は、ATA I/F2を介してパーソナルコンピュータあるいはCPUコアなどのホスト装置(以下、ホストと略す)1と接続され、ホスト1の外部メモリとして機能する。
NANDメモリ10は、ホスト1によって指定されたユーザデータを記憶したり、DRAM20で管理される管理情報をバックアップ用に記憶したりする。NANDメモリ10は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。NANDメモリ10は、複数のメモリチップによって構成され、各メモリチップは、データ消去の単位である物理ブロックを複数配列して構成される。また、NANDメモリ10では、物理ページごとにデータの書き込み及びデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。図1では、NANDメモリ10は、4チャネル(4ch:ch0〜ch3)を介して、ドライブ制御回路4内部のNANDコントローラ113に並列接続されており、4つのチャネル並列動作要素10a〜10dを並列動作させることが可能である。チャネル数は4つに限らず、任意のチャネル数を採用可能である。
DRAM20は、データ転送用、管理情報記録用または作業領域用の記憶部として使用される。具体的には、データ転送用の記憶部(データ転送用キャッシュ)としては、ホスト1から書込要求があったデータをNANDメモリ10に書込む前に一時的に保存したり、ホスト1から読出要求があったデータをNANDメモリ10から読出して一時的に保存したりするために使用される。また、管理情報記録用の記憶部としては、NANDメモリ10に記憶されるデータの格納位置を管理するための管理情報(NANDメモリ10に記憶されている各種管理テーブルが起動時などに展開されたマスターテーブル、管理テーブルの変更差分情報であるログなど)を格納するために使用される。
ドライブ制御回路4は、ホスト1とNANDメモリ10との間でDRAM20を介してデータ転送制御を行うとともに、SSD100内の各構成要素を制御する。
ドライブ制御回路4は、データアクセス用バス101、回路制御用バス102を備えている。回路制御用バス102には、ドライブ制御回路4全体を制御するプロセッサ104が接続されている。回路制御用バス102には、NANDメモリ10に記憶された各管理プログラム(FW:ファームウエア)をブートするブート用プログラムが格納されたブートROM105がROMコントローラ106を介して接続されている。
ATAインタフェースコントローラ(ATAコントローラ)111、NANDコントーラ113、及びDRAMコントローラ114は、データアクセス用バス101と回路制御用バス102との両方に接続されている。ATAコントローラ111は、ATAインタフェース2を介してホスト1との間でデータを送受信する。データアクセス用バス101には、データ作業領域及びファームウェア展開領域として使用されるSRAM115がSRAMコントローラ116を介して接続されている。NANDメモリ10に記憶されているファームウェアは起動時、ブートROM105に記憶されたブート用プログラムによってSRAM115に転送される。
DRAMコントローラ114は、プロセッサ104とDRAM20とのインタフェース処理などを実行する。NANDコントローラ113は、プロセッサ104とNANDメモリ10とのインタフェース処理、NANDメモリ10−DRAM20間のデータ転送制御、誤り訂正符号のエンコード/デコード処理などを実行する。
図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は、それぞれのバンクに対する要求をキューイングする機能を備え、各バンクへの要求がある場合にチャネルの使用権を確保し、自らが管理するバンクへの読み出し/書き込み/消去要求を実行する。
図4は、NANDメモリ10のより詳細な内部構成を示すものである。図4では、チャネル数を(M+1)個として示し、バンク数をN+1個として示し、チップ数をK+1個として示した。図4に示すように、各メモリチップ(chip0〜chipK)は、例えば、それぞれ複数の物理ブロックを含むプレーン0(plane0)、プレーン1(plane1)の2つの領域(District)に分割されている。プレーン0及びプレーン1は、互いに独立した周辺回路(例えば、ロウデコーダ、カラムデコーダ、ページバッファ、データキャッシュ等)を備えており、倍速モードを使用することで、同時に消去/書き込み/読み出しを行うことが可能である。1メモリチップ内のプレーン数は2個に限らず、任意である。また、1個のメモリチップは、図4で拡大して示すように、複数の物理ブロックで構成されている(図4ではX+1個の物理ブロック)。
このように、NANDメモリ10では、複数のチャネルによる並列動作、複数のバンクによる並列動作、複数のプレーンを用いた倍速モードによる並列動作が可能であり、チャネル数を4、バンク数を4、プレーン数を2とした場合、最大32個の物理ブロックを並列動作させることが可能となる。
図5は、プロセッサ104により実現されるファームウェアの機能構成例を示すブロック図である。プロセッサ104により実現されるファームウェアの各機能は、大きくは、データ管理部120(DM:Data Manager)、ATAコマンド処理部121(AM:ATA Manager)、セキュリティ管理部122、ブートローダ123、初期化管理部124などに分類される。
データ管理部120は、NANDコントローラ113、DRAMコントローラ114などを介して、NANDメモリ10−DRAM20間のデータ転送、NANDメモリ10に関する各種機能を制御する。ATAコマンド処理部121は、ATAコントローラ111、DRAMコントローラ114を介して、データ管理部120と協動してDRAM20−ホスト1間のデータ転送処理を行う。セキュリティ管理部122は、データ管理部120及びATAコマンド処理部121と協動して各種のセキュリティ情報を管理する。
ブートローダ123は、パワーオン時、各管理プログラム(ファームウェア)をNANDメモリ10からSRAM115にロードする。初期化管理部124は、ドライブ制御回路4内の各コントローラ/回路の初期化を行う。
データ管理部120は、ATAコマンド処理部121が記憶デバイスであるNANDメモリ10やDRAM20に対して要求する機能の提供(ホスト1からのWrite要求、Cache Flush要求、Read要求等の各種コマンドへの応答)と、ホスト1から与えられる論理アドレスとNANDメモリ10との対応関係の管理と、スナップショット、ログによる管理情報の保護と、DRAM20及びNANDメモリ10を利用した高速で効率の良いデータ読み出し/書き込み機能の提供と、NANDメモリ10の信頼性の確保などを行う。
データ管理部120では、図6に示すように、多層の管理構成が採用されており、データ管理部120は、上層からATA層管理部120a、DRAM層管理部120b、論理層管理部120c、物理層管理部120dを備えている。
ATA層管理部120aは、ATAコマンド処理部121からの要求を受付け、この要求に応答するとともに、要求を適切な下位層の管理部に通知する。DRAM層管理部120bは、DRAM層管理テーブル30を使用してDRAM20上のデータを管理する。
ここで、ホスト1はSSD100に対し、ReadまたはWrite要求を発行する際には、ATAインタフェース2を介して論理アドレスとしてのLBA(Logical Block Addressing)及びデータサイズを入力する。LBAは、セクタ(サイズ:512B)に対して0からの通し番号をつけた論理アドレスである。また、NANDメモリ10内の物理ブロックを複数組み合わせて、論理ブロックと呼ばれる仮想的なブロックが構成される。論理ブロックを構成する個々の物理ブロックは並列に動作可能であり、同時に消去/書き込み/読み出しが実行される。本実施形態では、基本的には異なるチャネルから1つの物理ブロックを選択することで論理ブロックを構成する。論理ブロックを構成する物理ブロックの組み合わせ方の詳細については後述する。
論理層管理部120cは、各種の論理層管理テーブル31を使用してNANDメモリ10上のデータを管理するものであり、
・LBAと論理ブロックの対応関係の管理
・DRAM20からNANDメモリ10へのデータ書き込み制御
・NANDメモリ10からDRAM20へのデータ読み出し制御
・NANDメモリ10内のユーザデータの整理
などを実行する。
物理層管理部120dは、各種の物理層管理テーブル32を使用してNANDメモリ10を管理するとともに、論理ブロックの提供、不揮発情報の管理、NANDコントローラ113の制御などを実行する。具体的には、
・フリーブロック、バッドブロック、アクティブブロックの管理
・論理ブロックと物理ブロックの対応の管理
・物理的エラーの管理
・ウェアレベリング、リフレッシュの実行
・不揮発管理情報(スナップショット、ログ)の管理
・NANDコントローラ113の制御
などを実行する。
フリーブロック(FB)とは、内部に有効データを含まない、用途未割り当ての論理ブロックのことである。アクティブブロック(AB)とは、用途が割り当てられた論理ブロックのことである。バッドブロック(BB)は、誤りが多いなど記憶領域として使用できない物理ブロックのことであり、例えば、消去動作が正常に終了しなかった物理ブロックがバッドブロックBBとして登録される。
図6に示した各管理テーブル30、31、32で管理される管理情報によって、ホスト1で使用されるLBAと、SSD100で使用される論理NANDアドレス(論理ブロックアドレスなど)と、NANDメモリ10で使用される物理NANDアドレス(物理ブロックアドレスなど)との間を対応付けることができ、ホスト1とNANDメモリ10との間のデータのやり取りを行うことが可能となる。このようにLBAと論理NANDアドレス、論理NANDアドレスと物理NANDアドレスとを対応付ける技術については、例えば、国際特許出願PCT/JP09/052598に開示されており、これらの全内容は本出願において援用される。
次に、本実施の形態の要部について説明する。前述したように、本装置においては、複数のチャネルによる並列動作、複数のバンクによる並列動作、複数のプレーンを用いた倍速モードによる並列動作が可能であり、これらの並列動作を用いて複数の物理ブロックを並列処理することが可能である。本実施形態では、上記の各並列動作を効率良く行わせ、書き込み効率を向上させるために、論理ブロックを構成する物理ブロックの組み合わせ方を最適化する。
最初に、比較例に係る論理ブロックの構成方法について説明する。例えば、図4に示す物理的構成を持つSSDに対して、常に最大並列度を確保できるように論理ブロックを構成することを考える。比較例では、最大並列度の確保を優先した場合の物理ブロック選択の制約について、図7及び図8を参照して説明する。
(比較例)
比較例に係るSSDでは、論理ブロックを構成する物理ブロックの組み合わせ方に関して、下記(1)乃至(3)の制約を設ける。
(1)複数のチャネル並列動作要素(10a〜10d)から選択する物理ブロックは、同じチップ番号(chip0〜chipK)を持つメモリチップに所属する物理ブロックであること。
(2)チャネル内では、プレーン0(plane0)とプレーン1(plane1)の組み合わせであること。
(3)各バンク内は(1)(2)の制約を満足させること。
上記(1)〜(3)の制約を満たせば、複数のチャネル、複数のプレーン及び複数のバンクによる並列動作を実行させることができる。ここで、バンクによる並列動作がない場合と、ある場合を比較する。バンクによる並列動作がない場合は、図7に示すように、上記の(1)(2)の制約を満たしながら、同じチップ番号の全てのチャネルから2物理ブロック(plane0/plane1)を選択して論理ブロックを構成する。図7では、チャネル数及びプレーン数分の複数の物理ブロックによって1つの論理ブロックLBLK0が構成され、同様に複数の物理ブロックによって1つの論理ブロックLBLK1が構成されている。このような論理ブロックの構成例については、例えば、国際特許出願PCT/JP09/052595に開示されており、これらの全内容は本出願において援用される。
これに対し、バンクによる並列動作がある場合は、図8に示すように、全てのバンク(bank0〜bankN)に対して、同じチップ番号の全てのチャネルから2物理ブロック(plane0/plane1)を選択して論理ブロックを構成する。図8では、チャネル数、プレーン数及びバンク数分の複数の物理ブロックによって1つの論理ブロックLBLK0が構成され、同様に複数の物理ブロックによって1つの論理ブロックLBLK1が構成されている。このように、バンクによる並列動作がある場合は、ない場合に比べ、論理ブロックを構成する(=同時に動作する)物理ブロック数がバンク数倍だけ増加する。
ところで、前述したように、論理ブロックと物理ブロックとの対応関係は、物理層管理部120dで管理されている。論理ブロックには、前述したように、フリーブロックFB、アクティブブロックABなどがあるが、有効データを含まない用途未割り当てのフリーブロックFBは、FB管理リストによって管理されている。FB管理リストは、フリーブロックFBとなった順にソートされたFIFO形式のリストであり、各エントリには、論理ブロックIDが保持される。論理層管理部120cから返却されたフリーブロックFBは、FB管理リストの最後尾に追加され、論理層管理部120cに論理ブロックを渡す際には、FB管理リストの先頭の論理ブロックを取り出す。FB管理リストでは、全ての論理ブロックの消去回数、消去間隔を概ね等しくするウェアレベリング処理が実行されている。
バンクによる並列動作がない場合は、FB管理リストを一本のリストで構成しても問題は少ないが、バンクによる並列動作がある場合は、論理ブロックを構成する(=同時に動作する)物理ブロック数がバンク数倍だけ増加するので、少量のデータを保存したい場合でも無駄に多くの物理ブロックを使用することになり、書き込み効率の悪化に繋がる。書き込み効率の悪化は、メモリセルに対する消去/書き込み回数の増加を意味するため、システム全体としての寿命が短くなる可能性がある。このように、書き込み速度(=並列度)と書き込み効率とはトレードオフの関係にある。
そこで、本実施形態においては、論理ブロックを構成する物理ブロック数の増加を抑制すると供に、書き込み要求の処理に必要な論理ブロック数によって並列度を制御し、並列度が不要な場合は、書き込み効率を優先する。そのため、本実施形態に係るSSD100は、複数本のFB管理リストを備えるようにしており、各FB管理リストでは、同一のバンク番号/チップ番号/プレーン番号を持つ論理ブロックを管理するようにしている。以下、本実施形態に係るSSD100の論理ブロック構成方法、及び並列度制御方法について詳細に説明する。
図9は、フリーブロックFBの管理を行うFB管理部40の構成を示すものである。FB管理部40は、複数のFBリスト50−1〜50−Lから構成されるFB管理リスト50と、FB選択部42と、FB提供部43とから構成されており、例えば、物理層管理部120dが提供する機能ブロックとして実現される。FB提供部43は、論理層管理部120cなどからの要求に応じて、必要な論理ブロック数などの情報をFB選択部42に通知する。FB選択部42は、FB提供部43から通知された論理ブロック数に基づいてFB管理リスト50中の複数のFBリスト50−1〜50−Lから必要数の論理ブロック(論理ブロックID)を選択し、選択した1〜複数の論理ブロックIDをFB提供部43に通知する。FB提供部43は、通知された1〜複数の論理ブロックIDをフリーブロックFBとして論理層管理部120cに通知する。
図10は、FB管理リスト50を構成する複数のFBリスト50−1〜50−Lを示すものである。各FBリスト50−1〜50−Lには、同一のバンク番号/チップ番号/プレーン番号を持つ論理ブロックの論理ブロックIDがエントリされている。また、FBリスト50−1〜50−Lは、それぞれ返却FBリスト50aと、割り当てFBリスト50bとの2段構成になっている。各エントリには、論理ブロックIDが記録されている。
返却FBリスト50aは、消去時刻順に整列しており、割り当てFBリスト50bでは、消去回数の少ない論理ブロックほどリストの先頭に位置する。これは、短い時間間隔で消去動作を繰り返すことを防ぐための構成である。不要になり、論理層管理部120cから返却された論理ブロックは、返却FBリスト50aの最後尾に追加され、一定の期間にここに保持される。返却FBリスト50aから押し出された論理ブロックは、その消去回数に応じて割り当てFBリスト50bの途中に挿入される。FB選択部42は、論理ブロックを取得する際には、割り当てFBリスト50bの先頭から取り出し、割り当てを行う。割り当てFBリスト50bから取り出されたFBとしての論理ブロックは、用途が割り当てられたアクティブブロック(AB)として登録される。
このような返却FBリスト50aと、割り当てFBリスト50bとの2段構成を有しているので、全ての論理ブロックの消去回数、消去間隔が概ね等しくなるように、消去する論理ブロックを均等に分散させる(ウェアレベリング処理)ことが可能となる。NAND型フラッシュメモリの寿命は、消去回数の他に、消去処理の間隔にも依存しており、その間隔が長いほどリテンション特性が良く、寿命が延びることが知られている。これは、消去間隔が短いとリテンション特性が悪く、寿命が損なわれることも示している。また、短い間隔で書き込みを行ったとしても、相応の長期間消去を行わなければリテンション特性が回復することも知られている。このようなウェアレベリング処理に係る技術については、例えば、国際特許出願PCT/JP08/066508に開示されており、これらの全内容は本出願において援用される。
本実施形態では、論理ブロックは、図11に示すように、各チャネルから同一のバンク番号/チップ番号/プレーン番号を持つ物理ブロックを集めて構成する。即ち、本実施形態では、論理ブロックを構成する物理ブロックの組み合わせ方に関して、下記(1)乃至(4)の制約を設ける。
(1)各チャネルの物理ブロックを1つずつ選択すること。
(2)各チャネルの物理ブロックは、同じチップ番号に属する物理ブロックから選択すること。
(3)各チャネルの物理ブロックは、同じプレーン番号に属する物理ブロックから選択すること。
(4)同一バンク内の物理ブロックを選択すること。
したがって、論理ブロックは、バンク毎に、チップ毎に、プレーン毎に分類可能になる。また、図10に示すように、各FBリスト50−1〜50−Lは、それぞれ、同一のバンク番号/チップ番号/プレーン番号を持つ論理ブロックのリストとして構成される。
FB選択部42は、FB提供部43からの要求に従って、FBリスト50−1〜50−Lの中から並列動作可能な1〜複数個のフリーブロックFBを取得するためのリストの組み合わせを決定する。図11に示す論理ブロック構成の場合、FB選択部42は、最大並列度が必要な時は倍速モードを考慮し、
(1)1つのバンク内の同一チップ番号のプレーン0及びプレーン1の論理ブロックを選択する。これにより、バンク0に関しては、例えば、chip aに属し、プレーン0に属する複数のチャネル分の1つの論理ブロック(LBLK0)と、chip aに属し、プレーン1に属する複数のチャネル分の1つの論理ブロック(LBLK1)が選択され、2論理ブロックが選択される。
(2)同様の処理を全てのバンクに対して実行することで、2×バンク数(N+1)個分の論理ブロック(LBLK0〜LBLK2N+1)を選択する。これにより、2×バンク数(N+1)個分の論理ブロック(LBLK0〜LBLK2N+1)に対する並列書き込みが実行可能となる。
一方、FB選択部42は、FB提供部43から論理ブロックを1個として要求された場合は、複数のFBリスト50−1〜50−Lの中から1つのリストを選択し、選択したリストからフリーブロックFBを取得することで、例えば論理ブロックLBLK0〜LBLK2N+1の中から1つを選択する。このように必要な並列度に応じて実際に書き込みを行う並列度を決定できるので、少量のデータを書き込む場合でも書き込み効率を悪化させることはない。
尚、FB提供部43が要求する論理ブロック数は、最大並列度に応じた論理ブロック数、または最小の論理ブロック数である1個に限らず、1個から最大並列度に応じた論理ブロック数までの任意の値を取ることが可能である。FB選択部42は、要求された任意の論理ブロック数に応じて、複数のFBリスト50−1〜50−Lの中からリストを選択し、選択したリストからフリーブロックFBを取得する。
次に、複数のFBリスト50−1〜50−LからFBを取得するリストを選ぶためのアルゴリズムについて説明する。以下では、2つのアルゴリズム(第1のアルゴリズム、及び第2のアルゴリズム)について説明する。
第1のアルゴリズムでは、各バンク/チップ/プレーンで発生したバッドブロックBBの個数(BB数)に逆対応する値(例えばBB数の逆数)や各バンク/チップ/プレーンで利用可能な論理ブロック数(フリーブロックFBの数とアクティブブロックABの数との総和)や各FBリストに属するブロックの個数などで重み付けしたラウンドロビン方式により、フリーブロックFBを取得するリスト(バンク/チップ/プレーン)を選ぶ。即ち、BB数が少ないほどフリーブロックFBを取得する確率が上昇するような重み付けがなされたラウンドロビンを採用する。バッドブロックBBとは、前述したように、誤りが多いなど記憶領域として使用できない物理ブロックのことであり、例えば、消去動作が正常に終了しなかった物理ブロックがバッドブロックBBとして登録される。
更新データの書き込みに伴って有効データが無くなったアクティブブロックABは、フリーブロックFBとして登録され、再びアクティブブロックABとして再利用されるのを待つ。BB数の多くなったバンク/チップ/プレーンでは、利用可能な論理ブロック数(フリーブロックFBの数とアクティブブロックABの数との総和)が減少する。利用可能な論理ブロック数に拘らず同じ確率でフリーブロックFBを取得すると、バッドブロックBBの多発により論理ブロック数が減少しているFB管理リスト50では、再利用までの使用間隔が短くなる。NAND型フラッシュメモリでは、再利用間隔(リラクゼーション時間)の短縮は寿命を縮めることに繋がるので避けなければならない。BB数で重みをつけたラウンドロビン方式では、論理ブロック数の多少に拘らずリラクゼーション時間を平準化することができる。
第2のアルゴリズムでは、バンク間とバンク内とで独立したラウンドロビン方式を採用する。バンク間では重みなしラウンドロビン方式を採用して、毎回バンクの異なるフリーブロックFBが取得できるようにする。バンク間には優先順位を設けていない(毎回異なるバンクのフリーブロックを取得できる)ので、最低でもバンク数だけの並列度は達成することができる。バンク内では、上述した第1のアルゴリズムと同様に、各チップ/プレーンで発生したBB数に逆対応する値(例えばBB数の逆数)や各バンク/チップ/プレーンで利用可能な論理ブロック数や各FBリストに属するブロックの個数などで重み付けしたラウンドロビン方式により、フリーブロックFBを取得するリスト(チップ/プレーン)を選ぶことで、バンク内では、BB数が少ないチップとプレーンからフリーブロックFB取得の機会が多くなり、リラクゼーション時間の平準化を図ることができる。
第2のアルゴリズムを採用すると更に次のような利点がある。1論理ブロックずつ論理ブロックを取得すると、バンク0→バンク1→バンク2→バンク3→…→バンクN(Nはバンク番号の最大値)→バンク0の順に、毎回異なるバンクからフリーブロックFBを取得することができるが、この点が重要な情報を二重化する場合に有効となる。図2に示す様に、バンクが異なると物理的なメモリチップが異なるので、RyBy0〜RyBy3に共通接続される信号線も別々となる。即ち、RyBy信号線の内一本が切れて動作不可能になっても、バックアップ側からデータが読み出せる。従って、重要な情報を二重化する場合に、物理的に同一のメモリチップ内に二重化する場合と比べて、信頼性の向上に寄与する。
二重化が必要な情報としては、例えば、上述したログやスナップショット等、SSD100上で動作するファームウェアの不揮発管理情報が考えられる。これらの情報が失われると、既にNANDメモリ10に書き込まれたデータを正常に読み出すことが不可能となるからである。この様な二重化が必要な管理情報を保存するメモリチップを選択する場合に、第2のアルゴリズムを採用する事で、1論理ブロックずつフリーブロックFBを取得するだけで、簡便に信頼性向上を見込むことができる。
なお、ラウンドロビンの重み付け値に次のような値を採用しても良い。NANDメモリ10は、ホスト1から見えるユーザデータ記憶領域(リザーブド領域という)の他に、ホスト1からは見えない記憶領域(マージン領域という)を通常備えている。リザーブド領域は、ホスト1で使用される論理アドレスとしてのLBAによって指定可能な領域である。マージン領域は、DRAM20からリザーブド領域へのデータ転送の際のバッファ領域として使用されたり、管理情報(論理層管理テーブル31,物理層管理テーブル32などを含む)を記憶するためなどに使用される。
リザーブド領域は、ユーザから見えるSSDの容量に等しいから、バッドブロックBBが発生しても、リザーブド領域の容量は常に一定に確保しなくてはいけない。従って、バッドブロックBBが増えると、SSD全体としては、その分だけマージン領域が減ることになる。なお、ある1つの論理ブロックに注目して考えた場合、その論理ブロックがリザーブド領域/マージン領域のいずれに属するかは、SSDの使用状況に応じて時間と共に変化する。リザーブド領域として使用される論理ブロックをリザーブドブロックといい、マージン領域として使用される論理ブロックをマージンブロックという。
例えば、管理情報の記憶用として使用されていた論理ブロックが、解放されてフリーブロックリストに返却され、その後ユーザデータ記憶用の論理ブロックとして割り当てられた場合、この論理ブロックは管理情報の記憶用として使用されていた時点ではマージンブロックのうちの1つであったが、ユーザデータ記憶用の論理ブロックとして割り当てられた時点ではリザーブドブロックの1つとなっている。またブロックがフリーブロックリストに保持されている状況では、例外的な状況を除けば、1つのブロックがマージン/リザーブドのいずれに該当するかを、特定することは不可能である。
FBリスト50−1〜50−L毎のマージンブロック数あるいは未使用マージンブロック数を管理するようにすれば、マージンブロック数あるいは未使用マージンブロック数で重み付けしたラウンドロビン方式を用いてフリーブロックFBを取得するリスト(チップ/プレーン)を選ぶことで、バンク内では、BB数が少ないチップとプレーンからフリーブロックFB取得の機会を多くすることができる。マージンブロック数とは、マージン領域に属するフリーブロックFBの数とアクティブブロックABの数との総和である。未使用マージンブロック数とは、マージン領域に属するフリーブロックFBの数である。
1本のFBリストのマージンブロック数、未使用マージンブロック数はつぎのようにして求める。マージン領域とリザーブド領域を合計したNANDメモリ10の全体の記憶容量をFBリストの全本数で除算し、この除算結果を1論理ブロックの記憶容量で除算すれば、1本のFBリストにエントリ可能な論理ブロックの個数Dが導出される。
図12は、1本のFBリストにおけるマージン/リザーブの割り当てを概念的に示すものである。リザーブド領域は、前述したように常に一定量を確保しなくてはいけないので、1本のFBリストにエントリ可能な論理ブロックの個数Dからリザーブドブロック用の所定個数D1を差し引いた論理ブロック数D2は、バッドブロックBBが存在しなければ全てマージンブロック用となる。論理ブロック数D2から、このFBリストに対応するバンク/チップ/プレーンでのバッドブロックBB数D3を差し引けば、マージンブロック数D4を求めることができる。また、マージンブロック数D4から管理領域やバッファ領域として使用中のマージンブロックを使用状況に応じて逐次減算すると、未使用マージンブロック数を求めることができる。
このように、各FBリスト毎のマージンブロック数あるいは未使用マージンブロック数に応じて重み付けしたラウンドロビン方式により、フリーブロックFBを取得するリストを選ぶことで、バッドブロックの少ないバンク/チップ/プレーンから優先的にフリーブロックを取得することができる。
このように、本実施形態では、複数本のFB管理リストを備え、各FB管理リストでは、同一のバンク番号/チップ番号/プレーン番号を持つ論理ブロックFBを管理するようにし、論理層管理部120cからの要求に応じて、FB選択部42が必要な論理ブロック(フリーブロックFB)を取得するようにしているので、大きな並列度が必要なときは多並列処理による高速化が可能となり、また並列度が少なくて良い場合は、書き込み効率を優先した処理が可能となる。
[第2の実施形態]
図13は、この発明の第2の実施形態を示すものであり、図9のFB管理部40内に、並列動作可能なフリーブロックFB数を計算するFB並列度計算部45が追加されている。
論理層管理部120cは、FB提供部43にフリーブロックFBを要求する前に、FB並列度計算部45に現在並列動作可能なフリーブロックFB数の計算を要求する。FB並列度計算部45は、論理層管理部120cからの要求により、現在、並列動作可能なフリーブロックFB数を計算する。並列動作可能なフリーブロックFB数は次の手順で求める。
(1)バンク内での並列度を求める。
(2)各バンク内で求めた並列度を全バンク分加算する。
バンク内での並列度(そのバンクだけで、何個のフリーブロックFBを同時に使用することができるか)は、バンク内のフリーブロックFBで同一チップ番号を持つプレーン0とプレーン1の組が存在するか否か(倍速モードで動作可能なプレーンの組が存在するか否か)で決まる。あるバンク内で同一チップ番号を持つプレーン0とプレーン1の組が存在すれば、これらは倍速モードで並列動作が可能であるため並列度2、プレーン0かプレーン1の一方しか存在しない場合は並列度1、バンク内にフリーブロックFBが全くない場合は並列度0である。
FB並列度計算部45は、計算した並列動作可能なフリーブロックFB数を論理層管理部120cに通知する。論理層管理部120cは、通知結果(並列度)に従って自身の処理を変更することも可能である。例えば、並列度が十分に確保できる場合は大量のデータを集めてから書き込み処理を実行する。
このように、第2の実施形態では、可能な並列数を計算して論理層管理部120cに通知するようにしているので、論理層管理部120cは、通知結果に応じて自身の処理を変更することでより効率の良い処理が可能となり、書き込み効率が向上する。
[第3の実施の形態]
第3の実施の形態では、第2の実施の形態のより具体的な処理内容について説明する。さらに、第3の実施の形態では、物理層管理部120dが論理層管理部120cから要求された並列度nを確保する際に、倍速優先で並列度を確保する倍速優先モードと、バンク並列優先で並列度を確保するバンク優先モードとの2つのモードを切替え可能にしている。
図13に示すFB並列度計算部45は、図14に示すような余裕度テーブルを有している。図14に示すように、余裕度テーブルでは、各バンク毎に、倍速モードを使用する場合におけるチップの余裕度に関する情報と、倍速を使用せずに通常モードを使用する場合におけるプレーンの余裕度に関する情報が登録されている。余裕度テーブルは登録データを更新すべき事象が発生する度に更新される。
図10に示した、同一のバンク番号/チップ番号/プレーン番号を持つ論理ブロックのリストとして構成される1つのFBリスト50−1〜50−Lにおける現時点でのフリーブロックFB数を「プレーン余裕度」と定義する。1つのFBリスト50−1におけるフリーブロックFB数が例えば20個であれば、そのFBリストが持つプレーン余裕度=20となる。また、チップを構成する2つの「プレーン余裕度」をX,Yとするとき、小さい方の「プレーン余裕度」をそのチップの「チップ余裕度」として定義する。あるチップにおけるプレーン0のプレーン余裕度が20で、同じチップにおけるプレーン1のプレーン余裕度が15の場合、そのチップのチップ余裕度は15となる。
余裕度テーブルにおける倍速モード視点の欄には、当該バンクに属するチップの中で、チップ余裕度が一番高いのはどのチップであるかを示す情報(チップ番号)と、チップの余裕度の値(以下この値を「倍速時のバンク余裕度」と呼ぶ)が保持されている。余裕度テーブルにおける通常モード視点の欄には、当該バンクに属するプレーンの中で、余裕度が一番高いのはどのチップのどのプレーンかを示す情報(チップ番号/プレーン番号)と、プレーンの余裕度の値(以下この値を「通常時のバンク余裕度」と呼ぶ)が保持されている。倍速時のバンク余裕度に基づいて倍速優先モードの際のバンク間の選択優先度が決められ、通常時のバンク余裕度に基づいてバンク優先モードの際のバンク間の選択優先度が決められる。
例えば、バンク0における各チップ/各プレーンにおけるプレーン余裕度およびチップ余裕度が図15に示すような状態にあるとき、バンク0において、チップ余裕度が一番高いチップは、チップ余裕度20を持つチップ3であり、またプレーン余裕度が一番高いプレーンは、プレーン余裕度30を持つチップ0のプレーン1である。したがって、余裕度テーブルにおけるバンク0の倍速モード視点の欄には、チップ3を示すチップ番号と、その余裕度の値20が登録され、同通常モード視点の欄には、チップ0/プレーン1を示すチップ番号/プレーン番号と、その余裕度の値30が登録される。
前述したように、上位層としての論理層管理部120cがFB提供部43にフリーブロックFB選択を要求する場合には、論理層管理部120cは、その時点で選択可能な並列度の最高値を、あらかじめFB並列度計算部45に問い合わせた上で、その最高値を越えない並列度でのブロック割り当てを、FB提供部43を介してFB選択部42に要求する。従ってFB選択部42は、論理層管理部120cからフリーブロックFBの割り当てを要求された場合、指定された並列度での割り当てを、必ず達成できる状態にある。
FB並列度計算部45での並列度計算は、第2の実施の形態での説明と同様、以下のような手順で行う。
(a)バンク0の並列度を以下のようにして求める。
(a-1)倍速時の余裕度が0より大きい場合はバンク0の並列度を2とする。
(a-2)倍速時の余裕度が0で、かつ通常時の余裕度が0より大きい場合には、バンク0の並列度を1とする。
(a-3)倍速時/通常時の余裕度が共に0の場合は、バンク0の並列度を0とする。
(b)バンク1〜Nの並列度を、バンク0と同様にして求める。
(c)(a)(b)で求めた各バンクの並列度の和を、その時点でのブロック選択の並列度とし、論理層管理部120cに報告する。
つぎに、図16に従って倍速優先で並列度を確保する倍速優先方式について説明する。前述したように、倍速動作はバンクとチップが同一でプレーンが異なるフリーブロックFBの組に限られる。論理層管理部120cから、並列度nでのブロック割り当てを要求されたものとする。
図12のFB選択部42では、図14に示した余裕度テーブルを参照し、倍速時の余裕度が最大のバンクを選択し、選択したバンクの倍速時の余裕度に対応するチップの、2つのプレーンに属するフリーブロックFBを1つずつ、合計2つ選択する(ステップS100)。FB選択部42は、選択したフリーブロックFBの合計がInt(n/2)*2に達したか否かを判定する(ステップS110)。Int(n/2)は、n/2の除算結果の小数点以下を切り捨てて整数値とする演算を表している。例えば、n=3のとき、Int(n/2)=1であり、Int(n/2)*2=2である。ステップS110の判定結果がYesのときは、手順はステップS125に移行し、その判定結果がNoのとき、手順はステップS120に移行する。
ステップS120では、FB選択部42は、余裕度テーブルを参照し、倍速時の余裕度が0でないバンクが存在するか否かを判定する(ステップS120)。倍速時の余裕度が0でないバンクが存在している場合は、FB選択部42は、先のステップS100で既に選択されたバンク以外のなかで、倍速時の余裕度が最大のバンクを選択し、選択したバンクの倍速時の余裕度に対応するチップの、2つのプレーンに属するフリーブロックFBを1つずつ、合計2つ選択する(ステップS100)。
このようにして、選択したフリーブロックFBの総和がInt(n/2)*2に達するか、倍速時の余裕度が0でないバンクが無くなるまで、ステップS100〜S120の手順を繰り返す。
ステップS125において、FB選択部42は、選択したフリーブロックFBの合計が論理層管理部120cから要求された並列度nに達したか否かを判定し、合計が並列度nに達した場合はここで処理を終了する。
ステップS125の判断がNOの場合、FB選択部42は、余裕度テーブルを参照し、未選択バンクのうち通常時の余裕度が最大のバンクを選択し、選択したバンクの通常時の余裕度に対応するチップ/プレーンに属するフリーブロックFBを1つ選択する(ステップS130)。これ以降、選択されたフリーブロックの総和が並列度nに達するまで、未選択バンクについて、ステップS130,S140の処理を繰り返す。選択されたフリーブロックの総和がnに達した場合には、選択処理を終了する。
例えば、余裕度テーブルが図17に示すような状態であったとする。図17において、バンク0においては、チップ0が倍速時の最大余裕度を示し、その余裕度は15であり、チップ0/プレーン1が通常時の最大余裕度を示し、その余裕度は20である。バンク1においては、チップ2が倍速時の最大余裕度を示し、その余裕度は10であり、チップ2/プレーン0が通常時の最大余裕度を示し、その余裕度は30である。バンク2においては、倍速時の最大余裕度は0であり、チップ3/プレーン1が通常時の最大余裕度を示し、その余裕度は27である。バンク3においては、倍速時の最大余裕度は0であり、チップ2/プレーン0が通常時の最大余裕度を示し、その余裕度は9である。
このようなテーブル状態の場合に、並列度n=5が論理層管理部120cから要求され、倍速優先のフリーブロックFB選択を行うとする。まず、倍速時の最大余裕度15を有するバンク0が選択され、バンク0のチップ0のプレーン0,1からフリーブロックFBが1個ずつ計2個選択される(ステップS100)。この状態では、ステップS110、S120の判断はNOになるので、つぎに、バンク0以外のバンク1〜3のなかから倍速時の最大余裕度10を有するバンク1が選択され、バンク1のチップ2のプレーン0,1からフリーブロックFBが1個ずつ計2個選択される(ステップS100)。この段階で、選択されたフリーブロック数は4個となり、ステップS110の判断はYesとなり、ステップS125の判断がNOとなり、手順はステップS130に移行する。
ステップS130においては、未選択バンク2,3のなかで、通常時の最大余裕度27を有するバンク2を選択し、バンク2のチップ3のプレーン1からフリーブロックFBが1個選択される。この段階で選択されたフリーブロック数は5個となり、ステップS140の判断はYESとなるので、ここで選択処理は終了する。
この結果、バンク0のチップ0のプレーン0,1と、バンク1のチップ2のプレーン0,1と、バンク2のチップ3のプレーン1からフリーブロックFBが1個ずつ選択され、倍速優先で並列度5を達成させることができる。
また、図17に示すテーブル状態の場合に、並列度n=3が論理層管理部120cから要求され、倍速優先のフリーブロックFB選択が行われる場合は、まず、倍速時の最大余裕度15を有するバンク0が選択され、バンク0のチップ0のプレーン0,1からフリーブロックFBが1個ずつ計2個選択される(ステップS100)。この段階で、選択されたフリーブロック数は2個となり、ステップS110の判断はYesとなり、ステップS125の判断がNOとなり、手順はステップS130に移行される。ステップS130においては、未選択バンク1,2,3のなかで、通常時の最大余裕度30を有するバンク1を選択し、バンク1のチップ2のプレーン0からフリーブロックFBが1個選択される。この段階で選択されたフリーブロック数は3個となり、ステップS140の判断はYESとなるので、ここで選択処理は終了する。
この結果、バンク0のチップ0のプレーン0,1と、バンク1のチップ2のプレーン0からフリーブロックFBが1個ずつ選択され、倍速優先で並列度3を達成させることができる。
つぎに、図18に従ってバンク並列優先で並列度を確保するバンク優先方式について説明する。前述したように、論理層管理部120cから、並列度nでのブロック割り当てを要求されたものとする。
FB選択部42では、まず、余裕度テーブルを参照して、通常時の余裕度が0でないバンクの個数mを求める(ステップS200)。論理層管理部120cから指定された並列度nとmとを比較し(ステップS210)、m≧nである場合は、ステップS220〜S230の処理を実行し、m<nである場合は、ステップS250〜S280の処理を実行する。
m≧nである場合、FB選択部42は、余裕度テーブルを参照し、全バンクのうち通常時の余裕度が最大のバンクを選択し、選択したバンクの通常時の余裕度に対応するチップ/プレーンに属するフリーブロックFBを1つ選択する(ステップS220)。FB選択部42は、選択したフリーブロックFBの合計が論理層管理部120cから要求された並列度nに達したか否かを判定し(ステップS230)、達していない場合は、これ以降、選択されたフリーブロックの総和が並列度nに達するまで、未選択バンクについて、ステップS220,S230の処理を繰り返す。選択されたフリーブロックの総和がnに達した場合には、選択処理を終了する。
m<nである場合、FB選択部42は、余裕度テーブルを参照し、全バンクから倍速時の余裕度が最大のバンクを選択し、選択したバンクの倍速時の余裕度に対応するチップの、2つのプレーンに属するフリーブロックFBを1つずつ、合計2つ選択する(ステップS250)。FB選択部42は、選択したフリーブロックFBの合計が2(n−m)に達したか否かを判定し(ステップS260)、合計が2(n−m)に達していない場合は、未選択バンクから倍速時の余裕度が最大のバンクを選択し、選択したバンクの倍速時の余裕度に対応するチップの、2つのプレーンに属するフリーブロックFBを1つずつ、合計2つ選択する(ステップS250)。選択したフリーブロックFBの合計が2(n−m)に達するまで、ステップS250,S260の処理を繰り返す。
選択したフリーブロックFBの合計が2(n−m)に達した場合は、FB選択部42は、余裕度テーブルを参照し、未選択バンクのうち通常時の余裕度が最大のバンクを選択し、選択したバンクの通常時の余裕度に対応するチップ/プレーンに属するフリーブロックFBを1つ選択する(ステップS270)。これ以降、選択されたフリーブロックの総和が並列度nに達するまで、未選択バンクについて、ステップS270,S280の処理を繰り返す。選択されたフリーブロックの総和がnに達した場合には(ステップS280)、選択処理を終了する。
図17に示したテーブル状態の場合に、並列度n=3が論理層管理部120cから要求され、バンク並列優先のフリーブロックFB選択を行うとする。図17に示したテーブル状態の場合、通常時の余裕度が0でないバンク数m=4であるので、ステップS210においてm≧nが成立する。先ず、通常時の余裕度が最大のバンク1が選択され、バンク1のチップ2のプレーン0からフリーブロックFBが1個選択される(ステップS220)。つぎに、バンク2が選択され、バンク2のチップ3のプレーン1からフリーブロックFBが1個選択され、さらにバンク0が選択され、バンク0のチップ0のプレーン1からフリーブロックFBが1個選択されることで、3個のフリーブロックが選択されて、並列度n=3を達成することができる。
つぎに、図17に示したテーブル状態の場合に、並列度n=5が論理層管理部120cから要求され、バンク並列優先のフリーブロックFB選択を行うとする。m=4であるので、ステップS210においてm<nが成立する。まず、ステップS250において倍速時の最大余裕度15を有するバンク0が選択され、バンク0のチップ0のプレーン0,1からフリーブロックFBが1個ずつ計2個選択される。この選択段階で、ステップS260の判断がYESとなり、ステップS270,S280の処理を3回繰り返すことで、未選択バンク1〜3からフリーブロックFBが1個ずつ選択される(バンク1のチップ2のプレーン0、バンク2のチップ3のプレーン1、バンク3のチップ2のプレーン0)。これにより、合計5個のフリーブロックFBが選択され、並列度n=5を達成することができる。
このようにバンク並列優先の場合は、ステップS250,S260の処理を行うことで、バンク並列でまかないきれない分だけ倍速モードを使うようにしている。すなわち、4バンク、2プレーン構成の場合に5並列が要求された場合に、バンク並列優先を行う場合は、1バンクのみ倍速モードを使用し、残りの3バンクは通常モード使用する。因みに、4バンク、2プレーン構成の場合に5並列が要求された場合に、倍速優先を行う場合は、可能な限り2バンクで倍速モードを使用し、残りの1バンクで通常モードを使用する。
このように、第3の実施の形態では、通常時のバンクの余裕度および倍速時のバンク余裕度が登録された余裕度テーブルを用い、要求された並列度nを確保する際に、倍速優先で並列度を確保する倍速優先モードと、バンク並列優先で並列度を確保するバンク優先モードとの2つのモードを切替え可能にしている。倍速モードを使用すると、通常モードより、より大きな並列度を確保する可能性が高くなる。したがって、要求された並列度が小さいときは、通常モード優先のバンク並列優先方式を使用し、要求された並列度が大きいときに、倍速優先方式を使用するようにすれば、小さな並列度で動作させるときは、倍速動作が可能な論理ブロックの組を多く確保しておくことが可能になり、実際に大きな並列度で動作させるときに、倍速動作を多くの回数続行させる可能性が高くなり、大きなデータの書き込み処理を高速化することが可能となる。
なお、第3の実施の形態では、余裕度テーブルには、現時点でのフリーブロックFB数を余裕度として登録し、この余裕度に基づいて倍速優先モードあるいはバンク優先モードでのFBリストを選択するようにしたが、第1の実施の形態で説明したバッドブロックBB数に逆対応する値(例えばBB数の逆数)や各バンク/チップ/プレーンで利用可能な論理ブロック数やマージンブロックや未使用マージンブロック数を余裕度とし、この余裕度に応じて倍速優先モードあるいはバンク優先モードでのFBリストを選択するようにしてもよい。
[第4の実施の形態]
図19は、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が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
図20は、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)バス等を介してビデオコントローラ1304との通信、及びオーディオコントローラ1305との通信を実行する機能も有している。
主メモリ1303は、プログラムやデータを一時的に記憶し、CPU1301のワークエリアとして機能する。主メモリ1303は、例えばDRAMから構成される。
ビデオコントローラ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する機能を有している。ネットワークコントローラ1313は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
さらなる効果や変形例は、当業者によって容易に導き出すことができる。よって、本発明のより広範な態様は、以上のように表わしかつ記述した特定の詳細及び代表的な実施形態に限定されるものではない。したがって、添付のクレーム及びその均等物によって定義される総括的な発明の概念の精神または範囲から逸脱することなく、様々な変更が可能である。
10 NAND型フラッシュメモリ、20 DRAM、40 フリーブロック管理部、50 フリーブロック管理リスト、100 SSD。

Claims (30)

  1. 複数のメモリチップで構成されるチャネル並列動作要素を複数個有する不揮発性半導体メモリであって、各メモリチップは並列動作可能な複数のプレーンに分割され、各プレーンはデータ消去の単位である物理ブロックを複数有し、並列駆動される各チャネル並列動作要素内の複数のメモリチップを複数のチャネル並列動作要素に跨ってそれぞれがレディ/ビジー信号を共有する複数のバンクに分割した不揮発性半導体メモリと、
    前記並列駆動される複数のチャネル並列動作要素から選択した複数の物理ブロックに対応付けられた論理ブロックに基づいてフリーブロックを管理し、前記プレーン、バンク、またはチャネル並列動作要素による並列動作を制御するコントローラと、
    備え、
    前記コントローラは、
    同一のバンク番号、同一のチップ番号、同一のプレーン番号を持つ前記論理ブロックをフリーブロックとしてそれぞれ管理する複数本のフリーブロック管理リストと、
    前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択し、選択したフリーブロック管理リストからフリーブロックを取得するフリーブロック選択部と、
    を備えることを特徴とするメモリシステム。
  2. 前記フリーブロック選択部は、1つのバンクに所属しかつ1つのチップに所属するバッドブロック数が少ない1つのプレーンに対応するフリーブロック管理リストほど優先的に選択されるように前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項1に記載のメモリシステム。
  3. 前記フリーブロック選択部は、バンク間は優先付けなしで複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択し、バンク内では、1つのバンクに所属しかつ1つのチップに所属するバッドブロック数が少ない1つのプレーンに対応するフリーブロック管理リストほど優先的に選択されるように前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項1に記載のメモリシステム。
  4. 前記フリーブロック選択部は、バッドブロック数に逆対応する値で重み付けしたラウンドロビンを用いて複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項3に記載のメモリシステム。
  5. 前記フリーブロック選択部は、フリーブロック管理リストにエントリされる論理ブロックの個数で重み付けしたラウンドロビンを用いて複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項3に記載のメモリシステム。
  6. 前記フリーブロック選択部は、フリーブロックおよびアクティブブロックとして使用可能な論理ブロックの個数で重み付けしたラウンドロビンを用いて複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項3に記載のメモリシステム。
  7. 前記フリーブロック選択部は、前記不揮発性半導体メモリの記憶領域のうちでホスト側で使用される論理アドレスによって指定可能なリザーブ領域を除いたマージン領域に属し、フリーブロックおよびアクティブブロックとして使用可能な論理ブロックの個数で重み付けしたラウンドロビンを用いて複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項3に記載のメモリシステム。
  8. 前記フリーブロック選択部は、前記不揮発性半導体メモリの記憶領域のうちでホスト側で使用される論理アドレスによって指定可能なリザーブ領域を除いたマージン領域に属し、フリーブロックおよびアクティブブロックとして使用可能な論理ブロックのうちのフリーブロックの個数で重み付けしたラウンドロビンを用いて複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項3に記載のメモリシステム。
  9. 並列動作可能なフリーブロックの個数を計算するフリーブロック並列度計算部をさらに備えることを特徴とする請求項1に記載のメモリシステム。
  10. 前記フリーブロック選択部は、並列動作するフリーブロックの個数である並列度が指定された場合、各プレーンの並列動作を優先させる第1のモードと、バンクの並列動作を優先させる第2のモードとの切替えが可能であり、選択されたモードに応じた所要数のフリーブロック管理リストを複数本のフリーブロック管理リストから選択することを特徴とする請求項9に記載のメモリシステム。
  11. 前記フリーブロック選択部は、第1のモードにおけるバンク間の選択優先度を示す第1の情報と、第2のモードにおけるバンク間の選択優先度を示す第2の情報とを各バンク別に登録するテーブルを備え、このテーブルの登録情報にしたがって複数本のフリーブロック管理リストから選択されたモードに応じた所要数のフリーブロック管理リストを選択することを特徴とする請求項10に記載のメモリシステム。
  12. プレーン余裕度を当該バンク内に所属する各チップ内各プレーンでのフリーブロックの個数とし、チップ余裕度を同一チップに含まれる複数のプレーンのプレーン余裕度の最小値とし、
    前記第1の情報には、当該バンク内に所属する各チップのうちで前記チップ余裕度が最大値を有するチップを識別する情報と、チップ余裕度の最大値とが含まれ、
    前記第2の情報には、当該バンク内に所属する各チップ内各プレーンのうちで前記プレーン余裕度が最大値を有するチップ内プレーンを識別する情報と、プレーン余裕度の最大値とが含まれることを特徴とする請求項11に記載のメモリシステム。
  13. 前記フリーブロック選択部は、第1のモードを実行する場合は、前記テーブルに登録された第2の情報に含まれるチップ内プレーンを第1の情報に含まれるチップよりも優先的に選択し、かつプレーン余裕度またはチップ余裕度が大きな値を有するチップ内プレーンまたはチップほど優先的に選択し、
    第2のモードを実行する場合は、前記テーブルに登録された第1の情報に含まれるチップを第2の情報に含まれるチップ内プレーンよりも優先的に選択し、かつプレーン余裕度またはチップ余裕度が大きな値を有するチップ内プレーンまたはチップほど優先的に選択することを特徴とする請求項12に記載のメモリシステム。
  14. 複数のメモリチップで構成されるチャネル並列動作要素を複数個有する不揮発性半導体メモリであって、各メモリチップは並列動作可能な複数のプレーンに分割され、各プレーンはデータ消去の単位である物理ブロックを複数有し、並列駆動される各チャネル並列動作要素内の複数のメモリチップが複数のチャネル並列動作要素に跨ってそれぞれがレディ/ビジー信号を共有する複数のバンクに分割される不揮発性半導体メモリを前記プレーン、バンク、またはチャネル並列動作要素による並列動作が可能なように制御するメモリシステムの制御方法であって、
    前記並列駆動される複数のチャネル並列動作要素から選択した複数の物理ブロックに対応付けられた論理ブロックとしてのフリーブロックを、複数本のフリーブロック管理リストによって、同一のバンク番号、同一のチップ番号、同一のプレーン番号を持つフリーブロックとしてそれぞれ管理し、
    前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択し、選択したフリーブロック管理リストからフリーブロックを取得することを特徴とするメモリシステムの制御方法。
  15. 前記フリーブロックの取得の際には、1つのバンクに所属しかつ1つのチップに所属するバッドブロック数が少ない1つのプレーンに対応するフリーブロック管理リストほど優先的に選択されるように前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項14に記載のメモリシステムの制御方法。
  16. 前記フリーブロックの取得の際には、バンク間は優先付けなしで複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択し、バンク内では、1つのバンクに所属しかつ1つのチップに所属するバッドブロック数が少ない1つのプレーンに対応するフリーブロック管理リストほど優先的に選択されるように前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項14に記載のメモリシステムの制御方法。
  17. 前記フリーブロックの取得の際には、バッドブロック数に逆対応する値で重み付けしたラウンドロビンを用いて前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項16に記載のメモリシステムの制御方法。
  18. 前記フリーブロックの取得の際には、フリーブロック管理リストにエントリされる論理ブロックの個数で重み付けしたラウンドロビンを用いて前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項16に記載のメモリシステムの制御方法。
  19. 前記フリーブロックの取得の際には、フリーブロックおよびアクティブブロックとして使用可能な論理ブロックの個数で重み付けしたラウンドロビンを用いて前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項16に記載のメモリシステムの制御方法。
  20. 前記フリーブロックの取得の際には、前記不揮発性半導体メモリの記憶領域のうちでホスト側で使用される論理アドレスによって指定可能なリザーブ領域を除いたマージン領域に属し、フリーブロックおよびアクティブブロックとして使用可能な論理ブロックの個数で重み付けしたラウンドロビンを用いて前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項16に記載のメモリシステムの制御方法。
  21. 前記フリーブロックの取得の際には、前記不揮発性半導体メモリの記憶領域のうちでホスト側で使用される論理アドレスによって指定可能なリザーブ領域を除いたマージン領域に属し、フリーブロックおよびアクティブブロックとして使用可能な論理ブロックのうちのフリーブロックの個数で重み付けしたラウンドロビンを用いて複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項16に記載のメモリシステムの制御方法。
  22. さらに、並列動作可能なフリーブロックの個数を計算することを特徴とする請求項14に記載のメモリシステムの制御方法。
  23. 前記フリーブロックの取得の際には、並列動作するフリーブロックの個数である並列度が指定された場合、各プレーンの並列動作を優先させる第1のモードと、バンクの並列動作を優先させる第2のモードとの切替えが可能であり、選択されたモードに応じた所要数のフリーブロック管理リストを前記複数本のフリーブロック管理リストから選択することを特徴とする請求項22に記載のメモリシステムの制御方法。
  24. 前記フリーブロックの取得の際には、第1のモードにおけるバンク間の選択優先度を示す第1の情報と、第2のモードにおけるバンク間の選択優先度を示す第2の情報とが各バンク別に登録されるテーブルの登録情報にしたがって複数本のフリーブロック管理リストから選択されたモードに応じた所要数のフリーブロック管理リストを選択することを特徴とする請求項23に記載のメモリシステムの制御方法。
  25. プレーン余裕度を当該バンク内に所属する各チップ内各プレーンでのフリーブロックの個数とし、チップ余裕度を同一チップに含まれる複数のプレーンのプレーン余裕度の最小値とし、
    前記第1の情報には、当該バンク内に所属する各チップのうちで前記チップ余裕度が最大値を有するチップを識別する情報と、チップ余裕度の最大値とが含まれ、
    前記第2の情報には、当該バンク内に所属する各チップ内各プレーンのうちで前記プレーン余裕度が最大値を有するチップ内プレーンを識別する情報と、プレーン余裕度の最大値とが含まれることを特徴とする請求項24に記載のメモリシステムの制御方法。
  26. 前記フリーブロックの取得の際には、第1のモードを実行する場合は、前記テーブルに登録された第2の情報に含まれるチップ内プレーンを第1の情報に含まれるチップよりも優先的に選択し、かつプレーン余裕度またはチップ余裕度が大きな値を有するチップ内プレーンまたはチップほど優先的に選択し、
    第2のモードを実行する場合は、前記テーブルに登録された第1の情報に含まれるチップを第2の情報に含まれるチップ内プレーンよりも優先的に選択し、かつプレーン余裕度またはチップ余裕度が大きな値を有するチップ内プレーンまたはチップほど優先的に選択することを特徴とする請求項25に記載のメモリシステムの制御方法。
  27. 複数のメモリチップで構成されるチャネル並列動作要素を複数個有する不揮発性半導体メモリであって、各メモリチップは並列動作可能な複数のプレーンに分割され、各プレーンはデータ消去の単位である物理ブロックを複数有し、並列駆動される各チャネル並列動作要素内の複数のメモリチップが複数のチャネル並列動作要素に跨ってそれぞれがレディ/ビジー信号を共有する複数のバンクに分割される不揮発性半導体メモリを前記プレーン、バンク、またはチャネル並列動作要素による並列動作が可能なように制御するコントローラであって、
    前記並列駆動される複数のチャネル並列動作要素から選択した複数の物理ブロックに対応付けられた論理ブロックとしてのフリーブロックを、同一のバンク番号、同一のチップ番号、同一のプレーン番号を持つフリーブロックとしてそれぞれ管理する複数本のフリーブロック管理リストと、
    前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択し、選択したフリーブロック管理リストからフリーブロックを取得するフリーブロック選択部と
    を備えることを特徴とするコントローラ。
  28. 前記フリーブロック選択部は、バンク間は優先付けなしで複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択し、バンク内では、1つのバンクに所属しかつ1つのチップに所属するバッドブロック数が少ない1つのプレーンに対応するフリーブロック管理リストほど優先的に選択されるように前記複数本のフリーブロック管理リストから所要数のフリーブロック管理リストを選択することを特徴とする請求項27に記載のコントローラ。
  29. 請求項1に記載のメモリシステムを備えることを特徴とするパーソナルコンピュータ。
  30. 請求項3に記載のメモリシステムを備えることを特徴とするパーソナルコンピュータ。
JP2011532412A 2009-02-12 2010-02-12 メモリシステム及びメモリシステムの制御方法 Expired - Fee Related JP5323199B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011532412A JP5323199B2 (ja) 2009-02-12 2010-02-12 メモリシステム及びメモリシステムの制御方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2009030299 2009-02-12
JP2009030299 2009-02-12
JP2011532412A JP5323199B2 (ja) 2009-02-12 2010-02-12 メモリシステム及びメモリシステムの制御方法
PCT/JP2010/052480 WO2010093056A1 (en) 2009-02-12 2010-02-12 Memory system and method of controlling memory system

Publications (2)

Publication Number Publication Date
JP2012517627A JP2012517627A (ja) 2012-08-02
JP5323199B2 true JP5323199B2 (ja) 2013-10-23

Family

ID=42561893

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011532412A Expired - Fee Related JP5323199B2 (ja) 2009-02-12 2010-02-12 メモリシステム及びメモリシステムの制御方法

Country Status (7)

Country Link
US (1) US8463986B2 (ja)
EP (1) EP2396729B1 (ja)
JP (1) JP5323199B2 (ja)
KR (1) KR101269366B1 (ja)
CN (1) CN102317925B (ja)
TW (1) TWI432961B (ja)
WO (1) WO2010093056A1 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5404483B2 (ja) * 2010-03-17 2014-01-29 株式会社東芝 メモリシステム
KR20140027859A (ko) 2012-08-27 2014-03-07 삼성전자주식회사 호스트 장치 및 이를 포함하는 시스템
CN102880570B (zh) * 2012-09-05 2016-04-27 记忆科技(深圳)有限公司 固态硬盘的加权磨损均衡方法及系统
JP5994647B2 (ja) * 2013-01-11 2016-09-21 三菱電機株式会社 データ記録装置、及びデータ記録方法
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
WO2015083225A1 (ja) * 2013-12-02 2015-06-11 富士通株式会社 情報処理装置、ストレージ、及びアクセス制御方法
KR102225989B1 (ko) 2014-03-04 2021-03-10 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 동작 방법
US9582201B2 (en) 2014-09-26 2017-02-28 Western Digital Technologies, Inc. Multi-tier scheme for logical storage management
TWI595632B (zh) * 2015-02-23 2017-08-11 Toshiba Kk Memory system
US10055267B2 (en) * 2015-03-04 2018-08-21 Sandisk Technologies Llc Block management scheme to handle cluster failures in non-volatile memory
US20170017420A1 (en) * 2015-07-15 2017-01-19 Innovium, Inc. System And Method For Enabling High Read Rates To Data Element Lists
KR20180083082A (ko) * 2017-01-12 2018-07-20 에스케이하이닉스 주식회사 정정 및 방어가 가능한 메모리 장치 및 메모리 모듈
JP6765321B2 (ja) * 2017-02-28 2020-10-07 キオクシア株式会社 メモリシステムおよび制御方法
JP2018163434A (ja) * 2017-03-24 2018-10-18 東芝メモリ株式会社 メモリシステム
CN108469946B (zh) * 2018-03-31 2021-04-20 深圳忆联信息系统有限公司 一种用于提高ssd写入效率的组块方法和装置
CN109445697A (zh) * 2018-10-22 2019-03-08 郑州云海信息技术有限公司 一种组块方法及装置
KR20210106119A (ko) * 2020-02-20 2021-08-30 에스케이하이닉스 주식회사 메모리 시스템
JP7457248B2 (ja) 2020-05-27 2024-03-28 株式会社バッファロー 記憶装置
US11556279B2 (en) * 2020-08-21 2023-01-17 Samsung Electronics Co., Ltd. System device, and method for memory interface including reconfigurable channel
CN112612722A (zh) * 2020-12-28 2021-04-06 深圳忆联信息系统有限公司 变长的数据管理方法、装置、计算机设备及存储介质
CN117043752A (zh) * 2021-03-29 2023-11-10 美光科技公司 边带通信管理
CN114677180A (zh) * 2022-04-12 2022-06-28 国网甘肃省电力公司兰州供电公司 一种电力工程资金预算评估系统

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001167586A (ja) 1999-12-08 2001-06-22 Toshiba Corp 不揮発性半導体メモリ装置
US7020739B2 (en) * 2000-12-06 2006-03-28 Tdk Corporation Memory controller, flash memory system having memory controller and method for controlling flash memory device
US6895464B2 (en) * 2002-06-03 2005-05-17 Honeywell International Inc. Flash memory management system and method utilizing multiple block list windows
US7433993B2 (en) 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US7383375B2 (en) 2003-12-30 2008-06-03 Sandisk Corporation Data run programming
US20050144363A1 (en) 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
JP2005209058A (ja) * 2004-01-26 2005-08-04 Megawin Technology Co Ltd フラッシュメモリの読み書きの制御方法
US7395385B2 (en) * 2005-02-12 2008-07-01 Broadcom Corporation Memory management for a mobile multimedia processor
US7506098B2 (en) * 2006-06-08 2009-03-17 Bitmicro Networks, Inc. Optimized placement policy for solid state storage devices
WO2008045839A1 (en) * 2006-10-12 2008-04-17 Sandisk Corporation Non-volatile memory with worst-case control data management and methods therefor
CN101149703A (zh) * 2007-10-10 2008-03-26 中兴通讯股份有限公司 一种固定内存的管理方法
JP2009110053A (ja) 2007-10-26 2009-05-21 Toshiba Corp メモリシステム
CN101632068B (zh) 2007-12-28 2015-01-14 株式会社东芝 半导体存储装置
JP4461170B2 (ja) 2007-12-28 2010-05-12 株式会社東芝 メモリシステム
JP2009211192A (ja) 2008-02-29 2009-09-17 Toshiba Corp メモリシステム
JP4489127B2 (ja) 2008-02-29 2010-06-23 株式会社東芝 半導体記憶装置
JP5010505B2 (ja) 2008-03-01 2012-08-29 株式会社東芝 メモリシステム
JP4551940B2 (ja) 2008-03-01 2010-09-29 株式会社東芝 メモリシステム
KR101067457B1 (ko) 2008-03-01 2011-09-27 가부시끼가이샤 도시바 메모리 시스템
JP2009211233A (ja) 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
US8276043B2 (en) 2008-03-01 2012-09-25 Kabushiki Kaisha Toshiba Memory system
US8706950B2 (en) 2008-03-01 2014-04-22 Kabushiki Kaisha Toshiba Memory system
JP2009211234A (ja) 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
JP4643667B2 (ja) 2008-03-01 2011-03-02 株式会社東芝 メモリシステム
JP4653817B2 (ja) 2008-03-01 2011-03-16 株式会社東芝 メモリシステム
JP4675985B2 (ja) 2008-03-01 2011-04-27 株式会社東芝 メモリシステム
JP4498426B2 (ja) 2008-03-01 2010-07-07 株式会社東芝 メモリシステム
JP4745356B2 (ja) 2008-03-01 2011-08-10 株式会社東芝 メモリシステム
JP4691123B2 (ja) 2008-03-01 2011-06-01 株式会社東芝 メモリシステム
US8484432B2 (en) 2008-03-11 2013-07-09 Kabushiki Kaisha Toshiba Memory system
JP4762261B2 (ja) 2008-03-12 2011-08-31 株式会社東芝 メモリシステム
JP4439569B2 (ja) 2008-04-24 2010-03-24 株式会社東芝 メモリシステム
JP5253901B2 (ja) 2008-06-20 2013-07-31 株式会社東芝 メモリシステム
CN101329655B (zh) * 2008-07-31 2011-09-28 北京天碁科技有限公司 一种内存管理方法和内存管理装置
JP5404483B2 (ja) 2010-03-17 2014-01-29 株式会社東芝 メモリシステム

Also Published As

Publication number Publication date
TWI432961B (zh) 2014-04-01
EP2396729A1 (en) 2011-12-21
US20110302361A1 (en) 2011-12-08
EP2396729A4 (en) 2014-06-18
EP2396729B1 (en) 2019-05-22
TW201042647A (en) 2010-12-01
US8463986B2 (en) 2013-06-11
WO2010093056A1 (en) 2010-08-19
CN102317925A (zh) 2012-01-11
KR101269366B1 (ko) 2013-05-29
KR20110107845A (ko) 2011-10-04
JP2012517627A (ja) 2012-08-02
CN102317925B (zh) 2014-07-23

Similar Documents

Publication Publication Date Title
JP5323199B2 (ja) メモリシステム及びメモリシステムの制御方法
JP5404483B2 (ja) メモリシステム
US8924636B2 (en) Management information generating method, logical block constructing method, and semiconductor memory device
JP5221332B2 (ja) メモリシステム
JP5823875B2 (ja) 固体メモリフォーマッティング
US8225058B2 (en) Memory system managing a size of logs
US9665442B2 (en) Smart flushing of data to backup storage
KR101117403B1 (ko) 메모리 시스템, 컨트롤러 및 메모리 시스템의 제어 방법
JP5489434B2 (ja) フラッシュメモリ搭載ストレージ装置
JP4461187B1 (ja) 不揮発性半導体メモリドライブ装置、情報処理装置および不揮発性半導体メモリドライブ装置における記憶領域の管理方法
KR101552207B1 (ko) 예비 영역을 가지는 반도체 메모리 장치
US9785384B2 (en) Semiconductor storage device and method for controlling nonvolatile semiconductor memory
US20090089485A1 (en) Wear leveling method and controller using the same
US8255715B2 (en) Storage system and power control method thereof with mode selection defined by timeout period and power supply
KR20010110073A (ko) 블록 얼라인먼트 기능을 갖는 반도체 기억 장치
US8862819B2 (en) Log structure array
JP2011070365A (ja) メモリシステム
US20110093651A1 (en) Data storage apparatus and controlling method of the data storage apparatus
JP2018160189A (ja) メモリシステム
JP2013200741A (ja) 半導体記憶装置、その制御方法及び情報処理装置
US10713163B2 (en) Set aware system data and mapping tables
JP5694212B2 (ja) 管理情報生成方法およびメモリシステム
JP2013200722A (ja) 半導体記憶装置の論理ブロックの構築方法

Legal Events

Date Code Title Description
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: 20130625

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130716

R151 Written notification of patent or utility model registration

Ref document number: 5323199

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111111

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

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

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees