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

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

Info

Publication number
JP4213166B2
JP4213166B2 JP2006022885A JP2006022885A JP4213166B2 JP 4213166 B2 JP4213166 B2 JP 4213166B2 JP 2006022885 A JP2006022885 A JP 2006022885A JP 2006022885 A JP2006022885 A JP 2006022885A JP 4213166 B2 JP4213166 B2 JP 4213166B2
Authority
JP
Japan
Prior art keywords
block
physical
zone
logical
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.)
Expired - Fee Related
Application number
JP2006022885A
Other languages
English (en)
Other versions
JP2007206835A (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 JP2006022885A priority Critical patent/JP4213166B2/ja
Publication of JP2007206835A publication Critical patent/JP2007206835A/ja
Application granted granted Critical
Publication of JP4213166B2 publication Critical patent/JP4213166B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、メモリコントローラおよび当該メモリコントローラを備えるフラッシュメモリシステムに関する。
近年、不揮発性の記憶媒体であるフラッシュメモリの開発が行われ、デジタルカメラ等の情報機器(ホストシステム)の記憶媒体として普及している。
このような機器が扱うデータが大容量化したことに伴い、フラッシュメモリの記憶容量も大容量化が進んでいる。このように大容量化したフラッシュメモリを円滑に管理するため、近年は、この記憶領域を複数のゾーンに分割して管理する手法が用いられている(たとえば、特許文献1を参照)。
従来の複数のゾーンを有するフラッシュメモリの記憶領域を、より具体的に示せば、例えば図11に示す形に区画され、管理されていた。
すなわち、データの物理的な読み書きの単位であるページを所定数含んだ、データ消去の単位である物理ブロックには、それぞれに固有の物理ブロックアドレス(PBA)が割り当てられている。各物理ブロックは、複数の物理ゾーンのいずれかに分類され、各物理ゾーンには、それぞれに固有の物理ゾーン番号(PZN)が割り当てられる。図11の例では、計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が連続する複数のセクタが割り当てられている。図11の例では、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号公報
データを新たにフラッシュメモリに書き込む際には、書き込む論理ゾーンに対応する物理ゾーンを検索し、その物理ゾーン内の使用されていない物理ブロック(空きブロック)を検索し、その空きブロックに対してデータを書き込む必要がある。この空きブロック検索では、通常、各物理ゾーンに含まれる物理ブロックの使用状況を物理ブロックアドレスの順番で走査していくことにより空きブロックを検出する。又、この使用状況の走査は、前回の検索で検出された空きブロックの次の物理ブロックアドレスから開始される。つまり、この使用状況の走査は、空きブロックを検出すると終了し、次回の走査は、この空きブロックの次の物理ブロックアドレスから開始される。しかし、電源をオンした後(起動後)の最初の検索で、前回の検索で検出された空きブロックの次の物理ブロックアドレスから走査を開始するためには、前回の検索で検出された空きブロックの物理ブロックアドレスを特定する情報を不揮発性メモリに記憶させておかなければならない。又、電源をオンした後(起動後)の最初の検索については、所定の物理ブロックアドレスから検索を開始するようにしてもよいが、その場合、空きブロックの検索が特定の物理ブロックに偏ってしまう。
本発明は、上記問題点に鑑みてなされたものであり、空きブロックの検索を特定の物理ブロックに偏らせないメモリコントローラおよびフラッシュメモリシステムを提供することを目的とする。
上記課題を解決するため、本発明の第1の観点に係るメモリコントローラは、
ホストシステムからの命令に応答してフラッシュメモリへのアクセスを制御するメモリコントローラであって、
前記フラッシュメモリにおける消去単位である物理ブロックを複数個集めた物理ゾーンと前記ホストシステムにおけるアクセス単位であるセクタを複数集めた論理ゾーンとの対応関係を管理するゾーン管理手段と、
対応関係にある前記論理ゾーンと前記物理ゾーンとの間で、該論理ゾーン内の論理アドレスと該物理ゾーン内の物理アドレスとの対応関係を管理するアドレス管理手段と、
前記物理ゾーン内の物理ブロックの使用状況を順次走査していくことにより空きブロックを検出する空きブロック検索手段と、
を備え、
前記空きブロック検索手段は、前回の走査で検出された空きブロックに関する情報が保持されている場合は、前回の走査で検出された空きブロックの次の物理ブロックから使用状況の走査を開始し、前回の走査で検出された空きブロックに関する情報が保持されていない場合は、検出した空きブロックに書き込む新データと対応関係にある旧データが記憶されている物理ブロックの次の物理ブロックから使用状況の走査を開始するように構成されている、
ことを特徴とする。
上記課題を解決するため、本発明の第2の観点に係るメモリコントローラは、
ホストシステムからの命令に応答してフラッシュメモリへのアクセスを制御するメモリコントローラであって、
前記フラッシュメモリにおける消去単位である物理ブロックを複数個集めた物理ゾーンと前記ホストシステムにおけるアクセス単位であるセクタを複数集めた論理ゾーンとの対応関係を管理するゾーン管理手段と、
対応関係にある前記論理ゾーンと前記物理ゾーンとの間で、該論理ゾーン内の論理アドレスと該物理ゾーン内の物理アドレスとの対応関係を管理するアドレス管理手段と、
前記物理ゾーン内の物理ブロックの使用状況を順次走査していくことにより空きブロックを検出する空きブロック検索手段と、
を備え、
前記空きブロック検索手段は、検出した空きブロックに書き込む新データと対応関係にある旧データが記憶されている物理ブロックの次の物理ブロックから使用状況の走査を開始するように構成されている、
ことを特徴とする。
前記空きブロック検索手段は、起動後に各ビットの論理値が対応関係にある前記物理ブロックの使用状況を示している複数ビットの記憶領域で構成された空きブロック検索テーブルを作成し、該空きブロック検索テーブルを用いて前記物理ブロックの使用状況の走査を行う、
ようにしてもよい。
上記課題を解決するため、本発明の第3の観点に係るフラッシュメモリシステムは、
上記のメモリコントローラと、
フラッシュメモリと、
から構成されることを特徴とする。
本発明によれば、物理ゾーン内の物理ブロックの使用状況を順次走査していくことにより空きブロックを検出するように構成されているメモリコントローラで、前回の検索で検出された空きブロックに関する情報が保持されていない場合に、空きブロックに書き込む書き換えデータに対応する旧データが記憶されている物理ブロックの次の物理ブロックから空きブロックの検索を開始するので、空きブロック検索を特定の物理ブロックに偏らせないメモリコントローラおよびフラッシュメモリシステムを提供できる。
以下、本発明の実施形態について、図面を参照して説明する。
図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は、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は、例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムを格納する。
上述のアドレス変換テーブルの一例を図3に示す。このアドレス変換テーブル100は、論理ゾーンに含まれる論理ブロックと物理ゾーンに含まれる物理ブロックとの対応関係を、
論理ゾーン内ブロック番号LZIBNと物理ゾーン内ブロック番号PZIBNとを用いて示している。ここで、物理ゾーン内ブロック番号PZIBNは、各物理ゾーンに含まれる物理ブロックにつけられた、各物理ゾーン内での通番である。
アドレス変換テーブル100は、起動時に作成する場合や、アドレス変換テーブル100が未作成の論理ゾーンに対してアクセスがあったときに、その論理ゾーンについて作成する場合がある。なお、このアドレス変換テーブル100は、ワークエリア8に作成される。
又、本実施の形態のフラッシュメモリシステム1では、論理ゾーンを1000個の論理ブロックで構成し、物理ゾーンを1024個の物理ブロックで構成するようにしたので、図3に示したアドレス変換テーブル100では、LZIBN#0〜#999の論理ブロックとPZIBN#0〜#1023の物理ブロックの対応関係が示されている。例えば、LZIBN#0の論理ブロックに対応するデータはPZIBN#35の物理ブロックに、LZIBN#1の論理ブロックに対応するデータはPZIBN#10の物理ブロックに、LZIBN#2の論理ブロックに対応するデータはPZIBN#15の物理ブロックに記憶されている。又、LZIBN#13の論理ブロックに対応するデータは記憶されていない。
又、本実施の形態のフラッシュメモリシステム1では、上記アドレス変換テーブル100と共に、図4に示したような空きブロック検索テーブル200が作成される。この空きブロック検索テーブル200は、データの書き込み先となる空きブロックを検索するときに使用される。つまり、データの書き換え等で新規なデータを書き込むときには、この空きブロック検索テーブル200を用いて検出された空きブロックにデータが書き込まれる。
この空きブロック検索テーブル200は、物理ゾーンに含まれる物理ブロックの使用状況を示すテーブルであり、ワークエリア8上に物理ゾーン毎に作成される。物理ゾーンに含まれる1024個の物理ブロックは、それぞれ空きブロック検索テーブル200上の1個のビットに割り当てられ、各ビットの論理値(“0”又は“1”)によって、そのビットに対応する物理ブロックが空きブロックであるか否かを示している。 図4に示した空きブロック検索テーブル200では、物理ブロックが使用されている場合又は不良ブロックである場合を論理値の“0”で示し、物理ブロックが空きブロックである(書き込み可能である)場合を論理値の“1”で示している。又、空きブロック検索テーブル200では、上のビット列(行)から下のビット列(行)へ、各ビット列(各行)の8ビットについては下位側(右側)から上位側(左側)へPZIBNの順番で各物理ブロックが割り当てられている。
次に、アドレス変換テーブル100と空きブロック検索テーブル200との作成処理について説明する。
この作成処理では、マイクロプロセッサ6は、ワークエリア8にアドレス変換テーブル100を作成するための領域と空きブロック検索テーブル200を作成するための領域を確保する。アドレス変換テーブル100を作成するための領域については、LZIBN#0〜#999のそれぞれに対応するPZIBNを書き込むための領域を確保する。空きブロック検索テーブル200を作成するための領域については、PZIBN#0〜#1023の物理ブロックに対応する128バイト(1024ビット)の領域を確保する。更に、この空きブロック検索テーブル200を作成するための領域の全てのビットを論理値“0”に初期設定する。又、空きブロック検索テーブル200を作成するときは、空きブロック検索テーブル200を用いて空きブロックを検索するときに、走査を開始するビットを示す情報を設定しておくポインタ領域も確保し、このポインタ領域をクリア状態(走査を開始するビットを示す情報が設定されていない状態)に初期設定する。
続いて、マイクロプロセッサ6は、PZIBN#0〜#1023の物理ブロックの冗長領域26に書き込まれている論理アドレス情報(LZIBN)とブロックステータスとを順次読み出し、論理アドレス情報(LZIBN)が書き込まれている場合には、アドレス変換テーブル100を作成するための領域の、そのLZIBNに対応する箇所に、そのLZIBNが書き込まれていた物理ブロックのPZIBNを書き込む。一方、論理アドレス情報(LZIBN)が書き込まれていない場合は、ブロックステータスに基づいてその物理ブロックが不良ブロックであるか否かを判別する。その結果、不良ブロックでないと判別した場合は、空きブロック検索テーブル200を作成するための領域の、その物理ブロックのPZIBNに対応するビットの論理値を“1”に変更する。
ここで、空きブロック検索テーブル200の作成処理について、図5に示したフローチャートを参照して、詳細に説明する。このフローチャートでは、他のテーブル(アドレス変換テーブル100等)の作成処理を省略している。
最初に、マイクロプロセッサ6は、この空きブロック検索テーブル200の作成処理で、参照中の物理ブロックのPZIBN#n(#nは#0〜#1023)を設定する領域(以下、この領域を参照物理ブロック設定領域という。)をワークエリア8に確保し、この参照物理ブロック設定領域に“0”を設定(n=0)する(ステップS1)。
続いて、マイクロプロセッサ6は、参照物理ブロック設定領域に設定されているPZIBNの物理ブロック(PZIBN#nの物理ブロック)の冗長領域26の論理アドレス情報が書き込まれる領域を参照し、その領域に論理アドレス情報が記憶されているか否かを判別する(ステップS2)。論理アドレス情報が記憶されている場合は、その物理ブロックが使用されていると判別し、ステップS4に進む(ステップS2;Yes)。論理アドレス情報が記憶されていない場合は、その物理ブロックが使用されていないと判別し、ステップS3に進む(ステップS2;No)。
物理ブロックの冗長領域26に論理アドレス情報が記憶されていない場合(ステップS2;No)、続いて、マイクロプロセッサ6は、その物理ブロックの冗長領域26に記憶されているブロックステータスを参照し、その物理ブロックが不良ブロックであるか否かを判別する(ステップS3)。その物理ブロックが不良ブロックであると判別した場合は、ステップS4に進み(ステップS3;Yes)、その物理ブロックが不良ブロックでないと判別した場合は、ステップS5に進む(ステップS3;No)。
物理ブロックの冗長領域26に論理アドレス情報が記憶されている場合(ステップS2;Yes)又はブロックステータスが不良ブロックであることを示している場合(ステップS3;Yes)、マイクロプロセッサ6は、空きブロック検索テーブル200の、その物理ブロック(参照中の物理ブロック)に対応するビットに“0”を設定する(ステップS4)。ここで、対応するビットは、参照物理ブロック設定領域に設定されているn(10ビットの値)を、ビット列に含まれるビットの数である8で割ったときの商(nの上位7ビットの値に対応する)と余り(nの下位3ビットの値に対応する)に基づいて特定することができる。例えば、商がlで、余りがmの場合は、空きブロック検索テーブル200の上からl+1番目のビット列の下位からm+1ビット目のビットが、参照中の物理ブロックに対応するビットになる。
物理ブロックの冗長領域26に論理アドレス情報が記憶されておらず(ステップS2;No)、ブロックステータスが不良ブロックであることを示していない場合(ステップS3;No)、つまり、その物理ブロック(参照中の物理ブロック)が空きブロックであると判別された場合、マイクロプロセッサ6は、空きブロック検索テーブル200の、その物理ブロック(参照中の物理ブロック)に対応するビットに“1”を設定する(ステップS5)。
尚、ステップS4又はステップS5の処理の後にステップS6に進むが、空きブロック検索テーブル200を作成するための領域を最初に論理値“0”に初期設定しておけば、ステップS4の処理を行わずにステップS6に進むことができる。
ステップS4又はステップS5の処理が終了することにより、参照中の物理ブロックに対応するビットの設定が終了するので、マイクロプロセッサ6は、参照物理ブロック設定領域に設定されているnの値を1増加させ(ステップS6)、ステップS7に進む。
マイクロプロセッサ6は、参照物理ブロック設定領域に設定されているnの値、つまり、ステップS6で1増加させたnの値が、物理ゾーンに含まれる物理ブロックの数を超えているか否かを判別する。つまり、nの値が1023を越えているか否かを判別する(ステップS7)。nの値が1023以下の場合は、ステップS2に進み(ステップS7;Yes)、nの値が1023を越えている場合は空きブロック検索テーブル200の作成処理は終了する(ステップS7;No)。
次に、空きブロック検索テーブル200を用いた空きブロック検索の処理について、図6〜図8のフローチャートを参照して説明する。
空きブロック検索を開始するときは、ワークエリア8に設けられたポインタ領域が参照され、マイクロプロセッサ6は、ポインタ領域に設定されている値に対応する空きブロック検索テーブル200上のビットの次のビットから使用状況(論理値の“0”又な“1”で示された情報)の走査を開始する。ここで、空きブロック検索が2回目以降であれば、ポインタ領域には、前回の空きブロック検索で検出された空きブロックのPZIBNの値が設定されているが、最初の空きブロック検索の場合には、ポインタ領域に値が設定されていない。従って、本発明に係るフラッシュメモリシステムでは、このような場合に、検出した空きブロックに書き込む新データと対応関係にある旧データが記憶されている物理ブロックの次の物理ブロックに対応するビットからの走査を開始するように構成されている。つまり、新データに書き換えられる旧データが格納されている物理ブロックの次の物理ブロックに対応するビットから走査が開始され、検出された空きブロックには書き換え後のデータである新データが書き込まれる。
例えば、LZN#3に含まれるLZIBN#5の論理ブロックに対する書き込み処理が、ホストシステム4から与えられ、このアクセス要求を契機にPZN#3の空きブロック検索テーブル200作成された場合について具体的に説明する。この場合には、LZIBN#5の論理ブロックに対応する物理ブロックのPZIBNを、アドレス変換テーブル100を参照して求める。LZIBN#5の論理ブロックがPZIBN#11の物理ブロックに対応する場合には、PZIBN#12の物理ブロックに対応するビットから走査を開始する。
空きブロック検索テーブル200上の空きブロックに対応するビットを検出する走査は、例えば、8ビットのシフトレジスタ(図示せず)を用いることにより行うことができる。このシフトレジスタを用いた走査では、ポインタ領域に設定されている値に対応するビットの次のビットが含まれるビット列から順番に、ビット列が参照され、その値が0(二進数表記;000 0000)でない場合に、そのビット列の値がシフトレジスタに書き込まれる。尚、走査を開始するビットがビット列の最下位ビットでない場合には、走査を開始するビットより下位側のビットが全て“0”になるようなマスク処理が施される。例えば、走査を開始するビットがビット列の下位から5ビット目のときは、そのビット列の下位から数えて4ビット目から1ビット目までのビットが“0”になるようなマスク処理が施される。つまり、このマスク処理では、走査を開始するビットより下位側のビットが“0”で、それ以外のビットが“1”のマスクデータでAND演算を実行する。
続いて、シフトレジスタに設定されたビット列を下位方向にシフトさせ、何回のシフトでキャリーが立ったかで、下位から何ビット目のビットが空きブロックに対応するビットであるかを判別する。つまり、以上の処理により、空きブロックに対応するビットが、何番目のビット列であるかと、そのビット列の下位から何ビット目のビットであるかが判別される。このようにして空きブロックに対応するビットを判別した後に、このビットに割り当てられている物理ブロックのPZIBNが求められる。ここで、ビット列に含まれるビットの数がkで、a番目のビット列の下位からbビット目のビットが空きブロックに対応するビットである場合、そのビットに対応する物理ブロックのPZIBNはk×(a−1)+(b−1)で求められる。又、このようにして求めたPZIBNの値がポインタ領域に設定される。
まず、マイクロプロセッサ6は、ポインタ領域を参照し(ステップS102)、前回の空きブロック検索で検出された空きブロックのPZIBNの値(以下、ポインタ領域に設定されているPZIBNの値をpbという。)が設定されている場合は、ステップS103に進み(ステップS102;Yes)、PZIBNの値が設定されていない場合は、ステップS108に進む(ステップS102;No)。ここで、ポインタ領域には、pbが設定されているか否かを示すためのビット(フラグビット)が設けられており、このフラグビットの情報に基づいてpbが設定されているか否かが判断される。従って、ポインタ領域に最初にPZIBNの値を書き込むときに、このフラグビットが示す情報が、pbが設定されていることを示す情報に変更される。
ポインタ領域にpbが設定されている場合は(ステップS102;Yes)、マイクロプロセッサ6は、走査を開始する物理ブロックのPZIBNを設定するスタートポインタ領域(以下、スタートポインタ領域に設定されている値をjという。)に、pb+1の値を書き込む(ステップS103)。尚、スタートポインタ領域には、pb+1の下位10ビットだけを設定する。従って、pbが1023(二進数表記;11 1111 1111)の場合、jは0(二進数表記;00 0000 0000)になる。
ポインタ領域にpbが設定されていない場合は(ステップS102;No)、アクセス対象指示領域に設定されているLZIBNの値が参照され(ステップS108)、このLZIBNの値に対応するPZIBNが存在する場合は、ステップS112に進み(ステップS108;Yes)、このLZIBNに対応するPZIBNが存在しない場合は、ステップS109に進む(ステップS108;No)。
アクセス対象指示領域に設定されているLZIBNに対応するPZIBNが存在する場合は(ステップS108;Yes)、スタートポインタ領域にそのPZIBNに1を加算した値を書き込む(ステップS112)。つまり、jの値としてアクセス対象指示領域に設定されているLZIBNに対応するPZIBNに1を加算した値が設定される。尚、上記と同様にアクセス対象指示領域に設定されているLZIBNに対応するPZIBNの値が1023(二進数表記;11 1111 1111)の場合、jは0(二進数表記;00 0000 0000)になる。
アクセス対象指示領域に設定されているLZIBNに対応するPZIBNが存在しない場合は(ステップS108;No)、スタートポインタ領域に0を書き込む(ステップS109)。つまり、jの値として0が設定される。
尚、説明を簡略化するため、アクセス対象指示領域に設定されているLZIBNに対応するPZIBNが存在しない場合は、スタートポインタ領域に0を設定するようにしたが、アクセス対象指示領域に設定されているLZIBNを1ずつ減算していき、減算されたLZIBNに対応するPZIBNがあったときに、そのPZIBNをアクセス対象指示領域に設定するようにしてもよい。例えば、1回減算したLZIBNに対応するPZIBNがなく、2回減算したLZIBNに対応するPZIBNがなく、3回減算したLZIBNに対応するPZIBNがあった場合は、3回減算したLZIBNに対応するPZIBNに1を加算した値をスタートポインタ領域に設定する。又、このように順次LZIBNを1ずつ減算していき、LZIBNが0になっても対応するPZIBNが見つからなかった場合は、スタートポインタ領域に0を設定する。
ステップS103、ステップS109又はステップS112でスタートポインタ領域に空きブロック検索を開始する物理ブロックのPZIBNの値を設定した後にステップS115に進み、検索対象のビット列とそのビット列でマスクされるビット数を指定する情報を設定する。
図4に示した空きブロック検索テーブル200で、各ビット列は8ビットなので、j(10ビットの値)の上位7ビットの値を、ビット列を指定するビット列指定領域に書き込み、j(10ビットの値)の下位3ビットの値を、マスクされるビット数を指定するマスク情報領域に書き込む(ステップS115)。以下の説明では、ビット列指定領域に設定されている値をp、マスク情報領域に書き込まれる値をqとする。ここで、スタートポインタ領域に設定されている値jを各ビット列に含まれるビットの数で割ったときの商がj(10ビットの値)の上位7ビットの値に対応し、余りがj(10ビットの値)の下位3ビットの値に対応する。又、(p+1)番目のビット列の下位から(q+1)ビット目のビットが走査を開始するビットに対応する。
続いて、(p+1)番目のビット列の下位qビットにマスク処理を施し、マスク処理が施されたビット列のデータが0(二進数表記;0000 0000)の場合はステップS121に進み(ステップS120;Yes)、マスク処理が施されたビット列のデータが0(二進数表記;0000 0000)でない場合はステップS124に進む(ステップS120;No)。尚、q=0の場合はマスク処理が施されないため、そのままのビット列のデータが0であるか否かが判別される。
マスク処理が施されたビット列のデータ又はそのままのビット列のデータが0である場合は(ステップS120;Yes)、ビット列指定領域に設定されている値に1を加算し、マスク情報領域に設定されている値を0に変更し、ステップS120に進む(ステップS121)。ここで、ビット列指定領域に設定されている値pは7ビットの値なので、ビット列指定領域に設定されている値が127(二進数表記;111 1111)の場合、加算した値の下位7ビットに対応する0(二進数表記;000 0000)をビット列指定領域に書き込む。尚、ステップS121の後にステップS120に進んだ場合は、q=0なのでマスク処理を行わずに、(p+1)番目(pは新たにビット列指定領域に設定された値)のビット列のデータが0であるか否かを判別する。
マスク処理が施されたビット列のデータ又はそのままのビット列のデータが0でない場合は(ステップS120;No)、そのビット列のデータをシフトレジスタに書き込み、ステップS125に進む(ステップS124)。
シフトレジスタに書き込まれているビット列のデータを、キャリーフラグが立つまで下位(右)方向にシフトさせ、キャリーフラグが立つまでのシフト回数をカウントする(ステップS125)。
続いて、ビット列指定領域に設定されている値p(7ビット)の下位側に、キャリーフラグが立つまでのシフト回数から1を減算した値k(3ビット)を付加した10ビットの値をポインタ領域に書き込む(ステップS128)。ポインタ領域に書き込まれた10ビットの値が検出された空きブロックのPZIBNに対応する。
次に、図9のフローチャートにしたがって、フラッシュメモリ2にデータを書き込む際に行われる処理について説明する。なお、フラッシュメモリ2にデータを書き込む処理自体は、従来と同様なので、特に、空きブロック検索テーブル200の内容を変更する処理について説明する。
マイクロプロセッサ6は、空きブロックを検索し、空きブロックのPZIBNを取得し(ステップS201)、取得したPZIBNに基づいて、この空きブロックのPBAを求める。
続いて、マイクロプロセッサ6は、ステップS201で検出された空きブロックのPBAを含むアドレス情報と、ROM12から読み出したコマンドセット等をフラッシュメモリインターフェースブロック10に供給する。フラッシュメモリインターフェースブロック10は、与えられたアドレス情報とコマンドセット等に従ってステップS201で検出された空きブロックにデータを書き込む処理を実行する(ステップS202)。
空きブロックにデータが書き込まれると、マイクロプロセッサ6は、この空きブロックのPZIBNに対応する空きブロック検索テーブル200のビットを“0”に書き換えて(ステップS203)、処理を終了する。
次に、図10のフローチャートにしたがって、フラッシュメモリ2からデータを消去する際に行われる処理について説明する。なお、フラッシュメモリ2からデータを消去する処理自体は、従来と同様なので、特に、空きブロック検索テーブル200の内容を変更する処理について説明する。
消去処理は、例えば、書き換えデータが空きブロックに書き込まれ、旧データが不要になったときに行われる。このような場合、書き換えデータが空きブロックに書き込まれた後に、旧データが記憶されていた物理ブロックの消去処理が行われ、続いてアドレス変換テーブルのこの書き換え係る箇所のPZIBNが、旧データが記憶されていた物理ブロックのPZIBNから書き換え後の新データが記憶されている物理ブロックのPZIBNに変更される。
旧データが記憶されている物理ブロックのデータを消去する場合は、まず、アドレス変換テーブルに用いて旧データが記憶されている物理ブロックのPBIZNを取得し、更に、取得したPBIZNに基づいて、旧データが記憶されている物理ブロックのPBAを求める(ステップS301)。
続いて、マイクロプロセッサ6は、旧データが記憶されている物理ブロックのPBAと、ROM12から読み出したコマンドセット等をフラッシュメモリインターフェースブロック10に供給する。フラッシュメモリインターフェースブロック10は、与えられたPBAとコマンドセット等に従って旧データが記憶されている物理ブロックの記憶データを消去する(ステップS302)。
ステップS302の消去処理が終了した後に、フラッシュメモリ2から処理ステータスを読み出し、処理ステータス(処理が正常に終了したか否かの情報を含むステータス)に基づいて旧データが記憶されていた物理ブロックが不良ブロックか否かを判断する(ステップS303)。
旧データが記憶されていた物理ブロックが不良ブロックでないと判断した場合は(ステップS303;No)、この物理ブロックに対応する空きブロック検索テーブル200上のビットを“1”に書き換える(ステップS304)。
旧データが記憶されていた物理ブロックが不良ブロックであると判断した場合は(ステップS303;Yes)、空きブロック検索テーブル200の更新は行わず処理を終了する。尚、旧データが記憶されていた物理ブロックの冗長領域26には、不良ブロックであることを示すブロックステータスを書き込む。
以上説明したように、本発明に係るコントローラ3は、前回の検索で検出された空きブロックに関する情報が保持されていない場合に、空きブロックに書き込む新データと対応関係にある旧データ(新データで書き換えられるデータ)が記憶されている物理ブロックの次の物理ブロックから空きブロックの検索を開始する。従って、前回の検索で検出された空きブロックに関する情報が保持されていない場合に、空きブロック検索を開始する物理ブロックが特定の物理ブロックに偏ることを回避することができる。
尚、上記の実施の形態では、前回の検索で検出された空きブロックに関する情報が保持されていない場合にだけ、つまり、起動した後の最初の空きブロック検索の場合だけ、空きブロックに書き込む新データと対応関係にある旧データ(新データで書き換えられるデータ)が記憶されている物理ブロックの次の物理ブロックから空きブロックの検索を開始するようにしたが、毎回、旧データが記憶されている物理ブロックの次の物理ブロックから空きブロックの検索を開始するようにしてもよい。
この発明は、上述の実施形態に限定されず、種々の変形及び応用が可能である。
各物理ゾーンの物理ブロック数は1024個に限られず、自由に設定できる。同様に各論理ゾーンの論理ブロック数は1000個に限られず、自由に設定できる。
本実施形態では、空きブロック検索テーブル200の各ビット列は8ビットであったが、8ビットに限られず、自由に設定してもよい。尚、シフトレジスタのビット長は、ビット列のビット数に合わせて適宜設定しなければならない。
空きブロック検索テーブル200を作成せずに、冗長領域26に記憶されている論理アドレス情報とブロックステータスを直接参照して空きブロック検索を行ってもよい。
フラッシュメモリシステムの一例を示すブロック図である。 フラッシュメモリのアドレス空間の構造の一例を示す図である。 アドレス変換テーブルの構造を示す図である。 空きブロック検索テーブルの構造を示す図である。 空きブロック検索テーブルを作成する処理のフローチャートである。 空きブロックを検索する処理のフローチャートである。 空きブロックを検索する処理のフローチャートである。 空きブロックを検索する処理のフローチャートである。 フラッシュメモリにデータを書き込む処理のフローチャートである。 フラッシュメモリからデータを消去する処理のフローチャートである。 従来のフラッシュメモリのアドレス空間の構造を概略的に示す図である。
符号の説明
1 フラッシュメモリシステム
2 フラッシュメモリ
3 コントローラ
4 ホストシステム
6 マイクロプロセッサ
7 ホストインターフェースブロック
8 ワークエリア
9 バッファ
10 フラッシュメモリインターフェースブロック
11 ECCブロック
12 ROM
25 ユーザ領域
26 冗長領域

Claims (4)

  1. ホストシステムからの命令に応答してフラッシュメモリへのアクセスを制御するメモリコントローラであって、
    前記フラッシュメモリにおける消去単位である物理ブロックを複数個集めた物理ゾーンと前記ホストシステムにおけるアクセス単位であるセクタを複数集めた論理ゾーンとの対応関係を管理するゾーン管理手段と、
    対応関係にある前記論理ゾーンと前記物理ゾーンとの間で、該論理ゾーン内の論理アドレスと該物理ゾーン内の物理アドレスとの対応関係を管理するアドレス管理手段と、
    前記物理ゾーン内の物理ブロックの使用状況を順次走査していくことにより空きブロックを検出する空きブロック検索手段と、
    を備え、
    前記空きブロック検索手段は、前回の走査で検出された空きブロックに関する情報が保持されている場合は、前回の走査で検出された空きブロックの次の物理ブロックから使用状況の走査を開始し、前回の走査で検出された空きブロックに関する情報が保持されていない場合は、検出した空きブロックに書き込む新データと対応関係にある旧データが記憶されている物理ブロックの次の物理ブロックから使用状況の走査を開始するように構成されている、
    ことを特徴とするメモリコントローラ。
  2. ホストシステムからの命令に応答してフラッシュメモリへのアクセスを制御するメモリコントローラであって、
    前記フラッシュメモリにおける消去単位である物理ブロックを複数個集めた物理ゾーンと前記ホストシステムにおけるアクセス単位であるセクタを複数集めた論理ゾーンとの対応関係を管理するゾーン管理手段と、
    対応関係にある前記論理ゾーンと前記物理ゾーンとの間で、該論理ゾーン内の論理アドレスと該物理ゾーン内の物理アドレスとの対応関係を管理するアドレス管理手段と、
    前記物理ゾーン内の物理ブロックの使用状況を順次走査していくことにより空きブロックを検出する空きブロック検索手段と、
    を備え、
    前記空きブロック検索手段は、検出した空きブロックに書き込む新データと対応関係にある旧データが記憶されている物理ブロックの次の物理ブロックから使用状況の走査を開始するように構成されている、
    ことを特徴とするメモリコントローラ。
  3. 前記空きブロック検索手段は、起動後に各ビットの論理値が対応関係にある前記物理ブロックの使用状況を示している複数ビットの記憶領域で構成された空きブロック検索テーブルを作成し、該空きブロック検索テーブルを用いて前記物理ブロックの使用状況の走査を行う、
    ことを特徴とする請求項1または2に記載のメモリコントローラ。
  4. 請求項1から3のいずれか1項に記載のメモリコントローラと、
    フラッシュメモリと、
    から構成されることを特徴とするフラッシュメモリシステム。
JP2006022885A 2006-01-31 2006-01-31 メモリコントローラおよびフラッシュメモリシステム Expired - Fee Related JP4213166B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006022885A JP4213166B2 (ja) 2006-01-31 2006-01-31 メモリコントローラおよびフラッシュメモリシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006022885A JP4213166B2 (ja) 2006-01-31 2006-01-31 メモリコントローラおよびフラッシュメモリシステム

Publications (2)

Publication Number Publication Date
JP2007206835A JP2007206835A (ja) 2007-08-16
JP4213166B2 true JP4213166B2 (ja) 2009-01-21

Family

ID=38486280

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006022885A Expired - Fee Related JP4213166B2 (ja) 2006-01-31 2006-01-31 メモリコントローラおよびフラッシュメモリシステム

Country Status (1)

Country Link
JP (1) JP4213166B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016031626A (ja) * 2014-07-29 2016-03-07 ソニー株式会社 メモリコントローラ、記憶装置、情報処理システム、および、それらにおける制御方法。

Also Published As

Publication number Publication date
JP2007206835A (ja) 2007-08-16

Similar Documents

Publication Publication Date Title
JP4171749B2 (ja) メモリコントローラおよびフラッシュメモリシステム
JP4235646B2 (ja) メモリコントローラおよびフラッシュメモリシステム
JP4366420B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4501881B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4488048B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4661497B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4710753B2 (ja) メモリコントローラ及びメモリコントローラを用いたフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4661191B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4636005B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4434171B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4153535B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4241741B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4213166B2 (ja) メモリコントローラおよびフラッシュメモリシステム
JP4254933B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4661748B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP3934659B1 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4513782B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2008097339A (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP2005316793A (ja) フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4227989B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4569554B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4273109B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4497124B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2006048746A (ja) メモリカード
JP4245594B2 (ja) メモリコントローラ及びフラッシュメモリシステム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081017

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

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

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

Free format text: PAYMENT UNTIL: 20111107

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

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees