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

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

Info

Publication number
JP4254933B2
JP4254933B2 JP2005347359A JP2005347359A JP4254933B2 JP 4254933 B2 JP4254933 B2 JP 4254933B2 JP 2005347359 A JP2005347359 A JP 2005347359A JP 2005347359 A JP2005347359 A JP 2005347359A JP 4254933 B2 JP4254933 B2 JP 4254933B2
Authority
JP
Japan
Prior art keywords
logical
zone
block
physical
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
JP2005347359A
Other languages
English (en)
Other versions
JP2007156583A (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 JP2005347359A priority Critical patent/JP4254933B2/ja
Publication of JP2007156583A publication Critical patent/JP2007156583A/ja
Application granted granted Critical
Publication of JP4254933B2 publication Critical patent/JP4254933B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (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)ずつ割り当てている。ここで、論理ブロックに含まれるセクタ数については、論理ブロックと物理ブロックの容量が一致するよう適宜設定される。尚、複数の物理ブロックを仮想的に結合した仮想ブロックを構成する場合は、論理ブロックと仮想ブロックの容量が一致するよう設定される。又、物理ブロックの各ページにはLBAの順番でデータが格納されるので、各論理ゾーンに含まれる論理ブロックと、その論理ゾーンに対応する物理ゾーンに含まれる物理ブロックとの対応関係に基づいて、フラッシュメモリ内のアクセス先を特定することができる。
特開2005−18490号公報
しかしながら、各論理ゾーンにLBAが連続するセクタを割り当てた場合、LBAが特定の範囲にあるセクタ(例えば、ファイルアロケーションテーブルが格納されるセクタ等)にデータの書き込みや書き換えが集中すると、そのLBAが割り当てられた論理ゾーンに対応する物理ゾーンに含まれる物理ブロックに書き込みが集中して、その物理ゾーンに含まれる物理ブロックの劣化(不良ブロック化)だけが極端に早まる、という問題が生じる。
本発明は上記の実情に鑑みてなされたもので、データの書き込みがフラッシュメモリの特定の領域に集中することを回避できるメモリコントローラ、及び当該メモリコントローラを備えるフラッシュメモリシステムを提供することを目的とする。
上記目的を達成するため、本発明のメモリコントローラは、
ホストシステムからの命令に応答してフラッシュメモリへのアクセスを制御するメモリコントローラであって、
前記フラッシュメモリにおける消去単位である物理ブロックを複数個集めた物理ゾーンと前記ホストシステムにおけるアクセス単位であるセクタを複数集めた論理ゾーンとの対応関係を管理するゾーン管理手段と、
対応関係にある前記論理ゾーンと前記物理ゾーンとの間で、該論理ゾーン内の論理アドレスと該物理ゾーン内の物理アドレスとの対応関係を管理するアドレス管理手段と、
複数個の前記論理ゾーンに対して前記セクタを論理アドレスが連続する所定のセクタ数単位で順次割り振る論理アドレス分配手段と、
を備え
前記所定のセクタ数は1つの前記論理ゾーンに含まれるセクタ数より少ないものである、
ことを特徴とする。
前記所定のセクタ数と、該所定のセクタ数単位で割り振られるセクタの割り振り先となる前記論理ゾーンのゾーン数とがいずれも2のべき乗で与えられる数値であることが望ましい。
例えば、整数mは整数nより大きく、整数nは0以上であり、前記所定のセクタ数が2のn乗で、前記ゾーン数が2の(m−n)乗のとき、
前記ホストシステムから与えられるアドレスの下位側から数えてn+1ビット目からmビット目までの値に基づいて割り振り先の前記論理ゾーンを判別する。
また、本発明のフラッシュメモリシステムは、上記のメモリコントローラと、フラッシュメモリと、から構成される。
本発明によれば、LBAが特定の範囲にあるセクタに書き込みや書き換えが集中した場合であってもデータの書き込みがフラッシュメモリの特定の領域に集中することを回避できるメモリコントローラ、及び当該メモリコントローラを備えるフラッシュメモリシステムが実現される。つまり、フラッシュメモリ内の物理ブロックを複数個まとめた物理ゾーンを構成して、各物理ゾーン単位でアクセスを管理する場合に、特定の物理ゾーンに含まれる物理ブロックに書き込みが集中することを回避することができる。
以下、図面に基づき、本発明の実施の形態について詳細に説明する。
図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は、エラーコレクションコード、論理アドレス情報、ブロックステータス(フラグ)等の付加データを記録するための領域である。
エラーコレクションコードは、ユーザ領域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に処理を実行させる。
ホストインターフェースブロック7は、図3に示すようにコマンドレジスタR1、セクタ数レジスタR2及びLBAレジスタR3を備えており、ホストシステム4との間の、データ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。ホストシステム4よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口としてフラッシュメモリシステム1の内部(例えば、バッファ9)に取り込まれる。また、フラッシュメモリシステム1からホストシステム4に供給されるデータ等は、ホストインターフェースブロック7を出口としてホストシステム4に供給される。
図1に示すワークエリア8は、フラッシュメモリ2の制御に必要なデータが一時的に格納される作業領域であり、複数のSRAM(Static Random Access Memory)セルによって構成される。ワークエリア8には、例えば、論理アドレスと物理アドレスを変換するためのアドレス変換テーブル、空きブロックを検索する空きブロック検索テーブルなどが記憶される。
バッファ9は、フラッシュメモリ2から読み出されたデータ及びフラッシュメモリ2に書き込むべきデータを一時的に蓄積する。すなわち、フラッシュメモリ2から読み出されたデータは、ホストシステム4が受け取り可能な状態となるまでバッファ9に保持され、フラッシュメモリ2に書き込むべきデータは、フラッシュメモリ2が書き込み可能な状態となるまでバッファ9に保持される。
フラッシュメモリインターフェースブロック10は、内部バス14を介して、フラッシュメモリ2とデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。より詳細には、フラッシュメモリインターフェースブロック10は、アドレス処理部、コマンドレジスタ、命令処理ブロック等から構成される。図3に示すように、アドレス処理部は、物理ブロックアドレスレジスタR11,ページ番号レジスタR12、カウンタR13,コマンドレジスタR21を備える。
物理ブロックアドレスレジスタR11は、フラッシュメモリ2のアクセス対象の物理ブロックの物理ブロックアドレスPBAを格納する。物理ブロックアドレスレジスタR11に設定される物理ブロックアドレスPBAは、ワークエリア8に作成されるアドレス変換テーブルに基づいて決定される。このアドレス変換テーブルは、対応する論理ゾーンと物理ゾーンの組毎に形成され、該論理ゾーン内論理ブロック番号LZIBNと物理ゾーン内物理ブロック番号PZIBNとの対応関係を記憶する。
ページ番号レジスタR12は、アクセス対象のページのページ番号PNを格納する。カウンタR13は、各物理ブロック内のアクセス対象ページの残り量をカウントする。
コマンドレジスタR21は、フラッシュメモリインタフェースブロック10が実行すべき処理を指示するシーケンスコマンドがセットされる。
命令処理ブロックは、コマンドレジスタR21に格納されているシーケンスコマンドに従って、フラッシュメモリ2を制御するための内部コマンド、物理アドレス等を出力する。
フラッシュメモリインターフェースブロック10は、命令処理ブロックによって出力される内部コマンド、アドレス情報等をフラッシュメモリ2に供給することにより、フラッシュメモリ2に読み出し、書き込み等の処理を実行させる。
ECCブロック11は、フラッシュメモリ2に書き込むデータに付加されるエラーコレクションコードを生成するとともに、読み出しデータに付加されたエラーコレクションコードに基づいて、読み出したデータに含まれる誤りを検出・訂正する。
ROM12は、マイクロプロセッサ6による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。具体的には、ROM12は、例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムを格納する。
次に、上記構成のフラッシュメモリシステム1により実現される論理アドレスと物理アドレスとの変換処理について説明する。
本実施の形態においては、コントローラ3は、LBAが指定する連続する4セクタを単位として、第0〜第3論理ゾーンに順次割り振ることにより、LBAの特定の範囲に集中した場合に生ずる特定の論理ゾーンへのアクセスの集中を防止する。
具体的に説明すると、まず、図4(a)に示すように、コンピュータシステムが提供するLBAを16ビットとし、全体で、64000セクタ(本実施の形態では1ページ=1セクタであるので、64000ページ)の論理空間を指定可能であるとする。
従来であれば、上位11ビットが、論理ブロックに付けられた通番である論理ブロック番号LBNを示し、下位5ビットが、論理ブロック内のセクタに付けられた通番であるセクタ番号SNを示している。さらに、論理ブロック番号LBNを、論理ゾーンに含まれる論理ブロックの数で割った商が論理ゾーン番号(LZN:0〜3)を示し、余りが論理ゾーン内の論理ブロックに付けられた通番である論理ゾーン内ブロック番号LZIBN(0〜499)であると判別して、フラッシュメモリ2へのアクセス処理を行う。尚、物理ブロックの各ページには、セクタ番号の順番でデータが格納されるので、1ページが1セクタのフラッシュメモリの場合、セクタ番号SNとページ番号PNとは一致する。
これに対して、本実施の形態では、図4(a)に示すように、16ビットのLBAの下位から4ビット目と3ビット目の2ビットが論理ゾーン番号(LZN:0〜3を示し)を示し、この2ビットを除いた14ビットのLBA’の上位9ビットが論理ゾーン内ブロック番号LZIBN(0〜499)を示し、下位5ビットがセクタ番号SN(0〜31)を示すと判別してフラッシュメモリ2へのアクセス処理を行う。
このような判別を行った場合、図4(b)に示すように、各LBAが連続する4セクタを1単位として、順次、第0〜第3の論理ゾーンに割り当てられる。
例えば、LBAが、1110001100110011 であれば、従来は、「11100011001」;「10011」と区切って、LBN#1817の論理ブロックの、SNが#19のセクタを示していると判別する。更に、LBN#1817を500(論理ゾーンに含まれる論理ブロックの数)で割ったときの商である3がLZNであると判別し、余りである317がLZIBNであると判別してフラッシュメモリ2にアクセスする。
これに対し、本実施形態では、LBAの下位から4ビット目と3ビット目の「00」がLZN#0の論理ゾーンを示し、この2ビットを除いたLBA’=「11100011001111」の、上位9ビット「111000110」がLZIBN#454を示し、下位5ビット「01111」がSN#15を示していると判別してフラッシュメモリ2にアクセスする
この場合、各論理ブロックは、4つずつ連続する32個のセクタから構成される。例えば、LZN#0の論理ゾーンのLZIBN#0の論理ブロックは、図5に示すように、LBA=#0〜#3,#16〜#19,#32〜#35,#48〜#51,#64〜#67,#80〜#83,#96〜#99、#112〜#115の32セクタから構成される。この論理ブロックは、フラッシュメモリ2のPZN#0の物理ゾーンのいずれかの物理ブロックに対応付けられる。
同様に、LZN#1の論理ゾーンのLZIBN0の論理ブロックは、LBA=#4〜#7,#20〜#23,#36〜#39,#52〜#55,#68〜#71,#84〜#87,#100〜#103、#116〜#119の32セクタから構成される。この論理ブロックは、フラッシュメモリ2のPZN#1の物理ゾーンのいずれかの物理ブロックに対応付けられる。
このような構成とすることにより、各セクタをLBAが連続する4セクタ単位で、LZN#0〜3の4つの論理ゾーンに順次振り分けている。このように振り分けることにより、LBAの特定の領域(例えば、FAT(ファイルアロケーションテーブル)が書き込まれる領域)にアクセスが集中した場合であっても、特定の論理ゾーン、つまり物理ゾーンにアクセスが集中することがない。つまり、アクセスの集中するLBAの範囲が、各論理ゾーンに分割されるような単位で、各セクタを各理論ゾーンに振り分けるようにすれば、各物理ゾーンにアクセスが分散される。
次に、フラッシュメモリシステム1の動作を説明する。まず、読み出し処理について図6〜図8を参照して説明する。
この読み出し処理では、ホストインターフェースブロック7のセクタ数レジスタR2に設定されたセクタ数、LBAレジスタR3に設定されたLBAの先頭値、コマンドレジスタR1に設定された外部コマンドに基づいて処理が実行される。
尚、この読み出し処理は、読み出し処理を指示する外部コマンドが、コマンドレジスタR1に設定されると開始される。
まず、マイクロプロセッサ6は、LBAレジスタR3に格納された先頭LBAとセクタ数レジスタR2にセットされたアクセス対象のセクタ数に基づいて、アクセス対象領域の論理ゾーン番号LZN(図4(a)に示すように、LBAの下位側から3ビット目と4ビット目の2ビットから求められる)と論理ゾーン内ブロック番号LZIBN(図4(a)に示すように、LBA’の上位9ビットから求められる)を、論理ブロック単位で求める(ステップS1)。つまり、アクセス対象領域が複数の論理ブロックにまたがっている場合は、複数組のLZNとLZIBNを求める。
次に、このようにして求めた論理ゾーン番号LZNと論理ゾーン内ブロック番号LZIBNとに基づいて、その論理ブロックに対する物理ブロックの物理ブロックアドレスPBAを求める(ステップS2)。
ステップS2の処理を具体的に説明すると、図7のフローチャートに示すように、まず、アクセス対象の各論理ブロックについて、その論理ブロックに対応する物理ブロックの物理ゾーン内ブロック番号PZIBNを、その論理ブロックが属す論理ゾーン用のアドレス変換テーブルを参照して求める(ステップS21)。
続いて、求めた物理ゾーン内ブロック番号PZIBNに、その物理ゾーンPZNの前に存在する物理ゾーン分のブロック数(以下、このブロック数をオフセットと言う)を加算して、物理ブロックアドレスPBAを求める(ステップS22)。例えば、アクセス対象の物理ブロックの物理ゾーン内ブロック番号PZIBNを#p、アクセス対象の物理ブロックが属する物理ゾーンの前に存在する物理ゾーンの数をm、物理ゾーンに含まれる物理ブロック数をbとした場合、物理ブロックアドレスPBAは、PZIBN#pにオフセット(m×b)を加算することによって求められる。
次に、マイクロプロセッサ6は、フラッシュメモリインタフェースブロック10の物理ブロックアドレスレジスタR11に読み出し対象の物理ブロックの物理ブロックアドレスPBAを設定し、ページ番号レジスタR12にその物理ブロック内の読み出しを開始するページのページ番号を設定し、さらに、カウンタR13に読み出し対象のページ数を設定し、さらに、コマンドレジスタR21に、データの読み出し処理を指示するシーケンスコマンドを設定する。この際、アクセス対象領域が複数の論理ブロックにまたがっている場合は、LBAの若い方から順番に上記の設定を行う。
続いて、フラッシュメモリインタフェースブロック10の命令処理ブロックが、コマンドレジスタR21に格納されているシーケンスコマンドに従って、フラッシュメモリ2を制御するための内部コマンド、アドレス情報等を出力し、フラッシュメモリ2からデータを読み出し、読み出したデータをバッファ9に格納する(図6;ステップS3)。マイクロプロセッサ6は、バッファ9に格納されたデータをホストインタフェースブロック7と外部バス13を介してホストシステム4に提供する。
ステップS3の処理を具体的に説明すると、図8に示すように、マイクロプロセッサ6は、物理ブロックアドレスレジスタR11に、ステップS2で求めた物理ブロックアドレスPBAをセットする(ステップS31)。
続いて、マイクロプロセッサ6は、LBA’(LBAから論理ゾーン番号LZNを示す2ビットを除いた14ビット)の下位5ビットに対応するセクタ番号SNをページ番号PNとしてページ番号レジスタR12に設定する(ステップS32)。
次に、カウンタR13に読み出すページ数(セクタ数)を設定する(ステップS33)。
続いて、読み出しを指示するシーケンスコマンドをコマンドレジスタR14にセットする(ステップS34)。
このシーケンスコマンドに応答して、フラッシュメモリインタフェースブロック10は、物理ブロックアドレスレジスタR11に設定されているPBAにページ番号レジスタR12に設定されているページ番号PNを付加(連結)した物理ページアドレスを生成し(ステップS35)、このページからデータを読み出し、バッファ9に格納する(ステップS36)。
続いて、カウンタR13をデクリメントし(ステップS37)、カウンタR13のカウント値が0になったか否かを判別する(ステップS38)。
ステップS38で、カウント値が0ではない、即ち、データの読み出しが完了していないと判別されたときには、ページ番号レジスタR12に格納されているページ番号PNを+1して(ステップS39)、ステップS36に戻る。カウント値が0のときは、ステップS3の処理を終了する。
以上の読み出し処理を具体例に基づいて説明する。例えば、LBA#iからkセクタのデータを読み出す読み出し処理が指示されたとする。
まず、LBAに基づいて、論理ゾーン番号LZN、論理ゾーン内ブロック番号LZIBNを求める(ステップS1)。アクセス対象領域LBA#i〜#(i+k−1)が、LBA#i〜#j−1が属する論理ブロックとLBA#j〜#(i+k−1)が属する論理ブロックの2個の論理ブロックにまたがっている場合、LBA#i〜#j−1のj−iセクタの領域について、これらのセクタが属す論理ブロックのLZNとLZIBNを求める。次に、LBA#j〜#(i+k−1)の(i−j+k)セクタ分の領域について、これらのセクタが属す論理ブロックの論理ゾーン番号LZNと論理ゾーン内論理ブロック番号LZIBNを求める。
次に、このようにして求めた論理ゾーン番号LZNと論理ゾーン内ブロック番号LZIBNに基づいて、その論理ブロックに対応する物理ブロックの物理ブロックアドレスPBAを求める(ステップS2)。
例えば、LBA#i〜#j−1がLZN#mのLZIBN#nの論理ブロックに含まれ、LZN#mの論理ゾーンにPZN#mの物理ゾーンが対応している場合、LZN#mのLZIBN#nの論理ブロックに対応する物理ブロックのPZIBNを、LZN#mの論理ゾーンに属す論理ブロックとPZN#mの物理ゾーンに属す物理ブロックの対応関係を示したアドレス変換テーブルを参照して求める(ステップS21)。
求めた物理ブロックのPZIBN#pにPZN#mに対応するオフセット(m・b)を付加して、物理ブロックアドレスPBA(=m・b+p)を求める(ステップS22)。なお、bは、物理ゾーンに含まれる物理ブロック数である。
又、LBA#j〜#(i+k−1)のi−j+kセクタ分の領域についても、上述と同様の手順でLBA#j〜#(i+k−1)が属する論理ブロックに対応する物理ブロックの物理ブロックアドレスPBAを求める。なお、LBA#j〜#(i+k−1)の領域については、LBA#j〜#(i+k−j)が含まれる論理ブロックが属す論理ゾーンのアドレス変換テーブルを参照してPZIBNが求められる。
次に、マイクロプロセッサ6は、フラッシュメモリインタフェースブロック10の物理ブロックアドレスレジスタR11に上記手順で求めた物理ブロックアドレスPBA(=m・b+p)を設定し、ページ番号レジスタR12にアクセス対象領域の先頭LBA’(LBA#i〜#(j−1)の場合は、LBA#iのLBA’)の下位5ビットに相当するセクタ番号SN#qを設定し、カウンタR13にj−iを設定する。さらに、データ読み出しを指示するシーケンスコマンドをコマンドレジスタR21にセットする。これに応答して、フラッシュメモリインタフェースブロック10は、m・b+p物理ブロックの#qページからデータを読み出し、以後、#qを更新(インクリメント)してデータを読み出す。そして、j−iページのデータの読み出しが終了すると、m・b+pブロックからの読み出しを終了し、マイクロプロセッサ6に処理が終了したことを通知する。又、LBA#j〜#(i+k−1)の(i−j+k)セクタ分の領域についても上記と同様の手順で読み出しを実行する。
尚、LBA#j〜#(i+k−1)の領域については、LBA#j〜#(i+k−1)が含まれる論理ブロックと対応する物理ブロックの物理ブロックアドレスPBAが物理ブロックアドレスレジスタに設定され、LBA#jのLBA’の下位5ビットの値がページ番号レジスタR12に設定され、(i−j+k)がカウンタR13に設定される。
次に、フラッシュメモリ2への書き込み処理について説明する。書き込み処理の場合も、書き込み処理を指示する外部コマンドが、コマンドレジスタR1に設定されると、書き込み処理が開始され、ホストインターフェースブロック7のセクタ数レジスタR2に設定されたセクタ数、LBAレジスタR3に設定されたLBAの先頭値に基づいて処理が実行される。
又、アクセス対象の論理ゾーン番号LZNと論理ゾーン内ブロック番号LZIBNについても上述の読み出し処理の場合と同様な手順で求められ、論理アドレスから物理アドレスへのアドレス変換も、上述の読み出し動作と基本的に同一である。ただし、フラッシュメモリの特性上、データの重ね書きができないため、書き込み時に、空きブロックを検出し(又は、物理ブロックを適宜消去して空きブロックを生成し)、その空きブロックのユーザ領域25に、ホストシステム4から順次供給されるデータを書き込み、冗長領域26にそのデータに対応する論理ブロックのLZIBNを書き込む。又、LZIBNとPZIBNとの対応関係を示すアドレス変換テーブルで、対応関係が変化した部分を更新する。
以上で説明したように、本実施の形態のフラッシュメモリシステム1では、LBAを2進数表現したときの一部の桁がLZNを示し、この桁を取り除いた上位の所定桁がLZIBNを示し、残る下位の所定桁がSNを示す、という構造を有している。このため、LBAのLZNを示す桁の値が変化すると、そのLBAが属する論理ゾーンが変わり、この結果、データの書き込みが特定の論理ゾーンに集中することが避けられ、フラッシュメモリ2の寿命が長くなる。
なお、図4の例では、各セクタを、4セクタを1単位として複数の論理ゾーンに振り分けたが、論理ゾーンに振り分ける1単位は論理ゾーンに含まれる全セクタ数より少ないセクタ数であれば任意で設定できる。なお、論理ゾーンに振り分ける1単位はLBAのLZNを示すビットよりも下位のビットのビット数によって決まる。
例えば図9(a)に示すように、LBAの下位から5ビット目と4ビット目の2ビットをLZNを示すビットとした場合、LZNを示すビットより下位のビット数が3ビット(下位から第1ビット〜第3ビット)なので、8セクタを1単位として、各セクタが4個の論理ゾーンに振り分けられる。従って、図9(b)に示すように振り分け先の論理ゾーンが8セクタ毎に変わり、LBA#0〜#7の連続する8セクタがLZN#0の論理ゾーンへ、LBA#8〜#15の連続する8セクタがLZN#1の論理ゾーンへ、という順に、8セクタずつ同一の論理ゾーンへと振り分けられる。
また、図10(a)に示すように、LBAの下位から9〜13ビット目の5ビットをLZNを示すビットとした場合、振り分け先の論理ゾーンは32(2)個となる。LZNを示すビットより下位のビット数は8ビットなので、図10(b)に示すように、256セクタ(8個の論理ブロック)を1単位として、各セクタが、32個の論理ゾーンへと振り分けられる。
このように、論理ゾーンに振り分ける1単位を示すビット数が論理ブロック内のセクタ数に対応するビット数(32セクタの場合は5ビット)より多い場合には、複数個の論理ブロックを1単位として各論理ブロックが複数個の論理ゾーンに振り分けられる。
なお、連続して同一の論理ゾーンに振り分けられるセクタの数が論理ブロック1個当たりのセクタの数より小さい場合は、1個の論理ブロック内のセクタのLBAが不連続な値をとることになる。例えば図9の場合でいえば、LZN#0,LBN#0の論理ブロック内の32個のセクタのLBAは、#0〜#7,#32〜#39,#64〜#71,#96〜#103、という一部不連続な値をとることになる。
以上の説明では、論理ゾーンの数と論理ゾーンに振り分ける1単位のセクタ数をいずれも2のべき乗個としたが、2のべき乗個でなくても、フラッシュメモリの特定の領域に書き込みが集中することを回避できる。ただし、論理ゾーンの数と論理ゾーンに振り分ける単位が2のべき乗個でない場合には、LBAの特定のビットでLZN、LZIBNを判別することができなくなる。
本発明の実施の形態に係るフラッシュメモリシステムを概略的に示すブロック図である。 この発明の実施の形態のフラッシュメモリのアドレス空間の構造を概略的に示す図である。 ホストインターフェースブロック及びフラッシュメモリインタフェースブロックの構成を示すブロック図である。 (a)は、LBAのデータ構造の一例を示す図であり、(b)は、(a)に示すLBAの順にデータを書き込んだ場合における、書き込み先のページが属するゾーンの変遷を示す図である。 論理ブロックの構成例及び対応する物理ブロックを示す図である。 読み出し処理を説明するためのフローチャートである。 図6に示すステップS2の物理ブロックアドレス生成処理の詳細を示すフローチャートである。 図6に示すステップS3の読み出し処理の詳細を示すフローチャートである。 (a)は、LBAのデータ構造の他の一例を示す図であり、(b)は、(a)に示すLBAの順にデータを書き込んだ場合における、書き込み先のページが属するゾーンの変遷を示す図である。 (a)は、LBAのデータ構造の他の一例を示す図であり、(b)は、(a)に示すLBAの順にデータを書き込んだ場合における、書き込み先のページが属するゾーンの変遷を示す図である。 従来のフラッシュメモリのアドレス空間の構造を概略的に示す図である。
符号の説明
1 フラッシュメモリシステム
2 フラッシュメモリ
3 コントローラ
4 ホストシステム
6 マイクロプロセッサ
7 ホストインターフェースブロック
8 ワークエリア
9 バッファ
10 フラッシュメモリインターフェースブロック
11 ECCブロック
12 ROM
13 外部バス
14 内部バス
15 内部クロック源
25 ユーザ領域
26 冗長領域

Claims (4)

  1. ホストシステムからの命令に応答してフラッシュメモリへのアクセスを制御するメモリコントローラであって、
    前記フラッシュメモリにおける消去単位である物理ブロックを複数個集めた物理ゾーンと前記ホストシステムにおけるアクセス単位であるセクタを複数集めた論理ゾーンとの対応関係を管理するゾーン管理手段と、
    対応関係にある前記論理ゾーンと前記物理ゾーンとの間で、該論理ゾーン内の論理アドレスと該物理ゾーン内の物理アドレスとの対応関係を管理するアドレス管理手段と、
    複数個の前記論理ゾーンに対して前記セクタを論理アドレスが連続する所定のセクタ数単位で順次割り振る論理アドレス分配手段と、
    を備え
    前記所定のセクタ数は1つの前記論理ゾーンに含まれるセクタ数より少ないものである、
    ことを特徴とするメモリコントローラ。
  2. 前記所定のセクタ数と、該所定のセクタ数単位で割り振られるセクタの割り振り先となる前記論理ゾーンのゾーン数とがいずれも2のべき乗で与えられる数値であることを特徴とする請求項1に記載のメモリコントローラ。
  3. 整数mは整数nより大きく、整数nは0以上であり、前記所定のセクタ数が2のn乗で、前記ゾーン数が2の(m−n)乗のとき、
    前記ホストシステムから与えられるアドレスの下位側から数えてn+1ビット目からmビット目までの値に基づいて割り振り先の前記論理ゾーンを判別する、ことを特徴とする請求項2に記載のメモリコントローラ。
  4. 請求項1乃至3の何れか1項に記載のメモリコントローラと、フラッシュメモリと、から構成される、
    ことを特徴とするフラッシュメモリシステム。
JP2005347359A 2005-11-30 2005-11-30 メモリコントローラ及びフラッシュメモリシステム Expired - Fee Related JP4254933B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005347359A JP4254933B2 (ja) 2005-11-30 2005-11-30 メモリコントローラ及びフラッシュメモリシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005347359A JP4254933B2 (ja) 2005-11-30 2005-11-30 メモリコントローラ及びフラッシュメモリシステム

Publications (2)

Publication Number Publication Date
JP2007156583A JP2007156583A (ja) 2007-06-21
JP4254933B2 true JP4254933B2 (ja) 2009-04-15

Family

ID=38240902

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005347359A Expired - Fee Related JP4254933B2 (ja) 2005-11-30 2005-11-30 メモリコントローラ及びフラッシュメモリシステム

Country Status (1)

Country Link
JP (1) JP4254933B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008123241A (ja) * 2006-11-13 2008-05-29 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6005533B2 (ja) * 2013-01-17 2016-10-12 株式会社東芝 記憶装置および記憶方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008123241A (ja) * 2006-11-13 2008-05-29 Tdk Corp メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4636005B2 (ja) * 2006-11-13 2011-02-23 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Also Published As

Publication number Publication date
JP2007156583A (ja) 2007-06-21

Similar Documents

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

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081118

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081208

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

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

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

Free format text: PAYMENT UNTIL: 20120206

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130206

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees