JP2005516264A - 不揮発性メモリ上で実行されるブロック書き込み動作時間を低減させる方法および装置 - Google Patents

不揮発性メモリ上で実行されるブロック書き込み動作時間を低減させる方法および装置 Download PDF

Info

Publication number
JP2005516264A
JP2005516264A JP2001512381A JP2001512381A JP2005516264A JP 2005516264 A JP2005516264 A JP 2005516264A JP 2001512381 A JP2001512381 A JP 2001512381A JP 2001512381 A JP2001512381 A JP 2001512381A JP 2005516264 A JP2005516264 A JP 2005516264A
Authority
JP
Japan
Prior art keywords
block
sector
information
storage
volatile 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.)
Granted
Application number
JP2001512381A
Other languages
English (en)
Other versions
JP4695801B2 (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.)
Micron Technology Inc
Original Assignee
Lexar Media Inc
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 Lexar Media Inc filed Critical Lexar Media Inc
Publication of JP2005516264A publication Critical patent/JP2005516264A/ja
Application granted granted Critical
Publication of JP4695801B2 publication Critical patent/JP4695801B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • 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/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • 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/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/12Group selection circuits, e.g. for memory block selection, chip selection, array selection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk

Abstract

メモリデバイスは、ホスト(12)とコントローラ(14)を備える。コントローラ(14)は、セクタ(34,36)に組織化された情報の不揮発性メモリユニット(16)からの読み出しおよび書き込みを制御する。コントローラ(14)は、揮発性メモリ内に格納されたLUTにおけるセクタ情報のマッピングを保持する。各不揮発性メモリユニット(16)の各ブロック内部に保持されるアドレス値およびフラグ情報の使用によって、ブロックは本発明の様々な代替的な実施形態における異なる数の書き込み動作を用いることによって再書き込みされる。フラグ情報はブロックの状態を示すため、電源投入の間コントローラ(14)は、ブロックのアドレス値およびフラグ情報を読み出し、ブロックの状態を判定し、それに従ってブロックの再書き込みを終了し、必要ならばLUTをそれに応じて更新する。

Description

【0001】
(発明の背景)
(関連出願の相互参照)
本願は、以前に出願された特許出願、すなわち「SPACE MANAGEMENT FOR MANAGING HIGH CAPACITY NONVOLATILE MEMORY」と題された1999年4月1日に出願された特許出願第09/283,728号であり、発明者は、Petro Estakhri, Berhanu Iman、およびMin Guoと、別の以前に出願された出願「MOVING SECTORS WITHIN A BLOCK OF INFORMATION IN A FLASH MEMORY MASS STORAGE ARCHITECTURE」と題された1999年3月8日に出願された特許出願第09/264,340号であり、発明者は、Petoro Estakhri、Berhanu ImanおよびAli Ganjuei、(これは「MOVING SECTORS WITHIN A BLOCK OF INFORMATION IN A FLASH MEMORY MASS STORAGE ARCHITECTURE」と題された米国特許第5,907,856号の継続出願)との一部継続出願である。これら特許書類の両方の開示を全体的に記載されたかのように本明細書で参考として援用する。
【0002】
(発明の分野)
本発明は不揮発性メモリを利用するデジタルシステムの分野に関し、特に、コンピュータ、デジタルカメラ等の大容量記憶装置としてのフラッシュメモリに関する。
【0003】
(従来技術の説明)
近年、固体メモリは、コンピュータ、デジタルカメラ、モデムなど様々な技術領域において大容量記憶ユニットを配置することに使用する際に人気を得ている。例えば、デジタルカメラでは、固体メモリ(例えば、フラッシュメモリ、)の使用は、従来の薄膜メモリを代替する。
【0004】
概してフラッシュメモリは、各デバイスが多数のトランジスタメモリセルから形成され、各セルが個別にプログラム可能な半導体デバイス(またはチップ)の形態で供給される。このようなメモリセルのプログラミング(または書き込み)および消去は、有限数の消去−書き込みサイクルに限定され、本質的にデバイスの寿命を決定する。さらに、フラッシュメモリセルの固有の特性は、フラッシュメモリセルが消去され、プログラミングされる前に消去が成功したことを確認しなければならない点である。
【0005】
しかし、フラッシュメモリの使用について、情報を含むメモリの領域は、再プログラミングされる前にまず一旦消去されなければならない。概してフラッシュメモリデバイスでは、書き込みおよび消去サイクルが遅く、大容量記憶装置のようなフラッシュメモリを利用するシステム性能を著しく低減し得る。
【0006】
フラッシュメモリデバイス(例えば、パーソナルコンピュータおよびデジタルカメラ)を利用する用途において、ホストは、コントローラデバイスを介するフラッシュメモリデバイスに情報を書き込みかつ読み込む。これは、通常の半導体デバイスの形態である。このような情報は、各セクタがユーザデータ情報およびオーバーヘッド情報を含む各セクタを有するセクタで組織化される。セクタのユーザデータ部分は、典型的には長さ512バイトであるが、他のサイズのセクタ同様に使用され得る。ホストからセクタ情報を受信する際、ホストコマンド書き込み動作の間、コントローラは、所定のセクタ組織化に従って、フラッシュメモリデバイスに情報を書き込む。ホストが複数のセクタにアクセスされている間、その時点で、各セクタは一度にフラッシュデバイスに書き込まれ得る。
【0007】
現在では、市販のソフトウェアおよびユーザプログラム等の大きなファイルがフラッシュメモリ内部に格納されたコンピュータ、ならびに大きな画像ファイルがフラッシュデバイス内部に格納されたデジタルカメラにおいて、ファイルはフラッシュ内部で一度に1つのセクタに書き込まれる。各書き込み動作に関連する待ち時間のために、多量の情報が格納される場合、これらのシステムの性能は限定される。
【0008】
データファイル(データファイルは、市販のソフトウェア、ユーザプログラム、ワードプロセッサソフトウェア文書、拡張シートファイル等)を格納および/または取り出す場合、ホストはデータファイルが大容量記憶装置内部に存在することを信じる領域を示す論理ブロックアドレスとして参照することをコンピュータ(またはホスト)システムが提供する。ホストに提供されたアドレスは、円筒形の、ヘッドおよびセクタ(CHS)の形態で存在し得、コントローラが受け取った際、論理ブロックアドレスフォーマットに変換される。同じことはデジタルカメラ用途に適用される。次いでコントローラは、論理ブロックアドレス(LBA)を物理ブロックアドレス(PBA)に変換し後者をフラッシュメモリ内部のデータファイルにアクセスするために用いる。データファイルが変化するたびにファイルの最新のバージョンが新しい物理領域(または新しいPBA)によって識別されるフラッシュメモリ内部の有効な(または「未使用の」)領域に格納される。フラッシュメモリ内部で更新されたファイルのための多くの空き領域または有効な領域を用いる際、消去動作は、追加的情報の格納のために有効な「古い」領域を形成する必要があり得る。消去動作は、時間を消費する(書き込み動作に対して)ために、次の消去動作の前にさらに多くの領域が使用されること、およびフラッシュメモリ内部の空き領域を検索するために消費される時間まで消去動作を実行する頻度に対して、トレードオフが存在する。
【0009】
様々な異なるアルゴリズムが利用されて、消去動作がいつ発生するか、およびアルゴリズムの関数として、フラッシュメモリ(大容量記憶装置)内部で次の有効な空きブロックがデータファイルを格納するためにどこに位置付けられるかを決定する。コントローラデバイスの空間マネージャユニットは、この関数を実行する。
【0010】
不揮発性メモリまたはフラッシュメモリにおける情報は、コントローラの方向に格納され、その情報はセクタの形態でそのようになされ、そしてセクタの数はブロックを規定する。1つのブロックは、16、32または他の数のセクタを含み得る。しかし、一旦ブロックが所定数のセクタを含むことを決定すると、この決定されたサイズは各ブロックを規定する。従って、不揮発性メモリに格納される情報は、ブロックに組織化され、各ブロックは独自にコントローラによってアドレス可能である。各ブロックは、複数のセクタをさらに含み、各セクタは、512バイトと、フラグ、アドレス、およびエラー訂正コード(ECC)情報等の非データ情報を格納するための追加的格納空間によって規定される。セクタは、512バイト以外のデータ格納空間を有し得るが、いくつかの従来技術のシステムでは、消去動作の間、全体のブロックが消去されるが、他の従来技術のシステムではセクタが消去され得る。ブロック内部の各セクタは、不揮発性メモリから情報を読み出し、不揮発性メモリに情報を書き込むために独自にアドレス可能である。独自の値は、電源投入の間、不揮発性メモリと関連付けられた情報のアドレシングまたはマッピングを再構築する際に使用するための仮想論理ブロックアドレス(VLBA)としてセクタ情報を含む各ブロック内部に維持される。このマッピング情報は、ここでさらに説明されるように、不揮発性メモリ内で維持されるルックアップテーブルの内容である。
【0011】
コントローラデバイスの空間マネージャユニットは、「古い」(変更された情報)およびまだ消去されていないおよび/または「欠陥のある」(領域は、いくつかの種類の欠陥によって情報を格納するために用いることができない)または「使用された」(現在最新の情報を含む)と考えられている情報の領域に加えて、フラッシュメモリ内部の最新のデータの領域に関連する情報のテーブルを維持する。情報のこのテーブルは、コントローラデバイスの外部または内部のいずれかで、RAMのような揮発性メモリ領域において格納されかつ更新される。ホストによって情報がアクセスされるたびに、空間マネージャテーブルを用いて、フラッシュメモリデバイスに書き込まれおよび/またはフラッシュメモリデバイスから読み出される情報の領域を見出す。
【0012】
不揮発性メモリデバイスを用いる従来技術の方法および装置についての問題は、例えば、特定の不揮発性メモリデバイス内部の情報ブロックが書き込まれた場合、その動作に関連する多くの書き込み動作が存在することである。現在、例えば、16のセクタを含むブロックを書き込むためには、実行される少なくとも20の書き込み動作が存在し、16の動作はセクタを書き込み、4よりも大きい動作は、非セクタ情報を書き込む。これは、概して不揮発性メモリ上で実行される書き込み動作が時間を消費し、ブロックがアクセスされるたびにブロックが不揮発性メモリ内部の異なる位置に移動する必要があるためにシステム性能に実質的に影響を与え、ブロックの書き込みを要求する。ブロックが再度繰り返してアクセスされる場合、発生するブロックの書き込みを要求する多くの移動動作が存在する。
【0013】
従って、ブロックが複数のセクタを含む不揮発性メモリのブロックへの書き込みことを効率的に実行する方法および装置に対して必要性が生じる。
【0014】
(発明の要旨)
簡単に、本発明の好適な実施形態は、ホストによって以前に書き込まれた情報のブロックを再書き込みする場合、書き込み動作の数を低減するための固体格納装置システムおよび方法を含む。システムは、ホストによって命令される場合、不揮発性メモリユニットからセクタ内で組織化された情報を読み出し、かつ不揮発性メモリユニットにセクタ内で組織化された情報を書き込みを制御するためのホストおよび不揮発性メモリユニットに結合されたコントローラを含む。コントローラは、電力が失われた場合に揮発性メモリの内容が失われる揮発性メモリ内に格納されるLUTにおけるセクタ情報のマッピングを維持する。不揮発性メモリユニットの各ブロック内に維持されるアドレス値およびフラグ情報の使用によって、本発明の様々な例示的な実施形態における異なる数の書き込み動作を用いてブロックが再書き込みされる。フラグ情報はブロックの状態を示すため、電源投入の間、コントローラは、ブロックのアドレス値およびフラグ情報を読み出し、ブロックの状態を判定し、それに従ってブロックの再書き込みを終了し、従って必要であればLUTを更新する。
【0015】
本発明の上述および他の目的、特徴、利点は、いくつかの図面を参照することによって好適な実施形態の以下の詳細な説明から明らかになる。
【0016】
(好適な実施形態の詳細な説明)
図1を参照して、コンピュータ(パーソナルコンピュータ(PC))、デジタルカメラ等の一部であり得るデジタルシステム10は、ホスト12、コントローラデバイス14、および不揮発性メモリユニット16を含む、本発明の実施形態に従って示される。ホスト12は、コントローラデバイス14の指示のもとメモリユニット16から情報を読み出し、メモリユニット16に情報を書き込むように結合されることを示す。上述のように、メモリユニット16は、本発明による少なくとも2つの不揮発性メモリデバイスから構成され、各不揮発性メモリデバイスは、集積回路(または通常、当該産業によって呼ばれる半導体デバイス)である。不揮発性メモリデバイスは、フラッシュ、EEPROM(電気的消去可能プログラム可能読み出し専用メモリ)または固体メモリの他のタイプであり得る。
【0017】
ホスト12は、ホストバス18を介してコンローラ14と通信し、コントローラデバイス14は、メモリ信号20を介してメモリユニット16に結合することが示される。
【0018】
コントローラデバイス14は、ホストインターフェース回路22、マイクロプロセッサ回路24、揮発性格納ユニット26、および空間マネージャ/フラッシュインターフェース回路28を含むことが示される集積回路(または半導体回路)である。ホストインターフェース回路22は、ホストバス18を介してホスト12に結合し、ホストバス18は、アドレスバス、双方向データバス、および制御信号(個別に図示しない)を含む。利用されるホストのアーキテクチャに依存して、ホストアドレスバスおよびデータバスは、同一のバスにバスアドレス信号およびデータ信号を多重送信することによって、アドレス情報およびデータ情報の両方を搬送する信号バスから構成され得る。本明細書中で使用されれる用語バスは、複数の電気導電体または信号線を含むことを留意すべきである。ホストバス18は、PCMCIAインターフェース、ATAインターフェースまたは当該産業で利用される他の種類のインターフェースであり得る。
【0019】
ホストインターフェース回路22は、ホストバス18に結合されるように示され、マイクロプロセッサバス30を介してマイクロプロセッサ回路24に接続されるようにさらに示される。マイクロプロセッサ回路24は、マイクロプロセッサバス30を介して空間マネージャ/フラッシュインターフェース回路28にさらに接続される。マイクロプロセッサバス30は、マイクロプロセッサ回路24と空間マネージャ/フラッシュインターフェース回路28との間のアドレス情報およびデータ情報と制御信号の通信を容易にする。マイクロプロセッサ回路24は、揮発性格納バス32を介して揮発性格納ユニット26に情報を読み出し、かつ揮発性格納ユニット26に書き込むように結合される。
【0020】
本発明の1実施形態では、マイクロプロセッサ回路24は、Intel(登録商標)8051プロセッサであり、あるいはマイクロプロセッサユニット24は、任意の汎用プロセッサユニットであり得る。概して揮発性格納ユニット26は、マイクロプロセッサ回路24によって実行されるファームウェアコードを格納するための読み出しアクセスメモリ(RAM)である。ホスト12とコントローラ14との間の情報は、ホストバス18を介して転送され、コントローラ14とメモリユニット16との間の情報は、メモリ信号20を介して結合される。メモリユニット16は、2以上の不揮発性メモリデバイス(34および36等)から構成される。不揮発性メモリデバイス34および36のそれぞれのサイズは、デジタルシステム10の用途に依存して変更され得る。それでもなお、このサイズは、概して各バイトが8ビットであるバイト別に参照される。例えば、1つの用途において、不揮発性メモリユニット16のサイズは、32MBである各フラッシュメモリデバイスまたは不揮発性メモリデバイスを加えて160MB(メガバイト)である。別の用途では、不揮発性メモリユニット16のサイズは、各フラッシュメモリデバイスが18MBを有する80MBである。不揮発性メモリデバイス34および36は、パワーダウンの間、メモリの内容を保持するタイプのメモリである。不揮発性メモリデバイスの典型的な例は、Toshiba,Hitachi等の会社によって製造される浮動ゲートセルから構成されるフラッシュまたはEEPROMデバイスである。
【0021】
図1には示されていないが、空間マネージャ/フラッシュインターフェース回路28は、空間マネージャ制御ユニット38、フラッシュインターフェース回路40、および空間マネージャ格納ユニット42を含む。本発明の1実施形態における空間マネージャユニット38は、空間マネージャ格納ユニット42内部に保持されたルックアップテーブル(LUT)に格納された情報を制御する状態マシンから構成される。あるいは、空間マネージャ制御ユニット38の機能は,当業者に理解されるようなハードウェアおよび/またはソフトウェアの他のタイプによって実行され得る。空間マネージャ制御ユニット42は、LUT内部のブロックアドレシング情報およびステータス情報を格納するためのRAM等の揮発性のメモリのタイプからなる。
【0022】
やはり図1には示されていないが、メモリ信号20は、フラッシュアドレスバス、双方向フラッシュデータバス、およびフラッシュ制御信号を含む。これらの信号のいくつかは、本明細書に含まれる他の図面に関してさらに説明される。
【0023】
動作において、ホスト12は、時々メモリユニット16にアクセスしたり、メモリユニット16への読み出しおよびメモリユニット16への書き込み動作のような様々な動作の実行の間、メモリユニット16にアクセスする。そうする際に、ホスト12は、データの読み出しまたは書き込みのため領域を識別するアドレスを提供する。ホストが提供されたアドレスは、情報をメモリユニット16にアクセスする場合、または情報をメモリユニット16から読み出す場合、コントローラ14によって用いるためにホストバス18に結合する。1実施形態において、ホストが提供したアドレスは、CHS(シリンダー、ヘッドおよびセクタ)の形態で存在する。このタイプのアドレシングは、ハードディスクを用いるシステムから適用され、このようなアドレシング方式を用いて、ディスク上の特定の領域を識別する。しかし、情報の格納のための不揮発性メモリの出現によって、CHSアドレスフォーマットは、不揮発性メモリユニット内部の領域を識別するための値に変換される必要がある。従って、CHSアドレスがホストバス18に結合される場合、コントローラ14は、CHSアドレスフォーマットを論理ブロックアドレス(LBA)に変換する。次いでLBAは、空間マネージャ/フラッシュインターフェースユニット28が用いるためのマイクロプロセッサバス30を介して結合される。あるいは、ホスト12は、LBA型のアドレスをコントローラ14に提供する。この場合、変換がなおも実行されるが、この変換はCHS/LBA変換ではない。前者の変換(すなわち、CHS/LBAが用いられる場合)もまた実行され、後者の変換は、単にLBAを置換するだけである。読者は、本明細書中で上記にて議論したようにブロックが、16、32または他の数のセクタ等の所定数のセクタを含むように規定されることを留意する。
【0024】
LBA計算は、ハードウェアまたはファームウェアによって実行され得る。ファームウェアが用いられてLBAを計算する場合、マイクロプロセッサ24は、揮発性格納ユニット26において格納されるファームウェアコードの実行によってこのような関数を実行する。ハードウェアが用いられてLBAを計算する場合、状態マシンブロック(図1に示されていない)がこのような計算を実行する。
【0025】
上記の式によるLBAの計算後、LBAは、LBAの所定の最下位ビットをマスキングすることによってVLBA(仮想論理ブロックアドレス)値に変換される。例えば、ブロック当たり16セクタを用いる場合、VLBAは、6進数値0x3FFFF0を有するLBAの論理「AND」によるLBAから計算される。これにより本質的には、LBAはLBAの4つの最下位ビットを除いて保存されることになる。ブロック当たり32セクタを使用する場合、VLBAは6進数値0x3FFFE0を有するLBA値の論理「AND」によって計算され、LBAの5つの最下位ビットを効率的にマスキング除去し、残りのビットを保存する等である。LBAのVLBAへの変換は、空間マネージャー/フラッシュインターフェース28によって実行される。この変換は、ハードウェアまたはソフトウェアのいずれかで実行され得る。
【0026】
図1において、VLBAは、マイクロプロセッサ24から空間マネージャ/フラッシュインターフェース回路28の空間マネージャ制御ユニット38までマイクロプロセッサバス30に結合され、VLBAは、空間マネージャー格納ユニット42のLUT(ルックアップテーブル)にアドレスするために用いられる。実際に、VLBAは、VPBA(仮想物理ブロックアドレス)が取り出されるLUTの特定の領域をアドレスするために使用される。特定のLBA値は、様々なPBA値を示すために用いられ得ることを留意すべきである。例えば、ホストが特定のLBA値によって識別される領域に書き込むことを望む場合、特定のLBA値は、LUT内のVPBA値を参照するために用いられる。このVPBA値は、例えば「20」であるが、次に、ホストが同一のLBA識別領域に書き込むことを望む場合には、LUTから取り出されるVPBA値は、「20」ではなく「200」であり得る。これが為される方法は、LUT内部でも保存される所定のフラグ情報の使用による。簡単には、消去動作の後に初めて特定のLBA領域が、そこに書き込むためのホストによってアドレスされ、情報が書き込まれ、そして特定のLBAに対応するLUT内のフラグフィールド「使用された」としてマーキングされるため、次回ホストは消去動作の前に同一の領域への書き込みを望む場合に、メモリユニット16内部の異なる領域は、このような書き込みのための異なるPBAによって識別される。従ってLBAとPBAとの間の1対1対応は存在しない。フラグフィールドおよびLBAおよびPBA LUTアドレシングのさらなる説明について、読者は、「Moving Sectors Within a Block of Information in a Flash Memory Mass Storage Architecture」と題された1997年3月31日に出願された米国出願を参照されたい。この出願の発明者は、Petro Estakhri,Berhanu Iman,およびAli R.Ganjueiであり、この開示があたかも完全に記載されたものとして本明細書中で参考として援用する。
【0027】
PC用途では、情報のブロックは、典型的には、従来のハードディスクドライブにおいて使用されるようなセクタであり、各セクタは、典型的には512バイトのデータのための空間およびオーバーヘッド情報のための追加的な空間を含むが、他のサイズのセクタが同様に使用され得る。
【0028】
マイクロプロセッサ24は、マイクロプロセッサ24の内部または外部のいずれかに位置付けられる揮発性メモリユニット26(ROM(読み出し専用メモリ)またはRAM(読み出しおよび書き込みメモリ)等)からプログラムコードの形態で命令を実行する。マイクロプロセッサ24は、空間マネージャ制御ユニット38に、ホストによって提供されたCHS値によって発生するLBAを使用して、メモリユニット16内部で利用可能な次の未使用の(または空き)アドレス可能格納ブロック領域を見付けるように命令する。ホスト書き込み動作時に、この未使用ブロック領域はLUTに格納され、ホスト読み出し動作間で、この未使用ブロック領域はLUTから読み出される。LUT内部に格納されるように、メモリユニット16内部の領域を識別するアドレス値は、仮想物理ブロックアドレス(VPBA)と呼ばれる。空間マネージャ制御ユニット38は、様々なアルゴリズムの任意の1つを用いて、フラッシュメモリデバイス内部に位置付けられる次の利用可能な(または空き)ブロックを見付ける。空間マネージャの1例は、「Flash Memory Mass Storage Architecture Incorporating Wear Level Technique Without Using Cam Cells」と題された1996年1月16日に発行された初期に付与された米国特許第5,485,595号において開示され、発明者は、Mahmud Assar,Petro Estakhri,Siamack Nemazie,およびMahmood Mozaffariであり、この開示を完全に記載されたかのように本明細書で参考として援用する。読者は、特に図11〜図13およびこれらの図についての説明を参照されたい。しかし、別の実施形態では、他の空間マネージメント方法および装置が本発明によって同様に使用され得る。
【0029】
VLBA値は、最終的にはLUTからのVPBA値を参照するために使用される。LUTは、行および列から構成され、各行はVLBA値によってアドレスされる。読み出し動作の間、VLBA値を用いてLUTから取り出すためにLUTの特定の行にアドレスする。VPBAは所定のフラグ情報を含む。書き込み動作の間、VLBAを用いて、所定のフラグ情報を含むVPBA値を格納するためにLUTの特定の行をアドレスする。VPBAは、メモリユニット16内部の特定のセクタ領域を識別するために、最終的には物理ブロックアドレス(PBA)に変換される。
【0030】
LBA値は、空間マネージャ/フラッシュインターフェース28によって使用するためにマイクロプロセッサ24によってマイクロプロセッサバス30に結合され、LBA値はVLBAアドレスに変換される。4ビットのセクタは、2の4乗が16に等しいためブロック当たり16のセクタの使用を示す。VLBAはセクタビットをマスキングする(マスキングされたセクタビットは、セクタオフセット値と呼ぶ)ことによって得られ、この例では4ビットを含む。ブロックおよびチップ選択情報は同じままである。チップ選択ビットを用いて、メモリユニット16内部に含まれる複数の不揮発性メモリデバイスの特定のうちの1つのデバイス(例えばデバイス34または36のうちの1つ)を選択する。ブロック情報は選択された不揮発性メモリデバイス内部の特定のブロックを識別する。VLBAはまた、ブロックが不揮発性メモリ内に格納され、書き込まれ、または移動される場合、不揮発性メモリに書き込まれる。すなわち、ブロックのセクタの全てを書き込んだ後、VLBAはブロックの最後の行に書き込まれる。あるいは、VLBAはブロックの任意の他の行に書き込まれ得る。これは以下の図面に関してさらに説明される。
【0031】
図2に戻って、ブロック200は16のセクタ含むことを示し、各セクタ格納空間202はデータおよびECC情報を格納するために用いられる。代替的な実施形態では、ブロック200は16セクタ以外のセクタを含み得る。例えば、容量128Mbitのメモリユニットを有するシステムでは、ブロック当たり用いるのは32セクタであり得るが、64Mbitの容量を用いると16セクタブロックを必要とし得る。図2において各セクタはブロック200の格納空間の行において格納される。
【0032】
図2に示されるようにブロック200の最後の行では、セクタ格納領域202の後、VLBAを格納するためのVLBAフィールド204、ブロック状態フラグフィールド206、および欠陥フィールド208が存在する。ブロック状態フラグフィールド206は、本明細書で提供される以後の例を参照して、明らかになるようにブロック200の状態を格納するために用いられる。欠陥フィールド208は、ブロック200が欠陥であるか否かを示すフラグを格納するために用いられる。以後の例では、このフィールドは、「GD」として示され、ブロックが破壊的ではないが、実際的にこのフィールド専用の1バイト(または8ビット)が存在し得ることを示す。ブロックステータスフラグフィールド206はまた、1バイトを占有し、VLBAフィールド204は、2バイトを占有する。フィールド204〜208のサイズは設計選択であり、本明細書中で記載されるサイズと異なってもよい。
【0033】
図3は、空間マネージャブロック210の内容を示し、VLBA値の1つ(VLBA値によって識別される空間マネージャの行)は、フラッシュメモリユニットおよび特に図3におけるフラッシュデバイス214内部において、ブロック「0220」(16進数表記)をアドレスするために「0020」(16進数表記)である。図3に示されるように値「0220」はVPBA値として用いられ、PBA値「0220」によって識別されるフラッシュデバイス214内部の特定の領域を示す。識別されたブロックはフラッシュデバイス214内部の216(図3)によって参照される。ブロック216内部では、ブロックの最後の行においてすなわち、VLBAフィールド218において「0020」(16進数表記)のVLBA値が格納される。これはブロック216をVLBA「0020」に属するものとして識別するためであり、何らかの理由で電力が中断され、次いで再度電源が入り、空間マネージャ210の内容が失われた場合、空間マネージャ内容は、フラッシュデバイス214における情報からやはり再構築され得る。例えば電源を入れた場合、ブロック216の最後の行が検査され、特にVLBAフィールド218が読み出される。VLBAフィールド218は、値「0020」を含み、このVLBA値に対応する行は空間マネージャにおいて到達され、「0220」の値がその行に配置される。
【0034】
図3において、ブロック216,224およびブロック232等の各ブロックは、複数のセクタ(例えば、16、32または任意の他の数2N(Nは整数))を含む。各セクタはデータおよびECC情報を含む。
【0035】
図3において、ブロック216には、格納されたブロック状態フラグフィールド220および欠陥フィールド222にさらに存在し、初めに議論したようにブロック216に関する所定の情報を識別する。16進数で「480」のアドレスを有するブロック224は、フラッシュデバイス214内部でさらに示される。ブロック224の最後の行は、以後の例に関して明らかになるように、ブロック224へのブロック216の内容の移動により値「0020」を含むように示されるVLBAフィールド226を含む。ブロック224は、ブロック状態フラグフィールド228および欠陥フィールド230をさらに含む。ブロック216および224を示す理由は、同じブロックがアクセスまたは書き込まれた場合、ブロック(ブロック216等)のフラッシュデバイス214内部の別のブロック(ブロック224等)への移動の概念を読者に理解させやすくすることである。言い換えれば、同じのLBAまたはVLBAに識別された領域が消去される前に再書き込みされる場合(フラッシュまたはEEPROM等の不揮発性メモリ特性の1つが、書き込みまたはプログラミングされる場合、再書き込みまたは再プログラミングされる前に消去される必要があることであるが、頻繁な消去を避けるために、本発明および従来の発明の発明者らは、再書き込みが発生する場合、同じVLBAを有する異なるブロックを用いるようにシステムを設計してきたことを読者は想起されたい)、再書き込みされるブロック部分、すなわち再書き込みされるブロックの特定のセクタは、同一のVLBAによって識別され、別のブロックに書き込まれるが、フラッシュメモリユニット内部で物理的に異なる位置の別のブロックにまず書き込まれる。次に書き換えられないされないセクタは、新しいブロックに移動し得、次いで以前のブロックは消去され得る。図3において、例えばVLBAに識別されたブロック、すなわちVLBA「0020」は、第1にブロック216に、フラッシュデバイス214内部のブロック「0220」を示す。しかし、同じVLBAに識別された領域、すなわちVLBA「0020」は、コントローラがブロック216を消去する機会を有する前に、ホストによって書き換えられる場合、後者のブロックは、物理的にまたは実際的に再プログラミングできない。従って別のブロック、すなわちブロック224は、再書き込みのために識別される。これらのブロックの状態は、任意の所与の時間、特に電源投入の間、コントローラは、どのブロックが「使用状態」にあるか、および/または「古い」情報を含むか等を知らなければならない点で重要である。この種の情報は、以前に記載したように各ブロックのブロック状態フラグフィールドによって識別される。移動の動作は、恐らく図4a〜図4iに示されるように実施例によって最良に理解され、ホストはLBA27〜2F(16進数表記)によって識別される9個のセクタを再書き込みする。
【0036】
図4aでは、空間マネージャ400が、VLBA「20」によって識別される行において値「220」を含むように示される。この行は、LBA値27〜2Fによって識別されるセクタがVLBA「20」によってアドレスされたブロック内部に存在するために示される。なぜなら、図4a〜図4iの例では、各ブロックが16セクタを含むためである。対応するブロック220は、フラッシュデバイス214のブロック402に物理的に格納される。フラッシュデバイス214は16のセクタを含み、各セクタはデータおよびECC情報、ならびにブロックの最後の行を含み、ブロック最後の行は、VLBAフィールド404、ブロック状態フラグフィールド406と欠陥フィールド408とを含む。ブロック402は、以前にホストによってブロック402に書き込まれたために、ブロック402のブロック状態フラグフィールド406は、図4aに「zz」として示される値を含む。「zz」は、単にブロック402が完了している。すなわちブロック402を「ブロック完了」として指定することを表す表記として本明細書中で使用する。実際には、「zz」は、1バイト等のバイナリ値であり、「ブロック完了」を示す所定値を有する。「zz」および「xx」、「yy」等の他の用語は、本特許文書にわたって使用され、ブロック状態フラグフィールドの状態を説明する一方で、実際これらの用語はバイナリ値を表す。
【0037】
ブロック402のVLBAフィールド404は値「20」を含み、ブロック402が属する空間マネージャ400内部の特定領域を示す。電源が入れられた場合、空間マネージャ400LUTの内容がその揮発的な性質により失われる一方で、フラッシュデバイス214の内容が保持されるので、ブロック402の内容は空間マネージャを再構築するために用いられる。実際には、フラッシュメモリユニット内部の全てのブロックの内容は、空間マネージャ400のLUTを再構築するために使用される。図4aでは、VLBAフィールド404の内容(20である)が用いられて、VLBA20によって識別される対応する領域または行を示し、値「220」をそこに格納する。
【0038】
LBAに識別されたセクタ27−2Fを書き込む例は、図4bに続く。ここで空きブロックは、ブロック410のような空間マネージャによって位置付けられる。VPBA値「480」によって識別されるブロック410は、16のセクタ格納空間およびVLBAフィールド412、ブロック状態フラグフィールド414、ならびに欠陥フィールド416を含む。ブロック402の状態は同じままであるが、ブロック410はこの時点で空いているため、フィールド412、414、および416内に有効なデータ、ECC、または情報が存在しない。
【0039】
図4cでは、ブロック410は、「使用中」であるとしてマーキングされる。これはフィールド414における「xx」値およびフィールド412における「0020」を書き込むことによって行われる。また、これは実際の「xx」値ではなく、本明細書中で「xx」は、ブロック410が「使用中」であることを示す所定のバイナリ値を示すように用いられる。「使用中」としてのブロック410のマーキングは、データ以外のセクタ情報(すなわち「オーバーヘッド情報」)の書き込み動作を要求する。従って、図4cにおけるブロックのマーキングが、この例で行われる第1の「オーバーヘッド」書き込み動作である。読者は、全体で3回のオーバーヘッド書き込みが存在し、全体で3+16(セクタ書き込み)すなわち19回の書き込みが実行されることを留意する。
【0040】
次に、図4dでは、書き込むために必要な第1のセクタ、すなわちLBA27Hによって識別されるセクタが、ブロック410内のセクタ420によって示されるように、書き込まれ、フィールド412、414、および416の内容は、この書き込み動作の間、不変のままである。読者は、またこの書き込み動作が実際にLBA27Hによって識別されるセクタの再書き込みであることを気付かせる。すなわち、後者のセクタは、「220」のアドレスを有するブロック402内に前に書き込まれ、ここでブロック402の消去の前にホストによって再書き込みされる。ブロック402は、ブロック402の消去の欠如によって書き込まれ得ないため、空きブロック410は、新しいセクタ情報の格納のために設計され得る。
【0041】
図4eでは、セクタ420が書き込まれた後、ブロック410のブロック状態フラグフィールド414の内容は、ブロック410が「処理中」であることを示す「yy」に変更される。そうでなければ、ブロック410の残りの内容は同じままである。この書き込み動作は、別の「オーバーヘッド」書き込み動作であり、セクタ情報が書き込まれない。読者が留意するように、これは本例の第2のオーバーヘッド動作である。図4c〜4eでは、VLBAフィールド412は同じ(すなわち「20」)ままである。なぜならこれは、このブロックがそこに書き込まれるための空きブロックとして見出されてからずっとブロック410に対応するVLBA領域に存在するためである。さらに、このブロックは、欠陥があるとは考えられておらず、従って欠陥フィールド416は、「GD」すなわち良好なブロックを示す。以前に説明したように、欠陥フィールドは、実際に、バイナリ値を含み、このブロックが欠陥があるか否かを示す。
【0042】
図4fでは、28〜2FのLBA値によって識別された残りのセクタは、セクタの各領域においてブロック410に書き込まれる。フィールド412〜416の内容は同一のままである。この時点まで本例では、全11の書き込み動作が存在し、このうち2つは、「オーバヘッド」書き込み動作であり、9つはセクタ書き込み動作である。
【0043】
図4gでは、7の追加のセクタ書き込み動作(または移動動作)が実行され、ブロック402においてLBA値20〜26によって識別されるセクタの内容がコントローラによって読み出され、ブロック410の対応するブロックに書き込まれる。フィールド412〜416の内容は、同じままであり、この時点で、ブロック220が消去される。図4hでは、最後の書き込み動作が実行されてブロック410のブロック状態フラグフィールド414の内容を、「ブロック完了」状態を示す「zz」に変更する。「ブロック完了」状態は、ブロックが完全に書き込まれていることを意味する。これは、ブロック402の状態と同じであることを留意すべきである。ここで、全19の書き込み動作が実行される。
【0044】
この文書にわたって、ブロック状態フラグフィールドの内容を変更させることについて参照する。このような変更は、ブロック状態フラグフィールドを含むブロックの消去の前に実行される。これは、このフィールドが、書き込み前の消去を要求する、不揮発性メモリユニット内部に含まれる場合、先に消去されることなくどのようにしてブロック状態フィールドが更新され得るかについて読者の心に疑問を生じさせ得る。簡単には、これは2バイト(各バイトは8ビットである)のようなビット数をブロック状態フラグフィールドに割り当てることによって為される。このフィールドの第1の更新または変更の前に、このフィールドが存在するブロックの消去動作後に、このフィールドの値は、全てバイナリ表記で「1」または16進数表記で「FFFF...」である。ブロックの各状態に割り当てられる所定の値が存在する。説明のために、「11111100」(バイナリ表記または16進数表記で「FC」)の値が、状態「xx」に割り当てられ、次いでフィールドの2つの最下位ビット(LSB)が「1」から「0」に変更され、値「11111100」(バイナリ表記)を得る。その後フィールドが「yy」の状態を反映する値に更新される必要があり、この値を「11110000」(バイナリ表記または16進数表記で「F0」)であると仮定する場合、第3および第4のLSBは「0」にプログラミングされ、ビットの残りは不変のままである。最後に、例えば「zz」状態を表す値は「11000000」であり得、第5および第6のLSBは、不変のままのビットの残りを有する「0」にプログラミングされる。従って、ブロック状態フラグフィールドは、論理状態「1」において存在するビットの状態を「0」に変更することによって変更され得るが、論理状態「0」において既に存在するビットと同じにする。これは、フィールドが変更される必要があるたびにフィールドを消去する必要性を除去する。
【0045】
本発明に従って、電源投入の間、フラッシュメモリユニットのブロックが空間マネージャLUTを再構築するために読み出される場合、各ブロックのブロック状態フラグフィールドは、以下のブロックの状態を示す。「使用中」は、ブロック内に格納された有効なデータがまだ存在しないが、使用のためにブロックが指定されたブロックを意味し、「処理中」は、第1のセクタがブロックに書き込まれたことを意味し、「ブロック完了」は、ブロックが完全に書き込まれたことを意味する。
【0046】
図4iでは、ブロック410が「ブロック完了」にマーキングされるとすぐにブロック220が消去されるため、ブロック220が消去される。
【0047】
本発明の代替的な実施形態では、ブロック状態フラグフィールドは、3つの値ではなく2つの値を獲得し、それによって1つの「オーバーヘッド」書込み動作を除去し得る。すなわち、第1の状態「xx」は実際には記されず、実際には結果的に19回ではなく18回の全書込み動作を生じる。これはブロック410のフィールド414が減少する変更によって行われ、フィールドの状態の第1の変更は処理中であるとして示される。セクタ情報は、図4a〜図4iを参照して上述の例で示されるようにブロックにさらに書き込まれる。
【0048】
本発明のさらに別の実施形態では、システムの性能はさらに改良され、ブロックまたはブロックの部分に再書き込みするために、ブロック内に存在するセクタと同一の回数の書き込み動作に1回の追加的な書き込み動作を加えたのみが実行される。例えば、図5に示されるように例によって説明されるように、ブロックは16のセクタを含み、17回の書き込み動作は、ブロックの1以上のセクタに再書き込みされる場合に実行される。
【0049】
図5において、フローチャートは、ブロック0のLAB13、14、および15によって識別されるセクタを再書き込みする際に実行される工程を示すように図示される。工程500では、ホストは、コントローラにコマンドを送信し、ブロック0に以前に書き込まれたLBA13〜15によって識別される不揮発性メモリユニット内のセクタ格納領域に書き込む。コントローラは、この書き込みをこれら特定のセクタの再書き込みであると認識し、工程502において空間マネージャは、以前に書き込まれた同じ領域内の空きブロック(すなわちブロック0)を検索し、それがまず消去されなければ再書き込みできない。
【0050】
工程504において、空間マネージャによってブロック1であると見出された空きブロックの場合を考慮する。工程508において、ブロック1内のVLBAフィールドおよびブロック状態フラグフィールドが更新される。ブロック1の状態を「処理中」として示すために、ブロック1内のブロック状態フラグフィールドが「yy」にプログラムされる。工程508における書き込み動作は、1回の書込み動作であり、ホストによって命令されてブロック1を書き込む場合に実行される第1の「オーバヘッド」書き込み動作である。本明細書で前に議論したように、「yy」は実際には所定のバイナリ値であることを留意すべきである。
【0051】
次に工程506において、実行される13回の書き込み動作が存在し、各書き込み動作は、ブロック0からブロック1にLBAによって識別されたセクタを移動する。例えば、LBA0によって識別されるセクタの内容は、ブロック0から読み出され、ブロック1−ブロック1のLBA0の対応するセクタに書き込まれる。同じ動作がブロック0からブロック1に転送させる残りの12のセクタに対して行われる。
【0052】
最後に工程510において、新しい情報、すなわちLBA13−15においてホストによって識別されるセクタ情報がブロック1に書き込まれる。これはブロック0からブロック1への同じセクタの転送ではないことを留意されたい。むしろブロック1に書き込まれる新しいセクタ情報である。すなわち、LBA13〜15が更新されたため、ブロック0におけるLBA13−15によって識別されたセクタ内のセクタ情報がブロック1に移動する必要がない。最後のセクタ、すなわちLBA15によって識別されるセクタは、同じ書き込み動作の範囲内で書き込まれ、またブロック1内のブロック状態フラグフィールドはまた、「ブロック完了」であるとしてブロック1の状態を示すために「zz」に変更される。工程510は、3回よりも多くの書き込み動作を必要とし、それにより16セクタブロックに対する全書き込み動作数を17(16回のデータ書き込み動作と1回の「オーバーヘッド」書き込み動作)にする。この方式で、書き込み動作数は、低減され、それにより、システム性能(特に多くの書き込みおよび再書き込み動作が実行される必要のある用途において)を増大する。図5の上記の工程の後、ブロック0の内容は、ブロック0が消去され得、その後、ブロック0は、「空き」ブロックまたはさらなる格納使用のための有用なブロックのプールに戻される。
【0053】
本発明のさらなる実施形態では、システム性能は、ブロック内に存在する数と同じに過ぎないような書き込み動作を実行することによってさらに改善される。これは図6aおよび6bに示される例の使用によって最良に理解される。図6aは、消去動作後最初にLBA5〜15を書き込む場合、不揮発性メモリユニット602内のブロック0の状態を示し、図6bは、LBA5〜15を書き込む場合、ブロック0および1の状態を示す。
【0054】
図6aでは、ホストはコントローラに命令し、セクタ情報をLBA5−15によって識別される領域に書き込む場合、コントローラはLBA5〜15によって識別されたセクタが以前に書き込まれたか否かを判定する。この場合、まだ書き込まれておらず、したがって「空き」ブロックは、そのような書き込み処理に対して識別される。この場合、「空き」ブロックはブロック0である。ブロック0は16セクタ(s0〜s15)から構成され、各セクタは、少なくともデータフィールドおよびECCフィールドを有する。ブロック0の第1のセクタs0はまた、VLBA情報を格納するためのVLBAフィールド604を含み、最後のセクタs15は、ブロック状態情報を格納するためのブロック状態フラグフィールド606を含む。
【0055】
第1に、「オーバヘッド」書き込み動作が実行されて、第1のセクタs0のVLBAフィールド604に適切なVLBA値(この値は最初の図に関して上記に示したように決定される)を書き込む。次にデータおよびECCは、LBA値5〜15によって識別される各セクタに書き込まれ、11回の書き込み動作を必要とし、最後のセクタs15を書き込む間、ブロック状態フラグフィールド606が書き込まれて「zz」すなわち「ブロック完了」を示す。
【0056】
図6bでは、ホストはコントローラに命令して再度LBA5〜15に書き込むと仮定すると、不揮発性メモリユニット602は、以下のように変更される。コントローラはこれらのLBAが以前にブロック0に書き込まれたことを判定する。従って、ブロック1が位置付けられ、セクタ格納領域内の情報はLBA0〜4によって識別され、「空き」ブロック、すなわちs0〜s4は、ブロック0からブロック1に動かされる。第1のセクタs0がコントローラによって書き込まれる場合、VLBAはまたVLBAフィールド608に書き込まれ、従って別の書き込み動作に対する必要性を避ける。次にホストによって提供される新しい情報が連続的な順序で11回の書き込み動作を用いてブロック1のセクタs5〜s15に書き込まれる。最後のセクタs15を書き込む間、ブロック状態フラグがまたブロック1のブロック状態フィールド610に、「ブロック完了」を示す「zz」として書き込まれる。最初に議論したように、「zz」は実際には、長さ、バイであるバイナリ値である。従って全ブロックは、必要な別の「オーバヘッド」書き込み動作がないように16回の書き込み動作のみ書き込まれる。その後、ブロック0の内容は消去され、ブロック0は、さらなる格納使用のため「空き」ブロックのプールに戻される。
【0057】
電源投入の間、システムの突然のまたは典型的なパワーダウンの後発生するように、空間マネージャにおけるLUTの内容は、LUTが不揮発性メモリで保持されるために失われる。揮発性メモリは、電力がシステムに供給されない場合メモリの内容を失う。従って、コントローラは、ホストに提供されたセクタアドレスと使用されたアドレスとの間の必要なマッピングを提供するため、および不揮発性メモリユニットから情報を読み出し、不揮発性メモリユニット内部に情報を書き込むように、電源投入の間LUTの内容を再構築しなければならない。
【0058】
電源投入の間、コントローラは、ブロックの状態を判定するために不揮発性メモリユニット内の各ブロックに対して2回の読み出し動作を実行する。これは例を提供することによって最良に理解される。多くのブロック0内のセクタがブロック1に再書き込みされるが、以前に書き込まれたセクタの再書き込みおよび移動がパワーダウンが起こった前にまだ完了していない場合を検討する。パワーダウンの前に空間マネージャにおけるVLBA20がブロック0を示すことをさらに考慮する。すなわち、LUTの行20(16進数で)は、不揮発性メモリユニットにおけるブロック0を識別するアドレスを含む。ブロック0におけるセクタのいくつかはブロック1への移動を受けるため、ブロック0の状態フラグは、「zz」すなわち「ブロック完了」を示し、セクタの移動はまだ完了していないために、ブロック1の状態フラグは「FF.」を示す。「FF.」は、フラッシュセルがまだプログラムされていない場合のフラッシュセルの状態である。読者が思い出すように、16回のみの書き込み動作のみがブロックを再書き込みすることを要求される場合に、状態フラグが最後のセクタ(すなわちセクタ15)書き込まれる場合のみ更新される。この場合、全セクタがブロック1にまだ書き込まれていないために、ブロック1の最後のセクタ(すなわちs15)の内容は、プログラミングされていないままであり、または「FFFF....」である。
【0059】
電源投入の間、コントローラはブロック1内の第1のセクタs0の内容を読み出し、VLBA値を取り出す。この場合、VLBAは「20」(16進数表記で)である。次にコントローラは、ブロック1の最後のセクタs15の内容を読み出し、状態フラグが「FF.」であることを示す。これはブロック1が書き込まれるが、書き込み動作は完了していないことをコントローラに知らせる。ブロック0のVLBAフィールドがブロック1のVLBA値(すなわち「20」)と同じ値を含むことを留意すべきである。従ってコントローラは、不揮発性メモリユニット内部のブロックを検索し、ブロック1に含まれるVLBA値と同じVLBAを見つけ出し、同じ値20を有するブロック0を見つけ出す。従って、コントローラはブロック0からブロック1にまだ移動していない全セクタを移動することを認識する。コントローラは、以前に書き込まれたセクタに関してセクタの内容が全て「FFFF.....」以外の値であり、まだ書き込まれていないセクタに関してセクタの値が「FFFF.....」であるために、セクタの内容に従ってどのセクタが移動するかを認識する。
【0060】
ブロック0からブロック1に移動する必要があり、まだ移動されていないセクタが、ブロック1に移動され、ブロック1内の状態フラグフィールド「zz」すなわち「ブロック完了」としてプログラミングされる。次いでコントローラはブロック1のアドレスを含むように空間マネージャのLUTにおいて行「20」を更新する。
【0061】
本発明は特定の実施形態の点において説明されてきたが、本発明の変更および改変が疑いなく当業者に明白であることが理解される。従って上記請求の範囲は本発明の真の精神および範囲内にあるように、このような変更および改変を全て含むものとして解釈されることが意図される。
【図面の簡単な説明】
【図1】
図1は、本発明の実施形態によるデジタルシステムを示す。
【図2】
図2は、図1のデジタルシステムにおいて使用される場合のフラッシュメモリユニットのフラッシュデバイスの1つの内部のブロックの組織の例を示す。
【図3】
図3は、図1の空間マネージャブロック内容内にブロックが反映される場合、フラッシュメモリデバイス1つの内部にある情報のブロックを移動する例を示す。
【図4a】
図4aは、本発明の実施形態によるブロックがフラッシュメモリユニットの1つの領域から別の領域に移動する場合、空間マネージャブロックおよびフラッシュメモリデバイスのブロックへの影響を示す。
【図4b】
図4bは、本発明の実施形態によるブロックがフラッシュメモリユニットの1つの領域から別の領域に移動する場合、空間マネージャブロックおよびフラッシュメモリデバイスのブロックへの影響を示す。
【図4c】
図4cは、本発明の実施形態によるブロックがフラッシュメモリユニットの1つの領域から別の領域に移動する場合、空間マネージャブロックおよびフラッシュメモリデバイスのブロックへの影響を示す。
【図4d】
図4dは、本発明の実施形態によるブロックがフラッシュメモリユニットの1つの領域から別の領域に移動する場合、空間マネージャブロックおよびフラッシュメモリデバイスのブロックへの影響を示す。
【図4e】
図4eは、本発明の実施形態によるブロックがフラッシュメモリユニットの1つの領域から別の領域に移動する場合、空間マネージャブロックおよびフラッシュメモリデバイスのブロックへの影響を示す。
【図4f】
図4fは、本発明の実施形態によるブロックがフラッシュメモリユニットの1つの領域から別の領域に移動する場合、空間マネージャブロックおよびフラッシュメモリデバイスのブロックへの影響を示す。
【図4g】
図4gは、本発明の実施形態によるブロックがフラッシュメモリユニットの1つの領域から別の領域に移動する場合、空間マネージャブロックおよびフラッシュメモリデバイスのブロックへの影響を示す。
【図4h】
図4hは、本発明の実施形態によるブロックがフラッシュメモリユニットの1つの領域から別の領域に移動する場合、空間マネージャブロックおよびフラッシュメモリデバイスのブロックへの影響を示す。
【図4i】
図4iは、本発明の実施形態によるブロックがフラッシュメモリユニットの1つの領域から別の領域に移動する場合、空間マネージャブロックおよびフラッシュメモリデバイスのブロックへの影響を示す。
【図5】
図5は、ブロックを再書き込みする場合、17回の書き込み動作が実行される本発明の代替的実施形態による書き込み動作の間実行される工程のフローチャートを示す。
【図6a】
図6aは、ブロックを再書き込みする場合、16回の書き込み動作が実行される本発明のさらに別の実施形態による不揮発性メモリの内容の一例を示す。
【図6b】
図6bは、ブロックを再書き込みする場合、16回の書き込み動作が実行される本発明のさらに別の実施形態による不揮発性メモリの内容の一例を示す。

Claims (18)

  1. ホストおよび不揮発性メモリユニットと共に使用する固体格納システムであって、該ホストはセクタに組織化されたデジタル情報を該不揮発性メモリユニットから読み出し、該不揮発性メモリユニットに書き込み、該不揮発性メモリユニットは、1以上の不揮発性メモリデバイスを含み、各不揮発性メモリデバイスは、セクタ情報を格納するための複数のセクタ格納空間を有する少なくとも1つのブロックを含み、各セクタ格納空間は、データおよびオーバヘッド情報を格納するための格納空間を含み、該固体格納システムは、
    該ホストによって識別される特定の群のセクタ情報を再書き込みするために、該ホストと該不揮発性メモリユニットとの間に結合されるコントローラデバイスであって、該特定の群のセクタ情報は、該不揮発性メモリユニットの以前に書き込まれたブロック内部に含まれ、該コントローラデバイスは、空きブロックを識別し、少なくとも2つのセクタ格納空間、すなわち第1のセクタ格納空間および第2のセクタ格納空間を含むように該空きブロックを構成し、
    該第1のセクタ格納空間は、データ格納フィールドおよびオーバヘッド格納フィールドを含み、該第1のオーバヘッド格納フィールドは、該空きブロックを識別するアドレス値を格納するためのアドレスフィールドを含み、該第2のセクタ格納空間は、データ格納フィールドおよびオーバヘッド格納フィールドを含み、該第2のオーバヘッド格納フィールドは、該空きブロックの状態を示すフラグフィールドを含み、該コントローラデバイスは、該第1のセクタ格納空間上で書き込み動作を実行して該データ格納フィールドにデータを書き込み、該アドレスフィールドにアドレス値を書き込み、該コントローラデバイスは、さらなる書き込み動作を実行して該特定の群のセクタ情報を書き込み、またさらなる書き込み動作を実行して該以前に書き込まれたブロックから空きブロック内の同じセクタの格納空間にセクタ情報を移動し、セクタ情報を該第2の格納空間に書き込む場合、該コントローラは、該フラグフィールドの内容を修正して、該空きブロックへの書き込みの終了を示す、コントローラデバイスを備え、
    ブロックの再書き込みの間、書き込み動作の数がブロック内のセクタ格納空間の数以下であり、それにより該システムの全性能を増大する、固体格納システム。
  2. 前記アドレス値は、前記コントロールデバイスによる使用のための前記空きブロックを識別する仮想論理ブロック値(VLBA)である、請求項1に記載の固体格納システム。
  3. 前記空きブロックへの書き込みの終了は、該空きブロックの状態を「ブロック終了」として示すバイナリ値によって示される、請求項1に記載の固体格納システム。
  4. 前記コントローラデバイスは、ホストによって提供されたセクタアドレス間のマッピング情報を格納するためのルックアップテーブル(LUT)と前記不揮発性メモリユニット内部のブロックとを含み、対応するセクタ格納領域が位置付けられる、請求項1に記載の固体格納システム。
  5. 電源投入の間、前記コントローラデバイスは、前記アドレスフィールドおよび前記フラグフィールドの内容を読み出し、該フラグフィールドの内容に従って、情報が該フラグフィールドにプログラミングされたかった場合、該コントローラは、前記アドレスフィールドの内容を用いてセクタが転送される元の前記ブロックを判定し、該セクタの前記空きブロックへの転送を終了し、前記ルックアップテーブルを修正して前記アドレス値と該空きブロックとの間の現在の対応を反映する、請求項4に記載の固体格納システム。
  6. 前記第1のセクタ格納空間は、前記空きブロックの最初のセクタ格納空間である、請求項1に記載の固体格納システム。
  7. 前記第2のセクタ格納空間は、前記空きブロックの最後のセクタ格納空間である、請求項1に記載の固体格納システム。
  8. ホストおよび不揮発性メモリユニットと共に使用する固体格納システムであって、該ホストは、セクタに組織化されたデジタル情報を該不揮発性メモリユニットから読み出し、該不揮発性メモリユニットに書き込み、該不揮発性メモリユニットは、1以上の不揮発性メモリデバイスを含み、各不揮発性メモリデバイスは、セクタ情報を格納するための複数のセクタ格納空間を有する少なくとも1つのブロックを含み、各セクタ格納空間は、データおよびオーバヘッド情報を格納するための格納空間を含み、該固体格納システムは、
    該ホストによって識別される特定の群のセクタ格納空間にセクタ情報を再書き込みするために、該ホストと該不揮発性メモリユニットとの間に結合されるコントローラデバイスであって、該特定の群のセクタ格納空間は、該ホストによって以前に該セクタ格納空間に書き込まれ、該コンとローラデバイスは、複数のセクタ格納空間を有する空きブロックを識別し、該セクタ格納空間の1つを構成し、該空きブロックの状態を示す状態フラグ値を格納するための状態フラグフィールドを含み、該コントローラデバイスは、該状態フラグ値を変更して該空きブロックが「使用中」であることを示し、該特定の群のセクタ情報をセクタ格納空間の1つに書き込み、該状態フラグ値をさらに変更して該空きブロックが「処理中」であることを示し、セクタ情報を該特定の群のセクタ格納空間の残りに書き込み、書き込み動作を実行して該空きブロックに再書き込みされていない以前に書き込まれたセクタ格納空間の該内容を転送し、該状態フラグ値をさらに変更して該空きブロックが「ブロック完了」であることを示す、コントローラデバイスを備え、
    ブロックを再書き込みするための書き込み動作の数は、3つのさらなる書き込み動作を加えたブロック内部の該セクタ格納空間の数に低減され、それにより該システムの全性能を増大する、システム。
  9. 前記状態フラグフィールドは、前記空きブロックの最後のセクタ格納空間内部に存在する、請求項8に記載の固体格納システム。
  10. 前記コントローラデバイスは、前記以前に書き込まれたセクタ格納空間を消去するための手段を含む、請求項8に記載の固体格納システム。
  11. 前記空きブロックは、前記不揮発性メモリユニット内部の該空きブロックを識別するアドレス情報を格納するためのアドレスフィールドをさらに含む、請求項8に記載の固体格納システム。
  12. 前記空きブロックは、該空きブロックが欠陥があるか否かを示すフラグフィールドをさらに含む、請求項8に記載の固体格納システム。
  13. 不揮発性メモリ内の情報のブロックを再書き込みするための固体格納システムにおいて実行される書き込み動作の数を低減する方法であって、該固体格納システムは、該コントローラデバイスの制御下において、セクタに組織化されたデジタル情報を該不揮発性メモリユニットから読み出し、かつ該不揮発性メモリユニットに書き込むためのホストを含み、該不揮発性メモリユニットは、1以上の不揮発性メモリデバイスを含み、各不揮発性メモリデバイスは、該セクタ情報を格納するための複数のセクタ格納空間を有する少なくとも1つのブロックを含み、各セクタ格納空間は、データおよびオーバーヘッド情報を格納するための格納空間を含み、該方法は、
    特定の群のセクタ情報を識別する工程であって、該ホストと該不揮発性メモリユニットとの間に結合されたコントローラデバイスは、特定の群のセクタ情報を再書き込みし、該特定の群のセクタ情報は、該不揮発性メモリユニットの以前に書き込まれたブロック内部に含まれる、工程と、
    該特定の群のセクタ情報の格納のための該不揮発性メモリユニット内部の空きブロックを識別する工程と、
    少なくとも2つのセクタ格納空間、すなわち第1のセクタ格納空間および第2のセクタ格納空間を含む該空きブロックを構成する工程であって、該第1のセクタ格納空間はデータ格納フィールドおよびオーバーヘッド格納フィールドを含み、該第1のオーバーヘッド格納フィールドは、該空きブロックを識別するアドレス値を格納するアドレスフィールドを有し、該第2のセクタ格納空間はデータ格納フィールドおよびオーバーヘッド格納フィールドを含み、該第2のオーバヘッド格納フィールドは、該空きブロックの状態を示す状態フラグフィールドを有する、工程と、
    該第1のセクタ格納空間上で書き込み動作を実行する工程であって、データが該データ格納フィールドに書き込まれ、該アドレス値が該アドレスフィールドに書き込まれる、工程と、
    さらなる書き込み動作を実行する工程であって、該特定の群のセクタ情報が該空きブロックに書き込まれる、工程と、
    なおさらなる書き込み動作を実行する工程であって、セクタ情報は、該以前に書き込まれたブロックのセクタ格納空間から該空きブロック内部の同じセクタ格納空間に移動する、工程と、
    該空きブロックの該第2の格納空間にセクタ情報を書き込む際に、該状態フラグフィールドの内容を変更して、該空きブロックへの書き込みの完了を示す、工程と
    を含む、方法。
  14. ホストおよび不揮発性メモリユニットと共に使用される固体格納システムであって、該ホストは、セクタに組織化されたデジタル情報を該不揮発性メモリユニットから読み出し、かつ該不揮発性メモリユニットに書き込み、該不揮発性メモリユニットは、1以上の不揮発性メモリデバイスを含み、各不揮発性メモリデバイスは、該セクタ情報を格納するための複数のセクタ格納空間を有する少なくとも1つのブロックを含み、各セクタ格納空間は、データおよびオーバヘッド情報を格納するための格納空間を含み、該固体格納システムは、
    該ホストによって識別される特定の群のセクタ格納空間にセクタ情報を再書き込みするために該ホストと該不揮発性メモリユニットとの間に結合されるコントローラデバイスであって、該特定の群のセクタ格納空間は、該ホストによって以前に書き込まれており、該コントローラデバイスは、複数のセクタ格納空間を有する空きブロックを識別し、該空きブロックの状態を示す状態フラグ値を格納するための状態フラグフィールドを含むように該セクタ格納空間の1つを構成し、該コントローラデバイスは、以前に書き込まれたセクタ格納空間の該内容を該空きブロック内部の同じセクタの格納空間に転送し、該状態フラグ値を変更して該空きブロックの状態が「処理中」であることを示し、該空きブロック内部の該特定の群のセクタ格納空間にセクタ情報を書き込み、該特定のセクタ格納空間の最後の1つを書き込む間、該状態フラグフィールドを変更して該空きブロックの状態が「ブロック完了」であることを示す、コントローラデバイスを備え、
    ブロックを再書き込みするための書き込み動作の数は、1つの追加的な書き込み動作を加えたブロック内部のセクタ格納空間の数まで減少され、それによって該システムの全性能が増大する、固体格納システム。
  15. 前記状態フラグフィールドは、前記空きブロックの最後のセクタ格納空間内部に存在する、請求項14に記載の固体格納システム。
  16. 前記コントローラデバイスが前記以前に書き込まれたセクタ格納空間を消去する手段を含む、請求項14に記載の固体格納システム。
  17. 前記空きブロックは、前記不揮発性メモリユニット内部の該空きブロックを識別するアドレス情報を格納するためのアドレスフィールドをさらに含む、請求項14に記載の固体格納システム。
  18. 前記空きブロックは、該空きブロックが欠陥があるか否かを示すフラグフィールドをさらに含む、請求項14に記載の固体格納システム。
