(57)【要約】【課題】仕様の異なるフラシュメモリ素子を共通に用いることができ、簡単な処理でファイル管理を効率よく行うことが可能な情報処理装置の実現を課題とする。【解決手段】フラシュメモリの記憶領域を、仮想的なセクタ３１と仮想的なクラスタ３２で分割して、ハードディスク装置のファイル管理に用いられるＦＡＴファイルシステムの利用を可能にする。【選択図】　　　　図３
2004038237.tif 000002
【特許請求の範囲】
【請求項１】
マイクロプロセッサなどの中央処理装置と、ＲＡＭとＲＯＭとフラッシュメモリとからなる情報記憶手段とを具備する情報処理装置において、
前記フラッシュメモリの記憶領域を複数のデータ格納領域に分割し、さらに、このデータ格納領域を複数の小データ格納領域に分割し、各データ格納領域および各小データ格納領域の使用状況を管理テーブルで管理することを特徴とする情報処理装置。
【請求項２】
管理テーブルでは各前記データ格納領域について論理アドレスとそれに対応する物理アドレスを示し、さらに、そのデータ格納領域の使用状態を示すデータ格納領域使用情報と、そのデータ格納領域中の各小データ格納領域の使用状態を示す小データ格納領域使用情報を含めることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記データ格納領域使用情報と、前記小データ格納領域使用情報はそれぞれ１ビットで表されることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記データ格納領域中の各前記小データ格納領域の論理アドレスとそれに対応する物理アドレスを示す小データ格納領域管理テーブルを設け、
この小データ格納領域管理テーブル中にその小データ格納領域が不良でないことを示す小データ格納領域情報を含め、不良の小データ格納領域が含まれている場合はそのデータ格納領域全体を不良と見なして、小データ格納領域の物理アドレスに変えてデータ格納領域の物理アドレスとデータ格納領域不良情報とを含めることを特徴とする請求項１に記載の情報処理装置。
【請求項５】
複数のデータ格納領域を有し、そのデータ格納領域の各々がさらに複数の小データ格納領域に分割される情報記録手段と、この情報記録手段の前記データ格納領域および小データ格納領域の各々の使用状況を記録する管理テーブルとを具備する情報処理装置に用いられるプログラムにおいて、
データの書き込みに際し、前記管理テーブルから未使用のデータ格納領域を検索する手順と、
前記検索された未使用のデータ格納領域にデータを格納する手順と、
前記管理テーブルの前記データ格納領域使用情報および前記小データ格納領域使用情報とを更新する手順と
を情報処理装置に実行させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置およびプログラムに関し、特にフラッシュメモリのファイル管理方法を改良した情報処理装置およびプログラムに関する。
【０００２】
【従来の技術】
フラッシュメモリはＥＥＰＲＯＭ（Ｅｌｅｃｔｏｒｉｃａｌｌｙ　Ｅｒａｓａｂｌｅ　ａｎｄ　Ｐｒｏｇｒａｍｍａｂｌｅ　Ｒｅａｄ　Ｏｎｌｙ　Ｍｅｍｏｒｙ）の一種であるが、通常のＥＥＰＲＯＭが１バイトづつ消去を行うのに対して、ブロック単位または一括に消去できるように構成されているメモリである。データは比較的自由に繰り返し書き替えることができ、バックアップ電源を必要とせず、また構成が簡単なため、単位セル面積がＲＡＭよりも小さいという長所を有している。また、書き込み、消去回数も１０万回ぐらいは保証されている。さらに、記憶容量は数Ｍバイトから５１２Ｍバイトぐらいまで幅広いものがある。このため、パソコンなどのＢＩＯＳ（基本入出力システム）の記憶などに用いられているほか、オンボードメモリとしても広く用いられるようになってきている。
ところで、フラッシュメモリの素子は、メーカおよびその型番によってその仕様が異なっており、殊に記憶容量にともなって一度に転送できるデータの最大単位であるブロックサイズが異なるためにその違いに応じて制御の仕方、処理方法を変えなければならないという問題があった。
【０００３】
また、ファイルシステムは、ハードディスクなどの外部記憶装置上でファイルを管理する方式を意味しており、基本ソフトウェアであるＯＳ（Ｏｐｅｒａｔｉｎｇ　Ｓｙｓｔｅｍ）によって提供され、種々の種類のファイルの編成方法やそれに対するアクセス方法などを示していて、ハードディスク装置などに記憶されたデータを効率的に操作し、管理するための仕組みや体系を実現するものである。
しかし、仕様が異なるフラッシュメモリに共通に適用できる独自のファイルシステムを作成することは手間や作業工数がかかり、結果的に高価なものになってしまう。
【０００４】
一方、従来の情報記録装置でハードディスク装置上のファイル管理には、ＦＡＴ（Ｆｉｌｅ　Ａｌｌｏｃａｔｉｏｎ　Ｔａｂｌｅ　）ファイルシステムと呼ばれる管理方法が採られていた。ここでは次のようにデータ記録をしていた。
この方法では、ハードディスク装置の記録領域を複数のブロックと呼ばれるデータ格納領域に分割する。また、このブロックはさらに小データ格納領域である複数のクラスタに、さらに、このクラスタはさらに複数のセクタに分割される。情報記録装置へのアクセスの単位はこのセクタである。そうして、このブロックとクラスタをファイルアロケーションテーブル（ＦＡＴ）を用いて管理する。
図９に示すように、フォーマットされたディスクでのトラック２１をさらに分割した物理的な最小記録単位がセクタ２２である。ＦＡＴディスクファイルシステムでデータの書き込みと読み出しはセクタ２２単位で行われる。また、複数のセクタ２２をまとめた論理的な最小記録単位をクラスタと呼ぶ。セクタ２２はファイルを管理するための単位としては小さすぎるので、複数にまとめクラスタとすることでＯＳでの管理を容易にしている。このクラスタの使用状況を記憶するテーブルがＦＡＴである。
【０００５】
ＦＡＴの内容は対応するクラスタの使用状況を示し、使用中の場合はファイルが次のクラスタに続くかどうかなどの情報を含んでいる。セクタ２２の大きさ（セクタサイズ）は５１２バイトなどで、クラスタの大きさ（クラスタサイズ）はＭＳ−ＤＯＳでのＦＡＴでは１ｋバイト、ＭＳ−ＤＯＳ３．０から採用されたＦＡＴ１６では３２ｋバイト、Ｗｉｎｄｏｗｓ９５から採用されたＦＡＴ３２では４ｋバイトである。（Ｗｉｎｄｏｗｓは、米国Ｍｉｃｒｏｓｏｆｔ　Ｃｏｒｐｏｒａｔｉｏｎの登録商標）クラスタサイズが大きいと管理やアクセスが容易になるが、大きすぎるとディスク装置のメモリ領域の利用効率は悪くなる。
【０００６】
さらに、セクタ、クラスタよりも大きなデータの論理的な単位としてブロックがある。ファイルを構成する１件のデータの集まりであるレコードをさらに幾つかまとめてブロックとして処理する。外部記憶装置、主メモリ、周辺装置へのデータの転送の際には、レコード単位ではなくブロック単位でデータを転送することで、入出力の回数を減らして効率を上げることができる。これは、外部記憶装置などからデータを読み込む速度が内部のメモリから読み込む速度に比べて遅い場合にとくに有効である。ディスク装置に記憶されたデータの消去もブロック単位で行われる。
【０００７】
ＦＡＴディスクファイルシステムでは、通常データの書き込みに際しては、論理アドレスに従ってファイルを管理するための表であるディレクトリの番号の小さい順にＦＡＴのクラスタ情報（データ格納領域の使用／未使用状態を記録したもの）を参照し、未使用であるデータ格納領域を検索する。次に当該未使用データ格納領域にデータを格納し、ディレクトリ構造とＦＡＴを更新する。
【０００８】
図１０は従来のディレクトリ構造を示す説明図である。図１１は従来のＦＡＴを示す説明図である。
図１０のディレクトリ構造には、ファイル名やファイルが管理されているＯＳの種類を表す拡張子、バイト数や作成日時を表す属性およびＦＡＴ上の開始位置を表すＦＡＴエントリなどが記録されている。図１１のＦＡＴには、そのクラスタファイルがどのクラスタに続くのか、あるいはそこで終了するのかを示す情報が記録されている。図１１ではクラスタアドレスが００２ｈ，００３ｈ，００４ｈ，００５ｈ，００８ｈ，００９ｈの６クラスタ使用のファイルと、クラスタアドレスが００６ｈ，００７ｈの２クラスタ使用のファイルが存在しそれぞれのＦＡＴエントリが００２ｈ，００６ｈと記録されている場合の例を示す。
【０００９】
データの書き込みに当たって未使用領域を探す場合、図１０のディレクトリから対応付けられたＦＡＴエントリを参照し、図１１のＦＡＴからクラスタ情報を参照する。図１２のフローチャートに示すように、もし、データ格納領域が未使用（すなわちクラスタ情報＝０）であれば、該当データ格納領域にデータを格納し、ＦＡＴのクラスタ情報を未使用（クラスタ情報＝０）から使用（クラスタ情報＝次クラスタ番号もしくは終了）に書き換える。さらに、ディレクトリ構造の書き換えを行う。ここで、ディレクトリ構造の書き換えは、ディレクトリ番号に割り当てられるＦＡＴエントリ（ＦＡＴ番号を示す）、ファイル名、拡張子等である。
一方、データ格納領域が使用中（クラスタ情報≠０）であれば、次のディレクトリについて上記の手順を繰り返す。ここで、検索順はディレクトリの小さい順に行う。また、ディレクトリ番号とＦＡＴエントリは固定した形になっている。
【００１０】
【発明が解決しようとする課題】
上述のごとく、フラッシュメモリの素子は、メーカおよびその型番によってその仕様が異なっており、殊にそのブロックサイズが異なるため、使用する素子ごとに制御の仕方、処理方法を変えなければならないという問題がある。これを避けるような、異なる素子に共通に適用できる独自のファイルシステムを新しく作成するには、手間や作業工数がかかるという問題がある。
本発明は、比較的簡単な方法でこの問題を解決して、仕様の異なるフラッシュメモリ素子のいずれでも素子として選ぶことができ、かつ、簡単な処理でファイル管理を効率良く実現することができる情報処理装置の実現を課題とする。
【００１１】
【課題を解決するための手段】
上記課題を達成するため、本発明は、マイクロプロセッサなどの中央処理装置と、ＲＡＭとＲＯＭとフラッシュメモリとからなる情報記憶手段とを具備する情報処理装置において、前記フラッシュメモリの記憶領域を複数のデータ格納領域に分割し、さらに、このデータ格納領域を複数の小データ格納領域に分割し、各データ格納領域および各小データ格納領域の使用状況を管理テーブルで管理することを特徴とする。
【００１２】
これにより、その処理を変更することなくフラッシュメモリのファイル管理を、データ格納領域をブロック、小データ格納領域をクラスタと見なして、ＦＡＴファイルシステムで効率良く実現することができ、かつ、仕様の異なるフラッシュメモリ素子を共通な方法で管理することができる。また、管理テーブルを用いることで、ブロックの物理アドレス、そのブロックとそのブロック内の各クラスタの使用状況、ブロック内の各クラスタの物理アドレス、クラスタやブロックの良否を少ないメモリで管理することができる。
【００１３】
また、複数のデータ格納領域を有し、そのデータ格納領域の各々がさらに複数の小データ格納領域に分割される情報記録手段と、この情報記録手段の前記データ格納領域および小データ格納領域の各々の使用状況を記録する管理テーブルとを具備する情報処理装置に用いられるプログラムにおいて、データの書き込みに際し、前記管理テーブルから未使用のデータ格納領域を検索する手順と、前記検索された未使用のデータ格納領域にデータを格納する手順と、前記管理テーブルの前記データ格納領域使用情報および前記小データ格納領域使用情報とを更新する手順とを情報処理装置に実行させることを特徴とする。
本発明のプログラムにより、フラッシュメモリのファイル管理を、データ格納領域をブロック、小データ格納領域をクラスタと見なして、ＦＡＴファイルシステムで効率良く実現することができる。また、仕様の異なるフラッシュメモリ素子を共通な方法で管理することができる。管理テーブルを用いることで、ブロックの物理アドレス、そのブロックとそのブロック内の各クラスタの使用状況、ブロック内の各クラスタの物理アドレス、クラスタやブロックの良否を少ないメモリで管理することができる。
【００１４】
【発明の実施の形態】
以下、本発明にかかる情報処理装置およびプログラムを添付図面を参照にして詳細に説明する。
【００１５】
図１に、本発明が用いられる情報処理装置の構成を示す。図１において、符号１はＣＰＵ、符号２はＲＡＭ、符号３はＲＯＭ、符号４はフラッシュメモリ、符号５はＩ／Ｏインターフェース、符号６はバスである。この構成でＲＡＭ２はＣＰＵ１のメインメモリとしての機能とアドレス管理テーブルなど全管理テーブルの記憶機能、ＲＯＭ３はデバイスドライバ、ＦＡＴ（Ｆｉｌｅ　Ａｌｌｏｃａｔｉｏｎ　Ｔａｂｌｅ　）ファイルシステムおよびユーザプログラムなどの記憶機能、フラッシュメモリ４はデータ記憶領域とシステム管理領域とクラスタ情報、不良ブロック情報などの記憶機能を分担すると共に、電源オフ時にＲＡＭ２上の管理テーブルを退避する機能を有する。これらハード部分と本発明の対応については順次発明の記述の中で説明することにする。
【００１６】
また、このフラッシュメモリファイルシステムを層構成的にイメージしたのが図２である。図２において、符号１１はＣＰＵ、符号１２はフラッシュメモリ、符号１３はアドレスバス、符号１４はデータバス、符号１５はデバイスドライバ、符号１６はファイルシステム、符号１７はユーザプログラムである。ハードウェア領域（物理領域）ではＣＰＵ１１と、フラッシュメモリ１２と、ＣＰＵ１１とフラッシュメモリ１２を結ぶアドレスバス１３およびデータバス１４で構成されており、ソフトウェア領域（論理領域）は、ＯＳと周辺機器（ここではフラッシュメモリ１２）とを仲介する周辺機器管理プログラムであるデバイスドライバ１５と、それに接続されるＦＡＴ（Ｆｉｌｅ　Ａｌｌｏｃａｔｉｏｎ　Ｔａｂｌｅ　）構成のファイルシステム１６およびユーザプログラム１７とで構成されている。このイメージはファイル媒体であるフラッシュメモリ１２をハードディスクに置き換えるとＭＳ−ＤＯＳなどで一般的に用いられているＦＡＴディスクファイルシステムと同等のものになる。デバイスドライバ１５とＦＡＴファイルシステム１６はユーザプログラム１７などと共にＲＯＭ３に記憶されている。
【００１７】
ところで、先にも述べたように、フラッシュメモリの素子は、メーカおよびその型番によってその記憶容量などの仕様が異なっており、記憶容量によってブロックとして扱えるデータのサイズ（ブロックサイズ）が異なるために、素子種類ごとにデバイスドライバは制御の仕方、処理方法を変えなければならないという問題が生じ、内部カウンタの作業が複雑になるなどの問題があった。
この問題を解決するために本発明ではブロックサイズの違いを仮想クラスタおよび仮想セクタを設けるという管理方法によって吸収するようにし、１ブロック当たりのクラスタ数を変更することで、記憶容量が５１２バイトの整数倍であれば、素子を選ばずにフラッシュメモリファイルシステムを構成、利用することができ、論理側からはブロックサイズを意識せずに、管理することができるようにした。例えば、ブロックサイズが３２ｋバイトの素子でも、ブロックサイズが６４ｋバイトの素子でもフラッシュメモリとして採用することができる。
【００１８】
図３に、本発明のフラッシュメモリファイルシステムでのメモリマップの実施例を示す。図３において、符号３１は仮想セクタ、符号３２は仮想クラスタ、符号３３は物理ブロックであり、符号３４は論理ブロックである。複数の仮想セクタ３１で仮想クラスタ３２を形成し、複数の仮想クラスタ３２で物理ブロック３３を分割するようにする。仮想クラスタ３２を形成する仮想セクタ３１の数は特に限定されるものではないが、素子のブロックサイズが余りなく仮想クラスタ３２に分割されることが望ましい。
【００１９】
この例では、ＦＡＴファイルシステムに合わせて、フラッシュメモリ素子のメモリ容量を５１２バイトづつに分割してこれを仮想セクタ３１とする。さらに２個の仮想セクタ３１で仮想クラスタ３２を構成し、物理ブロック３３は６４ｋバイトすなわち６４個の仮想クラスタ３２で構成している。さらに論理ブロック３４に対してこのような物理ブロック３３をアドレス管理テーブルで割り当てて物理ブロック３３を管理する。物理的な記憶、読出しなどの処理の最小単位はセクタであり、論理的な処理の最小単位はクラスタである。さらに、メモリの消去の単位はブロックである。
【００２０】
ＦＡＴファイルシステムでは、固定的にデータの先頭を論理クラスタのアドレス０から書き始める。デバイスドライバは後に述べるように、クラスタの情報、物理ブロック３３と論理ブロック３４との管理を行っている。ＦＡＴファイルシステムが新しい情報を論理クラスタのアドレス０から書き始めようとしたとき、すでに論理クラスタアドレス０に対応する仮想クラスタ３２に書き込み情報があってクラスタステータスが１の場合は、クラスタステータスが０の論理クラスタを探してデータを書き込む。クラスタステータスが１の論理クラスタに上書きする場合は、デバイスドライバは書き込み情報のない空き物理ブロック３３を見つけ、現在のブロックアドレスの物理ブロック３３の情報をこの物理ブロック３３に移し、上書きを行ってから、先の物理ブロック３３の記憶内容を消去し、アドレス管理テーブルのブロックアドレスを新しい物理ブロック３３のアドレスに書き換え、クラスタステータスを修正する。
このとき、論理ブロックアドレス０の情報が実際にどの物理ブロック３３に書き込まれているかをデバイスドライバはアドレス管理テーブルで管理していて、論理側アドレスと物理側アドレスの対応をとる。
アドレス管理テーブルは電源がオンされたとき、フラッシュメモリ（図１の４）から読み出されたクラスタ管理テーブルを基に、ＲＡＭ（図１の２）上に作成され、ＣＰＵ（図１の１）が動作中はＲＡＭ２上で動作し、電源がオフされたとき、クラスタ管理テーブルがフラッシュメモリ４に退避して保持される。
【００２１】
本発明では、このように仮想的にセクタとクラスタを設け、ＦＡＴファイルシステムを用いるという独自の方法を採用してフラッシュメモリファイルシステムを管理するようにしたので、ブロックサイズの異なるフラッシュメモリ素子を共通に用いることを可能にし、処理をとくに変更することなく、ディスク管理に広く用いられているＦＡＴファイルシステムをそのまま用いることができ、比較的簡単な処理で論理ブロックと物理ブロックの管理を効率良く実現することができる。
【００２２】
図４および図５にそって、本発明でのアドレス管理テーブルについて説明する。従来のこの種のアドレス管理テーブルの例では、例えば、図１０のように論理側アドレスと物理側アドレスの対応だけを示しているのが一般的である。しかし、本発明のアドレス管理テーブルでは、論理側アドレスと物理側アドレスの相互変換を行うための対照表の機能と、ブロックおよびクラスタの使用状況を示している。
図４はアドレス管理テーブルとその内容を示している。図４において、符号４１はアドレス管理テーブル、符号４２はアドレス管理テーブル４１の前半部分、符号４３はアドレス管理テーブル４１の後半部分である。また、図５はアドレス管理テーブル４１の後半部分４３のクラスタステータスと、物理ブロック上のクラスタアドレスの関係を示す図である。
【００２３】
アドレス管理テーブル４１は電源オン時にＲＡＭ２で作成されてデバイスドライバ１５で用いられる。図４で示すように、アドレス管理テーブル４１は論理ブロックの番号順に記載されている。アドレス管理テーブル４１の１ブロック分の中身は、ブロックステータス、ブロックアドレスを示す２バイトの前半部分４２と、クラスタステータスを示す８バイト、６４ビットの後半部分４３に別れている。
前半部分４２の２バイト１６ビットのうち、最上位１ビットはブロックステータスを表し、このブロックが使用されているか使用されていないかを示している。このブロックが一部でも使用されている場合は１、未使用の場合は０である。残りの１５ビットは物理ブロックのアドレス番号を示している。１５ビットであるため３２７６８ブロックにまで対応することができる。
【００２４】
データを書き込む場合、このアドレス管理テーブル４１を参照し、ブロックステータスが０の場合は、そのままそのブロックにデータを書き込む。ブロックステータスおよびクラスタステータスが１の場合は、新たに空き物理ブロックを所得し、その物理ブロックにもとのデータを移動し、該当するクラスタのデータを上書きし、前の物理ブロックは消去する。そうして、アドレス管理テーブル４１のブロックアドレスを新たに所得した物理ブロックのものとする。ただし、アドレス管理テーブル４１のブロックステータスは該当するブロックにデータが存在するため１のままであり、クラスタステータスももとからデータがあり、移動した部分と、新たにデータを書き込んだ部分は１である。
【００２５】
図６に、この間のこのアドレス管理テーブル４１の変化を示す。今、図６（ａ）のように該当の論理ブロックが物理ブロック０に対応しており、物理ブロック１が消去済みの空きブロックであったとする。この論理ブロックにデータを上書きする場合は、空きブロックの物理ブロック１に物理ブロック０にあるこの論理ブロックの上書き部分以外のデータを移し、さらに物理ブロック１の上書き該当部分に新しくデータを書き込み、図６（ｂ）のようにブロックアドレスを１にして物理ブロック０を消去する。ブロックを移動しても、データは残るのでブロックステータスは１のままである。
【００２６】
後半部分４３の８バイト６４ビットは、ブロックの中のクラスタの使用状況すなわちクラスタステータスを表し、図５に示すように、各ビット位置がそれぞれこのブロック内のクラスタの位置（アドレス）を表している。クラスタステータスのビットが１の場合はそのクラスタが使用されていることを、０の場合は未使用を示している。６４ビットあるので、１ブロック当たり６４クラスタまでに対応している。ＦＡＴファイルシステムからデータを書き込みにくる場合、クラスタステータスが０の場合はそのままデータを書き込み、クラスタステータスが１の場合は前のデータを消去してからデータを書き込む。
【００２７】
このように本発明では使用状況の表示を含めた独自の表示形式のアドレス管理テーブルを設けたので、データの書き込みに当り、ステータスが０の場合はそのままデータを書き込むことができ、従来のようにその都度必ずデータの消去を行ってから書き込みを行う必要がなくなり、その結果データの書き込み速度を早くすることができる。
また、ブロックやクラスタのステータスを１ビットで示しているので、ブロックのステータスと物理アドレスに２バイトと、そのブロック内の各クラスタのステータスに８バイトと、これらの情報を管理するために要するメモリサイズは、１ブロック当たり１０バイトで済むため、少ないメモリでフラッシュメモリを管理することができる。
【００２８】
例えば、記憶容量が２Ｍバイトで１ブロック６４ｋバイトのフラッシュメモリの管理に必要なアドレス管理テーブルのサイズは、
2004038237.tif 000003
となる。
【００２９】
次にブロック内の論理クラスタと物理クラスタのアドレス管理と不良ブロックの管理を行うための処理について図７に沿って説明する。従来はセクタ、クラスタの良、不良は、セクタ、クラスタがそれぞれデーター領域内部に付加情報として持っていた。このため、そのセクタ、クラスタを読み出して初めて良否が判定でき、良否判定に手間がかかるという問題があった。
【００３０】
図７において、符号５１は物理セクタ、符号５２は物理クラスタ、符号５３は物理ブロック、符号５４−１および５４−２は１ブロック分のクラスタ管理テーブルである。クラスタ管理テーブル５４は論理クラスタアドレス順に物理クラスタアドレスとクラスタステータスという順に書かれている。物理クラスタアドレスはこの論理クラスタに対応する物理クラスタの先頭アドレスで表されている。この例においては“０１４０”、“０１４１”、…がそれに当たる。また、ここでのクラスタステータスはそのクラスタの良、不良を表し、良の場合は初期状態の“ＦＦＦＦ”で、不良の場合はそれ以外、例えば“Ｆ０ＦＦ”で表す。
【００３１】
クラスタに不良がある場合は、そのブロック全体が保証できず使えなくなるので、図７の下部に示したクラスタ管理テーブル５４−２のように、最初の欄は、物理クラスタのアドレスではなく、物理ブロック番号（この例では０００５）を示し、その後にそのブロックが不良であることを表す“Ｆ０ＦＦ”を表示する。さらに、他の部分は初期状態の“ＦＦＦＦ”にしておく。
このテーブル情報は電源オン時にフラッシュメモリの指定された管理領域からＲＡＭ２上に読み出されデバイスドライバ１５で用いられ、電源オフ時にはフラッシュメモリの管理領域に退避して保存される。
【００３２】
以上のように、本発明では、データ領域とは別に管理領域を設け、この領域でクラスタ管理テーブルを用いて論理クラスタと物理クラスタの対応を取るようにすると共に、同じテーブルでブロックの不良を管理する。これにより、従来では各クラスタおよび各セクタ内部に持っていた付加情報を、クラスタ情報管理セクタで管理することにより、１ブロックを複数クラスタ、複数セクタで余り無く使用することが可能になる。したがって、比較的容易にクラスタ、セクタの管理が行えると共に、ブロックの不良管理も同時に行うことができ、使用領域を少なくして効率的な管理が行える。また、良、不良の判定をブロック単位で行っているので、判定が容易でかつ高速に行える。
【００３３】
本発明でデータをフラッシュメモリに書き込む場合の処理のフローチャートを図８に示す。まず、ステップ１０１でデータの書き込みが新しい論理ブロックへの書き込みか、上書きかを判断する。上書きでない場合は、ステップ１０２でアドレス管理テーブル４１からブロックステータスが０の論理ブロックを探す。そうしてステップ１０３で探し出した論理ブロックのブロックアドレスを求め、その論理ブロックのブロックステータスとデータを書き込むクラスタのクラスタステータスを１にする。そうして、ステップ１０４で、このアドレスへデータを書き込み終了する。
ステップ１０１で上書きの場合は、ステップ１０５で空き物理ブロックを探して、空き物理ブロックが見つかれば、ステップ１０６で管理テーブルのブロックアドレスとクラスタステータスを上書き終了の場合に合わせて修正する。そうして、ステップ１０７で現在の物理ブロックの上書き部分を除いたデータをこの空き物理ブロックに書き込む。ステップ１０８で上書きするデータを書き込み、ステップ１０９で元の物理ブロックを消去して終了する。
【００３４】
【発明の効果】
以上説明したように本発明によると、フラッシュメモリの記憶領域を仮想的なセクタ、仮想的なクラスタで分割してハードディスク装置に対応させたので、フラッシュメモリのファイル管理をその処理を変更することなくＦＡＴファイルシステムで効率良く実現することができ、かつ、仕様の異なるフラッシュメモリ素子を共通に管理することができる。また、管理テーブルを用いることで、ブロックの物理アドレス、そのブロックとそのブロック内の各クラスタの使用状況、ブロック内の各クラスタの物理アドレス、クラスタやブロックの良否を少ないメモリで管理することができ、効率的にファイル管理を行うことができる。
【図面の簡単な説明】
【図１】本発明が用いられる情報処理装置の構成を示す図。
【図２】本発明のフラシュメモリファイルシステムの層構成イメージを示す図。
【図３】本発明のフラシュメモリファイルシステムのメモリマップの一例を示す図。
【図４】本発明のアドレス管理テーブルの説明図。
【図５】本発明のアドレス管理テーブルの説明図。
【図６】本発明で上書きの場合のアドレス管理テーブル変化を示す説明図。
【図７】本発明のクラスタ管理テーブルの説明図。
【図８】本発明でのデータの書き込み方法を示すフローチャート。
【図９】ハードディスクの記録単位を示す説明図。
【図１０】従来のディレクトリ構造を示す説明図。
【図１１】従来のＦＡＴを示す説明図。
【図１２】従来のデータの書き込み手順を示すフローチャート。
【符号の説明】
１、１１　　ＣＰＵ
２　　ＲＡＭ
３　　ＲＯＭ
４、１２　　フラッシュメモリ
５　　Ｉ／Ｏインタフェース
６　　バス
１３　　アドレスバス
１４　　データバス
１６　　ファイルシステム
１７　　ユーザプログラム
２１　　トラック
２２　　セクタ
３１　　仮想セクタ
３２　　仮想クラスタ
３３、５３　　物理ブロック
３４　　論理ブロック
４１　　アドレス管理テーブル
４２　　前半部分
４３　　後半部分
５１　　物理セクタ
５２　　物理クラスタ
５４−１、５４−２　　クラスタ管理テーブル
【図１】
2004038237.tif 000004
【図２】
2004038237.tif 000005
【図３】
2004038237.tif 000006
【図４】
2004038237.tif 000007
【図５】
2004038237.tif 000008
【図６】
2004038237.tif 000009
【図７】
2004038237.tif 000010
【図８】
2004038237.tif 000011
【図９】
2004038237.tif 000012
【図１０】
2004038237.tif 000013
【図１１】
2004038237.tif 000014
【図１２】
2004038237.tif 000015