説明

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

【課題】ブロック間転送の頻度を低減し、ブロック間転送に基づくアクセス処理の効率低下を抑制する。
【解決手段】書き込み先ブロックとして管理されている物理ブロック内の物理ページに、ホストシステムから与えられるデータが書き込まれる。物理ブロック内の無効データが格納されている物理ページのページ数がカウントされ、当該ページ数が一番大きい物理ブロックが特定される。当該物理ブロックに格納されている有効データが、転送先ブロックとして管理されている物理ブロック内の物理ページに転送される。書き込み先ブロックとして管理されている物理ブロックと転送先ブロックとして管理されている物理ブロックは異なる物理ブロックが選択される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に係り、特に、ホストシステムから与えられる論理アドレスをフラッシュメモリ内の物理アドレスに変換する際に、ページ単位でアドレス変換を行うことによりフラッシュメモリへのアクセスを制御するメモリコントローラ等に関する。このメモリコントローラ等におけるデータの格納先の管理では、ホストシステムから与えられるデータの格納先と、フラッシュメモリ内で複写(転送)されるデータの格納先を異なる物理ブロックに振り分けることにより、物理ブロックを空きブロック化する際の処理効率を改善している。
【背景技術】
【0002】
近年、小型メモリカードやSSD(Solid State Drive)などの不揮発性半導体メモリを使用した記憶装置の市場が拡大している。これらの製品には、不揮発性メモリと、それを制御するためのメモリコントローラが搭載されている。このメモリコントローラによる制御により、従来HDDが使用されていたシステムにおいて、特段のソフトウェアやハードウェア回路を必要とせず、これらの記憶装置を使用することができる。例えば、ホストシステムからHDDへのアクセスでは、セクタ単位(512バイト単位)で書き込み先のアドレスが指定され、それぞれのアドレスに対応するデータは、それぞれのアドレスに対応するセクタに書き込まれる。従って、不揮発性半導体メモリを使用した記憶装置もこのようなセクタ単位でのデータ書き込みに対応する必要がある。
【0003】
このような記憶装置では、不揮発性メモリとして、通常、NAND型フラッシュメモリ(以下、フラッシュメモリ)が使用されている。ところが、このフラッシュメモリには、消去処理及び書き込み処理における制限や書き換え回数の制限等の種々の制限が存在する。
【0004】
例えば、フラッシュメモリでは、上書きによる書き換えができないため、データの書き込み先は消去状態の領域でなければならない。つまり、データの書き込み先の領域が消去状態でない場合、データの書き込みを行う前に、その書き込み先の領域を消去状態にしなければならない。このデータ消去の処理単位が、物理ブロックであり、この物理ブロックは複数個の物理ページで構成されている。そして、この物理ページが、データ書き込みの処理単位になっている。例えば、それぞれの物理ブロックは、64個、128個又は256個の物理ページで構成されている。また、それぞれの物理ページは、4セクタ(2048バイト)、8セクタ(4096バイト)又は16セクタ(8192バイト)のユーザ領域を含んでいる。
【0005】
このように、フラッシュメモリでは、データの上書きができないため、データの書き替えを行うときには、通常、新データは、旧データとは異なる物理ページに書き込まれる。さらに、その旧データが書き込まれている物理ブロック内に空きページが無いときには、別の物理ブロック内の空きページにその新データが書き込まれる。このようなデータの書き替えが行われると、旧データが消去されるまで、ホストシステムから与えられるアドレスが同じデータが複数存在する。従って、同じアドレスのデータが複数存在する場合、最新のデータだけが有効データとして取り扱われ、その他のデータは無効データとして取り扱われる。
【0006】
この無効データが増加すると、フラッシュメモリの空き容量が低下する。しかし、有効データが格納されている物理ページが残っている場合、その物理ページが属している物理ブロックに対する消去処理を行うことができないため、その物理ブロック内の有効データを他の物理ブロックに転送し、このデータ転送によりその物理ブロック内の全てのデータが無効データになった後に、その物理ブロックに対する消去処理が行われる。NAND型フラッシュメモリの大容量化に伴い、このブロック間転送が、記憶装置のパフォーマンスに与える影響が無視できなくなっている。つまり、NAND型フラッシュメモリのブロックサイズが増大し、書き込み時間が長くなったために、このブロック間転送の時間が長くなり、記憶装置のパフォーマンスに与える影響が大きくなっている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開平08―115252号公報
【特許文献2】特開2005−222550号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
ブロック間転送の影響を抑制するために、引例1では、全てのデータに読み書き頻度情報を持たせて、更に、メモリ使用情報、メモリ固有情報などを持たせて、これらの情報に基づいて、ホストシステムから与えられるデータの書き込み先物理アドレスを指定している。このようにした場合、管理すべき情報が増加し、その管理が煩雑になる。
【0009】
引例2では、ブロック間転送をする際に、それぞれの物理ブロックにおいてブロック間転送を実行する場合の時間的な影響等を算出し、その影響の少ない物理ブロックを選択してブロック間転送を実行している。このようにすれば、ブロック間転送にかかる時間を短縮されるが、時間的な影響等を算出するための負担が増加する。
【0010】
そこで、本発明は、ブロック間転送の頻度を低減し、ブロック間転送に基づくアクセス処理の効率低下を抑制することができるメモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法を提供することを目的とする。
【課題を解決するための手段】
【0011】
本発明の第1の側面に従うメモリコントローラは、
ホストシステムから与えられる論理アドレスが割り当てられている論理セクタを1個又は複数個含む論理ページを定義して、書き込み処理の処理単位である物理ページを複数個含む物理ブロックが消去処理の処理単位であるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
フラッシュメモリ内の消去状態の物理ブロックを検索する空きブロック検索手段と、
前記空きブロック検索手段により検出された消去状態の物理ブロックを、書き込み先ブロックとして管理する書き込み先管理手段と、
前記書き込み先管理手段より前記書き込み先ブロックとして管理されている物理ブロック内の物理ページに、先頭ページから末尾ページに向かう順番でデータが格納されていくように、当該物理ブロック内の格納先の物理ページを指示する書き込み先指示手段と、
ホストシステムから与えられるデータを、前記書き込み先指示手段により指示されている物理ページに書き込む書き込み手段と、
前記空きブロック検索手段により検出された消去状態の物理ブロックを、転送先ブロックとして管理する転送先管理手段と、
物理ブロック内の無効データが格納されている物理ページのページ数をカウントし、当該ページ数が一番大きい物理ブロックを特定する転送元特定手段と、
前記転送先管理手段より前記転送先ブロックとして管理されている物理ブロック内の物理ページに、先頭ページから末尾ページに向かう順番でデータが格納されていくように、当該物理ブロック内の格納先の物理ページを指示する転送先指示手段と、
前記転送元特定手段により特定された物理ブロックに格納されている有効データを、前記転送先指示手段により指示されている物理ページに転送する転送手段とを備え、
前記書き込み先管理手段は、前記書き込み先ブロックとして管理している物理ブロック内の全ての物理ページにデータが格納されたときに、別の物理ブロックを前記書き込み先ブロックとして新たに管理し、
前記転送先管理手段は、前記転送先ブロックとして管理している物理ブロック内の全ての物理ページにデータが格納されたときに、別の物理ブロックを前記転送先ブロックとして新たに管理し、
前記書き込み先管理手段により前記書き込み先ブロックとして管理されている物理ブロックと前記転送先管理手段により前記転送先ブロックとして管理されている物理ブロックは異なる物理ブロックであることを特徴とする。
【0012】
本発明の第1の側面に従うメモリコントローラは、
フラッシュメモリ内の消去状態の物理ブロックのブロック数を管理する空きブロック管理手段を更に備え、
前記転送手段による有効データの転送は、前記ブロック数が所定値以下になったときに実行されることが好ましい。
【0013】
本発明の第2の側面に従うフラッシュメモリシステムは、
本発明の第1の側面に従うメモリコントローラと、
このメモリコントローラにより制御されるフラッシュメモリを備える。
【0014】
本発明の第3の側面に従うフラッシュメモリの制御方法は、
ホストシステムから与えられる論理アドレスが割り当てられている論理セクタを1個又は複数個含む論理ページを定義して、書き込み処理の処理単位である物理ページを複数個含む物理ブロックが消去処理の処理単位であるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
フラッシュメモリ内の消去状態の物理ブロックを検索する空きブロック検索ステップと、
前記空きブロックステップにより検出された消去状態の物理ブロックを、書き込み先ブロックとして管理する書き込み先管理ステップと、
前記書き込み先管理ステップより前記書き込み先ブロックとして管理されている物理ブロック内の物理ページに、先頭ページから末尾ページに向かう順番で、ホストシステムから与えられるデータを書き込む書き込みステップと、
前記空きブロック検索ステップにより検出された消去状態の物理ブロックを、転送先ブロックとして管理する転送先管理ステップと、
物理ブロック内の無効データが格納されている物理ページのページ数をカウントし、当該ページ数が一番大きい物理ブロックを特定する転送元特定ステップと、
前記転送先管理ステップより前記転送先ブロックとして管理されている物理ブロック内の物理ページに、先頭ページから末尾ページに向かう順番で、前記転送元特定手段により特定された物理ブロックに格納されている有効データを転送する転送ステップとを備え、
前記書き込み先管理ステップでは、前記書き込み先ブロックとして管理している物理ブロック内の全ての物理ページにデータが格納されたときに、別の物理ブロックを前記書き込み先ブロックとして新たに管理し、
前記転送先管理ステップでは、前記転送先ブロックとして管理している物理ブロック内の全ての物理ページにデータが格納されたときに、別の物理ブロックを前記転送先ブロックとして新たに管理し、
前記書き込み先管理ステップにより前記書き込み先ブロックとして管理されている物理ブロックと前記転送先管理ステップにより前記転送先ブロックとして管理されている物理ブロックは異なる物理ブロックであることを特徴とする。
【0015】
本発明の第3の側面に従うフラッシュメモリの制御方法は、
フラッシュメモリ内の消去状態の物理ブロックのブロック数を管理する空きブロック管理ステップを更に備え、
前記転送ステップによる有効データの転送は、前記ブロック数が所定値以下になったときに実行されることが好ましい。
【発明の効果】
【0016】
本発明によれば、フラッシュメモリ内の記憶領域の管理において、ホストシステムから与えられるデータの書き込み先になる物理ページの物理アドレスと、ブロック間転送で転送されるデータの転送先となる物理ページの物理アドレスが別々のポインタを用いて管理される。この記憶領域の管理により、ホストシステムから与えられるデータと、ブロック間転送で転送されるデータが、互いに異なる物理ブロックに格納される。ここで、ブロック間転送で転送されるデータは、書き換え頻度の低いデータである確率が高いため、書き換え頻度の低いデータと高いデータが効率的に分離される。そして、書き換え頻度の低いデータと高いデータが分離されることにより、書き換え頻度の低いデータがブロック間転送の対象になる頻度を低く抑えることができる。
【0017】
また、物理ブロックごとに、無効データを格納した物理ページのページ数が管理され、そのページ数が多い物理ブロックがブロック間転送の転送元として優先的に選択される。このようにブロック間転送の転送元の物理ブロックを選択することにより、転送元の物理ブロックの空きブロック化にかかる処理時間を短縮することができる。
【図面の簡単な説明】
【0018】
【図1】図1は、本実施の形態に係るフラッシュメモリシステム1を概略的に示すブロック図である。
【図2】図2は、ホストシステム側の論理アドレスと、フラッシュメモリ内の物理アドレスとの対応関係を示す図である。
【図3】図3は、アドレス変換テーブルを示す図である。
【図4】図4は、空きブロックテーブルを示す図である。
【図5】図5は、物理ブロックカウンタテーブルを示す図である。
【図6】図6は、無効データページテーブルを示す図である。
【図7】図7は、ホストシステムから与えられるデータをフラッシュメモリに書き込む書き込み処理を説明するためのフローチャートである。
【図8】図8は、物理ブロック間でデータを転送するブロック間転送処理説明するためのフローチャートである。
【発明を実施するための形態】
【0019】
図1に示されているように、フラッシュメモリシステム1は、フラッシュメモリ2と、それを制御するメモリコントローラ3とで構成されている。メモリコントローラ3は、内部バス14を介してフラッシュメモリ2と接続されている。
【0020】
フラッシュメモリシステム1は、外部バス13を介してホストシステム4と接続されている。ホストシステム4は、ホストシステム4の全体の動作を制御するためのCPU(Central Processing Unit)、フラッシュメモリシステム1との情報の授受を担うコンパニオンチップ等から構成されている。ホストシステム4は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【0021】
メモリコントローラ3は、図1に示されているように、マイクロプロセッサ6と、ホストインターフェースブロック7と、SRAM8と、バッファメモリ9と、フラッシュメモリインターフェースブロック10と、誤り訂正ブロック11と、ROM(Read Only Memory)12とから構成される。
以下、各機能ブロックについて説明する。
【0022】
ホストインターフェースブロック7は、ホストシステム4との間で行われるデータ、アドレス情報、ステータス情報、外部コマンド等の送受信を制御する。つまり、フラッシュメモリシステム1は、ホストインターフェースブロック7を介して、ホストシステム4から供給されるデータ等を取り込む。また、フラッシュメモリシステム1は、ホストインターフェースブロック7を介して、データ等をホストシステム4に供給する。外部コマンドとは、ホストシステム4がフラッシュメモリシステム1に対して処理の実行を指示するためのコマンドである。
【0023】
ホストインターフェースブロック7は、コマンドレジスタR1、セクタ数レジスタR2及びLBAレジスタR3を備えている。コマンドレジスタR1、セクタ数レジスタR2及びLBAレジスタR3には、ホストシステム4から与えられる情報が書き込まれる。コマンドレジスタR1には、書き込みコマンド、読み出しコマンド等の外部コマンドが書き込まれる。セクタ数レジスタR2には、書き込むデータ又は読み出すデータのセクタ数が書き込まれる。LBA(Logical Block Address)レジスタR3には、書き込み又は読み出しを開始する論理セクタに対応するLBAが書き込まれる。LBAは、512バイトの容量を持った論理セクタに割り当てられたアドレスである。
【0024】
SRAM(Static Random Access Memory)8は、フラッシュメモリ2の制御に必要な情報を一時的に格納する揮発性メモリである。フラッシュメモリ2にアクセスするために必要な各種のテーブルは、SRAM8に保持され、SRAM8上で更新される。フラッシュメモリ2にアクセスするために必要なテーブルが、SRAM8に保持されていない場合は、そのテーブルはSRAM8上で作成される。但し、そのテーブルが、フラッシュメモリ2に格納されている場合は、格納されているテーブルがフラッシュメモリ2から読み出され、SRAM8に保持される。上記各種テーブルには、アドレス変換テーブル、検索テーブル、不良ブロックテーブル等が含まれる。本発明では、アドレス変換テーブルは、論理ページと物理ページの対応関係を管理するためのテーブルである。さらに上記テーブル類に加えて、本発明ではホストシステムからのデータ書き込み用とブロック間のデータ転送先のための2つのポインタ情報を記憶する。不良ブロックテーブルは不良ブロックを管理するためのテーブルである。
【0025】
バッファメモリ9は、フラッシュメモリ2から読み出したデータ、又はフラッシュメモリ2に書き込むデータを、一時的に保持する揮発性メモリである。
【0026】
フラッシュメモリインターフェースブロック10は、フラッシュメモリ2との間で行われるデータ、アドレス情報、ステータス情報、内部コマンド等の送受信を制御する。ここで、内部コマンドとは、メモリコントローラ3がフラッシュメモリ2に処理の実行を指示するためのコマンドであり、フラッシュメモリ2は、メモリコントローラ3から与えられる内部コマンドに従って動作する。
【0027】
誤り訂正ブロック11は、フラッシュメモリ2にデータを書き込むときに、そのデータをBCH符号の誤り訂正符号(ECC:Error Correcting Code)に符号化し、フラッシュメモリ2から符号化されたデータを読み出したときに、その符号化されたデータを復号化する。つまり、フラッシュメモリ2に書き込まれるデータは、冗長ビットが付加されたBCH符号に符号化されてフラッシュメモリ2に書き込まれ、その符号化されたデータ(冗長ビットが付加されたデータ)は、読み出されたときに復号化される。この復号化では、符号化の際に付加される冗長ビットのビット数に応じて、所定のビット数までのビットエラーが訂正される。更に、誤り訂正ブロック11は、このBCH符号に基づいた訂正機能に加えて、当該訂正機能の訂正能力を超えるビット数のビットエラーが発生したことを検出する検出機能を備えている。
【0028】
ROM12は、フラッシュメモリ2を制御するために必要なファームウェアを格納するための不揮発性の記憶素子である。尚、フラッシュメモリシステム1を起動させるために必要な最小限のファームウェアだけをROM12に格納し、その他のファームウェアをフラッシュメモリ2に格納するようにしてもよい。
【0029】
マイクロプロセッサ6は、ROM12又はフラッシュメモリ2から、ファームウェアを読み込み、ファームウェアに従って動作する。メモリコントローラ3に含まれる機能ブロックは、マイクロプロセッサ6により制御される。
【0030】
フラッシュメモリ2は、NAND型フラッシュメモリであり、レジスタと、複数のメモリセルが2次元的に配列されたメモリセルアレイを備えている。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。ここで、メモリセル群は、複数のメモリセルが直列に接続されたものである。各ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、レジスタから選択されたメモリセルへのデータの書き込み又は選択されたメモリセルからレジスタへのデータの読み出しが行われる。尚、フラッシュメモリには、SLC(Single Level Cell)タイプのメモリセルで構成されたものと、MLC(Multi Level Cell)タイプのメモリセルで構成されたものがある。
【0031】
NAND型フラッシュメモリでは、データ読み出し動作及びデータ書き込み動作はページ単位で行われ、データ消去動作はブロック(物理ブロック)単位で行われる。それぞれの物理ブロックは、複数のページ(物理ページ)で構成され、それぞれの物理ページは、ユーザ領域と冗長領域で構成されている。ユーザ領域は、ホストシステム4から与えられるデータを主に格納するための領域であり、冗長領域は、論理アドレス情報、ブロックステータス(フラグ)情報、ECC等の付加データを主に格納するための領域である。
【0032】
論理アドレス情報は、当該情報に係る物理ページと対応する論理ページを特定するための情報である。ブロックステータス(フラグ)は、当該情報に係る物理ブロックが、不良ブロック(正常にデータの書き込み等を行うことができない物理ブロック)であるか否かを示すフラグである。尚、不良ブロックには、初期不良の不良ブロックと後発不良の不良ブロックがある。初期不良の不良ブロックは、出荷前に検出された不良ブロックである。後発不良の不良ブロックは、使用中に生じた不良ブロックである。初期不良の物理ブロックについては、不良ブロックであることを示すブロックステータス(フラグ)が製造メーカによって書き込まれている。また、この初期不良の物理ブロックを示すブロックステータス(フラグ)を、ユーザ領域に書き込んでいる製造メーカもある。
【0033】
次に、アドレス変換の手順と書き込みの制御方法について説明する。本発明では、図2に示すようにホストシステム側の論理アドレスと、フラッシュメモリ内の物理アドレスとを関係付けるためのアドレス変換をページ単位で行う。従って、ホストシステムのアクセス単位である論理セクタ(512バイト)が複数個含まれる論理ページを定義し、この論理ページ単位で、論理ページと物理ページとの対応関係を管理する。本実施の形態では、8セクタ(4096バイト)のユーザー領域を持つ物理ページで構成されたフラッシュメモリを用いる。従って、論理ページは、8個の論理セクタで構成されている。
【0034】
論理ページ番号(LPN)は、論理ページに付けられている通し番号である。物理ブロックアドレス(PBA)は、フラッシュメモリ内で物理ブロックに割り当てられているアドレスに対応する。物理ページ番号(PPN)は、各物理ブロック内の物理ページに付けられた各物理ブロック内での通し番号である。尚、物理ブロックアドレス(PBA)の下位側に物理ページ番号(PPN)を連結したものが、フラッシュメモリ内で物理ページに割り当てられている物理ページアドレス(PPA)に対応する。
【0035】
論理ページ番号(LPN)から物理ページアドレス(PPA)の変換は、図3に示したようなアドレス変換テーブルを用いて行われる。このアドレス変換テーブルは、それぞれの論理ページ番号(LPN)に対応する物理ページアドレス(PPA)が格納される領域で構成されている。物理ページアドレス(PPA)は、物理ブロックアドレス(PBA)を示すビットと物理ブロック内の物理ページ番号(PPN)を示すビットで構成される。本実施例では、1つの論理ページ番号(LPN)あたり23Bitの領域で構成されている。この23Bitの領域のうち、上位15bitは物理ブロックアドレス(PBA)に対応し、下位8ビットは物理ページ番号(PPN)に対応する。
【0036】
本実施の形態では、ホストシステムから与えられるデータの書き込み先の物理ページアドレス(PPA)を書き込みポインタ(WP)に基づいて管理し、物理ブロック間でデータを転送するときの転送先の物理ページアドレス(PPA)を転送ポインタ(TP)に基づいて管理する。また、ホストシステムから与えられるデータの書き込み先となる物理ブロックと、物理ブロック間でデータを転送するときの転送先となる物理ブロックは、互いに異なる物理ロックに管理されている。従って、書き込みポインタ(WP)により指示される物理ページアドレス(PPA)の物理ページが属する物理ブロックと、転送ポインタ(TP)により指示される物理ページアドレス(PPA)の物理ページが属する物理ブロックは、互いに異なる物理ブロックになる。
【0037】
ホストシステムから書き込みデータとLBA等の情報与えられた場合、書き込みポインタ(WP)により、書き込み先の物理ページの物理ページアドレス(PPA)を取得する。そして、その物理ページアドレス(PPA)の物理ページにホストシステムから与えられるデータが書き込まれる。このデータの書き込みに伴い、アドレス変換テーブルの更新が行われる。このアドレス変換テーブルでは、書き込んだデータの論理ページ番号(LPN)に対応する領域に、その領域の物理ページアドレス(PPA)が書き込まれる。尚、書き込むデータに対応する論理ページ番号(LPN)は、ホストシステムから与えられるLBA等に基づいて求められる。
【0038】
ブロック間転送を行う場合、転送ポインタ(TP)により、転送先の物理ページの物理ページアドレス(PPA)を取得する。そして、その物理ページアドレス(PPA)の物理ページに転送元のデータが転送される。
【0039】
消去状態の物理ブロック又は有効なデータが格納されていない物理ブロックである空きブロックは、図4に示したような空きブロックテーブルを用いて管理される。この空きブロックテーブルでは、フラッシュメモリ内の各物理ブロックがテーブル上の1つのビットに割り当てられている。そして、それぞれのビットの論理値(“0”又は“1”)が、そのビットに割り当てられている物理ブロックが空きブロックに該当するか否かを示している。この例では、論理値“0”が空きブロックに該当することを示し、論理値“1”が空きブロックに該当しないことを示す。また、空きブロックテーブル上の各アドレスには、1バイト(8ビット)の領域が割り当てられている。そして、テーブル全体では、アドレス#0〜アドレス#2047までの2048バイトの領域が、この空きブロックテーブル用の領域として使用される。例えば、アドレス#0の最下位ビットから最上位ビットまでの8ビットに、物理ブロックアドレス(PBA)#0から#7までの8個の物理ブロックがそれぞれ割り当てられている。アドレス#1の最下位ビットから最上位ビットまでの8ビットに、物理ブロックアドレス(PBA)#8から#15までの8個の物理ブロックがそれぞれ割り当てられている。以下同様に、物理ブロックアドレス(PBA)#16から#16383までの物理ブロックが順次割り当てられている。
【0040】
書き込みポインタ(WP)は、ホストシステムから与えられるデータの書き込み先として割り当てられた物理ブロック内の物理ページの物理ページアドレス(PPA)を先頭ページから末尾ページに向かって順次指定する。転送ポインタ(TP)は、物理ブロック間でデータを転送するときの転送先として割り当てられた物理ブロック内の物理ページの物理ページアドレス(PPA)を先頭ページから末尾ページに向かって順次指定する。
【0041】
従って、書き込みポインタ(WP)又は転送ポインタ(TP)の指定対象として割り当てられた物理ブロックについては、その物理ブロックに対応する空きブロックテーブル上のビットの論理値が、“0”から“1”に変更される。
【0042】
ブロック間転送の転送元の物理ブロックに格納されている全ての有効データが、転送先の物理ブロックに転送されることにより、この転送元の物理ブロックは空きブロック化する。この転送元の物理ブロックが空きブロック化したときに、この転送元の物理ブロックに対応する空きブロックテーブル上のビットの論理値が、“1”から“0”に変更される。
【0043】
物理ブロック内の無効データが格納されている物理ページのページ数は、図5に示されているような物理ブロックカウンタテーブルで管理される。この物理ブロックカウンタテーブルでは、物理ブロック毎に、その物理ブロック内の無効データが格納されている物理ページのページ数の値を保持している。ここで、無効データとは、新たなデータによって置き換えられたデータのことを指す。ホストシステムから与えられたデータを、書き込みポインタ(WP)により指示される物理ページアドレス(PPA)の物理ページに書き込んだときに、そのデータによって置き換えられたデータは、無効データになる。つまり、データを書き込んだときに、そのデータと同じ論理ページに対応する旧データがあった場合、その旧データが有効データから無効データに変わる。従って、データを書き込んだときに、その旧データが格納されている物理ブロック内の無効データが格納されている物理ページのページ数は1つ増加する。このように物理ブロック内の無効データが格納されている物理ページのページ数が増加した場合、物理ブロックカウンタテーブルに保持されているページ数の値が更新される。
【0044】
本実施の形態では、1個の物理ブロックが64ページの物理ページで構成されている。従って、物理ブロックカウンタテーブルに保持されている無効データが格納されている物理ページのページ数の値は、“0”から“64”まで間で変化する。このページ数の値が“64”になった物理ブロックは、有効データが格納されていないため、消去処理され、空きブロックとして取り扱われる。
【0045】
各物理ブロック内の無効データが格納されている物理ページは、図6に示されているような無効データページテーブルで管理されている。この無効データページテーブルでは、フラッシュメモリ内の各物理ページがテーブル上の1つのビットに割り当てられている。そして、それぞれのビットの論理値(“0”又は“1”)が、そのビットに割り当てられている物理ページに格納されているデータが無効データに該当するか否かを示している。この例では、論理値“0”が格納されているデータが無効データに該当しないことを示し、論理値“1”が格納されているデータが無効データに該当することを示す。つまり、物理ページにデータが格納されていないとき又は有効データが格納されているときは、その物理ページに対応するビットの論理値が“0”になり、物理ページに無効データが格納されているときは、その物理ページに対応するビットの論理値が“1”になる。また、無効データページテーブル上の各アドレスには、1バイト(8ビット)の領域が割り当てられている。そして、テーブル全体では、アドレス#0〜アドレス#524287までの524288バイトの領域が、この無効データページテーブル用の領域として使用される。例えば、アドレス#0の最下位ビットから最上位ビットまでの8ビットに、物理ブロックアドレス(PBA)#0の物理ブロック内の物理ページ番号(PPN)#0から#7までの8個の物理ページがそれぞれ割り当てられている。アドレス#1の最下位ビットから最上位ビットまでの8ビットに、物理ブロックアドレス(PBA)#0の物理ブロック内の物理ページ番号(PPN)#8から#15までの8個の物理ページがそれぞれ割り当てられている。このように、物理ブロックアドレス(PBA)#0から#16383までの物理ブロック内の物理ページが順次割り当てられている。
【0046】
次に、ホストシステムから与えられるデータをフラッシュメモリに書き込む書き込み処理を、図7を参照して説明する。
ステップ1:
ホストシステムから与えられる1ページ分のデータが、書き込みポインタ(WP)により指示される物理ページアドレス(PPA)の物理ページに書き込まれる。
ステップ2:
書き込みポインタ(WP)により指示される物理ページアドレス(PPA)の物理ページが、物理ブロック内の末尾の物理ページであるか否かが判断される。書き込みポインタ(WP)により指示される物理ページアドレス(PPA)の物理ページが、物理ブロック内の末尾の物理ページであると判断された場合、ステップ3に進む。書き込みポインタ(WP)により指示される物理ページアドレス(PPA)の物理ページが、物理ブロック内の末尾の物理ページでないと判断された場合、ステップ6に進む。
ステップ3:
空きブロックテーブルを用いた空きブロック検索が行われる。
ステップ4:
ステップ3の空きブロック検索で検出された物理ブロック内の先頭の物理ページに対応する物理ページアドレス(PPA)が書き込みポインタ(WP)に設定される。
ステップ5:
空きブロックテーブルを更新する。つまり、ステップ3の空きブロック検索で検出された物理ブロックに対応するビットの論理値が、“0”から“1”に変更される。
ステップ6:
書き込みポインタ(WP)に設定されている物理ページアドレス(PPA)の値がインクリメントされる。つまり、書き込みポインタ(WP)に設定されている物理ページアドレス(PPA)の値が、その次の物理ページの物理ページアドレス(PPA)に変更される。
【0047】
このように、ホストシステムから与えられるデータは、ホストシステムから与えられるデータの書き込み先として割り当てられた物理ブロック内の物理ページに、先頭の物理ページから末尾の物理ページに向かって順次書き込まれていく。そして、全ての物理ページにデータが書き込まれたときに、新たな物理ブロック(空きブロック)が、ホストシステムから与えられるデータの書き込み先として新たに割り当てられる。
【0048】
また、ホストシステムから与えられるデータを、書き込み先の物理ブロック内の物理ページに書き込んだときに、そのデータと同じ論理ページ番号(LPN)に対応する旧データが存在する場合、つまり、そのデータが書き込まれることにより無効データになるデータがある場合、物理ブロックカウンタテーブルと無効データページテーブルの更新が行われる。
【0049】
物理ブロックカウンタテーブルの更新では、この無効データになるデータが格納されている物理ページが属する物理ブロックに対応するページ数の値、つまり、この物理ブロック内の無効データが格納されている物理ページのページ数を示す値がインクリメントされる。このように、ホストシステムから与えられるデータが書き込まれることにより無効データになるデータがある場合、そのデータが格納されている物理ページが属する物理ブロックに対応するページ数の値が1増加する。
【0050】
無効データページテーブルの更新では、ホストシステムから与えられるデータが書き込まれることにより無効データになるデータがある場合、そのデータが格納されている物理ページに対応するビットの論理値が、“0”から“1”に変更される。
【0051】
次に、物理ブロック間でデータを転送するブロック間転送処理を、図8を参照して説明する。このブロック間転送処理は、転送元の物理ブロックを空きブロック化するために行われる処理であり、フラッシュメモリ内の空きブロックの個数が、所定の個数以下になったときに行われる
ステップ1:
物理ブロックカウンタテーブルを参照し、無効データが格納されている物理ページのページ数を示す値が最も“64”
に近い物理ブロックを特定する。更に、その物理ブロック内の有効データが格納されている物理ページのページ数を求める。無効データが格納されている物理ページのページ数を示す値がnの場合、有効データが格納されている物理ページのページ数は64−nになる。
ステップ2:
無効データページテーブルを参照し、ステップ1で特定された物理ブロック内の有効データが格納されている物理ページを特定する。そして、ステップ1で特定された物理ブロック内の1ページ分の有効データを、転送ポインタ(TP)により指示される物理ページアドレス(PPA)の物理ページに転送(複写)する。
ステップ3:
転送ポインタ(TP)により指示される物理ページアドレス(PPA)の物理ページが、物理ブロック内の末尾の物理ページであるか否かが判断される。転送ポインタ(TP)により指示される物理ページアドレス(PPA)の物理ページが、物理ブロック内の末尾の物理ページであると判断された場合、ステップ4に進む。転送ポインタ(TP)により指示される物理ページアドレス(PPA)の物理ページが、物理ブロック内の末尾の物理ページでないと判断された場合、ステップ7に進む。
ステップ4:
空きブロックテーブルを用いた空きブロック検索が行われる。
ステップ5:
ステップ4の空きブロック検索で検出された物理ブロック内の先頭の物理ページに対応する物理ページアドレス(PPA)が転送ポインタ(TP)に設定される。
ステップ6:
空きブロックテーブルを更新する。つまり、ステップ4の空きブロック検索で検出された物理ブロックに対応するビットの論理値が、“0”から“1”に変更される。
ステップ7:
転送ポインタ(TP)に設定されている物理ページアドレス(PPA)の値がインクリメントされる。つまり、転送ポインタ(TP)に設定されている物理ページアドレス(PPA)の値が、その次の物理ページの物理ページアドレス(PPA)に変更される。
ステップ8:
ステップ1で特定された物理ブロック内に有効データが格納されている物理ページが残っている場合は、ステップ2に戻り、有効データが格納されている物理ページが残っていない場合は、ブロック間転送処理を終了する。つまり、有効データが格納されている物理ページのページ数分のデータが転送された後に、ブロック間転送処理を終了する。
【0052】
このように、ブロック間転送処理より転送されるデータは、その転送先として割り当てられた物理ブロック内の物理ページに、先頭の物理ページから末尾の物理ページに向かって順次書き込まれていく。そして、全ての物理ページにデータが書き込まれたときに、新たな物理ブロック(空きブロック)が、ブロック間転送処理より転送されるデータの転送先として新たに割り当てられる。
【0053】
また、ブロック間転送処理が終了した後に、転送元の物理ブロックは消去処理され、それに伴って物理ブロックカウンタテーブルと無効データページテーブルの更新が行われる。物理ブロックカウンタテーブルの更新では、転送元の物理ブロック内の無効データが格納されている物理ページのページ数を示す値が“0”に再設定される。無効データページテーブルの更新では、転送元の物理ブロック内の各物理ページに対応するビットの論理値が“0”に再設定される。
【0054】
ブロック間転送処理より転送されるデータは、書き換え頻度が低いデータである確率が高いため、ブロック間転送処理より転送されるデータの転送先の物理ブロックとホストシステムから与えられるデータの書き込み先の物理ブロックを異なる物理ブロックにすることにより、相対的に書き換え頻度が低いデータと相対的に書き換え頻度が高いデータが効率的に分離される。このように相対的に書き換え頻度が低いデータと相対的に書き換え頻度が高いデータが、互いに異なる物理ブロックに分離して格納されることにより、ブロック間転送処理が実行される回数やそのブロック間転送処理により転送されるデータの総量が低減される。
【0055】
以上、本発明の実施の形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施の形態にのみ限定する趣旨ではない。本発明の要旨を逸脱しない範囲内において種々の変更を加え得ることは勿論である。
【0056】
例えば、複数のフラッシュメモリをアクセスするために複数のチャンネルのバスを備えたフラッシュメモリシステムにおいても本発明は有効である。各チャンネルに接続された複数のフラッシュメモリから、それぞれ選択された複数の物理ブロックを、ひとつの仮想ブロックとして定義する。さらにその仮想ブロックを構成する複数の物理ブロックにそれぞれ含まれる複数の物理ページを、ひとつの仮想ページと定義する。この様な仮想空間に対しても本発明は適用可能である。その場合、ホストシステムのLBA空間からフラッシュメモリ内の物理アドレスへのアドレス変換は、仮想ページの単位で行われる。つまり、ひとつの論理ページはひとつの仮想ページに割り当てられる。従って、論理ページのサイズは、仮想ページのユーザデータ領域の合計値に一致する。
【産業上の利用可能性】
【0057】
本発明は、種々のデジタル情報を取り扱うパーソナルコンピュータやデジタルスチルカメラ等の電子機器に装着又内蔵される情報記憶(記録)装置に適用することができる。
【符号の説明】
【0058】
1…フラッシュメモリシステム、2…フラッシュメモリ、3…メモリコントローラ