JP2001512381A 1999-06-11 2000-06-09 不揮発性メモリ上で実行されるブロック書き込み動作時間を低減させる方法および装置 Expired - Lifetime JP4695801B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/330,278 US6122195A (en) 1997-03-31 1999-06-11 Method and apparatus for decreasing block write operation times performed on nonvolatile memory
US09/330,278 1999-06-11
PCT/US2000/015777 WO2000077791A1 (en) 1999-06-11 2000-06-09 Method and apparatus for decreasing block write operation times performed on nonvolatile memory

Publications (2)

Publication Number Publication Date
JP2005516264A true JP2005516264A (ja) 2005-06-02
JP4695801B2 JP4695801B2 (ja) 2011-06-08

Family

ID=23289052

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001512381A Expired - Lifetime JP4695801B2 (ja) 1999-06-11 2000-06-09 不揮発性メモリ上で実行されるブロック書き込み動作時間を低減させる方法および装置

Country Status (5)

Country Link
US (2) US6122195A (ja)
EP (1) EP1410399B1 (ja)
JP (1) JP4695801B2 (ja)
AU (1) AU5474100A (ja)
WO (1) WO2000077791A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012506093A (ja) * 2008-10-15 2012-03-08 マイクロン テクノロジー, インク. ソリッドステート記憶装置内のホットメモリブロックテーブル
KR101571763B1 (ko) * 2008-07-07 2015-12-07 삼성전자주식회사 적응적 제어 스킴을 가지는 메모리 장치 및 그 동작 방법

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6978342B1 (en) 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US6728851B1 (en) 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US8171203B2 (en) 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
JP3714969B2 (ja) * 1998-03-02 2005-11-09 レクサー・メディア・インコーポレイテッド 改良されたオペレーティングモード検出機能を備えたフラッシュメモリーカード及びユーザフレンドリなインターフェーシングシステム
JP2990181B1 (ja) * 1998-09-28 1999-12-13 日本電気アイシーマイコンシステム株式会社 フラッシュメモリ、フラッシュメモリを備えたマイクロコンピュータおよびフラッシュメモリへのプログラム格納方法
US6532514B1 (en) * 1999-12-22 2003-03-11 Texas Instruments Incorporated System and method for handling a power supply interruption in a non-volatile memory
US6426893B1 (en) 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
JP2001306393A (ja) * 2000-04-20 2001-11-02 Mitsubishi Electric Corp 記憶装置
JP2002025181A (ja) * 2000-07-13 2002-01-25 Fujitsu Ltd 情報再生装置および情報記録装置
US7167944B1 (en) 2000-07-21 2007-01-23 Lexar Media, Inc. Block management for mass storage
US7155559B1 (en) 2000-08-25 2006-12-26 Lexar Media, Inc. Flash memory architecture with separate storage of overhead and user data
US6772274B1 (en) 2000-09-13 2004-08-03 Lexar Media, Inc. Flash memory system and method implementing LBA to PBA correlation within flash memory array
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US6700827B2 (en) 2001-02-08 2004-03-02 Integrated Device Technology, Inc. Cam circuit with error correction
EP1399819A2 (en) * 2001-04-24 2004-03-24 Koninklijke Philips Electronics N.V. Improved error correction scheme for use in flash memory allowing bit alterability
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
GB0123415D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
GB0123421D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Power management system
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
GB0123410D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Memory system for data storage and retrieval
WO2003065210A1 (fr) * 2002-01-31 2003-08-07 Matsushita Electric Industrial Co., Ltd. Appareil de traitement d'informations, appareil de gestion de memoire, procede de gestion de memoire et procede de traitement d'informations
US6839826B2 (en) 2002-02-06 2005-01-04 Sandisk Corporation Memory device with pointer structure to map logical to physical addresses
US7231643B1 (en) 2002-02-22 2007-06-12 Lexar Media, Inc. Image rescue system including direct communication between an application program and a device driver
AU2003211154A1 (en) * 2002-02-22 2003-09-09 Lexar Media, Inc. Removable memory media with integral indicator light
US20030220781A1 (en) * 2002-02-25 2003-11-27 Oak Technology, Inc. Communication architecture utilizing emulator interface
US20040049624A1 (en) * 2002-09-06 2004-03-11 Oak Technology, Inc. Network to computer internal interface
JP4058322B2 (ja) * 2002-10-07 2008-03-05 株式会社ルネサステクノロジ メモリカード
US7234036B1 (en) * 2002-10-28 2007-06-19 Sandisk Corporation Method and apparatus for resolving physical blocks associated with a common logical block
US7193876B1 (en) 2003-07-15 2007-03-20 Kee Park Content addressable memory (CAM) arrays having memory cells therein with different susceptibilities to soft errors
US6870749B1 (en) 2003-07-15 2005-03-22 Integrated Device Technology, Inc. Content addressable memory (CAM) devices with dual-function check bit cells that support column redundancy and check bit cells with reduced susceptibility to soft errors
US6987684B1 (en) 2003-07-15 2006-01-17 Integrated Device Technology, Inc. Content addressable memory (CAM) devices having multi-block error detection logic and entry selective error correction logic therein
US7139863B1 (en) 2003-09-26 2006-11-21 Storage Technology Corporation Method and system for improving usable life of memory devices using vector processing
US7304875B1 (en) 2003-12-17 2007-12-04 Integrated Device Technology. Inc. Content addressable memory (CAM) devices that support background BIST and BISR operations and methods of operating same
US8504798B2 (en) * 2003-12-30 2013-08-06 Sandisk Technologies Inc. Management of non-volatile memory systems having large erase blocks
US7631138B2 (en) 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US7725628B1 (en) 2004-04-20 2010-05-25 Lexar Media, Inc. Direct secondary device interface by a host
US7370166B1 (en) 2004-04-30 2008-05-06 Lexar Media, Inc. Secure portable storage device
US7464306B1 (en) 2004-08-27 2008-12-09 Lexar Media, Inc. Status of overall health of nonvolatile memory
US7594063B1 (en) 2004-08-27 2009-09-22 Lexar Media, Inc. Storage capacity status
EP1630657A1 (en) * 2004-08-30 2006-03-01 STMicroelectronics S.r.l. Embedded storage device with integrated data-management functions and storage system incorporating it
US7424648B2 (en) * 2005-03-10 2008-09-09 Matsushita Electric Industrial Co., Ltd. Nonvolatile memory system, nonvolatile memory device, data read method, and data read program
US8462109B2 (en) 2007-01-05 2013-06-11 Invensense, Inc. Controlling and accessing content using motion processing on mobile devices
US7934423B2 (en) 2007-12-10 2011-05-03 Invensense, Inc. Vertically integrated 3-axis MEMS angular accelerometer with integrated electronics
US8952832B2 (en) * 2008-01-18 2015-02-10 Invensense, Inc. Interfacing application programs and motion sensors of a device
US8250921B2 (en) 2007-07-06 2012-08-28 Invensense, Inc. Integrated motion processing unit (MPU) with MEMS inertial sensing and embedded digital electronics
US8122322B2 (en) 2007-07-31 2012-02-21 Seagate Technology Llc System and method of storing reliability data
JP5520098B2 (ja) * 2010-03-24 2014-06-11 スパンション エルエルシー データ処理方法、プログラムおよびシステム
US8625320B1 (en) 2010-08-31 2014-01-07 Netlogic Microsystems, Inc. Quaternary content addressable memory cell having one transistor pull-down stack
US8582338B1 (en) 2010-08-31 2013-11-12 Netlogic Microsystems, Inc. Ternary content addressable memory cell having single transistor pull-down stack
US8553441B1 (en) 2010-08-31 2013-10-08 Netlogic Microsystems, Inc. Ternary content addressable memory cell having two transistor pull-down stack
US8462532B1 (en) 2010-08-31 2013-06-11 Netlogic Microsystems, Inc. Fast quaternary content addressable memory cell
US8773880B2 (en) 2011-06-23 2014-07-08 Netlogic Microsystems, Inc. Content addressable memory array having virtual ground nodes
US8837188B1 (en) 2011-06-23 2014-09-16 Netlogic Microsystems, Inc. Content addressable memory row having virtual ground and charge sharing
US8750043B2 (en) * 2012-08-16 2014-06-10 Winbond Electronics Corp. Data storage device and control method for non-volatile memory
CN103927128B (zh) * 2013-07-11 2017-03-01 威盛电子股份有限公司 数据储存装置以及快闪存储器控制方法
US11635913B2 (en) * 2017-12-12 2023-04-25 Winbond Electronics Corp. NOR flash memory apparatus and recover and read method thereof
US11416058B2 (en) * 2020-10-28 2022-08-16 Western Digital Technologies, Inc. Efficient data storage usage associated with ungraceful shutdown

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08212019A (ja) * 1995-01-31 1996-08-20 Mitsubishi Electric Corp 半導体ディスク装置
JPH09213064A (ja) * 1996-02-01 1997-08-15 Tokyo Electron Ltd メモリ書込み/読出し方法及びメモリ制御装置
WO1998044420A1 (en) * 1997-03-31 1998-10-08 Lexar Media, Inc. Moving sectors within a block in a flash memory
JPH11110305A (ja) * 1997-09-30 1999-04-23 Sony Corp 記憶装置、データ処理システム並びにデータの書き込み及び読み出し方法
JP2000132979A (ja) * 1998-10-22 2000-05-12 Hitachi Ltd フラッシュメモリを複数使用した外部記憶装置
JP2001051889A (ja) * 1999-05-31 2001-02-23 Sharp Corp 不揮発性半導体記憶装置を用いたファイルシステム

Family Cites Families (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4210959A (en) * 1978-05-10 1980-07-01 Apple Computer, Inc. Controller for magnetic disc, recorder, or the like
FR2426938A1 (fr) * 1978-05-26 1979-12-21 Cii Honeywell Bull Dispositif de detection de secteurs defectueux et d'allocation de secteurs de remplacement dans une memoire a disques
US4355376A (en) * 1980-09-30 1982-10-19 Burroughs Corporation Apparatus and method for utilizing partially defective memory devices
JPS5764383A (en) * 1980-10-03 1982-04-19 Toshiba Corp Address converting method and its device
JPS57132256A (en) * 1981-02-09 1982-08-16 Sony Corp Memory device
JPS5877034A (ja) * 1981-10-30 1983-05-10 Hitachi Ltd 記録方法
US4450559A (en) * 1981-12-24 1984-05-22 International Business Machines Corporation Memory system with selective assignment of spare locations
JPS58215794A (ja) * 1982-06-08 1983-12-15 Toshiba Corp 不揮発性メモリ装置
JPS58215795A (ja) * 1982-06-08 1983-12-15 Toshiba Corp 不揮発性メモリ装置
US4498146A (en) * 1982-07-30 1985-02-05 At&T Bell Laboratories Management of defects in storage media
JPS5945695A (ja) * 1982-09-07 1984-03-14 Fujitsu Ltd Icメモリ
US4710871A (en) * 1982-11-01 1987-12-01 Ncr Corporation Data transmitting and receiving apparatus
AU557723B2 (en) * 1982-12-17 1987-01-08 Blue Circle Southern Cement Ltd. Electronic memory system
JPS59162695A (ja) * 1983-03-07 1984-09-13 Nec Corp 記憶装置
US4896262A (en) * 1984-02-24 1990-01-23 Kabushiki Kaisha Meidensha Emulation device for converting magnetic disc memory mode signal from computer into semiconductor memory access mode signal for semiconductor memory
JPS60212900A (ja) * 1984-04-09 1985-10-25 Nec Corp 半導体固定記憶装置
JPS6196598A (ja) * 1984-10-17 1986-05-15 Fuji Electric Co Ltd 電気的消去可能なp−romのカウントデ−タ記憶方法
US4654847A (en) * 1984-12-28 1987-03-31 International Business Machines Apparatus for automatically correcting erroneous data and for storing the corrected data in a common pool alternate memory array
JPS61208673A (ja) * 1985-03-12 1986-09-17 Matsushita Electric Ind Co Ltd 情報記録再生装置
US4744062A (en) * 1985-04-23 1988-05-10 Hitachi, Ltd. Semiconductor integrated circuit with nonvolatile memory
JPS62102482A (ja) * 1985-10-28 1987-05-12 Matsushita Electric Ind Co Ltd 情報記録再生装置
JP2664137B2 (ja) * 1985-10-29 1997-10-15 凸版印刷株式会社 Icカード
US4800520A (en) * 1985-10-29 1989-01-24 Kabushiki Kaisha Toshiba Portable electronic device with garbage collection function
US4924331A (en) * 1985-11-20 1990-05-08 Seagate Technology, Inc. Method for mapping around defective sectors in a disc drive
US4746998A (en) * 1985-11-20 1988-05-24 Seagate Technology, Inc. Method for mapping around defective sectors in a disc drive
US4757474A (en) * 1986-01-28 1988-07-12 Fujitsu Limited Semiconductor memory device having redundancy circuit portion
JP2685173B2 (ja) * 1986-05-31 1997-12-03 キヤノン株式会社 メモリ書き込み制御方法
JPH07109717B2 (ja) * 1986-05-31 1995-11-22 キヤノン株式会社 メモリ書き込み制御方法
US4953122A (en) * 1986-10-31 1990-08-28 Laserdrive Ltd. Pseudo-erasable and rewritable write-once optical disk memory system
JPS63183700A (ja) * 1987-01-26 1988-07-29 Mitsubishi Electric Corp Eepromアクセス方法
US5448517A (en) * 1987-06-29 1995-09-05 Kabushiki Kaisha Toshiba Electrically programmable nonvolatile semiconductor memory device with NAND cell structure
US5198380A (en) * 1988-06-08 1993-03-30 Sundisk Corporation Method of highly compact EPROM and flash EEPROM devices
US5168465A (en) * 1988-06-08 1992-12-01 Eliyahou Harari Highly compact EPROM and flash EEPROM devices
US5268870A (en) * 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
US5293560A (en) * 1988-06-08 1994-03-08 Eliyahou Harari Multi-state flash EEPROM system using incremental programing and erasing methods
US5268319A (en) * 1988-06-08 1993-12-07 Eliyahou Harari Highly compact EPROM and flash EEPROM devices
US5268318A (en) * 1988-06-08 1993-12-07 Eliyahou Harari Highly compact EPROM and flash EEPROM devices
US4914529A (en) * 1988-07-18 1990-04-03 Western Digital Corp. Data disk defect handling using relocation ID fields
US5070474A (en) * 1988-07-26 1991-12-03 Disk Emulation Systems, Inc. Disk emulation system
US5535328A (en) * 1989-04-13 1996-07-09 Sandisk Corporation Non-volatile memory system card with flash erasable sectors of EEprom cells including a mechanism for substituting defective cells
EP1031992B1 (en) * 1989-04-13 2006-06-21 SanDisk Corporation Flash EEPROM system
US5226168A (en) * 1989-04-25 1993-07-06 Seiko Epson Corporation Semiconductor memory configured to emulate floppy and hard disk magnetic storage based upon a determined storage capacity of the semiconductor memory
US5200959A (en) * 1989-10-17 1993-04-06 Sundisk Corporation Device and method for defect handling in semi-conductor memory
US5303198A (en) * 1990-09-28 1994-04-12 Fuji Photo Film Co., Ltd. Method of recording data in memory card having EEPROM and memory card system using the same
EP0489204B1 (en) * 1990-12-04 1995-08-16 Hewlett-Packard Limited Reprogrammable data storage device
GB2251324B (en) * 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
US5270979A (en) * 1991-03-15 1993-12-14 Sundisk Corporation Method for optimum erasing of EEPROM
US5396468A (en) * 1991-03-15 1995-03-07 Sundisk Corporation Streamlined write operation for EEPROM system
US5504760A (en) * 1991-03-15 1996-04-02 Sandisk Corporation Mixed data encoding EEPROM system
US5663901A (en) * 1991-04-11 1997-09-02 Sandisk Corporation Computer memory cards using flash EEPROM integrated circuit chips and memory-controller systems
JPH04332999A (ja) * 1991-05-07 1992-11-19 Hitachi Koki Co Ltd メモリの使用方法
JP2582487B2 (ja) * 1991-07-12 1997-02-19 インターナショナル・ビジネス・マシーンズ・コーポレイション 半導体メモリを用いた外部記憶システム及びその制御方法
US5430859A (en) * 1991-07-26 1995-07-04 Sundisk Corporation Solid state memory system including plural memory chips and a serialized bus
US5438573A (en) * 1991-09-13 1995-08-01 Sundisk Corporation Flash EEPROM array data and header file structure
US5778418A (en) * 1991-09-27 1998-07-07 Sandisk Corporation Mass computer storage system having both solid state and rotating disk types of memory
JPH05151097A (ja) * 1991-11-28 1993-06-18 Fujitsu Ltd 書換回数制限型メモリのデータ管理方式
JPH05233426A (ja) * 1992-02-20 1993-09-10 Fujitsu Ltd フラッシュ・メモリ使用方法
US5532962A (en) * 1992-05-20 1996-07-02 Sandisk Corporation Soft errors handling in EEPROM devices
US5315541A (en) * 1992-07-24 1994-05-24 Sundisk Corporation Segmented column memory array
US5428621A (en) * 1992-09-21 1995-06-27 Sundisk Corporation Latent defect handling in EEPROM devices
US5337275A (en) * 1992-10-30 1994-08-09 Intel Corporation Method for releasing space in flash EEPROM memory array to allow the storage of compressed data
US5341330A (en) * 1992-10-30 1994-08-23 Intel Corporation Method for writing to a flash memory array during erase suspend intervals
US5357475A (en) * 1992-10-30 1994-10-18 Intel Corporation Method for detaching sectors in a flash EEPROM memory array
JP3641280B2 (ja) * 1992-10-30 2005-04-20 インテル・コーポレーション フラッシュeepromアレイのクリーン・アップすべきブロックを決定する方法
US5479638A (en) * 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
US5485595A (en) * 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
US5388083A (en) * 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US5353256A (en) * 1993-06-30 1994-10-04 Intel Corporation Block specific status information in a memory device
US5422842A (en) * 1993-07-08 1995-06-06 Sundisk Corporation Method and circuit for simultaneously programming and verifying the programming of selected EEPROM cells
US5566314A (en) * 1993-08-30 1996-10-15 Lucent Technologies Inc. Flash memory device employing unused cell arrays to update files
US5661053A (en) * 1994-05-25 1997-08-26 Sandisk Corporation Method of making dense flash EEPROM cell array and peripheral supporting circuits formed in deposited field oxide with the use of spacers
US5508971A (en) * 1994-10-17 1996-04-16 Sandisk Corporation Programmable power generation circuit for flash EEPROM memory systems
US5745410A (en) * 1995-11-17 1998-04-28 Macronix International Co., Ltd. Method and system for soft programming algorithm
JPH11203886A (ja) * 1998-01-13 1999-07-30 Mitsubishi Electric Corp 不揮発性メモリおよびそれを具備する半導体装置
US6026021A (en) * 1998-09-10 2000-02-15 Winbond Electronics Corp. America Semiconductor memory array partitioned into memory blocks and sub-blocks and method of addressing

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08212019A (ja) * 1995-01-31 1996-08-20 Mitsubishi Electric Corp 半導体ディスク装置
JPH09213064A (ja) * 1996-02-01 1997-08-15 Tokyo Electron Ltd メモリ書込み/読出し方法及びメモリ制御装置
WO1998044420A1 (en) * 1997-03-31 1998-10-08 Lexar Media, Inc. Moving sectors within a block in a flash memory
JPH11110305A (ja) * 1997-09-30 1999-04-23 Sony Corp 記憶装置、データ処理システム並びにデータの書き込み及び読み出し方法
JP2000132979A (ja) * 1998-10-22 2000-05-12 Hitachi Ltd フラッシュメモリを複数使用した外部記憶装置
JP2001051889A (ja) * 1999-05-31 2001-02-23 Sharp Corp 不揮発性半導体記憶装置を用いたファイルシステム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101571763B1 (ko) * 2008-07-07 2015-12-07 삼성전자주식회사 적응적 제어 스킴을 가지는 메모리 장치 및 그 동작 방법
JP2012506093A (ja) * 2008-10-15 2012-03-08 マイクロン テクノロジー, インク. ソリッドステート記憶装置内のホットメモリブロックテーブル

Also Published As

Publication number Publication date
US6122195A (en) 2000-09-19
EP1410399A1 (en) 2004-04-21
US6151247A (en) 2000-11-21
AU5474100A (en) 2001-01-02
JP4695801B2 (ja) 2011-06-08
WO2000077791A1 (en) 2000-12-21
EP1410399B1 (en) 2013-03-27
EP1410399A4 (en) 2007-08-01

Similar Documents

Publication Publication Date Title
JP4695801B2 (ja) 不揮発性メモリ上で実行されるブロック書き込み動作時間を低減させる方法および装置
US6034897A (en) Space management for managing high capacity nonvolatile memory
EP1729304B1 (en) Space management for managing high capacity nonvolatile memory
US8041884B2 (en) Controller for non-volatile memories and methods of operating the memory controller
JP4132086B2 (ja) フラッシュメモリ内のブロックにおける移動セクタ
US9489301B2 (en) Memory systems
US5953737A (en) Method and apparatus for performing erase operations transparent to a solid state storage system
US6076137A (en) Method and apparatus for storing location identification information within non-volatile memory devices
US5963983A (en) Method and apparatus for dynamically creating conversion tables to access a semiconductor memory device
US6145051A (en) Moving sectors within a block of information in a flash memory mass storage architecture
USRE45222E1 (en) Method of writing of writing to a flash memory including data blocks and log blocks, using a logical address having a block address portion and page identifying portion, a block address table and a page table
US6978342B1 (en) Moving sectors within a block of information in a flash memory mass storage architecture
WO1999044113A9 (en) Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
JP2004533029A (ja) 不揮発性メモリにおける部分的ブロックデータのプログラミング動作および読出し動作
JP2007280428A (ja) メモリ管理
JPH08137634A (ja) フラッシュディスクカード
KR20020092261A (ko) 멀티-플레인 구조의 플래시 메모리 관리 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070514

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100707

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100714

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101013

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101020

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101112

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101119

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101213

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101220

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110112

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

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

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

Free format text: PAYMENT UNTIL: 20140304

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4695801

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

EXPY Cancellation because of completion of term