JP5130646B2 - 記憶装置 - Google Patents
記憶装置 Download PDFInfo
- Publication number
- JP5130646B2 JP5130646B2 JP2006115779A JP2006115779A JP5130646B2 JP 5130646 B2 JP5130646 B2 JP 5130646B2 JP 2006115779 A JP2006115779 A JP 2006115779A JP 2006115779 A JP2006115779 A JP 2006115779A JP 5130646 B2 JP5130646 B2 JP 5130646B2
- Authority
- JP
- Japan
- Prior art keywords
- address
- page
- data
- block
- physical
- 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
Links
- 230000015654 memory Effects 0.000 claims description 312
- 238000006243 chemical reaction Methods 0.000 claims description 153
- 238000012546 transfer Methods 0.000 claims description 35
- 230000007547 defect Effects 0.000 claims description 30
- 238000013519 translation Methods 0.000 claims description 26
- 230000002950 deficient Effects 0.000 claims description 21
- 238000011084 recovery Methods 0.000 claims description 21
- 230000006870 function Effects 0.000 claims description 6
- 238000000034 method Methods 0.000 description 43
- 238000010586 diagram Methods 0.000 description 26
- 238000007726 management method Methods 0.000 description 25
- 238000012545 processing Methods 0.000 description 20
- 230000008569 process Effects 0.000 description 11
- 230000006866 deterioration Effects 0.000 description 5
- 101150101057 PBA1 gene Proteins 0.000 description 4
- 238000003491 array Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 101000885476 Homo sapiens DDB1- and CUL4-associated factor 13 Proteins 0.000 description 2
- 102100022736 Sperm-egg fusion protein LLCFC1 Human genes 0.000 description 2
- 230000002411 adverse Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- IUVCFHHAEHNCFT-INIZCTEOSA-N 2-[(1s)-1-[4-amino-3-(3-fluoro-4-propan-2-yloxyphenyl)pyrazolo[3,4-d]pyrimidin-1-yl]ethyl]-6-fluoro-3-(3-fluorophenyl)chromen-4-one Chemical compound C1=C(F)C(OC(C)C)=CC=C1C(C1=C(N)N=CN=C11)=NN1[C@@H](C)C1=C(C=2C=C(F)C=CC=2)C(=O)C2=CC(F)=CC=C2O1 IUVCFHHAEHNCFT-INIZCTEOSA-N 0.000 description 1
- 238000012935 Averaging Methods 0.000 description 1
- 101000918983 Homo sapiens Neutrophil defensin 1 Proteins 0.000 description 1
- 102100029494 Neutrophil defensin 1 Human genes 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000002784 hot electron Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000005641 tunneling Effects 0.000 description 1
- 230000037303 wrinkles Effects 0.000 description 1
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
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/102—External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
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と順になされることが必須の条件となる。
ISSCC2002予稿集のp106、セッション6.4
しかし上述の如く、フラッシュメモリにはアクセス単位を大きくしないと高速化できないという欠点がある。また、データの上書きができないので、書き換えには必ず消去が必要であり、その際の消去ブロックはさらに大きい。このようにアクセス単位に対して消去単位が数十倍大きいのは、消去時間が長く、かつ書き込み時に非選択セルにディスターブが生じるフラッシュメモリには一般的な仕様である。しかしこれによりその書き込み効率は著しく低下する。たとえば、小さな領域を更新しようとすると、上述のように既存データのコピー操作が必要となり、その書き込み効率は著しく低下する。
その転送速度を、シリアル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符号化、復号化の変換が施される。
具体的な動作を以下に述べる。
ドレスが入力されると、制御回路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のアドレスである。
この物理アドレスをもとにフラッシュメモリ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 (12)
- 並列にアクセス可能な複数のメモリを含むフラッシュメモリ部と、
上記複数のメモリの2つ以上から並列にデータを取得し、一時記憶するページレジスタと、
上記フラッシュメモリ部と上記ページレジスタ間のデータ転送を、内部メモリに構築されるアドレス変換テーブルを用いて管理する制御部と、を有し、
上記フラッシュメモリ部の上記メモリは、
ブロック単位で消去が行われ、当該消去単位のブロックが、書き込み単位であるページを複数含み、
上記制御部は、
上記内部メモリ上にページ単位でアドレス変換テーブルを構築し、当該アドレス変換テーブルを用いて、上記ページレジスタに並列格納されるデータ単位で論理アドレスと物理アドレスとの対照を管理し、
ページアドレスを含む書き込みアドレスを受けると、ページアドレスに基づいて上記内部メモリにアクセスし、上記アドレス変換テーブルから論理ページアドレスに対応する物理ページアドレスを取得した物理ページアドレスに基づき上記フラッシュメモリ部の各メモリの当該物理ページアドレスに格納されたページデータを読み出して上記ページレジスタに格納し、書き込みアドレスに相当するアドレスのデータを外部から入力されたデータに当該ページレジスタ上で更新し、
更新後のページデータを上記フラッシュメモリ部のメモリの空き領域に追記の形で書換えを行い、かつ、上記アドレス変換テーブルの論理ページアドレスに対応する物理ページアドレスは上記空き領域のアドレスに更新する
記憶装置。 - 上記ページレジスタに格納されるデータ単位は複数のセクタを含み、当該記憶装置はセクタ単位でのアクセスが可能であり、
上記制御部は、
ページアドレスおよびセクタアドレスを含む書き込みアドレスを受けると、ページアドレスに基づいて上記内部メモリにアクセスし、上記アドレス変換テーブルから論理ページアドレスに対応する物理ページアドレスを取得し、取得した物理ページアドレスに基づき上記フラッシュメモリ部をアクセスし、当該物理ページアドレスに格納されたページデータを読み出して上記ページレジスタに格納し、
上記セクタアドレスに相当するセクタを選択して、外部から入力されたデータに当該ページレジスタ上で更新し、
更新後のページデータを上記フラッシュメモリ部のメモリの空き領域に追記の形で書換えを行い、かつ、上記アドレス変換テーブルの論理ページアドレスに対応する物理ページアドレスは上記空き領域のアドレスに更新する
請求項1記載の記憶装置。 - 上記フラッシュメモリ部のメモリは、同一ブロック内にページデータ書き込み順序について下位アドレスから順に書き込むように規定されており、
上記制御部は、
上記ページデータを上記フラッシュメモリ部のメモリに書き込む度に当該ページデータの予備領域を形成し、当該予備領域にはデータの論理アドレスと、フラッシュメモリ部のメモリ上における同データの更新履歴を示す情報を記載し、
上記フラッシュメモリ部のメモリを上位アドレスからスキャンして、上記予備領域の論理アドレスと更新履歴をもとに、物理アドレスと論理アドレスとの対照を確認して、アドレス変換テーブルを再構築する機能を有する
請求項1または2記載の記憶装置。 - 上記更新履歴は、データの上記フラッシュメモリ部のメモリへの書き込み時のタイムスタンプを含む
請求項3記載の記憶装置。 - 上記更新履歴は、データの上記フラッシュメモリ部上における更新回数を含む
請求項3記載の記憶装置。 - カウンタを有し、
メディア全域または複数データを含む特定領域に対して上記追記が実施されるごとにカウンタ値が更新され、
上記制御部は、
当該カウンタ値または当該カウンタ値と一意的に対応する値を、上記データの予備領域にデータと同時に書き込み、
上記アドレス変換テーブルの再構築時には、上記更新履歴を参照に最も新しい論理アドレスと物理アドレスの対応をテーブルに反映させる
請求項4記載の記憶装置。 - 制御部は、
上記内部メモリ上に、アドレス変換テーブルとともに予備テーブルを含み、
上記アドレス変換テーブルの再構築においては、
上記フラッシュメモリ部のメモリの物理アドレスをスキャンしてページデータを読み出し、論理アドレスを取得するごとに、論理アドレスと物理アドレスの対応をアドレス変換テーブルに反映し、
上記フラッシュメモリ部のメモリに対してさらに順次スキャンを続け、上記アドレス変換テーブルの物理アドレスフィールドに書き込まれる物理アドレスの重複が検出されると、上記予備テーブル上に記憶領域を確保し、物理アドレスフィールドの値を上記予備テーブルにおける上記記憶領域のインデックスに書き換え、
物理アドレスが重複した論理アドレスに対して一通り記憶領域が確保されると、再度上記フラッシュメモリ部のメモリの物理アドレスを最初からスキャンして再度ページデータを読み出し、同じ論理アドレスを取得するとこれに対応する物理アドレスフィールドの上記予備テーブル上の記憶領域へのインデックスを参照して、記憶領域に物理アドレスと、履歴データを書き込み、
さらに順次スキャンを続け、ページデータを読み出して、同じ論理アドレスが取得されと、上記記憶領域へのインデックスを取得し、当該記憶領域に記載されている履歴データを自らの履歴データと比較して、自らの履歴の方が新しければ、物理アドレスと履歴データを書き換え、
二度目のスキャンが終了すれば、上記予備テーブルには最新の物理アドレスが格納されることになり、その後、上記アドレス変換テーブルを上位からスキャンして、物理アドレスのフィールドに上記予備テーブルへのインデックスがあれば、その値をインデックス先に格納された物理アドレスに入れ替える
請求項3から6のいずれか一に記載の記憶装置。 - 上記制御部は、
第1の内部メモリに構築される上記ページデータ用の第1のアドレス変換テーブルに加えて、第2の内部メモリに消去ブロック単位の第2のアドレス変換テーブルを有し、
ページアドレスを含む書き込みアドレスを受けると、ページアドレスに基づいて上記内部メモリにアクセスし、上記第1のアドレス変換テーブルから論理ページアドレスに対応する物理ページアドレスを取得し、
当該取得した物理ページアドレスの一部は消去ブロックに対応するアドレスであって、当該消去ブロックに対応するアドレスを上記第2のアドレス変換テーブルによって再度変換して物理ブロックアドレスを取得し、
上記物理ページアドレスと上記物理ブロックアドレスを合成した物理ページアドレスに基づき上記フラッシュメモリ部の当該物理ページアドレスに格納されたページデータを読み出して上記ページレジスタに格納し、書き込みアドレスに相当するアドレスのデータを外部から入力されたデータに当該ページレジスタ上で更新し、
上記第2のアドレス変換テーブルの論理アドレスに対応する物理アドレスを参照して更新後のページデータを上記フラッシュメモリ部のメモリの当該ブロック内の空き領域に追記の形で書換えを行い、かつ、上記アドレス変換テーブルの論理ページアドレスに対応する物理ページアドレスは上記空き領域のアドレスに更新する
請求項1から7のいずれか一に記載の記憶装置。 - 上記制御部は、
第1の内部メモリに構築される上記ページデータ用の第1のアドレス変換テーブルに加えて、第2の内部メモリに消去ブロック単位の各物理ブロックアドレスにおける欠陥状態とブロックの使用状態を示す第2のテーブルと、直前に書き込みを実施したページアドレスを示すポインタ値を保持するレジスタと、をさらに有し、
上記フラッシュメモリ部のメモリに書き込みを行うときには、上記第2のテーブルと上記レジスタのポインタ値から書き込み先の物理ページアドレスを決定し、この際欠陥情報の検出された欠陥ブロックおよび使用済みブロックはスキップし、欠陥ブロック内のページへは書き込みを実施せず、
ブロックアドレスを変えながら次の書き込み先を探し、欠陥ブロックおよび使用済みブロックでないブロックに対して更新後のデータを書き込む
請求項1から7のいずれか一に記載の記憶装置。 - 上記制御部は、
第1の内部メモリに構築される上記ページデータ用の第1のアドレス変換テーブルに加えて、第2の内部メモリに消去ブロック単位の第2のアドレス変換テーブルを有し、
データが書き込まれた後、更新によって無効化された領域が有効なページデータと共存している消去ブロックについて、有効ページデータを残しつつ無効化領域を空き領域に回復させる機能を有し、
当該回復に際し、消去済の空き領域である予備ブロックを用い、無効化された領域は非コピー対象として有効なページデータを予備ブロック内の空き領域に順番にコピーし、さらに、ページデータの予備領域に記載された各ページの論理アドレスと、新規にコピーされた領域の物理アドレスとの照合結果を一時保持し、
ブロックアドレスの第2のアドレス変換テーブルを更新し、元の消去ブロックを予備ブロックと入れ替え、消去ブロックを予備ブロックとして消去し、さらに上記一時保持した値を元に、上記第1のアドレス変換テーブルを更新する
請求項3から8のいずれか一に記載の記憶装置。 - 並列にアクセス可能な複数のメモリを含むフラッシュメモリ部と、
上記複数のメモリの2つ以上から並列にデータを取得し、一時記憶するページレジスタと、
上記フラッシュメモリ部と上記ページレジスタ間のデータ転送を、内部メモリに構築されるアドレス変換テーブルを用いて管理する制御部と、を有し、
上記フラッシュメモリ部の上記メモリは、
ブロック単位で消去が行われ、当該消去単位のブロックが、書き込み単位であるページを複数含み、
上記制御部は、
書き込み要求があると、上記アドレス変換テーブルをアクセスして取得した物理ページアドレスに従って上記フラッシュメモリ部の各メモリの当該物理ページアドレスに格納されたページデータを読み出して、書き込みアドレスに相当するアドレスのデータを外部から入力されたデータに当該ページレジスタ上で更新し、
更新後のページデータを上記フラッシュメモリ部のメモリの空き領域に追記の形で書換えを行い、かつ、上記アドレス変換テーブルの論理ページアドレスに対応する物理ページアドレスは上記空き領域のアドレスに更新し、かつ、
更新データの追記するための空き領域を検索するに際し、検索対象としているブロックへのブロックポインタを設定し、書き込み要求があると、上記ブロックポインタを、ブロックの物理アドレスに従って循環させながら空き領域を検索して、循環書き込みを行う
記憶装置。 - 上記制御部は、
更新データの追記するための空き領域を管理するために、上記内部メモリ上に、各消去ブロックに格納された各ページの状態が空き領域であるか、有効領域であるか、無効化された無効領域であるかを示すページ状態管理テーブルを構築し、
かつ、検索対象としているブロックへのブロックポインタを設定し、書き込み要求があると、上記ページ状態管理テーブルをスキャンして空きページ領域を検索するに際し、上記ブロックポインタを、ブロックの物理アドレスに従って循環させながら空き領域を検索して、循環書き込みを行う
請求項11記載の記憶装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006115779A JP5130646B2 (ja) | 2005-06-06 | 2006-04-19 | 記憶装置 |
KR1020060049916A KR20060127760A (ko) | 2005-06-06 | 2006-06-02 | 기억장치 |
US11/446,367 US8285916B2 (en) | 2005-06-06 | 2006-06-05 | Storage device |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005165234 | 2005-06-06 | ||
JP2005165234 | 2005-06-06 | ||
JP2006115779A JP5130646B2 (ja) | 2005-06-06 | 2006-04-19 | 記憶装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012135809A Division JP5617873B2 (ja) | 2005-06-06 | 2012-06-15 | 記憶装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2007018499A JP2007018499A (ja) | 2007-01-25 |
JP5130646B2 true JP5130646B2 (ja) | 2013-01-30 |
Family
ID=37573203
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006115779A Expired - Fee Related JP5130646B2 (ja) | 2005-06-06 | 2006-04-19 | 記憶装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8285916B2 (ja) |
JP (1) | JP5130646B2 (ja) |
KR (1) | KR20060127760A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0742225Y2 (ja) | 1986-08-28 | 1995-09-27 | 株式会社三ツ葉電機製作所 | 車両用発電機のレクチフアイア構造 |
US10565124B2 (en) | 2018-03-16 | 2020-02-18 | Toshiba Memory Corporation | Memory system and method for controlling nonvolatile memory |
KR102233400B1 (ko) | 2017-05-29 | 2021-03-26 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US11263147B2 (en) | 2019-03-19 | 2022-03-01 | Kioxia Corporation | Memory system including logical-to-physical address translation table in a first cache and a compressed logical-to-physical address translation table in a second cache |
Families Citing this family (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7769944B2 (en) * | 2004-10-01 | 2010-08-03 | Supertalent Electronics, Inc. | Partial-write-collector algorithm for multi level cell (MLC) flash |
JP4956922B2 (ja) * | 2004-10-27 | 2012-06-20 | ソニー株式会社 | 記憶装置 |
KR100771521B1 (ko) * | 2006-10-30 | 2007-10-30 | 삼성전자주식회사 | 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법 |
KR100881669B1 (ko) * | 2006-12-18 | 2009-02-06 | 삼성전자주식회사 | 비휘발성 데이터 저장장치의 정적 데이터 영역 검출 방법,마모도 평준화 방법 및 데이터 유닛 병합 방법과 그 장치 |
JP4967680B2 (ja) * | 2007-01-23 | 2012-07-04 | ソニー株式会社 | 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 |
US7804718B2 (en) * | 2007-03-07 | 2010-09-28 | Mosaid Technologies Incorporated | Partial block erase architecture for flash memory |
JP2008300020A (ja) * | 2007-06-04 | 2008-12-11 | Toshiba Corp | 再生装置 |
US8429352B2 (en) | 2007-06-08 | 2013-04-23 | Sandisk Technologies Inc. | Method and system for memory block flushing |
JP2009015978A (ja) * | 2007-07-05 | 2009-01-22 | Toshiba Corp | 半導体記憶装置及びメモリシステム |
TWI404076B (zh) * | 2008-01-07 | 2013-08-01 | Powerchip Technology Corp | 記憶體裝置以及資料讀取方法 |
US7813212B2 (en) | 2008-01-17 | 2010-10-12 | Mosaid Technologies Incorporated | Nonvolatile memory having non-power of two memory capacity |
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 |
CN101419838B (zh) * | 2008-09-12 | 2011-01-19 | 中兴通讯股份有限公司 | 一种提高flash使用寿命的方法 |
JP2010086009A (ja) * | 2008-09-29 | 2010-04-15 | Hitachi Ltd | 記憶装置およびメモリ制御方法 |
US8725927B2 (en) * | 2008-10-15 | 2014-05-13 | Micron Technology, Inc. | Hot memory block table in a solid state storage device |
JP4551958B2 (ja) * | 2008-12-22 | 2010-09-29 | 株式会社東芝 | 半導体記憶装置および半導体記憶装置の制御方法 |
JP2010152517A (ja) * | 2008-12-24 | 2010-07-08 | Toshiba Corp | 不揮発性半導体メモリドライブ装置および不揮発性半導体メモリドライブ装置のアドレス管理方法 |
KR101005120B1 (ko) * | 2009-02-04 | 2011-01-04 | 주식회사 하이닉스반도체 | 불휘발성 메모리 소자의 프로그램 방법 |
KR20100091544A (ko) * | 2009-02-10 | 2010-08-19 | 삼성전자주식회사 | 메모리 시스템 및 그 마모도 관리 방법 |
KR101516580B1 (ko) | 2009-04-22 | 2015-05-11 | 삼성전자주식회사 | 컨트롤러, 이를 포함하는 데이터 저장 장치 및 데이터 저장 시스템, 및 그 방법 |
KR101594029B1 (ko) | 2009-07-06 | 2016-02-16 | 삼성전자주식회사 | 데이터 조작 방법 및 그 방법을 이용하는 시스템 장치 |
KR101638061B1 (ko) | 2009-10-27 | 2016-07-08 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그것의 플래시 조각 모음 방법 |
CN101706788B (zh) * | 2009-11-25 | 2012-11-14 | 惠州Tcl移动通信有限公司 | 一种嵌入式文件系统的跨区访问方法 |
US8473669B2 (en) * | 2009-12-07 | 2013-06-25 | Sandisk Technologies Inc. | Method and system for concurrent background and foreground operations in a non-volatile memory array |
US8223525B2 (en) * | 2009-12-15 | 2012-07-17 | Sandisk 3D Llc | Page register outside array and sense amplifier interface |
US8452911B2 (en) | 2010-09-30 | 2013-05-28 | Sandisk Technologies Inc. | Synchronized maintenance operations in a multi-bank storage system |
US9007836B2 (en) * | 2011-01-13 | 2015-04-14 | Kabushiki Kaisha Toshiba | Non-volatile semiconductor memory device |
JP5377526B2 (ja) | 2011-01-13 | 2013-12-25 | 株式会社東芝 | 不揮発性半導体記憶装置 |
US9571547B2 (en) * | 2011-03-14 | 2017-02-14 | Canon Kabushiki Kaisha | Method and device for generating media fragment requests for requesting fragments of an encoded media stream |
CN103797492B (zh) * | 2011-07-27 | 2016-09-21 | 希捷科技有限公司 | 用于安全存储劫持保护的方法和装置 |
US8806111B2 (en) * | 2011-12-20 | 2014-08-12 | Fusion-Io, Inc. | Apparatus, system, and method for backing data of a non-volatile storage device using a backing store |
US8762627B2 (en) | 2011-12-21 | 2014-06-24 | Sandisk Technologies Inc. | Memory logical defragmentation during garbage collection |
JP5674634B2 (ja) | 2011-12-28 | 2015-02-25 | 株式会社東芝 | コントローラ、記憶装置およびプログラム |
US9734911B2 (en) | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for asynchronous die operations in a non-volatile memory |
US9336133B2 (en) | 2012-12-31 | 2016-05-10 | Sandisk Technologies Inc. | Method and system for managing program cycles including maintenance programming operations in a multi-layer memory |
US9734050B2 (en) | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for managing background operations in a multi-layer memory |
US9223693B2 (en) | 2012-12-31 | 2015-12-29 | Sandisk Technologies Inc. | Memory system having an unequal number of memory die on different control channels |
US8873284B2 (en) | 2012-12-31 | 2014-10-28 | Sandisk Technologies Inc. | Method and system for program scheduling in a multi-layer memory |
US9465731B2 (en) | 2012-12-31 | 2016-10-11 | Sandisk Technologies Llc | Multi-layer non-volatile memory system having multiple partitions in a layer |
US9348746B2 (en) | 2012-12-31 | 2016-05-24 | Sandisk Technologies | Method and system for managing block reclaim operations in a multi-layer memory |
KR101532840B1 (ko) * | 2013-10-17 | 2015-06-30 | 서울대학교산학협력단 | 거친 쓰기 및 미세 쓰기를 이용하여 데이터 프로그램을 수행하는 방법 및 장치 |
CN103645990B (zh) * | 2013-12-24 | 2016-05-25 | 飞天诚信科技股份有限公司 | 一种基于大页面Flash的数据更新和读取方法 |
US9582205B2 (en) * | 2014-04-17 | 2017-02-28 | Sandisk Technologies Llc | Protection scheme with dual programming of a memory system |
JP5950286B2 (ja) | 2014-05-29 | 2016-07-13 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | アドレス変換テーブルを書き込む装置及び方法 |
US10120753B2 (en) * | 2015-05-26 | 2018-11-06 | Micron Technology, Inc. | Methods and apparatuses for error correction |
US10133490B2 (en) | 2015-10-30 | 2018-11-20 | Sandisk Technologies Llc | System and method for managing extended maintenance scheduling in a non-volatile memory |
US10042553B2 (en) | 2015-10-30 | 2018-08-07 | Sandisk Technologies Llc | Method and system for programming a multi-layer non-volatile memory having a single fold data path |
US9778855B2 (en) | 2015-10-30 | 2017-10-03 | Sandisk Technologies Llc | System and method for precision interleaving of data writes in a non-volatile memory |
US10120613B2 (en) | 2015-10-30 | 2018-11-06 | Sandisk Technologies Llc | System and method for rescheduling host and maintenance operations in a non-volatile memory |
US9841918B2 (en) | 2015-12-02 | 2017-12-12 | Samsung Electronics Co., Ltd. | Flash memory device including deduplication, and related methods |
US10031803B2 (en) | 2015-12-14 | 2018-07-24 | International Business Machines Corporation | Distributed coding for multiple dimensional parities |
US10592414B2 (en) * | 2017-07-14 | 2020-03-17 | International Business Machines Corporation | Filtering of redundantly scheduled write passes |
FR3072476A1 (fr) * | 2017-10-13 | 2019-04-19 | Proton World International N.V. | Unite logique de memoire pour memoire flash |
US10991433B2 (en) * | 2019-09-03 | 2021-04-27 | Silicon Storage Technology, Inc. | Method of improving read current stability in analog non-volatile memory by limiting time gap between erase and program |
JP2021068129A (ja) * | 2019-10-21 | 2021-04-30 | Tdk株式会社 | メモリコントローラ及びフラッシュメモリシステム |
CN111897766B (zh) * | 2020-06-19 | 2023-05-30 | 西安微电子技术研究所 | 一种星载固态存储器及边记边擦的数据处理方法 |
JP7013546B2 (ja) * | 2020-10-23 | 2022-01-31 | キオクシア株式会社 | メモリシステム |
KR20220142192A (ko) * | 2021-04-14 | 2022-10-21 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3485938B2 (ja) * | 1992-03-31 | 2004-01-13 | 株式会社東芝 | 不揮発性半導体メモリ装置 |
EP0591695B1 (en) * | 1992-09-18 | 1998-02-11 | Hitachi, Ltd. | Processor system using synchronous dynamic memory |
JP3539752B2 (ja) * | 1994-03-02 | 2004-07-07 | 沖電気工業株式会社 | 半導体記憶装置とメモリ制御方法 |
JPH0869404A (ja) * | 1994-08-29 | 1996-03-12 | Fujitsu Ltd | データのバックアップ方法及びそれを利用したデータ処理装置 |
JPH0877066A (ja) * | 1994-08-31 | 1996-03-22 | Tdk Corp | フラッシュメモリコントローラ |
US6081878A (en) * | 1997-03-31 | 2000-06-27 | Lexar Media, Inc. | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices |
US6105113A (en) * | 1997-08-21 | 2000-08-15 | Silicon Graphics, Inc. | System and method for maintaining translation look-aside buffer (TLB) consistency |
JP3702080B2 (ja) * | 1997-11-28 | 2005-10-05 | 株式会社東芝 | メモリ管理装置及び情報処理装置 |
US6763424B2 (en) * | 2001-01-19 | 2004-07-13 | Sandisk Corporation | Partial block data programming and reading operations in a non-volatile memory |
US6691205B2 (en) * | 2001-03-05 | 2004-02-10 | M-Systems Flash Disk Pioneers Ltd. | Method for using RAM buffers with simultaneous accesses in flash based storage systems |
JP3957985B2 (ja) | 2001-03-06 | 2007-08-15 | 株式会社東芝 | 不揮発性半導体記憶装置 |
JP2003216507A (ja) * | 2002-01-22 | 2003-07-31 | Sharp Corp | 記憶容量処理システム |
WO2004021191A1 (ja) * | 2002-08-29 | 2004-03-11 | Matsushita Electric Industrial Co., Ltd. | 半導体メモリ装置、及び、フラッシュメモリへのデータ書き込み方法 |
US20040225881A1 (en) * | 2002-12-02 | 2004-11-11 | Walmsley Simon Robert | Variant keys |
JP4242245B2 (ja) * | 2003-10-06 | 2009-03-25 | 株式会社ワークビット | フラッシュrom制御装置 |
US20050120191A1 (en) * | 2003-12-02 | 2005-06-02 | Intel Corporation (A Delaware Corporation) | Checkpoint-based register reclamation |
JP4938328B2 (ja) * | 2006-03-28 | 2012-05-23 | 株式会社日立製作所 | 記憶システム及びその電源制御方法並びにストレージ装置 |
-
2006
- 2006-04-19 JP JP2006115779A patent/JP5130646B2/ja not_active Expired - Fee Related
- 2006-06-02 KR KR1020060049916A patent/KR20060127760A/ko not_active Withdrawn
- 2006-06-05 US US11/446,367 patent/US8285916B2/en not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0742225Y2 (ja) | 1986-08-28 | 1995-09-27 | 株式会社三ツ葉電機製作所 | 車両用発電機のレクチフアイア構造 |
KR102233400B1 (ko) | 2017-05-29 | 2021-03-26 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US10997039B2 (en) | 2017-05-29 | 2021-05-04 | SK Hynix Inc. | Data storage device and operating method thereof |
US10565124B2 (en) | 2018-03-16 | 2020-02-18 | Toshiba Memory Corporation | Memory system and method for controlling nonvolatile memory |
US11263147B2 (en) | 2019-03-19 | 2022-03-01 | Kioxia Corporation | Memory system including logical-to-physical address translation table in a first cache and a compressed logical-to-physical address translation table in a second cache |
Also Published As
Publication number | Publication date |
---|---|
KR20060127760A (ko) | 2006-12-13 |
JP2007018499A (ja) | 2007-01-25 |
US8285916B2 (en) | 2012-10-09 |
US20060285397A1 (en) | 2006-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5130646B2 (ja) | 記憶装置 | |
KR100914263B1 (ko) | 스크래치 패드 블록 | |
JP5162846B2 (ja) | 記憶装置、コンピュータシステム、および記憶システム | |
JP4399008B2 (ja) | 不揮発性メモリおよびマルチストリーム更新追跡を伴う方法 | |
JP4431175B2 (ja) | 不揮発性メモリおよびマルチストリーム更新を伴う方法 | |
JP4898457B2 (ja) | 不揮発性メモリおよび制御データ管理を伴う方法 | |
TWI394044B (zh) | 記錄來自一主機之資料之非揮發性記憶體及方法 | |
JP4956922B2 (ja) | 記憶装置 | |
US8700840B2 (en) | Nonvolatile memory with write cache having flush/eviction methods | |
US8094500B2 (en) | Non-volatile memory and method with write cache partitioning | |
JP2008146255A (ja) | 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法 | |
KR101468432B1 (ko) | 제어된 스크럽 데이터 판독에 의해 트리거되는 플래시 메모리 리프레시 기술 | |
JP4961693B2 (ja) | コンピュータシステム | |
KR20060120231A (ko) | 다중 블록 유닛들로의 블록의 적응형 결정론적 그룹화 | |
JP2008146253A (ja) | 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法 | |
KR20110118782A (ko) | 비휘발성 메모리 및 기록 캐시를 분할하는 방법 | |
JP4910360B2 (ja) | 記憶装置、コンピュータシステム、およびデータ書き込み方法 | |
JP2008146254A (ja) | 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法 | |
JP5617873B2 (ja) | 記憶装置 | |
JP2008181203A (ja) | 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 | |
US8713242B2 (en) | Control method and allocation structure for flash memory device | |
CN114185816B (zh) | 存储器系统及其操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090225 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20111017 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111025 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111226 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120417 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120615 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120731 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120921 |
|
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: 20121009 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20121022 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151116 Year of fee payment: 3 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 5130646 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: 20151116 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 |