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

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

Info

Publication number
JP4743174B2
JP4743174B2 JP2007172941A JP2007172941A JP4743174B2 JP 4743174 B2 JP4743174 B2 JP 4743174B2 JP 2007172941 A JP2007172941 A JP 2007172941A JP 2007172941 A JP2007172941 A JP 2007172941A JP 4743174 B2 JP4743174 B2 JP 4743174B2
Authority
JP
Japan
Prior art keywords
buffer
user data
flash memory
logical
written
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
JP2007172941A
Other languages
English (en)
Other versions
JP2009015364A (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 JP2007172941A priority Critical patent/JP4743174B2/ja
Publication of JP2009015364A publication Critical patent/JP2009015364A/ja
Application granted granted Critical
Publication of JP4743174B2 publication Critical patent/JP4743174B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、一般的には、フラッシュメモリへのデータ書き込みの制御に関わり、特に、フラッシュメモリへ書き込まれるべきデータのメモリコントローラによるバッファリングの制御に関する。
大容量の不揮発性の読み書き可能な記憶媒体として、ハードディスクの他に、フラッシュメモリが、近年好んで使用されている。フラッシュメモリを記憶媒体として用いた記憶装置であるフラッシュメモリシステムは、通常、フラッシュメモリそれ自体に加えて、ホストシステム及びフラッシュメモリに対するインタフェース並びに両者間のデータ中継の機能をもつメモリコントローラを備える。メモリコントローラは、ホストシステムとフラッシュメモリの間で転送されるデータ、つまり、フラッシュメモリへの書き込み/フラッシュメモリからの読み出しデータを一時的に記憶するバッファを有する。特許文献1には、2つのバッファがホストシステム側とのデータ転送とフラッシュメモリ側とのデータ転送に交互に用いられるように構成されたモリコントローラが開示されている。
特開平11−175311号公報
従来技術によれば、メモリコントローラは、ホストシステムから書き込み要求を受信した後、ホストシステムから与えられるユーザデータをバッファに保持し(第1ステップ)、その後、そのユーザデータをバッファからフラッシュメモリに転送する(第2ステップ)、という2ステップの動作を行う。従って、ホストシステムから複数セクタのデータ書き込みが要求された場合、上述した2ステップ動作が、連続的に複数回繰り返し行われることになる。
しかし、このようにホストシステムからの書き込み要求に応答して、上記2ステップ動作を逐次実行するという方法は、必ずしも最適なやり方であるとはいえない。特に、ホストシステムからみた実質的な書き込み速度を高速化するためには、バッファからフラッシュメモリへの無駄なデータ転送を減らすことが望ましい。また、フラッシュメモリの寿命を延ばすためには、フラッシュメモリへの無駄な書き込み回数を減らすことが望ましい。
従って、本発明の目的は、フラッシュメモリシステムにおいて、ホストシステムによるフラッシュメモリへのアクセスに支障を来たさずに、メモリコントローラ内のバッファからフラッシュメモリへのデータ転送動作及びフラッシュメモリへのデータ書込み動作の実行回数を減らすことにある。
本発明の第1の側面に従えば、複数個の物理ページを有する少なくとも1チップのフラッシュメモリに対する、ホストシステムによるアクセスを制御するためのメモリコントローラは、
前記フラッシュメモリ内の各物理ページに、論理アドレス空間内のいずれか1個の論理ページを関連付ける関連付け手段と、
1個の論理ページを構成する複数個の論理セクタにそれぞれ割り当てられ得る複数個のサブバッファ領域を有するバッファと、
前記ホストシステムから与えられるユーザデータの書き込み先の論理セクタを特定する情報を含む書き込み要求を、前記ホストシステムから受信する書き込み要求受信手段と、
前記書き込み要求が受信されたとき、前記書き込み要求により特定された書き込み先の論理セクタが含まれる第1の論理ページを識別し、そして、前記識別された第1の論理ページと、前記バッファ内に既存するユーザデータの書き込み先として識別されている第2の論理ページとが、一致するか否かを判断する判断手段と、
前記判断手段により前記第1の論理ページと前記第2の論理ページとが一致しないと判断された場合には、前記バッファ内に既存するユーザデータを前記フラッシュメモリへ書き込み、その後に、前記ホストシステムから与えられるユーザデータを、その書き込み先の論理セクタに割り当てられた前記バッファ内のサブバッファ領域に書き込み、他方、前記判断手段により前記第1の論理ページと前記第2の論理ページとが一致すると判断された場合には、前記バッファ内に既存するユーザデータを前記フラッシュメモリへ書き込むことを省略して、前記ホストシステムから与えられるユーザデータを、その書き込み先の論理セクタに割り当てられた前記バッファ内のサブバッファ領域に書き込む、メモリ書き込み制御手段と
を備える。
一つの実施形態に従えば、上記メモリ書き込み制御手段は、前記判断手段により前記第1の論理ページと前記第2の論理ページとが一致しないと判断され且つ前記第1の論理ページに対応するユーザデータが前記フラッシュメモリ内に有る場合、前記バッファ内に既存するユーザデータを前記フラッシュメモリに書き込んだ後に、前記フラッシュメモリ内に有る前記第1の論理ページに対応するユーザデータを前記フラッシュメモリから前記バッファへ読み出し、その後に、前記ホストシステムから与えられるユーザデータを前記バッファに書き込む。
この場合、上記メモリ書き込み制御手段は、次のように構成されてよい。すなわち、上記メモリ書き込み制御手段は、前記判断手段により前記第1の論理ページと前記第2の論理ページとが一致しないと判断され且つ前記第1の論理ページに対応するユーザデータが前記フラッシュメモリ内に有る場合、前記バッファ内に既存するユーザデータを前記フラッシュメモリに書き込んだ後に、前記フラッシュメモリ内に有る前記第1の論理ページに含まれる全ての論理セクタに対応するユーザデータを前記フラッシュメモリから前記バッファへ読み出し、その後に、前記ホストシステムから与えられるユーザデータを前記バッファに書き込む。
あるいは、上記メモリ書き込み制御手段は、次のように構成されてもよい。すなわち、上記メモリ書き込み制御手段は、前記判断手段により前記第1の論理ページと前記第2の論理ページとが一致しないと判断され且つ前記第1の論理ページに対応するユーザデータが前記フラッシュメモリ内に有る場合、前記第1の論理ページに含まれる複数個の論理セクタの中から、前記書き込み要求により特定された書き込み先の論理セクタに該当しないブランク論理セクタを検出し、そして、前記バッファ内に既存するユーザデータを前記フラッシュメモリに書き込んだ後に、前記フラッシュメモリ内に有る前記第1の論理ページに含まれる前記ブランク論理セクタに対応するユーザデータのみを、前記フラッシュメモリから前記バッファへ読み出し、その後に、前記ホストシステムから与えられるユーザデータを前記バッファに書き込む。
他方、別の実施形態に従えば、上記メモリ書き込み制御手段は、前記バッファ内の各サブバッファ領域に書き込まれているユーザデータが有効であることを示す有効情報を記憶する。そして、上記メモリ書き込み制御手段は、前記バッファ内に既存するユーザデータを前記フラッシュメモリへ書き込むとき、前記フラッシュメモリ内のメモリセルアレイ内に有る前記第2の論理ページに対応するユーザデータを前記フラッシュメモリ内のレジスタへ読み出し、その後、前記バッファ内の各サブバッファ領域に書き込まれているユーザデータの中から前記有効情報により識別される有効なユーザデータのみを、前記フラッシュメモリ内のレジスタへ書き込み、その後に、前記レジスタ内のユーザデータを前記メモリセルアレイへ書き込む。
本発明に従うメモリコントローラは、前記複数チップのフラッシュメモリに並列にアクセスすることができ、そして、前記バッファ内に既存するユーザデータを前記複数チップのフラッシュメモリへ分散して並列に書き込むように構成されてよい。
本発明の別の側面に従えば、上述したメモリコントローラと、それにより制御される少なくとも1チップのフラッシュメモリとを備えたフラッシュメモリシステムが、提供される。
本発明のまた別の観点に従えば、複数個の物理ページを有する少なくとも1チップのフラッシュメモリに対するホストシステムによるアクセスを、メモリコントローラにより制御するための方法が提供される。この方法を実行するメモリコントローラは、1個の論理ページを構成する複数個の論理セクタにそれぞれ割り当てられ得る複数個のサブバッファ領域を有するバッファを備える。そして、この方法は、
前記書き込み要求が受信されたとき、前記書き込み要求より特定された書き込み先の論理セクタが含まれる第1の論理ページを識別し、そして、前記識別された第1の論理ページと、前記バッファ内に既存するユーザデータの書き込み先として識別されている第2の論理ページとが、一致するか否かを判断する判断ステップと、
前記判断ステップにより前記第1の論理ページと前記第2の論理ページとが一致しないと判断された場合には、前記バッファ内に既存するユーザデータを前記フラッシュメモリへ書き込み、その後に、前記ホストシステムから与えられるユーザデータを、その書き込み先の論理セクタに割り当てられた前記バッファ内のサブバッファ領域に書き込む、第1の書き込みステップと、
前記判断ステップにより前記第1の論理ページと前記第2の論理ページとが一致すると判断された場合には、前記バッファ内に既存するユーザデータを前記フラッシュメモリへ書き込むことを省略して、前記ホストシステムから与えられるユーザデータを、その書き込み先の論理セクタに割り当てられた前記バッファ内のサブバッファ領域に書き込む、第2の書き込みステップと
を有する。
本発明によれば、ホストシステムによるフラッシュメモリへのアクセスに支障を来たさずに、メモリコントローラ内のバッファからフラッシュメモリへのデータ転送動作及びフラッシュメモリへのデータ書込み動作の実行回数が減少する。
以下、図面を参照して、本発明の実施形態について説明する。
図1は、本発明の実施形態にかかるフラッシュメモリシステムの構成を示す。
図1に示されるように、フラッシュメモリシステム100は、ホストシステム200からアクセス可能に接続される。フラッシュメモリシステム100は、メモリコントローラ102と、少なくとも1チップのフラッシュメモリ104とを備える(図1は1チップの場合を例示するが、後に、複数チップの場合についても説明する。)。メモリコントローラ102は、ホストシステム200からフラッシュメモリ104へのアクセスを制御する。
フラッシュメモリ104は、大容量で不揮発性のメモリセルアレイ134と、レジスタ134とを有する。レジスタ134は、メモリコントローラ102とメモリセルアレイ134との間で入出力されるデータを一時的に記憶するためのものである。
この実施形態では、メモリセルアレイ134はNAND型である。メモリセルアレイ134は、多数の物理ページを有する(図2参照)。ここで、NAND型のメモリセルアレイ134においては、各物理ページが、データの書き込み/読み出しの単位(データの書き込み/読み出しの時に一度に入出力され得る記憶領域)である。この実施形態では、レジスタ132の記憶容量は、上述した書き込み/読み出しの単位である1個の物理ページ分の記憶容量に等しく設定されている。
図2は、本実施形態において、ホストシステム200が認識する論理アドレス空間とメモリセルアレイ134内の物理アドレス空間との間の対応関係を例示している。図2の右側の部分に、メモリセルアレイ134内の多数の物理ページ(1個の物理ブロックの部分のみを抜粋)が例示されている。この右側部分に示されるように、各物理ページは、複数個(典型的には2のべき乗数に相当する個数)の物理セクタを有し、本実施形態では例えば8個の物理セクタを有する。物理セクタは1セクタ(512バイト)のデータが記憶される領域であり、各物理セクタには1個の付加情報領域が割り当てられている。また、各物理ページは、1個のページ情報領域を有する。各物理ページに対して、論理アドレス空間内のいずれかの1個の論理ページ(図2の左側に示す論理アドレス空間中で、#0、#1、#2、…という各論理ページ番号(LPN)が付与された記憶領域)が、メモリコントローラ102によって関連づけられ得る。このように各物理ページに1個の論理ページが関係付けられる場合、後に説明するように1個の論理ページに対して複数個の物理ページが関連付けられてもよいが、本実施形態では、1個の論理ページに対して1個の物理ページが関連付けられる(つまり、論理ページと物理ページが1対1の関係で関連付けられる)。各物理ページ内の各物理セクタには、その物理セクタに関連付けられた論理ページ内の各論理セクタのユーザデータが格納され、そのユーザデータの誤り訂正符号(ECC)は、その物理セクタに割り当てられている付加情報領域に格納される。また、各物理ページのページ情報領域には、その物理ページに関連付けられた論理ページを特定する情報(例えば、論理ページ番号(LPN))及びその他の管理・制御用の情報が格納される。
再び図1を参照して、フラッシュメモリ104内のレジスタ132は、上述した1個の物理ページの構成に適合した構成を有する。すなわち、レジスタ132は、1個の物理ページ内の8個の物理セクタと8個の付加情報領域にそれぞれ格納されるユーザデータとECCをそれぞれ保持するための8個のセクタ領域SEC1〜SEC8と8個のECC領域EC1〜EC8のセットを有する。すなわち、レジスタ132の第1セクタ領域SEC1と第1ECC領域EC1は、物理ページ内の第1の物理セクタと第1の付加情報領域に格納されるユーザデータとECCをそれぞれ保持するためのものであり、第2セクタ領域SEC2と第2ECC領域EC2は、物理ページ内の第2の物理セクタと第2の付加情報領域に格納されるユーザデータとECCコードをそれぞれ保持するためのものであり、以下のセクタ領域SEC3〜SEC8とECC領域EC3〜EC8についても同様である。
レジスタ132は、さらに、物理ページ内のページ情報領域に格納される情報を保持するための管理情報領域MNGを有する。
さて、上述したように、NAND型のフラッシュメモリ104では、データの書き込みと読み出しは物理ページを単位として行われる。フラッシュメモリ104にデータが書き込まれる場合には、まず、メモリコントローラ102からフラッシュメモリ104内のレジスタ132に、書き込み先の1個の物理ページ分のデータ(8個の物理セクタ分のデータ、8個の付加情報領域分のデータ及び1個のページ情報領域分のデータ)が書き込まれ、その後に、レジスタ132からメモリセルアレイ134内の書き込み先の物理ページにそのデータが書き込まれる。逆に、フラッシュメモリ104からデータが読み出される場合には、まず、メモリセル132内の読み出し元の物理ページからレジスタ132へその1個の物理ページ分のデータ(8個の物理セクタ分のデータ、8個の付加情報領域分のデータ及び1個のページ情報領域分のデータ)が読み出され、その後に、レジスタ132からメモリコントローラ102へそのデータが読み出される。
図1に示すように、メモリコントローラ102内には、上記のようにしてフラッシュメモリ104へ/からデータを書き込み/読み出す際に、そのデータを一時的に保持するためのバッファ120が設けられる。このようにバッファ120にデータを一時的に保持することで、ホストシステム200とフラッシュメモリ104の間のデータ転送速度の違いを補償することもできる。
メモリコントローラ102内のバッファ120は、1個の論理ページ分のユーザデータを保持できる。1個の論理ページは、複数個(典型的には2のべき乗数に相当する個数)の論理セクタを有し、本実施形態では例えば8個の論理セクタを有する。そのため、バッファ120は、1個の論理ページを構成する8個の論理セクタにそれぞれ割り当てられ得る8個のサブバッファ領域SBF1〜SBF8を有する。
上述したように、本実施形態では、1個の論理ページ(8個の論理セクタをもつ)に対して1個の物理ページ(8個の物理セクタをもつ)が関連づけられる。そのため、図1に示すように、バッファ120内の8個のサブバッファ領域SBF1〜SBF8と、フラッシュメモリ104内のレジスタ132内の8個のセクタ領域SEC1〜SEC8とが、1対1に対応する。すなわち、バッファ120内の第1サブバッファ領域SBF1とレジスタ132内の第1セクタ領域SEC1とが対応関係にあり、両領域SBF1とSEC1間でユーザデータ(1個の論理/物理セクタ分のユーザデータ)が授受される。また、バッファ120内の第2サブバッファ領域SBF2とレジスタ132内の第2セクタ領域SEC2とが対応関係にあり、両領域SBF2とSEC2間でユーザデータ(1個の論理/物理セクタ分のユーザデータ)が授受される。他のサブバッファ領域SBF3〜SBF8とセクタ領域SEC3〜SEC8との間の対応関係についても同様である。
メモリコントローラ102は、ユーザデータに基づいてECCを生成するECCブロック122を有する。ECCブロック122には、バッファ120内のユーザデータがフラッシュメモリ104のレジスタ132へ書き込まれる際に、バッファ120内の8個のサブバッファ領域SBF1〜SBF8からユーザデータが入力される。ECCブロック122は、8個のサブバッファ領域SBF1〜SBF8から入力されるユーザデータに基づいて、それら8個のサブバッファ領域SBF1〜SBF8のユーザデータのための8個のECCを生成する。そして、生成された上記8個のECCは、レジスタ132内の8個のECC領域EC1〜EC8に書き込まれる。尚、レジスタ132に対するデータ転送では、第1サブバッファ領域SBF1に保持されているユーザデータが第1セクタ領域SEC1に転送された後に、第1サブバッファ領域SBF1に保持されているユーザデータに基づいて生成されるECCが第1ECC領域EC1に転送される。続いて、第2サブバッファ領域SBF2に保持されているユーザデータが第2セクタ領域SEC2に転送された後に、第2サブバッファ領域SBF2に保持されているユーザデータに基づいて生成されるECCが第2ECC領域EC2に転送される。以下同様に、ユーザデータ、そのユーザデータに基づいて生成されるECCという順番でレジスタ132に対するデータ転送が行われる。
また、レジスタ132からのデータ読み出しでは、8個のセクタ領域SEC1〜SEC8から読み出されたユーザデータは、対応関係にある8個のサブバッファ領域SBF1〜SBF8にそれぞれ保持される。この際、ECCブロック122には、レジスタ132内の8個のセクタ領域SEC1〜SEC8から読み出されたユーザデータと8個のECC領域EC1〜EC8から読み出されたECCが入力される。ECCブロック122は、8個のセクタ領域SEC1〜SEC8から読み出されたユーザデータと、8個のECC領域EC1〜EC8から読み出されたECCを用いて、8個のサブバッファ領域SBF1〜SBF8に保持されているユーザデータのエラーを検出し、そのエラーを訂正する。
ところで、本発明は、メモリコントローラ102がホストシステムから書き込み要求(書き込み先のアドレスを特定する情報と、フラッシュメモリ104への書き込みを指示するコマンドを含む書き込み要求)を受信した場合に、どのようにメモリコントローラ102内のバッファ120を使用するかという点、及び、どのようにバッファ120とフラッシュメモリ104との間でデータを読み書きするかという点に関連する。そこで、以下では、これらの点に関わるメモリコントローラ102の構成と機能に焦点を絞って説明する。
図1に示すように、メモリコントローラ102は、上述したバッファ120及びECCブロック122の他に、さらに、マイクロプロセッサ112、コマンドレジスタ114、新LBAレジスタ116、セクタカウントレジスタ118、及び前LBAレジスタ119を備える。
マイクロプロセッサ122は、メモリコントローラ102の全体の機能を実行し制御する。マイクロプロセッサ122が行う処理と制御のうち、本発明に関連性の深いものを例示すると、次のとおりである。
マイクロプロセッサ112は、ホストシステム200から書き込みコマンド、読み出しコマンド或いはその他のコマンドを受信する。これらのコマンドは、ホストシステム200によってメモリコントローラ102内のコマンドレジスタ114に書き込まれる。コマンドレジスタ114に書き込みコマンドが書き込まれる場合には、更に、その書き込み先を示す情報が、新LBAレジスタ116とセクタカウントレジスタ118に書き込まれる。
続いて、新LBAレジスタ116とセクタカウントレジスタ118に書き込まれた情報に基づいて書き込み先が特定されたユーザデータがホストシステム200からフラッシュメモリに与えられる。そして、この書き込み先が特定されたユーザデータ(以下、「受信ユーザデータ」という)はバッファ120に保持される。書き込みコマンドを受信した場合、マイクロプロセッサ112は、さらに、後に詳述するようなやり方で、バッファ120からフラッシュメモリ104へのデータの書き込み、及び、フラッシュメモリ104からバッファ120へのデータの読み出しを制御する。さらに、マイクロプロセッサ122は、論理アドレス空間上の領域(例えば論理ブロック及び論理ページ)と、物理アドレス空間上の領域(例えば、物理ブロック及び物理ページ)との間の関連付け(対応関係の設定)も行なう。
論理アドレス空間上の領域は、LBA(Logical Block Address)によって管理されている。LBAは、論理アドレス空間上のセクタ単位(512バイト単位)の領域(以下、「論理セクタ」という)に付けた番号であり、ホストシステム200から与えられるユーザデータの書き込み先は、このLBAで特定される。
新LBAレジスタ116には、ホストシステム200から与えられるユーザデータの先頭データに対応する論理セクタのLBAが書き込まれる。セクタカウントレジスタ118には、書き込むユーザデータのセクタ数が書き込まれる。つまり、新LBAレジスタ116に書き込まれたLBAに対応する論理セクタ以降のLBAが連続する1個又は複数個の論理セクタ(セクタカウントレジスタ118に書き込まれた数値に対応する個数の論理セクタ)がホストシステム200から与えられるユーザデータの書き込み先になる。
マイクロプロセッサ112は、コマンドレジスタ114に書き込みコマンドが書き込まれた際に、新LBAレジスタ116とセクタカウントレジスタ118に書き込まれた情報と前LBAレジスタ119に書き込まれている情報に基づいて、バッファ120内に既に存在するユーザデータ(以下、「既存ユーザデータ」という)をフラッシュメモリ104へ書き込む必要性が有るか否かを判断する。そして、マイクロプロセッサ112は、その必要性があると判断すれば、バッファ120内に既存する既存ユーザデータをフラッシュメモリ104へ書き込み、その後に、受信ユーザデータをバッファ120に書き込む。他方、その必要性がないと判断した場合には、マイクロプロセッサ112は、バッファ120内に既存する既存ユーザデータをフラッシュメモリ104へ書き込むことを省略して、受信ユーザデータをバッファ120に書き込む。この制御については、後に詳述する。
さて、前LBAレジスタ119は、上述したバッファ120内に既存する既存ユーザデータの書き込み先のLBAを記憶するために用いられる。すなわち、新しい書き込みコマンドが受信されると(コマンドレジスタ114に書き込みコマンドが書き込まれると)、上述したように、バッファ120内の既存ユーザデータをフラッシュメモリ104へ書き込む必要性が有るか否かを判断し、既存ユーザデータをフラッシュメモリ104へ書き込む必要性が無いと判断した場合には、その判断の後、既存ユーザデータをフラッシュメモリ104へ書き込む必要性が有ると判断した場合には、既存ユーザデータをフラッシュメモリ104へ書き込んだ後、受信ユーザデータがバッファ120に書き込まれる。受信ユーザデータがバッファ120に書き込まれると、新LBAレジスタ116に書き込まれた上記LBAが、前LBAレジスタ119にコピーされる。従って、前LBAレジスタ119に格納されているLBAは、バッファ120に最近過去に書き込まれた既存ユーザデータの書き込み先の先頭論理セクタを指し示すことになる。尚、書き込み先の論理ページが2個の論理ページに跨っているときには、論理ページ毎に分割した2つの書き込み要求として処理される。
マイクロプロセッサ112は、コマンドレジスタ114に書き込みコマンドが書き込まれた際に、新LBAレジスタ116とセクタカウントレジスタ118に書き込まれた情報に基づいて、受信ユーザデータの書き込み先の論理セクタと、その論理セクタが含まれる論理ページを特定する。更に、マイクロプロセッサ112は、前LBAレジスタ119に書き込まれているLBAに基づいて、バッファ120内の既存ユーザデータの書き込み先の論理ページを特定する。そして、プロセッサ112は、特定された両方の論理ページを比較する。
その比較の結果、両論理ページが一致してなければ、プロセッサ112は、バッファ120内の既存ユーザデータをフラッシュメモリに書き込む必要性が有ると判断する。この場合、プロセッサ112は、バッファ120内の既存ユーザデータをフラッシュメモリ104へ書き込み、その後に、受信ユーザデータをバッファ120に書き込む。他方、上記比較の結果、両論理ページが一致していれば、プロセッサ112は、バッファ120内の既存ユーザデータをフラッシュメモリ104に書き込む必要性はないと判断する(何故なら、既存ユーザデータは受信ユーザデータによって書き換えられるべきものであるからである)。この場合、プロセッサ112は、上述したように、バッファ120内の既存ユーザデータをフラッシュメモリ104へ書き込まず、受信ユーザデータをバッファ120に書き込む。
このように、前に受信した書き込み要求(コマンド及びアドレス情報を含む)により特定された書き込み先の論理ページと、新しく受信した書き込み要求(コマンド及びアドレス情報を含む)により特定された書き込み先の論理ページとが一致した場合には、バッファ120内の既存ユーザデータのフラッシュメモリ104への書き込みが省略される。この場合とは、換言すれば、同一の論理ページへのデータの書き込みが連続してホストシステム200から要求された場合である。この場合、バッファ120内の既存ユーザデータをフラッシュメモリ104に保存せずに、バッファ120上で受信ユーザデータに書き換えても、ホストシステム200にとり何の不都合もない。他方、前に受信した書き込み要求(コマンド及びアドレス情報を含む)により特定された書き込み先の論理ページと、新しく受信した書き込み要求(コマンド及びアドレス情報を含む)により特定された書き込み先の論理ページとが一致しない場合、すなわち、前とは別の論理ページへの書き込みが要求された場合には、バッファ120内の既存ユーザデータは、有効なデータとしてフラッシュメモリ104に保存しておく必要があるため、この場合には、バッファ120内の既存ユーザデータをフラッシュメモリ104に保存する。
ところで、前LBAレジスタ119に書き込まれたLBAは、上述したように、バッファ120内の既存ユーザデータの書き込み先の論理ページを識別するために用いられる。ここで、「論理ページ」を識別するときには、LBA中の論理ページを特定するビット列部分、例えば、図3,4,5に例示するような、論理ブロック番号(LBN)と論理ページ番号(LPN)を特定する上位所定数ビット列部分を参照する。従って、「論理ページ」を識別するときには、必ずしもLBAを用いなくてもよく、変形例として、前LBAレジスタ119に代えて、LBA中の論理ページを特定するビット列部分だけを登録するレジスタが用いられてもよい。
以下では、新しい書き込み要求を受信したときにメモリコントローラ102のマイクロプロセッサ112が行なう制御について、より詳細に説明する。この説明に当たり、まず、図2を参照して、本実施形態における、ホストシステム200が認識する論理アドレス空間とメモリセルアレイ134内の物理アドレス空間との間の対応関係を説明する。
図2の左側には論理アドレス空間が示されている。論理アドレス空間には、多数の論理セクタが存在し、それらの論理セクタは、各論理セクタに付与されたLBAによって識別される。そして、複数個(本実施形態では8個)の論理セクタが集合して、1個の論理ページを構成する。さらに、複数個(本実施形態では64個)の論理ページが集合して、1個の論理ブロックを構成する。こうして複数個の論理ブロックが構成され、それらの論理ブロックは、各論理ブロックに付与されたLBN(論理ブロック番号)によって識別される。また、各論理ブロック内では、複数個(例えば64個)の論理ページが、各論理ページに付与された論理ページ番号(LPN)によって識別される。
図2の右側には、メモリセルアレイ134内の物理アドレス空間が(1個の物理ブロックの部分のみ抜粋して)示されている。物理アドレス空間では、複数個(本実施形態では64個)の物理ページが集合して、1個の物理ブロックを構成する。図2では図示省略されているが、メモリセルアレイ134内には複数個(論理ブロックの総数より多い)の物理ブロックが存在し、それらの物理ブロックは、各物理ブックに付与された物理ブロックアドレス(PBA)により識別される。そして、各物理ブロック内では、複数個(例えば64個)の物理ページが、各物理ページに付与された物理ページ番号(PPN)によって識別される。各物理ページは、既に説明したように、複数個(本実施形態では8個)の物理セクタで構成され、更に、物理セクタに関連付けられた8個の付加情報領域と1個のページ情報領域とを有する。
図2に示されるように、メモリセル134内の各物理ブロック(例えば、PBA#0の論理ブロック)に対して、いずれか1個の論理ブロック(例えば、LBN#0の論理ブロック)が、メモリコントローラ102のマイクロプロセッサ112によって関係付けられる。そして、各物理ブロック64内の各物理ページ(例えば、PPN#7〜PPN#12の各物理ページ)に対して、その物理ブロックに関係付けられた論理ブロック中いずれか1個の論理ページ(例えば、LPN#0〜LPN#5の各論理ページ)が、マイクロプロセッサ112によって関係付けられる。各物理ページのページ情報領域には、その物理ページに関連付けられた論理ページを示す情報(例えば、LPN)が記述される。
ところで、メモリセル134内には、まだどの論理ページとも関連付けられていない物理ページも存在し得る。ホストシステム200からの書き込み要求に応答して、バッファ120内の既存ユーザデータをフラッシュメモリに書き込む必要性が有るか否かを判断し、その結果、バッファ120内の既存ユーザデータをフラッシュメモリに書き込む必要性が有ると判断した場合に、既存ユーザデータの書き込み先として識別されている論理ページに対して1個の物理ページ(どの論理ページとも関連付けられていない物理ページ)が関連付けられ、その物理ページに対するデータ書き込みが行われる。
例えば、図2に示された例は、次のようにして物理ページと論理ページの関連付けが行われた場合の例である。
すなわち、当初、PBA#0の物理ブロック内の全ての物理ページが空きである状態で、バッファ120内の既存ユーザデータの書き込み先として識別されている論理ページがLPN#0の論理ページで、ホストシステム200からの書き込み要求により特定された書き込み先の論理ページがLPN#0の論理ページである場合、バッファ120内の既存ユーザデータをフラッシュメモリに書き込む必要性は無いと判断される。一方、ホストシステム200からの書き込み要求により特定された書き込み先の論理ページがLPN#1の論理ページである場合、バッファ120内の既存ユーザデータをフラッシュメモリに書き込む必要性が有ると判断され、バッファ120内の既存ユーザデータの書き込み先として識別されているLPN#0の論理ページがPPN#0の物理ページに関連付けられ、PPN#0の物理ページにバッファ120内の既存ユーザデータが書き込まれる。このように、バッファ120内の既存ユーザデータをフラッシュメモリに書き込む必要性が有ると判断されたときに、バッファ120内の既存ユーザデータがフラッシュメモリに書き込まれる。
論理ページに関連付けられた物理ページのページ情報領域には、その物理ページ関連付けられている論理ページのLPNを示す情報が書き込まれる。図2に示された例では、PPN#0の物理ページのページ情報領域にLPN#0を示す情報が書き込まれ、PPN#1の物理ページのページ情報領域にLPN#1を示す情報が書き込まれ、PPN#2の物理ページのページ情報領域にLPN#2を示す情報が書き込まれている。従って、LPN#0の論理ページがPPN#0の物理ページに関連付けられ、LPN#1の論理ページがPPN#1の物理ページに関連付けられ、LPN#2の論理ページがPPN#2の物理ページに関連付けられている。
図2の例では、PPN#13以降のPPNをもつ物理ページは、まだ空きであり、それらには、まだいずれの論理ページも関連付けられていないが、将来、そこにもデータが書き込まれて、いずれかの論理ページに関連付けられることになる。
図3は、本実施形態において、ホストシステム200から書き込み要求を受信したときに、メモリコントローラ102のマイクプロセッサ112が行う、バッファ120への受信ユーザデータの書き込みのやり方と、バッファ120内の既存ユーザデータのフラッシュメモリ104への書き込みのやり方を示す。
図3に示すとともに、既に説明したように、バッファ120内には、1個の論理ページ内の複数個(例えば8個)の論理セクタにそれぞれ割り当てられた複数個(例えば8個)のサブバッファ領域SBF1〜SBF8が存在する。ホストシステム200から新しい書き要求が受信されると、その受信された書き込み要求によって特定される受信ユーザデータの書き込み先の論理ページと、バッファ120内の既存ユーザデータの書き込み先の論理ページとが一致するかどうかが判断される。ここで、前者の論理ページは、図1に示された新LBAレジスタ116内のLBAに基づいて特定することができ、後者の論理ページは、図1に示された前LBAレジスタ119内のLBAに基づいて特定することができる。すなわち、いずれのLBAについても、図3に示すように、そのLBA内のLBNとLPNに相当する上位所定数ビット列から、書き込み先の論理ページが特定される。このようにして特定された上記前者と後者の論理ページが異なっている場合には、バッファ120内の既存ユーザデータをフラッシュメモリ104へ書き込む必要があると判断され、他方、上記両論理ページが一致している場合には、その必要がないと判断される。
上記判断結果が、バッファ120内の既存ユーザデータをフラッシュメモリ104へ書き込む必要がないとの判断であった場合には、バッファ120内の既存ユーザデータをフラッシュメモリ104へ書き込むことなしに、上記書き込み要求によって書き込み先の論理ページが特定された受信ユーザデータがバッファ120に書き込まれる。この受信ユーザデータをバッファ120に書き込む動作は次のとおりである。
すなわち、書き込み要求に含まれる(つまり、図1に示された新LBAレジスタ116とセクタカウントレジスタ118に書き込まれた)LBAとセクタカウンタから、受信ユーザデータの書き込み先範囲が、書き込み先の論理ページ内のどの論理セクタであるかが、特定される。すなわち、上記LBAとセクタカウントから、書き込み先範囲に相当する1個以上の論理セクタのLBAが求められ、そして、図3に示すように、求まった各LBA中の下位所定ビット列(本実施形態では下位3ビット列)により、書き込み先範囲内の各論理セクタの論理セクタ番号(LSN)が特定される。
続いて、バッファ120内の、上記特定された書き込み先範囲に相当する1個以上の論理セクタ(そのLSN)に割り当てられたサブバッファ領域に、受信ユーザデータが書き込まれる。ここで、各論理セクタと各サブバッファ領域の対応関係は、予め設定されている。例えば、図3の例において、「011」〜「111」が書き込み先範囲の論理セクタのLSNであったならば、それらのLSNに割り当てられたサブバッファ領域SBF4〜SBF8に書き込みが行われことになる。
さて、上述した判断結果が、バッファ120内のユーザデータをフラッシュメモリ104へ書き込む必要があるとの判断であった場合には、上記受信ユーザデータがバッファ120に書き込まれる前に、バッファ120内の既存ユーザデータがフラッシュメモリ104へ書き込まれる。バッファ120内の既存ユーザデータがフラッシュメモリ104へ書き込む動作は、次のとおりである。
すなわち、図3に示すように、バッファ120内のサブバッファ領域SBF1〜SBF8に保持されている8個の論理セクタ分のユーザデータが読み出されてフラッシュメモリ内のレジスタ134に転送されると共に、ECCブロック122に入力される。すると、ECCブロック122から、上記8個の論理セクタ分のユーザデータのための8個のECCが生成される。ECCブロック122で生成されたECCもフラッシュメモリ内のレジスタ134に転送される。
尚、各論理セクタのLSNとバッファ120内のサブバッファ領域SBF1〜SBF8との対応関係、及びサブバッファ領域SBF1〜SBF8とレジスタ134内のセクタ領域SEC1〜SEC8との対応関係は予め設定されている。図3に示した例では、LSN#0の論理セクタに対応するデータはサブバッファ領域SBF1に保持され、サブバッファ領域SBF1に保持されたLSN#0の論理セクタに対応するデータは、セクタ領域SEC1に書き込まれ、そのLSN#0の論理セクタに対応するデータのECCはECC領域EC1に書き込まれる。LSN#1の論理セクタに対応するデータはサブバッファ領域SBF2に保持され、サブバッファ領域SBF2に保持されたLSN#1の論理セクタに対応するデータは、セクタ領域SEC2に書き込まれ、そのLSN#1の論理セクタに対応するデータのECCはECC領域EC2に書き込まれる。以下同様に対応関係が設定されており、LSN#7の論理セクタに対応するデータはサブバッファ領域SBF8に保持され、サブバッファ領域SBF8に保持されたLSN#7の論理セクタに対応するデータは、セクタ領域SEC8に書き込まれ、そのLSN#7の論理セクタに対応するデータのECCはECC領域EC8に書き込まれる。
また、バッファ120内のユーザデータの書き込み先である論理ページに関連付けられるべきフラッシュメモリ104内の物理ページ(つまり、バッファ120内のユーザデータの書き込み先に該当する物理ページ)が決定される。また、図示省略してあるが、その書き込み先の物理ページのページ情報領域に書き込まれるべき、上記書き込み先論理ページのLPNを示す情報などが生成され、フラッシュメモリ内のレジスタ134に転送される。
そして、上述したサブバッファ領域SBF1〜SBF8から読み出された8個の論理セクタ分のユーザデータと、ECCブロック122から出力された8個のECCと、上記生成された管理・制御用データは、これらのデータをフラッシュメモリ104内のレジスタ134に書き込むことを指示する命令(上述の書き込み先の物理ページを指示する情報も含む)がメモリコントローラ102からフラッシュメモリ104に与えられた後にフラッシュメモリ104に転送される。これにより、上述したサブバッファ領域SBF1〜SBF8から読み出された8個の論理セクタ分のユーザデータと、ECCブロック122から出力された8個のECCと、上記生成されたページ情報領域用の情報とが、フラッシュメモリ104内のレジスタ132内の対応するセクタ領域SEC1〜SEC8とECC領域EC1〜EC8と管理情報領域MNGにそれぞれ書き込まれる。その後、図示省略してあるが、レジスタ134に書き込まれたデータを、上述の書き込み先の物理ページへ書き込むことを命じる書き込み命令が、メモリコントローラ102からフラッシュメモリ104に与えられ、レジスタ132内の全てのデータが、メモリセル134内の上記書き込み先の物理ページに書き込まれる。
上記のようにして、バッファ120内の既存ユーザデータがフラッシュメモリ104のレジスタ132へ書き込まれた後に、上記新しく受信された書き込み要求により書き込み先が特定される受信ユーザデータが、上述したやり方で、バッファ120内の書き込み先範囲の論理セクタに割り当てられたサブバッファ領域SBF1〜SBF8に、書き込まれる。
ところで、上述した本実施形態では、図1に示すように、1チップのフラッシュメモリ104が、1個のメモリコントローラ102により制御される。しかし、変形例として、複数チップ(典型的には、2のべき乗数に相当するチップ数)のフラッシュメモリが、1個のメモリコントローラ102により制御されてもよい。図4と図5は、そのような場合を示している。
図4は、1個のメモリコントローラ102が2チップのフラッシュメモリを制御するようになった変形例における、メモリコントローラ102内のバッファの構造とそのバッファへのデータの書き込み方の一例を示す。
図4に示すように、メモリコントローラ102内には、2チップのフラッシュメモリ(図示省略)にそれぞれ割り当てられた2つのバッファ1200、1201が存在する。バッファ1200、1201の各々は、それに割り当てられたフラッシュメモリチップに付与されたチップ番号(CPN)によって識別される。この場合、CPNは、CPN#0とCPN#1の2つであり、図4に示すように、LSNの下位1ビット、つまりLBAの下位1ビットによって特定され得る。
各チップのフラッシュメモリの構成は、図1及び図2に示された前述の実施形態のフラッシュメモリ104の構成と同様である。バッファ1200、1201の各々の構成は、図1と図3に示された前述の実施形態のバッファ120の構成と同様である。従って、バッファ1200、1201の各々は、例えば8個のサブバッファ領域SBF1〜SBF8を有し、各バッファの記憶容量は、1チップのフラッシュメモリ内の1個の物理ページ分のユーザデータを記憶できる容量(本実施形態では、8セクタ分のユーザデータを記憶できる容量)である。
他方、この変形例で使用される論理アドレス空間では、1個の論理ページを構成する論理セクタの個数が例えば16個であり、これは2個の物理ページ内の合計の物理セクタ数に相当する。それら16個の論理セクタのそれぞれのLSNは、図4に示すように、LBA中の下位4ビット列により特定される。2つのバッファ1200、1201が連合して、1個の論理ページ分のユーザデータを記憶することができる。バッファ1200内の8個のサブバッファ領域SBF1〜SBF8と、バッファ1201内の8個のサブバッファ領域SBF1〜SBF8が、1個の論理ページ内の16個の論理セクタにそれぞれ割り当てられる。
望ましくは、2チップのフラッシュメモリの双方に対して、メモリコントローラ102が並行にアクセスできるようになっている。すなわち、望ましくは、2チップのフラッシュメモリの双方へ/から同時に、データを書き込み/読み出すことができるようになっている。そして、望ましくは、一方のバッファ1200内のサブバッファ領域SBF1〜SBF8と、他方のバッファ1201内のサブバッファ領域SBF1〜SBF8とが、1個の論理ページ内のLSNの連続する16個の論理セクタに対して、交互に割り当てられる。
例えば、図4に例示するように、LSNが「0000」の1番目の論理セクタに、第1のバッファ1200内の第1サブバッファ領域SBF1が割り当てられ、LSNが「0001」の2番目の論理セクタに、第2のバッファ1201内の第1サブバッファ領域SBF1が割り当てられ、LSNが「0010」の2番目の論理セクタに、第1のバッファ1200内の第2サブバッファ領域SBF2が割り当てられ、LSNが「0011」の4番目の論理セクタに、第2のバッファ1201内の第2サブバッファ領域SBF2が割り当てられ、以下同様である。
このような交互の割り当てが設定されていると、2つのバッファ1200、1201内のLSNの連続する複数個の論理セクタ分のユーザデータを2チップのフラッシュメモリへ書き込むとき、一方のバッファ1200から一方のチップのフラッシュメモリへの書き込みと、他方のバッファ1201から他方のチップのフラッシュメモリへの書き込みとが、同時並行的に行えるので、高速書き込みが可能である。また、LSNの連続する複数個の論理セクタ分のユーザデータを2チップのフラッシュメモリから読み出す時も、同様に、高速読み出しが可能である。但し、本発明を実施するときに、1個の論理ページ内のLSNの連続する16個の論理セクタを、必ずしも2つのバッファ1200、1201に交互に割り当てなくてもよく、例えば、CPNをLSNの上位1ビットで特定するようにしてもよい。
図4に示したバッファ構成の下で、メモリコントローラ102のマイクロプロセッサ112は、2チップのフラッシュメモリの各々から1個ずつ選んだ2個の物理ぺージを組み合わせて、1個の仮想物理ページを定義する。このようにして、2チップのフラッシュメモリ内に、複数個の仮想物理ページが定義される。マイクロプロセッサ112は、ホストシステム200から書き込み要求を受信すると、前述の実施形態の場合と同様に、新LBAレジスタ116に書き込まれたLBA中のLBNとLPNの部分と、前LBAレジスタ119に書き込まれたLBA中のLBNとLPNの部分とから、2つのバッファ1200、1201内の既存ユーザデータを2チップのフラッシュメモリへ書き込む必要があるかどうかを判断する。
その結果、書き込む必要があると判断すれば、マイクロプロセッサ112は、上記既存ユーザデータの書き込み先に該当する仮想物理ページを決定し、そして、上記既存ユーザデータが上記仮想物理ページに書き込まれるように、第1のバッファ1200内のユーザデータを第1のチップ(CPN#0)のフラッシュメモリへ書き込み、第2のバッファ1201内のユーザデータを第2のチップ(CPN#1)のフラッシュメモリへ書き込む。その後に、受信した書き要求により書き込み先が特定された受信ユーザデータを、2つのバッファ1200、1201内の、書き込み先の論理セクタに割り当てられたサブバッファ領域に書き込む。
他方、上記判断の結果、書き込む必要がないと判断すれば、マイクロプロセッサ112は、2個のバッファ1200、1201内の既存ユーザデータを2チップのフラッシュメモリへ書き込む動作を省略し、そして、受信した書き込み要求により書き込み先が特定された受信ユーザデータを、2個のバッファ1200、1201内の、書き込み先の論理セクタに割り当てられたサブバッファ領域に書き込む。
図5は、1個のメモリコントローラ102が4チップのフラッシュメモリを制御するようになった変形例における、メモリコントローラ102内のバッファの構造とそのバッファへのデータの書き込み方の一例を示す。
図5の変形例の図4の変形例との主たる違いは、フラッシュメモリのチップ数が4個になったことに伴い、メモリコントローラ102内のバッファの個数も4個になっている点である。これら4個のバッファ1200〜1203の各々は、それに割り当てられたフラッシュメモリのCPN(CPN#0〜CPN#4)によって識別され、CPNは、LBAの下位2ビット列で特定される。これら4個のバッファ1200〜1203の各々は、それに割り当てられたフラッシュメモリ内の1個の物理ページ分のユーザデータを格納できる。
この変形例で使用される論理アドレス空間では、1個の論理ページが32個の論理セクタから構成され、これは、4個の物理ページの物理セクタの合計個数に相当する。4個のバッファ1200〜1203が連合して、1個の論理ページ分のユーザデータを格納することができる。
望ましくは、4チップのフラッシュメモリ(図示省略)の全部に、メモリコントローラ102が並行してアクセスできるようになっている。そして、望ましくは、図5に例示するように、1個の論理ページ内のLSN(LBAの下位5ビット列)が連続する32個の論理セクタに、異なるバッファ1200〜1203内のサブバッファ領域が順次に割り当てられる。例えば、LSNが「00000」の1番目の論理セクタに、第1のバッファ1200内の第1サブバッファ領域SBF1が割り当てられ、LSNが「00001」の2番目の論理セクタに、第2のバッファ1201内の第1サブバッファ領域SBF1が割り当てられ、LSNが「00010」の3番目の論理セクタに、第3のバッファ1202内の第1サブバッファ領域SBF1が割り当てられ、LSNが「00011」の4番目の論理セクタに、第4のバッファ1203内の第1サブバッファ領域SBF1が割り当てられ、以下同様である。尚、1個の論理ページ内のLSNの連続する32個の論理セクタを、必ずしも4個のバッファ1200〜1203に図5に示したように割り当てなくてもよく、例えば、CPNをLSNの上位2ビットで特定するようにしてもよい。
図5に示したバッファ構成の下で、メモリコントローラ102のマイクロプロセッサ112は、4チップのフラッシュメモリの各々から1個ずつ選んだ4個の物理ぺージを組み合わせて、1個の仮想物理ページを定義する。このようにして、4チップのフラッシュメモリ内に、複数個の仮想物理ページが定義される。マイクロプロセッサ112は、ホストシステム200から書き込み要求を受信すると、既に説明したのと同様に方法で、4つのバッファ1200〜1203内の既存ユーザデータを4チップのフラッシュメモリへ書き込む必要があるかどうかを判断する。
その結果、書き込む必要があると判断すれば、マイクロプロセッサ112は、上記既存ユーザデータの書き込み先に該当する仮想物理ページを決定し、そして、上記既存ユーザデータが上記仮想物理ページに書き込まれるように、4個のバッファ1200〜1203内のユーザデータを、4チップのフラッシュメモリへそれぞれ書き込む。その後に、受信した書き要求により書き込み先が特定された受信ユーザデータを、4個のバッファ1200〜1203内の、書き込み先の論理セクタに割り当てられたサブバッファ領域に書き込む。
他方、上記判断の結果、書き込む必要がないと判断すれば、マイクロプロセッサ112は、4個のバッファ1200〜1203内の既存ユーザデータを4チップのフラッシュメモリへ書き込む動作を省略し、そして、受信した書き要求により書き込み先が特定された受信ユーザデータを、4個のバッファ1200〜1203内の、書き込み先の論理セクタに割り当てられたサブバッファ領域に書き込む。
図6は、メモリコントローラ102のマイクロプロセッサ112が行う、ホストシステム200から要求を受信したときの制御の流れを示す。
図6に示すように、ステップS1で、ホストシステム200からコマンドが受信されたか否かがチェックされる。コマンドが受信されたなら(ステップS1でYes)、ステップS2で、受信されたコマンドがフラッシュキャッシュコマンド(バッファ内のユーザデータをフラッシュメモリへ書き込むことを要求するコマンド)であるかがチェックされる。受信されたコマンドがフラッシュキャッシュコマンドでなければ(ステップS2でNo)、ステップS3で、受信されたコマンドが書き込みコマンドであるかがチェックされる。
受信されたコマンドが書き込みコマンドである場合(ステップS3でYes)、ステップS4で、受信ユーザデータの書き込み先と、バッファ内の既存ユーザデータの書き込み先とが、論理ページ(LBA中のLBNとLPN)において一致するか否かがチェックされる。両ユーザデータの書き込み先の論理ページが一致する場合(ステップS4でYes)には、バッファ内の既存ユーザデータをフラッシュメモリに書き込む必要性がないことを意味する。その場合、バッファからフラッシュメモリへの書き込みは行われずに、ステップS5で、受信ユーザデータが、その書き込み先である1個以上の論理セクタにそれぞれ割り当てられたバッファ120内の1個以上のサブバッファ領域に書き込まれる。
他方、ステップS4において、両ユーザデータの書き込み先の論理ページが一致しない場合(ステップS4でNo)には、バッファ内の既存ユーザデータをフラッシュメモリに書き込む必要性があることを意味する。その場合、ステップS6で、バッファ内の全てのサブバッファ領域の既存ユーザデータがフラッシュメモリへ書き込まれる。このとき、前述したように、ユーザデータとともに、ECCや管理・制御用データもフラッシュメモリに書き込まれる。
ステップS4でNoの場合、さらに、ステップS7で、受信ユーザデータの書き込み先の論理ページに対応するユーザデータがフラッシュメモリ内に存在するか否か(すなわち、フラッシュメモリ内に、受信ユーザデータの書き込み先の論理ページに関連付けられた物理ページが存在するか否か)がチェックされる。このチェックの結果、受信ユーザデータの書き込み先の論理ページに対応するユーザデータがフラッシュメモリ内に存在しない(ステップS7でNo)場合、制御は、上述したステップS6の後に、既に説明したステップS5へ進む。他方、受信ユーザデータの書き込み先の論理ページに対応するデータがフラッシュメモリ内に存在する(ステップS7でYes)場合には、制御は、ステップS6の後に、ステップS8へ進む。
ステップS8では、受信ユーザデータの書き込み先の論理ページに対応するフラッシュメモリ内のユーザデータが(すなわち、受信ユーザデータの書き込み先の論理ページに関連付けられたフラッシュメモリ内の物理ページに格納されているユーザデータが)、メモリコントローラ102へ読み出され、バッファ120に保持される。このとき、そのユーザデータとともに、そのユーザデータのECCも、フラッシュメモリからメモリコントローラ102へ読み出される。そして、その読み出されたユーザデータとECCを用いて、メモリコントローラ102内のECCブロック122が、読み出されたユーザデータのエラーをチェックし、エラーがあれば、バッファ120に保持されているユーザデータのエラーを修正する。
ステップS8の後に、制御はステップS5へ進んで、受信ユーザデータが、その書き込み先範囲の論理セクタに割り当てられたバッファ内のサブバッファ領域に書き込まれる。ステップS5の前にステップS8が行われているので、バッファ内では、書き込み先範囲の論理セクタに割り当たられたサブバッファ領域だけでなく、ブランク論理セクタに割り当てられたサブバッファ領域にも、然るべきユーザデータが保持される。
ステップS5の後、制御はステップS1へ戻る。
ステップS3で、受信されたコマンドが書き込みコマンド以外のもの(例えば、読み出しコマンドなど)であった場合(ステップS3でNo)、ステップS10で、バッファ内の全てのサブバッファ領域の既存ユーザデータが、フラッシュメモリへ書き込まれる。このとき、前述したように、ユーザデータとともに、ECCや管理・制御用データもフラッシュメモリに書き込まれる。その後、ステップS11で、受信されたコマンドにより要求された処理(例えば、データ読み出し)が行われる。その後、制御はステップS1へ戻る。
また、ステップS2で、受信されたコマンドがフラッシュキャッシュコマンド(バッファ内のユーザデータをフラッシュメモリへ書き込むことを要求するコマンド)であった場合(ステップS2でYes)、ステップS9で、バッファ内の全てのサブバッファ領域に既存するユーザデータが、フラッシュメモリへ書き込まれる。このとき、前述したように、ユーザデータとともに、ECCや管理・制御用データもフラッシュメモリに書き込まれる。その後、制御はステップS1へ戻る。
ところで、図6の制御流れ中のステップS8の動作は、次の2通りのやり方のいずれか一方で行うことができる。その1つ目のやり方は、受信ユーザデータの書き込み先の論理ページ中の「全ての論理セクタ」に対応するフラッシュメモリ内のユーザデータを、バッファ120の「全てのサブバッファ領域」へ読み出すやり方である。
ステップS8の2つ目のやり方は、受信ユーザデータの書き込み先の論理ページ中から、受信ユーザデータの書き込み先として特定されてない論理セクタ(以下、「ブランク論理セクタ」という)を検出し、そして、検出された「ブランク論理セクタ」に対応するフラッシュメモリ内のユーザデータだけを選択的に、バッファ120の「ブランク論理セクタに割り当てられたサブバッファ領域」に読み出すやり方である。例えば、図2を参照して、受信された書き込み要求により特定された論理ページがLPN#0であり、そして、同書き込み要求により特定された書き込み先の論理セクタがLSN#1〜LSN#6だけである場合を想定すると、ブランク論理セクタはLSN#0とLSN#7の論理セクタである。この例の場合、上記2つ目の方法によれば、LPN#0の論理ページ中のブランク論理セクタであるLSN#0とLSN#7の論理セクタに対応するユーザデータだけが選択的に、LSN#0とLSN#7の論理セクタに割り当てられたバッファ120内のサブバッファ領域へ読み出されることになる。これに対し、上記1つ目の方法によれば、フラッシュメモリ内のLPN#0の論理ページ内の全ての論理セクタ(LSN#0〜LSN#7の論理セクタ)に対応するユーザデータが、バッファ120内の全てのサブバッファ領域へ読み出されることになる。このような2通りのやり方のうち、いずれを採用することも可能である。
また、図6の制御流れの変形例として、ステップS8の動作に代替して、フラッシュメモリに対するコピーバックコマンドを使った次のような動作を採用することもできる。すなわち、メモリコントローラ102は、新しく受信された書き込み要求により書き込み先が特定される受信ユーザデータをバッファ120内のサブバッファ領域に書き込む度に、そのサブバッファ領域に書き込まれた受信ユーザデータがバッファ120内で有効であることを示す有効情報を記憶し、以後、バッファ120内の既存ユーザデータがフラッシュメモリへ書き込まれるまで、その有効情報を保持する。その後、バッファ120内の既存ユーザデータをフラッシュメモリへ書き込む必要が生じたとき、メモリコントローラ102は、まず、コピーバック読み出しコマンドをフラッシュメモリ104に与えて、バッファ120内の既存ユーザデータの書き込み先の論理ページに対応するフラッシュメモリ104のメモリセルアレイ134内のユーザデータを全て、フラッシュメモリのレジスタへ読み出す。続いて、メモリコントローラ102は、バッファ120内の各サブバッファ領域に保持されている既存ユーザデータ中、記憶されている有効情報により有効であると示されている各サブバッファ領域に保持されている既存ユーザデータ(換言すれば、バッファ120からフラッシュメモリ104へのデータ書き込み動作が最後に行われた時から現在までの間に、受信された書き込み要求よりバッファ120に書き込まれた有効なユーザデータ)のみを、コピーバック読み出しコマンドにより、フラッシュメモリ104内のレジスタ132へ書き込む。この時、バッファ120内の既存ユーザデータ中、有効情報により有効であるとは示されていないサブバッファ領域のデータ(換言すれば、バッファ120からフラッシュメモリへのデータ書き込み動作が最後に行われた時より現在までの間に、受信された書き込み要求より受信ユーザデータが書き込まれていないサブバッファ領域のデータ)は、フラッシュメモリ104内のレジスタ132へ書き込まれない。続いて、フラッシュメモリ104内のレジスタ104のユーザデータはフラッシュメモリ104内のメモリセルアレイ134に書き込まれる。このようなコピーバック読み出しコマンドを使った代替動作によって、上述したステップS8と同様の効果が得られる。
図7は、上述した図6の制御によって実現されるバッファ120への受信ユーザデータの書き込み動作の具体例を示す。ここでは、図6のステップS8の動作は、上述した1つ目のやり方で行われるものとする。
図7に示された具体例では、説明上の例示として、1個の論理ページ(LBN#0,LPN#0の論理ページ)に着目し、その論理ページ(LBN#0,LPN#0の論理ページ)は、32個の論理セクタ(LBA#0〜LBA#31に対応するLPN#0の論理ページ内のLSN#0〜LSN#31の論理セクタ)より構成されるものとする。
ここで、着目しているLPN#0の論理ページとは異なる論理ページへのアクセスが最後に行われた後に、逐次に4個の書き込み要求が受信され、それら4個の書き込み要求は、図7の上部に示されているようなLBA(先頭のLBA)とセクタカウント(受信ユーザデータのセクタ数)のセットをそれぞれ指定している、という場合を想定する。
この場合、1番目の書き込み要求が受信されると、まず、バッファ内の既存ユーザデータが、フラッシュメモリ104に書き込まれる(この動作は、図7には図示されていない)。1番目の書き込み要求により特定される書き込み先は、LPN#0の論理ページ内のLSN#4〜LSN#27(LBA#4〜LBA#27)の論理セクタである。同じLPN#0の論理ページ内の他の論理セクタ(LSN#0〜LSN#3に対応するLBA#0〜LBA#3の論理セクタ及びLSN#28〜LSN#31に対応するLBA#28〜LBA#31の論理セクタ)は、上述したブランク論理セクタに該当することになる。
続いて、1番目の書き込みコマンドにより特定された論理ページLPN#0の全ての論理セクタ(LSN#0〜LSN#31に対応するLBA#0〜LBA#31の論理セクタ)に対応するフラッシュメモリ内のユーザデータが、バッファ内の全てのサブバッファ領域へ読み出される。続いて、1番目の書き込み要求により書き込み先が特定された受信ユーザデータが、その書き込み先の論理セクタ(LSN#4〜LSN#27に対応するLBA#4〜LBA#27の論理セクタ)に割り当てられたバッファ120内のサブバッファ領域に書き込まれる。その結果、バッファ内に存在する論理ページLPN#0のユーザデータは、書き込み要求により書き込み先が特定された論理セクタ(LSN#4〜LSN#27に対応するLBA#4〜LBA#27の論理セクタ)に保持されているユーザデータと、フラッシュメモリから読み出されたブランク論理セクタ(LSN#0〜LSN#3に対応するLBA#0〜LBA#3の論理セクタ及びLSN#28〜LSN#31に対応するLBA#28〜LBA#31の論理セクタ)に保持されているユーザデータとから、構成されることになる。
その後に、2番目の書き込みコマンドが受信される。この2番目の書き込みコマンドにより特定される書き込み先は、LBN#0,LPN#0の論理ページ内のLSN#0〜LSN#15(LBA#0〜LBA#15)の論理セクタであり、その論理ページ(LBN#0,LPN#0の論理ページ)は、バッファ内の既存ユーザデータの論理ページ(最初の書き込み要求により特定された論理ページであるLBN#0,LPN#0の論理ページ)と一致する。従って、バッファからフラッシュメモリへのデータ書き込みは省略され、単に、2番目の書き込み要求により特定された論理セクタ(LSN#0〜LSN#15に対応するLBA#0〜LBA#15の論理セクタ)のユーザデータが、バッファ120内の対応するサブバッファ領域に書き込まれる。
その後に、3番目の書き込みコマンドが受信される。この3番目の書き込みコマンドにより特定される書き込み先は、LBN#0,LPN#0の論理ページ内のLSN#16〜LSN#31(LBA#16〜LBA#31)の論理セクタであり、その論理ページ(LBN#0,LPN#0の論理ページ)は、バッファ内の既存ユーザデータの論理ページ(1番目と2番目の書き込み要求により特定された論理ページであるLBN#0,LPN#0の論理ページ)と一致する。従って、バッファからフラッシュメモリへのデータ書き込みは省略され、単に、3番目の書き込み要求により特定された論理セクタ(LSN#16〜LSN#31に対応するLBA#16〜LBA#31の論理セクタ)のユーザデータが、バッファ120内の対応するサブバッファ領域に書き込まれる。
その後に、4番目の書き込み要求が受信される。この4番目の書き込み要求により特定される書き込み先は、LBN#0,LPN#1の論理ページ内のLSN#0〜LSN#15(LBA#32〜LBA#47)の論理セクタであり、その論理ページ(LBN#0,LPN#1の論理ページ)は、バッファ120内の既存ユーザデータの論理ページ(1番目〜3番目の書き込みコマンドにより特定される論理ページであるLBN#0,LPN#0の論理ページ)と一致しない。従って、まず、バッファ内の既存ユーザデータが、フラッシュメモリに書き込まれる。その後に、図7には示されてないが、4番目の書き込み要求により特定された論理ページ(LBN#0,LPN#1の論理ページ)の全ての論理セクタに対応するフラッシュメモリ内のユーザデータが、バッファの全てのサブバッファ領域へ書き込まれ、その後に、4番目の書き込み要求により特定されたLBN#0,LPN#1の論理ページ内のLSN#0〜LSN#15(LBA#32〜LBA#47)の論理セクタの受信ユーザデータが、バッファへ書き込まれる。
以上説明した本発明の実施形態及び変形例によれば、ホストシステムから同じ論理ページへのデータ書き込みが連続して要求された場合には、メモリコントローラ内のバッファに保持されている同じ論理ページ内の既存ユーザデータをフラッシュメモリへ書き込む動作が、自動的に省略される。これにより、ホストシステムにとっての実質的なデータ書き込み速度の向上や、フラッシュメモリのアクセス回数の減少によるフラッシュメモリの寿命の改善などの利点が期待できる。
以上説明した本発明の実施形態とその変形例は、本発明の説明のための例示に過ぎず、本発明の範囲をこれらに限定する趣旨ではない。本発明は、その要旨を逸脱することなしに、上述した実施形態とその変形例以外の種々の態様でも実施することができる。例えば、論理アドレス空間と物理アドレス空間との間の関連付け(対応関係の設定)のやり方には、上述の説明で例示したやり方以外の種々のやり方が採用でき、いずれのやり方が採用された場合にも、本発明は適用可能である。
本発明の実施形態にかかるフラッシュメモリシステムの構成を示すブロック図。 同実施形態において、ホストシステム200が認識する論理アドレス空間とメモリセルアレイ134内の物理アドレス空間との間の対応関係を例示する図。 同実施形態において、ホストシステム200から書き込みコマンドを受けたときに、メモリコントローラ102のマイクプロセッサ112が行う、バッファ120への受信ユーザデータの書き込みのやり方と、バッファ120内の既存ユーザデータのフラッシュメモリ104への書き込みのやり方を示す図。 2チップのフラッシュメモリを制御するようになった変形例における、メモリコントローラ102内のバッファの構造とそのバッファへのデータの書き込み方の一例を示す図。 4チップのフラッシュメモリを制御するようになった変形例における、メモリコントローラ102内のバッファの構造とそのバッファへのデータの書き込み方の一例を示す図。 メモリコントローラ102のマイクロプロセッサ112が行う、ホストシステム200からコマンドを受信したときの制御の流れを示す図。 図6の制御によって実現されるバッファへのデータの書き込み動作の具体例を示す図。
符号の説明
200 ホストシステム
100 フラッシュメモリシステム
102 メモリコントローラ
104 フラッシュメモリ
112 マイクロプロセッサ
114 コマンドレジスタ
116 新LBAレジスタ
118 セクタカウントレジスタ
119 前LBAレジスタ
120 バッファ
122 ECCブロック
132 レジスタ
132 メモリセルアレイ
SBF1〜SBF8 サブバッファ領域
SEC1〜SEC8 セクタ領域
EC1〜EC8 ECC領域
MNG 管理情報領域

Claims (3)

  1. 複数個の物理ページを有する少なくとも1チップのフラッシュメモリに対する、ホストシステムによるアクセスを制御するためのメモリコントローラにおいて、
    前記フラッシュメモリ内の各物理ページに、論理アドレス空間内のいずれか1個の論理ページを関連付ける関連付け手段と、
    1個の論理ページを構成する複数個の論理セクタにそれぞれ割り当てられ得る複数個のサブバッファ領域を有するバッファと、
    前記ホストシステムから与えられるユーザデータの書き込み先の論理セクタを特定する情報を含む書き込み要求を、前記ホストシステムから受信する書き込み要求受信手段と、
    前記書き込み要求が受信されたとき、前記書き込み要求により特定された書き込み先の論理セクタが含まれる第1の論理ページを識別し、そして、前記識別された第1の論理ページと、前記バッファ内に既存するユーザデータの書き込み先として識別されている第2の論理ページとが、一致するか否かを判断する判断手段と、
    前記判断手段により前記第1の論理ページと前記第2の論理ページとが一致しないと判断された場合には、前記バッファ内に既存するユーザデータを前記フラッシュメモリへ書き込み、その後に、前記ホストシステムから与えられるユーザデータを、その書き込み先の論理セクタに割り当てられた前記バッファ内のサブバッファ領域に書き込み、他方、前記判断手段により前記第1の論理ページと前記第2の論理ページとが一致すると判断された場合には、前記バッファ内に既存するユーザデータを前記フラッシュメモリへ書き込むことを省略して、前記ホストシステムから与えられるユーザデータを、その書き込み先の論理セクタに割り当てられた前記バッファ内のサブバッファ領域に書き込む、メモリ書き込み制御手段と、
    を備え、
    前記メモリ書き込み制御手段は、
    前記バッファ内の各サブバッファ領域に書き込まれているユーザデータが有効であることを示す有効情報を記憶し、
    前記判断手段により前記第1の論理ページと前記第2の論理ページとが一致しないと判断され且つ前記第1の論理ページに対応するユーザデータが前記フラッシュメモリ内に有る場合、前記バッファ内に既存するユーザデータを前記フラッシュメモリへ書き込むとき、前記フラッシュメモリ内のメモリセルアレイ内に有る前記第2の論理ページに対応するユーザデータを前記フラッシュメモリ内のレジスタへ読み出し、その後、前記バッファ内の各サブバッファ領域に書き込まれているユーザデータの中から前記有効情報により識別される有効なユーザデータのみを、前記フラッシュメモリ内のレジスタへ書き込み、その後に、前記レジスタ内のユーザデータを前記メモリセルアレイへ書き込み、前記バッファ内に既存するユーザデータを前記フラッシュメモリに書き込んだ後に、前記フラッシュメモリ内に有る前記第1の論理ページに含まれる全ての論理セクタに対応するユーザデータを前記フラッシュメモリから前記バッファへ読み出し、その後に、前記ホストシステムから与えられるユーザデータを前記バッファに書き込み、
    複数チップのフラッシュメモリに並列にアクセスすることができ、そして、前記バッファ内に既存するユーザデータを前記複数チップのフラッシュメモリへ分散して並列に書き込む、
    メモリコントローラ。
  2. 請求項記載のメモリコントローラと、
    前記メモリコントローラにより制御される少なくとも1チップのフラッシュメモリと
    を備えたフラッシュメモリシステム。
  3. 複数個の物理ページを有する少なくとも1チップのフラッシュメモリに対するホストシステムによるアクセスを、メモリコントローラにより制御するための方法であって、
    前記メモリコントローラが、1個の論理ページを構成する複数個の論理セクタにそれぞれ割り当てられ得る複数個のサブバッファ領域を有するバッファを備え、
    前記方法は、
    前記ホストシステムから与えられるユーザデータの書き込み先の論理セクタを特定する情報を含む書き込み要求を、前記ホストシステムから受信する書き込み要求受信ステップと、
    前記書き込み要求が受信されたとき、前記書き込み要求より特定された書き込み先の論理セクタが含まれる第1の論理ページを識別し、そして、前記識別された第1の論理ページと、前記バッファ内に既存するユーザデータの書き込み先として識別されている第2の論理ページとが、一致するか否かを判断する判断ステップと、
    前記判断ステップにより前記第1の論理ページと前記第2の論理ページとが一致しないと判断された場合には、前記バッファ内に既存するユーザデータを前記フラッシュメモリへ書き込み、その後に、前記ホストシステムから与えられるユーザデータを、その書き込み先の論理セクタに割り当てられた前記バッファ内のサブバッファ領域に書き込む、第1の書き込みステップと、
    前記判断ステップにより前記第1の論理ページと前記第2の論理ページとが一致すると判断された場合には、前記バッファ内に既存するユーザデータを前記フラッシュメモリへ書き込むことを省略して、前記ホストシステムから与えられるユーザデータを、その書き込み先の論理セクタに割り当てられた前記バッファ内のサブバッファ領域に書き込む、第2の書き込みステップと、
    前記バッファ内の各サブバッファ領域に書き込まれているユーザデータが有効であることを示す有効情報を記憶するステップと
    を有し、
    前記第1の書き込みステップでは、前記判断ステップにより前記第1の論理ページと前記第2の論理ページとが一致しないと判断され且つ前記第1の論理ページに対応するユーザデータが前記フラッシュメモリ内に有る場合、前記バッファ内に既存するユーザデータを前記フラッシュメモリへ書き込むとき、前記フラッシュメモリ内のメモリセルアレイ内に有る前記第2の論理ページに対応するユーザデータを前記フラッシュメモリ内のレジスタへ読み出し、その後、前記バッファ内の各サブバッファ領域に書き込まれているユーザデータの中から前記有効情報により識別される有効なユーザデータのみを、前記フラッシュメモリ内のレジスタへ書き込み、その後に、前記レジスタ内のユーザデータを前記メモリセルアレイへ書き込み、前記バッファ内に既存するユーザデータを前記フラッシュメモリに書き込んだ後に、前記フラッシュメモリ内に有る前記第1の論理ページに含まれる全ての論理セクタに対応するユーザデータを前記フラッシュメモリから前記バッファへ読み出し、その後に、前記ホストシステムから与えられるユーザデータを前記バッファに書き込み、
    複数チップのフラッシュメモリに並列にアクセスすることができ、そして、前記バッファ内に既存するユーザデータを前記複数チップのフラッシュメモリへ分散して並列に書き込む、
    制御方法。
JP2007172941A 2007-06-29 2007-06-29 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 Expired - Fee Related JP4743174B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007172941A JP4743174B2 (ja) 2007-06-29 2007-06-29 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007172941A JP4743174B2 (ja) 2007-06-29 2007-06-29 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2011059964A Division JP4784710B2 (ja) 2011-03-18 2011-03-18 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Publications (2)

Publication Number Publication Date
JP2009015364A JP2009015364A (ja) 2009-01-22
JP4743174B2 true JP4743174B2 (ja) 2011-08-10

Family

ID=40356239

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007172941A Expired - Fee Related JP4743174B2 (ja) 2007-06-29 2007-06-29 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Country Status (1)

Country Link
JP (1) JP4743174B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4829365B1 (ja) 2010-05-31 2011-12-07 株式会社東芝 データ記憶装置及びデータ書き込み方法
JP4806089B1 (ja) 2010-06-30 2011-11-02 株式会社東芝 情報処理装置、raidコントローラカード、およびミラーリング方法
US9898402B2 (en) 2011-07-01 2018-02-20 Micron Technology, Inc. Unaligned data coalescing
JP5025813B1 (ja) * 2011-07-01 2012-09-12 株式会社東芝 情報処理装置、情報処理方法及びプログラム
CN110659150B (zh) * 2019-10-10 2023-04-21 深圳芯邦科技股份有限公司 微控制单元内存的检测方法以及相关装置
CN111061649B (zh) * 2019-10-28 2023-09-29 宁波三星智能电气有限公司 一种存储器的存储空间自适应分配方法
CN113032290B (zh) * 2021-03-19 2024-01-19 维沃移动通信有限公司 闪存配置方法、装置、电子设备和存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008524747A (ja) * 2004-12-21 2008-07-10 サンディスク コーポレイション オンチップ不揮発性メモリ書き込みキャッシュを使用するシステムおよび方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008524747A (ja) * 2004-12-21 2008-07-10 サンディスク コーポレイション オンチップ不揮発性メモリ書き込みキャッシュを使用するシステムおよび方法

Also Published As

Publication number Publication date
JP2009015364A (ja) 2009-01-22

Similar Documents

Publication Publication Date Title
US8312203B2 (en) Semiconductor storage device and method of controlling a semiconductor storage device by allocating a physical block composed of plural pages to a group of logical addresses
JP4829365B1 (ja) データ記憶装置及びデータ書き込み方法
JP4743174B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
WO2015114744A1 (ja) ストレージ装置
CN102915208A (zh) 信息处理装置、半导体存储装置及半导体存储装置的控制方法
US20150052329A1 (en) Memory control device, host computer, information processing system and method of controlling memory control device
JP4632180B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US20140075099A1 (en) Control method and memory system of non-volatile semiconductor memory
US8671257B2 (en) Memory system having multiple channels and method of generating read commands for compaction in memory system
JP2012058770A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4737223B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2012068765A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4784710B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4840415B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
KR20090106221A (ko) 병렬 구조를 가지는 플래시 메모리 시스템 및 그 데이터기록방법 및 플래시 메모리
JP4720891B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4582232B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2012068764A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
JP4636046B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US20240069782A1 (en) Storage device including nonvolatile memory device and operating method of storage device
US20240078027A1 (en) Storage device including nonvolatile memory device and operating method of storage device
JP2019215777A (ja) メモリシステム
JP6260395B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
JP4661809B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP2012037971A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110318

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110425

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

Free format text: PAYMENT UNTIL: 20140520

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4743174

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees