JP2006277737A - アドレス予測機能をもつ不揮発性記憶装置 - Google Patents
アドレス予測機能をもつ不揮発性記憶装置 Download PDFInfo
- Publication number
- JP2006277737A JP2006277737A JP2006055835A JP2006055835A JP2006277737A JP 2006277737 A JP2006277737 A JP 2006277737A JP 2006055835 A JP2006055835 A JP 2006055835A JP 2006055835 A JP2006055835 A JP 2006055835A JP 2006277737 A JP2006277737 A JP 2006277737A
- Authority
- JP
- Japan
- Prior art keywords
- file
- address
- storage device
- host
- 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.)
- Pending
Links
Images
Landscapes
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
【課題】不揮発性記憶装置からフラグメンテーションを起こしたファイルの読出しにおいて、読出し時間が長くかかる。
【解決手段】ホストから指定される読出し対象アドレスを基にして必要な不揮発性記憶装置の論理的なマッピング情報の一部を、不揮発性メモリからコントローラのFATバッファに転送する機能(405)と、ホストが読み出した最後のデータとFATバッファの情報を基に次にホストが読み出そうとするアドレスを予測し、予測したアドレスを基にして不揮発性メモリからページバッファにデータを予め読み出す機能(406)を備えている。
【選択図】図4
【解決手段】ホストから指定される読出し対象アドレスを基にして必要な不揮発性記憶装置の論理的なマッピング情報の一部を、不揮発性メモリからコントローラのFATバッファに転送する機能(405)と、ホストが読み出した最後のデータとFATバッファの情報を基に次にホストが読み出そうとするアドレスを予測し、予測したアドレスを基にして不揮発性メモリからページバッファにデータを予め読み出す機能(406)を備えている。
【選択図】図4
Description
本発明は、外部からアクセスされるアドレスを予め予測することが可能な半導体メモリを使用した不揮発性記憶装置に関する。
近年、不揮発性メモリを搭載したメモリーカードは、デジタルカメラや携帯電話などの記録媒体として、その市場を拡大している。そしてメモリーカードの記憶容量の増加に伴い、データファイルや静止画等の小容量の記録からより大容量が必要となる動画記録へとその用途は広がっている。
このように扱うファイルの容量が増加していくことによって、メモリーカードからのファイルの読出し、書込みに要する時間が増加していく。書込みを高速化するためにはメモリーカードを扱うホスト機器側のバッファメモリを増やすことでユーザインターフェースとして高速に書きこめたように見せることが出来るが、読み出しに関してはホスト機器側の対応でユーザインターフェースとしての高速化は難しい。
特許文献1に記載の発明では、一般的にファイルは連続して書かれることが多いという前提にたって高速にファイルを読み出す方法を提供していが、メモリーカードに対するファイルの書込み、削除を繰り返すことによって発生するであろうファイルのフラグメンテーション(断片化)に対しての効果はない。
図21,22を用いて従来のファイルの読出し方法について説明する。
図21は従来の不揮発性記憶装置であるメモリーカードとホスト機器のブロック図である。図21において、2101はメモリーカード、102はホスト、2103はメモリーカード内部にありホスト102とフラッシュメモリ104の間で制御を行うコントローラ、コントローラ1203内部には制御回路105とページバッファ106がある。
図22はホスト102がメモリーカード2101からファイルデータを読み出す際のシーケンス図である。なお、ここでメモリーカード2101は、図2に示すような構成のファイルシステムが適用されており、図3に示すファイル(クラスタ位置0x0002、0x0003、0x0005を占有する)を読み出す場合について説明する。
まずステップ2201でホスト102はメモリーカード2101に開始アドレスを指定した読み出しコマンドを発行する。ここでは開始アドレスとしてクラスタ0x0002のアドレスを指定する。
次にステップ2202ではコントローラ2103はホスト102の指定した開始アドレスであるクラスタ0x0002から順次データを読み出してステップ2203でホスト102にセクター単位で転送を行う、なお1クラスタは32セクターである。
ホスト102はクラスタ0x0002とクラスタ0x0003のデータをセクター単位でメモリーカード2101から読み出した後、ステップ2204でメモリーカード2101に対して読み出し停止コマンドを発行する。
コントローラ2103はホスト102から読み出し停止コマンドが発行されるまでは、フラッシュメモリ104から順番にデータを読み続けているので、ホスト102がメモリーカード2101から読み出していないクラスタ0x0004のデータもフラッシュメモリ104から読み出してホスト102へ出力できるようページバッファ106にデータを準備しているが、このデータは読み出されることはなく、コントローラ2103はホスト102から発行された読み出し停止コマンドを受けて動作を停止する。
次にステップ2205でホスト102はクラスタ0x0005のデータを読み出すためにメモリーカード2101にクラスタ0x0005のアドレスを指定して読み出しコマンドを発行する。
ステップ2206ではコントローラ2103はホスト102の指定した開始アドレスであるクラスタ0x0005から順次データを読み出してステップ2207でホスト102にセクター単位で転送を行う。
ホスト102はメモリーカード2101からデータを読み出した後、ステップ2208でメモリーカード1201に読み出し停止コマンドを発行して、ファイルの読み出しを終了する。
ホスト102がメモリーカード2101からデータを読み出す際において、読み出しコマンド発行した後、メモリーカード2101から先頭セクターのデータが出力されるまでの時間はデータの頭出し時間と定義されるが、ファイルがフラグメンテーションしている場合には、この頭出し時間が複数回必要になる。フラッシュメモリ104はデータを読み出すためには最初に一定のビジー時間を要する構成になっているために、メモリーカード2101としても頭出し時間がかかり、結果としてファイル読み出し時の処理時間が遅くなっていた。
次に、図21,23を用いて従来のファイルの書き込み方法について説明する。
図23はホスト102がメモリーカード2101にファイルデータを書き込む際のシーケンス図である。
まずステップ2301でホスト102はメモリーカード2101に開始アドレスを指定した書き込みコマンドを発行する。
次にステップ2302ではホスト102はメモリーカード2101に順次、書き込みデータの転送を行う、転送単位はセクターである。コントローラ2103はホスト102の転送してきたデータを、ステップ2301でホスト102が指定した開始アドレスであるクラスタから順次データとしてフラッシュメモリ104に書き込む。コントローラ2103がフラッシュメモリ104にデータを転送し終えフラッシュメモリ104に書き込んでいる間は、ページバッファ106は空いているのでホスト102は順番にデータを転送してくる。
ホスト102はファイルを書き込む際にクラスタの連続した空き領域がなく複数の離散したクラスタ位置に分散する必要がある場合には、いったん書き込みを停止する必要がある。
そのため、ステップ2303でホスト102はメモリーカード2101に対して書き込み停止コマンドを発行する。コントローラ2103はホストが書き込み停止コマンドを発行するまでに転送してきたデータは全てフラッシュメモリ104に書き込む。従って書き込み停止コマンドを発行してからしばらくの間は、ホスト102はメモリーカード2101に対するデータの書き込みや読み出しは行えない。
その後ステップ2304で改めてホスト102はメモリーカード2101に開始アドレスを指定した書き込みコマンドを発行する。
次にステップ2305ではホスト102はメモリーカード2101に順次、書き込みデータの転送を行う。コントローラ2103はホスト102の転送してきたデータを、ステップ2304でホスト102が指定した開始アドレスであるクラスタから順次データとしてフラッシュメモリ104に書き込む。
ファイルのデータを転送し終えたらホスト102はメモリーカード2101に対して書込み停止コマンドを発行する。
ホスト102がメモリーカード2101からデータを書き込み際において、書き込み停止コマンドを発行した後、メモリーカード2101が使用可能な状態になるまでの時間は書き込みビジー時間と定義されるが、クラスタの空き領域がフラグメンテーションしている場合には、このビジー時間が複数回必要になる。フラッシュメモリ104はデータを書き込むためには一定のビジー時間を要する構成になっているために、メモリーカード2101としても書き込みビジー時間がかかり、結果としてファイル書き込み時の処理時間が遅くなっていた。
特開2000−306389号公報
上述のように、不揮発性記憶装置からフラグメンテーションを起こしたファイルの読出しについて考慮されていないために、読出し時間がかかるという課題があった。
上記課題を解決するために本発明のアドレス予測機能をもつ不揮発性記憶装置は、コントローラと不揮発性メモリからなり、ホスト機器からファイルを読み出しできる不揮発性記憶装置であって、前記コントローラは前記不揮発性メモリと前記ホスト機器の間転送されるデータを一時的に保持する揮発性メモリを備え、前記コントローラは、前記ホスト機器が前記ファイルの一部のデータを読み出し行った後に、前記ファイルにおける前記一部のデータに連続するデータを前記不揮発性メモリから前記揮発性メモリへと読み出しておく機能を備えている。
また別の構成の本発明のアドレス予測機能をもつ不揮発性記憶装置はコントローラと不揮発性メモリからなり、ホスト機器からファイルを読み出しできる不揮発性記憶装置であって、前記ホスト機器から前記不揮発性記憶装置に連続ではない複数のクラスタからなるファイルを読み出すコマンドが発行されたときに、前記コントローラが前記ファイルを構成するクラスタの順に対応するデータを前記不揮発性メモリから読み出して前記ホスト機器へ転送する機能を備えている。
また別の構成の本発明のアドレス予測機能をもつ不揮発性記憶装置はコントローラと不揮発性メモリからなり、ホスト機器からファイルを書き込みできる不揮発性記憶装置であって、前記ホスト機器から前記不揮発性記憶装置にファイルを書き込むコマンドが発行されたときに、前記コントローラが複数の空きクラスタを決定し、前記ファイルのデータを前記不揮発性メモリの前記空きクラスタに対応する場所に書き込む機能を備えている。
また本発明は、上記不揮発性記憶装置に対してデータを読み出しもしくは書き込みを行うホスト機器を含んだ不揮発性記憶装置システムも含む。
本発明のアドレス予測機能をもつ不揮発性記憶装置によれば、得られた予測アドレスに基づきページバッファにデータを読み出すので、フラグメンテーションを起こしたファイルの読出しであっても、高速に不揮発性記憶装置からデータを読み出すことが出来る。
以下、本発明の実施の形態におけるアドレス予測機能をもつ不揮発性記憶装置について説明する。
(実施の形態1)
図1は、本発明の実施の形態1によるアドレス予測機能をもつ不揮発性記憶装置の構成と、それにつながるホスト機器について示したブロック図である。
図1は、本発明の実施の形態1によるアドレス予測機能をもつ不揮発性記憶装置の構成と、それにつながるホスト機器について示したブロック図である。
同図において、101は不揮発性記憶装置であるメモリーカード、102はホストである。メモリーカード101は、103のコントローラと、104の不揮発性メモリであるフラッシュメモリからなる。
コントローラ103は、105の制御回路、106のページバッファ、107のFAT(ファイル・アロケーション・テーブル)バッファ、108のアドレス保持部からなる。
制御回路105は、ページバッファ106を一時的な読出し・書込みデータの記憶場所とすることで、ホスト102からフラッシュメモリ104へのデータの書き込みおよびフラッシュメモリ104からホスト102へのデータの読出しを制御すると共に、FATバッファ107とアドレス保持部108を用いてホスト102から次にアクセスされるであろうアドレスの予測を行い、予測したアドレスのデータを予めフラッシュメモリ104からページバッファ106に転送する。
フラッシュメモリ104は一般的にNANDフラッシュを用いるが、同様に不揮発性メモリから先頭のデータを読み出すための処理に必要な時間(ビジー時間)を経過した後にひとかたまりのデータが連続的に読み出せることを特徴とする不揮発性メモリであればこれに限定されるものではない。
図2は、ホスト102からメモリーカード101を見たときの論理マップを示した概念図である。
512Bのセクターを単位としてセクターアドレス0にはマスターブートレコードがあり、メモリーカード101内におけるパーティションの開始位置やサイズ等の情報が格納されている。以降、未使用領域を挟んだパーティションの開始位置には1セクターのパーティションブートレコードがあり、パーティションブートレコードにはパーティション内のクラスタサイズやFATのサイズ等の管理情報が格納されている。その直後にはそれぞれ複数のセクターからなるFAT1,FAT2があり、ユーザ領域の空き領域情報やファイルのチェーン情報であるユーザ領域のクラスタ間のリンク情報が格納されている。基本的にFAT1とFAT2には同じ情報が格納されている。その直後にルートディレクトリがあり、パーティションのルートディレクトリに含まれるファイルやディレクトリの開始クラスタ位置やサイズ等の管理情報が格納されている。その直後のユーザ領域は16KBのクラスタを単位としてクラスタアドレス0x0002から順にファールのデータやサブディレクトリエントリが格納されている。
図3は、ホスト102が取り扱うファイルの、図2に示す論理マップのなかでの配置の一例を示した図である。図3(a)はホスト102が取り扱う状態のファイルを示しており、301のクラスタF−1、302のクラスタF−2、303のクラスタF−3の3つのクラスタで構成されるファイルを示している。
図3(b)の左側がFAT1に格納されているデータを16bitのワードを単位として示したものである。FAT1の先頭2ワードは0xF8FF、0xFFFFの2ワードの固定値が格納されている。従ってFAT1のなかでユーザ領域の情報が格納されているのは先頭から3ワード目からである。3ワード目はクラスタ0x0002に対応し、以降ワードとクラスタアドレスが順次対応している。図3(b)の右側はユーザ領域におけるクラスタ単位のデータの情報を示している。
ファイルの先頭クラスタの論理アドレスは、ここでは示していないがルートディレクトリもしくはユーザ領域にあるディレクトリで指定されている。しかし、指定されるのは先頭クラスタの論理アドレスのみであり、以降のクラスタの論理アドレスは示されていない。今、図3(a)で示したファイルの先頭クラスタアドレスが0x0002であるとする。図3(b)のユーザ領域のクラスタ番号0x0002の位置にはF−1の情報が格納されている。F−1以降の情報の格納先についてはFAT1を参照して知ることができる。ファイルの先頭クラスタ0x0002に対応するFAT1の情報は0x0003が格納されており、ユーザ領域のクラスタ0x0002に記録されているファイルがクラスタ0x0003にリンクして続けて記録されていることを示している。クラスタ0x0003に対応するFAT1の情報は0x0005が格納されており、ユーザ領域のクラスタ0x0003に記録されているファイルがさらにクラスタ0x0005にリンクして続けて記録されていることを示している。クラスタ0x0005に対応するFAT1の情報は0xFFFFが格納されており、ユーザ領域のクラスタ0x0005に記録されているファイルはクラスタ0x0005で終了していることを示している。
従ってクラスタ0x0002が先頭クラスタであるファイルはユーザ領域のクラスタ0x0002、0x0003、0x0005の順にファイルが分割して格納されていることがわかる。実際に図3(b)に示すようにクラスタ0x0002にF−1、クラスタ0x0003にF−2、クラスタ0x0005にF−5が格納されている。
なお、ユーザ領域のクラスタ0x0004、0x0006に対応するFAT1の情報は0x0000が格納されており、これは対応するクラスタが空き領域であることを示している。
図4はホスト102がメモリーカード101から図3に示したファイルデータを読み出す際のシーケンス図である。
ホスト102は論理マップにおけるFATの情報をホスト側にも読み出しており、F−1,F−2,F−3で構成されるファイルのデータを読み出すためにはクラスタ0x0002、0x0003、0x0005のデータを読み出す必要があることは認識している。
読み出しの開始は、まずステップ401でホスト102からコントローラ103に対してアドレスを指定して読出しコマンドが発行される。このときにホスト102が指定するアドレスは、ファイルの先頭のクラスタアドレスである0x0002である。ここではホスト102はただアドレス情報のみをコントローラ103に与えるものであって、そのアドレスがファイルの先頭を示すことであるとか、これからそのアドレスを先頭としたファイルの読出しを行うといった情報は特に必要なものではない。
その読出しコマンドを受けて、ステップ402でコントローラ103はホスト102の指定したアドレスであるクラスタ0x0002の先頭アドレスに対応するフラッシュメモリ104のデータを読み出してページバッファ106に転送する。なお、クラスタは32のセクターからなりセクターの容量は512Bである。メモリーカード101からホスト102への転送はセクターを最小単位として行われている。
コントローラ103はホスト102から指定されてアドレスから、アドレスの順番に従ってフラッシュメモリ104のデータを読み出してページバッファ106に転送する。
ページバッファ106に読出しデータが転送されたら、次はステップ403でページバッファ106からホスト102へとデータの転送を行い、読出し処理を実行する。また、この期間はページバッファ106に一時的に保持されているデータがホスト102へと転送されて不要となったら、またコントローラ103は次のセクターのデータをラッシュメモリ104から読み出してページバッファ106に転送する。ページバッファ106に読出しデータが転送されたら、次はページバッファ106からホスト102へとデータの転送を行い、読出しを実行するといったことを繰り返して行う。
シーケンスのステップ401からステップ403の最初の転送が開始されるまでの時間は、メモリーカード101からのデータの頭出し時間であり、フラッシュメモリ104に対して読み出しのコマンドを発行してフラッシュメモリ104のデータが読出し可能になるまでの時間(数十μs〜数百μs)とフラッシュメモリ104からデータが読出し可能になってページバッファ106にデータを転送するため必要な時間(〜数百μs)がかかってしまう。
ホスト102は、連続するアドレスに存在するデータであるクラスタ0x0002,0x0003のデータすなわちF−1、F−2をメモリーカード101から読み出したら、シーケンスのステップ404で読出し停止コマンドを発行する。クラスタ0x0005は空き領域のクラスタ0x0004が間にあるのでクラスタ0x0002,0x0003と連続するクラスタとはみなされないため、ホスト102はいったんデータの読み出しを停止する必要がある。コントローラ103はホスト102が読出しを行った最終のアドレス情報をアドレス保持部108に保持する。ここではクラスタ0x0003の最終セクターのアドレスがアドレス保持部108に保持される。
ステップ405でコントローラ102はアドレス保持部108に格納されたアドレスを含むFAT情報をフラッシュメモリ104から読み出してFATバッファ107に格納する。ただし、FATバッファ107に既に必要なFAT情報が格納されている場合はフラッシュメモリ104から再度読み出してくる必要は無い。ここではクラスタ0x0003の情報を含むFAT1の部分であるひとつのセクターをフラッシュメモリ104から読み出すことになる。そしてFATバッファ107のクラスタ0x0003に対応するワードの情報を読み出すことで、クラスタ0x0003に論理的に連続するクラスタはクラスタ0x0005であることを知る。このようにしてステップ405で、コントローラ103はホスト102から次にアクセスされるであろうアドレスを予測することになる。
ステップ406でコントローラ103はクラスタ0x0005の先頭アドレスに対応するフラッシュメモリ104のデータを読み出してページバッファ106に転送すると共に、以降のセクターのデータの読み出しについてもフラッシュメモリ104に対して読み出しのコマンドを発行しておき、直ちにページバッファ106に転送できる状態にしておく。
ステップ407でホスト102はファイルを構成するクラスタ0x0002,0x0003,0x0005のうち最後のクラスタ0x0005の先頭アドレスを指定して読出しコマンドを発行する。ホスト102がひとつのファイルを読み出そうとしたときには、コントローラ103のFATチェーンに従ったアドレス予測は必ず正しく行われることが出来る。
ステップ408では、コントローラ103は、シーケンスのステップ403で行った方法と同様にクラスタ0x0005の先頭アドレスから順にホスト102に対してデータの転送を行う。
ステップ407からステップ408の最初の転送が開始されるまでのデータの頭出しの時間は、シーケンスのステップ406によって、ページバッファ106に読出しデータが既に転送されているので従来に比べて短い時間で行うことが出来る。
最終的にファイルを構成するF1,F2,F3に対応するクラスタ0x0002,0x0003,0x0005のデータを読み出した後にステップ409でホスト102はメモリーカード101に読み出し停止コマンドを発行して、ファイルの読み出しを終了する。
以上、本発明の実施の形態によれば、メモリーカード101はホスト102から得られるアドレス情報を基にしてメモリーカード101内部でFATチェーンを調べることにより、次にホスト102がアクセスするであろうアドレスを正確に予測することができ、その結果ホスト102は不揮発性メモリ101から高速にデータを読み出すことが出来る。
(実施の形態2)
実施の形態1ではメモリーカード101からの1回の読み出しコマンドでアドレスが連続するデータしか読み出せなかった。そのために、ファイルにフラグメンテーションが発生しているときには、ホスト102は複数回の読み出しコマンドを発行する必要があった。そこで1回の読み出しコマンドでの不連続なデータの読み出しに対応することでより高速に読み出し処理を行うことができるので、その方法について説明する。
実施の形態1ではメモリーカード101からの1回の読み出しコマンドでアドレスが連続するデータしか読み出せなかった。そのために、ファイルにフラグメンテーションが発生しているときには、ホスト102は複数回の読み出しコマンドを発行する必要があった。そこで1回の読み出しコマンドでの不連続なデータの読み出しに対応することでより高速に読み出し処理を行うことができるので、その方法について説明する。
図5はホスト102がメモリーカード101から図3に示したファイルデータを読み出す際のシーケンス図である。
まず、ステップ501でホスト102はメモリーカード101に開始アドレスであるクラスタ0x0002のアドレスを指定したチェイン読み出しコマンドを発行する。チェイン読み出しコマンドとは、アドレスの順に読み出しを行うのではなく、ファイルを構成するクラスタ順にデータを読み出すことのできるコマンドである。
ステップ502でコントローラ103はチェイン読み出しコマンドを受けて開始アドレスであるクラスタ0x0002を含むFATの情報をフラッシュメモリ104から読み出してFATバッファ107に格納する。
ステップ503でコントローラ103はFATバッファ107に格納したFATの情報をホスト102から指定された先頭アドレスであるクラスタ0x0002からのチェイン情報を取得し、今回のチェイン読み出しコマンドでクラスタ0x0002、0x0003、0x0005の順にデータを読み出す必要があることがわかるので、それぞれのクラスタを構成するデータをフラッシュメモリ104から読み出してページバッファ106に順次転送する。
ステップ504でホスト102はメモリーカード101からデータを順次読み出すことでファイルを構成するF−1,F−2,F−3に対応するクラスタ0x0002,0x0003,0x0005のデータを読み出すことができる。
最後にステップ505でホスト102はメモリーカード101に読み出し停止コマンドを発行してファイルの読み出しを終了する。
上記のように、ファイルがフラグメンテーションを起こしていてもホスト102は1回の読み出しコマンドでファイルのデータを読み出すことができるので、メモリーカード101から高速にデータを読み出すことができる。
なお、ホスト102の認識しているFATの情報と、メモリーカード101内部で認識しているFATの情報すなわちステップ502でコントローラ103がフラッシュメモリ104から読み出したFATの情報の整合性をホスト102が確認する手法として、ホスト102はメモリーカード101からファイルのチェイン情報を取得するコマンドを有している。
ステップ506でホスト102はメモリーカード101に開始アドレスを指定してチェイン情報取得コマンドを発行すると、ステップ507でコントローラ103はFATの情報をフラッシュメモリ104から読み出してFATバッファ107に格納し、その後ステップ508で連続するアドレス情報をホスト102に転送する。
ステップ506で開始アドレスをクラスタ0x0002と指定した場合には、ステップ508でホスト102が読み出せるアドレス情報は0x0002,0x0003、x00005となる。
ホスト102は自身が持つFATの情報とステップ508で得られるアドレス情報を照合することによりファイルデータが正しいアドレスから読み出されているかどうかの整合性を確認することができる。
また、本実施の形態ではFATの情報をフラッシュメモリ104から読み出しているために、ホスト102自身が持つFATの情報とステップ508で得られるアドレス情報の整合性の確認の手段が備えられているが、ホスト102がメモリーカード101にあらかじめFATの情報を転送しておけばステップ508でのフラッシュメモリ104から読み出す処理は不要となり、さらに高速に読み出しを実現できる。
(実施の形態3)
実施の形態1および実施の形態2ではコントローラはFATバッファを持ち、自らFATチェインを読み解く必要があるが、FATのチェインを読み解く機能は少なくともホスト側では備えている機能なので、必ずしもコントローラに備えていなくてはならないものではない。コントローラにFATを読み解く機能がなくても高速に読み出し処理を行うことは可能である。以降この方法について説明する。
実施の形態1および実施の形態2ではコントローラはFATバッファを持ち、自らFATチェインを読み解く必要があるが、FATのチェインを読み解く機能は少なくともホスト側では備えている機能なので、必ずしもコントローラに備えていなくてはならないものではない。コントローラにFATを読み解く機能がなくても高速に読み出し処理を行うことは可能である。以降この方法について説明する。
図6は本発明の実施例の不揮発性記憶装置の構成と、それにつながるホスト機器について示したブロック図である。
同図において、図1と同じものを同じ番号を付している。メモリーカード601はコントローラ603とフラッシュメモリ104からなり、コントローラ603は、105の制御回路、106のページバッファ、608のアドレスリスト保持部からなる。
アドレスリスト保持部608とは任意のファイルを構成するクラスタアドレスのリスト情報を格納するところである。
図7はホスト102がメモリーカード601から図3に示したファイルデータを読み出す際のシーケンス図である。
最初に、ステップ701でホスト102はメモリーカード601に読み出しを行うファイルのクラスタアドレスのリストを指定したリスト読み出しコマンドを発行する。リスト読み出しコマンドとは、アドレスの順に読み出しを行うのではなく、指定したクラスタアドレス順にデータを読み出すことのできるコマンドである。ここでホスト102がメモリーカード601に指定するクラスタアドレスのリストは図8に示している。ファイルを構成するF−1,F−2,F−3に対応するクラスタアドレスをホスト102が認識しているFAT情報から作成されるリストで、先頭にはファイルの先頭のF−1に対応する0x0002、以降0x0003,0x0005,0x000Fという4つのアドレスのリストがステップ701で指定される。なお、クラスタアドレス0xFFFFとはアドレスを示しているのではなくファイルの終了を示している。
ステップ702でコントローラ603はリスト読み出しコマンドを受けて指令されたクラスタアドレスのリストをアドレスリスト保持部608に格納する。そして格納したリストの順序に従いクラスタ0x0002、0x0003、0x0005の順にデータを読み出してページバッファ106に順次転送する。
ステップ703でホスト102はメモリーカード101からデータを順次読み出すことでファイルを構成するF−1,F−2,F−3に対応するクラスタ0x0002,0x0003,0x0005のデータを読み出すことができる。
上記のように、ファイルがフラグメンテーションを起こしていてもホスト102はファイルのアドレスのリスト情報を指定して読み出しコマンドを発行することで1回の読み出しコマンドでファイルのデータを読み出すことができるので、メモリーカード601から高速にデータを読み出すことができる。
(実施の形態4)
実施の形態1および実施の形態2ではFATを使用したファイルシステム、すなわち図3(b)に示すように、ひとつのクラスタに対してひとつのワードを持ち、そこにはファイルを構成しているデータの次のクラスタアドレスが格納される。つまりFATは全てのクラスタに対して、そのクラスタと同じファイルで次に続くデータの存在するクラスタアドレスの情報が格納されるチェイン情報タイプのファイルシステムである。FATはファイルに対して構成されるのではなく、クラスタに対応して構成されている。
実施の形態1および実施の形態2ではFATを使用したファイルシステム、すなわち図3(b)に示すように、ひとつのクラスタに対してひとつのワードを持ち、そこにはファイルを構成しているデータの次のクラスタアドレスが格納される。つまりFATは全てのクラスタに対して、そのクラスタと同じファイルで次に続くデータの存在するクラスタアドレスの情報が格納されるチェイン情報タイプのファイルシステムである。FATはファイルに対して構成されるのではなく、クラスタに対応して構成されている。
それに対してファイルに対して、ファイルを構成するクラスタのリスト情報を保持するファイルシステムもある。図8に示したようなクラスタアドレスのリストでファイルの構成を管理するファイルシステムである。
図9はそういったファイルシステムの例を示したものである。図9の内容について以下に説明する。
ファイルを管理するためにファイルエントリ901と呼ばれるファイルがある。ファイルエントリ901は複数のファイルをひとつのファイルに対してひとつのレコードを持つことで管理している。各レコードには必ずアドレスリスト902へのポインタとなるクラスタアドレスを持つ。アドレスリスト902へのポインタ以外にはファイルを特定するためのID情報(例えばシリアルナンバーやファイル名)も格納される。
アドレスリスト902には対応するファイルを構成するクラスタアドレスのリストが格納される。他にもファイルに関するさまざまな情報(作成日やファイルサイズやファイルの種類など)も格納される。
図9の例ではファイルFというのはファイルエントリ901でひとつのレコード903として登録されている。レコード903にはファイルのID情報であるファイル名「F」とアドレスリストへのポインタとしてクラスタアドレス0x0007が登録されている。クラスタ0x0007にはアドレスリスト902が存在している。アドレスリスト902にはファイル「F」を構成するクラスタアドレスのリストである0x0002,0x0003、x00005が格納されており、そのほかにここでは示していないがファイル「F」に関するさまざまな情報が格納されている。なお、ここでファイルエントリ901もクラスタアドレス0x0006のクラスタを占有するひとつのファイルである。
図10は本発明の実施例の不揮発性記憶装置の構成と、それにつながるホスト機器について示したブロック図である。
同図において、図1と同じものを同じ番号を付している。メモリーカード1001はコントローラ1003とフラッシュメモリ104からなり、コントローラ1003は、105の制御回路、106のページバッファ、1007のエントリバッファ、1008のアドレスリスト保持部からなる。
エントリバッファ1007はファイルエントリ901を格納するためのバッファであり、アドレスリスト保持部1008とは任意のファイルを構成するクラスタアドレスのリスト情報を格納するところである。
図11はホスト102がメモリーカード1001から図9に示したファイルデータを読み出す際のシーケンス図である。
最初に、ステップ1101でホスト102はメモリーカード1001に読み出しを行うファイルのアドレスリスト902へのポインタを管理しているファイルエントリ901の存在するクラスタアドレスと、読み出しを行うファイルのID情報を指定したポインタ読み出しコマンドを発行する。ポインタ読み出しコマンドとは、クラスタアドレスのリストが格納されたファイルへアクセスするための情報を指定して、そのクラスタアドレス順にデータを読み出すことのできるコマンドである。ここでホスト102がメモリーカード1001に対してファイルエントリの存在するクラスタアドレスである0x0006とファイルを特定するためのID情報であるファイル名「F」を指定する。
ステップ1102でコントローラ1003はポインタ読み出しコマンドを受けて指定されたクラスタアドレスの0x0006のファイルエントリ901の情報をフラッシュメモリ104から読み出してエントリバッファ1007に転送する。そして、エントリバッファ1007の中からID情報であるファイル名が「F」のレコードを検索し、アドレスリストへのポインタ0x0007を得る。そしてクラスタアドレス0x0007のアドレスリスト902の情報をフラッシュメモリ104から読み出して1008のアドレスリスト保持部に格納する。
ステップ1103ではステップ1102で格納したリストの順序に従いクラスタ0x0002、0x0003、0x0005の順にデータを読み出してページバッファ106に順次転送する。
ステップ1104でホスト102はメモリーカード101からデータを順次読み出すことでファイルFを構成するクラスタ0x0002,0x0003,0x0005のデータを読み出すことができる。
最後にステップ1105でホスト102はメモリーカード101に読み出し停止コマンドを発行する。
上記のように、ファイルがフラグメンテーションを起こしていてもホスト102はファイルのアドレスのリスト情報を指定して読み出しコマンドを発行することで1回の読み出しコマンドでファイルのデータを読み出すことができるので、メモリーカード1001から高速にデータを読み出すことができる。
なお、ここではファイルのID情報としてファイル名を使用してファイルエントリ内のレコードを特定する方法について説明したが、ファイルエントリ内におけるファイルを特定できる情報であればファイル名に限定されるものではなく、シリアルナンバーであったり、ファイルエントリ内のレコードの格納順番を示すインデックスで指定してもよい。
(実施の形態5)
実施の形態4では、ファイルエントリのクラスタアドレスと、ファイルを特定するID情報でもってアドレスリストの存在するファイルのクラスタアドレスを間接的に指定する場合について説明しているが、ホストが直接アドレスリストの存在するクラスタアドレスを指定して読み出すことも可能である。
実施の形態4では、ファイルエントリのクラスタアドレスと、ファイルを特定するID情報でもってアドレスリストの存在するファイルのクラスタアドレスを間接的に指定する場合について説明しているが、ホストが直接アドレスリストの存在するクラスタアドレスを指定して読み出すことも可能である。
図12はホスト102がメモリーカード1001から図9に示したファイルデータを読み出す際のシーケンス図である。
最初に、ステップ1201でホスト102はメモリーカード1001に読み出しを行うファイルのアドレスリスト902のクラスタアドレス0x0007を指定したポインタ読み出しコマンドを発行する。
ステップ1202でコントローラ1003はステップ1201でホスト102から指定されたクラスタアドレス0x0007のアドレスリスト902の情報をフラッシュメモリ104から読み出して1008のアドレスリスト保持部に格納する。
ステップ1203ではステップ1202で格納したリストの順序に従いクラスタ0x0002、0x0003、0x0005の順にデータを読み出してページバッファ106に順次転送する。
ステップ1203でホスト102はメモリーカード101からデータを順次読み出すことでファイルFを構成するクラスタ0x0002,0x0003,0x0005のデータを読み出すことができる。
最後にステップ1204でホスト102はメモリーカード101に読み出し停止コマンドを発行する。
上記のように、ファイルがフラグメンテーションを起こしていてもホスト102はファイルのアドレスリストの存在するアドレス情報を指定して読み出しコマンドを発行することで1回の読み出しコマンドでファイルのデータを読み出すことができるので、メモリーカード1001から高速にデータを読み出すことができる。
(実施の形態6)
実施の形態2ではコントローラはFATバッファを持ち、自らFATチェインを読み解きホストからのチェイン読み出しコマンドに対応してファイルのクラスタが構成されている順に読み出しを行っているが、FATバッファを使用することで空きクラスタ領域に順に書き込みを行うことも可能である。以降FATバッファを使用した書き込みについて説明する。
実施の形態2ではコントローラはFATバッファを持ち、自らFATチェインを読み解きホストからのチェイン読み出しコマンドに対応してファイルのクラスタが構成されている順に読み出しを行っているが、FATバッファを使用することで空きクラスタ領域に順に書き込みを行うことも可能である。以降FATバッファを使用した書き込みについて説明する。
図13は本発明の実施例の不揮発性記憶装置の構成と、それにつながるホスト機器について示したブロック図である。
同図において、図1と同じものを同じ番号を付している。メモリーカード1301はコントローラ1303とフラッシュメモリ104からなり、コントローラ1303は、105の制御回路、106のページバッファ、1307のFATバッファ、1308のアドレスリスト登録部からなる。
FATバッファ1307はFATを一時的に格納するバッファで、空きクラスタを検索して書き込み先のクラスタアドレスを決定するために使用する。アドレス登録部1308は書き込みを行ったクラスタアドレスのリストを登録しておくところである。
図14はホスト102がメモリーカード1301にファイルデータを書き込む際のシーケンス図である。
最初に、ステップ1401でホスト102はメモリーカード1301に空きエントリ書き込みコマンドを発行する。空きエントリ書き込みコマンドとはFATから空き領域を検索して、その検索したクラスタにデータを書き込むことを指示するコマンドである。
ステップ1402でコントローラはFATの情報をフラッシュメモリ104から読み出してFATバッファ1307に格納し、FATから空き領域を検索する。
ステップ1403でホスト102はメモリーカード1301に対してファイルの書き込みデータを転送していく、コントローラ1303はホスト102から転送されるデータを、ステップ1402で検索した空き領域であるクラスタのデータとしてフラッシュメモリ104に順次書き込んでいく。そして書き込みに使用したクラスタの情報をアドレス登録部1308に登録していく。
ファイルのデータを全て転送した後に、ステップ1404でホスト102はメモリーカード1301に書き込み停止コマンドを発行し処理を終了する。
なお、メモリーカード1301内部で実際に書き込みが行われたクラスタに関する情報をホスト102が得る手法として、ホスト102はメモリーカード1301からファイルの書き込み時に使用したクラスタのチェイン情報を取得するコマンドを有している。
ステップ1405でホスト102はメモリーカード1301に処理エントリの問い合わせコマンドを発行すると、ステップ1406ではステップ1403でコントローラ1303が登録していたアドレス登録部1308の情報をホスト102に転送する。
ホスト102はステップ1406で得られる情報により自身が持つFATの情報を正しく更新することができる。
上記のように、クラスタの空き領域が離散していてもホスト102はFATから空き領域を検索して、その検索したクラスタにデータを書き込むことを指示することで1回の書き込みコマンドでファイルのデータを書き込むことができるので、メモリーカード1301に高速にデータを書き込むことができる。
(実施の形態7)
実施の形態6ではコントローラがフラッシュメモリから読み出したFATの情報を利用して空き領域を検索しているが、ホストの認識しているFATの情報と整合していない危険性があると共に、フラッシュメモリから読み出すために時間を要することになるので、ホストが直接メモリーカードにFAT情報を提供する方法もある。以降この方法について説明する。
実施の形態6ではコントローラがフラッシュメモリから読み出したFATの情報を利用して空き領域を検索しているが、ホストの認識しているFATの情報と整合していない危険性があると共に、フラッシュメモリから読み出すために時間を要することになるので、ホストが直接メモリーカードにFAT情報を提供する方法もある。以降この方法について説明する。
本発明の不揮発性記憶装置の構成は実施の形態7と同じ図13である。
図15はホスト102がメモリーカード1301にファイルデータを書き込む際のシーケンス図である。
最初に、ステップ1501でホスト102はメモリーカード1301にFAT情報の転送を行う。コントローラ1303はホスト102から転送されたFAT情報をFATバッファ1307に格納する。
ステップ1502でコントローラ1303はFATバッファ1307から空き領域を検索する。
ステップ1503でホスト102はメモリーカード1301に空きエントリ書き込みコマンドを発行する。空きエントリ書き込みコマンドとはFATから空き領域を検索して、その検索したクラスタにデータを書き込むことを指示するコマンドである。
次に、ステップ1504でホスト102はメモリーカード1301に対してファイルの書き込みデータを転送していく、コントローラ1303はホスト102から転送されるデータを、ステップ1502で検索した空き領域であるクラスタのデータとしてフラッシュメモリ104に順次書き込んでいく。そして書き込みに使用したクラスタの情報をアドレス登録部1308に登録していく。
ファイルのデータを全て転送した後に、ステップ1505でホスト102はメモリーカード1301に書き込み停止コマンドを発行し処理を終了する。
上記のように、クラスタの空き領域が離散していてもホスト102はFATから空き領域を検索して、その検索したクラスタにデータを書き込むことを指示することで1回の書き込みコマンドでファイルのデータを書き込むことができるので、メモリーカード1301に高速にデータを書き込むことができる。
(実施の形態8)
実施の形態6および実施の形態7ではコントローラはFATバッファを持ち、自ら空き領域を検索する必要があるが、必ずしもコントローラに備えていなくてはならないものではない。ホスト側で空き領域を検索しておき高速に書き込み処理を行うことは可能である。以降この方法について説明する。
実施の形態6および実施の形態7ではコントローラはFATバッファを持ち、自ら空き領域を検索する必要があるが、必ずしもコントローラに備えていなくてはならないものではない。ホスト側で空き領域を検索しておき高速に書き込み処理を行うことは可能である。以降この方法について説明する。
図6は本発明の実施例の不揮発性記憶装置の構成と、それにつながるホスト機器について示したブロック図である。
同図において、図1と同じものを同じ番号を付している。メモリーカード601はコントローラ603とフラッシュメモリ104からなり、コントローラ603は、105の制御回路、106のページバッファ、608のアドレスリスト保持部からなる。
アドレスリスト保持部608とは任意のファイルを構成するクラスタアドレスのリスト情報を格納するところである。
図16はホスト102がメモリーカード601にファイルデータを書き込む際のシーケンス図である。
最初に、ステップ1601でホスト102はメモリーカード601にアドレスリストを指定したリスト書き込みコマンドを発行する。リスト書き込みコマンドとは指定したクラスタのリストの順にデータを書き込むことを指示するコマンドである。
ステップ1602でコントローラ603はステップ1601でホスト102から指定されたアドレスをアドレスリスト保持部608に格納する。
次に、ステップ1603でホスト102はメモリーカード601に対してファイルの書き込みデータを転送していく、コントローラ603はホスト102から転送されるデータを、ドレスリスト保持部608に保持されたリストの順に対応クラスタのデータとしてフラッシュメモリ104に順次書き込んでいく。
ホスト102はファイルのデータを全て転送し、コントローラ603がホストから転送されたデータを全てフラッシュメモリ104に書き終えて処理を終了する。
上記のように、クラスタの空き領域が離散していてもホスト102は書き込み先となるクラスタアドレスのリストをメモリーカード601に指示することで1回の書き込みコマンドでファイルのデータを書き込むことができるので、メモリーカード1301に高速にデータを書き込むことができる。
(実施の形態9)
実施の形態6および実施の形態7ではFATを使用したファイルシステムを前提にしているが、クラスタを管理する方法としてはFATを使用したものではなく、クラスタ単位のビット情報として管理するファイルシステムもある。
実施の形態6および実施の形態7ではFATを使用したファイルシステムを前提にしているが、クラスタを管理する方法としてはFATを使用したものではなく、クラスタ単位のビット情報として管理するファイルシステムもある。
図17はスペースビットマップの構成を示した図である。スペースビットマップ1701はビットマップでクラスタの使用状況を管理するファイルシステムの例である。各クラスタが使用されている状態なのか、空き状態なのかを1クラスタにつき1ビットの情報として格納している。使用している状態はビット“0”で、空き状態はビット“1”で表している。すなわち図17の状態ではクラスタ0x0002,0x0003x0x0005が使用している状態でクラスタ0x0004,0x0006は空き状態であることを示している。
以降、ビットマップを使用した場合の実施の形態について説明する。
図18は本発明の実施例の不揮発性記憶装置の構成と、それにつながるホスト機器について示したブロック図である。
同図において、図1と同じものを同じ番号を付している。メモリーカード1801はコントローラ1803とフラッシュメモリ104からなり、コントローラ1803は、105の制御回路、106のページバッファ、1807のビットマップバッファ、1808のアドレスリスト保持部からなる。
ビットマップバッファ1807はスペースビットマップ1701を格納するためのバッファであり、アドレスリスト保持部1808とはクラスタアドレスのリスト情報を格納するところである。
図19はホスト102がメモリーカード1001にファイルデータを書き込む際のシーケンス図である。
最初に、ステップ1901でホスト102はメモリーカード1801に空きエントリ書き込みコマンドを発行する。空きエントリ書き込みコマンドとはスペースビットマップから空き領域を検索して、その検索したクラスタにデータを書き込むことを指示するコマンドである。
ステップ1902でコントローラはスペースビットマップの情報をフラッシュメモリ104から読み出してビットマップバッファ1907に格納し、ビットマップバッファ1907から空き領域を検索する。
ステップ1903でホスト102はメモリーカード1801に対してファイルの書き込みデータを転送していく、コントローラ1803はホスト102から転送されるデータを、ステップ1902で検索した空き領域であるクラスタのデータとしてフラッシュメモリ104に順次書き込んでいく。そして書き込みに使用したクラスタの情報をアドレス登録部1808に登録していく。
ファイルのデータを全て転送した後に、ステップ1904でホスト102はメモリーカード1801に書き込み停止コマンドを発行し処理を終了する。
なお、メモリーカード1801内部で実際に書き込みが行われたクラスタに関する情報をホスト102が得る手法として、ホスト102はメモリーカード1801からファイルの書き込み時に使用したクラスタのリスト情報を取得するコマンドを有している。
ステップ1905でホスト102はメモリーカード1801に処理エントリの問い合わせコマンドを発行すると、ステップ1906ではステップ1903でコントローラ1803が登録していたアドレス登録部1808の情報をホスト102に転送する。
ホスト102はステップ1906で得られる情報を使用して自身が持つビットマップの情報を正しく更新することができる。
上記のように、クラスタの空き領域が離散していてもホスト102はビットマップバッファから空き領域を検索して、その検索したクラスタにデータを書き込むことを指示することで1回の書き込みコマンドでファイルのデータを書き込むことができるので、メモリーカード1801に高速にデータを書き込むことができる。
(実施の形態10)
実施の形態9ではコントローラがフラッシュメモリから読み出したスペースビットマップの情報を利用して空き領域を検索しているが、ホストの認識しているスペースビットマップの情報と整合していない危険性があると共に、フラッシュメモリから読み出すために時間を要することになるので、ホストが直接メモリーカードにスペースビットマップ情報を提供する方法もある。以降この方法について説明する。
実施の形態9ではコントローラがフラッシュメモリから読み出したスペースビットマップの情報を利用して空き領域を検索しているが、ホストの認識しているスペースビットマップの情報と整合していない危険性があると共に、フラッシュメモリから読み出すために時間を要することになるので、ホストが直接メモリーカードにスペースビットマップ情報を提供する方法もある。以降この方法について説明する。
本発明の不揮発性記憶装置の構成は実施の形態9と同じ図18である。
図20はホスト102がメモリーカード1001にファイルデータを書き込む際のシーケンス図である。
最初に、ステップ2001でホスト102はメモリーカード1801にビットマップ情報の転送を行う。コントローラ1803はホスト102から転送されたビットマップ情報をビットマップバッファ1807に格納する。
ステップ2002でコントローラ1803はビットマップバッファ1807から空き領域を検索する。
ステップ2003でホスト102はメモリーカード1801に空きエントリ書き込みコマンドを発行する。空きエントリ書き込みコマンドとはスペースビットマップから空き領域を検索して、その検索したクラスタにデータを書き込むことを指示するコマンドである。
ステップ2004でホスト102はメモリーカード1801に対してファイルの書き込みデータを転送していく、コントローラ1803はホスト102から転送されるデータを、ステップ2002で検索した空き領域であるクラスタのデータとしてフラッシュメモリ104に順次書き込んでいく。そして書き込みに使用したクラスタの情報をアドレス登録部1808に登録していく。
ファイルのデータを全て転送した後に、ステップ2005でホスト102はメモリーカード1801に書き込み停止コマンドを発行し処理を終了する。
上記のように、クラスタの空き領域が離散していてもホスト102はビットマップバッファから空き領域を検索して、その検索したクラスタにデータを書き込むことを指示することで1回の書き込みコマンドでファイルのデータを書き込むことができるので、メモリーカード1801に高速にデータを書き込むことができる。
以上のように、本発明に係わるアドレス予測機能をもつ不揮発性記憶装置は、フラグメンテーションの発生したファイルに対しても高速読み出しを行なうことができるので、音楽データや映像データを取り扱う機器、例えばデジタルカメラやデジタルビデオカメラ等の携帯機器のデータを記憶する記憶装置に用いるのに適している。
101、601、1001、1301、1801、2101 メモリーカード
102 ホスト
103、603、1003、1303、1803、2103 コントローラ
104 フラッシュメモリ
105 制御回路
106 ページバッファ
107、1307 FATバッファ
108 アドレス保持部
608、1008 アドレスリスト保持部
901 ファイルエントリ
902 アドレスリスト
903 レコード
1007 エントリバッファ
1308、1808 アドレス登録部
1701 スペースビットマップ
1807 ビットマップバッファ
102 ホスト
103、603、1003、1303、1803、2103 コントローラ
104 フラッシュメモリ
105 制御回路
106 ページバッファ
107、1307 FATバッファ
108 アドレス保持部
608、1008 アドレスリスト保持部
901 ファイルエントリ
902 アドレスリスト
903 レコード
1007 エントリバッファ
1308、1808 アドレス登録部
1701 スペースビットマップ
1807 ビットマップバッファ
Claims (34)
- コントローラと不揮発性メモリからなり、ホスト機器からファイルを読み出しできる不揮発性記憶装置であって、
前記コントローラは、前記不揮発性メモリと前記ホスト機器の間転送されるデータを一時的に保持する揮発性メモリを備え、
前記コントローラは、前記ホスト機器が前記ファイルの一部のデータを読み出し行った後に、前記ファイルにおける前記一部のデータに連続するデータを前記不揮発性メモリから前記揮発性メモリへと読み出しておくことを特徴とするアドレス予測機能をもつ不揮発性記憶装置。 - 前記ファイルにおける前記一部のデータに連続するデータの位置を特定するためにファイルシステムの情報用いることを特徴とする請求項1に記載のアドレス予測機能をもつ不揮発性記憶装置。
- 前記コントローラは前記ファイルシステムの情報を格納するためのファイルシステムバッファをさらに備え、
前記ファイルシステムの情報は前記不揮発性メモリから読み出すことを特徴とする請求項2に記載のアドレス予測機能をもつ不揮発性記憶装置。 - コントローラと不揮発性メモリからなり、ホスト機器からファイルを読み出しできる不揮発性記憶装置であって、
前記ホスト機器から前記不揮発性記憶装置に連続ではない複数のクラスタからなるファイルを読み出すコマンドが発行されたときに、前記コントローラが前記ファイルを構成するクラスタの順に対応するデータを前記不揮発性メモリから読み出して前記ホスト機器へ転送することを特徴とするアドレス予測機能をもつ不揮発性記憶装置。 - 前記コントローラが前記ファイルを構成するクラスタの順を特定するためにファイルシステムの情報用いることを特徴とする請求項4に記載のアドレス予測機能をもつ不揮発性記憶装置。
- 前記コントローラは前記ファイルシステムの情報を格納するためのファイルシステムバッファをさらに備え、
前記ファイルシステムの情報は前記不揮発性メモリから読み出すことを特徴とする請求項5に記載のアドレス予測機能をもつ不揮発性記憶装置。 - 前記コントローラは特定した前記ファイルを構成するクラスタの順を格納するためのアドレス保持部をさらに備えたことを特徴とする請求項6に記載のアドレス予測機能をもつ不揮発性記憶装置。
- 前記コントローラは特定した前記ファイルを構成するクラスタの順を前記ホスト機器に出力する手段を備えたことを特徴とする請求項6に記載のアドレス予測機能をもつ不揮発性記憶装置。
- 前記コントローラは前記ファイルシステムの情報を格納するためのファイルシステムバッファをさらに備え、
前記ファイルシステムの情報は前記ホスト機器から前記ファイルシステムバッファに転送されることを特徴とする請求項5に記載のアドレス予測機能をもつ不揮発性記憶装置。 - 前記コントローラはアドレスリスト保持部をさらに備え、
前記ファイルを構成するクラスタの順が、前記アドレス保持部に格納されることを特徴とする請求項4に記載のアドレス予測機能をもつ不揮発性記憶装置。 - 前記ファイルを構成するクラスタの順は、前記ホスト機器から前記アドレス保持部に転送されることを特徴とする請求項10に記載のアドレス予測機能をもつ不揮発性記憶装置。
- 前記ファイルを構成するクラスタの順は、前記コントローラが前記不揮発性メモリのアドレスリスト領域から読み出して前記アドレス保持部に転送されることを特徴とする請求項10に記載のアドレス予測機能をもつ不揮発性記憶装置。
- 前記ホスト機器から指定されるアドレスリストアドレス情報を基に、前記コントローラが前記不揮発性メモリにおける前記アドレスリスト領域を決定することを特徴とする請求項12に記載のアドレス予測機能をもつ不揮発性記憶装置。
- 前記コントローラはエントリバッファをさらに備え、
前記ホスト機器から指定されるファイルエントリアドレス情報を基に、前記コントローラが前記不揮発性メモリにおけるファイルエントリ領域を決定し、
前記不揮発性メモリの前記ファイルエントリ領域から読み出したファイルエントリを前記エントリバッファに転送し、前記エントリバッファのデータを基にして前記アドレスリスト領域を決定することを特徴とする請求項12に記載のアドレス予測機能をもつ不揮発性記憶装置。 - 前記コントローラは前記エントリバッファのデータから、前記ファイルのID情報が一致するレコードを検索することで前記アドレスリスト領域を決定することを特徴とする請求項14に記載のアドレス予測機能をもつ不揮発性記憶装置。
- 前記ID情報が前記ファイルのファイル名であることを特徴とする請求項15に記載のアドレス予測機能をもつ不揮発性記憶装置。
- 前記ID情報が前記エントリバッファにおけるレコード番号であることを特徴とする請求項15に記載のアドレス予測機能をもつ不揮発性記憶装置。
- ホスト機器と不揮発性記憶装置からなる不揮発性記憶装置システムであって、
前記ホスト機器は前記不揮発性記憶装置に連続ではない複数のクラスタからなるファイルを読み出すファイル読み出しコマンドを1回発行するだけで、前記ファイルを構成する連続ではない複数のクラスタからなるデータを前記不揮発性記憶装置から読み出すことができることを特徴とするアドレス予測機能をもつ不揮発性記憶装置システム。 - 前記ホスト機器は前記ファイル読み出しコマンドを発行する前に、ファイルシステムの情報を前記不揮発性記憶装置に送ることを特徴とする請求項18に記載のアドレス予測機能をもつ不揮発性記憶装置システム。
- 前記ホスト機器は前記ファイル読み出しコマンドを発行する前に、前記ファイルを構成する連続ではない複数のクラスタのアドレス情報を前記不揮発性記憶装置に送ることを特徴とする請求項18に記載のアドレス予測機能をもつ不揮発性記憶装置システム。
- 前記ホスト機器は前記ファイル読み出しコマンドを発行する前に、前記ファイルを構成する連続ではない複数のクラスタのアドレス情報が格納された、前記不揮発性メモリのアドレス情報を前記不揮発性記憶装置に送ることを特徴とする請求項18に記載のアドレス予測機能をもつ不揮発性記憶装置システム。
- コントローラと不揮発性メモリからなり、ホスト機器からファイルを書き込みできる不揮発性記憶装置であって、
前記ホスト機器から前記不揮発性記憶装置にファイルを書き込むコマンドが発行されたときに、前記コントローラが複数の空きクラスタを決定し、前記ファイルのデータを前記不揮発性メモリの前記空きクラスタに対応する場所に書き込むことを特徴とするアドレス予測機能をもつ不揮発性記憶装置。 - 前記コントローラが前記複数の空きクラスタを特定するために、ファイルシステムの情報用いることを特徴とする請求項22に記載のアドレス予測機能をもつ不揮発性記憶装置。
- 前記コントローラは前記ファイルシステムの情報を格納するためのファイルシステムバッファをさらに備え、
前記ファイルシステムの情報は前記不揮発性メモリから読み出すことを特徴とする請求項23に記載のアドレス予測機能をもつ不揮発性記憶装置。 - 前記コントローラは前記ファイルシステムの情報を格納するためのファイルシステムバッファをさらに備え、
前記ファイルシステムの情報は前記ホスト機器から前記ファイルシステムバッファに転送されることを特徴とする請求項23に記載のアドレス予測機能をもつ不揮発性記憶装置。 - 前記コントローラはアドレス登録部をさらに備え、
前記複数の空きクラスタの情報が、前記アドレス登録部に格納されることを特徴とする請求項22に記載のアドレス予測機能をもつ不揮発性記憶装置。 - 前記複数の空きクラスタの情報は、前記ホスト機器から前記アドレス登録部に転送されることを特徴とする請求項26に記載のアドレス予測機能をもつ不揮発性記憶装置。
- 前記コントローラがビットマップバッファをさらに備え、
前記コントローラが前記複数の空きクラスタを特定するために、クラスタ毎に使用中であるか空き領域であるかを示すビットマップ情報を前記ビットマップバッファに格納して使用することを特徴とする請求項22に記載のアドレス予測機能をもつ不揮発性記憶装置。 - 前記ビットマップバッファに格納するビットマップ情報は、前記コントローラが前記不揮発性メモリから読み出して前記ビットマップバッファに格納することを特徴とする請求項28に記載のアドレス予測機能をもつ不揮発性記憶装置。
- 前記ビットマップバッファに格納するビットマップ情報は、前記ホスト機器から前記ビットマップバッファに転送して格納されることを特徴とする請求項28に記載のアドレス予測機能をもつ不揮発性記憶装置。
- ホスト機器と不揮発性記憶装置からなる不揮発性記憶装置システムであって、
前記ホスト機器は前記不揮発性記憶装置にファイルのデータを書き込むファイル書き込みコマンドを1回発行するだけで、前記不揮発性記憶装置の空きクラスタに書き込むことができることを特徴とするアドレス予測機能をもつ不揮発性記憶装置システム。 - 前記ホスト機器は前記ファイル書き込みコマンドを発行する前に、ファイルシステムの情報を前記不揮発性記憶装置に送ることを特徴とする請求項31に記載のアドレス予測機能をもつ不揮発性記憶装置システム。
- 前記ホスト機器は前記ファイル書き込みコマンドを発行する前に、書き込み先となる複数のクラスタのアドレス情報を前記不揮発性記憶装置に送ることを特徴とする請求項31に記載のアドレス予測機能をもつ不揮発性記憶装置システム。
- 前記ホスト機器は前記ファイル書き込みコマンドを発行する前に、クラスタ毎に使用中であるか空き領域であるかを示すビットマップ情報を前記不揮発性記憶装置に送ることを特徴とする請求項31に記載のアドレス予測機能をもつ不揮発性記憶装置システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006055835A JP2006277737A (ja) | 2005-03-03 | 2006-03-02 | アドレス予測機能をもつ不揮発性記憶装置 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005058545 | 2005-03-03 | ||
JP2006055835A JP2006277737A (ja) | 2005-03-03 | 2006-03-02 | アドレス予測機能をもつ不揮発性記憶装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006277737A true JP2006277737A (ja) | 2006-10-12 |
Family
ID=37212376
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006055835A Pending JP2006277737A (ja) | 2005-03-03 | 2006-03-02 | アドレス予測機能をもつ不揮発性記憶装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006277737A (ja) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2216712A2 (en) | 2009-02-09 | 2010-08-11 | Sony Corporation | Information processing apparatus, information processing method, and program |
JP2012512469A (ja) * | 2008-12-18 | 2012-05-31 | モサイド・テクノロジーズ・インコーポレーテッド | プリセットオペレーションを必要とするメインメモリユニットおよび補助メモリユニットを備える半導体デバイス |
US8521946B2 (en) | 2008-09-26 | 2013-08-27 | Samsung Electronics Co., Ltd. | Semiconductor disk devices and related methods of randomly accessing data |
JP2014513369A (ja) * | 2011-06-10 | 2014-05-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ストレージ・クラス・メモリ情報格納コマンド |
JP2014160335A (ja) * | 2013-02-19 | 2014-09-04 | Mitsubishi Electric Corp | メモリ管理装置 |
US9021226B2 (en) | 2011-06-10 | 2015-04-28 | International Business Machines Corporation | Moving blocks of data between main memory and storage class memory |
US9021180B2 (en) | 2011-06-10 | 2015-04-28 | International Business Machines Corporation | Clearing blocks of storage class memory |
US9037907B2 (en) | 2011-06-10 | 2015-05-19 | International Business Machines Corporation | Operator message commands for testing a coupling facility |
US9058275B2 (en) | 2011-06-10 | 2015-06-16 | International Business Machines Corporation | Data returned responsive to executing a start subchannel instruction |
US9058245B2 (en) | 2011-06-10 | 2015-06-16 | International Business Machines Corporation | Releasing blocks of storage class memory |
US9116789B2 (en) | 2011-06-10 | 2015-08-25 | International Business Machines Corporation | Chaining move specification blocks |
US9116634B2 (en) | 2011-06-10 | 2015-08-25 | International Business Machines Corporation | Configure storage class memory command |
US9116788B2 (en) | 2011-06-10 | 2015-08-25 | International Business Machines Corporation | Using extended asynchronous data mover indirect data address words |
US9323668B2 (en) | 2011-06-10 | 2016-04-26 | International Business Machines Corporation | Deconfigure storage class memory command |
US10846214B2 (en) | 2017-12-18 | 2020-11-24 | Samsung Electronics Co., Ltd. | Nonvolatile memory system and method of operating the same |
-
2006
- 2006-03-02 JP JP2006055835A patent/JP2006277737A/ja active Pending
Cited By (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8521946B2 (en) | 2008-09-26 | 2013-08-27 | Samsung Electronics Co., Ltd. | Semiconductor disk devices and related methods of randomly accessing data |
JP2012512469A (ja) * | 2008-12-18 | 2012-05-31 | モサイド・テクノロジーズ・インコーポレーテッド | プリセットオペレーションを必要とするメインメモリユニットおよび補助メモリユニットを備える半導体デバイス |
EP2216712A2 (en) | 2009-02-09 | 2010-08-11 | Sony Corporation | Information processing apparatus, information processing method, and program |
US8250087B2 (en) | 2009-02-09 | 2012-08-21 | Sony Corporation | Information processing apparatus, information processing method, and program |
US9058243B2 (en) | 2011-06-10 | 2015-06-16 | International Business Machines Corporation | Releasing blocks of storage class memory |
US9116788B2 (en) | 2011-06-10 | 2015-08-25 | International Business Machines Corporation | Using extended asynchronous data mover indirect data address words |
US9021226B2 (en) | 2011-06-10 | 2015-04-28 | International Business Machines Corporation | Moving blocks of data between main memory and storage class memory |
US9021179B2 (en) | 2011-06-10 | 2015-04-28 | International Business Machines Corporation | Store storage class memory information command |
US9021180B2 (en) | 2011-06-10 | 2015-04-28 | International Business Machines Corporation | Clearing blocks of storage class memory |
US9037907B2 (en) | 2011-06-10 | 2015-05-19 | International Business Machines Corporation | Operator message commands for testing a coupling facility |
US9037784B2 (en) | 2011-06-10 | 2015-05-19 | International Business Machines Corporation | Clearing blocks of storage class memory |
US9037785B2 (en) | 2011-06-10 | 2015-05-19 | International Business Machines Corporation | Store storage class memory information command |
US9043568B2 (en) | 2011-06-10 | 2015-05-26 | International Business Machines Corporation | Moving blocks of data between main memory and storage class memory |
US9043643B2 (en) | 2011-06-10 | 2015-05-26 | International Business Machines Corporation | Operator message commands for testing a coupling facility |
US9058275B2 (en) | 2011-06-10 | 2015-06-16 | International Business Machines Corporation | Data returned responsive to executing a start subchannel instruction |
US9058245B2 (en) | 2011-06-10 | 2015-06-16 | International Business Machines Corporation | Releasing blocks of storage class memory |
JP2014513369A (ja) * | 2011-06-10 | 2014-05-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ストレージ・クラス・メモリ情報格納コマンド |
US9116789B2 (en) | 2011-06-10 | 2015-08-25 | International Business Machines Corporation | Chaining move specification blocks |
US9116634B2 (en) | 2011-06-10 | 2015-08-25 | International Business Machines Corporation | Configure storage class memory command |
US11163444B2 (en) | 2011-06-10 | 2021-11-02 | International Business Machines Corporation | Configure storage class memory command |
US9116635B2 (en) | 2011-06-10 | 2015-08-25 | International Business Machines Corporation | Configure storage class memory command |
US9116813B2 (en) | 2011-06-10 | 2015-08-25 | International Business Machines Corporation | Data returned responsive to executing a Start Subchannel instruction |
US9122573B2 (en) | 2011-06-10 | 2015-09-01 | International Business Machines Corporation | Using extended asynchronous data mover indirect data address words |
US9164882B2 (en) | 2011-06-10 | 2015-10-20 | International Business Machines Corporation | Chaining move specification blocks |
US9323668B2 (en) | 2011-06-10 | 2016-04-26 | International Business Machines Corporation | Deconfigure storage class memory command |
US9372640B2 (en) | 2011-06-10 | 2016-06-21 | International Business Machines Corporation | Configure storage class memory command |
US9411737B2 (en) | 2011-06-10 | 2016-08-09 | International Business Machines Corporation | Clearing blocks of storage class memory |
US9418006B2 (en) | 2011-06-10 | 2016-08-16 | International Business Machines Corporation | Moving blocks of data between main memory and storage class memory |
US9477417B2 (en) | 2011-06-10 | 2016-10-25 | International Business Machines Corporation | Data returned responsive to executing a start subchannel instruction |
US9747033B2 (en) | 2011-06-10 | 2017-08-29 | International Business Machines Corporation | Configure storage class memory command |
US10013256B2 (en) | 2011-06-10 | 2018-07-03 | International Business Machines Corporation | Data returned responsive to executing a start subchannel instruction |
US10387040B2 (en) | 2011-06-10 | 2019-08-20 | International Business Machines Corporation | Configure storage class memory command |
JP2014160335A (ja) * | 2013-02-19 | 2014-09-04 | Mitsubishi Electric Corp | メモリ管理装置 |
US10846214B2 (en) | 2017-12-18 | 2020-11-24 | Samsung Electronics Co., Ltd. | Nonvolatile memory system and method of operating the same |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2006277737A (ja) | アドレス予測機能をもつ不揮発性記憶装置 | |
KR100877448B1 (ko) | 비휘발성 기억 시스템 | |
US6823417B2 (en) | Memory controller for memory card manages file allocation table | |
JP5400875B2 (ja) | メモリコントローラ、不揮発性記憶装置、アクセス装置、不揮発性記憶システム、データ書き込み方法、および、プログラム | |
US20070043924A1 (en) | Method for controlling memory card and method for controlling nonvolatile semiconductor memory | |
US7647470B2 (en) | Memory device and controlling method for elongating the life of nonvolatile memory | |
JP5481493B2 (ja) | アクセス装置、情報記録装置、コントローラ、リアルタイム情報記録システム、アクセス方法、および、プログラム | |
JP2006040264A (ja) | メモリカードの制御方法および不揮発性半導体メモリの制御方法 | |
JP2008242503A (ja) | メモリ管理装置及び方法、並びにプログラム | |
JP2008198208A (ja) | ホストデータ処理装置の動作方法、ホストデータ処理装置並びにデータ格納装置 | |
WO2006098212A1 (ja) | メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法 | |
JPWO2008016081A1 (ja) | メモリコントローラ、不揮発性記憶装置、アクセス装置、及び不揮発性記憶システム | |
JP4551328B2 (ja) | 情報記録媒体におけるデータ領域管理方法、及びデータ領域管理方法を用いた情報処理装置 | |
WO2011121870A1 (ja) | データ記録装置、及びデータ記録方法 | |
JP4242245B2 (ja) | フラッシュrom制御装置 | |
JP2005202942A (ja) | 情報記録媒体、データ処理装置及びデータ処理方法 | |
JP5967307B2 (ja) | 情報処理装置、制御回路、制御プログラム、及び制御方法 | |
JP4953612B2 (ja) | データ処理装置及びその制御方法、コンピュータプログラム、及び記憶媒体 | |
WO2010001606A1 (ja) | コントローラ、情報記録装置、アクセス装置、情報記録システム、及び情報記録方法 | |
JP2006252137A (ja) | 不揮発性記憶装置の最適化方法 | |
JP2005115562A (ja) | フラッシュrom制御装置 | |
US20080022060A1 (en) | Data recording apparatus, program product, and data recording method | |
JP5253471B2 (ja) | メモリコントローラ | |
CN111949212A (zh) | 基于自定义开放通道ssd的文件系统及文件管理方法 | |
JP2008134777A (ja) | ファイル割当テーブルのキャッシュ方法 |