JP3905037B2 - メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 - Google Patents
メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 Download PDFInfo
- Publication number
- JP3905037B2 JP3905037B2 JP2002548590A JP2002548590A JP3905037B2 JP 3905037 B2 JP3905037 B2 JP 3905037B2 JP 2002548590 A JP2002548590 A JP 2002548590A JP 2002548590 A JP2002548590 A JP 2002548590A JP 3905037 B2 JP3905037 B2 JP 3905037B2
- Authority
- JP
- Japan
- Prior art keywords
- flash memory
- block
- address
- virtual
- physical
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/12—Group selection circuits, e.g. for memory block selection, chip selection, array selection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/36—Data generation devices, e.g. data inverters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2207/00—Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
- G11C2207/10—Aspects relating to interfaces of memory device to external buses
- G11C2207/104—Embedded memory devices, e.g. memories with a processing device on the same die or ASIC memory designs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
【発明の属する技術分野】
本発明は、メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法に関し、特に、フラッシュメモリに対する一連のデータ書き込み処理をより高速に行うことができるメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法に関する。
【0002】
【従来技術】
近年、メモリカードやシリコンディスクなどに用いられる半導体メモリとして、フラッシュメモリ、特にNAND型フラッシュメモリが用いられることが多い。
NAND型フラッシュメモリは、メモリセルを消去状態(論理値=1)から書込状態(論理値=0)に変化させる場合は、これをメモリセル単位で行うことが可能である一方、メモリセルを書込状態(0)から消去状態(1)に変化させる場合は、これをメモリセル単位で行うことができず、複数のメモリセルからなる所定の消去単位でしかこれを行うことができない。かかる一括消去動作は、一般的に「ブロック消去」と呼ばれる。
【0003】
このように、NAND型フラッシュメモリにおいては、書込状態(0)から消去状態(1)への変化をメモリセル単位で行うことができないため、フラッシュメモリにデータを書き込む場合には、データを書き込むべき領域に含まれる全てのメモリセルを事前にブロック消去しておく必要がある。ブロック消去された領域は、データが格納されていない空き領域となり、フラッシュメモリに新たなデータを書き込む場合には、このような空き領域が検索され、発見された空き領域に対して当該データが書き込まれることになる。ここで、各ブロックは、それぞれ、データの読み出し及び書き込みにおけるアクセス単位である複数の「ページ」によって構成されている。
【0004】
このようなフラッシュメモリへのデータの書き込みは、次のようにして行う。
まず、ホストコンピュータからデータ書き込み要求が発行され、書き込み先のアドレス及び書き込むべきデータが送信されると、かかるデータが、コントローラ内に設けられたメモリに一時的に格納される。次いで、コントローラは、一時的にメモリに格納されているデータをフラッシュメモリへ転送し、これを書き込み先のアドレスが示すページに書き込むよう、フラッシュメモリに対して指示する。これに応答して、フラッシュメモリは、コントローラから転送されたデータを指定されたページに格納し、これにより、データ書き込み処理が完了する。
【0005】
従来より、同一ブロック内における各ページは、ホストコンピュータから見て、連続するアドレスを有するものとして取り扱われている。
【0006】
一方、ホストコンピュータからのデータ書き込み要求は、連続する複数アドレスに対してなされることが多く、この場合、コントローラは、あるブロック内の連続する複数ページに、次々とデータを書き込む必要がある。この場合、コントローラはまず、最初のページに書き込むべきデータをフラッシュメモリに転送し、かかるデータを当該ページに書き込むよう、フラッシュメモリに対して指示する。これに応答して、フラッシュメモリが、転送されたデータを指定されたページに格納すると、次いで、コントローラは、次のページに書き込むべきデータをフラッシュメモリに転送し、当該ページに書き込むよう、フラッシュメモリに対して指示する。このような処理を、要求された複数アドレスについて次々と実行することにより、連続する複数ページへの一連のデータの書き込み処理が完了する。
【0007】
ここで、ひとつのページに対する書き込み処理に要する時間は、主に、書き込むべきデータをコントローラからフラッシュメモリに転送するために必要な時間(データ転送時間)、コントローラからフラッシュメモリに書き込み命令を発行する時間(命令発行時間)、実際にフラッシュメモリにデータが書き込まれる時間(フラッシュプログラム時間)等からなり、このうち、フラッシュプログラム時間は、特に長い時間(例えば、約200μsec)を要する。
【0008】
従来は、このように比較的長い時間を要する1回のデータ書き込み処理を、ページ単位で次々と行っているため、ホストコンピュータより、連続する複数アドレスに対してデータ書き込み要求がなされた場合、一連のデータの書き込み処理が完了するには、データを書き込むべきページ数に実質的に比例した時間が必要であった。
【0009】
このため、ホストコンピュータより連続する複数アドレスに対してデータ書き込み要求がなされた場合に、一連のデータの書き込み処理をより高速に行うことができるメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法が望まれていた。
【0010】
【発明の解決しようとする課題】
したがって、本発明の目的は、フラッシュメモリに対する一連のデータ書き込み処理をより高速に行うことができるメモリコントローラ及びこのようなメモリコントローラを備えるフラッシュメモリシステムを提供することである。
また、本発明の他の目的は、フラッシュメモリに対する一連のデータ書き込み処理をより高速に行うことができるフラッシュメモリの制御方法を提供することである。
【0011】
【課題を解決するための手段】
本発明の目的を達成するため、本発明の第1の観点に係るメモリコントローラは、
ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数のページを含む物理ブロック単位で消去が行われる複数個のフラッシュメモリにアクセスするメモリコントローラであって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当てる仮想ブロックアドレス割当て手段と、
前記各フラッシュメモリから物理ブロックアドレスの同異に依存せずに1個ずつ選択した複数個の物理ブロックを仮想ブロックとして管理し、該仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理する仮想ブロック管理手段と、
同一の前記仮想ブロックに含まれる複数の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てるページ管理手段と、
を備えることを特徴とする。
【0012】
例えば、前記フラッシュメモリがn個の場合に、n個の前記フラッシュメモリから物理ブロックアドレスの同異に依存せずに1個ずつ選択したn個の物理ブロックで1つの前記仮想ブロックを構成し、前記所定セクタ数の領域の容量を、n個の物理ブロックで構成される前記仮想ブロックに含まれるユーザ領域の容量と等しくする。
【0013】
また、本発明の第2の観点に係るメモリコントローラは、
ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数のページを含む物理ブロック単位で消去が行われるバンク構造のフラッシュメモリにアクセスするメモリコントローラであって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当てる仮想ブロックアドレス割当て手段と、
各バンクから該バンク内での順番の同異に依存せずに1個ずつ選択した複数個の物理ブロックを仮想ブロックとして管理し、該仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理する仮想ブロック管理手段と、
同一の前記仮想ブロックに含まれる複数の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てるページ管理手段と、
を備えることを特徴とする。
【0014】
例えば、前記バンクがn個の場合に、n個の前記バンクから該バンク内での順番の同異に依存せずに1個ずつ選択した物理ブロックで1つの前記仮想ブロックを構成し、前記所定セクタ数の領域の容量を、n個の物理ブロックで構成される前記仮想ブロックに含まれるユーザ領域の容量と等しくしてもよい。
【0015】
例えば、前記仮想ブロックに含まれる複数の物理ブロック内の冗長領域に、該仮想ブロックに対応する前記仮想ブロックアドレスを書き込む仮想ブロックアドレス書込み手段を備えてもよい。この場合、前記フラッシュメモリに含まれる物理ブロック内の冗長領域に書き込まれている前記仮想ブロックアドレスに基づいて、同一の前記仮想ブロックに属する物理ブロックを判別する仮想ブロック判別手段を備えてもよい。
【0016】
また、本発明の第3の観点に係るフラッシュメモリシステムは、
フラッシュメモリと上述の構成を有するメモリコントローラとを備えることを特徴とする。
【0017】
また、本発明の第4の観点に係るフラッシュメモリの制御方法は、
ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数のページを含む物理ブロック単位で消去が行われる複数個のフラッシュメモリを制御するフラッシュメモリの制御方法であって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当て、
前記各フラッシュメモリから物理ブロックアドレスの同異に依存せずに1個ずつ選択した複数個の物理ブロックを仮想ブロックとし、該仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理し、
同一の前記仮想ブロックに含まれる複数の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てる、
ことを特徴とする。
【0018】
また、本発明の第5の観点に係るフラッシュメモリの制御方法は、
ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数のページを含む物理ブロック単位で消去が行われるバンク構造のフラッシュメモリを制御するフラッシュメモリの制御方法であって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当て、
各バンクから該バンク内での順番の同異に依存せずに1個ずつ選択した複数個の物理ブロックを仮想ブロックとし、該仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理し、
同一の前記仮想ブロックに含まれる複数の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てる、
ことを特徴とする。
【0019】
【発明の実施の形態】
以下、添付図面を参照しながら、本発明の好ましい実施態様について詳細に説明する。
【0020】
図1は、本発明の好ましい実施態様にかかるフラッシュメモリシステム1を概略的に示すブロック図である。
【0021】
図1に示されるように、フラッシュメモリシステム1はカード形状であり、4個のフラッシュメモリチップ2−0〜2−3と、コントローラ3と、コネクタ4とが、一つのカード内に集積されて構成される。
【0022】
フラッシュメモリシステム1は、ホストコンピュータ5に着脱可能に装着されて使用され、ホストコンピュータ5に対する一種の外部記憶装置として用いられる。
【0023】
ホストコンピュータ5としては、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置が挙げられる。
【0024】
各フラッシュメモリチップ2−0〜2−3は、特に限定されるものではないが、それぞれ128Mバイト(1Gビット)の記憶容量を有する半導体チップである。
【0025】
フラッシュメモリシステム1においては、512バイトを1ページとし、これを最小アクセス単位としている。したがって、これら各フラッシュメモリチップ2−0〜2−3は、それぞれ256Kページのアドレス空間を含み、フラッシュメモリチップ2−0〜2−3の合計で、1Mページのアドレス空間を備えることになる。
【0026】
また、フラッシュメモリシステム1においては、これら4つのフラッシュメモリチップ2−0〜2−3は、512Mバイト(4Gビット)の記憶容量を有し、1Mページのアドレス空間を備える一つの大きなメモリとして取り扱われる。このため、これら1Mページからなるアドレス空間から特定のページにアクセスするためには、少なくとも20ビットのアドレス情報が必要となる。したがって、ホストコンピュータ5は、フラッシュメモリシステム1に対し、少なくとも20ビットのアドレス情報を供給することによって、特定のページに対するアクセスを行う。
【0027】
以下、ホストコンピュータ5よりフラッシュメモリシステム1に供給される20ビットのアドレス情報を「ホストアドレス」と呼ぶ。
【0028】
コントローラ3は、マイクロプロセッサ6と、ホストインターフェースブロック7と、SRAMワークエリア8と、バッファ9と、フラッシュメモリインターフェースブロック10と、ECC(エラー・コレクション・コード)ブロック11と、フラッシュシーケンサブロック12とから構成される。これら機能ブロックによって構成されるコントローラ3は、一つの半導体チップ上に集積されている。
【0029】
マイクロプロセッサ6は、コントローラ3を構成する各機能ブロック全体の動作を制御するための機能ブロックである。
【0030】
ホストインターフェースブロック7は、バス13を介してコネクタ4に接続されており、マイクロプロセッサ6による制御のもと、ホストコンピュータ5とのデータやアドレス情報、ステータス情報、外部コマンド情報の授受を行う。
【0031】
すなわち、フラッシュメモリシステム1がホストコンピュータ5に装着されると、フラッシュメモリシステム1とホストコンピュータ5とは、バス13、コネクタ4及びバス14を介して相互に接続され、かかる状態において、ホストコンピュータ5よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口としてコントローラ3の内部に取り込まれ、また、コントローラ3よりホストコンピュータ5に供給されるデータ等は、ホストインターフェースブロック7を出口としてホストコンピュータ5に供給される。
【0032】
さらに、ホストインターフェースブロック7は、ホストコンピュータ5より供給されるホストアドレス及び外部コマンドを一時的に格納するタスクファイルレジスタ(図示せず)及びエラーが発生した場合にセットされるエラーレジスタ等(図示せず)を有している。
【0033】
SRAMワークエリア8は、マイクロプロセッサ6によるフラッシュメモリチップ2−0〜2−3の制御に必要なデータが一時的に格納される作業領域であり、複数のSRAMセルによって構成される。
【0034】
バッファ9は、フラッシュメモリチップ2−0〜2−3から読み出されたデータ及びフラッシュメモリチップ2−0〜2−3に書き込むべきデータを一時的に蓄積するバッファである。
【0035】
すなわち、フラッシュメモリチップ2−0〜2−3から読み出されたデータは、ホストコンピュータ5が受け取り可能な状態となるまでバッファ9に保持され、フラッシュメモリチップ2−0〜2−3に書き込むべきデータは、フラッシュメモリチップ2−0〜2−3が書き込み可能な状態となるまでバッファ9に保持される。
【0036】
フラッシュメモリインターフェースブロック10は、バス15を介して、フラッシュメモリチップ2−0〜2−3とのデータやアドレス情報、ステータス情報、内部コマンド情報の授受を行うとともに、各フラッシュメモリチップ2−0〜2−3に対して対応するチップ選択信号#0〜#3を供給するための機能ブロックである。
【0037】
チップ選択信号#0〜#3は、ホストコンピュータ5からデータの読み出しまたは書き込みが要求された場合、ホストコンピュータ5より供給されるホストアドレスの下位2ビットに基づいて、そのいずれかが活性化される信号である。
【0038】
具体的には、ホストアドレスの下位2ビットが「00」であればチップ選択信号#0が活性化され、「01」であればチップ選択信号#1が活性化され、「10」であればチップ選択信号#2が活性化され、「11」であればチップ選択信号#3が活性化される。
【0039】
対応するチップ選択信号が活性化されたフラッシュメモリチップ2−0〜2−3は選択状態となり、データの読み出しまたは書き込みが可能となる。
【0040】
尚、「内部コマンド」とは、コントローラ3がフラッシュメモリチップ2−0〜2−3を制御するためのコマンドであり、ホストコンピュータ5がフラッシュメモリシステム1を制御するための「外部コマンド」と区別される。
【0041】
ECCブロック11は、フラッシュメモリチップ2−0〜2−3に書き込むデータに付加すべきエラーコレクションコードを生成するとともに、読み出しデータに付加されたエラーコレクションコードに基づいて、読み出しデータに含まれる誤りを訂正するための機能ブロックである。
【0042】
フラッシュシーケンサブロック12は、フラッシュメモリチップ2−0〜2−3とバッファ9とのデータの転送を制御するための機能ブロックである。
【0043】
フラッシュシーケンサブロック12は、複数のレジスタ(図示せず)を備え、マイクロプロセッサ6による制御のもと、フラッシュメモリチップ2−0〜2−3からのデータの読み出しまたはフラッシュメモリチップ2−0〜2−3へのデータの書き込みに必要な値がこれらレジスタに設定されると、データの読み出しまたは書き込みに必要な一連の動作を自動的に実行する。
【0044】
次に、各フラッシュメモリチップ2−0〜2−3を構成する各フラッシュメモリセルの具体的な構造について説明する。
【0045】
図2は、フラッシュメモリチップ2−0〜2−3を構成する各フラッシュメモリセル16の構造を概略的に示す断面図である。
【0046】
図2に示されるように、フラッシュメモリセル16は、p型半導体基板17に形成されたN型のソース拡散領域18及びドレイン拡散領域19と、ソース拡散領域18とドレイン拡散領域19との間のP型半導体基板17を覆って形成されたトンネル酸化膜20と、トンネル酸化膜20上に形成されたフローティングゲート電極21と、フローティングゲート電極21上に形成された絶縁膜22と、絶縁膜22上に形成されたコントロールゲート電極23とから構成される。
【0047】
このような構成を有するフラッシュメモリセル16は、フラッシュメモリチップ2−0〜2−3内において、複数個直列に接続されて、NAND型フラッシュメモリを構成する。
【0048】
フラッシュメモリセル16は、フローティングゲート電極21に電子が注入されているか否かによって、「消去状態」と「書込状態」のいずれかの状態が示される。
【0049】
フラッシュメモリセル16が消去状態であることは、当該フラッシュメモリセル16にデータ「1」が保持されていることを意味し、フラッシュメモリセル16が書込状態であることは、当該フラッシュメモリセル16にデータ「0」が保持されていることを意味する。すなわち、フラッシュメモリセル16は、1ビットのデータを保持することが可能である。
【0050】
図2に示されるように、消去状態とは、フローティングゲート電極21に電子が注入されていない状態を指す。
【0051】
消去状態におけるフラッシュメモリセル16は、デプレッション型のトランジスタとなり、コントロールゲート電極23に読み出し電圧が印加されているか否かに関わらず、ソース拡散領域18とドレイン拡散領域19との間のP型半導体基板17の表面にはチャネル24が形成される。
【0052】
したがって、ソース拡散領域18とドレイン拡散領域19とは、コントロールゲート電極23に読み出し電圧が印加されているか否かに関わらず、チャネル24によって常に電気的に接続状態となる。
【0053】
図3は、書込状態であるフラッシュメモリセル16を概略的に示す断面図である。
【0054】
図3に示されるように、書込状態とは、フローティングゲート電極21に電子が蓄積されている状態を指す。
【0055】
フローティングゲート電極21はトンネル酸化膜20及び絶縁膜22に挟まれているため、一旦、フローティングゲート電極21に注入された電子は、きわめて長時間フローティングゲート電極21内にとどまる。
【0056】
書込状態におけるフラッシュメモリセル16は、エンハンスメント型のトランジスタとなり、コントロールゲート電極23に読み出し電圧が印加されていないときには、ソース拡散領域18とドレイン拡散領域19との間のP型半導体基板17の表面にはチャネルが形成されず、コントロールゲート電極23に読み出し電圧が印加されているときには、ソース拡散領域18とドレイン拡散領域19との間のP型半導体基板17の表面にチャネル(図示せず)が形成される。
【0057】
したがって、コントロールゲート電極23に読み出し電圧が印加されていない状態では、ソース拡散領域18とドレイン拡散領域19とは電気的に絶縁され、コントロールゲート電極23に読み出し電圧が印加された状態では、ソース拡散領域18とドレイン拡散領域19とが電気的に接続される。
【0058】
ここで、選択されたフラッシュメモリセル16が消去状態であるか書込状態であるかは、次のようにして読み出すことができる。
【0059】
すなわち、複数個直列に接続されたフラッシュメモリセル16のうち、選択されたフラッシュメモリセル16以外の全てのフラッシュメモリセル16のコントロールゲート電極23に読み出し電圧を印加し、この状態において、これらフラッシュメモリセル16の直列体に電流が流れるか否かを検出する。
【0060】
その結果、かかる直列体に電流が流れれば、選択されたフラッシュメモリセル16が消去状態であると判断することができ、かかる直列体に電流が流れなければ、選択されたフラッシュメモリセル16が書込状態であると判断することができる。
【0061】
このようにして、直列体に含まれる任意のフラッシュメモリセル16に保持されたデータが「0」であるのか「1」であるのかを読み出すことができる。
但し、NAND型フラッシュメモリにおいては、ひとつの直列体に含まれる2以上のフラッシュメモリセル16に保持されたデータを同時に読み出すことはできない。
【0062】
また、消去状態であるフラッシュメモリセル16を書込状態に変化させる場合、コントロールゲート電極23に正の高電圧が印加され、これによって、トンネル酸化膜20を介してフローティングゲート電極21へ電子が注入される。フローティングゲート電極21への電子の注入は、FNトンネル電流による注入が可能である。
【0063】
一方、書込状態であるフラッシュメモリセル16を消去状態に変化させる場合、コントロールゲート電極23に負の高電圧が印加され、これによって、トンネル酸化膜20を介してフローティングゲート電極21に蓄積された電子が排出される。
【0064】
次に、各フラッシュメモリチップ2−0〜2−3の持つアドレス空間の具体的な構成について説明する。
【0065】
図4は、フラッシュメモリチップ2−0のアドレス空間の構造を概略的に示す図である。
【0066】
図4に示されるように、フラッシュメモリチップ2−0のアドレス空間は、物理ブロック#0〜#8191からなる8192個の物理ブロックによって構成される。
【0067】
また、図4には示されていないが、フラッシュメモリチップ2−1〜2−3も、フラッシュメモリチップ2−0と同様に物理ブロック#0〜#8191からなる8192個の物理ブロックによって構成されている。
【0068】
これら各ブロックは、いずれも16Kバイトの記憶容量を有する。ここで、上記各物理ブロックは、データの消去単位である。
【0069】
すなわち、フラッシュメモリチップ2−0〜2−3では、各フラッシュメモリセル16ごとに、その状態を書込状態から消去状態に変化させることはできず、フラッシュメモリセル16を書込状態から消去状態に変化させる場合は、当該フラッシュメモリセル16が属するブロックに含まれる全てのフラッシュメモリセル16が一括して消去状態とされる。
【0070】
逆に、フラッシュメモリチップ2−0〜2−3では、各フラッシュメモリセル16ごとに、その状態を消去状態から書込状態に変化させることは可能である。
【0071】
さらに、図4に示されるように、フラッシュメモリチップ2−0を構成する各物理ブロック#0〜#8191は、それぞれ物理ページ#0〜#31からなる32個の物理ページによって構成されている。
【0072】
また、フラッシュメモリチップ2−1〜2−3を構成する各物理ブロック#0〜#8191も、フラッシュメモリチップ2−0を構成する各物理ブロック#0〜#8191と同様に、それぞれ32個の物理ページによって構成されている。
【0073】
これら各ページはデータの読み出し及び書き込みにおけるアクセス単位であり、図4に示されるように、ビットb0〜b7からなる8ビットを1バイトとして、それぞれ512バイトのユーザ領域25と16バイトの冗長領域26によって構成される。
【0074】
ユーザ領域25は、ホストコンピュータ5より供給されるユーザデータが格納される領域である。
【0075】
図5は、冗長領域26のデータ構造を概略的に示す図である。
【0076】
図5に示されるように、冗長領域26は、エラーコレクションコード格納領域28、仮想ブロックアドレス格納領域29及びその他の付加情報によって構成される。
【0077】
エラーコレクションコード格納領域28は、対応するユーザ領域25に格納されたユーザデータの誤りを訂正するための付加情報(エラーコレクションコード)を格納するための領域であり、ユーザ領域25に格納されたデータに含まれるデータの誤りが所定数以下であれば、エラーコレクションコード格納領域28に格納されたエラーコレクションコードを用いてこれを訂正し、正しいデータとすることができる。
【0078】
仮想ブロックアドレス格納領域29は、当該物理ブロックが属する仮想ブロックのアドレス(仮想ブロックアドレス)を格納するための領域である。
【0079】
仮想ブロック及び仮想ブロックアドレスの詳細については後述する。
【0080】
冗長領域26のその他の領域には、当該ブロックについての異常を表示するブロックステータス等が格納されているが、これらについての説明は省略する。
【0081】
このように、各ページは、512バイトのユーザ領域25と16バイトの冗長領域26からなるので、各ページは、8×(512バイト+16バイト)=4224個のフラッシュメモリセルによって構成されることになる。このように、各フラッシュメモリチップ2−0〜2−3は8192個の物理ブロックによって構成されるが、このうち、8000個の物理ブロックは実際にデータを格納することができるブロック(以下、「実使用ブロック」という)として取り扱われ、残りの192個のブロックは「冗長ブロック」として取り扱われる。
【0082】
冗長ブロックは、データ書き込みに備えて待機している空きブロックである。
【0083】
フラッシュメモリチップ2−0〜2−3のアドレス空間は、実使用ブロックのみによって構成される。ある物理ブロックに不良が発生し、使用不能となった場合には、不良が発生したブロックの数だけ冗長ブロックとして割り当てられる物理ブロックの数が減らされる。
【0084】
さらに、実使用ブロックは、各フラッシュメモリチップ2−0〜2−3から一つずつ選ばれた4つの物理ブロックが仮想的に結合された「仮想ブロック」を構成する。
【0085】
これにより、仮想ブロック#0〜#7999からなる8000個の仮想ブロックが構成される。
【0086】
図6は、仮想ブロックのマッピングの一例を示す図である。
【0087】
図6に示される例では、フラッシュメモリチップ2−0に含まれる物理ブロック#150、フラッシュメモリチップ2−1に含まれる物理ブロック#6811、フラッシュメモリチップ2−2に含まれる物理ブロック#8191、フラッシュメモリチップ2−3に含まれる物理ブロック#3048が仮想的に結合され、一つの仮想ブロックを構成している。
【0088】
このように、本実施態様においては、ひとつの仮想ブロックを構成する4つの物理ブロックは互いに異なるフラッシュメモリチップに含まれていることが必要である。このようにして、8000個の仮想ブロックが構成される。
【0089】
図7は、図6に示された仮想ブロックの仮想ページ構造を示す図である。
【0090】
図7に示されるように、仮想ブロックは、仮想ページ#0〜ページ#127からなる128個の仮想ページによって構成される一つのブロックとして取り扱われる。
【0091】
ここで、図7に示す仮想ブロックのうち、物理ブロック#150からなる部分に含まれる32個のページは、仮想ページ番号として4i(iは、物理ページ番号)が与えられ、物理ブロック#6811からなる部分に含まれる32個のページは、仮想ページ番号として4i+1が与えられ、物理ブロック#8191からなる部分に含まれる32個のページは、仮想ページ番号として4i+2が与えられ、物理ブロック#3048からなる部分に含まれる32個のページは、仮想ページ番号として4i+3が与えられる。
【0092】
詳細は後述するが、これら仮想ページ番号は、ホストアドレスの下位7ビットと対応している。
【0093】
次に、仮想ブロックとこれを構成する4つの物理ブロックとの関係について説明する。
【0094】
図8は、8000個の仮想ブロックと、これら各仮想ブロックを構成する4つの物理ブロックとの関係を示すアドレス変換テーブル27のデータ構造を示す概略図である。
【0095】
図8に示されるように、アドレス変換テーブル27は、仮想ブロック表示領域#0〜#7999からなる8000個の仮想ブロック表示領域がこの順に並んで構成され、これら各仮想ブロック表示領域#0〜#7999は、それぞれセル#j−0〜セル#j−3(jは、仮想ブロックアドレス)からなる4個のセル及び1個のフラグによって構成される。
【0096】
例えば、仮想ブロック表示領域#0はセル#0−0〜セル#0−3とフラグとによって構成され、仮想ブロック表示領域#1はセル#1−0〜セル#1−3とフラグとによって構成される。したがって、アドレス変換テーブル27は、32000個のセルと8000個のフラグによって構成されることになる。
【0097】
ここで、セル#j−0を構成するスロット#0はフラッシュメモリチップ2−0に対応し、セル#j−1を構成するスロット#1はフラッシュメモリチップ2−1に対応し、セル#j−2を構成するスロット#2はフラッシュメモリチップ2−2に対応し、セル#j−3を構成するスロット#3はフラッシュメモリチップ2−3に対応している。
【0098】
各仮想ブロック表示領域に含まれるセル#j−0〜#j−3には、それぞれ当該仮想ブロックを構成する物理ブロックのアドレス(物理ブロックアドレス)が格納される。
【0099】
ここで、「物理ブロックアドレス」とは、各物理ブロックに割り当てられたブロック番号を2進数で表したアドレスであり、13ビットで構成される。
【0100】
例えば、図6及び図7に示された仮想ブロックが、仮想ブロック#0であるとすれば、当該仮想ブロックは、物理ブロック#150、物理ブロック#6811、物理ブロック#8191及び物理ブロック#3048より構成されることから、これら物理ブロックの物理ブロックアドレスはそれぞれ「0000010010110B」、「1101010011011B」、「1111111111111B」、及び「0101111101000B」となり、セル#0−0〜#0−3には、これら物理ブロックアドレスがそれぞれ格納されることになる。
【0101】
また、各仮想ブロック表示領域に含まれるフラグは、対応するセル#j−0〜#j−3に格納されている内容が有効であるか無効であるかを示している。
【0102】
具体的には、フラグが「1」を示していれば対応するセルに格納されている内容は有効であり、フラグが「0」を示していれば対応するセルに格納されている内容は無効である。したがって、フラグが「0」を示している仮想ブロック表示領域においては、これに含まれるセル#j−0〜#j−3に格納されている内容は無視される。このようなデータ構造を有するアドレス変換テーブル27は、SRAMワークエリア8上に展開される。
【0103】
上述のように、各アドレス変換テーブルは、32000個のセルと8000個のフラグによって構成されており、各セルには13ビット(2バイト)の情報を格納する必要があり、各フラグには1ビットの情報を格納する必要があるから、アドレス変換テーブル27は、SRAMワークエリア8の記憶容量のうち、約64kバイトを占有することとなる。
【0104】
アドレス変換テーブル27の生成は、次のように行われる。
【0105】
フラッシュメモリチップ2−0〜2−3を構成する各物理ブロックのうち、データが格納されている物理ブロックの各先頭ページ(物理ページ#0)に含まれる冗長領域26には、上述のとおり、ECCブロック11によって生成されたエラーコレクションコードの他、当該物理ブロックがどの仮想ブロックに属するかを示す仮想ブロックアドレスが含まれており、各物理ブロックの各先頭ページに格納されている仮想ブロックアドレスがマイクロプロセッサ6による制御のもと、フラッシュメモリインターフェースブロック10を介して読み出される。
【0106】
ここで、消去済みの空きブロックにおいては、冗長領域26の仮想ブロックアドレス格納領域29に格納されている仮想ブロックアドレスは「オール1(1111111111111B)」となっているはずである。
【0107】
すなわち、仮想ブロックは、上述のとおり、#0(0000000000000B)〜#7999(1111100111111B)までしかなく、したがって、これがオール1(1111111111111B)である場合には、当該物理ブロックが消去済みの空きブロックであると判断することができる。
【0108】
一方、冗長領域26の仮想ブロックアドレス格納領域29に格納された仮想ブロックアドレスが「0000000000000B」〜「1111100111111B」である場合には、当該仮想ブロックアドレスは有効な仮想ブロックアドレスである。
【0109】
したがって、マイクロプロセッサ6は、各物理ブロックの先頭ページ(物理ページ#0)の冗長領域26に含まれる仮想ブロックアドレスを参照し、これがオール1ではなく有効な仮想ブロックアドレスを示していれば、アドレス変換テーブル27を構成するセルのうち、チップ番号及び読み出された仮想ブロックアドレスによって特定されるセルに、当該物理ブロックの物理ブロックアドレスを格納する。
【0110】
例えば、フラッシュメモリチップ2−0に属する物理ブロック#12より読み出された仮想ブロックアドレスが「123」であれば、セル#123−0に、物理ブロックアドレスとして「12」が書き込まれ、対応するフラグが「1」にされる。
【0111】
このような処理が、データが格納されている全ての物理ブロックについて行われる。
【0112】
これにより、アドレス変換テーブル27の生成が完了する。
【0113】
次に、SRAMワークエリア8に格納される消去済みブロックキュー30のデータ構造について説明する。
【0114】
図9は、SRAMワークエリア8に格納される消去済みブロックキュー30のデータ構造を示す概略図である。
【0115】
図9に示されるように、消去済みブロックキュー30は、キューセット#0〜#5からなる6つのキューセットによって構成され、これらは、それぞれキュー#k−0〜キュー#k−3(kは、キューセット番号)からなる4個のキューによって構成される。
【0116】
例えば、キューセット#0はキュー#0−0〜キュー#0−3によって構成され、キューセット#1はキュー#1−0〜キュー#1−3によって構成される。したがって、消去済みブロックキュー30は、24個のキューによって構成される。
【0117】
ここで、キュー#k−0はフラッシュメモリチップ2−0に対応し、キュー#k−1はフラッシュメモリチップ2−1に対応し、キュー#k−2はフラッシュメモリチップ2−2に対応し、キュー#k−3はフラッシュメモリチップ2−3に対応している。
【0118】
各キューセット#0〜#5を構成するキュー#k−0〜#k−3には、ユーザ領域25を構成する全てのフラッシュメモリセル16が消去状態となっている物理ブロックの物理ブロックアドレスが格納される。したがって、例えば、フラッシュメモリチップ2−0に属する消去済みの物理ブロック#153を消去済みブロックキュー30に登録する場合、当該物理ブロックアドレスである「0000010011001B」がキュー#0−0〜#5−0のいずれかに格納される。
【0119】
同様にして、例えば、フラッシュメモリチップ2−2に属する消去済みのブロック#6552を消去済みブロックキュー30に登録する場合、当該物理ブロックアドレスである「1100110011000B」がキュー#0−2〜#5−2のいずれかに格納される。
【0120】
このようにして、各フラッシュメモリチップ2−0〜2−3ごとに最大6つの消去済みブロックの物理ブロックアドレスが消去済みブロックキュー30に登録され、これによって最大6つのキューセット#0〜#5が生成される。
【0121】
消去済みブロックキュー30の生成は、マイクロプロセッサ6による制御のもと、上述したアドレス変換テーブル27の生成の際に行われ、データ書き込みに備えて待機している冗長ブロックの中から、これらキューに登録すべき物理ブロックが選ばれる。
【0122】
次に、本実施態様にかかるフラッシュメモリシステム1の動作について、データの読み出し動作、データの書き込み動作の順に説明する。
【0123】
まず、本実施態様にかかるフラッシュメモリシステム1によるデータの読み出し動作について、具体例に用いて説明する。
【0124】
ここでは、ホストコンピュータ5より、バス14、コネクタ4及びバス13を介して、外部コマンドの一種である外部読み出しコマンドとともにホストアドレス、例えば「00000111111111100000B」がフラッシュメモリシステム1に供給された場合を例に説明する。
【0125】
まず、ホストアドレス及び外部読み出しコマンドがコントローラ3に供給されると、これらホストアドレス及び外部読み出しコマンドは、ホストインターフェースブロック7が有するタスクファイルレジスタ(図示せず)に一時的に格納される。
【0126】
次に、タスクファイルレジスタに格納されたホストアドレスが正しいアドレスであるか否か、すなわち、かかるホストアドレスが、本来存在しない物理アドレスや無効なアドレスを示していないか否かが、ホストインターフェースブロック7によって判定される。
【0127】
かかる判定の結果、タスクファイルレジスタ(図示せず)に格納されたホストアドレスが有効なアドレスであると判断されれば、アドレス変換テーブル27を用いて内部アドレスに変換される。
【0128】
一方、これが異常なアドレスであると判断されれば、ホストインターフェースブロック7が有するエラーレジスタ(図示せず)がセットされ、ホストコンピュータは、かかるレジスタの内容を参照することにより、エラーの発生を知ることができる。
【0129】
次に、アドレス変換テーブル27を用いた内部アドレスへの変換について、図10を参照しながら説明する。
【0130】
図10においては、便宜上、ホストアドレスの上位13ビットを「A」とし、上位14ビット目〜上位18ビット目からなる5ビットを「B」とし、下位2ビットを「C」と表記している。
【0131】
まず、マイクロプロセッサ6による制御のもと、20ビットのホストアドレスから上位13ビット(A)が取り出され、これによってアドレス変換テーブル27内の仮想ブロック表示領域が特定される。
【0132】
本例では、ホストアドレスの上位13ビット(A)が「0000011111111B」であるから、選択される仮想ブロック表示領域は、仮想ブロック表示領域#255となる。
【0133】
次に、マイクロプロセッサ6による制御のもと、SRAMワークエリア8に格納されているアドレス変換テーブル27から仮想ブロック表示領域#255が選択され、仮想ブロック表示領域#255を構成する4個のセルのうち、ホストアドレスの下位2ビット(C)と同じ枝番号を有するセルの内容が読み出される。
【0134】
本例では、ホストアドレスの下位2ビット(C)が「00B(0)」であるから、その内容が読み出されるセルは、セル#255−0となる。本例では、かかるセル#255−0の内容が「0000100001111B」であるものとする。
【0135】
次に、マイクロプロセッサ6による制御のもと、ホストアドレスの下位2ビット(C)、読み出されたセルの内容、及びホストアドレスの上位14ビット目〜上位18ビット目からなる5ビット(B)がこの順に結合される。結合されたアドレスは、内部アドレスとなる。
【0136】
この場合、ホストアドレスの下位2ビット(C)は「00B」であり、読み出されたセルの内容は「0000100001111B」であり、ホストアドレスの上位14ビット目〜上位18ビット目からなる5ビット(B)は「11000B」であることから、得られる内部アドレスは、「00000010000111111000B」となる。
【0137】
以上より、ホストアドレスから内部アドレスへの変換が完了する。
【0138】
一方、ホストインターフェースブロック7が有するタスクファイルレジスタ(図示せず)に外部読み出しコマンドが格納されていることに応答して、マイクロプロセッサ6による制御のもと、フラッシュシーケンサブロック12が有する各種レジスタ(いずれも図示せず)に対する設定がなされる。かかる設定は、次のように行われる。
【0139】
まず、マイクロプロセッサ6による制御のもと、内部コマンドの一種である内部読み出しコマンドがフラッシュシーケンサブロック12内の所定のレジスタに設定される。
【0140】
さらに、マイクロプロセッサ6による制御のもと、20ビット長の内部アドレスがフラッシュシーケンサブロック12内の所定のレジスタに設定される。
【0141】
このようにしてフラッシュシーケンサブロック12に含まれる各種レジスタに対する設定が完了すると、フラッシュシーケンサブロック12による一連の読み出し動作が実行される。
【0142】
フラッシュシーケンサブロック12による一連の読み出し動作は、次の通りである。
【0143】
まず、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部アドレスの上位2ビットに基づき、フラッシュメモリチップ2−0〜2−3のうち、アクセスすべきページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック10に指示する。
【0144】
この場合、内部アドレスの上位2ビットは「00B(0)」であるから、アクセスすべきページが属するフラッシュメモリチップは、フラッシュメモリチップ2−0であり、チップ選択信号#0が活性化される。これにより、フラッシュメモリチップ2−0は、データの読み出しが可能な状態となる。一方、チップ選択信号#1〜#3は、非活性状態が保たれる。
【0145】
次に、フラッシュシーケンサブロック12は、所定のレジスタに格納された内部アドレスの下位18ビット「000010000111111000B」を、所定のレジスタに格納された内部読み出しコマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。
【0146】
バス15に供給された18ビットの内部アドレス及び内部読み出しコマンドは、フラッシュメモリチップ2−0〜2−3に対し共通に供給されるが、上述のとおり、チップ選択信号#0が活性状態となっており、チップ選択信号#1〜#3は非活性状態となっているので、バス15に供給された内部アドレス及び内部読み出しコマンドは、フラッシュメモリチップ2−0に対してのみ有効となる。
【0147】
これにより、フラッシュメモリチップ2−0は、供給された18ビットの内部アドレス「000010000111111000B」に格納されたデータの読み出しを実行する。
【0148】
ここで、供給された18ビットの内部アドレス「000010000111111000B」のうち、上位13ビットは物理ブロックを特定し、下位5ビットは当該ブロック内の物理ページを特定するために用いられる。
【0149】
この場合、上位13ビットは「0000100001111B」であり、下位5ビットは「11000B」であるから、特定される物理ブロックは物理ブロック#271となり、特定される物理ページは物理ページ#24となる。すなわち、フラッシュメモリチップ2−0は、物理ブロック#271の物理ページ#24に格納されたデータの読み出しを実行する。
【0150】
かかる読み出し動作においては、ユーザ領域25に格納されたユーザデータのみならず、冗長領域26に格納された付加情報も読み出される。
【0151】
尚、図7において説明したように、本実施態様においては、4つの物理ブロックが仮想的に結合されて一つの仮想ブロックが構成されているので、フラッシュメモリチップ2−0に属するブロック#271の物理ページ#24は、仮想ページ#96に対応する。
【0152】
このようにしてフラッシュメモリチップ2−0から読み出されたユーザデータ及び付加情報は、バス15を介してフラッシュメモリインターフェースブロック10に供給される。
【0153】
フラッシュメモリインターフェースブロック10がユーザデータ及び付加情報を受け取ると、フラッシュシーケンサブロック12による制御のもと、付加情報に含まれるエラーコレクションコードが抽出され、ユーザデータ及び抽出されたエラーコレクションコードがECCブロック11に供給される。
【0154】
ユーザデータ及びエラーコレクションコードがECCブロック11に供給されると、ECCブロック11は、エラーコレクションコードに基づき、ユーザデータに誤りがあるか否かを判断し、誤りがないと判断すれば、供給されたユーザデータをそのままバッファ9に格納し、誤りがあると判断されれば、これをエラーコレクションコードに基づいてこれを訂正し、訂正後のユーザデータをバッファ9に格納する。
【0155】
このようにしてバッファ9に誤りのないユーザデータが格納されると、フラッシュシーケンサブロック12による一連の読み出し動作が完了する。
【0156】
そして、バッファ9に格納されたユーザデータは、マイクロプロセッサ6による制御のもと、ホストインターフェースブロック7より、バス13、コネクタ4及びバス14を介してホストコンピュータ5に供給される。
【0157】
以上により、一連の読み出し動作が完了する。
【0158】
次に、本実施態様にかかるフラッシュメモリシステム1によるデータの書き込み動作について説明する。
【0159】
フラッシュメモリシステム1によるデータの書き込み動作については、新規データの書き込み動作、すなわち現在データが割り当てられていないホストアドレスに対して新しくデータを割り当てる動作と、データの上書き動作、すなわち、既にデータが割り当てられているホストアドレスに対してこれと異なるデータを割り当てる動作とに分けて説明する。
【0160】
まず、フラッシュメモリシステム1による新規データの書き込み動作について、具体例を用いて説明する。
【0161】
ここでは、ホストコンピュータ5より、バス14、コネクタ4及びバス13を介して、外部コマンドの一種である外部書き込みコマンドと、現在データが割り当てられていない連続した複数のホストアドレス、例えば「00010101010101000100B」〜「00010101010101000111B」と、当該各アドレスに書き込むべきデータとがフラッシュメモリシステム1に供給された場合を例に説明する。
【0162】
ここでは、これら連続するホストアドレスを、ホストアドレス#0〜#3と呼ぶ。
【0163】
まず、ホストアドレス#0〜#3及び外部書き込みコマンドがコントローラ3に供給されると、これらホストアドレス#0〜#3及び外部書き込みコマンドは、ホストインターフェースブロック7が有するタスクファイルレジスタ(図示せず)に一時的に格納される。
【0164】
さらに、ホストアドレス#0〜#3にそれぞれ対応する書き込みデータがコントローラ3に供給されると、マイクロプロセッサ6による制御のもと、これらデータがECCブロック11に送出される。
【0165】
これらデータの供給を受けたECCブロック11は、これらデータを解析してエラーコレクションコードを生成し、これを一時的に保持する。
【0166】
次に、タスクファイルレジスタに格納されたホストアドレス#0〜#3が正しいアドレスであるか否か、すなわち、かかるホストアドレス#0〜#3が、本来存在しない物理アドレスや無効なアドレスを示していないか否かが、ホストインターフェースブロック7によって判定される。
【0167】
かかる判定の結果、タスクファイルレジスタに格納されたホストアドレス#0〜#3が有効なアドレスであると判断されれば、アドレス変換テーブル27を用いて内部アドレスに変換される。
【0168】
一方、これが異常なアドレスであると判断されれば、ホストインターフェースブロック7が有するエラーレジスタ(図示せず)がセットされ、ホストコンピュータは、かかるレジスタの内容を参照することにより、エラーの発生を知ることができる。
【0169】
当該ホストアドレス#0〜#3が有効なアドレスであると判断されると、アドレス変換テーブル27を用いて内部アドレスに変換される。
【0170】
図11は、アドレス変換テーブル27を用いた内部アドレスへの変換方法を説明するための図である。
【0171】
図11に示されるように、本例では、ホストアドレス#0〜#3の上位13ビット(A)が「0001010101010B」であるから、選択される仮想ブロック表示領域は、仮想ブロック表示領域#682となる。
【0172】
次に、マイクロプロセッサ6による制御のもと、SRAMワークエリア8に格納されているアドレス変換テーブル27から、仮想ブロック表示領域#682の内容が読み出される。
【0173】
ここでは、新規データの書き込み動作、すなわち現在データが割り当てられていないホストアドレスに対して新しくデータを割り当てる動作であるので、当該仮想ブロック表示領域#682のフラグは「0」であるはずである。
【0174】
対応するフラグが「0」であることに応答して、マイクロプロセッサ6による制御のもと、消去済みブロックキュー30を構成するキューセット#0〜#5のいずれか、例えば、キューセット#0が選択され、かかるキューセット#0を構成する各キュー#0−0〜#0−3に格納された内容が読み出される。
【0175】
上述のとおり、各キューに格納されているのは、消去済みブロックの物理ブロックアドレスである。
【0176】
本例では、これらキュー#0−0〜#0−3の内容がそれぞれ「0000000001111B」、「1110000110011B」、「0101111110000B」、「1000100000000B」であるものとする。
【0177】
キュー#0−0〜#0−3に格納された内容が読み出されると、これがアドレス変換テーブル27の仮想ブロック表示領域#682に格納され、フラグが「1」にセットされるとともに、マイクロプロセッサ6による制御のもと、これを用いて内部アドレスが生成される。
【0178】
図11に示されるように、内部アドレスの生成方法は、データの読み出し動作の場合と同様であり、マイクロプロセッサ6による制御のもと、ホストアドレス#0〜#3それぞれの下位2ビット(C)、読み出されたキューの内容、及びホストアドレス#0〜#3の上位14ビット目〜上位18ビット目からなる5ビット(B)がこの順に結合される。
【0179】
この場合、ホストアドレス#0〜#3の下位2ビット(C)はそれぞれ「00B」〜「11B」であり、読み出されたセルの内容はそれぞれ「0000000001111B」、「1110000110011B」、「0101111110000B」、「1000100000000B」であり、ホストアドレス#0〜#3の上位14ビット目〜上位18ビット目からなる5ビット(B)はいずれも「10001B」であることから、得られる4つの内部アドレス#0〜#3の値は、図11に示される値となる。
【0180】
これにより、ホストアドレス#0〜#3から内部アドレス#0〜#3への変換が完了する。
【0181】
一方、ホストインターフェースブロック7が有するタスクファイルレジスタ(図示せず)に外部書き込みコマンドが格納されていることに応答して、マイクロプロセッサ6による制御のもと、フラッシュシーケンサブロック12が有する各種レジスタ(図示せず)に対する設定がなされる。
【0182】
かかる設定は、次のように行われる。
【0183】
まず、マイクロプロセッサ6による制御のもと、内部コマンドの一種であるデータ転送コマンド及び内部書き込みコマンドがフラッシュシーケンサブロック12内の所定のレジスタに設定される。
【0184】
さらに、マイクロプロセッサ6による制御のもと、上記生成された4つの内部アドレス#0〜#3がフラッシュシーケンサブロック12内の所定のレジスタに設定される。
【0185】
このようにしてフラッシュシーケンサブロック12に含まれる各種レジスタに対する設定が完了すると、フラッシュシーケンサブロック12による一連の書き込み動作が実行される。
【0186】
図12は、フラッシュシーケンサブロック12による一連の書き込み動作タイミング概略的に示すタイミング図である。
【0187】
まず、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部アドレスのうち、上位2ビットが「00B(0)」である内部アドレス#0を選択し、当該内部アドレス#0の上位2ビットに基づいて、フラッシュメモリチップ2−0〜2−3のうち、アクセスすべき物理ページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック10に指示する。
【0188】
この場合、内部アドレス#0の上位2ビットは「00B(0)」であるから、アクセスすべき物理ページが属するフラッシュメモリチップは、フラッシュメモリチップ2−0であり、チップ選択信号#0が活性化される。
【0189】
これにより、フラッシュメモリチップ2−0は、データの書き込みが可能な状態となる。一方、チップ選択信号#1〜#3は、非活性状態が保たれる。
【0190】
次に、フラッシュシーケンサブロック12は、内部アドレス#0の下位18ビット「000000000111110001B」を、所定のレジスタに格納されたデータ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。
【0191】
バス15に供給された内部アドレス#0の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−0〜2−3に対し共通に供給されるが、上述のとおり、チップ選択信号#0は活性状態となっており、チップ選択信号#1〜#3は非活性状態となっているので、バス15に供給された内部アドレス#0の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−0に対してのみ有効となる(転送先指定)。
【0192】
これにより、フラッシュメモリチップ2−0は、供給された内部アドレス#0の下位18ビット「000000000111110001B」に対応するページに書き込まれるべきデータの受け付けが許可された状態となる。
【0193】
次に、バッファ9に格納されている書き込みデータのうち、ホストアドレス#0に対応するデータ及び対応するエラーコレクションコード等の冗長領域26に格納すべき付加情報が、フラッシュシーケンサブロック12により、フラッシュメモリインターフェースブロック10を介して、バス15に供給される。
【0194】
バス15に供給されたデータ及びエラーコレクションコード等の付加情報も、やはりフラッシュメモリチップ2−0〜2−3に対し共通に供給されるが、上述のとおり、チップ選択信号#0が活性状態となっているため、フラッシュメモリチップ2−0に対してのみ有効となる(データ転送)。
【0195】
このようにして、書き込みデータの受け付けが許可された状態にあるフラッシュメモリチップ2−0に対して書き込みデータ及びエラーコレクションコード等の付加情報が転送されると、かかる書き込みデータ及びエラーコレクションコードは、フラッシュメモリチップ2−0内に備えられた内部レジスタ(図示せず)に一時的に格納される。
【0196】
次に、フラッシュシーケンサブロック12は、所定のレジスタに格納された内部書き込みコマンドを、フラッシュメモリチップ2−0に対して発行する(書き込み命令)。
【0197】
これに応答して、フラッシュメモリチップ2−0は、内部レジスタに格納されているデータ及びエラーコレクションコード等の付加情報を、転送先指定処理によって指定されたアドレスに対応する物理ページに書き込む(フラッシュプログラミング)。
【0198】
すなわち、内部レジスタに格納されているデータ及びエラーコレクションコード等の付加情報が、内部アドレス#0の下位18ビット「000000000111110001B」により特定される物理ページ、つまり、フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#17に書き込まれる。
【0199】
フラッシュメモリチップ2−0の物理ブロック#15の物理ページ#17は、仮想ページ#68に対応する。
【0200】
フラッシュメモリチップ2−0がフラッシュプログラミングを実行している間、フラッシュシーケンサブロック12は、所定のレジスタに格納された内部アドレスのうち、上位2ビットが「01B(0)」である内部アドレス#1を選択し、当該内部アドレス#1の上位2ビットに基づいて、チップ選択信号#1を活性化させる。
【0201】
これにより、フラッシュメモリチップ2−1は、データの書き込みが可能な状態となる。
【0202】
次に、フラッシュシーケンサブロック12は、内部アドレス#1の下位18ビット「111000011001110001B」を、所定のレジスタ(図示せず)に格納されたデータ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。
【0203】
この場合、上述のとおり、チップ選択信号#1が活性状態となっているので、バス15に供給された内部アドレス#1の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−1に対してのみ有効となる(転送先指定)。
【0204】
その後、上述のとおり、フラッシュメモリチップ2−1に対してデータ転送、及び書き込み命令の発行が行われ、ホストアドレス#1に対応するデータ及び対応するエラーコレクションコード等の付加情報が、内部アドレス#1により特定される物理ページに書き込まれる。
【0205】
この場合、内部アドレス#1の下位18ビットは「111000011001110001B」であるから、ホストアドレス#1に対応するデータ及び対応するエラーコレクションコード等の付加情報は、フラッシュメモリチップ2−1の物理ブロック#7219の物理ページ#17に書き込まれる。
【0206】
フラッシュメモリチップ2−1の物理ブロック#7219の物理ページ#17は、仮想ページ#69に対応する。
【0207】
このようなデータ書き込み動作が、内部アドレス#2及び#3に対しても実行され、これにより、ホストアドレス#2及び#3に対応するデータ及び対応するエラーコレクションコード等の付加情報も、それぞれ内部アドレス#2及び#3により特定される物理ページへ書き込まれる。
【0208】
この場合、内部アドレス#2の下位18ビットは「010111111000010001B」であるから、ホストアドレス#2に対応するデータ及び対応するエラーコレクションコード等の付加情報は、フラッシュメモリチップ2−2の物理ブロック#3056の物理ページ#17に書き込まれる。
【0209】
同様に、内部アドレス#3の下位18ビットは「100010000000010001B」であるから、ホストアドレス#3に対応するデータ及び対応するエラーコレクションコード等の付加情報は、フラッシュメモリチップ2−3の物理ブロック#4352の物理ページ#17に書き込まれる。
【0210】
ここで、フラッシュメモリチップ2−2の物理ブロック#3056の物理ページ#17は、仮想ページ#70に対応し、フラッシュメモリチップ2−3の物理ブロック#4352の物理ページ#17は、仮想ページ#71に対応する。
【0211】
このようにして、フラッシュシーケンサブロック12による一連の書き込み動作が完了する。
【0212】
かかる一連の書き込み動作においては、連続するホストアドレス#0〜#3に対応するデータが、それぞれ異なるフラッシュメモリチップ2−0〜2−3に属する異なる物理ブロック内に書き込まれた点が重要である。
【0213】
これら4つの物理ブロックは、上述のとおり一つの仮想ブロック#682を構成し、連続するホストアドレス#0〜#3に対応するデータは、当該仮想ブロック#682内の連続する仮想ページ#68〜#71に書き込まれたことになる。
【0214】
また、マイクロプロセッサ6は、上述のデータ書き込みによって、消去済みブロックキュー30のキューセット#0に格納された物理ブロックアドレスが、消去済みブロックの物理ブロックアドレスではなくなったことに応答して、新たな消去済みブロックを冗長ブロックの中から選択し、選択された消去済みブロックの物理ブロックアドレスを新たにキュー#0−0〜#0−3に格納する。
【0215】
以上により、一連のデータ書き込み動作が完了する。
【0216】
次に、本実施態様にかかるフラッシュメモリシステム1によるデータの上書き動作について、具体例を用いて説明する。
【0217】
以下に詳述するが、フラッシュメモリシステム1によるデータの上書き動作においては、上書き対象の物理ページが含まれる物理ブロック内のデータを、他の物理ブロックに移動させる必要がある。その必要性は、次のとおりである。
【0218】
すなわち、フラッシュメモリチップ2−0〜2−3を構成するフラッシュメモリセル16は、これをメモリセル単位にて消去状態から書込状態へ変化させることはできる一方、これを書込状態から消去状態へ変化させることは、メモリセル単位で行うことができず、物理ブロック単位でしか行うことができない。このため、ある物理ページにデータを書き込む際には、その物理ページのユーザ領域25及び冗長領域26を構成する全てのフラッシュメモリセル16が消去状態となっている必要があり、既に何らかのデータが書き込まれている物理ページ、すなわち、その物理ページのユーザ領域25を構成するフラッシュメモリセル16が一つでも書込状態となっている物理ページに、これと異なるデータを直接上書きすることはできない。
【0219】
したがって、既にデータの書き込まれた物理ページに対し、これと異なる新しいデータを書き込むためには、一旦、この物理ページが属する物理ブロックを構成するフラッシュメモリセル16を全て消去状態とし、その後に新しいデータを書き込むという処理が必要となる。したがって、ある物理ページに格納された古いデータに新しいデータを上書きしようとする場合、この物理ページが属する物理ブロックに含まれる他の物理ページに格納されたデータが消失するのを防ぐためには、当該他の物理ページに格納されたデータを、他の物理ブロックに移動させるという処理が必要となるのである。
【0220】
本明細書においては、このような上書き処理に伴うデータの移動を「ブロック間転送」と呼び、転送元の物理ブロックの物理ブロックアドレスを「転送元ブロックアドレス」、転送先の物理ブロックの物理ブロックアドレスを「転送先ブロックアドレス」と呼ぶ。
【0221】
さて、以下の説明においては、ホストコンピュータ5より、バス14、コネクタ4及びバス13を介して、外部書き込みコマンドと、既にデータが割り当てられている連続した複数のホストアドレス#0〜#3、例えば「11000000100100111000B」〜「11000000100100111011B」と、当該各アドレスに書き込むべきデータとがフラッシュメモリシステム1に供給された場合を例に説明する。
【0222】
まず、ホストアドレス#0〜#3及び外部書き込みコマンドがコントローラ3に供給されると、これらホストアドレス#0〜#3及び外部書き込みコマンドは、ホストインターフェースブロック7が有するタスクファイルレジスタ(図示せず)に一時的に格納される。
【0223】
さらに、ホストアドレス#0〜#3にそれぞれ対応する書き込みデータがコントローラ3に供給されると、マイクロプロセッサ6による制御のもと、これらデータがECCブロック11に送出される。
【0224】
これらデータの供給を受けたECCブロック11は、これらデータを解析してエラーコレクションコードを生成し、これを一時的に保持する。
【0225】
当該ホストアドレスが有効なアドレスであると判断されると、アドレス変換テーブル27を用いて転送元ブロックアドレス及び転送先ブロックアドレスが生成される。
【0226】
図13は、転送元ブロックアドレス及び転送先ブロックアドレスの生成方法を説明するための図である。
【0227】
図13に示されるように、本例では、ホストアドレス#0〜#3の上位13ビット(A)が「1100000010010B」であるから、アドレス変換テーブル27内において選択される仮想ブロック表示領域は仮想ブロック表示領域#6162となる。
【0228】
したがって、マイクロプロセッサ6による制御のもと、SRAMワークエリア8に格納されているアドレス変換テーブル27から仮想ブロック#6162が選択され、仮想ブロック#6162の内容が読み出される。
【0229】
ここでは、旧データの上書き動作、すなわちすでにデータが割り当てられているホストアドレスに対してさらにデータを割り当てる動作であるので、当該仮想ブロック表示領域#6162内のフラグは「1」を示しているはずである。このことは、当該仮想ブロック表示領域#6162を構成する4個のセル#6162−0〜#6162−3の内容が有効であることを意味する。
【0230】
ここでは、セル#6162−0〜#6162−3から読み出された内容が「1100000000001B」、「0110000000010B」、「0001100000100B」、「0111100001000B」であるものとする。
【0231】
セル#6162−0〜#6162−3に格納された内容が読み出されると、マイクロプロセッサ6による制御のもと、これらを用いて転送元ブロックアドレスが生成される。
【0232】
転送元ブロックアドレスは、マイクロプロセッサ6による制御のもと、ホストアドレス#0〜#3それぞれの下位2ビット(C)及び読み出されたセルの内容がこの順に結合されて生成される。
【0233】
この場合、ホストアドレス#0〜#3の下位2ビット(C)はそれぞれ「00B」〜「11B」であり、読み出されたセルの内容は「1100000000001B」、「0110000000010B」、「0001100000100B」、「0111100001000B」であることから、得られる4つの転送元ブロックアドレス#0〜#3の値は、図13に示される値となる。
【0234】
これにより、転送元ブロックアドレス#0〜#3の生成が完了する。
【0235】
次に、マイクロプロセッサ6による制御のもと、消去済みブロックキュー30を構成するキューセット#0〜#5のいずれか、例えば、キューセット#1が選択され、かかるキューセット#1を構成する各キュー#1−0〜#1−3に格納された内容が読み出される。
【0236】
上述のとおり、各キューに格納されているのは、消去済みブロックの物理ブロックアドレスである。
【0237】
本例では、これらキュー#1−0〜#1−3の内容がそれぞれ「0010000010000B」、「1000000100000B」、「0111101000000B」、「0010110000000B」であるものとする。
【0238】
キュー#1−0〜#1−3に格納された内容が読み出されると、マイクロプロセッサ6による制御のもと、これらがアドレス変換テーブル27の仮想ブロック表示領域#6162を構成するセル#6162−0〜#6162−3に上書きされるとともに、これらを用いて転送先ブロックアドレスが生成される。
【0239】
転送先ブロックアドレスは、マイクロプロセッサ6による制御のもと、ホストアドレス#0〜#3それぞれの下位2ビット(C)及び読み出されたキューの内容がこの順に結合されて生成される。
【0240】
この場合、ホストアドレス#0〜#3の下位2ビット(C)はそれぞれ「00B」〜「11B」であり、読み出されたセルの内容は「0010000010000B」、「1000000100000B」、「0111101000000B」、「0010110000000B」であることから、得られる4つの転送先ブロックアドレス#0〜#3の値は、図13に示される値となる。
【0241】
これにより、転送先ブロックアドレス#0〜#3の生成が完了する。
【0242】
一方、ホストインターフェースブロック7が有するタスクファイルレジスタ(図示せず)に外部書き込みコマンドが格納されていることに応答して、マイクロプロセッサ6による制御のもと、フラッシュシーケンサブロック12が有する各種レジスタ(図示せず)に対する設定がなされる。
【0243】
かかる設定は、次のように行われる。
【0244】
まず、マイクロプロセッサ6による制御のもと、データ転送コマンド、内部書き込みコマンド及び内部読み出しコマンドがフラッシュシーケンサブロック12内の所定のレジスタに設定される。さらに、マイクロプロセッサ6による制御のもと、上記生成された転送元ブロックアドレス#0〜#3及び転送先ブロックアドレス#0〜#3がフラッシュシーケンサブロック12内の所定のレジスタに設定される。
【0245】
このようにしてフラッシュシーケンサブロック12に含まれる各種レジスタ(図示せず)に対する設定が完了すると、フラッシュシーケンサブロック12による一連の書き込み動作が実行される。
【0246】
フラッシュシーケンサブロック12による一連の書き込み動作は、次の通りである。
【0247】
まず、フラッシュシーケンサブロック12は、所定のレジスタに格納された転送元ブロックアドレス#0に「00000B(0)」を付加して20ビットの転送元内部アドレスを生成する。この場合、転送元内部アドレスは、「00110000000000100000B」となる。
【0248】
次に、フラッシュシーケンサブロック12は、生成された転送元内部アドレスの上位2ビットに基づき、フラッシュメモリチップ2−0〜2−3のうち、アクセスすべきページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック10に指示する。この場合、生成された転送元内部アドレスの上位2ビットは「00B(0)」であるから、アクセスすべきページが属するフラッシュメモリチップは、フラッシュメモリチップ2−0であり、チップ選択信号#0が活性化される。
【0249】
これにより、フラッシュメモリチップ2−0は、データの読み出しが可能な状態となる。一方、チップ選択信号#1〜#3は、非活性状態が保たれる。
【0250】
次に、フラッシュシーケンサブロック12は、転送元内部アドレスの下位18ビット「110000000000100000B」を、所定のレジスタに格納された内部読み出しコマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。
【0251】
これにより、フラッシュメモリチップ2−0は、供給された転送元内部アドレスの下位18ビット「110000000000100000B」に格納されたデータの読み出しを実行する。
【0252】
すなわち、フラッシュメモリチップ2−0は、物理ブロック#6145の物理ページ#0に格納されたデータの読み出しを実行する。
【0253】
尚、図7において説明したように、本実施態様においては、4つの物理ブロックが仮想的に結合されて一つの仮想ブロックが構成されているので、フラッシュメモリチップ2−0に属する物理ブロック#6145の物理ページ#0は、仮想ブロック上においては仮想ページ#0に対応する。
【0254】
このようにしてフラッシュメモリチップ2−0から読み出されたデータは、バス15を介してフラッシュメモリインターフェースブロック10に供給される。
【0255】
フラッシュメモリインターフェースブロック10がユーザデータを受け取ると、これがバッファ9に一時的に格納されるとともに、ECCブロック11に送出され、新たにエラーコレクションコードの生成が行われる。
【0256】
ECCブロック11にて新たに生成されたエラーコレクションコードは、ECCブロック11内に一時的に保持される。
【0257】
このような読み出し動作が、転送元ブロックアドレス#1〜#3に「00000B(0)」が付加されることによって、フラッシュメモリチップ2−1〜2−3に対しても実行され、その結果、フラッシュメモリチップ2−1に属する物理ブロック#3074の物理ページ#0に格納されたデータ、フラッシュメモリチップ2−2に属する物理ブロック#772の物理ページ#0に格納されたデータ、及びフラッシュメモリチップ2−3に属する物理ブロック#3848の物理ページ#0に格納されたデータも読み出されることになる。
【0258】
尚、仮想ブロック上においては、物理ブロック#3074の物理ページ#0は仮想ページ#1に対応し、物理ブロック#772の物理ページ#0は仮想ページ#2に対応し、物理ブロック#3848の物理ページ#0は仮想ページ#3に対応する。
【0259】
すなわち、以上によって、仮想ブロック#6162の仮想ページ#0〜#3に格納されているデータが読み出されたことになる。
【0260】
次に、バッファ9に一時的に格納されたデータの書き込み動作が行われる。
【0261】
まず、フラッシュシーケンサブロック12は、所定のレジスタに格納された転送先ブロックアドレス#0に「00000B(0)」を付加して20ビットの転送先内部アドレスを生成する。この場合、転送先内部アドレスは、「00001000001000000000B」となる。
【0262】
次に、フラッシュシーケンサブロック12は、生成された転送先内部アドレスの上位2ビットに基づき、フラッシュメモリチップ2−0〜2−3のうち、アクセスすべき物理ページが属するフラッシュメモリチップに対応するチップ選択信号を活性化するよう、フラッシュメモリインターフェースブロック10に指示する。
【0263】
この場合、転送先内部アドレスの上位2ビットは「00B(0)」であるから、アクセスすべき物理ページが属するフラッシュメモリチップは、フラッシュメモリチップ2−0であり、チップ選択信号#0が活性化される。
【0264】
これにより、フラッシュメモリチップ2−0は、データの書き込みが可能な状態となる。
【0265】
次に、フラッシュシーケンサブロック12は、転送先内部アドレスの下位18ビットを、所定のレジスタに格納されたデータ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。
【0266】
バス15に供給された書き込みアドレス及びデータ転送コマンドは、フラッシュメモリチップ2−0〜2−3に対し共通に供給されるが、上述のとおり、チップ選択信号#0が活性状態となっており、チップ選択信号#1〜#3は非活性状態となっているので、バス15に供給された転送先内部アドレス及びデータ転送コマンドは、フラッシュメモリチップ2−0に対してのみ有効となる(転送先指定)。
【0267】
次に、バッファ9に格納されているデータのうち、フラッシュメモリチップ2−0から読み出したデータ及び対応するエラーコレクションコード等の冗長領域26に格納すべき付加情報が、フラッシュシーケンサブロック12により、フラッシュメモリインターフェースブロック10を介して、バス15に供給される。
【0268】
バス15に供給されたデータ及びエラーコレクションコード等の付加情報も、やはりフラッシュメモリチップ2−0〜2−3に対し共通に供給されるが、上述のとおり、チップ選択信号#0が活性状態となっているため、フラッシュメモリチップ2−0に対してのみ有効となる(データ転送)。
【0269】
フラッシュメモリチップ2−0に転送されたデータ及びエラーコレクションコード等の付加情報は、フラッシュメモリチップ2−0内に備えられた内部レジスタ(図示せず)に一時的に格納される。
【0270】
次に、フラッシュシーケンサブロック12は、所定のレジスタに格納された内部書き込みコマンドを、フラッシュメモリチップ2−0に対して発行する(書き込み命令)。これに応答して、フラッシュメモリチップ2−0は、内部レジスタに格納されているデータ及びエラーコレクションコード等の付加情報を、転送先指定処理によって指定されたアドレスに書き込む(フラッシュプログラミング)。
【0271】
すなわち、レジスタに格納されているデータ及びエラーコレクションコード等の付加情報が、転送先内部アドレスの下位18ビット「001000001000000000B」により特定される物理ページ、つまり、フラッシュメモリチップ2−0の物理ブロック#1040の物理ページ#0に書き込まれる。フラッシュメモリチップ2−0の物理ブロック#1040の物理ページ#0は、仮想ページ#0に対応する。
【0272】
フラッシュメモリチップ2−0がフラッシュプログラミングを実行している間、フラッシュシーケンサブロック12は、所定のレジスタに格納された転送先ブロックアドレス#1に「00000B(0)」を付加して20ビットの新たな転送先内部アドレスを生成する。この場合、転送先内部アドレスは、「01100000010000000000B」となる。
【0273】
次いで、フラッシュシーケンサブロック12は、新たな転送先内部アドレスの上位2ビットに基づいて、チップ選択信号#1を活性化させる。これにより、フラッシュメモリチップ2−1は、データの書き込みが可能な状態となる。
【0274】
次に、フラッシュシーケンサブロック12は、新たな転送先内部アドレスの下位18ビット「100000010000000000B」を、所定のレジスタに格納されたデータ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。
【0275】
この場合、上述のとおり、チップ選択信号#1が活性状態となっているので、バス15に供給された内部アドレス#1の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ2−1に対してのみ有効となる(転送先指定)。
【0276】
次に、バッファ9に格納されているデータのうち、フラッシュメモリチップ2−1から読み出したデータ及び対応するエラーコレクションコード等の冗長領域26に格納すべき付加情報が、上述と同様にしてフラッシュメモリチップ2−1に対して転送され、その後、書き込み命令の発行が行われる。これにより、フラッシュメモリチップ2−1はフラッシュプログラミングを行い、内部レジスタに格納されているデータ及びエラーコレクションコード等の付加情報が、転送先内部アドレスの下位18ビット「100000010000000000B」により特定される物理ページ、つまり、フラッシュメモリチップ2−1の物理ブロック#4128の物理ページ#0に書き込まれる。
【0277】
フラッシュメモリチップ2−1の物理ブロック#4128の物理ページ#0は、仮想ページ#1に対応する。
【0278】
このような、書き込み処理が、転送先ブロックアドレス#2及び#3に「00000B(0)」が付加されることによって、フラッシュメモリチップ2−2及び2−3に対しても実行され、これにより、フラッシュメモリチップ2−2から読み出したデータ及び対応するエラーコレクションコード等の冗長領域26に格納すべき付加情報が、フラッシュメモリチップ2−2の物理ブロック#3904の物理ページ#0に書き込まれ、フラッシュメモリチップ2−3から読み出したデータ及び対応するエラーコレクションコード等の冗長領域26に格納すべき付加情報が、フラッシュメモリチップ2−3の物理ブロック#1408の物理ページ#0に書き込まれる。
【0279】
フラッシュメモリチップ2−2の物理ブロック#3904の物理ページ#0は、仮想ページ#2に対応し、フラッシュメモリチップ2−3の物理ブロック#1408の物理ページ#0は、仮想ページ#3に対応する。
【0280】
これにより、転送元の仮想ブロックの仮想ページ#0〜#3に格納されているデータが、転送先の仮想ブロックの仮想ページ#0〜#3に書き込まれたことになる。
【0281】
すなわち、転送元の仮想ブロックの仮想ページ#0〜#3から転送先の仮想ブロックの仮想ページ#0〜#3へのデータの転送が行われたことになる。
【0282】
このようなデータの転送動作は、転送元ブロックアドレス及び転送先ブロックアドレスに付加する5ビットの値をインクリメントすることによって、次々と行われる。
【0283】
すなわち、転送元ブロックアドレス及び転送先ブロックアドレスに付加される5ビットの値が「00001(1)」であれば、転送元の仮想ブロックの仮想ページ#4〜#7から転送先の仮想ブロックの仮想ページ#4〜#7へのデータの転送が行われ、「00010(2)」であれば、転送元の仮想ブロックの仮想ページ#8〜#11から転送先の仮想ブロックの仮想ページ#8〜#11へのデータの転送が行われることになる。
【0284】
このような転送動作は、付加される5ビットの値が、ホストアドレスの上位14ビット目〜上位18ビット目からなる5ビット(B)である「01110B(14)」に一致するまで連続的に行われる。
【0285】
すなわち、付加される5ビットがインクリメントされた結果、これが「01110B(14)」となり、ホストアドレスの上位14ビット目〜上位18ビット目からなる5ビット(B)に一致すると、一旦、上述した転送動作が中断される。
【0286】
本例では、転送元の仮想ブロックの仮想ページ#0〜#55から転送先の仮想ブロックの仮想ページ#0〜#55へのデータの転送が完了した時点で、付加される5ビットの値が、ホストアドレスの上位14ビット目〜上位18ビット目からなる5ビット(B)に一致することになる。
【0287】
付加される5ビットがホストアドレスの上位14ビット目〜上位18ビット目からなる5ビット(B)に一致すると、フラッシュシーケンサブロック12は、かかる5ビット「01110B(14)」を用いたデータの読み出しを行わず、これを転送先ブロックアドレス#0〜#3にそれぞれ付加して、新たな転送先内部アドレスを生成する。
【0288】
例えば、転送先ブロックアドレス#0に「01110B」が付加されて生成された転送先内部アドレスは、「00001000001000001110B」である。
【0289】
次に、フラッシュシーケンサブロック12は、生成された転送先内部アドレスの上位2ビットに基づいてチップ選択信号#0を活性化しつつ、転送先内部アドレスの下位18ビットを、データ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する(転送先指定)。
【0290】
次に、ホストアドレス#0に対応する書き込みデータ及び対応するエラーコレクションコード等の付加情報が、フラッシュシーケンサブロック12により、フラッシュメモリインターフェースブロック10を介して、バス15に供給される。
【0291】
このとき、チップ選択信号#0が活性状態となっているため、フラッシュメモリチップ2−0に転送されたデータ及びエラーコレクションコードは、フラッシュメモリチップ2−0内に備えられた内部レジスタに一時的に格納される(データ転送)。
【0292】
次に、フラッシュシーケンサブロック12は、所定のレジスタに格納された内部書き込みコマンドを、フラッシュメモリチップ2−0に対して発行する(書き込み命令)。
【0293】
このようにして、フラッシュメモリチップ2−0がホストアドレス#0に対応する書き込みデータ及び対応するエラーコレクションコード等の付加情報をフラッシュプログラミングを実行している間、フラッシュシーケンサブロック12は、ホストアドレス#1に対応する書き込みデータ及び対応するエラーコレクションコード等の付加情報をフラッシュメモリチップ2−1に書き込むべく、転送先指定処理、データ転送処理等を実行する。
【0294】
このように、あるフラッシュメモリチップがフラッシュプログラミングを実行している途中で、これと異なるフラッシュメモリチップに対して転送先指定処理、データ転送処理等を実行する点はすでに説明したとおりであり、これによって、ホストアドレス#0に対応する書き込みデータは、フラッシュメモリチップ2−0内の物理ブロック#1040の物理ページ#14に書き込まれ、ホストアドレス#1に対応する書き込みデータは、フラッシュメモリチップ2−1内の物理ブロック#4128の物理ページ#14に書き込まれ、ホストアドレス#2に対応する書き込みデータは、フラッシュメモリチップ2−2内の物理ブロック#3904の物理ページ#14に書き込まれ、ホストアドレス#3に対応する書き込みデータは、フラッシュメモリチップ2−3内の物理ブロック#1408の物理ページ#14に書き込まれる。
【0295】
これにより、ホストアドレス#0〜#3に対応する書き込みデータが、転送先の仮想ブロックの仮想ページ#56〜#59にそれぞれ書き込まれたことになる。
【0296】
かかるデータの書き込みが完了すると、再び、転送元ブロックアドレス及び転送先ブロックアドレスに付加される5ビットがインクリメントされ、新しい転送元内部アドレス及び転送先内部アドレスを用いたデータの転送が再開される。
【0297】
かかる転送動作は、付加される5ビットが「11111(31)」である場合のデータ転送が完了するまで連続的に行われる。
【0298】
すなわち、転送元の仮想ブロックの仮想ページ#60〜#127から転送先の仮想ブロックの仮想ページ#60〜#127へのデータの転送が完了するまで行われ、これにより、フラッシュシーケンサブロック12による一連のデータ転送動作が完了する。
【0299】
また、マイクロプロセッサ6は、上述のデータ書き込みによって、消去済みブロックキュー30のキューセット#1に格納された物理ブロックアドレスが、消去済みブロックの物理ブロックアドレスではなくなったことに応答して、新たな消去済みブロックを冗長ブロックの中から選択し、選択された消去済みブロックの物理ブロックアドレスを新たにキュー#1−0〜#1−3に格納する。
【0300】
尚、転送元の各物理ブロックは、いずれもブロック消去され、これによって新たな消去済みブロックとなる。
【0301】
以上により、一連のデータ書き込み動作が完了する。
【0302】
このように、本実施態様によるフラッシュメモリシステム1では、「仮想ブロック」という概念を用い、互いに異なるフラッシュメモリチップに属する複数の物理ブロックを仮想的に一つのブロックとして取り扱っているので、ホストコンピュータ5から、連続する複数アドレスに対してデータ書き込み要求がなされた場合に、ある書き込みデータについてフラッシュプログラミングが実行されている途中で、次の書き込みデータに対し、転送先指定やデータ転送等の処理を実行することができ、これにより一連のデータ書き込みに要する時間を大幅に短縮させることが可能となる。
【0303】
すなわち、一連のデータ書き込み動作のうち、フラッシュプログラミングには比較的長い時間、典型的には約200μsec程度が必要とされるところ、本実施態様によるフラッシュメモリシステム1によれば、かかるフラッシュプログラミングと並行して他の処理を実行可能であることから、一連のデータ書き込みに要する時間は大幅に短縮される。
【0304】
次に、本発明の好ましい他の実施態様にかかるフラッシュメモリシステムについて詳細に説明する。
【0305】
図14は、本発明の好ましい他の実施態様にかかるフラッシュメモリシステム31を概略的に示すブロック図である。
【0306】
図14に示されるように、本実施態様にかかるフラッシュメモリシステム31は、 上記実施態様にかかるフラッシュメモリシステム1とほぼ同様の構成を備えており、搭載されているフラッシュメモリチップの種類においてのみ異なる。
【0307】
フラッシュメモリチップ32−0〜32−3のアドレス空間は、上記実施態様にかかるフラッシュメモリシステム1に用いたフラッシュメモリチップ2−0〜2−3のアドレス空間と同じであり、図4に示したとおりである。
【0308】
ここで、フラッシュメモリチップ32−0〜32−3は、いずれも「バンクタイプ」と呼ばれるチップであり、各物理ブロックは、それぞれ独立したレジスタを有するいずれかのバンクに分類される。
【0309】
それぞれ異なるバンクに属する複数の物理ブロックについては、互いに同時に書き込み処理を行うことができる他、互いに同時にブロック消去を行うことができる。
【0310】
図15は、フラッシュメモリチップ32−0の構造を概略的に示す図である。
【0311】
図15に示されるように、フラッシュメモリチップ32−0を構成する物理ブロック#0〜#8191は、バンク#0〜#3からなる4つのバンクに分類されている。
【0312】
詳細には、物理ブロック#4m(mは0〜2047の整数)はバンク#0に属し、物理ブロック#4m+1はバンク#1に属し、物理ブロック#4m+2はバンク#2に属し、物理ブロック#4m+3はバンク#3に属している。また、フラッシュメモリチップ32−0は、レジスタ#0〜#3からなる4つのレジスタを備えており、これらレジスタ#0〜#3はバンク#0〜#3にそれぞれ対応している。
【0313】
これら各レジスタ#0〜#3は、それぞれ1ページ分のデータを一時的に保持することができる。
【0314】
すなわち、バンク#0に属する物理ブロックからデータが読み出される場合、読み出されたデータは一旦レジスタ#0に保持された後、バス15を介してコントローラ3に転送され、バンク#0に属する物理ブロックへデータが書き込まれる場合、バス15を介してコントローラ3から転送されたデータは、一旦レジスタ#0に保持された後、所定の物理ブロックに書き込まれることになる。
【0315】
上記動作は、バンク#1〜#3に属する物理ブロックに対するデータの読み出し及び書き込みにおいても同様に、それぞれレジスタ#1〜#3が用いられる。
【0316】
また、各物理ブロックから対応するレジスタへのデータの転送動作(データの読み出し)や、各レジスタから対応する物理ブロックへのデータの転送動作(データの書き込み)は、各バンクにおいて独立して実行可能である。
【0317】
したがって、フラッシュメモリチップ32−0は、上述したフラッシュメモリチップ2−0とは異なり、4ページ分のデータの書き込みを並列に行うことができる。
【0318】
尚、図15には示されていないが、フラッシュメモリチップ32−1〜32−3についても、フラッシュメモリチップ32−0と同様、各ブロックがバンク#0〜#3からなる4つのバンクに分類されるとともに、各バンクに対応するレジスタ#0〜#3を備えている。
【0319】
このように、各フラッシュメモリチップ32−0〜32−3は、各バンク#0〜#3ごとに2048個の物理ブロックによって構成されるが、このうち、2000個の物理ブロックは実使用ブロックとして取り扱われ、残りの48個の物理ブロックは冗長ブロックとして取り扱われる。
【0320】
さらに、実使用ブロックは、各フラッシュメモリチップ32−0〜32−3内において、各バンク#0〜#3から一つずつ選ばれた4つの物理ブロックが仮想的に結合された「仮想ブロック」を構成する。
【0321】
すなわち、各フラッシュメモリチップ32−0〜32−3において2000個の仮想ブロックが構成される。
【0322】
図16は、フラッシュメモリチップ32−0における仮想ブロックの一例を示す図である。
【0323】
図16に示される例では、バンク#0に含まれる物理ブロック#4、バンク#1に含まれる物理ブロック#6801、バンク#2に含まれる物理ブロック#3242、バンク#3に含まれる物理ブロック#8191が仮想的に結合され、一つの仮想ブロックを構成している。
【0324】
このように、本実施態様においては、ひとつの仮想ブロックを構成する4つの物理ブロックはいずれも同じフラッシュメモリチップに属し、且つ、これら4つの物理ブロックは互いに異なるバンクに属することが必要である。
【0325】
このようにして、各フラッシュメモリチップ32−0〜32−3において2000個の仮想ブロックが構成され、フラッシュメモリチップ32−0は仮想ブロック#0〜#1999を構成し、フラッシュメモリチップ32−1は仮想ブロック#2000〜#3999を構成し、フラッシュメモリチップ32−2は仮想ブロック#4000〜#5999を構成し、フラッシュメモリチップ32−3は仮想ブロック#6000〜#7999を構成する。
【0326】
図17は、図16に示された仮想ブロックのページ構造を示す図である。
【0327】
図17に示されるように、本実施態様においても、仮想ブロックは、ページ#0〜ページ#127からなる128個の仮想ページによって構成される一つのブロックとして取り扱われる。
【0328】
ここで、図17に示した仮想ブロックのうち、ブロック#4からなる部分に含まれる32個のページは、仮想ページ番号として4i(iは、物理ページ番号)が与えられ、物理ブロック#6801からなる部分に含まれる32個のページは、仮想ページ番号として4i+1が与えられ、物理ブロック#3242からなる部分に含まれる32個のページは、仮想ページ番号として4i+2が与えられ、物理ブロック#8191からなる部分に含まれる32個のページは、仮想ページ番号として4i+3が与えられる。
【0329】
図18は、8000個の仮想ブロックと、これら各仮想ブロックを構成する4つの物理ブロックとの関係を示すアドレス変換テーブル33のデータ構造を示す概略図である。
【0330】
図18に示されるように、アドレス変換テーブルの33の構造は、上記実施態様にかかるアドレス変換テーブル27の構造と同様であるが、本実施態様にかかるフラッシュメモリシステム31おいては、アドレス変換テーブル33内のセル#j−0〜#j−3には、それぞれ当該仮想ブロックを構成する物理ブロックのアドレス(物理ブロックアドレス)の一部、詳細には、物理ブロックアドレスの上位11ビットが格納される。
【0331】
したがって、例えば、図16及び図17に示された仮想ブロックが、仮想ブロック#0であるとすれば、当該仮想ブロックは、物理ブロック#4、物理ブロック#6801、物理ブロック#3242及び物理ブロック#8191より構成されることから、これらブロックの物理ブロックアドレスはそれぞれ「000000000000100B」、「1101010010001B」、「0110010101010B」、及び「1111111111111B」となり、セル#0−0〜#0−3には、「00000000001B(1)」、「11010100100B(1700)」、「01100101010B(810)」、及び「11111111111B(2047)」がそれぞれ格納されることになる。
【0332】
また、各仮想ブロック表示領域に含まれるフラグは、対応するセル#j−0〜#j−3に格納されている内容が有効であるか無効であるかを示している。具体的には、フラグが「1」を示していれば対応するセルに格納されている内容は有効であり、フラグが「0」を示していれば対応するセルに格納されている内容は無効である。
【0333】
したがって、フラグが「0」を示している仮想ブロック表示領域においては、これに含まれるセル#j−0〜#j−3に格納されている内容は無視される。ここで、セル#j−0を構成するスロット#0はバンク#0に対応し、セル#j−1を構成するスロット#1はバンク#1に対応し、セル#j−2を構成するスロット#2はバンク#2に対応し、セル#j−3を構成するスロット#3はバンク#3に対応している。
【0334】
このようなデータ構造を有するアドレス変換テーブル33は、SRAMワークエリア8上に展開される。
【0335】
図19は、SRAMワークエリア8に格納される消去済みブロックキュー34のデータ構造を示す概略図である。
【0336】
図19に示されるように、消去済みブロックキュー34は、キューセット#0〜#3からなる4つのキューによって構成され、これらは、それぞれキュー#k−0〜キュー#k−3(kは、キューセット番号)からなる4個のキューによって構成される。
【0337】
ここで、キュー#k−0はバンク#0に対応し、キュー#k−1はバンク#1に対応し、キュー#k−2はバンク#2に対応し、キュー#k−3はバンク#3に対応している。さらに、キューセット#0〜#3は、それぞれフラッシュメモリチップ32−0〜32−3に対応している。
【0338】
各キューセット#0〜#3を構成するキュー#k−0〜#k−3には、ユーザ領域25を構成する全てのフラッシュメモリセル16が消去状態となっている物理ブロックの物理ブロックアドレスの一部、詳細には、物理ブロックアドレスの上位11ビットが格納される。
【0339】
したがって、例えば、フラッシュメモリチップ32−0に属する消去済みの物理ブロック#152を消去済みブロックキュー30に登録する場合、当該ブロックはバンク#0に属していることから、当該物理ブロックアドレスの上位11ビットである「00000100110B」がキュー#0−0に格納される。
【0340】
消去済みブロックキュー30の生成は、マイクロプロセッサ6による制御のもと、上述したアドレス変換テーブル33の生成の際に行われ、データ書き込みに備えて待機している冗長ブロックの中から選ばれる。
【0341】
以上説明した構成を有するフラッシュメモリシステム31の動作は、基本的に、上記実施態様にかかるフラッシュメモリシステム1の動作と同様であるが、アドレス変換テーブル33を用いたホストアドレスから内部アドレスへの変換手順が異なる。
【0342】
図20は、データ読み出し動作における、アドレス変換テーブル33を用いた内部アドレスへの変換手順を説明するための図である。
【0343】
ここでは、ホストコンピュータ5からホストアドレス「10000111111111100000B」に対してデータの読み出しが要求された場合を例に説明する。
【0344】
図20においては、便宜上、ホストアドレスから上位13ビットを「A」とし、上位14ビット目〜上位18ビット目からなる5ビットを「B」とし、下位2ビットを「C」と表記している。
【0345】
データ読み出し動作においては、まず、マイクロプロセッサ6による制御のもと、20ビットのホストアドレスから上位13ビット(A)が取り出され、これが「2000」で除される。
【0346】
そして、かかる除算によって得られた商(0〜3)によってフラッシュメモリチップが特定され、剰余(0〜1999)によって仮想ブロックが特定される。本例では、ホストアドレスの上位13ビット(A)が「1000011111111B」であるから、商は「10B(2)」であり、剰余は「00101011111B(351)」となる。
【0347】
これにより、選択されるフラッシュメモリチップはフラッシュメモリチップ32−2となり、選択される仮想ブロックは、フラッシュメモリチップ32−2内の仮想ブロック#2351(351+2000)となる。
【0348】
したがって、マイクロプロセッサ6による制御のもと、SRAMワークエリア8に格納されたアドレス変換テーブル33から仮想ブロック表示領域#2351が選択され、仮想ブロック表示領域#2351を構成する4個のセルのうち、ホストアドレスの下位2ビット(C)と同じ枝番号を有するセルの内容が読み出される。
【0349】
この場合、ホストアドレスの下位2ビット(C)が「00B(0)」であるから、その内容が読み出されるセルは、セル#2351−0となる。本例では、かかるセル#2351−0の内容が「00100001111B」であるものとする。
【0350】
次に、マイクロプロセッサ6による制御のもと、選択されたチップ番号、読み出されたセルの内容、ホストアドレスの下位2ビット(C)、及びホストアドレスの上位14ビット目〜上位18ビット目からなる5ビット(B)がこの順に結合される。結合されたアドレスは、内部アドレスとなる。
【0351】
この場合、選択されたチップ番号は「10B」であり、読み出されたセルの内容は「00100001111B」であり、ホストアドレスの下位2ビット(C)は「00B」であり、ホストアドレスの上位14ビット目〜上位18ビット目からなる5ビット(B)は「11000B」であることから、得られる内部アドレスは、「10001000011110011000B」となる。
【0352】
以上より、ホストアドレスから内部アドレスへの変換が完了する。
【0353】
ホストアドレスが内部アドレスに変換された後のデータ読み出し動作は、上述した上記実施態様にかかるフラッシュメモリシステム1と同様である。
【0354】
本例では、フラッシュメモリチップ32−2の物理ブロック#1084の物理ページ#24に格納されたデータが読み出されることとなる。尚、物理ブロック#1084の物理ページ#24は、仮想ブロック#2351の仮想ページ#96に対応する。
【0355】
図21は、データ書き込み動作における、アドレス変換テーブル33を用いた内部アドレスへの変換手順を説明するための図である。
【0356】
ここでは、ホストコンピュータ5から連続したホストアドレス#0〜#3である、「00010101010101000100B」〜「00010101010101000111B」に対してデータの書き込みが要求された場合を例に説明する。
【0357】
図21に示されるように、本例では、ホストアドレス#0〜#3の上位13ビット(A)が「0001010101010B」であるから、これを2000で除した場合の商は「00B(0)」であり、剰余は「01010101010B(682)」となる。
【0358】
これにより、選択されるフラッシュメモリチップはフラッシュメモリチップ32−0となり、選択される仮想ブロックは、フラッシュメモリチップ32−0内の仮想ブロック#682となる。
【0359】
次に、マイクロプロセッサ6による制御のもと、消去済みブロックキュー34を構成するキューセット#0〜#3のうち、フラッシュメモリチップ32−0に対応するキューセット#0を構成する各キュー#0−0〜#0−3に格納された内容が読み出される。
【0360】
上述のとおり、各キューに格納されているのは、消去済みブロックの物理ブロックアドレスの上位11ビットである。
【0361】
本例では、これらキュー0−0〜#0−3の内容がそれぞれ「11100001111B」、「10000110011B」、「10011110000B」、「01000000000B」であるものとする。
【0362】
キュー#0−0〜#0−3に格納された内容が読み出されると、これがSRAMワークエリア8に格納されているアドレス変換テーブル33の仮想ブロック表示領域#682に格納され、フラグが「1」にセットされるとともに、マイクロプロセッサ6による制御のもと、これを用いて内部アドレスが生成される。
【0363】
図21に示されるように、内部アドレスの生成方法は、データの読み出し動作の場合と同様であり、マイクロプロセッサ6による制御のもと、選択されたチップ番号、読み出されたキューの内容、ホストアドレス#0〜#3それぞれの下位2ビット(C)、及びホストアドレス#0〜#3の上位14ビット目〜上位18ビット目からなる5ビット(B)がこの順に結合される。
【0364】
この場合、選択されたチップ番号は「00B」であり、読み出されたセルの内容は「11100001111B」、「10000110011B」、「10011110000B」、「01000000000B」であり、ホストアドレス#0〜#3の下位2ビット(C)はそれぞれ「00B」〜「11B」であり、ホストアドレス#0〜#3の上位14ビット目〜上位18ビット目からなる5ビット(B)はいずれも「10001B」であることから、得られる4つの内部アドレス#0〜#3の値は、図21に示される値となる。
【0365】
これにより、ホストアドレス#0〜#3から内部アドレス#0〜#3への変換が完了する。
【0366】
図22は、フラッシュシーケンサブロック12による一連の書き込み動作タイミング概略的に示すタイミング図である。
【0367】
まず、フラッシュシーケンサブロック12は、所定のレジスタに格納された内部アドレスの上位2ビットである「00B(0)」に基づいて、フラッシュメモリチップ32−0に対応するチップ選択信号#0を活性化する。
【0368】
次に、フラッシュシーケンサブロック12は、所定のレジスタに格納された内部アドレスの中から内部アドレス#0を選択し、内部アドレス#0の下位18ビット「111000011110010001B」を、所定のレジスタに格納されたデータ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。
【0369】
上述のとおり、チップ選択信号#0が活性状態となっているため、バス15に供給された内部アドレス#0の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ32−0に対してのみ有効となる。
【0370】
このとき、内部アドレスの上位14ビット及び上位15ビットからなる2ビット(C)である「00B(0)」に基づき、フラッシュメモリチップ32−0に設けられたレジスタ#0が活性化される(転送先指定)。
【0371】
これにより、フラッシュメモリチップ32−0は、供給された内部アドレス#0の下位18ビット「111000011110010001B」に対応するページに書き込まれるべきデータのレジスタ#0への受け入れが許可された状態となる。
【0372】
次に、バッファ9に格納されている書き込みデータのうち、ホストアドレス#0に対応するデータ及び対応するエラーコレクションコード等の付加情報が、フラッシュシーケンサブロック12により、フラッシュメモリインターフェースブロック10を介して、バス15に供給される。
【0373】
上述のとおり、フラッシュメモリチップ32−0に設けられたレジスタ#0が活性化されているため、これらデータ及びエラーコレクションコードは、フラッシュメモリチップ32−0内のレジスタ#0に格納される(データ転送)。
【0374】
このような転送先指定処理及びデータ転送処理が、ホストアドレス#1〜#3に対応するデータについても行われ、これにより、フラッシュメモリチップ32−0内に備えられたレジスタ#0〜#3へのホストアドレス#0〜#3に対応するデータ及びエラーコレクションコード等の付加情報の一時的な格納が完了する。
【0375】
次に、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部書き込みコマンドを、フラッシュメモリチップ32−0に対して発行する(書き込み命令)。
【0376】
これに応答して、フラッシュメモリチップ32−0は、レジスタ#0〜#3に格納されているデータ及びエラーコレクションコード等の付加情報を、転送先指定処理によって指定されたアドレスに一斉に書き込む(フラッシュプログラミング)。
【0377】
このようにして、フラッシュシーケンサブロック12による一連の書き込み動作が完了する。
【0378】
上記一連の書き込み動作により、ホストアドレス#0に対応するデータは、フラッシュメモリチップ32−0の物理ブロック#7228の物理ページ#17に書き込まれ、ホストアドレス#1に対応するデータは、フラッシュメモリチップ32−0の物理ブロック#4301の物理ページ#17に書き込まれ、ホストアドレス#2に対応するデータは、フラッシュメモリチップ32−0の物理ブロック#5058の物理ページ#17に書き込まれ、ホストアドレス#3に対応するデータは、フラッシュメモリチップ32−0の物理ブロック#2051の物理ページ#17に書き込まれることとなる。
【0379】
尚、物理ブロック#7228、#4301、#5058及び#2051の物理ページ#17は、それぞれ仮想ブロック#682の仮想ページ#68〜#71に対応する。
【0380】
以上説明したように、本実施態様にかかるフラッシュメモリシステム31においては、上記実施態様にかかるフラッシュメモリシステム1とは異なり、仮想ブロックを構成する4つの物理ブロックが同じフラッシュメモリチップに含まれている。
【0381】
しかしながら、仮想ブロックを構成する4つの物理ブロックは、互いに異なるバンクに属しているため、上記実施態様にかかるフラッシュメモリシステム1と同様、ホストコンピュータ5から、連続する複数アドレスに対してデータ書き込み要求がなされた場合に、各ホストアドレスに対応するデータを、レジスタ#0〜#3へ連続的に転送し、その後、レジスタ#0〜#3に保持されたデータを所定のページへ一斉に書き込むことができる。
【0382】
すなわち、本実施態様においては、複数ページに亘るデータを一斉にフラッシュプログラミングすることができる。
【0383】
また、本実施態様にかかるフラッシュメモリシステム31おいては、バンクタイプのフラッシュメモリチップを用いているので、用いるフラッシュメモリチップの数が1個であっても、上記並列書き込みを行うことが可能となる。
【0384】
次に、本発明の好ましいさらに他の実施態様にかかるフラッシュメモリシステムについて詳細に説明する。
【0385】
本実施態様にかかるフラッシュメモリシステム35の物理的な構成は、上記実施態様にかかるフラッシュメモリシステム31と同一であり、図14に示したとおりである。
【0386】
したがって、搭載されているフラッシュメモリチップ32−0〜32−3は、上述のとおり、バンクタイプと呼ばれる方式のチップである。
【0387】
本実施態様においては、フラッシュメモリチップ32−0を構成するバンク#0〜#3から一つずつ選ばれた4つの物理ブロックと、フラッシュメモリチップ32−1を構成するバンク#0〜#3から一つずつ選ばれた4つの物理ブロックとが仮想的に結合された「仮想ブロック」を構成し、同様に、フラッシュメモリチップ32−2を構成するバンク#0〜#3から一つずつ選ばれた4つの物理ブロックと、フラッシュメモリチップ32−3を構成するバンク#0〜#3から一つずつ選ばれた4つの物理ブロックとが仮想的に結合された「仮想ブロック」を構成する。
【0388】
すなわち、各仮想ブロックは、8個の物理ブロックが仮想的に結合して構成され、仮想ブロック#0〜#3999からなる4000個の仮想ブロックが構成される。
【0389】
ここでは、便宜上、フラッシュメモリチップ32−0及び32−1によって構成される仮想ブロック群を「ゾーン#0」と呼び、フラッシュメモリチップ32−2及び32−3によって構成される仮想ブロック群を「ゾーン#1」と呼ぶ。
【0390】
図23は、本実施態様における仮想ブロックの一例を示す図である。
【0391】
図23に示される例では、フラッシュメモリチップ32−0のバンク#0に含まれる物理ブロック#3128、フラッシュメモリチップ32−0のバンク#1に含まれる物理ブロック#6725、フラッシュメモリチップ32−0のバンク#2に含まれる物理ブロック#4162、フラッシュメモリチップ32−0のバンク#3に含まれる物理ブロック#3、フラッシュメモリチップ32−1のバンク#0に含まれる物理ブロック#7800、フラッシュメモリチップ32−1のバンク#1に含まれる物理ブロック#7801、フラッシュメモリチップ32−1のバンク#2に含まれる物理ブロック#2、フラッシュメモリチップ32−1のバンク#3に含まれる物理ブロック#3999が仮想的に結合され、一つの仮想ブロックを構成している。
【0392】
このように、本実施態様においては、ひとつの仮想ブロックを構成する8つの物理ブロックのうち4つの物理ブロックは、あるフラッシュメモリチップ内の互いに異なるバンクに属することが必要であり、残りの4つの物理ブロックは、別のフラッシュメモリチップ内の互いに異なるバンクに属することが必要である。
【0393】
このようにして、4000個の仮想ブロックが構成される。
【0394】
このうち、フラッシュメモリチップ32−0及び32−1は仮想ブロック#0〜#1999を構成し、フラッシュメモリチップ32−2及び32−3は仮想ブロック#2000〜#3999を構成する。
【0395】
図24は、図23に示された仮想ブロックのページ構造を示す図である。
【0396】
図24に示されるように、本実施態様においては、仮想ブロックは、仮想ページ#0〜ページ#255からなる256個のページによって構成される一つのブロックとして取り扱われる。
【0397】
ここで、図23に示した仮想ブロックのうち、フラッシュメモリチップ32−0の物理ブロック#3128からなる部分に含まれる32個のページは、仮想ページ番号として8i(iは、物理ページ番号)が与えられ、フラッシュメモリチップ32−0の物理ブロック#6725からなる部分に含まれる32個のページは、仮想ページ番号として8i+1が与えられ、フラッシュメモリチップ32−0の物理ブロック#4162のブロック#162からなる部分に含まれる32個のページは、仮想ページ番号として8i+2(i=0〜31)が与えられ、フラッシュメモリチップ32−0の物理ブロック#3からなる部分に含まれる32個のページは、仮想ページ番号として8i+3(i=0〜31)が与えられ、フラッシュメモリチップ32−1の物理ブロック#7800からなる部分に含まれる32個のページは、仮想ページ番号として8i+4(i=0〜31)が与えられ、フラッシュメモリチップ32−1の物理ブロック#7801からなる部分に含まれる32個のページは、仮想ページ番号として8i+5(i=0〜31)が与えられ、フラッシュメモリチップ32−1の物理ブロック#2からなる部分に含まれる32個のページは、仮想ページ番号として8i+6(i=0〜31)が与えられ、フラッシュメモリチップ32−1の物理ブロック#3999からなる部分に含まれる32個のページは、仮想ページ番号として8i+7(i=0〜31)が与えられる。
【0398】
図25は、4000個の仮想ブロックと、これら各仮想ブロックを構成する8つの物理ブロックとの関係を示すアドレス変換テーブル36のデータ構造を示す概略図である。
【0399】
図25に示されるように、アドレス変換テーブル36は、仮想ブロック表示領域#0〜#3999からなる4000個の仮想ブロックがこの順に並んで構成され、これら各仮想ブロック#0〜#3999は、それぞれセル#j−0〜セル#j−7(jは、仮想ブロック番号)からなる8個のセル及び1個のフラグによって構成される。
【0400】
ここで、セル#j−0を構成するスロット#0はフラッシュメモリチップ32−0または32−2のバンク#0に対応し、セル#j−1を構成するスロット#1はフラッシュメモリチップ32−0または32−2のバンク#1に対応し、セル#j−2を構成するスロット#2はフラッシュメモリチップ32−0または32−2のバンク#2に対応し、セル#j−3を構成するスロット#3はフラッシュメモリチップ32−0または32−2のバンク#3に対応し、セル#j−4を構成するスロット#4はフラッシュメモリチップ32−1または32−3のバンク#0に対応し、セル#j−5を構成するスロット#5はフラッシュメモリチップ32−1または32−3のバンク#1に対応し、セル#j−6を構成するスロット#6はフラッシュメモリチップ32−1または32−3のバンク#2に対応し、セル#j−7を構成するスロット#7はフラッシュメモリチップ32−1または32−3のバンク#3に対応している。
【0401】
各仮想ブロックに含まれるセル#j−0〜#j−7には、それぞれ当該仮想ブロックを構成する物理ブロックのアドレス(物理ブロックアドレス)の上位11ビットが格納される。
【0402】
したがって、例えば、図23及び図24に示された仮想ブロックが、仮想ブロック#0であるとすれば、当該仮想ブロックは、フラッシュメモリチップ32−0の物理ブロック#3128、#6725、#4162及びブロック#3、並びに、フラッシュメモリチップ32−1の物理ブロック#7800、#7801、#2及び#3999より構成されることから、セル#0−0〜#0−7には、「01100001110B(782)」、「11010010001B(1681)」、「10000010000B(1040)」、「00000000000B(0)」、「11110011110B(1950)」、「11110011110B(1950)」、「00000000000B(0)」及び「01111100111B(999)」がそれぞれ格納されることになる。
【0403】
また、各仮想ブロック表示領域に含まれるフラグは、対応するセル#j−0〜#j−7に格納されている内容が有効であるか無効であるかを示している。
【0404】
具体的には、フラグが「1」を示していれば対応するセルに格納されている内容は有効であり、フラグが「0」を示していれば対応するセルに格納されている内容は無効である。
【0405】
したがって、フラグが「0」を示している仮想ブロック表示領域においては、これに含まれるセル#j−0〜#j−7に格納されている内容は無視される。
【0406】
図26は、SRAMワークエリア8に格納される消去済みブロックキュー37のデータ構造を示す概略図である。
【0407】
図26に示されるように、消去済みブロックキュー37は、キューセット#0〜#3からなる4つのキューによって構成され、これらは、それぞれキュー#k−0〜キュー#k−7(kは、キューセット番号)からなる8個のキューによって構成される。
【0408】
ここで、キュー#k−0〜#k−3はフラッシュメモリチップ32−0または32−2のバンク#0〜#3にそれぞれ対応し、キュー#k−4〜#k−7はフラッシュメモリチップ32−1または32−3のバンク#0〜#3にそれぞれ対応している。
【0409】
さらに、キューセット#0及び#1はいずれもゾーン#0に対応し、キューセット#2及び#3はいずれもゾーン#1に対応している。
【0410】
各キューセット#0〜#3を構成するキュー#k−0〜#k−7には、ユーザ領域25を構成する全てのフラッシュメモリセル16が消去状態となっている物理ブロックの物理ブロックアドレスの上位11ビットが格納される。
【0411】
消去済みブロックキュー30の生成は、マイクロプロセッサ6による制御のもと、上述したアドレス変換テーブル36の生成の際に行われ、データ書き込みに備えて待機している冗長ブロックの中から選ばれる。
【0412】
図27は、データ読み出し動作における、アドレス変換テーブル36を用いた内部アドレスへの変換手順を説明するための図である。
【0413】
ここでは、ホストコンピュータ5からホストアドレス「00000111111111100000B」に対してデータの読み出しが要求された場合を例に説明する。
【0414】
図27においては、便宜上、ホストアドレスから上位12ビットを「A」とし、上位13ビット目〜上位17ビット目からなる5ビットを「B」とし、上位18ビット目を「C」とし、下位2ビットを「D」と表記している。
【0415】
データ読み出し動作においては、まず、マイクロプロセッサ6による制御のもと、20ビットのホストアドレスから上位12ビット(A)が取り出され、これが「2000」で除される。
【0416】
そして、かかる除算によって得られた商(0〜1)によってゾーンが特定され、剰余(0〜1999)によって仮想ブロックが特定される。
【0417】
本例では、ホストアドレスの上位12ビット(A)が「000001111111B」であるから、商は「0B」であり、剰余は「00001111111B(127)」となる。
【0418】
これにより、選択されるゾーンはゾーン#0となり、選択される仮想ブロック表示領域は、仮想ブロック表示領域#127となる。
【0419】
したがって、マイクロプロセッサ6による制御のもと、SRAMワークエリア8に格納されているアドレス変換テーブル36から仮想ブロック表示領域#127が選択され、仮想ブロック表示領域#127を構成する8個のセルのうち、ホストアドレスの下位3ビットと同じ枝番号を有するセルの内容が読み出される。この場合、ホストアドレスの下位3ビットが「000B(0)」であるから、その内容が読み出されるセルは、セル#127−0となる。
【0420】
本例では、かかるセル#127−0の内容が「00000001111B」であるものとする。
【0421】
次に、マイクロプロセッサ6による制御のもと、選択されたゾーン番号、ホストアドレスの上位18ビット目(C)、読み出されたセルの内容、ホストアドレスの下位2ビット(D)、及びホストアドレスの上位13ビット目〜上位17ビット目からなる5ビット(B)がこの順に結合される。結合されたアドレスは、内部アドレスとなる。
【0422】
この場合、選択されたゾーン番号は「0B」であり、ホストアドレスの上位18ビット目(C)は「0B」であり、読み出されたセルの内容は「00000001111B」であり、ホストアドレスの下位2ビット(D)は「00B」であり、ホストアドレスの上位13ビット目〜上位17ビット目からなる5ビット(B)は「11100B」であることから、得られる内部アドレスは、「00000000011110011100B」となる。
【0423】
以上より、ホストアドレスから内部アドレスへの変換が完了する。
【0424】
ホストアドレスが内部アドレスに変換された後のデータ読み出し動作は、上述した上記実施態様にかかるフラッシュメモリシステム1、31と同様である。
【0425】
本例では、フラッシュメモリチップ32−0の物理ブロック#60の物理ページ#28に格納されたデータが読み出されることとなる。
【0426】
尚、物理ブロック#60の物理ページ#28は、仮想ブロック#127の仮想ページ#224に対応する。
【0427】
図28は、データ書き込み動作における、アドレス変換テーブル36を用いた内部アドレスへの変換手順を説明するための図である。
【0428】
ここでは、ホストコンピュータ5から連続したホストアドレス#0〜#7である、「10010101010101000100B」〜「10010101010101001011B」に対してデータの書き込みが要求された場合を例に説明する。
【0429】
図28に示されるように、本例では、ホストアドレス#0〜#7の上位12ビット(A)が「100101010101B」であるから、これを2000で除した場合の商は「1B(1)」であり、剰余は「00110000101B(389)」となる。
【0430】
これにより、選択されるゾーンはゾーン#1となり、選択される仮想ブロックは、仮想ブロック#2389(389+2000)となる。
【0431】
次に、マイクロプロセッサ6による制御のもと、消去済みブロックキュー37を構成するキューセット#0〜#3のうち、ゾーン#1に対応するキューセット#2または#3を構成する各キュー#2−0〜#2−7またはキュー#3−0〜#3−7に格納された内容が読み出される。
【0432】
上述のとおり、キュー#2−0〜#2−3及びキュー3−0〜3−3に格納されているのは、フラッシュメモリチップ32−2に含まれる消去済みブロックの物理ブロックアドレスの上位11ビットであり、キュー#2−4〜#2−7及びキュー3−4〜3−7に格納されているのは、フラッシュメモリチップ32−3に含まれる消去済みブロックの物理ブロックアドレスの上位11ビットである。
【0433】
本例では、キューセット#2が選択されたものとし、これらキュー#2−0〜#2−7の内容がそれぞれ「00000001111B」、「11000110011B」、「00111110000B」、「01100000000B」、「11011111111B」、「10110101010B」、「10101010101B」、「00011001100B」であるものとする。
【0434】
キュー#2−0〜#2−7に格納された内容が読み出されると、これがSRAMワークエリア8に格納されているアドレス変換テーブル36の仮想ブロック表示領域#2389に格納され、フラグが「1」にセットされるとともに、マイクロプロセッサ6による制御のもと、これを用いて内部アドレスが生成される。
【0435】
図28に示されるように、内部アドレスの生成方法は、データの読み出し動作の場合と同様であり、マイクロプロセッサ6による制御のもと、選択されたゾーン番号、ホストアドレス#0〜#7それぞれの上位18ビット目(C)、読み出されたキューの内容、ホストアドレス#0〜#7それぞれの下位2ビット(D)、及びホストアドレス#0〜#7の上位13ビット目〜上位17ビット目からなる5ビット(B)がこの順に結合される。
【0436】
これにより得られる8つの内部アドレス#0〜#7の値は、図28に示される値となる。
【0437】
これにより、ホストアドレス#0〜#7から内部アドレス#0〜#7への変換が完了する。
【0438】
図29は、フラッシュシーケンサブロック12による一連の書き込み動作タイミング概略的に示すタイミング図である。
【0439】
まず、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部アドレスの中から内部アドレス#0を選択し、その上位2ビット「11B(3)」に基づいて、フラッシュメモリチップ32−3に対応するチップ選択信号#3を活性化する。
【0440】
次に、フラッシュシーケンサブロック12は、内部アドレス#0の下位18ビット「000000011110001000B」を、所定のレジスタ(図示せず)に格納されたデータ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。
【0441】
上述のとおり、チップ選択信号#3が活性状態となっているため、バス15に供給された内部アドレス#0の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ32−3に対してのみ有効となる。
【0442】
このとき、内部アドレスの上位14ビット目及び上位15ビット目からなる2ビット(D)である「00B(0)」に基づき、フラッシュメモリチップ32−3に設けられたレジスタ#0が活性化される(転送先指定)。
【0443】
これにより、フラッシュメモリチップ32−3は、供給された内部アドレス#0の下位18ビット「000000011110001000B」に対応する物理ページに書き込まれるべきデータのレジスタ#0への受け入れが許可された状態となる。
【0444】
次に、バッファ9に格納されている書き込みデータのうち、ホストアドレス#0に対応するデータ及び対応するエラーコレクションコード等の付加情報が、フラッシュシーケンサブロック12により、フラッシュメモリインターフェースブロック10を介して、バス15に供給される。
【0445】
上述のとおり、フラッシュメモリチップ32−3に設けられたレジスタ#0が活性化されているため、これらデータ及びエラーコレクションコード等の付加情報は、フラッシュメモリチップ32−3内のレジスタ#0に格納される(データ転送)。
【0446】
このような、転送先指定処理及びデータ転送処理が、ホストアドレス#1〜#3に対応するデータについても行われ、これにより、フラッシュメモリチップ32−3内に備えられたレジスタ#0〜#3への、ホストアドレス#0〜#3に対応するデータ及びエラーコレクションコード等の付加情報の一時的な格納が完了する。
【0447】
次に、フラッシュシーケンサブロック12は、所定のレジスタに格納された内部書き込みコマンドを、フラッシュメモリチップ32−3に対して発行する(書き込み命令)。
【0448】
これに応答して、フラッシュメモリチップ32−3は、レジスタ#0〜#3に格納されているデータ及びエラーコレクションコード等の付加情報を、転送先指定処理によって指定されたアドレスに一斉に書き込む(フラッシュプログラミング)。
【0449】
フラッシュメモリチップ32−3がフラッシュプログラミングを実行している間、フラッシュシーケンサブロック12は、所定のレジスタに格納された内部アドレスの中から内部アドレス#4を選択し、その上位2ビット「10B(2)」に基づいて、フラッシュメモリチップ32−2に対応するチップ選択信号#2を活性化する。
【0450】
次に、フラッシュシーケンサブロック12は、内部アドレス#4の下位18ビットを、所定のレジスタに格納されたデータ転送コマンドとともにバス15に供給するよう、フラッシュメモリインターフェースブロック10に指示する。
【0451】
上述のとおり、チップ選択信号#2が活性状態となっているため、バス15に供給された内部アドレス#4の下位18ビット及びデータ転送コマンドは、フラッシュメモリチップ32−2に対してのみ有効となる。
【0452】
このとき、内部アドレスの上位13ビット及び上位14ビットからなる2ビット(D)である「00B(0)」に基づき、フラッシュメモリチップ32−2に設けられたレジスタ#0が活性化される(転送先指定)。
【0453】
これにより、フラッシュメモリチップ32−2は、供給された内部アドレス#4の下位18ビットに対応するページに書き込まれるべきデータのレジスタ#0への受け入れが許可された状態となる。
【0454】
次に、バッファ9に格納されている書き込みデータのうち、ホストアドレス#4に対応するデータ及び対応するエラーコレクションコード等の付加情報が、フラッシュシーケンサブロック12により、フラッシュメモリインターフェースブロック10を介して、バス15に供給される。
【0455】
上述のとおり、フラッシュメモリチップ32−2に設けられたレジスタ#0が活性化されているため、これらデータ及びエラーコレクションコードは、フラッシュメモリチップ32−2内のレジスタ#0に格納される(データ転送)。
【0456】
このような、転送先指定処理及びデータ転送処理が、ホストアドレス#5〜#7に対応するデータについても行われ、これにより、フラッシュメモリチップ32−2内に備えられたレジスタ#0〜#3への、ホストアドレス#4〜#7に対応するデータ及びエラーコレクションコード等の付加情報の一時的な格納が完了する。
【0457】
次に、フラッシュシーケンサブロック12は、所定のレジスタ(図示せず)に格納された内部書き込みコマンドを、フラッシュメモリチップ32−2に対して発行する(書き込み命令)。
【0458】
これに応答して、フラッシュメモリチップ32−2は、レジスタ#0〜#3に格納されているデータ及びエラーコレクションコード等の付加情報を、転送先指定処理によって指定されたアドレスに一斉に書き込む(フラッシュプログラミング)。
【0459】
このようにして、フラッシュシーケンサブロック12による一連の書き込み動作が完了する。
【0460】
尚、上記一連の書き込み動作により、ホストアドレス#0に対応するデータは、フラッシュメモリチップ32−3の物理ブロック#60の物理ページ#8に書き込まれ、ホストアドレス#1に対応するデータは、フラッシュメモリチップ32−3の物理ブロック#6349の物理ページ#8に書き込まれ、ホストアドレス#2に対応するデータは、フラッシュメモリチップ32−3の物理ブロック#1986の物理ページ#8に書き込まれ、ホストアドレス#3に対応するデータは、フラッシュメモリチップ32−3の物理ブロック#3075の物理ページ#8に書き込まれ、ホストアドレス#4に対応するデータは、フラッシュメモリチップ32−2の物理ブロック#7164の物理ページ#9に書き込まれ、ホストアドレス#5に対応するデータは、フラッシュメモリチップ32−2の物理ブロック#5801の物理ページ#9に書き込まれ、ホストアドレス#6に対応するデータは、フラッシュメモリチップ32−2の物理ブロック#5462の物理ページ#9に書き込まれ、ホストアドレス#7に対応するデータは、フラッシュメモリチップ32−2の物理ブロック#819の物理ページ#9に書き込まれることとなる。
【0461】
尚、フラッシュメモリチップ32−3の物理ブロック#60、#6349、#1986及び#3075の物理ページ#8、並びに、フラッシュメモリチップ32−2の物理ブロック#7164、#5801、#5462及び#819の物理ページ#9は、それぞれ仮想ブロック#2389の仮想ページ#68〜#75に対応する。
【0462】
以上説明したように、本実施態様にかかるフラッシュメモリシステム35おいては、複数のフラッシュメモリチップを用いて仮想ブロックを構成するという上記実施態様にかかるフラッシュメモリシステム1の特徴と、バンクタイプのフラッシュメモリチップ32を用いることにより仮想ブロックを構成するという上記実施態様にかかるフラッシュメモリシステム31の特徴を兼ね備えている。
【0463】
これにより、搭載されるフラッシュメモリチップ32の個数や各フラッシュメモリチップ32が備えるバンク数を超える数の物理ブロックからなる仮想ブロックを構成することが可能となる。
【0464】
このことは、データ書き込み時において並列処理が可能なページ数が多くなることを意味するので、データ書き込み処理をより高速に行うことが可能となる。
【0465】
本発明は、以上の実施態様に限定されることなく、特許請求の範囲に記載された発明の範囲内で種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることはいうまでもない。
【0466】
例えば、上記実施態様にかかるフラッシュメモリシステム1においては、それぞれ異なるフラッシュメモリチップに属する4個の物理ブロックを仮想的に結合させることによって、1つの仮想ブロックを構成しているが、仮想ブロックを構成する物理ブロックの数は4個に限定されず、他の数、例えば2個や8個であってもよい。
【0467】
この場合、1つの仮想ブロックを構成する物理ブロックの数を、搭載されたフラッシュメモリチップの数と一致させることは必須ではなく、仮想ブロックを構成する物理ブロックの数を搭載されるフラッシュメモリチップの数よりも少なく設定しても構わない。
【0468】
例えば、フラッシュメモリチップの数が8個である場合に、仮想ブロックを構成する物理ブロックの数を4個としてもよい。
【0469】
また、上記実施態様にかかるフラッシュメモリシステム31においては、それぞれ異なるバンクに属する4個の物理ブロックを仮想的に結合させることによって、1つの仮想ブロックを構成しているが、1つの仮想ブロックを構成する物理ブロックの数は4個に限定されず、他の数、例えば2個や8個であってもよい。
【0470】
この場合、仮想ブロックを構成する物理ブロックの数を各フラッシュメモリチップが備えるバンク数と一致させることは必須ではなく、仮想ブロックを構成する物理ブロックの数を各フラッシュメモリチップを備えるバンク数よりも少なく設定しても構わない。
【0471】
例えば、各フラッシュメモリチップが備えるバンクが8である場合に、仮想ブロックを構成する物理ブロックの数を4個としてもよい。
【0472】
さらに、上記実施態様にかかるフラッシュメモリシステム35においては、それぞれ4つのバンクを備える2つのフラッシュメモリチップ32内のブロックを仮想的に結合させることによって、8個の物理ブロックからなる仮想ブロックを構成しているが、1つの仮想ブロックを構成する物理ブロックの数は8個に限定されず、他の数、例えば16個であってもよい。
【0473】
また、上記実施態様にかかるフラッシュメモリシステム1においては、データの上書き処理を行う際に、転送元の仮想ブロックを構成する4つのブロックからそれぞれ1ページ分のデータを読み出してこれら4ページ分のデータを一時的に保持し、これら4ページ分のデータを転送先の仮想ブロックを構成する4つのブロックへそれぞれ書き込んでいるが、一時的に保持すべきデータは、4ページ分のデータに限定されず、1ページ分のデータであってもよいし、2ページ分のデータであってもよい。
【0474】
このように一時的に保持すべきデータの数が、仮想ブロックを構成するセルの数を下回る場合には、バッファ9に必要とされる記憶容量を低減することができる一方、転送効率が低下するため、一連の処理に要する時間は長くなる。
【0475】
さらに、上記実施態様にかかるフラッシュメモリシステム1、31、35においては、データが格納されている全ての物理ブロックに関わるアドレス変換情報をSRAMワークエリア8上のアドレス変換テーブル27、33、36に展開しているが、本発明において、これら全ての物理ブロックに関わるアドレス変換情報をアドレス変換テーブルに展開することは必須ではなく、これらの一部のみを展開してもよい。
【0476】
この場合、SRAMワークエリア8に必要とされる記憶容量を削減することができる。
【0477】
但し、このように一部の物理ブロックに関わるアドレス変換情報のみをアドレス変換テーブルに展開する場合、アドレス変換テーブルにアドレス変換情報が含まれていない物理ブロックへのアクセスが要求される度に、アドレス変換テーブルを更新する必要がある。
【0478】
また、上記実施態様においては、フラッシュメモリシステム1、31、35はカード形状であり、4個のフラッシュメモリチップ2−0〜2−3または32−0〜32−3とコントローラ3とが、一つのカード内に集積されて構成されているが、本発明にかかるフラッシュメモリシステムがカード形状に限定されることはなく、他の形状、例えばスティック状であってもよい。
【0479】
さらに、上記実施態様においては、フラッシュメモリシステム1、31、35は、4個のフラッシュメモリチップ2−0〜2−3または32−0〜32−3とコントローラ3とが、一つのカード内に集積されて構成されているが、フラッシュメモリチップ2−0〜2−3または32−0〜32−3とコントローラ3とが、同一筐体に集積されている必要はなく、それぞれ別個の筐体にパッケージングされてもよい。
【0480】
この場合、フラッシュメモリチップ2−0〜2−3または32−0〜32−3がパッケージングされた筐体及びコントローラ3がパッケージングされた筐体には、それぞれ他方との電気的及び機械的接続を実現するためのコネクタが必要とされ、かかるコネクタによって、フラッシュメモリチップ2−0〜2−3または32−0〜32−3がパッケージングされた筐体が、コントローラ3がパッケージングされた筐体に着脱可能に装着される。
【0481】
さらに、フラッシュメモリチップ2−0〜2−3または32−0〜32−3についても、これらが同一筐体に集積されている必要はなく、それぞれ別個の筐体にパッケージングされてもよい。
【0482】
また、上記実施態様にかかるフラッシュメモリシステム1、31、35においては、各フラッシュメモリチップ2−0〜2−3または32−0〜32−3は、それぞれ128Mバイト(1Gビット)の記憶容量を有する半導体チップであるが、各フラッシュメモリチップ2−0〜2−3の記憶容量は128Mバイト(1Gビット)に限定されず、これとは異なる容量、例えば32Mバイト(256Mビット)であってもよい。
【0483】
さらに、上記実施態様にかかるフラッシュメモリシステム1、31、35においては、512バイトを1ページとし、これを最小アクセス単位としているが、最小アクセス単位としては512バイトに限定されず、これとは異なる容量であってもよい。
【0484】
また、上記実施態様にかかるフラッシュメモリシステム1、31、35においては、フラッシュメモリチップ2−0〜2−3または32−0〜32−3を構成する各フラッシュメモリセル16が、1ビットのデータを保持しているが、フローティングゲート電極21に注入すべき電子の量を複数段階に制御することによって、2ビット以上のデータを保持可能に構成してもよい。
【0485】
さらに、上記実施態様にかかるフラッシュメモリシステム1、31、35においては、各ブロックを32個のページによって構成しているが、各ブロックを構成するページ数は32個には限定されず、他の数、例えば、16個や64個であってもよい。
【0486】
また、上記実施態様にかかるフラッシュメモリシステム1においては、消去済みブロックキュー30が6つのキューセット#0〜#5によって構成されているが、消去済みブロックキュー30を構成する6つのキューセットの数としては6組に限定されず、他の数、例えば、1組や8組であってもよい。
【0487】
同様に、上記実施態様にかかるフラッシュメモリシステム31においては、各フラッシュメモリチップ32−0〜32−3に対してそれぞれ1組のキューセットを割り当てることによって、消去済みブロックキュー34が構成されているが、各フラッシュメモリチップ32−0〜32−3に対して割り当てられるキューセットの数としては1組に限定されず、他の数、例えば、2組や4組であってもよい。
【0488】
さらに同様に、上記実施態様にかかるフラッシュメモリシステム35においては、各ゾーン#0及び#1に対してそれぞれ2組のキューセットを割り当てることによって、消去済みブロックキュー37が構成されているが、各ゾーン#0及び#1に対して割り当てられるキューセットの数としては2組に限定されず、他の数、例えば、1組や4組であってもよい。
【0489】
さらに、上記実施態様にかかるフラッシュメモリシステム1、31、35においては、フラッシュメモリチップ2、32としてNAND型のフラッシュメモリチップを用いているが、本発明により制御可能なフラッシュメモリがNAND型に限定されるものではなく、他の種類、例えば、AND型のフラッシュメモリを制御することも可能である。
【0490】
さらに、本発明において、手段とは、必ずしも物理的手段を意味するものではなく、各手段の機能がソフトウエアによって実現される場合も包含する。
さらに、一つの手段の機能が二以上の物理的手段により実現されても、二以上の手段の機能が一つの物理的手段により実現されてもよい。
【0491】
尚、本発明は、PCMCIA(Personal Computer Memory Card International Association)が発表した統一規格に基づくPCカードとして実現することが可能である。
【0492】
さらに、近年、半導体素子の高集積化技術の発展に伴い、より小型化された小型メモリカード、例えば、CFA(CompactFlash Association)が提唱する「CompactFlash」や、MultiMediaCard Associationの提唱する「MMC(MultiMediaCard)」、ソニー株式会社が提唱する「メモリースティック」、松下電器産業株式会社等が提唱する「SDメモリーカード」などに本発明を適用することが可能である。
【0493】
以上説明したように、本発明によれば、フラッシュメモリに対する一連のデータ書き込み処理をより高速に行うことができるメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法を提供することができる。
【0494】
【図面の簡単な説明】
【図1】図1は、本発明の好ましい実施態様にかかるフラッシュメモリシステム1を概略的に示すブロック図である。
【図2】図2は、フラッシュメモリチップ2−0〜2−3を構成する各フラッシュメモリセル16の構造を概略的に示す断面図である。
【図3】図3は、書込状態であるフラッシュメモリセル16を概略的に示す断面図である。
【図4】図4は、フラッシュメモリチップ2−0のアドレス空間の構造を概略的に示す図である。
【図5】図5は、冗長領域26のデータ構造を概略的に示す図である。
【図6】図6は、本発明の好ましい実施態様における仮想ブロックのマッピングの一例を示す図である。
【図7】図7は、図6に示された仮想ブロックの仮想ページ構造を示す図である。
【図8】図8は、8000個の仮想ブロックと、これら各仮想ブロックを構成する4つの物理ブロックとの関係を示すアドレス変換テーブル27のデータ構造を示す概略図である。
【図9】図9は、SRAMワークエリア8に格納される消去済みブロックキュー30のデータ構造を示す概略図である。
【図10】図10は、データ読み出し動作時における、アドレス変換テーブル27を用いた内部アドレスへの変換方法を説明するための図である。
【図11】図11は、データ書き込み動作時における、アドレス変換テーブル27を用いた内部アドレスへの変換方法を説明するための図である。
【図12】図12は、フラッシュシーケンサブロック12による一連の書き込み動作タイミング概略的に示すタイミング図である。
【図13】図13は、転送元ブロックアドレス及び転送先ブロックアドレスの生成方法を説明するための図である。
【図14】図14は、本発明の好ましい他の実施態様にかかるフラッシュメモリシステム31を概略的に示すブロック図である。
【図15】図15は、フラッシュメモリチップ32−0の構造を概略的に示す図である。
【図16】図16は、フラッシュメモリチップ32−0における仮想ブロックの一例を示す図である。
【図17】図17は、図16に示された仮想ブロックのページ構造を示す図である。
【図18】図18は、8000個の仮想ブロックと、これら各仮想ブロックを構成する4つの物理ブロックとの関係を示すアドレス変換テーブル33のデータ構造を示す概略図である。
【図19】図19は、SRAMワークエリア8に格納される消去済みブロックキュー34のデータ構造を示す概略図である。
【図20】図20は、データ読み出し動作における、アドレス変換テーブル33を用いた内部アドレスへの変換手順を説明するための図である。
【図21】図21は、データ書き込み動作における、アドレス変換テーブル33を用いた内部アドレスへの変換手順を説明するための図である。
【図22】図22は、フラッシュシーケンサブロック12による一連の書き込み動作タイミング概略的に示すタイミング図である。
【図23】図23は、本発明の好ましいさらに他の実施態様における仮想ブロックの一例を示す図である。
【図24】図24は、図23に示された仮想ブロックのページ構造を示す図である。
【図25】図25は、4000個の仮想ブロックと、これら各仮想ブロックを構成する8つの物理ブロックとの関係を示すアドレス変換テーブル36のデータ構造を示す概略図である。
【図26】図26は、SRAMワークエリア8に格納される消去済みブロックキュー37のデータ構造を示す概略図である。
【図27】図27は、データ読み出し動作における、アドレス変換テーブル36を用いた内部アドレスへの変換手順を説明するための図である。
【図28】図28は、データ書き込み動作における、アドレス変換テーブル36を用いた内部アドレスへの変換手順を説明するための図である。
【図29】図29は、フラッシュシーケンサブロック12による一連の書き込み動作タイミング概略的に示すタイミング図である。
Claims (9)
- ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数のページを含む物理ブロック単位で消去が行われる複数個のフラッシュメモリにアクセスするメモリコントローラであって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当てる仮想ブロックアドレス割当て手段と、
前記各フラッシュメモリから物理ブロックアドレスの同異に依存せずに1個ずつ選択した複数個の物理ブロックを仮想ブロックとして管理し、該仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理する仮想ブロック管理手段と、
同一の前記仮想ブロックに含まれる複数の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てるページ管理手段と、
を備えることを特徴とするメモリコントローラ。 - 前記フラッシュメモリがn個の場合に、
n個の前記フラッシュメモリから物理ブロックアドレスの同異に依存せずに1個ずつ選択したn個の物理ブロックで1つの前記仮想ブロックを構成し、
前記所定セクタ数の領域の容量を、n個の物理ブロックで構成される前記仮想ブロックに含まれるユーザ領域の容量と等しくすることを特徴とする請求項1に記載のメモリコントローラ。 - ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数のページを含む物理ブロック単位で消去が行われるバンク構造のフラッシュメモリにアクセスするメモリコントローラであって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当てる仮想ブロックアドレス割当て手段と、
各バンクから該バンク内での順番の同異に依存せずに1個ずつ選択した複数個の物理ブロックを仮想ブロックとして管理し、該仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理する仮想ブロック管理手段と、
同一の前記仮想ブロックに含まれる複数の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てるページ管理手段と、
を備えることを特徴とするメモリコントローラ。 - 前記バンクがn個の場合に、
n個の前記バンクから該バンク内での順番の同異に依存せずに1個ずつ選択した物理ブロックで1つの前記仮想ブロックを構成し、
前記所定セクタ数の領域の容量を、n個の物理ブロックで構成される前記仮想ブロックに含まれるユーザ領域の容量と等しくすることを特徴とする請求項3に記載のメモリコントローラ。 - 前記仮想ブロックに含まれる複数の物理ブロック内の冗長領域に、該仮想ブロックに対応する前記仮想ブロックアドレスを書き込む仮想ブロックアドレス書込み手段を備えることを特徴とする請求項1乃至4の何れか1項に記載のメモリコントローラ。
- 前記フラッシュメモリに含まれる物理ブロック内の冗長領域に書き込まれている前記仮 想ブロックアドレスに基づいて、同一の前記仮想ブロックに属する物理ブロックを判別する仮想ブロック判別手段を備えることを特徴とする請求項5に記載のメモリコントローラ。
- フラッシュメモリと請求項1乃至6の何れか1項に記載のメモリコントローラとを備えることを特徴とするフラッシュメモリシステム。
- ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数のページを含む物理ブロック単位で消去が行われる複数個のフラッシュメモリを制御するフラッシュメモリの制御方法であって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当て、
各フラッシュメモリから物理ブロックアドレスの同異に依存せずに1個ずつ選択した複数個の物理ブロックを仮想ブロックとし、該仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理し、
同一の前記仮想ブロックに含まれる複数の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てる、
ことを特徴とするフラッシュメモリの制御方法。 - ホストコンピュータより供給されるセクタ単位のホストアドレスに基づいて、複数のページを含む物理ブロック単位で消去が行われるバンク構造のフラッシュメモリを制御するフラッシュメモリの制御方法であって、
前記ホストアドレスが連続する所定セクタ数の領域に対して仮想ブロックアドレスを割り当て、
各バンクから該バンク内での順番の同異に依存せずに1個ずつ選択した複数個の物理ブロックを仮想ブロックとし、該仮想ブロックと前記仮想ブロックアドレスとの対応関係を管理し、
同一の前記仮想ブロックに含まれる複数の物理ブロック内のページに対して、連続する前記ホストアドレスが異なる物理ブロック内のページに割り当てられるように、前記ホストアドレスを割り当てる、
ことを特徴とするフラッシュメモリの制御方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000371515 | 2000-12-06 | ||
JP2000371515 | 2000-12-06 | ||
PCT/JP2001/010671 WO2002046929A1 (en) | 2000-12-06 | 2001-12-06 | Method of controlling flash memory |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2002046929A1 JPWO2002046929A1 (ja) | 2004-04-08 |
JP3905037B2 true JP3905037B2 (ja) | 2007-04-18 |
Family
ID=18841226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002548590A Expired - Lifetime JP3905037B2 (ja) | 2000-12-06 | 2001-12-06 | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7020739B2 (ja) |
EP (1) | EP1365326A4 (ja) |
JP (1) | JP3905037B2 (ja) |
WO (1) | WO2002046929A1 (ja) |
Families Citing this family (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6438638B1 (en) | 2000-07-06 | 2002-08-20 | Onspec Electronic, Inc. | Flashtoaster for reading several types of flash-memory cards with or without a PC |
US7295443B2 (en) | 2000-07-06 | 2007-11-13 | Onspec Electronic, Inc. | Smartconnect universal flash media card adapters |
US6763424B2 (en) * | 2001-01-19 | 2004-07-13 | Sandisk Corporation | Partial block data programming and reading operations in a non-volatile memory |
JP2003223792A (ja) * | 2002-01-25 | 2003-08-08 | Hitachi Ltd | 不揮発性メモリ及びメモリカード |
JP4082913B2 (ja) * | 2002-02-07 | 2008-04-30 | 株式会社ルネサステクノロジ | メモリシステム |
US6721227B2 (en) * | 2002-02-11 | 2004-04-13 | Micron Technology, Inc. | User selectable banks for DRAM |
JP2004062554A (ja) * | 2002-07-30 | 2004-02-26 | Oki Electric Ind Co Ltd | フラッシュメモリの管理方法 |
AU2003268564A1 (en) * | 2002-10-28 | 2004-05-25 | Sandisk Corporation | Method and apparatus for performing multi-page write operations in a non-volatile memory system |
JP3928724B2 (ja) * | 2003-02-20 | 2007-06-13 | ソニー株式会社 | 記録媒体の記録制御方法および記録媒体の記録制御装置 |
KR100533682B1 (ko) * | 2003-12-26 | 2005-12-05 | 삼성전자주식회사 | 플래시 메모리의 데이터 관리 장치 및 방법 |
US7631138B2 (en) * | 2003-12-30 | 2009-12-08 | Sandisk Corporation | Adaptive mode switching of flash memory address mapping based on host usage characteristics |
US8504798B2 (en) * | 2003-12-30 | 2013-08-06 | Sandisk Technologies Inc. | Management of non-volatile memory systems having large erase blocks |
JP4561246B2 (ja) * | 2004-08-31 | 2010-10-13 | ソニー株式会社 | メモリ装置 |
CA2491161C (en) * | 2004-12-29 | 2015-08-11 | Bce Inc | System and method for traffic routing |
KR100621631B1 (ko) * | 2005-01-11 | 2006-09-13 | 삼성전자주식회사 | 반도체 디스크 제어 장치 |
US7627712B2 (en) * | 2005-03-22 | 2009-12-01 | Sigmatel, Inc. | Method and system for managing multi-plane memory devices |
US7631245B2 (en) | 2005-09-26 | 2009-12-08 | Sandisk Il Ltd. | NAND flash memory controller exporting a NAND interface |
US8291295B2 (en) * | 2005-09-26 | 2012-10-16 | Sandisk Il Ltd. | NAND flash memory controller exporting a NAND interface |
JP2007095222A (ja) * | 2005-09-30 | 2007-04-12 | Eastman Kodak Co | 半導体メモリ及びそのメモリコントローラ |
JP4946102B2 (ja) * | 2006-03-10 | 2012-06-06 | ソニー株式会社 | 不揮発性メモリシステムおよび不揮発性メモリの管理方法 |
US20080046630A1 (en) * | 2006-08-21 | 2008-02-21 | Sandisk Il Ltd. | NAND flash memory controller exporting a logical sector-based interface |
US20080046641A1 (en) * | 2006-08-21 | 2008-02-21 | Sandisk Il Ltd. | NAND flash memory controller exporting a logical sector-based interface |
US20080052446A1 (en) * | 2006-08-28 | 2008-02-28 | Sandisk Il Ltd. | Logical super block mapping for NAND flash memory |
KR20090102789A (ko) * | 2006-12-06 | 2009-09-30 | 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) | 프로그레시브 raid를 이용한 데이터 저장 장치, 시스템 및 방법 |
US9116823B2 (en) | 2006-12-06 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for adaptive error-correction coding |
US9495241B2 (en) | 2006-12-06 | 2016-11-15 | Longitude Enterprise Flash S.A.R.L. | Systems and methods for adaptive data storage |
US8074011B2 (en) * | 2006-12-06 | 2011-12-06 | Fusion-Io, Inc. | Apparatus, system, and method for storage space recovery after reaching a read count limit |
TW200832440A (en) * | 2007-01-25 | 2008-08-01 | Genesys Logic Inc | Flash memory translation layer system |
US7715255B2 (en) * | 2007-06-14 | 2010-05-11 | Sandisk Corporation | Programmable chip enable and chip address in semiconductor memory |
JP4730846B2 (ja) * | 2007-11-26 | 2011-07-20 | ルネサスエレクトロニクス株式会社 | メモリシステム |
US7836226B2 (en) | 2007-12-06 | 2010-11-16 | Fusion-Io, Inc. | Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment |
US9519540B2 (en) | 2007-12-06 | 2016-12-13 | Sandisk Technologies Llc | Apparatus, system, and method for destaging cached data |
US8195912B2 (en) * | 2007-12-06 | 2012-06-05 | Fusion-io, Inc | Apparatus, system, and method for efficient mapping of virtual and physical addresses |
JP5010505B2 (ja) * | 2008-03-01 | 2012-08-29 | 株式会社東芝 | メモリシステム |
JP4702387B2 (ja) * | 2008-03-31 | 2011-06-15 | Tdk株式会社 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
JP4582232B2 (ja) * | 2008-09-30 | 2010-11-17 | Tdk株式会社 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
US8214579B2 (en) * | 2008-09-30 | 2012-07-03 | Tdk Corporation | Memory controller, flash memory system with memory controller, and method of controlling flash memory |
JP4632180B2 (ja) | 2008-10-15 | 2011-02-16 | Tdk株式会社 | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
US8316201B2 (en) * | 2008-12-18 | 2012-11-20 | Sandisk Il Ltd. | Methods for executing a command to write data from a source location to a destination location in a memory device |
CN102317925B (zh) | 2009-02-12 | 2014-07-23 | 株式会社东芝 | 存储器系统和控制存储器系统的方法 |
US20110040924A1 (en) * | 2009-08-11 | 2011-02-17 | Selinger Robert D | Controller and Method for Detecting a Transmission Error Over a NAND Interface Using Error Detection Code |
US20110041039A1 (en) * | 2009-08-11 | 2011-02-17 | Eliyahou Harari | Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device |
US9223514B2 (en) | 2009-09-09 | 2015-12-29 | SanDisk Technologies, Inc. | Erase suspend/resume for memory |
US8289801B2 (en) | 2009-09-09 | 2012-10-16 | Fusion-Io, Inc. | Apparatus, system, and method for power reduction management in a storage device |
US8595411B2 (en) | 2009-12-30 | 2013-11-26 | Sandisk Technologies Inc. | Method and controller for performing a sequence of commands |
US8443263B2 (en) * | 2009-12-30 | 2013-05-14 | Sandisk Technologies Inc. | Method and controller for performing a copy-back operation |
EP2418584A1 (en) | 2010-08-13 | 2012-02-15 | Thomson Licensing | Method and apparatus for storing at least two data streams into an array of memories, or for reading at least two data streams from an array of memories |
US8984216B2 (en) | 2010-09-09 | 2015-03-17 | Fusion-Io, Llc | Apparatus, system, and method for managing lifetime of a storage device |
US9218278B2 (en) | 2010-12-13 | 2015-12-22 | SanDisk Technologies, Inc. | Auto-commit memory |
US10817502B2 (en) | 2010-12-13 | 2020-10-27 | Sandisk Technologies Llc | Persistent memory management |
WO2012082792A2 (en) | 2010-12-13 | 2012-06-21 | Fusion-Io, Inc. | Apparatus, system, and method for auto-commit memory |
US9047178B2 (en) | 2010-12-13 | 2015-06-02 | SanDisk Technologies, Inc. | Auto-commit memory synchronization |
US10817421B2 (en) | 2010-12-13 | 2020-10-27 | Sandisk Technologies Llc | Persistent data structures |
US9208071B2 (en) | 2010-12-13 | 2015-12-08 | SanDisk Technologies, Inc. | Apparatus, system, and method for accessing memory |
JP5609683B2 (ja) * | 2011-01-31 | 2014-10-22 | ソニー株式会社 | メモリ装置およびメモリシステム |
WO2012116369A2 (en) | 2011-02-25 | 2012-08-30 | Fusion-Io, Inc. | Apparatus, system, and method for managing contents of a cache |
US8446772B2 (en) | 2011-08-04 | 2013-05-21 | Sandisk Technologies Inc. | Memory die self-disable if programmable element is not trusted |
US20130191580A1 (en) * | 2012-01-23 | 2013-07-25 | Menahem Lasser | Controller, System, and Method for Mapping Logical Sector Addresses to Physical Addresses |
US9251086B2 (en) | 2012-01-24 | 2016-02-02 | SanDisk Technologies, Inc. | Apparatus, system, and method for managing a cache |
US9804927B2 (en) * | 2014-12-27 | 2017-10-31 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Virtual machine distributed checkpointing |
US10009438B2 (en) | 2015-05-20 | 2018-06-26 | Sandisk Technologies Llc | Transaction log acceleration |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0262794A (ja) * | 1988-08-29 | 1990-03-02 | Fanuc Ltd | Epromの書き込み方法 |
JP2582487B2 (ja) * | 1991-07-12 | 1997-02-19 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 半導体メモリを用いた外部記憶システム及びその制御方法 |
JP3105092B2 (ja) * | 1992-10-06 | 2000-10-30 | 株式会社東芝 | 半導体メモリ装置 |
JP3177015B2 (ja) * | 1992-10-14 | 2001-06-18 | 株式会社東芝 | 半導体メモリ装置の制御方法 |
JP2856621B2 (ja) | 1993-02-24 | 1999-02-10 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置 |
US6119214A (en) * | 1994-04-25 | 2000-09-12 | Apple Computer, Inc. | Method for allocation of address space in a virtual memory system |
JP3507132B2 (ja) * | 1994-06-29 | 2004-03-15 | 株式会社日立製作所 | フラッシュメモリを用いた記憶装置およびその記憶制御方法 |
US6081878A (en) * | 1997-03-31 | 2000-06-27 | Lexar Media, Inc. | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices |
US6295599B1 (en) * | 1995-08-16 | 2001-09-25 | Microunity Systems Engineering | System and method for providing a wide operand architecture |
US5835935A (en) | 1995-09-13 | 1998-11-10 | Lexar Media, Inc. | Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory |
US5890192A (en) * | 1996-11-05 | 1999-03-30 | Sandisk Corporation | Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM |
JP2000122923A (ja) * | 1998-07-13 | 2000-04-28 | Sony Corp | 記録装置および記録方法、再生装置および再生方法、記録媒体、並びにプログラム記録媒体 |
JP2000067574A (ja) * | 1998-08-21 | 2000-03-03 | Mitsubishi Electric Corp | 半導体記憶装置 |
JP2000132982A (ja) * | 1998-10-26 | 2000-05-12 | Sony Corp | 情報記録媒体素子、情報記録装置及び情報記録方法、並びに情報再生装置及び情報再生方法 |
US6721843B1 (en) * | 2000-07-07 | 2004-04-13 | Lexar Media, Inc. | Flash memory architecture implementing simultaneously programmable multiple flash memory banks that are host compatible |
-
2001
- 2001-12-05 US US10/011,248 patent/US7020739B2/en not_active Expired - Lifetime
- 2001-12-06 JP JP2002548590A patent/JP3905037B2/ja not_active Expired - Lifetime
- 2001-12-06 WO PCT/JP2001/010671 patent/WO2002046929A1/ja active Application Filing
- 2001-12-06 EP EP01999882A patent/EP1365326A4/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
EP1365326A1 (en) | 2003-11-26 |
EP1365326A4 (en) | 2007-09-05 |
WO2002046929A1 (en) | 2002-06-13 |
US20030028704A1 (en) | 2003-02-06 |
US7020739B2 (en) | 2006-03-28 |
JPWO2002046929A1 (ja) | 2004-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3905037B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4256600B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP3921174B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
US5953737A (en) | Method and apparatus for performing erase operations transparent to a solid state storage system | |
JP4165990B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリへのデータの書き込み方法 | |
JP4155824B2 (ja) | 不揮発性メモリにおける部分的ブロックデータのプログラミング動作および読出し動作 | |
JP2000067574A (ja) | 半導体記憶装置 | |
US20110310683A1 (en) | Non-volatile memory control | |
US20060195651A1 (en) | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices | |
JPH08137634A (ja) | フラッシュディスクカード | |
JP2008527586A (ja) | オンチップデータのグループ化および整列 | |
TW200418033A (en) | Zone boundary adjustment for defects in non-volatile memories | |
JP2001243110A (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリへのアクセス方法 | |
CN1319205A (zh) | 记录系统、数据记录设备、存储设备和数据记录方法 | |
JP3621051B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP2003076605A (ja) | ブロック消去型不揮発メモリを搭載した半導体記憶装置とそのデータの書込み・読出し方法 | |
JP4316824B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4248772B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4220690B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4233213B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP3999959B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP2003122630A (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4235595B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP4042898B2 (ja) | メモリコントローラ及びこれを備えるメモリシステム並びにフラッシュメモリの制御方法 | |
JP4254930B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 |
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: A523 Effective date: 20061212 |
|
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: 20061226 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070110 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3905037 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: 20110119 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110119 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120119 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120119 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130119 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130119 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140119 Year of fee payment: 7 |
|
EXPY | Cancellation because of completion of term |