JP5162846B2 - 記憶装置、コンピュータシステム、および記憶システム - Google Patents

記憶装置、コンピュータシステム、および記憶システム Download PDF

Info

Publication number
JP5162846B2
JP5162846B2 JP2006137844A JP2006137844A JP5162846B2 JP 5162846 B2 JP5162846 B2 JP 5162846B2 JP 2006137844 A JP2006137844 A JP 2006137844A JP 2006137844 A JP2006137844 A JP 2006137844A JP 5162846 B2 JP5162846 B2 JP 5162846B2
Authority
JP
Japan
Prior art keywords
page
data
area
recovery process
erase
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006137844A
Other languages
English (en)
Other versions
JP2007058840A5 (ja
JP2007058840A (ja
Inventor
利幸 西原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP2006137844A priority Critical patent/JP5162846B2/ja
Priority to US11/493,904 priority patent/US9183132B2/en
Priority to KR1020060071459A priority patent/KR20070015074A/ko
Publication of JP2007058840A publication Critical patent/JP2007058840A/ja
Publication of JP2007058840A5 publication Critical patent/JP2007058840A5/ja
Application granted granted Critical
Publication of JP5162846B2 publication Critical patent/JP5162846B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • 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
    • 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/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Description

本発明は、不揮発性メモリを含む記憶装置およびそれを備えたコンピュータシステム、並びに記憶システムに関するものであり、特にフラッシュメモリを含む記憶装置におけるデータ転送の高速化に関わるものである。
近年、デジタルスチルカメラやモバイルコンピュータ機器の記憶媒体として、フラッシュメモリが注目されている。
フラッシュメモリは、トンネリングやホットエレクトロン加速を用いて、電子にゲート絶縁膜を通過させ、それらを浮遊ゲートやトラップ層に注入し、セルトランジスタの閾値を変化させることでデータを記憶させる半導体メモリである。積層ゲート構造やMNOS構造等を用いたトランジスタ1つのみでメモリセルを構成できるため、安価かつ大容量のメモリを実現できる。
その代表例として、NAND型フラッシュメモリが挙げられる。
図1は、NAND型フラッシュメモリの内部構成例を示す図である。
図1のNAND型フラッシュメモリは、ビット線BL1〜BLnに接続された複数のメモリユニット1−1〜1−nがアレイ状(縦横)に配列されている。
たとえば、選択用トランジスタ2のゲートが選択ゲート線SL1に接続され、選択用トランジスタ3のゲートが選択ゲート線SL2に接続されている。また、各メモリセルN0〜N15のゲートがワード線WL0〜WL15に接続されている。
各メモリセルN0〜N15は積層ゲート構造を持ち、浮遊ゲートへの電荷蓄積量に従ってデータを記憶する。すなわち、浮遊ゲートに多くの電子が蓄積されていると、トランジスタの閾値が上昇するので、チャージされたビット線BL1〜BLnからのメモリユニット1(−1〜−n)への電流貫通の有無を、センスアンプ等を含むアクセス回路4で検出してデータ判定を行う。
このようなNAND型フラッシュメモリは、メモリセル毎にビット線へのコンタクト領域を設ける必要もないので、特に大容量で安価な記憶装置の媒体に適している。
ところで、一般にフラッシュメモリのプログラム速度は非常に遅く、セルあたり数百μ秒を必要とする。またデータの上書きはできないので、プログラムに先立って消去を行う必要があり、これには数ミリ(m)秒もの時間がかかる。このような問題に対しては、多くのメモリセルを並列処理することで対処している。
すなわち、たとえば同一ワード線WL0に接続され、ページ単位を成すメモリセル群5を、同時一括に書き込み、さらに互いにメモリユニットを共有するページ群で構成されるセルブロック6を全て一括で消去することにより、プログラムの転送速度を向上させている。
具体的には、たとえば非特許文献1には1GbのNAND型フラッシュメモリが掲載されており、ページサイズを2kバイト、消去ブロックサイズを128kBとしている。すなわち、一つのメモリアレイ内で128kバイトのメモリセル群を並列消去し、そこにメモリセルを2kバイト毎に並列でプログラムしていくことによって、10MB/sのプログラム転送速度を実現している。
また、近年フラッシュメモリはさらに多値化や微細化が進んでおり、それに伴う信号量の低下に対処するため、より非選択セルへの悪影響の少ない書き込み手法が検討され、実施されている。
たとえばNAND型フラッシュにおいては、消去ブロック内のページの書き込み順にも制限をつけたものが主流になりつつある。
特許文献1等にはその一つとしてローカルセルフブースト(Local Self−Boost)と呼ばれる手法を用いた書き込み手順が記載されている。
図1のNAND型フラッシュメモリにおいて、そのような書き込みの例を以下に説明する。
たとえば、メモリセルN1に書き込みを行い、その浮遊ゲートに電子を注入する場合、まず、メモリセルN1を挟む前後のワード線WL0,WL2をそれぞれ0Vにし、さらに選択用トランジスタ2をオンし、選択用トランジスタ3をオフにする。ここでビット線BL1を0V、書き込みを行いたくない隣接ビット線BL2を3Vとして、選択ワード線WL1を20Vに、それ以外の全ワード線WL3〜WL15を10Vに持ち上げる。
このような書き込み手順を用いると、0Vのワード線WL0,WL2にはさまれ、かつ非選択ビット線に繋がるノードは他のノードから切り離され、ワード線WL1からのカップリングを受けて10V程度まで電位が上昇する。
一方、選択されたメモリセルN1については、隣接したセルトランジスタN0がディプレッション状態の時に限って、ビット線BL1に印加された0VがセルトランジスタN1のチャンネルに伝達され、書き込みが実施される。
すなわち、上のような書き込み手法を用いる場合、書き込みを実施するセルのビット線側の隣接セルは常に消去され、ディプレッション状態に成っている必要がある。そのため、ブロック全体を消去した後、書き込みはメモリセルN15、N14、N13、・・・、N0と順になされることが必須の条件となる。
このように近年の大容量フラッシュメモリは、そのページ書き込みにおいても、ランダムな書き込みは許されず、ブロック中の上位アドレスから下位アドレスにむけて順次書き込みを行うことが必須とされる傾向にある。
ISSCC2002予稿集のp106、セッション6.4 特開2002−260390号公報 特開平8−328762号公報
近年、ハードディスクの消費電力の大きさや、シーク時間の長さ、耐衝撃性や携帯性等の問題を解消すべく、フラッシュメモリにその代替が期待されている。
しかし上述の如く、フラッシュメモリにはアクセス単位を大きくしないと高速化できないという欠点がある。また、データの上書きができないので、書き換えには必ず消去が必要であり、その際の消去ブロックはさらに大きい。このようにアクセス単位に対して消去単位が数十倍大きいのは、消去時間が長く、かつ書き込み時に非選択セルにディスターブが生じるフラッシュメモリには一般的な仕様である。しかしこれによりその書き込み効率は著しく低下する。
たとえば上記2kB単位のページ書き込み、128kB単位のブロック消去による、転送速度10MB/sフラッシュメモリを用いて、ハードディスク代替用の記憶装置を構成するとする。
その転送速度を、シリアルATA接続の高速ストレージで目標とされる160MB/sにまで高めようとした場合、マルチバンクやマルチチップの構成を取りながら、たとえば16個のメモリアレイを並列動作させる必要がある。
図2は、そのような記憶装置を構成するフラッシュメモリの概念図を示す図である。
図2において、高速転送を実現するため、16個のアレイAR0〜AR15を同時に動作させる。この場合データ書き込み時は、たとえばページP0,P1を同時書き込みし、消去時はブロックB0〜B15を同時消去する。このとき括書き込み単位となる実ページ領域21は32kB、一括消去単位となる実消去ブロック領域22は2MBに達することになる。
一方、通常のファイルシステムでは、最小の書き込み単位を成すクラスタサイズは4kB程度であり、この単位でランダムなアクセスがなされる。
さらに、通常のファイル記憶装置は、ATA等のインターフェース仕様に従って、たとえば512バイトのセクタ単位でランダムアクセスされる。
その場合、たとえばページP0とP1のみを書き換える要求が頻繁に発生する。
しかし、上述のような装置でそのようなアクセスを行うと、結局実消去ブロック領域22全体を消去しなければならない。かつその中の非選択領域に有効ファイルがあれば、それを消失から保護する必要がある。その典型的な対処例は次のようになる。
1.まずフラッシュメモリから、別途設けられたバッファメモリ23のメモリ領域24に、実消去ブロック領域22全体のデータを読み出す。
2.次にメモリ領域24内で、ページP0とP1に相当するデータを更新する。
3.次にフラッシュメモリ上のブロック領域22の消去を実行する。
4.最後に上記消去済みの領域22に、更新後のメモリ領域24のブロックデータを全て書き戻す。
すなわち、4kバイトの書き込みのために、実際には消去と、2MBのデータの読み出しおよび書き込みが必要となる。
具体的には、1ページ分のデータの読み出しおよび書き込みにはそれぞれ200マイクロ秒(μs)を要し、ブロックの消去には2ミリ秒(ms)を要するので、30ミリ秒(ms)近くを必要とする。
これに対し、予め予備の消去済みブロック25を用意しておいて、消去済みブロック25に領域22の元のデータとページP0とP1の更新後データを合成させて書き込みを行う手法もある。
この場合、仮想アドレス構成を用いて消去ブロック単位で論理アドレスと物理アドレスの対応を更新し、アクセス対象とされた論理アドレスに対応する物理ブロックは元の消去ブロック領域22からデータの移動先ブロック領域25に入れ替える。
以下、仮想アドレス構成を用いて、たとえば消去ブロック内の1ページのみを書き換える際の手順の一例を、図3(A),(B)を用いて具体的に説明する。
図3(A)はフラッシュメモリ30記憶領域を、図3(B)はアドレステーブル40を示している。
なお、この種の手法で現在最も頻繁に使用されているのは、消去ブロック単位でアドレス変換を実施するやり方である。
アドレステーブル40を参照することにより、論理ブロックアドレス(Logical Block Address =LBA)をインデックスとして、対応する消去ブロックのフラッシュメモリ上のアドレスである物理ブロックアドレス(Phisical Block Address =PBA)を取得することができる。
たとえば、ホストまたはアプリケーションが”0x55”のブロックアドレスへのアクセスを要求した場合、そのアドレスはテーブルにより”0x6B”に変換され、フラッシュメモリ30の消去ブロック31にアクセスが実施される。
このような管理下におけるフラッシュメモリ上のデータ更新手順は以下の通りである。
1.予め予備の消去済みブロック32を用意しておく。その物理アドレスは”0xAA”とする。
2.論理ブロックアドレス”0x55”が指定され、対応する物理ブロックアドレス”0x6B”が取得され、ブロック31内のページ33にアクセスがなされたとする。このとき、フラッシュメモリ30の書き換え対象ブロック31から、別途設けられたページバッファ34)を介して、予備ブロック32にデータを順次コピーしていく。
3.更新対象となるページ33のコピー時には、ページバッファ34上で所望の箇所を更新してコピーを行い、コピー先ページ35にそれが反映される。
4.有効なページデータのコピーが全て完了したら、アドレステーブル40上で、ブロック31と予備ブロック32のアドレスを入れ替える。
5.最後に元ブロック31の消去を実施する。
このような手順によって、以降論理ブロックアドレス”0x55”に対しては、物理ブロックアドレス”0xAA”に対応する消去ブロック、すなわち、予備ブロック32がアクセスされるようになり、全体との整合性が保たれる。
しかしこの場合、1ページを更新するために、ブロック31のデータ全体を予備ブロック32に退避させる作業が必要であり、そのためにブロック31内の全データのページバッファ34への読み出しと、予備ブロック32への書き込みが必要になる。
したがって、この場合も現実の転送性能は著しく低いものになってしまう
このような事情から、フラッシュメモリを用いた現在の記憶装置は、特に書き込み時においては、ハードディスクをはるかに下回る転送性能しか得られていない。
また、消去ブロック内の書き込み順序にも制限がついた場合、問題はさらに深刻となる。
一般のファイルシステムにおいては、セクタ間の書き込み順序に保証はなされない。したがって、消去ブロック途中から書き込みがなされることがしばしばあるが、その場合、ブロック内におけるそれより上位のアドレス領域が空いていても、そこにデータは書き込めなくなる。その結果、後でそれらの領域に書き込み要求が出ると、書き換えと同様の処理が必要となり、前述のデータ退避や消去、書き込みを繰り返さざるを得なくなってしまう。
このような問題は単に転送性能を低下させるのみならず、フラッシュメモリの消去回数を増加させ、その寿命まで低下させてしまう。
一方、上述の如き問題を緩和するデータの保存手法として、追記型の記憶システムが提案されている。
このようなシステムにおいては、書き換えは、更新データを空き領域に追記し、元のデータを無効化することで実施される。
より具体的には、論理アドレスを物理アドレスに対応させるアドレス変換テーブルを用い、書き換えは対照データの物理アドレスを変更し、記憶メディアの空き領域に追記することで実施する。
たとえば、特許文献2(特開平8−328762号公報)には、アドレス変換テーブルを用いた追記型記憶システムにおける管理方法の詳細が記載されている。
図4(A),(B)は、アドレス変換テーブルを用いた追記型記憶システムにおける管理方法の一例を説明するための図である。
図4(A)はフラッシュメモリ50に記憶領域を、図4(B)はアドレステーブル60を示している。
アドレステーブル60を参照することにより、論理ページアドレス(Logical Page Address =LPA)をインデックスとして、対応するページのフラッシュメモリ上のアドレスである物理ページアドレス(Phisical Page Address =PPA)を取得することができる。
たとえば、ホストから指定された論理ページアドレス”0x5502”への書き込みに対して、アドレステーブルを用いてページ単位でアドレス変換を実施し、フラッシュメモリ50上の物理ページアドレス”0x6B05”を取得する。これによりブロック51内の対応するページ領域53へアクセスが実施される。
一方、同ページに更新を行う際には、フラッシュメモリ50内で直接書き込める適当な空きページ領域が検索される。たとえば物理ブロックアドレス”0xAA”に相当する消去済み空きブロック52の先頭ページ領域55が適切な書き込み先として選択された場合、ページ領域53のデータのみがページバッファ34Aを介して更新され、ページ領域55に書き込まれる。この際、論理ページアドレス”0x5502”はページ領域55の物理アドレス”0xAA00”にリマッピングされる。ページ領域53上の旧データは、当面そのまま残して無効扱いとしておく。
このような管理を実施すれば、フラッシュメモリ内に空き領域が存在する限りは、各ページデータの更新に対して1ページ分のデータ書き込みで良い。したがって、高速に書き換えを実施することができる。その間消去の必要も無いので、フラッシュメモリの書き換え回数も大幅に低減でき、その寿命も向上させることができる。
しかし、このような追記型記憶システムでは、無効化した元データ領域が無駄になる。したがって、そのような領域は消去して、再度書き込みが可能となるよう回復処理を行うことが必要である。
しかしその場合、特に消去ブロックが複数のページ領域を含むと、無効化されたページ領域と同じ消去ブロック内に有効データを含むページ領域が存在するケースが多発する。このようなブロックを回復させるには、消去前に有効ページのみを、他のブロックに退避させる必要がある。
一方、このような各ページの有効/無効の情報をフラグによってRAM上に保管した場合、フラッシュデバイスの容量増加に伴って、フラグ保管に必要なRAM容量が著しく増加してしまう。
本発明の目的は、特に高並列化された高速なフラッシュメモリシステムを構築するにあたって、上述のオーバーヘッドを見かけ上消滅させ、常時高速なアクセスを可能とする新しいストレージ構成を実現可能な記憶装置、コンピュータシステム、および記憶システムを提供することにある。
また、本発明の目的は、特に追記型記憶システムにおいてブロック消去を実施する際、RAM等のハードウエアリソースをなるべく使用せず、有効ページと無効ページを識別判定し、有効ページのみを他のブロックに速やかに退避させることが可能な記憶システムを提供することにある。
本発明の第1の観点の記憶装置は、主記憶としてフラッシュメモリを有し、上記フラッシュメモリにおける少なくとも一部領域の書き換えは、更新データを空き領域に追記し、元のデータを無効化する追記型の書き込みで実施され、外部からアクセスの無い装置の待機時に、上記無効化領域を自動的に消去して空き領域に回復する回復処理を行う機能を有し、当該記憶装置に格納されたデータに外部からアクセスが生じた場合に、上記回復処理を実行中であれば、当該回復処理を中断し、アクセスへの応答処理を行い、当該アクセスへの応答処理が終了し、待機状態になってから上記回復処理を再開する機能を有し、上記フラッシュメモリは一括消去単位である消去ブロックを複数有し、各消去ブロックは各々独立した書き込み単位であるページ領域を複数含み、上記回復処理は、回復対象たる無効ページ領域を含む消去ブロックに残存する有効ページ領域のデータを、他の消去ブロックの消去済みの空き領域に退避する処理を含み、消去対象として選択されたブロックに対して、別途システム内のメモリ上に設けたフラグを用いて有効ページを判定する処理、およびページ書き込み時に同時記載された論理アドレスと物理アドレスの対応がアドレス管理テーブルと照合しているか否かから有効ページを判定する処理により有効ページを判定し、その退避を行う
好適には、待機時にブロックを検査し、同一ブロック内に一定数以上の無効ページ領域が存在する場合、空き領域に対して、一定割合以上の無効ページ領域が存在する場合、および空き領域が全体の容量の一定割合以下である場合のいずれかを含む場合に、回復処理の実行を判定する
好適には、上記回復処理を中断する場合、回復処理の進捗情報を装置内のレジスタもしくはメモリに保存し、上記アクセスが終了すると当該進捗情報を参照して回復処理を再開する機能を有する。
好適には、上記回復処理の進捗情報の少なくとも一部が、不揮発性RAM内に記録されている。
好適には、上記不揮発性RAMとは、少なくとも強誘電体メモリ(FeRAM)、強磁性体メモリ(MRAM)、相変化メモリ(OUM)、磁気抵抗効果メモリ(RRAM)のいずれかである。
好適には、内部に処理ユニットを有し、待機時に当該処理ユニットは上記回復処理を実施し、外部からアクセスが生じると当該処理ユニットに割り込みが発生し、当該割り込みイベントに従って上記処理ユニットは回復処理を中断し、アクセス処理を開始する。
好適には、ひとつの消去ブロック内に存在する一つまたは複数の無効ページ領域の回復処理は、複数の工程に分割され、外部からアクセスの無い記憶装置の待機時に、その一部が実行される。
本発明の第2の観点の記憶装置は、主記憶としてフラッシュメモリを有し、上記フラッシュメモリにおける少なくとも一部領域の書き換えは、更新データを空き領域に追記し、元のデータを無効化する追記型の書き込みで実施され、外部から所定のコマンドに応じて、上記無効化領域を消去して空き領域に回復する処理を実行する機能を有し、当該記憶装置に格納されたデータに外部からアクセスコマンドが生じた場合に、上記回復処理を実行中であれば、当該回復処理を中断し、アクセスへの応答処理を行い、当該アクセスへの応答処理が終了し、待機状態になってから上記回復処理を再開する機能を有し、上記フラッシュメモリは一括消去単位である消去ブロックを複数有し、各消去ブロックは各々独立した書き込み単位であるページ領域を複数含み、上記回復処理は、回復対象たる無効ページ領域を含む消去ブロックに残存する有効ページ領域のデータを、他の消去ブロックの消去済みの空き領域に退避する処理を含み、消去対象として選択されたブロックに対して、別途システム内のメモリ上に設けたフラグを用いて有効ページを判定する処理、およびページ書き込み時に同時記載された論理アドレスと物理アドレスの対応がアドレス管理テーブルと照合しているか否かから有効ページを判定する処理により有効ページを判定し、その退避を行う
好適には、外部からの所定のコマンドに応じて、上記回復処理を中断する際、回復処理の進捗情報を装置内のレジスタもしくはメモリに保存し、再度回復処理の実行コマンドを受けると、当該進捗情報を参照して回復処理を再開する機能を有する。
好適には、ひとつの消去ブロック内に存在する一つまたは複数の無効ページ領域の回復処理は、複数の工程に分割され、外部(ホスト)から所定のコマンドに応じて、その一部が実行される。
本発明の第3の観点の記憶装置は、主記憶としてのフラッシュメモリと、キャッシュメモリと、を有し、上記フラッシュメモリにおける少なくとも一部領域の書き換えは、更新データを空き領域に追記し、元のデータを無効化する追記型の書き込みで実施され、外部からのアクセスがキャッシュメモリにヒットし、キャッシュへのアクセスが実施される間に、上記無効化データを消去して空き領域に回復させる処理の少なくとも一部を並行して実施する機能を有し、外部からのアクセスがキャッシュメモリにミスヒットした場合に、上記回復処理を実行中であれば、当該回復処理を中断し、アクセスへの応答処理を行い、当該アクセスへの応答処理が終了し、外部からのアクセスがキャッシュメモリにヒットしたときまたは待機状態になってから上記回復処理を再開する機能を有し、上記フラッシュメモリは一括消去単位である消去ブロックを複数有し、各消去ブロックは各々独立した書き込み単位であるページ領域を複数含み、上記回復処理は、回復対象たる無効ページ領域を含む消去ブロックに残存する有効ページ領域のデータを、他の消去ブロックの消去済みの空き領域に退避する処理を含み、消去対象として選択されたブロックに対して、別途システム内のメモリ上に設けたフラグを用いて有効ページを判定する処理、およびページ書き込み時に同時記載された論理アドレスと物理アドレスの対応がアドレス管理テーブルと照合しているか否かから有効ページを判定する処理により有効ページを判定し、その退避を行う
好適には、ひとつの消去ブロック内に存在する一つまたは複数の無効ページ領域の回復処理は、複数の工程に分割され、外部からのアクセスがキャッシュメモリにヒットしてキャッシュへのアクセスが実施される間に、その一部が実行される。
本発明の第4の観点のコンピュータシステムは、ホストコンピュータと、主記憶としてフラッシュメモリを含み、上記ホストコンピュータで扱う諸データを記憶するための不揮発性データストレージと、を有し、上記フラッシュメモリにおける少なくとも一部領域の書き換えは、更新データを空き領域に追記し、元のデータを無効化する追記型の書き込みで実施され、上記無効化領域を消去して空き領域に回復させる処理が、上記データストレージに対してそれ以外のデータ処理要求の無い待機時に実施され、前記データストレージに対してデータ処理要求が生じた場合に、上記回復処理を実行中であれば、当該回復処理を中断し、アクセスへの応答処理を行い、当該アクセスへの応答処理が終了し、待機状態になってから上記回復処理を再開する機能を有し、上記フラッシュメモリは一括消去単位である消去ブロックを複数有し、各消去ブロックは各々独立した書き込み単位であるページ領域を複数含み、上記回復処理は、回復対象たる無効ページ領域を含む消去ブロックに残存する有効ページ領域のデータを、他の消去ブロックの消去済みの空き領域に退避する処理を含み、消去対象として選択されたブロックに対して、別途システム内のメモリ上に設けたフラグを用いて有効ページを判定する処理、およびページ書き込み時に同時記載された論理アドレスと物理アドレスの対応がアドレス管理テーブルと照合しているか否かから有効ページを判定する処理により有効ページを判定し、その退避を行う
好適には、上記ホストコンピュータにおいて、データストレージへのデータアクセスの要求が生じた場合に、上記回復処理を実行中であれば、当該回復処理を一時中断し、当該一時中断する際、回復処理の進捗情報をコンピュータシステム内部のいずれかのレジスタまたはメモリ内に保管し、再度回復処理を実行する際には当該進捗情報を参照して処理を再開、継続する。
本発明の第5の観点の記憶システムは、記憶媒体としてのフラッシュメモリと、制御回路と、を有し、上記フラッシュメモリは、一括消去単位である消去ブロックを有し、各消去ブロックは複数のデータ領域を含み、上記制御回路は、消去ブロックの消去を実行する前に、各データ領域ごとに、少なくとも領域の一部を読み出し、当該読み出した値から当該データ領域に有効なデータが記録されているか否かを判定し、判定の結果、有効なデータが記録されている場合に、当該データ領域のデータを他の消去ブロックにコピーする。
好適には、上記制御回路は、上記データ領域の一部に記載されたフラグ値を読み出し、当該フラグ値が所定の値であれば有効と判定する。
好適には上記制御回路は、上記データ領域の一部に記載されたハンドル値を読み出し、当該データのメモリ上の物理アドレスとハンドル値との対応を所定のテーブルと対照し、一致している場合に有効と判定する。
このように、本記憶装置においては、フラッシュメモリにおける課題解決のため、追記型の記憶システムに着目している。
通常型の書き換えでは、有効ページ領域の退避等をはじめとする冗長な処理が、ユーザーのアクセスに応じてその都度発生する。それは、アクセスされるデータ領域の状況に依存する不可避な処理であって、その発生時期をアクセスと独立に制御することは困難である。
一方、追記型書き換えでは、無効化データ領域の回復時に同様のオーバーヘッドが生じるが、その発生時期はユーザーのアクセス状況にかかわらず、ストレージシステムもしくはホストの都合に応じて自由に決定することができる。
ところで、通常の用途において、データストレージは常にアクセスされているわけではなく、むしろアクセスの無い期間の方が長い。したがって、フラッシュメモリに直接アクセスの無い期間を抽出し、その期間を利用して上記回復処理を実施する機能を設けることにより、回復処理に伴うオーバーヘッドを見かけ上消滅させることができる。
本発明によれば、フラッシュメモリを記憶メディアとして使用しつつ、実使用上常態的に高速な書き換えを実現することができる。その消去回数も減少させることができ、書き換え疲労を低減することで、信頼性の高い書き換えが可能である。
さらにそのような性能向上を得つつ、フラッシュメモリにおいて無効化された領域の回復も適切に実施できる。
そして、フラッシュメモリを記憶メディアとして使用しつつ高速な書き換えを実現しつつ、低コストなハードウエアでフラッシュメモリ上の記憶領域を有効に活用できる。
以下、本発明の実施形態を図面に関連付けて説明する。
図5は、本第1の実施形態に係る記憶装置を示す構成図である。図6は、第1の実施形態に係る制御回路のアドレス変換テーブルおよびページ状態の管理テーブルの構成例を示す図である。
図5の記憶装置70は、インターフェース回路(I/F)71、ページバッファ72、内部データバス73、制御回路74、およびNAND型フラッシュメモリ75,76を、主構成要素として有している。
記憶装置70において、32ビットの内部データバス73には、16ビットの入出力を持つ2チップのNAND型フラッシュメモリ75,76が並列接続されている。2つのチップのフラッシュメモリ75,76は読み出しや書き込みにおいて、同時並列にアクセスされる。
ページバッファ72は、アクセスされたページ領域を一時記憶するバッファであり、外部とのインターフェース回路71に接続されている。
制御回路74は、メモリチップであるフラッシュメモリ75,76とページバッファ72およびインターフェース回路71の間のデータのやりとりを管理するコントローラであり、処理ユニットである内蔵CPU85によって制御される。同じく内蔵されたRAM77には、CPU85を制御するためのプログラム領域やワークエリアが確保されるとともに、アドレス変換テーブル78、およびページ状態の管理テーブル86が構築されている。
本記憶装置70のアクセスは以下のようになされる。ここでは簡単のため、16進数のアドレスは次のように割り振られるとする。たとえば外部入力アドレスが”0x5500C”であった場合、上位の”0x5500”はページアドレス、下位”0xC”はページ領域内のセクタアドレスであり、本記憶装置70は1セクタ単位でランダムアクセスが可能である。
読み出しの際、外部から”0x5500C”のセクタドレスが入力されると、制御回路74は上位のページアドレスを受けて内蔵RAM77にアクセスし、アドレス変換テーブル78から論理ページアドレス(LA:LOGICAL ADDRESS)”0x5500”に対応する物理ページアドレス(PA:PHISICAL ADDRESS)”0x00B0”を取得する。
この物理ページアドレスPA中、上位の”0x00”はメモリチップのフラッシュメモリ75,76内の消去ブロック83,84のアドレスである。下位”0xB0”は各消去ブロック内のページ領域79,80のアドレスである。
この物理アドレスPAをもとにメモリチップのフラッシュメモリ75,76が共にアクセスされ、各々からページアドレス”0x00B0”に格納されたページ領域79,80のデータが読み出され、ページバッファ72に格納される。インターフェース回路71はその中から、下位アドレス”0xC”に相当するセクタを選択し、外部に出力する。
一方、外部から”0x5500C”に書き込みを行う場合は、まず読み出しと同様の手順でページ領域79,80のデータがメモリチップのフラッシュメモリ75,76から読み出され、ページバッファ72に格納される。その後下位アドレス”0xC”に相当するセクタが選択され、外部から入力されたデータに更新される。
更新後のページデータは、フラッシュメモリ75,76に書き戻されるが、その際読み出し元のページ領域79,80が書き換えられるのでは無く、空き領域81,82に書き込まれる。
このページ領域の物理ページアドレスは”0x0280”であり、すなわち消去ブロック”0x02”内の”0x80”のページに相当する。またこの処理の前まで、その領域はアドレス変換テーブル78のいずれの物理アドレスフィールドにも登録されていない、未使用の空きページであった。
更新後のデータがこの領域に追記の形で書き込まれるとともに、アドレス変換テーブル78の論理アドレス”0x5500”に対応する物理アドレスフィールドには、空き領域81,82の物理ページアドレス”0x0280”が登録される。
このように更新データを追記するための空き領域の管理は、たとえば図6に示すようなページ状態管理テーブル86をRAM77上に構築して使用する。
本テーブルは(BA:Block Address)で表現される各消去ブロックに格納された各々のページの状態を2ビットのフラグ列で記録している。”0”は空き領域であり、”1”は書き込みが行なわれた有効領域、”2”はデータが更新され、無効化された無効領域を示す。
図6の状態はブロックアドレス”0x02”における物理ページ”0x80”以降が全て空き状態になっている。たとえば追記のための空き領域を決定するために、現在検索対象としているブロック”0x02”へのポインタをメモリ領域87に保存しておく。
フラッシュへの書き込み要求があれば、その上位ページからこのテーブルのフラグをスキャンして空きページ領域を検索する。ブロック全ての空き領域が使用されていると、ポインタをインクリメントし、次は”0x03”のブロックから空きページ領域を探す。
このようにしてポインタをブロックアドレスの先頭から末尾にかけて循環させていけば、フラッシュメモリ全域に対して均一な書き込みが実施できる。
本構成では二つのメモリチップであるフラッシュメモリ75,76が並列化され、各々から読み出されたページデータが、ページバッファ72に一括格納される。この際単独チップを使用した場合に比べてメモリ容量は2倍になるが、これは一括アクセス単位であり、アドレス変換テーブル78の管理単位でもあるページ領域の容量が2倍になることで実現されるので、ページ数は増加しない。したがってアドレス変換テーブル78は変化せず、それを格納するメモリ(RAM)77の容量も増加しない。
一方、並列化の弱点である消去回数の増加や、書き換え疲労が加速することはページ単位のアドレス変換を用いた追記型の書き込みで大幅に緩和される。
なお、たとえば大型のファイル書き換え等、消去ブロック全体を書き換える場合には、有効データの退避処理はもともと不要であり、ブロック消去のみで良い。したがって、このようなケースでは上記追記型書き込みの採用の有無で大きな性能差は生じない。したがって一般的な通常型書き換えと追記型書き換えをケースに応じて組み合わせても良い。
ところで、上述の如き追記型書き込みを実施した場合、更新前のデータが格納されていた物理ページアドレス”0x00B0”に相当するページ領域79,80はアドレス変換テーブル78の物理アドレスフィールドから削除され、外からアクセスできなくなる。すなわち無効化される。
しかしそれらにはデータが書き込まれており、そのままでは空き領域として使用することもできない。上述のような書き換えを何度も繰り返すと、多くの無効ページ領域が発生する。それらは再度空き領域として使用できるよう、消去して回復させる必要がある。またその場合、消去ブロック83,84に残された有効データは退避させなければならない。
このような回復処理は、たとえばまず対象ブロック内の有効データを、更新の際と同様に一旦ページバッファに読み出してから予備のページ領域に追記で書き込んでいき、それによって実質的な退避を行なえば良い。すなわち有効ページを仮更新することで、その元領域を全て無効化する。その後対象ブロックを消去することによって、回復処理が実施される。
図7(A)〜(C)は、無効領域の回復手順を説明するための図である。
図7(A)〜(C)には、消去ブロック83,84内部の有効データを退避し、無効ページ領域を実質的に回復させる、具体的手順<1>、<2>、<3>を例示している。
手順<1>
図6の状態からさらに追記による書き換えが進行し、消去ブロック83,84には、一度データが書き込まれた後、更新によって無効化されたページ領域群94,96が、有効なページ領域群93,95,97と共存しているとする。ここで有効ページ領域のデータを残しつつ、無効化領域を空き領域に回復させる必要がある。
一方、ブロック91,92は現在追記用の空き領域として使用している消去ブロックであり、ページ領域102まで書き込みが行われている。
手順<2>
有効なページ領域群93,95,97を消去ブロック91,92内の空き領域98,99,100に上詰めにして順番にコピーしていく。この際たとえば図5のページバッファ72に消去ブロック83,84から順次1ページ領域ずつを読み出し、消去ブロック91,92に書き込むとともに、アドレス変換テーブル78を更新する。すなわち各々のページ領域の論理アドレスに対応する物理アドレスフィールドに、コピー先の物理ページアドレスを登録していく。
この操作は、すなわち有効ページ領域群93,95,97を追記方式で書き換える作業(処理)に等しい。
実際には書き換えずコピーするのみであるが、この作業によって消去ブロック83および84内の全てのページは無効化され、有効ページ領域のデータは消去ブロック91,92に実質的に退避させられる。
手順<3>
消去ブロック83,84を消去する。これによってその内部は全て空き領域となり、後の追記に使用することが可能になる。これをもって無効領域94,96は実効的に回復される。
このように無効ページ領域の回復処理は、各有効ページ領域のコピーによる退避処理と、元消去ブロックの消去よりなる。また、回復対象となる消去ブロック内の有効ページに通常の更新処理と同様の手順でダミーの更新を施し、それをもってページの退避を実行すれば、回復処理時の有効ページ退避を通常の書き込みアルゴリズムに統合させることが可能である。
この場合、制御が容易になるばかりではなく、フラッシュメモリへの書き込みの均一化等、書き込み時の信頼性向上のための各種工夫を回復処理にも適用することができ、記憶装置の総合的な信頼性を向上させることができる。
ここにおいて、本発明の第1の実施形態は、上記フラッシュメモリへの追記型書き込みを採用した半導体記憶装置の内部に、その待機時に無効化された領域の回復処理を自動的に実施する機構を設けるものである。
ここでいう待機時とは、たとえば記憶装置に電源が入り、その初期化作業が終わって、いつでもアクセス可能でありながら、外部からアクセス要求の無い状態である。実際にハードディスクのようなファイル記憶装置は、常時外部からアクセスされている訳ではなく、むしろ待機状態の方が長い。
またはたとえば映像の録画のように、記憶装置に見かけ上継続的にアクセスがなされている場合でも、ホストから記憶装置に入力される平均的なデータ転送量が記憶装置自体のもつデータ転送能力より十分小さければ、実際にはホスト側バッファが一定量の映像データを蓄積した後でまとめて装置にデータが入力されることになる。したがってバッファに映像データを蓄積する間、装置は待機状態となる。
図8は、このような装置が回復処理を実行する制御手順の例を示すフローチャートである。
記憶装置は電源が入り、アクセスに必要となる初期化がなされた後(ST1)、無効ページ領域の回復処理を実行する。それは以下のステップST2〜ST5の処理の繰り返しから成る。
<ステップST2>
無効化されたページ領域を探査し、その回復処理を実施すべきか否かを、しかるべきアルゴリズムで判定する。たとえば以下のようなケースでの回復が有効である。
・同一ブロック内に一定数以上の無効ページ領域が存在する。
(このようなブロックは実質的に回復されるページ数が多い一方、退避の必要なページ数が少ない。したがって効率的な回復が可能である。)
・空き領域に対して、一定割合以上の無効ページ領域が存在する。
・空き領域が全体の容量の一定割合以下である。
回復処理が不要な場合は、処理を終了し、単にアクセスを待って何も実施しない通常の待機状態に入る。
<ステップST3>
回復処理が必要と判定されれば、回復対象とする消去ブロックと、他の消去ブロック内の退避先の空き領域を選定し、回復処理をスタートする。
<ステップST4>
回復対象となった消去ブロック中に、退避すべき有効ページ領域があるか否かを判定する。もしあれば、上位から1ページ領域ずつ空き領域に上詰でコピーしていく。各ページのコピーが完了する都度に、アドレス変換テーブルを更新する。
<ステップST5>
全ての有効ページ領域の退避が完了したら、元ブロックを消去する。
なお、このような記憶装置には、外部からアクセス要求がなされた際に、上記回復処理を中断する機構が必要である。また一つの消去ブロックに対して、その中の無効化ページ領域を回復処理させるには消去だけで数ミリ秒を要し、さらにステップST2〜ST5の処理を全て完了するには数十ミリ秒を要することもある。したがってそれらを分割して処理させる機構が必要である。
このような要求に対応する有効な施策の一つは、ステップST2〜ST5を記憶装置内のCPU(たとえば図5における内蔵CPU85)の制御で処理し、外部からアクセスコマンドが入力されるとCPUに割り込みをいれて、アクセスへの応答処理プログラムに制御を渡すことである。
すなわち記憶装置内部を制御するCPUへの割り込みでアクセスへの応答処理を実施すれば、回復処理が上記ステップST2〜ST5のどの工程にあってもその中断が可能である。この場合フラッシュメモリへのページデータの書き込みが開始されていれば、その1ページの書き込みを完了させ、アドレステーブルを更新させてから処理を中断する。これにより数百マイクロ(μ)秒程度の遅延で安全にアクセス処理を開始できる。
また、フラッシュへメモリの消去が開始されていれば、消去を完了したところで処理を中断する。これにより数ミリ秒の遅延で安全にアクセス処理を開始できる。
さらにフラッシュメモリチップ自体に中断処理に対応できる仕様が搭載されていれば、書き込みや消去動作の途中でも直ちにフラッシュメモリをリセットし、数十マイクロ秒のオーダーで要求されたデータアクセスを開始することが可能である。
この場合、書き込みや消去は中途半端な状態で中断されるが、書き込んでいたページ領域や消去中であった消去ブロックの所在が解れば、アクセス応答処理の完了後、再度上記書き込みまたは消去処理を再開することで、問題なく処理を完了できる。
なお、いずれの場合においても、回復処理を中断した場合には、その進捗状況を記憶装置内のメモリかレジスタに記録しておき、アクセスへの応答処理が完了すると、その情報に基づいて回復処理を再開することが望ましい。
たとえば、ステップST2〜ST5の処理中途で中断が成された際は、少なくとも回復対象の消去ブロックの所在を進捗情報として保存しておく。また望ましくは回復処理を中断したことを示すフラグを立てておく。その他必要に応じて有効ページの退避先の空き領域や退避中だったページの所在等を記録しておいても良い。
これらの情報は、たとえば図5におけるRAM77内の適当な領域に保存する。たとえばCPUを制御するファームウエア内で、変数として保存しておけば良い。
アクセスへの応答処理が完了すると再度待機状態に戻り、たとえばステップST2から回復処理が再開される。
その際、ステップST2では前記フラグに基づいて中断された処理があることを判定し、回復処理に進む。
ステップST3の処理で前回の処理を継続するように、回復対象の消去ブロックと退避先の空き領域を選択する。
さらにステップST4では、中断時に有効ページデータはどこまで退避が完了したか、もしくは既に退避は完了し、元ブロックの消去中に中断されたのかを検査、判定し、その情報に従って未完了の工程から回復処理を実施する。
このような構成をとることで、ホストからは全く意識されることなく、記憶装置内部で自動的に回復処理が実行される。アクセスが入ると自動的に回復処理を中断し、高速にアクセスへの応答処理を実行する。
ホストからは通常のハードディスクと同じインターフェース仕様やコマンドを使用することが可能である。たとえばATA、PCI−エクスプレス、USB等の汎用インターフェースを用い、かつ各規格ごとに用意された標準的なコマンドのみで動作させることができるので、専用のドライバーを用意する必要も無い。同様に、一般的なフラッシュメモリカード等を置き換えることも容易である。
ところで前述の例では、追記型書き換えで発生した無効ページ領域の回復処理ST2〜ST5を、ホストからのアクセス要求に伴うCPU割り込みで中断し、分割しながら実行した。すなわち本来数十ミリ秒かかる回復処理を、分割しつつアクセスの合間に実行した訳である。
しかし、回復処理の分割方法には各種バリエーションが考えられる。たとえば上記図8のステップST2〜ST5の回復処理を、予めより小さな作業に分割しておき、それを単位として実行して行けば、割り込みなしでも迅速にアクセスに対応できる。その例を図9に示す。
図9は、第1の実施形態の変形例であって、無効ページ領域回復の分割単位処理を説明するためのフローチャートである。
記憶装置は電源が入り、アクセスに必要となる初期化がなされた後(ST11)、無効ページ領域の回復処理を分割単位ごとに実行する。分割単位処理は以下のステップST12〜ST15の処理より成る。
<ステップST12>
無効化されたページ領域を探査し、その回復処理を実施すべきか否かを、しかるべきアルゴリズムで判定する。ここで、消去ブロックレベルで完了していない未完了の回復処理が残存している場合、その継続処理に進む。回復処理が不要な場合は、処理を終了し、単にアクセスを待って何も実施しない通常の待機状態に入る。
<ステップSR13>
回復処理が必要と判定されれば、回復対象とする消去ブロックと、退避先の空き領域を選定し、回復処理をスタートする。未完了の回復処理が残存している場合、そこで作業対象となっていた消去ブロックが選択される。
<ステップST14>
回復対象となった消去ブロック中に、退避すべき有効ページ領域があるか否かを判定する。もしあれば、再上位の1ページを空き領域に上詰でコピーする(ST16)。さらにアドレス変換テーブル78を更新して分割単位処理を完了する(ST17)。
<ステップST15>
全ての有効ページ領域の退避が完了していたら、元ブロックを消去して、分割単位処理を完了する。なおフラッシュメモリチップに消去動作を中断し、再度同じブロックを消去することで分割して消去できる機能があれば、所定の時間消去を行って、消去完了前でもそれを中断し、分割単位処理を完了しても良い。すなわち分割消去を行っても良い。
なお、上記分割単位処理が終了し、また消去ブロックレベルでの無効ページ領域の回復作業が未完了である場合は、回復作業中の消去ブロック、或いは消去の累計時間等、回復処理の進捗情報を、記憶装置内のメモリかレジスタに保存しておくことが望ましい。
このような分割単位処理は、処理ごとに一旦作業を終了しても良いが、外部(ホスト)からアクセス要求が入っていない場合には、図のように継続して次の分割単位処理を実行しても良い。
次に、本発明の第2の実施形態について説明する。
本発明の第2の実施形態は、外部からの専用の回復コマンドに従って上記回復処理を実施する形態である。
図10は、本第2の実施形態に係る回復処理を説明するためのフローチャートである。
上述した第1の実施形態においては、装置が待機状態になると自動的に回復処理が実施されるのに対して、本第2の実施形態では装置外部から入力された回復コマンドに従って回復処理を実施する。図中、破線で示した無効ページ領域の回復処理ST21〜ST26は、第1の実施形態における図8の処理(作業)ST2〜ST7と同様である。
さらに、本第の実施形態では、ユーザーからの所定のコマンドに応じて回復処理を中断する機能を持つ。たとえばそれがデータへのアクセスコマンドであればアクセスの応答処理を行い、回復処理の中断のみを行うコマンドであれば装置をアクセス待機状態に推移させる。
アクセスコマンド、回復処理の開始コマンド、回復処理の中断コマンドは、統一的にCPUへの割り込み処理をイベントとして、それぞれの処理ルーチンが実行されるようにする。
また、回復処理を中断した場合、第1の実施形態と同様に、その進捗状況を記憶装置内のメモリかレジスタに記録しておき、再度回復コマンドが入力されると、その情報に基づいて回復処理を再開することが望ましい。
たとえばステップST21〜ST24の処理中途で中断が成された際は、少なくとも回復対象の消去ブロックの所在を進捗情報として保存しておく。また望ましくは回復処理を中断したことを示すフラグを立てておく。その他必要に応じて有効ページの退避先の空き領域や退避中だったページの所在等を記録しておいても良い。これらの情報は、たとえば図5におけるRAM77内の適当な空き領域に保存する。
再度回復コマンドが入力されると、再び、ステップST21から回復処理が再開される。その際、ステップST21では前記フラグに基づいて中断された処理があることを判定し、回復処理に進む。
ステップST22で前回の処理を継続するように、回復対象の消去ブロックと退避先の空き領域を選択する。
さらに、ステップST23では、中断時に有効ページデータはどこまで退避が完了したか、もしくは既に退避は完了し、元ブロックの消去中に中断されたのかを検査、判定し、その情報に従って未完了の工程から回復処理を実施する。
本第2の実施形態においては、ホスト側が回復処理の開始時期を判断する必要があり、記憶装置の管理に独自のコマンドや作業を要する一方で、ユーザー入力やアプリケーションプラグラムの状況に応じて、最も適切な時期に回復処理を実行できる利点がある。
また装置へのアクセスを事前に予測して、回復処理を中断し、待機状態に推移させておけば、中断処理に要する時間が不要となり、より迅速なアクセスへの応答処理が可能になる。
たとえばユーザーからのキー入力やマウス入力が一定時間なければ回復処理を開始し、入力が入ったところで回復処理を中断する。
ところで第2の実施形態においては、追記型書き換えで発生した無効ページ領域の回復処理ステップST21〜ST24を、中断コマンド等に伴う割り込みで分割した。
しかし、第1の実施形態の変形例と同様に、予め回復処理をより小さな作業に分割しておき、それを単位として実行して行けば、割り込みなしでも迅速にアクセスに対応できる。
図11は、第2の実施形態の変形例であって、無効ページ領域回復の分割単位処理を説明するためのフローチャートである。
図中、破線で示した無効ページ領域回復の分割単位処理ST31〜ST36は、第1の実施形態の変形例における図9の処理(作業)ST12〜ST17と同様である。
なお、上記分割単位処理が終了し、また消去ブロックレベルでの無効ページ領域の回復作業が未完了である場合は、作業中の消去ブロック、或いは必要に応じて消去の累計時間等、回復処理の進捗情報を、記憶装置内のメモリかレジスタに保存しておくことが望ましい。
またこのような分割単位処理は、ホストからのコマンドに応じて複数回それを繰り返したり、分割作業の内容を変える等、さまざまなバリエーションが存在し得る。さらに一回のコマンドで1消去ブロック分の回復処理をまとめて行う「非分割モード」を追加しても良い。
次に、本発明の第3の実施形態について説明する。
本発明の第3の実施形態は、記憶装置内部にキャッシュメモリを設け、それにヒットしている間に回復処理を行うものである。
図12は、本発明の第3の実施形態に係る記憶装置を示す構成図である。また、図13は、第3の実施形態に係る制御回路のアドレス変換テーブルの構成例を示す図である。
図12の記憶装置110は、インターフェース回路(I/F)111、ページバッファ112、内部データバス113、制御回路114、NAND型フラッシュメモリ115,116、キャッシュメモリ117、および第2の内部データバス118を、主構成要素として有している。
記憶装置110において、32ビットの内部データバス113には、16ビットの入出力を持つ2チップのNAND型フラッシュメモリ115,116が並列接続されている。2つのチップのフラッシュメモリ115,116は読み出しや書き込みにおいて、同時並列にアクセスされる。
ページバッファ112はアクセスされたページ領域を一時記憶するバッファであり、外部とのインターフェース回路111に第2の内部データバス118を介して接続されている。さらに第2の内部データバス118にはキャッシュメモリ117が接続されている。
制御回路114は、メモリチップのフラッシュメモリ115,116とページバッファ112、キャッシュメモリ117、およびインターフェース回路111の間のデータのやりとりを管理するコントローラであり、内蔵CPU119によって制御される。
同じく内蔵されたRAM120には、CPU119を制御するためのプログラム領域やワークエリアが確保されるとともに、アドレス変換テーブル121が構築されている。
さらに制御回路114には、CPUの制御無しでキャッシュメモリ117とインターフェース回路111間のデータ転送を制御する制御回路122が搭載されている。
本記憶装置110のアクセスは、基本的には図5に示された第1の実施形態と同じである。ただし外部ホストと本記憶装置110の主記憶たるフラッシュメモリ115,116との間でやりとりされたデータの一部はキャッシュメモリ117の中に保存される。
ホストが本記憶装置110を再度アクセスし、キャッシュメモリ117内に保存されたものと同じ論理アドレスのデータをアクセスしようとすると、キャッシュメモリ117側のデータがアクセスされる。したがってこの間、ページバッファ112、内部データバス113、NAND型フラッシュメモリ115,116はいずれもアクセスに使用されない。本第3の実施形態ではその間を無効ページ領域の回復処理に利用する。
図14は、本第3の実施形態に係る回復処理を説明するためのフローチャートである。図中、破線で示した無効ページ領域の回復処理は、第1の実施形態における図8の処理(作業)ST2〜ST7と同様である。
この例では第1の実施形態同様、装置が待機状態になると自動的に回復処理が実施されるが、割り込みによる回復処理の中断が入るのは、キャッシュメモリ117のミスヒット時である。
装置立ち上げ後、ホストからのアクセスがキャッシュにヒットしている間、アクセス処理は制御回路122に任され、CPU119は無効ページ領域の回復処理を実施する。
キャッシュがミスヒットすると、制御回路122はCPU119に割り込みをかけ、CPU119はそれに応じてミスヒットへの応答処理を実施する。
具体的にはホストのアクセス要求に応じてアドレス変換テーブル121を参照し、そこで取得された物理アドレスからフラッシュメモリ115,116をアクセスし、ページバッファ112を介してページデータの書き込みまたは読み出しを行う。
また必要に応じてホストからの入力データまたはホストへの出力データをキャッシュメモリ117にキャッシュする。
なお、回復処理を中断した場合、第1の実施形態と同様に、その進捗状況を記憶装置内のメモリかレジスタに記録しておき、再度回復コマンドが入力されると、その情報に基づいて回復処理を再開することが望ましい。
たとえばステップST42〜ST45の処理中途で中断が成された際は、少なくとも回復対象の消去ブロックの所在を進捗情報として保存しておく。また望ましくは回復処理を中断したことを示すフラグを立てておく。その他必要に応じて有効ページの退避先の空き領域や退避中だったページの所在等を記録しておいても良い。これらの情報は、たとえば図12におけるRAM120内の適当な空き領域に保存する。
ミスヒットへの応答処理が完了すると、アクセス制御は再び制御回路122に渡され、CPU119は回復処理をステップST42から再開する。
その際、ステップST42では、前記フラグに基づいて中断された処理があることを判定し、回復処理に進む。
ステップST43で前回の処理を継続するように、回復対象の消去ブロックと退避先の空き領域を選択する。
さらにステップST44では、中断時に有効ページデータはどこまで退避が完了したか、もしくは既に退避は完了し、元ブロックの消去中に中断されたのかを検査、判定し、その情報に従って未完了の工程から回復処理を実施する。
ところで第3の実施形態においては、キャッシュがヒットしている間、もしくは待機時に実施されていた無効ページ領域の回復処理ST42〜ST45を、キャッシュのミスヒットに伴う割り込みで分割した。しかし第1の実施形態の変形例と同様に、予め回復処理をより小さな作業に分割しておき、それを単位として実行して行けば、割り込みなしでも迅速にアクセスに対応できる。
図15は、第3の実施形態の変形例であって、無効ページ領域回復の分割単位処理を説明するためのフローチャートである。
図中、破線で示した無効ページ領域回復の分割単位処理は、第1の実施形態の変形例における図9の処理(作業)ST12〜ST15と同様である。
なお、上記分割単位処理が終了し、また消去ブロックレベルでの無効ページ領域の回復作業が未完了である場合は、作業中の消去ブロックの所在、或いは必要に応じて消去の累計時間等、回復処理の進捗情報を、記憶装置内のメモリかレジスタに保存しておくことが望ましい。
このような分割単位処理は、処理ごとに一旦作業を終了しても良いが、キャッシュのミスヒットが発生していない場合には、図のように次の分割単位処理を実行しても良い。
また第3の実施形態において、無効ページ領域回復の分割単位処理を用いた異なる変形例について説明する。
図16は、第3の実施形態に第2の変形例であって、無効ページ領域回復の分割単位処理を説明するためのフローチャートである。
ここではキャッシュヒットを起点として回復処理を実施している。
すなわちホストからのアクセスがキャッシュメモリ117にヒットすると、CPU119はアクセスへの応答を制御回路122に渡し(ST61)、無効ページ領域回復の分割単位処理を実施する。破線で示した無効ページ領域回復の分割単位処理は、第1の実施形態の変形例における図9の処理(作業)ST12〜ST17と同様である。
以上3つの第1〜第3の実施形態について詳細に述べたが、このように無効ページ領域の回復処理を分割して実施する際、最も分割単位が長くなるのはブロックの消去である。
たとえばNAND型フラッシュメモリでは1ページのコピーが150〜200マイクロ(μ)秒程度で終了するのに対し、消去は1〜2ミリ(m)秒かかる。したがってホストがアクセスを行う際の遅延時間は、消去時がワーストとなる。
たとえば、ホスト上のプログラムが記憶装置を用いて作業を行う場合、そのワーストの遅延を基準として全ての作業に対応したマージンを見込むケースがしばしばある。その場合プログラムの処理速度は大きな影響を受けてしまう。
このような課題に対処するには、アクセスの合間に行う回復処理はページコピーのみに留め、ブロック消去は電源オン時またはオフ時にまとめて実施すれば良い。
電源オン・オフ時であれば、ユーザーは体感速度として200ミリ(m)秒以下の遅延は殆ど気にしない。したがって電源オンまたはオフ時だけでは100ブロック以上を消去することが可能となる。
または未消去ブロックの消去のみを実施するコマンドを持たせても良い。たとえばユーザーからの入力が暫く無い場合、ホストがそのようなコマンドを実施すれば、ユーザーが体感的な遅れを感じることなくブロック消去を実施することができる。
第1の実施形態について、電源オン時にまとめて消去を実行した例を、第4の実施形態として説明する。第4の実施形態の装置構成は第1の実施形態の図5と同じである。
図17は、本第4の実施形態における無効領域の回復処理を説明するためのフローチャートである。
記憶装置70に電源が入り、アクセスに必要となる初期化がなされると(ST71)、まず装置内部では予め消去可能としてマークされていた退避済みブロックの消去が開始される(ST72)。その完了の後に、無効ページ領域の回復処理が実行される。それは以下のステップST73〜ST76の処理フローの繰り返しから成る。
<ステップST73>
無効化されたページ領域を探査し、その回復処理を実施すべきか否かを、しかるべきアルゴリズムで判定する。回復処理が不要な場合は、処理を終了し、単にアクセスを待って何も実施しない通常の待機状態に入る。
<ステップST74>
回復処理が必要と判定されれば、回復対象とする消去ブロックと、退避先の空き領域を選択し、回復処理をスタートする。
<ステップST75>
回復対象となった消去ブロック中に、退避すべき有効ページ領域があるか否かを判定する。もしあれば、上位から1ページ領域ずつ空き領域に上詰でコピーしていく(ST77)。各ページのコピーが完了する都度に、アドレス変換テーブルを更新する(ST78)。
<ステップST76>
全ての有効ページ領域の退避が完了したら、元ブロックを「退避済みブロック」としてマークする。マークの手法としてはたとえばブロックの末尾ページにフラグを立てるか、或いは退避済みブロックの物理アドレスを装置内のどこかに保存する。
外部からアクセスコマンドが入力されるとCPUに割り込みが入り、アクセスへの応答処理プログラムに制御が渡される。この場合、フラッシュメモリへのページデータの書き込みが開始されていれば、その1ページの書き込みを完了させ、アドレステーブルを更新させてから処理を中断する。これにより数百マイクロ(μ)秒程度の遅延で安全にアクセス処理を開始できる。
以上一例を示したが、第1〜第3の実施形態および各々の変形例の全てに対して同様の対処が可能であることは言うまでも無い。
なお、上述のような場合でも、ホストからの書き換え時に消去済みブロック数が不足した場合は、その時点で消去を実施するのが望ましい。
以上、本発明を用いた記憶装置について具体的な実施形態を述べたが、装置内部の構成はモディファイすることができる。
たとえば図5におけるページバッファ72は、制御回路74内部のRAM77上に構築しても良い。そのような場合にはインターフェース回路71、フラッシュメモリ75,76および制御回路74は共通の内部データバス73で接続された構成となる。
またはページバッファ72とフラッシュメモリ75,76との間にECCによるエラー訂正回路を設けて、ページバッファからフラッシュメモリへのページデータ書き込み時には符号化を実施してパリティビットを追加し、フラッシュメモリからページバッファへのページデータ読み出し時には復号化を行なっても良い。そのような装置構成の違いに関わらず、本発明を適用することは可能である。
または先に説明した第1〜第4の実施形態で述べたように、アドレス変換テーブル78,121に従ってページ単位のアドレス変換を実施した後、フラッシュメモリ内の欠陥ブロックをスキップするために、さらにブロックレベルでのアドレス変換を挿入しても良い。このような場合でも、前述した例と同様の制御で、本発明は問題なく適用することが可能である。
ところでここまでは、独立した記憶装置の内部に回復処理機構を設ける場合について説明してきた。
しかし、このようなアドレス変換テーブルの管理と回復処理を、ホスト側の制御で実施することも可能である。そのようなコンピュータシステムを第5の実施形態として、図18に示す。
図18は、本第5の実施形態に係るコンピュータシステムの構成例を示す図である。また、図19は、第5の実施形態に係る制御回路のアドレス変換テーブルの構成例を示す図である。
図18のコンピュータシステム130は、処理ユニットとしてのCPU131、システムメモリであるRAM132、システムバス133、ブリッジ回路134、NAND型フラッシュメモリ135,136、データバス137、およびページバッファ138を、主構成要素として有している。
CPU131は32ビットのシステムバス133を介してシステムメモリであるRAM132と接続されている。さらに、システムバス133にはブリッジ回路134が接続されている。ブリッジ回路134に繋がる32ビットのデータバス137には、16ビットの入出力を持つ2チップのNAND型フラッシュメモリ135,136が並列接続されている。2つのチップのフラッシュメモリ135,136は読み出しや書き込みにおいて、同時並列にアクセスされる。
ページバッファ138はアクセスされたページ領域を一時記憶するバッファであり、ブリッジ回路134に内蔵されている。
ブリッジ回路134はCPU131から各種コマンドを受け取り、フラッシュメモリ135,136とCPU131またはシステムメモリ132との間のデータのやり取りを、ページバッファ138を用いて媒介する。
ブリッジ回路134が受け取るコマンドは、たとえばフラッシュメモリ135,136の所定のページへのアクセスの他、同フラッシュメモリの所定ブロックの消去、および所定ページの指定アドレスへのコピー、フラッシュメモリのリセット等である。
一方、システムメモリ132内には上記フラッシュ記憶システムを制御するためのドライバー139が常駐している。このドライバー139は、オペレーティイングシステム(OS)やアプリケーションからの記憶装置へのアクセスを受け、同じメモリ中に構成されたアドレス変換テーブル140を参照してアクセス時のページアドレスを変換する。
本記憶システムのアクセスは以下のようになされる。ここでは簡単のため、16進数のアドレスは次のように割り振られるとする。たとえば外部入力アドレスが”0x5500C”であった場合、上位の”0x5500”はページアドレス、下位”0xC”はページ領域内のセクタドレスであり、本記憶装置は1セクタ単位でランダムアクセスが可能である。
読み出しの際、たとえばアプリケーションからアドレス”0x5500C”のセクタの読み出しが要求されると、ドライバー139は上位のページアドレスを受けてアドレス変換テーブル140から論理ページアドレス(LA:LOGICAL ADDRESS)”0x5500”に対応する物理ページアドレス(PA:PHISICAL ADDRESS)”0x00B0”を取得する。
この物理ページアドレスPA中、上位の”0x00”はメモリチップのフラッシュメモリ135,136内の消去ブロック141,142のアドレスである。下位”0xB0”は各消去ブロック内のページ領域143,144のアドレスである。
この物理アドレスをもとに、ブリッジ回路134を介してメモリチップのフラッシュメモリ135,136が共にアクセスされ、各々からページアドレス”0x00B0”に格納されたページ領域143,144のデータが読み出され、ページバッファ138に格納される。
ブリッジ回路134はその中から、下位アドレス”0xC”に相当するセクタを選択し、CPU131またはシステムメモリ132に出力する。
一方、アプリケーションから”0x5500C”への書き込み要求を受けた場合は、まず読み出しと同様の手順でドライバー139によってアドレス変換が実施され、ページ領域143,144のデータがメモリチップのフラッシュメモリ135,136から読み出され、ページバッファ138に格納される。その後下位アドレス”0xC”に相当するセクタが選択され、新規データに更新される。
更新後のページデータは、フラッシュメモリ135,136に書き戻されるが、その際各々の空き領域145,146に書き込まれる。このページ領域の物理ページアドレスは”0x0280”であり、すなわち消去ブロック”0x02”内の”0x80”のページに相当する。またこの処理の前まで、その領域はアドレス変換テーブル140のいずれの物理アドレスフィールドにも登録されていない、未使用の空きページであった。
更新後のデータがこの領域に追記の形で書き込まれるとともに、アドレス変換テーブル140の論理アドレス”0x5500”に対応する物理アドレスフィールドには、空き領域145,146の物理ページアドレス”0x0280”が登録される。
ところで上述の如き追記型書き込みを実施した場合、更新前のデータが格納されていた物理ページアドレス”0x00B0”に相当するページ領域143,144はアドレス変換テーブル140の物理アドレスフィールドから削除され、無効化される。
しかしそれらにはデータが書き込まれており、そのままでは空き領域として使用することもできない。上述のような書き換えを何度も繰り返すと、多くの無効ページ領域が発生する。それらは再度空き領域として使用できるよう、消去して回復させる必要がある。またその場合、消去ブロック141,142に残された有効データは退避させなければならない。
このような回復処理は、たとえば図7(A)〜(C)に関連つけて前述したのと同様のアルゴリズムで、空き領域を持つブロック147,148を使用して行われる。すなわち回復処理の対象ブロックである消去ブロック141,142上の有効なページ領域群のデータを退避先ブロック147,148内の空き領域に上詰めにして順番にコピーし、それに応じてアドレス変換テーブル140の物理アドレスを更新する。全て有効ページデータがコピーされ終わると、元ブロック141,142を消去する。
ただし本第5の実施形態では、ドライバー139を用いてホストCPU131がブリッジ回路134にコマンドを送ることで、それらの処理(作業)を制御する。
たとえば上記回復作業における有効ページデータのコピーは、ホストCPU131からのコピーコマンドに応じて、ブリッジ回路134が所定のページをコピー元からページバッファ138に読み出してコピー先に書き込む。または所定のブロックを消去する。この際システムバス133は使用されないので、もし必要があれば、CPU131は上記コマンドを送信した後は別の処理(作業)を並行して実施することも可能である。
図20は、プリエンプティブなマルチタスクシステムを用いた回復処理の一例を示すフローチャートである。
ホストCPU131はタイマーや優先順位を用いたスケジューリングに応じて回復タスクを適時実行する。各実行には5ミリ秒のタイムスライスが割り当てられるとする。ホストはこの割り当て時間を用いて、回復処理を分割して実行する。
回復タスクが開始されると、ホストCPU131はまずブリッジ回路134に記憶システムの状態を問い合わせ、記憶システムが処理(作業)中か否かをチェックする(ST81)。処理(作業)中であればタスクは終了し、記憶システムが待機中であれば、ドライバー139のプログラムに従って、以下のような無効領域の分割回復処理を実施する。
<ステップST82>
無効化されたページ領域を探査し、その回復処理を実施すべきか否かを、しかるべきアルゴリズムで判定する。ここで、消去ブロックレベルで完了していない未完了の回復処理が残存している場合、その継続処理に進む。回復処理が不要な場合は、タスクを終了する。
<ステップST83>
回復処理が必要と判定されれば、回復対象とする消去ブロックと、退避先の空き領域を選定し、回復処理をスタートする。未完了の回復処理が残存している場合、そこで作業対象となっていた消去ブロックと、退避先の空き領域が選択される。
<ステップST84>
回復対象となった消去ブロック中に、退避すべき有効ページ領域があるか否かを判定する。もしあれば、再上位の1ページを空き領域に上詰でコピーする(ST86)。さらにアドレス変換テーブル140を更新して分割単位処理を完了する(ST87)。
なお、本例のように一回のタスク実行に5ミリ秒の割り当てがある場合、その間に複数のページコピーが可能である。従って割り当てられたタイムスライスに従って処理ページの上限を設け(ST88)、それに達するまでコピー処理を繰り返しても良い。
<ステップST85>
全ての有効ページ領域の退避が完了していたら、元ブロックを消去して、分割単位処理を完了する。
なお、上記分割単位処理が終了し、また消去ブロックレベルでの無効ページ領域の回復作業が未完了である場合は、作業中の消去ブロックの所在を含む回復処理の進捗情報を、たとえばシステムメモリ132のワークエリア141内に保存しておくことが望ましい。
以上、ホストが回復処理を制御するケースについて一例を述べたが、記憶装置の内部に回復処理機構を設けた場合と同様に、各種バリエーションが存在し得る。上述の如く他のタスクと時分割で実行する他に、たとえばユーザーからのキー入力やマウス入力が一定時間なければ回復処理を開始し、入力が入ったところで回復処理を中断しても良い。またはシステムの立ち上げや立ち下げ時にブロックの消去処理を実行しても良い。
中途にECCによるエラー訂正や、欠陥ブロック回避のための、ブロック単位のアドレス変換を挿入してもよく、その制御はホスト側で行なっても、記憶装置側、たとえばブリッジ回路134の内部で独立して行っても良い。
ところで、これまで述べてきたような無効領域の回復処理を、ユーザーからのフラッシュメモリへのアクセスの無い期間を抽出して実施する場合、以下のような課題がある。
たとえばメモリカードのような脱着可能な記憶装置の場合、待機時に回復処理を実施していても、ユーザー本人はアクセスを明示的に指示した訳ではない。したがってカードをホストから引き抜いてしまう可能性があり、その際記憶装置には電源瞬断が発生してしまう。また組み込みストレージであっても、ホスト機器の電源が、コンセントの引き抜き等で突然落とされてしまう場合がある。
この際に回復処理の進捗情報が揮発性メモリに格納されていると、それらが消失し、回復途上にあった消去ブロックや退避先の領域は、非常に不安定な状況に陥ってしまう。
したがってこのようなケースでは、回復処理の進捗状況の少なくとも一部は、いわゆる不揮発性RAMに記録されているのが望ましい。
不揮発性RAMとは不揮発性でありながら1マイクロ(μ)秒以下でランダムアクセスが可能なRAMの性質を兼ね備える半導体メモリであって、強誘電体膜を用いたFeRAM(Ferroelectric RAM)、強磁性体を用いたMRAM(Magnetic RAM)や、相変化材料を用いたOUM(Ovonic Unified Memory)、RRAM等が提案されている。
FeRAMは強誘電体キャパシタの分極方向の違いでデータを記憶する半導体メモリである。たとえばUS4873664においてS.Sheffeieldらがその一形態を提案している。
MRAMは強磁性膜のスピン方向の違いでデータを記憶する半導体メモリである。たとえばISSCC2000の論文ダイジェストの128ページに、R.Scheuerleinらが論文を掲載している。
OUMはたとえばカルコゲナイド膜の相転移でデータを記憶する半導体メモリである。たとえばIEDM2001の論文ダイジェストの803ページに、S.Laiらが論文を掲載している。
RRAMは磁気抵抗効果材料の抵抗ヒステリシスでデータを記憶する半導体メモリである。たとえばIEDM2002の論文ダイジェストの7.5にはW.W.Zhuangらが論文を掲載している。
それらの不揮発性メモリは、いずれもセルレベルのアクセス速度や書き換え回数において、フラッシュメモリより数桁性能が高い。
たとえば図5に関連付けた第5および第2の実施形態の場合、少なくとも回復処理中のブロックアドレスは保存される必要があり、不揮発性RAMに格納されている必要がある。
さらにアドレス変換テーブル78やページ管理テーブル86も進捗情報の一部を含むので、不揮発性RAMに保存されるのが望ましい。
たとえば図5のRAM77をSRAMと不揮発性RAMの混合で構築し、上記回復処理の進捗状況や各種管理テーブルを不揮発性RAM側に、記憶装置制御用のファームウェアプログラムやワークエリアをSRAM側に構築しても良い。
このような事情は、無効領域の回復処理において進捗情報を保存している他の実施形態においても、全て同様である。
図21は、第6の実施形態を示す図であって、そのようなECC処理と欠陥ブロック管理を導入した、第3の実施形態(図12)の装置構成上の応用変形例を示す図である。
図22は、第6の実施形態に係る制御回路のアドレス変換テーブルおよびページ状態の管理テーブルの構成例を示す図である。
記憶装置110Aにおいて、32ビットの内部データバス113Aには、16ビットの入出力を持つ2チップのNAND型フラッシュメモリ115A,116Aが並列接続されている。2つのチップのフラッシュメモリ115A,116Aは読み出しや書き込みにおいて、同時並列にアクセスされる。
ページバッファ112Aはアクセスされたページ領域を一時記憶するバッファであり、外部とのインターフェース回路111Aに第2の内部データバス118Aを介して接続されている。さらに第2の内部データバス118Aにはキャッシュメモリ117Aが接続されている。
制御回路123はフラッシュメモリ115A,116Aとページバッファ112Aの間の転送を制御する。制御回路123にはフラッシュメモリ内の欠陥ブロックがアクセスされぬよう、その内蔵RAM124上に、ブロック単位のアドレス変換でそれらをスキップさせるためのアドレス変換テーブル126が構築されている。
さらに制御回路123にはECC回路125が搭載されており、ページバッファ112Aからフラッシュメモリ115A,116Aにデータが書き込まれる際には符号化によるパリティビットの追加を行い、フラッシュメモリ115A,116Aからページバッファ112Aにデータが読み出される際には復号化によるエラー訂正を実施する。
制御回路114Aはページバッファ112A、キャッシュメモリ117Aおよびインターフェース回路111Aの間のデータのやりとりを管理するコントローラであり、内蔵CPU119Aによって制御される。同じく内蔵されたRAM120Aには、CPU119Aを制御するためのプログラム領域やワークエリアが確保されるとともに、アドレス変換テーブル121Aが構築されている。
さらに制御回路114Aには、CPU119Aの制御無しでキャッシュメモリ117Aとインターフェース回路111A間のデータ転送を制御する制御回路122Aが搭載されている。
なお本図面においては制御線の記載は省略されている。
本第6の実施形態における第3の実施形態(図12)との主たる相違は、ページバッファ112Aとフラッシュメモリ115A,116Aとの間の転送に関して、アドレス変換テーブル126とECC回路125を保有する専用の制御回路123が設けられていることである。
これにより外部から入力された論理アドレスは、それを元にフラッシュメモリ115A,116Aへのアクセスが成される場合、アドレス変換テーブル121Aと126により二重の変換を受ける。さらに入出力データにもECCによる符号化、復号化の変換が施される。
具体的な動作を以下に述べる。
読み出しの際、外部から”0x5500C”のセクタドレスが入力されると、制御回路114Aは上位のページアドレスを受けて内蔵RAM120Aにアクセスし、アドレス変換テーブル121Aから論理ページアドレス(LPA:LOGICAL PAGE ADDRESS)”0x5500”に対応する物理ページアドレス(PPA:PHISICAL PAGE ADDRESS)”0x00B0”を取得する。
この物理ページアドレスPA中、上位の”0x00”は消去ブロックのアドレスを示すが、さらに制御回路123に入力されると、この部分は論理ブロックアドレス(LBA:LOGICAL BLOCK ADDRESS)として扱われ、アドレス変換テーブル126から物理ブロックアドレス(PBA:PHISICAL BLOCK ADDRESS)”0x01”が取得される。これがメモリチップのフラッシュメモリ115A,116A内の消去ブロック127,128のアドレスである。
一方、下位”0xB0”は各消去ブロック127,128内のページ領域1271,1281のアドレスである。
この物理アドレスをもとにフラッシュメモリ115A,116Aが共にアクセスされ、各々からページアドレス”0x01B0”に格納されたページ領域1271,1281のデータが読み出され、さらにECCによる復号化が施されて、ページバッファ112Aに格納される。
一方、外部から”0x5500C”に書き込みを行う場合は、まず読み出しと同様の手順でページ領域1271,1281のデータがフラッシュメモリ115A,116Aから読み出され、ページバッファ112Aに格納される。その後バッファ内の所望の箇所が、書き込みデータに更新される。
更新後のページデータは、フラッシュメモリ115A,116Aに書き戻されるが、その際読み出し元のページ領域1271,1281が書き換えられるのでは無く、アドレス変換テーブル121Aのいずれの物理アドレスフィールドにも登録されていない、未使用の空きページに書き込まれる。そのような空きページは制御回路114A側で管理されており、たとえば図6のような管理テーブル86が使用されて、物理ページアドレス” 0x0280”が選択される。
このうち上位の”0x02”は制御回路123に入力されると、アドレス変換テーブル126から”0x03”に変換され、合成されたアドレス”0x0380”から、メモリチップのフラッシュメモリ115A,116Aのページ領域129a,129bに、ページバッファ112Aの更新済みデータが書き込み転送される。この際データには、ECC符号化によるパリティビットが追加される。
一方、制御回路114Aは、アドレス変換テーブル121Aの論理ページアドレス”0x5500”に対応する物理ページアドレスのフィールドに、” 0x0280”を登録し、元の物理ページアドレス”0x00B0”は無効化ページ領域として管理する。いずれのページアドレスも制御回路123の変換を経れば、フラッシュメモリ115A,116A上の正しいページ領域をポイントする。
本第6の実施形態においては、制御回路114Aで導出される物理ページアドレスは、制御回路123によって一対一のブロックレベルの変換を受けるが、その際同一ブロック内の各ページの相対位置は全く変わらない。したがって制御回路114Aからは、制御回路123で施される各種変換はブラックボックスとみなして良い。すなわち制御回路114Aは、メモリチップのフラッシュメモリ115A,116Aと制御回路123を一体化したフラッシュメモリデバイスとみなし、独立した論理で任意のアクセスを実施しても、齟齬は発生しない。これはECCによる符号化、復号化についても同様である。
その結果、制御回路114Aは、第3の実施形態と全く同様のアルゴリズムで無効化領域の回復処理を実施することが可能となる。
次に、消去ブロックの消去を実行する前に、各データ領域ごとに、少なくとも領域の一部を読み出し、読み出した値からデータ領域に有効なデータが記録されているか否かを判定し、判定の結果、有効なデータが記録されている場合に、データ領域のデータを他の消去ブロックにコピーする機能を有する記憶装置について説明する。
たとえば、図5の第1実施形態は、無効領域を回復させる際、各データ領域が無効か有効かの判定にテーブル86の”Page State”フラグを使用した。しかしこのようなフラグをデータ領域ごとに設けると、テーブル86はかなり大きなRAM容量を占有することになる。したがって、このようなフラグは廃止し、異なる方法でデータ領域の有効判定を行なった方が、RAM容量を節約でき、コスト的に有利である。本記憶装置はそのような要請から考案された。
図23は、本第7の実施形態に係るコンピュータシステム(記憶システム)の構成例を示す図である。また、図24は、第7の実施形態に係る制御回路のアドレス変換テーブルおよびアドレス検索テーブルの構成例を示す図である。
本コンピュータシステム150は、インターフェース回路(I/F)151、制御回路152、内部バス153、ページバッファ154、NAND型フラッシュメモリ155,156、制御回路157、メモリバス158、およびホストシステム159を含んで構成されている。
以上の構成要素のうち、インターフェース回路(I/F)151、制御回路152、内部バス153、ページバッファ154、NAND型フラッシュメモリ155,156、制御回路157、およびメモリバス158によりファイル記憶装置160が構成されている。また、ファイル記憶装置160において、ページバッファ154、NAND型フラッシュメモリ155,156、制御回路157、およびメモリバス158によりフラッシュメモリデバイス161が構成されている。
また、制御回路152は、RAM162を内蔵しており、RAM162にはワーキングエリア163、アドレス変換テーブル164、およびアドレス検索テーブル165が形成される。
ファイル記憶装置160の内部においては、32ビットのメモリバス158に、16ビットの入出力を持つ2チップの8GbNAND型フラッシュメモリ155,156が並列接続されている。2つのチップのフラッシュメモリ155,156は読み出しや書き込みにおいて、同時並列にアクセスされる。
すなわち、メモリバス158は16ビットバスを2チャンネル備えた構成となっている。各々のフラッシュメモリ155,156は書き込みや読み出しのアクセスをたとえば4kBのページ単位で行う。したがって、実ページサイズとしては8kBが一括アクセスされることになる。
ページバッファ154はアクセスされたページ領域のデータを一時記憶するページバッファである。
フラッシュメモリ155,156とページバッファ154との間のデータの送受は、制御回路157で制御されている。
制御回路157は、必要に応じて転送データにECC符号化によるエラー補正を施す。両フラッシュメモリ155,156はページバッファ154を介してファイル記憶装置160の内部バス153との間でデータを入出力する。すなわち、左記回路群は実質的に一つのフラッシュメモリデバイス161を構成し、ファイル記憶装置160の内部バス153に接続されているとみなすことができる。その総容量は16Gb(2GB)であり、実ページサイズは8kBである。すなわち、装置内には256k個のページデータが格納される。
さらに内部バス153にはインターフェース回路151、および制御回路152が接続されている。
インターフェース回路151はATAやPCIエクスプレス等の規格に従ってホストシステム159との間で、データやコマンドの送受を行う。
制御回路152はファイル記憶装置160の内部においてページバッファ154とインターフェース回路151の間のデータの送受を管理する。制御回路152に内蔵されたRAM162には、プログラムを実行するためのコードエリアやワーキングエリア163が設けられており、さらにページ単位の仮想アドレスを管理するアドレス変換テーブル164および正常な空きブロックを検索するアドレス検索テーブル165が構築されている。
本コンピュータシステム150においては、ホストシステム159は内蔵するCPUによって制御され、アプリケーションやOSの要求に応じて、ファイル記憶装置160を介して、フラッシュメモリデバイス161にユーザーデータを保存する。
制御回路152はその間のデータ授受に介在し、アドレス変換テーブル164を用いてアドレス変換を伴う等のアクセス管理を実施する。
ファイル記憶装置160はハードディスクと同様に512Byteのセクタをアクセス単位とする。装置内部では簡単のため、16進数のアドレスが次のように割り振られるとする。
たとえば、外部入力アドレスが”0x05502C”であった場合、上位20ビットの”0x05502”はページアドレスであり、最大1Mページを管理できる。
一方、下位4ビットの”0xC”はページ領域内のセクタドレスであり、1ページ中には16のセクタが含まれる。本記憶装置160はページバッファ154内のデータを選択することで、1セクタ単位のランダムアクセスが可能である。
以下、このような記憶装置160の内部動作について説明する。
本第7の実施形態ではページ単位の仮想アドレス管理が採用されている。
図25は、図24のアドレス変換テーブルおよび検索テーブルを使用したデータアクセス処理を説明するためのフローチャートである。
ファイル記憶装置160の内部におけるフラッシュメモリデバイス161への具体的アクセスは、図25のフローチャートに従って、以下のような手順で実行される。
<ステップST101>
ホストシステム159からユーザーデータのアクセスコマンドとともに”0x05502C”のセクタドレスが入力されると、制御回路152は論理ページアドレス部(LPA)”0x05502”をインデックスにアドレス変換テーブル164を参照し、アクセス対象たるユーザーデータの物理ページアドレス(PPA)”0x060B0”を取得する。
<ステップST102>
上記物理ページアドレスをもって、フラッシュメモリデバイス161がアクセスされ、ページバッファ154内にユーザーデータが格納されたページグループが読み出される。その後セクタドレス”0xC”に相当する部分がページバッファ154から選択的にホストシステム159に出力され、読み出し動作が完了する。
さらにデータの更新は以下のように実施する。
同じ”0x05502C”のセクタを更新するとする。その場合、まずページバッファ154に所望のページを読み出す必要があり、その手順はステップST101,ST102と同様である。
ステップST101,ST102の読み出し時と同様に、フラッシュモメモリデバイス161より読み出した所望のデータをページバッファ154に格納する。
<ステップST103>
ページバッファ154上で所望のセクタ箇所を更新する。
<ステップST104>
更新したユーザーデータのフラッシュメモリデバイス161への書き込み先として、RAM162内に常駐したアドレス検索テーブル165およびレジスタ166(図24)から、適当なページ領域の物理ページアドレス(PPA)が選択される。
ここでは簡単のため、物理ページアドレスは、上位12ビットの物理ブロックアドレス部(Phisical Block Address :PBA)と下位8ビットのページオフセット部よりなるとする。この時各消去ブロックは256ページ(2)より構成される。
アドレス検索テーブル165には、各ブロックごとにそれらが現在使用されているか、もしくは消去済みの空き状態であるかが、”Used Flag”でマークされている。さらに欠陥ブロックの場合、”Defect Flag”が”1”となっている。
データの書き込みは、消去済みブロックの先頭ページから順に実行されていく。前回の書き込んだページの物理アドレスは、レジスタ166に保存されており、書き込み先にはそれがインクリメントされたページが順次選択される。選択がブロックの末尾に達したら、それ以降のブロックの”Used Flag”と”Defect Flag”がスキャンされ、次の未使用かつ良品のブロックが検出されて、その先頭ページが選択される。
レジスタ166の値は現在”0x0AA01”であり、制御回路152はまずユーザーデータの書き込み先として、それをインクリメントした物理ページアドレス”0x0AA02”を選択する。
<ステップST105>
上記物理ページアドレスをもって、フラッシュモメモリデバイス161がアクセスされ、ページバッファ154内のユーザーデータがフラッシュメモリデバイス161に一括書き込みされる。書き込みが完了すると、アドレス変換テーブル164が更新され、論理ページアドレス(LPA)”0x05502”に対応する物理ページアドレス(PPA)は”0x0AA02”に更新される。これに伴って旧物理ページアドレス”0x060B0”に相当するページ領域は無効とる。
<ステップST106>
さらに無効化された旧データのページ”0x060B0”の予備領域に所定の値を書き込んで、無効である旨を刻印する。なおこのような作業はブロック内のページの書き込み順が制限されたフラッシュでは実施できない。この対処については後述する。
ところで、上述のような追記型書き込みを実施した場合、更新前のデータが格納されていた物理ページアドレス” 0x060B0”に相当するページ領域はアドレス変換テーブル164の物理アドレスフィールドから削除され、外からアクセスできなくなる。すなわち無効化される。
しかしそれらにはデータが書き込まれており、そのままでは空き領域として使用することもできない。上述のような書き換えを何度も繰り返すと、多くの無効ページ領域が発生する。それらは再度空き領域として使用できるよう、消去して回復させる必要がある。またその場合、消去ブロック”0x060”に残された他の有効データは退避させなければならない。
このような回復処理は、たとえばまず対象ブロック内の有効データを、更新の際と同様に一旦ページバッファに読み出してから、他のブロックの空き領域に追記で書き込んでいき、それによって実質的な退避を行なえば良い。すなわち、有効ページを仮更新することで、その元領域を全て無効化する。その後、対象ブロックを消去することによって、回復処理が実施される。
図26(A)〜(C)は、本第7の実施形態に係る無効領域の回復手順を説明するための図である。
図26(A)〜(C)には消去ブロック170,171内部の有効データを退避し、無効ページ領域を実質的に回復させる手順を、概念的に図解している。
手順<11>
上述したような追記による書き換えが進行し、消去ブロック170,171には、一度データが書き込まれた後、更新によって無効化されたページ領域群175,177が、有効なページ領域群174,156,178と共存しているとする。ここで有効ページ領域のデータを残しつつ、無効化領域を空き領域に回復させる必要がある。一方、ブロック172,173は現在追記用の空き領域として使用している消去ブロックであり、ページ領域183まで書き込みが成されている。
手順<12>
有効なページ領域群174,176,178を消去ブロック172,173内の空き領域179,180,181に上詰めにして順番にコピーしていく。
一方、無効なページ領域群175,177はコピーしない。有効ページと無効ページの判定は、消去ブロック172,173から各ページの予備領域をまず図23のページバッファ154に読み込み、その値に基づいて実施するが、その詳細は後述する。
判定結果が有効ページの場合、今度は対象ページ内のデータ全体をページバッファ154に読み込み、消去ブロック172,173に書き込むとともに、アドレス変換テーブル164を更新する。すなわち、各々のページ領域の論理アドレスに対応する物理アドレスフィールドに、コピー先の物理ページアドレスを登録していく。
この操作は、すなわち有効ページ領域群174,176,178を追記方式で書き換える作業に等しい。実際には書き換えずコピーするのみであるが、この作業によって消去ブロック170および171内の全てのページは無効化され、有効ページ領域のデータは消去ブロック172,173に実質的に退避させられる。
手順<13>
消去ブロック170,171を消去する。これによってその内部は全て空き領域となり、後の追記に使用することが可能になる。これをもって無効領域175,177は実効的に回復される。
このように無効ページ領域の回復処理は、各有効ページ領域のコピーによる退避処理と、元消去ブロックの消去よりなる。
また、回復対象となる消去ブロック内の有効ページに通常の更新処理と同様の手順でダミーの更新を施し、それをもってページの退避を実行すれば、回復処理時の有効ページ退避を通常の書き込みアルゴリズムに統合させることが可能である。
この場合、制御が容易になるばかりではなく、フラッシュメモリへの書き込みの均一化等、書き込み時の信頼性向上のための各種工夫を回復処理にも適用することができ、記憶装置の総合的な信頼性を向上させることができる。
図27は、本第7の実施形態における具体的な回復処理を説明するためのフローチャートである。
<ステップST111>
ガベッジポインタを参照する。
ガベッジポインタは回復対象となっている消去ブロックの中で、処理中のページの物理アドレス(PPA)を示している。回復処理開始時はブロックの先頭を指している。処理が進むにつれて、ブロックの末尾まで順次値がインクリメントされていく。
<ステップST112>
上記ガベッジポインタが指すページを選択し、まずその予備領域のデータを読み込む。予備領域とは、ユーザーデータの格納とは別に、記憶装置システム内で生成された管理用データを格納する領域であり、たとえば2kByteのユーザーデータに対して72Byte程度の予備領域がフラッシュメモリ上に予め設けられている。ここに記載された情報を元に、選択したページが有効か無効かを判定する。
<ステップST113>
選択したページが有効か無効かを判定し、判定結果が有効であれば、ダミー更新処理を実施する。すなわちまず選択ページ全体をページバッファに読み込み(ST114)、図24のアドレス検索テーブル16からフラッシュメモリ上の書き込み先を決定し、そこにデータを書き込む(ST115)。すなわちデータを他のブロックにコピー、退避する。
<ステップST116>
ガベッジポインタがブロックの末尾ページであるか否かを判定し、ガベッジポインタがブロックの末尾ページであればガベッジポインタをクリアし(ST117)、対象ブロックを消去する(ST118)。中途であればガベッジポインタをインクリメントし(ST119)、ステップST111に戻って次のページの処理を行う。
なお、ステップST112の工程で選択ページの全領域を読み込むことにより、ステップST113の読み込み工程を省略することも可能である。
すなわち、まず選択ページの全領域をページバッファに読み込み、その予備領域に記載されていたデータ箇所からそのページが有効か否かを判定する。無効であればそれらは全て破棄してステップST116に移る。
一方、有効ならば、既にページバッファにはページ内の全データが読み込まれているので、読み込み工程を省略してダミー更新処理を実施する。この場合無効ページについてはより多くのデータを読み出す必要があるが、有効ページについては多重の読み出しを防止でき、迅速に処理できる。
ページ内に記載された予備領域のデータから、そのページの有効/無効を判定する具体的手法を以下に示す。
まず、図25におけるステップST106のように、無効となったページの予備領域に、特定の値をフラグとして記載しておけば、この判定はただちに実施できる。しかし消去ブロック内のページの書き込み順序に制限がある場合、既に一度データを書き込んだページ領域の予備領域に、さらにデータを追記できる保証は無い。
このように一度書き込んだページ領域の部分変更が不可能な場合の判定手法を、前述の図24の例に従って説明する。
まず、ページデータを書き込む際に、予備領域に該当する論理アドレスを書き込んでおく。図24の場合、当初LPA”0x05502”の論理アドレスに対し、PPA”0x060B0”の物理アドレスが割り振られていた。すなわち、PPA”0x060B0”に相当するフラッシュメモリ上のページ領域には、ユーザーデータとともに、その予備領域に論理アドレス”0x05502”が記載されている。
ここで、ホストからのコマンドでLPA”0x05502”のデータが更新された場合、更新後のデータはPPA”0x0AA02”に相当するページ領域に書き込まれる。その際、その予備領域にはやはり論理アドレス”0x05502”が記載される。一方、アドレス変換テーブル164のLPA”0x05502”に対応する物理アドレスフィールドは”0x0AA02”に更新される。
ここで、元のデータ領域PPA”0x060B0”を含むブロックに回復処理を実施し、ガベッジポインタが左記ページに廻ってきたとする。このとき、予備領域から論理アドレス”0x05502”が読み込まれる。それをインデックスとしてアドレス変換テーブル164を参照すると、対応する物理アドレスフィールドは”0x0AA02”に更新されているため、選択されたページの物理アドレス”0x060B0”には一致しない。これをもってこのページが無効であることが判定される。
一方、有効なページであれば、その予備領域に記載された論理アドレスと物理アドレスとの照合は、常にアドレス変換テーブル164の照合に一致している。このときには、取得した論理アドレスをもって図27におけるステップST113以降のダミー更新処理を実施すればよい。この場合、通常アクセスにおいてホストから与えられた論理アドレスにデータ更新を施すのと全く同様の手順で、容易に有効データを退避させることができる。
なお、ここでは各ページの論理アドレスと物理アドレスとの直接的な対応を判定に使用したが、論理アドレスにはさまざまな形態が可能であり、一般にはホストが入力するアドレス情報に関連付けられたページデータのハンドル値とみなすことができる。
ところで、ここまでは独立した記憶装置の内部に回復処理機構を設ける場合について説明してきた。しかしこのようなアドレス変換テーブルの管理と回復処理を、ホスト側の制御で実施することも可能である。そのようなコンピュータシステムの例を図9に示す。
図28は、本第8の実施形態に係るコンピュータシステムの構成例を示す図である。
図28のコンピュータシステム190は、処理ユニットとしてのCPU191、システムメモリであるRAM192、システムバス193、ブリッジ回路194、NAND型フラッシュメモリ195,196、データバス197、ページバッファ198、および制御回路199を、主構成要素として有している。
CPU191は、32ビットのシステムバス93を介してシステムメモリであるRAM192と接続されている。さらにシステムバス193にはブリッジ回路194が接続されている。ブリッジ回路194に繋がる32ビットのデータバス197には、16ビットの入出力を持つ2チップのNAND型フラッシュメモリ195,196が並列接続されている。2つのチップのフラッシュメモリ195,196は読み出しや書き込みにおいて、同時並列にアクセスされる。アクセスされたページ領域を一時記憶するページバッファ198および制御回路199は、ブリッジ回路194に内蔵されている。
ブリッジ回路194は、CPU191から各種コマンドを受け取り、フラッシュメモリ195,196とCPU191またはシステムメモリ192との間のデータのやり取りを、ページバッファ198を用いて媒介する。また、必要に応じて転送データにECC符号化によるエラー補正を施す。
ブリッジ回路194が受け取るコマンドは、たとえばフラッシュメモリ195,196の所定のページへのアクセスの他、同フラッシュメモリ195,196の所定ブロックの消去、および所定ページの指定アドレスへのコピー、フラッシュメモリ195,196のリセット等である。
一方、システムメモリ192内には上記フラッシュ記憶システムを制御するためのドライバー200が常駐している。このドライバー200は、OSやアプリケーションからの記憶装置へのアクセスを受け、同じメモリ中に構成されたアドレス変換テーブル201を参照してアクセス時のページアドレスを変換する。また、データ更新時にはアドレス検索テーブル202を参照して書き込み先ページアドレスを決定し、更新用データとともにフラッシュメモリ195,196への書き込み命令をブリッジ回路194に送信する。
このようなケースではCPU191とシステムメモリ102よりなるホストシステム210自体が図23における制御回路152の役割を代替し、アドレス変換テーブルの管理と無効ページ領域の回復処理を実施する。
すなわち、ドライバー200はアドレス変換テーブル201やアドレス検索テーブル202に図24に示したテーブル164,165と同じものを使用し、OSやアプリケーションから論理アドレスを受け、物理アドレス(PPA)を生成してブリッジ回路194にコマンドを送信することで、フラッシュメモリ195,196の各種アクセスを実施する。
このようなシステムにおいても本発明は同様に適用することが可能であって、ホストシステム210はフラッシュメモリ195,196に対し、消去ブロックの消去を実行する前に、各データ領域ごとに以下の処理を実施する。
・まず、少なくとも領域の一部を読み出し、
・その値からデータ領域に有効なデータが記録されているか否かを判定し、
・判定の結果有効なデータが記録されていれば、データ領域のデータを他の消去ブロックにコピーする。
すなわち、本ケースではホストシステム210とフラッシュメモリ等を併せて、ひとつの記憶システムを構成しているとみなすことが可能である。
NAND型フラッシュメモリの内部構成例を示す図である。 記憶装置を構成するフラッシュメモリの概念図を示す図である。 たとえば消去ブロック内の1ページのみを書き換える際の手順の一例を説明するための図である。 アドレス変換テーブルを用いた追記型記憶システムにおける管理方法の一例を説明するための図である。 第1の実施形態に係る記憶装置を示す構成図である。 第1の実施形態に係る制御回路のアドレス変換テーブルおよびページ状態の管理テーブルの構成例を示す図である。 第1の実施形態の無効領域の回復手順を説明するための図である。 第1の実施形態の装置が回復処理を実行する制御手順の例を示すフローチャートである。 第1の実施形態の変形例であって、無効ページ領域回復の分割単位処理を説明するためのフローチャートである。 第2の実施形態に係る回復処理を説明するためのフローチャートである。 第2の実施形態の変形例であって、無効ページ領域回復の分割単位処理を説明するためのフローチャートである。 第3の実施形態に係る記憶装置を示す構成図である。 第3の実施形態に係る制御回路のアドレス変換テーブルの構成例を示す図である。 第3の実施形態に係る回復処理を説明するためのフローチャートである。 第3の実施形態の変形例であって、無効ページ領域回復の分割単位処理を説明するためのフローチャートである。 第3の実施形態の第2の変形例であって、無効ページ領域回復の分割単位処理を説明するためのフローチャートである。 第4の実施形態における無効領域の回復処理を説明するためのフローチャートである。 本第5の実施形態に係るコンピュータシステムの構成例を示す図である。 第5の実施形態に係る制御回路のアドレス変換テーブルの構成例を示す図である。 プリエンプティブなマルチタスクシステムを用いた回復処理の一例を示すフローチャートである。 第6の実施形態を示す図であって、そのようなECC処理と欠陥ブロック管理を導入した、第3の実施形態(図12)の装置構成上の応用変形例を示す図である。 第6の実施形態に係る制御回路のアドレス変換テーブルおよびページ状態の管理テーブルの構成例を示す図である。 本第7の実施形態に係るコンピュータシステム(記憶システム)の構成例を示す図である。 第7の実施形態に係る制御回路のアドレス変換テーブルおよびアドレス検索テーブルの構成例を示す図である。 図24のアドレス変換テーブルおよび検索テーブルを使用したデータアクセス処理を説明するためのフローチャートである。 本第7の実施形態に係る無効領域の回復手順を説明するための図である。 本第7の実施形態における具体的な回復処理を説明するためのフローチャートである。 本第8の実施形態に係るコンピュータシステムの構成例を示す図である。
符号の説明
70・・・記憶装置、71・・・インターフェース回路(I/F)、72・・・ページバッファ、73・・・内部データバス、74・・・制御回路、75,76・・・NAND型フラッシュメモリ、78・・・アドレス変換テーブル、110,110A・・・記憶装置、111,111A・・・インターフェース回路(I/F)、112,112A・・・ページバッファ、113,113A・・・内部データバス、114,114A・・・制御回路、115,116、115A,116A・・・NAND型フラッシュメモリ、117,117A・・・キャッシュメモリ、118,118A・・・第2の内部データバス、119,119A・・・CPU、121,121A・・・アドレス変換テーブル、123・・・制御回路、126・・・アドレス変換回路、130・・・コンピュータシステム、131・・・CPU、132・・・システムメモリ(RAM)、133・・・システムバス、134・・・ブリッジ回路、135,136・・・NAND型フラッシュメモリ、137・・・データバス、138・・・ページバッファ、150・・・コンピュータシステム、151・・・インターフェース回路(I/F)、152・・・制御回路、153・・・内部バス、154・・・ページバッファ、155,156・・・NAND型フラッシュメモリ、157・・・制御回路、158・・・メモリバス、159・・・ホストシステム、160・・・ファイル記憶装置、161・・・フラッシュメモリデバイス、162・・・RAM、163・・・ワーキングエリア、164・・・アドレス変換テーブル、165・・・アドレス検索テーブル、190・・・コンピュータシステム、191・・・CPU、192・・・RAM、193・・・システムバス、194・・・ブリッジ回路、195,196・・・NAND型フラッシュメモリ、197・・・データバス、198・・・ページバッファ、199・・・制御回路、200・・・ドライバー、201・・・アドレス変換テーブル、202・・・アドレス検索テーブル、210・・・ホストシステム。


Claims (15)

  1. 主記憶としてフラッシュメモリを有し、
    上記フラッシュメモリにおける少なくとも一部領域の書き換えは、更新データを空き領域に追記し、元のデータを無効化する追記型の書き込みで実施され、
    外部からアクセスの無い装置の待機時に、上記無効化領域を自動的に消去して空き領域に回復する回復処理を行う機能を有し、
    当該記憶装置に格納されたデータに外部からアクセスが生じた場合に、上記回復処理を実行中であれば、当該回復処理を中断し、アクセスへの応答処理を行い、当該アクセスへの応答処理が終了し、待機状態になってから上記回復処理を再開する機能を有し、
    上記フラッシュメモリは一括消去単位である消去ブロックを複数有し、各消去ブロックは各々独立した書き込み単位であるページ領域を複数含み、
    上記回復処理は、回復対象たる無効ページ領域を含む消去ブロックに残存する有効ページ領域のデータを、他の消去ブロックの消去済みの空き領域に退避する処理を含み、
    消去対象として選択されたブロックに対して、
    別途システム内のメモリ上に設けたフラグを用いて有効ページを判定する処理、およびページ書き込み時に同時記載された論理アドレスと物理アドレスの対応がアドレス管理テーブルと照合しているか否かから有効ページを判定する処理により有効ページを判定し、その退避を行う
    記憶装置。
  2. 待機時にブロックを検査し、
    同一ブロック内に一定数以上の無効ページ領域が存在する場合、空き領域に対して、一定割合以上の無効ページ領域が存在する場合、および空き領域が全体の容量の一定割合以下である場合のいずれかを含む場合に、回復処理の実行を判定する
    請求項1記載の記憶装置。
  3. 上記回復処理を中断する場合、回復処理の進捗情報を装置内のレジスタもしくはメモリに保存し、上記アクセスが終了すると当該進捗情報を参照して回復処理を再開する機能を有する
    請求項1または2記載の記憶装置。
  4. 内部に処理ユニットを有し、待機時に当該処理ユニットは上記回復処理を実施し、外部からアクセスが生じると当該処理ユニットに割り込みが発生し、当該割り込みイベントに従って上記処理ユニットは回復処理を中断し、アクセス処理を開始する
    請求項3記載の記憶装置。
  5. 上記フラッシュメモリは一括消去単位である消去ブロックを複数有し、各消去ブロックは各々独立した書き込み単位であるページ領域を複数含み、
    ひとつの消去ブロック内に存在する一つまたは複数の無効ページ領域の回復処理は、複数の工程に分割され、外部からアクセスの無い記憶装置の待機時に、その一部が実行される
    請求項1から4のいずれか一に記載の記憶装置。
  6. 主記憶としてフラッシュメモリを有し、
    上記フラッシュメモリにおける少なくとも一部領域の書き換えは、更新データを空き領域に追記し、元のデータを無効化する追記型の書き込みで実施され、
    外部から所定のコマンドに応じて、上記無効化領域を消去して空き領域に回復する処理を実行する機能を有し、
    当該記憶装置に格納されたデータに外部からアクセスコマンドが生じた場合に、上記回復処理を実行中であれば、当該回復処理を中断し、アクセスへの応答処理を行い、当該アクセスへの応答処理が終了し、待機状態になってから上記回復処理を再開する機能を有し、
    上記フラッシュメモリは一括消去単位である消去ブロックを複数有し、各消去ブロックは各々独立した書き込み単位であるページ領域を複数含み、
    上記回復処理は、回復対象たる無効ページ領域を含む消去ブロックに残存する有効ページ領域のデータを、他の消去ブロックの消去済みの空き領域に退避する処理を含み、
    消去対象として選択されたブロックに対して、
    別途システム内のメモリ上に設けたフラグを用いて有効ページを判定する処理、およびページ書き込み時に同時記載された論理アドレスと物理アドレスの対応がアドレス管理テーブルと照合しているか否かから有効ページを判定する処理により有効ページを判定し、その退避を行う
    記憶装置。
  7. 外部からの所定のコマンドに応じて、上記回復処理を中断する際、回復処理の進捗情報を装置内のレジスタもしくはメモリに保存し、再度回復処理の実行コマンドを受けると、当該進捗情報を参照して回復処理を再開する機能を有する
    請求項6記載の記憶装置。
  8. 上記フラッシュメモリは一括消去単位である消去ブロックを複数有し、各消去ブロックは各々独立した書き込み単位であるページ領域を複数含み、
    ひとつの消去ブロック内に存在する一つまたは複数の無効ページ領域の回復処理は、複数の工程に分割され、外部から所定のコマンドに応じて、その一部が実行される
    請求項6または7記載の記憶装置。
  9. 主記憶としてのフラッシュメモリと、
    キャッシュメモリと、を有し、
    上記フラッシュメモリにおける少なくとも一部領域の書き換えは、更新データを空き領域に追記し、元のデータを無効化する追記型の書き込みで実施され、
    外部からのアクセスがキャッシュメモリにヒットし、キャッシュへのアクセスが実施される間に、上記無効化データを消去して空き領域に回復させる処理の少なくとも一部を並行して実施する機能を有し、
    外部からのアクセスがキャッシュメモリにミスヒットした場合に、上記回復処理を実行中であれば、当該回復処理を中断し、アクセスへの応答処理を行い、当該アクセスへの応答処理が終了し、外部からのアクセスがキャッシュメモリにヒットしたときまたは待機状態になってから上記回復処理を再開する機能を有し、
    上記フラッシュメモリは一括消去単位である消去ブロックを複数有し、各消去ブロックは各々独立した書き込み単位であるページ領域を複数含み、
    上記回復処理は、回復対象たる無効ページ領域を含む消去ブロックに残存する有効ページ領域のデータを、他の消去ブロックの消去済みの空き領域に退避する処理を含み、
    消去対象として選択されたブロックに対して、
    別途システム内のメモリ上に設けたフラグを用いて有効ページを判定する処理、およびページ書き込み時に同時記載された論理アドレスと物理アドレスの対応がアドレス管理テーブルと照合しているか否かから有効ページを判定する処理により有効ページを判定し、その退避を行う
    記憶装置。
  10. 上記回復処理を中断する場合、回復処理の進捗情報を装置内のレジスタもしくはメモリに保存し、上記アクセスが終了すると当該進捗情報を参照して回復処理を再開する機能を有する
    請求項9記載の記憶装置。
  11. 上記フラッシュメモリは一括消去単位である消去ブロックを複数有し、各消去ブロックは各々独立した書き込み単位であるページ領域を複数含み、
    ひとつの消去ブロック内に存在する一つまたは複数の無効ページ領域の回復処理は、複数の工程に分割され、外部からのアクセスがキャッシュメモリにヒットしてキャッシュへのアクセスが実施される間に、その一部が実行される
    請求項9または10に記載の記憶装置。
  12. 制御回路を有し、
    上記フラッシュメモリは、一括消去単位である消去ブロックを有し、各消去ブロックは複数のデータ領域を含み、
    上記制御回路は、消去ブロックの消去を実行する前に、各データ領域ごとに、少なくとも領域の一部を読み出し、当該読み出した値から当該データ領域に有効なデータが記録されているか否かを判定し、判定の結果、有効なデータが記録されている場合に、当該データ領域のデータを他の消去ブロックにコピーする
    請求項1から11のいずれか一に記載の記憶装置。
  13. ホストコンピュータと、
    主記憶としてフラッシュメモリを含み、上記ホストコンピュータで扱う諸データを記憶するための不揮発性データストレージと、を有し、
    上記フラッシュメモリにおける少なくとも一部領域の書き換えは、更新データを空き領域に追記し、元のデータを無効化する追記型の書き込みで実施され、
    上記無効化領域を消去して空き領域に回復させる処理が、上記データストレージに対してそれ以外のデータ処理要求の無い待機時に実施され、
    前記データストレージに対してデータ処理要求が生じた場合に、上記回復処理を実行中であれば、当該回復処理を中断し、アクセスへの応答処理を行い、当該アクセスへの応答処理が終了し、待機状態になってから上記回復処理を再開する機能を有し、
    上記フラッシュメモリは一括消去単位である消去ブロックを複数有し、各消去ブロックは各々独立した書き込み単位であるページ領域を複数含み、
    上記回復処理は、回復対象たる無効ページ領域を含む消去ブロックに残存する有効ページ領域のデータを、他の消去ブロックの消去済みの空き領域に退避する処理を含み、
    消去対象として選択されたブロックに対して、
    別途システム内のメモリ上に設けたフラグを用いて有効ページを判定する処理、およびページ書き込み時に同時記載された論理アドレスと物理アドレスの対応がアドレス管理テーブルと照合しているか否かから有効ページを判定する処理により有効ページを判定し、その退避を行う
    コンピュータシステム。
  14. 上記ホストコンピュータにおいて、データストレージへのデータアクセスの要求が生じた場合に、上記回復処理を実行中であれば、当該回復処理を一時中断し、当該一時中断する際、回復処理の進捗情報をコンピュータシステム内部のいずれかのレジスタまたはメモリ内に保管し、再度回復処理を実行する際には当該進捗情報を参照して処理を再開、継続する
    請求項13記載のコンピュータシステム。
  15. 上記フラッシュメモリは一括消去単位である消去ブロックを複数有し、各消去ブロックは各々独立した書き込み単位であるページ領域を複数含み、
    ひとつの消去ブロック内に存在する一つまたは複数の無効ページ領域の回復処理は、複数の工程に分割され、上記データストレージに対してそれ以外のデータ処理要求の無い、待機時にその一部が実施される
    請求項14記載のコンピュータシステム。
JP2006137844A 2005-07-29 2006-05-17 記憶装置、コンピュータシステム、および記憶システム Expired - Fee Related JP5162846B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2006137844A JP5162846B2 (ja) 2005-07-29 2006-05-17 記憶装置、コンピュータシステム、および記憶システム
US11/493,904 US9183132B2 (en) 2005-07-29 2006-07-27 Storage device, computer system, and storage system
KR1020060071459A KR20070015074A (ko) 2005-07-29 2006-07-28 기억장치, 컴퓨터 시스템, 및 기억 시스템

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2005221714 2005-07-29
JP2005221714 2005-07-29
JP2006137844A JP5162846B2 (ja) 2005-07-29 2006-05-17 記憶装置、コンピュータシステム、および記憶システム

Publications (3)

Publication Number Publication Date
JP2007058840A JP2007058840A (ja) 2007-03-08
JP2007058840A5 JP2007058840A5 (ja) 2009-04-30
JP5162846B2 true JP5162846B2 (ja) 2013-03-13

Family

ID=37695698

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006137844A Expired - Fee Related JP5162846B2 (ja) 2005-07-29 2006-05-17 記憶装置、コンピュータシステム、および記憶システム

Country Status (3)

Country Link
US (1) US9183132B2 (ja)
JP (1) JP5162846B2 (ja)
KR (1) KR20070015074A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9773562B2 (en) 2014-06-19 2017-09-26 Denso Corporation Storage apparatus, flash memory control apparatus, and program
US10509565B2 (en) 2016-12-12 2019-12-17 Megachips Corporation Apparatuses, methods, and computer-readable non-transitory recording mediums for erasure in data processing

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7315917B2 (en) 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
JP4961693B2 (ja) * 2005-07-29 2012-06-27 ソニー株式会社 コンピュータシステム
WO2007026393A1 (ja) * 2005-08-30 2007-03-08 Spansion Llc 半導体装置およびその制御方法
US20080091901A1 (en) * 2006-10-12 2008-04-17 Alan David Bennett Method for non-volatile memory with worst-case control data management
US8074011B2 (en) 2006-12-06 2011-12-06 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery after reaching a read count limit
US9116823B2 (en) 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
KR101490327B1 (ko) 2006-12-06 2015-02-05 퓨전-아이오, 인크. 뱅크 인터리브를 이용한 솔리드-스테이트 스토리지의 명령 관리 장치, 시스템 및 방법
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
KR100881597B1 (ko) * 2007-02-02 2009-02-03 지인정보기술 주식회사 읽기 요청 처리 시스템 및 방법
US7804718B2 (en) * 2007-03-07 2010-09-28 Mosaid Technologies Incorporated Partial block erase architecture for flash memory
JP4410271B2 (ja) 2007-04-25 2010-02-03 株式会社東芝 メモリ制御装置
JP5074104B2 (ja) * 2007-06-07 2012-11-14 株式会社ダイヘン データ保存装置
US9396103B2 (en) * 2007-06-08 2016-07-19 Sandisk Technologies Llc Method and system for storage address re-mapping for a memory device
JP4491000B2 (ja) * 2007-08-17 2010-06-30 株式会社東芝 メモリシステム
JP5087347B2 (ja) * 2007-09-06 2012-12-05 株式会社日立製作所 半導体記憶装置及び半導体記憶装置の制御方法
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US8195912B2 (en) 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US20090271562A1 (en) * 2008-04-25 2009-10-29 Sinclair Alan W Method and system for storage address re-mapping for a multi-bank memory device
US7719876B2 (en) * 2008-07-31 2010-05-18 Unity Semiconductor Corporation Preservation circuit and methods to maintain values representing data in one or more layers of memory
KR101014149B1 (ko) * 2008-11-13 2011-02-14 (주)인디링스 메모리 뱅크로의 접근을 제어하는 고체 상태 디스크를 위한컨트롤러
US8055334B2 (en) * 2008-12-11 2011-11-08 Proteus Biomedical, Inc. Evaluation of gastrointestinal function using portable electroviscerography systems and methods of using the same
JP5221332B2 (ja) 2008-12-27 2013-06-26 株式会社東芝 メモリシステム
US9612954B2 (en) 2008-12-31 2017-04-04 Micron Technology, Inc. Recovery for non-volatile memory after power loss
KR101056560B1 (ko) * 2009-02-11 2011-08-11 (주)인디링스 고체 상태 디스크 시스템에서 버퍼 캐시의 프로그래밍 방법및 장치
JP5332800B2 (ja) * 2009-03-26 2013-11-06 株式会社デンソー 記憶装置
JP2011128826A (ja) * 2009-12-17 2011-06-30 Hitachi Ulsi Systems Co Ltd 記憶装置と半導体不揮発性メモリの記憶方法
JP4745465B1 (ja) * 2010-01-29 2011-08-10 株式会社東芝 半導体記憶装置及び半導体記憶装置の制御方法
JP2011192240A (ja) 2010-03-17 2011-09-29 Sony Corp 記憶装置および記憶システム
JP5404483B2 (ja) * 2010-03-17 2014-01-29 株式会社東芝 メモリシステム
US20120265548A1 (en) * 2011-04-14 2012-10-18 Searete Llc, A Limited Liability Corporation Of The Sate Of Delaware Cost-effective resource apportionment technologies suitable for facilitating therapies
JP5708216B2 (ja) 2011-05-09 2015-04-30 ソニー株式会社 フラッシュメモリ装置、メモリ制御装置、メモリ制御方法、ストレージシステム
CN102981959B (zh) * 2011-09-05 2015-11-04 光宝科技股份有限公司 固态存储装置及其垃圾搜集动作的控制方法
WO2013108456A1 (ja) * 2012-01-16 2013-07-25 ソニー株式会社 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
TWI605458B (zh) 2012-04-25 2017-11-11 Sony Corp Non-volatile memory devices, non-volatile memory control devices, and non-volatile memory control methods
JP6072428B2 (ja) 2012-05-01 2017-02-01 テセラ アドバンスト テクノロジーズ インコーポレーテッド 制御装置、記憶装置、記憶制御方法
JP5929485B2 (ja) 2012-05-08 2016-06-08 ソニー株式会社 制御装置、記憶装置、データ書込方法
JP5949122B2 (ja) 2012-05-11 2016-07-06 ソニー株式会社 制御装置、記憶装置、記憶制御方法
JP5983019B2 (ja) 2012-05-17 2016-08-31 ソニー株式会社 制御装置、記憶装置、記憶制御方法
JP5939120B2 (ja) * 2012-10-04 2016-06-22 株式会社デンソー フラッシュメモリのデータ処理方法、及び、このデータ処理用のプログラム
JP6012432B2 (ja) * 2012-11-27 2016-10-25 株式会社メガチップス 半導体記憶装置
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
KR20150015621A (ko) * 2013-07-31 2015-02-11 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
JP6213040B2 (ja) * 2013-08-19 2017-10-18 富士通株式会社 半導体記憶装置および半導体記憶装置の制御方法
JP6036618B2 (ja) * 2013-09-13 2016-11-30 カシオ計算機株式会社 電子機器及びプログラム
TWI554944B (zh) 2014-06-20 2016-10-21 慧榮科技股份有限公司 快閃記憶體控制裝置、快閃記憶體控制系統以及快閃記憶體控制方法
US10101992B2 (en) * 2015-06-15 2018-10-16 Lear Corporation Telematics control unit comprising a differential update package
US9836300B2 (en) * 2015-06-16 2017-12-05 Lear Corporation Method for updating vehicle ECUs using differential update packages
JP2016026345A (ja) * 2015-09-03 2016-02-12 マイクロン テクノロジー, インク. メモリアレイにおける読み出し待ち時間を短縮するためのメモリ操作の一時停止
US9996268B2 (en) 2015-12-18 2018-06-12 Toshiba Memory Corporation Memory system and control method of the same
JP2018097769A (ja) * 2016-12-16 2018-06-21 ルネサスエレクトロニクス株式会社 半導体回路設計装置
WO2018150820A1 (ja) * 2017-02-17 2018-08-23 日立オートモティブシステムズ株式会社 情報処理装置
CN109213433A (zh) * 2017-07-07 2019-01-15 华为技术有限公司 闪存设备中数据写入的方法及设备
JP7305340B2 (ja) * 2018-12-11 2023-07-10 キヤノン株式会社 情報処理装置
FR3104285B1 (fr) * 2019-12-05 2022-05-27 St Microelectronics Grenoble 2 Contrôle d’intégrité d’une mémoire
US20220082286A1 (en) * 2020-09-11 2022-03-17 Johnson Controls Tyco IP Holdings LLP Control system for an hvac system
KR102316532B1 (ko) * 2021-05-24 2021-10-22 한양대학교 산학협력단 플래시 메모리에서의 런타임 배드 블록 관리 방법
US11941281B2 (en) 2022-04-01 2024-03-26 Nxp B.V. Non-volative memory system configured to mitigate errors in read and write operations

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5430859A (en) * 1991-07-26 1995-07-04 Sundisk Corporation Solid state memory system including plural memory chips and a serialized bus
JP3215237B2 (ja) * 1993-10-01 2001-10-02 富士通株式会社 記憶装置および記憶装置の書き込み/消去方法
JPH07114500A (ja) * 1993-10-19 1995-05-02 Matsushita Electric Ind Co Ltd 不揮発性メモリ記憶装置
JP3450071B2 (ja) * 1994-12-19 2003-09-22 三菱電機株式会社 Pcカード
JP3706167B2 (ja) * 1995-02-16 2005-10-12 株式会社ルネサステクノロジ 半導体ディスク装置
US5933847A (en) * 1995-09-28 1999-08-03 Canon Kabushiki Kaisha Selecting erase method based on type of power supply for flash EEPROM
US5805501A (en) * 1996-05-22 1998-09-08 Macronix International Co., Ltd. Flash memory device with multiple checkpoint erase suspend logic
US6201739B1 (en) * 1996-09-20 2001-03-13 Intel Corporation Nonvolatile writeable memory with preemption pin
JP4146006B2 (ja) * 1998-09-28 2008-09-03 富士通株式会社 フラッシュメモリを有する電子機器
US6704835B1 (en) * 2000-09-26 2004-03-09 Intel Corporation Posted write-through cache for flash memory
JP3957985B2 (ja) 2001-03-06 2007-08-15 株式会社東芝 不揮発性半導体記憶装置
JP4762435B2 (ja) * 2001-05-09 2011-08-31 富士通セミコンダクター株式会社 内部カウンタを複数備えた不揮発性半導体記憶装置
JP2004030438A (ja) * 2002-06-27 2004-01-29 Renesas Technology Corp マイクロコンピュータ
JP3931772B2 (ja) * 2002-09-13 2007-06-20 株式会社デンソーウェーブ 携帯情報端末
US7206230B2 (en) * 2005-04-01 2007-04-17 Sandisk Corporation Use of data latches in cache operations of non-volatile memories
JP2008117505A (ja) * 2006-11-03 2008-05-22 Spansion Llc 半導体装置およびその制御方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9773562B2 (en) 2014-06-19 2017-09-26 Denso Corporation Storage apparatus, flash memory control apparatus, and program
DE112015002881B4 (de) 2014-06-19 2022-02-03 Denso Corporation Speichervorrichtung, Flash-Speicher-Steuervorrichtung und Programm
US10509565B2 (en) 2016-12-12 2019-12-17 Megachips Corporation Apparatuses, methods, and computer-readable non-transitory recording mediums for erasure in data processing

Also Published As

Publication number Publication date
US9183132B2 (en) 2015-11-10
JP2007058840A (ja) 2007-03-08
KR20070015074A (ko) 2007-02-01
US20070028035A1 (en) 2007-02-01

Similar Documents

Publication Publication Date Title
JP5162846B2 (ja) 記憶装置、コンピュータシステム、および記憶システム
JP5130646B2 (ja) 記憶装置
JP5076411B2 (ja) 記憶装置、コンピュータシステム
JP4910360B2 (ja) 記憶装置、コンピュータシステム、およびデータ書き込み方法
JP4956922B2 (ja) 記憶装置
US9448919B1 (en) Data storage device accessing garbage collected memory segments
US20150309927A1 (en) Hybrid Non-Volatile Memory System
JP4961693B2 (ja) コンピュータシステム
US8904083B2 (en) Method and apparatus for storing data in solid state memory
US8745310B2 (en) Storage apparatus, computer system, and method for managing storage apparatus
US7173863B2 (en) Flash controller cache architecture
KR20170035155A (ko) 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법
JP2008146253A (ja) 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法
US11386005B2 (en) Memory system, memory controller, and method of operating memory system for caching journal information for zone in the journal cache
JP2008146255A (ja) 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法
JP2008146254A (ja) 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法
KR20210065197A (ko) 그리디 가비지 컬렉션을 사용하고 있는 메모리 구성요소에서의 주기적인 플러시
JP2009217755A (ja) メモリシステム
JP5338859B2 (ja) 記憶装置および情報処理システム
JP2007334413A (ja) 記憶装置
JP2008181203A (ja) 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法
JP5617873B2 (ja) 記憶装置
JP2003242788A (ja) 不揮発性半導体メモリ装置及びその制御方法
JP2006053950A (ja) 不揮発性半導体メモリ装置及びその制御方法
JP2004265447A (ja) 不揮発性半導体メモリ装置のデータ書き込み方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090317

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090317

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111220

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120220

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120731

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121029

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20121105

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121203

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

Free format text: PAYMENT UNTIL: 20151228

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 5162846

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

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees