(57)【要約】  データ記憶部（１３０）は、セクタ番号と物理アドレスを対応付けたアドレス変換テーブル（１３３）をファイル毎に一時的に記憶する。変換テーブル用メモリ確保部（１４０）は、ファイルのオープン要求があると、当該ファイルに対応するアドレス変換テーブル（１３３）用のメモリ領域を確保する。ファイルシステム管理部（１１０）は、確保されたメモリ領域を所定のタイミングで開放する。また、ファイルシステム管理部（１１０）は、メモリ領域が確保されたアドレス変換テーブル（１３３）の各レコードに、当該ファイルを構成する１又は複数のセクタのセクタ番号を順次格納する。その後、メモリ制御部（１２０）は、アドレス変換テーブルの各レコードのセクタ番号に対応する物理アドレスを、フラッシュメモリのメモリ領域を探索することで取得し、取得した各物理アドレスを対応するレコードに格納する。
2012104975.tif 000002
【特許請求の範囲】
【請求項１】
読み書き可能な不揮発性メモリにアクセスして、該不揮発性メモリ用に構築されたファイルシステムにおけるセクタ単位で、データの読み込み及び書き込みを行うメモリ制御手段と、
前記不揮発性メモリに格納されているファイルを構成するセクタのセクタ番号と、該セクタ番号に対応する前記不揮発性メモリの物理アドレスと、からなる１又は複数のレコードが登録されたアドレス変換テーブルをファイル毎に一時的に記憶するデータ記憶部と、
外部からファイルのオープン要求があった際、前記データ記憶部の所定のメモリ領域から、当該ファイルに対応する前記アドレス変換テーブル用のメモリ領域を確保するメモリ確保手段と、
該メモリ確保手段により確保された前記メモリ領域を所定のタイミングで開放するメモリ開放手段と、
前記メモリ領域が確保された前記アドレス変換テーブルの各レコードに、当該ファイルを構成する少なくとも一部のセクタのセクタ番号を順次格納し、該格納後、メモリ制御手段にその旨を通知するセクタ番号格納手段と、を備え、
前記メモリ制御手段は、
前記セクタ番号格納手段から前記通知を受けると、前記アドレス変換テーブルの各レコードのセクタ番号に対応する物理アドレスを、前記不揮発性メモリのメモリ領域を探索することで取得し、取得した各物理アドレスを対応する前記レコードに格納し、
前記ファイルを構成するセクタにアクセスする際、当該セクタのセクタ番号をキーにして、当該ファイルに対応する前記アドレス変換テーブルを参照し、当該セクタに対応する物理アドレスを取得するメモリコントローラ。
【請求項２】
前記メモリ開放手段は、ファイルのクローズ要求があった際、当該ファイルに対応する前記アドレス変換テーブル用のメモリ領域を開放する請求項１に記載のメモリコントローラ。
【請求項３】
前記メモリ開放手段は、前記アドレス変換テーブル用のメモリ領域が確保されてから所定時間経過後、当該メモリ領域を開放する請求項１に記載のメモリコントローラ。
【請求項４】
前記セクタ番号格納手段は、前記メモリ確保手段により確保されたメモリ領域に展開される前記アドレス変換テーブルのレコード数が、当該ファイルを構成する全セクタの数以上である場合、当該アドレス変換テーブルに当該ファイルを構成する全てのセクタのセクタ番号を格納する請求項１乃至３の何れか１項に記載のメモリコントローラ。
【請求項５】
前記メモリ確保手段は、前記データ記憶部の所定のメモリ領域に、当該ファイルを構成する全セクタの数分に対応する前記アドレス変換テーブル用のメモリ領域に相当する空き領域が存在する場合、当該空き領域を当該アドレス変換テーブル用のメモリ領域として確保する請求項１乃至４の何れか１項に記載のメモリコントローラ。
【請求項６】
前記メモリ確保手段は、今後オープンが予定されるファイルの数も加味して、前記アドレス変換テーブル用のメモリ領域を確保する請求項１乃至４の何れか１項に記載のメモリコントローラ。
【請求項７】
前記ファイルには、所定の優先度が予め付与されており、
前記メモリ確保手段は、オープン要求されたファイルの前記優先度も加味して、前記アドレス変換テーブル用のメモリ領域を確保する請求項１乃至４の何れか１項に記載のメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリ等の不揮発性の記憶媒体へのアクセス技術に関する。
【背景技術】
【０００２】
近年、不揮発性の記憶媒体であるフラッシュメモリは、パーソナルコンピュータ等の情報処理装置、携帯電話やデジタルカメラ等、様々な電子機器で使用されている。また、フラッシュメモリへのアクセス技術に関して、従来より種々の提案がなされている（例えば、特許文献１）。【０００３】
特許文献１に開示されるメモリカードは、フラッシュメモリと、これを制御するコントローラと、を備え、かかるコントローラは、アドレスが増加する方向に沿ったデータ書き込み命令を外部から受け付け、この受け付けたデータ書き込み命令に対する書き込み時の最終書込位置を検出する機能等を有する。このコントローラは、フラッシュメモリのセクタ（論理データ）に対応する物理アドレスの検索の際、セクタと、これに対応するフラッシュメモリの物理アドレスとの関係を示す変換テーブルを参照する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−４０２６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に開示される技術のように、セクタ毎に対応するフラッシュメモリの物理アドレスが即座に判るようにした変換テーブルは、フラッシュメモリのサイズが大きくなれば、そのサイズは増大する。このため、省メモリ化が要請されるマイコンシステム等では、このような変換テーブルを従来のようにして採用するのは容易でない。【０００６】
本発明は、上記従来の問題を解決するためになされたものであり、定常的なメモリ消費を抑制しつつ、指定されたセクタに対応する、フラッシュメモリ等の読み書き可能な記憶媒体の物理アドレスに高速でアクセスできるメモリコントローラを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明に係るメモリコントローラは、
読み書き可能な不揮発性メモリにアクセスして、該不揮発性メモリ用に構築されたファイルシステムにおけるセクタ単位で、データの読み込み及び書き込みを行うメモリ制御手段と、
前記不揮発性メモリに格納されているファイルを構成するセクタのセクタ番号と、該セクタ番号に対応する前記不揮発性メモリの物理アドレスと、からなる１又は複数のレコードが登録されたアドレス変換テーブルをファイル毎に一時的に記憶するデータ記憶部と、
外部からファイルのオープン要求があった際、前記データ記憶部の所定のメモリ領域から、当該ファイルに対応する前記アドレス変換テーブル用のメモリ領域を確保するメモリ確保手段と、
該メモリ確保手段により確保された前記メモリ領域を所定のタイミングで開放するメモリ開放手段と、
前記メモリ領域が確保された前記アドレス変換テーブルの各レコードに、当該ファイルを構成する少なくとも一部のセクタのセクタ番号を順次格納し、該格納後、メモリ制御手段にその旨を通知するセクタ番号格納手段と、を備え、
前記メモリ制御手段は、
前記セクタ番号格納手段から前記通知を受けると、前記アドレス変換テーブルの各レコードのセクタ番号に対応する物理アドレスを、前記不揮発性メモリのメモリ領域を探索することで取得し、取得した各物理アドレスを対応する前記レコードに格納し、
前記ファイルを構成するセクタにアクセスする際、当該セクタのセクタ番号をキーにして、当該ファイルに対応する前記アドレス変換テーブルを参照し、当該セクタに対応する物理アドレスを取得する。
【発明の効果】
【０００８】
本発明によれば、セクタにアクセスする際、セクタ番号と物理アドレスが対応付けられたアドレス変換テーブルを参照することで、当該セクタに対応する物理アドレスを即座に取得することが可能になり、不揮発性メモリへのアクセス処理の高速化が図れる。また、各アドレス変換テーブルについて、メモリ領域の占有は一時的であるため、定常的なメモリ消費を抑制することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態に係るメモリコントローラとしての機能を有するマイコンを備えたフラッシュメモリシステムの全体構成を示す図である。
【図２】図１のマイコンの構成を示すブロック図である。
【図３】図１のフラッシュメモリのメモリ構造を概略的に示す図である。
【図４】ファイルシステム定義テーブルの一例を示す図である。
【図５】変換テーブル管理テーブルの一例を示す図である。
【図６】アドレス変換テーブルの一例を示す図である。
【図７】物理アドレス設定処理を説明するための図である。
【図８】アドレス変換テーブル作成処理の手順を示すフローチャートである。
【図９】データ読込処理の手順を示すフローチャートである。
【図１０】他の実施形態で使用するファイルシステム定義テーブルの一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、本発明の一実施形態に係るメモリコントローラについて図面を参照して詳細に説明する。
【００１１】
図１は、本実施形態に係るメモリコントローラとしての機能を有するマイコン１０と、フラッシュメモリ２０と、から構成されるフラッシュメモリシステム１の概略構成を示す図である。マイコン１０とフラッシュメモリ２０は、データバス３０により接続されている。
【００１２】
マイコン１０は、各種の電子機器や、各種の家電機器等に搭載され、当該機器全体の動作を制御する。マイコン１０は、ハードウェア的には、マイクロプロセッサ、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、メモリインタフェース、水晶発振器等のクロック源（何れも図示せず）等から構成される。
【００１３】
マイコン１０は、図２に示すように、機能的には、アプリケーション処理部１００と、ファイルシステム管理部１１０と、メモリ制御部１２０と、データ記憶部１３０と、変換テーブル用メモリ確保部１４０と、を備える。ファイルシステム管理部１１０、メモリ制御部１２０と、データ記憶部１３０及び変換テーブル用メモリ確保部１４０は、本発明のメモリコントローラとしての機能を担う。
【００１４】
アプリケーション処理部１００は、ＲＯＭ等に記憶されている、当該機器の機能を実現するための各種のアプリケーションソフトウェアプログラムに則った処理を実行する。ファイルシステム管理部１１０は、フラッシュメモリ２０用に構築されるファイルシステムの管理を行う。また、ファイルシステム管理部１１０は、本発明におけるセクタ番号格納手段及びメモリ開放手段としての機能も担う。メモリ制御部１２０は、ファイルシステム管理部１１０を介したアプリケーション処理部１００からの要求に応じて、フラッシュメモリ２０にアクセスして、各種の処理（データの読み込みや書き込み等）を行う。
【００１５】
データ記憶部１３０は、当該ファイルシステムを定義するための各種のテーブルを記憶する。本実施形態では、データ記憶部１３０には、ファイルシステム定義テーブル１３１、変換テーブル管理テーブル１３２、アドレス変換テーブル１３３などが記憶される。これらのテーブルの詳細については後述する。
【００１６】
フラッシュメモリ２０のメモリ領域は、図３に示すように、複数のブロックで構成される。ブロック（消去ブロック）は、データの消去における処理単位である。ファイルシステムにおけるデータの管理単位であるセクタは、ブロックを所定サイズ（例えば、５２０バイト）ずつ分割した領域を示し、「セクタ番号」領域（例えば、４バイト）と、「セクタ状態」領域（例えば、４バイト）と、「データ」領域（例えば、５１２バイト）と、から構成される。
【００１７】
「セクタ番号」領域には、当該ファイルシステムが管理するセクタ毎に割り振られた番号（セクタ番号）が格納される。本実施形態では、各セクタには、１から始まるシリアル番号が割り当てられる。
【００１８】
「セクタ状態」領域には、当該セクタの利用状態（セクタ状態）を示す情報が格納される。この「セクタ状態」領域を参照することで、当該セクタが、“未使用”、“使用中”又は“削除”の何れかの状態であるかが判る。例えば、ブロックが消去された直後は、当該ブロックの全てのセクタは、“未使用”を示す。「データ」領域には、「セクタ番号」領域に格納されているセクタ番号に対応するデータが格納される。
【００１９】
メモリ制御部１２０は、ファイルシステム管理部１１０により指定されたセクタ番号に対応した、フラッシュメモリ２０に格納されているデータにアクセスする場合、フラッシュメモリ２０のメモリ領域をセクタ単位（例えば、５２０バイト）で順次走査する。そして、「セクタ番号」領域に格納されているセクタ番号が、指定されたセクタ番号と一致し、且つ、「セクタ状態」領域に格納されている情報が“使用中”を示すセクタの「データ」領域にアクセスする。また、詳細は後述するが、メモリ制御部１２０は、セクタ番号をキーにして、作成されたアドレス変換テーブル１３３を参照し、指定されたセクタ番号に対応する物理アドレスを取得する。これにより、メモリ制御部１２０は、フラッシュメモリ２０に格納されている、指定されたセクタ番号に対応したデータに即座にアクセスすることができる。
【００２０】
また、フラッシュメモリ２０に新規にデータ（ファイル）を書きこむ場合には、メモリ制御部１２０は、ファイルシステム管理部１１０により指定されたデータサイズ（ファイルサイズ）に対応する１又は複数の“未使用”セクタを確保し、当該データの書き込みを行う。
【００２１】
また、データの上書きの際には、メモリ制御部１２０は、指定されたセクタ番号に対応する“使用中”セクタとは別の“未使用”セクタに、データとセクタ番号を書き込むと共に、セクタ状態を“使用中”に変更する。また、元のセクタのセクタ状態を“削除”に変更する。
【００２２】
ファイルシステム定義テーブル１３１は、図４に示すように、「開始アドレス」項目、「開始セクタ」項目、「ドライブサイズ」項目等で構成される。
【００２３】
「開始アドレス」には、フラッシュメモリ２０のメモリ領域における先頭アドレス（本実施形態では、0x0000000）が格納される。「開始セクタ」には、セクタ番号の開始番号（本実施形態では、１）が格納される。「ドライブサイズ」には、当該ファイルシステムで管理するフラッシュメモリ２０の最大メモリ容量（本実施形態では、１９．２ＭＢ（メガバイト））が格納される。
【００２４】
変換テーブル管理テーブル１３２は、現在オープンしているファイルに対応するアドレス変換テーブル１３３についての情報を示すデータテーブルである。変換テーブル管理テーブル１３２は、図５に示すように、「ファイル名」項目、「先頭アドレス」項目、レコード数」項目等で構成される。
【００２５】
「ファイル名」には、現在オープン中のファイル名が格納される。「先頭アドレス」には、対応するアドレス変換テーブル１３３の先頭を示す、データ記憶部１３０のメモリアドレスが格納される。「レコード数」には、当該アドレス変換テーブル１３３のレコード数が格納される。なお、「レコード数」の格納値が０の場合、メモリ不足等の理由により当該ファイルに対応するアドレス変換テーブル１３３が作成されなかったことを示す。その場合、「先頭アドレス」には、所定の“ＮＵＬＬ”値が格納される。
【００２６】
アドレス変換テーブル１３３は、現在オープン中のファイルを構成する各セクタの番号（セクタ番号）と、フラッシュメモリ２０の物理アドレスとを対応付けたデータテーブルであり、オープン中のファイル毎に一時的に作成される。図６に示すように、アドレス変換テーブル１３３は、「セクタ番号」項目と、「物理アドレス」項目と、からなる複数のレコードで構成される。
【００２７】
アドレス変換テーブル１３３は、そのテーブルサイズに相当する、データ記憶部１３０におけるメモリ領域が確保された後に作成される。テーブルサイズは、対応するファイルを構成するセクタの数に基づいて決定される。具体的には、当該ファイルのセクタ数と、１レコード当たりのサイズ（「セクタ番号」のデータ型に対応するサイズ（例えば、２バイト）＋「物理アドレス」のデータ型に対応するサイズ（例えば、４バイト））を乗算することで求められる。例えば、セクタ数が、４で、１レコード当たりのサイズが、６バイトの場合、当該アドレス変換テーブル１３３のために確保されるメモリ領域のサイズは、４×６＝２４バイトとなる。
【００２８】
上記の場合、ファイルを構成するセクタ数と、当該ファイルに対応するアドレス変換テーブル１３３のレコード数は一致するが、データ記憶部１３０の空き領域が十分でない場合には、セクタ数＞レコード数となるケースもある。また、当該ファイルに対応するアドレス変換テーブル１３３そのものが作成されないケースもある。
【００２９】
変換テーブル用メモリ確保部１４０は、ファイルシステム管理部１１０からの要求に従い、データ記憶部１３０におけるアドレス変換テーブル１３３用のメモリを確保（アロケート）する処理を行う。この際、ファイルシステム管理部１１０は、上述したようにして、確保したいアドレス変換テーブル１３３のテーブルサイズを算出し、これをパラメータとして、変換テーブル用メモリ確保部１４０に対して、メモリ領域の確保を要求する。
【００３０】
変換テーブル用メモリ確保部１４０は、データ記憶部１３０の所定のメモリ領域をチェックし、要求されたサイズ分の空き領域があるか否かを判定する。要求されたサイズ分の空き領域がある場合は、変換テーブル用メモリ確保部１４０は、要求されたサイズ分の空き領域を確保し、ファイルシステム管理部１１０に対して、要求されたサイズ分のメモリ領域が確保できたことを示す応答種別と、確保したメモリ領域の先頭アドレスと、からなる応答メッセージを返す。
【００３１】
また、空き領域はあるものの、要求されたサイズ分の空き領域がない場合、変換テーブル用メモリ確保部１４０は、空き領域分のメモリ領域を確保する。そして、ファイルシステム管理部１１０に対して、要求されたサイズ分のメモリ領域が確保できなかったことを示す応答種別と、確保したメモリのサイズと、確保したメモリ領域の先頭アドレスと、からなる応答メッセージを返す。
【００３２】
空き領域がない場合、変換テーブル用メモリ確保部１４０は、空き領域がないことを示す応答種別を含んだ応答メッセージをファイルシステム管理部１１０に返す。
【００３３】
ファイルシステム管理部１１０は、変換テーブル用メモリ確保部１４０から上記の応答メッセージを受けると、変換テーブル管理テーブル１３２（図５参照）に、当該ファイルに対応するアドレス変換テーブル１３３についての情報を追加する。具体的には、ファイルシステム管理部１１０は、当該ファイルのファイル名、アドレス変換テーブル１３３の先頭アドレス及びレコード数からなるレコードを変換テーブル管理テーブル１３２にエントリする。なお、メモリが確保できたものの、要求したサイズに達していない場合、ファイルシステム管理部１１０は、確保したメモリ領域のサイズを１レコード当たりのサイズで除算し、その結果得られた商を当該アドレス変換テーブル１３３のレコード数として採用する。
【００３４】
また、ファイルシステム管理部１１０は、メモリ領域が確保できなかった場合や、確保できたメモリ領域のサイズが、１レコード当たりのサイズ未満の場合には、変換テーブル管理テーブル１３２にエントリするレコードの「先頭アドレス」にＮＵＬＬを、「レコード数」に０をそれぞれ格納する。
【００３５】
ファイルシステム管理部１１０は、上記のエントリ後、本発明におけるセクタ番号格納手段としての処理を実行する。即ち、ファイルシステム管理部１１０は、メモリ領域が確保されたアドレス変換テーブル１３３の各レコードの「セクタ番号」に、当該ファイルを構成するセクタのセクタ番号を順次格納する。それから、ファイルシステム管理部１１０は、メモリ制御部１２０に対して、当該アドレス変換テーブル１３３の各レコードの「物理アドレス」を埋める処理の要求を通知する。即ち、ファイルシステム管理部１１０は、メモリ制御部１２０に対して、各レコードのセクタ番号に対応する物理アドレスをフラッシュメモリ２０から検索して取得し、各レコードの「物理アドレス」に格納する処理（物理アドレス設定処理）を要求する。
【００３６】
この際、ファイルシステム管理部１１０は、当該ファイルのファイル名をパラメータとして、メモリ制御部１２０に対して物理アドレス設定処理を要求する。メモリ制御部１２０は、かかる要求を受けると、変換テーブル管理テーブル１３２を参照して、指定されたファイル名に対応するアドレス変換テーブル１３３の先頭アドレス及びレコード数を取得する。メモリ制御部１２０は、取得した先頭アドレス及びレコード数に基づいて、当該アドレス変換テーブル１３３の先頭レコードから順にセクタ番号を取り出す。
【００３７】
メモリ制御部１２０は、フラッシュメモリ２０にアクセスし、ファイルシステム定義テーブル１３１の「開始アドレス」に格納されている先頭アドレス（本実施形態では、0x0000000）から、セクタ単位（例えば、５２０バイト）で下方向（後方のブロックの方向）に向かって順次走査を開始する。この走査では、メモリ制御部１２０は、当該セクタ番号と一致し、且つ、“使用中”であるセクタを探索する。この探索により、該当するセクタが見つかると、メモリ制御部１２０は、当該セクタの物理アドレスを取得し、当該アドレス変換テーブル１３３における当該レコードの「物理アドレス」に格納する。
【００３８】
メモリ制御部１２０は、上記処理を繰り返し行って、図７に示すように、アドレス変換テーブル１３３の全レコードに、それぞれ対応する物理アドレスを格納する。全レコードへの物理アドレスの格納を終了すると、メモリ制御部１２０は、物理アドレス設定処理が終了した旨のステータスをファイルシステム管理部１１０に通知する。
【００３９】
以上のようにして、オープン中の各ファイルに対応したアドレス変換テーブル１３３が作成される。アドレス変換テーブル１３３が作成されると、メモリ制御部１２０は、ファイルシステム管理部１１０から、当該ファイルのセクタに対するアクセス（読み込み等）を要求された際、当該アドレス変換テーブル１３３を参照する。これにより、フラッシュメモリ２０の対応する物理アドレスに即座にアクセスすることができ、処理の高速化が図れる。なお、「ファイルを構成する全セクタ数」＞「アドレス変換テーブル１３３のレコード数」の場合は、アドレス変換テーブル１３３において、未格納のセクタ番号もある。この場合、メモリ制御部１２０は、従来通り、フラッシュメモリ２０のメモリ領域をセクタ単位で順次走査することで、要求されたセクタにアクセスする。
【００４０】
作成されたアドレス変換テーブル１３３は、対応するファイルがクローズされると、ファイルシステム管理部１１０によって消去される。即ち、当該アドレス変換テーブル１３３用のメモリ領域が開放される。また、これに伴い、変換テーブル管理テーブル１３２の該当するレコードも削除される。
【００４１】
なお、アドレス変換テーブル１３３の作成後、当該ファイルの書き込み要求（上書き）があると、メモリ制御部１２０は、アドレス変換テーブル１３３の全レコードの物理アドレスを、それぞれ移動先のセクタの物理アドレスに更新する。
【００４２】
図８は、ファイルシステム管理部１１０、変換テーブル用メモリ確保部１４０及びメモリ制御部１２０の協調によって実行されるアドレス変換テーブル作成処理の手順を示すフローチャートである。
【００４３】
アドレス変換テーブル作成処理は、アプリケーション処理部１００からファイルのオープン要求がファイルシステム管理部１１０に通知されることで開始される。なお、このオープン要求では、アプリケーション処理部１００は、オープン対象となるファイルの名称（ファイル名）を指定するものとする。
【００４４】
ファイルシステム管理部１１０は、アプリケーション処理部１００からファイルのオープン要求を受けると、指定されたファイル名に対応するサイズ（ファイルサイズ）を図示しないファイル情報テーブルを参照して取得する。このファイル情報テーブルは、ファイル名、ファイルサイズ、当該ファイルを構成するセクタの番号（セクタ番号）等を対応付けたテーブルであり、当該ファイルの新規書き込み時に作成され、テーブル記憶部１３０に保存される。
【００４５】
ファイルシステム管理部１１０は、取得したファイルサイズに基づいて、確保したいアドレス変換テーブル１３３のテーブルサイズを算出する（ステップＳ１０１）。そして、これをパラメータとして、変換テーブル用メモリ確保部１４０にメモリ領域の確保を要求する。
【００４６】
変換テーブル用メモリ確保部１４０は、上述のようにして、アドレス変換テーブル１３３用のメモリ領域の確保を行い（ステップＳ１０２）、その結果をファイルシステム管理部１１０に応答する。
【００４７】
この応答を受けると、ファイルシステム管理部１１０は、変換テーブル管理テーブル１３２（図５参照）に、当該ファイルに対応するアドレス変換テーブル１３３についての情報を追加する（ステップＳ１０３）。
【００４８】
変換テーブル管理テーブル１３２に追加されるアドレス変換テーブル１３３のレコード数は、上述したように、要求したテーブルサイズ分のメモリ領域が確保された場合には、当該ファイルを構成するセクタの数に等しい。しかし、確保できたメモリ領域のサイズが、要求したテーブルサイズより小さい場合には、レコード数＜全セクタ数となる。例えば、確保したメモリ領域のサイズが、１ＫＢ（キロバイト）であり、アドレス変換テーブル１３３の１レコード当たりのサイズが、６バイトである場合では、レコード数は、１７０（１０２４／６）となる。また、メモリ領域が確保できなかった場合や、確保できたメモリ領域のサイズが、１レコード当たりのサイズ未満の場合、「レコード数」には０が格納され、「先頭アドレス」には、ＮＵＬＬが格納される。
【００４９】
次に、ファイルシステム管理部１１０は、メモリ領域が確保されたアドレス変換テーブル１３３の全レコードに、当該ファイルを構成するセクタのセクタ番号を順次格納する（ステップＳ１０４）。但し、この処理は、１レコード（例えば、６バイト）以上のメモリ領域が確保された場合のみ実行される。
【００５０】
それから、ファイルシステム管理部１１０は、メモリ制御部１２０に対して、物理アドレス設定処理を要求する。但し、この処理も上記同様、１レコード以上のメモリ領域が確保された場合のみ実行される。
【００５１】
メモリ制御部１２０は、当該アドレス変換テーブル１３３の全レコードのセクタ番号にそれぞれ対応する物理アドレスを、フラッシュメモリ２０のメモリ領域を探索することで取得し、それぞれ対応するレコードに格納する（ステップＳ１０５）。
【００５２】
メモリ制御部１２０は、上記物理アドレス設定処理を終了すると、その旨をファイルシステム管理部１１０に通知する。ファイルシステム管理部１１０は、かかる通知を受けると、アプリケーション処理部１００に対して、オープン要求に対する処理が完了した旨を通知する（ステップＳ１０６）。
【００５３】
以上のようにして、オープン要求されたファイルに対応するアドレス変換テーブル１３３が作成される。
【００５４】
次に、アドレス変換テーブル１３３が作成された後、アプリケーション処理部１００から、当該ファイルについての読み込み要求があった際の処理について説明する。図９は、ファイルシステム管理部１１０及びメモリ制御部１２０によって実行されるデータ読込処理の手順を示すフローチャートである。データ読込処理は、アプリケーション処理部１００からのデータ読込要求がファイルシステム管理部１１０に通知されることで開始される。なお、このデータ読込要求では、アプリケーション処理部１００は、読み込み対象となるファイルの名称（ファイル名）を指定するものとする。
【００５５】
ファイルシステム管理部１１０は、指定されたファイル名に対応するセクタ番号を上述したファイル情報テーブルを参照して取得する（ステップＳ２０１）。ここで、当該ファイルが複数のセクタで構成されている場合には、ファイルシステム管理部１１０は、ファイル情報テーブルを参照して、対応するセクタ番号を順次１つずつ取得する。
【００５６】
ファイルシステム管理部１１０は、メモリ制御部１２０に対して、取得したセクタ番号と、当該ファイルのファイル名と、を通知して、当該セクタに対応するデータの読み込みを要求する。
【００５７】
メモリ制御部１２０は、かかる要求を受けると、変換テーブル管理テーブル１３２を参照して、指定されたファイル名に対応するアドレス変換テーブル１３３の先頭アドレス及びレコード数を取得する（ステップＳ２０２）。メモリ制御部１２０は、取得した先頭アドレス及びレコード数に基づいて、当該アドレス変換テーブル１３３の先頭レコードから順に「セクタ番号」の格納値をチェックして、指定されたセクタ番号が格納されたレコードを検索する。そして、該当するレコードの「物理アドレス」に格納されている物理アドレスを取得する（ステップＳ２０３）。
【００５８】
メモリ制御部１２０は、フラッシュメモリ２０の取得した物理アドレスに位置するセクタにアクセスし、「データ」領域に格納されているデータ（セクタデータ）を読み込む（ステップＳ２０４）。メモリ制御部１２０は、ファイルシステム管理部１１０に対して、読み込んだセクタデータを供給すると共に、セクタデータの読み込みが完了した旨を通知する。かかる通知を受けると、ファイルシステム管理部１１０は、当該ファイルを構成する全てのセクタデータの読み込みが完了したか否かを判定する（ステップＳ２０５）。
【００５９】
全セクタデータの読み込みが完了していない場合（ステップＳ２０５；ＮＯ）、上述した処理が繰り返し実行される。即ち、ファイルシステム管理部１１０は、ファイル情報テーブルを参照して、対応する次のセクタ番号を１つ取得する（ステップＳ２０１）。そして、ファイルシステム管理部１１０は、メモリ制御部１２０に対して、取得したセクタ番号と、当該ファイルのファイル名と、を通知して、当該セクタに対応するデータの読み込みを要求する。かかる要求を受けると、メモリ制御部１２０は、上記のステップＳ２０２〜Ｓ２０４の処理を実行する。
【００６０】
一方、全セクタデータの読み込みが完了した場合（ステップＳ２０５；ＹＥＳ）、ファイルシステム管理部１１０は、読み込んだ全セクタデータ、即ち、読み込んだファイルをアプリケーション処理部１００に供給し（ステップＳ２０６）、本処理は終了する。
【００６１】
以上説明したように、本実施形態のマイコン１０（メモリコントローラ）は、ファイルオープンの際に、当該ファイルを構成するセクタの番号と、フラッシュメモリ２０の物理アドレスと、を対応付けたアドレス変換テーブル１３３を作成する。これにより、当該ファイルがオープン中において、ファイルの読み込み等の要求があった場合、アドレス変換テーブル１３３を参照することで、フラッシュメモリ２０に格納されている、指定されたセクタ番号に対応したセクタに即座にアクセスすることができる。したがって、処理の高速化が図れる。
【００６２】
また、アドレス変換テーブル１３３用のメモリ領域は、ファイルオープン時に確保され、ファイルクローズ時に開放される。このため、かかるテーブルはデータ記憶部１３０に常駐せず、メモリ領域の占有は一時的となる。したがって、定常的なメモリ消費を抑制できる。
【００６３】
なお、本発明は、上記実施形態に限定されず、本発明の要旨を逸脱しない範囲での種々の変更は勿論可能である。
【００６４】
例えば、上記実施形態では、アドレス変換テーブル１３３用に確保されたメモリ領域は、対応するファイルのクローズ時に開放されていたが、メモリ領域を開放するタイミングに限定はない。例えば、確保されてから所定時間経過したメモリ領域を開放する仕様にしてもよい。このようにすると、アドレス変換テーブル１３３用に確保された一のメモリ領域が、長時間継続して占有されてしまう事態を回避できる。
【００６５】
また、上記実施形態では、変換テーブル用メモリ確保部１４０は、要求されたサイズ分の空き領域がデータ記憶部１３０にあると、要求されたサイズ分のメモリ領域を確保していたが、メモリ領域確保の仕様は、これに限定されない。例えば、今後にオープンされるファイルも考慮したメモリ領域確保を行うようにしてもよい。具体的には、この場合、図１０に示すように、ファイルシステム定義テーブル１３１に、さらに「オープン予約数」項目と、「予約サイズ」項目を追加する。
【００６６】
「オープン予約数」には、同時にオープン状態となるファイルの予測数が格納される。「同時にオープン状態となる」とは、あるファイルがオープンされ、クローズする間に、他のファイルがオープン状態になることをいう。この予測数は、予め決められた固定値であってもよいし、過去の同時オープン数の平均値や最大数等、適宜更新される値であってもよい。
【００６７】
また、「予約サイズ」には、「オープン予約数」に格納されている数分のファイルが同時にオープン状態となっても、１つのアドレス変換テーブル１３３への割り当てが最小限保証されるサイズが格納される。かかるサイズは、固定値であってもよいし、過去に作成されたアドレス変換テーブル１３３のサイズを平均した値や、最大値等、適宜更新される値であってもよい。
【００６８】
上記の場合、変換テーブル用メモリ確保部１４０は、ファイルシステム管理部１１０からメモリ領域の確保要求を受けると、データ記憶部１３０の空き領域のサイズと、ファイルシステム定義テーブル１３１の上記「オープン予約数」及び「予約サイズ」のそれぞれの格納値と、現在オープン中のファイル数と、に基づいて、確保可能なメモリ領域の最大サイズを決定する。
【００６９】
例えば、「オープン予約数」が８で、現在オープン中のファイル数が、自己を含めて２つである場合、今後オープンされる予定のファイルの数は６つとなる。この場合、「予約サイズ」が６０Ｂ（バイト）であるとすると、空き領域サイズから、３６０Ｂ（６×６０Ｂ）を差し引いたサイズが、アドレス変換テーブル１３３用に確保できる最大サイズとして決定される。
【００７０】
このようにすることで、複数のファイルが同時にオープン状態となっても、後からオープン要求されたファイルについて、メモリ不足により、アドレス変換テーブル１３３の作成が不可となる事態を回避できる。したがって、後からオープン要求されたファイルについて、処理速度の大幅な低下等を防止することが可能になる。
【００７１】
また、オープンするファイルの優先度をアプリケーション処理部１００から指定できるようにし、かかる優先度に応じて、確保可能なメモリ領域の最大サイズを決定してもよい。この場合、例えば、優先度が高いファイルについては、変換テーブル用メモリ確保部１４０は、要求されたサイズ分の空き領域がデータ記憶部１３０にあると、要求されたサイズ分のメモリ領域を確保する。一方、優先度が低いファイルについては、変換テーブル用メモリ確保部１４０は、要求されたサイズ分の空き領域がデータ記憶部１３０にあったとしても、要求されたサイズより小さい、所定サイズ（例えば、「予約サイズ」に格納されているサイズ）のメモリ領域を確保する。
【００７２】
このようにすることで、優先度の高いファイル（例えば、オープン中において、頻繁に読み込み要求等が発行されるファイル）について、所望サイズのアドレス変換テーブル１３３が作成でき、処理の高速化が効果的に図れる。
【００７３】
なお、本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、特許請求の範囲によって示される。そして、特許請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
【産業上の利用可能性】
【００７４】
本発明は、フラッシュメモリ等の読み書き可能な記憶媒体を利用する様々な電子機器に好適に採用され得る。【００７５】
１  フラッシュメモリシステム
１０  マイコン
１００  アプリケーション処理部
１１０  ファイルシステム管理部
１２０  メモリ制御部
１３０  データ記憶部
１３１  ファイルシステム定義テーブル
１３２  変換テーブル管理テーブル
１３３  アドレス変換テーブル
１４０  変換テーブル用メモリ確保部
２０  フラッシュメモリ
３０  データバス
【図１】
2012104975.tif 000003
【図２】
2012104975.tif 000004
【図３】
2012104975.tif 000005
【図４】
2012104975.tif 000006
【図５】
2012104975.tif 000007
【図６】
2012104975.tif 000008
【図７】
2012104975.tif 000009
【図８】
2012104975.tif 000010
【図９】
2012104975.tif 000011
【図１０】
2012104975.tif 000012
【手続補正書】
【提出日】平成25年5月15日(2013.5.15)
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】変更
【補正の内容】
【０００６】
本発明は、上記従来の問題を解決するためになされたものであり、定常的なメモリ消費を抑制しつつ、指定されたセクタに対応する、フラッシュメモリ等の読み書き可能な記憶媒体の物理アドレスに高速でアクセスできるメモリコントローラ及びメモリアクセス方法を提供することを目的とする。
【手続補正３】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
読み書き可能な不揮発性メモリにアクセスして、該不揮発性メモリ用に構築されたファイルシステムにおけるセクタ単位で、データの読み込み及び書き込みを行うメモリ制御手段と、
前記不揮発性メモリに格納されているファイルを構成するセクタのセクタ番号と、該セクタ番号に対応する前記不揮発性メモリの物理アドレスと、からなる１又は複数のレコードが登録されたアドレス変換テーブルをファイル毎に一時的に記憶するデータ記憶部と、
外部からファイルのオープン要求があった際、前記データ記憶部の所定のメモリ領域から、当該ファイルに対応する前記アドレス変換テーブル用のメモリ領域を確保するメモリ確保手段と、
該メモリ確保手段により確保された前記メモリ領域を所定のタイミングで開放するメモリ開放手段と、
前記メモリ領域が確保された前記アドレス変換テーブルの各レコードに、当該ファイルを構成する少なくとも一部のセクタのセクタ番号を順次格納し、該格納後、メモリ制御手段にその旨を通知するセクタ番号格納手段と、を備え、
前記メモリ制御手段は、
前記セクタ番号格納手段から前記通知を受けると、前記アドレス変換テーブルの各レコードのセクタ番号に対応する物理アドレスを、前記不揮発性メモリのメモリ領域を探索することで取得し、取得した各物理アドレスを対応する前記レコードに格納し、
前記ファイルを構成するセクタにアクセスする際、当該セクタのセクタ番号をキーにして、当該ファイルに対応する前記アドレス変換テーブルを参照し、当該セクタに対応する物理アドレスを取得するメモリコントローラ。
【請求項２】
前記メモリ開放手段は、ファイルのクローズ要求があった際、当該ファイルに対応する前記アドレス変換テーブル用のメモリ領域を開放する請求項１に記載のメモリコントローラ。
【請求項３】
前記メモリ開放手段は、前記アドレス変換テーブル用のメモリ領域が確保されてから所定時間経過後、当該メモリ領域を開放する請求項１又は２に記載のメモリコントローラ。
【請求項４】
前記セクタ番号格納手段は、前記メモリ確保手段により確保されたメモリ領域に展開される前記アドレス変換テーブルのレコード数が、当該ファイルを構成する全セクタの数以上である場合、当該アドレス変換テーブルに当該ファイルを構成する全てのセクタのセクタ番号を格納する請求項１乃至３の何れか１項に記載のメモリコントローラ。
【請求項５】
前記メモリ確保手段は、前記データ記憶部の所定のメモリ領域に、当該ファイルを構成する全セクタの数分に対応する前記アドレス変換テーブル用のメモリ領域に相当する空き領域が存在する場合、当該空き領域を当該アドレス変換テーブル用のメモリ領域として確保する請求項１乃至４の何れか１項に記載のメモリコントローラ。
【請求項６】
前記メモリ確保手段は、今後オープンが予定されるファイルの数も加味して、前記アドレス変換テーブル用のメモリ領域を確保する請求項１乃至４の何れか１項に記載のメモリコントローラ。
【請求項７】
前記ファイルには、所定の優先度が予め付与されており、
前記メモリ確保手段は、オープン要求されたファイルの前記優先度も加味して、前記アドレス変換テーブル用のメモリ領域を確保する請求項１乃至４の何れか１項に記載のメモリコントローラ。
【請求項８】
メモリ制御手段が、読み書き可能な不揮発性メモリにアクセスして、該不揮発性メモリ用に構築されたファイルシステムにおけるセクタ単位で、データの読み込み及び書き込みを行うメモリ制御ステップと、
メモリ確保手段が、外部からファイルのオープン要求があった際、前記不揮発性メモリに格納されているファイルを構成するセクタのセクタ番号と、該セクタ番号に対応する前記不揮発性メモリの物理アドレスと、からなる１又は複数のレコードが登録されたアドレス変換テーブルをファイル毎に一時的に記憶するデータ記憶部の所定のメモリ領域から、当該ファイルに対応する前記アドレス変換テーブル用のメモリ領域を確保するメモリ確保ステップと、
メモリ開放手段が、前記メモリ確保手段により確保された前記メモリ領域を所定のタイミングで開放するメモリ開放ステップと、
セクタ番号格納手段が、前記メモリ領域が確保された前記アドレス変換テーブルの各レコードに、当該ファイルを構成する少なくとも一部のセクタのセクタ番号を順次格納し、該格納後、メモリ制御手段にその旨を通知するセクタ番号格納ステップと、を含み、
前記メモリ制御ステップでは、前記メモリ制御手段が、
前記セクタ番号格納手段から前記通知を受けると、前記アドレス変換テーブルの各レコードのセクタ番号に対応する物理アドレスを、前記不揮発性メモリのメモリ領域を探索することで取得し、取得した各物理アドレスを対応する前記レコードに格納し、
前記ファイルを構成するセクタにアクセスする際、当該セクタのセクタ番号をキーにして、当該ファイルに対応する前記アドレス変換テーブルを参照し、当該セクタに対応する物理アドレスを取得するメモリアクセス方法。
【国際調査報告】
2012104975.tif 000013
2012104975.tif 000014