JP2007156846A - メモリコントローラ及びフラッシュメモリシステム - Google Patents

メモリコントローラ及びフラッシュメモリシステム Download PDF

Info

Publication number
JP2007156846A
JP2007156846A JP2005351347A JP2005351347A JP2007156846A JP 2007156846 A JP2007156846 A JP 2007156846A JP 2005351347 A JP2005351347 A JP 2005351347A JP 2005351347 A JP2005351347 A JP 2005351347A JP 2007156846 A JP2007156846 A JP 2007156846A
Authority
JP
Japan
Prior art keywords
physical
zone
blocks
block
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.)
Granted
Application number
JP2005351347A
Other languages
English (en)
Other versions
JP3934659B1 (ja
Inventor
Naoki Mukoda
直樹 向田
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.)
TDK Corp
Original Assignee
TDK 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 TDK Corp filed Critical TDK Corp
Priority to JP2005351347A priority Critical patent/JP3934659B1/ja
Application granted granted Critical
Publication of JP3934659B1 publication Critical patent/JP3934659B1/ja
Publication of JP2007156846A publication Critical patent/JP2007156846A/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】本発明は、フラッシュメモリの特定の物理ゾーンに不良ブロックが集中した場合に、その物理ゾーンが必要とする有効ブロックの数を確保できなくなることを回避できるようにする。
【解決手段】フラッシュメモリ内の全ブロックをサーチして、各物理ゾーンに有効ブロックが均等に配分されるように、各物理ゾーンに割当られる物理ブロックの範囲を決定する。
【選択図】図6

Description

本発明は、メモリコントローラ及び当該メモリコントローラを備えるフラッシュメモリシステムに関する。
近年、不揮発性の記憶媒体であるフラッシュメモリの開発が盛んに行われ、デジタルカメラ等の情報機器(ホストシステム)の記憶媒体として普及している。
このような機器が扱うデータが大容量化したことに伴い、フラッシュメモリの記憶容量も大容量化が進んでいる。このように大容量化したフラッシュメモリの記憶領域を円滑に管理するため、近年は、この記憶領域を複数のゾーンに分割して管理する手法が用いられている(例えば特許文献1を参照)。
従来の物理ゾーンの構成では、図9に示すように、そのフラッシュメモリが有する全物理ブロックが先頭から均等にn個(図9では、4個)に分割され、同一サイズのn個の物理ゾーンが構成されている。
特開2005−18490号公報
各物理ゾーンに含まれている物理ブロック数が均一であると、初期不良の物理ブロックが特定の領域に集中していた場合、その領域に割り当てられた物理ゾーンが必要とする有効ブロックの必要数を確保することができないという問題が生じる。又、必要とする有効ブロック数を確保できた場合であっても、有効ブロックの実数と必要数の差が小さい物理ゾーンでは、許容できる後天性の不良ブロック(使用開始後に劣化して使用できなくなった物理ブロック)の数が少ないので、使用中に有効ブロックの実数が必要数より少なくなってしまう確率が高くなる。更に、特定の物理ゾーンへのアクセスが集中した場合に、その物理ゾーンに含まれる物理ブロックの劣化(不良ブロック化)だけが早まり、物理ゾーンが必要とする有効ブロックの数が足りなくなってしまう場合もある。
本発明は上記の実情に鑑みてなされたもので、特定の領域に不良ブロックが集中した場合でも、その領域に割当てられた物理ゾーンが必要とする有効ブロック数を確保できなくなることを避けることができるメモリコントローラ、及び当該メモリコントローラを備えるフラッシュメモリシステムを提供することを目的とする。
上記目的を達成するため、本発明のメモリコントローラは、
ホストシステムからの命令に応答して前記フラッシュメモリへのアクセスを制御するメモリコントローラであって、
前記フラッシュメモリにおける消去単位である物理ブロックを複数個集めた複数の物理ゾーンと前記ホストシステムにおけるアクセス単位であるセクタを複数集めた論理ゾーンとの対応関係を管理するゾーン管理手段と、
前記各物理ゾーン内の有効ブロック数に基づいて、前記各物理ゾーンに属する前記物理ブロックの範囲を設定する物理ゾーン管理手段と、
前記物理ゾーン設定手段によって設定された前記各物理ゾーンに属する前記物理ブロックの範囲に基づいて前記各物理ブロックが属する前記物理ゾーンを決定する物理ゾーン管理手段と、を備えることを特徴とする。
前記物理ゾーン設定手段は、例えば、前記物理ゾーン内の有効ブロック数が最大の物理ゾーンと最小の物理ゾーンの有効ブロック数の差が小さくなるように、前記各物理ゾーンに属する前記物理ブロックの範囲を設定する。
前記物理ゾーン設定手段は、例えば、前記物理ゾーン内の有効ブロック数が最大の物理ゾーンと最小の物理ゾーンの有効ブロック数の差が1以下になるように、前記各物理ゾーンに属する前記物理ブロックの範囲を設定する。
前記物理ゾーン設定手段は、例えば、前記各物理ゾーンに属する前記物理ブロックの範囲に関する情報を含むゾーン境界情報を、前記フラッシュメモリに格納する。
前記物理ゾーン管理手段は、例えば、前記ゾーン境界情報に基づいて、前記各物理ブロックが属する前記物理ゾーンを決定する。
前記物理ゾーン設定手段は、例えば、前記各物理ゾーンに属する前記物理ブロックの範囲を再設定することにより、属する物理ゾーンが変化した物理ブロックの記憶データを、前記再設定の前に属していた物理ゾーン内の物理ブロックに移動する手段を含む。
前記物理ゾーン設定手段は、例えば、前記各物理ゾーン内の有効ブロック数の総和が所定数以下となる場合に、前記物理ゾーンの数を減少させて、前記各物理ゾーンに属する物理ブロックの範囲を再設定する手段を含む。
この発明のフラッシュメモリシステムは、上述のメモリコントローラと、フラッシュメモリと、から構成される。
この発明のメモリコントローラは、物理ゾーン設定手段を備えているので、各物理ゾーンの有効ブロックの実数と必要数の差を均等に配分し、各物理ゾーンで許容できる後天性の不良ブロックの数を均等化することができる。更に、何らかの原因により、特定の物理ゾーンに含まれる有効ブロックの数が不足した場合などに、物理ゾーンと物理ブロックとの関係を適正に再設定して、各物理ゾーンを有効な状態に維持することが可能となる。
以下、図面に基づき、本発明の実施の形態について詳細に説明する。
図1は、本発明に係るフラッシュメモリシステム1を概略的に示すブロック図である。図1に示すように、フラッシュメモリシステム1は、フラッシュメモリ2と、それを制御するコントローラ3で構成されている。
なお、フラッシュメモリシステム1は、外部バス13を介してホストシステム4と接続される。ホストシステム4は、ホストシステム4の全体の動作を制御するためのCPU(Central Processing Unit)、フラッシュメモリシステム1との情報の授受を担うコンパニオンチップ等から構成される。ホストシステム4は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
フラッシュメモリ2は、不揮発性メモリであり、レジスタと、メモリセルアレイと、から構成される。フラッシュメモリ2は、レジスタとメモリセルとの間でデータの複写を行って、データの書き込み又は読み出しを行う。
メモリセルアレイは、複数のメモリセル群と、ワード線と、を備える。各メモリセル群は、複数のメモリセルが直列に接続されたものである。ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、データの複写、即ち、レジスタから選択されたメモリセルへの複写又は選択されたメモリセルからレジスタへのデータの複写が行われる。
メモリセルアレイを構成するメモリセルは、2つのゲートを備えたMOSトランジスタによって構成される。ここで、上側のゲート、下側のゲートは、それぞれ、コントロールゲート、フローティングゲートと呼ばれており、フローティングゲートに電荷(電子)を注入若しくはフローティングゲートから電荷(電子)を排出することによって、データの書き込み若しくはデータの消去が行われる。
このフローティングゲートは、周囲を絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。なお、フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧をコントロールゲートとフローティングゲート間に印加する。また、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧をコントロールゲートとフローティングゲート間に印加する。
ここで、フローティングゲートに電子が注入されている状態が書き込み状態であり、論理値「0」に対応する。また、フローティングゲートから電子が排出されている状態が消去状態であり、論理値「1」に対応する。
フラッシュメモリ2のアドレス空間を図2に示す。フラッシュメモリ2のアドレス空間は、“ページ”及び“ブロック(物理ブロック)”で構成されている。
ページは、フラッシュメモリ2にて行われるデータ読み出し動作及びデータ書き込み動作における処理単位である。物理ブロックは、フラッシュメモリ2にて行われるデータ消去動作における処理単位であり、1個又は複数個のページで構成されている。
ホストシステム側のアドレス空間は、セクタ(1セクタは512バイト)単位のアドレスであるLBA(Logical Block Address)で管理されており、セクタを複数個まとめたものを論理ブロックとし、論理ブロックを複数まとめたものを論理ゾーンとしている。又、論理ブロックに付けた通番を論理ブロック番号LBNとし、論理ゾーン内での論理ブロックの通番を論理ゾーン内ブロック番号LZIBNとしている。
図2に示したフラッシュメモリでは、1つのページは、1セクタ(512バイト)のユーザ領域25と、16バイトの冗長領域26で構成され、1つの物理ブロックは32個のページで構成されている。なお、1つのページが4セクタのユーザ領域と64バイトの冗長領域で構成され、1つの物理ブロックが64個のページで構成されているフラッシュメモリもある。ユーザ領域25は、ホストシステム4から供給されるユーザデータを格納する。
冗長領域26は、エラーコレクティングコード、論理ブロック情報、ブロックステータス(フラグ)等の付加データを記録するための領域である。
エラーコレクティングコードは、ユーザ領域25に記憶されているデータに含まれる誤りを検出し、訂正するためのデータである。
論理ブロック情報は、フラッシュメモリ2の各物理ブロックに含まれている少なくとも1つのユーザ領域25に有効なデータが格納されているとき、そのデータに対応する論理ブロックを特定するための情報(論理ゾーン内ブロック番号LZIBN又は論理ブロック番号LBN)である。なお、ユーザ領域25に有効なデータが格納されていない物理ブロックについては、そのブロックの冗長領域26に、論理ブロック情報は格納されていない。
従って、冗長領域26に論理ブロック情報が格納されているか否かを判定することにより、その冗長領域26が含まれている物理ブロックに有効なデータが格納されているか否かを判定することができる。つまり、冗長領域26に論理アドレス情報が格納されていないとき、その物理ブロックには、有効なデータが格納されていないと判断される。
上述のように、1つの物理ブロックは、複数のページを含んでいる。これらのページには、データの上書きができない。このため、1つのページに格納されたデータのみを書き換えるときであっても、そのページが含まれた物理ブロック内の全ページに格納されたデータを、再度書き込まなければならない。
つまり、通常のデータ書き換えでは、書き換えるページが含まれる物理ブロックの全ページに格納されたデータが、別の消去されている物理ブロックに書き込まれる。この際、データが変更されないページに格納されているデータは、以前に格納されていたデータがそのまま再度書き込まれる。
上記のようにデータを書き換えるにあたっては、書き換えられたデータは、以前に格納されていた物理ブロックとは異なる物理ブロックに書き込まれる。このため、論理ブロックと物理ブロックの間の対応関係は、フラッシュメモリ2にてデータが書き換えられる毎に、動的に変化する。
従って、論理ブロックと物理ブロックとの対応関係を管理する必要があり、通常、この対応関係は、アドレス変換テーブルによって管理される。このアドレス変換テーブルは、各物理ブロックの先頭ページの冗長領域26に記憶されている論理ブロック情報(LZIBN又はLBN)に基づいて作成される。なお、このような動的なアドレス管理手法は、フラッシュメモリを用いたメモリシステムでは一般的に行われている手法である。
ブロックステータス(フラグ)は、ブロックの良否を示すフラグである。正常にデータの書き込み等を行うことができないブロックは、不良ブロックと判別され、冗長領域26には、不良ブロックであることを示すブロックステータス(フラグ)が書き込まれる。従って、不良ブロックであることを示すブロックステータス(フラグ)が書き込まれていない物理ブロックが有効ブロックとして取扱われる。
フラッシュメモリ2は、コントローラ3から、データ、アドレス情報、内部コマンド等を受信して、データの読み出し処理、書き込み処理、ブロック消去処理、転送処理等の各処理を行う。
ここで、内部コマンドとは、コントローラ3がフラッシュメモリ2に処理の実行を指示するためのコマンドであり、フラッシュメモリ2は、コントローラ3から与えられる内部コマンドに従って動作する。これに対して、外部コマンドとは、ホストシステム4がフラッシュメモリシステム1に対して処理の実行を指示するためのコマンドである。
コントローラ3は、図1に示すように、マイクロプロセッサ6と、ホストインターフェースブロック7と、ワークエリア8と、バッファ9と、フラッシュメモリインターフェースブロック10と、ECC(エラー・コレクティング・コード)ブロック11と、ROM(Read Only Memory)12と、から構成される。これら機能ブロックによって構成されるコントローラ3は、一つの半導体チップ上に集積される。以下に各機能ブロックについて説明する。
マイクロプロセッサ6は、ROM12に記憶されているプログラムに従って、コントローラ3の全体の動作を制御する。例えば、マイクロプロセッサ6は、各種処理等を定義したコマンドセットをROM12から読み出してフラッシュメモリインターフェースブロック10に供給し、フラッシュメモリインターフェースブロック10に処理を実行させる。
ホストインターフェースブロック7は、ホストシステム4との間の、データ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。ホストシステム4よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口としてフラッシュメモリシステム1の内部(例えば、バッファ9)に取り込まれる。また、フラッシュメモリシステム1からホストシステム4に供給されるデータ等は、ホストインターフェースブロック7を出口としてホストシステム4に供給される。
図1に示すワークエリア8は、フラッシュメモリ2の制御に必要なデータが一時的に格納される作業領域であり、複数のSRAM(Static Random Access Memory)セルによって構成される。
バッファ9は、フラッシュメモリ2から読み出されたデータ及びフラッシュメモリ2に書き込むべきデータを一時的に蓄積する。すなわち、フラッシュメモリ2から読み出されたデータは、ホストシステム4が受け取り可能な状態となるまでバッファ9に保持され、フラッシュメモリ2に書き込むべきデータは、フラッシュメモリ2が書き込み可能な状態となるまでバッファ9に保持される。
フラッシュメモリインターフェースブロック10は、内部バス14を介して、フラッシュメモリ2にアクセスする。
ECCブロック11は、フラッシュメモリ2に書き込むデータに付加されるエラーコレクティングコードを生成するとともに、読み出しデータに付加されたエラーコレクティングコードに基づいて、読み出したデータに含まれる誤りを検出・訂正する。
ROM12は、マイクロプロセッサ6による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。具体的には、ROM12は、例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムを格納する。
フラッシュメモリ2のいずれかの領域には、フラッシュメモリにアクセスする際に必要となる管理情報が格納されている。尚、管理情報は、フラッシュメモリに格納せずに、メモリコントローラ内に設けた不揮発性メモリ部、又は、外部の不揮発性メモリに格納してもよい。
この管理情報は、図3(a)に示すように、フラッシュメモリ2の物理ゾーンを規定するゾーン境界情報を含み、このゾーン境界情報に基づいて4個の物理ゾーンに振り分けられる。ここで、物理ブロックに付けた通番を物理ブロックアドレスPBAとし、物理ゾーンに付けた通番を物理ゾーン番号PZNとしている。このゾーン境界情報に基づいて、フラッシュメモリ2の2048個の物理ブロックをPZN#0〜#3の物理ゾーンに割り当てた場合、PBA#0〜PBA#511の物理ブロックがPZN#0の物理ゾーンに区分され、PBA#512〜PBA#1023の物理ブロックがPZN#1の物理ゾーンに区分され、PBA#1024〜PBA#1535の物理ブロックがPZN#2の物理ゾーンに区分され、PBA#1536〜PBA#2047の物理ブロックがPZN#3の物理ゾーンに区分されている。つまり、図3(a)の例では、各物理ゾーン(PZN#0〜PZN#3)は同一のサイズに設定されている。
尚、図3(a)の例では、各物理ゾーンの境界を示すゾーン境界情報が、各物理ゾーンの最終ブロックの物理アドレス(PBA)で示されているが、他の情報、例えば各物理ゾーンの先頭ブロックの物理アドレス(PBA)や各ゾーンに含まれる物理ブロックの数で示してもよい。
また、この管理情報は、ゾーン対応情報を含んでもよい。このゾーン対応情報は、論理ゾーンと物理ゾーンとを対応付ける情報である。図3(a)の例では、LZN#0の論理ゾーンは、PZN#0の物理ゾーンに対応付けられ、LZN#1の論理ゾーンは、PZN#1の物理ゾーンに対応付けられ、LZN#2の論理ゾーンは、PZN#2の物理ゾーンに対応付けられ、LZN#3の論理ゾーンは、PZN#3の物理ゾーンに対応付けられている。
尚、論理ゾーンと物理ゾーンの対応関係が固定の場合(例えば、LZNとPZNが同じ値の論理ゾーンと物理ゾーンを対応付ける場合)、ゾーン対応情報は無くてもよい。
図4は、図3(a)に示された管理情報に基づいて構成した物理ゾーンである。PBA#0〜#2047の2048個の物理ブロックが、PZN#0〜PZN#3の物理ゾーンに512個ずつ割り当てられる。従って、各物理ゾーンに割り当られた物理ブロックの各物理ゾーン内での通番である物理ゾーン内ブロック番号(LZIBN)は、#0〜#511になっている。又、ホストシステムのアドレス空間も、物理ゾーンの数と等しい4個の論理ゾーンで構成され、各論理ゾーンには500個の論理ブロックが割り当てられている。
つまり、LZN#0の論理ゾーンにLBN#0〜#499(LZN#0の論理ゾーンの論理ゾーン内ブロック番号LZIBN#0〜#499)の論理ブロックが割り当てられ、LZN#1の論理ゾーンにLBN#500〜#999(LZN#1の論理ゾーンの論理ゾーン内ブロック番号LZIBN#0〜#499)の論理ブロックが割り当てられ、LZN#2の論理ゾーンにLBN#1000〜#1499(LZN#2の論理ゾーンの論理ゾーン内ブロック番号LZIBN#0〜#499)の論理ブロックが割り当てられ、LZN#3の論理ゾーンにLBN#1500〜#1999(LZN#3の論理ゾーンの論理ゾーン内ブロック番号LZIBN#0〜#499)の論理ブロックが割り当てられる。尚、各論理ゾーンに割り当てる論理ブロックの数は適宜設定する。
ここで、論理ゾーンを構成する論理ブロックの数500と物理ゾーンを構成する物理ブロックの数512との差の12、即ち、12物理ブロックが、不良ブロックや書替時の転送先等を考慮した「余裕」又は「予備」である。不良ブロックには、初期不良によるものと、フラッシュメモリ2を使用している間に、不良ブロック化するものがある。従って、使用開始前に初期不良の不良ブロックの数を調べ、各物理ゾーンに含まれる有効ブロック(良品の物理ブロック)の数が等しくなるようにゾーン境界情報を設定することが好ましい。
また、論理ブロックと物理ブロックとの対応関係を示したアドレス変換テーブルは、論理ゾーン毎に作成される。相互に対応する論理ゾーンと物理ゾーンのアドレス変換テーブルは、論理ゾーン内での論理ブロックの通番である論理ゾーン内ブロック番号LZIBNと物理ゾーン内ブロック番号PZIBNとの対応関係で示すことができる。図3(b)は、LZIBNとPZIBNの対応関係で示されたアドレス変換テーブルの例であり、LZIBN#0の論理ブロックがPZIBN#10の物理ブロックに対応し、LZIBN#1の論理ブロックがPZIBN#33の物理ブロックに対応している。このアドレス変換テーブルは、物理ブロックの冗長領域に書き込まれているLZIBN又はLBNに基づいて起動時又はアクセス時に作成される。
次に、フラッシュメモリシステム1の動作を説明する。
ホストシステム4がフラッシュメモリ2にデータを書き込む場合、ホストシステム4は、ホストインターフェースブロック7に、書き込むデータのセクタ数、書き込むデータのLBAの先頭値を設定し、さらに、書き込み処理を指示する外部コマンドを設定する。
コントローラ3は、外部コマンドに従って、書き込み動作を開始し、LBAに基づいて、論理ブロックを判別し、さらに、その論理ブロックが属する論理ゾーンのLZNと論理ゾーン内ブロック番号LZIBNを判別する。ここで、1個の論理ブロックが32個のセクタで構成されていた場合、複数ビット表示したLBAの下位5ビットを除いた上位ビットがLBNであり、LBNを各論理ゾーンに含まれる論理ブロックの数で割ったときの商がLZNとなり、余りがLZIBNになる。
続いて、論理ゾーンに対応する物理ゾーンのゾーン境界情報を取得し、その物理ゾーンに割り当てられている物理ブロックの範囲を判別する。更に、その物理ゾーンのアドレス変換テーブルと空きブロックテーブルを、その物理ゾーンに割り当てられた物理ブロックの冗長領域に書き込まれている論理ブロック情報とブロックステータスに基づいて作成する。アドレス変換テーブルと空きブロックテーブルを作成するときは、作成対象の物理ゾーンに割り当てられた物理ブロックをゾーン境界情報に基づいて判断したうえで、作成対象の物理ゾーンに割り当てられた物理ブロックの冗長領域に書き込まれている論理ブロック情報とブロックステータスを参照して作成する。
書き込み先のLZIBNに対応する物理ブロックのPZIBNを、アドレス変換テーブルを参照して求め、データの書き込み先が求めたPZIBNの物理ブロックの空きページに対応している場合は、そのページにデータを書き込む。空きページに対応していなかった場合は、データの書き込み先の空きブロックを、空きブロックテーブルを参照して選択し、選択した空きブロックのPZIBNにより指示される物理ブロックにデータを書き込む。書き込み後に、アドレス変換テーブルの論理ブロックと物理ブロックとの対応関係を更新する。
尚、物理ゾーン内のアクセス対象の物理ブロックのPZIBNからその物理ブロックのPBAを求めるときは、その物理ゾーンの先頭物理ブロックのPBAをアクセス対象の物理ブロックのPZIBNに加算する。各物理ゾーンの先頭物理ブロックのPBAはゾーン境界情報を参照することによって求められる。例えば、図3(a)に示されたゾーン境界情報に基づいて物理ゾーンが構成されている場合に、PZN#2の物理ブロックのPBAは、その物理ブロックのPZIBNに「1535」を加算することによって求められる。
次に、使用開始後にフラッシュメモリ2の物理ブロックの一部が不良ブロック化し、特定の各物理ゾーン内の有効ブロックの数が論理ゾーン内の論理ブロックの数500と等しいか又は少なくなってしまった場合について説明する。
このような場合に本実施形態のコントローラ3は、物理ゾーンの構成を最適な状態に調整するため、物理ゾーンの再設定処理を行う。
この物理ゾーンの再設定処理を図6と図7を参照して説明する。
マイクロプロセッサ6は、フラッシュメモリ2の各物理ブロックの冗長領域26に格納されているステータスフラグをチェックすることにより、全物理ブロックについて不良ブロックか否かの判別を行う(ステップS11)。
次に、管理情報に基づく現在の物理ゾーンの境界で、全て(4つ)の物理ゾーンに含まれる有効ブロックの数が500+α(αは例えば、5)以上であるか否かを判別する(ステップS12)。全ての物理ゾーンに含まれる有効ブロックの数が500+α以上であると判別した場合、論理ゾーンの境界変更が不要であると判断し(ステップS12;No)、物理ゾーンの調整は行わずに、再設定処理を終了する。
一方、少なくとも1つの物理ゾーンが有効ブロックを500+α未満しか有していないと判別した場合、物理ゾーンの構成の変更が必要であると判断し(ステップS12;Yes)、処理はステップS13に進む。
ステップS13において、マイクロプロセッサ6は、全て(4つ)の物理ゾーンが有効ブロックを、500+α個以上有するように、図3(a)に示す管理情報のゾーン境界情報を書き換える。
具体的には、図7に示すように、まず、マイクロプロセッサ6は、ステップS11での判別に基づいて、有効ブロックの総数を求める(ステップ21)。次に、有効ブロック総数をゾーン数(4)で割り、その商を1物理ゾーンの物理ブロックの数とする(ステップS22)。
次に、各物理ゾーンがステップS22で求めた数の有効ブロックを有するように、PZN#0の物理ゾーンから順に連続する物理ブロックを割り当てる(ステップS23)。例えば、有効ブロックの総数が2020であった場合には、2020/4=505と判別し、PBA#0から始まるPZN#0の物理ゾーンに505個の有効ブロックが含まれるように、この物理ゾーン(PZN#0)の最終ブロックPBA#iを決定し、PBA#i+1から始まるPZN#1の物理ゾーンに505個の有効ブロックが含まれるように、この物理ゾーン(PZN#1)の最終ブロックのPBA#jを決定し、PBA#j+1から始まるPZN#2の物理ゾーンに505個の有効ブロックが含まれるように、この物理ゾーンの最終ブロックのPBA#kを決定する。このようにして、ゾーン境界情報を決定することにより、PZN#0〜#3の各物理ゾーンに505個の有効ブロックが均等に割当られる。
なお、ステップS22で、余りが発生した場合、即ち、有効ブロックの総数が物理ゾーン数の整数倍でない場合には、余りの物理ブロックは、例えば、物理ゾーン間の有効ブロックの個数の差が1以下となるように、任意の物理ゾーンに適宜分配する。
最後に、このようにして決定したゾーン境界情報を新たな管理情報として設定する(ステップS24)。
この結果、図5(a)に示すようにゾーン境界情報が変更された場合、PZN#0の物理ゾーンに含まれる物理ブロックは518個となり、PZN#1の物理ゾーンに含まれる物理ブロックは506個となり、PZN#2の物理ゾーンに含まれる物理ブロックは514個となり、PZN#3の物理ゾーンに含まれる物理ブロックは510個となる。ただし、PZN#0の物理ゾーンに割り当てられたPBA#0〜#517の範囲に含まれる有効ブロックの数と、PZN#1の物理ゾーンに割り当てられたPBA#518〜#1023の範囲に含まれる有効ブロックの数と、PZN#2の物理ゾーンに割り当てられたPBA#1024〜#1537の範囲に含まれる有効ブロックの数と、PZN#3の物理ゾーンに割り当てられたPBA#1538〜#2047の範囲に含まれる有効ブロックの数とは等しくなる(又は差が最大1)。
次に、図6のステップS14で、属する物理ゾーンが移動した書き込み済みの物理ブロックが存在するか否かを判別する。そのような物理ブロックが存在する場合(ステップS14;Yes)には、その物理ブロックに格納されていたデータを、元の物理ゾーンに属す任意の空き物理ブロックに書き込み、元の物理ブロックのデータを消去又は無効化する(ステップS15)。
例えば、ステップS13の物理ゾーン設定処理により、物理ゾーンの構成が図4の状態から、図5の状態に変更されたとする。この場合、例えば、PBA#517の物理ブロックは、PZN#1からPZN#0に物理ゾーンが変更されている。そこで、PBA#517の物理ゾーンのデータを元のPZN#1のいずれかの空き物理ブロック、即ち、PBN#518〜#1023の物理ブロックのうちの任意の空き領域に移動し、PBA#517の記憶データを消去する。
このような構成とすれば、特定の物理ゾーンに不良ブロックが集中した場合でも、その物理ゾーンが必要とする有効ブロックの必要数を確保できなくなるということを回避することができる。
以上に説明したように、各物理ゾーンに含まれる物理ブロックの数を適宜設定すれば、特定の物理ゾーンで有効ブロックの必要数が確保できなくなることを回避することができる。又、このような物理ゾーン設定処理を行った場合、各物理ゾーンに割り当てられた物理ブロックの範囲をゾーン境界情報として記憶しておけば、このゾーン境界情報に基づい
て、各物理ゾーンに割り当てられた物理ブロックの範囲を判断することができる。
なお、図6及び図7に示した物理ゾーン設定処理では、物理ゾーンの数を変更していない。しかし、例えば、図8に示すように、有効ブロックの全数が、従前の物理ゾーンの数を維持するために必要な数よりも小さくなった場合(ステップS31;No)に、物理ゾーンの数を従前の値よりも−1して(ステップS32)、更新された物理ゾーン数で、ステップS13の物理ゾーンの再設定を行うようにしてもよい。
なお、上記実施の形態における、論理ゾーン数、物理ゾーン数、論理ブロック数、物理ゾーン数、ページ数、セクタ数などは例示にすぎず、本発明は、これらに限定されるものではない。
また、物理ゾーンの設定は任意のタイミングで実行できるが、データが書き込まれていない状態で実行することが好ましい。
また、各物理ゾーンに配分する有効ブロックの数は必ずしも同一である必要はなく、互いに異なっていてもよい。
本発明の実施の形態に係るフラッシュメモリシステムを概略的に示すブロック図である。 この発明の実施の形態のフラッシュメモリのアドレス空間の構造を概略的に示す図である。 管理情報の例とアドレス変換テーブルの例を示す図である。 図3に示す管理情報とアドレス変換テーブルとから特定されるフラッシュメモリの構成を示す図である。 更新された管理情報の例と、更新された管理情報から特定されるフラッシュメモリの構成を示す図である。 電源投入時などに、マイクロプロセッサが実行する物理ゾーンを設定する処理を説明するためのフローチャートである。 図6に示す物理ゾーン再設定処理の詳細を説明するためのフローチャートである。 図6に示す物理ゾーン設定処理の変形例を説明するための部分的なフローチャートである。 従来のフラッシュメモリのアドレス空間の構造を概略的に示す図である。
符号の説明
1 フラッシュメモリシステム
2 フラッシュメモリ
3 コントローラ
4 ホストシステム
6 マイクロプロセッサ
7 ホストインターフェースブロック
8 ワークエリア
9 バッファ
10 フラッシュメモリインターフェースブロック
11 ECCブロック
12 ROM
13 外部バス
14 内部バス

Claims (8)

  1. ホストシステムからの命令に応答して前記フラッシュメモリへのアクセスを制御するメモリコントローラであって、
    前記フラッシュメモリにおける消去単位である物理ブロックを複数個集めた複数の物理ゾーンと前記ホストシステムにおけるアクセス単位であるセクタを複数集めた論理ゾーンとの対応関係を管理するゾーン管理手段と、
    前記各物理ゾーン内の有効ブロック数に基づいて、前記各物理ゾーンに属する前記物理ブロックの範囲を設定する物理ゾーン設定手段と、
    前記物理ゾーン設定手段によって設定された前記各物理ゾーンに属する前記物理ブロックの範囲に基づいて前記各物理ブロックが属する前記物理ゾーンを決定する物理ゾーン管理手段と、
    を備えることを特徴とするメモリコントローラ。
  2. 前記物理ゾーン設定手段は、前記物理ゾーン内の有効ブロック数が最大の物理ゾーンと最小の物理ゾーンの有効ブロック数の差が小さくなるように、前記各物理ゾーンに属する前記物理ブロックの範囲を設定することを特徴とする請求項1に記載のメモリコントローラ。
  3. 前記物理ゾーン設定手段は、前記物理ゾーン内の有効ブロック数が最大の物理ゾーンと最小の物理ゾーンの有効ブロック数の差が1以下になるように、前記各物理ゾーンに属する前記物理ブロックの範囲を設定することを特徴とする請求項1又は2に記載のメモリコントローラ。
  4. 前記物理ゾーン設定手段は、前記各物理ゾーンに属する前記物理ブロックの範囲に関する情報を含むゾーン境界情報を、前記フラッシュメモリに格納することを特徴とする請求項1乃至3のいずれか1項に記載のメモリコントローラ。
  5. 前記物理ゾーン管理手段は、前記ゾーン境界情報に基づいて、前記各物理ブロックが属する前記物理ゾーンを決定することを特徴とする請求項4に記載のメモリコントローラ。
  6. 前記物理ゾーン設定手段は、前記各物理ゾーンに属する前記物理ブロックの範囲を再設定することにより、属する物理ゾーンが変化した物理ブロックの記憶データを、前記再設定の前に属していた物理ゾーン内の物理ブロックに移動する手段を含む、ことを特徴とする請求項1乃至5のいずれか1項に記載のメモリコントローラ。
  7. 前記物理ゾーン設定手段は、前記各物理ゾーン内の有効ブロック数の総和が所定数以下となる場合に、前記物理ゾーンの数を減少させて、前記各物理ゾーンに属する物理ブロックの範囲を再設定する手段を含むことを特徴とする請求項1乃至6のいずれか1項に記載のメモリコントローラ。
  8. 請求項1乃至7のいずれか1項に記載のメモリコントローラと、フラッシュメモリと、から構成される、
    ことを特徴とするフラッシュメモリシステム。
