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

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

Info

Publication number
JP4227989B2
JP4227989B2 JP2005365175A JP2005365175A JP4227989B2 JP 4227989 B2 JP4227989 B2 JP 4227989B2 JP 2005365175 A JP2005365175 A JP 2005365175A JP 2005365175 A JP2005365175 A JP 2005365175A JP 4227989 B2 JP4227989 B2 JP 4227989B2
Authority
JP
Japan
Prior art keywords
physical
block
logical
zone
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.)
Active
Application number
JP2005365175A
Other languages
English (en)
Other versions
JP2007172066A (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 JP2005365175A priority Critical patent/JP4227989B2/ja
Publication of JP2007172066A publication Critical patent/JP2007172066A/ja
Application granted granted Critical
Publication of JP4227989B2 publication Critical patent/JP4227989B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、メモリコントローラ及び当該メモリコントローラを備えるフラッシュメモリシステムに関する。
近年、不揮発性の記憶媒体であるフラッシュメモリの開発が盛んに行われ、デジタルカメラ等の情報機器(ホストシステム)の記憶媒体として普及している。
このような機器が扱うデータが大容量化したことに伴い、フラッシュメモリの記憶容量も大容量化が進んでいる。このように大容量化したフラッシュメモリの記憶領域を円滑に管理するため、近年は、この記憶領域を複数のゾーンに分割して管理する手法が用いられている(例えば特許文献1を参照)。
従来の複数のゾーンを有するフラッシュメモリの記憶領域を、より具体的に示せば、例えば図6に示す形に区画され、管理されていた。
すなわち、データの物理的な読み書きの単位であるページを所定数含んだ、データ消去の単位である物理ブロックには、それぞれに固有の物理ブロックアドレス(PBA)が割り当てられている。各物理ブロックは、複数の物理ゾーンのいずれかに分類され、各物理ゾーンには、それぞれに固有の物理ゾーン番号(PZN)が割り当てられる。図6の例では、計2048個の物理ブロックには#0〜#2047の連続するPBAが割り当てられており、PBA#0〜#511の計512個の物理ブロックがPZN#0の物理ゾーンに属し、PBA#512〜#1023の計512個の物理ブロックがPZN#1の物理ゾーンに属し、PBA#1024〜#1535の計512個の物理ブロックがPZN#2の物理ゾーンに属し、PBA#1536〜#2047の計512個の物理ブロックがPZN#3の物理ゾーンに属する。
また、各ページには物理ページアドレス(PPA)が割り当てられている。PPAは、ページが属する物理ブロックのPBAの下位に、当該物理ブロック内での当該ページの通番であるページ番号(PN)を付加した形をとっている。
一方、ホストシステム側のアドレス空間は、セクタ(512バイト)単位で分割した領域に付けた通番であるLBA(Logical Block Address)で管理されている。更に、複数個のセクタをまとめたものを論理ブロックと呼び、複数個の論理ブロックをまとめたものを論理ゾーンと呼んでいる。又、論理ブロックに付けられた通番を論理ブロック番号(LBN)と呼び、論理ゾーンに付けられた通番を論理ゾーン番号(LZN)と呼んでいる。又、各論理ゾーンに含まれる論理ブロックの、各論理ゾーン内での通番を論理ゾーン内ブロック番号(LZIBN)と呼んでいる。
従って、各論理ゾーンに含まれる論理ブロック数をnとした場合、LBNをnで割ったときの商がLZNに対応し、余りがLZIBNに対応する。
又、各論理ゾーンにはそれぞれ1個の物理ゾーンが割り当てられ、論理ゾーンに含まれる各論理ブロックに対応するデータは、その論理ゾーンに割り当てられた物理ゾーンに含まれる物理ブロックに書き込まれる。更に、データが書き込まれた物理ブロックの冗長領域には、そのデータに対応する論理ブロックのLZIBN(又は、LBN)が書き込まれる。
なお、物理ブロックと論理ブロックとの対応関係は、データの書き込みや消去が行われる毎に変化する。このため、個々の時点における両者の対応関係を管理するためアドレス変換テーブルが作成され、対応関係が変化する毎にアドレス変換テーブルが更新される。このアドレス変換テーブルは論理ゾーン毎に作成することができる。つまり、論理ゾーンと物理ゾーンとの対応関係は予め設定されているので、アドレス変換テーブルを作成する対象の物理ゾーンに含まれる物理ブロックの冗長領域に書き込まれているLZIBNを参照することによりアドレス変換テーブルを作成することができる。
ここで、冗長領域に書き込まれる論理ブロックを特定する情報(以下、論理アドレス情報という。)は、LBNであってもアドレス変換テーブルを作成することができるが、一般的にはデータ量の少ないLZIBNが論理アドレス情報として冗長領域に書き込まれる。
又、各論理ゾーンには、物理ゾーンの記憶容量に応じて設定された所定数のセクタが割り当てられる。図6の例では、LZN#0の論理ゾーンにLBA#0〜#15999のセクタが、LZN#1の論理ゾーンにLBA#16000〜#31999のセクタが、LZN#2の論理ゾーンにLBA#32000〜#47999のセクタが、LZN#3の論理ゾーンにLBA#48000〜#63999のセクタが、それぞれ割り当てられている。なお、この例では、フラッシュメモリの1個のページが1個のセクタに対応し、各物理ブロックは、32個のページで構成されている。
各論理ゾーンに割り当てられた16000個のセクタは、論理ゾーン内でLBAが連続する32個のセクタ単位で論理ブロックとして管理されている。従って、言い換えれば、LBAが連続する32個のセクタを論理ブロックとして、LBNが連続する論理ブロックを各論理ゾーンに500個(LZIBN#0〜#499)ずつ割り当てている。ここで、論理ブロックに含まれるセクタ数については、1個の論理ブロックと1個又は複数個の物理ブロックの容量が一致するよう適宜設定される。又、物理ブロックの各ページにはLBAの順番でデータが格納されるので、各論理ゾーンに含まれる論理ブロックと、その論理ゾーンに対応する物理ゾーンに含まれる物理ブロックとの対応関係に基づいて、フラッシュメモリ内のアクセス先を特定することができる。
又、フラッシュメモリの記憶容量が大容量化したため、起動時に全ての論理ゾーンについてアドレス変換テーブルを作成するのではなく、アクセス対象となった論理ゾーンのアドレス変換テーブルをその都度作成することが多くなっている。
特開2005−18490号公報
しかしながら、上述のように論理ゾーン単位(相互に対応する論理ゾーンと物理ゾーン単位)で論理ブロックと物理ブロックの対応関係を管理している場合には、論理ゾーンに含まれる全ての論理ブロックを対象としたアドレス変換テーブルを作成した後でなければ、その論理ゾーンに対応する物理ゾーン(物理ゾーンに含まれる物理ブロック)にアクセスすることができない。従って、各論理ゾーン及び物理ゾーンのサイズが大きくなると、アドレス変換テーブルの作成にかかる時間が長くなるため、ホストシステムからアクセスの要求を受けてからアクセスを開始するまでの時間が長くなってしまう。
又、論理ゾーン及び物理ゾーンのサイズを小さくすれば、アドレス変換テーブルの作成にかかる時間を短く出来るが、特定の物理ゾーンに不良ブロックが集中した場合にその物理ゾーンで必要な有効ブロック数を確保できなくなってしまう確率が高くなる。つまり、論理ゾーンに含まれる論理ブロック数aに対する物理ゾーンに含まれる物理ブロック数bの比率(a:b)を維持したまま論理ゾーン及び物理ゾーンのサイズを小さくすれば、特定の物理ゾーンに不良ブロックが集中した場合に、その物理ゾーンで必要な有効ブロック数を確保できなくなってしまう確率が高くなる。ここで、比率(a:b)を変化させて論理ブロック数aと物理ブロック数bの差である予備数(b−a)を多くすれば、必要な有効ブロック数を確保できなくなってしまうという確率を低くできるが、フラッシュメモリに記憶できる容量が小さくなってしまう。
本発明は上記の実情に鑑みてなされたもので、論理ゾーン及び物理ゾーンのサイズを小さくすることなく、アドレス変換テーブルのサイズを小さくすることができるメモリコントローラ、及び当該メモリコントローラを備えるフラッシュメモリシステムを提供することを目的とする。
上記目的を達成するため、本発明のメモリコントローラは、
ホストシステムからの命令に応答してフラッシュメモリへのアクセスを制御するメモリコントローラであって、
前記フラッシュメモリにおける消去単位である物理ブロックを複数個集めた物理ゾーンと前記ホストシステムにおけるアクセス単位であるセクタを複数集めた論理ゾーンの対応関係と、前記物理ゾーンを所定の分割数で分割した物理セグメントと前記論理のゾーンを前記分割数で分割した論理セグメントの対応関係とを管理するアドレス管理手段と、
前記物理セグメント内の物理ブロックを占用ブロック又は共用ブロックに割り当て、前記占用ブロックには、該占用ブロックが含まれる前記物理セグメントと対応関係にある前記論理セグメントに対応するデータを書き込み、前記共用ブロックには、該共用ブロックが含まれる前記物理ゾーンと対応関係にある前記論理ゾーンに対応するデータを書き込む書込手段と、
を備えることを特徴とする。
前記物理セグメントに含まれる物理ブロックの個数は、2のべき乗個であることが好ましい。
前記共用ブロックは、前記物理セグメント内の先頭又は最後の物理ブロックであることが好ましい。
また、本発明のフラッシュメモリシステムは、上記構成のメモリコントローラと、フラッシュメモリと、から構成される。
本発明によれば、論理ゾーン及び物理ゾーンを所定の分割数で分割した論理セグメント及び物理セグメント単位でアドレス変換テーブルを作成することができる。従って、論理ゾーン及び物理ゾーン単位でアドレス変換テーブルを作成するときよりも短い時間で、アクセス対象になっている領域のアドレス変換テーブルを作成することができる。又、特定の物理セグメントに不良ブロックが集中しても、同一の物理ゾーンに属する他の物理セグメント内の物理ブロック(共用ブロック)を使用することができるため、特定の物理セグメントで必要な有効ブロック数を確保できなくなる確率を低く抑えることができる。
以下、図面に基づき、本発明の実施の形態について詳細に説明する。
図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にて行われるデータ消去動作における処理単位であり、複数個のページで構成されている。
図2に示したフラッシュメモリ2では、1つのページは、1セクタ(512バイト)のユーザ領域25と、16バイトの冗長領域26で構成され、1つの物理ブロックは32個のページで構成されている。なお、1つのページが4セクタのユーザ領域と64バイトの冗長領域で構成され、1つの物理ブロックが64個のページで構成されているフラッシュメモリもある。ユーザ領域25は、ホストシステム4から供給されるユーザデータを格納するための領域である。
冗長領域26は、エラーコレクションコード、論理アドレス情報、ブロックステータス(フラグ)等の付加データを記憶するための領域である。
エラーコレクションコードは、ユーザ領域25に記憶されているデータに含まれる誤りを検出し、訂正するためのデータである。
論理アドレス情報は、フラッシュメモリ2の各物理ブロックに含まれている少なくとも1個のページのユーザ領域25に有効なデータが格納されているとき、そのデータに対応する論理ブロックを特定するための情報である。この論理アドレス情報として論理ゾーン内ブロック番号LZIBN又は論理ブロック番号LBNを用いることができるが、ビット数の少ない論理ゾーン内ブロック番号LZIBNが用いられることが多い。
なお、ユーザ領域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は、図3に示すようにコマンドレジスタR1、セクタ数レジスタR2及びLBAレジスタR3を備えており、ホストシステム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とデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。より詳細には、フラッシュメモリインターフェースブロック10は、アドレス処理部、コマンドレジスタ、命令処理ブロック等から構成される。図3に示すように、アドレス処理部は、物理ブロックアドレスレジスタR11、ページ番号レジスタR12、カウンタR13を備える。命令処理ブロックは、コマンドレジスタR21に設定されたシーケンスコマンドに従って処理を実行する。
物理ブロックアドレスレジスタR11は、フラッシュメモリ2のアクセス対象の物理ブロックの物理ブロックアドレスPBAを設定する。物理ブロックアドレスレジスタR11に設定されるPBAは、ワークエリア8に作成されるアドレス変換テーブルに基づいて決定される。このアドレス変換テーブルは、相互に対応する論理セグメントと物理セグメント単位で作成される。尚、論理セグメント及び物理セグメントについては後述する。
ページ番号レジスタR12には、アクセス対象の先頭ページのページ番号PNが初期値として設定される。カウンタR13には、アクセス対象の物理ブロック内のアクセス対象ページのページ数が初期値として設定される。
コマンドレジスタR21は、フラッシュメモリインタフェースブロック10が実行すべき処理を指示するシーケンスコマンドが設定される。
命令処理ブロックは、コマンドレジスタR21に設定されているシーケンスコマンドに従って、フラッシュメモリ2を制御するための内部コマンド、物理アドレス等を出力する。
フラッシュメモリインターフェースブロック10は、命令処理ブロックによって出力される内部コマンド、アドレス情報等をフラッシュメモリ2に供給することにより、フラッシュメモリ2に読み出し、書き込み等を実行させる。ここで、アクセス対象のページを特定する物理アドレスは、物理ブロックアドレスレジスタR11に設定されたPBAとページ番号レジスタR12に設定された設定値に基づいて生成される。又、1ページのアクセスが終了する毎に、カウンタR13に設定されている設定値がデクリメント(1ずつ減算)され、ページ番号レジスタR12に設定されている設定値がインクリメント(1ずつ加算)され、カウンタR13に設定されている設定値が0になると一連のアクセス処理を終了する。
ECCブロック11は、フラッシュメモリ2に書き込むデータに付加されるエラーコレクションコードを生成するとともに、読み出しデータに付加されたエラーコレクションコードに基づいて、読み出したデータに含まれる誤りを検出・訂正する。
ROM12は、マイクロプロセッサ6による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。具体的には、ROM12は、例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムを格納する。
次に、上記構成のフラッシュメモリシステムにより実現される論理アドレスと物理アドレスとの変換処理について説明する。
本実施の形態においては、図4に示したように、960個の論理ブロックで論理ゾーンが構成され、1024個の物理ブロックで物理ゾーンが構成されている。又、1個の物理ブロックは32個のページで構成され、1ページが1セクタに対応する。
論理ゾーンは32個の論理セグメントに分割され、物理ゾーンも32個の物理セグメントに分割されている。ここで、各論理ゾーン内の論理セグメントに付けた通番を論理セグメント番号LSNと呼び、各物理ゾーン内の物理セグメントに付けた通番を物理セグメント番号PSNと呼ぶ。
論理ゾーンと物理ゾーンの対応関係は予め設定されている。本実施の形態においては、LZN#0の論理ゾーンにPZN#0の物理ゾーンが割り当てられ、LZN#1の論理ゾーンにPZN#1の物理ゾーンが割り当てられ、LZN#2の論理ゾーンにPZN#2の物理ゾーンが割り当てられ、以下同様に1個の論理ゾーンに1個の物理ゾーンが順次割り当てられている。
論理ゾーンに含まれるLSN#0〜#31の論理セグメントと物理ゾーンに含まれるPSN#0〜#31の物理セグメントの対応関係も予め設定されている。図4には、相互に対応関係にあるLZN#0の論理ゾーンとPZN#0の物理ゾーンにおける論理セグメントと物理セグメントの対応関係が示されている。ここでは、LSN#0の論理セグメントにPSN#0の物理セグメントが割り当てられ、LSN#1の論理セグメントにPSN#1の物理セグメントが割り当てられ、LSN#2の論理セグメントにPSN#2の物理セグメントが割り当てられ、以下同様に1個の論理セグメントに1個の物理セグメントが割り当てられている。
PSN#0〜#31の各物理セグメントは32個の物理ブロックで構成されており、その先頭ブロックが共用ブロックに割り当てられ、共用ブロック以外の31個の物理ブロックが占用ブロックに割り当てられている。占用ブロックは、対応関係にある論理セグメントに含まれる論理ブロックだけに割り当てられる物理ブロックであり、共用ブロックは、LSN#0〜#31のいずれの論理セグメントに属する論理ブロックであっても、その論理ブロックに対応するデータの書込み先として使用できる物理ブロックである。
ここで、各物理セグメントに含まれる物理ブロックの個数が2のべき乗個の場合、各物理ゾーンに含まれるPZIBN#0〜#1023の各論理ブロックが属する物理セグメントのPSNは、PZIBNを2進数で表したときの特定のビットで判断することができる。本実施の形態においては、各物理ゾーンに1024個の物理ブロックが含まれ、各物理セグメントに32個の物理ブロックが含まれている。
従って、PZIBNは10ビットで表すことができ、そのPZIBNの上位5ビットがPSNに対応し、下位5ビットが物理セグメント内の物理ブロックに付けた通番を示すセグメント内ブロック番号PSIBNに対応する。又、各物理セグメントのPSIBN#0の物理ブロックを共用ブロックとした場合、共用ブロックのPZIBNの上位5ビットが、物理ゾーン内の共用ブロックに付けた通番を示す共用ブロック番号SBNに対応する。例えば、PZIBNが「11 0000 0011」の物理ブロックは、PSN#24の物理セグメントのPSIBN#3の占用ブロックであり、PZIBNが「11 0000 0000」の物理ブロックは、SBN#24の共用ブロックである。
一方、LSN#0〜#31の各論理セグメントは30個の論理ブロックで構成されている。各論理セグメントに含まれる論理ブロックに対応するデータは、相互に対応関係にある物理セグメントの占用ブロック又はPSN#0〜#31の物理セグメントの共用ブロック(SBN#0〜#31の共用ブロック)に書き込まれる。つまり、LSN#0の論理セグメントに含まれる論理ブロックに対応するデータは、PSN#0の物理セグメントの占用ブロック又はSBN#0〜#31の共用ブロックに書き込まれ、LSN#1の論理セグメントに含まれる論理ブロックに対応するデータは、PSN#1の物理セグメントの占用ブロック又はSBN#0〜#31の共用ブロックに書き込まれ、以下同様に、LSN#31の論理セグメントに含まれる論理ブロックに対応するデータは、PSN#31の物理セグメントの占用ブロック又はSBN#0〜#31の共用ブロックに書き込まれる。
ここで、各論理ゾーンに含まれるLZIBN#0〜#959の各論理ブロックが属する論理セグメントのLSNは、LZIBNを各論理セグメントに含まれる論理ブロックの数で割ることによって求められる。例えば、LZIBN#32の論理ブロックは、32÷30の商が1なのでLSN#1の論理セグメントに属し、LZIBN#76の論理ブロックは、76÷30の商が2なのでLSN#2の論理セグメントに属する。つまり、LSNは、LZIBNを各論理セグメントに含まれる論理ブロックの数で割ったときの商に対応する。又、データが書込まれた物理ブロックの冗長領域26には、書き込んだデータに対応する論理ブロックのLZIBNが書き込まれる。
次に、アドレス変換テーブルの作成処理について説明する。コントローラ3は、ホストシステム4からアクセスの要求があると、アクセス対象の物理ゾーンに含まれる物理ブロックの冗長領域に書き込まれているLZIBNを参照してアドレス変換テーブルを作成する。
図5は、アクセス対象がLZN#0のLSN#1に含まれる論理ブロック(LZN#0のLZIBN#30〜#59の範囲に含まれる論理ブロック)に作成されるアドレス変換テーブルの例である。
このアドレス変換テーブルを作成するときには、PSN#1の物理セグメントに含まれる占用ブロックの冗長領域とSBN#0〜31の共用ブロックの冗長領域26に書き込まれているLZIBNが参照される。尚、SBN#0〜31の共用ブロックについては、SBNとLZIBNの対応関係を示した補助テーブルを作成することが好ましい。この補助テーブルが作成されている場合には、アドレス変換テーブルを作成するときに、アクセス対象の論理セグメントに対応する物理セグメントの占用ブロックの冗長領域26に書き込まれているLZIBNとこの補助テーブルを参照すればよい。
図5に示したアドレス変換テーブルではLZIBN#30〜59の論理ブロックに対応する物理ブロックを、占用ブロックについてはPSIBNで、共用ブロックについてはSBNで示している。ブロック種別は、対応する物理ブロックを、PSIBNとSBNのいずれで示しているかを判別するための情報であり、「0」の場合はPSIBNで、「1」の場合はSBNで示していると判別する。又、LZIBN#35のように対応する物理ブロックが無い場合には、アドレス変換テーブルの対応する箇所に存在しない占用ブロックのPSIBN#0が書き込まれる。
各物理セグメントに含まれる物理ブロックの数をkとした場合、PSN、PSIBN及びPZIBNは下記の関係式を満たす。
PZIBN=k×PSN+PSIBN
従って、各物理セグメントに含まれる物理ブロックの数が32で、PSNが#1のとき、PSIBN「0 0001」に対応する物理ブロックのPZIBNは#33(32×1+1)であり、PSIBN「0 0111」に対応する物理ブロックのPZIBNは#39(32×1+7)である。
尚、実際の処理では、2進数表示のPSNの下位側に、2進数表示のPSIBNを付加することによってPZIBNを求めることができる。例えば、PSN「0 0001」の下位側にPSIBN「0 0001」を付加することによってPZIBN「00 0010 0001」が求められ、PSN「0 0001」の下位側にPSIBN「0 0111」を付加することによってPZIBN「00 0010 0111」が求められる。
又、各物理セグメントに含まれる物理ブロックの数をkとした場合、SBN及びPZIBNは下記の関係式を満たす。
PZIBN=k×SBN
従って、各物理セグメントに含まれる物理ブロックの数が32のとき、SBN「0 0000」に対応する物理ブロックのPZIBNは#0(32×0)であり、SBN「0 0011」に対応する物理ブロックのPZIBNは#96(32×3)である。
尚、実際の処理では、2進数表示のSBNの下位側に、5ビットの「0」を付加することによってPZIBNを求めることができる。例えば、SBN「0 0000」の下位側に「0 0000」を付加することによってPZIBN「00 0000 0000」が求められ、SBN「0 0011」の下位側に「0 0000」を付加することによってPZIBN「00 0110 0000」が求められる。
尚、上記のような論理セグメント単位のアドレス変換テーブルは、論理ゾーン内論理ブロック番号LZIBNと物理ゾーン内物理ブロック番号PZIBNとの対応関係で論理ブロックと物理ブロックの対応関係を示してもよい。この場合、上記のようなブロック種別は不要になる。
次に、フラッシュメモリシステム1における読み出し処理について説明する。
この読み出し処理では、ホストインターフェースブロック7のセクタ数レジスタR2に設定されたセクタ数、LBAレジスタR3に設定されたLBAの先頭値、コマンドレジスタR1に設定された外部コマンドに基づいて処理が実行される。尚、この読み出し処理は、コマンドレジスタR1に外部コマンドが設定されると開始される。
マイクロプロセッサ6は、LBAレジスタR3に設定された先頭LBAとセクタ数レジスタR2に設定されたアクセス対象のセクタ数に基づいて、アクセス対象の論理ゾーン番号LZNと論理ゾーン内ブロック番号LZIBNと論理セグメント番号LSNを求める。ここでは、LBAの下位5ビットを削除することによりLBNが求められ、このLBNを論理ゾーンに含まれる論理ブロックの個数(960個)で割ることにより、その商に対応するLZNと余りに対応するLZIBNが求められる。更に、このLZIBNを論理セグメントに含まれる論理ブロックの個数(30個)で割ることにより、その商に対応するLSNが求められる。尚、アクセス対象領域が複数の論理ブロックにまたがっている場合は、論理ブロック毎にLZN、LZIBN及びLSNが求められる。
次に、このようにして求めた論理ゾーン番号LZNと論理ゾーン内ブロック番号LZIBNと論理セグメント番号LSNに基づいて、その論理ブロックに対応する物理ブロックの物理ブロックアドレスPBAを求める。尚、アクセス対象領域が複数の論理ブロックにまたがっている場合は、論理ブロック毎にPBAが求められる。
PBAを求める処理を具体的に説明する。
まず、アクセス対象のLZNとLSNに対応する論理セグメントのアドレス変換テーブルが作成されているか否かを確認する。アドレス変換テーブルが作成されていない場合は、ワークエリア8にアドレス変換テーブルを作成する領域を確保する。この領域確保では、LZIBNの順番で、ブロック種別とPSIBN又はSBNが書き込まれる書込み箇所を確保し、ブロック種別は「占用ブロック」を示す情報にPSIBNは「データ無し」を示す情報に初期設定する。続いて、アクセス対象のLZNとLSNに対応するPZNとPSNで特定される物理セグメントに含まれる占用ブロックの冗長領域26とアクセス対象のLZNに対応するPZNで特定される物理ゾーンに含まれる共用ブロックの冗長領域26に書き込まれているLZIBN(論理アドレス情報)を読み出す。更に、読み出したLZIBNに対応する書込み箇所にそのLZIBNが書き込まれていた物理ブロックのPSIBN又はSBNを書き込む。又、SBNを書き込んだ場合には、対応するブロック種別を「共用ブロック」を示す情報「1」に変更する。
次に、作成されたアドレス変換テーブルに基づいて、アクセス対象のLZIBNに対応するPZIBNを求める。ここで、対応する物理ブロックが占用ブロックの場合には、PSNの下位側にPSIBNを付加することによってPZIBNが求められる。対応する物理ブロックが共用ブロックの場合には、SBNの下位側に「0 0000」を付加することによってPZIBNが求められる。
続いて、求めた物理ゾーン内ブロック番号PZIBNに、その物理ゾーンPZNの前に存在する物理ゾーン分の物理ブロック数を加算して、物理ブロックアドレスPBA(=1024×PZN+PZIBN)を求める。なお、1024は物理ゾーンに含まれる物理ブロック数である。
次に、マイクロプロセッサ6は、フラッシュメモリインタフェースブロック10の物理ブロックアドレスレジスタR11にアクセス対象の物理ブロックの物理ブロックアドレスPBAを設定し、ページ番号レジスタR12にその物理ブロック内の読み出しを開始するページのページ番号を設定し、さらに、カウンタR13に読み出し対象のページ数を設定し、さらに、コマンドレジスタR21に、データの読み出しを指示するシーケンスコマンドを設定する。ここで、セクタ数レジスタR2に設定されたセクタ数及びLBAレジスタR3に設定されたLBAで特定されるアクセス対象が複数の論理ブロックにまたがっていない場合は、セクタ数レジスタR2に設定されたセクタ数がカウンタR13に設定され、LBAレジスタR3に設定されたLBAの下位5ビットがページ番号レジスタR12に設定される。アクセス対象が複数の論理ブロックにまたがっている場合は、アクセス対象のLBAの範囲を論理ブロック毎に分割し、分割した各LBAの範囲に含まれるセクタ数がカウンタR13に設定され、分割した各LBAの範囲の先頭LBAの下位5ビットがページ番号レジスタR12に設定される。
フラッシュメモリインタフェースブロック10の命令処理ブロックは、コマンドレジスタR21に設定されているシーケンスコマンドに従って、フラッシュメモリ2を制御するための内部コマンド、アドレス情報等を出力し、フラッシュメモリ2からデータを読み出し、読み出したデータをバッファ8に格納する。マイクロプロセッサ6は、バッファ9に格納されたデータをホストインタフェースブロック7と外部バス13を介してホストシステム4に提供する。
ここで、フラッシュメモリインタフェースブロック10の動作について具体的に説明する。フラッシュメモリインタフェースブロック10は、シーケンスコマンドに従って、物理ブロックアドレスレジスタR11に設定されているPBAにページ番号レジスタR12に設定されている設定値を付加(連結)した物理ページアドレスをフラッシュメモリ2に供給し、その物理ページアドレスに対応するページからデータを読み出し、読み出したデータをバッファ9に格納する。
1ページ分のデータが読み出される毎に、カウンタR13に設定されている設定値をデクリメント(1ずつ減算)し、ページ番号レジスタR12に設定されている設定値をインクリメント(1ずつ加算)し、カウンタR13に設定されている設定値が0になるまでデータを順次読み出し、読み出したデータをバッファ9に格納する。
次に、フラッシュメモリシステム1における書き込み処理について説明する。
書き込み処理の場合も、ホストインターフェースブロック7のセクタ数レジスタR2に設定されたセクタ数、LBAレジスタR3に設定されたLBAの先頭値、コマンドレジスタR1に設定された外部コマンドに基づいて処理が実行される。尚、この書き込み処理の場合も、コマンドレジスタR1に外部コマンドが設定されると処理が開始される。
アクセス対象の論理ゾーン番号LZNと論理ゾーン内ブロック番号LZIBNと論理セグメント番号LSNも、読み出し処理の場合と同様に、LBAレジスタR3に設定された先頭LBAとセクタ数レジスタR2に設定されたアクセス対象のセクタ数に基づいて求められる。
書き込み処理における、論理アドレスから物理アドレスへの変換も、上述の読み出し処理と基本的に同一である。つまり、書き込み処理の場合も、アドレス変換テーブルに基づいて、アクセス対象の物理ブロックのPBAが求められる。
続いて、アクセス対象の物理ブロックのデータの書き込み先のページが空きページの場合には、その空きページにデータを書き込み、空きページでない場合には、空きブロックを検索し、検出した空きブロックにデータを書き込む。空きブロックを検索するときは、最初にアクセス対象の論理セグメントに対応する物理セグメントに含まれる占用ブロックの空きブロックが検索され、占用ブロックの空きブロックが無い場合には、アクセス対象の物理ゾーンに含まれる共用ブロックの空きブロックが検索される。
空きブロックにデータを書き込んだ場合は、データを書き込んだ空きブロックの冗長領域26にそのデータに対応するLZIBNを書き込む。更に、アドレス変換テーブルで、論理ブロックと物理ブロックの対応関係が変化した部分を更新する。
上述のように、本実施の形態のフラッシュメモリシステム1においては、LBAに基づいてアクセス対象の論理ブロックが属する論理ゾーンのLZNと論理セグメントのLSNが特定され、特定されたLZNとLSNに対応するPZNとPSNが求められる。データを書き込む場合は、このPZNとPSNで特定される物理セグメントに含まれる占用ブロックにデータが書き込まれるが、この物理セグメントに含まれる占用ブロックが不良ブロック化した等の理由により、この物理セグメント内に空きブロックが無くなってしまった場合には、この物理セグメントが属する物理ゾーンの共用ブロックにデータが書き込まれる。
なお、この発明は上記実施の形態に限定されず、種々の変形及び応用が可能である。
例えば、上記実施の形態においては、1つの物理セグメントの先頭に1つの共用ブロックを配置したが、共用ブロックとして使用する物理ブロックは任意である。即ち、各物理セグメントのLSIBN#1〜31のいずれかの物理ブロックを共用ブロックとすることが可能である。さらに、各物理セグメントに1つの共用物理ブロックを配置するだけでなく、複数の共用ブロックを配置することが可能である。例えば、PSIBN#0と#1の物理ブロックを共用ブロックとする等してもよい。
又、論理ゾーンの数、論理ゾーン内の論理ブロックの数、論理ゾーン内の論理セグメントの数、論理セグメント内の論理ブロックの数、物理ゾーンの数、物理ゾーン内の物理ブロックの数、物理ゾーン内の物理セグメントの数及び物理セグメント内の物理ブロックの数は、相互に整合が取れる範囲で適宜設定することができる。
以上の説明では、物理ゾーンの数、物理ゾーン内の物理ブロックの数、物理ゾーン内の物理セグメントの数及び物理セグメント内の物理ブロックの数をいずれも2のべき乗個としたが、必ずしも2のべき乗個でなくてもよい。
本発明の実施の形態に係るフラッシュメモリシステムを概略的に示すブロック図である。 この発明の実施の形態のフラッシュメモリのアドレス空間の構造を概略的に示す図である。 ホストインターフェースブロック及びフラッシュメモリインタフェースブロックの構成を示すブロック図である。 論理アドレスと物理アドレスとの対応関係を説明するための図である。 アドレス変換テーブルの一例を示す図である。 従来のフラッシュメモリのアドレス空間の構造を概略的に示す図である。
符号の説明
1 フラッシュメモリシステム
2 フラッシュメモリ
3 コントローラ
4 ホストシステム
6 マイクロプロセッサ
7 ホストインターフェースブロック
8 ワークエリア
9 バッファ
10 フラッシュメモリインターフェースブロック
11 ECCブロック
12 ROM
13 外部バス
14 内部バス
25 ユーザ領域
26 冗長領域

Claims (4)

  1. ホストシステムからの命令に応答してフラッシュメモリへのアクセスを制御するメモリコントローラであって、
    前記フラッシュメモリにおける消去単位である物理ブロックを複数個集めた物理ゾーンと前記ホストシステムにおけるアクセス単位であるセクタを複数集めた論理ゾーンの対応関係と、前記物理ゾーンを所定の分割数で分割した物理セグメントと前記論理のゾーンを前記分割数で分割した論理セグメントの対応関係とを管理するアドレス管理手段と、
    前記物理セグメント内の物理ブロックを占用ブロック又は共用ブロックに割り当て、前記占用ブロックには、該占用ブロックが含まれる前記物理セグメントと対応関係にある前記論理セグメントに対応するデータを書き込み、前記共用ブロックには、該共用ブロックが含まれる前記物理ゾーンと対応関係にある前記論理ゾーンに対応するデータを書き込む書込手段と、
    を備えることを特徴とするメモリコントローラ。
  2. 前記物理セグメントに含まれる物理ブロックの個数が2のべき乗個であることを特徴とする請求項1に記載のメモリコントローラ。
  3. 前記共用ブロックが前記物理セグメント内の先頭又は最後の物理ブロックであることを特徴とする請求項1又は2に記載のメモリコントローラ。
  4. 請求項1乃至3のいずれか1項に記載のメモリコントローラと、フラッシュメモリと、から構成される、
    ことを特徴とするフラッシュメモリシステム。
JP2005365175A 2005-12-19 2005-12-19 メモリコントローラ及びフラッシュメモリシステム Active JP4227989B2 (ja)

Priority Applications (1)

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

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2007172066A JP2007172066A (ja) 2007-07-05
JP4227989B2 true JP4227989B2 (ja) 2009-02-18

Family

ID=38298590

Family Applications (1)

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

Country Status (1)

Country Link
JP (1) JP4227989B2 (ja)

Also Published As

Publication number Publication date
JP2007172066A (ja) 2007-07-05

Similar Documents

Publication Publication Date Title
JP4171749B2 (ja) メモリコントローラおよびフラッシュメモリシステム
JP4666081B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4235646B2 (ja) メモリコントローラおよびフラッシュメモリシステム
JP4636005B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4501881B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4661497B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4661191B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4153535B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4710753B2 (ja) メモリコントローラ及びメモリコントローラを用いたフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4434171B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4241741B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4609406B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4254933B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4661566B2 (ja) アクセスコントローラ、フラッシュメモリシステム及びアクセス制御方法
JP3934659B1 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4227989B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4213166B2 (ja) メモリコントローラおよびフラッシュメモリシステム
JP4513782B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4000124B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP2021068129A (ja) メモリコントローラ及びフラッシュメモリシステム
JP4697146B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2008158908A (ja) メモリコントローラ及びフラッシュメモリシステム並びにフラッシュメモリの制御方法
JP6260395B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
JP4569554B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4497124B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081111

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

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

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

Free format text: PAYMENT UNTIL: 20111205

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4227989

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20111205

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20121205

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20121205

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20131205

Year of fee payment: 5