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

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

Info

Publication number
JP2003122630A
JP2003122630A JP2001315502A JP2001315502A JP2003122630A JP 2003122630 A JP2003122630 A JP 2003122630A JP 2001315502 A JP2001315502 A JP 2001315502A JP 2001315502 A JP2001315502 A JP 2001315502A JP 2003122630 A JP2003122630 A JP 2003122630A
Authority
JP
Japan
Prior art keywords
block
flash memory
physical
data
address
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.)
Withdrawn
Application number
JP2001315502A
Other languages
English (en)
Inventor
Naoki Mukoda
直樹 向田
Kenzo Kida
健三 木田
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 JP2001315502A priority Critical patent/JP2003122630A/ja
Publication of JP2003122630A publication Critical patent/JP2003122630A/ja
Withdrawn legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 フラッシュメモリに対する一連のデータ書き
込み処理をより高速に行うことができるメモリコントロ
ーラを提供する。 【解決手段】 各メモリに含まれる物理ブロックを複数
のグループに分類する手段と、所定のメモリ内の一部の
グループに属する複数の物理ブロックであって互いに異
なるグループに属する複数の物理ブロック及び前記所定
のメモリとは異なるメモリ内の一部のグループに属する
複数の物理ブロックであって互いに異なるグループに属
する複数の物理ブロックを仮想的に結合することにより
複数の仮想ブロックを形成する手段と、隣り合うホスト
アドレスを仮想ブロック内において互いに異なる物理ブ
ロックに割り当てる手段とを備える。これにより、連続
する複数アドレスに対するアクセスが要求された場合、
各物理ブロックがそれぞれ独立して動作することが可能
となる。

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】
【課題を解決するための手段】本発明のかかる目的は、
ホストコンピュータより供給されるホストアドレスに基
づいて、それぞれ複数の物理ブロックからなる複数のメ
モリにアクセスするメモリコントローラであって、前記
各メモリに含まれる物理ブロックを複数のグループに分
類する手段と、所定のメモリ内の一部のグループに属す
る複数の物理ブロックであって互いに異なるグループに
属する複数の物理ブロック及び前記所定のメモリとは異
なるメモリ内の一部のグループに属する複数の物理ブロ
ックであって互いに異なるグループに属する複数の物理
ブロックを仮想的に結合することにより複数の仮想ブロ
ックを形成する手段と、隣り合うホストアドレスを前記
仮想ブロック内において互いに異なる物理ブロックに割
り当てる手段とを備えるメモリコントローラによって達
成される。
【0014】本発明によれば、隣り合うホストアドレス
が、仮想ブロック内において互いに異なる物理ブロック
に割り当てられているため、連続する複数アドレスに対
するアクセスがホストコンピュータから要求された場
合、これらアドレスによりアクセスされる物理ブロック
は、互いに異なる物理ブロックとなる。このため、アク
セスされた各物理ブロックがそれぞれ独立して動作する
ことにより、一連の処理を並列に行うことができる。こ
れにより、フラッシュメモリに対する一連の処理をより
高速に行うことが可能となる。
【0015】本発明の好ましい実施態様においては、前
記一部のグループの数が、各メモリに含まれるグループ
の数の半分である。
【0016】本発明のさらに好ましい実施態様において
は、複数の連続するホストアドレスに基づくデータの書
き込みが前記ホストコンピュータから要求されたことに
応答して、前記連続するホストアドレスがそれぞれ割り
当てられた複数のブロックであって互いに前記仮想ブロ
ックを構成する複数のブロックをそれぞれ含むメモリへ
連続的に前記データを転送する手段と、前記転送したデ
ータを前記各ブロックに書き込むよう前記メモリに対し
て実質的に同時に指示する手段とをさらに備える。
【0017】本発明のさらに好ましい実施態様によれ
ば、転送したデータの書き込み実行を、各データについ
て実質的に同時に指示しているので、一連のデータ書き
込み処理を高速に行うことが可能となる。
【0018】本発明のさらに好ましい実施態様において
は、前記ホストコンピュータよりデータの上書きが要求
されたことに応答して、上書き対象となる仮想ブロック
を構成する各物理ブロックに格納されているデータを、
それぞれ異なるメモリに属する物理ブロックにブロック
間転送する。
【0019】本発明のさらに好ましい実施態様によれ
ば、転送先となるメモリがデータの書き込みを行ってい
る間に、転送元となるメモリからデータを読み出すこと
が可能となるので、一連のブロック間転送処理を高速に
行うことが可能となる。
【0020】本発明のさらに好ましい実施態様において
は、少なくとも一つのグループに含まれる不良物理ブロ
ックの数が所定数を超えている場合には、当該グループ
より選ばれるべき物理ブロックを他のグループに属する
物理ブロックによって代替することにより前記仮想ブロ
ックを形成する手段をさらに備える。
【0021】本発明のさらに好ましい実施態様によれ
ば、不良物理ブロックの集中的な発生によって使用可能
なアドレス空間が制限される可能性を大幅に低減するこ
とができる。
【0022】本発明のさらに好ましい実施態様において
は、前記ホストコンピュータよりデータの上書きが要求
されたことに応答して、上書き対象となる仮想ブロック
を構成する少なくとも一部の物理ブロックについて、い
ずれのメモリに属しているかを判断する手段をさらに備
える。
【0023】本発明のさらに好ましい実施態様によれ
ば、かかる判断の結果に応じた適切なブロック間転送を
行うことによって、一連のブロック間転送処理を高速に
行うことが可能となる。
【0024】本発明の前記目的はまた、ホストコンピュ
ータより供給されるホストアドレスを内部アドレスに変
換し、前記内部アドレスに基づいてそれぞれ複数の物理
ブロックからなる複数のメモリにアクセスするメモリコ
ントローラであって、第1のホストアドレスを所定のメ
モリに属する第1の物理ブロックに対応する内部アドレ
スに変換し、前記第1のホストアドレスに続く第2のホ
ストアドレスを前記所定のメモリに属する第2の物理ブ
ロックに対応する内部アドレスに変換し、前記第2のホ
ストアドレスに続く第3のホストアドレスを前記所定の
メモリとは異なるメモリに属する第3の物理ブロックに
対応する内部アドレスに変換することを特徴とするメモ
リコントローラによって達成される。
【0025】本発明によれば、連続する3つのホストア
ドレスがそれぞれ異なる物理ブロックに割り当てられて
いるので、これらホストアドレスに対するアクセスがホ
ストコンピュータから要求された場合、アクセスされた
各物理ブロックがそれぞれ独立して動作することによ
り、一連の処理を並列に行うことができる。
【0026】本発明の好ましい実施態様においては、前
記第1及び第2の物理ブロックが、同一のメモリチップ
内の互いに異なるバンクに属する。
【0027】本発明の前記目的はまた、それぞれ複数の
物理ブロックからなる複数のフラッシュメモリと、ホス
トコンピュータより供給されるホストアドレスに基づい
て前記フラッシュメモリにアクセスするメモリコントロ
ーラとを備え、前記コントローラが、前記各物理ブロッ
クを複数のグループに分類する手段と、所定のフラッシ
ュメモリ内の一部のグループに属する複数の物理ブロッ
クであって互いに異なるグループに属する複数の物理ブ
ロック及び前記所定のフラッシュメモリとは異なるフラ
ッシュメモリ内の一部のグループに属する複数の物理ブ
ロックであって互いに異なるグループに属する複数の物
理ブロックを仮想的に結合することにより複数の仮想ブ
ロックを形成する手段と、隣り合うホストアドレスを前
記仮想ブロック内において互いに異なる物理ブロックに
割り当てる手段と備えることを特徴とするフラッシュメ
モリシステムによって達成される。
【0028】本発明の好ましい実施態様においては、前
記各フラッシュメモリには、各グループごとに、書き込
むべきデータを一時的に格納する複数のレジスタが備え
られている。
【0029】本発明のさらに好ましい実施態様において
は、前記各物理ブロックがユーザ領域と冗長領域とを備
え、前記冗長領域には、自己が構成する仮想ブロックを
特定する情報が記録されている。
【0030】本発明の前記目的はまた、それぞれ複数の
物理ブロックを有する複数のフラッシュメモリの制御方
法であって、前記各物理ブロックに含まれる冗長領域に
仮想ブロックアドレスを書き込むステップと、所定のフ
ラッシュメモリに属し、同じ仮想ブロックアドレスが書
き込まれた複数の物理ブロック及び前記所定のフラッシ
ュメモリとは異なるフラッシュメモリに属し、同じ仮想
ブロックアドレスが書き込まれた複数の物理ブロックを
仮想的に結合することにより仮想ブロックを形成するス
テップと、連続するホストアドレスを、前記仮想ブロッ
ク内において、互いに異なる物理ブロックにそれぞれ割
り当てるステップとを備えるフラッシュメモリの制御方
法によって達成される。
【0031】
【発明の好ましい実施の形態】以下、添付図面に基づい
て、本発明の好ましい実施態様につき、詳細に説明を加
える。
【0032】図1は、本発明の好ましい実施態様にかか
るフラッシュメモリシステム1を概略的に示すブロック
図である。
【0033】図1に示されるように、フラッシュメモリ
システム1はカード形状であり、4個のフラッシュメモ
リチップ2−0〜2−3と、コントローラ3と、コネク
タ4とが、一つのカード内に集積されて構成される。フ
ラッシュメモリシステム1は、ホストコンピュータ5に
着脱可能に装着されて使用され、ホストコンピュータ5
に対する一種の外部記憶装置として用いられる。ホスト
コンピュータ5としては、文字、音声、あるいは画像情
報等の種々の情報を処理するパーソナルコンピュータや
デジタルスチルカメラをはじめとする各種情報処理装置
が挙げられる。
【0034】各フラッシュメモリチップ2−0〜2−3
は、それぞれ128Mバイト(1Gビット)の記憶容量
を有する半導体チップである。フラッシュメモリシステ
ム1においては、528バイトを1ページとし、これを
最小アクセス単位としている。したがって、これら各フ
ラッシュメモリチップ2−0〜2−3は、それぞれ25
6Kページのアドレス空間を含み、フラッシュメモリチ
ップ2−0〜2−3の合計で、1Mページのアドレス空
間を備えることになる。また、フラッシュメモリシステ
ム1においては、これら4つのフラッシュメモリチップ
2−0〜2−3は、512Mバイト(4Gビット)の記
憶容量を有し、1Mページのアドレス空間を備える一つ
の大きなメモリとして取り扱われる。このため、これら
1Mページからなるアドレス空間から特定のページにア
クセスするためには、20ビットのアドレス情報が必要
となる。したがって、ホストコンピュータ5は、フラッ
シュメモリシステム1に対し、20ビットのアドレス情
報を供給することによって、特定のページに対するアク
セスを行う。以下、ホストコンピュータ5よりフラッシ
ュメモリシステム1に供給される20ビットのアドレス
情報を「ホストアドレス」と呼ぶ。
【0035】コントローラ3は、マイクロプロセッサ6
と、ホストインターフェースブロック7と、SRAMワ
ークエリア8と、バッファ9と、フラッシュメモリイン
ターフェースブロック10と、ECC(エラー・コレク
ション・コード)ブロック11と、フラッシュシーケン
サブロック12とから構成される。これら機能ブロック
によって構成されるコントローラ3は、一つの半導体チ
ップ上に集積されている。
【0036】マイクロプロセッサ6は、コントローラ3
を構成する各機能ブロック全体の動作を制御するための
機能ブロックである。
【0037】ホストインターフェースブロック7は、バ
ス13を介してコネクタ4に接続されており、マイクロ
プロセッサ6による制御のもと、ホストコンピュータ5
とのデータやアドレス情報、ステータス情報、外部コマ
ンド情報の授受を行う。すなわち、フラッシュメモリシ
ステム1がホストコンピュータ5に装着されると、フラ
ッシュメモリシステム1とホストコンピュータ5とは、
バス13、コネクタ4及びバス14を介して相互に接続
され、かかる状態において、ホストコンピュータ5より
フラッシュメモリシステム1に供給されるデータ等は、
ホストインターフェースブロック7を入口としてコント
ローラ3の内部に取り込まれ、また、コントローラ3よ
りホストコンピュータ5に供給されるデータ等は、ホス
トインターフェースブロック7を出口としてホストコン
ピュータ5に供給される。さらに、ホストインターフェ
ースブロック7は、ホストコンピュータ5より供給され
るホストアドレス及び外部コマンドを一時的に格納する
タスクファイルレジスタ(図示せず)及びエラーが発生
した場合にセットされるエラーレジスタ等(図示せず)
を有している。
【0038】SRAMワークエリア8は、マイクロプロ
セッサ6によるフラッシュメモリチップ2−0〜2−3
の制御に必要なデータが一時的に格納される作業領域で
あり、複数のSRAMセルによって構成される。
【0039】バッファ9は、フラッシュメモリチップ2
−0〜2−3から読み出されたデータ及びフラッシュメ
モリチップ2−0〜2−3に書き込むべきデータを一時
的に蓄積するバッファである。すなわち、フラッシュメ
モリチップ2−0〜2−3から読み出されたデータは、
ホストコンピュータ5が受け取り可能な状態となるまで
バッファ9に保持され、フラッシュメモリチップ2−0
〜2−3に書き込むべきデータは、フラッシュメモリチ
ップ2−0〜2−3が書き込み可能な状態となるととも
に、後述するECCブロック11によってエラーコレク
ションコードが生成されるまでバッファ9に保持され
る。
【0040】フラッシュメモリインターフェースブロッ
ク10は、バス15を介して、フラッシュメモリチップ
2−0〜2−3とのデータやアドレス情報、ステータス
情報、内部コマンド情報の授受を行うとともに、各フラ
ッシュメモリチップ2−0〜2−3に対して対応するチ
ップ選択信号#0〜#3を供給するための機能ブロック
である。チップ選択信号#0〜#3は、ホストコンピュ
ータ5からデータの読み出しまたは書き込みが要求され
た場合、ホストコンピュータ5より供給されるホストア
ドレスに基づいて生成される内部アドレスの上位2ビッ
トに基づいて、そのいずれかが活性化される信号であ
る。具体的には、内部アドレスの上位2ビットが「0
0」であればチップ選択信号#0が活性化され、「0
1」であればチップ選択信号#1が活性化され、「1
0」であればチップ選択信号#2が活性化され、「1
1」であればチップ選択信号#3が活性化される。対応
するチップ選択信号が活性化されたフラッシュメモリチ
ップ2−0〜2−3は選択状態となり、データの読み出
しまたは書き込みが可能となる。尚、「内部コマンド」
とは、コントローラ3がフラッシュメモリチップ2−0
〜2−3を制御するためのコマンドであり、ホストコン
ピュータ5がフラッシュメモリシステム1を制御するた
めの「外部コマンド」と区別される。
【0041】ECCブロック11は、フラッシュメモリ
チップ2−0〜2−3に書き込むデータに付加すべきエ
ラーコレクションコードを生成するとともに、読み出し
データに付加されたエラーコレクションコードに基づい
て、読み出しデータに含まれる誤りを訂正するための機
能ブロックである。
【0042】フラッシュシーケンサブロック12は、フ
ラッシュメモリチップ2−0〜2−3とバッファ9との
データの転送を制御するための機能ブロックである。フ
ラッシュシーケンサブロック12は、複数のレジスタ
(図示せず)を備え、マイクロプロセッサ6による制御
のもと、フラッシュメモリチップ2−0〜2−3からの
データの読み出しまたはフラッシュメモリチップ2−0
〜2−3へのデータの書き込みに必要な値がこれらレジ
スタに設定されると、データの読み出しまたは書き込み
に必要な一連の動作を自動的に実行する。
【0043】次に、各フラッシュメモリチップ2−0〜
2−3を構成する各フラッシュメモリセルの具体的な構
造について説明する。
【0044】図2は、フラッシュメモリチップ2−0〜
2−3を構成する各フラッシュメモリセル16の構造を
概略的に示す断面図である。
【0045】図2に示されるように、フラッシュメモリ
セル16は、P型半導体基板17に形成されたN型のソ
ース拡散領域18及びドレイン拡散領域19と、ソース
拡散領域18とドレイン拡散領域19との間のP型半導
体基板17を覆って形成されたトンネル酸化膜20と、
トンネル酸化膜20上に形成されたフローティングゲー
ト電極21と、フローティングゲート電極21上に形成
された絶縁膜22と、絶縁膜22上に形成されたコント
ロールゲート電極23とから構成される。このような構
成を有するフラッシュメモリセル16は、フラッシュメ
モリチップ2−0〜2−3内において、複数個直列に接
続されて、NAND型フラッシュメモリを構成する。
【0046】フラッシュメモリセル16は、フローティ
ングゲート電極21に電子が注入されているか否かによ
って、「消去状態」と「書込状態」のいずれかの状態が
示される。フラッシュメモリセル16が消去状態である
ことは、当該フラッシュメモリセル16にデータ「1」
が保持されていることを意味し、フラッシュメモリセル
16が書込状態であることは、当該フラッシュメモリセ
ル16にデータ「0」が保持されていることを意味す
る。すなわち、フラッシュメモリセル16は、1ビット
のデータを保持することが可能である。
【0047】図2に示されるように、消去状態とは、フ
ローティングゲート電極21に電子が注入されていない
状態を指す。消去状態におけるフラッシュメモリセル1
6は、デプレッション型のトランジスタとなり、コント
ロールゲート電極23に読み出し電圧が印加されている
か否かに関わらず、ソース拡散領域18とドレイン拡散
領域19との間のP型半導体基板17の表面にはチャネ
ル24が形成される。したがって、ソース拡散領域18
とドレイン拡散領域19とは、コントロールゲート電極
23に読み出し電圧が印加されているか否かに関わら
ず、チャネル24によって常に電気的に接続状態とな
る。
【0048】図3は、書込状態であるフラッシュメモリ
セル16を概略的に示す断面図である。
【0049】図3に示されるように、書込状態とは、フ
ローティングゲート電極21に電子が蓄積されている状
態を指す。フローティングゲート電極21はトンネル酸
化膜20及び絶縁膜22に挟まれているため、一旦、フ
ローティングゲート電極21に注入された電子は、きわ
めて長時間フローティングゲート電極21内にとどま
る。書込状態におけるフラッシュメモリセル16は、エ
ンハンスメント型のトランジスタとなり、コントロール
ゲート電極23に読み出し電圧が印加されていないとき
には、ソース拡散領域18とドレイン拡散領域19との
間のP型半導体基板17の表面にはチャネルが形成され
ず、コントロールゲート電極23に読み出し電圧が印加
されているときには、ソース拡散領域18とドレイン拡
散領域19との間のP型半導体基板17の表面にチャネ
ル(図示せず)が形成される。したがって、コントロー
ルゲート電極23に読み出し電圧が印加されていない状
態では、ソース拡散領域18とドレイン拡散領域19と
は電気的に絶縁され、コントロールゲート電極23に読
み出し電圧が印加された状態では、ソース拡散領域18
とドレイン拡散領域19とが電気的に接続される。
【0050】ここで、選択されたフラッシュメモリセル
16が消去状態であるか書込状態であるかは、次のよう
にして読み出すことができる。すなわち、複数個直列に
接続されたフラッシュメモリセル16のうち、選択され
たフラッシュメモリセル16以外の全てのフラッシュメ
モリセル16のコントロールゲート電極23に読み出し
電圧を印加し、この状態において、これらフラッシュメ
モリセル16の直列体に電流が流れるか否かを検出す
る。その結果、かかる直列体に電流が流れれば、選択さ
れたフラッシュメモリセル16が消去状態であると判断
することができ、かかる直列体に電流が流れなければ、
選択されたフラッシュメモリセル16が書込状態である
と判断することができる。このようにして、直列体に含
まれる任意のフラッシュメモリセル16に保持されたデ
ータが「0」であるのか「1」であるのかを読み出すこ
とができる。但し、NAND型フラッシュメモリにおい
ては、ひとつの直列体に含まれる2以上のフラッシュメ
モリセル16に保持されたデータを同時に読み出すこと
はできない。
【0051】また、消去状態であるフラッシュメモリセ
ル16を書込状態に変化させる場合、コントロールゲー
ト電極23に正の高電圧が印加され、これによって、ト
ンネル酸化膜20を介してフローティングゲート電極2
1へ電子が注入される。フローティングゲート電極21
への電子の注入は、FNトンネル電流による注入が可能
である。一方、書込状態であるフラッシュメモリセル1
6を消去状態に変化させる場合、コントロールゲート電
極23に負の高電圧が印加され、これによって、トンネ
ル酸化膜20を介してフローティングゲート電極21に
蓄積された電子が排出される。
【0052】次に、各フラッシュメモリチップ2−0〜
2−3の持つアドレス空間の具体的な構成について説明
する。
【0053】図4は、フラッシュメモリチップ2−0の
アドレス空間の構造を概略的に示す図である。
【0054】図4に示されるように、フラッシュメモリ
チップ2−0のアドレス空間は、物理ブロック#0〜#
8191からなる8192個の物理ブロックによって構
成される。また、図4には示されていないが、フラッシ
ュメモリチップ2−1〜2−3も、フラッシュメモリチ
ップ2−0と同様に物理ブロック#0〜#8191から
なる8192個の物理ブロックによって構成されてい
る。これら各ブロックは、いずれも16Kバイトの記憶
容量を有する。
【0055】ここで、上記各物理ブロックは、データの
消去単位である。すなわち、フラッシュメモリチップ2
−0〜2−3では、各フラッシュメモリセル16ごと
に、その状態を書込状態から消去状態に変化させること
はできず、フラッシュメモリセル16を書込状態から消
去状態に変化させる場合は、当該フラッシュメモリセル
16が属するブロックに含まれる全てのフラッシュメモ
リセル16が一括して消去状態とされる。逆に、フラッ
シュメモリチップ2−0〜2−3では、各フラッシュメ
モリセル16ごとに、その状態を消去状態から書込状態
に変化させることは可能である。
【0056】さらに、図4に示されるように、フラッシ
ュメモリチップ2−0を構成する各物理ブロック#0〜
#8191は、それぞれ物理ページ#0〜#31からな
る32個の物理ページによって構成されている。また、
フラッシュメモリチップ2−1〜2−3を構成する各物
理ブロック#0〜#8191も、フラッシュメモリチッ
プ2−0を構成する各物理ブロック#0〜#8191と
同様に、それぞれ32個の物理ページによって構成され
ている。
【0057】これら各ページはデータの読み出し及び書
き込みにおけるアクセス単位であり、図4に示されるよ
うに、ビットb0〜b7からなる8ビットを1バイトと
して、それぞれ512バイトのユーザ領域25と16バ
イトの冗長領域26によって構成される。ユーザ領域2
5は、ホストコンピュータ5より供給されるユーザデー
タが格納される領域である。
【0058】ここで、フラッシュメモリチップ2−0〜
2−3は、いずれも「バンクタイプ」と呼ばれるチップ
であり、各ブロックは、それぞれ独立したレジスタを有
するいずれかのバンクに分類される。それぞれ異なるバ
ンクに属する複数のブロックについては、互いに同時に
書き込み処理を行うことができる他、互いに同時にブロ
ック消去を行うことができる。
【0059】図5は、フラッシュメモリチップ2−0の
バンク構造を概略的に示す図である。
【0060】図5に示されるように、フラッシュメモリ
チップ2−0を構成する物理ブロック#0〜#8191
は、バンク#0〜#7からなる8つのバンクに分類され
ている。詳細には、物理ブロック#8m(mは0〜10
23の整数)はバンク#0に属し、物理ブロック#8m
+1はバンク#1に属し、物理ブロック#8m+2はバ
ンク#2に属し、物理ブロック#8m+3はバンク#3
に属し、物理ブロック#8m+4はバンク#4に属し、
物理ブロック#8m+5はバンク#5に属し、物理ブロ
ック#8m+6はバンク#6に属し、物理ブロック#8
m+7はバンク#7に属している。
【0061】また、フラッシュメモリチップ2−0は、
レジスタ#0〜#7からなる8つのレジスタを備えてお
り、これらレジスタ#0〜#7はバンク#0〜#7にそ
れぞれ対応している。これら各レジスタ#0〜#7は、
それぞれ1ページ分のデータを一時的に保持することが
できる。すなわち、バンク#0に属する物理ブロックか
らデータが読み出される場合、読み出されたデータは一
旦レジスタ#0に保持された後、バス15を介してコン
トローラ3に転送され、バンク#0に属する物理ブロッ
クへデータが書き込まれる場合、バス15を介してコン
トローラ3から転送されたデータは、一旦レジスタ#0
に保持された後、所定の物理ブロックに書き込まれるこ
とになる。上記動作は、バンク#1〜#7に属する物理
ブロックに対するデータの読み出し及び書き込みにおい
ても同様に、それぞれ対応するレジスタ#1〜#7が用
いられる。
【0062】また、各物理ブロックから対応するレジス
タへのデータの転送動作(データの読み出し)や、各レ
ジスタから対応する物理ブロックへのデータの転送動作
(データの書き込み)は、各バンクにおいて独立して実
行可能である。したがって、フラッシュメモリチップ2
−0は、8ページ分のデータの書き込みを並列に行うこ
とができる。また、それぞれ異なるバンクに属する複数
の物理ブロックに対して、並列したブロック消去を行う
ことができる。
【0063】尚、図5には示されていないが、フラッシ
ュメモリチップ2−1〜2−3についても、フラッシュ
メモリチップ2−0と同様、各ブロックがバンク#0〜
#7からなる8つのバンクに分類されるとともに、各バ
ンクに対応するレジスタ#0〜#7を備えている。
【0064】図6は、冗長領域26のデータ構造を概略
的に示す図である。
【0065】図6に示されるように、冗長領域26は、
エラーコレクションコード格納領域27、仮想ブロック
アドレス格納領域28及びその他の付加情報によって構
成される。
【0066】エラーコレクションコード格納領域27
は、対応するユーザ領域25に格納されたユーザデータ
の誤りを訂正するための付加情報(エラーコレクション
コード)を格納するための領域であり、ユーザ領域25
に格納されたデータに含まれるデータの誤りが所定数以
下であれば、エラーコレクションコード格納領域27に
格納されたエラーコレクションコードを用いてこれを訂
正し、正しいデータとすることができる。
【0067】仮想ブロックアドレス格納領域28は、当
該物理ブロックが属する仮想ブロックのアドレス(仮想
ブロックアドレス)及びセル番号を格納するための領域
である。仮想ブロック、仮想ブロックアドレス及びセル
番号の詳細については後述する。
【0068】冗長領域26のその他の領域には、当該ブ
ロックについての異常を表示するブロックステータス等
が格納されているが、これらについての説明は省略す
る。
【0069】このように、各ページは、512バイトの
ユーザ領域25と16バイトの冗長領域26からなるの
で、各ページは、8×(512バイト+16バイト)=
4224個のフラッシュメモリセルによって構成される
ことになる。
【0070】このように、各フラッシュメモリチップ2
−0〜2−3はそれぞれ8192個の物理ブロックによ
って構成されるので、合計で32768個の物理ブロッ
クが存在することになる。これら32768個の物理ブ
ロックは、あるフラッシュメモリチップのバンク#0〜
#3に属する物理ブロック及びこれと異なるフラッシュ
メモリチップのバンク#4〜#7に属する物理ブロック
からなる4つのゾーンに分類される。
【0071】図7は、ゾーン#0の構成を示す図であ
る。
【0072】図7に示されるように、ゾーン#0は、フ
ラッシュメモリチップ2−0のバンク#0〜#3に属す
る物理ブロック及びフラッシュメモリチップ2−1のバ
ンク#4〜#7に属する物理ブロックによって構成され
る。
【0073】図8は、ゾーン#1の構成を示す図であ
る。
【0074】図8に示されるように、ゾーン#1は、フ
ラッシュメモリチップ2−1のバンク#0〜#3に属す
る物理ブロック及びフラッシュメモリチップ2−0のバ
ンク#4〜#7に属する物理ブロックによって構成され
る。
【0075】図9は、ゾーン#2の構成を示す図であ
る。
【0076】図9に示されるように、ゾーン#2は、フ
ラッシュメモリチップ2−2のバンク#0〜#3に属す
る物理ブロック及びフラッシュメモリチップ2−3のバ
ンク#4〜#7に属する物理ブロックによって構成され
る。
【0077】図10は、ゾーン#3の構成を示す図であ
る。
【0078】図10に示されるように、ゾーン#3は、
フラッシュメモリチップ2−3のバンク#0〜#3に属
する物理ブロック及びフラッシュメモリチップ2−2の
バンク#4〜#7に属する物理ブロックによって構成さ
れる。
【0079】このように、各ゾーンは8192個の物理
ブロックによって構成されるが、このうち、8000個
の物理ブロックは実際にデータを格納することができる
ブロック(以下、「実使用ブロック」という)として取
り扱われ、残りの192個の物理ブロックは冗長ブロッ
クとして取り扱われる。フラッシュメモリチップ2−0
〜2−3のアドレス空間は、実使用ブロックのみによっ
て構成される。より詳細には、各ゾーンに含まれる81
92個の物理ブロックは、各々が属するバンクに基づい
て1024個ずつに分類され、このうち、1000個の
物理ブロックが実使用ブロックとして取り扱われ、残り
の24個の物理ブロックが冗長ブロックとして取り扱わ
れる。本明細書においては、上述のように各ゾーンにお
いて1024個ずつに分類された各領域を「スロット」
と呼ぶことがある。
【0080】ここで、ある物理ブロックに不良が発生
し、使用不能となった場合には、不良が発生した物理ブ
ロックの数だけ、当該ゾーンの当該スロットにおいて冗
長ブロックとして割り当てられる物理ブロックの数が減
らされるが、あるゾーンのあるスロットにおいて24個
を超える物理ブロックに不良が発生した場合、当該ゾー
ン内の他のバンクに属する物理ブロックを実使用ブロッ
クとして代替使用し、これによって、当該スロットにお
いて1000個の実使用ブロックを確保する。尚、本明
細書においては、このように当該ゾーン内の他のバンク
に属する物理ブロックを実使用ブロックとして代替使用
する処理を「代替処理」と呼ぶことがある。
【0081】また、本実施態様にかかるフラッシュメモ
リシステム1では、各ゾーンごとに、バンク#0〜#7
から一つずつ選ばれた4つの実使用ブロックが仮想的に
結合された「仮想ブロック」が構成される。これによ
り、各ゾーンごとに、仮想ブロック#0〜#999から
なる最大1000個の仮想ブロックが構成される。但
し、あるゾーンのあるスロットにおいて24個を超える
物理ブロックに不良が発生し、これにより上述した代替
処理が行われている場合は、同じバンクから2以上の実
使用ブロックが選ばれることがある。
【0082】図11は、ゾーン#0における仮想ブロッ
クのマッピングの一例を示す図である。
【0083】図11に示される例では、フラッシュメモ
リチップ2−0のバンク#0〜#3にそれぞれ含まれる
物理ブロック#8、#6401、#4242、#818
7、フラッシュメモリチップ2−1のバンク#0〜#3
にそれぞれ含まれる物理ブロック#8188、#640
5、#6、#2487が仮想的に結合され、一つの仮想
ブロックを構成している。このように、本実施態様にお
いては、原則として、ひとつの仮想ブロックを構成する
8つの物理ブロックは互いに異なるバンクに属すること
が必要である。このようにして、各ゾーンごとに、最大
1000個の仮想ブロックが構成され、フラッシュメモ
リシステム1の全体で最大4000個の仮想ブロックが
構成される。
【0084】図12は、ゾーン#0において代替処理が
行われている仮想ブロックのマッピングの一例を示す図
である。
【0085】本例は、ゾーン#0内においてバンク#0
に24個を超える物理ブロックに不良が発生した場合に
おけるマッピングの一例であり、フラッシュメモリチッ
プ2−0のバンク#1に含まれる物理ブロック#17、
#6401、フラッシュメモリチップ2−0のバンク#
2、#3にそれぞれ含まれる物理ブロック#4242、
#8187、フラッシュメモリチップ2−1のバンク#
0〜#3にそれぞれ含まれる物理ブロック#8188、
#6405、#6、#2487が仮想的に結合され、一
つの仮想ブロックを構成している。このように、代替処
理が行われている場合、ひとつの仮想ブロック内に、同
じバンクに属する2以上の物理ブロックが含まれること
がある。
【0086】図13は、図11に示された仮想ブロック
の仮想ページ構造を示す図である。
【0087】図13に示されるように、仮想ブロック
は、仮想ページ#0〜仮想ページ#255からなる25
6個の仮想ページによって構成される一つのブロックと
して取り扱われる。ここで、仮想ブロックのうち、フラ
ッシュメモリチップ2−0の物理ブロック#8からなる
部分に含まれる32個のページは、仮想ページ番号とし
て8i(iは、物理ページ番号)が与えられ、フラッシ
ュメモリチップ2−0の物理ブロック#6401からな
る部分に含まれる32個のページは、仮想ページ番号と
して8i+1が与えられ、フラッシュメモリチップ2−
0の物理ブロック#4242からなる部分に含まれる3
2個のページは、仮想ページ番号として8i+2が与え
られ、フラッシュメモリチップ2−0の物理ブロック#
8187からなる部分に含まれる32個のページは、仮
想ページ番号として8i+3が与えられ、フラッシュメ
モリチップ2−1の物理ブロック#8188からなる部
分に含まれる32個のページは、仮想ページ番号として
8i+4が与えられ、フラッシュメモリチップ2−1の
物理ブロック#6405からなる部分に含まれる32個
のページは、仮想ページ番号として8i+5が与えら
れ、フラッシュメモリチップ2−1の物理ブロック#6
からなる部分に含まれる32個のページは、仮想ページ
番号として8i+6が与えられ、フラッシュメモリチッ
プ2−1の物理ブロック#2487からなる部分に含ま
れる32個のページは、仮想ページ番号として8i+7
が与えられる。詳細は後述するが、これら仮想ページ番
号は、ホストアドレスの下位8ビットと対応している。
【0088】また、代替処理が行われている場合におけ
る仮想ページ構造も、図13に示される構造と同様であ
り、例えば、図12に示した仮想ブロックの仮想ページ
構造は、図13に示されるフラッシュメモリチップ2−
0の物理ブロック#8からなる部分に含まれる32個の
ページが、フラッシュメモリチップ2−0の物理ブロッ
ク#17に含まれる32個のページに置き換えられる。
【0089】次に、仮想ブロックとこれを構成する8つ
の物理ブロックとの関係について説明する。
【0090】図14は、あるゾーンを構成する1000
個の仮想ブロックと、これら各仮想ブロックを構成する
8つの物理ブロックとの関係を示すアドレス変換テーブ
ル29のデータ構造を示す概略図である。
【0091】図14に示されるように、アドレス変換テ
ーブル29は、テーブル#0、#1からなる2つのテー
ブルからなり、これら各テーブルには、それぞれ一つの
ゾーンに関わるアドレス変換情報が格納される。具体的
には、これら各テーブル#0、#1は、それぞれ100
0個の仮想ブロック表示領域#0〜#999によって構
成され、これら各仮想ブロック表示領域#0〜#999
は、それぞれセル#j−0〜セル#j−7(jは、仮想
ブロックアドレス)からなる8個のセル及びフラグ#j
−0〜フラグ#j−7からなる8個のフラグによって構
成される。例えば、仮想ブロック表示領域#0はセル#
0−0〜セル#0−7及びフラグ#0−0〜フラグ#0
−7によって構成され、仮想ブロック表示領域#1はセ
ル#1−0〜セル#1−7及びフラグ#1−0〜フラグ
#1−7によって構成される。
【0092】本実施態様においては、原則として、スロ
ット#0〜#7はそれぞれバンク#0〜#7に対応する
が、代替処理が行われている場合にはこの限りではな
い。
【0093】各仮想ブロック表示領域に含まれるセル#
j−0〜#j−7には、それぞれ当該仮想ブロックを構
成する物理ブロックのアドレス(物理ブロックアドレ
ス)が格納される。ここで、「物理ブロックアドレス」
とは、各物理ブロックに割り当てられたブロック番号を
2進数で表したアドレスであり、13ビットで構成され
る。
【0094】また、各仮想ブロックに含まれるフラグ#
j−0〜フラグ#j−7は、当該セルに格納されている
内容が有効であるか無効であるかを示している。具体的
には、フラグが「1」を示していれば対応するセルの内
容は有効であり、フラグが「0」を示していれば対応す
るセルの内容は無効である。したがって、対応するフラ
グが「0」を示しているセルについては、その内容は無
視される。
【0095】尚、これらテーブル#0、#1が、それぞ
れどのゾーンに対応するのかは、後述する管理テーブル
30によって示される。ここでは、アドレス変換テーブ
ル29に含まれるテーブル数(2個)が、ゾーン数(4
個)よりも少ない点に留意されたい。すなわち、アドレ
ス変換テーブル29には、全てのゾーンに関わるアドレ
ス変換情報は格納されておらず、その一部、つまり2ゾ
ーン分のアドレス変換情報のみがそれぞれテーブル#
0、#1に格納されている。
【0096】上述のように、アドレス変換テーブル29
は、16000個のセルと16000個のフラグによっ
て構成されており、各セルには13ビットの情報(物理
ブロックアドレス)、各フラグには1ビットの情報を格
納する必要があるから、アドレス変換テーブル29は、
SRAMワークエリア8の記憶容量のうち、約32kバ
イトを占有することとなる。
【0097】アドレス変換テーブル29の生成は、次の
ように行われる。
【0098】フラッシュメモリチップ2−0〜2−3を
構成する各物理ブロックのうち、データが格納されてい
るブロックの各先頭ページ(物理ページ#0)の冗長領
域26に含まれる仮想ブロックアドレス格納領域28に
は、当該物理ブロックがどの仮想ブロックに属するかを
示す仮想ブロックアドレス及びセル番号が含まれてお
り、各物理ブロックの各先頭ページ(物理ページ#0)
に含まれている仮想ブロックアドレス及びセル番号がマ
イクロプロセッサ6による制御のもと、フラッシュメモ
リインターフェースブロック10を介して読み出され
る。
【0099】ここで、消去済みの空きブロックにおいて
は、冗長領域26の仮想ブロックアドレス格納領域28
に格納されている仮想ブロックアドレスは「オール1
(1111111111B)」となっているはずであ
る。すなわち、仮想ブロックは、上述のとおり、#0
(0000000000B)〜#999(111110
0111B)までしかなく、したがって、これがオール
1(1111111111B)である場合には、当該物
理ブロックが消去済みの空きブロックであると判断する
ことができる。一方、冗長領域26の仮想ブロックアド
レス格納領域28に格納された仮想ブロックアドレスが
「0000000000B」〜「1111100111
B」である場合には、当該仮想ブロックアドレスは有効
な仮想ブロックアドレスである。
【0100】したがって、マイクロプロセッサ6は、所
定のゾーンに属する各物理ブロックの先頭ページ(物理
ページ#0)の冗長領域26に含まれる仮想ブロックア
ドレスを参照し、これがオール1ではなく有効な仮想ブ
ロックのアドレスを示していれば、当該ゾーンに対応す
るテーブルを構成するセルのうち、読み出された仮想ブ
ロックアドレス及び読み出されたセル番号によって特定
されるセルに、当該物理ブロックの物理ブロックアドレ
スを格納する。例えば、フラッシュメモリチップ2−0
のバンク#0に属する物理ブロック#16より読み出さ
れた仮想ブロックアドレスが「123」であり、読み出
されたセル番号が「0」であれば、セル#123−0
に、物理ブロック#16に対応する物理アドレスとして
「16」が書き込まれ、さらに、対応するフラグ#12
3−0が「1」にされる。
【0101】ここで、冗長領域26の仮想ブロックアド
レス格納領域28に格納されているセル番号は、当該物
理ブロックが属するスロット番号と一致している。この
ことは、セル番号とバンク番号とが通常一致しているこ
とを意味する。しかしながら、上述した代替処理が行わ
れた結果、あるスロットに属する物理ブロックが他のス
ロットの実使用ブロックとして使用されている場合にお
いては、当該物理ブロックのセル番号はバンク番号と一
致しない。換言すれば、仮想ブロックアドレス格納領域
28に格納されているセル番号は、代替処理を可能とす
るために備えられている要素である。
【0102】このような処理が、所定のゾーンを構成す
る物理ブロックの全てについて行われ、これにより、対
応するテーブルを構成する仮想ブロック表示領域に、そ
れぞれ対応する物理ブロックアドレスが格納されること
になる。
【0103】そして、このような処理を所定の2つのゾ
ーンについて行うことにより、アドレス変換テーブル2
9を構成する2つのテーブル内にアドレス変換情報が展
開され、アドレス変換テーブル29の作成作業が完了す
る。尚、4個のゾーンのうち、どのゾーンについてアド
レス変換情報を作成するかについては、後述する管理テ
ーブル30によって定められる。
【0104】上述のとおり、アドレス変換テーブル29
を構成するテーブルの数(2テーブル)は、ゾーンの数
(4ゾーン)よりも少なく、このため、アドレス変換テ
ーブル29に展開されるアドレス変換情報は、一部のゾ
ーンに関わるアドレス変換情報に限られる。したがっ
て、アドレス変換テーブル29にアドレス変換情報が展
開されていないゾーンに対して、ホストコンピュータ5
からアクセスが要求された場合には、アドレス変換テー
ブル29の内容を更新する必要がある。すなわち、マイ
クロプロセッサ6は、アドレス変換テーブル29を構成
する2つのテーブルの中からいずれか一方のテーブルを
選び、その内容を消去して、アクセスが要求されたゾー
ンに関わるアドレス変換情報を当該テーブル内に新たに
展開する必要がある。したがって、アドレス変換テーブ
ル29を構成する2つのテーブルの中から、その内容が
消去されるべきテーブルを選ぶためには、アドレス変換
テーブル29を構成する2つのテーブルに優先順位を設
け、優先順位の低いテーブルの内容を消去する必要があ
る。
【0105】優先順位の付加方法としては任意の方法を
用いれば良く、例えば、アドレス変換テーブル29に1
ビットのフラグを設け、テーブル#0に対するアクセス
が要求された場合これを「0」、テーブル#1に対する
アクセスが要求された場合これを「1」とし、これによ
っていずれのテーブルが高い優先順位を有しているかを
示せばよい。この場合、例えばフラグが「0」であれ
ば、アドレス変換テーブル29にアドレス変換情報が展
開されていないゾーンに対してホストコンピュータ5か
らアクセスが要求された場合、テーブル#1の内容を消
去し、更新すればよい。
【0106】次に、SRAMワークエリア8に格納され
る管理テーブル30のデータ構造について説明する。
【0107】図15は、SRAMワークエリア8に格納
される管理テーブル30のデータ構造を示す概略図であ
る。
【0108】図15に示されるように、管理テーブル3
0は、ゾーン番号格納領域#0、#1からなる2つのゾ
ーン番号格納領域によって構成される。これら各ゾーン
番号格納領域#0、#1は、それぞれSRAMワークエ
リア8の1バイトの記憶領域を使用しており、それぞれ
にはゾーン番号が2ビットのデータによって格納されて
いる。したがって、管理テーブル30は、SRAMワー
クエリア8の記憶容量のうち、2バイトを占有すること
となる。
【0109】管理テーブル30は、アドレス変換テーブ
ル29を構成するテーブル#0、#1が、それぞれどの
ゾーンに関わるアドレス変換情報を格納しているかを示
している。具体的には、ゾーン番号格納領域#0に格納
されたゾーン番号は、テーブル#0に格納されているア
ドレス変換情報が当該ゾーンに関わるアドレス変換情報
であることを示し、ゾーン番号格納領域#1に格納され
たゾーン番号は、テーブル#1に格納されているアドレ
ス変換情報が当該ゾーンに関わるアドレス変換情報であ
ることを示す。
【0110】管理テーブル30の生成は、マイクロプロ
セッサ6による制御のもと、上述したアドレス変換テー
ブル29の生成の際に行われる。
【0111】次に、SRAMワークエリア8に格納され
る消去済みブロックキュー32のデータ構造について説
明する。
【0112】図16は、SRAMワークエリア8に格納
される消去済みブロックキュー32のデータ構造を示す
概略図である。
【0113】図16に示されるように、消去済みブロッ
クキュー32は、キューセット#0〜#4からなる4つ
のキューセットによって構成され、これらは、それぞれ
キュー#k−0〜キュー#k−7(kは、キューセット
番号)からなる8個のキューによって構成される。例え
ば、キューセット#0はキュー#0−0〜キュー#0−
7によって構成され、キューセット#1はキュー#1−
0〜キュー#1−7によって構成される。したがって、
消去済みブロックキュー32は、32個のキューによっ
て構成される。
【0114】各キューセット#0〜#3を構成するキュ
ー#k−0〜#k−7には、ユーザ領域25を構成する
全てのフラッシュメモリセル16が消去状態となってい
る物理ブロックの物理アドレスが格納される。
【0115】ここで、キューセット#0、#1はテーブ
ル#0に対応するキューセットであり、キューセット#
2、#3はテーブル#1に対応するキューセットであ
る。さらに、キュー#k−0〜キュー#k−7は、それ
ぞれスロット#0〜#7に対応している。
【0116】消去済みブロックキュー32の生成は、マ
イクロプロセッサ6による制御のもと、上述したアドレ
ス変換テーブル29の生成の際に行われ、データ書き込
みに備えて待機している冗長ブロックの中から、これら
キューに登録すべき物理ブロックが選ばれる。したがっ
て、キュー#k−0〜#k−7に登録される消去済みブ
ロックは、原則として、それぞれバンク#0〜#7に属
する冗長ブロックから選ばれる。但し、代替処理が行わ
れる場合にはこの限りではない。
【0117】次に、ホストコンピュータ5より供給され
るホストアドレスを内部アドレスに変換する方法の詳細
について説明する。
【0118】本実施態様にかかるフラッシュメモリシス
テム1においては、上述の通り、8つの物理ブロックが
仮想的に結合して仮想ブロックを構成し、仮想ブロック
内における仮想ページの仮想ページ番号がホストアドレ
スの下位8ビットに対応していることから、代替処理が
行われている場合を除き、連続するホストアドレスはあ
る仮想ブロックを構成する異なる物理ブロック内の物理
ページに割り当てられることになる。以下、その詳細に
ついて、データの読み出し動作、データの書き込み動作
の順に説明する。
【0119】まず、本実施態様にかかるフラッシュメモ
リシステム1によるデータの読み出し動作について説明
する。
【0120】ここでは、ホストコンピュータ5より、バ
ス14、コネクタ4及びバス13を介して、外部コマン
ドの一種である外部読み出しコマンドとともにホストア
ドレス、例えば「00000111111111100
000B」がフラッシュメモリシステム1に供給された
場合を例に説明する。
【0121】まず、ホストアドレス及び外部読み出しコ
マンドがコントローラ3に供給されると、これらホスト
アドレス及び外部読み出しコマンドは、ホストインター
フェースブロック7が有するタスクファイルレジスタ
(図示せず)に一時的に格納される。
【0122】次に、タスクファイルレジスタ(図示せ
ず)に格納されたホストアドレスが正しいアドレスであ
るか否か、すなわち、かかるホストアドレスが、本来存
在しない物理アドレスや無効なアドレスを示していない
か否かが、ホストインターフェースブロック7によって
判定される。
【0123】かかる判定の結果、タスクファイルレジス
タ(図示せず)に格納されたホストアドレスが有効なア
ドレスであると判断されれば、アドレス変換テーブル2
9を用いて内部アドレスに変換される。一方、これが異
常なアドレスであると判断されれば、ホストインターフ
ェースブロック7が有するエラーレジスタ(図示せず)
がセットされ、ホストコンピュータは、かかるレジスタ
の内容を参照することにより、エラーの発生を知ること
ができる。
【0124】次に、アドレス変換テーブル29を用いた
内部アドレスへの変換について、図17を参照しながら
説明する。
【0125】図17においては、便宜上、ホストアドレ
スから上位12ビットを「A」とし、上位13ビット目
〜上位17ビット目からなる5ビットを「B」とし、下
位3ビットを「C」と表記している。
【0126】まず、マイクロプロセッサ6による制御の
もと、20ビットのホストアドレスから上位12ビット
(A)が取り出され、これが「1000」で除される。
そして、かかる除算によって得られた商(0〜3)によ
ってゾーンが特定され、剰余(0〜999)によって仮
想ブロック表示領域が特定される。本例では、ホストア
ドレスの上位12ビット(A)が「000001111
111B」であるから、商は「00B(0)」であり、
剰余は「0001111111B(127)」となる。
これにより、選択されるゾーンはゾーン#0となり、選
択される仮想ブロック表示領域は、対応するテーブル内
の仮想ブロック表示領域#127となる。ここで、どの
テーブルがゾーン#0に対応するテーブルであるのか
は、上述のとおり、管理テーブル30に表示されてい
る。本例では、ゾーン番号格納領域#0、#1のうち、
ゾーン番号として「00B(0)」が格納されているゾ
ーン番号格納領域に対応するテーブルがゾーン#0に対
応するテーブルとなる。いずれのゾーン番号格納領域#
0、#1にもゾーン番号として「00B(0)」が格納
されていない場合には、テーブル#0、#1のうち、優
先順位の低いテーブルが更新され、これに伴って管理テ
ーブル30の内容が更新される。
【0127】次に、ホストアドレスの下位3ビット
(C)に基づいて、選択された仮想ブロック表示領域内
の所定のセルが特定される。例えば、上述のように仮想
ブロック表示領域#127が選択された場合において、
ホストアドレスの下位3ビット(C)が「000B
(0)」であれば、選択されるセルは、セル#127−
0となる。
【0128】また、本例はデータの読み出し動作である
から、フラグ#127−0は「1(有効)」となってい
るはずである。したがって、仮にフラグ#127−0が
「0(無効)」である場合には、エラーとなる。
【0129】そして、かかるフラグ#127−0が
「1」となっていれば、選択されたセル#127−0の
内容が読み出される。本例では、かかるセル#127−
0の内容が「1010101010000B」であるも
のとする。
【0130】次に、マイクロプロセッサ6による制御の
もと、読み出されたセルの内容の下位3ビット目及びゾ
ーン番号の下位ビットに基づいて、値Dが生成される。
ここで、値Dは、ゾーン番号の下位ビットが「0」であ
る場合には、読み出されたセルの内容の下位3ビット目
と同じ値となり、ゾーン番号の下位ビットが「1」であ
る場合には、読み出されたセルの内容の下位3ビット目
と逆の値となる。
【0131】そして、マイクロプロセッサ6による制御
のもと、ゾーン番号の上位ビット、値D、読み出された
セルの内容及びホストアドレスの上位13ビット目〜上
位17ビット目からなる5ビット(B)がこの順に結合
される。結合されたアドレスは、内部アドレスとなる。
この場合、ゾーン番号の上位1ビットは「0」であり、
値Dは「0」であり、読み出されたセルの内容は「10
10101010000B」であり、ホストアドレスの
上位13ビット目〜上位17ビット目からなる5ビット
(B)は「11100B」であることから、得られる内
部アドレスは、「00101010101000011
100B」となる。
【0132】以上より、ホストアドレスから内部アドレ
スへの変換が完了する。
【0133】一方、ホストインターフェースブロック7
が有するタスクファイルレジスタ(図示せず)に外部読
み出しコマンドが格納されていることに応答して、マイ
クロプロセッサ6による制御のもと、フラッシュシーケ
ンサブロック12が有するレジスタ(図示せず)に対す
る設定がなされる。かかる設定は、次のように行われ
る。
【0134】まず、マイクロプロセッサ6による制御の
もと、内部コマンドの一種である内部読み出しコマンド
がフラッシュシーケンサブロック12内の所定のレジス
タ(図示せず)に設定される。さらに、マイクロプロセ
ッサ6による制御のもと、20ビット長の内部アドレス
がフラッシュシーケンサブロック12内の所定のレジス
タ(図示せず)に設定される。
【0135】このようにしてフラッシュシーケンサブロ
ック12に含まれる各種レジスタに対する設定が完了す
ると、フラッシュシーケンサブロック12による一連の
読み出し動作が実行される。フラッシュシーケンサブロ
ック12による一連の読み出し動作は、次の通りであ
る。
【0136】まず、フラッシュシーケンサブロック12
は、所定のレジスタに格納された内部アドレスの上位2
ビットに基づき、フラッシュメモリチップ2−0〜2−
3のうち、アクセスすべきページが属するフラッシュメ
モリチップに対応するチップ選択信号を活性化するよ
う、フラッシュメモリインターフェースブロック10に
指示する。この場合、内部アドレスの上位2ビットは
「00B(0)」であるから、アクセスすべきページが
属するフラッシュメモリチップは、フラッシュメモリチ
ップ2−0であり、チップ選択信号#0が活性化され
る。これにより、フラッシュメモリチップ2−0は、デ
ータの読み出しが可能な状態となる。一方、チップ選択
信号#1〜#3は、非活性状態が保たれる。
【0137】次に、フラッシュシーケンサブロック12
は、所定のレジスタに格納された内部アドレスの下位1
8ビット「101010101000011100B」
を、所定のレジスタに格納された内部読み出しコマンド
とともにバス15に供給するよう、フラッシュメモリイ
ンターフェースブロック10に指示する。バス15に供
給された18ビットの内部アドレス及び内部読み出しコ
マンドは、フラッシュメモリチップ2−0〜2−3に対
し共通に供給されるが、上述のとおり、チップ選択信号
#0は活性状態となっており、チップ選択信号#1〜#
3は非活性状態となっているので、バス15に供給され
た内部アドレス及び内部読み出しコマンドは、フラッシ
ュメモリチップ2−0に対してのみ有効となる。
【0138】これにより、フラッシュメモリチップ2−
0は、供給された18ビットの内部アドレス「1010
10101000011100B」に格納されたデータ
の読み出しを実行する。ここで、供給された18ビット
の内部アドレス「10101010100001110
0B」のうち、上位13ビットは物理ブロックを特定
し、下位5ビットは当該ブロック内の物理ページを特定
するために用いられる。この場合、上位13ビットは
「1010101010000B」であり、下位5ビッ
トは「11100B」であるから、特定される物理ブロ
ックはブロック#5456となり、特定される物理ペー
ジは物理ページ#28となる。すなわち、フラッシュメ
モリチップ2−0は、ブロック#5456の物理ページ
#28に格納されたデータの読み出しを実行する。かか
る読み出し動作においては、ユーザ領域25に格納され
たユーザデータのみならず、冗長領域26に格納された
付加情報も読み出される。
【0139】尚、図13において説明したように、本実
施態様においては、8つの物理ブロックが仮想的に結合
されて一つの仮想ブロックが構成されているので、フラ
ッシュメモリチップ2−0に属するブロック#5456
の物理ページ#28は、仮想ページ#224となる。
【0140】このようにしてフラッシュメモリチップ2
−0から読み出されたユーザデータ及び付加情報は、バ
ス15を介してフラッシュメモリインターフェースブロ
ック10に供給される。フラッシュメモリインターフェ
ースブロック10がユーザデータ及び付加情報を受け取
ると、フラッシュシーケンサブロック12による制御の
もと、付加情報に含まれるエラーコレクションコードが
抽出され、ユーザデータ及び抽出されたエラーコレクシ
ョンコードがECCブロック11に供給される。ユーザ
データ及びエラーコレクションコードがECCブロック
11に供給されると、ECCブロック11は、エラーコ
レクションコードに基づき、ユーザデータに誤りがある
か否かを判断し、誤りがないと判断すれば、供給された
ユーザデータをそのままバッファ9に格納し、誤りがあ
ると判断すれば、これをエラーコレクションコードに基
づいて訂正し、訂正後のユーザデータをバッファ9に格
納する。このようにしてバッファ9に誤りのないユーザ
データが格納されると、フラッシュシーケンサブロック
12による一連の読み出し動作が完了する。
【0141】そして、バッファ9に格納されたユーザデ
ータは、マイクロプロセッサ6による制御のもと、ホス
トインターフェースブロック7より、バス13、コネク
タ4及びバス14を介してホストコンピュータ5に供給
される。
【0142】以上により、一連の読み出し動作が完了す
る。
【0143】また、上記ホストアドレスに続く次のホス
トアドレス「0000011111111110000
1B」に対してデータの読み出しが要求された場合、図
17から明らかなように、内部アドレスとしては、「0
01110111001001111100B」が生成
される。かかる内部アドレスにより特定される物理ペー
ジは、フラッシュメモリチップ2−0に属するブロック
#7625の物理ページ#28となり、上記データの読
み出しが行われた仮想ブロックの仮想ページ#225に
対応する。このように、本実施態様にかかるフラッシュ
メモリシステム1においては、連続するホストアドレス
が同じ仮想ブロックを構成する他の物理ブロック内の物
理ページに対応していることが分かる。その意義につい
ては、以下に詳述するデータの書き込み動作の説明にお
いて明らかとなる。
【0144】次に、本実施態様にかかるフラッシュメモ
リシステム1のデータの書き込み動作について説明す
る。
【0145】フラッシュメモリシステム1によるデータ
の書き込み動作においては、上述の通り、連続するホス
トアドレスが仮想ブロックを構成する異なる物理ブロッ
ク内の物理ページに対応していることから、連続するホ
ストアドレスに対してデータの書き込みが要求された場
合、これら各データは、ある仮想ブロック内の互いに異
なる物理ブロック内の物理ページに書き込まれることに
なる。ここで、仮想ブロックを構成する物理ブロック
は、上述の通り、原則として互いに異なるバンクに属し
ていることから、これら書き込み動作は一括して実行可
能である。以下、フラッシュメモリシステム1によるデ
ータの書き込み動作について、新規データの書き込み動
作、すなわち現在データが割り当てられていないホスト
アドレスに対して新しくデータを割り当てる動作と、デ
ータの上書き動作、すなわち、現在データが割り当てら
れているホストアドレスに対してこれと異なるデータを
割り当てる動作とに分けて詳細に説明する。
【0146】まず、フラッシュメモリシステム1による
新規データの書き込み動作について説明する。新規デー
タの書き込み動作においては、空きブロックにデータが
書き込まれる。
【0147】書き込み動作1(空きブロックにデータを
書き込む場合) 空きブロックにデータを書き込む場合、すなわち新規デ
ータの書き込み動作においては、仮想ブロックの生成、
生成された仮想ブロックの仮想ページ#0〜#7に対す
る冗長データの書き込み、生成された仮想ブロックの所
定の仮想ページに対するユーザデータの書き込みが実行
される。
【0148】ここでは、図18に示すように、ホストコ
ンピュータ5より、バス14、コネクタ4及びバス13
を介して、外部コマンドの一種である外部書き込みコマ
ンドと、対応する仮想ブロックにデータが割り当てられ
ていない連続した複数のホストアドレス、例えば「00
010101010101000000B」〜「000
10101010101000111B」と、これら各
アドレスに書き込むべきデータとがフラッシュメモリシ
ステム1に供給された場合を例に説明する。ここでは、
これら連続するホストアドレスを、ホストアドレス#0
〜#7と呼ぶ。
【0149】まず、ホストアドレス#0〜#7及び外部
書き込みコマンドがコントローラ3に供給されると、こ
れらホストアドレス#0〜#7及び外部書き込みコマン
ドは、ホストインターフェースブロック7が有するタス
クファイルレジスタ(図示せず)に一時的に格納され
る。さらに、ホストアドレス#0〜#7にそれぞれ対応
する書き込みデータがコントローラ3に供給されると、
マイクロプロセッサ6による制御のもと、これらデータ
がECCブロック11に送出される。これらデータの供
給を受けたECCブロック11は、これらデータを解析
してエラーコレクションコードを生成し、これを一時的
に保持する。
【0150】次に、タスクファイルレジスタ(図示せ
ず)に格納されたホストアドレス#0〜#7が正しいア
ドレスであるか否か、すなわち、かかるホストアドレス
#0〜#7が、本来存在しない物理アドレスや無効なア
ドレスを示していないか否かが、ホストインターフェー
スブロック7によって判定される。
【0151】かかる判定の結果、タスクファイルレジス
タ(図示せず)に格納されたホストアドレス#0〜#7
が有効なアドレスであると判断されれば、アドレス変換
テーブル29を用いて内部アドレスに変換される。一
方、これが異常なアドレスであると判断されれば、ホス
トインターフェースブロック7が有するエラーレジスタ
(図示せず)がセットされ、ホストコンピュータは、か
かるレジスタの内容を参照することにより、エラーの発
生を知ることができる。
【0152】本例では、ホストアドレス#0〜#7が
「00010101010100000100B」〜
「00010101010101000111B」であ
るから、ホストアドレス#0〜#7の上位12ビット
(A)が「000101010101B」を1000で
除した場合の商は「00B(0)」であり、剰余は「0
101010101B(341)」となる。これによ
り、選択されるゾーンはゾーン#0となり、選択される
仮想ブロック表示領域は、対応するテーブル内の仮想ブ
ロック表示領域#341となる。どのテーブルがゾーン
#0に対応するテーブルであるのかは、上述のとおり、
管理テーブル30に表示されている。また、ホストアド
レス#0〜#7の下位3ビット(C)がそれぞれ「00
0B(0)」〜「111B(7)」であるから、選択さ
れるセルは、セル#341−0〜セル#341−7とな
る。
【0153】しかしながら、本例は、新規データの書き
込み動作、すなわち対応する仮想ブロックに現在データ
が割り当てられていないホストアドレスに対して新しく
データを割り当てる動作であるので、対応する仮想ブロ
ック表示領域#341内の各フラグ#341−0〜#3
41−7はいずれも「0(無効)」を示しているはずで
ある。このため、このままアドレス変換テーブル29を
用いた内部アドレスの生成を行うことはできず、以下に
説明する新たな仮想ブロックの割り当てが行われる。
尚、これらフラグ#341−0〜#341−7が「1
(有効)」となっている場合は、当該書き込み処理は
「データの上書き処理」であり、その動作については後
述する。
【0154】新たな仮想ブロックの割り当ては、次のよ
うに行われる。まず、マイクロプロセッサ6による制御
のもと、消去済みブロックキュー32を構成するキュー
セット#0〜#3のうち、ゾーン#0に対応するテーブ
ル(例えば、テーブル#0)に対応するキューセット、
例えば、キューセット#0が選択され、かかるキューセ
ット#0を構成する各キュー#0−0〜#0−7に格納
された内容が読み出される。上述のとおり、各キューに
格納されているのは、消去済みブロックの物理アドレス
である。本例では、これらキュー#0−0〜#0−7の
内容がそれぞれ「0000000111000B(5
6)」、「0110000110001B(312
1)」、「0101111110010B(305
8)」、「0000100000011B(25
9)」、「1100011001100(634
8)」、「1000001011101(418
9)」、「0101111000110(301
4)」、「0000000000111(7)」である
ものとする。
【0155】キュー#0−0〜#0−7に格納された内
容が読み出されると、これらが仮想ブロック表示領域#
341のセル#341−0〜セル#341−7にそれぞ
れ格納され、対応する各フラグ#341−0〜#341
−7が全て「1(有効)」に書き換えられる。これによ
り、仮想ブロックの生成が完了する。
【0156】そして、ゾーン番号の上位1ビット、値
D、読み出されたキューの内容、及びホストアドレスの
上位13ビット目〜上位17ビット目からなる5ビット
(B)がこの順に結合され、ホストアドレス#0〜#7
にそれぞれ対応する内部アドレス#0〜#7が生成され
る。本例においては、内部アドレス#0〜#7はそれぞ
れ図18に示す値となる。
【0157】以上より、ホストアドレス#0〜#7から
内部アドレス#0〜#7への変換が完了する。上述のと
おり、内部アドレスの上位2ビットは、アクセスすべき
フラッシュメモリチップの番号を示し、内部アドレスの
上位3ビット目〜上位15ビット目は、アクセスすべき
物理ブロックアドレスを示し、内部アドレスの下位5ビ
ットは、アクセスすべき物理ページを示している。した
がって、内部アドレス#0によって特定される物理ペー
ジは、フラッシュメモリチップ2−0の物理ブロック#
56の物理ページ#8となり、内部アドレス#1によっ
て特定される物理ページは、フラッシュメモリチップ2
−0の物理ブロック#3121の物理ページ#8とな
り、内部アドレス#2によって特定される物理ページ
は、フラッシュメモリチップ2−0の物理ブロック#3
058の物理ページ#8となり、内部アドレス#3によ
って特定される物理ページは、フラッシュメモリチップ
2−0の物理ブロック#259の物理ページ#8とな
り、内部アドレス#4によって特定される物理ページ
は、フラッシュメモリチップ2−1の物理ブロック#6
348の物理ページ#8となり、内部アドレス#5によ
って特定される物理ページは、フラッシュメモリチップ
2−1の物理ブロック#4189の物理ページ#8とな
り、内部アドレス#6によって特定される物理ページ
は、フラッシュメモリチップ2−1の物理ブロック#3
014の物理ページ#8となり、内部アドレス#7によ
って特定される物理ページは、フラッシュメモリチップ
2−1の物理ブロック#7の物理ページ#8となり、こ
れらは、互いに異なるバンクに属している。
【0158】さらに、ホストインターフェースブロック
7が有するタスクファイルレジスタ(図示せず)に外部
書き込みコマンドが格納されていることに応答して、マ
イクロプロセッサ6による制御のもと、フラッシュシー
ケンサブロック12が有するレジスタ(図示せず)に対
する設定がなされる。かかる設定は、次のように行われ
る。
【0159】まず、マイクロプロセッサ6による制御の
もと、内部コマンドの一種であるデータ転送コマンド及
び内部書き込みコマンドがフラッシュシーケンサブロッ
ク12内の所定のレジスタ(図示せず)に設定される。
さらに、マイクロプロセッサ6による制御のもと、上記
生成された8つの内部アドレス#0〜#7がフラッシュ
シーケンサブロック12内の所定のレジスタ(図示せ
ず)に設定される。
【0160】このようにしてフラッシュシーケンサブロ
ック12に含まれる各種レジスタ(図示せず)に対する
設定が完了すると、フラッシュシーケンサブロック12
による一連の書き込み動作が実行される。本例において
は、フラッシュシーケンサブロック12による一連の書
き込み動作は、仮想ブロック#341の仮想ページ#0
〜#7に対する各種冗長データの書き込み、並びに、仮
想ブロック#341の仮想ページ#64〜#71に対す
るユーザデータ及び各種冗長データの書き込みの順に実
行される。
【0161】図19は、一連の書き込み動作を概略的に
示すタイミング図である。
【0162】まず、フラッシュシーケンサブロック12
は、仮想ブロック#341の仮想ページ#0に対応する
内部アドレス#8を生成する。ここで、仮想ブロック#
341の仮想ページ#0に対応する内部アドレス#8と
は、フラッシュメモリチップ2−0内の物理ブロック#
56の物理ページ#0に対応し、その値は、「0000
0000011100000000B」である。
【0163】次に、このようにして生成された内部アド
レス#8の上位2ビットに基づいて、フラッシュメモリ
チップ2−0〜2−3のうち、アクセスすべきページが
属するフラッシュメモリチップに対応するチップ選択信
号を活性化するよう、フラッシュメモリインターフェー
スブロック10に指示する。この場合、内部アドレス#
8の上位2ビットは「00B(0)」であるから、チッ
プ選択信号#0が活性化される。これにより、フラッシ
ュメモリチップ2−0は、データの書き込みが可能な状
態となる。一方、チップ選択信号#1〜#3は、非活性
状態が保たれる。
【0164】次に、フラッシュシーケンサブロック12
は、上記内部アドレス#8の下位18ビット「0000
00011100000000B」を、所定のレジスタ
(図示せず)に格納されたデータ転送コマンドとともに
バス15に供給するよう、フラッシュメモリインターフ
ェースブロック10に指示する。バス15に供給された
内部アドレス#8の下位18ビット及びデータ転送コマ
ンドは、フラッシュメモリチップ2−0〜2−3に対し
共通に供給されるが、上述のとおり、チップ選択信号#
0は活性状態となっており、チップ選択信号#1〜#3
は非活性状態となっているので、バス15に供給された
内部アドレス#8の下位18ビット及びデータ転送コマ
ンドは、フラッシュメモリチップ2−0に対してのみ有
効となる。このとき、内部アドレスの上位13ビット目
〜上位15ビット目からなる3ビットである「000B
(0)」に基づき、フラッシュメモリチップ2−0に設
けられたレジスタ#0が活性化される(転送先指定)。
【0165】これにより、フラッシュメモリチップ2−
0は、供給された内部アドレス#8の下位18ビット
「000000011100000000B」に対応す
るページに書き込まれるべきデータのレジスタ#0への
受け入れが許可された状態となる。
【0166】次に、仮想ブロック#341の仮想ページ
#0に書き込むべきデータが、フラッシュシーケンサブ
ロック12により、フラッシュメモリインターフェース
ブロック10を介して、バス15に供給される。ここ
で、仮想ブロック#341の仮想ページ#0とは、フラ
ッシュメモリチップ2−0内の物理ブロック#56の物
理ページ#0に対応し、ここに書き込むべきデータと
は、仮想ブロックアドレス、セル番号及びその他の付加
情報であり、これらはいずれも冗長領域26に書き込ま
れるデータである。この場合、仮想ブロックアドレスは
「0101010101B(341)」であり、セル番
号は「00B(0)」である。この場合、フラッシュメ
モリチップ2−0に設けられたレジスタ#0が活性化さ
れているため、バス15に供給されたこれら仮想ブロッ
クアドレス、セル番号及びその他の付加情報は、フラッ
シュメモリチップ2−0内のレジスタ#0に格納される
(データ転送)。
【0167】次に、フラッシュシーケンサブロック12
は、仮想ブロック#341の仮想ページ#1に対応する
内部アドレス#9を生成し、フラッシュメモリチップ2
−0内のレジスタ#1に、レジスタ#0に格納した情報
と同じ情報を格納させる。ここで、仮想ブロック#34
1の仮想ページ#1に対応する内部アドレス#9とは、
フラッシュメモリチップ2−0内の物理ブロック#31
21の物理ページ#0に対応し、その値は、「0001
1000011000100000B」である。
【0168】このような転送先指定処理及びデータ転送
処理が、内部アドレス#10及び#11を用いることに
より仮想ブロック#341の仮想ページ#2、#3に対
しても行われ、これにより、フラッシュメモリチップ2
−0内に備えられたレジスタ#0〜#3への仮想ブロッ
クアドレス、セル番号及びその他の付加情報の一時的な
格納が完了する。ここで、仮想ブロック#341の仮想
ページ#2、#3は、フラッシュメモリチップ2−0の
物理ブロック#3058の物理ページ#0及びフラッシ
ュメモリチップ2−0の物理ブロック#259の物理ペ
ージ#0にそれぞれ対応し、レジスタ#2、#3に格納
される仮想ブロックアドレス、セル番号及びその他の付
加情報は、レジスタ#0に格納したこれらと同じ内容で
ある。
【0169】次に、フラッシュシーケンサブロック12
は、所定のレジスタ(図示せず)に格納された内部書き
込みコマンドを、フラッシュメモリチップ2−0に対し
て発行する(書き込み命令)。
【0170】これに応答して、フラッシュメモリチップ
2−0は、レジスタ#0〜#3に格納されているデータ
及びエラーコレクションコード等の付加情報を、転送先
指定処理によって指定されたアドレスに一斉に書き込む
(フラッシュプログラミング)。
【0171】フラッシュメモリチップ2−0がフラッシ
ュプログラミングを実行している間、フラッシュシーケ
ンサブロック12は、仮想ブロック#341の仮想ペー
ジ#4〜#7に対応する内部アドレス#12〜#15を
生成し、フラッシュメモリチップ2−1内に備えられた
レジスタ#4〜#7へ仮想ブロックアドレス、セル番号
及びその他の付加情報を一時的に格納する。ここで、仮
想ブロック#341の仮想ページ#4〜#7は、それぞ
れフラッシュメモリチップ2−1の物理ブロック#63
48、#4189、#3014、#7の物理ページ#0
にそれぞれ対応し、格納すべき内容は、フラッシュメモ
リチップ2−0のレジスタ#0に格納したこれらと同じ
内容である。
【0172】そして、フラッシュシーケンサブロック1
2は、所定のレジスタ(図示せず)に格納された内部書
き込みコマンドを、フラッシュメモリチップ2−1に対
して発行する(書き込み命令)。
【0173】このようにして、仮想ブロック#341の
仮想ページ#0〜#7に対する一連の書き込み処理が完
了すると、次に、仮想ブロック#341の仮想ページ#
64〜#71に対するユーザデータ及び各種冗長データ
の書き込みが実行される。
【0174】フラッシュシーケンサブロック12による
仮想ブロック#341の仮想ページ#64〜#71に対
する一連の書き込み動作も、図19に示されるタイミン
グで実行され、書き込まれるデータに、ホストアドレス
#0〜#7に対応するユーザデータ及び対応するエラー
コレクションコードが追加される他、上述した仮想ブロ
ック#341の仮想ページ#0〜#7に対する一連の書
き込み動作と同様の動作が行われる。このようにして、
フラッシュシーケンサブロック12による一連の書き込
み動作が完了する。
【0175】かかる一連の書き込み動作においては、連
続するホストアドレス#0〜#7に対応するデータが、
それぞれ異なるバンク#0〜#7に属する異なる物理ブ
ロック内に書き込まれた点が重要である。これら8つの
物理ブロックは、上述のとおり一つの仮想ブロック#3
41を構成し、連続するホストアドレス#0〜#7に対
応するデータは、当該仮想ブロック#341内の連続す
る仮想ページ#64〜#71に書き込まれたことにな
る。
【0176】また、上記の例では、各物理ブロックの先
頭ページである仮想ページ#0〜#7以外のページ(仮
想ページ#64〜#71)にも、仮想ブロックアドレス
やセル番号を書き込んでいるが、これを省略しても構わ
ない。
【0177】また、上記の例では、キュー#0−0〜#
0−7に格納されていた物理アドレスの下位3ビットが
それぞれ「000B(0)」〜「111B(7)」であ
ったことから、連続するホストアドレス#0〜#7に対
応するデータが書き込まれるべき物理ブロックがそれぞ
れ異なるバンク#0〜#7に属していたが、代替処理が
行われている場合には、下位3ビットが同じである物理
アドレスがこれらキューに格納されていることがあり、
この場合には、あるホストアドレスに対応するデータが
書き込まれるべき物理ブロックと、他のホストアドレス
に対応するデータが書き込まれるべき物理ブロックが、
互いに同じバンクに属することになる。したがって、こ
の場合、一つのフラッシュメモリチップに対するフラッ
シュプログラミングを2回に分けて実行する必要があ
る。
【0178】このように、本実施態様によるフラッシュ
メモリシステム1では、「仮想ブロック」という概念を
用い、互いに異なるフラッシュメモリチップに属する複
数のブロックを仮想的に一つのブロックとして取り扱っ
ているので、ホストコンピュータ5から、連続する複数
アドレスに対してデータ書き込み要求がなされた場合
に、複数のデータについて同時にフラッシュプログラミ
ングを実行することができるので、一連のデータ書き込
みに要する時間を大幅に短縮させることが可能となる。
すなわち、一連のデータ書き込み動作のうち、フラッシ
ュプログラミングには比較的長い時間、典型的には約2
00μsec程度が必要とされるところ、本実施態様に
よるフラッシュメモリシステム1によれば、かかるフラ
ッシュプログラミングを複数の物理ページについて同時
に実行可能であることから、一連のデータ書き込みに要
する時間は大幅に短縮される。
【0179】尚、仮想ブロックを構成する物理ブロック
を2つのフラッシュメモリチップから選択している意義
については、以下に詳述するデータの上書き動作の説明
において明らかとなる。
【0180】書き込み動作2(仮想ブロックにデータを
上書きする場合) すでにデータの格納されている仮想ブロック(使用済み
ブロック)にデータを追加して書き込む場合、「ブロッ
ク間転送」が行われる。
【0181】ここで、ブロック間転送について説明す
る。
【0182】上述のとおり、フラッシュメモリチップ2
−0〜2−3を構成するフラッシュメモリセル16は、
これをメモリセル単位にて消去状態から書込状態へ変化
させることはできる一方、これを書込状態から消去状態
へ変化させることは、メモリセル単位で行うことができ
ず、ブロック単位でしか行うことができない。このた
め、ある物理ページにデータを書き込む際には、その物
理ページのユーザ領域25及び冗長領域26を構成する
全てのフラッシュメモリセル16が消去状態となってい
る必要があり、既に何らかのデータが書き込まれている
物理ページ、すなわち、その物理ページのユーザ領域2
5を構成するフラッシュメモリセル16が一つでも書込
状態となっているページに、これと異なるデータを直接
上書きすることはできない。したがって、既にデータの
書き込まれた物理ページに対し、これと異なる新しいデ
ータを書き込むためには、一旦、この物理ページが属す
る物理ブロックを構成するフラッシュメモリセル16を
全て消去状態とし、その後に新しいデータを書き込むと
いう処理が必要となる。
【0183】したがって、ある物理ページに格納された
古いデータに新しいデータを上書きしようとする場合、
この物理ページが属する物理ブロックに含まれる他の物
理ページに格納されたデータが消失するのを防ぐために
は、当該他の物理ページに格納されたデータを、他の物
理ブロックに移動させるという処理が必要となるのであ
る。
【0184】このような上書き処理に伴うデータの移動
が「ブロック間転送」と呼ばれる。尚、本明細書におい
ては、転送元の物理ブロックの物理ブロックアドレスを
「転送元ブロックアドレス」、転送先の物理ブロックの
物理ブロックアドレスを「転送先ブロックアドレス」と
呼ぶ。
【0185】以下、本実施態様にかかるフラッシュメモ
リシステム1によるデータの上書き動作について説明す
る。
【0186】フラッシュメモリシステム1によるデータ
の上書き動作においては、まず、消去済みブロックキュ
ー32を用いることによって、転送先の物理ブロックか
らなる新たな仮想ブロック(転送先仮想ブロック)が生
成される。次に、転送元の物理ブロックからなる仮想ブ
ロック(転送元仮想ブロック)に含まれる仮想ページの
うち、書き込み対象である仮想ページ以前の各仮想ペー
ジに格納されているデータが、転送先仮想ブロックの同
じ仮想ページにブロック間転送される。次に、上書きす
べきデータが転送先仮想ブロックの対応する仮想ページ
に書き込まれ、そして、転送元仮想ブロックに含まれる
仮想ページのうち、書き込み対象である仮想ページ以降
の各仮想ページに格納されているデータが、転送先仮想
ブロックの同じ仮想ページにブロック間転送される。そ
の後、転送元仮想ブロックを構成する各物理ブロックが
ブロック消去されて、一連の処理が完了する。
【0187】かかるブロック間転送においては、原則と
して、転送元仮想ブロックのバンク#0〜#3に格納さ
れていたデータは転送先仮想ブロックのバンク#4〜#
7に転送され、転送元仮想ブロックのバンク#4〜#7
に格納されていたデータは転送先仮想ブロックのバンク
#0〜#3に転送される。つまり、バンクの入れ替えが
行われる。本明細書においては、このようなバンクの入
れ替えを「反転処理」と呼ぶことがある。かかる反転処
理につき、図面を用いて説明する。
【0188】図20は、スロット#0〜#7にそれぞれ
バンク#0〜#7が割り当てられている仮想ブロックA
に対して上書きが発生した場合における反転処理の様子
を模式的に示す図である。
【0189】図20に示されるように、スロット#0〜
#7にそれぞれバンク#0〜#7が割り当てられている
仮想ブロックAに対して上書きが発生し、仮想ブロック
Aに格納されているデータが新たな仮想ブロックBにブ
ロック間転送される場合、転送元仮想ブロックである仮
想ブロックAのバンク#0〜#3に格納されていたデー
タは、転送先仮想ブロックである仮想ブロックBのバン
ク#4〜#7に転送され、仮想ブロックAのバンク#4
〜#7に格納されていたデータは仮想ブロックBのバン
ク#0〜#3に転送される。このため、原則として、各
ブロック間転送はいずれも異なるフラッシュメモリチッ
プ間において実行されることになる。
【0190】以下に詳述するが、ブロック間転送におい
ては、コントローラ3は転送元の物理ブロックから1ペ
ージ分のデータを読み出し、これを転送先の物理ブロッ
クの対応する物理ページに書き込むという処理を連続的
に行う必要があるが、このようにブロック間転送を異な
るフラッシュメモリチップ間において行えば、コントロ
ーラ3は、転送先の物理ブロックがフラッシュプログラ
ミングを実行している間に、次に転送すべきデータを転
送元の物理ブロックから読み出すことができ、一連の処
理をより高速に行うことが可能となる。
【0191】但し、代替処理が行われている結果、仮想
ブロックのスロット#0〜#3を構成する4つの物理ブ
ロックが2つのフラッシュメモリチップに跨って存在し
ている場合においては、同じフラッシュメモリチップ内
においてブロック間転送が行われることがある。この様
子についても図面を用いて説明する。
【0192】図21は、代替処理によりスロット#3に
フラッシュメモリチップ2−1のバンク#6が割り当て
られている仮想ブロックCに対して上書きが発生した場
合における反転処理の様子を模式的に示す図である。
【0193】図21に示されるように、スロット#3に
おいて、他のフラッシュメモリチップに属する物理ブロ
ックが代替使用されている仮想ブロックCに対して上書
きが発生し、仮想ブロックCに格納されているデータが
新たな仮想ブロックDにブロック間転送される場合、ス
ロット#3については、同じフラッシュメモリチップ2
−1内において、ブロック間転送が行われることにな
る。この場合、一連のブロック間転送に要する時間は、
図20に示した場合に比べて若干長くなる。したがっ
て、代替処理が行われている仮想ブロックに対してデー
タの上書きが発生した場合、場合によっては反転処理を
行わない方がより高速に一連のブロック間転送を実行で
きる場合もあり得る。
【0194】この点に着目し、本実施態様においては、
データの上書きが発生した場合、転送元仮想ブロックを
構成する各物理ブロックがいずれのフラッシュメモリチ
ップに属しているかを判断し、これに基づいて、反転処
理を行うか否かを決定している。かかる決定の基準とし
ては特に限定されないが、スロット#0〜#3を構成す
る各物理ブロックのうち、一方のフラッシュメモリチッ
プ(例えば2−0)に属している物理ブロックの数をカ
ウントし、これが3つ以上(3つ又は4つ)であれば、
スロット#0〜#3が他方のフラッシュメモリチップ
(例えば2−1)に割り当てられ、スロット#4〜#7
が上記一方のフラッシュメモリチップに割り当てられる
ようにブロック間転送し、1つ以下(1つ又はゼロ)で
あれば、逆に、スロット#0〜#3が上記一方のフラッ
シュメモリチップに割り当てられ、スロット#4〜#7
が上記他方のフラッシュメモリチップに割り当てられる
ようにブロック間転送すればよい。この場合、一方のフ
ラッシュメモリチップに属している物理ブロックの数が
2つであれば、さらにスロット#4〜#7を構成する各
物理ブロックのうち、上記他方のフラッシュメモリチッ
プに属している物理ブロックの数をカウントし、これが
2つ以上(2つ〜4つ)であれば、スロット#0〜#3
が上記他方のフラッシュメモリチップに割り当てられ、
スロット#4〜#7が上記一方のフラッシュメモリチッ
プに割り当てられるようにブロック間転送し、1つ以下
(1つ又はゼロ)であれば、逆に、スロット#0〜#3
が上記一方のフラッシュメモリチップに割り当てられ、
スロット#4〜#7が上記他方のフラッシュメモリチッ
プに割り当てられるようにブロック間転送すればよい。
【0195】これにより、代替処理が行われていない仮
想ブロックに対してデータの上書きが発生した場合には
常に反転処理が行われ、他のフラッシュメモリチップへ
の所定数以上の代替処理が行われている仮想ブロックに
対してデータの上書きが発生した場合には反転処理が行
われなくなり、より高速なブロック間転送を担保するこ
とが可能となる。
【0196】以下、具体例に基づいてより詳細に説明す
る。
【0197】本具体例においては、ホストコンピュータ
5より、バス14、コネクタ4及びバス13を介して、
外部コマンドの一種である外部書き込みコマンドと、8
つのホストアドレス「110011001100110
01000B」〜「1100110011001100
1111B」と、これら各アドレスに書き込むべきデー
タとがフラッシュメモリシステム1に供給された場合を
例に説明する。ここでは、これら連続するホストアドレ
スを、ホストアドレス#8〜#15と呼ぶ。
【0198】まず、ホストアドレス#8〜#15及び外
部書き込みコマンドがコントローラ3に供給されると、
これらホストアドレス#8〜#15及び外部書き込みコ
マンドは、ホストインターフェースブロック7が有する
タスクファイルレジスタ(図示せず)に一時的に格納さ
れる。さらに、ホストアドレス#8〜#15にそれぞれ
対応する書き込みデータがコントローラ3に供給される
と、マイクロプロセッサ6による制御のもと、これらデ
ータがECCブロック11に送出される。これらデータ
の供給を受けたECCブロック11は、これらデータを
解析してエラーコレクションコードを生成し、これを一
時的に保持する。
【0199】次に、アドレス変換テーブル29を用いた
転送元ブロックアドレス及び転送先ブロックアドレスの
生成が行われる。
【0200】本例では、ホストアドレス#8〜#15が
「11001100110011001000B」〜
「11001100110011001111B」であ
るから、ホストアドレス#8〜#15の上位12ビット
(A)が「110011001100B」を1000で
除した場合の商は「11B(3)」であり、剰余は「0
100010100B(276)」となる。これによ
り、選択されるゾーンはゾーン#3となり、選択される
仮想ブロック表示領域は、対応するテーブル内の仮想ブ
ロック表示領域#276となる。また、ホストアドレス
#8〜#15の下位3ビット(C)がそれぞれ「000
B(0)」〜「111B(7)」であるから、選択され
るセルは、セル#276−0〜セル#276−7とな
る。
【0201】次に、マイクロプロセッサ6による制御の
もと、SRAMワークエリア8に格納されているアドレ
ス変換テーブル29の対応するテーブルから仮想ブロッ
ク表示領域#276が選択され、セル#276−0〜セ
ル#276−7の内容が読み出される。ここで本例は、
データの上書き処理であるから、仮想ブロック#276
にはすでにデータが割り当てられており、このため、対
応する各フラグ#276−0〜#276−7はいずれも
「1」を示しているはずである。
【0202】セル#276−0〜セル#276−7に格
納された内容が読み出されると、マイクロプロセッサ6
による制御のもと、これを用いて転送元ブロックアドレ
スが生成される。
【0203】図22は、転送元ブロックアドレスの生成
方法を示す図である。
【0204】図22に示されるように、転送元ブロック
アドレスの生成においては、マイクロプロセッサ6によ
る制御のもと、ゾーン番号の上位ビット、値D及び読み
出されたセルの内容がこの順に結合され、ホストアドレ
ス#8〜#15にそれぞれ対応する転送元ブロックアド
レス#0〜#7が生成される。ここでは、ゾーン番号の
下位ビットが「1」であるから、値Dとしては、読み出
されたセルの内容の下位3ビット目と逆の値となってい
る。これにより、転送元ブロックアドレス#0〜#7は
それぞれ図22に示す値となる。
【0205】これにより、転送元ブロックアドレス#0
〜#7の生成が完了する。
【0206】転送元ブロックアドレス#0〜#7の生成
が完了すると、マイクロプロセッサ6による制御のも
と、転送先ブロックアドレスが生成される。
【0207】図23は、転送先ブロックアドレスの生成
方法を示す図である。
【0208】転送先ブロックアドレスの生成において
は、まず、マイクロプロセッサ6による制御のもと、転
送元ブロックアドレス#0〜#3の上位2ビット目
(D)が参照され、これがゾーン番号の下位ビット
(1)と一致している転送元ブロックアドレスの数がカ
ウントされる。
【0209】次に、消去済みブロックキュー32を構成
するキューセット#0〜#3のうち、ゾーン#3に対応
するテーブル(例えば、テーブル#1)に対応するキュ
ーセット、例えば、キューセット#2が選択され、かか
るキューセット#2を構成する各キュー#2−0〜#2
−7に格納された内容が読み出される。そして、キュー
#2−0〜#2−7に格納された内容が読み出される
と、マイクロプロセッサ6による制御のもと、ゾーン番
号の上位1ビット、値D及び読み出されたキューの内容
がこの順に結合される。
【0210】この場合、上記カウントされた値が3以上
(3又は4)であれば、キュー#2−0〜#2−3を用
いて生成された内容が転送先ブロックアドレス#4〜#
7とされ、キュー#2−4〜#2−7を用いて生成され
た内容が転送先ブロックアドレス#0〜#3とされる。
一方、上記カウントされた値が1以下(1又は0)であ
れば、キュー#2−0〜#2−3を用いて生成された内
容が転送先ブロックアドレス#0〜#3とされ、キュー
#2−4〜#2−7を用いて生成された内容が転送先ブ
ロックアドレス#4〜#7とされる。
【0211】また、上記カウントされた値が2であれ
ば、マイクロプロセッサ6による制御のもと、転送元ブ
ロックアドレス#4〜#7の上位2ビット目(D)がさ
らに参照され、これがゾーン番号の下位ビット(1)と
一致している転送元ブロックアドレスの数がカウントさ
れる。その結果、上記カウントされた値が2以上(2〜
4)であれば、キュー#2−0〜#2−3を用いて生成
された内容が転送先ブロックアドレス#4〜#7とさ
れ、キュー#2−4〜#2−7を用いて生成された内容
が転送先ブロックアドレス#0〜#3とされる。一方、
上記カウントされた値が1以下(1又は0)であれば、
キュー#2−0〜#2−3を用いて生成された内容が転
送先ブロックアドレス#0〜#3とされ、キュー#2−
4〜#2−7を用いて生成された内容が転送先ブロック
アドレス#4〜#7とされる。
【0212】本例においては、転送元ブロックアドレス
#0〜#3のうち、上位2ビット目(D)がゾーン番号
の下位ビット(1)と一致しているものが4つあること
から、キュー#2−0〜#2−3を用いて生成された内
容が転送先ブロックアドレス#4〜#7とされ、キュー
#2−4〜#2−7を用いて生成された内容が転送先ブ
ロックアドレス#0〜#3とされる。これにより、本例
においては、ホストアドレス#8〜#15にそれぞれ対
応する転送先ブロックアドレス#0〜#7は、それぞれ
図23に示す値となる。
【0213】これにより、転送先ブロックアドレス#0
〜#7の生成が完了する。
【0214】以上の処理が完了すると、次に、マイクロ
プロセッサ6による制御のもと、フラッシュシーケンサ
ブロック12が有するレジスタ(図示せず)に対する設
定がなされる。かかる設定は、次のように行われる。
【0215】まず、マイクロプロセッサ6による制御の
もと、データ転送コマンド、内部書き込みコマンド及び
内部読み出しコマンドがフラッシュシーケンサブロック
12内の所定のレジスタ(図示せず)に設定される。さ
らに、マイクロプロセッサ6による制御のもと、上記生
成された転送元ブロックアドレス#0〜#7及び転送先
ブロックアドレス#0〜#7がフラッシュシーケンサブ
ロック12内の所定のレジスタ(図示せず)に設定され
る。
【0216】このようにしてフラッシュシーケンサブロ
ック12に含まれる各種レジスタ(図示せず)に対する
設定が完了すると、フラッシュシーケンサブロック12
による一連の書き込み動作が実行される。フラッシュシ
ーケンサブロック12による一連の書き込み動作は、次
の通りである。
【0217】まず、フラッシュシーケンサブロック12
は、所定のレジスタに格納された転送元ブロックアドレ
ス#0に「00000B(0)」を付加して20ビット
の転送元内部アドレスを生成する。この場合、転送元内
部アドレスは、「11110100110000000
000B」となる。次に、フラッシュシーケンサブロッ
ク12は、生成された転送元内部アドレスの上位2ビッ
トに基づき、フラッシュメモリチップ2−0〜2−3の
うち、アクセスすべきページが属するフラッシュメモリ
チップに対応するチップ選択信号を活性化するよう、フ
ラッシュメモリインターフェースブロック10に指示す
る。この場合、生成された転送元内部アドレスの上位2
ビットは「11B(3)」であるから、アクセスすべき
ページが属するフラッシュメモリチップは、フラッシュ
メモリチップ2−3であり、チップ選択信号#3が活性
化される。これにより、フラッシュメモリチップ2−3
は、データの読み出しが可能な状態となる。一方、チッ
プ選択信号#0〜#2は、非活性状態が保たれる。
【0218】次に、フラッシュシーケンサブロック12
は、転送元内部アドレスの下位18ビット「11010
0110000000000B」を、所定のレジスタに
格納された内部読み出しコマンドとともにバス15に供
給するよう、フラッシュメモリインターフェースブロッ
ク10に指示する。
【0219】これにより、フラッシュメモリチップ2−
3は、供給された転送元内部アドレスの下位18ビット
「110100110000000000B」に格納さ
れたデータの読み出しを実行する。すなわち、フラッシ
ュメモリチップ2−3は、物理ブロック#6752の物
理ページ#0に格納されたデータの読み出しを実行す
る。尚、フラッシュメモリチップ2−3の物理ブロック
#6752の物理ページ#0は、仮想ブロック#276
の仮想ページ#0に対応する。
【0220】このようにしてフラッシュメモリチップ2
−0から読み出されたデータは、バス15を介してフラ
ッシュメモリインターフェースブロック10に供給され
る。フラッシュメモリインターフェースブロック10が
ユーザデータを受け取ると、これがバッファ9に一時的
に格納されるとともに、ECCブロック11に送出さ
れ、新たにエラーコレクションコードの生成が行われ
る。ECCブロック11にて新たに生成されたエラーコ
レクションコードは、ECCブロック11内に一時的に
保持される。
【0221】このような読み出し動作が、転送元ブロッ
クアドレス#1〜#3に「00000B(0)」が付加
されることによって次々と実行され、その結果、仮想ブ
ロック#276の仮想ページ#1〜#3に格納されてい
るデータも読み出される。
【0222】次に、バッファ9に一時的に格納されたデ
ータの書き込み動作が行われる。
【0223】まず、フラッシュシーケンサブロック12
は、所定のレジスタに格納された転送先ブロックアドレ
ス#0に「00000B(0)」を付加して20ビット
の転送先内部アドレスを生成する。この場合、転送先内
部アドレスは、「10100101101010000
000B」となる。
【0224】次に、フラッシュシーケンサブロック12
は、生成された転送先内部アドレスの上位2ビットに基
づき、フラッシュメモリチップ2−0〜2−3のうち、
アクセスすべきページが属するフラッシュメモリチップ
に対応するチップ選択信号を活性化するよう、フラッシ
ュメモリインターフェースブロック10に指示する。こ
の場合、転送先内部アドレスの上位2ビットは「10B
(2)」であるから、アクセスすべきページが属するフ
ラッシュメモリチップは、フラッシュメモリチップ2−
2であり、チップ選択信号#2が活性化される。これに
より、フラッシュメモリチップ2−2は、データの書き
込みが可能な状態となる。
【0225】次に、フラッシュシーケンサブロック12
は、転送先内部アドレスの下位18ビットを、所定のレ
ジスタ(図示せず)に格納されたデータ転送コマンドと
ともにバス15に供給するよう、フラッシュメモリイン
ターフェースブロック10に指示する。バス15に供給
された書き込みアドレス及びデータ転送コマンドは、フ
ラッシュメモリチップ2−0〜2−3に対し共通に供給
されるが、上述のとおり、チップ選択信号#2が活性状
態となっており、チップ選択信号#0、#1、#3は非
活性状態となっているので、バス15に供給された転送
先内部アドレス及びデータ転送コマンドは、フラッシュ
メモリチップ2−2に対してのみ有効となる(転送先指
定)。
【0226】次に、バッファ9に格納されているデータ
のうち、転送元ブロックアドレス#0を用いて読み出さ
れたデータ及び対応するエラーコレクションコード等の
冗長領域26に格納すべき付加情報が、フラッシュシー
ケンサブロック12により、フラッシュメモリインター
フェースブロック10を介して、バス15に供給され
る。バス15に供給されたデータ及びエラーコレクショ
ンコード等の付加情報も、やはりフラッシュメモリチッ
プ2−0〜2−3に対し共通に供給されるが、上述のと
おり、チップ選択信号#2が活性状態となっているた
め、フラッシュメモリチップ2−2に対してのみ有効と
なる(データ転送)。フラッシュメモリチップ2−2に
転送されたデータ及びエラーコレクションコード等の付
加情報は、転送先ブロックアドレス#0の下位3ビット
に基づいて特定されるレジスタに一時的に格納される。
この場合、転送先ブロックアドレス#0の下位3ビット
は「100B(4)」であるから、対応するレジスタは
レジスタ#4となる。
【0227】このようなデータ転送動作が、転送先ブロ
ックアドレス#1〜#3に「00000B(0)」が付
加されることによって次々と実行され、転送元ブロック
アドレス#1〜#3を用いて読み出されたデータ等がフ
ラッシュメモリチップ2−2内に備えられたレジスタ#
5〜#7にそれぞれ一時的に格納される。
【0228】次に、フラッシュシーケンサブロック12
は、所定のレジスタ(図示せず)に格納された内部書き
込みコマンドを、フラッシュメモリチップ2−2に対し
て発行する(書き込み命令)。
【0229】これに応答して、フラッシュメモリチップ
2−2は、レジスタ#4〜#7に格納されているデータ
及びエラーコレクションコード等の付加情報を、転送先
指定処理によって指定されたアドレスに書き込む(フラ
ッシュプログラミング)。かかるフラッシュプログラミ
ングが終了すると、仮想ページ#0〜#3についての転
送処理が完了する。
【0230】ここで、フラッシュメモリチップ2−2が
フラッシュプログラミングを実行している間、フラッシ
ュシーケンサブロック12は、転送元ブロックアドレス
#0〜#3に「00001B(1)」を付加して20ビ
ットの転送元内部アドレスを生成し、これを用いてフラ
ッシュメモリチップ2−3からのデータの読み出しを行
う。これにより、仮想ブロック#276の仮想ページ#
8〜#11に格納されているデータが読み出される。
【0231】そして、フラッシュメモリチップ2−2の
上記フラッシュプログラミングが完了した時点で、フラ
ッシュシーケンサブロック12は、転送先ブロックアド
レス#0〜#3に「00001B(1)」を付加して2
0ビットの転送先内部アドレスを生成し、これを用いて
フラッシュメモリチップ2−2へのデータの書き込みを
行う。すなわち、仮想ブロック#276の仮想ページ#
8〜#11に対応するデータの書き込みが行われる。
【0232】このようなデータの転送動作は、転送元ブ
ロックアドレス及び転送先ブロックアドレス#0〜#3
に付加する5ビットの値をインクリメントすることによ
って、次々と行われる。すなわち、転送元ブロックアド
レス及び転送先ブロックアドレスに付加される5ビット
の値が「000010(2)」であれば、転送元の仮想
ブロックの仮想ページ#16〜#19から転送先の仮想
ブロックの仮想ページ#16〜#19へのデータの転送
が行われ、「00011(3)」であれば、転送元の仮
想ブロックの仮想ページ#24〜#27から転送先の仮
想ブロックの仮想ページ#24〜#27へのデータの転
送が行われることになる。
【0233】このような転送動作は、付加される5ビッ
トの値が、ホストアドレスの上位13ビット目〜上位1
7ビット目からなる5ビット(B)である「11001
B(25)」に一致するまで連続的に行われる。すなわ
ち、付加される5ビットがインクリメントされた結果、
これが「11001B(25)」となり、ホストアドレ
スの上位13ビット目〜上位17ビット目からなる5ビ
ット(B)に一致すると、一旦、上述した転送動作が中
断される。
【0234】付加される5ビットがホストアドレスの上
位13ビット目〜上位17ビット目からなる5ビット
(B)に一致すると、フラッシュシーケンサブロック1
2は、かかる5ビット「11001B(25)」を用い
たデータの読み出しを行わず、これを転送先ブロックア
ドレス#0〜#3にそれぞれ付加して、新たな転送先内
部アドレスを生成する。例えば、転送先ブロックアドレ
ス#0に「11001B(25)」が付加されて生成さ
れた転送先内部アドレスは、「10100101101
010011001B」である。
【0235】次に、フラッシュシーケンサブロック12
は、生成された転送先内部アドレスの上位2ビットに基
づいてチップ選択信号#2を活性化しつつ、転送先内部
アドレスの下位18ビットを、データ転送コマンドとと
もにバス15に供給するよう、フラッシュメモリインタ
ーフェースブロック10に指示する(転送先指定)。
【0236】次に、ホストアドレス#8に対応する書き
込みデータ及び対応するエラーコレクションコード等の
付加情報が、フラッシュシーケンサブロック12によ
り、フラッシュメモリインターフェースブロック10を
介して、バス15に供給される。このとき、チップ選択
信号#2が活性状態となっているため、フラッシュメモ
リチップ2−2に転送されたデータ及びエラーコレクシ
ョンコードは、フラッシュメモリチップ2−2内に備え
られたレジスタ#4に一時的に格納される(データ転
送)。
【0237】このようなデータ転送動作が、転送先ブロ
ックアドレス#1〜#3に「11001B(25)」が
付加されることによって次々と実行され、ホストアドレ
ス#9〜#11に対応する書き込みデータ等がフラッシ
ュメモリチップ2−2内に備えられたレジスタ#5〜#
7にそれぞれ一時的に格納される。
【0238】次に、フラッシュシーケンサブロック12
は、所定のレジスタ(図示せず)に格納された内部書き
込みコマンドを、フラッシュメモリチップ2−2に対し
て発行する(書き込み命令)。
【0239】これに応答して、フラッシュメモリチップ
2−2は、レジスタ#4〜#7に格納されているデータ
及びエラーコレクションコード等の付加情報を、転送先
指定処理によって指定されたアドレスに書き込む(フラ
ッシュプログラミング)。かかるフラッシュプログラミ
ングが終了すると、ホストアドレス#8〜#11に対応
する書き込みデータが、転送先の仮想ブロックの仮想ペ
ージ#200〜#203にそれぞれ書き込まれることに
なる。
【0240】フラッシュメモリチップ2−2がフラッシ
ュプログラミングを実行している間、フラッシュシーケ
ンサブロック12は、再び、転送元ブロックアドレス及
び転送先ブロックアドレスに付加する5ビットをインク
リメントし、新しい転送元内部アドレス及び転送先内部
アドレスを用いたデータの転送を再開する。かかる転送
動作は、付加される5ビットが「11111(31)」
である場合のデータ転送が完了するまで連続的に行われ
る。これにより、一連のデータ転送動作のうち、フラッ
シュメモリチップ2−3からフラッシュメモリチップ2
−2へ転送動作と、ホストアドレス#8〜#11に対応
するデータの書き込みが完了する。
【0241】その後、同様にして、転送元ブロックアド
レス#4〜#7及び転送先ブロックアドレス#4〜#7
を用いた転送動作が行われ、これにより、一連のデータ
転送動作のうち、フラッシュメモリチップ2−2からフ
ラッシュメモリチップ2−3へ転送動作と、ホストアド
レス#12〜#15に対応するデータの書き込みが完了
する。
【0242】また、マイクロプロセッサ6は、上記ブロ
ック間転送が行われたことに応答して、アドレス変換テ
ーブル29の内容を更新する。具体的には、キュー#2
−4〜#2−7の内容を仮想ブロック表示領域#276
を構成するセル#276−0〜#276−3にコピー
し、キュー#2−0〜#2−3の内容をセル#276−
4〜#276−7にコピーする。さらに、マイクロプロ
セッサ6は、上述のデータ書き込みによって、消去済み
ブロックキュー32のキューセット#2に格納された物
理ブロックアドレスが、消去済みブロックの物理アドレ
スではなくなったことに応答して、新たな消去済みブロ
ックを冗長ブロックの中から選択し、選択された消去済
みブロックの物理ブロックアドレスを新たにキュー#2
−0〜#2−7に格納する。
【0243】尚、転送元の各物理ブロックは、いずれも
ブロック消去され、これによって新たな消去済みブロッ
クとなる。かかるブロック消去においても、転送元の各
物理ブロックがそれぞれ異なるフラッシュメモリチップ
に属していることから、これらブロックに対するブロッ
ク消去動作を並列に実行することができる。
【0244】以上により、一連のブロック間転送動作が
完了する。
【0245】このように、本実施態様においては、ブロ
ック間転送が原則として異なるフラッシュメモリチップ
間において行われることから、転送先となるフラッシュ
メモリチップがフラッシュプログラミングを実行してい
る間に、転送元となるフラッシュメモリチップに対し
て、次にフラッシュプログラミングすべきデータの読み
出しを実行することができるので、一連のブロック間転
送を高速に行うことが可能となる。
【0246】以上説明したように、本実施態様によるフ
ラッシュメモリシステム1では、「仮想ブロック」とい
う概念を用い、原則として互いに異なるバンクに属する
複数のブロックを仮想的に一つのブロックとして取り扱
っているので、ホストコンピュータ5から、連続する複
数アドレスに対してデータ書き込み要求がなされた場
合、複数のデータについて並列にフラッシュプログラミ
ングを実行することができ、これにより一連のデータ書
き込みに要する時間を大幅に短縮させることが可能とな
る。
【0247】しかも、本実施態様にかかるフラッシュメ
モリシステム1においては、あるフラッシュメモリチッ
プ内において原則的に互いに異なるバンクに属する複数
の物理ブロックと、他のフラッシュメモリチップ内にお
いて原則的に互いに異なるバンクに属する複数の物理ブ
ロックとを仮想的に結合させることによって仮想ブロッ
クを構成していることから、データの上書きが発生した
場合に必要となるブロック間転送処理をより高速に行う
ことが可能となる。
【0248】本発明は、以上の実施態様に限定されるこ
となく、特許請求の範囲に記載された発明の範囲内で種
々の変更が可能であり、それらも本発明の範囲内に包含
されるものであることはいうまでもない。
【0249】例えば、上記実施態様にかかるフラッシュ
メモリシステム1においては、それぞれ異なるバンクに
属する8個のブロックを仮想的に結合させることによっ
て、8個のセルからなる仮想ブロックを構成している
が、仮想ブロックを構成するセルの数は8個に限定され
ず、他の数、例えば4個や16個であってもよい。
【0250】また、上記実施態様にかかるフラッシュメ
モリシステム1においては、2つのフラッシュメモリチ
ップの属する物理ブロックを仮想的に結合させることに
よって仮想ブロックを構成しているが、仮想ブロックを
構成する物理ブロックを3以上のフラッシュメモリチッ
プから選択しても構わない。
【0251】また、上記実施態様にかかるフラッシュメ
モリシステム1においては、図7乃至図10を用いて説
明したように、フラッシュメモリチップ2−0のバンク
#0〜#3に属する物理ブロック及びフラッシュメモリ
チップ2−1のバンク#4〜#7に属する物理ブロック
によってゾーン#0が構成され、フラッシュメモリチッ
プ2−1のバンク#0〜#3に属する物理ブロック及び
フラッシュメモリチップ2−0のバンク#4〜#7に属
する物理ブロックによってゾーン#1が構成され、フラ
ッシュメモリチップ2−2のバンク#0〜#3に属する
物理ブロック及びフラッシュメモリチップ2−3のバン
ク#4〜#7に属する物理ブロックによってゾーン#2
が構成され、フラッシュメモリチップ2−3のバンク#
0〜#3に属する物理ブロック及びフラッシュメモリチ
ップ2−2のバンク#4〜#7に属する物理ブロックに
よってゾーン#3が構成されている。しかしながら、ゾ
ーン構成としてはこれに限定されず、例えば、図24に
示すように、フラッシュメモリチップ2−0のバンク#
0〜#3に属する物理ブロック及びフラッシュメモリチ
ップ2−1のバンク#4〜#7に属する物理ブロックに
よってゾーン#0を構成し、フラッシュメモリチップ2
−1のバンク#0〜#3に属する物理ブロック及びフラ
ッシュメモリチップ2−2のバンク#4〜#7に属する
物理ブロックによってゾーン#1を構成し、フラッシュ
メモリチップ2−2のバンク#0〜#3に属する物理ブ
ロック及びフラッシュメモリチップ2−3のバンク#4
〜#7に属する物理ブロックによってゾーン#2を構成
し、フラッシュメモリチップ2−3のバンク#0〜#3
に属する物理ブロック及びフラッシュメモリチップ2−
0のバンク#4〜#7に属する物理ブロックによってゾ
ーン#3を構成しても構わない。このように、各ゾーン
を構成するフラッシュメモリチップの組み合わせを互い
に異ならせれば、使用するフラッシュメモリチップの数
が奇数個である場合においても、複数のフラッシュメモ
リチップより選ばれた物理ブロックによって仮想ブロッ
クを構成することが可能となる。
【0252】さらに、上記実施態様にかかるフラッシュ
メモリシステム1においては、データの上書きが発生し
た場合、より高速にブロック間転送を行うべく、スロッ
ト#0〜#3(場合によっては、スロット#0〜#7)
に対応する物理ブロックがいずれのフラッシュメモリチ
ップに属しているかを判断し、その結果に基づいて反転
処理を行うか否かを決定しているが、このような判断を
行うことなく、データの上書きが発生する度に、必ず反
転処理が行われるよう構成しても構わない。この場合、
アドレス変換テーブル29の各仮想ブロック表示領域に
対応する1ビットのフラグを付加し、これが「0」を示
している場合には、消去済みブロックキュー32のキュ
ー#k−0〜#k−3より生成された転送先ブロックア
ドレスをスロット#0〜#3に割り当てるとともに、キ
ュー#k−4〜#k−7より生成された転送先ブロック
アドレスをスロット#4〜#7に割り当て、「1」を示
している場合には、キュー#k−0〜#k−3より生成
された転送先ブロックアドレスをスロット#4〜#7に
割り当てるとともに、キュー#k−4〜#k−7より生
成された転送先ブロックアドレスをスロット#0〜#3
に割り当てて、ブロック間転送の度にかかるフラグを反
転させればよい。これにより、代替処理が行われていな
ければ、常に、異なるフラッシュメモリチップ間でブロ
ック間転送が行われることになる。この方法によれば、
極めて簡単に反転処理を行うことが可能となる。
【0253】また、上記実施態様にかかるフラッシュメ
モリシステム1においては、データの上書き処理を行う
際に、転送元の仮想ブロックを構成する8つの物理ブロ
ックのうち、4つの物理ブロックからそれぞれ1ページ
分のデータを読み出してこれら4ページ分のデータを一
時的に保持し、これら4ページ分のデータを転送先の仮
想ブロックを構成する8つの物理ブロックのうち、4つ
の物理ブロックへそれぞれ書き込んでいるが、一時的に
保持すべきデータは、4ページ分のデータに限定され
ず、1ページ分のデータであってもよいし、2ページ分
のデータであってもよい。このように一時的に保持すべ
きデータの数が、仮想ブロックを構成するセルの数を下
回る場合には、バッファ9に必要とされる記憶容量を低
減することができる一方、転送効率が低下するため、一
連の処理に要する時間は長くなる。
【0254】また、上記実施態様にかかるフラッシュメ
モリシステム1はカード形状であり、4個のフラッシュ
メモリチップ2−0〜2−3とコントローラ3とが、一
つのカード内に集積されて構成されているが、本発明に
かかるフラッシュメモリシステムがカード形状に限定さ
れることはなく、他の形状、例えばスティック状であっ
てもよい。
【0255】さらに、上記実施態様にかかるフラッシュ
メモリシステム1においては、4個のフラッシュメモリ
チップ2−0〜2−3とコントローラ3とが、一つのカ
ード内に集積されて構成されているが、フラッシュメモ
リチップ2−0〜2−3とコントローラ3とが、同一筐
体に集積されている必要はなく、それぞれ別個の筐体に
パッケージングされてもよい。この場合、フラッシュメ
モリチップ2−0〜2−3がパッケージングされた筐体
及びコントローラ3がパッケージングされた筐体には、
それぞれ他方との電気的及び機械的接続を実現するため
のコネクタが必要とされ、かかるコネクタによって、フ
ラッシュメモリチップ2−0〜2−3がパッケージング
された筐体が、コントローラ3がパッケージングされた
筐体に着脱可能に構成される。さらに、フラッシュメモ
リチップ2−0〜2−3についても、これらが同一筐体
に集積されている必要はなく、それぞれ別個の筐体にパ
ッケージングされてもよい。
【0256】また、上記実施態様にかかるフラッシュメ
モリシステム1においては、各フラッシュメモリチップ
2−0〜2−3として、それぞれ128Mバイト(1G
ビット)の記憶容量を有する半導体チップを用いている
が、各フラッシュメモリチップ2−0〜2−3の記憶容
量は128Mバイト(1Gビット)に限定されず、これ
とは異なる容量、例えば32Mバイト(256Mビッ
ト)であってもよい。
【0257】さらに、上記実施態様にかかるフラッシュ
メモリシステム1においては、512バイトを1ページ
とし、これを最小アクセス単位としているが、最小アク
セス単位としては512バイトに限定されず、これとは
異なる容量であってもよい。
【0258】また、上記実施態様にかかるフラッシュメ
モリシステム1においては、フラッシュメモリチップ2
−0〜2−3を構成する各フラッシュメモリセル16
が、1ビットのデータを保持しているが、フローティン
グゲート電極21に注入すべき電子の量を複数段階に制
御することによって、2ビット以上のデータを保持可能
に構成してもよい。
【0259】さらに、上記実施態様にかかるフラッシュ
メモリシステム1においては、各ブロックを32個のペ
ージによって構成しているが、各ブロックを構成するペ
ージ数は32個には限定されず、他の数、例えば、16
個や64個であってもよい。
【0260】また、上記実施態様にかかるフラッシュメ
モリシステム1においては、消去済みブロックキュー3
2が4つのキューセット#0〜#3によって構成されて
いるが、消去済みブロックキュー32を構成するキュー
セットの数としては4組に限定されず、他の数、例え
ば、2組や8組であってもよい。
【0261】また、上記実施態様にかかるフラッシュメ
モリシステム1においては、フラッシュメモリチップ2
−0〜2−3からなる物理ブロック空間を4個のゾーン
に分割しているが、ゾーン数は4個には限定されず、他
の数、例えば、2個や8個であってもよい。すなわち、
物理ブロック空間を分割するゾーン数は、少なければ少
ないほど、アドレス変換テーブル29の更新頻度が低く
なりアクセス速度の低下が防止されるという利点がある
一方、各テーブルが大型化し、SRAMワークエリア8
に必要とされる記憶容量が増大するという欠点があり、
多ければ多いほど、各テーブルが小型化されSRAMワ
ークエリア8に必要とされる記憶容量を低減することが
できるという利点がある一方、アドレス変換テーブル2
9の更新頻度が高くなりアクセス速度が低下するという
欠点がある。したがって、物理ブロック空間の分割数
(ゾーン数)は、要求されるアクセス速度及びSRAM
ワークエリア8の記憶容量に基づいて決定すればよい。
【0262】また、上記実施態様にかかるフラッシュメ
モリシステム1においては、アドレス変換テーブル29
をテーブル#0、#1からなる2つのテーブルによって
構成しているが、アドレス変換テーブル29を構成する
テーブルの数は2つには限定されず、他の数、例えば、
1つや3つであってもよい。すなわち、アドレス変換テ
ーブル29を構成するテーブルの数は、少なければ少な
いほどSRAMワークエリア8に必要とされる記憶容量
を低減することができるという利点がある一方、アドレ
ス変換テーブル29の更新頻度が高くなりアクセス速度
が低下するという欠点があり、アドレス変換テーブル2
9を構成するテーブル数は、多ければ多いほどアドレス
変換テーブル29の更新頻度が低くなりアクセス速度の
低下が防止されるという利点がある一方、SRAMワー
クエリア8に必要とされる記憶容量が増大するという欠
点がある。したがって、アドレス変換テーブル29を構
成するテーブルの数は、要求されるアクセス速度及びS
RAMワークエリア8の記憶容量に基づいて決定すれば
よい。
【0263】さらに、上記実施態様にかかるフラッシュ
メモリシステム1においては、フラッシュメモリチップ
2としてNAND型のフラッシュメモリチップを用いて
いるが、本発明により制御可能なフラッシュメモリがN
AND型に限定されるものではなく、他の種類、例え
ば、AND型のフラッシュメモリを制御することも可能
である。
【0264】さらに、本発明において、手段とは、必ず
しも物理的手段を意味するものではなく、各手段の機能
がソフトウエアによって実現される場合も包含する。さ
らに、一つの手段の機能が二以上の物理的手段により実
現されても、二以上の手段の機能が一つの物理的手段に
より実現されてもよい。
【0265】尚、本発明は、PCMCIA(Perso
nal Computer Memory Card
International Associatio
n)が発表した統一規格に基づくPCカードとして実現
することが可能である。さらに、近年、半導体素子の高
集積化技術の発展に伴い、より小型化された小型メモリ
カード、例えば、CFA(CompactFlash
Association)が提唱する「Compact
Flash」や、MultiMediaCardAss
ociationの提唱する「MMC(MultiMe
diaCard)」、ソニー株式会社が提唱する「メモ
リースティック」、松下電器産業株式会社等が提唱する
「SDメモリーカード」などに本発明を適用することが
可能である。
【0266】
【発明の効果】以上説明したように、本発明によれば、
フラッシュメモリに対する一連のデータ書き込み処理を
より高速に行うことができるメモリコントローラ、フラ
ッシュメモリシステム及びフラッシュメモリの制御方法
を提供することができる。
【図面の簡単な説明】
【図1】本発明の好ましい実施態様にかかるフラッシュ
メモリシステム1を概略的に示すブロック図である。
【図2】フラッシュメモリチップ2−0〜2−3を構成
する各フラッシュメモリセル16の構造を概略的に示す
断面図である。
【図3】書込状態であるフラッシュメモリセル16を概
略的に示す断面図である。
【図4】フラッシュメモリチップ2−0のアドレス空間
の構造を概略的に示す図である。
【図5】フラッシュメモリチップ2−0のバンク構造を
概略的に示す図である。
【図6】冗長領域26のデータ構造を概略的に示す図で
ある。
【図7】ゾーン#0の構成を示す図である。
【図8】ゾーン#1の構成を示す図である。
【図9】ゾーン#2の構成を示す図である。
【図10】ゾーン#3の構成を示す図である。
【図11】ゾーン#0における代替処理が行われていな
い仮想ブロックのマッピングの一例を示す図である。
【図12】ゾーン#0において代替処理が行われている
仮想ブロックのマッピングの一例を示す図である。
【図13】図11に示された仮想ブロックの仮想ページ
構造を示す図である。
【図14】あるゾーンを構成する1000個の仮想ブロ
ックと、これら各仮想ブロックを構成する8つの物理ブ
ロックとの関係を示すアドレス変換テーブル29のデー
タ構造を示す概略図である。
【図15】SRAMワークエリア8に格納される管理テ
ーブル30のデータ構造を示す概略図である。
【図16】SRAMワークエリア8に格納される消去済
みブロックキュー32のデータ構造を示す概略図であ
る。
【図17】データ読み出し動作時における、アドレス変
換テーブル29を用いた内部アドレスへの変換方法を説
明するための図である。
【図18】データ書き込み動作時における、アドレス変
換テーブル29を用いた内部アドレスへの変換方法を説
明するための図である。
【図19】フラッシュシーケンサブロック12による一
連の書き込み動作のタイミングを概略的に示すタイミン
グ図である。
【図20】スロット#0〜#7にそれぞれバンク#0〜
#7が割り当てられている仮想ブロックAに対して上書
きが発生した場合における反転処理の様子を模式的に示
す図である。
【図21】代替処理によりスロット#3にフラッシュメ
モリチップ2−1のバンク#6が割り当てられている仮
想ブロックCに対して上書きが発生した場合における反
転処理の様子を模式的に示す図である。
【図22】転送元ブロックアドレスの生成方法を示す図
である。
【図23】転送先ブロックアドレスの生成方法を示す図
である。
【図24】ゾーン構成の他の例を示す図である。
【符号の説明】
1 フラッシュメモリシステム 2−0〜2−3 フラッシュメモリチップ 3 コントローラ 4 コネクタ 5 ホストコンピュータ 6 マイクロプロセッサ 7 ホストインターフェースブロック 8 SRAMワークエリア 9 バッファ 10 フラッシュメモリインターフェースブロック 11 ECCブロック 12 フラッシュシーケンサブロック 13〜15 バス 16 フラッシュメモリセル 17 P型半導体基板 18 ソース拡散領域 19 ドレイン拡散領域 20 トンネル酸化膜 21 フローティングゲート電極 22 絶縁膜 23 コントロールゲート電極 24 チャネル 25 ユーザ領域 26 冗長領域 27 エラーコレクションコード格納領域 28 仮想ブロックアドレス格納領域 29 アドレス変換テーブル 30 管理テーブル 32 消去済みブロックキュー
───────────────────────────────────────────────────── フロントページの続き Fターム(参考) 5B025 AA03 AB01 AC01 AD00 AD01 AD04 AE05 5B060 AB26 HA01 HA05 MM09

Claims (12)

    【特許請求の範囲】
  1. 【請求項1】 ホストコンピュータより供給されるホス
    トアドレスに基づいて、それぞれ複数の物理ブロックか
    らなる複数のメモリにアクセスするメモリコントローラ
    であって、前記各メモリに含まれる物理ブロックを複数
    のグループに分類する手段と、所定のメモリ内の一部の
    グループに属する複数の物理ブロックであって互いに異
    なるグループに属する複数の物理ブロック及び前記所定
    のメモリとは異なるメモリ内の一部のグループに属する
    複数の物理ブロックであって互いに異なるグループに属
    する複数の物理ブロックを仮想的に結合することにより
    複数の仮想ブロックを形成する手段と、隣り合うホスト
    アドレスを前記仮想ブロック内において互いに異なる物
    理ブロックに割り当てる手段とを備えるメモリコントロ
    ーラ。
  2. 【請求項2】 前記一部のグループの数が、各メモリに
    含まれるグループの数の半分であることを特徴とする請
    求項1に記載のメモリコントローラ。
  3. 【請求項3】 複数の連続するホストアドレスに基づく
    データの書き込みが前記ホストコンピュータから要求さ
    れたことに応答して、前記連続するホストアドレスがそ
    れぞれ割り当てられた複数のブロックであって互いに前
    記仮想ブロックを構成する複数のブロックをそれぞれ含
    むメモリへ連続的に前記データを転送する手段と、前記
    転送したデータを前記各ブロックに書き込むよう前記メ
    モリに対して実質的に同時に指示する手段とをさらに備
    えることを特徴とする請求項1または2に記載のメモリ
    コントローラ。
  4. 【請求項4】 前記ホストコンピュータよりデータの上
    書きが要求されたことに応答して、上書き対象となる仮
    想ブロックを構成する各物理ブロックに格納されている
    データを、それぞれ異なるメモリに属する物理ブロック
    にブロック間転送することを特徴とする請求項1乃至3
    のいずれか1項に記載のメモリコントローラ。
  5. 【請求項5】 少なくとも一つのグループに含まれる不
    良物理ブロックの数が所定数を超えている場合には、当
    該グループより選ばれるべき物理ブロックを他のグルー
    プに属する物理ブロックによって代替することにより前
    記仮想ブロックを形成する手段をさらに備えることを特
    徴とする請求項1乃至4のいずれか1項に記載のメモリ
    コントローラ。
  6. 【請求項6】 前記ホストコンピュータよりデータの上
    書きが要求されたことに応答して、上書き対象となる仮
    想ブロックを構成する少なくとも一部の物理ブロックに
    ついて、いずれのメモリに属しているかを判断する手段
    をさらに備えることを特徴とする請求項5に記載のメモ
    リコントローラ。
  7. 【請求項7】 ホストコンピュータより供給されるホス
    トアドレスを内部アドレスに変換し、前記内部アドレス
    に基づいてそれぞれ複数の物理ブロックからなる複数の
    メモリにアクセスするメモリコントローラであって、第
    1のホストアドレスを所定のメモリに属する第1の物理
    ブロックに対応する内部アドレスに変換し、前記第1の
    ホストアドレスに続く第2のホストアドレスを前記所定
    のメモリに属する第2の物理ブロックに対応する内部ア
    ドレスに変換し、前記第2のホストアドレスに続く第3
    のホストアドレスを前記所定のメモリとは異なるメモリ
    に属する第3の物理ブロックに対応する内部アドレスに
    変換することを特徴とするメモリコントローラ。
  8. 【請求項8】 前記第1及び第2の物理ブロックが、同
    一のメモリチップ内の互いに異なるバンクに属すること
    を特徴とする請求項7に記載のメモリコントローラ。
  9. 【請求項9】 それぞれ複数の物理ブロックからなる複
    数のフラッシュメモリと、ホストコンピュータより供給
    されるホストアドレスに基づいて前記フラッシュメモリ
    にアクセスするメモリコントローラとを備え、前記コン
    トローラが、前記各物理ブロックを複数のグループに分
    類する手段と、所定のフラッシュメモリ内の一部のグル
    ープに属する複数の物理ブロックであって互いに異なる
    グループに属する複数の物理ブロック及び前記所定のフ
    ラッシュメモリとは異なるフラッシュメモリ内の一部の
    グループに属する複数の物理ブロックであって互いに異
    なるグループに属する複数の物理ブロックを仮想的に結
    合することにより複数の仮想ブロックを形成する手段
    と、隣り合うホストアドレスを前記仮想ブロック内にお
    いて互いに異なる物理ブロックに割り当てる手段と備え
    ることを特徴とするフラッシュメモリシステム。
  10. 【請求項10】 前記各フラッシュメモリには、各グル
    ープごとに、書き込むべきデータを一時的に格納する複
    数のレジスタが備えられていることを特徴とする請求項
    9に記載のフラッシュメモリシステム。
  11. 【請求項11】 前記各物理ブロックがユーザ領域と冗
    長領域とを備え、前記冗長領域には、自己が構成する仮
    想ブロックを特定する情報が記録されていることを特徴
    とする請求項9または10に記載のフラッシュメモリシ
    ステム。
  12. 【請求項12】 それぞれ複数の物理ブロックを有する
    複数のフラッシュメモリの制御方法であって、前記各物
    理ブロックに含まれる冗長領域に仮想ブロックアドレス
    を書き込むステップと、所定のフラッシュメモリに属
    し、同じ仮想ブロックアドレスが書き込まれた複数の物
    理ブロック及び前記所定のフラッシュメモリとは異なる
    フラッシュメモリに属し、同じ仮想ブロックアドレスが
    書き込まれた複数の物理ブロックを仮想的に結合するこ
    とにより仮想ブロックを形成するステップと、連続する
    ホストアドレスを、前記仮想ブロック内において、互い
    に異なる物理ブロックにそれぞれ割り当てるステップと
    を備えるフラッシュメモリの制御方法。
JP2001315502A 2001-10-12 2001-10-12 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法 Withdrawn JP2003122630A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001315502A JP2003122630A (ja) 2001-10-12 2001-10-12 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001315502A JP2003122630A (ja) 2001-10-12 2001-10-12 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法

Publications (1)

Publication Number Publication Date
JP2003122630A true JP2003122630A (ja) 2003-04-25

Family

ID=19133658

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001315502A Withdrawn JP2003122630A (ja) 2001-10-12 2001-10-12 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法

Country Status (1)

Country Link
JP (1) JP2003122630A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AT504298B1 (de) * 2006-09-22 2008-09-15 Siemens Ag Oesterreich Verfahren zur zuordnung einer auswahl digitaler inhalte zu einem bestimmten benutzer
US7890732B2 (en) 2004-02-04 2011-02-15 Kabushiki Kaisha Toshiba Memory card and semiconductor device
US7987315B2 (en) 2006-02-03 2011-07-26 Samsung Electronics Co., Ltd. Data storage apparatus with block reclaim for nonvolatile buffer
US9268685B2 (en) 2013-03-22 2016-02-23 Kabushiki Kaisha Toshiba Memory system and constructing method of virtual block

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7890732B2 (en) 2004-02-04 2011-02-15 Kabushiki Kaisha Toshiba Memory card and semiconductor device
US7987315B2 (en) 2006-02-03 2011-07-26 Samsung Electronics Co., Ltd. Data storage apparatus with block reclaim for nonvolatile buffer
AT504298B1 (de) * 2006-09-22 2008-09-15 Siemens Ag Oesterreich Verfahren zur zuordnung einer auswahl digitaler inhalte zu einem bestimmten benutzer
US9268685B2 (en) 2013-03-22 2016-02-23 Kabushiki Kaisha Toshiba Memory system and constructing method of virtual block

Similar Documents

Publication Publication Date Title
JP4256600B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP3905037B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP3921174B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
KR100441587B1 (ko) 블록 얼라인먼트 기능을 갖는 반도체 기억 장치
US5953737A (en) Method and apparatus for performing erase operations transparent to a solid state storage system
JP2000067574A (ja) 半導体記憶装置
JP2001243110A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリへのアクセス方法
JPH08137634A (ja) フラッシュディスクカード
US7245539B2 (en) Memory card, semiconductor device, and method of controlling semiconductor memory
JPH10124381A (ja) 半導体記憶装置
JP2004288150A (ja) フラッシュファイルシステム
US7657697B2 (en) Method of controlling a semiconductor memory device applied to a memory card
JP3621051B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP4220690B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP4248772B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP4316824B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP4233213B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP2003122630A (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP2000030375A (ja) データ処理システム、アクセス装置及び記録媒体
JP3999959B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
EP1804166B1 (en) Memory device and information processing apparatus
JPH06175917A (ja) フラッシュメモリ
JP2007241619A (ja) メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20050104