JP4316824B2 - メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 - Google Patents
メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 Download PDFInfo
- Publication number
- JP4316824B2 JP4316824B2 JP2001164546A JP2001164546A JP4316824B2 JP 4316824 B2 JP4316824 B2 JP 4316824B2 JP 2001164546 A JP2001164546 A JP 2001164546A JP 2001164546 A JP2001164546 A JP 2001164546A JP 4316824 B2 JP4316824 B2 JP 4316824B2
- Authority
- JP
- Japan
- Prior art keywords
- page
- virtual
- block
- data
- flash memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Description
【発明の属する利用分野】
本発明は、メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法に関し、特に、フラッシュメモリに対する一連のデータ書き込み処理をより高速に行うことができるメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法に関する。
【0002】
【従来の技術】
近年、メモリカードやシリコンディスクなどに用いられる半導体メモリとして、フラッシュメモリ、特にNAND型フラッシュメモリが用いられることが多い。NAND型フラッシュメモリは、メモリセルを消去状態(論理値=1)から書込状態(論理値=0)に変化させる場合は、これをメモリセル単位で行うことが可能である一方、メモリセルを書込状態(0)から消去状態(1)に変化させる場合は、これをメモリセル単位で行うことができず、複数のメモリセルからなる所定の消去単位(ブロック単位)でしかこれを行うことができない。かかる一括消去動作は、一般的に「ブロック消去」と呼ばれる。
【0003】
このように、NAND型フラッシュメモリにおいては、書込状態(0)から消去状態(1)への変化をメモリセル単位で行うことができないため、フラッシュメモリにデータを書き込む場合には、データを書き込むべき領域に含まれる全てのメモリセルを事前にブロック消去しておく必要がある。ブロック消去された領域は、データが格納されていない空きブロックとなり、フラッシュメモリに新たなデータを書き込む場合には、このような空きブロックが検索され、発見された空きブロックに対して当該データが書き込まれることになる。ここで、各ブロックは、それぞれ、データの読み出し及び書き込みにおけるアクセス単位である複数の「ページ」によって構成されている。
【0004】
このようなフラッシュメモリへのデータの書き込みは、次のようにして行われる。
【0005】
まず、ホストコンピュータからデータ書き込み要求が発行され、書き込み先のアドレス及び書き込むべきデータが送信されると、かかるデータが、コントローラ内に設けられたメモリに一時的に格納される。次いで、コントローラは、一時的にメモリに格納されているデータをフラッシュメモリへ転送し、これを書き込み先のアドレスが示すページに書き込むよう、フラッシュメモリに対して指示する。これに応答して、フラッシュメモリは、コントローラから転送されたデータを指定されたページに格納し、これにより、一連のデータ書き込み処理が完了する。
【0006】
【発明が解決しようとする課題】
従来より、同一ブロック内における各ページは、ホストコンピュータから見て、連続するアドレスを有するものとして取り扱われている。一方、ホストコンピュータからのデータ書き込み要求は、連続する複数アドレスに対してなされることが多く、この場合、コントローラは、あるブロック内の連続する複数ページに、次々とデータを書き込む必要がある。
【0007】
この場合、コントローラはまず、最初のページに書き込むべきデータをフラッシュメモリに転送し、かかるデータを当該ページに書き込むよう、フラッシュメモリに対して指示する。これに応答して、フラッシュメモリが、転送されたデータを指定されたページに格納すると、次いで、コントローラは、次のページに書き込むべきデータをフラッシュメモリに転送し、当該ページに書き込むよう、フラッシュメモリに対して指示する。このような処理を、要求された複数アドレスについて次々と実行することにより、連続する複数ページへの一連のデータの書き込み処理が完了する。
【0008】
ここで、ひとつのページに対する書き込み処理に要する時間は、主に、書き込むべきデータをコントローラからフラッシュメモリに転送するために必要な時間(データ転送時間)、コントローラからフラッシュメモリに書き込み命令を発行する時間(命令発行時間)、実際にフラッシュメモリにデータが書き込まれる時間(フラッシュプログラム時間)等からなり、このうち、フラッシュプログラム時間は、特に長い時間(例えば、約200μsec)を要する。
【0009】
従来は、このように比較的長い時間を要する1回のデータ書き込み処理を、ページ単位で次々と行っているため、ホストコンピュータより、連続する複数アドレスに対してデータ書き込み要求がなされた場合、一連のデータの書き込み処理が完了するには、データを書き込むべきページ数に実質的に比例した時間が必要であった。
【0010】
このため、ホストコンピュータより連続する複数アドレスに対してデータ書き込み要求がなされた場合に、一連のデータの書き込み処理をより高速に行うことができるメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法が望まれていた。
【0011】
したがって、本発明の目的は、フラッシュメモリに対する一連のデータ書き込み処理をより高速に行うことができるメモリコントローラ及びこのようなメモリコントローラを備えるフラッシュメモリシステムを提供することである。
【0012】
また、本発明の他の目的は、フラッシュメモリに対する一連のデータ書き込み処理をより高速に行うことができるフラッシュメモリの制御方法を提供することである。
【0013】
【課題を解決するための手段】
本発明のかかる目的は、ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数のページを含む物理ブロック単位で消去が行われる複数個のフラッシュメモリにアクセスするメモリコントローラであって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当てる仮想ブロックアドレス割当て手段と、
それぞれの前記フラッシュメモリから、物理ブロックアドレスの同異に依存せずに、1個ずつ選択した複数個の物理ブロックを仮想ブロックとして管理するとともに、前記仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理する仮想ブロック管理手段と、
同一の前記仮想ブロックに含まれる複数の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てるとともに、各ページに割り当てられる前記ホストアドレスの順番で、各ページに前記仮想ブロック内での連番を割り当て、割り当てた連番を仮想ページ番号として管理するページ管理手段と、
ホストコンピュータより供給される前記ホストアドレスに基づいてアクセス対象の領域を特定する手段であって、ホストコンピュータより供給される前記ホストアドレスが属する前記仮想ブロックアドレスと対応関係にある前記仮想ブロックを特定するとともに、特定した前記仮想ブロック内のアクセス対象の領域における前記仮想ページ番号が先頭のページを特定する領域特定手段と、
前記仮想ブロックに属するデータが格納されていないページであって、前記仮想ページ番号の順番が後のページにデータが格納されているページが存在しないページのうちで前記仮想ページ番号が先頭のページを特定し、特定したページを前記仮想ブロックに属するスタートページとして管理するスタートページ特定手段と、
前記領域特定手段により特定された前記仮想ブロックに属する前記スタートページに対応する前記仮想ページ番号と、前記領域特定手段により特定されたページの前記仮想ページ番号とを比較することにより、前記領域特定手段により特定された前記仮想ブロック内のアクセス対象の領域にホストコンピュータより供給されるデータを書き込むことが可能か否かを判断する判断手段と、
前記判断手段によりデータを書き込むことが可能であると判断された場合に、前記領域特定手段により特定された前記仮想ブロック内のアクセス対象の領域にホストコンピュータより供給されるデータを書き込む書込み手段とを備え、
前記判断手段が、前記領域特定手段により特定されたページの前記仮想ページ番号が、前記スタートページに対応する前記仮想ページ番号と一致している場合または前記スタートページに対応する前記仮想ページ番号よりも大きい場合にデータを書き込むことが可能であると判断するように構成されたことを特徴とするメモリコントローラによって達成される。
本発明の前記目的はまた、かかる構成を有するメモリコントローラと複数個のフラッシュメモリを備えたフラッシュメモリシステムによって達成される。
本発明の前記目的はまた、ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数のページを含む物理ブロック単位で消去が行われる複数個のフラッシュメモリにアクセスするフラッシュメモリの制御方法であって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当てる仮想ブロックアドレス割当てステップと、
それぞれの前記フラッシュメモリから、物理ブロックアドレスの同異に依存せずに、1個ずつ選択した複数個の物理ブロックを仮想ブロックとして管理するとともに、前記仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理する仮想ブロック管理ステップと、
同一の前記仮想ブロックに含まれる複数の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てるとともに、各ページに割り当てられる前記ホストアドレスの順番で各ページに前記仮想ブロック内での連番を割り当て、割り当てた連番を仮想ページ番号として管理するページ管理ステップと、
ホストコンピュータより供給される前記ホストアドレスに基づいてアクセス対象の領域を特定するステップであって、ホストコンピュータより供給される前記ホストアドレスが属する前記仮想ブロックアドレスと対応関係にある前記仮想ブロックを特定するとともに、特定した前記仮想ブロック内のアクセス対象の領域における前記仮想ページ番号が先頭のページを特定する領域特定ステップと、
前記仮想ブロックに属するデータが格納されていないページであって、前記仮想ページ番号の順番が後のページにデータが格納されているページが存在しないページのうちで前記仮想ページ番号が先頭のページを特定し、特定したページを前記仮想ブロックに属するスタートページとして管理するスタートページ特定ステップと、
前記領域特定ステップにより特定された前記仮想ブロックに属する前記スタートページに対応する前記仮想ページ番号と、前記領域特定ステップにより特定されたページの前記仮想ページ番号とを比較することにより、前記領域特定ステップにより特定された前記仮想ブロック内のアクセス対象の領域にホストコンピュータより供給されるデータを書き込むことが可能か否かを判断する判断ステップと、
前記判断ステップによりデータを書き込むことが可能であると判断された場合に、前記領域特定ステップにより特定された前記仮想ブロック内のアクセス対象の領域にホストコンピュータより供給されるデータを書き込む書込みステップとを備え、
前記判断ステップにおいて、前記領域特定ステップにより特定されたページの前記仮想ページ番号が、前記スタートページに対応する前記仮想ページ番号と一致している場合または前記スタートページに対応する前記仮想ページ番号よりも大きい場合にデータを書き込むことが可能であると判断することを特徴とするフラッシュメモリの制御方法によって達成される。
本発明の前記目的はまた、ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数のページを含む物理ブロック単位で消去が行われるバンク構造のフラッシュメモリにアクセスするメモリコントローラであって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当てる仮想ブロックアドレス割当て手段と、
それぞれのバンクから、当該バンク内での順番の同異に依存せずに、1個ずつ選択した複数個の物理ブロックを仮想ブロックとして管理するとともに、前記仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理する仮想ブロック管理手段と、
同一の前記仮想ブロックに含まれる複数の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てるとともに、各ページに割り当てられる前記ホストアドレスの順番で各ページに前記仮想ブロック内での連番を割り当て、割り当てた連番を仮想ページ番号として管理するページ管理手段と、
ホストコンピュータより供給される前記ホストアドレスに基づいてアクセス対象の領域を特定する手段であって、ホストコンピュータより供給される前記ホストアドレスが属する前記仮想ブロックアドレスと対応関係にある前記仮想ブロックを特定するとともに、特定した前記仮想ブロック内のアクセス対象の領域における前記仮想ページ番号が先頭のページを特定する領域特定手段と、
前記仮想ブロックに属するデータが格納されていないページであって、前記仮想ページ番号の順番が後のページにデータが格納されているページが存在しないページのうちで前記仮想ページ番号が先頭のページを特定し、特定したページを前記仮想ブロックに属するスタートページとして管理するスタートページ特定手段と、
前記領域特定手段により特定された前記仮想ブロックに属する前記スタートページに対応する前記仮想ページ番号と、前記領域特定手段により特定されたページの前記仮想ページ番号とを比較することにより、前記領域特定手段により特定された前記仮想ブロック内のアクセス対象の領域にホストコンピュータより供給されるデータを書き込むことが可能か否かを判断する判断手段と、
前記判断手段によりデータを書き込むことが可能であると判断された場合に、前記領域特定手段により特定された前記仮想ブロック内のアクセス対象の領域にホストコンピュータより供給されるデータを書き込む書込み手段とを備え、
前記判断手段が、前記領域特定手段により特定されたページの前記仮想ページ番号が、前記スタートページに対応する前記仮想ページ番号と一致している場合または前記スタートページに対応する前記仮想ページ番号よりも大きい場合にデータを書き込むことが可能であると判断するように構成されたことを特徴とするメモリコントローラによって達成される。
本発明の前記目的はまた、かかる構成を有するメモリコントローラとバンク構造のフラッシュメモリを備えたフラッシュメモリシステムによって達成される。
本発明の前記目的はまた、ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数のページを含む物理ブロック単位で消去が行われるバンク構造のフラッシュメモリにアクセスするフラッシュメモリの制御方法であって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当てる仮想ブロックアドレス割当てステップと、
それぞれのバンクから、当該バンク内での順番の同異に依存せずに、1個ずつ選択した複数個の物理ブロックを仮想ブロックとして管理するとともに、前記仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理する仮想ブロック管理ステップと、
同一の前記仮想ブロックに含まれる複数の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てるとともに、各ページに割り当てられる前記ホストアドレスの順番で各ページに前記仮想ブロック内での連番を割り当て、割り当てた連番を仮想ページ番号として管理するページ管理ステップと、
ホストコンピュータより供給される前記ホストアドレスに基づいてアクセス対象の領域を特定するステップであって、ホストコンピュータより供給される前記ホストアドレスが属する前記仮想ブロックアドレスと対応関係にある前記仮想ブロックを特定するとともに、特定した前記仮想ブロック内のアクセス対象の領域における前記仮想ページ番号が先頭のページを特定する領域特定ステップと、
前記仮想ブロックに属するデータが格納されていないページであって、前記仮想ページ番号の順番が後のページにデータが格納されているページが存在しないページのうちで前記仮想ページ番号が先頭のページを特定し、特定したページを前記仮想ブロックに属するスタートページとして管理するスタートページ特定ステップと、
前記領域特定ステップにより特定された前記仮想ブロックに属する前記スタートページに対応する前記仮想ページ番号と、前記領域特定ステップにより特定されたページの前記仮想ページ番号とを比較することにより、前記領域特定ステップにより特定された前記仮想ブロック内のアクセス対象の領域にホストコンピュータより供給されるデータを書き込むことが可能か否かを判断する判断ステップと、
前記判断ステップによりデータを書き込むことが可能であると判断された場合に、前記領域特定ステップにより特定された前記仮想ブロック内のアクセス対象の領域にホストコンピュータより供給されるデータを書き込む書込みステップとを備え、
前記判断ステップにおいて、前記領域特定ステップにより特定されたページの前記仮想ページ番号が、前記スタートページに対応する前記仮想ページ番号と一致している場合または前記スタートページに対応する前記仮想ページ番号よりも大きい場合にデータを書き込むことが可能であると判断することを特徴とするフラッシュメモリの制御方法によって達成される。
【0014】
本発明によれば、隣り合うホストアドレスが、仮想ブロック内において互いに異なる物理ブロックに割り当てられているため、連続する複数アドレスに対するアクセスがホストコンピュータから要求された場合、これらアドレスによりアクセスされる物理ブロックは、互いに異なる物理ブロックとなる。このため、アクセスされた各物理ブロックがそれぞれ独立して動作することにより、一連の処理を並列に行うことができる。これにより、フラッシュメモリに対する一連の処理をより高速に行うことが可能となる。
【0015】
本発明の好ましい実施態様においては、メモリコントローラが、前記ホストコンピュータより空きページに対するユーザデータの書き込みが要求されたことに応答して、前記空きページが属する物理ブロックについてのブロック間転送を行うことなく、前記空きページへ前記ユーザデータを書き込む書込手段とをさらに備えている。
【0016】
本発明の好ましい実施態様によれば、ブロック間転送を行うことなく、ユーザデータの書き込みを行っているので、ブロック間転送の頻度が低くなる。このため、データの書き込みに必要な一連の処理を高速に行うことが可能となる。
【0017】
本発明のさらに好ましい実施態様においては、メモリコントローラが、前記ホストコンピュータより使用済みページに対するユーザデータの書き込みが要求されたことに応答して、前記使用済みページが属する仮想ブロックを構成する複数の物理ブロックのうち、前記使用済みページが属する物理ブロック以外の物理ブロックについてのブロック間転送を行うことなく、前記使用済みページが属する物理ブロックについてブロック間転送を行う手段をさらに備えている。
【0018】
本発明のさらに好ましい実施態様によれば、前記使用済みページが属する物理ブロックについてのみブロック間転送を行っているので、ブロック間転送の頻度が低くなる。このため、データの書き込みに必要な一連の処理を高速に行うことが可能となる。
【0019】
本発明のさらに好ましい実施態様においては、メモリコントローラが、各仮想ブロックに含まれる仮想ページのうち、先頭の仮想ページからユーザデータが書き込まれている最後の仮想ページまでの仮想ページを使用済みページとして取り扱い、それ以外の仮想ページを空きページとして取り扱う。
【0020】
本発明のさらに好ましい実施態様においては、前記グループが、前記複数の物理ブロックを少なくともメモリチップ別に分類するものである。
【0021】
本発明の好ましい実施態様によれば、メモリチップ別に各物理ブロックがグループ分けされていることから、連続する複数のホストアドレスに対応する物理ブロックは、それぞれ異なるメモリチップに属することとなる。このため、これらメモリチップが、並列処理を行うことができない通常のメモリチップであっても、それぞれのメモリチップが独立して動作することにより、並列処理を行うことが可能となる。
【0022】
本発明のさらに好ましい実施態様においては、前記グループが、前記複数の物理ブロックを少なくともバンク別に分類するものである。
【0023】
本発明のさらに好ましい実施態様によれば、バンク別に各物理ブロックがグループ分けされていることから、連続する複数のホストアドレスに対応する物理ブロックは、それぞれ異なるバンクに属することとなる。このため、メモリチップが一つのみであっても、それぞれのバンクが独立して動作することにより、並列処理を行うことが可能となる。特に、メモリチップを複数個用い、互いに異なるバンクに属する複数の物理ブロックを、複数のメモリチップに亘って仮想的に結合することにより仮想ブロックを構成すれば、より多くの処理を並列に実行することが可能となるので、フラッシュメモリに対する一連の処理をより高速に行うことが可能となる。
【0024】
本発明の前記目的はまた、ホストコンピュータより供給されるホストアドレスに基づいて、それぞれn個の物理ページからなる複数の物理ブロックによって構成されるメモリにアクセスするメモリコントローラであって、前記ホストコンピュータよりユーザデータの書き込みが要求されたことに応答して、m個の物理ブロックを仮想的に結合することによってn×m個の仮想ページからなる仮想ブロックを形成する手段と、前記n×m個の仮想ページのうち、前記ホストアドレスにより特定される第1の仮想ページのユーザ領域内へ前記ユーザデータを書き込む手段と、前記n×m個の仮想ページのうち、先頭の仮想ページの冗長領域内へ空きページ情報を書き込む手段とを備えるメモリコントローラによって達成される。
【0025】
本発明によれば、m個の物理ブロックを仮想的に結合することによってn×m個の仮想ページからなる仮想ブロックを形成するとともに、先頭の仮想ページの冗長領域内へ空きページ情報を書き込んでいることから、これを参照することにより、ユーザデータの書き込みが行われた後における当該仮想ブロックの空きページを知ることができる。
【0026】
本発明の好ましい実施態様においては、前記空きページ情報が、空きページが存在するか否かを示す空きページフラグと、空きページを特定する空きページデータとを少なくとも含んでいる。
【0027】
本発明のさらに好ましい実施態様においては、前記空きページデータが、前記第1の仮想ページに続く第2の仮想ページを特定するデータである。
【0028】
本発明のさらに好ましい実施態様によれば、第2の仮想ページ以降の仮想ページが空きページであることが保証されるため、第2の仮想ページ以降の仮想ページへの新たなユーザデータの書き込みが要求された場合に、ブロック間転送を行うことなく、ユーザデータの追加的な書き込みを行うことが可能となる。
【0029】
本発明のさらに好ましい実施態様においては、前記第1の仮想ページと前記第2の仮想ページが互いに異なる物理ブロックに属している。
【0030】
本発明のさらに好ましい実施態様によれば、隣り合うホストアドレスが、同じ仮想ブロック内の互いに異なる物理ブロックに対応することになるため、各物理ブロックがそれぞれ独立して動作することができる。これにより、フラッシュメモリに対する一連の処理をより高速に行うことが可能となる。
【0031】
本発明のさらに好ましい実施態様においては、メモリコントローラが、前記ホストコンピュータより前記仮想ブロックに対するユーザデータの書き込みがさらに要求されたことに応答して、前記空きページ情報に基づき、前記ホストコンピュータより供給されたホストアドレスにより特定される第3の仮想ページへの前記ユーザデータの追加的な書き込みが可能であるか否かを判断する手段と、前記判断の結果、ユーザデータの追加的な書き込みが可能であると判断されたことに応答して、前記第3の仮想ページのユーザ領域内へ前記ユーザデータを書き込む手段と、前記第2の仮想ページの冗長領域内へ前記第3の仮想ページに続く第4の仮想ページを特定する空きページデータを書き込む手段とをさらに備えている。
【0032】
本発明のさらに好ましい実施態様によれば、第4の仮想ページ以降の仮想ページが空きページであることが保証されるため、第4のページ以降のページへの新たなユーザデータの書き込みが要求された場合に、ブロック間転送を行うことなく、ユーザデータの追加的な書き込みを行うことが可能となる。
【0033】
本発明のさらに好ましい実施態様においては、前記第3の仮想ページと前記第4の仮想ページが互いに異なる物理ブロックに属している。
【0034】
本発明のさらに好ましい実施態様においては、メモリコントローラが、前記判断の結果、ユーザデータの追加的な書き込みが不可能であると判断されたことに応答して、前記第3の仮想ページが属する物理ブロックを他の物理ブロックに入れ替える手段をさらに備えている。
【0035】
本発明のさらに好ましい実施態様によれば、ユーザデータの追加的な書き込みが不可能な仮想ページが属する物理ブロックについてのみブロック間転送を行っているので、ブロック間転送の頻度が低くなる。このため、データの書き込みに必要な一連の処理を高速に行うことが可能となる。
【0036】
本発明のさらに好ましい実施態様においては、メモリコントローラが、前記ホストコンピュータより前記仮想ブロックの最後の仮想ページに対するユーザデータの書き込みがさらに要求されたことに応答して、前記空きページ情報に基づき、前記最後の仮想ページへの前記ユーザデータの追加的な書き込みが可能であるか否かを判断する手段と、前記判断の結果、ユーザデータの追加的な書き込みが可能であると判断されたことに応答して、前記最後の仮想ページのユーザ領域内へ前記ユーザデータを書き込む手段と、前記先頭の仮想ページの冗長領域内に格納された前記空きページフラグを変化させる手段とをさらに備えている。
【0037】
本発明のさらに好ましい実施態様によれば、最後の仮想ページに対してユーザデータを書き込む際に、先頭の仮想ページの冗長領域内に格納された空きページフラグを変化させていることから、これを参照することにより、当該物理ブロックへの新たなユーザデータの書き込みを禁止することができる。
【0038】
本発明のさらに好ましい実施態様においては、前記先頭の仮想ページと前記最後の仮想ページが互いに異なる物理ブロックに属している。
【0039】
本発明の前記目的はまた、複数の物理ブロックからなるフラッシュメモリと、ホストコンピュータより供給されるホストアドレスに基づいて前記フラッシュメモリにアクセスするメモリコントローラとを備え、前記コントローラが、前記各物理ブロックを複数のグループに分類する手段と、互いに異なるグループに属する複数の物理ブロックを仮想的に結合することにより複数の仮想ブロックを形成する手段と、隣り合うホストアドレスを前記仮想ブロック内において互いに異なる物理ブロックに割り当てる手段と、前記仮想ブロックに含まれる空きページを検出する手段とを備えることを特徴とするフラッシュメモリシステムによって達成される。
【0040】
本発明においても、隣り合うホストアドレスが、仮想ブロック内において互いに異なる物理ブロックに割り当てられているため、アクセスされた各物理ブロックがそれぞれ独立して動作することにより、一連の処理を並列に行うことができる。これにより、フラッシュメモリに対する一連の処理をより高速に行うことが可能となる。
【0041】
本発明の好ましい実施態様においては、前記各物理ブロックがユーザ領域と冗長領域とを備え、前記冗長領域には、自己が属する仮想ブロックを特定する情報が記録されている。
【0042】
本発明のさらに好ましい実施態様においては、前記冗長領域には、自己が属する仮想ブロックに含まれる前記空きページに関する情報がさらに格納されている。
【0043】
本発明の前記目的はまた、複数の物理ブロックを仮想的に結合することにより仮想ブロックを形成するステップと、ホストコンピュータよりデータの書き込みが指示された場合、前記仮想ブロックを構成する全ての物理ブロックの追書込不能領域が書き込み対象となっていることに応答して、前記仮想ブロックを構成する全ての物理ブロックを他の物理ブロックに置き換えるステップとを備えるフラッシュメモリの制御方法によって達成される。
【0044】
本発明の好ましい実施態様においては、フラッシュメモリの制御方法が、前記ホストコンピュータよりデータの書き込みが指示された場合、前記仮想ブロックを構成する一部の物理ブロックの追書込不能領域が書き込み対象となっており、前記仮想ブロックを構成する残りの物理ブロックの追書込不能領域が書き込み対象となっていないことに応答して、前記残りの物理ブロックを他の物理ブロックに置き換えることなく、前記一部の物理ブロックを他の物理ブロックに置き換えるステップをさらに備えている。
【0045】
本発明の好ましい実施態様においては、フラッシュメモリの制御方法が、前記残りの物理ブロックの追書込可能領域が書き込み対象となっていることに応答して、前記データを前記残りの物理ブロックに対して追加的に書き込むステップをさらに備えている。
【0046】
【発明の好ましい実施の形態】
以下、添付図面を参照しながら、本発明の好ましい実施態様について詳細に説明する。
【0047】
図1は、本発明の好ましい実施態様にかかるフラッシュメモリシステム1を概略的に示すブロック図である。
【0048】
図1に示されるように、フラッシュメモリシステム1はカード形状であり、4個のフラッシュメモリチップ2−0〜2−3と、コントローラ3と、コネクタ4とが、一つのカード内に集積されて構成される。フラッシュメモリシステム1は、ホストコンピュータ5に着脱可能に装着されて使用され、ホストコンピュータ5に対する一種の外部記憶装置として用いられる。ホストコンピュータ5としては、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置が挙げられる。
【0049】
各フラッシュメモリチップ2−0〜2−3は、それぞれ128Mバイト(1Gビット)の記憶容量を有する半導体チップである。フラッシュメモリシステム1においては、528バイトを1ページとし、これを最小アクセス単位としている。したがって、これら各フラッシュメモリチップ2−0〜2−3は、それぞれ256Kページのアドレス空間を含み、フラッシュメモリチップ2−0〜2−3の合計で、1Mページのアドレス空間を備えることになる。また、フラッシュメモリシステム1においては、これら4つのフラッシュメモリチップ2−0〜2−3は、512Mバイト(4Gビット)の記憶容量を有し、1Mページのアドレス空間を備える一つの大きなメモリとして取り扱われる。このため、これら1Mページからなるアドレス空間から特定のページにアクセスするためには、20ビットのアドレス情報が必要となる。したがって、ホストコンピュータ5は、フラッシュメモリシステム1に対し、20ビットのアドレス情報を供給することによって、特定のページに対するアクセスを行う。以下、ホストコンピュータ5よりフラッシュメモリシステム1に供給される20ビットのアドレス情報を「ホストアドレス」と呼ぶ。
【0050】
コントローラ3は、マイクロプロセッサ6と、ホストインターフェースブロック7と、SRAMワークエリア8と、バッファ9と、フラッシュメモリインターフェースブロック10と、ECC(エラー・コレクション・コード)ブロック11と、フラッシュシーケンサブロック12とから構成される。これら機能ブロックによって構成されるコントローラ3は、一つの半導体チップ上に集積されている。
【0051】
マイクロプロセッサ6は、コントローラ3を構成する各機能ブロック全体の動作を制御するための機能ブロックである。
【0052】
ホストインターフェースブロック7は、バス13を介してコネクタ4に接続されており、マイクロプロセッサ6による制御のもと、ホストコンピュータ5とのデータやアドレス情報、ステータス情報、外部コマンド情報の授受を行う。すなわち、フラッシュメモリシステム1がホストコンピュータ5に装着されると、フラッシュメモリシステム1とホストコンピュータ5とは、バス13、コネクタ4及びバス14を介して相互に接続され、かかる状態において、ホストコンピュータ5よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口としてコントローラ3の内部に取り込まれ、また、コントローラ3よりホストコンピュータ5に供給されるデータ等は、ホストインターフェースブロック7を出口としてホストコンピュータ5に供給される。さらに、ホストインターフェースブロック7は、ホストコンピュータ5より供給されるホストアドレス及び外部コマンドを一時的に格納するタスクファイルレジスタ(図示せず)及びエラーが発生した場合にセットされるエラーレジスタ等(図示せず)を有している。
【0053】
SRAMワークエリア8は、マイクロプロセッサ6によるフラッシュメモリチップ2−0〜2−3の制御に必要なデータが一時的に格納される作業領域であり、複数のSRAMセルによって構成される。
【0054】
バッファ9は、フラッシュメモリチップ2−0〜2−3から読み出されたデータ及びフラッシュメモリチップ2−0〜2−3に書き込むべきデータを一時的に蓄積するバッファである。すなわち、フラッシュメモリチップ2−0〜2−3から読み出されたデータは、ホストコンピュータ5が受け取り可能な状態となるまでバッファ9に保持され、フラッシュメモリチップ2−0〜2−3に書き込むべきデータは、フラッシュメモリチップ2−0〜2−3が書き込み可能な状態となるとともに、後述するECCブロック11によってエラーコレクションコードが生成されるまでバッファ9に保持される。
【0055】
フラッシュメモリインターフェースブロック10は、バス15を介して、フラッシュメモリチップ2−0〜2−3とのデータやアドレス情報、ステータス情報、内部コマンド情報の授受を行うとともに、各フラッシュメモリチップ2−0〜2−3に対して対応するチップ選択信号#0〜#3を供給するための機能ブロックである。チップ選択信号#0〜#3は、ホストコンピュータ5からデータの読み出しまたは書き込みが要求された場合、ホストコンピュータ5より供給されるホストアドレスに基づいて生成される内部アドレスの上位2ビットに基づいて、そのいずれかが活性化される信号である。具体的には、内部アドレスの上位2ビットが「00」であればチップ選択信号#0が活性化され、「01」であればチップ選択信号#1が活性化され、「10」であればチップ選択信号#2が活性化され、「11」であればチップ選択信号#3が活性化される。対応するチップ選択信号が活性化されたフラッシュメモリチップ2−0〜2−3は選択状態となり、データの読み出しまたは書き込みが可能となる。尚、「内部コマンド」とは、コントローラ3がフラッシュメモリチップ2−0〜2−3を制御するためのコマンドであり、ホストコンピュータ5がフラッシュメモリシステム1を制御するための「外部コマンド」と区別される。
【0056】
ECCブロック11は、フラッシュメモリチップ2−0〜2−3に書き込むデータに付加すべきエラーコレクションコードを生成するとともに、読み出しデータに付加されたエラーコレクションコードに基づいて、読み出しデータに含まれる誤りを訂正するための機能ブロックである。
【0057】
フラッシュシーケンサブロック12は、フラッシュメモリチップ2−0〜2−3とバッファ9とのデータの転送を制御するための機能ブロックである。フラッシュシーケンサブロック12は、複数のレジスタ(図示せず)を備え、マイクロプロセッサ6による制御のもと、フラッシュメモリチップ2−0〜2−3からのデータの読み出しまたはフラッシュメモリチップ2−0〜2−3へのデータの書き込みに必要な値がこれらレジスタに設定されると、データの読み出しまたは書き込みに必要な一連の動作を自動的に実行する。
【0058】
次に、各フラッシュメモリチップ2−0〜2−3を構成する各フラッシュメモリセルの具体的な構造について説明する。
【0059】
図2は、フラッシュメモリチップ2−0〜2−3を構成する各フラッシュメモリセル16の構造を概略的に示す断面図である。
【0060】
図2に示されるように、フラッシュメモリセル16は、P型半導体基板17に形成されたN型のソース拡散領域18及びドレイン拡散領域19と、ソース拡散領域18とドレイン拡散領域19との間のP型半導体基板17を覆って形成されたトンネル酸化膜20と、トンネル酸化膜20上に形成されたフローティングゲート電極21と、フローティングゲート電極21上に形成された絶縁膜22と、絶縁膜22上に形成されたコントロールゲート電極23とから構成される。このような構成を有するフラッシュメモリセル16は、フラッシュメモリチップ2−0〜2−3内において、複数個直列に接続されて、NAND型フラッシュメモリを構成する。
【0061】
フラッシュメモリセル16は、フローティングゲート電極21に電子が注入されているか否かによって、「消去状態」と「書込状態」のいずれかの状態が示される。フラッシュメモリセル16が消去状態であることは、当該フラッシュメモリセル16にデータ「1」が保持されていることを意味し、フラッシュメモリセル16が書込状態であることは、当該フラッシュメモリセル16にデータ「0」が保持されていることを意味する。すなわち、フラッシュメモリセル16は、1ビットのデータを保持することが可能である。
【0062】
図2に示されるように、消去状態とは、フローティングゲート電極21に電子が注入されていない状態を指す。消去状態におけるフラッシュメモリセル16は、デプレッション型のトランジスタとなり、コントロールゲート電極23に読み出し電圧が印加されているか否かに関わらず、ソース拡散領域18とドレイン拡散領域19との間のP型半導体基板17の表面にはチャネル24が形成される。したがって、ソース拡散領域18とドレイン拡散領域19とは、コントロールゲート電極23に読み出し電圧が印加されているか否かに関わらず、チャネル24によって常に電気的に接続状態となる。
【0063】
図3は、書込状態であるフラッシュメモリセル16を概略的に示す断面図である。
【0064】
図3に示されるように、書込状態とは、フローティングゲート電極21に電子が蓄積されている状態を指す。フローティングゲート電極21はトンネル酸化膜20及び絶縁膜22に挟まれているため、一旦、フローティングゲート電極21に注入された電子は、きわめて長時間フローティングゲート電極21内にとどまる。書込状態におけるフラッシュメモリセル16は、エンハンスメント型のトランジスタとなり、コントロールゲート電極23に読み出し電圧が印加されていないときには、ソース拡散領域18とドレイン拡散領域19との間のP型半導体基板17の表面にはチャネルが形成されず、コントロールゲート電極23に読み出し電圧が印加されているときには、ソース拡散領域18とドレイン拡散領域19との間のP型半導体基板17の表面にチャネル(図示せず)が形成される。したがって、コントロールゲート電極23に読み出し電圧が印加されていない状態では、ソース拡散領域18とドレイン拡散領域19とは電気的に絶縁され、コントロールゲート電極23に読み出し電圧が印加された状態では、ソース拡散領域18とドレイン拡散領域19とが電気的に接続される。
【0065】
ここで、選択されたフラッシュメモリセル16が消去状態であるか書込状態であるかは、次のようにして読み出すことができる。すなわち、複数個直列に接続されたフラッシュメモリセル16のうち、選択されたフラッシュメモリセル16以外の全てのフラッシュメモリセル16のコントロールゲート電極23に読み出し電圧を印加し、この状態において、これらフラッシュメモリセル16の直列体に電流が流れるか否かを検出する。その結果、かかる直列体に電流が流れれば、選択されたフラッシュメモリセル16が消去状態であると判断することができ、かかる直列体に電流が流れなければ、選択されたフラッシュメモリセル16が書込状態であると判断することができる。このようにして、直列体に含まれる任意のフラッシュメモリセル16に保持されたデータが「0」であるのか「1」であるのかを読み出すことができる。但し、NAND型フラッシュメモリにおいては、ひとつの直列体に含まれる2以上のフラッシュメモリセル16に保持されたデータを同時に読み出すことはできない。
【0066】
また、消去状態であるフラッシュメモリセル16を書込状態に変化させる場合、コントロールゲート電極23に正の高電圧が印加され、これによって、トンネル酸化膜20を介してフローティングゲート電極21へ電子が注入される。フローティングゲート電極21への電子の注入は、FNトンネル電流による注入が可能である。一方、書込状態であるフラッシュメモリセル16を消去状態に変化させる場合、コントロールゲート電極23に負の高電圧が印加され、これによって、トンネル酸化膜20を介してフローティングゲート電極21に蓄積された電子が排出される。
【0067】
次に、各フラッシュメモリチップ2−0〜2−3の持つアドレス空間の具体的な構成について説明する。
【0068】
図4は、フラッシュメモリチップ2−0のアドレス空間の構造を概略的に示す図である。
【0069】
図4に示されるように、フラッシュメモリチップ2−0のアドレス空間は、物理ブロック#0〜#8191からなる8192個の物理ブロックによって構成される。また、図4には示されていないが、フラッシュメモリチップ2−1〜2−3も、フラッシュメモリチップ2−0と同様に物理ブロック#0〜#8191からなる8192個の物理ブロックによって構成されている。これら各ブロックは、いずれも16Kバイトの記憶容量を有する。
【0070】
ここで、上記各物理ブロックは、データの消去単位である。すなわち、フラッシュメモリチップ2−0〜2−3では、各フラッシュメモリセル16ごとに、その状態を書込状態から消去状態に変化させることはできず、フラッシュメモリセル16を書込状態から消去状態に変化させる場合は、当該フラッシュメモリセル16が属するブロックに含まれる全てのフラッシュメモリセル16が一括して消去状態とされる。逆に、フラッシュメモリチップ2−0〜2−3では、各フラッシュメモリセル16ごとに、その状態を消去状態から書込状態に変化させることは可能である。
【0071】
さらに、図4に示されるように、フラッシュメモリチップ2−0を構成する各物理ブロック#0〜#8191は、それぞれ物理ページ#0〜#31からなる32個の物理ページによって構成されている。また、フラッシュメモリチップ2−1〜2−3を構成する各物理ブロック#0〜#8191も、フラッシュメモリチップ2−0を構成する各物理ブロック#0〜#8191と同様に、それぞれ32個の物理ページによって構成されている。
【0072】
これら各ページはデータの読み出し及び書き込みにおけるアクセス単位であり、図4に示されるように、ビットb0〜b7からなる8ビットを1バイトとして、それぞれ512バイトのユーザ領域25と16バイトの冗長領域26によって構成される。ユーザ領域25は、ホストコンピュータ5より供給されるユーザデータが格納される領域である。
【0073】
図5は、冗長領域26のデータ構造を概略的に示す図である。
【0074】
図5に示されるように、冗長領域26は、エラーコレクションコード格納領域27、仮想ブロックアドレス格納領域28、スタートページフラグ29、スタートページデータ格納領域30及びその他の付加情報によって構成される。
【0075】
エラーコレクションコード格納領域27は、対応するユーザ領域25に格納されたユーザデータの誤りを訂正するための付加情報(エラーコレクションコード)を格納するための領域であり、ユーザ領域25に格納されたデータに含まれるデータの誤りが所定数以下であれば、エラーコレクションコード格納領域27に格納されたエラーコレクションコードを用いてこれを訂正し、正しいデータとすることができる。
【0076】
仮想ブロックアドレス格納領域28は、当該物理ブロックが属する仮想ブロックのアドレス(仮想ブロックアドレス)を格納するための領域である。仮想ブロック及び仮想ブロックアドレスの詳細については後述する。また、スタートページフラグ29及びスタートページデータ格納領域30についての説明も後述する。
【0077】
冗長領域26のその他の領域には、当該ブロックについての異常を表示するブロックステータス等が格納されているが、これらについての説明は省略する。
【0078】
このように、各ページは、512バイトのユーザ領域25と16バイトの冗長領域26からなるので、各ページは、8×(512バイト+16バイト)=4224個のフラッシュメモリセルによって構成されることになる。
【0079】
このように、各フラッシュメモリチップ2−0〜2−3はそれぞれ8192個の物理ブロックによって構成されるが、このうち、8000個の物理ブロックは実際にデータを格納することができるブロック(以下、「実使用ブロック」という)として取り扱われ、残りの192個のブロックは「冗長ブロック」として取り扱われる。冗長ブロックは、データ書き込みに備えて待機している空きブロックである。フラッシュメモリチップ2−0〜2−3のアドレス空間は、実使用ブロックのみによって構成される。また、ある物理ブロックに不良が発生し、使用不能となった場合には、不良が発生したブロックの数だけ冗長ブロックとして割り当てられる物理ブロックの数が減らされる。
【0080】
さらに、実使用ブロックは、各フラッシュメモリチップ2−0〜2−3から一つずつ選ばれた4つの物理ブロックが仮想的に結合された「仮想ブロック」を構成する。これにより、仮想ブロック#0〜#7999からなる最大8000個の仮想ブロックが構成される。
【0081】
図6は、仮想ブロックのマッピングの一例を示す図である。
【0082】
図6に示される例では、フラッシュメモリチップ2−0に含まれる物理ブロック#150、フラッシュメモリチップ2−1に含まれる物理ブロック#6811、フラッシュメモリチップ2−2に含まれる物理ブロック#8191、フラッシュメモリチップ2−3に含まれる物理ブロック#3048が仮想的に結合され、一つの仮想ブロックを構成している。このように、本実施態様においては、ひとつの仮想ブロックを構成する4つの物理ブロックは互いに異なるフラッシュメモリチップに含まれていることが必要である。このようにして、最大8000個の仮想ブロックが構成される。
【0083】
図7は、図6に示された仮想ブロックの仮想ページ構造を示す図である。
【0084】
図7に示されるように、仮想ブロックは、仮想ページ#0〜仮想ページ#127からなる128個の仮想ページによって構成される一つのブロックとして取り扱われる。ここで、仮想ブロックのうち、物理ブロック#150からなる部分に含まれる32個のページは、仮想ページ番号として4i(iは、物理ページ番号)が与えられ、物理ブロック#6811からなる部分に含まれる32個のページは、仮想ページ番号として4i+1が与えられ、物理ブロック#8191からなる部分に含まれる32個のページは、仮想ページ番号として4i+2が与えられ、物理ブロック#3048からなる部分に含まれる32個のページは、仮想ページ番号として4i+3が与えられる。詳細は後述するが、これら仮想ページ番号は、ホストアドレスの下位7ビットと対応している。
【0085】
ここで、図5に示したスタートページフラグ29及びスタートページデータ格納領域30について説明する。
【0086】
スタートページフラグ29は、2ビットで構成されるフラグであり、このうち、上位の1ビットは仮想ページ#0において有効なビットであり、下位の1ビットは仮想ページ#0〜#126において有効なビットである。具体的には、仮想ページ#0のスタートページフラグ29が「1x(xは任意)」であれば当該仮想ブロックにスタートページが存在することを示し、仮想ページ#0のスタートページフラグ29が「0x」であれば当該仮想ブロックにスタートページが存在しないことを示す。また、仮想ページ#0〜#126のスタートページフラグ29が「x0」であれば、対応するスタートページデータ格納領域30の内容が有効であることを示し、スタートページフラグ29が「x1」であれば、対応するスタートページデータ格納領域30の内容が無効であることを示す。
【0087】
スタートページデータ格納領域30は、当該仮想ブロックのスタートページを特定するための付加情報(スタートページデータ)を格納するための領域である。ここで、「スタートページ」とは、当該仮想ブロックにおいて、最終ページ(仮想ページ#127)を含む1または2以上の連続する仮想ページが、データの格納されていない空きページとなっている場合に、これら連続する仮想ページの中の先頭の仮想ページを指す。例えば、ある仮想ブロックの仮想ページ#0〜#50にのみデータが格納されている場合にはスタートページは仮想ページ#51となり、ある仮想ブロックの仮想ページ#83にのみデータが格納されている場合にはスタートページは仮想ページ#84となる。したがって、各仮想ブロックにおいて、スタートページ以降の仮想ページは、データの格納されていない空きページであることが保証される。
【0088】
スタートページデータを用いたスタートページの特定は、「スタートページ検索」によって行うことができる。スタートページ検索においては、まず、仮想ページ#0のスタートページデータ格納領域30に格納されているスタートページデータが参照され、かかるスタートページデータが示す仮想ページのスタートページフラグ29が参照される。例えば、仮想ページ#0のスタートページデータ格納領域30に格納されているスタートページデータが「0100111B(39)」であれば、次に、仮想ページ#39のスタートページフラグ29が参照される。その結果、スタートページフラグ29が「x0」であるために、対応するスタートページデータ格納領域30の内容が有効であると判断されれば、さらにその内容が示すページのスタートページフラグ29が参照される。このようにして、スタートページデータに基づき、対応するスタートページフラグ29が有効であるか否かを次々に判定し、参照されたスタートページフラグ29が「x1」となったところでスタートページ検索を終了し、かかる仮想ページが「スタートページ」であると判断される。例えば、上記の例のように、仮想ページ#0のスタートページデータ格納領域30に格納されているスタートページデータが「0100111B(39)」であり、仮想ページ#39のスタートページフラグ29が「x1」であれば、仮想ページ#39がスタートページであると判断される。
【0089】
次に、仮想ブロックとこれを構成する4つの物理ブロックとの関係について説明する。
【0090】
上述のとおり、本実施態様においては、各フラッシュメモリチップ2−0〜2−3に含まれる8192個の物理ブロックによって、最大8000個の仮想ブロックが構成されるが、これら8000個の仮想ブロックと各仮想ブロックを構成する4つの物理ブロックとの関係は、SRAMワークエリア8上に展開されるアドレス変換テーブル31に保持される。
【0091】
図8は、アドレス変換テーブル31のデータ構造を示す概略図である。
【0092】
図8に示されるように、アドレス変換テーブル31は、仮想ブロック表示領域#0〜#7999からなる8000個の仮想ブロック表示領域がこの順に並んで構成され、これら各仮想ブロック表示領域#0〜#7999は、それぞれセル#j−0〜セル#j−3(jは、仮想ブロックアドレス)からなる4個のセル、スタートページ格納領域#j及びフラグ#jによって構成される。例えば、仮想ブロック表示領域#0はセル#0−0〜セル#0−3、スタートページ格納領域#0及びフラグ#0によって構成され、仮想ブロック表示領域#1はセル#1−0〜セル#1−3、スタートページ格納領域#1及びフラグ#1によって構成される。したがって、アドレス変換テーブル31は、32000個のセルと、8000個のスタートページ格納領域と、8000個のフラグによって構成されることになる。ここで、セル#j−0を構成するスロット#0はフラッシュメモリチップ2−0に対応し、セル#j−1を構成するスロット#1はフラッシュメモリチップ2−1に対応し、セル#j−2を構成するスロット#2はフラッシュメモリチップ2−2に対応し、セル#j−3を構成するスロット#3はフラッシュメモリチップ2−3に対応している。
【0093】
各仮想ブロック表示領域に含まれるセル#j−0〜#j−3には、それぞれ当該仮想ブロックを構成する物理ブロックのアドレス(物理ブロックアドレス)が格納される。ここで、「物理ブロックアドレス」とは、各物理ブロックに割り当てられたブロック番号を2進数で表したアドレスであり、13ビットで構成される。例えば、図6及び図7に示された仮想ブロックが、仮想ブロック#0であるとすれば、当該仮想ブロックは、物理ブロック#150、物理ブロック#6811、物理ブロック#8191及び物理ブロック#3048より構成されることから、これら物理ブロックの物理ブロックアドレスはそれぞれ「0000010010110B」、「1101010011011B」、「1111111111111B」及び「0101111101000B」となり、セル#0−0〜#0−3には、これら物理ブロックアドレスがそれぞれ格納されることになる。
【0094】
また、各仮想ブロックに含まれるフラグ#jは、当該仮想ブロック表示領域が有効であるか無効であるかを示している。具体的には、フラグ#jが「1」を示していれば当該仮想ブロック表示領域#jは有効であり、フラグ#jが「0」を示していれば当該仮想ブロック表示領域#jは無効である。したがって、フラグ#jが「0」を示している仮想ブロック表示領域については、これに含まれるセル#j−0〜#j−3及びスタートページ格納領域#jに格納されている内容は無視される。
【0095】
さらに、スタートページ格納領域#0〜#7999には、対応する仮想ブロックのスタートページに関する情報が7ビットで格納されている。具体的には、スタートページ格納領域に格納されたスタートページが「0000000B(0)」である場合には、対応する仮想ブロックにはスタートページが存在しないことが示され、「0000001B(1)」である場合には、対応する仮想ブロックにスタートページは存在するが、上述したスタートページ検索によってスタートページを求める必要があることが示され、それ以外の値である場合には、その値がスタートページであることが示される。例えば、スタートページ格納領域に格納されたスタートページが「0101100B(44)」である場合には、当該仮想ブロックのスタートページは仮想ページ#44となる。
【0096】
上述のように、アドレス変換テーブル31は、32000個のセルと8000個のスタートページ格納領域と8000個のフラグによって構成されており、各セルには13ビットの情報(物理ブロックアドレス)、各スタートページ格納領域には7ビットの情報(スタートページ)、各フラグには1ビットの情報を格納する必要があるから、アドレス変換テーブル31は、SRAMワークエリア8の記憶容量のうち、約72kバイトを占有することとなる。
【0097】
アドレス変換テーブル31の生成は、次のように行われる。
【0098】
フラッシュメモリチップ2−0〜2−3を構成する各物理ブロックのうち、データが格納されているブロックの各先頭ページ(物理ページ#0)の冗長領域26に含まれる仮想ブロックアドレス格納領域28には、当該物理ブロックがどの仮想ブロックに属するかを示す仮想ブロックアドレスが含まれており、各物理ブロックの各先頭ページ(物理ページ#0)に含まれている仮想ブロックアドレスがマイクロプロセッサ6による制御のもと、フラッシュメモリインターフェースブロック10を介して読み出される。
【0099】
ここで、消去済みの空きブロックにおいては、冗長領域26の仮想ブロックアドレス格納領域28に格納されている仮想ブロックアドレスは「オール1(1111111111111B)」となっているはずである。すなわち、仮想ブロックは、上述のとおり、#0(0000000000000B)〜#7999(1111100111111B)までしかなく、したがって、これがオール1(1111111111111B)である場合には、当該物理ブロックが消去済みの空きブロックであると判断することができる。一方、冗長領域26の仮想ブロックアドレス格納領域28に格納された仮想ブロックアドレスが「0000000000000B」〜「1111100111111B」である場合には、当該仮想ブロックアドレスは有効な仮想ブロックアドレスである。
【0100】
したがって、マイクロプロセッサ6は、各物理ブロックの先頭ページ(物理ページ#0)の冗長領域26に含まれる仮想ブロックアドレスを参照し、これがオール1ではなく有効な仮想ブロックのアドレスを示していれば、アドレス変換テーブル31を構成するセルのうち、チップ番号(#0〜#3)及び読み出された仮想ブロックアドレスによって特定されるセルに、当該物理ブロックの物理ブロックアドレスを格納する。例えば、フラッシュメモリチップ2−0に属する物理ブロック#12より読み出された仮想ブロックアドレスが「123」であれば、セル#123−0に、物理ブロックアドレスとして「12」が書き込まれ、さらに、対応するフラグ#123が「1」にされる。
【0101】
さらに、マイクロプロセッサ6は、上記仮想ブロックアドレスが有効な仮想ブロックのアドレスを示していれば、当該仮想ブロックの先頭ページ(仮想ページ#0)の冗長領域26に格納されているスタートページフラグ29を参照する。仮想ページ#0におけるスタートページフラグ29は、上述のとおり、「1x」であれば当該仮想ブロックにスタートページが存在することを示し、「0x」であれば当該仮想ブロックにスタートページが存在しないことを示す。そして、スタートページフラグ29を参照した結果、これが「1x」であれば、アドレス変換テーブル31内の対応するスタートページ格納領域の内容を「0000001B(1)」とし、これが「0x」であれば、アドレス変換テーブル31内の対応するスタートページ格納領域の内容を「0000000B(0)」とする。
【0102】
このような処理が、データが格納されている全ての物理ブロックについて行われる。これにより、アドレス変換テーブル31の生成が完了する。
【0103】
次に、SRAMワークエリア8に格納される消去済みブロックキュー32のデータ構造について説明する。
【0104】
図9は、SRAMワークエリア8に格納される消去済みブロックキュー32のデータ構造を示す概略図である。
【0105】
図9に示されるように、消去済みブロックキュー32は、キューセット#0〜#5からなる6つのキューセットによって構成され、これらは、それぞれキュー#k−0〜キュー#k−3(kは、キューセット番号)からなる4個のキューによって構成される。例えば、キューセット#0はキュー#0−0〜キュー#0−3によって構成され、キューセット#1はキュー#1−0〜キュー#1−3によって構成される。したがって、消去済みブロックキュー32は、24個のキューによって構成される。ここで、キュー#k−0はフラッシュメモリチップ2−0に対応し、キュー#k−1はフラッシュメモリチップ2−1に対応し、キュー#k−2はフラッシュメモリチップ2−2に対応し、キュー#k−3はフラッシュメモリチップ2−3に対応している。
【0106】
各キューセット#0〜#5を構成するキュー#k−0〜#k−3には、ユーザ領域25を構成する全てのフラッシュメモリセル16が消去状態となっている物理ブロックの物理ブロックアドレスが格納される。したがって、例えば、フラッシュメモリチップ2−0に属する消去済みの物理ブロック#153を消去済みブロックキュー32に登録する場合、当該物理ブロックアドレスである「0000010011001B(153)」がキュー#0−0〜#5−0のいずれかに格納される。同様にして、例えば、フラッシュメモリチップ2−2に属する消去済みのブロック#6552を消去済みブロックキュー32に登録する場合、当該物理ブロックアドレスである「1100110011000B(6552)」がキュー#0−2〜#5−2のいずれかに格納される。
【0107】
このようにして、各フラッシュメモリチップ2−0〜2−3ごとに最大6つの消去済みブロックの物理ブロックアドレスが消去済みブロックキュー32に登録され、これによって最大6つのキューセット#0〜#5が生成される。
【0108】
消去済みブロックキュー32の生成は、マイクロプロセッサ6による制御のもと、上述したアドレス変換テーブル31の生成の際に行われ、データ書き込みに備えて待機している冗長ブロックの中から、これらキューに登録すべき物理ブロックが選ばれる。
【0109】
次に、本実施態様にかかるフラッシュメモリシステム1の動作について、データの読み出し動作、データの書き込み動作の順に説明する。
【0110】
まず、本実施態様にかかるフラッシュメモリシステム1によるデータの読み出し動作について説明する。
【0111】
データの読み出し動作においては、ホストアドレスから内部アドレスへの変換が行われた後、かかる内部アドレスを用いてユーザデータの読み出し実行される。以下、かかる動作について、具体的な例を挙げて詳細に説明する。
【0112】
ここでは、ホストコンピュータ5より、バス14、コネクタ4及びバス13を介して、外部コマンドの一種である外部読み出しコマンドとともにホストアドレス、例えば「00000111111111100000B」がフラッシュメモリシステム1に供給された場合を例に説明する。
【0113】
まず、ホストアドレス及び外部読み出しコマンドがコントローラ3に供給されると、これらホストアドレス及び外部読み出しコマンドは、ホストインターフェースブロック7が有するタスクファイルレジスタ(図示せず)に一時的に格納される。
【0114】
次に、タスクファイルレジスタ(図示せず)に格納されたホストアドレスが正しいアドレスであるか否か、すなわち、かかるホストアドレスが、本来存在しない物理アドレスや無効なアドレスを示していないか否かが、ホストインターフェースブロック7によって判定される。
【0115】
かかる判定の結果、タスクファイルレジスタ(図示せず)に格納されたホストアドレスが有効なアドレスであると判断されれば、アドレス変換テーブル31を用いて内部アドレスに変換される。一方、これが異常なアドレスであると判断されれば、ホストインターフェースブロック7が有するエラーレジスタ(図示せず)がセットされ、ホストコンピュータは、かかるレジスタの内容を参照することにより、エラーの発生を知ることができる。
【0116】
次に、アドレス変換テーブル31を用いた内部アドレスへの変換について、図10を参照しながら説明する。
【0117】
図10においては、便宜上、ホストアドレスから上位13ビットを「A」とし、上位14ビット目〜上位18ビット目からなる5ビットを「B」とし、下位2ビットを「C」と表記している。
【0118】
まず、マイクロプロセッサ6による制御のもと、20ビットのホストアドレスから上位13ビット(A)が取り出され、これによってアドレス変換テーブル31内のいずれかの仮想ブロック表示領域が選択される。本例では、ホストアドレスの上位13ビット(A)が「0000011111111B(255)」であるから、選択される仮想ブロック表示領域は、仮想ブロック表示領域#255となる。
【0119】
次に、マイクロプロセッサ6による制御のもと、選択された仮想ブロック表示領域#255に含まれる4個のセルのうち、ホストアドレスの下位2ビット(C)と同じ枝番号を有するセルの内容が読み出される。この場合、ホストアドレスの下位2ビット(C)が「00B(0)」であるから、その内容が読み出されるセルは、セル#255−0となる。図10に示されるように、本例では、かかるセル#255−0の内容が「0000100001111B」であるものとする。
【0120】
次に、マイクロプロセッサ6による制御のもと、ホストアドレスの下位2ビット(C)、読み出されたセルの内容、及びホストアドレスの上位14ビット目〜上位18ビット目からなる5ビット(B)がこの順に結合される。結合されたアドレスは、内部アドレスとなる。この場合、ホストアドレスの下位2ビット(C)は「00B」であり、読み出されたセルの内容は「0000100001111B」であり、ホストアドレスの上位14ビット目〜上位18ビット目からなる5ビット(B)は「11000B」であることから、得られる内部アドレスは、図10に示されるように、「00000010000111111000B」となる。
【0121】
以上より、ホストアドレスから内部アドレスへの変換が完了する。
【0122】
一方、ホストインターフェースブロック7が有するタスクファイルレジスタ(図示せず)に外部読み出しコマンドが格納されていることに応答して、マイクロプロセッサ6による制御のもと、フラッシュシーケンサブロック12が有するレジスタ(図示せず)に対する設定がなされる。かかる設定は、次のように行われる。
【0123】
まず、マイクロプロセッサ6による制御のもと、内部コマンドの一種である内部読み出しコマンドがフラッシュシーケンサブロック12内の所定のレジスタ(図示せず)に設定される。さらに、マイクロプロセッサ6による制御のもと、20ビット長の内部アドレスがフラッシュシーケンサブロック12内の所定のレジスタ(図示せず)に設定される。
【0124】
このようにしてフラッシュシーケンサブロック12に含まれる各種レジスタに対する設定が完了すると、フラッシュシーケンサブロック12による一連の読み出し動作が実行される。フラッシュシーケンサブロック12による一連の読み出し動作は、次の通りである。
【0125】
まず、フラッシュシーケンサブロック12は、所定のレジスタに格納された内部アドレスの上位2ビットに基づき、フラッシュメモリチップ2−0〜2−3のうち、アクセスすべきページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック10に指示する。この場合、内部アドレスの上位2ビットは「00B(0)」であるから、アクセスすべきページが属するフラッシュメモリチップは、フラッシュメモリチップ2−0であり、チップ選択信号#0が活性化される。これにより、フラッシュメモリチップ2−0は、データの読み出しが可能な状態となる。一方、チップ選択信号#1〜#3は、非活性状態が保たれる。
【0126】
次に、フラッシュシーケンサブロック12は、所定のレジスタに格納された内部アドレスの下位18ビット「000010000111111000B」を、所定のレジスタに格納された内部読み出しコマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。バス15に供給された18ビットの内部アドレス及び内部読み出しコマンドは、フラッシュメモリチップ2−0〜2−3に対し共通に供給されるが、上述のとおり、チップ選択信号#0は活性状態となっており、チップ選択信号#1〜#3は非活性状態となっているので、バス15に供給された内部アドレス及び内部読み出しコマンドは、フラッシュメモリチップ2−0に対してのみ有効となる。
【0127】
これに応答して、フラッシュメモリチップ2−0は、供給された18ビットの内部アドレス「000010000111111000B」に格納されたデータの読み出しを実行する。ここで、供給された18ビットの内部アドレス「000010000111111000B」のうち、上位13ビットは物理ブロックを特定し、下位5ビットは当該物理ブロック内の物理ページを特定するために用いられる。この場合、上位13ビットは「0000100001111B(271)」であり、下位5ビットは「11000B(24)」であるから、特定される物理ブロックはブロック#271となり、特定される物理ページは物理ページ#24となる。すなわち、フラッシュメモリチップ2−0は、ブロック#271の物理ページ#24に格納されたデータの読み出しを実行する。かかる読み出し動作においては、ユーザ領域25に格納されたユーザデータのみならず、冗長領域26に格納された各種付加情報も読み出される。
【0128】
尚、図7において説明したように、本実施態様においては、4つの物理ブロックが仮想的に結合されて一つの仮想ブロックが構成されているので、フラッシュメモリチップ2−0に属する物理ブロック#271の物理ページ#24は、仮想ブロック#255の仮想ページ#96に対応する。
【0129】
このようにしてフラッシュメモリチップ2−0から読み出されたユーザデータ及び付加情報は、バス15を介してフラッシュメモリインターフェースブロック10に供給される。フラッシュメモリインターフェースブロック10がユーザデータ及び付加情報を受け取ると、フラッシュシーケンサブロック12による制御のもと、付加情報に含まれるエラーコレクションコードが抽出され、ユーザデータ及び抽出されたエラーコレクションコードがECCブロック11に供給される。ユーザデータ及びエラーコレクションコードがECCブロック11に供給されると、ECCブロック11は、エラーコレクションコードに基づき、ユーザデータに誤りがあるか否かを判断し、誤りがないと判断すれば、供給されたユーザデータをそのままバッファ9に格納し、誤りがあると判断すれば、これをエラーコレクションコードに基づいて訂正し、訂正後のユーザデータをバッファ9に格納する。このようにしてバッファ9に誤りのないユーザデータが格納されると、フラッシュシーケンサブロック12による一連の読み出し動作が完了する。
【0130】
そして、バッファ9に格納されたユーザデータは、マイクロプロセッサ6による制御のもと、ホストインターフェースブロック7より、バス13、コネクタ4及びバス14を介してホストコンピュータ5に供給される。
【0131】
以上により、一連の読み出し動作が完了する。
【0132】
次に、本実施態様にかかるフラッシュメモリシステム1による種々のデータ書き込み動作について説明する。
【0133】
書き込み動作1(空きブロックにデータを書き込む場合)
空きブロックにデータを書き込む場合、すなわち新規データの書き込み動作においては、仮想ブロックの生成、生成された仮想ブロックの仮想ページ#0〜#3に対する冗長データの書き込み、生成された仮想ブロックの所定の仮想ページに対するユーザデータの書き込みが実行される。以下、かかる動作について、具体的な例を挙げて詳細に説明する。
【0134】
ここでは、ホストコンピュータ5より、バス14、コネクタ4及びバス13を介して、外部コマンドの一種である外部書き込みコマンドと、対応する仮想ブロックにデータが割り当てられていない連続した複数のホストアドレス、例えば「00010101010101000100B」〜「00010101010101000111B」と、これら各アドレスに書き込むべきデータとがフラッシュメモリシステム1に供給された場合を例に説明する。ここでは、これら連続するホストアドレスを、ホストアドレス#0〜#3と呼ぶ。
【0135】
まず、ホストアドレス#0〜#3及び外部書き込みコマンドがコントローラ3に供給されると、これらホストアドレス#0〜#3及び外部書き込みコマンドは、ホストインターフェースブロック7が有するタスクファイルレジスタ(図示せず)に一時的に格納される。さらに、ホストアドレス#0〜#3にそれぞれ対応する書き込みデータがコントローラ3に供給されると、マイクロプロセッサ6による制御のもと、これらデータがECCブロック11に送出される。これらデータの供給を受けたECCブロック11は、これらデータを解析してエラーコレクションコードを生成し、これを一時的に保持する。さらに、ECCブロック11は、スタートページデータとして、ホストアドレス#3の下位7ビットに1を加算したデータを生成し、これを一時的に保持する。この場合、スタートページデータは、「1001000(72)」となる。
【0136】
次に、タスクファイルレジスタ(図示せず)に格納されたホストアドレス#0〜#3が正しいアドレスであるか否か、すなわち、かかるホストアドレス#0〜#3が、本来存在しない物理アドレスや無効なアドレスを示していないか否かが、ホストインターフェースブロック7によって判定される。
【0137】
かかる判定の結果、タスクファイルレジスタ(図示せず)に格納されたホストアドレス#0〜#3が有効なアドレスであると判断されれば、アドレス変換テーブル31を用いて内部アドレスに変換される。一方、これが異常なアドレスであると判断されれば、ホストインターフェースブロック7が有するエラーレジスタ(図示せず)がセットされ、ホストコンピュータは、かかるレジスタの内容を参照することにより、エラーの発生を知ることができる。
【0138】
図11は、アドレス変換テーブル31を用いた内部アドレスへの変換方法を説明するための図である。
【0139】
図11に示されるように、本例では、ホストアドレス#0〜#3の上位13ビット(A)が「0001010101010B(682)」であるから、選択される仮想ブロック表示領域は、仮想ブロック表示領域#682となる。
【0140】
次に、マイクロプロセッサ6による制御のもと、SRAMワークエリア8に格納されているアドレス変換テーブル31から、仮想ブロック表示領域#682の内容が読み出される。ここでは、新規データの書き込み動作、すなわち対応する仮想ブロックに現在データが割り当てられていないホストアドレスに対して新しくデータを割り当てる動作であるので、仮想ブロック表示領域#682内のフラグ#682は「0(無効)」を示している。
【0141】
次に、マイクロプロセッサ6による制御のもと、消去済みブロックキュー32を構成するキューセット#0〜#5のいずれか、例えば、キューセット#0が選択され、かかるキューセット#0を構成する各キュー#0−0〜#0−3に格納された内容が読み出される。上述のとおり、各キューに格納されているのは、消去済みブロックの物理ブロックアドレスである。図11に示されるように、本例では、これらキュー#0−0〜#0−3の内容がそれぞれ「0000000001111B(15)」、「1110000110011B(7219)」、「0101111110000B(3056)」、「1000100000000B(4352)」であるものとする。
【0142】
キュー#0−0〜#0−3に格納された内容が読み出されると、これらが仮想ブロック表示領域#682のセル#682−0〜セル#682−3にそれぞれ格納されるとともに、対応するスタートページ格納領域#682に、上記スタートページ「1001000(72)」が格納される。さらに、対応するフラグ#682が「1(有効)」に書き換えられる。これにより、仮想ブロックの生成が完了する。
【0143】
そして、図11に示されるように、マイクロプロセッサ6による制御のもと、ホストアドレス#0〜#3それぞれの下位2ビット(C)、対応するキューの内容、及びホストアドレス#0〜#3の上位14ビット目〜上位18ビット目からなる5ビット(B)がこの順に結合される。結合されたアドレスは、それぞれ内部アドレス#0〜#3となる。この場合、ホストアドレス#0〜#3の下位2ビット(C)はそれぞれ「00B」〜「11B」であり、読み出されたセルの内容は「0000000001111B」、「1110000110011B」、「0101111110000B」、「1000100000000B」であり、ホストアドレス#0〜#3の上位14ビット目〜上位18ビット目からなる5ビット(B)はいずれも「10001B」であることから、得られる4つの内部アドレス#0〜#3の値は、図11に示される値となる。
【0144】
これにより、ホストアドレス#0〜#3から内部アドレス#0〜#3への変換が完了する。上述のとおり、内部アドレスの上位2ビットは、アクセスすべきフラッシュメモリチップの番号を示し、内部アドレスの上位3ビット目〜上位15ビット目は、アクセスすべき物理ブロックアドレスを示し、内部アドレスの下位5ビットは、アクセスすべき物理ページを示している。したがって、内部アドレス#0によって特定される物理ページは、フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#17となり、内部アドレス#1によって特定される物理ページは、フラッシュメモリチップ2−1の物理ブロック#7219の物理ページ#17となり、内部アドレス#2によって特定される物理ページは、フラッシュメモリチップ2−2の物理ブロック#3056の物理ページ#17となり、内部アドレス#3によって特定される物理ページは、フラッシュメモリチップ2−3の物理ブロック#4352の物理ページ#17となる。
【0145】
さらに、ホストインターフェースブロック7が有するタスクファイルレジスタ(図示せず)に外部書き込みコマンドが格納されていることに応答して、マイクロプロセッサ6による制御のもと、フラッシュシーケンサブロック12が有するレジスタ(図示せず)に対する設定がなされる。かかる設定は、次のように行われる。
【0146】
まず、マイクロプロセッサ6による制御のもと、内部コマンドの一種であるデータ転送コマンド及び内部書き込みコマンドがフラッシュシーケンサブロック12内の所定のレジスタ(図示せず)に設定される。さらに、マイクロプロセッサ6による制御のもと、上記生成された4つの内部アドレス#0〜#3がフラッシュシーケンサブロック12内の所定のレジスタ(図示せず)に設定される。
【0147】
このようにしてフラッシュシーケンサブロック12に含まれる各種レジスタ(図示せず)に対する設定が完了すると、フラッシュシーケンサブロック12による一連の書き込み動作が実行される。本例においては、フラッシュシーケンサブロック12による一連の書き込み動作は、仮想ブロック#682の仮想ページ#0〜#3に対する各種冗長データの書き込み、並びに、仮想ブロック#682の仮想ページ#68〜#71に対するユーザデータ及び各種冗長データの書き込みの順に実行される。
【0148】
図12は、フラッシュシーケンサブロック12による仮想ブロック#682の仮想ページ#0〜#3に対する一連の書き込み動作を概略的に示すタイミング図である。
【0149】
まず、フラッシュシーケンサブロック12は、仮想ブロック#682の仮想ページ#0に対応する内部アドレス#5を生成する。ここで、仮想ブロック#682の仮想ページ#0に対応する内部アドレス#5とは、フラッシュメモリチップ2−0内の物理ブロック#15の物理ページ#0に対応し、その値は、「00000000000111100000B」である。
【0150】
次に、このようにして生成された内部アドレス#5の上位2ビットに基づいて、フラッシュメモリチップ2−0〜2−3のうち、アクセスすべきページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック10に指示する。この場合、内部アドレス#5の上位2ビットは「00B(0)」であるから、チップ選択信号#0が活性化される。これにより、フラッシュメモリチップ2−0は、データの書き込みが可能な状態となる。一方、チップ選択信号#1〜#3は、非活性状態が保たれる。
【0151】
次に、フラッシュシーケンサブロック12は、上記内部アドレス#5の下位18ビット「000000000111100000B」を、所定のレジスタ(図示せず)に格納されたデータ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。バス15に供給された内部アドレス#5の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−0〜2−3に対し共通に供給されるが、上述のとおり、チップ選択信号#0は活性状態となっており、チップ選択信号#1〜#3は非活性状態となっているので、バス15に供給された内部アドレス#5の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−0に対してのみ有効となる(転送先指定)。
【0152】
これにより、フラッシュメモリチップ2−0は、供給された内部アドレス#5の下位18ビット「000000000111100000B」に対応するページに書き込まれるべきデータの受け付けが許可された状態となる。
【0153】
次に、仮想ブロック#682の仮想ページ#0に書き込むべきデータが、フラッシュシーケンサブロック12により、フラッシュメモリインターフェースブロック10を介して、バス15に供給される。ここで、仮想ブロック#682の仮想ページ#0とは、フラッシュメモリチップ2−0内の物理ブロック#15の物理ページ#0に対応し、ここに書き込むべきデータとは、仮想ブロックアドレス、スタートページフラグ、スタートページデータ及びその他の付加情報であり、これらはいずれも冗長領域26に書き込まれるデータである。この場合、仮想ブロックアドレスは「0001010101010B(682)」であり、スタートページフラグは「10」であり、スタートページデータは「1001000(72)」である。フラッシュメモリチップ2−0内の物理ブロック#15の物理ページ#0のその他の部分、すなわち、ユーザ領域25の全部分、冗長領域26のうちエラーコレクションコード格納領域27等には何らのデータも書き込まれない。但し、各ページに対するデータの書き込みは、ページ単位で一括して行われるため、実際には、上記データを書き込まない部分については、書き込み処理が実行されないのではなく、「オール1」からなる書き込みデータが書き込まれることになる。
【0154】
バス15に供給された仮想ブロックアドレス、スタートページフラグ、スタートページデータ及び冗長領域26に格納されるその他の付加情報も、やはりフラッシュメモリチップ2−0〜2−3に対し共通に供給されるが、上述のとおり、チップ選択信号#0が活性状態となっているため、フラッシュメモリチップ2−0に対してのみ有効となる(データ転送)。
【0155】
このようにして、書き込みデータの受け付けが許可された状態にあるフラッシュメモリチップ2−0に対して仮想ブロックアドレスやスタートページフラグ等の付加情報が転送されると、かかる付加情報は、フラッシュメモリチップ2−0内に備えられたレジスタ(図示せず)に一時的に格納される。
【0156】
次に、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部書き込みコマンドを、フラッシュメモリチップ2−0に対して発行する(書き込み命令)。
【0157】
これに応答して、フラッシュメモリチップ2−0は、所定のレジスタに格納されている上記付加情報を、転送先指定処理によって指定されたアドレスに書き込む(フラッシュプログラミング)。すなわち、レジスタに格納されている付加情報が、内部アドレス#5の下位18ビット「000000000111100000B」により特定されるページ、つまり、フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#0に書き込まれる。フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#0は、仮想ブロック#682の仮想ページ#0に対応する。
【0158】
フラッシュメモリチップ2−0がフラッシュプログラミングを実行している間、フラッシュシーケンサブロック12は、仮想ブロック#682の仮想ページ#1に対応する内部アドレス#6を生成し、当該内部アドレスにより示される物理ページに、仮想ページ#0に書き込んだ情報と同じ情報を書き込む。ここで、仮想ブロック#682の仮想ページ#1に対応する内部アドレス#6とは、フラッシュメモリチップ2−1内の物理ブロック#7219の物理ページ#0に対応し、その値は、「01111000011001100000B」である。
【0159】
このような書き込み動作が、内部アドレス#7、#8を用いて仮想ブロック#682の仮想ページ#2及び仮想ページ#3に対しても行われ、これにより、仮想ブロック#682の仮想ページ#0〜仮想ページ#3の冗長領域26には、いずれも同じ情報が書き込まれる。ここで、仮想ブロック#682の仮想ページ#2とは、フラッシュメモリチップ2−2の物理ブロック#3056の物理ページ#0に対応し、仮想ブロック#682の仮想ページ#3とは、フラッシュメモリチップ2−3の物理ブロック#4352の物理ページ#0に対応する。
【0160】
図13は、仮想ブロック#682の仮想ページ#0〜#3に対する一連の書き込み処理が完了した状態における仮想ブロック#682の内容を示す概略図である。
【0161】
図13では、冗長領域26については、仮想ブロックアドレス格納領域28、スタートページフラグ29及びスタートページデータ格納領域30のみが示され、エラーコレクションコード格納領域27等のその他の付加情報については省略されている。
【0162】
このようにして、仮想ブロック#682の仮想ページ#0〜#3に対する一連の書き込み処理が完了すると、次に、仮想ブロック#682の仮想ページ#68〜#71に対するユーザデータ及び各種冗長データの書き込みが実行される。
【0163】
フラッシュシーケンサブロック12による仮想ブロック#682の仮想ページ#68〜#71に対する一連の書き込み動作も、図12に示されるタイミングで実行される。以下、仮想ブロック#682の仮想ページ#68〜#71に対する一連の書き込み動作について詳細に説明する。
【0164】
まず、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部アドレスのうち、上位2ビットが「00B(0)」である内部アドレス#0を選択し、当該内部アドレス#0の上位2ビットに基づいて、フラッシュメモリチップ2−0〜2−3のうち、アクセスすべきページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック10に指示する。この場合、内部アドレス#0の上位2ビットは「00B(0)」であるから、アクセスすべきページが属するフラッシュメモリチップは、フラッシュメモリチップ2−0であり、チップ選択信号#0が活性化される。これにより、フラッシュメモリチップ2−0は、データの書き込みが可能な状態となる。一方、チップ選択信号#1〜#3は、非活性状態が保たれる。
【0165】
次に、フラッシュシーケンサブロック12は、内部アドレス#0の下位18ビット「000000000111110001B」を、所定のレジスタ(図示せず)に格納されたデータ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。バス15に供給された内部アドレス#0の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−0〜2−3に対し共通に供給されるが、上述のとおり、チップ選択信号#0は活性状態となっており、チップ選択信号#1〜#3は非活性状態となっているので、バス15に供給された内部アドレス#0の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−0に対してのみ有効となる(転送先指定)。
【0166】
これにより、フラッシュメモリチップ2−0は、供給された内部アドレス#0の下位18ビット「000000000111110001B」に対応するページに書き込まれるべきデータの受け付けが許可された状態となる。
【0167】
次に、バッファ9に格納されている書き込みデータのうち、ホストアドレス#0に対応するデータ及び対応するエラーコレクションコード等の冗長領域26に格納すべき付加情報が、フラッシュシーケンサブロック12により、フラッシュメモリインターフェースブロック10を介して、バス15に供給される。ここで、冗長領域26に格納すべき付加情報のうち、仮想ブロックアドレス、スタートページフラグ及びスタートページデータについては、仮想ページ#0〜#3に格納された内容と同じである。バス15に供給されたデータ及びエラーコレクションコード等の付加情報も、やはりフラッシュメモリチップ2−0〜2−3に対し共通に供給されるが、上述のとおり、チップ選択信号#0が活性状態となっているため、フラッシュメモリチップ2−0に対してのみ有効となる(データ転送)。
【0168】
このようにして、書き込みデータの受け付けが許可された状態にあるフラッシュメモリチップ2−0に対して書き込みデータ及びエラーコレクションコード等の付加情報が転送されると、かかる書き込みデータ及びエラーコレクションコードは、フラッシュメモリチップ2−0内に備えられたレジスタ(図示せず)に一時的に格納される。
【0169】
次に、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部書き込みコマンドを、フラッシュメモリチップ2−0に対して発行する(書き込み命令)。
【0170】
これに応答して、フラッシュメモリチップ2−0は、所定のレジスタに格納されているデータ及びエラーコレクションコード等の付加情報を、転送先指定処理によって指定されたアドレスに書き込む(フラッシュプログラミング)。すなわち、レジスタに格納されているデータ及びエラーコレクションコード等の付加情報が、内部アドレス#0の下位18ビット「000000000111110001B」により特定されるページ、つまり、フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#17に書き込まれる。フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#17は、仮想ブロック#682の仮想ページ#68に対応する。
【0171】
フラッシュメモリチップ2−0がフラッシュプログラミングを実行している間、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部アドレスのうち、上位2ビットが「01B(0)」である内部アドレス#1を選択し、当該内部アドレス#1の上位2ビットに基づいて、チップ選択信号#1を活性化させる。これにより、フラッシュメモリチップ2−1は、データの書き込みが可能な状態となる。
【0172】
次に、フラッシュシーケンサブロック12は、内部アドレス#1の下位18ビット「111000011001110001B」を、所定のレジスタ(図示せず)に格納されたデータ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。この場合、上述のとおり、チップ選択信号#1が活性状態となっているので、バス15に供給された内部アドレス#1の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−1に対してのみ有効となる(転送先指定)。
【0173】
その後、上述のとおり、フラッシュメモリチップ2−1に対してデータ転送、及び書き込み命令の発行が行われ、ホストアドレス#1に対応するデータ及び対応するエラーコレクションコード等の付加情報が、内部アドレス#1により特定されるページに書き込まれる。この場合、内部アドレス#1の下位18ビットは「111000011001110001B」であるから、ホストアドレス#1に対応するデータ及び対応するエラーコレクションコード等の付加情報は、フラッシュメモリチップ2−1の物理ブロック#7219の物理ページ#17に書き込まれる。フラッシュメモリチップ2−1の物理ブロック#7219の物理ページ#17は、仮想ブロック#682の仮想ページ#69に対応する。
【0174】
このようなデータ書き込み動作が、内部アドレス#2及び#3に対しても実行され、これにより、ホストアドレス#2及び#3に対応するデータ及び対応するエラーコレクションコード等の付加情報も、それぞれ内部アドレス#2及び#3により特定されるページへ書き込まれる。この場合、内部アドレス#2の下位18ビットは「010111111000010001B」であるから、ホストアドレス#2に対応するデータ及び対応するエラーコレクションコード等の付加情報は、フラッシュメモリチップ2−2の物理ブロック#3056の物理ページ#17に書き込まれる。同様に、内部アドレス#3の下位18ビットは「100010000000010001B」であるから、ホストアドレス#3に対応するデータ及び対応するエラーコレクションコード等の付加情報は、フラッシュメモリチップ2−3の物理ブロック#4352の物理ページ#17に書き込まれる。
【0175】
ここで、フラッシュメモリチップ2−2の物理ブロック#3056の物理ページ#17は、仮想ブロック#682の仮想ページ#70に対応し、フラッシュメモリチップ2−3の物理ブロック#4352の物理ページ#17は、仮想ブロック#682の仮想ページ#71に対応する。
【0176】
また、マイクロプロセッサ6は、上述のデータ書き込みによって、消去済みブロックキュー32のキューセット#0に格納された物理ブロックアドレスが、消去済みブロックの物理ブロックアドレスではなくなったことに応答して、新たな消去済みブロックを冗長ブロックの中から選択し、選択された消去済みブロックの物理ブロックアドレスを新たにキュー#0−0〜#0−3に格納する。
【0177】
このようにして、フラッシュシーケンサブロック12による一連の書き込み動作が完了する。
【0178】
図14は、仮想ブロック#682の仮想ページ#68〜#71に対する一連の書き込み処理が完了した状態における仮想ブロック#682の内容を示す概略図である。
【0179】
図14では、ユーザ領域25のうち、ユーザデータの格納されている部分にはハッチングが施されている。
【0180】
かかる一連の書き込み動作においては、連続するホストアドレス#0〜#3に対応するデータが、それぞれ異なるフラッシュメモリチップ2−0〜2−3に属する異なる物理ブロック内に書き込まれた点が重要である。これら4つの物理ブロックは、上述のとおり一つの仮想ブロック#682を構成し、連続するホストアドレス#0〜#3に対応するデータは、当該仮想ブロック#682内の連続する仮想ページ#68〜#71に書き込まれたことになる。
【0181】
また、図14に示されるように、仮想ブロック#682の仮想ページ#68〜#71にのみユーザデータが格納されており、その他の仮想ページにはユーザデータが格納されていないので、当該仮想ブロックにおけるスタートページは「72」であり、かかる値が仮想ページ#0のスタートページデータ格納領域30に格納されていることが分かる。このため、コントローラ3は、この仮想ブロックの仮想ページ#72〜#127が空きページであることを知ることが可能となり、その後、ホストコンピュータ5より仮想ブロック#682の仮想ページ#72〜#127に対するデータの書き込みが要求された場合であっても、ブロック間転送を行うことなく、仮想ページ#72〜#127へ直接データを書き込むことが可能となる。
【0182】
尚、上記の例では、仮想ブロックの先頭ページである仮想ページ#0以外のページ(仮想ページ#1〜#3、#68〜#71)にも、スタートページフラグ及びスタートページデータを書き込んでいるが、これらは参照されることがないので、省略しても構わない。
【0183】
さらに、上記の例では、各物理ブロックの先頭ページである仮想ページ#0〜#3以外のページ(仮想ページ#68〜#71)にも、仮想ブロックアドレスを書き込んでいるが、これを省略しても構わない。
【0184】
書き込み動作2(使用済みブロックにデータを全て追加して書き込む場合)
すでにデータの格納されている仮想ブロック(使用済みブロック)にデータを追加して書き込む場合、アドレス変換テーブル31内の対応するスタートページ格納領域を参照することによって、当該ブロックへの全てのデータの追加的な書き込みが可能であるか否かが判断される。
【0185】
かかる判断においては、まず、当該ブロックに関するスタートページの特定が行われる。スタートページの特定は、上述のとおり、スタートページ検索によって特定する方法と、アドレス変換テーブル31内のスタートページ格納領域に格納されたスタートページから直接特定する方法がある。
【0186】
前者の方法によるスタートページの特定は、スタートページは存在するものの、コントローラ3が起動されてから当該仮想ブロックへのデータの書き込みが未だ行われていない場合に実行される。すなわち、アドレス変換テーブル31の作成の際に、当該仮想ブロックの仮想ページ#0〜#3に含まれる仮想ブロックアドレスが有効な仮想ブロックアドレスを示しており、且つ、スタートページフラグ29が「1x」であった場合、アドレス変換テーブル31内の対応するスタートページ格納領域は「00001B」とされるので、この場合、コントローラ3は、スタートページ検索を行うことによって当該仮想ブロックに関するスタートページを特定することが可能となる。
【0187】
一方、後者の方法によるスタートページの特定は、上記書き込み動作1において説明したように、コントローラ3が起動された後、当該仮想ブロックへのデータの書き込みが少なくとも1回行われた場合に実行される。すなわち、当該ブロックへのデータの書き込みが少なくとも1回行われた場合、上述のとおり、アドレス変換テーブル31内の対応するスタートページ格納領域にスタートページが書き込まれるので、この場合、コントローラ3は、対応するスタートページ格納領域を参照することによって当該仮想ブロックに関するスタートページを特定することが可能となる。
【0188】
このようにいずれかの方法でスタートページが特定されると、次に、かかるスタートページと書き込み対象である仮想ページの先頭ページとが比較され、これによってデータの追加的な書き込みが可能であるか否かが最終的に判断される。かかる判断は、書き込み対象である仮想ページの先頭ページを示す7ビットの値が、スタートページを示す7ビットの値と同じか、またはこれを超えていれば、すべてのデータの追加的な書き込みが可能であるとされ、書き込み対象である仮想ページの先頭ページを示す7ビットの値が、スタートページを示す7ビットの値未満であれば、全てのデータを追加的に書き込むことは不可能であるとされる。尚、書き込み対象の仮想ページ番号は、上述のとおり、ホストアドレスの下位7ビット(B+C)によって示される。
【0189】
全てのデータの追加的な書き込み処理を行う場合、ユーザデータを書き込むべき仮想ページの先頭ページがスタートページと一致しているか否かによって、行われる処理が異なる。
【0190】
まず、ユーザデータを書き込むべき仮想ページの先頭ページがスタートページと一致している場合、すなわち、スタートページに対してユーザデータの書き込みが行われる場合には、当該書き込み処理によって新たなスタートページとなる仮想ページの番号が、スタートページデータとしてユーザデータを書き込むべき各仮想ページの冗長領域26内のスタートページデータ格納領域30に書き込まれる。
【0191】
一方、書き込み対象である仮想ページの先頭ページがスタートページと一致していない場合、すなわち、スタートページに対してユーザデータの書き込みが行われない場合には、当該書き込み処理によって新たなスタートページとなる仮想ページの番号が、スタートページデータとして現在のスタートページ及び書き込み対象の各仮想ページの冗長領域26内のスタートページデータ格納領域30に書き込まれる。
【0192】
また、書き込み処理を行うとスタートページが存在しなくなる場合、すなわち、ユーザデータを書き込むべき仮想ページに最終ページ(仮想ページ#127)が含まれている場合には、仮想ページ#0の冗長領域26のスタートページフラグ29が「0x」に書き換えられる。
【0193】
ここで、新たなスタートページとなる仮想ページとは、書き込み対象である最後の仮想ページの次のページである。
【0194】
以上説明した、使用済みブロックに対する全てのデータの追加的な書き込み処理について、具体的な例を挙げてより詳細に説明する。
【0195】
まず、ユーザデータを書き込むべき仮想ページの先頭ページがスタートページと一致している場合について説明する。
【0196】
ユーザデータを書き込むべき仮想ページの先頭ページがスタートページと一致している場合
ここでは、上述した書き込み動作1が完了した直後の状態(図14参照)において、ホストコンピュータ5より、バス14、コネクタ4及びバス13を介して、外部コマンドの一種である外部書き込みコマンドと、2つのホストアドレス「00010101010101001000B」(ホストアドレス#0)及び「00010101010101001001B」(ホストアドレス#1)と、これらホストアドレスにそれぞれ書き込むべきデータとがフラッシュメモリシステム1に供給された場合を例に説明する。尚、これらホストアドレスは、それぞれ仮想ブロック#682の仮想ページ#72、#73に対応する。
【0197】
ホストアドレス#0、#1及び外部書き込みコマンドがコントローラ3に供給された場合の、コントローラ3の基本的な動作は上述したとおりであり、重複する部分の説明は省略する。
【0198】
図15は、ホストアドレス#0、#1を内部アドレス#0、#1に変換する方法を説明するための図である。
【0199】
図15に示されるように、本例では、ホストアドレス#0、#1の上位13ビット(A)が「0001010101010B」であるから、選択される仮想ブロックは、仮想ブロック#682となる。
【0200】
次に、マイクロプロセッサ6による制御のもと、SRAMワークエリア8に格納されているアドレス変換テーブル31から仮想ブロック表示領域#682が選択され、仮想ブロック表示領域#682を構成する4個のセルのうち、ホストアドレスの下位2ビット(C)と同じ枝番号を有するセルの内容が読み出される。この場合、ホストアドレス#0の下位2ビット(C)が「00B(0)」であり、ホストアドレス#1の下位2ビット(C)が「01B(1)」であるから、その内容が読み出されるセルは、セル#682−0及びセル#682−1となる。本例では、セル#682−0及びセル#682−1の内容は、上述のとおり、それぞれ「0000000001111B」及び「1110000110011B」である。
【0201】
次に、マイクロプロセッサ6による制御のもと、ホストアドレスの下位2ビット(C)、読み出されたセルの内容、及びホストアドレスの上位14ビット目〜上位18ビット目からなる5ビット(B)がこの順に結合される。結合されたアドレスは、それぞれ内部アドレス#0及び#1となる。この場合、ホストアドレス#0については、その下位2ビット(C)が「00B」であり、対応するセルの内容が「0000000001111B」であり、ホストアドレス#0の上位14ビット目〜上位18ビット目からなる5ビット(B)が「10010B」であることから、得られる内部アドレス#0は、「00000000000111110010B」となる。また、ホストアドレス#1については、その下位2ビット(C)が「01B」であり、対応するセルの内容が「1110000110011B」であり、ホストアドレス#1の上位14ビット目〜上位18ビット目からなる5ビット(B)が「10010B」であることから、得られる内部アドレス#1は、「01111000011001110010B」となる。
【0202】
以上より、ホストアドレス#0、#1から内部アドレス#0、#1への変換が完了する。
【0203】
次に、マイクロプロセッサ6による制御のもと、アドレス変換テーブル31から対応するスタートページ格納領域#682が選択され、ここに格納された内容が読み出される。本例においては、スタートページ格納領域#682の内容は「1001000B(72)」である。
【0204】
このようにしてスタートページが読み出されると、マイクロプロセッサ6による制御のもと、書き込み対象である仮想ページの先頭ページとの比較が行われる。この場合、書き込み対象である仮想ページの先頭ページは、ホストアドレス#0によって示されているので、スタートページの値「1001000B(72)」と、ホストアドレス#0の下位7ビットの値「1001000B(72)」とが比較されることとなる。このように、本例では、ホストアドレス#0の下位7ビットの値「1001000B(72)」がスタートページの値「1001000B(72)」と一致しているので、データの追加的な書き込みが可能であると判断される。
【0205】
さらに、マイクロプロセッサ6による制御のもと、ユーザデータが書き込まれるべき仮想ページの最終ページを示すホストアドレス#1の下位7ビットに1を加算したデータ、すなわち新たなスタートページが生成される。かかるスタートページの値は、スタートページデータとして、ECCブロック11内に一時的に保持される。この場合、ホストアドレス#1の下位7ビットが「1001001B(73)」であるから、ECCブロック11内に格納される新たなスタートページデータは「1001010B(74)」となる。
【0206】
さらに、アドレス変換テーブル31内の対応するスタートページ格納領域#682に、上記新たなスタートページ「1001010B(74)」が上書きされる。
【0207】
以上より、内部アドレス#0によってアクセスされるのはフラッシュメモリチップ2−0内の物理ブロック#15の物理ページ#18となり、内部アドレス#1によってアクセスされるのはフラッシュメモリチップ2−1内の物理ブロック#7219の物理ページ#18となる。
【0208】
その後、フラッシュシーケンサブロック12が有するレジスタ(図示せず)への設定が完了すると、フラッシュシーケンサブロック12による一連の書き込み動作が実行される。
【0209】
すなわち、本例においては、まず内部アドレス#0を用いて転送先指定が行われた後、バッファ9に格納されている書き込みデータのうち、ホストアドレス#0に対応するデータ及び対応するエラーコレクションコード等の冗長領域26に格納すべき付加情報が、フラッシュメモリチップ2−0に対してデータ転送され、その後、書き込み命令が発行される。これにより、フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#18に対する書き込み処理が完了する。ここで、フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#18に書き込むべきデータとは、ホストアドレス#0に対応するユーザデータ、当該ユーザデータに対応するエラーコレクションコード、仮想ブロックアドレス、スタートページフラグ、スタートページデータ及び冗長領域26に格納されるその他の付加情報である。この場合、書き込むべきスタートページフラグ29の値は「10」であり、スタートページデータの値は「1001010B(74)」である。尚、フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#18は、仮想ブロック#682の仮想ページ#72に対応する。
【0210】
さらに、フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#18に対するフラッシュプログラミングが実行されている途中で、内部アドレス#1を用いて転送先指定が行われた後、バッファ9に格納されている書き込みデータのうち、ホストアドレス#1に対応するデータ及び対応するエラーコレクションコード等の冗長領域26に格納すべき付加情報が、フラッシュメモリチップ2−1に対してデータ転送され、その後、書き込み命令が発行される。これにより、フラッシュメモリチップ2−1の物理ブロック#7219の物理ページ#18に対する書き込み処理が完了する。ここで、フラッシュメモリチップ2−1の物理ブロック#7219の物理ページ#18に書き込むべきデータとは、ホストアドレス#1に対応するユーザデータ、当該ユーザデータに対応するエラーコレクションコード、仮想ブロックアドレス、スタートページフラグ、スタートページデータ及び冗長領域26に格納されるその他の付加情報である。この場合、書き込むべきスタートページフラグ29の値は「10」であり、スタートページデータの値は「1001010B(74)」である。尚、フラッシュメモリチップ2−1の物理ブロック#7219の物理ページ#18は、仮想ブロック#682の仮想ページ#73に対応する。
【0211】
図16は、仮想ブロック#682の仮想ページ#72、#73に対する一連の書き込み処理が完了した状態における仮想ブロック#682の内容を示す概略図である。
【0212】
かかる一連の書き込み動作においてもは、連続するホストアドレス#0、#1に対応するデータが、それぞれ異なるフラッシュメモリチップ2−0、2−1に属する異なる物理ブロック内に書き込まれている。
【0213】
また、図16に示されるように、仮想ブロック#682の仮想ページ#68〜#73にのみユーザデータが格納されており、その他の仮想ページにはユーザデータが格納されていないので、当該仮想ブロックにおけるスタートページは「74」であり、かかる値が仮想ページ#72のスタートページデータ格納領域30に格納されていることが分かる。このため、コントローラ3は、スタートページ検索によって、この仮想ブロックの仮想ページ#74〜#127が空きページであることを知ることが可能となり、その後、ホストコンピュータ5より仮想ブロック#682の仮想ページ#74〜#127に対するデータの書き込みが要求された場合であっても、ブロック間転送を行うことなく、仮想ページ#74〜#127へ直接データを書き込むことが可能となる。
【0214】
尚、上記の例では、書き込み対象の仮想ページ#72及び#73のうち、従前のスタートページ(仮想ページ#72)以外のページ(仮想ページ#73)にも、スタートページフラグ及びスタートページデータを書き込んでいるが、これらは参照されることがないので、省略しても構わない。
【0215】
さらに、上記の例では、書き込み対象の仮想ページ#72及び#73に仮想ブロックアドレスを書き込んでいるが、仮想ページ#72、#73の仮想ブロックアドレス格納領域28に格納された仮想ブロックアドレスは参照されることがないので、これを省略しても構わない。
【0216】
また、上記の例では、スタートページ格納領域#682から直接スタートページを入手しているが、上記書き込み動作1が行われた後、コントローラ3がリセットされたことによりSRAMワークエリア8の内容が一旦消去されている場合には、スタートページ格納領域#682から直接スタートページを入手することはできない。この場合、コントローラ3のリセット時に実行されるアドレス変換テーブル31の作成作業によって、スタートページ格納領域#682の内容が「0000001B」となるので、上述したスタートページ検索によってスタートページを入手する必要がある。
【0217】
次に、ユーザデータを書き込むべきページの先頭ページがスタートページと一致していない場合について説明する。
【0218】
ユーザデータを書き込むべきページの先頭ページがスタートページと一致していない場合
ここでは、上述した書き込み動作1が完了した直後の状態(図14参照)において、ホストコンピュータ5より、バス14、コネクタ4及びバス13を介して、外部コマンドの一種である外部書き込みコマンドと、ホストアドレス「00010101010101001010B」(ホストアドレス#0)及び「00010101010101001011B」(ホストアドレス#1)と、これらホストアドレスにそれぞれ書き込むべきデータとがフラッシュメモリシステム1に供給された場合を例に説明する。尚、これらホストアドレスは、それぞれ仮想ブロック#682の仮想ページ#74、#75に対応する。
【0219】
ホストアドレス#0、#1及び外部書き込みコマンドがコントローラ3に供給された場合の、コントローラ3の基本的な動作は上述したとおりであり、重複する部分の説明は省略する。
【0220】
図17は、ホストアドレス#0、#1を内部アドレス#0、#1に変換する方法を説明するための図である。
【0221】
図17に示されるように、本例では、ホストアドレス#0の下位2ビット(C)は「10B」であり、読み出されるセルの内容は「0101111110000B」であり、ホストアドレス#0の上位14ビット目〜上位18ビット目からなる5ビット(B)は「10010B」であることから、得られる内部アドレス#0は、「10010111111000010010B」となる。また、ホストアドレス#1の下位2ビット(C)は「11B」であり、読み出されるセルの内容は「1000100000000B」であり、ホストアドレス#1の上位14ビット目〜上位18ビット目からなる5ビット(B)は「10010B」であることから、得られる内部アドレス#1は、「11100010000000010010B」となる。
【0222】
以上より、ホストアドレス#0、#1から内部アドレス#0、#1への変換が完了する。
【0223】
次に、マイクロプロセッサ6による制御のもと、アドレス変換テーブル31から対応するスタートページ格納領域#682が選択され、ここに格納された内容が読み出される。上述のとおり、スタートページ格納領域#682の内容は「1001000B(72)」である。
【0224】
このようにしてスタートページが読み出されると、マイクロプロセッサ6による制御のもと、書き込み対象である仮想ページの先頭ページとの比較が行われる。この場合、書き込み対象である仮想ページの先頭ページは、ホストアドレス#0によって示されているので、スタートページの値「1001000B(72)」と、ホストアドレス#0の下位7ビットの値「1001010B(74)」とが比較されることとなる。このように、本例においても、ホストアドレス#0の下位7ビットの値「1001010B(74)」がスタートページの値「1001000B(72)」を超えているので、データの追加的な書き込みが可能であると判断される。
【0225】
さらに、マイクロプロセッサ6による制御のもと、ユーザデータが書き込まれるべき仮想ページの最終ページを示すホストアドレス#1の下位7ビットに1を加算したデータ、すなわち新たなスタートページが生成される。かかるスタートページの値は、スタートページデータとして、ECCブロック11内に一時的に保持される。この場合、ホストアドレス#1の下位7ビットが「1001011B(75)」であるから、ECCブロック11内に格納されるスタートページデータは「1001100B(76)」となる。
【0226】
さらに、アドレス変換テーブル31内の対応するスタートページ格納領域#682に、上記スタートページ「1001100B(76)」が上書きされる。
【0227】
以上より、内部アドレス#0によってアクセスされるのはフラッシュメモリチップ2−2内の物理ブロック#3056の物理ページ#18となり、内部アドレス#1によってアクセスされるのはフラッシュメモリチップ2−3内の物理ブロック#4352の物理ページ#18となる。
【0228】
その後、フラッシュシーケンサブロック12が有するレジスタ(図示せず)への設定が完了すると、フラッシュシーケンサブロック12による一連の書き込み動作が実行される。本例においては、フラッシュシーケンサブロック12による一連の書き込み動作は、フラッシュメモリチップ2−0内の物理ブロック#15の物理ページ#18(従前のスタートページ)に対する各種冗長データの書き込み、フラッシュメモリチップ2−2内の物理ブロック#3056の物理ページ#18(ホストアドレス#0に対応)に対するユーザデータ及び各種冗長データの書き込み、フラッシュメモリチップ2−3内の物理ブロック#4352の物理ページ#18(ホストアドレス#1に対応)に対するユーザデータ及び各種冗長データの書き込みの順に実行される。
【0229】
すなわち、本例においては、まず従前のスタートページに対する転送先指定が行われた後、バッファ9に格納されている書き込みデータのうち、従前のスタートページの冗長領域26に格納すべき付加情報が、フラッシュメモリチップ2−0に対してデータ転送され、その後、書き込み命令が発行される。これにより、フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#18に対する書き込み処理が完了する。ここで、フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#18に書き込むべきデータとは、スタートページフラグ及びスタートページデータであり、その値は、それぞれ「10」及び「1001100B(76)」である。尚、フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#18は、仮想ブロック#682の仮想ページ#72に対応する。
【0230】
次に、フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#18に対するフラッシュプログラミングが実行されている途中で、内部アドレス#0を用いて転送先指定が行われた後、バッファ9に格納されている書き込みデータのうち、ホストアドレス#0に対応するデータ及び対応するエラーコレクションコード等の冗長領域26に格納すべき付加情報が、フラッシュメモリチップ2−2に対してデータ転送され、その後、書き込み命令が発行される。これにより、フラッシュメモリチップ2−2の物理ブロック#3056の物理ページ#18に対する書き込み処理が完了する。ここで、フラッシュメモリチップ2−2の物理ブロック#3056の物理ページ#18に書き込むべきデータとは、ホストアドレス#0に対応するユーザデータ、当該ユーザデータに対応するエラーコレクションコード、仮想ブロックアドレス、スタートページフラグ、スタートページデータ及び冗長領域26に格納されるその他の付加情報である。この場合、書き込むべきスタートページフラグ29の値は「10」であり、スタートページデータの値は「1001100B(76)」である。尚、フラッシュメモリチップ2−2の物理ブロック#3056の物理ページ#18は、仮想ブロック#682の仮想ページ#74に対応する。
【0231】
さらに、フラッシュメモリチップ2−2の物理ブロック#3056の物理ページ#18に対するフラッシュプログラミングが実行されている途中で、内部アドレス#1を用いて転送先指定が行われた後、バッファ9に格納されている書き込みデータのうち、ホストアドレス#1に対応するデータ及び対応するエラーコレクションコード等の冗長領域26に格納すべき付加情報が、フラッシュメモリチップ2−3に対してデータ転送され、その後、書き込み命令が発行される。これにより、フラッシュメモリチップ2−3の物理ブロック#4352の物理ページ#18に対する書き込み処理が完了する。ここで、フラッシュメモリチップ2−3の物理ブロック#4352の物理ページ#18に書き込むべきデータとは、ホストアドレス#1に対応するユーザデータ、当該ユーザデータに対応するエラーコレクションコード、仮想ブロックアドレス、スタートページフラグ、スタートページデータ及び冗長領域26に格納されるその他の付加情報である。この場合、書き込むべきスタートページフラグ29の値は「10」であり、スタートページデータの値は「1001100B(76)」である。尚、フラッシュメモリチップ2−3の物理ブロック#4352の物理ページ#18は、仮想ブロック#682の仮想ページ#75に対応する。
【0232】
図18は、仮想ブロック#682の仮想ページ#74、#75に対する一連の書き込み処理が完了した状態における仮想ブロック#682の内容を示す概略図である。
【0233】
かかる一連の書き込み動作においても、連続するホストアドレス#0、#1に対応するデータが、それぞれ異なるフラッシュメモリチップ2−2、2−3に属する異なる物理ブロック内に書き込まれている。
【0234】
また、図18に示されるように、仮想ブロック#682の仮想ページ#68〜#71、#74、#75にのみユーザデータが格納されており、その他の仮想ページにはユーザデータが格納されていないので、当該仮想ブロックにおけるスタートページは「76」であり、かかる値が仮想ページ#72のスタートページデータ格納領域30に格納されていることが分かる。このため、コントローラ3は、スタートページ検索によって、この仮想ブロックの仮想ページ#76〜#127が空きページであることを知ることが可能となり、その後、ホストコンピュータ5より仮想ブロック#682の仮想ページ#76〜#127に対するデータの書き込みが要求された場合であっても、ブロック間転送を行うことなく、仮想ページ#76〜#127へ直接データを書き込むことが可能となる。
【0235】
尚、上記の例においては、従前のスタートページである仮想ページ#72や、書き込み対象の仮想ページ#74及び#75に仮想ブロックアドレスを書き込んでいるが、仮想ページ#72、#74、#75に格納された仮想ブロックアドレスは参照されることがないので、これを省略しても構わない。
【0236】
また、上記の例においては、書き込み対象の仮想ページ#74及び#75にスタートページフラグ及びスタートページデータを書き込んでいるが、仮想ページ#74、#75に格納されたスタートページフラグ及びスタートページデータは参照されることがないので、これを省略しても構わない。
【0237】
さらに、上記の例では、スタートページ格納領域#682から直接スタートページを入手しているが、上記書き込み動作1が行われた後、コントローラ3がリセットされたことによりSRAMワークエリア8の内容が一旦消去されている場合には、上述したスタートページ検索によってスタートページを入手する必要がある。
【0238】
書き込み動作3(ブロック間転送を伴う場合)
上述のとおり、すでにデータの格納されている仮想ブロック(使用済みブロック)にデータを追加して書き込む場合、当該仮想ブロックのスタートページと書き込み対象である仮想ページの先頭ページとが比較され、書き込み対象である仮想ページの先頭ページを示す7ビットの値が、スタートページを示す7ビットの値と同じか、またはこれを超えていれば、すべてのデータの追加的な書き込みが可能となる。一方、書き込み対象である仮想ページの先頭ページを示す7ビットの値がスタートページを示す7ビットの値よりも小さい場合には、「ブロック間転送」が行われる。
【0239】
ここで、ブロック間転送について説明する。
【0240】
上述のとおり、フラッシュメモリチップ2−0〜2−3を構成するフラッシュメモリセル16は、これをメモリセル単位にて消去状態から書込状態へ変化させることはできる一方、これを書込状態から消去状態へ変化させることは、メモリセル単位で行うことができず、ブロック単位でしか行うことができない。このため、ある物理ページにデータを書き込む際には、その物理ページのユーザ領域25及び冗長領域26を構成する全てのフラッシュメモリセル16が消去状態となっている必要があり、既に何らかのデータが書き込まれている物理ページ、すなわち、その物理ページのユーザ領域25を構成するフラッシュメモリセル16が一つでも書込状態となっているページに、これと異なるデータを直接上書きすることはできない。したがって、既にデータの書き込まれた物理ページに対し、これと異なる新しいデータを書き込むためには、一旦、この物理ページが属する物理ブロックを構成するフラッシュメモリセル16を全て消去状態とし、その後に新しいデータを書き込むという処理が必要となる。
【0241】
したがって、ある物理ページに格納された古いデータに新しいデータを上書きしようとする場合、この物理ページが属する物理ブロックに含まれる他の物理ページに格納されたデータが消失するのを防ぐためには、当該他の物理ページに格納されたデータを、他の物理ブロックに移動させるという処理が必要となるのである。
【0242】
このような上書き処理に伴うデータの移動が「ブロック間転送」と呼ばれる。尚、本明細書においては、転送元の物理ブロックの物理ブロックアドレスを「転送元ブロックアドレス」、転送先の物理ブロックの物理ブロックアドレスを「転送先ブロックアドレス」と呼ぶ。
【0243】
さて、書き込み対象である仮想ページの先頭ページを示す7ビットの値がスタートページを示す7ビットの値よりも小さい場合には、上述のとおり、ブロック間転送が行われるが、この場合、書き込み対象である仮想ページのうち、スタートページ以前に属する仮想ページ(以下、このような仮想ページ群を「追書込不能領域」と呼ぶことがある)とスタートページ以降(スタートページを含む)に属する仮想ページ(以下、このような仮想ページ群を「追書込可能領域」と呼ぶことがある)に分類され、仮想ブロックを構成する全ての物理ブロックの追書込不能領域が書き込み対象となっている場合には、仮想ブロックを構成する4つの物理ブロック全てについてブロック間転送が実行される。
【0244】
一方、仮想ブロックを構成する一部の物理ブロックの追書込不能領域が書き込み対象となっており、残りのブロックの追書込不能領域が書き込み対象となっていない場合には、仮想ブロックを構成する4つの物理ブロックのうち、追書込不能領域が書き込み対象となっている物理ブロックについてのみブロック間転送が実行され、残りの物理ブロックについてはブロック間転送が省略される。この場合、上記残りの物理ブロックの追書込可能領域が書き込み対象である否かによって行われる処理が異なる。具体的には、上記残りの物理ブロックの追書込可能領域が書き込み対象となっていない場合には、上記一部の物理ブロックについてのブロック間転送のみが実行され、上記残りの物理ブロックの追書込可能領域が書き込み対象となっている場合には、上記一部の物理ブロックについてのブロック間転送と、上記残りの物理ブロックに対するデータの追加的な書き込み(書き込み動作2参照)の両方が実行される。
【0245】
以下、それぞれの場合における動作について説明する。
【0246】
まず、仮想ブロックを構成する全ての物理ブロックついてブロック間転送を行う場合の動作について説明する。
【0247】
仮想ブロックを構成する全ての物理ブロックついてブロック間転送を行う場合
ここでは、上述した書き込み動作1が完了した直後の状態(図14参照)において、ホストコンピュータ5より、バス14、コネクタ4及びバス13を介して、外部コマンドの一種である外部書き込みコマンドと、4つのホストアドレス「00010101010101000000B」(ホストアドレス#0)、「00010101010101000001B」(ホストアドレス#1)、「00010101010101000010B」(ホストアドレス#2)、「00010101010101000011B」(ホストアドレス#3)と、これらホストアドレスにそれぞれ書き込むべきデータとがフラッシュメモリシステム1に供給された場合を例に説明する。尚、これらホストアドレスは、それぞれ仮想ブロック#682の仮想ページ#64〜#67に対応する。
【0248】
まず、ホストアドレス#0〜#3及び外部書き込みコマンドがコントローラ3に供給されると、これらホストアドレス#0〜#3及び外部書き込みコマンドは、ホストインターフェースブロック7が有するタスクファイルレジスタ(図示せず)に一時的に格納される。さらに、ホストアドレス#0〜#3にそれぞれ対応する書き込みデータがコントローラ3に供給されると、マイクロプロセッサ6による制御のもと、これらデータがECCブロック11に送出される。これらデータの供給を受けたECCブロック11は、これらデータを解析してエラーコレクションコードを生成し、これを一時的に保持する。
【0249】
次に、アドレス変換テーブル31を用いた転送元ブロックアドレス及び転送先ブロックアドレスの生成が行われる。
【0250】
図19は、転送元ブロックアドレス及び転送先ブロックアドレスの生成方法を説明するための図である。
【0251】
図19に示されるように、本例では、ホストアドレス#0〜#3の上位13ビット(A)が「0001010101010B」であるから、選択される仮想ブロックは仮想ブロック#682である。
【0252】
次に、マイクロプロセッサ6による制御のもと、SRAMワークエリア8に格納されているアドレス変換テーブル31から仮想ブロック表示領域#682が選択され、仮想ブロック表示領域#682の内容が読み出される。上述のとおり、仮想ブロック#682には書き込み動作1においてすでにデータが割り当てられているので、対応するフラグ#682は「1」を示しているはずである。また、セル#682−0〜#682−3の内容は、上述のとおりそれぞれ「0000000001111B」、「1110000110011B」、「0101111110000B」、「1000100000000B」である。
【0253】
セル#682−0〜#682−3に格納された内容が読み出されると、マイクロプロセッサ6による制御のもと、これを用いて転送元ブロックアドレスが生成される。
【0254】
転送元ブロックアドレスは、マイクロプロセッサ6による制御のもと、ホストアドレス#0〜#3それぞれの下位2ビット(C)及び読み出されたセルの内容がこの順に結合されて生成される。この場合、ホストアドレス#0〜#3の下位2ビット(C)はそれぞれ「00B」〜「11B」であり、読み出されたセルの内容は「0000000001111B」、「1110000110011B」、「0101111110000B」、「1000100000000B」であることから、得られる4つの転送元ブロックアドレス#0〜#3の値は、図19に示される値となる。
【0255】
これにより、転送元ブロックアドレス#0〜#3の生成が完了する。
【0256】
次に、マイクロプロセッサ6による制御のもと、消去済みブロックキュー32を構成するキューセット#0〜#5のいずれか、例えば、キューセット#1が選択され、かかるキューセット#1を構成する各キュー#1−0〜#1−3に格納された内容が読み出される。上述のとおり、各キューに格納されているのは、消去済みブロックの物理ブロックアドレスである。本例では、これらキュー#1−0〜#1−3の内容がそれぞれ「0010000010000B」、「1000000100000B」、「0111101000000B」、「0010110000000B」であるものとする。
【0257】
キュー#1−0〜#1−3に格納された内容が読み出されると、マイクロプロセッサ6による制御のもと、これらがアドレス変換テーブル31の仮想ブロック表示領域#682を構成するセル#682−0〜#682−3に上書きされるとともに、これらを用いて転送先ブロックアドレスが生成される。
【0258】
転送先ブロックアドレスは、マイクロプロセッサ6による制御のもと、ホストアドレス#0〜#3それぞれの下位2ビット(C)及び読み出されたキューの内容がこの順に結合されて生成される。この場合、ホストアドレス#0〜#3の下位2ビット(C)はそれぞれ「00B」〜「11B」であり、読み出されたキューの内容は「0010000010000B」、「1000000100000B」、「0111101000000B」、「0010110000000B」であることから、得られる4つの転送先ブロックアドレス#0〜#3の値は、図19に示される値となる。
【0259】
これにより、転送先ブロックアドレス#0〜#3の生成が完了する。
【0260】
さらに、マイクロプロセッサ6による制御のもと、仮想ブロック#682に対応するスタートページと書き込み対象である仮想ページの最終ページとが比較され、これによってスタートページの更新が必要であるか否かが判断される。かかる判断は、書き込み対象である仮想ページの最終ページを示す7ビットの値が、スタートページを示す7ビットの値と同じか、またはこれを超えていれば、スタートページの更新が必要であるとされ、書き込み対象である仮想ページの先頭ページを示す7ビットの値が、スタートページを示す7ビットの値未満であれば、スタートページの更新が不要であるとされる。
【0261】
上述のとおり、書き込み対象の仮想ページは、ホストアドレスの下位7ビットによって示される。本例では、仮想ブロック#682のスタートページが「1001000B(72)」であり、書き込み対象である仮想ページの最終ページが「1000011B(67)」であるから、スタートページの更新が不要であると判断される。したがって、スタートページ格納領域#682の更新は行われない。
【0262】
以上の処理が完了すると、次に、マイクロプロセッサ6による制御のもと、フラッシュシーケンサブロック12が有するレジスタ(図示せず)に対する設定がなされる。かかる設定は、次のように行われる。
【0263】
まず、マイクロプロセッサ6による制御のもと、データ転送コマンド、内部書き込みコマンド及び内部読み出しコマンドがフラッシュシーケンサブロック12内の所定のレジスタ(図示せず)に設定される。さらに、マイクロプロセッサ6による制御のもと、上記生成された転送元ブロックアドレス#0〜#3及び転送先ブロックアドレス#0〜#3がフラッシュシーケンサブロック12内の所定のレジスタ(図示せず)に設定される。
【0264】
このようにしてフラッシュシーケンサブロック12に含まれる各種レジスタ(図示せず)に対する設定が完了すると、フラッシュシーケンサブロック12による一連の書き込み動作が実行される。フラッシュシーケンサブロック12による一連の書き込み動作は、次の通りである。
【0265】
まず、フラッシュシーケンサブロック12は、所定のレジスタに格納された転送元ブロックアドレス#0に「00000B(0)」を付加して20ビットの転送元内部アドレスを生成する。この場合、転送元内部アドレスは、「00000000000111100000B」となる。次に、フラッシュシーケンサブロック12は、生成された転送元内部アドレスの上位2ビットに基づき、フラッシュメモリチップ2−0〜2−3のうち、アクセスすべきページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック10に指示する。この場合、生成された転送元内部アドレスの上位2ビットは「00B(0)」であるから、アクセスすべきページが属するフラッシュメモリチップは、フラッシュメモリチップ2−0であり、チップ選択信号#0が活性化される。これにより、フラッシュメモリチップ2−0は、データの読み出しが可能な状態となる。一方、チップ選択信号#1〜#3は、非活性状態が保たれる。
【0266】
次に、フラッシュシーケンサブロック12は、転送元内部アドレスの下位18ビット「000000000111100000B」を、所定のレジスタに格納された内部読み出しコマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。
【0267】
これにより、フラッシュメモリチップ2−0は、供給された転送元内部アドレスの下位18ビット「000000000111100000B」に格納されたデータの読み出しを実行する。すなわち、フラッシュメモリチップ2−0は、物理ブロック#15の物理ページ#0に格納されたデータの読み出しを実行する。尚、フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#0は、仮想ブロック#682の仮想ページ#0に対応する。
【0268】
このようにしてフラッシュメモリチップ2−0から読み出されたデータは、バス15を介してフラッシュメモリインターフェースブロック10に供給される。フラッシュメモリインターフェースブロック10がユーザデータを受け取ると、これがバッファ9に一時的に格納されるとともに、ECCブロック11に送出され、新たにエラーコレクションコードの生成が行われる。ECCブロック11にて新たに生成されたエラーコレクションコードは、ECCブロック11内に一時的に保持される。
【0269】
このような読み出し動作が、転送元ブロックアドレス#1〜#3に「00000B(0)」が付加されることによって、フラッシュメモリチップ2−1〜2−3に対しても実行され、その結果、フラッシュメモリチップ2−1に属する物理ブロック#7219の物理ページ#0に格納されたデータ、フラッシュメモリチップ2−2に属する物理ブロック#3056の物理ページ#0に格納されたデータ、及びフラッシュメモリチップ2−3に属する物理ブロック#4352の物理ページ#0に格納されたデータも読み出されることになる。尚、仮想ブロック上においては、フラッシュメモリチップ2−1の物理ブロック#7219の物理ページ#0は仮想ページ#1であり、フラッシュメモリチップ2−2の物理ブロック#3056の物理ページ#0は仮想ページ#2であり、フラッシュメモリチップ2−3の物理ブロック#4352の物理ページ#0は仮想ページ#3に対応する。すなわち、以上の処理によって、仮想ブロック#682の仮想ページ#0〜#3に格納されているデータが読み出されたことになる。
【0270】
次に、バッファ9に一時的に格納されたデータの書き込み動作が行われる。かかる書き込み動作は、図12に示したタイミングで行われる。
【0271】
まず、フラッシュシーケンサブロック12は、所定のレジスタに格納された転送先ブロックアドレス#0に「00000B(0)」を付加して20ビットの転送先内部アドレスを生成する。この場合、転送先内部アドレスは、「00001000001000000000B」となる。
【0272】
次に、フラッシュシーケンサブロック12は、生成された転送先内部アドレスの上位2ビットに基づき、フラッシュメモリチップ2−0〜2−3のうち、アクセスすべきページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック10に指示する。この場合、転送先内部アドレスの上位2ビットは「00B(0)」であるから、アクセスすべきページが属するフラッシュメモリチップは、フラッシュメモリチップ2−0であり、チップ選択信号#0が活性化される。これにより、フラッシュメモリチップ2−0は、データの書き込みが可能な状態となる。
【0273】
次に、フラッシュシーケンサブロック12は、転送先内部アドレスの下位18ビットを、所定のレジスタ(図示せず)に格納されたデータ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。バス15に供給された書き込みアドレス及びデータ転送コマンドは、フラッシュメモリチップ2−0〜2−3に対し共通に供給されるが、上述のとおり、チップ選択信号#0は活性状態となっており、チップ選択信号#1〜#3は非活性状態となっているので、バス15に供給された転送先内部アドレス及びデータ転送コマンドは、フラッシュメモリチップ2−0に対してのみ有効となる(転送先指定)。
【0274】
次に、バッファ9に格納されているデータのうち、フラッシュメモリチップ2−0から読み出したデータ及び対応するエラーコレクションコード等の冗長領域26に格納すべき付加情報が、フラッシュシーケンサブロック12により、フラッシュメモリインターフェースブロック10を介して、バス15に供給される。バス15に供給されたデータ及びエラーコレクションコード等の付加情報も、やはりフラッシュメモリチップ2−0〜2−3に対し共通に供給されるが、上述のとおり、チップ選択信号#0が活性状態となっているため、フラッシュメモリチップ2−0に対してのみ有効となる(データ転送)。フラッシュメモリチップ2−0に転送されたデータ及びエラーコレクションコード等の付加情報は、フラッシュメモリチップ2−0内に備えられたレジスタ(図示せず)に一時的に格納される。
【0275】
次に、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部書き込みコマンドを、フラッシュメモリチップ2−0に対して発行する(書き込み命令)。
【0276】
これに応答して、フラッシュメモリチップ2−0は、所定のレジスタに格納されているデータ及びエラーコレクションコード等の付加情報を、転送先指定処理によって指定されたアドレスに書き込む(フラッシュプログラミング)。すなわち、レジスタに格納されているデータ及びエラーコレクションコード等の付加情報が、転送先内部アドレスの下位18ビット「001000001000000000B」により特定されるページ、つまり、フラッシュメモリチップ2−0の物理ブロック#1040の物理ページ#0に書き込まれる。フラッシュメモリチップ2−0の物理ブロック#1040の物理ページ#0は、仮想ブロック#682の仮想ページ#0に対応する。
【0277】
フラッシュメモリチップ2−0がフラッシュプログラミングを実行している間、フラッシュシーケンサブロック12は、所定のレジスタに格納された転送先ブロックアドレス#1に「00000B(0)」を付加して20ビットの新たな転送先内部アドレスを生成する。この場合、転送先内部アドレスは、「01100000010000000000B」となる。次いで、フラッシュシーケンサブロック12は、新たな転送先内部アドレスの上位2ビットに基づいて、チップ選択信号#1を活性化させる。これにより、フラッシュメモリチップ2−1は、データの書き込みが可能な状態となる。
【0278】
次に、フラッシュシーケンサブロック12は、新たな転送先内部アドレスの下位18ビット「100000010000000000B」を、所定のレジスタ(図示せず)に格納されたデータ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。この場合、上述のとおり、チップ選択信号#1が活性状態となっているので、バス15に供給された内部アドレス#1の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−1に対してのみ有効となる(転送先指定)。
【0279】
次に、バッファ9に格納されているデータのうち、フラッシュメモリチップ2−1から読み出したデータ及び対応するエラーコレクションコード等の冗長領域26に格納すべき付加情報が、上述と同様にしてフラッシュメモリチップ2−1に対して転送され、その後、書き込み命令の発行が行われる。これにより、フラッシュメモリチップ2−1はフラッシュプログラミングを行い、レジスタに格納されているデータ及びエラーコレクションコード等の付加情報が、転送先内部アドレスの下位18ビット「100000010000000000B」により特定されるページ、つまり、フラッシュメモリチップ2−1の物理ブロック#4128の物理ページ#0に書き込まれる。フラッシュメモリチップ2−1の物理ブロック#4128の物理ページ#0は、仮想ブロック#682の仮想ページ#1に対応する。
【0280】
このような、書き込み処理が、転送先ブロックアドレス#2及び#3に「00000B(0)」が付加されることによって、フラッシュメモリチップ2−2及び2−3に対しても実行され、これにより、フラッシュメモリチップ2−2から読み出したデータ及び対応するエラーコレクションコード等の冗長領域26に格納すべき付加情報が、フラッシュメモリチップ2−2の物理ブロック#3904の物理ページ#0に書き込まれ、フラッシュメモリチップ2−3から読み出したデータ及び対応するエラーコレクションコード等の冗長領域26に格納すべき付加情報が、フラッシュメモリチップ2−3の物理ブロック#1408の物理ページ#0に書き込まれる。フラッシュメモリチップ2−2の物理ブロック#3904の物理ページ#0は、仮想ブロック#682の仮想ページ#2に対応し、フラッシュメモリチップ2−3の物理ブロック#1408の物理ページ#0は、仮想ブロック#682の仮想ページ#3に対応する。
【0281】
これにより、転送元の仮想ブロックの仮想ページ#0〜#3に格納されているデータが、転送先の仮想ブロックの仮想ページ#0〜#3に書き込まれたことになる。すなわち、転送元の仮想ブロックの仮想ページ#0〜#3から転送先の仮想ブロックの仮想ページ#0〜#3へのデータの転送が行われたことになる。
【0282】
このようなデータの転送動作は、転送元ブロックアドレス及び転送先ブロックアドレスに付加する5ビットの値をインクリメントすることによって、次々と行われる。すなわち、転送元ブロックアドレス及び転送先ブロックアドレスに付加される5ビットの値が「00001(1)」であれば、転送元の仮想ブロックの仮想ページ#4〜#7から転送先の仮想ブロックの仮想ページ#4〜#7へのデータの転送が行われ、「00010(2)」であれば、転送元の仮想ブロックの仮想ページ#8〜#11から転送先の仮想ブロックの仮想ページ#8〜#11へのデータの転送が行われることになる。
【0283】
このような転送動作は、付加される5ビットの値が、ホストアドレスの上位14ビット目〜上位18ビット目からなる5ビット(B)である「10000B(16)」に一致するまで連続的に行われる。すなわち、付加される5ビットがインクリメントされた結果、これが「10000B(16)」となり、ホストアドレスの上位14ビット目〜上位18ビット目からなる5ビット(B)に一致すると、一旦、上述した転送動作が中断される。本例では、転送元の仮想ブロックの仮想ページ#0〜#63から転送先の仮想ブロックの仮想ページ#0〜#63へのデータの転送が完了した時点で、付加される5ビットの値が、ホストアドレスの上位14ビット目〜上位18ビット目からなる5ビット(B)に一致することになる。
【0284】
付加される5ビットがホストアドレスの上位14ビット目〜上位18ビット目からなる5ビット(B)に一致すると、フラッシュシーケンサブロック12は、かかる5ビット「10000B(16)」を用いたデータの読み出しを行わず、これを転送先ブロックアドレス#0〜#3にそれぞれ付加して、新たな転送先内部アドレスを生成する。例えば、転送先ブロックアドレス#0に「10000B(16)」が付加されて生成された転送先内部アドレスは、「00001000001000010000B」である。
【0285】
次に、フラッシュシーケンサブロック12は、生成された転送先内部アドレスの上位2ビットに基づいてチップ選択信号#0を活性化しつつ、転送先内部アドレスの下位18ビットを、データ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する(転送先指定)。
【0286】
次に、ホストアドレス#0に対応する書き込みデータ及び対応するエラーコレクションコード等の付加情報が、フラッシュシーケンサブロック12により、フラッシュメモリインターフェースブロック10を介して、バス15に供給される。このとき、チップ選択信号#0が活性状態となっているため、フラッシュメモリチップ2−0に転送されたデータ及びエラーコレクションコードは、フラッシュメモリチップ2−0内に備えられたレジスタ(図示せず)に一時的に格納される(データ転送)。
【0287】
次に、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部書き込みコマンドを、フラッシュメモリチップ2−0に対して発行する(書き込み命令)。
【0288】
このようにして、フラッシュメモリチップ2−0がホストアドレス#0に対応する書き込みデータ及び対応するエラーコレクションコード等の付加情報をフラッシュプログラミングを実行している間、フラッシュシーケンサブロック12は、ホストアドレス#1に対応する書き込みデータ及び対応するエラーコレクションコード等の付加情報を、フラッシュメモリチップ2−1に書き込むべく、転送先指定処理、データ転送処理等を実行する。このように、あるフラッシュメモリチップがフラッシュプログラミングを実行している途中で、これと異なるフラッシュメモリチップに対して転送先指定処理、データ転送処理等を実行する点はすでに説明したとおりであり、これによって、ホストアドレス#0に対応する書き込みデータは、フラッシュメモリチップ2−0内の物理ブロック#1040の物理ページ#16に書き込まれ、ホストアドレス#1に対応する書き込みデータは、フラッシュメモリチップ2−1内の物理ブロック#4128の物理ページ#16に書き込まれ、ホストアドレス#2に対応する書き込みデータは、フラッシュメモリチップ2−2内の物理ブロック#3904の物理ページ#16に書き込まれ、ホストアドレス#3に対応する書き込みデータは、フラッシュメモリチップ2−3内の物理ブロック#1408の物理ページ#16に書き込まれる。
【0289】
これにより、ホストアドレス#0〜#3に対応する書き込みデータが、転送先の仮想ブロックの仮想ページ#64〜#67にそれぞれ書き込まれたことになる。
【0290】
かかるデータの書き込みが完了すると、再び、転送元ブロックアドレス及び転送先ブロックアドレスに付加される5ビットがインクリメントされ、新しい転送元内部アドレス及び転送先内部アドレスを用いたデータの転送が再開される。かかる転送動作は、付加される5ビットが「11111(31)」である場合のデータ転送が完了するまで連続的に行われる。すなわち、転送元の仮想ブロックの仮想ページ#68〜#127から転送先の仮想ブロックの仮想ページ#68〜#127へのデータの転送が完了するまで行われ、これにより、フラッシュシーケンサブロック12による一連のデータ転送動作が完了する。
【0291】
また、マイクロプロセッサ6は、上述のデータ書き込みによって、消去済みブロックキュー32のキューセット#1に格納された物理ブロックアドレスが、消去済みブロックの物理ブロックアドレスではなくなったことに応答して、新たな消去済みブロックを冗長ブロックの中から選択し、選択された消去済みブロックの物理ブロックアドレスを新たにキュー#1−0〜#1−3に格納する。
【0292】
尚、転送元の各物理ブロックは、いずれもブロック消去され、これによって新たな消去済みブロックとなる。かかるブロック消去においても、転送元の各物理ブロックがそれぞれ異なるフラッシュメモリチップに属していることから、これらブロックに対するブロック消去動作を並列に実行することができる。
【0293】
以上により、一連のブロック間転送動作が完了する。
【0294】
図20は、上述したブロック間転送動作が完了した状態における仮想ブロック#682の内容を示す概略図である。
【0295】
図20に示されるように、ブロック間転送後における仮想ブロック#682においては、仮想ページ#64〜#71にのみユーザデータが格納されており、その他の仮想ページにはユーザデータが格納されていないので、当該仮想ブロックにおけるスタートページは「72」であり、かかる値が仮想ページ#0のスタートページデータ格納領域30に格納されていることが分かる。このため、コントローラ3は、スタートページ検索によって、この仮想ブロックの仮想ページ#72〜#127が空きページであることを知ることが可能となり、その後、ホストコンピュータ5より仮想ブロック#682の仮想ページ#72〜#127に対するデータの書き込みが要求された場合であっても、ブロック間転送を行うことなく、仮想ページ#72〜#127へ直接データを書き込むことが可能となる。
【0296】
尚、上記の例では、書き込み対象である仮想ページの最終ページ(仮想ページ#67)がスタートページ(仮想ページ#72)未満であるために、スタートページの更新が行われていないが、書き込み対象である仮想ページの最終ページがスタートページと同じか、またはこれを超えている場合には、書き込み対象である仮想ページの最終ページが新たなスタートページとなる。このように、書き込み対象である仮想ページの最終ページがスタートページと同じか、またはこれを超えているためにスタートページの更新が必要である場合には、かかる新たなスタートページが、対応するスタートページ格納領域に格納されるとともに、新たな仮想ブロックの先頭ページ(仮想ページ#0)のスタートページデータ格納領域30に格納される。
【0297】
次に、仮想ブロックを構成する一部の物理ブロックついてのみブロック間転送を行う場合の動作について説明する。上述のとおり、一部の物理ブロックついてのみブロック間転送を行う場合、データの追加的な書き込みを伴うケースと伴わないケースが存在するので、それぞれについて説明する。
【0298】
仮想ブロックを構成する一部の物理ブロックついてブロック間転送を行う場合(データの追加的な書き込みを伴わないケース)
上述のとおり、仮想ブロックを構成する一部の物理ブロックの追書込不能領域が書き込み対象となっており、残りのブロックの追書込可能領域が書き込み対象となっていない場合には、書き込み対象の仮想ブロックを構成する4つの物理ブロックのうち、上記一部の物理ブロックのみについてブロック間転送が実行される。
【0299】
例えば、上述した書き込み動作1が完了した直後の状態(図14参照)において、2つのホストアドレス「00010101010101000001B」(ホストアドレス#0)、「00010101010101000010B」(ホストアドレス#1)と、これらホストアドレスにそれぞれ書き込むべきデータとがフラッシュメモリシステム1に供給された場合、これらホストアドレスはそれぞれ仮想ブロック#682の仮想ページ#65、#66に対応することから、これらはそれぞれ、セル#682−1に対応する物理ブロック(フラッシュメモリチップ2−1の物理ブロック#7219)及びセル#682−2に対応する物理ブロック(フラッシュメモリチップ2−2の物理ブロック#3056)の追書込不能領域に属する。一方、セル#682−0に対応する物理ブロック(フラッシュメモリチップ2−0の物理ブロック#15)及びセル#682−3に対応する物理ブロック(フラッシュメモリチップ2−3の物理ブロック#4352)へのユーザデータの書き込みは指示されていないことから、セル#682−0及びセル#682−3に対応する物理ブロックの追書込可能領域は書き込み対象となっていない。
【0300】
このような場合には、セル#682−1及びセル#682−2に対応する物理ブロックについてのみ上述したブロック間転送が行われ、セル#682−0及びセル#682−3に対応する物理ブロックに対しては何らの処理も行われない。この場合、アドレス変換テーブル31についても、セル#682−1及びセル#682−2の内容のみが、消去済みブロックキュー32内の選択されたキューセット、例えばキューセット#1を構成するキュー#1−1〜#1−2に格納された内容に更新される。
【0301】
図21は、このような部分的なブロック間転送動作が完了した状態における仮想ブロック#682の内容を示す概略図である。
【0302】
図21に示されるように、ブロック間転送後における仮想ブロック#682は、セル#682−1に対応する物理ブロックが、フラッシュメモリチップ2−1の物理ブロック#7219からフラッシュメモリチップ2−1の物理ブロック#4128に置き換えられ、セル#682−1に対応する物理ブロックが、フラッシュメモリチップ2−2の物理ブロック#3056からフラッシュメモリチップ2−2の物理ブロック#3904に置き換えられている。一方、セル#682−0に対応する物理ブロック(フラッシュメモリチップ2−0の物理ブロック#15)や、セル#682−3に対応する物理ブロック(フラッシュメモリチップ2−3の物理ブロック#4352)に対しては何らの処理もされていない。
【0303】
このように、仮想ブロックを構成する一部の物理ブロックの追書込不能領域が書き込み対象となっており、残りのブロックの追書込可能領域が書き込み対象となっていない場合には、追書込不能領域が書き込み対象となっている物理ブロックのみに対してブロック間転送処理を行うことにより、一連の処理を高速に行うことができる。
【0304】
次に、仮想ブロックを構成する一部の物理ブロックついてブロック間転送を行う場合(データの追加的な書き込みを伴うケース)について説明する。
【0305】
仮想ブロックを構成する一部の物理ブロックついてブロック間転送を行う場合(データの追加的な書き込みを伴うケース)
上述のとおり、仮想ブロックを構成する一部の物理ブロックの追書込不能領域が書き込み対象となっており、残りのブロックの追書込可能領域が書き込み対象となっている場合には、追書込不能領域が書き込み対象となっている物理ブロックについてのブロック間転送と、追書込可能領域が書き込み対象となっている物理ブロックに対するデータの追加的な書き込み(書き込み動作2)の両方が実行される。
【0306】
例えば、上述した書き込み動作1が完了した直後の状態(図14参照)において、2つのホストアドレス「00010101010101000111B」(ホストアドレス#0)、「00010101010101001000B」(ホストアドレス#1)と、これらホストアドレスにそれぞれ書き込むべきデータとがフラッシュメモリシステム1に供給された場合、これらホストアドレスはそれぞれ仮想ブロック#682の仮想ページ#71、#72に対応する。この場合、仮想ブロック#682の仮想ページ#71は、セル#682−3に対応する物理ブロック(フラッシュメモリチップ2−3の物理ブロック#4352)の追書込不能領域に属し、仮想ブロック#682の仮想ページ#72は、セル#682−0に対応する物理ブロック(フラッシュメモリチップ2−0の物理ブロック#15)の追書込可能領域に属する。
【0307】
このような場合には、セル#682−3に対応する物理ブロックについては上述したブロック間転送が行われ、セル#682−0に対応する物理ブロックについては、書き込み動作2において説明したデータの追加的な書き込みが行われる。セル#682−1及びセル#682−2に対応する物理ブロックに対しては何らの処理も行われない。この場合、アドレス変換テーブル31についても、セル#682−3の内容が、消去済みブロックキュー32内の選択されたキューセット、例えばキューセット#1を構成するキュー#1−3に格納された内容に更新されるとともに、スタートページ格納領域#682に新たなスタートページが上書きされる。
【0308】
図22は、このような部分的なブロック間転送動作及びデータの追加的な書き込みが完了した状態における仮想ブロック#682の内容を示す概略図である。
【0309】
図22に示されるように、ブロック間転送及びデータの追加的な書き込みが完了した後における仮想ブロック#682は、セル#682−3に対応する物理ブロックが、フラッシュメモリチップ2−3の物理ブロック#4352からフラッシュメモリチップ2−3の物理ブロック#1408に置き換えられているとともに、セル#682−0に対応するフラッシュメモリチップ2−0の物理ブロック#15の物理ページ#18に対して、データの追加的な書き込みがされている。一方、セル#682−1に対応する物理ブロック(フラッシュメモリチップ2−1の物理ブロック#7219)や、セル#682−2に対応する物理ブロック(フラッシュメモリチップ2−2の物理ブロック#3056)に対しては何らの処理もされていない。
【0310】
このように、仮想ブロックを構成する一部の物理ブロックの追書込不能領域が書き込み対象となっており、残りのブロックの追書込可能領域が書き込み対象となっている場合には、追書込不能領域が書き込み対象となっている物理ブロックについてのブロック間転送と、追書込可能領域が書き込み対象となっている物理ブロックに対するデータの追加的な書き込み(書き込み動作2)の両方を実行することにより、一連の処理を高速に行うことができる。
【0311】
書き込み動作4(仮想ブロックの最終ページ(仮想ページ#127)にデータを書き込む場合)
仮想ブロックの最終ページ(仮想ページ#127)にデータを書き込む場合は、かかる書き込み動作が新規ブロックに対する書き込み動作(書き込み動作1)であるか、すでにデータの格納されているブロック(使用済みブロック)に対する書き込み動作(書き込み動作2、書き込み動作3)であるかに関わらず、当該仮想ブロックの先頭ページ(仮想ページ#0)のスタートページフラグ29に「0x」が格納され、さらに、アドレス変換テーブル31の対応するスタートページ格納領域に「0000000B」が格納される。これにより、当該ブロックに対するデータの追加的な書き込みができないことが示される。
【0312】
以上説明した、仮想ブロックの最終ページ(仮想ページ#127)に対するデータの書き込み処理について、具体的な例を挙げてより詳細に説明する。
【0313】
ここでは、上述した書き込み動作1が完了した直後の状態(図14参照)において、ホストコンピュータ5より、バス14、コネクタ4及びバス13を介して、外部コマンドの一種である外部書き込みコマンドと、ホストアドレス「00010101010101111111B」(ホストアドレス#0)と、かかるホストアドレスに書き込むべきデータとがフラッシュメモリシステム1に供給された場合を例に説明する。尚、かかるホストアドレス#0は、仮想ブロック#682の仮想ページ#127に対応する。
【0314】
まず、ホストアドレス#0及び外部書き込みコマンドがコントローラ3に供給された場合の、コントローラ3の基本的な動作は上述したとおりであり、重複する部分の説明は省略する。
【0315】
本例においては、スタートページ格納領域#682に格納されたスタートページの値「1001000B(72)」と、ユーザデータを書き込むべき仮想ページの先頭ページとの比較が行われる。この場合、ユーザデータを書き込むべき仮想ページの先頭ページは、ホストアドレス#0によって示されているので、スタートページの値「1001000B(72)」と、ホストアドレス#0の下位7ビットの値「1111111B(127)」とが比較されることとなる。このように、本例では、ホストアドレス#0の下位7ビットの値「1111111B(127)」がスタートページの値「1001000B(72)」を超えているので、データの追加的な書き込みが可能であると判断される。
【0316】
ホストアドレスから内部アドレスへの変換の手順については、すでに説明したとおりであり、得られる内部アドレス#0は、「11100010000000011111B」となる。
【0317】
さらに、ホストアドレス#0の下位7ビットの値が「1111111B(127)」であることに応答して、アドレス変換テーブル31内のスタートページ格納領域#682に、値「0000000(0)」が上書きされる。
【0318】
以上より、ホストアドレス#0から内部アドレス#0への変換が完了する。これにより、内部アドレス#0によってアクセスされるのはフラッシュメモリチップ2−3内の物理ブロック#4352の物理ページ#31となる。尚、フラッシュメモリチップ2−3内の物理ブロック#4352の物理ページ#31は、仮想ブロック#682の仮想ページ#127に対応する。
【0319】
その後、フラッシュシーケンサブロック12が有するレジスタ(図示せず)への設定が完了すると、フラッシュシーケンサブロック12による一連の書き込み動作が実行される。本例においては、フラッシュシーケンサブロック12による一連の書き込み動作は、仮想ブロック#682の先頭ページであるフラッシュメモリチップ2−0内の物理ブロック#15の物理ページ#0に対するスタートページフラグ29の書き込み、フラッシュメモリチップ2−3内の物理ブロック#4352の物理ページ#031に対するユーザデータ及び各種冗長データの書き込みの順に実行される。
【0320】
まず、フラッシュメモリチップ2−0内の物理ブロック#15の物理ページ#0に対する書き込み処理について説明する。
【0321】
フラッシュメモリチップ2−0内の物理ブロック#15の物理ページ#0に対する書き込みにおいては、当該ページのスタートページフラグ29に、値「00」が格納される。一連の書き込み処理の詳細については、既に説明したとおりである。尚、フラッシュメモリチップ2−0内の物理ブロック#15の物理ページ#0には、上記書き込み動作1において、すでに仮想ブロックアドレスやスタートページフラグ等の書き込みが実行されているが、スタートページフラグ29の上位ビットを構成するフラッシュメモリセル16は消去状態(論理値=1)に保たれているので、スタートページフラグの上位ビットの書き換えは可能である。
【0322】
このようにして、フラッシュメモリチップ2−0内の物理ブロック#15の物理ページ#0に対するフラッシュプログラミングが実行されている間に、フラッシュメモリチップ2−3内の物理ブロック#4352の物理ページ#31に対する書き込み処理が実行される。
【0323】
フラッシュメモリチップ2−3内の物理ブロック#4352の物理ページ#31に対する書き込み処理は内部アドレス#0を用いて行われ、その手順は、すでに繰り返し説明したとおりである。これによって、フラッシュメモリチップ2−3内の物理ブロック#4352の物理ページ#31のユーザ領域25には、ホストアドレス#0に対応するユーザデータが格納され、冗長領域26には、エラーコレクションコード及びその他の付加情報が格納される。
【0324】
これにより、一連の書き込み処理が完了する。
【0325】
図23は、上記一連の書き込み処理が完了した状態における仮想ブロック#682の内容を示す概略図である。
【0326】
図23に示されるように、仮想ブロック#682の最終ページ#127にユーザデータが格納されているため、当該仮想ブロックにはスタートページは存在しない。これを示すため、先頭の仮想ページ#0のスタートページフラグ29の値が「00」とされており、さらに、当該ブロックに対応するスタートページ格納領域#682の内容が「0000000B」とされている。このため、コントローラ3は、この仮想ブロックにはスタートページが存在しないことを知ることが可能となり、その後、ホストコンピュータ5より仮想ブロック#682のいずれかの仮想ページに対するデータの書き込みが要求された場合、仮想ブロック#682を構成する物理ブロックの少なくとも一つについて、ブロック間転送が行われる(書き込み動作3)。
【0327】
このように、本実施態様によるフラッシュメモリシステム1では、「仮想ブロック」という概念を用い、互いに異なるフラッシュメモリチップに属する複数の物理ブロックを仮想的に一つのブロックとして取り扱っているので、ホストコンピュータ5から、連続する複数アドレスに対してデータ書き込み要求がなされた場合に、ある書き込みデータについてフラッシュプログラミングが実行されている途中で、次の書き込みデータに対し、転送先指定やデータ転送等の処理を並行して実行することができ、これにより一連のデータ書き込みに要する時間を大幅に短縮させることが可能となる。すなわち、一連のデータ書き込み動作のうち、フラッシュプログラミングには比較的長い時間、典型的には約200μsec程度が必要とされるところ、本実施態様によるフラッシュメモリシステム1によれば、かかるフラッシュプログラミングと並行して他の処理を実行可能であることから、一連のデータ書き込みに要する時間は大幅に短縮される。
【0328】
さらに、本実施態様にかかるフラッシュメモリシステム1おいては、「スタートページ」という概念を用い、各仮想ブロックを構成する複数の仮想ページのうち、スタートページ以降の仮想ページが必ず空きページであることを保証しているので、すでにデータの書き込まれている仮想ブロックに対するデータの書き込みが要求された場合であっても、これがスタートページ以降の仮想ページに対するデータの書き込み要求である場合には、ブロック間転送を行うことなく、当該物理ブロックに対して直接データを書き込むことが可能となる。このため、データの書き込みに必要な一連の処理をより高速に行うことができる。
【0329】
しかも、本実施態様にかかるフラッシュメモリシステム1おいては、各ページの冗長領域26のスタートページデータ格納領域30にスタートページデータを格納し、かかるスタートページデータを用いたリンクによってスタートページを表現しているので、アドレス変換テーブル31を作成する際には、各仮想ブロックの先頭ページ(仮想ページ#0)に対して読み出しを実行するだけでよい。このような読み出し処理は、コントローラ3の初期設定時(リセット時)において通常行われる処理であるため、本発明の適用によって初期設定動作に要する時間が増大することはない。
【0330】
また、本実施態様にかかるフラッシュメモリシステム1おいては、一旦データの書き込みが実行された仮想ブロックのスタートページを、対応するスタートページ格納領域に格納しているので、次に同じ仮想ブロックに対して書き込みが行われる場合、極めて速やかにスタートページを得ることができる。
【0331】
さらに、本実施態様にかかるフラッシュメモリシステム1おいては、すでにデータの書き込まれている仮想ブロックに対するデータの書き込みが要求された場合、これがスタートページ以前の仮想ページに対するデータの書き込み要求であっても、仮想ブロックを構成する一部の物理ブロックの追書込不能領域が書き込み対象となっており、残りのブロックの追書込可能領域が書き込み対象となっていない場合には、書き込み対象の仮想ブロックを構成する4つの物理ブロックのうち、上記一部の物理ブロックについてのブロック間転送のみが実行される。したがって、この場合には、上記残りの物理ブロックに対してはブロック間転送が行われないので、データの書き込みに必要な一連の処理を高速に行うことができる。
【0332】
さらに、本実施態様にかかるフラッシュメモリシステム1おいては、すでにデータの書き込まれている仮想ブロックに対するデータの書き込みが要求された場合、これがスタートページ以前の仮想ページに対するデータの書き込み要求であっても、仮想ブロックを構成する一部の物理ブロックの追書込不能領域が書き込み対象となっており、残りのブロックの追書込可能領域が書き込み対象となっている場合には、書き込み対象の仮想ブロックを構成する4つの物理ブロックのうち、上記一部の物理ブロックについてのブロック間転送と、上記残りの物理ブロックに対するデータの追加的な書き込みの両方が行われる。したがって、この場合には、上記残りの物理ブロックに対してはブロック間転送が行われないので、データの書き込みに必要な一連の処理を高速に行うことができる。
【0333】
本発明は、以上の実施態様に限定されることなく、特許請求の範囲に記載された発明の範囲内で種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることはいうまでもない。
【0334】
例えば、上記実施態様にかかるフラッシュメモリシステム1においては、それぞれ異なるフラッシュメモリチップに属する4個のブロックを仮想的に結合させることによって、4個のセルからなる仮想ブロックを構成しているが、仮想ブロックを構成するセルの数は4個に限定されず、他の数、例えば2個や8個であってもよい。この場合、仮想ブロックを構成するセルの数を搭載されたフラッシュメモリチップの数と一致させることは必須ではなく、仮想ブロックを構成するセルの数を搭載されるフラッシュメモリチップの数よりも少なく設定しても構わない。例えば、フラッシュメモリチップの数が8個である場合に、仮想ブロックを構成するセルの数を4個としてもよい。
【0335】
また、上記実施態様にかかるフラッシュメモリシステム1においては、それぞれ異なるフラッシュメモリチップに属する4個のブロックを仮想的に結合させることによって、4個のセルからなる仮想ブロックを構成しているが、フラッシュメモリチップが「バンクタイプ」と呼ばれるチップ、すなわち、物理ブロックがそれぞれ独立したレジスタを有する複数のバンクに分類され、それぞれ異なるバンクに属する複数のブロックに対して同時に書き込み処理を行うことができるフラッシュメモリチップを用いれば、互いに同じフラッシュメモリチップに属する複数のブロックを仮想的に結合させることによって、仮想ブロックを構成することができる。但し、この場合、仮想ブロックを構成する複数の物理ブロックは、それぞれ異なるバンクに属している必要がある。
【0336】
また、バンクタイプのチップを複数個用いた場合、あるフラッシュメモリチップより選ばれた複数の物理ブロックと、異なるフラッシュメモリチップより選ばれた複数の物理ブロックとを仮想的に結合させることによって仮想ブロックを構成しても構わない。この場合、搭載されるフラッシュメモリチップの個数や各フラッシュメモリチップが備えるバンク数を超える数のブロックからなる仮想ブロックを構成することが可能となる。このことは、データ書き込み時において並列処理が可能なページ数が多くなるとともに、データの追加的な書き込みの可能性が高まることを意味するので、データ書き込み処理をより高速に行うことが可能となる。
【0337】
さらに、上記実施態様にかかるフラッシュメモリシステム1においては、各ページの冗長領域26のスタートページデータ格納領域30にスタートページデータを格納し、かかるスタートページデータを用いたリンクによってスタートページを表現しているが、本発明におけるスタートページの表現方法がこれに限定されるものではなく、他の方法によってスタートページを表現しても構わない。例えば、各仮想ブロックについて、全ての空きページに関する情報をアドレス変換テーブル31内に展開し、これに基づいて、データの追加的な書き込みを行っても構わない。この場合、上記実施態様にかかるフラッシュメモリシステム1とは異なり、全ての空きページに関する情報を用いていることから、より効果的にデータの追加的な書き込みが行われ、ブロック間転送の頻度を一層低下させることができる。但し、この場合、全ての空きページに関する情報をアドレス変換テーブル31内に展開するのに多くの時間を要することから、コントローラ3の初期設定動作が遅くなる。
【0338】
また、上記実施態様にかかるフラッシュメモリシステム1においては、2ビットのスタートページフラグ29を用いているが、スタートページフラグ29を1ビットとし、仮想ページ#0においては当該仮想ブロックにスタートページが存在するか否かを表示するために用い、仮想ページ#1〜#126においては対応するスタートページが有効であるか否かを表示するために用いてもよい。
【0339】
さらに、上記実施態様にかかるフラッシュメモリシステム1においては、スタートページ検索において、参照されたスタートページフラグ29が「x0」であれば検索を終了し、当該ページをスタートページとしているが、スタートページ検索においてスタートページデータ30を参照し、参照されたスタートページデータ30が「1111111B(127)」であれば検索を終了し、当該仮想ページをスタートページとしてもよい。この場合、少なくとも、スタートページデータ30が「1111111B(127)」であるページについては、かかるスタートページデータ「1111111B(127)」がスタートページ検索の終了を示しているのか、或いは、スタートページが仮想ページ#127であることを示しているのかを、スタートページフラグ29等を利用して区別する必要がある。
【0340】
また、上記実施態様にかかるフラッシュメモリシステム1においては、スタートページ検索において、参照先のスタートページフラグ29が属するページに制限を設けていないが、参照先のスタートページフラグ29が属するページのページ番号が参照元のスタートページフラグ29が属するページのページ番号よりも小さい場合には、対応するスタートページデータに誤りがあるものと判断して、エラー処理を行ってもよい。
【0341】
さらに、上記実施態様にかかるフラッシュメモリシステム1においては、スタートページ検索において、参照回数に制限を設けていないが、これを所定の回数(例えば30回)に制限し、これを越えた場合には、少なくとも一のスタートページデータに誤りがあるものと判断して、エラー処理を行ってもよい。
【0342】
また、上記実施態様にかかるフラッシュメモリシステム1においては、各物理ブロックが32個の物理ページによって構成されているが、各物理ブロックを構成する物理ページ数が32個に限定されるものではなく、他の数、例えば、16個や64個であってもよい。本発明は、各ブロックを構成するページ数が多いほど、より顕著な効果を得ることができる。
【0343】
さらに、上記実施態様にかかるフラッシュメモリシステム1においては、データの格納された全ての物理ブロックに関わるアドレス変換テーブル31をSRAMワークエリア8上に展開しているが、本発明において、これら全ての物理ブロックに関わるアドレス変換テーブルを展開することは必須ではなく、これらの一部のみを展開してもよい。この場合、SRAMワークエリア8に必要とされる記憶容量を削減することができる。但し、このように一部の物理ブロックに関わるアドレス変換テーブルのみを展開する場合、アドレス変換テーブルに含まれていない物理ブロックへのアクセスが要求される度に、アドレス変換テーブルを更新する必要がある。
【0344】
また、上記実施態様においては、フラッシュメモリシステム1はカード形状であり、4個のフラッシュメモリチップ2−0〜2−3とコントローラ3が、一つのカード内に集積されて構成されているが、本発明にかかるフラッシュメモリシステムがカード形状に限定されることはなく、他の形状、例えばスティック状であってもよい。
【0345】
さらに、上記実施態様においては、フラッシュメモリシステム1は、4個のフラッシュメモリチップ2−0〜2−3とコントローラ3とが、一つのカード内に集積されて構成されているが、フラッシュメモリチップ2−0〜2−3とコントローラ3とが、同一筐体に集積されている必要はなく、それぞれ別個の筐体にパッケージングされてもよい。この場合、フラッシュメモリチップ2−0〜2−3がパッケージングされた筐体及びコントローラ3がパッケージングされた筐体には、それぞれ他方との電気的及び機械的接続を実現するためのコネクタが必要とされ、かかるコネクタによって、フラッシュメモリチップ2−0〜2−3がパッケージングされた筐体が、コントローラ3がパッケージングされた筐体に着脱可能に装着される。さらに、フラッシュメモリチップ2−0〜2−3についても、これらが同一筐体に集積されている必要はなく、それぞれ別個の筐体にパッケージングされてもよい。
【0346】
また、上記実施態様にかかるフラッシュメモリシステム1においては、各フラッシュメモリチップ2−0〜2−3は、それぞれ128Mバイト(1Gビット)の記憶容量を有する半導体チップであるが、各フラッシュメモリチップ2−0〜2−3の記憶容量は128Mバイト(1Gビット)に限定されず、これとは異なる容量、例えば32Mバイト(256Mビット)であってもよい。
【0347】
さらに、上記実施態様にかかるフラッシュメモリシステム1においては、512バイトを1ページとし、これを最小アクセス単位としているが、最小アクセス単位としては512バイトに限定されず、これとは異なる容量であってもよい。
【0348】
また、上記実施態様にかかるフラッシュメモリシステム1においては、フラッシュメモリチップ2−0〜2−3を構成する各フラッシュメモリセル16が、1ビットのデータを保持しているが、フローティングゲート電極21に注入すべき電子の量を複数段階に制御することによって、2ビット以上のデータを保持可能に構成してもよい。
【0349】
また、上記実施態様にかかるフラッシュメモリシステム1においては、消去済みブロックキュー32が6つのキューセット#0〜#5によって構成されているが、消去済みブロックキュー32を構成する6つのキューセットの数としては6組に限定されず、他の数、例えば、1組や8組であってもよい。
【0350】
さらに、上記実施態様にかかるフラッシュメモリシステム1においては、フラッシュメモリチップ2としてNAND型のフラッシュメモリチップを用いているが、本発明により制御可能なフラッシュメモリがNAND型に限定されるものではなく、他の種類、例えば、AND型のフラッシュメモリを制御することも可能である。
【0351】
さらに、本発明において、手段とは、必ずしも物理的手段を意味するものではなく、各手段の機能がソフトウエアによって実現される場合も包含する。さらに、一つの手段の機能が二以上の物理的手段により実現されても、二以上の手段の機能が一つの物理的手段により実現されてもよい。
【0352】
尚、本発明は、PCMCIA(Personal Computer Memory Card International Association)が発表した統一規格に基づくPCカードとして実現することが可能である。さらに、近年、半導体素子の高集積化技術の発展に伴い、より小型化された小型メモリカード、例えば、CFA(CompactFlash Association)が提唱する「CompactFlash」や、MultiMediaCardAssociationの提唱する「MMC(MultiMediaCard)」、ソニー株式会社が提唱する「メモリースティック」、松下電器産業株式会社等が提唱する「SDメモリーカード」などに本発明を適用することが可能である。
【0353】
【発明の効果】
以上説明したように、本発明によれば、フラッシュメモリに対する一連のデータ書き込み処理をより高速に行うことができるメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法を提供することができる。
【図面の簡単な説明】
【図1】本発明の好ましい実施態様にかかるフラッシュメモリシステム1を概略的に示すブロック図である。
【図2】フラッシュメモリチップ2−0〜2−3を構成する各フラッシュメモリセル16の構造を概略的に示す断面図である。
【図3】書込状態であるフラッシュメモリセル16を概略的に示す断面図である。
【図4】フラッシュメモリチップ2−0のアドレス空間の構造を概略的に示す図である。
【図5】冗長領域26のデータ構造を概略的に示す図である。
【図6】仮想ブロックのマッピングの一例を示す図である。
【図7】図6に示された仮想ブロックの仮想ページ構造を示す図である。
【図8】アドレス変換テーブル31のデータ構造を示す概略図である。
【図9】消去済みブロックキュー32のデータ構造を示す概略図である。
【図10】データ読み出し動作時における、アドレス変換テーブル31を用いた内部アドレスへの変換方法を説明するための図である。
【図11】データ書き込み動作時における、アドレス変換テーブル31を用いた内部アドレスへの変換方法を説明するための図である。
【図12】フラッシュシーケンサブロック12による一連の書き込み動作タイミング概略的に示すタイミング図である。
【図13】仮想ブロック#682の仮想ページ#0〜#3に対する一連の書き込み処理が完了した状態における仮想ブロック#682の内容を示す概略図である。
【図14】仮想ブロック#682の仮想ページ#68〜#71に対する一連の書き込み処理が完了した状態における仮想ブロック#682の内容を示す概略図である。
【図15】ホストアドレス#0、#1を内部アドレス#0、#1に変換する方法を説明するための図である。
【図16】仮想ブロック#682の仮想ページ#72、#73に対する一連の書き込み処理が完了した状態における仮想ブロック#682の内容を示す概略図である。
【図17】ホストアドレス#0、#1を内部アドレス#0、#1に変換する方法を説明するための図である。
【図18】仮想ブロック#682の仮想ページ#74、#75に対する一連の書き込み処理が完了した状態における仮想ブロック#682の内容を示す概略図である。
【図19】転送元ブロックアドレス及び転送先ブロックアドレスの生成方法を説明するための図である。
【図20】全ての物理ブロックについてのブロック間転送動作が完了した状態における仮想ブロック#682の内容を示す概略図である。
【図21】一部の物理ブロックについてのブロック間転送動作が完了した状態における仮想ブロック#682の内容を示す概略図である。
【図22】一部の物理ブロックについてのブロック間転送動作及びデータの追加的な書き込み動作が完了した状態における仮想ブロック#682の内容を示す概略図である。
【図23】仮想ブロック#682の仮想ページ#127に対する一連の書き込み処理が完了した状態における仮想ブロック#682の内容を示す概略図である。
【符号の説明】
1 フラッシュメモリシステム
2−0〜2−3 フラッシュメモリチップ
3 コントローラ
4 コネクタ
5 ホストコンピュータ
6 マイクロプロセッサ
7 ホストインターフェースブロック
8 SRAMワークエリア
9 バッファ
10 フラッシュメモリインターフェースブロック
11 ECCブロック
12 フラッシュシーケンサブロック
13〜15 バス
16 フラッシュメモリセル
17 P型半導体基板
18 ソース拡散領域
19 ドレイン拡散領域
20 トンネル酸化膜
21 フローティングゲート電極
22 絶縁膜
23 コントロールゲート電極
24 チャネル
25 ユーザ領域
26 冗長領域
27 エラーコレクションコード格納領域
28 仮想ブロックアドレス格納領域
29 スタートページフラグ
30 スタートページデータ格納領域
31 アドレス変換テーブル
32 消去済みブロックキュー
Claims (6)
- ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数のページを含む物理ブロック単位で消去が行われる複数個のフラッシュメモリにアクセスするメモリコントローラであって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当てる仮想ブロックアドレス割当て手段と、
それぞれの前記フラッシュメモリから、物理ブロックアドレスの同異に依存せずに、1個ずつ選択した複数個の物理ブロックを仮想ブロックとして管理するとともに、前記仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理する仮想ブロック管理手段と、
同一の前記仮想ブロックに含まれる複数の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てるとともに、各ページに割り当てられる前記ホストアドレスの順番で、各ページに前記仮想ブロック内での連番を割り当て、割り当てた連番を仮想ページ番号として管理するページ管理手段と、
ホストコンピュータより供給される前記ホストアドレスに基づいてアクセス対象の領域を特定する手段であって、ホストコンピュータより供給される前記ホストアドレスが属する前記仮想ブロックアドレスと対応関係にある前記仮想ブロックを特定するとともに、特定した前記仮想ブロック内のアクセス対象の領域における前記仮想ページ番号が先頭のページを特定する領域特定手段と、
前記仮想ブロックに属するデータが格納されていないページであって、前記仮想ページ番号の順番が後のページにデータが格納されているページが存在しないページのうちで前記仮想ページ番号が先頭のページを特定し、特定したページを前記仮想ブロックに属するスタートページとして管理するスタートページ特定手段と、
前記領域特定手段により特定された前記仮想ブロックに属する前記スタートページに対応する前記仮想ページ番号と、前記領域特定手段により特定されたページの前記仮想ページ番号とを比較することにより、前記領域特定手段により特定された前記仮想ブロック内のアクセス対象の領域にホストコンピュータより供給されるデータを書き込むことが可能か否かを判断する判断手段と、
前記判断手段によりデータを書き込むことが可能であると判断された場合に、前記領域特定手段により特定された前記仮想ブロック内のアクセス対象の領域にホストコンピュータより供給されるデータを書き込む書込み手段とを備え、
前記判断手段が、前記領域特定手段により特定されたページの前記仮想ページ番号が、前記スタートページに対応する前記仮想ページ番号と一致している場合または前記スタートページに対応する前記仮想ページ番号よりも大きい場合にデータを書き込むことが可能であると判断するように構成されたことを特徴とするメモリコントローラ。 - ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数のページを含む物理ブロック単位で消去が行われるバンク構造のフラッシュメモリにアクセスするメモリコントローラであって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当てる仮想ブロックアドレス割当て手段と、
それぞれのバンクから、当該バンク内での順番の同異に依存せずに、1個ずつ選択した複数個の物理ブロックを仮想ブロックとして管理するとともに、前記仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理する仮想ブロック管理手段と、
同一の前記仮想ブロックに含まれる複数の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てるとともに、各ページに割り当てられる前記ホストアドレスの順番で各ページに前記仮想ブロック内での連番を割り当て、割り当てた連番を仮想ページ番号として管理するページ管理手段と、
ホストコンピュータより供給される前記ホストアドレスに基づいてアクセス対象の領域を特定する手段であって、ホストコンピュータより供給される前記ホストアドレスが属する前記仮想ブロックアドレスと対応関係にある前記仮想ブロックを特定するとともに、特定した前記仮想ブロック内のアクセス対象の領域における前記仮想ページ番号が先頭のページを特定する領域特定手段と、
前記仮想ブロックに属するデータが格納されていないページであって、前記仮想ページ番号の順番が後のページにデータが格納されているページが存在しないページのうちで前記仮想ページ番号が先頭のページを特定し、特定したページを前記仮想ブロックに属するスタートページとして管理するスタートページ特定手段と、
前記領域特定手段により特定された前記仮想ブロックに属する前記スタートページに対応する前記仮想ページ番号と、前記領域特定手段により特定されたページの前記仮想ページ番号とを比較することにより、前記領域特定手段により特定された前記仮想ブロック内のアクセス対象の領域にホストコンピュータより供給されるデータを書き込むことが可能か否かを判断する判断手段と、
前記判断手段によりデータを書き込むことが可能であると判断された場合に、前記領域特定手段により特定された前記仮想ブロック内のアクセス対象の領域にホストコンピュータより供給されるデータを書き込む書込み手段とを備え、
前記判断手段が、前記領域特定手段により特定されたページの前記仮想ページ番号が、前記スタートページに対応する前記仮想ページ番号と一致している場合または前記スタートページに対応する前記仮想ページ番号よりも大きい場合にデータを書き込むことが可能であると判断するように構成されたことを特徴とするメモリコントローラ。 - 請求項1に記載のメモリコントローラと複数個のフラッシュメモリを備えたフラッシュメモリシステム。
- 請求項2に記載のメモリコントローラとバンク構造のフラッシュメモリを備えたフラッシュメモリシステム。
- ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数のページを含む物理ブロック単位で消去が行われる複数個のフラッシュメモリにアクセスするフラッシュメモリの制御方法であって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当てる仮想ブロックアドレス割当てステップと、
それぞれの前記フラッシュメモリから、物理ブロックアドレスの同異に依存せずに、1個ずつ選択した複数個の物理ブロックを仮想ブロックとして管理するとともに、前記仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理する仮想ブロック管理ステップと、
同一の前記仮想ブロックに含まれる複数の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てるとともに、各ページに割り当てられる前記ホストアドレスの順番で各ページに前記仮想ブロック内での連番を割り当て、割り当てた連番を仮想ページ番号として管理するページ管理ステップと、
ホストコンピュータより供給される前記ホストアドレスに基づいてアクセス対象の領域を特定するステップであって、ホストコンピュータより供給される前記ホストアドレスが属する前記仮想ブロックアドレスと対応関係にある前記仮想ブロックを特定するとともに、特定した前記仮想ブロック内のアクセス対象の領域における前記仮想ページ番号が先頭のページを特定する領域特定ステップと、
前記仮想ブロックに属するデータが格納されていないページであって、前記仮想ページ番号の順番が後のページにデータが格納されているページが存在しないページのうちで前記仮想ページ番号が先頭のページを特定し、特定したページを前記仮想ブロックに属するスタートページとして管理するスタートページ特定ステップと、
前記領域特定ステップにより特定された前記仮想ブロックに属する前記スタートページに対応する前記仮想ページ番号と、前記領域特定ステップにより特定されたページの前記仮想ページ番号とを比較することにより、前記領域特定ステップにより特定された前記仮想ブロック内のアクセス対象の領域にホストコンピュータより供給されるデータを書き込むことが可能か否かを判断する判断ステップと、
前記判断ステップによりデータを書き込むことが可能であると判断された場合に、前記領域特定ステップにより特定された前記仮想ブロック内のアクセス対象の領域にホストコンピュータより供給されるデータを書き込む書込みステップとを備え、
前記判断ステップにおいて、前記領域特定ステップにより特定されたページの前記仮想ページ番号が、前記スタートページに対応する前記仮想ページ番号と一致している場合または前記スタートページに対応する前記仮想ページ番号よりも大きい場合にデータを書き込むことが可能であると判断することを特徴とするフラッシュメモリの制御方法。 - ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数のページを含む物理ブロック単位で消去が行われるバンク構造のフラッシュメモリにアクセスするフラッシュメモリの制御方法であって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当てる仮想ブロックアドレス割当てステップと、
それぞれのバンクから、当該バンク内での順番の同異に依存せずに、1個ずつ選択した複数個の物理ブロックを仮想ブロックとして管理するとともに、前記仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理する仮想ブロック管理ステップと、
同一の前記仮想ブロックに含まれる複数の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てるとともに、各ページに割り当てられる前記ホストアドレスの順番で各ページに前記仮想ブロック内での連番を割り当て、割り当てた連番を仮想ページ番号として管理するページ管理ステップと、
ホストコンピュータより供給される前記ホストアドレスに基づいてアクセス対象の領域を特定するステップであって、ホストコンピュータより供給される前記ホストアドレスが属する前記仮想ブロックアドレスと対応関係にある前記仮想ブロックを特定するとともに、特定した前記仮想ブロック内のアクセス対象の領域における前記仮想ページ番号が先頭のページを特定する領域特定ステップと、
前記仮想ブロックに属するデータが格納されていないページであって、前記仮想ページ番号の順番が後のページにデータが格納されているページが存在しないページのうちで前記仮想ページ番号が先頭のページを特定し、特定したページを前記仮想ブロックに属するスタートページとして管理するスタートページ特定ステップと、
前記領域特定ステップにより特定された前記仮想ブロックに属する前記スタートページに対応する前記仮想ページ番号と、前記領域特定ステップにより特定されたページの前記仮想ページ番号とを比較することにより、前記領域特定ステップにより特定された前記仮想ブロック内のアクセス対象の領域にホストコンピュータより供給されるデータを書き込むことが可能か否かを判断する判断ステップと、
前記判断ステップによりデータを書き込むことが可能であると判断された場合に、前記領域特定ステップにより特定された前記仮想ブロック内のアクセス対象の領域にホストコンピュータより供給されるデータを書き込む書込みステップとを備え、
前記判断ステップにおいて、前記領域特定ステップにより特定されたページの前記仮想ページ番号が、前記スタートページに対応する前記仮想ページ番号と一致している場合または前記スタートページに対応する前記仮想ページ番号よりも大きい場合にデータを書き込むことが可能であると判断することを特徴とするフラッシュメモリの制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001164546A JP4316824B2 (ja) | 2001-05-31 | 2001-05-31 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001164546A JP4316824B2 (ja) | 2001-05-31 | 2001-05-31 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002358233A JP2002358233A (ja) | 2002-12-13 |
JP4316824B2 true JP4316824B2 (ja) | 2009-08-19 |
Family
ID=19007356
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001164546A Expired - Lifetime JP4316824B2 (ja) | 2001-05-31 | 2001-05-31 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4316824B2 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4666081B2 (ja) * | 2009-02-09 | 2011-04-06 | Tdk株式会社 | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
JP4666080B2 (ja) * | 2009-02-09 | 2011-04-06 | Tdk株式会社 | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
JP4952741B2 (ja) * | 2009-04-15 | 2012-06-13 | Tdk株式会社 | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
JP4952742B2 (ja) * | 2009-04-15 | 2012-06-13 | Tdk株式会社 | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
JP5093294B2 (ja) * | 2010-05-14 | 2012-12-12 | Tdk株式会社 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
KR101257691B1 (ko) | 2011-08-12 | 2013-04-24 | 아주대학교산학협력단 | 메모리 컨트롤러 및 이의 데이터 관리방법 |
-
2001
- 2001-05-31 JP JP2001164546A patent/JP4316824B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2002358233A (ja) | 2002-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4256600B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP3905037B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP3921174B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4165990B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリへのデータの書き込み方法 | |
US5953737A (en) | Method and apparatus for performing erase operations transparent to a solid state storage system | |
US6172906B1 (en) | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices | |
US7424593B2 (en) | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices | |
JP2000067574A (ja) | 半導体記憶装置 | |
JP2001243110A (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリへのアクセス方法 | |
JP3621051B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4316824B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4233213B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4248772B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4220690B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP3999959B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP2003122630A (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4042898B2 (ja) | メモリコントローラ及びこれを備えるメモリシステム並びにフラッシュメモリの制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060313 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080919 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081028 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081225 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090203 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090209 |
|
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: 20090428 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090521 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4316824 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120529 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130529 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140529 Year of fee payment: 5 |
|
EXPY | Cancellation because of completion of term |