(57)【要約】【課題】ホストシステムからアクセス領域が連続するアクセス指示が連続して与えられた場合に、フラッシュメモリに対するアクセス処理の効率を向上させる。【解決手段】本発明によるメモリコントローラは、アクセス処理を指示する情報としてセクタ数レジスタＲ２に書き込まれたセクタ数がｍの場合に、ｍより大きい値ｎ（ｎ＞ｍ）がセクタ数として書き込まれたときと同等の値をフラッシュメモリインターフェースブロック８内の物理ブロックアドレスレジスタＲ１１、セクタ番号レジスタＲ１２及びカウンタＲ１３に設定して、アクセス処理を開始する。その後、次のアクセス処理を指示する情報がコマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３に書き込まれ、その情報に基づくアクセス領域が連続していれば、アクセス処理を続行する。【選択図】図６
2008009874.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムから与えられる指示情報に基づいて、ブロック単位で記憶データの消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記指示情報に基づいて特定される読み出し領域又は書き込み領域を超える領域に対して前記フラッシュメモリに記憶されているデータの読み出し処理又は前記フラッシュメモリへのデータの書き込み処理を開始する読出書込手段と、
前記指示情報を保持する指示情報保持手段と、
前記ホストシステムから与えられる新たな指示情報に基づいて特定される読み出し領域又は書き込み領域が、前記指示情報保持手段により保持された情報に基づいて特定される読み出し領域又は書き込み領域と連続する領域であるか否かを判別する判別手段と、
前記判別手段が、連続する領域であると判断した場合には、前記読出書込手段が実行中の読み出し又は書き込み処理を続行させ、連続する領域でないと判断した場合には、前記読出書込手段が実行中の読み出し又は書き込み処理を停止させる制御手段と、
を備えることを特徴とするメモリコントローラ。
【請求項２】
前記読出書込手段は、前記指示情報に基づいて特定されるブロック内最終ページまでの領域に対して前記フラッシュメモリに記憶されているデータの読み出し処理又は前記フラッシュメモリへのデータの書き込み処理を開始することを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
請求項１又は２に記載のメモリコントローラとフラッシュメモリを備えることを特徴とするフラッシュメモリシステム。
【請求項４】
ホストシステムから与えられる指示情報に基づいて、ブロック単位で記憶データの消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
前記指示情報に基づいて特定される読み出し領域又は書き込み領域を超える領域に対して前記フラッシュメモリに記憶されているデータの読み出し処理又は前記フラッシュメモリへのデータの書き込み処理を開始する読出書込ステップと、
前記指示情報を保持する指示情報保持ステップと、
前記ホストシステムから与えられる新たな指示情報に基づいて特定される読み出し領域又は書き込み領域が、前記指示情報保持ステップにより保持された情報に基づいて特定される読み出し領域又は書き込み領域と連続する領域であるか否かを判別する判別ステップと、
前記判別ステップで、連続する領域であると判断した場合には、前記読出書込ステップで開始した読み出し又は書き込み処理を続行させ、連続する領域でないと判断した場合には、前記読出書込ステップで開始した読み出し又は書き込み処理を停止させる制御ステップと、
を備えることを特徴とするフラッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
【背景技術】
【０００２】
近年、メモリカードやシリコンディスク等といったメモリシステムにて使用される半導体メモリに、フラッシュメモリが広く採用されている。フラッシュメモリは、不揮発性メモリの一種である。フラッシュメモリに格納されたデータは、電力が供給されていないときでも保持されていることが要求される。
【０００３】
図１は、フラッシュメモリシステム１を概略的に示すブロック図である。図１に示したようにフラッシュメモリシステム１は、フラッシュメモリ２と、それを制御するメモリコントローラ３とで構成されている。それらは内部バス６を介して接続されている。また、フラッシュメモリシステム１は、外部バス５を介して通常ホストシステム４と接続され、ホストシステム４に対して一種の外部記憶装置として用いられる。
【０００４】
尚、ホストシステム４としては、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやディジタルスチルカメラをはじめとする各種情報処理装置が挙げられる。
【０００５】
ホストシステム４は、メモリコントローラ３に処理の実行を指示する指示情報を発行する。メモリコントローラ３は、この指示情報に応答して、フラッシュメモリ２に処理の実行を指示するための指示情報を発行する。ここで、指示情報には読み出しや書き込みを指示するコマンドとアクセス領域を指示するアドレスが含まれている。又、ホストシステム４からメモリコントローラ３に与えられるコマンドを外部コマンドと呼び、メモリコントローラ３がフラッシュメモリ２に処理の実行を指示するためのコマンドを内部コマンドと呼ぶ。
【０００６】
以下で、フラッシュメモリ２、外部バス５、フラッシュメモリ２のアドレス空間及びメモリコントローラ３について説明を行う。
【０００７】
［フラッシュメモリ２の説明］
ＮＡＮＤ型フラッシュメモリは、上記のメモリシステムで特に多く用いられるフラッシュメモリの一種である。ＮＡＮＤ型フラッシュメモリに含まれている複数のメモリセルのそれぞれは、他のメモリセルとは独立して、論理値“１”に対応する消去状態から、論理値“０”に対応する書込状態へと変化することができる。
【０００８】
これとは対照的に、書込状態から消去状態へと変化するときには、各メモリセルは他のメモリセルと独立して変化することができない。このときには、ブロックと称される予め定められた数のメモリセルが、全て同時に消去状態になる。この一括消去動作は、一般的に、“ブロック消去”と称されている。ＮＡＮＤ型フラッシュメモリに対する書込処理若しくは読出処理は、ページ又はセクタと称される予め定められた数のメモリセル単位で処理が行なわれる。
【０００９】
また、所定数のメモリセルからなる消去処理の単位であるブロックは、複数のページで構成されている。ブロックとページの構成は、フラッシュメモリの仕様によって異なるが、一般的なフラッシュメモリでは、小ブロックでは３２ページ、大ブロックでは６４ページである。
【００１０】
ページの構成は以下のようになっている。小ブロックでは、図２（ａ）に示したように、１個のページが１セクタ（５１２バイト）のユーザ領域と１６バイトの冗長領域とによって構成されている。大ブロックでは、図２（ｂ）に示したように、１個のページが４セクタ（２０４８バイト）のユーザ領域（以下、５１２バイト単位のユーザ領域をセクタ領域という）と６４バイトの冗長領域とによって構成され、ユーザ領域と冗長領域とがそれぞれ４分割して使用される。よって、小ブロックでは１個ページが１個のセクタ領域に対応し、大ブロックでは１個ページが４個のセクタ領域に対応している。
【００１１】
ユーザ領域は、主に、ホストシステムから供給されるデ―タが記憶される領域であり、冗長領域は、論理ブロックを示す情報、エラーコレクションコード等の付加データが記憶される領域である。ここで、論理ブロックを示す情報は、ホストシステムから与えられるアドレス情報に基づいて特定される論理ブロックを示す情報である。又、エラーコレクションコードは、ユーザ領域に記憶されたデータに含まれる誤りを検出、訂正するための情報である。
【００１２】
［外部バス５の説明］
ＮＡＮＤ型フラッシュメモリを用いたメモリシステムの外部バス５のホストインターフェースには、通常、磁気ディスク装置で用いられているＡＴＡ（AT Attachment）が採用されている。ＮＡＮＤ型フラッシュメモリにおけるページ若しくはページに含まれるセクタ領域を、磁気ディスク装置におけるセクタに対応させれば、比較的容易に、磁気ディスク装置を、ＮＡＮＤ型フラッシュメモリを用いたメモリシステムに置換えることができるからである。このため、ＮＡＮＤ型フラッシュメモリを用いたメモリシステムは、従来の磁気ディスク装置を置換える用途に使用されることが多くなっている。
【００１３】
例えば、ＡＴＡに準拠したインターフェースがあり、ホストコンピュータ側からフラッシュメモリにアクセスするときには、ＬＢＡレジスタ、セクタ数レジスタ及びコマンドレジスタ等が用いられる。
【００１４】
ここで、ホストコンピュータ側からフラッシュメモリに対して、読み出し若しくは書き込みを実行する場合、ホストコンピュータ側から、読み出し若しくは書き込みを実行するセクタの先頭アドレスがＬＢＡレジスタに設定され、読み出すセクタ数（フラッシュメモリから読み出すデータのセクタ数）若しくは書き込むセクタ数（フラッシュメモリに書き込むデータのセクタ数）がセクタ数レジスタに設定される。また、読み出し及び書き込み等のコマンドは、コマンドレジスタに設定される。この設定に基づいて、書き込みの場合は、フラッシュメモリ内の１若しくは複数セクタにデータが書き込まれ、読み出しの場合は、フラッシュメモリ内の１若しくは複数セクタからデータが読み出される。
【００１５】
［フラッシュメモリ２のアドレス空間］
ホストシステム４側のアドレス空間は、図３（ａ）に示したようにセクタ（５１２バイト）単位で分割した領域に付けた通番であるＬＢＡ（Logical Block Address）で管理されている。更に複数個のセクタをまとめたものを論理ブロックと呼び、複数個の論理ブロックをまとめたものを論理ゾーンと呼んでいる。また、図３（ｂ）に示したように論理ブロックに付けられた通番を論理ブロック番号（ＬＢＮ）と呼び、論理ゾーンに付けられた通番を論理ゾーン番号（ＬＺＮ）と呼んでいる。また、各論理ゾーンに含まれた論理ブロックの各論理ゾーン内での通番を論理ゾーン内ブロック番号（ＬＺＩＢＮ）と呼んでいる。尚、ＬＢＡレジスタには、ＬＢＡの値で読み出し若しくは書き込みを開始するセクタのアドレスが設定される。
【００１６】
一方、図３（ｃ）に示したように、物理ブロックには、それぞれ固有の物理ブロックアドレス（ＰＢＡ）が割り当てられている。さらに、記憶領域を複数のゾーンに分割して管理する場合には、複数個の物理ブロックで物理ゾーンを構成し、各物理ゾーンに固有の物理ゾーン番号（ＰＺＮ）を割り当てている。各物理ゾーンに含まれる物理ブロックの各物理ゾーン内での通番を物理ゾーン内ブロック番号（ＰＺＩＢＮ）と呼んでいる。
【００１７】
また、各論理ゾーンにはそれぞれ１個の物理ゾーンが割り当てられ、論理ゾーンに含まれる各論理ブロックに対応するデータは、その論理ゾーンに割り当てられた物理ゾーンに含まれる物理ブロックに書き込まれる。したがって、１個の論理ブロックに含まれるセクタ数は、１個の物理ブロックに含まれるセクタ領域の個数に応じて設定される。但し、１個の論理ブロックを複数個の物理ブロックに割り当てる場合には、その複数個の物理ブロックを１個の物理ブロックとみなして１個の論理ブロックに含まれるセクタ数を設定する。
【００１８】
図３に示した例では、１個の物理ブロックが２５６個のセクタ領域で構成されたフラッシュメモリを想定しているため、２５６セクタが１個の論理ブロックに対応している。したがって、ＬＢＮ＃０〜＃４９９の５００個の論理ブロックで構成されたＬＺＮ＃０の論理ゾーンは、ＬＢＡ＃０〜＃１２７９９９の１２８０００セクタの領域に対応している。
【００１９】
以下同様に、ＬＺＮ＃１の論理ゾーンは、ＬＢＡ＃１２８０００〜＃２５５９９９の１２８０００セクタの領域に対応し、ＬＺＮ＃２の論理ゾーンは、ＬＢＡ＃２５６０００〜＃３８３９９９の１２８０００セクタの領域に対応し、ＬＺＮ＃３の論理ゾーンは、ＬＢＡ＃３８４０００〜＃５１１９９９の１２８０００セクタの領域に対応している。
【００２０】
また、ＬＢＮ＃０〜＃４９９の５００個の論理ブロックで構成されたＬＺＮ＃０の論理ゾーンは、ＰＢＡ＃０〜＃５１１の５１２個の物理ブロックで構成されたＰＺＮ＃０の物理ゾーンに割り当てられている。以下同様に、ＬＺＮ＃１の論理ゾーンは、ＰＺＮ＃１の物理ゾーンに割り当てられ、ＬＺＮ＃２の論理ゾーンは、ＰＺＮ＃２の物理ゾーンに割り当てられ、ＬＺＮ＃３の論理ゾーンは、ＰＺＮ＃３の物理ゾーンに割り当てられている。ここで、物理ゾーンに含まれる物理ブロックの個数を、論理ゾーンに含まれる論理ブロックの個数より多くしているのは、同一の論理ブロックに対応する新データと旧データが別々の物理ブロックに並存する場合や、データを正常に書き込むことができない不良ブロックが発生した場合等を考慮したものである。
【００２１】
また、各物理ブロックには、その物理ブロックに割り当てられた論理ブロックのデータがＬＢＡの順番で書き込まれるので、物理ブロックと論理ブロックとの対応関係を管理することにより、ホストシステム４から与えられるＬＢＡとフラッシュメモリ２内のアクセス領域の対応関係を管理することができる。
【００２２】
なお、物理ブロックと論理ブロックとの対応関係は、データの書き込みや消去が行われる毎に変化する。このため、個々の時点における両者の対応関係を管理するためアドレス変換テーブルが作成され、対応関係が変化する毎にアドレス変換テーブルが更新される。
【００２３】
このアドレス変換テーブルは、物理ブロックの先頭ページの冗長領域に書き込まれる論理ブロックを示す情報（以下、論理アドレス情報という）に基づいて作成される。冗長領域に書き込まれる論理アドレス情報としては，ＬＢＮ等の論理ブロックを特定することができる情報が用いられる。なお、論理ゾーンと物理ゾーンとの対応関係は予め設定されている場合は、ＬＺＩＢＮに基づいて論理ブロックを特定することができるので、ＬＢＮよりデータ量の少ないＬＺＩＢＮを用いることが好ましい。
【００２４】
また、上記物理ブロックに論理アドレス情報が格納されていない場合は、対応する論理ブロックが無いことになるので、その物理ブロックが空きブロックであるとを判断することもできる。つまり、論理アドレス情報が格納されていない場合は、空きブロックであると判断される。
【００２５】
アドレス変換テーブルの例として、図７がある。ここで左側は論理ブロックのＬＢＮを示し、右側は物理ブロックのＰＢＡを示している。この例では、ＬＢＮ＃０の論理ブロックがＰＢＡ＃１０の物理ブロックに、ＬＢＮ＃１の論理ブロックがＰＢＡ＃２１の物理ブロックに、ＬＢＮ＃２の論理ブロックがＰＢＡ＃５の物理ブロックに対応している。なお、論理ゾーンと物理ゾーンとの対応関係が予め設定されている場合には、ＬＺＩＢＮとＰＺＩＢＮの対応関係で論理ブロックと物理ブロックの対応関係を示してもよい。
【００２６】
[ メモリコントローラ３の説明] 
メモリコントローラ３は、図４に示すような各種レジスタ、バッファ９、ワークエリア（図示せず）を備える。すなわち、ホストインタフェースブロック７は、コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３等を備えている。また、フラッシュメモリインターフェースブロック８は、物理ブロックアドレスレジスタＲ１１，セクタ番号レジスタＲ１２、カウンタＲ１３等を備えている。
【００２７】
バッファ９は、フラッシュメモリ２から読み出したデータ及びフラッシュメモリ２に書込むデータを一時的に保持する機能ブロックである。すなわち、フラッシュメモリ２から読み出したデータは、ホストシステム４の受取準備ができるまでバッファ９に保持され、フラッシュメモリ２に書込むデータは、フラッシュメモリ２の書込準備ができるまでバッファ９に保持される。ワークエリアは、フラッシュメモリ２の制御に必要なデータが一時的に格納される作業領域であり、複数のＳＲＡＭ（Static Random Access Memory）セルのよって構成されている。
【００２８】
コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３には、ホストシステム４から与えられる情報が書き込まれる。コマンドレジスタＲ１には、書き込みコマンド、読み出しコマンド等のコマンド（書き込み、読み出し等を指示する外部コマンド）が書き込まれる。セクタ数レジスタＲ２にはアクセス対象領域のセクタ数が書き込まれる。ＬＢＡレジスタＲ３には、アクセス対象領域の先頭のＬＢＡが書き込まれる。
【００２９】
物理ブロックアドレスレジスタＲ１１、セクタ番号レジスタＲ１２、カウンタＲ１３には、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３に書き込まれた情報に基づく、フラッシュメモリ２内のアクセス対象領域を指示する情報が書き込まれる。
【００３０】
たとえば、ＬＢＡが連続する２５６セクタの領域を、フラッシュメモリ２（１ブロックが６４ページで、１ページが４セクタの場合）の１個の物理ブロックに割り当てた場合、図３で説明したＬＢＡの下位８ビットがセクタ番号ＳＮに対応し、この下位８ビットを除いた上位側のビットが論理ブロック番号（ＬＢＮ）に対応する。
【００３１】
つまり、ＬＢＡが連続する２５６セクタの領域を１個の論理ブロックとした場合、ＬＢＡの下位８ビットが論理ブロック内の各セクタに付けた通番であるセクタ番号ＳＮ（０〜２５５）を示し、このＬＢＡの下位８ビットを除いた上位側のビットが論理ブロック番号（ＬＢＮ）を示している。なお、ＬＢＡ、論理ブロック番号（ＬＢＮ）及びセクタ番号ＳＮのビット数については、フラッシュメモリ２の容量や仕様等に応じて決定される。
【００３２】
次に、物理ブロックアドレスレジスタＲ１１、セクタ番号レジスタＲ１２、カウンタＲ１３に設定される情報について説明する。セクタ番号レジスタＲ１２には、ＬＢＡレジスタＲ３に書き込まれたＬＢＡのセクタ番号ＳＮに対応する部分の値が書き込まれる。
【００３３】
ここで、各物理ブロックにはＬＢＡの順番でユーザデータが書き込まれるので、上記のセクタ番号ＳＮは、各物理ブロックに含まれるセクタ領域に付けられた通番に対応する。一方、物理ブロックアドレスレジスタＲ１１には、ＬＢＡレジスタＲ３に書き込まれたＬＢＡの論理ブロック番号（ＬＢＮ）を示す部分に基づいて特定された論理ブロックと対応する物理ブロックの物理ブロックアドレス（ＰＢＡ）又は空きブロックの物理ブロックアドレス（ＰＢＡ）が書き込まれる。
【００３４】
つまり、特定された論理ブロックに対応する物理ブロックからユーザデータを読み出す場合、又は、その物理ブロックに追加書き込みをする場合には、特定された論理ブロックと対応する物理ブロックの物理ブロックアドレス（ＰＢＡ）が物理ブロックアドレスレジスタＲ１１に書き込まれる。また、特定された論理ブロックに対応するユーザデータを空きブロックに書き込む場合には、その空きブロックの物理ブロックアドレス（ＰＢＡ）が物理ブロックアドレスレジスタＲ１１に書き込まれる。カウンタＲ１３には、セクタ数レジスタＲ２に設定したセクタ数が書き込まれる。
【００３５】
なお、ＬＢＡレジスタＲ３及びセクタ数レジスタＲ２に設定された情報に基づいて特定されるアクセス対象領域が複数の論理ブロックに跨っている場合、アクセス対象領域の物理ブロックも複数の論理ブロックに跨っているので、物理ブロックアドレスレジスタＲ１１、セクタ番号レジスタＲ１２、カウンタＲ１３に対する情報の設定は論理ブロック毎に行い、カウンタＲ１３には各論理ブロックに書き込まれるユーザデータのセクタ数を設定する。
【００３６】
したがって、ＬＢＡレジスタＲ３及びセクタ数レジスタＲ２に設定された情報に基づいて特定されるアクセス対象領域が複数の論理ブロックに跨っている場合、ホストシステム４から与えられる１回の指示情報に基づいて複数回（たとえば、２個の論理ブロックに跨っている場合は２回）のシーケンス処理が実行される。シーケンス処理は、物理ブロックアドレスレジスタＲ１１、セクタ番号レジスタＲ１２、カウンタＲ１３に設定された情報に基づいて連続的に実行されるアクセス処理である。シーケンス処理は、メモリコントローラ３内のＲＯＭに記憶されているシーケンスコマンド（書き込み、読み出し等の処理毎に設定されたコマンドセット）に従って実行される。
【００３７】
書き込みのシーケンス処理では、１セクタのユーザデータがバッファ９からフラッシュメモリ２に供給される毎にセクタ番号レジスタＲ１２に設定されている値がインクリメント（１ずつ増加）され、カウンタＲ１３に設定されている値がデクリメント（１ずつ減少）される。カウンタＲ１３に設定されている値が０になったときにシーケンス書き込みが終了する。読み出しシーケンス処理では、１セクタのユーザデータがフラッシュメモリ２からバッファ９に読み出される毎にセクタ番号レジスタＲ１２に設定されている値がインクリメント（１ずつ増加）され、カウンタＲ１３に設定されている値がデクリメント（１ずつ減少）される。カウンタＲ１３に設定されている値が０になったときにシーケンス書き込みが終了する。
【００３８】
たとえば、セクタ番号レジスタＲ１２に「１０」を設定し、カウンタＲ１３に「８」を設定した書き込みのシーケンス処理では、ＳＮ＃１０〜＃１７のセクタ領域にユーザデータが書き込まれる。セクタ番号レジスタＲ１２に「１０」を設定し、カウンタＲ１３に「８」を設定した読み出しのシーケンス処理では、ＳＮ＃１０〜＃１７のセクタ領域からユーザデータが読み出される。
【００３９】
以上で述べたようなＡＴＡに準拠したインターフェースを備えたフラッシュメモリコントローラ３は、ＬＢＡレジスタＲ３及びセクタ数レジスタＲ２を複数備えていなかったため、ホストシステム４からフラッシュメモリ２にアクセスするときには、読み出し若しくは書き込みを実行するデータ群（アドレスが連続する複数セクタ分のデータ）毎に、コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３等に所望の設定値を設定しなければならなかった。従って、フラッシュメモリ２内の複数の箇所から複数のデータ群を読み出す場合、又はフラッシュメモリ２内の複数の箇所に複数のデータ群を書き込む場合には、各データ群の読み出し若しくは書き込みの処理毎に、コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３等に所望の設定値を設定しなければならなかった。
【００４０】
そこで特許文献１により、複数のデータ群の読み出し処理や書き込み処理を連続して実行するときに好適なメモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法が提供された。
【００４１】
図５は、特許文献１によるホストインターフェースブロック７を示す説明図である。ホストインターフェースブロック７には、ホストシステム４より供給されるアドレスが書き込まれるＬＢＡレジスタＲ３とホストシステム４から供給されるセクタ数が書き込まれるセクタ数レジスタＲ２とが複数組設けられている。例えば図５のように、ＬＢＡレジスタＡ，Ｂ，Ｃ，……，Ｊと、これらに対応するセクタ数レジスタＡ，Ｂ，Ｃ，……，Ｊとが、ホストインターフェースブロック７に設けられている。ホストインターフェースブロック７には、さらに、ホストシステム４から供給されるコマンドが書き込まれるコマンドレジスタＲ１が設けられている。
【００４２】
特許文献１のフラッシュメモリシステム１では、ＬＢＡレジスタＲ３とセクタ数レジスタＲ２に書き込まれたアドレス及びセクタ数に基づいて、書き込み処理の場合は、バッファ９に保持されているデータがフラッシュメモリ２に書き込まれ、読み出し処理の場合は、フラッシュメモリ２からバッファ９にデータが読み出される。
【００４３】
このフラッシュメモリシステムの処理では、複数組のアドレスとセクタ数を、ＬＢＡレジスタＲ３とセクタ数レジスタＲ２に書き込むことができるため、最初に複数組のアドレスとセクタ数を、外部コマンドと共に設定すれば、複数データ群の処理を連続的に行なうことができる。
【特許文献１】特開２００６−９９５１７号公報
【発明の開示】
【発明が解決しようとする課題】
【００４４】
従来技術では、ホストインターフェースに複数のＬＢＡレジスタとセクタ数レジスタを設けることによって、ホストシステムから複数のアクセス領域を指定できるようにした。従って、フラッシュメモリコントローラは、１番目のアクセス領域にアクセスしているときに、２番目のアクセス領域に関する情報の準備をすることができ、２番目のアクセス領域にアクセスしているときに、３番目のアクセス領域に関する情報の準備をすることができた。各アクセス領域は連続した領域で無くともよいが、フラッシュメモリインターフェースブロックに対して、各アクセス領域毎にアクセスの指示を与えていた。
【００４５】
ホストシステムは、フラッシュメモリに対して読み出し又は書き込みを行う際、アクセス領域が連続している読み出し又は書き込みを指示する指示情報を連続して与えることがある。このような場合であっても、従来技術によるフラッシュメモリコントローラでは、フラッシュメモリインターフェースブロックに対して、各指示情報に対応するアクセス処理毎にアクセスの指示を与える必要があった。従って、アクセス領域が連続している場合であっても、１つのシーケンス処理で読み出し又は書き込みが連続して行われずに、ホストシステムとフラッシュメモリ間のデータの転送効率が低くなるという課題があった。
【００４６】
本発明では、ホストシステムからアクセス領域が連続する読み出し又は書き込みを指示する指示情報が連続して与えられた場合に、ホストシステムとフラッシュメモリ間のデータの転送効率を向上させることができるメモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法を提供することを目的とする。
【課題を解決するための手段】
【００４７】
上記目的を達成するために、本発明によるメモリコントローラは、ホストシステムから与えられる指示情報に基づいて、ブロック単位で記憶データの消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、指示情報に基づいて特定される読み出し領域又は書き込み領域を超える領域に対してフラッシュメモリに記憶されているデータの読み出し処理又はフラッシュメモリへのデータの書き込み処理を開始させる読出書込手段と、指示情報を保持する指示情報保持手段と、ホストシステムから与えられる新たな指示情報に基づいて特定される読み出し領域又は書き込み領域が、指示情報保持手段により保持された情報に基づいて特定される読み出し領域又は書き込み領域と連続する領域であるか否かを判別する判別手段と、判別手段が、連続する領域であると判断した場合には、読出書込手段が実行中の読み出し又は書き込み処理を続行させ、連続する領域でないと判断した場合には、読出書込手段が実行中の読み出し又は書き込み処理を停止させる制御手段とを備える
【００４８】
また、読出書込手段は、指示情報に基づいて特定されるブロック内最終ページまでの領域に対してフラッシュメモリに記憶されているデータの読み出し処理又はフラッシュメモリへのデータの書き込み処理を開始することも好ましい。
【００４９】
上記目的を達成するために、本発明によるフラッシュメモリシステムは、前記メモリコントローラのいずれか１つとフラッシュメモリを備えている。
【００５０】
上記目的を達成するために、本発明のフラッシュメモリの制御方法は、ホストシステムから与えられる指示情報に基づいて、ブロック単位で記憶データの消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、指示情報に基づいて特定される読み出し領域又は書き込み領域を超える領域に対してフラッシュメモリに記憶されているデータの読み出し処理又はフラッシュメモリへのデータの書き込み処理を開始する読出書込ステップと、指示情報を保持する指示情報保持ステップと、ホストシステムから与えられる新たな指示情報に基づいて特定される読み出し領域又は書き込み領域が、指示情報保持ステップにより保持された情報に基づいて特定される読み出し領域又は書き込み領域と連続する領域であるか否かを判別する判別ステップと、判別ステップで、連続する領域であると判断した場合には、読出書込ステップで開始した読み出し又は書き込み処理を続行させ、連続する領域でないと判断した場合には、読出書込ステップで開始した読み出し又は書き込み処理を停止させる制御ステップとを備える。
【発明の効果】
【００５１】
本発明によれば、ホストシステムから与えられる指示情報に基づいたアクセス領域（読み出し領域又は書き込み領域）が連続している場合、異なる指示情報に基づいたアクセス処理（読み出し処理又は書き込み処理）が連続して実行される。そのため、アクセス領域が連続する複数の指示情報に基づいたアクセス処理を断続的に実行した場合よりも、各アクセス処理間の処理が行われていない期間を短くすることができる。
【００５２】
これにより、ホストシステムからアクセス領域が連続する指示情報が連続的に与えられたときに、ホストシステムとフラッシュメモリ間でのデータ転送効率を向上させることができる。
【発明を実施するための最良の形態】
【００５３】
図６は、本発明のフラッシュメモリシステムの機能構成図である。この図を基にして本発明の実施形態の動作を説明する。
【００５４】
まず、ホストシステム４から一番最初の指示情報が、ホストインタフェースブロック７に与えられる。この指示情報には、読み出し又は書き込み等を指示する外部コマンドと、アクセス領域を特定するためのセクタ数及びＬＢＡに関する情報を含んでいる。これらの情報は、ホストインタフェースブロック７内の対応するコマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３に書き込まれる。指示情報保持手段１２は、前回の指示情報に含まれる外部コマンド、セクタ数及びＬＢＡに関する情報を保持する手段であるが、一番最初の指示情報が与えられたときは、これらの情報を保持していない。判別手段１３は、ホストから与えられた指示情報で特定されるアクセス領域（読み出し領域又は書き込み領域）が、指示情報保持手段に保持されている情報によって特定されるアクセス領域と連続するかどうかを判断する。つまり、判別手段１３は、コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３に書き込まれた情報に基づいて特定されるアクセス領域が、指示情報保持手段に保持されている外部コマンド、セクタ数及びＬＢＡに関する情報に基づいて特定されるアクセス領域と連続するかどうかを判断する。従って、ホストシステム４から一番最初の指示情報が与えられたときは、アクセス領域が連続していないと判断する。制御手段１４は、判別手段１３によってアクセス領域が連続していると判断された場合は、読出書込手段であるフラッシュメモリインターフェースブロック８が実行中のアクセス処理（読み出し又は書き込み処理）を続行させ、判別手段１３によってアクセス領域が連続していないと判断された場合は、フラッシュメモリインターフェースブロック８が実行中のアクセス処理を停止させると共に新たなアクセス処理を実行するための設定を行う。しかし、一番最初の指示情報が与えられたときは、フラッシュメモリインターフェースブロック８がアクセス処理を行っていないため、制御手段１４は、実行中のアクセス処理を停止させることなく、アクセス処理を実行するための設定を開始する。又、指示情報保持手段１２は、判別手段１３がアクセス領域が連続しているか否かを判断した後に、コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３に書き込まれている情報をワークエリア（図示せず）に保持する。
【００５５】
アクセス処理を実行するための設定では、フラッシュメモリインターフェースブロック８内の物理ブロックアドレスレジスタＲ１１、セクタ番号レジスタＲ１２及びカウンタＲ１３にフラッシュメモリ２内のアクセス領域を特定する情報が設定される。物理ブロックアドレスレジスタＲ１１には、ＬＢＡレジスタＲ３に書き込まれたＬＢＡの論理ブロック番号（ＬＢＮ）を示す部分に基づいて特定された論理ブロックと対応する物理ブロックの物理ブロックアドレス（ＰＢＡ）又は空きブロックの物理ブロックアドレス（ＰＢＡ）が書き込まれる。尚、論理ブロックと対応する物理ブロックの物理ブロックアドレス（ＰＢＡ）は、アドレス変換テーブルを参照して求められる。セクタ番号レジスタＲ１２には、ＬＢＡレジスタＲ３に書き込まれたＬＢＡのセクタ番号ＳＮに対応する部分の値が書き込まれる。カウンタＲ１３には、セクタ数レジスタＲ２に書き込まれているセクタ数よりも大きい値が書き込まれる。物理ブロックアドレスレジスタＲ１１、セクタ番号レジスタＲ１２及びカウンタＲ１３にフラッシュメモリ２内のアクセス領域を特定する情報が設定された後に、コマンドレジスタＲ１に設定された外部コマンドに対応するシーケンスコマンドがＲＯＭから読み出され、読み出されたシーケンスコマンドに従ってアクセス処理が開始される。
【００５６】
次に、カウンタＲ１３に設定される値について説明する。本実施形態では物理ブロック内の最終ページ（セクタ領域）までアクセスできるような値をカウンタＲ１３に設定する。つまり、1個の物理ブロックに２５６個のセクタ領域（セクタ番号ＳＮ＃０〜＃２５５に対応する２５６個のセクタ領域）が含まれている場合には、セクタ番号ＳＮ＃２５５に対応するセクタ領域までアクセスすることができるような値がカウンタＲ１３に書き込まれる。
【００５７】
ここで、ＬＢＡレジスタＲ３に書き込まれたＬＢＡの論理ブロック番号（ＬＢＮ）を示す部分の値をｉ、セクタ番号ＳＮに対応する部分の値をｊ、セクタ数レジスタＲ２に書き込まれた値をｋとした場合、カウンタＲ１３にはｋではなく２５６−ｊが書き込まれる。尚、物理ブロックアドレスレジスタＲ１１には論理ブロック番号（ＬＢＮ）＃ｉと対応する物理ブロックアドレス（ＰＢＡ）が書き込まれ、セクタ番号レジスタＲ１２にはｊが書き込まれる。又、この設定では、セクタ番号ＳＮ＃ｊに対応するセクタ領域からセクタ番号ＳＮ＃２５５に対応するセクタ領域までアクセスすることができる。
【００５８】
アクセス領域が２個の物理ブロックに跨っている場合（ｋが２５６−ｊより大きい場合）には、この設定でのアクセス処理が終了した後に、物理ブロックアドレスレジスタＲ１１、セクタ番号レジスタＲ１２及びカウンタＲ１３にアクセス領域を特定する情報が追加設定される。この追加設定では、物理ブロックアドレスレジスタＲ１１には論理ブロック番号（ＬＢＮ）＃ｉ＋１と対応する物理ブロックアドレス（ＰＢＡ）が書き込まれ、セクタ番号レジスタＲ１２には０が書き込まれ、カウンタＲ１３には２５６が書き込まれる。この設定では、セクタ番号ＳＮ＃０に対応するセクタ領域からセクタ番号ＳＮ＃２５５に対応するセクタ領域までアクセスすることができる。
【００５９】
次に、ホストシステム４から２番目の指示情報が、ホストインタフェースブロック７に与えられた場合について説明する。２番目の指示情報に含まれる外部コマンド、アクセス領域を特定するためのセクタ数及びＬＢＡに関する情報は、ホストインタフェースブロック７内の対応するコマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３に書き込まれる。又、指示情報保持手段１２には、前回の指示情報、つまり、一番最初の指示情報に含まれていた外部コマンド、セクタ数及びＬＢＡに関する情報が保持されている。判別手段１３は、ＬＢＡレジスタＲ３に書き込まれたＬＢＡ（２番目の指示情報に含まれるＬＢＡ）が、指示情報保持手段に保持されているセクタ数及びＬＢＡ（一番最初の指示情報に含まれていたセクタ数及びＬＢＡ）に基づいて特定されるアクセス領域の末尾のＬＢＡの次のＬＢＡであるか否かを判断する。尚、コマンドレジスタＲ１に書き込まれた外部コマンド（２番目の指示情報に含まれる外部コマンド）と、指示情報保持手段に保持されている外部コマンド（一番最初の指示情報に含まれる外部コマンド）が異なる外部コマンドの場合、例えば、一方が読み出しを指示する外部コマンドで、他方が書き込みを指示する外部コマンドの場合、アクセス領域が連続していないと判断する。
【００６０】
ここで、アクセス領域が連続している場合は、ＬＢＡレジスタＲ３に書き込まれたＬＢＡが、指示情報保持手段に保持されているセクタ数及びＬＢＡに基づいて特定されるアクセス領域の末尾のＬＢＡの次のＬＢＡに一致し、アクセス領域が連続していない場合は、ＬＢＡレジスタＲ３に書き込まれたＬＢＡが、指示情報保持手段に保持されているセクタ数及びＬＢＡに基づいて特定されるアクセス領域の末尾のＬＢＡの次のＬＢＡに一致しない。つまり、ＬＢＡレジスタＲ３に書き込まれたＬＢＡの値をａ、指示情報保持手段に保持されているセクタ数及びＬＢＡの値をｂ、ｃとした場合、ａ＝ｂ＋ｃであればアクセス領域が連続していると判断され、ａ＝ｂ＋ｃでなければアクセス領域が連続していないと判断される。
【００６１】
制御手段１４は、判別手段１３の判断に従って、読出書込手段であるフラッシュメモリインターフェースブロック８が実行中のアクセス処理を続行若しくは停止させる。つまり、アクセス領域が連続していると判断された場合は、フラッシュメモリインターフェースブロック８が実行中のアクセス処理を続行させる。一方、アクセス領域が連続していないと判断された場合は、シーケンス処理を終了させ、フラッシュメモリ２に対するアクセス処理を停止させる。アクセス処理がフラッシュメモリ２からのデータ読み出しの場合は、一番最初の指示情報に対応するデータを全てホストシステム４に転送した後でシーケンス処理を終了させる。アクセス処理がフラッシュメモリ２へのデータ書き込みの場合は、一番最初の指示情報に対応するデータを全てフラッシュメモリ２に書き込んだ後でシーケンス処理を終了させる。
【００６２】
アクセス領域が連続していない場合は、フラッシュメモリインターフェースブロック８が実行中のアクセス処理を停止させた後に、フラッシュメモリインターフェースブロック８内の物理ブロックアドレスレジスタＲ１１、セクタ番号レジスタＲ１２及びカウンタＲ１３にアクセス処理を実行するための情報を設定し、新たなアクセス処理を開始させる。又、指示情報保持手段１２は、判別手段１３がアクセス領域が連続しているか否かを判断した後に、コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３に書き込まれている情報をワークエリア（図示せず）に保持する。つまり、指示情報保持手段１２には、２番目の指示情報に含まれていた外部コマンド、セクタ数及びＬＢＡに関する情報が保持される。
【００６３】
本実施形態におけるフラッシュメモリ２、フラッシュメモリインターフェースブロック８、バッファ９、ホストインタフェースブロック７及びホストシステム４間の動作は次のようになる。
【００６４】
読み出しの場合、まず、フラッシュメモリインターフェースブロック８が、フラッシュメモリ２からデータを読み出し、バッファ９に保持する。次に、ホストインタフェースブロック７が、バッファ９からホストシステム４にバッファ９のデータを転送する。
【００６５】
フラッシュメモリインターフェースブロック８は、バッファ９に空きが有るときは、フラッシュメモリ２からデータを読み出し、読み出したデータをバッファ９に保持させる。バッファ９に空き領域が無いときは、バッファ９に空き領域ができるのを待ち、ホストインタフェースブロック７が、バッファ９に保持されているデータをホストシステム４に転送して、バッファ９に空き領域ができたときに次のデータを読み出す。尚、バッファ９に保持されているデータをホストシステム４に転送して空き領域ができたときは、空き領域を示すフラグがセットされ、フラッシュメモリ２から読み出したデータをバッファ９に保持させたときは、空き領域を示すフラグがリセットされる。
【００６６】
ホストインタフェースブロック７は、ホストシステム４からの要求に従って、バッファ９に保持されているデータをホストシステム４に転送する。指示情報保持手段１２が保持しているセクタ数分のデータをホストシステム４に転送した後は、ホストシステム４からの要求を待つ状態になる。フラッシュメモリインターフェースブロック８は、バッファ９の空き領域が無くなるまでフラッシュメモリ２からデータを読み出し、空き領域が無くなったところでバッファ９に空き領域ができるのを待つ状態になる。
【００６７】
この後、ホストシステム４から指示情報が与えられて、その指示情報に基づくアクセス領域が連続している場合は、ホストシステム４から要求があったときに、バッファ９に保持されているデータをホストシステム４に転送する処理を再開する。
【００６８】
書き込みの場合、まず、ホストインタフェースブロック７が、ホストシステム４から与えられたフラッシュメモリ２に書き込むデータをバッファ９に転送する。次にフラッシュメモリインターフェースブロック８が、バッファ９のデータをフラッシュメモリ２に転送する。フラッシュメモリインターフェースブロック８は、バッファ９にデータがないとき、ホストシステム４から与えられるデータがバッファ９に保持されるのを待つ状態になる。従って、フラッシュメモリインターフェースブロック８は、指示情報保持手段１２が保持しているセクタ数分のデータをフラッシュメモリ２に転送した後は、ホストシステム４から与えられるデータがバッファ９に保持されるのを待つ状態になる。
【００６９】
この後、ホストシステム４から指示情報が与えられて、その指示情報に基づくアクセス領域が連続している場合は、ホストシステム４から与えられるデータがバッファ９に保持されたときに、バッファ９に保持されているデータをホストシステム４に転送する処理を再開する。
【００７０】
次に、図８を参照して、本発明にかかるアクセス処理を具体的に説明する。尚、ホストシステム４からは読み出しを指示する外部コマンドが与えられ、論理ブロック番号（ＬＢＮ）＃０は物理ブロックアドレス（ＰＢＡ）＃ｐに対応するものとする。最初にホストインタフェースブロック７に与えられたＬＢＡとセクタ数が、ＬＢＡ＝０、セクタ数＝１６の場合、フラッシュメモリインターフェースブロック８には、物理ブロックアドレスレジスタＲ１１にｐ、セクタ番号レジスタＲ１２に０、カウンタＲ１３に２５６が設定され、読み出し処理が開始される。その次に与えられたＬＢＡとセクタ数が、ＬＢＡ＝１６、セクタ数＝１６の場合、アクセス領域が連続しているので、読み出し処理を続行させる。その次に与えられたＬＢＡとセクタ数が、ＬＢＡ＝３２、セクタ数＝１６の場合、アクセス領域が連続しているので、読み出し処理を続行させる。その次に与えられたＬＢＡとセクタ数が、ＬＢＡ＝６４、セクタ数＝１６の場合、アクセス領域が連続していないので、読み出し処理を停止させる。その後、フラッシュメモリインターフェースブロック８には、物理ブロックアドレスレジスタＲ１１にｐ、セクタ番号レジスタＲ１２に６４、カウンタＲ１３に１９２が設定され、読み出し処理が開始される。
【００７１】
以上述べたように、本発明にかかるアクセス処理では、連続するアクセス領域にアクセスする場合に、フラッシュメモリインターフェースブロック８にアクセス処理を指示する回数が大幅に減少させることができる。
【００７２】
このアクセス処理では、ホストシステム４から与えられた指示情報に含まれるセクタ数がｍの場合、ｍより大きい値ｎ（ｎ＞ｍ）がセクタ数として与えられたときと同等の値をフラッシュメモリインターフェースブロック８内の物理ブロックアドレスレジスタＲ１１、セクタ番号レジスタＲ１２及びカウンタＲ１３に設定して、アクセス処理を開始する。その後、ホストシステム４から次の指示情報が与えられ、その指示情報に基づくアクセス領域が連続していれば、アクセス処理が続行される。アクセス領域が連続しているか否かは、指示情報に含まれている情報に基づいて判断することができる。
【００７３】
又、以上述べた実施形態は全て本発明を例示的に示すものであって限定的に示すものではなく、本発明は他の種々の変形態様及び変更態様で実施することができる。従って本発明の範囲は特許請求の範囲及びその均等範囲によってのみ規定されるものである。
【図面の簡単な説明】
【００７４】
【図１】フラッシュメモリシステムを概略的に示すブロック図である。
【図２】図１のフラッシュメモリのアドレス空間の構造を概略的に示す図である。
【図３】図１のフラッシュメモリシステムにおけるアドレス変換の概要を説明するための図である。
【図４】図１のフラッシュメモリシステムのホストインタフェースブロック及びフラッシュメモリインターフェースブロックの詳細を示すブロック図である。
【図５】特許文献１のフラッシュメモリシステムのホストインタフェースブロックの詳細を示すブロック図である。
【図６】本発明のフラッシュメモリシステムのホストインタフェースブロック及びフラッシュメモリインターフェースブロックの詳細を示すブロック図である。
【図７】アドレス変換テーブルを示す図である。
【図８】本発明のフラッシュメモリシステムにおける読み出し又は書き込みの連続実行を示す図である。
【符号の説明】
【００７５】
１  フラッシュメモリシステム
２  フラッシュメモリ
３  メモリコントローラ
４  ホストシステム
５  外部バス
６  内部バス
７  ホストインタフェースブロック
８  フラッシュメモリインターフェースブロック
９  バッファ
１２  指示情報保持手段
１３  判別手段
１４  制御手段
１５  アドレス情報保持手段
Ｒ１  コマンドレジスタ
Ｒ２  セクタ数レジスタ
Ｒ３  ＬＢＡレジスタ
Ｒ１１  物理ブロックアドレスレジスタ
Ｒ１２  セクタ番号レジスタ
Ｒ１３  カウンタ
【図１】
2008009874.tif 000003
【図２】
2008009874.tif 000004
【図３】
2008009874.tif 000005
【図４】
2008009874.tif 000006
【図５】
2008009874.tif 000007
【図６】
2008009874.tif 000008
【図７】
2008009874.tif 000009
【図８】
2008009874.tif 000010