(57)【要約】【課題】不揮発性メモリを用いたメモリカードにおけるアクセスの高速化を実現する。【解決手段】メモリカード（１）は、複数の不揮発性メモリ（２，３）、及び前記不揮発性メモリの動作を制御するメモリコントローラ（５）を有する。メモリコントローラは、外部からのアクセス指示に応答する前記不揮発性メモリのアクセス制御、及びアクセスエラーに係る不揮発性メモリの記憶領域を別の記憶領域に代替させる代替制御を行う。このとき、前記アクセス制御では前記複数の不揮発性メモリを並列アクセス動作させ、フラッシュメモリ間のデータ転送速度の高速化を実現する。前記代替制御ではアクセスエラーを生じた不揮発性メモリ毎に記憶領域を代替可能にするから、不良アドレスに対する代替領域を効率良く利用でき、代替に際して記憶領域の無駄を低減できる。【選択図】図1
2007310915.tif 000002
【特許請求の範囲】
【請求項１】
複数の不揮発性メモリ、及び前記不揮発性メモリの動作を制御するメモリコントローラを有するメモリカードであって、
前記メモリコントローラは、外部からの書き込み指示に応答する前記不揮発性メモリの書き込み制御、及び書き込みエラーに係る不揮発性メモリの記憶領域を別の記憶領域に代替させる代替制御を行ない、前記書き込み制御では前記複数の不揮発性メモリを並列書き込み動作させ、前記代替制御では書込みエラーを生じた不揮発性メモリの記憶領域を当該不揮発性メモリの別の記憶領域に代替可能にすることを特徴とするメモリカード。
【請求項２】
第１の不揮発性メモリ、第２の不揮発性メモリ、及び前記不揮発性メモリの動作を制御するメモリコントローラを有するメモリカードであって、
前記メモリコントローラは、セクタデータの偶数番目のデータの記憶領域として第１の不揮発性メモリを割り当て、セクタデータの奇数番目のデータの記憶領域として第２の不揮発性メモリを割り当て、外部からの書き込み指示に応答する前記不揮発性メモリの書き込み制御では前記第１及び第２の不揮発性メモリを並列書き込み動作させ、書き込みエラーに係る不揮発性メモリの記憶領域を別の記憶領域に代替させる代替制御では書込みエラーを生じた不揮発性メモリの記憶領域を当該不揮発性メモリの別の記憶領域に代替可能にすることを特徴とするメモリカード。
【請求項３】
前記夫々の不揮発性メモリを別々に書き込み制御可能に前記メモリコントローラに接続するバスを有して成ることを特徴とする請求項１又は２記載のメモリカード。
【請求項４】
所定のプロトコルにしたがって入出力動作可能なホストインタフェース回路と、複数の不揮発性メモリに並列接続可能なメモリインタフェース回路と、前記ホストインタフェース回路及びメモリインタフェース回路に接続された制御回路とを有し、
前記制御回路は、前記ホストインタフェース回路を介する外部インタフェース制御、外部からの書き込み指示に応答する前記メモリインタフェース回路を介する前記不揮発性メモリの書き込み制御、及び書き込みエラーに係る不揮発性メモリの記憶領域を別の記憶領域に代替させる代替制御を行ない、前記書き込み制御では前記複数の不揮発性メモリを並列書き込み動作させ、前記代替制御では書込みエラーを生じた不揮発性メモリの記憶領域を当該不揮発性メモリの別の記憶領域に代替可能にすることを特徴とするメモリコントローラ。
【請求項５】
所定のプロトコルにしたがって入出力動作可能なホストインタフェース回路と、第１及び第２の不揮発性メモリに並列接続可能なメモリインタフェース回路と、前記ホストインタフェース回路及びメモリインタフェース回路に接続された制御回路とを有し、
前記制御回路は、セクタデータの偶数番目のデータの記憶領域として第１の不揮発性メモリを割り当て、セクタデータの奇数番目のデータの記憶領域として第２の不揮発性メモリを割り当て、外部からの書き込み指示に応答する前記不揮発性メモリの書き込み制御では前記第１及び第２の不揮発性メモリを並列書き込み動作させ、書き込みエラーに係る不揮発性メモリの記憶領域を別の記憶領域に代替させる代替制御では書込みエラーを生じた不揮発性メモリの記憶領域を当該不揮発性メモリの別の記憶領域に代替可能にすることを特徴とするメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリを搭載したメモリカード、不揮発性のメモリカードに適用されるメモリコントローラに関し、例えばハードディスク互換のフラッシュッメモリ搭載メモリカードに適用して有効な技術に関する。
【背景技術】
【０００２】
フラッシュメモリ等の電気的に消去及び書き込み可能な不揮発性メモリを用いたメモリカードでは、カード基板に、不揮発性メモリとそのアクセス制御及び外部インタフェース制御などを行なうメモリコントローラとを搭載して構成される。不揮発性メモリとメモリコントローラとの間のデータ転送ビット数は不揮発性メモリのデータ入出力ビット数に等しくしてもよいが、データ転送効率が悪い場合もある。そのため、複数の不揮発性メモリをメモリコントローラに並列接続し、データ転送の並列ビット数を増やすことが可能である。この点に着目した従来技術として、特開平６−３４２３９９号、特開平７−３６７８７号公報に記載の並列書き込み技術、特開平１０−１８７３５９号公報に記載の２個のフラッシュメモリに対するインタリーブ書き込み技術などがある。
【０００３】
【特許文献１】特開平６−３４２３９９号公報
【特許文献２】特開平７−３６７８７号公報
【特許文献３】特開平１０−１８７３５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明者は複数の不揮発性メモリを用いた並列アクセス技術について検討した。第１の検討事項はアクセスエラーを生じたときの記憶領域の代替制御機能との関係である。例えばハードディスク互換のメモリカードにおいて書き込みエラーなどのアクセスエラーを生じたとき、セクタ単位で記憶領域の代替が行われる。１セクタ分のデータが複数個の不揮発性メモリに分散されているとき、セクタ単位で代替を行なうと、実際に書きこみエラーを生じていないフラッシュメモリの記憶領域も代替対象とされ、不揮発性メモリの記憶領域が無駄になり、代替不能状態に陥るまでの期間が短くなるという懸念もある。
【０００５】
第２の検討事項はＥＣＣなどによるエラー検出・訂正動作との関係である。即ち、記憶情報の信頼性を向上させる為に通常は、ＥＣＣのような技術として、書込みデータに対するエラー検出コードの付加、読み出しデータに対するエラー検出・訂正を行なうのが通例である。このようなエラー検出・訂正機能を考慮すると、メモリコントローラが単に不揮発性メモリを並列アクセスするだけでは足りないことが明らかにされた。例えば、メモリコントローラが複数の不揮発性メモリを並列アクセスして高速にデータをリードしても、そのリードデータに対してエラー検出・訂正処理を行なうＥＣＣ回路の動作が追従しなければ、また、書き込みデータに付加すべきエラー検出コードの生成動作が速くなければ、メモリカード全体としてのアクセスの高速化を実現することができない。
【０００６】
本発明の目的は、不揮発性メモリを用いたメモリカードにおけるアクセスの高速化を実現することにある。
【０００７】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【０００９】
〔１〕本発明に係るメモリカードは、複数の不揮発性メモリ、及び前記不揮発性メモリの動作を制御するメモリコントローラを有する。前記メモリコントローラは、外部からのアクセス指示に応答する前記不揮発性メモリのアクセス制御、及びアクセスエラーに係る不揮発性メモリの記憶領域を別の記憶領域に代替させる代替制御を行う。
【００１０】
このときメモリコントローラは、第１に、前記アクセス制御では前記複数の不揮発性メモリを並列アクセス動作させる。例えば、２個の不揮発性メモリとして第１及び第２の不揮発性メモリを想定すると、前記メモリコントローラは、セクタデータの偶数番目のデータの記憶領域に第１の不揮発性メモリを割り当て、セクタデータの奇数番目のデータの記憶領域に第２の不揮発性メモリを割り当てる。前記並列アクセス動作では、第１及び第２の不揮発性メモリを並列にリード動作させ、また、並列に書き込み動作させる。メモリコントローラが複数の不揮発性メモリを並列アクセスするということは、メモリコントローラとフラッシュメモリとの間のデータバス幅若しくはデータ転送並列ビット数が多いということであり、フラッシュメモリとの間のデータ転送速度の高速化が実現できる。
【００１１】
前記メモリコントローラは、第２に、前記代替制御ではアクセスエラーを生じた不揮発性メモリ毎に記憶領域を代替可能にする。要するに、複数個の不揮発性メモリ毎に、代替制御の為のアドレス管理情報を持たせる。例えば、あるセクタデータの偶数番目のデータでアクセスエラーを生じたときは第１の不揮発性メモリにおける当該偶数番目のデータの記憶領域を別のメモリアドレスで代替させ、アクセスエラーを生じていない奇数番目のデータには元々のメモリアドレスを割当てる。このように、複数の不揮発性メモリの代替制御の為のエリア管理を夫々の不揮発性メモリ単位に行うから、不良アドレスに対する代替領域を効率良く利用でき、代替に際して記憶領域の無駄を低減でき、メモリカードの寿命を延ばすことに寄与することができる。要するに、一つのセクタデータを複数の不揮発性メモリに分散配置したとき、セクタデータ単位の代替を行えば、各不揮発性メモリで一つずつ代替セクタドレスを費やすことになるが、ここでは、そのような無駄を省いている。
【００１２】
前記メモリコントローラは、第３に、不揮発性記憶装置との間のデータ転送効率を向上させたことに対してＥＣＣ回路の動作を追従させる。即ち、前記メモリコントローラが備えるＥＣＣ回路は、前記並列アクセス動作される前記不揮発性メモリの入出力動作周波数に対して前記並列アクセス動作の並列数倍の動作周波数で入出力動作を行なうようになっている。これにより、ＥＣＣ回路のハードウェアを増大させずにエラー検出コードの生成やエラー検出・訂正処理の高速化を実現できる。
【００１３】
また、ＥＣＣ回路を前記並列アクセス動作の並列数に相当する複数個設ける場合には、その動作周波数を上げることなく、前記並列アクセス動作される前記不揮発性メモリの入出力動作周波数に等しい動作周波数で並列的に入出力動作を行なうようにすればよい。
【００１４】
上記より、メモリコントローラが複数の不揮発性メモリを並列アクセスして高速にデータをリードしたとき、そのリードデータに対してエラー検出・訂正処理を行なうＥＣＣ回路の動作を追従させることができ、また、書き込みデータに付加すべきエラー検出コードの生成動作を高速化できるから、メモリカード全体としてのアクセスの高速化を実現することができる。
【００１５】
〔２〕本発明に係るメモリコントローラは、所定のプロトコルにしたがって入出力動作可能なホストインタフェース回路と、複数の不揮発性メモリに並列接続可能なメモリインタフェース回路と、前記ホストインタフェース回路及びメモリインタフェース回路に接続された制御回路とを有する。前記制御回路は、前記ホストインタフェース回路を介する外部インタフェース制御、外部からのアクセス指示に応答する前記メモリインタフェース回路を介する前記不揮発性メモリのアクセス制御、及びアクセスエラーに係る不揮発性メモリの記憶領域を別の記憶領域に代替させる代替制御を行う。特に制御回路は、第１に、前記アクセス制御では前記複数の不揮発性メモリを並列アクセス動作させる。これによって不揮発性メモリ間のデータ転送速度の高速化が実現できる。第２に、前記代替制御ではアクセスエラーを生じた不揮発性メモリ毎に記憶領域を代替可能にする。これにより、代替に際して記憶領域の無駄を低減でき、メモリカードの寿命を延ばすことに寄与することができる。第３に不揮発性記憶装置との間のデータ転送効率の向上にＥＣＣ回路の動作を追従させるから、エラー検出コードの生成やエラー検出・訂正処理の点においても、メモリカード全体としての高速アクセスの実現に寄与する。
【００１６】
〔３〕更に別の観点による本発明のメモリカードは、制御回路と、複数の不揮発性メモリと、外部装置に接続される外部インタフェース回路と、バスとを有する。前記複数の不揮発性メモリは複数の入出力端子（Ｉ／Ｏ０〜Ｉ／Ｏ７）を有する。前記バスは、第１のビット幅を有し、前記所定数毎に分割され、対応する前記不揮発性メモリの入出力端子に接続される。前記制御回路は前記複数の不揮発性メモリへのアクセス制御を行い、不揮発性メモリへのアクセスにおいてアクセスエラーが発生したときアドレス代替処理を不揮発性メモリ毎に行なう。これにより、上記複数の不揮発性メモリに対する並列アクセスの第１の点、上記メモリ単位に置き換える第２の点と同様の作用及び効果を得る。
【００１７】
更に別の観点による本発明のメモリカードは、制御回路（４１，４２，４３）と、複数の不揮発性メモリと、ｎ（１以上の整数）個のエラー検出・訂正回路と、バスとを有する。前記制御回路は前記複数の不揮発性メモリへのアクセス制御を行う。前記複数の不揮発性メモリは夫々第１のビット幅Ｗ１の入出力端子を有し、アクセス周波数Ｆ１でアクセス可能である。前記バスは、Ｗ１×ｍのビット幅を有し、ｍ個の不揮発性メモリの入出力端子に並列に接続される。前記エラー検出・訂正回路は、ビット幅Ｗ２のデータについてエラー検出・訂正が可能である。前記エラー検出・訂正回路の動作周波数Ｆ２は、Ｆ２≧（Ｆ１×Ｗ１×ｍ）／（Ｗ２×ｎ）の関係を満足する。これにより、不揮発性記憶装置との間のデータ転送効率の向上にＥＣＣ回路の動作を追従させる第３の点と同様の作用及び効果を得る。
【００１８】
更に別の観点による本発明のメモリコントローラは、制御回路（４１，４２，４３）と、第１のビット幅を有する入出力端子（１２，１３に接続する入出力端子）と、１又はそれ以上の個数のエラー検出・訂正回路を有する。前記エラー検出・訂正回路は前記入出力端子を介して入出力が行われるデータのエラー訂正を行う。前記制御回路は、アドレス代替機能を有し、前記入出力端子を介してのデータの入出力の制御を行ない、あるアドレスでのデータ入出力においてアクセスエラーが発生したとき、前記入出力端子を第２のビット幅毎のグループに分割し、アクセスエラーが生じたグループについてアドレスの代替を行なうものである。これによっても、上記複数の不揮発性メモリに対する並列アクセスの第１の点、上記メモリ単位に置き換える第２の点と同様の作用及び効果を得る。
【発明の効果】
【００１９】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００２０】
すなわち、メモリコントローラは、外部からのアクセス指示に応答する不揮発性メモリのアクセス制御では前記複数の不揮発性メモリを並列アクセス動作させるから、メモリコントローラと不揮発性メモリとの間のデータバス幅若しくはデータ転送並列ビット数を多くでき、不揮発性メモリとの間のデータ転送速度の高速化を実現することができる。
【００２１】
前記メモリコントローラは、アクセスエラーに係る不揮発性メモリの記憶領域を別の記憶領域に代替させる代替制御ではアクセスエラーを生じた不揮発性メモリ毎に記憶領域を代替可能にする。したがって、不良アドレスに対する代替領域を効率良く利用でき、代替に際して記憶領域の無駄を低減でき、メモリカードの寿命を延ばすことに寄与することができる。
【００２２】
複数の不揮発性メモリに対する並列アクセスを可能にする構成に対し、エラー検出・訂正回路のデータ入出力動作周波数を逓倍し、或はエラー検出・訂正回路それ自体の数を増やす。これにより、メモリコントローラが複数の不揮発性メモリを並列アクセスして高速にデータをリードしたとき、そのリードデータに対してエラー検出・訂正処理を行なうＥＣＣ回路の動作を追従させることができ、また、書き込みデータに付加すべきエラー検出コードの生成動作を高速化できる。したがって、メモリカード全体としてのアクセスの高速化を実現することができる。
【発明を実施するための最良の形態】
【００２３】
図１には本発明に係るメモリカードの一例が示される。メモリカード１は複数個の不揮発性メモリ例えば２個のフラッシュメモリ２，３と、ＤＲＡＭ（Dynamic Random Access memory）又はＳＲＡＭ（Static Random Access Memory）等から成るデータバッファ４と、メモリ制御及び外部インタフェース制御を行うメモリコントローラ５とを、実装基板に備えて成る。
【００２４】
前記データバッファ４は、特に制限されないが、１６ビットのデータ入出力用バッファバス１０とアドレス及びアクセス制御バス１１を介してメモリコントローラ５のアクセス制御を受ける。
【００２５】
フラッシュメモリ２は１６ビットの入出力用フラッシュバスの上位８ビット（上位フラッシュバス）１２に、フラッシュメモリ３は前記フラッシュバスの下位８ビット（下位フラッシュバス）１３に接続され、メモリコントローラ５との間でデータ、アドレス信号、及びコマンドの入出力が可能にされる。１４、１５はメモリコントローラ５からフラッシュメモリ２，３に別々に接続されるアクセス制御バスである。フラッシュメモリ２，３は、夫々のフラッシュバス１２，１３とアクセス制御バス１４，１５を介してメモリコントローラ５により並列的にアクセス制御可能にされる。
【００２６】
尚、前記アクセス制御バス１４，１５にはチップ選択信号、コマンドイネーブル信号、出力イネーブル信号等が伝達され、出力イネーブル信号等の一部のストローブ信号はフラッシュメモリ２，３の間で共通化することも可能である。
【００２７】
前記フラッシュメモリ２，３は同一の回路構成を有する。例えばフラッシュメモリ２の一例が図２に示される。同図においてメモリアレイ２０は、メモリマット、データラッチ回路及びセンスラッチ回路を有する。このメモリマットは電気的に消去及び書き込み可能な不揮発性のメモリセルトランジスタを多数有する。メモリセルトランジスタ（フラッシュメモリセルとも記す）は、特に図示はしないが、半導体基板若しくはウェル内に形成されたソース及びドレイン、前記ソースとドレインとの間のチャンネル領域にトンネル酸化膜を介して形成されたフローティングゲート、そしてフローティングゲートに層間絶縁膜を介して重ねられたコントロールゲートによって構成される。コントロールゲートは対応するワード線２１に、ドレインは対応するビット線２２に、ソースは図示を省略するソース線に接続される。前記メモリセルトランジスタは、前記フローティングゲートに電子が注入されると閾値電圧が上昇し、また、前記フローティングゲートから電子を引き抜くと閾値電圧が低下する。前記メモリセルトランジスタは、データ読み出しのためのワード線電圧（コントロールゲート印加電圧）に対する閾値電圧の高低に応じた情報を記憶することになる。特に制限されないが、本明細書においてメモリセルトランジスタの閾値電圧が低い状態を消去状態、高い状態を書き込み状態と称する。尚、書き込みと消去の定義は相対的な概念であるから上記とは逆に定義することも可能である。
【００２８】
前記フラッシュバス１２に接続されるフラッシュメモリ２の外部入出力端子Ｉ／Ｏ０〜Ｉ／Ｏ７は、アドレス入力端子、データ入力端子、データ出力端子、コマンド入力端子に兼用される。外部入出力端子Ｉ／Ｏ０〜Ｉ／Ｏ７から入力されたＸアドレス信号はマルチプレクサ２４を介してＸアドレスバッファ２５に供給される。Ｘアドレスデコーダ２６はＸアドレスバッファ２５から出力される内部相補アドレス信号をデコードしてワード線２１を駆動する。
【００２９】
前記ビット線２２の一端側には、センスラッチ回路が設けられ、他端にはデータラッチ回路が設けられている。ビット線２２はＹアドレスデコーダ２７から出力される選択信号に基づいてＹスイッチアレイ２８で選択される。外部入出力端子Ｉ／Ｏ０〜Ｉ／Ｏ７から入力されたＹアドレス信号はＹアドレスカウンタ２９にプリセットされ、プリセット値を起点に順次インクリメントされたアドレス信号が前記Ｙアドレスデコーダ２７に与えられる。
【００３０】
Ｙスイッチアレイ２８で選択されたビット線は、データ出力動作時には出力バッファ３０の入力端子に導通され、データ入力動作時には入力バッファ３１を介してデータ制御回路３２の出力端子に導通される。出力バッファ３０、入力バッファ３１と前記入出力端子Ｉ／Ｏ０〜７との接続は前記マルチプレクサ２４で制御される。入出力端子Ｉ／Ｏ０〜Ｉ／Ｏ７から供給されるコマンドはマルチプレクサ２４及び入力バッファ３１を介してモード制御回路３３に与えられる。
【００３１】
制御信号バッファ回路３５はアクセス制御信号として、チップイネーブル信号／ＣＥ、出力イネーブル信号／ＯＥ、書き込みイネーブル信号／ＷＥ、シリアルクロック信号ＳＣ、リセット信号／ＲＥＳ及びコマンドイネーブル信号／ＣＤＥを入力する。信号名の直前に記付された記号／は当該信号がロー・イネーブルであることを意味する。モード制御回路３３は、それら信号の状態に応じてマルチプレクサ２４を介する外部との信号インタフェース機能などを制御する。入出力端子Ｉ／Ｏ０〜Ｉ／Ｏ７からのコマンド入力は前記コマンドイネーブル／ＣＤＥに同期される。データ入力はシリアルクロックＳＣに同期される。アドレス情報の入力はライトイネーブル信号／ＷＥに同期される。モード制御部３３は、コマンドコードにより消去又は書込み動作の開始が指示されると、その期間、消去や書込み動作中を示すレディー・ビジー信号Ｒ／Ｂをアサートして外部に出力する。
【００３２】
内部電源回路（内部電圧発生回路）３６は、書込み、消去、ベリファイ、読み出しなどのための各種内部電圧とされる動作電源３７を生成して、前記Ｘアドレスデコーダ２６及びメモリセルアレイ２０等に供給する。
【００３３】
前記モード制御回路３３は、入力コマンドに従ってフラッシュメモリを全体的に制御する。フラッシュメモリ２の動作は、基本的にコマンドによって決定される。フラッシュメモリ２のコマンドには、読み出し、消去、書込み等の各コマンドがある。例えば読み出しコマンドは、読み出しコマンドコード、読み出しＸアドレス、及び必要なＹアドレスを含む。書込みコマンドは、書込みコマンドコード、Ｘアドレス、必要なＹアドレス、及び書込みデータを含む。
【００３４】
フラッシュメモリ２はその内部状態を示すためにステータスレジスタ３８を有し、その内容は、信号／ＯＥをアサートすることによって入出力端子Ｉ／Ｏ０〜Ｉ／Ｏ７から読み出し可能にされる。
【００３５】
図１において、前記メモリコントローラ５は、例えばホストコンピュータ（ホスト装置）６との間でＩＤＥディスクインタフェース仕様などに従った外部インタフェース制御を行う。メモリコントローラ５は、ホストコンピュータからの指示に従って、フラッシュメモリ２、３をアクセスするアクセス制御機能を有する。このアクセス制御機能はハードディスク互換の制御機能であり、例えばホストコンピュータ６がセクタデータの集合をファイルデータとして管理するとき、メモリコントローラ５は論理アドレスとしてのセクタアドレスと物理メモリアドレスとを対応させてフラッシュメモリ２，３のアクセス制御を行う。このとき、前記メモリコントローラ５は、セクタデータの偶数番目のデータの記憶領域に一方のフラッシュメモリ２を割り当て、セクタデータの奇数番目のデータの記憶領域に他方のフラッシュメモリ３を割り当てる。そして、メモリコントローラ５は前記フラッシュメモリ２，３を並列にリード動作させ、また、並列に書き込み動作させる。メモリコントローラ５による上記並列アクセス制御機能により、メモリコントローラ５とフラッシュメモリ２，３との間のデータバス幅若しくはデータ転送並列ビット数が多くなり、フラッシュメモリとの間のデータ転送速度の高速化が実現できる。このアクセス制御機能にしたがってフラッシュメモリ２をアクセスするときＥＣＣ機能によりライトデータに対してエラーコードの付加、リードデータに対してエラー検出・訂正を行なう。更に上記アクセス制御機能にしたがってフラッシュメモリ２、３へ消去又は書き込みを行なうとき、ベリファイ動作で消去不良又は書き込み不良（アクセスエラー）が発生した場合には、当該不良領域を代替領域に代替させる代替制御機能を備える。
【００３６】
図１に従えば、前記メモリコントローラ５は、ホストインタフェース回路４０、演算制御手段としてのマイクロプロセッサ（ＭＰＵ）４１、メモリインタフェース回路としてのフラッシュインタフェース回路４２、バッファコントローラ４３、及びＥＣＣ回路４４を備える。前記ＭＰＵ４１、バッファコントローラ４３、及びＥＣＣ回路４４はメモリコントローラ５の制御回路を構成する。
【００３７】
ＭＰＵ４１は、ＣＰＵ（Central Processing Unit）及びそのプログラムメモリ（ＰＧＭ）などを有し、メモリコントローラ５を全体的に制御する。プログラムメモリはＣＰＵの動作プログラムなどを保有する。
【００３８】
前記ホストインタフェース回路４０は、ＡＴＡ（ATAttachment）、ＩＤＥ（Integrated Device Electronics）、ＳＣＳＩ（Small Computer System Interface）等の所定のプロトコルに従って、パーソナルコンピュータ又はワークステーションなどのホストコンピュータ６とインタフェースを行う回路である。ホストインタフェース動作の制御はアクセスバス４５を介してＭＰＵ４１が行う。上記プロトコルは公知であるから詳細な説明を省略する。
【００３９】
前記バッファコントローラ４３はアクセスバス４６を介してＭＰＵ４１から与えられるアクセス指示に従って、データバッファ４のメモリアクセス動作を制御する。データバッファ４にはホストインタフェース回路４０に入力されたデータ、又はホストインタフェース回路４０から出力するデータが一時的に保持される。また、データバッファ４には、フラッシュメモリ２、３から読み出されたデータ又はフラッシュッメモリ２，３に書き込まれるデータが一時的に保持される。
【００４０】
フラッシュインタフェース回路４２はアクセスバス４７を介してＭＰＵ４１から与えられるアクセス指示に従って、フラッシュメモリ２、３に対する、読み出し動作、消去動作及び書き込み動作を制御する。フラッシュインタフェース回路４２は、読み出し動作において読み出しコマンドコードや読み出しアドレス情報等の読み出し制御情報を出力し、書き込み動作において書き込みコマンドコード及び書き込みアドレス情報などの書き込み制御情報を出力し、消去動作において消去コマンド等の消去制御情報を出力する。前述の如く、フラッシュインタフェース回路４２はフラッシュメモリ２，３に対する読み出し、書き込みのアクセス動作を並列に行う。要するに、リードデータの入力、書込みコマンドコード及び書込みデータの出力をフラッシュバス１２，１３を介して１６ビット幅で行う。
【００４１】
ＥＣＣ回路４４は、前記アクセス制御機能の一環として、アクセスバス４８を介してＭＰＵ４１から与えられる指示に従って、フラッシュメモリ２、３に書き込むデータに対してエラー訂正符号（エラー訂正コード）を生成して、書込みデータに付加する。また、フラッシュメモリ２、３から読み出された読み出しデータを当該読み出しデータに付加されているエラー訂正符号を用いてエラー検出・訂正処理を行い、そのエラー訂正能力範囲のエラー発生に対してエラー訂正を行う。フラッシュインタフェース回路４２とＥＣＣ回路４４は８ビットのデータバス４９を介してデータ伝送を行う。このＥＣＣ回路４４は、フラッシュメモリ２，３が併せて１６ビット幅で並列データ転送を行うという処理能力に追従するために、並列アクセス動作される前記フラッシュメモリ２，３の入出力動作周波数に対して並列アクセス動作の並列数倍即ち２倍の動作周波数で入出力動作を行なう。これにより、ＥＣＣ回路４４のハードウェアを増大させずに、フラッシュバス１２，１３を介するデータアクセスの高速化に追従させてエラー検出コードの生成やエラー検出・訂正処理を高速化することができる。
【００４２】
図３にはフラッシュメモリ２の記憶領域が例示される。図４にはフラッシュメモリ３の記憶領域が例示される。フラッシュッメモリ２、３の記憶領域は、ユーザデータエリアＡｒｅＵ、代替エリアＡｒｅＲ、及び代替管理エリアＡｒｅＭに大別される。各エリアＡｒｅＵ，ＡｒｅＲ，ＡｒｅＭは、特に制限されないが、夫々データ部ＰｒｔＤと管理部ＰｒｔＭに大別される所定フォーマットの領域を単位領域ＢＬＫとして有する。フラッシュメモリ２の各単位領域ＢＬＫには便宜上その物理アドレスとしてセクタアドレスＳＡ１（ＳＡ１（０）〜ＳＡ１（９９））が割り当てられる。フラッシュメモリ３の各単位領域ＢＬＫには便宜上その物理アドレスとしてセクタアドレスＳＡ２（ＳＡ２（０）〜ＳＡ２（９９））が割り当てられる。
【００４３】
前記ユーザデータエリアＡｒｅＵは例えばユーザに開放されるデータ領域とされる。フラッシュメモリ２のデータ部ＰｒｔＤは図３に例示されるようにセクタデータの偶数番目バイトのデータを保持し、フラッシュメモリ３のデータ部ＰｒｔＤは図４に例示されるようにセクタデータの奇数番目バイトのデータを保持する。経時的にユーザデータエリアＡｒｅＵで消去エラー又は書込みエラーを生じたとき、エラーを生じたユーザデータエリアＡｒｅＵの単位領域ＢＬＫを代替するのに前記代替エリアＡｒｅＲが用いられる。代替の単位は単位領域ＢＬＫを最小単位とする。
【００４４】
例えば、図３のフラッシュメモリ２においてセクタアドレスＳＡ１（ｎ）のデータ部ＰｒｔＤは、セクタデータ２ｎの偶数番目バイトのデータ（例えば５１２バイトの各バイトデータの内の偶数番目の２５６バイトデータ）ＥｖＤ（２ｎ）、前記セクタデータ２ｎの偶数番目バイトのデータに関するエラー検出コードとしてのＥＣＣ符号ＥｖＣ（２ｎ）、セクタデータ２ｎ＋１の偶数番目バイトのデータ（例えば５１２バイトの各バイトデータの内の偶数番目の２５６バイトデータ）ＥｖＤ（２ｎ＋１）、及び前記セクタデータ２ｎ＋１の偶数番目バイトのデータに関するエラー検出コードとしてのＥＣＣ符号ＥｖＣ（２ｎ＋１）を含む。セクタアドレスＳＡ１（ｎ）の管理部ＰｒｔＭはセクタアドレスｎの管理情報として、良セクタコード、識別情報、その他管理情報、及びＥＣＣ符号を有する。良セクタコードはセクタアドレスＳＡ１（ｎ）の良又は不良を示すコードデータである。識別情報は対応するデータ部がユーザデータ、代替済み、空き、又は代替エリア管理エリアの何れに属するかを示すコードデータとされる。その他の管理情報は特に定めなくてもよい。ＥＣＣ符号は良セクタコード、識別情報、その他管理情報に対するエラー検出・訂正用の冗長情報とされる。
【００４５】
図４のフラッシュメモリ３においてセクタアドレスＳＡ２（ｎ）のデータ部ＰｒｔＤは、セクタデータ２ｎの奇数番目バイトのデータ（例えば５１２バイトの各バイトデータの内の奇数番目の２５６バイトデータ）ＯｄＤ（２ｎ）、前記セクタデータ２ｎの奇数番目バイトのデータに関するエラー検出コードとしてのＥＣＣ符号ＥｖＣ（２ｎ）、セクタデータ２ｎ＋１の奇数番目バイトのデータ（例えば５１２バイトの各バイトデータの内の奇数番目の２５６バイトデータ）ＯｄＤ（２ｎ＋１）、及び前記セクタデータ２ｎ＋１の奇数番目バイトのデータに関するエラー検出コードとしてのＥＣＣ符号ＯｄＣ（２ｎ＋１）を含む。フラッシュメモリ３の管理部ＰｒｔＭが保有する管理情報は図３のフラッシュメモリと同様の意義を有する。
【００４６】
代替管理エリアＡｒｅＭは、特に制限されないが、ユーザデータエリアＡｒｅＵの単位領域ＢＬＫに対応する不良登録データを代替エリア管理テーブルとして有する。個々の不良登録データは代替先の単位領域のアドレスを特定する代替先アドレス情報とされる。例えば図５にはフラッシュメモリ２における代替エリア管理テーブルが例示され、一つの不良登録データは２バイトとされ、セクタアドレス毎に不良登録データ領域が割り当てられ、不良登録データはＦＦＦＦｈによって代替不要を意味し、代替を要するときは代替先セクタアドレスのコードが保持される。図５の例は、図３においてフラッシュメモリ２のセクタアドレスＳＡ１（１）における不良をセクタアドレスＳＡ１（９０）で代替する場合を示している。フラッシュメモリ３における代替エリア管理テーブルを示す図６の例は、図４においてフラッシュメモリ３のセクタアドレスＳＡ２（ｎ）における不良をセクタアドレスＳＡ２（９０）で代替する場合を示している。図５及び図６の例からも明らかなように、不良登録データと単位領域ＢＬＫとの対応は一対一対応とされる。したがって、単位領域ＢＬＫの物理アドレスに基づいてアドレス演算を行うことにより、対応する不良登録データを得ることができる。
【００４７】
前記メモリコントローラ５は、代替制御ではアクセスエラーを生じたフラッシュメモリ毎に記憶領域を代替可能にする。要するに、一つのセクタデータを偶数バイトと奇数バイトに分けて２個のフラッシュメモリ２，３に分散配置させたとき、フラッシュメモリ２，３毎に、代替制御の為の代替エリア管理テーブルを持たせる。例えば、セクタデータの偶数番目バイトのデータでアクセスエラーを生じたときはフラッシュメモリ２における当該偶数番目バイトのデータのセクタアドレスを代替エリアの別のセクタアドレスで代替させ、アクセスエラーを生じていない奇数番目バイトのデータにはフラッシュメモリ３の元々のセクタアドレスを割当てる。このように、フラッシュメモリ２，３を代替制御する為のエリア管理を夫々のフラッシュメモリ２，３毎に行うから、不良アドレスに対する代替領域を効率良く利用でき、代替に際して記憶領域の無駄を低減でき、メモリカード１の寿命を延ばすことが可能になる。要するに、一つのセクタデータを複数のフラッシュメモリ２，３に分散配置したとき、セクタデータ単位の代替を行えば、各フラッシュメモリ２，３で一つずつ代替セクタドレスを費やすことになり、そのような無駄を省いている。
【００４８】
図７及び図８にはセクタデータの書込み動作手順が例示される。ホストコンピュータ６がメモリカード１に論理アドレスとライトコマンドを発行すると（Ｓ１）、ホストインタフェース回路４０はライトコマンドが発行されたことをＭＰＵ４１のＣＰＵに通知すると共に、ホストコンピュータ６にセクタライトデータの入力準備が完了したこと（データ入力レディー状態）を通知する。これによってホストコンピュータ６から供給されるセクタデータがホストインタフェース回路４０に入力され、入力されたセクタライトデータがバッファコントローラ４３を介してデータバッファ４に格納される（Ｓ２）。ＭＰＵ４１のＣＰＵはホストコンピュータ６から与えられた論理アドレスをフラッシュメモリ２，３の物理アドレスであるセクタアドレスＳＡ１，ＳＡ２に変換し、フラッシュインタフェース回路４２を介して当該セクタアドレスＳＡ１，ＳＡ２の管理部ＰｒｔＭの管理情報をリードさせ、リードした管理情報をバッファコントローラ４３を介してデータバッファ４にストアする（Ｓ３）。ＭＰＵ４１のＣＰＵはストアされたセクタアドレスＳＡ１の管理情報に対するＥＣＣ結果がＯＫであるとき、そのセクタアドレスＳＡ１の管理情報に含まれる良セクタコードに基づいて当該セクタの良否を判定する（Ｓ４）。判別結果が不良セクタ又はＥＣＣによる訂正不能なエラー発生（ＥＣＣ＝ＮＧ）であるなら、代替先アドレスの検索処理が行われる（Ｓ５）。判別結果が良セクタ及びＥＣＣによる訂正不能なエラー無し（ＥＣＣ＝ＯＫ）であるなら、今度は、ストアしたセクタアドレスＳＡ２の管理情報に含まれる良セクタコードのＥＣＣと該セクタの良否とを判定する（Ｓ６）。判別結果が不良セクタ又はＥＣＣによる訂正不能なエラー発生（ＥＣＣ＝ＮＧ）であるなら、代替先アドレスの検索処理が行われる（Ｓ７）。尚、セクタアドレスＳＡ１，ＳＡ２を別のセクタアドレスに代替した場合も当該代替先セクタアドレスを便宜上セクタアドレスＳＡ１，ＳＡ２と称する。
【００４９】
次いで、ＭＰＵ４１のＣＰＵは、フラッシュメモリ２のセクタアドレスＳＡ１及びフラッシュメモリ３のセクタアドレスＳＡ２に対して消去動作を開始させる（Ｓ８）。消去動作に並行してＭＰＵ４１のＣＰＵはホストコンピュータ６からデータバッファ４に書込みセクタデータが転送されたか否かを判定する（Ｓ９）。ＭＰＵ４１のＣＰＵは夫々のフラッシュメモリ２，３に対して消去チェック処理を行う（Ｓ１０，Ｓ１１）。消去チェック処理の後、ＭＰＵ４１のＣＰＵはバッファコントローラ４３とフラッシュインタフェース回路４２とを介してデータバッファ４からフラッシュメモリ２，３に書込みセクタアドレスＳＡ１，ＳＡ２及び書込みセクタデータ等を転送し、転送後に、フラッシュメモリ２，３の書込み（プログラム）動作を開始させる（Ｓ１２）。プログラム動作の開始後、ＣＰＵはフラッシュメモリ２，３に対するプログラムチェック処理を行う（Ｓ１３，Ｓ１４）。
【００５０】
図９には前記Ｓ５，Ｓ７の代替先アドレス検索処理手順が例示される。先ず、ＭＰＵ４１のＣＰＵは処理対象とするフラッシュメモリ（処理Ｓ５の場合にはフラッシュメモリ２、処理Ｓ７の場合にはフラッシュメモリ３）の代替管理エリアＡｒｅＭの管理情報をデータバッファ４にストアさせる（Ｓ２０）。ＣＰＵはその管理情報に対するＥＣＣ結果がＯＫであるとき、その管理情報に含まれる良セクタコードに基づいて当該セクタの良否を判定する（Ｓ２１）。判別結果が不良セクタ又はＥＣＣによる訂正不能なエラー発生（ＥＣＣ＝ＮＧ）であるなら、ＣＰＵはホストコンピュータ６にエラー発生を通知して、ライトコマンドに対する処理を終了する（Ｓ２２）。判別結果が良セクタ及びＥＣＣによる訂正不能なエラー無し（ＥＣＣ＝ＯＫ）であるなら、ＣＰＵは今度は、当該代替管理エリアＡｒｅＭの代替エリア管理テーブルをデータバッファ４へストアする（Ｓ２３）。ＣＰＵはデータバッファ４にストアされた代替エリア管理テーブルから、対応する領域に格納されている代替先アドレスをリードし、これを代替されたセクタアドレスＳＡ１又はＳＡ２として採用する（Ｓ２４）。
【００５１】
図１０には前記Ｓ１０，Ｓ１１のフラッシュメモリの消去チェック処理の手順が例示される。消去動作が開始されると、フラッシュメモリ２（３）は消去対象メモリセルに消去電圧を印加しながらベリファイを繰返す動作を一定期間行う。ＭＰＵ４１のＣＰＵはフラッシュメモリ２（３）の消去動作が終了したか否かを判別する（Ｓ３０）。消去動作の終了結果は、消去対象メモリセルの全てが消去状態の閾値電圧状態に到達する状態と、到達しない消去エラー状態であり、ＣＰＵはその結果をフラッシュメモリ２（３）のステータスレジスタをリードして判定する（Ｓ３１）。消去エラーの場合、ＣＰＵは代替先アドレス検索処理を行い（Ｓ３２）、フラッシュメモリ２（３）の代替先セクタアドレスに対して消去動作を開始させ、再度ステップＳ３０の処理に戻る。ステップＳ３２の代替先アドレス検索処理では、代替エリアＡｒｅＲの管理情報を、セクタアドレスの小さい方から順次読み出し、最初に見つけた空きを代替先アドレスとする。消去エラーが発生しない場合にはステップＳ３２およびＳ３３によって代替が発生したかをチェックし（Ｓ３４）、代替が発生した場合には、代替エリア管理テーブルに、新規の代替先アドレスを登録し（Ｓ３５）、代替が発生していない場合には消去チェック処理を終了する。
【００５２】
図１１には前記Ｓ１３，Ｓ１４のフラッシュメモリのプログラムチェック処理の手順が例示される。プログラム動作が開始されると、フラッシュメモリ２（３）はプログラム対象メモリセルに書き込み電圧を印加しながらベリファイを繰返す動作を一定期間行う。ＭＰＵ４１のＣＰＵはフラッシュメモリ２（３）の書き込み動作が終了したか否かを判別する（Ｓ４０）。プログラム動作の終了結果は、プログラム対象メモリセルの全てが書き込み状態の閾値電圧状態に到達する状態と、到達しないプログラムエラー状態であり、ＣＰＵはその結果をフラッシュメモリ２（３）のステータスレジスタをリードして判定する（Ｓ４１）。プログラムエラーの場合、ＣＰＵは代替先アドレス検索処理を行い（Ｓ４２）、フラッシュメモリ２（３）の代替先セクタアドレスに対して消去動作を開始させ、その消去対象エリアに対して図１０の消去チェック処理を行う（Ｓ４４）。Ｓ４２の代替先アドレス検索処理は、図１０のＳ３２と同様に、代替エリアＡｒｅＲの管理情報を順次読み出し、空きの単位領域ＢＬＫを代替先アドレスとする。消去チェック処理が正常終了したとき、ＭＰＵ４１のＣＰＵは再び、バッファコントローラ４３とフラッシュインタフェース回路４２を介してデータバッファ４からフラッシュメモリ２（３）に書込み書込みセクタデータ等の転送を指示し、転送後に、フラッシュメモリ２（３）の書込み（プログラム）動作を開始させる（Ｓ４５）。開始されたプログラム動作に対してＣＰＵの処理が前記ステップＳ４０に戻される。フラッシュメモリへのプログラムが正常終了した後（Ｓ４１のＮｏ）、ステップＳ４２〜Ｓ４５によって代替が発生したかをチェックし（Ｓ４６）、代替が発生した場合には、代替エリア管理テーブルに新規の代替先アドレスを登録し（Ｓ４７）、代替が発生していない場合には、プログラムチェック処理を終了する。
【００５３】
図１２及び図１３にはホストコンピュータによるセクタデータのリード動作手順が例示される。ホストコンピュータ６がメモリカード１に論理アドレスとリードコマンドを発行すると（Ｓ５０）、ホストインタフェース回路４０はリードコマンドが発行されたことをＭＰＵ４１のＣＰＵに通知する（Ｓ５１）。ＭＰＵ４１のＣＰＵはホストコンピュータ６から与えられた論理アドレスをフラッシュメモリ２，３の物理アドレスであるセクタアドレスＳＡ１，ＳＡ２に変換し、フラッシュインタフェース回路４２を介して当該セクタアドレスＳＡ１，ＳＡ２の管理部ＰｒｔＭの管理情報をリードさせ、リードした管理情報をバッファコントローラ４３を介してデータバッファ４にストアする（Ｓ５２）。ＭＰＵ４１のＣＰＵはストアされたセクタアドレスＳＡ１の管理情報に対するＥＣＣ結果がＯＫであるとき、そのセクタアドレスＳＡ１の管理情報に含まれる良セクタコードに基づいて当該セクタの良否を判定する（Ｓ５３）。判別結果が不良セクタ又はＥＣＣによる訂正不能なエラー発生（ＥＣＣ＝ＮＧ）であるなら、ＣＰＵはフラッシュメモリ２の代替管理エリアＡｒｅＭの代替エリア管理テーブルをデータバッファ４へストアする（Ｓ５４）。ＣＰＵはデータバッファ４にストアされた代替エリア管理テーブルから、対応する領域に格納されている代替先アドレスをリードし、これを代替されたセクタアドレスＳＡ１として採用する（Ｓ５５）。この代替先セクタアドレスＳＡ１に対してＣＰＵはそのアドレスＳＡ１の管理情報をデータバッファ４へストアする（Ｓ５６）。ストアされたＭＰＵ４１のＣＰＵはストアされたセクタアドレスＳＡ１の管理情報に対するＥＣＣ結果がＯＫであるとき、そのセクタアドレスＳＡ１の管理情報に含まれる良セクタコードに基づいて当該セクタの良否を判定する（Ｓ５７）。判別結果が不良セクタ又はＥＣＣによる訂正不能なエラー発生（ＥＣＣ＝ＮＧ）であるなら、ＣＰＵはホストコンピュータ６にエラー応答を行って（Ｓ５８）、処理を終了する。
【００５４】
前記処理Ｓ５３又はＳ５７の処理結果が良セクタ及びＥＣＣによる訂正不能なエラー発生無（ＥＣＣ＝ＯＫ）である時は、フラッシュメモリ３に対して、上記処理Ｓ５３〜Ｓ５７の処理を行う（Ｓ５９〜Ｓ６３）。
【００５５】
フラッシュッメモリ３に対して前記処理Ｓ５９又はＳ６３の処理結果が不良セクタ及びＥＣＣ＝ＯＫであるとき、ＭＰＵ４１のＣＰＵは、フラッシュインタフェース回路４２を介して夫々のフラッシュメモリ２、３のセクタアドレスＳＡ１，ＳＡ２からセクタデータを並列リードさせ、リードデータに対してＥＣＣ回路４４でエラー検出・訂正処理を実行させ、エラー検出・訂正処理を経たリードデータを、バッファコントローラ４３を介してデータバッファ４にストアさせる（Ｓ６５）。このリード転送の終了を検出すると（Ｓ６５）、セクタリードデータに対してＥＣＣエラーが生じているかを判別し（Ｓ６６）、ＥＣＣエラーを生じている場合にはホストコンピュータ６にエラー応答を行ってリード処理を終了する。ＥＣＣエラーを生じていない場合には、ＣＰＵはホストインタフェース回路４０を介してホストコンピュータ６にデータ転送レディ状態を通知して、セクタデータを出力する（Ｓ６７）。ホストコンピュータ６はそのセクタデータをリードする（Ｓ６８）。
【００５６】
図１４にはデータバッファからフラッシュメモリへ一つのセクタデータを転送するときの転送タイミングが例示される。セクタデータはＤ０〜Ｄ５１１の５１２バイトとされ、偶数バイトＤ０，Ｄ２，…，Ｄ５１０がバッファバスの上位８ビットに、奇数バイトＤ１，Ｄ３，…，Ｄ５１１がバッファバスの下位８ビットに割当てられる。データバッファ４からバッファコントローラ４３に１６ビットのバッファバス１０で転送されたセクタデータはＥＣＣ回路４４に供給される。ＥＣＣ回路のバス幅は８ビット幅なので、バッファからの１回の読み出しに対して、２回に分けて１バイトずつＥＣＣ回路４４に入力する。例えば、ｔＷ１においてデータバッファ４から読み出したＤ０とＤ１のデータは、ｔＷ２においてＤ０に続いてＤ１の順でＥＣＣ回路４４に入力している。この時のＥＣＣバス４９上でのデータ転送動作周波数はバッファバス１０上のデータ転送動作周波数の２倍にされている。これに並行してフラッシュインタフェース回路４２からフラッシュメモリ２，３にもセクタデータが供給される。フラッシュバス１２，１３はバッファバス１０と同じ１６ビットであるからデータバッファ４からのデータ転送動作周波数と同じ動作周波数でフラッシュメモリにセクタデータが転送される。データバッファ４から一つのセクタデータの読み出しが終了し（ｔＷ４）、ＥＣＣ回路４４に一つのセクタデータの入力が完了すると（ｔＷ５）、ＥＣＣ回路４４には一つのセクタデータに対するＥＣＣ符号が生成されている。最後に、ＥＣＣ回路４４からＥＣＣ符号（Ｅ−０，Ｅ−１）を読み出し（ｔＷ６）、フラッシュメモリにＥＣＣ符号を転送する（ｔＷ７）。ＥＣＣ回路４４で生成されたＥＣＣコードがフラッシュインタフェース回路４２に供給されるときのデータ転送動作周波数も同様に２倍にされている。フラッシュインタフェース回路４２からフラッシュメモリ２，３には、ＥＣＣ符号Ｅ−０，Ｅ−１は並列に供給される。
【００５７】
図１５にはフラッシュメモリからデータバッファ４に一つのセクタデータを転送するときの転送タイミングが例示される。フラッシュメモリ２，３から２バイト並列でフラッシュバス１２，１３に読み出されたデータＤ０，Ｄ１，…Ｅ−０，Ｅ―１は、フラッシュインタフェース回路４２からＥＣＣバス４９経由で１バイト単位に順次ＥＣＣ回路４４に入力される。例えば、サイクルｔＲ１においてフラッシュメモリ２，３から読み出されたデータＤ０，Ｄ１は、サイクルｔＲ２においてＤ０に続いてＤ１の順でＥＣＣ回路４４に入力される。また、フラッシュメモリ２，３から２バイト並列で順次読み出されたデータは、バッファバス１０を介して２バイト並列のままデータバッファ４にストアされる。サイクルｔＲ６において、ＥＣＣ符号がＥＣＣ回路４４に転送っされた時点で、ＥＣＣ回路４４では、フラッシュメモリ２，３からリードしたデータに対するエラー検出が完了する。
【００５８】
図１４及び図１５より明らかなように、ＥＣＣバス４９上でのデータ転送動作周波数はバッファバス１０上のデータ転送動作周波数の２倍にされているから、フラッシュメモリ２，３の並列アクセスによる動作の高速化に対してＥＣＣ回路４４の動作を追従させることができる。
【００５９】
図１６には本発明に係るメモリカードの第２の例が示される。図１のメモリカードとの相違点は、メモリコントローラ５が２個のＥＣＣ回路４４Ａ，４４Ｂを有し、夫々別々に８ビットのＥＣＣバス４９Ａ，４９Ｂでフラッシュインタフェース回路４２に接続されていることである。第１のＥＣＣ回路４４Ａは、フラッシュメモリへのライト時に、第１のフラッシュメモリ２に格納されるセクタデータの偶数番目バイトのデータに対するＥＣＣ符号を生成する。フラッシュメモリからのリード時には、第１のフラッシュメモリ２から読み出されるセクタデータの偶数番目バイトのデータと生成されたＥＣＣ符号からエラー検出を行い、エラーがあった場合にはエラー訂正を行う。セクタデータ及びＥＣＣ符号の転送はＥＣＣバス４９Ａを介して行う。
【００６０】
第２のＥＣＣ回路４４Ｂは、フラッシュメモリへのライト時に、第２のフラッシュメモリ３に格納されるセクタデータの奇数番目バイトのデータに対するＥＣＣ符号を生成する。フラッシュメモリからのリード時には、第２のフラッシュメモリ３から読み出されるセクタデータの奇数番目バイトのデータと生成されたＥＣＣ符号からエラー検出を行い、エラーがあった場合にはエラー訂正を行う。セクタデータ及びＥＣＣ符号の転送はＥＣＣバス４９Ｂを介して行う。その他の構成は図１と同じであるからその詳細な説明は省略する。
【００６１】
図１７には図１６のメモリカードにおいてデータバッファからフラッシュメモリへ一つのセクタデータを転送する動作タイミングが例示される。
【００６２】
バッファバス１０にはデータバッファ４から２バイト並列でセクタデータが読み出される。データバッファ４から読み出された偶数番目バイトのデータＤ０，Ｄ２，…，Ｄ５１０は第１のＥＣＣバス４９Ａから第１のＥＣＣ回路４４Ａへ入力される。同様に、データバッファ４から読み出された奇数番目バイトのデータＤ１，Ｄ３，…，D５１１は第２のＥＣＣバス４９Ｂから第２のＥＣＣ回路４４Ｂへ入力される。要するに、図１４のように、ＥＣＣバス４９Ａ，４９Ｂ上のデータ転送動作周波数を２倍に高速化することを要しない。但しＥＣＣ回路のハードウェア量は２倍になる。第１のＥＣＣ回路４４Ａではセクタデータの偶数番目バイトのデータに対するＥＣＣ符号Ｅ−Ａが生成される。第２のＥＣＣ回路４４Ｂではセクタデータの奇数番目バイトのデータに対するＥＣＣ符号Ｅ−Ｂが生成される。生成されたＥＣＣ符号はセクタデータの後に、フラッシュバス１２，１３を介して２バイト並列にフラッシュメモリ２，３に供給される。
【００６３】
図１８には図１６のメモリカードにおいてフラッシュメモリからデータバッファへ一つのセクタデータを転送する動作タイミングが例示される。フラッシュメモリ２、３から２バイト並列でフラッシュバス１２，１３に読み出される。フラッシュメモリ２から読み出された偶数番目バイトのデータは第１のＥＣＣバス４９Ａを経て第１のＥＣＣ回路４４Ａに入力され、セクタデータの偶数番目バイトのデータに対するエラー検出が第１のＥＣＣ回路４４Ａで行われる。同様に、第２のフラッシュメモリ３から読み出された奇数番目バイトのデータは第２のＥＣＣバス４９Ｂを経て第２のＥＣＣ回路４４Ｂに入力され、セクタデータの奇数番目バイトのデータに対するエラー検出が第２のＥＣＣ回路４４Ｂで行われる。前記フラッシュメモリ２，３から読みされたセクタデータは２バイト並列にバッファバス１０を介してデータバッファ４にもストアされる。
【００６４】
図１９には本発明に係るメモリカードの第３の例が示される。図１のメモリカードとの相違点は、バッファバス１０Ａが８ビット幅になったことである。その他の構成は図１と同じであるからその詳細な説明は省略する。
【００６５】
図２０には図１９のメモリカードにおいてデータバッファ４からフラッシュメモリ２，３へ一つのセクタデータを転送する動作タイミングが示される。データバッファ４からバッファバス１０Ａへのデータ読み出しは８ビット幅で行われる。データバッファ４から読み出されたセクタデータは、同じく８ビット幅でＥＣＣバス４９からＥＣＣ回路４４に入力され、ＥＣＣ符号Ｅ−０，Ｅ−１が生成される。また、データバッファ４から読み出されたセクタデータは、１サイクル送れたタイミングで、偶数番目バイトのセクタデータが上位フラッシュバス１２を経由してフラッシュメモリ２に、奇数番目バイトのセクタデータが下位フラッシュバス１３を経由してフラッシュメモリ３に、並列に供給される。夫々８ビット幅のバッファバス１０Ａ及びＥＣＣバス４９上でのデータ転送動作周波数は１６ビットのバス幅を有するフラッシュバス１２，１３上でのデータ転送動作周波数の２倍になっている。
【００６６】
図２１には図１９のメモリカードにおいてフラッシュメモリからデータバッファへ一つのセクタデータを転送する動作タイミングが例示される。フラッシュメモリ２，３からフラッシュバス１２，１３にバイト並列で読み出されたセクタデータは、８ビットのＥＣＣバス４９を通ってＥＣＣ回路４４に供給され、エラー検出処理が行われ、これに並行して、８ビットのバッファバス１０Ａからデータバッファ４に書き込まれる。夫々８ビット幅のバッファバス１０Ａ及びＥＣＣバス４９上でのデータ転送動作周波数は１６ビットのバス幅を有するフラッシュバス１２，１３上でのデータ転送動作周波数の２倍になっている。
【００６７】
以上説明したメモリカード１のメモリコントローラ５によれば、セクタデータの偶数番目バイトのデータの記憶領域にフラッシュメモリ２を割り当て、セクタデータの奇数番目バイトのデータの記憶領域にフラッシュメモリ３を割り当て、ホストコンピュータ６からのアクセスコマンドに応答するフラッシュメモリのアクセス制御では、２個のフラッシュメモリ２，３を並列にリード動作させ、また、並列に書き込み動作させる。このフラッシュッメモリ２，３に対する並列アクセスにより、メモリコントローラ５とフラッシュメモリ２，３との間のデータバス幅若しくはデータ転送並列ビット数が多くなり、フラッシュメモリ２，３との間のデータ転送速度の高速化を実現することができる。
【００６８】
前記メモリコントローラ５は、前記代替制御ではアクセスエラーを生じたフラッシュメモリ毎に記憶領域を代替可能にする。したがって、不良アドレスに対する代替領域を効率良く利用でき、代替に際して記憶領域の無駄を低減でき、メモリカード１の寿命を延ばすことに寄与することができる。
【００６９】
図１の前記メモリコントローラ５が備えるＥＣＣ回路４４は、前記並列アクセス動作されるフラッシュメモリ２，３の入出力動作周波数に対して２倍の動作周波数で入出力動作を行なう。したがって、ＥＣＣ回路４４の数を増やすことなくエラー検出コードの生成やエラー検出・訂正処理の高速化を実現できる。また、図１６のように、フラッシュメモリ２，３の数と同じ数のＥＣＣ回路４４Ａ，４４Ｂを設ければ、ＥＣＣ回路４４Ａ，４４Ｂの動作周波数を上げることなく、フラッシュメモリ２，３の入出力動作周波数に等しい動作周波数でＥＣＣ動作を行なえば済むようになる。これらにより、前記メモリコントローラ５は、フラッシュメモリ２，３との間のデータ転送効率の向上にＥＣＣ回路の動作を追従させることができる。このように、メモリコントローラ５が複数のフラッシュメモリ２，３を並列アクセスして高速にデータをリードしたとき、そのリードデータに対してエラー検出・訂正処理を行なうＥＣＣ回路４４の動作を追従させることができ、また、書き込みデータに付加すべきエラー検出コードの生成動作を高速化できるから、メモリカード全体としてのアクセスの高速化を実現することができる。
【００７０】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００７１】
例えば、複数個の不揮発性メモリとは２個のフラッシュメモリチップに限定されない。１個とは物理的に１個のメモリチップを意味すだけでなく、複数個のメモリチップの集合であってもよい。例えば３ｎビットのデータバスに対し、下位側からｎビット単位でフラッシュメモリチップのデータ入出力端子を接続して３個のフラッシュッメモリチップで１群のフラッシュメモリを構成し、そのようなメモリチップ群を複数群採用して、複数個の不揮発性メモリを構成してもよい。フラッシュッメモリは３個又は３群以上のフラッシュメモリチップによって構成してもよい。不揮発性メモリはフラッシュメモリに限定されず、高誘電体メモリであってもよい。
【００７２】
フラッシュバス、バッファバス、ＥＣＣバスのビット数は上記の例に限定されず適宜のビット数に変更可能である。
【００７３】
また、メモリコントローラは１チップに限定されず、ＭＰＵを別チップで構成してもよい。また、メモリコントローラとデータバッファを単一半導体チップに形成してもよい。更に、メモリコントローラ、データバッファ、及びフラッシュッメモリを同一チップに形成してもよい。
【００７４】
フラッシュメモリとＥＣＣ回路との間におけるアクセス周波数及びデータ入出力端子数の関係については、上記の例に限定されず、以下の関係を満足させてメモリカードを構成してもよい。即ち、複数のフラッシュメモリは夫々第１のビット幅Ｗ１の入出力端子を有し、アクセス周波数Ｆ１でアクセス可能である。前記バスは、Ｗ１×ｍのビット幅を有し、ｍ個のフラッシュメモリの入出力端子に並列に接続される。ＥＣＣ回路は、ビット幅Ｗ２のデータについてエラー検出・訂正が可能である。前記ＥＣＣ回路の動作周波数Ｆ２は、Ｆ２≧（Ｆ１×Ｗ１×ｍ）／（Ｗ２×ｎ）の関係を満足する。これにより、フラッシュッメモリとの間の並列アクセスによるデータ転送効率の向上にＥＣＣ回路の動作を追従させるという作用及び効果を得る。
【図面の簡単な説明】
【００７５】
【図１】本発明に係るメモリカードの一例を示すブロック図である。
【図２】フラッシュメモリの一例を示すブロック図である。
【図３】一方のフラッシュメモリの記憶領域を例示する説明図である。
【図４】他方のフラッシュメモリの記憶領域を例示する説明図である。
【図５】一方のフラッシュメモリにおける代替エリア管理テーブルを例示する説明図である。
【図６】他方のフラッシュメモリにおける代替エリア管理テーブルを例示する説明図である。
【図７】セクタデータの書込み動作手順について一部を例示するフローチャートである。
【図８】セクタデータの書込み動作手順について残りを例示するフローチャートである。
【図９】代替先アドレス検索処理手順について例示するフローチャートである。
【図１０】フラッシュメモリの消去チェック処理手順について例示するフローチャートである。
【図１１】フラッシュメモリのプログラムチェック処理手順について例示するフローチャートである。
【図１２】ホストコンピュータによるセクタデータのリード動作手順について一部を例示するフローチャートである。
【図１３】ホストコンピュータによるセクタデータのリード動作手順について残りを例示するフローチャートである。
【図１４】データバッファからフラッシュメモリへ一つのセクタデータを転送するときの転送タイミングを例示するタイミングチャートである。
【図１５】フラッシュメモリからデータバッファに一つのセクタデータを転送するときの転送タイミングを例示するタイミングチャートである。
【図１６】本発明に係るメモリカードの第２の例を示すブロック図である。
【図１７】図１６のメモリカードにおいてデータバッファからフラッシュメモリへ一つのセクタデータを転送する動作タイミングを例示するタイミングチャートである。
【図１８】図１６のメモリカードにおいてフラッシュメモリからデータバッファへ一つのセクタデータを転送する動作タイミングを例示するタイミングチャートである。
【図１９】本発明に係るメモリカードの第３の例を示すブロック図である。
【図２０】図１９のメモリカードにおいてデータバッファからフラッシュメモリへ一つのセクタデータを転送する動作タイミングを示すタイミングチャートである。
【図２１】図１９のメモリカードにおいてフラッシュメモリからデータバッファへ一つのセクタデータを転送する動作タイミングを示すタイミングチャートである。
【符号の説明】
【００７６】
１  メモリカード
２、３  フラッシュメモリ
４  データバッファ
５  メモリコントローラ
１０  バッファバス
１２  フラッシュバス上位
１３  フラッシュバス下位
４０  ホストインタフェース回路
４１  マイクロプロセッサ
４２  フラッシュインタフェース回路
４３  バッファコントローラ
４４  ＥＣＣ回路
４９  ＥＣＣバス
【図１】
2007310915.tif 000003
【図２】
2007310915.tif 000004
【図３】
2007310915.tif 000005
【図４】
2007310915.tif 000006
【図５】
2007310915.tif 000007
【図６】
2007310915.tif 000008
【図７】
2007310915.tif 000009
【図８】
2007310915.tif 000010
【図９】
2007310915.tif 000011
【図１０】
2007310915.tif 000012
【図１１】
2007310915.tif 000013
【図１２】
2007310915.tif 000014
【図１３】
2007310915.tif 000015
【図１４】
2007310915.tif 000016
【図１５】
2007310915.tif 000017
【図１６】
2007310915.tif 000018
【図１７】
2007310915.tif 000019
【図１８】
2007310915.tif 000020
【図１９】
2007310915.tif 000021
【図２０】
2007310915.tif 000022
【図２１】
2007310915.tif 000023