[go: up one dir, main page]

JP2010026933A - メモリシステム、ホスト装置 - Google Patents

メモリシステム、ホスト装置 Download PDF

Info

Publication number
JP2010026933A
JP2010026933A JP2008190022A JP2008190022A JP2010026933A JP 2010026933 A JP2010026933 A JP 2010026933A JP 2008190022 A JP2008190022 A JP 2008190022A JP 2008190022 A JP2008190022 A JP 2008190022A JP 2010026933 A JP2010026933 A JP 2010026933A
Authority
JP
Japan
Prior art keywords
data
memory
logical address
write
file
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.)
Pending
Application number
JP2008190022A
Other languages
English (en)
Inventor
Takafumi Ito
隆文 伊藤
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2008190022A priority Critical patent/JP2010026933A/ja
Priority to US12/403,815 priority patent/US8484430B2/en
Publication of JP2010026933A publication Critical patent/JP2010026933A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0608Saving storage space on storage systems
    • 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/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • 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
    • 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/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

【課題】処理を高速化でき、利便性を向上できるメモリシステムおよびそのホスト装置を提供する。
【解決手段】メモリシステム2は、不揮発性メモリ6と、前記不揮発性メモリを制御するメモリコントローラ7とを具備し、前記メモリコントローラ7は、外部1からのコマンドに応じて、不要となった前記不揮発性メモリのデータを消去し、前記不要となったデータを論理アドレスの一部に割り当てられたメモリ領域に割り当てなおすことで、前記論理アドレスの最大値を拡張するように制御する。
【選択図】 図25

Description

この発明は、メモリシステム、ホスト装置に関し、例えば、UDFファイルシステムのような追記型ファイルシステムにフォーマットされたメモリカードおよびこれに対応するホスト装置等に適用されるものである。
NAND型フラッシュメモリ等の不揮発性記憶デバイスを搭載したメモリシステム(例えば、SDカード(登録商標)等)に対して、効率よくデータ書き込みを行うための手段として、ホスト装置からのUDF−VAT方式のような追記型ファイルシステムを応用するものが提案されている(例えば、特許文献1参照)。
ここで、FATなどの上書き型のファイルシステムでは、不要なファイルを削除すれば記憶領域の空き容量が増える。
しかしながら、UDF−VAT方式のような追記型ファイルシステムでは、ファイルを削除した場合も、”当該ファイルを削除した”という情報が不揮発性メモリに追記されることになる。このため、ファイルを削除しただけでは記憶領域の空き領域を大きくすることができない。
さらに、追記型ファイルシステムにおいて、ファイルを削除して記憶領域の空き領域を広げるためには、ファイル削除後に、削除されたファイルのデータが記憶されている領域より後のアドレスのデータを順次書き換えて、削除領域のアドレスに不要な領域がないように詰めるとともに、ファイル情報のポインタをかき変えていく必要がある(いわゆるガベージコレクション)。その結果、処理に時間がかかって使い勝手が悪い、という問題がある。さらに、NAND型フラッシュメモリへの書き込み回数も多くなるという点で不利があった。
上記のように、従来のメモリシステムおよびそのホスト装置では、処理の高速化に不利であり、利便性が低減するという問題があった。
特開2006−40264号公報
この発明は、処理を高速化でき、利便性を向上できるメモリシステムおよびそのホスト装置を提供する。
この発明の一態様によれば、不揮発性メモリと、前記不揮発性メモリを制御するメモリコントローラとを具備し、前記メモリコントローラは、外部からのコマンドに応じて、不要となった前記不揮発性メモリのデータを消去し、前記不要となったデータを論理アドレスの一部に割り当てられたメモリ領域を割り当てなおすことで、前記論理アドレスの最大値を拡張するように制御するメモリシステムを提供できる。
この発明の一態様によれば、不揮発性メモリと、前記不揮発性メモリを制御するメモリコントローラとを具備し、前記メモリコントローラは、外部から与えられる論理アドレス範囲情報としてのコマンドに応じて、前記論理アドレス領域の一部または全部に割り当てられたメモリ領域を割り当てなおすことで、前記論理アドレスの最大値を拡張することように制御するメモリシステムを提供できる。
この発明の一態様によれば、追記型ファイルシステムにフォーマットされたメモリシステムのホスト装置であって、ファイル削除後に、前記メモリシステムに対して最大論理アドレス範囲を拡張するコマンドを前記メモリシステムに出し、拡張後の前記最大論理アドレス範囲の値に基づいて、使用可能な空きメモリ領域を再計算するホスト装置を提供できる。
この発明によれば、処理を高速化でき、利便性を向上できるメモリシステムおよびそのホスト装置が得られる。
以下、この発明の実施形態について図面を参照して説明する。尚、この説明においては、全図にわたり共通の部分には共通の参照符号を付す。なお、以下、本発明の実施形態に係るメモリシステムおよびそのホスト装置の一例として、メモリカードおよびそのホスト装置を一例に挙げて説明を行う。
[第1の実施形態(ファイル削除後にメモリ容量を増大させる一例)]
本第1の実施形態はファイル削除後にメモリ容量を増大させる一例に係るメモリシステムおよびそのホスト装置に関するものである。以下、図1乃至図29を参照して、[1]構成、[2]動作、[3]効果、の順で説明する。
[1]構成
[1−1]全体の構成
図1は、本発明の一実施形態に係るメモリシステムおよびホスト装置の主要部を概略的に示す機能ブロック図である。各機能ブロックは、ハードウェア、コンピュータソフトウェア、のいずれかまたは両者の組み合わせとして実現することができる。このため、各ブロックは、これらのいずれでもあることが明確となるように、概してそれらの機能の観点から以下に説明される。このような機能が、ハードウェアとして実行されるか、またはソフトウェアとして実行されるかは、具体的な実施態様またはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、種々の方法でこれらの機能を実現し得るが、そのような実現を決定することは本発明の範疇に含まれるものである。
図1において、ホスト装置1は、挿入されるメモリカード2に対してアクセスを行うためのハードウェアおよびソフトウェア(システム)を備えている。ホスト装置1は、アプリケーション、オペレーティングシステム等のソフトウェアを備えている。ソフトウェア3は、ユーザから、メモリカード2へのデータの書き込み、メモリカード2からのデータの読み出しを指示される。ソフトウェア3は、書き込みおよび読み出しをファイルシステム4に指示する。
ファイルシステム4は、管理対象の記憶媒体に記録されているファイル(データ)を管理するための仕組みであり、記憶媒体の記憶領域内に管理情報を記録し、この管理情報を用いてファイルを管理する。ファイルシステム4では、記憶媒体におけるファイルやフォルダなどのディレクトリ情報の作成方法、ファイルやフォルダなどの移動方法や削除方法、データの記録方式、管理情報が記録されている領域の場所や利用方法などが定められている。ファイルシステム4は、FATファイルシステムを基礎としており、本明細書を通じた動作を実行可能に構成されており、具体的な動作に関しては適宜説明する。
ホスト装置1は、SDインタフェース5を有する。SDインタフェース5は、ホスト装置1とメモリカード2(コントローラ7)との間のインタフェース処理を行うのに必要なハードウェア、ソフトウェアからなる。ホスト装置1は、SDインタフェース5を介してメモリカード2と通信を行う。SDインタフェース5は、ホスト装置1とメモリカード2とが通信するのに必要な様々な取り決めを規定し、後述のメモリカード2のSDインタフェース11と相互に認識可能な各種のコマンドの組を備えている。また、SDインタフェース5は、メモリカード2のSDインタフェース11と接続可能なハードウェア上の構成(ピンの配置、数等)も含む。
メモリカード2は、ホスト装置1に接続されたとき、およびオフ状態のホスト装置1に挿入された状態でホスト装置1がオンされたときに電源供給を受けて初期化動作を行った後、ホスト装置1からのアクセスに応じた処理を行う。メモリカード2は、メモリ(NAND型フラッシュメモリ)6を制御するためのメモリコントローラ7を有する。
メモリ6は、データを不揮発に記憶し、複数のメモリセルからなるページと呼ばれる単位でデータの書き込みおよび読み出しを行う。ページには、各ページに固有の物理アドレスが割り当てられている。また、メモリ6は、複数のページからなる物理ブロックと呼ばれる単位でデータの消去を行う。なお、物理ブロック単位で物理アドレスが割り当てられていることもある。
メモリコントローラ7は、メモリ6によるデータの記憶状態を管理する。記憶状態の管理とは、どの物理アドレスのページ(または物理ブロック)が、ホスト装置1により割り当てられたどの論理アドレスのデータを保持しているかの関係、およびどの物理アドレスのページ(または物理ブロック)が消去状態(何も書き込まれていない、または無効なデータを保持している状態)であるかを管理することをいう。
メモリコントローラ7は、SDインタフェース11、MPU(micro processing unit)12、ROM(read only memory)13、RAM(read only memory)14、NANDインタフェース15を含んでいる。
SDインタフェース11は、ホスト装置1とメモリコントローラ7との間のインタフェース処理を行うのに必要なハードウェア、ソフトウェアからなる。メモリカード2(メモリコントローラ6)は、SDインタフェース11を介してとホスト装置1と通信を行う。SDインタフェース11は、SDインタフェース5と同様に、両者の通信を可能とする取り決めを規定し、各種のコマンドの組を備え、ハードウェア上の構成(ピンの配置、数等)も含む。
SDインタフェース11は、レジスタ15を含んでいる。図2に、レジスタ15の構成を例示する。レジスタ15は、カードステータスレジスタ、CID、RCA、DSR、CSD、SCR、OCRの各種レジスタを有する。カードステータスレジスタは、通常動作において使用され、例えばエラー情報が記憶される。CID、RCA、DSR、CSD、SCR、OCRは、主にメモリカード2の初期化時に使用される。CID(card identification number)には、メモリカード2の個体番号が記憶される。RCA(relative card address)には、相対カードアドレスが記憶される。DSR(driver stage register)には、メモリカード2のバス駆動力等が記憶される。CSD(card specific data)には、メモリカード2の特性パラメータ値が記憶される。SCR(SD configuration data register)には、メモリカード2のデータ配置が記憶される。OCR(operation condition resister)には、メモリカード2の動作範囲電圧に制限のある場合、動作電圧が記憶される。
MPU12は、メモリカード2全体の動作を司る。MPU12は、例えば、メモリカード2が電源供給を受けた際に、ROM13内に格納されているファームウェア(制御プログラム)をRAM14上に読み出して所定の処理を実行する。MPU12は、制御プログラムに従って、各種のテーブル(後述)をRAM14上で作成したり、ホスト装置1から書き込みコマンド、読み出しコマンド、消去コマンドを受けてメモリ6に対する所定の処理を実行したりする。
ROM13は、MPU12により制御される制御プログラムなどを格納する。RAM14は、MPU12の作業エリアとして使用され、制御プログラムや各種のテーブルを記憶する。このようなテーブルとして、ファイルシステム4によってデータに割り当てられた論理アドレスを有するデータを実際に記憶しているページの物理アドレスの変換テーブル(論物テーブル)が含まれる。NANDインタフェース15は、メモリコントローラ7とメモリ6とのインタフェース処理を行う。
メモリ6内の記憶領域は、保存されるデータの種類に応じて複数の領域に区分けされている。この複数の領域は、システムデータ領域21、機密データ領域22、保護データ領域23、ユーザデータ領域24、を含む。
システムデータ領域21は、メモリコントローラ7が、その動作に必要なデータを保存するためにメモリ6内で確保しておく領域であり、主にメモリカード2に関する管理情報を格納し、メモリカード2のセキュリティ情報やメディアIDなどのカード情報を格納する。機密データ領域22は、暗号化に用いる鍵情報や認証時に使用する機密データを保存しており、ホスト装置1はアクセスできない。
保護データ領域23は、重要なデータ、セキュアなデータを格納する。ホスト装置1は、保護データ領域23にアクセス可能であるが、ホスト装置1とメモリカード2との間での相互認証によりホスト装置1の正当性が証明された後に限られる。
ユーザデータ領域24は、ホスト装置1が自由にアクセスおよび使用することが可能で、例えばAVコンテンツファイルや画像データ等のユーザデータを格納する。以下の説明で、メモリ6は、このユーザデータ領域24を指すものとする。なお、メモリコントローラ7は、ユーザデータ領域24の一部を確保し、自身の動作に必要な制御データ(論物テーブル、後述の最終割り当て論理ブロックアドレス等)を保存する。保護データ領域23とユーザデータ領域24はホスト装置1から別のボリュームとして論理フォーマットされてファイル管理される。
[1−2]メモリの構成
次に、図3、図4を用いて、メモリの構成について説明する。
[1−2−1]メモリ空間およびメモリの物理的な構成
まず、図3を用いて、メモリ6のメモリ空間の構成について説明する。図3は、メモリ6のメモリ空間の構成を示す図である。
図3に示すように、メモリ6は、通常のメモリ領域31とページバッファ32とを有する。
メモリ領域31は、複数のブロックBLKを含んでいる。各物理ブロックBLKは、複数のページPGから構成される。各ページPGは、直列接続された複数のメモリセルトランジスタを含んでいる。
各メモリセルは、いわゆるスタックゲート構造型のMOSFET(metal oxide semiconductor field effect transistor)からなる。スタックゲート構造のMOSトランジスタは、トンネル絶縁膜、浮遊ゲート電極、電極間絶縁膜、制御ゲート電極、ソース/ドレイン拡散層を含む。各メモリセルトランジスタは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じた情報を記憶する。メモリセルトランジスタは、2つ以上の閾値電圧の異なる状態を取り得、いわゆる多値を記憶可能な構成を有する。そして、メモリ6のセンスアンプ、電位発生回路等を含む制御回路は、メモリセルトランジスタに多ビットのデータを書き込み、多ビットのデータを読み出すことが可能な構成を有している。
同じ行に属するメモリセルトランジスタの制御ゲート電極は、同じワード線と接続される。同じ列に属し且つ直列接続されたメモリセルトランジスタの両端には選択ゲートトランジスタが設けられる。一方の選択ゲートトランジスタは、ビット線と接続される。この法則に則って、メモリセルトランジスタ、選択ゲートトランジスタ、ワード線、ビット線が設けられる。データの書き込みおよび読み出しは複数のメモリセルトランジスタの集合毎に行われ、このメモリセルトランジスタの集合からなる記憶領域が1つのページに対応する。
図3の例の場合、各ページPGは、2112バイト(512バイト分のデータ記憶部×4+10バイト分の冗長部×4+24バイト分の管理データ記憶部)を有しており、各ブロックBLKは例えば128ページからなる。
ページバッファ32は、メモリ6へのデータ入出力を行い、データを一時的に保持する。ページバッファ32が保持可能なデータサイズは、例えば、ページPGのサイズと同じく2112バイト(2048バイト+64バイト)である。データ書き込みなどの際、ページバッファ32は、メモリ6に対するデータ入出力処理を、自身の記憶容量に相当する1ページ分の単位で実行する。データの消去は物理ブロックBLK単位で行われる。
また、メモリ6は、1つのメモリセルトランジスタに1ビットのデータを書き込むことができるモードと、多ビットのデータ、すなわち2n(nは自然数)値のデータを書き込むモードとを有する。メモリ6が1つのメモリセルトランジスタに1ビットのデータを書き込むモードを2値モードと称し、多ビットのデータを書き込むモードを多値モードと称する。
[1−2−2]メモリの書き込みモード
次に、図4を用いて、2値モードおよび多値モードについて説明する。図4は、2値モードと多値モードとの違いを示す図である。上記のように、メモリ6の各メモリセルトランジスタは、2以上のビットのデータを記憶できる。すなわち、2n(nは自然数)値の値を記憶する。しかしながら、以下の説明では、多値モードの一例として、4値モードについて説明する。図4においては、横軸は閾値電圧Vthを示し、縦軸はメモリセルの存在確率を示している。
まず4値モードについて説明する。図4に示すように、メモリセルトランジスタは、閾値電圧Vthの大きさに応じて、閾値電圧の低い順に例えば“11”、“01”、“10”、“00”の4つのデータのいずれかを記憶できる。“11”データを記憶しているメモリセルトランジスタの閾値電圧Vth[V]は、Vth<0である。“01”データを記憶しているメモリセルトランジスタの閾値電圧Vth[V]は、0<Vth<Vth1である。“10”データを記憶しているメモリセルトランジスタの閾値電圧Vth[V]は、Vth1<Vth<Vth2である。“00”データを記憶しているメモリセルトランジスタの閾値電圧Vth[V]は、Vth2<Vth<Vth3である。
次に2値モードについて説明する。図4に示すように、メモリセルトランジスタは、閾値電圧Vthの大きさに応じて、閾値電圧の低い順に“1”、“0”の2つのデータのいずれかを記憶できる。“1”データを記憶しているメモリセルトランジスタの閾値電圧Vth[V]は、Vth<0である。“0”データを記憶しているメモリセルトランジスタの閾値電圧Vth[V]は、Vth1<Vth<Vth2である。
“1”データは4値モードにおける“11”データに等しく、“0”データは4値モードにおける“10”データに等しい閾値電圧を有する。すなわち、2値モードとは、4値モードにおける2ビットデータのうち、低位ビットのみを用いた動作モードと言うことができる。メモリ6が、メモリセルトランジスタに対して2値モードでデータを書き込むか、または4値モードでデータを書き込むかは、メモリコントローラ7の指示に従う。具体的には、2ビットデータの低位ビットには低位ページアドレスが割り当てられ、上位ビットには上位ページアドレスが割り当てられる。メモリセルトランジスタに対して2値モードでデータを書き込む場合、メモリコントローラ7は、これらのページアドレスのうち低位ページアドレスのみを使用してメモリ6にデータを書き込む。メモリセルトランジスタに対して多値モードでデータを書き込む場合、メモリコントローラ7は、上位ページアドレスと低位ページアドレスの両方を使用してメモリ6にデータを書き込む。
データの書き込みは、まず低位ビットから行われる。消去状態を“11”とすると、まず低位ビットに“0”または“1”が書き込まれることにより、メモリセルトランジスタは“11”(“−1”)、または“10”(“−0”)を保持する状態になる。ここで、“−”は不定を意味する。2値モードの場合、以上で書き込みは終了する。
一方、4値モードで書き込まれる場合には、続けて上位ビットに“0”または“1”が書き込まれる。その結果、“11”(“−1”)を保持していたメモリセルトランジスタは、“11”または“01”を保持する状態になり、“10”(“−0”)を保持していたメモリセルトランジスタは“10”または“00”を保持する状態になる。その他の8値モード、16値モード等について、同様である。
多値モードでは、1メモリセル当たりのデータ記憶量が大きいが、書き込みが遅い。一方、2値モードでは、1メモリセル当たりのデータの記憶量が小さいが、書き込みが速く、書き換え頻度に対する耐性も高い。
メモリ6は、物理ブロックごとに、2値モードでの書き込みまたは多値モードでの書き込みを選択することができる。
なお、4値のみでなく8値(1メモリセル当たり3ビット)や16値(1メモリセル当たり4ビット)といった拡張も考えられる。いずれも1メモリセル当たりのビット数が少ないほど、書き込みが速く、書き換え頻度に対する耐性も高い。
[1−2−3]メモリのフォーマット
次に、メモリカード2のフォーマットについて説明する。メモリ3は、以下の形式でフォーマットされる。このフォーマットは、本発明の一実施形態に係るファイルシステム(例えばホスト装置1内のファイルシステム4)によって行われる。
[1−2−3−1]FATファイルシステム
本発明の一実施形態に係るファイルシステムによるメモリ3のフォーマットの説明に先立って、このファイルシステムが基礎としているFATファイルシステムの概要について、図5、図6を用いて説明する。図5は、FATファイルシステムによりフォーマットされたメモリ空間の状態を示している。そして、以下に示す管理データの幾つかが書き込まれる。ここでいうメモリ空間は、FATファイルシステムが自由にアクセスできるメモリ領域であり、図1のメモリ6においては、ユーザデータ領域24に一致する。
図5に示すように、FATファイルシステムは、管理対象のメモリのメモリ空間を所定の大きさ(例えば16kバイト)のクラスタに分割して管理する。メモリ空間40の最低位から所定の範囲のクラスタ番号の領域には管理データが割り当てられる。以下、管理データを記憶する領域を、管理データブロック41と称する。管理データブロック41より高位のクラスタ番号の領域には、ファイルデータが割り当てられる。以下、ファイルデータを記憶する領域をファイルデータブロック42と称する。
管理データブロック41は、さらに、パーティションテーブルに割り当てられる領域43、ブートセクタに割り当てられる領域44、FAT1、FAT2に割り当てられる領域45、46、ルートディレクトリエントリに割り当てられる領域47に分けられる。パーティションテーブルは、各パーティションのファイルシステムタイプとその先頭セクタ等の情報を格納している。ブートセクタは、パーティションテーブルが示す先頭セクタに位置し、BPB(BIOS parameter block)を含んでいる。BPBは、ファイルシステムが使用する、メモリ6の様々なパラメータを示している。FATファイルシステムは、メモリをフォーマットする時、このパラメータを書き込む。FATファイルシステムは、起動時にBPBを読み込むことにより、ファイルフォーマットのパラメータを認識する。
FAT1は、メモリに書き込まれ、クラスタの大きさに分割されたファイルデータの一部(以下、単にファイルデータと称する)がどのクラスタに記憶されているか、およびファイルデータを復元するためのクラスタのつながりを示している。FAT2は、FAT1のバックアップであり、FAT1と同じ内容を格納している。
1つのファイルを構成する各ファイルデータが、連続するクラスタに割り当てられることは必須ではないので、FATファイルシステムは、空いているクラスタを、クラスタ番号の順を気にすることなく(ランダムに)ファイルデータに割り当てる。そして、FAT1、FAT2は、ファイルデータを格納しているクラスタの接続関係を格納している。FAT1、FAT2(以下、単にFATと記載する)が格納している情報をトレースすることにより、元のファイルが復元される。
ルートディレクトリエントリは、ルートディレクトリに属する各ファイルのファイルエントリを記憶する。ファイルエントリには、ファイル名またはフォルダ名、ファイルサイズ、属性およびファイルの更新日時情報、どのクラスタがファイルの先頭クラスタであるかを示すフラグ等が含まれる。なお、FATフォーマット形式のバージョン(例えば、FAT16、FAT32)によっては、ルートディレクトリエントリをFATの後の任意のアドレスに置くことができる。
あるファイルが、ルートディレクトリに属するサブディレクトリに属する場合、ルートディレクトリエントリには、ルートディレクトリに属するサブディレクトリのエントリ(サブディレクトリエントリ)に割り当てられるクラスタの番号が記載されている。そして、サブディレクトリエントリは、自身に属する各ファイルのファイルエントリを保持している。図5に示すように、サブディレクトリエントリは、FATファイルシステムによって、ファイルデータブロック42内の任意のクラスタ48に書き込まれる。サブディレクトリエントリも管理データに属し、頻繁に書き換えられることが多い。
図6は、FATおよびファイルエントリの一例を示している。図6に示すように、ルートディレクトリエントリは、ファイルエントリとして各ファイル「FILE1.txt」、「FILE2.txt」、「FILE3.txt」の先頭のクラスタの位置情報を格納している。「FILE1.txt」、「FILE2.txt」、「FILE3.txt」、の先頭クラスタは、それぞれクラスタ0002、0005、0007である。
FATには、各クラスタの次に接続されるべきクラスタの番号が記載されている。例えば、「FILE1.txt」の場合、先頭のクラスタ0002のデータに続くデータを格納するクラスタはクラスタ0003で、クラスタ0003のデータに続くデータを格納するクラスタはクラスタ0004であることが分かる。そしてクラスタ0002、0003、0004のデータを接続することにより、「FILE1.txt」のファイルが復元される。ファイルデータの最後の部分を格納するクラスタには、「FFFF」が書き込まれている。
[1−2−3−2]FATファイルシステム
次に、図7を用いて、FATファイルシステムを基礎とする、本発明の一実施形態に係るファイルシステムについて説明する。本発明の一実施形態に係るファイルシステム(以下、ホスト装置1内のファイルシステム4もそれに該当するものとする)は、以下に示す形に記憶媒体のメモリ空間をフォーマットする。そして、ファイルシステム4によって、メモリカード2はフォーマットされている。
図7は、本発明の一実施形態に係るファイルシステム4によってフォーマットされたメモリ空間を示している。図7のメモリ空間50は、フォーマット対象の記憶媒体の記憶領域のうち、ファイルシステム4が使用可能な領域に一致する。
図7に示すように、ファイルシステム4は、ファイルシステム4がファイルデータを管理するために用いる管理データが割り当てられる領域を、最低位の論理アドレスから所定の範囲の論理アドレスに限定する。すなわち、管理データには、この所定の範囲内の論理アドレスのみが割り当てられる。ここで、管理データとして、FATファイルシステムで用いられるものと同じ、パーティションテーブル、ブートセクタ、FAT1、FAT2、ルートディレクトリエントリ、サブディレクトリエントリが含まれる。
管理データを格納するブロック(管理データブロック51)には、パーティションテーブルに割り当てられる領域53、ブートセクタに割り当てられる領域54、FAT1、FAT2に割り当てられる領域55、56、ルートディレクトリエントリに割り当てられる領域57、サブディレクトリエントリに割り当てられる領域58が含まれる。ブロック53乃至58が格納するデータは、従来のFATファイルシステムにおいて定義されているものと同じである。
メモリ空間50の、管理データブロック51を除く部分は、ファイルデータの書き込み専用のファイルデータブロック52である。管理データブロック51の容量は、メモリ空間50の大きさと、確保されることが求められるファイルデータブロック52の大きさとを考慮して決定される。例えば、パーティションテーブル領域53、ブートセクタ領域54、FAT1領域55、FAT2領域56、ルートディレクトリエントリ領域57、サブディレクトリエントリ領域58の容量は、それぞれ121.5kB、0.5kB、123kB、123kB、16kB、64kBである。ファイルデータブロック52の容量は、1005632kBである。
なお、ファイルシステム4は、FATファイルシステム(FAT16、32等の違いを問わない)を基礎としている。さらに、FATファイルシステムに限らず、FATの拡張を含む類似のファイルシステムを利用することもできる。例えば、管理データを用いてファイルデータを管理し、管理データが頻繁に書き換えられるようなファイルシステムが該当する。
[1−2−3−3]UDFファイルシステム
次に、図8、図9を用いて、本発明の一実施形態に係るUDFファイルシステム(追記型ファイルシステム)について説明する。本例に係るファイルシステムは、以下に示す形に記憶媒体のメモリ空間をフォーマットする。そして、ファイルシステム4によって、メモリカード2はフォーマットされている。
図8では、例えば、DVD−Rファイルシステムがメモリカードに適用された場合の、ファイルシステムが認識しているファイル構造を概略的に示している。図示するように、メモリ空間50は、フォーマット対象の記憶媒体の記憶領域のうちファイルシステム4が使用可能な領域に一致し、追記型ファイルシステムにより、フォーマットされている。換言すれば、メモリ空間50は、純粋な追記型ファイルシステムであるUDF追記型ファイルシステムによりフォーマットされている。
メモリコントローラ7は、図8に示すメモリ空間50のアドレス領域において、以前に書き込んだデータのアドレスと同一かそれより小さいアドレスにデータ書き込みを指示された場合、ホスト装置1(外部)に対してライトプロテクトエラー返す制御を行う。即ち、図8に示すファイルデータブロック50に属する論理アドレスを割り当てられたデータについては、上書きを禁止し、追記のみを許可する。メモリコントローラ7は、割り当て済みの論理アドレスより高位の論理アドレスが割り当てられている場合のみ、書き込み要求を受け付ける。この条件に合致しない書き込み要求に対しては、メモリコントローラ7は、書き込みを行わないとともに、ライトプロテクトエラーを示すステータスをホスト装置1に対して送信する。また、図8では、ファイルが1度、更新、削除、追加された際の状態を示している。
図8に示すように、セクタ番号(0x0000000)の上から順に、ヴォリュームストラクチャ、ファイルセットディスクリプタ、ルートディレクトリのファイルエントリ、ルートディレクトリのデータが順次配置されている。次いで、1回目に記載されたファイル(オリジナルファイル)、すなわち追加、削除前のファイルのファイルエントリが配置されている。次に、オリジナルファイルのデータが配置されている。次に、1回目の記載時に作成されたVAT(VAT<1st>)、次に、この1回目のVATのICBが配置されている。
次に、更新されたファイルのファイルエントリ、更新されたファイルが配置されている。そして、更新時に作製されたVAT(VAT<2nd>)、この更新時のVATのICBが配置される。これ以降は、未書き込み領域が続いている。
図9は、VAT<2nd>の一例を示している。図9に示すように、仮想アドレスと論理アドレスが対応付けられている。
ファイルのデータの読み出しの際、ファイルシステムは、最新のVAT ICBを読み出す。VAT ICBは、上記のように、常に書き込み領域の最後尾に配置しており、図8の例の場合、VAT ICB<2nd>にアクセスされる。
ファイルシステムは、VAT ICB<2nd>に記載されている最新のVATの位置を参照の上、VATを読み出す。次に、ファイルシステムは、ファイルセットディスクリプタ−にアクセスする。この際、ファイルセットディスクリプタ−の論理アドレスは、仮想アドレス#0からVATを用いて求められる。
次に、ファイルシステムは、ファイルセットディスクリプタ−に記載のアドレスから、ルートディレクトリのファイルエントリを読み出す。実際には、ICBを読み出し、次に、ICBに記載されているファイルエントリのアドレスにアクセスする。
次に、ファイルシステムは、ルートディレクトリのファイルエントリに記載されている仮想アドレス#1とVATを用いて、ルートディレクトリのデータにアクセスする。次に、ファイルシステムは、ルートディレクトリのデータに記載の仮想アドレスから最新ファイルのICBにアクセスし、このICBに記載の仮想アドレス#2およびVATを用いて最新ファイルのファイルエントリにアクセスする。そして、ファイルエントリに記載のアドレスから、最新ファイルのデータが読み出される。
[1−2−4]ファイルシステム4における管理データ、ファイルデータブロックと書き込み方式との関係
次に、図10を用いて、管理データブロック51、ファイルデータブロック52と、書き込み方式との関係について説明する。
図10は、管理データブロック51、ファイルデータブロック52と書き込み方式との対応を示す図である。図10に示すように、メモリコントローラ7は、管理データブロック51に属する論理アドレスに対して更新要求を受けた場合、上書きを行う。ここで、「上書き」とはデータが既に割り当てられている論理アドレスを別のデータに割り当てることが可能な書き込み方式である。以下、管理データブロック51に属する論理アドレスを上書き型論理アドレスと称する。なお、メモリ6はNAND型フラッシュメモリであるため書き込み済みのデータに対する再書き込みができない。このため、必要に応じて、以下のキャッシュ用物理ブロック(キャッシュブロック)と呼ばれる構成を用いることができる。
上書き型論理アドレスを割り当てられるデータは、管理データであり、頻繁に更新される。このため、頻繁な更新に対して高速な書き込みを行うために、メモリ6中に、キャッシュブロックと呼ばれる追記専用のブロックを設けても良い。キャッシュブロックは、各論理アドレスのデータが本来書き込まれる物理ブロック(オリジナルブロック)に加えて設けられる。
ある所定の論理アドレスのデータは、同じオリジナルブロックに書き込まれる。そして、オリジナルブロックに書き込み済みのデータの更新要求が来る度に、このデータはキャッシュブロック内の空いているページに、低位の物理アドレスから高位の物理アドレスへと順次書き込まれる。このとき、メモリカード2は、ある論理アドレスの最新のデータがキャッシュブロックのどこのページに書き込まれているかを示す対応表を作成しておく。このため、ある論理アドレスに対して頻繁に更新要求が発生しても、引越し処理を行うことを回避して、高速な書き込みを実現できる。キャッシュブロックが用いられる場合、すなわち上書き型論理アドレスについては、1つのセクタの論理アドレスと1つのページの物理アドレスとの対応が管理される。
ファイルデータが小容量である場合、このようなファイルデータに上書き型論理アドレスを割り当てることもできる。
一方、メモリコントローラ7は、ファイルデータブロック52に属する論理アドレスを割り当てられたデータについては、上書きを禁止し、追記のみを許可する。「追記」とは、データが既に割り当てられている論理アドレスより高位の論理アドレスのみを書き込みデータに割り当てる方式である。すなわち、メモリコントローラ7は、割り当て済みの論理アドレスより高位の論理アドレスが割り当てられている場合のみ、書き込み要求を受け付ける。この条件に合致しない書き込み要求に対しては、メモリコントローラ7は、書き込みを行わないとともに、ライトプロテクトエラーを示すステータスをホスト装置1に対して送信する。以下、ファイルデータブロック52に属する論理アドレスを追記型論理アドレスと称する。
追記型論理アドレスを割り当てられたデータについては、例えば、所定数の複数の論理アドレスをまとめたもの(論理ブロックと称する)に1つの物理ブロックが割り当てられる。このため、追記型論理アドレスについては、論理ブロックのアドレス(論理ブロックごとに割り当てられる)と物理ブロックのアドレスとの対応が管理される。論理ブロックは、例えば物理ブロックと同じ大きさを有する。
ファイルシステム10は、ファイルデータを更新する際、割り当て済みの論理アドレスより高位の論理アドレスを割り当てられたファイルデータの書き込みと、管理データの更新をメモリカード2に要求する。
上書き型論理アドレスの範囲を示す情報、例えば最高位の上書き型論理アドレスが、システムデータ領域21に書き込まれている。最高位上書き型論理アドレスの情報は、例えば、メモリカード2がフォーマットされる際に書き込まれる。最低位の追記型論理アドレスを用いて、上書き型論理アドレスと追記型論理アドレスとの境界を示すことも可能である。
[1−2−5]書き込み方式と書き込みモードとの対応について
次に、図11を用いて、書き込み方式と書き込みモードとの対応について説明する。図11は、本発明の一実施形態に係るメモリコントローラの書き込み方式と書き込みモードとの対応を示している。
図11に示すように、メモリコントローラ7は、上書き型論理アドレスを割り当てられた書き込みデータを2値モードでメモリ6に書き込み、追記型論理アドレスを割り当てられた書き込みデータを多値モードでメモリ6に書き込むことができる。したがって、容量が少なく且つ頻繁に更新を要求される管理データが、小容量だが高速書き込みが可能で書き換え頻度への耐性も高い2値モードで書き込まれ、容量が大きいファイルデータが、大容量だが低速書き込みの多値モードで書き込まれる。このようにデータの特性に応じた書き込みモードを選択することによって、メモリカード2に高速で書き込みつつ、大きな記憶容量を確保することができる。より、一般的な記載として、管理データが1つのメモリセルがm(mは1以上の整数)ビットのデータを記憶するように書き込まれ、ファイルデータが1つのメモリセルがn(nはn>mの整数)ビットのデータを記憶するように書き込まれることができる。
各物理ブロックが、2値モード書き込み用または多値モード書き込み用へと分類されてもよい。具体的には、メモリコントローラ7は、例えば最低位の物理アドレスから所定の境界までに含まれる物理ブロックを2値モードでの書き込み用に用い、この境界から最高位の物理アドレスまでに含まれる物理ブロックを多値モードでの書き込み用に用いることができる。
多値モードでの書き込みの際に、2値モード用の物理ブロックをバッファ32として使用することも可能である。また、上記のように、メモリコントローラ7は、制御データをユーザデータ領域24に書き込む。メモリコントローラ7は、この制御データも2値モードで物理ブロックに書き込み、上書きを行うこともできる。
また、上記のように、保護データ領域23とユーザデータ領域24はホスト装置1から別のボリュームとして論理フォーマットされている。そして、保護データ領域23は、一般に、その容量が小さく、保護データ領域23に書き込まれるファイルデータは、頻繁に更新される。そこで、メモリコントローラ7は、保護データ領域23には、2値モードで書き込み、上書きも許可されている。システムデータ領域21、機密データ領域22にも、同様に、2値モードで書きまれ、上書きが許可される。
なお、上記のように保護データ領域23とユーザデータ領域24とが別のボリュームに属するのではなく、保護データ領域23とユーザデータ領域24とが相互に異なるパーティションに属する構成も考えられる。この場合、各パーティションごとに、全てのデータに対して上書きが許可されている従来のファイルシステムと、管理データのみに上書きが許可されている本発明の実施形態に係るファイルシステムと、のいずれかが適用されるという手法を取ることができる。
[1−3]SDインタフェースの構成
次に、図12乃至図18を用いて、SDインタフェースの構成について説明する。
[1−3−1]最終割り当て論理アドレスを授受するための手法
ホスト装置1(ファイルシステム4)は、ファイルデータを追記方式で書き込むために、最後に割り当てられた論理アドレス(最終割り当て論理アドレス)を知得する必要がある。そこで、最終割り当て論理アドレスを授受するためのコマンドが、SDインタフェース5、11において設けられる。図12、図13は、最終割り当て論理アドレスを授受するための構成を示す図である。
メモリコントローラ7は、後述のように、書き込みの際に、最後に割り当てられた論理アドレスをRAM14上に書き込む。
図12に示すように、ホスト装置1は、最終割り当て論理アドレスの送信を要求するコマンドをメモリコントローラ7に発行する。メモリコントローラ7は、このコマンドを受け取ると、RAM14上に記憶されている、最終割り当て論理アドレスをレスポンスとして、ホスト装置1に送信する。ホスト装置1は、このレスポンスによって、最終割り当て論理アドレスを知得する。そして、ホスト装置1は、この論理アドレスの次の論理アドレスから、割り当てを開始することよって、メモリカード2への追記を行うことができる。
また、専用のコマンドが設けられる代わりに、以下の手法を用いることができる。すなわち、図13に示すように、メモリコントローラ7が特定の論理アドレスの読み出し要求を受けた際に、読み出しデータとして最終割り当て論理アドレスをホスト装置1に送信する。この特定の論理アドレスとして、例えば、パーティションテーブルブロック53の最終セクタ内の最後の8バイトとすることができる。この手法によれば、新規コマンドをサポートしていない従来仕様のUSB(universal serial bus) RW(リーダライタ)を介してメモリカード2が用いられる場合も、USB RWを挿入されているPC(personal computer)上のソフトウェアを用いて最終書き込み論理アドレスのメモリカード2からの読み出しが可能となる。
[1−3−2]データ書き込みの許可の認証を行うための手法
従来のファイルシステムを介して本発明の一実施形態に係るメモリカード2への書き込みが行われると、管理データに不整合が生じて、この結果、ファイルの内容が破壊される恐れが有る。そこで、メモリカード2への書き込みの認証を行うためのコマンドが、SDインタフェース5、11において設けられる。図14、図15は、データ書き込みの許可の認証を行うための構成を示す図である。
図14に示すように、メモリコントローラ7は、初期化後に、ホスト装置1からのデータ書き込み許可要求コマンドの送信を待つ。メモリコントローラ7がこのコマンドを受けた場合、ホスト装置1は、このコマンドをサポートしており、すなわち、本発明の一実施形態に係るファイルシステム4を搭載しているので、メモリカード2は書き込み要求を受け付ける。
一方、データ書き込み許可要求コマンドを受信しなかった場合は、メモリコントローラ7は、ホスト装置1からの書き込み要求に対して常にライトプロテクトエラー信号を返す。この技術により、メモリカード2のデータが、本発明の一実施形態に係るファイルシステム4でないファイルシステムによって破壊されることが回避される。
また、専用のコマンドが設けられる代わりに、以下の手法を用いることができる。すなわち、図15に示すように、あるホスト装置から、メモリコントローラ7が特定の論理アドレスへの特定のデータの書き込み要求を受けると、メモリカード2は、以降、このホスト装置からの書き込み要求を受け付ける。特定の論理アドレスとして、例えば、パーティションテーブルブロック53の最終セクタ内の最初の8バイトとすることができる。特定のデータとして、例えば、0x01、0x23、0x45、0x67、0x89、0xAB、0xCD、0xEFの少なくとも1つとすることができる。この手法によれば、新規コマンドをサポートしていない従来仕様のUSB RWを介してメモリカード2が用いられる場合も、USB RWを挿入されているPC上のソフトウェアを介してメモリカード2への書き込みが可能となる。
[1−3−3]上書き型論理アドレスの範囲をホスト装置が知得するための手法
ホスト装置1(ファイルシステム4)は、上書き型論理アドレスと追記型論理アドレスの境界を知得する必要がある。そこで、最高位の上書き型論理アドレスを授受するためのコマンドが、SDインタフェース5、11において設けられる。図16、図17は、最高位上書き型論理アドレスをホスト装置が知得するための構成を示す図である。なお、上書き型論理アドレスと追記型論理アドレスとの境界を示す手法として、最高位上書き型論理アドレスに代えて最低位の追記型論理アドレスを用いて、以下の処理を行うことも可能である。
図16に示すように、ホスト装置1は、最高位上書き型論理アドレスの送信を要求するコマンドをメモリコントローラ7に発行する。メモリコントローラ7は、このコマンドを受け取ると、システムデータ領域21に記憶されている、最高位上書き型論理アドレスをレスポンスとして、ホスト装置1に送信する。
ホスト装置1は、このコマンドを使用して上書き型論理アドレスの範囲を知ることができる。ホスト装置1のファイルシステム10は、最高位上書き型論理アドレスを参照して、このアドレスより低位の論理アドレス、すなわち、上書き型論理アドレスに、新規のファイルやディレクトリエントリを作成する。
また、専用のコマンドが設けられる代わりに、以下の手法を用いることができる。すなわち、図17に示すように、メモリコントローラ7が特定の論理アドレスの読み出し要求を受けた際に、読み出しデータとして最高位上書き型論理アドレスをホスト装置1に送信する。特定の論理アドレスとして、例えば、パーティションテーブルブロック53の最終セクタ内の最後から2番目の8バイトとすることができる。この手法によれば、新規コマンドをサポートしていない従来仕様のUSB RWを介してメモリカード2が用いられる場合も、USB RWを挿入されているPC上のソフトウェアを用いて最高位上書き型論理アドレスのメモリカード2からの読み出しが可能となる。
[1−3−4]カードタイプフラグ
メモリカード2のタイプとそれに応じた書き込み方式を示すフラグがレジスタ15のうちのレジスタCSDに記載される。図18は、レジスタCSDの詳細の一例を示している。
図18に示すように、CSDに従来から定義されている領域に加えて(定義されていない領域を用いて)、3つの領域が定義される。第0乃至第4ビットが定義済みとして、新たに定義されるビットCT、OW、FCが、第5、6、7ビットに設けられる例が示されている。
ビットCT(レジスタCT)は、管理データへの論理アドレスの割り当てに対する制限について示している。例えば、“0”は、メモリカード2への書き込みの際、管理データ(特に、ディレクトリエントリ)にどの論理アドレスが割り当てられても構わないことを示している。一方、例えば“1”は、本発明の一実施形態のように、管理データに、所定の範囲の論理アドレスが割り当てられなければならないことを示している。
ビットOW(レジスタOW)は、ファイルデータの上書きの制限について示している。例えば“0”は、ファイルデータの上書きに制限が課されていないことを示している。一方、例えば、“1”は、本発明に係る一実施形態のように、一部の論理アドレス等について上書きが許可されていない(追記のみ許可)ことを示している。
ビットFC(レジスタFC)は、メモリカード2が、FATを書き換える可能性の有無について示している。メモリコントローラによっては、その動作の特性上、ファイルデータを書き込んだ後で自らがFATを書き換えることがある。この場合、ホスト装置のファイルシステムは、データの書き込み後にFATを読み出す処理を行う必要がある。このため、ホスト装置のファイルシステムが、FATの読み出しが必要かを知得できるように、レジスタFCが設けられている。例えば“0”は、メモリカード2がFATを書き換えることがない(ファイルシステムによるFATの再読み出し不要)ことを示す。一方、例えば“1”は、メモリカード2がFATを書き換えることがある(ファイルシステムによるFATの再読み出し要)ことを示す。
本発明の一実施形態に係るメモリカード2では、CT=1、OW=1、FC=0である。
以上のビットが設けられることにより、ファイルシステムが、メモリカード2の特性を容易に知得することができる。
[2]動作
次に、図19乃至図23を参照して、ホスト装置1およびメモリカード2の動作について説明する。
[2−1]メモリカードの初期化
次に、図19を用いて、メモリカード2の初期化の動作について説明する。図19は、本発明の一実施形態に係るメモリカードの初期化のフローチャートである。
メモリコントローラ7は、どの追記型論理アドレスまでデータが割り当てられているかを初期化処理において知るための幾つかの情報を、適宜、メモリ6に書き込んでいる。例えば、追記型論理アドレスを割り当てられたファイルデータの書き込みの際、メモリコントローラ7は、ファイルデータの書き込みに加えて、各ページの冗長領域に書き込み済みを示すフラグを書き込む。また、最後に割り当てられた論理アドレスを含む論理ブロックのアドレスがシステムデータ領域21に保存されている。
図19に示すように、電源供給の開始に際して初期化コマンドを受け取ると、メモリコントローラ7は、初期化処理を開始する。初期化処理S1は、従来のメモリカードと同じ初期化処理(ステップS1a)と、追記型論理アドレスの内で割り当て済みの最終の論理アドレスを計算し、その論理アドレスをRAM14に書き込む処理(ステップ1b乃至ステップS1d)からなる。
追記型論理アドレスについては、論理ブロックと物理ブロックとの対応が管理されているのみなので、以下の方法によって、最後に割り当てられた1つの論理アドレスが特定される。まず、ステップS1bにおいて、メモリコントローラ7は、システムデータ領域21から、最後に割り当てられた論理アドレスを包含する論理ブロックのアドレス(最終割り当て論理ブロックアドレス)を知得する。
次に、ステップS1cにおいて、メモリコントローラ7は、最終割り当て論理ブロックに割り当てられている物理ブロック(最終書き込み物理ブロック)内の各ページの冗長領域を検査して、最後に書き込まれたページの物理アドレスを知得する。この結果、メモリコントローラ7は、最終書き込み物理ブロック内の書き込み済みページの数を知得する。次に、ステップS1dにおいて、メモリコントローラ7は、(最終書き込み論理ブロックアドレスより低位のアドレスの全論理ブロック数×論理ブロック当たりの論理アドレス数+最終書き込み物理ブロック内の書き込みページ数)によって、最後に割り当てられた論理アドレスを知得する。次に、ステップS5において、最後に割り当てられた論理アドレス(最終割り当て論理アドレス)をRAM14上に書き込む。
[2−2] 書き込み
次に、図20を用いて、メモリカード2内での書き込み動作について説明する。図20は、本発明の一実施形態に係るメモリカード内での書き込み動作のフローチャートである。
図20に示すように、ステップS11において、メモリコントローラ7は、書き込みコマンドと、論理アドレスを割り当てられた書き込みデータとを受信する。
ステップS12において、メモリコントローラ7は、書き込みデータに割り当てられた論理アドレスが、上書き型論理アドレスであるか否かを判断する。上書き型論理アドレスを割り当てられた書き込みデータであった場合、処理はステップS13に移行する。ステップS13において、メモリコントローラ7は、メモリ6にデータを書き込む。ステップS13において書き込まれるデータは管理データであり、頻繁に上書きされることが予想される。そこで、メモリコントローラ7は、項目[1−2−4]に記載したキャッシュブロックを用いて書き込みを行ってもよい。
一方、ステップS12での判断の結果、書き込みデータの論理アドレスが追記型であった場合、処理はステップS14に移行する。ステップS14において、メモリコントローラ7は、RAM14を参照して、書き込みデータの論理アドレスが、最終割り当て論理アドレスより大きいか(より高位か)否かを判定する。
ステップS14での判断の結果、書き込みデータの論理アドレスが最終割り当て論理アドレスより高位でなかった場合、すなわち、上書き要求であった場合、処理はステップS15に移行する。ステップS15において、メモリコントローラ7は、ライトプロテクトエラーをホスト装置1に送信し、書き込みを拒否した上で、書き込み動作を終了する。
一方、ステップS14での判断の結果、書き込みデータの論理アドレスが最終割り当て論理アドレスより高位であった場合、処理はステップS16に移行する。書き込みデータは、最後に書き込まれたページを含んでいる物理ブロックとは別の物理ブロック内のページに書き込まれることが求められることがある。ステップS16において、書き込みデータが、最後に書き込まれたページを含んでいる物理ブロック内のページ書き込まれるべきか、別の物理ブロックに書き込まれるべきかが判断される。
最終書き込みページを含んでいる物理ブロック内のページに書き込まれる場合は、処理はステップS17に移行する。ステップS17において、メモリコントローラ7は、割り当てられた物理ブロック内のページに、書き込みデータを書き込む。この際、メモリコントローラ7は、図21に示すように、書き込まれるページの冗長領域のビットに、データが書き込み済みの旨のフラグ(例えば“0”)を書き込む。なお、ここで書き込まれる書き込みデータはファイルデータなので、メモリコントローラ7は、多値モードで書き込みデータを書き込むことができる。
次に、ステップS18において、メモリコントローラ7は、最終割り当て論理アドレスをRAM14に書き込む。
一方、ステップS16において、最終書き込みページを含んでいる物理ブロックとは別の物理ブロック内のページに書き込まれる場合、処理はステップS19に移行する。ステップS19において、書き込みデータが書き込まれる物理ブロックが割り当てられる。ここで、消去済みの物理ブロックが無い場合、メモリコントローラ7は、有効なデータを保持していない物理ブロックを消去し、この物理ブロックに書き込みデータを書き込む。
次に、ステップS20において、メモリコントローラ7は、書き込みデータが書き込まれた物理ブロックに対応する論理ブロックのアドレスを、最終割り当て論理ブロックアドレスとして設定する。そして、最終書き込み論理ブロックアドレスが、メモリコントローラ7の制御データの一部として、メモリ6に書き込まれる。この後、処理はステップS17に移行する。
なお、最終割り当て論理アドレスが最高位の追記型論理アドレスと一致していた場合、メモリコントローラ7は、最終割り当て論理アドレスを、最低位の追記型論理アドレスより1つ低位のアドレスに差し替える。すなわち、全ての追記型論理アドレスにデータが割り当てられていない状態を擬似的に作り出す。この結果、メモリコントローラ7による追記が継続される。しかしながら、メモリ6には、最低位から連続する追記型論理アドレスをもともと割り当てられていたデータを物理ブロック(A)において保存しているので、図22に示すように、メモリコントローラ7は、書き込みデータを通常用意されている予備の物理ブロック(B)に書き込む。このため、最新のデータの書き込みを行っている論理ブロックには、2つの物理ブロック(A)、(B)が割り当てられる。この物理ブロック(B)へのデータ書き込みが終了して、さらに別の物理ブロックへの書き込みが発生すると、予備用であった物理ブロック(B)が、本来の通常の物理ブロックとして扱われ、物理ブロック(A)が予備用として扱われる。
また、上記のように、ファイルシステム4はファイルデータには追記方式で論理アドレスを割り当てる。このため、通常は、書き込みデータの論理アドレスは連続している。しかしながら、そうでなく、一部の論理アドレスが飛ばされる場合も起こり得る。例えば、図21に示すように、連続する論理アドレスA乃至Eにおいて、論理アドレスA、Bを割り当てられたデータの書き込み後、論理アドレスEを割り当てられたデータの書き込みが要求される場合がある。この場合、論理アドレスC、Dを割り当てられたデータが存在していたとしても、メモリカード2は、これらのデータの内容を保証しない。しかしながら、上記のように、通常は、ファイルデータの論理アドレスは連続しているので、このデータが保証されないという制約は大きな問題とならない。むしろ、飛ばされた論理アドレスのデータを保証すると、メモリカード2は、引越し処理を行わなければならない。よって、この制約によって、大きな問題を引き起こさずに、メモリカード2の書き込み速度の低下を回避できる。
[2−3−1] ファイルシステム4の割り当て動作(1)
次に、図23を参照して、ファイルシステム4による、書き込みデータへの論理アドレスの割り当て動作について説明する。図23は、本発明の一実施形態に係るファイルシステムによる割り当て動作を示すフローチャートである。
ファイルシステム4は、書き込みデータへの論理アドレスの割り当てに際して、ステップS21において、レジスタCTを参照して、メモリカード2のタイプを判断する。管理データに割り当てることができる論理アドレスの制約がメモリカード2に課されていない場合、すなわち例えばレジスタCT1が0の場合、処理はステップS22に移行する。ステップS22において、ファイルシステム4は、従来のFATファイルシステムと同じ方法によって、書き込みデータに論理アドレスを割り当てる。
一方、ステップS21の判断の結果、管理データに割り当てることができる論理アドレスに制約がある場合、処理はステップS23に移行する。
ステップS23において、ファイルシステム4は、データ書き込み認証コマンドをメモリカード2に発行し、書き込みを有効にする。
次に、ステップS24において、ファイルシステム4は、レジスタCTを参照して、ファイルデータの上書きが可能か否かを判断する。上書きが許可されている場合、すなわち例えばレジスタOWが0の場合、処理はステップS25に移行する。
ステップS25において、ファイルシステム4は、未割り当ての論理アドレスを探索する。このとき、書き込みデータが割り当てられる論理アドレスの順番の前後、連続しているか、していないか等は問われない。次に、ステップS26において、ファイルシステム4は、探索された未割り当ての論理アドレスを書き込みデータに割り当てる。次に、ステップS27において、ファイルシステム4は、ステップS26での割り当てが反映されるように、FAT、ディレクトリエントリの更新を行う。次に、処理はステップS28に移行する。
一方、ステップS24での判断の結果、上書きが禁止されている場合、処理はステップS31に移行する。ステップS31において、ファイルシステム4は、最終割り当て論理アドレス送信要求コマンドをメモリカード2に発行して、最終割り当て論理アドレスを知得する。次に、ステップS32において、ファイルシステム4は、最終割り当て論理アドレスの次の論理アドレス(およびこれに続く論理アドレス)を書き込みデータに割り当てる。次に、ステップS33において、ファイルシステム4は、ステップS32での割り当てが反映されるように、FAT、ディレクトリエントリの更新を行う。次に、処理はステップS28に移行する。
ステップS28において、ファイルシステム4は、レジスタFCを参照して、メモリカード2がFATを書き換えることがあるか否かを判断する。メモリカード2がFATを書き換えることが無い場合、処理は終了する。一方、FATを書き換えることがあるメモリカード2の場合、ファイルシステム4は、FATの内容をメモリカード2から読み出して、その内容を自身が把握しているFATに反映させる。この後、処理は終了する。
[2−3−2] ファイルシステム4の割り当て動作(2)
次に、図24を参照して、ファイルシステム4による、書き込みデータへの論理アドレスの割り当て動作について説明する。図24は、本発明の一実施形態に係る追記型UDFのファイルシステムによる割り当て動作を示すフローチャートである。この説明において、上記[2−3−1]と実施的に重複するステップS21〜S29部分の説明を省略する。
このソフトウェアは、カードタイプのフラグを参照してカードタイプに応じたファイル書込みを行う。即ち、上記ステップS24において、追記が許可されている場合、レジスタOWが1の場合、処理はステップS41に移行する。
尚、上記と同様に、このソフトウェアによってファイル書き込みを行うホスト装置は、ステップS21において、カードの初期化処理の後に、CT=1であることを検出すると、専用のデータ書込み許可コマンドをカードに発行してカードを書き込み可能状態にする。
ステップS41において、ファイルシステム4は、「最終書き込み済みアドレス取得コマンド」によって、カードから最終書き込み済みアドレスを取得する。
次に、ステップS42において、ファイルシステム4は、上記最終書き込み済アドレスの直前にあるVAT ICBを読み込む。
次に、ステップS43において、ファイルシステム4は、読み込んだ上記VAT ICBに基づいて、最新のファイル管理情報を読み込む。
次に、ステップS44において、ファイルシステム4は、UDF方式でファイルを追記する。即ち、UDF(追記型)のみにフォーマットされたメモリ空間に順次データを追記していき、ファイルを更新する。
次に、ステップS45において、ファイルシステム4は、VAT ICBを追記する。次に、処理は上記ステップS28に移行し、処理が終了する。
上記のように、本例の場合に説明してステップS41〜S45の動作によれば、FAT領域やディレクトリエントリへのデータの上書きを必要としないため、上書き領域は使用しなくてもよい。したがって、本例のように追記UDFのみで使用する場合、例えば、上書き領域が存在せず通常ユーザデータ領域の全てが追記型でフォーマットされたアドレス領域であるメモリ空間に対するメモリカード等に対して適用する場合に、より有利である。
尚、本例では、ファイルのライト動作について説明した。しかし、ファイルのライト動作についても同様に適用でき、同様の効果が得られる。ファイルのリードについて適用する場合、UDFタイプのファイルリードソフトウェアが必要である。
[2−4] 読み出し
次に、データの読み出し動作について説明する。読み出し動作は、従来のメモリカードと同じである。すなわち、ホスト装置1は、本発明の一実施形態に係るメモリカード2であることか否かを意識せずに、読み出しコマンドをメモリカード2に供給する。メモリコントローラ7は、読み出しデータの論理アドレスを、論物変換テーブルを用いて物理アドレスに変換する。次いで、メモリカード2は、求められた物理アドレスのページ(物理ブロック)からデータを読み出してホスト装置1に出力する。
項目[2−2]で述べたように、1つの論理ブロックに対して2つの物理ブロック(A)、(B)が割り当てられている場合、適宜、これら2つの物理ブロックから、読み出しデータが読み出される。
[2−5] ファイル削除後のメモリの空き領域の増加動作
次に、ファイル削除後のメモリの空き領域の増加動作について、図25乃至図30を用いて説明する。ここでは、図25に示す動作フローに則して説明する。
まず、ホスト装置1は、ファイル削除を行う。この際の論理アドレス空間は、例えば、図26のように示される。図示するように、ここではUDF−VATタイプの追記ファイルシステムでフォーマットされたファイル構成のうち、ファイル(FILE2)を、論理的に削除する(”unused”)場合を一例に挙げて説明する。
図26に示すように、最終書込み済アドレスに書き決まれた新たなVAT(Virtual Allocation Table)(new)によって、ルートディレクトリのICBへの参照アドレスが変更されており、新たに追記されたルートディレクトリのICB(File Entry for Root directory (new))が以前のものに代わって参照される。この新たなルートディレクトリのICBには、削除するファイル(FILE2)に対するディレクトリ情(FID)への参照が含まれておらず、ファイルシステム上はFILE2が存在しない。そのため、論理的にFILE2が削除されたことになる。
また、この例では、ルートディレクトリに3つのファイル(FILE1, FILE2, FILE3)が書き込まれている。それぞれのファイルはFile Entry (ICB)と呼ばれるファイル管理情報によって、ファイル本体が論理アドレス上のどこのアドレス範囲にあるかが示される。これらのファイルのICBの位置は、FIDと呼ばれるディレクトリ情報によって、どこの論理アドレスに書かれているかが示される。ディレクトリ情報の位置はルートディレクトリ用のICBによって、どこの論理アドレスに書かれているかが示される。ルートディレクトリ用のICBは論理アドレス上の固定位置にある、ファイルセットディスクリプタによってどこの論理アドレスにあるかが示される。
また、上記VATは、論理アドレス上の書き込み住み領域の最後に書き込まれている仮想アドレスVA(Virtual Address)と論理アドレスLA(Logical Address)の変換テーブルである。但し、より実際には、VATもVAT本体とVAT用のICB(VAT ICB)によって構成されるが、ここでは説明を簡単にするために両方を合わせてVATと記述する。ファイルセットディスクリプタからルートディレクトリのICBへのアドレス参照、及び、各FIDから各ファイルのICBへのアドレス参照は、実際にはVATに書き込まれている変換テーブルによって変換されたものが使用される。従って、新たなVATを書き込み済領域の最後に追記して、VATの内容を変更することで、各ICBへのファイルセットディスクリプタやFID自体の値を上書きによって変更することなく、ルートディレクトリのICBへのアドレス参照、及び、各ファイルのICBへのアドレス参照を変更して別のICBを指し示すようにすることができる。このうに、UDF−VATではこれによって、追記によるファイルの書き換えやファイルの削除を実現している。
(ステップS51)
図27に示すように、ホスト装置1は、ファイル構成上不要となったアドレス範囲(図26中で”unused”と記してある領域)の論理アドレス範囲(複数個所)をパラメータとして、「空き領域拡張コマンド(論理アドレス範囲情報)COM1」を、メモリカード2に対して発行する。ここで、「空き領域拡張コマンドCOM1」は、現行の本例で示すメモリカード(例えば、SDカード(登録商標)等)の仕様にはないコマンドであり、新たに定義すべき専用コマンドである。
(ステップS52)
続いて、メモリカード2は、発行された上記空き領域拡張コマンド(COM1)を受け付ける。
(ステップS53)
続いて、メモリカード2は、指定された不要な論理アドレス範囲に含まれるNAND型フラッシュメモリ6内の物理ブロックを検索する。より具体的には、メモリコントローラ7は、不要として指定された論理アドレス範囲に含まれるNAND型フラッシュメモリ6内の消去ブロックがあるかどうかを調べる。この際、メモリコントローラ7は、論理アドレス−物理アドレス変換テーブルを参照する。
(ステップS54)
続いて、メモリカード2は、対象範囲に1以上の物理ブロックがあるか否かを検索する。この検索の結果、1以上の物理ブロックが検索されない場合には、ステップS56に続く。
(ステップS55)
続いて、メモリカード2は、上記ステップS54の検索の結果、当該の消去ブロックが1つ以上ある場合は、当該の消去ブロックを消去し、そのブロックをそれまでの最終論理アドレスの後ろに割り当てる。それに合わせて、メモリコントローラ7は、NAND型フラッシュメモリ6に記憶している論理アドレス−物理アドレス変換テーブルと最終論理アドレスを変更する。
このステップS55の際の論理アドレス空間は、例えば、図28のように示される。図示するように、上記ステップS54の検索の結果、当該の消去ブロック(FILE2(”unused”))が1つ以上ある場合は、当該の消去ブロック(FILE2)を消去し、そのブロックをそれまでの最終論理アドレスの後ろに割り当てる(例えば、LBA255→LBA256)。それに合わせて、メモリコントローラ7は、NAND型フラッシュメモリ6に記憶している論理アドレス−物理アドレス変換テーブルと最終論理アドレスを変更する(LBA255→LBA256)。
図28に示すように、図26で示したこの動作前の論理アドレス空間に比べ、斜線で示す拡張した論理アドレス分unrecorded2(LBA255→LBA256)について、空き領域を増加することができる。このため、本例のようなUDF−VATの追記型ファイルシステムで、実際の論理アドレス上の削除した消去ブロックFILE2本体情報が残っている場合であっても、空き領域を増加することができる。
加えて、本例の場合、NAND型フラッシュメモリ6の空き領域に対する処理は、消去動作のみである。このため、不要となったデータ領域を詰めるようにして、不要となったデータアドレス領域以降のデータを書き直す必要があるガベージコレクションのような大量のデータ書き込みは発生しない。その結果、処理を高速化でき、利便性を向上できる。さらに、NAND型フラッシュメモリ6への書き込み回数も低減できるというメリットもある。
(ステップS56)
続いて、図27に示すように、メモリコントローラ6は、ステップS55の処理が終了した後の変更後の最終論理アドレス(例えば、LBA256)を、「空き領域拡張コマンド(COM1)」のレスポンスとして、ホスト装置1に通知する。
(ステップS57)
続いて、ホスト装置1は、メモリカード2から通知された上記最終論理アドレス(LBA256)をホスト装置1内のメモリに記憶し、それ以降のカードアクセスの際に参照する。また、ホスト装置1は、通知された最終論理アドレス(LBA256)の情報に基づいて、メモリ空き領域を再計算し、以後のファイルアクセスの際に使用する。
以上のステップにより、本例のファイル削除後のメモリの空き領域の増加動作を終了する(End)。
[変形例(ページ単位の場合)]
次に、図29を用いて、ファイル削除後のメモリの空き領域の増加動作をページ単位で行う一例を説明する。この説明において、上記の説明と重複する部分の説明を省略する。
上記例では、論理アドレス−物理アドレス変換を消去ブロック単位で管理し、消去ブロック単位で不要領域を検索する例を示した。ここでは、より細かいページ単位で論理アドレス−物理アドレス変換を管理するようなメモリコントローラ7が、ページ単位で不要領域を検索する実施例である。
図29に示すように、この場合では、例えば、上記ステップS55の際に、メモリコントローラ7が、不要ページP0を一つの消去ブロック(集中管理ブロック)Blocknにまとめるように一部データである不要ページP0を移動させる。
続いて、メモリコントローラ7は、その消去ブロック(集中管理ブロック)Blocknを、拡張論理アドレスに割り当てる(例えば、LPA255→LPA256)。
上記のように、この変形例に係るメモリシステムおよびそのホスト装置であれば、より細かいページ単位でデータを消去し、空き領域を増加するように制御することができる点で有利である。
[初期化]
ここで、上述の第1の実施形態および変形例に係るファイル削除後の空き領域拡張動作を繰り返していくと、最終論理アドレスが次第に大きくなっていき、メモリカード2のバス仕様で、処理可能な最大論理アドレスを超えてしまう場合が考えられる。
そうなった場合に、メモリカード2にデータを追記型で追加してデータを書き込むためには、メモリカード2を再フォーマットする必要がある。尚、その際、書き込み済のデータは失われる。
この再フォーマットの際に、NAND型フラッシュメモリ6の物理ブロックの論理アドレスへの割り当てを初期状態に戻し、最終論理アドレスを初期状態に戻す必要がある。そのため、「論理アドレス初期化コマンド」を新たに定義する。
即ち、ホスト装置1は、再フォーマットの前に、「論理アドレス初期化コマンド」をメモリカード2に発行する。
続いて、メモリコントローラ7は、その「論理アドレス初期化コマンド」を受けて、ユーザ領域のNAND型フラッシュメモリ6の物理ブロックをすべて消去して、NAND型フラッシュメモリ6に書き込んでいる、ユーザ領域に対する論理アドレス−物理アドレス変換テーブルと、最終論理アドレスとを初期状態に戻す。
このため、NAND型フラッシュメモリ6の処理可能な最大論理アドレスを超えた場合であっても、メモリカード2を再フォーマットすることができ、メモリカード2にデータをさらに追記型で追加して書き込むことができる点で有利である。
[応用例]
尚、上記の説明においては、SDカード(登録商標)を代表例とし、UDF−VATタイプの追記ファイルシステムの実施例を一例として説明した。しかし、同様の別のフラッシュメモリデバイスや、別の追記型ファイルシステムにも同様に適用でき、同様の効果を得ることが可能である。
[3]第1の実施形態および変形例に係る効果
第1の実施形態および変形例に係るメモリシステムおよびそのホスト装置によれば、少なくとも下記(1)の効果が得られる。
(1)処理を高速化でき、利便性を向上できる。
上記のように、本例に係るメモリシステムは、外部(ホスト装置)1からのコマンド(空き容量拡張コマンドCOM1)に応じて、不要となった不揮発性メモリ6のデータ(FILE2)を消去し、当該不要となったデータ(FILE2)を論理アドレスの一部に割り当てられたメモリ領域に割り当てなおす(LBA255→LBA256)ことで、前記論理アドレスの最大値を拡張するように、不揮発性メモリ6を制御するメモリコントローラ7を備える。
さらに、本例に係るホスト装置1は、追記型ファイルシステムにフォーマットされたメモリシステム2のホスト装置であって、ファイル(FILE2)削除後に、前記メモリシステム2に対して最大論理アドレス範囲を拡張するコマンド(空き容量拡張コマンドCOM1)を前記メモリシステム2に出し、拡張後の前記最大論理アドレス範囲の値(LBA255→LBA256)に基づいて、使用可能な空きメモリ領域を再計算する。
そのため、例えば、図28に示すように、図26で示したこの動作前の論理アドレス空間に比べ、斜線で示す拡張した論理アドレス分Unrecorded2(LBA255→LBA256)について、空き領域を増加することができる。このため、本例のようなUDF−VATの追記型ファイルシステムで、実際の論理アドレス上の削除する消去ブロックFILE2本体が残っている場合であっても、空き領域を増加することができる。
加えて、本例の場合、NAND型フラッシュメモリ6の空き領域に対する処理は、消去動作のみである。このため、不要となったデータ領域を詰めるようにして、不要となったデータアドレス領域以降のデータを書き直す必要があるガベージコレクションのような大量のデータ書き込みは発生しない。その結果、処理を高速化でき、利便性を向上できる点で有利である。さらに、NAND型フラッシュメモリ6への書き込み回数も低減できるというメリットもある。
[第2の実施形態(ファイルシステム等についてのその他の説明)]
次に、第2の実施形態に係るメモリシステムおよびホスト装置について、図30乃至図40を用いて説明する。この実施形態は、上記第1の実施形態で説明していないファイルシステム等についてのその他の説明に関するものである。この説明において、上記第1の実施形態と重複する部分の詳細な説明を省略する。
[11]UDF追記ファイルシステム(UDF−VAT)の概要
これについては、上記第1の実施形態と重複するため、詳細な説明を省略する。
[12]メモリシステム2の適用例について
NAND型フラッシュメモリ6のブロックの適用例については、図39において後述する。
[12−1]通常ユーザデータ領域
本例に係るメモリカード2では、上記のように、通常ユーザデータ領域24は、上記多値モードで使用し、なるべく多くの容量を確保する。通常ユーザデータ領域24は、追記書き込みデータ領域として使用される。この追記領域24では、論理アドレス−物理アドレス変換は、ブロック単位で行われる。なお、この場合でも、多値モードで使用する場合でも、書き込みデータの一時的な保管には、上記2値モードで使用するブロックをバッファとして使用してもよい。
また、メモリコントローラ7は、NAND型フラッシュメモリ6のブロックに、自身の制御データ(システムデータ)を不揮発データとして記憶するためのブロックを確保しており、このブロックも2値モードで使用する。
[12−2]プロテクトデータ領域
本例に係るメモリカード2の場合、通常のユーザデータ領域24の他に、セキュアデータ用の領域(プロテクトデータ領域)21〜23も存在し、それぞれが一つのボリュームとしてファイルフォーマットが行われる。本例においては、プロテクトデータ領域はすべて上書き許可領域であり、NAND型フラッシュメモリ6の2値モードのブロックが割り当てられ、例えば、FATファイルシステムが用いられる。これは、プロテクトデータ領域21〜23は、容量としては小さく、またファイルデータ本体も細かいデータの更新が多いため、上書き可能なFATファイルシステムが適しているためである。ただし、アプリケーションによって、細かいデータの更新が発生しない場合は、プロテクトデータ領域21〜23も通常データ領域と同様の追記書き込みデータ領域として構成しても良い。
[13]デバイス情報
次に、図30乃至図32を用い、本例に係るメモリカード2が有するデバイス情報について説明する。
図示するように、本例に係るメモリカード2は、例えば、メモリコントローラ7のSDインタフェース11のレジスタ15内に「デバイス情報」を有している。
これらのデバイス情報は、ホスト装置1が、メモリカード2から取得するカード情報であり、後述する動作を実現するために、メモリカード2に追加された情報である。この情報には以下のようなものがあり、例えば、専用のSDカードコマンドでアクセスするSDカードレジスタとしてメモリコントローラ7内に用意されるものである。
(1)追記型デバイスフラグ
追加型デバイスフラグ(R)は、本例の追記型のカードインタフェースを有するメモリカード2であるか、上書き型のメモリカード2のいずれかであるかを示すフラグである。
また、この追記型デバイスフラグは、リードオンリーのレジスタである。例えば、”1”データのとき追記型、”0”データのとき上書き型であることを示す。
(2)最終書き込みアドレス
最終書き込みアドレス(R)は、追記領域において、最後に書き込みがなされた論理アドレスを、メモリコントローラ7がホスト装置に示すアドレスである。このアドレスも、リードオンリーのレジスタである。
(3)書き込み許可データ
書き込み許可データ(RW)は、メモリカード2にファイルを書き込む、あるいは、更新するためには、異なる専用のファイルシステムを適用する際に必要な書き込みソフトウェアである。例えば、従来のカード用のファイル書き込みソフトウェアで、本例のメモリカード2に対してファイル書き込みを行うと、ファイルフォーマットが破壊される恐れがある。このため、本例のメモリカード2では、専用のデータ書き込み許可コマンドを設ける。メモリカード2は、初期化後にこのコマンドを受け付けた後でないと追記領域に対するホスト装置1からのデータ書き込みコマンドを受け付けない。このデータ書き込み許可コマンドの受付前では、書込みコマンドに対しては常にライトプロテクトエラーを返す。
この書き込み許可データレジスタは、例えば、8バイトの大きさをもち、このレジスタに0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEFを書き込みことによって追記領域へのデータ書き込みが許可される。この書き込み許可データレジスタは、ライトリード可能なレジスタであり、ライトデータとしては書き込む許可データを書き込む。リードした場合は、書き込み許可がなされているかどうかが示される。書き込み許可状態になっている場合はこのレジスタはall 0xFFとなり、書き込み許可がなさされていない場合はall 0x00が読み出される。
(4)、(5)VAT ICB位置書き込みアドレス1、2(RW)
これらVAT ICB位置書き込みアドレス1、2(RW)は、ホスト装置1が書き込むVAT ICB位置のアドレスを保持するためのアドレスである。
例えば、ホスト装置1が、8バイト分のVAT ICB位置を書き込み、そのアドレスをメモリコントローラ7は、NAND型フラッシュメモリ6内にシステムデータ(管理データ)の一部として記憶する。
このデータは、ホスト装置1から頻繁に書き換えられる。そのため、レジスタをメモリマップ上に設けた例を示す図32のように、ホスト装置1は、専用のNAND物理ブロックを用意しておき、そのページに内部的に追記していくことでデータを保持している。ここで、当該ブロックが一杯のなった場合、別の予備ブロックを使用し一杯になったブロックは消去して再利用する。
尚、このVAT ICB位置書き込みアドレス1、2は、ホスト装置1が書き込む重要なデータであるので、2重化されており、2つのレジスタがある。ホスト装置1は、順次同じデータをこの2つのレジスタに書き込む。
(6)データ領域初期化指示(W)
本例に係るメモリカード2では、追記領域は、最終書き込みアドレスの次の論理アドレスより大きいアドレスにしか書き込めないようにフォーマットされている。そのため、このデータ領域初期化指示(W)は、再度、追記領域の論理アドレスの先頭からデータを書き込めるようにするための指示を行うレジスタである。例えば、このレジスタにホスト装置1が、”1”データを書き込むことで、最終書き込みアドレスが初期化され、論理アドレスの先頭からデータを再度書き込めるようになる。
ここで、上記のように、図30、図31は、デバイス情報の実装例を示したものである。
図30では、例えば、デバイス情報がコントローラ内のレジスタ15として構成され、それらのレジスタ15がSDカードインタフェース11の専用コマンドによってリードまたはライトされる例を示している。この場合は、専用コマンドを用いた効率の良い情報アクセスが可能である。
図31では、デバイス情報が通常メモリ領域の一部のアドレス領域にマッピングされ、SDカードインタフェース11上の通常のメモリリード、ライトコマンドでアクセスできるように構成した例である。この場合、専用コマンドを使用しないため、新規コマンドをサポートしていないUSB RW仕様などでも、PC等のホスト装置1側のソフトウェアからデバイス情報をライト、リード可能という利点がある。
また、図31においては、上述のデバイス情報のために通常領域の論理アドレス上の一定の領域があらかじめ予約されており、その領域は実際には通常のメモリのライト、リードは行われず、特定のアドレスを通常のSDメモリライト、リードコマンドでライト、リードすることで上述のデバイス情報レジスタをアクセスできるようになっている。また、図32の例では、各レジスタは通常のSDメモリライト、リードできる形で4KBおきのメモリアドレス上の先頭に置かれている。
尚、このメモリ上にデバイス情報をおく場合は、例えば、上書き型にフォーマットされたメモリカード2では、この領域は通常の上書き型のメモリ領域(ライト、リード可能)となっている。
ホスト装置1が追記デバイスフラグの値をチェックする場合は、当該の論理アドレスに対して512B分(SDバス上の1データブロック)のAll ”0”のデータを書き込み、そのデータをリードする。実際にAll ”0”データが書き込めれば、そのメモリカード2は、上書き型にフォーマットされたメモリカード2である。一方、先頭の1バイトに0x00ではなく、0x01が読み出せれば、追記型のデバイスであると判断される。
図33は、図31で示したデバイス情報エリアが論理アドレスの先頭に置かれている例である。図34は、図31で示したデバイス情報エリアが論理アドレスの最後に置かれている例である。
ここで、上記図30、図31のどちらの構成を使用しても良いが、本例では、以下、図30のようなレジスタを専用コマンドでアクセスする場合を一例に挙げて説明をする。
[14]メモリカード側のデータ書き込み動作
次に、図35および図36を用いて、本例に係るメモリカード2側のデータ書き込み動作について説明する。この説明においては、図36のフローチャートに従って説明する。
[14−1]初期化時
ここで、図35の示すように、初期化時においては、通常のカード初期化処理の他に、追記領域内の書き込み済最終アドレス(論理セクタアドレス)を以下のように計算し、コントローラ内に記憶する。
(1)まず、メモリコントローラ7は、システムデータ領域21に記憶された最新の書き込み論理ブロックアドレスを読み出す。
(2)続いて、メモリコントローラ7は、読み出した最新の書き込み論理ブロックアドレスに相当する物理ブロックの各ページの冗長領域にある書き込み済フラグを参照し、ブロック内の最終書き込みページアドレスを求める。ここで、上記図21に示したように、書き込み済フラグが”0”データである最大のページを最終書き込みページとする。
(3)続いて、メモリコントローラ7は、”最新書き込み論理ブロックアドレスxブロック内のページ数 + ブロック内最終書き込みページアドレス”によって、最終書き込み論理ページアドレスを求め、それに基づいて最終書き込みセクタアドレスを計算し、それをコントローラ内に記憶する。
[14−2]データ書き込み
図36に示すように、まず、ステップS61の際、メモリコントローラ7は、書き込むべきデータの論理アドレスが追記領域であった場合、その論理アドレスが書き込み済最終論理アドレスより後のアドレスであるかどうか(すなわち、追記方式のライトであるかどうか)を判断する。
ここで、書き込み済最終論理アドレスが追記領域の最終アドレスに相当する場合は、書き込み済最終論理アドレスは追記領域の先頭アドレス−1、すなわち、追記領域に対する書き込みがなされていない状態と等価であると判断する。これにより、追記領域の最終アドレスにデータが書かれた直後は追記領域の先頭アドレスからデータの再書き込みが可能となる。
尚、追記領域の先頭からデータを書き込むためには後述の追記領域の初期化コマンドを使用しても良い。この追記領域の初期化コマンドのみを使用することを前提として、上述のような「書き込み済最終論理アドレスが追記領域の最終アドレスに相当する場合に、追記領域の先頭アドレスからデータの再書き込みを可能とする」処理を行わないような実施例も考えられる。
続いて、ステップS62の際、メモリコントローラ7は、上記ステップS61で書き込む論理アドレスが書き込み済最終論理アドレスより後でない場合(すなわち追記書き込みでない場合)と判断されると、ホスト装置1に対して、ライトプロテクトエラーを返してデータ書き込みを拒否する。
続いて、ステップS63の際、メモリコントローラ7は、上記ステップS61で書き込む論理アドレスが書き込み済最終論理アドレスより後の場合(すなわち追記書き込みである場合)は、NAND型フラッシュメモリ6の別物理ブロックに書き込むデータか否かを判断する。
続いて、ステップS64の際、メモリコントローラ7は、別ブロックを書き込みブロックとして割り当てる。その際、データ書き込みを行うべきブロックがそれまでデータ書き込みを行っていた物理ブロックとは別の物理ブロックを割り当てる必要がある場合は、新たに割り当てる物理ブロックに相当する論理ブロックアドレスをNANDのシステムデータ領域に書き込んで記憶する。
続いて、ステップS65の際、メモリコントローラ7は、割り当てた別ブロックが消去済でない場合は、消去処理も行う。消去されたブロックのデータは、例えば、All 0xFF(All ”1”データ)になる。
続いて、ステップS66の際、メモリコントローラ7は、割り当てたブロックに相当する論理ブロックアドレスをNAND型フラッシュメモリ6のシステムデータ領域21に、最終書き込みブロックアドレスとして記憶する。
ここで、一度追記領域を最後のアドレスまで書くと、追記領域の先頭のアドレスから書込みが可能となる(後述の[15]を参照)。その際、書込みデータに割り当てる物理ブロックは、それまで当該の論理アドレスブロックに割り当てられていた物理ブロックではなく、予備のスペアブロックを割り当てる。従って、最新のデータ書き込みを行っている論理アドレスブロックには2つの物理ブロック(A)(B)が割り当てられる(上記図22)。このとき、当該ブロックへのデータ書込みが終了して別のブロックへの書込みが発生すると、直前の予備ブロック(B)が当該ブロックの物理ブロックとして割り当てられブロック(A)は予備ブロックとなる。
続いて、ステップS67の際、メモリコントローラ7は、実際のNANDブロックへのデータ書き込みはページ単位で行うが、その際、書き込んだ各ページの冗長領域の所定のビット位置に設けられている「書き込み済フラグ」に”0”データを書きこむ(後述する図40)。
続いて、ステップS68の際、メモリコントローラ7は、さらに最後に書き込んだセクタアドレスを、コントローラのRAMに、書き込み済最終アドレスとして記憶する。
尚、追記型であっても書き込むデータが連続したアドレスではなく、一部のアドレスがスキップされるような例も考えられる(例えば、図21に示すデータ書込みの場合)。この場合、スキップした領域のデータ内容は保証されない(スキップした部分は書込み前のデータが保持されることは保証されない)。しかし、本例のような追記型書込み方式の場合、通常は連続したアドレスに対してデータ書込みがなされるので、この制約は大きな問題とはならない。逆にこれによって、カード内の引越し処理などの煩雑な処理が無くなりカードの実現が容易になる点でメリットがある。
[14−3]データの読み出し動作
データ読み出し動作は、読み出しコマンドによって指定された論理アドレスをNAND型フラッシュメモリ6の物理アドレスに変換し、そのアドレスのデータをNAND型フラッシュメモリ6から読み出し、ホスト装置1に出力することにより行われる。
例えば、図22のように、一つの論理ブロックアドレスに2つの物理ブロック(A)(B)が割り当てられている場合は、新しく書きこまれたページのデータは予備ブロック(B)から読み出し、それ以外のページのデータは従来のブロック(A)から読み出す。
[14−4]追記領域の初期化
追記領域の初期化について、図37を用いて説明する。この動作のために、メモリコントローラ7のSDカードインタフェース11に、追記領域の初期化を実行する専用のコマンド(実際には専用のコマンドによってアクセスされるレジスタ)を追加する。メモリコントローラ7は、このコマンドを受けると、図37のフローチャートに示す動作を行う。
まず、ステップS71の際に、メモリコントローラ7は、追記領域に割り当てられたNANDブロックをすべて消去し、すべてのビットを”1”データにする。
続いて、ステップS72の際に、メモリコントローラ7は、最終書き込みブロックアドレスを追記領域の最初のブロックアドレスに戻して、システムデータ領域に記憶する。
続いて、ステップS73の際に、メモリコントローラ7は、メモリコントローラ7内のRAM14に記憶した書き込み済最終アドレスを初期化(即ち、追記領域の先頭論理アドレスー1)とする。
上記のステップによって、追記領域の全部ロックデータは消去され、書き込み済最終アドレスも初期化される。この処理以後は、追記領域の先頭アドレスからデータの書き込みが可能となる。
尚、全ブロックデータの消去には時間がかかるので、消去はせずに、最終アドレスを初期化する処理だけを行うための専用コマンドやレジスタを設けてもよい。この場合は、データの消去は行われないが、再び論理アドレスの先頭からデータが書き込めるようになり、追記領域の論理的な再フォーマットが高速に行える点で有利である。
[14−5]書き込み済最終論理アドレスの通知
書き込み済最終論理アドレスを通知するためには、メモリコントローラ7のSDカードインタフェース11に、書き込み済最終論理アドレスをホスト装置1に通知する専用のコマンドを追加する。メモリコントローラ7は、このコマンドを受けると、コントローラ7のRAM14に記憶している書き込み済最終論理アドレスを、レスポンスデータとしてSDカードインタフェース11からホスト装置1に出力する。
[14−6]データ書き込み許可コマンド
本例のメモリカード1にファイルを書き込む、あるいは、更新するためには、専用のファイル書き込みソフトウェアが必要である。従来のカード用のファイル書き込ソフトウェアで本カードに対してファイル書き込みを行うと、ファイルフォーマットが破壊される恐れがある。このため、本例のメモリカード2では専用のデータ書き込み許可コマンドを設ける。メモリカード2は、初期化後に、このコマンドを受け付けた後でないとホストからのデータ書き込みコマンドを受け付けない。このデータ書き込み許可コマンドの受付前は書込みコマンドに対しては常にライトプロテクトエラーを返す。
[14−7]上書き許可領域範囲のアドレスをホストが知るためのコマンド
ホスト装置1に対して、レスポンスデータとして、上書き許可領域の上限の論理アドレスを示すデータを返すコマンドを新設する。ホスト装置1は、メモリカード2の論理フォーマットの際に、このコマンドを使用して、上書き許可領域の上限を知ることができる。
さらに、ホスト装置1は、論理フォーマットの際に、上書き許可領域の上限をブートセクタの一部に記録する。
ホスト装置1のファイスシステムは、ファイルやディレクトリを新規作成する際には、ブートセクタの上書き許可領域の上限アドレスを参照しそのアドレスより小さいアドレス(即ち、上書き可能領域)に、この新規作成するディレクトリ(ファイル)エントリを作成する。
[15]カードタイプフラグ
デバイス情報を読むことで、ホスト装置1は、上書き型のカードインタフェースを持つカードであるか、追記型のインタフェースを持つカードであるかを識別できる。ホスト装置1は、それぞれのメモリカード2に応じたファイルシステム(例えば、上書き型の場合はFAT、追記型の場合はUDF−VAT方式等)をカードに適用する。
[16]ホスト側のファイル更新
次に、図38を用いて、ホスト装置1の側のファイル更新について説明する。ここでは、図38のフローに則して説明する。
ここで、ホスト装置1のソフトウェアは、カードタイプのフラグを参照してカードタイプに応じたファイル書込みを行う。このソフトウェアによってファイル書き込みを行うホスト装置1は、カードの初期化処理の後に、追記型のカードであることを検出すると、専用のデータ書込み許可コマンドをカードに発行してカードを書き込み可能状態にする。追記領域にUDF−VAT方式で順次データを追記していき、ファイルを更新する。
すわなち、ステップS81の際、ホスト装置1は、UDF−VAT方式でファイルICBやファイルデータ本体を追記書き込みする。
続いて、ステップS82、S83の際、ホスト装置1は、VATおよびVAT−ICBを追記書き込みする。
続いて、ステップS84の際、ホスト装置1は、デバイス情報レジスタのVAT ICB位置書き込みアドレス1に、VAT ICBの最終アドレスを書き込む。
続いて、ステップS85の際、ホスト装置1は、デバイス情報レジスタのVAT ICB位置書き込みアドレス2にVAT ICBの最終アドレスを書き込む。
尚、DVD−R用のUDFは、1セクタ2KBで構成されているが、セクタサイズは小さいほうがメモリ領域の利用効率が高い。また、カードインタフェース上の最小書き込みブロックサイズにファイルシステム上のセクタサイズが一致していると、サイズ変換の必要がなくファイルアクセスソフトウェアの構成が容易である。このため、本例のSDカードの実施例では、UDFのセクタサイズは、例えば、512B程度とする。
[17]カード挿入時のVAT ICB位置検索動作
次に、図39を用いて、カード挿入時のVAT ICB位置検索動作について説明する。
まず、ステップS90の際に、ホスト装置1は、VAT ICB位置検索を開始する。
続いて、ステップS91の際に、ホスト装置1は、VAT ICB位置書き込みアドレス1から最終データ書込み位置を取得する。
続いて、ステップS92の際に、ホスト装置1は、デバイス情報に書き込まれたVAT ICB位置書き込みアドレス1をリードする。
続いて、ステップS93の際に、ホスト装置1は、そのアドレスにあるデータをチェックしてする。
続いて、ステップS94の際に、ホスト装置1は、そのデータがUDF−VAT仕様で定められた有効なデータ形式かどうかをチェックする。
続いて、ステップS99−1の際に、有効な形式であった場合は、VAT ICB取得成功として、ホスト装置1は、そのデータをVAT−ICBとして以後のファイルアクセスを行う。
一方、ステップS95の際に、ホスト装置1は、有効な形式で無かった場合には、デバイス情報に書き込まれたVAT ICB位置書き込みアドレス2をリードする。
続いて、ステップS96の際に、ホスト装置1は、有効な形式のVAT ICBであるか否かを確認する。この際、有効な形式であった場合は、そのデータをVAT−ICBとして以後のファイルアクセスを行う(S99−1)。
一方、ステップS97の際に、ホスト装置1は、ステップS96で有効な形式で無かった場合は、何らかの理由でVAT ICB位置情報が正常に更新されなかったものと判断し、デバイス情報の最終書き込みアドレスをリードし、そのアドレスから順にアドレスの上位に遡ってVAT−ICBのフォーマットデータがないかどうかを検索する。
続いて、ステップS98の際に、ホスト装置1は、有効なVAT ICBの発見を行う。
続いて、ステップS99−2の際に、ホスト装置1は、有効なVAT ICB形式が見つからなかった場合は、VAT ICB取得失敗と判断する。
[18]不完全ファイルの復活処理
次に、図40を用いて、不完全ファイルの復活処理について説明する。
デバイス情報に書き込まれたVAT−ICB位置と、デバイス情報の最終書き込みアドレスが整合しなかった場合(すなわち、VAT−ICB位置よりもデバイス情報の最終書き込みアドレスが大きい場合)は、ホスト装置1が、ファイルデータを更新中にカードが引き抜かれたりホスト機器の電源が遮断されたりして、更新中のファイルのVAT−ICBとVAT−ICB位置情報の更新が完了していないと考えられる。
このような場合、ホスト装置1は、図40に示すステップS101乃至S109の処理で、この不完全なファイルの復活を試みることができる。この場合、ホスト装置1はVAT−ICB位置とデバイス情報の最終書き込みアドレスの間にあるデータを不完全ファイルとして取り出すことを試みる。
[19]応用例
この第2の実施形態では、SDメモリカード2への適用例を示したが、これに限られず、その他の別のフラッシュメモリデバイスにも適用できる。また、追記型ファイルシステムとしてUDFの例を示したが、その他別の追記型ファイルシステムであっても、同様に適用することが可能である。
[20]効果
上記のように、この第2の実施形態に係るメモリシステムおよびホスト装置によれば、少なくとも上記(1)と同様の効果が得られる。さらに、必要に応じて、本例のような構成および動作に適用することが可能である。
また、本第2の実施形態は、以下の態様を含む。
(1)データ書き込み済の論理アドレスよりも高位の論理アドレスを割り当てられた書き込みデータのみの書き込みを受け付けるメモリシステム。
(2)ホスト装置がカードにデータ書き込みを行った最終論理アドレスをホスト装置が算出するのに必要な可能な情報をホスト装置に対して提供する手段を具備するメモリシステム。
(3)ホスト装置が前回書き込んだデータの論理アドレスに応じて、次回のデータ書き込みを受付可能な論理アドレス範囲が変更されるメモリシステム。
(4)(3)のメモリシステムにおいて、次回のデータ書き込み可能な論理アドレス範囲を示す情報をホスト装置に通知する手段を更に具備する。
(5)(3)のメモリシステムにおいて、ホスト装置からの指示に応じて、書き込み可能な論理アドス範囲を初期状態に戻す手段を更に具備する。
(6)(3)のメモリシステムにおいて、データ書き込みを受付可能な論理アドレス以外の論理アドレスに対するデータ書き込みがなされた場合、ライトプロテクトに相当する書き込みエラー情報をホスト装置に出力する。
(7)(3)のメモリシステムにおいて、次回のデータ書き込み可能な論理アドレス範囲を示す情報をホストに通知する手段を更に具備するとともに、ホスト装置から設定された、ファイル更新時の最終データ書き込み位置情報を保持する手段を更に具備する。
(8)(3)のメモリシステムにおいて、データ書き込みの受付開始の許可を、ホストから指示する手段を更に具備する。
(9)データ書き込みが非連続的な論理アドレスに対してなされた場合、非連続なアドレス範囲のデータを読み出した場合、前記データ書き込み以前のデータと同じデータが読み出されることは保証されない。
(10)(3)のメモリシステムにおいて、(3)のような構成をもつシステムであるか、任意の論理アドレスにデータ書き込みを受け付ける装置であるかを識別するための情報をホスト装置に与える手段を更に具備する。
(11)(9)のメモリシステムにおいて、(3)のような構成をもつシステムであるか、非連続なアドレスにデータを書き込んだ場合でも、非連続なアドレス範囲のデータを読み出した場合に前記データ書き込み以前のデータと同じデータが読み出されることは保証される装置であるかを識別するための情報をホスト装置に与える手段を更に具備する。
(12)(4)の書き込み可能なアドレス範囲情報は、論理アドレスの所定のアドレスに対するホストインタフェースのメモリリードコマンドによってホスト装置に通知される。
(13)(7)のファイル更新時の最終データ書き込み位置情報は、論理アドレスの所定のアドレスに対するホストインタフェースのメモリライト、リードコマンドによってホストから設定されホストに通知される。
(14)(5)のアドレス範囲を初期状態に戻す指示は、論理アドレスの所定のアドレスに対して、ホストインタフェースのメモリライトによってホストから所定のデータが書き込まることによるものである。
(15)(10)の識別情報は、論理アドレスの所定のアドレスに対するホストインタフェースのメモリリードコマンドによってホスト装置に通知される。
(16)(1)のメモリシステムにおいて、次回のデータ書き込み可能な論理アドレス範囲を示す情報をホストに通知する手段を更に具備するとともに、ホストから設定された、ファイル更新時の最終データ書き込み位置情報を保持する手段を更に具備する。
(17)(2)のメモリシステムにおいて、ホスト装置から設定された、ファイル更新時の最終データ書き込み位置情報を保持する手段を更に具備する。
(18)追記型ファイルシステムを使用して(17)のメモリシステムにファイル書き込みを行うホスト装置において、ファイル更新時の最終データ書き込み位置が示すアドレスの直前のファイル更新時の最終データフォーマットが不正なフォーマットであった場合、ホスト装置がカードにデータ書き込みを行った最終論理アドレスから先頭方向に向かってデータ検索を行って、有効なファイル更新時の最終データフォーマットの検索を行う。
(19)追記型ファイルシステムを使用して(17)のメモリシステムにファイル書き込みを行うホスト装置において、ファイル更新時の最終データ書き込み位置が示すアドレスの直前のファイル更新時の最終データフォーマットが不正なフォーマットであった場合、ホスト装置がカードにデータ書き込みを行った最終論理アドレスから先頭方向に向かってデータ検索を行って、有効なファイル更新時の最終データフォーマットの検索を行う。
(20)追記型ファイルシステムを使用して(17)のメモリシステムにファイル書き込みを行うホスト装置において、ファイル更新時の最終データ書き込み位置が示すアドレスと、ホストがカードにデータ書き込みを行った最終論理アドレスとの間に不整合がある場合は、両者のアドレスの間にあるデータを対象にファイルの復旧処理を行う。
(21)UDF方式の追記ファイルシステムを用いてメモリシステムに対してファイルの書き込み、読み出しを行うホスト装置において、UDFのセクタサイズはメモリシステムのホストインタフェース上の最小データ書き込み単位と一致させる。
(22)UDF方式の追記ファイルシステムを用いてメモリシステムに対してファイルの書き込み、読み出しを行うホストシステムにおいて、UDFのセクタサイズは512バイトである。
以上、第1、第2の実施形態を用いて本発明の説明を行ったが、この発明は上記各実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、上記各実施形態には種々の段階の発明が含まれており、開示される複数の構成要件の適宜な組み合わせにより種々の発明が抽出され得る。例えば各実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題の少なくとも1つが解決でき、発明の効果の欄で述べられている効果の少なくとも1つが得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
メモリシステムの機能ブロック図。 レジスタの構成を例示する図。 メモリのメモリ空間の構成を示す図。 2値モードと多値モードを示す図。 FATファイルシステムによりフォーマットされたメモリ空間を示す図。 FATが保持するデータの一例を示す図。 FATファイルシステムによりフォーマットされたメモリ空間を示す図。 UDFファイルシステムによりフォーマットされたメモリ空間を示す図。 VATの一例を示す図。 管理、ファイルデータブロックと書き込み方式との対応を示す図。 コントローラの書き込み方式と書き込みモードとの対応を示す図。 最終割り当て論理アドレスを授受するための構成を示す図。 最終割り当て論理アドレスを授受するための構成を示す図。 データ書き込みの許可の認証を行うための構成を示す図。 データ書き込みの許可の認証を行うための構成を示す図。 最高位上書き型論理アドレスをホストが知得するための構成を示す図。 最高位上書き型論理アドレスをホストが知得するための構成を示す図。 レジスタCSDの詳細の一例を示す図。 メモリカードの初期化のフローチャート。 メモリカード内での書き込み動作のフローチャート。 メモリカードの書き込み処理の結果を示す図。 メモリカードの書き込み処理時の一状態を示す図。 上書型ファイルシステムによる割り当て動作のフローチャート。 追記型ファイルシステムによる割り当て動作のフローチャート。 ファイル削除後の論理アドレス割り当て動作のフローチャート。 ファイル削除の論理アドレス空間を示す図。 空き容量拡張コマンドおよび最終割り当て論理アドレスの授受を示す図。 ファイル削除後の論理アドレスの拡張を示す図。 ページ単位の場合の一例を示す図。 第2の実施形態に係る追記デバイス情報エリアを示す図。 第2の実施形態に係る追記デバイス情報エリアを示す図。 レジスタをメモリマップ上に設けた一例を示す図。 デバイス情報エリアが論理アドレスの先頭である場合を示す図。 デバイス情報エリアが論理アドレスの最後である場合を示す図。 メモリカードの初期化処理を示すフロー図。 メモリカードの追記領域へデータ書込み処理をする場合のフロー図。 追記領域初期化動作を示すフロー図。 ホスト側のファイル更新動作を示すフロー図。 VAT ICBの位置検索動作を示すフロー図。 ホスト側の不完全ファイルの復活処理を示すフロー図。
符号の説明
1…ホスト装置、2…メモリカード、3…ソフトウェアアプリケーション、4…ファイルシステム、5、11…SDインタフェース、6…不揮発性メモリ、7…メモリコントローラ、12…MPU、13…ROM、14…RAM、15…レジスタ、115…NANDインタフェース、21…システムデータ領域、22…機密データ領域、23…保護データ領域、24…ユーザデータ領域。

Claims (5)

  1. 不揮発性メモリと、
    前記不揮発性メモリを制御するメモリコントローラとを具備し、
    前記メモリコントローラは、外部からのコマンドに応じて、不要となった前記不揮発性メモリのデータを消去し、前記不要となったデータを論理アドレスの一部に割り当てられたメモリ領域に割り当てなおすことで、前記論理アドレスの最大値を拡張するように制御すること
    を特徴とするメモリシステム。
  2. 不揮発性メモリと、
    前記不揮発性メモリを制御するメモリコントローラとを具備し、
    前記メモリコントローラは、外部から与えられる論理アドレス範囲情報としてのコマンドに応じて、前記論理アドレス領域の一部または全部に割り当てられたメモリ領域を割り当てなおすことで、前記論理アドレスの最大値を拡張するように制御すること
    を特徴とするメモリシステム。
  3. 前記メモリコントローラは、前記論理アドレスの最大値を拡張した後の前記最大論理アドレスを外部に通知すること
    を特徴とする請求項1または2に記載のメモリシステム。
  4. 前記メモリコントローラは、前記不揮発性メモリの処理可能な最大論理アドレスを超えた場合、外部からのコマンドに従って、前記論理アドレスの最大値を初期状態に戻すこと
    を特徴とする請求項1乃至3のいずれか1項に記載のメモリシステム。
  5. 追記型ファイルシステムにフォーマットされたメモリシステムのホスト装置であって、ファイル削除後に、前記メモリシステムに対して最大論理アドレス範囲を拡張するコマンドを前記メモリシステムに出し、拡張後の前記最大論理アドレス範囲の値に基づいて、使用可能な空きメモリ領域を再計算すること
    を特徴とするホスト装置。
JP2008190022A 2008-07-23 2008-07-23 メモリシステム、ホスト装置 Pending JP2010026933A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008190022A JP2010026933A (ja) 2008-07-23 2008-07-23 メモリシステム、ホスト装置
US12/403,815 US8484430B2 (en) 2008-07-23 2009-03-13 Memory system and host device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008190022A JP2010026933A (ja) 2008-07-23 2008-07-23 メモリシステム、ホスト装置

Publications (1)

Publication Number Publication Date
JP2010026933A true JP2010026933A (ja) 2010-02-04

Family

ID=41569667

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008190022A Pending JP2010026933A (ja) 2008-07-23 2008-07-23 メモリシステム、ホスト装置

Country Status (2)

Country Link
US (1) US8484430B2 (ja)
JP (1) JP2010026933A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013033338A (ja) * 2011-08-01 2013-02-14 Toshiba Corp メモリシステム
JP2014515531A (ja) * 2011-05-31 2014-06-30 マイクロン テクノロジー, インク. メモリデバイスにおける動的メモリキャッシュサイズ調節
WO2018016003A1 (ja) * 2016-07-19 2018-01-25 株式会社日立製作所 ストレージ装置
WO2020039927A1 (ja) * 2018-08-21 2020-02-27 ソニー株式会社 不揮発性記憶装置、ホスト装置、及びデータ記憶システム
JP2022062264A (ja) * 2017-09-22 2022-04-19 キオクシア株式会社 メモリシステム
JP2023045456A (ja) * 2021-09-22 2023-04-03 キオクシア株式会社 コンピュテーショナルストレージドライブ

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4228767B2 (ja) * 2003-04-25 2009-02-25 ソニー株式会社 再生装置、再生方法、再生プログラムおよび記録媒体
WO2005124530A2 (en) 2004-06-21 2005-12-29 Kabushiki Kaisha Toshiba Method for controlling memory card and method for controlling nonvolatile semiconductor memory
US10496608B2 (en) 2009-10-28 2019-12-03 Sandisk Il Ltd. Synchronizing changes in a file system which are initiated by a storage device and a host device
US8886597B2 (en) * 2009-10-28 2014-11-11 Sandisk Il Ltd. Synchronizing changes in a file system which are initiated by a storage device and a host device
JP2012113789A (ja) * 2010-11-26 2012-06-14 Buffalo Inc ハードディスクドライブ装置およびその処理装置
JP5455945B2 (ja) * 2011-02-14 2014-03-26 株式会社東芝 調停装置、記憶装置、情報処理装置およびプログラム
JP2012168865A (ja) * 2011-02-16 2012-09-06 Toshiba Corp メモリシステム
TWI454912B (zh) * 2012-01-06 2014-10-01 Phison Electronics Corp 資料處理方法、記憶體控制器與記憶體儲存裝置
US9081664B2 (en) * 2012-08-10 2015-07-14 Kabushiki Kaisha Toshiba Memory system capable of preventing data destruction
JP2014044490A (ja) * 2012-08-24 2014-03-13 Toshiba Corp ホスト装置及びメモリデバイス
US9383924B1 (en) * 2013-02-27 2016-07-05 Netapp, Inc. Storage space reclamation on volumes with thin provisioning capability
US20140310536A1 (en) * 2013-04-16 2014-10-16 Qualcomm Incorporated Storage device assisted inline encryption and decryption
US20150026427A1 (en) * 2013-07-17 2015-01-22 Kabushiki Kaisha Toshiba Data reassign method and storage device
WO2015145932A1 (ja) * 2014-03-28 2015-10-01 パナソニックIpマネジメント株式会社 不揮発性メモリ装置
TWI604373B (zh) * 2016-12-13 2017-11-01 慧榮科技股份有限公司 資料儲存裝置及其資料維護方法
US11288007B2 (en) * 2019-05-16 2022-03-29 Western Digital Technologies, Inc. Virtual physical erase of a memory of a data storage device
TWI718858B (zh) * 2020-02-03 2021-02-11 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體控制方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04310148A (ja) * 1991-02-15 1992-11-02 Internatl Business Mach Corp <Ibm> データの単位を高速度でアクセスする方法
JPH11126488A (ja) * 1997-10-21 1999-05-11 Hitachi Ltd フラッシュメモリを複数使用した外部記憶装置のデータ記憶制御方法及び装置
JP2003015915A (ja) * 2001-07-05 2003-01-17 Hitachi Ltd 記憶装置の容量自動拡張方法
JP2006040264A (ja) * 2004-06-21 2006-02-09 Toshiba Corp メモリカードの制御方法および不揮発性半導体メモリの制御方法
JP2007213448A (ja) * 2006-02-10 2007-08-23 Hitachi Ltd 記憶制御装置
JP2007323309A (ja) * 2006-05-31 2007-12-13 Hitachi Ltd レプリケーションボリュームの容量拡張方法
JP2008146255A (ja) * 2006-12-07 2008-06-26 Sony Corp 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3687115B2 (ja) * 1994-10-27 2005-08-24 ソニー株式会社 再生装置
TWI244285B (en) * 2002-02-05 2005-11-21 Via Tech Inc Ethernet switch controller and its congestion control method
JP2003303054A (ja) * 2002-04-08 2003-10-24 Hitachi Ltd 計算機システム、記憶装置及び記憶装置運用監視方法
WO2004077447A1 (ja) * 2003-02-28 2004-09-10 Fujitsu Limited フラッシュメモリ及びメモリ制御方法
US20050091459A1 (en) * 2003-10-23 2005-04-28 Nhon Quach Flexible mechanism for enforcing coherency among caching structures
BRPI0418426A (pt) * 2004-01-19 2007-05-22 Trek 2000 Int Ltd dispositivo portátil de armazenamento de dados usando uma tabela de mapeamento de endereço de memória
WO2005124530A2 (en) 2004-06-21 2005-12-29 Kabushiki Kaisha Toshiba Method for controlling memory card and method for controlling nonvolatile semiconductor memory
JP2006085380A (ja) 2004-09-15 2006-03-30 Toshiba Corp ファイルストレージデバイス、プログラム、及び不揮発性半導体メモリの書込方法
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US7694025B1 (en) * 2006-03-31 2010-04-06 Integrated Device Technology, Inc. Method and device for base address sorting and entry into base address registers
JP2008090519A (ja) * 2006-09-29 2008-04-17 Toshiba Corp 記憶装置
JP2008171367A (ja) 2007-01-15 2008-07-24 Toshiba Corp 情報処理装置及び追記型ファイル管理ソフトウェア

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04310148A (ja) * 1991-02-15 1992-11-02 Internatl Business Mach Corp <Ibm> データの単位を高速度でアクセスする方法
JPH11126488A (ja) * 1997-10-21 1999-05-11 Hitachi Ltd フラッシュメモリを複数使用した外部記憶装置のデータ記憶制御方法及び装置
JP2003015915A (ja) * 2001-07-05 2003-01-17 Hitachi Ltd 記憶装置の容量自動拡張方法
JP2006040264A (ja) * 2004-06-21 2006-02-09 Toshiba Corp メモリカードの制御方法および不揮発性半導体メモリの制御方法
JP2007213448A (ja) * 2006-02-10 2007-08-23 Hitachi Ltd 記憶制御装置
JP2007323309A (ja) * 2006-05-31 2007-12-13 Hitachi Ltd レプリケーションボリュームの容量拡張方法
JP2008146255A (ja) * 2006-12-07 2008-06-26 Sony Corp 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014515531A (ja) * 2011-05-31 2014-06-30 マイクロン テクノロジー, インク. メモリデバイスにおける動的メモリキャッシュサイズ調節
US9195604B2 (en) 2011-05-31 2015-11-24 Micron Technology, Inc. Dynamic memory cache size adjustment in a memory device
JP2013033338A (ja) * 2011-08-01 2013-02-14 Toshiba Corp メモリシステム
WO2018016003A1 (ja) * 2016-07-19 2018-01-25 株式会社日立製作所 ストレージ装置
JPWO2018016003A1 (ja) * 2016-07-19 2018-11-29 株式会社日立製作所 ストレージ装置
US10740250B2 (en) 2016-07-19 2020-08-11 Hitachi, Ltd. Storage apparatus
JP2022062264A (ja) * 2017-09-22 2022-04-19 キオクシア株式会社 メモリシステム
WO2020039927A1 (ja) * 2018-08-21 2020-02-27 ソニー株式会社 不揮発性記憶装置、ホスト装置、及びデータ記憶システム
US11615019B2 (en) 2018-08-21 2023-03-28 Sony Corporation Non-volatile storage device, host device, and data storage system to increase data write speed
JP2023045456A (ja) * 2021-09-22 2023-04-03 キオクシア株式会社 コンピュテーショナルストレージドライブ

Also Published As

Publication number Publication date
US20100023721A1 (en) 2010-01-28
US8484430B2 (en) 2013-07-09

Similar Documents

Publication Publication Date Title
JP4991320B2 (ja) ホスト装置およびメモリシステム
JP2010026933A (ja) メモリシステム、ホスト装置
US11640353B2 (en) Memory system, data storage device, user device and data management method thereof
US8307172B2 (en) Memory system including memory controller and separately formatted nonvolatile memory to avoid “copy-involving write” during updating file data in the memory
JP4931810B2 (ja) 最適化されたシーケンシャルなクラスタの管理のためのfat分析
US6678785B2 (en) Flash management system using only sequential write
JP5530012B2 (ja) 記憶装置のためのストレージアドレス再マッピングのための方法およびシステム
US8078794B2 (en) Hybrid SSD using a combination of SLC and MLC flash memory arrays
US7395384B2 (en) Method and apparatus for maintaining data on non-volatile memory systems
JP5295778B2 (ja) フラッシュメモリ管理方法
US7752412B2 (en) Methods of managing file allocation table information
US20140059273A1 (en) Host apparatus and memory device
JP4751163B2 (ja) メモリシステム
WO2005103903A1 (ja) 不揮発性記憶システム
KR101893897B1 (ko) 메모리 시스템 및 사용자 장치 그리고 그것의 데이터 관리 방법
CN103389941B (zh) 存储器格式化方法、存储器控制器及存储器存储装置
JP4599450B2 (ja) 電子機器、ファイルシステムの記憶領域割当法、および記憶領域割当プログラム
JP4881469B1 (ja) 情報処理装置、及び情報処理方法
KR20220101349A (ko) 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치
JP2007018528A (ja) メモリ装置、ファイル管理方法及び記録再生装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100802

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120724

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120924

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130121

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130326