JP2014229216A - 情報処理装置、制御回路、制御プログラム、および制御方法 - Google Patents

情報処理装置、制御回路、制御プログラム、および制御方法 Download PDF

Info

Publication number
JP2014229216A
JP2014229216A JP2013110400A JP2013110400A JP2014229216A JP 2014229216 A JP2014229216 A JP 2014229216A JP 2013110400 A JP2013110400 A JP 2013110400A JP 2013110400 A JP2013110400 A JP 2013110400A JP 2014229216 A JP2014229216 A JP 2014229216A
Authority
JP
Japan
Prior art keywords
data
error
physical
read
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013110400A
Other languages
English (en)
Other versions
JP6102515B2 (ja
Inventor
雅紀 日下田
Masaki Higeta
雅紀 日下田
早坂 和美
Kazumi Hayasaka
和美 早坂
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013110400A priority Critical patent/JP6102515B2/ja
Priority to EP14166167.8A priority patent/EP2806362A1/en
Priority to US14/266,957 priority patent/US20140351628A1/en
Publication of JP2014229216A publication Critical patent/JP2014229216A/ja
Application granted granted Critical
Publication of JP6102515B2 publication Critical patent/JP6102515B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • 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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement

Abstract

【課題】エラーが検出された情報の移動に伴う性能悪化を抑止する情報処理装置、制御回路、制御プログラム、および制御方法を提供する。
【解決手段】NANDコントローラ6aは、NANDデバイス7a〜10aの各物理ページから読出したデータからエラーの検出を行う。また、NANDコントローラ6aは、読出したデータからエラーを検出した場合は、エラーが検出されたデータが書込まれた物理ページを含む領域であって、エラーの発生が推定される領域に含まれる各物理ページから、データを個別に検査読出する。そして、NANDコントローラ6aは、検査読出を行ったデータからエラーが検出された場合は、読出したデータを他の物理ページに移動させる。
【選択図】図4

Description

本発明は、情報処理装置、制御回路、制御プログラム、および制御方法に関する。
従来、磁気ディスクよりも高速に動作する不揮発性メモリを用いた情報処理装置が知られている。このような情報処理システムの一例として、NANDフラッシュメモリデバイスをストレージ等の記憶装置として使用する情報処理装置が知られている。なお、以下の説明では、NANDフラッシュメモリデバイスをNANDデバイスと記載する。
ここで、NANDデバイスは、情報を書込んだままにしておくと、情報を書込んだ記憶領域の素子から電荷が抜け、ビット化けを発生させる場合がある。また、NANDデバイスは、情報の読み出しを行う際に記憶領域の素子に電圧を印加するので、隣接する記憶領域に格納された情報にビット化けを発生させる場合がある。
このようなビット化けによるエラーの発生を防ぐため、NANDデバイスは、各記憶領域に格納する情報からエラーの検出、および、エラーの訂正を行うエラー訂正符号を記憶する。そして、NANDデバイスの制御を行うNANDコントローラは、エラー訂正符号を用いて、NANDデバイスから読出した情報からエラーの検出や訂正を実行する。
また、NANDデバイスが有する各記憶領域の素子は、書込まれた情報を消去する際に劣化が進行し、情報を保持する能力が低下する結果、エラーを発生させやすくなる。例えば、情報の記憶領域である物理ページ単位で情報の読出しを実行し、複数の物理ページを含む物理ブロック単位で情報の書込みや消去を実行するNANDデバイスでは、物理ブロック単位で素子の劣化が進行し、エラーが発生し易くなる。
このような素子が劣化した物理ブロックを情報の書込対象から除外することで、エラーの拡大を防ぐNANDコントローラが知られている。例えば、NANDコントローラは、読出した情報からエラーを検出した場合は、エラーが検出された情報が格納された物理ページを含む物理ブロックを特定する。そして、NANDコントローラは、特定した物理ブロック内の情報を他の物理ブロックに移動し、特定した物理ブロックを情報の格納対象から除外する。
特開2007−316779号公報 特開平06−208799号公報
しかしながら、上述したエラーが検出された物理ブロックの情報を他の物理ブロックに移動する技術では、エラーが発生していない情報も他の物理ブロックに退避する。このため、過剰な読出処理や書込処理が発生する結果、素子の劣化やデータ移動時の時間が増大し、NANDデバイスの性能が悪化するという問題がある。
1つの側面では、エラーが検出された情報の移動に伴う性能悪化を抑止する情報処理装置、制御回路、制御プログラム、および制御方法を提供することを目的とする。
一態様の情報処理装置は、複数の記憶領域を有する記憶装置を有する。また、情報処理装置は、記憶装置の各記憶領域から読出されたデータからエラーの検出を行う。また、情報処理装置は、エラーを検出した場合は、エラーが検出されたデータが書込まれた記憶領域を含み、エラーの発生が推定される領域に含まれる各記憶領域から、個別にデータの読出しを行う。そして、情報処理装置は、読み出されたデータからエラーが検出された場合は、エラーが検出されたデータを他の記憶領域に移動させる。
一実施形態によれば、エラーが検出された情報の退避に伴う性能悪化を抑止できる。
図1は、実施例1に係る情報処理装置を説明する図である。 図2は、メモリアクセスの一例を説明する図である。 図3は、NANDコントローラが実行する処理の一例を説明する図である。 図4は、実施例1に係るNANDコントローラの機能構成を説明する図である。 図5は、実施例1に係るアドレス変換テーブルに格納された情報の一例を説明する図である。 図6は、実施例1に係る管理情報テーブルに格納された情報の一例を説明する図である。 図7は、エラーログ記憶部の機能構成の一例を説明する図である。 図8は、NANDコントローラが実行する処理を説明する図である。 図9は、実施例1に係るNANDコントローラが実行する処理の流れを説明するフローチャートである。 図10は、実施例2に係るNANDコントローラの機能構成を説明する図である。 図11は、実施例2に係るNANDコントローラが実行する処理の流れを説明するフローチャートである。 図12は、実施例3に係るNANDコントローラの機能構成を説明する図である。 図13は、実施例3に係るNANDコントローラが実行する処理の流れを説明するフローチャートである。 図14は、エラーログ記憶部のバリエーションを説明する図である。 図15は、エラーログを含む管理情報テーブルの一例を説明する図である。 図16は、制御プログラムを実行するNANDコントローラの一例を説明する図である。
以下に添付図面を参照して本願に係る情報処理装置、制御回路、制御プログラム、および制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により開示技術が限定されるものではない。また、各実施例は、矛盾しない範囲で適宜組みあわせてもよい。
以下の実施例1では、図1を用いて、本願に係る情報処理装置の一例を説明する。図1は、実施例1に係る情報処理装置を説明する図である。図1に示す例では、情報処理装置1は、複数のメモリ2a、2b、複数のCPU(Central Processing Unit)3a、3b、I/O(Input Output)ハブ4、複数のSSD(Solid State Drive)5a、5bを有する。また、SSD5aは、NANDコントローラ6a、および複数のNANDデバイス7a〜10aを有する。
また、SSD5bは、NANDコントローラ6b、および複数のNANDデバイス7b〜10bを有する。なお、以下の説明では、NANDコントローラ6b、および複数のNANDデバイス7b〜10bは、NANDコントローラ6a、および複数のNANDデバイス7a〜10aと同様の機能を発揮するものとして、説明を省略する。
各メモリ2a、2bは、各CPU3a、3bが演算処理に用いるデータを記憶する記憶装置である。また、各CPU3a、3bは、メモリ2a、2bが記憶するデータを用いて、各種演算処理を行う演算処理装置である。例えば、CPU3a、3bは、NUMA(Non-Uniform Memory Access)の技術を用いて、メモリ2a、2bが記憶するデータを取得し、取得したデータを用いて演算処理を実行する。
また、CPU3a、3bは、I/Oハブ4を介して、各SSD5a、5bが記憶するデータを取得し、取得したデータを用いて演算処理を実行する。詳細には、CPU3aは、SSD5aに対し、データの読出し要求や書込み要求を発行し、各NANDデバイス7a〜10aからデータの読出しや書込みを行う。例えば、CPU3aは、SSD5aに対し、読出し対象となるデータを指定する論理アドレスが格納された読出し要求を発行する。また、CPU3aは、データの書込み先を指定する論理アドレスと、書込み対象となるデータとが格納された書込み要求を発行する。
NANDデバイス7aは、各種データを記憶する不揮発性メモリである。詳細には、NANDデバイス7aは、データの記憶領域である物理ページを複数有し、物理ページ単位でデータの書込みを行う。また、NANDデバイス7aは、複数の物理ページを有する物理ブロックを複数有し、ブロック単位でデータの消去を行う。ここで、1つの物理ページは、例えば、8キロバイトの記憶容量を有し、1つの物理ブロックは、例えば、128の物理ページを有する。
NANDコントローラ6aは、各NANDデバイス7a〜10aに対してアクセスし、データの読出しや書込みを行う。例えば、NANDコントローラ6aは、各CPU3a、3bがデータが記憶された記憶領域を指定する際に用いる論理アドレスと、データが格納されたNANDデバイス7a〜10aの記憶領域を示す物理アドレスとを対応付けたアドレス変換テーブルを有する。
そして、NANDコントローラ6aは、読出し要求とともに論理アドレスを受信すると、アドレス変換テーブルを用いて、論理アドレスと対応付けられた物理アドレスを識別し、識別した物理アドレスが示す記憶領域からデータの読出しを行う。その後、NANDコントローラ6aは、I/Oハブ4を介して、読出したデータをCPU3aに送信する。
なお、以下の説明では、理解を容易にするため、各物理ページの先頭アドレスとなる論理アドレスを単に論理アドレスと記載し、各物理ページの先頭アドレスとなる物理アドレスを単に物理アドレスと記載する。また、情報処理装置1が実行するシステムは、各物理ページの先頭アドレスとなる論理アドレスに対する読出し要求や書込み要求を発行するものとする。
例えば、NANDコントローラ6aは、NANDデバイス7a〜10aが、複数のブロックを有し、各ブロックに2個の物理ページが含まれている場合は、以下の処理を行う。まず、NANDコントローラ6aは、論理アドレスの下位qビットを論理的な1つのブロック内において、物理ページと同等の大きさを持つ仮想的なページを識別するための論理ページ番号とし、残りの論理アドレスの上位pビットを論理的な1つのブロックを示す論理ブロックアドレスとする。
また、NANDコントローラ6aは、物理アドレスの上位pビットを物理的な1つのブロックを示す物理ブロックアドレスとし、物理アドレスの下位qビットを物理的な1つのブロック内において、各物理ページを識別するための物理ページ番号とする。つまり、NANDコントローラ6aは、論理アドレスを、論理ブロックを示す論理ブロックアドレスと、論理ページを論理ブロックごとに示す論理ページ番号とに分割する。また、NANDコントローラ6aは、物理アドレスを、物理ブロックを示す物理ブロックアドレスと、物理ページを物理ブロックごとに示す物理ページ番号とに分割する。
以下、図2を用いて、NANDコントローラ6aが実行するメモリアクセスの一例について説明する。図2は、メモリアクセスの一例を説明する図である。なお、図2に示す例では、理解を容易にするため、ブロック数を「8」とし、各ブロック内の物理ページ数が「4」のNANDデバイス7aについて記載した。また、図2に示す例では、NANDコントローラ6aが、論理ブロックアドレスと物理ブロックアドレスとを対応付けたアドレス変換テーブルを用いて、NANDデバイス7a〜10aが有する物理ページ単位でデータの書込みを行う処理について記載した。
例えば、NANDコントローラ6aは、図2中(a)に示すように、CPU3aが実行するファイルシステムから、論理ブロックアドレス「L0」の論理ページ番号「3」、すなわち論理アドレス「L0−3」に書き込み要求を発行する。すると、NANDコントローラ6aは、アドレス変換テーブルを用いて、論理アドレス「L0−3」に対応付けられた物理アドレス「P4−3」を取得し、図2中(b)に示すように、更新前のデータが格納されている物理ページを識別する。
続いて、NANDコントローラ6aは、図2中(c)に示すように、物理アドレス「P4−3」が示す物理ページのデータを読出し、読み出したデータを書込み対象のデータに更新し、更新後のデータを予備ブロックの空き物理ページに格納する。詳細な例を挙げると、NANDコントローラ6aは、図2中(d)に示すように、物理アドレス「P8−0」が示す物理ページに更新後のデータを格納する。その後、NANDコントローラ6aは、図2中(e)に示すように、論理アドレス「L0−3」と対応付けられていた物理アドレス「P4−3」を「P8−0」に更新し、処理を終了する。
また、NANDコントローラ6aは、劣化速度のばらつきを平準化したり、電荷が素子から抜けることで発生するビット化けを防ぐため、NANDデバイスの各ブロックにデータを書込んだ際の時刻をタイムスタンプとして記憶する。そして、NANDコントローラ6aは、各ブロックについて、記憶したタイムスタンプと現在の時刻との差が所定の閾値よりも大きい場合は、ブロックに格納されたデータを他のブロックに移動する。
以下、図3を用いて、NANDコントローラ6aが実行する処理の一例を説明する。図3は、NANDコントローラが実行する処理の一例を説明する図である。なお、図3に示す例では、NANDコントローラ6aは、論理アドレスと物理アドレスとを対応付けたアドレス変換テーブルを有するものとする。また、図3に示す例では、管理情報テーブルは、各物理ブロックにデータを書込んだ際の時刻を示すタイムスタンプと、各物理ブロックに含まれる各物理ページのデータが有効か否かを示すページバリッドとを管理する管理情報テーブルとを有するものとする。
まず、NANDコントローラ6aが実行する読出し・書込み制御について説明する。例えば、NANDコントローラ6aは、図3中(f)に示すように、I/Oハブ4から読出し要求を受信する。すると、NANDコントローラ6aは、読出し・書込み制御を実行する。まず、NANDコントローラ6aは、図3中(g)に示すように、アドレス変換テーブルを用いて論理アドレスを物理アドレスに変換する。
そして、NANDコントローラ6aは、図3中(h)に示すように、変換後の物理アドレスを用いて、デバイスアクセス制御を実行する。詳細には、NANDコントローラ6aは、図3中(i)に示すように、変換後の物理アドレスが示す記憶領域からデータの読出しを行う。この結果、NANDコントローラ6aは、図3中(j)に示すように、読出し対象のデータと、読出し対象のデータからエラーを検出するためのECC(Error Check and Correction)ビットとを取得する。
また、NANDコントローラ6aは、図3中(k)に示すように、取得したECCビットを用いて、読出し対象のデータからエラーの検出、および、訂正を実行する。そして、NANDコントローラ6aは、図6中(l)に示すように、エラーの検出、および、訂正が終了したデータを取得し、データをI/Oハブ4に出力する。
また、NANDコントローラ6aは、I/Oハブ4から書込み要求を受信する。すると、NANDコントローラ6aは、図3中(m)に示すように、データの書込み対象となる物理ページを含む物理ブロックの物理ブロックアドレスと、現在の時刻を表すタイムスタンプとを対応付けて管理情報テーブルに格納する。そして、NANDコントローラ6aは、NANDデバイス7a〜10aに、データの書込みを行う。
次に、NANDコントローラ6aが実行するデータ移動制御について説明する。例えば、NANDコントローラ6aは、アプリケーションプログラムの指示や、所定の時間間隔で、以下のウェアレベリング処理を実行する。詳細には、NANDコントローラ6aは、図6中(n)に示すように、最後にデータの書込みが行われてから所定の時間が経過した物理ブロックの物理ブロックアドレスを取得する。そして、NANDコントローラ6aは、取得した物理ブロックアドレスが示す物理ブロックの各物理ページに格納されたデータを、有効なデータが格納されていない物理ブロックである予備ブロックに移動する。
また、NANDコントローラ6aは、以下のガベージコレクション処理を実行する。詳細には、NANDコントローラ6aは、図6中(n)に示すように、管理情報テーブルを参照し、所定の条件を満たす物理ブロック、例えば、格納されたデータのうち、有効なデータが閾値よりも少ない物理ブロックを特定する。そして、NANDコントローラ6aは、特定した物理ブロックに格納された有効なデータを予備ブロックに移動させる。その後、NANDコントローラ6aは、特定した物理ブロックの各データを消去して、データを書込み可能な予備ブロックとする。
ここで、NANDデバイス7a〜10aの素子は、劣化が進むと、電荷を適切に保持することができなくなる。また、NANDデバイス7a〜10aは、物理ブロック単位でデータの消去を行う。このため、NANDデバイス7a〜10aの素子は、劣化が進んだ素子を含む物理ブロックにデータが書込まれた場合は、書込まれたデータにビット化けを発生させる場合がある。
そこで、従来のNANDデバイスは、読出し対象のデータからエラーを検出した場合は、読出し対象のデータが格納された物理ページを含む物理ブロックを特定し、特定した物理ブロックに格納された全ての有効データを予備ブロックに移動する。そして、NANDデバイスは、特定した物理ブロックを使用しないように、データの書込み対象から除外し、あらかじめ用意した代替用の物理ブロックをデータの書込み対象に追加する。
しかしながら、エラーが検出されたデータが格納された物理ページを含む物理ブロックに格納された全ての有効データを他の物理ブロックに移動する技術では、NANDデバイス7a〜10aに対して過剰な読出し処理、および、書込み処理が実行される。特に、NANDデバイス7a〜10aに対するデータの書込み処理には、時間を要する。
このように、データの移動が行われている間は、NANDデバイス7a〜10aに対する通常の読出し処理や書込み処理の実行が阻害されるので、従来のNANDコントローラは、NANDデバイス7a〜10aの性能を悪化させるという問題がある。また、従来のNANDコントローラは、NANDデバイス7a〜10aに対して過剰な書込み処理を実行するので、NANDデバイス7a〜10aの素子を劣化させてしまう結果、NANDデバイス7a〜10aの寿命を悪化させてしまう。
なお、エラーが検出された物理ページを含む物理ブロック全体でエラーが発生する確率を推定して、推定した確率が所定の閾値よりも低い場合は、データの移動を行わないことで、データの移動時間を削減する手法が考えられる。しかしながら、係る処理をハードウェアで実現するのは困難である。
そこで、NANDコントローラ6aは、以下の処理を実行する。まず、NANDコントローラ6aは、読出したデータからエラーを検出した場合は、読出したデータが格納された物理ページを含む所定の領域であって、エラーの発生が推定される領域を識別する。例えば、NANDコントローラ6aは、読出したデータが格納された物理ページを含む物理ブロックを識別する。
また、NANDコントローラ6aは、識別した領域に含まれる各物理ページから、データの読出しを個別に実行する。なお、以下の説明では、エラーの発生が推定される領域に含まれる各物理ページから個別にデータの読出しを行う処理を、検査読出と記載する。そして、NANDコントローラ6aは、検査読出によって読出されたデータからエラーを検出した場合は、検査読出の対象となった物理ページのデータを、他の物理ページに移動する。
すなわち、NANDコントローラ6aは、読出したデータからエラーが検出された場合は、エラーの発生が推定される領域に含まれる各物理ページから、個別にデータの検査読出を実行する。そして、NANDコントローラ6aは、検査読出の結果、エラーが検出された物理ページのデータのみを、他の物理ページに移動する。このため、NANDコントローラ6aは、過剰なデータの読出し処理や書込み処理を削減できるので、NANDデバイス7a〜10aの性能や寿命が悪化するのを防ぐことができる。
次に、図4を用いて、NANDコントローラ6aが有する機能構成の一例について説明する。なお、以下の説明では、NANDコントローラ6aが有する機能のうち、エラーの発生が推定される領域に含まれる物理ページに対し、個別に検査読出を実施し、エラーが検出された物理ページのデータを他の物理ページに移動する処理の流れについて説明する。
図4は、実施例1に係るNANDコントローラの機能構成を説明する図である。図4に示す例では、NANDコントローラ6aは、テーブル記憶部11、リクエスタインターフェース部12、リクエスト調停部13、テーブル制御部14、デバイスアクセス制御部15を有する。また、NANDコントローラ6aは、エラー検出部16、エラーログ記憶部17、検査読出制御部18、データ移動制御部19を有する。また、テーブル記憶部11は、アドレス変換テーブル20、管理情報テーブル21を記憶する。
まず、図5、図6を用いて、テーブル記憶部11が記憶するアドレス変換テーブル20と、管理情報テーブル21に格納された情報について説明する。図5は、実施例1に係るアドレス変換テーブルに格納された情報の一例を説明する図である。図5に示すように、アドレス変換テーブル20には、論理アドレスと、物理アドレスとが対応付けて格納されている。
例えば、図5に示す例では、アドレス変換テーブル20には、論理アドレス「L0−0」と物理アドレス「P4−0」とが対応付けて格納されている。すなわち、アドレス変換テーブル20は、物理アドレス「P4−0」が示す物理ページに論理アドレス「L0−0」が指定するデータが格納されている旨を示す。
同様に、図5に示す例では、アドレス変換テーブル20には、論理アドレス「L0−1」と物理アドレス「P3−3」とが対応付けて格納され、論理アドレス「L0−2」と物理アドレス「P2−2」とが対応付けて格納される。また、アドレス変換テーブル20には、論理アドレス「L0−3」と物理アドレス「P4−3」とが対応付けて格納される。なお、アドレス変換テーブル20には、他にも、論理アドレスと物理アドレスとが対応付けて格納されているものとする。
次に、図6を用いて、管理情報テーブル21に格納される情報について説明する。図6は、実施例1に係る管理情報テーブルに格納された情報の一例を説明する図である。図6に示すように、管理情報テーブル21には、物理ブロックアドレスと、ページバリッドと、タイムスタンプとが対応付けて記憶される。
ここで、ページバリッドとは、対応付けられた物理ブロックアドレスが示す物理ブロックの各物理ページに格納されたデータが、有効なデータであるか否かを示すビット列である。例えば、管理情報テーブル21は、1つの物理ブロックに、n個の物理ページが含まれる場合は、nビットのビット列をページバリッドとする。また、管理情報テーブル21は、物理ブロックに含まれる各物理ページとページバリッドの各ビットとを対応付け、有効なデータが格納された物理ページと対応付けたビットを「1」とする。また、管理情報テーブル21は、有効なデータが格納されていない物理ページと対応付けたビットを「0」とする。
また、タイムスタンプとは、対応付けられた物理ブロックアドレスが示す物理ブロックにデータが格納された時刻を示す情報である。例えば、図6に示す例では、管理情報テーブル21には、物理ブロックアドレス「P0」と、ページバリッド「1101…」と、タイムスタンプ「10516」とが対応付けて格納される。すなわち、管理情報テーブル21は、物理ブロックアドレス「P0」が示す物理ブロックに含まれる物理ページのうち、物理ページ番号が「0」、「1」、「3」等の物理ページに格納されたデータが有効データである旨を示す。また、管理情報テーブル21は、物理ブロックアドレス「P0」が示す物理ブロックに対して、時刻が「10516」である際に、データの書込みが行われた旨を示す。
同様に、図6に示す例では、管理情報テーブル21には、物理ブロックアドレス「P1」と、ページバリッド「1010…」と、タイムスタンプ「912」とが対応付けて格納される。また、管理情報テーブル21には、物理ブロックアドレス「P2」と、ページバリッド「0001…」と、タイムスタンプ「1229」とが対応付けて格納される。なお、管理情報テーブル21には、他にも、物理ブロックアドレスとページバリッドとタイムスタンプとが対応付けて格納されているものとする。
図4に戻り、リクエスタインターフェース部12は、CPU3a、3bからNANDデバイス7a〜10aに対するリクエストのインターフェースである。例えば、リクエスタインターフェース部12は、CPU3a、3bからI/Oハブ4を介して、論理アドレスを含む読出し要求を受信する。かかる場合は、リクエスタインターフェース部12は、読出し要求をリクエスト調停部13に出力する。また、リクエスタインターフェース部12は、NANDデバイス7a〜10aから読出したデータをリクエスト調停部13から受信すると、読出し要求の発行元となるCPU3a、3bに対して、データを送信する。
また、リクエスタインターフェース部12は、CPU3a、3bから、NANDデバイス7a〜10aに対して書込むデータと、書込み対象となるデータの論理アドレスとを含む書込み要求を受信する。かかる場合は、リクエスタインターフェース部12は、受信した書込み要求をリクエスト調停部13に出力する。また、リクエスタインターフェース部12は、リクエスト調停部13から、データ書込みが完了した旨の応答を受信すると、書込み要求の発行元となるCPU3a、3bに対して、応答を送信する。
リクエスト調停部13は、リクエスタインターフェース部12、検査読出制御部18、データ移動制御部19が発行する各種リクエストの調停を行う。詳細には、リクエスト調停部13は、リクエスタインターフェース部12から受信する読出し要求、又は、書込み要求を受信する。また、リクエスト調停部13は、検査読出制御部18から、データの検査読出を要求する検査読出要求を受信する。また、リクエスト調停部13は、データ移動制御部19から、NANDデバイス7a〜10aが記憶するデータの移動を要求する移動要求を受信する。
そして、リクエスト調停部13は、リクエスタインターフェース部12、検査読出制御部18、データ移動制御部19から受信する読出し要求、書込み要求、検査読出要求、移動要求の調停を行う。例えば、リクエスト調停部13は、CPU3a、3bからNANDデバイス7a〜10aに対するデータの読出しや書込みが阻害されないよう、リクエスタインターフェース部12が発行する読出し要求、および、書込み要求を最優先で実行する。なお、リクエスト調停部13が各要求を調停するルールについては、上述した処理に限定されるものではなく、任意のルールを適用してよい。
次に、リクエスト調停部13が読出し要求、書込み要求、検査読出要求、移動要求を受信した際に実行する処理の一例を説明する。例えば、リクエスト調停部13は、読出し要求を受信すると、読出し要求に含まれる論理アドレスをテーブル制御部14に出力する。そして、リクエスト調停部13は、テーブル制御部14から、読出し対象となる物理アドレスを受信すると、受信した物理アドレスを格納した読出し要求をデバイスアクセス制御部15に発行する。その後、リクエスト調停部13は、読出し対象となるデータをエラー検出部16から受信すると、受信したデータをリクエスタインターフェース部12に出力する。一方、リクエスト調停部13は、エラー検出部16からデータの読出しに失敗した旨の通知を受信した場合は、リクエスタインターフェース部12に対し、データの読出しに失敗した旨を通知する。
また、リクエスト調停部13は、書込み要求を受信すると、書込み要求に含まれる論理アドレスをテーブル制御部14に出力する。この結果、リクエスト調停部13は、書込み対象のデータが新たなデータである場合は、データが格納されていない予備ブロックのうち、データの書込み先となる物理ページの物理アドレスをテーブル制御部14から受信する。
その後、リクエスト調停部13は、テーブル制御部14から受信した物理アドレスと、書込み対象のデータとを含む書込み要求をデバイスアクセス制御部15に発行する。また、リクエスト調停部13は、データの書込み先となる物理ページの物理アドレスと、書込み要求に含まれる論理アドレスとを含むテーブル更新要求をテーブル制御部14に出力する。
また、リクエスト調停部13は、書込みがデータの更新を目的とする場合は、更新元のデータが格納された物理ページの物理アドレスを更新元物理アドレスとしてテーブル制御部14から受信する。また、リクエスト調停部13は、テーブル制御部14から、予備ブロックに含まれる物理ページの物理アドレス、すなわちデータの書込み先となる物理ページの物理アドレスを更新先物理アドレスとして受信する。
そして、リクエスト調停部13は、更新元物理アドレスと、更新先物理アドレスとをテーブル制御部14から受信した場合は、データの更新を要求する更新要求をデバイスアクセス制御部15に発行する。詳細には、リクエスト調停部13は、更新元物理アドレスと、更新先物理アドレスと、書込むデータとを含む更新要求をデバイスアクセス制御部15に発行する。
また、リクエスト調停部13は、更新元物理アドレスと、更新先物理アドレスと、書込み要求に含まれる論理アドレスとを含むテーブル更新要求をテーブル制御部14に出力する。その後、リクエスト調停部13は、デバイスアクセス制御部15からデータの書込みが完了した旨の応答を受信すると、受信した応答をリクエスタインターフェース部12に出力する。
また、リクエスト調停部13は、検査読出制御部18から、読出し対象のデータが格納された物理ページの物理アドレスを含む検査読出要求を受信する。かかる場合は、リクエスト調停部13は、受信した検査読出要求をデバイスアクセス制御部15に出力する。また、リクエスト調停部13は、エラー検出部16から、検査読出を行った旨の応答を受信すると、応答を検査読出制御部18に出力する。
また、リクエスト調停部13は、データ移動制御部19から、移動対象のデータが格納された物理ページの物理アドレスを含む移動要求を受信する。以下、移動対象のデータが格納された物理アドレスを移動元物理アドレスと記載する。また、リクエスト調停部13は、テーブル制御部14に問い合わせる等して、予備ブロックの物理ブロックアドレス、すなわちデータの移動先となる物理ページの物理アドレスを取得する。以下、データの移動先となる物理ページの物理アドレスを移動先物理アドレスと記載する。
そして、リクエスト調停部13は、移動元物理アドレスと、移動先物理アドレスとを含む移動要求をデバイスアクセス制御部15に発行する。また、リクエスト調停部13は、移動元物理アドレスと、移動先物理アドレスとを含むテーブル更新要求をテーブル制御部14に出力する。その後、リクエスト調停部13は、デバイスアクセス制御部15からデータの移動が完了した旨の応答を受信すると、データ移動制御部19に対して、データの移動が完了した旨の応答を出力する。
テーブル制御部14は、論理アドレスを物理アドレスに変換する。例えば、テーブル制御部14は、リクエスト調停部13から読出し要求に格納された論理アドレスを受信すると、受信した論理アドレスと対応付けられた物理アドレスをアドレス変換テーブル20から取得する。そして、テーブル制御部14は、取得した物理アドレスをリクエスト調停部13に出力する。
また、テーブル制御部14は、リクエスト調停部13から書込み要求に格納された論理アドレスを受信すると、受信した論理アドレスと対応付けられた物理アドレスをアドレス変換テーブル20から検索する。そして、テーブル制御部14は、受信した論理アドレスと対応付けられた物理アドレスがアドレス変換テーブル20に格納されていない場合、すなわち、書込み対象のデータが新たなデータである場合は、以下の処理を実行する。
まず、テーブル制御部14は、管理情報テーブル21を参照し、ページバリッドの各ビットが全て「0」であるバリッドビットと対応付けられた物理ブロックアドレスを検索し、検出した物理ブロックアドレスを予備ブロックの物理ブロックアドレスとして取得する。そして、テーブル制御部14は、取得した物理ブロックアドレスに含まれる物理ページから、データの書込み対象とする物理ページを選択し、選択した物理ページを示す物理アドレスをリクエスト調停部13に出力する。
一方、テーブル制御部14は、受信した論理アドレスと対応付けられた物理アドレスがアドレス変換テーブル20に格納されている場合、すなわち、書込みがデータの更新を目的とする場合は、以下の処理を実行する。まず、テーブル制御部14は、受信した論理アドレスと対応付けられた物理アドレスを更新元物理アドレスとしてリクエスト調停部13に出力する。
また、テーブル制御部14は、管理情報テーブル21を参照して予備ブロックの物理ブロックアドレスを取得し、予備ブロックの物理ブロックアドレスが示す物理ブロックからデータの書込み先とする物理ページを選択する。そして、テーブル制御部14は、選択した物理ページを示す物理アドレスを更新先物理アドレスとしてリクエスト調停部13に出力する。
また、テーブル制御部14は、リクエスト調停部13が移動要求を受信した際には、リクエスト調停部13から予備ブロックの物理アドレスの問い合わせを受ける。かかる場合は、テーブル制御部14は、管理情報テーブル21を参照して予備ブロックの物理ブロックアドレスを取得し、予備ブロックの物理ブロックアドレスが示す物理ブロックからデータの書込み先とする物理ページを選択する。そして、テーブル制御部14は、選択した物理ページを示す物理アドレスを移動先物理アドレスとしてリクエスト調停部13に出力する。
また、テーブル制御部14は、データの書込みや移動に応じて、アドレス変換テーブル20、および、管理情報テーブル21の更新を行う。例えば、テーブル制御部14は、リクエスト調停部13が新たなデータの書込みを行う場合は、データの書込み先となる物理ページの物理アドレスと、書込み要求に含まれる論理アドレスとを含むテーブル更新要求を受信する。かかる場合は、テーブル制御部14は、テーブル更新要求に含まれる論理アドレスと物理アドレスとを対応付けてアドレス変換テーブル20に格納する。
また、テーブル制御部14は、テーブル更新要求に含まれる物理アドレスから物理ブロックアドレスと物理ページ番号とを抽出し、管理情報テーブル21のエントリのうち、抽出した物理ブロックアドレスが格納されたエントリを識別する。そして、テーブル制御部14は、識別したエントリのページバリッドのうち、抽出した物理ページ番号に対応するページバリッドを「1」に更新する。また、テーブル制御部14は、現在の時刻を示すタイムスタンプを、抽出したエントリに格納する。
また、テーブル制御部14は、リクエスト調停部13がデータの更新を行う場合は、更新元物理アドレスと、更新先物理アドレスと、書込み要求に含まれる論理アドレスとを含むテーブル更新要求を受信する。かかる場合は、テーブル制御部14は、テーブル更新要求に含まれる論理アドレスが格納されたエントリをアドレス変換テーブル20から識別する。そして、テーブル制御部14は、識別したエントリの物理アドレスを、更新先物理アドレスに更新する。
また、テーブル制御部14は、更新元物理アドレスから更新元物理ブロックアドレスと更新元物理ページ番号とを抽出し、管理情報テーブル21から、抽出した更新元物理ブロックアドレスが格納されたエントリを識別する。そして、テーブル制御部14は、識別したエントリに格納されたページバリッドのうち、抽出した更新元物理ページ番号に対応するページバリッドを「0」に更新する。
また、テーブル制御部14は、更新先物理アドレスから更新先物理ブロックアドレスと更新先物理ページ番号とを抽出し、管理情報テーブル21から、抽出した更新先物理ブロックアドレスが格納されたエントリを識別する。そして、テーブル制御部14は、識別したエントリに格納されたページバリッドのうち、抽出した更新先物理ページ番号に対応するページバリッドを「1」に更新する。
また、テーブル制御部14は、リクエスト調停部13がデータの移動を行う場合は、移動元物理アドレスと、移動先物理アドレスとを含むテーブル更新要求を受信する。かかる場合は、テーブル制御部14は、移動元物理アドレスが格納されたエントリをアドレス変換テーブル20から抽出する。そして、テーブル制御部14は、抽出したエントリに格納された移動元物理アドレスを、移動先物理アドレスに更新する。
また、テーブル制御部14は、移動元物理アドレスから移動元物理ブロックアドレスと移動元物理ページ番号とを抽出し、管理情報テーブル21から、抽出した移動元物理ブロックアドレスが格納されたエントリを識別する。そして、テーブル制御部14は、識別したエントリに格納されたページバリッドのうち、抽出した移動元物理ページ番号に対応するページバリッドを「0」に更新する。
また、テーブル制御部14は、移動先物理アドレスから移動先物理ブロックアドレスと移動先物理ページ番号とを抽出し、管理情報テーブル21から、抽出した移動先物理ブロックアドレスが格納されたエントリを識別する。そして、テーブル制御部14は、識別したエントリに格納されたページバリッドのうち、抽出した移動先物理ページ番号に対応するページバリッドを「1」に更新する。
デバイスアクセス制御部15は、リクエスト調停部13からの各種リクエストに従って、NANDデバイス7a〜10aに対するデバイスアクセスを実行する。例えば、デバイスアクセス制御部15は、リクエスト調停部13から、物理アドレスを含む読出し要求を受信する。かかる場合は、デバイスアクセス制御部15は、NANDデバイス7a〜10aが有する物理ページのうち、読出し要求に格納されていた物理アドレスが示す物理ページに格納されたデータの読み出しを実行する。そして、デバイスアクセス制御部15は、読み出したデータを読出し対象データとして、読出し要求に含まれる物理アドレスとともに、エラー検出部16に出力する。
また、例えば、デバイスアクセス制御部15は、リクエスト調停部13から、物理アドレスと、書込み対象のデータとを含む書込み要求を受信する。かかる場合は、デバイスアクセス制御部15は、書込み要求に含まれる物理アドレスが示す物理ページに書込み対象のデータを格納する。その後、デバイスアクセス制御部15は、データの書込みを終了した旨の応答をリクエスト調停部13に出力する。
また、例えば、デバイスアクセス制御部15は、更新元物理アドレスと、更新先物理アドレスと、書込むデータとを含む更新要求をリクエスト調停部13から受信する。かかる場合は、デバイスアクセス制御部15は、更新元物理アドレスが示す物理ページのデータを読み出す。続いて、デバイスアクセス制御部15は、読み出したデータを更新要求に含まれるデータに更新する。
そして、デバイスアクセス制御部15は、更新したデータを、更新先物理アドレスが示す物理ページに格納する。その後、デバイスアクセス制御部15は、データの書込みを終了した旨の応答をリクエスト調停部13に出力する。
また、デバイスアクセス制御部15は、移動元物理アドレスと、移動先物理アドレスとを含む移動要求をリクエスト調停部13から受信する。かかる場合は、デバイスアクセス制御部15は、移動元物理アドレスが示す物理ページからデータの読み出しを行う。そして、デバイスアクセス制御部15は、読み出したデータを移動対象データとして、エラー検出部16に出力する。さらに、デバイスアクセス制御部15は、移動先物理アドレスが示す物理ページに、エラー検出部16から返送されたエラーの検出・訂正を行ったデータを格納する。その後、デバイスアクセス制御部15は、データの移動を終了した旨の応答をリクエスト調停部13に出力する。
また、デバイスアクセス制御部15は、物理アドレスを含む検査読出要求をリクエスト調停部13から受信する。かかる場合は、デバイスアクセス制御部15は、NANDデバイス7a〜10aが有する物理ページのうち、検査読出要求に格納されていた物理アドレスが示す物理ページに格納されたデータの読み出しを実行する。そして、デバイスアクセス制御部15は、読み出したデータと、検査読出要求に含まれる物理アドレスとを検査読出対象データとしてエラー検出部16に出力する。
エラー検出部16は、NANDデバイス7a〜10aから読出したデータからエラーの検出を行う。例えば、エラー検出部16は、デバイスアクセス制御部15から読出し対象データと物理アドレスとを受信する。かかる場合は、エラー検出部16は、例えば、読出し対象データの末尾に付加されるECCビットを用いて、読出し対象データからエラーの検出を行う。そして、エラー検出部16は、読出し対象データからエラーが検出されなかった場合は、リクエスト調停部13に対し、読出し対象データを出力する。
一方、エラー検出部16は、読出し対象データからエラーを検出した場合は、ECCビットを用いて、エラーの訂正を試みる。そして、エラー検出部16は、エラーを訂正した場合は、訂正後のデータをリクエスト調停部13に出力する。一方、エラー検出部16は、エラーを訂正できなかった場合は、データの読出しに失敗した旨の通知をリクエスト調停部13に出力する。
また、エラー検出部16は、読出し対象データからエラーを検出した場合は、以下の処理を実行する。まず、エラー検出部16は、エラーが検出されたデータが格納された物理ページの物理アドレスをデータ移動制御部19に通知する。また、エラー検出部16は、エラーが検出されたデータが格納された物理ページの物理アドレスから物理ブロックアドレスを抽出する。そして、エラー検出部16は、物理ブロックアドレスをエラーログ記憶部17に格納する。
また、エラー検出部16は、デバイスアクセス制御部15から移動対象データを受信した場合は、移動対象データの末尾に付加されるECCビットを用いて、移動対象データからエラーの検出を行う。そして、エラー検出部16は、エラーが検出されなかった場合は、データを変更せずにデバイスアクセス制御部15に返送する。
一方、エラー検出部16は、移動対象データからエラーを検出した場合は、ECCビットを用いて、エラーの訂正を試みる。そして、エラー検出部16は、エラーを訂正した場合は、訂正後のデータをデバイスアクセス制御部15に返送する。一方、エラー検出部16は、エラーを訂正できなかった場合は、データを変更せずにデバイスアクセス制御部15に返送する。
また、エラー検出部16は、デバイスアクセス制御部15から検査読出対象データと物理アドレスとを受信した場合は、以下の処理を実行する。まず、エラー検出部16は、検査読出対象データの末尾に付加されるECCビットを用いて、検査読出対象データからエラーの検出を行う。そして、エラー検出部16は、エラーが検出されなかった場合は、検査読出を行った旨の応答をリクエスト調停部13に出力する。一方、エラー検出部16は、エラーが検出された場合は、受信した物理アドレスをデータ移動制御部19に出力する。その後、エラー検出部16は、検査読出を行った旨の応答をリクエスト調停部13に出力する。
例えば、エラー検出部16は、物理アドレス「P0−1」とともに受信した読出し対象データからエラーを検出した場合は、物理ブロックアドレス「P0」をエラーログ記憶部17に格納し、物理アドレス「P0−1」をデータ移動制御部19に出力する。一方、エラー検出部16は、物理アドレス「P0−1」とともに受信した検査読出対象データからエラーを検出した場合は、物理アドレス「P0−1」をデータ移動制御部19に出力する。
エラーログ記憶部17は、エラーの発生が推定される範囲を示す情報を記憶する。例えば、エラーログ記憶部17は、読出されたデータのうち、エラーが検出されたデータが格納されていた物理ページを含む物理ブロックの物理ブロックアドレスをエラーログとして記憶する。
検査読出制御部18は、エラーの発生が推定される範囲に含まれる各物理ページに対し、データの検査読出を個別に実行する検査読出制御を実行する。例えば、検査読出制御部18は、一定の時間間隔、または、アプリケーションプログラムからの指示を契機として、エラーログ記憶部17に記憶された物理ブロックアドレスを取得する。また、検査読出制御部18は、取得した物理ブロックアドレスに、物理ブロックの先頭に位置する物理ページの物理ページ番号を付加した物理アドレスを生成する。そして、検査読出制御部18は、生成した物理アドレスを含む検査読出要求をリクエスト調停部13に発行する。
また、検査読出制御部18は、リクエスト調停部13から検査読出を行った旨の応答を受信すると、取得した物理ブロックアドレスに、次番の物理ページ番号を付加した物理アドレスを生成する。そして、検査読出制御部18は、生成した物理アドレスを含む検査読出要求をリクエスト調停部13に発行する。すなわち、検査読出制御部18は、エラーが検出されたデータが格納された物理ブロックの各物理ページから、データを個別に読出しする。
また、検査読出制御部18は、取得した物理ブロックアドレスが示す物理ブロックの全物理ページに対して、検査読出要求を発行した場合は、取得した物理ブロックアドレスの次にエラーログ記憶部17が記憶する物理ブロックアドレスを取得する。そして、検査読出制御部18は、取得した物理ブロックアドレスが示す物理ブロックの全物理ページに対して、検査読出要求を、個別に発行する。
例えば、検査読出制御部18は、エラーログ記憶部17から、物理ブロックアドレス「P0」を取得すると、物理ページ番号「0」を付加した物理アドレス「P0−0」を含む検査読出要求を発行する。そして、検査読出制御部18は、物理アドレス「P0−0」を含む検査読出要求に対する応答を受信した場合は、物理ページ番号「1」を付加した物理アドレス「P0−1」を含む検査読出要求を発行する。そして、検査読出制御部18は、物理ブロックアドレス「P0」が示す全ての物理ページに対して、個別に検査読出要求を発行し、その後、応答を受信した場合は、エラーログ記憶部17から、新たな物理ブロックアドレスを取得する。
なお、検査読出制御部18は、有効なデータが格納された物理ページに対してのみ、検査読出要求を発行しても良い。例えば、検査読出制御部18は、リクエスト調停部13、テーブル制御部14を介して、管理情報テーブル21の各エントリのうち、取得した物理ブロックアドレスが格納されたエントリを取得し、取得したエントリのページバリッドを取得する。そして、検査読出制御部18は、取得したページバリッドの各ビットのうち、値が「1」のビットと対応付けられた物理ページに対してのみ、検査読出要求を発行しても良い。
データ移動制御部19は、エラーが検出されたデータを移動させる。例えば、データ移動制御部19は、読出し対象のデータのうち、エラーが検出されたデータが格納された物理ページの物理アドレスをエラー検出部16から受信する。また、データ移動制御部19は、検査読出対象のデータのうち、エラーが検出されたデータが格納された物理ページの物理アドレスをエラー検出部16から受信する。
かかる場合は、データ移動制御部19は、受信した物理アドレスを含む移動要求を生成し、生成した移動要求をリクエスト調停部13に出力する。例えば、データ移動制御部19は、エラー検出部16から、物理アドレス「P0−1」を受信した場合は、物理アドレス「P0−1」を移動元物理アドレスとする移動要求をリクエスト調停部13に発行する。この結果、NANDコントローラ6aは、読出し対象となるデータのうち、エラーが検出されたデータ、または、検査読出の対象となるデータのうち、エラーが検出されたデータの移動を実行する。
また、データ移動制御部19は、ウェアレベリング処理およびガベージコレクション処理を実行しても良い。例えば、データ移動制御部19は、所定の時間間隔や、アプリケーションからの指示を契機として、管理情報テーブル21の各エントリをリクエスト調停部13、および、テーブル制御部14を介して取得する。そして、データ移動制御部19は、取得したエントリに格納されたページバリッドとタイムスタンプとを用いて、取得したエントリのデータを移動させるか否か判定する。
例えば、データ移動制御部19は、取得したエントリのタイムスタンプと現在のタイムスタンプとの差分が所定の閾値よりも大きい場合は、取得したエントリのデータを移動させると判定してもよい。また、データ移動制御部19は、取得したエントリのページバリッドに含まれるビットのうち、値が「1」となるビットの数が所定の閾値よりも少ない場合は、取得したエントリのデータを移動させると判定してもよい。また、データ移動制御部19は、タイムスタンプの差分が所定の閾値よりも大きく、かつ、ページバリッドに含まれるビットのうち、値が「1」となるビットの数が所定の閾値よりも少ない場合は、データを移動させると判定してもよい。
そして、データ移動制御部19は、取得したエントリのデータを移動させると判定した場合は、取得したエントリに格納された物理ブロックアドレスと、ページバリッドとを用いて、有効なデータが格納された物理ページの物理アドレスを生成する。そして、データ移動制御部19は、生成した物理アドレスを含む移動要求をリクエスト調停部13に発行する。
次に、図7を用いて、エラーログ記憶部17の機能構成の一例について説明する。図7は、エラーログ記憶部の機能構成の一例を説明する図である。図7に示す例では、エラーログ記憶部17は、ポインタ記憶部17aと、エラーログキュー記憶部17dを有する。また、ポインタ記憶部17aには、ライトポインタ17bとリードポインタ17cとが格納されている。
エラーログキュー記憶部17dは、複数のエントリを有し、各エントリにエラーが検出されたデータが格納された物理ブロックの物理アドレスが格納されるリングバッファである。例えば、図7に示す例では、エラーログキュー記憶部17dのエントリには、「Block#39」、「Block#38」、「Block#01」、「Block#13」、「Block#95」が格納されている。なお、図7に記載の「empty」とは、エントリに有効な物理アドレスブロックが格納されていない旨を示す。
また、ライトポインタ17bは、エラーログキュー記憶部17dが有する各エントリのうち、新たな物理ブロックアドレスを格納するエントリを示す値である。また、リードポインタ17cとは、エラーログキュー記憶部17dが有する各エントリのうち、新たな検査読出の対象となる物理ブロックアドレスが格納されたエントリを示す値である。
例えば、図7に示す例では、エラー検出部16は、ポインタ記憶部17aが記憶するライトポインタ17bを参照し、エラーログキュー記憶部17dが有する各エントリのうち、物理ブロックアドレスの書込み先となるエントリを識別する。そして、エラー検出部16は、識別したエントリに物理ブロックアドレスの書き込みを行うとともに、ライトポインタ17bの値を1つインクリメントする。なお、エラー検出部16は、ライトポインタ17bの値を所定の値までインクリメントした場合は、ライトポインタ17bの値を初期値に戻す。
また、図7に示す例では、検査読出制御部18は、ポインタ記憶部17aが記憶するリードポインタ17cを参照し、エラーログキュー記憶部17dが有する各エントリのうち、物理ブロックアドレスの読出し対象となるエントリを識別する。そして、検査読出制御部18は、識別したエントリから物理ブロックアドレスを読出すとともに、リードポインタ17cの値を1つインクリメントする。なお、検査読出制御部18は、リードポインタ17cの値を所定の値までインクリメントした場合は、リードポインタ17cの値を初期値に戻す。
なお、エラーログキュー記憶部17dの全エントリに検査読出の対象となる物理ブロックアドレスが格納された場合は、ライトポインタ17bの値とリードポインタ17cの値とが一致する。このため、エラー検出部16は、ライトポインタ17bの値をインクリメントした結果、ライトポインタ17bの値とリードポインタ17cの値とが一致した場合は、新たな物理ブロックアドレスの格納を待機する。
また、検査読出制御部18が最後のエントリまで検査読出を行った場合は、リードポインタ17cの値とライトポインタ17bの値とが一致する。このため、検査読出制御部18は、リードポインタ17cの値をインクリメントした結果、ライトポインタ17bの値とリードポインタ17cの値とが一致した場合は、検査読出要求の発行を停止する。
なお、例えば、リクエスタインターフェース部12、リクエスト調停部13、テーブル制御部14、デバイスアクセス制御部15、エラー検出部16、検査読出制御部18、データ移動制御部19とは、電子回路である。ここで、電子回路の例として、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路、またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)などを適用する。
また、テーブル記憶部11、エラーログ記憶部17、ポインタ記憶部17a、エラーログキュー記憶部17dとは、RAM(Random Access Memory)、フラッシュメモリ(flash memory)などの半導体メモリ素子などの記憶装置である。
次に、図8を用いて、NANDコントローラ6aが実行する処理の流れについて説明する。図8は、NANDコントローラが実行する処理を説明する図である。例えば、NANDコントローラ6aは、図8中(A)に示すように、I/Oハブ4を介して、読出し要求や書込み要求を受信すると、読出し/書込み制御を実行する。例えば、NANDコントローラ6aは、読出し要求を受信すると、図8中(B)に示すように、アドレス変換テーブル20を参照して、論理アドレスと物理アドレスとのアドレス変換を実行する。
そして、NANDコントローラ6aは、図8中(C)に示すように、アドレス変換した物理アドレスを取得すると、図8中(D)に示すように、デバイスアクセス制御を実行しする。そして、NANDコントローラ6aは、図8中(E)に示すように、NANDデバイス7a〜10aに対する読出し要求を発行し、図8中(F)に示すように、読出し対象のデータを取得する。また、NANDコントローラ6aは、図8中(G)に示すように、エラーの検出制御を実行し、読出し対象のデータからエラーの検出や訂正を行う。
ここで、NANDコントローラ6aは、エラーが検出された場合は、図8中(H)に示すように、エラーが検出されたデータが格納された物理ブロックを示す物理ブロックアドレスをエラーログとして記憶する。また、NANDコントローラ6aは、検査読出制御を実行した場合は、図8中(I)に示すように、エラーログから検査読出の対象となる物理ブロックアドレスを取得する。そして、NANDコントローラ6aは、取得した物理ブロックアドレスが示す物理ブロックの各物理ページに対して、個別に検査読出要求を実行する。
また、NANDコントローラ6aは、図8中(J)に示すように、検査読出要求を発行した結果、読み出されたデータからエラーが検出された場合は、データ移動制御を実行する。詳細には、NANDコントローラ6aは、図8中(K)に示すように、管理情報テーブル21を参照し、図8中(L)に示すように、予備ブロックの物理アドレスを取得する。
そして、NANDコントローラ6aは、エラーが検出されたデータを、取得した物理アドレスが示す物理ページに移動させる。このように、NANDコントローラ6aは、エラーが検出されたデータが格納された物理ブロックに含まれる各物理ページを、それぞれ個別に検査読出の対象とする。このため、NANDコントローラ6aは、過剰なデータの移動を防ぐ結果、NANDデバイス7a〜10aの性能や寿命の悪化を防ぐことができる。
次に、図9を用いて、NANDコントローラ6aが実行する処理の流れについて説明する。図9は、実施例1に係るNANDコントローラが実行する処理の流れを説明するフローチャートである。例えば、NANDコントローラ6aは、エラーログ記憶部17を参照する(ステップS101)。そして、NANDコントローラ6aは、エラーログ記憶部17から検査読出を実行していない物理ブロックアドレスを1つ抽出し、抽出した物理ブロックアドレスが示す物理ブロックを検査対象ブロックとする(ステップS102)。
また、NANDコントローラ6aは、検査対象ブロックに含まれる物理ページを検査対象ページとして1つ選択する(ステップS103)。そして、NANDコントローラ6aは、検査対象ページのデータを読出し(ステップS104)、読出したデータからエラーが検出されたか否かを判定する(ステップS105)。
ここで、NANDコントローラ6aは、読出したデータからエラーが検出された場合は(ステップS105肯定)、読出したデータを他の物理ブロックに移動する(ステップS106)。一方、NANDコントローラ6aは、読出したデータからエラーが検出されなかった場合は(ステップS105否定)、ステップS106をスキップする。
また、NANDコントローラ6aは、検査対象ブロックの全ての物理ページに対して、データの読出しを完了したか判定する(ステップS107)。そして、NANDコントローラ6aは、全ての物理ページに対してデータの読出しを完了していない場合は(ステップS107否定)、読出しを実行していない物理ページを検査対象ページとして選択する(ステップS103)。
一方、NANDコントローラ6aは、全ての物理ページに対してデータの読出しを完了した場合は(ステップS107肯定)、エラーログ記憶部17が記憶する全エラーログに対して、検査読出を実行済みであるか判定する(ステップS108)。そして、NANDコントローラ6aは、全エラーログに対して、検査読出を実行済みである場合は(ステップS108肯定)、処理を終了する。一方、NANDコントローラ6aは、全エラーログの検査読出を実行していない場合は(ステップS108否定)、ステップS101を実行する。
[情報処理装置1の効果]
上述したように、情報処理装置1は、NANDデバイス7a〜10aから読み出されたデータからエラーの検出を行う。また、情報処理装置1は、読み出されたデータからエラーが検出された場合は、エラーが検出されたデータが書き込まれた物理ページを含み、エラーの発生が推定される所定の領域に含まれる各物理ページから、個別にデータの検査読出を実行する。そして、情報処理装置1は、個別に検査読出を行った結果、読出されたデータからエラーが検出された場合は、エラーが検出されたデータを、他の物理ページに移動させる。
このため、情報処理装置1は、エラーが検出されたデータの移動に伴う、過剰なデータの読出し処理や書込み処理を防ぐことができる。この結果、情報処理装置1は、エラーが検出されたデータの移動に伴うNANDデバイス7a〜10aの性能劣化を防ぐことができる。また、情報処理装置1は、NANDコントローラ6a〜6bに、複雑な機能を発揮するためのハードウェアを含めずともよい。例えば、NANDコントローラ6aは、エラーを検出するエラー検出部16、検査対象ブロックに対して個別に検査読出要求を発行する検査読出制御部18、エラーが検出されたデータを移動するデータ移動制御部19を備えればよい。このため、情報処理装置1は、検査読出制御、および、移動制御を、ハードウェアで容易に実現することができる。
ここで、データの消去は、物理ブロック単位で実行されるので、素子の劣化は、物理ブロック単位で進むと考えられる。この結果、エラーが発生したデータが格納された物理ブロックでは、エラーが発生し易いと考えられる。そこで、情報処理装置1は、読み出されたデータからエラーが検出された場合は、エラーが検出されたデータが書き込まれた物理ページを含む物理ブロックを識別し、識別した物理ブロックに含まれる各物理ページに対して、個別にデータの検査読出を実行する。この結果、情報処理装置1は、素子が劣化した物理ブロックによってエラーが拡大するのを防ぐことができる。
また、情報処理装置1は、検査読出の結果、エラーが検出されたデータを、元の物理ブロックとは異なる物理ブロックに移動させる。つまり、情報処理装置1は、エラーが発生し易いと考えられる物理ブロック以外の物理ブロックへデータを移動させる。このため、情報処理装置1は、素子が劣化した物理ページによってエラーが拡大するのを防ぐことができる。
また、情報処理装置1は、エラーが検出されたデータが格納された物理ブロックを示す物理ブロックアドレスをエラーログ記憶部17に格納する。そして、情報処理装置1は、エラーログ記憶部17に格納された物理ブロックアドレスが示す物理ブロックに含まれる各物理ページを、個別に検査読出の対象とする。このため、情報処理装置1は、任意のタイミング、例えば、読出し要求や書込み要求の発行が少ない夜間等、任意のタイミングで、エラーが検出されたデータの検査読出や移動を実行することができる。
上述したNANDコントローラ6aは、エラーログ記憶部17が記憶する全ての物理ブロックアドレスについて、検査読出制御を行うか否か判定した。しかし、実施例はこれに限定されるものではない。例えば、実施例2に係るNANDコントローラ6cは、1回の処理で、エラーログ記憶部17が記憶する一部の物理ブロックアドレスのみについて検査読出制御を行ってもよい。
以下、NANDコントローラ6cが実行する処理について説明する。まず、図10を用いて、NANDコントローラ6cの機能構成について説明する。図10は、実施例2に係るNANDコントローラの機能構成を説明する図である。なお、図10に示すNANDコントローラ6cの機能構成のうち、図4に示すNANDコントローラ6aの機能構成と同様の機能構成については、同一の符号を付し、説明を省略する。
図10に示す例では、NANDコントローラ6cは、検査読出制御部18aを有する。検査読出制御部18aは、検査読出制御部18と同様の機能を発揮する。また、検査読出制御部18aは、エラーログ記憶部17が記憶する物理ブロックアドレスのうち、リードポインタ17cが示すエントリに格納された物理ブロックアドレスから順に、検査読出制御を実行する。また、検査読出制御部18aは、検査読出制御を開始してから、所定の時間が経過した場合は、検査読出制御を終了する。
そして、検査読出制御部18aは、一定時間経過後、または、アプリケーションからの指示を契機として、検査読出制御を再開し、リードポインタ17cが示すエントリに格納された物理ブロックアドレスから、検査読出制御を再開する。すなわち、検査読出制御部18aは、最後に検査読出制御の対象とした物理ブロックアドレスの次にエラーログ記憶部17が記憶する物理ブロックアドレスから、検査読出制御を再開する。
以下、図11を用いて、NANDコントローラ6cが実行する処理の流れについて説明する。図11は、実施例2に係るNANDコントローラが実行する処理の流れを説明するフローチャートである。なお、図11に示す例では、NANDコントローラ6cが、検査読出制御の対象となる物理ブロックを、所定の時間内で区切る例について記載した。また、図11に示す処理のうち、ステップS201〜ステップS207の処理については、図9に示すステップS101〜ステップS107と同様の処理であるものとして、説明を省略する。
例えば、NANDコントローラ6cは、エラーログ記憶部17が記憶する全エラーログに対して、検査読出を実行済みであるか判定する(ステップS208)。そして、NANDコントローラ6cは、全エラーログに対して、検査読出を実行済みである場合は(ステップS208肯定)、処理を終了する。一方、NANDコントローラ6cは、全エラーログの検査読出を実行していない場合は(ステップS208否定)、検査読出制御を開始してから所定の時間が経過したか否かを判定する(ステップS209)。
そして、NANDコントローラ6cは、検査読出制御を開始してから所定の時間が経過した場合は(ステップS209肯定)、処理を終了する。一方、NANDコントローラ6cは、検査読出制御を開始してから所定の時間が経過していない場合は(ステップS209否定)、ステップS201を実行する。
なお、NANDコントローラ6cは、所定の時間内で検査読出制御を区切るのではなく、他の方法で検査読出制御を区切ってもよい。例えば、検査読出制御部18aは、エラーログ記憶部17が記憶する物理ブロックアドレスのうち、所定の数の物理ブロックアドレスについて、検査読出制御を実行した場合は、検査読出制御を終了する。そして、検査読出制御部18aは、一定時間経過後、または、アプリケーションからの指示を契機として、検査読出制御を再開してもよい。
かかる処理を実行する場合は、NANDコントローラ6cは、図11に示すステップS209にて、所定の時間が経過したか否かを判定するのではなく、所定の数の物理ブロックアドレスを検査読出制御の対象としたか否かを判定すれば良い。
[NANDコントローラ6cの効果]
上述したように、NANDコントローラ6cは、エラーログ記憶部17に格納された各物理ブロックアドレスに対して、順次検査読出制御を実行する。ここで、NANDコントローラ6cは、検査読出制御を開始してから、所定の時間が経過した場合は、検査読出制御を終了する。そして、NANDコントローラ6cは、検査読出制御の再開時は、最後に検査読出制御の対象とした物理ブロックアドレスの次に、エラーログ記憶部17が記憶する物理ブロックアドレスから、順次検査読出制御を実行する。
このため、NANDコントローラ6cは、検査読出制御を実行する際の処理時間を短縮することができる。この結果、NANDコントローラ6cは、例えば、情報処理装置1が処理を実行していない夜間等に、検査読出制御を実行する等、柔軟なスケジューリングを実現することができる。また、NANDコントローラ6cは、検査読出制御や、データの移動制御によってNANDデバイス7a〜10aにアクセスできない時間を短縮化するので、NANDデバイス7a〜10aに対するアクセス性能を向上させることができる。
また、NANDコントローラ6cは、エラーログ記憶部17に格納された各物理ブロックアドレスのうち、所定の数の物理ブロックアドレスに対して、検査読出制御を実行した場合は、検査読出制御を終了する。そして、NANDコントローラ6cは、検査読出制御の再開時は、最後に検査読出制御の対象とした物理ブロックアドレスの次に、エラーログ記憶部17が記憶する物理ブロックアドレスから、順次検査読出制御を実行する。
このため、NANDコントローラ6cは、検査読出制御を実行する際の処理時間を短縮し、柔軟なスケジューリングを実現できる。また、NANDコントローラ6cは、NANDデバイス7a〜10aに対するアクセス性能を向上させることができる。
上述したNANDコントローラ6a〜6cは、エラーログ記憶部17が記憶する各物理ブロックアドレスが示す物理ブロックに含まれる、全ての物理ページに対して、個別に検査読出要求を発行した。しかし、実施例は、これに限定されるものではない。例えば、NANDコントローラ6a〜6cは、ある物理ブロックの物理ページに対して、個別に検査読出要求を発行する際に、エラーが検出される頻度が所定の閾値を下回った場合は、検査読出制御の実行をキャンセルしてもよい。
以下、実施例3に係るNANDコントローラとして、個別に検査読出要求を発行する際に、エラーが検出される頻度が所定の閾値を下回った場合は、検査読出制御の実行をキャンセルするNANDコントローラ6dについて説明する。まず、図12を用いて、NANDコントローラ6dの機能構成について説明する。図12は、実施例3に係るNANDコントローラの機能構成を説明する図である。なお、図12に示すNANDコントローラ6dの機能構成のうち、図4に示すNANDコントローラ6aの機能構成と同様の機能構成については、同一の符号を付し、説明を省略する。
例えば、NANDコントローラ6dは、エラー検出部16aと、検査読出制御部18bと、エラー頻度計算部22とを有する。エラー検出部16aは、エラー検出部16と同様の機能を発揮する。また、エラー検出部16aは、検査読出対象データからエラーを検出した場合は、エラー頻度計算部22に対して、エラーが検出された旨を通知する。また、エラー検出部16aは、検査読出対象データからエラーが検出されなかった場合は、エラー頻度計算部22に対して、エラーが検出されなかった旨を通知する。
エラー頻度計算部22は、ある物理ブロックについて、検査読出制御が実行されている際に、エラー検出部16aがエラーを検出した頻度を算出する。そして、エラー頻度計算部22は、算出した頻度が、所定の閾値以下となった場合は、検査読出制御部18bに対し、検査読出制御を打ち切り、新たな物理ブロックに対する検査読出制御を実行するよう指示する。
例えば、エラー頻度計算部22は、エラーが検出されなかった旨の通知をエラー検出部16aから受信した数をカウントする。そして、エラー頻度計算部22は、カウントした数が所定の閾値を超えた場合は、検査読出制御部18bに対し、新たな物理ブロックに対する検査読出制御を実行するよう指示する。
また、他の例では、エラー頻度計算部22は、エラーが検出されなかった旨の通知の数と、エラーが検出された旨の通知の数との和、すなわち、検査読出された物理ページの数を計数する。そして、エラー頻度計算部22は、エラーが検出された旨の通知の数を検査読出要求が発行された物理ページの数で除算し、読出し1回あたりのエラー率を計算する。その後、エラー頻度計算部22は、算出したエラー率が所定の閾値を下回った場合は、検査読出制御部18bに対し、新たな物理ブロックに対する検査読出制御を実行するよう指示する。
また、エラー頻度計算部22は、検査読出制御部18bから新たな物理ブロックに対する検査読出制御を実行する旨の通知を受信した場合は、エラーが検出されなかった旨の通知の数や、エラーが検出された旨の通知の数をリセットする。この結果、エラー頻度計算部22は、検査読出制御の対象となる物理ブロックごとに、各物理ページから検査読出されたデータのエラー率を計算できる。
ここで、エラー頻度は、検査読出されたデータの数が少ない場合、すなわち、サンプル数が少ない場合には、確率的誤差が増大する。そこで、エラー頻度計算部22は、以下の処理を実行する。まず、エラー頻度計算部22は、エラーが検出された旨の通知の数とエラーが検出された旨の通知の数とを用いて、エラー頻度を算出する。
また、エラー頻度計算部22は、検査読出された物理ページの数が所定の数を超えたか否かを判定する。そして、エラー頻度計算部22は、検査読出された物理ページの数が所定の数を超えた場合は、計算したエラー頻度が所定の閾値を下回ったか否かを判定する。
そして、エラー頻度計算部22は、検査読出された物理ページの数が所定の数を超え、かつ、計算したエラー頻度が所定の閾値を下回った場合は、検査読出制御部18bに対し、新たな物理ブロックに対する検査読出制御を実行するよう指示する。このため、エラー頻度計算部22は、エラー頻度の確率的誤差を減少させる結果、偶発的にエラーが検出された物理ブロックに対する不要な検査読出制御をキャンセルさせることができる。
なお、エラー頻度計算部22が実行する処理のうち、検査読出された物理ページの数が所定の数を超えたか否かを判定する処理は、必ずしも必須の処理ではない。例えば、NANDコントローラ6aの実装や、NANDデバイス7a〜10aの性能等によっては、サンプル数が少なくとも、エラー頻度の確率的誤差があまり増大しない例も考えられる。かかる場合は、エラー頻度計算部22は、検査読出された物理ページの数が所定の数を超えたか否かを判定せずともよい。
検査読出制御部18bは、検査読出制御部18、または、検査読出制御部18aと同様の機能を発揮する。また、検査読出制御部18bは、新たな物理ブロックアドレスをエラーログ記憶部17から読み出して、検査読出制御を実行する場合は、エラー頻度計算部22に対して、新たな物理ブロックに対する検査読出制御を実行する旨の通知を出力する。
また、検査読出制御部18bは、エラー頻度計算部22から、新たな物理ブロックに対する検査読出制御を実行するよう指示された場合は、以下の処理を実行する。まず、検査読出制御部18bは、実行中の検査読出制御を打ち切り、エラーログ記憶部17から、物理ブロックアドレスを新たに読出す。そして、検査読出制御部18bは、新たに読出した物理ブロックアドレスに対し、検査読出処理を実行する。
このように、検査読出制御部18bは、ある物理ブロックに対する検査読出制御を実行中に、エラーの頻度が所定の閾値を下回った場合は、検査読出要求を発行していない物理ページが残っている場合にも、検査読出制御を打ち切る。そして、検査読出制御部18bは、新たな物理ブロックに対する検査読出制御を実行する。このため、検査読出制御部18bは、偶発的に発生したエラーにより検査読出制御の対象となった物理ブロックに対する検査読出制御をキャンセルできる。
ここで、検査読出制御部18bが、検査読出制御の対象となる物理ブロックに含まれる各物理ページに対し、物理ページ番号の順に、個別に検査読出要求を発行すると、エラーの分布に偏りがある際に、適切にエラー頻度を算出できなくなる場合がある。例えば、検査読出対象となる物理ブロックのうち、物理ページ番号が後半の物理ページに格納されたデータにエラーが生じている場合、物理ページ番号の順に検査読出要求を発行すると、エラーが検出される前にエラー頻度が所定の閾値を下回る。この結果、検査読出制御部18bは、検査読出対象となる物理ブロックにエラーが生じたデータが格納されているにも関わらず、検査読出制御を打ち切ってしまう。
そこで、検査読出制御部18bは、検査読出制御の対象となる物理ブロックに含まれる各物理ページのうち、検査読出を行っていない物理ページに対し、ランダムな順番で、個別に検査読出要求を発行する。例えば、検査読出制御部18bは、エラーログ記憶部17から取得した物理ブロックアドレスに、物理ページ番号と同じ桁数の乱数を付加することで、検査読出要求の発行対象となる物理アドレスを生成する。そして、検査読出制御部18bは、生成した物理アドレスを含む検査読出要求を発行する。この結果、検査読出制御部18bは、エラーの分布に偏りがある場合にも、エラー頻度を適切に計算させることができるので、誤った検査読出制御のキャンセルを行うことができる。
次に、図13を用いて、NANDコントローラ6dが実行する処理の流れについて説明する。図13は、実施例3に係るNANDコントローラが実行する処理の流れを説明するフローチャートである。なお、図13には、NANDコントローラ6dは、検査読出された物理ページの数が所定の数を超えたか否かを判定せずに、エラー頻度が所定の閾値を超えたか否かを判定する例について記載した。また、図13に示す処理のうち、ステップS301〜ステップS306、S309、S310の処理については、図9に示すステップS101〜ステップS106、S107、S108と同様の処理であるものとして、説明を省略する。
まず、NANDコントローラ6dは、ステップS305の処理、または、ステップS306の処理を実行すると、検査対象ブロックにおけるエラー頻度を計算する(ステップS307)。次に、NANDコントローラ6dは、計算したエラー頻度が、所定の閾値よりも小さいか否かを判定する(ステップS308)。
そして、NANDコントローラ6dは、計算したエラー頻度が、所定の閾値以上と判定した場合は(ステップS308否定)、検査対象ブロックの全物理ページに対して、データの読出しを完了したか判定する(ステップS309)。一方、NANDコントローラ6dは、計算したエラー頻度が、所定の閾値よりも小さいと判定した場合は(ステップS308肯定)、ステップS309の処理をスキップする。そして、NANDコントローラ6dは、エラーログ記憶部17が記憶する全てのエラーログについて、検査読出制御を実行したか判定する(ステップS310)。
[NANDコントローラ6dの効果]
上述したように、NANDコントローラ6dは、検査読出されたデータからエラーが検出された頻度を物理ブロックごとに算出する。そして、NANDコントローラ6dは、算出した頻度が、所定の閾値を下回った場合は、実行中の検査読出制御を打ち切り、新たな物理ブロックに対する検査読出制御を開始する。このため、NANDコントローラ6dは、データ読出し時に、偶発的に発生したエラーにより検査読出制御の対象となった物理ブロックに対する検査読出制御を打ち切ることができる。この結果、NANDコントローラ6dは、検査読出制御を効率良く実行することができる。
また、NANDコントローラ6dは、検査読出対象となる物理ブロックの各物理ページのうち、所定の数の物理ページからデータの検査読出を行い、かつ、エラー頻度が所定の閾値よりも小さくなった場合は、かかる物理ブロックに対する検査読出制御を打ち切る。そして、NANDコントローラ6dは、新たな物理ブロックに対する検査読出制御を開始する。このため、NANDコントローラ6dは、エラー頻度の確率的誤差を減少させる結果、物理ブロックに対する検査読出制御のスキップを適切に判定できる。
また、NANDコントローラ6dは、検査読出対象となる物理ブロックの各物理ページから、ランダムな順番で、検査読出を実行する。この結果、NANDコントローラ6dは、エラーの分布に偏りが存在する場合にも、エラー頻度を適切に算出できる結果、物理ブロックに対する検査読出制御のスキップを適切に判定できる。
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例4として本発明に含まれる他の実施例を説明する。
(1)データ移動の粒度について
上述したNANDコントローラ6a〜6dは、NANDデバイス7a〜10aが有する物理ページごとに、データを移動させるか否かを判定した。しかしながら、実施例はこれに限定されるものではない。すなわち、NANDコントローラ6a〜6dは、任意の単位でデータの移動を行うか否かを判定することができる。例えば、NANDコントローラ6a〜6dは、複数の物理ページに格納されたデータをひとまとめにして、検査読出制御や移動制御を行ってもよい。
(2)検査読出制御の範囲について
上述したNANDコントローラ6a〜6dは、読出し対象のデータからエラーが検出されると、エラーが検出されたデータが格納された物理ページを含む物理ブロックを検査読出制御の対象とした。しかしながら、実施例は、これに限定されるものではない。すなわち、NANDコントローラ6a〜6dは、読出し対象のデータからエラーが検出されると、データの消去単位や物理的に近接する範囲等、同様にエラーが検出されると推定される任意の範囲に含まれる物理ページを検査読出の対象とすればよい。
例えば、NANDコントローラ6a〜6dは、NANDデバイス7a〜10a内で、エラーが検出されたデータが格納された物理ページと物理的に近接する物理ページを検査読出制御の対象としてもよい。また、NANDコントローラ6a〜6dは、NANDデバイス7a〜10aがデータの消去を行う単位を検査読出制御の対象としてもよい。また、NANDコントローラ6a〜6dは、NANDデバイス7a〜10aがデータの読出しや書込みを行う粒度とは異なる粒度の範囲を検査読出制御の対象としても良い。
また、NANDコントローラ6a〜6dは、エラーが生じた物理ページを含む物理ブロックと隣接する物理ブロックのうち、エラーが生じた物理ページの物理ページ番号と同一の物理ページ番号が示す物理ページを検査読出の対象としてもよい。例えば、NANDコントローラ6a〜6dは、物理アドレス「P5−5」が示す物理ページのデータからエラーを検出した場合は、物理ブロックアドレス「P5」が示す物理ブロックの各物理ページを検査読出制御の対象とする。また、NANDコントローラ6a〜6dは、隣接する物理ブロックに含まれる物理ページのうち、物理アドレス「P5−5」と物理ページ番号とが一致する物理アドレス「P4−5」、「P6−5」が示す物理ページを検査読出制御の対象としてもよい。
また、NANDコントローラ6a〜6dは、エラーが生じた物理ページを含む物理ブロックのうち、エラーが生じた物理ページを中心とした所定の数の物理ページのみを検査読出の対象としてもよい。例えば、NANDコントローラ6a〜6dは、物理アドレス「P5−5」が示す物理ページのデータからエラーを検出した場合は、物理アドレス「P5−3」〜「P5−7」の範囲を検査読出制御の対象としてもよい。
(3)NANDコントローラ6a〜6dの機能構成について
上述したNANDコントローラ6a〜6dの機能構成は、あくまで一例であり、NANDコントローラ6a〜6dとして同様の処理を実行できるのであれば、任意の構成を採用することができる。例えば、NANDコントローラ6aは、検査読出制御部18とデータ移動制御部19との機能をまとめた制御回路を有してもよい。
また、NANDコントローラ6a〜6dは、エラーログ記憶部17を備えずとも検査読出制御や移動制御を実行できる。つまり、NANDコントローラ6a〜6dは、エラー検出部16がエラーを検出した際に、即座に検査読出制御を実行するのであれば、エラーログを記憶する必要はない。
なお、上述した例では、NANDコントローラ6a〜6dがNANDデバイス7a〜10aに格納されたデータの移動を判定する処理について記載した。しかしながら、実施例はこれに限定されるものではない。すなわち、NANDコントローラ6a〜6dは、データの移動を行うのであれば、任意の技術が適用された記憶媒体、例えばメモリ等のメモリコントローラとして動作してもよい。
(4)エラー記憶部について
上述したエラーログ記憶部17は、図7に例示するように、ライトポインタ17bとリードポインタ17cと複数のエントリを有するエラーログキュー記憶部17dとを有していた。しかしながら、実施例は、これに限定されるものではない。例えば、エラーログ記憶部17は、エラーが検出されたデータが格納された物理ブロックと、エラーが検出された旨を示すエラーフラグとを対応付けて記憶しても良い。
例えば、図14は、エラーログ記憶部のバリエーションを説明する図である。図14に示す例では、エラーログ記憶部17は、物理ブロックアドレスと対応付けられた複数のエントリを有する。また、エラーログ記憶部17は、各エントリに、エラーが検出された旨を示すエラーフラグを格納する。
例えば、図14に示す例では、物理ブロックアドレス「P0」、「P3」と対応付けられたエントリに、エラーフラグ「1」が格納されており、また、物理ブロックアドレス「P1」、「P2」と対応付けられたエントリにエラーフラグ「0」が格納されている。かかる場合は、エラーログ記憶部17は、物理ブロックアドレス「P0」、「P3」が示す物理ブロックが検査読出制御の対象であり、物理ブロックアドレス「P1」、「P2」が示す物理ブロックアドレスは、検査読出制御の対象ではない旨を示す。
なお、エラーログ記憶部17が、図14に示すエントリを有する場合は、エラー検出部16、および検査読出制御部18は、以下の処理を実行する。例えば、エラー検出部16は、読出し対象のデータからエラーを検出すると、読出し対象のデータが格納された物理ページの物理アドレスから物理ブロックアドレスを抽出する。
そして、エラー検出部16は、エラーログ記憶部17の各エントリのうち、抽出した物理ブロックアドレスと対応付けられたエントリに格納されたエラーフラグを「1」に更新する。また、検査読出制御部18は、エラーログ記憶部17の各エントリに格納されたエラーフラグを順番に確認し、エラーフラグが「1」であるエントリと対応付けられた物理ブロックアドレスが示す物理ブロックを、検査読出制御の対象とする。
(5)管理情報テーブルについて
例えば、NANDコントローラ6a〜6dは、エラーログ記憶部17が記憶するエラーログを管理情報テーブル21に含めてもよい。例えば、図15は、エラーログを含む管理情報テーブルの一例を説明する図である。図15に示す例では、管理情報テーブル21は、物理ブロックアドレス、ページバリッド、タイムスタンプ、および、エラーフラグを対応付けて記憶する。ここで、エラーフラグは、対応付けられた物理ブロックアドレスが示す物理ブロックのデータから、エラーが検出されたか否かを示す情報であり、図14に示すエラーフラグと同様の情報である。
なお、管理情報テーブル21が、図15に示す情報を記憶する場合は、エラー検出部16、および、検査読出制御部18は、以下の処理を実行する。例えば、エラー検出部16は、読出し対象のデータからエラーを検出すると、読出し対象のデータが格納された物理ページの物理アドレスから物理ブロックアドレスを抽出する。そして、エラー検出部16は、抽出した物理ブロックアドレスと対応付けられたエラーフラグを「1」に更新するように、リクエスト調停部13を介して、テーブル制御部14に依頼する。この結果、テーブル制御部14は、管理情報テーブル21を更新し、エラーが検出されたデータが格納された物理ブロックの物理ブロックアドレスにエラーフラグ「1」を対応付ける。
一方、検査読出制御部18は、管理情報テーブル21に格納された情報の閲覧要求を、エントリごとに、テーブル制御部14に発行する。すると、テーブル制御部14は、管理情報テーブル21に格納された情報を、検査読出制御部18に対して、エントリごとに応答する。そして、検査読出制御部18は、受信したエントリのエラーフラグが「1」である場合は、受信したエントリの物理ブロックアドレスが示す物理ブロックに対し、検査読出制御を実行する。一方、検査読出制御部18は、受信したエントリのエラーフラグが「0」である場合や、検査読出制御が終了した場合は、次のエントリに格納された情報の閲覧要求を、テーブル制御部14に発行する。
このように、NANDコントローラ6a〜6dは、管理情報テーブル21に、エラーログを記憶させた場合は、エラーログ記憶部17を不要とするので、回路規模を減少させることができる。
(6)リクエストの調停について
上述したNANDコントローラ6a〜6dは、I/Oハブ4から受信した読出し要求や書込み要求を優先して実行した。しかし、実施例はこれに限定されるものではなく、NANDコントローラ6a〜6dは、NANDデバイス7a〜10aの各セルの寿命が平準化するように、各リクエストの調停を行ってもよい。
(7)予備ブロックについて
上述したNANDコントローラ6a〜6dは、データが格納されていない予備ブロックをデータの移動先とした。しかしながら、実施例はこれに限定されるものではない。例えば、NANDコントローラ6a〜6dは、データの移動先を、移動元と異なる物理ブロックに限定せずともよい。また、NANDコントローラ6a〜6dは、例えば、データが格納されていない物理ページのうち、最も余命が長いブロックを識別する。そして、NANDコントローラ6a〜6dは、識別した物理ページにデータを移動してもよい。かかる処理を実行した場合は、NANDコントローラ6a〜6dは、NANDデバイス7a〜10aが有する各ブロックのセルの劣化を平準化し、寿命を使いきることができる。
(8)プログラム
上記の実施例で説明したNANDコントローラ6a〜6dが発揮する機能は、予め用意された制御プログラムをNANDコントローラ内の演算処理装置が実行することで実現してもよい。そこで、以下では、図16を用いて、上記のNANDコントローラ6aと同様の機能を有する制御プログラムを実行するコンピュータの一例について説明する。
図16は、制御プログラムを実行するNANDコントローラの一例を説明する図である。図16に示すように、NANDコントローラ6eは、CPU40、デバイスアクセス制御部15を有する。また、CPU40は、メモリデバイス11aと接続される。なお、メモリデバイス11aは、NANDコントローラ6eに内蔵されるメモリであってもよい。
メモリデバイス11aには、アドレス変換テーブル20、管理情報テーブル21、エラーログ23があらかじめ記憶される。ここで、CPU40が制御プログラム30を読出して展開して実行することにより、制御プログラム30は、以下の様に機能する。すなわち、制御プログラム30は、CPU40を、リクエスト調停部31、テーブル制御部32、エラー検出部33、検査読出制御部34、データ移動制御部35として動作させる。ここで、図16に示す制御プログラム30は、図4に示すリクエスト調停部13、テーブル制御部14、エラー検出部16、検査読出制御部18、データ移動制御部19と同様の機能をCPU40に発揮させる。
なお、上記の制御プログラム30は、CPU40に、読出したデータからエラーが検出されたデータが格納された物理ブロックの物理ブロックアドレスをエラーログ23として、メモリデバイス11a上に格納させる。そして、制御プログラム30は、CPU40に、エラーログ23としてメモリデバイス11aに格納させた物理ブロックアドレスが示す各物理ブロックに対して、検査読出制御を実行させる。また、NANDコントローラ6eは、CPUではなく、例えばMPUやFPGA等の演算装置を用いて制御プログラム30を実行しても良い。
また、上記の制御プログラム30については、例えば、メモリデバイス11aや、NANDデバイス7a〜10aに記憶させてもよいし、他の方法でCPU40に実行させてもよい。例えば、フレキシブルディスク、いわゆるFD(Flexible Disk)、CD(Compact Disk)−ROM、DVD(Digital Versatile Disk)、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。
そして、NANDコントローラ6eが各CPU3a、3bを介して、これらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、LAN、WAN(Wide Area Network)などを介して他のコンピュータまたはサーバ装置などに記憶させた各プログラムを取得して実行するようにしてもよい。
1 情報処理装置
2a、2b メモリ
3a、3b、40 CPU
4 I/Oハブ
5a、5b SSD
6a〜6e NANDコントローラ
7a〜10a、7b〜10b NANDデバイス
11 テーブル記憶部
11a メモリデバイス
12 リクエスタインターフェース部
13、31 リクエスト調停部
14、32 テーブル制御部
15 デバイスアクセス制御部
16、16a、33 エラー検出部
17 エラーログ記憶部
18〜18b、34 検査読出制御部
19、35 データ移動制御部
20 アドレス変換テーブル
21 管理情報テーブル
22 リクエスト数計測部
23 エラーログ
30 制御プログラム

Claims (12)

  1. 複数の記憶領域を有する記憶装置と、
    前記記憶装置が有する記憶領域から読出されたデータからエラーの検出を行う検出部と、
    前記検出部がエラーを検出した場合は、エラーが検出されたデータが書込まれた記憶領域を含むエラーの発生が推定される領域を識別し、当該識別した領域内の各記憶領域から、個別にデータの読出しを行う読出部と、
    前記読出部によって読み出されたデータからエラーが検出された場合は、当該データを他の記憶領域に移動させる移動部と
    を有することを特徴とする情報処理装置。
  2. 前記記憶装置は、複数の記憶領域を含むブロックごとに、書込まれたデータを消去し、
    前記読出部は、前記検出部がエラーを検出したデータが書き込まれた記憶領域を含むブロックの各記憶領域から、データの読出しを行うことを特徴とする請求項1に記載の情報処理装置。
  3. 前記移動部は、前記検出部が、前記読出部によって読み出されたデータからエラーを検出した場合は、当該データが格納された記憶領域を含むブロック以外のブロックへ、前記データを移動させることを特徴とする請求項1または2に記載の情報処理装置。
  4. 前記読出部によって読み出されたデータからエラーが検出された頻度を、前記読出部がデータの読出しを行うブロックごとに算出する頻度算出部を有し、
    前記読出部は、エラーが検出されたデータが書き込まれた記憶領域を含むブロックの各記憶領域からデータの読出しを行う際に、前記頻度算出部が算出する頻度が所定の閾値よりも小さくなった場合は、当該ブロックに含まれる記憶領域からデータを読み出す処理を中断することを特徴とする請求項2または3に記載の情報処理装置。
  5. 前記読出部は、エラーが検出されたデータが書き込まれた記憶領域を含むブロックの各記憶領域のうち、所定の数の記憶領域からデータの読出しを行い、かつ、前記頻度算出部が算出する頻度が所定の閾値よりも小さくなった場合は、当該ブロックに含まれる記憶領域からデータを読出す処理を中断することを特徴とする請求項4に記載の情報処理装置。
  6. 前記読出部は、前記ブロックに含まれる各記憶領域から、ランダムな順番で、個別にデータの読出しを行うことを特徴とする請求項2〜5のいずれか1つに記載の情報処理装置。
  7. 前記検出部によってエラーが検出されたデータが書込まれた記憶領域を含み、エラーの発生が推定される領域に含まれる各記憶領域を示す情報を記憶する記憶部を有し、
    前記読出部は、前記記憶部が記憶する情報が示す記憶領域から、データの読出しを行うことを特徴とする請求項1〜6のいずれか1つに記載の情報処理装置。
  8. 前記読出部は、前記記憶部が記憶する情報が示す記憶領域からデータの読出しを行う処理を開始してから所定の時間が経過した場合は、前記処理を停止し、前記処理の再開時は、最後に読出しを行った各記憶領域を示す情報の次に前記記憶部が記憶する情報を識別し、識別した情報が示す各記憶領域から、データの読出しを個別に行う処理を開始することを特徴とする請求項7に記載の情報処理装置。
  9. 前記読出部は、所定の数の情報について、前記記憶部が記憶する情報が示す記憶領域からデータの読出しを行う処理を実行した場合は、前記処理を停止し、前記処理の再開時は、最後に読出しを行った各記憶領域を示す情報の次に前記記憶部が記憶する情報を識別し、識別した情報が示す各記憶領域から、データの読出しを個別に行う処理を開始することを特徴とする請求項7に記載の情報処理装置。
  10. 複数の記憶領域を有する記憶装置から読出されたデータからエラーの検出を行う検出部と、
    前記検出部がエラーを検出した場合は、エラーが検出されたデータが書込まれた記憶領域を含むエラーの発生が推定される領域を識別し、当該識別した領域内の各記憶領域から個別にデータの読出しを行う読出部と、
    前記読出部によって読み出されたデータからエラーが検出された場合は、当該データを他の記憶領域に移動させる移動部と
    を有することを特徴とする制御回路。
  11. コンピュータに、
    複数の記憶領域を有する記憶装置から読出されたデータからエラーを検出し、
    前記記憶装置から読出されたデータからエラーが検出された場合は、エラーが検出されたデータが書込まれた記憶領域を含むエラーの発生が推定される領域を識別し、当該識別した領域内の各記憶領域から、データを個別に読出し、
    読出されたデータからエラーが検出された場合は、当該データを他の記憶領域に移動させる
    処理を実行させることを特徴とする制御プログラム。
  12. 情報処理装置が、
    複数の記憶領域を有する記憶装置から読出されたデータからエラーを検出し、
    前記記憶装置から読出されたデータからエラーが検出された場合は、エラーが検出されたデータが書込まれた記憶領域を含むエラーの発生が推定される領域を識別し、当該識別した領域内の各記憶領域から、データを個別に読出し、
    読出されたデータからエラーが検出された場合は、当該データを他の記憶領域に移動する
    処理を実行することを特徴とする制御方法。
JP2013110400A 2013-05-24 2013-05-24 情報処理装置、制御回路、制御プログラム、および制御方法 Active JP6102515B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013110400A JP6102515B2 (ja) 2013-05-24 2013-05-24 情報処理装置、制御回路、制御プログラム、および制御方法
EP14166167.8A EP2806362A1 (en) 2013-05-24 2014-04-28 Information processing device, control circuit, computer-readable recording medium for control program, and control method
US14/266,957 US20140351628A1 (en) 2013-05-24 2014-05-01 Information processing device, control circuit, computer-readable recording medium for control program, and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013110400A JP6102515B2 (ja) 2013-05-24 2013-05-24 情報処理装置、制御回路、制御プログラム、および制御方法

Publications (2)

Publication Number Publication Date
JP2014229216A true JP2014229216A (ja) 2014-12-08
JP6102515B2 JP6102515B2 (ja) 2017-03-29

Family

ID=50624464

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013110400A Active JP6102515B2 (ja) 2013-05-24 2013-05-24 情報処理装置、制御回路、制御プログラム、および制御方法

Country Status (3)

Country Link
US (1) US20140351628A1 (ja)
EP (1) EP2806362A1 (ja)
JP (1) JP6102515B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019057049A (ja) * 2017-09-20 2019-04-11 株式会社東芝 ビデオサーバ、及び放送システム

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10338817B2 (en) * 2014-12-30 2019-07-02 Sandisk Technologies Llc Systems and methods for storage recovery
US10157093B2 (en) * 2015-05-27 2018-12-18 Nxp Usa, Inc. Data integrity check within a data processing system
US10521119B1 (en) * 2017-09-22 2019-12-31 EMC IP Holding Company LLC Hybrid copying garbage collector
US11061754B2 (en) * 2019-08-06 2021-07-13 Alteryx, Inc. Error handling during asynchronous processing of sequential data blocks
CN114415941A (zh) * 2021-12-20 2022-04-29 深圳市联洲国际技术有限公司 存储信息的处理方法、存储系统及存储设备
US20230350574A1 (en) * 2022-04-27 2023-11-02 Micron Technology, Inc. Error Logging for a Memory Device with On-Die Wear Leveling

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003058432A (ja) * 2001-08-09 2003-02-28 Hitachi Ltd メモリカード及びメモリコントローラ
US20040156251A1 (en) * 2003-02-07 2004-08-12 Renesas Technology Corp. Nonvolatile memory system
WO2007025816A2 (de) * 2005-08-30 2007-03-08 Robert Bosch Gmbh Speicheranordnung und betriebsverfahren dafür
JP2008090778A (ja) * 2006-10-05 2008-04-17 Matsushita Electric Ind Co Ltd 不揮発性メモリ用メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、不揮発性メモリのメモリ制御方法
JP2009205578A (ja) * 2008-02-29 2009-09-10 Toshiba Corp 半導体記憶装置
US20100115325A1 (en) * 2008-10-30 2010-05-06 Jen-Wen Lin Method for accessing a flash memory, and associated memory device and controller thereof
US20100162081A1 (en) * 2008-12-24 2010-06-24 Seok Jin Joo Nonvolatile memory device and method of operating the same
US20100332895A1 (en) * 2009-06-30 2010-12-30 Gurkirat Billing Non-volatile memory to store memory remap information
US20110119431A1 (en) * 2009-11-13 2011-05-19 Chowdhury Rafat Memory system with read-disturb suppressed and control method for the same

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5473753A (en) 1992-10-30 1995-12-05 Intel Corporation Method of managing defects in flash disk memories
JP2007316779A (ja) 2006-05-23 2007-12-06 Sharp Corp 不揮発性メモリシステム
US8560922B2 (en) * 2011-03-04 2013-10-15 International Business Machines Corporation Bad block management for flash memory
US8589724B2 (en) * 2011-06-30 2013-11-19 Seagate Technology Llc Rapid rebuild of a data set
US8745323B2 (en) * 2011-09-01 2014-06-03 Dell Products L.P. System and method for controller independent faulty memory replacement

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003058432A (ja) * 2001-08-09 2003-02-28 Hitachi Ltd メモリカード及びメモリコントローラ
US20040156251A1 (en) * 2003-02-07 2004-08-12 Renesas Technology Corp. Nonvolatile memory system
JP2004240793A (ja) * 2003-02-07 2004-08-26 Renesas Technology Corp メモリシステム
WO2007025816A2 (de) * 2005-08-30 2007-03-08 Robert Bosch Gmbh Speicheranordnung und betriebsverfahren dafür
JP2009506445A (ja) * 2005-08-30 2009-02-12 ローベルト ボッシュ ゲゼルシャフト ミット ベシュレンクテル ハフツング 記憶装置構成およびその駆動方法
JP2008090778A (ja) * 2006-10-05 2008-04-17 Matsushita Electric Ind Co Ltd 不揮発性メモリ用メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、不揮発性メモリのメモリ制御方法
JP2009205578A (ja) * 2008-02-29 2009-09-10 Toshiba Corp 半導体記憶装置
US20100115325A1 (en) * 2008-10-30 2010-05-06 Jen-Wen Lin Method for accessing a flash memory, and associated memory device and controller thereof
US20100162081A1 (en) * 2008-12-24 2010-06-24 Seok Jin Joo Nonvolatile memory device and method of operating the same
US20100332895A1 (en) * 2009-06-30 2010-12-30 Gurkirat Billing Non-volatile memory to store memory remap information
JP2011040051A (ja) * 2009-06-30 2011-02-24 Numonyx Bv メモリリマップ情報を記憶する不揮発性メモリ
US20110119431A1 (en) * 2009-11-13 2011-05-19 Chowdhury Rafat Memory system with read-disturb suppressed and control method for the same
JP2011107851A (ja) * 2009-11-13 2011-06-02 Toshiba Corp メモリシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019057049A (ja) * 2017-09-20 2019-04-11 株式会社東芝 ビデオサーバ、及び放送システム

Also Published As

Publication number Publication date
EP2806362A1 (en) 2014-11-26
JP6102515B2 (ja) 2017-03-29
US20140351628A1 (en) 2014-11-27

Similar Documents

Publication Publication Date Title
JP6102515B2 (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
US9070463B2 (en) Flash memory module for realizing high reliability
CN104572489B (zh) 磨损均衡方法及装置
US8276043B2 (en) Memory system
JP4901987B1 (ja) 記憶装置、電子機器及び誤りデータの訂正方法
JP5658128B2 (ja) Nandフラッシュ・メモリにおける確率論的多層エラー訂正のためのシステム、方法、およびコンピュータ・プログラム
US10599345B2 (en) Memory device that writes data into a block based on time passage since erasure of data from the block
KR101870521B1 (ko) 스토리지 저널링을 개선하는 방법 및 시스템
JP5956675B2 (ja) 記憶装置および記憶装置制御方法
US9465537B2 (en) Memory system and method of controlling memory system
JP2015001908A (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
US9361201B2 (en) Memory system and memory controller
JP6167646B2 (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
US20130198438A1 (en) Data storage apparatus and method for compaction processing
JP2015001909A (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
US9798475B2 (en) Memory system and method of controlling nonvolatile memory
WO2016101145A1 (zh) 一种控制器、识别数据块稳定性的方法和存储系统
JP7308025B2 (ja) 集積回路装置及びストレージ装置
JP2013069183A (ja) コントローラおよびメモリシステム
JP5858081B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
US11733909B2 (en) Secure-erase prediction for data storage devices
JP2012068765A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2024042531A (ja) メモリシステム
JP2019160197A (ja) ストレージ装置,制御プログラムおよび制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160226

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170120

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170213

R150 Certificate of patent or registration of utility model

Ref document number: 6102515

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150