JP5319723B2 - メモリシステムおよびプログラム - Google Patents

メモリシステムおよびプログラム Download PDF

Info

Publication number
JP5319723B2
JP5319723B2 JP2011065579A JP2011065579A JP5319723B2 JP 5319723 B2 JP5319723 B2 JP 5319723B2 JP 2011065579 A JP2011065579 A JP 2011065579A JP 2011065579 A JP2011065579 A JP 2011065579A JP 5319723 B2 JP5319723 B2 JP 5319723B2
Authority
JP
Japan
Prior art keywords
data
block
unit
channel
blocks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2011065579A
Other languages
English (en)
Other versions
JP2012203508A (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 JP2011065579A priority Critical patent/JP5319723B2/ja
Priority to US13/217,461 priority patent/US8812774B2/en
Publication of JP2012203508A publication Critical patent/JP2012203508A/ja
Application granted granted Critical
Publication of JP5319723B2 publication Critical patent/JP5319723B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk

Description

本発明の実施形態は、メモリシステムおよびプログラムに関する。
従来、不揮発性の半導体記憶チップとして、NAND型のフラッシュメモリ(NANDフラッシュメモリという)が広く使われている。NAND型のフラッシュメモリでは、最小の記録単位はページであり、ページ単位での書き込みが行われる。書き込みを行ったデータをホストからの要求に応じて読み出すためには、ホストから指定された論理アドレスから、当該論理アドレスに対応するデータが、NANDフラッシュメモリ上で実際に記憶されている記憶位置(物理アドレス)を特定する必要がある。半導体記憶チップを使用したメモリシステムでは、大容量を実現するために、それぞれが複数のブロック(単位記憶領域)を有する複数の半導体記憶チップを用いる。そして、各半導体記憶チップが有するブロック同士を組にして誤り訂正を行う技術が知られている。
A Case for Redundant Arrays of Inexpensive Disks (RAID) UC Berkeley Technical Report UCB/CSD-87-391 1987年
複数のブロックで誤り訂正の組を構成する場合、訂正を行うためにはどのブロックを組にしているかを参照するためのテーブル(論物変換テーブル)が必須となるが、コスト低減の観点から、論物変換テーブルのサイズを小さくすることが求められている。本発明が解決しようとする課題は、ブロックを組にした誤り訂正において、組にしたブロックの情報を記録する論物変換テーブルのサイズを低減可能なメモリシステムを提供することである。
実施形態のメモリシステムは、複数のブロックをそれぞれが有する複数の半導体メモリと、第1テーブルと、受信部と、作成部と、第2テーブルと、書き込み部とを備える。第1テーブルは、各ブロックにそれぞれ対応するとともに欠陥情報が記憶される複数の記憶領域を有する。作成部は、第1テーブルの複数の行のうちの何れかを示すインデックス番号と、第1テーブルとに基づいて、半導体メモリごとに、データの書き込みが行われるブロックを1つずつ選択して、誤り訂正符号を構成するためのブロックの組を作成する。第2テーブルは、論理アドレスごとに、インデックス番号と、チャネル番号とを対応付けて記憶する。書き込み部は、受信部で書き込みコマンドを受信した場合、組を構成する複数のブロックのうち、選択したチャネル番号に対応するブロックに対して、データを書き込む。
本実施形態に係るメモリシステムのブロック図。 コンパクションを説明するための概念図。 論物変換テーブルの一例を示す図。 書き込み対象データを例示する図。 論理アドレスの構成を例示する図。 ラウンドロビンによる書き込みを説明するための図。 誤り訂正符号の構成を説明するための図。 書き込み処理の一例を示すフローチャート。 ページサイズ書き込み処理の一例を示すフローチャート。 マージ書き込み処理の一例を示すフローチャート。 読み出し処理の一例を示すフローチャート。 ページサイズ読み出し処理の一例を示すフローチャート。 ページ未満読み出し処理の一例を示すフローチャート。
図1は、本実施形態のメモリシステム100の概略構成の一例を示すブロック図である。図1に示すように、メモリシステム100は、制御部10と、I/F部20と、複数(12個)の半導体メモリ30A〜30Lと、記憶部40と、を備える。
制御部10は、メモリシステム100の各部を制御する手段であり、例えばCPU(Central Processing Unit)などで構成される。I/F部20は、制御部10の制御の下、メモリシステム100の上位装置であるホスト装置50との通信を制御する。I/F部20は、例えばSAS/SATAインタフェースなどで構成される。ホスト装置50は、メモリシステム100に対して、データの書き込みを要求する書き込みコマンド、および、データの読み出しを要求する読み出しコマンドなどの信号を送信する。
半導体メモリ30A〜30Lは、半導体チップからなる記憶素子であり、例えばNAND型のフラッシュメモリで構成される。以下では、半導体メモリ30A〜30Lの各々を区別する必要がない場合は、単に半導体メモリ30と表記する。半導体メモリ30は、ページと呼ばれる単位で読み書きが可能であり、複数ページがまとまってブロックと呼ばれる単位の記憶領域を構成する。ここでは、1ページのサイズが4KBであり、64ページで1ブロックが構成される。1つの半導体メモリ30は、複数のブロックで構成される。
図1に示すように、半導体メモリ30A〜30Lの各々に対してチャネル(CH0〜CH11)が1つずつ割り当てられる。複数のチャネル(CH0〜CH11)のうちの1つのチャネル(ここではCH11とする)は、冗長情報を書き込むためのチャネルとして設定され、残りのチャネル(CH0〜CH10)は、ホスト装置50から書き込みが要求されたデータを書き込むためのチャネルとして設定される。そして、チャネルCH0〜CH11の各ページを1つの組として誤り訂正符号が構成される。なお、後述するように、制御部10は、ホスト装置50から書き込みが要求されたデータがページのサイズより大きい場合にはこれを複数に分割し、分割したページ単位のデータ(分割データ)を各チャネルCH0〜CH10に割り当てて、書き込みを行う。
ここで、半導体メモリ30への書き込み方式について説明する。NAND型のフラッシュメモリでは、追記方式が採用される。この追記方式では、ブロック単位でデータの消去を行い、消去済みのブロックに対してページ単位で書き込みを行う。すなわち、NAND型の半導体メモリにおいては、消去済みのブロックのうち書き込みがまだ行われていないページに対して書き込みが可能であり、既に書き込みが行なわれたページに対する上書きは不可能である。
また、ホスト装置50からの要求により書き込みが行われるデータには、論理アドレス(Logical Block Address:LBA)が割り当てられ、ホスト装置50から送信される書き込みコマンドには、書き込みが要求されるデータと、当該データに割り当てられた論理アドレスとが含まれる。本実施形態では、半導体メモリ30において、書き込みが要求されたデータが書き込まれるブロックは、後述の論物変換テーブルに基づいて、当該データに割り当てられた論理アドレスとは無関係に決定され、ページの昇順で書き込みが行われる。そして、新たなデータの書き込みがホストから要求されると、制御部10は、消去済みのブロックのうち書き込みがまだ行なわれていないページに対して新たなデータの書き込みを行う。このとき、前回書き込みが行われたページを無効にして、新たなデータの書き込みが行われたページを有効にする。またこのとき、制御部10は、上述した誤り訂正符号を構成しながら新たなデータや冗長情報の書き込みを行なう。
上述の追記方式において、書き込みを続けることにより、無効にされたページが増えてくると、半導体メモリ30において書き込みを実現可能な容量(実現容量という)が少なくなってくる。そして、書き込みが可能な新規の消去済みのブロック、即ち、消去後に書き込みがまだ行なわれていないブロック(フリーブロックという)が少なくなり、誤り訂正符号を構成するブロックの組(論理ブロック)の確保が不可能になった時点で書き込み不能となってしまう。これを防ぐために、制御部10は、適当なタイミングでガベージコレクションを行なう。NAND型の半導体メモリにおいて行なうガベージコレクションは、特にコンパクションという。
図2は、コンパクションを説明するための概念図である。制御部10は、無効にされたページを含むブロックのうち、無効にされていないページに書き込まれたデータ(有効データという)を集めて新たにフリーブロックに書き直すことにより、有効データを移動させる。その後、制御部10は、当該ブロックに対して消去を行うことにより、新たなフリーブロックを生成する。制御部10は、このようなコンパクションを行なうことにより、書き込みが不能になったブロックが新たに書き込み可能になって、フリーブロックを確保することが可能になる。また、移動により有効データが書き込まれたブロックにおいても、書き込みがまだ行なわれていないページがあればそのページに新たに書き込みが可能である。
なお、コンパクションを行うためには少なくとも一つのフリーブロックが必要になるが、これは、半導体メモリ30において実装された容量(実装容量という)より、書き込みを実際に実現可能な容量(実現容量)が少ないことを意味している。ここでは、実装容量と実現容量との差を余裕容量と呼んでいる。余裕容量が小さい時は、制御部10は、コンパクションを頻繁に行わなければならず、その性能に与えるインパクトが大きい。
再び図1に戻って説明を続ける。記憶部40は、各種データや各種プログラムを記憶する。本実施形態では、記憶部40は、論物変換テーブルを記憶する。図3は、論物変換テーブル60の一例を示す図である。図3に示すように、論物変換テーブル60は、第1テーブル62と、第2テーブル64とを有する。第1テーブル62は、半導体メモリ30A〜30L(CH0〜CH11)の各々が有する複数のブロックの各々と1対1に対応付けられた記憶領域Mがマトリクス状に配列され、列ごとに、何れか1つの半導体メモリ30が有する複数のブロックの各々に対応する記憶領域Mが順番に並べられる。図3の例では、第1テーブル62の第1列目は半導体メモリ30A(チャネルCH0)に対応し、第2列目は半導体メモリ30B(チャネルCH1)に対応し、第3列目は半導体メモリ30C(チャネルCH2)に対応し、第4列目は半導体メモリ30D(チャネルCH3)に対応し、第5列目は半導体メモリ30E(チャネルCH4)に対応し、第6列目は半導体メモリ30F(チャネルCH5)に対応する。また、第7列目は半導体メモリ30G(チャネルCH6)に対応し、第8列目は半導体メモリ30H(チャネルCH7)に対応し、第9列目は半導体メモリ30I(チャネルCH8)に対応し、第10列目は半導体メモリ30J(チャネルCH9)に対応し、第11列目は半導体メモリ30K(チャネルCH10)に対応し、第12列目は半導体メモリ30L(チャネルCH11)に対応する。
ここでは、一例として半導体メモリ30の合計容量は192GBであり、192GBを12チャネルで実現するので、1ブロックを1MBとすると、総ブロック数は、192000個となる。そうすると、1チャネル当たりのブロック数は、192000÷12=16000個となる。つまり、複数の記憶領域Mは、16000行×12列のマトリクス状に配列される。説明の便宜上、以下では、第1テーブル62において、第i行(1≦i≦16000)の第j列目(1≦j≦12)に位置する記憶領域MをMijと表記する。なお、各記憶領域を区別する必要が無い場合は、単に記憶領域Mと表記する。
本実施形態では、第1テーブル62の第j列目は、チャネルCHj−1に対応する。例えば第1テーブルの第1列目はチャネルCH0に対応し、第2列目はチャネルCH1に対応する。ここで、第1テーブル62の第1列目に着目すると、第i行目の記憶領域Mi1は、16000個のブロックが列方向に沿って順番に配列されるチャネルCH0の第i行目(第i番目)のブロックに対応する。例えば記憶領域M11は、チャネルCH0の第1行目のブロックに対応し、記憶領域M21は、チャネルCH1の第2行目のブロックに対応する。他の列についても同様である。
また、本実施形態では、各記憶領域Mには、当該記憶領域Mに対応するブロックの欠陥の有無を示す欠陥情報が格納される。本実施形態では、欠陥情報は、1ビットの情報で表される。そして、ブロックに欠陥がある場合は、当該ブロックに対応する記憶領域Mに格納される欠陥情報は「1」に設定される一方、ブロックに欠陥が無い場合は、当該ブロックに対応する記憶領域Mに格納される欠陥情報は「0」に設定される。なお、これに限らず、ブロックに欠陥がある場合は、当該ブロックに対応する記憶領域Mに格納される欠陥情報は「0」に設定される一方、ブロックに欠陥が無い場合は、当該ブロックに対応する記憶領域Mに格納される欠陥情報は「1」に設定されてもよい。
さらに、第1テーブル62の各行には、インデックス番号が個別に割り当てられる。本実施形態では、第1テーブル62の第i行には、インデックス番号「i」が割り当てられる。例えば第1テーブル62の第1行には、インデックス番号「1」が割り当てられ、第2行には、インデックス番号「2」が割り当てられるといった具合である。なお、インデックス番号の割り当て方法は任意であり、例えば第1テーブル62の第1行に、インデックス番号「3」が割り当てられてもよい。要するに、第1テーブル62の各行に対して、当該行を識別するためのインデックス番号が個別に割り当てられるものであればよい。
一方、図3に示すように、第2テーブル64は、論理アドレスごとに、上述のインデックス番号と、チャネルの番号を示すチャネル番号と、ページの番号を示すページ番号とを対応付けて記憶する。ここでは、第2テーブル64の各エントリ(データを格納する領域)は、論理アドレスをインデックスとして、上述のインデックス番号と、チャネル番号と、ページ番号とを格納する。本実施形態では、192GBの容量を4KB(1ページ当たりのサイズ)で管理するので、第2テーブル64のエントリ数は48Mとなり、26ビットで表現される。また、1ページは、512バイトごとのセクタで区分され、各セクタは、3ビットで表現される。
本実施形態では、図4に示すように、論理アドレスは29ビットで構成され、上位26ビットは、第2テーブル64の各エントリのインデックスとなり、下位3ビットはページ内のセクタの位置を示す。
再び図1に戻って説明を続ける。制御部10は、記憶部40に記憶された制御プログラムを実行することにより、作成部12、書き込み部14、特定部16、読み出し部18の各機能を実現する。ここで、データの書き込みには、当該データを書き込むブロックの選択と、ブロック内のページの選択が必要になる。ここでは、データを書き込むブロックの選択について説明する。作成部12は、書き込みが開始される前に、各チャネルCH0〜CH11から1つずつフリーブロックを選択してブロックの組(論理ブロック)を作成する。本実施形態では、作成部12は、フリーブロックのみで作られた論理ブロック、すなわちフリー論理ブロックに対応するインデックス番号を選択し、その選択したインデックス番号と、第1テーブル62とに基づいて、チャネルCHごとに(半導体メモリ30ごとに)、データの書き込みが行われるブロックを1つずつ選択してブロックの組(論理ブロック)を作成する。ここでは、インデックス番号は、論理ブロックを識別するための番号(論理ブロック番号)とみなすこともできる。なお、インデックス番号(論理ブロック番号)の選択においては、各ブロックの書き換え回数を均等化するために、選択回数の少ないフリー論理ブロックが優先的に選択される。
いま、半導体メモリ30に対するデータの書き込みが全く行われていない初期状態を想定する。この場合、作成部12は、1〜16000のインデックス番号の中から任意の1つのインデックス番号を選択することができる。図3の例において、作成部12がインデックス番号「5」を選択した場合を想定する。仮に、各ブロックに欠陥が存在せずに、各記憶領域Mに格納される欠陥情報が全て「0」であれば、作成部12は、チャネルごとに、インデックス番号5に対応する第1テーブル62の行に属する記憶領域Mに対応するブロックを1つずつ選択して論理ブロックを作成する。ここでは、インデックス番号「5」に対応する第1テーブル62の行は第5行目なので、作成部12は、各チャネル(CH0〜CH11)の第5行目に属するブロック(第5番目のブロック)を選択して論理ブロックを作成する。
しかしながら、実際には図3に示すように、欠陥情報が「1」である記憶領域Mも存在するので(欠陥があるブロックも存在するので)、作成部12は、選択したインデックス番号と、第1テーブル62の欠陥情報とに基づいて、論理ブロックを作成する。より具体的には、特定部16は、第1テーブル62の列ごとに、当該列内の欠陥が無いブロックのうち、上から数えて、選択したインデックス番号「5」に対応する行の数だけ下に位置するブロックを選択して論理ブロックを作成する。ここでは、作成部12は、第1テーブル62の列ごとに、当該列内の「0」の欠陥情報が格納された記憶領域Mのうち、上から順番に数えて、5番目に位置する記憶領域Mに対応するブロックを選択する。
例えば第1テーブル62の第1列目に着目すると、作成部12は、当該第1列目内の欠陥情報が「0」の記憶領域Mのうち、第1行に属する記憶領域M11から数えて5だけ下に位置する記憶領域M51に対応するブロック(CH0の第5番目のブロック)を選択する。また、例えば第1テーブル62の第2列目に着目すると、第1行および第2行の各々の記憶領域M(M12、M22)に格納される欠陥情報は「1」なので、作成部12は、第3行に属する記憶領域M31から数えて5だけ下に位置する記憶領域M72に対応するブロック(CH1の第7番目のブロック)を選択する。他の列についても同様である。つまり、図3の例では、選択したインデックス番号が「5」の場合、作成部12は、CH0、CH2〜CH4およびCH6〜CH11の各々の第5番目のブロックと、CH1の第7番目のブロックと、CH5の第10番目のブロックとを選択して論理ブロックを作成する。
図1に戻って説明を続ける。書き込み部14は、ホスト装置50からの書き込みコマンドをI/F部20で受信した場合、作成部12で予め作成された論理ブロックを構成する複数(12個)のブロックのうち、書き込みが要求されたデータ(「書き込み対象データ」と呼ぶ)を書き込むブロックを決定し、その決定したブロックに当該データを書き込む。
本実施形態では、書き込み部14は、冗長情報を書き込むチャネル(ここではCH11)以外のチャネルで、4KB(1ページ分のサイズ)ごとにラウンドロビンにより書き込みを行うようにし、ラウンドロビンの順番に応じて、書き込み対象のチャネルを決定する。この書き込みにおいて、書き込み部14は、決定したブロックの中の未だ書き込みが行われていないページに追記ポインタを設定し、その追記ポインタで示される位置のページに書き込み対象データを書き込む。そして、追記ポイントが、書き込みを行なったページに続く次のページであって書き込みがまだ行われていないページの位置を示すように更新する。したがって、追記ポインタの値は、次の書き込み位置を示すように、順次に変化する。
ここで、書き込み対象データ及び冗長情報のデータ構成について説明する。書き込み部14は、書き込み対象データ自体の誤りを検出して訂正するための誤り訂正符号(ページECCという)、および、当該書き込み対象データに割り当てられた論理アドレスを当該書き込み対象データに付加する。尚、ページECCには、データの誤りを検出するCRC符号等の符号と、データの誤りを訂正するECC符号等の符号とが含まれるものとする。ページECCにCRC符号も含む理由は、ECC符号によりデータの誤りを訂正できない場合は誤訂正の可能性もあるからである。
図5は、冗長情報が付加された書き込み対象データを例示する図である。書き込み部14は、このようなページECC及び論理アドレスを付加した書き込み対象データを、上述のように決定されたブロック内の追記ポインタにより示されるページに書き込む。尚、書き込み対象データはページ単位の大きさであるが、ブロック内のページサイズは、書き込み対象データにページECC及び論理アドレスが付加された全体の大きさに相当するものとする。また、書き込み部14は、書き込み対象データがページのサイズより大きい場合には、これを複数の分割データに分割し、当該書き込み対象データに割り当てられた論理アドレスに基づいて、各分割アドレスの論理アドレスをそれぞれ算出する。一方、書き込み部14は、誤り訂正符号を構成するために計算された冗長情報自体の誤りを検出して訂正するためのページECCを当該冗長情報に付加する。そして、ページECCを付加した当該冗長情報を、追記ポインタにより示されるチャネルCH11内のページに書き込む。
次に、複数の書き込み対象データが、ラウンドロビンによりチャネルCH0〜CH11に書き込まれる様子について説明する。図6は、ラウンドロビンにより行う書き込みを説明するための図である。尚、図の簡略化のため、データに対して付加された論理アドレスの図示を省略している。同図に示されるように、時刻T1でチャネルCH0に対して最初のデータD1の書き込みが行われ、時刻T2でチャネルCH1に対して次のデータD2の書き込みが行われるというように、チャネルCH0〜CH10まではラウンドロビンにより順番にデータの書き込みが行われる。
なお、時刻T11で、チャネルCH10へのデータD11の書き込みが行われる際には、時刻T1でチャネルCH0に書き込まれたデータD1、時刻T2でチャネルCH1に書き込まれたデータD2、時刻T3でチャネルCH2に書き込まれたデータD3、時刻T4でチャネルCH3に書き込まれたデータD4、時刻T5でチャネルCH4に書き込まれたデータD5、時刻T6でチャネルCH5に書き込まれたデータD6、時刻T7でチャネルCH6に書き込まれたデータD7、時刻T8でチャネルCH7に書き込まれたデータD8、時刻T9でチャネルCH8に書き込まれたデータD9、時刻T10でチャネルCH9に書き込まれたデータD10、時刻T11でチャネルCH10に書き込まれたデータD11のパリティPが冗長情報として計算され、当該冗長情報Pの書き込みがチャネルCH11に対して行われる。更なるデータの書き込みの際には、チャネルCH0から順にラウンドロビンで書き込みが行われる。このように、ラウンドロビンによりデータの書き込みが行われることにより、書き込みがチャネル間で均等になる。なお、同図の例では、時刻の経過と共に各チャネルに順に書き込みを行う様子が図示されているが、これに限らず、2つ以上のチャネルに同時に書き込みを行うようにしてもよい。
次に、誤り訂正符号の構成について図7を用いて説明する。尚、説明の便宜上、同図においては、チャネルCH0〜CH11に各々書き込まれる分割データに付加される論理アドレスの図示を省略している。同図に示されるように、チャネルCH0〜CH11の各書き込み対象データに対して、書き込み部14は、オフセットが等しい位置のバイト同士で排他的論理和を計算し、この値を冗長情報として、チャネルCH11の半導体メモリ30Lにおいて上述のオフセットが等しい位置に書き込む。すなわち、チャネルCH0〜CH11においてオフセットが等しい位置のバイト同士によって誤り訂正符号が構成される。
再び図1に戻って説明を続ける。特定部16は、ホスト装置50からの読み出しコマンドをI/F部20で受信した場合、読み出しが要求されたデータ(「読み出し対象データ」と呼ぶ)が格納されたブロックを特定する。ホスト装置50から送信される読み出しコマンドには、読み出し対象データに割り当てられた論理アドレスが含まれる。特定部16は、当該論理アドレスに対応するインデックス番号およびチャネル番号を第2テーブル64から読み出し、その読み出したインデックス番号およびチャネル番号と、第1テーブル62とに基づいて、読み出し対象データが格納されたブロックを特定する。詳細な内容については後述する。読み出し部18は、特定部16で特定されたブロックに格納されたデータを読み出す。
次に、制御部10が実行する処理の手順について説明する。まず、制御部10が、ホスト装置50からの書き込みコマンドに応じて、書き込み対象データの書き込みを行う処理(「書き込み処理」と呼ぶ)の手順について説明する。なお、作成部12は、前述した方法で、予めフリーの論理ブロックを作成しておく。そして、書き込み部14は、作成部12により作成されたフリーの論理ブロックを構成する複数のブロックの各々の書き込み先のページを示す追記ポインタをチャネル毎に設定する。書き込みを始める前には、書き込み部14は、作成部12により作成された論理ブロックを構成する複数のブロックの各々の先頭のページを示すように各チャネルの追記ポインタを設定する。追記ポインタが全てのチャネルでブロックの最後に達して、論理ブロックにこれ以上追記できなくなったら、作成部12は、フリーの論理ブロックを新たに作成する。
図8は、書き込み処理の一例を示すフローチャートである。図8に示すように、書き込み部14は、ホスト装置50からの書き込みコマンドをI/F部20で受信すると(ステップS1)、書き込みが要求されたデータ(書き込み対象データ)と、当該書き込み対象データに割り当てられた論理アドレスとを書き込みコマンドから取り出して記憶部40内のバッファ領域に書き込む(ステップS2)。
次に、書き込み部14は、書き込み対象データのサイズが1ページ分のサイズ(ここでは一例として4KB)以下であるか否かを判定する(ステップS3)。書き込み対象データのサイズが1ページ分のサイズより大きいと判定した場合(ステップS3:NO)、書き込み部14は、書き込み対象データをページ単位で分割し(ステップS4)、そのうちの先頭の分割データをバッファ領域から取り出す(ステップS5)。次に、書き込み部14は、ステップS5で取り出した分割データのサイズが1ページ分のサイズ未満であるか否かを判定する(ステップS6)。分割データのサイズが1ページ分のサイズ未満ではない、つまりは1ページ分のサイズであると判定した場合(ステップS6:NO)、書き込み部14は、ページサイズのデータをブロックに書き込む処理(ページサイズ書き込み処理)を実行する(ステップS7)。ページサイズ書き込み処理の詳細な内容については後述する。上述のステップS6において、分割データが1ページ分のサイズ未満であると判定した場合(ステップS6:YES)、書き込み部14は、ページサイズ未満のデータをブロックに書き込む処理(マージ書き込み処理)を実行する(ステップS8)。マージ書き込み処理の詳細な内容については後述する。
ステップS7またはステップS8の後、書き込み部14は、バッファ領域に分割データが残存しているか否かを判定する(ステップS9)。分割データが残存していないと判定した場合(ステップS9:NO)、書き込み処理は終了する。分割データが残存していると判定した場合(ステップS9:YES)、処理は上述のステップS5に戻される。
一方、上述のステップS3において、書き込み対象データのサイズが1ページ分のサイズ以下であると判定した場合(ステップS3:YES)、書き込み部14は、当該書き込み対象データのサイズが1ページ分のサイズ未満であるか否かを判定する(ステップS10)。書き込み対象データのサイズが1ページ分のサイズ未満ではない、つまりは1ページ分のサイズであると判定した場合(ステップS10:NO)、書き込み部14は、後述のページサイズ書き込み処理を実行する(ステップS11)。一方、書き込み対象データのサイズが1ページ分のサイズ未満であると判定した場合(ステップS10:YES)、書き込み部14は、後述のマージ書き込み処理を実行する(ステップS12)。
次に、書き込み部14(制御部10)が実行するページサイズ書き込み処理の手順について説明する。図9は、ページサイズ書き込み処理の一例を示すフローチャートである。まず書き込み部14は、データ(分割データ含む)を書き込むチャネルをラウンドロビンにより決定する(ステップS20)。次に、書き込み部14は、今回の書き込みに用いられるフリーの論理ブロックを構成する複数のブロックのうち、ステップS20で決定したチャネルに対応するブロックの、追記ポインタで示されるページにデータを書き込む(ステップS21)。次に、書き込み部14は、当該データに割り当てられた論理アドレスでインデックスされる第2テーブル64のエントリに、今回の書き込みに用いられたフリーの論理ブロックに対応するインデックス番号(論理ブロック番号)と、ステップS20で決定したチャネル番号と、追記ポインタで示されるページ番号とを対応付けて書き込む(ステップS22)。
次に、書き込み部14は、データを書き込んだチャネルが最終段のチャネル(ここではチャネルCH11)で、かつ、追記ポインタが示しているページはブロック内の最後のページであるか否かを判定する(ステップS23)。データを書き込んだチャネルが最終段のチャネルで、かつ、追記ポインタが示しているページはブロック内の最後のページではないと判定した場合(ステップS23の結果:NO)、書き込み部14は、追記ポインタが次のページを示すように追記ポインタの値を1つだけインクリメントする(ステップS24)。一方、データを書き込んだチャネルが最終段のチャネルで、かつ、追記ポインタが示しているページはブロック内の最後のページであると判定した場合(ステップS23の結果:YES)、作成部12は、新たにフリーの論理ブロックを作成する(ステップS25)。そして、書き込み部14は、新たに作成されたフリーの論理ブロックを構成する複数のブロックの各々の先頭のページを示すように各チャネルの追記ポインタを設定する。以上で、ページサイズ書き込み処理は終了する。
次に、制御部10が実行するマージ書き込み処理の手順について説明する。図10は、マージ書き込み処理の一例を示すフローチャートである。まず書き込み部14は、書き込みを行うデータに割り当てられた論理アドレス(「書き込み論理アドレス」と呼ぶ)に対応するインデックス番号、チャネル番号およびページ番号が第2テーブル64に既に格納されているか否かを判定する(ステップS30)。
書き込み論理アドレスに対応するインデックス番号、チャネル番号およびページ番号が第2テーブル64に既に格納されていると判定した場合(ステップS30:YES)、制御部10(特定部16)は、当該書き込み論理アドレスに対応するインデックス番号、チャネル番号およびページ番号を第2テーブル64から読み出す。そして、特定部16は、読み出したインデックス番号およびチャネル番号と、第1テーブル62とに基づいて、半導体メモリ30のブロックを特定する。この特定方法については、後述の読み出し処理で詳細に説明する。また、特定部16は、当該書き込み論理アドレスに対応するページ番号を第2テーブル64から読み出す。以上のようにして、当該書き込み論理アドレスに対応するブロックと、当該ブロック内のページ番号とが特定される(ステップS31)。
次に、読み出し部18は、ステップS31で特定されたブロック内のページ番号が示すページに格納されたデータ(ページデータ)を、記憶部40のバッファ領域へ読み出す(ステップS32)。次に、特定部16は、書き込み論理アドレスの下位3ビットを参照して、対応するセクタを特定する(ステップS33)。次に、書き込み部14は、バッファ領域上のページデータのうちステップS32で特定されたセクタに対応する位置に、データを書き込む(ステップS34)。そして、書き込み部14は、バッファ領域上のページデータを、新しいページ(追記ポインタで示されたページ)に書き込む。すなわち、書き込み部14は、上述のページサイズ書き込み処理を実行する(ステップS35)。以上で、マージ書き込み処理が終了する。
一方、上述のステップS30において、書き込み論理アドレスに対応するインデックス番号、チャネル番号およびページ番号が第2テーブル64に格納されていないと判定した場合(ステップS30:NO)、書き込み部14は、上述したページサイズ書き込み処理と同じ方法で、データの書き込みを行う(ステップS36)。この内容は、図9に例示した内容と同じであるので、詳細な説明は省略する。以上で、マージ書き込み処理は終了する。
次に、制御部10が、ホスト装置50からの読み出しコマンドに応じて、読み出しが要求されたデータ(読み出し対象データ)の読み出しを行う処理(「読み出し処理」と呼ぶ)の手順について説明する。図11は、読み出し処理の一例を示すフローチャートである。図11に示すように、制御部10(特定部16)は、ホスト装置50からの読み出しコマンドをI/F部20で受信すると(ステップS41)、読み出し対象データのサイズが1ページ分のサイズ以下であるか否かを判定する(ステップS42)。読み出し対象データのサイズが1ページ分のサイズ(ページサイズ)より大きいと判定した場合(ステップS42:NO)、制御部10は、読み出し対象データをページサイズに分割し(ステップS43)、そのうちの先頭の分割データを読み出す(ステップS44)。次に、制御部16は、ステップS44で読み出した分割データのサイズが1ページ分のサイズ未満であるか否かを判定する(ステップS45)。分割データのサイズが1ページ未満ではない、つまりは1ページ分のサイズであると判定した場合(ステップS45:NO)、制御部10は、ページサイズのデータを読み出す処理(ページサイズ読み出し処理)を実行する。ページサイズ読み出し処理の詳細な内容については後述する。上述のステップS45において、分割データのサイズがページサイズ未満であると判定した場合(ステップS45:YES)、制御部10は、ページサイズ未満のデータを読み出す処理(ページ未満読み出し処理)を実行する(ステップS47)。ページ未満読み出し処理の詳細な内容については後述する。
ステップS46またはステップS47の後、制御部10は、分割データが残存しているか否かを判定する(ステップS48)。分割データが残存していないと判定した場合(ステップS48:NO)、読み出し処理は終了する。分割データが残存していると判定した場合(ステップS48:YES)、処理は上述のステップS44に戻される。
一方、上述のステップS42において、読み出し対象データのサイズがページサイズ以下であると判定した場合(ステップS42:YES)、制御部10は、当該読み出し対象データのサイズがページサイズ未満であるか否かを判定する(ステップS49)。読み出し対象データのサイズがページサイズ未満ではない、つまりは1ページ分のサイズであると判定した場合(ステップS49:NO)、制御部10は、後述のページサイズ読み出し処理を実行する(ステップS50)。一方、読み出し対象データのサイズがページサイズ未満であると判定した場合(ステップS49:YES)、制御部10は、後述のページ未満読み出し処理を実行する(ステップS51)。
次に、制御部10が実行するページサイズ読み出し処理の手順について説明する。図12は、ページサイズ読み出し処理の一例を示すフローチャートである。まず制御部10(特定16)は、読み出し対象データ(分割データ含む)に割り当てられる論理アドレス(「読み出し論理アドレス」と呼ぶ)を特定する(ステップS61)。次に、特定部16は、当該読み出し論理アドレスに対応するインデックス番号、チャネル番号およびページ番号の各々を第2テーブル64から読み出す(ステップS62)。
次に、特定部16は、ステップS62で読み出したインデックス番号およびチャネル番号と、第1テーブル62とから、読み出し対象データが格納されたブロックを特定する(ステップS63)。より具体的には、特定部16は、ステップS63で読み出したインデックス番号およびチャネル番号と、第1テーブル62のうち、当該チャネル番号に対応する列内の欠陥情報とに基づいて、読み出し対象データが格納されたブロックを特定する。
さらに詳述すると、以下のとおりである。いま、ステップS62で読み出されたインデックス番号が「5」、チャネル番号が「CH1」の場合を想定する。図3の例において、各ブロックに欠陥が存在しない場合、つまりは、各記憶領域Mに格納された欠陥情報が全て「0」の場合、インデックス番号5に対応する論理ブロックは、各チャネルCH0〜CH11の第5行目に属するブロックで構成される。そして、読み出されたチャネル番号は「CH1」(第1テーブル62の第2列目に対応)なので、各ブロックに欠陥が存在しない場合は、第1テーブル62の第5行の第2列目に位置する記憶領域M52に対応するブロックが、読み出し対象データが格納されたブロックとして特定される。
しかしながら、実際には、図3に示すように、第1テーブル62の第2列目においては、第1行に属する記憶領域M12、および、第2行に属する記憶領域M22の各々に格納された欠陥情報が「1」である。つまりは、欠陥があるブロックが存在するので、特定部16は、第2列目内の欠陥が無いブロックのうち、上から数えて、読み出したインデックス番号「5」に対応する第1テーブル62の行の数だけ下に位置するブロックを、読み出し対象データが格納されたブロックとして特定する。ここでは、特定部16は、第1テーブル62の第2列目において、第3行目に属する記憶領域M32から数えて、5だけ下に位置する記憶領域M(第7行目の記憶領域M72)に対応するブロックを、読み出し対象データが格納されたブロックとして特定する。以上のように、特定部16は、ステップS62で読み出したインデックス番号およびチャネル番号と、第1テーブル62のうち、当該チャネル番号に対応する列における欠陥情報とに基づいて、読み出し対象データが格納されたブロックを特定する。
次に、読み出し部18は、ステップS63で特定されたブロック内のページのうち、ステップS62で第2テーブル64から読み出されたページ番号が示すページに格納されたデータを記憶部40のバッファ領域に読み出す(ステップS64)。次に、制御部10は、バッファ領域に読み出したデータをホスト装置50へ転送するようにI/F部20を制御する(ステップS65)。以上で、ページサイズ読み出し処理は終了する。
次に、制御部10が実行するページ未満読み出し処理の手順について説明する。図13は、ページ未満読み出し処理の一例を示すフローチャートである。まず制御部10(特定16)は、読み出し対象データに割り当てられる読み出し論理アドレスを特定する(ステップS71)。次に、特定部16は、当該読み出し論理アドレスに対応するインデックス番号、チャネル番号およびページ番号の各々を第2テーブル64から読み出す(ステップS72)。次に、特定部16は、ステップS72で読み出したインデックス番号およびチャネル番号と、第1テーブル62とから、読み出し対象データが格納されたブロックを特定する(ステップS73)。この内容は、図12のステップS63の内容と同様であるので、詳細な説明は省略する。
次に、読み出し部18は、ステップS73で特定されたブロック内のページのうち、ステップS72で第2テーブル64から読み出されたページ番号が示すページに格納されたデータを記憶部40のバッファ領域に読み出す(ステップS74)。次に、制御部10は、バッファ領域に読み出したデータのうち、読み出し論理アドレスの下位3ビットで特定されるセクタに対応するデータを、ホスト装置50へ転送するようにI/F部20を制御する(ステップS75)。以上で、ページ未満読み出し処理は終了する。
以上に説明したように、本実施形態では、第1テーブル62の各記憶領域Mには、1ビットの情報が格納されるだけで済むので、結果として、論物変換テーブル60のサイズを低減できるという有利な効果が得られる。
ここで、第1テーブル62の各記憶領域Mに、当該記憶領域Mに対応するブロックの位置情報(物理アドレス)を格納する場合を想定すると、1チャネル当たり16000個のブロックを表現するのに必要なビット数は14ビットであるので、この場合の第1テーブル62の容量は、14×12(チャネル数)×16000(行数)÷8=336Kバイトとなる。これに対して、本実施形態では、第1テーブル62の各行において欠陥ブロックの有無を表現するのに必要なビット数は12ビットであるので、第1テーブル62の容量は、12×16000(行数)÷8=24Kバイトとなる。したがって、本実施形態によれば、論物変換テーブル60のサイズを大幅に低減できる。
以上、本発明の実施形態を説明したが、この実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
例えば上述の実施形態では、論理ブロックの作成時に、作成部12は、第1テーブル62内の「0」の欠陥情報が格納された記憶領域Mを用いて、各チャネルのブロックを選択しているが、これに限らず、作成部12は、第1テーブル62内の「1」の欠陥情報が格納された記憶領域Mを用いて、各チャネルのブロックを選択することもできる。例えば論理ブロックの作成時に、作成部12がインデックス番号「5」を選択した場合を例に挙げて説明すると以下のとおりである。
図3の例で、第1テーブル62の第2列目に着目すると、作成部12は、第1行目から、選択したインデックス番号「5」に対応する行(第5行目)までの各々に属する記憶領域M(M12、M22、M32、M42、M52)のうち、欠陥情報「1」が格納された記憶領域Mの数をカウントする。欠陥情報「1」が格納された記憶領域Mが存在しない場合は、作成部12は、第5行目に属する記憶領域M52に対応するブロックを選択する。ここでは、図3に示すように、第1行目および第2行目の各々に属する記憶領域M(M12、M22)に欠陥情報「1」が格納されているので、このときのカウント値は「2」となる。
そして、作成部12は、選択したインデックス番号「5」に対応する第5行目から、カウント値「2」だけ下に位置する第7行目までの各々に属する記憶領域M(M52、M62、M72)のうち、欠陥情報「1」が格納された記憶領域Mの数をカウントする。欠陥情報「1」が格納された記憶領域Mが存在しない場合は、作成部12は、第7行目に属する記憶領域M72に対応するブロックを選択する。一方、欠陥情報「1」が格納された記憶領域Mが存在する場合は、作成部12は、第7行目から、今回のカウント値だけ下にシフトした行までの各々に属する記憶領域Mのうち、欠陥情報「1」が格納された記憶領域Mの数をカウントする。図3の例では、第5行目から第7行目においては、欠陥情報「1」が格納された記憶領域Mが存在しないので、作成部12は、第7行目に属する記憶領域M72に対応するブロックを選択する。他の列についても同様である。
要するに、作成部12は、選択したインデックス番号と、第1テーブル62の欠陥情報とに基づいて、ブロックの組(論理ブロック)を作成するものであればよく、欠陥情報「1」が格納された記憶領域Mのカウント値を用いてブロックを選択することもできるし、欠陥情報「0」が格納された記憶領域Mのカウント値を用いてブロックを選択することもできる。また、カウント値は上から順番にカウントした値を用いてもよいし、下から順番にカウントした値を用いてもよく、その種類は任意に変更可能である。
なお、読み出し処理についても同様であり、特定部16は、第2テーブル64から読み出したインデックス番号およびチャネル番号と、第1テーブル62のうち、当該チャネル番号に対応する列における欠陥情報とに基づいて、読み出しが要求されたデータが格納されたブロックを特定するものであればよい。
また、上述の実施形態では、半導体メモリ30の数(チャネルの数)が12個であるが、これに限らず、半導体メモリ30の数は任意に変更可能である。また、ページのサイズ、ブロックのサイズ、および、半導体メモリ30のサイズも任意に変更可能である。
また、上述のメモリシステム100は、新たにブロックに欠陥が発生するたびに、第1テーブル62を更新する更新部を備えることもできる。これにより、書き込み処理時において、欠陥のあるブロックにデータを書き込むことはない。また、例えばデータが書き込まれたブロックに後発的な欠陥が発生した場合は、論理ブロックを用いた誤り訂正を行うことで、データを回復させることができる。
また、上述の実施形態では、論物変換テーブル60は、記憶部40に記憶されているが、これに限らず、メモリシステム100において、論物変換テーブル60が記憶される場所は任意である。例えば論物変換テーブル60の少なくとも一部が半導体メモリ30に記憶されてもよい。例えば論物変換テーブル60の全部が半導体メモリ30に記憶されてもよいし、論物変換テーブル60の一部が半導体メモリ30に記憶され、論物変換テーブル60のその他の部分が記憶部40に記憶されてもよい。また、記憶部40の種類も任意である。例えば記憶部40は、SRAM(Static Random Access Memory)で構成されてもよいし、DRAM(Dynamic Random Access Memory)で構成されてもよい。
10 制御部
12 作成部
14 書き込み部
16 特定部
18 読み出し部
20 I/F部
30 半導体メモリ
40 記憶部
50 ホスト装置
60 論物変換テーブル
62 第1テーブル
64 第2テーブル
100 メモリシステム

Claims (8)

  1. 複数のブロックをそれぞれが有する複数の半導体メモリと、
    前記複数の半導体メモリの各々が有する前記複数のブロックの各々と1対1に対応付けられた複数の記憶領域がマトリクス状に配列され、列ごとに、何れか1つの前記半導体メモリが有する前記複数のブロックの各々に対応する前記記憶領域が並べられ、各記憶領域には、当該記憶領域に対応する前記ブロックの欠陥の有無を示す欠陥情報が記憶される第1テーブルと、
    データの書き込みを要求する書き込みコマンドを受信する受信部と、
    前記第1テーブルの複数の行と1対1に対応する複数のインデックス番号のうちの何れかを選択し、その選択した前記インデックス番号と、前記第1テーブルとに基づいて、前記半導体メモリごとに、データの書き込みが行われる前記ブロックを1つずつ選択して、誤り訂正符号を構成するための前記ブロックの組を作成する作成部と、
    複数の前記データの各々に対して個別に割り当てられた論理アドレスごとに、前記インデックス番号、および、前記複数の半導体メモリと1対1に対応する複数のチャネル番号のうちの何れか1つの前記チャネル番号を対応付けて記憶する第2テーブルと、
    前記受信部で前記書き込みコマンドを受信した場合、前記複数のチャネル番号のうちの何れかを選択し、前記組を構成する複数の前記ブロックのうち、その選択した前記チャネル番号に対応する前記ブロックに対して、書き込みが要求された前記データを書き込むとともに、当該データに割り当てられた前記論理アドレスと、前記組に対応する前記インデックス番号と、選択した前記チャネル番号とを対応付けて前記第2テーブルに書き込む書き込み部と、を備え、
    前記作成部は、前記複数の半導体メモリの各々が有する前記複数のブロックの各々に欠陥が無い場合は、前記半導体メモリごとに、前記インデックス番号が示す行に属する前記記憶領域に対応するブロックを1つずつ選択する、
    ことを特徴とするメモリシステム。
  2. 前記受信部が、読み出しを要求する読み出しコマンドを受信した場合、読み出しが要求された前記データに割り当てられた前記論理アドレスに対応する前記インデックス番号および前記チャネル番号を前記第2テーブルから読み出し、その読み出した前記インデックス番号および前記チャネル番号と、前記第1テーブルとに基づいて、読み出しが要求された前記データが格納された前記ブロックを特定する特定部と、
    前記特定部で特定された前記ブロックに格納された前記データを読み出す読み出し部と、を備える、
    ことを特徴とする請求項1に記載のメモリシステム。
  3. 前記作成部は、選択した前記インデックス番号と、前記第1テーブルの前記欠陥情報とに基づいて、前記組を作成する、
    ことを特徴とする請求項1に記載のメモリシステム。
  4. 前記作成部は、前記第1テーブルの列ごとに、当該列内の欠陥が無い前記ブロックのうち、上から数えて、選択した前記インデックス番号に対応する行の数だけ下に位置する前記ブロックを選択して前記組を作成する、
    ことを特徴とする請求項3に記載のメモリシステム。
  5. 前記特定部は、前記第2テーブルから読み出した前記インデックス番号および前記チャネル番号と、前記第1テーブルのうち、前記第2テーブルから読み出したチャネル番号に対応する列における前記欠陥情報とに基づいて、読み出しが要求された前記データが格納された前記ブロックを特定する、
    ことを特徴とする請求項2に記載のメモリシステム。
  6. 前記特定部は、前記第1テーブルのうち、前記チャネル番号に対応する列内の欠陥が無い前記ブロックのうち、上から数えて、前記インデックス番号に対応する行の数だけ下に位置する前記ブロックを、読み出しが要求された前記データが格納された前記ブロックとして特定する、
    ことを特徴とする請求項5に記載のメモリシステム。
  7. 前記欠陥情報は1ビットの情報である、
    ことを特徴とする請求項1に記載のメモリシステム。
  8. データの書き込みを要求する書き込みコマンドを受信する第1ステップと、
    複数の半導体メモリの各々が有する複数のブロックの各々と1対1に対応付けられた複数の記憶領域がマトリクス状に配列され、列ごとに、何れか1つの前記半導体メモリが有する前記複数のブロックの各々に対応する前記記憶領域が並べられ、各記憶領域には、当該記憶領域に対応する前記ブロックの欠陥の有無を示す欠陥情報が記憶される第1テーブルの複数の行と1対1に対応する複数のインデックス番号のうちの何れかを選択する第2ステップと、
    前記第2ステップで選択した前記インデックス番号と、前記第1テーブルとに基づいて、前記半導体メモリごとに、データの書き込みが行われる前記ブロックを1つずつ選択して、誤り訂正符号を構成するための前記ブロックの組を作成する第3ステップと、
    前記書き込みコマンドを受信した場合、前記複数の半導体メモリと1対1に対応する複数のチャネル番号のうちの何れかを選択する第4ステップと、
    前記組を構成する複数の前記ブロックのうち、前記第4ステップで選択した前記チャネル番号に対応する前記ブロックに対して、書き込みが要求された前記データを書き込むとともに、当該データに割り当てられた論理アドレスと、前記組に対応する前記インデックス番号と、前記チャネル番号とを対応付けて第2テーブルに書き込む第5ステップと、をコンピュータに実行させるためのプログラム。
JP2011065579A 2011-03-24 2011-03-24 メモリシステムおよびプログラム Active JP5319723B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011065579A JP5319723B2 (ja) 2011-03-24 2011-03-24 メモリシステムおよびプログラム
US13/217,461 US8812774B2 (en) 2011-03-24 2011-08-25 Memory system and computer program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011065579A JP5319723B2 (ja) 2011-03-24 2011-03-24 メモリシステムおよびプログラム

Publications (2)

Publication Number Publication Date
JP2012203508A JP2012203508A (ja) 2012-10-22
JP5319723B2 true JP5319723B2 (ja) 2013-10-16

Family

ID=46878290

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011065579A Active JP5319723B2 (ja) 2011-03-24 2011-03-24 メモリシステムおよびプログラム

Country Status (2)

Country Link
US (1) US8812774B2 (ja)
JP (1) JP5319723B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9202577B2 (en) * 2012-03-30 2015-12-01 Intel Corporation Solid state drive management in power loss recovery
JP5983019B2 (ja) * 2012-05-17 2016-08-31 ソニー株式会社 制御装置、記憶装置、記憶制御方法
US9158678B2 (en) * 2013-03-13 2015-10-13 Kabushiki Kaisha Toshiba Memory address management system and method
JP2014186600A (ja) * 2013-03-25 2014-10-02 Nec Corp 記憶装置
KR102147988B1 (ko) * 2013-04-09 2020-08-26 삼성전자주식회사 불휘발성 저장 장치 및 그것의 데이터 저장 방법
WO2015196470A1 (zh) 2014-06-27 2015-12-30 华为技术有限公司 一种将数据写入闪存装置的方法、闪存装置和存储系统
JP5971423B2 (ja) * 2014-07-23 2016-08-17 富士通株式会社 情報処理装置、メモリコントローラ、記憶装置の制御プログラム及び記憶装置の制御方法
US10095423B2 (en) 2015-09-30 2018-10-09 Toshiba Memory Corporation Storage system that tracks mapping to a memory module to be detached therefrom
FR3044818B1 (fr) * 2015-12-02 2018-03-30 Stmicroelectronics (Rousset) Sas Procede de gestion d'une ligne defectueuse du plan memoire d'une memoire non volatile et dispositif de memoire correspondant
US10620850B1 (en) * 2016-03-31 2020-04-14 EMC IP Holding Company LLC Caching techniques duplicating dirty data in secondary cache
US10826990B2 (en) * 2018-07-23 2020-11-03 EMC IP Holding Company LLC Clustered storage system configured for bandwidth efficient processing of writes at sizes below a native page size
JP2021068129A (ja) * 2019-10-21 2021-04-30 Tdk株式会社 メモリコントローラ及びフラッシュメモリシステム
KR20210072990A (ko) * 2019-12-10 2021-06-18 삼성전자주식회사 가변 크기 맵핑 기반의 스토리지 장치의 데이터 관리 방법 및 이를 이용한 구동 방법

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004265162A (ja) 2003-03-03 2004-09-24 Renesas Technology Corp 記憶装置およびアドレス管理方法
US20050144516A1 (en) * 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive deterministic grouping of blocks into multi-block units
JP2006099594A (ja) * 2004-09-30 2006-04-13 Tdk Corp メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4347265B2 (ja) * 2005-05-31 2009-10-21 Necシステムテクノロジー株式会社 Raid制御装置、およびraid制御方法
JP2007334413A (ja) * 2006-06-12 2007-12-27 Sony Corp 記憶装置
US8214579B2 (en) 2008-09-30 2012-07-03 Tdk Corporation Memory controller, flash memory system with memory controller, and method of controlling flash memory
JP4720891B2 (ja) * 2008-09-30 2011-07-13 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP5066199B2 (ja) 2010-02-12 2012-11-07 株式会社東芝 半導体記憶装置

Also Published As

Publication number Publication date
US8812774B2 (en) 2014-08-19
JP2012203508A (ja) 2012-10-22
US20120246383A1 (en) 2012-09-27

Similar Documents

Publication Publication Date Title
JP5319723B2 (ja) メモリシステムおよびプログラム
US10657047B2 (en) Data storage device and method of performing partial garbage collection
US8386698B2 (en) Data accessing method for flash memory and storage system and controller using the same
JP4666080B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US10310739B2 (en) Memory management method, memory control circuit unit and memory storage device
JP5813589B2 (ja) メモリシステムおよびその制御方法
US9213629B2 (en) Block management method, memory controller and memory stoarge apparatus
JP4632180B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US20100057979A1 (en) Data transmission method for flash memory and flash memory storage system and controller using the same
TWI571882B (zh) 平均磨損方法、記憶體控制電路單元及記憶體儲存裝置
US8966157B2 (en) Data management method, memory controller and memory storage apparatus
US10564899B2 (en) Data writing method for rewritable non-volatile memory modules based on use information, memory storage device and memory control circuit unit
US20140075099A1 (en) Control method and memory system of non-volatile semiconductor memory
US20190073298A1 (en) Memory management method, memory control circuit unit and memory storage apparatus
CN114968096A (zh) 一种存储器的控制方法、存储器与存储系统
US20190347037A1 (en) Data storage apparatus and system information programming method therefor
JP2012058770A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US20140089566A1 (en) Data storing method, and memory controller and memory storage apparatus using the same
JP4737223B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US10824368B2 (en) Data storing method, memory control circuit unit and memory storage device
JP2012068765A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4720891B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4582232B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4687720B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US9946491B2 (en) Memory erase method, memory control circuit unit and memory storage apparatus, including an erase index table and mother-child physical erasing units

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121113

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130104

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130129

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130430

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130527

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130711

R151 Written notification of patent or utility model registration

Ref document number: 5319723

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

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