JP2005351347A 2005-12-05 2005-12-05 メモリコントローラ及びフラッシュメモリシステム Expired - Fee Related JP3934659B1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005351347A JP3934659B1 (ja) 2005-12-05 2005-12-05 メモリコントローラ及びフラッシュメモリシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005351347A JP3934659B1 (ja) 2005-12-05 2005-12-05 メモリコントローラ及びフラッシュメモリシステム

Publications (2)

Publication Number Publication Date
JP3934659B1 JP3934659B1 (ja) 2007-06-20
JP2007156846A true JP2007156846A (ja) 2007-06-21

Family

ID=38241134

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005351347A Expired - Fee Related JP3934659B1 (ja) 2005-12-05 2005-12-05 メモリコントローラ及びフラッシュメモリシステム

Country Status (1)

Country Link
JP (1) JP3934659B1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011197788A (ja) * 2010-03-17 2011-10-06 Toshiba Corp メモリシステム
JP2012108627A (ja) * 2010-11-15 2012-06-07 Toshiba Corp メモリシステム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011197788A (ja) * 2010-03-17 2011-10-06 Toshiba Corp メモリシステム
TWI475561B (zh) * 2010-03-17 2015-03-01 Toshiba Kk Memory system
JP2012108627A (ja) * 2010-11-15 2012-06-07 Toshiba Corp メモリシステム

Also Published As

Publication number Publication date
JP3934659B1 (ja) 2007-06-20

Similar Documents

Publication Publication Date Title
JP4171749B2 (ja) メモリコントローラおよびフラッシュメモリシステム
JP2010191782A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4636005B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4235646B2 (ja) メモリコントローラおよびフラッシュメモリシステム
JP4661497B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4661191B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4513786B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
JP3934659B1 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4241741B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4434171B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4655034B2 (ja) メモリコントローラ及びフラッシュメモリシステム並びにフラッシュメモリの制御方法
JP2007323159A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4177292B2 (ja) メモリンコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4177301B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4254933B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4697146B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2005292925A (ja) メモリコントローラ、フラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4000124B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP2008097339A (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4235595B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP4273109B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4213166B2 (ja) メモリコントローラおよびフラッシュメモリシステム
JP4304167B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4227989B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4366283B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070313

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070315

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: 20110330

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120330

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120330

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130330

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees