JP3999959B2 - MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD - Google Patents

MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD Download PDF

Info

Publication number
JP3999959B2
JP3999959B2 JP2001330379A JP2001330379A JP3999959B2 JP 3999959 B2 JP3999959 B2 JP 3999959B2 JP 2001330379 A JP2001330379 A JP 2001330379A JP 2001330379 A JP2001330379 A JP 2001330379A JP 3999959 B2 JP3999959 B2 JP 3999959B2
Authority
JP
Japan
Prior art keywords
block
flash memory
physical
address
virtual
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
Application number
JP2001330379A
Other languages
Japanese (ja)
Other versions
JP2003131941A (en
Inventor
健三 木田
直樹 向田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TDK Corp
Original Assignee
TDK Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by TDK Corp filed Critical TDK Corp
Priority to JP2001330379A priority Critical patent/JP3999959B2/en
Publication of JP2003131941A publication Critical patent/JP2003131941A/en
Application granted granted Critical
Publication of JP3999959B2 publication Critical patent/JP3999959B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Description

【0001】
【発明の属する利用分野】
本発明は、メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法に関し、特に、フラッシュメモリに対する一連のデータ書き込み処理をより高速に行うことができるメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法に関する。
【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個ずつ任意で選択した複数個の物理ブロックを仮想ブロックとして管理し、該仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理する仮想ブロック管理手段と、
同一の前記仮想ブロックに含まれる複数個の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てるページ管理手段と、
を備えることを特徴とする。
【0014】
本発明の第2の観点に係るメモリコントローラは、
ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数個のページを含む物理ブロック単位で消去が行われる複数個のフラッシュメモリにアクセスするメモリコントローラであって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当てる仮想ブロックアドレス割当て手段と、
前記各フラッシュメモリ内に複数個の物理ブロックで構成されるゾーンを形成するゾーン形成手段と、
互いに異なる前記フラッシュメモリ内に形成された前記ゾーンを相互に関連付けるゾーン管理手段と、
前記各フラッシュメモリ内の物理ブロックに対して、該物理ブロックの物理ブロックアドレスをビット表示したときの下位側に該物理ブロックが属する前記フラッシュメモリを識別するためのビットを付加した複数ビットの情報に基づいて生成された物理アドレスを割り当てる物理アドレス割り当て手段と、
相互に関連付けられた前記各ゾーンから物理ブロックアドレスの同異に依存せずに1個ずつ任意で選択した複数個の物理ブロックを仮想ブロックとして管理し、該仮想ブロックに属する各物理ブロックに割り当てられた前記物理アドレスと前記仮想ブロックアドレスとの対応関係を管理する仮想ブロック管理手段と、
同一の前記仮想ブロックに属する複数個の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てるページ管理手段とを備え
前記フラッシュメモリを識別するためのビットのビット数は、前記複数個のフラッシュメモリを識別するために必要な最小限のビット数であることを特徴とする。
【0015】
例えば、前記仮想ブロックがn個の物理ブロックで構成されている場合、前記所定セクタ数の領域の容量を、n個の物理ブロックで構成される前記仮想ブロックに含まれるユーザ領域の容量と等しく設定する。
【0016】
本発明の第3の観点に係るフラッシュメモリシステムは、複数個の前記フラッシュメモリと上述のメモリコントローラとから構成される。
【0017】
本発明の第4の観点に係るフラッシュメモリの制御方法は、
ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数個のページを含む物理ブロック単位で消去が行われる複数個のフラッシュメモリを制御するフラッシュメモリの制御方法であって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当て、
前記各フラッシュメモリ内に複数個の物理ブロックで構成されるゾーンを形成し、
互いに異なる前記フラッシュメモリ内に形成された前記ゾーンを相互に関連付け、
相互に関連付けられた前記各ゾーンから物理ブロックアドレスの同異に依存せずに1個ずつ任意で選択した複数個の物理ブロックを仮想ブロックとして管理し、該仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理し、
同一の前記仮想ブロックに含まれる複数個の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てる、
ことを特徴とする。
【0018】
本発明の第5の観点に係るフラッシュメモリの制御方法は、
ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数個のページを含む物理ブロック単位で消去が行われる複数個のフラッシュメモリを制御するフラッシュメモリの制御方法であって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当て、
前記各フラッシュメモリ内に複数個の物理ブロックで構成されるゾーンを形成し、
互いに異なる前記フラッシュメモリ内に形成された前記ゾーンを相互に関連付け、
前記各フラッシュメモリ内の物理ブロックに対して、該物理ブロックの物理ブロックアドレスをビット表示したときの下位側に該物理ブロックが属する前記フラッシュメモリを識別するためのビットを付加した複数ビットの情報に基づいて生成された物理アドレスを割り当て、
相互に関連付けられた前記各ゾーンから物理ブロックアドレスの同異に依存せずに1個ずつ任意で選択した複数個の物理ブロックを仮想ブロックとして管理し、該仮想ブロックに属する各物理ブロックに割り当てられた前記物理アドレスと前記仮想ブロックアドレスとの対応関係を管理し、
同一の前記仮想ブロックに属する複数個の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当て、
前記フラッシュメモリを識別するためのビットのビット数は、前記複数個のフラッシュメモリを識別するために必要な最小限のビット数であることを特徴とする。
【0019】
前記仮想ブロックがn個の物理ブロックで構成されている場合に、例えば、前記所定セクタ数の領域の容量を、n個の物理ブロックで構成される前記仮想ブロックに含まれるユーザ領域の容量と等しくする。
【0024】
【発明の好ましい実施の形態】
以下、添付図面を参照しながら、本発明の好ましい実施態様について詳細に説明する。
【0025】
図1は、本発明の好ましい実施態様にかかるフラッシュメモリシステム1を概略的に示すブロック図である。
【0026】
図1に示されるように、フラッシュメモリシステム1はカード形状であり、n+1個のフラッシュメモリチップ2−0〜2−nと、コントローラ3と、コネクタ4とが、一つのカード内に集積されて構成される。フラッシュメモリシステム1は、ホストコンピュータ5に着脱可能に装着されて使用され、ホストコンピュータ5に対する一種の外部記憶装置として用いられる。ホストコンピュータ5としては、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置が挙げられる。
【0027】
各フラッシュメモリチップ2−0〜2−nは、それぞれ128Mバイト(1Gビット)の記憶容量を有する半導体チップである。フラッシュメモリシステム1においては、528バイトを1ページとし、これを最小アクセス単位としている。したがって、これら各フラッシュメモリチップ2−0〜2−nは、それぞれ256Kページのアドレス空間を含み、フラッシュメモリチップ2−0〜2−nの合計で、256K×(n+1)ページのアドレス空間を備えることになる。また、フラッシュメモリシステム1においては、これらn+1個のフラッシュメモリチップ2−0〜2−nは、128×(n+1)Mバイト((n+1)Gビット)の記憶容量を有し、256K×(n+1)ページのアドレス空間を備える一つの大きなメモリとして取り扱われる。ホストコンピュータ5は、フラッシュメモリシステム1に対し、ホストアドレスを供給することによって、特定のページに対するアクセスを行う。
【0028】
コントローラ3は、マイクロプロセッサ6と、ホストインターフェースブロック7と、SRAMワークエリア8と、バッファ9と、フラッシュメモリインターフェースブロック10と、ECC(エラー・コレクション・コード)ブロック11と、フラッシュシーケンサブロック12と、ROM33とから構成される。これら機能ブロックによって構成されるコントローラ3は、一つの半導体チップ上に集積されている。
【0029】
マイクロプロセッサ6は、コントローラ3を構成する各機能ブロック全体の動作を制御するための機能ブロックである。
【0030】
ホストインターフェースブロック7は、バス13を介してコネクタ4に接続されており、マイクロプロセッサ6による制御のもと、ホストコンピュータ5とのデータやアドレス情報、ステータス情報、外部コマンド情報の授受を行う。すなわち、フラッシュメモリシステム1がホストコンピュータ5に装着されると、フラッシュメモリシステム1とホストコンピュータ5とは、バス13、コネクタ4及びバス14を介して相互に接続され、かかる状態において、ホストコンピュータ5よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口としてコントローラ3の内部に取り込まれ、また、コントローラ3よりホストコンピュータ5に供給されるデータ等は、ホストインターフェースブロック7を出口としてホストコンピュータ5に供給される。さらに、ホストインターフェースブロック7は、ホストコンピュータ5より供給されるホストアドレス及び外部コマンドを一時的に格納するタスクファイルレジスタ(図示せず)及びエラーが発生した場合にセットされるエラーレジスタ等(図示せず)を有している。
【0031】
SRAMワークエリア8は、マイクロプロセッサ6によるフラッシュメモリチップ2−0〜2−nの制御に必要なデータが一時的に格納される作業領域であり、複数のSRAMセルによって構成される。
【0032】
バッファ9は、フラッシュメモリチップ2−0〜2−nから読み出されたデータ及びフラッシュメモリチップ2−0〜2−nに書き込むべきデータを一時的に蓄積するバッファである。すなわち、フラッシュメモリチップ2−0〜2−nから読み出されたデータは、ホストコンピュータ5が受け取り可能な状態となるまでバッファ9に保持され、フラッシュメモリチップ2−0〜2−nに書き込むべきデータは、フラッシュメモリチップ2−0〜2−nが書き込み可能な状態となるとともに、後述するECCブロック11によってエラーコレクションコードが生成されるまでバッファ9に保持される。
【0033】
フラッシュメモリインターフェースブロック10は、バス15を介して、フラッシュメモリチップ2−0〜2−nとのデータやアドレス情報、ステータス情報、内部コマンド情報の授受を行うとともに、各フラッシュメモリチップ2−0〜2−nに対して対応するチップ選択信号#0〜#nを供給するための機能ブロックである。チップ選択信号#0〜#nは、ホストコンピュータ5からデータの読み出しまたは書き込みが要求された場合、ホストコンピュータ5より供給されるホストアドレスに基づいて生成される内部アドレスの上位2ビットに基づいて、そのいずれかが活性化される信号である。具体的には、例えばn=2(フラッシュメモリチップが3個)である場合には、内部アドレスの上位2ビットが「00」であればチップ選択信号#0が活性化され、「01」であればチップ選択信号#1が活性化され、「10」であればチップ選択信号#2が活性化される。対応するチップ選択信号が活性化されたフラッシュメモリチップ2−0〜2−nは選択状態となり、データの読み出しまたは書き込みが可能となる。尚、「内部コマンド」とは、コントローラ3がフラッシュメモリチップ2−0〜2−nを制御するためのコマンドであり、ホストコンピュータ5がフラッシュメモリシステム1を制御するための「外部コマンド」と区別される。
【0034】
ECCブロック11は、フラッシュメモリチップ2−0〜2−nに書き込むデータに付加すべきエラーコレクションコードを生成するとともに、読み出しデータに付加されたエラーコレクションコードに基づいて、読み出しデータに含まれる誤りを訂正するための機能ブロックである。
【0035】
フラッシュシーケンサブロック12は、フラッシュメモリチップ2−0〜2−nとバッファ9とのデータの転送を制御するための機能ブロックである。フラッシュシーケンサブロック12は、複数のレジスタ(図示せず)を備え、マイクロプロセッサ6による制御のもと、フラッシュメモリチップ2−0〜2−nからのデータの読み出しまたはフラッシュメモリチップ2−0〜2−nへのデータの書き込みに必要な値がこれらレジスタに設定されると、データの読み出しまたは書き込みに必要な一連の動作を自動的に実行する。
【0036】
次に、各フラッシュメモリチップ2−0〜2−nを構成する各フラッシュメモリセルの具体的な構造について説明する。
【0037】
ROM33は、マイクロプロセッサ6が実行すべき各種プログラムを格納するためのメモリであり、少なくとも、第1の変換プログラムP1、第2の変換プログラムP2及び第3の変換プログラムP3が格納されている。これら第1乃至第3の変換プログラムP1〜P3については後述する。
【0038】
図2は、コントローラ3を構成する半導体チップを概略的に示す上面図である。
【0039】
図2に示されるように、コントローラ3を構成する半導体チップは、多数の外部端子(外部ピン)を有しており、これら外部端子には、バス13、15に接続される端子や、チップ選択信号#0〜#nを出力する端子等の他、モード設定端子#0が含まれている。モード設定端子#0は、本実施態様にかかるフラッシュメモリシステム1の動作モードを決めるための端子であり、モード設定端子#0に対する設定により、「チップタイプモード」及び「バンクタイプモード」のいずれかの動作モードを選択することができる。モード設定の具体的な方法は特に限定されないが、例えば、モード設定端子#0を接地電位(GND)に接続すれば「チップタイプモード」となり、モード設定端子#0を電源電位(Vcc)に接続すれば「バンクタイプモード」となる。この場合、コントローラ3を構成する半導体チップをプリント基板上に実装する際にモード設定端子#0を接地電位(GND)若しくは電源電位(Vcc)に接続することにより、フラッシュメモリシステム1の製造時において動作モードを固定してもよく、また、ホストコンピュータ5よりモード設定端子#0に接地電位(GND)若しくは電源電位(Vcc)を供給することにより、動作モードを可変としてもよい。
【0040】
「チップタイプモード」及び「バンクタイプモード」の詳細については、後述する。
【0041】
図3は、フラッシュメモリチップ2−0〜2−nを構成する各フラッシュメモリセル16の構造を概略的に示す断面図である。
【0042】
図3に示されるように、フラッシュメモリセル16は、P型半導体基板17に形成されたN型のソース拡散領域18及びドレイン拡散領域19と、ソース拡散領域18とドレイン拡散領域19との間のP型半導体基板17を覆って形成されたトンネル酸化膜20と、トンネル酸化膜20上に形成されたフローティングゲート電極21と、フローティングゲート電極21上に形成された絶縁膜22と、絶縁膜22上に形成されたコントロールゲート電極23とから構成される。このような構成を有するフラッシュメモリセル16は、フラッシュメモリチップ2−0〜2−n内において、複数個直列に接続されて、NAND型フラッシュメモリを構成する。
【0043】
フラッシュメモリセル16は、フローティングゲート電極21に電子が注入されているか否かによって、「消去状態」と「書込状態」のいずれかの状態が示される。フラッシュメモリセル16が消去状態であることは、当該フラッシュメモリセル16にデータ「1」が保持されていることを意味し、フラッシュメモリセル16が書込状態であることは、当該フラッシュメモリセル16にデータ「0」が保持されていることを意味する。すなわち、フラッシュメモリセル16は、1ビットのデータを保持することが可能である。
【0044】
図3に示されるように、消去状態とは、フローティングゲート電極21に電子が注入されていない状態を指す。消去状態におけるフラッシュメモリセル16は、デプレッション型のトランジスタとなり、コントロールゲート電極23に読み出し電圧が印加されているか否かに関わらず、ソース拡散領域18とドレイン拡散領域19との間のP型半導体基板17の表面にはチャネル24が形成される。したがって、ソース拡散領域18とドレイン拡散領域19とは、コントロールゲート電極23に読み出し電圧が印加されているか否かに関わらず、チャネル24によって常に電気的に接続状態となる。
【0045】
図4は、書込状態であるフラッシュメモリセル16を概略的に示す断面図である。
【0046】
図4に示されるように、書込状態とは、フローティングゲート電極21に電子が蓄積されている状態を指す。フローティングゲート電極21はトンネル酸化膜20及び絶縁膜22に挟まれているため、一旦、フローティングゲート電極21に注入された電子は、きわめて長時間フローティングゲート電極21内にとどまる。書込状態におけるフラッシュメモリセル16は、エンハンスメント型のトランジスタとなり、コントロールゲート電極23に読み出し電圧が印加されていないときには、ソース拡散領域18とドレイン拡散領域19との間のP型半導体基板17の表面にはチャネルが形成されず、コントロールゲート電極23に読み出し電圧が印加されているときには、ソース拡散領域18とドレイン拡散領域19との間のP型半導体基板17の表面にチャネル(図示せず)が形成される。したがって、コントロールゲート電極23に読み出し電圧が印加されていない状態では、ソース拡散領域18とドレイン拡散領域19とは電気的に絶縁され、コントロールゲート電極23に読み出し電圧が印加された状態では、ソース拡散領域18とドレイン拡散領域19とが電気的に接続される。
【0047】
ここで、選択されたフラッシュメモリセル16が消去状態であるか書込状態であるかは、次のようにして読み出すことができる。すなわち、複数個直列に接続されたフラッシュメモリセル16のうち、選択されたフラッシュメモリセル16以外の全てのフラッシュメモリセル16のコントロールゲート電極23に読み出し電圧を印加し、この状態において、これらフラッシュメモリセル16の直列体に電流が流れるか否かを検出する。その結果、かかる直列体に電流が流れれば、選択されたフラッシュメモリセル16が消去状態であると判断することができ、かかる直列体に電流が流れなければ、選択されたフラッシュメモリセル16が書込状態であると判断することができる。このようにして、直列体に含まれる任意のフラッシュメモリセル16に保持されたデータが「0」であるのか「1」であるのかを読み出すことができる。但し、NAND型フラッシュメモリにおいては、ひとつの直列体に含まれる2以上のフラッシュメモリセル16に保持されたデータを同時に読み出すことはできない。
【0048】
また、消去状態であるフラッシュメモリセル16を書込状態に変化させる場合、コントロールゲート電極23に正の高電圧が印加され、これによって、トンネル酸化膜20を介してフローティングゲート電極21へ電子が注入される。フローティングゲート電極21への電子の注入は、FNトンネル電流による注入が可能である。一方、書込状態であるフラッシュメモリセル16を消去状態に変化させる場合、コントロールゲート電極23に負の高電圧が印加され、これによって、トンネル酸化膜20を介してフローティングゲート電極21に蓄積された電子が排出される。
【0049】
次に、各フラッシュメモリチップ2−0〜2−nの持つアドレス空間の具体的な構成について説明する。
【0050】
図5は、フラッシュメモリチップ2−0のアドレス空間の構造を概略的に示す図である。
【0051】
図5に示されるように、フラッシュメモリチップ2−0のアドレス空間は、物理ブロック#0〜#8191からなる8192個の物理ブロックによって構成される。また、図5には示されていないが、フラッシュメモリチップ2−n等の他のフラッシュメモリチップも、フラッシュメモリチップ2−0と同様に物理ブロック#0〜#8191からなる8192個の物理ブロックによって構成されている。これら各物理ブロックは、いずれも16Kバイトの記憶容量を有する。
【0052】
ここで、上記各物理ブロックは、データの消去単位である。すなわち、フラッシュメモリチップ2−0〜2−nでは、各フラッシュメモリセル16ごとに、その状態を書込状態から消去状態に変化させることはできず、フラッシュメモリセル16を書込状態から消去状態に変化させる場合は、当該フラッシュメモリセル16が属する物理ブロックに含まれる全てのフラッシュメモリセル16が一括して消去状態とされる。逆に、フラッシュメモリチップ2−0〜2−nでは、各フラッシュメモリセル16ごとに、その状態を消去状態から書込状態に変化させることは可能である。
【0053】
さらに、図5に示されるように、フラッシュメモリチップ2−0を構成する各物理ブロック#0〜#8191は、それぞれ物理ページ#0〜#31からなる32個の物理ページによって構成されている。また、フラッシュメモリチップ2−n等の他のフラッシュメモリチップを構成する各物理ブロック#0〜#8191も、フラッシュメモリチップ2−0を構成する各物理ブロック#0〜#8191と同様に、それぞれ32個の物理ページによって構成されている。
【0054】
これら各ページはデータの読み出し及び書き込みにおけるアクセス単位であり、図5に示されるように、ビットb0〜b7からなる8ビットを1バイトとして、それぞれ512バイトのユーザ領域25と16バイトの冗長領域26によって構成される。ユーザ領域25は、ホストコンピュータ5より供給されるユーザデータが格納される領域である。
【0055】
ここで、フラッシュメモリチップ2−0〜2−nは、いずれも「バンクタイプ」と呼ばれるチップであり、各ブロックは、それぞれ独立したレジスタを有するいずれかのバンクに分類される。それぞれ異なるバンクに属する複数のブロックについては、互いに同時に書き込み処理を行うことができる他、互いに同時にブロック消去を行うことができる。
【0056】
図6は、フラッシュメモリチップ2−0のバンク構造を概略的に示す図である。
【0057】
図6に示されるように、フラッシュメモリチップ2−0を構成する物理ブロック#0〜#8191は、バンク#0〜#3からなる4つのバンクに分類されている。詳細には、物理ブロック#4m(mは0〜2047の整数)はバンク#0に属し、物理ブロック#4m+1はバンク#1に属し、物理ブロック#4m+2はバンク#2に属し、物理ブロック#4m+3はバンク#3に属している。
【0058】
また、フラッシュメモリチップ2−0は、レジスタ#0〜#3からなる4つのレジスタを備えており、これらレジスタ#0〜#3はバンク#0〜#3にそれぞれ対応している。これら各レジスタ#0〜#3は、それぞれ1ページ分のデータを一時的に保持することができる。すなわち、バンク#0に属する物理ブロックからデータが読み出される場合、読み出されたデータは一旦レジスタ#0に保持された後、バス15を介してコントローラ3に転送され、バンク#0に属する物理ブロックへデータが書き込まれる場合、バス15を介してコントローラ3から転送されたデータは、一旦レジスタ#0に保持された後、所定の物理ブロックに書き込まれることになる。上記動作は、バンク#1〜#3に属する物理ブロックに対するデータの読み出し及び書き込みにおいても同様に、それぞれレジスタ#1〜#3が用いられる。
【0059】
また、各物理ブロックから対応するレジスタへのデータの転送動作(データの読み出し)や、各レジスタから対応する物理ブロックへのデータの転送動作(データの書き込み)は、各バンクにおいて独立して実行可能である。したがって、フラッシュメモリチップ2−0は、4ページ分のデータの書き込みを並列に行うことができる。また、それぞれ異なるバンクに属する複数の物理ブロックに対して、並列したブロック消去を行うことができる。
【0060】
尚、図6には示されていないが、フラッシュメモリチップ2−n等の他のフラッシュメモリチップについても、フラッシュメモリチップ2−0と同様、各ブロックがバンク#0〜#3からなる4つのバンクに分類されるとともに、各バンクに対応するレジスタ#0〜#3を備えている。
【0061】
図7は、冗長領域26のデータ構造を概略的に示す図である。
【0062】
図7に示されるように、冗長領域26は、エラーコレクションコード格納領域27、仮想ブロックアドレス格納領域28及びその他の付加情報によって構成される。
【0063】
エラーコレクションコード格納領域27は、対応するユーザ領域25に格納されたユーザデータの誤りを訂正するための付加情報(エラーコレクションコード)を格納するための領域であり、ユーザ領域25に格納されたデータに含まれるデータの誤りが所定数以下であれば、エラーコレクションコード格納領域27に格納されたエラーコレクションコードを用いてこれを訂正し、正しいデータとすることができる。
【0064】
仮想ブロックアドレス格納領域28は、当該物理ブロックが属する仮想ブロックのアドレス(仮想ブロックアドレス)及びセル番号を格納するための領域である。仮想ブロック、仮想ブロックアドレス及びセル番号の詳細については後述する。
【0065】
冗長領域26のその他の領域には、当該ブロックについての異常を表示するブロックステータス等が格納されているが、これらについての説明は省略する。
【0066】
このように、各ページは、512バイトのユーザ領域25と16バイトの冗長領域26からなるので、各ページは、8×(512バイト+16バイト)=4224個のフラッシュメモリセルによって構成されることになる。
【0067】
このように、各フラッシュメモリチップ2−0〜2−nはそれぞれ8192個の物理ブロックによって構成されるので、合計で8192×(n+1)個の物理ブロックが存在することになる。これら8192×(n+1)個の物理ブロックは、以下に詳述するように、複数のゾーンに分類される。
【0068】
図8は、フラッシュメモリシステム1が「チップタイプモード」で動作する場合における、ゾーン構成を示す図である。
【0069】
図8に示されるように、フラッシュメモリシステム1が「チップタイプモード」で動作する場合には、各フラッシュメモリチップ2−0〜2−nを構成する物理ブロックは、それぞれ自己の物理ブロックアドレスを1024で除した場合の商に対応するゾーンに分類される。すなわち、各フラッシュメモリチップ2−0〜2−nを構成する物理ブロック#0〜#1023は全てゾーン#0に属し、各フラッシュメモリチップ2−0〜2−nを構成する物理ブロック#1024〜#2047はすべてゾーン#1に属する。このようにして、各フラッシュメモリチップ2−0〜2−nを構成する物理ブロックは、ゾーン#0〜#7からなる8つのゾーンに分類される。
【0070】
図9は、フラッシュメモリシステム1が「バンクタイプモード」で動作する場合における、ゾーン構成を示す図である。
【0071】
図9に示されるように、フラッシュメモリシステム1が「バンクタイプモード」で動作する場合には、各フラッシュメモリチップ2−0〜2−nを構成する物理ブロックは、4096個ごとに1つのゾーンを構成し、これにより、フラッシュメモリチップ2−0を構成する物理ブロックはゾーン#0、#1に分類され、フラッシュメモリチップ2−nを構成する物理ブロックはゾーン#2n、#2n+1に分類される。したがって、n=2(チップ数=3個)である場合、各フラッシュメモリチップ2−0〜2−nを構成する物理ブロックは、ゾーン#0〜#5からなる6つのゾーンに分類されることになる。
【0072】
このように、フラッシュメモリシステム1が「チップタイプモード」で動作する場合には、各ゾーンは1024×(n+1)個の物理ブロックによって構成されるが、このうち、1000×(n+1)個の物理ブロックは実際にデータを格納することができるブロック(以下、「実使用ブロック」という)として取り扱われ、残りの24×(n+1)個の物理ブロックは冗長ブロックとして取り扱われる。フラッシュメモリチップ2−0〜2−nのアドレス空間は、実使用ブロックのみによって構成される。より詳細には、フラッシュメモリシステム1が「チップタイプモード」で動作する場合、各ゾーンに含まれる1024×(n+1)個の物理ブロックは、各々が属するフラッシュメモリチップに基づいて1024個ずつに分類され、このうち、1000個の物理ブロックが実使用ブロックとして取り扱われ、残りの24個の物理ブロックが冗長ブロックとして取り扱われる。また、フラッシュメモリシステム1が「バンクタイプモード」で動作する場合には、各ゾーンに含まれる4096個の物理ブロックは、各々が属するバンクに基づいて1024個ずつに分類され、このうち、1000個の物理ブロックが実使用ブロックとして取り扱われ、残りの24個の物理ブロックが冗長ブロックとして取り扱われる。本明細書においては、上述のように各ゾーンにおいて1024個ずつに分類された各領域を「スロット」と呼ぶことがある。
【0073】
ここで、ある物理ブロックに不良が発生し、使用不能となった場合には、不良が発生した物理ブロックの数だけ、当該ゾーンの当該スロットにおいて冗長ブロックとして割り当てられる物理ブロックの数が減らされるが、あるゾーンのあるスロットにおいて24個を超える物理ブロックに不良が発生した場合、当該ゾーン内の他のスロットに属する物理ブロックを実使用ブロックとして代替使用し、これによって、当該スロットにおいて1000個の実使用ブロックを確保する。尚、本明細書においては、このように当該ゾーン内の他のスロットに属する物理ブロックを実使用ブロックとして代替使用する処理を「代替処理」と呼ぶことがある。
【0074】
また、本実施態様にかかるフラッシュメモリシステム1では、「チップタイプモード」及び「バンクタイプモード」のいずれのモードで動作する場合においても、各ゾーンごとに、各スロットから一つずつ選ばれた複数の実使用ブロックが仮想的に結合された「仮想ブロック」が構成される。これにより、各ゾーンごとに、仮想ブロック#0〜#999からなる最大1000個の仮想ブロックが構成される。但し、あるゾーンのあるスロットにおいて24個を超える物理ブロックに不良が発生し、これにより上述した代替処理が行われている場合は、「チップタイプモード」においては同じフラッシュメモリチップから2以上の実使用ブロックが選ばれることがあり、「バンクタイプモード」においては同じバンクから2以上の実使用ブロックが選ばれることがある。
【0075】
ここで、フラッシュメモリシステム1が「チップタイプモード」で動作する場合、各仮想ブロックは、nを2進表示するのに必要なビット数をXとした場合、2個の「セル」によって構成され、対応するスロットから選ばれた実使用ブロックが各セルに割り当てられる。このように、仮想ブロックを構成するセルの数(2)は、フラッシュメモリチップの数(n+1)との関係において決定される。仮想ブロックを構成するセルの数(2)と、フラッシュメモリチップの数(n+1)との関係を纏めると、図10に示される通りとなる。
【0076】
この場合、セル数(2)がフラッシュメモリチップの数(n+1)を越えている場合には、越えている数に相当するセルは無効セル(ダミーセル)となる。例えば、フラッシュメモリチップの数(n+1)が3個または4個である場合には、セル数(2)はいずれも「4」となり、セル#0〜#3によって仮想ブロックが構成されるが、フラッシュメモリチップの数(n+1)が3個である場合には、セル#0〜#2のみが有効セルとなり、セル#3はダミーセルとなる。
【0077】
図11は、「チップタイプモード」における仮想ブロックのマッピングの一例を示す図である。
【0078】
図11に示される例は、n=2(チップ数=3個)である場合におけるゾーン#0に属する仮想ブロックのマッピングの一例であり、フラッシュメモリチップ2−0に含まれる物理ブロック#150、フラッシュメモリチップ2−1に含まれる物理ブロック#961、フラッシュメモリチップ2−2に含まれる物理ブロック#1023が仮想的に結合され、一つの仮想ブロックを構成している。このように、「チップタイプモード」においては、原則として、ひとつの仮想ブロックを構成する各物理ブロックは互いに異なるフラッシュメモリチップに属することが必要である。この場合、図10から明らかなように、n=2(チップ数=3個)である場合には、各仮想ブロック構成するセル数は4個であることから、このうち3つのセルにそれぞれ上記物理ブロックが割り当てられ、残る1つのセルはダミーセルとなる。ダミーセルにはいかなる物理ブロックも割り当てられない。このようにして、各ゾーンごとに、最大1000個の仮想ブロックが構成され、フラッシュメモリシステム1の全体で最大8000個の仮想ブロックが構成される。
【0079】
図12は、「チップタイプモード」において代替処理が行われている場合おける仮想ブロックのマッピングの一例を示す図である。
【0080】
本例は、ゾーン#0内においてフラッシュメモリチップ2−0に24個を超える物理ブロックに不良が発生した場合におけるマッピングの一例であり、フラッシュメモリチップ2−1に含まれる物理ブロック#961、フラッシュメモリチップ2−2に含まれる物理ブロック#1、フラッシュメモリチップ2−2に含まれる物理ブロック#1023が仮想的に結合され、一つの仮想ブロックを構成している。このように、「チップタイプモード」において代替処理が行われている場合、ひとつの仮想ブロック内に、同じフラッシュメモリチップに属する2以上の物理ブロックが含まれることがある。
【0081】
図13は、図11に示された仮想ブロックの仮想ページ構造を示す図である。
【0082】
図13に示されるように、仮想ブロックは、セル数と1物理ブロックを構成する物理ページ数との積によって与えられる数の仮想ページによって構成され、図11に示した仮想ブロックの場合、仮想ページ#0〜仮想ページ#127からなる128個の仮想ページによって構成される。ここで、仮想ブロックのうち、物理ブロック#150からなる部分に含まれる32個のページは、仮想ページ番号として4i(iは、物理ページ番号)が与えられ、物理ブロック#961からなる部分に含まれる32個のページは、仮想ページ番号として4i+1が与えられ、物理ブロック#1023からなる部分に含まれる32個のページは、仮想ページ番号として4i+2が与えられる。また、ダミーセルに相当する部分には、仮想ページ番号として4i+3が与えられる。
【0083】
また、代替処理が行われている場合における仮想ページ構造も、図13に示される構造と同様であり、例えば、図12に示した仮想ブロックの仮想ページ構造は、図13に示されるフラッシュメモリチップ2−0の物理ブロック#150からなる部分に含まれる32個のページが、フラッシュメモリチップ2−2の物理ブロック#1に含まれる32個のページに置き換えられる。
【0084】
図14は、「バンクタイプモード」における仮想ブロックのマッピングの一例を示す図である。
【0085】
図14に示される例は、ゾーン#0に属する仮想ブロックのマッピングの一例であり、バンク#0に含まれる物理ブロック#4、バンク#1に含まれる物理ブロック#3241、バンク#2に含まれる物理ブロック#2002、バンク#3に含まれる物理ブロック#4095が仮想的に結合され、一つの仮想ブロックを構成している。このように、「バンクタイプモード」においては、原則として、ひとつの仮想ブロックを構成する4つの物理ブロックは互いに異なるバンクに属することが必要である。このようにして、各ゾーンごとに、最大1000個の仮想ブロックが構成され、フラッシュメモリシステム1の全体で最大8000個の仮想ブロックが構成される。
【0086】
図15は、「バンクタイプモード」において代替処理が行われている場合おける仮想ブロックのマッピングの一例を示す図である。
【0087】
本例は、ゾーン#0内においてバンク#0に24個を超える物理ブロックに不良が発生した場合におけるマッピングの一例であり、バンク#1に含まれる物理ブロック#5、バンク#1に含まれる物理ブロック#3241、バンク#2に含まれる物理ブロック#2002、バンク#3に含まれる物理ブロック#4095が仮想的に結合され、一つの仮想ブロックを構成している。このように、「バンクタイプモード」において代替処理が行われている場合、ひとつの仮想ブロック内に、同じバンクに属する2以上の物理ブロックが含まれることがある。
【0088】
図16は、図14に示された仮想ブロックの仮想ページ構造を示す図である。
【0089】
図16に示されるように、「バンクタイプモード」においても、「チップタイプモード」と同様、各仮想ブロックは、セル数と1物理ブロックを構成する物理ページ数との積によって与えられる数の仮想ページによって構成され、図14に示した仮想ブロックの場合、仮想ページ#0〜仮想ページ#127からなる128個の仮想ページによって構成される一つのブロックとして取り扱われる。ここで、仮想ブロックのうち、物理ブロック#4からなる部分に含まれる32個のページは、仮想ページ番号として4i(iは、物理ページ番号)が与えられ、物理ブロック#3241からなる部分に含まれる32個のページは、仮想ページ番号として4i+1が与えられ、物理ブロック#2002からなる部分に含まれる32個のページは、仮想ページ番号として4i+2が与えられ、物理ブロック#4095からなる部分に含まれる32個のページは、仮想ページ番号として4i+3が与えられる。
【0090】
また、代替処理が行われている場合における仮想ページ構造も、図16に示される構造と同様であり、例えば、図15に示した仮想ブロックの仮想ページ構造は、図16に示されるバンク#0の物理ブロック#4からなる部分に含まれる32個のページが、バンク#1の物理ブロック#5に含まれる32個のページに置き換えられる。
【0091】
また、フラッシュメモリシステム1がいずれのモードで動作する場合においても、各ゾーンに含まれる物理ブロックには、それぞれ「物理アドレス」が割り当てられる。ここで、「物理アドレス」とは、各ゾーン内において物理ブロックを特定するために用いられる中間的なアドレスであり、仮想ブロック番号を特定するために用いられる「仮想ブロックアドレス」や各物理ブロックに固有の「物理ブロックアドレス」とは異なるアドレスである。物理アドレスは、以下のように割り当てられる。
【0092】
まず、フラッシュメモリシステム1が「チップタイプモード」で動作する場合、各物理ブロックの物理アドレスは、物理ブロックアドレスの下位10ビットに2を乗じ、さらに、セル番号を足して得られる値によって与えられる。例えば、n=2〜3(チップ数=3〜4個)である場合においてフラッシュメモリシステム1が「チップタイプモード」で動作する場合には、各物理ブロックの物理アドレスは、物理ブロックアドレスの下位10ビットに4を乗じ、さらに、セル番号を足して得られる値によって与えられる。
【0093】
図17は、n=2(チップ数=3個)である場合においてフラッシュメモリシステム1が「チップタイプモード」で動作する場合、ゾーン#0を構成する各物理ブロックに割り当てられる物理アドレスを示す図である。
【0094】
一方、フラッシュメモリシステム1が「バンクタイプモード」で動作する場合、各物理ブロックの物理アドレスは、物理ブロックアドレスの下位12ビットと一致する。つまり、各ゾーンを構成する4096個の物理ブロックには、物理ブロックアドレスの順に、物理アドレス#0(000000000000B)〜物理アドレス#4095(111111111111B)が割り当てられる。
【0095】
図18は、フラッシュメモリシステム1が「バンクタイプモード」で動作する場合において、ゾーン#0を構成する各物理ブロックに割り当てられる物理アドレスを示す図である。
【0096】
次に、ホストコンピュータ5より供給されるホストアドレスを内部アドレスに変換する方法の概略について説明する。詳細については後述する。
【0097】
本実施態様にかかるフラッシュメモリシステム1においては、かかるアドレス変換が、ホストアドレスに対応する「論理ブロック空間」から「仮想ブロック空間」への変換(第1の変換)、「仮想ブロック空間」から「物理アドレス空間」への変換(第2の変換)、「物理アドレス空間」から内部アドレスに対応する「物理ブロック空間」への変換(第3の変換)の順に行われる。ここで、「論理ブロック空間」から「仮想ブロック空間」への変換(第1の変換)は、ROM33に格納されている第1の変換プログラムP1を用いた演算により行われ、「仮想ブロック空間」から「物理アドレス空間」への変換(第2の変換)は、SRAMワークエリア8上に展開されるアドレス変換テーブル29を参照することにより行われ、「物理アドレス空間」から「物理ブロック空間」への変換(第3の変換)は、ROM33に格納されている第2の変換プログラムP2又は第3の変換プログラムP3を用いた演算により行われる。
【0098】
図19は、第2の変換に用いられるアドレス変換テーブル29のデータ構造を示す概略図である。
【0099】
図19に示される例は、アドレス変換テーブル29のデータ構造の一例であり、テーブル#0〜#3からなる4つのテーブルによって構成される。これら各テーブルには、それぞれ一つのゾーンに関わるアドレス変換情報が格納される。具体的には、これら各テーブル#0〜#3は、それぞれ1000個の仮想ブロック表示領域#0〜#999によって構成され、これら各仮想ブロック表示領域#0〜#999は、それぞれセル#j−0〜セル#j−3(jは、仮想ブロックアドレス)からなる4個のセル及びフラグ#j−0〜フラグ#j−3からなる4個のフラグによって構成される。例えば、仮想ブロック表示領域#0はセル#0−0〜セル#0−3及びフラグ#0−0〜フラグ#0−3によって構成され、仮想ブロック表示領域#1はセル#1−0〜セル#1−3及びフラグ#1−0〜フラグ#1−3によって構成される。
【0100】
ここで、フラッシュメモリシステム1が「チップタイプモード」で動作する場合、スロット#0〜#nが使用され、その他のスロットは使用されない。例えば、n=2(チップ数=3個)である場合において、フラッシュメモリシステム1が「チップタイプモード」で動作する場合には、スロット#0〜#2が使用され、スロット#3は使用されない。この場合、これらスロット#0〜#2は原則としてそれぞれフラッシュメモリチップ2−0〜2−2(=2−n)に対応する。但し、代替処理が行われている場合にはこの限りではない。一方、フラッシュメモリシステム1が「バンクタイプモード」で動作する場合、原則として、スロット#0〜#3はそれぞれバンク#0〜#3に対応する。但し、代替処理が行われている場合にはこの限りではない。
【0101】
各仮想ブロック表示領域に含まれるセル#j−0〜#j−3には、それぞれ当該仮想ブロックを構成する物理ブロックの物理アドレスが格納される。
【0102】
また、各仮想ブロックに含まれるフラグ#j−0〜フラグ#j−3は、当該セルに格納されている内容が有効であるか無効であるかを示している。具体的には、フラグが「1」を示していれば対応するセルの内容は有効であり、フラグが「0」を示していれば対応するセルの内容は無効である。したがって、対応するフラグが「0」を示しているセルについては、その内容は無視される。
【0103】
尚、これらテーブル#0〜#3が、それぞれどのゾーンに対応するのかは、後述する管理テーブル30によって示される。ここでは、アドレス変換テーブル29に含まれるテーブル数(4個)が、ゾーン数(8個)よりも少ない点に留意されたい。すなわち、アドレス変換テーブル29には、全てのゾーンに関わるアドレス変換情報は格納されておらず、その一部、つまり4ゾーン分のアドレス変換情報のみがそれぞれテーブル#0〜#3に格納されている。
【0104】
アドレス変換テーブル29の生成は、次のように行われる。
【0105】
データが格納されているブロックの各先頭ページ(物理ページ#0)の冗長領域26に含まれる仮想ブロックアドレス格納領域28には、当該物理ブロックがどの仮想ブロックに属するかを示す仮想ブロックアドレス及びセル番号が含まれており、各物理ブロックの各先頭ページ(物理ページ#0)に含まれている仮想ブロックアドレス及びセル番号がマイクロプロセッサ6による制御のもと、フラッシュメモリインターフェースブロック10を介して読み出される。
【0106】
ここで、消去済みの空きブロックにおいては、冗長領域26の仮想ブロックアドレス格納領域28に格納されている仮想ブロックアドレスは「オール1(1111111111B)」となっているはずである。すなわち、仮想ブロック番号は、上述のとおり、#0(0000000000B)〜#999(1111100111B)までしかなく、したがって、これがオール1(1111111111B)である場合には、当該物理ブロックが消去済みの空きブロックであると判断することができる。一方、冗長領域26の仮想ブロックアドレス格納領域28に格納された仮想ブロックアドレスが「0000000000B」〜「1111100111B」である場合には、当該仮想ブロックアドレスは有効な仮想ブロックアドレスである。
【0107】
したがって、マイクロプロセッサ6は、所定のゾーンに属する各物理ブロックの先頭ページ(物理ページ#0)の冗長領域26に含まれる仮想ブロックアドレスを参照し、これがオール1ではなく有効な仮想ブロックのアドレスを示していれば、当該ゾーンに対応するテーブルを構成するセルのうち、読み出された仮想ブロックアドレス及び読み出されたセル番号によって特定されるセルに、当該物理ブロックの物理アドレスを格納する。尚、物理ブロックアドレスから物理アドレスへの変換の方法はすでに説明したとおりであり、フラッシュメモリシステム1が「チップタイプモード」で動作しているか、「バンクタイプモード」で動作しているかによって異なる。例えば、n=2(チップ数=3個)であるフラッシュメモリシステム1が「チップタイプモード」で動作している場合において、フラッシュメモリチップ2−0に属する物理ブロック#14より読み出された仮想ブロックアドレスが「123」であり、読み出されたセル番号が「0」であれば、セル#123−0に、物理ブロック#14に対応する物理アドレスとして「56」が書き込まれ、さらに、対応するフラグ#123−0が「1」にされる。同様に、フラッシュメモリシステム1が「バンクタイプモード」で動作している場合において、フラッシュメモリチップ2−0に属する物理ブロック#14より読み出された仮想ブロックアドレスが「123」であり、読み出されたセル番号が「2」であれば、セル#123−2に、物理ブロック#14に対応する物理アドレスとして「14」が書き込まれ、さらに、対応するフラグ#123−2が「1」にされる。
【0108】
ここで、冗長領域26の仮想ブロックアドレス格納領域28に格納されているセル番号は、当該物理ブロックが属するスロット番号と一致している。このことは、フラッシュメモリシステム1が「チップタイプモード」で動作している場合には、セル番号とチップ番号とが通常一致し、フラッシュメモリシステム1が「バンクタイプモード」で動作している場合には、セル番号とバンク番号とが通常一致していることを意味する。しかしながら、上述した代替処理が行われた結果、あるスロットに属する物理ブロックが他のスロットの実使用ブロックとして使用されている場合においては、当該物理ブロックのセル番号は、チップ番号やバンク番号と一致しない。換言すれば、仮想ブロックアドレス格納領域28に格納されているセル番号は、代替処理を可能とするために備えられている要素である。
【0109】
このような処理が、所定のゾーンを構成する物理ブロックの全てについて行われ、これにより、対応するテーブルを構成する仮想ブロック表示領域に、それぞれ対応する物理ブロックアドレスが格納されることになる。
【0110】
そして、このような処理を所定の4つのゾーンについて行うことにより、アドレス変換テーブル29を構成する4つのテーブル内にアドレス変換情報が展開され、アドレス変換テーブル29の作成作業が完了する。尚、8個のゾーンのうち、どのゾーンについてアドレス変換情報を作成するかについては、後述する管理テーブル30によって定められる。
【0111】
次に、SRAMワークエリア8に格納される管理テーブル30のデータ構造について説明する。
【0112】
図20は、SRAMワークエリア8に格納される管理テーブル30のデータ構造を示す概略図である。
【0113】
図20に示されるように、管理テーブル30は、ゾーン番号格納領域#0〜#3からなる4つのゾーン番号格納領域によって構成される。これら各ゾーン番号格納領域#0〜#3は、それぞれSRAMワークエリア8の1バイトの記憶領域を使用しており、それぞれにはゾーン番号が3ビットのデータによって格納されている。したがって、管理テーブル30は、SRAMワークエリア8の記憶容量のうち、4バイトを占有することとなる。
【0114】
管理テーブル30は、アドレス変換テーブル29を構成するテーブル#0〜#3が、それぞれどのゾーンに関わるアドレス変換情報を格納しているかを示している。具体的には、ゾーン番号格納領域#0に格納されたゾーン番号は、テーブル#0に格納されているアドレス変換情報が当該ゾーンに関わるアドレス変換情報であることを示し、ゾーン番号格納領域#1に格納されたゾーン番号は、テーブル#1に格納されているアドレス変換情報が当該ゾーンに関わるアドレス変換情報であることを示し、ゾーン番号格納領域#2に格納されたゾーン番号は、テーブル#2に格納されているアドレス変換情報が当該ゾーンに関わるアドレス変換情報であることを示し、ゾーン番号格納領域#3に格納されたゾーン番号は、テーブル#3に格納されているアドレス変換情報が当該ゾーンに関わるアドレス変換情報であることを示す。
【0115】
管理テーブル30の生成は、マイクロプロセッサ6による制御のもと、上述したアドレス変換テーブル29の生成の際に行われる。
【0116】
次に、SRAMワークエリア8に格納される優先リンク31のデータ構造について説明する。
【0117】
図21は、SRAMワークエリア8に格納される優先リンク31のデータ構造を示す概略図である。
【0118】
図21に示されるように、優先リンク31は、ポインタ#0〜#3からなる4つのポインタによって構成される。これら各ポインタ#0〜#3は、それぞれSRAMワークエリア8の1バイトの記憶領域を使用しており、それぞれにはリンク先ポインタ番号またはデータ「NULL」が格納されている。したがって、優先リンク31は、SRAMワークエリア8の記憶容量のうち、4バイトを占有することとなる。
【0119】
優先リンク31は、アドレス変換テーブル29を構成する4つのテーブル(テーブル#0〜#3)の優先順位を示す要素であり、優先リンク31を構成するポインタ#0〜#3は、それぞれアドレス変換テーブル29を構成するテーブル#0〜#3に対応している。
【0120】
優先リンク31によって、アドレス変換テーブル29を構成する4つのテーブルの優先順位を示す具体的な方法について説明する前に、アドレス変換テーブル29を構成する4つのテーブル#0〜#3に優先順位を設ける必要性について説明する。
【0121】
上述のとおり、アドレス変換テーブル29を構成するテーブルの数(4テーブル)は、ゾーンの数(8ゾーン)よりも少なく、このため、アドレス変換テーブル29に展開されるアドレス変換情報は、一部のゾーンに関わるアドレス変換情報に限られる。したがって、アドレス変換テーブル29にアドレス変換情報が展開されていないゾーンに対して、ホストコンピュータ5からアクセスが要求された場合には、アドレス変換テーブル29の内容を更新する必要がある。すなわち、マイクロプロセッサ6は、アドレス変換テーブル29を構成する4つのテーブルの中からいずれか1つのテーブルを選び、その内容を消去して、アクセスが要求されたゾーンに関わるアドレス変換情報を当該テーブル内に新たに展開する必要がある。したがって、アドレス変換テーブル29を構成する4つのテーブルの中から、その内容が消去されるべきテーブルを選ぶためには、アドレス変換テーブル29を構成する4つのテーブルに優先順位を設け、優先順位の低いテーブルから順にその内容を消去する必要がある。
【0122】
かかる理由から、アドレス変換テーブル29を構成する4つのテーブルには、優先順位が設けられ、かかる優先順位を記憶するために優先リンク31が設けられるのである。
【0123】
次に、優先リンク31を用いた、テーブル#0〜#3の優先順位の記憶方法について、図面を用いて詳細に説明する。
【0124】
図22は、優先リンク31によって、優先順位としてテーブル#0→テーブル#1→テーブル#2→テーブル#3が記憶される場合を示す図である。
【0125】
図22に示されるように、優先順位がテーブル#0→テーブル#1→テーブル#2→テーブル#3の順である場合、ポインタ#0には、リンク先ポインタ番号として「1」が格納され、ポインタ#1には、リンク先ポインタ番号として「2」が格納され、ポインタ#2には、リンク先ポインタ番号として「3」が格納され、ポインタ#3には、データ「NULL」が格納される。
【0126】
上述のとおり、優先リンク31を構成するポインタ#0〜#3は、それぞれアドレス変換テーブル29を構成するテーブル#0〜#3に対応しており、いずれのポインタにもリンク先ポインタ番号として格納されていないポインタ、すなわち、ポインタ#0に対応するテーブル(テーブル#0)が最も優先順位の高いテーブルとなり、以下、当該ポインタ#0に格納されたリンク先ポインタ番号「1」により示されるポインタ、すなわち、ポインタ#1に対応するテーブル(テーブル#1)が次に優先順位の高いテーブルとなり、当該ポインタ#1に格納されたリンク先ポインタ番号「2」により示されるポインタ、すなわち、ポインタ2に対応するテーブル(テーブル#2)が次に優先順位の高いテーブルとなり、当該ポインタ#2に格納されたリンク先ポインタ番号「3」により示されるポインタ、すなわち、ポインタ#3に対応するテーブル(テーブル#3)が最も優先順位の低いテーブルとなる。これにより、優先順位は、テーブル#0→テーブル#1→テーブル#2→テーブル#3の順となる。最も優先順位の低いテーブルに対応するポインタ#3には、データ「NULL」が格納されている。
【0127】
優先リンク31に、このような優先順位が記憶されている状態において、ホストコンピュータ5から、例えば、テーブル#2に対応するゾーンに対するアクセスがされた場合、以下に説明するように、優先リンク31によって記憶される優先順位が変更され、いまアクセスされたゾーンに対応するテーブル#2の優先順位が最も高くなる。
【0128】
図23は、優先リンク31によって、優先順位としてテーブル#2→テーブル#0→テーブル#1→テーブル#3が記憶される場合を示す図である。
【0129】
図23に示されるように、優先順位がテーブル#0→テーブル#1→テーブル#2→テーブル#3の順である状態において、テーブル#2に対応するゾーンに対してアクセスがされると、マイクロプロセッサ6による制御のもと、ポインタ#1の内容であるリンク先ポインタ番号が「3」に変更され、ポインタ#2の内容であるリンク先ポインタ番号が「0」に変更される。かかる動作は、以下の手順で行われる。
【0130】
まず、今アクセスされたゾーンに対応するテーブルのテーブル番号「2」と同じ番号がリンク先ポインタ番号として格納されているポインタ(ポインタ#1)の内容が、いまアクセスされたゾーンに対応するテーブルに対応するポインタ(ポインタ#2)に格納されているポインタ番号「3」に書き換えられる。次に、いまアクセスされたゾーンに対応するテーブルに対応するポインタ(ポインタ#2)の内容が、リンク先ポインタ番号として現在最も優先順位の高いテーブルに対応するポインタ番号「0」に書き換えられる。これによって、上述のとおり、ポインタ#1の内容であるリンク先ポインタ番号が「3」に変更され、ポインタ#2の内容であるリンク先ポインタ番号が「0」に変更される。
【0131】
このように内容が書き換えられた優先リンク31においても、いずれのポインタにもリンク先ポインタ番号として格納されていないポインタ、すなわち、ポインタ#2に対応するテーブル(テーブル#2)が最も優先順位の高いテーブルとなり、以下、当該ポインタ#2に格納されたリンク先ポインタ番号「0」により示されるポインタ、すなわち、ポインタ#0に対応するテーブル(テーブル#0)が次に優先順位の高いテーブルとなり、当該ポインタ#0に格納されたリンク先ポインタ番号「1」により示されるポインタ、すなわち、ポインタ#1に対応するテーブル(テーブル#1)が次に優先順位の高いテーブルとなり、当該ポインタ#1に格納されたリンク先ポインタ番号「3」により示されるポインタ、すなわち、ポインタ#3に対応するテーブル(テーブル#3)が最も優先順位の低いテーブルとなる。これにより、優先順位は、テーブル#2→テーブル#0→テーブル#1→テーブル#3の順となる。最も優先順位の低いテーブルに対応するポインタ#3には、データ「NULL」が格納されている。
【0132】
このような動作により、いまアクセスされたゾーンに対応するテーブル(テーブル#2)の優先順位が最も高くなり、以降の優先順位は、以前記憶されていた優先順位と同じ優先順位となる。
【0133】
同様にして、優先リンク31に、このような優先順位が記憶されている状態において、ホストコンピュータ5から、例えば、テーブル#3に対応するゾーンに対するアクセスがされると、ポインタ#1の内容であるリンク先ポインタ番号がデータ「NULL」に変更され、ポインタ#3の内容であるリンク先ポインタ番号が「2」に変更されて、優先順位はテーブル#3→テーブル#2→テーブル#0→テーブル#1に変更される。
【0134】
図24は、優先リンク31によって、優先順位としてテーブル#3→テーブル#2→テーブル#0→テーブル#1が記憶される場合を示す図である。
【0135】
さて、優先リンク31に、このような優先順位が記憶されている状態において、ホストコンピュータ5から、アドレス変換テーブル29を構成するいずれのテーブルにもアドレス変換情報が格納されていないゾーンに対するアクセスがされた場合について説明する。
【0136】
ホストコンピュータ5から、アドレス変換テーブル29を構成するいずれのテーブルにもアドレス変換情報が格納されていないゾーンに対するアクセスがされた場合、マイクロプロセッサ6による制御のもと、現在最も優先順位が低いテーブルに格納された内容(アドレス変換情報)が消去され、代わりに、今アクセスが要求されたゾーンに関わるアドレス変換情報が、新たに当該テーブル上に作成される。最も優先順位が低いテーブルの検索は、優先リンク31を構成するポインタ#0〜#3のうち、データ「NULL」が格納されているポインタを探すことにより行われる。上述のとおり、優先リンク31の内容が図24に示される状態にある場合には、「NULL」が格納されているポインタはポインタ#1であるので、ポインタ#1に対応するテーブルであるテーブル#1の優先順位が最も低いことが検出される。
【0137】
また、あるテーブルの更新の方法は、上述したアドレス変換テーブル29の作成方法と同様であり、アクセスが要求されたゾーンに属する各物理ブロックの先頭ページ(物理ページ#0)の冗長領域26に含まれる仮想ブロックアドレスが次々と読み出され、これによって、更新されるべきテーブル(上記の例では、テーブル#1)上に、アクセスが要求されたゾーンに関わるアドレス変換情報が展開される。
【0138】
このようにして、最も優先順位が低いテーブル#1に格納されたアドレス変換情報が書き換えられると、テーブル#1が、現在アクセスが要求されたゾーンに対応するテーブルである旨を記憶すべく、マイクロプロセッサ6による制御のもと、管理テーブル30の内容が更新される。さらに、マイクロプロセッサ6による制御のもと、優先リンク31によって記憶される優先順位が変更され、いま更新されアクセスされたテーブル#1の優先順位が最も高くなる。
【0139】
図25は、優先リンク31によって、優先順位としてテーブル#1→テーブル#3→テーブル#2→テーブル#0が記憶される場合を示す図である。
【0140】
図25に示されるように、優先順位がテーブル#3→テーブル#2→テーブル#0→テーブル#1の順である状態において、ホストコンピュータ5から、アドレス変換テーブル29を構成するいずれのテーブルにもアドレス変換情報が格納されていないゾーンに対するアクセスがされると、マイクロプロセッサ6による制御のもと、ポインタ#0の内容であるデータが「NULL」に変更され、ポインタ#1の内容であるリンク先ポインタ番号が「3」に変更される。かかる動作は、上述の手順と同じであるので、重複する説明を省略する。
【0141】
これによって、優先順位は、テーブル#1→テーブル#3→テーブル#2→テーブル#0の順となる。最も優先順位の低いテーブルに対応するポインタ#0には、データ「NULL」が格納されている。
【0142】
このようにして、優先リンク31は、アクセス履歴に基づいて各テーブル#0〜#3についての優先順位を定め、これを記憶することができる。
【0143】
次に、SRAMワークエリア8に格納される消去済みブロックキューのデータ構造について説明する。
【0144】
消去済みブロックキューは、アドレス変換テーブル29を構成する各テーブルに対応するキューセットによって構成され、各キューセットには、各スロットに対応する空きブロック情報が格納される。
【0145】
図26は、SRAMワークエリア8に格納される消去済みブロックキュー32のデータ構造の一例を示す概略図である。
【0146】
図26に示される例は、消去済みブロックキュー32のデータ構造の一例であり、キューセット#0〜#7からなる8つのキューセットによって構成され、これらは、それぞれキュー#k−0〜キュー#k−3(kは、キューセット番号)からなる4個のキューによって構成される。例えば、キューセット#0はキュー#0−0〜キュー#0−3によって構成され、キューセット#1はキュー#1−0〜キュー#1−3によって構成される。したがって、消去済みブロックキュー32は、32個のキューによって構成される。
【0147】
ここで、キュー#k−0はスロット#0に対応し、キュー#k−1はスロット#1に対応し、キュー#k−2はスロット#2に対応し、キュー#k−3はスロット#3に対応している。したがって、フラッシュメモリシステム1が「チップタイプモード」で動作する場合、アドレス変換テーブル29と同様、スロット#0〜#nが使用され、その他のスロットは使用されない。例えば、n=2(チップ数=3個)である場合において、フラッシュメモリシステム1が「チップタイプモード」で動作する場合には、スロット#0〜#2が使用され、スロット#3は使用されない。この場合、これらスロット#0〜#2は原則としてそれぞれフラッシュメモリチップ2−0〜2−2(=2−n)に対応する。但し、代替処理が行われている場合にはこの限りではない。一方、フラッシュメモリシステム1が「バンクタイプモード」で動作する場合、原則として、スロット#0〜#3はそれぞれバンク#0〜#3に対応する。但し、代替処理が行われている場合にはこの限りではない。
【0148】
各キューセット#0〜#7を構成するキュー#k−0〜#k−3には、ユーザ領域25を構成する全てのフラッシュメモリセル16が消去状態となっている物理ブロックの物理アドレスが格納される。
【0149】
また、キューセット#0、#1はテーブル#0に対応するキューセットであり、キューセット#2、#3はテーブル#1に対応するキューセットであり、キューセット#4、#5はテーブル#2に対応するキューセットであり、キューセット#6、#7はテーブル#3に対応するキューセットである。
【0150】
消去済みブロックキュー32の生成は、マイクロプロセッサ6による制御のもと、上述したアドレス変換テーブル29の生成の際に行われ、データ書き込みに備えて待機している冗長ブロックの中から、これらキューに登録すべき物理ブロックが選ばれる。例えば、n=2(チップ数=3個)である場合において、フラッシュメモリシステム1が「チップタイプモード」で動作する場合、キュー#k−0〜#k−2に登録される消去済みブロックは、原則として、それぞれフラッシュメモリチップ2−0〜2−2(=2−n)に属する冗長ブロックから選ばれる。但し、代替処理が行われる場合にはこの限りではない。また、フラッシュメモリシステム1が「バンクタイプモード」で動作する場合、キュー#k−0〜#k−3に登録される消去済みブロックは、原則として、それぞれバンク#0〜#3に属する冗長ブロックから選ばれる。但し、代替処理が行われる場合にはこの限りではない。
【0151】
次に、ホストコンピュータ5より供給されるホストアドレスを内部アドレスに変換する方法の詳細について説明する。
【0152】
上述のとおり、本実施態様にかかるフラッシュメモリシステム1においては、かかるアドレス変換が、ホストアドレスに対応する「論理ブロック空間」から「仮想ブロック空間」への変換(第1の変換)、「仮想ブロック空間」から「物理アドレス空間」への変換(第2の変換)、「物理アドレス空間」から内部アドレスに対応する「物理ブロック空間」への変換(第3の変換)の順に行われる。
【0153】
まず、第1の変換について説明する。
【0154】
第1の変換は、ホストアドレスに基づいてアドレス変換テーブル29に含まれるいずれかのセルを特定するステップであり、ROM33に格納されている第1の変換プログラムP1をマイクロプロセッサ6が実行することにより行われる。
【0155】
第1の変換プログラムP1に基づく第1の変換においては、フラッシュメモリシステム1がいずれのモードで動作しているかに関わらず、まず、ホストアドレスが1つのゾーンに含まれる有効ページ数で除算される。かかる除算は整数演算(小数点以下切り捨て)により行われ、その商(A)および剰余(B)が求められる。得られた商(A)は、アクセスすべき物理ページが属するゾーン番号を示す。ここで上記有効ページ数とは、1つのゾーンに含まれる実使用ブロック数と1物理ブロックを構成する物理ページ数との積によって定義される。例えば、n=2(チップ数=3個)である場合において「チップタイプモード」で動作する場合、1つのゾーンに含まれる有効ページ数は96000(10111011100000000B)個(=3チップ×1000ブロック×32ページ)であるから、一例として、ホストアドレスが「01010101010101010101B」であるとすれば、上記除算によって得られる商(A)は3(011B)であり、剰余(B)は61525(1111000001010101B)となる。この場合、アクセスすべき物理ページが属するゾーンは、ゾーン#3となる。
【0156】
ここで、どのテーブルがゾーン#3に対応するテーブルであるのかは、上述のとおり、管理テーブル30に表示されている。本例では、ゾーン番号格納領域#0〜#3のうち、ゾーン番号として「011B(3)」が格納されているゾーン番号格納領域に対応するテーブルがゾーン#3に対応するテーブルとなる。いずれのゾーン番号格納領域#0〜#3にもゾーン番号として「011B(3)」が格納されていない場合には、上述した優先リンク31を参照して最も優先順位の低いテーブルが更新され、これに伴って管理テーブル30の内容が更新される。
【0157】
次に、マイクロプロセッサ6による制御のもと、上記除算によって得られた剰余(B)が1つの仮想ブロックを構成する物理ページ数で除算される。かかる除算も整数演算(小数点以下切り捨て)により行われ、その商(C)により、対応するテーブル内の仮想ブロック表示領域が特定される。例えば、n=2(チップ数=3個)である場合において「チップタイプモード」で動作する場合、1つの仮想ブロックを構成する物理ページ数は96(1100000B)個(=3ブロック×32ページ)であるから、上述のように、得られた剰余(B)が61525(1111000001010101B)であるとすれば、上記除算によって得られる商(C)は640(1010000000B)となる。この場合、選択すべき仮想ブロック表示領域は、仮想ブロック表示領域#640となる。
【0158】
さらに、マイクロプロセッサ6による制御のもと、ホストアドレスが1つの仮想ブロックを構成する物理ページ数で除算され、その剰余(D)が求められる。例えば、n=2(チップ数=3個)である場合において「チップタイプモード」で動作する場合、上述の通り、1つの仮想ブロックを構成する物理ページ数は96(1100000B)個であるから、ホストアドレスが「01010101010101010101B」であるとすれば、上記除算によって得られる剰余(D)は85(1010101B)となる。そして、下記(1)式に示す演算が行われ、得られた値(E)により、アクセスすべき物理ページに対応する仮想ページ番号が特定される。
【0159】
【数3】

Figure 0003999959
尚、(1)式に含まれる除算も整数演算(小数点以下切り捨て)により行われる。したがって、「チップタイプモード」で動作する場合においてn=2(チップ数=3個)であるために、有効セル数が「3」、無効セル数が「1」であれば、上記除算によって得られる仮想ページ番号は113(1110001B)となる。
【0160】
次に、(1)式による演算によって得られた仮想ページ番号の下位2ビットに基づいて、選択された仮想ブロック表示領域内の所定のセルが特定される。例えば、上述のように仮想ブロック表示領域#640が選択された場合において、得られる仮想ページ番号が「113(1110001B)」であれば、選択されるセルは、セル#640−1となる。
【0161】
以上により第1の変換が完了する。上述のとおり、かかる変換は、フラッシュメモリシステム1がいずれのモードで動作しているかに関わらず共通のステップにより行われることから、第1の変換プログラムP1のサイズは小さくてよく、したがって、第1の変換プログラムP1によるROM33の占有量は非常に小さい。
【0162】
次に、第2の変換について説明する。
【0163】
第2の変換は、アドレス変換テーブル29を用いて物理アドレスを取得するステップであり、第1の変換において特定されたセルに格納されている物理アドレスを読み出すことにより行われる。例えば、上述のように第1の変換においてセル#640−1が特定されている場合において、当該セルの内容が「101010101010B(2730)」であれば、第2の変換により得られる物理アドレスは、物理アドレス#2730となる。
【0164】
次に、第3の変換について説明する。
【0165】
第3の変換は、第2の変換により得られた物理アドレス等に基づいて、最終的に内部アドレスを生成するステップであり、フラッシュメモリシステム1が「チップタイプモード」で動作している場合には、ROM33に格納されている第2の変換プログラムP2をマイクロプロセッサ6が実行することにより行われ、フラッシュメモリシステム1が「バンクタイプモード」で動作している場合には、ROM33に格納されている第3の変換プログラムP3をマイクロプロセッサ6が実行することにより行われる。つまり、フラッシュメモリシステム1がどのモードで動作しているかによって、異なる方法で変換が行われる。
【0166】
まず、第2の変換プログラムP2を用いた第3の変換においては(フラッシュメモリシステム1が「チップタイプモード」で動作している場合)、物理アドレスの下位2ビット、上記商A(3ビット)、物理アドレスの上位10ビット及び(1)式による演算によって得られた仮想ページ番号の上位5ビットが、この順に結合されて、内部アドレスが生成される。例えば、上述のように、商A「011B」であり、第2の変換において得られた物理アドレスが「101010101010B」であり、仮想ページ番号の上位5ビットが「11100B」であれば、得られる20ビットの内部アドレスは、「10011101010101011100B」となる。
【0167】
一方、第3の変換プログラムP3を用いた第3の変換においては(フラッシュメモリシステム1が「バンクタイプモード」で動作している場合)、商A(3ビット)、物理アドレス(12ビット)及び仮想ページ番号の上位5ビットがこの順に結合されて、内部アドレスが生成される。上記と同じ例で言えば、得られる20ビットの内部アドレスは、「01110101010101011100B」となる。
【0168】
以下に詳述するが、20ビットの内部アドレスのうち、上位2ビットはアクセスすべきフラッシュメモリチップを特定するために用いられ、上位3ビット目〜上位15ビット目からなる13ビットは、選択されたフラッシュメモリチップ内においてアクセスすべき物理ブロックを特定するために用いられ、下位5ビットは選択された物理ブロック内においてアクセスすべき物理ページを特定するために用いられる。
【0169】
以上により第3の変換が完了する。上述のとおり、かかる変換は、第2の変換プログラムP2を用いる場合及び第3の変換プログラムP3を用いる場合のいずれの場合においても、単純な変換動作によって行われることから、第2及び第3の変換プログラムP2、P3のサイズはいずれも小さくてよく、したがって、第2及び第3の変換プログラムP2、P3によるROM33の占有量も非常に小さい。
【0170】
次に、本実施態様にかかるフラッシュメモリシステム1のデータの読み出し動作及びデータの書き込み動作を、「チップタイプモード」で動作する場合及び「バンクタイプモード」で動作する場合のそれぞれについて説明する。
【0171】
まず、本実施態様にかかるフラッシュメモリシステム1が「チップタイプモード」で動作する場合におけるデータの読み出し動作について説明する。
【0172】
ここでは、n=2(チップ数=3個)である場合において、ホストコンピュータ5より、バス14、コネクタ4及びバス13を介して、外部コマンドの一種である外部読み出しコマンドとともにホストアドレス、例えば「00000111111111100000B」がフラッシュメモリシステム1に供給された場合を例に説明する。
【0173】
まず、ホストアドレス及び外部読み出しコマンドがコントローラ3に供給されると、これらホストアドレス及び外部読み出しコマンドは、ホストインターフェースブロック7が有するタスクファイルレジスタ(図示せず)に一時的に格納される。
【0174】
次に、タスクファイルレジスタ(図示せず)に格納されたホストアドレスが正しいアドレスであるか否か、すなわち、かかるホストアドレスが、本来存在しない物理アドレスや無効なアドレスを示していないか否かが、ホストインターフェースブロック7によって判定される。
【0175】
かかる判定の結果、タスクファイルレジスタ(図示せず)に格納されたホストアドレスが有効なアドレスであると判断されれば、上述した第1〜第3の変換によって、内部アドレスに変換される。一方、これが異常なアドレスであると判断されれば、ホストインターフェースブロック7が有するエラーレジスタ(図示せず)がセットされ、ホストコンピュータは、かかるレジスタの内容を参照することにより、エラーの発生を知ることができる。
【0176】
本例では、ホストアドレスが「00000111111111100000B」であるから、第1の変換において行われる除算によって得られる商Aは「000B(0)」であり、得られる剰余Bは「111111111100000B(32736)」である。したがって、選択されるゾーンはゾーン#0となる。さらに、第1の変換において行われる除算によって得られる商Cは「101010101(341)」となり、選択される仮想ブロック表示領域は、対応するテーブル内の仮想ブロック表示領域#341となる。また、第1の変換において行われる演算によって得られる値Eは「0000000B(0)」であるから、選択されるセルは、セル#341−0となる。ここで、どのテーブルがゾーン#0に対応するテーブルであるのかは、上述のとおり、管理テーブル30に表示されており、本例では、ゾーン番号格納領域#0〜#3のうち、ゾーン番号として「000B(0)」が格納されているゾーン番号格納領域に対応するテーブルがゾーン#0に対応するテーブルとなる。いずれのゾーン番号格納領域#0〜#3にもゾーン番号として「000B(0)」が格納されていない場合には、上述した優先リンク31を参照して、最も優先順位の低いテーブルが更新され、これに伴って管理テーブル30の内容が更新される。
【0177】
また、本例では、かかるセル#341−0の内容が「100100001100B」であるものとする。また、本例はデータの読み出し動作であるから、フラグ#341−0は「1(有効)」となっているはずである。したがって、仮にフラグ#341−0が「0(無効)」である場合には、エラーとなる。
【0178】
また、本例では、フラッシュメモリシステム1が「チップタイプモード」で動作していることから、第3の変換においては第2の変換プログラムP2が用いられ、これにより、内部アドレス「00000100100001100000B」が生成される。
【0179】
以上より、ホストアドレスから内部アドレスへの変換が完了する。
【0180】
一方、ホストインターフェースブロック7が有するタスクファイルレジスタ(図示せず)に外部読み出しコマンドが格納されていることに応答して、マイクロプロセッサ6による制御のもと、フラッシュシーケンサブロック12が有するレジスタ(図示せず)に対する設定がなされる。かかる設定は、次のように行われる。
【0181】
まず、マイクロプロセッサ6による制御のもと、内部コマンドの一種である内部読み出しコマンドがフラッシュシーケンサブロック12内の所定のレジスタ(図示せず)に設定される。さらに、マイクロプロセッサ6による制御のもと、20ビット長の内部アドレスがフラッシュシーケンサブロック12内の所定のレジスタ(図示せず)に設定される。
【0182】
このようにしてフラッシュシーケンサブロック12に含まれる各種レジスタに対する設定が完了すると、フラッシュシーケンサブロック12による一連の読み出し動作が実行される。フラッシュシーケンサブロック12による一連の読み出し動作は、次の通りである。
【0183】
まず、フラッシュシーケンサブロック12は、所定のレジスタに格納された内部アドレスの上位2ビットに基づき、フラッシュメモリチップ2−0〜2−2(=2−n)のうち、アクセスすべきページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック10に指示する。この場合、内部アドレスの上位2ビットは「00B(0)」であるから、アクセスすべきページが属するフラッシュメモリチップは、フラッシュメモリチップ2−0であり、チップ選択信号#0が活性化される。これにより、フラッシュメモリチップ2−0は、データの読み出しが可能な状態となる。一方、チップ選択信号#1〜#2(=n)は、非活性状態が保たれる。
【0184】
次に、フラッシュシーケンサブロック12は、所定のレジスタに格納された内部アドレスの下位18ビット「000100100001100000B」を、所定のレジスタに格納された内部読み出しコマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。バス15に供給された18ビットの内部アドレス及び内部読み出しコマンドは、フラッシュメモリチップ2−0〜2−2(=2−n)に対し共通に供給されるが、上述のとおり、チップ選択信号#0は活性状態となっており、チップ選択信号#1〜#2(=n)は非活性状態となっているので、バス15に供給された内部アドレス及び内部読み出しコマンドは、フラッシュメモリチップ2−0に対してのみ有効となる。
【0185】
これに応答して、フラッシュメモリチップ2−0は、供給された内部アドレスの下位18ビット「000100100001100000B」に対応する物理ページに格納されたデータの読み出しを実行する。ここで、供給された18ビットのアドレス「000100100001100000B」のうち、上位13ビットは物理ブロックを特定し、下位5ビットは当該物理ブロック内の物理ページを特定するために用いられる。この場合、上位13ビットは「0001001000011B(579)」であり、下位5ビットは「00000B(0)」であるから、特定される物理ブロックはブロック#579となり、特定される物理ページは物理ページ#0となる。すなわち、フラッシュメモリチップ2−0は、ブロック#579の物理ページ#0に格納されたデータの読み出しを実行する。かかる読み出し動作においては、ユーザ領域25に格納されたユーザデータのみならず、冗長領域26に格納された各種付加情報も読み出される。
【0186】
尚、図13において説明したように、本実施態様においては、3つの物理ブロックが仮想的に結合されて一つの仮想ブロックが構成されているので、フラッシュメモリチップ2−0に属する物理ブロック#579の物理ページ#0は、仮想ブロック#341の物理ページ#0に対応する。
【0187】
このようにしてフラッシュメモリチップ2−0から読み出されたユーザデータ及び付加情報は、バス15を介してフラッシュメモリインターフェースブロック10に供給される。フラッシュメモリインターフェースブロック10がユーザデータ及び付加情報を受け取ると、フラッシュシーケンサブロック12による制御のもと、付加情報に含まれるエラーコレクションコードが抽出され、ユーザデータ及び抽出されたエラーコレクションコードがECCブロック11に供給される。ユーザデータ及びエラーコレクションコードがECCブロック11に供給されると、ECCブロック11は、エラーコレクションコードに基づき、ユーザデータに誤りがあるか否かを判断し、誤りがないと判断すれば、供給されたユーザデータをそのままバッファ9に格納し、誤りがあると判断すれば、これをエラーコレクションコードに基づいて訂正し、訂正後のユーザデータをバッファ9に格納する。このようにしてバッファ9に誤りのないユーザデータが格納されると、フラッシュシーケンサブロック12による一連の読み出し動作が完了する。
【0188】
そして、バッファ9に格納されたユーザデータは、マイクロプロセッサ6による制御のもと、ホストインターフェースブロック7より、バス13、コネクタ4及びバス14を介してホストコンピュータ5に供給される。
【0189】
以上により、一連の読み出し動作が完了する。
【0190】
尚、以上は、n=2(チップ数=3個)である場合における動作であるが、nの数がこれ以外であっても、第1の変換プログラムP1を用いた演算においていくつかの値が変わるだけで、基本的に同じ動作によって読み出しを行うことができる。すなわち、本実施態様によれば、「チップタイプモード」で動作する場合であっても、フラッシュメモリの搭載数にかかわらずほぼ同じ動作によりデータの読み出しを行うことが可能となる。
【0191】
次に、本実施態様にかかるフラッシュメモリシステム1が「バンクタイプモード」で動作する場合におけるデータの読み出し動作について説明する。
【0192】
フラッシュメモリシステム1が「バンクタイプモード」で動作する場合におけるデータの読み出し動作は、アドレス変換方法が異なる他は、上述した「チップタイプモード」で動作する場合におけるデータの読み出し動作と同様である。
【0193】
すなわち、本例では、フラッシュメモリシステム1が「バンクタイプモード」で動作していることから、有効セル数が4、無効セル数が0であり、このため、上述した例と同じく、ホストアドレスが「00000111111111100000B」であれば、第1の変換において得られる商Cは「0011111111B(255)」となり、値Eは「1100000B(96)」となる。すなわち、選択される仮想ブロック表示領域は仮想ブロック表示領域#255となり、選択されるセルはセル#255−0となる。また、第3の変換においては第3の変換プログラムP3が用いられ、これにより、対応するセル#255−0の内容が「100100001100B」である場合には、内部アドレス「00010010000110011000B」が生成される。
【0194】
これにより、特定される物理ブロックはフラッシュメモリチップ2−0内の物理ブロック#2316となり、特定される物理ページは物理ページ#24となる。すなわち、フラッシュメモリチップ2−0は、物理ブロック#2316の物理ページ#24に格納されたデータの読み出しを実行する。この場合、フラッシュメモリチップ2−0に属する物理ブロック#2316の物理ページ#24は、仮想ブロック#255の仮想ページ#96に対応する。
【0195】
次に、n=2(チップ数=3個)である場合において、本実施態様にかかるフラッシュメモリシステム1が「チップタイプモード」で動作する場合におけるデータの書き込み動作について説明する。
【0196】
データ書き込み動作においては、アクセス対象となる仮想ブロックが存在しない場合(新規にデータを書き込む場合)とアクセス対象となる仮想ブロックがすでに存在する場合(データを上書きする場合)において動作が異なる。したがって、それぞれの場合について説明する。
【0197】
書き込み動作1(空きブロックにデータを書き込む場合(「チップタイプモード」で動作する場合))
空きブロックにデータを書き込む場合、すなわち新規データの書き込み動作においては、仮想ブロックの生成、生成された仮想ブロックの仮想ページ#0〜#2に対する冗長データの書き込み、生成された仮想ブロックの所定の仮想ページに対するユーザデータの書き込みが実行される。
【0198】
ここでは、ホストコンピュータ5より、バス14、コネクタ4及びバス13を介して、外部コマンドの一種である外部書き込みコマンドと、対応する仮想ブロックにデータが割り当てられていない連続した複数のホストアドレス、例えば「00010101010101000100B」〜「00010101010101000110B」と、これら各アドレスに書き込むべきデータとがフラッシュメモリシステム1に供給された場合を例に説明する。ここでは、これら連続するホストアドレスを、ホストアドレス#0〜#2と呼ぶ。
【0199】
まず、ホストアドレス#0〜#2及び外部書き込みコマンドがコントローラ3に供給されると、これらホストアドレス#0〜#2及び外部書き込みコマンドは、ホストインターフェースブロック7が有するタスクファイルレジスタ(図示せず)に一時的に格納される。さらに、ホストアドレス#0〜#2にそれぞれ対応する書き込みデータがコントローラ3に供給されると、マイクロプロセッサ6による制御のもと、これらデータがECCブロック11に送出される。これらデータの供給を受けたECCブロック11は、これらデータを解析してエラーコレクションコードを生成し、これを一時的に保持する。
【0200】
次に、タスクファイルレジスタ(図示せず)に格納されたホストアドレス#0〜#2が正しいアドレスであるか否か、すなわち、かかるホストアドレス#0〜#2が、本来存在しない物理アドレスや無効なアドレスを示していないか否かが、ホストインターフェースブロック7によって判定される。
【0201】
かかる判定の結果、タスクファイルレジスタ(図示せず)に格納されたホストアドレス#0〜#2が有効なアドレスであると判断されれば、上述した第1〜第3の変換によって、内部アドレスに変換される。一方、これが異常なアドレスであると判断されれば、ホストインターフェースブロック7が有するエラーレジスタ(図示せず)がセットされ、ホストコンピュータは、かかるレジスタの内容を参照することにより、エラーの発生を知ることができる。
【0202】
本例では、ホストアドレス#0〜#2が「00010101010101000100B」〜「00010101010101000110B」であるから、第1の変換において行われる除算によって得られる商A「000B(0)」であり、得られる剰余Bは「10101010101000100B(87364)」〜「10101010101000110B(87366)」である。したがって、選択されるゾーンはゾーン#0となる。さらに、第1の変換において行われる除算によって得られる商Cは「1110001110B(910)」となり、選択される仮想ブロック表示領域は、対応するテーブル内の仮想ブロック表示領域#910となる。どのテーブルがゾーン#0に対応するテーブルであるのかは、上述のとおり、管理テーブル30に表示されている。また、第1の変換において行われる演算によって得られる値Eは、ホストアドレス#0〜#2に対してそれぞれ「0000101B(5)」、「0000110B(6)」、「0001000B(8)」であるから、選択されるセルは、セル#910−0〜セル#910−2となる。このように、第1の変換においては存在しないセル#j−3が選択されることはない。
【0203】
しかしながら、本例は、新規データの書き込み動作、すなわち対応する仮想ブロックに現在データが割り当てられていないホストアドレスに対して新しくデータを割り当てる動作であるので、対応する仮想ブロック表示領域#910内の各フラグ#910−0〜#910−3はいずれも「0(無効)」を示しているはずである。このため、このまま第2の変換を行うことはできず、以下に説明する新たな仮想ブロックの割り当てが行われる。尚、これらフラグ#910−0〜#910−3が「1(有効)」となっている場合は、当該書き込み処理は「データの上書き処理」であり、その動作については後述する。
【0204】
新たな仮想ブロックの割り当ては、次のように行われる。まず、マイクロプロセッサ6による制御のもと、消去済みブロックキュー32を構成するキューセット#0〜#7のうち、ゾーン#0に対応するテーブル(例えば、テーブル#0)に対応するキューセット、例えば、キューセット#0が選択され、かかるキューセット#0を構成する各キュー#0−0〜#0−2に格納された内容が読み出される。上述のとおり、各キューに格納されているのは、消去済みブロックの物理アドレスである。本例では、これらキュー#0−0〜#0−2の内容がそれぞれ「000000111100B(60)」、「110000110001B(3121)」「101111110010B(3058)」であるものとする。
【0205】
キュー#0−0〜#0−2に格納された内容が読み出されると、これらが仮想ブロック表示領域#910のセル#910−0〜セル#910−2にそれぞれ格納され、対応する各フラグ#910−0〜#910−2が全て「1(有効)」に書き換えられる。これにより、仮想ブロックの生成が完了する。
【0206】
また、本例では、フラッシュメモリシステム1が「チップタイプモード」で動作していることから、第3の変換においては第2の変換プログラムP2が用いられ、これにより、ホストアドレス#0〜#2にそれぞれ対応する内部アドレス#0〜#2が生成される。本例においては、内部アドレス#0〜#2はそれぞれ「01000110000110000001B」、「10000101111110000001B」及び「00000000000111100010B」となる。
【0207】
以上より、ホストアドレス#0〜#2から内部アドレス#0〜#2への変換が完了する。上述のとおり、内部アドレスの上位2ビットは、アクセスすべきフラッシュメモリチップの番号を示し、内部アドレスの上位3ビット目〜上位15ビット目は、アクセスすべき物理ブロックアドレスを示し、内部アドレスの下位5ビットは、アクセスすべき物理ページを示している。したがって、内部アドレス#0によって特定される物理ページは、フラッシュメモリチップ2−1の物理ブロック#780の物理ページ#1となり、内部アドレス#1によって特定される物理ページは、フラッシュメモリチップ2−2の物理ブロック#764の物理ページ#1となり、内部アドレス#2によって特定される物理ページは、フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#2となる。
【0208】
さらに、ホストインターフェースブロック7が有するタスクファイルレジスタ(図示せず)に外部書き込みコマンドが格納されていることに応答して、マイクロプロセッサ6による制御のもと、フラッシュシーケンサブロック12が有するレジスタ(図示せず)に対する設定がなされる。かかる設定は、次のように行われる。
【0209】
まず、マイクロプロセッサ6による制御のもと、内部コマンドの一種であるデータ転送コマンド及び内部書き込みコマンドがフラッシュシーケンサブロック12内の所定のレジスタ(図示せず)に設定される。さらに、マイクロプロセッサ6による制御のもと、上記生成された4つの内部アドレス#0〜#2がフラッシュシーケンサブロック12内の所定のレジスタ(図示せず)に設定される。
【0210】
このようにしてフラッシュシーケンサブロック12に含まれる各種レジスタ(図示せず)に対する設定が完了すると、フラッシュシーケンサブロック12による一連の書き込み動作が実行される。本例においては、フラッシュシーケンサブロック12による一連の書き込み動作は、仮想ブロック#910の仮想ページ#0〜#2に対する各種冗長データの書き込み、並びに、仮想ブロック#910の仮想ページ#5、#6、#8に対するユーザデータ及び各種冗長データの書き込みの順に実行される。
【0211】
図27は、「チップタイプモード」における一連の書き込み動作を概略的に示すタイミング図である。
【0212】
まず、フラッシュシーケンサブロック12は、仮想ブロック#910の仮想ページ#0に対応する内部アドレス#3を生成する。ここで、仮想ブロック#910の仮想ページ#0に対応する内部アドレス#3とは、フラッシュメモリチップ2−0内の物理ブロック#15の物理ページ#0に対応し、その値は、「00000000000111100000B」である。
【0213】
次に、このようにして生成された内部アドレス#3の上位2ビットに基づいて、フラッシュメモリチップ2−0〜2−2(=2−n)のうち、アクセスすべきページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック10に指示する。この場合、内部アドレス#3の上位2ビットは「00B(0)」であるから、チップ選択信号#0が活性化される。これにより、フラッシュメモリチップ2−0は、データの書き込みが可能な状態となる。一方、チップ選択信号#1、#2は、非活性状態が保たれる。
【0214】
次に、フラッシュシーケンサブロック12は、上記内部アドレス#3の下位18ビット「000000000111100000B」を、所定のレジスタ(図示せず)に格納されたデータ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。バス15に供給された内部アドレス#3の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−0〜2−2(=2−n)に対し共通に供給されるが、上述のとおり、チップ選択信号#0が活性状態となっており、チップ選択信号#1、#2は非活性状態となっているので、バス15に供給された内部アドレス#3の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−0に対してのみ有効となる(転送先指定)。
【0215】
これにより、フラッシュメモリチップ2−0は、供給された内部アドレス#5の下位18ビット「000000000111100000B」に対応するページに書き込まれるべきデータの受け付けが許可された状態となる。
【0216】
次に、仮想ブロック#910の仮想ページ#0に書き込むべきデータが、フラッシュシーケンサブロック12により、フラッシュメモリインターフェースブロック10を介して、バス15に供給される。ここで、仮想ブロック#910の仮想ページ#0とは、フラッシュメモリチップ2−0内の物理ブロック#15の物理ページ#0に対応し、ここに書き込むべきデータとは、仮想ブロックアドレス、セル番号及びその他の付加情報であり、これらはいずれも冗長領域26に書き込まれるデータである。この場合、仮想ブロックアドレスは「1110001110B(910)」であり、セル番号は「00B(0)」である。フラッシュメモリチップ2−0内の物理ブロック#15の物理ページ#0のその他の部分、すなわち、ユーザ領域25の全部分、冗長領域26のうちエラーコレクションコード格納領域27等には何らのデータも書き込まれない。但し、各ページに対するデータの書き込みは、ページ単位で一括して行われるため、実際には、上記データを書き込まない部分については、書き込み処理が実行されないのではなく、「オール1」からなる書き込みデータが書き込まれることになる。
【0217】
バス15に供給された仮想ブロックアドレス、セル番号及び冗長領域26に格納されるその他の付加情報も、やはりフラッシュメモリチップ2−0〜2−2(=2−n)に対し共通に供給されるが、上述のとおり、チップ選択信号#0が活性状態となっているため、フラッシュメモリチップ2−0に対してのみ有効となる(データ転送)。
【0218】
このようにして、書き込みデータの受け付けが許可された状態にあるフラッシュメモリチップ2−0に対して仮想ブロックアドレスやセル番号等の付加情報が転送されると、かかる付加情報は、フラッシュメモリチップ2−0内に備えられたレジスタ(図示せず)に一時的に格納される。
【0219】
次に、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部書き込みコマンドを、フラッシュメモリチップ2−0に対して発行する(書き込み命令)。
【0220】
これに応答して、フラッシュメモリチップ2−0は、所定のレジスタに格納されている上記付加情報を、転送先指定処理によって指定されたアドレスに書き込む(フラッシュプログラミング)。すなわち、レジスタに格納されている付加情報が、内部アドレス#3の下位18ビット「000000000111100000B」により特定されるページ、つまり、フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#0に書き込まれる。フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#0は、仮想ブロック#910の仮想ページ#0に対応する。
【0221】
フラッシュメモリチップ2−0がフラッシュプログラミングを実行している間、フラッシュシーケンサブロック12は、仮想ブロック#910の仮想ページ#1に対応する内部アドレス#4を生成し、当該内部アドレスにより示される物理ページに、仮想ページ#0に書き込んだ情報と同じ情報を書き込む。ここで、仮想ブロック#910の仮想ページ#1に対応する内部アドレス#4とは、フラッシュメモリチップ2−1内の物理ブロック#780の物理ページ#0に対応し、その値は、「01000110000110000000B」である。
【0222】
このような書き込み動作が、内部アドレス#5を用いて仮想ブロック#682の仮想ページ#2に対しても行われ、これにより、仮想ブロック#910の仮想ページ#0〜仮想ページ#2の冗長領域26には、いずれも同じ情報が書き込まれる。ここで、仮想ブロック#910の仮想ページ#2とは、フラッシュメモリチップ2−2の物理ブロック#764の物理ページ#0に対応する。
【0223】
このようにして、仮想ブロック#910の仮想ページ#0〜#2に対する一連の書き込み処理が完了すると、次に、仮想ブロック#910の仮想ページ#5、#6、#8に対するユーザデータ及び各種冗長データの書き込みが実行される。
【0224】
フラッシュシーケンサブロック12による仮想ブロック#910の仮想ページ#5、#6、#8に対する一連の書き込み動作も、図27に示されるタイミングで実行される。以下、仮想ブロック#910の仮想ページ#5、#6、#8に対する一連の書き込み動作について詳細に説明する。
【0225】
まず、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部アドレスのうち、内部アドレス#0を選択し、当該内部アドレス#0の上位2ビットに基づいて、フラッシュメモリチップ2−0〜2−3のうち、アクセスすべきページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック10に指示する。この場合、内部アドレス#0の上位2ビットは「01B(1)」であるから、アクセスすべきページが属するフラッシュメモリチップは、フラッシュメモリチップ2−1であり、チップ選択信号#1が活性化される。これにより、フラッシュメモリチップ2−1は、データの書き込みが可能な状態となる。一方、チップ選択信号#0、#2は、非活性状態が保たれる。
【0226】
次に、フラッシュシーケンサブロック12は、内部アドレス#0の下位18ビット「000110000110000001B」を、所定のレジスタ(図示せず)に格納されたデータ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。バス15に供給された内部アドレス#0の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−0〜2−2(=2−n)に対し共通に供給されるが、上述のとおり、チップ選択信号#1が活性状態となっており、チップ選択信号#0、#2は非活性状態となっているので、バス15に供給された内部アドレス#0の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−1に対してのみ有効となる(転送先指定)。
【0227】
これにより、フラッシュメモリチップ2−1は、供給された内部アドレス#0の下位18ビット「000110000110000001B」に対応するページに書き込まれるべきデータの受け付けが許可された状態となる。
【0228】
次に、バッファ9に格納されている書き込みデータのうち、ホストアドレス#0に対応するデータ及び対応するエラーコレクションコード等の冗長領域26に格納すべき付加情報が、フラッシュシーケンサブロック12により、フラッシュメモリインターフェースブロック10を介して、バス15に供給される。ここで、冗長領域26に格納すべき付加情報のうち、仮想ブロックアドレス及びセル番号については、仮想ページ#0〜#2に格納された内容と同じである。バス15に供給されたデータ及びエラーコレクションコード等の付加情報も、やはりフラッシュメモリチップ2−0〜2−2(=2−n)に対し共通に供給されるが、上述のとおり、チップ選択信号#1が活性状態となっているため、フラッシュメモリチップ2−1に対してのみ有効となる(データ転送)。
【0229】
このようにして、書き込みデータの受け付けが許可された状態にあるフラッシュメモリチップ2−1に対して書き込みデータ及びエラーコレクションコード等の付加情報が転送されると、かかる書き込みデータ及びエラーコレクションコードは、フラッシュメモリチップ2−1内に備えられたレジスタ(図示せず)に一時的に格納される。
【0230】
次に、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部書き込みコマンドを、フラッシュメモリチップ2−1に対して発行する(書き込み命令)。
【0231】
これに応答して、フラッシュメモリチップ2−1は、所定のレジスタに格納されているデータ及びエラーコレクションコード等の付加情報を、転送先指定処理によって指定されたアドレスに書き込む(フラッシュプログラミング)。すなわち、レジスタに格納されているデータ及びエラーコレクションコード等の付加情報が、内部アドレス#0の下位18ビット「000110000110000001B」により特定されるページ、つまり、フラッシュメモリチップ2−1の物理ブロック#780の物理ページ#1に書き込まれる。フラッシュメモリチップ2−1の物理ブロック#780の物理ページ#1は、仮想ブロック#910の仮想ページ#5に対応する。
【0232】
フラッシュメモリチップ2−1がフラッシュプログラミングを実行している間、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部アドレスのうち、内部アドレス#1を選択し、当該内部アドレス#1の上位2ビットに基づいて、チップ選択信号#2を活性化させる。これにより、フラッシュメモリチップ2−2は、データの書き込みが可能な状態となる。
【0233】
次に、フラッシュシーケンサブロック12は、内部アドレス#1の下位18ビット「000101111110000001B」を、所定のレジスタ(図示せず)に格納されたデータ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。この場合、上述のとおり、チップ選択信号#2が活性状態となっているので、バス15に供給された内部アドレス#2の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−2に対してのみ有効となる(転送先指定)。
【0234】
その後、上述のとおり、フラッシュメモリチップ2−2に対してデータ転送、及び書き込み命令の発行が行われ、ホストアドレス#1に対応するデータ及び対応するエラーコレクションコード等の付加情報が、内部アドレス#1により特定されるページに書き込まれる。この場合、内部アドレス#1の下位18ビットは「000101111110000001B」であるから、ホストアドレス#1に対応するデータ及び対応するエラーコレクションコード等の付加情報は、フラッシュメモリチップ2−2の物理ブロック#764の物理ページ#1に書き込まれる。フラッシュメモリチップ2−2の物理ブロック#764の物理ページ#1は、仮想ブロック#910の仮想ページ#6に対応する。
【0235】
このようなデータ書き込み動作が、内部アドレス#2に対しても実行され、これにより、ホストアドレス#2に対応するデータ及び対応するエラーコレクションコード等の付加情報も、内部アドレス#2により特定されるページへ書き込まれる。この場合、内部アドレス#2の下位18ビットは「000000000111100010B」であるから、ホストアドレス#2に対応するデータ及び対応するエラーコレクションコード等の付加情報は、フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#2に書き込まれる。
【0236】
ここで、フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#2は、仮想ブロック#910の仮想ページ#8に対応する。
【0237】
また、マイクロプロセッサ6は、上述のデータ書き込みによって、消去済みブロックキュー32のキューセット#0に格納された物理ブロックアドレスが、消去済みブロックの物理ブロックアドレスではなくなったことに応答して、新たな消去済みブロックを冗長ブロックの中から選択し、選択された消去済みブロックの物理アドレスを新たにキュー#0−0〜#0−2に格納する。
【0238】
このようにして、フラッシュシーケンサブロック12による一連の書き込み動作が完了する。
【0239】
かかる一連の書き込み動作においては、連続するホストアドレス#0〜#2に対応するデータが、それぞれ異なるフラッシュメモリチップ2−0〜2−2に属する異なる物理ブロック内に書き込まれた点が重要である。これら3つの物理ブロックは、上述のとおり一つの仮想ブロック#910を構成し、連続するホストアドレス#0〜#2に対応するデータは、当該仮想ブロック#910内の仮想ページ#5、#6、#8に書き込まれたことになる。これら仮想ページ#5、#6、#8は、ダミーセルにより割り当てられる仮想ページ#7をスキップして、連続していることが分かる。
【0240】
尚、以上は、n=2(チップ数=3個)である場合における動作であるが、nの数がこれ以外であっても、第1の変換プログラムP1を用いた演算においていくつかの値が変わるだけで、基本的に同じ動作によって読み出しを行うことができる。すなわち、本実施態様によれば、「チップタイプモード」で動作する場合であっても、フラッシュメモリの搭載数にかかわらずほぼ同じ動作によりデータの読み出しを行うことが可能となる。
【0241】
また、上記の例では、各物理ブロックの先頭ページである仮想ページ#0〜#2以外のページ(仮想ページ#5、#6、#8)にも、仮想ブロックアドレスやセル番号を書き込んでいるが、これを省略しても構わない。
【0242】
また、上記の例では、キュー#0−0〜#0−2に格納されていた物理アドレスの下位2ビットがそれぞれ「00(0)」〜「01B(2)」であったことから、連続するホストアドレス#0〜#2に対応するデータが書き込まれるべき物理ブロックがそれぞれ異なるフラッシュメモリチップ2−1、2−2、2−0に属していたが、代替処理が行われている場合には、下位2ビットが同じである物理アドレスがこれらキューに格納されていることがあり、この場合には、あるホストアドレスに対応するデータが書き込まれるべき物理ブロックと、他のホストアドレスに対応するデータが書き込まれるべき物理ブロックが、互いに同じフラッシュメモリチップに属することになる。
【0243】
書き込み動作2(空きブロックにデータを書き込む場合(「バンクタイプモード」で動作する場合))
フラッシュメモリシステム1が「バンクタイプモード」で動作する場合における空きブロックへのデータの書き込み動作においても、仮想ブロックの生成、生成された仮想ブロックの仮想ページ#0〜#3に対する冗長データの書き込み、生成された仮想ブロックの所定の仮想ページに対するユーザデータの書き込みが実行される。
【0244】
本例においては、ホストコンピュータ5より、バス14、コネクタ4及びバス13を介して、外部コマンドの一種である外部書き込みコマンドと、対応する仮想ブロックにデータが割り当てられていない連続した複数のホストアドレス#0〜#3、例えば「00010101010101000100B」〜「00010101010101000111B」と、これら各アドレスに書き込むべきデータとがフラッシュメモリシステム1に供給された場合を例に説明する。
【0245】
ホストアドレス#0〜#3及び外部書き込みコマンドがコントローラ3に供給された場合のコントローラ3の基本的な動作は、フラッシュメモリシステム1が「チップタイプモード」で動作している場合と同様であり、重複する部分の説明は省略する。
【0246】
本例では、フラッシュメモリシステム1が「バンクタイプモード」で動作していることから、有効セル数が4、無効セル数が0であり、第1の変換において得られる商Cは「1010101010B(682)」となり、値Eは、ホストアドレス#0〜#3に対してそれぞれ「1000100B(68)」、「1000101B(69)」、「1000110B(70)」、「1000111(71)」となる。すなわち、選択される仮想ブロック表示領域は仮想ブロック表示領域#682となり、選択されるセルはセル#682−0〜#682−3となる。
【0247】
本例においても、対応する仮想ブロック表示領域#682内の各フラグ#682−0〜#682−3はいずれも「0(無効)」を示しているはずであり、このため、新たな仮想ブロックの割り当てが行われる。
【0248】
新たな仮想ブロックの割り当ての方法は、フラッシュメモリシステム1が「チップタイプモード」で動作している場合と同様であり、消去済みブロックキュー32を構成するキューセット#0〜#7のうち、ゾーン#0に対応するテーブル(例えば、テーブル#0)に対応するキューセット、例えば、キューセット#0が選択され、かかるキューセット#0を構成する各キュー#0−0〜#0−3に格納された内容が読み出される。本例においては、これらキュー#0−0〜#0−3の内容がそれぞれ「000000111100B(60)」、「110000110001B(3121)」、「101111110010B(3058)」、「000100000011B(259)」であるものとする。キュー#0−0〜#0−3に格納された内容が読み出されると、これらが仮想ブロック表示領域#682のセル#682−0〜セル#682−3にそれぞれ格納され、対応する各フラグ#682−0〜#682−3が全て「1(有効)」に書き換えられる。これにより、仮想ブロックの生成が完了する。
【0249】
また、本例では、フラッシュメモリシステム1が「バンクタイプモード」で動作していることから、第3の変換においては第3の変換プログラムP3が用いられ、これにより、ホストアドレス#0〜#3にそれぞれ対応する内部アドレス#0〜#3が生成される。本例においては、内部アドレス#0〜#3はそれぞれ「00000000011110010001B」、「00011000011000110001B」、「00010111111001010001B」及び「00000010000001110001B」となる。
【0250】
これにより、内部アドレス#0により特定される物理ページはフラッシュメモリチップ2−0の物理ブロック#60の物理ページ17となり、内部アドレス#1により特定される物理ページはフラッシュメモリチップ2−0の物理ブロック#3121の物理ページ17となり、内部アドレス#2により特定される物理ページはフラッシュメモリチップ2−0の物理ブロック#3058の物理ページ17となり、内部アドレス#3により特定される物理ページはフラッシュメモリチップ2−0の物理ブロック#259の物理ページ17となる。
【0251】
その後、フラッシュシーケンサブロック12が有するレジスタ(図示せず)への設定が完了すると、フラッシュシーケンサブロック12による一連の書き込み動作が実行される。
【0252】
図28は、「バンクタイプモード」における一連の書き込み動作を概略的に示すタイミング図である。
【0253】
まず、フラッシュシーケンサブロック12は、仮想ブロック#682の仮想ページ#0に対応する内部アドレス#4を生成する。ここで、仮想ブロック#682の仮想ページ#0に対応する内部アドレス#4とは、フラッシュメモリチップ2−0内の物理ブロック#60の物理ページ#0に対応し、その値は、「00000000011110000000B」である。
【0254】
次に、このようにして生成された内部アドレス#4の上位2ビットに基づいて、フラッシュメモリチップ2−0〜2−2(=2−n)のうち、アクセスすべきページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック10に指示する。この場合、内部アドレス#4の上位2ビットは「00B(0)」であるから、チップ選択信号#0が活性化される。これにより、フラッシュメモリチップ2−0は、データの書き込みが可能な状態となる。一方、チップ選択信号#1、#2は、非活性状態が保たれる。
【0255】
次に、フラッシュシーケンサブロック12は、上記内部アドレス#4の下位18ビット「000000011110000000B」を、所定のレジスタ(図示せず)に格納されたデータ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。バス15に供給された内部アドレス#4の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−0〜2−2(=2−n)に対し共通に供給されるが、上述のとおり、チップ選択信号#0は活性状態となっており、チップ選択信号#1、#2は非活性状態となっているので、バス15に供給された内部アドレス#4の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−0に対してのみ有効となる。このとき、内部アドレスの上位14ビット目及び上位15ビット目からなる2ビットである「00B(0)」に基づき、フラッシュメモリチップ2−0に設けられたレジスタ#0が活性化される(転送先指定)。
【0256】
これにより、フラッシュメモリチップ2−0は、供給された内部アドレス#4の下位18ビット「000000011110000000B」に対応するページに書き込まれるべきデータのレジスタ#0への受け入れが許可された状態となる。
【0257】
次に、仮想ブロック#682の仮想ページ#0に書き込むべきデータが、フラッシュシーケンサブロック12により、フラッシュメモリインターフェースブロック10を介して、バス15に供給される。ここで、仮想ブロック#682の仮想ページ#0とは、フラッシュメモリチップ2−0内の物理ブロック#60の物理ページ#0に対応し、ここに書き込むべきデータとは、仮想ブロックアドレス、セル番号及びその他の付加情報であり、これらはいずれも冗長領域26に書き込まれるデータである。この場合、仮想ブロックアドレスは「1010101010B(682)」であり、セル番号は「00B(0)」である。この場合、フラッシュメモリチップ2−0に設けられたレジスタ#0が活性化されているため、バス15に供給されたこれら仮想ブロックアドレス、セル番号及びその他の付加情報は、フラッシュメモリチップ2−0内のレジスタ#0に格納される(データ転送)。
【0258】
このような、転送先指定処理及びデータ転送処理が、仮想ブロック#682の仮想ページ#1〜#3に対しても行われ、これにより、フラッシュメモリチップ2−0内に備えられたレジスタ#0〜#3への仮想ブロックアドレス、セル番号及びその他の付加情報の一時的な格納が完了する。ここで、仮想ブロック#682の仮想ページ#1〜#3は、フラッシュメモリチップ2−0の物理ブロック#3121の物理ページ#0、フラッシュメモリチップ2−0の物理ブロック#3058の物理ページ#0、フラッシュメモリチップ2−0の物理ブロック#259の物理ページ#0にそれぞれ対応し、レジスタ#1〜#3に格納される仮想ブロックアドレス、セル番号及びその他の付加情報は、レジスタ#0に格納したこれらと同じ内容である。
【0259】
次に、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部書き込みコマンドを、フラッシュメモリチップ2−0に対して発行する(書き込み命令)。
【0260】
これに応答して、フラッシュメモリチップ2−0は、レジスタ#0〜#3に格納されているデータ及びエラーコレクションコード等の付加情報を、転送先指定処理によって指定されたアドレスに一斉に書き込む(フラッシュプログラミング)。
【0261】
このようにして、仮想ブロック#682の仮想ページ#0〜#3に対する一連の書き込み処理が完了すると、次に、仮想ブロック#682の仮想ページ#68〜#71に対するユーザデータ及び各種冗長データの書き込みが実行される。
【0262】
フラッシュシーケンサブロック12による仮想ブロック#682の仮想ページ#68〜#71に対する一連の書き込み動作も、図28に示されるタイミングで実行され、書き込まれるデータに、ホストアドレス#0〜#3に対応するユーザデータが追加される他、上述した仮想ブロック#682の仮想ページ#0〜#3に対する一連の書き込み動作と同様の動作が行われる。このようにして、フラッシュシーケンサブロック12による一連の書き込み動作が完了する。
【0263】
かかる一連の書き込み動作においては、連続するホストアドレス#0〜#3に対応するデータが、それぞれ異なるバンク#0〜#3に属する異なる物理ブロック内に書き込まれた点が重要である。これら4つの物理ブロックは、上述のとおり一つの仮想ブロック#682を構成し、連続するホストアドレス#0〜#3に対応するデータは、当該仮想ブロック#682内の連続する仮想ページ#68〜#71に書き込まれたことになる。
【0264】
また、上記の例では、各物理ブロックの先頭ページである仮想ページ#0〜#3以外のページ(仮想ページ#68〜#71)にも、仮想ブロックアドレスやセル番号を書き込んでいるが、これを省略しても構わない。
【0265】
また、上記の例では、キュー#0−0〜#0−3に格納されていた物理アドレスの下位2ビットがそれぞれ「00(0)」〜「11B(3)」であったことから、連続するホストアドレス#0〜#3に対応するデータが書き込まれるべき物理ブロックがそれぞれ異なるバンク#0〜#3に属していたが、代替処理が行われている場合には、下位2ビットが同じである物理アドレスがこれらキューに格納されていることがあり、この場合には、あるホストアドレスに対応するデータが書き込まれるべき物理ブロックと、他のホストアドレスに対応するデータが書き込まれるべき物理ブロックが、互いに同じバンクに属することになる。したがって、この場合、フラッシュプログラミングを2回に分けて実行する必要がある。
【0266】
書き込み動作3(仮想ブロックにデータを上書きする場合(「チップタイプモード」で動作する場合))
すでにデータの格納されている仮想ブロック(使用済みブロック)にデータを追加して書き込む場合、「ブロック間転送」が行われる。
【0267】
ここで、ブロック間転送について説明する。
【0268】
上述のとおり、フラッシュメモリチップ2−0〜2−nを構成するフラッシュメモリセル16は、これをメモリセル単位にて消去状態から書込状態へ変化させることはできる一方、これを書込状態から消去状態へ変化させることは、メモリセル単位で行うことができず、ブロック単位でしか行うことができない。このため、ある物理ページにデータを書き込む際には、その物理ページのユーザ領域25及び冗長領域26を構成する全てのフラッシュメモリセル16が消去状態となっている必要があり、既に何らかのデータが書き込まれている物理ページ、すなわち、その物理ページのユーザ領域25を構成するフラッシュメモリセル16が一つでも書込状態となっているページに、これと異なるデータを直接上書きすることはできない。したがって、既にデータの書き込まれた物理ページに対し、これと異なる新しいデータを書き込むためには、一旦、この物理ページが属する物理ブロックを構成するフラッシュメモリセル16を全て消去状態とし、その後に新しいデータを書き込むという処理が必要となる。
【0269】
したがって、ある物理ページに格納された古いデータに新しいデータを上書きしようとする場合、この物理ページが属する物理ブロックに含まれる他の物理ページに格納されたデータが消失するのを防ぐためには、当該他の物理ページに格納されたデータを、他の物理ブロックに移動させるという処理が必要となるのである。
【0270】
このような上書き処理に伴うデータの移動が「ブロック間転送」と呼ばれる。尚、本明細書においては、転送元の物理ブロックの物理ブロックアドレスを「転送元ブロックアドレス」、転送先の物理ブロックの物理ブロックアドレスを「転送先ブロックアドレス」と呼ぶ。
【0271】
以下、n=2(チップ数=3個)である場合において、フラッシュメモリシステム1が「チップタイプモード」で動作する場合におけるデータの上書き動作について説明する。
【0272】
ここでは、上述した書き込み動作1が完了した直後の状態において、ホストコンピュータ5より、バス14、コネクタ4及びバス13を介して、外部コマンドの一種である外部書き込みコマンドと、3つのホストアドレス「00010101010101001111B」(ホストアドレス#0)、「00010101010101010000B」(ホストアドレス#1)、「00010101010101010001B」(ホストアドレス#2)と、これらホストアドレスにそれぞれ書き込むべきデータとがフラッシュメモリシステム1に供給された場合を例に説明する。尚、これらホストアドレスは、それぞれ仮想ブロック#910の仮想ページ#20〜#22に対応する。
【0273】
ホストアドレス#0〜#2及び外部書き込みコマンドがコントローラ3に供給されると、これらホストアドレス#0〜#2及び外部書き込みコマンドは、ホストインターフェースブロック7が有するタスクファイルレジスタ(図示せず)に一時的に格納される。さらに、ホストアドレス#0〜#2にそれぞれ対応する書き込みデータがコントローラ3に供給されると、マイクロプロセッサ6による制御のもと、これらデータがECCブロック11に送出される。これらデータの供給を受けたECCブロック11は、これらデータを解析してエラーコレクションコードを生成し、これを一時的に保持する。
【0274】
次に、アドレス変換テーブル31を用いた転送元ブロックアドレス及び転送先ブロックアドレスの生成が行われる。
【0275】
本例では、ホストアドレス#0〜#2が「00010101010101001111B」〜「00010101010101010001B」であるから、第1の変換において行われる除算によって得られる商A「000B(0)」であり、得られる剰余Bは「10101010101001111B(87375)」〜「10101010101010001B(87377)」である。したがって、選択されるゾーンはゾーン#0となる。さらに、第1の変換において行われる除算によって得られる商Cは「1110001110B(910)」となり、選択される仮想ブロック表示領域は、対応するテーブル内の仮想ブロック表示領域#910となる。どのテーブルがゾーン#0に対応するテーブルであるのかは、上述のとおり、管理テーブル30に表示されている。また、第1の変換において行われる演算によって得られる値Eは、ホストアドレス#0〜#2に対してそれぞれ「0010100B(20)」、「0010101B(21)」、「0010110B(22)」であるから、選択されるセルは、セル#910−0〜セル#910−2となる。このように、第1の変換においては存在しないセル#j−3が選択されることはない。
【0276】
次に、マイクロプロセッサ6による制御のもと、SRAMワークエリア8に格納されているアドレス変換テーブル29の対応するテーブルから仮想ブロック表示領域#910が選択され、セル#910−0〜#910−2の内容が読み出される。上述のとおり、仮想ブロック#910には書き込み動作1においてすでにデータが割り当てられているので、対応する各フラグ#910−0〜#910−2はいずれも「1」を示しているはずである。また、セル#910−0〜#910−2の内容は、上述のとおりそれぞれ「000000111100B」、「110000110001B」、「101111110010B」である。
【0277】
セル#910−0〜#910−2に格納された内容が読み出されると、マイクロプロセッサ6による制御のもと、これを用いて転送元ブロックアドレスが生成される。
【0278】
転送元ブロックアドレスは、マイクロプロセッサ6による制御のもと、読み出された各セルの内容の下位2ビット、商A(3ビット)及び読み出された各セルの内容の上位10ビットがこの順に結合されて生成される。この場合、読み出されたセルの内容は「000000111100B」、「110000110001B」、「101111110010B」であり、商Aは「000B」であることから、得られる3つの転送元ブロックアドレス#0〜#2の値は、それぞれ「000000000001111B」、「010001100001100B」及び「100001011111100B」となる。
【0279】
これにより、転送元ブロックアドレス#0〜#2の生成が完了する。
【0280】
次に、マイクロプロセッサ6による制御のもと、消去済みブロックキュー32を構成するキューセット#0〜#7のうち、ゾーン#0に対応するテーブル(例えば、テーブル#0)に対応するキューセット、例えば、キューセット#1が選択され、かかるキューセット#1を構成する各キュー#1−0〜#1−2に格納された内容が読み出される。本例では、これらキュー#1−0〜#1−2の内容がそれぞれ「010000010000B」、「000000100001B」、「111101000010B」であるものとする。
【0281】
キュー#1−0〜#1−2に格納された内容が読み出されると、マイクロプロセッサ6による制御のもと、これらがアドレス変換テーブル31の仮想ブロック表示領域#910を構成するセル#910−0〜#910−2に上書きされるとともに、これらを用いて転送先ブロックアドレスが生成される。
【0282】
転送先ブロックアドレスは、マイクロプロセッサ6による制御のもと、読み出された各キューの内容の下位2ビット、商A及び読み出された各キューの内容の上位10ビットがこの順に結合されて生成される。この場合、得られる3つの転送先ブロックアドレス#0〜#2の値は、それぞれ「000000100000100B」、「010000000001000B」及び「100001111010000B」となる。
【0283】
これにより、転送先ブロックアドレス#0〜#2の生成が完了する。
【0284】
以上の処理が完了すると、次に、マイクロプロセッサ6による制御のもと、フラッシュシーケンサブロック12が有するレジスタ(図示せず)に対する設定がなされる。かかる設定は、次のように行われる。
【0285】
まず、マイクロプロセッサ6による制御のもと、データ転送コマンド、内部書き込みコマンド及び内部読み出しコマンドがフラッシュシーケンサブロック12内の所定のレジスタ(図示せず)に設定される。さらに、マイクロプロセッサ6による制御のもと、上記生成された転送元ブロックアドレス#0〜#2及び転送先ブロックアドレス#0〜#2がフラッシュシーケンサブロック12内の所定のレジスタ(図示せず)に設定される。
【0286】
このようにしてフラッシュシーケンサブロック12に含まれる各種レジスタ(図示せず)に対する設定が完了すると、フラッシュシーケンサブロック12による一連の書き込み動作が実行される。フラッシュシーケンサブロック12による一連の書き込み動作は、次の通りである。
【0287】
まず、フラッシュシーケンサブロック12は、所定のレジスタに格納された転送元ブロックアドレス#0に「00000B(0)」を付加して20ビットの転送元内部アドレスを生成する。この場合、転送元内部アドレスは、「00000000000111100000B」となる。次に、フラッシュシーケンサブロック12は、生成された転送元内部アドレスの上位2ビットに基づき、フラッシュメモリチップ2−0〜2−2(=2−n)のうち、アクセスすべきページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック10に指示する。この場合、生成された転送元内部アドレスの上位2ビットは「00B(0)」であるから、アクセスすべきページが属するフラッシュメモリチップは、フラッシュメモリチップ2−0であり、チップ選択信号#0が活性化される。これにより、フラッシュメモリチップ2−0は、データの読み出しが可能な状態となる。一方、チップ選択信号#1、#2は、非活性状態が保たれる。
【0288】
次に、フラッシュシーケンサブロック12は、転送元内部アドレスの下位18ビット「000000000111100000B」を、所定のレジスタに格納された内部読み出しコマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。
【0289】
これにより、フラッシュメモリチップ2−0は、供給された転送元内部アドレスの下位18ビット「000000000111100000B」に格納されたデータの読み出しを実行する。すなわち、フラッシュメモリチップ2−0は、物理ブロック#15の物理ページ#0に格納されたデータの読み出しを実行する。尚、フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#0は、仮想ブロック#910の仮想ページ#0に対応する。
【0290】
このようにしてフラッシュメモリチップ2−0から読み出されたデータは、バス15を介してフラッシュメモリインターフェースブロック10に供給される。フラッシュメモリインターフェースブロック10がユーザデータを受け取ると、これがバッファ9に一時的に格納されるとともに、ECCブロック11に送出され、新たにエラーコレクションコードの生成が行われる。ECCブロック11にて新たに生成されたエラーコレクションコードは、ECCブロック11内に一時的に保持される。
【0291】
このような読み出し動作が、転送元ブロックアドレス#1、#2に「00000B(0)」が付加されることによって、フラッシュメモリチップ2−1、2−2に対しても実行され、その結果、フラッシュメモリチップ2−1に属する物理ブロック#780の物理ページ#0に格納されたデータ、フラッシュメモリチップ2−2に属する物理ブロック#764の物理ページ#0に格納されたデータも読み出されることになる。尚、仮想ブロック上においては、フラッシュメモリチップ2−1の物理ブロック#780の物理ページ#0は仮想ページ#1に対応し、フラッシュメモリチップ2−2の物理ブロック#764の物理ページ#0は仮想ページ#2に対応する。すなわち、以上の処理によって、仮想ブロック#910の仮想ページ#0〜#2に格納されているデータが読み出されたことになる。
【0292】
次に、バッファ9に一時的に格納されたデータの書き込み動作が行われる。
【0293】
まず、フラッシュシーケンサブロック12は、所定のレジスタに格納された転送先ブロックアドレス#0に「00000B(0)」を付加して20ビットの転送先内部アドレスを生成する。この場合、転送先内部アドレスは、「00000010000010000000B」となる。
【0294】
次に、フラッシュシーケンサブロック12は、生成された転送先内部アドレスの上位2ビットに基づき、フラッシュメモリチップ2−0〜2−2のうち、アクセスすべきページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック10に指示する。この場合、転送先内部アドレスの上位2ビットは「00B(0)」であるから、アクセスすべきページが属するフラッシュメモリチップは、フラッシュメモリチップ2−0であり、チップ選択信号#0が活性化される。これにより、フラッシュメモリチップ2−0は、データの書き込みが可能な状態となる。
【0295】
次に、フラッシュシーケンサブロック12は、転送先内部アドレスの下位18ビットを、所定のレジスタ(図示せず)に格納されたデータ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。バス15に供給された書き込みアドレス及びデータ転送コマンドは、フラッシュメモリチップ2−0〜2−2に対し共通に供給されるが、上述のとおり、チップ選択信号#0は活性状態となっており、チップ選択信号#1、#2は非活性状態となっているので、バス15に供給された転送先内部アドレス及びデータ転送コマンドは、フラッシュメモリチップ2−0に対してのみ有効となる(転送先指定)。
【0296】
次に、バッファ9に格納されているデータのうち、フラッシュメモリチップ2−0から読み出したデータ及び対応するエラーコレクションコード等の冗長領域26に格納すべき付加情報が、フラッシュシーケンサブロック12により、フラッシュメモリインターフェースブロック10を介して、バス15に供給される。バス15に供給されたデータ及びエラーコレクションコード等の付加情報も、やはりフラッシュメモリチップ2−0〜2−2に対し共通に供給されるが、上述のとおり、チップ選択信号#0が活性状態となっているため、フラッシュメモリチップ2−0に対してのみ有効となる(データ転送)。フラッシュメモリチップ2−0に転送されたデータ及びエラーコレクションコード等の付加情報は、フラッシュメモリチップ2−0内に備えられたレジスタ(図示せず)に一時的に格納される。
【0297】
次に、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部書き込みコマンドを、フラッシュメモリチップ2−0に対して発行する(書き込み命令)。
【0298】
これに応答して、フラッシュメモリチップ2−0は、所定のレジスタに格納されているデータ及びエラーコレクションコード等の付加情報を、転送先指定処理によって指定されたアドレスに書き込む(フラッシュプログラミング)。すなわち、レジスタに格納されているデータ及びエラーコレクションコード等の付加情報が、転送先内部アドレスの下位18ビット「000010000010000000B」により特定されるページ、つまり、フラッシュメモリチップ2−0の物理ブロック#260の物理ページ#0に書き込まれる。フラッシュメモリチップ2−0の物理ブロック#260の物理ページ#0は、仮想ブロック#910の仮想ページ#0に対応する。
【0299】
フラッシュメモリチップ2−0がフラッシュプログラミングを実行している間、フラッシュシーケンサブロック12は、所定のレジスタに格納された転送先ブロックアドレス#1に「00000B(0)」を付加して20ビットの新たな転送先内部アドレスを生成する。この場合、転送先内部アドレスは、「01000000000100000000B」となる。次いで、フラッシュシーケンサブロック12は、新たな転送先内部アドレスの上位2ビットに基づいて、チップ選択信号#1を活性化させる。これにより、フラッシュメモリチップ2−1は、データの書き込みが可能な状態となる。
【0300】
次に、フラッシュシーケンサブロック12は、新たな転送先内部アドレスの下位18ビット「000000000100000000B」を、所定のレジスタ(図示せず)に格納されたデータ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。この場合、上述のとおり、チップ選択信号#1が活性状態となっているので、バス15に供給された内部アドレス#1の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−1に対してのみ有効となる(転送先指定)。
【0301】
次に、バッファ9に格納されているデータのうち、フラッシュメモリチップ2−1から読み出したデータ及び対応するエラーコレクションコード等の冗長領域26に格納すべき付加情報が、上述と同様にしてフラッシュメモリチップ2−1に対して転送され、その後、書き込み命令の発行が行われる。これにより、フラッシュメモリチップ2−1はフラッシュプログラミングを行い、レジスタに格納されているデータ及びエラーコレクションコード等の付加情報が、転送先内部アドレスの下位18ビット「000000000100000000B」により特定されるページ、つまり、フラッシュメモリチップ2−1の物理ブロック#8の物理ページ#0に書き込まれる。フラッシュメモリチップ2−1の物理ブロック#8の物理ページ#0は、仮想ブロック#910の仮想ページ#1に対応する。
【0302】
このような、書き込み処理が、転送先ブロックアドレス#2に「00000B(0)」が付加されることによって、フラッシュメモリチップ2−2に対しても実行され、これにより、フラッシュメモリチップ2−2から読み出したデータ及び対応するエラーコレクションコード等の冗長領域26に格納すべき付加情報が、フラッシュメモリチップ2−2の物理ブロック#976の物理ページ#0に書き込まれる。フラッシュメモリチップ2−2の物理ブロック#976の物理ページ#0は、仮想ブロック#910の仮想ページ#2に対応する。
【0303】
これにより、転送元の仮想ブロックの仮想ページ#0〜#2に格納されているデータが、転送先の仮想ブロックの仮想ページ#0〜#2に書き込まれたことになる。すなわち、転送元の仮想ブロックの仮想ページ#0〜#2から転送先の仮想ブロックの仮想ページ#0〜#2へのデータの転送が行われたことになる。尚、仮想ページ#3はダミーセルに対応するため、これに対応するデータ転送は行われない。
【0304】
このようなデータの転送動作は、転送元ブロックアドレス及び転送先ブロックアドレスに付加する5ビットの値をインクリメントすることによって、次々と行われる。すなわち、転送元ブロックアドレス及び転送先ブロックアドレスに付加される5ビットの値が「00001(1)」であれば、転送元の仮想ブロックの仮想ページ#4〜#6から転送先の仮想ブロックの仮想ページ#4〜#6へのデータの転送が行われ、「00010(2)」であれば、転送元の仮想ブロックの仮想ページ#8〜#10から転送先の仮想ブロックの仮想ページ#8〜#10へのデータの転送が行われることになる。この場合も、仮想ページ#7や仮想ページ11はダミーセルに対応するため、これに対応するデータ転送は行われない。
【0305】
このような転送動作は、付加される5ビットの値が、データを上書きすべき仮想ページ番号(0010100B(20)〜0010110B(22))の上位5ビットである「00101B」に一致するまで連続的に行われる。すなわち、付加される5ビットがインクリメントされた結果、これが「00101B」となり、データを上書きすべき仮想ページ番号の上位5ビットに一致すると、一旦、上述した転送動作が中断される。本例では、転送元の仮想ブロックの仮想ページ#0〜#18から転送先の仮想ブロックの仮想ページ#0〜#18へのデータの転送が完了した時点で、付加される5ビットの値が、データを上書きすべき仮想ページ番号の上位5ビットに一致することになる。
【0306】
付加される5ビットがデータを上書きすべき仮想ページ番号の上位5ビットに一致すると、フラッシュシーケンサブロック12は、かかる5ビット「00101B」を用いたデータの読み出しを行わず、これを転送先ブロックアドレス#0〜#2にそれぞれ付加して、新たな転送先内部アドレスを生成する。例えば、転送先ブロックアドレス#0に「00101B」が付加されて生成された転送先内部アドレスは、「00000010000010000101B」である。
【0307】
次に、フラッシュシーケンサブロック12は、生成された転送先内部アドレスの上位2ビットに基づいてチップ選択信号#0を活性化しつつ、転送先内部アドレスの下位18ビットを、データ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する(転送先指定)。
【0308】
次に、ホストアドレス#0に対応する書き込みデータ及び対応するエラーコレクションコード等の付加情報が、フラッシュシーケンサブロック12により、フラッシュメモリインターフェースブロック10を介して、バス15に供給される。このとき、チップ選択信号#0が活性状態となっているため、フラッシュメモリチップ2−0に転送されたデータ及びエラーコレクションコードは、フラッシュメモリチップ2−0内に備えられたレジスタ(図示せず)に一時的に格納される(データ転送)。
【0309】
次に、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部書き込みコマンドを、フラッシュメモリチップ2−0に対して発行する(書き込み命令)。
【0310】
このようにして、フラッシュメモリチップ2−0がホストアドレス#0に対応する書き込みデータ及び対応するエラーコレクションコード等の付加情報をフラッシュプログラミングを実行している間、フラッシュシーケンサブロック12は、ホストアドレス#1に対応する書き込みデータ及び対応するエラーコレクションコード等の付加情報を、フラッシュメモリチップ2−1に書き込むべく、転送先指定処理、データ転送処理等を実行する。このように、あるフラッシュメモリチップがフラッシュプログラミングを実行している途中で、これと異なるフラッシュメモリチップに対して転送先指定処理、データ転送処理等を実行する点はすでに説明したとおりであり、これによって、ホストアドレス#0に対応する書き込みデータは、フラッシュメモリチップ2−0内の物理ブロック#260の物理ページ#5に書き込まれ、ホストアドレス#1に対応する書き込みデータは、フラッシュメモリチップ2−1内の物理ブロック#8の物理ページ#5に書き込まれ、ホストアドレス#2に対応する書き込みデータは、フラッシュメモリチップ2−2内の物理ブロック#976の物理ページ#5に書き込まれる。
【0311】
これにより、ホストアドレス#0〜#2に対応する書き込みデータが、転送先の仮想ブロックの仮想ページ#20〜#22にそれぞれ書き込まれたことになる。
【0312】
かかるデータの書き込みが完了すると、再び、転送元ブロックアドレス及び転送先ブロックアドレスに付加される5ビットがインクリメントされ、新しい転送元内部アドレス及び転送先内部アドレスを用いたデータの転送が再開される。かかる転送動作は、付加される5ビットが「11111(31)」である場合のデータ転送が完了するまで連続的に行われる。すなわち、転送元の仮想ブロックの仮想ページ#24〜#126から転送先の仮想ブロックの仮想ページ#24〜#126へのデータの転送が完了するまで行われ、これにより、フラッシュシーケンサブロック12による一連のデータ転送動作が完了する。
【0313】
また、マイクロプロセッサ6は、上述のデータ書き込みによって、消去済みブロックキュー32のキューセット#1に格納された物理ブロックアドレスが、消去済みブロックの物理アドレスではなくなったことに応答して、新たな消去済みブロックを冗長ブロックの中から選択し、選択された消去済みブロックの物理ブロックアドレスを新たにキュー#1−0〜#1−2に格納する。
【0314】
尚、転送元の各物理ブロックは、いずれもブロック消去され、これによって新たな消去済みブロックとなる。かかるブロック消去においても、転送元の各物理ブロックがそれぞれ異なるフラッシュメモリチップに属していることから、これらブロックに対するブロック消去動作を並列に実行することができる。
【0315】
以上により、一連のブロック間転送動作が完了する。
【0316】
このように、アクセス対象である仮想ブロックが横書き仮想ブロックである場合においてデータの上書きが行われると、3つの物理ブロックに対してブロック間転送が行われるが、これらブロック間転送が並列に実行されることから、これらをそれぞれ独立して行う場合に比べると、一連のブロック間転送動作に要する時間は大幅に短くなる。
【0317】
書き込み動作4(仮想ブロックにデータを上書きする場合(「バンクタイプモード」で動作する場合))
フラッシュメモリシステム1が「バンクタイプモード」で動作する場合におけるデータの上書き動作においても、ブロック間転送が実行される。その動作は、フラッシュメモリシステム1が「チップタイプモード」で動作する場合と基本的に同様であり、転送元ブロックアドレス及び転送先ブロックアドレスに「00000B」〜「11111B」が次々と付加されることによって、転送元内部アドレス及び転送先内部アドレスが生成され、これらを用いて、連続的なデータの転送が行われる。この場合、書き込み動作2において説明したように、各バンクに対応して設けられたレジスタ#0〜#3を用いることによって、ブロック間転送が並列に実行される。これにより、フラッシュメモリシステム1が「チップタイプモード」で動作する場合と同様、一連のブロック間転送動作を高速に行うことが可能となる。
【0318】
このように、本実施態様によるフラッシュメモリシステム1では、「仮想ブロック」という概念を用い、「チップタイプモード」で動作する場合、互いに異なるフラッシュメモリチップに属する複数の物理ブロックを仮想的に一つのブロックとして取り扱っているので、ホストコンピュータ5から、連続する複数アドレスに対してデータ書き込み要求がなされた場合に、ある書き込みデータについてフラッシュプログラミングが実行されている途中で、次の書き込みデータに対し、転送先指定やデータ転送等の処理を並行して実行することができ、これにより一連のデータ書き込みに要する時間を大幅に短縮させることが可能となる。すなわち、一連のデータ書き込み動作のうち、フラッシュプログラミングには比較的長い時間、典型的には約200μsec程度が必要とされるところ、本実施態様によるフラッシュメモリシステム1によれば、かかるフラッシュプログラミングと並行して他の処理を実行可能であることから、一連のデータ書き込みに要する時間は大幅に短縮される。
【0319】
また、本実施態様によるフラッシュメモリシステム1では、「バンクタイプモード」で動作する場合、互いに異なるバンクに属する複数の物理ブロックを仮想的に一つのブロックとして取り扱っているので、ホストコンピュータ5から、連続する複数アドレスに対してデータ書き込み要求がなされた場合に、各バンクに対するフラッシュプログラミングを一斉に実行することができ、これにより一連のデータ書き込みに要する時間を大幅に短縮させることが可能となる。
【0320】
さらに、本実施態様によるフラッシュメモリシステム1では、各ゾーンに含まれる物理ブロックに対して「物理アドレス」を一意に割り当て、アドレス変換においてこれを用いていることから、フラッシュメモリシステム1が「チップタイプモード」で動作する場合のアドレス変換と、「バンクタイプモード」で動作する場合のアドレス変換の大部分を共通化することができる。このため、ROM33に格納すべき変換プログラム(P1〜P3)の容量を大幅に削減することができるとともに、フラッシュメモリシステム1が「チップタイプモード」で動作する場合と、「バンクタイプモード」で動作する場合とで、同じ構造をもったアドレス変換テーブル29及び消去済みブロックキュー32を用いることができる。
【0321】
また、本実施態様によるフラッシュメモリシステム1では、あるゾーンのあるスロットにおいて所定数を超える物理ブロックに不良が発生した場合、当該ゾーン内の他のスロットに属する物理ブロックを実使用ブロックとして代替使用していることから、不良ブロックの集中的な発生によりゾーン全体が使用不能となる可能性を大幅に低減することができる。特に、「チップタイプモード」で動作する場合、隣接するスロット以外のスロットに属する物理ブロックが代替ブロックとして優先的に選択されることから、代替ブロックを含む仮想ブロックに対して連続的なデータの書き込みを行う場合であっても、一連の書き込みに要する時間が増大しないか、あるいは低減される。
【0322】
さらに、本実施態様によるフラッシュメモリシステム1では、「チップタイプモード」で動作する場合、nを2進表示するのに必要なビット数をXとした場合に、2個の「セル」によって仮想ブロックを構成し、セル数(2)がフラッシュメモリチップの数(n+1)を越えている場合には、越えている数に相当するセルを無効セル(ダミーセル)として取り扱っていることから、チップ数が2のべき乗個に一致していなくても、チップ数が2のべき乗個に一致している場合とほぼ同様のアドレス変換動作によってデータの読み出し及び書き込みを行うことができる。このため、搭載されるフラッシュメモリチップの数にかかわらずコントローラ3の構成を共通化することができ、汎用性が大幅に高められるとともに、2のべき乗でない数値を扱う必要がないことから、コントローラ3のハードウェア構成の複雑化を防止することが可能となる。
【0323】
本発明は、以上の実施態様に限定されることなく、特許請求の範囲に記載された発明の範囲内で種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることはいうまでもない。
【0324】
例えば、本発明において、搭載されているフラッシュメモリチップが1個である場合のように「チップタイプモード」の選択が不可能な場合においては、モード設定端子#0に対する設定とは無関係に「バンクタイプモード」が選択されるように構成しても構わない。同様に、搭載されているフラッシュメモリチップがバンクタイプではない場合のように「バンクタイプモード」の選択が不可能な場合においては、モード設定端子#0に対する設定とは無関係に「チップタイプモード」が選択されるように構成しても構わない。さらに、搭載されているフラッシュメモリチップが1個であり、且つ、これがバンクタイプではない場合のように、「チップタイプモード」及び「バンクタイプモード」のいずれも選択不可能な場合においては、モード設定端子#0に対する設定とは無関係に、仮想ブロック制御を行わない「通常モード」で動作するように構成しても構わない。
【0325】
また、上記実施態様にかかるフラッシュメモリシステム1においては、「チップタイプモード」及び「バンクタイプモード」のいずれかの動作モードを選択可能に構成されているが、あるフラッシュメモリチップより選ばれたそれぞれ異なるバンクに属する複数の物理ブロックと、異なるフラッシュメモリチップより選ばれたそれぞれ異なるバンクに属する複数の物理ブロックとを仮想的に結合させることによって仮想ブロックを構成する「チップタイプ・バンクタイプ併用モード」を選択可能としても構わない。「チップタイプ・バンクタイプ併用モード」においては、搭載されるフラッシュメモリチップの個数や各フラッシュメモリチップが備えるバンク数を超える数のブロックからなる仮想ブロックを構成することが可能となる。このことは、データ書き込み時において並列処理が可能なページ数が多くなるとともに、データの追加的な書き込みの可能性が高まることを意味するので、データ書き込み処理をより高速に行うことが可能となる。
【0326】
この場合、図29に示されるように、モード設定端子#0の他にモード設定端子#1を使用し、これらモード設定端子#0、#1に対する設定により、「チップタイプモード」、「バンクタイプモード」、「チップタイプ・バンクタイプ併用モード」、「通常モード」のいずれかの動作モードを選択可能とすることが好ましい。
【0327】
また、上記実施態様にかかるフラッシュメモリシステム1においては、各物理ブロックが32個の物理ページによって構成されているが、各物理ブロックを構成する物理ページ数が32個に限定されるものではなく、他の数、例えば、16個や64個であってもよい。
【0328】
また、上記実施態様にかかるフラッシュメモリシステム1においては、フラッシュメモリチップ2−0〜2−nからなる物理ブロック空間を、それぞれ4096個の物理ブロックにより構成される複数ゾーンに分割しているが、各ゾーンを構成する物理ブロックの数は特に限定されない。この場合、物理ブロック空間を分割するゾーン数は、少なければ少ないほど、アドレス変換テーブル29の更新頻度が低くなりアクセス速度の低下が防止されるという利点がある一方、各テーブルが大型化し、SRAMワークエリア8に必要とされる記憶容量が増大するという欠点があり、多ければ多いほど、各テーブルが小型化されSRAMワークエリア8に必要とされる記憶容量を低減することができるという利点がある一方、アドレス変換テーブル29の更新頻度が高くなりアクセス速度が低下するという欠点がある。したがって、物理ブロック空間の分割数(ゾーン数)は、要求されるアクセス速度及びSRAMワークエリア8の記憶容量に基づいて決定すればよい。
【0329】
また、上記実施態様にかかるフラッシュメモリシステム1においては、アドレス変換テーブル29をテーブル#0〜#3からなる4つのテーブルによって構成しているが、アドレス変換テーブル29を構成するテーブルの数は4つには限定されず、他の数、例えば、2つや8つであってもよい。すなわち、アドレス変換テーブル29を構成するテーブルの数は、少なければ少ないほどSRAMワークエリア8に必要とされる記憶容量を低減することができるという利点がある一方、アドレス変換テーブル29の更新頻度が高くなりアクセス速度が低下するという欠点があり、アドレス変換テーブル29を構成するテーブル数は、多ければ多いほどアドレス変換テーブル29の更新頻度が低くなりアクセス速度の低下が防止されるという利点がある一方、SRAMワークエリア8に必要とされる記憶容量が増大するという欠点がある。したがって、アドレス変換テーブル29を構成するテーブルの数は、要求されるアクセス速度及びSRAMワークエリア8の記憶容量に基づいて決定すればよい。
【0330】
さらに、上記実施態様にかかるフラッシュメモリシステム1においては、アドレス変換テーブル29構成するテーブル#0〜#3の優先順位を優先リンク31によって決定しているが、優先順位の決定方法としてはこれに限定されず、他の方法、例えば、各テーブル#0〜#3ごとにアクセス数をカウントするカウンタを設け、これらカウンタのカウント値に基づいて優先順位を決定してもよい。
【0331】
また、上記実施態様においては、フラッシュメモリシステム1はカード形状であり、n+1個のフラッシュメモリチップ2−0〜2−nとコントローラ3が、一つのカード内に集積されて構成されているが、本発明にかかるフラッシュメモリシステムがカード形状に限定されることはなく、他の形状、例えばスティック状であってもよい。
【0332】
さらに、上記実施態様においては、フラッシュメモリシステム1は、n+1個のフラッシュメモリチップ2−0〜2−nとコントローラ3とが、一つのカード内に集積されて構成されているが、フラッシュメモリチップ2−0〜2−nとコントローラ3とが、同一筐体に集積されている必要はなく、それぞれ別個の筐体にパッケージングされてもよい。この場合、フラッシュメモリチップ2−0〜2−nがパッケージングされた筐体及びコントローラ3がパッケージングされた筐体には、それぞれ他方との電気的及び機械的接続を実現するためのコネクタが必要とされ、かかるコネクタによって、フラッシュメモリチップ2−0〜2−nがパッケージングされた筐体が、コントローラ3がパッケージングされた筐体に着脱可能に装着される。さらに、フラッシュメモリチップ2−0〜2−nについても、これらが同一筐体に集積されている必要はなく、それぞれ別個の筐体にパッケージングされてもよい。
【0333】
また、上記実施態様にかかるフラッシュメモリシステム1においては、各フラッシュメモリチップ2−0〜2−nは、それぞれ128Mバイト(1Gビット)の記憶容量を有する半導体チップであるが、各フラッシュメモリチップ2−0〜2−nの記憶容量は128Mバイト(1Gビット)に限定されず、これとは異なる容量、例えば32Mバイト(256Mビット)であってもよい。
【0334】
さらに、上記実施態様にかかるフラッシュメモリシステム1においては、512バイトを1ページとし、これを最小アクセス単位としているが、最小アクセス単位としては512バイトに限定されず、これとは異なる容量であってもよい。
【0335】
また、上記実施態様にかかるフラッシュメモリシステム1においては、フラッシュメモリチップ2−0〜2−3を構成する各フラッシュメモリセル16が、1ビットのデータを保持しているが、フローティングゲート電極21に注入すべき電子の量を複数段階に制御することによって、2ビット以上のデータを保持可能に構成してもよい。
【0336】
また、上記実施態様にかかるフラッシュメモリシステム1においては、消去済みブロックキュー32を8個のキューセットによって構成し、各テーブルに対して2組のキューセットを割り当てているが、各テーブルに対して割り当てられるキューセットの数としては2個に限定されず、他の数、例えば、1個や4個であってもよい。
【0337】
さらに、上記実施態様にかかるフラッシュメモリシステム1においては、フラッシュメモリチップ2としてNAND型のフラッシュメモリチップを用いているが、本発明により制御可能なフラッシュメモリがNAND型に限定されるものではなく、他の種類、例えば、AND型のフラッシュメモリを制御することも可能である。
【0338】
さらに、本発明において、手段とは、必ずしも物理的手段を意味するものではなく、各手段の機能がソフトウエアによって実現される場合も包含する。さらに、一つの手段の機能が二以上の物理的手段により実現されても、二以上の手段の機能が一つの物理的手段により実現されてもよい。
【0339】
尚、本発明は、PCMCIA(Personal Computer Memory Card International Association)が発表した統一規格に基づくPCカードとして実現することが可能である。さらに、近年、半導体素子の高集積化技術の発展に伴い、より小型化された小型メモリカード、例えば、CFA(CompactFlash Association)が提唱する「CompactFlash」や、MultiMediaCardAssociationの提唱する「MMC(MultiMediaCard)」、ソニー株式会社が提唱する「メモリースティック」、松下電器産業株式会社等が提唱する「SDメモリーカード」などに本発明を適用することが可能である。
【0340】
【発明の効果】
以上説明したように、本発明によれば、フラッシュメモリに対する一連のデータ書き込み処理をより高速に行うことができるメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法を提供することができる。
【図面の簡単な説明】
【図1】本発明の好ましい実施態様にかかるフラッシュメモリシステム1を概略的に示すブロック図である。
【図2】コントローラ3を構成する半導体チップを概略的に示す上面図である。
【図3】フラッシュメモリチップ2−0〜2−3を構成する各フラッシュメモリセル16の構造を概略的に示す断面図である。
【図4】書込状態であるフラッシュメモリセル16を概略的に示す断面図である。
【図5】フラッシュメモリチップ2−0のアドレス空間の構造を概略的に示す図である。
【図6】フラッシュメモリチップ2−0のバンク構造を概略的に示す図である。
【図7】冗長領域26のデータ構造を概略的に示す図である。
【図8】フラッシュメモリシステム1が「チップタイプモード」で動作する場合における、ゾーン構成を示す図である。
【図9】フラッシュメモリシステム1が「バンクタイプモード」で動作する場合における、ゾーン構成を示す図である。
【図10】仮想ブロックを構成するセルの数(2)と、フラッシュメモリチップの数(n+1)との関係を示す表である。
【図11】「チップタイプモード」における仮想ブロックのマッピングの一例を示す図である。
【図12】「チップタイプモード」において代替処理が行われている場合おける仮想ブロックのマッピングの一例を示す図である。
【図13】図11に示された仮想ブロックの仮想ページ構造を示す図である。
【図14】「バンクタイプモード」における仮想ブロックのマッピングの一例を示す図である。
【図15】「バンクタイプモード」において代替処理が行われている場合おける仮想ブロックのマッピングの一例を示す図である。
【図16】図14に示された仮想ブロックの仮想ページ構造を示す図である。
【図17】フラッシュメモリシステム1が「チップタイプモード」で動作する場合において、ゾーン#0を構成する各物理ブロックに割り当てられる物理アドレスを示す図である。
【図18】フラッシュメモリシステム1が「バンクタイプモード」で動作する場合において、ゾーン#0を構成する各物理ブロックに割り当てられる物理アドレスを示す図である。
【図19】アドレス変換テーブル29のデータ構造を示す概略図である。
【図20】管理テーブル30のデータ構造を示す概略図である。
【図21】優先リンク31のデータ構造を示す概略図である。
【図22】優先リンク31によって、優先順位としてテーブル#0→テーブル#1→テーブル#2→テーブル#3が記憶される場合を示す図である。
【図23】優先リンク31によって、優先順位としてテーブル#2→テーブル#0→テーブル#1→テーブル#3が記憶される場合を示す図である。
【図24】優先リンク31によって、優先順位としてテーブル#3→テーブル#2→テーブル#0→テーブル#1が記憶される場合を示す図である。
【図25】優先リンク31によって、優先順位としてテーブル#1→テーブル#3→テーブル#2→テーブル#0が記憶される場合を示す図である。
【図26】消去済みブロックキュー32のデータ構造を示す概略図である。
【図27】「チップタイプモード」における一連の書き込み動作を概略的に示すタイミング図である。
【図28】「バンクタイプモード」における一連の書き込み動作を概略的に示すタイミング図である。
【図29】コントローラ3を構成する半導体チップにモード設定端子#1を付加した例を示す図である。
【符号の説明】
1 フラッシュメモリシステム
2−0〜2−n フラッシュメモリチップ
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 消去済みブロックキュー
33 ROM[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a memory controller, a flash memory system, and a flash memory control method, and more particularly, to a memory controller, a flash memory system, and a flash memory control method capable of performing a series of data write processing on the flash memory at higher speed.
[0002]
[Prior art]
In recent years, flash memories, particularly NAND flash memories, are often used as semiconductor memories used for memory cards, silicon disks, and the like. NAND flash memory is a memory cell(Memory element)Is changed from the erased state (logical value = 1) to the written state (logical value = 0), this can be performed in units of memory cells, while the memory cell is erased from the written state (0). In the case of changing to the state (1), this cannot be performed in units of memory cells, but can be performed only in predetermined erase units (block units) composed of a plurality of memory cells. Such a batch erase operation is generally called “block erase”.
[0003]
As described above, in the NAND flash memory, since the change from the write state (0) to the erase state (1) cannot be performed in units of memory cells, the data is written when data is written to the flash memory. It is necessary to erase all the memory cells included in the power region in advance. The block erased area becomes an empty block in which no data is stored, and when writing new data to the flash memory, such an empty block is searched and the relevant data is written to the found empty block. Will be. Here, each block is composed of a plurality of “pages” which are access units for reading and writing data.
[0004]
Such data writing to the flash memory is performed as follows.
[0005]
First, when a data write request is issued from the host computer and a write destination address and data to be written are transmitted, the data is temporarily stored in a memory provided in the controller. Next, the controller transfers the data temporarily stored in the memory to the flash memory and instructs the flash memory to write the data to the page indicated by the write destination address. In response to this, the flash memory stores the data transferred from the controller in the designated page, thereby completing a series of data write processing.
[0006]
[Problems to be solved by the invention]
Conventionally, each page in the same block is treated as having continuous addresses as viewed from the host computer. On the other hand, a data write request from the host computer is often made to a plurality of continuous addresses, and in this case, the controller needs to write data successively to a plurality of continuous pages in a certain block.
[0007]
In this case, the controller first transfers data to be written to the first page to the flash memory, and instructs the flash memory to write such data to the page. In response, when the flash memory stores the transferred data in the specified page, the controller then transfers the data to be written to the next page to the flash memory and writes the data to the page. To direct. By sequentially executing such processing for the requested plurality of addresses, a series of data writing processing to a plurality of continuous pages is completed.
[0008]
Here, the time required for the writing process for one page is mainly the time required for transferring the data to be written from the controller to the flash memory (data transfer time), and the time for issuing the write command from the controller to the flash memory. (Instruction issue time), time for actually writing data to the flash memory (flash program time), and the like. Of these, the flash program time requires a particularly long time (for example, about 200 μsec).
[0009]
Conventionally, such a single data writing process that requires a relatively long time is sequentially performed in units of pages. Therefore, when a host computer issues a data write request to a plurality of consecutive addresses, In order to complete the data writing process, a time substantially proportional to the number of pages to which data is to be written is required.
[0010]
Therefore, a memory controller, a flash memory system, and a flash memory control method that can perform a series of data write processing at a higher speed when a host computer requests data write to a plurality of consecutive addresses are desired. It was rare.
[0011]
Accordingly, an object of the present invention is to provide a memory controller capable of performing a series of data write processing on the flash memory at higher speed and a flash memory system including such a memory controller.
[0012]
Another object of the present invention is to provide a flash memory control method capable of performing a series of data write processing on the flash memory at a higher speed.
[0013]
[Means for Solving the Problems]
A memory controller according to a first aspect of the present invention includes:
A memory controller that accesses a plurality of flash memories to be erased in units of physical blocks including a plurality of pages based on a sector-unit host address supplied from a host computer,
Virtual block address assigning means for assigning a virtual block address to an area of a predetermined number of sectors in which the host address is continuous;
Zone forming means for forming a zone composed of a plurality of physical blocks in each flash memory;
Zone management means for correlating the zones formed in the flash memories different from each other;
A plurality of physical blocks arbitrarily selected one by one without depending on the difference of physical block addresses from the mutually associated zones are managed as virtual blocks, and the correspondence between the virtual blocks and the virtual block addresses Virtual block management means for managing the relationship;
Page management means for allocating the host address so that consecutive host addresses are allocated to pages in different physical blocks for pages in a plurality of physical blocks included in the same virtual block;
It is characterized by providing.
[0014]
A memory controller according to a second aspect of the present invention is:
A memory controller that accesses a plurality of flash memories to be erased in units of physical blocks including a plurality of pages based on a sector-unit host address supplied from a host computer,
Virtual block address assigning means for assigning a virtual block address to an area of a predetermined number of sectors in which the host address is continuous;
Zone forming means for forming a zone composed of a plurality of physical blocks in each flash memory;
Zone management means for correlating the zones formed in the flash memories different from each other;
To the physical block in each flash memory, a plurality of bits of information including a bit for identifying the flash memory to which the physical block belongs on the lower side when the physical block address of the physical block is displayed in bits. A physical address assigning means for assigning a physical address generated based on the physical address;
A plurality of physical blocks arbitrarily selected one by one from the zones associated with each other without depending on the difference in physical block addresses are managed as virtual blocks, and assigned to each physical block belonging to the virtual block. Virtual block management means for managing the correspondence between the physical address and the virtual block address;
Page management means for allocating the host address so that consecutive host addresses are allocated to pages in different physical blocks for pages in a plurality of physical blocks belonging to the same virtual block;
The number of bits for identifying the flash memory is a minimum number of bits necessary for identifying the plurality of flash memories.
[0015]
For example, when the virtual block is composed of n physical blocks, the capacity of the predetermined number of sectors is set equal to the capacity of the user area included in the virtual block composed of n physical blocks. To do.
[0016]
A flash memory system according to a third aspect of the present invention includes a plurality of the flash memories and the memory controller described above.
[0017]
A flash memory control method according to a fourth aspect of the present invention includes:
A flash memory control method for controlling a plurality of flash memories to be erased in physical block units including a plurality of pages based on a sector-unit host address supplied from a host computer,
A virtual block address is assigned to an area of a predetermined number of sectors in which the host address is continuous,
Forming a zone composed of a plurality of physical blocks in each flash memory;
Correlating the zones formed in the flash memories different from each other;
A plurality of physical blocks arbitrarily selected one by one without depending on the difference of physical block addresses from the mutually associated zones are managed as virtual blocks, and the correspondence between the virtual blocks and the virtual block addresses Manage relationships,
Assigning the host address so that successive host addresses are assigned to pages in different physical blocks for pages in a plurality of physical blocks included in the same virtual block;
It is characterized by that.
[0018]
A flash memory control method according to a fifth aspect of the present invention includes:
A flash memory control method for controlling a plurality of flash memories to be erased in physical block units including a plurality of pages based on a sector-unit host address supplied from a host computer,
A virtual block address is assigned to an area of a predetermined number of sectors in which the host address is continuous,
Forming a zone composed of a plurality of physical blocks in each flash memory;
Correlating the zones formed in the flash memories different from each other;
To the physical block in each flash memory, a plurality of bits of information including a bit for identifying the flash memory to which the physical block belongs on the lower side when the physical block address of the physical block is displayed in bits. Based on the physical address generated based on
A plurality of physical blocks arbitrarily selected one by one from the zones associated with each other without depending on the difference in physical block addresses are managed as virtual blocks, and assigned to each physical block belonging to the virtual block. Managing the correspondence between the physical address and the virtual block address,
Assigning the host address so that successive host addresses are assigned to pages in different physical blocks for pages in a plurality of physical blocks belonging to the same virtual block;
The number of bits for identifying the flash memory is a minimum number of bits necessary for identifying the plurality of flash memories.
[0019]
When the virtual block is composed of n physical blocks, for example, the capacity of the predetermined number of sectors is equal to the capacity of the user area included in the virtual block composed of n physical blocks. To do.
[0024]
Preferred Embodiment of the Invention
Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings.
[0025]
FIG. 1 is a block diagram schematically showing a flash memory system 1 according to a preferred embodiment of the present invention.
[0026]
As shown in FIG. 1, the flash memory system 1 has a card shape, and n + 1 flash memory chips 2-0 to 2-n, a controller 3, and a connector 4 are integrated in one card. Composed. The flash memory system 1 is used by being detachably attached to the host computer 5 and used as a kind of external storage device for the host computer 5. Examples of the host computer 5 include various information processing apparatuses such as a personal computer and a digital still camera that process various information such as characters, sounds, and image information.
[0027]
Each of the flash memory chips 2-0 to 2-n is a semiconductor chip having a storage capacity of 128 Mbytes (1 Gbit). In the flash memory system 1, 528 bytes are defined as one page, which is the minimum access unit. Accordingly, each of these flash memory chips 2-0 to 2-n includes an address space of 256K pages, and the flash memory chips 2-0 to 2-n have a total address space of 256K × (n + 1) pages. It will be. In the flash memory system 1, these n + 1 flash memory chips 2-0 to 2 -n have a storage capacity of 128 × (n + 1) M bytes ((n + 1) G bits) and 256 K × (n + 1). ) Treated as one large memory with page address space. The host computer 5 accesses a specific page by supplying a host address to the flash memory system 1.
[0028]
The controller 3 includes a microprocessor 6, a host interface block 7, an SRAM work area 8, a buffer 9, a flash memory interface block 10, an ECC (error collection code) block 11, a flash sequencer block 12, ROM33 is comprised. The controller 3 constituted by these functional blocks is integrated on one semiconductor chip.
[0029]
The microprocessor 6 is a functional block for controlling the operation of the entire functional blocks constituting the controller 3.
[0030]
The host interface block 7 is connected to the connector 4 via the bus 13 and exchanges data, address information, status information, and external command information with the host computer 5 under the control of the microprocessor 6. That is, when the flash memory system 1 is attached to the host computer 5, the flash memory system 1 and the host computer 5 are connected to each other via the bus 13, the connector 4, and the bus 14, and in this state, the host computer 5 The data supplied to the flash memory system 1 is taken into the controller 3 through the host interface block 7 as an entrance, and the data etc. supplied from the controller 3 to the host computer 5 exits the host interface block 7. To the host computer 5. The host interface block 7 further includes a task file register (not shown) for temporarily storing a host address and an external command supplied from the host computer 5 and an error register (not shown) that is set when an error occurs. Z).
[0031]
The SRAM work area 8 is a work area in which data necessary for controlling the flash memory chips 2-0 to 2-n by the microprocessor 6 is temporarily stored, and is constituted by a plurality of SRAM cells.
[0032]
The buffer 9 is a buffer for temporarily storing data read from the flash memory chips 2-0 to 2-n and data to be written to the flash memory chips 2-0 to 2-n. That is, the data read from the flash memory chips 2-0 to 2-n is held in the buffer 9 until the host computer 5 can receive the data, and should be written to the flash memory chips 2-0 to 2-n. Data is held in the buffer 9 until the flash memory chips 2-0 to 2-n are writable and an error correction code is generated by the ECC block 11 described later.
[0033]
The flash memory interface block 10 exchanges data, address information, status information, and internal command information with the flash memory chips 2-0 to 2-n via the bus 15, and each flash memory chip 2-0. This is a functional block for supplying corresponding chip selection signals # 0 to #n to 2-n. The chip selection signals # 0 to #n are based on the upper 2 bits of the internal address generated based on the host address supplied from the host computer 5 when data reading or writing is requested from the host computer 5. One of them is a signal to be activated. Specifically, for example, when n = 2 (three flash memory chips), if the upper 2 bits of the internal address are “00”, the chip selection signal # 0 is activated, and “01”. If there is, the chip selection signal # 1 is activated, and if “10”, the chip selection signal # 2 is activated. The flash memory chips 2-0 to 2-n in which the corresponding chip selection signal is activated are in a selected state, and data can be read or written. The “internal command” is a command for the controller 3 to control the flash memory chips 2-0 to 2-n, and is distinguished from an “external command” for the host computer 5 to control the flash memory system 1. Is done.
[0034]
The ECC block 11 generates an error correction code to be added to the data to be written to the flash memory chips 2-0 to 2-n, and corrects errors included in the read data based on the error correction code added to the read data. This is a functional block for correction.
[0035]
The flash sequencer block 12 is a functional block for controlling data transfer between the flash memory chips 2-0 to 2-n and the buffer 9. The flash sequencer block 12 includes a plurality of registers (not shown), and reads data from the flash memory chips 2-0 to 2-n or flash memory chips 2-0 to 2 under the control of the microprocessor 6. When values necessary for writing data to -n are set in these registers, a series of operations necessary for reading or writing data is automatically executed.
[0036]
Next, a specific structure of each flash memory cell constituting each flash memory chip 2-0 to 2-n will be described.
[0037]
The ROM 33 is a memory for storing various programs to be executed by the microprocessor 6, and stores at least a first conversion program P1, a second conversion program P2, and a third conversion program P3. These first to third conversion programs P1 to P3 will be described later.
[0038]
FIG. 2 is a top view schematically showing a semiconductor chip constituting the controller 3.
[0039]
As shown in FIG. 2, the semiconductor chip constituting the controller 3 has a large number of external terminals (external pins). These external terminals include terminals connected to the buses 13 and 15 and chip selection. In addition to terminals for outputting signals # 0 to #n, a mode setting terminal # 0 is included. The mode setting terminal # 0 is a terminal for determining the operation mode of the flash memory system 1 according to the present embodiment, and is set to either “chip type mode” or “bank type mode” depending on the setting for the mode setting terminal # 0. The operation mode can be selected. The specific mode setting method is not particularly limited. For example, if the mode setting terminal # 0 is connected to the ground potential (GND), the “chip type mode” is set, and the mode setting terminal # 0 is connected to the power supply potential (Vcc). Then, “bank type mode” is set. In this case, when the semiconductor chip constituting the controller 3 is mounted on the printed board, the mode setting terminal # 0 is connected to the ground potential (GND) or the power supply potential (Vcc), so that the flash memory system 1 can be manufactured. The operation mode may be fixed, or the operation mode may be made variable by supplying the ground potential (GND) or the power supply potential (Vcc) from the host computer 5 to the mode setting terminal # 0.
[0040]
Details of the “chip type mode” and the “bank type mode” will be described later.
[0041]
FIG. 3 is a cross-sectional view schematically showing the structure of each flash memory cell 16 constituting the flash memory chips 2-0 to 2-n.
[0042]
As shown in FIG. 3, the flash memory cell 16 includes an N-type source diffusion region 18 and a drain diffusion region 19 formed in the P-type semiconductor substrate 17, and between the source diffusion region 18 and the drain diffusion region 19. Tunnel oxide film 20 formed so as to cover P-type semiconductor substrate 17, floating gate electrode 21 formed on tunnel oxide film 20, insulating film 22 formed on floating gate electrode 21, and insulating film 22 And a control gate electrode 23 formed on the substrate. A plurality of flash memory cells 16 having such a configuration are connected in series in the flash memory chips 2-0 to 2-n to form a NAND flash memory.
[0043]
The flash memory cell 16 is in either “erased state” or “written state” depending on whether electrons are injected into the floating gate electrode 21. The fact that the flash memory cell 16 is in the erased state means that the data “1” is held in the flash memory cell 16, and the fact that the flash memory cell 16 is in the written state means that the flash memory cell 16 This means that data “0” is held in. That is, the flash memory cell 16 can hold 1-bit data.
[0044]
As shown in FIG. 3, the erased state refers to a state where electrons are not injected into the floating gate electrode 21. The flash memory cell 16 in the erased state is a depletion type transistor, and a P-type semiconductor substrate between the source diffusion region 18 and the drain diffusion region 19 regardless of whether or not a read voltage is applied to the control gate electrode 23. A channel 24 is formed on the surface 17. Therefore, the source diffusion region 18 and the drain diffusion region 19 are always electrically connected by the channel 24 regardless of whether or not the read voltage is applied to the control gate electrode 23.
[0045]
FIG. 4 is a cross-sectional view schematically showing the flash memory cell 16 in the written state.
[0046]
As shown in FIG. 4, the writing state refers to a state where electrons are accumulated in the floating gate electrode 21. Since the floating gate electrode 21 is sandwiched between the tunnel oxide film 20 and the insulating film 22, the electrons once injected into the floating gate electrode 21 stay in the floating gate electrode 21 for a very long time. The flash memory cell 16 in the write state is an enhancement type transistor, and when the read voltage is not applied to the control gate electrode 23, the surface of the P-type semiconductor substrate 17 between the source diffusion region 18 and the drain diffusion region 19 is used. When a read voltage is applied to the control gate electrode 23, a channel (not shown) is formed on the surface of the P-type semiconductor substrate 17 between the source diffusion region 18 and the drain diffusion region 19. It is formed. Therefore, the source diffusion region 18 and the drain diffusion region 19 are electrically insulated when the read voltage is not applied to the control gate electrode 23, and the source diffusion region when the read voltage is applied to the control gate electrode 23. The region 18 and the drain diffusion region 19 are electrically connected.
[0047]
Here, whether the selected flash memory cell 16 is in the erased state or in the written state can be read as follows. That is, a read voltage is applied to the control gate electrodes 23 of all the flash memory cells 16 other than the selected flash memory cell 16 among the plurality of flash memory cells 16 connected in series. It is detected whether or not a current flows through the series body of cells 16. As a result, if a current flows through the series body, it can be determined that the selected flash memory cell 16 is in the erased state. If no current flows through the series body, the selected flash memory cell 16 It can be determined that it is in a writing state. In this way, it is possible to read out whether the data held in any flash memory cell 16 included in the serial body is “0” or “1”. However, in the NAND flash memory, data held in two or more flash memory cells 16 included in one serial body cannot be read simultaneously.
[0048]
When the flash memory cell 16 that is in the erased state is changed to the written state, a positive high voltage is applied to the control gate electrode 23, whereby electrons are injected into the floating gate electrode 21 through the tunnel oxide film 20. Is done. Electrons can be injected into the floating gate electrode 21 using an FN tunnel current. On the other hand, when the flash memory cell 16 that is in the written state is changed to the erased state, a negative high voltage is applied to the control gate electrode 23, and as a result, it is accumulated in the floating gate electrode 21 through the tunnel oxide film 20. Electrons are discharged.
[0049]
Next, a specific configuration of the address space of each flash memory chip 2-0 to 2-n will be described.
[0050]
FIG. 5 is a diagram schematically showing the structure of the address space of the flash memory chip 2-0.
[0051]
As shown in FIG. 5, the address space of the flash memory chip 2-0 is configured by 8192 physical blocks including physical blocks # 0 to # 8191. Further, although not shown in FIG. 5, other flash memory chips such as the flash memory chip 2-n also have 8192 physical blocks including physical blocks # 0 to # 8191 as in the flash memory chip 2-0. It is constituted by. Each of these physical blocks has a storage capacity of 16 Kbytes.
[0052]
Here, each physical block is a data erasing unit. That is, in the flash memory chips 2-0 to 2-n, the state of each flash memory cell 16 cannot be changed from the written state to the erased state, and the flash memory cell 16 is erased from the written state. In the case of changing to, all flash memory cells 16 included in the physical block to which the flash memory cell 16 belongs are collectively erased. On the contrary, in the flash memory chips 2-0 to 2-n, the state of each flash memory cell 16 can be changed from the erased state to the written state.
[0053]
Further, as shown in FIG. 5, each of the physical blocks # 0 to # 8191 configuring the flash memory chip 2-0 is configured by 32 physical pages each including physical pages # 0 to # 31. Also, the physical blocks # 0 to # 8191 constituting the other flash memory chips such as the flash memory chip 2-n are respectively similar to the physical blocks # 0 to # 8191 constituting the flash memory chip 2-0. It consists of 32 physical pages.
[0054]
Each of these pages is an access unit for reading and writing data. As shown in FIG. 5, 8 bits consisting of bits b0 to b7 are defined as 1 byte, and a user area 25 of 512 bytes and a redundant area 26 of 16 bytes, respectively. Consists of. The user area 25 is an area in which user data supplied from the host computer 5 is stored.
[0055]
Here, each of the flash memory chips 2-0 to 2-n is a chip called “bank type”, and each block is classified into any bank having an independent register. A plurality of blocks belonging to different banks can be simultaneously written to each other and can be simultaneously erased from each other.
[0056]
FIG. 6 schematically shows a bank structure of the flash memory chip 2-0.
[0057]
As shown in FIG. 6, the physical blocks # 0 to # 8191 constituting the flash memory chip 2-0 are classified into four banks including banks # 0 to # 3. Specifically, physical block # 4m (m is an integer from 0 to 2047) belongs to bank # 0, physical block # 4m + 1 belongs to bank # 1, physical block # 4m + 2 belongs to bank # 2, and physical block # 4m + 3. Belongs to bank # 3.
[0058]
The flash memory chip 2-0 includes four registers consisting of registers # 0 to # 3. These registers # 0 to # 3 correspond to the banks # 0 to # 3, respectively. Each of these registers # 0 to # 3 can temporarily hold data for one page. In other words, when data is read from a physical block belonging to bank # 0, the read data is once held in register # 0 and then transferred to controller 3 via bus 15 and physical block belonging to bank # 0. When data is written to the data, the data transferred from the controller 3 via the bus 15 is once held in the register # 0 and then written to a predetermined physical block. In the above operation, the registers # 1 to # 3 are used in the same way for reading and writing data to the physical blocks belonging to the banks # 1 to # 3.
[0059]
In addition, data transfer operation (data read) from each physical block to the corresponding register and data transfer operation (data write) from each register to the corresponding physical block can be executed independently in each bank. It is. Therefore, the flash memory chip 2-0 can write data for four pages in parallel. In addition, parallel block erasure can be performed on a plurality of physical blocks belonging to different banks.
[0060]
Although not shown in FIG. 6, other flash memory chips such as the flash memory chip 2-n also have four blocks each having banks # 0 to # 3 as in the flash memory chip 2-0. The registers are classified into banks, and registers # 0 to # 3 corresponding to the banks are provided.
[0061]
FIG. 7 is a diagram schematically showing the data structure of the redundant area 26.
[0062]
As shown in FIG. 7, the redundant area 26 includes an error collection code storage area 27, a virtual block address storage area 28, and other additional information.
[0063]
The error collection code storage area 27 is an area for storing additional information (error collection code) for correcting an error in the user data stored in the corresponding user area 25, and the data stored in the user area 25. If the number of errors in the data included in the error correction code is equal to or less than a predetermined number, the error correction code stored in the error correction code storage area 27 can be corrected to obtain correct data.
[0064]
The virtual block address storage area 28 is an area for storing the address (virtual block address) and cell number of the virtual block to which the physical block belongs. Details of the virtual block, the virtual block address, and the cell number will be described later.
[0065]
The other areas of the redundant area 26 store a block status or the like that displays an abnormality regarding the block, but the description thereof is omitted.
[0066]
Thus, each page is composed of a 512-byte user area 25 and a 16-byte redundant area 26, so that each page is composed of 8 × (512 bytes + 16 bytes) = 4224 flash memory cells. Become.
[0067]
In this way, each flash memory chip 2-0 to 2-n is composed of 8192 physical blocks, so that there are 8192 × (n + 1) physical blocks in total. These 8192 × (n + 1) physical blocks are classified into a plurality of zones as described in detail below.
[0068]
FIG. 8 is a diagram showing a zone configuration when the flash memory system 1 operates in the “chip type mode”.
[0069]
As shown in FIG. 8, when the flash memory system 1 operates in the “chip type mode”, the physical blocks constituting the flash memory chips 2-0 to 2-n have their own physical block addresses. A zone corresponding to a quotient when divided by 1024 is classified. That is, all the physical blocks # 0 to # 1023 constituting the flash memory chips 2-0 to 2-n belong to the zone # 0, and the physical blocks # 1024 to # 1024 constituting the flash memory chips 2-0 to 2-n. # 2047 all belongs to zone # 1. In this way, the physical blocks constituting each flash memory chip 2-0 to 2-n are classified into eight zones consisting of zones # 0 to # 7.
[0070]
FIG. 9 is a diagram showing a zone configuration when the flash memory system 1 operates in the “bank type mode”.
[0071]
As shown in FIG. 9, when the flash memory system 1 operates in the “bank type mode”, each flash memory chip 2-0 to 2-n has one zone for every 4096 physical blocks. Accordingly, the physical blocks constituting the flash memory chip 2-0 are classified into zones # 0 and # 1, and the physical blocks constituting the flash memory chip 2-n are classified into zones # 2n and # 2n + 1. The Therefore, when n = 2 (the number of chips = 3), the physical blocks constituting the flash memory chips 2-0 to 2-n are classified into six zones including zones # 0 to # 5. become.
[0072]
Thus, when the flash memory system 1 operates in the “chip type mode”, each zone is composed of 1024 × (n + 1) physical blocks, of which 1000 × (n + 1) physical The blocks are handled as blocks that can actually store data (hereinafter referred to as “actually used blocks”), and the remaining 24 × (n + 1) physical blocks are handled as redundant blocks. The address space of the flash memory chips 2-0 to 2-n is composed only of actual use blocks. More specifically, when the flash memory system 1 operates in the “chip type mode”, the 1024 × (n + 1) physical blocks included in each zone are classified into 1024 based on the flash memory chip to which each belongs. Of these, 1000 physical blocks are treated as actual used blocks, and the remaining 24 physical blocks are treated as redundant blocks. Further, when the flash memory system 1 operates in the “bank type mode”, the 4096 physical blocks included in each zone are classified into 1024 based on the bank to which each belongs, of which 1000 Are used as actual used blocks, and the remaining 24 physical blocks are handled as redundant blocks. In the present specification, as described above, each region classified into 1024 in each zone may be referred to as a “slot”.
[0073]
Here, when a defect occurs in a physical block and becomes unusable, the number of physical blocks allocated as redundant blocks in the slot of the zone is reduced by the number of physical blocks in which the defect has occurred. If a defect occurs in more than 24 physical blocks in a slot in a zone, the physical block belonging to another slot in the zone is used as an actual used block, and thus 1000 actual blocks in the slot are used. Secure used blocks. In the present specification, the process of substituting a physical block belonging to another slot in the zone as an actual use block may be referred to as “substitution process”.
[0074]
Further, in the flash memory system 1 according to the present embodiment, in the case of operating in any of the “chip type mode” and the “bank type mode”, a plurality selected from each slot for each zone. A “virtual block” in which the actual used blocks are virtually combined is configured. As a result, a maximum of 1000 virtual blocks including virtual blocks # 0 to # 999 are configured for each zone. However, if a defect occurs in more than 24 physical blocks in a slot in a certain zone and the above-described substitution processing is performed, two or more actual flash memory chips are used in the “chip type mode”. A used block may be selected. In the “bank type mode”, two or more actual used blocks may be selected from the same bank.
[0075]
Here, when the flash memory system 1 operates in the “chip type mode”, each virtual block has 2 bits when X is the number of bits necessary for binary display of n.xAn actual use block that is composed of “cells” and is selected from the corresponding slot is allocated to each cell. Thus, the number of cells constituting the virtual block (2x) Is determined in relation to the number of flash memory chips (n + 1). Number of cells constituting the virtual block (2x) And the number of flash memory chips (n + 1) are summarized as shown in FIG.
[0076]
In this case, the number of cells (2x) Exceeds the number (n + 1) of flash memory chips, the cell corresponding to the number exceeds the invalid cell (dummy cell). For example, when the number of flash memory chips (n + 1) is 3 or 4, the number of cells (2x) Is "4", and a virtual block is composed of cells # 0 to # 3, but when the number of flash memory chips (n + 1) is 3, only cells # 0 to # 2 are valid. Cell # 3 is a dummy cell.
[0077]
FIG. 11 is a diagram illustrating an example of virtual block mapping in the “chip type mode”.
[0078]
The example shown in FIG. 11 is an example of mapping of a virtual block belonging to zone # 0 when n = 2 (number of chips = 3), and physical block # 150 included in flash memory chip 2-0. The physical block # 961 included in the flash memory chip 2-1 and the physical block # 1023 included in the flash memory chip 2-2 are virtually combined to form one virtual block. Thus, in the “chip type mode”, in principle, each physical block constituting one virtual block needs to belong to different flash memory chips. In this case, as is apparent from FIG. 10, when n = 2 (the number of chips = 3), the number of cells constituting each virtual block is four. A physical block is allocated, and the remaining one cell becomes a dummy cell. No physical block is assigned to the dummy cell. In this manner, a maximum of 1000 virtual blocks are configured for each zone, and a maximum of 8000 virtual blocks are configured in the entire flash memory system 1.
[0079]
FIG. 12 is a diagram illustrating an example of virtual block mapping when substitution processing is performed in the “chip type mode”.
[0080]
This example is an example of mapping when a defect occurs in more than 24 physical blocks in the flash memory chip 2-0 in the zone # 0. The physical block # 961 included in the flash memory chip 2-1, the flash The physical block # 1 included in the memory chip 2-2 and the physical block # 1023 included in the flash memory chip 2-2 are virtually combined to form one virtual block. As described above, when substitution processing is performed in the “chip type mode”, two or more physical blocks belonging to the same flash memory chip may be included in one virtual block.
[0081]
FIG. 13 is a diagram showing a virtual page structure of the virtual block shown in FIG.
[0082]
As shown in FIG. 13, the virtual block is composed of a number of virtual pages given by the product of the number of cells and the number of physical pages constituting one physical block. In the case of the virtual block shown in FIG. It is composed of 128 virtual pages consisting of # 0 to virtual page # 127. Here, among the virtual blocks, 32 pages included in the portion including the physical block # 150 are given 4i (i is a physical page number) as a virtual page number and included in the portion including the physical block # 961. 32 pages are assigned a virtual page number of 4i + 1, and 32 pages included in the portion consisting of the physical block # 1023 are assigned a virtual page number of 4i + 2. Further, 4i + 3 is given to the portion corresponding to the dummy cell as a virtual page number.
[0083]
Further, the virtual page structure when the substitution process is performed is the same as the structure shown in FIG. 13, for example, the virtual page structure of the virtual block shown in FIG. 12 is the flash memory chip shown in FIG. The 32 pages included in the portion composed of the 2-0 physical block # 150 are replaced with 32 pages included in the physical block # 1 of the flash memory chip 2-2.
[0084]
FIG. 14 is a diagram illustrating an example of virtual block mapping in the “bank type mode”.
[0085]
The example shown in FIG. 14 is an example of mapping of virtual blocks belonging to zone # 0, and is included in physical block # 4 included in bank # 0, physical block # 3241 included in bank # 1, and bank # 2. Physical block # 2002 and physical block # 4095 included in bank # 3 are virtually combined to form one virtual block. Thus, in the “bank type mode”, in principle, the four physical blocks constituting one virtual block need to belong to different banks. In this manner, a maximum of 1000 virtual blocks are configured for each zone, and a maximum of 8000 virtual blocks are configured in the entire flash memory system 1.
[0086]
FIG. 15 is a diagram illustrating an example of virtual block mapping when substitution processing is performed in the “bank type mode”.
[0087]
This example is an example of mapping when a defect occurs in more than 24 physical blocks in the bank # 0 in the zone # 0. The physical block # 5 included in the bank # 1 and the physical block included in the bank # 1. Block # 3241, physical block # 2002 included in bank # 2, and physical block # 4095 included in bank # 3 are virtually combined to form one virtual block. As described above, when substitution processing is performed in the “bank type mode”, two or more physical blocks belonging to the same bank may be included in one virtual block.
[0088]
FIG. 16 is a diagram showing a virtual page structure of the virtual block shown in FIG.
[0089]
As shown in FIG. 16, in the “bank type mode” as well, as in the “chip type mode”, each virtual block has a virtual number of the number given by the product of the number of cells and the number of physical pages constituting one physical block. In the case of the virtual block shown in FIG. 14 configured by pages, it is handled as one block configured by 128 virtual pages including virtual page # 0 to virtual page # 127. Here, among the virtual blocks, 32 pages included in the portion including the physical block # 4 are given 4i (i is a physical page number) as a virtual page number, and are included in the portion including the physical block # 3241. 32 pages are given a virtual page number of 4i + 1, and 32 pages included in the portion consisting of physical block # 2002 are given a virtual page number of 4i + 2 and included in a portion consisting of physical block # 4095. These 32 pages are given 4i + 3 as the virtual page number.
[0090]
Further, the virtual page structure when the substitution processing is performed is the same as the structure shown in FIG. 16, for example, the virtual page structure of the virtual block shown in FIG. 15 is the bank # 0 shown in FIG. The 32 pages included in the portion consisting of the physical block # 4 are replaced with 32 pages included in the physical block # 5 of the bank # 1.
[0091]
Further, regardless of the mode in which the flash memory system 1 operates, a “physical address” is assigned to each physical block included in each zone. Here, the “physical address” is an intermediate address used for specifying a physical block in each zone, and is assigned to a “virtual block address” used for specifying a virtual block number or each physical block. This is an address different from the unique “physical block address”. The physical address is assigned as follows.
[0092]
First, when the flash memory system 1 operates in the “chip type mode”, the physical address of each physical block is 2 in the lower 10 bits of the physical block address.XIs given by a value obtained by multiplying by and adding the cell number. For example, when n = 2 to 3 (the number of chips = 3 to 4) and the flash memory system 1 operates in the “chip type mode”, the physical address of each physical block is lower than the physical block address. It is given by a value obtained by multiplying 10 bits by 4 and adding the cell number.
[0093]
FIG. 17 is a diagram showing physical addresses assigned to the physical blocks constituting the zone # 0 when the flash memory system 1 operates in the “chip type mode” when n = 2 (the number of chips = 3). It is.
[0094]
On the other hand, when the flash memory system 1 operates in the “bank type mode”, the physical address of each physical block matches the lower 12 bits of the physical block address. That is, 4096 physical blocks constituting each zone are assigned physical address # 0 (000000000000B) to physical address # 4095 (111111111111B) in the order of physical block addresses.
[0095]
FIG. 18 is a diagram showing physical addresses assigned to the physical blocks constituting zone # 0 when the flash memory system 1 operates in the “bank type mode”.
[0096]
Next, an outline of a method for converting a host address supplied from the host computer 5 into an internal address will be described. Details will be described later.
[0097]
In the flash memory system 1 according to the present embodiment, such address conversion is performed from the “logical block space” corresponding to the host address to the “virtual block space” (first conversion), from the “virtual block space” to “ Conversion to “physical address space” (second conversion) and conversion from “physical address space” to “physical block space” corresponding to the internal address (third conversion) are performed in this order. Here, the conversion from the “logical block space” to the “virtual block space” (first conversion) is performed by an operation using the first conversion program P1 stored in the ROM 33, and the “virtual block space” The conversion from the “physical address space” to the “physical address space” (second conversion) is performed by referring to the address conversion table 29 developed on the SRAM work area 8, and from “physical address space” to “physical block space”. This conversion (third conversion) is performed by calculation using the second conversion program P2 or the third conversion program P3 stored in the ROM 33.
[0098]
FIG. 19 is a schematic diagram showing the data structure of the address conversion table 29 used for the second conversion.
[0099]
The example shown in FIG. 19 is an example of the data structure of the address conversion table 29, and is composed of four tables including tables # 0 to # 3. Each of these tables stores address conversion information related to one zone. Specifically, each of these tables # 0 to # 3 is composed of 1000 virtual block display areas # 0 to # 999, and each of these virtual block display areas # 0 to # 999 is respectively cell # j−. 0 to cell # j-3 (j is a virtual block address) and 4 flags including flag # j-0 to flag # j-3. For example, the virtual block display area # 0 is composed of cell # 0-0 to cell # 0-3 and flag # 0-0 to flag # 0-3, and virtual block display area # 1 is cell # 1-0 to cell # 0. # 1-3 and flag # 1-0 to flag # 1-3.
[0100]
Here, when the flash memory system 1 operates in the “chip type mode”, slots # 0 to #n are used, and other slots are not used. For example, when n = 2 (the number of chips = 3) and the flash memory system 1 operates in the “chip type mode”, slots # 0 to # 2 are used and slot # 3 is not used. . In this case, these slots # 0 to # 2 correspond to the flash memory chips 2-0 to 2-2 (= 2-n) in principle. However, this is not the case when substitution processing is performed. On the other hand, when the flash memory system 1 operates in the “bank type mode”, in principle, the slots # 0 to # 3 correspond to the banks # 0 to # 3, respectively. However, this is not the case when substitution processing is performed.
[0101]
In cells # j-0 to # j-3 included in each virtual block display area, the physical addresses of the physical blocks constituting the virtual block are stored.
[0102]
Also, flag # j-0 to flag # j-3 included in each virtual block indicate whether the content stored in the cell is valid or invalid. Specifically, the content of the corresponding cell is valid if the flag indicates “1”, and the content of the corresponding cell is invalid if the flag indicates “0”. Therefore, the content of the cell whose corresponding flag indicates “0” is ignored.
[0103]
Note that the zone corresponding to each of these tables # 0 to # 3 is indicated by a management table 30 described later. Here, it should be noted that the number of tables (4) included in the address conversion table 29 is smaller than the number of zones (8). In other words, the address conversion table 29 does not store address conversion information related to all zones, and only a part thereof, that is, only the address conversion information for four zones is stored in the tables # 0 to # 3, respectively. .
[0104]
The address conversion table 29 is generated as follows.
[0105]
In the virtual block address storage area 28 included in the redundant area 26 of each first page (physical page # 0) of the block in which data is stored, a virtual block address and a cell indicating which virtual block the physical block belongs to The virtual block address and cell number included in each first page (physical page # 0) of each physical block are read via the flash memory interface block 10 under the control of the microprocessor 6. It is.
[0106]
Here, in the erased empty block, the virtual block address stored in the virtual block address storage area 28 of the redundant area 26 should be “all 1 (1111111111B)”. That is, as described above, the virtual block number is only from # 0 (0000000000000) to # 999 (1111100111B). Therefore, when this is all 1 (1111111111B), the physical block is an erased empty block. It can be judged that there is. On the other hand, when the virtual block addresses stored in the virtual block address storage area 28 of the redundant area 26 are “0000000000000B” to “1111100111B”, the virtual block address is a valid virtual block address.
[0107]
Therefore, the microprocessor 6 refers to the virtual block address included in the redundant area 26 of the first page (physical page # 0) of each physical block belonging to the predetermined zone, and this is not the all 1 but the address of the effective virtual block. If it is shown, the physical address of the physical block is stored in the cell specified by the read virtual block address and the read cell number among the cells constituting the table corresponding to the zone. The conversion method from the physical block address to the physical address is as described above, and differs depending on whether the flash memory system 1 is operating in the “chip type mode” or the “bank type mode”. For example, when the flash memory system 1 in which n = 2 (the number of chips = 3) is operating in the “chip type mode”, the virtual read from the physical block # 14 belonging to the flash memory chip 2-0. If the block address is “123” and the read cell number is “0”, “56” is written in the cell # 123-0 as the physical address corresponding to the physical block # 14. Flag # 123-0 to be set to “1”. Similarly, when the flash memory system 1 is operating in the “bank type mode”, the virtual block address read from the physical block # 14 belonging to the flash memory chip 2-0 is “123”, and the read If the assigned cell number is “2”, “14” is written in the cell # 123-2 as the physical address corresponding to the physical block # 14, and the corresponding flag # 123-2 is set to “1”. Is done.
[0108]
Here, the cell number stored in the virtual block address storage area 28 of the redundant area 26 matches the slot number to which the physical block belongs. This is because when the flash memory system 1 is operating in the “chip type mode”, the cell number and the chip number normally match, and the flash memory system 1 is operating in the “bank type mode”. Means that the cell number and the bank number normally match. However, if a physical block belonging to a slot is used as an actual used block of another slot as a result of the above-described substitution processing, the cell number of the physical block matches the chip number or bank number. do not do. In other words, the cell number stored in the virtual block address storage area 28 is an element provided to enable the substitution process.
[0109]
Such processing is performed for all of the physical blocks constituting the predetermined zone, whereby the corresponding physical block addresses are stored in the virtual block display areas constituting the corresponding table.
[0110]
Then, by performing such processing for predetermined four zones, the address conversion information is expanded in the four tables constituting the address conversion table 29, and the creation of the address conversion table 29 is completed. In addition, it is determined by the management table 30 to be described later about which zone of the eight zones the address conversion information is created.
[0111]
Next, the data structure of the management table 30 stored in the SRAM work area 8 will be described.
[0112]
FIG. 20 is a schematic diagram showing the data structure of the management table 30 stored in the SRAM work area 8.
[0113]
As shown in FIG. 20, the management table 30 includes four zone number storage areas including zone number storage areas # 0 to # 3. Each of these zone number storage areas # 0 to # 3 uses a 1-byte storage area of the SRAM work area 8, and each zone number is stored as 3-bit data. Therefore, the management table 30 occupies 4 bytes of the storage capacity of the SRAM work area 8.
[0114]
The management table 30 indicates which zone # 0 to # 3 constituting the address conversion table 29 stores address conversion information related to. Specifically, the zone number stored in the zone number storage area # 0 indicates that the address conversion information stored in the table # 0 is address conversion information related to the zone, and the zone number storage area # 1 Indicates that the address conversion information stored in the table # 1 is address conversion information related to the zone, and the zone number stored in the zone number storage area # 2 is the table # 2. Indicates that the address conversion information stored in the zone number is address conversion information related to the zone, and the zone number stored in the zone number storage area # 3 is the address conversion information stored in the table # 3. Indicates address translation information related to
[0115]
The management table 30 is generated when the above-described address conversion table 29 is generated under the control of the microprocessor 6.
[0116]
Next, the data structure of the priority link 31 stored in the SRAM work area 8 will be described.
[0117]
FIG. 21 is a schematic diagram showing the data structure of the priority link 31 stored in the SRAM work area 8.
[0118]
As shown in FIG. 21, the priority link 31 includes four pointers including pointers # 0 to # 3. Each of these pointers # 0 to # 3 uses a 1-byte storage area of the SRAM work area 8, and each stores a link destination pointer number or data “NULL”. Therefore, the priority link 31 occupies 4 bytes of the storage capacity of the SRAM work area 8.
[0119]
The priority link 31 is an element indicating the priority order of the four tables (tables # 0 to # 3) constituting the address conversion table 29, and the pointers # 0 to # 3 constituting the priority link 31 are respectively address conversion tables. This corresponds to the tables # 0 to # 3 constituting the data 29.
[0120]
Prior to describing a specific method of indicating the priorities of the four tables constituting the address translation table 29 by the priority link 31, priorities are provided to the four tables # 0 to # 3 constituting the address translation table 29. Explain the necessity.
[0121]
As described above, the number of tables constituting the address conversion table 29 (four tables) is smaller than the number of zones (eight zones). Therefore, the address conversion information developed in the address conversion table 29 is partially Limited to address translation information related to zones. Therefore, when the host computer 5 requests access to a zone in which the address conversion information is not expanded in the address conversion table 29, it is necessary to update the contents of the address conversion table 29. That is, the microprocessor 6 selects any one of the four tables constituting the address conversion table 29, deletes the contents thereof, and stores the address conversion information related to the zone requested to be accessed in the table. Needs to be newly developed. Therefore, in order to select a table whose contents are to be deleted from the four tables constituting the address translation table 29, priority is provided to the four tables constituting the address translation table 29, and the priority is low. The contents need to be deleted in order from the table.
[0122]
For this reason, priority is provided in the four tables constituting the address conversion table 29, and a priority link 31 is provided in order to store such priority.
[0123]
Next, a method for storing the priorities of the tables # 0 to # 3 using the priority link 31 will be described in detail with reference to the drawings.
[0124]
FIG. 22 is a diagram showing a case where the priority link 31 stores table # 0 → table # 1 → table # 2 → table # 3 as the priority order.
[0125]
As shown in FIG. 22, when the priority is in the order of table # 0 → table # 1 → table # 2 → table # 3, “1” is stored in the pointer # 0 as the link destination pointer number. The pointer # 1 stores “2” as the link destination pointer number, the pointer # 2 stores “3” as the link destination pointer number, and the pointer # 3 stores data “NULL”. .
[0126]
As described above, the pointers # 0 to # 3 constituting the priority link 31 correspond to the tables # 0 to # 3 constituting the address conversion table 29, and are stored as link destination pointer numbers in any pointer. The pointer corresponding to the pointer # 0 (table # 0) is the highest priority table. Hereinafter, the pointer indicated by the link destination pointer number “1” stored in the pointer # 0, The table corresponding to the pointer # 1 (table # 1) becomes the next highest priority table, and corresponds to the pointer indicated by the link destination pointer number “2” stored in the pointer # 1, that is, the pointer 2. The table (table # 2) becomes the next highest priority table and is stored in the pointer # 2. Pointer indicated by the link destination pointer number "3", i.e., a table (Table # 3) corresponding to the pointer # 3 is the lowest priority table. As a result, the priorities are in the order of table # 0 → table # 1 → table # 2 → table # 3. Data “NULL” is stored in the pointer # 3 corresponding to the table having the lowest priority.
[0127]
When the host computer 5 accesses, for example, a zone corresponding to the table # 2 in a state in which such priority order is stored in the priority link 31, as described below, the priority link 31 The stored priority is changed, and the priority of the table # 2 corresponding to the currently accessed zone becomes the highest.
[0128]
FIG. 23 is a diagram illustrating a case where table # 2 → table # 0 → table # 1 → table # 3 is stored as priority by the priority link 31.
[0129]
As shown in FIG. 23, if the zone corresponding to the table # 2 is accessed in a state in which the priority order is the order of the table # 0 → the table # 1 → the table # 2 → the table # 3, the micro Under the control of the processor 6, the link destination pointer number that is the content of the pointer # 1 is changed to “3”, and the link destination pointer number that is the content of the pointer # 2 is changed to “0”. Such an operation is performed according to the following procedure.
[0130]
First, the contents of the pointer (pointer # 1) in which the same number as the table number “2” of the table corresponding to the currently accessed zone is stored as the link destination pointer number is stored in the table corresponding to the currently accessed zone. The pointer number “3” stored in the corresponding pointer (pointer # 2) is rewritten. Next, the contents of the pointer (pointer # 2) corresponding to the table corresponding to the currently accessed zone are rewritten to the pointer number “0” corresponding to the table having the highest priority as the link destination pointer number. As a result, as described above, the link destination pointer number that is the content of the pointer # 1 is changed to “3”, and the link destination pointer number that is the content of the pointer # 2 is changed to “0”.
[0131]
In the priority link 31 whose contents are rewritten in this way, the pointer not stored as the link destination pointer number in any pointer, that is, the table corresponding to the pointer # 2 (table # 2) has the highest priority. Hereinafter, the pointer indicated by the link destination pointer number “0” stored in the pointer # 2, that is, the table corresponding to the pointer # 0 (table # 0) becomes the next highest priority table. The pointer indicated by the link destination pointer number “1” stored in the pointer # 0, that is, the table corresponding to the pointer # 1 (table # 1) becomes the next highest priority table and is stored in the pointer # 1. The pointer indicated by the link destination pointer number “3”, that is, pointer # 3 Corresponding table (Table # 3) is the lowest priority table. As a result, the priorities are in the order of table # 2 → table # 0 → table # 1 → table # 3. Data “NULL” is stored in the pointer # 3 corresponding to the table having the lowest priority.
[0132]
By such an operation, the priority order of the table (table # 2) corresponding to the currently accessed zone becomes the highest, and the subsequent priority order is the same as the previously stored priority order.
[0133]
Similarly, when the host computer 5 accesses, for example, a zone corresponding to the table # 3 in a state where such priority order is stored in the priority link 31, the contents of the pointer # 1 are displayed. The link destination pointer number is changed to data “NULL”, the link destination pointer number that is the contents of pointer # 3 is changed to “2”, and the priority order is table # 3 → table # 2 → table # 0 → table #. 1 is changed.
[0134]
FIG. 24 is a diagram showing a case where the priority link 31 stores table # 3 → table # 2 → table # 0 → table # 1 as priority.
[0135]
Now, in a state where such priority order is stored in the priority link 31, the host computer 5 accesses a zone in which no address conversion information is stored in any table constituting the address conversion table 29. The case will be described.
[0136]
When the host computer 5 accesses a zone in which no address translation information is stored in any of the tables constituting the address translation table 29, the table having the lowest priority order is controlled under the control of the microprocessor 6. The stored contents (address conversion information) are deleted, and instead, address conversion information related to the zone to which access is requested is newly created on the table. The search of the table with the lowest priority is performed by searching for the pointer storing the data “NULL” among the pointers # 0 to # 3 constituting the priority link 31. As described above, when the contents of the priority link 31 are in the state shown in FIG. 24, the pointer storing “NULL” is the pointer # 1, so the table # corresponding to the pointer # 1 is the table #. It is detected that the priority of 1 is the lowest.
[0137]
A method for updating a table is the same as the method for creating the address conversion table 29 described above, and is included in the redundant area 26 of the first page (physical page # 0) of each physical block belonging to the zone requested to be accessed. The virtual block addresses to be read are read one after another, and thereby, the address conversion information related to the zone requested to be accessed is developed on the table to be updated (table # 1 in the above example).
[0138]
In this way, when the address conversion information stored in the table # 1 having the lowest priority is rewritten, the table # 1 is a table corresponding to the zone to which the current access is requested. Under the control of the processor 6, the contents of the management table 30 are updated. Further, under the control of the microprocessor 6, the priority stored by the priority link 31 is changed, and the priority of the table # 1 that has been updated and accessed is the highest.
[0139]
FIG. 25 is a diagram illustrating a case where the priority link 31 stores table # 1 → table # 3 → table # 2 → table # 0 as the priority order.
[0140]
As shown in FIG. 25, in the state in which the priority is in the order of table # 3 → table # 2 → table # 0 → table # 1, the host computer 5 sends any table that constitutes the address conversion table 29 to any table. When access is made to a zone in which no address translation information is stored, under the control of the microprocessor 6, the data that is the content of the pointer # 0 is changed to “NULL” and the link destination that is the content of the pointer # 1. The pointer number is changed to “3”. Since this operation is the same as the above-described procedure, a duplicate description is omitted.
[0141]
As a result, the priorities are in the order of table # 1 → table # 3 → table # 2 → table # 0. Data “NULL” is stored in the pointer # 0 corresponding to the table having the lowest priority.
[0142]
In this way, the priority link 31 can determine the priority order for each of the tables # 0 to # 3 based on the access history and store this.
[0143]
Next, the data structure of the erased block queue stored in the SRAM work area 8 will be described.
[0144]
The erased block queue is constituted by a queue set corresponding to each table constituting the address conversion table 29, and each queue set stores empty block information corresponding to each slot.
[0145]
FIG. 26 is a schematic diagram showing an example of the data structure of the erased block queue 32 stored in the SRAM work area 8.
[0146]
The example shown in FIG. 26 is an example of the data structure of the erased block queue 32, and is configured by eight queue sets including queue sets # 0 to # 7, which are respectively queue # k-0 to queue #. It is composed of four queues consisting of k-3 (k is a queue set number). For example, the queue set # 0 includes queues # 0-0 to # 0-3, and the queue set # 1 includes queues # 1-0 to # 1-3. Therefore, the erased block queue 32 is composed of 32 queues.
[0147]
Here, queue # k-0 corresponds to slot # 0, queue # k-1 corresponds to slot # 1, queue # k-2 corresponds to slot # 2, and queue # k-3 corresponds to slot # 1. 3 is supported. Therefore, when the flash memory system 1 operates in the “chip type mode”, slots # 0 to #n are used, and other slots are not used, as in the address conversion table 29. For example, when n = 2 (the number of chips = 3) and the flash memory system 1 operates in the “chip type mode”, slots # 0 to # 2 are used and slot # 3 is not used. . In this case, these slots # 0 to # 2 correspond to the flash memory chips 2-0 to 2-2 (= 2-n) in principle. However, this is not the case when substitution processing is performed. On the other hand, when the flash memory system 1 operates in the “bank type mode”, in principle, the slots # 0 to # 3 correspond to the banks # 0 to # 3, respectively. However, this is not the case when substitution processing is performed.
[0148]
Queues # k-0 to # k-3 constituting each queue set # 0 to # 7 store physical addresses of physical blocks in which all flash memory cells 16 constituting the user area 25 are in the erased state. Is done.
[0149]
Queue sets # 0 and # 1 are queue sets corresponding to table # 0, queue sets # 2 and # 3 are queue sets corresponding to table # 1, and queue sets # 4 and # 5 are table #. Queue sets corresponding to 2, and queue sets # 6 and # 7 are queue sets corresponding to table # 3.
[0150]
The generation of the erased block queue 32 is performed when the above-described address conversion table 29 is generated under the control of the microprocessor 6 and is stored in these queues from among the redundant blocks waiting for data writing. A physical block to be registered is selected. For example, when n = 2 (the number of chips = 3) and the flash memory system 1 operates in the “chip type mode”, the erased blocks registered in the queues # k-0 to # k-2 are In principle, the redundant blocks belonging to the flash memory chips 2-0 to 2-2 (= 2-n) are selected. However, this is not the case when an alternative process is performed. When the flash memory system 1 operates in the “bank type mode”, the erased blocks registered in the queues # k-0 to # k-3 are in principle redundant blocks belonging to the banks # 0 to # 3, respectively. Chosen from. However, this is not the case when an alternative process is performed.
[0151]
Next, details of a method for converting a host address supplied from the host computer 5 into an internal address will be described.
[0152]
As described above, in the flash memory system 1 according to the present embodiment, such address conversion is performed from the “logical block space” corresponding to the host address to the “virtual block space” (first conversion), “virtual block” Conversion from “space” to “physical address space” (second conversion) and conversion from “physical address space” to “physical block space” corresponding to the internal address (third conversion) are performed in this order.
[0153]
First, the first conversion will be described.
[0154]
The first conversion is a step of specifying any cell included in the address conversion table 29 based on the host address, and the microprocessor 6 executes the first conversion program P1 stored in the ROM 33. Done.
[0155]
In the first conversion based on the first conversion program P1, the host address is first divided by the number of valid pages included in one zone regardless of which mode the flash memory system 1 is operating in. . Such division is performed by an integer operation (rounded down to the nearest decimal point), and its quotient (A) and remainder (B) are obtained. The obtained quotient (A) indicates the zone number to which the physical page to be accessed belongs. Here, the number of valid pages is defined by the product of the number of actually used blocks included in one zone and the number of physical pages constituting one physical block. For example, when n = 2 (the number of chips = 3) and operating in the “chip type mode”, the number of valid pages included in one zone is 96,000 (10111011100000000B) (= 3 chips × 1000 blocks × 32). As an example, if the host address is “010101010101010101010B”, the quotient (A) obtained by the above division is 3 (011B), and the remainder (B) is 61525 (1111000001010101B). In this case, the zone to which the physical page to be accessed belongs is zone # 3.
[0156]
Here, which table corresponds to the zone # 3 is displayed in the management table 30 as described above. In this example, among the zone number storage areas # 0 to # 3, the table corresponding to the zone number storage area in which “011B (3)” is stored as the zone number is the table corresponding to zone # 3. If “011B (3)” is not stored as a zone number in any of the zone number storage areas # 0 to # 3, the table with the lowest priority is updated with reference to the priority link 31 described above. Accordingly, the contents of the management table 30 are updated.
[0157]
Next, under the control of the microprocessor 6, the remainder (B) obtained by the division is divided by the number of physical pages constituting one virtual block. Such division is also performed by integer arithmetic (truncating after the decimal point), and the virtual block display area in the corresponding table is specified by the quotient (C). For example, when n = 2 (number of chips = 3) and operating in the “chip type mode”, the number of physical pages constituting one virtual block is 96 (1100000 B) (= 3 blocks × 32 pages). Therefore, as described above, if the obtained remainder (B) is 61525 (1111000001010101B), the quotient (C) obtained by the above division is 640 (1010000000B). In this case, the virtual block display area to be selected is the virtual block display area # 640.
[0158]
Further, under the control of the microprocessor 6, the host address is divided by the number of physical pages constituting one virtual block, and the remainder (D) is obtained. For example, when n = 2 (the number of chips = 3) and operating in the “chip type mode”, as described above, the number of physical pages constituting one virtual block is 96 (1100000B). If the host address is “01010101010101010101B”, the remainder (D) obtained by the above division is 85 (1010101B). Then, the calculation shown in the following equation (1) is performed, and the virtual page number corresponding to the physical page to be accessed is specified by the obtained value (E).
[0159]
[Equation 3]
Figure 0003999959
Note that the division included in equation (1) is also performed by integer arithmetic (rounding down the decimal point). Therefore, when operating in the “chip type mode”, since n = 2 (number of chips = 3), if the number of valid cells is “3” and the number of invalid cells is “1”, the above division is obtained. The virtual page number to be assigned is 113 (1110001B).
[0160]
Next, a predetermined cell in the selected virtual block display area is specified based on the lower two bits of the virtual page number obtained by the calculation according to the expression (1). For example, when the virtual block display area # 640 is selected as described above and the obtained virtual page number is “113 (1110001B)”, the selected cell is the cell # 640-1.
[0161]
Thus, the first conversion is completed. As described above, since the conversion is performed by a common step regardless of which mode the flash memory system 1 is operating in, the size of the first conversion program P1 may be small. The amount of ROM 33 occupied by the conversion program P1 is very small.
[0162]
Next, the second conversion will be described.
[0163]
The second conversion is a step of acquiring a physical address using the address conversion table 29, and is performed by reading the physical address stored in the cell specified in the first conversion. For example, when cell # 640-1 is specified in the first conversion as described above, if the content of the cell is “101010101010B (2730)”, the physical address obtained by the second conversion is It becomes the physical address # 2730.
[0164]
Next, the third conversion will be described.
[0165]
The third conversion is a step of finally generating an internal address based on the physical address or the like obtained by the second conversion. When the flash memory system 1 is operating in the “chip type mode”, Is performed by the microprocessor 6 executing the second conversion program P2 stored in the ROM 33. When the flash memory system 1 is operating in the “bank type mode”, the second conversion program P2 is stored in the ROM 33. This is performed by the microprocessor 6 executing the third conversion program P3. That is, the conversion is performed in different ways depending on which mode the flash memory system 1 is operating in.
[0166]
First, in the third conversion using the second conversion program P2 (when the flash memory system 1 is operating in the “chip type mode”), the lower 2 bits of the physical address, the quotient A (3 bits) The upper 10 bits of the physical address and the upper 5 bits of the virtual page number obtained by the calculation according to equation (1) are combined in this order to generate an internal address. For example, as described above, if the quotient A is “011B”, the physical address obtained in the second translation is “101010101010B”, and the upper 5 bits of the virtual page number are “11100B”, the obtained 20 The internal address of the bit is “1001111010101011100B”.
[0167]
On the other hand, in the third conversion using the third conversion program P3 (when the flash memory system 1 is operating in the “bank type mode”), the quotient A (3 bits), the physical address (12 bits), and The upper 5 bits of the virtual page number are combined in this order to generate an internal address. In the same example as described above, the obtained 20-bit internal address is “011101010101011100B”.
[0168]
As will be described in detail below, in the 20-bit internal address, the upper 2 bits are used to specify the flash memory chip to be accessed, and the 13 bits consisting of the upper 3 bits to the upper 15 bits are selected. The flash memory chip is used to specify a physical block to be accessed, and the lower 5 bits are used to specify a physical page to be accessed in the selected physical block.
[0169]
Thus, the third conversion is completed. As described above, since the conversion is performed by a simple conversion operation in both cases of using the second conversion program P2 and the third conversion program P3, the second and third conversion programs are used. The size of each of the conversion programs P2 and P3 may be small. Therefore, the amount of ROM 33 occupied by the second and third conversion programs P2 and P3 is very small.
[0170]
Next, the data read operation and data write operation of the flash memory system 1 according to the present embodiment will be described for each of the case of operating in the “chip type mode” and the case of operating in the “bank type mode”.
[0171]
First, a data read operation when the flash memory system 1 according to the present embodiment operates in the “chip type mode” will be described.
[0172]
Here, when n = 2 (the number of chips = 3), the host computer 5 sends a host address, for example, “external command” and an external read command via the bus 14, connector 4, and bus 13, for example, “ A case where “0000011111111110000B” is supplied to the flash memory system 1 will be described as an example.
[0173]
First, when a host address and an external read command are supplied to the controller 3, the host address and the external read command are temporarily stored in a task file register (not shown) included in the host interface block 7.
[0174]
Next, whether or not the host address stored in the task file register (not shown) is a correct address, that is, whether or not the host address indicates a physical address that does not originally exist or an invalid address. This is determined by the host interface block 7.
[0175]
As a result of the determination, if it is determined that the host address stored in the task file register (not shown) is a valid address, it is converted into an internal address by the first to third conversions described above. On the other hand, if it is determined that this is an abnormal address, an error register (not shown) included in the host interface block 7 is set, and the host computer knows that an error has occurred by referring to the contents of the register. be able to.
[0176]
In this example, since the host address is “0000011111111110000B”, the quotient A obtained by the division performed in the first conversion is “000B (0)”, and the obtained remainder B is “11111111110000000B (32736)”. . Therefore, the selected zone is zone # 0. Further, the quotient C obtained by the division performed in the first conversion is “101010101 (341)”, and the selected virtual block display area is the virtual block display area # 341 in the corresponding table. Further, since the value E obtained by the calculation performed in the first conversion is “0000000B (0)”, the selected cell is the cell # 341-0. Here, which table is the table corresponding to the zone # 0 is displayed in the management table 30 as described above, and in this example, as the zone number among the zone number storage areas # 0 to # 3. The table corresponding to the zone number storage area in which “000B (0)” is stored is the table corresponding to zone # 0. If none of the zone number storage areas # 0 to # 3 stores “000B (0)” as a zone number, the table with the lowest priority is updated with reference to the priority link 31 described above. Accordingly, the contents of the management table 30 are updated.
[0177]
In this example, it is assumed that the content of the cell # 341-0 is “100100001100B”. Since this example is a data read operation, the flag # 341-0 should be “1 (valid)”. Therefore, if flag # 341-0 is “0 (invalid)”, an error occurs.
[0178]
In this example, since the flash memory system 1 operates in the “chip type mode”, the second conversion program P2 is used in the third conversion, thereby generating the internal address “000001000100100100B”. Is done.
[0179]
Thus, the conversion from the host address to the internal address is completed.
[0180]
On the other hand, in response to the external read command being stored in a task file register (not shown) of the host interface block 7, a register (not shown) of the flash sequencer block 12 under the control of the microprocessor 6. )) Is set. Such setting is performed as follows.
[0181]
First, an internal read command, which is a kind of internal command, is set in a predetermined register (not shown) in the flash sequencer block 12 under the control of the microprocessor 6. Further, under the control of the microprocessor 6, an internal address having a 20-bit length is set in a predetermined register (not shown) in the flash sequencer block 12.
[0182]
When the settings for the various registers included in the flash sequencer block 12 are thus completed, a series of read operations by the flash sequencer block 12 is executed. A series of read operations by the flash sequencer block 12 is as follows.
[0183]
First, the flash sequencer block 12 is based on the upper 2 bits of the internal address stored in a predetermined register, and the flash memory chip 2-0 to 2-2 (= 2-n) to which the page to be accessed belongs. The flash memory interface block 10 is instructed to activate a chip selection signal corresponding to the memory chip. In this case, since the upper 2 bits of the internal address are “00B (0)”, the flash memory chip to which the page to be accessed belongs is the flash memory chip 2-0, and the chip selection signal # 0 is activated. . As a result, the flash memory chip 2-0 is ready to read data. On the other hand, the chip selection signals # 1 to # 2 (= n) are kept in an inactive state.
[0184]
Next, the flash sequencer block 12 supplies the low-order 18 bits “000100100001100000B” of the internal address stored in the predetermined register to the bus 15 together with the internal read command stored in the predetermined register. To instruct. The 18-bit internal address and internal read command supplied to the bus 15 are commonly supplied to the flash memory chips 2-0 to 2-2 (= 2-n). As described above, the chip selection signal # Since 0 is in the active state and the chip selection signals # 1 to # 2 (= n) are in the inactive state, the internal address and the internal read command supplied to the bus 15 are stored in the flash memory chip 2- Valid only for zero.
[0185]
In response to this, the flash memory chip 2-0 executes reading of data stored in the physical page corresponding to the lower 18 bits “000100100001100000B” of the supplied internal address. Here, in the supplied 18-bit address “000100100001100000B”, the upper 13 bits specify a physical block, and the lower 5 bits are used to specify a physical page in the physical block. In this case, since the upper 13 bits are “0001001000011B (579)” and the lower 5 bits are “00000B (0)”, the specified physical block is block # 579, and the specified physical page is physical page #. 0. That is, the flash memory chip 2-0 executes reading of data stored in the physical page # 0 of the block # 579. In such a read operation, not only user data stored in the user area 25 but also various additional information stored in the redundant area 26 are read.
[0186]
As described with reference to FIG. 13, in this embodiment, since three physical blocks are virtually combined to form one virtual block, physical block # 579 belonging to the flash memory chip 2-0. The physical page # 0 corresponds to the physical page # 0 of the virtual block # 341.
[0187]
The user data and additional information read from the flash memory chip 2-0 in this way are supplied to the flash memory interface block 10 via the bus 15. When the flash memory interface block 10 receives the user data and the additional information, under the control of the flash sequencer block 12, the error collection code included in the additional information is extracted, and the user data and the extracted error collection code are stored in the ECC block 11. To be supplied. When the user data and the error collection code are supplied to the ECC block 11, the ECC block 11 determines whether or not there is an error in the user data based on the error collection code. If it is determined that there is no error, the ECC block 11 is supplied. The stored user data is stored in the buffer 9 as it is, and if it is determined that there is an error, this is corrected based on the error collection code, and the corrected user data is stored in the buffer 9. When user data without error is stored in the buffer 9 in this way, a series of read operations by the flash sequencer block 12 is completed.
[0188]
The user data stored in the buffer 9 is supplied from the host interface block 7 to the host computer 5 through the bus 13, the connector 4, and the bus 14 under the control of the microprocessor 6.
[0189]
Thus, a series of read operations is completed.
[0190]
The above is the operation in the case of n = 2 (the number of chips = 3). However, even if the number of n is other than this, several values are obtained in the calculation using the first conversion program P1. Reading can be performed by basically the same operation only by changing. That is, according to the present embodiment, even when operating in the “chip type mode”, it is possible to read data by substantially the same operation regardless of the number of mounted flash memories.
[0191]
Next, a data read operation when the flash memory system 1 according to this embodiment operates in the “bank type mode” will be described.
[0192]
The data read operation when the flash memory system 1 operates in the “bank type mode” is the same as the data read operation when the flash memory system 1 operates in the “chip type mode” except that the address conversion method is different.
[0193]
That is, in this example, since the flash memory system 1 is operating in the “bank type mode”, the number of valid cells is 4 and the number of invalid cells is 0. Therefore, as in the above example, the host address is If “0000011111111110000B”, the quotient C obtained in the first conversion is “0011111111B (255)”, and the value E is “1100000B (96)”. That is, the selected virtual block display area is the virtual block display area # 255, and the selected cell is the cell # 255-0. Further, in the third conversion, the third conversion program P3 is used. Thus, when the content of the corresponding cell # 255-0 is “100100001100B”, the internal address “00010010000110011000B” is generated.
[0194]
As a result, the specified physical block becomes the physical block # 2316 in the flash memory chip 2-0, and the specified physical page becomes the physical page # 24. In other words, the flash memory chip 2-0 executes reading of data stored in the physical page # 24 of the physical block # 2316. In this case, the physical page # 24 of the physical block # 2316 belonging to the flash memory chip 2-0 corresponds to the virtual page # 96 of the virtual block # 255.
[0195]
Next, a data write operation when the flash memory system 1 according to this embodiment operates in the “chip type mode” when n = 2 (the number of chips = 3) will be described.
[0196]
In the data write operation, the operation differs when there is no virtual block to be accessed (when data is newly written) and when the virtual block to be accessed already exists (when data is overwritten). Therefore, each case will be described.
[0197]
Write operation 1 (when writing data to an empty block (when operating in “chip type mode”))
When data is written to an empty block, that is, in a new data write operation, a virtual block is generated, redundant data is written to virtual pages # 0 to # 2 of the generated virtual block, and a predetermined virtual value of the generated virtual block is set. User data is written to the page.
[0198]
Here, from the host computer 5 via the bus 14, the connector 4 and the bus 13, an external write command which is a kind of external command and a plurality of consecutive host addresses in which no data is assigned to the corresponding virtual block, for example, An example in which “000101010101000100B” to “00010101010101000110B” and data to be written to these addresses are supplied to the flash memory system 1 will be described as an example. Here, these consecutive host addresses are called host addresses # 0 to # 2.
[0199]
First, when the host address # 0 to # 2 and the external write command are supplied to the controller 3, the host address # 0 to # 2 and the external write command are stored in a task file register (not shown) included in the host interface block 7. Temporarily stored. Further, when write data corresponding to the host addresses # 0 to # 2 is supplied to the controller 3, these data are sent to the ECC block 11 under the control of the microprocessor 6. The ECC block 11 which has received these data generates an error collection code by analyzing these data, and temporarily holds this.
[0200]
Next, whether or not the host addresses # 0 to # 2 stored in the task file register (not shown) are correct addresses, that is, the host addresses # 0 to # 2 are originally nonexistent physical addresses or invalid. The host interface block 7 determines whether or not a correct address is indicated.
[0201]
As a result of such determination, if it is determined that the host addresses # 0 to # 2 stored in the task file register (not shown) are valid addresses, the internal addresses are converted into the internal addresses by the first to third conversions described above. Converted. On the other hand, if it is determined that this is an abnormal address, an error register (not shown) included in the host interface block 7 is set, and the host computer knows that an error has occurred by referring to the contents of the register. be able to.
[0202]
In this example, since the host addresses # 0 to # 2 are “000101010101000100B” to “000101010101000110B”, the quotient A “000B (0)” obtained by division performed in the first conversion is obtained, and the obtained remainder B is "10101010101000100B (87364)" to "10101010101000110B (87366)". Therefore, the selected zone is zone # 0. Further, the quotient C obtained by the division performed in the first conversion is “1110001110B (910)”, and the selected virtual block display area is the virtual block display area # 910 in the corresponding table. Which table corresponds to the zone # 0 is displayed in the management table 30 as described above. The values E obtained by the operations performed in the first conversion are “0000101B (5)”, “0000110B (6)”, and “0001000B (8)” for the host addresses # 0 to # 2, respectively. Thus, the selected cells are cell # 910-0 to cell # 910-2. Thus, cell # j-3 that does not exist is not selected in the first conversion.
[0203]
However, since this example is an operation of writing new data, that is, an operation of newly assigning data to a host address to which no data is currently assigned to the corresponding virtual block, each of the corresponding virtual block display area # 910 Flags # 910-0 to # 910-3 should all indicate “0 (invalid)”. For this reason, the second conversion cannot be performed as it is, and a new virtual block described below is assigned. If these flags # 910-0 to # 910-3 are "1 (valid)", the write process is "data overwrite process", and the operation will be described later.
[0204]
New virtual block allocation is performed as follows. First, under the control of the microprocessor 6, among queue sets # 0 to # 7 constituting the erased block queue 32, a queue set corresponding to a table corresponding to zone # 0 (for example, table # 0), for example, The queue set # 0 is selected, and the contents stored in the queues # 0-0 to # 0-2 constituting the queue set # 0 are read out. As described above, the physical addresses of erased blocks are stored in each queue. In this example, the contents of the queues # 0-0 to # 0-2 are “00000011100B (60)”, “110000110001B (3121)”, and “101111110010B (3058)”, respectively.
[0205]
When the contents stored in the queues # 0-0 to # 0-2 are read, these are stored in the cell # 910-0 to the cell # 910-2 of the virtual block display area # 910, respectively, and the corresponding flag # All of 910-0 to # 910-2 are rewritten to “1 (valid)”. Thereby, the generation of the virtual block is completed.
[0206]
In this example, since the flash memory system 1 is operating in the “chip type mode”, the second conversion program P2 is used in the third conversion, whereby the host addresses # 0 to # 2 are used. Internal addresses # 0 to # 2 respectively corresponding to are generated. In this example, the internal addresses # 0 to # 2 are “01000110000110000001B”, “10000101111110000001B”, and “000000000000111100010B”, respectively.
[0207]
Thus, the conversion from the host addresses # 0 to # 2 to the internal addresses # 0 to # 2 is completed. As described above, the upper 2 bits of the internal address indicate the number of the flash memory chip to be accessed, the upper 3 bits to the upper 15 bits of the internal address indicate the physical block address to be accessed, and the lower order of the internal address The 5 bits indicate a physical page to be accessed. Therefore, the physical page specified by the internal address # 0 is the physical page # 1 of the physical block # 780 of the flash memory chip 2-1, and the physical page specified by the internal address # 1 is the flash memory chip 2-2. The physical page # 1 of the physical block # 764 and the physical page specified by the internal address # 2 are the physical page # 2 of the physical block # 15 of the flash memory chip 2-0.
[0208]
Further, in response to the external write command being stored in a task file register (not shown) of the host interface block 7, a register (not shown) of the flash sequencer block 12 under the control of the microprocessor 6. )) Is set. Such setting is performed as follows.
[0209]
First, under the control of the microprocessor 6, a data transfer command and an internal write command, which are a kind of internal commands, are set in predetermined registers (not shown) in the flash sequencer block 12. Further, under the control of the microprocessor 6, the four generated internal addresses # 0 to # 2 are set in predetermined registers (not shown) in the flash sequencer block 12.
[0210]
When the setting for various registers (not shown) included in the flash sequencer block 12 is completed in this way, a series of write operations by the flash sequencer block 12 is executed. In this example, a series of write operations by the flash sequencer block 12 includes writing of various redundant data to the virtual pages # 0 to # 2 of the virtual block # 910, and virtual pages # 5 and # 6 of the virtual block # 910. The user data and various redundant data are written in the order of # 8.
[0211]
FIG. 27 is a timing chart schematically showing a series of write operations in the “chip type mode”.
[0212]
First, the flash sequencer block 12 generates an internal address # 3 corresponding to the virtual page # 0 of the virtual block # 910. Here, the internal address # 3 corresponding to the virtual page # 0 of the virtual block # 910 corresponds to the physical page # 0 of the physical block # 15 in the flash memory chip 2-0 and its value is “000000000000111100000B”. It is.
[0213]
Next, the flash memory chip to which the page to be accessed belongs among the flash memory chips 2-0 to 2-2 (= 2-n) based on the upper 2 bits of the internal address # 3 thus generated. The flash memory interface block 10 is instructed to activate the chip selection signal corresponding to. In this case, since the upper 2 bits of the internal address # 3 are “00B (0)”, the chip selection signal # 0 is activated. Thereby, the flash memory chip 2-0 is in a state where data can be written. On the other hand, the chip selection signals # 1 and # 2 are kept inactive.
[0214]
Next, the flash sequencer block 12 supplies the low-order 18 bits “000000000111100000B” of the internal address # 3 to the bus 15 together with the data transfer command stored in a predetermined register (not shown). 10 is instructed. The lower 18 bits of the internal address # 3 and the data transfer command supplied to the bus 15 are commonly supplied to the flash memory chips 2-0 to 2-2 (= 2-n). Since the selection signal # 0 is active and the chip selection signals # 1 and # 2 are inactive, the lower 18 bits of the internal address # 3 and the data transfer command supplied to the bus 15 are Valid only for the flash memory chip 2-0 (designation of transfer destination).
[0215]
As a result, the flash memory chip 2-0 is allowed to accept data to be written in the page corresponding to the lower 18 bits “000000000111100000B” of the supplied internal address # 5.
[0216]
Next, data to be written to the virtual page # 0 of the virtual block # 910 is supplied to the bus 15 by the flash sequencer block 12 via the flash memory interface block 10. Here, the virtual page # 0 of the virtual block # 910 corresponds to the physical page # 0 of the physical block # 15 in the flash memory chip 2-0, and the data to be written therein includes the virtual block address and the cell number. And other additional information, both of which are data written in the redundant area 26. In this case, the virtual block address is “1110001110B (910)”, and the cell number is “00B (0)”. Any data is written in the other part of the physical page # 0 of the physical block # 15 in the flash memory chip 2-0, that is, the entire part of the user area 25, the error correction code storage area 27 of the redundant area 26, etc. I can't. However, since writing of data to each page is performed in batches in units of pages, actually, write processing is not performed on the portion where the data is not written, and write data consisting of “all 1” is written. Will be written.
[0217]
The virtual block address, cell number, and other additional information stored in the redundant area 26 supplied to the bus 15 are also supplied in common to the flash memory chips 2-0 to 2-2 (= 2-n). However, since the chip selection signal # 0 is in the active state as described above, it is effective only for the flash memory chip 2-0 (data transfer).
[0218]
In this way, when additional information such as a virtual block address or a cell number is transferred to the flash memory chip 2-0 in a state where acceptance of write data is permitted, the additional information is stored in the flash memory chip 2 It is temporarily stored in a register (not shown) provided in −0.
[0219]
Next, the flash sequencer block 12 issues an internal write command stored in a predetermined register (not shown) to the flash memory chip 2-0 (write command).
[0220]
In response to this, the flash memory chip 2-0 writes the additional information stored in the predetermined register to the address designated by the transfer destination designation processing (flash programming). That is, the additional information stored in the register is written to the page specified by the lower 18 bits “000000000111100000B” of the internal address # 3, that is, the physical page # 0 of the physical block # 15 of the flash memory chip 2-0. . The physical page # 0 of the physical block # 15 of the flash memory chip 2-0 corresponds to the virtual page # 0 of the virtual block # 910.
[0221]
While the flash memory chip 2-0 is executing flash programming, the flash sequencer block 12 generates an internal address # 4 corresponding to the virtual page # 1 of the virtual block # 910, and the physical page indicated by the internal address In addition, the same information as the information written in the virtual page # 0 is written. Here, the internal address # 4 corresponding to the virtual page # 1 of the virtual block # 910 corresponds to the physical page # 0 of the physical block # 780 in the flash memory chip 2-1, and the value thereof is “01000110000110000000B”. It is.
[0222]
Such a write operation is also performed on the virtual page # 2 of the virtual block # 682 using the internal address # 5, and thereby the redundant area of the virtual page # 0 to the virtual page # 2 of the virtual block # 910. In 26, the same information is written. Here, the virtual page # 2 of the virtual block # 910 corresponds to the physical page # 0 of the physical block # 764 of the flash memory chip 2-2.
[0223]
When a series of writing processes for the virtual pages # 0 to # 2 in the virtual block # 910 is completed in this way, the user data and various redundancy for the virtual pages # 5, # 6, and # 8 in the virtual block # 910 are next processed. Data writing is executed.
[0224]
A series of write operations to the virtual pages # 5, # 6, and # 8 of the virtual block # 910 by the flash sequencer block 12 are also executed at the timing shown in FIG. Hereinafter, a series of write operations for the virtual pages # 5, # 6, and # 8 of the virtual block # 910 will be described in detail.
[0225]
First, the flash sequencer block 12 selects the internal address # 0 from the internal addresses stored in a predetermined register (not shown), and the flash memory chip 2 based on the upper 2 bits of the internal address # 0. The flash memory interface block 10 is instructed to activate the chip selection signal corresponding to the flash memory chip to which the page to be accessed belongs among −0 to 2-3. In this case, since the upper 2 bits of the internal address # 0 are “01B (1)”, the flash memory chip to which the page to be accessed belongs is the flash memory chip 2-1, and the chip selection signal # 1 is activated. Is done. As a result, the flash memory chip 2-1 is ready to write data. On the other hand, the chip selection signals # 0 and # 2 are kept inactive.
[0226]
Next, the flash sequencer block 12 supplies the low-order 18 bits “000110000110000001B” of the internal address # 0 to the bus 15 together with a data transfer command stored in a predetermined register (not shown). To instruct. The lower 18 bits of the internal address # 0 and the data transfer command supplied to the bus 15 are commonly supplied to the flash memory chips 2-0 to 2-2 (= 2-n). Since the selection signal # 1 is active and the chip selection signals # 0 and # 2 are inactive, the lower 18 bits of the internal address # 0 and the data transfer command supplied to the bus 15 are Valid only for the flash memory chip 2-1 (transfer destination designation).
[0227]
As a result, the flash memory chip 2-1 is allowed to accept data to be written in the page corresponding to the lower 18 bits “000110000110000001B” of the supplied internal address # 0.
[0228]
Next, of the write data stored in the buffer 9, additional information to be stored in the redundant area 26, such as data corresponding to the host address # 0 and corresponding error correction code, is transferred to the flash memory by the flash sequencer block 12. The data is supplied to the bus 15 via the interface block 10. Here, among the additional information to be stored in the redundant area 26, the virtual block address and the cell number are the same as the contents stored in the virtual pages # 0 to # 2. Additional information such as data and error correction code supplied to the bus 15 is also supplied in common to the flash memory chips 2-0 to 2-2 (= 2-n). Since # 1 is in an active state, it is valid only for the flash memory chip 2-1 (data transfer).
[0229]
In this way, when additional information such as write data and error correction code is transferred to the flash memory chip 2-1 in a state where acceptance of write data is permitted, the write data and error correction code are The data is temporarily stored in a register (not shown) provided in the flash memory chip 2-1.
[0230]
Next, the flash sequencer block 12 issues an internal write command stored in a predetermined register (not shown) to the flash memory chip 2-1 (write command).
[0231]
In response to this, the flash memory chip 2-1 writes additional information such as data stored in a predetermined register and an error correction code to an address designated by the transfer destination designation processing (flash programming). That is, the additional information such as the data stored in the register and the error correction code is specified by the lower 18 bits “000110000110000001B” of the internal address # 0, that is, the physical block # 780 of the flash memory chip 2-1. It is written to physical page # 1. The physical page # 1 of the physical block # 780 of the flash memory chip 2-1 corresponds to the virtual page # 5 of the virtual block # 910.
[0232]
While the flash memory chip 2-1 executes flash programming, the flash sequencer block 12 selects the internal address # 1 from the internal addresses stored in a predetermined register (not shown), and the internal address Based on the upper 2 bits of # 1, the chip selection signal # 2 is activated. As a result, the flash memory chip 2-2 becomes ready for data writing.
[0233]
Next, the flash sequencer block 12 supplies the low-order 18 bits “0001011110000001B” of the internal address # 1 to the bus 15 together with a data transfer command stored in a predetermined register (not shown). To instruct. In this case, since the chip selection signal # 2 is in the active state as described above, the lower 18 bits of the internal address # 2 and the data transfer command supplied to the bus 15 are sent to the flash memory chip 2-2. Only valid (transfer destination designation).
[0234]
Thereafter, as described above, a data transfer and a write command are issued to the flash memory chip 2-2, and additional information such as data corresponding to the host address # 1 and a corresponding error correction code is stored in the internal address #. 1 is written on the page specified by 1. In this case, since the lower 18 bits of the internal address # 1 are “0001011110000001B”, the additional information such as the data corresponding to the host address # 1 and the corresponding error correction code is the physical block # 764 of the flash memory chip 2-2. Is written to physical page # 1. The physical page # 1 of the physical block # 764 of the flash memory chip 2-2 corresponds to the virtual page # 6 of the virtual block # 910.
[0235]
Such a data write operation is also performed on the internal address # 2, and accordingly, additional information such as data corresponding to the host address # 2 and a corresponding error correction code is also specified by the internal address # 2. Written to the page. In this case, since the lower 18 bits of the internal address # 2 are “000000000111100010B”, the additional information such as the data corresponding to the host address # 2 and the corresponding error correction code is the physical block # 15 of the flash memory chip 2-0. Is written to the physical page # 2.
[0236]
Here, the physical page # 2 of the physical block # 15 of the flash memory chip 2-0 corresponds to the virtual page # 8 of the virtual block # 910.
[0237]
Further, in response to the fact that the physical block address stored in the queue set # 0 of the erased block queue 32 is no longer the physical block address of the erased block by the above-described data writing, the microprocessor 6 The erased block is selected from the redundant blocks, and the physical address of the selected erased block is newly stored in the queues # 0-0 to # 0-2.
[0238]
In this way, a series of write operations by the flash sequencer block 12 is completed.
[0239]
In such a series of write operations, it is important that data corresponding to successive host addresses # 0 to # 2 is written in different physical blocks belonging to different flash memory chips 2-0 to 2-2. . These three physical blocks constitute one virtual block # 910 as described above, and data corresponding to consecutive host addresses # 0 to # 2 are stored in virtual pages # 5, # 6, It is written in # 8. It can be seen that these virtual pages # 5, # 6, and # 8 are continuous by skipping the virtual page # 7 assigned by the dummy cell.
[0240]
The above is the operation in the case of n = 2 (the number of chips = 3). However, even if the number of n is other than this, several values are obtained in the calculation using the first conversion program P1. Reading can be performed by basically the same operation only by changing. That is, according to the present embodiment, even when operating in the “chip type mode”, it is possible to read data by substantially the same operation regardless of the number of mounted flash memories.
[0241]
In the above example, virtual block addresses and cell numbers are also written to pages (virtual pages # 5, # 6, and # 8) other than virtual pages # 0 to # 2 that are the first page of each physical block. However, this may be omitted.
[0242]
In the above example, the lower 2 bits of the physical address stored in the queues # 0-0 to # 0-2 are “00 (0)” to “01B (2)”, respectively. When the physical blocks to which the data corresponding to the host addresses # 0 to # 2 to be written belong to different flash memory chips 2-1, 2-2, 2-0, but an alternative process is being performed May have physical addresses with the same lower two bits stored in these queues. In this case, the physical block to which data corresponding to a certain host address is to be written and the other host address The physical blocks to which data is to be written belong to the same flash memory chip.
[0243]
Write operation 2 (when writing data to an empty block (when operating in "bank type mode"))
Even in the data write operation to the empty block when the flash memory system 1 operates in the “bank type mode”, the generation of the virtual block, the writing of the redundant data to the virtual pages # 0 to # 3 of the generated virtual block, Writing of user data to a predetermined virtual page of the generated virtual block is executed.
[0244]
In this example, an external write command, which is a kind of external command, and a plurality of consecutive host addresses in which no data is assigned to the corresponding virtual block from the host computer 5 via the bus 14, the connector 4 and the bus 13. An example will be described in which # 0 to # 3, for example, “000101010101000100B” to “00010101010101000111B” and data to be written to these addresses are supplied to the flash memory system 1.
[0245]
The basic operation of the controller 3 when the host addresses # 0 to # 3 and the external write command are supplied to the controller 3 is the same as when the flash memory system 1 is operating in the “chip type mode”. The description of the overlapping part is omitted.
[0246]
In this example, since the flash memory system 1 operates in the “bank type mode”, the number of valid cells is 4 and the number of invalid cells is 0, and the quotient C obtained in the first conversion is “1010101010B (682). The value E becomes “1000100B (68)”, “1000101B (69)”, “1000110B (70)”, and “1000111 (71)” for the host addresses # 0 to # 3, respectively. That is, the selected virtual block display area is the virtual block display area # 682, and the selected cells are cells # 682-0 to # 682-3.
[0247]
Also in this example, each of the flags # 682-0 to # 682-3 in the corresponding virtual block display area # 682 should indicate “0 (invalid)”. Therefore, a new virtual block Is assigned.
[0248]
The method for assigning a new virtual block is the same as that in the case where the flash memory system 1 is operating in the “chip type mode”, and among the queue sets # 0 to # 7 constituting the erased block queue 32, the zone A queue set corresponding to the table corresponding to # 0 (for example, table # 0), for example, queue set # 0 is selected and stored in each of the queues # 0-0 to # 0-3 constituting the queue set # 0. The read contents are read out. In this example, the contents of these queues # 0-0 to # 0-3 are “00000011100B (60)”, “110000110001B (3121)”, “101111110010B (3058)”, and “000100000011B (259)”, respectively. And When the contents stored in the queues # 0-0 to # 0-3 are read, these are stored in the cell # 682-0 to the cell # 682-3 of the virtual block display area # 682, and the corresponding flag # All of 682-0 to # 682-3 are rewritten to “1 (valid)”. Thereby, the generation of the virtual block is completed.
[0249]
In this example, since the flash memory system 1 is operating in the “bank type mode”, the third conversion program P3 is used in the third conversion, whereby the host addresses # 0 to # 3 are used. Internal addresses # 0 to # 3 respectively corresponding to are generated. In this example, the internal addresses # 0 to # 3 are “00000000011110010001B”, “00011000011000110001B”, “000101111111001010001B”, and “00000010000001110001B”, respectively.
[0250]
Thus, the physical page specified by the internal address # 0 becomes the physical page 17 of the physical block # 60 of the flash memory chip 2-0, and the physical page specified by the internal address # 1 is the physical page of the flash memory chip 2-0. The physical page 17 of the block # 3121 is the physical page specified by the internal address # 2, the physical page 17 of the physical block # 3058 of the flash memory chip 2-0, and the physical page specified by the internal address # 3 is the flash memory. It becomes the physical page 17 of the physical block # 259 of the chip 2-0.
[0251]
Thereafter, when setting to a register (not shown) included in the flash sequencer block 12 is completed, a series of write operations by the flash sequencer block 12 is executed.
[0252]
FIG. 28 is a timing chart schematically showing a series of write operations in the “bank type mode”.
[0253]
First, the flash sequencer block 12 generates an internal address # 4 corresponding to the virtual page # 0 of the virtual block # 682. Here, the internal address # 4 corresponding to the virtual page # 0 of the virtual block # 682 corresponds to the physical page # 0 of the physical block # 60 in the flash memory chip 2-0, and the value thereof is “000000111111000000B”. It is.
[0254]
Next, the flash memory chip to which the page to be accessed belongs among the flash memory chips 2-0 to 2-2 (= 2-n) based on the upper 2 bits of the internal address # 4 thus generated. The flash memory interface block 10 is instructed to activate the chip selection signal corresponding to. In this case, since the upper 2 bits of the internal address # 4 are “00B (0)”, the chip selection signal # 0 is activated. Thereby, the flash memory chip 2-0 is in a state where data can be written. On the other hand, the chip selection signals # 1 and # 2 are kept inactive.
[0255]
Next, the flash sequencer block 12 supplies the lower 15 bits “00000111110000000B” of the internal address # 4 to the bus 15 together with a data transfer command stored in a predetermined register (not shown). 10 is instructed. The lower 18 bits of the internal address # 4 and the data transfer command supplied to the bus 15 are commonly supplied to the flash memory chips 2-0 to 2-2 (= 2-n). Since the selection signal # 0 is in an active state and the chip selection signals # 1 and # 2 are in an inactive state, the lower 18 bits of the internal address # 4 and the data transfer command supplied to the bus 15 are This is effective only for the flash memory chip 2-0. At this time, the register # 0 provided in the flash memory chip 2-0 is activated (transfer) based on “00B (0)” which is two bits including the upper 14th bit and the upper 15th bit of the internal address. First).
[0256]
As a result, the flash memory chip 2-0 is in a state in which it is permitted to accept data to be written in the page corresponding to the lower 18 bits “00000111110000000B” of the supplied internal address # 4 to the register # 0.
[0257]
Next, data to be written to the virtual page # 0 of the virtual block # 682 is supplied to the bus 15 by the flash sequencer block 12 via the flash memory interface block 10. Here, the virtual page # 0 of the virtual block # 682 corresponds to the physical page # 0 of the physical block # 60 in the flash memory chip 2-0, and the data to be written therein includes the virtual block address and the cell number. And other additional information, both of which are data written in the redundant area 26. In this case, the virtual block address is “1010101010B (682)”, and the cell number is “00B (0)”. In this case, since the register # 0 provided in the flash memory chip 2-0 is activated, the virtual block address, cell number, and other additional information supplied to the bus 15 are stored in the flash memory chip 2-0. Is stored in register # 0 (data transfer).
[0258]
Such transfer destination designation processing and data transfer processing are also performed on the virtual pages # 1 to # 3 of the virtual block # 682, whereby the register # 0 provided in the flash memory chip 2-0. The temporary storage of the virtual block address, cell number, and other additional information in .about. # 3 is completed. Here, the virtual pages # 1 to # 3 of the virtual block # 682 are the physical page # 0 of the physical block # 3121 of the flash memory chip 2-0 and the physical page # 0 of the physical block # 3058 of the flash memory chip 2-0. The virtual block address, cell number, and other additional information stored in the registers # 1 to # 3 respectively corresponding to the physical page # 0 of the physical block # 259 of the flash memory chip 2-0 are stored in the register # 0. These are the same contents.
[0259]
Next, the flash sequencer block 12 issues an internal write command stored in a predetermined register (not shown) to the flash memory chip 2-0 (write command).
[0260]
In response to this, the flash memory chip 2-0 writes the data stored in the registers # 0 to # 3 and additional information such as an error correction code all at once to the address designated by the transfer destination designation process ( Flash programming).
[0261]
When a series of writing processes for the virtual pages # 0 to # 3 of the virtual block # 682 is completed in this way, the user data and various redundant data are written to the virtual pages # 68 to # 71 of the virtual block # 682. Is executed.
[0262]
A series of write operations to the virtual pages # 68 to # 71 of the virtual block # 682 by the flash sequencer block 12 is also executed at the timing shown in FIG. 28, and the user corresponding to the host addresses # 0 to # 3 is written in the written data. In addition to the addition of data, the same operation as the series of write operations for the virtual pages # 0 to # 3 of the virtual block # 682 described above is performed. In this way, a series of write operations by the flash sequencer block 12 is completed.
[0263]
In such a series of write operations, it is important that data corresponding to consecutive host addresses # 0 to # 3 is written in different physical blocks belonging to different banks # 0 to # 3. These four physical blocks constitute one virtual block # 682 as described above, and the data corresponding to the continuous host addresses # 0 to # 3 are the continuous virtual pages # 68 to ## in the virtual block # 682. 71 is written.
[0264]
In the above example, virtual block addresses and cell numbers are also written in pages other than virtual pages # 0 to # 3 (virtual pages # 68 to # 71), which are the first pages of each physical block. May be omitted.
[0265]
In the above example, the lower 2 bits of the physical addresses stored in the queues # 0-0 to # 0-3 are “00 (0)” to “11B (3)”, respectively. The physical blocks to which the data corresponding to the host addresses # 0 to # 3 to be written belong to different banks # 0 to # 3. However, when substitution processing is performed, the lower 2 bits are the same. A physical address may be stored in these queues. In this case, there is a physical block to which data corresponding to a certain host address is to be written and a physical block to which data corresponding to another host address is to be written. Belong to the same bank. Therefore, in this case, it is necessary to execute flash programming in two steps.
[0266]
Write operation 3 (when overwriting data in a virtual block (when operating in “chip type mode”))
When data is added and written to a virtual block (used block) in which data is already stored, “inter-block transfer” is performed.
[0267]
Here, transfer between blocks will be described.
[0268]
As described above, the flash memory cells 16 constituting the flash memory chips 2-0 to 2-n can be changed from the erased state to the written state in units of memory cells. Changing to the erased state cannot be performed in units of memory cells, but can be performed only in units of blocks. Therefore, when data is written to a physical page, all the flash memory cells 16 constituting the user area 25 and the redundant area 26 of the physical page must be in an erased state, and some data has already been written. It is not possible to directly overwrite different physical data on a physical page that is being written, that is, a page in which even one flash memory cell 16 constituting the user area 25 of the physical page is in a write state. Therefore, in order to write new data different from this to a physical page in which data has already been written, all the flash memory cells 16 constituting the physical block to which this physical page belongs are once erased, and then new data is written. The process of writing is required.
[0269]
Therefore, when overwriting old data stored in a physical page with new data, in order to prevent data stored in other physical pages included in the physical block to which this physical page belongs, This is because a process of moving data stored in another physical page to another physical block is necessary.
[0270]
This data movement accompanying the overwriting process is called “inter-block transfer”. In this specification, the physical block address of the transfer source physical block is referred to as “transfer source block address”, and the physical block address of the transfer destination physical block is referred to as “transfer destination block address”.
[0271]
The data overwriting operation when the flash memory system 1 operates in the “chip type mode” when n = 2 (the number of chips = 3) will be described below.
[0272]
Here, in the state immediately after the above-described write operation 1 is completed, an external write command, which is a kind of external command, and three host addresses “000101010101001111B” from the host computer 5 via the bus 14, connector 4 and bus 13. "(Host address # 0)", "000101010101010000B" (host address # 1), "000101010101010001B" (host address # 2), and data to be written to each of these host addresses are supplied to the flash memory system 1 as an example Explained. These host addresses correspond to the virtual pages # 20 to # 22 of the virtual block # 910, respectively.
[0273]
When the host addresses # 0 to # 2 and the external write command are supplied to the controller 3, the host addresses # 0 to # 2 and the external write command are temporarily stored in a task file register (not shown) included in the host interface block 7. Stored. Further, when write data corresponding to the host addresses # 0 to # 2 is supplied to the controller 3, these data are sent to the ECC block 11 under the control of the microprocessor 6. The ECC block 11 which has received these data generates an error collection code by analyzing these data, and temporarily holds this.
[0274]
Next, the transfer source block address and the transfer destination block address are generated using the address conversion table 31.
[0275]
In this example, since the host addresses # 0 to # 2 are “000101010101001111B” to “000101010101010001B”, the quotient A “000B (0)” obtained by the division performed in the first conversion is obtained, and the obtained remainder B is They are “10101010101001111B (87375)” to “10101010101010001B (87377)”. Therefore, the selected zone is zone # 0. Further, the quotient C obtained by the division performed in the first conversion is “1110001110B (910)”, and the selected virtual block display area is the virtual block display area # 910 in the corresponding table. Which table corresponds to the zone # 0 is displayed in the management table 30 as described above. Further, the values E obtained by the calculation performed in the first conversion are “0010100B (20)”, “0010101B (21)”, and “0010110B (22)” for the host addresses # 0 to # 2, respectively. Thus, the selected cells are cell # 910-0 to cell # 910-2. Thus, cell # j-3 that does not exist is not selected in the first conversion.
[0276]
Next, under the control of the microprocessor 6, the virtual block display area # 910 is selected from the corresponding table of the address translation table 29 stored in the SRAM work area 8, and cells # 910-0 to # 910-2 are selected. Is read. As described above, since data has already been assigned to the virtual block # 910 in the write operation 1, each of the corresponding flags # 910-0 to # 910-2 should indicate “1”. The contents of the cells # 910-0 to # 910-2 are “00000011100B”, “110000110001B”, and “101111110010B”, respectively, as described above.
[0277]
When the contents stored in the cells # 910-0 to # 910-2 are read, a transfer source block address is generated using the contents under the control of the microprocessor 6.
[0278]
Under the control of the microprocessor 6, the transfer source block address includes the lower 2 bits of the contents of each read cell, the quotient A (3 bits) and the upper 10 bits of the contents of each read cell in this order. Generated by combining. In this case, the contents of the read cells are “00000011100B”, “110000110001B”, “101111110010B”, and the quotient A is “000B”. Therefore, the three transfer source block addresses # 0 to # 2 obtained are obtained. The values are “00000000000011111B”, “010001100001100B”, and “100001011111100B”, respectively.
[0279]
Thereby, the generation of the transfer source block addresses # 0 to # 2 is completed.
[0280]
Next, under the control of the microprocessor 6, among the queue sets # 0 to # 7 constituting the erased block queue 32, the queue set corresponding to the table corresponding to the zone # 0 (for example, the table # 0), For example, the queue set # 1 is selected, and the contents stored in the respective queues # 1-0 to # 1-2 constituting the queue set # 1 are read out. In this example, it is assumed that the contents of the queues # 1-0 to # 1-2 are “0100000100B”, “000000100001B”, and “111101000010B”, respectively.
[0281]
When the contents stored in the queues # 1-0 to # 1-2 are read out, the cells # 910-0 constituting the virtual block display area # 910 of the address conversion table 31 under the control of the microprocessor 6 are read out. -# 910-2 is overwritten and a transfer destination block address is generated using these.
[0282]
The transfer destination block address is generated by combining the lower 2 bits of the contents of each read queue, the quotient A and the upper 10 bits of the contents of each read queue in this order under the control of the microprocessor 6. Is done. In this case, the values of the obtained three transfer destination block addresses # 0 to # 2 are “000000100000100B”, “010000000000001000B”, and “100001111010000B”, respectively.
[0283]
Thereby, the generation of the transfer destination block addresses # 0 to # 2 is completed.
[0284]
When the above processing is completed, settings are made for a register (not shown) of the flash sequencer block 12 under the control of the microprocessor 6. Such setting is performed as follows.
[0285]
First, under the control of the microprocessor 6, a data transfer command, an internal write command, and an internal read command are set in predetermined registers (not shown) in the flash sequencer block 12. Further, under the control of the microprocessor 6, the generated transfer source block addresses # 0 to # 2 and transfer destination block addresses # 0 to # 2 are stored in predetermined registers (not shown) in the flash sequencer block 12. Is set.
[0286]
When the setting for various registers (not shown) included in the flash sequencer block 12 is completed in this way, a series of write operations by the flash sequencer block 12 is executed. A series of write operations by the flash sequencer block 12 is as follows.
[0287]
First, the flash sequencer block 12 adds “00000B (0)” to the transfer source block address # 0 stored in a predetermined register to generate a 20-bit transfer source internal address. In this case, the transfer source internal address is “000000000000111100000B”. Next, the flash sequencer block 12 selects the flash memory to which the page to be accessed belongs among the flash memory chips 2-0 to 2-2 (= 2-n) based on the higher-order 2 bits of the generated transfer source internal address. The flash memory interface block 10 is instructed to activate a chip selection signal corresponding to the chip. In this case, since the upper 2 bits of the generated transfer source internal address are “00B (0)”, the flash memory chip to which the page to be accessed belongs is the flash memory chip 2-0, and the chip selection signal # 0 Is activated. As a result, the flash memory chip 2-0 is ready to read data. On the other hand, the chip selection signals # 1 and # 2 are kept inactive.
[0288]
Next, the flash sequencer block 12 instructs the flash memory interface block 10 to supply the lower 15 bits “000000000111100000B” of the transfer source internal address to the bus 15 together with the internal read command stored in a predetermined register.
[0289]
As a result, the flash memory chip 2-0 reads the data stored in the lower 18 bits “000000000111100000B” of the supplied transfer source internal address. In other words, the flash memory chip 2-0 executes reading of data stored in the physical page # 0 of the physical block # 15. Note that the physical page # 0 of the physical block # 15 of the flash memory chip 2-0 corresponds to the virtual page # 0 of the virtual block # 910.
[0290]
The data read from the flash memory chip 2-0 in this way is supplied to the flash memory interface block 10 via the bus 15. When the flash memory interface block 10 receives the user data, it is temporarily stored in the buffer 9 and sent to the ECC block 11 to newly generate an error correction code. The error collection code newly generated in the ECC block 11 is temporarily held in the ECC block 11.
[0291]
Such a read operation is performed on the flash memory chips 2-1 and 2-2 by adding “00000B (0)” to the transfer source block addresses # 1 and # 2, and as a result, The data stored in the physical page # 0 of the physical block # 780 belonging to the flash memory chip 2-1 and the data stored in the physical page # 0 of the physical block # 764 belonging to the flash memory chip 2-2 are also read. Become. On the virtual block, the physical page # 0 of the physical block # 780 of the flash memory chip 2-1 corresponds to the virtual page # 1, and the physical page # 0 of the physical block # 764 of the flash memory chip 2-2 is Corresponds to virtual page # 2. That is, the data stored in the virtual pages # 0 to # 2 of the virtual block # 910 is read by the above processing.
[0292]
Next, a data write operation temporarily stored in the buffer 9 is performed.
[0293]
First, the flash sequencer block 12 adds “00000B (0)” to the transfer destination block address # 0 stored in a predetermined register to generate a 20-bit transfer destination internal address. In this case, the transfer destination internal address is “00000010000010000000B”.
[0294]
Next, the flash sequencer block 12 selects a chip corresponding to the flash memory chip to which the page to be accessed belongs, among the flash memory chips 2-0 to 2-2, based on the upper two bits of the generated transfer destination internal address. Instructs the flash memory interface block 10 to activate the signal. In this case, since the upper 2 bits of the transfer destination internal address are “00B (0)”, the flash memory chip to which the page to be accessed belongs is the flash memory chip 2-0, and the chip selection signal # 0 is activated. Is done. Thereby, the flash memory chip 2-0 is in a state where data can be written.
[0295]
Next, the flash sequencer block 12 instructs the flash memory interface block 10 to supply the lower 18 bits of the transfer destination internal address to the bus 15 together with the data transfer command stored in a predetermined register (not shown). . The write address and data transfer command supplied to the bus 15 are commonly supplied to the flash memory chips 2-0 to 2-2. However, as described above, the chip selection signal # 0 is in the active state. Since the chip selection signals # 1 and # 2 are inactive, the transfer destination internal address and data transfer command supplied to the bus 15 are valid only for the flash memory chip 2-0 (transfer destination). Specified).
[0296]
Next, of the data stored in the buffer 9, the additional information to be stored in the redundant area 26 such as the data read from the flash memory chip 2-0 and the corresponding error correction code is flashed by the flash sequencer block 12. It is supplied to the bus 15 via the memory interface block 10. Additional information such as data and error correction code supplied to the bus 15 is also supplied to the flash memory chips 2-0 to 2-2 in common, but as described above, the chip selection signal # 0 is activated. Therefore, it is effective only for the flash memory chip 2-0 (data transfer). The data transferred to the flash memory chip 2-0 and additional information such as an error correction code are temporarily stored in a register (not shown) provided in the flash memory chip 2-0.
[0297]
Next, the flash sequencer block 12 issues an internal write command stored in a predetermined register (not shown) to the flash memory chip 2-0 (write command).
[0298]
In response to this, the flash memory chip 2-0 writes additional information such as data stored in a predetermined register and an error correction code to an address designated by the transfer destination designation processing (flash programming). That is, the data stored in the register and the additional information such as the error correction code are pages specified by the lower 18 bits “000010000010000000B” of the transfer destination internal address, that is, the physical block # 260 of the flash memory chip 2-0. It is written to physical page # 0. The physical page # 0 of the physical block # 260 of the flash memory chip 2-0 corresponds to the virtual page # 0 of the virtual block # 910.
[0299]
While the flash memory chip 2-0 is executing the flash programming, the flash sequencer block 12 adds “00000B (0)” to the transfer destination block address # 1 stored in the predetermined register and newly adds 20 bits. A valid forwarding destination internal address is generated. In this case, the transfer destination internal address is “01000000000000100000000B”. Next, the flash sequencer block 12 activates the chip selection signal # 1 based on the upper 2 bits of the new transfer destination internal address. As a result, the flash memory chip 2-1 is ready to write data.
[0300]
Next, the flash sequencer block 12 supplies the low-order 18 bits “000000000000100000000B” of the new transfer destination internal address to the bus 15 together with the data transfer command stored in a predetermined register (not shown). Direct to block 10. In this case, since the chip selection signal # 1 is in the active state as described above, the lower 18 bits of the internal address # 1 and the data transfer command supplied to the bus 15 are sent to the flash memory chip 2-1. Only valid (transfer destination designation).
[0301]
Next, of the data stored in the buffer 9, the additional information to be stored in the redundant area 26 such as the data read from the flash memory chip 2-1 and the corresponding error correction code is stored in the flash memory in the same manner as described above. The data is transferred to the chip 2-1, and then a write command is issued. Thereby, the flash memory chip 2-1 performs flash programming, and the additional information such as the data stored in the register and the error correction code is a page specified by the lower 18 bits “000000000000100000000B” of the transfer destination internal address, that is, The data is written to the physical page # 0 of the physical block # 8 of the flash memory chip 2-1. The physical page # 0 of the physical block # 8 of the flash memory chip 2-1 corresponds to the virtual page # 1 of the virtual block # 910.
[0302]
Such a writing process is also performed on the flash memory chip 2-2 by adding “00000B (0)” to the transfer destination block address # 2, thereby the flash memory chip 2-2. The additional information to be stored in the redundant area 26 such as the data read out from and the corresponding error correction code is written in the physical page # 0 of the physical block # 976 of the flash memory chip 2-2. The physical page # 0 of the physical block # 976 of the flash memory chip 2-2 corresponds to the virtual page # 2 of the virtual block # 910.
[0303]
As a result, the data stored in the virtual pages # 0 to # 2 of the transfer source virtual block is written to the virtual pages # 0 to # 2 of the transfer destination virtual block. That is, data is transferred from the virtual pages # 0 to # 2 of the transfer source virtual block to the virtual pages # 0 to # 2 of the transfer destination virtual block. Since virtual page # 3 corresponds to a dummy cell, data transfer corresponding to this is not performed.
[0304]
Such data transfer operation is successively performed by incrementing a 5-bit value added to the transfer source block address and the transfer destination block address. That is, if the 5-bit value added to the transfer source block address and the transfer destination block address is “00001 (1)”, the virtual page # 4 to # 6 of the transfer source virtual block is transferred to the transfer destination virtual block. If data is transferred to the virtual pages # 4 to # 6 and “00010 (2)”, the virtual pages # 8 to # 10 of the transfer source virtual block to the virtual pages # 8 of the transfer destination virtual block. Data transfer to ~ # 10 is performed. Also in this case, since the virtual page # 7 and the virtual page 11 correspond to dummy cells, data transfer corresponding thereto is not performed.
[0305]
Such a transfer operation is continued until the 5-bit value to be added coincides with “00101B” that is the upper 5 bits of the virtual page number (0010100B (20) to 0010110B (22)) to which data is to be overwritten. To be done. That is, as a result of incrementing the 5 bits to be added, this becomes “00101B”, and when the data matches the upper 5 bits of the virtual page number to be overwritten, the transfer operation described above is temporarily interrupted. In this example, when the data transfer from the virtual pages # 0 to # 18 of the transfer source virtual block to the virtual pages # 0 to # 18 of the transfer destination virtual block is completed, the 5-bit value added is Therefore, the upper 5 bits of the virtual page number to be overwritten with the data coincide.
[0306]
When the 5 bits to be added match the upper 5 bits of the virtual page number to be overwritten, the flash sequencer block 12 does not read the data using the 5 bits “00101B”, and uses this as the transfer destination block address. A new transfer destination internal address is generated by adding to # 0 to # 2, respectively. For example, the transfer destination internal address generated by adding “00101B” to the transfer destination block address # 0 is “00000010000010000101B”.
[0307]
Next, the flash sequencer block 12 activates the chip selection signal # 0 based on the upper 2 bits of the generated transfer destination internal address, and transfers the lower 18 bits of the transfer destination internal address to the bus 15 together with the data transfer command. The flash memory interface block 10 is instructed to supply (transfer destination designation).
[0308]
Next, additional information such as write data corresponding to the host address # 0 and corresponding error correction code is supplied to the bus 15 by the flash sequencer block 12 via the flash memory interface block 10. At this time, since the chip selection signal # 0 is in the active state, the data and error correction code transferred to the flash memory chip 2-0 are stored in a register (not shown) in the flash memory chip 2-0. ) Temporarily stored (data transfer).
[0309]
Next, the flash sequencer block 12 issues an internal write command stored in a predetermined register (not shown) to the flash memory chip 2-0 (write command).
[0310]
In this way, while the flash memory chip 2-0 is performing flash programming of additional information such as write data corresponding to the host address # 0 and corresponding error correction code, the flash sequencer block 12 is configured to execute the host address # 0. In order to write the additional data such as the write data corresponding to 1 and the corresponding error correction code to the flash memory chip 2-1, a transfer destination designation process, a data transfer process, and the like are executed. As described above, while a flash memory chip is executing flash programming, a transfer destination designation process, a data transfer process, etc. are performed on a different flash memory chip. Thus, the write data corresponding to the host address # 0 is written to the physical page # 5 of the physical block # 260 in the flash memory chip 2-0, and the write data corresponding to the host address # 1 is written to the flash memory chip 2- The write data corresponding to the host address # 2 is written to the physical page # 5 of the physical block # 976 in the flash memory chip 2-2.
[0311]
As a result, the write data corresponding to the host addresses # 0 to # 2 are written in the virtual pages # 20 to # 22 of the transfer destination virtual block, respectively.
[0312]
When the data writing is completed, 5 bits added to the transfer source block address and the transfer destination block address are incremented again, and the data transfer using the new transfer source internal address and transfer destination internal address is resumed. Such a transfer operation is continuously performed until the data transfer when the added 5 bits are “11111 (31)” is completed. That is, the process is performed until the data transfer from the virtual pages # 24 to # 126 of the transfer source virtual block to the virtual pages # 24 to # 126 of the transfer destination virtual block is completed. The data transfer operation is completed.
[0313]
Further, in response to the fact that the physical block address stored in the queue set # 1 of the erased block queue 32 is no longer the physical address of the erased block by the above-described data writing, the microprocessor 6 performs a new erase. The selected block is selected from the redundant blocks, and the physical block address of the selected erased block is newly stored in the queues # 1-0 to # 1-2.
[0314]
Note that each of the transfer-source physical blocks is erased as a block, thereby becoming a new erased block. Even in such block erasure, since each physical block of the transfer source belongs to a different flash memory chip, block erasure operations for these blocks can be executed in parallel.
[0315]
Thus, a series of block transfer operations is completed.
[0316]
As described above, when data is overwritten when the virtual block to be accessed is a horizontal writing virtual block, inter-block transfer is performed for the three physical blocks, but these inter-block transfers are executed in parallel. For this reason, the time required for a series of inter-block transfer operations is significantly shortened as compared with the case where these are performed independently.
[0317]
Write operation 4 (when overwriting data in a virtual block (when operating in "bank type mode"))
Inter-block transfer is also performed in the data overwrite operation when the flash memory system 1 operates in the “bank type mode”. The operation is basically the same as when the flash memory system 1 operates in the “chip type mode”, and “00000B” to “11111B” are successively added to the transfer source block address and the transfer destination block address. Thus, a transfer source internal address and a transfer destination internal address are generated, and continuous data transfer is performed using these. In this case, as described in the write operation 2, the inter-block transfer is executed in parallel by using the registers # 0 to # 3 provided corresponding to the respective banks. As a result, as in the case where the flash memory system 1 operates in the “chip type mode”, a series of inter-block transfer operations can be performed at high speed.
[0318]
Thus, in the flash memory system 1 according to the present embodiment, when operating in the “chip type mode” using the concept of “virtual block”, a plurality of physical blocks belonging to different flash memory chips are virtually combined into one. Since it is handled as a block, when a data write request is made from the host computer 5 to a plurality of consecutive addresses, the next write data is transferred while flash programming is being executed for the write data. Processing such as pre-designation and data transfer can be executed in parallel, which can significantly reduce the time required for a series of data writing. That is, in a series of data write operations, flash programming requires a relatively long time, typically about 200 μsec. However, according to the flash memory system 1 according to the present embodiment, the flash programming is performed in parallel. Since other processing can be executed, the time required for writing a series of data is greatly reduced.
[0319]
In the flash memory system 1 according to this embodiment, when operating in the “bank type mode”, a plurality of physical blocks belonging to different banks are virtually handled as one block. When a data write request is made for a plurality of addresses, flash programming for each bank can be executed at the same time, whereby the time required for a series of data write can be greatly reduced.
[0320]
Further, in the flash memory system 1 according to this embodiment, the “physical address” is uniquely assigned to the physical block included in each zone, and this is used for address conversion. The address conversion when operating in the “mode” and the address conversion when operating in the “bank type mode” can be shared. Therefore, the capacity of the conversion programs (P1 to P3) to be stored in the ROM 33 can be greatly reduced, and the flash memory system 1 operates in the “chip type mode” and the “bank type mode”. In this case, the address conversion table 29 and the erased block queue 32 having the same structure can be used.
[0321]
Further, in the flash memory system 1 according to the present embodiment, when a failure occurs in a physical block exceeding a predetermined number in a certain slot in a certain zone, the physical block belonging to another slot in the zone is used as an actual used block instead. Therefore, the possibility that the entire zone becomes unusable due to the intensive occurrence of defective blocks can be greatly reduced. In particular, when operating in the “chip type mode”, physical blocks belonging to slots other than adjacent slots are preferentially selected as replacement blocks, so continuous data writing to virtual blocks including replacement blocks Even when performing the above, the time required for a series of writing does not increase or is reduced.
[0322]
Furthermore, in the flash memory system 1 according to the present embodiment, when operating in the “chip type mode”, when the number of bits necessary to display n in binary is X, 2xA virtual block is composed of “cells” and the number of cells (2x) Exceeds the number of flash memory chips (n + 1), the cells corresponding to the number of flash memory chips are treated as invalid cells (dummy cells), so the number of chips matches the power of 2. Even without this, it is possible to read and write data by an address conversion operation almost the same as when the number of chips is a power of two. For this reason, the configuration of the controller 3 can be made common regardless of the number of mounted flash memory chips, the versatility is greatly improved, and it is not necessary to handle a numerical value that is not a power of 2. Therefore, the controller 3 It is possible to prevent the hardware configuration from becoming complicated.
[0323]
The present invention is not limited to the above-described embodiments, and various modifications are possible within the scope of the invention described in the claims, and these are also included in the scope of the present invention. Needless to say.
[0324]
For example, in the present invention, when the “chip type mode” cannot be selected as in the case where only one flash memory chip is mounted, the “bank” is independent of the setting for the mode setting terminal # 0. You may comprise so that "type mode" may be selected. Similarly, when the “bank type mode” cannot be selected as in the case where the mounted flash memory chip is not of the bank type, the “chip type mode” regardless of the setting for the mode setting terminal # 0. May be configured to be selected. In addition, when there is only one flash memory chip and this is not a bank type, neither “chip type mode” nor “bank type mode” can be selected. Regardless of the setting for the setting terminal # 0, it may be configured to operate in a “normal mode” in which virtual block control is not performed.
[0325]
Further, the flash memory system 1 according to the above embodiment is configured to be able to select one of the “chip type mode” and the “bank type mode”, but each selected from a certain flash memory chip. "Chip type / bank type combined mode", in which a plurality of physical blocks belonging to different banks and a plurality of physical blocks belonging to different banks selected from different flash memory chips are virtually combined. May be selectable. In the “chip type / bank type combined mode”, a virtual block composed of blocks exceeding the number of mounted flash memory chips and the number of banks included in each flash memory chip can be configured. This means that the number of pages that can be processed in parallel at the time of data writing increases, and the possibility of additional data writing increases, so that data writing processing can be performed at higher speed. .
[0326]
In this case, as shown in FIG. 29, the mode setting terminal # 1 is used in addition to the mode setting terminal # 0, and the “chip type mode”, “bank type” is set by setting the mode setting terminals # 0 and # 1. It is preferable that one of the operation modes of “mode”, “chip type / bank type combined mode”, and “normal mode” can be selected.
[0327]
Further, in the flash memory system 1 according to the above embodiment, each physical block is configured by 32 physical pages, but the number of physical pages configuring each physical block is not limited to 32, Other numbers, for example, 16 or 64 may be used.
[0328]
In the flash memory system 1 according to the above embodiment, the physical block space composed of the flash memory chips 2-0 to 2-n is divided into a plurality of zones each composed of 4096 physical blocks. The number of physical blocks constituting each zone is not particularly limited. In this case, the smaller the number of zones into which the physical block space is divided, the advantage is that the update frequency of the address translation table 29 becomes lower and the access speed is prevented from being lowered. There is a disadvantage that the storage capacity required for the area 8 increases, and the more the number, the smaller each table is, and there is an advantage that the storage capacity required for the SRAM work area 8 can be reduced. However, there is a drawback that the update frequency of the address conversion table 29 increases and the access speed decreases. Therefore, the division number (zone number) of the physical block space may be determined based on the required access speed and the storage capacity of the SRAM work area 8.
[0329]
In the flash memory system 1 according to the above embodiment, the address conversion table 29 is composed of four tables including the tables # 0 to # 3. However, the number of tables constituting the address conversion table 29 is four. It is not limited to, and other numbers, for example, two or eight may be sufficient. That is, the smaller the number of tables constituting the address conversion table 29, the more advantageous is that the storage capacity required for the SRAM work area 8 can be reduced, while the frequency of updating the address conversion table 29 is high. On the other hand, there is a disadvantage that the access speed is lowered, and the more the number of tables constituting the address translation table 29 is, the more the update frequency of the address translation table 29 becomes lower and the access speed is prevented from being lowered. There is a drawback that the storage capacity required for the SRAM work area 8 increases. Therefore, the number of tables constituting the address conversion table 29 may be determined based on the required access speed and the storage capacity of the SRAM work area 8.
[0330]
Furthermore, in the flash memory system 1 according to the above embodiment, the priority order of the tables # 0 to # 3 constituting the address conversion table 29 is determined by the priority link 31, but the priority order determining method is limited to this. Instead, other methods, for example, a counter that counts the number of accesses for each table # 0 to # 3 may be provided, and the priority order may be determined based on the count values of these counters.
[0331]
Further, in the above embodiment, the flash memory system 1 has a card shape, and n + 1 flash memory chips 2-0 to 2-n and the controller 3 are integrated in one card. The flash memory system according to the present invention is not limited to a card shape, and may have another shape, for example, a stick shape.
[0332]
Further, in the above embodiment, the flash memory system 1 is configured by integrating n + 1 flash memory chips 2-0 to 2-n and the controller 3 in one card. 2-0 to 2-n and the controller 3 do not have to be integrated in the same casing, and may be packaged in separate casings. In this case, the housing in which the flash memory chips 2-0 to 2-n are packaged and the housing in which the controller 3 is packaged have connectors for realizing electrical and mechanical connection with the other. With such a connector, the housing in which the flash memory chips 2-0 to 2-n are packaged is detachably attached to the housing in which the controller 3 is packaged. Further, the flash memory chips 2-0 to 2-n do not need to be integrated in the same casing, and may be packaged in separate casings.
[0333]
In the flash memory system 1 according to the above embodiment, each flash memory chip 2-0 to 2-n is a semiconductor chip having a storage capacity of 128 Mbytes (1 Gbit). The storage capacity of −0 to 2-n is not limited to 128 Mbytes (1 Gbit), and may be a different capacity, for example, 32 Mbytes (256 Mbits).
[0334]
Further, in the flash memory system 1 according to the above embodiment, 512 bytes are set as one page, which is the minimum access unit. However, the minimum access unit is not limited to 512 bytes, and has a different capacity. Also good.
[0335]
In the flash memory system 1 according to the above embodiment, each flash memory cell 16 configuring the flash memory chips 2-0 to 2-3 holds 1-bit data. By controlling the amount of electrons to be injected in a plurality of stages, data of 2 bits or more may be held.
[0336]
In the flash memory system 1 according to the above embodiment, the erased block queue 32 is configured by eight queue sets, and two queue sets are assigned to each table. The number of queue sets to be assigned is not limited to two, but may be other numbers, for example, one or four.
[0337]
Further, in the flash memory system 1 according to the above embodiment, a NAND flash memory chip is used as the flash memory chip 2, but the flash memory that can be controlled by the present invention is not limited to the NAND type. It is also possible to control other types, for example, AND type flash memories.
[0338]
Furthermore, in the present invention, means does not necessarily mean a physical means, but includes cases where the functions of each means are realized by software. Further, the function of one means may be realized by two or more physical means, or the functions of two or more means may be realized by one physical means.
[0339]
The present invention can be realized as a PC card based on a unified standard published by PCMCIA (Personal Computer Memory Card International Association). Furthermore, in recent years, with the development of high integration technology of semiconductor devices, more compact memory cards, such as “CompactFlash” proposed by CFA (CompactFlash Association) and “MMC (MultiMediaCard)” proposed by MultiMediaCardAssociation. The present invention can be applied to “Memory Stick” proposed by Sony Corporation and “SD Memory Card” proposed by Matsushita Electric Industrial Co., Ltd.
[0340]
【The invention's effect】
As described above, according to the present invention, it is possible to provide a memory controller, a flash memory system, and a flash memory control method capable of performing a series of data write processing on the flash memory at higher speed.
[Brief description of the drawings]
FIG. 1 is a block diagram schematically showing a flash memory system 1 according to a preferred embodiment of the present invention.
FIG. 2 is a top view schematically showing a semiconductor chip constituting the controller 3. FIG.
FIG. 3 is a cross-sectional view schematically showing the structure of each flash memory cell 16 constituting the flash memory chips 2-0 to 2-3.
FIG. 4 is a cross-sectional view schematically showing a flash memory cell 16 in a write state.
FIG. 5 is a diagram schematically showing a structure of an address space of a flash memory chip 2-0.
FIG. 6 is a diagram schematically showing a bank structure of a flash memory chip 2-0.
7 is a diagram schematically showing the data structure of a redundant area 26. FIG.
FIG. 8 is a diagram showing a zone configuration when the flash memory system 1 operates in the “chip type mode”.
FIG. 9 is a diagram showing a zone configuration when the flash memory system 1 operates in the “bank type mode”.
FIG. 10 shows the number of cells constituting a virtual block (2x) And the number of flash memory chips (n + 1).
FIG. 11 is a diagram illustrating an example of virtual block mapping in the “chip type mode”;
FIG. 12 is a diagram illustrating an example of virtual block mapping when substitution processing is performed in the “chip type mode”;
13 is a diagram showing a virtual page structure of the virtual block shown in FIG. 11. FIG.
FIG. 14 is a diagram illustrating an example of virtual block mapping in the “bank type mode”;
FIG. 15 is a diagram illustrating an example of virtual block mapping when substitution processing is performed in the “bank type mode”;
16 is a diagram showing a virtual page structure of the virtual block shown in FIG. 14;
FIG. 17 is a diagram showing physical addresses assigned to each physical block constituting zone # 0 when the flash memory system 1 operates in the “chip type mode”.
FIG. 18 is a diagram showing physical addresses assigned to each physical block constituting zone # 0 when the flash memory system 1 operates in the “bank type mode”.
19 is a schematic diagram showing a data structure of an address conversion table 29. FIG.
20 is a schematic diagram showing the data structure of a management table 30. FIG.
FIG. 21 is a schematic diagram showing a data structure of a priority link 31;
FIG. 22 is a diagram showing a case where the priority link 31 stores table # 0 → table # 1 → table # 2 → table # 3 as priority.
FIG. 23 is a diagram illustrating a case where table # 2 → table # 0 → table # 1 → table # 3 is stored as a priority order by the priority link 31;
FIG. 24 is a diagram showing a case where the priority link 31 stores table # 3 → table # 2 → table # 0 → table # 1 as priority.
FIG. 25 is a diagram illustrating a case where the priority link 31 stores table # 1 → table # 3 → table # 2 → table # 0 as priority.
26 is a schematic diagram showing a data structure of an erased block queue 32. FIG.
FIG. 27 is a timing chart schematically showing a series of write operations in the “chip type mode”.
FIG. 28 is a timing chart schematically showing a series of write operations in the “bank type mode”.
29 is a diagram illustrating an example in which a mode setting terminal # 1 is added to a semiconductor chip constituting the controller 3. FIG.
[Explanation of symbols]
1 Flash memory system
2-0 to 2-n flash memory chip
3,3 'controller
4 Connector
5 Host computer
6 Microprocessor
7 Host interface block
8 SRAM work area
9 buffers
10 Flash memory interface block
11 ECC block
12 Flash sequencer block
13-15 Bus
16 Flash memory cell
17 P-type semiconductor substrate
18 Source diffusion region
19 Drain diffusion region
20 Tunnel oxide film
21 Floating gate electrode
22 Insulating film
23 Control gate electrode
24 channels
25 User area
26 Redundant area
27 Error collection code storage area
28 Virtual block address storage area
29 Address conversion table
30 Management table
31 Preferred links
32 Erased block queue
33 ROM

Claims (7)

ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数個のページを含む物理ブロック単位で消去が行われる複数個のフラッシュメモリにアクセスするメモリコントローラであって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当てる仮想ブロックアドレス割当て手段と、
前記各フラッシュメモリ内に複数個の物理ブロックで構成されるゾーンを形成するゾーン形成手段と、
互いに異なる前記フラッシュメモリ内に形成された前記ゾーンを相互に関連付けるゾーン管理手段と、
相互に関連付けられた前記各ゾーンから物理ブロックアドレスの同異に依存せずに1個ずつ任意で選択した複数個の物理ブロックを仮想ブロックとして管理し、該仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理する仮想ブロック管理手段と、
同一の前記仮想ブロックに含まれる複数個の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てるページ管理手段と、
を備えることを特徴とするメモリコントローラ。
A memory controller that accesses a plurality of flash memories to be erased in units of physical blocks including a plurality of pages based on a sector-unit host address supplied from a host computer,
Virtual block address assigning means for assigning a virtual block address to an area of a predetermined number of sectors in which the host address is continuous;
Zone forming means for forming a zone composed of a plurality of physical blocks in each flash memory;
Zone management means for correlating the zones formed in the flash memories different from each other;
A plurality of physical blocks arbitrarily selected one by one without depending on the difference of physical block addresses from the mutually associated zones are managed as virtual blocks, and the correspondence between the virtual blocks and the virtual block addresses Virtual block management means for managing the relationship;
Page management means for allocating the host address so that consecutive host addresses are allocated to pages in different physical blocks for pages in a plurality of physical blocks included in the same virtual block;
A memory controller comprising:
ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数個のページを含む物理ブロック単位で消去が行われる複数個のフラッシュメモリにアクセスするメモリコントローラであって、  A memory controller that accesses a plurality of flash memories to be erased in units of physical blocks including a plurality of pages based on a sector-unit host address supplied from a host computer,
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当てる仮想ブロックアドレス割当て手段と、  Virtual block address assigning means for assigning a virtual block address to an area of a predetermined number of sectors in which the host address is continuous;
前記各フラッシュメモリ内に複数個の物理ブロックで構成されるゾーンを形成するゾーン形成手段と、  Zone forming means for forming a zone composed of a plurality of physical blocks in each flash memory;
互いに異なる前記フラッシュメモリ内に形成された前記ゾーンを相互に関連付けるゾーン管理手段と、  Zone management means for correlating the zones formed in the flash memories different from each other;
前記各フラッシュメモリ内の物理ブロックに対して、該物理ブロックの物理ブロックアドレスをビット表示したときの下位側に該物理ブロックが属する前記フラッシュメモリを識別するためのビットを付加した複数ビットの情報に基づいて生成された物理アドレスを割り当てる物理アドレス割り当て手段と、To the physical block in each flash memory, a plurality of bits of information including a bit for identifying the flash memory to which the physical block belongs on the lower side when the physical block address of the physical block is displayed in bits. A physical address assigning means for assigning a physical address generated based on the physical address;
相互に関連付けられた前記各ゾーンから物理ブロックアドレスの同異に依存せずに1個ずつ任意で選択した複数個の物理ブロックを仮想ブロックとして管理し、該仮想ブロックに属する各物理ブロックに割り当てられた前記物理アドレスと前記仮想ブロックアドレスとの対応関係を管理する仮想ブロック管理手段と、  A plurality of physical blocks arbitrarily selected one by one from the zones associated with each other without depending on the difference in physical block addresses are managed as virtual blocks, and assigned to each physical block belonging to the virtual block. Virtual block management means for managing the correspondence between the physical address and the virtual block address;
同一の前記仮想ブロックに属する複数個の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てるページ管理手段とを備え  Page management means for allocating the host address so that consecutive host addresses are allocated to pages in different physical blocks for pages in a plurality of physical blocks belonging to the same virtual block;
前記フラッシュメモリを識別するためのビットのビット数は、前記複数個のフラッシュメモリを識別するために必要な最小限のビット数であることを特徴とするメモリコントローラ。  The memory controller according to claim 1, wherein the number of bits for identifying the flash memory is a minimum number of bits necessary for identifying the plurality of flash memories.
前記仮想ブロックがn個の物理ブロックで構成されている場合に、
前記所定セクタ数の領域の容量を、n個の物理ブロックで構成される前記仮想ブロックに含まれるユーザ領域の容量と等しくすることを特徴とする請求項1又は2に記載のメモリコントローラ。
When the virtual block is composed of n physical blocks,
3. The memory controller according to claim 1, wherein the capacity of the predetermined number of sectors is made equal to the capacity of a user area included in the virtual block composed of n physical blocks .
複数個の前記フラッシュメモリと請求項1乃至3の何れか1項に記載のメモリコントローラとを備えることを特徴とするフラッシュメモリシステム。  A flash memory system comprising a plurality of the flash memories and the memory controller according to any one of claims 1 to 3. ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数個のページを含む物理ブロック単位で消去が行われる複数個のフラッシュメモリを制御するフラッシュメモリの制御方法であって、  A flash memory control method for controlling a plurality of flash memories to be erased in physical block units including a plurality of pages based on a sector-unit host address supplied from a host computer,
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当て、  A virtual block address is assigned to an area of a predetermined number of sectors in which the host address is continuous,
前記各フラッシュメモリ内に複数個の物理ブロックで構成されるゾーンを形成し、  Forming a zone composed of a plurality of physical blocks in each flash memory;
互いに異なる前記フラッシュメモリ内に形成された前記ゾーンを相互に関連付け、  Correlating the zones formed in the flash memories different from each other;
相互に関連付けられた前記各ゾーンから物理ブロックアドレスの同異に依存せずに1個ずつ任意で選択した複数個の物理ブロックを仮想ブロックとして管理し、該仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理し、  A plurality of physical blocks arbitrarily selected one by one without depending on the difference of physical block addresses from the mutually associated zones are managed as virtual blocks, and the correspondence between the virtual blocks and the virtual block addresses Manage relationships,
同一の前記仮想ブロックに含まれる複数個の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てる、  Assigning the host address so that successive host addresses are assigned to pages in different physical blocks for pages in a plurality of physical blocks included in the same virtual block;
ことを特徴とするフラッシュメモリの制御方法。A method for controlling a flash memory.
ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数個のページを含む物理ブロック単位で消去が行われる複数個のフラッシュメモリを制御するフラッシュメモリの制御方法であって、  A flash memory control method for controlling a plurality of flash memories to be erased in physical block units including a plurality of pages based on a sector-unit host address supplied from a host computer,
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当て、  A virtual block address is assigned to an area of a predetermined number of sectors in which the host address is continuous,
前記各フラッシュメモリ内に複数個の物理ブロックで構成されるゾーンを形成し、  Forming a zone composed of a plurality of physical blocks in each flash memory;
互いに異なる前記フラッシュメモリ内に形成された前記ゾーンを相互に関連付け、  Correlating the zones formed in the flash memories different from each other;
前記各フラッシュメモリ内の物理ブロックに対して、該物理ブロックの物理ブロックアドレスをビット表示したときの下位側に該物理ブロックが属する前記フラッシュメモリを識別するためのビットを付加した複数ビットの情報に基づいて生成された物理アドレスを割り当て、To the physical block in each flash memory, a plurality of bits of information including a bit for identifying the flash memory to which the physical block belongs on the lower side when the physical block address of the physical block is displayed in bits. Based on the physical address generated based on
相互に関連付けられた前記各ゾーンから物理ブロックアドレスの同異に依存せずに1個ずつ任意で選択した複数個の物理ブロックを仮想ブロックとして管理し、該仮想ブロックに属する各物理ブロックに割り当てられた前記物理アドレスと前記仮想ブロックアドレスとの対応関係を管理し、  A plurality of physical blocks arbitrarily selected one by one from the zones associated with each other without depending on the difference in physical block addresses are managed as virtual blocks, and assigned to each physical block belonging to the virtual block. Managing the correspondence between the physical address and the virtual block address,
同一の前記仮想ブロックに属する複数個の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当て、  Assigning the host address to pages in a plurality of physical blocks belonging to the same virtual block so that the consecutive host addresses are assigned to pages in different physical blocks;
前記フラッシュメモリを識別するためのビットのビット数は、前記複数個のフラッシュメモリを識別するために必要な最小限のビット数であることを特徴とするフラッシュメモリの制御方法。  The method of controlling a flash memory, wherein the number of bits for identifying the flash memory is a minimum number of bits necessary for identifying the plurality of flash memories.
前記仮想ブロックがn個の物理ブロックで構成されている場合に、
前記所定セクタ数の領域の容量を、n個の物理ブロックで構成される前記仮想ブロックに含まれるユーザ領域の容量と等しくすることを特徴とする請求項5又は6に記載のフラッシュメモリの制御方法。
When the virtual block is composed of n physical blocks,
7. The flash memory control method according to claim 5, wherein a capacity of the predetermined number of sectors is equal to a capacity of a user area included in the virtual block composed of n physical blocks. .
JP2001330379A 2001-10-29 2001-10-29 MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD Expired - Lifetime JP3999959B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001330379A JP3999959B2 (en) 2001-10-29 2001-10-29 MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001330379A JP3999959B2 (en) 2001-10-29 2001-10-29 MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD

Publications (2)

Publication Number Publication Date
JP2003131941A JP2003131941A (en) 2003-05-09
JP3999959B2 true JP3999959B2 (en) 2007-10-31

Family

ID=19146105

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001330379A Expired - Lifetime JP3999959B2 (en) 2001-10-29 2001-10-29 MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD

Country Status (1)

Country Link
JP (1) JP3999959B2 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100632947B1 (en) * 2004-07-20 2006-10-12 삼성전자주식회사 Non-volatile memory device and method of programming the same
WO2008038372A1 (en) * 2006-09-28 2008-04-03 Fujitsu Microelectronics Limited Shared memory circuit and access control method
JP5166118B2 (en) 2008-05-21 2013-03-21 株式会社東芝 Method for controlling semiconductor memory
JP2014238871A (en) * 2014-08-01 2014-12-18 マイクロン テクノロジー, インク. Controller providing single virtualized ecc algorithm, storage system including this controller, and method of managing this storage system

Also Published As

Publication number Publication date
JP2003131941A (en) 2003-05-09

Similar Documents

Publication Publication Date Title
JP4256600B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP3905037B2 (en) Memory controller, flash memory system, and flash memory control method
JP3921174B2 (en) Memory controller, flash memory system, and flash memory control method
US5953737A (en) Method and apparatus for performing erase operations transparent to a solid state storage system
JP2647312B2 (en) Batch erase nonvolatile semiconductor memory device
JP4155824B2 (en) Partial block data programming and reading operations in non-volatile memory
US7774576B2 (en) Direct logical block addressing flash memory mass storage architecture
US6341085B1 (en) Storage device employing a flash memory
JP5035636B2 (en) Moving sectors in blocks in flash memory
JP2001243110A (en) Memory controller, flash memory system and access method to flash memory
JPH08137634A (en) Flash disk card
JPH10124381A (en) Semiconductor storage device
JP2003076605A (en) Semiconductor storage device with block erasing type non-volatile memory mounted thereon and its data writing/reading method
JP3621051B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP4248772B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP4220690B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP3999959B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP4316824B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP4233213B2 (en) MEMORY CONTROLLER, FLASH MEMORY SYSTEM PROVIDED WITH MEMORY CONTROLLER, AND FLASH MEMORY CONTROL METHOD
JP4173410B2 (en) Memory controller and flash memory system including the memory controller
JP2003122630A (en) Memory controller, flash memory system having memory controller, and method for controlling flash memory
JP2004078907A (en) Storage device, memory management method, and program thereof
JP4042898B2 (en) Memory controller, memory system including the same, and flash memory control method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040922

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20051130

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20051130

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070322

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070327

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070528

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070810

R150 Certificate of patent or registration of utility model

Ref document number: 3999959

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20100817

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100817

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110817

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120817

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130817

Year of fee payment: 6

EXPY Cancellation because of completion of term