(57)【特許請求の範囲】
【請求項１】
コントローラとバッファメモリと不揮発性メモリとを有し、
上記バッファメモリは一定の容量単位であるバンクを４つ含むように構成され、
上記コントローラは、外部からの制御情報に応じて、第１のビット幅で外部から入力される第１データを上記バッファメモリの各バンクに順次格納させ、各バンクへの順次格納に並行して、データが格納されたバンクから順次データを前記第１のビット幅より大きい第２のビット幅で上記不揮発性メモリの指定した領域にバンクごとに転送させ、
上記不揮発性メモリは、上記指定した領域に４つのバンクのデータが格納された後、この４つのバンクのデータを１本のワード線に接続される不揮発性メモリセル単位として一括して上記不揮発性メモリのメモリセルヘ書込み、
上記コントローラは、上記メモリセルへの一括書込みと並行して、外部から入力される前記第１データに続く第２データを前記第１のビット幅で上記バッファメモリの各バンクに順次格納させる、不揮発性記憶装置。
【請求項２】
上記不揮発性メモリの指定した領域にデータの転送が完了すると、転送が完了したことを示す信号がセットされるステータスレジスタをさらに有し、
前記ステータスレジスタに転送が完了したことを示す信号がセットされた後、前記第２データを受け取る、請求項１に記載の不揮発性記憶装置。
【請求項３】
上記バンク毎に、対応するバンク内に上記不揮発性メモリへ転送すべきデータがあるか否かを示すフラグを備え、
上記コントローラは上記フラグの状態に基づいて各バンクのデータ転送の完了／未完了を判定する請求項２に記載の不揮発性記憶装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、不揮発性記憶装置に適用して有効な技術に関し、例えばフラッシュメモリのような不揮発性半導体メモリもしくはそれを内蔵したマルチメディアカードやスマートメディアなどのカード型記憶装置に利用して有効な技術に関する。
【０００２】
【従来の技術】
近年、デジタルカメラなどの携帯用電子機器のデータ記憶媒体として、電源電圧を遮断しても記憶データを保持できるフラッシュメモリなどの不揮発性メモリを内蔵したメモリカードと呼ばれるカード型記憶装置が広く利用されるようになって来ている。
【０００３】
ところで、不揮発性メモリは、ＲＡＭなどの揮発性メモリに比べてデータの書込み所要時間がかなり長いため、不揮発性メモリを内蔵したメモリカードにおいては、カード内部に不揮発性メモリとは別にこれよりも容量の少ないＲＡＭなどからなるバッファメモリを内蔵しておいて、データを記憶させる際には外部のホストＣＰＵからライトデータを一旦バッファメモリに転送し、このバッファメモリから順次データを不揮発性メモリへ転送して書込みを行なえるようにしたものがある（例えば特開２−６２６８７号）。
【０００４】
【発明が解決しようとする課題】
しかしながら、バッファメモリを内蔵した従来のメモリカードにおけるデータ転送は、図１０に示すように、先ず期間Ｔ１で書込みコマンドを送信し、期間Ｔ２で所定量のライトデータをホストＣＰＵからバッファメモリに転送する。そして、期間Ｔ３でバッファメモリから不揮発性メモリの一括書込み単位のデータの転送を行なう。一方、ホストＣＰＵはデータＤＡＴＡ３の送信後、バッファメモリへのデータ転送を中断し、不揮発性メモリにおいて書込みが終了するのを待つ（期間Ｔ４）。その後、メモリカードにおけるデータの書込みが終了したのを確認して、次のライトデータをホストＣＰＵからバッファメモリに転送する（期間Ｔ５’）ものであった。
【０００５】
このような方式にあっては、不揮発性メモリにおいて書込み行なっている期間Ｔ４の間ライトデータがバッファメモリに保持されているため、何らかの原因で書込みが失敗したとしても再度同一ライトデータをホストＣＰＵからメモリカードに転送する必要がないという利点がある。しかし、不揮発性メモリにおいて書込み行なっている期間Ｔ４の間、バッファメモリデータ転送が中断されてホストＣＰＵが待ち状態にされるとともに、不揮発性メモリも次のデータがホストＣＰＵからバッファメモリに転送される間書込み動作を待たされることとなるため、オーバーヘッドが大きくトータルの書込み所要時間が長くなるという問題点があった。
【０００６】
この発明の目的は、不揮発性メモリとバッファメモリを内蔵したカード型記憶装置における書込みデータの転送のオーバーヘッドを少なくして書込み所要時間を短縮可能にする技術を提供することにある。
この発明の前記ならびにそのほかの目的と新規な特徴については、本明細書の記述および添付図面から明らかになるであろう。
【０００７】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を説明すれば、下記のとおりである。
すなわち、不揮発性メモリとバッファメモリを内蔵したカード型記憶装置において、バッファメモリを複数のバンクで構成し、ホストＣＰＵからバッファメモリの各バンクに順にデータを転送し、一杯になったバンクからデータを不揮発性メモリに転送する。そして、不揮発性メモリの一括書込み単位のデータの転送が終了した時点で書込みを開始し、データの書込みが終了するまで待たずに、書込み中のデータを転送し終わっているバンクへ次のライトデータをホストＣＰＵから転送するようにしたものである。
【０００８】
上記した手段によれば、バッファメモリから不揮発性メモリへのデータ転送と並行してホストＣＰＵからバッファメモリへのデータ転送が行なわれるため、データ転送時間のオーバーヘッドが少なくなり、書込み所要時間を大幅に短縮することができる。
【０００９】
また、望ましくは、上記バッファメモリから上記不揮発性メモリへのデータ転送の完了／未完了を示す状態レジスタもしくは状態フラグを設け、該状態レジスタもしくは状態フラグは上記コントローラによって状態が制御されるように構成する。これにより、状態レジスタもしくは状態フラグの参照することで次のデータをホストＣＰＵからバッファメモリへ転送可能か否か容易に判定することができる。
【００１０】
さらに、望ましくは、外部から入力されるデータを格納しているバンクの情報を保持する第１レジスタと、上記バッファメモリから上記不揮発性メモリへデータを転送しているバンクの情報を保持する第２レジスタとを設け、上記コントローラによって上記第１レジスタと第２レジスタが保持しているバンクの情報に基づいて各バンクのデータ転送の完了／未完了を判定し上記状態レジスタもしくは状態フラグを制御するように構成する。あるいは、上記バンク毎に、対応するバンク内に上記不揮発性メモリへ転送すべきデータがあるか否かを示すフラグを設け、上記コントローラによって上記フラグの状態に基づいて各バンクのデータ転送の完了／未完了を判定し上記状態レジスタもしくは状態フラグを制御するように構成する。これによって、バッファメモリから不揮発性メモリへのデータ転送とホストＣＰＵからバッファメモリへのデータ転送を並行して行なう制御を容易に実現することができる。
【００１１】
【発明の実施の形態】
以下、本発明の好適な実施例を図面に基づいて説明する。
図１は、本発明が適用される不揮発性メモリを内蔵したメモリカードの実施例を示す。
この実施例のメモリカード１００は、特に制限されないが、所定の単位で電気的な一括データ消去が可能なフラッシュメモリ（ＦＬＡＳＨ）１１０と、外部から供給されるコマンドに基づいてデータ転送などカード内部全体の制御を行なうマイクロプロセッサ（ＣＰＵ）１２０と、外部の装置との信号のやり取りを行なうインタフェース回路１３０と、外部からの書込みデータやフラッシュメモリ１１０からの読出しデータを保持するＲＡＭなどからなるバッファメモリ１４０と、書込みデータに対するエラー訂正符号の生成およびエラー訂正符号に基づく読出しデータのチェックと訂正の機能を有するエラー訂正符号生成＆エラー訂正回路１５０と、ＣＰＵ１２０からの指示に従ってフラッシュメモリ１１０に対するデータの書込み、読出しの制御を行なうフラッシュコントローラ１６０などから構成されている。
【００１２】
上記メモリ１１０、ＣＰＵ１２０、フラッシュコントローラ１６０等の各部品はそれぞれ半導体集積回路で構成され、これらの半導体集積回路がプリント配線基板上に搭載され、全体が樹脂等によりモールドされてメモリカード１００が構成される。
【００１３】
また、この実施例のメモリカード１００には、外部の電子機器のカードスロットに挿入されたときに電子機器側の回路と電気的に接続される外部端子１７１〜１７５が設けられている。このうち、外部端子１７１と１７２はそれぞれ電源電圧Ｖｃｃと接地電位ＧＮＤを受ける電源端子及び接地端子、外部端子１７３はタイミングを与えるクロック信号ＣＫを受ける端子、外部端子１７４は外部のホストＣＰＵからカードに対して与えられるコマンドやアドレスが入力されるとともにカードからホストＣＰＵに対してステータスレジスタの内容などを出力する端子、外部端子１７５は外部のホストＣＰＵからカードに対して与えられるライトデータが入力されるとともにカードから読み出されたリードデータをホストＣＰＵに対して出力する端子である。
【００１４】
上記外部端子１７４と１７５の信号の入出力はインタフェース回路１３０を介して行なわれる。バッファメモリ１４０は複数のバンクにより構成されている。マイクロプロセッサ１２０からバッファメモリ１４０に対してはバンクを指定する信号やライトかリードかを示す信号が供給される。バッファメモリ１４０からマイクロプロセッサ１２０へは、各バンクの状態を示す信号が供給される。外部のホストＣＰＵから転送された書込みデータはバッファメモリ１４０内の指定されたバンクに順次格納され、エラー訂正符号生成＆エラー訂正回路１５０を介してフラッシュメモリ１１０に供給される。また、マイクロプロセッサ１２０は、外部端子１７４より入力された論理アドレスとを物理アドレスに変換してフラッシュコントローラ１６０を介してフラッシュメモリ１１０に供給する。
【００１５】
さらに、マイクロプロセッサ１２０からエラー訂正符号生成＆エラー訂正回路１５０に対しては同期クロックＳＣが、また、エラー訂正符号生成＆エラー訂正回路１５０からマイクロプロセッサ１２０に対しては正常にエラー訂正が行なえたか否かを示す信号等が供給される。また、インタフェース回路１３０内には、ライトデータのバッファメモリ１４０からフラッシュメモリ１１０へのライトデータの転送が終了したか否か等カード内の状態を反映するステータスレジスタＳＲ１が設けられている。
【００１６】
このステータスレジスタＳＲ１には、マイクロプロセッサ１２０からの信号によってカード内の状態が設定される。このステータスレジスタＳＲ１に含まれる状態ビットとしては、例えば書込みエラーが発生したことを示すエラービット、カードがアクセス可能な状態にあることを示すレディー／ビジービット、バッファメモリ１４０が一杯になったことを示すオーバーフロービットなどがある。この実施例では、このステータスレジスタＳＲ１の内容は、外部のホストＣＰＵ等がレジスタリードコマンドを外部端子１７４から入力することにより、コマンドと同一の外部端子１７４から読み出せるように構成されている。また、フラッシュコントローラ１６０からの信号によってステータスレジスタＳＲ１にフラッシュメモリ１１０の状態を直接設定できるように構成しても良い。
【００１７】
フラッシュメモリ１１０はフローティングゲートを有する絶縁ゲート型電界効果トランジスタからなる不揮発性メモリセルがマトリックス状に配設されたメモリアレイや、外部より入力されたアドレス信号をデコードしてメモリアレイ内の対応するワード線を選択レベルにするワードデコーダ、メモリアレイ内のビット線に接続され読み出しデータおよび書き込みデータを保持するデータラッチ、書込み消去に必要な高電圧を発生する昇圧回路などから構成されている。
【００１８】
上記データラッチは、この実施例のフラッシュメモリでは、１セクタすなわち１本のワード線に接続されているすべてのメモリセルのデータを保持することができるような大きさとされている。さらに、フラッシュメモリ１１０内には、書込みが正常に終了したかエラーが発生しているか反映するステータスレジスタＳＲ２が設けられている。
なお、フラッシュメモリは、２層ゲート構造を有し、浮遊ゲート層に蓄積する電荷の量の違いによるしきい値電圧の高低によりデータを記憶する。本実施例においては、浮遊ゲート層に電荷を注入し、しきい値電圧を高くする動作を書込み、その逆の動作を消去と称する。
【００１９】
また、この実施例のメモリカードに用いられるフラッシュメモリは、コマンドと制御信号に基づいて動作するように構成されている。フラッシュメモリに有効なコマンドとしては、リードコマンドの他、ライトコマンド、消去コマンド等がある。さらに、フラッシュメモリ１１０へ入力される制御信号としては、チップ選択信号ＣＥやリードかライトかを示す書き込み制御信号ＷＥ、出力タイミングを与える出力制御信号ＯＥ、システムクロックＳＣ、コマンド入力かアドレス入力かを示すためのコマンドイネーブル信号ＣＤＥがある。これらのコマンドや制御信号はフラッシュコントローラ１６０から与えられる。
【００２０】
フラッシュコントローラ１６０はコントロールレジスタを備えており、マイクロプロセッサ１２０がこのコントロールレジスタに対して設定を行なうことにより、フラッシュコントローラ１６０によってフラッシュメモリ１１０に対する書込みや読出し、消去等の制御が行われる。マイクロプロセッサ１２０からフラッシュコントローラ１６０へ供給される信号は、リードまたはライトを指示する制御信号と、上記コントロールレジスタ等を指定するアドレス信号、コントロールレジスタに設定されるデータ信号等がある。
【００２１】
なお、フラッシュメモリを搭載したメモリカードは図１の構成に限定されず、エラー訂正符号生成＆エラー訂正回路を内蔵したフラッシュメモリを使用したものや、エラー訂正符号生成＆エラー訂正回路とコントローラとを１チップとしたものを使用してメモリカードを構成するようにしてもよい。また、フラッシュメモリ１１０は、１つのメモリセルに１ビットのデータを記憶させる２値のフラッシュメモリでも、１つのメモリセルにしきい値電圧を制御して複数ビットのデータを記憶させるように構成された多値のフラッシュメモリでも良い。
【００２２】
さらに、フラッシュメモリは１つのみでなく複数個搭載したものであっても良い。その場合、ＥＣＣ回路は各チップ毎に設けても良いし、ＥＣＣ回路を複数のフラッシュメモリで共用するように構成することも可能である。また、実施例のメモリカードには、コントローラとして、マイクロプロセッサ１２０とフラッシュコントローラ１６０の２つが設けられているが、いずれか一方のみ有する構成も可能である。
【００２３】
次に、上記のように構成されたメモリカードに本発明を適用した場合における書込みデータの転送方式の第１の実施例を、図２のタイミングチャートを用いて説明する。なお、ここでは、バッファメモリ１４０が各々５１２バイトの容量を有する４つのバンクＢＮＫ０〜ＢＮＫ３で構成されている場合を説明する。
【００２４】
第１の実施例では、メモリカードへのデータの書込みに際して、先ず外部のホストＣＰＵからメモリカードの外部端子１７４へデータ転送コマンドと書込みアドレスを送る（期間Ｔ１）。続いて、ホストＣＰＵからメモリカードの外部端子１７５へライトデータを転送する。転送されたデータはインタフェース１３０を介してバッファメモリ１４０の各バンクＢＮＫ０〜ＢＮＫ３に順次格納される（期間Ｔ２）。上記コマンドとアドレスの送信およびライトデータの転送はシリアルに行なわれる。
【００２５】
上記バッファメモリ１４０へのライトデータの転送と並行して、各バンクＢＮＫ０，ＢＮＫ１，ＢＮＫ２，バンクＢＮＫ３が各々５１２バイトのような転送データＤＡＴＡ０，ＤＡＴＡ１，ＤＡＴＡ２，ＤＡＴＡ３で一杯になった時点で、それぞれ各バンクからフラッシュメモリ１１０へのライトデータの転送が行なわれる（期間Ｔ３）。例えば各バンクＢＮＫ０が転送データＤＡＴＡ０で一杯になると、次のデータＤＡＴＡ１がホストＣＰＵからバンクＢＮＫ１に転送され始めるが、このとき並行してバンクＢＮＫ０のデータがフラッシュメモリ１１０へ転送される。
【００２６】
なお、各バンクからフラッシュメモリ１１０へのライトデータの転送は、例えば８ビットのような単位でパラレルに行なわれる。従って、１つのバンクに格納される５１２バイトのデータは、ホストＣＰＵからバッファメモリ１４０への転送よりもバッファメモリ１４０からフラッシュメモリ１１０への転送の方が短時間に終了する。また、バッファメモリ１４０からフラッシュメモリ１１０への転送のとき、ライトデータはエラー訂正符号生成＆エラー訂正回路１５０を経由することで、例えば５１２バイトごとにエラー訂正符号が付加されてフラッシュメモリ１１０に供給される。そして、各バンクＢＮＫ０〜バンクＢＮＫ３からフラッシュメモリ１１０へのデータ転送が終了した時点で、フラッシュメモリ１１０において、セクタ単位で一括書込みが行なわれる（期間Ｔ４）。
【００２７】
一方、この実施例においては、バッファメモリ１４０からフラッシュメモリ１１０へのライトデータの転送がすべて終了すると、この実施例においては、バッファメモリ１４０のデータは不用になったものとして、次のセクタの書込みデータＤＡＴＡ４〜ＤＡＴＡ７のバッファメモリ１４０への転送を行なう（期間Ｔ５）。
【００２８】
なお、バッファメモリ１４０からフラッシュメモリ１１０へのライトデータの転送がすべて終了した時点でインタフェース回路１３０内のステータスレジスタＳＲ１には、データ転送が終了したことを示すビットがセットされるので、外部のホストＣＰＵはこのステータスレジスタＳＲ１の読出しコマンドを送ることでバッファメモリのデータ転送終了を判定することができる。ステータスレジスタＳＲ１の内容は、コマンドが入力された外部端子１７４を介して時分割でホストＣＰＵへ送信される。
【００２９】
この実施例のデータ転送方式によれば、フラッシュメモリ１１０における書込みの終了を待たずに、外部のホストＣＰＵからメモリカードに対して次のセクタの書込みデータの転送を開始できるので、データ転送に伴なうオーバーヘッド時間を少なくしてトータルの書込み所要時間を短縮することができる。
【００３０】
次に、本発明に係るメモリカードへの書込みデータの転送方式の第２の実施例を、図３のタイミングチャートを用いて説明する。
第２の実施例の転送方式は、バッファメモリ１４０の全バンクへの１セクタ分のデータの転送終了後、第１の実施例のようにステータスレジスタＳＲ１の読込みによるフラッシュメモリへのデータ転送終了を確認することをせずに、直ちに次のセクタへの書込みデータの転送を行なうものである。ただし、このようにすると、ホストＣＰＵからバッファメモリ１４０へのデータ転送所要時間の方が、フラッシュメモリ１１０における書込み所要時間よりも短い場合、図３に符号ｔ１で示すように、既にバッファメモリ１４０に格納されているデータがフラッシュメモリ１１０へ転送される前に、ホストＣＰＵからバッファメモリ１４０への次のセクタの書込みデータ転送開始タイミングが来てしまうことがある。
【００３１】
従って、この実施例の転送方式を適用する場合には、このようなデータ転送の追越しを防止する必要がある。ここで、データ転送の追越しを防止する方法の一例を、図４および図５を用いて説明する。
【００３２】
図４は、データ転送の追越しを防止するために必要なハードウェアを示したもので、インタフェース回路１３０内にホストＣＰＵ２００がデータ転送に使用しているバッファメモリ１４０のバンクの番号を格納するレジスタＲＥＧ１が、またフラッシュコントローラ１６０内にバッファメモリ１４０からフラッシュメモリ１１０へデータを転送しているバンクの番号を格納するレジスタＲＥＧ２が設けられていると共に、２つのレジスタＲＥＧ１とＲＥＧ２のバンク番号を比較するコンパレータからなるバッファエラー検出回路１８０が設けられていている。レジスタＲＥＧ１とＲＥＧ２の管理はそれぞれインタフェース回路１３０とフラッシュコントローラ１６０が行なう。
【００３３】
この実施例によれば、バッファエラー検出回路１８０が２つのレジスタに保持されているバンク番号の一致を検出したときに検出信号をマイクロプロセッサ１２０へ出力することにより、ホストＣＰＵ２００からのデータ転送がまだ使用中のバンクに対して行われたことをマイクロプロセッサ１２０が知り、例えばインタフェース回路１３０内のステータスレジスタＳＲ１のデータ転送エラービットをセットすることにより、ホストＣＰＵ２００にデータ転送エラーを知らせることができる。ここで、データ転送エラービットは、データ転送の追越し（バッファエラー）以外のデータ転送エラーを含んだものとしても良いし、バッファエラーを示すビットを別個に設けて他のデータ転送エラーと区別するようにしても良い。
【００３４】
なお、ホストＣＰＵ２００は、前述のようにステータスレジスタＳＲ１の読出しコマンドでレジスタの内容を読み出すことにより、データ転送エラーを起こしたことを知ることができる。従って、データ転送エラーを起こした場合には、再度最初から書込みコマンドの送信と書込みデータの転送を行なうこととなる。
【００３５】
一般に、フラッシュメモリは、書込み時間が書込み対象のセクタや書込みデータによってまちまちであり極端に長くなることがあるため、ホストＣＰＵがフラッシュメモリの平均的な書込み所要時間に合わせて書込みデータを転送しても、上記のようにバッファエラーが生じることがあるが、この実施例によれば、ホストＣＰＵにデータ転送の追越しを知らせることができる。その結果、バンク内のデータをフラッシュメモリへ転送終了する前にそのバンクにホストＣＰＵから次のデータが転送されて上書きされるのを回避することができる。
【００３６】
なお、図４の実施例のメモリカードにおいては、バッファエラー検出回路１８０を設けてデータ転送の追越し状態をハードウェアで検出するようにしているが、これをマイクロプロセッサ１２０のソフトウェア処理で行なうことも可能である。図５にその場合の制御手順の一例を示す。
【００３７】
マイクロプロセッサ１２０は、ホストＣＰＵからの書込みコマンドを受けるとレジスタＲＥＧ１とＲＥＧ２からバンク番号を読み出して比較し、バッファエラーを起こしていないか判定する（ステップＳ１〜Ｓ３）。そして、バッファエラーを起こしていない場合には、ホストＣＰＵから転送されてくる書込みデータをレジスタＲＥＧ１が示すバンク番号に対応するバッファメモリのバンクに格納させる（ステップＳ４）。
【００３８】
バンクが一杯になるとフラッシュコントローラ１６０に対してフラッシュメモリ１１０への書込み命令を与え、バッファメモリ１４０からフラッシュメモリ１１０へのデータの転送を行なう（ステップＳ５，Ｓ６）。その後、フラッシュコントローラ１６０に対して、フラッシュ書込み開始命令を与えてからステップＳ３へ戻る（ステップＳ７）。一方、ステップＳ３でバッファエラーを起こしたと判定するとステップＳ８へ移行して、インタフェース回路１３０内のステータスレジスタＳＲ１のデータ転送エラービットをセットするなどのエラー処理を行なう。
【００３９】
なお、この実施例においては、例えばインタフェース回路１３０内にバッファエラーを起こしたバンク番号もしくは転送データを示す情報を格納するレジスタを設けて、ホストＣＰＵに知らせるように構成してもよい。これにより、ホストＣＰＵからメモリカードへのデータ転送中にバッファエラーを起こした場合、エラーを起こしたデータから転送を再開させることができる。
【００４０】
また、図４においては、ホストＣＰＵ２００がデータ転送に使用しているバッファメモリ１４０のバンクの番号を格納するレジスタＲＥＧ１をインタフェース回路１３０内に、またフラッシュコントローラ１６０内にバッファメモリ１４０からフラッシュメモリ１１０へデータを転送しているバンクの番号を格納するレジスタＲＥＧ２をフラッシュコントローラ１６０内にそれぞれ設けているが、これらのレジスタの位置はこれに限定されず、独立した回路として設けても良いし、マイクロプロセッサ１２０内もしくはバッファメモリ１４０の一部に設けることも可能である。
【００４１】
また、上記レジスタＲＥＧ１，ＲＥＧ２を設ける代わりに、各バンクに対応してそれぞれホストＣＰＵとバッファメモリ間のデータ転送中を示すフラグと、バッファメモリとフラッシュメモリ間のデータ転送中を示すフラグの２つのフラグを設け、これらのフラグの状態からバッファエラーを検出するようにしても良い。さらに、バッファエラーを起こしたバンクの番号を格納するレジスタを例えばインタフェース回路１３０内に設け、外部のホストＣＰＵから読み出せるように構成しても良い。
【００４２】
次に、本発明に係るメモリカードへの書込みデータの転送方式の第３の実施例を、図６のタイミングチャートを用いて説明する。
第３の実施例の転送方式は、第２の実施例の転送方式に類似している。すなわち、バッファメモリ１４０の全バンクＢＮＫ０〜ＢＮＣ４へのデータＤＡＴＡ０〜ＤＡＴＡ３の転送終了後に、バッファメモリ１４０からフラッシュメモリ１１０へのデータ転送終了を確認せずに、直ちに次のセクタ用の書込みデータＤＡＴＡ４〜ＤＡＴＡ７の転送を開始するものである。第２の実施例の転送方式との違いは、図６の一番下に示されているバッファメモリの状態を表わす図のように、すべてのバンクに未転送のデータが残っている状態で次のデータの転送が開始されそうになった場合（タイミングｔ２）にバッファエラーとするものである。図６の一番下のバッファメモリの状態を表わす図において、ハッチングが付されているバンクは、ホストＣＰＵからのデータが格納され、フラッシュメモリへのデータ転送が終了していないものを意味している。
【００４３】
図７は、第３の実施例の転送方式を適用する場合に必要なハードウェアを示したもので、この実施例では、バッファメモリ１４０内の各バンクＢＮＫ０〜ＢＮＫ３に対応してそれぞれデータ転送状態を示すフラグＦＬＧ０〜ＦＬＧ３が設けられており、これらのフラグは対応するバンクにホストＣＰＵ２００からデータが格納されるときに“１”にセットされ、格納されたデータがフラッシュメモリ１１０へ転送されると“０”にクリアされる。従って、実際にバンク内にデータがあるか否かに係わらず、フラグに“０”が立っていればそのバンクは空きバンクであり、次の書込みデータを格納できる状態にあることが分かる。
【００４４】
特に制限されるものでないが、この実施例では、ホストＣＰＵ２００からバッファメモリ１４０へのデータ転送時にインタフェース回路１３０によってデータを格納しようとしているバンクのフラグが“１”にセットされ、バッファメモリ１４０からフラッシュメモリ１１０へ１バンク分のデータの転送が終了したときにマイクロプロセッサ１２０によって転送が終了したバンクのフラグが“０”にクリアされる。
【００４５】
この実施例のデータ転送時におけるマイクロプロセッサ１２０の制御手順は、図５のフローとほぼ同一である。異なるのは、ステップＳ２でバンク番号をレジスタから読み出す代わりにバッファメモリ１４０のフラグＦＬＧ０〜ＦＬＧ３を読み出す点と、ステップＳ３でバンク番号が一致しているときにバッファエラーと判定する代わりにフラグＦＬＧ０〜ＦＬＧ３がすべて“１”になっているときにバッファエラーと判定する点のみである。
【００４６】
なお、フラグを設ける代わりに、ホストＣＰＵからのデータの転送が行なわれたバンク番号を記憶するレジスタを設け、バンクからフラッシュメモリへのデータの転送が終了した時点でそのレジスタからバンク番号を削除するような制御を行なってこのレジスタの内容からバッファエラーが発生するか否かを判定するように構成することも可能である。
【００４７】
次に、本発明に係るメモリカードへの書込みデータの転送方式の第４の実施例を、図８のブロック図および図９のフローチャートを用いて説明する。
【００４８】
この実施例は、アドレスのエラーでホストＣＰＵから書込みコマンドと書込みデータによるフラッシュメモリ１１０への書込みの際に、フラッシュメモリが書込み不能もしくはオーバーフローを起こすのを防止できるようにしたものである。すなわち、前記実施例で説明したように、ホストＣＰＵが書込みコマンドに付随して送られてきた書込みアドレスがフラッシュメモリ１１０のアドレス範囲を外れていた場合や、例えばフラッシュメモリの最後のセクタを指定する書込みアドレスの後に１セクタ分以上の書込みデータをホストＣＰＵが転送して来た場合、フラッシュメモリはオーバーフローを起こしてデータの書込みが行なえなくなるので、それを防止するのがこの実施例の目的である。
【００４９】
上記目的を達成するため、この実施例のメモリカードには、図８に示すように、インタフェース回路１３０内にフラッシュメモリのアドレス範囲を設定するレジスタＡＤＲが設けられているとともに、ホストＣＰＵから供給された論理アドレスをマイクロプロセッサ１２０で変換した物理アドレスや、転送データ量に応じてマイクロプロセッサ１２０が更新したアドレスと上記アドレス設定レジスタＡＤＲに設定されているアドレスとを比較して、アドレスエラーを検出するアドレスエラー検出回路１９０が設けられている。
【００５０】
なお、上記アドレス設定レジスタＡＤＲは、インタフェース回路１３０内でなく、独立した回路として設けたり、フラッシュコントローラ１６０やマイクロプロセッサ１２０内に設けるようにしても良い。また、図８には、図４の実施例と組み合わせた場合すなわちデータ転送中のバンク番号を保持するレジスタＲＥＧ１およびＲＥＧ２とバッファエラー検出回路１８０を設けた実施例が示されているが、本実施例は図４の実施例とは独立に適用することが可能である。つまり、図８に示されているレジスタＲＥＧ１およびＲＥＧ２とバッファエラー検出回路１８０を省略することができる。
【００５１】
次に、この実施例のデータ転送方式を採用したメモリカードにおけるデータ転送制御手順を、図９のフローチャートを用いて説明する。この制御手順は図５の手順とほぼ同じである。異なるのは、図５のステップＳ４とＳ５の間にアドレスエラーが発生したか否か判定するステップＳ９が設けられており、アドレスエラーが発生しているときは、インタフェース回路１３０内のステータスレジスタＳＲ１の所定のエラービットをセットするなどの処理を行なうエラー処理Ｓ８へ移行する点である。
【００５２】
図９のステップＳ９でのアドレスエラーの判定は、アドレスエラー検出回路１９０からの信号に基づいて行なうことができる。ただし、アドレスエラー検出回路１９０を設けないで、マイクロプロセッサ１２０がソウトウェアの処理で、アドレス設定レジスタＡＤＲに設定されているアドレスに基づいてアドレスエラーの判定を行なうように構成することも可能である。
【００５３】
次に、図１１の実施例のメモリカードにおいて、フラッシュメモリ１１０での書込動作において、書込エラーが発生した場合の動作について説明する。フラッシュメモリ１１０へバッファメモリ１４０内の格納データの転送を行った後、バッファメモリ１４０へは次の書込データが転送され格納されるが、その後フラッシュメモリ１１０において書込エラーが発生したことが判明した場合、書込エラーが発生した書込データは既にバッファメモリ１４０から削除されていることが考えられる。
この場合、フラッシュメモリ１１０内のデータラッチＤＬに格納されている書込エラーが発生した書込データをバッファメモリ１４０のバンク０からバンク３以外の領域に読み出しを行い、書込エラーが発生したフラッシュメモリ１１０のアドレスに対して別のアドレスを指定する代替処理を行い、再度代替アドレスに対してバッファメモリ１４０に読み出された書込エラーが発生した書込データを格納するようにすればよい。代替アドレスへの格納が完了した後に、バッファメモリ１４０のバンク０からバンク３に格納されている次の書込データを格納するようにすることで、ホストＣＰＵ２００から転送された書込データを再度転送する必要を無くすることが可能である。
【００５４】
以上本発明者によってなされた発明を実施例に基づき具体的に説明したが、本発明は上記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば上記実施例では、バッファメモリ１４０が４つのバンクで構成されている場合を説明したが、バンクの数は４つに限定されるものでなく任意の数とすることができる。また、バッファメモリ１４０は１つの半導体メモリで構成されても良いが、複数の半導体メモリで構成するようにしても良い。この場合、１つの半導体メモリを１つのバンクに対応させることができる。また、バッファメモリ１４０としてフラッシュメモリ１１０の１セクタ分以上の大きさのものを用い、バンクとして使用する領域以外をマイクロプロセッサ１２０がワークエリアとして使用できるようにしてもよい。
【００５５】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるフラッシュメモリおよびそれを内蔵したメモリカードに適用した場合について説明したが、この発明はそれに限定されるものでなく、ＥＥＰＲＯＭチップその他の不揮発性メモリもしくはこれを内蔵したメモリカードあるいは複数の不揮発性メモリチップを１枚のボード上に搭載してなるメモリモジュールなどにも利用することができる。
【００５６】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
すなわち、この発明は、不揮発性メモリとバッファメモリを内蔵したカード型記憶装置において、バッファメモリを複数のバンクで構成し、ホストＣＰＵからバッファメモリの各バンクに順にデータを転送し、一杯になったバンクからデータを不揮発性メモリに転送して、不揮発性メモリの一括書込み単位のデータの転送が終了した時点で書込みを開始し、データの書込みが終了するまで待たずに、書込み中のデータを転送し終わっているバンクに次のライトデータをホストＣＰＵから転送するようにしたので、書込みデータの転送のオーバーヘッドを少なくして書込み所要時間を短縮することができるようになるという効果がある。
【図面の簡単な説明】
【図１】本発明が適用される不揮発性メモリを内蔵したメモリカードの実施例を示すブロック図である。
【図２】図１のメモリカードに本発明を適用した場合における書込み処理の第１の実施例を示すタイミングチャートである。
【図３】本発明を適用したメモリカードにおける書込み処理の第２の実施例を示すタイミングチャートである。
【図４】本発明を適用したメモリカードにおける書込み処理の第２の実施例を実現可能にするハードウェアの構成例を示すブロック図である。
【図５】本発明を適用したメモリカードにおける書込み処理の第２の実施例における制御手順を示すフローチャートである。
【図６】本発明を適用したメモリカードにおける書込み処理の第３の実施例を示すタイミングチャートである。
【図７】本発明を適用したメモリカードにおける書込み処理の第４の実施例を示すタイミングチャートである。
【図８】本発明を適用したメモリカードにおける書込み処理の第５の実施例を実現可能にするハードウェアの構成例を示すブロック図である。
【図９】本発明を適用したメモリカードにおける書込み処理の第５の実施例における制御手順を示すフローチャートである。
【図１０】従来のメモリカードにおける書込み処理のタイミングを示すタイミングチャートである。
【図１１】書込みデータを保持するデータラッチを有するフラッシュメモリを用いたメモリカードにおける書込エラーが発生した場合の動作を説明するブロック図である。
【符号の説明】
１００  メモリカード
１１０  フラッシュメモリ
１２０  マイクロプロセッサ（ＣＰＵ）
１３０  インタフェース回路
１４０  バッファメモリ
１５０  エラー訂正符号生成＆エラー訂正回路
１６０  フラッシュコントローラ
１７１〜１７５  外部端子
１８０  バッファエラー検出回路
１９０  アドレスエラー検出回路
【図１】
0003979486.tif 000002
【図２】
0003979486.tif 000003
【図３】
0003979486.tif 000004
【図４】
0003979486.tif 000005
【図５】
0003979486.tif 000006
【図６】
0003979486.tif 000007
【図７】
0003979486.tif 000008
【図８】
0003979486.tif 000009
【図９】
0003979486.tif 000010
【図１０】
0003979486.tif 000011
【図１１】
0003979486.tif 000012