JP3472008B2 - フラッシュメモリ管理方法 - Google Patents

フラッシュメモリ管理方法

Info

Publication number
JP3472008B2
JP3472008B2 JP00505896A JP505896A JP3472008B2 JP 3472008 B2 JP3472008 B2 JP 3472008B2 JP 00505896 A JP00505896 A JP 00505896A JP 505896 A JP505896 A JP 505896A JP 3472008 B2 JP3472008 B2 JP 3472008B2
Authority
JP
Japan
Prior art keywords
block
card
memory card
spare
flash memory
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
Application number
JP00505896A
Other languages
English (en)
Other versions
JPH09198884A (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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP00505896A priority Critical patent/JP3472008B2/ja
Publication of JPH09198884A publication Critical patent/JPH09198884A/ja
Application granted granted Critical
Publication of JP3472008B2 publication Critical patent/JP3472008B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Read Only Memory (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明はフラッシュメモリ
管理方法に関し、特に不良ブロックを代替するためのス
ペアブロックが用意されたフラッシュEEPROMを有
するフラッシュメモリ装置の管理方法に関する。
【0002】
【従来の技術】従来、パーソナルコンピュータやワーク
ステーション等のデータ処理装置の外部記憶装置として
は、通常、ハードディスク装置やフロッピーディスク装
置などのディスク装置が用いられていた。
【0003】最近では、それらディスク装置に代わる外
部記憶装置として、フラッシュEEPROMを内蔵した
フラッシュメモリカードが使用されるようになり、カー
ド装着用のスロットが標準装備されたパーソナルコンピ
ュータや、パーソナルコンピュータに外付けされて使用
されるメモリカードリーダ/ライタなどの周辺装置も開
発されている。
【0004】フラッシュメモリカードは携帯性に富んで
おり、またフロッピーディスクよりも大きな容量のファ
イルを取り扱う事ができる。このため、特にノートブッ
ク型のポータブルコンピュータ、PDA、電子スチルカ
メラなどの外部記憶装置として有効である。
【0005】
【発明が解決しようとする課題】しかし、フラッシュメ
モリカードは、書き換え回数の制限という固有の問題を
有しており、新たなメモリ技術の採用によって改良が続
けられてはいるものの、外部記憶装置として使用する上
では、データ記憶の信頼性の面で完全ではない。このた
め、フラッシュメモリカードにおいては、データのリー
ド/ライトだけでなく、データの信頼性についてもソフ
トウェアで管理することが必要である。
【0006】通常、フラッシュメモリカードにおいて
は、スペアブロックが用意されており、リード/ライト
エラーなどが発生した不良ブロックをスペアブロックに
よって代替することによって信頼性の向上が図られてい
る。ところが、従来では、未使用のスペアブロックが残
っているか否かは実際に不良ブロックが発生してその代
替処理を開始する段階になるまで検知することができな
い。このため、もし全てのスペアブロックが使用されて
しまった後において不良ブロックが生じると、その時点
で代替不能が初めて検知され、それによってカードアク
セスが一切不能とされてしまう。このため、ユーザには
カードアクセスが禁止された時点でカード不良が通知さ
れることになり、この時点では、すでにデータのバック
アップ作業などを行うことはできない状態である。
【0007】この発明はこのような点に鑑みてなされた
ものであり、代替領域の飽和をいち早く検知できるよう
にし、フラッシュメモリの信頼性を十分に向上させるこ
とが可能なフラッシュメモリ管理方法を提供することを
目的とする。
【0008】
【課題を解決するための手段】この発明は、データ処理
装置のカードスロットに装着可能に構成され、不良ブロ
ックを代替するためのスペアブロックが用意されたフラ
ッシュEEPROMを有するメモリカード、を管理する
フラッシュメモリ管理方法において、前記フラッシュE
EPROMの不良ブロックとその代替のために使用され
たスペアブロックとの関係を示すカード管理情報を前記
メモリカードから読み取り、不良ブロックをスペアブロ
ックによって代替する度に前記カード管理情報を書き換
え、その書き換え結果に基づいて代替可能なスペアブロ
ックが残っているか否かを検出し、代替可能なスペアブ
ロックが無くなったことを検出したとき、前記メモリカ
ードに対するアクセス形態をリードオンリーに制限する
とともに、前記メモリカードの前記カード管理情報に、
前記メモリカードのアクセスモードを示す情報として前
記メモリカードがリードオンリーモードであることを示
す情報を設定することを特徴とする。
【0009】このフラッシュメモリ管理方法において
は、メモリカードから読み取ったカード管理情報をブロ
ック代替処理を行う度に書き換え、その結果に基づいて
代替可能なスペアブロックが残っているか否かが調べら
れる。もし代替可能なスペアブロックが無くなったこと
が検出されたならば、その時点で、メモリカードの延命
のための手続きとして、前記メモリカードに対するアク
セス形態をリードオンリーに制限するとともに、前記メ
モリカードの前記カード管理情報に、前記メモリカード
のアクセスモードを示す情報として前記メモリカードが
リードオンリーモードであることを示す情報を設定
る、という処理が実行される。よって、代替不能による
フラッシュメモリ装置の不良が発生する前に、代替領域
の飽和をいち早く検知できるようになり、フラッシュメ
モリの信頼性を十分に向上させることが可能となる。
【0010】フラッシュメモリ装置の延命のための手続
きとしては、ユーザへの通知の他、アクセス形態をリー
ドオンリーに制限する、代替処理を禁止してその代わり
に新たな不良ブロックに対するアクセス権を排除する、
スペアブロック以外の他のブロックをスペアブロックと
して割り当ててスペアブロック数を増加させる等の処理
を行うことが好ましい。これにより、フラッシュメモリ
装置の延命を図ることができる。
【0011】
【発明の実施の形態】以下、図面を参照して、この発明
の実施形態を説明する。図1には、この発明の一実施例
に係るフラッシュメモリ管理方法によって制御されるフ
ラッシュメモリカード11の構成とそのカード11をア
クセス制御するポータブルパーソナルコンピュータのハ
ードウェアおよびソフトウェア構成が示されている。
【0012】フラッシュメモリカード11はJEIDA
/PCMCIAに準拠した物理的および電気的仕様を持
つPCカードであり、他のPCカード12と同様に、パ
ーソナルコンピュータのPCカードホストアダプタ13
が提供するカードスロットに取り外し自在に装着され
る。
【0013】フラッシュメモリカード11の認識および
アクセスは、パーソナルコンピュータのシステムメモリ
にロードされて実行されるフラッシュメモリカードドラ
イバ14、カードサービス15、ソケットサービス1
6、およびメモリテクノロジトライバ17などによって
制御される。
【0014】フラッシュメモリカードドライバ14は、
フラッシュメモリカード11に対応したデバイスドライ
バプログラムであり、JEIDA/PCMCIAで規定
されているクライアントドライバとして使用される。こ
のフラッシュメモリカードドライバ14は、オペレーテ
ィングシステム18やアプリケーションプログラム19
からのコマンドをフラッシュメモリカード11用のコマ
ンド(ページライトコマンド、ページリードコマンド、
ブロックイレーズコマンドなど)に変換して、フラッシ
ュメモリカード11をアクセス制御する。
【0015】また、フラッシュメモリカードドライバ1
4は、フラッシュメモリカード11の信頼性を向上させ
るために、フラッシュメモリカード11に対するアクセ
スで発生したエラー履歴の管理機能や、不良ブロックの
代替機能、さらには代替領域超過の際のカード延命機能
などを有している。
【0016】カードサービス15、ソケットサービス1
6、およびメモリテクノロジドライバ17は、それぞれ
JEIDA/PCMCIAによって規定されたドライバ
プログラム群であり、PCカードのリソース管理、PC
カード認識などに利用される。
【0017】フラッシュメモリカード11は、パーソナ
ルコンピュータの2次記憶装置として利用されるPCカ
ードであり、アトリビュートメモリ111と、コモンメ
モリ112を内蔵している。
【0018】アトリビュートメモリ111は、EEPR
OMなどから構成される不揮発性メモリであり、ここに
はカード属性情報が格納されている。カード属性情報
は、コモンメモリ112のメモリの種類、メモリサイ
ズ、アクセス速度等の情報と、フラッシュメモリカード
11の用途(ディスクとして使用するか、メモリとして
使用するかなど)に関する情報を含んでいる。
【0019】さらに、このフラッシュメモリカード11
においては、コモンメモリ112に使用されているNA
ND型フラッシュEEPROMのイレーズ限界回数を示
す値もカード属性情報の1つとしてアトリビュートメモ
リ111に格納されている。
【0020】コモンメモリ12は、パーソナルコンピュ
ータから供給されるユーザデータなどを記憶するための
メモリデバイスであり、複数のNAND型フラッシュE
EPROMから構成されている。
【0021】NAND型フラッシュEEPROMにおい
ては、書き込みや消去を行う際に扱うデータ量に最低単
位が定まっており、消去はブロック単位で実行され、デ
ータ書き込み、および読み出しはページ単位で実行され
る。
【0022】この実施形態では、NAND型フラッシュ
EEPROMとして、例えば、16MビットのNAND
型フラッシュEEPROMが使用される場合を想定す
る。この16MビットのNAND型フラッシュEEPR
OMは、図2に示されているように、メモリセルアレイ
21とデータレジスタ22を備えている。メモリセルア
レイ21は、8K行×264列×8ビットのメモリ構成
を有し、512個のブロックに分割されている。データ
消去はこのブロック単位で実行することができる。各ブ
ロックは16ページ(行)から構成されており、各ペー
ジは、256バイトのデータ記憶領域と8バイトの冗長
領域を備えている。
【0023】データの書込みと読み出しは、256+8
バイトのデータレジスタ22を介して、ページ単位(2
56+8バイト)で実行される。また、指定したページ
内の冗長領域(8バイト)だけをリード/ライトアクセ
スすることもできる。
【0024】図1のコモンメモリ112のデータ記憶空
間は、多数のブロックを含むユーザデータ格納領域と、
不良ブロック代替用のいくつかのスペアブロックを含む
スペアブロック領域と、カード管理情報を記憶するブロ
ックを含むカード管理情報領域とに分割されている。
【0025】カード管理情報は、データ書き込みや消去
などを正常に実行することができない不良ブロックの物
理ブロック番号(物理ブロックアドレス)を管理する不
良ブロック管理テーブル、およびスペアブロックの物理
ブロック番号毎にそれが代替する不良ブロックの物理ブ
ロック番号(物理ブロックアドレス)を管理するスペア
ブロック管理テーブルなどを含んでいる。
【0026】これら不良ブロック管理テーブルおよびス
ペアブロック管理テーブルの内容を書き換えることによ
り、不良ブロックをスペアブロックによって代替するこ
とができる。すなわち、エラー発生したブロックはその
物理ブロック番号が不良ブロック管理テーブルに登録さ
れることによって不良ブロックとして扱われる。アクセ
ス対象のブロックが不良ブロックならば、スペアブロッ
ク管理テーブルが参照され、これによって代替先のスペ
アブロックが認識される。これによって、不良ブロック
の代りに、スペアブロックがアクセスされる。フラッシ
ュメモリカードドライバ14は、フラッシュメモリカー
ド11の挿入時にそのカード11からカード管理情報を
読み取り、カード管理フラグを作成する。このカード管
理フラグは、代替領域超過をいち早く検知し、その際の
カード延命機能を実現するため等に利用される。
【0027】また、コモンメモリ112においては、各
ページの8バイトの冗長領域は、ページステータス情報
などの管理データの格納に利用されている。この管理デ
ータは、フラッシュメモリカード11の信頼性を高める
ために、前述のフラッシュメモリカードドライバ14に
よって管理されている。
【0028】ページステータス情報は、対応するページ
に対するアクセスで発生したエラー内容を識別するため
の複数のフラグから構成されている。フラッシュメモリ
カードドライバ14は、各冗長領域のフラグを参照する
ことにより、ページ単位でエラー発生履歴などを認識す
ることができる。
【0029】以下、図3を参照して、コモンメモリ11
2上におけるユーザデータおよび管理データの記憶形式
について具体的に説明する。1ページのデータ領域は2
56バイトであるので、フラッシュメモリカード11を
フロッピーディスクまたはハードディスクとして使用す
る場合には、1セクタ分のユーザデータは図示のように
連続する2ページに亙って記憶される。
【0030】各ブロックの先頭ページ(ページ0)の8
バイトの冗長領域には、次のような管理データが格納さ
れる。 ページデータ用LRC(2バイト) イレーズカウンタ(4バイト) イレーズカウンタ用LRC(1バイト) ページステータス情報(1バイト) ページデータ用LRCは、水平冗長検査(LRC)の手
法を利用して、ページ0の256バイトのデータ領域に
格納されたユーザデータ(セクタ0の上位256バイ
ト)を計算することによって得られたエラー訂正符号で
ある。
【0031】このページデータ用LRCは、データライ
ト時に作成され、データリード時に参照される。フラッ
シュメモリカードドライバ14は、その上位ソフトウェ
ア(OS、アプリケーションプログラム)にデータを渡
すときには、ページデータ用LRCを利用して、そのデ
ータの有効性を確認する。
【0032】イレーズカウンタは、対応するブロックの
消去回数(データ書換え回数)を示すものであり、各ブ
ロックの先頭ページにのみ書き込まれる。イレーズカウ
ンタのデータ長は4バイトであり、最大で4G(ギガ)
回数分を表記できる。このように大きなデータ長を確保
したのは、これからのフラッシュメモリデバイス技術の
進歩により、消去限界回数が増えていくことを考慮した
ためである。
【0033】イレーズカウンタの値は、対応するブロッ
クが消去される度に+1カウントアップされる。イレー
ズカウンタの値がアトリビュートメモリ111に格納さ
れている消去限界回数を越えると、そのブロックをスペ
アブロックによって代替するための処理がフラッシュメ
モリカードドライバ14によって実行される。
【0034】アトリビュートメモリ111に格納されて
いる消去限界回数の値は、マージンを確保するために、
フラッシュEEPROM自体の実際の消去限界回数より
も小さな値に設定されている。
【0035】イレーズカウンタ用LRCは、その上位4
バイトのイレーズカウンタから水平冗長検査(LRC)
によって計算されたエラー訂正符号である。イレーズカ
ウンタは、ブロック全体のデータ管理に影響を及ぼす重
要なデータであり、イレーズカウンタ用LRCはそのイ
レーズカウンタの信頼性を担保するために使用される。
【0036】ページステータス情報は対応するページの
状態を示すものであり、その1バイト中の8ビットにそ
れぞれに意味を持たせることにより、対応するページの
状態を8つのフラグによって表す。
【0037】ページ1〜ページ16それぞれの冗長領域
には、ページデータ用LRCとページステータス情報だ
けが格納され、イレーズカウンタおよびイレーズカウン
タ用LRCは格納されない。
【0038】次に、ページステータス情報の詳細を説明
する。ページステータス情報は8つのフラグを持つこと
ができるが、この実施例では、次の5つのフラグが定義
されている。
【0039】プログラムフラグ(b7) b7=0(プログラム済み) =1(未プログラム:消去済み) イレーズ回数オーバーフラグ(b6) b6=0(イレーズ回数がしきい値を超過) ベリファイエラーフラグ(b2) b2=0(リードベリファイエラー) プログラムエラーフラグ(b1) b1=0(プログラムエラー) イレーズエラーフラグ(b0) b0=0(イレーズエラー) 通常状態(工場出荷時も含む)においては、ページステ
ータス情報の1バイトは、FFh(8ビットがすべて
1)で表現される。以下、各フラグの説明を行う。
【0040】プログラムフラグ(b7)は、対応するペ
ージにデータを書き込む場合にブロックイレーズを実行
する必要があるか否かを判断するために使用されるもの
であり、対応するページを含むブロックが消去済で、そ
のページに対する書き込みがまだ実行されてない状態
(プログラムフラグ=1)と、対応するページに対する
書き込みが実行済みである状態(プログラムフラグ=
0)のいずれかを示す。
【0041】消去のみのコマンドが発行された直後か、
初期状態である場合は、プログラムフラグは“1”であ
る。この場合、書き込む際に再度消去する必要は無い。
イレーズ回数オーバーフラグ(b6)は、対応するペー
ジを含むブロックの消去回数がアトリビュートメモリ1
11に記録されている消去限界回数の値を超過している
か否かを示すフラグである。
【0042】すなわち、フラッシュメモリカードデバイ
スドライバ14は、ブロックイレーズを実行する度に対
応するイレーズカウンタの値を+1インクリメントし、
そのインクリメントされたイレーズカウンタの値がアト
リビュートメモリ111の消去限界回数を越えているか
否かを調べる。越えていたならば、該当するブロックに
含まれる全ページの冗長領域、またはそのブロックの先
頭ページの冗長領域に、“0”のイレーズ回数オーバー
フラグがセットされる。また、この場合には、そのブロ
ックはその時点で劣化を起こして無くても不良ブロック
として扱われ、スペアブロックとの代替処理が行われ
る。フラッシュメモリカードデバイスドライバ14は、
各不良ブロックのイレーズ回数オーバーフラグを参照す
ることにより、実際にエラーを起こしているブロック
か、イレーズ回数オーバーによって不良として扱われて
いるブロックかを識別することができる。
【0043】ベリファイエラーフラグ(b2)は、対応
するページに対するページリード時に実行されるリード
ベリファイ作業でエラーが発生したか否かを示すフラグ
である。
【0044】すなわち、フラッシュメモリカードデバイ
スドライバ14は、指定されたページからデータをリー
ドした後、そのリードデータの正当性を対応するページ
データLRCを利用して検証する。リードデータにエラ
ーが検出されたならば、ベリファイエラーフラグが
“0”にセットされる。この場合、ページリードはリト
ライされるが、リトライ処理で再度エラーが発生される
と、そのページを含むブロックは不良ブロックとして扱
われ、スペアブロックとの代替が行われる。ベリファイ
エラーが原因で代替された不良ブロックは、以降、使用
されることはない。
【0045】プログラムエラーフラグ(b1)は、対応
するページに対するページライト(プログラム)実行後
にそのライトデータの正当性を検証するために実行され
るプログラムベリファイ作業でエラーが発生したか否か
を示すフラグである。
【0046】すなわち、フラッシュメモリカードデバイ
スドライバ14は、指定されたページにライトデータを
書き込んだ後、そのページからデータを一旦リードし
て、ライトデータと比較する。不一致であれば、プログ
ラムエラーフラグが“0”にセットされる。この場合、
ページライトはリトライされるが、リトライ処理で再度
エラーが発生されると、そのページを含むブロックは不
良ブロックとして扱われ、スペアブロックと代替され
る。この代替処理では、不良ブロックの内容が読み出さ
れてスペアブロックにコピーされた後、スペアブロック
に対するライトデータの書き込みが実行される。プログ
ラムエラーが原因で代替された不良ブロックは、以降、
使用されることはない。
【0047】イレーズエラーフラグ(b0)は、対応す
るページを含むブロックに対する消去動作が正常に実行
されたか否かを示すフラグである。すなわち、フラッシ
ュメモリカードデバイスドライバ14は、指定されたブ
ロックに対するイレーズ処理を実行した後、イレーズ処
理が正常に実行されたか否かを調べる。イレーズが失敗
した場合には、そのブロックに含まれる全ページの冗長
領域、またはそのブロックの先頭ページの冗長領域に、
“0”のイレーズエラーフラグがセットされる。この場
合、ブロックイレーズ処理はリトライされるが、リトラ
イ処理で再度エラーが発生されると、そのブロックは不
良ブロックとして扱われ、スペアブロックと代替され
る。イレーズエラーが原因で代替された不良ブロック
は、以降、使用されることはない。
【0048】図4には、フラッシュメモリカードドライ
バ14によって作成および管理されるカード管理フラグ
の構成が示されている。カード管理フラグは8ビットの
フラグを用いて実現されており、それら8ビットによっ
てカードの内部状態が表現される。カード管理フラグの
各ビットの意味は以下のとおりである。
【0049】「ビット0 カード検知フラグ」カードが
挿入されたことを検出した時点で有効(ビットが1)と
なり、システム内で次の挿抜のイベントが起きるまで、
このフラグは維持される。ソフトウェア内部でカードの
存在を確認するプロセスにおいて、このフラグが有効の
間には、ハードウェアに直接応答することなく処理が行
えるようになる。
【0050】このフラグはカードの抜去のイベントや、
他のプロセス実行時にカードが変更されたことを検出し
ない限り、リセットは行われない。 「ビット1 カード認定状態フラグ」カードがアクセス
可能になる設定がすべて完了の場合、フラグを有効とす
る。このフラグを参照することにより、その時点のカー
ドが設定をするべきなのかが判別可能になる。このフラ
グが無効である場合に他のフラグも参照の上、ソフトウ
ェアは何をするべきなのかを判断することが可能にな
る。
【0051】「ビット2 カード内の管理情報の読み込
みフラグ」動的にソフトウェア内に持つデータ以外に、
カードのデータ領域にそれぞれのカードの状態を表す管
理情報がある場合、その管理情報をシステムのメモリ領
域に読み込みが完了したことを示すフラグである。この
フラグが有効である場合、カード内部の情報を毎回読み
にいく必要はなく、メモリ上の管理情報を参照して動作
することが可能になる。ソフトウェアのプロセスの処理
時間向上のために用いられるフラグである。また、管理
情報の内容の更新が行われる場合も、このフラグとビッ
ト00を参照することにより直接カード内部から情報を
読み込むのではなく、メモリを利用することも可能にな
る。
【0052】「ビット3 不良ブロック管理テーブルの
有効/無効フラグ」フラッシュEEPROMを搭載した
メモリカードにおいて、カード使用中に半導体の劣化に
よる不良ブロックが発生する。その不良ブロックを管理
するテーブルが動作上で存在する場合に、管理するその
不良ブロック管理テーブルが今アクセスしているカード
に対して、有効なのかを判別するためのフラグである。
これにより、不良ブロックとして登録されているアドレ
スへのアクセス要求がきた場合に、即座にエラーを返す
ことが可能になる。
【0053】「ビット4 カード全体の状態フラグ」こ
のフラグが有効な場合、現時点でカードに問題が無いこ
とを判別することが可能になる。このフラグが無効であ
る場合、一切の外部からのカードへのアクセスに対して
即座にエラーを返すことが可能になる。このフラグはカ
ード挿入直後のすべての初期化プロセスにおいて、問題
なく終了した場合に有効となる。
【0054】「ビット5 代替ブロック超過フラグ」カ
ード内部に不良ブロック発生時に代替するための領域と
して設けていたブロックがすべて使われていることを示
すフラグである。このフラグが有効になっているカード
に対し、その後無理な書き込みや消去を繰り返し不良カ
ードとなってしまう前に、カードをリードオンリーの状
態にするなどのカード延命処置をとることができる。そ
れにより大きな範囲でのデータの損失にならないように
制御することが可能になる。
【0055】「ビット6 予約領域とし0をセット」 「ビット7 カード管理情報更新リクエストフラグ」メ
モリ内に読み込んだカードの管理情報の内容が更新さ
れ、カード内のデータ領域に書き込む必要が生じた場合
にフラグを有効とする。このフラグが有効であったこと
を検出した場合に、管理情報を更新するプロセスに進
む。このフラグが有効にならない限り、メモリに読み込
んだ管理情報はカードの挿抜で消去されたり上書きされ
てもカードの管理上、問題が無いということになる。
【0056】このような8ビット(1バイト)分のデー
タにより、カード内の数々の状態を表記できる。本実施
形態では、このフラグをフラッシュメモリカードドライ
バ14内部に持つことを前提に説明を行う。
【0057】図5には、カード管理情報のデータ形式が
示されている。このカード情報は、本来データ領域のど
の領域に存在しても良いが、本実施形態ではカード11
の最終消去ブロックに記述されている。 1)チェックビット列(オフセット 0h) チェックビット列はカード管理情報の正当性を示すもの
で、16バイトの固定値である。
【0058】カード管理情報は、カードの最終ブロック
に格納されているが、もしも最終ブロックが不良ブロッ
クだった場合、その一つ前のブロックに格納される。こ
の場合、00hがカード管理情報内のチェックビット列
の場所に書き込まれる。
【0059】チェックビット列が正しく読み込まれなか
った場合、そのカード管理情報は無効と認識され、その
前のブロックに新しいカード管理情報を作成する。 2)カードバージョン情報(オフセット 10h) バージョン情報は2バイトでカードの仕様バージョンを
示す。
【0060】Byte0:カードメジャーバージョン 現在のカードメジャーバージョンは01hである。 Byte1:カードマイナーバージョン 現在のカードマイナーバージョンは00hである。 3)総ブロック数(オフセット 12h) カードの総ブロック数を示す。この情報はアトリビュー
トメモリに記述されているメモリ容量から計算される総
ブロック数と一致していなければならない。総ブロック
数はカードのメモリ容量2Mバイト当たり512であ
る。
【0061】Byte0:総ブロック数(LSB) Byte1:総ブロック数 Byte2:総ブロック数 Byte3:総ブロック数(MSB) データ領域の総ブロック数は、以下の計算式で得ること
がでる。
【0062】データ領域総ブロック数=総ブロック数−
(総スペアブロック数+カード管理情報ブロックの総
数) 4)ブロックサイズ(オフセット 16h) ブロック当たりのバイト数を示す。この値は4096の
固定値である。
【0063】 Byte0:カードのブロックサイズ(LSB)00H Byte1:カードのブロックサイズ(MSB)10H 5)ページサイズ(オフセット 18h) ページ当たりのバイト数を示す。この値は256の固定
値である。
【0064】 Byte0:カードのページサイズ(LSB)00H Byte1:カードのページサイズ(MSB)01H 6)不良ブロックテーブル形式(オフセット 1Eh) カード管理情報内の不良ブロックテーブルのフォーマッ
トを示す。
【0065】 Byte0:ビット 7−2 予約00h Bit 1−0 不良ブロックテーブルエントリサイズ 00 予約 01 予約 10 不良ブロックテーブルの各エントリサイズは2バイト 11 予約 Byte1:予約00h 7)不良ブロックテーブルオフセット(オフセット 2
0h) 不良ブロックテーブルの位置を示す。カード管理情報ブ
ロックの先頭からのオフセットで表す。
【0066】Byte0:不良ブロックテーブルオフセ
ット(LSB) Byte1:不良ブロックテーブルオフセット(MS
B) 8)不良ブロックテーブルエントリ数(オフセット 2
2h) 不良ブロックテーブルのエントリ数を示す。カードデバ
イスドライバがサポートできる不良ブロックテーブルエ
ントリの最大値は512である。
【0067】Byte0:不良ブロックテーブルエント
リ数(LSB) Byte1:不良ブロックテーブルエントリ数(MS
B) 9)登録不良ブロック数(オフセット 24h) 不良ブロックテーブルに登録されている不良ブロックの
数を示す。
【0068】Byte0:登録されている不良ブロック
エントリ数(LSB) Byte1:登録されている不良ブロックエントリ数
(MSB) 出荷時に不良ブロックエントリが登録されている可能性
もある。 10)スペアブロックテーブル形式(オフセット 2C
h) カードのスペアブロックテーブルのフォーマットを示
す。
【0069】 Byte0:ビット 7−2 予約00h Bit1−0 スペアブロックテーブルエントリサイズ 00 予約 01 予約 10 スペアブロックテーブルの各エントリサイズは2バイト 11 予約 Byte1:予約00h スペアブロックテーブル形式は0002hの固定値であ
る。 11)スペアブロックテーブルオフセット(オフセット
2Eh) スペアブロックテーブルの位置をカード管理情報ブロッ
クの先頭からのオフセットで示す。
【0070】Byte0:スペアブロックテーブルオフ
セット(LSB) Byte1:スペアブロックテーブルオフセット(MS
B) 12)スペアブロックテーブルエントリ数(オフセット
30h) スペアブロックテーブルに格納可能なエントリ数を示
す。代替領域が存在しない場合は0とし、エントリ数の
最大値は512である。スペアブロックテーブルエント
リは、カードの総容量に対しての比率(1〜5%)で決
定する。エントリ数と一致するだけのスペアブロック数
が存在する必要がある。
【0071】カード管理情報が格納されたブロックが不
良になった場合、代替領域の最後にカード管理情報を移
し、総スペアブロックテーブルエントリ数も1減らす必
要がある。
【0072】出荷時には代替領域を確保していないた
め、総スペアブロックテーブルエントリ数は0である。 Byte0:スペアブロックテーブルエントリ数(LS
B) Byte1:スペアブロックテーブルエントリ数(MS
B) 13)使用スペアブロック数(オフセット 32h) 使用中のスペアブロックの数を示す。ここに記してある
数はスペアブロック領域の不良ブロックも含む。出荷時
にはスペアブロック領域が確保されていないため、この
数値は0になる。
【0073】 Byte0:使用済みのスペアブロック数(LSB) Byte1:使用済みのスペアブロック数(MSB) 14)カード管理情報格納ブロック数(オフセット 3
8h) カード管理情報として使用されている物理ブロックの数
を示す。カード管理情報を格納可能な最大ブロック数は
50である。
【0074】Byte0:カード管理情報格納ブロック
数 例:0…無効(ここに0が記述されていることはありえ
ない) 1…カード管理情報が1つの物理ブロックに格納されて
いる。
【0075】 2…カード管理情報が2つの物理ブロックに格納されて
いる。 : Byte1:予約00h 一つのカード管理情報が複数の物理ブロックにまたがる
ことは可能である。例えば、不良ブロックテーブルとス
ペアテーブルが違う物理ブロックに格納できる。ここに
登録されている数値は物理ブロックサイズに関連する。
カードの場合、この数値は常に1である。 15)ファイルフォーマット文字列(オフセット 3E
h) 特定のファイルフォーマットでカードを利用するための
識別情報を示す。ここは8バイトのキャラクタ文字列で
表記され、カードのフォーマットを示す。以下の文字列
は既に定義されている。
【0076】“ ”空白 カードが特定のファイルフ
ォーマットでフォーマットされていないことを示す。
(工場出荷時) “DOS FAT”DOSのFATフォーマットでフォ
ーマットされていることを示す。 16)アプリケーション/機器情報文字列(オフセット
46h) 特定のアプリケーション、または機器で利用するための
識別情報を示す。ここは16バイトのキャラクタ文字列
で、16文字以内であればどう記述してもかまわない。
しかし、以下の文字列は既に定義されている。
【0077】“ ”(16個の空白)特定のア
プリケーション/機器の指定無し(工場出荷時) 17)不良ブロックテーブル(オフセット 400h) 不良ブロックを登録するためのテーブルである。不良ブ
ロックの物理ブロック番号が格納される。物理ブロック
番号はカードの先頭ブロックを0とした値である。不良
ブロックエントリは、512エントリが用意され、2バ
イトでブロック番号を各エントリに記述する。
【0078】未使用不良ブロックエントリの領域はFF
FFhである。これは、エントリ内に何も記述されてい
ないことを表す。FFFFh以外の数値が記述されてい
る場合は、使用済みということになる。使用済みのエン
トリ領域に未使用の領域があってはならない。必ず未使
用領域は使用済み領域の後になければならない。不良ブ
ロック番号は問題が起きたときにテーブル内に記述され
るため、不良ブロックエントリ内の番号は順不同であ
る。記述されているブロック数は、登録不良ブロック数
領域に記述されている必要がある。
【0079】 Entry 0:Byte0:Bad block#0(LSB) Byte1:Bad block#0(MSB) Entry 1:Byte0:Bad block#1(LSB) Byte1:Bad block#1(MSB) : Entry 511:Byte0:Bad block#511(LSB) Byte1:Bad block#511(MSB) コメント:FFFFh=空き 18)スペアブロックテーブル(オフセット 800
h) データ領域中に発生した不良ブロックをスペアブロック
に代替したことを示すテーブルである。スペアブロック
テーブルは先頭から使用され、テーブル内には不良が発
生した物理ブロック番号が登録される。
【0080】不良ブロックテーブルは最大512のエン
トリで構成され、各エントリには不良ブロック番号を格
納する。スペアブロックの最初のエントリを0とし、対
応するスペアブロックテーブルエントリに代替される不
良ブロック番号を格納する。
【0081】未使用不良ブロックテーブルエントリの内
容はFFFFhである。そしてこれはエントリ内に何も
記述されていないことを表す。スペアブロックが不良ブ
ロックである場合は対応するスペアブロックテーブルエ
ントリの内容はFFFEhである。そしてこのブロック
はスペアブロックとして使用できない。0000h〜F
FFDhまでの値が、スペアブロックとして有効に使わ
れていることを表す。
【0082】 Entry 0:Byte0:Bad block#0(LSB) Byte1:Bad block#0(MSB) Entry 1:Byte0:Bad block#1(LSB) Byte1:Bad block#1(MSB) : Entry 511:Byte0:Bad block#511(LSB) Byte1:Bad block#511(MSB) コメント:FFFFh=空き 19)チェックサム(オフセット FFFh) 2バイトのチェックサムは以下の計算方法で算出され
る。
【0083】・管理情報領域の先頭からチェックサムの
直前までの内容を16ビット長で加算する。 ・その結果の下位16ビットの2の補数を格納する。
【0084】つまり、カード管理情報ブロックの先頭か
ら最後まで16ビットで加算した結果が00hであれ
ば、正常なチェックサムである。 20)予約(00h) 将来の使用のための予約領域で00hに初期化された領
域である。 21)予約(FFh) 将来の使用のための予約領域でFFhに初期化された領
域である。
【0085】次に、図6〜図8のフローチャートを参照
して、フラッシュメモリカードデバイスドライバ14に
よって実行されるページリード、ページライト、および
ブロックイレーズ処理について説明する。
【0086】まず、図6のフローチャートを参照して、
OS18やアプリケーションプログラム19からリード
コマンドが発行された場合に実行されるページリード処
理の手順を説明する。
【0087】OS18やアプリケーションプログラム1
9からリード要求コマンドを受け取ると、フラッシュメ
モリカードデバイスドライバ14は、ページリージコマ
ンドを発行することによって、リード要求コマンドによ
って指定されたページに対するリードアクセスを開始
し、そのページから256バイトのユーザデータと8バ
イトの管理データを同時にリードする(ステップS10
1)。
【0088】この後、フラッシュメモリカードデバイス
ドライバ14は、リードされたページデータに含まれる
256バイトのユーザデータに従ってLRCを計算し
(ステップS102)、その計算されたLRCと、リー
ドされたページデータに含まれるページデータ用LRC
との一致の有無に従ってページリードが成功したか否か
を判断する(ステップS103)。
【0089】計算されたLRCが、リードされたページ
データに含まれるページデータ用LRCと一致したなら
ば、ページリードが正常に実行されたことが確認され、
リードされたページデータに含まれる256バイトのユ
ーザデータが有効データとして、OS18やアプリケー
ションプログラム19に渡される。
【0090】一方、不一致であれば、ページリードが失
敗したと認識され、ベリファイエラーフラグが“0”に
セットされた後、ページリードがリトライされる(ステ
ップS105)。このリトライで再度リード処理のエラ
ーが発生されると、フラッシュメモリカードデバイスド
ライバ14は、ブロック代替処理を行う(ステップS1
06)。
【0091】このブロック代替処理では、カード11か
ら読み出してメモリに格納されているカード管理情報の
スペアブロック管理テーブルが書き替えられ、エラー発
生したブロックの物理ブロック番号が所定のスペアブロ
ックに対応するエントリに登録される。この後、フラッ
シュメモリカードデバイスドライバ14は、エラー発生
したブロックの物理ブロック番号を不良ブロックテーブ
ルに登録してそれを不良ブロックにする(ステップS1
07)。また、ここでは、使用スペアブロック数が+1
され、これによって代替ブロック超過が発生するかどう
かが調べられる。代替ブロック超過の場合の処理の詳細
は、図11を参照して後述する。
【0092】これらステップS106,S107の処理
により、以降は、不良ブロックを指定するブロック番号
がスペアブロックのブロック番号に変換され、不良ブロ
ックの代りに、スペアブロックがアクセスされることに
なる。
【0093】なお、ステップS106とS107はどち
らを先に実行しても良い。次に、図7のフローチャート
を参照して、OS18やアプリケーションプログラム1
9からライトコマンドが発行された場合に実行されるペ
ージライト処理の手順を説明する。
【0094】OS18やアプリケーションプログラム1
9からライト要求コマンドを受け取ると、フラッシュメ
モリカードデバイスドライバ14は、まず、冗長領域だ
けをリードする専用コマンドをフラッシュEEPROM
に発行して、ライトアクセス対象のページから8バイト
の管理データをリードする(ステップS201)。次い
で、フラッシュメモリカードデバイスドライバ14は、
リードした管理データに含まれるプログラムフラグを参
照して、該当するページが消去済か否かを調べる(ステ
ップS202)。
【0095】該当するページが消去済で無い(プログラ
ムフラグ=“1”)ならば、フラッシュメモリカードデ
バイスドライバ14は、ステップS205以降のページ
ライト処理の実行に先だって、次の処理を行う。
【0096】すなわち、フラッシュメモリカードデバイ
スドライバ14は、まず、ライト対象のページを含むブ
ロックに対するイレーズ処理を実行し(ステップS20
3)、その後、ステップS201でリードした管理デー
タに含まれるイレーズカウンタの値を+1カウントアッ
プする(ステップS204)。
【0097】このようにしてプログラム可能状態になる
と、フラッシュメモリカードデバイスドライバ14は、
256バイトのライトデータからページデータ用LRC
などを計算によって求め、256バイトのライトデータ
と8バイトの管理データを含むページライトデータを生
成する(ステップS205)。
【0098】次に、フラッシュメモリカードデバイスド
ライバ14は、ページライトコマンドを発行してページ
ライトデータのライトアクセスを実行し(ステップS2
06)、その後、書き込んだデータを即座にフラッシュ
EEPROMから読み出して、それをページライトデー
タと比較するライトベリファイを実行する(ステップS
207)。
【0099】リードデータとページライトデータが一致
せず、ページライトが失敗したと判断されると、フラッ
シュメモリカードデバイスドライバ14は、プログラム
エラーフラグを“0”にセットした後、ページライト処
理をリトライする(ステップS209)。このリトライ
で再度ページライト処理のエラーが発生されると、フラ
ッシュメモリカードデバイスドライバ14は、ブロック
代替処理を行う(ステップS215)。
【0100】このブロック代替処理では、まず、エラー
発生したブロックの記憶内容がそれを代替するスペアブ
ロックにコピーされた後、ライトデータがスペアブロッ
クに書き込まれる。この後、カード管理情報のスペアブ
ロックテーブルが書き替えられて、エラー発生したブロ
ックの物理ブロック番号がそれを代替するスペアブロッ
クのエントリに登録される。この後、フラッシュメモリ
カードデバイスドライバ14は、エラー発生したブロッ
クの物理ブロック番号を不良ブロック管理テーブルに登
録してそれを不良ブロックにする(ステップS21
6)。また、ここでは、使用スペアブロック数が+1さ
れ、代替ブロック超過が発生するかどうかが調べられ
る。
【0101】これらステップS215,S216の処理
により、以降は、不良ブロックの代りに、スペアブロッ
クがアクセスされることになる。なお、ステップS10
6とS107はどちらを先に実行しても良い。
【0102】リードデータとページライトデータが一致
し、ページライトが成功したと判断された場合には(リ
トライ成功も含む)、フラッシュメモリカードデバイス
ドライバ14は、ステップS204でカウントアップさ
れたイレーズカウンタの値がアトリビュートメモリ11
1の消去限界回数を越えたか否かを調べる(ステップS
210)。消去限界回数を越えている場合には、フラッ
シュメモリカードデバイスドライバ14は、ブロック代
替処理を行う(ステップS211)。
【0103】このブロック代替処理では、まず、消去限
界回数を越えたブロックの記憶内容がそれを代替するス
ペアブロックにコピーされた後、スペアブロックの先頭
ページのイレーズカウンタの値が初期値(=0)に設定
し直される。そして、スペアブロックテーブルが書き替
えられて、消去限界回数を越えたブロックの物理ブロッ
ク番号がそれを代替するスペアブロックのエントリに登
録される。そして、使用スペアブロック数が+1され、
代替ブロック超過が発生するかどうかが調べられる。
【0104】この後、フラッシュメモリカードデバイス
ドライバ14は、エラー発生したブロックの物理ブロッ
ク番号を不良ブロック管理テーブルに登録してそれを不
良ブロックにし(ステップS212)、次いで、不良ブ
ロックの先頭ページに“0”のイレーズ回数オーバーフ
ラグをセットする(ステップS213)。
【0105】これらステップS212,S213の処理
により、以降は、不良ブロックの代りに、スペアブロッ
クがアクセスされることになる。また、ステップS21
3の処理により、不良ブロックにされた原因(代替の原
因)がイレーズ回数オーバーによるものであることを、
知ることができる。
【0106】なお、ステップS211とS213はどち
らを先に実行しても良い。また、ステップS210〜S
213の処理は、ステップS202でプログラムフラグ
=1であることが検出された場合には実行する必要はな
い。これは、プログラムフラグ=1ならば、イレーズカ
ウンタのカウントアップは実行されないからである。
【0107】次に、図8のフローチャートを参照して、
OS18やアプリケーションプログラム19からイレー
ズコマンドが発行された場合に実行されるブロックイレ
ーズ処理の手順を説明する。
【0108】OS18やアプリケーションプログラム1
9からイレーズコマンドを受け取ると、フラッシュメモ
リカードデバイスドライバ14は、まず、冗長領域だけ
をリードする専用コマンドをフラッシュEEPROMに
発行して、ブロックイレーズ対象の先頭ページから8バ
イトの管理データをリードする(ステップS301)。
次いで、フラッシュメモリカードデバイスドライバ14
は、リードした管理データに含まれるプログラムフラグ
を参照して、該当するページがプログラムされている状
態か否かを調べる(ステップS302)。
【0109】該当するページがプログラムされている
(プログラムフラグ=“0”)ならば、フラッシュメモ
リカードデバイスドライバ14は、ブロックイレーズコ
マンドを発行して、イレーズ対象のブロックに対するイ
レーズ処理を実行し(ステップS303)、その後、ス
テップS301でリードした管理データに含まれるイレ
ーズカウンタの値を+1カウントアップする(ステップ
S304)。
【0110】次いで、フラッシュメモリカードデバイス
ドライバ14は、例えば、イレーズしたブロックの記憶
データが初期値(各ビット=“1”)か否かを調べるこ
となどにより、ブロックイレーズが正常に実行されたか
否かを検出する(ステップS305)。
【0111】ブロックイレーズが失敗したと判断される
と、フラッシュメモリカードデバイスドライバ14は、
イレーズ対象ブロックの先頭ページの冗長領域に“0”
のイレーズフラグをセットした後、ブロックイレーズ処
理をリトライする(ステップS306)。このリトライ
で再度ブロックイレーズ処理のエラーが発生されると、
フラッシュメモリカードデバイスドライバ14は、ブロ
ック代替処理を行う(ステップS312)。
【0112】このブロック代替処理では、まず、スペア
ブロックテーブルが書き替えられて、エラー発生したブ
ロックの物理ブロック番号がそれを代替するスペアブロ
ックのエントリに登録される。この後、フラッシュメモ
リカードデバイスドライバ14は、エラー発生したブロ
ックの物理ブロック番号を不良ブロック管理テーブルに
登録してそれを不良ブロックにする(ステップS31
3)。また、ここでは、使用スペアブロック数が+1さ
れ、代替ブロック超過が発生するかどうかが調べられ
る。
【0113】これらステップS312,S313の処理
により、以降は、不良ブロックの代りに、スペアブロッ
クがアクセスされることになる。なお、ステップS31
2とS313はどちらを先に実行しても良い。
【0114】ブロックイレーズが成功したと判断された
場合には(リトライ成功も含む)、フラッシュメモリカ
ードデバイスドライバ14は、ステップS304でカウ
ントアップされたイレーズカウンタの値がアトリビュー
トメモリ111の消去限界回数を越えたか否かを調べる
(ステップS307)。消去限界回数を越えている場合
には、フラッシュメモリカードデバイスドライバ14
は、ブロック代替処理を行う(ステップS308)。
【0115】このブロック代替処理では、消去限界回数
を越えたブロックの物理ブロック番号がそれを代替する
スペアブロックのエントリに登録される。この後、フラ
ッシュメモリカードデバイスドライバ14は、エラー発
生したブロックの物理ブロック番号を不良ブロックテー
ブルに登録してそれを不良ブロックにし(ステップS3
09)、次いで、不良ブロックの先頭ページに“0”の
イレーズ回数オーバーフラグをセットする(ステップS
310)。また、ここでは、使用スペアブロック数が+
1され、代替ブロック超過が発生するかどうかが調べら
れる。
【0116】これらステップS308,S309の処理
により、以降は、不良ブロックの代りに、スペアブロッ
クがアクセスされることになる。また、ステップS31
0の処理により、不良ブロックにされた原因(代替の原
因)がイレーズ回数オーバーによるものであることを、
知ることができる。なお、ステップS308とS309
はどちらを先に実行しても良い。
【0117】一方、ステップS307で消去限界回数を
越えていないことが検出された場合には、フラッシュメ
モリカードデバイスドライバ14は、イレーズしたブロ
ックの先頭ページに、ステップS304でカウントアッ
プしたイレーズカウンタの値を書き込み、そして各ペー
ジのプログラムフラグを“1”にリセットして終了する
(ステップS311)。
【0118】次に、図9のフローチャートを参照して、
カード初期化時に行われるカード管理フラグの生成処理
について説明する。フラッシュメモリカードデバイスド
ライバ14は、カードサービス15からの通知によって
カード挿入を検知すると、そのカードのアトリビュート
メモリからCISをリードしてそれがフラッシュメモリ
カード11か否かを判断し、フラッシュメモリカード1
1であれば、カード検知フラグb0を1にする(ステッ
プS401)。この後、カード初期化ルーチンを行い、
初期化が全て正常終了したときに、フラッシュメモリカ
ードデバイスドライバ14は、カード状態設定フラグb
1を1にする(ステップS402)。次いで、フラッシ
ュメモリカードデバイスドライバ14は、フラッシュメ
モリカード11からカード管理情報をコンピュータのメ
インメモリ上に読み込み、それが正常終了したときに管
理情報読み込みフラグb2を1にする(ステップS40
3)。
【0119】この後、フラッシュメモリカードデバイス
ドライバ14は、読み込んだカード管理情報の不良ブロ
ックテーブルに記述されている任意の不良ブロックにア
クセスしてページステータスフラグを読み取り、本当に
不良か否かを調べて不良ブロックの有効性を検証する。
ページステータスフラグにエラーフラグがあれば、不良
ブロックテーブルの内容が正しいものと判断して、不良
ブロック管理テーブル有効/無効フラグb3を1にする
(ステップS404)。次いで、フラッシュメモリカー
ドデバイスドライバ14は、カード管理情報のスペアブ
ロックテーブルエントリ数で指定される総スペアブロッ
ク数が、使用スペアブロック数で指定される使用済みス
ペアブロック数よりも多いか否かを調べ、使用済みスペ
アブロック数よりも多ければ代替ブロック超過フラグb
5を0、使用済みスペアブロック数以下であれば代替ブ
ロック超過フラグb5を1にする(ステップS40
5)。
【0120】以上の処理が全て正常に終了してエラーや
代替ブロック超過が無かった場合には、フラッシュメモ
リカードデバイスドライバ14は、カード全体の状態フ
ラグb4を1にする(ステップS406)。
【0121】次に、図10のフローチャートを参照し
て、カード管理情報更新時に行われるカード管理フラグ
の生成処理について説明する。フラッシュメモリカード
デバイスドライバ14は、不良ブロック発生等によって
カード管理情報を更新するとき、カード管理情報更新フ
ラグb7を1にする。
【0122】次に図11のフローチャートを使用して、
カード管理フラグを使用したカード管理の手順を説明す
る。カード11がシステムに挿入され、物理的に挿入さ
れたことを信号で検知後、フラッシュメモリカードデバ
イスドライバ14は、カード管理情報をシステムのメモ
リの領域にロードする(ステップS601)。次に、フ
ラッシュメモリカードデバイスドライバ14は、カード
11の属性情報CISを読みだし、カードの初期化を開
始する(ステップS602)。そして、必要なリソース
を確保した後、カード管理フラグとして管理できるもの
はフラグを立てる。すべての初期化が終了した時点でカ
ード管理フラグのチェックを行い、通常プロセスが実行
可能かどうかを判別する(ステップS603,S60
4)。
【0123】通常プロセスの実行を開始した場合(ステ
ップS605)は、必要な情報をカード管理フラグか、
またはメモリにマップされているカード管理情報を参照
して調べ、カード11の状態の変更があれば必要に応じ
てフラグとカード管理情報を書き換えればよい。このフ
ラグとカード管理情報は、更新されるか、カード11が
抜かれるまで保持される。そして、通常プロセスのアク
セス処理が原因でカード管理情報を更新する必要が生じ
た場合は(ステップS606)、その更新結果に応じて
カード管理フラグの代替領域超過フラグをたてるか否か
が調べられる。
【0124】そして、通常プロセスを実行するのに必要
とするフラグが立っていない場合、以下の処理が行われ
る。ビット5に1が立っている場合(ステップS60
7)、カード11内部に設けた代替領域が飽和している
ため、カード11の延命を図るために、アクセスモード
の切り替えが行われる(ステップS611)。そして、
ユーザに代替領域の飽和を通知することなどによって、
カード11内部のデータを別のメディアに移す作業を実
行させる。そして、カード11が抜かれれば(ステップ
S612)、処理は終了する。
【0125】また、アクセスモードを次のように切り替
えて、カード使用を続行することもできる。 1)アクセスモード1 代替領域が使用中に飽和した場合は、不良カードとする
のを防ぐため、カード11のアクセス形態をリードオン
リーに制限する。この場合、この後、カード11に対す
る消去や書き込みは禁止される。カード11の状態を保
持しないで書き込みや消去を許すと、通常ブロックが不
良となった場合に代替領域不足のため不良カードとなっ
てしまうからである。
【0126】この後、カード11が選択できるアクセス
モードを二つ設けることが可能になる。 2)アクセスモード2 ひとつはカード11の状態をこのままにし、代替領域飽
和後の不良ブロックに対しては一切のアクセス権を許さ
ないものとしてカード容量を減少させながら使用するモ
ードである。
【0127】2)アクセスモード3 もうひとつは、代替領域飽和後にカード11を再度フォ
ーマットする時に代替領域の全容量に対する割合を増や
すことで、再度カードを使用できるようにするモードで
ある。
【0128】この2点のモードの違いは、カード11を
使用しているユーザが使用可能容量を把握している状態
でカード11の利用可能容量の減少を許すか、使えば使
うほど無意識の内にカード容量が減っていくかの違いで
ある。カード11がどのアクセスモードになっていて、
ソフトウェアがどういう動作をすればよいかは、カード
管理情報内に管理するか、前述のカード管理フラグを1
6ビットにしてフラグで管理するなど様々な方法がとれ
る。その管理方法を具体例をあげて説明すると、カード
管理情報では、既に予約としてとってある領域を利用し
て1〜2バイト表現で以下のように設定することが可能
である。 (1バイトで表現する) 00h…通常アクセスモード 01h…代替領域拡張モード 02h…不良セクタ(ブロック)モード FFh…リードオンリーモード また、フラグを拡張する場合であれば上記の1バイト表
記をビットマップにするだけで実現可能である。フラグ
を利用する場合は、8バイトすべてをアクセスモードの
表現に使うのは無駄な部分が生じるため、前記のカード
管理情報の内容を変更する。
【0129】 ビット7 ビット6 0 0 …通常アクセスモード 0 1 …代替領域拡張モード 1 0 …不良セクタ(ブロック)モード 1 1 …リードオンリーモード カード管理情報でアクセスモードを管理する場合は、そ
のカードが管理情報を書き換えない限り、モードが有効
のままになる。逆に管理フラグ内でモードを切り替える
場合は、カードを挿入して抜き去るまでの間だけモード
が有効になる。
【0130】フラッシュメモリカードの場合は、いろい
ろな手法で寿命を伸ばすように努力がされてきている
が、本実施形態の機能を実現すると寿命近辺でのデータ
の損失の防止とPCカードとしての寿命を延長すること
が可能になる。
【0131】また、図11において、他のビットに対す
る処理は以下の通りである。ビット0が1になっていな
い時(ステップS608)、挿入直後にこのフラグが有
効になっていない場合は、フラッシュメモリカードドラ
イバ14の管理すべきPCカードではないか、あるいは
挿入直後に抜き去られたかと判断し、処理を中断する。
【0132】ビット1が1になっていない場合(ステッ
プS609)は、カード11が動作するためのすべての
条件が揃っていない可能性があるため、カード11の初
期化処理を再度実行する必要がある。ビット2、3が同
時に1に立っていない場合(ステップS610)、カー
ド管理情報が正常に読み出せなかったか、カード管理情
報は読み出せたが、必要とする情報がきちんと読み出せ
なかった可能性がある。もう一度読み出し処理を行う
か、カードの初期化からやり直す必要がある。
【0133】ビット4に1が立っている場合、初期化の
段階でカードを不良と判別しているため一切のその後の
アクセスは無効となる。以上説明したように、この実施
形態においては、フラッシュメモリカード11から読み
取ったカード管理情報をブロック代替処理を行う度に書
き換え、その結果に基づいて代替可能なスペアブロック
が残っているか否かが調べられる。もし代替可能なスペ
アブロックが無くなったことが検出されたならば、その
時点で、フラッシュメモリカード11の延命のための手
続きが開始される。よって、代替不能によるフラッシュ
メモリカード11自体の不良が発生する前に、代替領域
の飽和をいち早く検知できるようになり、フラッシュメ
モリの信頼性を十分に向上させることが可能となる。
【0134】また、アクセス形態をリードオンリーに制
限する、代替処理を禁止してその代わりに新たな不良ブ
ロックに対するアクセス権を排除する、スペアブロック
以外の他のブロックをスペアブロックとして割り当てて
スペアブロック数を増加させる等の処理を行うことによ
り、フラッシュメモリカード11の延命を図ることがで
きる。
【0135】
【発明の効果】以上説明したように、この発明によれ
ば、代替領域の飽和をいち早く検知できるようになり、
フラッシュメモリの信頼性を十分に向上させることが可
能となる。
【図面の簡単な説明】
【図1】この発明の一実施形態に係るフラッシュメモリ
カード管理方法を使用したパーソナルコンピュータのハ
ードウェアおよびソフトウェア構成を示すブロック図。
【図2】同実施形態で使用されるフラッシュメモリカー
ドに設けられたフラッシュEEPROMの回路構成を示
す図。
【図3】同実施形態で使用されるフラッシュメモリカー
ドに格納される管理データのデータ構造を説明するため
の図。
【図4】同実施形態で使用されるカード管理フラグのデ
ータ構造を示す図。
【図5】同実施形態で使用されるカード管理情報のデー
タ構造を示す図。
【図6】同実施形態におけるリードアクセス処理の手順
を説明するフローチャート。
【図7】同実施形態におけるライトアクセス処理の手順
を説明するフローチャート。
【図8】同実施形態におけるブロックイレーズ処理の手
順を説明するフローチャート。
【図9】同実施形態においてカード初期化時に行われる
カード管理フラグの生成処理の手順を示すフローチャー
ト。
【図10】同実施形態においてカード管理情報更新時に
行われるカード管理フラグの生成処理の手順を示すフロ
ーチャート。
【図11】同実施形態におけるカード管理フラグを使用
したカード管理の手順を説明するフローチャート。
【符号の説明】
11…フラッシュメモリカード、12…他のPCカー
ド、13…PCカードホストアダプタ、14…フラッシ
ュメモリカードドライバ、15…カードサービス、16
…ソケットサービス、17…メモリテクノロジドライ
バ、18…OS、10…アプリケーションプログラム。
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.7,DB名) G06F 12/16 G06K 19/07 - 19/073 G11C 29/00

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】 データ処理装置のカードスロットに装着
    可能に構成され、不良ブロックを代替するためのスペア
    ブロックが用意されたフラッシュEEPROMを有する
    メモリカード、を管理するフラッシュメモリ管理方法に
    おいて、 前記フラッシュEEPROMの不良ブロックとその代替
    のために使用されたスペアブロックとの関係を示すカー
    ド管理情報を前記メモリカードから読み取り、 不良ブロックをスペアブロックによって代替する度に前
    記カード管理情報を書き換え、その書き換え結果に基づ
    いて代替可能なスペアブロックが残っているか否かを検
    出し、 代替可能なスペアブロックが無くなったことを検出した
    とき、前記メモリカードに対するアクセス形態をリード
    オンリーに制限するとともに、前記メモリカードの前記
    カード管理情報に、前記メモリカードのアクセスモード
    を示す情報として前記メモリカードがリードオンリーモ
    ードであることを示す情報を設定することを特徴とする
    フラッシュメモリ管理方法。
  2. 【請求項2】 不良ブロックを代替するためのスペアブ
    ロックが用意されたフラッシュEEPROMを有するメ
    モリカードが装着可能なメモリカードスロットを備えた
    データ処理装置において、 前記フラッシュEEPROMの不良ブロックとその代替
    のために使用されたスペアブロックとの関係を示すカー
    ド管理情報を前記メモリカードスロットに装着されたメ
    モリカードから読み取る手段と、 不良ブロックをスペアブロックによって代替する度に前
    記カード管理情報を書き換え、その書き換え結果に基づ
    いて代替可能なスペアブロックが前記メモリカードに残
    っているか否かを検出する手段と、 代替可能なスペアブロックが無くなったことを検出した
    とき、前記メモリカードに対するアクセス形態をリード
    オンリーに制限するとともに、前記メモリカードの前記
    カード管理情報に、前記メモリカードのアクセスモード
    を示す情報として前記メモリカードがリードオンリーモ
    ードであることを示す情報を設定する手段とを具備する
    ことを特徴とするデータ処理装置。
