(57)【要約】【課題】先読みすべきデータを柔軟に決定することができる記憶装置を提供する。【解決手段】不揮発性メモリ（２）、前記不揮発性メモリよりもアクセス速度の速いバッファメモリ（４）及び制御回路（５）を有し、制御回路は、外部から先読みコマンドが入力されると、前記先読みコマンドが指定する先読みデータの論理アドレスとその先読みデータを格納するバッファメモリアドレスとを対応付けた先読みデータ管理テーブルを生成し、当該コマンドが指定するデータを不揮発性メモリから読み出してバッファメモリに先読みデータとして格納し、外部から読み出しコマンドが入力されると、前記読み出しコマンドで指定される論理アドレスが先読みデータ管理テーブルで対応付けられた論理アドレスに一致するときバッファメモリから対応する先読みデータを出力する。【選択図】図１
2010191983.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリ、前記不揮発性メモリよりもアクセス速度の速いバッファメモリ及び制御回路を有する記憶装置であって、
前記制御回路は、前記記憶装置の外部から先読みコマンドが入力されると、先読みデータ管理テーブルを生成し、作成された前記先読みデータ管理テーブルで規定される先読みデータが読み出し可能か否かを判別し、前記先読みデータ管理テーブルで規定される先読みデータが読み出し可能であるとき、外部からのアクセスコマンドが発行されている場合には当該アクセスコマンドに従って処理を行ない、外部からのアクセスコマンドが発行されていない場合には前記先読みデータ管理テーブルで規定される先読みデータを前記不揮発性メモリから前記バッファメモリへ転送し、
前記先読みデータ管理テーブルには、先読みデータの論理アドレスを格納する領域、前記バッファメモリ上で先読みデータを保持する領域のメモリアドレスを格納する領域及び先読みデータが属するファイル名を保持する領域を有し、先読みデータの領域は前記先読みコマンドが論理アドレス又はファイル名のいずれによっても指定することが可能であることを特徴とする記憶装置。
【請求項２】
前記先読みデータ管理テーブルは、先読みデータのデータ数を保持する領域を有することを特徴とする請求項１記載の記憶装置。
【請求項３】
前記先読みデータ管理テーブルは、対応する先読みデータの有効性を示すフラグを保持する領域を有することを特徴とする請求項１記載の記憶装置。
【請求項４】
前記先読みデータ管理テーブルは、先読みデータのアクセス回数を保持する領域を有し、
前記制御回路は、前記バッファメモリに前記先読みデータ管理テーブルで規定される先読みデータを格納する未使用領域がないとき、前記先読みデータ管理テーブルが保有するアクセス回数に基づいてアクセス頻度の少ないバッファメモリアドレスを検索し、検索したバッファメモリアドレスの領域を新たな先読みデータの格納領域に割り当てることを特徴とする請求項１記載の記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードディスク装置又はフラッシュメモリカードなどの記憶装置に係り、特に記憶媒体である不揮発性メモリの記憶情報をバッファメモリに先読みする技術に適用して有効な発明に関する。
【背景技術】
【０００２】
コントローラ、バッファメモリ、及び記憶媒体などから構成される記憶装置では、ホスト装置からリード要求が来ると、その後利用が予想されるデータをホスト装置からリード要求が来る前にコントローラが記憶媒体から読み出してバッファメモリ上に格納する先読み技術がある。例えば特許文献１に記載のハードディスクドライブ（ＨＤＤ）装置はディスクキャッシュを有し、予測されるデータを予めディスクキャッシュにキャッシュしておき、時間のかかる磁気ディスクへのアクセスを最小限に抑えるように構成される。ハードディスクコントローラは磁気ディスクに格納されているデータの一部を先読みしてディスクキャッシュに保持するための制御を行う。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−１２５８２９号公報（段落２４〜段落２７）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
磁気ディスクやフラッシュメモリなどの記憶媒体に対するデータ読み出し性能は、ホストインタフェースの高速化に追随できていないため、ホスト装置からの読み出し要求時に記憶媒体からの読み出し処理を減らすことが必要になる。このためには上記のような記憶媒体からデータを先読みして予めバッファメモリに格納することが有効と考えられる。しかしながら、先読みすべきデータは記憶装置のコントローラが決定していて、ユーザが先読み機能を使用できない。要するに、所定のアルゴリズムにしたがってコントローラが先読みデータを決定していたのでは、使用頻度が高いと予想されるデータを予めバッファメモリに先読みすることが容易ではなく、先読みによるアクセス時間の短縮効果を最大限に発揮させることが難しい。
【０００５】
本発明の目的は、先読みすべきデータを柔軟に決定することができる記憶装置を提供することにある。
【０００６】
本発明の別の目的は、先読みによるアクセス時間の短縮効果を最大限に発揮させることが容易な記憶装置を提供することにある。
【０００７】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【０００９】
〔１〕本発明に係る記憶装置は不揮発性メモリ（２）、前記不揮発性メモリよりもアクセス速度の速いバッファメモリ（４）及び制御回路（５）を有し、前記制御回路は、外部から入力される先読みコマンドが指定する先読みデータの論理アドレスとその先読みデータを格納するバッファメモリアドレスとを対応付けた先読みデータ管理テーブル（Ｔｉ）を生成し、当該コマンドが指定するデータを不揮発性メモリから読み出してバッファメモリに先読みデータとして格納し、外部から入力される読み出しコマンドで指定される論理アドレスが先読みデータ管理テーブルで対応付けられた論理アドレスに一致するときバッファメモリから対応する先読みデータを出力する。
【００１０】
上記手段によれば、先読みコマンドにより記憶装置の外部から先読みデータを指定することができる。したがって、先読みによるアクセス時間の短縮効果を最大限に発揮できるように先読みすべきデータを柔軟に決定することができる。記憶装置の読み出し性能は、記憶媒体である不揮発性メモリ自身の読み出し性能がボトルネックとなっているため、外部からの読み出し要求時に記憶媒体からの読み出し処理に代えてバッファメモリから先読みデータを出力する処理が増えることにより、システム性能を向上させることができる。先読みコマンドによる先読みデータの指定はバッファメモリの容量が許す範囲で複数の先読みコマンドによる複数指定可能である。
【００１１】
本発明の具体的な形態として、前記先読みコマンドは論理アドレスによって先読みデータを指定する。マスタブートレコード若しくはＦＡＴ（ファイル・アロケーション・テーブル）などに代表されるように使用者にとってその論理アドレスの把握が容易な場合もあるので、それに対しては先読みデータを直接的に指定できるので便利である。
【００１２】
前記先読みコマンドはファイル名によって先読みデータを指定するようにしてもよい。一般に、記憶装置の使用者はＯＳ（オペレーティングシステム）で管理される記憶装置上の論理アドレスを把握できない場合が有り、記憶装置の使用者はファイル名でデータを把握するのが簡便であり、データ先読みに対する良好な操作性を実現する。
【００１３】
前記制御回路による先読みデータの転送は、先読みコマンドの実行時に行ってよい。また、先に先読みデータ管理テーブルを生成し、その後所定のタイミングで先読みデータをバッファメモリに転送してよい。そうすれば、前記制御回路は、先読みコマンドを実行終了した後のコマンド待ち状態において先読みデータをバッファメモリに転送することができる。先読みデータの転送処理によってリードアクセスなど処理が待たされると言うような事態の発生を未然に防止することができる。
【００１４】
本発明の具体的な形態として、前記先読みデータ管理テーブルは、先読みデータの先頭論理アドレス（３０）、先読みデータを格納する領域の先頭メモリアドレス（３１）、及び先読みデータのデータ数を保持する領域（３２）等によって構成すればよい。
【００１５】
前記先読みデータ管理テーブルは、対応する先読みデータの有効性を示すフラグ（３３）を保持してよい。
【００１６】
前記先読みデータ管理テーブルは、先読みデータを含むファイル名を保持する領域（３５）を有してよい。例えばＦＡＴファイルシステムにおいてファイルの断片化を生じたとき、一つのファイルデータは分割された複数の先読みデータ管理テーブルによって管理されることになり、このとき、ファイル名で指定されたアクセスに応答する処理に便利である。即ち、ファイル名で対応する先読みデータ管理テーブルを検索でき、バッファメモリ上の所要の先読みデータのアクセスが更に速くなる。
【００１７】
前記先読みデータ管理テーブルは、先読みデータのアクセス回数を保持する領域（３４）を有してよい。前記制御回路は、バッファメモリに先読みデータを格納する未使用領域がないとき、前記先読みデータ管理テーブルが保有するアクセス回数に基いてアクセス頻度の少ないバッファメモリアドレスを検索し、検索したバッファメモリアドレスの領域を新たな先読みデータの格納領域に割当てることができる。頻繁にアクセスされる先読みデータの有効利用を保証することができる。
【００１８】
前記制御回路は、先読みデータ管理テーブルを所定のタイミングで不揮発性メモリの先読みデータ管理テーブル保存領域に退避してよい。先読みデータ管理テーブルをバッファメモリ上又は制御回路内部のメモリ上で運用しているとき、機能している先読みデータの先読みデータ管理テーブルを保存することにより、電源遮断などによってバッファメモリ上の先読みデータが失われても、後からそれを再現可能になる。例えば、前記制御回路は、パワーオンに応答して不揮発性メモリから先読みデータ管理テーブルを読み出し、読み出した先読みデータ管理テーブルでその所在が規定される先読みデータを不揮発性メモリからバッファメモリに転送する。
【００１９】
〔２〕本発明の別の観点による記憶装置は、不揮発性メモリ、前記不揮発性メモリよりもアクセス速度の速いバッファメモリ及び制御回路を有し、前記制御回路は、外部から入力される読出しコマンドに応答して、先読みデータの論理アドレスとその先読みデータを格納するバッファメモリアドレスとを対応付ける書換え可能な先読みデータ管理テーブルを参照し、当該コマンドが指定するデータをバッファメモリが保有するか否かを判定し、保有する場合にはバッファメモリから読み出したデータを外部に出力し、保有しない場合には不揮発性メモリから読み出したデータを外部に出力する。
【００２０】
上記手段によれば、書き換え可能な先読みデータ管理テーブルを用いることにより、先読みによるアクセス時間の短縮効果を最大限に発揮できるように先読みすべきデータを柔軟に決定することができる。読み出しコマンドに応答して不揮発性メモリから読み出す処理に代えてバッファメモリから先読みデータを出力する処理が増えるので、システム性能を向上させることができる。
【００２１】
本発明の具体的な形態として、前記制御回路は、パワーオンに応答して不揮発性メモリから先読みデータ管理テーブルを読み出し、読み出した先読みデータ管理テーブルでその所在が規定される先読みデータを不揮発性メモリからバッファメモリに転送してよい。電源遮断前に機能していた先読みデータを後からバッファメモリ上に容易に再現することができる。
【００２２】
〔３〕本発明の更に別の観点による記憶装置は、不揮発性メモリ、前記不揮発性メモリよりもアクセス速度の速いバッファメモリ及び制御回路を有し、前記制御回路は、外部から入力される先読みコマンドに応答してそれが指定する先読みデータの論理アドレスとその先読みデータを格納するバッファメモリアドレスとを対応付けた先読みデータ管理テーブルを生成し、当該コマンドが指定するデータを不揮発性メモリから読み出してバッファメモリに先読みデータとして格納し、バッファメモリに格納されている先読みデータを外部に読み出し可能にする。先読みコマンドにより記憶装置の外部から先読みデータを指定することができる。したがって、先読みによるアクセス時間の短縮効果を最大限に発揮できるように先読みすべきデータを柔軟に決定することができる。
【００２３】
本発明の具体的な形態として、前記制御回路は、バッファメモリに先読みデータを格納する未使用領域がないときの処理として、既に先読みデータを保有する領域への上書き許可、又は既に先読みデータを保有する領域への上書き禁止を選択可能にされてよい。前者を選択することにより先読みデータの動的な入れ換えに便利である。後者を選択することにより、頻繁にアクセスされる先読みデータの有効利用を保証することが容易である。後者が選択されているとき、未使用領域がないときは先読みコマンド発行元にエラー応答を返して、使用者に注意を喚起すればよい。前記上書き許可は、既に先読みデータを保有する領域への全面許可、又はアクセス頻度が少ない領域に対する部分許可としてよい。部分許可は、先読みデータの動的な入れ換え性と、頻繁にアクセスされる先読みデータの有効利用性とを両立するのに好都合である。
【００２４】
読み出しコマンドに対する応答処理として、前記制御回路は、外部から入力される読出しコマンドに応答して、前記先読みデータ管理テーブルを参照し、当該コマンドが指定するデータをバッファメモリが保有するか否かを判定し、保有する場合にはバッファメモリから読み出したデータを外部に出力し、保有しない場合には不揮発性メモリから読み出したデータを外部に出力する。
【００２５】
書込みコマンドに対する応答処理として前記制御回路は、外部から入力される書き込みコマンドに応答して、前記先読みデータ管理テーブルを参照し、当該コマンドによる書き込みアドレスのデータをバッファメモリが保有するか否かを判定し、保有する場合には不揮発性メモリのデータと共にバッファメモリのデータを書き込みデータによって更新し、保有しない場合には不揮発性メモリのデータを書き込みデータによって更新する。
【発明の効果】
【００２６】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００２７】
すなわち、先読みコマンドにより記憶装置の外部から先読みデータを指定することができる。したがって、先読みによるアクセス時間の短縮効果を最大限に発揮できるように先読みすべきデータを柔軟に決定することができる。外部からの読み出し要求時に記憶媒体からの読み出し処理に代えてバッファメモリから先読みデータを出力する処理が増えることにより、記憶装置を用いるシステムのデータ処理性能を向上させることができる。
【図面の簡単な説明】
【００２８】
【図１】本発明に係る記憶装置の一例であるフラッシュメモリカードのブロック図である。
【図２】バッファメモリのアドレスマップの詳細を示す説明図である。
【図３】フラッシュメモリの記憶領域の構成と先読みデータ管理テーブルの詳細を例示する説明図である。
【図４】先読みコマンドの主な仕様を示す説明図である。
【図５】先読みコマンド応答処理の制御手順を例示するフローチャートである。
【図６】ホスト指定アドレス取得処理（Ｓ２）の具体例を示すフローチャートである。
【図７】バッファメモリに先読みデータを格納する未使用領域がないときの処理形態（先読みデータ更新形態）を例示する説明図である。
【図８】読み出しコマンド応答処理の制御手順を例示するフローチャートである。
【図９】書き込みコマンド応答処理の制御手順を例示するフローチャートである。
【発明を実施するための形態】
【００２９】
《フラッシュメモリカード》
図１には本発明に係る記憶装置の一例であるフラッシュメモリカードが示される。同図に示されるフラッシュメモリカード１は、不揮発性メモリ例えば電気的に消去及び書き込み可能なメモリフラッシュメモリ２と、ＤＲＡＭ（Dynamic Random Access memory）又はＳＲＡＭ（Static Random Access Memory）等から成るバッファメモリ４と、メモリ制御及び外部インタフェース制御を行うカードコントローラ（制御回路）５とを実装基板に備える。フラッシュメモリカード１はホストコンピュータ６によりファイルメモリ装置として制御される。即ち、ホストコンピュータ６は、ファイルアクセスを行なうとき、フラッシュメモリカード１に形成されているＦＡＴ（ファイルアロケーションテーブル）を参照して、ファイルを構成するセクタの論理アドレスを取得し、この論理アドレスを用いてアクセスコマンドをフラッシュメモリカード１に発行する。フラッシュメモリカード１はアクセスコマンドに応答してフラッシュメモリ２及びバッファメモリ４をアクセス制御する。
【００３０】
前記カードコントローラ５は、ホストコンピュータ６から与えられる読み出しコマンド、書き込みコマンド、又は先読みコマンド等による指示に従って、バッファメモリ４及びフラッシュメモリ２のアクセス制御を行う。前記読み出しコマンドは、例えば読み出しセクタの開始論理アドレスとセクタ数を指定してデータを読み出す指示である。書き込みコマンドは、例えば書き込みセクタの開始論理アドレスとセクタ数を指定してデータを書き込む指示である。先読みコマンドは、先読みすべきデータの論理アドレスとその先読みデータを格納するバッファメモリアドレスとを対応付けた先読みデータ管理テーブルを生成し、先読みすべきデータをフラッシュメモリ２から読み出してバッファメモリ４に先読みデータとして格納する指示である。各コマンドに対する処理の詳細は後述する。
【００３１】
バッファメモリ４の記憶領域はホストコンピュータ６から供給される書込みデータの一次保存領域(書き込みデータ保存領域)１０、フラッシュメモリ２から読み出されてホストコンピュータ６に出力するデータを一時的に保存する領域（読み出しデータ保存領域）１１、ワーク領域１２、前記先読みコマンドに応答してフラッシュメモリ２から読み出されたデータを先読みデータとして保存する領域（先読みデータ保存領域）１３とされる。図２にはバッファメモリ４のアドレスマップの詳細が例示される。先読みデータは、常時バッファメモリ上に読み出された状態になりバッファメモリの記憶領域を占有するため、書き込みや読み出しの通常使用のためのバッファ領域１０，１１と区別して管理可能にされている。
【００３２】
前記フラッシュメモリ２の記憶領域はデータ部１４、内部情報格納部１５、及び先読みデータ管理テーブル格納部１６とされ、夫々には管理部が付加されている。内部情報格納部１５にはメモリカード１のＩＤ、ＲＤ（ルートディレクトリ）及びＦＡＴ（ファイルアロケーションテーブル）などが格納され、ホストコンピュータ６のＯＳ（オペレーティングシステム）によって参照可能にされる。先読みデータ管理テーブル格納部１６には前記先読みコマンドに応答して生成される前記先読みデータ管理テーブルが格納される。
【００３３】
前記フラッシュメモリ２は、特に図示はしないが、電気的に消去及び書き込み可能な不揮発性メモリセルトランジスタが多数マトリクス配置されたメモリアレイＡＲＹを有する。メモリセルトランジスタ（フラッシュメモリセルとも記す）は、特に図示はしないが、半導体基板若しくはウェル内に形成されたソース及びドレイン、前記ソースとドレインとの間のチャンネル領域にトンネル酸化膜を介して形成されたフローティングゲート、そしてフローティングゲートに層間絶縁膜を介して重ねられたコントロールゲートによって構成されたスタックドゲート構造を有する。コントロールゲートは対応するワード線に、ドレインは対応するビット線に、ソースはソース線に接続される。前記メモリセルトランジスタは、前記フローティングゲートに電子が注入されると閾値電圧が上昇し、また、前記フローティングゲートから電子を引き抜くと閾値電圧が低下する。前記メモリセルトランジスタは、データ読み出しのためのワード線電圧（コントロールゲート印加電圧）に対する閾値電圧の高低に応じた情報を記憶することになる。特に制限されないが、本明細書においてメモリセルトランジスタの閾値電圧が低い状態を消去状態、高い状態を書き込み状態と称する。
【００３４】
図１において前記カードコントローラ５は、ホストインタフェース回路２０、演算制御手段としてのマイクロプロセッサ（ＭＰＵ）２１、フラッシュコントローラ２２、及びバッファコントローラ２３から成る。前記フラッシュコントローラ２２は図示を省略するＥＣＣ回路を備える。
【００３５】
前記ＭＰＵ２１は、ＣＰＵ（Central Processing Unit）２５、プログラムメモリ（ＰＧＭ）２６及びワークＲＡＭ（ＷＲＡＭ）２７などを有し、カードコントローラ５を全体的に制御する。プログラムメモリ２６はＣＰＵ２５の動作プログラムなどを保有する。
【００３６】
前記ホストインタフェース回路２０は、ＡＴＡ（ATAttachment）、ＩＤＥ（Integrated Device Electronics）、ＳＣＳＩ（Small Computer System Interface）、ＭＭＣ（MultiMediaCard：登録商標）、ＰＣＭＣＩＡ（Personal Computer Memory Card International Association）等の所定のプロトコルに従って、パーソナルコンピュータ又はワークステーションなどのホストコンピュータ６とインタフェースを行う。
【００３７】
前記バッファコントローラ２３はＭＰＵ２１から与えられるアクセス指示に従って、バッファメモリ４をアクセス制御する。
【００３８】
フラッシュコントローラ２２はＭＰＵ２１から与えられるアクセス指示に従って、フラッシュメモリ２に対する、読み出し動作、消去動作及び書き込み動作を制御する。図示を省略するＥＣＣ回路は、ＭＰＵ２１から与えられる指示に従って、フラッシュメモリ２に書き込むデータに対してエラー訂正符号（エラー訂正コード）を生成して、書き込みデータに付加する。また、フラッシュメモリ２から読み出された読み出しデータを当該読み出しデータに付加されているエラー訂正符号を用いてエラー検出・訂正処理を行い、そのエラー訂正能力範囲のエラー発生に対してエラー訂正を行う。
【００３９】
図３にはフラッシュメモリ２記憶領域の構成と先読みデータ管理テーブルの詳細が例示される。フラッシュッメモリ２の記憶領域（メモリアレイ）は、例えば、図では番号０〜番号４ｎ＋３のメモリセクタと、Ｍ０〜Ｍｎの管理部によって構成されたｎ個のブロックを記憶領域として有する。各メモリセクタ及び各管理部は物理アドレスを持ち、各メモリセクタには論理アドレスが割当てられる。論理アドレスは例えばファイルのセクタ番号（ファイルセクタ番号）である。以下の説明ではメモリセクタのアドレスを単に物理アドレス又は物理セクタアドレスと称する。論理アドレスは外部から指示されるアドレス、物理アドレスは論理アドレスによって内部をアクセスするためのアドレスとして把握することができる。前記メモリセクタはＨＤＤ（ハード・ディスク・ドライブ）などのストレージにおける書き換え単位とされるストレージセクタの容量５１２Ｂ（バイト）に対応されている。前記管理領域にはブロックの有効フラグや代替フラグ等が格納される。ＥＣＣコードは各メモリセクタ毎に配置されている。１ブロックを構成する不揮発性メモリセルは１本のワード線又は１種類のワード線選択信号で選択され、消去処理及び書き込み処理の単位とされ、例えば消去処理や書き込み処理で必要な高電圧がワード線単位で印加される。
【００４０】
メモリセクタ４ｎ〜４ｎ＋３は前記先読みデータ管理テーブル格納部１６とされる。先読みデータ管理テーブル格納部１６の各メモリセクタには夫々複数個の先読みデータ管理テーブルＴｉ（Ｔ０，Ｔ１，Ｔ２…）とＥＣＣコードが格納される。先読みデータ管理テーブルは先読みコマンドに応答する処理が行なわれる事によって追加可能にされているから、複数存在することが許容される。
【００４１】
先読みデータ管理テーブルＴｉは、例えば先頭論理アドレス領域３０、先頭メモリアドレス領域３１、セクタ数領域３２、有効フラグ領域３３、アクセス回数領域３４、及びファイル名領域３５を有する。先頭論理アドレス領域３０は先読みデータの先頭論理アドレス（論理セクタアドレス）を格納する。先頭メモリアドレス領域３１はバッファメモリ上で先読みデータを保持する領域の先頭メモリアドレスを格納する。セクタ数領域３２は先読みデータのセクタ数を格納する。有効フラグ領域３３は当該先読みデータ管理テーブルが有効であるか否かを示すフラグを格納する。アクセス回数領域３４は当該書き込み管理テーブルで管理される先読みデータに対するホストコンピュータ６によるアクセス回数を格納する領域である。ファイル名領域３５は先読みデータが属するファイル名を保持する領域である。
【００４２】
前記先読みデータ管理テーブルはフラッシュメモリ２上、又はバッファメモリ４上のどちらで管理してもよい。フラッシュメモリ２上で管理する場合には、先読みデータ管理テーブルの生成消滅の度に先読みデータ管理テーブル格納部１６に対する消去及び書き込み処理を行なうことになるので、動作が遅くなる。バッファメモリ４上で管理する場合には管理テーブルの生成消滅の動作は高速になる。但し、電源遮断時は先読みデータ管理テーブルをフラッシュメモリ２に待避することを要する。また、パワーオンに応答して、フラッシュメモリ２から先読みデータ管理テーブルを読み出し、読み出した先読みデータ管理テーブルでその所在が規定される先読みデータをフラッシュメモリからバッファメモリ４に転送することが望ましい。
【００４３】
《先読みコマンド応答処理》
図４には先読みコマンドの主な仕様が示される。先読みデータの指定方法はアドレスによる指定、又はファイル名指定の何れも可能とされる。アドレス指定は、メモリカード１の使用者（ユーザ）が先読みデータの領域を論理アドレスで指定することである。ファイル指定はユーザが先読みデータを有するファイル名で指定することである。ファイル名にはその所在の絶対パスも含めればファイル名の重複にも容易に対処でき、ファイルの検索も容易になる。
【００４４】
一般に、記憶装置の使用者はＯＳで管理されるフラッシュメモリカード１上の論理アドレスを把握できない場合が有る。フラッシュメモリカード１の使用者はファイル名でデータを把握するのが簡便であり、これを考慮する事によってデータ先読みに対する良好な操作性を保証できる。また、ＯＳ上でフラッシュメモリ上の論理アドレスを管理できない場合もある。このような場合でも先読みデータの指定が可能となる。
【００４５】
また、先読みデータをフラッシュメモリ２からバッファメモリ４に格納する動作タイミングは先読みコマンド発行時、或は先に先読みデータ管理テーブルを生成した後のコマンド待ち状態においてバックグラウンドで行なう。コマンド待ち状態で行なうことにより、フラッシュメモリ２からバッファメモリ４に先読みデータを転送する処理によりリードアクセスなど処理が待たされるというような事態の発生を未然に防止することができる。
【００４６】
図５には先読みコマンド応答処理の制御手順が例示される。ホストコンピュータ６から発行された先読みコマンドを受付けると（Ｓ１）、そのコマンドで論理アドレス又はファイル名で指定された先読みデータの物理アドレスを取得する（Ｓ２）。先読みコマンドで指定された先読みデータの論アドレス及びそれに対応する物理アドレス等に基いて先読みデータ管理テーブルを作成する（Ｓ３）。作成場所は例えばバッファメモリ４のワーク領域１２である。作成された先読みデータ管理テーブルで規定される先読みデータが実際に読み出し可能か否かを判別する（Ｓ４）。ファイルが存在しなかったり、或はフラッシュメモリのブロックに対する論理アドレスの対応付けが行なわれていない場合を検出するためであり、読み出し可能でなければホストコンピュータ６にエラーコードを返す。読み出し可能であれば、次コマンド受付可能かを判定し、受付け不可能であれば、要するにホストコンピュータ６から他のアクセスコマンドが発行されていなければ、フラッシュメモリ２から先読みデータを読み出してバッファメモリ４に書き込み（Ｓ６）、対応する先読みデータ管理テーブルの有効フラグ領域３３に有効フラグをセットする（Ｓ７）。先読みデータのセクタ数が２以上に場合には、後続セクタデータに対してもステップＳ６，Ｓ７に戻って同様の処理を繰返す（Ｓ８）。後続セクタデータの先読みに必要なフラッシュメモリ２の先読みデータ読み出しアドレスやバッファメモリの先読みデータ書き込みアドレスはマイクロプロセッサ１１のアドレス演算によって順次取得すればよい。ステップＳ３で作成した先読みデータ管理テーブルで規定される全てのセクタデータの先読みを完了すると、今回の先読みコマンド受付によるビジー状態を解除して（Ｓ９）、処理を終了する。前記ステップＳ５において、次コマンド受付可能であれば先読みコマンド受付によるビジー状態を解除して（Ｓ９）、当該次コマンドを受付けて実行する。
【００４７】
前記ステップＳ５の判別処理を無効とし、ステップＳ６以降の処理を自動的に継続する処理手順を採用可能であることは言うまでもない。その場合の処理の切り換え（ステップＳ５処理を行なうか否かの切り換え）はカードコントローラ５自身が設定切換え機能を持っていてもよいし、先読みコマンドに機能切換え用の制御情報を持たせてもよい。
【００４８】
ホストコンピュータ６からアクセスコマンドが供給されたときは、先読みデータ管理テーブルの前記有効フラグ３３がチェックされ、セットされた有効フラグ３３を持つ先読みデータ管理テーブルだけが、利用すべき先読みデータの所在を取得するための検索対象とされる。
【００４９】
図６には前記ホスト指定アドレス取得処理（Ｓ２）の具体例が示される。同図に示される処理はホストコンピュータ６から供給される先読みコマンドによって先読みデータをファイル名で指定する場合の応答処理である。先ず、先読みコマンドから、先読みデータを保有するファイル名を取得する（Ｓ２１）。次に、フラッシュメモリ２のマスタブートレコード領域（ＭＢＲ）のパーテンションＩＤをリードし、使用ファイルシステムを認識する（Ｓ２２）。使用ファイルシステムにしたがってファイルシステムの認識が可能かを判別し（Ｓ２３）、可能であれば、フラッシュメモリ２上のＦＡＴなどを利用してファイルシステムを解析し、ファイルが保存された論理アドレスを取得する。ファイルが断片化されている場合にも同様にファイルが保存された論理アドレスを取得する。そして、ファイルシステム上に該当データの存在することを確認した後（Ｓ２５のｙｅｓ）、フラッシュメモリのメモリアドレスを算出する。論理アドレスとフラッシュメモリ２の物理アドレスとの対応が可変のシステムでは相互の関係を規定するアドレス変換テーブルを参照して算出することになる。アドレス変換テーブルはフラッシュメモリ２が所定領域に保有している。
【００５０】
ユーザは、ファイルシステム上では論理アドレスを管理できない。このため、ファイル名での指定を可能にすることで、ユーザの先読みデータ管理が可能になる。
【００５１】
ファイルが断片化しているときは、先読みデータ管理テーブルは図３の構成を有しているので、論理アドレスが連続する断片化部分毎に先読みデータ管理テーブルを作成することが必要になる。一つのデータファイルに対して先読みデータ管理テーブルが複数個存在しても、各先読みデータ管理テーブルはそのファイル名領域３５に夫々ファイル名を持っているのでアクセスコマンドに応答するときの検索処理の支障にはならない。
【００５２】
フラッシュメモリ２上に同一ファイル名が複数存在することが想定されるため、先読みデータ管理テーブルに保存するファイル名は、絶対パスも含めて保存することが望ましい。若しくは同一ファイル名であってもファイルシステム上の論理アドレスは異なっていることから、先読みデータ管理テーブルに保存するファイル名は、論理アドレスを含めて保存するものであってもよい。
【００５３】
図７にはバッファメモリ４に先読みデータを格納する未使用領域がないときの処理形態（先読みデータ更新形態）が例示される。
【００５４】
バッファメモリ４に先読みデータを格納する未使用領域がないときの処理形態として、既に先読みデータを保有する領域への上書き許可、又は既に先読みデータを保有する領域への上書き禁止がある。
【００５５】
上書き禁止を採用することにより、頻繁にアクセスされる先読みデータの有効利用を保証することが容易である。上書き禁止が採用されているとき、未使用領域がないときは先読みコマンド発行元にエラー応答を返して、使用者に注意を喚起すればよい。上書き許可を採用することにより先読みデータの動的な入れ換えに便利である。
【００５６】
前記上書き許可の形態として、既に先読みデータを保有する領域への全面許可、又はアクセス頻度が少ない領域に対する部分許可がある。上書き全面許可の場合、カードコントローラ５は前記先読みデータ保存領域１３に対しＦＩＦＯ（ファーストイン・ファーストアウト）により順次古いものから先に上書きを許可する制御を行なえばよい。
【００５７】
アクセス頻度に応じた部分許可を採用する場合、アクセス頻度が少ない領域か否かは先読みデータ管理テーブルが保有するアクセス回数領域３４の値に基いて判定すればよい。例えばその判定基準としてアクセス回数１を採用する場合にはアクセス回数１を保有する先読みデータ管理テーブルを検索し、検索されら先読みデータ管理テーブルで使用されているバッファメモリアドレスを利用すればよい。また、任意の複数個の先読みデータ管理テーブルを検索して得られる最小アクセス回数を保有する先読みデータ管理テーブルで管理されているバッファメモリアドレスを利用してもよい。
【００５８】
上記部分許可は、先読みデータの動的な入れ換え性と、頻繁にアクセスされる先読みデータの有効利用性とを両立するのに好都合である。
【００５９】
上記先読みデータ更新形態は、カードコントローラ５に制御データ若しくはモード信号によって設定してよい。或は、先読みコマンドでその都度指定するようにしてもよい。
【００６０】
《読み出しコマンド応答処理》
図８には読み出しコマンド応答処理の制御手順が例示される。カードコントローラ５は、ホストコンピュータ６から発行された読み出しコマンドを受付けると（Ｓ３０）、読み出しコマンドで指定された論理アドレスに対応する先読みデータ管理テーブルが存在しているかを判別する（Ｓ３１）。指定論理アドレスの全てについて先読みデータ管理テーブルがない場合には、読み出し対象論理アドレスに応ずるフラッシュメモリの物理セクタアドレスを算出し（Ｓ３２）、その物理セクタアドレスからデータを読み出してバッファメモリの読み出しデータ保存領域に転送し（Ｓ３３）、その読み出しデータ保存領域に転送されたデータをホストコンピュータ６に向けて出力する（Ｓ３４）。
【００６１】
ステップＳ３１の処理において、指定論理アドレスについて先読みデータ管理テーブルがあると判定されたときは、全てのデータが先読みされているか否かが判定される（Ｓ３５）。要するに、読み出しコマンドで指定される論理アドレスの全てが先読みデータ管理テーブルで対応付けられた論理アドレスに一致するか否かが判定される。その判定結果が、一部先読みデータ無しの場合は、先読みデータのない論理アドレスに応ずるフラッシュメモリの物理セクタアドレスを算出し（Ｓ３６）、その物理セクタアドレスからデータを読み出してバッファメモリ４の読み出しデータ保存領域に転送する（Ｓ３３）。一部先読みデータのある論理アドレスに対しては対応する先読みデータ管理テーブルのアクセス回数を＋１インクリメントする（Ｓ３７）。そして、ステップＳ３３で読み出しデータ保存領域に転送されたデータ及び先読みデータ保存領域１３にある残りの先読みデータをホストコンピュータ６に向けて出力する（Ｓ３４）。全ての論理アドレスに対して先読みデータがある場合には、当該論理アドレスに対応する先読みデータ管理テーブルのアクセス回数を＋１インクリメントし（Ｓ３７）先読みデータ保存領域１３にある対応する先読みデータをホストコンピュータ６に向けて出力する（Ｓ３４）。
【００６２】
図８の処理では、先読み済みデータが揃っていない場合、不足データをフラッシュメモリ２からバッファメモリ４に転送後にホストコンピュータ６にデータ転送を行う。不足データをフラッシュメモリ２からバッファメモリ４に読み出す前に、先読み済みデータをホストコンピュータ６に転送してもよい。
【００６３】
《書き込みコマンド応答処理》
図９には書き込みコマンド応答処理の制御手順が例示される。カードコントローラ５は、ホストコンピュータ６から発行された書き込みコマンドを受付けると（Ｓ４０）、ホストコンピュータ６から供給される書込みデータを書き込みデータ保存領域１０に一時的に格納する（Ｓ４１）。カードコントローラ５は書き込みコマンドで指定された論理アドレスに対応するフラッシュメモリ２上の物理セクタアドレスを演算し（Ｓ４２）、フラッシュメモリ２にフラッシュ書き込みコマンドを与えて、フラッシュメモリ２への書き込み処理を指示する（Ｓ３４）。フラッシュメモリ２の書き込み動作に並行して、カードコントローラ５は書込みデータに関する先読みデータ管理テーブルの有無を判別する（Ｓ４４）。書込みデータに係る有効な先読みデータがあれば、バッファメモリ４上でその先読みデータを書込みデータによって更新し（Ｓ４７）、対応する先読みデータ管理テーブルの内容を更新する（Ｓ４８）。例えば、アクセス回数を＋１インクリメントする。ステップＳ４８の処理が終った後、或はステップＳ４４の判別で対応する先読みデータがない場合、ステップＳ４３で開始したフラッシュメモリの書き込む処理が終るのを待って、書き込みコマンドによるビジーフラグを解除して（Ｓ４６）、処理を終了する。
【００６４】
先読み済みデータの更新時には、記憶媒体上のデータと同時にバッファ上の先読みデータ保存領域のデータも更新する必要がある。このため、ライト要求時のアドレスは常に監視する必要があるが、記憶媒体への保存時間に比べて、バッファメモリ４の更新処理は非常に早いため、大きな性能低下を発生しない。
【００６５】
《先読みデータ管理テーブルの退避》
先読みデータ管理テーブルをバッファメモリ４のワーク領域１２などの揮発性のメモリ上で運用しているとき、カードコントローラ５は、先読みデータ管理テーブルを所定のタイミングでフラッシュメモリ２の先読みデータ管理テーブル保存領域に退避する。所定のタイミングとは、例えば電源遮断時、或は所定期間をおいた後のコマンド待ち状態時である。機能している先読みデータの先読みデータ管理テーブルを保存することにより、電源遮断などによってバッファメモリ４上の先読みデータが失われても、後からそれを再現可能になる。前記カードコントローラ５は、パワーオンに応答してフラッシュメモリ２から先読みデータ管理テーブルを読み出し、読み出した先読みデータ管理テーブルでその所在が規定される先読みデータをフラッシュメモリ２からバッファメモリ４に転送すればよい。
【００６６】
以上説明したフラッシュメモリーカード１によれば以下の作用効果を得ることができる。
【００６７】
〔１〕先読みコマンドによりホストコンピュータ６からフラッシュメモリカード１に対して先読みデータを指定することができる。したがって、先読みによるアクセス時間の短縮効果を最大限に発揮できるように先読みすべきデータを柔軟に決定することができる。フラッシュメモリーカード１の読み出し性能は、記憶媒体であるフラッシュメモリ２自身の読み出し性能がボトルネックとなっているため、ホストコンピュータ６からの読み出し要求時にフラッシュメモリ２からの読み出し処理に代えてバッファメモリ４から先読みデータを出力する処理が増えることにより、システム性能を向上させることができる。
【００６８】
〔２〕前記先読みコマンドは先読みデータの指定を論理アドレス又はファイル名の何れによっても行なうことができる。例えば先読みコマンドにおいて論理アドレスの指定フィールドとファイル名の指定フィールドが異なっている。マスタブートレコード若しくはＦＡＴ（ファイル・アロケーション・テーブル）などに代表されるように使用者にとってその論理アドレスの把握が容易な場合もあるので、論理アドレスによる指定は、先読みデータを直接的に指定できるので便利である。
【００６９】
フラッシュメモリーカード１の使用者はＯＳで管理されるフラッシュメモリ２上の論理アドレスを把握できない場合が有り、フラッシュメモリカード１の使用者はファイル名でデータを把握するのが簡便であり、データ先読みに対する良好な操作性を実現することができる。
【００７０】
〔３〕カードコントローラ５による先読みデータの転送形態として、先読みコマンドの実行時の他に、先に先読みデータ管理テーブルを生成し、その後所定のタイミングで先読みデータをバッファメモリ４に転送する形態を採用することができる。これにより、カードコントローラ５は、先読みコマンドを実行終了した後のコマンド待ち状態において先読みデータをバッファメモリ４に転送することができる。先読み処理によってリードアクセスなど処理が待たされてデータ処理効率が低下することを未然に防止することができる。
【００７１】
〔４〕先読みデータ管理テーブルは、先読みデータの先頭論理アドレス、先読みデータを格納する領域の先頭メモリアドレス、及び先読みデータのデータ数を保持する領域と共に、先読みデータを含むファイル名を保持する領域を有する。これにより、ファイルシステムにおいてファイルの断片化を生じたとき、一つのファイルデータは分割された複数の先読みデータ管理テーブルによって管理されることになるので、リードアクセス等に応答する処理においてファイル名で対応する先読みデータ管理テーブルを検索でき、バッファメモリ上の所要の先読みデータのアクセスが更に速くなる。
【００７２】
〔５〕前記先読みデータ管理テーブルは、ホストコンピュータ６による先読みデータのアクセス回数を保持する領域３４を有することにより、カードコントローラ５は、バッファメモリ４に先読みデータを格納する未使用領域がないとき、先読みデータ管理テーブルが保有するアクセス回数に基いてアクセス頻度の少ないバッファメモリアドレスを検索し、検索したバッファメモリアドレスの領域を新たな先読みデータの格納領域に割当てることができる。頻繁にアクセスされる先読みデータの有効利用を保証することができる。
【００７３】
〔６〕カードコントローラ５は先読みデータ管理テーブルを所定のタイミングでフラッシュメモリ２の先読みデータ管理テーブル保存領域に退避することにより、先読みデータ管理テーブルをバッファメモリ４上又はワークＲＡＭ２６で運用しているとき、機能している先読みデータの先読みデータ管理テーブルを保存することにより、電源遮断などによってバッファメモリ上の先読みデータが失われても、後からそれを再現可能になる。
【００７４】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００７５】
例えば、上記ではファイルシステムとしてＦＡＴファイルシステムにとしたが、ＮＴＦＳ等その他のファイルシステムであってもよい。不揮発性メモリをフラッシュメモリとしたが、高誘電体メモリ等、その他の半導体メモリであってもよい。更に不揮発性メモリは半導体メモリに限定されず、ハードディスクなどの記録ディスクであってもよい。本発明はフラッシュメモリーカード等のメモリカードに限定されず、ハードディスク装置にも適用することができる。このとき、記憶装置はリムーバブルであることに限定されず、装着システムに固定配置される利用形態のものであってもよい。
【００７６】
前記フラッシュメモリはスタックドゲート構造に限定されず、選択ＭＯＳトランジスタ部とメモリＭＯＳトランジスタ部との間に拡散層を設けずに直列形態に形成したスプリットゲート構造であってもよい。また、シリコン窒化膜のようなトラップ領域に電荷を局在的に蓄積するメモリセル構造を採用してもよい。半導体不揮発性メモリは１個のメモリセルが保持する記憶情報を１ビットとする構成に限定されず２ビット以上とする記憶形式であってもよい。
【００７７】
また、本発明をメモリカードに適用する場合、カードコントローラのような制御回路はＩＤＥなどのホストインタフェース回路を備えなくてもよく、その機能をホストコンピュータに負担させるように規格化されたメモリカードにも適用可能である。
【００７８】
また、先読みコマンドが指定する先読みデータの論理アドレスは、ファイルシステムの構成如何により、実質的に不揮発性メモリの物理アドレスに一致している場合もある。
【符号の説明】
【００７９】
１  メモリカード
２  フラッシュメモリ
４  バッファメモリ
５  カードコントローラ
６  ホストコンピュータ
１０  書込みデータ保存領域
１１  読み出しデータ保存領域
１２  ワーク領域
１３  先読みデータ保存領域
１４  データ部
１５  内部情報格納部
１６  先読みデータ管理テーブル格納部
２０  ホストインタフェース回路
２１  マイクロプロセッサ
２２  フラッシュコントローラ
３３  バッファコントローラ
２５  ＣＰＵ
２６  ワークＲＡＭ
２７  プログラムメモリ
Ｔｉ  先読みデータ管理テーブル
３０  先頭論理アドレス領域
３１  先頭メモリアドレス領域
３２  セクタ数領域
３３  有効フラグ領域
３４  アクセス回数領域
３５  ファイル名領域
【図１】
2010191983.tif 000003
【図２】
2010191983.tif 000004
【図３】
2010191983.tif 000005
【図４】
2010191983.tif 000006
【図５】
2010191983.tif 000007
【図６】
2010191983.tif 000008
【図７】
2010191983.tif 000009
【図８】
2010191983.tif 000010
【図９】
2010191983.tif 000011