JP3977370B2 - フラッシュメモリのアドレスマッピング方法、マッピング情報管理方法及びこれらの方法を用いたフラッシュメモリ - Google Patents

フラッシュメモリのアドレスマッピング方法、マッピング情報管理方法及びこれらの方法を用いたフラッシュメモリ Download PDF

Info

Publication number
JP3977370B2
JP3977370B2 JP2004306003A JP2004306003A JP3977370B2 JP 3977370 B2 JP3977370 B2 JP 3977370B2 JP 2004306003 A JP2004306003 A JP 2004306003A JP 2004306003 A JP2004306003 A JP 2004306003A JP 3977370 B2 JP3977370 B2 JP 3977370B2
Authority
JP
Japan
Prior art keywords
sector
data
written
page
flash memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2004306003A
Other languages
English (en)
Other versions
JP2005196736A (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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2005196736A publication Critical patent/JP2005196736A/ja
Application granted granted Critical
Publication of JP3977370B2 publication Critical patent/JP3977370B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1847File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD

Description

本発明は、フラッシュメモリ(flash memory)をアクセス(access)する方法に関し、より詳しくは、論理・物理マッピング(logical-physical mapping)手法を用いてフラッシュメモリのアクセス時に性能低下を最小限に抑える方法、及びフラッシュメモリに前記論理・物理マッピングに関する情報を効率的に格納し管理する方法、及びこれらの方法を用いたフラッシュメモリに関する。
フラッシュメモリは、ハードディスクのように、不揮発性でありながらも速いアクセス速度を有し、電力を少なく消耗するため、組み込み型システム(embedded system)またはモバイルデバイス(mobile device)などの応用に多く使用されている。
ところで、このようなフラッシュメモリは、そのハードウェアの特性を考慮するとき、既に書き込まれたメモリセクターに書き込み(write)演算を行うためには、そのセクターが含まれたブロックの全体を消去する(erase)演算を先に行わなければならず、これがフラッシュメモリの性能を低下させる主な要因となっていた。
このような書き込みの前の消去(erase before write)を行う問題を解決するために、論理アドレス(logical address)や物理アドレス(physical address)の概念が導入された。即ち、ホスト段から要求される論理アドレスに対する読み出し・書き込み演算は、種々のマッピングアルゴリズムによって実際のフラッシュメモリの物理アドレスに対する読み出し・書き込み演算に変更される。このとき、物理的なフラッシュメモリの状態を考慮しているため、性能を最大にすることができる。
最近、フラッシュメモリシステムの性能を向上させるために、連続されるフラッシュ演算をバッファリングして置き、一度に処理できるフラッシュメモリが開発されているが、このようなフラッシュメモリを大ブロック(large block)フラッシュメモリという。しかし、既存の論理・物理マッピングアルゴリズムを大ブロックフラッシュメモリにそのまま適用すると、大ブロックフラッシュメモリの利点を十分に生かすことができなかった。従って、本発明のように、大ブロックフラッシュメモリのための効率的な論理・物理マッピングアルゴリズムが要求されていた。
従来のフラッシュメモリ論理・物理マッピング手法に関する技術は、「M-Systems Flash Disk Pioneer」社により出願された特許文献1や特許文献2、「Mitsubishi」社により出願された特許文献3、及び「三星電子」により出願された特許文献4などに記載されている。このような従来の技術において、フラッシュメモリのアクセス方法の核心は、ホスト段から要求される論理セクターへの書き込み要求に応じて、フラッシュメモリの実際の物理セクターにどのように書き込みを効率的に行えるかにある。ここで、フラッシュメモリの消去単位をブロックとし、読み出し・書き込み単位をセクターとすると、従来の技術は、大別してセクターマッピング手法とブロックマッピング手法とに分けられる。
図1は、従来のセクターマッピングの一例を示す図である。セクター番号とそのオフセットとからなる仮想アドレス(virtual address)は、フラッシュメモリに格納されているセクター単位のマッピング情報により論理アドレス(logical address)に変換される。次に、求められた論理アドレスの上位ビットから論理ブロック番号を求められるが、メインメモリ(main memory)に格納されている論理ブロック-物理ブロックテーブルから最終の物理アドレスを求めることになる。
図2は、従来のブロックマッピングの一例を示す図である。仮想ブロック(virtual block)は、それとマッピングされるメインブロック(primary block)と補助ブロック(replacement block)とを有する。即ち、ブロック単位のマッピング情報により、ある論理ブロックの1つのセクターは、他のブロックの1つのセクターにマッピングされることになる。このとき、メインブロックの該当セクターに他のデータが既に書き込まれている場合には、補助ブロックにデータが書き込まれることになる。
フラッシュメモリの主要演算には、読み出し(read)、書き込み(write)、消去(erase)の三つの演算がある。本発明は、主として読み出し・書き込み演算に関連しており、この読み出し・書き込み演算は、その動作の面でそれほど大差がないことから、ここでは、従来技術の書き込み演算の動作を示す図である。
ホストは、データをフラッシュメモリに書き込むために、論理セクター番号(Logical Sector Number;以下、LSNとも称する)を伝達する。図1に示すようなセクターマッピング手法において、LSNやPSN(Physical Sector Number;以下、PSNとも称する)に対するマッピングテーブル(mapping table)が存在しているため、該当のPSNにデータを書き込めば良い。このとき、該当のPSNに既にデータが存在する場合には空いている他のPSNを検索してデータを書き込み、マッピング情報を変更する。
図2に示すようなブロックマッピング手法においては、与えられたLSNから先ずLBN(Logical Block Number;以下、LBNと称する)を求め、存在しているLBN-PBNマッピングテーブルからPBNを検索し、オフセットが一致するPSNを検索してデータを書き込んでいる。セクターマッピングの場合と同様に、既にデータが書き込まれている場合には、書き込み可能なブロックのセクターにデータを書き込み、マッピング情報を変更する。
最近開発された大ブロックフラッシュメモリは、二つ以上のセクターへの読み出し・書き込み手法を提供している。即ち、フラッシュメモリの演算単位をページとし、その大きさが4つのセクターと同じであると、4つのセクターを一度に読み出すか、書き込むことができる。しかし、既存の論理・物理マッピングアルゴリズム(logical-physical mapping algorithm)は、ホストのセクターの大きさとフラッシュメモリの演算単位とが同じであると見なしているから、既存のアルゴリズムを大ブロックフラッシュメモリに適用すれば、大ブロックフラッシュメモリの利点を生かすことができない。特に、大ブロックフラッシュメモリは、一つ以上の連続したセクターへの書き込み演算(multiple sector write)において良好な性能を発揮できるにも関らず、既存のアルゴリズムでは、このような特性を考慮していなかった。
米国特許第5,404,485号 米国特許第5,937,425号 米国特許第5,905,993号 米国特許第6,381,176号
本発明は、上記問題点に鑑みなされたものであり、大ブロックフラッシュメモリに適した論理・物理マッピングアルゴリズムを提供することを目的とする。
また、本発明は、論理・物理マッピング情報管理方法を用いてフラッシュメモリのシステムの性能を最大化し、電源の突然の異常時にもシステムを安全に復旧できるようにする方法を提供することを目的とする。
上記の目的を達成するため、本発明による方法においては、所定数のセクターからなるページを有するブロックを一つ以上有し、前記セクターまたは前記ページ単位でデータを書き込み、前記ブロック単位でデータを消去するフラッシュメモリにデータを書き込む方法において、書き込みたいデータの最も最近に書き込まれた論理ページ番号を有する物理ページに、前記書き込みたいデータとオフセットが一致するセクターが空いているかどうかを判断する第1のステップと、前記判断の結果、前記オフセットが一致するセクターが空いていると、前記物理ページの前記オフセットが一致するセクターにデータを書き込む第2のステップと、前記判断の結果、前記オフセットが一致するセクターが空いていないと、空いている物理ページを選択し、前記データとオフセットが一致するセクターにデータを書き込み、前記選択された空いている物理ページに前記データに対する論理ページ番号を書き込む第3のステップとを含むことを特徴とする。
本発明による方法においては、書き込みたいデータの最も最近に書き込まれた論理ページ番号を有する物理ページに前記書き込みたいデータを格納できる空いているセクターが存在するかどうかを判断する第1のステップと、前記判断の結果、空いているセクターが存在すると、前記物理ページの空いているセクターにデータを書き込み、前記物理ページに前記データに対する論理セクター番号を書き込む第2のステップと、前記判断の結果、空いているセクターが存在しないと、空いている物理ページを選択し、空いているセクターにデータを書き込み、前記選択された空いている物理ページに前記データに対する論理ページ番号及び論理セクター番号を書き込む第3のステップとを含むことを特徴とする。
本発明による方法においては、書き込みたいデータを格納できる空いているセクターが現在のブロックに存在するかどうかを判断する第1のステップと、前記判断の結果、空いているセクターが存在すると、前記空いているセクターにデータを書き込み、前記空いているセクターが位置した物理ページと同じ物理ページに前記データに対する論理セクター番号を書き込む第2のステップとを含むことを特徴とする。
本発明による方法においては、所定数のセクターからなるページを有するブロックを一つ以上有し、前記セクターまたは前記ページ単位でデータを書き込み、前記ブロック単位でデータを消去するフラッシュメモリにおいて、書き込みたいデータの最も最近に書き込まれた論理ページ番号を有する物理ページに前記書き込みたいデータとオフセットとが一致するセクターが空いているかどうかを判断し、前記判断の結果、前記オフセットが一致するセクターが空いていると、前記物理ページの前記オフセットが一致するセクターにデータを書き込み、前記判断の結果、前記オフセットが一致するセクターが空いていないと、空いている物理ページを選択し、前記データとオフセットが一致するセクターにデータを書き込み、前記選択された空いている物理ページに前記データに対する論理ページ番号を書き込むことを特徴とする。
本発明による方法においては、フラッシュメモリは、書き込みたいデータの最も最近に書き込まれた論理ページ番号を有する物理ページに前記書き込みたいデータを格納できる空いているセクターが存在するかどうかを判断し、前記判断の結果、空いているセクターが存在すると、前記物理ページの空いているセクターにデータを書き込み、前記物理ページに前記データに対する論理セクター番号を書き込み、前記判断の結果、空いているセクターが存在しないと、空いている物理ページを選択し、空いているセクターにデータを書き込み、前記選択された空いている物理ページに前記データに対する論理ページ番号及び論理セクター番号を書き込むことを特徴とする。
本発明による方法においては、フラッシュメモリは、書き込みたいデータを格納できる空いているセクターが現在のブロックに存在するかどうかを判断し、空いているセクターが存在すると、前記空いているセクターにデータを書き込み、前記空いているセクターが位置した物理ページと同じ物理ページに前記データに対する論理セクター番号を書き込むことを特徴とする。
本発明による方法においては、複数のブロックからなるフラッシュメモリにおいて、前記ブロックのうちの一部のブロックを、論理・物理マッピング情報を格納するために、別のマップブロックに割り当て、前記マップブロックは、前記マッピング情報をセグメントに分割して格納している一つ以上のマップセグメントユニットを含み、前記マッピング情報の変更がある場合には、前記変更された情報を格納しているマップセグメントユニットを前記マップブロックの空いているユニットに書き込むことにより、前記マッピング情報を更新することを特徴とする。
このような本発明に係るフラッシュメモリのアドレスマッピング方法、マッピング情報管理方法及びそれらの方法を用いたフラッシュメモリによれば、大ブロックフラッシュメモリの特性を反映した論理・物理アドレスマッピング方法及び論理・物理アドレスマッピング情報管理方法を提案することにより、大ブロックフラッシュメモリの性能を向上させ、突然の電源の切断時にもシステムを安全に復旧できるという効果がある。
以下、本発明の好ましい実施の形態を、添付図面に基づいて詳しく説明する。
本発明による利点及び特徴、かつ、それらを達成する方法は、添付図面に基づいて詳しく後述される実施形態によって明らかになるだろう。
図3は、フラッシュメモリが動作するシステムの全体構造を示す図である。XIP可能メモリ(XIP-able memory)311は、ROM(Read-Only Memory)またはRAM(Random-Access Memory)のように、XIP(Execute-In-Place)が可能なメモリである。これは、即ち、プログラムコードが搭載されて実行可能なメモリを意味するが、このうち、RAMは揮発性であり、ROMは不揮発性である。フラッシュメモリ312は、前記のようなXIP可能メモリ311ではなく、単にデータを格納するメモリであって、不揮発性である。CPU313は、直接実行可能なメモリに搭載されたフラッシュメモリアクセスコードを実行することにより、外部ホスト(external host)300から伝達されてきた読み出し・書き込み演算要求をフラッシュメモリの読み出し・書き込み演算に変更する役割を担う。
図4及び図5は、実際の128MB NAND型のフラッシュメモリの構成を示す図である。本発明は、その他に、異なる大きさの格納容量を有するフラッシュメモリにも適用できるのは言うまでも無い。図4に示すような小ブロック(small block)フラッシュメモリは、外部ホストから要求されるデータの読み出し・書き込み演算の単位と実際にフラッシュメモリが提供するフラッシュメモリの読み出し・書き込み演算の単位とが同じであるシステムである。例えば、外部ホストから512B単位で読み出しまたは書き込みが要求されると、フラッシュメモリでも同様に、512B単位で読み出したり書き込みたりする作業を行う。図4に示すように、128MBフラッシュメモリの場合に、1つのページは、主領域512Bと補助領域16Bとからなり、消去単位であるブロックは、32個のページからなっている。
図5に示すような大ブロック(large block)フラッシュメモリの場合は、フラッシュメモリの読み出し・書き込みの単位が外部ホストから要求される読み出し・書き込み単位の倍数となる。特に、図5の例においては、フラッシュメモリの1つのページの大きさは、4つのセクターの大きさと同じであり、消去単位であるブロックは、64ページからなっていることが分かる。
図6は、大ブロックフラッシュメモリの読み出し・書き込み単位であるページの基本フォーマットを示す図である。最近通用している大ブロックフラッシュメモリは、ページの大きさが小ブロックフラッシュメモリにおけるページの四倍であるので、主領域(main area)には4つのセクターが格納できる。しかし、4つ以上またはその以下のセクターが1つのページに格納されても本発明による概念が同様に適用されるのは当業界の通常の知識を有する者にとっては、容易に想到できることであるだろう。補助領域(spare area)には種々のメタ情報が格納できるが、主なメタ情報としては、各セクターごとの論理セクター番号である「LSN(logical sector number)」とフラッシュメモリの1つのページに対する論理ページ番号である「LPN(logical sector number)」とが格納できる。このように、論理・物理マッピング情報がフラッシュメモリの各ページに格納されても良いが、これとは異なり、フラッシュメモリの全体領域のうちの一部の領域にマッピングテーブル情報を別々に格納する方法も考えられる。
本発明は、ホスト段から要求される論理アドレスに対する読み出し・書き込み要求を大ブロックフラッシュメモリの物理アドレスに対する読み出し・書き込み要求に切り替える方法に関するものであり、大ブロックの論理・物理アドレスマッピング方法と、論理・物理アドレスマッピング情報管理方法とに分けて説明する。
[論理・物理アドレスマッピング方法]
先ず、大ブロックの論理・物理アドレスマッピングアルゴリズムについて説明する。フラッシュメモリの主要演算としては、書き込み演算と読み出し演算があるが、読み出し演算は、書き込み演算の逆にしたものに過ぎず、ここでは、書き込み演算についてのみ説明する。
外部ホストから要求される書き込み演算には、二つの種類がある。その一つは、LSN及び該当のデータを入力する単一セクター書き込み(single sector write)演算であり、もう一つは、開始LSN、連続したLSNの個数及び該当のデータを入力する多重セクター書き込み(multiple sector write)演算である。大ブロックフラッシュメモリシステムは、一つ以上のセクターへの同時書き込み演算が可能であり、多重セクター書き込み演算の際において良好な性能を発揮することができる。ところで、最近通用されている大容量のフラッシュメモリは、1つのページが4つのセクターからなっており、本発明の一例として、1つのページが4つのセクターからなる大ブロックフラッシュメモリの論理・物理アドレスマッピングアルゴリズムに関して述べる。
大ブロックフラッシュメモリは、小ブロックとは異なり、1つのページが複数のセクターからなり、多重セクター書き込みが可能な構造であるという点で、小ブロックに比べて様々な論理・物理アドレスマッピングアルゴリズムが適用できる。即ち、従来の小ブロックフラッシュメモリシステムでは、ブロック及びセクターが論理マッピングの基本単位であるに対し、大ブロックフラッシュメモリでは、ブロック、セクターの他に、ページという基本マッピング単位が存在する。前述したように、単一セクター書き込みの場合、大ブロックフラッシュメモリの書き込み演算の入力は、LSN及び該当のデータとなるが、マッピングアルゴリズムによってフラッシュメモリの物理アドレスであるPSN(Physical Sector Number)に変換される。
先ず、LSNに対応する論理ブロック番号であるLBN(Logical Block Number)は、フラッシュメモリのブロック当たりのセクター数によって計算される。計算されたLBNに対応する物理ブロック番号であるPBN(Physical Block Number)は、LBNとPBNとの間のマッピングテーブル(mapping table)を参照して決定される。PBNを決定するさらに他の方法には、フラッシュメモリの各ブロック毎の一定の領域にLBNを書き込みことにより、論理・物理ブロックマッピング情報を格納し、LBNに対応するPBNを検索する方法もある。
前記検索されたPBNからセクターアドレスを求める方法は、大別して2つあるが、その1つは、論理ブロックと物理ブロックとの間のセクターオフセットが一致するものとし、セクターアドレスを求める方法と、もう1つは、新たにマッピング情報を格納し、セクターオフセットの一致を必要としない方法である。前者の方法は、従来の技術において既に提示されており、本発明では、後者の方法を大ブロックフラッシュメモリに適用しているが、細部的には、全て6つの方法に分けられる。一番目や二番目の方法は、ページマッピング、三番目や四番目の方法は、ページマッピングを応用したセクターマッピング、五番目や六番目の方法は、ページマッピングの無いセクターマッピング方法である。ページマッピングのためには、図6に示すようにLPNを書き込む必要があり、セクターマッピングのためには、図6に示すようにLSNを書き込む必要がある。
一番目の方法は、1対1ページマッピング方法で、1つの論理アドレスに対応する物理アドレスをただ1つのみ存在させる方法である。図7は、本発明による1対1ページマッピング過程を示すフローチャートである。先ず、外部ホスト300から作業を行いたい1つ以上のセクターのLSNを入力される(S110)。次に、前記LSNからLPN及びLBNを計算し、予め定義されているブロック単位のマッピング情報を用いてPBNを決定する(S120)。前記決定されたPBNに該当する物理ブロックに対し以下の過程を行う。先ず、前記物理ブロックに該当LPNが使用されたことがあるかを判断する(S130)。大ブロックフラッシュメモリに適用するために、本発明によるページの概念を利用して、特定のページには特定の各セクターが含まれることで予め定義されている。従って、前記該当LPNとは、前記定義により前記LSNが含まれるページのLPNを意味する。
1対1ページマッピング手法では、1つのLPNに対し、1つのPPN(physical page number)が決定されるため、決定されたPPNに入力データを書き込みできるかどうかを検査する必要がある。前記ステップS130での判断の結果、LPNが使用されたことがないと、インプレース(In-place)位置のページが空いているかどうかを判断し(S131)、ページが空いていると、インプレース位置にデータを書き込み(S132)、その位置に該当するページの補助領域にLPNを書き込み(S133)、終了する。前記インプレース位置とは、既存の物理・論理マッピング情報によって予め指定されたデフォルト(default)の位置をいう。即ち、既に定義されたマッピング情報によって特定のLPNを有するページのオフセットには特定のLSNを有するセクターが書き込まれるように予め設定された位置を意味している。
このように、データは、自分のインプレース位置に書き込むことを基本とするが、他のデータが既に書き込まれており、インプレース位置に書き込めない場合には、空いている物理ページのうち、上位のページから順次書き込めば良い。
前記ステップS130での判断の結果、LPNが使用されたことがあると、有効なLPNを有するページ、即ち、前記使用されたLPNを有するページが複数あれば、最も最近に生成されたページにオフセットが一致するセクター及び次のセクターが空いているどうかを判断し(S140)、空いていると、オフセットが一致するセクターの位置にデータを書き込み(S150)、終了する。ここで、オフセットとは、1つのページにてセクターが占めるように決まっている位置を意味するもので、例えば、あるページにD4、D5、D6及びD7が順に書き込まれることで予め定義されていれば、D4、D5、D6及びD7は、それぞれ0、1、2及び3をオフセット値として有することになる。
本発明においては、多重セクター書き込みにおいて高い性能を得るために、該当のセクターが空いていても、当該のページの次のセクターが全て空いていないと、前記該当のセクターにデータを書き込まないようにしている。これは、殆どの場合、連続したセクターへの書き込み要求が多く、次のセクターが空いていない状態で該当のセクターへの書き込み演算を行った後、その次の要求が連続したセクターに要求されると、費用が高い更新演算を行わなければならないためである。しかし、多重セクター演算の場合、予め何個のセクターを使用するかを明らかにする応用(application)もあり得るが、この場合には、必ずしも次のセクターが全て空いている必要はなく、前記ステップS140でオフセットが一致するセクターが存在するかを判断するだけでも良い。
前記ステップS131での判断の結果、インプレース位置のページが空いていないと、現在のブロックにて空いているページが存在するかどうかを判断し(S141)、空いているページが存在しないと、次の新しいブロックを割り当てた後(S142)、新しいブロックのインプレース位置にデータを書き込み(S132)、その位置に該当するページの補助領域にLPNを書き込み(S133)、終了する。
前記ステップS141での判断の結果、空いているページが存在すると、空いているページのうちの1つのページを選択し、前記LSNとオフセットが一致するセクターの位置にデータを書き込み(S151)、前記選択されたページの補助領域にLPNを書き込む(S160)。前記空いているページのうちの1つを選択するのは、様々な方法を用いて行うことができる。即ち、上位ページから順次空いているページを選択することができ、その逆に選択することも可能である。最後に、1対1ページマッピングを維持するために、既存の有効なLPNに該当するデータをコピーしてきた後(S170)、終了する。
図8は、本発明による1対1ページマッピング方法の実例を示す図である。大ブロックフラッシュメモリは、多重セクター書き込みが可能であるため、4つのデータを同時に書き込めるものとする。先ず、4つのデータD0、D1、D2及びD3を現在のブロックの一番目のページ(PPN=0)に順に書き込み(S132)、補助領域にLPN値として0を書き込む(S133)。次いで、次の4つのデータD4、D5、D6及びD7を二番目のページ(PPN=1)に順に書き込み(S132)、補助領域にLPN値として1を書き込む(S133)。次に、D0及びD1を書き込む場合には、該当のLPN(「0」)が書き込まれたことがあるから(S130の例)、有効なLPNを有する一番目のページ(PPN=0)に該当のオフセットを有するセクターが空いているかどうかを判断する(S140)。セクターが空いていないから、次の空いているページ(PPN=2)の一番目のセクターにD0を、二番目のセクターにD1を書き込み(S151)、補助領域に該当のLPN(「0」)を書き込む(S160)。かつ、既存の有効なLPNに該当する残りのデータ(PPN=0に書き込まれた残りのデータ)、即ち、D2及びD3をオフセットに合わせて現在のページ(PPN=2)にコピーする(S170)。
次に、D3を書き込む場合には、次の空いているページ(PPN=3)のオフセットが一致するセクター位置、即ち、四番目のセクターにD3を書き込み(S151)、該当のLPN(「0」)を書き込んだ後(S160)、三番目のページ(PPN=2)から残りのデータ、即ち、D0、D1及びD2をオフセットに合わせて現在のページ(PPN=3)にコピーする。
二番目の方法は、1対nページマッピング方法であり、図9にそのフローチャートを示す図である。一番目の方法とは異なり、このマッピング方法は、1つのブロック内に有効なページが1つ以上存在できるようにする方法である。即ち、該当のLSNのセクターオフセットは維持したまま、物理アドレスに書き込みを行うが、既存の有効なページから残りの各セクターをコピーしてくるステップは存在しない。これは、本方法では、1つ以上のページに有効なデータが存在できることから、既存の有効なLPNに対するデータをコピーするステップが必要なくなるためである。従って、前記図7のフローチャートと比較すると、残りの各ステップは全て同様であるが、図7のステップS170のようなステップが存在しないという点で異なる。
図10は、本発明による1対nページマッピング方法の実例を示す図である。先ず、4つのデータD0、D1、D及びD3を現在のブロックの一番目のページ(PPN=0)に順に書き込み(S232)、補助領域にLPN値として0を書き込む(S233)。かつ、次の4つのデータD4、D5、D6及びD7を二番目のページ(PPN=1)に順に書き込み(S232)、補助領域にLPN値として1を書き込む(S233)。次に、D0及びD1を書き込む場合には、該当のLPN(「0」)が書き込まれたことがあるから(ステップS230の例)、最も最近に書き込まれたLPNを有する一番目のページ(PPN=0)に該当のオフセットを有するセクターが空いているかどうかを判断する(S240)。セクターが空いていないから、次の空いているページ(PPN=2)の一番目セクターにD0を、二番目のセクターにD1を書き込み(S251)、補助領域に該当のLPN(「0」)を書き込む(S260)。
次に、D3を書き込む場合には、ステップS240での判断結果、現在のページ(PPN=2)に該当のオフセットが一致する四番目のセクターが空いているため、前記四番目のセクターにD3を書き込む(S250)。その次に、D1を書き込む場合には、最も最近に書き込まれたLPNを有するページ(PPN=2)にオフセットが一致するセクターが空いていないため(S240のいいえ)、次の空いているページ(PPN=3)のオフセットが一致する二番目のセクターにD1を書き込み(S251)、そのページの補助領域にLPNを書き込んだ後(S260)、終了する。
三番目の方法は、本発明による1対1ページマッピングを応用したセクターマッピング方法である。一番目の方法で提示された1対1ページマッピング方法とほぼ同じであるが、書き込みを行うときにセクターオフセットを維持せず、ページ内で自由に書き込む方法である。即ち、セクターオフセットは維持せずに書き込むが、有効なページは1つのブロックに1つとだけ存在するようにするために、該当のページに書き込みが終わった後、既存の有効なページから残りの各セクターをコピーしてくる方式である。図11は、1対1ページマッピングを応用したセクターマッピング方法を示すフローチャートである。図7の1対1ページマッピングとは異なり、セクターオフセットを維持しないため、セクター単位のマッピング情報を示すLSNを格納する必要がある。このとき、LSN、LPNは、該当のデータと同時に書き込むことが可能である。
先ず、外部ホスト300から作業を行いたい1つ以上のセクターのLSNを入力される(S310)。次いで、前記LSNからLPN及びLBNを計算し、予め定義されているブロック単位のマッピング情報を用いてPBNを決定する(S320)。前記決定されたPBNに該当する物理ブロックに対し以下の過程を行う。先ず、前記物理ブロックに該当のLPNが使用されたことがあるかどうかを判断する(S330)。前記ステップS330での判断の結果、LPNが使用されたことがないと、インプレース(In-place)位置のページが空いているかを判断し(S331)、ページが空いていると、インプレース位置にデータを書き込み(S332)、その位置に該当する前記ページの補助領域にLSNを書き込み、前記補助領域の所定の位置にLPNを書き込み(S333)、終了する。前記その位置に該当する補助領域にLSNを書き込むというのは、物理ページの主領域でデータを書き込んだセクターの位置と対応する補助領域での位置に書き込むことを意味する。例えば、一番目のセクターにデータを書き込んだ場合は、そのデータのLSNは前記補助領域にてLSNを書き込むように割り当てられた4つの桁うち、一番目の桁に書き込むことを意味する。
前記ステップS330での判断の結果、LPNが書き込まれたことがあると、前記書き込まれたLPNのうち最も最近のものを有するページに空いているセクターが存在するかどうかを判断し(S340)、空いているセクターが存在すると、その空いているセクターにデータを書き込み(S350)、その位置に該当する前記ページの補助領域に前記データのLSNを書き込む(S380)。
前記ステップS331での判断の結果、インプレース位置のページが空いていないと、現在のブロックに空いているページが存在するかを判断し(S341)、空いているページが存在しないと、次の新しいブロックを割り当てた後(S342)、新しいブロックのインプレース位置にデータを書き込み(S332)、その位置に該当するページの補助領域にLPN及びLSNを書き込み(S333)、終了する。
前記ステップS341での判断の結果、空いているページが存在すると、空いているページのうち1つのページを選択し、そのページの任意の空いているセクター(通常、一番目のセクター)にデータを書き込み(S351)、前記選択されたページの補助領域にLPN及びLSNを書き込む(S360)。最終に、1対1ページマッピングを維持するために、既存の有効なLSNを有するデータ及びそのデータのLSNをコピーした後(S370)、終了する。前記有効なLSNとは、同一のLSNが存在するとき、最も最近に書き込まれたLSNを意味する。これを検索する方法は、同一のLPNが複数存在するとき、最も最近に書き込まれたLPN(有効なLPN)を有するページを検索することになるが、そのページにも同一のLSNが複数存在することもあるため、該当のLSNのうち、最も最近のLSN(順次データを書き込んだ場合は、一番下位に書き込まれたLSN)を検索すれば良い。
図12は、本発明による1対1ページマッピングを応用したセクターマッピング方法の実例を示す図である。先ず、二つのデータD0、D1を現在のブロックの一番目のページ(PPN=0)に順に書き込み(S332)、そのページの補助領域のLSNを書き込む四桁のうち一番目と二番目の桁に0、1をそれぞれ書き込み、LPNを書き込む部分に0を書き込む(S333)。次いで、次の4つのデータD4、D5、D6及びD7を二番目のページ(PPN=1)に順に書き込み(S332)、補助領域にLSN値として4、5、6及び7をそれぞれ書き込み、LPN値として1を書き込む(S333)。
次に、D0及びD1を書き込む場合には、該当のLPN(「0」)が書き込まれたことがあり(S330の例)、前記LPNを有するページ(PPN=0)に空いているセクターが存在するかを判断する(S340)。ところで、空いているセクターが2つ存在するから、その空いているセクターにそれぞれD0、D1を書き込み(S350)、前記書き込んだD0、D1の位置に合わせて、補助領域のLSNを書き込む部分のうち、三番目及び四番目の桁に0、1をそれぞれ書き込む(S380)。
次に、D3を書き込む場合には、次の空いているページ(PPN=2)の空いているセクター、即ち、一番目のセクターにD3を書き込み(S351)、該当のLSN(「3」)及び該当のLPN(「0」)を書き込んだ後(S360)、一番目のページ(PPN=0)から有効なD0、D1(最も最近に書き込まれたD0及びD1意味する)を現在のページ(PPN=2)の空いているセクターにコピーする。次いで、D0、D1のLSNである0、1を該当の位置、即ち、補助領域のLSNを書き込む部分の二番目、三番目の桁にコピーする(S370)。次に、D1を書き込む場合には、現在のページ(PPN=2)に空いているセクターが存在するため(S340の例)、そのセクターにD1を書き込み(S350)、該当のLSNを書き込む位置に1を書き込む(S380)。
四番目の方法は、本発明による1対nページマッピングを応用したセクターマッピング方法である。二番目の方法とほぼ同じであるが、これもやはり、書き込みを行うとき、セクターオフセットを維持せず、ページ内で自由に書き込む点で異なっている。しかし、1つのブロック内に有効なセクターを有するページが1つ以上存在できるという点でほぼ同じである。ページ内で書き込むときには、一旦、セクターオフセットが一致する位置に書き込み、その桁に既にデータが書き込まれている場合には、左側から空いているセクターを見付けて書き込んで良く、右側から空いているセクターを見付けて書き込んでも良い。図13は、1対nページマッピングを応用したセクターマッピング方法を示すフローチャートである。前記図11のフローチャートと比較すると、残りのステップは、いずれも同じであるが、図11のステップS370のようなステップが存在しないという点のみで異なっている。
図14は、本発明による1対nページマッピング方法の実例を示す図である。先ず、二つのデータD0、D1を現在のブロックの一番目のページ(PPN=0)に順に書き込み(S432)、そのページの補助領域のLSNを書き込む四つの桁のうち、一番目と二番目の桁に0、1をそれぞれ書き込み、LPNを書き込む部分に0を書き込む(S433)。かつ、次の四つのデータD4、D5、D6及びD7を二番目のページ(PPN=1)に順に書き込み(S432)、補助領域にLSN値として4、5、6及び7をそれぞれ書き込み、LPN値として1を書き込む(S433)。
次に、D0及びD1を書き込む場合には、該当のLPN(「0」)が書き込まれたことがあるため(S430の例)、前記LPNを有するページ(PPN=0)に空いているセクターが存在するかを判断する(S440)。ところで、空いているセクターが二つ存在するため、その空いているセクターにそれぞれD0、D1を書き込み(S450)、前記書き込んだD0、D1の位置に合わせて補助領域のLSNを書き込む部分のうち、三番目及び四番目の桁に0、1をそれぞれ書き込む(S480)。
次に、D3を書き込む場合には、次の空いているページ(PPN=2)の空いているセクター、即ち、一番目のセクターにD3を書き込み(S451)、該当のLSN(「3」)及び該当のLPN(「0」)を書き込む(S460)。次に、D1を書き込む場合には、D1を書き込む場合には、現在のページ(PPN=2)に空いているセクターが存在するため(S340の例)、現在のページ(PPN=2)の二番目のセクターにD1を書き込み(S450)、該当のLSNを書き込む位置に1を書き込む(S480)。
五番目及び六番目として挙げられる方法は、ページマッピングを考慮しないセクターマッピング方法であり、ページの補助領域にLPNを書き込む必要がない。図15は、本発明による五つ番目の方法であって、オフセット一致セクターマッピング方法を示すフローチャートである。この方法は、セクターオフセットのみを維持し、空いているセクターを検索して書き込む方法である。
先ず、外部ホスト300から作業を行いたい1つ以上のセクターのLSNを入力される(S510)。次に、前記LSNからLPN及びLBNを計算し、予め定義されているブロック単位のマッピング情報(mapping information)を用いてPBNを決定する(S520)。前記決定されたPBNに該当する物理ブロックに対し以下の過程を行う。先ず、現在のブロックセクターオフセットが一致し、次に、空いているセクターが存在するかを判断する(S530)。前記ステップS530での判断の結果、空いているセクターが存在すると、そのデータのオフセットが一致するセクターの位置にデータを書き込み(S540)、現在のページの補助領域のLSNを書き込む部分のうち、該当の位置に当該のデータのLSNを書き込み(S550)、終了する。前記S530での判断の結果、空いているセクターが存在しないと、新しいブロックを割り当てた後(S531)、ステップS540及びS550を行い、終了する。
図16は、本発明によるオフセット一致セクターマッピング方法の実例を示す図である。先ず、D0及びD1を一番目のページ(PPN=0)の一番目、二番目のセクターにそれぞれ書き込み(S540)、補助領域のLSNを書き込む部分のうち該当の桁に0、1を書き込む(S550)。次に、D4、D5、D6及びD7を書き込む場合には、前記一番目のページ(PPN=0)に四つのセクターを書き込む空間がないから、次のページ(PPN=1)にそれぞれ書き込み(S540)、該当のLSNである4、5、6及び7をそれぞれ書き込む(S550)。次に、D0、D1を書き込む場合には、D0、D1のオフセットのうち、空いているページ(PPN=2)にD0、D1を書き込み(S540)、該当のLSNである0、1をそれぞれ書き込む(S550)。
次に、D3を書き込む場合には、D3のオフセットのうち、空いているページ(PPN=0)にD3を書き込み(S540)、該当のLSNである3を書き込む(S550)。その後、D1を書き込む場合には、D1のオフセットのうち空いているページ(PPN=3)にD1を書き込み(S540)、該当のLSNである1を書き込む(S550)。
最終に、D6及びD7を書き込む場合には、D6及びD7のオフセットである三番目及び四番目のセクターが空いているページ(PPN=2)にD6、D7を書き込み(S540)、該当のLSNである6、7を書き込む(S550)。
図17は、六番目の方法であって、オフセット不一致セクターマッピング方法を示すフローチャートである。この方法は、ページ及びセクターオフセットの何れにも拘らず、空いているセクターに順に書き込む方法である。
先ず、外部ホスト300から作業を行いたい1つ以上のセクターのLSNを入力される(S610)。かつ、前記LSNからLPN及びLBNを計算し、予め定義されているブロック単位のマッピング情報(mapping information)を用いてPBNを決定する(S620)。前記決定されたPBNに該当する物理ブロックに対し以下の過程を行う。先ず、現在のブロックにてオフセットを考慮することなく、単に空いているセクターが存在するかを判断する(S630)。前記ステップS630での判断の結果、空いているセクターが存在すると、その空いているセクターにデータを書き込み(S640)、現在のページの補助領域のLSNを書き込む部分のうち、該当の位置にそのデータのLSNを書き込み(S650)、終了する。前記ステップS630での判断の結果、空いているセクターが存在しないと、新しいブロックを割り当てた後(S631)、ステップS640及びS650を行い、終了する。
図18は、本発明によるオフセット不一致セクターマッピング方法の実例を示す図である。先ず、D0及びD1を一番目のページ(PPN=0)の一番目、二番目のセクターにそれぞれ書き込み(S640)、補助領域のLSNを書き込む部分のうち、該当の桁に0、1を書き込む(S650)。次に、D4、D5、D6及びD7を書き込む場合には、前記一番目のページ(PPN=0)に四つのセクターを書き込む空間がないから、次のページ(PPN=1)にこれをそれぞれ書き込み(S640)、該当のLSNである4、5、6及び7をそれぞれ書き込む(S650)。次に、D0、D1を書き込む場合には、二つのセクターが空いている一番目のページ(PPN=0)にD0、D1を書き込み(S640)、該当のLSNである0、1をそれぞれ書き込む(S650)。
次に、D3を書き込む場合には、一番目のページ(PPN=0)及び二番目のページ(PPN=1)には、空いているセクターがないから、次のページ(PPN=2)の一番目のセクターにD3を書き込み(S640)、該当のLSNである3を書き込む(S650)。その後、D1を書き込む場合には、前記ページ(PPN=2)の二番目のセクターにD1を書き込み(S640)、該当のLSNである1を書き込む(S650)。最終に、D6及びD7を書き込む場合には、前記ページ(PPN=2)に未だ二つのセクターが空いているから、そのページの三番目、四番目のセクターにD6、D7をそれぞれ書き込み(S640)、該当のLSNである6、7を書き込む(S650)。
これまで、本発明によるマルチセクター書き込みが可能な大ブロックフラッシュメモリに効率よくデータを書き込む方法として、6つの方式を提案した。フラッシュメモリはページ単位のI/Oを許容しているため、多重セクター書き込み演算の場合には、フラッシュメモリのバッファを用いて各セクターをバッファリングした後、一度の演算で2つ以上のセクターへの書き込み演算を一度のフラッシュ書き込み演算で行うことができる。
このような書き込み方法に対応した読み出しアルゴリズムは、書き込みアルゴリズムの逆に行われる。一番目方法や二番目の方法のページマッピングにおいて、物理セクターオフセットは、論理アドレスのセクターオフセットと一致するため、読み出し要求されたセクターが位置したページを検索し、入力セクターのオフセットのデータを読み出すと良い。このとき、二番目の方法では、有効なページが一つ以上存在することがあるから、書き込みアルゴリズムの逆に最新のデータを検索することになる。
三番目や四番目の方法では、一旦、該当のページを検索した後、LSNを検索して該当のセクターを見付ける。このとき、同一のLSNが2つ以上存在する場合には、書き込みアルゴリズムの逆に有効なセクターを検索する。
五番目の方法では、セクターオフセットが一致するため、書き込みアルゴリズムの逆に有効なセクターを見付けると良い。かつ、六番目の方法では、LSN値から有効なセクターを見付けるが、このとき、同様に1つ以上のLSNが存在する場合には、書き込みアルゴリズムの逆に有効なセクターを見付ければ良い。
[論理・物理マッピング情報管理方法]
以下に、論理・物理マッピング情報をフラッシュメモリに格納し、管理する方法の動作を説明する。本手法は、特に、大ブロックフラッシュメモリのみならず、小ブロックフラッシュメモリにも適用できることは言うまでも無い。
図19(a)は、論理・物理マッピング情報を一定の大きさのセグメント(切れ)に分けたものを示す図である。1つのマップセグメントと1つの補助領域とをまとめた1つの単位をマップセグメントユニットと定義している。1つのマップセグメントの大きさは、フラッシュメモリのページの主領域の大きさと同様であっても良く、フラッシュメモリのページの主領域に複数のセグメントが存在しても良く、1つのセグメントがフラッシュメモリの複数のページの主領域に格納されても良い。マッピング情報の一部を更新する必要がある場合、全体のマッピング情報を何れも更新するのは、システムの性能を低下させることもあり、所定の大きさのセグメントにマッピング情報を分け、更新する必要のあるセグメントのみを更新することにする。
もし、図19(b)に示すように、マップセグメントの大きさがページの主領域の大きさと同じであるとし、1つのブロックに対する論理・物理マッピング情報に2Bが所要されるとするとき、小ブロックフラッシュメモリでは、1つのページ当たりに512Bの主領域を有することになり、1つのマップセグメントには256個のブロックに対するマッピング情報を格納することが可能となる。かつ、1つのブロックは、32個のページを有することから、1つのマップブロックには32個のマップセグメントユニットを格納することができる。従って、全体の論理・物理マッピング情報がN個のマップセグメントに分けて格納できるのであれば、32-N個の空いているユニットが存在することになる。初期にN個のマップセグメントユニットが図19(a)に示すように書き込まれている状態でマッピング情報の変更が発生したが、その変更は、マップセグメント#1で発生したとすれば、図19(c)に示すように、次の空いているユニットに変更されたマップセグメント#1を書き込めば良い。かつ、1つのブロック内にマップセグメント番号(#)の同じ複数のマップセグメントが存在すると、最後に書き込まれたマップセグメントのみが有効であると判断する。
それぞれのマップセグメントユニットは、マップセグメントの他に、マップセグメントに関する付加情報を有する補助領域を含んでいるが、小ブロックフラッシュメモリでは16Bを使用することができる。前記論理・物理マッピング情報は、前述のように、ブロック単位のマッピング情報であっても良いが、これに限らず、セクター単位のマッピング情報であっても良く、大ブロックフラッシュメモリでのページ単位のマッピング情報であっても良いのはいうまでもない。即ち、前記論理・物理マッピング情報は、論理ブロック番号と物理ブロック番号との間のマッピング情報であっても良く、論理ページ番号と物理ページ番号との間のマッピング情報であっても良く、論理セクター番号と物理セクター番号との間のマッピング情報であっても良い。
図20は、割り当てられたM個のマップブロックを示す図である。マップブロックは、データブロックとは別に所定の個数(M個)だけ割り当てて置き、ここに何れの論理・物理マッピング情報を書き込み可能にしている。書き込むマッピング情報の大きさが1つのブロックを超えないと(以下では、このような場合を仮定する)、1つのブロックのみ割り当てても動作が可能である。しかし、書き込みまたは消去作業を行う途中で突然電源が切れる可能性のあるシステムの場合には、新たに更新されるマッピングテーブルが完全に書き込まれるまで前のマッピングテーブルを消去せずに残して置くのが安全である。従って、2つ以上のブロックを割り当てて置けば、突然の電源の切断時にもマッピングテーブル情報を安全に管理することが可能となる。
図21は、本発明によるマップセグメントユニット400において、補助領域の構成を示す図である。前記補助領域(spare area)420には、論理・物理マッピング情報を安全に保護するための付加情報を書き込む。前記付加情報は、有効なマッピング情報に係るマップセグメントユニットを既存のマップブロックから新しいマップブロックにコピーするとき、番号を増加して書き込むエイジ(age)421、分けられて格納されたマップセグメントに関するシリアル番号を表示するセグメント番号(segment number)422、前記マップブロックを消去する途中でエラーがあったかどうかを知らせるシグネチャ(signature)423と、マップセグメントを書き込む途中でエラーが発生していなかったことを確認させる有効マーク(valid mark)424とから構成される。これらは、マップセグメントを格納するときに共に書き込まれる。
エイジ421は、複数のブロックのうち有効ブロックを検索するときに使用されるもので、ブロック当たり一度書き込めば良いが、本実施形態においては、実際にブロックの全てのマップセグメントユニットに書き込むことにしている。マッピング情報に係るマップセグメント410が更新される場合、ブロック内の一番目の空いているユニットに書き込み、更新されるマッピング情報に係るマップセグメント番号(segment number)422を共に書き込む。複数のマップセグメント410の更新により、それ以上ブロック内に空いているユニットが存在しない場合には、次の空いているマップブロックがあれば、そこに書き込み、空いているマップブロックがないと、有効でないマップブロックを消去した後、前のブロックの有効なマッピング情報に係るマップセグメント410を全て移動させ、新しいブロックには前のブロックのエイジ421よりも高いエイジ421を書き込む。従って、エイジ421の番号が最も大きいマップブロックが有効なことになる。
フラッシュメモリにおいて、前述のように、マッピング情報に係るマップセグメント410を更新する際に、有効なマップセグメント410を検索する方法は次のようになる。本発明では、有効なマッピング情報に係るマップセグメント410を有するブロックは、1つのみ存在することになる。従って、先ず、有効なマッピング情報を有するマップブロックを検索するようになるが、これは、マップブロックのうち、エイジ421が最も大きいブロックとなる。かつ、エイジ421が最も大きいマップブロックにも特定のセグメント番号422を有する複数のマップセグメント410が存在することがあるから、このうち、最も最近に(順次マップセグメントユニットを書き込んで行くときには一番下位に)書き込まれたマップセグメント410を選択すれば良い。
フラッシュメモリに書き込まれる一般のデータ情報は、一部が損失されても残りの部分だけでも使用者所望の作業を行うことができるが、これとは異なり、マッピング情報は、その情報量は少ないが、これが損失された場合、フラッシュメモリに格納された全体のデータが何れも無用になることもある。従って、マッピング情報を安全に保護するのは、極めて重要であると言える。特に、フラッシュメモリは、組み込み型システム(embedded system)またはモバイルデバイス(mobile device)などの応用に多く使用されており、突然の電源の切断に備える対策を必要としている。ところで、電源の切断が問題となる時点は、書き込み演算の途中または消去演算の途中で電源が切断されるときである。本発明では、電源の切断によって有効でなくなるデータを区別するために、シグネチャ(signature)423や有効マーク(valid mark)424という概念を導入している。即ち、マッピング情報に係るマップセグメント410を書き込んた後、常に有効マーク424を書き込むことによって、有効マーク424が書き込まれていないマップセグメント410は、最終まで完全に書き込まれていないとされ、有効でないマップセグメント410として見なされる。
また、マップセグメント410を書き込むときには、1つ以上のビット0を含む所定のバイトのシグネチャ423を共に書き込む。ブロックの消去演算が終了すると、ブロックの各ビットは、いずれも1に初期化される。従って、0に書き込まれていた各データが何れも1に変更されるが、消去する過程で電源が切れることになると、一部のビットは1と変更され、一部は0に残されることになる。従って、有効マーク424はそのまま残っていても、マップセグメント410を含むエイジ421、シグネチャ423などは変更されていることもある。このようになると、消去しようとしていたブロックのエイジ421が変更され、あいにく最も高いエイジ421を有するブロックに変更される可能性もある。例えば、消去する直前にマップブロックのエイジが二進数の「0000101」であったとすれば、マップブロックを消去する過程で前記「0」が「1」に変更され、「1111111」となり、有効なマップブロックのエイジ421よりも大きくなったとすれば、消去する過程を中断したマップブロックが最も大きいエイジ421を有する有効なマップブロックとして誤って認識されることもある。
しかし、ブロックの消去過程中で電源が切れ、エイジ421が変更されたときには、シグネチャ423のビットも1に変更されている可能性が高く、シグネチャが一致しない場合には、消去演算過程中で電源が切れたブロックとして見なすことで、前述した問題を解決することができる。消去演算過程中で電源が切れたかを確認するために、このような方法を用いる場合には、シグネチャの長さやシグネチャがビット0をどれだけ含んでいるかによって区別できる確率が異なることもある。
最終的に、マップブロック内に空いているユニットがない場合、新しいブロックに有効なマップセグメントユニット400をいずれも移動させる作業が必要となるが、このとき、新しいブロックに有効なマップセグメントユニット400を移動させる途中で電源が切れることになると、前のブロックが消去されておらず、二つのマップブロックに有効なマップセグメント410が共に存在することも可能である。しかし、本発明によると、新しいブロックにいずれの有効なマップセグメントユニット400、エイジ421、セグメント番号422、及びシグネチャ423を完全に書き込んでから、有効マーク424を書き込むことになる。従って、新しいブロックにマップセグメントユニット400を移動させる途中で電源が切れることになっても、有効なマップブロックを検索する過程で新しいマップブロックには有効マーク424が存在せず、エイジ421などによって最新のマッピング情報を有すると見られるマップブロックであっても有効でないと判断される。従って、このようなマップブロックは、有効なマップブロックを検索する過程で最初から除かれている。一方、前のマップブロックは、消去されずにそのまま残っており、これが有効なマップブロックとして選択される。従って、最新のマッピング情報は、安全に管理することが可能となる。
以上のように、上記実施の形態を参照して詳細に説明され図示されたが、本発明は、これに限定されるものではなく、このような本発明の基本的な技術的思想を逸脱しない範囲内で、当業界の通常の知識を有する者にとっては、他の多くの変更が可能であろう。また、本発明は、添付の特許請求の範囲により解釈されるべきであることは言うまでもない。
セクターマッピングの一例を示す図である。 従来のブロックマッピングの一例を示す図である。 フラッシュメモリが動作するシステムの全体構造を示すブロック図である。 従来のNAND型の小ブロックフラッシュメモリの構成を示す図である。 従来のNAND型の大ブロックフラッシュメモリの構成を示す図である。 大ブロックフラッシュメモリの読み出し・書き込み単位であるページの基本フォーマットを示す図である。 本発明による1対1ページマッピング過程を示すフローチャートである。 本発明による1対1ページマッピング方法の実例を示す図である。 本発明による1対nページマッピング過程を示すフローチャートである。 本発明による1対nページマッピング方法の実例を示す図である。 1対1ページマッピングを応用したセクターマッピング方法を示すフローチャートである。 本発明による1対1ページマッピングを応用したセクターマッピング方法の実例を示す図である。 本発明による1対nページマッピングを応用したセクターマッピング方法を示すフローチャートである。 本発明による1対nページマッピング方法の実例を示す図である。 本発明によるオフセット一致セクターマッピング方法を示すフローチャートである。 本発明によるオフセット一致セクターマッピング方法の実例を示す図である。 本発明によるオフセット不一致セクターマッピング方法を示すフローチャートである。 本発明によるオフセット不一致セクターマッピング方法の実例を示す図である。 (a)は、マップブロックとマップセグメントとの関係を示す図であり、(b)は、マップセグメントに格納された情報の例を示す図であり、(c)は、マップセグメントが変更された場合の動作を示す図である。 割り当てられた所定数のマップブロックを示す図である。 本発明によるマップセグメントユニットにおける補助領域の構成を示す図である。
符号の説明
300…外部ホスト
311…XIP可能メモリ
312…フラッシュメモリ
313…CPU
400…マップセグメントユニット
410…マップセグメント
420…補助領域
421…エイジ
422…セグメント番号
423…シグネチャ
424…有効マーク

Claims (15)

  1. 複数のセクターからなる複数のページを有するブロックを一つ以上有し、前記セクターまたは前記ページ単位でデータを書き込み、前記ブロック単位でデータを消去するフラッシュメモリにデータを書き込む方法において、
    書き込みたいデータと同じ論理ページ番号を有する物理ページのうちの、最も最近に書き込まれた物理ページに、前記書き込みたいデータを格納できる空いているセクターが存在するかどうかを判断する第1のステップと、
    前記判断の結果、空いているセクターが存在すると、前記物理ページの空いているセクターにデータを書き込み、前記物理ページに前記データに対する論理セクター番号を書き込む第2のステップと、
    前記判断の結果、空いているセクターが存在しないと、空いている物理ページを選択し、空いているセクターにデータを書き込み、前記選択された空いている物理ページに前記データに対する論理ページ番号及び論理セクター番号を書き込む第3のステップと
    を含むことを特徴とするフラッシュメモリにデータを書き込む方法。
  2. 前記第2のステップ及び前記第3のステップで論理セクター番号を書き込むのは、物理ページの主領域でデータを書き込んだセクターの位置と対応する補助領域での位置に書き込むことを特徴とする請求項1に記載のフラッシュメモリにデータを書き込む方法。
  3. 前記第1のステップの前に、前記書き込みたいデータの論理ページ番号が書き込まれたことがあるかを判断し、書き込まれたことがあれば、前記第1のステップを行い、書き込まれたことがなければ、既存の物理・論理マッピング情報に基づいて、予め指定された位置にデータ及びそのデータの論理ページ番号を書き込むステップをさらに含むことを特徴とする請求項1に記載のフラッシュメモリにデータを書き込む方法。
  4. 前記第3のステップで書き込んだ論理ページ番号を有する既存の有効な論理ページに書き込まれたデータのうち、前記第3のステップで書き込んだデータ以外のデータ、及びそのデータの論理セクター番号を前記選択された空いている物理ページにコピーする第4のステップをさらに含むことを特徴とする請求項1に記載のフラッシュメモリにデータを書き込む方法。
  5. 前記データが上位ページから順次書き込まれる場合に、前記有効な論理ページを検索するのは、1つ以上の同じ論理ページ番号を有する論理ページのうち、最も下位のページを検索することにより行われることを特徴とする請求項4に記載のフラッシュメモリにデータを書き込む方法。
  6. 前記データがインプレース優先方式で書き込まれる場合に、前記有効な論理ページを検索するのは、1つ以上の同じ論理ページ番号を有する論理ページのうち、インプレース位置にあるページを除いたページを選定し、前記選定されたページのうち、最も下位のページを検索することでさなれることを特徴とする請求項4に記載のフラッシュメモリにデータを書き込む方法。
  7. 複数のセクターからなる複数のページを有するブロックを一つ以上有し、前記セクターまたは前記ページ単位でデータを書き込み、前記ブロック単位でデータを消去するフラッシュメモリにデータを書き込む方法において、
    書き込みたいデータを格納できる空いているセクターが現在のブロックに存在するかどうかを判断する第1のステップと、
    前記判断の結果、空いているセクターが存在すると、前記空いているセクターにデータを書き込み、前記空いているセクターが位置した物理ページと同じ物理ページに前記データに対する論理セクター番号を書き込む第2のステップと
    含み、
    前記空いているセクターは、前記書き込みたいデータとブロック内のセクターオフセットが一致する空いているセクターである
    ことを特徴とするフラッシュメモリにデータを書き込む方法。
  8. 前記論理セクター番号を書き込むのは、物理ページの主領域でデータを書き込んだセクターの位置と対応する補助領域での位置に書き込むことを特徴とする請求項7に記載のフラッシュメモリにデータを書き込む方法。
  9. 前記第1のステップは、前記書き込みたいデータと前記オフセットが一致し、次のセクターが空いている空いたセクターが現在のブロックに存在するかを判断することを特徴とする請求項7に記載のフラッシュメモリにデータを書き込む方法。
  10. 複数のセクターからなる複数のページを有するブロックを一つ以上有し、前記セクターまたは前記ページ単位でデータを書き込み、前記ブロック単位でデータを消去するフラッシュメモリにおいて、
    書き込みたいデータと同じ論理ページ番号を有する物理ページのうちの、最も最近に書き込まれた物理ページに、前記書き込みたいデータを格納できる空いているセクターが存在するかどうかを判断し、
    前記判断の結果、空いているセクターが存在すると、前記物理ページの空いているセクターにデータを書き込み、前記物理ページに前記データに対する論理セクター番号を書き込み、
    前記判断の結果、空いているセクターが存在しないと、空いている物理ページを選択し、空いているセクターにデータを書き込み、前記選択された空いている物理ページに前記データに対する論理ページ番号及び論理セクター番号を書き込むことを特徴とするフラッシュメモリ。
  11. 前記論理セクター番号を書き込むのは、物理ページの主領域でデータを書き込んだセクターの位置と対応する補助領域での位置に書き込むことを特徴とする請求項10に記載のフラッシュメモリ。
  12. 前記書き込んだ論理ページ番号を有する既存の有効な論理ページに書き込まれたデータのうち、前記書き込んだデータ以外のデータ、及びそのデータの論理セクター番号を前記選択された空いている物理ページにコピーすることを特徴とする請求項10に記載のフラッシュメモリ。
  13. 複数のセクターからなる複数のページを有するブロックを一つ以上有し、前記セクターまたは前記ページ単位でデータを書き込み、前記ブロック単位でデータを消去するフラッシュメモリにおいて、
    書き込みたいデータを格納できる空いているセクターが現在のブロックに存在するかどうかを判断し、空いているセクターが存在すると、前記空いているセクターにデータを書き込み、前記空いているセクターが位置した物理ページと同じ物理ページに前記データに対する論理セクター番号を書き込むと共に、
    前記空いているセクターは、前記書き込みたいデータとブロック内のセクターオフセットが一致する空いているセクターである
    ことを特徴とするフラッシュメモリ。
  14. 前記論理セクター番号を書き込むのは、物理ページの主領域でデータを書き込んだセクターの位置と対応する補助領域での位置に書き込むことを特徴とする請求項13に記載のフラッシュメモリ。
  15. 前記空いているセクターが現在のブロックに存在するかを判断することは、前記書き込みたいデータと前記オフセットが一致し、次のセクターが空いている空いたセクターが現在のブロックに存在するかを判断することであることを特徴とする請求項13に記載のフラッシュメモリ。
JP2004306003A 2003-12-30 2004-10-20 フラッシュメモリのアドレスマッピング方法、マッピング情報管理方法及びこれらの方法を用いたフラッシュメモリ Active JP3977370B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2003-0100488A KR100526188B1 (ko) 2003-12-30 2003-12-30 플래시 메모리의 주소 사상 방법, 사상 정보 관리 방법 및상기 방법을 이용한 플래시 메모리

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2007098644A Division JP2007184005A (ja) 2003-12-30 2007-04-04 フラッシュメモリのアドレスマッピング方法、マッピング情報管理方法及びこれらの方法を用いたフラッシュメモリ

Publications (2)

Publication Number Publication Date
JP2005196736A JP2005196736A (ja) 2005-07-21
JP3977370B2 true JP3977370B2 (ja) 2007-09-19

Family

ID=34567858

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2004306003A Active JP3977370B2 (ja) 2003-12-30 2004-10-20 フラッシュメモリのアドレスマッピング方法、マッピング情報管理方法及びこれらの方法を用いたフラッシュメモリ
JP2007098644A Pending JP2007184005A (ja) 2003-12-30 2007-04-04 フラッシュメモリのアドレスマッピング方法、マッピング情報管理方法及びこれらの方法を用いたフラッシュメモリ

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2007098644A Pending JP2007184005A (ja) 2003-12-30 2007-04-04 フラッシュメモリのアドレスマッピング方法、マッピング情報管理方法及びこれらの方法を用いたフラッシュメモリ

Country Status (5)

Country Link
US (1) US7702844B2 (ja)
EP (1) EP1550952A3 (ja)
JP (2) JP3977370B2 (ja)
KR (1) KR100526188B1 (ja)
CN (2) CN1295622C (ja)

Families Citing this family (140)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8452938B1 (en) * 2004-12-30 2013-05-28 Azul Systems, Inc. Garbage collection with memory quick release
WO2007058617A1 (en) * 2005-11-17 2007-05-24 Chee Keng Chang A controller for non-volatile memories, and methods of operating the memory controller
JP4633802B2 (ja) * 2005-12-09 2011-02-16 パナソニック株式会社 不揮発性記憶装置及びデータ読み出し方法及び管理テーブル作成方法
CN100456263C (zh) * 2005-12-30 2009-01-28 深圳市桑达实业股份有限公司 在税控收款机中使用闪存时处理坏块的方法
KR100703806B1 (ko) 2006-02-16 2007-04-09 삼성전자주식회사 비휘발성 메모리, 이를 위한 데이터 유효성을 판단하는장치 및 방법
KR100781517B1 (ko) * 2006-02-16 2007-12-03 삼성전자주식회사 비휘발성 메모리의 맵핑 정보 관리 장치 및 방법
JP2007233838A (ja) * 2006-03-02 2007-09-13 Toshiba Corp メモリシステムの制御方法
KR100736103B1 (ko) 2006-06-27 2007-07-06 삼성전자주식회사 비휘발성 메모리, 상기 비휘발성 메모리의 데이터 유효성을판단하는 장치 및 방법
TW200805394A (en) * 2006-07-07 2008-01-16 Alcor Micro Corp Memory storage device and the read/write method thereof
KR100809319B1 (ko) * 2006-09-13 2008-03-05 삼성전자주식회사 플래시 메모리에서 연속한 섹터 쓰기 요청에 대해 원자성을제공하는 장치 및 방법
KR100843133B1 (ko) * 2006-09-20 2008-07-02 삼성전자주식회사 플래시 메모리에서 매핑 정보 재구성을 위한 장치 및 방법
KR100806343B1 (ko) * 2006-10-19 2008-02-27 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 맵핑테이블 관리 방법
KR100843135B1 (ko) 2006-11-20 2008-07-02 삼성전자주식회사 비휘발성 메모리 관리 방법 및 장치
KR100825802B1 (ko) * 2007-02-13 2008-04-29 삼성전자주식회사 기입 데이터의 논리적 페이지보다 이전 논리적 페이지들을가지는 데이터들을 데이터 블록으로부터 복사하는 불휘발성메모리 장치의 데이터 기입 방법
KR100817087B1 (ko) * 2007-02-13 2008-03-27 삼성전자주식회사 플래시 메모리를 구비하는 스토리지 장치에서의 버퍼 캐시운용 방법
DE112007003388T5 (de) 2007-03-21 2009-12-24 Intel Corporation, Santa Clara Verfahren zum Verwalten von Sektoren eines nicht-flüchtigen Speichers
KR100889781B1 (ko) * 2007-04-30 2009-03-20 삼성전자주식회사 멀티-비트 데이터를 저장하는 메모리 시스템, 그것의프로그램 방법, 그것을 포함한 컴퓨팅 시스템
CN101398759B (zh) * 2007-06-29 2012-06-13 北京中星微电子有限公司 避免启动代码在数据段搬移时自我覆盖的方法
WO2009095902A2 (en) 2008-01-31 2009-08-06 Densbits Technologies Ltd. Systems and methods for handling immediate data errors in flash memory
WO2009037697A2 (en) 2007-09-20 2009-03-26 Densbits Technologies Ltd. Improved systems and methods for determining logical values of coupled flash memory cells
US8694715B2 (en) 2007-10-22 2014-04-08 Densbits Technologies Ltd. Methods for adaptively programming flash memory devices and flash memory systems incorporating same
US8443242B2 (en) 2007-10-25 2013-05-14 Densbits Technologies Ltd. Systems and methods for multiple coding rates in flash devices
WO2009072103A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated bch codes and/or designation of 'first below' cells
WO2009072105A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. A low power chien-search based bch/rs decoding system for flash memory, mobile communications devices and other applications
US8453022B2 (en) 2007-12-05 2013-05-28 Densbits Technologies Ltd. Apparatus and methods for generating row-specific reading thresholds in flash memory
WO2009074978A2 (en) 2007-12-12 2009-06-18 Densbits Technologies Ltd. Systems and methods for error correction and decoding on multi-level physical media
US8276051B2 (en) * 2007-12-12 2012-09-25 Densbits Technologies Ltd. Chien-search system employing a clock-gating scheme to save power for error correction decoder and other applications
US8327246B2 (en) 2007-12-18 2012-12-04 Densbits Technologies Ltd. Apparatus for coding at a plurality of rates in multi-level flash memory systems, and methods useful in conjunction therewith
KR100950281B1 (ko) * 2008-02-28 2010-03-31 아주대학교산학협력단 플래시 메모리 시스템 및 플래시 메모리의 데이터 연산방법
US8972472B2 (en) 2008-03-25 2015-03-03 Densbits Technologies Ltd. Apparatus and methods for hardware-efficient unbiased rounding
JP2009282678A (ja) * 2008-05-21 2009-12-03 Hitachi Ltd フラッシュメモリモジュール及びストレージシステム
US8555086B2 (en) * 2008-06-30 2013-10-08 Intel Corporation Encrypting data on a non-volatile memory
JP5180726B2 (ja) * 2008-07-31 2013-04-10 株式会社日立製作所 記憶装置およびデータ書き込み制御方法
KR20100021868A (ko) * 2008-08-18 2010-02-26 삼성전자주식회사 플래시 메모리 장치를 위한 버퍼 캐쉬 관리 방법
US8332725B2 (en) 2008-08-20 2012-12-11 Densbits Technologies Ltd. Reprogramming non volatile memory portions
CN101676882B (zh) * 2008-09-16 2013-01-16 美光科技公司 存储器装置的内嵌映射信息
KR100965051B1 (ko) 2008-10-01 2010-06-21 서울시립대학교 산학협력단 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및그 장치
US8285970B2 (en) * 2008-11-06 2012-10-09 Silicon Motion Inc. Method for managing a memory apparatus, and associated memory apparatus thereof
KR101510120B1 (ko) 2008-11-21 2015-04-10 삼성전자주식회사 메모리 장치 및 메모리 장치의 관리 방법
KR101022001B1 (ko) * 2008-12-08 2011-03-17 주식회사 이스트후 플래시 메모리 시스템 및 플래시 메모리의 관리 방법
JP2010165251A (ja) * 2009-01-16 2010-07-29 Toshiba Corp 情報処理装置及びプロセッサ並びに情報処理方法
US8819385B2 (en) * 2009-04-06 2014-08-26 Densbits Technologies Ltd. Device and method for managing a flash memory
US8458574B2 (en) 2009-04-06 2013-06-04 Densbits Technologies Ltd. Compact chien-search based decoding apparatus and method
US8566510B2 (en) 2009-05-12 2013-10-22 Densbits Technologies Ltd. Systems and method for flash memory management
US8296503B2 (en) * 2009-05-26 2012-10-23 Mediatek Inc. Data updating and recovering methods for a non-volatile memory array
US8995197B1 (en) 2009-08-26 2015-03-31 Densbits Technologies Ltd. System and methods for dynamic erase and program control for flash memory device memories
US8305812B2 (en) 2009-08-26 2012-11-06 Densbits Technologies Ltd. Flash memory module and method for programming a page of flash memory cells
US9330767B1 (en) 2009-08-26 2016-05-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory module and method for programming a page of flash memory cells
US8868821B2 (en) 2009-08-26 2014-10-21 Densbits Technologies Ltd. Systems and methods for pre-equalization and code design for a flash memory
US8730729B2 (en) 2009-10-15 2014-05-20 Densbits Technologies Ltd. Systems and methods for averaging error rates in non-volatile devices and storage systems
US8724387B2 (en) 2009-10-22 2014-05-13 Densbits Technologies Ltd. Method, system, and computer readable medium for reading and programming flash memory cells using multiple bias voltages
US20110231713A1 (en) * 2009-11-04 2011-09-22 Hitachi, Ltd. Flash memory module
US8626988B2 (en) 2009-11-19 2014-01-07 Densbits Technologies Ltd. System and method for uncoded bit error rate equalization via interleaving
US9229970B2 (en) * 2009-12-07 2016-01-05 International Business Machines Corporation Methods to minimize communication in a cluster database system
US9037777B2 (en) 2009-12-22 2015-05-19 Densbits Technologies Ltd. Device, system, and method for reducing program/read disturb in flash arrays
US8607124B2 (en) 2009-12-24 2013-12-10 Densbits Technologies Ltd. System and method for setting a flash memory cell read threshold
US8341502B2 (en) 2010-02-28 2012-12-25 Densbits Technologies Ltd. System and method for multi-dimensional decoding
US9104610B2 (en) 2010-04-06 2015-08-11 Densbits Technologies Ltd. Method, system and medium for analog encryption in a flash memory
US8527840B2 (en) 2010-04-06 2013-09-03 Densbits Technologies Ltd. System and method for restoring damaged data programmed on a flash device
US8745317B2 (en) 2010-04-07 2014-06-03 Densbits Technologies Ltd. System and method for storing information in a multi-level cell memory
US9021177B2 (en) 2010-04-29 2015-04-28 Densbits Technologies Ltd. System and method for allocating and using spare blocks in a flash memory
US8621321B2 (en) 2010-07-01 2013-12-31 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
US8539311B2 (en) 2010-07-01 2013-09-17 Densbits Technologies Ltd. System and method for data recovery in multi-level cell memories
US20120008414A1 (en) 2010-07-06 2012-01-12 Michael Katz Systems and methods for storing, retrieving, and adjusting read thresholds in flash memory storage system
CN102375779B (zh) * 2010-08-16 2015-08-19 深圳市朗科科技股份有限公司 一种数据处理方法以及数据处理模块
US8964464B2 (en) 2010-08-24 2015-02-24 Densbits Technologies Ltd. System and method for accelerated sampling
US8508995B2 (en) 2010-09-15 2013-08-13 Densbits Technologies Ltd. System and method for adjusting read voltage thresholds in memories
US9063878B2 (en) 2010-11-03 2015-06-23 Densbits Technologies Ltd. Method, system and computer readable medium for copy back
US8850100B2 (en) 2010-12-07 2014-09-30 Densbits Technologies Ltd. Interleaving codeword portions between multiple planes and/or dies of a flash memory device
US10079068B2 (en) 2011-02-23 2018-09-18 Avago Technologies General Ip (Singapore) Pte. Ltd. Devices and method for wear estimation based memory management
US8693258B2 (en) 2011-03-17 2014-04-08 Densbits Technologies Ltd. Obtaining soft information using a hard interface
US8990665B1 (en) 2011-04-06 2015-03-24 Densbits Technologies Ltd. System, method and computer program product for joint search of a read threshold and soft decoding
CN102736981B (zh) * 2011-04-08 2016-02-03 航天信息股份有限公司 提高nor flash擦写寿命的方法
US9372792B1 (en) 2011-05-12 2016-06-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9195592B1 (en) 2011-05-12 2015-11-24 Densbits Technologies Ltd. Advanced management of a non-volatile memory
US9110785B1 (en) 2011-05-12 2015-08-18 Densbits Technologies Ltd. Ordered merge of data sectors that belong to memory space portions
US9396106B2 (en) 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9501392B1 (en) 2011-05-12 2016-11-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of a non-volatile memory module
US8996790B1 (en) 2011-05-12 2015-03-31 Densbits Technologies Ltd. System and method for flash memory management
US8667211B2 (en) 2011-06-01 2014-03-04 Densbits Technologies Ltd. System and method for managing a non-volatile memory
US8588003B1 (en) 2011-08-01 2013-11-19 Densbits Technologies Ltd. System, method and computer program product for programming and for recovering from a power failure
CN102955741A (zh) * 2011-08-30 2013-03-06 联咏科技股份有限公司 存储器装置及其写入方法
US9417803B2 (en) 2011-09-20 2016-08-16 Apple Inc. Adaptive mapping of logical addresses to memory devices in solid state drives
US8553468B2 (en) 2011-09-21 2013-10-08 Densbits Technologies Ltd. System and method for managing erase operations in a non-volatile memory
CN102541753B (zh) * 2011-12-29 2015-08-19 上海爱信诺航芯电子科技有限公司 一种嵌入式存储器的读写优化方法
CN102609358B (zh) * 2012-01-12 2014-12-03 记忆科技(深圳)有限公司 聚集静态数据的方法及其固态硬盘
JP5687639B2 (ja) * 2012-02-08 2015-03-18 株式会社東芝 コントローラ、データ記憶装置及びプログラム
US8947941B2 (en) 2012-02-09 2015-02-03 Densbits Technologies Ltd. State responsive operations relating to flash memory cells
US8996788B2 (en) 2012-02-09 2015-03-31 Densbits Technologies Ltd. Configurable flash interface
CN102662858B (zh) * 2012-03-08 2015-03-25 上海爱信诺航芯电子科技有限公司 一种扩展sram容量的虚拟存储方法
US8996793B1 (en) 2012-04-24 2015-03-31 Densbits Technologies Ltd. System, method and computer readable medium for generating soft information
US8838937B1 (en) 2012-05-23 2014-09-16 Densbits Technologies Ltd. Methods, systems and computer readable medium for writing and reading data
US8879325B1 (en) 2012-05-30 2014-11-04 Densbits Technologies Ltd. System, method and computer program product for processing read threshold information and for reading a flash memory module
CN102831072B (zh) * 2012-08-10 2016-03-02 深圳市江波龙电子有限公司 闪存设备及其管理方法、数据读写方法及读写装置
KR101993704B1 (ko) 2012-08-24 2019-06-27 삼성전자주식회사 플래시 메모리를 기반으로 하는 저장 장치 및 플래시 메모리를 제어하는 메모리 컨트롤러의 쓰기 메모리 블록 할당 방법
US9921954B1 (en) * 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller
US9368225B1 (en) 2012-11-21 2016-06-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Determining read thresholds based upon read error direction statistics
US9069659B1 (en) 2013-01-03 2015-06-30 Densbits Technologies Ltd. Read threshold determination using reference read threshold
US20140281132A1 (en) * 2013-03-15 2014-09-18 Marielle Bundukin Method and system for ram cache coalescing
KR101453313B1 (ko) * 2013-03-25 2014-10-22 아주대학교산학협력단 플래시 메모리 기반의 페이지 주소 사상 방법 및 시스템
US9136876B1 (en) 2013-06-13 2015-09-15 Densbits Technologies Ltd. Size limited multi-dimensional decoding
US9489294B2 (en) * 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9489300B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9489299B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9413491B1 (en) 2013-10-08 2016-08-09 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for multiple dimension decoding and encoding a message
US9397706B1 (en) 2013-10-09 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for irregular multiple dimension decoding and encoding
US9348694B1 (en) 2013-10-09 2016-05-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9786388B1 (en) 2013-10-09 2017-10-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9390008B2 (en) 2013-12-11 2016-07-12 Sandisk Technologies Llc Data encoding for non-volatile memory
CN103617101A (zh) * 2013-12-12 2014-03-05 北京旋极信息技术股份有限公司 一种掉电保护方法及装置
WO2015096698A1 (zh) * 2013-12-24 2015-07-02 飞天诚信科技股份有限公司 一种Flash的数据写入和读取方法
KR102252419B1 (ko) 2014-01-09 2021-05-14 한국전자통신연구원 플래시 메모리 장치를 위한 주소변환 시스템 및 그 방법
US9536612B1 (en) 2014-01-23 2017-01-03 Avago Technologies General Ip (Singapore) Pte. Ltd Digital signaling processing for three dimensional flash memory arrays
US10120792B1 (en) 2014-01-29 2018-11-06 Avago Technologies General Ip (Singapore) Pte. Ltd. Programming an embedded flash storage device
US9542262B1 (en) 2014-05-29 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Error correction
KR102430198B1 (ko) 2014-06-12 2022-08-05 삼성전자주식회사 플래시 저장 장치의 어드레스 매핑 테이블 정리 방법
US9892033B1 (en) 2014-06-24 2018-02-13 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of memory units
US9584159B1 (en) 2014-07-03 2017-02-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Interleaved encoding
US9972393B1 (en) 2014-07-03 2018-05-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Accelerating programming of a flash memory module
US9449702B1 (en) 2014-07-08 2016-09-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Power management
US9524211B1 (en) 2014-11-18 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Codeword management
DE102015200808A1 (de) * 2015-01-20 2016-07-21 Continental Automotive Gmbh Verfahren zur Behandlung von Unterbrechungen der Energieversorgung eines sektorweise löschbaren nichtflüchtigen Datenspeichers, elektronisches System und Computerprogrammprodukt
US10305515B1 (en) 2015-02-02 2019-05-28 Avago Technologies International Sales Pte. Limited System and method for encoding using multiple linear feedback shift registers
CN106095699B (zh) * 2015-03-20 2020-12-01 爱思开海力士有限公司 用于快闪存储器的可扩展spor算法
TWI574274B (zh) * 2015-05-07 2017-03-11 慧榮科技股份有限公司 循環區塊模式下的資料存取方法以及使用該方法的裝置
US10628255B1 (en) 2015-06-11 2020-04-21 Avago Technologies International Sales Pte. Limited Multi-dimensional decoding
US9851921B1 (en) 2015-07-05 2017-12-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory chip processing
TWI601141B (zh) * 2015-08-21 2017-10-01 晨星半導體股份有限公司 快閃記憶體的存取方法及相關的記憶體控制器與電子裝置
US9996463B2 (en) * 2015-11-10 2018-06-12 International Business Machines Corporation Selection and placement of volumes in a storage system using stripes
CN105511583A (zh) * 2015-12-02 2016-04-20 福建星网锐捷网络有限公司 用于存储设备的掉电保护电路及方法
US9954558B1 (en) 2016-03-03 2018-04-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Fast decoding of data stored in a flash memory
KR102611292B1 (ko) * 2016-06-22 2023-12-11 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US11100996B2 (en) * 2017-08-30 2021-08-24 Micron Technology, Inc. Log data storage for flash memory
JP7020989B2 (ja) * 2018-04-23 2022-02-16 株式会社メガチップス 不揮発性記憶装置、メモリ制御装置、及びメモリ制御方法
CN110888823B (zh) * 2019-11-26 2022-01-21 深圳忆联信息系统有限公司 页扫描效率的提升方法、装置及计算机设备
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11650932B2 (en) 2020-10-25 2023-05-16 Western Digital Technologies, Inc. Integrated non-volatile memory assembly with address translation
KR20230100008A (ko) * 2021-12-28 2023-07-05 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
CN114816833B (zh) * 2022-04-15 2023-07-18 巨翊科技(上海)有限公司 一种flash数据的写入方法、装置以及系统

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2251323B (en) * 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
US5359570A (en) 1992-11-13 1994-10-25 Silicon Storage Technology, Inc. Solid state peripheral storage device
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
JPH08137634A (ja) 1994-11-09 1996-05-31 Mitsubishi Electric Corp フラッシュディスクカード
JP3464836B2 (ja) * 1995-01-19 2003-11-10 富士通株式会社 記憶装置のメモリ管理装置
JP3706167B2 (ja) 1995-02-16 2005-10-12 株式会社ルネサステクノロジ 半導体ディスク装置
JPH09185551A (ja) * 1996-01-08 1997-07-15 Mitsubishi Electric Corp 半導体記憶装置
US5937425A (en) 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
KR100577380B1 (ko) * 1999-09-29 2006-05-09 삼성전자주식회사 플래시 메모리와 그 제어 방법
KR100644602B1 (ko) 2000-10-11 2006-11-10 삼성전자주식회사 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
KR100389867B1 (ko) 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
TW539946B (en) 2001-08-07 2003-07-01 Solid State System Company Ltd Window-based flash memory storage system, and the management method and the access method thereof
JP2003058417A (ja) * 2001-08-21 2003-02-28 Matsushita Electric Ind Co Ltd 記憶装置
US6760805B2 (en) 2001-09-05 2004-07-06 M-Systems Flash Disk Pioneers Ltd. Flash management system for large page size
US6678785B2 (en) * 2001-09-28 2004-01-13 M-Systems Flash Disk Pioneers Ltd. Flash management system using only sequential write
US6711663B2 (en) 2001-11-15 2004-03-23 Key Technology Corporation Algorithm of flash memory capable of quickly building table and preventing improper operation and control system thereof
KR100449708B1 (ko) * 2001-11-16 2004-09-22 삼성전자주식회사 플래시 메모리 관리방법
JP4034971B2 (ja) 2002-01-21 2008-01-16 富士通株式会社 メモリコントローラおよびメモリシステム装置
JP3826115B2 (ja) 2002-06-20 2006-09-27 東京エレクトロンデバイス株式会社 記憶装置、メモリ管理方法及びプログラム
US7076598B2 (en) * 2003-09-09 2006-07-11 Solid State System Co., Ltd. Pipeline accessing method to a large block memory

Also Published As

Publication number Publication date
JP2005196736A (ja) 2005-07-21
EP1550952A3 (en) 2008-01-23
CN1295622C (zh) 2007-01-17
KR20050070672A (ko) 2005-07-07
US7702844B2 (en) 2010-04-20
US20050144368A1 (en) 2005-06-30
EP1550952A2 (en) 2005-07-06
JP2007184005A (ja) 2007-07-19
CN1637721A (zh) 2005-07-13
KR100526188B1 (ko) 2005-11-04
CN1900919B (zh) 2010-06-16
CN1900919A (zh) 2007-01-24

Similar Documents

Publication Publication Date Title
JP3977370B2 (ja) フラッシュメモリのアドレスマッピング方法、マッピング情報管理方法及びこれらの方法を用いたフラッシュメモリ
US6865658B2 (en) Nonvolatile data management system using data segments and link information
JP4897524B2 (ja) ストレージシステム及びストレージシステムのライト性能低下防止方法
KR100389867B1 (ko) 플래시 메모리 관리방법
KR100684887B1 (ko) 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
KR100706242B1 (ko) 메모리 시스템 및 그것의 런 단위 어드레스 매핑 테이블 구성 방법
US6282605B1 (en) File system for non-volatile computer memory
JP4931810B2 (ja) 最適化されたシーケンシャルなクラスタの管理のためのfat分析
JP3942612B2 (ja) 記憶装置、メモリ管理方法及びプログラム
KR100608602B1 (ko) 플래시 메모리, 이를 위한 사상 제어 장치 및 방법
JP2005242897A (ja) フラッシュディスク装置
JP2008524705A (ja) スクラッチパッドブロック
KR20000048766A (ko) 비휘발성 메모리에서 파일의 연속 중복기재를 수행하는 방법
TW200926182A (en) Memory apparatus and method for accessing a flash memory, and method of evenly using blocks of the flash memory
WO2005059966A2 (en) Rotational use of memory to minimize write cycles
US20100318726A1 (en) Memory system and memory system managing method
JP5874525B2 (ja) 制御装置、記憶装置、記憶制御方法
JP2009205689A (ja) フラッシュディスク装置
JP2012068765A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP3826115B2 (ja) 記憶装置、メモリ管理方法及びプログラム
KR100703727B1 (ko) 비휘발성 메모리, 이를 위한 사상 제어 장치 및 방법
JP2004078902A (ja) 記憶装置、メモリ管理方法及びプログラム
US6871260B2 (en) Non-volatile memory based storage system capable of directly overwriting without using redundancy and its writing method
JP2012037971A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
JP5707695B2 (ja) フラッシュディスク装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20061031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070404

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070620

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

Free format text: PAYMENT UNTIL: 20100629

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 3977370

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110629

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20110629

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120629

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20130629

Year of fee payment: 6

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

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