JPWO2007066720A1 - 不揮発性記憶装置及びデータ読み出し方法及び管理テーブル作成方法 - Google Patents

不揮発性記憶装置及びデータ読み出し方法及び管理テーブル作成方法 Download PDF

Info

Publication number
JPWO2007066720A1
JPWO2007066720A1 JP2007549172A JP2007549172A JPWO2007066720A1 JP WO2007066720 A1 JPWO2007066720 A1 JP WO2007066720A1 JP 2007549172 A JP2007549172 A JP 2007549172A JP 2007549172 A JP2007549172 A JP 2007549172A JP WO2007066720 A1 JPWO2007066720 A1 JP WO2007066720A1
Authority
JP
Japan
Prior art keywords
data
physical
page
block
temporary
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
JP2007549172A
Other languages
English (en)
Other versions
JP4633802B2 (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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial 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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Publication of JPWO2007066720A1 publication Critical patent/JPWO2007066720A1/ja
Application granted granted Critical
Publication of JP4633802B2 publication Critical patent/JP4633802B2/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/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

不揮発性記憶装置(101)は、複数の物理ブロックから構成され、各物理ブロックが所定の書き込み単位であるページを複数ページ含む不揮発性メモリ(103)と、物理ブロックに格納されるデータの論理アドレスと物理アドレスの対応情報を格納する論物変換テーブル(106)と、ページのサイズより小さいサイズのデータを格納する物理ブロックである一時ブロックと、一時ブロックに格納されるデータに関する論理アドレスと物理アドレスとの対応情報を格納する一時テーブル(107)とを備える。

Description

本発明は、フラッシュメモリ等の不揮発性メモリを用いた記憶装置並びにその書込み方法及び読み出し方法に関する。
近年、不揮発性メモリを搭載したメモリカードはデジタルカメラや携帯電話の記憶媒体としてその市場を拡大している。そしてメモリカード容量の増加に伴い、データファイルや静止画等の小容量の記録からより大容量が必要となる動画記録へとその用途は広がっている。このため、従来、不揮発性メモリを搭載した記録媒体に関し種々の考案がなされている(例えば、特許文献1〜4)。
大容量のメモリカードは大量のデータを保存でき、種々のデータを格納できることから、その管理情報も多様化している。例えば、管理情報として、ファイルアクセスを高速化するためのメタデータ管理ファイルや、データ種別毎に管理した仮想ディレクトリ構造のファイルや、従来のFATシステムとは異なるデータベース型のファイルシステム等がある。これらはいずれも管理の容易化を目的としている。このような多様化する管理情報は、いずれもサイズが小さいことから、結果として、セクタ単位のデータ書き込みの頻度が増加する要因となる。
特開2001−154909号公報 特開平11−53248号公報 特開2002−324008号公報 特開平5−216780号公報
フラッシュメモリの大容量化にともない、消去単位である消去ブロックのサイズが大きくなる。その結果、上記の多様化した管理情報のようなランダム性のある小サイズのデータの書き込みが増加すると、フラッシュメモリ内の物理ブロック単位でのデータのコピーが頻発し、書き込み性能が低下する。
また、フラッシュメモリの大容量化の手法としてメモリセルの多値化がある。多値メモリセルは2値メモリセルに比して制御が複雑であり信頼性の確保が難しいことから、2値のメモリセルと同様の信頼性を確保するためには、メモリセルへのストレスを低減する必要がある。そのため、多値メモリセルでは、複数セクタからなるページを書き込み単位とし、そのページに対して複数回の書き込みは認めていないようにする。つまり、多値メモリセルの場合、ページサイズ未満のデータを書き込む場合であっても、ページ単位で書き込む必要があり、これは書き込み性能の低下を招く要因となる。
本発明は上記課題を解決すべくなされたものであり、その目的とするところは、所定の書き込み単位(例えばページ単位)で書き込みを行わなければならないフラッシュメモリ中の複数の領域に、書き込み単位未満のサイズのデータの書き込みを行う際に、高速な書き込みを可能とする半導体記憶装置を提供することにある。
本発明の第1の態様において、論理アドレスに基づきデータの書込みが可能な不揮発性記憶装置を提供する。
不揮発性記憶装置は、
論理アドレスに対応する物理アドレスに基づきデータの書込みが行われ、複数の物理ブロックから構成され、各物理ブロックが所定の書き込み単位であるページを複数ページ含む不揮発性メモリと、物理ブロックに格納されるデータの論理アドレスと物理アドレスの対応情報を格納する論物変換テーブルと、
ページのサイズより小さいサイズのデータを格納する物理ブロックである一時ブロックと、
一時ブロックに格納されるデータに関する論理アドレスと物理アドレスとの対応情報を格納する一時テーブルとを備える。
本発明の第2の態様において、論理アドレスに基づきデータの書込みが可能な不揮発性メモリを含む不揮発性記憶装置の動作制御を行うメモリコントローラを提供する。
不揮発性メモリは、論理アドレスに対応する物理アドレスに基づきデータの書込みが行われ、複数の物理ブロックから構成される。各物理ブロックは所定の書き込み単位であるページを複数ページ含む。
メモリコントローラは、物理ブロックに格納されるデータの論理アドレスと物理アドレスの対応情報を格納する論物変換テーブルと、ページのサイズより小さいサイズのデータを格納する物理ブロックである一時ブロックと、一時ブロックに格納されるデータに関する論理アドレスと、物理アドレスとの対応情報を格納する一時テーブルとを有する。メモリコントローラは、書き込み要求されたデータのサイズがページのサイズより小さい場合に、その要求されたデータを一時ブロックに書き込む。
本発明の第3の態様において、論理アドレスに基づきデータの書込みが可能な不揮発性記憶装置に対するデータ書き込み方法を提供する。
不揮発性記憶装置は、論理アドレスに対応する物理アドレスによりデータの書込みが行われ、複数の物理ブロックから構成され、各物理ブロックは所定の書き込み単位であるページを複数ページ含む不揮発性メモリと、物理ブロックに格納されるデータの論理アドレスと物理アドレスの対応情報を格納する論物変換テーブルと、ページのサイズより小さいサイズのデータを格納する物理ブロックである一時ブロックとを含む。
本書き込み方法は、外部からデータの書き込み要求を受け、書き込みデータのアドレスに基づいて、書き込みが要求されたデータを前記一時ブロックへ書き込むか否かの判断を行う。
本発明の第4の態様において、論理アドレスに基づきデータの書込みが可能な不揮発性記憶装置に対するデータ読み出し方法を提供する。
不揮発性記憶装置は、論理アドレスに対応する物理アドレスによりデータの読み出しが行われ、複数の物理ブロックから構成され、各物理ブロックは所定の書き込み単位であるページを複数ページ含む不揮発性メモリと、物理ブロックに格納されるデータの論理アドレスと物理アドレスの対応情報を格納する論物変換テーブルと、ページのサイズより小さいサイズのデータを格納する物理ブロックである一時ブロックと、一時ブロックに格納されるデータに関する論理アドレスと物理アドレスとの対応情報を格納する一時テーブルとを含む。
本読み出し方法は、データの読み出し要求を受けたときに、一時テーブルを参照し、一時テーブル内に読み出しアドレスの登録があるときは、一時ブロックからデータを読み出し、一時テーブル内に読み出しアドレスの登録がないときは、論物変換テーブルを参照してデータを読み出す。
本発明の第5の態様において、論理アドレスに基づきデータの書込み、読み出しが可能な不揮発性記憶装置における管理テーブルの作成方法を提供する。
不揮発性記憶装置は、論理アドレスに対応する物理アドレスに基づいてデータの書込み、読み出しが行われ、複数の物理ブロックから構成され、各物理ブロックは所定の書き込み単位であるページを複数ページ含む不揮発性メモリと、物理ブロックに格納されるデータの論理アドレスと物理アドレスの対応情報を格納する論物変換テーブルと、ページのサイズより小さいサイズのデータを格納する物理ブロックである一時ブロックと、一時ブロックに格納されるデータに関する論理アドレスと物理アドレスとの対応情報を格納する管理テーブルである一時テーブルとを含む。本作成方法は、一時ブロックにおいて最後に書き込まれたページを決定し、その決定したページの情報に基づいて前記一時テーブルを作成する。
本発明によれば、フラッシュメモリ等の所定の消去単位を有し、かつ所定の書き込み単位(例えばページ単位)で書き込みを行わなければならないフラッシュメモリを有する不揮発性メモリにおいて、所定の書き込み単位(例えばページ単位)より小さいサイズのデータの書き込みにおいては、通常の書き込み動作で使用する記録領域(物理ブロック)とは異なる記録領域に書き込みを行うようにする。これにより、データ書き込みに伴う記録領域間のデータのコピー回数を低減でき、結果として書き込み処理の高速化を図れる。
本発明の不揮発性記憶装置の一実施形態であるメモリカードの構成を示す図 フラッシュメモリの内部の構成及び物理ブロックの構成を示す図 メモリカードの内部における論理的なデータの管理を示した図 論物変換テーブルの構成例を示す図 フラッシュメモリの一時ページのデータフォーマットを示す図 一時ブロックにおける一時ページデータの格納例を示す図 一時テーブル107のデータフォーマットを示す図 一時テーブル作成処理のフローチャート データ書き込み処理のフローチャート データ無効化処理を説明するための図 データ読み出し処理のフローチャート 一時ブロック書き込み処理のフローチャート (a)空き領域がない一時ブロックを説明した図、(b)空き一時ページがない一時ブロックを説明した図 一時ブロックコピー処理のフローチャート 一時ブロックコピー処理を説明した図 (a)一時ページ解消処理のフローチャート、(b)一時ページの解消を説明するための図 本発明による第1のアクセス例を説明するための図 第1のアクセス例における、データ書き込み時の一時ブロックにおける状態の遷移を示した図 第1のアクセス例における、データ書き込み時の一時ブロックにおける状態の遷移を示した図(図17のつづき) 従来の方法による、データ書き込み時の一時ブロックにおける状態の遷移を示した図 従来の方法による、データ書き込み時の一時ブロックにおける状態の遷移を示した図(図19のつづき) 本発明による第2のアクセス例を説明するための図 第2のアクセス例における、データ書き込み時の一時ブロックにおける状態の遷移を示した図 第1のアクセス例における、データ書き込み時の一時ブロックにおける状態の遷移を示した図(図22のつづき) 第1のアクセス例における、データ書き込み時の一時ブロックにおける状態の遷移を示した図(図23のつづき)
符号の説明
31 論理ブロック
80 一時ブロック
85 通常ブロック
101 メモリカード
102 ホスト
103 フラッシュメモリ
104 コントローラ
105 消去済みテーブル
106 論物変換テーブル
107 一時テーブル
110 メモリコントローラ
301 論理ページ
以下、添付の図面を参照し、本発明の実施形態について説明する。
1.メモリカードの構成
図1に本発明の不揮発性記憶装置の一実施形態であるメモリカードの構成を示す。メモリカード101は外部機器であるホスト102からデータの読み出し、書込みが可能な記憶装置である。メモリカード101は、不揮発性の記憶素子であるフラッシュメモリ103と、フラッシュメモリ103に対するデータの書込み、読み出しを制御するメモリコントローラ110とを備える。メモリコントローラ110は、コントローラ104と、消去済みテーブル105と、論物変換テーブル106と、一時テーブル107とを備える。メモリコントローラ110及びフラッシュメモリ103は半導体集積回路で実現可能である。
フラッシュメモリ103は128MBの容量を持つ。但し、フラッシュメモリ103の容量はこれに限定されない。また、複数のフラッシュメモリを備えても良い。コントローラ104は、ホスト102からの書込みと読み出し命令を受けてフラッシュメモリ103へのデータの格納、または、フラッシュメモリ103からのデータの読み出しを制御する。本実施形態では、フラッシュメモリ103は、1つのセルにおいて3値以上の情報を格納可能な多値メモリセルとする。但し、フラッシュメモリ103は2値メモリセルであってもよい。
フラッシュメモリ103に格納されるデータは、ファイルシステムの1つであるFATファイルシステムにより管理される。FATファイルシステムは、ファイル管理情報(以下「FAT情報」という。)として、マスターブートレコード・パーティションテーブル、パーティションブートセクタ、FATテーブル1及びFATテーブル2、並びにルートディレクトリエントリを含む。
マスターブートレコード・パーティションテーブルは、データ記録領域を複数のパーティションと呼ばれる領域に分割して管理するための情報を格納する。パーティションブートセクタは、一つのパーティション内の管理情報を格納する。FATテーブル1及びFATテーブル2はそれぞれ、ファイルに含まれるデータの格納位置を示す。ルートディレクトリエントリは、ルートディレクトリ直下に存在するファイル及びディレクトリの情報を格納する。なお、ファイルシステムは他の種類のものでもよい。
図2はフラッシュメモリ103の内部の構成を示す図である。フラッシュメモリ103の記録領域は複数の物理ブロック31から構成される。物理ブロック31は128kBの大きさを持ち、データを一括に消去できる消去単位である。
また、物理ブロック31は複数の物理ページ301から構成される。本実施形態では物理ブロック31は64ページからなる。物理ページ301は、データを書込む際の書込み単位であり、2kBの大きさを持つ。1物理ページは4セクタからなる。物理ページ301は、一旦データが書き込まれると、上書きすることはできない。ホスト102が論理的にデータの書込みを行う単位であるクラスタは16kBである。この値は物理ブロック31の容量128kBとも物理ページ301の容量2kBとも一致しない。そのため、連続する8ページ分の物理ページ301により容量16kBの部分物理ブロックを構成する。部分物理ブロック(16kB)はホスト102からのデータの書込みを想定してコントローラ103が論理的に扱うデータの単位である。1つの物理ブロック31は8つの部分物理ブロックからなり、その部分物理ブロック単位でホスト102からのデータが書込まれる。
図3Aはメモリカード101の内部における論理的なデータの管理を示した図である。メモリカード101に搭載されているフラッシュメモリ103の記憶容量は128MBである。一般的にフラッシュメモリ103には初期不良ブロックや、書き換えを繰り返すことにより不良ブロックが発生することがある。したがって、予めやや少な目の容量をメモリカード101の容量とする。本例では、ホスト102が認識できる実質的な容量は125MBとする。ホスト102から書込みを行う単位である16kB単位を「論理ブロック」402とし、メモリカード101の125MBの容量において、0から順に7999まで割り当てている。8個の論理ブロックで、フラッシュメモリ103の消去単位である物理ブロック31と等しい128kB単位の「論理グループ」401を構成する。
図1において、消去済みテーブル105はフラッシュメモリ103内部の物理ブロックにおいてそれぞれデータが消去済であるか、または、書込み済みであるかを示す情報を格納する。論物変換テーブル106は、ホスト102が指定するアドレス(以下「論理アドレス」という。)と、フラッシュメモリ103内部のアドレス(以下「物理アドレス」という。)との変換を行うテーブルである。
論物変換テーブル106は、論理グループアドレスに対応するアドレスの記録領域に、その論理グループ401に対応する物理ブロック31のアドレスを格納する。論物変換テーブル106の簡単な構成を図3Bに示す。論物変換テーブル106は論理グループアドレスをテーブルのアドレスとして論理アドレスに対応する物理アドレスをテーブルのデータとして持つ。対応する物理ブロック31が存在しない場合には無効値(例えば「0x0000」)をデータとして持つ。
本実施形態では、ホスト102から書き込み要求されたデータのサイズがページサイズに満たない小さなサイズのデータをフラッシュメモリ103に書き込む場合に、特定の物理ブロック31にデータを書込む。本実施形態では、この特定の物理ブロック31のことを「一時ブロック」と呼ぶ。一時テーブル107は、一時ブロックに書き込まれたデータに対する種々の情報、例えば、一時ブロックに書き込まれたデータの物理アドレスと論理アドレス間の対応情報を格納するテーブルである。
一時ブロックと異なり、データサイズに依存せずにフラッシュメモリ103における一般的な書き込み動作が行われる物理ブロック31を「通常ブロック」と呼ぶ。通常ブロックへのデータの書き込みが行われた場合、物理アドレスと論理アドレス間の対応関係は論物変換テーブル106で管理される。
本実施形態のメモリカード101では、ホスト102から書き込み要求のあったデータのサイズがページサイズに満たない小さな単位のデータについては一時ブロック内のページに格納する。
なお、本実施形態では1物理ブロックをデータの管理単位として扱うが、複数の物理ブロック31をまとめてさらに大きな管理単位(以下「物理スーパーブロック」という。)として扱ってもよい。この場合、物理スーパーブロックに対応する論理ブロック群を論理スーパーブロックとして管理し、論物変換テーブル106は物理スーパーブロックと論理スーパーブロックの対応情報を格納する。
1−1.一時ページのフォーマット
図4にフラッシュメモリ103の一時ブロックにおける1ページ(以下「一時ページ」という。)のデータフォーマットを示す。一時ページは、1ページ分のデータ(以下「ページデータ」という。)を格納するデータ領域50と、そのページデータについての管理情報を格納する管理領域60とを有する。データ領域50は4つのセクタデータ領域51を含む。各セクタデータ領域51には、セクタデータ53と、セクタID54と、セクタデータ53とセクタID54についてのECC55とが格納される。
管理領域60は、論理ページアドレスのフィールド61と、有効データ0ページのフィールド62と、有効データ1ページのフィールド63と、有効データ2ページのフィールド64と、有効データ3ページのフィールド65と、管理領域60のECC(Error Correction Code)のフィールド66とを有する。論理ページアドレスのフィールド61はそのページの論理アドレスを格納する。本実施形態では、一時ブロック80において有効なデータとして同時に登録可能な一時ページの最大数は4とする。但し、この最大数は4に限られず、1物理ブロック31における最大ページ数(本例では64)より小さい数であればよい。有効なデータとは、読み出し対象となるデータをいう。無効なデータは一時ブロック80中に格納されていても、読み出しの対象とはならない。有効データ0ページのフィールド62、有効データ1ページのフィールド63、有効データ2ページのフィールド64、有効データ3ページのフィールド65のそれぞれは、有効な一時ページデータとして格納される各ページデータ(有効データ0〜3)の物理ページアドレスをそれぞれ格納する。
図5に、一時ブロック80における一時ページデータの格納例を示す。一時ブロック80は0x00から0x3Fまでの64ページ分の領域(ページ)を有する。図5の例では、0x00から0x21までの各領域にデータが書き込まれている。各ページは管理領域60を有する。本実施形態では、最後に書き込まれた物理ページ内の管理領域60の情報が有効な情報として参照される。つまり、図5の状態では、0x21の物理ページ301の管理情報60(有効データ0ページ、有効データ1ページ、有効データ2ページ及び有効データ3ページ)が参照される。有効データ0ページのフィールド62、有効データ1ページのフィールド63及び有効データ2ページのフィールド64はそれぞれ「0x01」、「0x0E」及び「0x21」を格納している。これは、一時ブロック80内の物理ページアドレス61が「0x01」、「0x0E」、「0x21」であるページに格納されているデータが、一時ページとして有効なデータであることを示している。なお、有効データ3ページのフィールド65が格納する「0xFF」は無効であることを示す。すなわち、図5の例では、有効な一時ページは3ページ分のみ格納されている。図5において、(*)で示されるページは無効になった一時ページである。
図5を参照しながら、一時ページデータの書き込みに伴う管理情報60の遷移を説明する。一時ブロック80は0x00から0x3Fまでの64ページ分の領域を有し、物理ページアドレス0x00のページからデータが書き込まれる。
図5の例では、最初、一時ブロック80内の物理ページアドレス0x00にページデータが書き込まれる。このとき、論理ページアドレスのフィールド61に、そのページデータの論理ページアドレス(図5では、「0x000123」)が書き込まれる。この時点で、一時ブロック80において有効な一時ページデータとして書き込まれているのは、物理アドレス0x00の領域のみである。したがって、有効データ0ページのフィールド62に、そのページアドレス「0x00」が書き込まる。それ以外の有効データページのフィールド63〜65には、無効を示す「0xFF」が書き込まれる。
続いて、次の物理ページアドレス「0x01」にページデータが書き込まれる。このとき、その論理ページアドレス(0x000123)は、物理ページアドレス「0x00」において既に書き込んだページデータのものと同じであるので、先に書き込んだ一時ページデータを無効化する。
無効化処理は、データの書き込みにおいて、一時ブロック80に有効データが存在する論理ページを上書きし、かつ一時ブロックへのデータの書き込みが発生する場合に行なう。
有効なセクタデータの書き込みと共に、管理領域を更新することで無効化を行うので、無効化処理におけるフィールド61には有効な論理ページアドレスを記録する。
無効化は次のように行う。フィールド62に記録された有効データ0ページの値を、新たにページデータを書き込んだ物理ページアドレスである「0x01」で上書きする。その他の有効データページのフィールド63〜65には無効を示す「0xFF」を書き込む。このように有効データ0ページの値を上書きすることで、以前に有効であった一時ページを無効にすることができる。以上のように、本実施形態では、最後に書き込まれたページの管理情報60が、有効なページを特定するために参照される。
なお、ここでは上書きする一時ブロック80に有効データが存在する論理ページと、一時ブロックへのデータの書き込みが発生する論理ページが同じ(0x000123)例を示している。一時ブロック80に有効データが存在する論理ページを上書きし、かつ一時ブロックへのデータの書き込みが発生する場合であれば論理ページが同じである必要はない。
1−2.一時テーブルのフォーマット
図6に、一時テーブル107のデータフォーマットを示す。一時テーブル107において、「一時ブロックの物理アドレス」のフィールドは、一時ブロック80として使用する物理ブロック31の物理アドレスを格納する。「次書き込み物理ページ」のフィールドは、次に書き込みが行われる一時ページの物理アドレスを格納する。「有効データ0の物理ページアドレス」のフィールドは、一時ブロック80において一時ページとして有効なデータを格納するページの物理アドレスを格納する。「有効データ1の物理ページアドレス」、「有効データ2の物理ページアドレス」、及び「有効データ3の物理ページアドレス」の各フィールドも同様である。「有効データ0の物理ページアドレスにあるデータの論理ページアドレス」のフィールドは、「有効データ0の物理ページアドレス」で指定される物理アドレスに格納されたデータの論理ページアドレスを格納する。「有効データ1の物理ページアドレスにあるデータの論理ページアドレス」、「有効データ2の物理ページアドレスにあるデータの論理ページアドレス」、及び「有効データ3の物理ページアドレスにあるデータの論理ページアドレス」の各フィールドも同様である。
例えば、一時ブロックが図5のような状態のとき、一時テーブル107の各フィールドは以下のように値を格納する。
Figure 2007066720
一時テーブル107はメモリカード101の起動時(電源投入時)等に作成され、その後、適宜更新される。ホスト102は起動時等の所定のタイミングで一時テーブル107の値を読み出し、ホスト102のRAM上に格納する。
2.メモリカードの動作
2−1.一時テーブル作成処理
図7のフローチャートを用いて一時テーブル作成処理を説明する。
最初に、一時ブロック80を読み出し、最後に書き込まれた一時ページを検索する(S12)。図5の例では、最終の書き込みページとして物理ページアドレスが「0x21」のページが検索される。次に、最終の書き込みページの管理情報60を参照して、有効な一時ページの情報を取得する(S12)。図5の例では、物理ページアドレスが「0x21」のページの管理情報60から、有効な一時ページとして「0x01」、「0x0E」、「0x21」を得る。その後、取得した有効な一時ページの全てについて、論理ページ情報(論理ページアドレス)を取得する(S13〜S15)。図5の例では、論理ページ情報として「0x000123」、「0x000456」、「0x000777」を得る。なお、図7において、ステップS13、S15は、有効な一時ページの全てについて論理ページアドレスを取得するまで、論理ページアドレスの取得ステップ(S14)を繰り返すことを示している。最後に、取得した情報を用いて一時テーブル107を作成する(S16)。
2−2.データ書き込み
図8のフローチャートを用いてメモリカード101におけるデータ書き込み処理を説明する。以下の処理はメモリカード101内のコントローラ104により実行される。
ホスト102からデータ書き込み要求(書き込みコマンド)を受けると、コントローラ104は、書き込みデータのサイズが1セクタであるか否かを判断する(S21)。1セクタであるときは、一時ブロックへの書き込みを行う(S30)。この処理の詳細は後述する。
一方、1セクタでないときは、書き込みデータがページ内の最終セクタを含むか否かを判断する(S23)。この判断は書き込みデータのアドレスに基づいて可能である。書き込みデータがページ内の最終セクタを含まない場合は、その書き込みデータは、2セクタ又は3セクタのサイズであり、かつ、その書き込み要求に対する最後のデータであることを意味する。一方、書き込みデータがページ内の最終セクタを含む場合、まだそれ以後に続行する書き込みデータが存在することを意味する。
よって、書き込みデータがページ内の最終セクタを含まない場合に、一時ブロック80への書き込みを行う(S30)。ページ内の最終セクタを含む場合、通常ブロックへの書き込みを行う(S24)。
その際、書き込みデータのアドレスが既に一時テーブル107において有効な一時ページとして登録されているか否かを判断する(S25)。登録がある場合は、その一時ページに対する仮無効処理を行う(S26)。仮無効処理としては、例えば、その一時ページに対して無効化を行う必要があることを示すフラグを設定する。ホスト102から書き込みが要求された全てのデータに対して上記処理を繰り返す(S22、S27)。
その後、仮無効処理が発生したか否かを判断し(例えばフラグを確認し)、仮無効処理が発生した場合は、一時ブロック80内の仮無効処理が発生した一時ページについて無効化を行う(S29)。仮無効処理(S26)が発生した場合の無効化(S29)はデータの書き込みにおいて、一時ブロックに有効データが存在する論理ページを上書きし、かつ一時ブロックへのデータの書き込みが発生しない場合に行う。一時ブロック80内の一時ページの無効化は、無効化する有効データページのフィールド62、63、64または65を「0xFF」にし、論理ページアドレスのフィールド61を「0xFFFFFF」にしたデータ(以下「無効化ページデータ」という。)を次書き込み物理ページに新たに追加することで行う。無効化ページデータにおいてデータ領域50には何も書き込まれない。例えば、図9は、物理ページアドレス「0x21」のデータを無効化した例を示す。物理ページアドレス「0x21」のデータを無効化するため、物理ページアドレス「0x22」において、有効データ2ページを「0xFF」に設定し、論理ページアドレスのフィールド61を「0xFFFFFF」に設定した無効化ページデータが書き込まれている。
図8のフローチャートにおいて、一時ブロックへの書き込みの判断についてまとめる。まず、データサイズが1セクターの書き込みは必ず一時ブロックに書き込む。これは、ホスト102がメモリーカード101の書き込み単位未満のデータを更新するときには、メモリーカード101への最小の書き込みサイズである書き込み単位でデータの書き込みを行うために、ホスト102が連続した論理バイトアドレスに対してデータを書き込む時には、データサイズが1セクターの書き込みを、同じ論理セクターアドレスに対して複数回行うことになるからである。データサイズが1セクターでなければ最終アドレスに基づいて、一時ブロックへ書き込みを行なうか否か判断する。最終アドレスがページ内における最終セクタを示さない場合、先頭アドレスにかかわらず一時ブロックに書き込む。
2−3.データ読み出し
図10のフローチャートを用いてメモリカード101からのデータ読み出し処理を説明する。以下の処理はメモリカード101内のコントローラ104により実行される。
ホスト102からデータ読み出し要求を受けると、コントローラ104は一時テーブル107を参照する。そしてホスト102から指定された論理アドレスに基づき、読み出そうとするデータが一時テーブル107に登録されているか否かを判断する(S42)。つまり、コントローラ104は、読み出そうとするデータが一時ブロック80に格納されているか否かを判断する。
一時テーブル107に登録があるときは、一時ブロック80からの読み出しを行う(S43)。より具体的には、一時テーブル107を参照し、ホスト102により指定された論理アドレスに対応する物理ページアドレスを求める。その後、一時ブロック80から、求めた物理ページアドレスのデータを読み出す。
一時テーブル107に登録がないときは、通常ブロックから、ホスト102により指定された読み出しアドレスに基づいて、データを読み出す(S45)。
以上の処理を、ホスト102から指定された範囲の全てのデータを読み出すまで繰り返す(S41、S44)。
2−4.一時ブロック書き込み
図11のフローチャートを用いて、上記の一時ブロック80への書き込み処理(図8のステップS30)を説明する。
一時ブロック80への書き込みを行うために、まず、一時ブロック80に空き領域があるか否かを判断する(S51)。ここで、空き領域がない状態とは、図12(a)に示すように、一時ブロック80の全物理ページにデータが書き込み済みであり、新たにデータを書き込むための空き領域がない状態をいう。
空き領域がない場合、一時ブロックコピー処理を行う(S52)。一時ブロックコピー処理では、空き領域がない一時ブロック80に格納されている有効な物理ページのデータを新たな物理ブロックにコピーするとともに、この新たな物理ブロックを一時ブロック80として使用することで空き領域を設ける。この処理の詳細は後述する。
その後、一時ブロック80の4つの一時ページにおいて空き領域があるか否かを判断する(S53)。ここで、一時ページの空き領域がない状態とは、図12(b)に示すように、4つの有効データページのフィールドに記録された物理ページアドレスの一時ページ全てが有効であり、かつ、書き込もうとするデータの論理ページアドレスが、4つの有効な一時ページの論理ページアドレスのいずれとも一致しない状態をいう。
一時ページに空き領域がないときは、一時ページ解消処理を行う(S54)。一時ページ解消処理では、最も古くに登録された一つの有効な一時ページを解消し、一時ページの空きを設ける。この処理の詳細は後述する。
その後、一時テーブル107を更新した後(S55)、一時ブロック80において一時ページデータを書き込む(S56)。
2−4−1.一時ブロックコピー
図13のフローチャートを用いて、上記の一時ブロックコピー処理(図11のステップS52)を説明する。本処理では、空き領域がない一時ブロック80の有効な物理ページのデータのみを新しい物理ブロックにコピーし、これにより一時ブロックに空き領域を設ける。
最初に、消去済みテーブル105を参照して消去済みの物理ブロックを確保する(S61)。「消去済みの物理ブロック」は、データの未書き込み領域で構成されている。一時ページに空き領域がない一時ブロック80の有効な物理ページのデータを全て、新たに確保した物理ブロックにコピーする(S62)。
図14は、一時ブロックコピー処理を説明した図である。一時ブロック80は空き領域がない物理ブロックである。一時ブロック80の最終ページを参照すると、物理ページ「0x00」、「0x03」、「0x23」、「0x3F」が有効な一時ページであることが認識できる。物理ブロック80bは、新たに確保された消去済みの物理ブロックである。一時ブロック80における物理ページ「0x00」、「0x03」、「0x23」、「0x3F」のデータが、新たに確保された物理ブロック80bにコピーされ、物理ブロック80bは十分な未書き込み領域を有し、以後、新たな一時ブロックとして使用される。古い一時ブロック80のデータは消去されて、消去済みの物理ブロックとなる。
2−4−2.一時ページ解消
図15(a)のフローチャートを用いて、上記の一時ページ解消処理(図11のステップS54)を説明する。本処理では、有効な一時ページのうち最も古くに登録されたものを解消することで、空き一時ページを設ける。
まず、最も古くに登録された有効な一時ページを検索し、そのページデータを読み出す(S81)。その読み出したページデータを通常ブロックへコピーする(S82)。その後、ページデータをコピーした一時ページについて一時ページの無効化処理を行う(S83)。
図15(b)は一時ページ解消を説明した図である。一時ブロック80において最も古くに登録された有効な一時ページ91が通常ブロック85にコピーされる。このとき、通常ブロック85において、論理アドレスの連続性が保持されるように必要に応じて、一時ページ91のデータを、それと論理アドレスが連続するデータとともに通常ブロック85にコピーする。
3.データ書き込み時の具体例
3−1.本発明の方法によるアクセス例1
図16、図17、図18を参照し、データ書き込み時の一時ブロック80における状態の遷移について具体例を挙げて説明する。書き込みデータは4KB(8セクタ)単位でパケット化されており、図16(b)に示すように、データ1、データ2,データ3、・・・、データ64からなり、トータルのサイズは128KB(256セクタ)である。
データ1は、セクタ0〜セクタ6と、セクタ7の一部の領域とに書き込まれる。データ2はセクタ7の残りの領域に書き込まれる。データ3は、セクタ8〜セクタ14と、セクタ15の一部の領域とに書き込まれる。データ4はセクタ15の残りの領域に書き込まれる。以降、同様にして、データ5、データ6、・・・、データ64が対応するセクタに書き込まれる。
図16(c)は、図16(b)に示すデータの書き込みコマンドを受けたときのアクセス手順を示している。図16(c)において、書き込み、読み出しについての1つのブロックがホスト102からの1つのコマンドに相当する。
最初にデータ1の書き込みにおいてセクタ0〜セクタ6が書き込まれる。次に、セクタ7の一部に、データ1の残りのデータが書き込む。この場合、セクタ7のデータが読み出され、データ1の残りのデータ部分に対応する、セクタ7の部分が書き替えられる。このように、1セクタに満たないデータが書き込まれる場合は、セクタデータを一旦読み出し、必要な部分のみを書き替えるリードモディファイライトが実施される。
次に、セクタ7の残りの領域にデータ2を書き込むため、セクタ7のデータが読み出され、データ2のデータ部分に対応するセクタ7の部分が書き替えられる。以下、同様にして、データ64まで書き込まれる。
図17及び図18は、図16(a)〜(c)のようにデータが書き込まれる場合の、一時ブロック80及び通常ブロック90内の状態の遷移を説明した図である。
図17(a)は、データ1に対するセクタ0〜6の書き込み後、すなわち、図16(c)におけるアクセスA後の、一時ブロック80と通常ブロック90の状態を示す。セクタ0〜6の書き込みは、セクタ0〜3の書き込みと、セクタ4〜6の書き込みに分けられる。セクタ0〜3の書き込みは、1ページ内の最終セクタを含むことから(図8のステップS23で「No」)、通常ブロック90への書き込みとなる(S24)。セクタ4〜6の書き込みは、1ページ内の最終セクタを含まないことから(図8のステップS23で「Yes」)、一時ブロック80への書き込みとなる(S30)。一時ブロックの物理ページ0の「データ領域」50に、データ1の一部分をセクタ4〜6を、有効データ0ページ(フィールド62)に物理ページアドレス「0」を記録する。このとき、セクタ7へのデータの書き込みは行われていない。また、一時テーブル107の「有効データ0の物理ページアドレス」のフィールドに新たなページの物理ページアドレスである「0」を、「有効データ0の物理ページにあるデータの論理ページアドレス」のフィールドに新たなページの論理ページアドレスである「1」を記録する。
図17(b)は、データ1の残りのデータに対するセクタ7の書き込み後、すなわち、図16(c)におけるアクセスB後の、一時ブロック80と通常ブロック90の状態を示す。セクタ7の書き込みは、1セクタの書き込みであることから(図8のステップS21で「Yes」)、一時ブロック80への書き込みとなる(S30)。セクタ7の書き込みのために、セクタ4〜7のデータ(1ページ分のデータ)を読み出し、セクタ7をデータ1の残りのデータに書き替えたものを、新たに一時ページデータとして物理ページアドレス「1」に記録する。このとき、有効データ0ページ(フィールド62)の値を、新たなページの物理ページアドレスである「1」に設定する。また、一時テーブル107の「有効データ0の物理ページアドレス」のフィールドに新たなページの物理ページアドレスである「1」を記録する。
図17(c)は、データ2に対するセクタ7の書き込み後、すなわち、図16(c)におけるアクセスC後の、一時ブロック80と通常ブロック90の状態を示す。セクタ7の書き込みは、1セクタの書き込みであることから、一時ブロック80への書き込みとなる。セクタ7の書き込みのために、セクタ4〜7のデータ(1ページ分のデータ)を読み出し、セクタ7の一部をデータ2のデータに書き替えたものを、新たに一時ページデータとして物理ページアドレス「2」に記録する。このとき、有効データ0論理ページの値を、新たなページの物理ページアドレスである「2」に設定する。また、一時テーブル107の「有効データ0の物理ページアドレス」のフィールドに新たなページの物理ページアドレスである「2」を記録する。
図17(d)は、データ3に対するセクタ8〜14の書き込み後、すなわち、図16(c)におけるアクセスD後の、一時ブロック80と通常ブロック90の状態を示す。セクタ8〜14の書き込みは、セクタ8〜11の書き込みと、セクタ12〜14の書き込みに分けられる。セクタ8〜11の書き込みは、1ページ内の最終セクタを含むことから、通常ブロック90への書き込みとなる。ここで、通常ブロック90には、既にセクタ0〜3までのデータが書き込まれていることから、論理アドレスの連続性を保持するため、セクタ8〜11の書き込みの前にセクタ4〜7のデータも合わせて書き込む必要がある。
セクタ8〜11への通常ブロック90への書き込み後、セクタ12〜14の書き込みを行う。セクタ12〜14の書き込みは、1ページ内の最終セクタを含まないことから、一時ブロック80への書き込みとなる。セクタ12〜14のデータを物理ページアドレス「3」に記録する。有効データ0論理ページ(フィールド62)の値を「3」に設定する。有効データ0ページ(フィールド62)の値を「2」から「3」に上書きするのは、セクタ4〜7の通常ブロック90への書き込みにより、一時ブロック80においてセクタ4〜7のデータを無効にする必要があるからである。また、一時テーブル107の「有効データ0の物理ページアドレス」のフィールドに新たなページの物理ページアドレスである「3」を、「有効データ0の物理ページにあるデータの論理ページアドレス」のフィールドに新たなページの論理ページアドレスである「3」を記録する。
図18(e)は、データ3の残りのデータに対するセクタ15の書き込み後、すなわち、図16(c)におけるアクセスE後の、一時ブロック80と通常ブロック90の状態を示す。セクタ15の書き込みは、1セクタの書き込みであることから、一時ブロック80への書き込みとなる。セクタ12〜15のデータを読み出し、セクタ15をデータ3の残りのデータに書き替えたものを、新たに一時ページデータとして物理ページアドレス「4」に記録する。このとき、有効データ0ページの値(フィールド62)を、新たなページの物理ページアドレスである「4」に設定する。また、一時テーブル107の「有効データ0の物理ページアドレス」のフィールドに新たなページの物理ページアドレスである「4」を記録する。
図18(f)は、データ4に対するセクタ15の書き込み後、すなわち、図16(c)におけるアクセスF後の、一時ブロック80と通常ブロック90の状態を示す。セクタ15の書き込みは、1セクタの書き込みであることから、一時ブロック80への書き込みとなる。セクタ12〜15のデータを読み出し、セクタ15の一部をデータ4のデータに書き替えたものを、新たに一時ページデータとして物理ページアドレス「5」に記録する。このとき、有効データ0論理ページの値(フィールド62)を、新たになページの物理ページアドレスである「5」に設定する。また、一時テーブル107の「有効データ0の物理ページアドレス」のフィールドに新たなページの物理ページアドレスである「5」を記録する。
上記の例では、セクタ0〜6の書き込み(アクセスA)、セクタ7の書き込み(アクセスB)、セクタ7の書き込み(アクセスC)のように、7セクタ、1セクタ及び1セクタのアクセスで、通常ブロック90に書き込みを行うことができる。この場合、8セクタ(セクタ0〜7)分のアクセスで、一時ブロック80については3ページ分のアクセスが発生する。
よって、同様のアクセスが256セクタ分繰り返されると、96(256÷8×3)ページ分の一時ページに対するアクセスが発生する。96ページは1つの一時ブロック80には収まらないので、一時コピー処理が1回生じる。結果として、3ブロック以内の物理ブロックを用いて書き込みが行える。
3−2.従来の方法によるアクセス例
図19及び図20を参照し、図16(a)、(b)のデータを、従来の書き込み方法により書き込んだ場合の物理ブロックにおける状態の変化について説明する。
図19(a)に示すように、物理ブロック(通常ブロック)#1において、セクタ0〜3のデータがページ0に、セクタ4〜6のデータがページ1にそれぞれ書き込まれる。次に、データ1の残りのデータについてセクタ7が書き込まれる。しかし、セクタ7の書き込みについては、ページ1に対する上書きができないため、セクタ4〜7までのデータを新たに別ページとして書き込む必要がある。そこで、従来の方法では、図19(b)に示すように書き込みが行われる。すなわち、論理アドレスの連続性を保持するため、セクタ7に連続するセクタ8からセクタ255のデータが物理ブロック#1の未書き込み領域に書き込まれ、別の物理ブロック#2においてセクタ0〜3、セクタ4〜7のデータが書き込まれる。このとき、論理アドレスと物理アドレスとは論物変換テーブルにより対応付けが行われる。
次に、データ2についてセクタ7が上書きされる場合、前回と同様にして、セクタ7に連続するセクタ8からセクタ255のデータが、物理ブロック#2の未書き込み領域に書き込まれ、別の物理ブロック#3においてセクタ0〜3、セクタ4〜7のデータが書き込まれる(図19(c)参照)。
次に、物理ブロック#3においてセクタ8〜14のデータが書き込まれる(図19(d)参照)。その後、データ3の残りのデータについてのセクタ15が書き込まれる。この場合も、データ1の残りのデータについてのセクタ7の書き込みの場合と同様に、論理アドレスの連続性が保持されるように、物理ブロック#3にデータがコピーされた後、新たな物理ブロック#4に、セクタ0〜15のデータが書き込まれる(図20(e)参照)。
さらに、データ4についてのセクタ15の書き込みが行われる。この場合も、データ2についてのセクタ7の書き込みの場合と同様に、論理アドレスの連続性が保持されるように、物理ブロック#4にデータがコピーされた後、新たな物理ブロック#5に、セクタ0〜15のデータが書き込まれる(図20(f)参照)。
以上のように、従来の方法では、7セクタ、1セクタ及び1セクタのアクセスにおいて、最初の7セクタ、1セクタ及び1セクタのアクセスでは、3ブロック消費し、以降の7セクタ、1セクタ及び1セクタのアクセスでは、2ブロック消費する。従って、255セクタまで書き込みが行われた場合、65(256÷8×2+1)ブロック消費する。
従来技術によれば、255セクタの書き込みにおいて、65ブロック消費したのに対して、本実施形態の方法では、アクセス例1で述べたように3ブロックしか消費しない。よって、本実施形態によれば、ブロック消費量は従来の約20分の1となり、物理ブロック間のデータのコピー回数を低減でき、結果として書き込み処理の高速化が図れる。
3−3.本発明の方法によるアクセス例2
以下の例では、図21(c)に示すように、パケット単位で、すなわち、7セクタ、1セクタ及び1セクタのアクセスによるデータの書き込み毎に、ディレクトリエントリへのアクセスが生じる場合を説明する。
図22、図23、図24は、図21(c)のようにディレクトリエントリへの書き込みを伴うデータ書き込みの場合の、一時ブロック80及び通常ブロック90内の状態の変化を説明した図である。
一時ブロック80及び通常ブロック90内の状態の変化は図17及び図18に示したものと基本的に同じである。ディレクトリエントリのデータサイズは1セクタとなるため、ディレクトリエントリのデータは、一時ブロック80へ書き込まれる(図22(d)、図24参照)。
このようにパケット単位でディレクトリエントリを更新することにより、データ書き込み途中で障害が発生した場合にも、書き込み済みデータに対する管理が全く不能となるとい不具合を防止でき、ディレクトリエントリを更新したデータまでは管理ができるようになる。このようなメリットは例えば携帯端末に望まれる。
なお、データがディレクトリエントリに対する書き込みか否かの判断は、書き込みデータのアドレスに基づいても判断できる。よって、書き込みデータのアドレスを判定し、そのアドレスがディレクトリエントリに対応するものである場合は、無条件に一時ブロック80へデータを書き込むようにしてもよい。
4.まとめ
以上のように本実施形態によれば、所定の書き込み単位(ページ単位)で書き込みを行わなければならないフラッシュメモリを有する不揮発性メモリにおいて、所定の書き込み単位(ページ単位)より小さいサイズのデータの書き込みにおいては、通常の書き込み動作で使用する物理ブロックとは異なる物理ブロック(一時ブロック)に書き込みを行う。これにより、データ書き込みに伴う物理ブロック間のデータのコピー回数を低減でき、結果として書き込み処理の高速化を図れる。
本発明は不揮発性半導体装置に対する書き込みの高速化技術に適用でき、特に、所定の書き込み単位(例えばページ単位)で書き込みを行わなければならない不揮発性メモリを有する不揮発性半導体装置、不揮発性メモリのコントローラ装置等に有用である。
本発明は、フラッシュメモリ等の不揮発性メモリを用いた記憶装置並びにその読み出し方法及び管理テーブルの作成方法に関する。
近年、不揮発性メモリを搭載したメモリカードはデジタルカメラや携帯電話の記憶媒体としてその市場を拡大している。そしてメモリカード容量の増加に伴い、データファイルや静止画等の小容量の記録からより大容量が必要となる動画記録へとその用途は広がっている。このため、従来、不揮発性メモリを搭載した記録媒体に関し種々の考案がなされている(例えば、特許文献1〜4)。
大容量のメモリカードは大量のデータを保存でき、種々のデータを格納できることから、その管理情報も多様化している。例えば、管理情報として、ファイルアクセスを高速化するためのメタデータ管理ファイルや、データ種別毎に管理した仮想ディレクトリ構造のファイルや、従来のFATシステムとは異なるデータベース型のファイルシステム等がある。これらはいずれも管理の容易化を目的としている。このような多様化する管理情報は、いずれもサイズが小さいことから、結果として、セクタ単位のデータ書き込みの頻度が増加する要因となる。
特開2001−154909号公報 特開平11−53248号公報 特開2002−324008号公報 特開平5−216780号公報
フラッシュメモリの大容量化にともない、消去単位である消去ブロックのサイズが大きくなる。その結果、上記の多様化した管理情報のようなランダム性のある小サイズのデータの書き込みが増加すると、フラッシュメモリ内の物理ブロック単位でのデータのコピーが頻発し、書き込み性能が低下する。
また、フラッシュメモリの大容量化の手法としてメモリセルの多値化がある。多値メモリセルは2値メモリセルに比して制御が複雑であり信頼性の確保が難しいことから、2値のメモリセルと同様の信頼性を確保するためには、メモリセルへのストレスを低減する必要がある。そのため、多値メモリセルでは、複数セクタからなるページを書き込み単位とし、そのページに対して複数回の書き込みは認めていないようにする。つまり、多値メモリセルの場合、ページサイズ未満のデータを書き込む場合であっても、ページ単位で書き込む必要があり、これは書き込み性能の低下を招く要因となる。
本発明は上記課題を解決すべくなされたものであり、その目的とするところは、所定の書き込み単位(例えばページ単位)で書き込みを行わなければならないフラッシュメモリ中の複数の領域に、書き込み単位未満のサイズのデータの書き込みを行う際に、高速な書き込みを可能とする半導体記憶装置を提供することにある。
本発明の第1の態様において、論理アドレスに基づきデータの書込みが可能な不揮発性記憶装置を提供する。
不揮発性記憶装置は、
論理アドレスに対応する物理アドレスに基づきデータの書込みが行われ、複数の物理ブロックから構成され、各物理ブロックが所定の書き込み単位であるページを複数ページ含む不揮発性メモリと、物理ブロックに格納されるデータの論理アドレスと物理アドレスの対応情報を格納する論物変換テーブルと、
ページのサイズより小さいサイズのデータを格納する物理ブロックである一時ブロックと、
一時ブロックに格納されるデータに関する論理アドレスと物理アドレスとの対応情報を格納する一時テーブルとを備える。
本発明の第2の態様において、論理アドレスに基づきデータの書込みが可能な不揮発性メモリを含む不揮発性記憶装置の動作制御を行うメモリコントローラを提供する。
不揮発性メモリは、論理アドレスに対応する物理アドレスに基づきデータの書込みが行われ、複数の物理ブロックから構成される。各物理ブロックは所定の書き込み単位であるページを複数ページ含む。
メモリコントローラは、物理ブロックに格納されるデータの論理アドレスと物理アドレスの対応情報を格納する論物変換テーブルと、ページのサイズより小さいサイズのデータを格納する物理ブロックである一時ブロックと、一時ブロックに格納されるデータに関する論理アドレスと、物理アドレスとの対応情報を格納する一時テーブルとを有する。メモリコントローラは、書き込み要求されたデータのサイズがページのサイズより小さい場合に、その要求されたデータを一時ブロックに書き込む。
本発明の第3の態様において、論理アドレスに基づきデータの書込みが可能な不揮発性記憶装置に対するデータ読み出し方法を提供する。
不揮発性記憶装置は、論理アドレスに対応する物理アドレスによりデータの読み出しが行われ、複数の物理ブロックから構成され、各物理ブロックは所定の書き込み単位であるページを複数ページ含む不揮発性メモリと、物理ブロックに格納されるデータの論理アドレスと物理アドレスの対応情報を格納する論物変換テーブルと、ページのサイズより小さいサイズのデータを格納する物理ブロックである一時ブロックと、一時ブロックに格納されるデータに関する論理アドレスと物理アドレスとの対応情報を格納する一時テーブルとを含む。
本読み出し方法は、データの読み出し要求を受けたときに、一時テーブルを参照し、一時テーブル内に読み出しアドレスの登録があるときは、一時ブロックからデータを読み出し、一時テーブル内に読み出しアドレスの登録がないときは、論物変換テーブルを参照してデータを読み出す。
本発明の第4の態様において、論理アドレスに基づきデータの書込み、読み出しが可能な不揮発性記憶装置における管理テーブルの作成方法を提供する。
不揮発性記憶装置は、論理アドレスに対応する物理アドレスに基づいてデータの書込み、読み出しが行われ、複数の物理ブロックから構成され、各物理ブロックは所定の書き込み単位であるページを複数ページ含む不揮発性メモリと、物理ブロックに格納されるデータの論理アドレスと物理アドレスの対応情報を格納する論物変換テーブルと、ページのサイズより小さいサイズのデータを格納する物理ブロックである一時ブロックと、一時ブロックに格納されるデータに関する論理アドレスと物理アドレスとの対応情報を格納する管理テーブルである一時テーブルとを含む。本作成方法は、一時ブロックにおいて最後に書き込まれたページを決定し、その決定したページの情報に基づいて前記一時テーブルを作成する。
本発明によれば、フラッシュメモリ等の所定の消去単位を有し、かつ所定の書き込み単位(例えばページ単位)で書き込みを行わなければならないフラッシュメモリを有する不揮発性メモリにおいて、所定の書き込み単位(例えばページ単位)より小さいサイズのデータの書き込みにおいては、通常の書き込み動作で使用する記録領域(物理ブロック)とは異なる記録領域に書き込みを行うようにする。これにより、データ書き込みに伴う記録領域間のデータのコピー回数を低減でき、結果として書き込み処理の高速化を図れる。
以下、添付の図面を参照し、本発明の実施形態について説明する。
1.メモリカードの構成
図1に本発明の不揮発性記憶装置の一実施形態であるメモリカードの構成を示す。メモリカード101は外部機器であるホスト102からデータの読み出し、書込みが可能な記憶装置である。メモリカード101は、不揮発性の記憶素子であるフラッシュメモリ103と、フラッシュメモリ103に対するデータの書込み、読み出しを制御するメモリコントローラ110とを備える。メモリコントローラ110は、コントローラ104と、消去済みテーブル105と、論物変換テーブル106と、一時テーブル107とを備える。メモリコントローラ110及びフラッシュメモリ103は半導体集積回路で実現可能である。
フラッシュメモリ103は128MBの容量を持つ。但し、フラッシュメモリ103の容量はこれに限定されない。また、複数のフラッシュメモリを備えても良い。コントローラ104は、ホスト102からの書込みと読み出し命令を受けてフラッシュメモリ103へのデータの格納、または、フラッシュメモリ103からのデータの読み出しを制御する。本実施形態では、フラッシュメモリ103は、1つのセルにおいて3値以上の情報を格納可能な多値メモリセルとする。但し、フラッシュメモリ103は2値メモリセルであってもよい。
フラッシュメモリ103に格納されるデータは、ファイルシステムの1つであるFATファイルシステムにより管理される。FATファイルシステムは、ファイル管理情報(以下「FAT情報」という。)として、マスターブートレコード・パーティションテーブル、パーティションブートセクタ、FATテーブル1及びFATテーブル2、並びにルートディレクトリエントリを含む。
マスターブートレコード・パーティションテーブルは、データ記録領域を複数のパーティションと呼ばれる領域に分割して管理するための情報を格納する。パーティションブートセクタは、一つのパーティション内の管理情報を格納する。FATテーブル1及びFATテーブル2はそれぞれ、ファイルに含まれるデータの格納位置を示す。ルートディレクトリエントリは、ルートディレクトリ直下に存在するファイル及びディレクトリの情報を格納する。なお、ファイルシステムは他の種類のものでもよい。
図2はフラッシュメモリ103の内部の構成を示す図である。フラッシュメモリ103の記録領域は複数の物理ブロック31から構成される。物理ブロック31は128kBの大きさを持ち、データを一括に消去できる消去単位である。
また、物理ブロック31は複数の物理ページ301から構成される。本実施形態では物理ブロック31は64ページからなる。物理ページ301は、データを書込む際の書込み単位であり、2kBの大きさを持つ。1物理ページは4セクタからなる。物理ページ301は、一旦データが書き込まれると、上書きすることはできない。ホスト102が論理的にデータの書込みを行う単位であるクラスタは16kBである。この値は物理ブロック31の容量128kBとも物理ページ301の容量2kBとも一致しない。そのため、連続する8ページ分の物理ページ301により容量16kBの部分物理ブロックを構成する。部分物理ブロック(16kB)はホスト102からのデータの書込みを想定してコントローラ103が論理的に扱うデータの単位である。1つの物理ブロック31は8つの部分物理ブロックからなり、その部分物理ブロック単位でホスト102からのデータが書込まれる。
図3Aはメモリカード101の内部における論理的なデータの管理を示した図である。メモリカード101に搭載されているフラッシュメモリ103の記憶容量は128MBである。一般的にフラッシュメモリ103には初期不良ブロックや、書き換えを繰り返すことにより不良ブロックが発生することがある。したがって、予めやや少な目の容量をメモリカード101の容量とする。本例では、ホスト102が認識できる実質的な容量は125MBとする。ホスト102から書込みを行う単位である16kB単位を「論理ブロック」402とし、メモリカード101の125MBの容量において、0から順に7999まで割り当てている。8個の論理ブロックで、フラッシュメモリ103の消去単位である物理ブロック31と等しい128kB単位の「論理グループ」401を構成する。
図1において、消去済みテーブル105はフラッシュメモリ103内部の物理ブロックにおいてそれぞれデータが消去済であるか、または、書込み済みであるかを示す情報を格納する。論物変換テーブル106は、ホスト102が指定するアドレス(以下「論理アドレス」という。)と、フラッシュメモリ103内部のアドレス(以下「物理アドレス」という。)との変換を行うテーブルである。
論物変換テーブル106は、論理グループアドレスに対応するアドレスの記録領域に、その論理グループ401に対応する物理ブロック31のアドレスを格納する。論物変換テーブル106の簡単な構成を図3Bに示す。論物変換テーブル106は論理グループアドレスをテーブルのアドレスとして論理アドレスに対応する物理アドレスをテーブルのデータとして持つ。対応する物理ブロック31が存在しない場合には無効値(例えば「0x0000」)をデータとして持つ。
本実施形態では、ホスト102から書き込み要求されたデータのサイズがページサイズに満たない小さなサイズのデータをフラッシュメモリ103に書き込む場合に、特定の物理ブロック31にデータを書込む。本実施形態では、この特定の物理ブロック31のことを「一時ブロック」と呼ぶ。一時テーブル107は、一時ブロックに書き込まれたデータに対する種々の情報、例えば、一時ブロックに書き込まれたデータの物理アドレスと論理アドレス間の対応情報を格納するテーブルである。
一時ブロックと異なり、データサイズに依存せずにフラッシュメモリ103における一般的な書き込み動作が行われる物理ブロック31を「通常ブロック」と呼ぶ。通常ブロックへのデータの書き込みが行われた場合、物理アドレスと論理アドレス間の対応関係は論物変換テーブル106で管理される。
本実施形態のメモリカード101では、ホスト102から書き込み要求のあったデータのサイズがページサイズに満たない小さな単位のデータについては一時ブロック内のページに格納する。
なお、本実施形態では1物理ブロックをデータの管理単位として扱うが、複数の物理ブロック31をまとめてさらに大きな管理単位(以下「物理スーパーブロック」という。)として扱ってもよい。この場合、物理スーパーブロックに対応する論理ブロック群を論理スーパーブロックとして管理し、論物変換テーブル106は物理スーパーブロックと論理スーパーブロックの対応情報を格納する。
1−1.一時ページのフォーマット
図4にフラッシュメモリ103の一時ブロックにおける1ページ(以下「一時ページ」という。)のデータフォーマットを示す。一時ページは、1ページ分のデータ(以下「ページデータ」という。)を格納するデータ領域50と、そのページデータについての管理情報を格納する管理領域60とを有する。データ領域50は4つのセクタデータ領域51を含む。各セクタデータ領域51には、セクタデータ53と、セクタID54と、セクタデータ53とセクタID54についてのECC55とが格納される。
管理領域60は、論理ページアドレスのフィールド61と、有効データ0ページのフィールド62と、有効データ1ページのフィールド63と、有効データ2ページのフィールド64と、有効データ3ページのフィールド65と、管理領域60のECC(Error Correction Code)のフィールド66とを有する。論理ページアドレスのフィールド61はそのページの論理アドレスを格納する。本実施形態では、一時ブロック80において有効なデータとして同時に登録可能な一時ページの最大数は4とする。但し、この最大数は4に限られず、1物理ブロック31における最大ページ数(本例では64)より小さい数であればよい。有効なデータとは、読み出し対象となるデータをいう。無効なデータは一時ブロック80中に格納されていても、読み出しの対象とはならない。有効データ0ページのフィールド62、有効データ1ページのフィールド63、有効データ2ページのフィールド64、有効データ3ページのフィールド65のそれぞれは、有効な一時ページデータとして格納される各ページデータ(有効データ0〜3)の物理ページアドレスをそれぞれ格納する。
図5に、一時ブロック80における一時ページデータの格納例を示す。一時ブロック80は0x00から0x3Fまでの64ページ分の領域(ページ)を有する。図5の例では、0x00から0x21までの各領域にデータが書き込まれている。各ページは管理領域60を有する。本実施形態では、最後に書き込まれた物理ページ内の管理領域60の情報が有効な情報として参照される。つまり、図5の状態では、0x21の物理ページ301の管理情報60(有効データ0ページ、有効データ1ページ、有効データ2ページ及び有効データ3ページ)が参照される。有効データ0ページのフィールド62、有効データ1ページのフィールド63及び有効データ2ページのフィールド64はそれぞれ「0x01」、「0x0E」及び「0x21」を格納している。これは、一時ブロック80内の物理ページアドレス61が「0x01」、「0x0E」、「0x21」であるページに格納されているデータが、一時ページとして有効なデータであることを示している。なお、有効データ3ページのフィールド65が格納する「0xFF」は無効であることを示す。すなわち、図5の例では、有効な一時ページは3ページ分のみ格納されている。図5において、(*)で示されるページは無効になった一時ページである。
図5を参照しながら、一時ページデータの書き込みに伴う管理情報60の遷移を説明する。一時ブロック80は0x00から0x3Fまでの64ページ分の領域を有し、物理ページアドレス0x00のページからデータが書き込まれる。
図5の例では、最初、一時ブロック80内の物理ページアドレス0x00にページデータが書き込まれる。このとき、論理ページアドレスのフィールド61に、そのページデータの論理ページアドレス(図5では、「0x000123」)が書き込まれる。この時点で、一時ブロック80において有効な一時ページデータとして書き込まれているのは、物理アドレス0x00の領域のみである。したがって、有効データ0ページのフィールド62に、そのページアドレス「0x00」が書き込まる。それ以外の有効データページのフィールド63〜65には、無効を示す「0xFF」が書き込まれる。
続いて、次の物理ページアドレス「0x01」にページデータが書き込まれる。このとき、その論理ページアドレス(0x000123)は、物理ページアドレス「0x00」において既に書き込んだページデータのものと同じであるので、先に書き込んだ一時ページデータを無効化する。
無効化処理は、データの書き込みにおいて、一時ブロック80に有効データが存在する論理ページを上書きし、かつ一時ブロックへのデータの書き込みが発生する場合に行なう。
有効なセクタデータの書き込みと共に、管理領域を更新することで無効化を行うので、無効化処理におけるフィールド61には有効な論理ページアドレスを記録する。
無効化は次のように行う。フィールド62に記録された有効データ0ページの値を、新たにページデータを書き込んだ物理ページアドレスである「0x01」で上書きする。その他の有効データページのフィールド63〜65には無効を示す「0xFF」を書き込む。このように有効データ0ページの値を上書きすることで、以前に有効であった一時ページを無効にすることができる。以上のように、本実施形態では、最後に書き込まれたページの管理情報60が、有効なページを特定するために参照される。
なお、ここでは上書きする一時ブロック80に有効データが存在する論理ページと、一時ブロックへのデータの書き込みが発生する論理ページが同じ(0x000123)例を示している。一時ブロック80に有効データが存在する論理ページを上書きし、かつ一時ブロックへのデータの書き込みが発生する場合であれば論理ページが同じである必要はない。
1−2.一時テーブルのフォーマット
図6に、一時テーブル107のデータフォーマットを示す。一時テーブル107において、「一時ブロックの物理アドレス」のフィールドは、一時ブロック80として使用する物理ブロック31の物理アドレスを格納する。「次書き込み物理ページ」のフィールドは、次に書き込みが行われる一時ページの物理アドレスを格納する。「有効データ0の物理ページアドレス」のフィールドは、一時ブロック80において一時ページとして有効なデータを格納するページの物理アドレスを格納する。「有効データ1の物理ページアドレス」、「有効データ2の物理ページアドレス」、及び「有効データ3の物理ページアドレス」の各フィールドも同様である。「有効データ0の物理ページアドレスにあるデータの論理ページアドレス」のフィールドは、「有効データ0の物理ページアドレス」で指定される物理アドレスに格納されたデータの論理ページアドレスを格納する。「有効データ1の物理ページアドレスにあるデータの論理ページアドレス」、「有効データ2の物理ページアドレスにあるデータの論理ページアドレス」、及び「有効データ3の物理ページアドレスにあるデータの論理ページアドレス」の各フィールドも同様である。
例えば、一時ブロックが図5のような状態のとき、一時テーブル107の各フィールドは以下のように値を格納する。
Figure 2007066720
一時テーブル107はメモリカード101の起動時(電源投入時)等に作成され、その後、適宜更新される。ホスト102は起動時等の所定のタイミングで一時テーブル107の値を読み出し、ホスト102のRAM上に格納する。
2.メモリカードの動作
2−1.一時テーブル作成処理
図7のフローチャートを用いて一時テーブル作成処理を説明する。
最初に、一時ブロック80を読み出し、最後に書き込まれた一時ページを検索する(S12)。図5の例では、最終の書き込みページとして物理ページアドレスが「0x21」のページが検索される。次に、最終の書き込みページの管理情報60を参照して、有効な一時ページの情報を取得する(S12)。図5の例では、物理ページアドレスが「0x21」のページの管理情報60から、有効な一時ページとして「0x01」、「0x0E」、「0x21」を得る。その後、取得した有効な一時ページの全てについて、論理ページ情報(論理ページアドレス)を取得する(S13〜S15)。図5の例では、論理ページ情報として「0x000123」、「0x000456」、「0x000777」を得る。なお、図7において、ステップS13、S15は、有効な一時ページの全てについて論理ページアドレスを取得するまで、論理ページアドレスの取得ステップ(S14)を繰り返すことを示している。最後に、取得した情報を用いて一時テーブル107を作成する(S16)。
2−2.データ書き込み
図8のフローチャートを用いてメモリカード101におけるデータ書き込み処理を説明する。以下の処理はメモリカード101内のコントローラ104により実行される。
ホスト102からデータ書き込み要求(書き込みコマンド)を受けると、コントローラ104は、書き込みデータのサイズが1セクタであるか否かを判断する(S21)。1セクタであるときは、一時ブロックへの書き込みを行う(S30)。この処理の詳細は後述する。
一方、1セクタでないときは、書き込みデータがページ内の最終セクタを含むか否かを判断する(S23)。この判断は書き込みデータのアドレスに基づいて可能である。書き込みデータがページ内の最終セクタを含まない場合は、その書き込みデータは、2セクタ又は3セクタのサイズであり、かつ、その書き込み要求に対する最後のデータであることを意味する。一方、書き込みデータがページ内の最終セクタを含む場合、まだそれ以後に続行する書き込みデータが存在することを意味する。
よって、書き込みデータがページ内の最終セクタを含まない場合に、一時ブロック80への書き込みを行う(S30)。ページ内の最終セクタを含む場合、通常ブロックへの書き込みを行う(S24)。
その際、書き込みデータのアドレスが既に一時テーブル107において有効な一時ページとして登録されているか否かを判断する(S25)。登録がある場合は、その一時ページに対する仮無効処理を行う(S26)。仮無効処理としては、例えば、その一時ページに対して無効化を行う必要があることを示すフラグを設定する。ホスト102から書き込みが要求された全てのデータに対して上記処理を繰り返す(S22、S27)。
その後、仮無効処理が発生したか否かを判断し(例えばフラグを確認し)、仮無効処理が発生した場合は、一時ブロック80内の仮無効処理が発生した一時ページについて無効化を行う(S29)。仮無効処理(S26)が発生した場合の無効化(S29)はデータの書き込みにおいて、一時ブロックに有効データが存在する論理ページを上書きし、かつ一時ブロックへのデータの書き込みが発生しない場合に行う。一時ブロック80内の一時ページの無効化は、無効化する有効データページのフィールド62、63、64または65を「0xFF」にし、論理ページアドレスのフィールド61を「0xFFFFFF」にしたデータ(以下「無効化ページデータ」という。)を次書き込み物理ページに新たに追加することで行う。無効化ページデータにおいてデータ領域50には何も書き込まれない。例えば、図9は、物理ページアドレス「0x21」のデータを無効化した例を示す。物理ページアドレス「0x21」のデータを無効化するため、物理ページアドレス「0x22」において、有効データ2ページを「0xFF」に設定し、論理ページアドレスのフィールド61を「0xFFFFFF」に設定した無効化ページデータが書き込まれている。
図8のフローチャートにおいて、一時ブロックへの書き込みの判断についてまとめる。まず、データサイズが1セクターの書き込みは必ず一時ブロックに書き込む。これは、ホスト102がメモリーカード101の書き込み単位未満のデータを更新するときには、メモリーカード101への最小の書き込みサイズである書き込み単位でデータの書き込みを行うために、ホスト102が連続した論理バイトアドレスに対してデータを書き込む時には、データサイズが1セクターの書き込みを、同じ論理セクターアドレスに対して複数回行うことになるからである。データサイズが1セクターでなければ最終アドレスに基づいて、一時ブロックへ書き込みを行なうか否か判断する。最終アドレスがページ内における最終セクタを示さない場合、先頭アドレスにかかわらず一時ブロックに書き込む。
2−3.データ読み出し
図10のフローチャートを用いてメモリカード101からのデータ読み出し処理を説明する。以下の処理はメモリカード101内のコントローラ104により実行される。
ホスト102からデータ読み出し要求を受けると、コントローラ104は一時テーブル107を参照する。そしてホスト102から指定された論理アドレスに基づき、読み出そうとするデータが一時テーブル107に登録されているか否かを判断する(S42)。つまり、コントローラ104は、読み出そうとするデータが一時ブロック80に格納されているか否かを判断する。
一時テーブル107に登録があるときは、一時ブロック80からの読み出しを行う(S43)。より具体的には、一時テーブル107を参照し、ホスト102により指定された論理アドレスに対応する物理ページアドレスを求める。その後、一時ブロック80から、求めた物理ページアドレスのデータを読み出す。
一時テーブル107に登録がないときは、通常ブロックから、ホスト102により指定された読み出しアドレスに基づいて、データを読み出す(S45)。
以上の処理を、ホスト102から指定された範囲の全てのデータを読み出すまで繰り返す(S41、S44)。
2−4.一時ブロック書き込み
図11のフローチャートを用いて、上記の一時ブロック80への書き込み処理(図8のステップS30)を説明する。
一時ブロック80への書き込みを行うために、まず、一時ブロック80に空き領域があるか否かを判断する(S51)。ここで、空き領域がない状態とは、図12(a)に示すように、一時ブロック80の全物理ページにデータが書き込み済みであり、新たにデータを書き込むための空き領域がない状態をいう。
空き領域がない場合、一時ブロックコピー処理を行う(S52)。一時ブロックコピー処理では、空き領域がない一時ブロック80に格納されている有効な物理ページのデータを新たな物理ブロックにコピーするとともに、この新たな物理ブロックを一時ブロック80として使用することで空き領域を設ける。この処理の詳細は後述する。
その後、一時ブロック80の4つの一時ページにおいて空き領域があるか否かを判断する(S53)。ここで、一時ページの空き領域がない状態とは、図12(b)に示すように、4つの有効データページのフィールドに記録された物理ページアドレスの一時ページ全てが有効であり、かつ、書き込もうとするデータの論理ページアドレスが、4つの有効な一時ページの論理ページアドレスのいずれとも一致しない状態をいう。
一時ページに空き領域がないときは、一時ページ解消処理を行う(S54)。一時ページ解消処理では、最も古くに登録された一つの有効な一時ページを解消し、一時ページの空きを設ける。この処理の詳細は後述する。
その後、一時テーブル107を更新した後(S55)、一時ブロック80において一時ページデータを書き込む(S56)。
2−4−1.一時ブロックコピー
図13のフローチャートを用いて、上記の一時ブロックコピー処理(図11のステップS52)を説明する。本処理では、空き領域がない一時ブロック80の有効な物理ページのデータのみを新しい物理ブロックにコピーし、これにより一時ブロックに空き領域を設ける。
最初に、消去済みテーブル105を参照して消去済みの物理ブロックを確保する(S61)。「消去済みの物理ブロック」は、データの未書き込み領域で構成されている。一時ページに空き領域がない一時ブロック80の有効な物理ページのデータを全て、新たに確保した物理ブロックにコピーする(S62)。
図14は、一時ブロックコピー処理を説明した図である。一時ブロック80は空き領域がない物理ブロックである。一時ブロック80の最終ページを参照すると、物理ページ「0x00」、「0x03」、「0x23」、「0x3F」が有効な一時ページであることが認識できる。物理ブロック80bは、新たに確保された消去済みの物理ブロックである。一時ブロック80における物理ページ「0x00」、「0x03」、「0x23」、「0x3F」のデータが、新たに確保された物理ブロック80bにコピーされ、物理ブロック80bは十分な未書き込み領域を有し、以後、新たな一時ブロックとして使用される。古い一時ブロック80のデータは消去されて、消去済みの物理ブロックとなる。
2−4−2.一時ページ解消
図15(a)のフローチャートを用いて、上記の一時ページ解消処理(図11のステップS54)を説明する。本処理では、有効な一時ページのうち最も古くに登録されたものを解消することで、空き一時ページを設ける。
まず、最も古くに登録された有効な一時ページを検索し、そのページデータを読み出す(S81)。その読み出したページデータを通常ブロックへコピーする(S82)。その後、ページデータをコピーした一時ページについて一時ページの無効化処理を行う(S83)。
図15(b)は一時ページ解消を説明した図である。一時ブロック80において最も古くに登録された有効な一時ページ91が通常ブロック85にコピーされる。このとき、通常ブロック85において、論理アドレスの連続性が保持されるように必要に応じて、一時ページ91のデータを、それと論理アドレスが連続するデータとともに通常ブロック85にコピーする。
3.データ書き込み時の具体例
3−1.本発明の方法によるアクセス例1
図16、図17、図18を参照し、データ書き込み時の一時ブロック80における状態の遷移について具体例を挙げて説明する。書き込みデータは4KB(8セクタ)単位でパケット化されており、図16(b)に示すように、データ1、データ2,データ3、・・・、データ64からなり、トータルのサイズは128KB(256セクタ)である。
データ1は、セクタ0〜セクタ6と、セクタ7の一部の領域とに書き込まれる。データ2はセクタ7の残りの領域に書き込まれる。データ3は、セクタ8〜セクタ14と、セクタ15の一部の領域とに書き込まれる。データ4はセクタ15の残りの領域に書き込まれる。以降、同様にして、データ5、データ6、・・・、データ64が対応するセクタに書き込まれる。
図16(c)は、図16(b)に示すデータの書き込みコマンドを受けたときのアクセス手順を示している。図16(c)において、書き込み、読み出しについての1つのブロックがホスト102からの1つのコマンドに相当する。
最初にデータ1の書き込みにおいてセクタ0〜セクタ6が書き込まれる。次に、セクタ7の一部に、データ1の残りのデータが書き込む。この場合、セクタ7のデータが読み出され、データ1の残りのデータ部分に対応する、セクタ7の部分が書き替えられる。このように、1セクタに満たないデータが書き込まれる場合は、セクタデータを一旦読み出し、必要な部分のみを書き替えるリードモディファイライトが実施される。
次に、セクタ7の残りの領域にデータ2を書き込むため、セクタ7のデータが読み出され、データ2のデータ部分に対応するセクタ7の部分が書き替えられる。以下、同様にして、データ64まで書き込まれる。
図17及び図18は、図16(a)〜(c)のようにデータが書き込まれる場合の、一時ブロック80及び通常ブロック90内の状態の遷移を説明した図である。
図17(a)は、データ1に対するセクタ0〜6の書き込み後、すなわち、図16(c)におけるアクセスA後の、一時ブロック80と通常ブロック90の状態を示す。セクタ0〜6の書き込みは、セクタ0〜3の書き込みと、セクタ4〜6の書き込みに分けられる。セクタ0〜3の書き込みは、1ページ内の最終セクタを含むことから(図8のステップS23で「No」)、通常ブロック90への書き込みとなる(S24)。セクタ4〜6の書き込みは、1ページ内の最終セクタを含まないことから(図8のステップS23で「Yes」)、一時ブロック80への書き込みとなる(S30)。一時ブロックの物理ページ0の「データ領域」50に、データ1の一部分をセクタ4〜6を、有効データ0ページ(フィールド62)に物理ページアドレス「0」を記録する。このとき、セクタ7へのデータの書き込みは行われていない。また、一時テーブル107の「有効データ0の物理ページアドレス」のフィールドに新たなページの物理ページアドレスである「0」を、「有効データ0の物理ページにあるデータの論理ページアドレス」のフィールドに新たなページの論理ページアドレスである「1」を記録する。
図17(b)は、データ1の残りのデータに対するセクタ7の書き込み後、すなわち、図16(c)におけるアクセスB後の、一時ブロック80と通常ブロック90の状態を示す。セクタ7の書き込みは、1セクタの書き込みであることから(図8のステップS21で「Yes」)、一時ブロック80への書き込みとなる(S30)。セクタ7の書き込みのために、セクタ4〜7のデータ(1ページ分のデータ)を読み出し、セクタ7をデータ1の残りのデータに書き替えたものを、新たに一時ページデータとして物理ページアドレス「1」に記録する。このとき、有効データ0ページ(フィールド62)の値を、新たなページの物理ページアドレスである「1」に設定する。また、一時テーブル107の「有効データ0の物理ページアドレス」のフィールドに新たなページの物理ページアドレスである「1」を記録する。
図17(c)は、データ2に対するセクタ7の書き込み後、すなわち、図16(c)におけるアクセスC後の、一時ブロック80と通常ブロック90の状態を示す。セクタ7の書き込みは、1セクタの書き込みであることから、一時ブロック80への書き込みとなる。セクタ7の書き込みのために、セクタ4〜7のデータ(1ページ分のデータ)を読み出し、セクタ7の一部をデータ2のデータに書き替えたものを、新たに一時ページデータとして物理ページアドレス「2」に記録する。このとき、有効データ0論理ページの値を、新たなページの物理ページアドレスである「2」に設定する。また、一時テーブル107の「有効データ0の物理ページアドレス」のフィールドに新たなページの物理ページアドレスである「2」を記録する。
図17(d)は、データ3に対するセクタ8〜14の書き込み後、すなわち、図16(c)におけるアクセスD後の、一時ブロック80と通常ブロック90の状態を示す。セクタ8〜14の書き込みは、セクタ8〜11の書き込みと、セクタ12〜14の書き込みに分けられる。セクタ8〜11の書き込みは、1ページ内の最終セクタを含むことから、通常ブロック90への書き込みとなる。ここで、通常ブロック90には、既にセクタ0〜3までのデータが書き込まれていることから、論理アドレスの連続性を保持するため、セクタ8〜11の書き込みの前にセクタ4〜7のデータも合わせて書き込む必要がある。
セクタ8〜11への通常ブロック90への書き込み後、セクタ12〜14の書き込みを行う。セクタ12〜14の書き込みは、1ページ内の最終セクタを含まないことから、一時ブロック80への書き込みとなる。セクタ12〜14のデータを物理ページアドレス「3」に記録する。有効データ0論理ページ(フィールド62)の値を「3」に設定する。有効データ0ページ(フィールド62)の値を「2」から「3」に上書きするのは、セクタ4〜7の通常ブロック90への書き込みにより、一時ブロック80においてセクタ4〜7のデータを無効にする必要があるからである。また、一時テーブル107の「有効データ0の物理ページアドレス」のフィールドに新たなページの物理ページアドレスである「3」を、「有効データ0の物理ページにあるデータの論理ページアドレス」のフィールドに新たなページの論理ページアドレスである「3」を記録する。
図18(e)は、データ3の残りのデータに対するセクタ15の書き込み後、すなわち、図16(c)におけるアクセスE後の、一時ブロック80と通常ブロック90の状態を示す。セクタ15の書き込みは、1セクタの書き込みであることから、一時ブロック80への書き込みとなる。セクタ12〜15のデータを読み出し、セクタ15をデータ3の残りのデータに書き替えたものを、新たに一時ページデータとして物理ページアドレス「4」に記録する。このとき、有効データ0ページの値(フィールド62)を、新たなページの物理ページアドレスである「4」に設定する。また、一時テーブル107の「有効データ0の物理ページアドレス」のフィールドに新たなページの物理ページアドレスである「4」を記録する。
図18(f)は、データ4に対するセクタ15の書き込み後、すなわち、図16(c)におけるアクセスF後の、一時ブロック80と通常ブロック90の状態を示す。セクタ15の書き込みは、1セクタの書き込みであることから、一時ブロック80への書き込みとなる。セクタ12〜15のデータを読み出し、セクタ15の一部をデータ4のデータに書き替えたものを、新たに一時ページデータとして物理ページアドレス「5」に記録する。このとき、有効データ0論理ページの値(フィールド62)を、新たになページの物理ページアドレスである「5」に設定する。また、一時テーブル107の「有効データ0の物理ページアドレス」のフィールドに新たなページの物理ページアドレスである「5」を記録する。
上記の例では、セクタ0〜6の書き込み(アクセスA)、セクタ7の書き込み(アクセスB)、セクタ7の書き込み(アクセスC)のように、7セクタ、1セクタ及び1セクタのアクセスで、通常ブロック90に書き込みを行うことができる。この場合、8セクタ(セクタ0〜7)分のアクセスで、一時ブロック80については3ページ分のアクセスが発生する。
よって、同様のアクセスが256セクタ分繰り返されると、96(256÷8×3)ページ分の一時ページに対するアクセスが発生する。96ページは1つの一時ブロック80には収まらないので、一時コピー処理が1回生じる。結果として、3ブロック以内の物理ブロックを用いて書き込みが行える。
3−2.従来の方法によるアクセス例
図19及び図20を参照し、図16(a)、(b)のデータを、従来の書き込み方法により書き込んだ場合の物理ブロックにおける状態の変化について説明する。
図19(a)に示すように、物理ブロック(通常ブロック)#1において、セクタ0〜3のデータがページ0に、セクタ4〜6のデータがページ1にそれぞれ書き込まれる。次に、データ1の残りのデータについてセクタ7が書き込まれる。しかし、セクタ7の書き込みについては、ページ1に対する上書きができないため、セクタ4〜7までのデータを新たに別ページとして書き込む必要がある。そこで、従来の方法では、図19(b)に示すように書き込みが行われる。すなわち、論理アドレスの連続性を保持するため、セクタ7に連続するセクタ8からセクタ255のデータが物理ブロック#1の未書き込み領域に書き込まれ、別の物理ブロック#2においてセクタ0〜3、セクタ4〜7のデータが書き込まれる。このとき、論理アドレスと物理アドレスとは論物変換テーブルにより対応付けが行われる。
次に、データ2についてセクタ7が上書きされる場合、前回と同様にして、セクタ7に連続するセクタ8からセクタ255のデータが、物理ブロック#2の未書き込み領域に書き込まれ、別の物理ブロック#3においてセクタ0〜3、セクタ4〜7のデータが書き込まれる(図19(c)参照)。
次に、物理ブロック#3においてセクタ8〜14のデータが書き込まれる(図19(d)参照)。その後、データ3の残りのデータについてのセクタ15が書き込まれる。この場合も、データ1の残りのデータについてのセクタ7の書き込みの場合と同様に、論理アドレスの連続性が保持されるように、物理ブロック#3にデータがコピーされた後、新たな物理ブロック#4に、セクタ0〜15のデータが書き込まれる(図20(e)参照)。
さらに、データ4についてのセクタ15の書き込みが行われる。この場合も、データ2についてのセクタ7の書き込みの場合と同様に、論理アドレスの連続性が保持されるように、物理ブロック#4にデータがコピーされた後、新たな物理ブロック#5に、セクタ0〜15のデータが書き込まれる(図20(f)参照)。
以上のように、従来の方法では、7セクタ、1セクタ及び1セクタのアクセスにおいて、最初の7セクタ、1セクタ及び1セクタのアクセスでは、3ブロック消費し、以降の7セクタ、1セクタ及び1セクタのアクセスでは、2ブロック消費する。従って、255セクタまで書き込みが行われた場合、65(256÷8×2+1)ブロック消費する。
従来技術によれば、255セクタの書き込みにおいて、65ブロック消費したのに対して、本実施形態の方法では、アクセス例1で述べたように3ブロックしか消費しない。よって、本実施形態によれば、ブロック消費量は従来の約20分の1となり、物理ブロック間のデータのコピー回数を低減でき、結果として書き込み処理の高速化が図れる。
3−3.本発明の方法によるアクセス例2
以下の例では、図21(c)に示すように、パケット単位で、すなわち、7セクタ、1セクタ及び1セクタのアクセスによるデータの書き込み毎に、ディレクトリエントリへのアクセスが生じる場合を説明する。
図22、図23、図24は、図21(c)のようにディレクトリエントリへの書き込みを伴うデータ書き込みの場合の、一時ブロック80及び通常ブロック90内の状態の変化を説明した図である。
一時ブロック80及び通常ブロック90内の状態の変化は図17及び図18に示したものと基本的に同じである。ディレクトリエントリのデータサイズは1セクタとなるため、ディレクトリエントリのデータは、一時ブロック80へ書き込まれる(図22(d)、図24参照)。
このようにパケット単位でディレクトリエントリを更新することにより、データ書き込み途中で障害が発生した場合にも、書き込み済みデータに対する管理が全く不能となるとい不具合を防止でき、ディレクトリエントリを更新したデータまでは管理ができるようになる。このようなメリットは例えば携帯端末に望まれる。
なお、データがディレクトリエントリに対する書き込みか否かの判断は、書き込みデータのアドレスに基づいても判断できる。よって、書き込みデータのアドレスを判定し、そのアドレスがディレクトリエントリに対応するものである場合は、無条件に一時ブロック80へデータを書き込むようにしてもよい。
4.まとめ
以上のように本実施形態によれば、所定の書き込み単位(ページ単位)で書き込みを行わなければならないフラッシュメモリを有する不揮発性メモリにおいて、所定の書き込み単位(ページ単位)より小さいサイズのデータの書き込みにおいては、通常の書き込み動作で使用する物理ブロックとは異なる物理ブロック(一時ブロック)に書き込みを行う。これにより、データ書き込みに伴う物理ブロック間のデータのコピー回数を低減でき、結果として書き込み処理の高速化を図れる。
本発明は不揮発性半導体装置に対する書き込みの高速化技術に適用でき、特に、所定の書き込み単位(例えばページ単位)で書き込みを行わなければならない不揮発性メモリを有する不揮発性半導体装置、不揮発性メモリのコントローラ装置等に有用である。
本発明の不揮発性記憶装置の一実施形態であるメモリカードの構成を示す図 フラッシュメモリの内部の構成及び物理ブロックの構成を示す図 メモリカードの内部における論理的なデータの管理を示した図 論物変換テーブルの構成例を示す図 フラッシュメモリの一時ページのデータフォーマットを示す図 一時ブロックにおける一時ページデータの格納例を示す図 一時テーブル107のデータフォーマットを示す図 一時テーブル作成処理のフローチャート データ書き込み処理のフローチャート データ無効化処理を説明するための図 データ読み出し処理のフローチャート 一時ブロック書き込み処理のフローチャート (a)空き領域がない一時ブロックを説明した図、(b)空き一時ページがない一時ブロックを説明した図 一時ブロックコピー処理のフローチャート 一時ブロックコピー処理を説明した図 (a)一時ページ解消処理のフローチャート、(b)一時ページの解消を説明するための図 本発明による第1のアクセス例を説明するための図 第1のアクセス例における、データ書き込み時の一時ブロックにおける状態の遷移を示した図 第1のアクセス例における、データ書き込み時の一時ブロックにおける状態の遷移を示した図(図17のつづき) 従来の方法による、データ書き込み時の一時ブロックにおける状態の遷移を示した図 従来の方法による、データ書き込み時の一時ブロックにおける状態の遷移を示した図(図19のつづき) 本発明による第2のアクセス例を説明するための図 第2のアクセス例における、データ書き込み時の一時ブロックにおける状態の遷移を示した図 第1のアクセス例における、データ書き込み時の一時ブロックにおける状態の遷移を示した図(図22のつづき) 第1のアクセス例における、データ書き込み時の一時ブロックにおける状態の遷移を示した図(図23のつづき)
符号の説明
31 論理ブロック
80 一時ブロック
85 通常ブロック
101 メモリカード
102 ホスト
103 フラッシュメモリ
104 コントローラ
105 消去済みテーブル
106 論物変換テーブル
107 一時テーブル
110 メモリコントローラ
301 論理ページ

Claims (21)

  1. 論理アドレスに基づきデータの書込みが可能な不揮発性記憶装置であって、
    前記論理アドレスに対応する物理アドレスに基づきデータの書込みが行われ、複数の物理ブロックから構成され、前記各物理ブロックは所定の書き込み単位であるページを複数ページ含む不揮発性メモリと、
    前記物理ブロックに格納されるデータの論理アドレスと物理アドレスの対応情報を格納する論物変換テーブルと、
    前記ページのサイズより小さいサイズのデータを格納する物理ブロックである一時ブロックと、
    前記一時ブロックに格納されるデータに関する論理アドレスと物理アドレスとの対応情報を格納する一時テーブルとを備える、
    不揮発性記憶装置。
  2. 前記一時ブロックは、1ページに対して1回の書き込みのみが可能である、請求項1記載の不揮発性記憶装置。
  3. 前記不揮発性メモリは多値メモリセルである、請求項1あるいは請求項2に記載の不揮発性記憶装置。
  4. 複数の物理ブロックを1つの物理スーパーブロックとして管理し、前記物理スーパーブロックに対応する論理ブロック群を論理スーパーブロックとして管理し、前記論物変換テーブルは前記物理スーパーブロックと前記論理スーパーブロックの対応情報を格納する、請求項1から請求項3のいずれか一つに記載の不揮発性記憶装置。
  5. 論理アドレスに基づきデータの書込みが可能な不揮発性メモリを含む不揮発性記憶装置の動作制御を行うメモリコントローラであって、
    a)前記不揮発性メモリは、前記論理アドレスに対応する物理アドレスに基づいてデータの書込みが行われ、複数の物理ブロックから構成され、各物理ブロックは所定の書き込み単位であるページを複数ページ含み、
    b)前記メモリコントローラは、
    前記物理ブロックに格納されるデータの論理アドレスと物理アドレスの対応情報を格納する論物変換テーブルと、
    前記ページのサイズより小さいサイズのデータを格納する物理ブロックである一時ブロックと、
    前記一時ブロックに格納されるデータに関する論理アドレスと、物理アドレスとの対応情報を格納する一時テーブルとを有し、
    書き込み要求されたデータのサイズが前記ページのサイズより小さい場合に、その要求されたデータを前記一時ブロックに書き込む、
    不揮発性記憶装置のメモリコントローラ。
  6. 前記一時ブロックは、1ページに対して1回の書き込みのみが可能である、請求項5記載の不揮発性記憶装置のメモリコントローラ。
  7. 前記不揮発性メモリは多値メモリセルである、請求項5あるいは請求項6に記載のメモリコントローラ。
  8. 複数の物理ブロックを1つの物理スーパーブロックとして管理し、前記物理スーパーブロックに対応する論理ブロック群を論理スーパーブロックとして管理し、前記論物変換テーブルは前記物理スーパーブロックと前記論理スーパーブロックの対応情報を格納する、請求項5から請求項7のいずれか一つに記載のメモリコントローラ。
  9. 論理アドレスに基づきデータの書込みが可能な不揮発性記憶装置に対するデータ書き込み方法であって、
    a)前記不揮発性記憶装置は、
    前記論理アドレスに対応する物理アドレスによりデータの書込みが行われ、複数の物理ブロックから構成され、各物理ブロックは所定の書き込み単位であるページを複数ページ含む不揮発性メモリと、
    前記物理ブロックに格納されるデータの論理アドレスと物理アドレスの対応情報を格納する論物変換テーブルと、
    前記ページのサイズより小さいサイズのデータを格納する物理ブロックである一時ブロックとを含み、
    b)前記書き込み方法は、
    外部からデータの書き込み要求を受け、
    書き込みデータのアドレスに基づいて、書き込みが要求されたデータを前記一時ブロックへ書き込むか否かの判断を行う、
    データ書き込み方法。
  10. 前記ページは複数セクタからなり、
    外部から書き込みが要求されたデータのサイズが1セクタであるとき、または、書き込みデータの最終セクタが前記ページ内の最終セクタに該当しないときに、前記一時ブロックへのデータの書き込みを行う、
    請求項9記載のデータ書き込み方法。
  11. 前記一時ブロックに書き込むことができるページの数は、前記物理ブロックを構成するページの総数よりも少ない、請求項9あるいは請求項10に記載のデータ書き込み方法。
  12. 最大数の有効なページを格納する一時ブロックにおいて、新たなデータを書き込む場合に、前記有効なページの中の少なくとも1つのページのデータを、前記一時ブロック以外の物理ブロックにコピーし、その後、前記一時ブロックに前記新たなデータを書き込む、請求項9から請求項11のいずれか一つに記載のデータ書き込み方法。
  13. 前記一時ブロックに格納されている有効なページのデータが、前記一時ブロック以外の物理ブロックに書き込まれた場合は、前記一時ブロックにおいて、前記書き込まれたデータに対応する前記有効なページを無効化する、請求項9から請求項12のいずれか一つに記載のデータ書き込み方法。
  14. 前記一時ブロックにおいて各ページは、データを格納するデータ領域と、該データの管理情報を格納する管理領域とを含み、
    前記一時ブロックに格納された有効なページの無効化は、前記データ領域に無効なデータを格納し、前記管理領域に有効な管理情報を含めたページのデータを追加することにより行う、請求項9から請求項13のいずれか一つに記載のデータ書き込み方法。
  15. 空き領域がない一時ブロックに新たなデータを書き込む場合、
    消去済みの物理ブロックを取得し、
    前記取得した物理ブロックに前記一時ブロックに格納された有効なページのデータをコピーし、
    前記取得した物理ブロックに前記新たなデータを書き込む、請求項9から請求項14のいずれか一つに記載のデータ書き込み方法。
  16. 論理アドレスに基づきデータの読み出しが可能な不揮発性記憶装置に対するデータ読み出し方法であって、
    a)前記不揮発性記憶装置は、
    前記論理アドレスに対応する物理アドレスによりデータの読み出しが行われ、複数の物理ブロックから構成され、各物理ブロックは所定の書き込み単位であるページを複数ページ含む不揮発性メモリと、
    前記物理ブロックに格納されるデータの論理アドレスと物理アドレスの対応情報を格納する論物変換テーブルと、
    前記ページのサイズより小さいサイズのデータを格納する物理ブロックである一時ブロックと、
    前記一時ブロックに格納されるデータに関する論理アドレスと物理アドレスとの対応情報を格納する一時テーブルとを含み、
    b)前記読み出し方法は、
    データの読み出し要求を受けたときに、前記一時テーブルを参照し、
    前記一時テーブル内に読み出しアドレスの登録があるときは、前記一時ブロックからデータを読み出し、
    前記一時テーブル内に読み出しアドレスの登録がないときは、前記論物変換テーブルを参照してデータを読み出す、
    不揮発性記憶装置のデータ読み出し方法。
  17. 前記一時ブロックにおいて最後に書き込まれたページの情報に基づいて、一時ブロック中の有効なページを判断する、請求項16記載のデータ読み出し方法。
  18. 論理アドレスに基づきデータの書込み、読み出しが可能な不揮発性記憶装置における管理テーブルの作成方法であって、
    a)前記不揮発性記憶装置は、
    前記論理アドレスに対応する物理アドレスに基づいてデータの書込み、読み出しが行われ、複数の物理ブロックから構成され、各物理ブロックは所定の書き込み単位であるページを複数ページ含む不揮発性メモリと、
    前記物理ブロックに格納されるデータの論理アドレスと物理アドレスの対応情報を格納する論物変換テーブルと、
    前記ページのサイズより小さいサイズのデータを格納する物理ブロックである一時ブロックと、
    前記一時ブロックに格納されるデータに関する論理アドレスと物理アドレスとの対応情報を格納する管理テーブルである一時テーブルとを含み、
    b)前記作成方法は、
    前記一時ブロックにおいて最後に書き込まれたページを決定し、
    その決定したページの情報に基づいて前記一時テーブルを作成する、
    管理テーブルの作成方法。
  19. 前記一時ブロックにおいて各ページはデータを格納するデータ領域と、該データの管理情報を格納する管理領域とを含み、前記管理領域は前記データ領域に格納されたデータに対する論理ページの情報を格納する、請求項18記載の管理テーブルの作成方法。
  20. 前記一時ブロックにおいて各ページはデータを格納するデータ領域と、該データの管理情報を格納する管理領域とを含み、前記管理領域は有効なページの物理ページアドレスを格納する、請求項18あるいは請求項19に記載の管理テーブルの作成方法。
  21. 前記一時テーブルは前記半導体記憶装置に対する電源投入時に作成される、請求項18から請求項20のいずれか一つに記載の管理テーブルの作成方法。
JP2007549172A 2005-12-09 2006-12-07 不揮発性記憶装置及びデータ読み出し方法及び管理テーブル作成方法 Active JP4633802B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2005355907 2005-12-09
JP2005355907 2005-12-09
PCT/JP2006/324449 WO2007066720A1 (ja) 2005-12-09 2006-12-07 不揮発性記憶装置並びにデータ書込み方法及びデータ読み出し方法

Publications (2)

Publication Number Publication Date
JPWO2007066720A1 true JPWO2007066720A1 (ja) 2009-05-21
JP4633802B2 JP4633802B2 (ja) 2011-02-16

Family

ID=38122865

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007549172A Active JP4633802B2 (ja) 2005-12-09 2006-12-07 不揮発性記憶装置及びデータ読み出し方法及び管理テーブル作成方法

Country Status (5)

Country Link
US (1) US8307149B2 (ja)
EP (1) EP1895418B1 (ja)
JP (1) JP4633802B2 (ja)
CN (1) CN101176074B (ja)
WO (1) WO2007066720A1 (ja)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009003783A (ja) * 2007-06-22 2009-01-08 Toshiba Corp 不揮発性メモリの制御装置及び制御方法及び記憶装置
JP2009003784A (ja) * 2007-06-22 2009-01-08 Toshiba Corp 不揮発性メモリの制御装置及び制御方法及び記憶装置
TWI385519B (zh) * 2008-04-18 2013-02-11 Phison Electronics Corp 資料寫入方法及使用此方法的快閃儲存系統與其控制器
CN101604291B (zh) * 2008-06-12 2012-07-18 联阳半导体股份有限公司 增进多级单元非挥发性内存的数据存取可靠度的方法
TWI398770B (zh) * 2008-07-08 2013-06-11 Phison Electronics Corp 用於快閃記憶體的資料存取方法、儲存系統與控制器
US8316201B2 (en) * 2008-12-18 2012-11-20 Sandisk Il Ltd. Methods for executing a command to write data from a source location to a destination location in a memory device
US20100161932A1 (en) * 2008-12-18 2010-06-24 Ori Moshe Stern Methods for writing data from a source location to a destination location in a memory device
CN101788955B (zh) * 2009-01-23 2012-05-02 群联电子股份有限公司 闪存数据的存取方法及其储存***与控制器***
JP2010211618A (ja) * 2009-03-11 2010-09-24 Toshiba Corp 半導体記憶装置
CN101582903B (zh) * 2009-06-24 2012-08-08 浙江宇视科技有限公司 一种流媒体资源存储方法和设备
US8443263B2 (en) * 2009-12-30 2013-05-14 Sandisk Technologies Inc. Method and controller for performing a copy-back operation
JP5556189B2 (ja) * 2010-01-20 2014-07-23 ソニー株式会社 記憶装置およびデータの書込み方法
KR101678911B1 (ko) * 2010-03-12 2016-11-23 삼성전자주식회사 데이터 저장 장치 및 그것을 포함하는 컴퓨팅 시스템
JP5066209B2 (ja) * 2010-03-18 2012-11-07 株式会社東芝 コントローラ、データ記憶装置、及びプログラム
US8838878B2 (en) * 2010-06-01 2014-09-16 Greenliant Llc Method of writing to a NAND memory block based file system with log based buffering
JP5364807B2 (ja) 2011-06-08 2013-12-11 パナソニック株式会社 メモリコントローラ及び不揮発性記憶装置
CN102381036B (zh) * 2011-08-01 2014-04-16 珠海天威技术开发有限公司 耗材芯片、耗材容器及耗材芯片的数据写入方法
US9069657B2 (en) 2011-12-12 2015-06-30 Apple Inc. LBA bitmap usage
US9141559B2 (en) 2012-01-04 2015-09-22 Intel Corporation Increasing virtual-memory efficiencies
US8719546B2 (en) 2012-01-04 2014-05-06 Intel Corporation Substitute virtualized-memory page tables
WO2013103341A1 (en) * 2012-01-04 2013-07-11 Intel Corporation Increasing virtual-memory efficiencies
US9026887B2 (en) * 2012-03-15 2015-05-05 Micron Technology, Inc. Physical page, logical page, and codeword correspondence
US8625386B2 (en) * 2012-03-22 2014-01-07 Seiko Epson Corporation Non-volatile memory device, circuit board, printing material container and printer
JP5638022B2 (ja) * 2012-03-30 2014-12-10 株式会社東芝 ディスクアレイ装置
JP2013232097A (ja) * 2012-04-27 2013-11-14 Toshiba Corp 半導体記憶装置
JP5983019B2 (ja) * 2012-05-17 2016-08-31 ソニー株式会社 制御装置、記憶装置、記憶制御方法
US8898548B1 (en) 2012-08-24 2014-11-25 Western Digital Technologies, Inc. Methods, data storage devices and systems having variable size ECC page size
US9268682B2 (en) 2012-10-05 2016-02-23 Skyera, Llc Methods, devices and systems for physical-to-logical mapping in solid state drives
US9507523B1 (en) 2012-10-12 2016-11-29 Western Digital Technologies, Inc. Methods, devices and systems for variable size logical page management in a solid state drive
US9489296B1 (en) 2012-10-17 2016-11-08 Western Digital Technologies, Inc. Methods, devices and systems for hardware-based garbage collection in solid state drives
JP2014186761A (ja) 2013-03-21 2014-10-02 Toshiba Corp 半導体記憶装置、コントローラ、及びメモリシステム
CN103455442B (zh) * 2013-08-30 2016-06-08 华为技术有限公司 多通道先进先出缓存队列控制器及访问方法
TWI501243B (zh) * 2013-11-12 2015-09-21 Phison Electronics Corp 資料寫入方法、記憶體儲存裝置、記憶體控制電路單元
TWI515737B (zh) 2013-12-09 2016-01-01 慧榮科技股份有限公司 資料儲存裝置以及其資料抹除方法
US9354955B1 (en) 2014-03-19 2016-05-31 Western Digital Technologies, Inc. Partial garbage collection for fast error handling and optimized garbage collection for the invisible band
KR102254392B1 (ko) 2014-05-12 2021-05-25 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 장치 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템
CN104023058B (zh) * 2014-06-03 2017-05-17 浙江宇视科技有限公司 一种存储资源的管理和分配方法和***
TWI563507B (en) * 2015-07-01 2016-12-21 Phison Electronics Corp Memory management method, memory control circuit unit and memry storage apparatus
CN105653373A (zh) * 2016-02-25 2016-06-08 腾讯科技(深圳)有限公司 资源分配方法及装置
KR20180031412A (ko) 2016-09-20 2018-03-28 삼성전자주식회사 메모리 컨트롤러의 동작 방법과, 이를 포함하는 장치들의 동작 방법들
CN112567327A (zh) * 2018-08-21 2021-03-26 索尼公司 非易失性存储装置、主机装置和数据存储***
KR102585883B1 (ko) * 2018-09-18 2023-10-10 에스케이하이닉스 주식회사 메모리 시스템의 동작 방법 및 메모리 시스템
US11650932B2 (en) 2020-10-25 2023-05-16 Western Digital Technologies, Inc. Integrated non-volatile memory assembly with address translation

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09185551A (ja) * 1996-01-08 1997-07-15 Mitsubishi Electric Corp 半導体記憶装置
JP2003508861A (ja) * 1999-09-03 2003-03-04 レクサー・メディア・インコーポレイテッド セクタ書き込み操作時間を効果的に減少させるための不揮発性メモリユニット内のブロックの構成
US20050030791A1 (en) * 2003-08-04 2005-02-10 Phison Electronics Corp. Method writing data to a large block of a flash memory cell
JP2005196736A (ja) * 2003-12-30 2005-07-21 Samsung Electronics Co Ltd フラッシュメモリのアドレスマッピング方法、マッピング情報管理方法及びこれらの方法を用いたフラッシュメモリ
JP2005222534A (ja) * 2004-02-03 2005-08-18 Samsung Electronics Co Ltd フラッシュメモリのデータ管理装置及び方法
JP2006092169A (ja) * 2004-09-22 2006-04-06 Toshiba Corp メモリコントローラ,メモリ装置及びメモリコントローラの制御方法
WO2006065668A2 (en) * 2004-12-16 2006-06-22 Sandisk Corporation Non-volatile memory and method with multi-stream updating

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2784079B2 (ja) * 1990-04-11 1998-08-06 アスモ株式会社 自動車用シートベルトの自動装着装置
JP3171901B2 (ja) 1992-02-05 2001-06-04 セイコーインスツルメンツ株式会社 不揮発性メモリカードの書換え方法
KR970008188B1 (ko) * 1993-04-08 1997-05-21 가부시끼가이샤 히다찌세이사꾸쇼 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
JPH0918551A (ja) 1995-06-27 1997-01-17 Daini Denden Kk 通信用端末を異なった呼出音で鳴動可能な通信システム及び異なる呼出音を選択鳴動可能な通信用端末
JP3588231B2 (ja) 1997-08-04 2004-11-10 東京エレクトロンデバイス株式会社 データ処理システム及びブロック消去型記憶媒体
JP3793868B2 (ja) 1999-11-25 2006-07-05 カシオ計算機株式会社 フラッシュメモリ管理装置及び記録媒体
US6684289B1 (en) * 2000-11-22 2004-01-27 Sandisk Corporation Techniques for operating non-volatile memory systems with data sectors having different sizes than the sizes of the pages and/or blocks of the memory
JP3621051B2 (ja) 2001-04-26 2005-02-16 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP3692313B2 (ja) * 2001-06-28 2005-09-07 松下電器産業株式会社 不揮発性メモリの制御方法
US7058768B2 (en) * 2002-04-17 2006-06-06 Microsoft Corporation Memory isolation through address translation data edit control
CN100511181C (zh) 2003-08-29 2009-07-08 松下电器产业株式会社 非易失性存储装置及其写入方法
JP2005085011A (ja) * 2003-09-09 2005-03-31 Renesas Technology Corp 不揮発性メモリ制御装置
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US8607016B2 (en) * 2004-07-21 2013-12-10 Sandisk Technologies Inc. FAT analysis for optimized sequential cluster management
US7386655B2 (en) * 2004-12-16 2008-06-10 Sandisk Corporation Non-volatile memory and method with improved indexing for scratch pad and update blocks

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09185551A (ja) * 1996-01-08 1997-07-15 Mitsubishi Electric Corp 半導体記憶装置
JP2003508861A (ja) * 1999-09-03 2003-03-04 レクサー・メディア・インコーポレイテッド セクタ書き込み操作時間を効果的に減少させるための不揮発性メモリユニット内のブロックの構成
US20050030791A1 (en) * 2003-08-04 2005-02-10 Phison Electronics Corp. Method writing data to a large block of a flash memory cell
JP2005196736A (ja) * 2003-12-30 2005-07-21 Samsung Electronics Co Ltd フラッシュメモリのアドレスマッピング方法、マッピング情報管理方法及びこれらの方法を用いたフラッシュメモリ
JP2005222534A (ja) * 2004-02-03 2005-08-18 Samsung Electronics Co Ltd フラッシュメモリのデータ管理装置及び方法
JP2006092169A (ja) * 2004-09-22 2006-04-06 Toshiba Corp メモリコントローラ,メモリ装置及びメモリコントローラの制御方法
WO2006065668A2 (en) * 2004-12-16 2006-06-22 Sandisk Corporation Non-volatile memory and method with multi-stream updating

Also Published As

Publication number Publication date
EP1895418B1 (en) 2015-04-01
JP4633802B2 (ja) 2011-02-16
CN101176074A (zh) 2008-05-07
WO2007066720A1 (ja) 2007-06-14
US20090049229A1 (en) 2009-02-19
CN101176074B (zh) 2010-12-15
US8307149B2 (en) 2012-11-06
EP1895418A1 (en) 2008-03-05
EP1895418A4 (en) 2008-08-27

Similar Documents

Publication Publication Date Title
JP4633802B2 (ja) 不揮発性記憶装置及びデータ読み出し方法及び管理テーブル作成方法
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
US7395384B2 (en) Method and apparatus for maintaining data on non-volatile memory systems
US7877569B2 (en) Reduction of fragmentation in nonvolatile memory using alternate address mapping
KR101303524B1 (ko) 불휘발성 메모리에 대한 메타데이터 리던던시 스킴
JP4931810B2 (ja) 最適化されたシーケンシャルなクラスタの管理のためのfat分析
US8478796B2 (en) Uncorrectable error handling schemes for non-volatile memories
JP5295778B2 (ja) フラッシュメモリ管理方法
US7752412B2 (en) Methods of managing file allocation table information
CN107784121B (zh) 一种基于非易失内存的日志文件***的小写优化方法
US20070094440A1 (en) Enhanced data access in a storage device
US20130151830A1 (en) Mount-time reconciliation of data availability
US20110022807A1 (en) Write once recording device
US7287117B2 (en) Flash memory and mapping control apparatus and method for flash memory
JP2006040264A (ja) メモリカードの制御方法および不揮発性半導体メモリの制御方法
JP5073402B2 (ja) メモリーコントローラ、及びこれを用いた不揮発性記憶装置並びに不揮発性記憶システム
JP5874525B2 (ja) 制御装置、記憶装置、記憶制御方法
JP4242245B2 (ja) フラッシュrom制御装置
JP2008084184A (ja) メモリコントローラ
JP5949122B2 (ja) 制御装置、記憶装置、記憶制御方法
JP2005115562A (ja) フラッシュrom制御装置
Lee et al. RMSS: an efficient recovery management scheme on NAND flash memory based solid state disk
JP2008047155A (ja) 一括消去型不揮発性メモリおよび携帯電話
CN108255437B (zh) 数据贮存装置及方法
US11354200B2 (en) Method and system for facilitating data recovery and version rollback in a storage device

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100810

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101008

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4633802

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

Year of fee payment: 3

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D03