[go: up one dir, main page]

JP5130646B2 - 記憶装置 - Google Patents

記憶装置 Download PDF

Info

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
Application number
JP2006115779A
Other languages
English (en)
Other versions
JP2007018499A (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 JP2006115779A priority Critical patent/JP5130646B2/ja
Priority to KR1020060049916A priority patent/KR20060127760A/ko
Priority to US11/446,367 priority patent/US8285916B2/en
Publication of JP2007018499A publication Critical patent/JP2007018499A/ja
Application granted granted Critical
Publication of JP5130646B2 publication Critical patent/JP5130646B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

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

本発明は、不揮発性メモリを含む記憶装置に関するものであり、特にフラッシュメモリを含む記憶装置におけるデータ転送の高速化に関するものである。
近年、デジタルスチルカメラやモバイルコンピュータ機器の記憶媒体として、フラッシュメモリが注目されている。
フラッシュメモリは、トンネリングやホットエレクトロン加速を用いて、電子にゲート絶縁膜を通過させ、それらを浮遊ゲートやトラップ層に注入し、セルトランジスタの閾値を変化させることでデータを記憶させる半導体メモリである。積層ゲート構造や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つ以上から並列にデータを取得し、一時記憶するページレジスタと、上記フラッシュメモリ部と上記ページレジスタ間のデータ転送を、内部メモリに構築されるアドレス変換テーブルを用いて管理する制御部と、を有し、上記フラッシュメモリ部の上記メモリは、ブロック単位で消去が行われ、当該消去単位のブロックが書き込み単位であるページを複数含み、上記制御部は、上記内部メモリ上にページ単位でアドレス変換テーブルを構築し、当該アドレス変換テーブルを用いて、上記ページレジスタに並列格納されるデータ単位で論理アドレスと物理アドレスとの対照を管理し、ページアドレスを含む書き込みアドレスを受けると、ページアドレスに基づいて上記内部メモリにアクセスし、上記アドレス変換テーブルから論理ページアドレスに対応する物理ページアドレスを取得した物理ページアドレスに基づき上記フラッシュメモリ部の各メモリの当該物理ページアドレスに格納されたページデータを読み出して上記ページレジスタに格納し、書き込みアドレスに相当するアドレスのデータを外部から入力されたデータに当該ページレジスタ上で更新し、更新後のページデータを上記フラッシュメモリ部のメモリの空き領域に追記の形で書換えを行い、かつ、上記アドレス変換テーブルの論理ページアドレスに対応する物理ページアドレスは上記空き領域のアドレスに更新する。
好適には、上記ページレジスタに格納されるデータ単位は複数のセクタを含み、当該記憶装置はセクタ単位でのアクセスが可能であり、上記制御部は、ページアドレスおよびセクタアドレスを含む書き込みアドレスを受けると、ページアドレスに基づいて上記内部メモリにアクセスし、上記アドレス変換テーブルから論理ページアドレスに対応する物理ページアドレスを取得し、取得した物理ページアドレスに基づき上記フラッシュメモリ部をアクセスし、当該物理ページアドレスに格納されたページデータを読み出して上記ページレジスタに格納し、上記セクタアドレスに相当するセクタを選択して、外部から入力されたデータに当該ページレジスタ上で更新し、更新後のページデータを上記フラッシュメモリ部のメモリの空き領域に追記の形で書換えを行い、かつ、上記アドレス変換テーブルの論理ページアドレスに対応する物理ページアドレスは上記空き領域のアドレスに更新する
好適には、上記フラッシュメモリ部のメモリは、同一ブロック内にページデータ書き込み順序について下位アドレスから順に書き込ように規定されており、上記制御部は、上記ページデータを上記フラッシュメモリ部のメモリに書き込む度に当該ページデータの予備領域を形成し、当該予備領域にはデータの論理アドレスと、フラッシュメモリ部のメモリ上における同データの更新履歴を示す情報を記載し、上記フラッシュメモリ部のメモリを上位アドレスからスキャンして、上記予備領域の論理アドレスと更新履歴をもとに、物理アドレスと論理アドレスとの対照を確認して、アドレス変換テーブルを再構築する機能を有する。
好適には、上記更新履歴は、データの上記記憶メディアへの書き込み時のタイムスタンプ、あるいは、データの上記記憶メディア上における更新回数である。
好適には、カウンタを有し、メディア全域または複数データを含む特定領域に対して上記追記が実施されるごとにカウンタ値が更新され、上記制御部は、当該カウンタ値または当該カウンタ値と一意的に対応する値を、上記データの予備領域にデータと同時に書き込み、上記アドレス変換テーブルの再構築時には、その履歴を参照に最も新しい論理アドレスと物理アドレスの対応をテーブルに反映させる
好適には、制御部は、上記内部メモリ上に、アドレス変換テーブルとともに予備テーブルを含み、上記アドレス変換テーブルの再構築においては、上記フラッシュメモリ部のメモリの物理アドレスをスキャンしてページデータを読み出し、論理アドレスを取得するごとに、論理アドレスと物理アドレスの対応をアドレス変換テーブルに反映し、上記フラッシュメモリ部のメモリに対してさらに順次スキャンを続け、上記アドレス変換テーブルの物理アドレスフィールド書き込まれる物理アドレスの重複が検出されると、上記予備テーブル上に記憶領域を確保し、物理アドレスフィールドの値を上記予備テーブルにおける上記記憶領域のインデックスに書き換え、物理アドレスが重複した論理アドレスに対して一通り記憶領域が確保されると、再度上記フラッシュメモリ部のメモリの物理アドレスを最初からスキャンして再度ページデータを読み出し、同じ論理アドレスを取得するとこれに対応する物理アドレスフィールドの上記予備テーブル上の記憶領域へのインデックスを参照して、記憶領域に物理アドレスと、履歴データを書き込み、さらに順次スキャンを続け、ページデータを読み出して、同じ論理アドレスが取得されと、上記記憶領域へのインデックスを取得し、当該記憶領域に記載されている履歴データを自らの履歴データと比較して、自らの履歴の方が新しければ、物理アドレスと履歴データを書き換え、二度目のスキャンが終了すれば、上記予備テーブルには最新の物理アドレスが格納されることになり、その後、上記アドレス変換テーブルを上位からスキャンして、物理アドレスのフィールドに上記予備テーブルへのインデックスがあれば、その値をインデックス先に格納された物理アドレスに入れ替える
好適には、上記制御部は、第1の内部メモリに構築される上記ページデータ用の第1のアドレス変換テーブルに加えて、第2の内部メモリに消去ブロック単位の第2のアドレス変換テーブルを有し、ページアドレスを含む書き込みアドレスを受けると、ページアドレスに基づいて上記内部メモリにアクセスし、上記第1のアドレス変換テーブルから論理ページアドレスに対応する物理ページアドレスを取得し、当該取得した物理ページアドレスの一部は消去ブロックに対応するアドレスであって、当該消去ブロックに対応するアドレスを上記第2のアドレス変換テーブルによって再度変換して物理ブロックアドレスを取得し、上記物理ページアドレスと上記物理ブロックアドレスを合成した物理ページアドレスに基づき上記フラッシュメモリ部の当該物理ページアドレスに格納されたページデータを読み出して上記ページレジスタに格納し、書き込みアドレスに相当するアドレスのデータを外部から入力されたデータに当該ページレジスタ上で更新し、上記第2のアドレス変換テーブルの論理アドレスに対応する物理アドレスを参照して更新後のページデータを上記フラッシュメモリ部のメモリの当該ブロック内の空き領域に追記の形で書換えを行い、かつ、上記アドレス変換テーブルの論理ページアドレスに対応する物理ページアドレスは上記空き領域のアドレスに更新する
好適には、上記制御部は、第1の内部メモリに構築される上記ページデータ用の第1のアドレス変換テーブルに加えて、第2の内部メモリに消去ブロック単位の各物理ブロックアドレスにおける欠陥状態とブロックの使用状態を示す第2のテーブルと、直前に書き込みを実施したページアドレスを示すポインタ値を保持するレジスタと、をさらに有し、上記フラッシュメモリ部のメモリに書き込みを行うときには、上記第2のテーブルと上記レジスタのポインタ値から書き込み先の物理ページアドレスを決定し、この際欠陥情報の検出された欠陥ブロックおよび使用済みブロックはスキップし、欠陥ブロック内のページへは書き込みを実施せず、ロックアドレスを変えながら次の書き込み先を探し、欠陥ブロックおよび使用済みブロックでないブロックに対して更新後のデータを書き込む
好適には、上記制御部は、第1の内部メモリに構築される上記ページデータ用の第1のアドレス変換テーブルに加えて、第2の内部メモリに消去ブロック単位の第2のアドレス変換テーブルを有し、データが書き込まれた後、更新によって無効化された領域が有効なページデータと共存している消去ブロックについて、有効ページデータを残しつつ無効化領域を空き領域に回復させる機能を有し、当該回復に際し、消去済の空き領域である予備ブロックを用い、無効化された領域は非コピー対象として有効なページデータを予備ブロック内の空き領域に順番にコピーし、さらに、ページデータの予備領域に記載された各ページの論理アドレスと、新規にコピーされた領域の物理アドレスとの照合結果を一時保持し、ブロックアドレスの第2のアドレス変換テーブルを更新し、元の消去ブロックを予備ブロックと入れ替え、消去ブロックを予備ブロックとして消去し、さらに上記一時保持した値を元に、上記第1のアドレス変換テーブルを更新する
本発明の第2の観点の記憶装置は、列にアクセス可能な複数のメモリを含むフラッシュメモリ部と、上記複数のメモリの2つ以上から並列にデータを取得し、一時記憶するページレジスタと、上記フラッシュメモリ部と上記ページレジスタ間のデータ転送を、内部メモリに構築されるアドレス変換テーブルを用いて管理する制御部と、を有し、上記フラッシュメモリ部の上記メモリは、ブロック単位で消去が行われ、当該消去単位のブロックが書き込み単位であるページを複数含み、上記制御部は、書き込み要求があると、上記アドレス変換テーブルをアクセスして取得した物理ページアドレスに従って上記フラッシュメモリ部の各メモリの当該物理ページアドレスに格納されたページデータを読み出して、書き込みアドレスに相当するアドレスのデータを外部から入力されたデータに当該ページレジスタ上で更新し、更新後のページデータを上記フラッシュメモリ部のメモリの空き領域に追記の形で書換えを行い、かつ、上記アドレス変換テーブルの論理ページアドレスに対応する物理ページアドレスは上記空き領域のアドレスに更新し、かつ、更新データの追記するための空き領域を検索するに際し、検索対象としているブロックへのブロックポインタを設定し、書き込み要求があると、上記ブロックポインタを、ブロックの物理アドレスに従って循環させながら空き領域を検索して、循環書き込みを行う。
好適には、上記制御部は、更新データの追記するための空き領域を管理するために、上記内部メモリ上に、各消去ブロックに格納された各ページの状態が空き領域であるか、有効領域であるか、無効化された無効領域であるかを示すページ状態管理テーブルを構築し、かつ、検索対象としているブロックへのブロックポインタを設定し、書き込み要求があると、上記ページ状態管理テーブルをスキャンして空きページ領域を検索するに際し、上記ブロックポインタを、ブロックの物理アドレスに従って循環させながら空き領域を検索して、循環書き込みを行う
好適には、各データは予備領域を有し、当該予備領域にはデータの論理アドレスが記載されており、上記有効データのコピー時には当該論理アドレス値に従ってアドレス変換テーブルを更新する。
このように、本記憶装置においては、フラッシュメモリにおける課題解決のため、追記型の記憶システムに着目している。このようなシステムにおいては、書き換えは、更新データを空き領域に追記し、元のデータを無効化することで実施される。
より具体的には、論理アドレスを物理アドレスに対応させるアドレス変換テーブルを用い、書き換えは対照データの物理アドレスを変更し、記憶メディアの空き領域に追記することで実施する。この手法の関連技術としてたとえば特許文献2には、アドレス変換テーブルを用いた追記型記憶システムにおける管理方法の詳細が記載されている。
ただし、これは単独チップを想定したものであり、大容量化に伴ってアドレス変換テーブルが巨大化してしまう問題がある。本発明の記憶装置はそれを解決する。さらに本発明の記憶装置は、近年の大容量に進化したフラッシュメモリに適用可能となるよう、以下のように機能する。
1.前述したページ書き込みの順序制約に従いつつ、追記型記憶システムを十分な信頼性で機能する。
2.大容量の不揮発性メモリは内部に欠陥を含むことが多く、その対策が要求される。特にフラッシュメモリでは、一つの欠陥が消去ブロック全体に悪影響を与えるので、書き込み単位と欠陥管理の単位が異なる場合が多い。本記憶装置は、このような欠陥管理を上記システムと両立させている。
3.追記型のデータ更新では、旧データの記憶領域はただちに消去されず、無効化される。フラッシュメモリにおいては、そのような無効化領域を空き領域に回復させる手段が必要であり、本記憶装置は、その回復処理を上述の制約のもとで適切に行う。
本発明によれば、たとえばフラッシュメモリを記憶メディアとして使用する際、信頼性が高く、かつ高速な記憶システムを実現できる。
本発明によれば、ブロック単位の消去や、ブロック内のデータ書き込み順序の制約に伴う転送速度の悪化や書き込み劣化の発生を、大幅に低減することが可能である。
本発明によれば、フラッシュメモリを記憶メディアとして使用しつつ、実使用上常態的に高速な書き換えを実現することができる。その消去回数も減少させることができ、書き換え疲労を低減することで、信頼性の高い書き換えが可能である。
さらにそのような性能向上を得つつ、不良ブロックの置換等も機動的に実施でき、フラッシュメモリにおいて無効化された領域の回復も適切に実施でき、また、電源瞬断等でアドレス変換テーブルが破壊された場合でも、齟齬なく再構築することが可能である。
以下、本発明の実施形態を図面に関連付けて説明する。
図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に従ってページ単位のアドレス変換を実施した後、フラッシュメモリ内の欠陥ブロックをスキップするために、さらにブロックレベルでのアドレス変換を挿入しても良い。
NAND型フラッシュメモリの内部構成例を示す図である。 記憶装置を構成するフラッシュメモリの概念図を示す図である。 第1の実施形態に係る記憶装置を示す構成図である。 第1の実施形態に係るアドレス変換テーブルの構成例を示す図である。 追記型書き込みを行った場合に生じる問題点と解決法について説明するための図である。 第2の実施形態に係る記憶装置を示す構成図である。 第2の実施形態に係るアドレス変換テーブルの構成例を示す図である。 第3の実施形態に係る記憶装置を示す構成図である。 第3の実施形態に係るアドレス変換テーブルの構成例を示す図である。 使用RAM容量を圧縮したアドレス変換に使用するアドレス変換テーブルを示す図である。 スペアテーブルのRAM容量を圧縮した例を示す図である。 使用RAM容量を圧縮したアドレス変換に使用するアドレス変換テーブルの他の例を示す図である。 第4の実施形態に係る記憶装置を示す構成図である。 第4の実施形態に係る消去ブロック内部のデータ処理について説明するための図である。 第4の実施形態におけるアドレス変換テーブル更新の具体例を説明するための図である。 第5の実施形態に係る記憶装置を示す構成図である。 第5の実施形態に係る制御回路のアドレス変換テーブルおよびページ状態の管理テーブルの構成例を示す図である。 第5の実施形態の無効領域の回復手順を説明するための図である。 第6の実施形態を示す図であって、そのようなECC処理と欠陥ブロック管理を導入した、第5の実施形態(図18)の装置構成上の応用変形例を示す図である。 第6の実施形態に係る制御回路のアドレス変換テーブルおよびページ状態の管理テーブルの構成例を示す図である。 本第7の実施形態に係るコンピュータシステムの構成例を示す図である。 第7の実施形態に係る制御回路のアドレス変換テーブルの構成例を示す図である。
符号の説明
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 (12)

  1. 列にアクセス可能な複数のメモリを含むフラッシュメモリ部と、
    上記複数のメモリの2つ以上から並列にデータを取得し、一時記憶するページレジスタと、
    上記フラッシュメモリ部と上記ページレジスタ間のデータ転送を、内部メモリに構築されるアドレス変換テーブルを用いて管理する制御部と、を有し、
    上記フラッシュメモリ部の上記メモリは、
    ブロック単位で消去が行われ、当該消去単位のブロックが書き込み単位であるページを複数含み
    上記制御部は、
    上記内部メモリ上にページ単位でアドレス変換テーブルを構築し、当該アドレス変換テーブルを用いて、上記ページレジスタに並列格納されるデータ単位で論理アドレスと物理アドレスとの対照を管理し、
    ページアドレスを含む書き込みアドレスを受けると、ページアドレスに基づいて上記内部メモリにアクセスし、上記アドレス変換テーブルから論理ページアドレスに対応する物理ページアドレスを取得した物理ページアドレスに基づき上記フラッシュメモリ部の各メモリの当該物理ページアドレスに格納されたページデータを読み出して上記ページレジスタに格納し、書き込みアドレスに相当するアドレスのデータを外部から入力されたデータに当該ページレジスタ上で更新し、
    更新後のページデータを上記フラッシュメモリ部のメモリの空き領域に追記の形で書換えを行い、かつ、上記アドレス変換テーブルの論理ページアドレスに対応する物理ページアドレスは上記空き領域のアドレスに更新する
    記憶装置。
  2. 上記ページレジスタに格納されるデータ単位は複数のセクタを含み、当該記憶装置はセクタ単位でのアクセスが可能であり、
    上記制御部は、
    ページアドレスおよびセクタアドレスを含む書き込みアドレスを受けると、ページアドレスに基づいて上記内部メモリにアクセスし、上記アドレス変換テーブルから論理ページアドレスに対応する物理ページアドレスを取得し、取得した物理ページアドレスに基づき上記フラッシュメモリ部をアクセスし、当該物理ページアドレスに格納されたページデータを読み出して上記ページレジスタに格納し、
    上記セクタアドレスに相当するセクタを選択して、外部から入力されたデータに当該ページレジスタ上で更新し、
    更新後のページデータを上記フラッシュメモリ部のメモリの空き領域に追記の形で書換えを行い、かつ、上記アドレス変換テーブルの論理ページアドレスに対応する物理ページアドレスは上記空き領域のアドレスに更新する
    請求項1記載の記憶装置。
  3. 上記フラッシュメモリ部のメモリは、同一ブロック内にページデータ書き込み順序について下位アドレスから順に書き込むように規定されており、
    上記制御部は、
    上記ページデータを上記フラッシュメモリ部のメモリに書き込む度に当該ページデータの予備領域を形成し、当該予備領域にはデータの論理アドレスと、フラッシュメモリ部のメモリ上における同データの更新履歴を示す情報を記載し、
    上記フラッシュメモリ部のメモリを上位アドレスからスキャンして、上記予備領域の論理アドレスと更新履歴をもとに、物理アドレスと論理アドレスとの対照を確認して、アドレス変換テーブルを再構築する機能を有する
    請求項1または2記載の記憶装置。
  4. 上記更新履歴は、データの上記フラッシュメモリ部のメモリへの書き込み時のタイムスタンプを含む
    請求項3記載の記憶装置。
  5. 上記更新履歴は、データの上記フラッシュメモリ部上における更新回数を含む
    請求項3記載の記憶装置。
  6. カウンタを有し、
    メディア全域または複数データを含む特定領域に対して上記追記が実施されるごとにカウンタ値が更新され、
    上記制御部は、
    当該カウンタ値または当該カウンタ値と一意的に対応する値を、上記データの予備領域にデータと同時に書き込み、
    上記アドレス変換テーブルの再構築時には、上記更新履歴を参照に最も新しい論理アドレスと物理アドレスの対応をテーブルに反映させる
    請求項4記載の記憶装置。
  7. 制御部は、
    上記内部メモリ上に、アドレス変換テーブルとともに予備テーブルを含み、
    上記アドレス変換テーブルの再構築においては、
    上記フラッシュメモリ部のメモリの物理アドレスをスキャンしてページデータを読み出し、論理アドレスを取得するごとに、論理アドレスと物理アドレスの対応をアドレス変換テーブルに反映し、
    上記フラッシュメモリ部のメモリに対してさらに順次スキャンを続け、上記アドレス変換テーブルの物理アドレスフィールドに書き込まれる物理アドレスの重複が検出されると、上記予備テーブル上に記憶領域を確保し、物理アドレスフィールドの値を上記予備テーブルにおける上記記憶領域のインデックスに書き換え、
    物理アドレスが重複した論理アドレスに対して一通り記憶領域が確保されると、再度上記フラッシュメモリ部のメモリの物理アドレスを最初からスキャンして再度ページデータを読み出し、同じ論理アドレスを取得するとこれに対応する物理アドレスフィールドの上記予備テーブル上の記憶領域へのインデックスを参照して、記憶領域に物理アドレスと、履歴データを書き込み、
    さらに順次スキャンを続け、ページデータを読み出して、同じ論理アドレスが取得されと、上記記憶領域へのインデックスを取得し、当該記憶領域に記載されている履歴データを自らの履歴データと比較して、自らの履歴の方が新しければ、物理アドレスと履歴データを書き換え、
    二度目のスキャンが終了すれば、上記予備テーブルには最新の物理アドレスが格納されることになり、その後、上記アドレス変換テーブルを上位からスキャンして、物理アドレスのフィールドに上記予備テーブルへのインデックスがあれば、その値をインデックス先に格納された物理アドレスに入れ替える
    請求項3から6のいずれか一に記載の記憶装置。
  8. 上記制御部は、
    第1の内部メモリに構築される上記ページデータ用の第1のアドレス変換テーブルに加えて、第2の内部メモリに消去ブロック単位の第2のアドレス変換テーブルを有し、
    ページアドレスを含む書き込みアドレスを受けると、ページアドレスに基づいて上記内部メモリにアクセスし、上記第1のアドレス変換テーブルから論理ページアドレスに対応する物理ページアドレスを取得し、
    当該取得した物理ページアドレスの一部は消去ブロックに対応するアドレスであって、当該消去ブロックに対応するアドレスを上記第2のアドレス変換テーブルによって再度変換して物理ブロックアドレスを取得し、
    上記物理ページアドレスと上記物理ブロックアドレスを合成した物理ページアドレスに基づき上記フラッシュメモリ部の当該物理ページアドレスに格納されたページデータを読み出して上記ページレジスタに格納し、書き込みアドレスに相当するアドレスのデータを外部から入力されたデータに当該ページレジスタ上で更新し、
    上記第2のアドレス変換テーブルの論理アドレスに対応する物理アドレスを参照して更新後のページデータを上記フラッシュメモリ部のメモリの当該ブロック内の空き領域に追記の形で書換えを行い、かつ、上記アドレス変換テーブルの論理ページアドレスに対応する物理ページアドレスは上記空き領域のアドレスに更新する
    請求項1から7のいずれか一に記載の記憶装置。
  9. 上記制御部は、
    第1の内部メモリに構築される上記ページデータ用の第1のアドレス変換テーブルに加えて、第2の内部メモリに消去ブロック単位の各物理ブロックアドレスにおける欠陥状態とブロックの使用状態を示す第2のテーブルと、直前に書き込みを実施したページアドレスを示すポインタ値を保持するレジスタと、をさらに有し、
    上記フラッシュメモリ部のメモリに書き込みを行うときには、上記第2のテーブルと上記レジスタのポインタ値から書き込み先の物理ページアドレスを決定し、この際欠陥情報の検出された欠陥ブロックおよび使用済みブロックはスキップし、欠陥ブロック内のページへは書き込みを実施せず、
    ブロックアドレスを変えながら次の書き込み先を探し、欠陥ブロックおよび使用済みブロックでないブロックに対して更新後のデータを書き込む
    請求項1から7のいずれか一に記載の記憶装置。
  10. 上記制御部は、
    第1の内部メモリに構築される上記ページデータ用の第1のアドレス変換テーブルに加えて、第2の内部メモリに消去ブロック単位の第2のアドレス変換テーブルを有し、
    データが書き込まれた後、更新によって無効化された領域が有効なページデータと共存している消去ブロックについて、有効ページデータを残しつつ無効化領域を空き領域に回復させる機能を有し、
    当該回復に際し、消去済の空き領域である予備ブロックを用い、無効化された領域は非コピー対象として有効なページデータを予備ブロック内の空き領域に順番にコピーし、さらに、ページデータの予備領域に記載された各ページの論理アドレスと、新規にコピーされた領域の物理アドレスとの照合結果を一時保持し、
    ブロックアドレスの第2のアドレス変換テーブルを更新し、元の消去ブロックを予備ブロックと入れ替え、消去ブロックを予備ブロックとして消去し、さらに上記一時保持した値を元に、上記第1のアドレス変換テーブルを更新する
    請求項3から8のいずれか一に記載の記憶装置。
  11. 列にアクセス可能な複数のメモリを含むフラッシュメモリ部と、
    上記複数のメモリの2つ以上から並列にデータを取得し、一時記憶するページレジスタと、
    上記フラッシュメモリ部と上記ページレジスタ間のデータ転送を、内部メモリに構築されるアドレス変換テーブルを用いて管理する制御部と、を有し、
    上記フラッシュメモリ部の上記メモリは、
    ブロック単位で消去が行われ、当該消去単位のブロックが書き込み単位であるページを複数含み
    上記制御部は、
    書き込み要求があると、上記アドレス変換テーブルをアクセスして取得した物理ページアドレスに従って上記フラッシュメモリ部の各メモリの当該物理ページアドレスに格納されたページデータを読み出して、書き込みアドレスに相当するアドレスのデータを外部から入力されたデータに当該ページレジスタ上で更新し、
    更新後のページデータを上記フラッシュメモリ部のメモリの空き領域に追記の形で書換えを行い、かつ、上記アドレス変換テーブルの論理ページアドレスに対応する物理ページアドレスは上記空き領域のアドレスに更新し、かつ、
    更新データの追記するための空き領域を検索するに際し、検索対象としているブロックへのブロックポインタを設定し、書き込み要求があると、上記ブロックポインタを、ブロックの物理アドレスに従って循環させながら空き領域を検索して、循環書き込みを行う
    記憶装置。
  12. 上記制御部は、
    更新データの追記するための空き領域を管理するために、上記内部メモリ上に、各消去ブロックに格納された各ページの状態が空き領域であるか、有効領域であるか、無効化された無効領域であるかを示すページ状態管理テーブルを構築し、
    かつ、検索対象としているブロックへのブロックポインタを設定し、書き込み要求があると、上記ページ状態管理テーブルをスキャンして空きページ領域を検索するに際し、上記ブロックポインタを、ブロックの物理アドレスに従って循環させながら空き領域を検索して、循環書き込みを行う
    請求項11記載の記憶装置。
JP2006115779A 2005-06-06 2006-04-19 記憶装置 Expired - Fee Related JP5130646B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 株式会社日立製作所 記憶システム及びその電源制御方法並びにストレージ装置

Cited By (5)

* Cited by examiner, † Cited by third party
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