【特許請求の範囲】
【請求項1】
ホストシステムから与えられる論理アドレスが割り当てられている論理セクタを1個又は複数個含む論理ページを定義して、書き込み処理の処理単位である物理ページを複数個含む物理ブロックが消去処理の処理単位であるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
フラッシュメモリ内の消去状態の物理ブロックを検索する空きブロック検索手段と、
前記空きブロック検索手段により検出された消去状態の物理ブロックを、書き込み先ブロックとして管理する書き込み先管理手段と、
前記書き込み先管理手段より前記書き込み先ブロックとして管理されている物理ブロック内の物理ページに、先頭ページから末尾ページに向かう順番でデータが格納されていくように、当該物理ブロック内の格納先の物理ページを指示する書き込み先指示手段と、
ホストシステムから与えられるデータを、前記書き込み先指示手段により指示されている物理ページに書き込む書き込み手段と、
前記空きブロック検索手段により検出された消去状態の物理ブロックを、転送先ブロックとして管理する転送先管理手段と、
物理ブロック内の無効データが格納されている物理ページのページ数をカウントし、当該ページ数が一番大きい物理ブロックを特定する転送元特定手段と、
前記転送先管理手段より前記転送先ブロックとして管理されている物理ブロック内の物理ページに、先頭ページから末尾ページに向かう順番でデータが格納されていくように、当該物理ブロック内の格納先の物理ページを指示する転送先指示手段と、
前記転送元特定手段により特定された物理ブロックに格納されている有効データを、前記転送先指示手段により指示されている物理ページに転送する転送手段とを備え、
前記書き込み先管理手段は、前記書き込み先ブロックとして管理している物理ブロック内の全ての物理ページにデータが格納されたときに、別の物理ブロックを前記書き込み先ブロックとして新たに管理し、
前記転送先管理手段は、前記転送先ブロックとして管理している物理ブロック内の全ての物理ページにデータが格納されたときに、別の物理ブロックを前記転送先ブロックとして新たに管理し、
前記書き込み先管理手段により前記書き込み先ブロックとして管理されている物理ブロックと前記転送先管理手段により前記転送先ブロックとして管理されている物理ブロックは異なる物理ブロックであることを特徴とするメモリコントローラ。
【請求項2】
フラッシュメモリ内の消去状態の物理ブロックのブロック数を管理する空きブロック管理手段を更に備え、
前記転送手段による有効データの転送は、前記ブロック数が所定値以下になったときに実行されることを特徴とする請求項1に記載のメモリコントローラ。
【請求項3】
請求項1又は2に記載のメモリコントローラと、
このメモリコントローラにより制御されるフラッシュメモリを備えるフラッシュメモリシステム。
【請求項4】
ホストシステムから与えられる論理アドレスが割り当てられている論理セクタを1個又は複数個含む論理ページを定義して、書き込み処理の処理単位である物理ページを複数個含む物理ブロックが消去処理の処理単位であるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
フラッシュメモリ内の消去状態の物理ブロックを検索する空きブロック検索ステップと、
前記空きブロックステップにより検出された消去状態の物理ブロックを、書き込み先ブロックとして管理する書き込み先管理ステップと、
前記書き込み先管理ステップより前記書き込み先ブロックとして管理されている物理ブロック内の物理ページに、先頭ページから末尾ページに向かう順番で、ホストシステムから与えられるデータを書き込む書き込みステップと、
前記空きブロック検索ステップにより検出された消去状態の物理ブロックを、転送先ブロックとして管理する転送先管理ステップと、
物理ブロック内の無効データが格納されている物理ページのページ数をカウントし、当該ページ数が一番大きい物理ブロックを特定する転送元特定ステップと、
前記転送先管理ステップより前記転送先ブロックとして管理されている物理ブロック内の物理ページに、先頭ページから末尾ページに向かう順番で、前記転送元特定手段により特定された物理ブロックに格納されている有効データを転送する転送ステップとを備え、
前記書き込み先管理ステップでは、前記書き込み先ブロックとして管理している物理ブロック内の全ての物理ページにデータが格納されたときに、別の物理ブロックを前記書き込み先ブロックとして新たに管理し、
前記転送先管理ステップでは、前記転送先ブロックとして管理している物理ブロック内の全ての物理ページにデータが格納されたときに、別の物理ブロックを前記転送先ブロックとして新たに管理し、
前記書き込み先管理ステップにより前記書き込み先ブロックとして管理されている物理ブロックと前記転送先管理ステップにより前記転送先ブロックとして管理されている物理ブロックは異なる物理ブロックであることを特徴とするフラッシュメモリの制御方法。
【請求項5】
フラッシュメモリ内の消去状態の物理ブロックのブロック数を管理する空きブロック管理ステップを更に備え、
前記転送ステップによる有効データの転送は、前記ブロック数が所定値以下になったときに実行されることを特徴とする請求項4に記載のフラッシュメモリの制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−68765(P2012−68765A)
【公開日】平成24年4月5日(2012.4.5)
【国際特許分類】
【出願番号】特願2010−211428(P2010−211428)
【出願日】平成22年9月21日(2010.9.21)
【出願人】(000003067)TDK株式会社 (7,238)
【Fターム(参考)】