(57)【要約】【課題】フラッシュメモリ内部での動作が行われなかったことを看過してしまうことを回避できるようにする。【解決手段】ページ単位でデータの読み出し又は書き込みが行われ、ブロック単位で記憶データの消去が行なわれるフラッシュメモリに対するアクセスを制御するメモリコントローラで、フラッシュメモリが出力する信号に基づいて該フラッシュメモリがビジー状態になった後、該ビジー状態が解除されたことを検知し、この検知結果に基づいてラッシュメモリの動作状態を判断し、この判断の結果に基づいてデータの読み出し、書き込み、又は消去を指示する動作指示をフラッシュメモリに与える。【選択図】図６
2008070919.tif 000002
【特許請求の範囲】
【請求項１】
ページ単位でデータの読み出し又は書き込みが行われ、ブロック単位で記憶データの消去が行なわれるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記フラッシュメモリに対してコマンドを含む動作指示を与える動作指示出力手段と、
前記動作指示出力手段から出力される動作指示に応答して前記フラッシュメモリから出力されるビジー状態を示す信号が入力され、該信号が示す情報がビジー状態からビジー解除状態に遷移したことを検知し、該検知の結果を検知信号として出力するビジー解除検知手段と、
前記検知信号に基づいて前記動作指示出力手段の動作を制御する制御手段とを備えたことを特徴とするメモリコントローラ。
【請求項２】
前記制御手段は、前記フラッシュメモリがビジー状態からビジー解除状態に遷移するまで、前記動作指示出力手段が前記動作指示を前記フラッシュメモリに与えることを禁止することを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
ページ単位でデータの読み出し又は書き込みが行われ、ブロック単位で記憶データの消去が行なわれるフラッシュメモリに対するアクセスを制御するメモリコントローラにおいて、
前記フラッシュメモリが出力する信号に基づいて該フラッシュメモリがビジー状態になった後、該ビジー状態が解除されたことを検知し、該検知の結果を検知信号として出力するビジー解除検知手段と、
前記検知信号に基づいて前記フラッシュメモリの動作状態を判断し、該判断の結果に基づいてデータの読み出し、書き込み、又は消去を指示する動作指示を前記フラッシュメモリに与える動作指示手段とを備えたことを特徴とするメモリコントローラ。
【請求項４】
前記動作指示手段は、前記フラッシュメモリのビジー状態が解除されたと判断するまで、前記フラッシュメモリに前記動作指示を与えないことを特徴とする請求項３に記載のメモリコントローラ。
【請求項５】
ページ単位でデータの読み出し又は書き込みが行われ、ブロック単位で記憶データの消去が行なわれるフラッシュメモリと、該フラッシュメモリを制御する請求項１乃至請求項４のいずれか一項に記載のメモリコントローラで構成されたフラッシュメモリシステム。
【請求項６】
ページ単位でデータの読み出し又は書き込みが行われ、ブロック単位で記憶データの消去が行なわれるフラッシュメモリに対するアクセスを制御するメモリコントローラの制御方法において、
前記フラッシュメモリが出力する信号に基づいて該フラッシュメモリがビジー状態になった後、該ビジー状態が解除されたことを検知し、該検知の結果を検知信号として出力するビジー解除検知工程と、
前記検知信号に基づいて前記フラッシュメモリの動作状態を判断し、該判断の結果に基づいてデータの読み出し、書き込み、又は消去を指示する動作指示を前記フラッシュメモリに与える動作指示工程とを備えたことを特徴とするフラッシュメモリの制御方法。
【請求項７】
前記動作指示工程は、前記フラッシュメモリのビジー状態が解除されたと判断するまで、前記フラッシュメモリに前記動作指示を与えないことを特徴とする請求項６に記載のフラッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に係り、特に並列アクセス時のビジー解除検知機能を有するメモリコントローラ及び該メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
【背景技術】
【０００２】
メモリカードやシリコンディスクなどの記憶媒体である半導体メモリとして、フラッシュメモリが多く用いられている。フラッシュメモリにはＮＯＲ型フラッシュメモリとＮＡＮＤ型フラッシュメモリがあり、特にＮＡＮＤ型フラッシュメモリは集積度に優れ、また書き込みに必要な動作電流が少ないなどの特長により大容量のメモリとして急成長をとげている。
【０００３】
このフラッシュメモリは、複数のメモリセルを有し、各メモリセルが消去状態のとき論理「１」とされ、書き込み状態のとき論理「０」とされる。
【０００４】
ところで、これらのメモリセルを消去状態から書き込み状態に変化させる場合には、メモリセル単位で行うことができるが、メモリセルを書き込み状態から消去状態に変化させる場合には、メモリセル単位で行うことができず、所定数のメモリセルからなるブロック単位で一括消去することが行われる（ブロック消去）。
【０００５】
また、所定数のメモリセルからなるブロック（物理ブロック）は、書き込み及び読み出しのアクセス処理単位である複数のページで構成されている。すなわち、小ブロックにおける物理ブロックは３２ページであり、大ブロックにおける物理ブロックは６４ページである。また、小ブロックでは、一個のページが１セクタ（＝５１２バイト）のユーザ領域と１６バイトの冗長領域とによって構成されている。
【０００６】
大ブロックでは、一個のページが４セクタ（＝２０４８バイト）のユーザ領域と、６４バイトの冗長領域とによって構成されている。
【０００７】
フラッシュメモリにデータを書き込むときは、フラッシュメモリ内のレジスタを介してメモリセルにデータが書き込まれ、フラッシュメモリからデータを読み出すときは、フラッシュメモリ内のレジスタを介してメモリセルからデータが読み出される。ここで、レジスタに保持されているデータをメモリセルに書き込むときには約２００μｓ程度の時間を要し、メモリセルからレジスタにデータを読み出すときには約２０μｓ程度の時間を要する。又、データを消去するときには約２ｍｓ程度の時間を要する。これらの期間中、フラッシュメモリはビジー状態になるため、フラッシュメモリに対してコマンドやデータを与えることができなくなる。
【０００８】
このビジー状態の発生に起因する処理速度の低下を軽減する従来技術として、複数のフラッシュメモリを並列処理するものがある。例えば特開平６−４３９９号公報（特許文献１）によれば、フラッシュメモリを複数個搭載し該フラッシュメメモリにデータの記憶を行う半導体記憶装置において、書き込み又は消去の指示を上記フラッシュメモリに送り、書き込み又は消去の指示が送られた上記フラッシュメモリが次の書き込み又は消去の指示が受け付け可能となるまでの間に、書き込み又は消去が行なわれている上記フラッシュメモリとは別のフラッシュメモリに書き込み又は消去の指示を送るようにしている。このような制御を行うことにより、半導体記憶装置全体としての処理速度を向上させている。
【特許文献１】特開平６−４３９９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上記従来技術は、半導体記憶装置全体としての処理速度を向上させることができるが、フラッシュメモリ内部での動作が正常に行われたか否かを確実に判断することができないという問題がある。この問題は、フラッシュメモリ内部での動作が正常に行われたか否かを、フラッシュメモリからステータスを読み出すことによって判断していることに起因する。
【００１０】
例えば、上記従来技術の半導体記憶装置において、何らかの原因により、フラッシュメモリが与えられた書き込み、消去等のコマンドを正しく認識できなかった場合、フラッシュメモリは与えられたコマンドに対応する動作を開始しないので、フラッシュメモリ内部のステータスは更新されない。従って、フラッシュメモリからステータスを読み出しても、フラッシュメモリ内部での動作が正常に行われたか否かを正しく判断することができない。
【００１１】
本発明の目的は、フラッシュメモリ内部での動作が行われなかったことを看過してしまうことを回避できるようにしたメモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法を提供することにある。
【課題を解決するための手段】
【００１２】
本発明のメモリコントローラは、ページ単位でデータの読み出し又は書き込みが行われ、ブロック単位で記憶データの消去が行なわれるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、前記フラッシュメモリに対してコマンドを含む動作指示を与える動作指示出力手段と、前記動作指示出力手段から出力される動作指示に応答して前記フラッシュメモリから出力されるビジー状態を示す信号が入力され、該信号が示す情報がビジー状態からビジー解除状態に遷移したことを検知し、該検知の結果を検知信号として出力するビジー解除検知手段と、前記検知信号に基づいて前記動作指示出力手段の動作を制御する制御手段とを備えたことを特徴とする。
このようなメモリコントローラによれば、前記フラッシュメモリから出力されるビジー状態を示す信号に基づいて、前記フラッシュメモリがビジー状態からビジー解除状態に遷移したことを検知するようにしたので、前記フラッシュメモリがビジー状態にならなかった場合は、内部での動作が開始されなかったと判断することができる。
又、前記制御手段は、前記フラッシュメモリがビジー状態からビジー解除状態に遷移するまで、前記動作指示出力手段が前記動作指示を前記フラッシュメモリに与えることを禁止することが好ましい。
このようにすることにより、前記フラッシュメモリ内部での動作が行われなかったときに、処理が続行されてしまうことを回避することができる。
又、前記メモリコントローラにおいて、前記フラッシュメモリに前記動作指示を与えてから所定の期間を経過しても、ビジー状態が発生しなかった場合、又はビジー状態が解除されなかった場合に、処理を中止する手段を設けてもよい。この処理を中止する手段に代えて、再処理を指示する手段を設けてもよい。
本発明のメモリコントローラは、ページ単位でデータの読み出し又は書き込みが行われ、ブロック単位で記憶データの消去が行なわれるフラッシュメモリに対するアクセスを制御するメモリコントローラにおいて、前記フラッシュメモリが出力する信号に基づいて該フラッシュメモリがビジー状態になった後、該ビジー状態が解除されたことを検知し、該検知の結果を検知信号として出力するビジー解除検知手段と、前記検知信号に基づいて前記フラッシュメモリの動作状態を判断し、該判断の結果に基づいてデータの読み出し、書き込み、又は消去を指示する動作指示を前記フラッシュメモリに与える動作指示手段とを備えたことを特徴とする。
このようなメモリコントローラによれば、前記フラッシュメモリが出力する信号に基づいて該フラッシュメモリがビジー状態になった後、該ビジー状態が解除されたことを検知するようにしたので、前記フラッシュメモリがビジー状態にならなかった場合は、内部での動作が開始されなかったと判断することができる。
又、前記動作指示手段は、前記フラッシュメモリのビジー状態が解除されたと判断するまで、前記フラッシュメモリに前記動作指示を与えないことが好ましい。
このようにすることにより、前記フラッシュメモリ内部での動作が行われなかったときに、処理が続行されてしまうことを回避することができる。
又、前記メモリコントローラにおいて、前記フラッシュメモリに前記動作指示を与えてから所定の期間を経過しても、ビジー状態が発生しなかった場合、又はビジー状態が解除されなかった場合に、処理を中止する手段を設けてもよい。この処理を中止する手段に代えて、再処理を指示する手段を設けてもよい。
本発明のフラッシュメモリシステムは、ページ単位でデータの読み出し又は書き込みが行われ、ブロック単位で記憶データの消去が行なわれるフラッシュメモリと、該フラッシュメモリを制御する前記メモリコントローラで構成されていることを特徴とする。
本発明のフラッシュメモリの制御方法は、ページ単位でデータの読み出し又は書き込みが行われ、ブロック単位で記憶データの消去が行なわれるフラッシュメモリに対するアクセスを制御するメモリコントローラの制御方法において、前記フラッシュメモリが出力する信号に基づいて該フラッシュメモリがビジー状態になった後、該ビジー状態が解除されたことを検知し、該検知の結果を検知信号として出力するビジー解除検知工程と、前記検知信号に基づいて前記フラッシュメモリの動作状態を判断し、該判断の結果に基づいてデータの読み出し、書き込み、又は消去を指示する動作指示を前記フラッシュメモリに与える動作指示工程とを備えたことを特徴とする。
このようなフラッシュメモリの制御方法によれば、前記フラッシュメモリが出力する信号に基づいて該フラッシュメモリがビジー状態になった後、該ビジー状態が解除されたことを検知するようにしたので、前記フラッシュメモリがビジー状態にならなかった場合は、内部での動作が開始されなかったと判断することができる。
又、前記動作指示工程では、前記フラッシュメモリのビジー状態が解除されたと判断するまで、前記フラッシュメモリに前記動作指示を与えないことが好ましい。
又、前記フラッシュメモリの制御方法において、前記フラッシュメモリに前記動作指示を与えてから所定の期間を経過しても、ビジー状態が発生しなかった場合、又はビジー状態が解除されなかった場合に、処理を中止するようにしてもよい。この処理を中止する代わりに、再処理を指示するようにしてもよい。
【発明の効果】
【００１３】
本発明によれば、フラッシュメモリから出力される信号が示す情報が、ビジー状態からビジー解除状態に遷移したことを検知するようにしたので、フラッシュメモリが与えられたコマンドに対応する動作を開始しなかった場合に、誤ってフラッシュメモリ内部での動作が行われたと判断することを回避することができる。又、フラッシュメモリから出力される信号が示す情報が、ビジー状態からビジー解除状態に遷移したことを検知した後に次の動作指示を与えるようにしたので、フラッシュメモリ内部での動作が行われなかったことを看過して、処理が続行されてしまうことを回避することができる。
【発明を実施するための最良の形態】
【００１４】
次に、本発明を実施するための最良の形態を、図面を参照して具体的に説明する。
【００１５】
図１は、本発明の第１の実施の形態であるフラッシュメモリシステムの概略構成を示すブロック図である。図１に示すように、フラッシュメモリシステム１は、フラッシュメモリ２と、それを制御するメモリコントローラ３で構成されている。また、フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続される。
【００１６】
ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central Processing Unit）と、フラッシュメモリシステム１との情報の授受を担うコンパニオンチップ等とから構成される。ホストシステム４は、例えば文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００１７】
フラッシュメモリ２は、不揮発性メモリであり、レジスタとメモリセルとの間でデータの複写を行って、データの書き込み又は読み出しを行う。ここで、フラッシュメモリ２は２−０、２−１、・・・２−ｎの複数個のフラッシュメモリで構成されている。尚、以下の説明では、説明を簡単にするためにフラッシュメモリが２個である実施の形態を例にとって説明する。つまり、フラッシュメモリ２がフラッシュメモリ２−０とフラッシュメモリ２−１で構成されている場合について説明する。
【００１８】
メモリコントローラ３は、マイクロプロセッサ６と、ホスト・インターフェース・ブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリ・インターフェース・ブロック１０と、ＥＣＣ（エラー・コレクション・コード）ブロック１１と、ＲＯＭ（Read Only Memory）１２とから構成される。これら機能ブロックによって構成されるメモリコントローラ３は、一つの半導体チップ上に集積されている。
【００１９】
マイクロプロセッサ６は、メモリコントローラ３を構成する各機能ブロック全体の動作を制御するための機能ブロックである。
【００２０】
ホスト・インターフェース・ブロック７は、ホストシステム４との間で、外部バス１３を介して、データ、アドレス情報、ステータス情報、外部コマンド情報等の授受を行う。ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホスト・インターフェース・ブロック７を入口としてメモリコントローラ３の内部（例えば、バッファ９）に取り込まれる。フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホスト・インターフェース・ブロック７を出口としてホストシステム４に供給される。
【００２１】
フラッシュメモリ・インターフェース・ブロック１０は、フラッシュメモリ２の入出力バス（Ｉ／Ｏ）の端子に接続された内部バス１４を介して、フラッシュメモリ２とデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。ここで、フラッシュメモリ２は、コマンド・ラッチ・イネーブル（ＣＬＥ）、アドレス・ラッチ・イネーブル（ＡＬＥ）、ライト・イネーブル（ＷＥ）、リード・イネーブル（ＲＥ）、チップ・イネーブル（ＣＥ）等の制御信号端子を備えている。チップセレクト信号線１５は、イネーブル（ＣＥ）の端子に接続された信号線である。このチップセレクト信号線１５を介して与えられる信号により、データ、アドレス情報、ステータス情報、内部コマンド等の授受を行う対象のフラッシュメモリ２−０又はフラッシュメモリ２−１が選択される。更に、図示していない制御信号線を介してコマンド・ラッチ・イネーブル（ＣＬＥ）、アドレス・ラッチ・イネーブル（ＡＬＥ）、ライト・イネーブル（ＷＥ）、リード・イネーブル（ＲＥ）等の制御信号端子に与えられる信号により、データ、アドレス情報、ステータス情報、内部コマンド等の授受の対象となる情報が選択される。
【００２２】
なお、「内部コマンド」とは、メモリコントローラ３がフラッシュメモリ２を制御するためのコマンドであり、ホストシステム４からメモリコントローラ３に与えられるコマンドを「外部コマンド」と言う。
【００２３】
ホスト・インターフェース・ブロック７及びフラッシュメモリ・インターフェース・ブロック１０には各種レジスタが備わる。ホスト・インターフェース・ブロック７のレジスタにはホストシステム４から与えられるアドレス情報、外部コマンド情報等が書き込まれる。また、フラッシュメモリ・インターフェース・ブロック１０のレジスタには、ホスト・インターフェース・ブロック７に書き込まれた情報に基づいて、フラッシュメモリ２内のアクセス対象領域を指示する情報が書き込まれる。
【００２４】
ホストシステム４側のアドレス空間は、セクタ（５１２バイト）単位で分割した領域に付けた通番であるＬＢＡ（Logical Block Address）で管理されている。メモリコントローラ３の内部では、複数個のセクタをまとめた論理ブロックが構成され、各論理ブロックに対応するデータは、その論理ブロックに割り当てられた１個又は複数個の物理ブロックに書き込まれる。従って、メモリコントローラ３は、論理ブロックと物理ブロックの対応関係を管理している。尚、以下の説明では、１個の論理ブロックが２個の物理ブロック（フラッシュメモリ２−０内の1個の物理ブロックとフラッシュメモリ２−１内の1個の物理ブロック）に割り当てられる実施の形態を例として説明する。
【００２５】
ワークエリア８は、マイクロプロセッサ６によるフラッシュメモリ２の制御に必要なデータが一時的に格納される作業領域であり、複数のＳＲＡＭ（Static Random Access Memory）セルによって構成される。例えば、物理ブロックと論理ブロックとの対応関係は、データの書き込みや消去が行われる毎に変化するので、個々の時点における両者の対応関係を管理するためアドレス変換テーブルがこのワークエリア８上に作成される。
【００２６】
バッファ９は、フラッシュメモリ２から読み出されたデータ及びフラッシュメモリ２に書き込むべきデータを一時的に蓄積するバッファである。すなわち、フラッシュメモリ２から読み出されたデータは、ホストシステム４が受け取り可能な状態となるまでバッファ９に保持され、フラッシュメモリ２に書き込むべきデータは、フラッシュメモリ２が書き込み可能な状態となるまでバッファ９に保持される。
【００２７】
フラッシュメモリ・インターフェース・ブロック１０は、フラッシュメモリ２の入出力バス（Ｉ／Ｏ）の端子に接続された内部バス１４を介して、フラッシュメモリ２とデータやアドレス情報、ステータス情報、内部コマンド情報の授受を行う。これらの授受を行うため、フラッシュメモリ・インターフェース・ブロック１０は、フラッシュメモリ２のコマンド・ラッチ・イネーブル（ＣＬＥ）、アドレス・ラッチ・イネーブル（ＡＬＥ）、ライト・イネーブル（ＷＥ）、リード・イネーブル（ＲＥ）、チップ・イネーブル（ＣＥ）等の制御信号端子に信号を供給する。
【００２８】
ここで、１個の論理ブロックに割り当てられた２個の物理ブロックには、４セクタ単位（ページ単位）で論理ブロックに含まれるセクタが交互に振り分けられる。４セクタ単位で交互にセクタを振り分ける場合、ＬＢＡの下位側から３ビット目が「０」のセクタはフラッシュメモリ２−０内の物理ブロックに振り分けられ、ＬＢＡの下位側から３ビット目が「１」のセクタはフラッシュメモリ２−１内の物理ブロックに振り分けられる。つまり、ＬＢＡの下位側から３ビット目が「０」のときはフラッシュメモリ２−０が選択され、ＬＢＡの下位側から３ビット目が「１」のときはフラッシュメモリ２−１が選択される。この選択を行うため、フラッシュメモリ・インターフェース・ブロック１０は、フラッシュメモリ２−０又はフラッシュメモリ２−１を活性化させる信号をチップセレクト信号線１５に供給する。
【００２９】
尚、１個の論理ブロックに２ｍ＋１個の物理ブロックを割り当てる場合には、ＬＢＡの下位側から数えて３＋ｍビット目から３ビット目までの値に基づいて各物理ブロックが含まれるフラッシュメモリ２の選択が行われる。例えば、１個の論理ブロックに４個の物理ブロック（フラッシュメモリ２−０〜２−３内の物理ブロック）を割り当てる場合には、ＬＢＡの下位側から数えて４ビット目と３ビット目の値に基づいて各物理ブロックが含まれるフラッシュメモリ２−０〜２−３のいずれか１つが選択される。つまり、ＬＢＡの下位側から数えて４ビット目と３ビット目が、「００」のときにフラッシュメモリ２−０が選択され、「０１」のときにフラッシュメモリ２−１が選択され、「１０」のときにフラッシュメモリ２−２が選択され、「１１」のときにフラッシュメモリ２−３が選択される。
【００３０】
また、フラッシュメモリ・インターフェース・ブロック１０は、フラッシュメモリ２−０〜２−１のビジー状態を監視して、フラッシュメモリ２−０〜２−１の内部で実行されるデータの読み出し、書き込み、消去の動作が正常に実行されたかどうかを検知する機能（ビジー解除検知機能）を有している。データの読み出し、書き込み、消去が正常に実行されなかった場合には、リトライを実行する機能を設けるようにしても良い。
【００３１】
ＥＣＣブロック１１は、フラッシュメモリ２−０〜２−１に書き込むデータに付加すべきエラー・コレクション・コードを生成するとともに、読み出しデータに付加されたエラー・コレクション・コードに基づいて、読み出しデータに含まれる誤りを検出・訂正する。
【００３２】
ＲＯＭ１２は、不揮発性の記憶素子であり、シーケンスコマンド等を記憶している。マイクロプロセッサ６は、ＲＯＭ１２に記憶されているプログラムを読み込むことで、各種処理を実行している。また、シーケンスコマンドは、各種処理等を定義したコマンドセットで構成されている。フラッシュメモリ・インターフェース・ブロック１０は、このシーケンスコマンドに従って、フラッシュメモリ２とデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。
【００３３】
フラッシュメモリ２は、レジスタとメモリセルとの間でデータの複写を行って、データの書き込み又は読み出しを行う。このメモリセルアレイは、複数のメモリセル群と、ワード線とを備える。各メモリセル群は、複数のメモリセルが直列に接続されたものである。ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間でデータの複写、すなわち、レジスタから選択されたメモリセルへの複写、又は選択されたメモリセルからレジスタへのデータの複写が行われる。つまり、メモリコントローラ３から与えられたデータは、レジスタを介してメモリセルアレイに書き込まれ、メモリセルアレイに記憶されているデータはレジスタを介してメモリコントローラ３に供給される。
【００３４】
メモリセルアレイを構成するメモリセルは、２つのゲートを備えたＭＯＳトランジスタによって構成される。ここで、一方のゲートはコントロールゲート、他方のゲートはフローティングゲートとそれぞれ呼ばれている。このフローティングゲートに電荷（電子）を注入若しくはフローティングゲートから電荷（電子）を排出することによって、データの書き込み若しくはデータの消去が行われる。
【００３５】
このフローティングゲートは、周囲が絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。なお、フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧がコントロールゲートとフローティングゲートとの間に印加される。また、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧がコントロールゲートとフローティングゲートとの間に印加される。
【００３６】
ここで、フローティングゲートに電子が注入されている状態が書き込み状態であり、論理値「０」に対応する。また、フローティングゲートから電子が排出されている状態が消去状態であり、論理値「１」に対応する。
【００３７】
このようなフラッシュメモリ２のアドレス空間は、“ページ”及び“ブロック（物理ブロック）”で構成されている。ページは、フラッシュメモリ２で行われるデータ読み出し動作及びデータ書き込み動作における処理単位である。つまり、ワード線によって選択されるメモリセルがページに相当し、このページ単位でレジスタからメモリセルへのデータの書き込み（複写）、又はメモリセルからレジスタへのデータの読み出し（複写）が行われる。物理ブロックは、フラッシュメモリ２で行われるデータ消去動作における処理単位であり、複数個のページで構成されている。
【００３８】
レジスタからメモリセルへのデータの書き込みは、約２００μｓ程度の時間を要する。メモリセルからレジスタへのデータの読み出しは、約２０μｓ程度の時間を要する。物理ブロックに記憶されているデータの消去は、約２ｍｓ程度の時間を要する。これらの動作を実行している間、フラッシュメモリ２は、データ、アドレス情報、内部コマンド等の授受を行うことのできないビジー状態になる。
【００３９】
次に、フラッシュメモリ２のアドレス空間の具体的な構造について説明する。
【００４０】
本実施の形態では、フラッシュメモリ２−０〜２−１が、大ブロックで構成されている場合を例として説明する。図２は、フラッシュメモリ２−０のアドレス空間の構造を概略的に示す図である。尚、フラッシュメモリ２−０とフラッシュメモリ２−１のアドレス空間は同一の構造なので、フラッシュメモリ２−０のアドレス空間の構造についてだけ説明する。
【００４１】
図２に示されるように、フラッシュメモリ２−０のアドレス空間は、ブロック０〜ブロック４０９５からなる４０９６個の物理ブロックで構成されている。各物理ブロックは、ページ０〜ページ６３からなる６４個のページで構成されている。更に、各ページは、２０４８バイト（４セクタ）のユーザ領域と６４バイトの冗長領域で構成されている。
【００４２】
ここで、フラッシュメモリ２−０が有する４０９６個の物理ブロックに付けた通番が、物理ブロックを特定するための物理ブロックアドレス（ＰＢＡ）である。フラッシュメモリ２−０が有する４０９６個の物理ブロックに含まれる全てのページ、つまり、２６２１４４個のページに付けた通番が、フラッシュメモリ２−０に与えるロウアドレス（０〜２６２１４３）に対応する。つまり、ロウアドレスにより、書き込み又は読み出しの対象のページが特定される。また、各ページは、図２に示されるように、ビットｂ０〜ｂ７からなる８ビットを１バイトとして、２０４８バイト（４セクタ）のユーザ領域２５と、６４バイトの冗長領域２６を備え、合計２１１２バイトの容量を有している。この２１１２バイトの領域内におけるバイト単位のアドレスがカラムアドレス（０〜２１１１）に対応する。
【００４３】
更に、ページの構造について、図３を参照して説明する。ユーザ領域２５は、ホストシステム４から与えられるユーザデータが記憶される領域であり、第１セクタ１６、第２セクタ１７、第３セクタ１８及び第４セクタ１９に分割して使用されている。第１セクタ１６はカラムアドレスの０〜５１１に対応する領域であり、第２セクタ１７はカラムアドレスの５１２〜１０２３に対応する領域であり、第３セクタ１８はカラムアドレスの１０２４〜１５３５に対応する領域であり、第４セクタ１９はカラムアドレスの１５３６〜２０４７に対応する領域である。
【００４４】
冗長領域２６は、不良ブロックであるか否かを示すブロックステータス、対応関係にある論理ブロックを特定するための論理アドレス情報、エラー・コレクション・コード等が記憶される領域であり、共通領域２０、第１個別領域２１、第２個別領域２２、第３個別領域２３及び第４個別領域２４に分割して使用されている。
【００４５】
共通領域２０は、カラムアドレスの２０４８〜２０５５に対応する領域（８バイトの領域）であり、ブロックステータス、論理アドレス情報等が記憶される。共通領域２０に記憶されるブロックステータス、論理アドレス情報等は、物理ブロックに含まれる６３個のページに共通な管理情報であり、この管理情報は、通常は先頭ページの共通領域２０にだけ書き込まれる。
【００４６】
第１個別領域２１は、カラムアドレスの２０５６〜２０６９に対応する領域（１４バイトの領域）であり、第１セクタ１６に書き込まれたデータに関する情報が記憶される。第２個別領域２２は、カラムアドレスの２０７０〜２０８３に対応する領域（１４バイトの領域）であり、第２セクタ１７に書き込まれたデータに関する情報が記憶される。第３個別領域２３は、カラムアドレスの２０８４〜２０９７に対応する領域（１４バイトの領域）であり、第３セクタ１８に書き込まれたデータに関する情報が記憶される。第４個別領域２４は、カラムアドレスの２０９８〜２１１１に対応する領域（１４バイトの領域）であり、第４セクタ１９に書き込まれたデータに関する情報が記憶される。
【００４７】
例えば、第１個別領域２１には、第１セクタ１６に記憶されるデータに対応するエラー・コレクション・コード２８等が記憶される。以下同様に、第２セクタ１７〜第４セクタ１９に記憶されるデータに対応するエラー・コレクション・コード２８等は、第２個別領域２２、第３個別領域２３及び第４個別領域２４にそれぞれ記憶される。
【００４８】
エラー・コレクション・コード２８は、ＥＣＣブロック１１で生成される管理情報であり、第１個別領域２１に記憶されているエラー・コレクション・コード２８に基づいて、第１セクタ１６に記憶されているデータに含まれる誤りが訂正される。以下同様に、第２個別領域２２〜第４個別領域２４に記憶されているエラー・コレクション・コード２８に基づいて、第２セクタ１７〜第４セクタ１９に記憶されているデータに含まれる誤りが訂正される。
【００４９】
尚、エラー・コレクション・コード２８のデータ量は誤りの訂正能力に応じて適宜設定することがでできる。例えば、１シンボルが１０ビットのリードソロモン符号をエラー・コレクション・コードとして使用して、４シンボル以下の誤りを訂正できるようにしたい場合には、８シンボル（１０バイト）のエラー・コレクション・コードが第１個別領域２１〜第４個別領域２４にそれぞれ書き込まれる。
【００５０】
次に、ホストシステム４からＬＢＡで指定されるアクセス領域とフラッシュメモリ２のユーザ領域２５の対応関係について説明する。本実施の形態では、ＬＢＡが連続する５１２セクタの領域が、フラッシュメモリ２−０内の１個の物理ブロックに含まれるユーザ領域とフラッシュメモリ２−１内の１個の物理ブロックに含まれるユーザ領域に割り当てられる。つまり、ＬＢＡが連続する５１２セクタをまとめた論理ブロックが、フラッシュメモリ２−０内の１個の物理ブロックとフラッシュメモリ２−１内の１個の物理ブロックに割り当てられる。この論理ブロックと物理ブロックの対応関係は冗長領域２６に書き込まれている論理アドレス情報に基づいて判断される。
【００５１】
本実施の形態では、５１２セクタをまとめたものを論理ブロックとしたので、ＬＢＡの下位９ビットを除いた上位ビット側が論理ブロックに付けた通番である論理ブロック番号（ＬＢＮ）に対応する。例えば、ＬＢＡが０〜５１１のセクタで構成された論理ブロックのＬＢＮは０になり、ＬＢＡが５１２〜１０２３のセクタで構成された論理ブロックのＬＢＮは１になり、ＬＢＡが１０２４〜１５３５のセクタで構成された論理ブロックのＬＢＮは２になる。
【００５２】
尚、共通領域２０に書き込まれる論理アドレス情報は、この論理ブロック番号（ＬＢＮ）を特定できる情報であればよい。又、同一の論理ブロックに割り当てられたフラッシュメモリ２−０内の１個の物理ブロックとフラッシュメモリ２−１内の１個の物理ブロックには、同一の論理アドレス情報が書き込まれる。
【００５３】
論理ブロックに含まれる５１２セクタの２個の物理ブロック（フラッシュメモリ２−０内の１個の物理ブロックとフラッシュメモリ２−１内の１個の物理ブロック）に対する振り分けについては、ＬＢＡの下位９ビットの値に基づいて振り分け先を特定することができる。
【００５４】
振り分け先がフラッシュメモリ２−０側の物理ブロックであるか、又はフラッシュメモリ２−１側の物理ブロックであるかは、ＬＢＡの下位側から数えて３ビット目の値に基づいて特定することができる。振り分け先がページ０〜ページ６３のいずれのページであるかは、ＬＢＡの下位側から数えて９ビット目から４ビット目の値に基づいて特定される。振り分け先が第１セクタ１６〜第４セクタ１９のいずれの領域であるかは、ＬＢＡの下位側から数えて２ビット目と１ビット目の値に基づいて特定される。
【００５５】
例えば、ＬＢＡの下位９ビットの値が「０  ００００  ００００」〜「０  ００００  ００１１」のセクタは、フラッシュメモリ２−０側の物理ブロックのページ０に振り分けられる。ＬＢＡの下位９ビットの値が「０  ００００  ０１００」〜「０  ００００  ０１１１」のセクタは、フラッシュメモリ２−１側の物理ブロックのページ０に振り分けられる。ＬＢＡの下位９ビットの値が「０  ００００  １０００」〜「０  ００００  １０１１」のセクタは、フラッシュメモリ２−０側の物理ブロックのページ１に振り分けられる。ＬＢＡの下位９ビットの値が「０  ００００  １１００」〜「０  ００００  １１１１」のセクタは、フラッシュメモリ２−１側の物理ブロックのページ１に振り分けられる。更に、各ページに振り分けられた４セクタについては、ＬＢＡの下位側から数えて２ビット目と１ビット目の値が「００」のセクタは、第１セクタ１６に振り分けられる。ＬＢＡの下位側から数えて２ビット目と１ビット目の値が「０１」のセクタは、第２セクタ１７に振り分けられる。ＬＢＡの下位側から数えて２ビット目と１ビット目の値が「１０」のセクタは、第３セクタ１８に振り分けられる。ＬＢＡの下位側から数えて２ビット目と１ビット目の値が「１１」のセクタは、第４セクタ１９に振り分けられる。
【００５６】
次に、フラッシュメモリに与えるアドレスの生成について説明する。ロウアドレスを生成するときは、ＬＢＡから論理ブロック番号（ＬＢＮ）を求め、更に、論理ブロック番号（ＬＢＮ）に対応する物理ブロックアドレス（ＰＢＡ）を求める。この、物理ブロックアドレス（ＰＢＡ）の下位側に、ＬＢＡの下位側から数えて９ビット目から４ビット目を連結することによりロウアドレスを生成することができる。カラムアドレスについては、ＬＢＡの下位側から数えて２ビット目と１ビット目の値に基づいて求めることができる。つまり、求めるカラムアドレスは、この２ビットが「００」であれば第１セクタ１６のアドレスとなり、「０１」であれば第２セクタ１７のアドレスとなり、「１０」であれば第３セクタ１８のアドレスとなり、「１１」であれば第３セクタ１９のアドレスとなる。
【００５７】
次に、フラッシュメモリ２−０又はフラッシュメモリ２−１から１ページ分のデータを読み出す動作を、図４を参照して説明する。図４は、ｔ１〜ｔ２６の期間にフラッシュメモリ２−０又はフラッシュメモリ２−１の入出力バス（Ｉ／Ｏ）に入力されるコマンド及びアドレスと入出力バス（Ｉ／Ｏ）から出力されるデータを示している。
【００５８】
ｔ１〜ｔ２の期間：
リードコマンド（ＲＣ）が入出力バス（Ｉ／Ｏ）に入力される。
【００５９】
ｔ２〜ｔ３の期間：
アドレス（ＡＤ）が入出力バス（Ｉ／Ｏ）に入力される。ここでは、読み出すページに対応するロウアドレスと第１セクタ１６の先頭アドレス（図３に示した（１））に対応するカラムアドレスが入力される。
【００６０】
ｔ３〜ｔ４の期間：
フラッシュメモリ内のセルアレイからレジスタへのデータの読み出し（複写）が開始され、このデータの読み出し（複写）が終了するまで、フラッシュメモリはビジー状態になる。
【００６１】
ｔ４〜ｔ５の期間：
リード・イネーブル（ＲＥ）の端子に入力する信号を、「Ｈ」（ハイ・レベル）と「Ｌ」（ロー・レベル）に交互に遷移させることより、第１セクタ１６に保持されているデータ（ＤＴ）が入出力バス（Ｉ／Ｏ）から出力される。ここで、入出力バス（Ｉ／Ｏ）から出力されるデータ（ＤＴ）は、リード・イネーブル（ＲＥ）の端子に入力される信号が「Ｈ」から「Ｌ」に遷移する毎に、次のカラムアドレスのデータに切替わる。
【００６２】
ｔ５〜ｔ６の期間：
ランダムリードコマンド（ＲＲＣ）が入出力バス（Ｉ／Ｏ）に入力される。
【００６３】
ｔ６〜ｔ７の期間：
アドレス（ＡＤ）が入出力バス（Ｉ／Ｏ）に入力される。ここでは、第１個別領域２１の先頭アドレス（図３に示した（２））に対応するカラムアドレスが入力される。
【００６４】
ｔ７〜ｔ８の期間：
リード・イネーブル（ＲＥ）の端子に入力する信号を、「Ｈ」と「Ｌ」に交互に遷移させることより、第１個別領域２１に保持されているデータ（ＤＴ）が入出力バス（Ｉ／Ｏ）から出力される。ここで、入出力バス（Ｉ／Ｏ）から出力されるデータ（ＤＴ）は、リード・イネーブル（ＲＥ）の端子に入力される信号が「Ｈ」から「Ｌ」に遷移する毎に、次のカラムアドレスのデータに切替わる。
【００６５】
以下同様に、ランダムリードコマンド（ＲＲＣ）とアドレス（ＡＤ）が入出力バス（Ｉ／Ｏ）に順次入力される。つまり、第２セクタ１７、第２個別領域２２、第３セクタ１８、第３個別領域２３、第４セクタ１９及び第４個別領域２４の先頭アドレス（図３に示した（３）〜（８））に対応するカラムアドレスが、ランダムリードコマンド（ＲＲＣ）と共に順次入力される。入出力バス（Ｉ／Ｏ）に入力された各アドレス（ＡＤ）に対応して、第２セクタ１７、第２個別領域２２、第３セクタ１８、第３個別領域２３、第４セクタ１９及び第４個別領域２４に保持されているデータ（ＤＴ）が入出力バス（Ｉ／Ｏ）から出力される。
【００６６】
尚、リードコマンド（ＲＣ）及びランダムリードコマンド（ＲＲＣ）が入出力バス（Ｉ／Ｏ）に入力されている期間は、コマンド・ラッチ・イネーブル（ＣＬＥ）の端子に「Ｈ」の信号が入力され、アドレス・ラッチ・イネーブル（ＡＬＥ）の端子に「Ｌ」の信号が入力される。アドレス（ＡＤ）が入出力バス（Ｉ／Ｏ）に入力されている期間は、コマンド・ラッチ・イネーブル（ＣＬＥ）の端子に「Ｌ」の信号が入力され、アドレス・ラッチ・イネーブル（ＡＬＥ）の端子に「Ｈ」の信号が入力される。リードコマンド（ＲＣ）、ランダムリードコマンド（ＲＲＣ）及びアドレス（ＡＤ）が入出力バス（Ｉ／Ｏ）に入力されている期間に、ライト・イネーブル（ＷＥ）の端子に入力される信号を「Ｌ」から「Ｈ」に遷移させることにより、リードコマンド（ＲＣ）、ランダムリードコマンド（ＲＲＣ）及びアドレス（ＡＤ）がフラッシュメモリに取り込まれる。
【００６７】
次に、フラッシュメモリ２−０又はフラッシュメモリ２−１に１ページ分のデータを書き込む動作を、図５を参照して説明する。図５は、ｔ３１〜ｔ５６の期間にフラッシュメモリ２−０又はフラッシュメモリ２−１の入出力バス（Ｉ／Ｏ）に入力されるコマンド、アドレス及びデータを示している。
【００６８】
ｔ３１〜ｔ３２の期間：
インプットコマンド（ＩＣ）が入出力バス（Ｉ／Ｏ）に入力される。
【００６９】
ｔ３２〜ｔ３３の期間：
アドレス（ＡＤ）が入出力バス（Ｉ／Ｏ）に入力される。ここでは、書き込み先のページに対応するロウアドレスと第１セクタ１６の先頭アドレス（図３に示した（１））に対応するカラムアドレスが入力される。
【００７０】
ｔ３３〜ｔ３４の期間：
第１セクタ１６に書き込むデータ（ＤＴ）が入出力バス（Ｉ／Ｏ）に順次入力される。書き込み先のカラムアドレスは、ライト・イネーブル（ＷＥ）の端子に入力される信号が「Ｌ」から「Ｈ」に遷移するタイミングで次のカラムアドレスに切替わる。従って、第１セクタ１６に書き込むデータ（ＤＴ）も、ライト・イネーブル（ＷＥ）の端子に入力される信号レベルの遷移に合わせて入出力バス（Ｉ／Ｏ）に順次入力される。
【００７１】
ｔ３４〜ｔ３５の期間：
ランダムインプットコマンド（ＲＩＣ）が入出力バス（Ｉ／Ｏ）に入力される。
【００７２】
ｔ３５〜ｔ３６の期間：
アドレス（ＡＤ）が入出力バス（Ｉ／Ｏ）に入力される。ここでは、第１個別領域２１の先頭アドレス（図３に示した（２））に対応するカラムアドレスが入力される。
【００７３】
ｔ３６〜ｔ３７の期間：
第１個別領域２１に書き込むデータ（ＤＴ）が入出力バス（Ｉ／Ｏ）に順次入力される。書き込み先のカラムアドレスは、ライト・イネーブル（ＷＥ）の端子に入力される信号が「Ｌ」から「Ｈ」に遷移するタイミングで次のカラムアドレスに切替わる。従って、第１個別領域２１に書き込むデータ（ＤＴ）も、ライト・イネーブル（ＷＥ）の端子に入力される信号レベルの遷移に合わせて入出力バス（Ｉ／Ｏ）に順次入力される。
【００７４】
以下同様に、ランダムインプットコマンド（ＲＩＣ）、アドレス（ＡＤ）及びデータ（ＤＴ）が入出力バス（Ｉ／Ｏ）に順次入力される。つまり、第２セクタ１７、第２個別領域２２、第３セクタ１８、第３個別領域２３、第４セクタ１９及び第４個別領域２４の先頭アドレス（図３に示した（３）〜（８））に対応するカラムアドレスと、これらの領域に書き込むデータ（ＤＴ）が、ランダムインプットコマンド（ＲＩＣ）と共に順次入力される。
【００７５】
第４個別領域２４に書き込むデータ（ＤＴ）が入出力バス（Ｉ／Ｏ）に順次入力された後（ｔ５５〜ｔ５６の期間）に、プログラムコマンド（ＰＣ）が入出力バス（Ｉ／Ｏ）に入力される。このプログラムコマンド（ＰＣ）に応答して、フラッシュメモリ内のレジスタからセルアレイへのデータの書き込み（複写）が開始され、このデータの書き込み（複写）が終了するまでフラッシュメモリはビジー状態になる。
【００７６】
尚、インプットコマンド（ＩＣ）、ランダムインプットコマンド（ＲＩＣ）及びプログラムコマンド（ＰＣ）が入出力バス（Ｉ／Ｏ）に入力されている期間は、コマンド・ラッチ・イネーブル（ＣＬＥ）の端子に「Ｈ」の信号が入力され、アドレス・ラッチ・イネーブル（ＡＬＥ）の端子に「Ｌ」の信号が入力される。アドレス（ＡＤ）が入出力バス（Ｉ／Ｏ）に入力されている期間は、コマンド・ラッチ・イネーブル（ＣＬＥ）の端子に「Ｌ」の信号が入力され、アドレス・ラッチ・イネーブル（ＡＬＥ）の端子に「Ｈ」の信号が入力される。データ（ＤＴ）が入出力バス（Ｉ／Ｏ）に入力されている期間は、コマンド・ラッチ・イネーブル（ＣＬＥ）の端子に「Ｌ」の信号が入力され、アドレス・ラッチ・イネーブル（ＡＬＥ）の端子に「Ｌ」の信号が入力される。インプットコマンド（ＩＣ）、ランダムインプットコマンド（ＲＩＣ）、プログラムコマンド（ＰＣ）及びアドレス（ＡＤ）が入出力バス（Ｉ／Ｏ）に入力されている期間に、ライト・イネーブル（ＷＥ）の端子に入力される信号を「Ｈ」から「Ｌ」に遷移させることにより、インプットコマンド（ＩＣ）、ランダムインプットコマンド（ＲＩＣ）、プログラムコマンド（ＰＣ）及びアドレス（ＡＤ）がフラッシュメモリに取り込まれる。
【００７７】
次に、フラッシュメモリ２−０又はフラッシュメモリ２−１の内部で行われるセルアレイからレジスタへのデータの読み出し（複写）及びレジスタからセルアレイへのデータの書き込み（複写）が正常に行われたか否かを検出する方法について図６〜図８を参照して説明する。
【００７８】
本実施の形態におけるデータの読み出し処理及び書き込み処理では、フラッシュメモリ２−０とフラッシュメモリ２−１に交互にアクセスしている。従来、複数のフラッシュメモリに交互にアクセスする場合には、アクセスすべきフラッシュメモリのレディ／ビジー（Ｒ／Ｂ）の端子から出力される信号がレディ状態を示す「Ｈ」であることを確認してからアクセスを開始していた。つまり、フラッシュメモリがビジー状態であるか否かを、フラッシュメモリのレディ／ビジー（Ｒ／Ｂ）の端子から出力される信号レベルによって判断してからフラッシュメモリに対するアクセスを開始していた。
【００７９】
しかし、レディ／ビジー（Ｒ／Ｂ）の端子から出力される信号レベルを、アクセスを開始する直前に確認した場合、現在の状態がビジー状態であるか又はレディ状態であるかは判断することはできるが、その直前に行われたセルアレイからレジスタへのデータの読み出し（複写）又はレジスタからセルアレイへのデータの書き込み（複写）が正常に行われたか否かを判断することができない。例えば、フラッシュメモリが入力されたコマンドを正しく受け取ることができなかったために、セルアレイからレジスタへのデータの読み出し（複写）又はレジスタからセルアレイへのデータの書き込み（複写）が開始されなかった場合、それを検出することができない。
【００８０】
そこで、本発明による本実施の形態では、セルアレイからレジスタへのデータの読み出し（複写）又はレジスタからセルアレイへのデータの書き込み（複写）が正常に行われたか否かを判断するため、フラッシュメモリ・インターフェース・ブロック１０内にビジー解除検知手段を設けている。このビジー解除検知手段は、リードコマンド（ＲＣ）又はプログラムコマンド（ＰＣ）を与えたときに、レディ／ビジー（Ｒ／Ｂ）の端子から出力される信号が、ビジー状態を示す「Ｌ」になった後、レディ状態を示す「Ｈ」に遷移したことを検出する。
【００８１】
図６を参照して、このビジー解除検知手段について説明する。図６はフラッシュメモリ・インターフェース・ブロック１０内に備わるビジー解除検知手段の構成とビジー解除検知手段に入力される信号及びビジー解除検知手段から出力される信号を示している。なお、ビジー解除検知手段以外の構成については図示を省略している。
【００８２】
図６において、４１は制御ブロック、４２、４３はフリップ・フロップ、４４は内部バス１４に相当する入出力バス（Ｉ／Ｏ）である。フリップ・フロップ４２、４３は例えばＤタイプフリップ・フロップを使用できる。フリップ・フロップ４２、４３にはリセット端子Ｒ（Ｄタイプフリップ・フロップのクリア（Clear）端子）、検出端子Ｓ（Ｄタイプフリップ・フロップのクロック（Clock）端子）、出力端子Ｑを備えている。尚、図示していないＤタイプフリップ・フロップのデータ（Data）端子は、プルアップされている。
【００８３】
フリップ・フロップ４２、４３の出力端子Ｑから出力される信号は制御ブロック４１に入力されている。また、フリップ・フロップ４２、４３のリセット端子Ｒには制御ブロック４１からリセット信号Ｒが入力されている。また、フリップ・フロップ４２、４３の検出端子Ｓにはフラッシュメモリ２−０、２−１のレディ／ビジー（Ｒ／Ｂ）から出力される信号が入力されている。ここで、フラッシュメモリ２−０に対応するものは添え字Ａ、フラッシュメモリ２−１に対応するものは添え字Ｂを付けて図示してある。
【００８４】
フリップ・フロップ４２、４３は、リセット端子Ｒに「Ｌ」の信号が入力されると出力端子Ｑから出力される信号が「Ｌ」になる。この状態で検出端子Ｓに入力されている信号が「Ｌ」から「Ｈ」に遷移すると出力端子Ｑから出力される信号は「Ｈ」になる。
【００８５】
制御ブロック４１は、フラッシュメモリ２−０にアクセスするときに、フラッシュメモリ２−０のチップ・イネーブル（ＣＥＡ）に「Ｌ」の信号を入力し、フラッシュメモリ２−１にアクセスするときに、フラッシュメモリ２−１のチップ・イネーブル（ＣＥＢ）に「Ｌ」の信号を入力する。
【００８６】
次に、フラッシュメモリ２−０とフラッシュメモリ２−１から交互にデータを読み出す動作を、図７を参照して説明する。
【００８７】
まず、制御ブロック４１は、リードコマンド（ＲＣ）をフラッシュメモリ２−０の入出力バス（Ｉ／Ｏ）４４に入力するタイミングで、フリップ・フロップ４２のリセット端子ＲＡに「Ｌ」の信号を入力する（ｔ６１）。リセット端子ＲＡに「Ｌ」の信号が入力されたことにより、フリップ・フロップ４２の出力端子ＱＡから出力される信号は「Ｈ」から「Ｌ」に遷移する。その後、フラッシュメモリ２−０は、入出力バス（Ｉ／Ｏ）４４に入力されたリードコマンド（ＲＣ）及びアドレス（ＡＤ）に基づいて、セルアレイからレジスタへのデータの読み出し（複写）を開始し、レディ／ビジー（Ｒ／ＢＡ）の端子から出力される信号を「Ｌ」にする（ｔ６２）。
【００８８】
次に、制御ブロック４１は、リードコマンド（ＲＣ）をフラッシュメモリ２−１の入出力バス（Ｉ／Ｏ）４４に入力するタイミングで、フリップ・フロップ４３のリセット端子ＲＢに「Ｌ」の信号を入力する（ｔ６３）。リセット端子ＲＢに「Ｌ」の信号が入力されたことにより、フリップ・フロップ４３の出力端子ＱＢから出力される信号は「Ｈ」から「Ｌ」に遷移する。その後、フラッシュメモリ２−１は、入出力バス（Ｉ／Ｏ）４４に入力されたリードコマンド（ＲＣ）及びアドレス（ＡＤ）に基づいて、セルアレイからレジスタへのデータの読み出し（複写）を開始し、レディ／ビジー（Ｒ／ＢＢ）の端子から出力される信号を「Ｌ」にする（ｔ６４）。
【００８９】
この後、制御ブロック４１は、出力端子ＱＡから出力される信号が「Ｈ」になるまで、フラッシュメモリ２−０に対するアクセスを禁止する。つまり、出力端子ＱＡから出力される信号が「Ｈ」になった後に、フラッシュメモリ２−０に対するアクセスが開始される（ｔ６７）。このアクセスは、図４のｔ４〜ｔ２６に対応する。ここで、出力端子ＱＡから出力される信号は、レディ／ビジー（Ｒ／ＢＡ）の端子から出力される信号が「Ｌ」から「Ｈ」に遷移するタイミングで、「Ｌ」から「Ｈ」に遷移する（ｔ６６）。従って、リードコマンド（ＲＣ）をフラッシュメモリ２−０の入出力バス（Ｉ／Ｏ）４４に入力した後に、セルアレイからレジスタへのデータの読み出し（複写）が開始されず、フラッシュメモリ２−０のレディ／ビジー（Ｒ／ＢＡ）の端子から出力される信号が「Ｌ」にならなかった場合は、出力端子ＱＡから出力される信号は「Ｈ」にならない。
【００９０】
同様に、制御ブロック４１は、出力端子ＱＢから出力される信号が「Ｈ」になるまで、フラッシュメモリ２−１に対するアクセスを禁止する。従って、フラッシュメモリ２−０に対するアクセスが終了した後、出力端子ＱＢから出力される信号が「Ｈ」になっていれば、フラッシュメモリ２−１に対するアクセスが開始される（ｔ７１）。ここで、出力端子ＱＢから出力される信号についても、フラッシュメモリ２−１のレディ／ビジー（Ｒ／ＢＢ）の端子から出力される信号が「Ｌ」にならなかった場合は、「Ｈ」にならない。
【００９１】
尚、フラッシュメモリ２−１に対するアクセスを開始する前に、フラッシュメモリ２−０の入出力バス（Ｉ／Ｏ）４４には、リードコマンド（ＲＣ）とアドレス（ＡＤ）が入力される。制御ブロック４１は、リードコマンド（ＲＣ）をフラッシュメモリ２−０の入出力バス（Ｉ／Ｏ）４４に入力するタイミングで、フリップ・フロップ４２のリセット端子ＲＡに「Ｌ」の信号を入力する（ｔ６９）。フラッシュメモリ２−１に対するアクセスを終了して、フラッシュメモリ２−０に対するアクセスを開始するときは、出力端子ＱＡから出力される信号レベルに基づいてアクセスの可否を判断する。以後同様にフラッシュメモリ２−０に対するアクセスとフラッシュメモリ２−１に対するアクセスが交互に行われる。
【００９２】
リセット端子ＲＡ又はリセット端子ＲＢに「Ｌ」の信号を入力するタイミングは、レディ／ビジー（Ｒ／Ｂ）の端子から出力される信号が「Ｌ」から「Ｈ」に遷移する前、つまり、ビジー状態が解除される前であればよいが、ビジー状態の期間は一定でないため、ビジー状態になる前の方が好ましい。
【００９３】
次に、フラッシュメモリ２−０とフラッシュメモリ２−１に交互にデータを書き込む動作を、図８を参照して説明する。
【００９４】
まず、フラッシュメモリ２−０に対して図５のｔ３１〜ｔ５６に示したアクセスが行われる。制御ブロック４１は、プログラムコマンド（ＰＣ）をフラッシュメモリ２−０の入出力バス（Ｉ／Ｏ）４４に入力するタイミングで、フリップ・フロップ４２のリセット端子ＲＡに「Ｌ」の信号を入力する（ｔ８２）。リセット端子ＲＡに「Ｌ」の信号が入力されたことにより、フリップ・フロップ４２の出力端子ＱＡから出力される信号は「Ｈ」から「Ｌ」に遷移する。その後、フラッシュメモリ２−０は、入出力バス（Ｉ／Ｏ）４４に入力されたプログラムコマンド（ＰＣ）及びアドレス（ＡＤ）（図５のｔ３２〜ｔ３３の期間に入力されたアドレス（ＡＤ））に基づいて、レジスタからセルアレイへのデータの書き込み（複写）を開始し、レディ／ビジー（Ｒ／ＢＡ）の端子から出力される信号を「Ｌ」にする（ｔ８３）。
【００９５】
次に、フラッシュメモリ２−１に対して図５のｔ３１〜ｔ５６に示したアクセスが行われる。
制御ブロック４１は、プログラムコマンド（ＰＣ）をフラッシュメモリ２−１の入出力バス（Ｉ／Ｏ）４４に入力するタイミングで、フリップ・フロップ４３のリセット端子ＲＢに「Ｌ」の信号を入力する（ｔ８６）。リセット端子ＲＢに「Ｌ」の信号が入力されたことにより、フリップ・フロップ４３の出力端子ＱＢから出力される信号は「Ｈ」から「Ｌ」に遷移する。その後、フラッシュメモリ２−１は、入出力バス（Ｉ／Ｏ）４４に入力されたリードコマンド（ＲＣ）及びアドレス（ＡＤ）に基づいて、レジスタからセルアレイへのデータの書き込み（複写）を開始し、レディ／ビジー（Ｒ／ＢＢ）の端子から出力される信号を「Ｌ」にする（ｔ８７）。
【００９６】
読み出しの場合と同様に、制御ブロック４１は、出力端子ＱＡから出力される信号が「Ｈ」になるまで、フラッシュメモリ２−０に対するアクセスを禁止し、出力端子ＱＢから出力される信号が「Ｈ」になるまで、フラッシュメモリ２−１に対するアクセスを禁止する。従って、フラッシュメモリ２−１に対するアクセスが終了した後、出力端子ＱＡから出力される信号が「Ｈ」になっていれば、フラッシュメモリ２−０に対するアクセスが開始される（ｔ８８）。以後同様に、フラッシュメモリ２−０に対するアクセスが終了した後、出力端子ＱＢから出力される信号が「Ｈ」になっていれば、フラッシュメモリ２−１に対するアクセスが開始される。このようにして、フラッシュメモリ２−０に対するアクセスとフラッシュメモリ２−１に対するアクセスが交互に行われる。
【００９７】
書き込みの場合もリセット端子ＲＡ又はリセット端子ＲＢに「Ｌ」の信号を入力するタイミングは、レディ／ビジー（Ｒ／Ｂ）の端子から出力される信号が「Ｌ」から「Ｈ」に遷移する前、つまり、ビジー状態が解除される前であればよいが、ビジー状態の期間は一定でないため、ビジー状態になる前の方が好ましい。
【００９８】
フラッシュメモリ２−０又はフラッシュメモリ２−１に対するアクセスを開始するときに、フラッシュメモリ２−０又はフラッシュメモリ２−１からステータスを読み出して、書き込み動作でエラーが発生しなかったかどうかを確認してもよい。
【００９９】
又、上記フラッシュメモリ２−０とフラッシュメモリ２−１に対する読み出し又は書き込みで、リセット端子ＲＡ又はリセット端子ＲＢに「Ｌ」の信号を入力した後、所定の期間が経過しても出力端子ＱＡ又は出力端子ＱＢから出力される信号が「Ｈ」にならなかった場合は、処理を中止する。ここでの所定の期間は、書き込み、読み出し等の動作時間を考慮して、適宜設定することができる。所定の期間が経過しても出力端子ＱＡ又は出力端子ＱＢから出力される信号が「Ｈ」にならなかった場合に、正常に行われなかった処理を再度実行するようにしてもよい。
【０１００】
以上の説明では、読み出し又は書き込みが連続的に行われる場合について説明したが、消去の場合も同様に適用することができる。又、読み出し、書き込み又は消去が混在する場合も同様に適用することができる。例えば、読み出しと書き込みが交互に行われる場合も同様に適用することができる。又、フラッシュメモリの物理ブロックが大ブロックの場合を例に挙げて説明したが、小ブロックのものでも同様に実施することができる。
【０１０１】
また、図６に示した回路はＤタイプフリップ・フロップを用いて構成したが、レディ／ビジー（Ｒ／Ｂ）の端子から出力される信号が一旦「Ｌ」（ビジー状態）になり、その後「Ｈ」（レディ状態）になったことを検知できるビジー解除検知手段であればＤタイプフリップ・フロップに限らず実施することができる。
【０１０２】
また、以上の説明では、フラッシュメモリを複数個備えるものに本発明を適用した例を挙げたが、フラッシュメモリが１個の場合に本発明を適用すると、処理速度の高速化は得られないが、フラッシュメモリ内部での動作が行われなかったことを検知することはできる。
【０１０３】
以上、本実施の形態を具体的に説明したが、本発明は上記実施の形態に限定されず、発明の要旨を逸脱しない範囲で変更して実施することができる。
【図面の簡単な説明】
【０１０４】
【図１】本発明の第１の実施の形態であるフラッシュメモリシステムの概略構成を示すブロック図である。
【図２】本発明の第１の実施の形態で使用されるフラッシュメモリの、アドレス空間の構成について説明する図である。
【図３】本発明の第１の実施の形態で使用されるフラッシュメモリの、ページの構成、及び冗長領域のデータ構造を概略的に示す図である。
【図４】フラッシュメモリの１ページ分の読み出し動作を説明する図である。
【図５】フラッシュメモリの１ページ分の書き込み動作を説明する図である。
【図６】本発明の第１の実施の形態であるフラッシュメモリ・インターフェース・ブロック１０内に備わる、ビジー解除検知機能の構成を示す図である。
【図７】本発明の第１の実施の形態における、フラッシュメモリから複数ページのデータを連続して読み出すときの動作を説明する図である。
【図８】本発明の第１の実施の形態における、フラッシュメモリへ複数ページのデータを連続して書き込むときの動作を説明する図である。
【符号の説明】
【０１０５】
１・・・フラッシュメモリシステム
２、２−０、２−１、２−ｎ・・・フラッシュメモリ
３・・・メモリコントローラ
４・・・ホストシステム
６・・・マイクロプロセッサ（動作指示出力手段）
７・・・ホスト・インターフェース・ブロック
８・・・ワークエリア
９・・・バッファ（データ保持手段）
１０・・・フラッシュメモリ・インターフェース・ブロック（データ入出力手段）
１１・・・ＥＣＣ（エラー・コレクション・コード）ブロック
１２・・・ＲＯＭ
１３・・・外部バス
１４・・・内部バス
１５・・・チップセレクト信号線
１６・・・第１セクタ
１７・・・第２セクタ
１８・・・第３セクタ
１９・・・第４セクタ
２０・・・共通領域
２１〜２４・・・個別領域
２５・・・ユーザ領域
２６・・・冗長領域
２８・・・ＥＣＣ（エラー・コレクション・コード）
４１・・・制御ブロック
４２、４３・・・フリップ・フロップ（ビジー解除検知手段）
４４・・入出力バス（Ｉ／Ｏ）
【図１】
2008070919.tif 000003
【図２】
2008070919.tif 000004
【図３】
2008070919.tif 000005
【図４】
2008070919.tif 000006
【図５】
2008070919.tif 000007
【図６】
2008070919.tif 000008
【図７】
2008070919.tif 000009
【図８】
2008070919.tif 000010