JP4157501B2 - 記憶装置 - Google Patents

記憶装置 Download PDF

Info

Publication number
JP4157501B2
JP4157501B2 JP2004194328A JP2004194328A JP4157501B2 JP 4157501 B2 JP4157501 B2 JP 4157501B2 JP 2004194328 A JP2004194328 A JP 2004194328A JP 2004194328 A JP2004194328 A JP 2004194328A JP 4157501 B2 JP4157501 B2 JP 4157501B2
Authority
JP
Japan
Prior art keywords
information
unit
storage unit
cluster
address information
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.)
Expired - Fee Related
Application number
JP2004194328A
Other languages
English (en)
Other versions
JP2006018471A (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.)
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 JP2004194328A priority Critical patent/JP4157501B2/ja
Priority to US10/941,820 priority patent/US20060004969A1/en
Priority to CNB2005100818209A priority patent/CN100514310C/zh
Publication of JP2006018471A publication Critical patent/JP2006018471A/ja
Application granted granted Critical
Publication of JP4157501B2 publication Critical patent/JP4157501B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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

Landscapes

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

Description

本発明は、例えば制御部を有するメモリカードのような記憶装置に係わり、特に、その記憶方式に関する。
ファイルシステムは、記憶装置に記録されているデータを管理する方式であり、記憶媒体に設けられた管理領域や管理情報を示している。また、ファイルシステムには、記憶装置におけるファイルやフォルダなどのディレクトリ情報の作成方法、ファイルやフォルダなどの移動方法や削除方法、データの記録方式、管理領域の場所や利用方法などが定められている。
図7は、クラスタサイズが16kバイトのFAT(File Allocation Table)ファイルシステムの一例を示している。このファイルシステムは、管理領域701、複数のクラスタA、B、C、D(702〜705)…により構成されている。ファイルシステム管理領域701は、例えばブート情報を記憶するブート領域711、パーティション情報などを記憶する領域712、ルートディレクトリエントリの情報を記憶するルートディレクトリエントリ領域713、FATA、FATB(714、715)を有している。
上記構成において、例えばクラスタA及びクラスタCが使用された状態において、ファイル名が「AAA.txt」で、ファイルサイズが32kバイトのファイルを記憶装置に書き込むとする。このファイルのサイズは、クラスタサイズより大きいため、ファイルはクラスタ単位のサイズに分割され、記憶装置の空いているクラスタに記憶される。つまり、書き込むべきファイルサイズが32kバイトであるため、2つのクラスタを使用してファイルが書き込まれる。クラスタは連続している必要がないため、例えばクラスタBとクラスタDを使用してファイルが記憶される。
この場合、書き込むべきファイルがどのクラスタに分割して記憶されたかを管理するため、管理情報がFATA、FATBに記憶される。FATA、FATBには、同一のデータが記憶されており、一方のFATに欠陥が生じた場合、他方のFATを用いてデータの修復が可能とされている。FATA、FATBは、ファイルに割り当てられたクラスタの情報を記憶しており、記憶装置中のクラスタのリンクの関係を記憶している。FATA、FATBに記憶された情報をトレースすることにより、元のファイルへと復元することができる。
この場合、分割されたファイルのうち、前半の16kバイトがクラスタBに記憶され、後半の16kバイトがクラスタDに記憶されるため、FATA、FATBには、クラスタBの次にクラスタDがリンクされることを示す情報が記憶される。2つのクラスタに分割されたファイルを読み出す際、FATA、FATBに記憶されたこれらの情報をチェイン接続することにより、ファイルが元に復元される。
ルートディレクトリエントリ領域713は、ファイル名又はフォルダ名、ファイルサイズ、属性及びファイルの更新日時などとともに、FATA、FATBに示されたどのクラスタがファイルの先頭クラスタであるかを示すフラグを記憶する。この例の場合、ルートディレクトリエントリ領域713に記憶される情報は、ファイル名が「AAA.txt」、ファイルサイズが32kバイト、先頭クラスタがクラスタBである。
このようなファイルシステムを使用した記憶装置は、記憶装置に、データを書き込む際、書き込みデータ以外に、ルートディレクトリエントリの情報やFATなどの管理情報も一緒に更新する必要がある。
一方、ルートディレクトリの下にサブディレクトリ名が「ABCDE」のサブディレクトリを作成し、そこにファイル「AAA.txt」を書き込む場合がある。
この例のように、ルートディレクトリの下にサブディレクトリを作成する場合、サブディレクトリのエントリを単にディレクトリエントリと呼ぶこととする。サブディレクトリもファイルと同様に、「ABCDE」というディレクトリエントリ(32バイト)が空きクラスタに作成される。
ディレクトリエントリの内容は、ルートディレクトリエントリと同様に、サブディレクトリ「ABCDE」の中にあるファイルについての情報である。図7において、例えばクラスタA及びクラスタCが使用されており、クラスタBが空いているとすると、クラスタBに「ABCDE」のディレクトリエントリが書き込まれる。
次に、ルートディレクトリエントリ領域713に、「ABCDE」のディレクトリについての情報が記憶される。つまり、ルートディレクトリエントリ領域713には、「ABCDE」というディレクトリエントリがどのクラスタにあるかを示す情報が記憶される。
次に、サブディレクトリ「ABCDE」に、ファイル「AAA.txt」を書き込んだ場合、「ABCDE」のディレクトリエントリが記憶されているクラスタBのデータを更新する。クラスタは16kバイトのサイズであるが、ディレクトリエントリ中のエントリが更新される場合、最小の書き込み単位である512バイトのサイズで書き込みを行うことが多い。クラスタBはサブディレクトリ「ABCDE」の下に作成するファイル、又はフォルダについての管理情報を記憶する。この例の場合、ファイル名「AAA.txt」、ファイルサイズ及び書き込み開始クラスタアドレスがクラスタBに記録される。
ここで、サブディレクトリ「ABCDE」のディレクトリエントリが、管理領域701以外のクラスタ領域(データ領域)に書き込まれたこととなる。したがって、記憶装置のクラスタの使用状況によって、サブディレクトリの新規ディレクトリエントリのアドレスは変化することとなる。これに対して、FAT、ルートディレクトリエントリは、管理領域701の固定されたアドレスに記憶される。
このように、書き込みが固定されたアドレスへ行われる場合、そのアドレスに対する書き込みデータを連続して記憶できる特別な記憶領域を設けることで、書き込みの効率化を図ることができる。しかし、ルートディレクトリの下に位置するサブディレクトリのディレクトリエントリは、管理領域以外のクラスタ領域に記憶される。サブディレクトリのディレクトリエントリが記憶されたアドレスは、ルートディレクトリから下層に位置するディレクトリエントリを検索すればアドレスが特定できるようになってはいる。しかし、サブディレクトリが複数の階層になった場合、記憶装置内でディレクトリエントリから下層にある所望のディレクトリエントリのアドレスを知ることが難しいという問題があった。
そこで、パーソナルコンピュータとUSBにより接続されたカードリーダライタを用いて、例えばNAND型フラッシュメモリが内蔵されたメモリカードに対する書き込み動作を調べ、ディレクトリエントリ及びファイルの書き込みアドレス及びその頻度を分析した。
図8は、その結果を示している。図8より明らかなように、ファイルのデータを書き込む前後に、FATやディレクトリエントリへの書き込みが複数回行われていることが分かる。さらに、図8より次のことが分かる。
(1) FATやディレクトリエントリへの書き込みサイズはファイルのデータに比べて小さい。
(2) ディレクトリエントリへの書き込みアドレスは、常に同じアドレスである。
(3) ディレクトリエントリへの書き込みアドレスは、管理領域から外れたクラスタ領域である。
(4) 全体的な書き込みの流れにおいて、アドレスが非連続である。
また、複数個のファイルを書き込む際、上記流れを繰り返すホスト機器が多い。
ところで、NAND型フラッシュメモリにおいて、一度の書き込み要求で書き込みが可能な最小単位はページと呼ばれる。1ページは、例えば512バイトあるいは2048バイト等により構成されている。また、データの消去単位はブロックと呼ばれ、1ブロックは例えば32ページ、256ページ、512ページ等により構成されている。
上記のように、同じファイルやフォルダを更新する場合、対応するディレクトリエントリへの書き込みアドレスは変わらない。このため、同じアドレスのデータを上書きする必要がある。しかし、NAND型フラッシュメモリは、書き込み済みのページに対して、上書きができない。上書きする際には、あらかじめ消去を行わなければならない。この消去は、ブロック単位でしか行うことができないため、ページ単位にデータを更新する場合、消去済みのブロックを用いて行う。このとき、上書きするページのデータと、上書きされるページが属するブロック内の他のページのデータとを消去済みのブロックに書き込まなければならない。
図9は、ブロックAのページCに対して新たな書き込みがあった場合における書き込み動作の一例を示している。
ブロックAのページCにデータを書き込む場合、ページCが属するブロックAの他のページA、B、D…NのデータをブロックBに転送しなければならない。すなわち、先ずページA、BのデータをブロックBに転送し、この後、新たなページCのデータをブロックBに書き込み、次いで、ページD…NのデータをブロックBに転送する必要がある。このため、ページCの小容量のデータを更新する場合においてもデータの移動量が多く、書き込み速度が低下する。
これを改善するための方法として、データの移動量をできるだけ少なくし、性能を改善する方法が開発されている(例えば特許文献1参照)。
しかし、この特許文献1に記載された技術は、ディレクトリ以外のデータに関するものである。しかも、図8に示すNAND型フラッシュメモリへのアクセス状況のトレース結果に見られるように、ディレクトリエントリのようなデータ量が少なく、且つアクセス頻度の多い書き込みに対しては考慮されていない。
特開2003−280822号公報
本発明は、上記課題を解決するためになされたものであり、その目的とするところは、アクセス頻度の高いディレクトリエントリを書き込む際、記憶装置内のデータの移動を最小限に抑えて、高速アクセスが可能な記憶装置を提供しようとするものである。
本発明の記憶装置の第1の態様は、制御部及び記憶部を備える記憶装置であって、前記制御部は、アドレス情報を含む書き込みコマンド内から前記アドレス情報を検出するアドレス情報検出部と、前記アドレス情報を格納するアドレス情報記憶部と、前記アドレス情報検出部で検出した前記アドレス情報が、前記アドレス情報記憶部に記憶されたアドレス情報と一致するか否かを判定する第1のアドレス判定部とを具備し、前記記憶部は、管理領域及び複数のクラスタを含む第1の記憶部と、第2の記憶部を備え、前記制御部は、前記第1のアドレス判定部から一致情報を受けた場合、前記アドレス情報に対応するディレクトリエントリを前記第2の記憶部に格納し、不一致情報を受けた場合、前記第1の記憶部にデータを格納することを特徴とする。
本発明の記憶装置の第の態様は、制御部及び記憶部を備える記憶装置であって、アドレス情報を含む書き込みコマンド内から前記アドレス情報を検出するアドレス情報検出部と、前記アドレス情報検出部で検出したアドレス情報と前記記憶部に対して予め設定されたクラスタサイズ情報とからクラスタアドレス情報を算出するクラスタアドレス情報算出部と、前記クラスタアドレス情報を格納するクラスタアドレス情報記憶部と、前記クラスタアドレス情報算出部で算出した前記クラスタアドレス情報が、前記クラスタアドレス情報記憶部に記憶されたクラスタアドレス情報と一致するか否かを判定するクラスタアドレス判定部とを具備し、前記記憶部は、管理領域及び複数のクラスタを含む第1の記憶部と、第2の記憶部を備え、前記制御部は、前記クラスタアドレス判定部から一致情報を受けた場合、前記クラスタアドレス情報に対応するディレクトリエントリを前記第2の記憶部に格納し、不一致情報を受けた場合、前記第1の記憶部にデータを格納することを特徴とする。
本発明によれば、アクセス頻度の高いディレクトリエントリを書き込む際、記憶装置内のデータの移動を最小限に抑えて、高速アクセスが可能な記憶装置を提供できる。
以下、本発明の実施の形態について図面を参照して説明する。
(第1の実施形態)
図1は、例えば制御部及びNAND型フラッシュメモリを有するメモリカードとしての記憶装置の一例を示している。
図1において、NAND型フラッシュメモリにより構成された記憶部101は、第1の記憶部102と第2の記憶部103とを有している。第1の記憶部102には、管理領域、及び複数のクラスタA、B、C…が記憶される。管理領域は、例えばブート領域、パーティション情報などを記憶する領域、ルートディレクトリエントリ、FATを含んでいる。
また、第2の記憶部103は、第1の記憶部102の例えば1つのクラスタに対応し、システムの管理領域から外れたディレクトリエントリ(サブディレクトリ情報)が書き込まれる。第2の記憶部103は、後述するように、同一のディレクトリエントリを更新する場合、新たなディレクトリエントリとみなされたデータが追記される。ディレクトリエントリとしては、例えばファイル名、ファイルサイズ、書き込み開始アドレスなどがある。
制御部110は、例えば記憶制御部120、アドレス情報記憶部121、第1、第2のアドレス判定部122a、122b、アドレス情報検出部123、サイズ比較部124、データサイズ情報検出部125、クラスタサイズ抽出部126、パーティション情報記憶部127、パーティション情報検出部128を有している。
制御部110は、この構成に限定されるものではなく、例えば図示せぬマイクロプロセッサ及びこのマイクロプロセッサの動作に必要なプログラムを記憶するROMやRAMにより構成し、ソフトウェアにより制御することも可能である。
前記記憶制御部120は、外部インターフェース、及び各構成部からの情報に応じて第1の記憶部102及び第2の記憶部103に対して、ディレクトリエントリやファイルデータなどの書き込み及び読み出し制御を行う。
アドレス情報検出部123は、外部インターフェースを介して供給される書き込みコマンドに付加された書き込み開始アドレスを検出する。
アドレス情報記憶部121は、後述するサイズ比較部124の制御に応じて、アドレス情報検出部123により検出された書き込み開始アドレスを記憶する。
第1のアドレス判定部122aは、アドレス情報検出部123により検出された書き込み開始アドレスがファイルシステムの管理領域内のアドレスか否かを判定する。この判定結果は記憶制御部120に供給される。
第2のアドレス判定部122bは、アドレス情報検出部123により検出された書き込み開始アドレスと、アドレス情報記憶部121に記憶された書き込み開始アドレス情報とを比較する。この比較結果は、記憶制御部120に供給される。
データサイズ情報検出部125は、外部インターフェースを介して供給される書き込みデータのサイズを検出する。書き込みデータは記憶制御部120を介して第1又は第2の記憶部102、103に書き込まれる。
サイズ比較部124は、データサイズ情報検出部125により検出されたデータサイズとクラスタサイズ抽出部126から供給されるクラスタサイズとを比較する。この比較の結果は、アドレス情報記憶部121及び記憶制御部120に供給される。アドレス情報記憶部121は、サイズ比較部124において、書き込みデータのサイズがクラスタサイズ以下と判定された場合、アドレス情報検出部123により検出された書き込み開始アドレス情報を記憶する。
パーティション情報検出部128は、図示せぬホスト機器からの読み出し要求に応じて、記憶部101の例えば管理領域104から読み出されたデータより、予め設定されたパーティション情報及びクラスタ情報を含む情報を検出する。
パーティション情報記憶部127は、パーティション情報検出部128により検出されたパーティション情報及びクラスタサイズを含む情報を記憶する。パーティション情報記憶部127は、パーティション情報が検出されなかった場合を考慮して、製品の出荷時に予め初期値が設定されている。
クラスタサイズ抽出部126は、パーティション情報記憶部127に記憶されたクラスタサイズを抽出する。
次に、図2を参照して第1の実施形態における書き込み処理について説明する。
先ず、アドレス情報検出部123は、図示せぬ外部インターフェースを介して供給された書き込みコマンドに付加された書き込み開始アドレス情報を検出する(ST201)。この後、第1のアドレス判定部122aにより、アドレス情報検出部123で検出した書き込み開始アドレスが管理領域内か否かが判別される(ST202)。この結果、書き込み開始アドレスが管理領域内である場合、第1の記憶部102にデータが書き込まれる(ST203)。すなわち、FATやルートディレクトリに対するデータは、通常の書き込みにより処理される。
一方、前記判定の結果、書き込み開始アドレスが管理領域外である場合、第2のアドレス判定部122bは、アドレス情報検出部123で検出したアドレス情報がアドレス情報記憶部121に記憶された書き込み開始アドレス情報と同じか否かを比較する。すなわち、過去にそのアドレスに対して書き込みが行われたか否かを判定する(ST204)。
この比較の結果、書き込み開始アドレスが過去に書き込まれたことの無いアドレスである場合、第1の記憶部102の空きクラスタへデータが書き込まれる(ST205、ST206)。この時、データサイズ情報検出部125は、外部インターフェースを介して記憶部101に書き込まれたデータのサイズを検出している。
第1の記憶部102へデータの格納が終了した場合、サイズ比較部124は、データサイズ情報検出部125から第1の記憶部102に書き込まれたデータのサイズと、クラスタサイズ抽出部126からパーティション情報記憶部127より抽出したクラスタサイズを取り込み(ST207、ST208)、書き込まれたデータのサイズと、クラスタサイズとを比較判定する(ST209)。
この結果、データサイズがクラスタサイズ以下の場合、ディレクトリの書き込みであると判断され、アドレス情報検出部123で検出した書き込み開始アドレス情報をアドレス情報記憶部121に記憶する(ST210)。また、クラスタサイズよりデータサイズが大きい場合、通常の書き込み処理が行われる。
一方、前記ステップST204における比較の結果、書き込みアドレスとアドレス情報記憶部121に記憶されたアドレスとが一致した場合、すなわち、過去にそのアドレスに対して少ないデータの書き込みが行われている場合、今回の書き込みデータはディレクトリエントリの書き込みであると見なされる。このため、ディレクトリエントリのために設けられた第2の記憶部103にディレクトリエントリと見なされたデータが追記される(ST211、ST212)。
上記のように、ディレクトリエントリがファイルシステムのデータ領域としての第1の記憶部102に書き込まれた場合においても、2回目のディレクトリエントリの書き込み以降は、第2の記憶部103にディレクトリエントリを書き込むことができる。
図3は、第1、第2の記憶部102、103に対する書き込み動作の一例を示している。
図3において、例えばブロックA、B、C、Dは、第1の記憶部102に対応し、例えばブロックEが第2の記憶部103に対応する。各領域のサイズは例えば次のように規定されている。1ページは512バイト、1ブロックは16kバイト、1クラスタは16kバイト、1ディレクトリエントリは32バイトとする。
ここで、前記ステップST204の比較の結果、書き込みアドレスとアドレス情報記憶部121に記憶されたアドレスとが一致した場合、今回の書き込みデータがディレクトリエントリであると判断される。この場合、図3に示す例えば消去されたブロックEのページ1に、ディレクトリエントリとしての新ページ1Cのデータが書き込まれる。また、このディレクトリエントリがブロックCのページ1Cに対するデータの書き込みに対応する場合、ブロックEのページ1に設けられた冗長領域612に、ブロックCのページ1Cを示すデータが書き込まれる。
さらに、次の書き込みにおいて、検出された書き込みアドレスが、再びアドレス情報記憶部121に記憶されたアドレスと一致した場合、ブロックEのページ2に新なディレクトリエントリが追記される。このブロックEのページ2の冗長領域614には、ブロックCのページ1Cを示すデータが書き込まれる。このようにして、アドレス情報記憶部121に記憶されたアドレスと同じ書き込みアドレスに対する書き込み動作に対して、ブロックEに新たなディレクトリエントリが追記される。
NAND型フラッシュメモリは、ページ単位でデータを書き込むため、ページ単位の追記が可能である。このため、追記が可能な範囲において、新たな消去ブロックへデータを移動させる必要がない。
また、例えばディレクトリエントリであると判断したアドレスに変更があった際や、所定のタイミングにより、ブロックEに追記されたディレクトリエントリに基づいて、ブロックCに格納されたディレクトリエントリを更新する。このディレクトリエントリの更新は、以下の手順により行う。まず、ブロックEのページの冗長部を参照し、ブロックEに格納されたディレクトリエントリにより更新されるページを検出する。ここで、ブロックEのページの冗長部にはブロックCのページ1Cを示すデータが書き込まれているため、更新されるページとしてブロックCのページ1Cが検出される。そして、ブロックEに追記されたディレクトリエントリのうち最新のディレクトリエントリ(ブロックEのページ2のデータ)を、消去済みのブロックDの1ページ目に転送し、データが更新されないブロックCの残りのデータをブロックDの2ページ目以降に転送する。これにより、ブロックCに格納されたディレクトリエントリが更新される。
尚、アドレス情報記憶部121には、最低2つ以上のアドレスを記憶する容量が必要である。なぜなら、ファイルで使用する最終クラスタは、クラスタ単位で書き込まれず、クラスタ単位より小さなサイズのデータとして記憶される。この場合、ファイルの最後の部分をディレクトリエントリであると誤認され、この書き込みアドレスがアドレス情報記憶部121に記憶されてしまう。したがって、アドレス情報記憶部121に記憶されたアドレスのうち、例えば複数回の書き込みにおいてディレクトリエントリとしてみなされなかったアドレスは、次回のアドレスがアドレス情報記憶部121に記憶される際、消去してもよい。
上記第1の実施形態によれば、データのサイズがクラスタサイズ以下で、アドレス情報記憶部121に記憶されているアドレスと同じ書き込みアドレスにデータを書き込む場合、記憶部101の第2の記憶部103にディレクトリエントリをページ単位で追記している。このため、追記が可能な範囲において新たな消去ブロックへデータを移動させる必要がない。したがって、ルートディレクトリの下にサブディレクトリを設定した場合においても、書き込み速度の低下を防止することが可能である。
また、第2の記憶部103の冗長領域には、追記したページを示すデータが記憶されている。このため、記憶装置の電源オン時において、ホスト機器は、冗長領域に記憶されたデータより追記されたページを容易に検出することが可能である。
(第2の実施形態)
図4、図5は、第2の実施形態を示している。ディレクトリエントリは、32バイトで、1つのファイル又はフォルダを表現する。このため、512バイトの領域に保存可能なディレクトリエントリの数は16個である。したがって、連続的に複数のファイルを記録した場合で、且つ、ファイル毎に逐一ディレクトリエントリを更新するホスト機器の場合、16個のファイルを書き込むと、書き込み開始アドレスが512バイトシフトする。アドレスを比較する第1の実施形態の場合、16個のファイルを書き込むと、書き込みアドレスが異なるアドレスとなる。このため、16個のファイルを書き込む毎にデータ移動が発生し、書き込み性能が低下する。第2の実施形態はこの問題を解決している。
図4において、記憶装置は、記憶部301と制御部320から構成されている。NAND型フラッシュメモリにより構成された記憶部301は第1の記憶部302と第2の記憶部303により構成されている。第1の実施形態と同様に、第1の記憶部302には、管理領域、及び複数のクラスタA、B、C…が記憶される。また、第2の記憶部303は、第1の記憶部302の例えば1つのクラスタに対応し、システムの管理領域から外れたディレクトリエントリ(サブディレクトリ情報)が書き込まれる。
制御部110は、例えば記憶制御部320、クラスタアドレス情報記憶部321、第1、第2のクラスタアドレス判定部322a、322b、クラスタアドレス情報算出部323、サイズ比較部324、データサイズ情報検出部325、クラスタサイズ抽出部326、パーティション情報記憶部327、パーティション情報検出部328を有している。
制御部110は、この構成に限定されるものではなく、例えば図示せぬマイクロプロセッサ及びこのマイクロプロセッサの動作に必要なプログラムを記憶するROMやRAMにより構成し、ソフトウェアにより制御することも可能である。
また、記憶制御部320、サイズ比較部324、データサイズ情報検出部325、クラスタサイズ抽出部326、パーティション情報記憶部327、パーティション情報検出部328は、第1の実施形態と同様である。
クラスタアドレス情報算出部323は、外部インターフェースを介して書き込みコマンドに付加された書き込み開始アドレスを検出し、この書き込み開始アドレスをクラスタサイズで除算し、この除算結果の整数部を書き込み開始クラスタアドレスとする。
クラスタアドレス情報記憶部321は、サイズ比較部324の制御に応じて、アドレス情報算出部323により算出された書き込み開始クラスタアドレスを記憶する。
第1のクラスタアドレス判定部322aは、クラスタアドレス情報算出部323により算出された書き込み開始クラスタアドレスがファイルシステムの管理領域内のアドレスか否かを判定する。この判定結果は記憶制御部320に供給される。
第2のクラスタアドレス判定部322bは、クラスタアドレス情報算出部323により算出された書き込み開始クラスタアドレスと、クラスタアドレス情報記憶部321に記憶された書き込み開始クラスタアドレス情報とを比較する。この比較結果は、記憶制御部320に供給される。
図5は、第2の実施形態に係る書き込み処理を示している。
先ず、クラスタアドレス情報算出部323は、外部インターフェースを介して供給された書き込みコマンドに付加された書き込み開始アドレス情報を検出し、検出した書き込み開始アドレスをクラスタサイズで除算して書き込み開始アドレスの属する書き込み開始クラスタアドレスを算出する(ST401)。この後、第1のクラスタアドレス判定部322aにより、クラスタアドレス情報算出部323で検出した書き込み開始クラスタアドレスが管理領域内か否かが判別される(ST402)。この結果、書き込み開始クラスタアドレスが管理領域内である場合、通常の書き込み処理により、第1の記憶部302にデータが書き込まれる(ST403)。すなわち、FATやルートディレクトリに対するデータは、通常の書き込みにより処理される。
一方、前記判定の結果、書き込み開始クラスタアドレスが管理領域外である場合、第2のクラスタアドレス判定部322bは、クラスタアドレス情報算出部323で検出したクラスタアドレス情報がクラスタアドレス情報記憶部321に記憶された書き込み開始クラスタアドレス情報と同じか否かを比較する。すなわち、過去にそのクラスタアドレスに対して書き込みが行われたか否かを判定する(ST404)。
この比較の結果、書き込み開始クラスタアドレスが過去に書き込まれたことの無いアドレスである場合、第1の記憶部302の領域へ書き込みデータを格納する(ST405、ST406)。この時、データサイズ情報検出部325は、外部インターフェースを介して記憶装置に書き込まれたデータのサイズを検出している。
第1の記憶部302へデータの格納が終了した場合、サイズ比較部324は、データサイズ情報検出部325から第1の記憶部302に書き込まれたデータのサイズと、クラスタサイズ抽出部326からパーティション情報記憶部327より抽出したクラスタサイズを取り込み(ST407、ST408)、書き込まれたデータのサイズと、クラスタサイズとを比較判定する(ST409)。
この結果、データサイズがクラスタサイズ以下の場合、ディレクトリの書き込みであると判断され、クラスタアドレス情報算出部323で検出した書き込み開始クラスタアドレス情報をクラスタアドレス情報記憶部321に記憶する(ST410)。また、クラスタサイズよりデータサイズが大きい場合、通常の書き込み処理が行われる。
一方、前記ステップST404の比較の結果、書き込みクラスタアドレスとアドレス情報記憶部321に記憶されたクラスタアドレスとが一致した場合、すなわち、過去にそのクラスタアドレスに対して書き込みが行われている場合、今回の書き込みデータはディレクトリエントリの書き込みであると見なされる。このため、ディレクトリエントリのために設けられた第2の記憶部303にディレクトリエントリと見なされたデータが書き込まれる(ST411、ST412)。
尚、第2の記憶部303に記憶するデータは、書き込み要求のあった書き込みデータのみを記憶するか、あるいは、クラスタのデータにクラスタ内の更新されたデータを更新して、クラスタ自体を第2の記憶部303に格納するかのいずれもが可能である。どちらの場合においても、クラスタ内のどのアドレスのデータであるかを見分けるため、第1の実施形態と同様に、第2の記憶部303の冗長記憶部にアドレスを示すフラグを記憶させる。
上記第2の実施形態によれば、クラスタアドレス情報検出部323は、書き込みコマンド内から検出した書き込み開始アドレスをクラスタサイズで除算して書き込み開始アドレスの属する書き込み開始クラスタアドレスを算出し、クラスタアドレス判定部322は、クラスタアドレス情報記憶部321に記憶されたクラスタアドレス情報と、クラスタアドレス情報検出部により検出されたクラスタアドレス情報とが一致した場合、ディレクトリエントリの書き込みと見なし、第2の記憶部303にデータを追記している。したがって、ルートディレクトリの下にサブディレクトリを設定した場合においても、書き込み速度の低下を防止することが可能である。
しかも、ディレクトリエントリは、32バイトで1つのファイル又はフォルダを表現しているため、512バイト内に格納できるディレクトリエントリの数は16個である。ディレクトリエントリのサイズが16kバイトであって、更新サイズが、512バイトであるホスト機器の場合で、ファイルの書き込みごとに逐一ディレクトリエントリを更新する場合、512バイト中に16個のファイルに関するエントリを格納できる。このため、書き込み開始アドレスは、16個のファイルを書き込むと、512バイトシフトする。アドレスを比較する第1の実施形態の場合、16個のファイルを書き込むと、書き込みアドレスが異なるアドレスとなるため、追記状態にある第2の記憶部に書かれなくなる。これに対して、第2の実施形態の場合、アドレスが、512バイトシフトしたとしても、同一のクラスタの範囲内では、同一のクラスタアドレスと見なされる。したがって、クラスタサイズが16kバイトの場合、510個(=512−2(ディレクトリ先頭の2エントリは親ディレクトリ、及び自身のディレクトリに関する情報である))のファイルのディレクトリエントリに対して処理時間がかかるデータ移動処理が発生しないため、高速な書き込みが可能となる。
次に、図6を用いて、第1、第2の実施形態に示す記憶装置が起動されるまでの動作について説明する。記憶装置の起動時の動作は第1、第2の実施形態とも同様であるため、第1の実施形態を例に説明する。
記憶装置に電源が投入されると、ホスト機器から記憶制御部120に読み出し要求が供給される。記憶制御部120は、読み出し要求に応じて記憶部101から例えば管理領域に記憶されたデータを読み出し、ホスト機器に転送する(ST501)。パーティション情報検出部128は、この読み出されたデータからパーティション情報などを検出する(ST502、ST503)。この結果、パーティション情報を検出できた場合(ST504)、パーティション情報記憶部(127、327)内のパーティション情報を更新して格納する(ST504)。
次に、ホスト機器は、図示せぬ外部インターフェースを介して記憶制御部120から供給される読み出しデータに含まれたパーティション情報の中からファイルシステムの種類とクラスタサイズが処理対象か否かを判別する(ST505)。この結果、ファイルシステムの種類とクラスタサイズが処理対象である場合、制御が図2に示すST201、あるいは図5に示すST401に移行される。また、ファイルシステムの種類とクラスタサイズが処理対象外である場合、第2の記憶部を用いない通常の書き込み処理が実行される。
このように、記憶装置の起動時に、ファイルシステムの種類とクラスタサイズが処理対象であるか否かを判別することにより、誤動作を防止することが可能であるとともに、処理の高速化が可能である。
尚、上記第1、第2の実施形態において、サイズ比較部124、324は、クラスタサイズとデータサイズを比較したが、これに限定されるものではなく、例えばクラスタサイズより小さい所定値とデータサイズとを比較し、データサイズが所定値以下である場合、この書き込みデータのアドレスをアドレス情報記憶部121あるいはクラスタアドレス情報記憶部321に格納してもよい。具体的には、クラスタサイズが16kバイトである場合、所定値として例えば4kバイトを設定し、書き込みデータのサイズが4kバイト以下である場合、この書き込みデータのアドレスをアドレス情報記憶部あるいはクラスタアドレス情報記憶部に格納してもよい。
尚、本発明は、上記第1、第2の実施形態に限定されるものではなく、本発明の要旨を変えない範囲において種々変形実施可能なことは勿論である。
本発明の第1の実施形態に係る構成図。 図1の動作を示すフローチャート。 図1に示す記憶部の動作を示す図。 本発明の第2の実施形態に係る構成図。 図4の動作を示すフローチャート。 記憶装置の起動時の動作を示すフローチャート。 FATファイルシステムを示す構成図。 FATファイルシステムの動作の一例を説明するために示す図。 NAND型フラッシュメモリを用いた記憶装置におけるデータ移動の概念を説明するための図。
符号の説明
101、301…記憶部、102、302…第1の記憶部、103、303…第2の記憶部、120、320…制御部、121…アドレス情報記憶部、122a、122b…第1、第2のアドレス判定部、123…アドレス情報検出部、124…サイズ比較部、125…データサイズ情報検出部、128、328…パーティション情報検出部、127、327…パーティション情報記憶部、321…クラスタアドレス情報記憶部、323…クラスタアドレス情報算出部。

Claims (5)

  1. 制御部及び記憶部を備える記憶装置であって、
    前記制御部は、アドレス情報を含む書き込みコマンド内から前記アドレス情報を検出するアドレス情報検出部と、
    前記アドレス情報を格納するアドレス情報記憶部と、
    前記アドレス情報検出部で検出した前記アドレス情報が、前記アドレス情報記憶部に記憶されたアドレス情報と一致するか否かを判定する第1のアドレス判定部と
    を具備し、
    前記記憶部は、管理領域及び複数のクラスタを含む第1の記憶部と、第2の記憶部を備え、
    前記制御部は、前記第1のアドレス判定部から一致情報を受けた場合、前記アドレス情報に対応するディレクトリエントリを前記第2の記憶部に格納し、不一致情報を受けた場合、前記第1の記憶部にデータを格納することを特徴とする記憶装置。
  2. 前記制御部は、
    前記書き込みコマンドに付加された書き込みデータのデータサイズ情報を検出するデータサイズ情報検出部と、
    前記データサイズ情報検出部が検出した前記データサイズ情報と前記記憶部に対して予め設定されたサイズ情報とを比較するサイズ比較部と
    をさらに具備し、
    前記第1のアドレス判定部から不一致情報を受けた場合で、前記サイズ比較部の比較の結果、前記データサイズ情報が前記サイズ情報以下の場合、前記制御部は、前記アドレス情報検出部で検出された前記アドレス情報を前記アドレス情報記憶部に格納し、前記データサイズ情報が前記サイズ情報より大きい場合、前記管理領域及び前記複数のクラスタに書き込み処理を行なうことを特徴とする請求項1に記載の記憶装置。
  3. 制御部及び記憶部を備える記憶装置であって、
    アドレス情報を含む書き込みコマンド内から前記アドレス情報を検出するアドレス情報検出部と、
    前記アドレス情報検出部で検出したアドレス情報と前記記憶部に対して予め設定されたクラスタサイズ情報とからクラスタアドレス情報を算出するクラスタアドレス情報算出部と、
    前記クラスタアドレス情報を格納するクラスタアドレス情報記憶部と、
    前記クラスタアドレス情報算出部で算出した前記クラスタアドレス情報が、前記クラスタアドレス情報記憶部に記憶されたクラスタアドレス情報と一致するか否かを判定するクラスタアドレス判定部と
    を具備し、
    前記記憶部は、管理領域及び複数のクラスタを含む第1の記憶部と、第2の記憶部を備え、
    前記制御部は、前記クラスタアドレス判定部から一致情報を受けた場合、前記クラスタアドレス情報に対応するディレクトリエントリを前記第2の記憶部に格納し、不一致情報を受けた場合、前記第1の記憶部にデータを格納することを特徴とする記憶装置。
  4. 前記制御部は、
    前記書き込みコマンドに付加された書き込みデータのデータサイズ情報を検出するデータサイズ情報検出部と、
    前記データサイズ情報検出部が検出した前記データサイズ情報と前記記憶部に予め設定されたサイズ情報とを比較するサイズ比較部と
    をさらに具備し、
    前記クラスタアドレス判定部から不一致情報を受けた場合で、前記サイズ比較部の比較の結果、前記データサイズ情報が前記サイズ情報と同等又はより小さい場合、前記制御部は、前記クラスタアドレス情報算出部で算出された前記クラスタアドレス情報を前記クラスタアドレス情報記憶部に格納し、前記データサイズ情報が前記サイズ情報より大きい場合、前記管理領域及び前記複数のクラスタに書き込み処理を行なうことを特徴とする請求項3に記載の記憶装置。
  5. 前記制御部は、前記記憶部のパーティション情報及びクラスタ情報を検出するパーティション情報検出部をさらに具備し、
    前記パーティション情報検出部で検出したパーティション情報の中からファイルシステムの種類とクラスタサイズが処理対象でない場合、第2の記憶部を用いずに前記第1の記憶部に書き込み処理を行うことを特徴とする請求項1又は3に記載の記憶装置。
JP2004194328A 2004-06-30 2004-06-30 記憶装置 Expired - Fee Related JP4157501B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2004194328A JP4157501B2 (ja) 2004-06-30 2004-06-30 記憶装置
US10/941,820 US20060004969A1 (en) 2004-06-30 2004-09-16 High-speed accessible memory featuring reduced data movement
CNB2005100818209A CN100514310C (zh) 2004-06-30 2005-06-30 数据移动少可以高速存取的存储装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004194328A JP4157501B2 (ja) 2004-06-30 2004-06-30 記憶装置

Publications (2)

Publication Number Publication Date
JP2006018471A JP2006018471A (ja) 2006-01-19
JP4157501B2 true JP4157501B2 (ja) 2008-10-01

Family

ID=35515380

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004194328A Expired - Fee Related JP4157501B2 (ja) 2004-06-30 2004-06-30 記憶装置

Country Status (3)

Country Link
US (1) US20060004969A1 (ja)
JP (1) JP4157501B2 (ja)
CN (1) CN100514310C (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4192129B2 (ja) * 2004-09-13 2008-12-03 株式会社東芝 メモリ管理装置
CN100370445C (zh) * 2005-08-10 2008-02-20 北京中星微电子有限公司 一种基于文件分配表的数据传输装置和传输方法
JP4751163B2 (ja) * 2005-09-29 2011-08-17 株式会社東芝 メモリシステム
US20070174549A1 (en) * 2006-01-24 2007-07-26 Yevgen Gyl Method for utilizing a memory interface to control partitioning of a memory module
JP5135696B2 (ja) * 2006-03-23 2013-02-06 パナソニック株式会社 電子機器、及びオブジェクト管理方法
JP2008009919A (ja) 2006-06-30 2008-01-17 Toshiba Corp カードコントローラ
WO2008013227A1 (fr) * 2006-07-26 2008-01-31 Panasonic Corporation dispositif de stockage non volatil, dispositif d'accès et système de stockage non volatil
JP2008084184A (ja) * 2006-09-28 2008-04-10 Toshiba Corp メモリコントローラ
JP5142685B2 (ja) 2007-11-29 2013-02-13 株式会社東芝 メモリシステム
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
JP5443998B2 (ja) 2008-07-30 2014-03-19 パナソニック株式会社 不揮発性記憶装置、ホスト装置、不揮発性記憶システム、データ記録方法、およびプログラム
US8392687B2 (en) * 2009-01-21 2013-03-05 Micron Technology, Inc. Solid state memory formatting
JP7262977B2 (ja) 2018-11-08 2023-04-24 キヤノン株式会社 記録装置及びその制御方法、並びにプログラム
CN113630747B (zh) * 2021-08-16 2023-07-18 中国联合网络通信集团有限公司 交通信息处理方法及装置
CN118394282B (zh) * 2024-06-27 2024-08-30 之江实验室 一种数据存储方法、装置、存储介质及电子设备

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09319645A (ja) * 1996-05-24 1997-12-12 Nec Corp 不揮発性半導体記憶装置
JP3588231B2 (ja) * 1997-08-04 2004-11-10 東京エレクトロンデバイス株式会社 データ処理システム及びブロック消去型記憶媒体
WO1999030239A1 (fr) * 1997-12-05 1999-06-17 Tokyo Electron Limited Memoire et procede d'acces
WO2001008015A1 (fr) * 1999-07-28 2001-02-01 Sony Corporation Systeme d'enregistrement, dispositif d'enregistrement de donnees, dispositif a memoire et procede d'enregistrement de donnees
RU2257609C2 (ru) * 1999-10-21 2005-07-27 Мацусита Электрик Индастриал Ко., Лтд. Устройство доступа к полупроводниковой карте памяти, компьютерно-считываемый носитель записи, способ инициализации и полупроводниковая карта памяти
KR100484147B1 (ko) * 2002-07-26 2005-04-18 삼성전자주식회사 플래시 메모리 관리 방법
US20050251617A1 (en) * 2004-05-07 2005-11-10 Sinclair Alan W Hybrid non-volatile memory system

Also Published As

Publication number Publication date
US20060004969A1 (en) 2006-01-05
JP2006018471A (ja) 2006-01-19
CN100514310C (zh) 2009-07-15
CN1716217A (zh) 2006-01-04

Similar Documents

Publication Publication Date Title
US10783071B2 (en) Data storage device and operating method thereof, wherein mapping table for valid data of source block that has not been copied to destination block has a higher priority than mapping information collected by reverse scanning from end of the destination block
TWI459195B (zh) 用來管理一記憶裝置之方法以及其相關之記憶裝置
US10698809B2 (en) Method, associated flash controller and electronic device for accessing flash module with data validity verification
US7840617B2 (en) Host device and memory system
JP3708047B2 (ja) フラッシュメモリの管理方法
US7849253B2 (en) Method for fast access to flash-memory media
EP2570927B1 (en) Handling unclean shutdowns for a system having non-volatile memory
JP4157501B2 (ja) 記憶装置
US20180275887A1 (en) Data Storage Device and Operating Method of Data Storage Device
WO2005124530A2 (en) Method for controlling memory card and method for controlling nonvolatile semiconductor memory
US20080244211A1 (en) Memory device and controller
KR20030040817A (ko) 플래시 메모리 관리방법
JP2006040264A (ja) メモリカードの制御方法および不揮発性半導体メモリの制御方法
JP2007012060A (ja) 逆階層構造を有するファイルシステム
US7051251B2 (en) Method for storing data in a write-once memory array using a write-many file system
JP2008084184A (ja) メモリコントローラ
TWI852599B (zh) 記憶裝置、快閃記憶體控制器及其控制方法
JP4580724B2 (ja) 不揮発性メモリの制御方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080401

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080602

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080711

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

Free format text: PAYMENT UNTIL: 20110718

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110718

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120718

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130718

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees