JP2003337757A - メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 - Google Patents
メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法Info
- Publication number
- JP2003337757A JP2003337757A JP2002143378A JP2002143378A JP2003337757A JP 2003337757 A JP2003337757 A JP 2003337757A JP 2002143378 A JP2002143378 A JP 2002143378A JP 2002143378 A JP2002143378 A JP 2002143378A JP 2003337757 A JP2003337757 A JP 2003337757A
- Authority
- JP
- Japan
- Prior art keywords
- block
- address
- flash memory
- logical
- erased
- 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.)
- Granted
Links
Abstract
シュメモリの信頼性低下を効果的に防止することが可能
なメモリコントローラを提供する。 【解決手段】 論理ブロックアドレスに基づいて複数の
ブロックを含むフラッシュメモリにアクセスするメモリ
コントローラであって、それぞれのブロックにとって有
効でない論理ブロックアドレスが割り当てられた不正マ
ッピングブロックを検出する検出手段と、検出手段によ
り検出された不正マッピングブロックをブロック消去す
る消去手段とを備えている。本発明によれば、検出手段
によって不正マッピングブロックが検出された場合、消
去手段によってこれが消去済みブロックに変換されるこ
とから、不正マッピングブロックの蓄積が防止される。
これにより、フラッシュメモリの信頼性低下を効果的に
防止することが可能となる。
Description
ラ及びこれを備えるフラッシュメモリシステムに関し、
特に、フラッシュメモリの信頼性を高めることが可能な
メモリコントローラ及びこのようなメモリコントローラ
を備えるフラッシュメモリシステムに関する。また、本
発明は、フラッシュメモリの制御方法に関し、特に、フ
ラッシュメモリの信頼性を高めることが可能な制御方法
に関する。
などに用いられる半導体メモリとして、フラッシュメモ
リ、特にNAND型フラッシュメモリが用いられること
が多い。NAND型フラッシュメモリは、メモリセルを
消去状態(論理値=1)から書込状態(論理値=0)に
変化させる場合は、これをメモリセル単位で行うことが
可能である一方、メモリセルを書込状態(0)から消去
状態(1)に変化させる場合は、これをメモリセル単位
で行うことができず、複数のメモリセルからなるブロッ
ク単位でしかこれを行うことができない。かかる一括消
去動作は、一般的に「ブロック消去」と呼ばれる。
ック単位でしかメモリセルを書込状態(0)から消去状
態(1)に変化させることができないことから、既にデ
ータが割り当てられている論理アドレスに対して新しい
データを上書きする場合であっても、旧データが格納さ
れているブロックに対して新しいデータを直接上書きす
ることはできない。このため、既にデータが割り当てら
れている論理アドレスに対して新しいデータを上書きす
るようホストコンピュータから指示されると、旧データ
が格納されているブロック内における上書き対象外のデ
ータを消去済みブロックに転送するとともに、新しいデ
ータを当該消去済みブロックに書き込むという処理が必
要となる。かかる処理は「ブロック間転送」と呼ばれ、
ホストコンピュータからデータの上書きが指示される度
に実行される。ブロック間転送が行われた後、転送元の
ブロックはブロック消去され、これにより転送元のブロ
ックは新たな消去済みブロックとなる。
一義的に割り当てられた物理アドレスとの関係は固定さ
れず、これらの関係はデータの上書きが指示される度に
動的に変化することになる。以下、論理アドレスと物理
アドレスとの関係について、図面を用いてより詳細に説
明する。
の関係を模式的に示す図である。図19に示すように、
全てのブロックにより構成可能な物理アドレス空間(最
大物理アドレス空間)41の大きさ(0〜n−1)は、
論理アドレス空間42の大きさ(0〜m−1)よりも大
きく(n>m)、したがって全ての論理アドレスにデー
タが割り当てられた場合であっても、n−m個のブロッ
クは常に未使用となる。
成するn個のブロック(#0〜#n−1)の構造を模式
的に示す図である。図20に示すように、各ブロック#
0〜#n−1には実際にユーザデータが格納される領域
51の他に、自らに割り当てられた論理アドレスを記録
する領域52が設けられており、論理アドレスと物理ア
ドレスとの関係は、かかる領域52に格納された値によ
って特定される。領域52には対応する論理アドレスの
値が格納され、データの読み出し及び/又は書き込みを
行う際には、領域52に格納された論理アドレスに基づ
いて、実際にアクセスすべきブロック#0〜#n−1が
特定される。
に含まれる全てのメモリセルが消去状態(1)となって
いることから、領域52を構成するメモリセルも全て消
去状態(1)となっているはずである。一般に、領域5
2を構成する全てのメモリセルが消去状態(1)である
場合、その値はn−1(物理アドレスの最大値)に一致
しており、したがって、領域52に格納された値がn−
1である場合には、当該ブロックが消去済みブロックで
あると判断することができる。
には、旧データが格納されているブロック(例えばブロ
ック#i)内における上書き対象外のデータが消去済み
のブロック(例えばブロック#j)に転送されるととも
に、新しいデータがこの消去済みブロック(ブロック#
j)に書き込まれ(ブロック間転送)、さらに、転送元
のブロック(ブロック#i)の領域52に格納されてい
た論理アドレスの値(0〜m−1)が転送先のブロック
(ブロック#j)の領域52に書き込まれる。その後、
転送元のブロック(ブロック#i)はブロック消去さ
れ、これにより転送元のブロック(ブロック#i)は新
たな消去済みブロックとなる。上述の通り、消去済みブ
ロックにおいては、領域52に格納された値はn−1と
なる。
れる値は、0〜m−1及びn−1のいずれかとなり、こ
れが0〜m−1であるブロックは有効なデータが格納さ
れているブロックであり、これがn−1であるブロック
は消去済みのブロックである。
ックの領域52に格納される値が何らかの原因で0〜m
−1及びn−1以外の値、すなわちm〜n−2となった
場合、このブロックは有効な論理アドレスに対応せず、
しかも消去済みブロックとしても取り扱われない。この
ようなブロックは「不正マッピングブロック」と呼ば
れ、事実上、永久に使用できないブロックとなってしま
う。上述の通り、全てのブロック#0〜#n−1により
構成可能な最大物理アドレス空間41の大きさ(0〜n
−1)は、論理アドレス空間42の大きさ(0〜m−
1)よりも大きいことから、不正マッピングブロックの
発生が直ちに致命的な不具合となるものではないが、不
正マッピングブロックのように使用できないブロックの
数がn−m個を超えると、当該フラッシュメモリ全体が
使用不可能となってしまうことから、このような不正マ
ッピングブロックの発生はフラッシュメモリの信頼性を
低下させる原因となってしまう。
しては種々の原因が考えられ、その主なものとしては、
ブロック消去中に電源が遮断される等、ブロック消去が
正常に完了しなかった場合や、領域52を構成するメモ
リセルに不良が発生した場合、領域52に対する論理ア
ドレスの書き込み中にエラーが発生した場合等が挙げら
れる。その他、フラッシュメモリを制御するプログラム
(ファームウェア)にバグが含まれていた場合や、フラ
ッシュメモリの物理的な落下等によってビット化けが生
じた場合においても、不正マッピングブロックが発生す
ることがある。
不正マッピングブロックの蓄積によるフラッシュメモリ
の信頼性低下を効果的に防止することが可能なメモリコ
ントローラ及びこのようなメモリコントローラを備える
フラッシュメモリシステムを提供することである。
グブロックの蓄積によるフラッシュメモリの信頼性低下
を効果的に防止することが可能なフラッシュメモリの制
御方法を提供することである。
トローラは、少なくとも論理ブロックアドレスに基づい
て複数のブロックを含むフラッシュメモリにアクセスす
るメモリコントローラであって、それぞれのブロックに
とって有効でない論理ブロックアドレスが割り当てられ
た不正マッピングブロックを検出する検出手段を備える
ことを特徴とする。
正マッピングブロックの存在を検出することができるの
で、その後この不正マッピングブロックをブロック消去
等すれば、不正マッピングブロックの蓄積を防止するこ
とができる。これにより、フラッシュメモリの信頼性低
下を効果的に防止することが可能となる。
理ブロックアドレスを検出し、これに基づいてアドレス
変換テーブルを作成するアドレス変換テーブル生成手段
をさらに備えることが好ましい。
マッピングブロックをブロック消去する消去手段をさら
に備えることがより好ましい。これによれば、不正マッ
ピングブロックが消去済みブロックに変換されることか
ら、不正マッピングブロックの蓄積が防止される。
テーブル生成手段により前記アドレス変換テーブルが作
成されたことに応答して、前記不正マッピングブロック
のブロック消去を行うことがより好ましい。これによれ
ば、不正マッピングブロックの消去を、アドレス変換テ
ーブルの作成と独立して行うことができるので、既存の
ファームウェアの多くの部分をそのまま流用することが
可能となる。
テーブル生成手段による前記アドレス変換テーブルの作
成中に、前記検出手段が前記不正マッピングブロックの
存在を検出したことに応答して、前記検出された不正マ
ッピングブロックをブロック消去することもまた、より
好ましい。これによれば、ファームウェア全体を小型化
することが可能となる。
であるか否かを示す冗長ブロック登録テーブルを作成す
る冗長ブロック登録テーブル作成手段をさらに備え、前
記冗長ブロック登録テーブル作成手段は、前記検出手段
が前記不正マッピングブロックの存在を検出したことに
応答して、前記検出された不正マッピングブロックを消
去済みブロックとして冗長ブロック登録テーブルに登録
することもまた、より好ましい。これによれば、アドレ
ス変換テーブル等の作成動作を高速に完了することが可
能となる。
に応答して、書き込み対象となるブロックの状態を検査
するベリファイ手段をさらに備えることがさらに好まし
い。これによれば、消去済みブロックとして冗長ブロッ
ク登録テーブルに登録された不正マッピングブロックに
直接データが書き込まれるのを防止することが可能とな
る。
果、書き込み対象となるブロックが消去済みブロックで
はないと判断されたことに応答して、該ブロックを少な
くともブロック消去した後、該ブロックに含まれるメモ
リセルが全て消去されたか否かを判定する判定手段をさ
らに備えることがさらに好ましい。これによれば、不正
マッピングブロックが消去済みブロックに変換されるこ
とから、不正マッピングブロックの蓄積が防止される。
は、複数のブロックを含むフラッシュメモリと、少なく
とも論理ブロックアドレスに基づいて前記フラッシュメ
モリにアクセスするメモリコントローラとを備えるフラ
ッシュメモリシステムであって、それぞれのブロックに
とって有効でない論理ブロックアドレスが割り当てられ
た不正マッピングブロックを検出する検出手段を前記メ
モリコントローラが備えていることを特徴とする。
ば、不正マッピングブロックの存在を検出することがで
きるので、その後この不正マッピングブロックをブロッ
ク消去等すれば、不正マッピングブロックの蓄積を防止
することができる。これにより、フラッシュメモリの信
頼性低下を効果的に防止することが可能となる。
ブロックアドレスを格納する論理ブロックアドレス格納
領域が設けられており、前記検出手段は、前記論理ブロ
ックアドレス格納領域に格納された論理ブロックアドレ
スを参照することによって前記不正マッピングブロック
を検出することが好ましい。
は、フラッシュメモリに含まれる各ブロックに対して割
り当てられた論理ブロックアドレスを検出する第1のス
テップと、前記検出された論理ブロックアドレスがそれ
ぞれのブロックにとって有効でない論理ブロックアドレ
スであるか否かを判別する第2のステップとを備えるこ
とを特徴とする。
れば、それぞれのブロックにとって有効でない論理ブロ
ックアドレスが割り当てられたブロックの存在を検出す
ることができるので、その後この不正マッピングブロッ
クをブロック消去等すれば、不正マッピングブロックの
蓄積を防止することができる。これにより、フラッシュ
メモリの信頼性低下を効果的に防止することが可能とな
る。
ックに対して割り当てられた論理ブロックアドレスを前
記各ブロックから読み出し、これに基づいてアドレス変
換テーブルを作成するステップであり、前記第2のステ
ップは、前記アドレス変換テーブルを参照することによ
って、それぞれのブロックにとって有効でない論理ブロ
ックアドレスが割り当てられた不正マッピングブロック
が存在するか否かを判別するステップであることをが好
ましい。
ック消去する第3のステップをさらに備えることがより
好ましい。
本発明の好ましい実施態様について詳細に説明する。
るフラッシュメモリシステム1を概略的に示すブロック
図である。
ラッシュメモリシステム1は、フラッシュメモリ2及び
コントローラ3からなる。特に限定されるものではない
が、フラッシュメモリシステム1はフラッシュメモリ2
及びコントローラ3が一つのカード内に集積されて構成
され、ホストコンピュータに対して着脱可能な一種の外
部記憶装置として用いることができる。ホストコンピュ
ータとしては、文字、音声、あるいは画像情報等の種々
の情報を処理するパーソナルコンピュータやデジタルス
チルカメラをはじめとする各種情報処理装置が挙げられ
る。
を含む1又は2以上の半導体チップからなり、n個(例
えば1024個)のブロックによって構成される。これ
らn個のブロックはいずれもk個(例えば32個)のペ
ージ(セクタ)からなり、各ページは例えば512バイ
トの記録容量を有する最小アクセス単位として用いられ
る。したがって、上記の例のように、 n=1024(1K) k=32 である場合、フラッシュメモリ2は32Kページのアド
レス空間を含み、このためホストコンピュータ側から特
定のページにアクセスするためには、少なくとも15ビ
ットのアドレス情報が必要となる。本明細書において
は、ホストコンピュータよりフラッシュメモリシステム
1に供給されるアドレス情報を「ホストアドレス」と呼
ぶ。
RAM5及びROM6を含む種々の機能ブロックによっ
て構成される。特に限定されるものではないが、コント
ローラ3は一つの半導体チップ上に集積されていること
が好ましい。CPU4は、コントローラ3を構成する各
機能ブロック全体の動作を制御するための機能ブロック
である。また、RAM5は、CPU4によるフラッシュ
メモリ2の制御に必要なデータが一時的に格納される作
業領域であり、特に限定されるものではないが、複数の
SRAMセルによって構成することが好ましい。ROM
6は、CPU4が実行すべき制御プログラム(ファーム
ウェア)を格納するための機能ブロックである。
リセルの具体的な構造について説明する。
メモリセル10の構造を概略的に示す断面図である。
型半導体基板11に形成されたN型のソース拡散領域1
2及びドレイン拡散領域13と、ソース拡散領域12と
ドレイン拡散領域13との間のP型半導体基板11を覆
って形成されたトンネル酸化膜14と、トンネル酸化膜
14上に形成されたフローティングゲート電極15と、
フローティングゲート電極15上に形成された絶縁膜1
6と、絶縁膜16上に形成されたコントロールゲート電
極17とから構成される。このような構成を有するメモ
リセル10は、フラッシュメモリ2内において、複数個
直列に接続されて、NAND型フラッシュメモリを構成
する。
電極15に電子が注入されているか否かによって、「消
去状態」と「書込状態」のいずれかの状態となる。メモ
リセル10が消去状態であることは、当該メモリセル1
0にデータ「1」が保持されていることを意味し、メモ
リセル10が書込状態であることは、当該メモリセル1
0にデータ「0」が保持されていることを意味する。す
なわち、メモリセル10は、1ビットのデータを保持す
ることが可能である。
ティングゲート電極15に電子が注入されていない状態
を指す。消去状態におけるメモリセル10は、デプレッ
ション型のトランジスタとなり、コントロールゲート電
極17に読み出し電圧が印加されているか否かに関わら
ず、ソース拡散領域12とドレイン拡散領域13との間
のP型半導体基板11の表面にはチャネル18が形成さ
れる。したがって、ソース拡散領域12とドレイン拡散
領域13とは、コントロールゲート電極17に読み出し
電圧が印加されているか否かに関わらず、チャネル18
によって常に電気的に接続状態となる。
概略的に示す断面図である。
ティングゲート電極15に電子が蓄積されている状態を
指す。フローティングゲート電極15はトンネル酸化膜
14及び絶縁膜16に挟まれているため、一旦、フロー
ティングゲート電極15に注入された電子は、きわめて
長時間フローティングゲート電極15内にとどまる。書
込状態におけるメモリセル10は、エンハンスメント型
のトランジスタとなり、コントロールゲート電極17に
読み出し電圧が印加されていないときには、ソース拡散
領域12とドレイン拡散領域13との間のP型半導体基
板11の表面にはチャネルが形成されず、コントロール
ゲート電極17に読み出し電圧が印加されているときに
は、ソース拡散領域12とドレイン拡散領域13との間
のP型半導体基板11の表面にチャネル(図示せず)が
形成される。したがって、コントロールゲート電極17
に読み出し電圧が印加されていない状態では、ソース拡
散領域12とドレイン拡散領域13とは電気的に絶縁さ
れ、コントロールゲート電極17に読み出し電圧が印加
された状態では、ソース拡散領域12とドレイン拡散領
域13とが電気的に接続される。
状態であるか書込状態であるかは、次のようにして読み
出すことができる。すなわち、複数個直列に接続された
メモリセル10のうち、選択されたメモリセル10以外
の全てのメモリセル10のコントロールゲート電極17
に読み出し電圧を印加し、この状態において、これらメ
モリセル10の直列体に電流が流れるか否かを検出す
る。その結果、かかる直列体に電流が流れれば、選択さ
れたメモリセル10が消去状態であると判断することが
でき、かかる直列体に電流が流れなければ、選択された
メモリセル10が書込状態であると判断することができ
る。このようにして、直列体に含まれる任意のメモリセ
ル10に保持されたデータが「0」であるのか「1」で
あるのかを読み出すことができる。但し、NAND型フ
ラッシュメモリにおいては、ひとつの直列体に含まれる
2以上のメモリセル10に保持されたデータを同時に読
み出すことはできない。
込状態に変化させる場合、コントロールゲート電極17
に正の高電圧が印加され、これによって、トンネル酸化
膜14を介してフローティングゲート電極15へ電子が
注入される。フローティングゲート電極15への電子の
注入は、FNトンネル電流による注入が可能である。一
方、書込状態であるメモリセル10を消去状態に変化さ
せる場合、コントロールゲート電極17に負の高電圧が
印加され、これによって、トンネル酸化膜14を介して
フローティングゲート電極15に蓄積された電子が排出
される。
空間の具体的な構成について説明する。
間の構造を概略的に示す図である。
アドレス空間は、ブロック#0〜#n−1からなるn個
のブロックによって構成される。ここで、各ブロック
は、データの消去単位である。すなわち、フラッシュメ
モリ2では、各メモリセル10ごとに、その状態を書込
状態から消去状態に変化させることはできず、メモリセ
ル10を書込状態から消去状態に変化させる場合は、当
該メモリセル10が属するブロックに含まれる全てのメ
モリセル10を一括して消去状態とする必要がある。逆
に、各メモリセル10ごとにその状態を消去状態から書
込状態に変化させることは可能である。
モリ2を構成する各ブロック#0〜#n−1は、それぞ
れページ#0〜#k−1からなるk個のページによって
構成されている。これら各ページはデータの読み出し及
び書き込みにおけるアクセス単位であり、図4に示すよ
うに、ビットb0〜b7からなる8ビットを1バイトと
して、例えばそれぞれ512バイトのユーザ領域21と
16バイトの冗長領域22によって構成される。ユーザ
領域21は、ホストコンピュータより供給されるユーザ
データが格納される領域である。
的に示す図である。
ブロックアドレス格納領域23及びその他の付加情報を
格納するための領域24によって構成される。
該ブロックに対応する論理ブロックアドレスを格納する
ための領域であり、少なくともx個(x=log2n)
のメモリセル10が割り当てられる。ここで、論理ブロ
ックアドレスとは、ホストアドレスの一部若しくはホス
トアドレスの一部に基づいて生成されたアドレスであ
り、ホストコンピュータ側から見たブロック番号を示し
ている。したがって、論理ブロックアドレスは少なくと
もxビットで構成される。論理ブロックアドレス格納領
域23は、各ページに含まれる冗長領域22が共通に備
える要素であるが、一つのブロックはk個のページから
なるため、一つのブロックを構成する全てのページの論
理ブロックアドレス格納領域23に論理ブロックアドレ
スを格納しておく必要はなく、少なくとも各ブロックの
先頭ページ(ページ#0)の論理ブロックアドレス格納
領域23に論理ブロックアドレスを格納すれば足りる。
また、消去済みのブロックについては全てのメモリセル
10が消去状態(1)となっていることから、論理ブロ
ックアドレス格納領域23がx個のメモリセル10から
なる場合、論理ブロックアドレス格納領域23に格納さ
れる値はn−1(2x−1)となる。一方、何らのユー
ザデータが格納されているブロックについては、対応す
る論理ブロックアドレスの値が論理ブロックアドレス格
納領域23に格納されている。
1に格納されたユーザデータの誤りを訂正するための付
加情報(エラーコレクションコード)や、当該ブロック
についての異常を表示するブロックステータス等が格納
されているが、これらについては、本発明の要旨と直接
関係がないため、説明は省略する。
のブロックによって構成されるが、このうち、m(<
n)個のブロックは実際にデータを格納することができ
る実使用ブロックとして取り扱われ、残りのn−m個の
物理ブロックは冗長ブロックとして取り扱われる。フラ
ッシュメモリ2のアドレス空間は、実使用ブロックのみ
によって構成され、あるブロックに不良が発生し使用不
能となった場合には、不良が発生したブロックの数だけ
冗長ブロックとして用いられるブロックの数が減らされ
る。
ルについて説明する。
は、少なくとも、アドレス変換テーブル、冗長ブロック
登録テーブル及び書き込みキューが含まれ、これらはコ
ントローラ3に対して電源投入またはリセット動作がな
された場合に、ROM6に格納されているファームウェ
アに基づきCPU4によって作成される。
に基づき生成される論理ブロックアドレスと各ブロック
に対して一義的に割り当てられた物理ブロックアドレス
との対応関係を保持するためのテーブルであり、以下の
構造を有している。
変換テーブル31のデータ構造を示す図である。
31は、物理ブロックアドレス格納領域#0〜物理ブロ
ックアドレス格納領域#n−1からなるn個の物理ブロ
ックアドレス格納領域と、これら物理ブロックアドレス
格納領域にそれぞれ対応して設けられたn個のフラグか
らなる。ここで、各物理ブロックアドレス格納領域に対
して一義的に割り当てられた領域番号(#0〜#n−
1)は、論理ブロックアドレスを示し、各物理ブロック
アドレス格納領域に格納された内容は、対応する物理ブ
ロックアドレスを示している。したがって、例えば物理
ブロックアドレス格納領域#pに格納されている物理ブ
ロックアドレスが#qであれば、論理ブロックアドレス
=#pが物理ブロックアドレス=#qに対応することに
なる。
れぞれ対応する物理ブロックアドレス格納領域の内容
(物理ブロックアドレス)が有効であるか否かを示して
いる。具体的には、フラグが「0」であれば、対応する
物理ブロックアドレス格納領域の内容が有効であること
を意味し、フラグが「1」であれば、対応する物理ブロ
ックアドレス格納領域の内容が無効であることを意味す
る。もちろん、逆に、物理ブロックアドレス格納領域の
内容が有効である場合に、対応するフラグを「1」とし
ても構わない。
ックがそれぞれ使用中であるか否かを示すテーブルであ
り、以下の構造を有している。
ック登録テーブル32のデータ構造を示す図である。
ブル32は、バイト#0〜バイト#(n/8)−1から
なるn/8バイト(nビット)のビットマップによって
構成され、 バイト番号×8+ビット番号 により特定されるブロックが使用中のブロック(ユーザ
データが格納されているブロック)であるか、消去済み
の空きブロックであるかを示している。具体的には、ビ
ットが「0」であれば対応するブロックが使用中である
ことを意味し、ビットが「1」であれば、対応するブロ
ックが消去済みブロックであることを意味する。もちろ
ん、その逆であっても構わない。したがって、図7に示
す例のように、バイト#0のビット#0が「0」であれ
ば、ブロック#0が使用中であることが示され、また、
バイト#1のビット#6が「1」であれば、ブロック#
14が消去済みブロックであることが示される。
キュー33のデータ構造を示す図である。
は、キュー#0〜キュー#h−1からなるh個のキュー
によって構成され、各キューには、消去済みブロックの
物理ブロックアドレスが格納されている。書き込みキュ
ー33に登録されるブロックは、上述した冗長ブロック
登録テーブル32においてビットが「1(消去済み)」
となっているブロックから選ばれる。
リシステム1の動作について説明する。
長ブロック登録テーブル32の作成方法を示すフローチ
ャートである。アドレス変換テーブル31及び冗長ブロ
ック登録テーブル32の作成は、コントローラ3に対し
て電源投入またはリセット動作がなされたことに応答し
て、CPU4がROM6に格納されているファームウェ
アを実行することにより行われる。
たはリセット動作がなされると、CPU4は、RAM5
のうちアドレス変換テーブル31及び冗長ブロック登録
テーブル32を構成するビットを全て「1」にリセット
する(ステップS1)。次いで、CPU4は、内部変数
aの値を0にリセットし(ステップS2)、ブロック番
号が内部変数aに一致するブロックの先頭ページ(ペー
ジ#0)に格納されている論理ブロックアドレスを読み
出す(ステップS3)。この場合、内部変数a=0であ
るから、ブロック#0のページ#0に格納されている論
理ブロックアドレスが読み出されることになる。
ックアドレスが「オール1」であるか否か、すなわちn
−1であるかを判断し(ステップS4)、その結果、読
み出された論理ブロックアドレスが「オール1(=n−
1)」以外であれば、冗長ブロック登録テーブル32の
対応するビット(この場合は、バイト#0のビット#
0)を「0」に書き替える(ステップS5)。さらに、
アドレス変換テーブル31のうち、フラグ番号が論理ブ
ロックアドレスに一致するフラグを「0」に書き替える
(ステップS6)とともに、領域番号が論理ブロックア
ドレスに一致する物理ブロックアドレス格納領域に内部
変数aを格納する(ステップS7)。一方、ステップS
4において、読み出された論理ブロックアドレスが「オ
ール1(=n−1)」であれば、上記ステップS5〜ス
テップS7は実行されない。
リメントした後(ステップS8)、内部変数aがnに一
致しているか否かを判断し(ステップS9)、その結
果、内部変数aがnではない場合にはステップS3に戻
って、内部変数aを用いた論理ブロックアドレスの読み
出しを行い、内部変数aがnに一致している場合には、
一連の処理を完了する。
するまでステップS3〜ステップS9が繰り返し実行さ
れ、これによってアドレス変換テーブル31及び冗長ブ
ロック登録テーブル32が完成する。尚、書き込みキュ
ー33は、CPU4による制御のもと、冗長ブロック登
録テーブル32においてビットが「1」となっているブ
ロックがh個選ばれ、その物理ブロックアドレスがキュ
ー#0〜#h−1に登録される。
ス変換テーブル31及び冗長ブロック登録テーブル32
の作成動作、並びに、書き込みキューの作成動作(図示
せず)が完了した後、引き続いて不正マッピングブロッ
クの消去動作が行われる。ここで、不正マッピングブロ
ックとは、アドレス変換テーブル31の物理ブロックア
ドレス格納領域#m〜#n−2に格納された物理ブロッ
クアドレスにより特定されるブロックを指す。
ックはm個のみであり、フラッシュメモリ2のアドレス
空間は実使用ブロックのみによって構成されることか
ら、論理ブロックアドレスとしては#0〜#m−1まで
しか存在せず、それ以上の値(#m〜#n−1)は取り
得ない。さらに、消去済みのブロックにおいては、論理
ブロックアドレス格納領域23の値は「オール1」であ
り、論理ブロックアドレス格納領域23がx個のメモリ
セル10によって構成される場合、消去済みブロックの
論理ブロックアドレス格納領域23に格納される値はn
−1(2x−1)となることから、物理ブロックアドレ
ス格納領域#n−1に格納された物理ブロックアドレス
により特定されるブロックは必ず消去済みブロックとな
る。
#m〜#n−2に格納された物理ブロックアドレスによ
り特定されるブロックは、アクセスが不可能であるとと
もに消去済みブロックとしても取り扱われない、不正マ
ッピングブロックであることが分かる。
方法を示すフローチャートである。不正マッピングブロ
ックの消去も、CPU4がROM6に格納されているフ
ァームウェアを実行することによって行われる。
は、CPU4はまず内部変数bの値をmにセットし(ス
テップS11)、フラグ番号が内部変数bに一致するフ
ラグの内容を読み出す(ステップS12)。この場合、
内部変数b=mであるから、フラグ#mの内容が読み出
されることになる。
内容が「0(有効)」であるか「1(無効)」であるか
を判断し(ステップS13)、その結果、読み出された
フラグの内容が「0(有効)」であれば、対応する物理
ブロックアドレス格納領域(この場合は、物理ブロック
アドレス格納領域#m)の内容を読み出し(ステップS
14)、その内容により特定されるブロックをブロック
消去する(ステップS15)。そして、冗長ブロック登
録テーブル32を構成するビットのうち、内部変数bに
対応するビットを「1(消去済み)」に書き替えた後
(ステップS16)、内部変数bをインクリメントする
(ステップS17)。一方、ステップS13において、
読み出されたフラグの内容が「1(無効)」であれば、
上記ステップS14〜S16を実行することなく、内部
変数bをインクリメントする(ステップS17)。ここ
で、読み出されたフラグの内容が「0(有効)」である
場合、当該ブロックは不正マッピングブロックである。
に一致しているか否かを判断し(ステップS18)、そ
の結果、内部変数bがn−1ではない場合にはステップ
S12に戻って、内部変数bを用いたフラグの読み出し
を行い、内部変数bがn−1に一致している場合には、
一連の処理を完了する。
一致するまでステップS12〜ステップS18を繰り返
して実行し、これによって不正マッピングブロックの消
去が完了する。
レス変換テーブル31等の作成動作が完了した後、引き
続いて不正マッピングブロックの消去動作(図10)を
実行していることから、アドレス変換テーブル31の物
理ブロックアドレス格納領域#m〜#n−2に格納され
た物理ブロックアドレスにより特定されるブロック、す
なわち不正マッピングブロックがブロック消去され、消
去済みブロックとして解放されることになる。したがっ
て、不正マッピングブロックの蓄積によってフラッシュ
メモリ2の全体が使用不能となることがなくなるので、
フラッシュメモリ2の信頼性を高めることが可能とな
る。
換テーブル31等の作成動作が完了した後、引き続いて
不正マッピングブロックの消去動作(図10)を実行し
ているが、かかる不正マッピングブロックの消去動作
(図10)をアドレス変換テーブル31等の作成動作が
完了するたびに毎回実行する必要はない。したがって、
アドレス変換テーブル31等の作成動作が複数回実行さ
れたことに応答して不正マッピングブロックの消去動作
(図10)を実行しても良いし、また、前回不正マッピ
ングブロックの消去動作(図10)が実行されてから一
定期間が経過したことに応答して不正マッピングブロッ
クの消去動作(図10)を実行しても良い。さらに、消
去済みブロックの数が一定数以下となったことに応答し
て不正マッピングブロックの消去動作(図10)を実行
しても良い。尚、消去済みブロックの数は、上述した冗
長ブロック登録テーブル32を参照することによって、
容易にカウントすることが可能である。
された後、すなわち初期設定が完了した後におけるフラ
ッシュメモリ2へのアクセス方法について、データの読
み出し動作及びデータの書き込み動作の順に説明する。
また、データの書き込み動作については、データが全く
割り当てられていない論理ブロックアドレスに対して新
規にデータを割り当てる場合(データの新規書込動作)
と、既にデータが割り当てられている論理ブロックアド
レスに対して追加して或いは重ねてデータを割り当てる
場合(データの上書き動作)に分けて説明する。
する。
ローチャートである。かかる動作も、CPU4がROM
6に格納されているファームウェアを実行することによ
って行われる。
ンピュータよりホストアドレスが供給されると、CPU
4はまず、ホストアドレスに基づいて論理ブロックアド
レスとページアドレス(PA)を作成する(ステップS
21)。生成方法としては、ホストアドレスの上位ビッ
トを論理ブロックアドレスとし、ホストアドレスの下位
ビットをページアドレス(PA)とするのが基本である
が、フラッシュメモリ2が複数の単位領域(ゾーン)に
分割されている場合には、ホストアドレスの上位ビット
を1ゾーンに含まれる実使用ブロック数で除算し、その
商に基づいてゾーンを特定するとともに、剰余に基づい
て論理ブロックアドレスを特定すればよい。単純な一例
として、フラッシュメモリ2が1024(n=210)
個のブロックからなる単一ゾーン構成であり、一つのブ
ロックに32(k=25)個のページからなる場合、少
なくとも15ビットのホストアドレスが用いられ、その
上位10ビットが論理ブロックアドレスとなり、下位5
ビットがページアドレス(PA)となる。
たアドレス変換テーブル31を参照することにより、論
理ブロックアドレスを物理ブロックアドレスに変換する
(ステップS22)。具体的には、領域番号が論理ブロ
ックアドレスに一致する物理ブロックアドレス格納領域
にアクセスし、ここに格納されている物理ブロックアド
レスを読み出すことにより変換を行う。尚、本例はデー
タの読み出し動作であり、当該ホストアドレスに対応す
るブロックには原則としてユーザデータが割り当てられ
ているはずであるから、対応するフラグは「0(有
効)」となっているはずである。但し、ホストコンピュ
ータによっては、ユーザデータの割り当てられていない
ホストアドレスに対して読み出し要求を行う場合もあ
る。
ル31から読み出された物理ブロックアドレス及び上記
ページアドレス(PA)に基づいてフラッシュメモリ2
にアクセスし、対応するページに格納されているデータ
を読み出す(ステップS23)。この場合、アクセスさ
れるブロックは物理ブロックアドレスによって特定さ
れ、アクセスされるページはページアドレス(PA)に
よって特定される。
する。
する。データの書き込み動作は、上述の通り、データの
新規書込動作とデータの上書き動作に分けられることか
ら、ホストコンピュータからデータの書き込み要求がな
された場合、まず、これがデータの新規書込であるのか
データの上書きであるのかの判断が行われる。
ャートである。かかる動作も、CPU4がROM6に格
納されているファームウェアを実行することによって行
われる。
ンピュータよりホストアドレスが供給されると、CPU
4はまず、ホストアドレスに基づいて論理ブロックアド
レスとページアドレス(PA)を作成する(ステップS
31)。その生成方法は上述の通りである。
ックアドレスに一致するフラグを読み出し(ステップS
32)、その内容を参照することによって、当該論理ブ
ロックアドレスに対応するブロックが既に割り当てられ
ているか否かを判断する(ステップS33)。これは、
本データの書き込み動作がデータの新規書込動作である
のか、或いはデータの上書き動作であるのかを判断する
ことに等しい。
効)」であれば、当該論理ブロックアドレスに対応する
ブロックがまだ割り当てられていない、すなわち、本デ
ータの書き込み動作がデータの新規書込動作であると判
断することができるので、図13に示すデータの新規書
込動作が実行され、逆に、読み出されたフラグが「0
(有効)」であれば、当該論理ブロックアドレスに対応
するブロックが既に割り当てられている、すなわち、本
データの書き込み動作がデータの上書き動作であると判
断することができるので、図14に示すデータの上書き
動作が実行される。
作について説明する。かかる動作も、CPU4がROM
6に格納されているファームウェアを実行することによ
って行われる。
4はまず、書き込みキュー33にアクセスし、キュー#
0〜#h−1に格納されているいずれかの物理ブロック
アドレスを読み出す(ステップS41)。
ら読み出された物理ブロックアドレス及び上記ページア
ドレス(PA)に基づいてフラッシュメモリ2にアクセ
スし、対応するページ及び当該ブロックの先頭ページ
(ページ#0)に必要なデータを格納する(ステップS
42)。ここで、対応するページに格納すべきデータに
は少なくともユーザデータが含まれ、先頭ページ(ペー
ジ#0)に格納すべきデータには少なくとも論理ブロッ
クアドレスが含まれる。このうちユーザデータは、対応
するページのユーザ領域21に格納され、論理ブロック
アドレスは、当該ブロックの先頭ページ(ページ#0)
の論理ブロックアドレス格納領域23に格納される。
ル31、冗長ブロック登録テーブル32及び書き込みキ
ュー33の内容を更新する(ステップS43、S44、
S45)。具体的には、アドレス変換テーブル31の更
新については、フラグ番号が論理ブロックアドレスに一
致するフラグの値を「0(有効)」に書き替えるととも
に、対応する物理ブロックアドレス格納領域に書き込み
キュー33から読み出された物理ブロックアドレスを格
納する。また、冗長ブロック登録テーブル32の更新に
ついては、書き込みキュー33から読み出された物理ブ
ロックアドレスに対応するビットを「0(使用中)」に
書き替える。さらに、書き込みキュー33の更新につい
ては、冗長ブロック登録テーブル32を参照することに
より、物理ブロックアドレスの読み出しが行われたキュ
ーに新たな消去済みブロックの物理ブロックアドレスを
上書きする。
る。
ック登録テーブル32及び書き込みキュー33の更新
は、図13に示す順に行う必要はなく、これとは異なる
順で行っても構わない。また、書き込みキュー33に登
録された時点で、対応する冗長ブロック登録テーブル3
2のビットを「0(使用中)」に書き替えるよう構成し
た場合には、図13に示すステップS44は省略され
る。
について説明する。かかる動作も、CPU4がROM6
に格納されているファームウェアを実行することによっ
て行われる。
はまず、領域番号が論理ブロックアドレスに一致する物
理ブロックアドレス格納領域にアクセスし、ここに格納
されている物理ブロックアドレスを読み出す(ステップ
S51)。以下、ステップS51において得られた物理
ブロックアドレスを「転送元ブロックアドレス」と呼
ぶ。
アクセスし、キュー#0〜#h−1に格納されているい
ずれかの物理ブロックアドレスを読み出す(ステップS
52)。以下、ステップS52において得られた物理ブ
ロックアドレスを「転送先ブロックアドレス」と呼ぶ。
リセットし(ステップS53)、内部変数cの値がペー
ジアドレス(PA)と一致しているか否かを判断する
(ステップS54)。その結果、内部変数cの値がペー
ジアドレス(PA)と一致していれば、転送先ブロック
アドレス及びページアドレス(PA)に基づいてフラッ
シュメモリ2にアクセスし、対応するページに必要なデ
ータを格納する(ステップS55)。ここで、対応する
ページに格納されるデータには少なくともユーザデータ
が含まれ、かかるユーザデータは、対応するページのユ
ーザ領域21に格納される。一方、内部変数cの値がペ
ージアドレス(PA)と一致していなければ、「ブロッ
ク間転送」が行われる(ステップS56)。ブロック間
転送においては、転送元ブロックアドレスにより特定さ
れるブロック内の内部変数cにより特定されるページの
内容が、転送先ブロックアドレスにより特定されるブロ
ック内の内部変数cにより特定されるページに転送され
る。尚、内部変数cが「0」である場合には、ステップ
S55が実行されるかステップS56が実行されるかに
関わらず、転送先ブロックアドレスにより特定されるブ
ロックの先頭ページ(ページ#0)の論理ブロックアド
レス格納領域23に論理ブロックアドレスが格納され
る。
メントした後(ステップS57)、内部変数cがkに一
致しているか否かを判断し(ステップS58)、その結
果、内部変数cがkではない場合にはステップS54に
戻って内部変数cとページアドレス(PA)との比較を
行い、内部変数cがkに一致している場合には、後述す
るステップが実行される。以上のようにして、内部変数
cがkに一致するまでステップS54〜ステップS58
が繰り返し実行され、これによって、ホストコンピュー
タより与えられたユーザデータが転送先のブロックの所
定のページに書き込まれるとともに、転送元のブロック
内に格納されていた上書き対象外のデータが転送先のブ
ロックの同じページに書き込まれることになる。
一致した場合、CPU4は、アドレス変換テーブル31
及び書き込みキュー33の内容を更新する(ステップS
59、S60)。かかる動作は上述したステップS4
3、S45と同様である。したがって、アドレス変換テ
ーブル31及び書き込みキュー33の更新は、図14に
示す順に行う必要はなく、逆の順序で行っても構わな
い。
レスにより特定されるブロックをブロック消去し(ステ
ップS61)、冗長ブロック登録テーブル32の内容を
更新する(ステップS62)。具体的には、書き込みキ
ュー33から読み出された物理ブロックアドレスに対応
するビットを「0(使用中)」に書き替えるとともに、
ステップS61においてブロック消去されたブロックに
対応するビットを「1(消去済み)」に書き替える。
る。
は、不正マッピングブロックの消去動作(図10)によ
って、アドレス変換テーブル31の物理ブロックアドレ
ス格納領域#m〜#n−2に格納された物理ブロックア
ドレスにより特定される不正マッピングブロックをブロ
ック消去していることから、不正マッピングブロックの
蓄積が効果的に防止され、これにより、フラッシュメモ
リ2の信頼性を高めることが可能となる。また、本実施
態様においては、不正マッピングブロックの消去動作が
アドレス変換テーブル31等の作成動作と独立している
ことから、既存のファームウェアの多くの部分をそのま
ま流用することができるという優位性も有している。
いて説明する。
ドレス変換テーブル31及び冗長ブロック登録テーブル
32の作成中に不正マッピングブロックを発見次第、こ
れをブロック消去するものである。以下、具体的に説明
する。
換テーブル31及び冗長ブロック登録テーブル32の作
成方法を示すフローチャートである。アドレス変換テー
ブル31及び冗長ブロック登録テーブル32の作成は、
上述の通り、コントローラ3に対して電源投入またはリ
セット動作がなされたことに応答して、CPU4がRO
M6に格納されているファームウェアを実行することに
より行われる。尚、図15に示すアドレス変換テーブル
31及び冗長ブロック登録テーブル32の作成動作は、
図9に示したアドレス変換テーブル31及び冗長ブロッ
ク登録テーブル32の作成動作と多くの部分において重
複するため、図9に示した動作と同じ動作については、
同じステップ番号を付し、重複する説明は省略する。
ップS4において論理ブロックアドレスが「オール1
(=n−1)」以外であると判断された場合、CPU4
は、論理ブロックアドレスがm〜n−2であるか否かを
判断する(ステップS71)。すなわち、当該ブロック
が不正マッピングブロックであるか否かを判断する。そ
の結果、論理ブロックアドレスがm〜n−2以外であれ
ば(不正マッピングブロックでなければ)、CPU4
は、上述したステップS5以降の動作を実行するが、論
理ブロックアドレスがm〜n−2のいずれかであれば
(不正マッピングブロックであれば)、当該ブロックを
ブロック消去する(ステップS72)。この場合、ステ
ップS5〜S7は実行されず、CPU4は直ちに内部変
数aのインクリメントを行う(ステップS8)。以上の
ようにして、内部変数aがnに一致するまでステップS
3〜ステップS9及びステップS71、S72が繰り返
し実行され、これによってアドレス変換テーブル31及
び冗長ブロック登録テーブル32が完成する。
れた後、すなわち初期設定が完了した後におけるフラッ
シュメモリ2へのアクセス方法については、上記実施態
様と同様である。
レス変換テーブル31等の作成動作中に不正マッピング
ブロックが発見された場合、その都度これをブロック消
去し、通常の消去済みブロックに変換していることか
ら、上記実施態様と同様、不正マッピングブロックの蓄
積によってフラッシュメモリ2の全体が使用不能となる
ことがなくなる。これにより、フラッシュメモリ2の信
頼性を高めることが可能となる。また、本実施態様によ
れば、不正マッピングブロックの消去動作をアドレス変
換テーブル31等の作成動作中に組み込んでいることか
ら、これをCPU4に実行させるためのファームウェア
を小型化することが可能となる。
様について説明する。
なり、アドレス変換テーブル31及び冗長ブロック登録
テーブル32の作成中に不正マッピングブロックを発見
した場合であっても、これを消去済みブロックとみなし
てこれらと同様に取り扱う一方で、ホストコンピュータ
よりデータの書き込みが指示された場合、所定のブロッ
クに実際にデータを書き込む前に、当該ブロックが消去
済みブロックであるか否かをチェックするというもので
ある。以下、具体的に説明する。
換テーブル31及び冗長ブロック登録テーブル32の作
成方法を示すフローチャートである。アドレス変換テー
ブル31及び冗長ブロック登録テーブル32の作成は、
上述の通り、コントローラ3に対して電源投入またはリ
セット動作がなされたことに応答して、CPU4がRO
M6に格納されているファームウェアを実行することに
より行われる。尚、図16に示すアドレス変換テーブル
31及び冗長ブロック登録テーブル32の作成動作は、
図9に示したアドレス変換テーブル31及び冗長ブロッ
ク登録テーブル32の作成動作と多くの部分において重
複するため、図9に示した動作と同じ動作については、
同じステップ番号を付し、重複する説明は省略する。
テップS4における判断の代わりに、論理ブロックアド
レスがm以上であるか否かの判断を行っている(ステッ
プS73)。そして、論理ブロックアドレスがm未満
(0〜m−1)であると判断された場合、すなわち、有
効な論理ブロックアドレスであると判断された場合に
は、CPU4は、上述したステップS5以降の動作を実
行する。一方、ステップS73において、論理ブロック
アドレスがm以上(m〜n−1)であると判断された場
合、すなわち、当該ブロックが消去済みブロックまたは
不正マッピングブロックであると判断された場合には、
ステップS5〜S7は実行されず、CPU4は直ちに内
部変数aのインクリメントを行う(ステップS8)。以
上のようにして、内部変数aがnに一致するまでステッ
プS3、ステップS73、ステップS5〜S9が繰り返
し実行され、これによってアドレス変換テーブル31及
び冗長ブロック登録テーブル32が完成する。
去済みブロックと同様、冗長ブロック登録テーブル32
における対応するビットが「1(消去済み)」とされる
ので、引き続き行われる書き込みキュー33の作成動作
(図示せず)において、不正マッピングブロックの物理
ブロックアドレスがキューに登録される可能性がある。
1等が作成された後、すなわち初期設定が完了した後、
ホストコンピュータよりデータの書き込みが指示された
場合、キューの読み出し直後に以下に詳述するベリファ
イ動作が挿入される。つまり、データの新規書込動作に
おいては、ステップS41とステップS42との間にベ
リファイ動作が挿入され、データの上書き動作において
は、ステップS52とステップS53との間にベリファ
イ動作が挿入される。
ャートである。ベリファイ動作は、CPU4がROM6
に格納されているファームウェアを実行することによっ
て行われる。
部変数dの値を0にリセットし(ステップS81)、ス
テップS41又はステップS52においてキューから読
み出された物理ブロックアドレスにより特定されるブロ
ックのうち、ページ番号が内部変数dに一致するページ
にアクセスし、その内容を読み出す(ステップS8
2)。
「オール1」であるか否かを判断し(ステップS8
3)、その結果、読み出された内容が「オール1」であ
れば内部変数dをインクリメントし(ステップS8
4)、さらに内部変数dがkに一致しているか否かを判
断する(ステップS85)。その結果、内部変数dがk
に一致していなければステップS82に戻って内部変数
dを用いたページの読み出しを行い、内部変数dがkに
一致していれば、当該ブロックが消去済みブロックであ
ることが確認されたことから、一連のベリファイ動作を
終了し、ステップS42又はステップS53に復帰す
る。
れた内容が「オール1」以外であれば、当該ブロックは
消去済みブロックではないと判断できることから、CP
U4は、当該ブロックに対してブロック判定処理(ステ
ップS86)を実行する。ブロック判定処理とは、不良
ブロックであるか否かを判定するための処理であり、そ
の詳細については後述する。
あるか否かを判断し(ステップS87)、その結果、当
該ブロックが正常なブロックであると判断された場合に
は、ステップS41又はステップS52に戻って再びキ
ューの読み出しを行い、当該ブロックが不良ブロックで
あると判断された場合には、不良ブロック化処理(ステ
ップS88)を行った後、ステップS41又はステップ
S52に戻って再びキューの読み出しを行う。不良ブロ
ック化処理とは、冗長領域22の領域24に格納される
ブロックステータスを「不良ブロック」である旨の内容
に書き替える等により、今後このブロックが使用される
ことがないよう処置することをいう。
86)を示すフローチャートである。ブロック判定処理
も、CPU4がROM6に格納されているファームウェ
アを実行することによって行われる。
内部変数eの値を0にリセットし(ステップS91)、
判定対象のブロックのうち、ページ番号が内部変数eに
一致するページにアクセスし、このページに「オール
0」からなるデータを書き込む(ステップS92)。次
に、CPU4は、内部変数eをインクリメントした後
(ステップS93)、内部変数eがkに一致しているか
否かを判断し(ステップS94)、その結果、内部変数
eがkに一致していなければステップS92に戻って内
部変数eを用いた「オール0」からなるデータの書き込
みを行う。
るまで行い、内部変数eがkに一致すると、CPU4は
内部変数fの値を0にリセットし(ステップS95)、
判定対象のブロックのうち、ページ番号が内部変数fに
一致するページにアクセスし、その内容を読み出す(ス
テップS96)。
「オール0」であるか否かを判断し(ステップS9
7)、その結果、読み出された内容が「オール0」であ
れば内部変数fをインクリメントし(ステップS9
8)、さらに内部変数fがkに一致しているか否かを判
断する(ステップS99)。その結果、内部変数fがk
に一致していなければステップS96に戻って内部変数
fを用いたページの読み出しを行い、内部変数fがkに
一致していれば、当該ブロックをブロック消去する(ス
テップS100)。
リセットし(ステップS101)、判定対象のブロック
のうち、ページ番号が内部変数gに一致するページにア
クセスし、その内容を読み出す(ステップS102)。
そして、CPU4は、読み出された内容が「オール1」
であるか否かを判断し(ステップS103)、その結
果、読み出された内容が「オール1」であれば内部変数
gをインクリメントし(ステップS104)、さらに内
部変数gがkに一致しているか否かを判断する(ステッ
プS105)。その結果、内部変数gがkに一致してい
なければステップS102に戻って内部変数gを用いた
ページの読み出しを行い、内部変数gがkに一致してい
れば、当該ブロックに含まれる全てのメモリセル10に
ついて、消去状態(1)から書込状態(0)への遷移及
び書込状態(0)から消去状態(1)への遷移が正常に
行われるとともに、当該ブロックが消去済みブロックと
なったことが確認されたことから、一連のブロック判定
処理を終了する。これは、図17に示すステップS87
において正常なブロックであると判断された場合に相当
する。
(0)であるメモリセルが発見された場合や、ステップ
S103において書込状態(1)であるメモリセルが発
見された場合には、当該ブロックが不良ブロックである
と判断して一連のブロック判定処理を終了する。これ
は、図17に示すステップS87において不良ブロック
であると判断された場合に相当する。
トコンピュータよりデータの書き込みが指示された場
合、所定のブロックに実際にデータを書き込む前に、図
17に示すベリファイ動作によって当該ブロックが消去
済みブロックであるか否かをチェックし、さらに、この
ブロックが消去済みブロックではないと判断された場合
には、ステップS41又はステップS52に戻って新た
にキューの読み出しを行っていることから、書き込みキ
ュー33に不正マッピングブロックの物理ブロックアド
レスが登録されていた場合であっても、このようなブロ
ックに直接データが書き込まれることなく、データの書
き込みを正しく実行することが可能となる。
ロックではないと判断された場合、図18に示すブロッ
ク判定処理が行われることから、かかる処理によって不
正マッピングブロックが通常の消去済みブロックに変換
される。このため、上記実施態様と同様、不正マッピン
グブロックの蓄積によってフラッシュメモリ2の全体が
使用不能となることがなく、フラッシュメモリ2の信頼
性を高めることが可能となる。
換テーブル31等の作成動作中においては、不正マッピ
ングブロックを消去済みブロックと同等に取り扱い、こ
の時点では不正マッピングブロックの消去を行わないこ
とから、アドレス変換テーブル31等の作成動作(初期
設定動作)を高速に完了することが可能となる。
S83において書込状態(0)のセルが検出された場
合、その後行われるブロックの判定処理(図18)の結
果いかんに関わらず、ステップS41又はステップS5
2に戻って新たなキューの読み出しが行われることか
ら、データの書き込みのパフォーマンスを向上させるた
めには、ブロック判定処理(図18)をペンディングし
て先にステップS41又はステップS52による新たな
キューの読み出しが行い、その後、一連のデータ書き込
み処理が完了してからブロック判定処理(図18)を実
行することが望ましい。
S83において書込状態(0)のセルが検出された場
合、その後行われるブロックの判定処理(図18)にお
いて正常なブロックであると判定されるか不良ブロック
であると判定されるかに関わらず、ステップS41又は
ステップS52に戻って新たにキューの読み出しを行っ
ているが、ブロックの判定処理(図18)の結果、正常
なブロックであると判定された場合は、新たなキューを
読み出すことなく、当該ブロックに対してデータの書き
込みを行うよう構成しても構わない。ただしこの場合、
ブロックの判定処理(図18)の結果が判明するまで次
の処理を実行できないので、パフォーマンスを極端に低
下させないためには、同じブロックに対する連続したベ
リファイ動作(図17)の回数に制限を持たせることが
好ましい。
となく、特許請求の範囲に記載された発明の範囲内で種
々の変更が可能であり、それらも本発明の範囲内に包含
されるものであることはいうまでもない。
も物理的手段を意味するものではなく、各手段の機能が
ソフトウエアによって実現される場合も包含する。さら
に、一つの手段の機能が二以上の物理的手段により実現
されても、二以上の手段の機能が一つの物理的手段によ
り実現されてもよい。
nal Computer Memory Card
International Associatio
n)が発表した統一規格に基づくPCカードとして実現
することが可能である。さらに、近年、半導体素子の高
集積化技術の発展に伴い、より小型化された小型メモリ
カード、例えば、CFA(CompactFlash
Association)が提唱する「Compact
Flash」や、MultiMediaCardAss
ociationの提唱する「MMC(MultiMe
diaCard)」、ソニー株式会社が提唱する「メモ
リースティック」、松下電器産業株式会社等が提唱する
「SDメモリーカード」などに本発明を適用することが
可能である。
は、有効な論理アドレスに対応せずしかも消去済みブロ
ックとしても取り扱われない不正マッピングブロックが
存在するか否かが判断され、その結果不正マッピングブ
ロックの存在が明らかとなった場合にはこれをブロック
消去していることから、不正マッピングブロックの蓄積
によってフラッシュメモリ全体が使用不能となることが
ない。このため、本発明によれば、フラッシュメモリの
信頼性を高めることが可能となる。
メモリシステム1を概略的に示すブロック図である。
断面図である。
断面図である。
略的に示す図である。
ある。
図である。
示す図である。
る。
録テーブル32の作成方法を示すフローチャートであ
る。
ローチャートである。
である。
求がデータの新規書込であるのかデータの上書きである
のかを判断するためのフローチャートである。
である。
ある。
レス変換テーブル31及び冗長ブロック登録テーブル3
2の作成方法を示すフローチャートである。
るアドレス変換テーブル31及び冗長ブロック登録テー
ブル32の作成方法を示すフローチャートである。
る。
る。
的に示す図である。
ブロックの構造を模式的に示す図である。
Claims (13)
- 【請求項1】 少なくとも論理ブロックアドレスに基づ
いて複数のブロックを含むフラッシュメモリにアクセス
するメモリコントローラであって、それぞれのブロック
にとって有効でない論理ブロックアドレスが割り当てら
れた不正マッピングブロックを検出する検出手段を備え
ることを特徴とするメモリコントローラ。 - 【請求項2】 前記各ブロックに割り当てられた論理ブ
ロックアドレスを検出し、これに基づいてアドレス変換
テーブルを作成するアドレス変換テーブル生成手段をさ
らに備えることを特徴とする請求項1に記載のメモリコ
ントローラ。 - 【請求項3】 前記検出手段により検出された不正マッ
ピングブロックをブロック消去する消去手段をさらに備
えることを特徴とする請求項2に記載のメモリコントロ
ーラ。 - 【請求項4】 前記消去手段は、前記アドレス変換テー
ブル生成手段により前記アドレス変換テーブルが作成さ
れたことに応答して、前記不正マッピングブロックのブ
ロック消去を行うことを特徴とする請求項3に記載のメ
モリコントローラ。 - 【請求項5】 前記消去手段は、前記アドレス変換テー
ブル生成手段による前記アドレス変換テーブルの作成中
に、前記検出手段が前記不正マッピングブロックの存在
を検出したことに応答して、前記検出された不正マッピ
ングブロックをブロック消去することを特徴とする請求
項3に記載のメモリコントローラ。 - 【請求項6】 前記各ブロックが消去済みブロックであ
るか否かを示す冗長ブロック登録テーブルを作成する冗
長ブロック登録テーブル作成手段をさらに備え、前記冗
長ブロック登録テーブル作成手段は、前記検出手段が前
記不正マッピングブロックの存在を検出したことに応答
して、前記検出された不正マッピングブロックを消去済
みブロックとして冗長ブロック登録テーブルに登録する
ことを特徴とする請求項2に記載のメモリコントロー
ラ。 - 【請求項7】 データの書き込みが要求されたことに応
答して、書き込み対象となるブロックの状態を検査する
ベリファイ手段をさらに備えることを特徴とする請求項
6に記載のメモリコントローラ。 - 【請求項8】 前記ベリファイ手段による検査の結果、
書き込み対象となるブロックが消去済みブロックではな
いと判断されたことに応答して、該ブロックを少なくと
もブロック消去した後、該ブロックに含まれるメモリセ
ルが全て消去されたか否かを判定する判定手段をさらに
備えることを特徴とする請求項7に記載のメモリコント
ローラ。 - 【請求項9】 複数のブロックを含むフラッシュメモリ
と、少なくとも論理ブロックアドレスに基づいて前記フ
ラッシュメモリにアクセスするメモリコントローラとを
備えるフラッシュメモリシステムであって、それぞれの
ブロックにとって有効でない論理ブロックアドレスが割
り当てられた不正マッピングブロックを検出する検出手
段を前記メモリコントローラが備えていることを特徴と
するフラッシュメモリシステム。 - 【請求項10】 前記各ブロックには、対応する論理ブ
ロックアドレスを格納する論理ブロックアドレス格納領
域が設けられており、前記検出手段は、前記論理ブロッ
クアドレス格納領域に格納された論理ブロックアドレス
を参照することによって前記不正マッピングブロックを
検出することを特徴とする請求項9に記載のフラッシュ
メモリシステム。 - 【請求項11】 フラッシュメモリに含まれる各ブロッ
クに対して割り当てられた論理ブロックアドレスを検出
する第1のステップと、前記検出された論理ブロックア
ドレスがそれぞれのブロックにとって有効でない論理ブ
ロックアドレスであるか否かを判別する第2のステップ
とを備えることを特徴とするフラッシュメモリの制御方
法。 - 【請求項12】 前記第1のステップは、前記各ブロッ
クに対して割り当てられた論理ブロックアドレスを前記
各ブロックから読み出し、これに基づいてアドレス変換
テーブルを作成するステップであり、前記第2のステッ
プは、前記アドレス変換テーブルを参照することによっ
て、それぞれのブロックにとって有効でない論理ブロッ
クアドレスが割り当てられた不正マッピングブロックが
存在するか否かを判別するステップであることを特徴と
する請求項11に記載のフラッシュメモリの制御方法。 - 【請求項13】 前記不正マッピングブロックをブロッ
ク消去する第3のステップをさらに備えることを特徴と
する請求項11または12に記載のフラッシュメモリの
制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002143378A JP3999564B2 (ja) | 2002-05-17 | 2002-05-17 | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002143378A JP3999564B2 (ja) | 2002-05-17 | 2002-05-17 | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003337757A true JP2003337757A (ja) | 2003-11-28 |
JP3999564B2 JP3999564B2 (ja) | 2007-10-31 |
Family
ID=29703416
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002143378A Expired - Lifetime JP3999564B2 (ja) | 2002-05-17 | 2002-05-17 | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3999564B2 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100845137B1 (ko) | 2006-10-02 | 2008-07-09 | 삼성전자주식회사 | 메모리 장치의 배드 블록 주소를 번역하는 방법, 메모리장치의 배드 블록 주소를 번역하는 장치 및 이를 포함하는메모리 장치 컨트롤러 |
WO2009110076A1 (ja) * | 2008-03-05 | 2009-09-11 | 富士通株式会社 | 携帯端末および携帯端末の起動方法 |
US7917688B2 (en) | 2007-01-11 | 2011-03-29 | Hitachi, Ltd. | Flash memory module, storage apparatus using flash memory module as recording medium, and address translation table verification method for flash memory module |
JP2012190331A (ja) * | 2011-03-11 | 2012-10-04 | Toshiba Corp | データ記憶装置及びテーブル管理方法 |
-
2002
- 2002-05-17 JP JP2002143378A patent/JP3999564B2/ja not_active Expired - Lifetime
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100845137B1 (ko) | 2006-10-02 | 2008-07-09 | 삼성전자주식회사 | 메모리 장치의 배드 블록 주소를 번역하는 방법, 메모리장치의 배드 블록 주소를 번역하는 장치 및 이를 포함하는메모리 장치 컨트롤러 |
US7917688B2 (en) | 2007-01-11 | 2011-03-29 | Hitachi, Ltd. | Flash memory module, storage apparatus using flash memory module as recording medium, and address translation table verification method for flash memory module |
US8086789B2 (en) | 2007-01-11 | 2011-12-27 | Hitachi, Ltd. | Flash memory module, storage apparatus using flash memory module as recording medium and address translation table verification method for flash memory module |
WO2009110076A1 (ja) * | 2008-03-05 | 2009-09-11 | 富士通株式会社 | 携帯端末および携帯端末の起動方法 |
JP2012190331A (ja) * | 2011-03-11 | 2012-10-04 | Toshiba Corp | データ記憶装置及びテーブル管理方法 |
Also Published As
Publication number | Publication date |
---|---|
JP3999564B2 (ja) | 2007-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4058322B2 (ja) | メモリカード | |
JP4165990B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリへのデータの書き込み方法 | |
JP3921174B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
US9075740B2 (en) | Memory system | |
JP3692313B2 (ja) | 不揮発性メモリの制御方法 | |
US7330995B2 (en) | Nonvolatile memory apparatus which prevents destruction of write data caused by power shutdown during a writing process | |
JPWO2005083573A1 (ja) | 半導体メモリ装置 | |
JP2005190288A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 | |
TWI651650B (zh) | 記憶體管理方法及使用所述方法的儲存控制器 | |
JP4236485B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 | |
JP4233213B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP2003337757A (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4433792B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 | |
JP2005018490A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム | |
JP4316824B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP3826115B2 (ja) | 記憶装置、メモリ管理方法及びプログラム | |
JP2008112455A (ja) | メモリカード | |
JP4213053B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 | |
JP4419525B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 | |
JP4222879B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 | |
JP4068594B2 (ja) | フラッシュメモリコントローラ、フラッシュメモリシステム、及びフラッシュメモリの制御方法 | |
JP4332108B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4251950B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 | |
JP2005293177A (ja) | メモリコントローラ及びフラッシュメモリシステム | |
JP4561110B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050418 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20051130 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070322 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070327 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070528 |
|
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: 20070731 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070809 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 3999564 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100817 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100817 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110817 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120817 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130817 Year of fee payment: 6 |
|
EXPY | Cancellation because of completion of term |