JP00505896A 1996-01-16 1996-01-16 フラッシュメモリ管理方法 Expired - Fee Related JP3472008B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP00505896A JP3472008B2 (ja) 1996-01-16 1996-01-16 フラッシュメモリ管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP00505896A JP3472008B2 (ja) 1996-01-16 1996-01-16 フラッシュメモリ管理方法

Publications (2)

Publication Number Publication Date
JPH09198884A JPH09198884A (ja) 1997-07-31
JP3472008B2 true JP3472008B2 (ja) 2003-12-02

Family

ID=11600806

Family Applications (1)

Application Number Title Priority Date Filing Date
JP00505896A Expired - Fee Related JP3472008B2 (ja) 1996-01-16 1996-01-16 フラッシュメモリ管理方法

Country Status (1)

Country Link
JP (1) JP3472008B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8706950B2 (en) 2008-03-01 2014-04-22 Kabushiki Kaisha Toshiba Memory system

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3249959B2 (ja) * 1999-10-12 2002-01-28 株式会社ソニー・コンピュータエンタテインメント 可搬型記憶装置及びメモリカード
US6718408B2 (en) * 2001-01-18 2004-04-06 Hewlett-Packard Development Company, L.P. Interchangeable and configurable input/output module for a computing deviceco
US6831865B2 (en) * 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
DE10341616A1 (de) * 2003-09-10 2005-05-04 Hyperstone Ag Verwaltung defekter Blöcke in Flash-Speichern
BRPI0510494B8 (pt) * 2004-07-12 2022-06-28 Kk Toshiba Toshiba Corporation Dispositivo de armazenagem e aparelho hospedeiro
JP4460967B2 (ja) 2004-07-23 2010-05-12 株式会社東芝 メモリカード、不揮発性半導体メモリ、及び半導体メモリの制御方法
JP2007011872A (ja) 2005-07-01 2007-01-18 Toshiba Corp メモリカードとその制御方法
JP4863814B2 (ja) * 2006-08-04 2012-01-25 株式会社日立製作所 記憶媒体グループの故障を抑えるストレージシステム
JP4863472B2 (ja) * 2006-10-27 2012-01-25 株式会社メガチップス メモリ管理方法
KR100781976B1 (ko) 2006-11-02 2007-12-06 삼성전자주식회사 플래시 메모리를 구비하는 반도체 메모리 장치에서의 블록상태 정보 제공방법
JP4888862B2 (ja) * 2006-11-10 2012-02-29 株式会社メガチップス メモリ管理方法
US8327066B2 (en) 2008-09-30 2012-12-04 Samsung Electronics Co., Ltd. Method of managing a solid state drive, associated systems and implementations
JP2011198409A (ja) * 2010-03-19 2011-10-06 Toshiba Information Systems (Japan) Corp 不揮発性メモリ
JP5763440B2 (ja) * 2011-06-22 2015-08-12 ラピスセミコンダクタ株式会社 半導体記憶装置
JP5222388B2 (ja) * 2011-11-22 2013-06-26 株式会社日立製作所 フラッシュメモリを用いたストレージシステムの管理システム及び管理方法
JP2013149112A (ja) * 2012-01-20 2013-08-01 Hitachi Ltd 記憶媒体の管理方法
CN103530210B (zh) * 2013-09-29 2017-04-26 深圳市江波龙电子有限公司 检测闪存管理的方法和系统
JP2016031626A (ja) * 2014-07-29 2016-03-07 ソニー株式会社 メモリコントローラ、記憶装置、情報処理システム、および、それらにおける制御方法。

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8706950B2 (en) 2008-03-01 2014-04-22 Kabushiki Kaisha Toshiba Memory system
US9201717B2 (en) 2008-03-01 2015-12-01 Kabushiki Kaisha Toshiba Memory system
US10901625B2 (en) 2008-03-01 2021-01-26 Toshiba Memory Corporation Memory system
US11409442B2 (en) 2008-03-01 2022-08-09 Kioxia Corporation Memory system

Also Published As

Publication number Publication date
JPH09198884A (ja) 1997-07-31

Similar Documents

Publication Publication Date Title
JP3472008B2 (ja) フラッシュメモリ管理方法
JP3078946B2 (ja) 一括消去型不揮発性メモリの管理方法及び半導体ディスク装置
JP4668416B2 (ja) ブート・ブロックへの書き込みアクセスを可能にする時のブート・ブロック・コードの保護
US5406529A (en) Flash non-volatile memory
US7295479B2 (en) Apparatus and method for managing bad blocks in a flash memory
JP3233079B2 (ja) データ処理システム及びデータ処理方法
JP4037605B2 (ja) 不揮発性メモリユニットのコントローラ、同コントローラを有するメモリシステム及び不揮発性メモリユニットの制御方法
EP1548602B1 (en) Non-volatile storage device control method
US6865658B2 (en) Nonvolatile data management system using data segments and link information
US7313682B2 (en) Method and system for updating boot memory that stores a fail-safe reset code and is configured to store boot code and boot updater code
JP3576625B2 (ja) フラッシュメモリカードのデータ管理方法およびそのデータ管理方法を使用したデータ処理装置
US20080104361A1 (en) Storage Device, Memory Managing Apparatus, Memory Managing Method, and Program
WO2003029970A2 (en) Method for atomically updating a plurality of files
JP3268130B2 (ja) フラッシュeepromを用いたデータ処理装置
KR100370893B1 (ko) 일괄 소거형 비휘발성 메모리 장치
JP2004220068A (ja) メモリカード及びメモリへのデータ書き込み方法
JP2004326523A (ja) 書き換え可能な不揮発性メモリを備えた記憶装置及び記憶装置用不揮発性メモリの制御方法
JPH0729392A (ja) 不揮発性半導体メモリおよびそれを使用した半導体ディスク装置
JP3620478B2 (ja) 記憶装置、この記憶装置を用いたデータ処理システム及びデータ読み出し方法
JP3826115B2 (ja) 記憶装置、メモリ管理方法及びプログラム
JP2910745B2 (ja) 記憶装置及びデータ処理方法
US20050068842A1 (en) Electronic device, nonvolatile memory and method of overwriting data in nonvolatile memory
JPH07141479A (ja) Icメモリカードおよびそのicメモリカードを使用したファイル管理システム
JP4131147B2 (ja) プリンタにおけるフラッシュメモリの判定方法、この方法をコンピュータに実行させるプログラム、このプログラムを記録した記録媒体、フラッシュメモリを備えるプリンタ
JPH11328039A (ja) メモリ制御装置およびメモリ制御方法およびコンピュータが読み出し可能なプログラムを格納した記憶媒体

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20070912

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080912

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees