JP5617873B2 - 記憶装置 - Google Patents

記憶装置 Download PDF

Info

Publication number
JP5617873B2
JP5617873B2 JP2012135809A JP2012135809A JP5617873B2 JP 5617873 B2 JP5617873 B2 JP 5617873B2 JP 2012135809 A JP2012135809 A JP 2012135809A JP 2012135809 A JP2012135809 A JP 2012135809A JP 5617873 B2 JP5617873 B2 JP 5617873B2
Authority
JP
Japan
Prior art keywords
address
page
data
block
area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012135809A
Other languages
English (en)
Other versions
JP2012194993A (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 JP2012135809A priority Critical patent/JP5617873B2/ja
Publication of JP2012194993A publication Critical patent/JP2012194993A/ja
Application granted granted Critical
Publication of JP5617873B2 publication Critical patent/JP5617873B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication

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において、20は実ページ領域を、21は実消去ブロック領域を、22はメモリ領域を、23はバッファメモリを、25は消去済みブロックをそれぞれ示している。
図2において、高速転送を実現するため、16個のアレイAR0〜AR15を同時に動作させる。この場合データ書き込み時は、たとえばページP0,P1を同時書き込みし、消去時はブロックB0〜B15を同時消去する。このとき括書き込み単位となる実ページ領域20は32kB、一括消去単位となる実消去ブロック領域21は2MBに達することになる。すなわち僅か1セクター(512B)のデータを書き換える場合にも、最悪2MBものデータのコピー移動が必要になる。
この際、たとえば通常のNAND型フラッシュメモリでは1ブロックに64ページを含み、それら全てを読み出してコピーするには30msを要する。さらに多値型のNAND型フラッシュは1ブロックに128ページを含み、各ページの書き込み速度自体も遅いので、それら全てを読み出してコピーするには100ms以上を要する。したがって現実の転送性能は著しく低いものになってしまう。このような事情から、フラッシュメモリを用いた現在の記憶装置は、特に書き込み時においては、ハードディスクをはるかに下回る転送性能しか得られていない。
一方、通常のファイルシステムでは、最小の書き込み単位を成すクラスタサイズは4kB程度であり、この単位でランダムなアクセスがなされる。
さらに、通常のファイル記憶装置は、ATA等のインターフェース仕様に従って、たとえば512バイトのセクタ単位でランダムアクセスされる。
その場合、たとえばページP0とP1のみを書き換える要求が頻繁に発生する。
しかし、上述のような装置でそのようなアクセスを行うと、結局実消去ブロック領域21全体を消去しなければならない。かつその中の非選択領域に有効ファイルがあれば、それを消失から保護する必要がある。その典型的な対処例は図2に関連付けると次のようになる。
1.まずフラッシュメモリから、別途設けられたバッファメモリ23のメモリ領域22に、実消去ブロック領域21全体のデータを読み出す。
2.次にメモリ領域22内で、ページP0とP1に相当するデータを更新する。
3.次にフラッシュメモリ上のブロック領域21の消去を実行する。
4.最後に上記消去済の領域21に、更新後のメモリ領域22のブロックデータを全て書き戻す。
すなわち、4kバイトの書き込みのために、実際には消去と、2MBのデータの読み出しおよび書き込みが必要となる。
具体的には、1ページ分のデータの読み出しおよび書き込みにはそれぞれ200μsを要し、ブロックの消去には2msを要するので、30ms近くを必要とする。
これに対し、予め予備の消去済みブロック25を用意しておいて、消去済みブロック25に実消去ブロック領域21の元のデータとページP0とP1の更新後データを合成させて書き込みを行う手法もある。
この場合、仮想アドレス構成を用いて消去ブロック単位で論理アドレスと物理アドレスの対応を更新し、アクセス対象とされた論理アドレスに対応する物理ブロックは元の消去ブロック領域21からデータの移動先ブロック領域25に張り替えられる。
しかしこの場合も、有効データを消去ブロック領域21から移動先ブロック領域25に退避させる作業は必要である。またこの際、通常は元のブロック領域21を消去して、そちらを予備ブロックに変える。したがって、結局は従来とほぼ同様の読み出し、書き込み、消去が必要であり、大きなオーバーヘッドが生じることに変わりは無い。
したがって、現実の転送性能は著しく低いものになってしまう。
このような事情から、フラッシュメモリを用いた現在の記憶装置は、特に書き込み時においては、ハードディスクをはるかに下回る転送性能しか得られていない。
また、前述の如く、近年NAND型フラッシュメモリでは、同じ消去ブロック内のページは下位アドレスから上位アドレスに向けてしか書き込みできない。このように消去ブロック内の書き込み順序にも制限がついた場合、問題はさらに深刻となる。
一般のファイルシステムにおいては、セクタ間の書き込み順序に保証はなされない。したがって、消去ブロック途中から書き込みがなされることがしばしばあるが、その場合、ブロック内におけるそれより下位、すなわち前方のアドレス領域が空いていても、そこにデータは書き込めなくなる。その結果、後でそれらの領域に書き込み要求が出ると、書き換えと同様の処理が必要となり、前述のデータ退避や消去、書き込みを繰り返さざるを得なくなってしまう。
このような問題は単に転送性能を低下させるのみならず、フラッシュメモリの消去回数を増加させ、その寿命まで低下させてしまう。また巨大なファイルを書き換える場合でも、その先頭は消去ブロックの中途に存在するケースが殆どであり、やはり同一ブロック内に存在する書き換え対象外のデータを退避せねばならない。これらの操作はファイルアクセスのレイテンシになる。ファイルの末尾についても同様のオーバーヘッドが発生する。
本発明の目的は、転送速度の低下や書き込み劣化の発生を低減することが可能で、ひいては信頼性が高く、かつ高速な記憶システムを実現できる記憶装置を提供することにある。
本発明の第1の観点の記憶装置は、並列にアクセス可能な複数のメモリを含むフラッシュメモリ部と、上記複数のメモリの2つ以上から並列にデータを取得し、一時記憶するページレジスタと、上記ページレジスタに並列格納されるデータ単位で論理アドレスと物理アドレスとの対照を管理するアドレス変換テーブルと、を有し、上記アドレス変換テーブルの更新と記憶メディアへの追記によってデータ書き換えを行う。
好適には、上記ページレジスタに格納されるデータ単位は複数のセクタを含み、当該記憶装置はセクタ単位でのアクセスが可能である。
本発明の第2の観点の記憶装置は、論理アドレスと物理アドレスの対照を示すアドレス変換テーブルと、上記アドレス変換テーブルに従ってデータを格納し、当該アドレス変換テーブルの更新と記憶メディアへの追記によってデータ書き換えを行う機能と、を有し、上記データは予備領域を有し、当該予備領域にはデータの論理アドレスと、記憶メディア上における同データの更新履歴を示す情報が記載されている。
好適には、上記更新履歴は、データの上記記憶メディアへの書き込み時のタイムスタンプ、あるいは、データの上記記憶メディア上における更新回数である。
好適には、上記記憶メディア上をスキャンして、上記予備領域の論理アドレスと更新履歴をもとに、アドレステーブルを再構築する機能を有する。
本発明の第3の観点の記憶装置は、論理アドレスと物理アドレスの対照を示すアドレス変換テーブルと、上記アドレス変換テーブルに従ってデータを格納し、当該アドレス変換テーブルの更新と記憶メディアへの追記によってデータ書き換えを行う機能と、カウンタと、を有し、メディア全域または複数データを含む特定領域に対して上記追記が実施されるごとにカウンタ値が更新され、当該カウンタ値または当該カウンタ値と一意的に対応する値が、上記データの予備領域にデータと同時に書き込まれる。
本発明の第4の観点の記憶装置は、論理アドレスと物理アドレスの対照を示すアドレス変換テーブルと、上記アドレス変換テーブルに従ってデータを格納し、当該アドレス変換テーブルの更新と記憶メディアへの追記によってデータ書き換えを行う機能と、を有し、装置に入力された論理アドレスは、当該アドレス変換テーブルで第1の物理アドレスに変換され、さらに記憶メディア上の欠陥領域を非選択にするアドレス変換機能を有し、上記第1の物理アドレスの少なくとも一部ビットには、上記アドレス変換機能で第2の物理アドレスに変換され、記憶メディアは上記第2の物理アドレスと、上記第1の物理アドレスの残りのビットを用いてアクセスされる。
好適には、上記第2のアドレス変換は、領域ごとに複数の変換セットに分割されている。
好適には、上記記憶メディアはフラッシュメモリであり、上記アドレス変換機能は、欠陥の存在する消去ブロックのアドレスを、正常な消去ブロックのアドレスに振り替える機能を含む。
本発明の第5の観点の記憶装置は、論理アドレスと物理アドレスの対照を示すアドレス変換テーブルと、上記アドレス変換テーブルに従ってデータを格納し、当該アドレス変換テーブルの更新と記憶メディアへの追記によってデータ書き換えを行う機能と、上記記憶メディアにおける欠陥領域と未記入領域の所在を示すテーブルと、上記追記先の領域として、欠陥領域以外の未記入領域を選択する機能と、を有する。
好適には、上記記憶メディアはフラッシュメモリであり、上記追記先の領域には欠陥の存在する消去ブロックを除いた領域が選択される。
本発明の第6の観点の記憶装置は、記憶メディアとしてのフラッシュメモリと、論理アドレスと物理アドレスの対照を示すアドレス変換テーブルに従ってデータを格納し、当該アドレス変換テーブルの更新と記憶メディアへの追記によってデータ書き換えを行う機能と、を有し、上記書き換えによって無効化された領域を含む第一の消去ブロックにおいて、残存している有効データを選択的に消去済の第二の消去ブロックに順次コピーし、しかる後に上記第一のブロックを消去することで、該無効化領域に新規書き込みができるよう回復処理を行う機能を有する。
好適には、各データは予備領域を有し、当該予備領域にはデータの論理アドレスが記載されており、上記有効データのコピー時には当該論理アドレス値に従ってアドレス変換テーブルを更新する。
このように、本記憶装置においては、フラッシュメモリにおける課題解決のため、追記型の記憶システムに着目している。このようなシステムにおいては、書き換えは、更新データを空き領域に追記し、元のデータを無効化することで実施される。
より具体的には、論理アドレスを物理アドレスに対応させるアドレス変換テーブルを用い、書き換えは対照データの物理アドレスを変更し、記憶メディアの空き領域に追記することで実施する。この手法の関連技術としてたとえば特許文献2には、アドレス変換テーブルを用いた追記型記憶システムにおける管理方法の詳細が記載されている。
ただし、これは単独チップを想定したものであり、大容量化に伴ってアドレス変換テーブルが巨大化してしまう問題がある。本発明の記憶装置はそれを解決する。さらに本発明の記憶装置は、近年の大容量に進化したフラッシュメモリに適用可能となるよう、以下のように機能する。
1.前述したページ書き込みの順序制約に従いつつ、追記型記憶システムを十分な信頼性で機能する。
2.大容量の不揮発性メモリは内部に欠陥を含むことが多く、その対策が要求される。特にフラッシュメモリでは、一つの欠陥が消去ブロック全体に悪影響を与えるので、書き込み単位と欠陥管理の単位が異なる場合が多い。本記憶装置は、このような欠陥管理を上記システムと両立させている。
3.追記型のデータ更新では、旧データの記憶領域はただちに消去されず、無効化される。フラッシュメモリにおいては、そのような無効化領域を空き領域に回復させる手段が必要であり、本記憶装置は、その回復処理を上述の制約のもとで適切に行う。
本発明によれば、たとえばフラッシュメモリを記憶メディアとして使用する際、信頼性が高く、かつ高速な記憶システムを実現できる。
本発明によれば、ブロック単位の消去や、ブロック内のデータ書き込み順序の制約に伴う転送速度の悪化や書き込み劣化の発生を、大幅に低減することが可能である。
本発明によれば、フラッシュメモリを記憶メディアとして使用しつつ、実使用上常態的に高速な書き換えを実現することができる。その消去回数も減少させることができ、書き換え疲労を低減することで、信頼性の高い書き換えが可能である。
さらにそのような性能向上を得つつ、不良ブロックの置換等も機動的に実施でき、フラッシュメモリにおいて無効化された領域の回復も適切に実施でき、また、電源瞬断等でアドレス変換テーブルが破壊された場合でも、齟齬なく再構築することが可能である。
NAND型フラッシュメモリの内部構成例を示す図である。 記憶装置を構成するフラッシュメモリの概念図を示す図である。 第1の実施形態に係る記憶装置を示す構成図である。 第1の実施形態に係るアドレス変換テーブルの構成例を示す図である。 追記型書き込みを行った場合に生じる問題点と解決法について説明するための図である。 第2の実施形態に係る記憶装置を示す構成図である。 第2の実施形態に係るアドレス変換テーブルの構成例を示す図である。 第3の実施形態に係る記憶装置を示す構成図である。 第3の実施形態に係るアドレス変換テーブルの構成例を示す図である。 使用RAM容量を圧縮したアドレス変換に使用するアドレス変換テーブルを示す図である。 スペアテーブルのRAM容量を圧縮した例を示す図である。 使用RAM容量を圧縮したアドレス変換に使用するアドレス変換テーブルの他の例を示す図である。 第4の実施形態に係る記憶装置を示す構成図である。 第4の実施形態に係る消去ブロック内部のデータ処理について説明するための図である。 第4の実施形態におけるアドレス変換テーブル更新の具体例を説明するための図である。 第5の実施形態に係る記憶装置を示す構成図である。 第5の実施形態に係る制御回路のアドレス変換テーブルおよびページ状態の管理テーブルの構成例を示す図である。 第5の実施形態の無効領域の回復手順を説明するための図である。 第6の実施形態を示す図であって、そのようなECC処理と欠陥ブロック管理を導入した、第5の実施形態(図18)の装置構成上の応用変形例を示す図である。 第6の実施形態に係る制御回路のアドレス変換テーブルおよびページ状態の管理テーブルの構成例を示す図である。 本第7の実施形態に係るコンピュータシステムの構成例を示す図である。 第7の実施形態に係る制御回路のアドレス変換テーブルの構成例を示す図である。
以下、本発明の実施形態を図面に関連付けて説明する。
図3は、本第1の実施形態に係る記憶装置を示す構成図である。
図3の記憶装置30は、インターフェース回路(I/F)31、ページバッファ32、内部データバス33、転送制御回路34、およびNAND型フラッシュメモリ35,36を、主構成要素として有している。
記憶装置30において、32ビットの内部データバス33には、16ビットの入出力を持つ2チップのNAND型フラッシュメモリ35,36が並列接続されている。2つのチップのNAND型フラッシュメモリ35,36は読み出しや書き込みにおいて、同時並列にアクセスされる。
ページバッファ32は、アクセスされたページデータを内部データバス33を介して一時記憶するものであり、外部とのインターフェース回路31に接続されている。
転送制御回路34は、2つのチップのフラッシュメモリ35,36とページバッファ32間の転送を管理する。転送制御回路34は、RAM37を内蔵しており、内蔵されたRAM37には図4に示すようなアドレス変換テーブル38が構築されている。
本記憶装置30のアクセスは以下のようになされる。ここでは簡単のため、16進数のアドレスは次のように割り振られるとする。たとえば外部入力アドレスが”0x5500C”であった場合、上位の”0x5500”はページアドレス、下位”0xC”はページ内のセクタアドレスであり、本記憶装置は1セクタ単位でランダムアクセスが可能である。
読み出しの際、外部から”0x5500C”のセクタアドレスが入力されると、転送制御回路34は上位のページアドレスを受けて内蔵RAM37にアクセスし、アドレス変換テーブル38から論理ページアドレス(LA:LOGICAL ADDRESS)”0x5500”に対応する物理ページアドレス(PA:PHISICAL ADDRESS)”0x00B0”を取得する。
この物理アドレスをもとにメモリチップであるNAND型フラッシュメモリ35,36が共にアクセスされ、各々からページアドレス”0x00B0”に格納されたページデータ39,40が読み出され、ページバッファ32に格納される。
インターフェース回路31はページバッファ32のページデータの中から、下位アドレス”0xC”に相当するセクタを選択し、外部に出力する。
一方、外部から”0x5500C”に書き込みを行う場合は、まず読み出しと同様の手順でページデータ39,40がメモリチップであるフレッシュメモリ35,36から読み出され、ページバッファ32に格納される。その後下位アドレス”0xC”に相当するセクタが選択され、外部から入力されたデータに更新される。
更新後のページデータは、フラッシュメモリ35,36に書き戻されるが、その際各々の空き領域41,42に書き込まれる。
さらに、ページテーブルの論理アドレス”0x5500”に対応する物理アドレスは、空き領域41,42のアドレス”0x0280”に更新される。
このように更新されたデータは、フラッシュメモリ上の適当な空き領域に、追記の形で書き込まれる。ランダムなページが更新されても、論理アドレスから物理アドレスにリマッピングすることで、それらは消去済みブロック内の下位アドレスから順次連続に書き込んで行くことが可能である。
本構成では2つのメモリチップであるフラッシュメモリ35,36が並列化され、各々から読み出されたページデータが、ページバッファ32に一括格納される。この際、単独チップを使用した場合に比べてメモリ容量は2倍になるが、これは論理ページの容量が2倍になることで実現されるので、ページ数は増加しない。したがって、アドレス変換テーブル38は変化せず、それを格納するRAM37の容量も増加しない。
一方、並列化の弱点である消去回数の増加や、書き換え疲労の加速はページ単位のアドレス変換を用いた追記型の書き込みで大幅に緩和される。
すなわち、フラッシュメモリの高並列化と、ページ単位のアドレス変換による追記型書き込みは、両者を組み合わせることで互いの弱点を補い合う。そして特にメモリセルの書き込み時間が律速する書き込み工程においては、並列度に比例して転送速度は向上する。
なお、本実施形態においては、16ビットIOのチップ2個を32ビットバスに接続することで完全な並列動作としたが、要は実効的なページサイズを並列度に比例して増加させる形でアクセスできれば良いのであって、並列化の手法は様々な形態が考えられる。
たとえば、二つのメモリチップは必ずしも全く同時に読み出しや書き込みを開始する必要なない。各メモリへの書き込み動作はページバッファからメモリチップへのデータ転送工程と、メモリチップ内での書き込み工程の二つの処理(作業)を含むが、たとえば16ビットのバスを両チップで共有すれば、転送は個々に行わざるを得ない。その場合、ページバッファから片側のメモリチップにデータを転送している間に、もう片側へメモリチップ内で書き込みをスタートしても良いし、両者への転送を順次行った後に、書き込みを同時スタートしても良い。
このように、各々のチップの動作タイミングをずらしながら両者を並列動作させる手法は一般的に見られるものであり、そのようなケースでも本発明は問題なく適用できる。
また、たとえば、1チップが2バンクにより構成され、異なるメモリアレイから同時に読み出されたデータ、または異なるメモリアレイに同時に書き込まれたデータが一つの実効ページを構成する場合でも、同様の効果を得ることができる。
ところで前述の如く、近年のフラッシュメモリの多くは、同一ブロック内のページ書き込み順序についても、下位アドレスから順に書き込むよう制約が設けられている。このような制約の上で上述のような追記型書き込みを行った場合に生じる問題点と解決法について、図5を参照して具体的に解説する。
アドレス変換テーブル38bはRAM37上に構成されるが、それは電源を落とすと消えてしまう。その前にフラッシュメモリ35b内に専用領域を設ける等して保存しておく方法もあるが、停電による電源瞬断等を考慮すると、万全な対策とは言えない。
アドレス変換テーブルが消失もしくは欠落した場合、メモリへのアクセス自体が全くできなくなり、全データが破壊されたのと同様の致命的自体に陥るので、その保護は極めて重要である。
したがって、ページデータを書き込む都度に、その中に予備領域を設けて、そこにテーブルの更新内容を反映しておくのが最良の対策となる。具体的には、そのページの論理アドレスを記載しておく。これにより、電源投入時にチップであるフラッシュメモリ35bの保存データを上位(物理)アドレスからスキャンしていくことで、物理アドレスと論理アドレスとの対照が判明し、変換テーブルを再構築できる。
ここで論理ページ”0x5500”が更新され、元のページデータ39bが更新されて、更新後データが空き領域41bに書き込まれたとする。この際、ページデータ39bの予備領域43bには既に論理ページアドレス”0x5500”が記載されており、空き領域41bの予備領域45bにも同じ論理アドレス”0x5500”が記載されることになる。
ところで、同一ブロック内のページの書き込み順に上記規定があった場合、ページ39b内に未書き込みの予備領域があっても、もはや書き込みは不可能である。すなわち更新され、無効化された元ページを後でマークする手段が無い。そうなると、テーブル再構築のためにスキャンを行う時点では有効データと無効データの判別がつかないため、同じ論理アドレスが複数出現し、正しいアドレス変換テーブルを構築できなくなる。
そこで、本実施形態においては、各ページデータの書き込み時に、その予備領域に論理アドレスとともに、どのデータが最新であるかを判別するための更新履歴を記載する。
たとえば、更新時のタイムスタンプか、または論理アドレスに対応した累計更新回数、を記載しておく。
なお、累計更新回数に関しては、たとえば全論理アドレスにおける更新の累計、あるいは分割した論理アドレスごとの更新の累計を保持するカウンタをメモリ上に設けておき、各ページデータの書き込み時に対応するカウンタ値をインクリメントし、その結果を上記予備領域に記載すれば良い。
また、ブロック内のページ書き込み順序が規定されている場合には、同一ブロック内の各ページの新旧は一意的に決まるので、上記カウンタは書き込み先ブロックが変わった時のみインクリメントし、それを累計更新回数としても良い。
アドレス変換テーブルの再構築時には、その履歴を参照に最も新しい論理アドレスと物理アドレスの対応を、テーブルに反映させる。
具体的なテーブルの再構築は、メモリ容量を節約するため、たとえば次のように行えば良い。アドレス変換テーブル38bとともに、同じメモリ上に予備のテーブル領域(予備テーブル)46bを用意しておく。
フラッシュメモリ35bの物理アドレスをスキャンしてページデータを読み出し、論理アドレスを取得するごとに、論理アドレスと物理アドレスの対応をアドレス変換テーブル38bに反映する。前述の例に従えば、このとき、たとえばフラッシュメモリ35bの”0x00B0”のページを読み出すと、論理アドレス”0x5500”が取得されるので、まず”0x5500”の論理アドレスに対応する物理アドレスのフィールド47bに0x00B0”が記載される。
さらに順次スキャンを続け、”0x0280”のページを読み出すと、同じ論理アドレス”0x5500”が取得されるのが、既に”0x5500”に対応した物理アドレスフィールド47bには”0x00B0”が書き込まれている。このようにして物理アドレスの重複が検出されると、予備テーブル46b上に記憶領域48bが確保され、物理アドレスフィールド47bの値は予備テーブル46bにおける記憶領域48bのインデックスに書き換えられる。
このようにして物理アドレスが重複した論理アドレスに対して一通り記憶領域が確保されると、再度フラッシュメモリ35bの物理アドレスを最初からスキャンする。このようにして再度”0x00B0”のページを読み出すと、論理アドレス”0x5500”が取得されるが、その物理アドレスのフィールド47bは予備テーブル46b上の記憶領域48bへのインデックスが格納されている。そこで、記憶領域48bに物理アドレス”0x00B0”と、上記履歴データを書き込む。
さらに順次スキャンを続け、”0x0280”のページを読み出すと、同じ論理アドレス”0x5500”が取得され、同様に記憶領域48bへのインデックスが取得される。ここに記載されている履歴データを自らの履歴データと比較して、自らの履歴の方が新しければ、物理アドレスと履歴データを書き換える。
こうして二度目のスキャンが終了すれば、予備テーブル46bには最新の物理アドレスが格納されることになる。その後アドレス変換テーブル38bを上からスキャンして、物理アドレスのフィールドに予備テーブル46bへのインデックスがあれば、その値をインデックス先に格納された物理アドレスに入れ替える。
以上の過程を経て、完全なアドレス変換テーブルが再構築される。このようなやり方は、物理アドレスに重複が生じた論理ページアドレスに対してのみ履歴データ格納用のメモリが確保されるので、アドレス変換テーブルに関連したRAMの使用量を減らすことができる。
大容量のフラッシュメモリにおいては欠陥の管理も重要になる。たとえばフラッシュメモリの場合、一つのメモリセルに、たとえばゲート破壊等の欠陥があると、それは消去ブロック全体の信頼性を損ねるケースが多い。
したがって、欠陥は通常消去ブロックの単位で管理され、欠陥セルを含む消去ブロックは予備ブロックに置換される。これらの置換はエラー訂正時に欠陥を検出し、出荷後動的になされることもある。また、同時にこのようなブロック管理は消去回数の平均化等にも使用され、書き換え回数の多いブロックと少ないブロックでデータを入れ替える等の対策がとられることもある。
このような消去ブロック単位のメモリ管理と、今回のページ単位でのメモリ管理を両立させた、実施形態を図6に関連付けて説明する。
図6は、第2の実施形態に係る記憶装置を示す構成図である。図7(A),(B)は第2の実施形態に係る転送制御回路におけるアドレス変換テーブルの構成例を示す図である。
本第2の実施形態に係る記憶装置30Cの基本構成は第1の実施形態におけるフラッシュメモリを1チップにしたものに近いが、転送制御回路34cにはページアドレスの変換テーブル38cを構成するRAM37cに加えて、消去ブロック単位のアドレス変換テーブル51cを構成するRAM50cが搭載されている。アドレス変換テーブル51cは欠陥を含むブロックがアクセスされないよう、それを正常ブロックで置き換えるように、論理アドレスと物理アドレスの対応がなされている。
本記憶装置30Cのアクセスは以下のようになされる。
読み出しの際、たとえば外部から”0x5500C”のセクタアドレスが入力されると、転送制御回路34cは上位のページアドレス”0x5500”を受けて内蔵RAM37cにアクセスし、アドレス変換テーブル38cから上記論理ページアドレスLPAに対応する物理ページアドレスPPA”0x0180”を取得する。
この物理アドレスのうち、上位の”0x01”は消去ブロックに対応するアドレスであり、この値はアドレス変換テーブル51cによって再度変換され、物理ブロックアドレスPBA”0x70”が取得される。
実際のフラッシュメモリ35cからは、アドレス変換テーブル38cから得られた下位の物理ページアドレス”0x80”と、アドレス変換テーブル51cから得られた物理ブロックアドレス”0x70”が合成され、メモリ上の物理アドレス”0x7080”に相当するページ領域39cがアクセスされ、ページバッファ32cに格納される。インターフェース回路31cはその中から、下位アドレス”0xC”に相当するセクタを選択し、外部に出力する。
一方、外部から”0x5500C”に書き込みを行う場合は、まず読み出しと同様の手順でページデータ39cがメモリチップであるフラッシュメモリ35cから読み出され、ページバッファ32cに格納される。その後、下位アドレス”0xC”に相当するセクタが選択され、外部から入力されたデータに更新される。更新後のページデータは、フラッシュメモリ35cに書き戻されるが、その際アドレス変換テーブル51cの各論理アドレスに対応する物理アドレスが参照され、そのブロック内の空き領域が検索される。
たとえば、論理アドレスLBA”0x40”において、対応する物理アドレスPBA”0x71”のブロックに適当な空き領域41cがあり、そのメモリ上のページアドレスは”0x71F0”であったとする。このときページデータは空き領域41cに書き込まれ、さらにページテーブルの論理アドレスLPA”0x5500”に対応する物理アドレス(PPA)は”0x40F0”に更新される。
このような仮想アドレスの階層化は、複数チップや複数バンクの並列化に対しても、柔軟な管理を可能にする。図8に並列化した2チップを用いた第3の実施形態を示す。
図8は、第3の実施形態に係る記憶装置を示す構成図である。図9(A),(B)は第3の実施形態に係る転送制御回路におけるアドレス変換テーブルの構成例を示す図である。
本第3の実施形態に係る記憶装置30Dでは第2の実施形態のフラッシュメモリを2チップ並列とし、消去ブロック単位のアドレス変換テーブル51dにおける物理アドレスフィールドPBA0とPBA1を各々のチップであるフラッシュメモリ35d,36dに対して独立に設置した。すなわち、転送制御回路34dに内蔵されたRAM50dには、消去ブロック単位のアドレス変換テーブルが実質2セット構成されている。
本記憶装置のアクセスは以下のようになされる。
読み出しの際、たとえば外部から”0x5500C”のセクタアドレスが入力されると、転送制御回路34dは上位のページアドレス” 0x5500”を受けて内蔵RAM37dにアクセスし、アドレス変換テーブル38dから上記論理ページアドレスLPAに対応する物理ページアドレスPPA”0x0180”を取得する。この物理アドレスのうち、上位の”0x01”は消去ブロックに対応するアドレスであり、この値はアドレス変換テーブル51dによって再度変換され、メモリチップであるフラッシュメモリ35dに対する物理ブロックアドレスPBA0”0x70”およびフラッシュメモリ36dに対する物理ブロックアドレスPBA1”0x01”が取得される。
実際のフラッシュメモリ35dに対しては、アドレス変換テーブル38dから得られた下位の物理ページアドレス”0x80”と、アドレス変換テーブル51dのPBA0フィールドから得られた物理ブロックアドレス”0x70”が合成され、メモリ上の物理アドレス”0x7080”に相当するページ領域39dがアクセスされる。フラッシュメモリ36dに対しては、アドレス変換テーブル38dから得られた下位の物理ページアドレス”0x80”と、アドレス変換テーブル51dのPBA1フィールドから得られた物理ブロックアドレス”0x01”が合成され、メモリ上の物理アドレス”0x0180”に相当するページ領域40dがアクセスされる。両者から読み出されたページデータはページバッファ32dに一括格納される。インターフェース回路31dはその中から、下位アドレス”0xC”に相当するセクタを選択し、外部に出力する。
一方、外部から”0x5500d”に書き込みを行う場合は、まず読み出しと同様の手順でページデータ39d,40dが各々メモリチップであるフラッシュメモリ35d,36dから読み出され、ページバッファ32dに一括格納される。その後下位アドレス”0xC”に相当するセクタが選択され、外部から入力されたデータに更新される。更新後のページデータは、フラッシュメモリ35dおよび36dに書き戻されるが、その際アドレス変換テーブル51dの各論理アドレスに対応する物理アドレスが参照され、そのブロック内の空き領域が検索される。
たとえば、論理アドレスLBA”0x40”に対応して、フラッシュメモリ35d上の物理アドレスPBA0”0x71”のブロックに空き領域41dが、フラッシュメモリ36d上の物理アドレスPBA1”0x7C”のブロックに空き領域42dがあり、そのメモリ上のページアドレスはそれぞれ”0x71F0”および”0x7CF0”であったとする。このときページデータは空き領域41d,42dに書き込まれ、さらにページテーブル38dの論理アドレスLPA”0x5500”に対応する物理アドレスPPAは”0x40F0”に更新される。
本実施形態では独立した物理アドレスフィールドを持つ消去ブロック単位のアドレス変換テーブル51dを採用することで、フラッシュメモリ35dおよび36dの欠陥管理を全く独立に実施できる。その一方で、それらはページ単位のアドレス変換テーブル38dからは、単一のチップと同様に扱われる。
このように、本実施形態における仮想アドレスの階層化は、追記型の記憶装置において、チップごとに独立した複雑な欠陥管理も可能にする。
上記実施形態ではブロックレベルのアドレス変換にアドレス変換テーブル51dを使用した。しかしこのような対照テーブルを使用すると、各々のチップごとに物理アドレスフィールドを設ける必要があり、RAM容量を圧迫する。
これに対して使用RAM容量を圧縮したアドレス変換の例を示す。ハードウエア構成は図8と同様とする。
図10(A)〜(C)は、使用RAM容量を圧縮したアドレス変換に使用するアドレス変換テーブルを示す図である。
RAM37dに格納されるアドレス変換テーブル38gは第3の実施形態と同じである。ただし、RAM50dにはより小型のテーブル51gおよび52gが格納されている。
本例では、各論理ブロックアドレスLBAに対しては、予め同じ値の物理ブロックアドレス”0x00”〜”0x6F”が暗黙に割り振られている。一方、物理ブロックアドレス”0x70〜0x7F”の領域はスペアブロックに充てられる。
ブロックテーブル”51g”においては1ビットの欠陥フラグDEFと、スペアテーブルのインデックスを格納するための5ビットのフィールドSIDが設けられているのみである。一方スペアテーブル52gには、各スペアインデックスSIDに対応して、フラッシュチップごとの欠陥フラグDEF0、DEF1とスペアオフセットSOF0、SOF1が格納されている。
たとえば、外部から論理ページアドレスLPA”0x5500”へのアクセスがなされ、アドレス変換テーブル38gから物理ページアドレスPPA”0x0180”を取得したとする。
この物理アドレスのうち、上位の”0x01”は消去ブロックに対応する論理アドレスである。テーブル51gにおいて、ブロックアドレスLBA”0x01”には欠陥フラグが立っており、スペアインデックスフィールドSIDには”10”が記録されている。そこでスペアテーブル52gを参照すれば、チップ35dには欠陥がなく、チップ36dではスペアオフセットSOF1”0x4”に対応するスペアブロックに置換すべきことが解る。
したがって、変換後の物理ブロックアドレスはチップ35dにおいては論理アドレスと同じ”0x01”、チップ36dに対してはスペア群から”0x74”と判定される。それらはページの下位アドレス”80”と合成されて、各々のフラッシュメモリにおける対応ページ”0x0180”および”0x7480”がアクセスされる。
第3の実施形態におけるテーブル51dでは112個の各論理ブロックに対して、各フラッシュチップの物理アドレス格納用に7ビットごとのフィールドが設けられていた。従って最小でも7x2x112〜1.57kビットのメモリ容量を要したが、テーブル51gは各論理アドレスに6ビット、さらにテーブル52gは32個のスペアブロックに10ビットを使うのみなので、合計しても6x112+10x32〜0.99kビットで済む。したがって、使用するRAM容量を圧縮できる。
このように欠陥ブロックを回避するための変換手法にはさまざまなバリエーションが生じ得る。しかしいずれの場合でも、まずアドレス変換テーブルを用いてページ単位のアドレス変換を実施した後、その一部ビットに再度欠陥回避用の変換を施し、変換後の値を残りのビットと合成させてフラッシュメモリにアクセスしている。これによってページ単位の書き込みとブロック単位の欠陥管理を柔軟に両立させることが可能になる。
さらに上記実施形態のスペアテーブルのRAM容量を圧縮した例を図11(A)〜(C)に示す。
たとえば、図10の実施形態のチップ数が2個から4個に増加した場合、図10のスペアテーブル52gの各行はさらに横方向へフィールドを同数追加することになる。一方、欠陥を含むブロックの総数も最大2倍と成り得るので、SIDも倍になり、範囲は0x00〜0x3Fとなる。このように使用チップ数がN倍になると、スペアテーブル52gのRAMサイズはNの二乗倍に膨れ上がる。
これに対して、図11の実施形態のスペアテーブル52iは、同一の各論理ブロックアドレスLBAに対応する複数の置換ブロックを縦積みで定義してある。”Last”フィールドは定義の末尾を示し、”Chip”フィールドは置換を実施するChipアドレスである。
テーブル51iにおいて、ブロックアドレスLBA”0x01”には欠陥フラグが立っており、スペアインデックスフィールドSIDには”0x00”が記録されている。そこでスペアテーブル52iを参照すれば、チップ”0x0”および”0x2”において、共にスペアオフセットSOF”0x0”に対応するスペアブロックに置換すべきことが解る。
また、テーブル51iにおいて、ブロックアドレスLBA”0x6E”には欠陥フラグが立っており、スペアインデックスフィールドSIDには”0x1F”が記録されている。そこでスペアテーブル52iを参照すれば、チップ”0x1”、”0x2”および”0x3”において、それぞれスペアオフセットSOF”0x6”、”0xA”および”0x4”に対応するスペアブロックに置換すべきことが解る。
本例では、スペアテーブル52iのSIDは欠陥の総数をカバーするので、範囲は0x00〜0x3Fで実施例A1と同様に増加する。しかし行方向のビット数増加は大幅に低減でき、スペアテーブルに要するRAM容量を圧縮できる。
さらに上述のように多重変換を行わないもう一つの解決手法を示す。簡便のため、ハードウエア構成は図7と同様とする。
図12(A)〜(C)は、使用RAM容量を圧縮したアドレス変換に使用するアドレス変換テーブルの他の例を示す図である。
RAM37cに格納されるアドレス変換テーブル38hは第2の実施形態と同じである。ただし、RAM50cには各物理ブロックアドレスPBAにおける欠陥状態と、ブロックの使用状態を示すテーブル51hが格納されている。欠陥フラグDEFは対象ブロック内の欠陥の有無を示す。一方,使用フラグUSDはブロック消去後に”0”となり、一箇所にでもデータが書き込まれると”1”になる。
さらに,前回書き込んだページアドレスを示す書き込みポインタがレジスタ53hに格納されている。通常書き込みは、ポインタをインクリメントする形で実施される。すなわち,同一ブロック内では、ページアドレス”0x00”から”0xFF”に向けて順番に書き込まれる。
本実施形態では、フラッシュメモリ内に書き込みが実施される際、テーブル51hとレジスタ53hから書き込み先の物理ページアドレスが決定される。この際欠陥情報の検出された欠陥ブロックはスキップされ、欠陥ブロック内のページへは書き込みは実施されない。従って消去ブロックアドレスを変換することなく欠陥ブロックへのアクセスを回避できる。
たとえば論理ページアドレス”0x5500”の一部を更新するとする。この際まずページバッファへの読み出しが実施されるが、アドレス変換テーブル38hから得られる物理ページアドレス”0x0180”で直接フラッシュチップ35cをアクセスして良い。こうして読み出され、ページバッファ上で更新されたデータは、以下の手順でフラッシュメモリ35cの空き領域へ書き込まれる。
1.レジスタ53hのポインタ値”0x01FF”は直前に書き込みを実施したページの物理アドレスを示している。これはブロック”0x01”の末尾のページであり、このブロックは一杯まで書き込まれていることが解る。従ってシステムは、ブロックアドレスをインクリメントしつつテーブル53hをスキャンし、次の書き込み先ブロックを探す。
2.次のアドレス”0x02”のブロックはDEFが”1”であり、欠陥ブロックである。したがってスキップされる。
3.次のアドレス”0x03”のブロックはUSDが”1”であり、使用済みブロックである。従ってスキップされる。
4.次のアドレス”0x04”のブロックは消去済みの良品ブロックである。したがって
レジスタ53hのポインタ値はその先頭ページアドレス”0x0400”に設定され、更新後データはそこに書き込まれる。
5.アドレステーブル38hの論理ページアドレス”0x5500”に対応する物理アドレスフィールドが、”0x0400”に更新される。
すなわち、本実施形態では、物理ブロックアドレスごとに対応ブロックの欠陥と空き情報を記載したテーブルを設け、フラッシュメモリへの書き込みの時点で左記テーブルを参照し、欠陥ブロックを回避して、書き込み先のページを選択する機能を備える。
したがって、アドレス変換テーブル38hにおける物理ページのアドレスフィールドには欠陥ブロック内のページは含まれる事は無く、ブロックアドレスを変換する必要が無い。
なお、各実施形態は全てフラッシュメモリを例に挙げたが、これらの追記型記憶システムは、たとえば電気的消去のできないEPROMやOTP等にも適用することができる。その他、バイト単位でのランダム書き換えができないあらゆるメモリに対して適用することが可能である。
ところで、追記型記憶システムにおいては、更新された後に残る過去のデータ領域は無効となる。特にフラッシュメモリにおいては、それらは消去ブロック単位で回復処理が実施され、書き込み可能な空き領域に変換される必要がある。特に消去ブロック内の書き込み順序に制約があるケースにおいて、その適切な回復手順を、第4の実施形態として図13に示す。
図13は、本第4の実施形態に係る記憶装置を示す構成図である。図14(A)〜(C)は、本第4の実施形態における消去ブロック内部のデータ処理手順を示す図である。
第4の実施形態に係る記憶装置30Eの構成は、基本的に第2の実施形態と同様である。ただし、転送制御回路34e内には、ページアドレステーブルおよびブロックアドレステーブルを構築するRAM37e,50eに加え、後述のページアドレス更新部分を一時的に記憶するレジスタ60が設けられている。これは既存のRAM領域の一部を用いても良い。ここでフラッシュメモリ35e内の消去ブロック61に対して、その無効領域の回復処理を行うとする。この際、予備の消去済みブロック62を同時に使用する。
ここで、図14(A),(B),(C)に関連付けて、本第4の実施形態に係る消去ブロック61,62内部のデータ処理について説明する。
(A):消去ブロック61には、一度データが書き込まれた後、更新によって無効化された領域66,67,68が、有効なページデータ63,64,65と共存している。ここで有効ページデータを残しつつ、無効化領域を空きエリアに回復させる必要がある。ページデータ63,64,65には予備領域69,70,71が設けられており、そこには各ページの論理アドレスが格納されている。一方、予備ブロック62は消去済みの空き状態である。
(B):有効なページデータ63,64,65を予備ブロック62内の空き領域72,73,74に順番にコピーしていく。さらに、予備領域69,70,71に記載された各ページの論理アドレスと、新規にコピーされた領域の物理アドレスとの照合を、レジスタ60に格納する。
この際無効化された領域66,67,68はコピー対象とされず、上記有効なページデータのみが予備ブロック62に上詰でコピーされている。このような選択的コピー操作は、図2に示した一般的なコピー操作とは著しく異なり、ブロック内の各ページの相対位置の変化を伴っている。
(C):ブロックアドレステーブル50eを更新し、元の消去ブロック61を予備ブロック62と入れ替え、ブロック61を予備ブロックとして消去する。さらにレジスタ60の値を元に、RAM37eのページテーブル(アドレス変換テーブル)38eを更新する。
上記手順に伴う、アドレス変換テーブル更新の具体例を図15(A),(B),(C)に示す。図14における有効ページデータ64(図14)の論理ページアドレスは”0x5500”であるとする。この値は予備領域70(図14)に記載されている。以下このデータの推移を説明する。
(A):アドレス変換テーブル38eより、論理ページアドレス”0x5500”に対応する物理ページアドレスは、”0x0180”となり、その消去ブロックアドレス”0x01”はさらにアドレス変換テーブル51eで変換された後も、同じ”0x01”である。すなわち、論理アドレス”0x5500”に対応するページデータ64(図14)は、物理アドレス”0x01”の消去ブロック61内の、物理アドレス”0x80”に相当するページ領域64に格納されている。
(B):上記データは物理アドレス”0x72”に相当する予備ブロック62(図14)内の、物理アドレス”0x04”に相当するページ73(図14)にコピーされたとする。この際レジスタ60には以下の照応が格納される。
・現在テーブル(51e)を用いてアクセスされている論理ブロックアドレス”0x01”。
・コピーデータの新規格納先である領域73(図14)の物理ページアドレス”0x04”。
・予備領域70(図14)に格納された論理ページアドレス”0x5500”。
(C):上記レジスタ60の照応を反映させて、ページアドレス変換テーブル38eを更新し、論理ページアドレス”0x5500”に対応する物理ページアドレスを”0x0104”に書き換える。さらに予備ブロック62(図14)と元ブロック61(図14)の入れ替えに伴い、ブロックアドレス変換テーブル51eを更新し、論理ブロックアドレス”0x01”に対応する物理ブロックアドレスを”0x72”に書き換える。
このような手順を経てテーブル更新がなされた後は、まず外部から入力された論理ページアドレス”0x5500”に対し、まずアドレス変換テーブル38eで物理ページアドレス”0x0104”が取得され、さらにアドレス変換テーブル51eで上位”0x01”に対する物理ブロックアドレス”0x72”が取得される。これによって新規領域73(図14)に正しくアクセスすることが可能になる。
すなわち、無効データの回復処理に伴って有効データを移動させる際、予備領域に記載された論理ページアドレスをレジスタに一時記憶させ、この値をページアドレス変換テーブルに反映させることで、ブロック内のデータ格納場所の順序変更にも適切に対応することが可能になった。
以上説明したように、本実施形態によれば、たとえばフラッシュメモリを記憶メディアとして使用する際、信頼性が高く、かつ高速な記憶システムを実現できる。
本実施形態によれば、ブロック単位の消去や、ブロック内のデータ書き込み順序の制約に伴う転送速度の悪化や書き込み劣化の発生を、大幅に低減することが可能である。
さらにそのような性能向上を得つつ、不良ブロックの置換等も機動的に実施でき、フラッシュメモリにおいて無効化された領域の回復も適切に実施できる。
さらに第5の実施形態に係る記憶装置について説明する。
図16は、本第5の実施形態に係る記憶装置を示す構成図である。図17(A),(B)は、第5の実施形態に係る制御回路のアドレス変換テーブルおよびページ状態の管理テーブルの構成例を示す図である。
第5の実施形態に係る記憶装置70の構成は、基本的に第一の実施形態と同様である。但し制御回路装置74に内蔵されたRAM77には、アドレス変換テーブル78に加えて、ページ状態の管理テーブル86が構築されている。
図16の記憶装置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”が登録される。
このように更新データを追記するための空き領域の管理は、たとえば図16に示すようなページ状態管理テーブル86をRAM77上に構築して使用する。
本テーブルは(BA:Block Address)で表現される各消去ブロックに格納された各々のページの状態を2ビットのフラグ列で記録している。”0”は空き領域であり、”1”は書き込みが行なわれた有効領域、”2”はデータが更新され、無効化された無効領域を示す。
図17の状態はブロックアドレス”0x02”における物理ページ”0x80”以降が全て空き状態になっている。たとえば追記のための空き領域を決定するために、現在検索対象としているブロック”0x02”へのポインタをメモリ領域87に保存しておく。
フラッシュへの書き込み要求があれば、その上位ページからこのテーブルのフラグをスキャンして空きページ領域を検索する。ブロック全ての空き領域が使用されていると、ポインタをインクリメントし、次は”0x03”のブロックから空きページ領域を探す。
このようにしてポインタをブロックアドレスの先頭から末尾にかけて循環させていけば、フラッシュメモリ全域に対して均一な書き込みが実施できる。
本構成では二つのメモリチップであるフラッシュメモリ75,76が並列化され、各々から読み出されたページデータが、ページバッファ72に一括格納される。この際単独チップを使用した場合に比べてメモリ容量は2倍になるが、これは一括アクセス単位であり、アドレス変換テーブル78の管理単位でもあるページ領域の容量が2倍になることで実現されるので、ページ数は増加しない。したがってアドレス変換テーブル78は変化せず、それを格納するメモリ(RAM)77の容量も増加しない。
一方、並列化の弱点である消去回数の増加や、書き換え疲労が加速はページ単位のアドレス変換を用いた追記型の書き込みで大幅に緩和される。
なお、たとえば大型のファイル書き換え等、消去ブロック全体を書き換える場合には、有効データの退避処理はもともと不要であり、ブロック消去のみで良い。したがって、このようなケースでは上記追記型書き込みの採用の有無で大きな性能差は生じない。したがって一般的型書き換えと追記型書き換えをケースに応じて組み合わせても良い。
ところで、上述の如き追記型書き込みを実施した場合、更新前のデータが格納されていた物理ページアドレス”0x00B0”に相当するページ領域79,80はアドレス変換テーブル78の物理アドレスフィールドから削除され、外からアクセスできなくなる。すなわち無効化される。
しかしそれらにはデータが書き込まれており、そのままでは空き領域として使用することもできない。上述のような書き換えを何度も繰り返すと、多くの無効ページ領域が発生する。それらは再度空き領域として使用できるよう、消去して回復させる必要がある。またその場合、消去ブロック83,84に残された有効データは退避させねばならない。
このような回復処理は、たとえばまず対象ブロック内の有効データを、更新の際と同様に一旦ページバッファに読み出してから予備のページ領域に追記で書き込んでいき、それによって実質的な退避を行なえば良い。すなわち有効ページを仮更新することで、その元領域を全て無効化する。その後対象ブロックを消去することによって、回復処理が実施される。
図18(A)〜(C)は、無効領域の回復手順を説明するための図である。
図18(A)〜(C)には、消去ブロック83,84内部の有効データを退避し、無効ページ領域を実質的に回復させる、具体的手順<1>、<2>、<3>を例示している。
手順<1>
図17の状態からさらに追記による書き換えが進行し、消去ブロック83,84には、一度データが書き込まれた後、更新によって無効化されたページ領域群94,96が、有効なページ領域群93,95,97と共存しているとする。ここで有効ページ領域のデータを残しつつ、無効化領域を空き領域に回復させる必要がある。
一方、ブロック91,92は現在追記用の空き領域として使用している消去ブロックであり、ページ領域102まで書き込みが成されている。
手順<2>
有効なページ領域群93,95,97を消去ブロック91,92内の空き領域98,99,100に上詰めにして順番にコピーしていく。この際たとえば図16のページバッファ72に消去ブロック83,84から順次1ページ領域ずつを読み出し、消去ブロック91,92に書き込むとともに、アドレス変換テーブル78を更新する。すなわち各々のページ領域の論理アドレスに対応する物理アドレスフィールドに、コピー先の物理ページアドレスを登録していく。この際、各々のページ領域の論理アドレスは、各ページ領域にデータが書き込まれた際にその予備領域に記載しておき、コピー時にページバッファ72に読み出した時点で取得する。
この操作は、すなわち有効ページ領域群93,95,97を追記方式で書き換える作業(処理)に等しい。あるいは、予め予備領域を先行してページバッファ72に読み出し、まず論理アドレスを取得した後に、その論理アドレスに対してページ更新処理を実施すれば、通常のページ更新処理と全く同じプログラムで、コピー作業とアドレス変換テーブル78の更新作業が自動的に実際される。
実際には書き換えずコピーするのみであるが、この作業によって消去ブロック83および84内の全てのページは無効化され、有効ページ領域のデータは消去ブロック91,92に実質的に退避せしめられる。
手順<3>
消去ブロック83,84を消去する。これによってその内部は全て空き領域となり、後の追記に使用することが可能になる。これをもって無効領域94,96は実効的に回復される。
このように無効ページ領域の回復処理は、各有効ページ領域のコピーによる退避処理と、元消去ブロックの消去よりなる。また、回復対象となる消去ブロック内の有効ページに通常の更新処理と同様の手順でダミーの更新を施し、それをもってページの退避を実行すれば、回復処理時の有効ページ退避を通常の書き込みアルゴリズムに統合させることが可能である。
この場合、制御が容易になるばかりではなく、フラッシュメモリへの書き込みの均一化等、書き込み時の信頼性向上の為の各種工夫を回復処理にも適用することができ、記憶装置の総合的な信頼性を向上させることができる。
以上、本発明を用いた記憶装置について具体的な実施形態を述べたが、装置内部の構成はモディファイすることができる。
たとえば図16におけるページバッファ72は、制御回路74内部のRAM77上に構築しても良い。そのような場合にはインターフェース回路71、フラッシュメモリ75,76および制御回路74は共通の内部データバス73で接続された構成となる。
またはページバッファ72とフラッシュメモリ75,76との間にECCによるエラー訂正回路を設けて、ページバッファからフラッシュメモリへのページデータ書き込み時には符号化を実施してパリティビットを追加し、フラッシュメモリからページバッファへのページデータ読み出し時には復号化を行なっても良い。そのような装置構成の違いに関わらず、本発明を適用することは可能である。
または先に説明した第1〜第4の実施形態で述べたように、アドレス変換テーブル78,121に従ってページ単位のアドレス変換を実施した後、フラッシュメモリ内の欠陥ブロックをスキップするために、さらにブロックレベルでのアドレス変換を挿入しても良い。このような場合でも、前述した例と同様の制御で、本発明は問題なく適用することが可能である。
図19は、第6の実施形態を示す図であって、そのようなECC処理と欠陥ブロック管理を導入した、第5の実施形態(図18)の装置構成上の応用変形例を示す図である。
図20(A),(B)は、第6の実施形態に係る制御回路のアドレス変換テーブルおよびページ状態の管理テーブルの構成例を示す図である。
記憶装置110において、32ビットの内部データバス113には、16ビットの入出力を持つ2チップのNAND型フラッシュメモリ115,116が並列接続されている。2つのチップのフラッシュメモリ115,116は読み出しや書き込みにおいて、同時並列にアクセスされる。
ページバッファ112はアクセスされたページ領域を一時記憶するバッファであり、外部とのインターフェース回路111に第2の内部データバス118を介して接続されている。さらに第2の内部データバス118にはキャッシュメモリ117が接続されている。
制御回路123はフラッシュメモリ115,116とページバッファ112の間の転送を制御する。制御回路123にはフラッシュメモリ内の欠陥ブロックがアクセスされぬよう、その内蔵RAM124上に、ブロック単位のアドレス変換でそれらをスキップさせるためのアドレス変換テーブル126が構築されている。
さらに制御回路123にはECC回路125が搭載されており、ページバッファ112からフラッシュメモリ115,116にデータが書き込まれる際には符号化によるパリティビットの追加を行い、フラッシュメモリ115,116からページバッファ112にデータが読み出される際には復号化によるエラー訂正を実施する。
制御回路114はページバッファ112、キャッシュメモリ117およびインターフェース回路111の間のデータのやりとりを管理するコントローラであり、内蔵CPU119によって制御される。同じく内蔵されたRAM120には、CPU119を制御するためのプログラム領域やワークエリアが確保されるとともに、アドレス変換テーブル121が構築されている。
さらに制御回路114には、CPUの制御無しでキャッシュメモリ117とインターフェース回路111間のデータ転送を制御する制御回路122が搭載されている。
なお本図面においては制御線の記載は省略されている。
本第6の実施形態における第5の実施形態(図18)との主たる相違は、ページバッファ112とフラッシュメモリ115,116との間の転送に関して、アドレス変換テーブル126とECC回路125を保有する専用の制御回路123が設けられていることである。
これにより外部から入力された論理アドレスは、それを元にフラッシュメモリ115,116へのアクセスが成される場合、アドレス変換テーブル121と126により二重の変換を受ける。さらに入出力データにもECC符号化、復号化の変換が施される。
具体的な動作を以下に述べる。
読み出しの際、外部から”0x5500C”のセクタアドレスが入力されると、制御回路114は上位のページアドレスを受けて内蔵RAM117にアクセスし、アドレス変換テーブル121から論理ページアドレス(LPA:LOGICAL PAGE ADDRESS)”0x5500”に対応する物理ページアドレス(PPA:PHISICAL PAGE ADDRESS)”0x00B0”を取得する。
この物理ページアドレスPA中、上位の”0x00”は消去ブロックのアドレスを示すが、さらに制御回路123に入力されると、この部分は論理ブロックアドレス(LBA:LOGICAL BLOCK ADDRESS)として扱われ、アドレス変換テーブル126から物理ブロックアドレス(PBA:PHISICAL BLOCK ADDRESS)”0x01”が取得される。これがメモリチップのフラッシュメモリ115,116内の消去ブロック127,128のアドレスである。
一方、下位”0xB0”は各消去ブロック127,128内のページ領域1271,1281のアドレスである。
この物理アドレスをもとにフラッシュメモリ115,116が共にアクセスされ、各々からページアドレス”0x01B0”に格納されたページ領域1271,1281のデータが読み出され、さらにECC復号化が施されて、ページバッファ112に格納される。
一方、外部から”0x5500C”に書き込みを行う場合は、まず読み出しと同様の手順でページ領域1271,1281のデータがフラッシュメモリ115,116から読み出され、ページバッファ112に格納される。その後バッファ内の所望の箇所が、書き込みデータに更新される。
更新後のページデータは、フラッシュメモリ115,116に書き戻されるが、その際読み出し元のページ領域1271,1281が書き換えられるのでは無く、アドレス変換テーブル121のいずれの物理アドレスフィールドにも登録されていない、未使用の空きページに書き込まれる。そのような空きページは制御回路114側で管理されており、たとえば図16のような管理テーブル86が使用されて、物理ページアドレス” 0x0280”が選択される。
このうち上位の”0x02”は制御回路123に入力されると、アドレス変換テーブル126から”0x03”に変換され、合成されたアドレス”0x0380”から、メモリチップのフラッシュメモリ115,116のページ領域129a,129bに、ページバッファ112の更新済みデータが書き込み転送される。この際データには、ECC符号化によるパリティビットが追加される。
一方、制御回路114は、アドレス変換テーブル121の論理ページアドレス”0x5500”に対応する物理ページアドレスのフィールドに、” 0x0280”を登録し、元の物理ページアドレス”0x00B0”は無効化ページ領域として管理する。いずれのページアドレスも制御回路123の変換を経れば、フラッシュメモリ115,116上の正しいページ領域をポイントする。
本第6の実施形態においては、制御回路114で導出される物理ページアドレスは、制御回路123によって一対一のブロックレベルの変換を受けるが、その際同一ブロック内の各ページの相対位置は全く変わらない。したがって制御回路114からは、制御回路123で施される各種変換はブラックボックスとみなして良い。すなわち制御回路114は、メモリチップのフラッシュメモリ115,116と制御回路123を一体化したフラッシュメモリデバイスとみなし、独立した論理で任意のアクセスを実施しても、齟齬は発生しない。これはECCによる符号化、復号化についても同様である。
その結果制御回路114は、第5の実施形態と全く同様のアルゴリズムで無効化領域の回復処理を実施することが可能となる。
ところでここまでは、独立した記憶装置の内部にアドレス変換機構や回復処理機構を設ける場合について説明してきた。
しかし、このようなアドレス変換テーブルの管理と回復処理を、ホスト側の制御で実施することも可能である。そのようなコンピュータシステムを第7の実施形態として、図21に示す。
図21は、本第7の実施形態に係るコンピュータシステムの構成例を示す図である。また、図22は、第7の実施形態に係る制御回路のアドレス変換テーブルの構成例を示す図である。
図21のコンピュータシステム130は、処理ユニットとしてのCPU131、システムメモリであるRAM132、システムバス133、ブリッジ回路133、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に残された有効データは退避させねばならない。
このような回復処理は、たとえば図18(A)〜(C)に関連つけて前述したのと同様のアルゴリズムで、空き領域を持つブロック147,148を使用して行われる。すなわち回復処理の対象ブロックである消去ブロック141,142上の有効なページ領域群のデータを退避先ブロック147,148内の空き領域に上詰めにして順番にコピーし、それに応じてアドレス変換テーブル140の物理アドレスを更新する。全て有効ページデータがコピーされ終わると、元ブロック141,142を消去する。
ただし本第9の実施形態では、ドライバー139を用いてホストCPU131がブリッジ回路134にコマンドを送ることで、それらの処理(作業)を制御する。
たとえば上記回復作業における有効ページデータのコピーは、ホストCPU131からのコピーコマンドに応じて、ブリッジ回路134が所定のページをコピー元からページバッファ138に読み出してコピー先に書き込む。または所定のブロックを消去する。この際システムバス133は使用されないので、もし必要があれば、CPU131は上記コマンドを送信した後は別の処理(作業)を並行して実施することも可能である。
なお、このようなシステムにおいても、先に説明した第1〜第6の実施形態で述べたように、アドレス変換テーブル140に従ってページ単位のアドレス変換を実施した後、フラッシュメモリ内の欠陥ブロックをスキップするために、さらにブロックレベルでのアドレス変換を挿入しても良い。
30,30C〜30F・・・記憶装置、31,31c〜31f・・・インターフェース回路、32,32c〜32e・・・ページバッファ、33,33c〜33e・・・内部データバス、34,34c〜34e・・・転送制御回路、35,35c〜35e、36、36d、・・・フラッシュメモリ、38,38c〜38i、51c〜51e〜アドレス変換テーブル、70・・・記憶装置、71・・・インターフェース回路(I/F)、72・・・ページバッファ、73・・・内部データバス、74・・・制御回路、75,76・・・NAND型フラッシュメモリ、78・・・アドレス変換テーブル、110・・・記憶装置、111・・・インターフェース回路(I/F)、112・・・ページバッファ、113・・・内部データバス、114・・・制御回路、115,116・・・NAND型フラッシュメモリ、117・・・キャッシュメモリ、118・・・第2の内部データバス、119・・・CPU、121・・・アドレス変換テーブル、123・・・制御回路、126・・・アドレス変換回路、130・・・コンピュータシステム、131・・・CPU、132・・・システムメモリ(RAM)、133・・・システムバス、134・・・ブリッジ回路、135,136・・・NAND型フラッシュメモリ、137・・・データバス、138・・・ページバッファ。

Claims (4)

  1. 並列にアクセス可能な複数のメモリを含むフラッシュメモリ部と、
    上記複数のメモリの2つ以上から並列にデータを取得し、一時記憶するページレジスタと、
    上記ページレジスタに並列格納されるデータ単位で論理アドレスと物理アドレスとの対照を管理するページデータ用の第1のアドレス変換テーブルと、
    ブロックアドレス変換用の第2のアドレス変換テーブルと、を有し、
    上記第1および第2のアドレス変換テーブルに従ってデータを格納し、当該第1および第2のアドレス変換テーブルの更新と記憶メディアへの追記によってデータ書き換えを行う機能と、
    上記書き換えによって無効化された領域を含む第一の消去ブロックにおいて、残存しているページ単位の有効データを選択的に消去済の第二の消去ブロックに順次コピーし、しかる後に上記第一のブロックを消去することで、当該無効化領域に新規書き込みができるよう回復処理を行う機能と、を有し、
    上記回復処理における上記第一の消去ブロックのページ単位の有効データの上記第二の消去ブロックへのコピーは、上記データ書き換えと同様、上記第1および第2のアドレス変換テーブルの更新と記憶メディアへの追記によって実施され、かつ、上記第二の消去ブロック内の空き領域に詰めて順番に実施され、
    第一の消去ブロックにあるページ単位の有効データを、第二の消去ブロックにあるページ単位の有効データとともに、同一の第二の消去ブロックに集約し、異なる消去ブロック間の有効データを一つの消去ブロックに集約し、
    当該消去ブロックの集約に際し、
    上記第2のアドレス変換テーブルを更新し、元の消去ブロックである上記第一の消去ブロックを消去済みの予備ブロックとして消去し、上記コピーした有効ページデータのアドレスと新規にコピーされた領域のアドレスをもとに、上記第1のアドレス変換テーブルを更新する
    記憶装置。
  2. 上記データ書き換え、及び回復処理のデータコピーにおけるデータの書き込み先の選択において、不良ブロックを回避するための統一的な手段を有する
    請求項1記載の記憶装置。
  3. 上記不良ブロックの回避は、ブロックアドレス変換用のアドレス変換テーブルを使用して実施される
    請求項2記載の記憶装置。
  4. 上記回復処理におけるデータのコピーは、書き換えと同様に、上記ページレジスタを介して実施される、
    請求項1から3のいずれか一に記載の記憶装置。
JP2012135809A 2005-06-06 2012-06-15 記憶装置 Active JP5617873B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012135809A JP5617873B2 (ja) 2005-06-06 2012-06-15 記憶装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2005165234 2005-06-06
JP2005165234 2005-06-06
JP2012135809A JP5617873B2 (ja) 2005-06-06 2012-06-15 記憶装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2006115779A Division JP5130646B2 (ja) 2005-06-06 2006-04-19 記憶装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2014119420A Division JP2014194817A (ja) 2005-06-06 2014-06-10 記憶装置

Publications (2)

Publication Number Publication Date
JP2012194993A JP2012194993A (ja) 2012-10-11
JP5617873B2 true JP5617873B2 (ja) 2014-11-05

Family

ID=47086763

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2012135809A Active JP5617873B2 (ja) 2005-06-06 2012-06-15 記憶装置
JP2014119420A Pending JP2014194817A (ja) 2005-06-06 2014-06-10 記憶装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2014119420A Pending JP2014194817A (ja) 2005-06-06 2014-06-10 記憶装置

Country Status (1)

Country Link
JP (2) JP5617873B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108932107A (zh) * 2017-05-29 2018-12-04 爱思开海力士有限公司 数据存储装置及其操作方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6785205B2 (ja) * 2017-09-21 2020-11-18 キオクシア株式会社 メモリシステムおよび制御方法
JP2020198128A (ja) * 2020-08-31 2020-12-10 キオクシア株式会社 メモリシステム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3702080B2 (ja) * 1997-11-28 2005-10-05 株式会社東芝 メモリ管理装置及び情報処理装置
JP2002032256A (ja) * 2000-07-19 2002-01-31 Matsushita Electric Ind Co Ltd 端末装置
JP3646679B2 (ja) * 2001-08-03 2005-05-11 ソニー株式会社 不揮発性メモリのデータ書き換え方法
JP4812192B2 (ja) * 2001-07-27 2011-11-09 パナソニック株式会社 フラッシュメモリ装置、及び、それに記憶されたデータのマージ方法
JP2003058417A (ja) * 2001-08-21 2003-02-28 Matsushita Electric Ind Co Ltd 記憶装置
JP2003208352A (ja) * 2002-01-17 2003-07-25 Fujitsu Ltd 書き込み回数の制限とウエアレベリングを可能にしたフラッシュメモリ
JP2003216507A (ja) * 2002-01-22 2003-07-31 Sharp Corp 記憶容量処理システム
JP4188744B2 (ja) * 2003-04-08 2008-11-26 株式会社ルネサステクノロジ メモリカード
JP3766396B2 (ja) * 2003-04-21 2006-04-12 株式会社東芝 メモリ制御装置およびメモリ制御方法
JP2005078634A (ja) * 2004-08-26 2005-03-24 Matsushita Electric Ind Co Ltd 不揮発性記憶装置及びその書込み方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108932107A (zh) * 2017-05-29 2018-12-04 爱思开海力士有限公司 数据存储装置及其操作方法

Also Published As

Publication number Publication date
JP2014194817A (ja) 2014-10-09
JP2012194993A (ja) 2012-10-11

Similar Documents

Publication Publication Date Title
JP5130646B2 (ja) 記憶装置
KR100914263B1 (ko) 스크래치 패드 블록
JP5162846B2 (ja) 記憶装置、コンピュータシステム、および記憶システム
JP4399008B2 (ja) 不揮発性メモリおよびマルチストリーム更新追跡を伴う方法
JP4431175B2 (ja) 不揮発性メモリおよびマルチストリーム更新を伴う方法
KR100896698B1 (ko) 메모리의 페이지 및/또는 블럭의 사이즈와 상이한사이즈를 구비하는 데이터 섹터를 갖는 비-휘발성 메모리시스템을 작동시키는 방법
JP4933269B2 (ja) 不揮発性メモリおよびメモリプレーン配列を伴う方法
JP4956922B2 (ja) 記憶装置
TWI394044B (zh) 記錄來自一主機之資料之非揮發性記憶體及方法
US8700840B2 (en) Nonvolatile memory with write cache having flush/eviction methods
US8094500B2 (en) Non-volatile memory and method with write cache partitioning
JP4961693B2 (ja) コンピュータシステム
JP4910360B2 (ja) 記憶装置、コンピュータシステム、およびデータ書き込み方法
US20100174847A1 (en) Non-Volatile Memory and Method With Write Cache Partition Management Methods
JP2008146255A (ja) 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法
KR20060120231A (ko) 다중 블록 유닛들로의 블록의 적응형 결정론적 그룹화
JP2008146253A (ja) 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法
KR101468432B1 (ko) 제어된 스크럽 데이터 판독에 의해 트리거되는 플래시 메모리 리프레시 기술
KR20110118782A (ko) 비휘발성 메모리 및 기록 캐시를 분할하는 방법
JP5617873B2 (ja) 記憶装置
JP2007334413A (ja) 記憶装置
JP5494086B2 (ja) 不揮発性記憶装置および不揮発性メモリコントローラ
JP2008181203A (ja) 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法
US20120173791A1 (en) Control method and allocation structure for flash memory device
JP4332108B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120713

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120713

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130828

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130910

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131105

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140210

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140311

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140610

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140618

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140901

R151 Written notification of patent or utility model registration

Ref document number: 5617873

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

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