JP5452736B2 - メモリコントローラ及びメモリアクセス方法 - Google Patents

メモリコントローラ及びメモリアクセス方法 Download PDF

Info

Publication number
JP5452736B2
JP5452736B2 JP2012555599A JP2012555599A JP5452736B2 JP 5452736 B2 JP5452736 B2 JP 5452736B2 JP 2012555599 A JP2012555599 A JP 2012555599A JP 2012555599 A JP2012555599 A JP 2012555599A JP 5452736 B2 JP5452736 B2 JP 5452736B2
Authority
JP
Japan
Prior art keywords
memory
file
sector
conversion table
address conversion
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.)
Active
Application number
JP2012555599A
Other languages
English (en)
Other versions
JPWO2012104975A1 (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP5452736B2 publication Critical patent/JP5452736B2/ja
Publication of JPWO2012104975A1 publication Critical patent/JPWO2012104975A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1048Scalability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Description

本発明は、フラッシュメモリ等の不揮発性の記憶媒体へのアクセス技術に関する。
近年、不揮発性の記憶媒体であるフラッシュメモリは、パーソナルコンピュータ等の情報処理装置、携帯電話やデジタルカメラ等、様々な電子機器で使用されている。また、フラッシュメモリへのアクセス技術に関して、従来より種々の提案がなされている(例えば、特許文献1)。
特許文献1に開示されるメモリカードは、フラッシュメモリと、これを制御するコントローラと、を備え、かかるコントローラは、アドレスが増加する方向に沿ったデータ書き込み命令を外部から受け付け、この受け付けたデータ書き込み命令に対する書き込み時の最終書込位置を検出する機能等を有する。このコントローラは、フラッシュメモリのセクタ(論理データ)に対応する物理アドレスの検索の際、セクタと、これに対応するフラッシュメモリの物理アドレスとの関係を示す変換テーブルを参照する。
特開2006−40264号公報
しかしながら、特許文献1に開示される技術のように、セクタ毎に対応するフラッシュメモリの物理アドレスが即座に判るようにした変換テーブルは、フラッシュメモリのサイズが大きくなれば、そのサイズは増大する。このため、省メモリ化が要請されるマイコンシステム等では、このような変換テーブルを従来のようにして採用するのは容易でない。
本発明は、上記従来の問題を解決するためになされたものであり、定常的なメモリ消費を抑制しつつ、指定されたセクタに対応する、フラッシュメモリ等の読み書き可能な記憶媒体の物理アドレスに高速でアクセスできるメモリコントローラ及びメモリアクセス方法を提供することを目的とする。
上記目的を達成するため、本発明に係るメモリコントローラは、
読み書き可能な不揮発性メモリにアクセスして、該不揮発性メモリ用に構築されたファイルシステムにおけるセクタ単位で、データの読み込み及び書き込みを行うメモリ制御手段と、
前記不揮発性メモリに格納されているファイルを構成するセクタのセクタ番号と、該セクタ番号に対応する前記不揮発性メモリの物理アドレスと、からなる1又は複数のレコードが登録されたアドレス変換テーブルをファイル毎に一時的に記憶するデータ記憶部と、
外部からファイルのオープン要求があった際、前記データ記憶部の所定のメモリ領域から、当該ファイルに対応する前記アドレス変換テーブル用のメモリ領域を確保するメモリ確保手段と、
該メモリ確保手段により確保された前記メモリ領域を所定のタイミングで開放するメモリ開放手段と、
前記メモリ領域が確保された前記アドレス変換テーブルの各レコードに、当該ファイルを構成する少なくとも一部のセクタのセクタ番号を順次格納し、該格納後、メモリ制御手段にその旨を通知するセクタ番号格納手段と、を備え、
前記メモリ制御手段は、
前記セクタ番号格納手段から前記通知を受けると、前記アドレス変換テーブルの各レコードのセクタ番号に対応する物理アドレスを、前記不揮発性メモリのメモリ領域を探索することで取得し、取得した各物理アドレスを対応する前記レコードに格納し、
前記ファイルを構成するセクタにアクセスする際、当該セクタのセクタ番号をキーにして、当該ファイルに対応する前記アドレス変換テーブルを参照し、当該セクタに対応する物理アドレスを取得する。
本発明によれば、セクタにアクセスする際、セクタ番号と物理アドレスが対応付けられたアドレス変換テーブルを参照することで、当該セクタに対応する物理アドレスを即座に取得することが可能になり、不揮発性メモリへのアクセス処理の高速化が図れる。また、各アドレス変換テーブルについて、メモリ領域の占有は一時的であるため、定常的なメモリ消費を抑制することができる。
本発明の一実施形態に係るメモリコントローラとしての機能を有するマイコンを備えたフラッシュメモリシステムの全体構成を示す図である。 図1のマイコンの構成を示すブロック図である。 図1のフラッシュメモリのメモリ構造を概略的に示す図である。 ファイルシステム定義テーブルの一例を示す図である。 変換テーブル管理テーブルの一例を示す図である。 アドレス変換テーブルの一例を示す図である。 物理アドレス設定処理を説明するための図である。 アドレス変換テーブル作成処理の手順を示すフローチャートである。 データ読込処理の手順を示すフローチャートである。 他の実施形態で使用するファイルシステム定義テーブルの一例を示す図である。
以下、本発明の一実施形態に係るメモリコントローラについて図面を参照して詳細に説明する。
図1は、本実施形態に係るメモリコントローラとしての機能を有するマイコン10と、フラッシュメモリ20と、から構成されるフラッシュメモリシステム1の概略構成を示す図である。マイコン10とフラッシュメモリ20は、データバス30により接続されている。
マイコン10は、各種の電子機器や、各種の家電機器等に搭載され、当該機器全体の動作を制御する。マイコン10は、ハードウェア的には、マイクロプロセッサ、ROM(Read Only Memory)、RAM(Random Access Memory)、メモリインタフェース、水晶発振器等のクロック源(何れも図示せず)等から構成される。
マイコン10は、図2に示すように、機能的には、アプリケーション処理部100と、ファイルシステム管理部110と、メモリ制御部120と、データ記憶部130と、変換テーブル用メモリ確保部140と、を備える。ファイルシステム管理部110、メモリ制御部120と、データ記憶部130及び変換テーブル用メモリ確保部140は、本発明のメモリコントローラとしての機能を担う。
アプリケーション処理部100は、ROM等に記憶されている、当該機器の機能を実現するための各種のアプリケーションソフトウェアプログラムに則った処理を実行する。ファイルシステム管理部110は、フラッシュメモリ20用に構築されるファイルシステムの管理を行う。また、ファイルシステム管理部110は、本発明におけるセクタ番号格納手段及びメモリ開放手段としての機能も担う。メモリ制御部120は、ファイルシステム管理部110を介したアプリケーション処理部100からの要求に応じて、フラッシュメモリ20にアクセスして、各種の処理(データの読み込みや書き込み等)を行う。
データ記憶部130は、当該ファイルシステムを定義するための各種のテーブルを記憶する。本実施形態では、データ記憶部130には、ファイルシステム定義テーブル131、変換テーブル管理テーブル132、アドレス変換テーブル133などが記憶される。これらのテーブルの詳細については後述する。
フラッシュメモリ20のメモリ領域は、図3に示すように、複数のブロックで構成される。ブロック(消去ブロック)は、データの消去における処理単位である。ファイルシステムにおけるデータの管理単位であるセクタは、ブロックを所定サイズ(例えば、520バイト)ずつ分割した領域を示し、「セクタ番号」領域(例えば、4バイト)と、「セクタ状態」領域(例えば、4バイト)と、「データ」領域(例えば、512バイト)と、から構成される。
「セクタ番号」領域には、当該ファイルシステムが管理するセクタ毎に割り振られた番号(セクタ番号)が格納される。本実施形態では、各セクタには、1から始まるシリアル番号が割り当てられる。
「セクタ状態」領域には、当該セクタの利用状態(セクタ状態)を示す情報が格納される。この「セクタ状態」領域を参照することで、当該セクタが、“未使用”、“使用中”又は“削除”の何れかの状態であるかが判る。例えば、ブロックが消去された直後は、当該ブロックの全てのセクタは、“未使用”を示す。「データ」領域には、「セクタ番号」領域に格納されているセクタ番号に対応するデータが格納される。
メモリ制御部120は、ファイルシステム管理部110により指定されたセクタ番号に対応した、フラッシュメモリ20に格納されているデータにアクセスする場合、フラッシュメモリ20のメモリ領域をセクタ単位(例えば、520バイト)で順次走査する。そして、「セクタ番号」領域に格納されているセクタ番号が、指定されたセクタ番号と一致し、且つ、「セクタ状態」領域に格納されている情報が“使用中”を示すセクタの「データ」領域にアクセスする。また、詳細は後述するが、メモリ制御部120は、セクタ番号をキーにして、作成されたアドレス変換テーブル133を参照し、指定されたセクタ番号に対応する物理アドレスを取得する。これにより、メモリ制御部120は、フラッシュメモリ20に格納されている、指定されたセクタ番号に対応したデータに即座にアクセスすることができる。
また、フラッシュメモリ20に新規にデータ(ファイル)を書きこむ場合には、メモリ制御部120は、ファイルシステム管理部110により指定されたデータサイズ(ファイルサイズ)に対応する1又は複数の“未使用”セクタを確保し、当該データの書き込みを行う。
また、データの上書きの際には、メモリ制御部120は、指定されたセクタ番号に対応する“使用中”セクタとは別の“未使用”セクタに、データとセクタ番号を書き込むと共に、セクタ状態を“使用中”に変更する。また、元のセクタのセクタ状態を“削除”に変更する。
ファイルシステム定義テーブル131は、図4に示すように、「開始アドレス」項目、「開始セクタ」項目、「ドライブサイズ」項目等で構成される。
「開始アドレス」には、フラッシュメモリ20のメモリ領域における先頭アドレス(本実施形態では、0x0000000)が格納される。「開始セクタ」には、セクタ番号の開始番号(本実施形態では、1)が格納される。「ドライブサイズ」には、当該ファイルシステムで管理するフラッシュメモリ20の最大メモリ容量(本実施形態では、19.2MB(メガバイト))が格納される。
変換テーブル管理テーブル132は、現在オープンしているファイルに対応するアドレス変換テーブル133についての情報を示すデータテーブルである。変換テーブル管理テーブル132は、図5に示すように、「ファイル名」項目、「先頭アドレス」項目、レコード数」項目等で構成される。
「ファイル名」には、現在オープン中のファイル名が格納される。「先頭アドレス」には、対応するアドレス変換テーブル133の先頭を示す、データ記憶部130のメモリアドレスが格納される。「レコード数」には、当該アドレス変換テーブル133のレコード数が格納される。なお、「レコード数」の格納値が0の場合、メモリ不足等の理由により当該ファイルに対応するアドレス変換テーブル133が作成されなかったことを示す。その場合、「先頭アドレス」には、所定の“NULL”値が格納される。
アドレス変換テーブル133は、現在オープン中のファイルを構成する各セクタの番号(セクタ番号)と、フラッシュメモリ20の物理アドレスとを対応付けたデータテーブルであり、オープン中のファイル毎に一時的に作成される。図6に示すように、アドレス変換テーブル133は、「セクタ番号」項目と、「物理アドレス」項目と、からなる複数のレコードで構成される。
アドレス変換テーブル133は、そのテーブルサイズに相当する、データ記憶部130におけるメモリ領域が確保された後に作成される。テーブルサイズは、対応するファイルを構成するセクタの数に基づいて決定される。具体的には、当該ファイルのセクタ数と、1レコード当たりのサイズ(「セクタ番号」のデータ型に対応するサイズ(例えば、2バイト)+「物理アドレス」のデータ型に対応するサイズ(例えば、4バイト))を乗算することで求められる。例えば、セクタ数が、4で、1レコード当たりのサイズが、6バイトの場合、当該アドレス変換テーブル133のために確保されるメモリ領域のサイズは、4×6=24バイトとなる。
上記の場合、ファイルを構成するセクタ数と、当該ファイルに対応するアドレス変換テーブル133のレコード数は一致するが、データ記憶部130の空き領域が十分でない場合には、セクタ数>レコード数となるケースもある。また、当該ファイルに対応するアドレス変換テーブル133そのものが作成されないケースもある。
変換テーブル用メモリ確保部140は、ファイルシステム管理部110からの要求に従い、データ記憶部130におけるアドレス変換テーブル133用のメモリを確保(アロケート)する処理を行う。この際、ファイルシステム管理部110は、上述したようにして、確保したいアドレス変換テーブル133のテーブルサイズを算出し、これをパラメータとして、変換テーブル用メモリ確保部140に対して、メモリ領域の確保を要求する。
変換テーブル用メモリ確保部140は、データ記憶部130の所定のメモリ領域をチェックし、要求されたサイズ分の空き領域があるか否かを判定する。要求されたサイズ分の空き領域がある場合は、変換テーブル用メモリ確保部140は、要求されたサイズ分の空き領域を確保し、ファイルシステム管理部110に対して、要求されたサイズ分のメモリ領域が確保できたことを示す応答種別と、確保したメモリ領域の先頭アドレスと、からなる応答メッセージを返す。
また、空き領域はあるものの、要求されたサイズ分の空き領域がない場合、変換テーブル用メモリ確保部140は、空き領域分のメモリ領域を確保する。そして、ファイルシステム管理部110に対して、要求されたサイズ分のメモリ領域が確保できなかったことを示す応答種別と、確保したメモリのサイズと、確保したメモリ領域の先頭アドレスと、からなる応答メッセージを返す。
空き領域がない場合、変換テーブル用メモリ確保部140は、空き領域がないことを示す応答種別を含んだ応答メッセージをファイルシステム管理部110に返す。
ファイルシステム管理部110は、変換テーブル用メモリ確保部140から上記の応答メッセージを受けると、変換テーブル管理テーブル132(図5参照)に、当該ファイルに対応するアドレス変換テーブル133についての情報を追加する。具体的には、ファイルシステム管理部110は、当該ファイルのファイル名、アドレス変換テーブル133の先頭アドレス及びレコード数からなるレコードを変換テーブル管理テーブル132にエントリする。なお、メモリが確保できたものの、要求したサイズに達していない場合、ファイルシステム管理部110は、確保したメモリ領域のサイズを1レコード当たりのサイズで除算し、その結果得られた商を当該アドレス変換テーブル133のレコード数として採用する。
また、ファイルシステム管理部110は、メモリ領域が確保できなかった場合や、確保できたメモリ領域のサイズが、1レコード当たりのサイズ未満の場合には、変換テーブル管理テーブル132にエントリするレコードの「先頭アドレス」にNULLを、「レコード数」に0をそれぞれ格納する。
ファイルシステム管理部110は、上記のエントリ後、本発明におけるセクタ番号格納手段としての処理を実行する。即ち、ファイルシステム管理部110は、メモリ領域が確保されたアドレス変換テーブル133の各レコードの「セクタ番号」に、当該ファイルを構成するセクタのセクタ番号を順次格納する。それから、ファイルシステム管理部110は、メモリ制御部120に対して、当該アドレス変換テーブル133の各レコードの「物理アドレス」を埋める処理の要求を通知する。即ち、ファイルシステム管理部110は、メモリ制御部120に対して、各レコードのセクタ番号に対応する物理アドレスをフラッシュメモリ20から検索して取得し、各レコードの「物理アドレス」に格納する処理(物理アドレス設定処理)を要求する。
この際、ファイルシステム管理部110は、当該ファイルのファイル名をパラメータとして、メモリ制御部120に対して物理アドレス設定処理を要求する。メモリ制御部120は、かかる要求を受けると、変換テーブル管理テーブル132を参照して、指定されたファイル名に対応するアドレス変換テーブル133の先頭アドレス及びレコード数を取得する。メモリ制御部120は、取得した先頭アドレス及びレコード数に基づいて、当該アドレス変換テーブル133の先頭レコードから順にセクタ番号を取り出す。
メモリ制御部120は、フラッシュメモリ20にアクセスし、ファイルシステム定義テーブル131の「開始アドレス」に格納されている先頭アドレス(本実施形態では、0x0000000)から、セクタ単位(例えば、520バイト)で下方向(後方のブロックの方向)に向かって順次走査を開始する。この走査では、メモリ制御部120は、当該セクタ番号と一致し、且つ、“使用中”であるセクタを探索する。この探索により、該当するセクタが見つかると、メモリ制御部120は、当該セクタの物理アドレスを取得し、当該アドレス変換テーブル133における当該レコードの「物理アドレス」に格納する。
メモリ制御部120は、上記処理を繰り返し行って、図7に示すように、アドレス変換テーブル133の全レコードに、それぞれ対応する物理アドレスを格納する。全レコードへの物理アドレスの格納を終了すると、メモリ制御部120は、物理アドレス設定処理が終了した旨のステータスをファイルシステム管理部110に通知する。
以上のようにして、オープン中の各ファイルに対応したアドレス変換テーブル133が作成される。アドレス変換テーブル133が作成されると、メモリ制御部120は、ファイルシステム管理部110から、当該ファイルのセクタに対するアクセス(読み込み等)を要求された際、当該アドレス変換テーブル133を参照する。これにより、フラッシュメモリ20の対応する物理アドレスに即座にアクセスすることができ、処理の高速化が図れる。なお、「ファイルを構成する全セクタ数」>「アドレス変換テーブル133のレコード数」の場合は、アドレス変換テーブル133において、未格納のセクタ番号もある。この場合、メモリ制御部120は、従来通り、フラッシュメモリ20のメモリ領域をセクタ単位で順次走査することで、要求されたセクタにアクセスする。
作成されたアドレス変換テーブル133は、対応するファイルがクローズされると、ファイルシステム管理部110によって消去される。即ち、当該アドレス変換テーブル133用のメモリ領域が開放される。また、これに伴い、変換テーブル管理テーブル132の該当するレコードも削除される。
なお、アドレス変換テーブル133の作成後、当該ファイルの書き込み要求(上書き)があると、メモリ制御部120は、アドレス変換テーブル133の全レコードの物理アドレスを、それぞれ移動先のセクタの物理アドレスに更新する。
図8は、ファイルシステム管理部110、変換テーブル用メモリ確保部140及びメモリ制御部120の協調によって実行されるアドレス変換テーブル作成処理の手順を示すフローチャートである。
アドレス変換テーブル作成処理は、アプリケーション処理部100からファイルのオープン要求がファイルシステム管理部110に通知されることで開始される。なお、このオープン要求では、アプリケーション処理部100は、オープン対象となるファイルの名称(ファイル名)を指定するものとする。
ファイルシステム管理部110は、アプリケーション処理部100からファイルのオープン要求を受けると、指定されたファイル名に対応するサイズ(ファイルサイズ)を図示しないファイル情報テーブルを参照して取得する。このファイル情報テーブルは、ファイル名、ファイルサイズ、当該ファイルを構成するセクタの番号(セクタ番号)等を対応付けたテーブルであり、当該ファイルの新規書き込み時に作成され、テーブル記憶部130に保存される。
ファイルシステム管理部110は、取得したファイルサイズに基づいて、確保したいアドレス変換テーブル133のテーブルサイズを算出する(ステップS101)。そして、これをパラメータとして、変換テーブル用メモリ確保部140にメモリ領域の確保を要求する。
変換テーブル用メモリ確保部140は、上述のようにして、アドレス変換テーブル133用のメモリ領域の確保を行い(ステップS102)、その結果をファイルシステム管理部110に応答する。
この応答を受けると、ファイルシステム管理部110は、変換テーブル管理テーブル132(図5参照)に、当該ファイルに対応するアドレス変換テーブル133についての情報を追加する(ステップS103)。
変換テーブル管理テーブル132に追加されるアドレス変換テーブル133のレコード数は、上述したように、要求したテーブルサイズ分のメモリ領域が確保された場合には、当該ファイルを構成するセクタの数に等しい。しかし、確保できたメモリ領域のサイズが、要求したテーブルサイズより小さい場合には、レコード数<全セクタ数となる。例えば、確保したメモリ領域のサイズが、1KB(キロバイト)であり、アドレス変換テーブル133の1レコード当たりのサイズが、6バイトである場合では、レコード数は、170(1024/6)となる。また、メモリ領域が確保できなかった場合や、確保できたメモリ領域のサイズが、1レコード当たりのサイズ未満の場合、「レコード数」には0が格納され、「先頭アドレス」には、NULLが格納される。
次に、ファイルシステム管理部110は、メモリ領域が確保されたアドレス変換テーブル133の全レコードに、当該ファイルを構成するセクタのセクタ番号を順次格納する(ステップS104)。但し、この処理は、1レコード(例えば、6バイト)以上のメモリ領域が確保された場合のみ実行される。
それから、ファイルシステム管理部110は、メモリ制御部120に対して、物理アドレス設定処理を要求する。但し、この処理も上記同様、1レコード以上のメモリ領域が確保された場合のみ実行される。
メモリ制御部120は、当該アドレス変換テーブル133の全レコードのセクタ番号にそれぞれ対応する物理アドレスを、フラッシュメモリ20のメモリ領域を探索することで取得し、それぞれ対応するレコードに格納する(ステップS105)。
メモリ制御部120は、上記物理アドレス設定処理を終了すると、その旨をファイルシステム管理部110に通知する。ファイルシステム管理部110は、かかる通知を受けると、アプリケーション処理部100に対して、オープン要求に対する処理が完了した旨を通知する(ステップS106)。
以上のようにして、オープン要求されたファイルに対応するアドレス変換テーブル133が作成される。
次に、アドレス変換テーブル133が作成された後、アプリケーション処理部100から、当該ファイルについての読み込み要求があった際の処理について説明する。図9は、ファイルシステム管理部110及びメモリ制御部120によって実行されるデータ読込処理の手順を示すフローチャートである。データ読込処理は、アプリケーション処理部100からのデータ読込要求がファイルシステム管理部110に通知されることで開始される。なお、このデータ読込要求では、アプリケーション処理部100は、読み込み対象となるファイルの名称(ファイル名)を指定するものとする。
ファイルシステム管理部110は、指定されたファイル名に対応するセクタ番号を上述したファイル情報テーブルを参照して取得する(ステップS201)。ここで、当該ファイルが複数のセクタで構成されている場合には、ファイルシステム管理部110は、ファイル情報テーブルを参照して、対応するセクタ番号を順次1つずつ取得する。
ファイルシステム管理部110は、メモリ制御部120に対して、取得したセクタ番号と、当該ファイルのファイル名と、を通知して、当該セクタに対応するデータの読み込みを要求する。
メモリ制御部120は、かかる要求を受けると、変換テーブル管理テーブル132を参照して、指定されたファイル名に対応するアドレス変換テーブル133の先頭アドレス及びレコード数を取得する(ステップS202)。メモリ制御部120は、取得した先頭アドレス及びレコード数に基づいて、当該アドレス変換テーブル133の先頭レコードから順に「セクタ番号」の格納値をチェックして、指定されたセクタ番号が格納されたレコードを検索する。そして、該当するレコードの「物理アドレス」に格納されている物理アドレスを取得する(ステップS203)。
メモリ制御部120は、フラッシュメモリ20の取得した物理アドレスに位置するセクタにアクセスし、「データ」領域に格納されているデータ(セクタデータ)を読み込む(ステップS204)。メモリ制御部120は、ファイルシステム管理部110に対して、読み込んだセクタデータを供給すると共に、セクタデータの読み込みが完了した旨を通知する。かかる通知を受けると、ファイルシステム管理部110は、当該ファイルを構成する全てのセクタデータの読み込みが完了したか否かを判定する(ステップS205)。
全セクタデータの読み込みが完了していない場合(ステップS205;NO)、上述した処理が繰り返し実行される。即ち、ファイルシステム管理部110は、ファイル情報テーブルを参照して、対応する次のセクタ番号を1つ取得する(ステップS201)。そして、ファイルシステム管理部110は、メモリ制御部120に対して、取得したセクタ番号と、当該ファイルのファイル名と、を通知して、当該セクタに対応するデータの読み込みを要求する。かかる要求を受けると、メモリ制御部120は、上記のステップS202〜S204の処理を実行する。
一方、全セクタデータの読み込みが完了した場合(ステップS205;YES)、ファイルシステム管理部110は、読み込んだ全セクタデータ、即ち、読み込んだファイルをアプリケーション処理部100に供給し(ステップS206)、本処理は終了する。
以上説明したように、本実施形態のマイコン10(メモリコントローラ)は、ファイルオープンの際に、当該ファイルを構成するセクタの番号と、フラッシュメモリ20の物理アドレスと、を対応付けたアドレス変換テーブル133を作成する。これにより、当該ファイルがオープン中において、ファイルの読み込み等の要求があった場合、アドレス変換テーブル133を参照することで、フラッシュメモリ20に格納されている、指定されたセクタ番号に対応したセクタに即座にアクセスすることができる。したがって、処理の高速化が図れる。
また、アドレス変換テーブル133用のメモリ領域は、ファイルオープン時に確保され、ファイルクローズ時に開放される。このため、かかるテーブルはデータ記憶部130に常駐せず、メモリ領域の占有は一時的となる。したがって、定常的なメモリ消費を抑制できる。
なお、本発明は、上記実施形態に限定されず、本発明の要旨を逸脱しない範囲での種々の変更は勿論可能である。
例えば、上記実施形態では、アドレス変換テーブル133用に確保されたメモリ領域は、対応するファイルのクローズ時に開放されていたが、メモリ領域を開放するタイミングに限定はない。例えば、確保されてから所定時間経過したメモリ領域を開放する仕様にしてもよい。このようにすると、アドレス変換テーブル133用に確保された一のメモリ領域が、長時間継続して占有されてしまう事態を回避できる。
また、上記実施形態では、変換テーブル用メモリ確保部140は、要求されたサイズ分の空き領域がデータ記憶部130にあると、要求されたサイズ分のメモリ領域を確保していたが、メモリ領域確保の仕様は、これに限定されない。例えば、今後にオープンされるファイルも考慮したメモリ領域確保を行うようにしてもよい。具体的には、この場合、図10に示すように、ファイルシステム定義テーブル131に、さらに「オープン予約数」項目と、「予約サイズ」項目を追加する。
「オープン予約数」には、同時にオープン状態となるファイルの予測数が格納される。「同時にオープン状態となる」とは、あるファイルがオープンされ、クローズする間に、他のファイルがオープン状態になることをいう。この予測数は、予め決められた固定値であってもよいし、過去の同時オープン数の平均値や最大数等、適宜更新される値であってもよい。
また、「予約サイズ」には、「オープン予約数」に格納されている数分のファイルが同時にオープン状態となっても、1つのアドレス変換テーブル133への割り当てが最小限保証されるサイズが格納される。かかるサイズは、固定値であってもよいし、過去に作成されたアドレス変換テーブル133のサイズを平均した値や、最大値等、適宜更新される値であってもよい。
上記の場合、変換テーブル用メモリ確保部140は、ファイルシステム管理部110からメモリ領域の確保要求を受けると、データ記憶部130の空き領域のサイズと、ファイルシステム定義テーブル131の上記「オープン予約数」及び「予約サイズ」のそれぞれの格納値と、現在オープン中のファイル数と、に基づいて、確保可能なメモリ領域の最大サイズを決定する。
例えば、「オープン予約数」が8で、現在オープン中のファイル数が、自己を含めて2つである場合、今後オープンされる予定のファイルの数は6つとなる。この場合、「予約サイズ」が60B(バイト)であるとすると、空き領域サイズから、360B(6×60B)を差し引いたサイズが、アドレス変換テーブル133用に確保できる最大サイズとして決定される。
このようにすることで、複数のファイルが同時にオープン状態となっても、後からオープン要求されたファイルについて、メモリ不足により、アドレス変換テーブル133の作成が不可となる事態を回避できる。したがって、後からオープン要求されたファイルについて、処理速度の大幅な低下等を防止することが可能になる。
また、オープンするファイルの優先度をアプリケーション処理部100から指定できるようにし、かかる優先度に応じて、確保可能なメモリ領域の最大サイズを決定してもよい。この場合、例えば、優先度が高いファイルについては、変換テーブル用メモリ確保部140は、要求されたサイズ分の空き領域がデータ記憶部130にあると、要求されたサイズ分のメモリ領域を確保する。一方、優先度が低いファイルについては、変換テーブル用メモリ確保部140は、要求されたサイズ分の空き領域がデータ記憶部130にあったとしても、要求されたサイズより小さい、所定サイズ(例えば、「予約サイズ」に格納されているサイズ)のメモリ領域を確保する。
このようにすることで、優先度の高いファイル(例えば、オープン中において、頻繁に読み込み要求等が発行されるファイル)について、所望サイズのアドレス変換テーブル133が作成でき、処理の高速化が効果的に図れる。
なお、本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、特許請求の範囲によって示される。そして、特許請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
本発明は、フラッシュメモリ等の読み書き可能な記憶媒体を利用する様々な電子機器に好適に採用され得る。
1 フラッシュメモリシステム
10 マイコン
100 アプリケーション処理部
110 ファイルシステム管理部
120 メモリ制御部
130 データ記憶部
131 ファイルシステム定義テーブル
132 変換テーブル管理テーブル
133 アドレス変換テーブル
140 変換テーブル用メモリ確保部
20 フラッシュメモリ
30 データバス

Claims (8)

  1. 読み書き可能な不揮発性メモリにアクセスして、該不揮発性メモリ用に構築されたファイルシステムにおけるセクタ単位で、データの読み込み及び書き込みを行うメモリ制御手段と、
    前記不揮発性メモリに格納されているファイルを構成するセクタのセクタ番号と、該セクタ番号に対応する前記不揮発性メモリの物理アドレスと、からなる1又は複数のレコードが登録されたアドレス変換テーブルをファイル毎に一時的に記憶するデータ記憶部と、
    外部からファイルのオープン要求があった際、前記データ記憶部の所定のメモリ領域から、当該ファイルに対応する前記アドレス変換テーブル用のメモリ領域を確保するメモリ確保手段と、
    該メモリ確保手段により確保された前記メモリ領域を所定のタイミングで開放するメモリ開放手段と、
    前記メモリ領域が確保された前記アドレス変換テーブルの各レコードに、当該ファイルを構成する少なくとも一部のセクタのセクタ番号を順次格納し、該格納後、メモリ制御手段にその旨を通知するセクタ番号格納手段と、を備え、
    前記メモリ制御手段は、
    前記セクタ番号格納手段から前記通知を受けると、前記アドレス変換テーブルの各レコードのセクタ番号に対応する物理アドレスを、前記不揮発性メモリのメモリ領域を探索することで取得し、取得した各物理アドレスを対応する前記レコードに格納し、
    前記ファイルを構成するセクタにアクセスする際、当該セクタのセクタ番号をキーにして、当該ファイルに対応する前記アドレス変換テーブルを参照し、当該セクタに対応する物理アドレスを取得するメモリコントローラ。
  2. 前記メモリ開放手段は、ファイルのクローズ要求があった際、当該ファイルに対応する前記アドレス変換テーブル用のメモリ領域を開放する請求項1に記載のメモリコントローラ。
  3. 前記メモリ開放手段は、前記アドレス変換テーブル用のメモリ領域が確保されてから所定時間経過後、当該メモリ領域を開放する請求項1又は2に記載のメモリコントローラ。
  4. 前記セクタ番号格納手段は、前記メモリ確保手段により確保されたメモリ領域に展開される前記アドレス変換テーブルのレコード数が、当該ファイルを構成する全セクタの数以上である場合、当該アドレス変換テーブルに当該ファイルを構成する全てのセクタのセクタ番号を格納する請求項1乃至3の何れか1項に記載のメモリコントローラ。
  5. 前記メモリ確保手段は、前記データ記憶部の所定のメモリ領域に、当該ファイルを構成する全セクタの数分に対応する前記アドレス変換テーブル用のメモリ領域に相当する空き領域が存在する場合、当該空き領域を当該アドレス変換テーブル用のメモリ領域として確保する請求項1乃至4の何れか1項に記載のメモリコントローラ。
  6. 前記メモリ確保手段は、今後オープンが予定されるファイルの数も加味して、前記アドレス変換テーブル用のメモリ領域を確保する請求項1乃至4の何れか1項に記載のメモリコントローラ。
  7. 前記ファイルには、所定の優先度が予め付与されており、
    前記メモリ確保手段は、オープン要求されたファイルの前記優先度も加味して、前記アドレス変換テーブル用のメモリ領域を確保する請求項1乃至4の何れか1項に記載のメモリコントローラ。
  8. メモリ制御手段が、読み書き可能な不揮発性メモリにアクセスして、該不揮発性メモリ用に構築されたファイルシステムにおけるセクタ単位で、データの読み込み及び書き込みを行うメモリ制御ステップと、
    メモリ確保手段が、外部からファイルのオープン要求があった際、前記不揮発性メモリに格納されているファイルを構成するセクタのセクタ番号と、該セクタ番号に対応する前記不揮発性メモリの物理アドレスと、からなる1又は複数のレコードが登録されたアドレス変換テーブルをファイル毎に一時的に記憶するデータ記憶部の所定のメモリ領域から、当該ファイルに対応する前記アドレス変換テーブル用のメモリ領域を確保するメモリ確保ステップと、
    メモリ開放手段が、前記メモリ確保手段により確保された前記メモリ領域を所定のタイミングで開放するメモリ開放ステップと、
    セクタ番号格納手段が、前記メモリ領域が確保された前記アドレス変換テーブルの各レコードに、当該ファイルを構成する少なくとも一部のセクタのセクタ番号を順次格納し、該格納後、メモリ制御手段にその旨を通知するセクタ番号格納ステップと、を含み、
    前記メモリ制御ステップでは、前記メモリ制御手段が、
    前記セクタ番号格納手段から前記通知を受けると、前記アドレス変換テーブルの各レコードのセクタ番号に対応する物理アドレスを、前記不揮発性メモリのメモリ領域を探索することで取得し、取得した各物理アドレスを対応する前記レコードに格納し、
    前記ファイルを構成するセクタにアクセスする際、当該セクタのセクタ番号をキーにして、当該ファイルに対応する前記アドレス変換テーブルを参照し、当該セクタに対応する物理アドレスを取得するメモリアクセス方法。
JP2012555599A 2011-01-31 2011-01-31 メモリコントローラ及びメモリアクセス方法 Active JP5452736B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/051960 WO2012104975A1 (ja) 2011-01-31 2011-01-31 メモリコントローラ

Publications (2)

Publication Number Publication Date
JP5452736B2 true JP5452736B2 (ja) 2014-03-26
JPWO2012104975A1 JPWO2012104975A1 (ja) 2014-07-03

Family

ID=46602220

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012555599A Active JP5452736B2 (ja) 2011-01-31 2011-01-31 メモリコントローラ及びメモリアクセス方法

Country Status (5)

Country Link
US (1) US9170929B2 (ja)
EP (1) EP2672390B1 (ja)
JP (1) JP5452736B2 (ja)
CN (1) CN103354925B (ja)
WO (1) WO2012104975A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3018581B1 (en) * 2014-11-06 2017-03-08 Fujitsu Limited Data staging management system
JP6049958B1 (ja) * 2015-04-30 2016-12-21 真旭 徳山 端末装置およびコンピュータプログラム
CN108664577B (zh) * 2018-05-03 2021-03-12 中北大学 一种基于flash空闲区的文件管理方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001142774A (ja) * 1999-11-11 2001-05-25 Toshiba Corp メモリカード及び同カードに適用されるアドレス変換方法
JP2006040264A (ja) * 2004-06-21 2006-02-09 Toshiba Corp メモリカードの制御方法および不揮発性半導体メモリの制御方法
JP2009003783A (ja) * 2007-06-22 2009-01-08 Toshiba Corp 不揮発性メモリの制御装置及び制御方法及び記憶装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761508A (en) * 1992-01-31 1998-06-02 Asahi Kasei Kogyo Kabushiki Kaisha Information processing system and method applied to the development of computer programs
US6377500B1 (en) 1999-11-11 2002-04-23 Kabushiki Kaisha Toshiba Memory system with a non-volatile memory, having address translating function
US7085879B2 (en) * 2002-02-27 2006-08-01 Microsoft Corporation Dynamic data structures for tracking data stored in a flash memory device
WO2005124530A2 (en) * 2004-06-21 2005-12-29 Kabushiki Kaisha Toshiba Method for controlling memory card and method for controlling nonvolatile semiconductor memory
US7386700B2 (en) * 2004-07-30 2008-06-10 Sandisk Il Ltd Virtual-to-physical address translation in a flash file system
EP1630726B1 (en) * 2004-08-18 2009-09-23 Sony Corporation Memory card, memory-card control method, memory-card access control method and computer programs
US7711923B2 (en) 2006-06-23 2010-05-04 Microsoft Corporation Persistent flash memory mapping table
US9396103B2 (en) * 2007-06-08 2016-07-19 Sandisk Technologies Llc Method and system for storage address re-mapping for a memory device
JP5133649B2 (ja) * 2007-10-16 2013-01-30 京セラドキュメントソリューションズ株式会社 電子機器およびメモリ管理プログラム
CN101382918B (zh) * 2008-07-26 2011-06-22 深圳市硅格半导体有限公司 一种基于数据交换区的NAND Flash闪存优化管理方法
JP5198245B2 (ja) 2008-12-27 2013-05-15 株式会社東芝 メモリシステム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001142774A (ja) * 1999-11-11 2001-05-25 Toshiba Corp メモリカード及び同カードに適用されるアドレス変換方法
JP2006040264A (ja) * 2004-06-21 2006-02-09 Toshiba Corp メモリカードの制御方法および不揮発性半導体メモリの制御方法
JP2009003783A (ja) * 2007-06-22 2009-01-08 Toshiba Corp 不揮発性メモリの制御装置及び制御方法及び記憶装置

Also Published As

Publication number Publication date
US9170929B2 (en) 2015-10-27
JPWO2012104975A1 (ja) 2014-07-03
CN103354925A (zh) 2013-10-16
EP2672390B1 (en) 2015-11-25
US20130311744A1 (en) 2013-11-21
WO2012104975A1 (ja) 2012-08-09
EP2672390A4 (en) 2014-08-06
CN103354925B (zh) 2016-03-02
EP2672390A1 (en) 2013-12-11

Similar Documents

Publication Publication Date Title
US11573701B2 (en) Memory device and host device
KR100849221B1 (ko) 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치
JP4185058B2 (ja) フラッシュメモリのリマッピング方法
KR100951107B1 (ko) 최적의 성능을 위한 파일 관리 방법
JP4859837B2 (ja) 情報記録媒体アクセス装置、及びデータ記録方法
TWI533152B (zh) 資料儲存裝置及方法
US20130227198A1 (en) Flash memory device and electronic device employing thereof
KR20060134170A (ko) 비휘발성 기억 시스템
WO2011086732A1 (en) Storage device management device and method for managing storage device
JP2006277737A (ja) アドレス予測機能をもつ不揮発性記憶装置
EP1771862A1 (en) Method and device to improve usb flash write performance
JPWO2009096180A1 (ja) メモリコントローラ、不揮発性記憶装置、及び、不揮発性記憶システム
US20050169058A1 (en) Data management apparatus and method used for flash memory
JP2018160189A (ja) メモリシステム
JP5452736B2 (ja) メモリコントローラ及びメモリアクセス方法
US20100180072A1 (en) Memory controller, nonvolatile memory device, file system, nonvolatile memory system, data writing method and data writing program
JP2010237907A (ja) ストレージ装置および記録方法
JP5452735B2 (ja) メモリコントローラ及びメモリアクセス方法
JP2009259145A (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP5253471B2 (ja) メモリコントローラ
JP6652605B2 (ja) メモリシステムの制御方法
JP2005149620A (ja) 記憶装置およびファイルシステム

Legal Events

Date Code Title Description
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: 20131203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131227

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5452736

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250