JP5617873B2 - 記憶装置 - Google Patents
記憶装置 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
Description
その代表例として、NAND型フラッシュメモリが挙げられる。
図1のNAND型フラッシュメモリは、ビット線BL1〜BLnに接続された複数のメモリユニット1−1〜1−nがアレイ状に(縦横)に配列されている。
たとえば、選択用トランジスタ2のゲートが選択ゲート線SL1に接続され、選択用トランジスタ3のゲートが選択ゲート線SL2に接続されている。また、各メモリセルN0〜N15のゲートがワード線WL0〜WL15に接続されている。
特許文献1等にはその一つとしてローカルセルフブースと(Local Self−Boost)と呼ばれる手法を用いた書き込み手順が記載されている。
図1のNAND型フラッシュメモリにおいて、そのような書き込みの例を以下に説明する。
このような書き込み手順を用いると、0Vのワード線WL0,WL2にはさまれ、かつ非選択ビット線に繋がるノードは他のノードから切り離され、ワード線WL1からのカップリングを受けて10V程度まで電位が上昇する。
一方、選択されたメモリセルN1については、隣接したセルトランジスタN0がディプレッション状態の時に限って、ビット線BL1に印加された0VがセルトランジスタN1のチャンネルに伝達され、書き込みが実施される。
すなわち、上のような書き込み手法を用いる場合、書き込みを実施するセルのビット線側の隣接セルは常に消去され、ディプレッション状態に成っている必要がある。そのため、ブロック全体を消去した後、書き込みはメモリセルN15、N14、N13、・・・、N0と順になされることが必須の条件となる。
しかし上述の如く、フラッシュメモリにはアクセス単位を大きくしないと高速化できないという欠点がある。また、データの上書きができないので、書き換えには必ず消去が必要であり、その際の消去ブロックはさらに大きい。このようにアクセス単位に対して消去単位が数十倍大きいのは、消去時間が長く、かつ書き込み時に非選択セルにディスターブが生じるフラッシュメモリには一般的な仕様である。しかしこれによりその書き込み効率は著しく低下する。たとえば、小さな領域を更新しようとすると、上述のように既存データのコピー操作が必要となり、その書き込み効率は著しく低下する。
その転送速度を、シリアルATA接続の高速ストレージで目標とされる160MB/sにまで高めようとした場合、マルチバンクやマルチチップの構成を取りながら、たとえば16個のメモリアレイを並列動作させる必要がある。
図2において、20は実ページ領域を、21は実消去ブロック領域を、22はメモリ領域を、23はバッファメモリを、25は消去済みブロックをそれぞれ示している。
さらに、通常のファイル記憶装置は、ATA等のインターフェース仕様に従って、たとえば512バイトのセクタ単位でランダムアクセスされる。
その場合、たとえばページP0とP1のみを書き換える要求が頻繁に発生する。
しかし、上述のような装置でそのようなアクセスを行うと、結局実消去ブロック領域21全体を消去しなければならない。かつその中の非選択領域に有効ファイルがあれば、それを消失から保護する必要がある。その典型的な対処例は図2に関連付けると次のようになる。
2.次にメモリ領域22内で、ページP0とP1に相当するデータを更新する。
3.次にフラッシュメモリ上のブロック領域21の消去を実行する。
4.最後に上記消去済の領域21に、更新後のメモリ領域22のブロックデータを全て書き戻す。
具体的には、1ページ分のデータの読み出しおよび書き込みにはそれぞれ200μsを要し、ブロックの消去には2msを要するので、30ms近くを必要とする。
この場合、仮想アドレス構成を用いて消去ブロック単位で論理アドレスと物理アドレスの対応を更新し、アクセス対象とされた論理アドレスに対応する物理ブロックは元の消去ブロック領域21からデータの移動先ブロック領域25に張り替えられる。
しかしこの場合も、有効データを消去ブロック領域21から移動先ブロック領域25に退避させる作業は必要である。またこの際、通常は元のブロック領域21を消去して、そちらを予備ブロックに変える。したがって、結局は従来とほぼ同様の読み出し、書き込み、消去が必要であり、大きなオーバーヘッドが生じることに変わりは無い。
このような事情から、フラッシュメモリを用いた現在の記憶装置は、特に書き込み時においては、ハードディスクをはるかに下回る転送性能しか得られていない。
一般のファイルシステムにおいては、セクタ間の書き込み順序に保証はなされない。したがって、消去ブロック途中から書き込みがなされることがしばしばあるが、その場合、ブロック内におけるそれより下位、すなわち前方のアドレス領域が空いていても、そこにデータは書き込めなくなる。その結果、後でそれらの領域に書き込み要求が出ると、書き換えと同様の処理が必要となり、前述のデータ退避や消去、書き込みを繰り返さざるを得なくなってしまう。
より具体的には、論理アドレスを物理アドレスに対応させるアドレス変換テーブルを用い、書き換えは対照データの物理アドレスを変更し、記憶メディアの空き領域に追記することで実施する。この手法の関連技術としてたとえば特許文献2には、アドレス変換テーブルを用いた追記型記憶システムにおける管理方法の詳細が記載されている。
ただし、これは単独チップを想定したものであり、大容量化に伴ってアドレス変換テーブルが巨大化してしまう問題がある。本発明の記憶装置はそれを解決する。さらに本発明の記憶装置は、近年の大容量に進化したフラッシュメモリに適用可能となるよう、以下のように機能する。
1.前述したページ書き込みの順序制約に従いつつ、追記型記憶システムを十分な信頼性で機能する。
2.大容量の不揮発性メモリは内部に欠陥を含むことが多く、その対策が要求される。特にフラッシュメモリでは、一つの欠陥が消去ブロック全体に悪影響を与えるので、書き込み単位と欠陥管理の単位が異なる場合が多い。本記憶装置は、このような欠陥管理を上記システムと両立させている。
3.追記型のデータ更新では、旧データの記憶領域はただちに消去されず、無効化される。フラッシュメモリにおいては、そのような無効化領域を空き領域に回復させる手段が必要であり、本記憶装置は、その回復処理を上述の制約のもとで適切に行う。
本発明によれば、ブロック単位の消去や、ブロック内のデータ書き込み順序の制約に伴う転送速度の悪化や書き込み劣化の発生を、大幅に低減することが可能である。
本発明によれば、フラッシュメモリを記憶メディアとして使用しつつ、実使用上常態的に高速な書き換えを実現することができる。その消去回数も減少させることができ、書き換え疲労を低減することで、信頼性の高い書き換えが可能である。
さらにそのような性能向上を得つつ、不良ブロックの置換等も機動的に実施でき、フラッシュメモリにおいて無効化された領域の回復も適切に実施でき、また、電源瞬断等でアドレス変換テーブルが破壊された場合でも、齟齬なく再構築することが可能である。
ページバッファ32は、アクセスされたページデータを内部データバス33を介して一時記憶するものであり、外部とのインターフェース回路31に接続されている。
転送制御回路34は、2つのチップのフラッシュメモリ35,36とページバッファ32間の転送を管理する。転送制御回路34は、RAM37を内蔵しており、内蔵されたRAM37には図4に示すようなアドレス変換テーブル38が構築されている。
この物理アドレスをもとにメモリチップであるNAND型フラッシュメモリ35,36が共にアクセスされ、各々からページアドレス”0x00B0”に格納されたページデータ39,40が読み出され、ページバッファ32に格納される。
インターフェース回路31はページバッファ32のページデータの中から、下位アドレス”0xC”に相当するセクタを選択し、外部に出力する。
更新後のページデータは、フラッシュメモリ35,36に書き戻されるが、その際各々の空き領域41,42に書き込まれる。
さらに、ページテーブルの論理アドレス”0x5500”に対応する物理アドレスは、空き領域41,42のアドレス”0x0280”に更新される。
このように更新されたデータは、フラッシュメモリ上の適当な空き領域に、追記の形で書き込まれる。ランダムなページが更新されても、論理アドレスから物理アドレスにリマッピングすることで、それらは消去済みブロック内の下位アドレスから順次連続に書き込んで行くことが可能である。
すなわち、フラッシュメモリの高並列化と、ページ単位のアドレス変換による追記型書き込みは、両者を組み合わせることで互いの弱点を補い合う。そして特にメモリセルの書き込み時間が律速する書き込み工程においては、並列度に比例して転送速度は向上する。
たとえば、二つのメモリチップは必ずしも全く同時に読み出しや書き込みを開始する必要なない。各メモリへの書き込み動作はページバッファからメモリチップへのデータ転送工程と、メモリチップ内での書き込み工程の二つの処理(作業)を含むが、たとえば16ビットのバスを両チップで共有すれば、転送は個々に行わざるを得ない。その場合、ページバッファから片側のメモリチップにデータを転送している間に、もう片側へメモリチップ内で書き込みをスタートしても良いし、両者への転送を順次行った後に、書き込みを同時スタートしても良い。
このように、各々のチップの動作タイミングをずらしながら両者を並列動作させる手法は一般的に見られるものであり、そのようなケースでも本発明は問題なく適用できる。
また、たとえば、1チップが2バンクにより構成され、異なるメモリアレイから同時に読み出されたデータ、または異なるメモリアレイに同時に書き込まれたデータが一つの実効ページを構成する場合でも、同様の効果を得ることができる。
アドレス変換テーブルが消失もしくは欠落した場合、メモリへのアクセス自体が全くできなくなり、全データが破壊されたのと同様の致命的自体に陥るので、その保護は極めて重要である。
ここで論理ページ”0x5500”が更新され、元のページデータ39bが更新されて、更新後データが空き領域41bに書き込まれたとする。この際、ページデータ39bの予備領域43bには既に論理ページアドレス”0x5500”が記載されており、空き領域41bの予備領域45bにも同じ論理アドレス”0x5500”が記載されることになる。
たとえば、更新時のタイムスタンプか、または論理アドレスに対応した累計更新回数、を記載しておく。
なお、累計更新回数に関しては、たとえば全論理アドレスにおける更新の累計、あるいは分割した論理アドレスごとの更新の累計を保持するカウンタをメモリ上に設けておき、各ページデータの書き込み時に対応するカウンタ値をインクリメントし、その結果を上記予備領域に記載すれば良い。
また、ブロック内のページ書き込み順序が規定されている場合には、同一ブロック内の各ページの新旧は一意的に決まるので、上記カウンタは書き込み先ブロックが変わった時のみインクリメントし、それを累計更新回数としても良い。
アドレス変換テーブルの再構築時には、その履歴を参照に最も新しい論理アドレスと物理アドレスの対応を、テーブルに反映させる。
フラッシュメモリ35bの物理アドレスをスキャンしてページデータを読み出し、論理アドレスを取得するごとに、論理アドレスと物理アドレスの対応をアドレス変換テーブル38bに反映する。前述の例に従えば、このとき、たとえばフラッシュメモリ35bの”0x00B0”のページを読み出すと、論理アドレス”0x5500”が取得されるので、まず”0x5500”の論理アドレスに対応する物理アドレスのフィールド47bに0x00B0”が記載される。
さらに順次スキャンを続け、”0x0280”のページを読み出すと、同じ論理アドレス”0x5500”が取得されるのが、既に”0x5500”に対応した物理アドレスフィールド47bには”0x00B0”が書き込まれている。このようにして物理アドレスの重複が検出されると、予備テーブル46b上に記憶領域48bが確保され、物理アドレスフィールド47bの値は予備テーブル46bにおける記憶領域48bのインデックスに書き換えられる。
さらに順次スキャンを続け、”0x0280”のページを読み出すと、同じ論理アドレス”0x5500”が取得され、同様に記憶領域48bへのインデックスが取得される。ここに記載されている履歴データを自らの履歴データと比較して、自らの履歴の方が新しければ、物理アドレスと履歴データを書き換える。
こうして二度目のスキャンが終了すれば、予備テーブル46bには最新の物理アドレスが格納されることになる。その後アドレス変換テーブル38bを上からスキャンして、物理アドレスのフィールドに予備テーブル46bへのインデックスがあれば、その値をインデックス先に格納された物理アドレスに入れ替える。
以上の過程を経て、完全なアドレス変換テーブルが再構築される。このようなやり方は、物理アドレスに重複が生じた論理ページアドレスに対してのみ履歴データ格納用のメモリが確保されるので、アドレス変換テーブルに関連したRAMの使用量を減らすことができる。
したがって、欠陥は通常消去ブロックの単位で管理され、欠陥セルを含む消去ブロックは予備ブロックに置換される。これらの置換はエラー訂正時に欠陥を検出し、出荷後動的になされることもある。また、同時にこのようなブロック管理は消去回数の平均化等にも使用され、書き換え回数の多いブロックと少ないブロックでデータを入れ替える等の対策がとられることもある。
読み出しの際、たとえば外部から”0x5500C”のセクタアドレスが入力されると、転送制御回路34cは上位のページアドレス”0x5500”を受けて内蔵RAM37cにアクセスし、アドレス変換テーブル38cから上記論理ページアドレスLPAに対応する物理ページアドレスPPA”0x0180”を取得する。
この物理アドレスのうち、上位の”0x01”は消去ブロックに対応するアドレスであり、この値はアドレス変換テーブル51cによって再度変換され、物理ブロックアドレスPBA”0x70”が取得される。
実際のフラッシュメモリ35cからは、アドレス変換テーブル38cから得られた下位の物理ページアドレス”0x80”と、アドレス変換テーブル51cから得られた物理ブロックアドレス”0x70”が合成され、メモリ上の物理アドレス”0x7080”に相当するページ領域39cがアクセスされ、ページバッファ32cに格納される。インターフェース回路31cはその中から、下位アドレス”0xC”に相当するセクタを選択し、外部に出力する。
たとえば、論理アドレスLBA”0x40”において、対応する物理アドレスPBA”0x71”のブロックに適当な空き領域41cがあり、そのメモリ上のページアドレスは”0x71F0”であったとする。このときページデータは空き領域41cに書き込まれ、さらにページテーブルの論理アドレスLPA”0x5500”に対応する物理アドレス(PPA)は”0x40F0”に更新される。
読み出しの際、たとえば外部から”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”に相当するセクタを選択し、外部に出力する。
たとえば、論理アドレスLBA”0x40”に対応して、フラッシュメモリ35d上の物理アドレスPBA0”0x71”のブロックに空き領域41dが、フラッシュメモリ36d上の物理アドレスPBA1”0x7C”のブロックに空き領域42dがあり、そのメモリ上のページアドレスはそれぞれ”0x71F0”および”0x7CF0”であったとする。このときページデータは空き領域41d,42dに書き込まれ、さらにページテーブル38dの論理アドレスLPA”0x5500”に対応する物理アドレスPPAは”0x40F0”に更新される。
このように、本実施形態における仮想アドレスの階層化は、追記型の記憶装置において、チップごとに独立した複雑な欠陥管理も可能にする。
これに対して使用RAM容量を圧縮したアドレス変換の例を示す。ハードウエア構成は図8と同様とする。
本例では、各論理ブロックアドレスLBAに対しては、予め同じ値の物理ブロックアドレス”0x00”〜”0x6F”が暗黙に割り振られている。一方、物理ブロックアドレス”0x70〜0x7F”の領域はスペアブロックに充てられる。
ブロックテーブル”51g”においては1ビットの欠陥フラグDEFと、スペアテーブルのインデックスを格納するための5ビットのフィールドSIDが設けられているのみである。一方スペアテーブル52gには、各スペアインデックスSIDに対応して、フラッシュチップごとの欠陥フラグDEF0、DEF1とスペアオフセットSOF0、SOF1が格納されている。
この物理アドレスのうち、上位の”0x01”は消去ブロックに対応する論理アドレスである。テーブル51gにおいて、ブロックアドレスLBA”0x01”には欠陥フラグが立っており、スペアインデックスフィールドSIDには”10”が記録されている。そこでスペアテーブル52gを参照すれば、チップ35dには欠陥がなく、チップ36dではスペアオフセットSOF1”0x4”に対応するスペアブロックに置換すべきことが解る。
したがって、変換後の物理ブロックアドレスはチップ35dにおいては論理アドレスと同じ”0x01”、チップ36dに対してはスペア群から”0x74”と判定される。それらはページの下位アドレス”80”と合成されて、各々のフラッシュメモリにおける対応ページ”0x0180”および”0x7480”がアクセスされる。
テーブル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容量を圧縮できる。
さらに,前回書き込んだページアドレスを示す書き込みポインタがレジスタ53hに格納されている。通常書き込みは、ポインタをインクリメントする形で実施される。すなわち,同一ブロック内では、ページアドレス”0x00”から”0xFF”に向けて順番に書き込まれる。
2.次のアドレス”0x02”のブロックはDEFが”1”であり、欠陥ブロックである。したがってスキップされる。
3.次のアドレス”0x03”のブロックはUSDが”1”であり、使用済みブロックである。従ってスキップされる。
4.次のアドレス”0x04”のブロックは消去済みの良品ブロックである。したがって
レジスタ53hのポインタ値はその先頭ページアドレス”0x0400”に設定され、更新後データはそこに書き込まれる。
5.アドレステーブル38hの論理ページアドレス”0x5500”に対応する物理アドレスフィールドが、”0x0400”に更新される。
したがって、アドレス変換テーブル38hにおける物理ページのアドレスフィールドには欠陥ブロック内のページは含まれる事は無く、ブロックアドレスを変換する必要が無い。
この際無効化された領域66,67,68はコピー対象とされず、上記有効なページデータのみが予備ブロック62に上詰でコピーされている。このような選択的コピー操作は、図2に示した一般的なコピー操作とは著しく異なり、ブロック内の各ページの相対位置の変化を伴っている。
・現在テーブル(51e)を用いてアクセスされている論理ブロックアドレス”0x01”。
・コピーデータの新規格納先である領域73(図14)の物理ページアドレス”0x04”。
・予備領域70(図14)に格納された論理ページアドレス”0x5500”。
本実施形態によれば、ブロック単位の消去や、ブロック内のデータ書き込み順序の制約に伴う転送速度の悪化や書き込み劣化の発生を、大幅に低減することが可能である。
さらにそのような性能向上を得つつ、不良ブロックの置換等も機動的に実施でき、フラッシュメモリにおいて無効化された領域の回復も適切に実施できる。
第5の実施形態に係る記憶装置70の構成は、基本的に第一の実施形態と同様である。但し制御回路装置74に内蔵されたRAM77には、アドレス変換テーブル78に加えて、ページ状態の管理テーブル86が構築されている。
ページバッファ72は、アクセスされたページ領域を一時記憶するバッファであり、外部とのインターフェース回路71に接続されている。
制御回路74)は、メモリチップであるフラッシュメモリ75,76とページバッファ72およびインターフェース回路71の間のデータのやりとりを管理するコントローラであ、処理ユニットである内蔵CPU85によって制御される。同じく内蔵されたRAM77には、CPU85を制御するためのプログラム領域やワークエリアが確保されるとともに、アドレス変換テーブル78、およびページ状態の管理テーブル86が構築されている。
この物理ページアドレスPA中、上位の”0x00”はメモリチップのフラッシュメモリ75,76内の消去ブロック83,84のアドレスである。下位”0xB0”は各消去ブロック内のページ領域79,80のアドレスである。
この物理アドレスPAをもとにメモリチップのフラッシュメモリ75,76が共にアクセスされ、各々からページアドレス”0x00B0”に格納されたページ領域79,80のデータが読み出され、ページバッファ72に格納される。インターフェース回路71はその中から、下位アドレス”0xC”に相当するセクタを選択し、外部に出力する。
このページ領域の物理ページアドレスは”0x0280”であり、すなわち消去ブロック”0x02”内の”0x80”のページに相当する。またこの処理の前まで、その領域はアドレス変換テーブル78のいずれの物理アドレスフィールドにも登録されていない、未使用の空きページであった。
更新後のデータがこの領域に追記の形で書き込まれるとともに、アドレス変換テーブル78の論理アドレス”0x5500”に対応する物理アドレスフィールドには、空き領域81,82の物理ページアドレス”0x0280”が登録される。
本テーブルは(BA:Block Address)で表現される各消去ブロックに格納された各々のページの状態を2ビットのフラグ列で記録している。”0”は空き領域であり、”1”は書き込みが行なわれた有効領域、”2”はデータが更新され、無効化された無効領域を示す。
フラッシュへの書き込み要求があれば、その上位ページからこのテーブルのフラグをスキャンして空きページ領域を検索する。ブロック全ての空き領域が使用されていると、ポインタをインクリメントし、次は”0x03”のブロックから空きページ領域を探す。
このようにしてポインタをブロックアドレスの先頭から末尾にかけて循環させていけば、フラッシュメモリ全域に対して均一な書き込みが実施できる。
一方、並列化の弱点である消去回数の増加や、書き換え疲労が加速はページ単位のアドレス変換を用いた追記型の書き込みで大幅に緩和される。
しかしそれらにはデータが書き込まれており、そのままでは空き領域として使用することもできない。上述のような書き換えを何度も繰り返すと、多くの無効ページ領域が発生する。それらは再度空き領域として使用できるよう、消去して回復させる必要がある。またその場合、消去ブロック83,84に残された有効データは退避させねばならない。
図18(A)〜(C)には、消去ブロック83,84内部の有効データを退避し、無効ページ領域を実質的に回復させる、具体的手順<1>、<2>、<3>を例示している。
図17の状態からさらに追記による書き換えが進行し、消去ブロック83,84には、一度データが書き込まれた後、更新によって無効化されたページ領域群94,96が、有効なページ領域群93,95,97と共存しているとする。ここで有効ページ領域のデータを残しつつ、無効化領域を空き領域に回復させる必要がある。
一方、ブロック91,92は現在追記用の空き領域として使用している消去ブロックであり、ページ領域102まで書き込みが成されている。
有効なページ領域群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に実質的に退避せしめられる。
消去ブロック83,84を消去する。これによってその内部は全て空き領域となり、後の追記に使用することが可能になる。これをもって無効領域94,96は実効的に回復される。
この場合、制御が容易になるばかりではなく、フラッシュメモリへの書き込みの均一化等、書き込み時の信頼性向上の為の各種工夫を回復処理にも適用することができ、記憶装置の総合的な信頼性を向上させることができる。
たとえば図16におけるページバッファ72は、制御回路74内部のRAM77上に構築しても良い。そのような場合にはインターフェース回路71、フラッシュメモリ75,76および制御回路74は共通の内部データバス73で接続された構成となる。
またはページバッファ72とフラッシュメモリ75,76との間にECCによるエラー訂正回路を設けて、ページバッファからフラッシュメモリへのページデータ書き込み時には符号化を実施してパリティビットを追加し、フラッシュメモリからページバッファへのページデータ読み出し時には復号化を行なっても良い。そのような装置構成の違いに関わらず、本発明を適用することは可能である。
または先に説明した第1〜第4の実施形態で述べたように、アドレス変換テーブル78,121に従ってページ単位のアドレス変換を実施した後、フラッシュメモリ内の欠陥ブロックをスキップするために、さらにブロックレベルでのアドレス変換を挿入しても良い。このような場合でも、前述した例と同様の制御で、本発明は問題なく適用することが可能である。
図20(A),(B)は、第6の実施形態に係る制御回路のアドレス変換テーブルおよびページ状態の管理テーブルの構成例を示す図である。
ページバッファ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が搭載されている。
なお本図面においては制御線の記載は省略されている。
これにより外部から入力された論理アドレスは、それを元にフラッシュメモリ115,116へのアクセスが成される場合、アドレス変換テーブル121と126により二重の変換を受ける。さらに入出力データにもECC符号化、復号化の変換が施される。
具体的な動作を以下に述べる。
この物理ページアドレスPA中、上位の”0x00”は消去ブロックのアドレスを示すが、さらに制御回路123に入力されると、この部分は論理ブロックアドレス(LBA:LOGICAL BLOCK ADDRESS)として扱われ、アドレス変換テーブル126から物理ブロックアドレス(PBA:PHISICAL BLOCK ADDRESS)”0x01”が取得される。これがメモリチップのフラッシュメモリ115,116内の消去ブロック127,128のアドレスである。
この物理アドレスをもとにフラッシュメモリ115,116が共にアクセスされ、各々からページアドレス”0x01B0”に格納されたページ領域1271,1281のデータが読み出され、さらにECC復号化が施されて、ページバッファ112に格納される。
更新後のページデータは、フラッシュメモリ115,116に書き戻されるが、その際読み出し元のページ領域1271,1281が書き換えられるのでは無く、アドレス変換テーブル121のいずれの物理アドレスフィールドにも登録されていない、未使用の空きページに書き込まれる。そのような空きページは制御回路114側で管理されており、たとえば図16のような管理テーブル86が使用されて、物理ページアドレス” 0x0280”が選択される。
このうち上位の”0x02”は制御回路123に入力されると、アドレス変換テーブル126から”0x03”に変換され、合成されたアドレス”0x0380”から、メモリチップのフラッシュメモリ115,116のページ領域129a,129bに、ページバッファ112の更新済みデータが書き込み転送される。この際データには、ECC符号化によるパリティビットが追加される。
その結果制御回路114は、第5の実施形態と全く同様のアルゴリズムで無効化領域の回復処理を実施することが可能となる。
しかし、このようなアドレス変換テーブルの管理と回復処理を、ホスト側の制御で実施することも可能である。そのようなコンピュータシステムを第7の実施形態として、図21に示す。
ページバッファ138はアクセスされたページ領域を一時記憶するバッファであり、ブリッジ回路134に内蔵されている。
ブリッジ回路134はCPU131から各種コマンドを受け取り、フラッシュメモリ135,136とCPU131またはシステムメモリ132との間のデータのやり取りを、ページバッファ138を用いて媒介する。
ブリッジ回路134が受け取るコマンドは、たとえばフラッシュメモリ135,136の所定のページへのアクセスの他、同フラッシュメモリの所定ブロックの消去、および所定ページの指定アドレスへのコピー、フラッシュメモリのリセット等である。
この物理ページアドレスPA中、上位の”0x00”はメモリチップのフラッシュメモリ135,136内の消去ブロック141,142のアドレスである。下位”0xB0”は各消去ブロック内のページ領域143,144のアドレスである。
この物理アドレスをもとに、ブリッジ回路134を介してメモリチップのフラッシュメモリ135,136が共にアクセスされ、各々からページアドレス”0x00B0”に格納されたページ領域143,144のデータが読み出され、ページバッファ138に格納される。
ブリッジ回路134はその中から、下位アドレス”0xC”に相当するセクタを選択し、CPU131またはシステムメモリ132に出力する。
更新後のページデータは、フラッシュメモリ135,136に書き戻されるが、その際各々の空き領域145,146に書き込まれる。このページ領域の物理ページアドレスは”0x0280”であり、即ち消去ブロック”0x02”内の”0x80”のページに相当する。またこの処理の前まで、その領域はアドレス変換テーブル140のいずれの物理アドレスフィールドにも登録されていない、未使用の空きページであった。
更新後のデータがこの領域に追記の形で書き込まれるとともに、アドレス変換テーブル140の論理アドレス”0x5500”に対応する物理アドレスフィールドには、空き領域145,146の物理ページアドレス”0x0280”が登録される。
しかしそれらにはデータが書き込まれており、そのままでは空き領域として使用することもできない。上述のような書き換えを何度も繰り返すと、多くの無効ページ領域が発生する。それらは再度空き領域として使用できるよう、消去して回復させる必要がある。またその場合、消去ブロック141,142に残された有効データは退避させねばならない。
たとえば上記回復作業における有効ページデータのコピーは、ホストCPU131からのコピーコマンドに応じて、ブリッジ回路134が所定のページをコピー元からページバッファ138に読み出してコピー先に書き込む。または所定のブロックを消去する。この際システムバス133は使用されないので、もし必要があれば、CPU131は上記コマンドを送信した後は別の処理(作業)を並行して実施することも可能である。
Claims (4)
- 並列にアクセス可能な複数のメモリを含むフラッシュメモリ部と、
上記複数のメモリの2つ以上から並列にデータを取得し、一時記憶するページレジスタと、
上記ページレジスタに並列格納されるデータ単位で論理アドレスと物理アドレスとの対照を管理するページデータ用の第1のアドレス変換テーブルと、
ブロックアドレス変換用の第2のアドレス変換テーブルと、を有し、
上記第1および第2のアドレス変換テーブルに従ってデータを格納し、当該第1および第2のアドレス変換テーブルの更新と記憶メディアへの追記によってデータ書き換えを行う機能と、
上記書き換えによって無効化された領域を含む第一の消去ブロックにおいて、残存しているページ単位の有効データを選択的に消去済の第二の消去ブロックに順次コピーし、しかる後に上記第一のブロックを消去することで、当該無効化領域に新規書き込みができるよう回復処理を行う機能と、を有し、
上記回復処理における上記第一の消去ブロックのページ単位の有効データの上記第二の消去ブロックへのコピーは、上記データ書き換えと同様、上記第1および第2のアドレス変換テーブルの更新と記憶メディアへの追記によって実施され、かつ、上記第二の消去ブロック内の空き領域に詰めて順番に実施され、
第一の消去ブロックにあるページ単位の有効データを、第二の消去ブロックにあるページ単位の有効データとともに、同一の第二の消去ブロックに集約し、異なる消去ブロック間の有効データを一つの消去ブロックに集約し、
当該消去ブロックの集約に際し、
上記第2のアドレス変換テーブルを更新し、元の消去ブロックである上記第一の消去ブロックを消去済みの予備ブロックとして消去し、上記コピーした有効ページデータのアドレスと新規にコピーされた領域のアドレスをもとに、上記第1のアドレス変換テーブルを更新する
記憶装置。 - 上記データ書き換え、及び回復処理のデータコピーにおけるデータの書き込み先の選択において、不良ブロックを回避するための統一的な手段を有する
請求項1記載の記憶装置。 - 上記不良ブロックの回避は、ブロックアドレス変換用のアドレス変換テーブルを使用して実施される
請求項2記載の記憶装置。 - 上記回復処理におけるデータのコピーは、書き換えと同様に、上記ページレジスタを介して実施される、
請求項1から3のいずれか一に記載の記憶装置。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108932107A (zh) * | 2017-05-29 | 2018-12-04 | 爱思开海力士有限公司 | 数据存储装置及其操作方法 |
Families Citing this family (2)
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)
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 | 不揮発性記憶装置及びその書込み方法 |
-
2012
- 2012-06-15 JP JP2012135809A patent/JP5617873B2/ja active Active
-
2014
- 2014-06-10 JP JP2014119420A patent/JP2014194817A/ja active Pending
Cited By (1)
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 |