JP3826115B2 - 記憶装置、メモリ管理方法及びプログラム - Google Patents
記憶装置、メモリ管理方法及びプログラム Download PDFInfo
- Publication number
- JP3826115B2 JP3826115B2 JP2003176589A JP2003176589A JP3826115B2 JP 3826115 B2 JP3826115 B2 JP 3826115B2 JP 2003176589 A JP2003176589 A JP 2003176589A JP 2003176589 A JP2003176589 A JP 2003176589A JP 3826115 B2 JP3826115 B2 JP 3826115B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- user data
- page
- written
- virtual page
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Description
【発明の属する技術分野】
本発明は、記憶装置、メモリ管理方法及びプログラムに関し、特に、ブロック消去型の記憶装置、ブロック消去型の記憶装置の記憶領域を管理するメモリ管理方法及びプログラムに関する。
【0002】
【従来の技術】
コンピュータ等によりアクセス(データの読み書き及び消去)可能な記録媒体として、ハードディスク装置やフロッピー(登録商標)ディスクに加え、EEPROM(Electrically Erasable/Programmable Read Only Memory)フラッシュメモリが用いられている。フラッシュメモリを、例えばマイクロソフト社のMS−DOS(登録商標)やWindows(登録商標)などのディスクオペレーティングシステムの制御の下でファイルを記憶させるために使用する場合は、ハードディスク装置の使用時に従来より用いられているデータの読み書き単位(例えば、512バイト)を用いた手法で読み書きを行うと、制御が容易である。
【0003】
フラッシュメモリは、データの読み書きを行う場合の記憶容量の単位(一般に「ページ」あるいは「セクタ」と呼ばれる)より、データの消去を行う場合の記憶容量の単位(一般に「ブロック」と呼ばれる)の方が大きい。さらに、データを記憶する場合に記憶単位(セル)の論理状態を一方向にしか変更できず(例えば、“1”から“0”という方向にしか変更できず)、記憶単位を初期状態(例えば、“1”)とするには、記憶内容をブロック単位で消去する動作(フラッシュイレース)が必要である。
【0004】
このため、フラッシュメモリに記憶されているデータの更新や消去を行う場合は、まず、更新する対象であるデータを含むブロック内にある更新や消去の対象でないデータを他のブロックへと転記してから、更新や消去の対象であるデータを含むブロックのフラッシュイレースや、更新後のデータの書き込みを行っていた。
【0005】
なお、フラッシュメモリのうち、特にNAND型のものは、データの記憶が正常に行えない不良ブロックの発生を製造段階で十分に防止することが困難である。このため、従来より、各ブロックに割り当てられる物理アドレスとは別個の連続した論理アドレスを正常なブロックに動的に割り当て、論理アドレスとの対応関係を表すアドレス変換テーブルを作成して、アドレスが不連続となることによる外部からのアクセス手順の複雑化を回避している(例えば、特許文献1参照)。
【0006】
【特許文献1】
国際公開第99/30239号パンフレット
【0007】
【発明が解決しようとする課題】
フラッシュメモリに記憶されているデータの更新や消去を行う場合、従来は、更新や消去の対象となるデータがあるブロック内のすべてのデータを読み出していた。このため、データの読み出しに長時間がかかり、結局、データの書き換えや消去に要する時間は全体としても非常に長くなっていた。
【0008】
また、データ量が1ブロック分の記憶容量に比べて非常に小さなファイルを書き換える場合には、このファイルと無関係なデータを格納するページや、データを格納していない空きページを大量に含んだブロックがフラッシュイレースされる。一方、NAND型のフラッシュメモリは、大容量の構成を安価に実現できる一方、フラッシュイレースを繰り返すことにより劣化し、データの読み書きが正常にできなくなる、という特徴がある。
このため、上述の操作を行うと、少量のデータの書き換えのために効率の悪いフラッシュイレースが頻繁に行われることになり、フラッシュメモリの劣化が早まる。
【0009】
特に近年は、フラッシュメモリの大容量化が進み、1ページあたりの記憶容量や1ブロックあたりの記憶容量は非常に大きくなっている。(例えば、1ページあたり約2キロバイト、1ブロックあたり約128キロバイト、等。)
また、フラッシュメモリの大容量化に伴って、物理的に1ページにあたる記憶領域(以下、物理ページと呼ぶこととする)が仮想的に複数の記憶領域(以下、論理ページと呼ぶこととする)に分割されて用いられる場合が増えている。物理ページを分割して用いる場合は、更新又は消去する対象のデータが物理ページ1個分に満たない場合でも、このデータを記憶するブロックを消去している。
このため、効率の悪いフラッシュイレースを防止する必要が更に高まっている。
【0010】
この発明は上記実状に鑑みてなされたもので、データの更新や消去が高速に行われる記憶装置や、記憶装置が記憶するデータの更新や消去を高速に行うためのメモリ管理方法を提供することを目的とする。
また、この発明は、劣化が起きにくい記憶装置や、記憶装置の劣化を起こしにくいメモリ管理方法を提供することも目的とする。
【0011】
【課題を解決するための手段】
上記目的を達成するため、本発明の第1の観点に係る記憶装置は、
ユーザ用データを記憶するための複数のメモリブロックを含み、各々の前記メモリブロックが1個以上の物理ページより構成されていて、各々の前記物理ページが冗長部及び複数の仮想ページを含んでいる不揮発性メモリからなる第1の記憶手段と、
書き込み対象のユーザ用データが自己に供給されたとき、当該書き込み対象のユーザ用データを、前記仮想ページのうちユーザ用データを記憶可能な状態にあるもの、すなわち空き仮想ページに書き込むユーザ用データ書込手段と、
前記書き込み対象のユーザ用データにより置換される対象のユーザ用データが前記仮想ページに記憶されているか否かを判別して、記憶されていると判別したとき、当該置換される対象のユーザ用データが有効なユーザ用データではないことを示す有効性データを、前記物理ページのうち前記置換される対象のユーザ用データを記憶する仮想ページを含む物理ページの冗長部に書き込むフラグ書込手段と、を備える記憶装置であって、
前記仮想ページには物理アドレスが割り当てられており、
前記物理ページの冗長部には、当該冗長部と共通の物理ページに属する仮想ページを外部の装置が特定するために用いる論理アドレスが格納されており、
前記第1の記憶手段は、自己の前記仮想ページのうち空き仮想ページであるものを指示する書込ポインタの初期値を格納しており、
前記仮想ページの物理アドレスと前記論理アドレスとの対応付けを表すアドレス変換テーブルを記憶するためのランダムアクセスによる読み書きが可能な記憶領域を有する第2の記憶手段と、
前記書込ポインタの現在値を記憶するためのランダムアクセスによる読み書きが可能な記憶領域を有する第3の記憶手段と、
前記第1の記憶手段へのアクセスが可能となったことに応答し、前記冗長部に書き込まれている論理アドレスを読み出し、読み出した当該論理アドレスに基づいて前記アドレス変換テーブルを作成して前記第2の記憶手段の記憶領域に格納し、前記書込ポインタの初期値を前記第1の記憶手段より読み出して前記第3の記憶手段の記憶領域に格納する初期化手段と、を更に備え、
前記ユーザ用データ書込手段は、書き込み対象のデータ及び論理アドレスが自己に供給されたとき、当該書き込み対象のデータを、前記仮想ページのうち前記書込ポインタの現在値により指示された空き仮想ページに書き込み、当該空き仮想ページの物理アドレスと当該論理アドレスとの対応付けを表すよう前記アドレス変換テーブルを更新し、前記書込ポインタの現在値をインクリメントしたものに相当する値を取得して、前記書込ポインタの新たな初期値として前記第1の記憶手段に書き込む、
ことを特徴とする。
【0012】
このような記憶装置においては、置換される対象のユーザ用データ(たとえばユーザ用データを更新する場合は、更新前の古いユーザ用データ)は、消去される代わりに、有効性データによって無効であることを示される。従って、更新時にメモリブロックの効率の悪いフラッシュイレースが行われずに済み、記憶装置の劣化が起きにくい。
また、有効性データを参照すれば、無効なユーザ用データの所在が特定される。このため、メモリブロックの記憶内容を消去する場合に、有効性データにより無効であることが示されている論理ページにあるデータの読み出しを省略しても、有効なユーザ用データを他のメモリブロックに保存しつつ正常に消去を行うことが可能である。従って、ユーザ用データの更新や消去が高速になる。
【0013】
また、このような構成を有していれば、ユーザ用データを書き込む毎に新たな空きブロック(ユーザ用データを記憶していないブロック)を探索して書き込むという操作が不要である。従って、ユーザ用データの書き込みが古いデータの消去を伴う場合(具体的には、ユーザ用データの書き換えを行う場合)でも、メモリブロックの効率の悪いフラッシュイレースが行われずに済み、記憶装置の劣化が起きにくい。
【0014】
前記フラグ書込手段は、書き込んだ前記書き込み対象のユーザ用データが有効なユーザ用データであることを示す有効性データを、前記物理ページのうち当該書き込み対象のユーザ用データを記憶した仮想ページを含む物理ページの冗長部に書き込むものであってもよい。
この場合、前記ユーザ用データ書込手段は、各前記有効性データに基づき、前記仮想ページのうちユーザ用データを記憶していない仮想ページを特定し、特定した仮想ページを前記空き仮想ページとして扱うものであってもよい。
【0015】
前記記憶装置は、第1の記憶手段の消去対象のメモリブロック内の各前記仮想ページに記憶されているユーザ用データが有効か否かを前記有効性データに基づいて判別し、有効と判別したユーザ用データを他のメモリブロックに転記してから、当該消去対象のメモリブロックが記憶するデータを消去する消去手段を備えていてもよい。
この場合、前記消去手段は、各前記有効性データに基づき、前記前記第1の記憶手段内の他のメモリブロック内にあってユーザ用データを記憶していない仮想ページを特定し、特定した仮想ページに、前記有効と判別したユーザ用データを転記するものであってもよい。
【0016】
前記記憶装置は、第1の記憶手段の読み出し対象の仮想ページを特定するための情報が自己に供給されたとき、前記情報に基づいて当該読み出し対象の仮想ページを特定し、特定した読み出し対象の仮想ページよりユーザ用データを読み出して外部に出力する読出手段を備えるものであってもよい。
【0017】
また、本発明の第2の観点に係るメモリ管理方法は、
ユーザ用データを記憶するための複数のメモリブロックを含み、各々の前記メモリブロックが1個以上の物理ページより構成されていて、各々の前記物理ページが冗長部及び複数の仮想ページを含んでいる不揮発性メモリを管理するメモリ管理方法であって、
書き込み対象のユーザ用データが自己に供給されたとき、当該書き込み対象のユーザ用データを、前記仮想ページのうちユーザ用データを記憶可能な状態にあるもの、すなわち空き仮想ページに書き込むユーザ用データ書込ステップと、
前記書き込み対象のユーザ用データにより置換される対象のユーザ用データが前記仮想ページに記憶されているか否かを判別して、記憶されていると判別したとき、当該置換される対象のユーザ用データが有効なユーザ用データではないことを示す有効性データを、前記不揮発性メモリの物理ページのうち前記置換される対象のユーザ用データを記憶する仮想ページを含む物理ページの冗長部に書き込むステップと、を含み、
前記仮想ページには物理アドレスが割り当てられており、
前記物理ページの冗長部には、当該冗長部と共通の物理ページに属する仮想ページを外部の装置が特定するために用いる論理アドレスが格納されており、
前記不揮発性メモリは、自己の仮想ページのうち空き仮想ページであるものを指示する書込ポインタの初期値を格納しており、
前記不揮発性メモリへのアクセスが可能となったことに応答し、前記冗長部に書き込まれている論理アドレスを読み出し、読み出した当該論理アドレスに基づいて、前記仮想ページの物理アドレスと前記論理アドレスとの対応付けを表すアドレス変換テーブルを作成し、ランダムアクセスによる読み書きが可能な第2のメモリの記憶領域に当該アドレス変換テーブルを格納し、前記書込ポインタの初期値を前記不揮発性メモリより読み出して、当該書込ポインタの現在値を記憶するためのメモリであってランダムアクセスによる読み書きが可能な第3のメモリの記憶領域に当該初期値を格納する初期化ステップを更に含み、
前記ユーザ用データ書込ステップは、書き込み対象のデータ及び論理アドレスが自己に供給されたとき、当該書き込み対象のデータを、前記仮想ページのうち前記書込ポインタの現在値により指示された空き仮想ページに書き込み、当該空き仮想ページの物理アドレスと当該論理アドレスとの対応付けを表すよう前記アドレス変換テーブルを更新し、前記書込ポインタの現在値をインクリメントしたものに相当する値を取得して、前記書込ポインタの新たな初期値として前記不揮発性メモリに書き込むステップを含む、
ことを特徴とする。
【0018】
このようなメモリ管理方法においては、置換される対象のユーザ用データ(たとえばユーザ用データを更新する場合は、更新前の古いユーザ用データ)は、消去される代わりに、有効性データによって無効であることを示される。従って、更新時にメモリブロックの効率の悪いフラッシュイレースが行われずに済み、メモリの劣化が起きにくい。
また、有効性データを参照すれば、無効なユーザ用データの所在が特定される。このため、メモリブロックの記憶内容を消去する場合に、有効性データにより無効であることが示されている論理ページにあるデータの読み出しを省略しても、有効なユーザ用データを他のメモリブロックに保存しつつ正常に消去を行うことが可能である。従って、ユーザ用データの更新や消去が高速になる。
【0019】
また、本発明の第3の観点に係るプログラムは、
ユーザ用データを記憶するための複数のメモリブロックを含み、各々の前記メモリブロックが1個以上の物理ページより構成されていて、各々の前記物理ページが冗長部及び複数の仮想ページを含んでいる不揮発性メモリに接続されたコンピュータを、
書き込み対象のユーザ用データが自己に供給されたとき、当該書き込み対象のユーザ用データを、前記仮想ページのうちユーザ用データを記憶可能な状態にあるもの、すなわち空き仮想ページに書き込むユーザ用データ書込手段と、
前記書き込み対象のユーザ用データにより置換される対象のユーザ用データが前記仮想ページに記憶されているか否かを判別して、記憶されていると判別したとき、当該置換される対象のユーザ用データが有効なユーザ用データではないことを示す有効性データを、前記物理ページのうち前記置換される対象のユーザ用データを記憶する仮想ページを含む物理ページの冗長部に書き込むフラグ書込手段と、
して機能させるためのプログラムであって、
前記仮想ページには物理アドレスが割り当てられており、
前記物理ページの冗長部には、当該冗長部と共通の物理ページに属する仮想ページを外部の装置が特定するために用いる論理アドレスが格納されており、
前記不揮発性メモリは、自己の前記仮想ページのうち空き仮想ページであるものを指示する書込ポインタの初期値を格納しており、
前記コンピュータを、
前記仮想ページの物理アドレスと前記論理アドレスとの対応付けを表すアドレス変換テーブルを記憶するためのランダムアクセスによる読み書きが可能な記憶領域を有する第2のメモリと、
前記書込ポインタの現在値を記憶するためのランダムアクセスによる読み書きが可能な記憶領域を有する第3のメモリと、
前記不揮発性メモリへのアクセスが可能となったことに応答し、前記冗長部に書き込まれている論理アドレスを読み出し、読み出した当該論理アドレスに基づいて前記アドレス変換テーブルを作成して前記第2のメモリの記憶領域に格納し、前記書込ポインタの初期値を前記不揮発性メモリより読み出して前記第3のメモリの記憶領域に格納する初期化手段と、して更に機能させ、
前記ユーザ用データ書込手段は、書き込み対象のデータ及び論理アドレスが自己に供給されたとき、当該書き込み対象のデータを、前記仮想ページのうち前記書込ポインタの現在値により指示された空き仮想ページに書き込み、当該空き仮想ページの物理アドレスと当該論理アドレスとの対応付けを表すよう前記アドレス変換テーブルを更新し、前記書込ポインタの現在値をインクリメントしたものに相当する値を取得して、前記書込ポインタの新たな初期値として前記不揮発性メモリに書き込む、
ことを特徴とする。
【0020】
このようなプログラムを実行するコンピュータによれば、置換される対象のユーザ用データ(たとえばユーザ用データを更新する場合は、更新前の古いユーザ用データ)は、消去される代わりに、有効性データによって無効であることを示される。従って、更新時にメモリブロックの効率の悪いフラッシュイレースが行われずに済み、メモリの劣化が起きにくい。
また、有効性データを参照すれば、無効なユーザ用データの所在が特定される。このため、メモリブロックの記憶内容を消去する場合に有効性データが示す論理ページにあるデータの読み出しを省略しても、有効なユーザ用データを他のメモリブロックに保存しつつ正常に消去を行うことが可能である。従って、ユーザ用データの更新や消去が高速になる。
【0021】
【発明の実施の形態】
以下、この発明の実施の形態を、フラッシュメモリを備えた記憶システムを例とし、図面を参照して説明する。
【0022】
図1は、この発明の実施の形態にかかる記憶システムの物理的構成を示すブロック図である。
図示するように、この記憶システムは、メモリユニット1と、コンピュータ2とから構成されている。メモリユニット1は、コンピュータ2が備えるスロットを介して、コンピュータ2に着脱可能に装着されている。
コンピュータ2が備えるスロットは、例えば、PCMCIAバスを中継するためのPCMCIAスロットからなる。
【0023】
メモリユニット1は、フラッシュメモリ11及びコントローラ12からなる。
【0024】
フラッシュメモリ11は、例えば、EEPROM(Electrically Erasable/Programmable Read Only Memory)等の記憶装置からなる。フラッシュメモリ11は、コントローラ12が行うアクセスに応答し、コンピュータ2から供給されたデータの記憶と、記憶しているデータのコンピュータ2への供給と、記憶しているデータの消去とを行う。
【0025】
フラッシュメモリ11が有する記憶領域は、例えば図2に示すように65536個の物理ページからなり、各々の物理ページは2112バイトの記憶容量を有する。
各物理ページは、各512バイトの論理ページ4個と、物理ページの末尾64バイトを占める冗長部とから構成される。各論理ページに含まれるメモリセルには、連続的に0から511までの番地が与えられている。
【0026】
論理ページには、ユーザデータ(コンピュータ2から供給され書き込まれるデータや、コンピュータ2に供給される対象となるデータ)が格納される。
冗長部には、この冗長部と同じ物理ページに属する各論理ページに格納されているユーザデータの内容が破壊されていないことを確認するためのECC(エラー訂正コード)や、不良ブロックフラグが格納される。
【0027】
不良ブロックフラグは、この不良ブロックフラグが格納されている物理ページが属するブロック(後述)が、データを正常に格納可能なブロック(良品ブロック)であるか、良品ブロックでないブロックすなわち不良ブロックであって、フラッシュメモリ11の製造者等によって出荷前に不良と判断されたブロック(初期不良ブロック)であるか、不良ブロックであって、フラッシュメモリ11の使用中にデータの正常な格納ができないと判断されたブロック(後発不良ブロック)であるか、を示すデータである。
【0028】
なお、良品ブロックを表している不良ブロックフラグは、後発不良ブロックを示す値を上書きすることで、後発不良ブロックを表すように更新できるものとする。
NAND型のフラッシュメモリは、値“1”を格納するメモリセルに値“0”を上書きすることが可能である。(値“0”を格納するメモリセルに値“1”を上書きすることはできず、当該メモリセルを含むブロックをいったんフラッシュイレース(後述)する必要がある。)
このため、例えば、フラッシュメモリ11がNAND型のフラッシュメモリより構成されており、不良ブロックフラグが2ビットのデータより構成されているとした場合は、良品ブロックを示す値が“11”、後発不良ブロックを示す値が“01”又は“10”、初期不良ブロックを示す値が“00”であれば、良品ブロックを表している不良ブロックフラグは、後発不良ブロックを示す値を上書きすることで、後発不良ブロックを表すように更新でき、この不良ブロックフラグを格納するブロックをフラッシュイレースする操作は不要となる。
【0029】
また、冗長部には、この冗長部と同じ物理ページに属する各論理ページのうち無効なユーザデータを格納しているものがどれであるかを示す有効フラグが、後述する処理により格納される。なお、論理ページに格納されているユーザデータが無効なデータである場合としては、たとえば、このデータを更新したものがフラッシュメモリ11の他の論理ページに格納された場合等がある。
【0030】
なお、ある論理ページが無効なデータを格納していないことを示す有効フラグは、上書きすることで、当該論理ページが無効なデータを格納していることを表すように更新することができるものとする。
【0031】
そして、各物理ページは、先頭から64ページ単位で1つのブロックを構成する。各ブロックは256個の論理ページを有し、各々のブロックに属する各論理ページには、連続的に0から255までのページアドレスが付与されている。フラッシュメモリ11の記憶領域全体は、1024個のブロックから構成され、先頭から連続的に0から1023までの物理ブロックアドレスを与えられている。
【0032】
また、各々の物理ページの冗長部には、当該物理ページ内にある各論理ページに与えられている論理アドレスの値が格納される。論理アドレスは、フラッシュメモリ11が後述する動作により読み書きされるときに、コントローラ12により、データ読み書きの単位として認識される単位である。
【0033】
論理ページの論理アドレスは、例えば、当該論理ページが属するブロックを示す上位の桁(論理ブロックアドレス)と、当該ブロック内での当該論理ページの位置を示す下位の桁(ページアドレス)とからなっている。論理アドレスの総数は、フラッシュメモリ11が物理的に備える論理ページの総数(1ブロックあたりの論理ページは256個でブロックは1024個、総計262144個)より小さい所定量、例えば256000個である。
【0034】
フラッシュメモリ11は、メモリユニット1のコントローラ12より、特定のブロックのデータを消去するよう指示されると、当該ブロックに含まれるすべてのメモリセルの記憶内容をフラッシュイレースする(具体的には、例えばフラッシュメモリ11がNAND型のフラッシュメモリからなる場合は、各メモリセルの記憶値を“1”とする)。
【0035】
また、フラッシュメモリ11の論理ページには、ディレクトリと、FAT(File Allocation Table)と、書き込みポインタ初期値とが格納され、後述する処理によって更新される。
【0036】
ディレクトリ、FAT及び書き込みポインタ初期値が格納される論理ページには、所定の条件に合致する論理アドレスが付される。具体的には、例えば、論理アドレスとして先頭の4096個のアドレス(すなわち、0h以上FFFh以下のアドレス)が付される。(なお、本明細書及び図面において、末尾に文字“h”を付した数字は16進数を表す。)
【0037】
図3は、ディレクトリ、FAT及び論理ブロックアドレスの相互の対応関係を示す図である。図示するように、ディレクトリ及びFATが記憶された論理ページの論理アドレスは、例えば、CPU121が記憶する(あるいはCPU121がRAM123に記憶させる)ディレクトリポインタによって示されている。
【0038】
ディレクトリは、フラッシュメモリ11内に記憶されているファイル(すなわち、一括して扱う対象としてコンピュータ2が指定するデータの集合)のファイル名と、そのファイルの先頭部分が記憶されている論理ページの論理アドレスとを示すテーブルである。
【0039】
FATは、フラッシュメモリ11の記憶領域内でのファイルの配置を示すテーブルであり、ファイルが1つの論理ページ内に収まらないとき、図3に示すように、後続の部分を記憶する論理ページの論理アドレスをそれぞれ示すものである。ファイルの最終部分が記憶されている論理ページの論理アドレスは、図3に示すように、終了コード(EC)を付されることによって、この論理アドレスが最終部分を表すものであることが示される。
【0040】
書き込みポインタ初期値は、CPU121がユーザデータを書き込むべき論理ページを指し示す変数である後述の書き込みポインタの最新の値を表すものであり、この記憶システムが起動後最初にフラッシュメモリ11へのユーザデータの書き込みにおいてユーザデータを書き込むべき論理ページを指定するものとなる。
【0041】
コントローラ12は、図1に示すように、CPU(Central Processing Unit)121と、ROM(Read Only Memory)122と、RAM(Random Access Memory)123とを備えている。RAM123は、例えば、SRAM(Static RAM)より構成されている。
【0042】
CPU121は、ROM122、RAM123及びフラッシュメモリ11に接続されており、また、コンピュータ2が備えるPCMCIAスロットを介してコンピュータ2に着脱可能に接続されている。
【0043】
CPU121は、コントローラ12の製造者等によって予めROM122に格納されているプログラムの処理に従って、後述する処理を行う。
そして、CPU121は、アクセス装置を構成するコンピュータ2から供給される命令を取得すると、その命令を実行する。CPU121が実行する命令には、フラッシュメモリ11にアクセスする命令が含まれる。
【0044】
RAM123が有する記憶領域は、CPU121の作業領域として用いられ、また、この記憶領域は退避用メモリ領域を含んでおり、更に、CPU121が後述する処理により作成するBSI(Block Search Index)及びBPT(Block Pointer Table)と、書き込みポインタとを格納する。
【0045】
退避用メモリ領域は、後述するデータ書き込みの処理において、書き込みを行う対象の論理ページを含むブロックに格納されているデータを一時的に格納するための記憶領域である。
【0046】
BSIは、フラッシュメモリ11の記憶領域に含まれる各ブロックのうちどれが空きブロック(すなわち、フラッシュイレースされユーザデータを記憶していない状態にあるブロック)であるかを特定する情報を格納する。BSIは、コントローラ12の後述する処理に従って作成及び更新される。
【0047】
フラッシュメモリ11のブロックの総数が1024個であるときのBSIの構造の一例を図4に示す。図示するように、BSIは128バイトのデータからなり、先頭のビットから順に、先頭のブロックから1024個目のブロックまで順に1対1に対応付けられており、対応付けられたブロックが空きブロックであるとき“1”、空きブロックでないとき“0”を格納する。
【0048】
BPTは、各々の論理ページについて、当該ページの論理アドレスと物理アドレスとの対応関係を示す情報を格納するものである。BPTは、CPU121による後述の処理に従って作成あるいは更新される。
【0049】
BPTは、具体的には、例えば図5に示すデータ構造を有する。
すなわち、BPTは、例えばRAM123の記憶領域中の所定の論理的位置を占め、各々の論理アドレスに対応付けられた物理アドレスを記憶するための記憶領域を備える。そして、論理アドレスの総数が256000個であるとした場合、例えば、図示するように、先頭から18ビット毎に付されたアドレスが0h〜3E7FFhである、合計576000バイトの記憶領域を備えていればよい。
【0050】
BPTが図5に示すデータ構造を有するとした場合、BPTを形成する記憶領域に付された各々のアドレスは、論理アドレスに所定のオフセット値を加えたもの等しい。
そして、各々のアドレスを付された18ビットの記憶領域に格納されている内容は、当該アドレスが示す論理アドレスに対応付けられている論理ページの物理アドレス(物理ブロックアドレス及びページアドレスの組)を表す。
【0051】
具体的には、例えば図5に示すように、アドレス0001hを付された記憶領域に値“0A10Fh”が格納されており、オフセット値が0000hであるとする。この場合は、物理アドレスが0A10Fh(物理ブロックアドレスが“0A1h”で、ページアドレスが“0Fh”)である論理ページには、論理アドレスとして0001hが対応付けられている。
【0052】
ただし、各々のアドレスを付された記憶領域に格納されている内容が所定の値を表す場合(例えば、図示するように、物理アドレスの値“3FFFFh”を表す場合)は、その値を格納している記憶領域のアドレスが示す論理アドレスには、物理アドレスが対応付けられていないことを表す。
【0053】
書き込みポインタは、CPU121がユーザデータを書き込むべき論理ページを指定する変数(ポインタ)であり、具体的には、該当する論理ページの物理アドレスを示しているものである。書き込みポインタの値は、後述する処理に従って更新される。
【0054】
コンピュータ2はパーソナルコンピュータ等からなり、PCMCIAスロットを備え、OS及びドライバを表すプログラムデータを記憶し、電源投入後、OSを実行する。そして、PCMCIAスロットにメモリユニット1が装着されたことを検知すると、OSの処理に従ってドライバを起動する。
【0055】
ドライバの処理を行うコンピュータ2は、コントローラ12に上述の命令を供給したり、フラッシュメモリ11に書き込む対象のデータを供給して、CPU121に、フラッシュメモリ11へのアクセスを行わせる。そして、自らが供給した命令に従ってCPU121がフラッシュメモリ11から読み出して自らに供給したデータを、CPU121より取得する。
【0056】
(動作)
次に、この記憶システムの動作を、図6〜図10を参照して説明する。
図6は、初期処理を示すフローチャートである。
図7は、データ読み出しの処理を示すフローチャートである。
図8は、データ書き込みの処理を示すフローチャートである。
図9は、ディレクトリ及びFAT更新の処理を示すフローチャートである。
図10は、空きブロック確保の処理を示すフローチャートである。
【0057】
(初期処理)
この記憶システムが起動すると、メモリユニット1のコントローラ12のCPU121は、図6に示す初期処理を実行する。
初期処理を開始すると、CPU121は、RAM123の記憶領域のうち、BPT及びBSIを格納する部分の初期化を行う(図6、ステップS101)。
【0058】
ステップS101でCPU121は、具体的には、RAM123の記憶領域のうちBPTを格納する部分について、上述のアドレスが示す各18ビットの区画に、物理アドレスが対応付けられていないことを示す所定の値(例えば、上述の値“3FFFFh”)を書き込む。また、BSIを格納する部分のビットの論理値を、すべて“0”とする。
【0059】
次に、CPU121は、フラッシュメモリ11の、冗長部にあるデータを未だ読み出されていないブロックのうちから、最も物理ブロックアドレスが若いものを特定し、特定されたブロックに属する各物理ページの冗長部に格納されているデータをすべて読み出す(ステップS102)。
【0060】
次に、CPU121は、ステップS102で読み出したデータに基づき、ステップS102でデータを読み出したブロックが空きブロックであるか否かを判別する(ステップS103)。具体的には、例えば、ステップS102で読み出したデータが、所定の形式の空きブロックコードを含んでいるか否かを判別する。そして、空きブロックでないと判別すると、CPU121は、処理をステップS105に移す。
【0061】
一方、このブロックが空きブロックであるとステップS103で判別すると、CPU121は、このブロックを示す物理ブロックアドレスから、BSIのうちこのブロックの状態を示すビットがRAM123の記憶領域中で占める位置を算出する。そして、位置を算出したビットの論理値を“1”に書き換える(ステップS104)。ステップS104の処理を終えると、CPU121は処理をステップS106に移す。
【0062】
一方、ステップS105で、CPU121は、フラッシュメモリ11の冗長部から読み出した、各論理ページの物理アドレスを、RAM123の記憶領域に書き込む。ステップS105でCPU121が論理ページの物理アドレスを書き込む論理的位置は、冗長部から読み出した当該論理ページの論理アドレスに相当するアドレスを付された部分とする。これにより、BPTに、物理アドレスと論理アドレスとの対応付けを示す新たな情報が追加される。
【0063】
そして、CPU121は、フラッシュメモリ11の同一のブロックから読み出したすべての論理アドレスについてステップS105の処理を終えると、処理をステップS106に移す。
【0064】
ステップS106で、CPU121は、ステップS102で冗長部に格納されているデータを読みとられたブロックの次のブロックが存在するか否かを判別する。そして、存在すると判別すると処理をステップS102に戻し、存在しないと判別すると、処理をステップS107に移す。
【0065】
ステップS107でCPU121は、書き込みポインタ初期値が格納されている論理ページにアクセスして書き込みポインタ初期値を読み出し、RAM123に記憶させ、初期処理を終了する。
以上説明した初期処理により、BSI及びBPTが作成され、書き込みポインタの初期値が特定される。
【0066】
(データ読み出しの処理)
初期処理が終了すると、メモリユニット1のCPU121は、コンピュータ2より、フラッシュメモリ11へのアクセスの指示を受け付ける。
コンピュータ2は、CPU121にフラッシュメモリ11からのデータの読み出しを指示するときは、まず、ディレクトリ及びFATを読み出すため、読み出しを指示する命令と、ディレクトリ及びFATが記憶されている各論理ページの論理アドレスを、CPU121に供給する(図7、ステップS201)。
【0067】
データの読み出しを指示する命令と、論理アドレスとを供給されたCPU121は、論理アドレスをキーとしてBPTを検索し、ディレクトリ及びFATが記憶されている各論理ページの物理アドレスを索出し、索出した物理アドレスが示す各論理ページより、ディレクトリやFATを構成するデータを読み出して、コンピュータ2に供給する(ステップS202)。コンピュータ2は、CPU121から供給されたディレクトリ及びFATを一時記憶する。
【0068】
次に、コンピュータ2は、読み出す対象のデータを含むファイルのファイル名を有するファイルの内容が格納されている先頭の論理ページの論理アドレスを索出するため、このファイル名をキーとして、CPU121より供給され一時記憶したディレクトリを検索する(ステップS203)。
【0069】
次に、コンピュータ2は、ステップS203で索出した論理アドレスをキーとして、CPU121から供給されたFATを検索し、ディレクトリから論理アドレスを索出されたページに後続する論理ページの論理アドレスがあればすべて索出して、該当する論理ページが連続する順序を特定する(ステップS204)。
【0070】
そして、コンピュータ2は、ステップS203及びS204で索出された論理ページの記憶内容を読み出すため、読み出しを指示する命令と、ユーザデータを読み出すべき論理ページ(つまり、ステップS203及びS204で索出されたページで未だデータを読み出されていない論理ページのうちの先頭の論理ページ)の論理アドレスとを、CPU121に供給する(ステップS205)。
【0071】
CPU121は、ステップS205で読み出しを指示する命令及び論理アドレスを供給されると、RAM123にアクセスし、ステップS205でコンピュータ2より供給された論理アドレスをキーとしてBPTを検索して、この論理アドレスに対応付けられた物理アドレスがあるか否かを判別する(ステップS206)。
そして、該当する物理アドレスがないと判別すると、CPU121は、所定のエラーメッセージ(例えば、所定値“FFh”)をコンピュータ2に供給して(ステップS207)、データ読み出しの処理を終了(異常終了)する。
【0072】
一方、該当する物理アドレスがあると判別すると、CPU121は、この物理アドレスが示す論理ページよりデータを読み出し、また、この論理ページと同じ物理ページの冗長部から、この論理ページのECCを読み出す(ステップS208)。
【0073】
そして、ステップS208で読み出したデータのうち論理ページに格納されていたデータに基づいてECCを生成し、生成したECCと、読み出したデータのうち冗長部に格納されていたECCとに基づいて、論理ページに格納されていたデータが正しく読み出されたか否かを判別する(ステップS209)。
【0074】
ステップS209で、正しく読み出されたと判別すると、CPU121は、論理ページに格納されていたデータをコンピュータ2に供給する(ステップS210)。
【0075】
正しく読み出されていないと判別すると、CPU121は、論理ページに格納されていたデータを正しい内容へと訂正することが可能か否かを、冗長部に格納されていたECC等に基づいて判別する(ステップS211)。そして、復元が可能であると判別すると、論理ページに格納されていたデータを訂正してコンピュータ2に供給する(ステップS212)。
【0076】
ステップS211で、訂正ができないと判別すると、訂正できない当該データを読み出した論理ページと同じ物理ページの冗長部(又は、この論理ページと同じブロック内の他の任意の物理ページの冗長部)に格納されている不良ブロックフラグを、後発不良ブロックを表す値へと上書き更新し、データの読み取りに失敗したことをコンピュータ2に通知する(ステップS213)。コンピュータは、この通知を受けると、データ読み出しの処理を中断(異常終了)する。
【0077】
一方、コンピュータ2は、ステップS210又はS212でCPU121より読み出し対象のデータを供給されると、ユーザデータを読み出すべき論理ページが残っているか否かを判別する(ステップS214)。そして、該当する論理ページが残っていると判別したときは処理をステップS205に戻し、残っていないと判別したときは処理を終了する。
【0078】
以上説明したステップS201〜S214の処理により、フラッシュメモリ11よりデータが読み出され、コンピュータ2へと供給される。
【0079】
(データ書き込みの処理)
また、フラッシュメモリ11へのデータの書き込みを行う場合、まず、コンピュータ2は、ディレクトリ及びFATを読み出すため、上述のステップS201と同様に、読み出しを指示する命令と、ディレクトリ及びFATが記憶されている各論理ページの論理アドレスを、CPU121に供給する(図8、ステップS301)。ただし、既にデータの読み出し等のためにディレクトリ及びFATを一時記憶している場合はステップS301の処理を省略し、ステップS303から処理を始める。
【0080】
データの読み出しを指示する命令及び論理アドレスを供給されたCPU121は、上述のステップS202と実質的に同一の処理を行うことによりディレクトリ及びFATを読み出して、コンピュータ2に供給する(ステップS302)。コンピュータ2は、CPU121から供給されたディレクトリ及びFATを一時記憶する。
【0081】
次に、コンピュータ2は、フラッシュメモリ11に書き込む対象のファイルのファイル名をキーとして、CPU121より供給されたディレクトリを検索し、そのファイル名がディレクトリに格納されているか否かを判別する(ステップS303)そして、格納されていないと判別したときは、処理を後述のステップS305に移す。
【0082】
一方、格納されていると判別したとき、コンピュータ2は、ステップS303での検索により索出したファイル名に対応付けられている論理アドレスをキーとして、CPU121から供給されたFATを検索し、このファイル名が示すデータを格納する各論理ページの論理アドレスを索出して一時記憶し(ステップS304)、処理をステップS305に移す。
【0083】
ステップS305で、コンピュータ2は、後述するステップS306及びS313でCPU121に供給すべきデータを決定する。
具体的には、ステップS305でコンピュータ2は、例えばまず、書き込み対象のファイルの書き込みが完了しているか否かを判別し、完了していないと判別した場合は、書き込み対象のファイルに含まれるデータのうちフラッシュメモリ11にまだ書き込まれていない、論理ページ1個分のデータをステップS313で供給することと決定し、また、このデータを格納する論理ページの論理アドレス(書込先の論理アドレス)をステップS306で供給することと決定する。
一方、書き込み対象のファイルの書き込みが完了していると判別した場合は、自己が一時記憶しているディレクトリ及びFATをフラッシュメモリに書き込んだか否かを判別する。そして、書き込みを終えていないと判別した場合は、自己が一時記憶するディレクトリ及びFATを構成するデータを論理ページ1個分、ステップS313で供給することと決定し、また、ディレクトリ及びFATを格納する論理ページの論理アドレス(書込先の論理アドレス)をステップS306で供給することと決定する。
また、ディレクトリ及びFATの書き込みも完了していると判別した場合は、書き込みの完了を通知する所定のデータをステップS306で供給することと決定する。
【0084】
ステップS306で、コンピュータ2は、ステップS305で決定した結果に従い、データを格納する対象の論理ページの論理アドレス又は書き込み完了の通知を供給する。また、論理アドレスを供給する場合は、更に、フラッシュメモリ11への論理ページ1個分のデータの書き込みを指示する命令も供給する。
【0085】
なお、コンピュータ2は、書き込み対象のファイルに含まれるデータをステップS313で供給すると決定した場合、例えば、図9に示すディレクトリ及びFAT更新の処理を行うことにより、ステップS306でCPU121に供給する論理アドレスの決定と、ディレクトリ及びFATの更新を行う。
【0086】
すなわち、コンピュータ2はまず、自己が一時記憶しているディレクトリ及びFATを解析して、データが書き込まれていない論理ページの論理アドレス(つまり、ファイル名に対応付けられていない論理アドレス)を、書き込むデータを格納するために必要な数だけ、書き込み対象の論理ページに割り当てる論理アドレスとして特定する(図9、ステップS401)。
【0087】
ただし、書き込む対象のファイルのファイル名がディレクトリに含まれるとステップS303で判別した場合、ステップS401でコンピュータ2は、このファイル名に対応付けられている論理アドレス(つまり、ステップS304で一時記憶した論理アドレス)を、データを書き込む対象の論理ページの論理アドレスとして優先的に特定するようにしてもよい。
【0088】
次に、コンピュータ2は、ステップS401で特定した各論理アドレスの並び順を決定する(ステップS402)。この並び順は、これらの論理アドレスを割り当てられた各論理ページの並び順を表すものであり、また、これらの論理ページに書き込まれたデータの並び順を表すものでもある。
【0089】
コンピュータ2がステップS401〜S402の処理を行った場合、ステップS306でコンピュータ2は、ステップS401で特定した論理アドレスでCPU121に供給していないもののうちで、ステップS402で決めた並び順の先頭にあたる論理アドレスを、CPU121に供給すればよい。
【0090】
次に、コンピュータ2は、自ら一時記憶しているディレクトリ及びFATに、ステップS401で特定した論理アドレスを、図3に示す上述のデータ構造をとるようにして格納する(ステップS403)。なお、ディレクトリ及びFATにより表される論理アドレスの前後関係は、ステップS401で特定した並び順通りになるようにする。ステップS403の処理により、フラッシュメモリ11に新たに書き込むべきディレクトリ及びFATが作成される。
【0091】
一方、CPU121は、ステップS306でコンピュータより書込先の論理アドレス又は書き込み完了の通知などのデータを供給されると、これらのデータのうちに、書き込み完了の通知が含まれているか否かを判別する(図8、ステップS307)。そして、含まれていると判別すると処理をステップS319に移し、供給されていないと判別すると、ステップS308以降の処理を行う。
【0092】
ステップS308でCPU121はRAM123にアクセスして、ステップS306でコンピュータ2より供給された論理アドレスが示す論理ページの物理アドレスを、BPTより検索する。そして、ステップS308で物理アドレスが索出されたか否かを判別し(ステップS309)、索出されなかったと判別すると処理をステップS311に進める。
【0093】
一方、CPU121は、物理アドレスが索出されたとステップS309で判別すると、フラッシュメモリ11にアクセスし、索出された物理アドレスを割り当てられている論理ページが属する物理ページの冗長部の有効フラグを、これらの論理ページが無効なデータを格納していることを表すように上書き更新し(ステップS310)、ステップS311に処理を進める。また、ステップS310でCPU121はRAM123にアクセスして、ステップS308で特定された物理アドレスを、物理アドレスが対応付けられていないことを表す値(例えば上述の値“3FFFFh”)へと更新する。つまり、この論理ページへの論理アドレスの割り当てを解除する。
【0094】
ステップS311でCPU121は、RAM123にアクセスし、書き込みポインタが現在指し示している物理アドレスを、コンピュータ2より供給された書込先の論理アドレスに対応付けた形で、BPTに格納する。そしてCPU121は、フラッシュメモリ11に書き込むべき論理ページ1個分のデータがコンピュータ2から供給されるのを待機する(ステップS312)。
【0095】
フラッシュメモリ11に書き込むデータがコンピュータ2から供給されると(ステップS313)、CPU121はフラッシュメモリ11にアクセスし、書き込みポインタが現在指し示している論理ページに、コンピュータ2から供給された論理ページ1個分のデータを書き込む(ステップS314)。また、ステップS314でCPU121は、この論理ページと同じ物理ページの冗長部に、ステップS306でコンピュータ2から供給された論理アドレスを、この論理ページの論理アドレスとして書き込む。
【0096】
次に、CPU121はRAM123にアクセスし、ステップS314で新たにデータを書き込まれたページが、このページを含むブロックの末尾のページだったか否かを、例えば書き込みポインタの現在の値に基づいて判別する(ステップS315)。そして、末尾のページではなかったと判別すると、処理をステップS318に移す。
【0097】
一方、新たにデータを書き込まれたページがブロックの末尾のページであったとステップS315で判別すると、CPU121は、RAM123が記憶するBSIの内容を、このブロックが空きブロックでないことを表すように更新する(ステップS316)。
【0098】
次に、CPU121は、ブロックをフラッシュイレースして空きブロックを確保するか否かを、任意の基準に基づいて決定する(ステップS317)。具体的には、CPU121は、例えばBSIの内容に基づいて現在の空きブロックの数を数え、空きブロックの数が2個以下であれば空きブロックを確保すると決定し、3個以上であれば空きブロックを確保しないと決定すればよい。
【0099】
そして、CPU121は、空きブロックを確保しないと決定すると、処理をステップS318に移し、空きブロックを確保すると決定すると、図10に示す空きブロック確保の処理を開始する。
【0100】
空きブロック確保の処理を開始すると、CPU121は、データを消去して空きブロックにする対象のブロックを1個以上特定する(図10、ステップS501)。
【0101】
なお、ステップS501でCPU121がフラッシュイレースする対象のブロックを決定する基準は任意であり、例えばCPU121は、フラッシュイレースされて空きブロックになった最新のブロック以降のブロック(つまり、このブロックより大きな物理ブロックアドレスを与えられているブロック)のうち、物理ブロックアドレスがもっとも小さい非空きブロック(空きブロックでないブロック)を、フラッシュイレースする対象として決定すればよい。ただし、該当する非空きブロックが1個もない場合は、フラッシュメモリ11のすべての非空きブロックのうちもっとも物理ブロックアドレスが小さいものを、フラッシュイレースする対象とする。
【0102】
次に、CPU121は、特定したブロックのうちから、最初にフラッシュイレースするブロックを1個指定する(ステップS502)。なお、ステップS502でCPU121がブロックを指定する基準も任意であり、例えばCPU121は、ステップS501で特定したブロックのうち物理ブロックアドレスがもっとも小さいブロックを指定すればよい。
【0103】
次に、CPU121は、ステップS502又は後述のステップS512で最も新しく指定したブロック内の各物理ページの冗長部が格納する有効フラグを参照することにより、当該ブロック内の各論理ページのうち有効なユーザデータを格納しているものを特定する(ステップS503)。そして、ステップS503で特定した各論理ページからユーザデータ(退避対象のデータ)を読み出し、RAM123に記憶させる(ステップS504)。また、ステップS504では、ステップS503で特定した各論理ページの論理アドレス、及び、退避対象のデータのECCも、冗長部から読み出してRAM123に記憶させる。
なお、CPU121は、ステップS504で読み出したユーザデータ及びECCの誤りをチェックし、訂正可能な誤りがあれば訂正したユーザデータ及びECCをRAM123に記憶させるようにしてもよい。
【0104】
次に、CPU121は、書き込みポインタをインクリメントする(ステップS505)。具体的には、CPU121は、書き込みポインタが現在指し示している論理ページ以降の論理ページを含む物理ページの冗長部を参照することにより、書き込みポインタが現在指し示している論理ページ以降であって論理アドレスが冗長部に書き込まれていない論理ページのうち先頭のものを特定する。そして、特定した論理ページの物理アドレスを指し示すように、RAM123が記憶する書き込みポインタの値を更新する。なお、書き込みポインタが現在指し示している論理ページがブロックの末尾の論理ページである場合、ステップS505でCPU121は、BSIを検索することにより新たな空きブロックを1個特定し、特定した空きブロックの先頭の論理ページを特定し、特定した当該先頭の論理ページの物理アドレスを指し示すように、RAM123が記憶する書き込みポインタの値を更新すればよい。
【0105】
次に、CPU121は、新たな退避対象のデータを書き戻す(ステップS506)。すなわち、ステップS504でRAM123に記憶させた退避対象のデータのうち、まだフラッシュメモリ11に書き戻されていないものを論理ページ1個分、書き込みポインタが現在指し示している論理ページに書き込む。なお、CPU121は、退避対象のデータのうちフラッシュメモリ11に書き戻した部分をRAM123の記憶領域から消去してもよい。
【0106】
また、ステップS506では、書き戻すべき新たな退避対象のデータが従前格納されていた論理ページに与えられていた論理アドレスを、書き込みポインタが現在指し示している論理ページを含む物理ページの冗長部に、この論理ページの論理アドレスとして書き込む。
【0107】
次に、CPU121は、RAM123にアクセスし、ステップS506で新たに退避対象のデータが書き込まれた論理ページの論理アドレスに対応付けた形で、BPTに、書き込みポインタが現在指し示している物理アドレス(つまり、新たに退避対象のデータが書き込まれた論理ページの物理アドレス)を格納する(ステップS507)。
【0108】
次に、CPU121は、退避対象のデータがすべて書き戻されたか否かを判別し(ステップS508)、書き戻されていないものがあると判別すると、処理をステップS505に戻す。
【0109】
一方、すべて書き戻されたとステップS508で判別すると、CPU121は、ステップS502又はS512で最も新しく指定したブロックをフラッシュイレースして空きブロックにし、空きブロックとなったこのブロックの各物理ページの冗長部に空きブロックコードを書き込む(ステップS509)。(ただし、フラッシュメモリ11がNAND型のフラッシュメモリより構成されている場合であって、空きブロックコードが値“1”のビットのみからなっている場合は、特に空きブロックコードを書き込む動作は不要である。)
また、CPU121はRAM123にアクセスして、BSIの内容を、このブロックが空きブロックであることを表すように更新する(ステップS510)。
【0110】
そして、CPU121は、ステップS501でフラッシュイレースの対象として特定したブロックのうち、まだフラッシュイレースされていないブロックがあるか否かを判別する(ステップS511)。そして、まだフラッシュイレースされていないブロックがあると判別すると、該当するブロックのうちから1個を新たに指定し(ステップS512)、処理をステップS503に戻す。なお、該当するブロックが複数ある場合において、ステップS512でCPU121がそのうちの1個を指定する基準も任意である。
【0111】
一方、フラッシュイレースの対象として特定したブロックがすべてフラッシュイレースされたとステップS511で判別すると、CPU121は空きブロック確保の処理を終了し、ステップS505の処理と同様にして書き込みポインタをインクリメントし(ステップS318)、次の書込先の論理アドレス又は書き込み完了の通知がコンピュータ2から供給されるのを待機する。
なお、ステップS502の処理を省略し、ステップS501で特定されたすべてのブロックについて、一括してステップS503〜S510の処理を行うようにしてもよい。また、データの退避が済んだブロックを、退避したデータの書き戻しを行う前にフラッシュイレースすることも可能である。
【0112】
CPU121が次の書込先の論理アドレス又は書き込み完了の通知を待機する状態に入ると、コンピュータ2は処理をステップS305に戻す。そして、CPU121は、ステップS306で次の書込先の論理アドレス又は書き込み完了の通知がコンピュータ2から供給されると、処理をステップS307に戻す。
【0113】
一方、CPU121は、書き込み完了の通知を供給されてステップS319に処理を移すと、ステップS505と同様の処理を行うことにより、RAM123に格納されている書き込みポインタの現在の値をインクリメントした結果を求め、一時記憶する。なお、書き込みポインタ自体はインクリメントしない。
【0114】
次に、CPU121は、書き込みポインタが現に指し示す物理アドレスを、書き込みポインタ初期値を格納する論理ページに与えられる論理アドレス(ポインタ初期値用の論理アドレス)に対応付けた形で、BPTに格納する(ステップS320)。
【0115】
次に、CPU121は、ステップS319で求めた値を、書き込みポインタが現に指し示す論理ページに、書き込みポインタ初期値として書き込む(ステップS321)。また、ステップS321では、この論理ページと同じ物理ページの冗長部に、ポインタ初期値用の論理アドレスを、この論理ページの論理アドレスとして書き込む。
ステップS321の処理が終わると、この記憶システムはデータ書き込みの処理を終了する。
【0116】
以上説明した処理により、コンピュータ2から供給されたデータがフラッシュメモリ11に格納される。また、BSIの内容が、データの書き込みの結果新たに生じた空きブロック及び消滅した空きブロックを示すよう変更される。一方、BPTの内容も変更され、新たに空きブロックとなったブロック内で有効なユーザデータを格納していた論理ページに割り当てられていた論理アドレスが、その論理ページの内容を転記された論理ページに新たに割り当てられる。
【0117】
この記憶システムでは、ユーザデータが更新される場合、古いユーザデータは、消去される代わりに有効フラグにより無効であることを示される。従って、更新時にブロックの効率の悪いフラッシュイレースを行わなくて済み、フラッシュメモリ11の劣化が起きにくい。
また、空きブロックを確保するために有効なユーザデータを転記する場合は、有効フラグにより無効であることを示された論理ページからのデータの読み出しを省略して処理を進める。従って、空きブロックの確保が高速である。
【0118】
なお、この記憶システムの構成は、上述のものに限られない。
例えば、フラッシュメモリ11の記憶領域のブロックの数、1ブロック当たりの論理ページの数、各論理ページの記憶容量、論理ページ及び冗長部の記憶容量は、いずれも任意である。また、フラッシュメモリ11は、EEPROMから構成されるものである必要はなく、コンピュータにより読み書き可能な任意の記憶装置であってよい。
また、ディレクトリ及びFATが格納される論理ページの論理アドレスは上述の値である必要はなく、また、ディレクトリ及びFATが格納される論理ページの個数も任意である。
また、フラッシュメモリ11の冗長部は必ずしも物理ページの末尾にある必要はなく、物理ページ内の任意の位置にあってもよいし、冗長部の位置が動的に割り当てられてもよい。
【0119】
また、RAM123は、例えばFeRAM(Ferroelectric RAM:強誘電性RAM)からなる不揮発性メモリより構成されていてもよい。この場合、この記憶システムは、既にRAM123がBSI及びBPTを記憶している場合には、初期処理を省略してもよい。すなわち、起動するたびにBPTやBSIの作成を逐一行わなくてもよい。
【0120】
また、CPU121は、必ずしもPCMCIAスロットを介してコンピュータ2に接続されるものでなくてもよく、IEEE1394インターフェースやUSB(Universal Serial Bus)あるいはその他の任意のインターフェースを介して接続されていてもよい。また、CPU121は必ずしもコンピュータ2に有線接続される必要はなく、例えばBluetooth等の規格に準拠したインターフェースを介してコンピュータ2に無線接続されるものであってもよい。
また、フラッシュメモリ11は必ずしもメモリユニット1の内部に固定されている必要はなく、例えばコントローラ12と着脱可能に接続されてもよい。この場合、フラッシュメモリ11及びコントローラ12は、例えば、スマートメディア(登録商標)とその駆動装置とが備える端子と同様の端子や、あるいは、コンパクトフラッシュ(登録商標)とその駆動装置とが備える端子と同様の端子などを介して互いに接続されるように構成されていればよい。
【0121】
また、組み込みメモリユニット1とコンピュータ2とは互いに固定的に接続されていてもよく、図11に示すように、メモリユニット1及びコンピュータ2が同一の筐体に組み込まれていてもよい。
【0122】
以上、この発明の実施の形態を説明したが、この発明の記憶システムは、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。例えば、フラッシュメモリ11を装着するスロットを備えるパーソナルコンピュータに上述の動作を実行するためのプログラムを格納した媒体(フレキシブルディスク、CD−ROM等)から該プログラムをインストールすることにより、上述の処理を実行する記憶システムを構成することができる。
【0123】
また、例えば、通信回線のBBSに該プログラムをアップロードし、これらを通信回線を介して配信してもよく、また、該プログラムを表す信号により搬送波を変調し、得られた変調波を伝送し、この変調波を受信した装置が変調波を復調して該プログラムを復元するようにしてもよい。
そして、該プログラムを起動し、OSの制御下に、他のアプリケーションプログラムと同様に実行することにより、上述の処理を実行することができる。
【0124】
なお、OSが処理の一部を分担する場合、あるいは、OSが本願発明の1つの構成要素の一部を構成するような場合には、記録媒体には、その部分を除いたプログラムを格納してもよい。この場合も、この発明では、その記録媒体には、コンピュータが実行する各機能又はステップを実行するためのプログラムが格納されているものとする。
【0125】
【発明の効果】
以上説明したように、この発明によれば、データの更新や消去が高速に行われる記憶装置や、記憶装置が記憶するデータの更新や消去を高速に行うためのメモリ管理方法が実現される。
また、この発明によれば、劣化が起きにくい記憶装置や、記憶装置の劣化を起こしにくいメモリ管理方法も実現される。
【図面の簡単な説明】
【図1】本発明の実施の形態にかかる記憶システムの構成を示すブロック図である。
【図2】フラッシュメモリの記憶領域の論理的構造を模式的に示す図である。
【図3】ディレクトリ及びFATのデータ構造を模式的に示す図である。
【図4】BSIのデータ構造を模式的に示す図である。
【図5】BPTのデータ構造を模式的に示す図である。
【図6】初期処理を示すフローチャートである。
【図7】データ読み出しの処理を示すフローチャートである。
【図8】データ書き込みの処理を示すフローチャートである。
【図9】ディレクトリ及びFAT更新の処理を示すフローチャートである。
【図10】空きブロック確保の処理を示すフローチャートである。
【図11】図1の記憶システムの変形例の構成を示すブロック図である。
【符号の説明】
1 メモリユニット
11 フラッシュメモリ
12 コントローラ
121 CPU
122 ROM
123 RAM
2 コンピュータ
Claims (6)
- ユーザ用データを記憶するための複数のメモリブロックを含み、各々の前記メモリブロックが1個以上の物理ページより構成されていて、各々の前記物理ページが冗長部及び複数の仮想ページを含んでいる不揮発性メモリからなる第1の記憶手段と、
書き込み対象のユーザ用データが自己に供給されたとき、当該書き込み対象のユーザ用データを、前記仮想ページのうちユーザ用データを記憶可能な状態にあるもの、すなわち空き仮想ページに書き込むユーザ用データ書込手段と、
前記書き込み対象のユーザ用データにより置換される対象のユーザ用データが前記仮想ページに記憶されているか否かを判別して、記憶されていると判別したとき、当該置換される対象のユーザ用データが有効なユーザ用データではないことを示す有効性データを、前記物理ページのうち前記置換される対象のユーザ用データを記憶する仮想ページを含む物理ページの冗長部に書き込むフラグ書込手段と、を備える記憶装置であって、
前記仮想ページには物理アドレスが割り当てられており、
前記物理ページの冗長部には、当該冗長部と共通の物理ページに属する仮想ページを外部の装置が特定するために用いる論理アドレスが格納されており、
前記第1の記憶手段は、自己の前記仮想ページのうち空き仮想ページであるものを指示する書込ポインタの初期値を格納しており、
前記仮想ページの物理アドレスと前記論理アドレスとの対応付けを表すアドレス変換テーブルを記憶するためのランダムアクセスによる読み書きが可能な記憶領域を有する第2の記憶手段と、
前記書込ポインタの現在値を記憶するためのランダムアクセスによる読み書きが可能な記憶領域を有する第3の記憶手段と、
前記第1の記憶手段へのアクセスが可能となったことに応答し、前記冗長部に書き込まれている論理アドレスを読み出し、読み出した当該論理アドレスに基づいて前記アドレス変換テーブルを作成して前記第2の記憶手段の記憶領域に格納し、前記書込ポインタの初期値を前記第1の記憶手段より読み出して前記第3の記憶手段の記憶領域に格納する初期化手段と、を更に備え、
前記ユーザ用データ書込手段は、書き込み対象のデータ及び論理アドレスが自己に供給されたとき、当該書き込み対象のデータを、前記仮想ページのうち前記書込ポインタの現在値により指示された空き仮想ページに書き込み、当該空き仮想ページの物理アドレスと当該論理アドレスとの対応付けを表すよう前記アドレス変換テーブルを更新し、前記書込ポインタの現在値をインクリメントしたものに相当する値を取得して、前記書込ポインタの新たな初期値として前記第1の記憶手段に書き込む、
ことを特徴とする記憶装置。 - 前記フラグ書込手段は、書き込んだ前記書き込み対象のユーザ用データが有効なユーザ用データであることを示す有効性データを、前記物理ページのうち当該書き込み対象のユーザ用データを記憶した仮想ページを含む物理ページの冗長部に書き込み、
前記ユーザ用データ書込手段は、各前記有効性データに基づき、前記仮想ページのうちユーザ用データを記憶していない仮想ページを特定し、特定した仮想ページを前記空き仮想ページとして扱う、
ことを特徴とする請求項1に記載の記憶装置。 - 第1の記憶手段の消去対象のメモリブロック内の各前記仮想ページに記憶されているユーザ用データが有効か否かを前記有効性データに基づいて判別し、有効と判別したユーザ用データを他のメモリブロックに転記してから、当該消去対象のメモリブロックが記憶するデータを消去する消去手段を備え、
前記消去手段は、各前記有効性データに基づき、前記前記第1の記憶手段内の他のメモリブロック内にあってユーザ用データを記憶していない仮想ページを特定し、特定した仮 想ページに、前記有効と判別したユーザ用データを転記する、
ことを特徴とする請求項1又は2に記載の記憶装置。 - 第1の記憶手段の読み出し対象の仮想ページを特定するための情報が自己に供給されたとき、前記情報に基づいて当該読み出し対象の仮想ページを特定し、特定した読み出し対象の仮想ページよりユーザ用データを読み出して外部に出力する読出手段を備える、
ことを特徴とする請求項1乃至3のいずれか1項に記載の記憶装置。 - ユーザ用データを記憶するための複数のメモリブロックを含み、各々の前記メモリブロックが1個以上の物理ページより構成されていて、各々の前記物理ページが冗長部及び複数の仮想ページを含んでいる不揮発性メモリを管理するメモリ管理方法であって、
書き込み対象のユーザ用データが自己に供給されたとき、当該書き込み対象のユーザ用データを、前記仮想ページのうちユーザ用データを記憶可能な状態にあるもの、すなわち空き仮想ページに書き込むユーザ用データ書込ステップと、
前記書き込み対象のユーザ用データにより置換される対象のユーザ用データが前記仮想ページに記憶されているか否かを判別して、記憶されていると判別したとき、当該置換される対象のユーザ用データが有効なユーザ用データではないことを示す有効性データを、前記不揮発性メモリの物理ページのうち前記置換される対象のユーザ用データを記憶する仮想ページを含む物理ページの冗長部に書き込むステップと、を含み、
前記仮想ページには物理アドレスが割り当てられており、
前記物理ページの冗長部には、当該冗長部と共通の物理ページに属する仮想ページを外部の装置が特定するために用いる論理アドレスが格納されており、
前記不揮発性メモリは、自己の仮想ページのうち空き仮想ページであるものを指示する書込ポインタの初期値を格納しており、
前記不揮発性メモリへのアクセスが可能となったことに応答し、前記冗長部に書き込まれている論理アドレスを読み出し、読み出した当該論理アドレスに基づいて、前記仮想ページの物理アドレスと前記論理アドレスとの対応付けを表すアドレス変換テーブルを作成し、ランダムアクセスによる読み書きが可能な第2のメモリの記憶領域に当該アドレス変換テーブルを格納し、前記書込ポインタの初期値を前記不揮発性メモリより読み出して、当該書込ポインタの現在値を記憶するためのメモリであってランダムアクセスによる読み書きが可能な第3のメモリの記憶領域に当該初期値を格納する初期化ステップを更に含み、
前記ユーザ用データ書込ステップは、書き込み対象のデータ及び論理アドレスが自己に供給されたとき、当該書き込み対象のデータを、前記仮想ページのうち前記書込ポインタの現在値により指示された空き仮想ページに書き込み、当該空き仮想ページの物理アドレスと当該論理アドレスとの対応付けを表すよう前記アドレス変換テーブルを更新し、前記書込ポインタの現在値をインクリメントしたものに相当する値を取得して、前記書込ポインタの新たな初期値として前記不揮発性メモリに書き込むステップを含む、
ことを特徴とするメモリ管理方法。 - ユーザ用データを記憶するための複数のメモリブロックを含み、各々の前記メモリブロックが1個以上の物理ページより構成されていて、各々の前記物理ページが冗長部及び複数の仮想ページを含んでいる不揮発性メモリに接続されたコンピュータを、
書き込み対象のユーザ用データが自己に供給されたとき、当該書き込み対象のユーザ用データを、前記仮想ページのうちユーザ用データを記憶可能な状態にあるもの、すなわち空き仮想ページに書き込むユーザ用データ書込手段と、
前記書き込み対象のユーザ用データにより置換される対象のユーザ用データが前記仮想ページに記憶されているか否かを判別して、記憶されていると判別したとき、当該置換される対象のユーザ用データが有効なユーザ用データではないことを示す有効性データを、前記物理ページのうち前記置換される対象のユーザ用データを記憶する仮想ページを含む物理ページの冗長部に書き込むフラグ書込手段と、
して機能させるためのプログラムであって、
前記仮想ページには物理アドレスが割り当てられており、
前記物理ページの冗長部には、当該冗長部と共通の物理ページに属する仮想ページを外部の装置が特定するために用いる論理アドレスが格納されており、
前記不揮発性メモリは、自己の前記仮想ページのうち空き仮想ページであるものを指示する書込ポインタの初期値を格納しており、
前記コンピュータを、
前記仮想ページの物理アドレスと前記論理アドレスとの対応付けを表すアドレス変換テーブルを記憶するためのランダムアクセスによる読み書きが可能な記憶領域を有する第2のメモリと、
前記書込ポインタの現在値を記憶するためのランダムアクセスによる読み書きが可能な記憶領域を有する第3のメモリと、
前記不揮発性メモリへのアクセスが可能となったことに応答し、前記冗長部に書き込まれている論理アドレスを読み出し、読み出した当該論理アドレスに基づいて前記アドレス変換テーブルを作成して前記第2のメモリの記憶領域に格納し、前記書込ポインタの初期値を前記不揮発性メモリより読み出して前記第3のメモリの記憶領域に格納する初期化手段と、して更に機能させ、
前記ユーザ用データ書込手段は、書き込み対象のデータ及び論理アドレスが自己に供給されたとき、当該書き込み対象のデータを、前記仮想ページのうち前記書込ポインタの現在値により指示された空き仮想ページに書き込み、当該空き仮想ページの物理アドレスと当該論理アドレスとの対応付けを表すよう前記アドレス変換テーブルを更新し、前記書込ポインタの現在値をインクリメントしたものに相当する値を取得して、前記書込ポインタの新たな初期値として前記不揮発性メモリに書き込む、
ことを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003176589A JP3826115B2 (ja) | 2002-06-20 | 2003-06-20 | 記憶装置、メモリ管理方法及びプログラム |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002179902 | 2002-06-20 | ||
JP2003176589A JP3826115B2 (ja) | 2002-06-20 | 2003-06-20 | 記憶装置、メモリ管理方法及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004078907A JP2004078907A (ja) | 2004-03-11 |
JP3826115B2 true JP3826115B2 (ja) | 2006-09-27 |
Family
ID=32032558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003176589A Expired - Fee Related JP3826115B2 (ja) | 2002-06-20 | 2003-06-20 | 記憶装置、メモリ管理方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3826115B2 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100526188B1 (ko) | 2003-12-30 | 2005-11-04 | 삼성전자주식회사 | 플래시 메모리의 주소 사상 방법, 사상 정보 관리 방법 및상기 방법을 이용한 플래시 메모리 |
JP4661497B2 (ja) * | 2005-09-27 | 2011-03-30 | Tdk株式会社 | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 |
KR100874441B1 (ko) | 2007-01-09 | 2008-12-17 | 삼성전자주식회사 | 멀티-비트 데이터를 저장할 수 있는 플래시 메모리 장치,그것을 제어하는 메모리 제어기, 그리고 그것을 포함한메모리 시스템 |
JP2008299456A (ja) * | 2007-05-30 | 2008-12-11 | Sony Corp | データ記憶装置及びデータ管理方法 |
JP5486193B2 (ja) * | 2009-01-27 | 2014-05-07 | 株式会社東海理化電機製作所 | フラッシュメモリの動作保護装置及びフラッシュメモリの動作保護方法 |
CN113190470B (zh) * | 2021-05-21 | 2024-09-17 | 恒宝股份有限公司 | 一种flash芯片存储区及其高性能防掉电读写方法 |
-
2003
- 2003-06-20 JP JP2003176589A patent/JP3826115B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004078907A (ja) | 2004-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20060143365A1 (en) | Memory device, memory managing method and program | |
JP3977370B2 (ja) | フラッシュメモリのアドレスマッピング方法、マッピング情報管理方法及びこれらの方法を用いたフラッシュメモリ | |
USRE45222E1 (en) | Method of writing of writing to a flash memory including data blocks and log blocks, using a logical address having a block address portion and page identifying portion, a block address table and a page table | |
US6865658B2 (en) | Nonvolatile data management system using data segments and link information | |
JP4560408B2 (ja) | 不揮発性記憶装置の制御方法 | |
KR100847506B1 (ko) | 기억 장치, 메모리 관리 방법 및 프로그램 | |
JP5035636B2 (ja) | フラッシュメモリ内のブロックにおける移動セクタ | |
US6477616B1 (en) | Storage device, storage system, memory management method, recording medium, and computer data signal | |
JP4611024B2 (ja) | ブロック内のページをグループ化する方法及び装置 | |
JP4238514B2 (ja) | データ記憶装置 | |
US7242632B2 (en) | Memory device, memory managing method and program | |
JP4373943B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
US20080104361A1 (en) | Storage Device, Memory Managing Apparatus, Memory Managing Method, and Program | |
JP2005242897A (ja) | フラッシュディスク装置 | |
JPWO2007000862A1 (ja) | メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法 | |
US20070136510A1 (en) | Storage device, memory managing device, memory managing method, and program | |
CN113885808A (zh) | 映射信息记录方法以及存储器控制电路单元与存储装置 | |
JP3826115B2 (ja) | 記憶装置、メモリ管理方法及びプログラム | |
JP2004078902A (ja) | 記憶装置、メモリ管理方法及びプログラム | |
JP4794530B2 (ja) | 半導体装置および携帯電話 | |
JP2012068765A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2000030375A (ja) | データ処理システム、アクセス装置及び記録媒体 | |
KR20050011869A (ko) | 플래시 메모리를 이용한 기억장치 및 그 에러 복구 방법 | |
JP3999564B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP2012037971A (ja) | メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20051128 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060328 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060529 |
|
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: 20060620 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060703 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090707 Year of fee payment: 3 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090707 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |