JP4710918B2 - メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 - Google Patents
メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 Download PDFInfo
- Publication number
- JP4710918B2 JP4710918B2 JP2008038983A JP2008038983A JP4710918B2 JP 4710918 B2 JP4710918 B2 JP 4710918B2 JP 2008038983 A JP2008038983 A JP 2008038983A JP 2008038983 A JP2008038983 A JP 2008038983A JP 4710918 B2 JP4710918 B2 JP 4710918B2
- Authority
- JP
- Japan
- Prior art keywords
- blocks
- flash memory
- data
- flash memories
- block
- 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.)
- Active
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Description
本発明は、メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
フラッシュメモリを記憶媒体として用いた情報記憶装置(フラッシュメモリシステム)では、ホストシステムからアクセス指示と共に与えられるユーザデータ以外のデータもフラッシュメモリに書き込まれることが多くなっている。フラッシュメモリに書き込まれるユーザデータ以外のデータとしては、例えば、アドレス変換テーブルのようなユーザデータを管理するために必要な情報(管理情報)や、フラッシュメモリに対するアクセスを制御するコントローラのファームウェアがある。例えば、特許文献1には、ファームウェアをフラッシュメモリに書き込む技術が開示されている。特許文献2には、論理ブロックと物理ブロックとの対応関係を示したアドレス変換テーブルをフラッシュメモリに書き込む技術が開示されている。
ところで、フラッシュメモリシステムに対するホストシステムからのアクセス速度を向上させるために、複数のフラッシュメモリを備え、これらのフラッシュメモリに並行して、又はインターリーブ方式でアクセスできるようにしたフラッシュメモリシステムが知られている。このようなフラッシュメモリシステムでは、例えば、異なるフラッシュメモリに属する複数個の物理ブロックで仮想ブロックが形成され、この仮想ブロックに対して論理ブロックが割り当てられる。この場合、各フラッシュメモリに含まれるユーザデータ用ブロック(ユーザデータの書き込み先として使用することができる物理ブロック)の個数は、均等であることが好ましい。
また、上述したような仮想ブロックが形成されない場合であっても、各フラッシュメモリに対して同じ容量の論理的な領域が割り当てられるような場合には、各フラッシュメモリに含まれるユーザデータ用ブロックの個数は均等であることが好ましい。
そこで、本発明は、各フラッシュメモリに含まれるユーザデータ用ブロックの個数が均等になるように記憶領域を管理する技術を提供することを目的とする。
本発明の第一の観点に従うメモリコントローラは、ホストシステムから与えられるアクセス指示に従って、物理ブロック単位で消去が行われる複数個のフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
それぞれの前記フラッシュメモリに含まれる不良ブロックの個数を計数する計数手段と、
複数個の前記フラッシュメモリ内の一部の物理ブロックを、複数個の前記フラッシュメモリに対するアクセスを制御又は管理するためのシステムデータが書き込まれるシステムブロックに割り当てるシステムブロック管理手段と、
1個又は複数個の前記システムブロックに、1個のデータとして又は複数個のデータに分割して前記システムデータを書き込むシステムデータ書き込み手段と、
前記システムブロックから前記システムデータを読み出すシステムデータ読み出し手段と、
前記システムデータに基づいて複数個の前記フラッシュメモリに対するアクセスを制御するアクセス制御手段と、
を備える。前記システムブロック管理手段は、それぞれの前記フラッシュメモリに含まれる不良ブロックの個数と前記システムブロックの個数との総和が均等化されるように、前記システムブロックの割り当てを行う。
それぞれの前記フラッシュメモリに含まれる不良ブロックの個数を計数する計数手段と、
複数個の前記フラッシュメモリ内の一部の物理ブロックを、複数個の前記フラッシュメモリに対するアクセスを制御又は管理するためのシステムデータが書き込まれるシステムブロックに割り当てるシステムブロック管理手段と、
1個又は複数個の前記システムブロックに、1個のデータとして又は複数個のデータに分割して前記システムデータを書き込むシステムデータ書き込み手段と、
前記システムブロックから前記システムデータを読み出すシステムデータ読み出し手段と、
前記システムデータに基づいて複数個の前記フラッシュメモリに対するアクセスを制御するアクセス制御手段と、
を備える。前記システムブロック管理手段は、それぞれの前記フラッシュメモリに含まれる不良ブロックの個数と前記システムブロックの個数との総和が均等化されるように、前記システムブロックの割り当てを行う。
好適な実施形態では、前記システムデータには、複数個の前記フラッシュメモリに対するアクセスを制御するためのファームウェアが含まれる。前記システムデータ読み出し手段は、起動時に前記システムブロックから前記ファームウェアを読み出す。
好適な実施形態では、前記アクセス制御手段は、異なる前記フラッシュメモリに属する複数個の物理ブロックを含むグループ単位で、複数個の前記フラッシュメモリに対するアクセスを制御する。
好適な実施形態では、前記システムブロック管理手段は、複数個の前記フラッシュメモリに含まれる不良ブロックの個数が変化したときに、それぞれの前記フラッシュメモリに含まれる不良ブロックの個数と前記システムブロックの個数との総和が均等化されるように、前記システムブロックの割り当てを変更する。
本発明の第二の観点に従うフラッシュメモリシステムは、上述のメモリコントローラと、前記メモリコントローラによってアクセスされる複数個のフラッシュメモリとを備える。
本発明の第三の観点に従う制御方法は、ホストシステムから与えられるアクセス指示に従って、物理ブロック単位で消去が行われる複数個のフラッシュメモリの制御方法であって、
それぞれの前記フラッシュメモリに含まれる不良ブロックの個数を計数する計数ステップと、
複数個の前記フラッシュメモリ内の一部の物理ブロックを、複数個の前記フラッシュメモリに対するアクセスを制御又は管理するためのシステムデータが書き込まれるシステムブロックに割り当てるシステムブロック管理ステップと、
1個又は複数個の前記システムブロックに、1個のデータとして又は複数個のデータに分割して前記システムデータを書き込むシステムデータ書き込みステップと、
前記システムブロックから前記システムデータを読み出すシステムデータ読み出しステップと、
前記システムデータに基づいて複数個の前記フラッシュメモリに対するアクセスを制御するアクセス制御ステップと、
を備える。前記システムブロック管理ステップでは、それぞれの前記フラッシュメモリに含まれる不良ブロックの個数と前記システムブロックの個数との総和が均等化されるように、前記システムブロックの割り当てが行われる。
それぞれの前記フラッシュメモリに含まれる不良ブロックの個数を計数する計数ステップと、
複数個の前記フラッシュメモリ内の一部の物理ブロックを、複数個の前記フラッシュメモリに対するアクセスを制御又は管理するためのシステムデータが書き込まれるシステムブロックに割り当てるシステムブロック管理ステップと、
1個又は複数個の前記システムブロックに、1個のデータとして又は複数個のデータに分割して前記システムデータを書き込むシステムデータ書き込みステップと、
前記システムブロックから前記システムデータを読み出すシステムデータ読み出しステップと、
前記システムデータに基づいて複数個の前記フラッシュメモリに対するアクセスを制御するアクセス制御ステップと、
を備える。前記システムブロック管理ステップでは、それぞれの前記フラッシュメモリに含まれる不良ブロックの個数と前記システムブロックの個数との総和が均等化されるように、前記システムブロックの割り当てが行われる。
各フラッシュメモリに含まれるユーザデータ用ブロックの個数を均等にすることができる。
図1は、本発明の一実施形態に係るフラッシュメモリシステム1を概略的に示すブロック図である。
図1に示すように、フラッシュメモリシステム1は、2個のフラッシュメモリ2A,2Bと、それを制御するメモリコントローラ3とで構成されている。フラッシュメモリの個数は、2個より多くても良い(例えば、好ましくは2m個(mは自然数))。また、以下の説明では、2個のフラッシュメモリ2A、2Bを総称して「フラッシュメモリ2」と言うことがある。
フラッシュメモリシステム1は、外部バス13を介してホストシステム4と接続されている。ホストシステム4は、ホストシステム4の全体の動作を制御するためのCPU(Central Processing Unit)、フラッシュメモリシステム1との情報の授受を担うコンパニオンチップ等から構成されている。ホストシステム4は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
メモリコントローラ3は、図1に示すように、マイクロプロセッサ6と、ホストインターフェースブロック7と、SRAM8と、バッファ9と、フラッシュメモリインターフェースブロック10と、ECC(Error-correcting code)ブロック11と、ROM(Read Only Memory)12とから構成される。メモリコントローラ3は、内部バス14を介してフラッシュメモリ2と接続されている。これら機能ブロックによって構成されるメモリコントローラ3は、一つの半導体チップ上に集積される。以下、各機能ブロックについて説明する。
ホストインターフェースブロック7は、ホストシステム4との間でデータ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。外部コマンドとは、ホストシステム4がフラッシュメモリシステム1に対して処理の実行を指示するためのコマンドである。ホストシステム4よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口としてフラッシュメモリシステム1の内部(例えば、バッファ9)に取り込まれる。また、フラッシュメモリシステム1からホストシステム4に供給されるデータ等は、ホストインターフェースブロック7を出口としてホストシステム4に供給される。
SRAM(Static Random Access Memory)8は、揮発性の記憶素子であり、ファームウェアを格納するための領域として、又はフラッシュメモリ2の制御に必要なデータを一時的に格納するための領域として使用される。例えば、図2に示すように、マイクロプロセッサ6が読み込むプログラムコードが格納されるファームウェア領域Aと、フラッシュメモリインターフェースブロック10が読み込むシーケンスコードが格納されるファームウェア領域Bと、アドレス変換テーブルや空きブロック検索テーブル等が保持されるワーク領域とがSRAM8上に割り当てられる。ここで、アドレス変換テーブルは、論理ブロックと物理ブロックとの対応関係を示したテーブルであり、空きブロック検索テーブルは、消去状態の物理ブロック(又は、有効なデータが保存されていない物理ブロック)を検索するためのテーブルである。
ROM12は、不揮発性の記憶素子であり、本実施形態では、起動時に必要な最低限のプログラムコードとシーケンスコードだけが保存されている。フラッシュメモリ2の制御に必要な全てのプログラムコードとシーケンスコードは、フラッシュメモリ2に保存されている。従って、フラッシュメモリ2の制御に必要な全てのプログラムコードとシーケンスコードは、起動時に、フラッシュメモリ2から読み出され、SRAM8上のファームウェア領域に格納される。つまり、ROM12には、フラッシュメモリ2から読み出されたプログラムコードとシーケンスコードがSRAM8上のファームウェア領域に格納されるまでの間に、マイクロプロセッサ6とフラッシュメモリインターフェースブロック10に読み込まれるプログラムコードとシーケンスコードだけが保存されている。
尚、ROM12に、フラッシュメモリ2の制御に必要な全てのプログラムコードとシーケンスコードが格納されているような場合には、SRAM8上にファームウェア領域を割り当てなくてもよい。
バッファ9は、ホストシステム4から与えられたデータやフラッシュメモリ2から読み出されたデータを一時的に保持する。例えば、フラッシュメモリ2に書き込まれるデータは、フラッシュメモリ2が書き込み可能な状態になるまでバッファ9に保持される。また、フラッシュメモリ2から読み出されたデータは、ホストシステム4が受け取り可能な状態になるまでバッファ9に保持される。
フラッシュメモリインターフェースブロック10は、SRAM8上のファームウェア領域B又はROM12から読み込んだシーケンスコードに従って、フラッシュメモリ2に対する各種の処理を実行する。この処理では、フラッシュメモリインターフェースブロック10とフラッシュメモリ2との間で、データ、アドレス情報、ステータス情報、内部コマンド等の授受が、内部バス14を介して行なわれる。ここで、内部コマンドとは、メモリコントローラ3がフラッシュメモリ2に処理の実行を指示するためのコマンドであり、フラッシュメモリ2は、メモリコントローラ3から与えられる内部コマンドに従って動作する。
ECCブロック11は、フラッシュメモリ2に書き込むデータに付加される誤り訂正符号(ECC:Error-correcting code))を生成するとともに、読み出したデータに付加されている誤り訂正符号に基づいて、読み出したデータに含まれる誤りを検出・訂正する。
マイクロプロセッサ6は、SRAM8上のファームウェア領域A又はROM12から読み込んだプログラムコードに従って、メモリコントローラ3の全体の動作を制御する。
フラッシュメモリ2A,2Bは、それぞれ、NAND型フラッシュメモリからなる。NAND型フラッシュメモリは、レジスタと、複数のメモリセルが2次元的に配列されたメモリセルアレイを備えている。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。ここで、メモリセル群は、複数のメモリセルが直列に接続されたものである。各ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、レジスタから選択されたメモリセルへのデータの書き込み又は選択されたメモリセルからレジスタへのデータの読み出しが行われる。各フラッシュメモリ2A,2Bは、レジスタからメモリセルへのデータの書き込み、メモリセルからレジスタへのデータの読み出し又はメモリセルに記憶されているデータの消去が行われている間、内部コマンド等の入力を受け付けないビジー状態となる。
NAND型フラッシュメモリでは、データの読み出し及び書き込みはページ(物理ページ)単位で行われ、データの消去はブロック(物理ブロック)単位で行われる。物理ブロックは、複数のページ(物理ページ)で構成される。例えば、1個の物理ページは、2048バイトのユーザ領域と、64バイトの冗長領域とで構成され、1個の物理ブロックは、64個の物理ページで構成されている。冗長領域は、誤り訂正符号(ECC:Error-correcting code))、論理アドレス情報、ブロックステータス(フラグ)等の付加データが記憶される領域である。
冗長領域に書き込まれる論理アドレス情報は、物理ブロックと論理ブロックの対応関係を判別するための情報である。ブロックステータス(フラグ)は、物理ブロックの良否を示すフラグである。尚、正常にデータの書き込み等を行うことができない物理ブロックである不良ブロックには、出荷時から不良である初期不良の物理ブロックと、使用開始後に劣化して不良ブロックになった後発不良の物理ブロックがある。初期不良の物理ブロックについては、不良ブロックであることを示すブロックステータス(フラグ)が製造メーカによって書き込まれている。また、この初期不良の物理ブロックを示すブロックステータス(フラグ)を、ユーザ領域に書き込んでいる製造メーカもある。
本実施形態では、異なるフラッシュメモリ2A,2Bに属する2個の物理ブロックで仮想ブロックが形成され、この仮想ブロックに対して、論理ブロックが割り当てられる。従って、ホストシステム4から書き込みを指示するアクセス指示が与えられた場合、メモリコントローラ3は、そのアクセス指示で指定されるアクセス対象の領域が属する論理ブロックと対応関係にある仮想ブロックを特定し、その仮想ブロックを形成する2個の物理ブロックに対して、そのアクセス指示に対応するデータを書き込む。このデータ書き込み処理で、メモリコントローラ3は、フラッシュメモリ2Aに属する物理ブロック対するデータの書き込みとフラッシュメモリ2Bに属する物理ブロック対するデータの書き込みを並行して行っても良いし、フラッシュメモリ2Aに属する物理ブロック対するデータの書き込みとフラッシュメモリ2Bに属する物理ブロック対するデータの書き込みを交互に行っても良い。後者は、いわゆるインターリーブ方式であり、この方式では、一方のフラッシュメモリがビジー状態のときにビジー状態ではない他方のフラッシュメモリに対するデータの書き込みが行われる。
次に、SRAM8のファームウェア領域に格納されるファームウェアについて、図2を参照して説明する。なお、以下の説明では、ROM12に予め保存されている、起動時に必要な最低限のファームウェアを、フラッシュメモリ2に保存されるファームウェアと区別するために、「起動用ファームウェア」と言う。
本実施形態では、起動時に必要な最低限のファームウェア(起動用ファームウェア)だけしかROM12に保存されていない。従って、メモリコントローラ3は、起動時に、起動用ファームウェアを実行することで、フラッシュメモリ2に保存されているファームウェアを読み出し、SRAM8のファームウェア領域に格納しなければならない。その後、メモリコントローラ3は、SRAM8のファームウェア領域に格納されたファームウェアに基づいて動作する。尚、ファームウェアをROM12に保存するか又はフラッシュメモリ2に保存するかについては、メモリコントローラ3を設計する際に設計者が適宜することができる。また、本実施形態では、マイクロプロセッサ6が読み込むプログラムコードと、フラッシュメモリインターフェースブロック10が読み込むシーケンスコードとが含まれるファームウェアがフラッシュメモリ2に保存されるが、このファームウェアのうちのプログラムコードだけ又はシーケンスコードだけがフラッシュメモリ2に保存されるようにしてもよい。
SRAM8のファームウェア領域Aに格納されるプログラムコードは、マイクロプロセッサ6に読み込まれるファームウェアであり、マイクロプロセッサ6は、このプログラムコードに基づいて動作する。例えば、マイクロプロセッサ6は、このプログラムコードに基づいて、ホストシステムから与えられるアクセス指示によって特定されるアクセス対象の領域が属する論理ブロック及びこの論理ブロックと対応する物理ブロックを求めたり、データの書き込み先となる空きブロックを検索したりする。
SRAM8のファームウェア領域Bに格納されるシーケンスコードは、フラッシュメモリインターフェースブロック10に読み込まれるファームウェアであり、フラッシュメモリインターフェースブロック10は、このシーケンスコードに基づいて動作する。シーケンスコードは、フラッシュメモリインターフェースブロック10が実行するシーケンス処理毎に設定された複数個のコードから成るコードセットを複数セット含んでおり、フラッシュメモリインターフェースブロック10は、このコードセットに基づいてフラッシュメモリ2A,2Bに対する各種のシーケンス処理を実行する。フラッシュメモリインターフェースブロック10がシーケンス処理を実行するときは、実行する処理に応じたコードセットが選択され、選択されたコードセットに含まれるコードがフラッシュメモリインターフェースブロック10に読み込まれる。
各コードセットは、フォーマット処理、書き込み処理等のシーケンス処理に対応している。コードセットに含まれる各コードには、フラッシュメモリ2A,2Bに対して制御信号、コマンド、アドレス又は書き込みデータ等を出力することを指示するものや、分岐条件に基づいた分岐先を指示するものや、フラッシュメモリ2A,2Bのビジー状態が解除されるのを待つことを指示するもの等がある。
また、コードセットに含まれるコードは、通常はアドレスの順番で読み出されるが、分岐先を指示するコードが含まれている場合は、分岐先を指示するコマンドコードに従って次に読み出すコードが決定される。
どのコードセットも、最終的に終了コードに分岐するようになっている。この終了コードに分岐することにより、各コードセットに対応するシーケンス処理は終了する。
以下、本実施形態のメモリコントローラ3の動作を説明する。
メモリコントローラ3は、起動時に、ROM12に記憶されている起動用ファームウェアに基づいて動作し、ファームウェアがフラッシュメモリ2A及び/又は2Bに書き込まれているかどうかを判断する。例えば、フラッシュメモリ2A又は2Bの先頭ブロックに、ファームウェアが書き込まれている場所(例えば、ファームウェアが書き込まれている物理ブロックが属するフラッシュメモリのチップ番号及びその物理ブロックの物理ブロックアドレス)を示す情報(以下、「ファームウェア場所情報」と言う)が書き込まれているか否かにより判断する。つまり、ファームウェア場所情報が書き込まれている場合には、ファームウェアがフラッシュメモリ2A及び/又は2Bに書き込まれていると判断され、ファームウェア場所情報が書き込まれていない場合には、ファームウェアがフラッシュメモリ2A及び/又は2Bに書き込まれていないと判断される。なお、フラッシュメモリ2A又は2Bの先頭ブロックにファームウェア場所情報が書き込まれるのは、一般に、先頭ブロックは、不良ブロックではないことが製造メーカによって保証されているためである。このため、通常、先頭ブロックには、属性情報(例えば、フラッシュメモリシステム1がどういうものであって、どういうフラッシュメモリが幾つ搭載されているか等を表す情報)が書き込まれていることが多く、先頭ブロックにユーザデータ(ホストシステムから与えられるアクセス指示に従って書き込まれるデータ)書き込まれることは殆ど無い。
以下、その後の動作を、ファームウェアがフラッシュメモリ2A及び/又は2Bに書き込まれていると判断された場合と、書き込まれていないと判断された場合とに分けて、説明する。
<ファームウェアがフラッシュメモリ2A及び/又は2Bに書き込まれていないと判断された場合>。
メモリコントローラ3は、ホストシステム4からファームウェアが与えられるのを待つ待機状態になる。
図3Aに示すように、ホストシステム4からファームウェアが与えられると、メモリコントローラ3は、そのファームウェアを、バッファ9を介してSRAM8内のファームウェア領域に書き込む。この後は、メモリコントローラ3は、SRAM8に書き込まれたファームウェアに基づいて動作する。
図3Aに示すように、ホストシステム4からファームウェアが与えられると、メモリコントローラ3は、そのファームウェアを、バッファ9を介してSRAM8内のファームウェア領域に書き込む。この後は、メモリコントローラ3は、SRAM8に書き込まれたファームウェアに基づいて動作する。
次に、ファームウェアがフラッシュメモリ2A及び/又は2Bに書き込まれていないと判断された場合に行われる(処理A)乃至(処理C)について説明する。
(処理A)フラッシュメモリ2のフォーマット処理が済んでいるか否かが判断される。フラッシュメモリ2のフォーマット処理が済んでいない場合は、フラッシュメモリ2のフォーマット処理が行われる。このフォーマット処理では、フラッシュメモリ2に対するアクセスを管理するために必要な管理情報(例えば、不良ブロックテーブル等)が作成され、作成された管理情報がフラッシュメモリ2に書き込まれる。例えば、管理情報として不良ブロックテーブルを作成する場合について説明する。この作成処理では、フラッシュメモリ2A,2B内の各物理ブロックの冗長領域に記憶されているブロックステータス(フラグ)が順次読み出され、読み出されたブロックステータス(フラグ)に基づいてフラッシュメモリ2A,2B内の各物理ブロックが不良ブロックであるか否かが判断される。不良ブロックであると判断された物理ブロックの物理ブロックアドレス及びその物理ブロックが属するフラッシュメモリ2を示す情報がSRAM8のワーク領域に書き込まれる。このようにして不良ブロックを管理するための不良ブロックテーブルが作成される。この不良ブロックテーブルにより、それぞれのフラッシュメモリ2A,2B内の不良ブロックが特定され、更に、それぞれのフラッシュメモリ2A,2Bに含まれる不良ブロックの個数が求められる。
(処理B)ファームウェア及び管理情報が、図3Aに示すように、バッファ9を介して、1個のデータとして又は複数個のデータとして、2個のフラッシュメモリ2A及び2B内の1個又は複数個の物理ブロックに書き込まれる。ここで、ファームウェアについては、プログラムコードとシーケンスコードが同じ物理ブロックに書き込まれるようにしても良いが、プログラムコードとシーケンスコードが別の物理ブロックに書き込まれるようにしてもよい。管理情報について、不良ブロックテーブル、空きブロック検索テーブル及びアドレス変換テーブル等の各テーブルがテーブル毎に異なる物理ブロックに書き込まれるようにしてもよい。更に、アドレス変換テーブルのようなサイズの大きいテーブルについては、複数のテーブルに分割して異なる物理ブロックに書き込まれるようにしてもよい。ファームウェア及び管理情報を書き込むときには、それぞれのフラッシュメモリ2A,2Bに含まれる不良ブロックの個数と、管理情報及び/又はファームウェアが書き込まれる物理ブロックの個数との総和が、均等化されるように、管理情報及びファームウェアの書き込み先となるフラッシュメモリ2A又は2B内の物理ブロックが決定される。つまり、不良ブロックの個数と管理情報及び/又はファームウェアが書き込まれる物理ブロックの個数に関するフラッシュメモリ2A内の総和と、フラッシュメモリ2B内の総和とが均等化されるように、管理情報及びファームウェアの書き込み先となる物理ブロックの割り振りが決定される。
例えば、図4に示すように、フラッシュメモリ2Aに、不良ブロックが2個存在し、フラッシュメモリ2Bに、不良ブロックが1個存在しているとする。また、ファームウェアを保存するために2個の物理ブロックが使用され、管理情報を保存するために3個の物理ブロックが使用されるとする。物理ブロックの容量に合わせて、ファームウェアは、2個のデータ(ファームウェアパート#0及び#1)に分割され、管理情報は、3個のデータ(管理情報パート#0〜#2)に分割される。但し、頻繁に更新される管理情報については物理ページ容量に合わせて分割され、更新される毎に、更新された管理情報が同じ物理ブロック内の空きページ(データが書き込まれていない物理ページ)に順次書き込まれていくようにすることが好ましい。
この例では、フラッシュメモリ2Aの方がフラッシュメモリ2Bより不良ブロックの個数が1個多いため、フラッシュメモリ2Bに属する物理ブロックの方がフラッシュメモリ2Aに属する物理ブロックより1個多くなるように、ファームウェア又は管理情報の書き込み先として使用される物理ブロックが決定される。つまり、これら5個の物理ブロックのうち、2個の物理ブロックがフラッシュメモリ2Aに属し、残りの3個の物理ブロックがフラッシュメモリ2Bに属するように、ファームウェア及び管理情報の書き込み先の物理ブロックが決定される。このようにファームウェア及び管理情報の書き込み先の物理ブロックが決定された場合、不良ブロックの個数と、管理情報及び/又はファームウェアが書き込まれる物理ブロックの個数との総和は、フラッシュメモリ2Aもフラッシュメモリ2Bも4個になる。
仮に、フラッシュメモリ2Aの不良ブロックの個数がフラッシュメモリ2Bの不良ブロックの個数より3個多いとすれば、フラッシュメモリ2Bに属する物理ブロックの方がフラッシュメモリ2Aに属する物理ブロックより3個多くなるように、ファームウェア又は管理情報の書き込み先として使用される物理ブロックが決定される。
尚、フォーマット処理の際には作成されていない管理情報(例えば、アドレス変換テーブル)の書き込み先となる物理ブロックについては、書き込み先の物理ブロックが予約されるだけで、フォーマット処理のときに管理情報の書き込みが行われない。このような管理情報については、管理情報が作成されたときに、予約されていた物理ブロックにその管理情報が書き込まれるようにすればよい。
また、ファームウェア全体をROM12に保存する場合には、フラッシュメモリ2A,2Bに含まれる不良ブロックの個数と、管理情報が書き込まれる物理ブロックの個数との総和が、均等化されるように、管理情報の書き込み先となるフラッシュメモリ2A又は2B内の物理ブロックが決定される。
また、管理情報がフラッシュメモリ2ではなく別途設けられた不揮発性メモリに保存されるような場合には、フラッシュメモリ2A,2Bに含まれる不良ブロックの個数と、ファームウェアが書き込まれる物理ブロックの個数との総和が、均等化されるように、ファームウェアの書き込み先となるフラッシュメモリ2A又は2B内の物理ブロックが決定される。
(処理C)フラッシュメモリ2A又はフラッシュメモリ2Bの先頭ブロックに、管理情報が書き込まれている場所を示す情報(以下、管理情報場所情報)と、ファームウェアが書き込まれている場所を示すファームウェア場所情報が書き込まれる。管理情報場所情報は、管理情報の書き込み先として決定された物理ブロックを特定するための情報であり、例えば、その物理ブロックが属するフラッシュメモリのチップ番号及びその物理ブロックの物理ブロックアドレスを示す情報が含まれる。ファームウェア場所情報は、ファームウェアの書き込み先として決定されて物理ブロックを特定するための情報であり、例えば、その物理ブロックが属するフラッシュメモリのチップ番号及びその物理ブロックの物理ブロックアドレスを示す情報が含まれる。
尚、フラッシュメモリ2の先頭ブロックに保存される属性情報も管理情報に含まれるが、本実施形態では、フラッシュメモリ2Aとフラッシュメモリ2Bの双方の先頭ブロックが属性情報の書き込み先として使用されるため(それぞれのフラッシュメモリ2に属性情報の書き込み先の物理ブロックが1個ずつ割り当てられるため)、属性情報が保存される物理ブロックに関する説明を割愛した。
<ファームウェアがフラッシュメモリ2A及び/又は2Bに書き込まれていると判断された場合>。
図3Bに示すように、フラッシュメモリ2A又はフラッシュメモリ2Bの先頭ブロックに書き込まれているファームウェア場所情報に基づいてファームウェアが書き込まれている場所が特定され、特定された場所からファームウェアが読み出されSRAM8のファームウェア領域に書き込まれる。
尚、管理情報については、その都度、必要な管理情報だけがフラッシュメモリ2A及び/又は2Bから読み出され、SRAM8のワーク領域に書き込まれる。読み出された管理情報の内容がSRAM8上で更新された場合には、更新された管理情報がフラッシュメモリ2A及び/又は2に書き込まれる。管理情報につては、このような更新処理が行われるため、通常、管理情報を保存するために必要な最低限の物理ブロックの個数よりも管理情報の書き込み先として使用可能な物理ブロックの個数の方が多く割り当てられる。つまり、管理情報の書き込み先の物理ブロックについては、予備の物理ブロックを含めて管理情報の書き込み先の物理ブロックが決定される。
以上、本発明の実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
例えば、フラッシュメモリ2A及び/又は2Bに管理情報及びファームウェアが書き込まれた後に、フラッシュメモリ2A,2Bにおいて不良ブロックの個数が増え、フラッシュメモリ2Aに含まれる不良ブロックの個数とフラッシュメモリ2Bに含まれる不良ブロックの個数の差が変化することがある。そこで、メモリコントローラ3は、管理情報及びファームウェアがフラッシュメモリ2A及び/又は2Bに書き込まれた後、フラッシュメモリ2Aに含まれる不良ブロックの個数とフラッシュメモリ2Bに含まれる不良ブロックの個数の差が変化した場合には、それぞれのフラッシュメモリ2A,2Bに含まれる不良ブロックの個数と、管理情報及び/又はファームウェアが書込まれている物理ブロックの個数との総和が、均等化されているように、管理情報及び/又はファームウェアの書き込み先となる物理ブロックの割り当てが変更されるようにしてもよい。この変更では、均等化するために必要な最低限の個数の物理ブロックだけが変更されることが好ましい。また、この変更により管理情報及び/又はファームウェアの書き込み先でなくなった物理ブロックの記憶データは、この変更により新たに管理情報及び/又はファームウェアの書き込み先になった物理ブロックに、又はこの変更に関わらず管理情報及び/又はファームウェアの書き込み先のままであった物理ブロックに転送されることが好ましい。
尚、上述のように、不良ブロックには、出荷時から不良である初期不良の物理ブロックと、使用開始後に劣化して不良ブロックになった後発不良の物理ブロックがある。この後発不良の物理ブロックの判断基準については、設計の際に設計者が適宜設定することができる。例えば、書き込み又は消去を行った際にフラッシュメモリから与えられる処理ステータスがフェイルであった場合、読み出したデータに予め定められた閾値以上の誤りが含まれていた場合、又はこれらの組み合わせにより後発不良の物理ブロックであると判断されるようにしてもよい。
1…フラッシュメモリシステム、2A,2B…フラッシュメモリ、3…メモリコントローラ、6…マイクロプロセッサ
Claims (6)
- ホストシステムから与えられるアクセス指示に従って、物理ブロック単位で消去が行われる複数個のフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
それぞれの前記フラッシュメモリに含まれる不良ブロックの個数を計数する計数手段と、
複数個の前記フラッシュメモリ内の一部の物理ブロックを、複数個の前記フラッシュメモリに対するアクセスを制御又は管理するためのシステムデータが書き込まれるシステムブロックに割り当てるシステムブロック管理手段と、
1個又は複数個の前記システムブロックに、1個のデータとして又は複数個のデータに分割して前記システムデータを書き込むシステムデータ書き込み手段と、
前記システムブロックから前記システムデータを読み出すシステムデータ読み出し手段と、
前記システムデータに基づいて複数個の前記フラッシュメモリに対するアクセスを制御するアクセス制御手段と、
を備え、
前記システムブロック管理手段は、それぞれの前記フラッシュメモリに含まれる不良ブロックの個数と前記システムブロックの個数との総和が均等化されるように、前記システムブロックの割り当てを行う、
ことを特徴とするメモリコントローラ。 - 前記システムデータには、複数個の前記フラッシュメモリに対するアクセスを制御するためのファームウェアが含まれ、
前記システムデータ読み出し手段は、起動時に前記システムブロックから前記ファームウェアを読み出す
ことを特徴とする請求項1記載のメモリコントローラ。 - 前記アクセス制御手段は、異なる前記フラッシュメモリに属する複数個の物理ブロックを含むグループ単位で、複数個の前記フラッシュメモリに対するアクセスを制御する、
ことを特徴とする請求項1乃至2のうちのいずれか1項に記載のメモリコントローラ。 - 前記システムブロック管理手段は、複数個の前記フラッシュメモリに含まれる不良ブロックの個数が変化したときに、それぞれの前記フラッシュメモリに含まれる不良ブロックの個数と前記システムブロックの個数との総和が均等化されるように、前記システムブロックの割り当てを変更する、
ことを特徴とする請求項1乃至3のうちのいずれか1項に記載のメモリコントローラ。 - 請求項1乃至4のうちのいずれか1項に記載のメモリコントローラと、
前記メモリコントローラによってアクセスされる複数個のフラッシュメモリと
を備えるフラッシュメモリシステム。 - ホストシステムから与えられるアクセス指示に従って、物理ブロック単位で消去が行われる複数個のフラッシュメモリの制御方法であって、
それぞれの前記フラッシュメモリに含まれる不良ブロックの個数を計数する計数ステップと、
複数個の前記フラッシュメモリ内の一部の物理ブロックを、複数個の前記フラッシュメモリに対するアクセスを制御又は管理するためのシステムデータが書き込まれるシステムブロックに割り当てるシステムブロック管理ステップと、
1個又は複数個の前記システムブロックに、1個のデータとして又は複数個のデータに分割して前記システムデータを書き込むシステムデータ書き込みステップと、
前記システムブロックから前記システムデータを読み出すシステムデータ読み出しステップと、
前記システムデータに基づいて複数個の前記フラッシュメモリに対するアクセスを制御するアクセス制御ステップと、
を備え、
前記システムブロック管理ステップでは、それぞれの前記フラッシュメモリに含まれる不良ブロックの個数と前記システムブロックの個数との総和が均等化されるように、前記システムブロックの割り当てが行われる、
ことを特徴とするフラッシュメモリの制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008038983A JP4710918B2 (ja) | 2008-02-20 | 2008-02-20 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008038983A JP4710918B2 (ja) | 2008-02-20 | 2008-02-20 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009199242A JP2009199242A (ja) | 2009-09-03 |
JP4710918B2 true JP4710918B2 (ja) | 2011-06-29 |
Family
ID=41142686
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008038983A Active JP4710918B2 (ja) | 2008-02-20 | 2008-02-20 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4710918B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4840415B2 (ja) * | 2008-07-22 | 2011-12-21 | Tdk株式会社 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
JP2012173778A (ja) * | 2011-02-17 | 2012-09-10 | Sony Corp | 管理装置、および管理方法 |
JP7077151B2 (ja) | 2018-06-06 | 2022-05-30 | キオクシア株式会社 | メモリシステム |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000035919A (ja) * | 1998-07-17 | 2000-02-02 | Victor Co Of Japan Ltd | フラッシュ型メモリ、その管理装置、その管理方法 |
JP2001142774A (ja) * | 1999-11-11 | 2001-05-25 | Toshiba Corp | メモリカード及び同カードに適用されるアドレス変換方法 |
JP2003015947A (ja) * | 2001-07-05 | 2003-01-17 | Tdk Corp | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 |
JP2004280287A (ja) * | 2003-03-13 | 2004-10-07 | Matsushita Electric Ind Co Ltd | メモリカード |
JP2008021333A (ja) * | 2007-09-28 | 2008-01-31 | Renesas Technology Corp | 不揮発性記憶システム |
-
2008
- 2008-02-20 JP JP2008038983A patent/JP4710918B2/ja active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000035919A (ja) * | 1998-07-17 | 2000-02-02 | Victor Co Of Japan Ltd | フラッシュ型メモリ、その管理装置、その管理方法 |
JP2001142774A (ja) * | 1999-11-11 | 2001-05-25 | Toshiba Corp | メモリカード及び同カードに適用されるアドレス変換方法 |
JP2003015947A (ja) * | 2001-07-05 | 2003-01-17 | Tdk Corp | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 |
JP2004280287A (ja) * | 2003-03-13 | 2004-10-07 | Matsushita Electric Ind Co Ltd | メモリカード |
JP2008021333A (ja) * | 2007-09-28 | 2008-01-31 | Renesas Technology Corp | 不揮発性記憶システム |
Also Published As
Publication number | Publication date |
---|---|
JP2009199242A (ja) | 2009-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4844639B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4245585B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
US20060013048A1 (en) | Memory systems including defective block management and related methods | |
JP4632180B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4666081B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4702387B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP5093294B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4710918B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4594944B2 (ja) | メモリ制御装置 | |
JP4582232B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4840415B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4687720B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4702703B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4655034B2 (ja) | メモリコントローラ及びフラッシュメモリシステム並びにフラッシュメモリの制御方法 | |
JP4636046B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4697146B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4177292B2 (ja) | メモリンコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP2012068764A (ja) | メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 | |
JP2010086106A (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP3934659B1 (ja) | メモリコントローラ及びフラッシュメモリシステム | |
JP2006318132A (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP6260395B2 (ja) | メモリコントローラ、メモリシステム及びメモリ制御方法 | |
JP4569554B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4760826B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2010092200A (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110215 |
|
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: 20110222 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110307 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4710918 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |