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

メモリシステム Download PDF

Info

Publication number
JP4987997B2
JP4987997B2 JP2010043299A JP2010043299A JP4987997B2 JP 4987997 B2 JP4987997 B2 JP 4987997B2 JP 2010043299 A JP2010043299 A JP 2010043299A JP 2010043299 A JP2010043299 A JP 2010043299A JP 4987997 B2 JP4987997 B2 JP 4987997B2
Authority
JP
Japan
Prior art keywords
list
block
unit
free block
order
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
JP2010043299A
Other languages
English (en)
Other versions
JP2011180773A (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 JP2010043299A priority Critical patent/JP4987997B2/ja
Priority to US12/882,703 priority patent/US8583856B2/en
Priority to TW100104807A priority patent/TWI464586B/zh
Priority to KR1020110013664A priority patent/KR101277382B1/ko
Priority to CN201110045961.0A priority patent/CN102169461B/zh
Publication of JP2011180773A publication Critical patent/JP2011180773A/ja
Application granted granted Critical
Publication of JP4987997B2 publication Critical patent/JP4987997B2/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
    • 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
    • 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

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)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、不揮発性半導体メモリを備えたメモリシステムに関する。
コンピュータなどに用いられる外部記憶装置として、NANDフラッシュメモリといった不揮発性半導体メモリを記憶媒体としたSSD(Solid State Drive)が注目されている。SSDは、機械的動作が含まれないため、従来から用いられる磁気ディスク装置と比べて耐衝撃性、ランダム読み出し動作、消費電力などの点で有利である。
一方、NANDフラッシュメモリの単体での書込み速度は、磁気ディスク装置と比較して低速である。そのため、SSDでは、複数のNANDフラッシュメモリのチップを並列アクセス可能なように接続したり、NANDフラッシュメモリ自体もチップ内で複数の領域に同時に書き込みを可能にするなどの構成を適用し、転送性能を向上させている(例えば特許文献1参照)。
SSDの実用上のデータ転送速度を向上させるためには、上述のように構成したハードウェアの並列性を最大限に生かす必要がある。そのため、ホストから受信した書き込みデータを一時的に蓄積するバッファメモリを用意し、十分な量のデータがバッファメモリに溜まってからデータを分割して、NANDフラッシュメモリ内の複数のチップに対して並列的に書き込む。
NANDフラッシュメモリの記憶領域は、ブロックと呼ばれる単位に分割され、NANDフラッシュメモリに対するデータの書き込みは、このブロック単位で行われる。すなわち、NANDフラッシュメモリに対するデータの書き込みは、ブロック内のデータを一括消去してから、当該ブロックに対して新しいデータを所定の順序で書き込むことで行われる。
ところで、NANDフラッシュメモリは、最大消去回数に制約があるという性質を持つ。例えば、あるブロックの消去回数が所定以上になると、そのブロックは疲弊してデータを記憶できなくなる。この疲弊によりデータを記憶できなくなったブロックが増加すると、SSD全体としてデータの記憶容量が減少し、所定の表記容量を提供できなくなった時点で故障となる。SSD全体としての寿命を延ばすためには、全体のブロックを満遍なく使用して、消去回数を平準化する機構が必要となる。
特開2009−211232号公報
このように、実用的にSSDを利用するためには、アクセス時、特に書き込み時の並列度を確保して転送能力を維持すると共に、ブロック間での消去回数の平準化を行う必要がある。これら書き込み時の並列度の確保と、ブロック間での消去回数の平準化には、データをどのブロックに書き込むかという、ブロック割当方法が大きく関わっている。
例えばハードディスクのように、アドレスに対して物理的な記憶領域を固定的に割り当てる方法をSSDに適用することを考えると、SSDでは、アドレスに対してブロックが固定的に割り当てられることになる。この場合、次の2つの問題が生じる。
第1の問題は、特定のアドレスに書かれたデータを繰り返し上書きを行った場合に生じる問題である。この場合、当該アドレスに対応するブロックにおいて、データの一括消去と書き込みが繰り返されることになり、当該ブロックのみ消去回数が増加してしまい、当該ブロックの寿命が他のブロックよりも短くなってしまう。
第2の問題は、並列書き込みできない1または複数のブロックに割り当てられた異なるアドレスに対して、複数の書き込みデータを受信した場合に生じる問題である。この場合、データは、ブロックに対して逐次的に書き込まれることになり、転送能力が劣化してしまう。
本発明は、上記に鑑みてなされたものであって、不揮発性半導体メモリに対して、書込み時の並列度を確保して転送能力を維持しつつ、ブロック間での消去回数の平準化を行うことが可能なメモリシステムを提供することを目的とする。
上述した課題を解決し、目的を達成するために、第1の発明は、データ消去の単位であるブロックを複数含む記憶領域を複数備え、異なる記憶領域に含まれるブロックに対して並列書き込み可能に構成された不揮発性メモリと、有効データが記憶されていないブロックであるフリーブロックを示す情報のリストを記憶領域毎に保持する管理部と、フリーブロックリストの順序を定めるための情報である順序規則を保持する順序規則保持部と、順序規則に基づいて定まる各フリーブロックリストの順番を示す位置情報を記憶する位置情報記憶部と、位置情報で示される位置に対応するリストを選択するリスト選択部と、リスト選択部で選択されたリストからフリーブロックを選択するブロック選択部と、ブロック選択部で選択されたフリーブロックに対してデータを書き込む書込部と、リスト選択部によりリストが選択された後に、位置情報記憶部に記憶される位置情報を、次に選択するリストの位置を示す位置情報に更新する更新部とを有し、ブロック選択部は、フリーブロックの選択を行う際に、ブロック選択部に定められた所定の条件を満たしている場合に、フリーブロックの選択をスキップし、更新部は、さらに、ブロック選択部によりフリーブロックの選択がスキップされた場合に位置情報の更新を行うことを特徴とする。
上述した課題を解決し、目的を達成するために、第2の発明は、データ消去の単位であるブロックを複数含む記憶領域を複数備え、異なる記憶領域に含まれるブロックに対して並列書き込み可能に構成された不揮発性メモリと、有効データが記憶されていないブロックであるフリーブロックを示す情報のリストを記憶領域毎に保持する管理部と、フリーブロックリストの順序を定めるための情報である順序規則を保持する順序規則保持部と、順序規則に基づいて定まる各フリーブロックリストの順番を示す位置情報を記憶する位置情報記憶部と、位置情報で示される位置に対応するリストを選択するリスト選択部と、リスト選択部で選択されたリストからフリーブロックを選択するブロック選択部と、ブロック選択部で選択されたフリーブロックに対してデータを書き込む書込部と、リスト選択部によりリストが選択された後に、位置情報記憶部に記憶される位置情報を、次に選択するリストの位置を示す位置情報に更新する更新部とを有し、位置情報記憶部は、複数の異なる順序規則を用いて生成される長周期順序規則に基づいて定まる各フリーブロックリストの順番を示す位置情報を記憶することを特徴とする。
本発明に係るメモリシステムは、不揮発性半導体メモリに対して、書込み時の並列度を確保して転送能力を維持しつつ、ブロック間での消去回数の平準化を行うことが可能であるという効果を奏する。
各実施形態のメモリシステムを適用可能なコンピュータ例の略線図。 本発明の各実施形態に適用可能なSSDの構成例を示すブロック図。 チップの一例の構成をより詳細に示す略線図。 アドレスとブロックとの関連付けについて説明するための略線図。 本発明の各実施形態によるデータの書き込み処理例のフローチャート。 順序規則を説明するための略線図。 バンク・チップ・プレーン構成を説明するための略線図。 並列書込みが可能なフリーブロックの選択処理例を示すフローチャート。 複数の物理的なブロックを常に纏めて使用する例を示す略線図。 所定周期のアドレスの書き込みを行う例を示す略線図。 第2の実施形態の順序規則の作成方法の概略的なフローチャート。 小周期を並べて新たな順序規則を作成する例を示す略線図。 第2の実施形態の所定周期のアドレスによる書き込み例の略線図。 プレーン数が多い場合の第2の実施形態の順序規則例を示す略線図。 バンク・チップ・プレーン構成の順序規則の例を示す略線図。 2進乱数系列を用いて順序規則を算出する例を示す略線図。 第3の実施形態の第1方法の順序規則をスキップする処理を示す一例のフローチャート。 第3の実施形態の第1方法の順序規則をスキップした例を示す略線図。 第3の実施形態の第2方法の順序規則をスキップする処理を示す一例のフローチャート。 第3の実施形態の第2方法の順序規則をスキップした例を示す略線図。 第3の実施形態の第2方法の順序規則をスキップした別の例を示す略線図。 第3の実施形態の変形例による順序規則の例を示す略線図。
<本発明の各実施形態に共通する構成>
以下に、本発明に係るメモリシステムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態により本発明が限定されるものではない。図1は、本発明の各実施形態に係るメモリシステムを適用可能なコンピュータ200の一例の外観を示す。図1に例示されるコンピュータ200は、携帯可能なように小型軽量に構成された、所謂ポータブルコンピュータである。コンピュータ200は、本体201と、表示ユニット202とを備える。表示ユニット202は、ディスプレイハウジング203と、このディスプレイハウジング203に収容された表示装置204とを備える。
本体201は、筐体205と、キーボード206と、ポインティングデバイスであるタッチパッド207とを備える。筐体205内部には、メイン回路基板、ODD(Optical Disk Drive)ユニット、カードスロット、SSD100などが収容される。メイン回路基板は、CPU(Central Processing Unit)やROM(Read Only Memory)、RAM(Random Access Memory)といった、このコンピュータ200の主要な部品が搭載される。ODDユニットは、CD(Compact Disk)やDVD(Digital Versatile Disk)といった光ディスクに対するデータの読み書きを行う。
カードスロットは、筐体205の周壁に隣接して設けられる。周壁には、カードスロットに対向する開口部208が設けられる。ユーザは、この開口部208を通じて筐体205の外部から追加デバイスをカードスロットに挿抜することが可能である。
SSD(Solid State Drive)100は、書き換え可能な不揮発性半導体メモリを用いた記憶装置である。SSD100は、従来のHDD(Hard Disk Drive)の置き換えとして、例えばOS(Operating System)や各種プログラムなどを記憶するために、コンピュータ200内部に実装された状態として使用することができる。これに限らず、SSD100は、コンピュータ200が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
図2は、本発明の各実施形態に適用可能なSSD100の一例の構成を示す。SSD100は、概略的には、コントローラ部130、インタフェース部120、バッファメモリ121および不揮発性メモリ部122を有する。これらコントローラ部130、インタフェース部120、バッファメモリ121および不揮発性メモリ部122は、バス110などの信号線で接続され、互いにデータのやりとりを行うことができるようにされている。
インタフェース部120は、ホスト機器との通信を行う。上述した図1およびこの図2の例では、ホスト機器としてコンピュータ200が接続されている。以下では、コンピュータ200をホスト機器200として記述する。インタフェース部120は、ホスト機器200からのリード、ライト、フラッシュなどのコマンドを受付け、コントローラ部130にコマンド受信を通知する。また、インタフェース部120は、コントローラ部130からの指示に従い、ホスト機器200との間でデータを送受信する。
バッファメモリ121は、DRAM(Dynamic RAM)などの揮発性メモリで構成される。バッファメモリ121は、インタフェース部120がホスト機器200と送受信を行うデータや、不揮発性メモリ部122に対して読出しや書込みを行うデータを一時的に格納する。これに限らず、SSD100における各種の管理情報をバッファメモリ121に格納してもよい。
不揮発性メモリ部122は、書き換え可能で、電源を遮断しても記憶内容が消去されないメモリであって、例えばホスト機器200から送信されたユーザデータが格納される。これに限らず、不揮発性メモリ部122は、ユーザデータ以外にも、例えばSSD100における各種管理用の情報を格納することもできる。
不揮発性メモリ部122は、不揮発性メモリによる記憶媒体であるNANDフラッシュメモリのチップ123、123、…と、NANDフラッシュメモリの制御を行うNANDコントローラ(図示しない)とを有する。各チップ123、123、…は、独立してアクセス制御が可能な記憶領域であるプレーンをそれぞれ複数、持つことができる。図3は、不揮発性メモリ部122のチップ123の一例の構成をより詳細に示す。この例では、チップ123は、プレーン#0およびプレーン#1の2のプレーンを有し、各プレーンは、所定の記憶容量を有する複数のブロック#0、#1、…、#nを有する。
このブロックは、チップ123における物理的な記憶領域としての物理ブロックであって、チップ123のデータ消去の単位である。なお、複数の物理ブロックを纏めて1の論理ブロックとして扱う形態も存在する。この場合は、この論理ブロックがデータ消去の単位となる。以下では、これら物理ブロックと論理ブロックとを、単にブロックとして統一的に表現する。
チップ123のあるブロックにデータを書き込む際には、ブロック単位で当該ブロックからデータを消去して、新しいデータを当該ブロックに書き込む。したがって、チップ123に対するデータの書き込みは、実質的にはブロック単位で行われる。
NANDフラッシュメモリのチップ123において、各プレーン同士は、チップ内で並列的にアクセス可能な構成となっている。例えば、図3の左側に(a)として例示されるように、番号が#0とされたチップ123において、プレーン#0に属するブロック#0と、プレーン#1に属するブロック#2には、並列アクセスが可能である。一方、図3の右側に(b)として例示されるように、同じ番号#0のチップ123において、プレーン#0に属するブロック#0およびブロック#2には、並列アクセスができない。
NANDフラッシュメモリにおいて、総記憶容量は、ホスト機器200に対して提供する記憶容量よりも多くの容量を用意する。そのため、ある時点では、有効なデータが記憶されているブロックと記憶されていないブロックとが存在する。有効なデータが記憶されていないブロックを、フリーブロックと呼ぶ。また、有効なデータが記憶されているブロックを、アクティブブロックと呼ぶ。
説明は図2に戻り、コントローラ部130は、ブロック管理部131、データ読出部132、データ書込部133、データ管理部134およびNANDドライバ135の各機能を有する。コントローラ部130は、インタフェース部120を介したホスト機器200との通信の制御や、バッファメモリ121および不揮発性メモリ部122に格納するデータの管理と読み書きの制御などを行う。
コントローラ部130が有する各機能は、回路として組み込まれたSoC(System On a Chip)として構成することができる。これに限らず、コントローラ部130のハードウェアとして汎用プロセッサを用い、これらの機能を汎用プロセッサ上で動作するソフトウェアで実現してもよい。
コントローラ部130において、データ管理部134は、ホスト機器200との間で使用される、データの記憶位置を示すアドレスと、不揮発性メモリ部122における実際の記憶領域であるブロック位置との対応関係を管理する。アドレスとブロックとの関係は、データの書き込み時に動的に関連付けられる。
図4を用いて、データ管理部134におけるアドレスとブロックとの関連付けについて説明する。例えば、図4の左側に(a)として例示されるように、ホスト機器200から指定されるデータのアドレスがアドレスA0、A1、…とされ、不揮発性メモリ部122におけるあるプレーンのブロック位置がブロックB0、B1、…とされているものとする。また、1のアドレスで指定されるデータのサイズは、1のブロックの記憶容量と等しいものとする。
ここで、アドレスA1に有効なデータが記憶されており、不揮発性メモリ部122においてアドレスA1として実際に使用されている記憶領域がブロックB1である場合について考える。この場合、ブロックB1がアクティブブロックであり、例えば隣のブロックB2がフリーブロックである。
この図4(a)の状態において、ホスト機器200からアドレスA1のデータを上書きするコマンドを受信したものとする。同一のアドレス上のデータを上書きする場合、ブロック単位でデータの上書き処理が行われる。データ管理部134は、フリーブロック(ブロックB2とする)を1個確保し、確保したフリーブロックに対してホスト機器200から受信したデータを書き込む。フリーブロックに対してデータを書き込んだら、ホスト機器200から指定されたアドレスA1と、データを実際に書き込んだブロックB2とを関連付ける。
その結果、図4の右側に(b)として例示するように、ブロックB2がアクティブブロックとなる。また、上書き前にアドレスA1のデータが記憶されていたブロックB1では、記憶データが無効とされるため、ブロックB1がフリーブロックとなる。このように、SSDにおいては、同じアドレスA1として指定されたデータであっても、実際の記憶領域として使用されるブロックは、データの書き込み毎に変化する。
説明は図2に戻り、データ読出部132は、不揮発性メモリ部122からのデータの読み出しを制御する。データ書込部133は、不揮発性メモリ部122に対するデータの書き込みを制御する。NANDドライバ135は、データ読出部132やデータ書込部133の要求に従い、不揮発性メモリ部122からデータ読み出しや書き込みを行うように、不揮発性メモリ部122が有するNANDコントローラ(図示しない)の制御を行う。
ブロック管理部131は、フリーブロック管理部140およびフリーブロック選択部150を有し、不揮発性メモリ部122におけるフリーブロックの管理と、データ書き込み時に使用するフリーブロックの選択とを行う。フリーブロック管理部140は、有効データが記憶されていないブロックであるフリーブロックを示す情報であるフリーブロックリストを保持し、管理する。例えば、不揮発性メモリ部122のフリーブロックを管理する構造体として、フリーブロックリスト1410、1411、…、141m、…、141nをプレーン毎に保持する。不揮発性メモリ部122のフリーブロックは、当該フリーブロックが属するプレーンに対応するフリーブロックリスト141mにより、フリーブロック管理部140で管理される。
なお、フリーブロックリスト141mは、フリーブロック管理部140が管理するフリーブロックリスト1410〜141nのうち、任意のフリーブロックリストを表すものとする。
フリーブロックリスト141mは、例えば、各フリーブロックに対応するブロック識別子を含むブロック情報をノードとして、フリーブロックリストに繋ぐ形態をとることができる。フリーブロックリストにフリーブロックを繋ぐ順序は、単純なFIFO(First In First Out)としてもよいし、フリーブロックの消去回数でソートした順番で繋いでもよい。また、並列書込みを行わない複数のプレーンについては、1個のフリーブロックリストで纏めてフリーブロックを管理してもよい。
フリーブロック選択部150は、不揮発性メモリ部122に対するデータの書き込み時に、本発明による順序規則に従い不揮発性メモリ部122のフリーブロックを選択する。フリーブロック選択部150は、順序規則演算部151、位置情報更新部152、順序規則保持部153および位置情報記憶部154を有する。
順序規則保持部153は、順序規則を保持する。順序規則とは、フリーブロックリストの順序を定めるための情報であり、テーブル形式や演算形式などにより定義される。順序規則を、テーブル形式や演算形式以外の他の形式で定義してもよい。順序規則保持部153は、例えば、図示されない記憶装置や記憶領域の一部によって構成されていてもよい。順序規則演算部151は、順序規則に基づいて順序列を演算する。順序列は、順序規則に基づいて生成されるフリーブロックリストの順序を表す情報である。例えば、順序列は、フリーブロックリストの識別子が順番に並べられた情報である。順序列と、後述する位置情報とからフリーブロックリストを選択する。
位置情報記憶部154は、位置情報を記憶する。位置情報は、順序規則に従いフリーブロックリストの順序列を作成した場合の順序列上の位置を示す情報である。換言すれば、位置情報は、順序規則に基づいて定まる各フリーブロックリストの順番を示す情報である。位置情報更新部152は、位置情報記憶部154に記憶される位置情報の更新を行う。例えば、位置情報更新部152は、順序規則演算部151でフリーブロックリストが選択された後に、位置情報を、次に選択するフリーブロックリストを示す位置に更新する。
次に、本発明の各実施形態によるデータの書き込み処理について、図5のフローチャートを用いて概略的に説明する。本発明の各実施形態では、データ書き込み時の転送能力を確保するため、ホスト機器200から受信した書き込みデータを一時的にバッファメモリ121に格納する。そして、バッファメモリ121に十分な量のデータが格納されてから、バッファメモリ121から書き込みデータを読み出して複数のフリーブロックに対して並列書き込みを行う。
図5において、インタフェース部120がホスト機器200からライトコマンドを待機し、ライトコマンドを受信すると(ステップS10)、インタフェース部120は、コントローラ部130に対してライトコマンドの受信を通知する(ステップS11)。ライトコマンドは、書き込みデータを書き込むアドレスを示す情報を含む。
このライトコマンド受信の通知を受けて、次のステップS12で、コントローラ部130のデータ書込部133は、バッファメモリ121上にホスト機器200から送信される書き込みデータを受信する領域を確保する。そして、データ書込部133は、バッファメモリ121上に確保した当該領域に対してホスト機器200から送信された書き込みデータを受信するように、インタフェース部120に対して指示を出す。次のステップS13で、インタフェース部120は、ホスト機器200から送信された書き込みデータを受信して、受信した書き込みデータを、ステップS12でバッファメモリ121上に確保された領域に格納する。
次のステップS14で、データ書込部133は、バッファメモリ121上に格納された書き込みデータのデータ量を確認し、バッファメモリ121上に所定量の書き込みデータが格納されたか否かを判定する。若し、バッファメモリ121に格納された書き込みデータのデータ量が所定量未満であれば、処理はステップS10に戻され、ホスト機器200からのコマンド待機状態とされる。
一方、ステップS14で、バッファメモリ121に所定量の書き込みデータが格納されたと判定されたら、処理はステップS15に移行される。ステップS15で、データ書込部133は、バッファメモリ121に格納された書き込みデータを書き込むために必要なフリーブロック数を計算する。
次のステップS16で、データ書込部133は、ステップS15で計算された必要数のフリーブロックを、フリーブロック管理部140に対して要求する。フリーブロックがフリーブロック管理部140に要求されると、処理は、本発明の各実施形態における特徴である、ステップS17に移行される。ステップS17では、データ書込部133からの要求を受けて、フリーブロック管理部140は、要求された数の並列書き込みが可能なフリーブロックの組をフリーブロックリスト1410、1411、…、141m、…、141nから抽出する。そして、抽出されたフリーブロックを示す情報をデータ書込部133に返す。
次のステップS18で、データ書込部133は、バッファメモリ121上の書き込みデータを、フリーブロック管理部140から取得した情報に示されるフリーブロックに対して並列書き込みを行うように、NANDドライバ135に要求する。次のステップS19で、NANDドライバ135は、不揮発性メモリ部122が有する図示されないNANDコントローラを制御して、データ書込部133から要求された書き込みデータの並列書き込みを実行する。
ステップS19でフリーブロックに対する書き込みデータの書き込みが行われると、次のステップS20で、データ書込部133は、書き込んだデータのアドレスとブロックとの対応関係を全てデータ管理部134に登録する。次のステップS21で、データ管理部134は、登録前すなわちステップS19によるデータの書き込み前に、書き込みデータの書き込みを指示されたアドレスに関連付けられていたアクティブブロックをフリーブロックとしてフリーブロック管理部140に通知する。
次のステップS22で、フリーブロック管理部140は、ステップS21にてデータ管理部134から通知されたフリーブロックが属するプレーンに対応するフリーブロックリスト141mを特定し、特定されたフリーブロックリスト141mに対して、データ管理部134から通知されたフリーブロックを繋ぐ。
<第1の実施形態>
次に、本発明の第1の実施形態について説明する。以降では、本第1の実施形態の特徴であるフリーブロック選択処理(図5のステップS17)について詳細に述べる。
フリーブロック管理部140が並列書き込みが可能なフリーブロックの組を選択する際には、フリーブロック管理部140が管理するフリーブロックリスト1410、1411、…、141m、…、141nの中から所定の順序規則に従いフリーブロックリスト141mを選択し、選択したフリーブロックリスト141mからフリーブロックを取得する。
順序規則は、順序規則に基づき演算された順序列に示される順にフリーブロックリスト1410、1411、…、141m、…、141nからフリーブロックリスト141mを選択すれば、並列書込み可能な組のフリーブロックが取得できる規則であることが望ましい。
一例として、図6に示されるように、不揮発性メモリ部122の有するチップ数が4であって、各チップ#0〜チップ#3内のプレーン数が2の場合について考える。この場合、全体としてプレーンP0〜プレーンP7の8のプレーンが存在し、それら8のプレーン間では、全て並列書込みが可能である。この場合、各プレーンからフリーブロックを1個ずつ選択すれば、最大で8並列での書き込みが可能である。
なお、図6において、それぞれの升はブロックを示し、升中の数字は、ブロックに動的に対応付けられたアドレスを表す。また、図中の矢印は、データのブロックに対する書き込み方向またはフリーブロックの取得方向を示す。これらは、特に記載のない限り、以降の同様の図について共通である。
例えば、プレーンP0〜P7にそれぞれ対応するフリーブロックリスト141m、141m+1、…、141m+7に対して「0」から「7」までの識別子を対応付けて所定の順序に並べ、式(1)のような、識別子の列で表現される長さ8の順序規則を作る。順序規則は、例えば予め作成し、順序規則テーブル153に保持しておく。
{0,1,2,3,4,5,6,7} …(1)
この式(1)に示される順序規則を巡回的に繰り返せば、どの位置からフリーブロックリストの選択を開始したとしても、最大で8並列の書き込みが可能なフリーブロックを選択できる。例えば、順序規則上の識別子「4」で示される位置からフリーブロックリストの選択が始まった場合、式(2)に示されるように、識別子「4」の位置から選択を開始し、識別子「7」の位置から識別子「0」の位置に巡回的に戻り、さらに識別子「3」の位置まで順次、フリーブロックリストを選択すればよい。
{4,5,6,7,0,1,2,3} …(2)
次に、並列書き込みが可能なプレーンの組に制約がある場合について考える。このような場合、並列書き込みのできないプレーン同士の順序規則における順序列上の距離ができる限り離れるように、順序規則を作成すればよい。
一例として、図7に示されるように、不揮発性メモリ部122の有するチップ数が4であり、各チップ123、123、…内のプレーン数が2であって、各チップ123、123、…は、2個ずつ組で2個のバンク3001(バンクB0)およびバンク3002(バンクB1)を構成している場合について考える。以下では、このような構成を、バンク・チップ・プレーン構成と呼ぶ。バンク・チップ・プレーン構成では、同じバンクに属するチップは並列書込みできない制約がある。したがって、この場合の最大並列度、すなわち並列書き込みが可能な最大のブロック数は、4となる。
なお、図7において、各チップ123、123、…は、バンク内でチップC0、C1として区別されており、各チップ123、123、…内のプレーンは、プレーンP0、P1として区別される。
図7において、各プレーンを、「B(バンク番号)C(バンク内チップ番号)P(チップ内プレーン番号)」と表記する。例えば、バンクB0に属するチップC0内のプレーンP0は、「B0C0P0」と表記される。このとき、例えば下記の式(3)に示す順序規則を作ることが考えられる。式(3)に示される順序規則では、それぞれのバンクで1のチップを選択することで、最大で4並列の書き込みを実現している。
{B0C0P0,B0C0P1,B1C0P0,B1C0P1,B0C1P0,B0C1P1,B1C1P0,B1C1P1} …(3)
この式(3)の順序規則では、プレーンP0からフリーブロックの取得が始まる場合には、最大で4並列書き込み可能にフリーブロックを取得することができる。例えば、プレーンB1C0P0からフリーブロックの取得を開始する場合、プレーンB1C0P0、プレーンB1C0P1、プレーンB0C0P0、プレーンB0C0P1の順にフリーブロックを取得できる。
一方、プレーンP1から始まる場合には、並列書き込み可能なフリーブロックを、3並列までしか取得できない。例えば、プレーンB0C0P1からフリーブロックの取得を開始する場合、プレーンB0C0P1、プレーンB1C0P0、プレーンB1C0P1の順に取得したフリーブロックは並列書き込みが可能である。しかしながら、次のプレーンB0C1P0は、最初に選択を行ったプレーンB0C0P1と同一のバンクの異なるチップのプレーンであるため、当該プレーンB0C1P0に属するフリーブロックは、プレーンB0C0P1から取得したフリーブロックと並列書き込みができない。
この並列書込み可能なプレーンの組に制約がある場合のように、常に最大並列度でのフリーブロック取得が可能な順序規則とはならない場合がある。
次に、本第1の実施形態によるフリーブロック取得処理について、より詳細に説明する。図8は、ブロック管理部131による並列書込みが可能なフリーブロックの一例の選択処理を示すフローチャートである。この図8のフローチャートによる処理は、上述した図5のフローチャートにおけるステップS17の処理に対応するものである。なお、以下の説明において、図5のステップS16でデータ書込部133から要求された必要数rのフリーブロックが要求されたものとする。また、順序規則は、予め所定の順序規則に決められているものとする。
先ず、ブロック管理部131は、位置情報記憶部154から位置情報Posを取得して(ステップS30)、取得した位置情報Posで示される位置のフリーブロックリスト141mからフリーブロック選択を開始した場合の最大並列度qを計算する(ステップS31)。
最大並列度qは、上述した並列書き込みが可能なプレーンの組に対する制約と、フリーブロック選択処理を開始する位置とに依存する。換言すれば、最大並列度qは、不揮発性メモリ部122におけるチップ123、123、…の構成や、上述したバンクなどによる各チップ123、123、…の運用に依存する。
この制約や運用に関する情報は、ブロック管理部131が有する図示されないROM(Read Only Memory)や、不揮発性メモリ部122に予め記憶しておくことができる。これに限らず、当該制約や運用をホスト機器200側から動的に設定できる場合は、ホスト機器200からインタフェース部120を介して供給されてもよい。ブロック管理部131は、位置情報Posと、当該制約や運用を示す情報とに基づき、最大並列度qを計算する。
次のステップS32で、ブロック取得数rbおよびリスト選択回数iがそれぞれ0に初期化され、処理がステップS33に移行される。
ステップS33では、ブロック管理部131は、順序規則演算部151に位置情報Posを渡す。順序規則演算部151は、フリーブロック管理部140に管理されているフリーブロックリスト1411、1412、…、141m、…、141nから、位置情報Posと、順序規則テーブル153に保持された所定の順序規則とに従い、リスト選択回数iに対応する1のフリーブロックリスト141mを選択する。以下、特に記載のない限り、このリスト選択回数iに対応するフリーブロックリスト141mを、フリーブロックリストL(i)と記述する。選択されたこのフリーブロックリストL(i)は、ブロック管理部131に返される。
ブロック管理部131は、順序規則演算部151から返されたフリーブロックリストL(i)にフリーブロックが残っているか否かを調べる。調べた結果、若し、当該フリーブロックリストL(i)にフリーブロックが残っていないと判断されたら、処理はステップS37に移行される。この場合には、当該フリーブロックリストL(i)からフリーブロックを取得できないことになる。
一方、ステップS34で、当該フリーブロックリストL(i)にフリーブロックが残っていると判断されたら、処理はステップS35に移行される。ステップS35では、フリーブロック選択部150がフリーブロックリストL(i)からフリーブロックB(i)を選択する。ブロック管理部131は、選択された当該フリーブロックB(i)を取得する。そして、次のステップS36で、ブロック管理部131は、ブロック取得数rbを1だけ増加させる。次のステップS37で、フリーブロック選択部150は、リスト選択回数iを1だけ増加させてリスト選択回数を計数する。
次のステップS38で、位置情報更新部152は、位置情報記憶部154に保持されている位置情報Posを、順序規則による順序列上の次の位置を示す位置情報Posに更新する。このとき、当該次の位置が順序規則による順序列の最終位置を超えた場合には、次の位置を順序規則による順序列の先頭に設定する。
処理はステップS39に移行され、ブロック管理部131は、ブロック取得数rbが要求されたフリーブロック必要数rに達したか否かを判定する。若し、達したと判定されたら、図8のフローチャートによる一連の処理が終了され、処理が図5のステップS18に移行される。
一方、ステップS39で、ブロック取得数rbがフリーブロック必要数rに達していないと判定されたら、処理はステップS40に移行される。ステップS40で、ブロック管理部131は、リスト選択回数iが最大並列度qに達したか否かを判定する。若し、達していないと判定したら、処理はステップS33に戻され、次のフリーブロックリストL(i)に関する処理が行われる。
一方、リスト選択回数iが最大並列度qに達したと判定した場合には、図8のフローチャートによる一連の処理が終了され、処理が図5のステップS18に移行される。すなわち、この場合には、取得したフリーブロック数は要求された必要数に達していない一方で、フリーブロック管理部140に管理されるフリーブロックリスト1411、1412、…、141m、…、141nから、これ以上、並列書き込みが可能な組のフリーブロックが取得できない。そのため、フリーブロックの選択処理を終了させる。
このように、本第1の実施形態によれば、示される順にフリーブロックリストを選択すれば並列書き込みが可能なフリーブロックの組が取得できるように、順序規則を作成している。そのため、ホスト機器から特定のアドレスに対しての書き込みが繰り返された場合でも、順序規則に従いフリーブロックを取得していくことで、プレーン間でのブロック取得回数の偏りが抑制され、特定のブロックに消去回数が集中することを避けることができる。
また、複数の異なるアドレスへの書き込みデータがバッファメモリに蓄積された場合に、特定のプレーンへの書き込み集中を避け、できる限り多くの複数のプレーンに対して並列書込みを行うことができるため、転送性能を良好に維持することが可能である。
なお、上述では、フリーブロックやアクティブブロックなど管理単位がチップ固有の物理的なブロックであるものとして説明したが、これはこの例に限定されない。例えば、図9に例示されるように、複数の物理的なブロックを常に纏めて使用する場合、当該複数のブロックを纏めた論理的なブロックを管理単位としてよい。
図9において、バンク、チップおよびプレーンの構成は、上述した図7の構成と同様である。一方、図9では、バンクB0およびバンクB1の各バンク内において、チップC0およびチップC1の番号が対応するプレーン同士が纏められて管理されている。バンクB0の例では、チップC0のプレーンP0と、チップC1のプレーンP0とが纏められて、プレーンP0’として管理される。同様に、チップC0のプレーンP1と、チップC1のプレーンP1とが纏められて、プレーンP1’として管理される。
この場合、バンクB0のプレーンP0’およびプレーンP1’と、バンクB1のプレーンP0’およびプレーンP1’とで、4並列の書き込みが可能である。これらバンクB0のプレーンP0’およびプレーンP1’と、バンクB1のプレーンP0’およびプレーンP1’とに対して、順序規則を適用することができる。
<第2の実施形態>
次に、本発明の第2の実施形態について説明する。本第2の実施形態では、できる限り多くの並列書き込みが可能な組のフリーブロックが取得できる順序で、全てのフリーブロックリストを一度ずつ並べた順序規則を、順序規則の小周期と定義する。そして、この小周期を所定の順序で並べることで、より長周期の新たな順序規則を作成する。
上述した第1の実施形態で示したフリーブロック選択方法では、書き込みデータのアドレスのパターンによっては、フリーブロック数およびアクティブブロック数に、フリーブロックリスト間で偏りが生じる可能性がある。これは、あるアドレスAを上書きした際に、書き込み前にアドレスAに対応付けられていたアクティブブロックB1と、書き込むために取得したフリーブロックB2とが、同じプレーンに属しているとは限らないからである。
より具体的には、これらアクティブブロックB1とフリーブロックB2とが異なるプレーンに属していた場合、フリーブロックリストにおけるフリーブロック数は、アクティブブロックB1が属していたプレーンに対応するフリーブロックリストでは1個増加し、フリーブロックB2が属していたプレーンに対応するフリーブロックリストでは1個減少する。
一般的な利用方法では書き込むアドレスが確率的に分散するため、フリーブロックリスト間でのフリーブロック数の偏りはそれほど大きくならないと考えられる。しかし、上述の第1の実施形態で示した順序規則では、書込み要求のアドレスに特定のパターンが存在する場合に、特定のフリーブロックリストにフリーブロックが集中し、他のフリーブロックリストでフリーブロックが枯渇する場合が起こり得る。この場合、ブロック管理部131でフリーブロックの選択を行う際の並列度が下がり、転送性能が劣化する。
例えば、SSD100がホスト機器200に提供する容量全てに対して先頭アドレスから書込みを行った場合(全面シーケンシャルライトと呼ぶ)、ある特定周期のアドレスに対応するアクティブブロックが特定プレーンに集中する。図10(a)を用いて説明すると、プレーン数が8の場合、アドレスが「ブロックサイズ×8」に対応するアクティブブロックがプレーン0に集中する。図10(a)の例では、例えばアドレスA0、A8、A16、…に対応するアクティブブロックがプレーンP0に集中する。これは、他のプレーンについても同様である。
ここで、アドレスが「ブロックサイズ×8」となる書込みを繰り返した場合について考える。この場合、書き込みに使用されるフリーブロック(図中に斜線を付して示す)は、プレーンP0〜P7の全プレーンから選択される。一方、書き込み後に解放されるアクティブブロックは、プレーンP0に集中する。したがって、図10(b)に例示されるように、アクティブブロックが解放された後のフリーブロックも、プレーンP0に集中することになる。
このように、特定プレーンに属するアクティブブロックに対応付けられたアドレスに周期性が存在すると、その周期でアドレスを上書きする書き込みパターンに対して、書き込み時の並列度の確保や、ブロック間での消去回数の平準化を実現することが困難になるおそれがある。
本第2の実施形態は、上述した第1の実施形態による順序規則に対し、できるだけ周期性を弱めるように、あるいは、周期が大きくなるように変更を施す。図11は、本第2の実施形態による順序規則の作成方法の例を概略的に示すフローチャートである。
先ず、上述した第1の実施形態と同様にして順序規則を作成し、これを小周期とする(ステップS50)。次に、ステップS50で作成された小周期内で順序規則による順序を一部入れ替えて、他の小周期を作成する(ステップS51)。最後に、ステップS50で作成された小周期と、ステップS51で作成された他の小周期とを所定の順序で複数並べて新たな順序規則とする(ステップS52)。この新たな順序規則は、元の順序規則に対してより周期の長い、長周期順序規則である。つまり、長周期順序規則は、複数の異なる小周期の順序規則に基づいて生成される。
ここで、ステップS52では、小周期および他の小周期をそれぞれ複数回使用してもよいし、同じ小周期を複数回連続的に使用してもよい。また、ステップS51において、小周期内でフリーブロックリストを入れ替えて作成できる他の小周期は多数存在するが、ステップS52で新しい順序規則を作成する際に、考え得る全ての小周期を使用する必要はない。
次に、本第2の実施形態を、より具体的な例を用いて説明する。先ず、第1の例として、並列書き込みが可能なプレーン数が2の場合について説明する。なお、以下では適宜、プレーンをプレーンPx(xは0以上の整数)または単にPx、アドレスをアドレスAxまたは単にAxのように記述する。
図12(a)を参照し、並列書き込みが可能なプレーン数が2の場合、順序規則の小周期は、次に小周期Aおよび小周期Bとして示される2種類がある。各小周期の順序規則は、例えば予め作成して順序規則テーブル153に保持しておくことができる。
小周期A:{P0,P1}
小周期B:{P1,P0}
これら小周期Aおよび小周期Bを並べて、新しい順序規則を作る。図12(b)は、小周期Aおよび小周期Bをそれぞれ4回ずつ使用し、8個の小周期により長さ16の順序規則を作成した例を示す。図12(c)を参照し、この場合の順序規則は、式(4)のようになる。位置情報更新部152は、この小周期Aおよび小周期Bを並べた新しい順序規則に従い位置情報を更新する。
{P0,P1, P1,P0, P1,P0, P0,P1, P1,P0, P0,P1, P0,P1, P1,P0} …(4)
この式(4)による順序規則に従い、上述した全面シーケンシャルライトを行った場合、各ブロックに対してアドレスが図13(a)に例示されるように割り当てられる。すなわち、各プレーンP0およびP1の先頭のブロックには、順序規則に従いプレーンP0、プレーンP1の順序でアドレスA0、A1が割り当てられる。次のブロックには、プレーンP1、プレーンP0の順序でアドレスA2、A3が割り当てられる。以降、順序規則に従い、順次アドレスA4、A5、…が割り当てられる。
この後に、アドレスが「ブロックサイズ×k」となる周期的な書込みを行った場合の例を、図13(b)、図13(c)および図13(d)に示す。図13(b)はk=2の場合の例、図13(c)はk=4の場合の例、図13(d)はk=8の場合の例である。
k=2の場合、全面シーケンシャルライト時に割り当てられたアドレスのうちアドレスA0、A2、A4、…に対応するブロックが解放される。k=4の場合、全面シーケンシャルライト時に割り当てられたアドレスのうちアドレスA0、A4、A8、…に対応するブロックが解放される。また、k=8の場合、全面シーケンシャルライト時に割り当てられたアドレスのうちアドレスA0、A8、A16、…に対応するブロックが解放される。
k=2、k=4およびk=8のそれぞれについて、解放されるブロックが属するプレーンで示すと、下記の式(5)〜式(7)のようになる。
k=2:{P0,P1,P1,P0,P1,P0,P0,P1,…} …(5)
k=4:{P0,P1,P1,P0,…} …(6)
k=8:{P0,P1,…} …(7)
これら式(5)〜式(7)に示されるように、並列書き込みが可能なプレーン数の倍数の周期で書き込みを行っても、書き込み前のアクティブブロックが特定のプレーンに偏ることが抑制される。但し、アドレスの周期が順序規則の長さの倍数となった場合(この例の場合、k=16)には、書き込み前のアクティブブロックが特定のプレーンに偏る現象が発生する。
次に、順序規則演算部151における順序規則の演算方法について説明する。順序規則演算部151の形態としては、予め作成された順序規則を保持したテーブルを用いるテーブル方式と、演算により順序規則を算出する演算方式との2種類が考えられる。
テーブル方式は、順序規則を持つ小周期を並べて作成した新たな順序規則を順序規則テーブルに予め保持しておく。順序規則演算部151は、フリーブロックリスト選択の際に、この順序規則テーブル153上で、位置情報Posが示す順序規則における順序列上の位置を参照し、フリーブロックリストの識別子を検索する。
演算方式は、順序規則演算部151が、位置情報Posから演算によりフリーブロック識別子を生成して順序規則を作成する方法である。例えば前記のプレーン数が2、長さが16の順序規則の例では、下記の式(8)に例示する演算でプレーンを決定できる。
なお、式(8)は、プログラム言語として一般的に用いられるC言語の記法に準じて演算手順を記述している。なお、C言語では2進数表記はできないが、式(8)においては、仮に"0b"を接頭辞として付加することにより、その後に連なる"0"および"1"が2進数を表すものとしている。例えば、"0b10010110"は、16進表記の"0x96"と同等となる。式(8)において、コロン(:)で区切られて各行の先頭に記述される数字は、行番号を表す。行番号「1」〜「5」で示される5行を、纏めて式(8)とする。ダブルスラッシュ(//)の後は、各行の説明である。
1:pattern = 0b10010110; // 小周期の順序を表す2進数
2:y = pos / 2; // 何番目の小周期か
3:x = pos % 2 // 小周期の中で何番目か
4:period_id = ( pattern >> y ) & 0b1; // どの小周期を使用するか
5:plane_id = period_id ^ x; // 小周期識別子と小周期内での順序との排他的論理和 …(8)
式(8)において、値posは、位置情報を表す値であり、0から15までの値をとる。値period_idは、小周期を表す値であり、値が0で小周期A、値が1で小周期Bを表すものとする。また、値plane_idは、その順序で選択すべきプレーンの番号を表す。また、式(8)の例では、小周期Aおよび小周期Bにおける順序規則は、5行目の式で表される。
次に、並列書き込みが可能なプレーンの数が多い場合について説明する。並列書き込みが可能なプレーン数が多い場合、順序を入れ替えた小周期の数も多数となる。このとき、小周期を組み合わせて順序規則を作る際に、考え得る全ての小周期を使用する必要は無い。また、フリーブロックリストの選択開始位置が小周期の途中である場合、フリーブロックリストの選択を異なる小周期を跨いで行う可能性がある。このような場合でもできるだけ並列度を大きく維持できるように小周期を選択し、並べることが望ましい。
一例として、プレーン数が8で、プレーン間に並列書き込みに対する制約が無い場合について考える。この場合、考え得る小周期の数は、8!個存在することになる。
これらのうち、例えば、下記の式(9)および式(10)で示される小周期(プレーンに対応するフリーブロックリストの識別子で示す)を式(9)、式(10)の順に並べると、式(9)で示される小周期から式(10)で示される小周期へと跨いでフリーブロックリストの選択を行う際に、プレーンP7のフリーブロックリストを連続して選択することになる。そのため、この2つの小周期を跨ぐような並列書き込みが可能なブロックの組を選択することができない。
{0,1,2,3,4,5,6,7} …(9)
{7,0,1,2,3,4,5,6} …(10)
そこで、連続して選択される位置におけるフリーブロックリストの識別子が同一にならないように、小周期を選択して並べる。これにより、フリーブロックリストの選択の際に小周期を跨ぐような場合でも、並列書き込みが可能なフリーブロックの組を選択できるようになる。
例えば、下記の式(11)および式(12)で示される小周期について考える。式(12)で示される順序規則は、式(11)で示される順序規則に対して、順序を7だけ進めたものと考えることができる。これら式(11)および式(12)で示される小周期を、式(11)、式(12)の順に並べると、連続して選択が行われる式(11)の末尾の識別子と、式(12)の先頭の識別子とが異なるので、式(11)による小周期から式(12)による小周期へと跨ぐ場合であっても、並列書き込みが可能なフリーブロックの組を選択することができる。それと共に、小周期を跨ぐ場合でも、並列度が7で並列書き込みが可能なフリーブロックの組を選択することが可能である。
{0,1,2,3,4,5,6,7} …(11)
{1,2,3,4,5,6,7,0} …(12)
図14は、プレーン数が8(プレーンP0〜プレーンP7)で、プレーン間に並列書き込みに対する制約が無い場合の順序規則の例を示す。プレーンP0〜P7のそれぞれには、異なるフリーブロックリストの識別子P0〜P7が対応付けられている。図14の例では、識別子P0を先頭とし、識別子P7を末尾とする順序規則{P0,P1,P2,P3,P4,P5,P6,P7}による小周期Aと、当該小周期Aに対して順序規則上の順序を7ずつ進めた小周期B、C、…、Hとを並べて、新たな順序規則を作成する。順序規則の異なる小周期を並べることで、特定のプレーンへのフリーブロックの集中を抑制できる。
図14の例では、新たな順序規則は、各小周期A〜Hがそれぞれ4回ずつ繰り返して並べられ、全体として小周期数が32、長さが256とされている。このように、同じ小周期を複数回、繰り返して並べてもよい。同じ小周期が繰り返される範囲内では、8並列で書き込みが可能とされる。
さらに、異なる小周期を跨いでフリーブロックリストの選択が行われる際の並列度が最大になるように、各小周期A〜Hを並べるとより好ましい。図14の例では、異なる小周期が隣接する場合において、フリーブロックリストの選択順に、小周期の順序規則における順序が7ずつ進むように各小周期の順序規則が作成されている。この場合、フリーブロックリストの選択の際に小周期を跨ぐ場合でも、並列度が7で並列書込み可能な組を選択すること可能である。
次に、上述の第1の実施形態において図7を用いて説明した、バンク・チップ・プレーン構成で並列書き込みに制約がある場合に、本第2の実施形態を適用した例について説明する。この場合、上述したように、フリーブロックの取得を開始するプレーンによって、最大並列度が変化する。
図15は、バンク・チップ・プレーン構成における順序規則の例を示す。図15の例では、バンク数が4(B0〜B3)、バンク内のチップ数が2(C0、C1)、チップ内のプレーン数が2(P0、P1)となっており、総プレーン数が16である。ここで、同一バンク内の異なるチップに対して並列書き込みができないという制約があるため、最大の並列書き込み数は、8となる。
なお、図15において、各プレーンに対応するフリーブロックリストの識別子を、バンク番号、チップ番号およびプレーン番号を組み合わせて、「B0C0P0」のように表現する。
図15の例では、小周期内においてプレーン番号、バンク番号、チップ番号の順で変更を行って各小周期の順序規則を作成することで、できるだけ並列度を高くしている。例えば、小周期Aは、順序規則が{B0C0P0,B0C0P1,B1C0P0,B1C0P1,B2C0P0,B2C0P1,B3C0P0,B3C0P1,B0C1P0,B0C1P1,B1C1P0,B1C1P1,B2C1P0,B2C1P1,B3C1P0,B3C1P1}となる。
この図15に例示される順序規則では、図7を用いて説明した例と同様に、プレーンP0からフリーブロックの取得が始まる場合には、8並列での書き込みが可能である。一方、プレーンP1からフリーブロックの取得が始まる場合には、同一のバンク内の異なるチップのプレーンP0とプレーンP1とに対して並列書き込みができないという制約のため、7並列の書き込みに制限される。
この小周期Aのバンク番号およびチップ番号を変えずにプレーン番号のみを入れ替えた小周期Bを用意する。さらに、周期的なアドレスへの書込みで特定のバンクにフリーブロックが偏ることを防ぐために、小周期Aおよび小周期Bに対してそれぞれバンクの順序を入れ替えた小周期C〜小周期Hを用意する。このとき、バンク順が異なる小周期を跨ぐ場合に並列度が5または6に制限されるため、バンク番号の順番が同じ小周期を連続させて、新たな順序規則を作成する。具体的には、小周期Aと、当該小周期Aとバンク番号の順序が同じ小周期Bとが連続される。同様に、小周期Cおよび小周期D、小周期Eおよび小周期F、小周期Gおよび小周期Hがそれぞれ連続される。
上述では、テーブル方式または演算方式により、小周期を所定の回数だけ並べた順序規則を予め作成しておくように説明したが、これはこの例に限定されない。例えば、順序規則を、乱数を用いて動的に算出する形態も可能である。
図16は、2進乱数系列を用いて順序規則を算出する例を示す。図16の例では、2進乱数系列を用いて、各小周期で乱数の値が0であれば小周期A、乱数の値が1であれば小周期Bとして順序規則を算出している。順序規則を乱数系列に従い算出する場合、乱数系列が擬似乱数であれば、順序規則の長さは「擬似乱数の周期×プレーン数」となる。したがって、特定プレーンに属するアクティブブロックに対応付けられたアドレスに周期性がある場合でも、当該アドレスのアクティブブロックの特定プレーンに集中する周期が非常に長くなり、問題にはならない。
順序規則を乱数を用いて算出する場合でも、順序規則演算部151の形態としては、上述と同様に、テーブル方式と演算方式とが考えられる。テーブル方式では、例えば、順序規則テーブル153において乱数表を順序規則として保持すればよい。
演算方式の場合には、順序規則演算部151において乱数演算器を用意し、どの小周期を使用するかの演算に乱数を用いるようにすればよい。例えば下記の式(13)に例示する演算で、乱数に基づきプレーンを決定できる。なお、式(13)の方式および各値の意味は、上述した式(8)と共通であるので、ここでの説明を省略する。
1:y = pos / 2; // 何番目の小周期か
2:x = pos % 2 // 小周期の中で何番目か
3:period_id = rand() & 0b1; // 乱数に基づき使用する小周期を決定
4:plane_id = period_id ^ x; // 小周期識別子と小周期内での順序との排他的論理和 …(13)
このように、本第2の実施形態によれば、順序規則を持つ小周期を所定の順序で並べて、より周期の長い新たな順序規則を作成している。そのため、ホスト機器からの書き込みのアドレスに周期性が存在する場合であっても、フリーブロックリスト間でのフリーブロック数およびアクティブブロック数の偏りを抑制することができる。また、本第2の実施形態では、小周期を並べる際に、できる限り並列度が大きくなるように工夫しているため、転送能力も確保できる。
<第3の実施形態>
次に、本発明の第3の実施形態について説明する。上述した第2の実施形態では、フリーブロックリストの選択時に参照される順序規則自体を長周期化することで、フリーブロックリスト選択時の順序規則の周期性を弱めている。ここで、フリーブロックリスト選択時の順序規則の周期性を弱める、あるいは、順序規則の長周期化を行うことが目的であれば、位置情報の更新方法に変更を加えることでも当該目的を達成できる。
本第3の実施形態は、所定の条件に合致する場合に、順序規則内のある順序をスキップすることで上述の目的を達成する。順序規則をスキップする条件としては、様々な条件が適用可能である。以下では、位置情報の更新数が所定数に達した時点で順序規則をスキップする第1の方法と、各プレーン毎に、フリーブロック取得数が所定数に達したらスキップする第2の方法とについて説明する。順序規則をスキップする条件は、例えばフリーブロック選択部150に対して予め定められているものとする。
先ず、第1の方法である、位置情報の更新数が所定数に達した時点で順序規則をスキップする方法について、図17のフローチャートを用いて説明する。この図17のフローチャートは、上述した図5のフローチャートにおけるステップS17の処理に対応するものであって、第1の実施形態で説明した図8のフローチャートに対し、スキップ処理が追加されている点が異なる。
なお、図17のフローチャートにおいて、ある時点の位置情報の更新数を位置情報更新数tPosとし、その初期値を0とする。順序規則のスキップを行うか否かを判定する位置情報更新数tPosの閾値を、予め決められた値であるスキップ閾値sPosとする。また、図5のステップS16でデータ書込部133から必要数rのフリーブロックが要求され、順序規則は、予め所定の順序規則に決められているものとする。
先ず、ブロック管理部131は、位置情報記憶部154から位置情報Posを取得して(ステップS60)、取得した位置情報Posで示される位置のフリーブロックリスト141mからフリーブロックの選択を開始した場合の最大並列度qを計算する(ステップS61)。最大並列度qの計算方法は、図8のステップS31で説明した方法と共通であるので、ここでの詳細な説明は省略する。
次のステップS62で、ブロック管理部131は、ブロック取得数rbおよびリスト選択回数iをそれぞれ0に初期化し、処理をステップS63に移行させる。ステップS63では、順序規則演算部151は、ブロック管理部131から渡された位置情報Posと所定の順序規則とに従い、フリーブロック管理部140に管理されているフリーブロックリスト1411、1412、…、141m、…、141nから1のフリーブロックリストL(i)を選択して、ブロック管理部131に返す。
ブロック管理部131は、順序規則演算部151から返されたフリーブロックリストL(i)にフリーブロックが残っているか否かを調べる。若し、調べた結果、当該フリーブロックリストL(i)にフリーブロックが残っていないと判断されたら、処理はステップS67に移行される。
一方、ステップS64で、当該フリーブロックリストL(i)にフリーブロックが残っていると判断されたら、処理はステップS65に移行される。ステップS65は、フリーブロック選択部150は、フリーブロックリストL(i)からフリーブロックB(i)を選択する。ブロック管理部131は、選択された当該フリーブロックB(i)を取得する。次のステップS66で、ブロック管理部131は、ブロック取得数rbを1だけ増加させる。さらに、次のステップS67で、フリーブロック選択部150がリスト選択回数iを1だけ増加させてリスト選択回数iを計数する。
次のステップS68で、位置情報記憶部154は、位置情報記憶部154に保持されている位置情報Posを、順序規則による順序列上の次の位置を示す位置情報Posに更新する。このとき、当該次の位置が順序規則による順序列の最終位置を超えた場合には、次の位置を順序規則による順序列の先頭に設定する。
位置情報Posが更新されると、処理はステップS69に移行され、フリーブロック選択部150が位置情報更新数tPosを1だけ増加させる。そして、次のステップS70で、フリーブロック選択部150は、位置情報更新数tPosがスキップ閾値sPos以上であるか否かを判定する。
若し、位置情報更新数tPosがスキップ閾値sPos以上であると判定したら、処理はステップS71に移行され、位置情報更新部152により位置情報更新数tPosが0に初期化され、処理がステップS67に戻される。このステップS70における判定で処理がステップS67に戻されることで、位置情報更新数tPosに基づく順序規則のスキップが実行される。
一方、ステップS70で、位置情報更新数tPosがスキップ閾値sPos未満であると判定されたら、処理はステップS72に移行される。ステップS72で、ブロック管理部131は、ブロック取得数rbが要求されたフリーブロック必要数rに達したか否かを判定する。若し、達したと判定されたら、図17のフローチャートによる一連の処理が終了され、処理が図5のステップS18に移行される。
一方、ブロック取得数rbがフリーブロック必要数rに達していないと判定されたら、処理はステップS73に移行される。ステップS73で、ブロック管理部131は、リスト選択回数iが最大並列度qに達したか否かを判定する。若し、達していないと判定されたら、処理はステップS63に戻され、次のフリーブロックリストL(i)に関する処理が行われる。
一方、リスト選択回数iが最大並列度qに達したと判定された場合には、図17のフローチャートによる一連の処理が終了され、処理が図5のステップS18に移行される。
図18は、上述の図17のフローチャートによる処理に従い、順序規則上でのスキップを行った例を示す。図18において、プレーン数が8であって、8並列に書き込みが可能とされている。元となる順序規則は、小周期{0,1,2,3,4,5,6,7}のみを繰り返す順序列となっている。図18は、スキップ閾値sPosを32ブロックとし、位置情報更新数tPosが32となった場合に、位置情報Posを次の位置に更新して順序規則をスキップする例である。
図18の例では、元の順序規則の順序列における32番目のプレーンP7からフリーブロックが取得されたら、次の33番目のプレーンP0からのフリーブロックの取得がスキップされる。それと共に、位置情報更新数tPosが0に初期化されて位置情報更新数tPosの累積が再開され、再び位置情報更新数tPosが32になったら、位置情報Posを次の位置に更新して順序規則をスキップする。この場合、元の順序規則の順序列における66番目のプレーンP1からのフリーブロックの取得がスキップされる。
より具体的には、先ず、元の順序規則の順序列における32番目で、プレーンP7からフリーブロックを取得した際に、位置情報更新数tPosが32となり、図17のフローチャートにおいて処理がステップS70からステップS71を介してステップS67に戻される。そして、ステップS68で位置情報Posが更新され、ステップS69〜ステップS73の処理を経て、処理がステップS63に戻される。このように、ステップS70の判定によりフリーブロックの取得を行わずに位置情報Posが更新され、順序規則がスキップされる。
なお、スキップ発生の回数をフリーブロックリスト間で平準化するために、スキップ閾値sPosを順序規則の長さの倍数にすると、好ましい。すなわち、スキップ閾値sPosを順序規則の長さの倍数にした場合、順序規則の長さ分のフリーブロックの取得が行われたら、次の1プレーンをスキップして、その次のプレーンから、再び順序規則の長さ分のフリーブロックの取得を行う。これにより、スキップ位置で順序規則が1プレーン分ずれることになり、ブロック間での消去回数が平準化される。
これに対して、スキップ閾値sPosを順序規則の長さの倍数−1とすると、特定のフリーブロックリストでのみスキップが発生することになり、好ましくない。
次に、本第3の実施形態における第2の方法である、各プレーン毎に、フリーブロック取得数が所定数に達した時点で順序規則をスキップする方法について、図19のフローチャートを用いて説明する。この図19のフローチャートによる処理は、上述した第1の方法による図17のフローチャートによる処理に対して、スキップ処理を行うタイミングが異なる以外は、略共通である。すなわち、この第2の方法においては、プレーン毎にスキップの発生回数を制御するために、順序規則をスキップする条件の判定を、プレーン毎に実行する。
なお、図19のフローチャートにおいて、フリーブロックリストL毎に定義されたスコア増加値w[L]単位で増加する値をブロック取得スコアt[L]とし、ブロック取得スコアt[L]に対する閾値をスキップ閾値s[L]とする。これらスコア増加値w[L]、ブロック取得スコアt[L]およびスキップ閾値s[L]は、ブロック管理部131において、プレーン毎に保持される。
先ず、ブロック管理部131は、位置情報記憶部154から位置情報Posを取得して(ステップS80)、取得した位置情報Posで示される位置のフリーブロックリスト141mからフリーブロック選択を開始した場合の最大並列度qを計算する(ステップS81)。最大並列度qの計算方法は、図8のステップS31で説明した方法と共通であるので、ここでの詳細な説明は省略する。
次のステップS82で、ブロック取得数rbおよびリスト選択回数iがそれぞれ0に初期化され、処理がステップS83に移行される。ステップS83で、順序規則演算部151は、ブロック管理部131から渡された位置情報Posと所定の順序規則とに従い、フリーブロック管理部140に管理されているフリーブロックリスト1411、1412、…、141m、…、141nから1のフリーブロックリストL(i)を選択して、ブロック管理部131に返す。
次のステップS84で、フリーブロック選択部150は、ブロック取得スコアt[L(i)]とスキップ閾値s[L(i)]とを比較し、ブロック取得スコアt[L(i)]がスキップ閾値s[L(i)]以上であるか否かを判定する。若し、ブロック取得スコアt[L(i)]がスキップ閾値s[L(i)]以上であると判定されたら、ステップS93でブロック取得スコアt[L(i)]からスキップ閾値s[L(i)]を減じた値が新たなブロック取得スコアt[L(i)]とされて、処理がステップS89に移行される。この、ブロック取得スコアt[L(i)]がスキップ閾値s[L(i)]以上であると判定された場合に処理をステップS89に移行させる処理により、フリーブロックリストL(i)に対応するプレーンにおいて、順序規則がスキップされる。
一方、ステップS84で、ブロック取得スコアt[L(i)]がスキップ閾値s[L(i)]未満であると判定されたら、処理はステップS85に移行される。ステップS85で、ブロック管理部131は、順序規則演算部151から返されたフリーブロックリストL(i)にフリーブロックが残っているか否かを調べる。若し、調べた結果、当該フリーブロックリストL(i)にフリーブロックが残っていないと判断されたら、処理はステップS89に移行される。
一方、ステップS85で、当該フリーブロックリストL(i)にフリーブロックが残っていると判断されたら、処理はステップS86に移行され、フリーブロック選択部150によりフリーブロックリストL(i)からフリーブロックB(i)が選択され、ブロック管理部131により当該フリーブロックB(i)が取得される。
次のステップS87で、ブロック取得数rbが1だけ増加される。さらに次のステップS88で、フリーブロック選択部150は、ブロック取得スコアt[L(i)]にスコア増加値w[L(i)]を加算した値を新たなブロック取得スコアt[L(i)]とする。そして、処理はステップS89に移行され、フリーブロック選択部150は、リスト選択回数iを1だけ増加させてリスト選択回数iを計数する。
次のステップS90で、位置情報更新部152は、位置情報記憶部154に保持されている位置情報Posを、順序規則による順序列上の次の位置を示す位置情報Posに更新する。このとき、当該次の位置が順序規則による順序列の最終位置を超えた場合には、次の位置を順序規則による順序列の先頭に設定する。
位置情報Posが更新されると、処理はステップS91に移行され、ブロック管理部131は、ブロック取得数rbが要求されたフリーブロック必要数rに達したか否かを判定する。若し、達したと判定されたら、図19のフローチャートによる一連の処理が終了され、処理が図5のステップS18に移行される。
一方、ステップS91で、ブロック取得数rbがフリーブロック必要数rに達していないと判定されたら、処理はステップS92に移行され、ブロック管理部131により、リスト選択回数iが最大並列度qに達したか否かが判定される。若し、達していないと判定されたら、処理はステップS83に戻され、次のフリーブロックリストL(i)に関する処理が行われる。
一方、リスト選択回数iが最大並列度qに達したと判定された場合には、図19のフローチャートによる一連の処理が終了され、処理が図5のステップS18に移行される。
なお、複数のフリーブロックリストLが同じ値のスコア増加値w[L]とスキップ閾値s[L]とを持つ場合、ブロック取得スコアs[L]の初期値も同じ値(例えば0)とすると、当該複数のフリーブロックリストのスキップが同じタイミングで発生するため、好ましくない。そのため、ブロック取得スコアs[L]の初期値は、フリーブロックリストL毎に異なる値を設定しておくとよい。
図20は、上述の図19のフローチャートによる処理に従い、順序規則上でのスキップを行った例を示す。図20(a)は、各プレーンP0〜P7に対して設定されたブロック取得スコアt[L]の初期値と、スコア増加値w[L]と、スキップ閾値s[L]とを示す。図20(b)は、上述した図18と同様に、プレーン数が8であって、8並列に書き込みが可能とされ、元となる順序規則は、小周期{0,1,2,3,4,5,6,7}のみを繰り返す順序列となっている例である。
図20(a)の例において、スコア増加値w[L]を1で固定的とし、スキップ閾値s[L]をプレーン毎に可変としている。したがって、ブロック取得スコアt[L]は、そのプレーンでのフリーブロック取得数を示し、スキップ閾値s[L]は、順序規則のスキップを発生させる、そのプレーンにおけるフリーブロック取得数を示す。
また、図20(a)の例では、プレーンP6でのみスキップ閾値s[L]を8とし、他のプレーンでは、スキップ閾値s[L]を32としている。そのため、図20(b)に例示されるように、プレーンP6は他のプレーンに対してスキップの発生頻度を高くすることができる。図20(b)の例では、プレーンP6において、小周期が16回繰り返されるうちスキップが2回、発生している。一方、他のプレーンでは、スキップの発生回数は、1回以下となっている。
さらに、ブロック取得スコアt[L]の初期値は、プレーン毎に異なる値を設定することができる。図20(a)の例では、各プレーンP0〜P7において、スキップ閾値s[L](=32)をプレーン数(=8)で割った値(=4)ずつ、ブロック取得スコアt[L]の初期値をずらしている。これにより、プレーンP6を除いた7個のプレーンでは、4小周期ずつスキップの発生がずれることになる。例えば、図20(b)の例では、プレーンP0においてブロック取得スコアt[L]の28に対して5小周期目でスキップが発生し、プレーンP1においてブロック取得スコアt[L]の24に対して9小周期目でスキップが発生している。同様に、プレーンP2においてブロック取得スコアt[L]の20に対して13小周期目でスキップが発生している。
図21は、上述の図20の例とは逆に、スキップ閾値s[L]を固定的とし、スコア増加値w[L]をプレーン毎に可変とした場合の例である。図21(a)に例示されるように、スキップ閾値s[L]が100に固定的とされ、スコア増加値w[L]については、プレーンP6のみが25とされ、他のプレーンでは3とされている。また、ブロック取得スコアt[L]は、スキップ閾値s[L](=100)をプレーン数(=8)で割った値(=12.5)を基準に、初期値をずらしている。この場合には、スコア増加値w[L]が大きいほど、スキップの発生頻度が高くなることが分かる。
このように、本第3の実施形態によれば、複雑で長い順序規則を持たなくても、フリーブロックリストの選択における周期性を弱めたり、長周期化することが可能である。
また、例えば特定のプレーンのみ総ブロック数やフリーブロック数が小さい場合に、スキップ閾値s[L]を小さく設定したり、スコア増加値w[L]を大きく設定することで、フリーブロック取得の頻度を抑えることが可能である。これにより、ブロック毎の消去回数の平準化や、プレーン毎の残りフリーブロック数の平準化といった効果が期待できる。
<第3の実施形態の変形例>
次に、本発明の第3の実施形態の変形例について説明する。本第3の実施形態の変形例は、上述した第2の実施形態と第3の実施形態とを組み合わせた例である。図22は、上述した図15の例で用いた、バンク数が4、バンク内のチップ数が2、チップ内のプレーン数が2となっており、総プレーン数が16であるバンク・チップ・プレーン構成を本第3の実施形態の変形例に適用した例である。
上述した第2の実施形態における図15の例では、バンク順を入れ替えた小周期も順序規則に含めたため、順序規則が非常に長く複雑になっていた。これに対し、図22に例示される、本第3の実施形態の変形例による順序規則は、バンク順入れ替えの効果をスキップにより実現しているため、順序規則自体は2個の小周期Aおよび小周期Bを組み合わせた簡単なものとなっている。
より具体的には、上述の第2の実施形態において図15を用いて説明した通り、順序規則演算部151は、小周期内においてプレーン番号、バンク番号、チップ番号の順で変更を行って各小周期の順序規則を作成する。小周期Aの順序規則は、例えば{B0C0P0,B0C0P1,B1C0P0,B1C0P1,B2C0P0,B2C0P1,B3C0P0,B3C0P1,B0C1P0,B0C1P1,B1C1P0,B1C1P1,B2C1P0,B2C1P1,B3C1P0,B3C1P1}となる。また、小周期Bは、小周期Aのバンク番号およびチップ番号を変えずにプレーン番号のみを入れ替えて作成する。
これら小周期Aおよび小周期Bを、既に説明したように、順序規則演算部151によりテーブル方式、演算方式、乱数を用いた方式などにより取得した順番に並べて、新たな順序規則を作成する。これにより、小周期数が8で、長さが128の順序規則が作成される。
一方、上述の第3の実施形態の第1または第2の方法により、フリーブロックを例えば128ブロック取得する毎に順序規則をスキップするように設定する。こうすることで、順序規則のスキップ毎にバンク順入れ替えの効果を得ることができる。
以上説明したように、本発明によれば、ホスト機器から特定のアドレスに対しての書込みが繰り返された場合に、プレーン間でのフリーブロック取得回数の偏りが抑制され、特定のブロックに消去回数が集中することを避けることができる。
また、できる限り多くのプレーンに対して並列書き込みを行うようにしているため、複数の異なるアドレスへの書込みデータがバッファメモリに蓄積された場合に、特定のプレーンへの書き込みが集中することが抑制され、転送性能を良好に維持することができる。
さらに、小周期を並べて順序規則を長周期化しているので、ホスト機器からの書き込みのアドレスに周期性が存在する場合であっても、フリーブロックリスト間でのフリーブロック数およびアクティブブロック数の偏りを抑制することができる。また、小周期を並べる際に、できる限り並列度が大きくなるように工夫しているため、転送能力も確保できる。
100 SSD
120 インタフェース部
121 バッファメモリ
122 不揮発性メモリ部
123 チップ
130 コントローラ部
131 ブロック管理部
132 データ読出部
133 データ書込部
134 データ管理部
135 NANDドライバ
140 フリーブロック管理部
1411〜141n フリーブロックリスト
150 フリーブロック選択部
151 順序規則演算部
152 位置情報更新部
153 順序規則テーブル
154 位置情報記憶部

Claims (9)

  1. データ消去の単位であるブロックを複数含む記憶領域を複数備え、異なる該記憶領域に含まれる該ブロックに対して並列書き込み可能に構成された不揮発性メモリと、
    有効データが記憶されていない前記ブロックであるフリーブロックを示す情報のリストを前記記憶領域毎に保持する管理部と、
    フリーブロックリストの順序を定めるための情報である順序規則を保持する順序規則保持部と、
    前記順序規則に基づいて定まる各フリーブロックリストの順番を示す位置情報を記憶する位置情報記憶部と、
    前記位置情報で示される位置に対応する前記リストを選択するリスト選択部と、
    前記リスト選択部で選択された前記リストから前記フリーブロックを選択するブロック選択部と、
    前記ブロック選択部で選択された前記フリーブロックに対してデータを書き込む書込部と、
    前記リスト選択部により前記リストが選択された後に、前記位置情報記憶部に記憶される前記位置情報を、次に選択する前記リストの位置を示す位置情報に更新する更新部と
    を有し、
    前記ブロック選択部は、
    前記フリーブロックの選択を行う際に、該ブロック選択部に定められた所定の条件を満たしている場合に、該フリーブロックの選択をスキップし、
    前記更新部は、
    さらに、前記ブロック選択部により前記フリーブロックの選択がスキップされた場合に前記位置情報の更新を行う
    ことを特徴とするメモリシステム。
  2. データ消去の単位であるブロックを複数含む記憶領域を複数備え、異なる該記憶領域に含まれる該ブロックに対して並列書き込み可能に構成された不揮発性メモリと、
    有効データが記憶されていない前記ブロックであるフリーブロックを示す情報のリストを前記記憶領域毎に保持する管理部と、
    フリーブロックリストの順序を定めるための情報である順序規則を保持する順序規則保持部と、
    前記順序規則に基づいて定まる各フリーブロックリストの順番を示す位置情報を記憶する位置情報記憶部と、
    前記位置情報で示される位置に対応する前記リストを選択するリスト選択部と、
    前記リスト選択部で選択された前記リストから前記フリーブロックを選択するブロック選択部と、
    前記ブロック選択部で選択された前記フリーブロックに対してデータを書き込む書込部と、
    前記リスト選択部により前記リストが選択された後に、前記位置情報記憶部に記憶される前記位置情報を、次に選択する前記リストの位置を示す位置情報に更新する更新部と
    を有し、
    前記位置情報記憶部は、
    複数の異なる順序規則を用いて生成される長周期順序規則に基づいて定まる各フリーブロックリストの順番を示す位置情報を記憶する
    ことを特徴とするメモリシステム。
  3. 前記ブロック選択部は、
    前記フリーブロックの選択を行う際に、該ブロック選択部に定められた所定の条件を満たしている場合に、該フリーブロックの選択をスキップし、
    前記更新部は、
    さらに、前記ブロック選択部により前記フリーブロックの選択がスキップされた場合に前記位置情報の更新を行う
    ことを特徴とする請求項に記載のメモリシステム。
  4. 前記ブロック選択部は、
    前記リスト選択部により前記リストが選択された回数を前記リスト毎に計数し、前記リスト選択部で前記リストの選択を行う際に、選択された前記リストについて計数された該回数が閾値以上である場合に、該選択されたリストに従った前記フリーブロックの選択をスキップする
    ことを特徴とする請求項1または請求項3に記載のメモリシステム。
  5. 前記ブロック選択部は、
    前記更新部が前記位置情報を更新した回数を計数し、計数された該回数が閾値以上になった場合に、前記フリーブロックの選択をスキップする
    ことを特徴とする請求項1または請求項3に記載のメモリシステム。
  6. 前記位置情報記憶部は、
    複数の異なる順序規則を用いて生成される長周期順序規則に基づいて定まる各フリーブロックリストの順番を示す位置情報を記憶する
    ことを特徴とする請求項に記載のメモリシステム。
  7. 前記リスト選択部は、
    前記複数の順序規則と前記位置情報とを用いた演算により、前記リストの選択を行う
    ことを特徴とする請求項2または請求項6に記載のメモリシステム。
  8. 前記順序規則保持部は、
    予め作成された前記長周期順序規則を保持し、
    前記リスト選択部は、
    前記順序規則保持部に保持される前記長周期順序規則を参照して、前記リストを選択する
    ことを特徴とする請求項2または請求項6に記載のメモリシステム。
  9. 前記リスト選択部は、
    乱数を用いて動的に前記長周期順序規則を生成し、生成した該長周期順序規則を用いて前記リストを選択する
    ことを特徴とする請求項2または請求項6に記載のメモリシステム。
JP2010043299A 2010-02-26 2010-02-26 メモリシステム Expired - Fee Related JP4987997B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2010043299A JP4987997B2 (ja) 2010-02-26 2010-02-26 メモリシステム
US12/882,703 US8583856B2 (en) 2010-02-26 2010-09-15 Memory system
TW100104807A TWI464586B (zh) 2010-02-26 2011-02-14 記憶體系統
KR1020110013664A KR101277382B1 (ko) 2010-02-26 2011-02-16 메모리 시스템
CN201110045961.0A CN102169461B (zh) 2010-02-26 2011-02-25 存储器系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010043299A JP4987997B2 (ja) 2010-02-26 2010-02-26 メモリシステム

Publications (2)

Publication Number Publication Date
JP2011180773A JP2011180773A (ja) 2011-09-15
JP4987997B2 true JP4987997B2 (ja) 2012-08-01

Family

ID=44490625

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010043299A Expired - Fee Related JP4987997B2 (ja) 2010-02-26 2010-02-26 メモリシステム

Country Status (5)

Country Link
US (1) US8583856B2 (ja)
JP (1) JP4987997B2 (ja)
KR (1) KR101277382B1 (ja)
CN (1) CN102169461B (ja)
TW (1) TWI464586B (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5609683B2 (ja) * 2011-01-31 2014-10-22 ソニー株式会社 メモリ装置およびメモリシステム
JP6139065B2 (ja) * 2012-05-31 2017-05-31 株式会社東芝 映像処理装置及び映像処理方法
JP6041610B2 (ja) * 2012-10-02 2016-12-14 キヤノン株式会社 情報処理装置及びその制御方法、並びに、そのプログラムと記憶媒体
TWI479492B (zh) * 2012-11-20 2015-04-01 Phison Electronics Corp 記憶體儲存裝置、其記憶體控制器與資料寫入方法
CN103034603B (zh) * 2012-12-07 2014-06-18 天津瑞发科半导体技术有限公司 多通道闪存卡控制装置及其控制方法
JP5994647B2 (ja) * 2013-01-11 2016-09-21 三菱電機株式会社 データ記録装置、及びデータ記録方法
JP5804584B1 (ja) * 2014-10-30 2015-11-04 ウィンボンド エレクトロニクス コーポレーション Nand型フラッシュメモリのプログラム方法
CN105117169B (zh) * 2015-08-20 2018-07-06 浪潮(北京)电子信息产业有限公司 一种优化的磁盘空间管理的方法及装置
JP6414852B2 (ja) * 2015-12-14 2018-10-31 東芝メモリ株式会社 メモリシステムおよび制御方法
KR102601211B1 (ko) 2016-06-01 2023-11-10 삼성전자주식회사 빠른 재사용 메모리 블록 검출 방법 및 이를 이용한 메모리 블록 관리 방법
KR101963629B1 (ko) * 2016-07-07 2019-03-29 고려대학교 산학협력단 메모리 관리 시스템 및 그 방법
JP7010667B2 (ja) * 2017-11-06 2022-01-26 キオクシア株式会社 メモリシステムおよび制御方法
US11126368B2 (en) * 2019-04-30 2021-09-21 Western Digital Technologies, Inc. Systems and methods for finding a last good page in NAND open block
US11599298B1 (en) * 2021-09-23 2023-03-07 Western Digital Technologies, Inc. Storage system and method for prediction-based pre-erase of blocks to improve sequential performance

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06511582A (ja) * 1992-07-24 1994-12-22 マイクロソフト コーポレイション メモリを割り当てそして解放するコンピュータ方法及びシステム
US5623654A (en) * 1994-08-31 1997-04-22 Texas Instruments Incorporated Fast fragmentation free memory manager using multiple free block size access table for a free list
JP2000122923A (ja) * 1998-07-13 2000-04-28 Sony Corp 記録装置および記録方法、再生装置および再生方法、記録媒体、並びにプログラム記録媒体
CN100343826C (zh) * 2003-04-29 2007-10-17 华为技术有限公司 一种实现内存管理的方法
WO2007072317A2 (en) * 2005-12-21 2007-06-28 Nxp B.V. Non-volatile memory with block erasable locations
WO2007081638A2 (en) * 2005-12-21 2007-07-19 Sandisk Corporation Non-volatile memories and methods with adaptive file handling in a directly mapped file storage system
JP4171749B2 (ja) * 2006-04-17 2008-10-29 Tdk株式会社 メモリコントローラおよびフラッシュメモリシステム
JP2007334413A (ja) * 2006-06-12 2007-12-27 Sony Corp 記憶装置
WO2008087634A1 (en) * 2007-01-18 2008-07-24 Sandisk Il Ltd. A method and system for facilitating fast wake-up of a flash memory system
KR101103201B1 (ko) * 2008-02-29 2012-01-05 가부시끼가이샤 도시바 메모리 시스템
JP5010505B2 (ja) * 2008-03-01 2012-08-29 株式会社東芝 メモリシステム
JP5032371B2 (ja) * 2008-03-01 2012-09-26 株式会社東芝 メモリシステム
US20090271564A1 (en) * 2008-04-25 2009-10-29 Hitachi, Ltd. Storage system
CN101339808B (zh) * 2008-07-28 2011-02-09 华中科技大学 存储块的擦除方法及装置
CN101354681B (zh) * 2008-09-23 2010-12-01 美商威睿电通公司 存储器系统、非易失性存储器的磨损均衡方法及装置
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
JP4666080B2 (ja) * 2009-02-09 2011-04-06 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Also Published As

Publication number Publication date
CN102169461B (zh) 2014-01-08
CN102169461A (zh) 2011-08-31
US20110213913A1 (en) 2011-09-01
KR101277382B1 (ko) 2013-06-20
JP2011180773A (ja) 2011-09-15
TW201205289A (en) 2012-02-01
TWI464586B (zh) 2014-12-11
US8583856B2 (en) 2013-11-12
KR20110098623A (ko) 2011-09-01

Similar Documents

Publication Publication Date Title
JP4987997B2 (ja) メモリシステム
US9251055B2 (en) Memory system and control method of memory system
JP5603997B2 (ja) ストレージ装置及びデータ制御方法
US8738851B2 (en) Device and memory system for swappable memory
JP5813589B2 (ja) メモリシステムおよびその制御方法
US8825946B2 (en) Memory system and data writing method
JP2019016320A (ja) ストレージ制御装置およびストレージ制御プログラム
CN101187898A (zh) 管理非易失性存储器的设备和方法
JP2013097416A (ja) 記憶装置および計算機
JP2013222435A (ja) 半導体記憶装置及びその制御方法
JP2011070365A (ja) メモリシステム
TWI450271B (zh) 用來管理一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器
JP2010237907A (ja) ストレージ装置および記録方法
JP6050794B2 (ja) フラッシュメモリモジュール、不揮発性半導体メモリモジュール及びストレージ装置
JP2007148965A (ja) フラッシュディスク装置のエラーブロック管理方法及び装置
JP2011227802A (ja) データ記録装置
KR20180044451A (ko) 메모리 시스템 및 이를 이용한 웨어-레벨링 방법
TWI453747B (zh) 用來管理一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器
KR20160057296A (ko) 링크드 리스트 어레이 하드웨어를 포함하는 장치와 이를 포함하는 시스템
JP4334331B2 (ja) フラッシュメモリのアクセス制御方法
JP2013200726A (ja) 半導体記憶装置
JP2008191855A (ja) 半導体記憶装置及びメモリ制御方法
JP5694212B2 (ja) 管理情報生成方法およびメモリシステム
JP2020115275A (ja) 情報処理装置およびプログラム
JP2005250831A (ja) 半導体メモリ装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110916

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120209

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120425

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150511

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees