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

メモリシステム Download PDF

Info

Publication number
JP2010157141A
JP2010157141A JP2008335567A JP2008335567A JP2010157141A JP 2010157141 A JP2010157141 A JP 2010157141A JP 2008335567 A JP2008335567 A JP 2008335567A JP 2008335567 A JP2008335567 A JP 2008335567A JP 2010157141 A JP2010157141 A JP 2010157141A
Authority
JP
Japan
Prior art keywords
data
cluster
log
storage unit
stored
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
JP2008335567A
Other languages
English (en)
Other versions
JP5198245B2 (ja
Inventor
Hirokuni Yano
浩邦 矢野
Toshikatsu Hida
敏克 檜田
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 JP2008335567A priority Critical patent/JP5198245B2/ja
Priority to KR1020090084089A priority patent/KR101095765B1/ko
Priority to US12/563,856 priority patent/US8352706B2/en
Publication of JP2010157141A publication Critical patent/JP2010157141A/ja
Application granted granted Critical
Publication of JP5198245B2 publication Critical patent/JP5198245B2/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing
    • 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/7201Logical to physical mapping or translation of blocks or pages

Abstract

【課題】ログの量を削減できるメモリシステムを提供する。
【解決手段】NANDメモリ10に記憶された正引き(論理アドレス→データの記憶位置)、逆引き(データの記憶位置→論理アドレス)のアドレス変換テーブル202を起動時にマスターテーブル204としてDRAM20に転送し、マスターテーブル204を更新すべき事象が発生した際、逆引きのアドレス変換テーブルについての更新前後の差分情報をログとしてDRAM20に記録する。
【選択図】 図14

Description

本発明は、不揮発性半導体メモリを備えたメモリシステムに関する。
ハードディスク装置を2次記憶装置として用いたパーソナルコンピュータにおいては、ハードディスク装置に格納されるデータが何らかの障害によって無効なデータとなってしまうことを防ぐためにバックアップをとる技術が知られている。たとえば、ハードディスク装置中のデータの変更を検出すると、そのデータの変更前のバックアップコピーであるスナップショットをとり、そのデータに対する更新を記録したログをとる。その後、所定の時間ごとにスナップショットをとるとともに、スナップショットをとる前の過去のログを無効にし、新しいログを生成するという処理が繰り返し行われる(たとえば、特許文献1参照)。このような処理を行うことで、データが無効になってしまった場合には、スナップショットとログを基にそのデータを復元することができる。
ところで、近年では、不揮発性半導体記憶装置であるNAND型フラッシュメモリの大容量化が進行し、このNAND型フラッシュメモリを搭載したメモリシステムとしてのSSD(Solid State Drive)が注目されている。フラッシュメモリは、磁気ディスク装置に比べ、高速、軽量などの利点を有している。しかし、このようなNAND型フラッシュメモリを2次記憶装置とするパーソナルコンピュータに格納されるデータのバックアップに対して、ハードディスク装置を2次記憶装置とするパーソナルコンピュータに格納されるデータのバックアップの場合と同様に上記特許文献1の技術を適用することはできない。それは、NAND型フラッシュメモリの大容量化には、1つのメモリセルに2ビット以上の複数のデータ(多値データ)を記憶することが可能な多値メモリ技術(MLC)が使用されているからである(たとえば、特許文献2参照)。
多値メモリを構成するメモリセルは、チャネル領域上にゲート絶縁膜、浮遊ゲート電極、ゲート間絶縁膜および制御ゲート電極が順に積層された積層ゲート構造を有する電界効果型トランジスタ構造を有し、浮遊ゲート電極に蓄積される電子の数に応じて、複数の閾値電圧を設定可能な構成を有している。そして、この複数の閾値電圧によって、多値記憶を可能とするために、1つのデータに対応する閾値電圧の分布を非常に狭く制御する必要がある。
また、パーソナルコンピュータなどのホスト機器が記録するデータは、時間的局所性、及び領域的局所性を兼ね備えている。そのため、データを記録する際に外部から指定されたアドレスにそのまま記録していくと、特定の領域に短時間に書き換え、すなわち消去処理が集中し、消去回数の偏りが大きくなる。そのため、NAND型フラッシュメモリを利用するメモリシステムでは、データ更新箇所を均等に分散させるウェアレベリングと呼ばれる処理が行われる。ウェアレベリング処理では、例えば、ホスト機器から指定される論理アドレスを、データ更新箇所が均等に分散されるように不揮発性半導体メモリの物理アドレスにアドレス変換している。
このようなアドレス変換の際には、外部から供給される論理アドレス(LBA)と、NANDフラッシュメモリ上でデータが記憶されている位置を示す物理アドレス(NANDアドレス)の対応関係を表すアドレス変換テーブルなどの管理テーブルを用いて、データの記憶位置を管理することが多い。この管理テーブルは、起動時、不揮発性のNANDフラッシュメモリから揮発性のDRAMなどのメモリに展開され、展開された管理テーブルはデータが書き込まれるたびに更新される。アドレス変換テーブルの対応関係は、電源断をまたいでも使用するために、例えば、上記スナップショットおよびログなどのバックアップ技術を用いてバックアップすることが必要となる。
ところが、SSDの高性能化のために、NANDフラッシュメモリの並列書き込みなどを行えるようにすると、ある一定処理単位中のNANDフラッシュメモリへのデータ書き込み量も増え、その分アドレス変換テーブルの更新量も増え、ログも増える。そのため、ログの量の増大によるNANDフラッシュメモリの書き込み回数の増大や、性能劣化を招いてしまう。
米国特許出願公開第2006/0224636号明細書 特開2004−192789号公報
本発明は、ログの量を削減することが可能なメモリシステムを提供する。
本願発明の一態様によれば、揮発性の第1の記憶部と、不揮発性の第2の記憶部と、前記第1の記憶部を介してホスト装置と前記第2の記憶部との間のデータ転送を行うコントローラとを備えるメモリシステムにおいて、前記第2の記憶部には、ホスト装置から指定された論理アドレスを前記第2の記憶部での記憶位置に対応付ける正引き情報を管理するため第1のアドレス変換テーブルと、前記第2の記憶部での記憶位置を前記論理アドレスに対応付ける逆引き情報を管理するための第2のアドレス変換テーブルとが記憶され、前記コントローラは、前記第2の記憶部に記憶された第1および第2のアドレス変換テーブルを起動時にマスターテーブルとして前記第1の記憶部に転送するテーブル転送手段と、前記マスターテーブルを更新すべき事象が発生した際、第1の記憶部に記憶されている前記第1および第2のアドレス変換テーブルのうちの何れか一方についての更新前後の差分情報をログとして第1の記憶部に記憶するログ制御手段と、第1の条件が成立したときに前記第1の記憶部に記憶されたログを前記第2の記憶部に保存するとともに前記第1の記憶部に記憶されたログの内容を前記第1の記憶部に記憶されている前記マスターテーブルとしての第1および第2のアドレス変換テーブルに反映するログ反映手段と、前記第1の記憶部に記憶されているマスターテーブルおよびログを用いて前記データ転送制御を行う読み書き制御部とを備えることを特徴とする。
本発明によれば、ログの量を削減することが可能なメモリシステムを提供できる。
以下に添付図面を参照して、この発明にかかるメモリシステムの実施の形態を詳細に説明する。
以下、本発明の実施の形態について図面を参照して説明する。なお、以下の説明において、同一の機能および構成を有する要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
先ず、本明細書で用いる用語について定義しておく。
・物理ページ:NAND型フラッシュメモリ内部において一括して書き込み/読み出しが可能な単位のこと。
・論理ページ:SSD内部で設定される書き込み/読み出し単位であり、1以上の物理ページを組み合わせて構成される。
・物理ブロック:NAND型フラッシュメモリ内部において独立して消去可能な最小単位のことであり、複数の物理ページから構成される。
・論理ブロック:SSD内部で設定される消去単位であり、1以上の物理ブロックを組み合わせて構成される。論理ブロックは、複数の論理ページから構成される。
・セクタ:ホストからの最小アクセス単位のこと。セクタサイズは、例えば512B。
・クラスタ:SSD内部で「小さなデータ」を管理する管理単位。クラスタサイズはセクタサイズ以上であり、ホストのOSが採用するファイルシステムのデータ管理単位、または、論理ページサイズと等しくなるように定められる。例えば、クラスタサイズの2以上の自然数倍が論理ページサイズとなるように定められてもよい。
・トラック:SSD内部で「大きなデータ」を管理する管理単位。クラスタサイズの2以上の自然数倍がトラックサイズとなるように定められる。例えば、トラックサイズが論理ブロックサイズと等しくなるように定められてもよい。
・フリーブロック(FB):内部に有効データを含まない、用途未割り当ての論理ブロックのこと。以下の、CFB、FFBの2種類がある。
・コンプリートフリーブロック(CFB):再利用のために消去動作を行う必要があるFBのこと。消去動作の実行後は、論理ブロックの先頭に位置する論理ページから書き込むことが可能である。
・フラグメントフリーブロック(FFB):未書き込みの論理ページが残っており、消去動作を実行することなく再利用が可能なFBのこと。残りの未書き込み状態のままの論理ページに書き込むことが可能である。
・バッドブロック(BB):NAND型フラッシュメモリ上の、誤りが多いなど記憶領域として使用できない物理ブロックのこと。例えば、消去動作が正常に終了しなかった物理ブロックがバッドブロックBBとして登録される。
・書き込み効率:所定期間内における、ホストから書き込んだデータ量に対する、論理ブロックの消去量の統計値のこと。小さいほどNAND型フラッシュメモリの消耗度が小さい。
・有効クラスタ:論理アドレスに対応するクラスタサイズの最新データ。
・無効クラスタ:同一論理アドレスのデータが他の場所に書きこまれ、参照されることがなくなったクラスタサイズのデータ。
・有効トラック:論理アドレスに対応するトラックサイズの最新データ。
・無効トラック:同一論理アドレスのデータが他の場所に書きこまれ、参照されることがなくなったトラックサイズのデータ。
・MLC(Multi Level Cell)モード:多値記憶が可能なNAND型フラッシュメモリにおいて、通常通り、上位ページおよび下位ページを使用して書き込みを行うモード。MLCモードで使用する1以上の物理ブロックを組み合わせて、MLCモードの論理ブロックが構成される。
・擬似SLC(Single Level Cell)モード:多値記憶が可能なNAND型フラッシュメモリにおいて、下位ページのみを使用して書き込みを行うモード。擬似SLCモードで使用する1以上の物理ブロックを組み合わせて、擬似SLCモードの論理ブロックが構成される。一度擬似SLCモードで使用した物理ブロックであっても、消去動作後はMLCモードで使用することが可能である。
[第1の実施形態]
図1は、SSD(Solid State Drive)100の構成例を示すブロック図である。SSD100は、ATAインタフェース(ATA I/F)2などのメモリ接続インタフェースを介してパーソナルコンピュータあるいはCPUコアなどのホスト装置(以下、ホストと略す)1と接続され、ホスト1の外部メモリとして機能する。また、SSD100は、RS232Cインタフェース(RS232C I/F)などの通信インタフェース3を介して、デバッグ用/製造検査用機器200との間でデータを送受信することができる。SSD100は、不揮発性半導体メモリとしてのNAND型フラッシュメモリ(以下、NANDメモリと略す)10と、コントローラとしてのドライブ制御回路4と、揮発性半導体メモリとしてのDRAM20と、電源回路5と、状態表示用のLED6と、ドライブ内部の温度を検出する温度センサ7と、フューズ8とを備えている。
電源回路5は、ホスト1側の電源回路から供給される外部直流電源から複数の異なる内部直流電源電圧を生成し、これら内部直流電源電圧をSSD100内の各回路に供給する。また、電源回路5は、外部電源の立ち上がりを検知し、パワーオンリセット信号を生成して、ドライブ制御回路4に供給する。フューズ8は、ホスト1側の電源回路とSSD100内部の電源回路5との間に設けられている。外部電源回路から過電流が供給された場合フューズ8が切断され、内部回路の誤動作を防止する。
NANDメモリ10は、この場合、4並列動作を行う4つの並列動作要素10a〜10dを有し、4つの並列動作要素10a〜10dは、4つのチャネル(ch0〜ch3)によってドライブ制御回路4に接続されている。各並列動作要素10a〜10dは、バンクインターリーブが可能な複数のバンク(この場合、4バンク、Bank0〜Bank3)によって構成されており、各バンクは、複数のNANDメモリチップ(この場合、2メモリチップ、Chip0、Chip1)によって構成されている。各メモリチップは、例えば、それぞれ複数の物理ブロックを含むプレーン0、プレーン1の2つの領域(District)に分割されている。プレーン0およびプレーン1は、互いに独立した周辺回路(例えば、ロウデコーダ、カラムデコーダ、ページバッファ、データキャッシュ等)を備えており、倍速モードを使用することで、同時に消去/書き込み/読み出しを行うことが可能である。このように、NANDメモリ10の各NANDメモリチップは、複数のチャネルによる並列動作、複数のバンクによるバンクインターリーブ動作、複数のプレーンを用いた倍速モードによる並列動作が可能である。なお、各メモリチップは、4つのプレーンに分割された構成であってもよいし、あるいは、全く分割されていなくてもよい。
DRAM20は、ホスト1とNANDメモリ10間でのデータ転送用キャッシュおよび作業領域用メモリなどとして機能する。DRAM20の作業領域用メモリに記憶されるものとしては、NANDメモリ10に記憶されている各種管理テーブル(後述する)が起動時などに展開されたマスターテーブル(スナップショット)、管理テーブルの変更差分であるログ情報などがある。DRAM20の代わりに、FeRAM(Ferroelectric Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)などを使用しても良い。ドライブ制御回路4は、ホスト1とNANDメモリ10との間でDRAM20を介してデータ転送制御を行うとともに、SSD100内の各構成要素を制御する。また、ドライブ制御回路4は、状態表示用LED6にステータス表示用信号を供給するとともに、電源回路5からのパワーオンリセット信号を受けて、リセット信号およびクロック信号を自回路内およびSSD100内の各部に供給する機能も有している。
各NANDメモリチップは、データ消去の単位である物理ブロックを複数配列して構成されている。図2(a)は、NANDメモリチップに含まれる1個の物理ブロックの構成例を示す等価回路図である。各物理ブロックは、X方向に沿って順に配列された(p+1)個のNANDストリングを備えている(pは、0以上の整数)。(p+1)個のNANDストリングにそれぞれ含まれる選択トランジスタST1は、ドレインがビット線BL0〜BLpに接続され、ゲートが選択ゲート線SGDに共通接続されている。また、選択トランジスタST2は、ソースがソース線SLに共通接続され、ゲートが選択ゲート線SGSに共通接続されている。
各メモリセルトランジスタMTは、半導体基板上に形成された積層ゲート構造を備えたMOSFET(Metal Oxide Semiconductor Field Effect Transistor)から構成される。積層ゲート構造は、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層(浮遊ゲート電極)、および電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲート電極を含んでいる。メモリセルトランジスタMTは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じてデータを記憶する。メモリセルトランジスタMTは、1ビットを記憶するように構成されていてもよいし、多値(2ビット以上のデータ)を記憶するように構成されていてもよい。
また、メモリセルトランジスタMTは、浮遊ゲート電極を有する構造に限らず、MONOS(Metal-Oxide-Nitride-Oxide-Silicon)型など、電荷蓄積層としての窒化膜界面に電子をトラップさせることでしきい値調整可能な構造であってもよい。MONOS構造のメモリセルトランジスタMTについても同様に、1ビットを記憶するように構成されていてもよいし、多値(2ビット以上のデータ)を記憶するように構成されていてもよい。
各NANDストリングにおいて、(q+1)個のメモリセルトランジスタMTは、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に、それぞれの電流経路が直列接続されるように配置されている。すなわち、複数のメモリセルトランジスタMTは、隣接するもの同士で拡散領域(ソース領域若しくはドレイン領域)を共有するような形でY方向に直列接続される。
そして、最もドレイン側に位置するメモリセルトランジスタMTから順に、制御ゲート電極がワード線WL0〜WLqにそれぞれ接続されている。従って、ワード線WL0に接続されたメモリセルトランジスタMTのドレインは選択トランジスタST1のソースに接続され、ワード線WLqに接続されたメモリセルトランジスタMTのソースは選択トランジスタST2のドレインに接続されている。
ワード線WL0〜WLqは、物理ブロック内のNANDストリング間で、メモリセルトランジスタMTの制御ゲート電極を共通に接続している。つまり、ブロック内において同一行にあるメモリセルトランジスタMTの制御ゲート電極は、同一のワード線WLに接続される。この同一のワード線WLに接続される(p+1)個のメモリセルトランジスタMTは1ページ(物理ページ)として取り扱われ、この物理ページごとにデータの書き込みおよびデータの読み出しが行われる。
また、ビット線BL0〜BLpは、ブロック間で、選択トランジスタST1のドレインを共通に接続している。つまり、複数のブロック内において同一列にあるNANDストリングは、同一のビット線BLに接続される。
図2(b)は、例えば、1個のメモリセルトランジスタMTに2ビットの記憶を行う4値データ記憶方式でのしきい値分布を示す模式図である。4値データ記憶方式では、上位ページデータ“x”と下位ページデータ“y”で定義される4値データ“xy”の何れか1つをメモリセルトランジスタMTに保持可能である。
この、4値データ“xy”は、メモリセルトランジスタMTのしきい値電圧の順に、例えば、データ“11”、“01”、“00”、“10”が割り当てられる。データ“11”は、メモリセルトランジスタMTのしきい値電圧が負の消去状態である。なお、データの割り当て規則はこれに限らない。また、1個のメモリセルトランジスタMTに3ビット以上の記憶を行う構成であってもよい。
下位ページ書き込み動作においては、データ“11”(消去状態)のメモリセルトランジスタMTに対して選択的に、下位ビットデータ“y”の書き込みによって、データ“10”が書き込まれる。上位ページ書き込み前のデータ“10”のしきい値分布は、上位ページ書き込み後のデータ“01”とデータ“00”のしきい値分布の中間程度に位置しており、上位ページ書き込み後のしきい値分布よりブロードであってもよい。上位ページ書き込み動作においては、データ“11”のメモリセルと、データ“10”のメモリセルに対して、それぞれ選択的に上位ビットデータ“x”の書き込みが行われて、データ“01”およびデータ“00”が書き込まれる。擬似SLCモードでは、下位ページのみを使用して書き込みを行う。下位ページの書き込みは、上位ページの書き込みに比べて高速である。
図3は、ドライブ制御回路4のハードウェア的な内部構成例を示すブロック図である。ドライブ制御回路4は、データアクセス用バス101、第1の回路制御用バス102、および第2の回路制御用バス103を備えている。第1の回路制御用バス102には、ドライブ制御回路4全体を制御するプロセッサ104が接続されている。第1の回路制御用バス102には、NANDメモリ10に記憶された各管理プログラム(FW:ファームウエア)をブートするブート用プログラムが格納されたブートROM105がROMコントローラ106を介して接続されている。また、第1の回路制御用バス102には、図1に示した電源回路5からのパワーオンリセット信号を受けて、リセット信号およびクロック信号を各部に供給するクロックコントローラ107が接続されている。
第2の回路制御用バス103は、第1の回路制御用バス102に接続されている。第2の回路制御用バス103には、図1に示した温度センサ7からのデータを受けるためのI2C回路108、状態表示用LED6にステータス表示用信号を供給するパラレルIO(PIO)回路109、RS232C I/F3を制御するシリアルIO(SIO)回路110が接続されている。
ATAインタフェースコントローラ(ATAコントローラ)111、第1のECC(Error Checking and Correction)回路112、NANDコントローラ113、およびDRAMコントローラ114は、データアクセス用バス101と第1の回路制御用バス102との両方に接続されている。ATAコントローラ111は、ATAインタフェース2を介してホスト1との間でデータを送受信する。データアクセス用バス101には、データ作業領域およびファームウェア展開領域として使用されるSRAM115がSRAMコントローラ116を介して接続されている。NANDメモリ10に記憶されているファームウェアは起動時、ブートROM105に記憶されたブート用プログラムによってSRAM115に転送される。
NANDコントローラ113は、NANDメモリ10とのインタフェース処理を行うNAND I/F117、第2のECC回路118、およびNANDメモリ10−DRAM20間のアクセス制御を行うDMA転送制御用DMAコントローラ119を備えている。第2のECC回路118は第2の訂正符号のエンコードを行い、また、第1の誤り訂正符合のエンコードおよびデコードを行う。第1のECC回路112は、第2の誤り訂正符号のデコードを行う。第1の誤り訂正符号、第2の誤り訂正符号は、例えば、ハミング符号、BCH(Bose Chaudhuri Hocqenghem)符号、RS(Reed Solomon)符号、或いはLDPC(Low Density Parity Check)符号等であり、第2の誤り訂正符号の訂正能力は、第1の誤り訂正符号の訂正能力よりも高いとする。
図1に示したように、NANDメモリ10においては、4つの並列動作要素10a〜10dが各複数ビットの4チャネル(4ch)を介して、ドライブ制御回路4内部のNANDコントローラ112に並列接続されており、4つの並列動作要素10a〜10dを並列動作させることが可能である。また、各チャネルのNANDメモリ10は、バンクインターリーブが可能な4つのバンクに分割されており、各メモリチップのプレーン0およびプレーン1に対しても、同時にアクセスを行うことが可能である。したがって、1チャネルに付き、最大8物理ブロック(4バンク×2プレーン)、ほぼ同時に書き込みなどの処理を実行可能である。
図4は、プロセッサ104により実現されるファームウェアの機能構成例を示すブロック図である。プロセッサ104により実現されるファームウェアの各機能は、大きく、データ管理部120、ATAコマンド処理部121、セキュリティ管理部122、ブートローダ123、初期化管理部124、デバッグサポート部125に分類される。
データ管理部120は、NANDコントローラ113、第1のECC回路112を介して、NANDメモリ10−DRAM20間のデータ転送、NANDメモリ10に関する各種機能を制御する。ATAコマンド処理部121は、ATAコントローラ111、およびDRAMコントローラ114を介して、データ管理部120と協動してDRAM20−ホスト1間のデータ転送処理を行う。セキュリティ管理部122は、データ管理部120およびATAコマンド処理部121と協動して各種のセキュリティ情報を管理する。
ブートローダ123は、パワーオン時、各管理プログラム(ファームウェア)をNANDメモリ10からSRAM115にロードする。初期化管理部124は、ドライブ制御回路4内の各コントローラ/回路の初期化を行う。デバッグサポート部125は、外部からRS232Cインタフェースを介して供給されたデバッグ用データを処理する。主に、データ管理部120、ATAコマンド処理部121、およびセキュリティ管理部122が、SRAM115に記憶される各管理プログラムをプロセッサ104が実行することによって実現される機能部である。
本実施形態では、主としてデータ管理部120が実現する機能について説明する。データ管理部120は、ATAコマンド処理部121が記憶デバイスであるNANDメモリ10やDRAM20に対して要求する機能の提供(ホストからのWrite要求、Cache Flush要求、Read要求等の各種コマンドへの応答)と、ホスト1から与えられる論理アドレスとNANDメモリ10との対応関係の管理と、スナップショット、ログによる管理情報の保護と、DRAM10およびNANDメモリ10を利用した高速で効率の良いデータ読み出し/書き込み機能の提供と、NANDメモリ10の信頼性の確保などを行う。
図5は、NANDメモリ10およびDRAM20内に形成された機能ブロックを示すものである。ホスト1とNANDメモリ10との間には、DRAM20上に構成されたライトキャッシュ(WC)21およびリードキャッシュ(RC)22が介在している。WC21はホスト1からのWriteデータを一時保存し、RC22はNANDメモリ10からのReadデータを一時保存する。NANDメモリ10内のブロックは、書き込み時のNANDメモリ10に対する消去の量を減らすために、データ管理部120により、前段ストレージ領域(FS:Front Storage)12、中段ストレージ領域(IS:Intermediate Storage)13およびメインストレージ領域(MS:Main Storage)11という各管理領域に割り当てられている。FS12は、WC21からのデータを「小さな単位」であるクラスタ単位に管理するものであり、小データを短期間保存する。IS13は、FS12から溢れたデータを「小さな単位」であるクラスタ単位に管理するものであり、小データを長期間保存する。MS11は、WC21、FS12、IS13からのデータを「大きな単位」であるトラック単位で管理する。
つぎに、図5の各構成要素の具体的な機能構成について詳述する。ホスト1はSSD100対し、ReadまたはWriteする際には、ATAインタフェースを介して論理アドレスとしてのLBA(Logical Block Addressing)を入力する。LBAは、図6に示すように、セクタ(サイズ:512B)に対して0からの通し番号をつけた論理アドレスである。本実施の形態においては、図5の各構成要素であるWC21、RC22、FS12、IS13、MS11の管理単位として、LBAの下位(s+1)ビット目から上位のビット列で構成されるクラスタアドレスと、LBAの下位(s+t+1)ビットから上位のビット列で構成されるトラックアドレスとを定義する。この実施の形態では、トラックと論理ブロックのサイズは同じとする。論理ブロックとは、NANDメモリ10のチップ上の物理ブロックを複数組み合わせて構成される仮想的なブロックのことであり、この実施の形態では、論理ブロックは1つの物理ブロックを並列チャネル数分(この場合、図1に示すように4ch)まとめた単位のことをいう。論理ページも同様であり、物理ページを4ch分まとめた単位のことをいう。また、論理ブロックは、バンクインターリーブを有効利用するため、同じバンクに属する物理ブロックから選択される。
・リードキャッシュ(RC)22
RC22は、ホスト1からのRead要求に対して、NANDメモリ10(FS12、IS13、MS11)からのReadデータを一時的に保存するための領域である。ホスト1へのデータ転送は、基本的に、RC22から行う。なお、WC21からNANDメモリ10へのデータの書き込みを行う際には、同一論理アドレスのR22上のデータを無効にする。
・ライトキャッシュ(WC)21
WC21は、ホスト1からのWrite要求に対して、ホスト1からのWriteデータを一時的に保存するための領域である。WC21上のデータは、クラスタ単位で管理し、書き込みと有効データの管理はセクタ単位で行う。WC21のリソースが不足した場合、WC21の記憶データをNAND10に追い出す。ホスト1からRC22上のデータと同一の論理アドレスに対する書き込みが行われた場合、その最新データはWC21上に保存される。そのため、同一の論理アドレスに対応するデータが、WC21、RC22、NANDメモリ10上にある場合には、データの新しさは、WC21、RC22、NANDメモリ10の順となるため、ホスト1に返すデータもWC21上のデータを優先する。
・メインストレージ領域(MS)11
MS11はトラック単位でデータの管理が行われ、ほとんどのユーザデータが格納される。WC21上で有効クラスタの多いトラック(高密度トラック)は、WC12から直接MS11に書き込まれる。その他、MS11には、FS12、IS13で管理しきれなくなったデータが入力される。MS11に入力されたトラックと同一LBAのトラックについては、論理ブロック内で無効化し、この論理ブロックを解放する。MS11に入力されたトラックと同一LBAのトラックに属するクラスタついては、論理ブロック内で無効化し、論理ブロック内の全クラスタが無効になった論理ブロックは解放する。MS11は、MLCモードの複数の論理ブロックで構成される。この実施の形態では、トラックと論理ブロックのサイズは同じとしているので、FS12やIS13で行われる追記処理や、IS13で行われるコンパクション(有効クラスタのみを集めて新しい論理ブロックを作り、無効なクラスタ部分を解放する処理)は不要となる。もしトラックサイズが論理ブロックサイズよりも小さい場合は、FS12やIS13で行われる追記処理や、IS13で行われるコンパクションを適用してもよい。
・前段ストレージ領域(FS)12
FS12はクラスタ単位でデータを管理されるFIFO構造のバッファであり、入力は複数のクラスタをまとめた論理ページ単位で行われる。FS12には、WC21上で有効クラスタ数の少ないトラック(低密度トラック)が最初に書き込まれる。データの書き込み順序で論理ブロックが並んだFIFO構造となっている。FS12に存在するクラスタと同一LBAのクラスタがFS12に入力された場合、FS12内のクラスタを無効化するだけでよく、書き換え動作を伴わない。FS12に入力されたクラスタと同一LBAのクラスタについては、論理ブロック内で無効化し、論理ブロック内の全クラスタが無効になった論理ブロックは解放する。FS11のFIFO構造の最後まで到達した論理ブロックに格納されたクラスタは、ホスト1から再書き込みされる可能性の低いクラスタとみなし、論理ブロックごとIS13の管理下に移動する。FS12は、この実施の形態では、書き込みの高速化を図るため擬似SLCモードの複数の論理ブロックで構成される。なお、FS12は、MLCモードの複数の論理ブロックで構成されてもよい。更新頻度の高いデータはFS12を通過している最中に無効化され、更新頻度の低いデータだけがFS12から溢れていくため、更新頻度の高いデータと低いデータとをFS12で選り分けることができる。これにより、後段のIS13でコンパクションが頻繁に発生する可能性を低減させることが可能である。
・中段ストレージ領域(IS)13
IS13は、再書き込みされる可能性の低いクラスタを格納するためのバッファであり、FS13と同様にクラスタ単位でデータの管理が行われる。IS13に存在するクラスタと同一LBAのクラスタがFS12、IS13に入力された場合、IS13内のクラスタを無効化するだけでよく、書き換え動作を伴わない。IS13においては、FS12と同様、データの書き込まれた順序(FS12から移動された順序)が古い論理ブロックから並んだリスト構造をとるが、コンパクションを行う点がFS12と異なる。IS13の容量や管理テーブルの都合で飽和した場合は、コンパクション(IS13から有効クラスタを集めてIS13へ書き戻すこと)やデフラグ(FS12およびIS13のクラスタをトラックに統合して、MS11へ追い出すこと)を行う。IS13は、この実施の形態では、MLCモードの論理ブロックと擬似SLCモードの論理ブロックの混在で構成される。すなわち、FS12からIS13に移動されるブロックは擬似SLCモードの論理ブロックであるが、IS13内でコンパクションする際に、MLCモードの論理ブロックに書き直す。なお、FS12がMLCモードの論理ブロックで構成される場合は、IS13もMLCモードの論理ブロックのみで構成されることになる。
図7は、データ管理部120が図5に示した各構成要素を制御管理するための管理テーブルを示すものである。DRAM20を管理するためのテーブルとしては、RC管理テーブル23、WCトラックテーブル24、WCトラック情報テーブル25,WC高密度トラック情報テーブル26、WC低密度トラック情報テーブル27などがある。NANDメモリ10を管理するためのテーブルとしては、トラックテーブル30、クラスタディレクトリテーブル31、クラスタテーブル32、クラスタブロック情報テーブル33、論物変換テーブル40などがある。NANDメモリ10を管理するためのテーブルは、正引きアドレス変換で参照するテーブル、逆引きアドレス変換で参照するテーブルに分けられる。正引きアドレス変換とは、データのLBAから実際にデータが記憶されている論理ブロックアドレス+クラスタ位置を求めることである。逆引きアドレス変換とは、論理ブロックアドレス+クラスタ位置からデータのLBAを求めることである。
・RC管理テーブル23
RC管理テーブル23は、NANDメモリ10からRC22に転送されたデータを管理するためのものである。
・WCトラックテーブル24
WC21上に記憶されたデータに関するWCトラック情報をLBAからルックアップするためのハッシュテーブルであり、LBAのトラックアドレスのLSB数ビットをインデックスとし、インデックス毎に複数のエントリ(タグ)を有する。各タグには、LBAトラックアドレスと該トラックアドレスに対応するWCトラック情報へのポインタが記憶されている。
・WCトラック情報テーブル25
WCトラック情報テーブル25には、アクセスのあったWCトラック情報の新旧の順序をLRU(Least Recently used)で双方向リストで管理するためのWCトラックLRU情報テーブル25aと、空いているWCトラック情報の番号を管理するWCトラック空き情報テーブル25bとがある。WC21からNANDにデータを追い出すときに、WCトラックLRU情報テーブル25aを用いて最も古くにアクセスされたトラックを取り出す。
WCトラック情報は、WC21内に存在する複数のトラックの1つに対応する。
WCトラック情報には、
(1)WC21内に存在するトラックアドレス、トラック内のWC21上の有効クラスタの個数、各クラスタが有効であるかどうかの情報、各クラスタがWC21のどこに存在するかを示すWC内クラスタ位置情報、
(2)1クラスタに含まれる複数のセクタのうちのどのセクタに有効なデータを保持しているかを示す情報(セクタビットマップ)、
(3)トラックの状態情報(有効、無効、ATAからのデータ転送中、NANDに書き込み中など)
などが含まれている。なお、上記のWCトラック情報では、有効クラスタが存在する記憶位置で自トラック内に存在するクラスタアドレスのLSB(t)ビットを管理するようにしたが、クラスタアドレスの管理方法は任意であり、例えば、自トラック内に存在するクラスタアドレスのLSB(t)ビット自体を管理するようにしてもよい(図6参照)。
・WC高密度トラック情報テーブル26
MS11に書き込むことになる高密度(トラック内で有効クラスタ数が所定パーセント以上)のトラック情報を管理するためのもので、高密度トラックに関するWCトラック情報とその個数を管理している。
・WC低密度トラック情報テーブル27
FS12に書き込むことになる低密度(トラック内で有効クラスタ数が所定パーセント未満)のトラック情報を管理するためのもので、低密度トラックのクラスタ数の合計を管理している。
・トラックテーブル30(正引き)
LBAのトラックアドレスからトラック情報を取得するためのテーブルである。トラック情報としては、
(1)論理ブロックアドレス(トラックのデータが記憶されている論理ブロックを示す情報である)
(2)クラスタディレクトリ番号(トラック内のデータの少なくとも一部がFS12またはIS13に記憶されている場合に有効となる情報であり、トラック内のデータがFS12またはIS13に記憶されている場合に、トラック毎に存在するクラスタディレクトリテーブルのテーブル番号を示す情報である)
(3)FS/ISクラスタ数(このトラック内のクラスタが、いくつFS12またはIS13に記憶されているかを示す情報であり、デフラグするかどうかを決めるために使用する)。
・クラスタディレクトリテーブル31(正引き)
トラック内のデータがFS12またはIS13に記憶されている場合に、その論理ブロックまでたどるための中間的なテーブルであり、トラック別に備えられている。各クラスタディレクトリテーブル31に登録されるクラスタディレクトリ情報は、クラスタテーブル32のテーブル番号を示す情報(クラスタテーブル番号情報)の配列からなる。LBAのクラスタアドレスのLSB(t)ビット中の上位数ビットで、1つのクラスタディレクトリテーブル31中に配列されている複数のクラスタテーブル番号情報からひとつの情報を選択する。
このクラスタディレクトリテーブル31としては、書き込み時刻を基準として、クラスタディレクトリ情報(クラスタテーブル番号情報の配列)の新旧の順序を、対応するトラックアドレスとともに、LRU(Least Recently used)で双方向リストで管理するためのクラスタディレクトリLRUテーブル31aと、空いているクラスタディレクトリを、対応するトラックアドレスとともに、双方向リストで管理するクラスタディレクトリ空き情報テーブル31bとがある。
・クラスタテーブル32(正引き)
クラスタディレクトリテーブル31と関連し、トラック内のデータがFS12またはIS13に記憶されている場合に、どの論理ブロックのどのクラスタ位置にデータが記憶されているかを管理するテーブルである。トラックテーブル30からクラスタディレクトリテーブル31を経由して間接参照される。実体は、複数クラスタ分の論理ブロックアドレス+クラスタ位置の配列である。LBAのクラスタアドレスのLSB(t)ビット中の下位数ビットで、1つのクラスタテーブル32中に配列されている複数の(論理ブロックアドレス+クラスタ位置)からひとつの情報を選択する。後述のクラスタブロック情報の番号とその中のクラスタ位置の情報も配列としてもつ。
・クラスタブロック情報テーブル33(逆引き)
クラスタブロックとは、論理ブロックのうちクラスタ単位でデータを記憶するものをいう。クラスタブロック情報は、FS12、IS13の論理ブロックを管理するための情報であり、論理ブロック内にどのようなクラスタが入っているかを示す情報である。クラスタブロック情報同士を双方向リストとしてFS12、IS13内のFIFOの順序で連結される。
クラスタブロック情報は、
(1)論理ブロックアドレス
(2)有効クラスタ数
(3)当該論理ブロックに含まれるクラスタのLBA
を有する。
クラスタブロック情報テーブル33は、使われていないクラスタブロック情報を管理する空き情報管理用のクラスタブロック情報テーブル33a、FS12に含まれるクラスタブロック情報を管理するFS用のクラスタブロック情報テーブル33b、IS13に含まれるクラスタブロック情報を管理するIS用のクラスタブロック情報テーブル33cを有し、各テーブル33a〜33cは、双方向リストとして管理されている。逆引きアドレス変換の主な用途はIS13のコンパクションであり、コンパクション対象の論理ブロックにどのようなクラスタが記憶されているかを調べ、データを他の場所へ書き直すために使用する。よって、本実施の形態では、逆引きアドレス変換はクラスタ単位でデータを記憶しているFS12、IS13のみを対象としている。
・論物変換テーブル40(正引き)
論物変換テーブル40は、論理ブロックアドレスと物理ブロックアドレスとの変換、寿命に関する情報を管理するためのテーブルである。論理ブロックアドレス毎に、当該論理ブロックに所属する複数の物理ブロックアドレスを示す情報、当該論理ブロックアドレスの消去回数を示す消去回数情報、クラスタブロック情報の番号などの情報を有している。あるLBAのデータを他の場所に書き直すには、元のクラスタブロック内のLBAを無効にする必要があり、LBAからクラスタブロックをたどる必要がある。そのために、論物変換テーブル40で管理する論理ブロックの管理情報に、クラスタブロック情報の識別子を記憶している。
(スナップショット、ログ)
上記各管理テーブルで管理される管理情報によって、ホスト1で使用されるLBAと、SSD100で使用される論理NANDアドレス(論理ブロックアドレス+オフセット)と、NANDメモリ10で使用される物理NANDアドレス(物理ブロックアドレス+オフセット)との間を対応付けることができ、ホスト1とNANDメモリ10との間のデータのやり取りを行うことが可能となる。
上記各管理テーブルのうちNAND管理用のテーブル(図7のトラックテーブル30、クラスタディレクトリテーブル31、クラスタテーブル32、クラスタブロック情報テーブル33、論物変換テーブル40など)は、不揮発性のNANDメモリ10の所定の領域に記憶されており、起動時に、NANDメモリ10に記憶されていた各管理テーブルを揮発性のDRAM20の作業領域に展開して、この展開された管理テーブルをデータ管理部120が使用することで、各管理テーブルは更新されていく。DRAM20上に展開された各管理テーブルをマスターテーブルと呼ぶ。このマスターテーブルは、電源が切れても、電源が切れる以前の状態に復元する必要があり、このためマスターテーブルを不揮発性のNANDメモリ10に保存する仕組みが必要となる。スナップショットは、NANDメモリ10上の不揮発性の管理テーブルの全体を指し、DRAM20に展開されたマスターテーブルをそのままNANDメモリ10に保存することを、スナップショットをとるとも表現する。ログは、管理テーブルの変更差分のことである。マスターテーブルの更新の度に、スナップショットをとっていたのでは、速度も遅く、NANDメモリ10への書き込み数が増えるために、通常は変更差分としてのログだけをNANDメモリ10に記録していく。ログをマスターテーブルに反映し、NANDメモリ10に保存することを、コミットするとも表現する。
図8に、データ更新時に、スナップショットとログがどのように更新されるかを示す。データ管理部120がデータ更新する際に、マスターテーブルに加えた変更内容をDRAM20上のログ(DRAMログと呼ぶ)に蓄積する。管理テーブルの種類によっては、マスターテーブルを直接更新し、更新内容をDRAMログに蓄積したり、マスターテーブルには直接変更を加えず、変更領域をDRAMログ上に確保して、その領域に更新内容を記録したりする。データの読み書き処理の際には、マスターテーブルの他に蓄積されたDRAMログも参照する。
データの更新が安定したら、ログのコミットを行う。コミット処理では、DRAMログの内容を必要に応じてマスターテーブルに反映させ、さらにDRAMログの内容をNANDメモリ10に保存して不揮発化する。スナップショットをNANDメモリ10に保存するのは、正常な電源断シーケンスの際、ログの保存領域が不足した場合などとする。ログまたはスナップショットがNANDメモリ10に書き終わった時点で、管理テーブルの不揮発化が完了する。
・Read処理
つぎに、読み出し処理の概要について説明する。ATAコマンド処理部121から、Readコマンドおよび読み出しアドレスとしてのLBAが入力されると、データ管理部120は、RC管理テーブル23とWCトラックテーブル24を検索することで、WC21またはRC22にLBAに対応するデータが存在しているか否かを探査し、キャッシュヒットの場合は、該当LBAに対応するWC21またはRC22のデータを読み出して、ATAコマンド処理部121に送る。
データ管理部120は、RC22またはWC21でヒットしなかった場合は、検索対象のデータがNANDメモリ10のどこに格納されているかを検索する。データがMS11に記憶されている場合は、データ管理部120は、LBA→トラックテーブル30→論物変換テーブル40と辿ることで、MS11上のデータを取得する。一方、データがFS12,IS13に記憶されている場合は、データ管理部120は、LBA→トラックテーブル30→クラスタディレクトリテーブル31→クラスタテーブル32→論物変換テーブル40と辿ることで、FS12,IS13上のデータを取得する。
・Write処理
(WC21での処理)
つぎに、書き込み処理の概要について説明する。書き込み処理では、ATAコマンド処理部121からWriteコマンドおよび書き込みアドレスとしてのLBAが入力されると、LBAで指定されたデータをWC21に書き込む。WC21に空き領域がない場合は、DRAM管理用の各種管理テーブルを参照してWC21からデータを追い出して、NANDメモリ10に書き込み、空き領域を作成する。トラック内の有効クラスタ数が所定パーセント未満のトラックは低密度トラックとし、クラスタサイズデータとしてFS12を追い出し先とする。FS12が追い出し先の場合は、トラック内の有効クラスタを論理ページ単位で書き込む。
トラック内の有効クラスタ数が所定パーセント以上のトラックは高密度トラックとし、トラックサイズのデータとしてMS11を追い出し先とする。MS11が追い出し先の場合は、トラックサイズのデータのまま論理ブロック全体に書き込む。書き込み対象の論理ブロック数が複数の場合は、倍速モードやバンクインターリーブを利用して転送効率を上げる。WC21に書き込まれたデータに応じて、またNANDメモリ10へのデータ追い出しに応じて、DRAM管理用の各種管理テーブルを更新する。
(MS11への書き込み)
MS11への書き込みは、図9に示すように、次の手順で実行される。
1.DRAM20上にトラックのデータイメージを作成(穴埋め処理)する。すなわち、WC21に存在しないクラスタ、WC21に全セクタを保持していないクラスタに関しては、NANDメモリ10から読み出して、WC21のデータと統合する。
2.MS11用に、論理ブロック(トラックブロック)をCFBから確保する。トラックブロックとは、論理ブロックのうちトラック単位でデータを記憶するものをいう。
3.作成したトラックのデータイメージを確保した論理ブロックに書き込む。
4.トラックのLBAからトラック情報を調べ、トラック情報と書き込んだ論理ブロックに対応する論理ブロックアドレスとを関連付け、NAND管理用の所要のテーブルに登録する。
5.WC21,NANDメモリ10の古いデータを無効化する。
(FS12への書き込み)
FS12への書き込みは、DRAM20上にクラスタのデータイメージを作成(穴埋め処理)し、新たに確保する論理ブロック(クラスタブロック)に対し論理ページ単位の書き込みを、擬似SLCモードを使用して行う。確保する論理ブロックは、書き込むデータイメージ以上の書き込み可能な論理ページをもつフラグメントフリーブロック(FFB)を優先し、ない場合はコンプリートフリーブロック(CFB)を使用する。FS12への書き込みは、図10に示すように、以下の手順で実行する。
WC21からFS12に低密度トラックのデータを書き込むための論理ブロック(クラスタブロック)のことをFS Input Buffer(以下、FSIB)と呼ぶ。
1.WC21から入力された低密度トラック内の総データ量が小さい場合、すなわち有効クラスタ数が所定の閾値よりも少ない場合には、それを書き込めるFFBを確保し、FSIBとする。
2.WC21から渡された低密度トラック内の総データ量が大きい場合、すなわち有効クラスタ数が所定の閾値以上の場合には、CFBを確保し、FSIBとする。このとき、並列で書き込むことが出来る複数の論理ブロックを確保し、FSIBとする。
3.DRAM20上で、書き込むクラスタのデータイメージを作成する。すなわち、WC21に全セクタを保持していないクラスタに関しては、WC21上に存在しないセクタのデータをNANDメモリ10から読み出し、WC21上のセクタのデータと統合する。
4.WC21上のクラスタと、作業領域上に作ったクラスタイメージをFSIBに書き込む。
5.FSIBをFS12のリストに追加する。
6.書き込んだトラックを、クラスタディレクトリLRUテーブル31aの末尾に挿入しなおす。
(FS12からIS13への移動)
FS12管理下の論理ブロック数が所定の最大論理ブロック数を越えている場合は、図11に示すように、FS12から溢れた論理ブロックをそのままIS13に移動する。一度の処理単位で移動する論理ブロック数は、溢れた論理ブロック内の有効クラスタ数に応じて、以下のルールで決定する。
・溢れた論理ブロック内のクラスタ数がMLCモードの1論理ブロック分の境界に近くなるように、FS12の最も古い論理ブロックから移動する論理ブロックを追加する。MLCモードの1論理ブロック分の境界に近くするのは、コンパクション後の論理ブロックに、なるべく多くの有効クラスタを収容することを目的とする。
・クラスタ数がIS13で同時にコンパクションできるクラスタ数を超える場合は、IS13で同時にコンパクションできるクラスタ数以下になるようなブロック数とする。
・移動ブロック数には、上限値を設ける。
(IS13でのコンパクションとデフラグ)
IS13では、IS管理下の論理ブロック数が最大論理ブロック数を越えた場合に、MS11へのデータ移動(デフラグ処理)と、コンパクション処理によって、管理下の論理ブロック数を最大数以下に抑える。データの消去単位(論理ブロック)と、データの管理単位(クラスタ)が異なる場合、NANDメモリ10の書き換えが進むと、無効なデータによって、論理ブロックは穴あき状態になる。このような穴あき状態の論理ブロックが増えると、実質的に使用可能な論理ブロックが少なくなり、NANDメモリ10の記憶領域を有効利用できないので、有効クラスタを集めて、違う論理ブロックに書き直すことをコンパクションという。デフラグ処理とは、FS12,IS13のクラスタをトラックに統合して、MS11に追い出す処理をいう。
つぎに、本実施の形態の要部について説明する。先ず、正引き管理テーブルを用いた正引きアドレス変換と、逆引き管理テーブルを用いた逆引きアドレス変換について説明する。
(正引きアドレス変換)
正引きアドレス変換とは、LBAから、実際にデータが記録されている論理NANDクラスタアドレス(論理ブロック番号とオフセット)を求めることである。正引きアドレス変換の主な用途は、NANDメモリ10からDRAM20へのデータの読み出しである。より具体的には、ATAコマンド処理部121から要求されたデータの読み出しと、NANDへの書き込みおよびNANDの整理の際の穴埋めデータの読み出しである。正引きアドレス変換を行うには、LBA→トラックテーブル30→クラスタディレクトリテーブル31→クラスタテーブル32→論理NANDアドレスというように、トラックテーブル30から2段階のテーブルをたどって論理NANDアドレスを求める。
具体的には、LBAを(s+t+1)ビット目から上位のトラックアドレスに変換し、変換したトラックアドレスをインデックスとして、トラックテーブル30からトラック情報を取得し、トラック情報中のクラスタディレクトリ番号を得る。このクラスタディレクトリ番号が無効値であった場合は、MS11にデータが記憶されていると判断し、このトラック情報中から論理ブロックアドレスを得る。取得した論理ブロックアドレスを論物変換テーブル40によって物理ブロックアドレスに変換し、さらにLBAのクラスタアドレスのLSB(t)ビットから、前記算出した物理ブロックIDからのオフセットを算出することで、物理ブロック中のクラスタデータを取得する。
一方、トラック情報中のクラスタディレクトリ番号が有効値であった場合は、クラスタディレクトリ番号に対応するクラスタディレクトリを取得し、クラスタアドレスのLSB(t)ビット中の上位側数ビットを取得したクラスタディレクトリに対するインデックス(クラスタディレクトリindex)としてクラスタディレクトリからクラスタテーブルの識別子(クラスタテーブル番号)を取得し、この識別子に対応するクラスタテーブルを取得する。LBAのLSB(t)ビット中の下位側数ビットをインデックス(クラスタテーブルindex)とし、クラスタテーブルから論理クラスタアドレス(論理ブロックとオフセット)を得る。取得した論理ブロックアドレスを論物変換テーブル40によって物理ブロックアドレスに変換し、クラスタデータを取得する。
(逆引きアドレス変換)
逆引きアドレス変換とは、データが記録されている論理NANDクラスタアドレス(論理ブロック番号とオフセット)から、データのLBAを求めることである。逆引きアドレス変換の主な用途は、IS13のコンパクション処理である。コンパクション対象の論理ブロック内にどのようなデータ(トラック、クラスタ)が記憶されているかを調べ、データを他の論理ブロックに書き直すために使用する。その他に、データをNANDに書き込んだり、NANDを整理したりするときには、逆引きの管理情報も更新する。
この実施の形態では、逆引きアドレス変換は、クラスタ単位でデータを記録しているFS12,IS13内のデータに対してのみ使用し、トラック単位の逆引きアドレス変換には使用しない。クラスタ単位のデータの逆引き情報はクラスタブロック情報テーブル33に記憶する。逆引きアドレス変換を行うには、まず、あるクラスタブロックを特定し、そのクラスタブロック内にどのようなLBAのクラスタが記憶されているかを求める手順は以下のとおりである。
1.IS13に所属するクラスタブロック情報テーブル33のリストからたどる。IS13のコンパクションは、IS13に所属するクラスタブロックの中から、あるルールに従ってクラスタブロックを選択する。IS13に所属するクラスタブロックは、クラスタブロック情報テーブル33において双方向リンクの構造で管理するため、リンクをたどることによって、クラスタブロック情報にたどり着くことが出来る。
2.前述したように、クラスタテーブル32には、クラスタブロック情報の番号とその中のクラスタ位置の情報(オフセット)も配列としてもっており、このクラスタテーブル32から取得したクラスタ位置の情報(オフセット)をインデックスとし、クラスタブロック情報内のクラスタアドレスを得る。
正引き系のトラックテーブル30、クラスタディレクトリテーブル31、クラスタテーブル32と、逆引き系のクラスタブロック情報テーブル33は、基本的に情報を共有しており、これらの正引き系管理テーブルおよび逆引き系管理テーブルの一方に障害が発生した場合、正引き系管理テーブルから逆引き系管理テーブルを復元することもできるし、逆引き系管理テーブルから正引き系管理テーブルを復元することもできる。但し、この実施の形態では、MS11用のトラック単位の逆引きアドレス変換テーブルは設けず、正引き情報であるトラック情報を管理しているトラックテーブル30を走査して、LBAを求める。
図14は、本実施の形態の要部の機能構成を示すブロック図である。前述したように、NANDメモリ10には、ユーザデータを記憶するMS11、FS12,IS13などのユーザデータ記憶部201と、NANDメモリ10上の所定の記憶領域にスナップショットとして記憶され、図7に示した管理テーブルの中でDRAM管理用のテーブルを除くNAND管理用の各種管理テーブル(図7のトラックテーブル30,クラスタディレクトリテーブル31、クラスタテーブル32,クラスタブロック情報テーブル33、論物変換テーブル40など)202と、NAND管理テーブル202と同様、NANDメモリ10上の所定の記憶領域に記憶され、NAND管理テーブル202の変更差分情報としてのログ(以下、NANDログ)203とが記憶されている。
DRAM20には、WC21と、RC22と、DRAM20上に展開されたNAND管理テーブル202であるマスターテーブルと204と、マスターテーブル204に加えた変更内容を蓄積記憶するDRAM20上のログであるDRAMログ205とが記憶される。マスターテーブル204は、前述したように、正引きアドレス変換を行うための正引きテーブル204aと、逆引きアドレス変換を行うための正引きテーブル204bとを有する。
データ管理部であるコントローラ120は、読み書き制御部210,ログ制御部211、ログ反映部212を有する。読み書き制御部210は、マスターテーブル204およびDRAMログ205に基づいて前述した読み書き制御を行う。ログ制御部211は、NANDメモリ10に記憶された各種NAND管理テーブル(スナップショット)202を起動時にマスターテーブル204としてDRAM20に転送する処理、マスターテーブル204を更新すべき事象が発生した際、マスターテーブル204のうちの逆引き情報を管理する逆引きテーブル204bの更新前後の差分情報のみをDRAMログ205に蓄積記憶する処理、正常な電源断シーケンスが発生する、ログの保存領域が不足した場合など所定の条件が成立したときに、DRAM20上のマスターテーブルをNANDメモリ10にスナップショットとして保存する処理などを実行する。ログ反映部212は、ログの量がある値に達するとか、更新した各管理テーブル間で整合がとれる時点に達するなどの所定の条件が成立したときに、DRAM上のDRAMログ205をNANDメモリ10にNANDログ203として保存するとともに、DRAMログ205をマスターテーブル204の正引きテーブル204aおよび逆引きテーブル204bの双方に反映する前述のコミットを実行する。スナップショットまたはコミットが行われると、DRAM20上に積み上げてきたDRAMログ205は、無効化される。
つぎに、図15を用いて、ログの蓄積、コミット、復元動作などについて説明する。初期状態では、読み書き制御部210は、DRAM20上のマスターテーブル204のみに基づいて前述した読み書き制御を行う。NANDメモリ10への書き込みや、NAND整理の作業時(デフラグやコンパクション)などのマスターテーブル204を更新すべき事象が発生した際、マスターテーブル204は直接更新せず、DRAMログ205にマスターテーブル204の変更部分のみの複製(コピー)を確保し、この複製に対して変更差分を記録する更新を行う。
このDRAMログ205を作成する際、逆引き情報を管理する逆引きテーブル204bのみを更新し、正引き情報を管理する正引きテーブル204aは参照するだけで変更しないこととする。図7に示したNAND管理テーブルのうち逆引きテーブルに所属するのは、クラスタブロック情報テーブル33である。クラスタブロック情報は、前述したように、FS12、IS13に所属する論理ブロック内にどのようなクラスタアドレス(LBA)が入っているかを示す情報であり、各クラスタLBA情報は、ログへの記録サイズを抑えるために、例えば、論理ページ単位など論理ブロックを一定サイズ(クラスタページ)で区切って管理している。したがって、一定サイズに区切られたクラスタページ内で発生した1〜複数の更新は、DRAMログ205の同一エントリに順次蓄積して記録するようにしている。
また、前述したように、MS11用のトラック単位の逆引きアドレス変換テーブル(論理ブロック→LBAトラックアドレス)は設けてはいないが、この実施の形態では、逆引きテーブルのみのログをとるようにしているので、トラックテーブル30の更新のために、トラックブロック情報と呼ぶ、一時的なトラックの逆引き情報のログをDRAMログ205に記録するようにしている。トラックブロック情報には、トラックを書き込んだ論理ブロックアドレスと、トラックアドレスを格納する。
何度も同じ管理テーブルのエントリを参照したり更新したりする場合には、DRAMログ205上の複製を最新の管理情報として参照や更新の対象とする。ログ上の複製を探す手段として、マスターテーブル204にDRAMログ205上の複製へのポインタを埋め込むようにする。そして、参照や更新が来たときには複製のアドレスを、参照や更新の対象になるようにする。これによって、テーブルの参照する際に、マスターテーブル204なのか、DRAMログ205上の複製なのかを透過的に扱うことが出来るようにしている。
つぎに、ログの量がある値に達するとか、更新した各管理テーブル間で整合がとれる時点に達するなどの所定の条件が成立したときに、コミット処理が行われる。コミット処理では、逆引き情報のみを蓄積したDRAMログ205をマスターテーブル204の逆引きテーブル204bに反映するとともに、逆引き情報のみを蓄積したDRAMログ205を用いてマスターテーブル204の正引きテーブル204aを復元し、さらに逆引き情報のみを蓄積したDRAMログ205をNANDログ203としてNANDメモリ10に保存して不揮発化する。なお、コミット中において、DRAMログ205をマスターテーブル204に反映する際には、ホストからの割り込みreadを禁止としておく。
逆引き情報としてのクラスタブロック情報をコミットする時には、クラスタブロック情報毎に以下の処理を行う。
(1)DRAMログ205上のクラスタブロック情報と対応するマスターテーブル204の、論理ブロック内のクラスタアドレスを比較し、無効から有効になったクラスタアドレスを正引きアドレス変換テーブル(トラックテーブル30,クラスタディレクトリテーブル31,クラスタテーブル32)に反映する。
・トラック情報にクラスタディレクトリテーブル31、クラスタテーブル32が割り当てられていなければ、確保する。
・クラスタテーブル32に、クラスタブロック情報に対応する論理ブロックアドレスとクラスタ位置を設定する。
(2)対応するマスターテーブル204にDRAMログ205上のクラスタブロック情報をコピーする。
逆引き情報としてのトラックブロック情報をコミットする時には、トラックブロック情報毎に以下の処理を行う。
(1)DRAMログ205上のトラックブロック情報内のトラックアドレスに対応するトラック情報内のクラスタディレクトリテーブル31とクラスタテーブル32を解放する。
(2)対応するトラック情報にトラックブロック情報内の論理ブロックアドレスを設定する。
なお、スナップショットとしてのDRAM20上のマスターテーブル204は、正常な電源断シーケンスが発生する、ログの保存領域が不足した場合など所定の条件が成立したときに、NANDメモリ10にNAND管理テーブル202として保存される。
また、正常な電源断シーケンスが行われないで不正な電源断などが発生した場合、NANDメモリ10内のNAND管理テーブル202が最新の状態ではなく、NANDログ203が最新の状態である。例えば、NANDログ203およびNAND管理テーブル202のタイムスタンプ比較などからこのような事態を検出した場合、起動時、NANDメモリ10に記憶されたNAND管理テーブル(スナップショット)202をマスターテーブル204としてDRAM20に転送し、さらにNANDログ(逆引き情報のみ)203をDRAM20に転送してDRAMログ205(逆引き情報のみ)を作成し、作成したDRAMログ205をマスターテーブル204の逆引きテーブル204bに反映するとともに、このDRAMログ205を用いてマスターテーブル204の正引きテーブル204aを復元する。
正引き情報をログに含めないのは、ログの量を減らすことと、マスターテーブルおよびログの状態が不安定な更新作業時に正引きのマスターテーブルを更新しないようにすることで、正引きのマスターテーブルにDRAMログ205を反映する時以外は正引きのマスターテーブルを常に安定な状態にし、ホストからの割り込みReadに対応して常にマスターテーブルで正引きアドレス変換が出来るようにしておくためである。
また、データのNANDメモリ10のFS12やIS13への書き込み処理では、論理ブロック単位を意識し、ブロックの空きページを探し、そこにデータを追記書き込みしていく。ブロックの空き領域やブロック中にどのようなデータを保持しているかを示しているのは、逆引きテーブルであり、書き込み処理でもっぱら用いるのは逆引きテーブルである。また、そのような書き込み処理の際に、正引きテーブルは、穴埋め、上書きされたデータの無効化などにのみしか使用しない。こういう意味で、正引き情報よりも逆引き情報をログとして記憶しておいたほうが、設計が容易になり、設計コストも低減する。
このように本実施の形態では、逆引きテーブルの変更内容だけをログに記録し、正引きテーブルは、逆引きテーブルのログから構築するようにしており、ログの量を減らすことが可能となる。
なお、上記実施の形態では、逆引き情報のみをログとして記録するようにしたが、正引き情報のみを記録することで、ログを削減することも可能である。
[第2の実施の形態]
図16は、SSD100を搭載したパーソナルコンピュータ1200の一例を示す斜視図である。パーソナルコンピュータ1200は、本体1201、及び表示ユニット1202を備えている。表示ユニット1202は、ディスプレイハウジング1203と、このディスプレイハウジング1203に収容された表示装置1204とを備えている。
本体1201は、筐体1205と、キーボード1206と、ポインティングデバイスであるタッチパッド1207とを備えている。筐体1205内部には、メイン回路基板、ODD(optical disk device)ユニット、カードスロット、及びSSD100等が収容されている。
カードスロットは、筐体1205の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部1208が設けられている。ユーザは、この開口部1208を通じて筐体1205の外部から追加デバイスをカードスロットに挿抜することが可能である。
SSD100は、従来のHDDの置き換えとして、パーソナルコンピュータ1200内部に実装された状態として使用してもよいし、パーソナルコンピュータ1200が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
図17は、SSDを搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ1200は、CPU1301、ノースブリッジ1302、主メモリ1303、ビデオコントローラ1304、オーディオコントローラ1305、サウスブリッジ1309、BIOS−ROM1310、SSD100、ODDユニット1311、エンベデッドコントローラ/キーボードコントローラIC(EC/KBC)1311、及びネットワークコントローラ1312等を備えている。
CPU1301は、パーソナルコンピュータ1200の動作を制御するために設けられたプロセッサであり、SSD100から主メモリ1303にロードされるオペレーティングシステム(OS)を実行する。更に、ODDユニット1311が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも1つの処理の実行を可能にした場合に、CPU1301は、それらの処理の実行をする。
また、CPU1301は、BIOS−ROM1310に格納されたシステムBIOS(Basic Input Output System)も実行する。尚、システムBIOSは、パーソナルコンピュータ1200内のハードウェア制御のためのプログラムである。
ノースブリッジ1302は、CPU1301のローカルバスとサウスブリッジ1309との間を接続するブリッジデバイスである。ノースブリッジ1302には、主メモリ1303をアクセス制御するメモリコントローラも内蔵されている。
また、ノースブリッジ1302は、AGP(Accelerated Graphics Port)バス1314等を介してビデオコントローラ1304との通信、及びオーディオコントローラ1305との通信を実行する機能も有している。
主メモリ1303は、プログラムやデータを一時的に記憶し、CPU1301のワークエリアとして機能する。主メモリ1303は、例えばDRAMから構成される。
ビデオコントローラ1304は、パーソナルコンピュータ1200のディスプレイモニタとして使用される表示ユニット1202を制御するビデオ再生コントローラである。
オーディオコントローラ1305は、パーソナルコンピュータ1200のスピーカ1306を制御するオーディオ再生コントローラである。
サウスブリッジ1309は、LPC(Low Pin Count)バス上の各デバイス、及びPCI(Peripheral Component Interconnect)バス1315上の各デバイスを制御する。また、サウスブリッジ1309は、各種ソフトウェア及びデータを格納する記憶装置であるSSD100を、ATAインタフェースを介して制御する。
パーソナルコンピュータ1200は、セクタ単位でSSD100へのアクセスを行う。ATAインタフェースを介して、書き込みコマンド、読出しコマンド、フラッシュコマンド等がSSD100に入力される。
また、サウスブリッジ1309は、BIOS−ROM1310、及びODDユニット1311をアクセス制御するための機能も有している。
EC/KBC1311は、電力管理のためのエンベデッドコントローラと、キーボード(KB)1206及びタッチパッド1207を制御するためのキーボードコントローラとが集積された1チップマイクロコンピュータである。
このEC/KBC1311は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ1200の電源をON/OFFする機能を有している。ネットワークコントローラ1312は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
SSDの構成例を示すブロック図。 NANDメモリチップに含まれる1個のブロックの構成例と、4値データ記憶方式でのしきい値分布を示す図。 ドライブ制御回路のハードウェア的な内部構成例を示すブロック図。 プロセッサの機能構成例を示すブロック図。 NANDメモリおよびDRAM内に形成された機能構成を示すブロック図。 LBA論理アドレスを示す図。 データ管理部内の管理テーブルの構成例を示す図。 スナップショットとログの生成形態を概念的に示す図。 MSへの書き込み手順を示す図。 FSへの書き込みを示す図。 FSからISへのブロック移動をす図。 正引きアドレス変換を示す図。 逆引きアドレス変換を示す図。 本実施の形態の要部構成を示す機能ブロック図。 ログの蓄積、コミット、復元動作などを説明する図。 SSDを搭載したパーソナルコンピュータの全体図。 SSDを搭載したパーソナルコンピュータのシステム構成例を示す図。
符号の説明
1 ホスト装置、2 ATAインタフェース、4 ドライブ制御回路、 5 電源回路、7 温度センサ、10 NANDメモリ、11 MS、12 FS、13 IS、20 DRAM、21 WC、22 RC、24 WCトラックテーブル、25 WCトラック情報テーブル、26 高密度トラック情報テーブル、27 低密度トラック情報テーブル、30 トラックテーブル、31 クラスタディレクトリテーブル、32 クラスタテーブル、33 クラスタブロック情報テーブル、40 論物変換テーブル、120 データ管理部、201 ユーザデータ記憶部、202 NAND管理テーブル、203 NANDログ、204 マスターテーブル、205 DRAMログ、210 読み書き制御部、211 ログ制御部、212 ログ反映部。

Claims (3)

  1. 揮発性の第1の記憶部と、
    不揮発性の第2の記憶部と、
    前記第1の記憶部を介してホスト装置と前記第2の記憶部との間のデータ転送を行うコントローラとを備えるメモリシステムにおいて、
    前記第2の記憶部には、
    ホスト装置から指定された論理アドレスを前記第2の記憶部での記憶位置に対応付ける正引き情報を管理するため第1のアドレス変換テーブルと、
    前記第2の記憶部での記憶位置を前記論理アドレスに対応付ける逆引き情報を管理するための第2のアドレス変換テーブルと、
    が記憶され、
    前記コントローラは、
    前記第2の記憶部に記憶された第1および第2のアドレス変換テーブルを起動時にマスターテーブルとして前記第1の記憶部に転送するテーブル転送手段と、
    前記マスターテーブルを更新すべき事象が発生した際、第1の記憶部に記憶されている前記第1および第2のアドレス変換テーブルのうちの何れか一方についての更新前後の差分情報をログとして第1の記憶部に記憶するログ制御手段と、
    所定の条件が成立したときに前記第1の記憶部に記憶されたログを前記第2の記憶部に保存するとともに前記第1の記憶部に記憶されたログの内容を前記第1の記憶部に記憶されている前記マスターテーブルとしての第1および第2のアドレス変換テーブルに反映するログ反映手段と、
    前記第1の記憶部に記憶されているマスターテーブルおよびログを用いて前記データ転送制御を行う読み書き制御部と、
    を備えることを特徴とするメモリシステム。
  2. ログ制御手段は、所定の第2の条件が成立したときに、前記マスターテーブルを前記第2の記憶部にスナップショットとして保存し、
    前記ログ反映手段は、起動時、第2の記憶部に記憶されたログが、前記第2の記憶部に記憶されたスナップショットよりも新しい場合、第2の記憶部に記憶されたログの内容を用いて前記第1の記憶部に記憶されている前記マスターテーブルとしての第1および第2のアドレス変換テーブルを復元することを特徴とする請求項1に記載のメモリシステム。
  3. 前記ログ制御手段が第1の記憶部に記憶するログは、第2のアドレス変換テーブルによって管理される逆引き情報についての更新前後の差分情報であることを特徴とする請求項1または2に記載のメモリシステム。
JP2008335567A 2008-12-27 2008-12-27 メモリシステム Expired - Fee Related JP5198245B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2008335567A JP5198245B2 (ja) 2008-12-27 2008-12-27 メモリシステム
KR1020090084089A KR101095765B1 (ko) 2008-12-27 2009-09-07 메모리 시스템 및 그 제어 방법
US12/563,856 US8352706B2 (en) 2008-12-27 2009-09-21 Memory system managing address translation table and method of controlling thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008335567A JP5198245B2 (ja) 2008-12-27 2008-12-27 メモリシステム

Publications (2)

Publication Number Publication Date
JP2010157141A true JP2010157141A (ja) 2010-07-15
JP5198245B2 JP5198245B2 (ja) 2013-05-15

Family

ID=42286283

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008335567A Expired - Fee Related JP5198245B2 (ja) 2008-12-27 2008-12-27 メモリシステム

Country Status (3)

Country Link
US (1) US8352706B2 (ja)
JP (1) JP5198245B2 (ja)
KR (1) KR101095765B1 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013174972A (ja) * 2012-02-23 2013-09-05 Toshiba Corp メモリシステム、コントローラ、メモリシステムの制御方法
JP2014021622A (ja) * 2012-07-13 2014-02-03 Toshiba Corp メモリシステムおよびその制御方法
JP2014517412A (ja) * 2011-10-05 2014-07-17 株式会社日立製作所 ストレージシステム及びストレージ方法
EP2816483A1 (en) 2013-06-17 2014-12-24 Fujitsu Limited Information processing apparatus, control circuit, and control method
US9170929B2 (en) 2011-01-31 2015-10-27 Mitsubishi Electric Corporation Memory controller
US9870170B2 (en) 2015-09-10 2018-01-16 Toshiba Memory Corporation Memory controller, memory system and memory control method
US10019326B2 (en) 2015-07-15 2018-07-10 Toshiba Memory Corporation Memory system
JP2019049876A (ja) * 2017-09-11 2019-03-28 大日本印刷株式会社 電子情報記憶媒体、icカード、電子情報記憶媒体によるテーブル管理方法及びテーブル管理プログラム

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004034427A2 (en) 2002-10-08 2004-04-22 Honeywell International Inc. Semiconductor packages, lead-containing solders and anodes and methods of removing alpha-emitters from materials
JP4461170B2 (ja) 2007-12-28 2010-05-12 株式会社東芝 メモリシステム
CN101632068B (zh) 2007-12-28 2015-01-14 株式会社东芝 半导体存储装置
JP2009205555A (ja) * 2008-02-28 2009-09-10 Toshiba Corp メモリシステム
WO2009110303A1 (en) * 2008-03-01 2009-09-11 Kabushiki Kaisha Toshiba Memory system
JP4439569B2 (ja) * 2008-04-24 2010-03-24 株式会社東芝 メモリシステム
JP2010152514A (ja) * 2008-12-24 2010-07-08 Toshiba Corp メモリシステム
JP5376983B2 (ja) * 2009-02-12 2013-12-25 株式会社東芝 メモリシステム
US8443167B1 (en) 2009-12-16 2013-05-14 Western Digital Technologies, Inc. Data storage device employing a run-length mapping table and a single address mapping table
JP2011128998A (ja) 2009-12-18 2011-06-30 Toshiba Corp 半導体記憶装置
JP5404483B2 (ja) 2010-03-17 2014-01-29 株式会社東芝 メモリシステム
US8194340B1 (en) 2010-03-18 2012-06-05 Western Digital Technologies, Inc. Disk drive framing write data with in-line mapping data during write operations
US8693133B1 (en) 2010-03-22 2014-04-08 Western Digital Technologies, Inc. Systems and methods for improving sequential data rate performance using sorted data zones for butterfly format
US8856438B1 (en) 2011-12-09 2014-10-07 Western Digital Technologies, Inc. Disk drive with reduced-size translation table
US8699185B1 (en) 2012-12-10 2014-04-15 Western Digital Technologies, Inc. Disk drive defining guard bands to support zone sequentiality when butterfly writing shingled data tracks
US8687306B1 (en) 2010-03-22 2014-04-01 Western Digital Technologies, Inc. Systems and methods for improving sequential data rate performance using sorted data zones
US9330715B1 (en) 2010-03-22 2016-05-03 Western Digital Technologies, Inc. Mapping of shingled magnetic recording media
US8806134B2 (en) * 2010-04-16 2014-08-12 Pmc-Sierra Us, Inc. Mirrored cache protection
JP2012008651A (ja) 2010-06-22 2012-01-12 Toshiba Corp 半導体記憶装置、その制御方法および情報処理装置
US8713067B1 (en) * 2010-07-09 2014-04-29 Open Invention Network, Llc Stable file system
KR101058155B1 (ko) 2010-09-13 2011-08-24 양순옥 센서 네트워크에서 측정값의 편차만 메모리의 별도 저장영역에 저장하는 센서의 측정값 저장 방법 및 센서 장치
KR101736384B1 (ko) * 2010-09-29 2017-05-16 삼성전자주식회사 비휘발성 메모리 시스템
IL208641A0 (en) * 2010-10-12 2010-12-30 Eci Telecom Ltd Method for accelerating start up of a computerized system
JP2012128643A (ja) 2010-12-15 2012-07-05 Toshiba Corp メモリシステム
JP2012128645A (ja) 2010-12-15 2012-07-05 Toshiba Corp メモリシステム
JP2012128644A (ja) 2010-12-15 2012-07-05 Toshiba Corp メモリシステム
JP2012128816A (ja) * 2010-12-17 2012-07-05 Toshiba Corp メモリシステム
US9324433B2 (en) 2011-04-25 2016-04-26 Microsoft Technology Licensing, Llc Intelligent flash reprogramming
US8793429B1 (en) 2011-06-03 2014-07-29 Western Digital Technologies, Inc. Solid-state drive with reduced power up time
CN102314490B (zh) * 2011-08-16 2013-07-10 晨星软件研发(深圳)有限公司 一种Linux FAT文件系统修复方法及装置
US8832524B2 (en) 2011-09-22 2014-09-09 Violin Memory, Inc. System and method for correcting errors in data using a compound code
US9213493B1 (en) 2011-12-16 2015-12-15 Western Digital Technologies, Inc. Sorted serpentine mapping for storage drives
US9251055B2 (en) * 2012-02-23 2016-02-02 Kabushiki Kaisha Toshiba Memory system and control method of memory system
US8924636B2 (en) 2012-02-23 2014-12-30 Kabushiki Kaisha Toshiba Management information generating method, logical block constructing method, and semiconductor memory device
US9330117B2 (en) * 2012-06-08 2016-05-03 24/7 Customer, Inc. Business rules manager
JP6056453B2 (ja) * 2012-12-20 2017-01-11 富士通株式会社 プログラム、データ管理方法および情報処理装置
CN103970675A (zh) 2013-01-29 2014-08-06 Lsi公司 用于使引导操作系统加速的快速引导列表
US20140250277A1 (en) * 2013-03-04 2014-09-04 Kabushiki Kaisha Toshiba Memory system
US20140281160A1 (en) * 2013-03-14 2014-09-18 Kabushiki Kaisha Toshiba Non-volatile semiconductor storage apparatus
CN105144185B (zh) 2013-04-23 2018-06-05 惠普发展公司,有限责任合伙企业 验证控制器代码和系统启动代码
CN105308609B (zh) 2013-04-23 2017-12-29 惠普发展公司,有限责任合伙企业 存储事件数据的系统和方法
US9645894B2 (en) * 2013-12-26 2017-05-09 Silicon Motion, Inc. Data storage device and flash memory control method
US20150339069A1 (en) * 2014-05-22 2015-11-26 Kabushiki Kaisha Toshiba Memory system and method
US8953269B1 (en) 2014-07-18 2015-02-10 Western Digital Technologies, Inc. Management of data objects in a data object zone
US9875055B1 (en) 2014-08-04 2018-01-23 Western Digital Technologies, Inc. Check-pointing of metadata
US9747041B2 (en) 2015-12-23 2017-08-29 Intel Corporation Apparatus and method for a non-power-of-2 size cache in a first level memory device to cache data present in a second level memory device
US20170199687A1 (en) * 2016-01-12 2017-07-13 Kabushiki Kaisha Toshiba Memory system and control method
US10353813B2 (en) 2016-06-29 2019-07-16 Western Digital Technologies, Inc. Checkpoint based technique for bootstrapping forward map under constrained memory for flash devices
US10235287B2 (en) 2016-06-29 2019-03-19 Western Digital Technologies, Inc. Efficient management of paged translation maps in memory and flash
US11216361B2 (en) 2016-06-29 2022-01-04 Western Digital Technologies, Inc. Translation lookup and garbage collection optimizations on storage system with paged translation table
US10229048B2 (en) 2016-06-29 2019-03-12 Western Digital Technologies, Inc. Unified paging scheme for dense and sparse translation tables on flash storage systems
US10175896B2 (en) 2016-06-29 2019-01-08 Western Digital Technologies, Inc. Incremental snapshot based technique on paged translation systems
KR20180064588A (ko) * 2016-12-05 2018-06-15 에스케이하이닉스 주식회사 메모리 제어 장치 및 방법
US10289421B2 (en) * 2017-02-17 2019-05-14 Dell Products, L.P. Booting of IHS from SSD using PCIe
US11112970B2 (en) * 2017-06-12 2021-09-07 Sap Se Software system logging based on runtime analysis
JP2019057172A (ja) * 2017-09-21 2019-04-11 東芝メモリ株式会社 メモリシステムおよび制御方法
JP2019057178A (ja) * 2017-09-21 2019-04-11 東芝メモリ株式会社 メモリシステムおよび制御方法
US11599403B2 (en) * 2018-10-03 2023-03-07 SK Hynix Inc. Logging mechanism for memory system
KR102553261B1 (ko) 2018-10-10 2023-07-07 삼성전자 주식회사 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 스토리지 장치, 및 상기 메모리 컨트롤러의 동작 방법
WO2020159533A1 (en) 2019-02-01 2020-08-06 Hewlett-Packard Development Company, L.P. Security credential derivation
US11520662B2 (en) 2019-02-11 2022-12-06 Hewlett-Packard Development Company, L.P. Recovery from corruption
KR20210027563A (ko) * 2019-08-28 2021-03-11 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11132140B1 (en) 2020-04-24 2021-09-28 Seagate Technology, Llc Processing map metadata updates to reduce client I/O variability and device time to ready (TTR)
CN113870916B (zh) * 2020-06-30 2024-03-26 长鑫存储技术有限公司 半导体装置
US20200363998A1 (en) * 2020-08-07 2020-11-19 Intel Corporation Controller and persistent memory shared between multiple storage devices
CN112379833A (zh) * 2020-11-12 2021-02-19 阿米华晟数据科技(江苏)有限公司 文件缓存装置、文件缓存、闲置空间回收及故障恢复方法
US11775382B2 (en) * 2020-12-09 2023-10-03 Micron Technology, Inc. Modified parity data using a poison data unit
CN115877113A (zh) * 2023-01-12 2023-03-31 北京得瑞领新科技有限公司 Ssd供电抗干扰能力测试方法、装置、存储介质及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999032977A1 (fr) * 1997-12-22 1999-07-01 Tdk Corporation Systeme de memoire flash
JP2005115857A (ja) * 2003-10-10 2005-04-28 Sony Corp ファイル記憶装置
JP2005242897A (ja) * 2004-02-27 2005-09-08 Oki Electric Ind Co Ltd フラッシュディスク装置
JP2006107379A (ja) * 2004-10-08 2006-04-20 Sony Corp 情報処理装置及び情報処理方法、並びにコンピュータ・プログラム
JP2006350572A (ja) * 2005-06-14 2006-12-28 Ricoh Co Ltd 記憶装置、画像形成装置及びシステムデータ管理方法
JP2009020986A (ja) * 2007-07-15 2009-01-29 Hitachi Global Storage Technologies Netherlands Bv ディスク・ドライブ装置及びディスク・ドライブ装置において不揮発性半導体メモリ領域上のデータを管理するテーブルを保存する方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3935139B2 (ja) 2002-11-29 2007-06-20 株式会社東芝 半導体記憶装置
JP2005222202A (ja) 2004-02-04 2005-08-18 Matsushita Electric Ind Co Ltd 不揮発性記憶装置のデータ保護方法
US7814057B2 (en) 2005-04-05 2010-10-12 Microsoft Corporation Page recovery using volume snapshots and logs
US7554855B2 (en) 2006-12-20 2009-06-30 Mosaid Technologies Incorporated Hybrid solid-state memory system having volatile and non-volatile memory
JP4967680B2 (ja) 2007-01-23 2012-07-04 ソニー株式会社 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法
JP4675984B2 (ja) 2008-02-29 2011-04-27 株式会社東芝 メモリシステム
US8706950B2 (en) 2008-03-01 2014-04-22 Kabushiki Kaisha Toshiba Memory system
JP4643667B2 (ja) 2008-03-01 2011-03-02 株式会社東芝 メモリシステム
JP4551940B2 (ja) 2008-03-01 2010-09-29 株式会社東芝 メモリシステム
JP4691123B2 (ja) 2008-03-01 2011-06-01 株式会社東芝 メモリシステム
JP4653817B2 (ja) 2008-03-01 2011-03-16 株式会社東芝 メモリシステム
US8484432B2 (en) 2008-03-11 2013-07-09 Kabushiki Kaisha Toshiba Memory system
JP4762261B2 (ja) 2008-03-12 2011-08-31 株式会社東芝 メモリシステム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999032977A1 (fr) * 1997-12-22 1999-07-01 Tdk Corporation Systeme de memoire flash
JP2005115857A (ja) * 2003-10-10 2005-04-28 Sony Corp ファイル記憶装置
JP2005242897A (ja) * 2004-02-27 2005-09-08 Oki Electric Ind Co Ltd フラッシュディスク装置
JP2006107379A (ja) * 2004-10-08 2006-04-20 Sony Corp 情報処理装置及び情報処理方法、並びにコンピュータ・プログラム
JP2006350572A (ja) * 2005-06-14 2006-12-28 Ricoh Co Ltd 記憶装置、画像形成装置及びシステムデータ管理方法
JP2009020986A (ja) * 2007-07-15 2009-01-29 Hitachi Global Storage Technologies Netherlands Bv ディスク・ドライブ装置及びディスク・ドライブ装置において不揮発性半導体メモリ領域上のデータを管理するテーブルを保存する方法

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9170929B2 (en) 2011-01-31 2015-10-27 Mitsubishi Electric Corporation Memory controller
JP2014517412A (ja) * 2011-10-05 2014-07-17 株式会社日立製作所 ストレージシステム及びストレージ方法
US8972651B2 (en) 2011-10-05 2015-03-03 Hitachi, Ltd. Storage system and storage method
US9529537B2 (en) 2011-10-05 2016-12-27 Hitachi, Ltd. Storage system and storage method
JP2013174972A (ja) * 2012-02-23 2013-09-05 Toshiba Corp メモリシステム、コントローラ、メモリシステムの制御方法
JP2014021622A (ja) * 2012-07-13 2014-02-03 Toshiba Corp メモリシステムおよびその制御方法
EP2816483A1 (en) 2013-06-17 2014-12-24 Fujitsu Limited Information processing apparatus, control circuit, and control method
US10019326B2 (en) 2015-07-15 2018-07-10 Toshiba Memory Corporation Memory system
US9870170B2 (en) 2015-09-10 2018-01-16 Toshiba Memory Corporation Memory controller, memory system and memory control method
JP2019049876A (ja) * 2017-09-11 2019-03-28 大日本印刷株式会社 電子情報記憶媒体、icカード、電子情報記憶媒体によるテーブル管理方法及びテーブル管理プログラム

Also Published As

Publication number Publication date
US8352706B2 (en) 2013-01-08
KR20100077117A (ko) 2010-07-07
US20100169551A1 (en) 2010-07-01
KR101095765B1 (ko) 2011-12-21
JP5198245B2 (ja) 2013-05-15

Similar Documents

Publication Publication Date Title
JP5198245B2 (ja) メモリシステム
JP5317689B2 (ja) メモリシステム
JP5317690B2 (ja) メモリシステム
US8868842B2 (en) Memory system, method of controlling memory system, and information processing apparatus
JP5376983B2 (ja) メモリシステム
US9201717B2 (en) Memory system
US9021190B2 (en) Memory system
KR101079890B1 (ko) 메모리 시스템
US8527727B2 (en) Semiconductor storage device, with organizing-state notify processing
JP4691123B2 (ja) メモリシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110318

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130206

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

Free format text: PAYMENT UNTIL: 20160215

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 5198245

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

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

Free format text: PAYMENT UNTIL: 20160215

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees