JPWO2005106673A1 - 不揮発性記憶装置及びデータ書込み方法 - Google Patents

不揮発性記憶装置及びデータ書込み方法 Download PDF

Info

Publication number
JPWO2005106673A1
JPWO2005106673A1 JP2006512845A JP2006512845A JPWO2005106673A1 JP WO2005106673 A1 JPWO2005106673 A1 JP WO2005106673A1 JP 2006512845 A JP2006512845 A JP 2006512845A JP 2006512845 A JP2006512845 A JP 2006512845A JP WO2005106673 A1 JPWO2005106673 A1 JP WO2005106673A1
Authority
JP
Japan
Prior art keywords
data
write
address
logical
physical
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006512845A
Other languages
English (en)
Other versions
JP4773342B2 (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
Priority to JP2006512845A priority Critical patent/JP4773342B2/ja
Publication of JPWO2005106673A1 publication Critical patent/JPWO2005106673A1/ja
Application granted granted Critical
Publication of JP4773342B2 publication Critical patent/JP4773342B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2069Management of state, configuration or failover
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2087Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring with a common controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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
    • 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/08Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers from or to individual record carriers, e.g. punched card, memory card, integrated circuit [IC] card or smart card
    • 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
    • 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/7202Allocation control and policies

Abstract

不揮発性記憶装置(101)はホスト(102)からの論理アドレスを受けてデータの書込み、読み出しが可能であって、物理アドレスによりデータの書込み、読み出しが行われる不揮発性メモリ(103)と、所定の管理単位領域毎に論理アドレスと物理アドレスの対応情報を格納する論物変換テーブル(106)と、不揮発性メモリ内の複数領域に重複して配置され管理単位領域のサイズよりも小さなサイズのデータの論理アドレスと物理アドレスの対応情報を格納する重複テーブル(107)と、不揮発性記憶装置の動作制御を行うコントローラ(104)とを備える。コントローラ(104)は、一の管理単位領域に書込み済みのデータと同一の論理アドレスを持つデータを他の管理単位領域に重複して書込むことを許可し、その重複して書込むための書込みモードを複数有し、ホストからの論理アドレスの変化の状況に応じて書込みモードを選択的に切り替える。

Description

本発明は、フラッシュメモリ等の不揮発性メモリを用いた記憶装置およびその書込み方法に関する。
近年、不揮発性メモリを搭載したメモリカードはデジタルカメラや携帯電話の記憶媒体としてその市場を拡大している。そしてメモリカード容量の増加に伴い、データファイルや静止画等の小容量の記録からより大容量が必要となる動画記録へとその用途は広がっている。このため、従来より、不揮発性メモリを搭載した記録媒体に関し種々の考案がなされている(例えば、特許文献1〜4)。
近年、メモリカードの不揮発性メモリとして主に使用されているNANDタイプのフラッシュメモリは、その容量の増加に伴いデータの消去単位となる物理ブロックのサイズが16kB(主に128MB以下のフラッシュメモリについて)のものから128kB(主に128MB以上のフラッシュメモリ)へと大きくなってきている。それに対し、メモリカードへのデータ書込みを管理するファイルシステムでは、データの書込み単位となるクラスタは16kBのままで変化していない。
従来の小容量(主に128MBまでの容量)のメモリカードにおいては、メモリカードにデータを書込む際のクラスタの容量と、メモリカード内部に搭載されているNANDタイプのフラッシュメモリの消去単位となる物理ブロックとは等しかった。
特開2001−154909号公報 特開平11−53248号公報 特開2002−324008号公報 特開平5−216780号公報
しかし、大容量化が進むと、例えば、容量が128MBを越えた容量値の不揮発性メモリからは、メモリカードにデータを書込む単位であるクラスの容量の16kBと、メモリカード内部に搭載されているNANDタイプのフラッシュメモリの消去単位である物理ブロックの容量の128kBとが異なる。これにより、メモリカードに書込まれたファイルがフラグメンテーションを発生していた場合の書込み性能の低下を招いていた。
上記の様にフラグメンテーションが発生した状態での、従来の不揮発性メモリの書込み方法においては、書込み処理に要する時間が長いとともに、書込み・消去を行う物理ブロックの数が多く必要となるという課題が存在していた。
また、ホストからの書込み要求には、前回にデータを書込んだ領域と連続した論理アドレス領域にデータを続けて書込む場合や、前回にデータを書込んだ領域と全く別の任意の領域にデータを書込む場合等、種々の場合があり、いずれのアクセス方法によっても効率的な書込み処理が実現されることが望まれる。
本発明は上記課題を解決すべくなされたものであり、その目的とするところは、ホストからのアクセス方法に依存せず書込み処理に要する時間を短縮できる不揮発性の記憶装置を提供することにある。
本発明に係る不揮発性記憶装置は、ホストからの論理アドレスを受けてデータの書込み、読み出しが可能な不揮発性記憶装置である。不揮発性記憶装置は、物理アドレスによりデータの書込み、読み出しが行われ、複数の物理ブロックから構成される不揮発性メモリと、論理アドレスと物理アドレスの対応情報を、所定の管理単位領域毎に論理グループアドレスと、1つ以上の物理ブロックからなる物理グループのアドレスとの対応情報をとして格納する論物変換テーブルと、論物変換テーブルで対応付けられている論理グループアドレスと同一の論理グループアドレスを持つデータについて、管理単位領域のサイズよりも小さなサイズのデータの論理アドレスと物理アドレスの対応情報として格納する重複テーブルと、不揮発性記憶装置の動作制御を行うコントローラとを備える。コントローラは、一の管理単位領域に書込み済みのデータと同一の論理アドレスを持つデータを、他の管理単位領域に重複して書込むことを許可し、その重複して書込むための書込みモードを複数有し、ホストからの論理アドレスの変化の状況に応じて、論物変換テーブルの情報を更新することなく、書込みモードを選択的に切り替える。
本発明に係るデータ書込み方法は、ホストからの論理アドレスを受けてデータの書込み、読み出しが可能な不揮発性記憶装置に対するデータ書込み方法である。その書込み方法は、一の管理単位領域に書込み済みのデータと同じ論理アドレスを持つデータを他の管理単位領域に重複して書込むための書込みモードを複数有し、ホストから、既に書込み済みのデータと同じ論理アドレスを持つデータの書込みコマンドを受けたときに、書込み要求のあったデータを、書込み済みデータの管理単位領域とは別の管理単位領域に重複して書込み、別の管理単位領域に書込んだデータの論理アドレスと物理アドレスを対応づけて記憶し、その後、続けてホストから書込みコマンドを受けたときに、ホストからの論理アドレスの変化の状況に応じて書込みモードを選択的に切り替える。
本発明によれば、不揮発性メモリ内のある論理アドレスに対してデータが書込まれた後、同じ論理アドレスに対して再度データが書込まれる場合に、物理アドレス上で前に書込まれたデータを消去せず保持したまま、前にデータが書込まれた物理領域と異なる物理領域に新たにデータを書込む重複書込みを許可する。これにより、不揮発性メモリ特有の、データの更新に伴うコピー、消去処理の回数を低減でき、書込み効率を向上できる。さらに、書込みアドレスの変化の状況に応じて書込みモードを選択的に切り替えるので、ホストからの書込み要求の種類(連続アクセス、ランダムアクセス)に依存せずに、より最適な方法で書込み処理を実行できる。
本発明の不揮発性記憶装置の一実施形態であるメモリカードの構成を示す図 論物変換テーブルの構成を示す図 フラッシュメモリの内部の構成を示す図 フラッシュメモリの物理ブロックの構成を示す図 メモリカードの内部における論理的なデータの管理を示した図 重複テーブルの構成を示した図 (a)FAT領域に対する重複情報の構成を示す図、(b)データ領域に対する重複情報の構成を示す図 フラッシュメモリの記憶領域のページのデータフォーマットを示す図 書込み単位配置テーブルの構成を示す図 メモリカードのフラッシュメモリへの書込み処理を示すフローチャート メモリカードのフラッシュメモリへの書込み処理を示すフローチャート(図9のつづき) 従来の書込み処理を説明するための図 従来の書込み処理を説明するための図 本発明の連続書込み処理を説明するための図 連続書込み処理のフローチャート 上書き書込み処理を説明するための図 上書き書込み処理のフローチャート ランダム書込み処理のフローチャート 重複テーブルの登録位置の決定処理のフローチャート 新規書込み処理のフローチャート 連続モードの場合の集約処理を説明するための図 上書きモード、ランダムモードの場合の集約処理を説明するための図 集約処理のフローチャート 集約処理のフローチャート(図20の続き) FAT情報に対する論理グループの割当てについて説明した図 FAT情報に関する種々の管理条件をまとめて示した図 FAT領域変換テーブルのデータ構成例を示す図 FAT2に対する論理グループ0−2に対応する物理ブロックの領域構成を示した図 FAT書込み処理のフローチャート 連続書込みモード時の動作の具体例を説明した図 連続書込みモード時の動作の具体例を説明した図 連続書込みモード時の動作の具体例を説明した図 連続書込みモード時の動作の具体例を説明した図 連続書込みモード時の動作の具体例を説明した図 連続書込みモード時の動作の具体例を説明した図 連続書込みモード時の動作の具体例を説明した図 上書き書込みモード時の動作の具体例を説明した図 上書き書込みモード時の動作の具体例を説明した図 上書き書込みモード時の動作の具体例を説明した図 上書き書込みされたブロックの集約処理の具体例を説明した図 上書き書込みされたブロックの集約処理の具体例を説明した図 ランダム書込みモード時の動作の具体例を説明した図 メモリカードのフラッシュメモリからの読み出し処理を示すフローチャート 通常読み出し処理を示すフローチャート 連続読み出し処理を示すフローチャート 上書き読み出し処理を示すフローチャート ランダム読み出し処理を示すフローチャート メモリカードのフラッシュメモリからの読み出し処理を示すフローチャート(図38のつづき) FAT通常読み出し処理を示すフローチャート FAT重複読み出し処理を示すフローチャート
符号の説明
101 メモリカード
102 ホスト
103 フラッシュメモリ
104 コントローラ
105 消去済みテーブル
106 論物変換テーブル
107 重複テーブル
107a FAT領域に対する重複情報
107b データ領域に対する重複情報
108 FAT領域変換テーブル
150 書込み単位配置テーブル
以下、添付の図面を参照し、本発明に係る不揮発性記憶装置の一実施形態であるメモリカード及びその書込み方法について説明する。
1.メモリカードの構成
図1Aに本発明の不揮発性記憶装置の一実施形態であるメモリカードの構成を示す。メモリカード101はホスト102からデータの読み出し、書込みが可能な記憶装置である。メモリカード101は、不揮発性の記憶素子であるフラッシュメモリ103と、フラッシュメモリに対するデータの書込み、読み出しを制御するコントローラ104と、消去済みテーブル105と、論物変換テーブル106と、重複テーブル107と、FAT領域変換テーブル108とを備える。
フラッシュメモリ103はここでは128MBの容量を持つ。但し、フラッシュメモリ103の容量はこれに限定されず、また、複数のフラッシュメモリを備えても良い。コントローラ104は、ホスト102からの書込みと読み出し命令を受けてフラッシュメモリ103へのデータの格納、または、フラッシュメモリ103からのデータの読み出しを制御する。
フラッシュメモリ103に格納されるデータは、ファイルシステムの1つであるFATファイルシステムにより管理される。FATファイルシステムは、ファイル管理情報(以下「FAT情報」という。)として、データ記録領域を複数のパーティションと呼ばれる領域に分割して管理するための情報を格納するマスターブートレコード・パーティションテーブル、1つのパーティション内の管理情報を格納するパーティションブートセクタ、ファイルに含まれるデータの格納位置を示すFATテーブル1及びFATテーブル2、並びにルートディレクトリ直下に存在するファイル及びディレクトリの情報を格納するルートディレクトリエントリを含む。なお、ファイルシステムは他の種類のものでもよい。
消去済みテーブル105はフラッシュメモリ103内部の物理ブロックのそれぞれ消去済であるか、または、書込み済みであるかを示す情報を格納する。論物変換テーブル106は、ホスト102が指定するアドレス(以下「論理アドレス」という。)と、フラッシュメモリ103内部のアドレス(以下「物理アドレス」という。)との変換を行うテーブルである。
論物変換テーブル106は、論理グループアドレスに対応するアドレスの領域に、その論理グループに対応する物理ブロックのアドレスを格納する。論物変換テーブル106の簡単な構成を図1Bに示す。論物変換テーブル106は論理グループアドレスをテーブルのアドレスとして論理アドレスに対応する物理アドレスをテーブルのデータとして持つ。対応する物理ブロックが存在しない場合には無効値(本実施の形態では0x0000)をデータとして持つ。論物変換テーブル106は論理ブロック1〜999に対応する領域と論理グループ0−0〜0−3に対応する2つの領域からなる構成を取る。これは後述するが、論理アドレスをFAT領域とデータ領域に分割して取り扱う本発明の特徴に起因する。
本実施形態では、フラッシュメモリ103において、ある物理ブロックAに既に書込み済みであるデータと同じ論理アドレスを持つ別のデータを、物理ブロックAとは異なる物理ブロックBに書込むこと(以下、これを「重複書込み」という。)を許容する。重複テーブル107は、このような重複書込みされたデータに関する物理アドレスと論理アドレス間の対応情報を格納するテーブルである。FAT領域変換テーブル108は、フラッシュメモリ103における、FAT1,FAT2等のFAT情報を格納する領域の境界セクタに関する情報を格納する。
すなわち、本実施形態のメモリカード101は、フラッシュメモリ103において、ある論理アドレスに対応した物理アドレスにデータが書込まれた後、同じ論理アドレスに対して再度データが書込まれる場合に、前に書込まれたデータを物理的に消去せず保持したまま、前にデータが書込まれた物理ブロックと異なる物理ブロックにデータを書込むことを可能とする。メモリカード101は、新たに書込んだデータの論理アドレスと物理アドレスを重複テーブル107に格納するとともに、前にデータが書込まれた物理ブロックと後にデータが書込まれた物理ブロックの対応関係をも重複テーブルに格納する。すなわち、重複テーブル107は、データが書込まれた論理アドレスと、その論理アドレスに対して以前にデータが書込まれた物理領域(転送元)と、その論理アドレスに対して後にデータが書込まれた物理領域(転送先)とに関する情報を互いに関連づけて格納する。
また、言い換えると、重複テーブル107は、フラッシュメモリ103の物理領域に対してのみデータが書込まれ、未書込みの物理ページを残している物理ブロック(転送先)に書込まれたデータに関する情報を格納するテーブルである。重複テーブル107は、未書込み領域をもつ物理ブロック(転送先)のブロックアドレス、旧データがある物理ブロック(転送元)のブロックアドレスや、そこに書込まれたデータの論理グループアドレス等の情報を格納する、とも言える。
図2はフラッシュメモリ103の内部の構成を示す図である。フラッシュメモリ103の記録領域は複数の物理ブロック201から構成される。物理ブロック201は128kBの大きさを持ちデータを一括に消去できる消去単位である。本実施形態では1物理ブロックをデータの管理単位として扱うが、複数の物理ブロックをまとめて管理単位として扱ってもよい。
図3は物理ブロック201の内部の構成を示す図である。物理ブロック201は複数の物理ページ301から構成される。物理ページ301は、データを書込む際の書込み単位であり、2kBの大きさを持つ。ホスト102が論理的にデータの書込みを行う単位であるクラスタは16kBであるが、この値は物理ブロック201の容量128kBとも物理ページ301の容量2kBとも一致しない。そのため、連続する8ページ分の物理ページにより容量16kBの部分物理ブロックを構成する。部分物理ブロック(16kB)はホストからのデータの書込みを想定してコントローラ103が論理的に扱うデータの単位である。1つの物理ブロック201は8つの部分物理ブロックからなり、その部分物理ブロック単位でホスト102からのデータが書込まれる。
図4はメモリカード101の内部における論理的なデータの管理を示した図である。メモリカード101に搭載されているフラッシュメモリ103の記憶容量は128MBである。一般的にフラッシュメモリ103には初期不良ブロックや、書き換えを繰り返すことにより不良ブロックが発生することがあるため、予めやや少な目の容量をメモリカード101の容量とする。本例では、ホスト102が認識できる容量は125MBとする。ホスト102から書込みを行う単位である16kB単位を論理ブロック402とし、メモリカード101の125MBの容量において、0から順に7999まで割り当てている。この論理ブロック8個で、フラッシュメモリ103の消去単位である物理ブロックと等しい128kB単位の論理グループを構成する。
図5は重複テーブル107の構成を示した図である。重複テーブル107は、フラッシュメモリ103内の主としてFAT情報を格納する領域(以下「FAT領域」という。)に対する重複情報(FAT重複情報)107aと、ユーザデータを格納する領域(以下「データ領域」という。)に対する重複情報107bとを格納する。本例では、FAT領域に対する重複情報107aは、4つのレコード(FAT重複情報0〜3)を有し、データ領域に対する重複情報は8つのレコード(重複情報0〜7)を有するが、重複情報のレコード数はこれに限られない。
図6(a)にFAT重複情報107aの構成を示す。FAT重複情報107aにおいて、「転送先物理ブロックアドレス」は、転送先の物理ブロックのアドレスを格納する。「転送先アロケーション物理ページ」は、転送先として割当てられた物理ページの番号を格納する。FAT重複情報107aは転送元に関する情報を格納していない。これは、後述するように、FAT領域については、前にデータが書込まれた物理ブロックと同じ物理ブロック内に後のデータが書込まれるため、転送元の物理ブロックと転送先の物理ブロックが同じになるからである。
図6(b)にデータ領域に対する重複情報107bの構成を示す。重複情報107bにおいて、「論理ブロックアドレス」のフィールドは、書込みデータの論理ブロックのアドレスを格納する。「転送元物理ブロックアドレス」のフィールドは、転送元の物理ブロックのアドレスを格納する。「転送先物理ブロックアドレス」のフィールドは、転送先の物理ブロックのアドレスを格納する。「転送先先頭ページ論理アドレス」のフィールドは、転送先の物理ブロックの先頭ページに格納されたデータの論理アドレスを格納する。
「転送先次書込み論理アドレス」のフィールドは、転送先の物理ブロックにおいて次に書込まれるデータの先頭データの論理アドレスを格納する。すなわち、転送先の物理ブロックにおいて最後に書込まれたデータの論理アドレスの次のアドレスを格納する。「転送先次書込み物理アドレス」のフィールドは、転送先の物理ブロックにおいて次に書込みを行うときの先頭の物理アドレスを格納する。すなわち、転送先の物理ブロックにおいて消去済み領域の先頭の物理アドレスを格納する。
「転送先書込みモード」のフィールドは、書込みモードを示す値を格納する。書込みモードには、「連続モード」、「上書きモード」、「ランダムモード」の3種類がある。各モードを示す値は以下のとおりである。
連続モード:0x0000h
上書きモード:0xFFFFh
ランダムモード:上記以外(ランダムモードでの書込み周期)
「転送先有効オフセット物理アドレス」のフィールドは、転送先物理ブロックにおいて最後に書込まれたデータについての、転送先物理ブロック先頭からのオフセット値を格納する。
図7にフラッシュメモリ103の記憶領域のページのデータフォーマットを示す。各ページは、そのページについての管理情報を格納する管理領域と、データを格納するセクタデータ領域とを有する。管理領域は、集約フラグ、論理ブロックアドレス、論理セクタアドレス、管理領域のECC(Error Correction Code)等が格納される。セクタデータ領域には、セクタデータと、セクタIDと、セクタデータとセクタIDについてのECCとが格納される。
図8に書込み単位配置テーブルの構成を示す。書込み単位配置テーブル150はフラッシュメモリ103内の管理領域に格納される。書込み単位配置テーブル150はランダムモードでの書込みとFAT書込みの際に使用される。
ランダムモードでの書込みでは「書込み単位」のフィールドは、ランダムモードで書込みを行うときの最小の書込みデータサイズを格納する。この書込み単位より小さいデータサイズでの書込みは禁止される。書込み単位は、例えば、0x0010h(16セクタ)、0x0020h(32セクタ)、0x0040h(64セクタ)に設定される。1物理ブロック(=64ページ)に含まれる書込み単位の数は、書込み単位の大きさにより異なる。例えば、書込み単位の値が0x0020h(32セクタ(=8ページ))であれば、1物理ブロック内に8個の書込み単位が含まれる。図8は、書込み単位の値が0x0010h(16セクタ(=4ページ))の場合の単位配置テーブル150の構成を示す。この場合、1物理ブロック内に16(F)個の書込み単位(書込み単位0〜書込み単位F)が含まれる。「書込み単位0先頭アドレス」のフィールドは、16個の書込み単位のうちの第1番目の書込み単位のデータが書込まれた領域の先頭物理アドレスの値を格納する。「書込み単位n先頭アドレス」のフィールドは、第n+1番目の書込み単位が書込まれた領域の先頭物理アドレスの値を格納する。
FAT書込みでは「書込み単位」のフィールドは、書込みを行う論理グループによる固定値となる(図23Aの書込み単位のサイズ)。従って1物理ブロック(=64ページ)に含まれる書込み単位の数も論理グループにより異なる。
2.メモリカードの動作
上記の構成を有するメモリカード101の動作を以下に説明する。
2.1 書込み動作
本実施形態のメモリカードによるフラッシュメモリ103への書込み処理について図9、図10を参照して説明する。
図9において、メモリカード101のコントローラ104は、ホスト102から書込みコマンドを受信すると、ホスト102から指定された書込み論理アドレスに基づきフラッシュメモリ103においてデータを書込むべき領域がFAT領域かデータ領域かを判定する(S11)。FAT領域であれば、図10に示す処理を実行する(詳細は後述する)。なお、ホスト102はデータ書込み領域を論理セクタアドレスで指定する。
データ領域であれば、コントローラ104は重複テーブル107を参照し、指定された論理アドレスの登録があるか否かを判断する(S12)。この判断は、重複テーブル107の重複情報の「論理ブロックアドレス」を参照し、その値がホスト102により指定された論理ブロックアドレスと等しいか否かを判断して行われる。ここで、論理ブロックアドレスは、論理セクタアドレスを管理単位であるフラッシュメモリの物理ブロックサイズで除した商として得られる。
重複テーブル107に登録がない場合、重複テーブル107での登録位置を決定した後(S23)、物理ブロックへの新規書込みを行う(S24)。これらの処理の詳細は後述する。
重複テーブル107に登録がある場合、転送先の物理ブロックにおいて未書込みの領域(消去済み領域)があるか否かを判断する(S13)。これは、重複情報107bの「転送先次書込み物理アドレス」フィールドの値から判断できる。すなわち、「転送先次書込み物理アドレス」フィールドの値が、0x0100(物理ブロックのサイズ)よりも小さければ、未書込み領域があると判断し、0x0100と同じであれば、未書込み領域があると判断する。
未書込みページがない場合、集約処理を行い(S18)、未書込みページがある場合、重複情報107bの「転送先書込みモード」フィールドの値から書込みモードを判定する(S14)。
書込みモードがランダムモードの場合、まずランダム書込みが可能か否かを判断する(S15)。この判断は以下のように行う。重複情報107bの「書込みモード」の値が”連続モード”であるときは、「転送先次書込み物理アドレス」が、書込み周期(例えば、0x0040)以下のときに、ランダム書込み「可」と判断する。それ以外は、ランダム書込み「不可」と判断する。ここで、書込み周期とは、書込みを行う際の所定のデータサイズであり、書込み周期より小さいデータサイズでの書込みは不可能となる。「書込みモード」の値が”上書きモード”であるときは、「転送先先頭ページ論理アドレス」と「転送先次書込み論理アドレス」との差分が、書込み周期(例えば、0x0010、0x0020又は0x0040)に一致するときに、ランダム書込み「可」と判断する。それ以外は、ランダム書込み「不可」と判断する。
ランダム書込みが可能であれば、ランダム書込みを行う(S16)。ランダム書込みが不可能であれば、集約処理を行う(S18)。
書込みモードが上書きモードの場合、まず上書き書込みが可能か否かを判断する(S19)。この判断は以下のように行う。重複情報107bの「書込みモード」の値が”連続モード”であるときは、ホスト102により指定された論理アドレスが「転送先先頭ページ論理アドレス」以上のときに、上書き書込み「可」と判断する。それ以外は、上書き書込み「不可」と判断する。「書込みモード」の値が”上書きモード”であるときは、ホスト102により指定された論理アドレスが「転送先先頭ページ論理アドレス」以上でかつ「転送先次書込み論理アドレス」よりも小さなときに、上書き書込み「可」と判断する。それ以外は、上書き書込み「不可」と判断する。
上書き書込みが可能であれば、上書き書込みを行う(S20)。上書き書込みが不可能であれば、ステップS15に進む。
書込みモードが連続モードの場合、まず連続書込みが可能か否かを判断する(S21)。重複情報107bの「転送先次書込み論理アドレス」の値が、ホスト102により指定された論理アドレスよりも小さいときに、連続書込み「可」と判断する。それ以外は、連続書込み「不可」と判断する。連続書込みが可能であれば、連続書込みを行う(S22)。連続書込みが不可能であれば、ステップS19に進む。
書込み処理(S16、S20、S22、S24)が終了すると、ホスト102からの書込みデータの転送が継続しているか否かを判断する(S17)。ホスト102から終了を示すコマンドが送信されたときは、処理を終了し、そうでなければ、ステップS11に戻り、上記処理を繰り返す。
本実施形態のメモリカード101は以上のように、直前の書込みアドレスとは関連性のない任意の論理アドレス領域に書込みを行うランダムモードと、直前に書込みを行った論理アドレス領域と同じ論理アドレス領域に書込みを行う上書きモードと、連続した論理アドレス領域に書込みを行う連続モードとを有し、これらのモードを、ホストから受けた論理アドレスの変化の状況に応じて選択的に切り替える。このように書込みモードを切り替えることで、書込み状況に応じた最適な書込み処理が実現され、書込み処理の効率を向上できる。
なお、本実施形態のメモリカードは3つの書込みモードを有しているが、これらの書込みモードは全て備えていなくてもよく、アプリケーションに応じて1つ又は2つの書込みモードのみを備えてもよい。
以下、各書込み処理についてより具体的に説明する。
2.1.1 連続書込み
本実施形態における連続書込み処理の概念を説明する。本実施形態における連続書込み処理の概念を説明する前に、従来の書込み処理によるフラッシュメモリ内部のデータ配置の変化を説明する。
図11Aに示すようにデータの消去、書込みが行われる場合を検討する。図11A(a)の状態では、データ領域において、クラスタ2とクラスタ3にファイル1が書込まれ、クラスタ4にファイルが書込まれ、クラスタ5とクラスタ6にフィル3が書込まれクラスタ7にファイル4が書込まれ、クラスタ8とクラスタ9にファイル5が書込まれている。
この状態からホスト102によってファイル1,3,5が消去された状態を図11A(b)に示す。ホスト102は、フラッシュメモリ103内のデータ領域に対しては何らデータの書込み・消去を行わず、FAT1において、ファイル1,3,5に関連するクラスタの値を全て”0000”に書き換えることによってファイル1,3,5を論理的に消去する。それにより、データ領域のファイル1,3,5があった領域は、ホスト102により空き領域として認識される。
この状態からホスト102が容量96KBの新ファイルを書込んだ後の状態が図11A(c)である。FAT1において空き領域を示す”0000”が書かれたクラスタに対して新ファイルを書込む。
以上のようにしてホスト102はメモリカード101に書込んだファイルを消去し、また新たなファイルを書込む。
図11Aの消去・書込み処理に対してメモリカード101内部での従来の処理について図11Bを用いて説明する。
図11B(a)はフラッシュメモリ103内部におけるデータ構成を示したものであり、物理ブロック100にファイル1〜5が書込まれている。物理ブロック101〜104は消去済みブロックである。この状態からファイル1,3,5が論理的に消去された図11B(b)の状態になっても、この物理ブロック100の状態は変わらず図11B(a)の状態のままである。
次にホスト102が新ファイルをメモリカード101に書込む場合、新ファイルを書込むべきクラスタは3つの部分(クラスタ2と3、クラスタ5と6、クラスタ8と9)に分かれているので、ホスト102は3回に分けてメモリカード101に対してデータを書込む必要がある。
まず、別の消去済み物理ブロック101において、消去されたファイル1に対応する領域に新ファイルの一部を書込み、残りの領域にファイル2〜5をコピーする。そして書込み後に物理ブロック100を物理的に消去する。これにより図11B(b)の状態になる。
次に、別の消去済み物理ブロック102において、消去されたファイル3に対応する領域に新ファイルのデータの一部を書込むとともに、それ以外の領域には物理ブロック101からデータをコピーする。その後、物理ブロック101を物理的に消去する。これにより図11B(c)の状態になる。
さらに、別の消去済み物理ブロック103において、消去されたファイル5に対応する領域に新ファイルのデータの一部を書込むとともに、それ以外の領域には物理ブロック102からデータをコピーする。その後、物理ブロック102を物理的に消去する。これにより図11B(d)の状態になる。
以上のように、従来では、1つの論理グループ内の書込みであるにもかかわらず、3つの物理ブロックに対して書込み・消去を行う必要があり、書き込み処理に時間がかかった。
次に、本実施形態による上書き書込みの動作について図11Cを用いて説明する。
図11C(a)に示すように、最初、物理ブロック99にファイル1〜5のデータが格納されている。物理ブロック100〜物理ブロック102は消去済みブロックである。この状態で、新ファイルを、ファイル1、ファイル3、ファイル5がそれぞれ記録された論理アドレス領域と同じ論理アドレス領域に分けて書込む場合を考える。メモリカード101は、消去済みテーブル105を参照して、消去済みの物理ブロック100を検索し、その物理ブロック100に新ファイルの一部を記録する(図11C(b)参照)。その時点で重複テーブル107において新ファイルについて論理アドレスと物理アドレスの対応づけを行うとともに、新ファイルとファイル1の物理アドレスの対応づけを行う。このとき、論理ブロック99は変更されない。続いて、物理ブロック100においてファイル3に対応する位置に次の新ファイルの一部を記録する。その際、物理ブロック99におけるファイル2のデータをコピーした後、書込む(図11C(c)参照)。その時点で重複テーブル107において新ファイルについて論理アドレスと物理アドレスの対応づけを行うとともに、新ファイルとファイル3の物理アドレスの対応づけを行う。同様に、物理ブロック100において、ファイル4のデータをコピー後、新ファイルの一部を書込み後、物理ブロック99を消去する(図11C(d)参照)。この時点で、重複テーブル107において物理ブロック99と物理ブロック100の対応づけを解消する。
以上のように、重複テーブル107によって、既に書込まれたデータと同じ論理アドレスを持ち、異なる物理ブロックに書込まれた新たなデータについて、論理アドレスと物理アドレスの対応づけを行うとともに、前に書込まれたデータと新たに書込んだデータの物理ブロック間の対応付けを行っている。このような重複テーブル107を備えることにより、データの上書きによる別の物理ブロックへのデータのコピー及び消去の回数を低減でき、書込み効率を向上できる。
図12のフローチャートを参照し、連続書込み処理の詳細を説明する。
最初に、直ちに、連続書込み可能か否かを判断する(S51)。具体的には、登録されている重複情報107bの「転送先次書込み論理アドレス」が、ホスト102が指定する論理アドレスに等しい場合に、直ちに連続書込み可能と判定する。ホスト102が指定する論理アドレスよりも小さいときは、「不可」と判定する。
書込み「不可」である場合、「転送先次書込み物理アドレス」の示すアドレスから、ホスト102が指定する論理セクタアドレスの前までの領域に、転送元の物理ブロックにおける対応するデータをコピーする(S52)。この際、書込み状況にしたがい重複情報107bの「転送先次書込み論理アドレス」と「転送先次書込み物理アドレス」を更新する。
その後、ホスト102から転送されたデータを指定された領域にページ単位で書込む(S53)。この際、書込み状況にしたがい重複情報107bの「転送先次書込み論理アドレス」と「転送先次書込み物理アドレス」を更新する。
ホスト102からの書込みデータの転送が終了したか否かを判定する(S54)。ホスト102から終了を示すコマンドが送信されたときに、書込みデータが終了したと判定する。ホスト102からのデータ転送が継続している場合、次に書込む領域が同じ論理グループか否かを判断し(S55)、同じ論理グループであれば、データの書込みを継続する(S53)。「転送先次書込み論理アドレス」が0x0100であれば、異なる論理グループと判断し、0x0100以下であれば同じ論理グループであると判断する。異なる論理グループであれば処理を終了する。
2.1.2 上書き書込み
図13を参照し、本実施形態における上書き書込み処理の概念を説明する。図13(a)を参照し、物理ブロック100の論理ブロック8〜15のそれぞれにデータが格納されている場合に、ホスト102からの論理ブロック10に対する書込みに対して、コントローラ104は論理ブロック10が属する論理グループ0に対応する物理ブロック100を論物変換テーブル106から得る。そして消去済みテーブル105から消去済みのブロックである物理ブロック101を得る。そしてホスト102からのデータを論理ブロック10として書込み、まだ未書込みのページを残した物理ブロック101に関する情報を重複テーブル107に格納する。
この後、さらにホスト102が同一の論理ブロックである論理ブロック10に対して書込みを行う場合、コントローラ104は論理ブロック10が属する論理グループ0に対応する物理ブロック100を論物変換テーブル106から得る。そして、重複テーブル107を参照して、未書込みのページを持ち、かつ、同じ論理グループ0のデータが書込み済みである物理ブロック101を得る、そしてホスト102からのデータを、論理ブロック10として書込み、まだ未書込みのページを残した物理ブロック101に関する情報を重複テーブル107に格納して書込みを終える。この状態が図13(b)に示した状態である。この処理に要する時間も同様に2880μsである。
さらに、この後、連続してホスト102から同一の論理ブロックである論理ブロック2に対して複数回の書込みを行った後の状態を示した図が図13(c)である。
以上のように本実施の形態では、同一の論理ブロックに対する書込みが連続して発生した場合に、1つの物理ブロックに対して続けて、かつ、書込みが発生した論理ブロックに対してのみ書込み行う。これにより、論理ブロックの書き換えに要する時間を低減できる。
図14のフローチャートを参照し、上書き書込み処理の詳細を説明する。最初に、上書きモードに設定する(S61)。重複情報107bの「転送先書込みモード」フィールドの値を”上書きモード”を示す値に設定する。
そして、連続モードからの移行か否かを判断する(S62)。この判断は、重複情報107bの「転送先書込みモード」を参照して行われる。連続モードからの移行であれば、直ぐにホストデータを書込み可能か否かを判断する(S63)。この判断は、以前の書込みにおいて、書込み周期を満たすように、書込みがなされているか否かを判断することにより行う。すなわち、書込み対象の物理ブロックにおいてデータ書込み済みの領域の境界が、書込み周期にアライメントされているかを判断する。具体的には、既に書込み済みのページの合計のサイズが2のべき乗の値となるか否かを判断する。より具体的には、重複情報107bの「転送先次書込み物理アドレス」が、0x0004、0x0008、0x0010、0x0020、0x0040、0x0080のいずれかであれば、直ぐに上書き可能であると判定し、上記以外の時には不可と判定する。
直ぐに書込みが不可の場合、周期を満たすように不足分のデータを、書込み対象のブロックにコピーする(S64)。すなわち、転送元物理ブロックから転送先物理ブロックへ、論理ブロックが連続になるように、「転送先次書込み物理アドレス」が示すアドレスから、書込み後のページ数のサイズが2のべき乗となるアドレスまでのデータをコピーする。この際、書込み状況に応じて「転送先次書込み論理アドレス」と「転送先次書込み物理アドレス」を更新する。
次に、有効オフセットを設定する(S65)。「転送先有効オフセット物理アドレス」に「転送先次書込み物理アドレス」の値を書込む。
その後、直ぐにホストデータを書込み可か否かを判断する(S66)。登録されている重複情報の「転送先先頭ページ論理アドレス」とホストが指定する論理セクタアドレスとが同じページに属していれば、書込み可と判定し、属していなければ書込み不可と判定する。
不可と判定されたときは、書込みデータの前のデータを書込み対象ブロックにコピーする(S67)。「転送先先頭ページ論理アドレス」フィールドが示すアドレスからホスト102が指定するセクタアドレスの直前までのデータを、転送元物理ブロックから転送先物理ブロックへコピーする。この際、書込み状況に応じて「転送先次書込み物理アドレス」フィールドを更新する。
そして、ホスト102から転送されたデータをページ単位で書込む(S68)。この際、書込み状況に応じて「転送先次書込み物理アドレス」フィールドを更新する。
ホスト102からの書込みデータの転送が終了したか否かを判定する(S69)。ホスト102からのデータ転送が終了している場合、上書き周期分の残りのデータを書込み対象ブロックにコピーする(S70)。ホスト102からのデータ転送が継続している場合、次に書込む領域が同じ論理グループか否かを判断し(S71)、同じ論理グループであれば、データの書込みを継続する(S68)。異なる論理グループであれば処理を終了する。
2.1.3 ランダム書込み
本実施形態において、ランダム書込みとは、転送先物理ブロックにおいて既に書込まれたデータの論理アドレスと、新たに書込もうとするデータの論理アドレスとが、連続でもなく、重複もしない場合の書込みである。
図15のフローチャートを参照し、ランダム書込み処理の詳細を説明する。最初に、重複情報107bの「転送先書込みモード」を参照してランダムモードであるか否かを判断する(S81)。
ランダムモードでなければ、ホストデータを直ぐに書込み可能か否かを判断する(S82)。この判断は、上書き書込みの場合と同様、以前の書込みにおいて、書込み周期を満たすように、書込みがなされているか否かを判断することにより行う。直ぐに書込みが不可の場合は、周期を満たすように不足分のデータを、書込み対象のブロックにコピーする(S83)。
その後、ランダムモードに設定する(S84)。重複情報107bの「転送先書込みモード」の値が”上書きモード”のときは、「転送先書込みモード」に「転送先次書込み物理アドレス」の値を書込む。
次に、有効オフセットを設定する(S85)。「転送先有効オフセット物理アドレス」に「転送先次書込み物理アドレス」の値を書込む。
その後、直ぐにホストデータを書込み可か否かを判断する(S86)。ホスト102が指定する論理セクタアドレスを、重複情報107bの「転送先書込みモード」の値で割った剰余が、1ページサイズ未満(0x0003未満)であれば、直ぐに書込み可と判定する。上記以外は不可と判定する。
不可と判定されたときは、書込みデータの前のデータを書込み対象ブロックにコピーする(S87)。ホスト102の指定するセクタアドレスを「ランダム書込み」の書込み単位でグループ化したときの先頭のアドレスから、ホスト102の指定するセクタアドレスの直前までのデータを、転送先物理ブロックへコピーする。
この際、書込み状況に応じて「転送先次書込み物理アドレス」フィールドを更新する。
その後、有効オフセットを設定する(S88)。「転送先次書込み物理アドレス」が「転送先書込みモード」で割り切れる時には、「転送先有効オフセット物理アドレス」に「転送先次書込み物理アドレス」を書込む。
ホスト102から転送されたデータをページ単位で書込む(S89)。この際、書込み状況に応じて「転送先次書込み物理アドレス」フィールドを更新する。
ホスト102からの書込みデータの転送が終了したか否かを判定する(S90)。ホスト102からのデータ転送が終了している場合、書込み周期分の残りのデータを書込み対象ブロックにコピーする(S91)。ホスト102からのデータ転送が継続している場合、次に書込む領域が同じ論理グループか否かを判断し(S92)、同じ論理グループであれば、データの書込みを継続する。異なる論理グループであれば処理を終了する。
2.1.4 新規書込み
ステップS12において、重複テーブル107に登録がない場合、重複テーブル107での登録位置を決定した後(S23)、物理ブロックへの新規書込みを行う(S24)。これらの処理の詳細を説明する。
図16を参照し、ステップS23の重複テーブルの登録位置の決定処理の詳細を説明する。重複テーブル107の中で最も以前に使用された重複情報を求める(S121)。この処理は重複テーブル107において、これから書込むデータ用の空きレコードを確保するための候補を決定するもので、重複情報0〜7のうちひとつを選択できればよい。ここではLRU(Least Recently Used)に従った決定方法を使用している。
その求めた重複情報が有効か否かを判断する(S122)。有効であれば、集約処理を行う(S123)。求めた重複情報の「論理ブロックアドレス」の値が0xFFFF以外であれば有効と判定し、0xFFFFであれば無効と判定する。なお、0xFFFFは、重複情報が初期化されたときに「論理ブロックアドレス」に設定される値である。
図17を参照し、ステップS24の新規書込み処理の詳細を説明する。まず、重複テーブル107への登録を行う(S41)。このとき、重複情報107bの各フィールドの初期化を行う。「論理ブロックアドレス」にはホストの指定する論理ブロックアドレスを登録する。「転送元物理ブロックアドレス」には、ホスト102の指定する論理ブロックアドレスに対応するデータが書きこまれている物理ブロックアドレス、即ち、論物変換テーブルからホスト102の指定する論理ブロックアドレスを基に得られるアドレスを登録する。「転送先物理ブロックアドレス」には、消去済みの物理ブロックアドレスを消去済みテーブルから検索して登録する。この際、消去済みテーブルの該当ビットは書込み済みを示す状態に書き換える。「転送先先頭ページアドレス」には、ホスト102の指定する論理セクタアドレスを登録する。
ホスト102から転送されたデータをページ単位で書込む(S42)。状況に応じて「転送先次書込み論理アドレス」と「転送先次書込み物理アドレス」を更新する。
ホスト102からの書込みデータの転送が終了したか否かを判定する(S43)。ホスト102からのデータ転送が終了している場合、処理を終了する。ホスト102からのデータ転送が継続している場合、次に書込む領域が同じ論理グループか否かを判断し(S44)、同じ論理グループであれば、データの書込みを継続する(S42)。異なる論理グループであれば処理を終了する。
2.1.5 集約処理
集約処理について説明する。集約処理とは、転送元ブロックのデータと転送先ブロックのデータの重複関係を解消するための処理である。
図18は、連続モードの場合の集約処理を説明するための図である。図18(a)に示すように転送元物理ブロック99と転送先物理ブロック100がある場合、これらのブロックが図18(b)に示すように転送先物理ブロック100に集約され、転送元物理ブロック99のデータは消去される。このとき、転送先物理ブロック100においては、元々記録されていた論理ブロック10に続いて転送元物理ブロック99から論理ブロック10に連続する論理ブロック11〜15がコピーされ、論理ブロック15の後に論理ブロック8、9がコピーされる。
また、図19は、上書きモード、ランダムモードの場合の集約処理を説明するための図である。この例では、転送元物理ブロック99と転送先物理ブロック100から、消去済みの物理ブロック101に対して、それぞれ論理ブロックのデータをコピーし、その後、転送元物理ブロック99と転送先物理ブロック100のデータを消去する。
以上のように、集約処理により、複数の論理ブロックに亘り書込まれていたデータを1つの論理ブロックにまとめることができる。
図20、図21のフローチャートを参照し、図9のステップS18の集約処理について説明する。重複情報107bの「転送先書込みモード」の値から書込みモードを判定する(S101)。書込みモードが上書きモード、ランダムモードであれば、図21の処理を行う。
書込みモードが連続モードであれば、転送元ブロックから転送先ブロックへデータの一部をコピーする(S102)。具体的には、「転送先次書込み論理アドレス」の値を含むページのデータを、転送元物理ブロッから転送先物理ブロックへコピーする。この際、書込み状況に応じて「転送先次書込み論理アドレス」と「転送先次書込み物理アドレス」を更新する。
転送先物理ブロックにおいて最終ページまで書込まれたか否かを判断する(S103)。最終ページまで書込みがなされた場合は、転送元物理ブロックのデータを消去する(S106)。「転送元物理ブロックアドレス」で示されるフラッシュメモリの物理ブロックのデータを消去する。この際、消去済みテーブル105の該当ビットは消去済みを示す状態に書き換える。
その後、各種のテーブルを更新する(S107)。すなわち、集約された物理ブロック(転送先物理ブロック)について論理アドレスと物理アドレスの対応を論物変換テーブル106に登録する。具体的には、論物変換テーブル106の「論理ブロックアドレス」の値を、「転送先物理ブロックアドレス」の値に書き換える。また、重複情報107bの各フィールドの無効化を行う。具体的には、「論理ブロックアドレス」には0xFFFF(無効を意味する値)を登録する。「転送元物理ブロックアドレス」、「転送先物理ブロックアドレス」、「転送先先頭ページ論理アドレス」、「転送先次書込み論理アドレス」、「転送先次書込み物理アドレス」、「転送先書込みモード」、及び「転送先有効オフセット物理アドレス」の各々に0x0000を登録する。
一方、最終ページまで書込みがなされてない場合は、論理ページのオーバーフローを判断する(S104)。具体的には「転送先次書込み論理アドレス」の値が0x0100のときに、論理ページがオーバーフローと判定し、0x0100未満のときは、オーバーフローでないと判定する。
論理ページがオーバーフローのときは、論理ページ番号を0にする(S105)。具体的には、「転送先次書込み論理アドレス」の値に0x0000を設定する。
ステップ101において、書込みモードが上書きモード、ランダムモードの場合の処理を図21を参照して説明する。
消去済みテーブル105を参照して消去済みブロックを取得し、また、論理ページ番号を0にする(S111)。論理ページ番号を0にするために、「転送先次書込み物理アドレス」を0x0000に設定する。この段階で同じ重複レコードの他のフィールドの″転送先″とは異なる物理ブロックを指し示す状態となる。また、内部的な変数として「集約論理アドレス」を持ち、その値を0x0000に設定する。
重複情報に基づいて、集約するデータの読み出し先を判定する(S112)。転送元物理ブロックからデータを読み出す場合、転送元物理ブロックから消去済みブロックへデータをコピーする(S113)。すなわち、「転送元物理ブロック」から、消去済みの物理ブロックに、「集約論理アドレス」のデータをコピーする。この際、書込み状況に応じて「転送先次書込み物理アドレス」を更新する。
転送先物理ブロックからデータを読み出す場合、転送先物理ブロックから消去済みブロックへデータをコピーする(S115)。すなわち、「転送先物理ブロック」から、消去済みの物理ブロックに、「集約論理アドレス」のデータをコピーする。この際、書込み状況に応じて「転送先次書込み物理アドレス」を更新する。
転送先物理ブロックにおいて最終ページまで書込まれたか否かを判断する(S114)。最終ページまで書込みがなされた場合は、転送元物理ブロックと転送先物理ブロックのデータを消去する(S117)。
その後、各種のテーブルを更新する(S118)。すなわち、論物変換テーブル106の「論理ブロックアドレス」の値を、このフローで取得した消去済みブロックのアドレスに書き換える。また、重複情報107bの各フィールドの無効化を行う。
一方、最終ページまで書込みがなされてない場合は、論理ページをインクリメントし(S116)、次の論理ページ(集約論理アドレス)のデータをコピーする。
2.1.6 FAT書込み
図9のフローチャートのステップS11の書込み領域判定において、書込み領域がFAT領域であると判定された場合の処理を以下に説明する。基本的な処理のフローはランダム書込みと全く同じであるが、書込み単位が論理グループによって固定された値であることと、FAT領域の論理グループがデータ領域の論理グループよりも小さな容量で構成されるために、論理グループ単位で書込みを行った物理ブロックに対して更にランダムで書きこみを行う事ができるのが特徴である。その説明の前に本メモリカード101によるFAT領域に対する管理方法について説明する。
図22は、FAT情報に対する論理グループの割当てについて説明した図である。同図においては、論理セクタアドレス0〜97(0x000〜0x0061)の領域には、未使用領域を含め、マスターブートレコードとパーティションブートレコードの情報が格納される。論理セクタアドレス98〜128(0x0062〜0x0080)の領域には、FAT1の情報が格納される。論理セクタアドレス129〜159(0x0081〜0x009F)の領域には、FAT2の情報が格納される。論理セクタアドレス160〜255(0x00A0〜0x00FF)の領域には、ルートディレクトリの情報が格納される。
本実施形態のメモリカード101のコントローラ103は、マスタブートレコードとパーティションブートレコードを格納する連続した領域(セクタ0〜セクタ97の領域)を、論理グループ0−0に割り当てる。同様に、FAT1の情報を格納するセクタ98〜セクタ128の領域を論理グループ0−1に、FAT2の情報を格納するセクタ129〜セクタ159の領域を論理グループ0−2にそれぞれ割り当てる。ルートディレクトリの情報を格納する領域を含むセクタ160〜セクタ255の領域を論理グループ0−3として割り当てる。そして、各論理グループ0−0〜0−3に対応してフラッシュメモリ103の物理ブロックを1つずつ割り当てる。
マスタブートレコード、パーティションブートレコード、FAT1、FAT2、及びルートディレクトリの情報のサイズは合計しても256セクタに満たないため、1つの物理ブロックがあれば、これらの全ての情報を格納できる。しかし、本実施形態では、FAT情報の種類に応じて論理グループ0−0〜0−3をそれぞれ割りあて、各論理グループ0−0〜0−3に物理ブロックを対応させる。また、各論理グループ0−0〜0−3に対してFAT重複情報0〜3をそれぞれ対応させる。FAT重複情報0〜3は、論理グループ0−0〜0−3に対応する物理ブロックのアドレスを「転送先物理ブロックアドレス」に格納する。
図23Aは、本実施形態におけるカード容量が128MBの場合のFAT情報に関する種々の管理条件を示した図である。図23Aに示す情報はコントローラ103が適宜参照できるようメモリカード101内のFAT領域変換テーブル108に保持されている。
カード容量が128MBの場合、一般的に、図22に示したように各FAT情報の論理セクタアドレスが割り当てられる。同図を参照すると、論理セクタアドレス0〜97(0x000〜0x0061)の領域は、論理グループ0−0に対応する。論理グループ0−0の固定オフセットは0である。論理グループ0−0の重複情報はFAT重複情報0に格納される。集約条件は0x00E0である。なお、集約条件は、物理ブロックサイズ(0x0100)から、その論理グループの書込み単位の大きさ(例えば、0x0020)を減算して得られる値である。また、書込み単位の大きさは32セクタであり、よって、論理グループ0−0では、1つの物理ブロックにおいて、セクタ0〜セクタ31、セクタ32〜セクタ63、セクタ64〜セクタ95、セクタ96及び97の4つの書込み単位が含まれる。書込み単位の大きさは、論理グループにより異なっている。
図23Bは、FAT領域変換テーブル108の構成を示す図である。FAT領域変換テーブル108は、メモリカード(フラッシュメモリ103)の容量に応じた、各論理グループ0−0〜0−3に割り当てる論理アドレスの情報を格納する。同図に示すように、メモリカード101の容量に応じて各論理グループ0−0〜0−3に割り当てる領域の大きさを異ならせている。コントローラ103はメモリカード101の初期化時にFAT領域変換テーブル108を参照してカード容量に基づいて、FAT領域の論理アドレスに対して論理グループの割り当てを行う。
図24A(a)は、FAT領域に関する論理グループに対応して割り当てられる物理ブロックの領域構成を示した図である。なお、図24A(a)は、FAT2に関連する論理グループ0−2の例を示している。物理ブロックは、部分ブロック書込み領域と、固定ランダム書込み領域とを含む。物理ブロック先頭のページ0〜ページ7の領域が部分ブロック書込み領域であり、この領域にFAT2に関する情報(31セクタ分の情報)が最初に書込まれる。それに続くページ8〜ページ63の領域がランダム書込み領域であり、この領域には、重複書込みされるデータが格納される。ランダム書込み領域における書込み単位は図23Aに示す書込み単位(論理グループ0−2の場合は4セクタ)であり、この値は部分ブロック書込み領域における書込み単位よりも小さい値となる。
データ領域への書込みの場合、重複書込みする場合は、元のデータが格納された物理ブロックとは別の物理ブロックにデータを書込んでいた。これに対して、FAT領域における重複書込みの場合、元のデータが格納された物理ブロックと同じ物理ブロックにデータを書込む。すなわち、最初に部分ブロック書込み領域にデータが書込まれ、以後、既に書込み済みのデータの論理アドレスと同じ論理アドレスに対して別のデータを重複書込みする必要が生じた場合、その別のデータを同じ物理ブロック内の固定ランダム書込み領域に書込む。ランダム書込み領域の空きが無くなると、その物理ブロックは集約される。このように、FAT情報の種類毎に物理ブロックを割り当て、さらに、物理ブロックにおいて重複書き込みを行うことで、比較的不規則なアクセス頻度が高いFAT領域での集約回数を低減でき、書き込み効率を向上できる。
なお、図24A(b)に示すように、さらに別の物理ブロックBにランダム書込み領域を設けて、ランダム書込み領域として使用する領域を拡張してもよい。その際には複数のランダム書込み領域を管理するために図6(a)で示したFAT領域の重複情報で管理すべき項目が増えス必要がある。図24A(b)の場合は、図24A(a)の場合よりも集約処理される回数が低減されるため、書込み効率をより向上できる。
図9のフローチャートのステップS11の書込み領域判定において、書込み領域がFAT領域であると判定された場合の処理を図10を参照して説明する。
最初に、重複テーブル107において、ホスト102が指定する論理アドレスに対応するFAT重複情報の登録があるか否かを判定する(S31)。具体的には、ホスト102が指定する論理アドレスに対応するFAT重複情報の「転送先物理ブロックアドレス」が0x0000であれば、登録ありと判定し、0x0000以外であれば、登録なしと判定する。
FAT重複情報の登録がない場合、消去済みブロックを取得(S35)後、その消去済みブロックにFAT情報を書込む(S33)。
FAT重複情報の登録がある場合、FAT重複情報が指定する物理ブロックにおいて未書込みページの有無を判断する(S32)。ホスト102が指定する論理アドレスに対応するFAT重複情報の「転送先アロケーション物理ページ」が、集約条件(図23A参照)と同じであれば未書込みページ無しと判定し、同じでなければ、未書込みページありと判定する。
未書込みページがあれば、その未書込みページにFAT情報を書込むFAT書込み処理を行う(S33)。未書込みページがなければ、集約処理を行った(S34)後、消去済みブロックを取得し(S35)、その消去済みブロックにFAT情報を書込むFAT書込み処理を行う(S33)。
図24Bを参照し、上記ステップS33のFAT書込み処理を説明する。ホスト102から受けた論理アドレスに対応する書込み単位配置テーブルを取得する(S131)。具体的には、ホスト102から指定された論理セクタアドレスに基づき、図23Aに示す情報にしたがい、その論理アドレスに該当する論理グループを決定し、その論理グループに対応するFAT重複情報を特定し、読み出す。例えば、ホスト102からの論理セクタアドレスが0x0020であれば、論理グループ0−0のFAT重複情報0を取得する。その取得したFAT重複情報の「転送先物理ブロックアドレス」と「転送先アロケーション物理ページ」で指定されるフラッシュメモリの管理領域から、最新の書込み単位配置テーブル150を読み出す。
次に、書込み先を設定する(S132)。対応するFAT重複情報の「転送先物理ブロックアドレス」を書込み先の物理ブロックアドレスとし、「転送先アロケーション物理ページ」に、該当する論理グループの「書込み単位のサイズ」を加算したものを書込み先の物理セクタアドレスとする。
有効オフセットを設定する(S133)。対応するFAT重複情報の「転送先アロケーション物理ページ」に、書込み先の物理ページを書込む。
直ぐにデータを書込みできるか否かを判断する(S134)。この判断は次のように行う。ホスト102が指定する論理セクタアドレスを、該当する論理グループの「固定オフセット」で割った剰余が1ページ未満(0x0003未満)であれば、直ぐに書込み可と判定する。それ以外は直ぐに書込み不可と判定する。
直ぐに書込みができなければ、ホスト102により指定されたアドレスの直前までのデータを、書込み対象ブロックにコピーする(S135)。すなわち、論物変換テーブル106から得られる物理ブロックから、書込み先の物理ブロックへ、該当する論理グループの「固定オフセット」からホストの指定するセクタアドレスの直前までのデータをコピーする。この際、書込み状況に応じて書込み先の物理セクタをインクリメントする。フラッシュメモリ103の管理領域には、書込み単位配置テーブル150を更新して書込む。
その後、有効オフセットの設定を行う(S136)。書込み先の物理セクタが、対応する論理グループの「書込み単位のサイズ」で割り切れるときには、FAT重複情報の「転送先アロケーション物理ページ」に書込み先の物理ページを書込む。
次に、ホスト102が転送してくるデータを前のステップで設定した書込み先からページ単位で順次書込む(S137)。この際、書込み状況に応じて書込み先の物理セクタアドレスをインクリメントする。フラッシュメモリ103の管理領域には、書込み単位配置テーブル150を更新して書込む。
ホスト102からの書込みデータの転送が継続しているか否か判断する(S138)。データ転送が終了すれば、論理グループのデータを書込み対象ブロックにコピーする(S139)。具体的には、論物変換テーブル106から得られる物理ブロックから書込み先の物理ブロックへ、対応する論理グループ内に含まれるデータのうち、未だ書込まれていない部分を全てコピーする。この際、書込み状況に応じて書込み先の物理セクタアドレスをインクリメントする。フラッシュメモリ103の管理領域には、書込み単位配置テーブル150を更新して書込む。
データ転送が継続中であれば、次の書込みデータが前回と同じ論理グループか否かを判断し(S140)、同じであれば、次のデータを書込む。異なっていれば、本処理を終了する。
2.1.7 書込み動作の具体例
(例1)連続書込みモードの例
図25から図31を参照し、新規書込みから連続書込みモード時の例について説明する。図25において、ホスト102から、論理ブロック0x0010、論理セクタ0x0020〜0x003Fの領域へ新規にデータの書込みが要求されると、重複情報に登録がない(S12)ケースにおいて新規書込み(S24)が行われ、消去済みブロックである物理ブロック100にデータが書込まれる。
上記の状況下において重複テーブル107の重複情報107bは次のように設定される。「論理ブロックアドレス」には、ホスト102から指定された論理アドレス0x0010が設定される。「転送先物理ブロックアドレス」には、論物変換テーブルにおいて論理ブロックアドレス0x0010に対応する値である0x0000が設定される。「転送先物理ブロックアドレス」には、データが書込まれる予定の物理ブロック100のブロックアドレスを示す0x0100が設定される。「転送先先頭ページ論理アドレス」には、ホスト102から指定された先頭の論理セクタの値0x0020が設定される。「転送先書込みモード」には「連続」を示す0x0000が設定される。重複情報107bの他のフィールドには初期値が設定される。
その後、ホスト102の要求にしたがい論理セクタ0x0020〜0x003F分のデータが物理ブロック100の先頭から書込まれる。そのときの状態が図26に示す状態である。図26において、重複情報107bの「転送先次書込み論理アドレス」には、0x0040が格納され、「転送先次書込み物理アドレス」には、0x0020が格納される。
続けて、ホスト102から論理ブロック0x0010、論理セクタ0x0040〜0x007Fの領域へのデータの書込み要求に対して連続書込みが行われる(S22)。物理ブロック100において記録済みの領域と物理的に連続する領域に、論理的に連続するデータが書込まれる。そのときの状態が図27に示す状態である。図27において、重複情報107bの「転送先次書込み論理アドレス」の値は0x0080に更新され、「転送先次書込み物理アドレス」は0x0060に更新されている。
図27に示す状態において、ホスト102から不連続な論理アドレスへの書込み要求があると、すなわち、論理セクタアドレス0x00E0〜0x00FFの領域への書込み要求があると、図28に示すように、まず論理セクタアドレス0x0080〜0x00DFにおいて重複情報107bの「転送元物理ブロック」からデータを読み出して「転送先物理ブロック」へとコピーする必要がある。しかし、ここでは、重複情報107bの「転送元物理ブロック」には、無効値を表す0x0000が格納されており、これは、転送元物理ブロックがないことを意味する。よって、ここでは、論理セクタアドレス0x0080〜0x00DFには、所定データ(例えば「FF」)を書込む。その後に続いて、図29に示すように、ホスト102から要求のあった論理セクタアドレス0x00E0〜0x00FFのデータを書込む。このように、本実施形態では、データが書込まれた領域が不連続とならないよう、空き領域にデータを補充した後に指定された領域にデータを書込む処理を行う。なお、上記において、所定データを書込むのは、物理ブロック100に新規にデータが書込まれているためである(注:物理ブロック100の重複情報107bの転送元物理ブロックアドレスには0x0000が格納されており、これは物理ブロック100に新規にデータが書込まれていることを意味する。)。転送元の物理ブロックからの重複書込みの場合は、転送元の物理ブロックの対応する論理アドレスのデータがコピーされる。
図29の状態で、集約処理がなされる場合、物理ブロック100の残りの領域に、論理アドレスが連続となるようデータが書込まれる。すなわち、図30に示すように、論理セクタアドレス0x00E0〜0x001Fのデータとして重複情報107bの「転送元物理ブロック」のデータを書込む、ここでは「転送元物理ブロック」が無効値なので所定データが書込まれる。そして、論物変換テーブル106の論理ブロック0x0010に対応する値が物理ブロック100のブロックアドレスを示す0x0100に更新され、重複情報107bが初期化される。
上記の例では、書込み周期が32セクタの場合の書込み動作の例を示したが、図31に示すようにセクタ単位での書込み動作の場合も同様である。
(例2)上書き書込みモードの例
図32から図34を参照し、新規書込みから上書き書込みモードの場合の例について説明する。図32において、ホスト102から、論理ブロック0x0010、論理セクタ0x00E0〜0x00FFの領域へ新規にデータの書込みが要求されると、消去済みブロックである物理ブロック100にデータが書込まれる。
上記の状況下において重複テーブル107の重複情報107bは次のように設定される。「論理ブロックアドレス」には、ホスト102から指定された論理アドレス0x0010が設定される。「転送先物理ブロックアドレス」には、論物変換テーブルにおいて論理ブロックアドレス0x0010に対応する値である0x0000が設定される。「転送先物理ブロックアドレス」には、データが書込まれる予定の物理ブロック100のブロックアドレスを示す0x0100が設定される。「転送先先頭ページ論理アドレス」には、ホスト102から指定された先頭の論理セクタの値0x00E0が設定される。「転送先次書込み論理アドレス」には、0x0100が格納される。「転送先次書込み物理アドレス」には、0x0020が格納される。「転送先書込みモード」には「連続」を示す0x0000が設定される。重複情報107bの他のフィールドには初期値が設定される。
さらに、図33に示すように、ホスト102から、前回と同じ論理アドレスにデータの書込み要求があると、物理ブロック100において前回書込まれた領域(ページ0〜ページ7)に続く領域に新たにデータが書込まれる。このとき、重複情報107bの「転送先次書込み論理アドレス」には0x0040に、「転送先有効オフセット物理アドレス」には、0x0020に更新される。また、「転送先書込みモード」には、上書きを意味する0xFFFFが設定される。
さらに、図34に示すように、ホスト102から、前回と同じ論理アドレスにデータの書込み要求があると、物理ブロック100において前回書込まれた領域(ページ8〜ページF)に続く領域に新たにデータが書込まれる。このとき、重複情報107bの「転送先次書込み論理アドレス」には0x0060に、「転送先有効オフセット物理アドレス」には、0x0040に更新される。
(例3)上書きされたブロックの集約
図35、図36を参照し、上書き書込みされたブロックの集約処理の例について説明する。図35に示すように物理ブロック100において最後に上書き書込みがなされたデータが、消去済み物理ブロック101にコピーされる。物理ブロック101において、残りの領域(ページ8〜3F)には、重複情報107bの「転送元物理ブロック」から読み出したデータを書込む必要があるが、ここでは重複情報107bの「転送元物理ブロック」は無効値を表す0x0000が格納されているので所定データ(FF)が書込まれる。
その後、図36に示すように物理ブロック100が消去される。これに伴い、物理ブロック100に関する重複情報は初期化されるとともに、論物変換テーブル106に物理ブロック101が登録される。
(例4)ランダム書込みモードの例
図37を参照し、ランダム書込みモードの例について説明する。図37は、物理ブロック100においてページ0〜ページ17の領域において上書きモードで論理セクタアドレスE0〜FFのデータが順次書込まれた後に(図34の状態に相当する)、ページ18〜ページ1Fの領域において論理セクタアドレス00〜1Fのデータがランダムモードで書込まれた例を示す。
重複情報107bの「転送先次書込み物理アドレス」には、消去済み領域の先頭物理アドレスである0x0080が設定される。「転送先有効オフセット物理アドレス」には、ランダムモードで書込まれたデータのオフセット値である0x0060が設定される。「転送先書込みモード」には、ランダム書込み周期である0x0020が設定される。
書込み単位配置テーブル150の「書込み単位」にはランダム書込み周期である0x0020が設定される。「書込み単位0先頭アドレス」には、論理アドレス00〜1Fのデータが格納される領域の先頭物理アドレスが格納される。ここでは、ページ18〜ページ1Fに書込まれたデータの先頭アドレスである0x0060が設定される。「書込み単位7先頭アドレス」には、論理アドレスE0〜FFのデータが格納される領域の先頭物理アドレスが格納される。ここでは、ページ10〜ページ17に書込まれたデータの先頭アドレスである0x0040が設定される。「書込み単位1先頭アドレス」等の0xFFFFは、データが転送元のブロックに格納されていることを示す。
2.2 読み出し動作
フラッシュメモリ103からの読み出し動作について図38を参照して説明する。
最初に、ホスト102から指定された、読み出し論理アドレスを取得する(S201)。なお、ホスト102の指定する論理ブロックアドレスを「読出し論理ブロックアドレス」とし、論理セクタアドレスを「読出し論理セクタアドレス」とする。
ホストの指定する論理アドレスがFAT領域かデータ領域かを判断し、読み出し領域を判定する(S202)。
読み出し領域がデータ領域の場合、FAT領域の場合、図43に示す処理を行う(詳細は後述)。読み出し領域がデータ領域の場合、内部変数として重複インデックス(X)に0x0000を設定する(S203)。
重複テーブル107のX番目の重複情報(重複情報X)の論理ブロックアドレスを取得(S204)。
重複テーブル107から取得した論理ブロックアドレスと、ホストが指定する論理ブロックアドレスとを比較する(S205)。
両論理アドレスが異なっていれば、重複インデックス(X)をインクリメントし(S206)、次の重複情報について論理ブロックアドレスを比較する。ここで、重複情報は8個しかないので、重複インデックス(X)の値が8以上になったときは、オーバーフローとし(S207)、通常読み出し処理を行う(S208)。
両論理アドレスが一致していれば、重複情報Xの「転送先書込みモード」の値を取得し(S211)、書込みモードを判定し(S212)、書込みモードに応じた読み出し処理(S213、S214、S215)を行う。
各読み出し処理(S208、S213、S214、S215)の終了後、読み出し論理ブロックアドレスをブロック単位でインクリメントし、読み出し論理セクタアドレスを0x0000に設定する(S209)。
以上の処理を、ホスト102から、読み出しの終了を示すコマンドを受信するまで繰り返す(S210)。以下、各読み出し処理の詳細を説明する。
2.2.1 通常読み出し
図39のフローチャートを参照し、、通常読み出し処理(S208)を説明する。論物変換テーブル106から、読み出し論理ブロックアドレスに対応する物理ブロックアドレスを取得する(S221)。
取得した物理ブロックアドレスで指定される物理ブロックのオフセット情報をフラッシュメモリ103から読み出す(S222)。具体的には、取得した物理ブロックアドレスで指定されるブロックの先頭物理ページの管理領域に書かれている論理セクタアドレスをフラッシュメモリから読み出し、その物理ブロックのオフセット値の情報を得る。
読み出し論理セクタからオフセット値を減算することで、読み出し論理セクタアドレスに対応する、読み出し物理セクタアドレスを得る(S223)。読み出し物理セクタアドレスのデータをページ単位で読み出す(S224)。
読み出し論理セクタアドレスをページ単位でインクリメントする(S225)。ホスト102からの読み出しが終了したか否かを判断し(S226)、読み出しが終了したときは、読み出し処理全体を終了する。ホスト102からの読み出しが継続しているときは、読み出し論理セクタアドレスのオーバーフローを判断する(S227)。オーバーフローしてなければ、ステップS223に戻り、次のデータを読み出し、オーバーフローしていれば、本通常読み出し処理を終了する。
2.2.2 連続読み出し
図40のフローチャートを参照し、連続読み出し処理(S213)を説明する。重複テーブル107における対応の重複情報を取得する(S231)。すなわち、重複情報から、「転送元物理ブロックアドレス」、「転送先物理ブロックアドレス」、「転送先先頭ページ論理アドレス」、「転送先次書込み論理アドレス」の情報を得る。
転送元物理ブロックのオフセット値の情報をフラッシュメモリ103から取得する(S232)。データの読み出し先が転送元物理ブロックか転送先物理ブロックかを判定する(S233)。具体的には、読み出し論理セクタアドレスが、「転送先先頭ページ論理アドレス」を含むページの先頭アドレスよりも小さいとき、又は「転送先次書込み論理アドレス」よりも大きいときに、転送元からの読出しと判定する。それ以外は、転送先からの読出しと判定する。
転送元からの読み出しの場合、転送元物理ブロックの読み出し物理セクタを得る(S234)。読み出し論理セクタアドレスから、転送元物理ブロックのオフセット値を減算することで、「読出し論理セクタアドレス」に対応するデータが書込まれている物理セクタを得ることができる。
取得した転送元物理ブロックの読み出し物理セクタのデータをページ単位で読み出す(S235)。
ステップS233において、転送先からの読み出しの場合、転送先物理ブロックの読み出し物理セクタを得る(S239)。読み出し論理セクタアドレスから、転送先先頭ページ論理アドレスを減算することで、「読出し論理セクタアドレス」に対応するデータが書込まれている物理セクタを得ることができる。
取得した転送先物理ブロックの読み出し物理セクタのデータをページ単位で読み出す(S240)。
ホスト102から読み出しが継続しているか否かを判断し(S236)、終了していれば、読み出し処理全体を終了する。ホスト102からの読み出しが継続していれば、読み出し論理セクタアドレスをページ単位でインクリメントし(S237)、読み出し論理セクタアドレスのオーバーフローを判断する(S238)。オーバーフローしてなければ、ステップS233に戻り、次のデータを読み出し、オーバーフローしていれば、本連続読み出し処理を終了する。
2.2.3 上書読み出し
図41のフローチャートを参照し、上書き読み出し処理(S214)を説明する。重複テーブル107における対応の重複情報を取得する(S251)。すなわち、重複情報から、「転送元物理ブロックアドレス」、「転送先物理ブロックアドレス」、「転送先先頭ページ論理アドレス」、「転送先次書込み論理アドレス」、「転送先有効オフセット物理アドレス」の情報を得る。
転送元物理ブロックのオフセット値の情報をフラッシュメモリ103から取得する(S252)。データの読み出し先が転送元物理ブロックか転送先物理ブロックかを判定する(S253)。具体的には、読み出し論理セクタアドレスが「転送先先頭ページ論理アドレス」を含むページの先頭アドレスよりも小さいとき、又は「転送先次書込み論理アドレス」よりも大きいときに、転送元からの読出しと判定する。それ以外は、転送先からの読出しと判定する。
転送元からの読み出しの場合、転送元物理ブロックの読み出し物理セクタを得る(S254)。
取得した転送元物理ブロックの読み出し物理セクタのデータをページ単位で読み出す(S255)。
ステップS253において、転送先からの読み出しの場合、転送先物理ブロックの読み出し物理セクタを得る(S259)。読み出し論理セクタアドレスから、転送先先頭ページ論理アドレスを減算し、さらに、その値に「転送先有効オフセット物理アドレス」を加算することで、読出し論理セクタアドレスに対応するデータが書込まれている物理セクタを得ることができる。
取得した転送先物理ブロックの読み出し物理セクタのデータをページ単位で読み出す(S260)。
その後、ホスト102から読み出しが継続しているか否かを判断し(S256)、終了していれば、読み出し処理全体を終了する。ホスト102からの読み出しが継続していれば、読み出し論理セクタアドレスをページ単位でインクリメントし(S257)、読み出し論理セクタアドレスのオーバーフローを判断する(S258)。オーバーフローしてなければ、ステップS253に戻り、次のデータを読み出し、オーバーフローしていれば、本上書き読み出し処理を終了する。
2.2.4 ランダム読み出し
図42のフローチャートを参照し、ランダム読み出し処理(S215)を説明する。重複テーブル107において対応の重複情報を取得する(S271)。すなわち、重複情報から、「転送元物理ブロックアドレス」、「転送先物理ブロックアドレス」、「転送先先頭ページ論理アドレス」、「転送先次書込み論理アドレス」、「転送先書込みモード」、「転送先有効オフセット物理アドレス」の情報を得る。
転送元物理ブロックのオフセット値の情報をフラッシュメモリ103から取得する(S272)。
「転送先物理ブロックアドレス」と「転送先有効オフセット物理アドレス」で指定されるフラッシュメモリ103の管理領域から、書込み単位配置テーブル150の情報を得る(273)。
データの読み出し先が転送元物理ブロックか転送先物理ブロックかを判定する(S274)。この判定は以下のように行う。まず、複数の書込み単位の中から、読み出し論理セクタアドレスを含む1つの書込み単位を決定する。次に、書込み単位配置テーブル150を参照し、求めた書込み単位のデータが格納される領域の先頭物理アドレスを取得する。例えば、書込み単位の値が0x0010h(16セクタ(=4ページ))であれば、1物理ブロック内に16個の書込み単位(書込み単位0〜F)が含まれる。読み出し論理セクタアドレスが0x001Bであれば、読み出し論理セクタアドレスを含む書込み単位は、2番目の書込み単位(書込み単位1)となる。その後、書込み単位配置テーブル150を参照し、書込み単位1の先頭アドレスを取得する。取得した先頭物理アドレスが無効値であれば転送元からの読み出しと判定する。有効値であれば転送先からの読み出しと判定する。
転送元からの読み出しの場合、転送元物理ブロックの読み出し物理セクタを得る(S275)。取得した転送元物理ブロックの読み出し物理セクタのデータをページ単位で読み出す(S276)。
ステップS274において、転送先からの読み出しの場合、転送先物理ブロックの読み出し物理セクタを得る(S280)。読み出し論理セクタアドレスを「転送先書込みモード」の値で除した剰余に、書込み単位配置テーブル150から求めた先頭物理アドレスを加算することで、読出し論理セクタアドレスに対応する、読み出し物理セクタを得ることができる。取得した転送先物理ブロックの読み出し物理セクタのデータをページ単位で読み出す(S281)。
その後、ホスト102から読み出しが継続しているか否かを判断し(S277)、終了していれば、読み出し処理全体を終了する。ホスト102からの読み出しが継続していれば、読み出し論理セクタアドレスをページ単位でインクリメントし(S278)、読み出し論理セクタアドレスのオーバーフローを判断する(S279)。オーバーフローしてなければ、ステップS274に戻り、次のデータを読み出し、オーバーフローしていれば、本ランダム読み出し処理を終了する。
2.2.5 FAT読み出し
図38のフローチャートのステップS202の読み出し領域判定においてFAT領域からの読み出しであると判断されたときに実行される、図43に示す処理について説明する。
図43において、論理ブロックアドレスに対応するFAT重複情報が有効か否かを判断する(S291)。具体的には以下のように行う。読出し論理セクタアドレスの値から、以下のようにして対応する重複テーブル107のFAT重複情報を求める。
Figure 2005106673
その「転送先物理ブロックアドレス」を取得し、その値の有効/無効を判定する。その値が0x0000(無効値)の時には無効と判定し、0x0000以外の時には有効と判定する。
FAT重複情報が無効であるとき、FAT通常読み出し処理を行い(S292)、FAT重複情報が有効であるとき、FAT重複読み出し処理を行う(S293)。
その後、読み出し論理ブロックアドレスをブロック単位でインクリメントするとともに、読み出し論理セクタアドレスに0x0000を設定する(S94)。
ホスト102からの読み出しが終了したか否かを判定し(S295)、終了していれば、読み出し処理全体を終了する。ホスト102からの読み出しが継続していれば、ステップS202に戻り、次の読み出しを行う。
2.2.5.1 FAT通常読み出し
図44のフローチャートを参照し、上記ステップS292のFAT通常読み出し処理を説明する。
論物変換テーブル106から、読み出し論理ブロックアドレスに対応する物理ブロックアドレスを取得する(S301)。
読み出し論理セクタアドレスから固定オフセット値(図23A参照)を減算することで、部分ブロック書込み領域の読み出し物理セクタアドレスを得る(S302)。読み出し物理セクタアドレスのデータをページ単位で読み出す(S303)。
ホスト102からの読み出しが終了したか否かを判断し(S304)、読み出しが終了したときは、読み出し処理全体を終了する。
ホスト102からの読み出しが継続しているときは、読み出し論理セクタアドレスをページ単位でインクリメントする(S305)。
読み出し論理セクタアドレスのオーバーフローを判断する(S306)。オーバーフローしてなければ、ステップS302に戻り、次のデータを読み出す。オーバーフローしていれば、本FAT通常読み出し処理を終了する。
2.2.5.2 FAT重複読み出し
図45のフローチャートを参照し、上記ステップS293のFAT重複読み出し処理を説明する。
重複テーブル107において対応の重複情報を取得する(S311)。すなわち、重複情報から、「転送先物理ブロックアドレス」、「転送先アロケーション物理ページ」の情報を得る。
「転送先物理ブロックアドレス」と「転送先アロケーション物理ページ」で指定されるフラッシュメモリ103の管理領域から、書込み単位配置テーブル150の情報を得る(312)。
データの読み出し先が転送元物理ブロックか転送先物理ブロックかを判定する(S313)。すなわち、読み出し論理セクタアドレスから固定オフセット(図23A参照)を減算し、その減算した値をFAT領域に固有の書込み単位で除す。その商に基づき、書込み単位配置テーブル150を参照し、読み出し論理セクタアドレスに対応する書込み単位の先頭物理アドレスを取得する。その先頭物理アドレスの値が無効値であれば、転送元からの読み出しと判定し、有効値であれば転送先からの読み出しと判定する。
転送元からの読み出しの場合、転送元物理ブロックの読み出し物理セクタを得る(S314)。取得した転送先物理ブロックにおける読み出し物理セクタのデータをページ単位で読み出す(S315)。
ステップS313において、転送先からの読み出しの場合、転送先物理ブロックの読み出し物理セクタを得る(S319)。読み出し論理セクタアドレスから、固定オフセットを減算し、その値を、FAT領域に固有の書込み単位で除す。その商に基づき、書込み単位配置テーブル150を参照して得た先頭物理アドレスに、剰余を加算することで、読出し論理セクタアドレスに対応する物理セクタが得られる。
取得した転送先物理ブロックの読み出し物理セクタのデータをページ単位で読み出す(S320)。
その後、ホスト102から読み出しが継続しているか否かを判断し(S316)、終了していれば、読み出し処理全体を終了する。ホスト102からの読み出しが継続していれば、読み出し論理セクタアドレスをページ単位でインクリメントし(S317)、読み出し論理セクタアドレスのオーバーフローを判断する(S318)。オーバーフローしてなければ、ステップS313に戻り、次のデータを読み出し、オーバーフローしていれば、本FAT重複読み出し処理を終了する。
本発明は、特定の実施形態について説明されてきたが、当業者にとっては他の多くの変形例、修正、他の利用が明らかである。それゆえ、本発明は、ここでの特定の開示に限定されず、添付の請求の範囲によってのみ限定され得る。なお、本出願は日本国特許出願、特願2004−133112号(2004年4月28日提出)、特願2004−133113号(2004年4月28日提出)、特願2004−138200号(2004年5月7日提出)に関連し、それらの内容は参照することにより本文中に組み入れられる。
本発明にかかる不揮発性記憶装置の書込み方法は、ホストからのデータの書込み処理を高速に実行できると共に、処理に必要な物理ブロックの数を少なくすることができ、フラッシュメモリのデータ書換え回数を高めることができるとの特有の効果を有し、不揮発性記憶装置、メモリカード、不揮発性メモリのコントローラ装置等に有用である。
【書類名】明細書
【発明の名称】不揮発性記憶装置及びデータ書込み方法
【技術分野】
【0001】
本発明は、フラッシュメモリ等の不揮発性メモリを用いた記憶装置およびその書込み方法に関する。
【背景技術】
【0002】
近年、不揮発性メモリを搭載したメモリカードはデジタルカメラや携帯電話の記憶媒体としてその市場を拡大している。そしてメモリカード容量の増加に伴い、データファイルや静止画等の小容量の記録からより大容量が必要となる動画記録へとその用途は広がっている。このため、従来より、不揮発性メモリを搭載した記録媒体に関し種々の考案がなされている(例えば、特許文献1〜4)。
【0003】
近年、メモリカードの不揮発性メモリとして主に使用されているNANDタイプのフラッシュメモリは、その容量の増加に伴いデータの消去単位となる物理ブロックのサイズが16kB(主に128MB以下のフラッシュメモリについて)のものから128kB(主に128MB以上のフラッシュメモリ)へと大きくなってきている。それに対し、メモリカードへのデータ書込みを管理するファイルシステムでは、データの書込み単位となるクラスタは16kBのままで変化していない。
【0004】
従来の小容量(主に128MBまでの容量)のメモリカードにおいては、メモリカードにデータを書込む際のクラスタの容量と、メモリカード内部に搭載されているNANDタイプのフラッシュメモリの消去単位となる物理ブロックとは等しかった。
【0005】
【特許文献1】特開2001−154909号公報
【特許文献2】特開平11−53248号公報
【特許文献3】特開2002−324008号公報
【特許文献4】特開平5−216780号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかし、大容量化が進むと、例えば、容量が128MBを越えた容量値の不揮発性メモリからは、メモリカードにデータを書込む単位であるクラスの容量の16kBと、メモリカード内部に搭載されているNANDタイプのフラッシュメモリの消去単位である物理ブロックの容量の128kBとが異なる。これにより、メモリカードに書込まれたファイルがフラグメンテーションを発生していた場合の書込み性能の低下を招いていた。
【0007】
上記の様にフラグメンテーションが発生した状態での、従来の不揮発性メモリの書込み方法においては、書込み処理に要する時間が長いとともに、書込み・消去を行う物理ブロックの数が多く必要となるという課題が存在していた。
【0008】
また、ホストからの書込み要求には、前回にデータを書込んだ領域と連続した論理アドレス領域にデータを続けて書込む場合や、前回にデータを書込んだ領域と全く別の任意の領域にデータを書込む場合等、種々の場合があり、いずれのアクセス方法によっても効率的な書込み処理が実現されることが望まれる。
【0009】
本発明は上記課題を解決すべくなされたものであり、その目的とするところは、ホストからのアクセス方法に依存せず書込み処理に要する時間を短縮できる不揮発性の記憶装置を提供することにある。
【課題を解決するための手段】
【0010】
本発明に係る不揮発性記憶装置は、ホストからの論理アドレスを受けてデータの書込み、読み出しが可能な不揮発性記憶装置である。不揮発性記憶装置は、物理アドレスによりデータの書込み、読み出しが行われ、複数の物理ブロックから構成される不揮発性メモリと、論理アドレスと物理アドレスの対応情報を、所定の管理単位領域毎に論理グループアドレスと、1つ以上の物理ブロックからなる物理グループのアドレスとの対応情報をとして格納する論物変換テーブルと、論物変換テーブルで対応付けられている論理グループアドレスと同一の論理グループアドレスを持つデータについて、管理単位領域のサイズよりも小さなサイズのデータの論理アドレスと物理アドレスの対応情報として格納する重複テーブルと、不揮発性記憶装置の動作制御を行うコントローラとを備える。コントローラは、一の管理単位領域に書込み済みのデータと同一の論理アドレスを持つデータを、他の管理単位領域に重複して書込むことを許可し、その重複して書込むための書込みモードを複数有し、ホストからの論理アドレスの変化の状況に応じて、論物変換テーブルの情報を更新することなく、書込みモードを選択的に切り替える。
【0011】
本発明に係るデータ書込み方法は、ホストからの論理アドレスを受けてデータの書込み、読み出しが可能な不揮発性記憶装置に対するデータ書込み方法である。その書込み方法は、一の管理単位領域に書込み済みのデータと同じ論理アドレスを持つデータを他の管理単位領域に重複して書込むための書込みモードを複数有し、ホストから、既に書込み済みのデータと同じ論理アドレスを持つデータの書込みコマンドを受けたときに、書込み要求のあったデータを、書込み済みデータの管理単位領域とは別の管理単位領域に重複して書込み、別の管理単位領域に書込んだデータの論理アドレスと物理アドレスを対応づけて記憶し、その後、続けてホストから書込みコマンドを受けたときに、ホストからの論理アドレスの変化の状況に応じて書込みモードを選択的に切り替える。
【発明の効果】
【0012】
本発明によれば、不揮発性メモリ内のある論理アドレスに対してデータが書込まれた後、同じ論理アドレスに対して再度データが書込まれる場合に、物理アドレス上で前に書込まれたデータを消去せず保持したまま、前にデータが書込まれた物理領域と異なる物理領域に新たにデータを書込む重複書込みを許可する。これにより、不揮発性メモリ特有の、データの更新に伴うコピー、消去処理の回数を低減でき、書込み効率を向上できる。さらに、書込みアドレスの変化の状況に応じて書込みモードを選択的に切り替えるので、ホストからの書込み要求の種類(連続アクセス、ランダムアクセス)に依存せずに、より最適な方法で書込み処理を実行できる。
【発明を実施するための最良の形態】
【0015】
以下、添付の図面を参照し、本発明に係る不揮発性記憶装置の一実施形態であるメモリカード及びその書込み方法について説明する。
【0016】
1. メモリカードの構成
図1Aに本発明の不揮発性記憶装置の一実施形態であるメモリカードの構成を示す。メモリカード101はホスト102からデータの読み出し、書込みが可能な記憶装置である。メモリカード101は、不揮発性の記憶素子であるフラッシュメモリ103と、フラッシュメモリに対するデータの書込み、読み出しを制御するコントローラ104と、消去済みテーブル105と、論物変換テーブル106と、重複テーブル107と、FAT領域変換テーブル108とを備える。
【0017】
フラッシュメモリ103はここでは128MBの容量を持つ。但し、フラッシュメモリ103の容量はこれに限定されず、また、複数のフラッシュメモリを備えても良い。コントローラ104は、ホスト102からの書込みと読み出し命令を受けてフラッシュメモリ103へのデータの格納、または、フラッシュメモリ103からのデータの読み出しを制御する。
【0018】
フラッシュメモリ103に格納されるデータは、ファイルシステムの1つであるFATファイルシステムにより管理される。FATファイルシステムは、ファイル管理情報(以下「FAT情報」という。)として、データ記録領域を複数のパーティションと呼ばれる領域に分割して管理するための情報を格納するマスターブートレコード・パーティションテーブル、1つのパーティション内の管理情報を格納するパーティションブートセクタ、ファイルに含まれるデータの格納位置を示すFATテーブル1及びFATテーブル2、並びにルートディレクトリ直下に存在するファイル及びディレクトリの情報を格納するルートディレクトリエントリを含む。なお、ファイルシステムは他の種類のものでもよい。
【0019】
消去済みテーブル105はフラッシュメモリ103内部の物理ブロックのそれぞれ消去済であるか、または、書込み済みであるかを示す情報を格納する。論物変換テーブル106は、ホスト102が指定するアドレス(以下「論理アドレス」という。)と、フラッシュメモリ103内部のアドレス(以下「物理アドレス」という。)との変換を行うテーブルである。
【0020】
論物変換テーブル106は、論理グループアドレスに対応するアドレスの領域に、その論理グループに対応する物理ブロックのアドレスを格納する。論物変換テーブル106の簡単な構成を図1Bに示す。論物変換テーブル106は論理グループアドレスをテーブルのアドレスとして論理アドレスに対応する物理アドレスをテーブルのデータとして持つ。対応する物理ブロックが存在しない場合には無効値(本実施の形態では0x0000)をデータとして持つ。論物変換テーブル106は論理ブロック1〜999に対応する領域と論理グループ0−0〜0−3に対応する2つの領域からなる構成を取る。これは後述するが、論理アドレスをFAT領域とデータ領域に分割して取り扱う本発明の特徴に起因する。
【0021】
本実施形態では、フラッシュメモリ103において、ある物理ブロックAに既に書込み済みであるデータと同じ論理アドレスを持つ別のデータを、物理ブロックAとは異なる物理ブロックBに書込むこと(以下、これを「重複書込み」という。)を許容する。重複テーブル107は、このような重複書込みされたデータに関する物理アドレスと論理アドレス間の対応情報を格納するテーブルである。FAT領域変換テーブル108は、フラッシュメモリ103における、FAT1,FAT2等のFAT情報を格納する領域の境界セクタに関する情報を格納する。
【0022】
すなわち、本実施形態のメモリカード101は、フラッシュメモリ103において、ある論理アドレスに対応した物理アドレスにデータが書込まれた後、同じ論理アドレスに対して再度データが書込まれる場合に、前に書込まれたデータを物理的に消去せず保持したまま、前にデータが書込まれた物理ブロックと異なる物理ブロックにデータを書込むことを可能とする。メモリカード101は、新たに書込んだデータの論理アドレスと物理アドレスを重複テーブル107に格納するとともに、前にデータが書込まれた物理ブロックと後にデータが書込まれた物理ブロックの対応関係をも重複テーブルに格納する。すなわち、重複テーブル107は、データが書込まれた論理アドレスと、その論理アドレスに対して以前にデータが書込まれた物理領域(転送元)と、その論理アドレスに対して後にデータが書込まれた物理領域(転送先)とに関する情報を互いに関連づけて格納する。
【0023】
また、言い換えると、重複テーブル107は、フラッシュメモリ103の物理領域に対してのみデータが書込まれ、未書込みの物理ページを残している物理ブロック(転送先)に書込まれたデータに関する情報を格納するテーブルである。重複テーブル107は、未書込み領域をもつ物理ブロック(転送先)のブロックアドレス、旧データがある物理ブロック(転送元)のブロックアドレスや、そこに書込まれたデータの論理グループアドレス等の情報を格納する、とも言える。
【0024】
図2はフラッシュメモリ103の内部の構成を示す図である。フラッシュメモリ103の記録領域は複数の物理ブロック201から構成される。物理ブロック201は128kBの大きさを持ちデータを一括に消去できる消去単位である。本実施形態では1物理ブロックをデータの管理単位として扱うが、複数の物理ブロックをまとめて管理単位として扱ってもよい。
【0025】
図3は物理ブロック201の内部の構成を示す図である。物理ブロック201は複数の物理ページ301から構成される。物理ページ301は、データを書込む際の書込み単位であり、2kBの大きさを持つ。ホスト102が論理的にデータの書込みを行う単位であるクラスタは16kBであるが、この値は物理ブロック201の容量128kBとも物理ページ301の容量2kBとも一致しない。そのため、連続する8ページ分の物理ページにより容量16kBの部分物理ブロックを構成する。部分物理ブロック(16kB)はホストからのデータの書込みを想定してコントローラ103が論理的に扱うデータの単位である。1つの物理ブロック201は8つの部分物理ブロックからなり、その部分物理ブロック単位でホスト102からのデータが書込まれる。
【0026】
図4はメモリカード101の内部における論理的なデータの管理を示した図である。メモリカード101に搭載されているフラッシュメモリ103の記憶容量は128MBである。一般的にフラッシュメモリ103には初期不良ブロックや、書き換えを繰り返すことにより不良ブロックが発生することがあるため、予めやや少な目の容量をメモリカード101の容量とする。本例では、ホスト102が認識できる容量は125MBとする。ホスト102から書込みを行う単位である16kB単位を論理ブロック402とし、メモリカード101の125MBの容量において、0から順に7999まで割り当てている。この論理ブロック8個で、フラッシュメモリ103の消去単位である物理ブロックと等しい128kB単位の論理グループを構成する。
【0027】
図5は重複テーブル107の構成を示した図である。重複テーブル107は、フラッシュメモリ103内の主としてFAT情報を格納する領域(以下「FAT領域」という。)に対する重複情報(FAT重複情報)107aと、ユーザデータを格納する領域(以下「データ領域」という。)に対する重複情報107bとを格納する。本例では、FAT領域に対する重複情報107aは、4つのレコード(FAT重複情報0〜3)を有し、データ領域に対する重複情報は8つのレコード(重複情報0〜7)を有するが、重複情報のレコード数はこれに限られない。
【0028】
図6(a)にFAT重複情報107aの構成を示す。FAT重複情報107aにおいて、「転送先物理ブロックアドレス」は、転送先の物理ブロックのアドレスを格納する。「転送先アロケーション物理ページ」は、転送先として割当てられた物理ページの番号を格納する。FAT重複情報107aは転送元に関する情報を格納していない。これは、後述するように、FAT領域については、前にデータが書込まれた物理ブロックと同じ物理ブロック内に後のデータが書込まれるため、転送元の物理ブロックと転送先の物理ブロックが同じになるからである。
【0029】
図6(b)にデータ領域に対する重複情報107bの構成を示す。重複情報107bにおいて、「論理ブロックアドレス」のフィールドは、書込みデータの論理ブロックのアドレスを格納する。「転送元物理ブロックアドレス」のフィールドは、転送元の物理ブロックのアドレスを格納する。「転送先物理ブロックアドレス」のフィールドは、転送先の物理ブロックのアドレスを格納する。「転送先先頭ページ論理アドレス」のフィールドは、転送先の物理ブロックの先頭ページに格納されたデータの論理アドレスを格納する。
【0030】
「転送先次書込み論理アドレス」のフィールドは、転送先の物理ブロックにおいて次に書込まれるデータの先頭データの論理アドレスを格納する。すなわち、転送先の物理ブロックにおいて最後に書込まれたデータの論理アドレスの次のアドレスを格納する。「転送先次書込み物理アドレス」のフィールドは、転送先の物理ブロックにおいて次に書込みを行うときの先頭の物理アドレスを格納する。すなわち、転送先の物理ブロックにおいて消去済み領域の先頭の物理アドレスを格納する。
【0031】
「転送先書込みモード」のフィールドは、書込みモードを示す値を格納する。書込みモードには、「連続モード」、「上書きモード」、「ランダムモード」の3種類がある。各モードを示す値は以下のとおりである。
連続モード:0x0000h
上書きモード:0xFFFFh
ランダムモード:上記以外(ランダムモードでの書込み周期)
【0032】
「転送先有効オフセット物理アドレス」のフィールドは、転送先物理ブロックにおいて最後に書込まれたデータについての、転送先物理ブロック先頭からのオフセット値を格納する。
【0033】
図7にフラッシュメモリ103の記憶領域のページのデータフォーマットを示す。各ページは、そのページについての管理情報を格納する管理領域と、データを格納するセクタデータ領域とを有する。管理領域は、集約フラグ、論理ブロックアドレス、論理セクタアドレス、管理領域のECC(Error Correction Code)等が格納される。セクタデータ領域には、セクタデータと、セクタIDと、セクタデータとセクタIDについてのECCとが格納される。
【0034】
図8に書込み単位配置テーブルの構成を示す。書込み単位配置テーブル150はフラッシュメモリ103内の管理領域に格納される。書込み単位配置テーブル150はランダムモードでの書込みとFAT書込みの際に使用される。
【0035】
ランダムモードでの書込みでは「書込み単位」のフィールドは、ランダムモードで書込みを行うときの最小の書込みデータサイズを格納する。この書込み単位より小さいデータサイズでの書込みは禁止される。書込み単位は、例えば、0x0010h(16セクタ)、0x0020h(32セクタ)、0x0040h(64セクタ)に設定される。1物理ブロック(=64ページ)に含まれる書込み単位の数は、書込み単位の大きさにより異なる。例えば、書込み単位の値が0x0020h(32セクタ(=8ページ))であれば、1物理ブロック内に8個の書込み単位が含まれる。図8は、書込み単位の値が0x0010h(16セクタ(=4ページ))の場合の単位配置テーブル150の構成を示す。この場合、1物理ブロック内に16(F)個の書込み単位(書込み単位0〜書込み単位F)が含まれる。「書込み単位0先頭アドレス」のフィールドは、16個の書込み単位のうちの第1番目の書込み単位のデータが書込まれた領域の先頭物理アドレスの値を格納する。「書込み単位n先頭アドレス」のフィールドは、第n+1番目の書込み単位が書込まれた領域の先頭物理アドレスの値を格納する。
【0036】
FAT書込みでは「書込み単位」のフィールドは、書込みを行う論理グループによる固定値となる(図23Aの書込み単位のサイズ)。従って1物理ブロック(=64ページ)に含まれる書込み単位の数も論理グループにより異なる。
【0037】
2. メモリカードの動作
上記の構成を有するメモリカード101の動作を以下に説明する。
【0038】
2.1 書込み動作
本実施形態のメモリカードによるフラッシュメモリ103への書込み処理について図9、図10を参照して説明する。
【0039】
図9において、メモリカード101のコントローラ104は、ホスト102から書込みコマンドを受信すると、ホスト102から指定された書込み論理アドレスに基づきフラッシュメモリ103においてデータを書込むべき領域がFAT領域かデータ領域かを判定する(S11)。FAT領域であれば、図10に示す処理を実行する(詳細は後述する)。なお、ホスト102はデータ書込み領域を論理セクタアドレスで指定する。
【0040】
データ領域であれば、コントローラ104は重複テーブル107を参照し、指定された論理アドレスの登録があるか否かを判断する(S12)。この判断は、重複テーブル107の重複情報の「論理ブロックアドレス」を参照し、その値がホスト102により指定された論理ブロックアドレスと等しいか否かを判断して行われる。ここで、論理ブロックアドレスは、論理セクタアドレスを管理単位であるフラッシュメモリの物理ブロックサイズで除した商として得られる。
【0041】
重複テーブル107に登録がない場合、重複テーブル107での登録位置を決定した後(S23)、物理ブロックへの新規書込みを行う(S24)。これらの処理の詳細は後述する。
【0042】
重複テーブル107に登録がある場合、転送先の物理ブロックにおいて未書込みの領域(消去済み領域)があるか否かを判断する(S13)。これは、重複情報107bの「転送先次書込み物理アドレス」フィールドの値から判断できる。すなわち、「転送先次書込み物理アドレス」フィールドの値が、0x0100(物理ブロックのサイズ)よりも小さければ、未書込み領域があると判断し、0x0100と同じであれば、未書込み領域がないと判断する。
【0043】
未書込みページがない場合、集約処理を行い(S18)、未書込みページがある場合、重複情報107bの「転送先書込みモード」フィールドの値から書込みモードを判定する(S14)。
【0044】
書込みモードがランダムモードの場合、まずランダム書込みが可能か否かを判断する(S15)。この判断は以下のように行う。重複情報107bの「書込みモード」の値が”連続モード”であるときは、「転送先次書込み物理アドレス」が、書込み周期(例えば、0x0040)以下のときに、ランダム書込み「可」と判断する。それ以外は、ランダム書込み「不可」と判断する。ここで、書込み周期とは、書込みを行う際の所定のデータサイズであり、書込み周期より小さいデータサイズでの書込みは不可能となる。「書込みモード」の値が”上書きモード”であるときは、「転送先先頭ページ論理アドレス」と「転送先次書込み論理アドレス」との差分が、書込み周期(例えば、0x0010、0x0020又は0x0040)に一致するときに、ランダム書込み「可」と判断する。それ以外は、ランダム書込み「不可」と判断する。
【0045】
ランダム書込みが可能であれば、ランダム書込みを行う(S16)。ランダム書込みが不可能であれば、集約処理を行う(S18)。
【0046】
書込みモードが上書きモードの場合、まず上書き書込みが可能か否かを判断する(S19)。この判断は以下のように行う。重複情報107bの「書込みモード」の値が”連続モード”であるときは、ホスト102により指定された論理アドレスが「転送先先頭ページ論理アドレス」以上のときに、上書き書込み「可」と判断する。それ以外は、上書き書込み「不可」と判断する。「書込みモード」の値が”上書きモード”であるときは、ホスト102により指定された論理アドレスが「転送先先頭ページ論理アドレス」以上でかつ「転送先次書込み論理アドレス」よりも小さなときに、上書き書込み「可」と判断する。それ以外は、上書き書込み「不可」と判断する。
【0047】
上書き書込みが可能であれば、上書き書込みを行う(S20)。上書き書込みが不可能であれば、ステップS15に進む。
【0048】
書込みモードが連続モードの場合、まず連続書込みが可能か否かを判断する(S21)。重複情報107bの「転送先次書込み論理アドレス」の値が、ホスト102により指定された論理アドレスよりも小さいときに、連続書込み「可」と判断する。それ以外は、連続書込み「不可」と判断する。連続書込みが可能であれば、連続書込みを行う(S22)。連続書込みが不可能であれば、ステップS19に進む。
【0049】
書込み処理(S16、S20、S22、S24)が終了すると、ホスト102からの書込みデータの転送が継続しているか否かを判断する(S17)。ホスト102から終了を示すコマンドが送信されたときは、処理を終了し、そうでなければ、ステップS11に戻り、上記処理を繰り返す。
【0050】
本実施形態のメモリカード101は以上のように、直前の書込みアドレスとは関連性のない任意の論理アドレス領域に書込みを行うランダムモードと、直前に書込みを行った論理アドレス領域と同じ論理アドレス領域に書込みを行う上書きモードと、連続した論理アドレス領域に書込みを行う連続モードとを有し、これらのモードを、ホストから受けた論理アドレスの変化の状況に応じて選択的に切り替える。このように書込みモードを切り替えることで、書込み状況に応じた最適な書込み処理が実現され、書込み処理の効率を向上できる。
【0051】
なお、本実施形態のメモリカードは3つの書込みモードを有しているが、これらの書込みモードは全て備えていなくてもよく、アプリケーションに応じて1つ又は2つの書込みモードのみを備えてもよい。
【0052】
以下、各書込み処理についてより具体的に説明する。
【0053】
2.1.1 連続書込み
本実施形態における連続書込み処理の概念を説明する。本実施形態における連続書込み処理の概念を説明する前に、従来の書込み処理によるフラッシュメモリ内部のデータ配置の変化を説明する。
【0054】
図11Aに示すようにデータの消去、書込みが行われる場合を検討する。図11A(a)の状態では、データ領域において、クラスタ2とクラスタ3にファイル1が書込まれ、クラスタ4にファイルが書込まれ、クラスタ5とクラスタ6にフィル3が書込まれクラスタ7にファイル4が書込まれ、クラスタ8とクラスタ9にファイル5が書込まれている。
【0055】
この状態からホスト102によってファイル1,3,5が消去された状態を図11A(b)に示す。ホスト102は、フラッシュメモリ103内のデータ領域に対しては何らデータの書込み・消去を行わず、FAT1において、ファイル1,3,5に関連するクラスタの値を全て”0000”に書き換えることによってファイル1,3,5を論理的に消去する。それにより、データ領域のファイル1,3,5があった領域は、ホスト102により空き領域として認識される。
【0056】
この状態からホスト102が容量96KBの新ファイルを書込んだ後の状態が図11A(c)である。FAT1において空き領域を示す”0000”が書かれたクラスタに対して新ファイルを書込む。
【0057】
以上のようにしてホスト102はメモリカード101に書込んだファイルを消去し、また新たなファイルを書込む。
【0058】
図11Aの消去・書込み処理に対してメモリカード101内部での従来の処理について図11Bを用いて説明する。
【0059】
図11B(a)はフラッシュメモリ103内部におけるデータ構成を示したものであり、物理ブロック100にファイル1〜5が書込まれている。物理ブロック101〜104は消去済みブロックである。この状態からファイル1,3,5が論理的に消去された図11B(b)の状態になっても、この物理ブロック100の状態は変わらず図11B(a)の状態のままである。
【0060】
次にホスト102が新ファイルをメモリカード101に書込む場合、新ファイルを書込むべきクラスタは3つの部分(クラスタ2と3、クラスタ5と6、クラスタ8と9)に分かれているので、ホスト102は3回に分けてメモリカード101に対してデータを書込む必要がある。
【0061】
まず、別の消去済み物理ブロック101において、消去されたファイル1に対応する領域に新ファイルの一部を書込み、残りの領域にファイル2〜5をコピーする。そして書込み後に物理ブロック100を物理的に消去する。これにより図11B(b)の状態になる。
【0062】
次に、別の消去済み物理ブロック102において、消去されたファイル3に対応する領域に新ファイルのデータの一部を書込むとともに、それ以外の領域には物理ブロック101からデータをコピーする。その後、物理ブロック101を物理的に消去する。これにより図11B(c)の状態になる。
【0063】
さらに、別の消去済み物理ブロック103において、消去されたファイル5に対応する領域に新ファイルのデータの一部を書込むとともに、それ以外の領域には物理ブロック102からデータをコピーする。その後、物理ブロック102を物理的に消去する。これにより図11B(d)の状態になる。
【0064】
以上のように、従来では、1つの論理グループ内の書込みであるにもかかわらず、3つの物理ブロックに対して書込み・消去を行う必要があり、書き込み処理に時間がかかった。
【0065】
次に、本実施形態による上書き書込みの動作について図11Cを用いて説明する。
図11C(a)に示すように、最初、物理ブロック99にファイル1〜5のデータが格納されている。物理ブロック100〜物理ブロック102は消去済みブロックである。この状態で、新ファイルを、ファイル1、ファイル3、ファイル5がそれぞれ記録された論理アドレス領域と同じ論理アドレス領域に分けて書込む場合を考える。メモリカード101は、消去済みテーブル105を参照して、消去済みの物理ブロック100を検索し、その物理ブロック100に新ファイルの一部を記録する(図11C(b)参照)。その時点で重複テーブル107において新ファイルについて論理アドレスと物理アドレスの対応づけを行うとともに、新ファイルとファイル1の物理アドレスの対応づけを行う。このとき、論理ブロック99は変更されない。続いて、物理ブロック100においてファイル3に対応する位置に次の新ファイルの一部を記録する。その際、物理ブロック99におけるファイル2のデータをコピーした後、書込む(図11C(c)参照)。その時点で重複テーブル107において新ファイルについて論理アドレスと物理アドレスの対応づけを行うとともに、新ファイルとファイル3の物理アドレスの対応づけを行う。同様に、物理ブロック100において、ファイル4のデータをコピー後、新ファイルの一部を書込み後、物理ブロック99を消去する(図11C(d)参照)。この時点で、重複テーブル107において物理ブロック99と物理ブロック100の対応づけを解消する。
【0066】
以上のように、重複テーブル107によって、既に書込まれたデータと同じ論理アドレスを持ち、異なる物理ブロックに書込まれた新たなデータについて、論理アドレスと物理アドレスの対応づけを行うとともに、前に書込まれたデータと新たに書込んだデータの物理ブロック間の対応付けを行っている。このような重複テーブル107を備えることにより、データの上書きによる別の物理ブロックへのデータのコピー及び消去の回数を低減でき、書込み効率を向上できる。
【0067】
図12のフローチャートを参照し、連続書込み処理の詳細を説明する。
最初に、直ちに、連続書込み可能か否かを判断する(S51)。具体的には、登録されている重複情報107bの「転送先次書込み論理アドレス」が、ホスト102が指定する論理アドレスに等しい場合に、直ちに連続書込み可能と判定する。ホスト102が指定する論理アドレスよりも小さいときは、「不可」と判定する。
【0068】
書込み「不可」である場合、「転送先次書込み物理アドレス」の示すアドレスから、ホスト102が指定する論理セクタアドレスの前までの領域に、転送元の物理ブロックにおける対応するデータをコピーする(S52)。この際、書込み状況にしたがい重複情報107bの「転送先次書込み論理アドレス」と「転送先次書込み物理アドレス」を更新する。
【0069】
その後、ホスト102から転送されたデータを指定された領域にページ単位で書込む(S53)。この際、書込み状況にしたがい重複情報107bの「転送先次書込み論理アドレス」と「転送先次書込み物理アドレス」を更新する。
【0070】
ホスト102からの書込みデータの転送が終了したか否かを判定する(S54)。ホスト102から終了を示すコマンドが送信されたときに、書込みデータが終了したと判定する。ホスト102からのデータ転送が継続している場合、次に書込む領域が同じ論理グループか否かを判断し(S55)、同じ論理グループであれば、データの書込みを継続する(S53)。「転送先次書込み論理アドレス」が0x0100であれば、異なる論理グループと判断し、0x0100以下であれば同じ論理グループであると判断する。異なる論理グループであれば処理を終了する。
【0071】
2.1.2 上書き書込み
図13を参照し、本実施形態における上書き書込み処理の概念を説明する。図13(a)を参照し、物理ブロック100の論理ブロック8〜15のそれぞれにデータが格納されている場合に、ホスト102からの論理ブロック10に対する書込みに対して、コントローラ104は論理ブロック10が属する論理グループ0に対応する物理ブロック100を論物変換テーブル106から得る。そして消去済みテーブル105から消去済みのブロックである物理ブロック101を得る。そしてホスト102からのデータを論理ブロック10として書込み、まだ未書込みのページを残した物理ブロック101に関する情報を重複テーブル107に格納する。
【0072】
この後、さらにホスト102が同一の論理ブロックである論理ブロック10に対して書込みを行う場合、コントローラ104は論理ブロック10が属する論理グループ0に対応する物理ブロック100を論物変換テーブル106から得る。そして、重複テーブル107を参照して、未書込みのページを持ち、かつ、同じ論理グループ0のデータが書込み済みである物理ブロック101を得る、そしてホスト102からのデータを、論理ブロック10として書込み、まだ未書込みのページを残した物理ブロック101に関する情報を重複テーブル107に格納して書込みを終える。この状態が図13(b)に示した状態である。この処理に要する時間も同様に2880μsである。
【0073】
さらに、この後、連続してホスト102から同一の論理ブロックである論理ブロック2に対して複数回の書込みを行った後の状態を示した図が図13(c)である。
【0074】
以上のように本実施の形態では、同一の論理ブロックに対する書込みが連続して発生した場合に、1つの物理ブロックに対して続けて、かつ、書込みが発生した論理ブロックに対してのみ書込み行う。これにより、論理ブロックの書き換えに要する時間を低減できる。
【0075】
図14のフローチャートを参照し、上書き書込み処理の詳細を説明する。最初に、上書きモードに設定する(S61)。重複情報107bの「転送先書込みモード」フィールドの値を”上書きモード”を示す値に設定する。
【0076】
そして、連続モードからの移行か否かを判断する(S62)。この判断は、重複情報107bの「転送先書込みモード」を参照して行われる。連続モードからの移行であれば、直ぐにホストデータを書込み可能か否かを判断する(S63)。この判断は、以前の書込みにおいて、書込み周期を満たすように、書込みがなされているか否かを判断することにより行う。すなわち、書込み対象の物理ブロックにおいてデータ書込み済みの領域の境界が、書込み周期にアライメントされているかを判断する。具体的には、既に書込み済みのページの合計のサイズが2のべき乗の値となるか否かを判断する。より具体的には、重複情報107bの「転送先次書込み物理アドレス」が、0x0004、0x0008、0x0010、0x0020、0x0040、0x0080のいずれかであれば、直ぐに上書き可能であると判定し、上記以外の時には不可と判定する。
【0077】
直ぐに書込みが不可の場合、周期を満たすように不足分のデータを、書込み対象のブロックにコピーする(S64)。すなわち、転送元物理ブロックから転送先物理ブロックへ、論理ブロックが連続になるように、「転送先次書込み物理アドレス」が示すアドレスから、書込み後のページ数のサイズが2のべき乗となるアドレスまでのデータをコピーする。この際、書込み状況に応じて「転送先次書込み論理アドレス」と「転送先次書込み物理アドレス」を更新する。
【0078】
次に、有効オフセットを設定する(S65)。「転送先有効オフセット物理アドレス」に「転送先次書込み物理アドレス」の値を書込む。
【0079】
その後、直ぐにホストデータを書込み可か否かを判断する(S66)。登録されている重複情報の「転送先先頭ページ論理アドレス」とホストが指定する論理セクタアドレスとが同じページに属していれば、書込み可と判定し、属していなければ書込み不可と判定する。
【0080】
不可と判定されたときは、書込みデータの前のデータを書込み対象ブロックにコピーする(S67)。「転送先先頭ページ論理アドレス」フィールドが示すアドレスからホスト102が指定するセクタアドレスの直前までのデータを、転送元物理ブロックから転送先物理ブロックへコピーする。この際、書込み状況に応じて「転送先次書込み物理アドレス」フィールドを更新する。
【0081】
そして、ホスト102から転送されたデータをページ単位で書込む(S68)。この際、書込み状況に応じて「転送先次書込み物理アドレス」フィールドを更新する。
【0082】
ホスト102からの書込みデータの転送が終了したか否かを判定する(S69)。ホスト102からのデータ転送が終了している場合、上書き周期分の残りのデータを書込み対象ブロックにコピーする(S70)。ホスト102からのデータ転送が継続している場合、次に書込む領域が同じ論理グループか否かを判断し(S71)、同じ論理グループであれば、データの書込みを継続する(S68)。異なる論理グループであれば処理を終了する。
【0083】
2.1.3 ランダム書込み
本実施形態において、ランダム書込みとは、転送先物理ブロックにおいて既に書込まれたデータの論理アドレスと、新たに書込もうとするデータの論理アドレスとが、連続でもなく、重複もしない場合の書込みである。
【0084】
図15のフローチャートを参照し、ランダム書込み処理の詳細を説明する。最初に、重複情報107bの「転送先書込みモード」を参照してランダムモードであるか否かを判断する(S81)。
【0085】
ランダムモードでなければ、ホストデータを直ぐに書込み可能か否かを判断する(S82)。この判断は、上書き書込みの場合と同様、以前の書込みにおいて、書込み周期を満たすように、書込みがなされているか否かを判断することにより行う。直ぐに書込みが不可の場合は、周期を満たすように不足分のデータを、書込み対象のブロックにコピーする(S83)。
【0086】
その後、ランダムモードに設定する(S84)。重複情報107bの「転送先書込みモード」の値が”上書きモード”のときは、「転送先書込みモード」に「転送先次書込み物理アドレス」の値を書込む。
【0087】
次に、有効オフセットを設定する(S85)。「転送先有効オフセット物理アドレス」に「転送先次書込み物理アドレス」の値を書込む。
【0088】
その後、直ぐにホストデータを書込み可か否かを判断する(S86)。ホスト102が指定する論理セクタアドレスを、重複情報107bの「転送先書込みモード」の値で割った剰余が、1ページサイズ未満(0x0003未満)であれば、直ぐに書込み可と判定する。上記以外は不可と判定する。
【0089】
不可と判定されたときは、書込みデータの前のデータを書込み対象ブロックにコピーする(S87)。ホスト102の指定するセクタアドレスを「ランダム書込み」の書込み単位でグループ化したときの先頭のアドレスから、ホスト102の指定するセクタアドレスの直前までのデータを、転送先物理ブロックへコピーする。
この際、書込み状況に応じて「転送先次書込み物理アドレス」フィールドを更新する。
【0090】
その後、有効オフセットを設定する(S88)。「転送先次書込み物理アドレス」が「転送先書込みモード」で割り切れる時には、「転送先有効オフセット物理アドレス」に「転送先次書込み物理アドレス」を書込む。
【0091】
ホスト102から転送されたデータをページ単位で書込む(S89)。この際、書込み状況に応じて「転送先次書込み物理アドレス」フィールドを更新する。
【0092】
ホスト102からの書込みデータの転送が終了したか否かを判定する(S90)。ホスト102からのデータ転送が終了している場合、書込み周期分の残りのデータを書込み対象ブロックにコピーする(S91)。ホスト102からのデータ転送が継続している場合、次に書込む領域が同じ論理グループか否かを判断し(S92)、同じ論理グループであれば、データの書込みを継続する。異なる論理グループであれば処理を終了する。
【0093】
2.1.4 新規書込み
ステップS12において、重複テーブル107に登録がない場合、重複テーブル107での登録位置を決定した後(S23)、物理ブロックへの新規書込みを行う(S24)。これらの処理の詳細を説明する。
【0094】
図16を参照し、ステップS23の重複テーブルの登録位置の決定処理の詳細を説明する。重複テーブル107の中で最も以前に使用された重複情報を求める(S121)。この処理は重複テーブル107において、これから書込むデータ用の空きレコードを確保するための候補を決定するもので、重複情報0〜7のうちひとつを選択できればよい。ここではLRU(Least Recently Used)に従った決定方法を使用している。
【0095】
その求めた重複情報が有効か否かを判断する(S122)。有効であれば、集約処理を行う(S123)。求めた重複情報の「論理ブロックアドレス」の値が0xFFFF以外であれば有効と判定し、0xFFFFであれば無効と判定する。なお、0xFFFFは、重複情報が初期化されたときに「論理ブロックアドレス」に設定される値である。
【0096】
図17を参照し、ステップS24の新規書込み処理の詳細を説明する。まず、重複テーブル107への登録を行う(S41)。このとき、重複情報107bの各フィールドの初期化を行う。「論理ブロックアドレス」にはホストの指定する論理ブロックアドレスを登録する。「転送元物理ブロックアドレス」には、ホスト102の指定する論理ブロックアドレスに対応するデータが書きこまれている物理ブロックアドレス、即ち、論物変換テーブルからホスト102の指定する論理ブロックアドレスを基に得られるアドレスを登録する。「転送先物理ブロックアドレス」には、消去済みの物理ブロックアドレスを消去済みテーブルから検索して登録する。この際、消去済みテーブルの該当ビットは書込み済みを示す状態に書き換える。「転送先先頭ページアドレス」には、ホスト102の指定する論理セクタアドレスを登録する。
【0097】
ホスト102から転送されたデータをページ単位で書込む(S42)。状況に応じて「転送先次書込み論理アドレス」と「転送先次書込み物理アドレス」を更新する。
【0098】
ホスト102からの書込みデータの転送が終了したか否かを判定する(S43)。ホスト102からのデータ転送が終了している場合、処理を終了する。ホスト102からのデータ転送が継続している場合、次に書込む領域が同じ論理グループか否かを判断し(S44)、同じ論理グループであれば、データの書込みを継続する(S42)。異なる論理グループであれば処理を終了する。
【0099】
2.1.5 集約処理
集約処理について説明する。集約処理とは、転送元ブロックのデータと転送先ブロックのデータの重複関係を解消するための処理である。
【0100】
図18は、連続モードの場合の集約処理を説明するための図である。図18(a)に示すように転送元物理ブロック99と転送先物理ブロック100がある場合、これらのブロックが図18(b)に示すように転送先物理ブロック100に集約され、転送元物理ブロック99のデータは消去される。このとき、転送先物理ブロック100においては、元々記録されていた論理ブロック10に続いて転送元物理ブロック99から論理ブロック10に連続する論理ブロック11〜15がコピーされ、論理ブロック15の後に論理ブロック8、9がコピーされる。
【0101】
また、図19は、上書きモード、ランダムモードの場合の集約処理を説明するための図である。この例では、転送元物理ブロック99と転送先物理ブロック100から、消去済みの物理ブロック101に対して、それぞれ論理ブロックのデータをコピーし、その後、転送元物理ブロック99と転送先物理ブロック100のデータを消去する。
【0102】
以上のように、集約処理により、複数の論理ブロックに亘り書込まれていたデータを1つの論理ブロックにまとめることができる。
【0103】
図20、図21のフローチャートを参照し、図9のステップS18の集約処理について説明する。重複情報107bの「転送先書込みモード」の値から書込みモードを判定する(S101)。書込みモードが上書きモード、ランダムモードであれば、図21の処理を行う。
【0104】
書込みモードが連続モードであれば、転送元ブロックから転送先ブロックへデータの一部をコピーする(S102)。具体的には、「転送先次書込み論理アドレス」の値を含むページのデータを、転送元物理ブロッから転送先物理ブロックへコピーする。この際、書込み状況に応じて「転送先次書込み論理アドレス」と「転送先次書込み物理アドレス」を更新する。
【0105】
転送先物理ブロックにおいて最終ページまで書込まれたか否かを判断する(S103)。最終ページまで書込みがなされた場合は、転送元物理ブロックのデータを消去する(S106)。「転送元物理ブロックアドレス」で示されるフラッシュメモリの物理ブロックのデータを消去する。この際、消去済みテーブル105の該当ビットは消去済みを示す状態に書き換える。
【0106】
その後、各種のテーブルを更新する(S107)。すなわち、集約された物理ブロック(転送先物理ブロック)について論理アドレスと物理アドレスの対応を論物変換テーブル106に登録する。具体的には、論物変換テーブル106の「論理ブロックアドレス」の値を、「転送先物理ブロックアドレス」の値に書き換える。また、重複情報107bの各フィールドの無効化を行う。具体的には、「論理ブロックアドレス」には0xFFFF(無効を意味する値)を登録する。「転送元物理ブロックアドレス」、「転送先物理ブロックアドレス」、「転送先先頭ページ論理アドレス」、「転送先次書込み論理アドレス」、「転送先次書込み物理アドレス」、「転送先書込みモード」、及び「転送先有効オフセット物理アドレス」の各々に0x0000を登録する。
【0107】
一方、最終ページまで書込みがなされてない場合は、論理ページのオーバーフローを判断する(S104)。具体的には「転送先次書込み論理アドレス」の値が0x0100のときに、論理ページがオーバーフローと判定し、0x0100未満のときは、オーバーフローでないと判定する。
【0108】
論理ページがオーバーフローのときは、論理ページ番号を0にする(S105)。具体的には、「転送先次書込み論理アドレス」の値に0x0000を設定する。
【0109】
ステップ101において、書込みモードが上書きモード、ランダムモードの場合の処理を図21を参照して説明する。
【0110】
消去済みテーブル105を参照して消去済みブロックを取得し、また、論理ページ番号を0にする(S111)。論理ページ番号を0にするために、「転送先次書込み物理アドレス」を0x0000に設定する。この段階で同じ重複レコードの他のフィールドの"転送先"とは異なる物理ブロックを指し示す状態となる。また、内部的な変数として「集約論理アドレス」を持ち、その値を0x0000に設定する。
【0111】
重複情報に基づいて、集約するデータの読み出し先を判定する(S112)。転送元物理ブロックからデータを読み出す場合、転送元物理ブロックから消去済みブロックへデータをコピーする(S113)。すなわち、「転送元物理ブロック」から、消去済みの物理ブロックに、「集約論理アドレス」のデータをコピーする。この際、書込み状況に応じて「転送先次書込み物理アドレス」を更新する。
【0112】
転送先物理ブロックからデータを読み出す場合、転送先物理ブロックから消去済みブロックへデータをコピーする(S115)。すなわち、「転送先物理ブロック」から、消去済みの物理ブロックに、「集約論理アドレス」のデータをコピーする。この際、書込み状況に応じて「転送先次書込み物理アドレス」を更新する。
【0113】
転送先物理ブロックにおいて最終ページまで書込まれたか否かを判断する(S114)。最終ページまで書込みがなされた場合は、転送元物理ブロックと転送先物理ブロックのデータを消去する(S117)。
【0114】
その後、各種のテーブルを更新する(S118)。すなわち、論物変換テーブル106の「論理ブロックアドレス」の値を、このフローで取得した消去済みブロックのアドレスに書き換える。また、重複情報107bの各フィールドの無効化を行う。
【0115】
一方、最終ページまで書込みがなされてない場合は、論理ページをインクリメントし(S116)、次の論理ページ(集約論理アドレス)のデータをコピーする。
【0116】
2.1.6 FAT書込み
図9のフローチャートのステップS11の書込み領域判定において、書込み領域がFAT領域であると判定された場合の処理を以下に説明する。基本的な処理のフローはランダム書込みと全く同じであるが、書込み単位が論理グループによって固定された値であることと、FAT領域の論理グループがデータ領域の論理グループよりも小さな容量で構成されるために、論理グループ単位で書込みを行った物理ブロックに対して更にランダムで書きこみを行う事ができるのが特徴である。その説明の前に本メモリカード101によるFAT領域に対する管理方法について説明する。
【0117】
図22は、FAT情報に対する論理グループの割当てについて説明した図である。
同図においては、論理セクタアドレス0〜97(0x000〜0x0061)の領域には、未使用領域を含め、マスターブートレコードとパーティションブートレコードの情報が格納される。論理セクタアドレス98〜128(0x0062〜0x0080)の領域には、FAT1の情報が格納される。論理セクタアドレス129〜159(0x0081〜0x009F)の領域には、FAT2の情報が格納される。論理セクタアドレス160〜255(0x00A0〜0x00FF)の領域には、ルートディレクトリの情報が格納される。
【0118】
本実施形態のメモリカード101のコントローラ103は、マスタブートレコードとパーティションブートレコードを格納する連続した領域(セクタ0〜セクタ97の領域)を、論理グループ0−0に割り当てる。同様に、FAT1の情報を格納するセクタ98〜セクタ128の領域を論理グループ0−1に、FAT2の情報を格納するセクタ129〜セクタ159の領域を論理グループ0−2にそれぞれ割り当てる。ルートディレクトリの情報を格納する領域を含むセクタ160〜セクタ255の領域を論理グループ0−3として割り当てる。そして、各論理グループ0−0〜0−3に対応してフラッシュメモリ103の物理ブロックを1つずつ割り当てる。
【0119】
マスタブートレコード、パーティションブートレコード、FAT1、FAT2、及びルートディレクトリの情報のサイズは合計しても256セクタに満たないため、1つの物理ブロックがあれば、これらの全ての情報を格納できる。しかし、本実施形態では、FAT情報の種類に応じて論理グループ0−0〜0−3をそれぞれ割りあて、各論理グループ0−0〜0−3に物理ブロックを対応させる。また、各論理グループ0−0〜0−3に対してFAT重複情報0〜3をそれぞれ対応させる。FAT重複情報0〜3は、論理グループ0−0〜0−3に対応する物理ブロックのアドレスを「転送先物理ブロックアドレス」に格納する。
【0120】
図23Aは、本実施形態におけるカード容量が128MBの場合のFAT情報に関する種々の管理条件を示した図である。図23Aに示す情報はコントローラ103が適宜参照できるようメモリカード101内のFAT領域変換テーブル108に保持されている。
【0121】
カード容量が128MBの場合、一般的に、図22に示したように各FAT情報の論理セクタアドレスが割り当てられる。同図を参照すると、論理セクタアドレス0〜97(0x000〜0x0061)の領域は、論理グループ0−0に対応する。論理グループ0−0の固定オフセットは0である。論理グループ0−0の重複情報はFAT重複情報0に格納される。集約条件は0x00E0である。なお、集約条件は、物理ブロックサイズ(0x0100)から、その論理グループの書込み単位の大きさ(例えば、0x0020)を減算して得られる値である。また、書込み単位の大きさは32セクタであり、よって、論理グループ0−0では、1つの物理ブロックにおいて、セクタ0〜セクタ31、セクタ32〜セクタ63、セクタ64〜セクタ95、セクタ96及び97の4つの書込み単位が含まれる。書込み単位の大きさは、論理グループにより異なっている。
【0122】
図23Bは、FAT領域変換テーブル108の構成を示す図である。FAT領域変換テーブル108は、メモリカード(フラッシュメモリ103)の容量に応じた、各論理グループ0−0〜0−3に割り当てる論理アドレスの情報を格納する。同図に示すように、メモリカード101の容量に応じて各論理グループ0−0〜0−3に割り当てる領域の大きさを異ならせている。コントローラ103はメモリカード101の初期化時にFAT領域変換テーブル108を参照してカード容量に基づいて、FAT領域の論理アドレスに対して論理グループの割り当てを行う。
【0123】
図24A(a)は、FAT領域に関する論理グループに対応して割り当てられる物理ブロックの領域構成を示した図である。なお、図24A(a)は、FAT2に関連する論理グループ0−2の例を示している。物理ブロックは、部分ブロック書込み領域と、固定ランダム書込み領域とを含む。物理ブロック先頭のページ0〜ページ7の領域が部分ブロック書込み領域であり、この領域にFAT2に関する情報(31セクタ分の情報)が最初に書込まれる。それに続くページ8〜ページ63の領域がランダム書込み領域であり、この領域には、重複書込みされるデータが格納される。ランダム書込み領域における書込み単位は図23Aに示す書込み単位(論理グループ0−2の場合は4セクタ)であり、この値は部分ブロック書込み領域における書込み単位よりも小さい値となる。
【0124】
データ領域への書込みの場合、重複書込みする場合は、元のデータが格納された物理ブロックとは別の物理ブロックにデータを書込んでいた。これに対して、FAT領域における重複書込みの場合、元のデータが格納された物理ブロックと同じ物理ブロックにデータを書込む。すなわち、最初に部分ブロック書込み領域にデータが書込まれ、以後、既に書込み済みのデータの論理アドレスと同じ論理アドレスに対して別のデータを重複書込みする必要が生じた場合、その別のデータを同じ物理ブロック内の固定ランダム書込み領域に書込む。ランダム書込み領域の空きが無くなると、その物理ブロックは集約される。このように、FAT情報の種類毎に物理ブロックを割り当て、さらに、物理ブロックにおいて重複書き込みを行うことで、比較的不規則なアクセス頻度が高いFAT領域での集約回数を低減でき、書き込み効率を向上できる。
【0125】
なお、図24A(b)に示すように、さらに別の物理ブロックBにランダム書込み領域を設けて、ランダム書込み領域として使用する領域を拡張してもよい。その際には複数のランダム書込み領域を管理するために図6(a)で示したFAT領域の重複情報で管理すべき項目が増やす必要がある。図24A(b)の場合は、図24A(a)の場合よりも集約処理される回数が低減されるため、書込み効率をより向上できる。
【0126】
図9のフローチャートのステップS11の書込み領域判定において、書込み領域がFAT領域であると判定された場合の処理を図10を参照して説明する。
【0127】
最初に、重複テーブル107において、ホスト102が指定する論理アドレスに対応するFAT重複情報の登録があるか否かを判定する(S31)。具体的には、ホスト102が指定する論理アドレスに対応するFAT重複情報の「転送先物理ブロックアドレス」が0x0000であれば、登録ありと判定し、0x0000以外であれば、登録なしと判定する。
【0128】
FAT重複情報の登録がない場合、消去済みブロックを取得(S35)後、その消去済みブロックにFAT情報を書込む(S33)。
【0129】
FAT重複情報の登録がある場合、FAT重複情報が指定する物理ブロックにおいて未書込みページの有無を判断する(S32)。ホスト102が指定する論理アドレスに対応するFAT重複情報の「転送先アロケーション物理ページ」が、集約条件(図23A参照)と同じであれば未書込みページ無しと判定し、同じでなければ、未書込みページありと判定する。
【0130】
未書込みページがあれば、その未書込みページにFAT情報を書込むFAT書込み処理を行う(S33)。未書込みページがなければ、集約処理を行った(S34)後、消去済みブロックを取得し(S35)、その消去済みブロックにFAT情報を書込むFAT書込み処理を行う(S33)。
【0131】
図24Bを参照し、上記ステップS33のFAT書込み処理を説明する。ホスト102から受けた論理アドレスに対応する書込み単位配置テーブルを取得する(S131)。具体的には、ホスト102から指定された論理セクタアドレスに基づき、図23Aに示す情報にしたがい、その論理アドレスに該当する論理グループを決定し、その論理グループに対応するFAT重複情報を特定し、読み出す。例えば、ホスト102からの論理セクタアドレスが0x0020であれば、論理グループ0−0のFAT重複情報0を取得する。その取得したFAT重複情報の「転送先物理ブロックアドレス」と「転送先アロケーション物理ページ」で指定されるフラッシュメモリの管理領域から、最新の書込み単位配置テーブル150を読み出す。
【0132】
次に、書込み先を設定する(S132)。対応するFAT重複情報の「転送先物理ブロックアドレス」を書込み先の物理ブロックアドレスとし、「転送先アロケーション物理ページ」に、該当する論理グループの「書込み単位のサイズ」を加算したものを書込み先の物理セクタアドレスとする。
【0133】
有効オフセットを設定する(S133)。対応するFAT重複情報の「転送先アロケーション物理ページ」に、書込み先の物理ページを書込む。
【0134】
直ぐにデータを書込みできるか否かを判断する(S134)。この判断は次のように行う。ホスト102が指定する論理セクタアドレスを、該当する論理グループの「固定オフセット」で割った剰余が1ページ未満(0x0003未満)であれば、直ぐに書込み可と判定する。それ以外は直ぐに書込み不可と判定する。
【0135】
直ぐに書込みができなければ、ホスト102により指定されたアドレスの直前までのデータを、書込み対象ブロックにコピーする(S135)。すなわち、論物変換テーブル106から得られる物理ブロックから、書込み先の物理ブロックへ、該当する論理グループの「固定オフセット」からホストの指定するセクタアドレスの直前までのデータをコピーする。この際、書込み状況に応じて書込み先の物理セクタをインクリメントする。フラッシュメモリ103の管理領域には、書込み単位配置テーブル150を更新して書込む。
【0136】
その後、有効オフセットの設定を行う(S136)。書込み先の物理セクタが、対応する論理グループの「書込み単位のサイズ」で割り切れるときには、FAT重複情報の「転送先アロケーション物理ページ」に書込み先の物理ページを書込む。
【0137】
次に、ホスト102が転送してくるデータを前のステップで設定した書込み先からページ単位で順次書込む(S137)。この際、書込み状況に応じて書込み先の物理セクタアドレスをインクリメントする。フラッシュメモリ103の管理領域には、書込み単位配置テーブル150を更新して書込む。
【0138】
ホスト102からの書込みデータの転送が継続しているか否か判断する(S138)。データ転送が終了すれば、論理グループのデータを書込み対象ブロックにコピーする(S139)。具体的には、論物変換テーブル106から得られる物理ブロックから書込み先の物理ブロックへ、対応する論理グループ内に含まれるデータのうち、未だ書込まれていない部分を全てコピーする。この際、書込み状況に応じて書込み先の物理セクタアドレスをインクリメントする。フラッシュメモリ103の管理領域には、書込み単位配置テーブル150を更新して書込む。
【0139】
データ転送が継続中であれば、次の書込みデータが前回と同じ論理グループか否かを判断し(S140)、同じであれば、次のデータを書込む。異なっていれば、本処理を終了する。
【0140】
2.1.7 書込み動作の具体例
(例1)連続書込みモードの例
図25から図31を参照し、新規書込みから連続書込みモード時の例について説明する。図25において、ホスト102から、論理ブロック0x0010、論理セクタ0x0020〜0x003Fの領域へ新規にデータの書込みが要求されると、重複情報に登録がない(S12)ケースにおいて新規書込み(S24)が行われ、消去済みブロックである物理ブロック100にデータが書込まれる。
【0141】
上記の状況下において重複テーブル107の重複情報107bは次のように設定される。「論理ブロックアドレス」には、ホスト102から指定された論理アドレス0x0010が設定される。「転送先物理ブロックアドレス」には、論物変換テーブルにおいて論理ブロックアドレス0x0010に対応する値である0x0000が設定される。「転送先物理ブロックアドレス」には、データが書込まれる予定の物理ブロック100のブロックアドレスを示す0x0100が設定される。「転送先先頭ページ論理アドレス」には、ホスト102から指定された先頭の論理セクタの値0x0020が設定される。「転送先書込みモード」には「連続」を示す0x0000が設定される。重複情報107bの他のフィールドには初期値が設定される。
【0142】
その後、ホスト102の要求にしたがい論理セクタ0x0020〜0x003F分のデータが物理ブロック100の先頭から書込まれる。そのときの状態が図26に示す状態である。図26において、重複情報107bの「転送先次書込み論理アドレス」には、0x0040が格納され、「転送先次書込み物理アドレス」には、0x0020が格納される。
【0143】
続けて、ホスト102から論理ブロック0x0010、論理セクタ0x0040〜0x007Fの領域へのデータの書込み要求に対して連続書込みが行われる(S22)。物理ブロック100において記録済みの領域と物理的に連続する領域に、論理的に連続するデータが書込まれる。そのときの状態が図27に示す状態である。図27において、重複情報107bの「転送先次書込み論理アドレス」の値は0x0080に更新され、「転送先次書込み物理アドレス」は0x0060に更新されている。
【0144】
図27に示す状態において、ホスト102から不連続な論理アドレスへの書込み要求があると、すなわち、論理セクタアドレス0x00E0〜0x00FFの領域への書込み要求があると、図28に示すように、まず論理セクタアドレス0x0080〜0x00DFにおいて重複情報107bの「転送元物理ブロック」からデータを読み出して「転送先物理ブロック」へとコピーする必要がある。しかし、ここでは、重複情報107bの「転送元物理ブロック」には、無効値を表す0x0000が格納されており、これは、転送元物理ブロックがないことを意味する。よって、ここでは、論理セクタアドレス0x0080〜0x00DFには、所定データ(例えば「FF」)を書込む。その後に続いて、図29に示すように、ホスト102から要求のあった論理セクタアドレス0x00E0〜0x00FFのデータを書込む。このように、本実施形態では、データが書込まれた領域が不連続とならないよう、空き領域にデータを補充した後に指定された領域にデータを書込む処理を行う。なお、上記において、所定データを書込むのは、物理ブロック100に新規にデータが書込まれているためである(注:物理ブロック100の重複情報107bの転送元物理ブロックアドレスには0x0000が格納されており、これは物理ブロック100に新規にデータが書込まれていることを意味する。)。転送元の物理ブロックからの重複書込みの場合は、転送元の物理ブロックの対応する論理アドレスのデータがコピーされる。
【0145】
図29の状態で、集約処理がなされる場合、物理ブロック100の残りの領域に、論理アドレスが連続となるようデータが書込まれる。すなわち、図30に示すように、論理セクタアドレス0x00E0〜0x001Fのデータとして重複情報107bの「転送元物理ブロック」のデータを書込む、ここでは「転送元物理ブロック」が無効値なので所定データが書込まれる。そして、論物変換テーブル106の論理ブロック0x0010に対応する値が物理ブロック100のブロックアドレスを示す0x0100に更新され、重複情報107bが初期化される。
【0146】
上記の例では、書込み周期が32セクタの場合の書込み動作の例を示したが、図31に示すようにセクタ単位での書込み動作の場合も同様である。
【0147】
(例2)上書き書込みモードの例
図32から図34を参照し、新規書込みから上書き書込みモードの場合の例について説明する。図32において、ホスト102から、論理ブロック0x0010、論理セクタ0x00E0〜0x00FFの領域へ新規にデータの書込みが要求されると、消去済みブロックである物理ブロック100にデータが書込まれる。
【0148】
上記の状況下において重複テーブル107の重複情報107bは次のように設定される。「論理ブロックアドレス」には、ホスト102から指定された論理アドレス0x0010が設定される。「転送先物理ブロックアドレス」には、論物変換テーブルにおいて論理ブロックアドレス0x0010に対応する値である0x0000が設定される。「転送先物理ブロックアドレス」には、データが書込まれる予定の物理ブロック100のブロックアドレスを示す0x0100が設定される。「転送先先頭ページ論理アドレス」には、ホスト102から指定された先頭の論理セクタの値0x00E0が設定される。「転送先次書込み論理アドレス」には、0x0100が格納される。「転送先次書込み物理アドレス」には、0x0020が格納される。「転送先書込みモード」には「連続」を示す0x0000が設定される。重複情報107bの他のフィールドには初期値が設定される。
【0149】
さらに、図33に示すように、ホスト102から、前回と同じ論理アドレスにデータの書込み要求があると、物理ブロック100において前回書込まれた領域(ページ0〜ページ7)に続く領域に新たにデータが書込まれる。このとき、重複情報107bの「転送先次書込み論理アドレス」には0x0040に、「転送先有効オフセット物理アドレス」には、0x0020に更新される。また、「転送先書込みモード」には、上書きを意味する0xFFFFが設定される。
【0150】
さらに、図34に示すように、ホスト102から、前回と同じ論理アドレスにデータの書込み要求があると、物理ブロック100において前回書込まれた領域(ページ8〜ページF)に続く領域に新たにデータが書込まれる。このとき、重複情報107bの「転送先次書込み論理アドレス」には0x0060に、「転送先有効オフセット物理アドレス」には、0x0040に更新される。
【0151】
(例3) 上書きされたブロックの集約
図35、図36を参照し、上書き書込みされたブロックの集約処理の例について説明する。図35に示すように物理ブロック100において最後に上書き書込みがなされたデータが、消去済み物理ブロック101にコピーされる。物理ブロック101において、残りの領域(ページ8〜3F)には、重複情報107bの「転送元物理ブロック」から読み出したデータを書込む必要があるが、ここでは重複情報107bの「転送元物理ブロック」は無効値を表す0x0000が格納されているので所定データ(FF)が書込まれる。
【0152】
その後、図36に示すように物理ブロック100が消去される。これに伴い、物理ブロック100に関する重複情報は初期化されるとともに、論物変換テーブル106に物理ブロック101が登録される。
【0153】
(例4) ランダム書込みモードの例
図37を参照し、ランダム書込みモードの例について説明する。図37は、物理ブロック100においてページ0〜ページ17の領域において上書きモードで論理セクタアドレスE0〜FFのデータが順次書込まれた後に(図34の状態に相当する)、ページ18〜ページ1Fの領域において論理セクタアドレス00〜1Fのデータがランダムモードで書込まれた例を示す。
【0154】
重複情報107bの「転送先次書込み物理アドレス」には、消去済み領域の先頭物理アドレスである0x0080が設定される。「転送先有効オフセット物理アドレス」には、ランダムモードで書込まれたデータのオフセット値である0x0060が設定される。「転送先書込みモード」には、ランダム書込み周期である0x0020が設定される。
【0155】
書込み単位配置テーブル150の「書込み単位」にはランダム書込み周期である0x0020が設定される。「書込み単位0先頭アドレス」には、論理アドレス00〜1Fのデータが格納される領域の先頭物理アドレスが格納される。ここでは、ページ18〜ページ1Fに書込まれたデータの先頭アドレスである0x0060が設定される。「書込み単位7先頭アドレス」には、論理アドレスE0〜FFのデータが格納される領域の先頭物理アドレスが格納される。ここでは、ページ10〜ページ17に書込まれたデータの先頭アドレスである0x0040が設定される。「書込み単位1先頭アドレス」等の0xFFFFは、データが転送元のブロックに格納されていることを示す。
【0156】
2.2 読み出し動作
フラッシュメモリ103からの読み出し動作について図38を参照して説明する。
最初に、ホスト102から指定された、読み出し論理アドレスを取得する(S201)。なお、ホスト102の指定する論理ブロックアドレスを「読出し論理ブロックアドレス」とし、論理セクタアドレスを「読出し論理セクタアドレス」とする。
【0157】
ホストの指定する論理アドレスがFAT領域かデータ領域かを判断し、読み出し領域を判定する(S202)。
【0158】
読み出し領域がFAT領域の場合、図43に示す処理を行う(詳細は後述)。読み出し領域がデータ領域の場合、内部変数として重複インデックス(X)に0x0000を設定する(S203)。
【0159】
重複テーブル107のX番目の重複情報(重複情報X)の論理ブロックアドレスを取得(S204)。
【0160】
重複テーブル107から取得した論理ブロックアドレスと、ホストが指定する論理ブロックアドレスとを比較する(S205)。
【0161】
両論理アドレスが異なっていれば、重複インデックス(X)をインクリメントし(S206)、次の重複情報について論理ブロックアドレスを比較する。ここで、重複情報は8個しかないので、重複インデックス(X)の値が8以上になったときは、オーバーフローとし(S207)、通常読み出し処理を行う(S208)。
【0162】
両論理アドレスが一致していれば、重複情報Xの「転送先書込みモード」の値を取得し(S211)、書込みモードを判定し(S212)、書込みモードに応じた読み出し処理(S213、S214、S215)を行う。
【0163】
各読み出し処理(S208、S213、S214、S215)の終了後、読み出し論理ブロックアドレスをブロック単位でインクリメントし、読み出し論理セクタアドレスを0x0000に設定する(S209)。
【0164】
以上の処理を、ホスト102から、読み出しの終了を示すコマンドを受信するまで繰り返す(S210)。以下、各読み出し処理の詳細を説明する。
【0165】
2.2.1 通常読み出し
図39のフローチャートを参照し、通常読み出し処理(S208)を説明する。論物変換テーブル106から、読み出し論理ブロックアドレスに対応する物理ブロックアドレスを取得する(S221)。
【0166】
取得した物理ブロックアドレスで指定される物理ブロックのオフセット情報をフラッシュメモリ103から読み出す(S222)。具体的には、取得した物理ブロックアドレスで指定されるブロックの先頭物理ページの管理領域に書かれている論理セクタアドレスをフラッシュメモリから読み出し、その物理ブロックのオフセット値の情報を得る。
【0167】
読み出し論理セクタからオフセット値を減算することで、読み出し論理セクタアドレスに対応する、読み出し物理セクタアドレスを得る(S223)。読み出し物理セクタアドレスのデータをページ単位で読み出す(S224)。
【0168】
読み出し論理セクタアドレスをページ単位でインクリメントする(S225)。ホスト102からの読み出しが終了したか否かを判断し(S226)、読み出しが終了したときは、読み出し処理全体を終了する。ホスト102からの読み出しが継続しているときは、読み出し論理セクタアドレスのオーバーフローを判断する(S227)。オーバーフローしてなければ、ステップS223に戻り、次のデータを読み出し、オーバーフローしていれば、本通常読み出し処理を終了する。
【0169】
2.2.2 連続読み出し
図40のフローチャートを参照し、連続読み出し処理(S213)を説明する。重複テーブル107における対応の重複情報を取得する(S231)。すなわち、重複情報から、「転送元物理ブロックアドレス」、「転送先物理ブロックアドレス」、「転送先先頭ページ論理アドレス」、「転送先次書込み論理アドレス」の情報を得る。
【0170】
転送元物理ブロックのオフセット値の情報をフラッシュメモリ103から取得する(S232)。データの読み出し先が転送元物理ブロックか転送先物理ブロックかを判定する(S233)。具体的には、読み出し論理セクタアドレスが、「転送先先頭ページ論理アドレス」を含むページの先頭アドレスよりも小さいとき、又は「転送先次書込み論理アドレス」よりも大きいときに、転送元からの読出しと判定する。それ以外は、転送先からの読出しと判定する。
【0171】
転送元からの読み出しの場合、転送元物理ブロックの読み出し物理セクタを得る(S234)。読み出し論理セクタアドレスから、転送元物理ブロックのオフセット値を減算することで、「読出し論理セクタアドレス」に対応するデータが書込まれている物理セクタを得ることができる。
【0172】
取得した転送元物理ブロックの読み出し物理セクタのデータをページ単位で読み出す(S235)。
【0173】
ステップS233において、転送先からの読み出しの場合、転送先物理ブロックの読み出し物理セクタを得る(S239)。読み出し論理セクタアドレスから、転送先先頭ページ論理アドレスを減算することで、「読出し論理セクタアドレス」に対応するデータが書込まれている物理セクタを得ることができる。
【0174】
取得した転送先物理ブロックの読み出し物理セクタのデータをページ単位で読み出す(S240)。
【0175】
ホスト102から読み出しが継続しているか否かを判断し(S236)、終了していれば、読み出し処理全体を終了する。ホスト102からの読み出しが継続していれば、読み出し論理セクタアドレスをページ単位でインクリメントし(S237)、読み出し論理セクタアドレスのオーバーフローを判断する(S238)。オーバーフローしてなければ、ステップS233に戻り、次のデータを読み出し、オーバーフローしていれば、本連続読み出し処理を終了する。
【0176】
2.2.3 上書読み出し
図41のフローチャートを参照し、上書き読み出し処理(S214)を説明する。重複テーブル107における対応の重複情報を取得する(S251)。すなわち、重複情報から、「転送元物理ブロックアドレス」、「転送先物理ブロックアドレス」、「転送先先頭ページ論理アドレス」、「転送先次書込み論理アドレス」、「転送先有効オフセット物理アドレス」の情報を得る。
【0177】
転送元物理ブロックのオフセット値の情報をフラッシュメモリ103から取得する(S252)。データの読み出し先が転送元物理ブロックか転送先物理ブロックかを判定する(S253)。具体的には、読み出し論理セクタアドレスが「転送先先頭ページ論理アドレス」を含むページの先頭アドレスよりも小さいとき、又は「転送先次書込み論理アドレス」よりも大きいときに、転送元からの読出しと判定する。それ以外は、転送先からの読出しと判定する。
【0178】
転送元からの読み出しの場合、転送元物理ブロックの読み出し物理セクタを得る(S254)。
【0179】
取得した転送元物理ブロックの読み出し物理セクタのデータをページ単位で読み出す(S255)。
【0180】
ステップS253において、転送先からの読み出しの場合、転送先物理ブロックの読み出し物理セクタを得る(S259)。読み出し論理セクタアドレスから、転送先先頭ページ論理アドレスを減算し、さらに、その値に「転送先有効オフセット物理アドレス」を加算することで、読出し論理セクタアドレスに対応するデータが書込まれている物理セクタを得ることができる。
【0181】
取得した転送先物理ブロックの読み出し物理セクタのデータをページ単位で読み出す(S260)。
【0182】
その後、ホスト102から読み出しが継続しているか否かを判断し(S256)、終了していれば、読み出し処理全体を終了する。ホスト102からの読み出しが継続していれば、読み出し論理セクタアドレスをページ単位でインクリメントし(S257)、読み出し論理セクタアドレスのオーバーフローを判断する(S258)。オーバーフローしてなければ、ステップS253に戻り、次のデータを読み出し、オーバーフローしていれば、本上書き読み出し処理を終了する。
【0183】
2.2.4 ランダム読み出し
図42のフローチャートを参照し、ランダム読み出し処理(S215)を説明する。重複テーブル107において対応の重複情報を取得する(S271)。すなわち、重複情報から、「転送元物理ブロックアドレス」、「転送先物理ブロックアドレス」、「転送先先頭ページ論理アドレス」、「転送先次書込み論理アドレス」、「転送先書込みモード」、「転送先有効オフセット物理アドレス」の情報を得る。
【0184】
転送元物理ブロックのオフセット値の情報をフラッシュメモリ103から取得する(S272)。
【0185】
「転送先物理ブロックアドレス」と「転送先有効オフセット物理アドレス」で指定されるフラッシュメモリ103の管理領域から、書込み単位配置テーブル150の情報を得る(273)。
【0186】
データの読み出し先が転送元物理ブロックか転送先物理ブロックかを判定する(S274)。この判定は以下のように行う。まず、複数の書込み単位の中から、読み出し論理セクタアドレスを含む1つの書込み単位を決定する。次に、書込み単位配置テーブル150を参照し、求めた書込み単位のデータが格納される領域の先頭物理アドレスを取得する。例えば、書込み単位の値が0x0010h(16セクタ(=4ページ))であれば、1物理ブロック内に16個の書込み単位(書込み単位0〜F)が含まれる。読み出し論理セクタアドレスが0x001Bであれば、読み出し論理セクタアドレスを含む書込み単位は、2番目の書込み単位(書込み単位1)となる。その後、書込み単位配置テーブル150を参照し、書込み単位1の先頭アドレスを取得する。取得した先頭物理アドレスが無効値であれば転送元からの読み出しと判定する。有効値であれば転送先からの読み出しと判定する。
【0187】
転送元からの読み出しの場合、転送元物理ブロックの読み出し物理セクタを得る(S275)。取得した転送元物理ブロックの読み出し物理セクタのデータをページ単位で読み出す(S276)。
【0188】
ステップS274において、転送先からの読み出しの場合、転送先物理ブロックの読み出し物理セクタを得る(S280)。読み出し論理セクタアドレスを「転送先書込みモード」の値で除した剰余に、書込み単位配置テーブル150から求めた先頭物理アドレスを加算することで、読出し論理セクタアドレスに対応する、読み出し物理セクタを得ることができる。取得した転送先物理ブロックの読み出し物理セクタのデータをページ単位で読み出す(S281)。
【0189】
その後、ホスト102から読み出しが継続しているか否かを判断し(S277)、終了していれば、読み出し処理全体を終了する。ホスト102からの読み出しが継続していれば、読み出し論理セクタアドレスをページ単位でインクリメントし(S278)、読み出し論理セクタアドレスのオーバーフローを判断する(S279)。オーバーフローしてなければ、ステップS274に戻り、次のデータを読み出し、オーバーフローしていれば、本ランダム読み出し処理を終了する。
2.2.5 FAT読み出し
図38のフローチャートのステップS202の読み出し領域判定においてFAT領域からの読み出しであると判断されたときに実行される、図43に示す処理について説明する。
【0190】
図43において、論理ブロックアドレスに対応するFAT重複情報が有効か否かを判断する(S291)。具体的には以下のように行う。読出し論理セクタアドレスの値から、以下のようにして対応する重複テーブル107のFAT重複情報を求める。
【表1】
Figure 2005106673
その「転送先物理ブロックアドレス」を取得し、その値の有効/無効を判定する。その値が0x0000(無効値)の時には無効と判定し、0x0000以外の時には有効と判定する。
【0191】
FAT重複情報が無効であるとき、FAT通常読み出し処理を行い(S292)、FAT重複情報が有効であるとき、FAT重複読み出し処理を行う(S293)。
【0192】
その後、読み出し論理ブロックアドレスをブロック単位でインクリメントするとともに、読み出し論理セクタアドレスに0x0000を設定する(S94)。
【0193】
ホスト102からの読み出しが終了したか否かを判定し(S295)、終了していれば、読み出し処理全体を終了する。ホスト102からの読み出しが継続していれば、ステップS202に戻り、次の読み出しを行う。
【0194】
2.2.5.1 FAT通常読み出し
図44のフローチャートを参照し、上記ステップS292のFAT通常読み出し処理を説明する。
【0195】
論物変換テーブル106から、読み出し論理ブロックアドレスに対応する物理ブロックアドレスを取得する(S301)。
【0196】
読み出し論理セクタアドレスから固定オフセット値(図23A参照)を減算することで、部分ブロック書込み領域の読み出し物理セクタアドレスを得る(S302)。読み出し物理セクタアドレスのデータをページ単位で読み出す(S303)。
【0197】
ホスト102からの読み出しが終了したか否かを判断し(S304)、読み出しが終了したときは、読み出し処理全体を終了する。
【0198】
ホスト102からの読み出しが継続しているときは、読み出し論理セクタアドレスをページ単位でインクリメントする(S305)。
【0199】
読み出し論理セクタアドレスのオーバーフローを判断する(S306)。オーバーフローしてなければ、ステップS302に戻り、次のデータを読み出す。オーバーフローしていれば、本FAT通常読み出し処理を終了する。
【0200】
2.2.5.2 FAT重複読み出し
図45のフローチャートを参照し、上記ステップS293のFAT重複読み出し処理を説明する。
【0201】
重複テーブル107において対応の重複情報を取得する(S311)。すなわち、重複情報から、「転送先物理ブロックアドレス」、「転送先アロケーション物理ページ」の情報を得る。
【0202】
「転送先物理ブロックアドレス」と「転送先アロケーション物理ページ」で指定されるフラッシュメモリ103の管理領域から、書込み単位配置テーブル150の情報を得る(312)。
【0203】
データの読み出し先が転送元物理ブロックか転送先物理ブロックかを判定する(S313)。すなわち、読み出し論理セクタアドレスから固定オフセット(図23A参照)を減算し、その減算した値をFAT領域に固有の書込み単位で除す。その商に基づき、書込み単位配置テーブル150を参照し、読み出し論理セクタアドレスに対応する書込み単位の先頭物理アドレスを取得する。その先頭物理アドレスの値が無効値であれば、転送元からの読み出しと判定し、有効値であれば転送先からの読み出しと判定する。
【0204】
転送元からの読み出しの場合、転送元物理ブロックの読み出し物理セクタを得る(S314)。取得した転送先物理ブロックにおける読み出し物理セクタのデータをページ単位で読み出す(S315)。
【0205】
ステップS313において、転送先からの読み出しの場合、転送先物理ブロックの読み出し物理セクタを得る(S319)。読み出し論理セクタアドレスから、固定オフセットを減算し、その値を、FAT領域に固有の書込み単位で除す。その商に基づき、書込み単位配置テーブル150を参照して得た先頭物理アドレスに、剰余を加算することで、読出し論理セクタアドレスに対応する物理セクタが得られる。
【0206】
取得した転送先物理ブロックの読み出し物理セクタのデータをページ単位で読み出す(S320)。
【0207】
その後、ホスト102から読み出しが継続しているか否かを判断し(S316)、終了していれば、読み出し処理全体を終了する。ホスト102からの読み出しが継続していれば、読み出し論理セクタアドレスをページ単位でインクリメントし(S317)、読み出し論理セクタアドレスのオーバーフローを判断する(S318)。オーバーフローしてなければ、ステップS313に戻り、次のデータを読み出し、オーバーフローしていれば、本FAT重複読み出し処理を終了する。
【0208】
本発明は、特定の実施形態について説明されてきたが、当業者にとっては他の多くの変形例、修正、他の利用が明らかである。それゆえ、本発明は、ここでの特定の開示に限定されず、添付の請求の範囲によってのみ限定され得る。なお、本出願は日本国特許出願、特願2004−133112号(2004年4月28日提出)、特願2004−133113号(2004年4月28日提出)、特願2004−138200号(2004年5月7日提出)に関連し、それらの内容は参照することにより本文中に組み入れられる。
【産業上の利用可能性】
【0209】
本発明にかかる不揮発性記憶装置の書込み方法は、ホストからのデータの書込み処理を高速に実行できると共に、処理に必要な物理ブロックの数を少なくすることができ、フラッシュメモリのデータ書換え回数を高めることができるとの特有の効果を有し、不揮発性記憶装置、メモリカード、不揮発性メモリのコントローラ装置等に有用である。
【図面の簡単な説明】
【0013】
【図1A】本発明の不揮発性記憶装置の一実施形態であるメモリカードの構成を示す図
【図1B】論物変換テーブルの構成を示す図
【図2】フラッシュメモリの内部の構成を示す図
【図3】フラッシュメモリの物理ブロックの構成を示す図
【図4】メモリカードの内部における論理的なデータの管理を示した図
【図5】重複テーブルの構成を示した図
【図6】(a)FAT領域に対する重複情報の構成を示す図、(b)データ領域に対する重複情報の構成を示す図
【図7】フラッシュメモリの記憶領域のページのデータフォーマットを示す図
【図8】書込み単位配置テーブルの構成を示す図
【図9】メモリカードのフラッシュメモリへの書込み処理を示すフローチャート
【図10】メモリカードのフラッシュメモリへの書込み処理を示すフローチャート(図9のつづき)
【図11A】従来の書込み処理を説明するための図
【図11B】従来の書込み処理を説明するための図
【図11C】本発明の連続書込み処理を説明するための図
【図12】連続書込み処理のフローチャート
【図13】上書き書込み処理を説明するための図
【図14】上書き書込み処理のフローチャート
【図15】ランダム書込み処理のフローチャート
【図16】重複テーブルの登録位置の決定処理のフローチャート
【図17】新規書込み処理のフローチャート
【図18】連続モードの場合の集約処理を説明するための図
【図19】上書きモード、ランダムモードの場合の集約処理を説明するための図
【図20】集約処理のフローチャート
【図21】集約処理のフローチャート(図20の続き)
【図22】FAT情報に対する論理グループの割当てについて説明した図
【図23A】FAT情報に関する種々の管理条件をまとめて示した図
【図23B】FAT領域変換テーブルのデータ構成例を示す図
【図24A】FAT2に対する論理グループ0−2に対応する物理ブロックの領域構成を示した図
【図24B】FAT書込み処理のフローチャート
【図25】連続書込みモード時の動作の具体例を説明した図
【図26】連続書込みモード時の動作の具体例を説明した図
【図27】連続書込みモード時の動作の具体例を説明した図
【図28】連続書込みモード時の動作の具体例を説明した図
【図29】連続書込みモード時の動作の具体例を説明した図
【図30】連続書込みモード時の動作の具体例を説明した図
【図31】連続書込みモード時の動作の具体例を説明した図
【図32】上書き書込みモード時の動作の具体例を説明した図
【図33】上書き書込みモード時の動作の具体例を説明した図
【図34】上書き書込みモード時の動作の具体例を説明した図
【図35】上書き書込みされたブロックの集約処理の具体例を説明した図
【図36】上書き書込みされたブロックの集約処理の具体例を説明した図
【図37】ランダム書込みモード時の動作の具体例を説明した図
【図38】メモリカードのフラッシュメモリからの読み出し処理を示すフローチャート
【図39】通常読み出し処理を示すフローチャート
【図40】連続読み出し処理を示すフローチャート
【図41】上書き読み出し処理を示すフローチャート
【図42】ランダム読み出し処理を示すフローチャート
【図43】メモリカードのフラッシュメモリからの読み出し処理を示すフローチャート(図38のつづき)
【図44】FAT通常読み出し処理を示すフローチャート
【図45】FAT重複読み出し処理を示すフローチャート
【符号の説明】
【0014】
101 メモリカード
102 ホスト
103 フラッシュメモリ
104 コントローラ
105 消去済みテーブル
106 論物変換テーブル
107 重複テーブル
107a FAT領域に対する重複情報
107b データ領域に対する重複情報
108 FAT領域変換テーブル
150 書込み単位配置テーブル

Claims (40)

  1. ホストからの論理アドレスを受けてデータの書込み、読み出しが可能な不揮発性記憶装置であって、
    物理アドレスによりデータの書込み、読み出しが行われ、複数の物理ブロックから構成される不揮発性メモリと、
    論理アドレスと物理アドレスの対応情報を、所定の管理単位領域毎に論理グループアドレスと、1つ以上の物理ブロックからなる物理グループのアドレスとの対応情報をとして格納する論物変換テーブルと、
    前記論物変換テーブルで対応付けられている論理グループアドレスと同一の論理グループアドレスを持つデータについて、前記管理単位領域のサイズよりも小さなサイズのデータの論理アドレスと物理アドレスの対応情報として格納する重複テーブルと、
    前記不揮発性記憶装置の動作制御を行うコントローラとを備え、
    前記コントローラは、一の管理単位領域に書込み済みのデータと同一の論理アドレスを持つデータを、他の管理単位領域に重複して書込むことを許可し、その重複して書込むための書込みモードを複数有し、前記ホストからの論理アドレスの変化の状況に応じて、前記論物変換テーブルの情報を更新することなく、前記書込みモードを選択的に切り替える、
    不揮発性記憶装置。
  2. 前記コントローラは、ホストからの論理アドレスと、その論理アドレスに対応する重複テーブルの情報とに基いて前記書込みモードを切り替える、請求項1記載の不揮発性記憶装置。
  3. 重複テーブルは、重複配置されるデータの論理グループアドレスに対応する所定情報を、複数の論理グループアドレスに対応して格納するための複数のレコードを有する、請求項1記載の不揮発性記憶装置。
  4. 前記書込みモードは、同一の論理グループアドレスに対する複数回のホストからの書込みコマンドに対して、前記管理単位よりも小さな書込み単位と等しいサイズのデータを書込むランダムモードを含む、請求項1記載の不揮発性記憶装置。
  5. 前記不揮発性メモリは、前記書込み単位毎のデータについて、不揮発性メモリ内における配置情報を格納する、請求項4記載の不揮発性記憶装置。
  6. 前記配置情報は、最後に書込まれた書込み単位のデータとともに前記不揮発性メモリに書込まれる、請求項5記載の不揮発性記憶装置。
  7. 前記配置情報は、前記不揮発性メモリの管理領域に書込まれる、請求項5記載の不揮発性記憶装置。
  8. 前記配置情報は、前記書込み単位のデータが書込まれた領域の物理アドレス位置を直接的に示す情報と、前記書込み単位毎のデータが重複して配置されていないことを示す情報とを含む、請求項5記載の不揮発性記憶装置。
  9. 前記重複テーブルは、重複して配置されたデータが格納された不揮発性メモリ内の領域の前記配置情報が格納された物理位置の情報を含む、請求項4記載の不揮発性記憶装置。
  10. 前記コントローラはランダム書込みを行うときに、ホストからの書込みデータのサイズが前記書込み単位よりも小さいときは、書込みデータの合計サイズが前記書込み単位のサイズとなるように不足分のデータを補充してデータを書込む、請求項4記載の不揮発性記憶装置。
  11. 前記書込みモードは、同一の論理グループアドレスに対する複数回のホストの書込みコマンドに対して、前記管理単位よりも小さな書込み単位のサイズで、かつ、前回に書込まれたデータと同じ論理アドレス範囲を持つデータを書込む上書きモードを含む、請求項1記載の不揮発性記憶装置。
  12. 前記書込みモードはさらに、複数回のホストからの書込みコマンドに対して、前記管理単位よりも小さな書込み単位と等しいサイズのデータをコマンド毎に書込むランダムモードを含み、
    前記コントローラは、上書きモードでの書込み中にホストから指定された論理アドレスが、続けて上書きモードで書込みを行うことができないアドレス範囲にある場合に、前記ランダムモードでの書込みを行う、請求項11記載の不揮発性記憶装置。
  13. 前記重複テーブルは、重複して配置されたデータに関して、最初の論理アドレスと、最後の論理アドレスと、最後に上書きモードで書込まれた前記書込み単位のデータの物理位置情報とを含む、請求項11記載の不揮発性記憶装置。
  14. 前記コントローラは、前記ホストから指定されたアドレスが、前記重複テーブルに格納された情報の最初のアドレス以上で、かつ、最後のアドレスよりも小さい値である場合に、上書きモードで書込みを行う、請求項11記載の不揮発性記憶装置。
  15. 前記コントローラは上書き書込みを行うときに、前記ホストからの書込みデータが前記書込み単位よりも小さいときには、書込みデータの合計サイズが前記書込み単位のサイズとなるように不足分のデータを補充してデータを書込む、請求項11記載の不揮発性記憶装置。
  16. 前記書込みモードは、同一の論理グループアドレスに対する複数回のホストからの書込みコマンドに対して、前記管理単位領域においてデータを論理アドレス順に連続して書込む連続モードを含む、請求項1記載の不揮発性記憶装置。
  17. 前記コントローラは、前記管理単位領域において、論理アドレスのオフセットを持った状態でデータを書込む、請求項16記載の不揮発性記憶装置。
  18. 前記論理アドレスのオフセットの情報を前記不揮発性メモリに格納する、請求項17記載の不揮発性記憶装置。
  19. 前記書込みモードはさらに、複数回のホストの書込みコマンドに対して、前記管理単位よりも小さな書込み単位と等しいサイズで、かつ、前回に書込まれたデータと同じ論理アドレス範囲を持つデータをコマンド毎に書込む上書きモードを含み、
    前記コントローラは、連続モードでの書込み中にホストから指定された論理アドレスが、直前の連続モードでの書込み時と同じ管理単位領域の論理アドレスではあるが、続けて連続モードで書込みを行うことができないアドレス範囲にある場合に、前記上書きモードで書込みを行う、請求項16記載の不揮発性記憶装置。
  20. 前記書込みモードはさらに、複数回のホストからの書込みコマンドに対して、前記管理単位よりも小さな書込み単位と等しいサイズのデータをコマンド毎に書込むランダムモードを含み、
    前記コントローラは、連続モードでの書込み中にホストから指定された論理アドレスが、直前の連続モードでの書込み時と同じ管理単位の論理アドレスではあるが、続けて連続モードで書込みを行うことができないアドレス範囲にある場合に、前記ランダムモードで書込みを行う、請求項16記載の不揮発性記憶装置。
  21. 前記重複テーブルは、重複して配置されたデータに関しての最初の論理アドレスと、最後の論理アドレスとを含む、請求項16記載の不揮発性記憶装置。
  22. 前記コントローラは、前記ホストから指定する論理アドレスが重複テーブルに格納された最後の論理アドレス情報よりも大きいときに、続けて連続書込みモードで書込みを行う、請求項21記載の不揮発性記憶装置。
  23. 前記書込みモードはさらに、複数回のホストの書込みコマンドに対して、前記管理単位よりも小さな書込み単位と等しいサイズで、かつ、前回に書込まれたデータと同じ論理アドレス範囲を持つデータをコマンド毎に書込む上書きモードを含み、
    前記コントローラは、前記ホストから指定するアドレスが重複テーブルに格納された最初のアドレス以上で、かつ、最後のアドレスよりも小さいときに、前記上書きモードに移行して書込みを行う、請求項21記載の不揮発性記憶装置。
  24. 前記書込みモードはさらに、複数回のホストからの書込みコマンドに対して、前記管理単位よりも小さな書込み単位と等しいサイズのデータをコマンド毎に書込むランダムモードを含み、
    前記コントローラは、前記ホストから指定するアドレスが重複テーブルに格納された最初のアドレス情報よりも小さいときに、前記ランダムモードに移行して書込みを行う、請求項21記載の不揮発性記憶装置。
  25. 前記コントローラは、前記管理単位領域内の最後の論理アドレスのデータを書込んだ後に、前記管理単位領域内に未書込みの領域があるときは、前記管理単位領域内の最初の論理アドレスのデータから順に前記未書込みの領域に書込む、請求項16記載の不揮発性記憶装置。
  26. 前記コントローラは、所定範囲に含まれる論理アドレスに対しては、前記所定範囲に含まれない論理アドレスに対する書込みモードとは異なる書込みモードを選択する、請求項1記載の不揮発性記憶装置。
  27. 前記重複テーブルは、前記所定範囲に含まれる論理グループの個々に対応して専用のレコードを有する、請求項26記載の不揮発性記憶装置。
  28. 前記論物変換テーブルは、前記所定範囲に含まれる論理アドレスに対応する情報と、前記所定範囲に含まれない論理アドレスに対応する情報とで構成が異なる、請求項26記載の不揮発性記憶装置。
  29. 前記所定範囲に含まれる論理アドレスの論理グループのサイズは、前記所定範囲に含まれない論理グループのサイズよりも、小さいサイズで管理単位領域とする、請求項26記載の不揮発性記憶装置。
  30. 前記所定範囲に含まれる論理アドレスの論理グループのサイズが、論理グループにより異なるサイズである、請求項26記載の不揮発性記憶装置。
  31. 前記所定範囲は、ファイルシステムにより管理されるファイル管理情報が格納される領域を含む範囲に設定される、請求項26記載の不揮発性記憶装置。
  32. 前記所定範囲の大きさは前記不揮発性記憶装置の容量に応じて異なる値とする、請求項31記載の不揮発性記憶装置。
  33. 前記論理グループに対応付けられた前記管理単位領域は、最初に前記管理単位のデータが書込まれる第1の領域と、前記第1の領域に書込まれた管理単位のデータと同一の論理アドレスを持つデータを前記管理単位よりも小さなサイズで重複して書込む第2の領域とを含む、請求項26記載の不揮発性記憶装置。
  34. 前記第1の領域と前記第2の領域が、前記不揮発性メモリの同じ物理ブロック内に含まれる、請求項33記載の不揮発性記憶装置。
  35. 一つの論理グループに対する前記第2の領域を複数の管理単位領域に配置する、請求項33記載の不揮発性記憶装置。
  36. ホストからの論理アドレスを受けてデータの書込み、読み出しが可能な不揮発性記憶装置に対するデータ書込み方法であって、
    一の管理単位領域に書込み済みのデータと同じ論理アドレスを持つデータを他の管理単位領域に重複して書込むための書込みモードを複数有し、
    前記ホストから、既に書込み済みのデータと同じ論理アドレスを持つデータの書込みコマンドを受けたときに、該書込み要求のあったデータを、前記書込み済みデータの管理単位領域とは別の管理単位領域に重複して書込み、前記別の管理単位領域に書込んだデータの論理アドレスと物理アドレスを対応づけて記憶し、
    その後、続けて前記ホストから書込みコマンドを受けたときに、前記ホストからの論理アドレスの変化の状況に応じて前記書込みモードを選択的に切り替える、
    データ書込み方法。
  37. 前記書込みモードは、複数回のホストからの書込みコマンドに対して、前記管理単位よりも小さな書込み単位と等しいサイズのデータをコマンド毎に書込むランダムモードを含む、請求項36記載のデータ書込み方法。
  38. 前記書込みモードは、複数回のホストの書込みコマンドに対して、前記管理単位よりも小さな書込み単位と等しいサイズで、かつ、前回に書込まれたデータと同じ論理アドレス範囲を持つデータをコマンド毎に書込む上書きモードを含む、請求項36記載のデータ書込み方法。
  39. 前記書込みモードは、複数回のホストからの書込みコマンドに対して、前記管理単位領域においてデータを論理アドレス順に連続して書込む連続モードを含む、請求項36記載のデータ書込み方法。
  40. さらに、所定範囲内の論理アドレスを複数のアドレス領域に分割し、分割したアドレス領域の各々に対して1つの論理グループを割当て、各論理グループと前記管理単位領域とを1対1に対応させる、請求項36記載のデータ書込み方法。
JP2006512845A 2004-04-28 2005-04-28 不揮発性記憶装置及びデータ書込み方法 Active JP4773342B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006512845A JP4773342B2 (ja) 2004-04-28 2005-04-28 不揮発性記憶装置及びデータ書込み方法

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
JP2004133113 2004-04-28
JP2004133113 2004-04-28
JP2004133112 2004-04-28
JP2004133112 2004-04-28
JP2004138200 2004-05-07
JP2004138200 2004-05-07
JP2006512845A JP4773342B2 (ja) 2004-04-28 2005-04-28 不揮発性記憶装置及びデータ書込み方法
PCT/JP2005/008188 WO2005106673A1 (ja) 2004-04-28 2005-04-28 不揮発性記憶装置及びデータ書込み方法

Publications (2)

Publication Number Publication Date
JPWO2005106673A1 true JPWO2005106673A1 (ja) 2007-12-13
JP4773342B2 JP4773342B2 (ja) 2011-09-14

Family

ID=35241847

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006512845A Active JP4773342B2 (ja) 2004-04-28 2005-04-28 不揮発性記憶装置及びデータ書込み方法

Country Status (6)

Country Link
US (1) US7877569B2 (ja)
EP (2) EP1746510A4 (ja)
JP (1) JP4773342B2 (ja)
KR (1) KR20070005730A (ja)
TW (1) TW200608201A (ja)
WO (1) WO2005106673A1 (ja)

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4751163B2 (ja) 2005-09-29 2011-08-17 株式会社東芝 メモリシステム
JP2007148799A (ja) * 2005-11-28 2007-06-14 Orion Denki Kk 電子機器及びそのデータ処理方法
JP4676378B2 (ja) * 2006-05-18 2011-04-27 株式会社バッファロー データ記憶装置およびデータ記憶方法
JP4182993B2 (ja) * 2006-06-30 2008-11-19 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
KR100849221B1 (ko) 2006-10-19 2008-07-31 삼성전자주식회사 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치
US7657701B2 (en) * 2007-01-03 2010-02-02 The General Electric Company System and method of flash memory wear leveling using distributed write cycles
JP2008176727A (ja) * 2007-01-22 2008-07-31 Denso Corp 情報処理装置、ナビゲーション装置及びプログラム
JPWO2008102610A1 (ja) * 2007-02-23 2010-05-27 パナソニック株式会社 メモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システム
US7975109B2 (en) 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
WO2008150927A2 (en) * 2007-05-30 2008-12-11 Schooner Information Technology System including a fine-grained memory and a less-fine-grained memory
US8572307B2 (en) 2007-07-20 2013-10-29 Panasonic Corporation Memory controller, memory card, and nonvolatile memory system
US8073884B2 (en) * 2007-12-20 2011-12-06 Hewlett-Packard Development Company, L.P. System and method to derive high level file system information by passively monitoring low level operations on a FAT file system
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
US8099544B2 (en) * 2008-02-29 2012-01-17 Kabushiki Kaisha Toshiba Information processing apparatus and nonvolatile semiconductor memory drive
US8229945B2 (en) 2008-03-20 2012-07-24 Schooner Information Technology, Inc. Scalable database management software on a cluster of nodes using a shared-distributed flash memory
US8732386B2 (en) 2008-03-20 2014-05-20 Sandisk Enterprise IP LLC. Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory
TWI398770B (zh) * 2008-07-08 2013-06-11 Phison Electronics Corp 用於快閃記憶體的資料存取方法、儲存系統與控制器
FR2933790B1 (fr) * 2008-07-10 2010-09-10 Oberthur Technologies Gestion d'une memoire physique partitionnee dans une entite electronique : procede et dispositif.
US8285970B2 (en) 2008-11-06 2012-10-09 Silicon Motion Inc. Method for managing a memory apparatus, and associated memory apparatus thereof
JP5175703B2 (ja) 2008-12-11 2013-04-03 株式会社東芝 メモリデバイス
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
US9110594B2 (en) * 2009-11-04 2015-08-18 Seagate Technology Llc File management system for devices containing solid-state media
JP2011107851A (ja) * 2009-11-13 2011-06-02 Toshiba Corp メモリシステム
US8868487B2 (en) 2010-04-12 2014-10-21 Sandisk Enterprise Ip Llc Event processing in a flash memory-based object store
US8725951B2 (en) 2010-04-12 2014-05-13 Sandisk Enterprise Ip Llc Efficient flash memory-based object store
US8856593B2 (en) 2010-04-12 2014-10-07 Sandisk Enterprise Ip Llc Failure recovery using consensus replication in a distributed flash memory system
US9164554B2 (en) 2010-04-12 2015-10-20 Sandisk Enterprise Ip Llc Non-volatile solid-state storage system supporting high bandwidth and random access
US9047351B2 (en) 2010-04-12 2015-06-02 Sandisk Enterprise Ip Llc Cluster of processing nodes with distributed global flash memory using commodity server technology
US8429391B2 (en) * 2010-04-16 2013-04-23 Micron Technology, Inc. Boot partitions in memory devices and systems
US8666939B2 (en) 2010-06-28 2014-03-04 Sandisk Enterprise Ip Llc Approaches for the replication of write sets
US8694733B2 (en) 2011-01-03 2014-04-08 Sandisk Enterprise Ip Llc Slave consistency in a synchronous replication environment
JP5349515B2 (ja) * 2011-03-14 2013-11-20 株式会社東芝 バッファ管理装置、バッファ管理方法及び記憶装置
US8874515B2 (en) 2011-04-11 2014-10-28 Sandisk Enterprise Ip Llc Low level object version tracking using non-volatile memory write generations
JP5708216B2 (ja) * 2011-05-09 2015-04-30 ソニー株式会社 フラッシュメモリ装置、メモリ制御装置、メモリ制御方法、ストレージシステム
JP5915079B2 (ja) * 2011-10-27 2016-05-11 富士通株式会社 書込制御プログラム、書込制御方法、書込制御装置およびシステム
US8593866B2 (en) 2011-11-11 2013-11-26 Sandisk Technologies Inc. Systems and methods for operating multi-bank nonvolatile memory
US9417998B2 (en) 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US9135064B2 (en) 2012-03-07 2015-09-15 Sandisk Enterprise Ip Llc Fine grained adaptive throttling of background processes
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
TWI454913B (zh) * 2012-06-26 2014-10-01 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
KR20140099737A (ko) 2013-02-04 2014-08-13 삼성전자주식회사 존-기반 조각모음 방법 및 그것을 이용한 유저 장치
KR102108839B1 (ko) 2013-06-12 2020-05-29 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 사용자 장치 및 그것의 데이터 쓰기 방법
JP6160294B2 (ja) * 2013-06-24 2017-07-12 富士通株式会社 ストレージシステム、ストレージ装置及びストレージシステムの制御方法
US10002048B2 (en) * 2014-05-15 2018-06-19 International Business Machines Corporation Point-in-time snap copy management in a deduplication environment
KR20160015793A (ko) * 2014-07-31 2016-02-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
CN104407933B (zh) * 2014-10-31 2018-10-02 华为技术有限公司 一种数据的备份方法及装置
CN104407936B (zh) * 2014-11-18 2017-08-18 华为数字技术(成都)有限公司 一种数据快照方法及装置
KR20170015708A (ko) * 2015-07-30 2017-02-09 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 프로그램 방법
US10019198B2 (en) * 2016-04-01 2018-07-10 Intel Corporation Method and apparatus for processing sequential writes to portions of an addressable unit
US10031845B2 (en) * 2016-04-01 2018-07-24 Intel Corporation Method and apparatus for processing sequential writes to a block group of physical blocks in a memory device
US10282094B2 (en) * 2017-03-31 2019-05-07 Samsung Electronics Co., Ltd. Method for aggregated NVME-over-fabrics ESSD
JP2020154584A (ja) 2019-03-19 2020-09-24 キオクシア株式会社 メモリシステム
JP6727365B1 (ja) * 2019-03-27 2020-07-22 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
US11093170B2 (en) * 2019-04-02 2021-08-17 EMC IP Holding Company LLC Dataset splitting based on workload footprint analysis
CN110795040A (zh) * 2019-10-28 2020-02-14 浙江互灵科技有限公司 简易文件管理系统及其实现方法
TWI721660B (zh) * 2019-11-22 2021-03-11 財團法人工業技術研究院 控制資料讀寫裝置與方法
US11200162B2 (en) * 2020-04-28 2021-12-14 Western Digital Technologies, Inc. Condensing logical to physical table pointers in SSDs utilizing zoned namespaces
KR20220052152A (ko) * 2020-10-20 2022-04-27 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
KR102546740B1 (ko) * 2020-10-20 2023-06-26 성균관대학교산학협력단 스토리지 장치, 스토리지 장치의 동작 방법, 및 스토리지 장치를 포함하는 스토리지 시스템
KR20220060372A (ko) * 2020-11-04 2022-05-11 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US20230342049A1 (en) * 2022-04-21 2023-10-26 Micron Technology, Inc. Reading a master boot record for a namespace using a regular read operation
US20230376228A1 (en) * 2022-05-17 2023-11-23 Micron Technology, Inc. Techniques for sequential access operations
CN117687580A (zh) * 2024-02-02 2024-03-12 深圳曦华科技有限公司 一种Flash的数据管理系统、微控制单元以及车辆

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3171901B2 (ja) 1992-02-05 2001-06-04 セイコーインスツルメンツ株式会社 不揮発性メモリカードの書換え方法
US5745418A (en) * 1996-11-25 1998-04-28 Macronix International Co., Ltd. Flash memory mass storage system
JP3588231B2 (ja) 1997-08-04 2004-11-10 東京エレクトロンデバイス株式会社 データ処理システム及びブロック消去型記憶媒体
WO1999031592A1 (fr) * 1997-12-16 1999-06-24 Tdk Corporation Systeme de memoire flash
US6282605B1 (en) 1999-04-26 2001-08-28 Moore Computer Consultants, Inc. File system for non-volatile computer memory
US6377500B1 (en) * 1999-11-11 2002-04-23 Kabushiki Kaisha Toshiba Memory system with a non-volatile memory, having address translating function
JP3793868B2 (ja) 1999-11-25 2006-07-05 カシオ計算機株式会社 フラッシュメモリ管理装置及び記録媒体
JP3621051B2 (ja) 2001-04-26 2005-02-16 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
KR100389867B1 (ko) 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
DE10227255B4 (de) 2002-06-19 2008-06-26 Hyperstone Gmbh Verfahren zur Wiederherstellung von Verwaltungsdatensätzen eines blockweise löschbaren Speichers
US7526599B2 (en) 2002-10-28 2009-04-28 Sandisk Corporation Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system
JP3766396B2 (ja) 2003-04-21 2006-04-12 株式会社東芝 メモリ制御装置およびメモリ制御方法
US20050144363A1 (en) * 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
US7433993B2 (en) * 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
WO2005066793A2 (en) * 2003-12-30 2005-07-21 Sandisk Corporation Non-volatile memory and method with non-sequential update block management

Also Published As

Publication number Publication date
EP2977906A1 (en) 2016-01-27
US7877569B2 (en) 2011-01-25
TW200608201A (en) 2006-03-01
EP1746510A4 (en) 2008-08-27
EP1746510A1 (en) 2007-01-24
US20080109589A1 (en) 2008-05-08
TWI364658B (ja) 2012-05-21
JP4773342B2 (ja) 2011-09-14
WO2005106673A1 (ja) 2005-11-10
KR20070005730A (ko) 2007-01-10

Similar Documents

Publication Publication Date Title
JP4773342B2 (ja) 不揮発性記憶装置及びデータ書込み方法
USRE46404E1 (en) Flash memory management method
US7487303B2 (en) Flash memory device and associated data merge method
US7818495B2 (en) Storage device and deduplication method
KR100980309B1 (ko) 호스트 디바이스 및 메모리 시스템
JP4633802B2 (ja) 不揮発性記憶装置及びデータ読み出し方法及び管理テーブル作成方法
JP4611024B2 (ja) ブロック内のページをグループ化する方法及び装置
US8386746B2 (en) Storage unit management methods and systems
KR101465789B1 (ko) 페이지 복사 횟수를 줄일 수 있는 메모리 카드 시스템의쓰기 및 병합 방법
US20080120488A1 (en) Apparatus and method of managing nonvolatile memory
KR101663667B1 (ko) 플래시 메모리의 주소 매핑에 의한 데이터 관리 방법 및 장치
TW200417856A (en) Method and apparatus for splitting a logical block
JP3827682B2 (ja) フラッシュメモリ、そのためのマッピング制御装置及び方法
KR20060090087A (ko) 복수의 사상 기법들을 채용한 적응형 플래시 메모리 제어장치 및 그것을 포함한 플래시 메모리 시스템
JP2008009527A (ja) メモリシステム
US20100318726A1 (en) Memory system and memory system managing method
US20240069775A1 (en) Compaction of a Logical-to-Physical Table for Zoned Namespace Nonvolatile Memory
US20240070086A1 (en) Address Translation for Zoned Namespace Nonvolatile Memory Using a Compacted Logical-to-Physical Table
JP2008299513A (ja) データ記憶装置およびその制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080206

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110308

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110425

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110623

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

Free format text: PAYMENT UNTIL: 20140701

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4773342

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150