図1には本発明に係るメモリカードの一例が示される。メモリカード1は複数個の不揮発性メモリ例えば2個のフラッシュメモリ2,3と、DRAM(Dynamic Random Access memory)又はSRAM(Static Random Access Memory)等から成るデータバッファ4と、メモリ制御及び外部インタフェース制御を行うメモリコントローラ5とを、実装基板に備えて成る。
前記データバッファ4は、特に制限されないが、16ビットのデータ入出力用バッファバス10とアドレス及びアクセス制御バス11を介してメモリコントローラ5のアクセス制御を受ける。
フラッシュメモリ2は16ビットの入出力用フラッシュバスの上位8ビット(上位フラッシュバス)12に、フラッシュメモリ3は前記フラッシュバスの下位8ビット(下位フラッシュバス)13に接続され、メモリコントローラ5との間でデータ、アドレス信号、及びコマンドの入出力が可能にされる。14、15はメモリコントローラ5からフラッシュメモリ2,3に別々に接続されるアクセス制御バスである。フラッシュメモリ2,3は、夫々のフラッシュバス12,13とアクセス制御バス14,15を介してメモリコントローラ5により並列的にアクセス制御可能にされる。
尚、前記アクセス制御バス14,15にはチップ選択信号、コマンドイネーブル信号、出力イネーブル信号等が伝達され、出力イネーブル信号等の一部のストローブ信号はフラッシュメモリ2,3の間で共通化することも可能である。
前記フラッシュメモリ2,3は同一の回路構成を有する。例えばフラッシュメモリ2の一例が図2に示される。同図においてメモリアレイ20は、メモリマット、データラッチ回路及びセンスラッチ回路を有する。このメモリマットは電気的に消去及び書き込み可能な不揮発性のメモリセルトランジスタを多数有する。メモリセルトランジスタ(フラッシュメモリセルとも記す)は、特に図示はしないが、半導体基板若しくはウェル内に形成されたソース及びドレイン、前記ソースとドレインとの間のチャンネル領域にトンネル酸化膜を介して形成されたフローティングゲート、そしてフローティングゲートに層間絶縁膜を介して重ねられたコントロールゲートによって構成される。コントロールゲートは対応するワード線21に、ドレインは対応するビット線22に、ソースは図示を省略するソース線に接続される。前記メモリセルトランジスタは、前記フローティングゲートに電子が注入されると閾値電圧が上昇し、また、前記フローティングゲートから電子を引き抜くと閾値電圧が低下する。前記メモリセルトランジスタは、データ読み出しのためのワード線電圧(コントロールゲート印加電圧)に対する閾値電圧の高低に応じた情報を記憶することになる。特に制限されないが、本明細書においてメモリセルトランジスタの閾値電圧が低い状態を消去状態、高い状態を書き込み状態と称する。尚、書き込みと消去の定義は相対的な概念であるから上記とは逆に定義することも可能である。
前記フラッシュバス12に接続されるフラッシュメモリ2の外部入出力端子I/O0〜I/O7は、アドレス入力端子、データ入力端子、データ出力端子、コマンド入力端子に兼用される。外部入出力端子I/O0〜I/O7から入力されたXアドレス信号はマルチプレクサ24を介してXアドレスバッファ25に供給される。Xアドレスデコーダ26はXアドレスバッファ25から出力される内部相補アドレス信号をデコードしてワード線21を駆動する。
前記ビット線22の一端側には、センスラッチ回路が設けられ、他端にはデータラッチ回路が設けられている。ビット線22はYアドレスデコーダ27から出力される選択信号に基づいてYスイッチアレイ28で選択される。外部入出力端子I/O0〜I/O7から入力されたYアドレス信号はYアドレスカウンタ29にプリセットされ、プリセット値を起点に順次インクリメントされたアドレス信号が前記Yアドレスデコーダ27に与えられる。
Yスイッチアレイ28で選択されたビット線は、データ出力動作時には出力バッファ30の入力端子に導通され、データ入力動作時には入力バッファ31を介してデータ制御回路32の出力端子に導通される。出力バッファ30、入力バッファ31と前記入出力端子I/O0〜7との接続は前記マルチプレクサ24で制御される。入出力端子I/O0〜I/O7から供給されるコマンドはマルチプレクサ24及び入力バッファ31を介してモード制御回路33に与えられる。
制御信号バッファ回路35はアクセス制御信号として、チップイネーブル信号/CE、出力イネーブル信号/OE、書き込みイネーブル信号/WE、シリアルクロック信号SC、リセット信号/RES及びコマンドイネーブル信号/CDEを入力する。信号名の直前に記付された記号/は当該信号がロー・イネーブルであることを意味する。モード制御回路33は、それら信号の状態に応じてマルチプレクサ24を介する外部との信号インタフェース機能などを制御する。入出力端子I/O0〜I/O7からのコマンド入力は前記コマンドイネーブル/CDEに同期される。データ入力はシリアルクロックSCに同期される。アドレス情報の入力はライトイネーブル信号/WEに同期される。モード制御部33は、コマンドコードにより消去又は書込み動作の開始が指示されると、その期間、消去や書込み動作中を示すレディー・ビジー信号R/Bをアサートして外部に出力する。
内部電源回路(内部電圧発生回路)36は、書込み、消去、ベリファイ、読み出しなどのための各種内部電圧とされる動作電源37を生成して、前記Xアドレスデコーダ26及びメモリセルアレイ20等に供給する。
前記モード制御回路33は、入力コマンドに従ってフラッシュメモリを全体的に制御する。フラッシュメモリ2の動作は、基本的にコマンドによって決定される。フラッシュメモリ2のコマンドには、読み出し、消去、書込み等の各コマンドがある。例えば読み出しコマンドは、読み出しコマンドコード、読み出しXアドレス、及び必要なYアドレスを含む。書込みコマンドは、書込みコマンドコード、Xアドレス、必要なYアドレス、及び書込みデータを含む。
フラッシュメモリ2はその内部状態を示すためにステータスレジスタ38を有し、その内容は、信号/OEをアサートすることによって入出力端子I/O0〜I/O7から読み出し可能にされる。
図1において、前記メモリコントローラ5は、例えばホストコンピュータ(ホスト装置)6との間でIDEディスクインタフェース仕様などに従った外部インタフェース制御を行う。メモリコントローラ5は、ホストコンピュータからの指示に従って、フラッシュメモリ2、3をアクセスするアクセス制御機能を有する。このアクセス制御機能はハードディスク互換の制御機能であり、例えばホストコンピュータ6がセクタデータの集合をファイルデータとして管理するとき、メモリコントローラ5は論理アドレスとしてのセクタアドレスと物理メモリアドレスとを対応させてフラッシュメモリ2,3のアクセス制御を行う。このとき、前記メモリコントローラ5は、セクタデータの偶数番目のデータの記憶領域に一方のフラッシュメモリ2を割り当て、セクタデータの奇数番目のデータの記憶領域に他方のフラッシュメモリ3を割り当てる。そして、メモリコントローラ5は前記フラッシュメモリ2,3を並列にリード動作させ、また、並列に書き込み動作させる。メモリコントローラ5による上記並列アクセス制御機能により、メモリコントローラ5とフラッシュメモリ2,3との間のデータバス幅若しくはデータ転送並列ビット数が多くなり、フラッシュメモリとの間のデータ転送速度の高速化が実現できる。このアクセス制御機能にしたがってフラッシュメモリ2をアクセスするときECC機能によりライトデータに対してエラーコードの付加、リードデータに対してエラー検出・訂正を行なう。更に上記アクセス制御機能にしたがってフラッシュメモリ2、3へ消去又は書き込みを行なうとき、ベリファイ動作で消去不良又は書き込み不良(アクセスエラー)が発生した場合には、当該不良領域を代替領域に代替させる代替制御機能を備える。
図1に従えば、前記メモリコントローラ5は、ホストインタフェース回路40、演算制御手段としてのマイクロプロセッサ(MPU)41、メモリインタフェース回路としてのフラッシュインタフェース回路42、バッファコントローラ43、及びECC回路44を備える。前記MPU41、バッファコントローラ43、及びECC回路44はメモリコントローラ5の制御回路を構成する。
MPU41は、CPU(Central Processing Unit)及びそのプログラムメモリ(PGM)などを有し、メモリコントローラ5を全体的に制御する。プログラムメモリはCPUの動作プログラムなどを保有する。
前記ホストインタフェース回路40は、ATA(ATAttachment)、IDE(Integrated Device Electronics)、SCSI(Small Computer System Interface)等の所定のプロトコルに従って、パーソナルコンピュータ又はワークステーションなどのホストコンピュータ6とインタフェースを行う回路である。ホストインタフェース動作の制御はアクセスバス45を介してMPU41が行う。上記プロトコルは公知であるから詳細な説明を省略する。
前記バッファコントローラ43はアクセスバス46を介してMPU41から与えられるアクセス指示に従って、データバッファ4のメモリアクセス動作を制御する。データバッファ4にはホストインタフェース回路40に入力されたデータ、又はホストインタフェース回路40から出力するデータが一時的に保持される。また、データバッファ4には、フラッシュメモリ2、3から読み出されたデータ又はフラッシュッメモリ2,3に書き込まれるデータが一時的に保持される。
フラッシュインタフェース回路42はアクセスバス47を介してMPU41から与えられるアクセス指示に従って、フラッシュメモリ2、3に対する、読み出し動作、消去動作及び書き込み動作を制御する。フラッシュインタフェース回路42は、読み出し動作において読み出しコマンドコードや読み出しアドレス情報等の読み出し制御情報を出力し、書き込み動作において書き込みコマンドコード及び書き込みアドレス情報などの書き込み制御情報を出力し、消去動作において消去コマンド等の消去制御情報を出力する。前述の如く、フラッシュインタフェース回路42はフラッシュメモリ2,3に対する読み出し、書き込みのアクセス動作を並列に行う。要するに、リードデータの入力、書込みコマンドコード及び書込みデータの出力をフラッシュバス12,13を介して16ビット幅で行う。
ECC回路44は、前記アクセス制御機能の一環として、アクセスバス48を介してMPU41から与えられる指示に従って、フラッシュメモリ2、3に書き込むデータに対してエラー訂正符号(エラー訂正コード)を生成して、書込みデータに付加する。また、フラッシュメモリ2、3から読み出された読み出しデータを当該読み出しデータに付加されているエラー訂正符号を用いてエラー検出・訂正処理を行い、そのエラー訂正能力範囲のエラー発生に対してエラー訂正を行う。フラッシュインタフェース回路42とECC回路44は8ビットのデータバス49を介してデータ伝送を行う。このECC回路44は、フラッシュメモリ2,3が併せて16ビット幅で並列データ転送を行うという処理能力に追従するために、並列アクセス動作される前記フラッシュメモリ2,3の入出力動作周波数に対して並列アクセス動作の並列数倍即ち2倍の動作周波数で入出力動作を行なう。これにより、ECC回路44のハードウェアを増大させずに、フラッシュバス12,13を介するデータアクセスの高速化に追従させてエラー検出コードの生成やエラー検出・訂正処理を高速化することができる。
図3にはフラッシュメモリ2の記憶領域が例示される。図4にはフラッシュメモリ3の記憶領域が例示される。フラッシュッメモリ2、3の記憶領域は、ユーザデータエリアAreU、代替エリアAreR、及び代替管理エリアAreMに大別される。各エリアAreU,AreR,AreMは、特に制限されないが、夫々データ部PrtDと管理部PrtMに大別される所定フォーマットの領域を単位領域BLKとして有する。フラッシュメモリ2の各単位領域BLKには便宜上その物理アドレスとしてセクタアドレスSA1(SA1(0)〜SA1(99))が割り当てられる。フラッシュメモリ3の各単位領域BLKには便宜上その物理アドレスとしてセクタアドレスSA2(SA2(0)〜SA2(99))が割り当てられる。
前記ユーザデータエリアAreUは例えばユーザに開放されるデータ領域とされる。フラッシュメモリ2のデータ部PrtDは図3に例示されるようにセクタデータの偶数番目バイトのデータを保持し、フラッシュメモリ3のデータ部PrtDは図4に例示されるようにセクタデータの奇数番目バイトのデータを保持する。経時的にユーザデータエリアAreUで消去エラー又は書込みエラーを生じたとき、エラーを生じたユーザデータエリアAreUの単位領域BLKを代替するのに前記代替エリアAreRが用いられる。代替の単位は単位領域BLKを最小単位とする。
例えば、図3のフラッシュメモリ2においてセクタアドレスSA1(n)のデータ部PrtDは、セクタデータ2nの偶数番目バイトのデータ(例えば512バイトの各バイトデータの内の偶数番目の256バイトデータ)EvD(2n)、前記セクタデータ2nの偶数番目バイトのデータに関するエラー検出コードとしてのECC符号EvC(2n)、セクタデータ2n+1の偶数番目バイトのデータ(例えば512バイトの各バイトデータの内の偶数番目の256バイトデータ)EvD(2n+1)、及び前記セクタデータ2n+1の偶数番目バイトのデータに関するエラー検出コードとしてのECC符号EvC(2n+1)を含む。セクタアドレスSA1(n)の管理部PrtMはセクタアドレスnの管理情報として、良セクタコード、識別情報、その他管理情報、及びECC符号を有する。良セクタコードはセクタアドレスSA1(n)の良又は不良を示すコードデータである。識別情報は対応するデータ部がユーザデータ、代替済み、空き、又は代替エリア管理エリアの何れに属するかを示すコードデータとされる。その他の管理情報は特に定めなくてもよい。ECC符号は良セクタコード、識別情報、その他管理情報に対するエラー検出・訂正用の冗長情報とされる。
図4のフラッシュメモリ3においてセクタアドレスSA2(n)のデータ部PrtDは、セクタデータ2nの奇数番目バイトのデータ(例えば512バイトの各バイトデータの内の奇数番目の256バイトデータ)OdD(2n)、前記セクタデータ2nの奇数番目バイトのデータに関するエラー検出コードとしてのECC符号EvC(2n)、セクタデータ2n+1の奇数番目バイトのデータ(例えば512バイトの各バイトデータの内の奇数番目の256バイトデータ)OdD(2n+1)、及び前記セクタデータ2n+1の奇数番目バイトのデータに関するエラー検出コードとしてのECC符号OdC(2n+1)を含む。フラッシュメモリ3の管理部PrtMが保有する管理情報は図3のフラッシュメモリと同様の意義を有する。
代替管理エリアAreMは、特に制限されないが、ユーザデータエリアAreUの単位領域BLKに対応する不良登録データを代替エリア管理テーブルとして有する。個々の不良登録データは代替先の単位領域のアドレスを特定する代替先アドレス情報とされる。例えば図5にはフラッシュメモリ2における代替エリア管理テーブルが例示され、一つの不良登録データは2バイトとされ、セクタアドレス毎に不良登録データ領域が割り当てられ、不良登録データはFFFFhによって代替不要を意味し、代替を要するときは代替先セクタアドレスのコードが保持される。図5の例は、図3においてフラッシュメモリ2のセクタアドレスSA1(1)における不良をセクタアドレスSA1(90)で代替する場合を示している。フラッシュメモリ3における代替エリア管理テーブルを示す図6の例は、図4においてフラッシュメモリ3のセクタアドレスSA2(n)における不良をセクタアドレスSA2(90)で代替する場合を示している。図5及び図6の例からも明らかなように、不良登録データと単位領域BLKとの対応は一対一対応とされる。したがって、単位領域BLKの物理アドレスに基づいてアドレス演算を行うことにより、対応する不良登録データを得ることができる。
前記メモリコントローラ5は、代替制御ではアクセスエラーを生じたフラッシュメモリ毎に記憶領域を代替可能にする。要するに、一つのセクタデータを偶数バイトと奇数バイトに分けて2個のフラッシュメモリ2,3に分散配置させたとき、フラッシュメモリ2,3毎に、代替制御の為の代替エリア管理テーブルを持たせる。例えば、セクタデータの偶数番目バイトのデータでアクセスエラーを生じたときはフラッシュメモリ2における当該偶数番目バイトのデータのセクタアドレスを代替エリアの別のセクタアドレスで代替させ、アクセスエラーを生じていない奇数番目バイトのデータにはフラッシュメモリ3の元々のセクタアドレスを割当てる。このように、フラッシュメモリ2,3を代替制御する為のエリア管理を夫々のフラッシュメモリ2,3毎に行うから、不良アドレスに対する代替領域を効率良く利用でき、代替に際して記憶領域の無駄を低減でき、メモリカード1の寿命を延ばすことが可能になる。要するに、一つのセクタデータを複数のフラッシュメモリ2,3に分散配置したとき、セクタデータ単位の代替を行えば、各フラッシュメモリ2,3で一つずつ代替セクタドレスを費やすことになり、そのような無駄を省いている。
図7及び図8にはセクタデータの書込み動作手順が例示される。ホストコンピュータ6がメモリカード1に論理アドレスとライトコマンドを発行すると(S1)、ホストインタフェース回路40はライトコマンドが発行されたことをMPU41のCPUに通知すると共に、ホストコンピュータ6にセクタライトデータの入力準備が完了したこと(データ入力レディー状態)を通知する。これによってホストコンピュータ6から供給されるセクタデータがホストインタフェース回路40に入力され、入力されたセクタライトデータがバッファコントローラ43を介してデータバッファ4に格納される(S2)。MPU41のCPUはホストコンピュータ6から与えられた論理アドレスをフラッシュメモリ2,3の物理アドレスであるセクタアドレスSA1,SA2に変換し、フラッシュインタフェース回路42を介して当該セクタアドレスSA1,SA2の管理部PrtMの管理情報をリードさせ、リードした管理情報をバッファコントローラ43を介してデータバッファ4にストアする(S3)。MPU41のCPUはストアされたセクタアドレスSA1の管理情報に対するECC結果がOKであるとき、そのセクタアドレスSA1の管理情報に含まれる良セクタコードに基づいて当該セクタの良否を判定する(S4)。判別結果が不良セクタ又はECCによる訂正不能なエラー発生(ECC=NG)であるなら、代替先アドレスの検索処理が行われる(S5)。判別結果が良セクタ及びECCによる訂正不能なエラー無し(ECC=OK)であるなら、今度は、ストアしたセクタアドレスSA2の管理情報に含まれる良セクタコードのECCと該セクタの良否とを判定する(S6)。判別結果が不良セクタ又はECCによる訂正不能なエラー発生(ECC=NG)であるなら、代替先アドレスの検索処理が行われる(S7)。尚、セクタアドレスSA1,SA2を別のセクタアドレスに代替した場合も当該代替先セクタアドレスを便宜上セクタアドレスSA1,SA2と称する。
次いで、MPU41のCPUは、フラッシュメモリ2のセクタアドレスSA1及びフラッシュメモリ3のセクタアドレスSA2に対して消去動作を開始させる(S8)。消去動作に並行してMPU41のCPUはホストコンピュータ6からデータバッファ4に書込みセクタデータが転送されたか否かを判定する(S9)。MPU41のCPUは夫々のフラッシュメモリ2,3に対して消去チェック処理を行う(S10,S11)。消去チェック処理の後、MPU41のCPUはバッファコントローラ43とフラッシュインタフェース回路42とを介してデータバッファ4からフラッシュメモリ2,3に書込みセクタアドレスSA1,SA2及び書込みセクタデータ等を転送し、転送後に、フラッシュメモリ2,3の書込み(プログラム)動作を開始させる(S12)。プログラム動作の開始後、CPUはフラッシュメモリ2,3に対するプログラムチェック処理を行う(S13,S14)。
図9には前記S5,S7の代替先アドレス検索処理手順が例示される。先ず、MPU41のCPUは処理対象とするフラッシュメモリ(処理S5の場合にはフラッシュメモリ2、処理S7の場合にはフラッシュメモリ3)の代替管理エリアAreMの管理情報をデータバッファ4にストアさせる(S20)。CPUはその管理情報に対するECC結果がOKであるとき、その管理情報に含まれる良セクタコードに基づいて当該セクタの良否を判定する(S21)。判別結果が不良セクタ又はECCによる訂正不能なエラー発生(ECC=NG)であるなら、CPUはホストコンピュータ6にエラー発生を通知して、ライトコマンドに対する処理を終了する(S22)。判別結果が良セクタ及びECCによる訂正不能なエラー無し(ECC=OK)であるなら、CPUは今度は、当該代替管理エリアAreMの代替エリア管理テーブルをデータバッファ4へストアする(S23)。CPUはデータバッファ4にストアされた代替エリア管理テーブルから、対応する領域に格納されている代替先アドレスをリードし、これを代替されたセクタアドレスSA1又はSA2として採用する(S24)。
図10には前記S10,S11のフラッシュメモリの消去チェック処理の手順が例示される。消去動作が開始されると、フラッシュメモリ2(3)は消去対象メモリセルに消去電圧を印加しながらベリファイを繰返す動作を一定期間行う。MPU41のCPUはフラッシュメモリ2(3)の消去動作が終了したか否かを判別する(S30)。消去動作の終了結果は、消去対象メモリセルの全てが消去状態の閾値電圧状態に到達する状態と、到達しない消去エラー状態であり、CPUはその結果をフラッシュメモリ2(3)のステータスレジスタをリードして判定する(S31)。消去エラーの場合、CPUは代替先アドレス検索処理を行い(S32)、フラッシュメモリ2(3)の代替先セクタアドレスに対して消去動作を開始させ、再度ステップS30の処理に戻る。ステップS32の代替先アドレス検索処理では、代替エリアAreRの管理情報を、セクタアドレスの小さい方から順次読み出し、最初に見つけた空きを代替先アドレスとする。消去エラーが発生しない場合にはステップS32およびS33によって代替が発生したかをチェックし(S34)、代替が発生した場合には、代替エリア管理テーブルに、新規の代替先アドレスを登録し(S35)、代替が発生していない場合には消去チェック処理を終了する。
図11には前記S13,S14のフラッシュメモリのプログラムチェック処理の手順が例示される。プログラム動作が開始されると、フラッシュメモリ2(3)はプログラム対象メモリセルに書き込み電圧を印加しながらベリファイを繰返す動作を一定期間行う。MPU41のCPUはフラッシュメモリ2(3)の書き込み動作が終了したか否かを判別する(S40)。プログラム動作の終了結果は、プログラム対象メモリセルの全てが書き込み状態の閾値電圧状態に到達する状態と、到達しないプログラムエラー状態であり、CPUはその結果をフラッシュメモリ2(3)のステータスレジスタをリードして判定する(S41)。プログラムエラーの場合、CPUは代替先アドレス検索処理を行い(S42)、フラッシュメモリ2(3)の代替先セクタアドレスに対して消去動作を開始させ、その消去対象エリアに対して図10の消去チェック処理を行う(S44)。S42の代替先アドレス検索処理は、図10のS32と同様に、代替エリアAreRの管理情報を順次読み出し、空きの単位領域BLKを代替先アドレスとする。消去チェック処理が正常終了したとき、MPU41のCPUは再び、バッファコントローラ43とフラッシュインタフェース回路42を介してデータバッファ4からフラッシュメモリ2(3)に書込み書込みセクタデータ等の転送を指示し、転送後に、フラッシュメモリ2(3)の書込み(プログラム)動作を開始させる(S45)。開始されたプログラム動作に対してCPUの処理が前記ステップS40に戻される。フラッシュメモリへのプログラムが正常終了した後(S41のNo)、ステップS42〜S45によって代替が発生したかをチェックし(S46)、代替が発生した場合には、代替エリア管理テーブルに新規の代替先アドレスを登録し(S47)、代替が発生していない場合には、プログラムチェック処理を終了する。
図12及び図13にはホストコンピュータによるセクタデータのリード動作手順が例示される。ホストコンピュータ6がメモリカード1に論理アドレスとリードコマンドを発行すると(S50)、ホストインタフェース回路40はリードコマンドが発行されたことをMPU41のCPUに通知する(S51)。MPU41のCPUはホストコンピュータ6から与えられた論理アドレスをフラッシュメモリ2,3の物理アドレスであるセクタアドレスSA1,SA2に変換し、フラッシュインタフェース回路42を介して当該セクタアドレスSA1,SA2の管理部PrtMの管理情報をリードさせ、リードした管理情報をバッファコントローラ43を介してデータバッファ4にストアする(S52)。MPU41のCPUはストアされたセクタアドレスSA1の管理情報に対するECC結果がOKであるとき、そのセクタアドレスSA1の管理情報に含まれる良セクタコードに基づいて当該セクタの良否を判定する(S53)。判別結果が不良セクタ又はECCによる訂正不能なエラー発生(ECC=NG)であるなら、CPUはフラッシュメモリ2の代替管理エリアAreMの代替エリア管理テーブルをデータバッファ4へストアする(S54)。CPUはデータバッファ4にストアされた代替エリア管理テーブルから、対応する領域に格納されている代替先アドレスをリードし、これを代替されたセクタアドレスSA1として採用する(S55)。この代替先セクタアドレスSA1に対してCPUはそのアドレスSA1の管理情報をデータバッファ4へストアする(S56)。ストアされたMPU41のCPUはストアされたセクタアドレスSA1の管理情報に対するECC結果がOKであるとき、そのセクタアドレスSA1の管理情報に含まれる良セクタコードに基づいて当該セクタの良否を判定する(S57)。判別結果が不良セクタ又はECCによる訂正不能なエラー発生(ECC=NG)であるなら、CPUはホストコンピュータ6にエラー応答を行って(S58)、処理を終了する。
前記処理S53又はS57の処理結果が良セクタ及びECCによる訂正不能なエラー発生無(ECC=OK)である時は、フラッシュメモリ3に対して、上記処理S53〜S57の処理を行う(S59〜S63)。
フラッシュッメモリ3に対して前記処理S59又はS63の処理結果が不良セクタ及びECC=OKであるとき、MPU41のCPUは、フラッシュインタフェース回路42を介して夫々のフラッシュメモリ2、3のセクタアドレスSA1,SA2からセクタデータを並列リードさせ、リードデータに対してECC回路44でエラー検出・訂正処理を実行させ、エラー検出・訂正処理を経たリードデータを、バッファコントローラ43を介してデータバッファ4にストアさせる(S65)。このリード転送の終了を検出すると(S65)、セクタリードデータに対してECCエラーが生じているかを判別し(S66)、ECCエラーを生じている場合にはホストコンピュータ6にエラー応答を行ってリード処理を終了する。ECCエラーを生じていない場合には、CPUはホストインタフェース回路40を介してホストコンピュータ6にデータ転送レディ状態を通知して、セクタデータを出力する(S67)。ホストコンピュータ6はそのセクタデータをリードする(S68)。
図14にはデータバッファからフラッシュメモリへ一つのセクタデータを転送するときの転送タイミングが例示される。セクタデータはD0〜D511の512バイトとされ、偶数バイトD0,D2,…,D510がバッファバスの上位8ビットに、奇数バイトD1,D3,…,D511がバッファバスの下位8ビットに割当てられる。データバッファ4からバッファコントローラ43に16ビットのバッファバス10で転送されたセクタデータはECC回路44に供給される。ECC回路のバス幅は8ビット幅なので、バッファからの1回の読み出しに対して、2回に分けて1バイトずつECC回路44に入力する。例えば、tW1においてデータバッファ4から読み出したD0とD1のデータは、tW2においてD0に続いてD1の順でECC回路44に入力している。この時のECCバス49上でのデータ転送動作周波数はバッファバス10上のデータ転送動作周波数の2倍にされている。これに並行してフラッシュインタフェース回路42からフラッシュメモリ2,3にもセクタデータが供給される。フラッシュバス12,13はバッファバス10と同じ16ビットであるからデータバッファ4からのデータ転送動作周波数と同じ動作周波数でフラッシュメモリにセクタデータが転送される。データバッファ4から一つのセクタデータの読み出しが終了し(tW4)、ECC回路44に一つのセクタデータの入力が完了すると(tW5)、ECC回路44には一つのセクタデータに対するECC符号が生成されている。最後に、ECC回路44からECC符号(E−0,E−1)を読み出し(tW6)、フラッシュメモリにECC符号を転送する(tW7)。ECC回路44で生成されたECCコードがフラッシュインタフェース回路42に供給されるときのデータ転送動作周波数も同様に2倍にされている。フラッシュインタフェース回路42からフラッシュメモリ2,3には、ECC符号E−0,E−1は並列に供給される。
図15にはフラッシュメモリからデータバッファ4に一つのセクタデータを転送するときの転送タイミングが例示される。フラッシュメモリ2,3から2バイト並列でフラッシュバス12,13に読み出されたデータD0,D1,…E−0,E―1は、フラッシュインタフェース回路42からECCバス49経由で1バイト単位に順次ECC回路44に入力される。例えば、サイクルtR1においてフラッシュメモリ2,3から読み出されたデータD0,D1は、サイクルtR2においてD0に続いてD1の順でECC回路44に入力される。また、フラッシュメモリ2,3から2バイト並列で順次読み出されたデータは、バッファバス10を介して2バイト並列のままデータバッファ4にストアされる。サイクルtR6において、ECC符号がECC回路44に転送っされた時点で、ECC回路44では、フラッシュメモリ2,3からリードしたデータに対するエラー検出が完了する。
図14及び図15より明らかなように、ECCバス49上でのデータ転送動作周波数はバッファバス10上のデータ転送動作周波数の2倍にされているから、フラッシュメモリ2,3の並列アクセスによる動作の高速化に対してECC回路44の動作を追従させることができる。
図16には本発明に係るメモリカードの第2の例が示される。図1のメモリカードとの相違点は、メモリコントローラ5が2個のECC回路44A,44Bを有し、夫々別々に8ビットのECCバス49A,49Bでフラッシュインタフェース回路42に接続されていることである。第1のECC回路44Aは、フラッシュメモリへのライト時に、第1のフラッシュメモリ2に格納されるセクタデータの偶数番目バイトのデータに対するECC符号を生成する。フラッシュメモリからのリード時には、第1のフラッシュメモリ2から読み出されるセクタデータの偶数番目バイトのデータと生成されたECC符号からエラー検出を行い、エラーがあった場合にはエラー訂正を行う。セクタデータ及びECC符号の転送はECCバス49Aを介して行う。
第2のECC回路44Bは、フラッシュメモリへのライト時に、第2のフラッシュメモリ3に格納されるセクタデータの奇数番目バイトのデータに対するECC符号を生成する。フラッシュメモリからのリード時には、第2のフラッシュメモリ3から読み出されるセクタデータの奇数番目バイトのデータと生成されたECC符号からエラー検出を行い、エラーがあった場合にはエラー訂正を行う。セクタデータ及びECC符号の転送はECCバス49Bを介して行う。その他の構成は図1と同じであるからその詳細な説明は省略する。
図17には図16のメモリカードにおいてデータバッファからフラッシュメモリへ一つのセクタデータを転送する動作タイミングが例示される。
バッファバス10にはデータバッファ4から2バイト並列でセクタデータが読み出される。データバッファ4から読み出された偶数番目バイトのデータD0,D2,…,D510は第1のECCバス49Aから第1のECC回路44Aへ入力される。同様に、データバッファ4から読み出された奇数番目バイトのデータD1,D3,…,D511は第2のECCバス49Bから第2のECC回路44Bへ入力される。要するに、図14のように、ECCバス49A,49B上のデータ転送動作周波数を2倍に高速化することを要しない。但しECC回路のハードウェア量は2倍になる。第1のECC回路44Aではセクタデータの偶数番目バイトのデータに対するECC符号E−Aが生成される。第2のECC回路44Bではセクタデータの奇数番目バイトのデータに対するECC符号E−Bが生成される。生成されたECC符号はセクタデータの後に、フラッシュバス12,13を介して2バイト並列にフラッシュメモリ2,3に供給される。
図18には図16のメモリカードにおいてフラッシュメモリからデータバッファへ一つのセクタデータを転送する動作タイミングが例示される。フラッシュメモリ2、3から2バイト並列でフラッシュバス12,13に読み出される。フラッシュメモリ2から読み出された偶数番目バイトのデータは第1のECCバス49Aを経て第1のECC回路44Aに入力され、セクタデータの偶数番目バイトのデータに対するエラー検出が第1のECC回路44Aで行われる。同様に、第2のフラッシュメモリ3から読み出された奇数番目バイトのデータは第2のECCバス49Bを経て第2のECC回路44Bに入力され、セクタデータの奇数番目バイトのデータに対するエラー検出が第2のECC回路44Bで行われる。前記フラッシュメモリ2,3から読みされたセクタデータは2バイト並列にバッファバス10を介してデータバッファ4にもストアされる。
図19には本発明に係るメモリカードの第3の例が示される。図1のメモリカードとの相違点は、バッファバス10Aが8ビット幅になったことである。その他の構成は図1と同じであるからその詳細な説明は省略する。
図20には図19のメモリカードにおいてデータバッファ4からフラッシュメモリ2,3へ一つのセクタデータを転送する動作タイミングが示される。データバッファ4からバッファバス10Aへのデータ読み出しは8ビット幅で行われる。データバッファ4から読み出されたセクタデータは、同じく8ビット幅でECCバス49からECC回路44に入力され、ECC符号E−0,E−1が生成される。また、データバッファ4から読み出されたセクタデータは、1サイクル送れたタイミングで、偶数番目バイトのセクタデータが上位フラッシュバス12を経由してフラッシュメモリ2に、奇数番目バイトのセクタデータが下位フラッシュバス13を経由してフラッシュメモリ3に、並列に供給される。夫々8ビット幅のバッファバス10A及びECCバス49上でのデータ転送動作周波数は16ビットのバス幅を有するフラッシュバス12,13上でのデータ転送動作周波数の2倍になっている。
図21には図19のメモリカードにおいてフラッシュメモリからデータバッファへ一つのセクタデータを転送する動作タイミングが例示される。フラッシュメモリ2,3からフラッシュバス12,13にバイト並列で読み出されたセクタデータは、8ビットのECCバス49を通ってECC回路44に供給され、エラー検出処理が行われ、これに並行して、8ビットのバッファバス10Aからデータバッファ4に書き込まれる。夫々8ビット幅のバッファバス10A及びECCバス49上でのデータ転送動作周波数は16ビットのバス幅を有するフラッシュバス12,13上でのデータ転送動作周波数の2倍になっている。
以上説明したメモリカード1のメモリコントローラ5によれば、セクタデータの偶数番目バイトのデータの記憶領域にフラッシュメモリ2を割り当て、セクタデータの奇数番目バイトのデータの記憶領域にフラッシュメモリ3を割り当て、ホストコンピュータ6からのアクセスコマンドに応答するフラッシュメモリのアクセス制御では、2個のフラッシュメモリ2,3を並列にリード動作させ、また、並列に書き込み動作させる。このフラッシュッメモリ2,3に対する並列アクセスにより、メモリコントローラ5とフラッシュメモリ2,3との間のデータバス幅若しくはデータ転送並列ビット数が多くなり、フラッシュメモリ2,3との間のデータ転送速度の高速化を実現することができる。
前記メモリコントローラ5は、前記代替制御ではアクセスエラーを生じたフラッシュメモリ毎に記憶領域を代替可能にする。したがって、不良アドレスに対する代替領域を効率良く利用でき、代替に際して記憶領域の無駄を低減でき、メモリカード1の寿命を延ばすことに寄与することができる。
図1の前記メモリコントローラ5が備えるECC回路44は、前記並列アクセス動作されるフラッシュメモリ2,3の入出力動作周波数に対して2倍の動作周波数で入出力動作を行なう。したがって、ECC回路44の数を増やすことなくエラー検出コードの生成やエラー検出・訂正処理の高速化を実現できる。また、図16のように、フラッシュメモリ2,3の数と同じ数のECC回路44A,44Bを設ければ、ECC回路44A,44Bの動作周波数を上げることなく、フラッシュメモリ2,3の入出力動作周波数に等しい動作周波数でECC動作を行なえば済むようになる。これらにより、前記メモリコントローラ5は、フラッシュメモリ2,3との間のデータ転送効率の向上にECC回路の動作を追従させることができる。このように、メモリコントローラ5が複数のフラッシュメモリ2,3を並列アクセスして高速にデータをリードしたとき、そのリードデータに対してエラー検出・訂正処理を行なうECC回路44の動作を追従させることができ、また、書き込みデータに付加すべきエラー検出コードの生成動作を高速化できるから、メモリカード全体としてのアクセスの高速化を実現することができる。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、複数個の不揮発性メモリとは2個のフラッシュメモリチップに限定されない。1個とは物理的に1個のメモリチップを意味すだけでなく、複数個のメモリチップの集合であってもよい。例えば3nビットのデータバスに対し、下位側からnビット単位でフラッシュメモリチップのデータ入出力端子を接続して3個のフラッシュッメモリチップで1群のフラッシュメモリを構成し、そのようなメモリチップ群を複数群採用して、複数個の不揮発性メモリを構成してもよい。フラッシュッメモリは3個又は3群以上のフラッシュメモリチップによって構成してもよい。不揮発性メモリはフラッシュメモリに限定されず、高誘電体メモリであってもよい。
フラッシュバス、バッファバス、ECCバスのビット数は上記の例に限定されず適宜のビット数に変更可能である。
また、メモリコントローラは1チップに限定されず、MPUを別チップで構成してもよい。また、メモリコントローラとデータバッファを単一半導体チップに形成してもよい。更に、メモリコントローラ、データバッファ、及びフラッシュッメモリを同一チップに形成してもよい。
フラッシュメモリとECC回路との間におけるアクセス周波数及びデータ入出力端子数の関係については、上記の例に限定されず、以下の関係を満足させてメモリカードを構成してもよい。即ち、複数のフラッシュメモリは夫々第1のビット幅W1の入出力端子を有し、アクセス周波数F1でアクセス可能である。前記バスは、W1×mのビット幅を有し、m個のフラッシュメモリの入出力端子に並列に接続される。ECC回路は、ビット幅W2のデータについてエラー検出・訂正が可能である。前記ECC回路の動作周波数F2は、F2≧(F1×W1×m)/(W2×n)の関係を満足する。これにより、フラッシュッメモリとの間の並列アクセスによるデータ転送効率の向上にECC回路の動作を追従させるという作用及び効果を得る。