JP4569554B2 - メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 - Google Patents

メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 Download PDF

Info

Publication number
JP4569554B2
JP4569554B2 JP2006295343A JP2006295343A JP4569554B2 JP 4569554 B2 JP4569554 B2 JP 4569554B2 JP 2006295343 A JP2006295343 A JP 2006295343A JP 2006295343 A JP2006295343 A JP 2006295343A JP 4569554 B2 JP4569554 B2 JP 4569554B2
Authority
JP
Japan
Prior art keywords
data
physical
block
flash memory
chip
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
Application number
JP2006295343A
Other languages
English (en)
Other versions
JP2008112335A (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.)
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 JP2006295343A priority Critical patent/JP4569554B2/ja
Publication of JP2008112335A publication Critical patent/JP2008112335A/ja
Application granted granted Critical
Publication of JP4569554B2 publication Critical patent/JP4569554B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System (AREA)

Description

本発明は、メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
近年、メモリカードやシリコンディスク等といったメモリシステムにて使用される半導体メモリに、フラッシュメモリが広く採用されている。フラッシュメモリは、不揮発性メモリの一種である。フラッシュメモリに記憶されたデータは、電力が供給されていないときでも保持されていることが要求される。
NAND型フラッシュメモリは、上記のメモリシステムで特に多く用いられるフラッシュメモリの一種である。NAND型フラッシュメモリは、データレジスタとメモリセルアレイとで構成され、データレジスタとメモリセルアレイとの間では、ページ単位でデータの書き込み又は読み出しが行われる。メモリセルアレイを構成するメモリセルは、2つのゲートを備えたMOSトランジスタによって構成され、一方のゲートはコントロールゲート、他方のゲートはフローティングゲートとそれぞれ呼ばれている。このフローティングゲートに電荷(電子)を注入若しくはフローティングゲートから電荷(電子)を排出することによって、データの書き込み若しくはデータの消去が行われる。また、メモリセルを消去状態に対応する論理値「1」から書込状態に対応する論理値「0」に変更させる場合は、メモリセル単位で変更させることができるが、書き込み状態から消去状態に変更させる場合は、ブロック(例えば、64ページのデータ領域)単位でしか変更させることができない。以下、NAND型フラッシュメモリにおける消去処理の単位であるブロックを物理ブロックと言う。
したがって、物理ブロック内の複数のページに記憶されているデータの一部を書き換える場合には、データが書き込まれていない空きブロック(総てのメモリセルが消去状態にある消去済ブロック)を1つ選択し、この空きブロックに書き換え後のデータを書き込むと共に、書き換え前のデータと同一ブロックに記憶されている書き換え対象でないデータをこの空きブロックにコピーしなければならない。このデータ移動処理は、フラッシュメモリからデータを読み出してメモリコントローラ内のバッファに蓄積し、コントローラ内のバッファに蓄積したデータをフラッシュメモリに書き込む処理(以下、データ転送処理という)または、フラッシュメモリ内でのデータのコピーであるコピーバック処理(メモリセルアレイからデータレジスタに読み出したデータを別のメモリセルアレイに書き込む処理)によって行われる。
また、NAND型フラッシュメモリは、オーバプログラム又はディスターブ現象により、記憶されているデータに誤りが生じる場合がある。このため、特許文献1では、ユーザ領域に記憶されているデータに対応する誤り訂正符号を同一ページの冗長領域に記憶させておき、データの読み出しの際に、該データに対応する誤り訂正符号に基づき、読み出したデータに含まれる誤りを検出、訂正すると共に、誤りが訂正されたデータを空きブロックに書き込んでいる。つまり、この訂正処理では、読み出したデータをメモリコントローラ内のバッファに蓄積し、誤りを訂正した後、空きブロックに転送している。
[データ転送処理の説明]
図9は、データ転送処理の概要を示す図である。データ転送処理は、メモリコントローラ内のバッファを介したデータ移動処理であり、以下のステップを繰り返すことで行われる。
(S91)メモリコントローラから与えられた情報に基づいて、転送元のページのメモリセルが選択され、選択されたメモリセルからデータレジスタにデータが複写される。
(S92)データレジスタから1ページ分のデータが順次読み出され、コントローラ内のバッファに蓄積される。
(S93)コントローラ内のバッファに蓄積された1ページ分のデータが、データレジスタに転送される。
(S94)S93の転送の際にメモリコントローラから与えられた情報に基づいて、転送先のページのメモリセルが選択され、選択されたメモリセルにデータレジスタのデータが複写される。このようにして、1ページ単位でデータ転送を行っている。
一方、1ページが複数セクタ(1セクタは512バイト)の領域で構成されている場合、1ページ単位ではないデータ転送の方法も知られている。この方法では、例えば1ページ分のデータをメモリセルからデータレジスタに複写し、このデータレジスタに保持されているデータを1セクタ単位で読み出しメモリコントローラ内のバッファに蓄積する。バッファに蓄積された1セクタのデータをデータレジスタに転送し、データレジスタからメモリセルに複写する。この処理を、1ページに含まれるセクタ数分繰り返すことにより、1ページ分のデータ転送処理が終了する。この場合、バッファに蓄積されるデータは1セクタ単位であるため、バッファの容量が少なく済むという利点を有している。しかしながら、このデータ転送の方法では、読み出しと書き込みのときに同一のデータレジスタがアクセスされ、データレジスタにデータを転送するときには、データレジスタに保持されていたデータはクリアされるため、読み出しのときに毎回メモリセルからデータレジスタへの複写を行わなければならない。従って、このデータ転送の方法では、フラッシュメモリ内のメモリセルとデータレジスタとの複写処理の回数が増加し、データ転送処理の処理時間が長くなってしまう。
特開2004−272476号公報
フラッシュメモリに記憶されているデータの移動は、データ転送処理とコピーバック処理のいずれの処理方法でも行うことができるが、コピーバック処理では、移動の際にデータに含まれる誤りを訂正することができない。従って、移動の際にデータに含まれる誤りを訂正するときには、コピーバック処理より処理時間の長いデータ転送処理を行わなければならない。
又、フラッシュメモリの容量が増加するに従い、1ページの容量が増加している。例えば小ブロック構成では、1ページが512(ユーザ領域)+16(冗長領域)バイトであったのが、大ブロック構成では、1ページが2048(ユーザ領域)+64(冗長領域)バイトと4倍に増加した。さらに、1ページが4096(ユーザ領域)+128バイト(冗長領域)であるフラッシュメモリの出荷が予告されている。従って、1ページ分のデータをメモリコントローラ内のバッファに蓄積するデータ転送処理を行うためには、バッファの容量を増加させなければならない。一方、1セクタ単位の転送を繰返すデータ転送処理では処理時間が長くなってしまう。
したがって、本発明は、データ転送処理の処理時間とバッファの容量を増加させることなく、データ転送処理を行うことが可能なメモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法を提供することを目的とする。
上記目的を達成するために、本発明によるメモリコントローラは、複数個のフラッシュメモリ内の物理ブロックで構成された物理ゾーンに対するアクセスを制御するメモリコントローラであって、前記物理ゾーンに属する第1の物理ブロックを含む第1のフラッシュメモリ内のデータレジスタからデータを読み出す読出し手段と、前記読出し手段によって読み出されたデータを蓄積する蓄積手段と、前記蓄積手段に蓄積されたデータを、前記第1の物理ブロックと同一の前記物理ゾーンに属する第2物理ブロックを含む第2のフラッシュメモリ内のデータレジスタに転送する転送手段と、前記第1の物理ブロックと前記第2の物理ブロックが異なるフラッシュメモリに含まれるように前記第2の物理ブロックを選択する選択手段とを備え、前記読出し手段による読み出しと前記転送手段による転送を、交互に又は並行して行うことにより、前記蓄積手段に1ページ分のデータを蓄積せずに前記第1の物理ブロックから前記第2の物理ブロックにデータを移動させることを特徴とする。
又、前記選択手段は、前記物理ゾーンに属する空きブロックをフラッシュメモリ毎に検索することのできる空きブロック検索手段を備えていることが好ましい。
上記目的を達成するために、本発明によるフラッシュメモリシステムは、前記メモリコントローラのいずれか1つと複数チップのフラッシュメモリを備えている。
上記目的を達成するために、本発明によるフラッシュメモリの制御方法は、複数個のフラッシュメモリ内の物理ブロックで構成された物理ゾーンに対するアクセスを制御するフラッシュメモリの制御方法であって、前記物理ゾーンに属する第1の物理ブロックを含む第1のフラッシュメモリ内のデータレジスタからデータを読み出す読出しステップと、前記読出しステップで読み出されたデータを蓄積する蓄積ステップと、前記蓄積ステップで蓄積されたデータを、前記第1の物理ブロックと同一の前記物理ゾーンに属する第2物理ブロックを含む第2のフラッシュメモリ内のデータレジスタに転送する転送ステップとを有し、前記読出しステップによる読み出しと前記転送ステップによる転送を、交互に又は並行して行うことにより、前記蓄積ステップで1ページ分のデータを蓄積せずに前記第1の物理ブロックから該第1の物理ブロックと異なるフラッシュメモリ内の前記第2の物理ブロックにデータを移動させることを特徴とする。
本発明によれば、複数個(複数チップ)のフラッシュメモリ内の物理ブロックでゾーンを構成し、このゾーンに含まれる物理ブロック間で記憶データを移動させるときに、移動元の物理ブロックと移動先の物理ブロックが異なるフラッシュメモリ(異なるチップのフラッシュメモリ)になるようにしたので、メモリコントローラ内に1ページ分の記憶データを蓄積できるようなバッファを設けずに、かつデータレジスタとメモリセルとの間での複写の回数を増加させずに、メモリコントローラ内のバッファを介した記憶データの移動を行うことができる。
以下、図面に基づき、本発明の実施形態について詳細に説明する。
[フラッシュメモリシステム1の説明]
図1は、フラッシュメモリシステム1を概略的に示すブロック図である。図1に示したようにフラッシュメモリシステム1は、フラッシュメモリ2と、それを制御するメモリコントローラ3とで構成されている。
なお、フラッシュメモリシステム1は、外部バス13を介してホストシステム4と接続される。ホストシステム4は、ホストシステム4の全体の動作を制御するためのCPU(Central Processing Unit)、フラッシュメモリシステム1との情報の授受を担うコンパニオンチップ等から構成される。ホストシステム4は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
[フラッシュメモリ2の説明]
図2は、NAND型フラッシュメモリのブロック(以下、フラッシュメモリ内のブロックを物理ブロックと言う。)とページの関係を示す説明図である。物理ブロックとページの構成は、フラッシュメモリの仕様によって異なるが、一般的なフラッシュメモリとしては、小ブロック構成のフラッシュメモリと、大ブロック構成のフラッシュメモリとがある。小ブロック構成では、図2(a)に示したように、1ブロックが32ページ(P0〜P31)で構成され、各ページが512バイトのユーザ領域と16バイトの冗長領域で構成されている。また、大ブロック構成では、図2(b)に示したように、1ブロックが64ページ(P0〜P63)で構成され、各ページが2048バイトのユーザ領域と64バイトの冗長領域で構成されている。尚、本実施形態のでは、フラッシュメモリ2が大ブロック構成であるものとして説明する。
大ブロック構成の場合、各ページのユーザ領域には4セクタ(1セクタは、512バイト)分のデータが記憶されるため、1セクタ分の領域をサブページとすれば、各ページは4個のサブページで構成され、各物理ブロックは256個のサブページで構成されている。一方、小ブロック構成の場合、各ページのユーザ領域には1セクタ分のデータが記憶されるため、サブページはページと同じになり、各物理ブロックは32個のサブページで構成されている。
ここで、ユーザ領域は、主に、ホストシステム4から供給されるデータが記憶される領域であり、冗長領域は、誤り訂正符号、論理アドレス情報及びブロックステータス等の付加データが記憶される領域である。誤り訂正符号は、ユーザ領域に記憶されているデータに含まれる誤りを検出、訂正するための付加データであり、後述するECCブロック11によって生成される。
論理アドレス情報は、物理ブロックにデータが記憶されている場合に書き込まれ、その物理ブロックに記憶されているデータの論理アドレスに関する情報を示している。なお、物理ブロックにデータが記憶されていない場合は、論理アドレス情報が書き込まれないので、論理アドレス情報が書き込まれているか否かで、そのブロックが空きブロック(消去済ブロック)であるか否かを判断することができる。つまり、論理アドレス情報が書き込まれていない場合は、空きブロック(消去済ブロック)であると判断される。
ブロックステータスは、その物理ブロックが不良ブロック(正常にデータの書き込み等を行うことができない物理ブロック)であるか否かを示すフラグであり、その物理ブロックが不良ブロックであると判断された場合には、不良ブロックであることを示すフラグが設定される。
[コントローラ3の説明]
コントローラ3は、図1に示すように、マイクロプロセッサ6と、ホストインターフェースブロック7と、ワークエリア8と、バッファ9と、フラッシュメモリインターフェースブロック10と、ECCブロック11と、ROM(Read Only Memory)12と、から構成される。これら機能ブロックによって構成されるコントローラ3は、一つの半導体チップ上に集積される。以下に各機能ブロックについて説明する。
マイクロプロセッサ6は、ROM12に記憶されているプログラムに従って、コントローラ3の全体の動作を制御する。
ホストインターフェースブロック7は、ホストシステム4との間で、データ、アドレス情報、ステータス情報、外部コマンド(ホストシステム4からフラッシュメモリシステム3に与えられるコマンド)等の授受を行う。ホストシステム4よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口としてフラッシュメモリシステム1の内部(例えば、バッファ9)に取り込まれる。また、フラッシュメモリシステム1からホストシステム4に供給されるデータ等は、ホストインターフェースブロック7を出口としてホストシステム4に供給される。
ワークエリア8は、フラッシュメモリ2の制御に必要なデータが一時的に格納される作業領域であり、複数のSRAM(Static Random Access Memory)セルによって構成される。
バッファ9は、フラッシュメモリ2から読み出されたデータ及びフラッシュメモリ2に書き込むべきデータを一時的に蓄積する。すなわち、フラッシュメモリ2から読み出されたデータは、ホストシステム4が受け取り可能な状態となるまでバッファ9に保持され、フラッシュメモリ2に書き込むべきデータは、フラッシュメモリ2が書き込み可能な状態となるまでバッファ9に保持される。
フラッシュメモリインターフェースブロック10は、バッファ9からフラッシュメモリ2への書き込み処理やフラッシュメモリ2からバッファ9への読み出し処理を制御するブロックである。書き込み処理や読み出し処理を実行するときの一連の制御動作は、ROM12に記憶されている一連の制御動作を指示する情報に基づいて実行される。
ECCブロック11は、フラッシュメモリ2に書き込むデータに付加される誤り訂正符号(ECC:Error Correcting Code)を生成するとともに、フラッシュメモリ2から読み出したデータに付加された誤り訂正符号(ECC)に基づいて、読み出したデータに含まれる誤りを検出・訂正する。
ROM12は、マイクロプロセッサ6によって実行される処理の手順を定義するプログラム等を格納する不揮発性の記憶素子である。具体的には、ROM12は、例えば、以下で説明するアドレス変換テーブルの作成等の処理手順を定義するプログラムを格納する。
[ゾーンの構成の説明]
フラッシュメモリの記憶容量の大容量化が進んでいることにより、大容量化したフラッシュメモリの記憶領域を円滑に管理するため、この記憶領域を複数のゾーンに分割して管理する手法が用いられている。
図3は、ホストシステム側のアドレス空間とフラッシュメモリのアドレス空間を概略的に示す図である。本図を用いて、まず、従来のゾーンの構成について具体的に説明する。ホストシステム側のアドレス空間は、図3(a)に示したようにセクタ(512バイト)単位で分割した領域に付けた通番であるLBA(Logical Block Address)で管理されている。このセクタを複数個まとめたものを論理ブロックと呼び、論理ブロックを複数個まとめたものを論理ゾーンと呼んでいる。また、図3(b)に示したように論理ブロックに付けられた通番を論理ブロック番号(LBN)と呼び、論理ゾーンに付けられた通番を論理ゾーン番号(LZN)と呼んでいる。また、各論理ゾーンに含まれた論理ブロックの各論理ゾーン内での通番を論理ゾーン内ブロック番号(LZIBN)と呼んでいる。一方、図3(c)に示したように、物理ブロックには、それぞれ固有の物理ブロックアドレス(PBA)が割り当てられている。さらに、複数個の物理ブロックで物理ゾーンを構成し、各物理ゾーンに物理ゾーン番号(PZN)を割り当てている。各物理ゾーンに含まれる物理ブロックの各物理ゾーン内での通番を物理ゾーン内ブロック番号(PZIBN)と呼んでいる。
また、各論理ゾーンにはそれぞれ1個の物理ゾーンが割り当てられ、論理ゾーンに含まれる各論理ブロックに対応するデータは、その論理ゾーンに割り当てられた物理ゾーンに含まれる物理ブロックに書き込まれる。したがって、1個の論理ブロックに含まれるセクタ数は、1個の物理ブロックに含まれるセクタ領域の個数に応じて設定される。
図3に示した例では、1個の物理ブロックが256個のサブページで構成されたフラッシュメモリを想定しているため、256セクタが1個の論理ブロックに対応している。したがって、LBN#0〜#999の1000個の論理ブロックで構成されたLZN#0の論理ゾーンは、LBA#0〜#255999の256000セクタの領域に対応している。以下同様に、LZN#1の論理ゾーンは、LBA#256000〜#511999の256000セクタの領域に対応し、LZN#2の論理ゾーンは、LBA#512000〜#767999の256000セクタの領域に対応し、LZN#3の論理ゾーンは、LBA#768000〜#1023999の256000セクタの領域に対応している。
また、LBN#0〜#999の1000個の論理ブロックで構成されたLZN#0の論理ゾーンは、PBA#0〜#1023の1024個の物理ブロックで構成されたPZN#0の物理ゾーンに割り当てられている。以下同様に、LZN#1の論理ゾーンは、PZN#1の物理ゾーンに割り当てられ、LZN#2の論理ゾーンは、PZN#2の物理ゾーンに割り当てられ、LZN#3の論理ゾーンは、PZN#3の物理ゾーンに割り当てられている。ここで、物理ゾーンに含まれる物理ブロックの個数を、論理ゾーンに含まれる論理ブロックの個数より多くしているのは、同一の論理ブロックに対応する新データと旧データが別々の物理ブロックに並存する場合や、データを正常に書き込むことができない不良ブロックが発生した場合等を考慮したものである。
従来は、上述のように同一のフラッシュメモリ(同一のチップ)内の物理ブロックで上記物理ゾーンを構成していたが、本発明に係るフラッシュメモリシステム1では、複数個のフラッシュメモリ2(複数チップ)内の物理ブロックで上記物理ゾーンを構成している。この物理ゾーンの構成を、図4に示した例を参照して説明する。図4は、2チップのフラッシュメモリ2内の物理ブロックで物理ゾーンを構成した例である。図4では、チップ0内の512個の物理ブロックとチップ1内の512個の物理ブロックで各物理ゾーンを構成している。ここで、チップ0内の物理ブロックアドレス(PBA)の先頭から512個の物理ブロックと、チップ1の内の物理ブロックアドレス(PBA)の先頭から512個の物理ブロックを、LZN#0の物理ゾーンに割り当てている。それ以降の物理ゾーン(LZN#1〜#Nの物理ゾーン)についても、各チップ内の物理ブロックアドレスの順番で、各チップ内の物理ブロックを512個ずつ各物理ゾーンに順次割り当てている。
本発明に係るフラッシュメモリシステム1では、上述のような物理ゾーンに対して後述するアドレス変換テーブルと空きブロック検索用テーブルを作成している。図5は、物理ゾーン毎に作成されるアドレス変換テーブル21と空きブロック検索用テーブル22、23の関係を示している。図5に示したようにアドレス変換テーブル21は、各物理ゾーンに対して1テーブル作成され、空きブロック検索用テーブル22、23は、物理ゾーンを構成する物理ブロックが属するチップ毎に作成される。つまり、各物理ゾーンがチップ0内の物理ブロックとチップ1内の物理ブロックで構成されている場合、各物理ゾーンに対してチップ0用の空きブロック検索用テーブル22と、チップ1用の空きブロック検索用テーブル23が作成される。
[論理アドレスと物理アドレスの説明]
データの書き換えを行うときは、書き換え後のデータは書き換え前のデータが記憶されている物理ブロックと異なる物理ブロックに書き込まれる。また、誤り訂正したデータの再書き込みを行うときは、誤りを訂正した後のデータは誤りを訂正する前のデータが記憶されている物理ブロックと異なる物理ブロックに書き込まれる。このような処理が行われる毎に、ホストシステム4側から供給される論理アドレスとフラッシュメモリ2内の物理アドレスとの対応関係は動的に変化する。このため、論理アドレスと物理アドレスの対応関係を示したアドレス変換テーブルが必要となる。尚、このアドレス変換テーブルは、フラッシュメモリ2の冗長領域に書き込まれている論理アドレス情報に基づいて作成され、作成後は、論理アドレスと物理アドレスとの対応関係が変化する毎に、その変化した部分について対応関係が更新される。
[アドレス変換テーブルの説明]
次に、上記アドレス変換テーブルについて、図面を参照して説明する。尚、本実施形態では、LZN#0の論理ゾーンとPZN#0の物理ゾーン、LZN#1の論理ゾーンとPZN#1の物理ゾーン、以下同様にLZN#Nの論理ゾーンとPZN#Nの物理ゾーンがそれぞれ対応するように論理ゾーンと物理ゾーンとの対応関係が予め設定されている。
図6は、対応関係にある1組の論理ゾーンと物理ゾーンのアドレス変換テーブルの一例を示したものであり、論理ゾーンに含まれるLZIBN#0〜#999の各論理ブロックに対応するデータが格納されている物理ブロックを、チップ番号とチップ別のPZIBN(#0〜#511)で示している。尚、PZIBNは各物理ゾーンに含まれる物理ブロックの各物理ゾーン内での通番であるが、チップ別のPZIBNは、各物理ゾーン内でのチップ別の通番を意味している。従って、図4に示した物理ゾーンの構成では、各物理ゾーンに含まれるチップ0内の512個の物理ブロックにチップ別のPZIBNとして#0〜#511が割り当てられ、各物理ゾーンに含まれるチップ1内の512個の物理ブロックにチップ別のPZIBNとして#0〜#511が割り当てられる。
本実施形態では、論理ゾーンと物理ゾーンとの対応関係が予め設定されているので、論理ゾーンのLZNが分かれば対応関係にある物理ゾーンのPZNを求めることができる。又、このPZNの値に基づいて、PZIBNをPBAに変換することができる。PZIBNをPBAに変換するときには、PZIBNにPZNに応じたオフセットが加算される。例えば、図4に示した物理ゾーンの構成でPZIBNをPBAに変換する場合、物理ゾーンのPZNが#1であれば512が、物理ゾーンのPZNが#2であれば1024が、オフセットとして加算される。
図4に示した物理ゾーンの構成では、各物理ゾーンを構成するチップ0内の物理ブロックのチップ別のPZIBNの範囲と、チップ1内の物理ブロックのチップ別のPZIBNの範囲が同一になるが、アドレス変換テーブルにチップの番号が記述されているため、各論理ブロックに対応するデータの格納先は一意的に特定される。また、対応するデータが格納されていない論理ブロックについては、アドレス変換テーブルのその論理ブロックに対応した部分に、チップの番号やPZIBNではなく、対応するデータが格納されていないことを示すフラグ(以下、対応するデータが格納されていないことを示すフラグを未格納フラグと言う)が設定される。
尚、チップ0のフラッシュメモリ内の物理ブロックにPZIBN#0〜#511を割り当て、チップ1のフラッシュメモリ内の物理ブロックにPZIBN#512〜#1023を割り当てるようにすれば、アドレス変換テーブルにチップ番号を記述する必要がなくなる。又、チップ1のフラッシュメモリ内の物理ブロックにPZIBN#512〜#1023を割り当てた場合に、このPZIBN#512〜#1023をチップ1内のPBAに変換するときは、PZIBNから512を減算した後にオフセットを加算すればよい。
このアドレス変換テーブルを作成する場合、例えば、1000ブロック分のチップ番号とチップ別のPZIBNを記述できる領域をワークエリア8上に確保し、そのチップ番号とチップ別のPZIBNを記述する領域のいずれか、または双方に初期設定として未格納フラグを設定する。その後、アドレス変換テーブルを作成する物理ゾーンに割り当てられているチップ0内の物理ブロック(冗長領域)を順次読出していき、冗長領域に論理アドレス情報としてLZIBNが記述されていた場合には、アドレス変換テーブルのそのLZIBNに対応した部分に、そのLZIBNが記述されていた物理ブロックのチップ別のPZIBNを記述する。この際、チップ別のPZIBNと共にチップの番号も記述する。また、チップ1についても同様の処理を行い、アドレス変換テーブルを作成する物理ゾーンに割り当てられているチップ0内の512ブロックとチップ1内の512ブロックについて、この処理が完了するとアドレス変換テーブルが完成する。なお、このアドレス変換テーブルの作成処理でチップ別のPZIBNとチップの番号が記述されなかった部分については、初期設定で記述された未格納フラグがそのまま残る。尚、アドレス変換テーブルにチップ番号を記述しない場合、例えば、チップ0のフラッシュメモリ内の物理ブロックにPZIBN#0〜#511を割り当て、チップ1のフラッシュメモリ内の物理ブロックにPZIBN#512〜#1023を割り当てる場合は、チップ1内の物理ブロックのPZIBNをアドレス変換テーブルに記述する際に、各物理ゾーンに含まれる物理ブロックのチップ別の通番(#0〜#511)に512を加算すればよい。
[空きブロック検索用テーブルの説明]
次に、空きブロック検索用テーブルについて、図面を参照して説明する。図7は、この空きブロック検索用テーブルの例を示した図である。空きブロック検索用テーブルは、チップ0用のテーブルとチップ1用のテーブルがある。なお、物理ゾーンを構成するチップ0内の512ブロックに対する空きブロック検索用テーブルと、チップ1内の512ブロックにする空きブロック検索用テーブルの構成は同じなので、チップ0内の512ブロックに対する空きブロック検索用テーブルについて説明する。
この空きブロック検索用テーブルを作成するときは、物理ゾーンを構成するチップ0内の512ブロックに対応する512ビットの領域、空きブロック数を記述する領域および検索終了位置を記述する領域をワークエリア8に確保する。512ブロックに対応する512ビットの領域については、上の行から順番にPZIBN#0〜#7、PZIBN#8〜#15という順番で物理ブロックが割り当てられている。又、各行に含まれるビットついては下位側(右側)から上位側(左側)にPZIBNの順番(PZIBNが若い方が下位側になる順番)で物理ブロックが割り当てられている。従って、一番上の行の最下位ビットがPZIBN#0に対応し、一番下の行の最上位ビットがPZIBN#511に対応している。
次に、チップ0内の物理ブロック(冗長領域)を順次読出していき、冗長領域に論理アドレス情報としてLZIBNが記述されていた場合、又はブロックステータスとして不良ブロックを示すフラグが設定されていた場合は、その物理ブロックに対応するビットに「0」を設定する。一方、ブロックステータスとして不良ブロックを示すフラグが設定されておらず、かつ冗長領域に論理アドレス情報が記述されていない場合は、その物理ブロックに対応するビットに「1」を設定する。
尚、空きブロック数を記述する領域には、空きブロック検索用テーブルの作成を開始するときに「0」を設定しておき、物理ブロックに対応するビットに「1」設定したときは、その値をインクリメントする。又、検索終了位置を記述する領域には、予め設定されている値、又は、乱数発生器等で取得した値を設定する。
この空きブロック検索用テーブルは、アドレス変換テーブルを作成する際に一緒に作成することが好ましい。また、作成後に、空きブロックにデータを書き込んだ場合は、その物理ブロックに対応するビットを「1」から「0」に書き換え、空きブロック数をデクリメントし、データが書き込まれている物理ブロックに対して消去処理を行った場合は、その物理ブロックに対応するビットを「0」から「1」に書き換え、空きブロック数をインクリメントする。
[空きブロック検索処理の説明]
次に空きブロック検索用テーブルを用いた空きブロック検索処理を説明する。チップ0用のテーブルとチップ1用のテーブルがあるため、まず、どちらのテーブルから検索するかを決定する必要がある。空きブロックを検索する必要があるときは、アドレス変換テーブルを検索して、LZIBNに対応するチップ別のPZIBNがない場合と、LZIBNに対応するチップ別のPZIBNがある場合(データを書き換える場合、または訂正処理を行う場合)とがある。前者の場合は、チップ0とチップ1との間で空きブロック数が偏らないようにするため、空きブロック数の多いチップ側の空きブロック検索用テーブルを使用する。後者の場合、理由は後述の[データ転送処理とコピーバックの選択]で説明するが、データ転送処理を行う時とコピーバック処理を行う時とでは、使用する空きブロック検索用テーブルの選択方法が異なる。まず、データ転送処理を行う時は、書き換え対象データ又は訂正処理の対象データが書き込まれている物理ブロックが含まれるチップと異なるチップ側の空きブロック検索用テーブルを使用する。つまり、アドレス変換テーブルより、書き換え対象データ又は訂正処理の対象データが書き込まれている物理ブロックのチップ番号を求め、そのチップ番号が0であった場合は、チップ1用のテーブルを使用し、そのチップ番号が1であった場合は、チップ0用のテーブルを使用する。次に、コピーバック処理を行う時は、コピーバック処理の対象データが書き込まれている物理ブロックが含まれるチップ側の空きブロック検索用テーブルを使用する。つまり、アドレス変換テーブルより、コピーバック処理の対象データが書き込まれている物理ブロックのチップ番号を求め、そのチップ番号が0であった場合、チップ0用のテーブルを使用し、そのチップ番号が1であった場合は、チップ1用のテーブルを使用する。
空きブロックの検索方法は、物理ゾーンを構成するチップ0内の512ブロックに対する場合と、チップ1内の512ブロックにする場合とで同様なので、物理ゾーンを構成するチップ0内の512ブロックに対する空きブロックの検索方法について説明する。
この空きブロック検索用テーブルを用いた空きブロックの検索では、上の行から下の行に、各行に含まれるビットを下位側から上位側に、論理値が「1」のビットを検索していく。尚、一番下の行の最上位ビットまで検索が進んだときは、一番上の行の最下位ビットに戻る。又、検索を開始するビットは、検索終了位置を記述する領域に設定されている値に基づいて決定される。検索終了位置を記述する領域に設定されている値がnの場合、チップ別のPZIBN#nに対応するビットの次のビットから検索が開始される。例えば、検索終了位置を記述する領域に設定されている値が128の場合は、チップ別のPZIBN#129に対応するビットから検索が開始され、検索終了位置を記述する領域に設定されている値が511の場合は、チップ別のPZIBN#0に対応するビットから検索が開始される。
この検索は、論理値が「1」のビットを検出したときに終了し、検出したビットに対応するチップ別のPZIBNの値が、検索終了位置を記述する領域に設定される。従って、次回の検索では、今回の検索で検出された論理値が「1」のビットの次のビットから検索が開始される。
例えば、図7に示した空きブロック検索用テーブルのチップ別のPZIBN#0に対応するビットから検索を開始したときは、チップ別のPZIBN#27に対応するビット(上から4番目の行の下位側から4ビット目のビット)が「1」なので、ここで検索が終了し、検索終了位置を記述する領域に「27」を設定する。次回の検索は、チップ別のPZIBN#28に対応するビット(上から4番目の行の下位側から5ビット目のビット)から開始される。
[データ転送処理の説明]
図8を参照して、本発明によるデータ転送処理の概要を説明する。尚、データ転送処理は、フラッシュメモリからデータを読み出しコントローラ内のバッファに蓄積した後、コントローラ内のバッファに蓄積したデータをフラッシュメモリに書き込むデータ移動処理を意味する。一方、フラッシュメモリ内でのデータのデータ移動処理(フラッシュメモリ内でメモリセルアレイからデータレジスタにデータを読み出した後、データレジスタに読み出したデータをメモリセルアレイに書き込む処理)をコピーバック処理と言う。
本発明によるデータ転送処理は、以下のステップを繰り返すことで行われる。
(S81)メモリコントローラ3から与えられた情報に基づいて、チップ0内の物理ブロックの読み出すページのメモリセルが選択され、選択されたメモリセルからデータレジスタにデータが複写される。
(S82)チップ0内のデータレジスタから1サブページ分(1セクタ分)のデータが読み出され、メモリコントローラ3内のバッファ9に蓄積される。尚、読み出したデータに対応する誤り訂正符号も読み出され、ECCブロック11によって読み出したデータに含まれる誤りの検出、訂正が行われる。
(S83)メモリコントローラ内のバッファ9に蓄積された1サブページ分(1セクタ分)のデータが、チップ1内のデータレジスタに転送される。又、転送したデータに対応する誤り訂正符号が、ECCブロック11によって生成され、生成された誤り訂正符号もチップ1内のデータレジスタに転送される。
ここで、1ページ分のデータを転送する場合は、1ページ分のデータがメモリコントローラ内のバッファ9を介して、チップ0内のデータレジスタからチップ1内のデータレジスタに転送されるまで、S82〜S83の処理が繰り返される。本実施形態では、1ページが4サブページ(4セクタ)に対応するので、1ページ分のデータを転送する場合、S82〜S83の処理が4回繰り返される。
(S84)最初のサブページ(セクタ)に対応するデータをチップ1内のデータレジスタに転送するときに、メモリコントローラ3から与えられた情報に基づいて、書き込み先のページのメモリセルが選択され、選択されたメモリセルにデータレジスタのデータが複写される。
このように、本発明によるデータ転送処理は、2つのチップ間でデータの転送を行っているため、メモリコントローラ3内のバッファ9に1ページ分のデータを蓄積させずに、サブページ単位(セクタ単位)でチップ0内のデータレジスタからチップ1内のデータレジスタに、データを転送することができる。つまり、チップ0内のデータレジスタから1サブページ分(1セクタ分)のデータを読み出す処理と、チップ1内のデータレジスタに1サブページ分(1セクタ分)のデータを転送する処理を交互に繰り返すことにより、メモリコントローラ3内のバッファ9に1ページ分のデータを蓄積させず、チップ0内のデータレジスタからチップ1内のデータレジスタに、データを転送することができる。従って、1ページの容量に応じて、メモリコントローラ内のバッファ9の容量を変更する必要がなく、バッファ9の容量が少なくとも1サブページ分(1セクタ分)あれば、データ転送処理を行うことができる。又、バッファ9の容量が2サブページ分(2セクタ分)あれば、一方のチップ内のデータレジスタからデータを読み出し、バッファ9に蓄積する処理と、バッファ9に蓄積されたデータを他方のチップ内のデータレジスタに転送する処理を並行して行うことができる。尚、バッファ9に蓄積する処理とデータレジスタに転送する処理を並行して行うときは、チップ0に接続している内部バス14とチップ1に接続している内部バス14は、独立していることが好ましいが、共用の内部バス14を時分割で使用するようにしてもよい。
なお、本説明では、チップ0のフラッシュメモリからチップ1のフラッシュメモリへのデータ転送処理について説明したが、チップ1のフラッシュメモリからチップ0のフラッシュメモリへのデータ転送処理についても同様に行うことができる。
[データ転送処理とコピーバックの選択]
データ転送処理では、フラッシュメモリから読み出したデータをコントローラ内のバッファに蓄積した後に、そのデータをフラッシュメモリに書き込むため、読み出したデータに誤りが含まれていた場合、その誤りを訂正することができる。一方、コピーバック処理では、フラッシュメモリ内でメモリセルアレイからデータレジスタにデータを読み出した後、そのデータをメモリセルアレイに書き込むため、短時間でデータを移動させることができるが、フラッシュメモリ内で処理が実行されるため、移動前と移動後のページは同一のチップに属していなければならない。
フラッシュメモリに対するアクセス処理では、上記のようなデータ転送処理とコピーバック処理の特徴を考慮して、状況に応じてデータ転送処理とコピーバック処理を使い分けることが好ましい。つまり、記憶データを移動させるときに記憶データに含まれる誤りを訂正したいときはデータ転送処理により記憶データの移動を行い、記憶データを移動させるときに記憶データに含まれる誤りを訂正する必要がないときはコピーバック処理により記憶データの移動を行う。
なお、本発明に係るフラッシュメモリシステムのゾーンの構成は、特に限定されるものではなく、例えば、ゾーンを構成するブロックの数やチップの数は用途に合わせて適宜設定することができる。
また、以上述べた実施形態は全て本発明を例示的に示すものであって限定的に示すものではなく、本発明は他の種々の変形態様及び変更態様で実施することができる。従って本発明の範囲は特許請求の範囲及びその均等範囲によってのみ規定されるものである。
本発明の実施形態におけるフラッシュメモリシステムを概略的に示すブロック図である。 ブロックとページの関係を示す説明図である。 フラッシュメモリのアドレス空間の構造を概略的に示す図である。 2チップのフラッシュメモリでゾーンを構成した例を示す図である。 ゾーン毎の作成されるアドレス変換テーブルと空きブロック検索用テーブルの関係を示す図である。 アドレス変換テーブルの例を示した図である。 空きブロック検索用テーブルの例を示した図である。 本発明によるデータ転送処理の概要を示す図である。 従来技術によるデータ転送処理の概要を示す図である。
符号の説明
1 フラッシュメモリシステム
2 フラッシュメモリ
3 コントローラ
4 ホストシステム
6 マイクロプロセッサ
7 ホストインターフェースブロック
8 ワークエリア
9 バッファ
10 フラッシュメモリインターフェースブロック
11 ECCブロック
12 ROM
13 外部バス
14 内部バス
21 アドレス変換テーブル
22、23 空きブロック検索用テーブル

Claims (4)

  1. 複数個のフラッシュメモリ内の物理ブロックで構成された物理ゾーンに対するアクセスを制御するメモリコントローラであって、
    前記物理ゾーンに属する第1の物理ブロックを含む第1のフラッシュメモリ内のデータレジスタからデータを読み出す読出し手段と、
    前記読出し手段によって読み出されたデータを蓄積する蓄積手段と、
    前記蓄積手段に蓄積されたデータを、前記第1の物理ブロックと同一の前記物理ゾーンに属する第2物理ブロックを含む第2のフラッシュメモリ内のデータレジスタに転送する転送手段と、
    前記第1の物理ブロックと前記第2の物理ブロックが異なるフラッシュメモリに含まれるように前記第2の物理ブロックを選択する選択手段とを備え
    前記読出し手段による読み出しと前記転送手段による転送を、交互に又は並行して行うことにより、前記蓄積手段に1ページ分のデータを蓄積せずに前記第1の物理ブロックから前記第2の物理ブロックにデータを移動させることを特徴とするメモリコントローラ。
  2. 前記選択手段が、前記物理ゾーンに属する空きブロックをフラッシュメモリ毎に検索することのできる空きブロック検索手段を備えることを特徴とする請求項1に記載のメモリコントローラ。
  3. 請求項1から2のいずれか1項に記載のメモリコントローラと複数個のフラッシュメモリを備えることを特徴とするフラッシュメモリシステム。
  4. 複数個のフラッシュメモリ内の物理ブロックで構成された物理ゾーンに対するアクセスを制御するフラッシュメモリの制御方法であって、
    前記物理ゾーンに属する第1の物理ブロックを含む第1のフラッシュメモリ内のデータレジスタからデータを読み出す読出しステップと、
    前記読出しステップで読み出されたデータを蓄積する蓄積ステップと、
    前記蓄積ステップで蓄積されたデータを、前記第1の物理ブロックと同一の前記物理ゾーンに属する第2物理ブロックを含む第2のフラッシュメモリ内のデータレジスタに転送する転送ステップとを有し、
    前記読出しステップによる読み出しと前記転送ステップによる転送を、交互に又は並行して行うことにより、前記蓄積ステップで1ページ分のデータを蓄積せずに前記第1の物理ブロックから該第1の物理ブロックと異なるフラッシュメモリ内の前記第2の物理ブロックにデータを移動させることを特徴とするフラッシュメモリの制御方法。
JP2006295343A 2006-10-31 2006-10-31 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 Active JP4569554B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006295343A JP4569554B2 (ja) 2006-10-31 2006-10-31 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006295343A JP4569554B2 (ja) 2006-10-31 2006-10-31 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Publications (2)

Publication Number Publication Date
JP2008112335A JP2008112335A (ja) 2008-05-15
JP4569554B2 true JP4569554B2 (ja) 2010-10-27

Family

ID=39444808

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006295343A Active JP4569554B2 (ja) 2006-10-31 2006-10-31 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Country Status (1)

Country Link
JP (1) JP4569554B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10636459B2 (en) * 2018-05-30 2020-04-28 Micron Technology, Inc. Wear leveling

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005107599A (ja) * 2003-09-26 2005-04-21 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP2005292925A (ja) * 2004-03-31 2005-10-20 Tdk Corp メモリコントローラ、フラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP2006215595A (ja) * 2005-02-01 2006-08-17 Hitachi Ulsi Systems Co Ltd 記憶装置
JP2006277736A (ja) * 2005-03-03 2006-10-12 Matsushita Electric Ind Co Ltd 不揮発性記憶装置の書込み方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008021335A (ja) * 2004-10-18 2008-01-31 Matsushita Electric Ind Co Ltd 不揮発性記憶装置、不揮発性記憶装置の書込み方法およびコントローラ
US7409473B2 (en) * 2004-12-21 2008-08-05 Sandisk Corporation Off-chip data relocation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005107599A (ja) * 2003-09-26 2005-04-21 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP2005292925A (ja) * 2004-03-31 2005-10-20 Tdk Corp メモリコントローラ、フラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP2006215595A (ja) * 2005-02-01 2006-08-17 Hitachi Ulsi Systems Co Ltd 記憶装置
JP2006277736A (ja) * 2005-03-03 2006-10-12 Matsushita Electric Ind Co Ltd 不揮発性記憶装置の書込み方法

Also Published As

Publication number Publication date
JP2008112335A (ja) 2008-05-15

Similar Documents

Publication Publication Date Title
JP4844639B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4666080B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4171749B2 (ja) メモリコントローラおよびフラッシュメモリシステム
US8200892B2 (en) Memory controller, memory system with memory controller, and method of controlling flash memory
JP5093294B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4661497B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4366420B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4235646B2 (ja) メモリコントローラおよびフラッシュメモリシステム
JP4153535B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4661191B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4609406B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4569554B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4241741B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4177292B2 (ja) メモリンコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4697146B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4000124B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4177301B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2005316793A (ja) フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2006318132A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4235595B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP4254930B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4332108B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4497124B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4539621B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4213166B2 (ja) メモリコントローラおよびフラッシュメモリシステム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100707

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100726

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

Free format text: PAYMENT UNTIL: 20130820

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4569554

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150