(57)【特許請求の範囲】
【請求項１】
記憶領域を複数のブロックに分割し、ブロック単位で記憶データを一括消去するように構成されたフラッシュメモリと、
前記フラッシュメモリ内で不良と判定されたブロックに割り当てられていたアドレスを検索可能に登録し、かつ前記不良ブロックに替わって用いられるべき代替ブロックの記憶位置を示す代替アドレスを与えるブロック代替情報登録メモリと、
前記フラッシュメモリに対するメモリアクセスのため与えられるアドレスを入力し、前記入力アドレスが前記ブロック代替情報登録メモリに登録されていないときは前記入力アドレスで指示される前記フラッシュメモリ内のブロックにアクセスし、前記入力アドレスが前記ブロック代替情報登録メモリに登録されているときは前記入力アドレスに対応した前記代替アドレスで指示される前記フラッシュメモリ内のブロックにアクセスするメモリ制御部とを具備し、
前記メモリ制御部が前記フラッシュメモリには第１のバスを介して接続され前記ブロック代替情報登録メモリには第２のバスを介して接続され、前記第１のバスを介しての前記メモリ制御部と前記フラッシュメモリ間の動作と前記第２のバスを介しての前記メモリ制御部と前記ブロック代替情報登録メモリ間の動作とが独立して行われるフラッシュメモリシステム。
【請求項２】
記憶領域を複数のブロックに分割し、ブロック単位で記憶データを一括消去するように構成されたフラッシュメモリと、
前記フラッシュメモリ内で不良と判定されたブロックに割り当てられていた論理アドレスを検索可能に登録し、各不良ブロックに替わって用いられるべき代替ブロックに割り当てられている物理アドレスを代替アドレスとして与えるブロック代替情報登録メモリと、
前記フラッシュメモリに対するメモリアクセスのために与えられるアドレスを入力し、前記入力アドレスを前記フラッシュメモリにおける論理アドレスに変換し、前記論理アドレスが前記ブロック代替情報登録メモリに登録されていないときは前記論理アドレスで指示される前記フラッシュメモリ内のブロックにアクセスし、前記論理アドレスが前記ブロック代替情報登録メモリに登録されているときは前記論理アドレスに対応した前記代替アドレスで指示される前記フラッシュメモリ内のブロックにアクセスするメモリ制御部とを具備し、
前記メモリ制御部が前記フラッシュメモリには第１のバスを介して接続され前記ブロック代替情報登録メモリには第２のバスを介して接続され、前記第１のバスを介しての前記メモリ制御部と前記フラッシュメモリ間の動作と前記第２のバスを介しての前記メモリ制御部と前記ブロック代替情報登録メモリ間の動作とが独立して行われるフラッシュメモリシステム。
【請求項３】
アクセスした前記ブロックを不良のブロックであると認定したときは、前記メモリ制御部が前記フラッシュメモリおよび前記ブロック代替情報登録メモリにそれぞれ前記第１および第２のバスを介して並列的にアクセスして、前記フラッシュメモリにおける前記不良ブロックの記憶内容を消去するイレース処理と前記ブロック代替情報登録メモリにおける登録情報を検索して更新する処理とが並列的に行われる請求項１または請求項２に記載のフラッシュメモリシステム。
【請求項４】
前記ブロック代替情報登録メモリが、前記フラッシュメモリ内に代替ブロック用として設定された複数個のスペアブロックと１対１で対応する複数個の記憶位置を有し、いずれかのスペアブロックが代替ブロックとして使用されているときはそれによって代替されている不良ブロックに割り当てられているアドレスを示すアドレス情報を前記スペアブロックに対応する前記記憶位置に格納する不揮発性の記憶手段を含む請求項１または２に記載のフラッシュメモリシステム。
【請求項５】
各々の前記記憶位置には、それと対応する前記スペアブロックが代替ブロックとして使用されていないときはその空き状態を示す第１のステータス情報が格納される請求項４に記載のフラッシュメモリシステム。
【請求項６】
各々の前記記憶位置には、それと対応する前記スペアブロックが正常であるのか不良であるのかを示す第２のステータス情報が格納される請求項４または５に記載のフラッシュメモリシステム。
【請求項７】
前記ブロック代替情報登録メモリが、各々の前記不良ブロックに替わる代替ブロックのアドレスをその不良ブロックに対応するアドレス情報が格納されている前記記憶位置のアドレスに基づいて求めるアドレス生成手段を含む請求項４に記載のフラッシュメモリシステム。
【請求項８】
前記アドレス生成手段が、前記不良ブロックに替わる代替ブロックのアドレスを、その不良ブロックに対応するアドレス情報が格納されている前記記憶位置のアドレスに所定のオフセット値を加算することによって求める請求項７に記載のフラッシュメモリシステム。
【請求項９】
前記不揮発性記憶手段がＮＯＲ型フラッシュメモリからなる請求項４〜７のいずれか一項に記載のフラッシュメモリシステム。
【発明の詳細な説明】
【００１０】
【発明の属する技術分野】
本発明は、フラッシュメモリを含むメモリシステムに関する。
【００２０】
【従来の技術】
近年、ハードディスクやフロッピーディスク等の磁気メモリに置き換わる半導体メモリとして、フラッシュＥＥＰＲＯＭ（以下フラッシュメモリと称する。）が注目されている。フラッシュメモリは、消費電力が少なく電気的に書き換え可能な不揮発性の半導体メモリであり、軽量小型で耐震性が良いため、携帯機器等への用途が拡大している。
【００３０】
フラッシュメモリは、チップ内のＥＥＰＲＯＭセルアレイが複数個のブロックに分割され、各ブロックはさらに１個または複数個のセクタに分割されている。通常、プログラミング（書き込み）や読み出しはセクタ単位で行われ、消去はブロック単位で行われる。
【００４０】
一般に、フラッシュメモリを外部記憶装置に用いるコンピュータ・システムでは、フラッシュメモリ専用のコントローラがあてがわれる。ホストコンピュータ（たとえばパソコン）はこのコントローラに対してデータの書き込みや読み出しを指示すればよい。コントローラは、ホストからの指示を受けてフラッシュメモリに対してデータの書き込みや読み出しを直接制御するほか、ブロック毎のデータ書き換えや一括消去等のメモリ管理を行う。
【００５０】
このようなメモリ管理の一環として、コントローラは、データの書き込みまたは読み出しを正常に行えない不良（欠陥）ブロックを把握し、各不良ブロックを正常な他のブロックに代替させる管理機能を要求される。
【００６０】
一般のフラッシュメモリシステムは、そのような不良ブロックの存在ないし発生がある程度の個数まで許容されるよう、メモリ領域の一部に適当な個数のスペアまたは予備のブロックを用意している。通常は、これらのスペアブロックが代替ブロックに用いられる。
【００７０】
従来のフラッシュメモリシステムでは、フラッシュメモリの各ブロックの冗長部内に当該ブロックが正常であるのか不良であるのかを示すフラグまたはステータス情報を格納し、さらには当該ブロックを不良ブロックと認定したときはそれに置き換わるべき代替ブロックの記憶位置を指示するアドレス情報（ポインタ）も格納している。ホストよりメモリアクセスが行われる度毎に、コントローラがアドレス指定されたブロックのブロック良否フラグ情報を読み取り、そのブロックが「正常」であればそのままそこにアクセスし、「不良」であればポインタで指示される別のブロック（代替ブロック）にアクセスするようになっている。
【００８０】
【発明が解決しようとする課題】
上記のように、従来の方式では、フラッシュメモリ内の各ブロックの冗長部にブロック良否フラグ等のブロック関連情報を格納（保存）し、コントローラがメモリアクセスの度毎に当該ブロックのブロック関連情報を読み取って、ブロック代替の要否を判断するようにしている。
【００９０】
したがって、ホスト側からのアドレスが不良ブロックを指定する場合は、その不良ブロックにアクセスし、そこからブロック関連情報を読み取り、ブロック代替要否の判断を行ってから、代替ブロックへアクセスすることになる。つまり、２ブロック分のデータ読み出し動作を行うことになる。
【０１００】
このようなブロック代替管理方式は非効率的であるばかりか、不良ブロックより読み出された信頼性の低いデータ（ブロック関連情報）に基づいてブロック代替要否の判断を行わなくてはならないため、ブロック代替機能の信頼度も低いという問題がある。さらには、不良ブロックへのアクセスがフラッシュメモリに有害なストレスを与え、メモリの劣化を早めるおそれがある。
【０１１０】
なお、電源投入直後やリセット解除直後の初期化の中で、コントローラがフラッシュメモリ内の全ブロックの冗長部を読みに行って、それぞれのブロック関連情報を収集し、収集したブロック関連情報を基にたとえばＳＲＡＭのような揮発性メモリ上にブロック代替用のテーブルを形成する方式も考えられている。
【０１２０】
この方式によれば、ホストからのメモリアクセスに対して、先ずブロック代替用テーブルを参照し、アドレス指定されたブロックが正常であるのか不良であるのかを判別したうえで、つまりブロック代替の要否を判断して、そのブロックもしくは代替ブロックにアクセスすることになる。
【０１３０】
しかし、この方式でも、初期化（テーブル形成）時には不良ブロックにアクセスすることになり、アクセス回数は少なくなるものの、基本的に上記の問題は解決されない。また、フラッシュメモリ内の全ブロック分のブロック関連情報を収集する方法であるため、ブロック代替用テーブルの形成に要する処理時間が長いうえ、テーブルメモリに要求される記憶容量が大きいという問題もある。近年、フラッシュメモリは急速に大容量化の一途を辿っており、この不利点はますます顕著になる。
【０１４０】
本発明は、上記の問題点に鑑みてなされたもので、少ない資源で効率よくブロック代替管理を行えるようにしたフラッシュメモリシステムを提供することを目的とする。
【０１５０】
また、本発明は、不良ブロックへの無駄なアクセスを不要とし、信頼性および効率の高いブロック代替管理を行えるようにしたフラッシュメモリシステムを提供することを目的とする。
【０１６０】
さらに、本発明は、不良ブロックに置き換わる代替ブロックへ短時間で効率よくアクセスできるようにしたフラッシュメモリシステムを提供することを目的とする。
【０１７０】
【課題を解決するための手段】
上記の目的を達成するために、本発明の第１のフラッシュメモリシステムは、記憶領域を複数のブロックに分割し、ブロック単位で記憶データを一括消去するように構成されたフラッシュメモリと、前記フラッシュメモリ内で不良と判定されたブロックに割り当てられていたアドレスを検索可能に登録し、かつ前記不良ブロックに替わって用いられるべき代替ブロックの記憶位置を示す代替アドレスを与えるブロック代替情報登録メモリと、前記フラッシュメモリに対するメモリアクセスのため与えられるアドレスを入力し、前記入力アドレスが前記ブロック代替情報登録メモリに登録されていないときは前記入力アドレスで指示される前記フラッシュメモリ内のブロックにアクセスし、前記入力アドレスが前記ブロック代替情報登録メモリに登録されているときは前記入力アドレスに対応した前記代替アドレスで指示される前記フラッシュメモリ内のブロックにアクセスするメモリ制御部とを具備し、前記メモリ制御部が前記フラッシュメモリには第１のバスを介して接続され前記ブロック代替情報登録メモリには第２のバスを介して接続され、前記第１のバスを介しての前記メモリ制御部と前記フラッシュメモリ間の動作と前記第２のバスを介しての前記メモリ制御部と前記ブロック代替情報登録メモリ間の動作とが独立して行われる。
【０１８０】
また、本発明の第２のフラッシュメモリシステムは、記憶領域を複数のブロックに分割し、ブロック単位で記憶データを一括消去するように構成されたフラッシュメモリと、前記フラッシュメモリ内で不良と判定されたブロックに割り当てられていた論理アドレスを検索可能に登録し、各不良ブロックに替わって用いられるべき代替ブロックに割り当てられている物理アドレスを代替アドレスとして与えるブロック代替情報登録メモリと、前記フラッシュメモリに対するメモリアクセスのために与えられるアドレスを入力し、前記入力アドレスを前記フラッシュメモリにおける論理アドレスに変換し、前記論理アドレスが前記ブロック代替情報登録メモリに登録されていないときは前記論理アドレスで指示される前記フラッシュメモリ内のブロックにアクセスし、前記論理アドレスが前記ブロック代替情報登録メモリに登録されているときは前記論理アドレスに対応した前記代替アドレスで指示される前記フラッシュメモリ内のブロックにアクセスするメモリ制御部とを具備し、前記メモリ制御部が前記フラッシュメモリには第１のバスを介して接続され前記ブロック代替情報登録メモリには第２のバスを介して接続され、前記第１のバスを介しての前記メモリ制御部と前記フラッシュメモリ間の動作と前記第２のバスを介しての前記メモリ制御部と前記ブロック代替情報登録メモリ間の動作とが独立して行われる。
【０１９０】
本発明では、メモリ制御部とフラッシュメモリとの間で第１のバスを介してデータの読み出し・書き込み・イレース等の動作が行われるのと独立して、メモリ制御部とブロック代替情報登録メモリとの間で第２のバスを介して検索・更新等の動作が行われる。一態様において、メモリ制御部がフラッシュメモリ内でアクセスしたブロックが不良のブロックであることが判明した場合は、メモリ制御部がフラッシュメモリおよびブロック代替情報登録メモリにそれぞれ第１および第２のバスを介して並列的にアクセスして、フラッシュメモリにおける不良ブロックの記憶内容を消去するイレース処理とブロック代替情報登録メモリにおける登録情報を検索して更新する処理とが並列的に行われる。このような並列処理によりブロック代替管理を効率よく展開することができる。
【０２００】
本発明において、ブロック代替情報登録メモリは、フラッシュメモリ内に代替ブロック用として設定された複数個のスペアブロックと１対１で対応する複数個の記憶位置を有し、いずれかのスペアブロックが代替ブロックとして使用されているときはそれによって代替されている不良ブロックに割り当てられているアドレスを示すアドレス情報をスペアブロックに対応する記憶位置に格納する不揮発性の記憶手段を含むものであってよい。
【０２１０】
また、ブロック代替情報登録メモリ内の各々の記憶位置には、それと対応するスペアブロックが代替ブロックとして使用されていないときはその空き状態を示す第１のステータス情報が格納されてよく、さらに各対応するスペアブロックが正常であるのか不良であるのかを示す第２のステータス情報も格納されてよい。
【０２２０】
また、ブロック代替情報登録メモリは、各々の不良ブロックに替わる代替ブロックのアドレスをその不良ブロックに対応するアドレス情報が格納されている記憶位置のアドレスに基づいて求めるアドレス生成手段を含むものであってよい。この場合、好ましくは、アドレス生成手段が、不良ブロックに替わる代替ブロックのアドレスを、その不良ブロックに対応するアドレス情報が格納されている記憶位置のアドレスに所定のオフセット値を加算することによって求めてよい。
【０２３０】
本発明において、好ましくは、不揮発性記憶手段がＮＯＲ型フラッシュメモリからなるものであってよい。
【０２４０】
【発明の実施の形態】
以下、添付図を参照して本発明の実施例を説明する。
【０２５０】
図１は、本発明の一実施例によるフラッシュメモリシステムの構成を示す。このシステムにおいて、コントローラ１０、テーブルメモリ１２およびフラッシュメモリ１４の各チップは一枚のカードたとえばフラッシュ・ディスク・カード１６上に搭載されている。カード１６がホストコンピュータ１８のカード・スロットに装着され、コントローラ１０はホストコンピュータ１８に所定規格のインタフェースたとえばＰＣＭＣＩＡ−ＡＴＡまたはＩＤＥインタフェース２０で接続される。
【０２６０】
フラッシュメモリ１４は、ホスト１８側からコントローラ１０を介してデータの書き込み／読み出しを行えるメモリであり、たとえば同一構成および機能を有する１個または複数個（ｎ個）のＡＮＤ型フラッシュＥＥＰＲＯＭチップからなり、バス２２および所要の制御線２４を介してコントローラ１０に接続されている。
【０２７０】
テーブルメモリ１２は、ホスト１８とは独立してコンローラ１０の管理下に置かれる不揮発性の半導体メモリチップたとえばＮＯＲ型フラッシユメモリからなり、データ蓄積用のフラッシュメモリ１４とは別個のバス２６および制御線２８を介してコントローラ１０に接続されている。このテーブルメモリ１２内に後述するブロック代替管理テーブルが構築される。
【０２８０】
図２に、本実施例におけるコントローラ１０の内部の機能的構成をブロック図で示す。コントローラ１０は、メインシーケンサ３０、フラッシュＩ／Ｆシーケンサ３２、ホストインタフェース部３４、データバッファ３６およびバッファ制御部３８を有している。
【０２９０】
メインシーケンサ３０は、内蔵または外付けのファームウェアにしたがって動作し、コントローラ１０内の各部を制御してホスト１８およびフラッシュメモリ１４間のデータのやりとりを管理するだけでなく、テーブルメモリ１２に対して直接アクセス可能で所要のメモリ制御を行う機能を有している。
【０３００】
フラッシュＩ／Ｆシーケンサ３２は、メインシーケンサ３０の管理下でフラッシュメモリ１４に対して直接アクセスし所要のメモリ制御を行う。
【０３１０】
ホストインタフェース部３４は、ＣＨＳレジスタ４０、アドレス変換部４２、ロジック制御部４４およびＩ／Ｏポート４６等を含んでいる。ＣＨＳレジスタ４０は、ホスト１８より送られて来たＣＨＳ（シリンダ・ヘッド・セクタ）モードのアドレスを保持する。アドレス変換部４２は、ホスト１８からのＣＨＳアドレスをシステム内の論理アドレスに変換するための演算機能を有するほか、論理アドレスの自動更新を行うための演算機能も有している。
【０３２０】
ロジック制御部４４は、ホスト１８側より書き込み可能または読み取り可能な各種レジスタを内蔵しており、書き込まれたコマンドを解読してアドレス変換部４２やバッファ制御部３８等を制御する機能を有している。
【０３３０】
Ｉ／Ｏポート４６は、ホスト１８のバス２０に所定規格のインタフェースたとえばＰＣＭＣＩＡ−ＡＴＡまたはＩＤＥインタフェースで接続され、ホスト１８より入力したデータおよび制御信号を各部へ転送するためのマルチプレクサ機能を有するほか、ホスト１８より受信したアドレス信号をデコードするためのアドレスデコーダを内蔵している。
【０３４０】
データバッファ３６は、揮発性の半導体メモリたとえばＳＲＡＭからなる。バッファ制御部３８は、メインシーケンサ３０、フラッシュＩ／Ｆシーケンサ３２またはＩ／Ｏポート４６からのデータバッファ３６に対するデータの書き込み／読み出しの要求を受け付け、かつ調停を行って、データバッファ３６のデータ書き込み／読み出し動作を制御する。
【０３５０】
なお、メインシーケンサ３０とフラッシュＩ／Ｆシーケンサ３２、ホストインタフェース部３４、バッファ制御部３８の各部との間はデータバスと制御線とで接続されるが、これらのデータバスはハードウェア的には共通のバスでよく、さらにはその共通バスにテーブルメモリ１２を接続することも可能である。
【０３６０】
図３に、フラッシュメモリ１４における１ブロック内の記憶領域フォーマットの一例を示す。フラッシュメモリ１４の各チップＦＭｉ  （ｉ＝１，２…，ｎ）内のメモリ領域は所定数（Ｎ個）のブロックに分割され、さらに各ブロック内の記憶領域が所定のフォーマットで区分されている。
【０３７０】
図３のフォーマット例では、１ブロック内が５１２バイト（１セクタ分）のデータ格納部と、４バイトのＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔｉｏｎ）  コード格納部と、１２バイトの未使用領域（Ｒｅｓｅｒｖｅ  ）とに区分されている。１ブロックが書き込み単位の１セクタに相当するため、消去だけでなく書き込みも１ブロック単位で行われる。
【０３８０】
図４に、フラッシュメモリ・チップＦＭｉ  の記憶領域フォーマットの一例を示す。この例では、各チップＦＭｉ  内の記憶領域が１６３８４個のブロックに分割され、それぞれのブロックに配列順に物理アドレス０，１，…，１６３８３が割り当てられる。
【０３９０】
また、本実施例では、各フラッシュメモリ・チップＦＭｉ  内でブロックの代替が行われていない場所では論理アドレスと物理アドレスとが同じ値で対応し、物理アドレスと同じ値の論理アドレスが割り当てられる。
【０４００】
各フラッシュメモリ・チップＦＭｉ  内の１６３８４個のブロックのうち、０〜１５３５９番目のブロックは通常領域に属し、正常である限りデータ格納用ブロックとして用いられる。残りのブロックつまり１５３６０番目から１６３８３番目（最後）までの１０２４個のブロックはスペア領域に属し、通常領域内に不良のブロックが存在するときにそれに替わる代替ブロックとして用いられる。
【０４１０】
図４には、テーブルメモリ１２内に構築されるブロック代替管理テーブルの一例も示されている。本実施例では、各フラッシュメモリ・チップＦＭｉ  についてそのスペア領域のブロック数またはアドレス数と同じ個数（１０２４）のテーブルアドレス（物理アドレス）がブロック代替管理テーブルＴＢｉ  内に設定され、各テーブルアドレスが１対１の対応関係でいずれか１つのスペアブロックの物理アドレスに対応づけられている。
【０４２０】
この例では、それぞれスペア領域およびテーブル領域内で同じ配列順位を有するテーブルアドレスとスペアブロック物理アドレスとが互いに対応しており、各テーブルアドレスに一定のオフセット値ＡＳ  （１５３６０）を加算すると、そのテーブルアドレスに対応するスペアブロック物理アドレスが得られるという関係がある。
【０４３０】
各テーブルアドレスで指示されるテーブル記憶位置には、そのテーブルアドレスに対応するスペアブロックの状態に関する情報がブロック代替情報として所定のデータ長たとえば１ワード（１６ビット）で格納される。
【０４４０】
図５に、本実施例におけるブロック代替情報のデータフォーマット例を示す。この１ワードのブロック代替情報Ｂ１５−００  のうち、最上位２ビットＢ１５−１４  には当該（対応）スペアブロックの良否状態を示す情報がセットされる。つまり、当該スペアブロックが「正常」であるか「不良」であるかに応じてこの良否フラグビットＢ１５−１４  に「１１」，「００」がセットされる。
【０４５０】
なお、本実施例においてブロックが「正常」であるとは、前回このスペアブロックにアクセスした際に正常であったことを意味し、必ずしも現時点の状態が正常であるとは限らない。また、「不良」と判定されたブロックには以後のアクセスを禁止するため、いったん「００」にセットされた良否フラグビットＢ１５−１４  が「１１」に変わることはない。
【０４６０】
下位１４ビットのフィールドＢ１３−００  は、最上位ビット（良否フラグビット）Ｂ１５−１４  が「１１」のとき有意となり、当該スペアブロックが未使用状態つまり空き状態であるのか、それとも代替ブロックとして使用中の状態であるのかを示す情報がセットされる。
【０４７０】
すなわち、当該スペアブロックが空き状態のときは、このフィールドＢ１３−００  の全ビットに１がセットされる。したがって、ブロック代替情報Ｂ１５−００  は全ビットが１の値つまりＦＦＦＦｈ  になる。
【０４８０】
また、当該スペアブロックが代替ブロックとして使用されているときは、このフィールドＢ１３−００  には当該スペアブロック（代替ブロック）によって代替されている通常領域内の不良ブロックに割り当てられていた論理アドレスがセットされる。
【０４９０】
図５には、フラッシュメモリ１４の全チップＦＭ０  ，ＦＭ１  ，…，ＦＭｎ  に対応するブロック代替管理テーブルＴＢ０  ，ＴＢ１  ，…，ＴＢｎ  のテーブルメモリ１２内の配置構造も示されている。本例では、テーブルメモリ１２の物理アドレスの最下位１０ビットの値がチップ１個分の各ブロック代替管理テーブルＴＢｉ  の物理アドレスに相当する。そして、テーブル１個分のアドレスは［００００００００００］〜［１１１１１１１１１１］で与えられるから、テーブルの始端位置が３Ｃ００ｈ  のときは、３ＦＦＦｈ  が終端位置となる。
【０５００】
なお、図４の例では、ブロック代替管理テーブルＴＢｉ  の先頭位置（テーブルアドレス０）および２番目の位置（テーブルアドレス１）に論理アドレス４，５がそれぞれ格納（登録）されている場合を示している。
【０５１０】
このことは、フラッシュメモリ・チップＦＭｉ  において論理アドレス４，５をそれぞれ割り当てられていた通常領域内のブロックつまり物理アドレス４，５の両ブロックが不良と判定されており、物理アドレス４の不良ブロックはテーブルアドレス０に対応するチップＦＭｉ  内の物理アドレス１５３６０のスペアブロックで代替され、物理アドレス５の不良ブロックはテーブルアドレス１に対応するチップＦＭｉ  内の物理アドレス１５３６１のスペアブロックで代替されていることを意味する。これらのブロック代替に伴って、論理アドレス４，５は実質的に不良ブロック（４，５）から代替ブロック（１５３６０，１５３６１）にそれぞれ移行している。
【０５２０】
フラッシュメモリ内の不良ブロックは、チップ出荷前のブロック良否検査によって検出できるのはもちろん、実際のメモリアクセス動作の中でも公知の方法で検出可能である。チップ出荷前の良否検査で検出される不良はいわゆる先天性不良であり、使用中に不良になるのはいわゆる後天性不良である。本発明では、いずれの不良ブロックも検出された順にブロック代替管理テーブルＴＢに登録される。その場合、図４に示すように、テーブルの先頭位置から順に１テーブルアドレスにつき１論理アドレスずつ登録されることになる。
【０５３０】
なお、先天性不良のブロックが各フラッシュメモリ・チップ内の所定の冗長部に記録またはリストされる場合は、そのリストの情報を基に先天性不良ブロックをブロック代替管理テーブルＴＢに一括登録することができる。そのようなリストが得られない場合は、システム構築時の初期化で全ブロックの良否を検査して先天性不良ブロックを割り出してもよい。あるいは、先天性不良ブロックも後天性不良ブロックと同じ扱いで実際のメモリアクセスの中で個別的に検出し、その都度ブロック代替管理テーブルＴＢに登録してもよい。
【０５４０】
図６および図７に、本実施例においてアドレス変換部４２により実行されるアドレス演算の例を示す。
【０５５０】
本実施例では、ホスト１８からのアドレスがＣＨＳモードで与えられる。このＣＨＳモードのアドレスには、アドレス指定の対象となる記憶場所のシリンダナンバー（Ｃ）、ヘッドナンバー（Ｈ）、セクタナンバー（Ｓ）、シリンダあたりのヘッド数（ＨｐＣ）およびヘッドあたりのセクタ数（ＳｐＨ）の値（データ）が含まれている。
【０５６０】
図６に示すように、先ずアドレス変換部４２は、入力したＣＨＳモードのアドレス情報（Ｃ，Ｈ，Ｓ，ＨｐＣ，ＳｐＨ）を基に次式（１）を演算して、対応する値の論理ブロックアドレス（ＬＢＡ）を求める。
ＬＢＡ＝（Ｃ×ＨｐＣ＋Ｈ）ＳｐＨ＋Ｓ−１          ………（１）
【０５７０】
次に、アドレス変換部４２は、上記のようにして算出した論理ブロックアドレス（ＬＢＡ）とフラッシュメモリ１４に含まれるチッブＦＭの個数（ＮｕｍＣＨＩＰ）とから次式（２），（３）を演算して、論理アドレスを規定するチップナンバー（ＣＨＩＰ−  ＮＵＭ）およびチップ内論理ブロックナンバー（ＬＡ−  ＢＬＫ）を求める。
ＬＡ−  ＢＬＫ＝ＬＢＡ／ＮｕｍＣＨＩＰ              ………（２）
ＣＨＩＰ−  ＮＵＭ＝ＬＢＡ  ｍｏｄ  ＮｕｍＣＨＩＰ  ………（３）
【０５８０】
なお、上式（２），（３）は一例である。フラッシュメモリ・チップＦＭｉ  またはブロックの記憶領域フォーマットが変われば、上式（２），（３）とは違った演算式が用いられる。
【０５９０】
次に、図８〜図１０につきホスト１８からの読み出しのメモリアクセスに対する本システムの作用を説明する。図８および図９はコントローラ１０内の処理手順を示し、図１０はシステム内の各部の動作のタイミングを示す。
【０６００】
本フラッシュメモリシステムに対してデータの読み出しを行うとき、ホスト１８は上記したようにＣＨＳモードのアドレス情報で読み出し位置（先頭位置）を指定してくる。また、読み出しデータの量または範囲をセクタカウント（ＳＣ）で指定し、読み出しコマンドを送ってくる。
【０６１０】
コントローラ１０では、ホストインタフェース部３４においてＩ／Ｏポート４６で受信したホスト１８からの読み出し指令情報（ＣＨＳ，ＳＣ，コマンド）をロジック制御部４４内のレジスタに格納する。以後、メインシーケンサ３０が中心となって以下のような処理を実行する。
【０６２０】
先ず、ロジック制御部４４内に設けられているホスト向けの内部ビジーフラグ（ＢＵＳＹ）をセットする（ステップＡ１  ）。
【０６３０】
次いで、ＣＨＳレジスタ４０に格納されているＣＨＳモードの入力アドレスをアドレス変換部４２において図６および図７に示すような演算によりフラッシュメモリ１４内の論理アドレスに変換する（ステップＡ２  ）。このアドレス変換で得られる論理アドレスから今回の読み出し動作の対象となるフラッシュメモリ・チップＦＭｉ  が判明する。
【０６４０】
次に、メインシーケンサ３０が、該当フラッシュメモリ・チップＦＭｉ  に対応するブロック代替管理テーブルＴＢｉ  を検索し、ホスト１８より指定されている論理アドレスが該テーブルＴＢｉ  内に登録されているかどうかテーブル先頭位置からアドレス順に検索（サーチ）する（ステップＡ３  〜Ａ９  ）。
【０６５０】
このサーチは高速に行える。本実施例のようにテーブルメモリ１２にＮＯＲ型フラッシュメモリを用いた場合、テーブル１行の検索に要する時間を１００ナノ秒以下に抑えることが可能である。
【０６６０】
たとえば、ブロック代替管理テーブルＴＢｉ  の内容が図４に示すような状態であり、アドレス変換によって得られた論理アドレスの値が２であったとする。
【０６７０】
この場合、ブロック代替管理テーブルＴＢｉ  の検索で最初に（テーブル先頭位置より）読み出される情報は「Ｃ００４」であり、照合一致しない。そこで、次に２番目のテーブル記憶位置の情報を読み出すと、「Ｃ００５」であり、これも照合一致しない。次に、３番目のテーブル位置の情報を読み出すと、「ＦＦＦＦｈ  」であり、これは対応スペアブロック（物理アドレス１５３６１のブロック）が空き（未使用）の状態であることを示す。したがって、これ以降のテーブル記憶位置にも全て空き状態を示す「ＦＦＦＦｈ  」が格納されていることもわかる。
【０６８０】
この時点で、論理アドレス２はブロック代替管理テーブルＴＢｉ  に登録されていないこと、したがって目的のフラッシュメモリ読み出し位置は物理アドレス２のブロックであることが判明したので（ステップＡ６  ）、テーブル検索を終了し（ステップＡ１１）、この論理アドレス２をそのままアクセス先の物理アドレス２に置き換える（ステップＡ１２）。
【０６９０】
そして、フラッシュＩ／Ｆシーケンサ３２を通じてこの物理アドレス２で指定される該当フラッシュメモリ・チップＦＭｉ  内のブロックにアクセスし、そのアクセスしたブロックよりデータを読み出す（ステップＡ１４）。この際、フラッシュメモリ１４より読み出されたデータはバス２２を介していったんデータバッファ３６に格納される。
【０７００】
別の例として、上記アドレス変換によって得られた論理アドレスの値が５であったとする。この場合は、上記のテーブル検索において２番目のテーブル記憶位置から「Ｃ００５」が読み出され、このブロック代替情報「Ｃ００５」に論理アドレス５が照合一致する（ステップＡ５  ）。
【０７１０】
この時点で、論理アドレス５を割り当てられていた通常領域内の物理アドレス５のブロックが不良であること、そしてテーブルＴＢｉ  の２番目の記憶位置に対応するチップ内物理アドレスの位置に該不良ブロックの替わりとなる該当の代替ブロックが配置されていることが判明する。そこで、テーブル検索を終了し（ステップＡ１１）、照合一致のあったテーブルアドレス（１）に所定のオフセット値Ａｓ  （１５３６０）を加算して、アクセス先のチップ内物理アドレス（１５３６１）を求める（ステップＡ１３）。
【０７２０】
そして、フラッシュＩ／Ｆシーケンサ３２を通じてこの物理アドレス（１５３６１）で指定される該当フラッシュメモリ・チップＦＭｉ  のブロックにアクセスし、そのブロックよりデータを読み出す（ステップＡ１４）。この場合も、フラッシュメモリ１４より読み出されたデータはバス２２を介してデータバッファ３６に格納される。
【０７３０】
上記のようにしてフラッシュメモリ１４より読み出されたデータにエラーがなければ、たとえばデータ読み出し終了時にフラッシュメモリ１４より送られてくるステータス情報がエラーを示していなければ、正常な読み取りが行われたものと判断し（ステップＡ２６）、直ちにデータバッファ３６内の読み出しデータをホスト１８側へ転送可能とする。すなわち、内部ビジーフラグ（ＢＳＹ）をクリアし、ホスト１８による読み出しデータの取り込みを待つ（ステップＡ２８）。
【０７４０】
そして、ホスト１８へのデータ転送の終了の後、今回のメモリアクセスでホスト１８より与えられているセクタカウント（ＳＣ）が１のときは上記した１ブロック（１セクタ）分の読み出しでもって今回の全読み出し動作を終了する。しかし、セクタカウント（ＳＣ）が２以上のときは、最初に戻り（ステップＡ３０）、上記と同様の手順で読み出し動作を実行する。ただし、２回目以降の論理アドレスはアドレス変換部４２において自動更新（インクリメント）した値となる。
【０７５０】
図１０の（Ａ）には、フラッシュメモリ１４より読み出された２セクタ分のデータにエラーが無い場合の各部の動作のタイミングが示されている。
【０７６０】
フラッシュメモリ１４より読み出されたデータにエラーがある場合は、図９のステップＡ１６〜Ａ２５の処理が行われる。このときの各部の動作のタイミングは図１０の（Ｂ）に示されている。
【０７７０】
各フラッシュメモリ・チップＦＭｉ  内にはチップ内のメモリアレイから読み出したデータにＥＣＣエラーが発生したか否かを検出できる機能が備わっている。エラーがあったときは、データ読み出し終了時にチップＦＭｉ  よりフラッシュＩ／Ｆシーケンサ３２に送られてくるステータス情報でエラーが通知される。
【０７８０】
ＥＣＣエラーを示すステータス情報が通知されたときは、今回の読み出し対象となったブロックの記憶内容を消去する（ステップＡ１６）。このイレース処理では、フラッシュＩ／Ｆシーケンサ３２よりバス２２を介して該当のフラッシュメモリ・チップＦＭｉ  に消去対象のブロックを指定するアドレスや消去実行コマンド等が与えられる。そうすると、該チップＦＭｉ  内でそのブロックについてブロック消去動作が実行される。
【０７９０】
本実施例では、上記のように読み出し時にＥＣＣエラーを起こしたブロックについては、これを不良ブロックと認定する。この不良と認定されたブロックは、フラッシュメモリ・チップＦＭｉ  において通常領域に属する通常ブロックであるときもあれば、スペア領域に属するスペアブロック（代替ブロック）のときもある。
【０８００】
スペア領域内のブロックであるときは、ブロック代替管理テーブルＴＢｉ  においてそのスペアブロックについての登録抹消処理を行う（ステップＡ１８）。この登録抹消処理では、そのスペアブロックに対応するテーブル記憶位置に「００００ｈ  」を書き込み、そのスペアブロックが「不良」であること、したがって代替ブロックでも代替可能ブロックでもないことを明示し、以後のアクセスを禁止する。こうして、「不良」と判定したスペアブロックをブロック代替管理テーブルＴＢｉ  から登録抹消する。
【０８１０】
今回不良と認定されたブロックが通常領域内のブロックであるときは、上記のようなブロック代替管理テーブルＴＢｉ  における登録抹消処理（ステップＡ１８）は不要であり、この処理をスキップして（ステップＡ１９）、空きブロックサーチ（ステップＡ２０）を行う。
【０８２０】
この空きブロックサーチでは、今回不良と認定されたブロックに換わるべき空き状態のスペアブロックを捜す。具体的には、ブロック代替管理テーブルＴＢｉ  においてテーブル先頭位置から順にテーブル記憶位置にアクセスし、空き情報「ＦＦＦＦｈ  」が格納されている最先（先頭）の位置を捜し出す。そして、その捜し出したテーブル位置を基に、上記したようなテーブルアドレスとスペアブロック物理アドレスとの対応関係から、スペア領域内で未だ空き状態になっているスペアブロックの中の先頭ブロックを割り出す。
【０８３０】
本実施例では、上記のようなブロック代替管理テーブルＴＢｉ  におけるスペアブロック登録抹消および空きブロックサーチの各処理（ステップＡ１８，Ａ２０）をフラッシュメモリ１４における不良ブロックのイレース処理（ステップＡ１６）と並行して実行することが可能である。
【０８４０】
すなわち、ブロック代替管理テーブルＴＢｉ  が位置するテーブルメモリ１２と不良ブロックが位置するフラッシュメモリ１４とは別々のバス２６，２２に接続されているので、コントローラ１０は両メモリ１２，１４に対して並列的にアクセスし、両メモリ１２，１４に所要のメモリ動作を並列的または同時的に行わせることができる。
【０８５０】
上記のようにして新規の代替ブロックとなるべき空きのスペアブロックを割り出したなら、次に、このスペアブロックをイレース（初期化）したうえで、データバッファ３６に格納されているデータ（フラッシュメモリ１４より今回読み出されたデータ）を該スペアブロックに書き込む（ステップＡ２１）。
【０８６０】
このデータ書き込み処理は、今回不良と認定されたブロックにいままで蓄積されていたデータを新規代替ブロックとなるべきスペアブロックに移し替える処理にほかならない。
【０８７０】
この初期化のイレース処理は上記不良ブロックに対するイレース処理（ステップＡ１６）と同様にして行われる。また、該スペアブロックへのデータの書き込みに際しては、フラッシュＩ／Ｆシーケンサ３２からは該スペアブロックを指定するアドレスと書き込みを指示する所要のコマンドとが、データバッファ３６からは書き込み対象のデータが、それぞれ所定のタイミングで該当のフラッシュメモリ・チップＦＭｉ  に送り込まれる。そうすると、そのフラッシュメモリ・チップＦＭｉ  内では、書き込みコマンドが実行され、該当スペアブロックに該データが書き込まれる。
【０８８０】
このスペアブロックにおける初期化およびデータ書き込みは、首尾良く行われたかそれとも失敗したのか、上記と同様にフラッシュメモリ・チップＦＭｉ  からのステータス情報を基に確認をとる（ステップＡ１２）。失敗したときは、当該スペアブロックを「不良」と認定し、新規の代替ブロックとして使える正常なスペアブロックが得られるまで、スペアブロックに関する上記一連の処理（Ａ１８，Ａ２０，Ａ２１）を繰り返す（ステップＡ２３）。その際、ブロック代替管理テーブルＴＢｉ  においては、テーブルアドレスの上位位置から順に「００００ｈ  」の書き込み（登録抹消）が行われる。
【０８９０】
そして、新規の代替ブロックとして使えた正常なスペアブロックが決まったならば、次にそのスペアブロックに対応するブロック代替管理テーブルＴＢｉ  のテーブル記憶位置に今回のメモリアクセスに係る論理アドレス（ステップＡ２  ）の値を格納（登録）する（ステップＡ２４）。これで、この論理アドレスはこの新規代替ブロックに割り付けられたことになる。
【０９００】
次に、今回の読み出しデータエラーが訂正不能であった場合は、この時点でロジック制御部４４内のエラービットフラグをセットする（ステップＡ２５）。次いで、ビジーフラグ（ＢＳＹ）をクリアして（ステップＡ２７）、データバッファ３６内の読み出しデータをホスト１８へ転送可能とする（ステップＡ２８）。
【０９１０】
次に、図１１〜図１５につきホスト１８からの書き込みのメモリアクセスに対する本システムの作用を説明する。図１１〜図１３はコントローラ１０内の処理手順を示し、図１４〜図１５はシステム内の各部の動作のタイミングを示す。
【０９２０】
データの書き込みを行うとき、ホスト１８はＣＨＳモードのアドレス情報で書き込み位置（先頭位置）を指定し、セクタカウント（ＳＣ）で書き込みデータの量または長さを指定し、書き込みコマンドで指示してくる。
【０９３０】
コントローラ１０では、ホストインタフェース部３４においてＩ／Ｏポート４６で受信したホスト１８からの書き込み指令情報（ＣＨＳ，ＳＣ，コマンド）をロジック制御部４４内のレジスタに格納する。以後、メインシーケンサ３０が中心となって以下のような処理を実行する。
【０９４０】
先ず、ロジック制御部４４内の内部ビジーフラグ（ＢＵＳＹ）をセットする（ステップＢ１  ）。
【０９５０】
次いで、アドレス変換部４２においてＣＨＳモードのアドレスからフラッシュメモリ内論理アドレスへのアドレス変換（演算）が行われる（ステップＢ２  ）。
【０９６０】
次に、メインシーケンサ３０が、上記した読み出し動作のときと同様に、該当フラッシュメモリ・チップＦＭｉ  に対応するブロック代替管理テーブルＴＢｉ  を検索し、ホスト１８より指定されている論理アドレスがテーブルＴＢｉ  内に登録されているかどうかテーブル先頭位置からアドレス順に検索し（ステップＢ３  〜Ｂ９  ）、検索結果にしたがって該論理アドレスに対応するブロックの物理アドレスを割り出す。
【０９７０】
すなわち、該論理アドレスがテーブルＴＢｉ  内に登録されているときは、その登録位置のテーブルアドレスに対応する代替ブロックの物理アドレスが割り出される（ステップＢ１３）。また、該論理アドレスがテーブルＴＢｉ  内に登録されていないときは、その論理アドレスと同じ値の物理アドレスが割り出される（ステップＢ１２）。
【０９８０】
次に、その割り出された物理アドレスで指示される当該フラッシュメモリ・チップＦＭｉ  内のブロックをイレース（初期化）する。この初期化のイレース処理は、上記した読み出し動作における不良ブロックのイレース（ステップＡ１６）と同様の手順で行われる。
【０９９０】
そして、ホスト１８からの書き込みデータの転送に応ずるため内部ビジーフラグ（ＢＳＹ）をクリアしておいて（ステップＢ１５）、イレース処理（ステップＢ１４）が首尾良く完了したことを当該フラッシュメモリ・チップＦＭｉ  からのステータス情報で確認する（ステップＢ１６，Ｂ１７）。さらに、ホスト１８からのデータが全てデータバッファ３６にロードされたことも確認する（ステップＢ２８）。
【１０００】
そして、内部ビジーフラグ（ＢＳＹ）をセットしたうえで（ステップＢ２９）、フラッシュメモリ１４へのデータ書き込みを行う（ステップＢ３０）。このデータ書き込み処理は、上記した読み出し動作におけるデータエラー発生時のデータ移し替えのための書き込み処理（ステップＡ２１）と同様の手順で行われる。
【１０１０】
すなわち、フラッシュＩ／Ｆシーケンサ３２からは該当の物理アドレスと書き込みコマンドとが、データバッファ３６からはホスト１８より送られて来た書き込み対象のデータが、それぞれ所定のタイミングで該当のフラッシュメモリ・チップＦＭｉ  に送り込まれる。フラッシュメモリ・チップＦＭｉ  内では、書き込みコマンドが実行され、該当ブロックに該データが書き込まれる。
【１０２０】
そして、この書き込みが首尾良く行われたことを当該フラッシュメモリ・チップＦＭｉ  からのステータス情報で確認する（ステップＢ３１）。ホスト１８より与えられているセクタカウント（ＳＣ）が１のときはこれで全処理を終了し、セクタカウント（ＳＣ）が２以上のときは最初に戻り（ステップＢ４２）、上記と同様の手順で読み出し動作を実行する。ただし、２回目以降の論理アドレスはアドレス変換部４２において１つインクリメントした値となる。
【１０３０】
図１４の（Ａ）には、何のエラーや障害も発生することなくホストからの２セクタ分のデータがフラッシュメモリ１４に書き込まれた場合の各部の動作のタイミングが示されている。
【１０４０】
上記した該当ブロックに対するイレース処理（ステップＢ１４）が失敗したときは、図１２のステップＢ２０〜Ｂ２６の処理が行われる。このときの各部の動作のタイミングは図１４の（Ｂ）に示されている。
【１０５０】
このイレース処理（ステップＢ１４）でエラーがあったときは、イレース動作終了後に当該フラッシュメモリ・チップＦＭｉ  よりフラッシュＩ／Ｆシーケンサ３２に送られてくるステータス情報でエラーが通知される。
【１０６０】
本実施例では、イレース・エラーが発生したブロックについては、これを不良ブロックと認定する。この不良と認定されたブロックは、フラッシュメモリ・チップＦＭｉ  において通常領域に属する通常ブロックであるときもあれば、スペア領域に属するスペアブロック（代替ブロック）のときもある。
【１０７０】
スペア領域内のブロックであるときは、ブロック代替管理テーブルＴＢｉ  においてそのスペアブロックについての登録抹消処理を行う（ステップＢ１９）。この登録抹消処理は、上記した読み出し動作における登録抹消処理（ステップＡ１８）と同様の手順で行われる。
【１０８０】
今回不良と認定されたブロックが通常領域内のブロックであるときは、上記した読み出し動作のときと同様に、テーブル内登録抹消処理（ステップＢ１９）をスキップして（ステップＢ２０）、空きブロックサーチ（ステップＢ２１）を行う。
【１０９０】
この空きブロックサーチの処理も、上記した読み出し動作における空きブロックサーチ（ステップＡ２０）と同様の手順で行われ、空き状態のスペアブロックの中で最も上位位置にあるブロックを割り出す。
【１１００】
上記のようにして新規の代替ブロックとなるべき空きのスペアブロックを割り出したなら、次に、このスペアブロックに対し上記と同様の手順で初期化のイレースを行う（ステップＢ２２）。
【１１１０】
このイレースが首尾良く行われたならそのスペアブロックを新規代替ブロックとして使える正常なブロックと認定し、イレースが失敗したならこのスペアブロックを不良ブロックと認定し、正常なスペアブロックが見つかるまで上記の処理を繰り返す（ステップＢ２４）。この点は、上記した読み出し動作において新規代替ブロックを決定するときの処理（ステップＡ１８〜Ａ２３）と類似している。
【１１２０】
そして、正常にイレースされたスペアブロックに突き当たったときは、このスペアブロックを代替ブロックとして登録するため、ブロック代替管理テーブルＴＢｉ  においてそのスペアブロックの物理アドレスに対応するテーブルアドレスのテーブル位置に今回のメモリアクセスで指定された論理アドレス（ステップＢ２  ）を格納しておく（ステップＢ２５）。
【１１３０】
また、今回のデータ書き込みのアクセス先をこの登録された代替ブロックに変更しておく（ステップＢ２６）。
【１１４０】
上記フラッシュメモリ１４へのデータ書き込み処理（ステップＢ３０）が失敗したときは、図１３のステップＢ３２〜Ｂ３８の処理が行われる。このときの各部の動作のタイミングは図１５に示されている。
【１１５０】
このデータ書き込み処理（ステップＢ３０）でエラーがあったときも、当該フラッシュメモリ・チップＦＭｉ  より書き込み動作終了後に送られてくるステータス情報でエラーが通知される。
【１１６０】
本実施例では、データ書き込みの失敗したブロックについても、これを不良ブロックと認定する。そして、この不良ブロックに替わるべき代替用のスペアブロックを決定し、そのスペアブロックにアクセスして今回のホスト１８からのデータを書き込む。この一連の代替処理（ステップＢ３２〜Ｂ３８）は、上記した読み出し動作におけるデータエラー発生時の代替処理（ステップＡ１７〜Ａ２４）と同様の手順で行われる。
【１１７０】
その結果、上記のような所定の条件を満たす新規の代替用スペアブロックに今回のメモリアクセスでホスト１８より送られてきたデータが書き込まれる。そして、このスペアブロックに対応するブロック代替管理テーブルＴＢｉ  のテーブル記憶位置に今回ホスト１８より指定された論理アドレスの値が格納（登録）されることで（ステップＢ３８）、次回にこの論理アドレスが指定されたときはこの新規代替ブロックがアクセス先となる。
【１１８０】
なお、図８、図９、図１１〜図１３のフローチャートに示す読み出し動作および書き込み動作の手順は、説明の便宜上、図３に示すような１ブロック＝１セクタのフォーマットに対応させている。１ブロックに複数のセクタが含まれている場合は、１セクタの転送毎に最初から処理を繰り返すことはせず、１ブロック分の全データをデータバッファ３６に格納し、ホストインタフェース部３４とホスト１８との間だけで１セクタ単位のデータ転送を繰り返す。
【１１９０】
上記したように、本実施例のフラッシュメモリシステムでは、フラッシュメモリ１４の外部で、かつ別個のバス２６上に好ましくはＮＯＲ型フラッシュメモリからなる不揮発性のテーブルメモリ１２を設け、このテーブルメモリ１２内に上記したようなブロック代替管理テーブルＴＢを構築する。
【１２００】
ホスト１８からのメモリアクセス要求を受ける度に、コントローラ１０（より詳細にはメインシーケンサ３０）が該テーブルＴＢを検索すると、テーブルの内容とホストより指定された論理アドレスとの照合によりブロック代替の要否判断が自動的に行われ、アクセス先となる該当ブロックが短時間で判明する。このアクセス先のブロックは、少なくとも前回アクセスされた時点では正常な記憶領域を有していたものであり、今回も正常であることの蓋然性は高い。
【１２１０】
本実施例によれば、最初から不良と分かっているブロックにアクセスするようなことを回避することができる。これにより、不良のアレイ領域へのアクセスに起因してフラッシュメモリが受ける有害なストレスを可及的に少なくすることができる。
【１２２０】
そして、仮にアクセス先のブロックが不良になっていた場合は、ブロック代替管理テーブルＴＢを参照しつつ、その不良ブロックに替わるべき代替ブロックを適確かつ迅速に決定し、同時にそのような新規のブロック代替に追随してテーブルＴＢの内容も適宜更新（書き換え）するようにしている。
【１２３０】
上記したように、本フラッュメモリシステムでは、ブロック代替管理テーブルＴＢ上でブロック代替情報を一元管理しているため、効率の高いブロック代替管理を実現できる。特に、テーブルＴＢ内には不良と判定された通常ブロックに係わる論理アドレスのみ登録すればよく、代替ブロックを指示するための特別なポインタを登録する必要もない。したがって、テーブル容量は少なくて済み、フラッシュメモリの大容量化に十分対応できる。
【１２４０】
また、ブロック代替管理テーブルＴＢには電源の入／切に関係なくブロック代替情報が保持されるため、電源投入直後等で行われるシステム初期化の中でテーブル形成のための処理も時間も一切不要である。
【１２５０】
また、本実施例では、ブロック代替管理テーブルＴＢを与えるテーブルメモリ１２とデータ格納用のメモリ空間を与えるフラッシュメモリ１４とが別々のバス２６，２２に接続されているので、ブロック代替管理テーブルＴＢｉ  内の処理（検索・更新等）をフラッシュメモリ１４側の動作と独立させて実行することが可能であり、ブロック代替管理を効率よく展開できる。
【１２６０】
もっとも、上記した実施例は一例であり、本発明におけるブロック代替管理方式とりわけブロック代替管理テーブルＴＢに関連する諸機能は種々の応用および変形が可能である。
【１２７０】
たとえば、上記した実施例では、ホスト１８からのメモリアクセス要求を受けると、コントローラ１０（メインシーケンサ３０）は即座に（無条件）でブロック代替管理テーブルＴＢｉ  を検索するようにした。しかし、先ずはホストから指定された論理アドレスのブロックにそのままアクセスし、そのブロックが不良であることが冗長部のブロック関連情報等から確認された時点で、ブロック代替管理テーブルＴＢを参照する方法も可能である。この場合でも、ブロック代替管理テーブルＴＢを通して該当の代替ブロックへアクセスすることができる。
【１２８０】
また、ブロック代替管理テーブルＴＢの更新は常に論理アドレス、不良フラグ等のデータ書き込みの形態で行われる。テーブルの初期化で全テーブル位置に書き込まれる空き情報（ＦＦＦＦｈ  ）を除き、いったん書き込まれたデータが消去されることはない。その意味で、上記実施例のようにブロック代替管理テーブルＴＢに用いる不揮発性のメモリとして、ＡＮＤ型フラシュメモリは機能的にもコスト的にも有利である。
【１２９０】
しかし、ＥＥＰＲＯＭやＦＲＡＭのような他の種類の不揮発性メモリも使用可能である。なお、テーブルメモリ１２に用いた不揮発性半導体メモリに他の用途のテーブルや各種設定値、ファームウェア等も一緒に格納できることはもちろんである。
【１３００】
あるいは、個々のフラッシュメモリ・チップＦＭｉ  内の冗長領域にブロック代替管理テーブルＴＢｉ  を設けることも可能である。その場合、テーブル内の処理とチップ内の本来のメモリ動作とは競合することになるため、特別の時分割制御が必要となる。
【１３１０】
上記実施例では、ブロック代替管理テーブルＴＢにおいて、フラッシュメモリ・チップ内スペア領域のブロック数またはアドレス数と同じ個数のテーブルアドレス（物理アドレス）が設定され、各テーブルアドレスが１対１の対応関係でいずれか１つのスペアブロックの物理アドレスに対応づけられていた。そして、それぞれスペア領域およびテーブル領域内で同じ配列順位を有するテーブルアドレスとスペアブロック物理アドレスとが互いに対応しており、各テーブルアドレスに一定のオフセット値ＡＳ  を加算すると、そのテーブルアドレスに対応するスペアブロック物理アドレスが得られるという関係があった。
【１３２０】
しかし、スペア領域のブロック数またはアドレス数とテーブルアドレスとは必ずしも同数である必要はない。オフセットＡｓ  は任意に設定可能であり、一定値でなくてもよい。重要なのは両者の間に１対１の対応関係があり、その対応関係が管理されるということである。
【１３３０】
また、ブロック代替管理テーブル内の検索方向または検索順次も任意に取り決めることが可能である。
【１３４０】
上記実施例におけるフラッシュ・ディスク・システムの構成、特にコントローラ内部の構成またはレイアウトは一例であり、種々の変形が可能である。上記した実施例においてホストより与えられるアドレスの形態（ＣＨＳモード）も一例であり、ホストが最初からフラッシュメモリ内の論理アドレスを与えてきてもよく、他のモードのアドレスを与えてきてもよい。種々多様な構成または機能を有するホストないしホストインタフェースが使用可能である。
【１３５０】
【発明の効果】
以上説明したように、本発明のフラッシュメモリシステムによれば、少ない資源で効率よく信頼性の高いブロック代替管理を行うことができる。
【図面の簡単な説明】
【図１】本発明の一実施例によるフラッシュメモリシステムの構成を示すブロック図である。
【図２】実施例におけるコントローラの内部の機能的構成を示すブロック図である。
【図３】実施例のフラッシュメモリにおけるブロック内記憶領域フォーマットの一例を示す図である。
【図４】実施例におけるフラッシュメモリチップ内記憶領域フォーマットの一例とブロック代替管理テーブルの構成例を示す図である。
【図５】実施例におけるブロック代替情報のデータフォーマット例を示す図である。
【図６】実施例のアドレス演算部で実行されるアドレス演算の例を示す図である。
【図７】実施例のアドレス演算部で実行されるアドレス演算の例を示す図である。
【図８】実施例における読み出し動作の処理手順を示すフローチャートである。
【図９】実施例における読み出し動作の処理手順を示すフローチャートである。
【図１０】実施例の読み出し動作における各部の動作のタイミングを示す図である。
【図１１】実施例における書き込み動作の処理手順を示すフローチャートである。
【図１２】実施例における書き込み動作の処理手順を示すフローチャートである。
【図１３】実施例における書き込み動作の処理手順を示すフローチャートである。
【図１４】実施例の書き込み動作における各部の動作のタイミングを示す図である。
【図１５】実施例の書き込み動作における各部の動作のタイミングを示す図である。
【符号の説明】
１０    コントローラ
１２    テーブルメモリ
１４    フラッシュメモリ
１８    ホストコンピュータ
２２，２６    バス
３０    メインシーケンサ
３２    フラッシュＩ／Ｆシーケンサ
３４    ホストインタフェース部
３６    データバッファ
３８    バッファ制御部
４２    アドレス変換部
【図１】
0003589033.tif 000002
【図２】
0003589033.tif 000003
【図３】
0003589033.tif 000004
【図５】
0003589033.tif 000005
【図４】
0003589033.tif 000006
【図６】
0003589033.tif 000007
【図７】
0003589033.tif 000008
【図８】
0003589033.tif 000009
【図９】
0003589033.tif 000010
【図１０】
0003589033.tif 000011
【図１１】
0003589033.tif 000012
【図１２】
0003589033.tif 000013
【図１３】
0003589033.tif 000014
【図１４】
0003589033.tif 000015
【図１５】
0003589033.tif 000016