(57)【要約】【課題】フラッシュメモリに対するアクセス状況を容易に把握できると共に、アクセス動作を容易に中止させることができるメモリコントローラを提供する。【解決手段】フラッシュメモリに対するアクセスを制御するために実行される制御動作を指示する動作命令コードを複数個含むコードセットを記憶しているコードセット記憶手段と、動作命令コードのアドレスを保持するアドレス保持手段と、ホストシステムから外部コマンドが与えられたときに、その外部コマンドに対応するコードセットに含まれる動作命令コードのアドレスをアドレス保持手段に設定するコードセット選択手段と、アドレス保持手段に設定されているアドレスに従ってコードセット記憶手段から動作命令コードを読み出して制御動作を実行する制御動作実行手段と、制御動作実行手段が制御動作を実行する毎に、前記アドレス保持手段に設定されているアドレスを、次に実行すべき制御動作に対応する動作命令コードのアドレスに変更するアドレス更新手段を備える。【選択図】図３
2008077468.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムから与えられる指示情報に応じて、ブロック単位で記憶データの消去を実行するフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記フラッシュメモリに対するアクセスを制御するために実行される制御動作を指示する動作命令コードを複数個含むコードセットを複数組記憶しているコードセット記憶手段と、
前記コードセット記憶手段に記憶されている前記動作命令コードのアドレスを保持するアドレス保持手段と、
前記指示情報が与えられたときに、該指示情報に含まれる外部コマンドに対応する前記コードセットを選択し、該コードセットに含まれる前記動作命令コードのアドレスを前記アドレス保持手段に設定するコードセット選択手段と、
前記アドレス保持手段に設定されているアドレスに従って前記コードセット記憶手段から前記動作命令コードを読み出し、該動作命令コードに基づいた制御動作を実行する制御動作実行手段と、
前記制御動作実行手段が前記動作命令コードに基づいた制御動作を実行する毎に、前記アドレス保持手段に設定されているアドレスを、次に実行すべき制御動作に対応する前記動作命令コードのアドレスに変更するアドレス更新手段と、
を備えることを特徴とするメモリコントローラ。
【請求項２】
前記制御動作実行手段が前記コードセットに基づいた一連の制御動作を実行しているときに、前記アドレス保持手段に設定されているアドレスを変更することにより前記一連の制御動作を終了させる強制終了手段を備えることを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記指示情報に基づいて特定されるアクセス対象領域に対応する前記フラッシュメモリ内のブロックの物理ブロックアドレスを求めるアドレス変換手段を備えることを特徴とする請求項１又は２に記載のメモリコントローラ。
【請求項４】
請求項１から３のいずれか１項に記載のメモリコントローラとフラッシュメモリを備えることを特徴とするフラッシュメモリシステム。
【請求項５】
ホストシステムから与えられる指示情報に応じて、ブロック単位で記憶データの消去を実行するフラッシュメモリに対するアクセスを制御するために、予め記憶手段に記憶されている複数個の動作命令コード含むコードセットに基づいて一連の制御動作を実行するフラッシュメモリの制御方法であって、
前記指示情報が与えられたときに、該指示情報に含まれる外部コマンドに対応する前記コードセットを選択し、該コードセットに含まれる前記動作命令コードのアドレスをアドレス保持手段に設定するコードセット選択ステップと、
前記アドレス保持手段に設定されているアドレスに従って前記記憶手段から前記動作命令コードを読み出し、該動作命令コードに基づいた制御動作を実行する制御動作実行ステップと、
前記制御動作実行ステップで前記動作命令コードに基づいた制御動作が実行される毎に、前記アドレス保持手段に設定されているアドレスを次に実行すべき制御動作に対応する前記動作命令コードのアドレスに変更するアドレス更新ステップと、
を含むことを特徴とするフラッシュメモリの制御方法。
【請求項６】
前記アドレス保持手段に設定されているアドレスを変更することにより、前記コードセット選択ステップで選択された前記コードセットに基づいた一連の制御動作を強制的に終了させる強制終了ステップを含むことを特徴とする請求項５に記載のフラッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
【背景技術】
【０００２】
近年、メモリカードやシリコンディスク等といったメモリシステムにて使用される半導体メモリに、フラッシュメモリが広く採用されている。フラッシュメモリは、不揮発性メモリの一種である。
【０００３】
上記のメモリシステムで特に多く用いられるフラッシュメモリに、ＮＡＮＤ型フラッシュメモリがある。ＮＡＮＤ型フラッシュメモリでは、各メモリセルを他のメモリセルとは独立して、論理値"１"に対応する消去状態から、論理値"０"に対応する書込状態へと変化させることができる。これとは対照的に、書込状態から消去状態へと変化させるときには、各メモリセルを他のメモリセルと独立して変化させることができない。このときには、ブロックと称される予め定められた数のメモリセルが、全て同時に消去状態になる。この一括消去動作は、一般的に、"ブロック消去"と称されている。ＮＡＮＤ型フラッシュメモリに対する書き込み処理または読み出し処理は、ページと称される予め定められた数のメモリセル単位で処理が実行されている。消去処理の単位であるブロックは、複数のページで構成されている。
【０００４】
上記のような構成を有するＮＡＮＤ型フラッシュメモリでは、データの重ね書きを行うことができないため、データの書き換えを行う場合には、ブロック消去されている消去済ブロックに新たなデータ（書き換え後のデータ）を書き込み、古いデータ（書き換え前のデータ）が書き込まれていたブロックを消去するという処理を行わなければならない。
【０００５】
このようなデータの書き換えを行った場合、書き換え後のデータは、書き換え前のデータと異なるブロックに書き込まれる。従って、ホストシステム側から与えられる論理ブロックアドレスと、フラッシュメモリ内の物理ブロックアドレスとの対応関係は、データを書き換えるごとに動的に変化する。このため、フラッシュメモリにアクセスする場合には、論理ブロックアドレスと物理ブロックアドレスの対応関係を示したアドレス変換テーブルが必要となる。
【０００６】
つまり、フラッシュメモリにアクセスするときは、論理ブロックアドレスを物理ブロックアドレスに変換するアドレス処理や消去済みブロックを検索する空きブロック検索を行わなければならない。
【０００７】
このアドレス変換処理にかかる時間によってアクセス速度が低下するのを回避するため、特許文献１では、フラッシュメモリのアクセス対象が複数の論理ブロックに跨っている場合、論理ブロックごとのグループに分割して、それぞれのグループでフラッシュメモリに対するアクセスとアクセス先の物理アドレスを求めるアドレス変換処理を並列して実行していた。これにより、特許文献１はフラッシュメモリにアクセスするときの処理効率を向上させていた。
【０００８】
【特許文献１】特開２００６−１５５３３５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上記のようにフラッシュメモリに対するアクセスとアクセス先の物理アドレスを求めるアドレス変換処理を並行して実行する場合、メモリコントローラ内のフラッシュメモリシーケンスブロックがフラッシュメモリに対するアクセスを実行し、メモリコントローラ内のマイクロプロセッサが、アドレス変換処理を実行していた。しかしながら、特許文献１では、フラッシュメモリシーケンスブロックのアクセス状況を、マイクロプロセッサが把握することが困難であった。又、フラッシュメモリシーケンスブロックが動作を開始した後、マイクロプロセッサが、その動作を中止させることが困難であった。
【００１０】
したがって、フラッシュメモリシステムに与えられる電圧が急激に低下した時に、書き込みを中止することができなく、書き込みが途中で終了しフラッシュメモリ内のデータが異常になってしまうという課題があった。
【００１１】
そこで、本発明は、フラッシュメモリに対するアクセスとアドレス変換処理を並列に実行させることにより、フラッシュメモリにアクセスするときの処理効率を向上させ、さらにフラッシュメモリシステムに与えられる電圧が低下した場合でも、フラッシュメモリのデータが異常になるのを防ぐことができるメモリコントローラ、フラッシュメモリシステム並びにフラッシュメモリの制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するため、本発明のメモリコントローラは、ホストシステムから与えられる指示情報に応じて、ブロック単位で記憶データの消去を実行するフラッシュメモリに対するアクセスを制御するメモリコントローラであって、前記フラッシュメモリに対するアクセスを制御するために実行される制御動作を指示する動作命令コードを複数個含むコードセットを複数組記憶しているコードセット記憶手段と、前記コードセット記憶手段に記憶されている前記動作命令コードのアドレスを保持するアドレス保持手段と、前記指示情報が与えられたときに、該指示情報に含まれる外部コマンドに対応する前記コードセットを選択し、該コードセットに含まれる前記動作命令コードのアドレスを前記アドレス保持手段に設定するコードセット選択手段と、前記アドレス保持手段に設定されているアドレスに従って前記コードセット記憶手段から前記動作命令コードを読み出し、該動作命令コードに基づいた制御動作を実行する制御動作実行手段と、前記制御動作実行手段が前記動作命令コードに基づいた制御動作を実行する毎に、前記アドレス保持手段に設定されているアドレスを、次に実行すべき制御動作に対応する前記動作命令コードのアドレスに変更するアドレス更新手段と、を備えることを特徴とする。
【００１３】
このように、前記制御動作実行手段が前記アドレス保持手段に設定されているアドレスに従って前記コードセット記憶手段から前記動作命令コードを読み出し、読み出した前記動作命令コードに基づいて動作するようにしたので、前記アドレス保持手段に設定されているアドレスを参照することにより、前記制御動作実行手段の動作状況、つまり、前記フラッシュメモリに対するアクセス状況を容易に把握できる。従って、前記制御動作実行手段の制御動作を停止させるような場合は、前記アドレス保持手段に設定されているアドレスに基づいて、制御動作を停止させるタイミングを決めることができる。
【００１４】
又、本発明のメモリコントローラは、前記制御動作実行手段が前記コードセットに基づいた一連の制御動作を実行しているときに、前記アドレス保持手段に設定されているアドレスを変更することにより前記一連の制御動作を終了させる強制終了手段を備えることが好ましい。
【００１５】
つまり、前記制御動作実行手段が前記アドレス保持手段に設定されているアドレスに従って前記コードセット記憶手段から前記動作命令コードを読み出し、読み出した前記動作命令コードに基づいて動作するようにしたので、前記アドレス保持手段に設定されているアドレスを変更することにより、前記制御動作実行手段の動作を容易に制御することができる。
【００１６】
又、本発明のメモリコントローラは、前記指示情報に基づいて特定されるアクセス対象領域に対応する前記フラッシュメモリ内のブロックの物理ブロックアドレスを求めるアドレス変換手段を備えることが好ましい。
【００１７】
上記目的を達成するため、本発明のフラッシュメモリシステムは、前記メモリコントローラとフラッシュメモリを備えることを特徴とする。
【００１８】
上記目的を達成するため、本発明のフラッシュメモリの制御方法は、ホストシステムから与えられる指示情報に応じて、ブロック単位で記憶データの消去を実行するフラッシュメモリに対するアクセスを制御するために、予め記憶手段に記憶されている複数個の動作命令コード含むコードセットに基づいて一連の制御動作を実行するフラッシュメモリの制御方法であって、前記指示情報が与えられたときに、該指示情報に含まれる外部コマンドに対応する前記コードセットを選択し、該コードセットに含まれる前記動作命令コードのアドレスをアドレス保持手段に設定するコードセット選択ステップと、前記アドレス保持手段に設定されているアドレスに従って前記記憶手段から前記動作命令コードを読み出し、該動作命令コードに基づいた制御動作を実行する制御動作実行ステップと、前記制御動作実行ステップで前記動作命令コードに基づいた制御動作が実行される毎に、前記アドレス保持手段に設定されているアドレスを次に実行すべき制御動作に対応する前記動作命令コードのアドレスに変更するアドレス更新ステップと、を含むことを特徴とする。
【００１９】
このように、制御動作実行ステップで、前記アドレス保持手段に設定されているアドレスに従って前記記憶手段から前記動作命令コードを読み出し、読み出した前記動作命令コードに基づいて制御動作を実行するようにしたので、前記アドレス保持手段に設定されているアドレスを参照することにより、前記フラッシュメモリに対するアクセス状況を容易に把握できる。従って、前記フラッシュメモリに対するアクセスを停止させるような場合は、前記アドレス保持手段に設定されているアドレスに基づいて、制御動作を停止させるタイミングを決めることができる。
【００２０】
又、本発明のフラッシュメモリの制御方法は、前記アドレス保持手段に設定されているアドレスを変更することにより、前記コードセット選択ステップで選択された前記コードセットに基づいた一連の制御動作を強制的に終了させる強制終了ステップを含むことが好ましい。
【００２１】
つまり、制御動作実行ステップで、前記アドレス保持手段に設定されているアドレスに従って前記記憶手段から前記動作命令コードを読み出し、読み出した前記動作命令コードに基づいて制御動作を実行するようにしたので、前記アドレス保持手段に設定されているアドレスを変更することにより、前記フラッシュメモリに対するアクセス動作を容易に制御することができる。
【発明の効果】
【００２２】
本発明によれば、フラッシュメモリに対する読み出しまたは書き込みの処理と、アクセス先の物理アドレスを求めるアドレスの変換処理や空きブロック検索を並列して実行することが可能になる。これにより、フラッシュメモリにアクセスするときの処理効率を向上させることができる。
【００２３】
また、メモリコントローラ内のマイクロプロセッサは、メモリコントローラ内のフラッシュメモリシーケンスブロックの動作状況を容易に把握できると共に、フラッシュメモリシーケンスブロックの動作を中止させたりすることを容易に行うことができる。従って、フラッシュメモリシステムに与えられる電圧が低下した場合、書き込みを中止させることにより、フラッシュメモリのデータが異常になるのを防ぐことができる。
【発明を実施するための最良の形態】
【００２４】
以下、図面に基づき、本発明の実施形態について詳細に説明する。
【００２５】
図１は、フラッシュメモリシステム１を概略的に示すブロック図である。図１に示したようにフラッシュメモリシステム１は、フラッシュメモリ２と、それを制御するメモリコントローラ３とで構成されている。
【００２６】
なお、フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続される。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central Processing Unit）、フラッシュメモリシステム１との情報の授受を担うコンパニオンチップ等から構成される。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００２７】
[フラッシュメモリ２の説明]
フラッシュメモリ２は、不揮発性メモリであり、レジスタとメモリセルアレイとから構成される。フラッシュメモリ２は、レジスタとメモリセルアレイとの間でデータの複写を行って、データの書き込みまたは読み出しを行う。
【００２８】
メモリセルアレイは、複数のメモリセル群とワード線とを備える。各メモリセル群は、複数のメモリセルが直列に接続されたものである。ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、データの複写、即ち、レジスタから選択されたメモリセルへの複写または選択されたメモリセルからレジスタへのデータの複写が行われる。
【００２９】
メモリセルアレイを構成するメモリセルは、２つのゲートを備えたＭＯＳトランジスタによって構成される。ここで、２つのゲートは、コントロールゲート、フローティングゲートと呼ばれており、フローティングゲートに電荷（電子）を注入若しくはフローティングゲートから電荷（電子）を排出することによって、データの書き込み若しくはデータの消去が行われる。
【００３０】
このフローティングゲートは、周囲を絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。なお、フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧をコントロールゲートとフローティングゲート間に印加する。また、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧をコントロールゲートとフローティングゲート間に印加する。
【００３１】
ここで、フローティングゲートに電子が注入されている状態が書き込み状態であり、論理値「０」に対応する。また、フローティングゲートから電子が排出されている状態が消去状態であり、論理値「１」に対応する。
【００３２】
図２は、ブロックとページの関係を示す説明図である。上記ブロックとページの構成は、フラッシュメモリの仕様によって異なるが、図２（ａ）に示したような小ブロックのフラッシュメモリと、図２（ｂ）に示したような大ブロックのフラッシュメモリが一般的に使用されている。小ブロック構成では、図２（ａ）に示したように、１ブロックが３２ページ（Ｐ０〜Ｐ３１）で構成され、各ページが５１２バイトのユーザ領域と１６バイトの冗長領域で構成されている。また、本実施形態の大ブロック構成では、図２（ｂ）に示したように、１ブロックが６４ページ（Ｐ０〜Ｐ６３）で構成され、各ページが２０４８バイトのユーザ領域と６４バイトの冗長領域で構成されている。
【００３３】
大ブロック構成の場合、各ページのユーザ領域には４セクタ分のデータが記憶されるため、１セクタ分の領域をサブページとすれば、各ページは４個のサブページで構成され、各ブロックは２５６個のサブページで構成されている。また、フラッシュメモリ２内の記憶領域を特定する物理アドレスは、フラッシュメモリ２のブロック（以後、物理ブロックと言う。）を特定する物理ブロックアドレスと、各物理ブロック内のサブページを特定するサブページ番号（０〜２５５）に基づいて生成される。なお、フラッシュメモリ２に対しては、ページを特定するロウアドレスとページ内の領域を特定するカラムアドレスが、記憶領域を特定するアドレス情報として与えられる。各サブページには、冗長領域を４つに分割した領域が割り当てられる。
【００３４】
一方、小ブロック構成の場合、各ページのユーザ領域には１セクタ分のデータが記憶されるため、サブページはページと同じになる。大ブロック構成と同様にフラッシュメモリ２内の記憶領域を特定する物理アドレスは、フラッシュメモリ２の物理ブロックを特定する物理ブロックアドレスと、各物理ブロック内のページを特定するページ番号（０〜３１）に基づいて生成される。同様に、フラッシュメモリ２に対しては、ページを特定するロウアドレスとページ内の領域を特定するカラムアドレスが、記憶領域を特定するアドレス情報として与えられる。
【００３５】
ここで、ユーザ領域は、主に、ホストシステム４から供給されるデ―タが記憶される領域であり、冗長領域は、誤り訂正符号、対応論理アドレス情報及びブロックステータス等の付加データが記憶される領域である。誤り訂正符号は、ユーザ領域に記憶されているデータに含まれる誤りを検出、訂正するための付加データであり、後述するＥＣＣブロック１１によって生成される。
【００３６】
対応論理アドレス情報は、物理ブロックにデータが記憶されている場合に書き込まれ、その物理ブロックに記憶されているデータの論理アドレスに関する情報を示している。なお、物理ブロックにデータが記憶されていない場合は、対応論理アドレス情報が書き込まれないので、対応論理アドレス情報が書き込まれているか否かで、そのブロックが消去済ブロックであるか否かを判断することができる。つまり、対応論理ブロックアドレスが書き込まれていない場合は、消去済ブロックであると判断される。
【００３７】
ブロックステータスは、その物理ブロックが不良ブロック（正常にデータの書き込み等を行なうことができない物理ブロック）であるか否かを示すフラグであり、その物理ブロックが不良ブロックであると判断された場合には、不良ブロックであることを示すフラグが設定される。
【００３８】
[コントローラ３の説明]
コントローラ３は、図１に示すように、マイクロプロセッサ６と、ホストインターフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリインターフェースブロック１０と、ＥＣＣブロック１１と、ＲＯＭ（Read Only Memory）１２と、から構成される。これら機能ブロックによって構成されるコントローラ３は、一つの半導体チップ上に集積される。以下に各機能ブロックについて説明する。
【００３９】
マイクロプロセッサ６は、ＲＯＭ１２に記憶されているプログラムに従って、コントローラ３の全体の動作を制御する。
【００４０】
ホストインターフェースブロック７は、ホストシステム４との間で、データ、アドレス情報、ステータス情報、外部コマンド（ホストシステム４からフラッシュメモリシステム３に与えられるコマンド）等の授受を行なう。ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホストインターフェースブロック７を入口としてフラッシュメモリシステム１の内部（例えば、バッファ９）に取り込まれる。また、フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホストインターフェースブロック７を出口としてホストシステム４に供給される。
【００４１】
図１に示すワークエリア８は、フラッシュメモリ２の制御に必要なデータが一時的に格納される作業領域であり、複数のＳＲＡＭ（Static Random Access Memory）セルによって構成される。
【００４２】
バッファ９は、フラッシュメモリ２から読み出されたデータ及びフラッシュメモリ２に書き込むべきデータを一時的に蓄積する。すなわち、フラッシュメモリ２から読み出されたデータは、ホストシステム４が受け取り可能な状態となるまでバッファ９に保持され、フラッシュメモリ２に書き込むべきデータは、フラッシュメモリ２が書き込み可能な状態となるまでバッファ９に保持される。
【００４３】
フラッシュメモリインターフェースブロック１０は、バッファ９からフラッシュメモリ２への書き込み処理やフラッシュメモリ２からバッファ９への読み出し処理等を制御するブロックである。書き込み処理や読み出し処理等を実行するときの一連の制御動作は、ＲＯＭ１２に記憶されている一連の制御動作を指示する情報に基づいて実行される。この一連の制御動作に含まれる各制御動作を指示する情報を、以下、動作命令コードという。又、一連の制御動作に含まれる各制御動作に対応する動作命令コードの集合をコードセットという。
【００４４】
なお、上記動作命令コードには、フラッシュメモリ２に対して制御信号、コマンド、アドレスまたは書き込みデータ等を出力することを指示するものや、分岐条件に基づいた分岐先を指示するものや、フラッシュメモリ２のビジー状態が解除されるのを待つことを指示するもの等がある。また、動作命令コードは、通常は記述されている順番に読み出されるが、分岐先を指示する動作命令コードが含まれている場合は、分岐先を指示する動作命令コードに従って次に読み出す動作命令コードを決定する。
【００４５】
図３は、フラッシュメモリインターフェースブロック１０のレジスタ構成を示している図である。物理ブロックアドレスレジスタ２１は、フラッシュメモリ２内の物理ブロックを指定するレジスタであり、サブページ番号レジスタ２２は、物理ブロック内のサブページを指定するレジスタである。カウンタ２３は、読み出すまたは書き込むサブページ数を指定するレジスタである。プログラムカウンタ２４は、上記動作命令コードのＲＯＭ１２内でのアドレスを指定するレジスタである。
【００４６】
ＥＣＣブロック１１は、フラッシュメモリ２に書き込むデータに付加されるＥＣＣを生成するとともに、フラッシュメモリ２から読み出したデータに付加されたＥＣＣに基づいて、読み出したデータに含まれる誤りを検出・訂正する。
【００４７】
ＲＯＭ１２は、マイクロプロセッサ６による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。また、上記のコードセットはＲＯＭ１２内に記憶されている。
【００４８】
図４は、コードセットと動作命令コードを説明するための図である。ＲＯＭ１２内のコードセット領域に複数のコードセットが記憶されている。マイクロプロセッサ６が、ホストシステムからの指示情報に含まれる外部コマンドに応じて、ＲＯＭ１２に記憶されている複数のコードセットからフラッシュメモリインターフェースブロック１０に与えるコードセットを選択する。
【００４９】
すべてのコードセットは、分岐命令を含んでおり、最後にコードセット領域の最終動作命令コードに分岐してコードセットに対応する一連の制御動作が終了する。このように、すべてのコードセットは最後に同じ動作命令コードに分岐して、つまり、同じアドレスに分岐して終了する。本実施形態では、最終動作命令コードはマイクロプロセッサ６に割り込みを発生させる動作を行い、フラッシュメモリ２とのアクセスが終了したことをマイクロプロセッサ６に知らせている。
【００５０】
［アドレス変換処理の説明］
本実施形態に係るフラッシュメモリシステム１では、複数の物理ブロックでゾーンを形成し、各ゾーンに対して、予め設定された論理アドレスの領域を割り当てている。
【００５１】
図５は、アドレス変換処理を説明するための説明図である。本図を用いて、アドレス変換処理について具体的に説明する。
【００５２】
ホストシステム側の論理アドレス空間は、図５（ａ）に示したようにセクタ（５１２バイト）単位で分割した領域に付けた通番であるＬＢＡ（Logical Block Address）で管理されている。更に複数個のセクタをまとめたものを論理ブロックと呼び、複数個の論理ブロックをまとめたものを論理ゾーンと呼んでいる。また、図５（ｂ）に示したように論理ブロックに付けられた通番を論理ブロック番号（ＬＢＮ）と呼び、論理ゾーンに付けられた通番を論理ゾーン番号（ＬＺＮ）と呼んでいる。また、各論理ゾーンに含まれた論理ブロックの各論理ゾーン内での通番を論理ゾーン内ブロック番号（ＬＺＩＢＮ）と呼んでいる。一方、図５（ｃ）に示したように、物理ブロックには、それぞれ固有の物理ブロックアドレス（ＰＢＡ）が割り当てられている。さらに、複数個の物理ブロックで物理ゾーンを構成し、各物理ゾーンに付けた通番を物理ゾーン番号（ＰＺＮ）と呼んでいる。各物理ゾーンに含まれる物理ブロックの各物理ゾーン内での通番を物理ゾーン内ブロック番号（ＰＺＩＢＮ）と呼んでいる。
【００５３】
また、各論理ゾーンにはそれぞれ１個の物理ゾーンが割り当てられ、論理ゾーンに含まれる各論理ブロックに対応するデータは、その論理ゾーンに割り当てられた物理ゾーンに含まれる物理ブロックに書き込まれる。したがって、１個の論理ブロックに含まれるセクタ数は、１個の物理ブロックに含まれるセクタ領域の個数に応じて設定される。但し、１個の論理ブロックを複数個の物理ブロックに割り当てる場合には、その複数個の物理ブロックを１個の物理ブロックとみなして１個の論理ブロックに含まれるセクタ数を設定する。
【００５４】
図５に示した例では、１個の物理ブロックが２５６個のセクタ領域で構成されたフラッシュメモリを想定しているため、２５６セクタが１個の論理ブロックに対応している。したがって、ＬＢＮ＃０〜＃４９９の５００個の論理ブロックで構成されたＬＺＮ＃０の論理ゾーンは、ＬＢＡ＃０〜＃１２７９９９の１２８０００セクタの領域に対応している。  以下同様に、ＬＺＮ＃１の論理ゾーンは、ＬＢＡ＃１２８０００〜＃２５５９９９の１２８０００セクタの領域に対応し、ＬＺＮ＃２の論理ゾーンは、ＬＢＡ＃２５６０００〜＃３８３９９９の１２８０００セクタの領域に対応し、ＬＺＮ＃３の論理ゾーンは、ＬＢＡ＃３８４０００〜＃５１１９９９の１２８０００セクタの領域に対応している。
【００５５】
また、ＬＢＮ＃０〜＃４９９の５００個の論理ブロックで構成されたＬＺＮ＃０の論理ゾーンは、ＰＢＡ＃０〜＃５１１の５１２個の物理ブロックで構成されたＰＺＮ＃０の物理ゾーンに割り当てられている。以下同様に、ＬＺＮ＃１の論理ゾーンは、ＰＺＮ＃１の物理ゾーンに割り当てられ、ＬＺＮ＃２の論理ゾーンは、ＰＺＮ＃２の物理ゾーンに割り当てられ、ＬＺＮ＃３の論理ゾーンは、ＰＺＮ＃３の物理ゾーンに割り当てられている。ここで、物理ゾーンに含まれる物理ブロックの個数を、論理ゾーンに含まれる論理ブロックの個数より多くしているのは、同一の論理ブロックに対応する新データと旧データが別々の物理ブロックに並存する場合や、データを正常に書き込むことができない不良ブロックが発生した場合等を考慮したものである。
【００５６】
また、各物理ブロックには、その物理ブロックに割り当てられた論理ブロックのデータがＬＢＡの順番で書き込まれるので、物理ブロックと論理ブロックとの対応関係を管理することにより、ホストシステム４から与えられるＬＢＡとフラッシュメモリ２内のアクセス領域の対応関係を管理することができる。
【００５７】
なお、物理ブロックと論理ブロックとの対応関係は、データの書き込みや消去が行われる毎に変化する。このため、個々の時点における両者の対応関係を管理するためアドレス変換テーブルが作成され、対応関係が変化する毎にアドレス変換テーブルが更新される。論理ブロックに対応する物理ブロックがアドレス変換テーブルに存在しない場合、およびデータが書き込まれているページを書き換える場合、消去済みブロック（又は有効なデータが記憶されていない物理ブロック）を検索する必要がある。このため、アドレス変換テーブルと共に消去済みブロックを検索するためのテーブル（以下、空きブロック検索テーブル）が作成される。
【００５８】
このアドレス変換テーブルは、物理ブロックの先頭ページの冗長領域に書き込まれる論理ブロックを示す情報（以下、論理アドレス情報という）に基づいて作成される。冗長領域に書き込まれる論理アドレス情報としては，ＬＢＮ等の論理ブロックを特定することができる情報が用いられる。なお、論理ゾーンと物理ゾーンとの対応関係は予め設定されている場合は、ＬＺＩＢＮに基づいて論理ブロックを特定することができるので、アドレス変換テーブルを作成することができるので、ＬＢＮよりデータ量の少ないＬＺＩＢＮを用いることが好ましい。
【００５９】
また、データが書き込まれていない物理ブロックには、論理アドレス情報が格納されていない。従って、論理アドレス情報が格納されていない場合は、消去済みブロックであると判断される。
【００６０】
［フラッシュメモリに対するアクセスの説明］
次に、ホストシステム４から指示情報が与えられた場合の処理について説明する。
【００６１】
ホストシステム４がフラッシュメモリ２に対して、読み出しまたは書き込みを実行する場合、読み出し及び書き込み等の外部コマンドと共に、アクセスの対象領域に関する情報が供給される。このアクセスの対象領域は、セクタ単位の論理アドレス（例えば、ＬＢＡ）とセクタ数で指定される。ここで、ホストシステム４から供給される論理アドレスは、アクセスの対象の先頭アドレスを示し、ホストシステム４から供給されるセクタ数は、先頭アドレスから何セクタ分の領域がアクセスの対象であるかを示している。
【００６２】
ここで、ホストシステム４から指示されるアクセス領域が、複数の論理ブロックに跨っている場合、論理ブロック毎に論理ブロックから物理ブロックへの変換処理を行わなければならない。そのため、ホストシステム４からの指示情報は、論理ブロックごとのグループに分割され、グループ毎にフラッシュメモリ２に対するアクセスが行われる。
【００６３】
つまり、マイクロプロセッサ６は、グループに分割された各指示情報に対応する一連の制御動作を実行させるための情報を、フラッシュメモリインターフェースブロック１０の物理ブロックアドレスレジスタ２１、サブページ番号レジスタ２２、カウンタ２３及びプログラムカウンタ２４に設定する。フラッシュメモリインターフェースブロック１０は、物理ブロックアドレスレジスタ２１、サブページ番号レジスタ２２、カウンタ２３及びプログラムカウンタ２４に設定された情報に基づいて一連の制御動作を実行する。
【００６４】
ホストシステム４から指示情報が与えられたときに、マイクロプロセッサ６が行う処理について図６を参照して説明する。図６は、マイクロプロセッサ６がフラッシュメモリインターフェースブロック１０に行う処理を示すフローチャートである。
（Ｓ６１）ホストシステム４から与えられる指示情報に含まれるアクセス領域を指示する情報に基づいてアクセス対象領域が含まれる論理ブロックを求め、更に、論理ブロックと対応する物理ブロックの物理ブロックアドレス（ＰＢＡ）をアドレス変換処理により求める。つまり、Ｓ６１では、まず、アクセス対象領域が含まれる論理ブロックの論理ブロック番号（ＬＢＮ）が求められる。続いて、論理ブロック番号（ＬＢＮ）と物理ブロックアドレス（ＰＢＡ）の対応関係を示したアドレス変換テーブルを参照して、アクセス対象領域が含まれる論理ブロックと対応する物理ブロックの物理ブロックアドレス（ＰＢＡ）が求められる。
（Ｓ６４）フラッシュメモリインターフェースブロック１０が動作中のときは、動作が終了するのを待ち、動作が終了しているときはＳ６２に進む。ここで、フラッシュメモリインターフェースブロック１０が動作中か否かは、フラッシュメモリインターフェースブロック１０からの割り込みがあったかどうかで判断する。
（Ｓ６２）フラッシュメモリインターフェースブロック１０の物理ブロックアドレスレジスタ２１、サブページ番号レジスタ２２及びカウンタ２３にフラッシュメモリ内の領域を指示する情報を設定する。具体的には、Ｓ６１で求めた物理ブロックアドレス（ＰＢＡ）を物理ブロックアドレスレジスタ２１に設定する。次に、アクセス対象領域の先頭セクタに対応するＬＢＡの下位８ビット（０〜２５５）をサブページ番号レジスタ２２に設定する。最後に、アクセス対象領域に含まれるセクタ数をカウンタ２３に設定する。ここで、アクセス領域が複数の論理ブロックに跨っていない場合、ホストシステム４からの指示情報に含まれるセクタ数がカウンタ２３に設定される値に一致する。一方、ホストシステム４から指示されるアクセス領域が、複数の論理ブロックに跨っている場合、各論理ブロック内におけるアクセス対象領域に含まれるセクタ数をカウンタ２３に設定する。
（Ｓ６３）フラッシュメモリインターフェースブロック１０のプログラムカウンタ２４に動作命令コードのアドレスを設定する。ここでは、ホストシステム４からの指示情報に含まれるコマンドに対応したコードセットの先頭動作命令コードのアドレスをプログラムカウンタ２４に設定する。例えば、コマンドが読み出し指示するコマンドの場合、読み出しのときにフラッシュメモリインターフェースブロック１０が実行する一連の制御動作に対応したコードセットの先頭動作命令コードのアドレスをプログラムカウンタ２４に設定する。このプログラムカウンタ２４に動作命令コードのアドレスが設定された後、フラッシュメモリインターフェースブロック１０は後述する図７に示した一連の制御動作を開始する。
【００６５】
プログラムカウンタ２４に動作命令コードに設定した後、Ｓ６１に戻り、ホストシステム４から与えられる指示情報に基づくアクセス対象領域が更にあれば、そのアクセス対象領域が含まれる論理ブロックと対応する物理ブロックの物理ブロックアドレス（ＰＢＡ）が求める。
【００６６】
このように、マイクロプロセッサ６はフラッシュメモリインターフェースブロック１０がフラッシュメモリ２にアクセスをしている間にアドレス変換処理を行う。これにより、アドレス変換処理とフラッシュメモリ２とのアクセスが並列に行われることになる。
【００６７】
次に、フラッシュメモリインターフェースブロック１０が実行する一連の制御動作について説明する。フラッシュメモリインターフェースブロック１０は、プログラムカウンタ２４に設定されているアドレスから動作命令コードを読み出し、動作命令コードに対応した制御動作を実行する。制御動作が終了する毎に、プログラムカウンタ２４に設定されているアドレスが１ステップ進められる。又、分岐する場合は、分岐先のアドレスがプログラムカウンタ２４に設定される。図７は、読み出し処理又は書き込み処理のときに、フラッシュメモリインターフェースブロック１０が実行する一連の制御動作を示すフローチャートである。これらの制御動作は、ＲＯＭ１２から読み出した各動作命令コードに基づいて実行される。又、各制御動作は、１つ又は複数の各動作命令コードに基づいて実行される。
（Ｓ７１）フラッシュメモリ２にコマンドとアドレスを供給しデータを送受信する。例えば、読み出し処理の場合、まず、フラッシュメモリ２に読み出しを指示する内部コマンド（リードコマンド）を供給する。続いて、読み出すデータが記憶されているページを指定するロウアドレスと、ページ内の読み出し開始位置（０バイト〜２１１１バイト）を指定するカラムアドレスとをフラッシュメモリ２に供給する。先頭サブページからデータを読み出す場合には、カラムアドレスで先頭のサブページに対応するアドレスを指定する。ここで、フラッシュメモリ２はメモリセルアレイからレジスタへのデータの読み出し（複写）を実行するためビジー状態になる。フラッシュメモリ２のビジー状態が解除された後、フラッシュメモリ２のリードイネーブル端子にハイレベルとローレベルの信号を交互に入力し、フラッシュメモリ２内のレジスタから先頭のサブページに対応するデータを読み出す。
【００６８】
次に、ページ内の読み出し開始位置の変更を指示する内部コマンド（ランダムリードコマンド）と先頭のサブページに対応するＥＣＣが記憶されている位置を指定するカラムアドレスを供給する。この後、フラッシュメモリ２のリードイネーブル端子にハイレベルとローレベルの信号を交互に入力し、フラッシュメモリ２内のレジスタから先頭のサブページに対応するＥＣＣを読み出す。
【００６９】
ここで、読み出しを指示する内部コマンド（リードコマンド）は、各ページから最初にデータを読み出すときにだけ供給される。例えば、先頭のサブページ（ＥＣＣを含む）からデータを読み出した後、そのページ内の２番目のサブページからデータを読み出す場合は、上記と同様にページ内の読み出し開始位置の変更を指示する内部コマンド（ランダムリードコマンド）と２番目のサブページに対応するカラムアドレスを供給する。
【００７０】
尚、１個のサブページのユーザ領域が４個のサブページで構成されている場合、物理ブロックアドレスレジスタ２１に設定されている物理ブロックアドレス（ＰＢＡ）にサブページ番号レジスタ２２に設定されている８ビットの値の上位側６ビット（１０進数で０〜６３）を連結してロウアドレスを生成する。又、カラムアドレスについては、サブページ番号レジスタ２２に設定されている８ビットの値の下位側２ビット（１０進数で０〜３）の値に基づいて生成される。つまり、サブページ番号レジスタ２２にされている８ビットの値の下位側２ビットが００（１０進数で０）の場合、カラムアドレスは先頭のサブページに対応するアドレスになる。同様に、下位側２ビットが０１（１０進数で１）の場合、カラムアドレスは２番目のサブページに対応するアドレスになり、下位側２ビットが１０（１０進数で２）の場合、カラムアドレスは３番目のサブページに対応するアドレスになり、下位側２ビットが１１（１０進数で３）の場合、カラムアドレスは４番目のサブページに対応するアドレスになる。
【００７１】
一方、書き込み処理の場合は、フラッシュメモリ２内のレジスタへのデータ転送を指示する内部コマンド（インプットコマンド）、ロウアドレス及びカラムアドレスをフラッシュメモリ２に供給する。続いて、フラッシュメモリ２のライトイネーブル端子にハイレベルとローレベルの信号を交互に入力し、この信号に合わせて１セクタ分のデータをフラッシュメモリ２に供給する。次に、カラムアドレスの変更を指示する内部コマンド（ランダムインプットコマンド）と、ＥＣＣ等の付加データを書き込む冗長領域の位置を指定するカラムアドレスをフラッシュメモリ２に供給する。続いて、フラッシュメモリ２のライトイネーブル端子にハイレベルとローレベルの信号を交互に入力し、この信号に合わせてＥＣＣ等の付加データをフラッシュメモリ２に供給する。
【００７２】
ここで、データ転送を指示する内部コマンド（インプットコマンド）は、各ページに書き込みデータを最初に転送するときにだけ供給される。例えば、先頭のサブページに書き込むデータ（付加データも含む）を転送した後、そのページ内の２番目のサブページに書き込むデータを転送する場合は、上記と同様にカラムアドレスの変更を指示する内部コマンド（ランダムインプットコマンド）と２番目のサブページに対応するカラムアドレスを供給する。
【００７３】
又、フラッシュメモリ２内のレジスタに保持されているデータをメモリセルアレイに書き込む（複写する）場合には、レジスタからメモリセルアレイへの書き込み（複写）を指示する内部コマンド（プログラムコマンド）をフラッシュメモリ２に供給する。この内部コマンド（プログラムコマンド）は、４番目のサブページに書き込むデータと、このデータに対応する付加データの転送が終了した後に供給する。
（Ｓ７２）フラッシュメモリインターフェースブロック１０内のサブページ番号レジスタ２２及びカウンタ２３に設定されている値を更新する。この更新では、サブページ番号レジスタ２２に設定されている値をインクリメント（１ずつ加算）し、カウンタ２３に設定されている値をデクリメント（１ずつ減算）する。つまり、１セクタ分の読み出し又は書き込みが終了する毎に、サブページ番号レジスタ２２に設定されている値が１ずつ増加し、カウンタ２３に設定されている値が１ずつ減少する。
（Ｓ７３）カウンタ２３に設置されている値が０の場合は、Ｓ７４に進み、０でない場合は、Ｓ７１に進む。例えば、サブページ番号レジスタ２２に値ｍを設定し、カウンタ２３に値ｎを設定した読み出し処理では、サブページ番号＃ｍ〜＃ｍ＋ｎ−１のサブページに記憶されたｎセクタのデータが読み出された後にＳ７４に進む。
（Ｓ７４）一連の制御動作が終了したことをマイクロプロセッサ６に通知する割り込みを発生させる。つまり、カウンタ２３に設置されている値が０のときに最終動作命令コードに分岐し、割り込みを発生させる。
【００７４】
図８は、本発明の実施形態における論理アドレス空間、物理アドレス空間の一例を示す図である。本図を用いて、本発明のアクセス処理を具体的に説明する。
【００７５】
ホストシステム４からの指示情報がＬＢＡ＃５１０から４セクタの読み出し処理（１）の場合について説明する。読み出し処理（１）は、２つの論理ブロックに跨っているため、ＬＢＡ＃５１０から２セクタの読み出し処理（１'）とＬＢＡ＃５１２から２セクタの読み出し処理（１"）にグループ化される。
【００７６】
Ｓ６１で、マイクロプロセッサ６は、読み出し処理（１'）のアクセスのためのアドレス変換処理を行う。図８（ｂ）に示したように、読み出し処理（１'）のアクセス対象領域であるＬＢＡ＃５１０〜＃５１１は、ＬＢＮ＃１に含まれる。従って、ＬＢＮ＃１の論理ブロックに対応する物理ブロックの物理ブロックアドレス（ＰＢＡ）を、アドレス変換テーブル参照して求める。図８（ｃ）に示したように、ＬＢＮ＃１の論理ブロックがＰＢＡ＃４の物理ブロックに対応する場合は、このアドレス変換処理により求められる物理ブロックアドレス（ＰＢＡ）はＰＢＡ＃４になる。尚、アドレス変換テーブルは、各物理ゾーンに含まれる物理ブロックの冗長領域から論理アドレス情報を読み出すこととによってゾーン毎に作成することができる。アドレス変換テーブルは、起動時又はアクセス前に作成する。
【００７７】
Ｓ６３で、ホストシステム４から与えられた読み出しコマンド（外部コマンド）に対応したコードセットの先頭動作命令コードのアドレスをプログラムカウンタ２４に設定する。フラッシュメモリインターフェースブロック１０は、物理ブロックアドレスレジスタ２１、サブページ番号レジスタ２２、カウンタ２３及びプログラムカウンタに設定された情報に基づいて読み出し処理（１'）に対応した一連の制御動作を開始する。
【００７８】
Ｓ６２、Ｓ６３で読み出し処理（１'）に対応した情報の設定が終了した後、Ｓ６１に戻り、読み出し処理（１"）のアクセスのためのアドレス変換処理を行う。図８（ｂ）に示したように、読み出し処理（１"）のアクセス対象領域であるＬＢＡ＃５１２〜＃５１３は、ＬＢＮ＃２に含まれる。従って、ＬＢＮ＃２の論理ブロックに対応する物理ブロックの物理ブロックアドレス（ＰＢＡ）を、アドレス変換テーブル参照して求める。図８（ｃ）に示したように、ＬＢＮ＃２の論理ブロックがＰＢＡ＃１の物理ブロックに対応する場合は、このアドレス変換処理により求められる物理ブロックアドレス（ＰＢＡ）はＰＢＡ＃１になる。
【００７９】
フラッシュメモリインターフェースブロック１０が一連の制御動作を実行している場合は、その一連の制御動作が終了するのを待ち、一連の制御動作が終了したことを確認した後、Ｓ６２で、物理ブロックアドレスレジスタ２１に１を設定する。また、読み出し処理（１"）のアクセス対象領域の先頭のセクタはＬＢＡ＃５１２であり、２進数で"１０  ００００  ００００"なので、下位８ビットは、２進数で"００００  ００００"（１０進数で０）になる。従って、サブページ番号レジスタ２２に０を設定する。また、読み出し処理（１"）のアクセス対象領域に含まれるセクタ数は２なので、カウンタ２３に２を設定する。
【００８０】
Ｓ６３で、ホストシステムから与えられた読み出しコマンド（外部コマンド）に対応したコードセットの先頭動作命令コードのアドレスをプログラムカウンタ２４に設定する。フラッシュメモリインターフェースブロック１０は、物理ブロックアドレスレジスタ２１、サブページ番号レジスタ２２、カウンタ２３及びプログラムカウンタに設定された情報に基づいて読み出し処理（１"）に対応した一連の制御動作を開始する。
【００８１】
次に、フラッシュメモリインターフェースブロック１０が実行する一連の制御動作を具体的に説明する。尚、読み出し処理（１'）と読み出し処理（１"）は同様な処理なので、読み出し処理（１'）に対応した一連の制御動作についてだけ説明する。Ｓ７１で、読み出しを指示する内部コマンド（リードコマンド）をフラッシュメモリ２に供給する。次に、物理ブロックアドレスレジスタ２１に設定されている４（２進数で１００）に、サブページ番号レジスタ２２に設定されている２５４（２進数で１１１１  １１１０）の上位側６ビット（１１  １１１１）を連結したロウアドレス（２進数で１  ００１１  １１１１）を生成し、生成したロウアドレスをフラッシュメモリ２に供給する。続いて、サブページ番号レジスタ２２に設定されている２５４（２進数で１１１１  １１１０）の下位側２ビットは１０（１０進数で２）なので、３番目のサブページのカラムアドレスをフラッシュメモリ２に供給する。
【００８２】
フラッシュメモリ２のビジー状態が解除された後、フラッシュメモリ２のリードイネーブル端子にハイレベルとローレベルの信号を交互に入力して、３番目のサブページに対応する１セクタのデータを読み出す。次に、ページ内の読み出し開始位置の変更を指示する内部コマンド（ランダムリードコマンド）と３番目のサブページに対応するＥＣＣが記憶されている位置を指定するカラムアドレスを供給する。この後、フラッシュメモリ２のリードイネーブル端子にハイレベルとローレベルの信号を交互に入力し、３番目のサブページに対応するＥＣＣを読み出す。
【００８３】
Ｓ７２で、サブページ番号レジスタ２２に設定されている値を２５４（２進数で１１１１  １１１０）から２５５（２進数で１１１１  １１１１）に変更し、カウンタ２３に設定されている値を２から１に変更する。
【００８４】
カウンタ２３に設定されている値が１なのでＳ７１に戻る（Ｓ７３）。ここで、サブページ番号レジスタ２２に設定されている２５５（２進数で１１１１  １１１１）の下位側２ビットは１１（１０進数で３）なので、ページ内の読み出し開始位置の変更を指示する内部コマンド（ランダムリードコマンド）と４番目のサブページのカラムアドレスをフラッシュメモリ２に供給する。この後、フラッシュメモリ２のリードイネーブル端子にハイレベルとローレベルの信号を交互に入力し、４番目のサブページに対応する１セクタのデータを読み出す。次に、ページ内の読み出し開始位置の変更を指示する内部コマンド（ランダムリードコマンド）と４番目のサブページに対応するＥＣＣが記憶されている位置を指定するカラムアドレスを供給する。この後、フラッシュメモリ２のリードイネーブル端子にハイレベルとローレベルの信号を交互に入力し、４番目のサブページに対応するＥＣＣを読み出す。
【００８５】
Ｓ７２で、サブページ番号レジスタ２２に設定されている値を２５５（２進数で１１１１  １１１１）から０（２進数で００００  ００００）に変更し、カウンタ２３に設定されている値を１から０に変更する。
カウンタ２３に設定されている値が０なのでＳ７４に進み（Ｓ７３）、マイクロプロセッサ６に一連の制御動作が終了したことを通知する割り込みを発生させる。
【００８６】
以上で説明したように、本発明のフラッシュメモリシステム１では、読み出し処理又は書き込み処理と、アドレス変換処理が並列に実行できる。
【００８７】
更に、本発明のフラッシュメモリシステム１では、フラッシュメモリシーケンスブロック１０の動作状況を容易に把握できると共に、フラッシュメモリシーケンスブロック１０が実行している一連の制御動作を中止させたりすることを容易に行うことができる。
【００８８】
つまり、本発明のフラッシュメモリシステムでは、フラッシュメモリシーケンスブロック１０がプログラムカウンタ２４に設定されるアドレスに従ってＲＯＭ１２から動作命令コードを読み出し、読み出した動作命令コードに基づいて制御動作を実行するため、プログラムカウンタ２４に設定されるアドレスを参照することにより、フラッシュメモリシーケンスブロック１０が実行している制御動作を把握することができる。
【００８９】
又、フラッシュメモリシーケンスブロック１０が一連の制御動作を実行しているときに、フラッシュメモリシステム１に供給されている電圧が所定の電圧値よりも低くなった場合やホストシステムから新たな指示情報が与えられた場合に、プログラムカウンタ２４に設定されるアドレスを最終動作命令コードに対応するアドレスに変更することにより、フラッシュメモリシーケンスブロック１０が実行している一連の制御動作を強制的に終了させることができる。尚、フラッシュメモリシーケンスブロック１０が実行している一連の制御動作を強制的に終了させる場合は、不完全なデータがフラッシュメモリ２に書き込まれる等の不具合が発生することがないタイミングで終了させることが好ましい。例えば、電圧が低下したときに、書き込みデータがフラッシュメモリ２内のレジスタに保持されていても、レジスタからメモリセルアレイへの書き込み（複写）を実行せず制御動作を強制的に終了させることが好ましい。
【００９０】
なお、本実施形態は大ブロックのフラッシュメモリについて説明してきたが、小ブロックのフラッシュメモリについても同様に適用可能である。
【００９１】
また、以上述べた実施形態は全て本発明を例示的に示すものであって限定的に示すものではなく、本発明は他の種々の変形態様及び変更態様で実施することができる。従って本発明の範囲は特許請求の範囲及びその均等範囲によってのみ規定されるものである。
【図面の簡単な説明】
【００９２】
【図１】本発明の実施形態におけるフラッシュメモリシステムを概略的に示すブロック図である。
【図２】ブロックとページの関係を示す説明図である。
【図３】本発明の実施形態のフラッシュメモリインターフェースブロックのレジスタ構成を示している図である。
【図４】コードセットと動作命令コードを説明するための図である。
【図５】アドレス変換処理を説明するための説明図である。
【図６】マイクロプロセッサがフラッシュメモリインターフェースブロックに行う処理を示すフローチャートである。
【図７】フラッシュメモリインターフェースブロックが行う処理を示すフローチャートである。
【図８】本発明の実施形態における論理アドレス空間、物理アドレス空間の一例を示す図である。
【符号の説明】
【００９３】
１    フラッシュメモリシステム
２    フラッシュメモリ
３    コントローラ
４    ホストシステム
６    マイクロプロセッサ
７    ホストインターフェースブロック
８    ワークエリア
９    バッファ
１０  フラッシュメモリインターフェースブロック
１１  ＥＣＣブロック
１２  ＲＯＭ
１３  外部バス
１４  内部バス
２１  物理ブロックアドレスレジスタ
２２  サブページ番号レジスタ
２３  カウンタ
２４  プログラムカウンタ
【図１】
2008077468.tif 000003
【図２】
2008077468.tif 000004
【図３】
2008077468.tif 000005
【図４】
2008077468.tif 000006
【図５】
2008077468.tif 000007
【図６】
2008077468.tif 000008
【図７】
2008077468.tif 000009
【図８】
2008077468.tif 000010