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

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

Info

Publication number
JP2007179479A
JP2007179479A JP2005380054A JP2005380054A JP2007179479A JP 2007179479 A JP2007179479 A JP 2007179479A JP 2005380054 A JP2005380054 A JP 2005380054A JP 2005380054 A JP2005380054 A JP 2005380054A JP 2007179479 A JP2007179479 A JP 2007179479A
Authority
JP
Japan
Prior art keywords
bit
data
block
group
physical
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
JP2005380054A
Other languages
English (en)
Other versions
JP4235646B2 (ja
Inventor
Hirotoshi Takagi
宏寿 高木
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 JP2005380054A priority Critical patent/JP4235646B2/ja
Publication of JP2007179479A publication Critical patent/JP2007179479A/ja
Application granted granted Critical
Publication of JP4235646B2 publication Critical patent/JP4235646B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System (AREA)

Abstract

【課題】空きブロックの検索時間を短縮させるメモリコントローラおよびフラッシュメモリシステムを提供する。
【解決手段】メモリコントローラのワークエリアに、フラッシュメモリの物理ブロックの使用状況を表すテーブルである空きブロック検索テーブル100を設ける。空きブロック検索テーブル100では、各物理ブロックの使用状況が1ビットの情報で示される。この使用状況を示す情報は、所定のビット列単位で読み出され、そのビット列の情報に基づいて空きブロックが検索される。更に、所定のビット列を複数集めたグループを構成し、各グループに含まれる空きブロックの個数を示す情報を保持し、この空きブロックの個数を示す情報に基づいて、空きブロックの個数が0個のグループに属するビット列の読み出しをスキップしている。
【選択図】図3

Description

本発明は、メモリコントローラおよび当該メモリコントローラを備えるフラッシュメモリシステムに関する。
近年、不揮発性の記憶媒体であるフラッシュメモリの開発が行われ、デジタルカメラ等の情報機器(ホストシステム)の記憶媒体として普及している。
このような機器が扱うデータが大容量化したことに伴い、フラッシュメモリの記憶容量も大容量化が進んでいる。このように大容量化したフラッシュメモリを円滑に管理するため、近年は、この記憶領域を複数のゾーンに分割して管理する手法が用いられている(たとえば、特許文献1を参照)。
従来の複数のゾーンを有するフラッシュメモリの記憶領域を、より具体的に示せば、例えば図4に示す形に区画され、管理されていた。
すなわち、データの物理的な読み書きの単位であるページを所定数含んだ、データ消去の単位である物理ブロックには、それぞれに固有の物理ブロックアドレス(PBA)が割り当てられている。各物理ブロックは、複数の物理ゾーンのいずれかに分類され、各物理ゾーンには、それぞれに固有の物理ゾーン番号(PZN)が割り当てられる。図4の例では、計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が論理アドレス情報として冗長領域に書き込まれる。
一般的に、各論理ゾーンには、LBAが連続する複数のセクタが割り当てられている。図4の例では、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号公報
データを新たにフラッシュメモリに書き込む際には、書き込む論理ゾーンに対応する物理ゾーンを検索し、その物理ゾーン内の使用されていない物理ブロック(空きブロック)を検索し、その空きブロックに対してデータを書き込む必要がある。しかし、空きブロックを検索するときは、LZIBNの順番で空きブロックを順次検索するので、空きブロックの個数が少なくなったときに検索に要する時間が長くなるという問題があった。
本発明は、上記問題点に鑑みてなされたものであり、空きブロックの検索時間を短縮させるメモリコントローラおよびフラッシュメモリシステムを提供することを目的とする。
上記課題を解決するため、本発明の第1の観点に係るメモリコントローラは、
各ビットの論理値が対応関係にあるフラッシュメモリ内の物理ブロックの使用状況を示している複数ビットの記憶領域で構成されたビットデータ保持手段と、
前記各ビットと前記物理ブロックの対応関係を管理する管理手段と、
前記物理ブロックの使用状況に応じて、前記ビットデータ保持手段に保持されている各ビットの論理値を書き換えるビットデータ更新手段と、
前記データ保持手段に保持されている各ビットの論理値を所定数のビットを含むビット列単位で順次読み出し、読み出した前記ビット列のデータに基づいて、使用可能なことを示しているビットを検出する検出手段と、
前記検出手段によって検出された使用可能なことを示しているビットと対応関係にある物理ブロックにデータを書き込む書き込み手段と、
前記検出手段における読み出し順序が連続している複数の前記ビット列でグループを構成し、該グループに含まれる使用可能なことを示しているビットの個数を該グループ毎に保持するグループデータ保持手段と、
前記物理ブロックの使用状況に応じて、前記グループデータ保持手段に保持されている使用可能なことを示しているビットの個数を書き換えるグループデータ更新手段と、
を備え、
前記検出手段が前記ビット列のデータを順次読み出すときに、前記グループデータ保持手段に保持されている使用可能なことを示しているビットの個数が0個のグループに含まれるビット列のデータを読み飛ばすことを特徴とする。
前記ビット列に含まれるビットの個数は2のべき乗個であることが好ましい。
前記グループに含まれる前記ビット列の個数は2のべき乗個であることが好ましい。
上記課題を解決するため、本発明の第2の観点に係るフラッシュメモリシステムは、
上記のメモリコントローラと、
フラッシュメモリと、
から構成されることを特徴とする。
本発明によれば、物理ゾーン内の物理ブロックをグループに分け、空きブロックの検索において、空きブロック数が0であるグループはスキップして、空きブロック数が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にて行われるデータ消去動作における処理単位であり、複数個のページで構成されている。
図2に示したフラッシュメモリでは、1つのページは、1セクタ(512バイト)のユーザ領域25と、16バイトの冗長領域26で構成され、1つの物理ブロックは32個のページで構成されている。なお、1つのページが4セクタのユーザ領域と64バイトの冗長領域で構成され、1つの物理ブロックが64個のページで構成されているフラッシュメモリもある。ユーザ領域25は、ホストシステム4から供給されるユーザデータを記憶するための領域である。
冗長領域26は、ECC(Error Correcting Code)、論理アドレス情報、ブロックステータス(フラグ)等の付加データを記憶するための領域である。
ECCは、ユーザ領域25に記憶されているデータに含まれる誤りを検出し、訂正するためのデータである。
論理アドレス情報は、フラッシュメモリ2の各物理ブロックに含まれている少なくとも1個のページのユーザ領域25に有効なデータが格納されているとき、そのデータに対応する論理ブロックを特定するための情報である。
なお、ユーザ領域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に処理を実行させる。
マイクロプロセッサ6は、たとえば、シフトレジスタとフラグレジスタとを備え、フラグレジスタはシフトレジスタの演算によりキャリーが発生した場合、キャリーフラグを立てる。
ホストインターフェースブロック7は、ホストシステム4との間の、データ、アドレス情報、ステータス情報、外部コマンド等の授受を行う。ホストシステム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は、内部バス14を介して、フラッシュメモリ2とデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。より詳細には、フラッシュメモリインターフェースブロック10は、アドレス処理部、コマンドレジスタ、命令処理ブロック等から構成される。
フラッシュメモリインターフェースブロック10は、命令処理ブロックによって出力される内部コマンド、アドレス情報等をフラッシュメモリ2に供給することにより、フラッシュメモリ2に読み出し、書き込み等を実行させる。
ECCブロック11は、フラッシュメモリ2に書き込むデータに付加されるECCを生成するとともに、読み出しデータに付加されたECCに基づいて、読み出したデータに含まれる誤りを検出・訂正する。
ROM12は、マイクロプロセッサ6による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。具体的には、ROM12は、例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムを格納する。
本実施形態においては、アドレス変換テーブルは、ワークエリア8に保存され、対応する論理ゾーンと物理ゾーンの組毎に形成され、該論理ゾーン内論理ブロック番号LZIBNと物理ゾーン内物理ブロック番号PZIBNとの対応関係を記憶するものとする。
PZIBNは、物理ゾーン内の物理ブロックに対して、その物理ブロックアドレスPBAの若い方から#0、#1、#2という順番で付けられた通番である。
図3に示す空きブロック検索テーブル100は、フラッシュメモリ2の物理ゾーンにおける物理ブロックの使用状況を表すテーブルであり、物理ゾーン毎に作成され、ワークエリア8に保存され、マイクロプロセッサ6により管理される。図3の場合、フラッシュメモリ2の各物理ゾーンは、物理ブロック1024個から構成されるものとする。
1024個の各物理ブロックは、空きブロック検索テーブル100上の1個のビットに割り当てられ、各ビットの論理値(“0”又は“1”)によって、そのビットに対応する物理ブロックが空きブロックであるか否かを示している。 図3に示した空きブロック検索テーブル100で、論理値の“0”は物理ブロックが使用されているまたは不良ブロックであることを示し、論理値の“1”は物理ブロックが使用可能である(空きブロックである)ことを示している。尚、図3に示した空きブロック検索テーブル100上の各行の8ビットには、下位側からPZIBNの順番で各物理ブロックが割り当てられている。
1024個の物理ブロックに対応する空きブロック検索テーブル100上の各ビットは、16個のグループに分割され、各グループは8個のサブグループに分割されている。つまり、空きブロック検索テーブル100上の1バイト(8ビット)がサブグループに対応し、8バイト(64ビット)がグループに対応する。ここで、物理ゾーン内の各グループに付けた通番をグループ番号GNとすれば、PZIBN#0〜#63の物理ブロックに対応するビットがGN#0のグループに割り当てられ、PZIBN#64〜#127の物理ブロックに対応するビットがGN#1のグループに割り当てられ、以下同様に、各グループに#15までのGNが順次割り当てられる。又、論理ゾーン内の各サブグループに付けた通番をサブグループ番号SGNとすれば、PZIBN#0〜#7の物理ブロックに対応するビットがSGN#0のサブグループに割り当てられ、PZIBN#8〜#15の物理ブロックに対応するビットがSGN#1のサブグループに割り当てられ、以下同様に、各サブグループに#127までのSGNが順次割り当てられる。
更に、本実施形態においては、各グループに含まれる空きブロックの個数を空きブロック数FBNとして管理している。例えば、図3の場合、GN#0(PZIBN#0〜#63に対応)のグループには、空きブロックであることを示す論理値が“1”のビットが3個(PZIBN#4、#12、#15に対応)存在する。したがって、GN#0のグループのFBNは3となる。また、図3の場合、GN#1(PZIBN#64〜#127に対応)のグループには、空きブロックが存在しない。したがって、GN#1のグループのFBNは0となる。
まず、空きブロック検索テーブル100を作成する処理を説明する。
空きブロック検索テーブル100は、ある物理ゾーンに対してアクセスがあったときに、その物理ゾーンの空きブロック検索テーブル100がワークエリア8に存在しないときに作成される。尚、この空きブロック検索テーブル100は、論理ブロックと物理ブロックの対応関係を示したアドレス変換テーブルと共に作成されることが多い。
マイクロプロセッサ6は、ワークエリア8にPZIBN#0〜#1023の物理ブロックに対応する128バイト(1024ビット)の領域と各グループのFBNを書き込む領域を確保する。ここで、各物理ブロックに対応する128バイト(1024ビット)の領域は、全てのビットが論理値“0”に初期設定され、各グループのFBNは0に初期設定される。又、アドレス変換テーブルを一緒に作成する場合は、アドレス変換テーブルを作成するための領域も確保する。アドレス変換テーブルを作成するための領域は、PZIBN#0〜#1023の物理ブロックに割り当てられる論理ブロック数に応じた領域が確保される。例えば、PZIBN#0〜#1023の物理ブロックにLZIBN#0〜#999の論理ブロックが割り当てられている場合には、LZIBN#0〜#999のそれぞれに対応するPZIBNを書き込むための領域を確保する。
続いて、PZIBN#0〜#1023の物理ブロックの冗長領域26に書き込まれている論理アドレス情報(LZIBN)とブロックステータスを順次読み出し、論理アドレス情報(LZIBN)が書き込まれている場合には、アドレス変換テーブルを作成するための領域のそのLZIBNに対応する箇所に、そのLZIBNが書き込まれていた物理ブロックのPZIBNを書き込む。一方、論理アドレス情報(LZIBN)が書き込まれていない場合は、ブロックステータスに基づいてその物理ブロックが不良ブロックであるか否かを判別する。その結果、不良ブロックでないと判別した場合は、その物理ブロックのPZIBNに対応するビットの論理値を“1”に変更し、更に、その物理ブロックのPZIBNが属するグループのFBNの値を1増やした値に書き換える。
各PZIBNが属するサブグループ番号SGNは、PZIBNをサブグループに含まれる物理ブロックの数で割ることによって求めることができ、各PZIBNが属するグループ番号GNは、PZIBNをグループに含まれる物理ブロックの数で割ることによって求めることができる。例えば、サブグループに含まれる物理ブロックが8個で、グループに含まれる物理ブロックが64個の場合、PZIBN#153が属するサブグループのSGN(#19)は153÷8の商に対応し、PZIBN#153が属するサブグループのGN(#2)は153÷64の商に対応する。
又、本実施形態のようにサブグループ及びグループに含まれる物理ブロックの数が2のべき乗個の場合には、PZIBNを2進数で表したときの特定範囲のビットからSGNとGNを求めることができる。本実施形態では、サブグループに含まれる物理ブロックが8個で、グループに含まれる物理ブロックが64個なので、10ビット(#0〜#1023は)のPZIBNの上位7ビットがSGNに対応し、PZIBNの上位4ビットがGNに対応する。例えば、PZIBN「00 1001 1001」(#153)が属するサブグループのSGNは「001 0011」(#19)に対応し、PZIBN#153が属するサブグループのGNは「0010」(#2)に対応する。
空きブロック検索テーブル100を作成するときは、上記のようにして求めたSGN及びGNに基づいて、空きブロックに対応するビットの論理値を“1”に変更し、FBNの値を更新する。例えば、PZIBN#153の物理ブロックが空きブロックの場合、SGNが#19(153÷8の商又はPZIBNの上位7ビットに対応する)になるので、空きブロック検索テーブル100の20行目(SGNの値に+1をした値に対応する)の下位側から2ビット目(153÷8の余りに+1をした値又はPZIBNの下位3ビットの値に+1をした値に対応する)の論理値を“1”に変更し、GNが#2(153÷64の商又はPZIBNの上位4ビットに対応する)のFBNの値を1増やした値に書き換える。
具体的に説明すれば、PZIBN#0から順番に物理ブロックの冗長領域26に書き込まれている論理アドレス情報(LZIBN)とブロックステータスを順次読み出していき、PZIBN#4の物理ブロックが空きブロックであると判別すると、対象ゾーンの空きブロック検索テーブルの1行目の下位から5ビット目の論理値を“1”に変更し、GN#0のFBNの値を1に書き換える。その後、引き続き論理アドレス情報(LZIBN)とブロックステータスを順次読み出していき、PZIBN#12の物理ブロックが空きブロックであると判別すると、2行目の下位から5ビット目の論理値を“1”に変更し、GN#0のFBNの値を2に書き換える。以下同様に、空きブロックであると判別した物理ブロックのPZIBNに対応するビットの論理値を“1”に変更し、空きブロックであると判別した物理ブロックのPZIBNが属するグループのFBNを更新する。
次に、空きブロック検索テーブル100を用いて物理ゾーン内の空きブロックを検索する処理を説明する。
この空きブロックの検索処理では、前回の検索処理で空きブロックとして検出された物理ブロックの次の物理ブロックから検索を開始する。この検索を開始する物理ブロックのPZIBNについては、ワークエリア8に書き込んでおく。
空きブロックの検索処理では、まず、検索を開始する物理ブロックのPZIBNが属するグループのGNを求め、求めたGNに対応するグループのFBNが0でないときは、そのPZIBNが属するサブグループのSGNを求め、求めたSGNに対応する行の1バイトの情報(以下、この1バイトの情報をサブグループ情報と言う。)をシフトレジスタに設定する。この際、検索を開始するビットよりも下位側のビットについてはマスク処理(検索を開始するビットよりも下位側のビットだけを0とした1バイトのマスクデータで論理積を求める処理)を施してからシフトレジスタに設定する。例えば、検索を開始するビットが下位側から5ビット目のときは、求めたSGNに対応するサブグループ情報とマスクデータ「1111 0000」の論理積を求め、得られた情報をシフトレジスタに設定する。尚、サブグループに含まれるビットの個数は、シフトレジスタに設定することができるビット列のデータ長に応じて設定する。例えば、シフトレジスタが8ビットとの場合は、サブグループに含まれるビットの個数を8個とし、シフトレジスタが16ビットとの場合は、サブグループに含まれるビットの個数を16個とする。
一方、求めたGNに対応するグループのFBNが0のときは、その次のグループのFBNを参照し、FBNが0でないときは、そのグループに属するサブグループのサブグループ情報をSGNの順番で順次読み出していき、サブグループ情報が「0000 0000」でないときにそのサブグループ情報をシフトレジスタに設定する。その次のグループのFBNも0の場合は、GNの順番で各グループのFBNを参照していき、FBNが0でないグループを見つけて同様の処理を行う。
次に、シフトレジスタに設定されたサブグループ情報(検索を開始するビットが最下位ビットでないときはマスク処理後のサブグループ情報)を下位側シフトさせ、何回のシフトでキャリーフラグが立ったかを判別する。このキャリーフラグが立ったときのシフト回数とシフトレジスタに設定されたサブグループ情報に対応するSGNに基づいて、空きブロックのPZIBNが求められる。このシフト回数とSGNに基づいてPZIBNを求めるときは、SGNを7ビットの2進数で表し、シフト回数に−1した値を3ビットの2進数で表し、これらをこの順番で連結する。このようにすることにより10ビットの2進数で表したPZIBNを求めることができる。又は、SGNにサブグループに含まれる物理ブロックの個数を乗じた値に、シフト回数に−1した値を加算することによってPZIBNを求めることができる。例えば、SGNが#20でキャリーフラグが立ったときのシフト回数が5回の場合には、SGN「001 0100」の下位側に、シフト回数に−1した値「100」を付加することによりPZIBN「00 1010 0100」を求めることができる。又は、20(SGN)×8(サブグループに含まれる物理ブロックの個数)+4(シフト回数に−1した値)でPZIBN#164を求めることができる。
上述の検索処理において、SBNの順番で各サブグループのサブグループ情報を読み出していく途中で異なるグループに遷移するときは、サブグループ情報を読み出す前に、遷移先のグループのFBNを参照し、FBNが0でないときは、引き続きSBNの順番で各サブグループのサブグループ情報を読み出していき、サブグループ情報が「0000 0000」でないサブグループのサブグループ情報をシフトレジスタに設定する。一方、遷移先のグループのFBNが0ときは、その後のグループのFBNを順次参照していき、FBNが0でないグループを見つけて、そのFBNが0でないグループに含まれるサブグループのサブグループ情報を読み出していき、サブグループ情報が「0000 0000」でないサブグループのサブグループ情報をシフトレジスタに設定する。
又、空きブロックにデータを書き込んだ場合は、データを書き込んだ物理ブロックに対応するビットの論理値を“0”に変更し、更に、その物理ブロックが属するグループのFBNの値を1減らした値に書き換える。一方、データが書き込まれていた物理ブロックを消去処理した場合は、その物理ブロックに対応するビットの論理値を“1”に変更し、更に、その物理ブロックが属するグループのFBNの値を1増やした値に書き換える。
次に、図3に示した空きブロック検索テーブル100を用いた空きブロックの検索処理を具体的に説明する。
例えば、ワークエリア8に書き込まれている検索を開始する物理ブロックのPZIBNが「00 0010 0011」の場合、このPZIBNの上位4ビット「0000」に対応するGN#0のFBNを参照する。GN#0のFBNが3なのでPZIBNの上位7ビット「000 0100」に対応するSGN#4のサブグループ(PZIBN#32〜#39)のサブグループ情報「0000 0000」を読み出し、そのサブグループ情報「0000 0000」とマスクデータ(下位3ビットをマスクしたマスクデータ)「1111 1000」の論理積を求める。求めた論理積が「0000 0000」なので、SGN#4のサブグループ情報(マスク処理後のサブグループ情報)はシフトレジスタに設定しない。続いて、SGN#5のサブグループ以降のサブグループ情報を順次読み出す。SGN#5〜#7のサブグループ情報は「0000 0000」なので、SGN#5〜#7のサブグループ情報はシフトレジスタに設定しない。
その次のSGN#8のサブグループは、GN#1の先頭サブグループなのでSGN#8のサブグループ情報を読み出す前に、GN#1のFBNを参照する。GN#1のFBNが0なので、SGN#8〜#15のサブグループ情報を読み出さず、更に、GN#2のFBNを参照する。GN#2のFBNが1なので、SGN#16〜#23のサブグループ情報を順次読み出す。
SGN#17(PZIBN#136〜#143)のサブグループ情報が「0000 0000」でないので、SGN#17のサブグループ情報「0000 1000」をシフトレジスタに設定する。SGN#17のサブグループ情報が設定されたシフトレジスタを下位方向にシフトさせ、最初にキャリーフラグが立ったときのシフト回数を判別する。ここでは、4回のシフトでキャリーフラグが立つので、シフト回数に−1をした「011」の上位側にSGN「001 0001」(#17)を付加したPZIBN「00 1000 1011」(#139)の物理ブロックが空きブロックとして検出される。
その後、ワークエリア8に書き込まれている検索を開始する物理ブロックのPZIBNを#140に変更する。又、PZIBN#139の物理ブロックにデータを書き込んだときに、空きブロック検索テーブル100のPZIBN#139に対応するビットの論理値を“0”に変更し、GN#2のFBNを0に書き換える。更に、PZIBN#139に書き込んだデータに対応する旧データが書き込まれていた物理ブロックを消去処理したときは、その物理ブロックに対応するビットの論理値を“1”に変更し、更に、その物理ブロックが属するグループのFBNを1増やした値に書き換える。
次に、空きブロックにホストシステム4から与えられるデータを書き込む処理について説明する。この書き込み処理は、ホストシステム4から与えられる書き込み指示情報に基づいて実行される。この書き込み指示情報には、書き込みを開始するセクタのLBAと書き込むセクタ数を指示する情報が含まれている。このLBAとセクタ数に基づいて、書き込み先の論理ブロックが特定され、この論理ブロックに対応する物理ブロックの空きページにデータを書き込めない場合、つまり、既存データの書き換えを行う場合、又は、この論理ブロックに対応する物理ブロックが存在しない場合に、空きブロック検索テーブル100を用いて検出された空きブロックにデータが書き込まれる。
空きブロックにデータを書き込む場合は、フラッシュメモリインターフェースブロック10内のレジスタに空きブロックのPBA、書き込みを開始するページ番号及び書き込むデータのページ数等が設定され、これらの設定に基づいて書き込み処理が実行される。書き込み処理が実行されると、フラッシュメモリ2に対して、書き込みを指示する内部コマンドと、フラッシュメモリインターフェースブロック10内のレジスタに設定されているPBAとページ番号に基づいて生成されたアドレスと、書き込みデータが順次供給される。1ページ分のデータが書き込まれる毎に、フラッシュメモリインターフェースブロック10内のレジスタに設定されているページ番号(初期値は書き込みを開始するページ番号)を1ずつ増やし、ページ数(初期値は書き込むデータのページ数)を1ずつ減らして、同様の処理を繰り返す。この処理を、ページ数が0になるまで繰り返すことによって、フラッシュメモリインターフェースブロック10内のレジスタに最初に設定したページ数分の書き込み処理が終了する。
以上説明したように、本発明に係るメモリコントローラは、各ビットの論理値(“0”又は“1”)によって対応する物理ブロックの使用状況を示した空きブロック検索テーブル100を用いて使用可能な物理ブロック(空きブロック)を検索している。上記の実施例では、データが書き込まれていない良品の物理ブロックの使用状況を論理値の“1” で示し、データが書き込まれている良品の物理ブロック若しくは不良ブロックの使用状況を論理値の“0”で示している。更に、所定数のビットを含むビット列単位で各ビットの論理値を順次読み出し、このビット列のデータに含まれる論理値が“1”のビットを検出している。つまり、この検索では、ブロック検索テーブル100に含まれる各ビットを、上の行から下の行へ、各行を下位側から上位側に走査することによって空きブロックを検出している。又、ビット列(サブグループ)を複数個集めたグループを構成し、各グループに属するビットに含まれる論理値が“1”のビットの数、つまり、各グループに属する空きブロックの個数をグループ毎に保持している。この空きブロックの個数が0個のグループに属するビット列(サブグループ)については、ビット列のデータに含まれる論理値が“1”のビットを検出する処理を、グループ単位でスキップしている。つまり、空きブロックの個数が0個のグループについては、グループ単位でそのグループに属するビット列(サブグループ)が読み飛ばされるため、検索時間が短縮される。
この発明は、上述の実施形態に限定されず、種々の変形及び応用が可能である。
各物理ゾーンの物理ブロック数は1024個に限られず、自由に設定できる。
本実施形態では、空きブロック検索テーブル100のサブグループは8ビットであったが、8ビットに限られず、自由に設定してもよい。ただし、各ビットのデータは、サブグループ単位でシフトレジスタに格納されるから、このビット列(サブグループ)のデータ長はシフトレジスタのビット数以下であることが必要である。
本実施形態では、グループは8個のサブグループをまとめたものであったが、グループは8個のサブグループに限られず、自由に個数を定めてもよい。
フラッシュメモリシステムの一例を示すブロック図である。 フラッシュメモリのアドレス空間の構造の一例を示す図である。 空きブロック検索テーブルの構造を示す図である。 従来のフラッシュメモリのアドレス空間の構造を概略的に示す図である。
符号の説明
1 フラッシュメモリシステム
2 フラッシュメモリ
3 コントローラ
4 ホストシステム
6 マイクロプロセッサ
7 ホストインターフェースブロック
8 ワークエリア
9 バッファ
10 フラッシュメモリインターフェースブロック
11 ECCブロック
12 ROM
13 外部バス
14 内部バス
25 ユーザ領域
26 冗長領域

Claims (4)

  1. 各ビットの論理値が対応関係にあるフラッシュメモリ内の物理ブロックの使用状況を示している複数ビットの記憶領域で構成されたビットデータ保持手段と、
    前記各ビットと前記物理ブロックの対応関係を管理する管理手段と、
    前記物理ブロックの使用状況に応じて、前記ビットデータ保持手段に保持されている各ビットの論理値を書き換えるビットデータ更新手段と、
    前記データ保持手段に保持されている各ビットの論理値を所定数のビットを含むビット列単位で順次読み出し、読み出した前記ビット列のデータに基づいて、使用可能なことを示しているビットを検出する検出手段と、
    前記検出手段によって検出された使用可能なことを示しているビットと対応関係にある物理ブロックにデータを書き込む書き込み手段と、
    前記検出手段における読み出し順序が連続している複数の前記ビット列でグループを構成し、該グループに含まれる使用可能なことを示しているビットの個数を該グループ毎に保持するグループデータ保持手段と、
    前記物理ブロックの使用状況に応じて、前記グループデータ保持手段に保持されている使用可能なことを示しているビットの個数を書き換えるグループデータ更新手段と、
    を備え、
    前記検出手段が前記ビット列のデータを順次読み出すときに、前記グループデータ保持手段に保持されている使用可能なことを示しているビットの個数が0個のグループに含まれるビット列のデータを読み飛ばすことを特徴とするメモリコントローラ。
  2. 前記ビット列に含まれるビットの個数が2のべき乗個であることを特徴とする請求項1に記載のメモリコントローラ。
  3. 前記グループに含まれる前記ビット列の個数が2のべき乗個であることを特徴とする請求項2に記載のメモリコントローラ。
  4. 請求項1乃至3のいずれか1項に記載のメモリコントローラと、
    フラッシュメモリと、
    から構成されることを特徴とするフラッシュメモリシステム。
JP2005380054A 2005-12-28 2005-12-28 メモリコントローラおよびフラッシュメモリシステム Expired - Fee Related JP4235646B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005380054A JP4235646B2 (ja) 2005-12-28 2005-12-28 メモリコントローラおよびフラッシュメモリシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005380054A JP4235646B2 (ja) 2005-12-28 2005-12-28 メモリコントローラおよびフラッシュメモリシステム

Publications (2)

Publication Number Publication Date
JP2007179479A true JP2007179479A (ja) 2007-07-12
JP4235646B2 JP4235646B2 (ja) 2009-03-11

Family

ID=38304572

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005380054A Expired - Fee Related JP4235646B2 (ja) 2005-12-28 2005-12-28 メモリコントローラおよびフラッシュメモリシステム

Country Status (1)

Country Link
JP (1) JP4235646B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010148701A1 (zh) * 2009-11-11 2010-12-29 中兴通讯股份有限公司 一种移动终端快速加载短信的方法及装置
US8041747B2 (en) 2008-02-20 2011-10-18 Fujitsu Ten Limited Data search device and gateway device in communication apparatus
JP2013137770A (ja) * 2011-12-12 2013-07-11 Apple Inc Lbaビットマップの使用
CN103778964A (zh) * 2013-12-30 2014-05-07 上海晨思电子科技有限公司 一种NAND Flash烧写数据的处理、使用方法及装置、系统
JP2014160335A (ja) * 2013-02-19 2014-09-04 Mitsubishi Electric Corp メモリ管理装置

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8041747B2 (en) 2008-02-20 2011-10-18 Fujitsu Ten Limited Data search device and gateway device in communication apparatus
WO2010148701A1 (zh) * 2009-11-11 2010-12-29 中兴通讯股份有限公司 一种移动终端快速加载短信的方法及装置
JP2013137770A (ja) * 2011-12-12 2013-07-11 Apple Inc Lbaビットマップの使用
US9069657B2 (en) 2011-12-12 2015-06-30 Apple Inc. LBA bitmap usage
US9477596B2 (en) 2011-12-12 2016-10-25 Apple Inc. LBA bitmap usage
JP2014160335A (ja) * 2013-02-19 2014-09-04 Mitsubishi Electric Corp メモリ管理装置
CN103778964A (zh) * 2013-12-30 2014-05-07 上海晨思电子科技有限公司 一种NAND Flash烧写数据的处理、使用方法及装置、系统

Also Published As

Publication number Publication date
JP4235646B2 (ja) 2009-03-11

Similar Documents

Publication Publication Date Title
JP4171749B2 (ja) メモリコントローラおよびフラッシュメモリシステム
WO2007000862A1 (ja) メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法
JP4235646B2 (ja) メモリコントローラおよびフラッシュメモリシステム
JP4636005B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4501881B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4661497B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4710753B2 (ja) メモリコントローラ及びメモリコントローラを用いたフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4434171B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4661191B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4241741B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4661566B2 (ja) アクセスコントローラ、フラッシュメモリシステム及びアクセス制御方法
JP4655034B2 (ja) メモリコントローラ及びフラッシュメモリシステム並びにフラッシュメモリの制御方法
JP4213166B2 (ja) メモリコントローラおよびフラッシュメモリシステム
JP4254933B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP3934659B1 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4661748B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4697146B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4000124B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4513782B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2005292925A (ja) メモリコントローラ、フラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4227989B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP2006048746A (ja) メモリカード
JP4273109B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4569554B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4497124B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081017

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081021

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081121

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

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

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

Free format text: PAYMENT UNTIL: 20111219

Year of fee payment: 3

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20121219

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees