JP2010092200A - メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 - Google Patents
メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 Download PDFInfo
- Publication number
- JP2010092200A JP2010092200A JP2008260366A JP2008260366A JP2010092200A JP 2010092200 A JP2010092200 A JP 2010092200A JP 2008260366 A JP2008260366 A JP 2008260366A JP 2008260366 A JP2008260366 A JP 2008260366A JP 2010092200 A JP2010092200 A JP 2010092200A
- Authority
- JP
- Japan
- Prior art keywords
- block
- virtual block
- virtual
- page
- 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.)
- Pending
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【課題】仮想ブロックを形成して複数個のフラッシュメモリに並行したデータの書き込みや読み出しを行うように構成されたフラッシュメモリシステムにおいて、仮想ブロックの管理及び仮想ブロックに対するアクセスを効率良く行うことができるように仮想ブロックを形成する。
【解決手段】メモリコントローラは、互いに異なるフラッシュメモリに属する同じアドレスの物理ブロックを複数個結合させた暫定仮想ブロックを複数個形成し、複数個の暫定仮想ブロックから不良の物理ブロックが含まれる暫定仮想ブロックを抽出し、抽出された複数個の暫定仮想ブロック間で不良の物理ブロックと良品の物理ブロックとを交換することにより、不良の物理ブロックが含まれていない第2の暫定仮想ブロックを形成し、抽出されなかった暫定仮想ブロック及び上記第2の暫定仮想ブロックを管理対象とする。
【選択図】図18
【解決手段】メモリコントローラは、互いに異なるフラッシュメモリに属する同じアドレスの物理ブロックを複数個結合させた暫定仮想ブロックを複数個形成し、複数個の暫定仮想ブロックから不良の物理ブロックが含まれる暫定仮想ブロックを抽出し、抽出された複数個の暫定仮想ブロック間で不良の物理ブロックと良品の物理ブロックとを交換することにより、不良の物理ブロックが含まれていない第2の暫定仮想ブロックを形成し、抽出されなかった暫定仮想ブロック及び上記第2の暫定仮想ブロックを管理対象とする。
【選択図】図18
Description
本発明は、メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
フラッシュメモリを記憶媒体として用いた記憶装置は、特許文献1に記載されているように、記憶装置が接続されるホストシステムの動作速度とフラッシュメモリの動作速度(書き込み速度又は読み出し速度)との違いを吸収するために、フラッシュメモリに書き込まれるデータ又はフラッシュメモリから読み出されたデータを保持するためのバッファメモリを備えている。
更に、このような記憶装置では、ホストシステム側から見た実質的な動作速度を向上させるために、複数個のフラッシュメモリに対して並行したデータの書き込みや読み出しを行っている場合が多い。例えば、特許文献2には、異なるフラッシュメモリ内の物理ブロックを仮想的に結合した仮想ブロックを形成し、この仮想ブロック単位で、複数個のフラッシュメモリに対して並行したデータの書き込みや読み出しを行う技術が開示されている。
従って、仮想ブロックを形成して複数個のフラッシュメモリに対して並行したデータの書き込みや読み出しを行うフラッシュメモリシステムが含まれる記憶装置では、仮想ブロックの管理及び仮想ブロックに対するアクセスを効率良く行うことができるように仮想ブロックを形成する必要がある。
そこで、本発明は、仮想ブロックを形成して複数個のフラッシュメモリに並行したデータの書き込みや読み出しを行うように構成されたフラッシュメモリシステムにおいて、仮想ブロックの管理及び仮想ブロックに対するアクセスを効率良く行うことができるように仮想ブロックを形成することを目的とする。
本発明の第1の観点に従うメモリコントローラは、ホストシステムから与えられる指示情報に基づいて、物理ブロック単位で記憶データの消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
互いに異なるフラッシュメモリに属する複数個の物理ブロックを仮想的に結合した仮想ブロックを形成する仮想ブロック形成手段と、
前記仮想ブロック形成手段により形成されたそれぞれの仮想ブロックに含まれる物理ブロックを管理する第1の仮想ブロック管理手段と、
ホストシステムから与えられるセクタ単位のアドレスが割り当てられている論理セクタ領域を複数個集めた論理ブロックと前記仮想ブロックとの対応関係を管理するアドレス管理手段とを備える。前記仮想ブロック形成手段は、互いに異なるフラッシュメモリに属する同じアドレスの物理ブロックを複数個結合させた暫定仮想ブロックを複数個形成する暫定仮想ブロック形成手段と、前記暫定仮想ブロック形成手段により形成された複数個の前記暫定仮想ブロックから不良の物理ブロックが含まれる前記暫定仮想ブロックを抽出する抽出手段と、前記抽出手段により抽出された複数個の前記暫定仮想ブロック間で不良の物理ブロックと良品の物理ブロックとを交換することにより、不良の物理ブロックが含まれていない第2の暫定仮想ブロックを形成する第2の暫定仮想ブロック形成手段と、前記抽出手段により抽出されなかった前記暫定仮想ブロック及び前記第2の暫定仮想ブロック形成手段により形成された前記第2の暫定仮想ブロックを前記第1の仮想ブロック管理手段によって管理される前記仮想ブロックとして設定する設定手段とを有する。
互いに異なるフラッシュメモリに属する複数個の物理ブロックを仮想的に結合した仮想ブロックを形成する仮想ブロック形成手段と、
前記仮想ブロック形成手段により形成されたそれぞれの仮想ブロックに含まれる物理ブロックを管理する第1の仮想ブロック管理手段と、
ホストシステムから与えられるセクタ単位のアドレスが割り当てられている論理セクタ領域を複数個集めた論理ブロックと前記仮想ブロックとの対応関係を管理するアドレス管理手段とを備える。前記仮想ブロック形成手段は、互いに異なるフラッシュメモリに属する同じアドレスの物理ブロックを複数個結合させた暫定仮想ブロックを複数個形成する暫定仮想ブロック形成手段と、前記暫定仮想ブロック形成手段により形成された複数個の前記暫定仮想ブロックから不良の物理ブロックが含まれる前記暫定仮想ブロックを抽出する抽出手段と、前記抽出手段により抽出された複数個の前記暫定仮想ブロック間で不良の物理ブロックと良品の物理ブロックとを交換することにより、不良の物理ブロックが含まれていない第2の暫定仮想ブロックを形成する第2の暫定仮想ブロック形成手段と、前記抽出手段により抽出されなかった前記暫定仮想ブロック及び前記第2の暫定仮想ブロック形成手段により形成された前記第2の暫定仮想ブロックを前記第1の仮想ブロック管理手段によって管理される前記仮想ブロックとして設定する設定手段とを有する。
本発明の第2の観点に従うメモリコントローラは、前記第1の観点において、前記第1の仮想ブロック管理手段が、前記仮想ブロックに含まれる物理ブロックを示す情報である仮想ブロック情報が保持されている仮想ブロック管理テーブルに基づいて、前記仮想ブロックに含まれる物理ブロックを管理する。前記仮想ブロック管理テーブルには、前記第2の暫定仮想ブロックに関する前記仮想ブロック情報だけが保持されている。
本発明の第3の観点に従うメモリコントローラは、前記第2の観点において、
前記仮想ブロックに含まれるいずれか1個以上の物理ブロックが不良化したときに、不良化した物理ブロックが属する前記仮想ブロックの使用を禁止する第2の仮想ブロック管理手段と、
第2の仮想ブロック管理手段により使用が禁止された前記仮想ブロックを保留仮想ブロックとして管理する保留仮想ブロック管理手段と、
前記保留仮想ブロック管理手段により管理されている複数個の前記保留仮想ブロック間で、不良化した物理ブロックと良品の物理ブロックとを交換することにより、不良化した物理ブロックが含まれていない前記仮想ブロックを再形成し、再形成された前記仮想ブロックの使用を解禁する第3の仮想ブロック管理手段とを備える。前記第3の仮想ブロック管理手段により再形成された前記仮想ブロックに関する前記仮想ブロック情報が、前記仮想ブロック管理テーブルに追加される。
前記仮想ブロックに含まれるいずれか1個以上の物理ブロックが不良化したときに、不良化した物理ブロックが属する前記仮想ブロックの使用を禁止する第2の仮想ブロック管理手段と、
第2の仮想ブロック管理手段により使用が禁止された前記仮想ブロックを保留仮想ブロックとして管理する保留仮想ブロック管理手段と、
前記保留仮想ブロック管理手段により管理されている複数個の前記保留仮想ブロック間で、不良化した物理ブロックと良品の物理ブロックとを交換することにより、不良化した物理ブロックが含まれていない前記仮想ブロックを再形成し、再形成された前記仮想ブロックの使用を解禁する第3の仮想ブロック管理手段とを備える。前記第3の仮想ブロック管理手段により再形成された前記仮想ブロックに関する前記仮想ブロック情報が、前記仮想ブロック管理テーブルに追加される。
本発明の第4の観点に従うメモリコントローラは、前記第3の観点において、前記保留仮想ブロック管理手段は、前記保留仮想ブロックに含まれる良品の物理ブロックの個数をフラッシュメモリ毎に集計した値を集計値として保持する。
本発明の第5の観点に従うメモリコントローラは、前記第4の観点において、前記第3の仮想ブロック管理手段は、フラッシュメモリ毎の前記集計値が全て所定値以上になったときに前記仮想ブロックの再形成を行う。
本発明の第6の観点に従うメモリコントローラは、前記第1乃至第5の観点のいずれかに従うメモリコントローラと、このメモリコントローラにより制御される複数個のフラッシュメモリとを備える。
本発明の第7の観点に従うフラッシュメモリの制御方法は、ホストシステムから与えられる指示情報に基づいて、物理ブロック単位で記憶データの消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
互いに異なるフラッシュメモリに属する複数個の物理ブロックを仮想的に結合した仮想ブロックを形成する仮想ブロック形成ステップと、
前記仮想ブロック形成ステップにより形成されたそれぞれの仮想ブロックに含まれる物理ブロックを管理する第1の仮想ブロック管理ステップと、
ホストシステムから与えられるセクタ単位のアドレスが割り当てられている論理セクタ領域を複数個集めた論理ブロックと前記仮想ブロックとの対応関を管理するアドレス管理ステップとを備える。前記仮想ブロック形成ステップは、互いに異なるフラッシュメモリに属する同じアドレスの物理ブロックを複数個結合させた暫定仮想ブロックを複数個形成する暫定仮想ブロック形成ステップと、前記暫定仮想ブロック形成ステップにより形成された複数個の前記暫定仮想ブロックから不良の物理ブロックが含まれる前記暫定仮想ブロックを抽出する抽出ステップと、前記抽出ステップにより抽出された複数個の前記暫定仮想ブロック間で不良の物理ブロックと良品の物理ブロックとを交換することにより、不良の物理ブロックが含まれていない第2の暫定仮想ブロックを形成する第2の暫定仮想ブロック形成ステップと、前記抽出ステップにより抽出されなかった前記暫定仮想ブロック及び前記第2の暫定仮想ブロック形成ステップにより形成された前記第2の暫定仮想ブロックを前記第1の仮想ブロック管理ステップによって管理される前記仮想ブロックとして設定する設定ステップとを有する。
互いに異なるフラッシュメモリに属する複数個の物理ブロックを仮想的に結合した仮想ブロックを形成する仮想ブロック形成ステップと、
前記仮想ブロック形成ステップにより形成されたそれぞれの仮想ブロックに含まれる物理ブロックを管理する第1の仮想ブロック管理ステップと、
ホストシステムから与えられるセクタ単位のアドレスが割り当てられている論理セクタ領域を複数個集めた論理ブロックと前記仮想ブロックとの対応関を管理するアドレス管理ステップとを備える。前記仮想ブロック形成ステップは、互いに異なるフラッシュメモリに属する同じアドレスの物理ブロックを複数個結合させた暫定仮想ブロックを複数個形成する暫定仮想ブロック形成ステップと、前記暫定仮想ブロック形成ステップにより形成された複数個の前記暫定仮想ブロックから不良の物理ブロックが含まれる前記暫定仮想ブロックを抽出する抽出ステップと、前記抽出ステップにより抽出された複数個の前記暫定仮想ブロック間で不良の物理ブロックと良品の物理ブロックとを交換することにより、不良の物理ブロックが含まれていない第2の暫定仮想ブロックを形成する第2の暫定仮想ブロック形成ステップと、前記抽出ステップにより抽出されなかった前記暫定仮想ブロック及び前記第2の暫定仮想ブロック形成ステップにより形成された前記第2の暫定仮想ブロックを前記第1の仮想ブロック管理ステップによって管理される前記仮想ブロックとして設定する設定ステップとを有する。
本発明の第8の観点に従うフラッシュメモリの制御方法は、前記第7の観点において、前記第1の仮想ブロック管理ステップでは、前記仮想ブロックに含まれる物理ブロックを示す情報である仮想ブロック情報が保持されている仮想ブロック管理テーブルに基づいて前記仮想ブロックに含まれる物理ブロックを管理する。前記仮想ブロック管理テーブルには、前記第2の暫定仮想ブロックに関する前記仮想ブロック情報だけが保持されている。
本発明の第9の観点に従うフラッシュメモリの制御方法は、前記第8の観点において、
前記仮想ブロックに含まれるいずれか1個以上の物理ブロックが不良化したときに、不良化した物理ブロックが属する前記仮想ブロックの使用を禁止する第2の仮想ブロック管理ステップと、
第2の仮想ブロック管理ステップにより使用が禁止された前記仮想ブロックを保留仮想ブロックとして管理する保留仮想ブロック管理ステップと、
前記保留仮想ブロック管理ステップにより管理されている複数個の前記保留仮想ブロック間で、不良化した物理ブロックと良品の物理ブロックとを交換することにより、不良化した物理ブロックが含まれていない前記仮想ブロックを再形成し、再形成された前記仮想ブロックの使用を解禁する第3の仮想ブロック管理ステップとを備える。前記第3の仮想ブロック管理ステップにより再形成された前記仮想ブロックに関する前記仮想ブロック情報が、前記仮想ブロック管理テーブルに追加される。
前記仮想ブロックに含まれるいずれか1個以上の物理ブロックが不良化したときに、不良化した物理ブロックが属する前記仮想ブロックの使用を禁止する第2の仮想ブロック管理ステップと、
第2の仮想ブロック管理ステップにより使用が禁止された前記仮想ブロックを保留仮想ブロックとして管理する保留仮想ブロック管理ステップと、
前記保留仮想ブロック管理ステップにより管理されている複数個の前記保留仮想ブロック間で、不良化した物理ブロックと良品の物理ブロックとを交換することにより、不良化した物理ブロックが含まれていない前記仮想ブロックを再形成し、再形成された前記仮想ブロックの使用を解禁する第3の仮想ブロック管理ステップとを備える。前記第3の仮想ブロック管理ステップにより再形成された前記仮想ブロックに関する前記仮想ブロック情報が、前記仮想ブロック管理テーブルに追加される。
本発明の第10の観点に従うフラッシュメモリの制御方法は、前記第9の観点において、前記保留仮想ブロック管理ステップでは、前記保留仮想ブロックに含まれる良品の物理ブロックの個数をフラッシュメモリ毎に集計した値を集計値として保持する。
本発明の第11の観点に従うフラッシュメモリの制御方法は、前記第10の観点において、前記第3の仮想ブロック管理ステップでは、フラッシュメモリ毎の前記集計値が全て所定値以上になったときに前記仮想ブロックの再形成を行う。
本発明によれば、仮想ブロックを形成して複数個のフラッシュメモリに並行したデータの書き込みや読み出しを行うように構成されたフラッシュメモリシステムにおいて、仮想ブロックの管理及び仮想ブロックに対するアクセスを効率良く行うことができるように仮想ブロックを形成することができる。
図1は、本発明の一実施形態に係るフラッシュメモリシステム1を概略的に示すブロック図である。本実施形態のフラッシュメモリシステム1では、記憶媒体として複数個のフラッシュメモリを使用している。更に、互いに異なるフラッシュメモリに属する複数個の物理ブロックで仮想ブロックを形成している。
図1に示すように、フラッシュメモリシステム1は、フラッシュメモリ2と、フラッシュメモリ2を制御するメモリコントローラ3とで構成されている。尚、図1では、複数個のフラッシュメモリを、「フラッシュメモリ2」として図示している。以下の説明では、複数個のフラッシュメモリ2を総称して「フラッシュメモリ2」と言うことがある。以下、各機能ブロックについて説明する。
ホストインターフェースブロック7は、ホストシステム4との間でデータ、アドレス情報、ステータス情報、外部コマンド等の授受を行う。外部コマンドとは、ホストシステム4がフラッシュメモリシステム1に対して処理の実行を指示するためのコマンドである。ホストシステム4よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口としてフラッシュメモリシステム1の内部(例えば、バッファ9)に取り込まれる。また、フラッシュメモリシステム1からホストシステム4に供給されるデータ等は、ホストインターフェースブロック7を出口としてホストシステム4に供給される。
SRAM(Static Random Access Memory)8は、揮発性の記憶素子であり、フラッシュメモリ2の制御に必要なデータを一時的に格納するために使用される。例えば、不良ブロックテーブル、アドレス変換テーブル及び空きブロックテーブル等は、SRAM8上で作成又は更新される。ここで、不良ブロックテーブルは、不良ブロックを示す情報を保持するテーブルである。アドレス変換テーブルは、論理ブロックと仮想ブロック(又は物理ブロック)との対応関係を示したテーブルである。空きブロックテーブルは、消去状態の仮想ブロック(又は物理ブロック)又は有効なデータが書き込まれていない仮想ブロック(又は物理ブロック)を検索するためのテーブルである。これらのテーブルは、フラッシュメモリ2に保存してもよいが、これらのテーブルを格納するために、FeRAM(Ferroelectric Random Access Memory)等の不揮発性RAM(Random Access Memory)を用いるようにしてもよい。
ROM12は、不揮発性の記憶素子である。ROM12には、フラッシュメモリ2の制御に必要なファームウェアが格納されている。なお、起動時に必要な最低限のファームウェアだけがROM12に格納され、その他のファームウェアはフラッシュメモリ2に格納されるようにしてもよい。
バッファ9は、ホストシステム4から与えられたデータやフラッシュメモリ2から読み出されたデータが一時的に格納される揮発性の記憶素子である。本本実施形態では、この揮発性の記憶素子としてDRAM(Dynamic Random Access Memory)を用いている。このバッファ9の詳細については後述する。
フラッシュメモリインターフェースブロック10は、ROM12又はフラッシュメモリ2にファームウェアとして格納されているシーケンスコード(各種の処理を規定したコード)を読み込み、読込んだシーケンスコードに従って、フラッシュメモリ2に対する各種の処理を実行する。このシーケンスコードは、フラッシュメモリインターフェースブロック10が実行するシーケンス処理毎に設定されたコードセットであり、それぞれのコードセットが複数個のコードで構成されている。このシーケンスコードに基づいて実行される処理では、フラッシュメモリインターフェースブロック10とフラッシュメモリ2との間で、データ、アドレス情報、ステータス情報、内部コマンド等の授受が、内部バス14を介して行なわれる。ここで、内部コマンドとは、メモリコントローラ3がフラッシュメモリ2に処理の実行を指示するためのコマンドであり、フラッシュメモリ2は、メモリコントローラ3から与えられる内部コマンドに従って動作する。尚、フラッシュメモリ2にファームウェアとして格納されているシーケンスコードについては、処理の実行前にフラッシュメモリ2から読み出されSRAM8に格納される。
ECCブロック11は、フラッシュメモリ2に書き込むデータに付加される誤り訂正符号(ECC:Error-Correcting Code))を生成するとともに、読み出したデータに付加されている誤り訂正符号に基づいて、読み出したデータに含まれる誤りを検出・訂正する。
マイクロプロセッサ6は、ROM12又はフラッシュメモリ2にファームウェアとして格納されているプログラムコードを読み込み、読み込んだプログラムコードに従って、メモリコントローラ3の全体の動作を制御する。このプログラムコードは、マイクロプロセッサ6の動作を規定したプログラムであり、マイクロプロセッサ6は、読込んだプログラムコードに基づいて、フラッシュメモリ2に対するアクセスを制御する。尚、フラッシュメモリ2にファームウェアとして格納されているプログラムコードについては、起動時にフラッシュメモリ2から読み出されSRAM8に格納される。
フラッシュメモリ2は、NAND型フラッシュメモリであり、レジスタと、複数のメモリセルが配列されたメモリセルアレイを備えている。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。ここで、メモリセル群は、複数のメモリセルが直列に接続されたものである。各ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、レジスタから選択されたメモリセルへのデータの書き込み、又は選択されたメモリセルからレジスタへのデータの読み出しが行われる。尚、一般的に使用されているNAND型フラッシュメモリには、SLC(single level cell)タイプのメモリセルで構成されているものと、MLC(multi level cell)タイプのメモリセルで構成されているものとがある。
NAND型フラッシュメモリでは、データの読み出し及び書き込みはページ(物理ページ)単位で行われ、データの消去は複数のページ(物理ページ)で構成されたブロック(物理ブロック)単位で行われる。尚、物理ページは、主にホストシステム4から与えられるユーザーデータが書き込まれるユーザー領域と、付加データが記憶される冗長領域とで構成されている。一般的に使用されているNAND型フラッシュメモリには、ユーザー領域の容量が4セクタ(2048バイト)や8セクタ(4096バイト)のものがある。冗長領域については、メーカー、メモリセルのタイプ(SLC又はMLC)及び物理ページの容量等の違いによりその容量が異なり、種々の容量のものがある。また、1個の物理ブロックを構成する物理ページの個数については、64個のものや128個のもの等がある。本実施形態では、1個の物理ページのユーザー領域の容量が8セクタ(4096バイト)で、1個の物理ブロックが64個の物理ページで構成されているNAND型フラッシュメモリを用いた場合について説明する。
冗長領域に書き込まれる付加データとしては、誤り訂正符号(ECC:Error-Correcting Code)、論理アドレス情報、ブロックステータス(フラグ)等がある。論理アドレス情報は、その物理ブロックに割り当てられた論理ブロックを示す情報であり、この情報に基づいて物理ブロックと論理ブロックの対応関係が判別される。ブロックステータス(フラグ)は、物理ブロックの良否を示すフラグであり、このブロックステータス(フラグ)に基づいて、正常にデータの書き込み等を行うことができない物理ブロックである不良ブロックが判別される。尚、不良ブロックには、出荷時から不良である初期不良の物理ブロック(以下、「初期不良ブロック」と言う)と、使用開始後に劣化して不良ブロックになった後発不良の物理ブロック(以下、「後発不良ブロック」と言う)があり、初期不良ブロックについては、不良ブロックであることを示すブロックステータス(フラグ)がメーカーによって予め書き込まれている。また、この初期不良ブロックを示すブロックステータス(フラグ)を、ユーザー領域に書き込んでいるメーカーもある。後発不良ブロックの判断基準については、設計の際に設計者が適宜設定することができる。例えば、書き込み又は消去が行われた際にフラッシュメモリから出力される処理ステータスがフェイルであった場合、読み出されたデータに予め定められた閾値以上の誤りが含まれていた場合、又はこれらの組合せ等により、後発不良理ブロックであるとの判断が行われてもよい。
本実施形態では、図2に示すように、8個のフラッシュメモリ2a〜2hが並行してアクセスされるように、つまり、並行してデータの書き込みや読み出しが行われるようにフラッシュメモリインターフェース10が構成されている。8個のフラッシュメモリ2a〜2hに書き込まれるデータは、時分割でバッファ9から出力され、ラッチ回路21a〜21hを介して、フラッシュメモリ2a〜2hに供給される。8個のフラッシュメモリ2a〜2hから読み出されるデータは、ラッチ回路21a〜21hを介して、時分割でバッファ9に入力される。尚、バッファ9のホストシステム4側のデータ入出力と、バッファ9のフラッシュメモリ2a〜2h側のデータ入出力についても、時分割で動作するように回路が構成されている。
上記のように8個のフラッシュメモリ2a〜2hに並行してアクセスする際に、メモリコントローラ3は、互いに異なるフラッシュメモリ2a〜2hに属する8個の物理ブロックを1個の仮想ブロックとして取り扱い、この仮想ブロックに対して1個の論理ブロックを割り当てている。この仮想ブロックは、例えば、図3に示したような仮想ブロック管理テーブルにより管理されている。仮想ブロック管理テーブルは、図3に示すように、仮想ブロックに付けられた通し番号である仮想ブロック番号(VBN)と、それぞれの仮想ブロックを構成する物理ブロックの物理ブロックアドレス(VBA)との対応関係を示している。この仮想ブロック管理テーブルを参照することにより、例えば、VBN#0の仮想ブロックは、
フラッシュメモリ2a内のPBA#0の物理ブロックと
フラッシュメモリ2b内のPBA#0の物理ブロックと
フラッシュメモリ2c内のPBA#0の物理ブロックと
フラッシュメモリ2d内のPBA#0の物理ブロックと
フラッシュメモリ2e内のPBA#0の物理ブロックと
フラッシュメモリ2f内のPBA#0の物理ブロックと
フラッシュメモリ2g内のPBA#0の物理ブロックと
フラッシュメモリ2h内のPBA#0の物理ブロックと
で構成されていることが分かる。それぞれの仮想ブロックを構成する物理ブロックのPBAは、同一でなくてもよいが、仮想ブロックの管理等を考慮すれば、同じPBAの物理ブロックで仮想ブロックが構成されることが好ましい。但し、PBAが同一の8個の物理ブロック(互いに異なるフラッシュメモリ2a〜2hに属する物理ブロック)の中に不良ブロックが含まれている場合には、その不良ブロックに代えて、別の物理ブロック(PBAが異なる物理ブロック)が割り当てられる。例えば、フラッシュメモリ2c内のPBA#7の物理ブロックが不良ブロックの場合には、このPBA#7の物理ブロックに代えて、PBA#1016の物理ブロックがVBN#7の仮想ブロックに割り当てられる。
フラッシュメモリ2a内のPBA#0の物理ブロックと
フラッシュメモリ2b内のPBA#0の物理ブロックと
フラッシュメモリ2c内のPBA#0の物理ブロックと
フラッシュメモリ2d内のPBA#0の物理ブロックと
フラッシュメモリ2e内のPBA#0の物理ブロックと
フラッシュメモリ2f内のPBA#0の物理ブロックと
フラッシュメモリ2g内のPBA#0の物理ブロックと
フラッシュメモリ2h内のPBA#0の物理ブロックと
で構成されていることが分かる。それぞれの仮想ブロックを構成する物理ブロックのPBAは、同一でなくてもよいが、仮想ブロックの管理等を考慮すれば、同じPBAの物理ブロックで仮想ブロックが構成されることが好ましい。但し、PBAが同一の8個の物理ブロック(互いに異なるフラッシュメモリ2a〜2hに属する物理ブロック)の中に不良ブロックが含まれている場合には、その不良ブロックに代えて、別の物理ブロック(PBAが異なる物理ブロック)が割り当てられる。例えば、フラッシュメモリ2c内のPBA#7の物理ブロックが不良ブロックの場合には、このPBA#7の物理ブロックに代えて、PBA#1016の物理ブロックがVBN#7の仮想ブロックに割り当てられる。
尚、それぞれの仮想ブロックに割り当てられているフラッシュメモリ2a〜2hに属する8個の物理ブロックについては、その物理ブロックが不良ブロックにならない限り他の物理ブロックに変更されないことが好ましい。また、仮想ブロック管理テーブルには、予め定められている同一のPBAの物理ブロックだけで構成された仮想ブロック以外の仮想ブロックについてだけ、その仮想ブロックを構成する物理ブロックのPBAを記述するようにしても良い。つまり、図3に示した、VBN#7の仮想ブロックやVBN#15の仮想ブロックのような仮想ブロックについてだけ、その仮想ブロックを構成する物理ブロックのPBAを仮想ブロック管理テーブルに記述するようにしても良い。
ホストシステム4側のアドレス空間は、セクタ(512バイト)単位で分割した領域(以下、「論理セクタ領域」と言う)に付けた通番であるLBA(Logical Block Address)で管理されている。メモリコントローラ3内で行われるアドレス管理では、複数個の論理セクタ領域で論理ブロックが形成され、この論理ブロックに対して、仮想ブロックが割り当てられる。本実施形態では、1個の物理ブロックが、512セクタのユーザー領域で構成されており、1個の仮想ブロックが、8個の物理ブロックで形成されている。このため、LBAが連続する4096個の論理セクタ領域をまとめたものが論理ブロックとされ(例えば、LBA#0〜#4095の4096個の論理セクタ領域がLBN#0の論理ブロックとされる)、この論理ブロックに対して、仮想ブロックが割り当てられる。この論理論理ブロックと仮想ブロックとの対応関係は、論理ブロックに付けられた通し番号である論理ブロック番号(LBN)と仮想ブロックの仮想ブロック番号(VBN)との対応関係を示したアドレス変換テーブルで管理されている。図4は、アドレス変換テーブルの一例であり、このアドレス変換テーブルには、例えば、LBN#0の論理ブロックにVBN#11の仮想ブロックが割り当てられ、LBN#1の論理ブロックにVBN#0の仮想ブロックが割り当てられていることが示されている。尚、ここでは、論理ブロックに含まれる領域の容量と、仮想ブロックに含まれ記憶領域(ユーザー領域)の容量を同じにしたが、論理ブロックに含まれる領域の容量を仮想ブロックに含まれ記憶領域(ユーザー領域)の容量よりも小さくしても良い。
本実施形態では、ホストシステム4から与えられるデータは、一旦、バッファ9に格納される。メモリコントローラ3は、バッファ9に格納されているデータをフラッシュメモリ2に書き込む必要が生じたときに、フラッシュメモリ2へのデータの書き込みを実行する。メモリコントローラ3は、バッファ9に格納されているデータをフラッシュメモリ2に書き込むときには、論理ブロックと仮想ブロックの対応関係に基づいて、書き込み先の仮想ブロックを特定する。なお、それぞれの論理ブロックと対応関係にある仮想ブロックは、アドレス変換テーブルに基づいて特定される。また、それぞれの仮想ブロックを構成する物理ブロックは、仮想ブロック管理テーブルに基づいて特定される。そして、メモリコントローラ3は、このようにして特定された互いに異なるフラッシュメモリ2a〜2hに属する物理ブロック対して並行してデータの書き込みを行う。
メモリコントローラ3は、バッファ9に格納されているデータをフラッシュメモリ2に書き込むときに、書き込むデータに対応する論理ブロックに仮想ブロックが割り当てられていない場合、又はその論理ブロックと対応関係にある仮想ブロックを構成する物理ブロック内にデータを書き込むための空き領域(データが書き込まれていない物理ページ)が無い場合には、その論理ブロックに対してデータが書き込まれていない仮想ブロック(以下、データが書き込まれていない仮想ブロックを「空き仮想ブロック」と言う)を新たに割り当てる。つまり、このような場合、メモリコントローラ3は、空き仮想ブロックの検索を行い、検出された空き仮想ブロックを、書き込むデータに対応する論理ブロックに新たに割り当てる。
尚、それぞれの仮想ブロックを構成する8個の物理ブロックについては予め定められているので、空き仮想ブロックの検索も仮想ブロック単位で行われる。この検索は、例えば、図5に示したような検索テーブルを用いて行われる。この検索テーブルでは、各ビットに1個の仮想ブロックが割り当てられている。そして、各ビットの論理値(“0”又は“1”)は、そのビットに割り当てられている仮想ブロックが空き仮想ブロックであるか否かを示している。例えば、空き仮想ブロックが論理値の“1”に割り当てられている場合について説明する(この場合、図5で、1番上の行の8ビットに下位ビット側から順番にVBN#0〜#7の仮想ブロックが割り当てられているとすれば、VBN#7の仮想ブロックは空き仮想ブロックであるが、VBN#0〜#6の仮想ブロックは空き仮想ブロックではない)。空き仮想ブロックの検索では、論理値が“1”のビットの検索が検索テーブル上で行われる。また、空き仮想ブロックにデータが書き込まれたときは、その仮想ブロックに対応する検索テーブル上のビットの論理値が“1”から“0”に変更される。一方、データが格納されていた仮想ブロックが空き仮想ブロックになったときは、その仮想ブロックに対応する検索テーブル上のビットの論理値が“0”から“1”に変更される。
次に、仮想ブロック内の仮想ページについて説明する。メモリコントローラ3は、仮想ブロックが複数の仮想ページで構成されているものとして、仮想ブロック内の仮想ページを管理している。尚、仮想ブロック内の仮想ページと物理ブロック内の物理ページとの対応関係は予め定められている。つまり、それぞれの仮想ブロック内の仮想ページに付けられた通し番号(それぞれの仮想ブロック内での通し番号)である仮想ページ番号(VPN)と、それぞれの物理ブロック内の物理ページに付けられた通し番号(それぞれの物理ブロック内での通し番号)である物理ページ番号(PPN)との対応関係は予め定められている。図6は、本実施形態における仮想ページと物理ページとの対応関係を示している。それぞれの仮想ページは、8個の物理ページで構成されている。例えば、VPN#0の仮想ページは8個のフラッシュメモリ2a〜2h内のPPN#0の物理ページで構成され、VPN#1の仮想ページは8個のフラッシュメモリ2a〜2h内のPPN#1の物理ページで構成され、以下同様に、VPN#63の仮想ページは8個のフラッシュメモリ2a〜2h内のPPN#63の物理ページで構成されている。
また、メモリコントローラ3は、論理ブロック内の論理セクタ領域を複数個まとめた領域(複数セクタの領域)を論理ページとして管理している。つまり、論理ブロックは複数個の論理ページで構成され、論理ページは複数個の論理セクタ領域で構成されている。本実施形態では、64個の論理セクタ領域をまとめた64セクタの領域が1個の論理ページとして管理されている。メモリコントローラ3は、論理ページと仮想ページとの対応関係を、論理ブロック内の論理ページに付けられた通し番号(それぞれの論理ブロック内での通し番号)である論理ページ番号(LPN)と、仮想ブロック内の仮想ページに付けられた通し番号(それぞれの仮想ブロック内での通し番号)である仮想ページ番号(VPN)との対応関係を示すページ情報テーブルに基づいて把握する。図7は、ページ情報テーブルの一例であり、例えば、LPN#0の論理ページがVPN#0の仮想ページに対応し、LPN#1の論理ページがVPN#1の仮想ページに対応することを示している。また、この論理ページと仮想ページとの対応関係を管理するため、それぞれの仮想ページを構成する8個の物理ページの冗長領域には、これらの物理ページに書き込まれたデータに対応する論理ページのLPNが書き込まれるようにすることが好ましい。尚、仮想ページと、その仮想ページを構成する物理ページとの対応関係は予め定められているので、8個の物理ページのうち、いずれか1個の物理ページの冗長領域にだけLPNを書き込むようにしてもよい。
本実施形態では、1個の物理ページのユーザー領域が8個のセクタ領域(第1〜8セクタ領域)に分割されて使用されている。ここで、仮想ページを構成するそれぞれの物理ページに含まれる第1〜8セクタ領域と、それぞれの論理ページに含まれる64個の論理セクタ領域との対応関係について説明する。図8に示したように1個の論理ブロックは、LPN#0〜#63の論理ページで構成されており、それぞれ論理ページには64個の論理セクタ領域が含まれている。ここで、説明の便宜のため、それぞれ論理ページに含まれている論理セクタ領域に、その論理ページ内での通し番号を付ける。以下、この通し番号をセクタ番号(SN)と言う。図9は、それぞれ論理ページに含まれているSN#0〜#63の論理セクタ領域と、それぞれの物理ページに含まれる第1〜8セクタ領域との対応関係を示している。仮想ページは、8個のフラッシュメモリ2a〜2hにそれぞれ属する8個の物理ページで構成されている。本実施形態では、SN#0の論理セクタ領域がフラッシュメモリ2aに属する物理ページ内の第1セクタ領域に対応し、SN#1の論理セクタ領域がフラッシュメモリ2bに属する物理ページ内の第1セクタ領域に対応し、以下同様に、SN#2〜#7の論理セクタ領域がフラッシュメモリ2c〜2hに属するそれぞれの物理ページページ内の第1セクタ領域に対応している。続いて、SN#8の論理セクタ領域がフラッシュメモリ2aに属する物理ページ内の第2セクタ領域に対応し、SN#9の論理セクタ領域がフラッシュメモリ2bに属する物理ページ内の第2セクタ領域に対応し、以下同様に、SN#10〜#15の論理セクタ領域がフラッシュメモリ2c〜2hに属するそれぞれの物理ページページ内の第2セクタ領域に対応している。このようにして、SN#0〜#63の論理セクタ領域が、8個の物理ページ内の第1〜8セクタ領域に対応している。
次に、本実施形態におけるバッファ9について説明する。本実施形態では、論理ページと同じ容量の領域に分割して、バッファ9上の領域を使用している。以下、論理ページと同じ容量に分割された領域を「バッファページ」と言い、バッファページに付けられた通し番号をバッファページ番号(BPN)と言う。
図10は、本実施形態のバッファ9(図10(a))及びバッファ9上の領域を管理するためのバッファ管理テーブル(図10(b))を示している。バッファ9はBPN#0〜#31のバッファページで構成され、BPN#0〜#15のバッファページは書き込み用のバッファページに、BPN#16〜#31のバッファページは読み出し用のバッファページに割り当てられている。つまり、BPN#0〜#15のバッファページには、ホストシステム4から与えられたデータが格納され、BPN#16〜#31のバッファページには、フラッシュメモリ2から読み出されたデータが格納される。それぞれのバッファページに格納されているデータに対応する論理ページは、バッファ管理テーブルで管理されている。つまり、バッファページに格納されるデータは、バッファ管理テーブルに基づいて論理ページ単位で管理されている。
このバッファ管理テーブルには、それぞれのバッファページに格納されているデータに対応する論理ページを示す情報(例えば、論理ページのLPN及びその論理ページが属する論理ブロックのLBNを示す情報)が書き込まれている。言い換えれば、それぞれのバッファページに割り当てられている論理ページを示す情報が書き込まれている。例えば、図10(b)のバッファ管理テーブルには、BPN#0のバッファページに、LBN#0の論理ブロックに属するLPN#4の論理ページが割り当てられていることが示されている。更に、BPN#1のバッファページには、LBN#2の論理ブロックに属するLPN#0の論理ページが割り当てられ、BPN#2のバッファページには、LBN#0の論理ブロックに属するLPN#5の論理ページが割り当てられていることが示されている。尚、BPN#4及びBPN7のバッファページには、いずれの論理ページも割り当てられておらず、空き領域になっている。
ホストシステム4から与えられるデータをバッファ9に格納するときには、そのデータに対応する論理ページが割り当てられているバッファページの有無が判断される。そのデータに対応する論理ページが割り当てられているバッファページが有る場合には、そのバッファページにホストシステム4から与えられるデータが格納される。従って、ホストシステム4から与えられるデータと同じ論理ページに対応する旧データ(更新前のデータ)がバッファページに格納されている場合に、旧データに対してホストシステム4から与えられるデータが上書きされる。
ホストシステム4から与えられるデータに対応する論理ページが割り当てられているバッファページが無い場合には、空き領域になっているバッファページ(以下、空き領域になっているバッファページを「空きバッファページ」と言う)に、そのデータに対応する論理ページが新たに割り当てられる。そして、そのデータに対応する論理ページが新たに割り当てられたバッファページに、そのデータが書き込まれる。また、新たに割り当てられた論理ページが属する論理ブロックのLBN及びその論理ページのLPNを示す情報が、バッファ管理テーブル上の、その論理ページが割り当てられた空きバッファページに対応する箇所に書き込まれる。
メモリコントローラ3は、それぞれのバッファページの優先順位を管理している。この優先順位管理では、書き込み用のバッファページ(BPN#0〜#15のバッファページ)の優先順位と、読み出し用のバッファページ(BPN#16〜#31のバッファページ)の優先順位とが別々に管理されている。書き込み用のバッファページは、バッファページにデータが書き込まれたときに、そのバッファページの優先順位が最上位になるように、優先順位が管理されている。つまり、この優先順位管理では、データが書き込まれた時点が現在時刻に近い方から遠い方に向かって、優先順位が順次低くなっていく。従って、現在時刻から最も近い時点にデータが書き込まれたバッファページの優先順位が最上位になり、現在時刻から最も遠い時点にデータが書き込まれたバッファページの優先順位が最下位になる。読み出し用のバッファページは、バッファページに格納されているデータがホストシステム4から読み出されたときに(バッファページに格納されているデータがホストシステム4に供給されたときに)、そのバッファページの優先順位が最上位になるように、優先順位が管理されている。つまり、この優先順位管理では、データが読み出された時点が現在時刻に近い方から遠い方に向かって、優先順位が順次低くなっていく。従って、現在時刻から最も近い時点にデータが読み出されたバッファページの優先順位が最上位になり、現在時刻から最も遠い時点にデータが読み出されたバッファページの優先順位が最下位になる。
本実施形態における書き込み用のバッファページの管理では、常に所定個数の空きバッファページが存在するようにバッファページの管理が行われている。従って、空きバッファページに論理ページが新たに割り当てられ、空きバッファページの個数が減少するときは、減少する個数と同じ個数のバッファページを新たな空きバッファページにするために、バッファページからフラッシュメモリ2へのデータの書き込みが行われる。このデータ書き込みでは、優先順位が低いバッファページの方から順番に、バッファページからフラッシュメモリ2へのデータの書き込みが行われる。例えば、2個のバッファページを新たな空きバッファページにする場合には、優先順位が下位側から1番目と2番目のバッファページに格納されているデータがフラッシュメモリ2に書き込まれ、これらのバッファページが新たな空きバッファページになる。また、バッファ管理テーブル上の新たに空きバッファページになったバッファページに対応する箇所には、対応する論理ページが存在しないことを示す情報が書き込まれる。
このような書き込み用のバッファページの管理が行われているため、通常の動作状態においては、新たな空きバッファページを確保するときにだけ、書き込み用のバッファページからフラッシュメモリ2へのデータの書き込みが行われる。従って、頻繁に書き換えられる論理ページに割り当てられているバッファページ(頻繁に書き換えられる論理ページに対応するデータが格納されているバッファページ)については、優先順位は常に上位側にあるため、通常の動作状態においては、バッファページ上でデータの書き換えが行われ、バッファページに格納されているデータをフラッシュメモリ2に退避する必要が生じたときにだけ、バッファページからフラッシュメモリ2へのデータの書き込みが行われる。例えば、ホストシステム4がシャットダウンされるときには、書き込み用のバッファページに格納されているデータがフラッシュメモリ2に書き込まれる。
本実施形態における読み出し用のバッファページの管理では、優先順位が低いバッファページの方から順番に、格納されているデータの置き換えが行われる。尚、空きバッファページが存在する場合には、その空きバッファページにフラッシュメモリ2から読み出されたデータが保存されるため、空きバッファページが存在しないときの動作について説明する。
ホストシステム4から読み出しを指示するアクセス指示が与えられた場合、メモリコントローラ3は、そのアクセス指示で指定されたアクセス対象の領域が属する論理ページに対応するデータが、書き込み用のバッファページ又は読み出し用のバッファページに格納されているか否かを、バッファ管理テーブルに基づいて判断する。アクセス対象の領域が属する論理ページに対応するデータが、いずれかのバッファページに格納されている場合には、そのバッファページに格納されているデータがホストシステム4に供給される。尚、アクセス対象の領域が属する論理ページに対応するデータが、書き込み用のバッファページと読み出し用のバッファページの双方に格納されている場合は、書き込み用のバッファページに格納されているデータが優先される。
アクセス対象の領域が属する論理ページに対応するデータが、いずれのバッファページにも格納されていない場合には、その論理ページに対応するデータがフラッシュメモリ2から読み出され、優先順位が最下位の読み出し用のバッファページに格納される。そして、その読み出し用のバッファページに格納されたデータがホストシステム4に供給される。また、その読み出し用のバッファページに格納されたデータに対応する論理ページが属する論理ブロックのLBN及びその論理ページのLPNを示す情報が、バッファ管理テーブル上の、その読み出し用のバッファページに対応する箇所に書き込まれる。尚、その読み出し用のバッファページに格納されたデータがホストシステム4に供給されることにより、その読み出し用のバッファページの優先順位が最上位に変更される。
例えば、ホストシステム4から与えられた読み出しを指示するアクセス指示で指定されたアクセス対象の領域が属する論理ページが、LBN#3の論理ブロックに属するLPN#7の論理ページであったときに、その論理ページ対応するデータが、いずれのバッファページにも格納されていない場合には、その論理ページに対応するデータがフラッシュメモリ2から読み出され、優先順位が最下位の読み出し用のバッファページに格納される。このとき、優先順位が最下位の読み出し用のバッファページがBPN#20のバッファページであった場合には、BPN#20のバッファページに、LBN#3の論理ブロックに属するLPN#7の論理ページに対応するデータが格納される。また、BPN#20のバッファページに、LBN#3の論理ブロックに属するLPN#7の論理ページに対応するデータが格納されることにより、バッファ管理テーブル上の、BPN#20のバッファページに対応する箇所に、その論理ページが属する論理ブロックのLBNである#3と、その論理ページのLPNである#7を示す情報が書き込まれる。尚、BPN#20のバッファページに格納されているデータがホストシステム4に供給されることにより、BPN#20のバッファページの優先順位が最上位に変更される。
次に、ホストシステム4から供給されるデータをバッファ9に格納する動作、及びバッファ9に格納されているデータをフラッシュメモリ2に書き込む動作について具体的に説明する。例えば、ホストシステム4から書き込みを指示するアクセス指示が与えられ、そのアクセス指示で指定されたLBAの範囲が、LBN#1の論理ブロック内のLPN#8〜#11に対応する場合について説明する。つまり、LBN#1の論理ブロック内のLPN#8〜#11の論理ページに対応するデータがホストシステム4から供給され、そのデータが書き込み用のバッファページに格納される場合について説明する。尚、以下の説明では、2個の空きバッファページが常に存在するように書き込み用のバッファページの管理が行われているものとして説明する。
書き込みを指示するアクセス指示が与えられたときに、メモリコントローラ3は、LBN#1の論理ブロック内のLPN#8〜#11の論理ページに割り当てられている書き込み用のバッファページが存在するか否かを判断する。図10(b)に示したように、LBN#1の論理ブロック内のLPN#8の論理ページがBPN#3のバッファページに、LBN#1の論理ブロック内のLPN#9の論理ページがBPN#5のバッファページに割り当てられている場合、LPN#8の論理ページに対応するデータはBPN#3のバッファページに、LPN#9の論理ページに対応するデータはBPN#5のバッファページに格納される。また、LBN#1の論理ブロック内のLPN#10の論理ページとLPN#11の論理ページに割り当てられている書き込み用のバッファページが存在しない場合、これらの論理ページに対応するデータは、空きバッファページであるBPN#4のバッファページとBPN#7のバッファページに格納される。つまり、LBN#1の論理ブロック内のLPN#10の論理ページにBPN#4のバッファページが割り当てられ、LBN#1の論理ブロック内のLPN#11の論理ページにBPN#7のバッファページが割り当てられる。
本実施形態のメモリコントローラ3は、ホストシステム4から供給されるデータの格納先のバッファページを管理するために、格納先管理テーブルを備えている。図11(a)は、この格納先管理テーブルの一例であり、格納先のバッファページを示すBPNを設定するための16個のエントリーを備えている。これらのエントリーに格納先のバッファページを示すBPNが順次設定され、ポインタによって指定されているエントリーに設定されているBPNに基づいて、ホストシステム4から供給されるデータの格納先のバッファページが選択される。
LBN#1の論理ブロック内のLPN#8〜#11の論理ページに対応するデータは、ホストシステム4からLPNの順番で供給される。従って、ホストシステム4から最初に供給される1論理ページ分のデータ(LPN#8の論理ページに対応するデータ)はBPN#3のバッファページに、2番目に供給される1論理ページ分のデータ(LPN#9の論理ページに対応するデータ)はBPN#5のバッファページに、3番目に供給される1論理ページ分のデータ(LPN#10の論理ページに対応するデータ)はBPN#4のバッファページに、4番目に供給される1論理ページ分のデータ(LPN#11の論理ページに対応するデータ)はBPN#7のバッファページに格納されるように格納先管理テーブルの設定が行われる。つまり、図11(a)に示したように、#4のエントリーにBPNとして#3が設定され、#5のエントリーにBPNとして#5が設定され、#6のエントリーにBPNとして#4が設定され、#7のエントリーにBPNとして#7が設定される。このようにエントリーに格納先のバッファページを示すBPNを設定するときには、ポインタにより指定されているエントリーから順番にBPNの設定が行われる。従って、図11(a)に示したように、ポインタにエントリーを指定する番号として#4が設定される場合には、#4のエントリーからBPNの設定が行われる。尚、ポインタに設定されている番号は、1論理ページ分のデータがバッファページに格納される毎に次の番号に進められる。
本実施形態のメモリコントローラ3は、ホストシステム4から供給されるデータをバッファ9に格納する処理と、バッファ9に格納されているデータをフラッシュメモリ2に書き込む処理とを並行して実行する。つまり、バッファ9へのデータ入力(ホストシステム4から供給されるデータのデータ入力)とバッファ9からのデータ出力(フラッシュメモリ2に供給するデータのデータ出力)とが時分割で実行される。ここでは、空きバッファページであったBPN#4のバッファページとBPN#7のバッファページにホストシステム4から供給されるデータ格納されるため、新たに2個の空きバッファページを確保しなければならない。そこで、優先順位が最下位のバッファページ(書き込み用のバッファページ)と下位側から2番目のバッファページ(書き込み用のバッファページ)に格納されているデータをフラッシュメモリ2に書き込む処理が実行される。
優先順位が最下位のバッファページがBPN#6のバッファページで、下位側から2番目のバッファページがBPN#9のバッファページであった場合には、BPN#6のバッファページとBPN#9のバッファページを空きバッファページにするために、BPN#6のバッファページとBPN#9のバッファページに格納されているデータをフラッシュメモリ2に書き込む処理が実行される。尚、バッファページに、そのバッファページに対応する論理ページ内の全ての論理セクタ領域に対応するデータが格納されている場合には、バッファページに格納されているデータが、そのままフラッシュメモリ2に書き込まれる。一方、論理ページ内の一部の論理セクタ領域に対応するデータが、そのバッファページに格納されていないときには、その一部の論理セクタ領域に対応するデータがフラッシュメモリ2から読み出され、読み出されたデータにより、そのバッファページに格納されていないデータが補充される。但し、その一部の論理セクタ領域に対応するデータがフラッシュメモリ2にも格納されていない場合には、バッファページに格納されていないデータの補充は行われない。このように一部の論理セクタ領域に対応するデータが、フラッシュメモリ2から読み出されたデータにより補充される場合には、補充が行われた後にバッファページに格納されているデータが、フラッシュメモリ2に書き込まれる。
本実施形態のメモリコントローラ3は、書き込み処理の際に、フラッシュメモリ2に供給するデータの格納元のバッファページを管理するために、格納元管理テーブルを備えている。図11(b)は、この格納元管理テーブルの一例であり、格納元のバッファページを示すBPNを設定するための16個のエントリーを備えている。これらのエントリーに格納元のバッファページを示すBPNが順次設定され、ポインタによって指定されているエントリーに設定されているBPNに基づいて、フラッシュメモリ2に供給されるデータの格納元のバッファページが選択される。
BPN#6のバッファページとBPN#9のバッファページに格納されているデータをフラッシュメモリ2に書き込む処理を実行する場合には、図11(b)に示したように、#1のエントリーにBPNとして#6が設定され、#2のエントリーにBPNとして#9が設定される。格納元のバッファページを示すBPNを設定するときにも、ポインタにより指定されているエントリーから順番にBPNの設定が行われる。従って、図11(b)に示したように、ポインタにエントリーを指定する番号として#1が設定される場合には、#1のエントリーからBPNの設定が行われる。尚、ポインタに設定されている番号は、1論理ページ分のデータがバッファページからフラッシュメモリ2に供給される毎に次の番号に進められる。
バッファ9に格納されているデータがフラッシュメモリ2に書き込まれ、ホストシステム4から供給されるデータがバッファ9に格納されることにより、いずれかのバッファページについて、論理ページとの対応関係が変化した場合には、バッファ管理テーブルの更新が行われる。ここでは、空きバッファページであったBPN#4のバッファページとBPN#7のバッファページが、LBN#1の論理ブロック内のLPN#10の論理ページとLPN#11の論理ページに割り当てられる。また、BPN#6のバッファページとBPN#9のバッファページが空きバッファページになる。従って、この変更に対応したバッファ管理テーブルの更新が行われる。
このバッファ管理テーブルの更新では、図12に示したように、BPN#4のバッファページに対応する個所に書き込まれている空きバッファページを示す情報(NA)が、LBN#1の論理ブロック内のLPN#10の論理ページ示す情報に変更される。BPN#7のバッファページに対応する個所に書き込まれている空きバッファページを示す情報(NA)が、LBN#1の論理ブロック内のLPN#11の論理ページ示す情報に変更される。BPN#6のバッファページ及びBPN#9のバッファページに対応する個所は、空きバッファページを示す情報(NA)に変更される。
次に、それぞれ仮想ブロックを構成する物理ブロックを設定する方法について説明する。本実施形態では、まず、互いに異なるフラッシュメモリ2a〜2bに属するPBAが同一の8個の物理ブロックで暫定的に仮想ブロックを構成する。つまり、フラッシュメモリ2a〜2bのいずれかに属するPBA#0の物理ブロック8個でVBN#0の仮想ブロックが構成され、PBA#1の物理ブロック8個でVBN#1の仮想ブロックが構成され、以下同様にしてフラッシュメモリ2a〜2b内の先頭から末尾までの物理ブロックで仮想ブロックが構成される。以下、このようにして構成された暫定的な仮想ブロックを「暫定仮想ブロック」と言う。
このようにして構成された暫定仮想ブロックについて、それぞれの暫定仮想ブロックを構成する8個の物理ブロックの中に不良ブロックが含まれているか否かが判断され、8個の物理ブロックの中に1個以上の不良ブロックが含まれている暫定仮想ブロックが抽出される。この抽出処理で抽出されなかった暫定仮想ブロックについては、実際に使用可能な仮想ブロックとして確定される。ここで確定された仮想ブロックについては、PBAが同一の8個の物理ブロックで構成されている。
上記の抽出処理で抽出された暫定仮想ブロックについては、それぞれの暫定仮想ブロックを構成する8個の物理ブロックの中に少なくとも1個の不良ブロックが含まれている。これらの暫定仮想ブロックのうち、一部の暫定仮想ブロックを実際に使用可能な仮想ブロックにするため、暫定仮想ブロック間で不良ブロックと良品ブロックとを交換する暫定仮想ブロックの組み換えが行われる。この暫定仮想ブロックの組み換えを、図13を参照して説明する。図13は、上記の抽出処理で抽出された暫定仮想ブロックを示しており、不良ブロックに該当する物理ブロックのPBNは鉤括弧(「」)で括られている。この例では、VBN#7の暫定仮想ブロックに属するフラッシュメモリ2c内のPBA#7の物理ブロック、VBN#15の暫定仮想ブロックに属するフラッシュメモリ2f内のPBA#15の物理ブロック、VBN#101の暫定仮想ブロックに属するフラッシュメモリ2b内のPBA#101の物理ブロック等が不良ブロックとして示されている。
本実施形態では、VBNが小さい暫定仮想ブロックに属する不良ブロックから優先的に良品ブロックと交換される。一方、この不良ブロックと良品ブロックとの交換で、良品ブロックを提供する側になる暫定仮想ブロックは、VBNが大きい側の暫定仮想ブロックが優先的に選択される。また、この不良ブロックと良品ブロックとの交換は、同一のフラッシュメモリチップ内で行われる。つまり、ラッシュメモリ2a内の不良ブロックはラッシュメモリ2a内の良品ブロックと交換され、ラッシュメモリ2b内の不良ブロックはラッシュメモリ2b内の良品ブロックと交換され、以下同様にして、ラッシュメモリ2h内の不良ブロックはラッシュメモリ2h内の良品ブロックと交換される。
図13に示した例では、VBN#7の暫定仮想ブロックに属するフラッシュメモリ2c内のPBA#7の物理ブロック(不良ブロック)が、VBN#1016の暫定仮想ブロックに属するフラッシュメモリ2c内のPBA#1016の物理ブロック(良品ブロック)と交換される。この交換により、VBN#7の暫定仮想ブロックが実際に使用可能な仮想ブロックになる。次に、VBN#15の暫定仮想ブロックに属するフラッシュメモリ2f内のPBA#15の物理ブロック(不良ブロック)が、VBN#1016の暫定仮想ブロックに属するフラッシュメモリ2f内のPBA#1016の物理ブロック(良品ブロック)と交換される。この交換により、VBN#15の暫定仮想ブロックが実際に使用可能な仮想ブロックになる。この不良ブロックと良品ブロックとの交換は、交換を行っても暫定仮想ブロックを実際に使用可能な仮想ブロックにすることができなくなるまで続けられる。そして、この不良ブロックと良品ブロックとの交換により、良品ブロックの提供を受けた暫定仮想ブロック(その暫定仮想ブロックに属していた不良ブロックが他の暫定仮想ブロックに属していた不良ブロックと交換されることにより、実際に使用することができるようになった暫定仮想ブロック)が、実際に使用可能な仮想ブロックとして確定される。
実際に使用可能な仮想ブロックとして確定されなかった暫定仮想ブロックについては、使用しない仮想ブロック(以下、「保留仮想ブロック」と言う)として管理される。この保留仮想ブロックは、図14に示したような保留仮想ブロック管理テーブルで管理(登録)されている。この保留仮想ブロック管理テーブルには、保留仮想ブロックとして管理される仮想ブロックのVBNを示す情報と、それぞれの保留仮想ブロックに属する良品ブロックのPBAを示す情報が記載されている。図14に示した保留仮想ブロック管理テーブルには、#690、#740、#773、#862、#900、#997及び#773の番号を示す情報が、保留仮想ブロックのVBNを示す情報として記載されている。従って、この保留仮想ブロック管理テーブルを参照することにより、VBN#690、#740、#773、#862、#900、#997及び#773の仮想ブロックが保留仮想ブロックであることが分かる。また、それぞれの保留仮想ブロックに属する良品ブロックのPBAを示す情報が、その良品ブロックが属する保留仮想ブロックに関連付けて記載されている。尚、それぞれの保留仮想ブロックに属する不良ブロック(その保留仮想ブロックに初めから属していた不良ブロックと、不良ブロックと良品ブロックとの交換により、その保留仮想ブロックに属するようになった不良ブロックを含む)については、不良ブロックであることを示す情報(DB)が記載される。
また、保留仮想ブロック管理テーブルに登録されている保留仮想ブロックに属する良品ブロックの個数をフラッシュメモリチップ毎(フラッシュメモリ2a〜2hについて)に集計した集計値がメモリコントローラ3によって保持される。例えば、図14に示したような7個の保留仮想ブロックが保留仮想ブロック管理テーブルに登録されているときに、良品ブロックの個数をフラッシュメモリチップ毎に集計した場合について説明する。
フラッシュメモリ2aについては、VBN#690、#740及び#773の保留仮想ブロックに属する物理ブロックが良品ブロックなので、フラッシュメモリ2aに関する良品ブロックの集計値は3個になる。フラッシュメモリ2bについては、VBN#690、#740及び#773及び#900の保留仮想ブロックに属する物理ブロックが良品ブロックなので、フラッシュメモリ2bに関する良品ブロックの集計値は4個になる。以下同様に、フラッシュメモリ2cに関する良品ブロックの集計値は4個になり、フラッシュメモリ2dに関する良品ブロックの集計値は5個になり、フラッシュメモリ2eに関する良品ブロックの集計値は0個になり、フラッシュメモリ2fに関する良品ブロックの集計値は2個になり、フラッシュメモリ2gに関する良品ブロックの集計値は4個になり、フラッシュメモリ2hに関する良品ブロックの集計値は3個になる。ここで、フラッシュメモリチップ毎の良品ブロックの集計値の最小値が0個でなければ、保留仮想ブロック間で不良ブロックと良品ブロックとの交換を行うことにより、実際に使用可能な仮想ブロックを再構成することができる。
また、使用されていた仮想ブロックに属するいずれかの物理ブロックが不良ブロックになった場合には、その仮想ブロックが保留仮想ブロックとして、保留仮想ブロック管理テーブルに追加登録される。保留仮想ブロック管理テーブルに保留仮想ブロックが追加登録されたときには、フラッシュメモリチップ毎の良品ブロックの集計値が更新される。この更新の結果、フラッシュメモリチップ毎の良品ブロックの集計値の最小値が1個以上になった場合、この例では、フラッシュメモリ2eに関する良品ブロックの集計値が1個以上になった場合、保留仮想ブロック間で不良ブロックと良品ブロックとの交換を行うことにより、実際に使用可能な仮想ブロックを再構成することができる。
保留仮想ブロック間で不良ブロックと良品ブロックとの交換を行うことにより、実際に使用可能な仮想ブロックを再構成した場合には、その再構成された仮想ブロックの登録(保留仮想ブロック管理テーブルへの登録)が取消される。この登録の取消では、登録が取消された仮想ブロックに関する情報が、保留仮想ブロック管理テーブルから削除される。
尚、仮想ブロックの再構成は、保留仮想ブロック管理テーブルに登録されている保留仮想ブロックに関するフラッシュメモリチップ毎の良品ブロックの集計値のうち、一番小さい集計値が1個以上になったときに、逐次行っても良いが、その集計値に対して閾値を設定し、その集計値が閾値以上になったときに仮想ブロックの再構成を行うようにしてもよい。
ここで、保留仮想ブロック管理テーブルに登録されている保留仮想ブロックに関するフラッシュメモリチップ毎の良品ブロックの集計値のうち、一番小さい集計値が閾値以上になったときには、それぞれのフラッシュメモリチップ毎の良品ブロックの集計値は、いずれも閾値以上になる。従って、フラッシュメモリ2aの集計値、フラッシュメモリ2bの集計値、フラッシュメモリ2cの集計値、フラッシュメモリ2dの集計値、フラッシュメモリ2eの集計値、フラッシュメモリ2fの集計値、フラッシュメモリ2gの集計値及びフラッシュメモリ2hの集計値のうちで一番小さい集計値が閾値以上になったか否かを判断することと、これの集計値が全て閾値以上になったか否かを判断することは、実質的に同じことを判断しているこことになる。例えば、閾値が“5”であり、フラッシュメモリ2eの集計値が一番小さい場合に、フラッシュメモリ2eの集計値が5以上になったときには、他の集計値はフラッシュメモリ2eの集計値以上なので、当然、他の集計値も5以上になっている。
例えば、閾値を“5”とした場合の実際の処理では、メモリコントローラ3は、フラッシュメモリ2aの集計値からフラッシュメモリ2hの集計値までの8個の集計値から一番小さい集計値を見つけ、その集計値が閾値である“5”
以上であるか否かを判断して仮想ブロックの再構成を実行するか否かを決定してもよいが、フラッシュメモリ2aの集計値からフラッシュメモリ2hの集計値までの8個の集計値を、閾値である“5”と順次比較していき、8個の集計値が全て5以上であったときに仮想ブロックの再構成を実行してもよい。
以上であるか否かを判断して仮想ブロックの再構成を実行するか否かを決定してもよいが、フラッシュメモリ2aの集計値からフラッシュメモリ2hの集計値までの8個の集計値を、閾値である“5”と順次比較していき、8個の集計値が全て5以上であったときに仮想ブロックの再構成を実行してもよい。
次に、バッファ9の構成について詳細に説明する。本実施形態では、論理ページの容量を仮想ページに含まれるユーザー領域と同じ容量とし、論理ページ単位でバッファ9に格納されるデータを管理している。つまり、本実施形態では、1個の仮想ページに含まれるユーザー領域の容量が64セクタであるため、バッファ9が64セクタの領域が含まれるバッファページに分割され、それぞれのバッファページに格納されるデータに対応する論理ページが管理されている。
図15は、1個のバッファページに含まれる64セクタの領域を示している。この64セクタの領域には、論理ページに含まれるSN#0〜#63の論理セクタ領域が、SNの順番で割り当てられている。つまり、バッファページ内の先頭領域から末尾領域に向かって、SN#0〜#63の論理セクタ領域が、SNの順番で割り当てられている。尚、それぞれ論理ページは、ホストシステム4側で管理されているアドレス空間のLBAが連続する64セクタの領域が対応している。従って、LBA#n〜#(n+63)が対応している論理ページの場合、この論理ページ内のSN#0の論理セクタ領域はLBA#nに対応し、SN#1の論理セクタ領域はLBA#(n+1)に対応し、以下同様にSN#63の論理セクタ領域はLBA#(n+63)に対応する。
図16は、BPN#0〜#15のバッファページに格納されているデータを示している。メモリコントローラ3は、論理ページが割り当てられたバッファページ内の領域にホストシステム4から与えられた書き込みデータ(WD)が格納されているか否かをセクタ単位で管理している。例えば、図16に示したBPN#0のバッファページの場合、SN#0〜#3の論理セクタ領域、SN#12〜#15の論理セクタ領域、SN#44〜#47の論理セクタ領域及びSN#60〜#63の論理セクタ領域に対応するバッファページ内の領域には書き込みデータ(WD)が格納されていない。この書き込みデータ(WD)が格納されているか否かの管理については、例えば、それぞれのビットが64セクタの領域のいずれかに対応する64ビットの情報を保持し、それぞれのビットの論理値(“0”又は“1”)で書き込みデータ(WD)が格納されているか否かを示すようにすればよい。
また、フラッシュメモリ2に対するデータの書き込みが仮想ページ単位で行われるため、フラッシュメモリ2に格納されているデータの更新は、論理ページ単位で行われる。つまり、論理ページ単位で旧データが新データに置き換えられる。従って、バッファページからフラッシュメモリ2内の仮想ページへのデータの書き込みを行うときには、バッファページ内の書き込みデータ(WD)が格納されていない領域に、更新されないデータが補充される。そして、このデータ補充が完了した後に、バッファページから仮想ページへのデータの書き込みが実行される。
例えば、BPN#3のバッファページに格納されている書き込みデータ(WD)を仮想ページに書き込む場合について説明する。図16に示した例では、BPN#3のバッファページ内のSN#0〜#3の論理セクタ領域及びSN#60〜#63の論理セクタ領域に対応する領域には書き込みデータ(WD)が格納されていない。従って、BPN#3のバッファページに割り当てられている論理ページに対応するデータがフラッシュメモリ2から読み出され、この読み出されたデータのうち、SN#0〜#3の論理セクタ領域に対応するデータ及びSN#60〜#63の論理セクタ領域に対応する読み出しデータ(RD)が、それぞれの読み出しデータ(RD)に対応するバッファページ内の領域に格納される。そして、図17に示したように、BPN#3のバッファページ内のSN#0〜#3の論理セクタ領域及びSN#60〜#63の論理セクタ領域に対応する領域に、読み出しデータ(RD)が格納された後に、BPN#3のバッファページに格納されている書き込みデータ(WD)及び読み出しデータ(RD)がフラッシュメモリ2に書き込まれる。
次に、図18を参照して、バッファページ内の書き込みデータ(WD)が格納されていない領域に、更新されないデータを効率良く補充する方法について説明する。ホストシステム4から書き込みを指示するアクセス指示が与えられたときに、そのアクセス指示で指定されたアクセス対象の領域が属する論理ページが割り当てられているバッファページが無いとき(そのアクセス指示で指定されたアクセス対象のLBAに対応する論理ページに割り当てられているバッファページが無いとき)、空きバッファページに対してその論理ページが新たに割り当てられる。ここでは、アクセス対象の領域が属する論理ページ(論理ページA)が、空きバッファページであるBPN#4のバッファページに割り当てられる。
ホストシステム4から与えられる論理ページAに対応する書き込みデータ(WD)は、図18(a)に示したように、BPN#4のバッファページに格納される。この処理に並行して、フラッシュメモリ2に格納されている論理ページAに対応するデータが読み出され、この読み出しデータ(RD)は、図18(b)に示したように、空きバッファページであるBPN#7のバッファページに格納される。つまり、論理ページAに対応する新データである書き込みデータ(WD)は、BPN#4のバッファページに格納され、論理ページAに対応する旧データである読み出しデータ(RD)は、BPN#7のバッファページに格納される。
図18(a)に示した例では、論理ページAに対応する書き込みデータ(WD)は、SN#12〜#47の論理セクタ領域に対応する領域には格納されているが、SN#0〜#11の論理セクタ領域及びSN#48〜#63の論理セクタ領域に対応する領域には格納されていない。このため、SN#0〜#11の論理セクタ領域及びSN#48〜#63の論理セクタ領域に対応する領域には、論理ページAに対応する旧データである読み出しデータ(RD)が格納される。この論理ページAに対応する旧データである読み出しデータ(RD)は、BPN#7のバッファページに格納されているので、BPN#7のバッファページからBPN#4のバッファページへのデータ転送により、SN#0〜#11の論理セクタ領域及びSN#48〜#63の論理セクタ領域に対応する領域に、論理ページAに対応する旧データである読み出しデータ(RD)が格納される。つまり、このデータ転送では、図18(c)に示したように、BPN#7のバッファページのSN#0〜#11の論理セクタ領域及びSN#48〜#63の論理セクタ領域に対応する領域に格納されている読み出しデータ(RD)が、BPN#4のバッファページのSN#0〜#11の論理セクタ領域及びSN#48〜#63の論理セクタ領域に対応する領域に転送される。
尚、旧データである読み出しデータ(RD)のデータ転送については、アクセス指示で指定されるアクセス対象の領域が属する論理ページが変わった後に行うことが好ましい。つまり、論理ページAに対応するデータの書き込みを指示するアクセス指示が与えられている間は、このデータ転送を行わずに、論理ページA以外の論理ページに対応するデータの書き込みを指示するアクセス指示が与えられた後に、このデータ転送を開始するようにすることが好ましい。また、上記の説明では、読み出しデータ(RD)の格納先のバッファページから、書き込みデータ(WD)の格納先のバッファページにデータ転送を行ったが、書き込みデータ(WD)の格納先のバッファページから、読み出しデータ(RD)の格納先のバッファページにデータ転送を行った方が、データ転送するデータの容量が小さい場合には、書き込みデータ(WD)の格納先のバッファページから、読み出しデータ(RD)の格納先のバッファページにデータ転送を行うようにしてもよい。例えば、図18(a)に示した例で、BPN#4のバッファページに格納された書き込みデータ(WD)の容量が32セクタ未満の場合には、BPN#4のバッファページからBPN#7のバッファページにデータ転送(書き込みデータ(WD)を転送するデータ転送)を行うようにしてもよい。このようにBPN#4のバッファページからBPN#7のバッファページにデータ転送が行われた場合には、データ転送が完了した後に、論理ページAをBPN#7のバッファページに割り当てる割り当ての変更が行われる。
このように、書き込みデータ(WD)の格納先のバッファページと読み出しデータ(RD)の格納先のバッファページに同じ論理ページに対応するデータを格納する処理を並行して行い、その後、書き込みデータ(WD)の格納先のバッファページと読み出しデータ(RD)の格納先のバッファページとの間でデータ転送を行うことにより、バッファページ内の書き込みデータ(WD)が格納されていない領域に、更新されないデータを効率良く補充することができる。言い換えれば、このデータ転送により、旧データの1部が新データで置き換えられた更新データが効率良く作成される。更に、書き込みデータ(WD)の格納先のバッファページに格納されたデータのセクタ数(容量)をカウントし、そのセクタ数がバッファページに含まれる領域のセクタ数(容量)の1/2以上であるか否かを判断し、1/2以上である場合には、読み出しデータ(RD)の格納先のバッファページから書き込みデータ(WD)の格納先のバッファページへのデータ転送を行い、1/2未満である場合には、書き込みデータ(WD)の格納先のバッファページから読み出しデータ(RD)の格納先のバッファページへのデータ転送を行うことにより、更に効率が向上する。
以上、本発明の実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。例えば、仮想ブロック管理テーブル、バッファ管理テーブル、格納先管理テーブル、格納元管理テーブル及び保留仮想ブロック管理テーブルの構成については、それぞれのテーブルで管理している情報を管理することができる範囲で適宜変更することができる。また、仮想ブロックを構成する物理ブロックの個数や、論理ページ内の論理セクタ領域と仮想ページを構成する物理ページ内のセクタ領域との対応関係は適宜設定することができる。また、保留仮想ブロック管理テーブルに登録されている保留仮想ブロックについて、仮想ブロックの再構成を実行するときの条件についても適宜設定することができる。
1…フラッシュメモリシステム、2…フラッシュメモリ、3…メモリコントローラ、6…マイクロプロセッサ
Claims (11)
- ホストシステムから与えられる指示情報に基づいて、物理ブロック単位で記憶データの消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
互いに異なるフラッシュメモリに属する複数個の物理ブロックを仮想的に結合した仮想ブロックを形成する仮想ブロック形成手段と、
前記仮想ブロック形成手段により形成されたそれぞれの仮想ブロックに含まれる物理ブロックを管理する第1の仮想ブロック管理手段と、
ホストシステムから与えられるセクタ単位のアドレスが割り当てられている論理セクタ領域を複数個集めた論理ブロックと前記仮想ブロックとの対応関係を管理するアドレス管理手段とを備え、
前記仮想ブロック形成手段は、互いに異なるフラッシュメモリに属する同じアドレスの物理ブロックを複数個結合させた暫定仮想ブロックを複数個形成する暫定仮想ブロック形成手段と、前記暫定仮想ブロック形成手段により形成された複数個の前記暫定仮想ブロックから不良の物理ブロックが含まれる前記暫定仮想ブロックを抽出する抽出手段と、前記抽出手段により抽出された複数個の前記暫定仮想ブロック間で不良の物理ブロックと良品の物理ブロックとを交換することにより、不良の物理ブロックが含まれていない第2の暫定仮想ブロックを形成する第2の暫定仮想ブロック形成手段と、前記抽出手段により抽出されなかった前記暫定仮想ブロック及び前記第2の暫定仮想ブロック形成手段により形成された前記第2の暫定仮想ブロックを前記第1の仮想ブロック管理手段によって管理される前記仮想ブロックとして設定する設定手段とを有することを特徴とするメモリコントローラ。 - 前記第1の仮想ブロック管理手段は、前記仮想ブロックに含まれる物理ブロックを示す情報である仮想ブロック情報が保持されている仮想ブロック管理テーブルに基づいて、前記仮想ブロックに含まれる物理ブロックを管理し、
前記仮想ブロック管理テーブルには、前記第2の暫定仮想ブロックに関する前記仮想ブロック情報だけが保持されていることを特徴とする請求項1に記載のメモリコントローラ。 - 前記仮想ブロックに含まれるいずれか1個以上の物理ブロックが不良化したときに、不良化した物理ブロックが属する前記仮想ブロックの使用を禁止する第2の仮想ブロック管理手段と、
第2の仮想ブロック管理手段により使用が禁止された前記仮想ブロックを保留仮想ブロックとして管理する保留仮想ブロック管理手段と、
前記保留仮想ブロック管理手段により管理されている複数個の前記保留仮想ブロック間で、不良化した物理ブロックと良品の物理ブロックとを交換することにより、不良化した物理ブロックが含まれていない前記仮想ブロックを再形成し、再形成された前記仮想ブロックの使用を解禁する第3の仮想ブロック管理手段とを備え、
前記第3の仮想ブロック管理手段により再形成された前記仮想ブロックに関する前記仮想ブロック情報が前記仮想ブロック管理テーブルに追加されることを特徴とする請求項2に記載のメモリコントローラ。 - 前記保留仮想ブロック管理手段は、前記保留仮想ブロックに含まれる良品の物理ブロックの個数をフラッシュメモリ毎に集計した値を集計値として保持することを特徴とする請求項3に記載のメモリコントローラ。
- 前記第3の仮想ブロック管理手段は、フラッシュメモリ毎の前記集計値が全て所定値以上になったときに前記仮想ブロックの再形成を行うことを特徴とする請求項4に記載のメモリコントローラ。
- 請求項1乃至5のいずれか1項に記載のメモリコントローラと、このメモリコントローラにより制御される複数個のフラッシュメモリを備えるフラッシュメモリシステム。
- ホストシステムから与えられる指示情報に基づいて、物理ブロック単位で記憶データの消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
互いに異なるフラッシュメモリに属する複数個の物理ブロックを仮想的に結合した仮想ブロックを形成する仮想ブロック形成ステップと、
前記仮想ブロック形成ステップにより形成されたそれぞれの仮想ブロックに含まれる物理ブロックを管理する第1の仮想ブロック管理ステップと、
ホストシステムから与えられるセクタ単位のアドレスが割り当てられている論理セクタ領域を複数個集めた論理ブロックと前記仮想ブロックとの対応関を管理するアドレス管理ステップとを備え、
前記仮想ブロック形成ステップは、互いに異なるフラッシュメモリに属する同じアドレスの物理ブロックを複数個結合させた暫定仮想ブロックを複数個形成する暫定仮想ブロック形成ステップと、前記暫定仮想ブロック形成ステップにより形成された複数個の前記暫定仮想ブロックから不良の物理ブロックが含まれる前記暫定仮想ブロックを抽出する抽出ステップと、前記抽出ステップにより抽出された複数個の前記暫定仮想ブロック間で不良の物理ブロックと良品の物理ブロックとを交換することにより、不良の物理ブロックが含まれていない第2の暫定仮想ブロックを形成する第2の暫定仮想ブロック形成ステップと、前記抽出ステップにより抽出されなかった前記暫定仮想ブロック及び前記第2の暫定仮想ブロック形成ステップにより形成された前記第2の暫定仮想ブロックを前記第1の仮想ブロック管理ステップによって管理される前記仮想ブロックとして設定する設定ステップとを有することを特徴とするフラッシュメモリの制御方法。 - 前記第1の仮想ブロック管理ステップでは、前記仮想ブロックに含まれる物理ブロックを示す情報である仮想ブロック情報が保持されている仮想ブロック管理テーブルに基づいて前記仮想ブロックに含まれる物理ブロックを管理し、
前記仮想ブロック管理テーブルには、前記第2の暫定仮想ブロックに関する前記仮想ブロック情報だけが保持されていることを特徴とする請求項7に記載のフラッシュメモリの制御方法。 - 前記仮想ブロックに含まれるいずれか1個以上の物理ブロックが不良化したときに、不良化した物理ブロックが属する前記仮想ブロックの使用を禁止する第2の仮想ブロック管理ステップと、
第2の仮想ブロック管理ステップにより使用が禁止された前記仮想ブロックを保留仮想ブロックとして管理する保留仮想ブロック管理ステップと、
前記保留仮想ブロック管理ステップにより管理されている複数個の前記保留仮想ブロック間で、不良化した物理ブロックと良品の物理ブロックとを交換することにより、不良化した物理ブロックが含まれていない前記仮想ブロックを再形成し、再形成された前記仮想ブロックの使用を解禁する第3の仮想ブロック管理ステップとを備え、
前記第3の仮想ブロック管理ステップにより再形成された前記仮想ブロックに関する前記仮想ブロック情報が前記仮想ブロック管理テーブルに追加されることを特徴とする請求項8に記載のフラッシュメモリの制御方法。 - 前記保留仮想ブロック管理ステップでは、前記保留仮想ブロックに含まれる良品の物理ブロックの個数をフラッシュメモリ毎に集計した値を集計値として保持することを特徴とする請求項9に記載のフラッシュメモリの制御方法。
- 前記第3の仮想ブロック管理ステップは、フラッシュメモリ毎の前記集計値が全て所定値以上になったときに前記仮想ブロックの再形成を行うことを特徴とする請求項10に記載のフラッシュメモリの制御方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008260366A JP2010092200A (ja) | 2008-10-07 | 2008-10-07 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
US12/585,911 US8214579B2 (en) | 2008-09-30 | 2009-09-29 | Memory controller, flash memory system with memory controller, and method of controlling flash memory |
US12/574,768 US8239615B2 (en) | 2008-09-30 | 2009-10-07 | Memory controller, flash memory system with memory controller, and method of controlling flash memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008260366A JP2010092200A (ja) | 2008-10-07 | 2008-10-07 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010092200A true JP2010092200A (ja) | 2010-04-22 |
Family
ID=42254858
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008260366A Pending JP2010092200A (ja) | 2008-09-30 | 2008-10-07 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010092200A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016512365A (ja) * | 2013-03-15 | 2016-04-25 | ヴィリデント システムズ インコーポレイテッド | 不揮発性メモリシステムにおける同期ミラーリング |
CN110797071A (zh) * | 2019-10-31 | 2020-02-14 | 西安紫光国芯半导体有限公司 | 一种多子块nand闪存缺陷的修复方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007520842A (ja) * | 2003-12-30 | 2007-07-26 | サンディスク コーポレイション | マルチブロック単位へのブロックの適応決定論的グループ化 |
JP2007241896A (ja) * | 2006-03-10 | 2007-09-20 | Sony Corp | 不揮発性メモリシステムおよび不揮発性メモリの管理方法 |
-
2008
- 2008-10-07 JP JP2008260366A patent/JP2010092200A/ja active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007520842A (ja) * | 2003-12-30 | 2007-07-26 | サンディスク コーポレイション | マルチブロック単位へのブロックの適応決定論的グループ化 |
JP2007241896A (ja) * | 2006-03-10 | 2007-09-20 | Sony Corp | 不揮発性メモリシステムおよび不揮発性メモリの管理方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016512365A (ja) * | 2013-03-15 | 2016-04-25 | ヴィリデント システムズ インコーポレイテッド | 不揮発性メモリシステムにおける同期ミラーリング |
JP2017102964A (ja) * | 2013-03-15 | 2017-06-08 | ヴィリデント システムズ インコーポレイテッド | 不揮発性メモリシステムにおける同期ミラーリング |
CN110797071A (zh) * | 2019-10-31 | 2020-02-14 | 西安紫光国芯半导体有限公司 | 一种多子块nand闪存缺陷的修复方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4632180B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4844639B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
US8332576B2 (en) | Data reading method for flash memory and controller and storage system using the same | |
JP4666080B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
US9639475B2 (en) | Buffer memory management method, memory control circuit unit and memory storage device | |
US8239615B2 (en) | Memory controller, flash memory system with memory controller, and method of controlling flash memory | |
EP2034414A1 (en) | Semiconductor storage device and method of controlling semiconductor storage device | |
US20090222643A1 (en) | Block management method for flash memory and controller and storage sysetm using the same | |
JP4666081B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
TWI423022B (zh) | 記憶體管理方法、記憶體控制器與記憶體儲存裝置 | |
US8074128B2 (en) | Block management and replacement method, flash memory storage system and controller using the same | |
JP4702387B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP5093294B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4737223B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4582232B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4720891B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4636005B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2010092200A (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2012068765A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4840415B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4710918B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4952741B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4952742B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4636046B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP6260395B2 (ja) | メモリコントローラ、メモリシステム及びメモリ制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100728 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100803 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100929 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110329 |