(57)【特許請求の範囲】
【請求項１】
電子機器本体に装着して用いられる、書き換え可能な不揮発性メモリを搭載したメモリカードにおいて、
前記書き換え可能不揮発性メモリをアクセスするために前記電子機器本体から前記メモリカードに与えられる論理アドレスを物理アドレスに変換するのに用いられる、それぞれ異なる論理アドレス範囲に対応付けられた複数のアドレス変換テーブルであって、前記書き換え可能不揮発性メモリに保存される複数のアドレス変換テーブルと、
前記書き換え可能不揮発性メモリ上の前記複数のアドレス変換テーブルのうちの、当該テーブルの総数より少ない数の複数のテーブルを格納するためのアドレス変換テーブル領域が確保される揮発性メモリと、
前記電子機器本体から前記メモリカードに前記書き換え可能不揮発性メモリをアクセスするための論理アドレスが与えられた場合、前記揮発性メモリ上の前記アドレス変換テーブルを利用して当該論理アドレスを物理アドレスに変換するアドレス変換手段と、
前記変換された物理アドレスに基づき、前記書き換え可能な不揮発性メモリに対してデータの書き込みまたは読み出しを行うアクセス手段とを具備することを特徴とするメモリカード。
【請求項２】
前記書き換え可能不揮発性メモリをアクセスするための論理アドレスが与えられた場合、当該論理アドレスが属する論理アドレス範囲に対応する前記アドレス変換テーブルが前記揮発性メモリ上に存在するか否かを判定するヒット／ミスヒット判定手段と、
前記ヒット／ミスヒット判定手段により前記対応するアドレス変換テーブルが前記揮発性メモリ上に存在しないと判定された場合、当該アドレス変換テーブルを前記書き換え可能不揮発性メモリから前記揮発性メモリ上の前記アドレス変換テーブル領域にコピーして、当該アドレス変換テーブルで前記アドレス変換テーブル領域上の元のアドレス変換テーブルを置き換えるコピー手段とを更に具備することを特徴とする請求項１記載のメモリカード。
【請求項３】
前記揮発性メモリには、前記複数のアドレス変換テーブルの前記書き換え可能不揮発性メモリ上の保存位置を示すポインタ情報が、当該アドレス変換テーブルに固有の論理アドレス範囲に対応付けて登録されるポインタテーブルを格納するためのポインタテーブル領域が確保され、
前記コピー手段は、前記ヒット／ミスヒット判定手段により前記対応するアドレス変換テーブルが前記揮発性メモリ上に存在しないと判定された場合、前記ポインタテーブルを参照して対応するポインタ情報を取得し、当該ポインタ情報の示す前記書き換え可能不揮発性メモリ上の前記アドレス変換テーブルを前記揮発性メモリ上の前記アドレス変換テーブル領域にコピーすることを特徴とする請求項２記載のメモリカード。
【請求項４】
前記複数のアドレス変換テーブルのいずれが前記揮発性メモリに格納されているかを指定するための参照用テーブル指定手段を更に具備し、
前記ヒット／ミスヒット判定手段は、前記与えられた論理アドレスが属する論理アドレス範囲に対応する前記アドレス変換テーブルが前記揮発性メモリ上に存在するか否かを前記参照用テーブル指定手段の指定内容に基づいて判定することを特徴とする請求項２記載のメモリカード。
【請求項５】
前記書き換え可能不揮発性メモリは、固有の論理ブロックアドレスが割り当てられる複数のブロックからなり、
前記複数のアドレス変換テーブルは、論理アドレス中の論理ブロックアドレスの所定フィールドの内容が共通の前記論理アドレス範囲に含まれる、前記書き換え可能不揮発性メモリ上のブロックの群、を単位に用意され、前記論理ブロックアドレスの前記所定フィールドの内容が共通のブロックの群と同数の、当該ブロックに割り当てられる論理ブロックアドレスにより指定可能なエントリの群であって、当該ブロックの前記書き換え可能不揮発性メモリ上の位置を示す物理アドレス情報を登録するためのエントリの群を有しており、
前記ヒット／ミスヒット判定手段は、前記与えられた論理アドレスが属する論理アドレス範囲を、当該論理アドレス中の論理ブロックアドレスの前記所定フィールドの内容の示す論理アドレス範囲として、この論理アドレス範囲に対応する前記アドレス変換テーブルが前記揮発性メモリ上に存在するか否かを判定し、
前記アドレス変換手段は、前記ヒット／ミスヒット判定手段により前記対応するアドレス変換テーブルが前記揮発性メモリ上に存在すると判定された場合には、前記与えられた論理アドレス中の論理ブロックアドレスにより当該揮発性メモリ上の前記アドレス変換テーブルの対応するエントリを参照することで、前記与えられた論理アドレスを対応する物理アドレスに変換し、存在しないと判定された場合には当該アドレス変換テーブルが前記コピー手段により前記揮発性メモリにコピーされるのを待って、前記与えられた論理アドレス中の論理ブロックアドレスにより当該揮発性メモリ上の前記アドレス変換テーブルの対応するエントリを参照することで、前記与えられた論理アドレスを対応する物理アドレスに変換することを特徴とする請求項２記載のメモリカード。
【請求項６】
前記アドレス変換手段により参照された前記アドレス変換テーブルのエントリに物理アドレス情報が登録されていない場合、前記書き換え可能不揮発性メモリ上の空きブロックを探して当該ブロックに前記与えられた論理アドレス中の論理ブロックアドレスを割り当てる割り当て手段と、
前記割り当て手段により論理ブロックアドレスが割り当てられたブロックの物理アドレス情報を、前記揮発性メモリ上の前記アドレス変換テーブルの参照エントリと、当該アドレス変換テーブルの参照エントリに対応する、前記書き換え可能不揮発性メモリ上のアドレス変換テーブルのエントリとに書き込む物理アドレス登録手段とを更に具備することを特徴とする請求項５記載のメモリカード。
【請求項７】
前記アドレス変換手段により変換された物理アドレスに基づいて前記書き換え可能不揮発性メモリに対する書き込みが行われた場合に、ブロックエラーの発生の有無を検出するブロックエラー検出手段と、
前記ブロックエラー検出手段によりブロックエラーの発生が検出された場合、前記書き換え可能不揮発性メモリ上の空きブロックを探して当該ブロックに前記与えられた論理アドレス中の論理ブロックアドレスを割り当てて、当該ブロックの物理アドレス情報で、前記揮発性メモリ上の前記アドレス変換テーブルの参照エントリと、当該アドレス変換テーブルの参照エントリに対応する、前記書き換え可能不揮発性メモリ上のアドレス変換テーブルのエントリとを更新するブロック代替手段とを更に具備することを特徴とする請求項５記載のメモリカード。
【請求項８】
前記コピー手段は、前記メモリカードの立ち上げ時に、前記書き換え可能不揮発性メモリ上の前記複数のアドレス変換テーブルのうちの、当該テーブルの総数より少ない数の複数のテーブルを、前記揮発性メモリ上の前記アドレス変換テーブル領域にコピーすることを特徴とする請求項５記載のメモリカード。
【請求項９】
前記揮発性メモリには、前記書き換え可能不揮発性メモリに保存されている前記複数のアドレス変換テーブルの当該不揮発性メモリ上の保存位置を示すポインタ情報が、当該アドレス変換テーブルに固有の、論理ブロックアドレスの前記所定フィールドの内容に対応付けて登録されるポインタテーブルを格納するためのポインタテーブル領域が確保されており、
前記コピー手段は、前記ヒット／ミスヒット判定手段により前記対応するアドレス変換テーブルが前記揮発性メモリ上に存在しないと判定された場合、前記与えられた論理アドレス中の論理ブロックアドレスの前記所定フィールドの内容により前記ポインタテーブルを参照して対応するポインタ情報を取得し、当該ポインタ情報の示す前記書き換え可能不揮発性メモリ上の前記アドレス変換テーブルを前記揮発性メモリ上の前記アドレス変換テーブル領域にコピーすることを特徴とする請求項５記載のメモリカード。
【請求項１０】
前記メモリカードの立ち上げ時に、前記ポインタテーブルを作成して前記揮発性メモリの前記ポインタテーブル領域に格納するポインタテーブル作成手段を更に具備することを特徴とする請求項９記載のメモリカード。
【請求項１１】
前記書き換え可能不揮発性メモリは、論理アドレス中の論理ブロックアドレスの前記所定フィールドの内容が共通の前記論理アドレス範囲に含まれる、ブロックの群からなるゾーンを単位に管理され、
前記ゾーンの１つは、システム管理情報が保存される管理領域を含むシステム領域に割り当てられ、
前記各アドレス変換テーブルは、前記書き換え可能不揮発性メモリの対応するゾーン内のいずれか１つのブロックの所定領域に保存され、
前記コピー手段は、前記メモリカードの立ち上げ時には、前記書き換え可能不揮発性メモリの前記各ゾーンのうち前記システム領域に割り当てられているゾーンを除くゾーンの少なくとも１つに保存されているアドレス変換テーブルと、前記システム領域に割り当てられているゾーンに保存されているアドレス変換テーブルとを、前記揮発性メモリの前記アドレス変換テーブル領域にコピーし、前記ヒット／ミスヒット判定手段により前記対応するアドレス変換テーブルが前記揮発性メモリ上に存在しないと判定された場合には、前記アドレス変換テーブル領域上の複数のアドレス変換テーブルのうち、前記システム領域に対応するアドレス変換テーブルを除くいずれか１つのアドレス変換テーブルを前記対応するアドレス変換テーブルの置き換え対象とすることを特徴とする請求項５記載のメモリカード。
【請求項１２】
前記揮発性メモリには、前記書き換え可能不揮発性メモリに保存されている前記複数のアドレス変換テーブルの当該不揮発性メモリ上の保存位置を示すポインタ情報が、当該アドレス変換テーブルに固有の、論理ブロックアドレスの前記所定フィールドの内容に対応付けて登録されるポインタテーブルを格納するためのポインタテーブル領域が確保されており、
前記書き換え可能不揮発性メモリ上の各ブロックは、当該メモリに対するアクセスの最小単位である一定サイズの複数のセクタであって、当該ブロックに割り当てられている論理ブロックアドレスが設定される論理ブロックアドレスフィールドと、当該ブロックの使用状態として、有効なアドレス変換テーブルの保存に用いられている第１の状態、無効化されたアドレス変換テーブルの保存に用いられている第２の状態、及びアドレス変換テーブル以外の有効なデータの保存に用いられている第３の状態を含む使用状態のいずれか１つを示すフラグ情報が設定されるフラグフィールドとを有する冗長部を備えた複数のセクタからなり、
前記メモリカードの立ち上げ時に、前記書き換え可能不揮発性メモリの各ゾーン毎に、当該ゾーン内の各ブロックを順次参照して、前記冗長部のフラグフィールドにより有効なアドレス変換テーブルの保存に用いられていることが示されているセクタを検出することで前記ポインタ情報を取得し、このゾーン毎に取得したポインタ情報が登録された前記ポインタテーブルを作成するポインタテーブル作成手段を更に具備し、
前記コピー手段は、前記ヒット／ミスヒット判定手段により前記対応するアドレス変換テーブルが前記揮発性メモリ上に存在しないと判定された場合、前記与えられた論理アドレス中の論理ブロックアドレスの前記所定フィールドの内容により前記ポインタテーブルを参照して対応するポインタ情報を取得し、当該ポインタ情報の示す前記書き換え可能不揮発性メモリ上の前記アドレス変換テーブルを前記揮発性メモリ上の前記アドレス変換テーブル領域にコピーすることを特徴とする請求項１１記載のメモリカード。
【請求項１３】
前記アドレス変換手段により参照された前記揮発性メモリ上の前記アドレス変換テーブルのエントリに物理アドレス情報が登録されていない場合、当該テーブルに対応する前記書き換え可能不揮発性メモリ上のアドレス変換テーブルが保存されているゾーンを対象に空きブロックを探して当該ブロックに前記与えられた論理アドレス中の論理ブロックアドレスを割り当てる割り当て手段と、
前記割り当て手段により論理ブロックアドレスが割り当てられたブロックの物理アドレス情報を、前記アドレス変換手段により参照された前記揮発性メモリ上の前記アドレス変換テーブルのエントリに書き込む物理アドレス登録手段と、
前記アドレス変換手段により参照された前記揮発性メモリ上の前記アドレス変換テーブルに対応する前記書き換え可能不揮発性メモリ上のアドレス変換テーブルが保存されているゾーンを対象に空きブロックを探して当該ブロック内の所定領域に前記物理アドレス登録手段による物理アドレス情報の書き込みがなされた前記アドレス変換テーブルを書き込むと共に当該アドレス変換テーブルが書き込まれた前記領域内の各セクタの冗長部のフラグフィールドに前記第１の状態を示すフラグ情報を設定し、且つ当該テーブルに対応する、前記書き換え可能不揮発性メモリ上の元の前記アドレス変換テーブルが保存されている（領域内の）各セクタの冗長部のフラグフィールドに、前記第２の状態を示すフラグ情報を設定するテーブル更新手段とを更に具備することを特徴とする請求項１２記載のメモリカード。
【請求項１４】
前記アドレス変換手段により変換された物理アドレスに基づいて前記書き換え可能不揮発性メモリに対する書き込みが行われた場合に、ブロックエラーの発生の有無を検出するブロックエラー検出手段と、
前記ブロックエラー検出手段によりブロックエラーの発生が検出された場合、前記アドレス変換手段により参照された前記揮発性メモリ上の前記アドレス変換テーブルに対応する前記書き換え可能不揮発性メモリ上のアドレス変換テーブルが保存されているゾーンを対象に空きブロックを探して当該ブロックに前記与えられた論理アドレス中の論理ブロックアドレスを割り当てて、当該ブロックの物理アドレス情報で、前記揮発性メモリ上の前記アドレス変換テーブルの参照エントリを更新するブロック代替手段とを更に具備し、
前記テーブル更新手段は、前記アドレス変換手段により参照された前記揮発性メモリ上の前記アドレス変換テーブルに対応する前記書き換え可能不揮発性メモリ上のアドレス変換テーブルが保存されているゾーンを対象に空きブロックを探して、当該ブロック内の所定領域に前記ブロック代替手段による参照エントリの更新がなされた前記アドレス変換テーブルを書き込むと共に、当該アドレス変換テーブルが書き込まれた前記領域内の各セクタの冗長部のフラグフィールドに前記第１の状態を示すフラグ情報を設定し、且つ当該テーブルに対応する、前記書き換え可能不揮発性メモリ上の元の前記アドレス変換テーブルが保存されている領域内の各セクタの冗長部のフラグフィールドに前記第２の状態を示すフラグ情報を設定することを特徴とする請求項１３記載のメモリカード。
【請求項１５】
前記書き換え可能不揮発性メモリの前記各ゾーン毎に、前記アドレス変換テーブルが保存されているブロックに当該アドレス変換テーブルと対をなして保存されているアサインテーブルであって、当該ゾーンの各ブロック毎に、そのブロックが使用されているか否かを示すフラグ情報の群からなるアサインテーブルを更に具備し、
前記揮発性メモリには、前記アドレス変換テーブル領域に格納される前記書き換え可能不揮発性メモリ上の前記複数のアドレス変換テーブルと対をなす前記アサインテーブルを格納するためのアサインテーブル領域が確保され、
前記割り当て手段と、前記テーブル更新手段と、前記ブロック代替手段とは、いずれも前記アドレス変換手段により参照された前記揮発性メモリ上の前記アドレス変換テーブルと対をなす当該揮発性メモリ上の前記アサインテーブルを一定方向に参照して前記空きブロックを探すことを特徴とする請求項１４記載のメモリカード。
【請求項１６】
前記各アサインテーブルには前記アサインテーブル内の参照位置を指定するポインタがそれぞれ付されており、
前記割り当て手段と、前記テーブル更新手段と、前記ブロック代替手段とは、前記アサインテーブルに付されている前記ポインタを一定方向に進めながら前記アサインテーブルを参照することを特徴とする請求項１５記載のメモリカード。
【請求項１７】
前記割り当て手段と、前記テーブル更新手段と、前記ブロック代替手段とは、前記揮発性メモリ上の前記アサインテーブルを参照して前記空きブロックを探した際に、当該アサインテーブルを更新し、
前記テーブル更新手段は、前記空きブロックに前記揮発性メモリ上の前記アドレス変換テーブルを書き込む際に、当該テーブルと対をなす前記揮発性メモリ上の前記アサインテーブルも前記空きブロックに書き込むことを特徴とする請求項１６記載のメモリカード。
【請求項１８】
電子機器本体に装着して用いられる、揮発性メモリ、コピー手段、アドレス変換手段及びアクセス手段を有するメモリカードであって、書き換え可能な不揮発性メモリを搭載したメモリカードに適用されるアドレス変換方法において、
前記書き換え可能不揮発性メモリをアクセスするために前記電子機器本体から前記メモリカードに与えられる論理アドレスを物理アドレスに変換するのに用いられる、それぞれ異なる論理アドレス範囲に対応付けられた複数のアドレス変換テーブルであって、前記書き換え可能不揮発性メモリに保存されている複数のアドレス変換テーブルのうちの、当該テーブルの総数より少ない数の複数のテーブルを、前記揮発性メモリ上に確保したアドレス変換テーブル領域に前記コピー手段が格納し、
前記電子機器本体から前記メモリカードに前記書き換え可能不揮発性メモリをアクセスするための論理アドレスが与えられた場合、前記アドレス変換手段が前記揮発性メモリ上の前記複数のアドレス変換テーブルの１つを利用して当該論理アドレスを物理アドレスに変換し、
前記変換された物理アドレスに基づき、前記アクセス手段が前記書き換え可能な不揮発性メモリに対してデータの書き込みまたは読み出しを行うことを特徴とするアドレス変換方法。
【請求項１９】
電子機器本体に装着して用いられる、揮発性メモリ、コピー手段、ヒット／ミスヒット判定手段、アドレス変換手段及びアクセス手段を有するメモリカードであって、論理アドレス中の論理ブロックアドレスの所定フィールドの内容が共通の前記論理アドレス範囲に含まれる、ブロックの群からなるゾーンを単位に管理され、前記ゾーンの１つはシステム管理情報が保存される管理領域を含むシステム領域に割り当てられる書き換え可能な不揮発性メモリを搭載したメモリカードに適用されるアドレス変換方法において、
論理アドレス中の論理ブロックアドレスにより指定可能な、当該論理ブロックアドレスが割り当てられるブロックの前記書き換え可能不揮発性メモリ上の保存位置を示す物理アドレス情報を登録するためのエントリの群を有し、前記論理ブロックアドレスの所定フィールドの内容が共通のブロック群を単位に用意されるアドレス変換テーブルであって、前記書き換え可能不揮発性メモリの対応するゾーン内のいずれか１つのブロックに保存されているアドレス変換テーブルのうち、前記システム領域に割り当てられているゾーンを除くゾーンの少なくとも１つに保存されているアドレス変換テーブルと、前記システム領域に割り当てられているゾーンに保存されているアドレス変換テーブルとを、前記揮発性メモリ上に確保したアドレス変換テーブル領域に前記コピー手段が格納し、
前記電子機器本体から前記メモリカードに前記書き換え可能不揮発性メモリをアクセスするための論理アドレスが与えられた場合に、当該論理アドレスの前記所定フィールドに対応する前記アドレス変換テーブルが前記揮発性メモリ上に存在するか否かを前記ヒット／ミスヒット判定手段が判定し、
前記対応するアドレス変換テーブルが前記揮発性メモリ上に存在しないと判定した場合、前記コピー手段が当該アドレス変換テーブルを前記書き換え可能不揮発性メモリから前記揮発性メモリ上の前記アドレス変換テーブル領域にコピーして、当該アドレス変換テーブルで前記アドレス変換テーブル領域上の複数のアドレス変換テーブルのうち、前記システム領域に対応するアドレス変換テーブルを除くいずれか１つのアドレス変換テーブルを置き換え、
しかる後に前記アドレス変換手段が、前記与えられた論理アドレス中の論理ブロックアドレスにより前記揮発性メモリ上の前記コピーされたアドレス変換テーブルの対応するエントリを参照することで、前記与えられた論理アドレスを対応する物理アドレスに変換し、
前記対応するアドレス変換テーブルが前記揮発性メモリ上に存在すると判定した場合には、前記アドレス変換手段が、前記与えられた論理アドレス中の論理ブロックアドレスにより当該揮発性メモリ上に存在する前記アドレス変換テーブルの対応するエントリを参照することで、前記与えられた論理アドレスを対応する物理アドレスに変換し、
前記変換された物理アドレスに基づき、前記アクセス手段が前記書き換え可能な不揮発性メモリに対してデータの書き込みまたは読み出しを行うことを特徴とするアドレス変換方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、書き換え可能な不揮発性メモリを搭載したメモリカードに係り、特に当該不揮発性メモリをアクセスするために与えられた論理アドレスを物理アドレスに変換するアドレス変換機構を備えたメモリカード及び同カードに適用されるアドレス変換方法に関する。
【０００２】
【従来の技術】
近年、画像データや音楽データに代表される種々のデジタル情報を保存する記憶装置として、電源がオフされても保存情報が消失する虞のない書き換え可能な不揮発性メモリを搭載したメモリカードが広まってきている。
【０００３】
書き換え可能な不揮発性メモリの代表的なものにＮＡＮＤ型フフラッシュメモリがある。この種のフラッシュメモリはブロック単位で管理される。つまり、情報の消去（一般には、全ビットが“１”のデータ、つまりオール“１”データを書き込む動作）はブロック単位で行われる。また、各ブロックには、論理ブロックアドレスが割り当てられる。各ブロックは複数のセクタからなる。このセクタは、フラッシュメモリでの読み出し／書き込みの最小単位であり、例えば５１２バイトからなる。各セクタはデータ部とは別に冗長部を有している。この冗長部の所定フィールドには、対応するセクタが属するブロックに割り当てられている論理ブロックアドレスが登録されている。
【０００４】
フラッシュメモリ（書き換え可能な不揮発性メモリ）をアクセスするには、論理アドレスを当該メモリの物理アドレスに変換するためのアドレス変換テーブル（アドレス変換機構）が必要となる。このアドレス変換が必要な理由は、フラッシュメモリに欠陥ブロックが発生して、別の空きブロックに代替しても、そのことをホスト側で意識することなく、代替の有無に無関係に同一の論理アドレスでアクセスできるようにするためである。
【０００５】
上記アドレス変換テーブルのエントリ数はフラッシュメモリのブロック数に一致し、１セクタが５１２バイト、つまり０．５ＫＢ（キロバイト）で、且つ１ブロックが３２セクタ、つまり１６ＫＢの１６ＭＢ（メガバイト）フラッシュメモリを用いた場合を例にとると、１６ＭＢ／１６ＫＢ＝１Ｋ＝１，０２４となる。アドレス変換テーブルは一般に揮発性メモリとしてのＲＡＭ上に確保された領域（ＲＡＭ領域）に格納して用いられる。したがって上記の例では、１エントリ２バイトとすると、アドレス変換テーブルを格納するのに必要なＲＡＭ領域は２ＫＢとなる。
【０００６】
一方、最近は、半導体製造技術の進歩によりフラッシュメモリの記憶容量も増加しており、ブロック数が２，０４８、１ブロックが１６ＫＢの３２ＭＢフラッシュメモリ、或いはブロック数が４，０９６、１ブロックが１６ＫＢの６４ＭＢフラッシュメモリも出現している。
【０００７】
ところが、フラッシュメモリの記憶容量が増加すると、アドレス変換テーブルを保持するためのＲＡＭ領域も大きくしなければならない。例えば、３２ＭＢフラッシュメモリの場合には４ＫＢ、６４ＭＢフラッシュメモリの場合には８ＫＢのＲＡＭ領域がアドレス変換テーブル用に必要となる。つまり、１６ＭＢフラッシュメモリの場合のそれぞれ２倍、４倍といったＲＡＭ領域を必要とする。
【０００８】
【発明が解決しようとする課題】
上記したように、フラッシュメモリに代表される書き換え可能な不揮発性メモリを搭載した従来のメモリカードでは、当該メモリの記憶容量が増加すると、当該メモリをアクセスするために与えられる論理アドレスを当該ブロックの物理アドレスに変換するためのアドレス変換テーブルを保持するのに必要な、ＲＡＭに代表される揮発性メモリの領域も大きくしなければならなかった。
【０００９】
本発明は上記事情を考慮してなされたものでその目的は、書き換え可能な不揮発性メモリの記憶容量が増加してもアドレス変換テーブル用の揮発性メモリ領域を増加させずに済み、しかも書き換え可能不揮発性メモリをアクセスするために与えられた論理アドレスに対応するアドレス変換テーブルが揮発性メモリ上に存在しないテーブルミスの発生頻度を少なくできるメモリカード及び同カードに適用されるアドレス変換方法を提供することにある。
【００１０】
本発明の他の目的は、システム領域に対応するアドレス変換テーブルのみ揮発性メモリに常駐させることにより、書き換え可能不揮発性メモリの記憶容量が増加しても揮発性メモリの容量が増加するのを抑えながら、頻繁にアクセスされるシステム領域へのアクセス要求に対しては常にテーブルミスの発生を抑えて高速アドレス変換を実現できるメモリカード及び同カードに適用されるアドレス変換方法を提供することにある。
【００１１】
【課題を解決するための手段】
本発明に係る、書き換え可能な不揮発性メモリを搭載したメモリカードは、上記書き換え可能不揮発性メモリをアクセスするために与えられる論理アドレスを物理アドレスに変換するのに用いられる複数のアドレス変換テーブルであって、上記書き換え可能不揮発性メモリに保存される複数のアドレス変換テーブルと、上記書き換え可能不揮発性メモリ上の上記複数のアドレス変換テーブルのうち当該テーブルの総数より少ない数の複数のテーブルを格納するためのアドレス変換テーブル領域が確保される揮発性メモリと、上記書き換え可能不揮発性メモリをアクセスするための論理アドレスが与えられた場合に、当該論理アドレスを物理アドレスに変換するアドレス変換手段とを備える。上記複数のアドレス変換テーブルは、それぞれ異なる論理アドレス範囲に対応付けて用意されている。アドレス変換手段は、書き換え可能不揮発性メモリをアクセスするための論理アドレスが与えられた場合、上記揮発性メモリ上の、当該論理アドレスに対応する上記アドレス変換テーブル、を利用して当該論理アドレスを物理アドレスに変換する。
【００１２】
このような構成のメモリカードでは、書き換え可能不揮発性メモリをアクセスするための論理アドレスが与えられた場合、揮発性メモリ上の、当該論理アドレスに対応するアドレス変換テーブル、を利用して当該論理アドレスを物理アドレスに変換するアドレス変換が行われる。
【００１３】
このように本発明においては、書き換え可能不揮発性メモリ上のアドレス変換テーブルの全数ではなくて、その一部の複数のテーブルだけが揮発性メモリ上に置かれて、当該揮発性メモリ上のアドレス変換テーブルが論理アドレスから物理アドレスへのアドレス変換に用いられる。このため、全アドレス変換テーブルを揮発性メモリ上に置く場合と異なり、書き換え可能不揮発性メモリの容量が大きくなっても、揮発性メモリの記憶容量の増加を抑えることが可能となる。
【００１４】
ここで、揮発性メモリ上に置かれているアドレス変換テーブルが、与えられた論理アドレスの属する論理アドレス範囲に対応したアドレス変換テーブルではない場合には、アドレス変換は行えない。そこで本発明に係るメモリカードは、書き換え可能不揮発性メモリをアクセスするための論理アドレスが与えられた場合、当該論理アドレスが属する論理アドレス範囲に対応するアドレス変換テーブルが上記揮発性メモリ上に存在するか否かを判定するヒット／ミスヒット判定手段と、このヒット／ミスヒット判定手段により上記対応するアドレス変換テーブルが上記揮発性メモリ上に存在しないと判定された場合、当該アドレス変換テーブルを書き換え可能不揮発性メモリから揮発性メモリ上のアドレス変換テーブル領域にコピーして、当該アドレス変換テーブルで上記アドレス変換テーブル領域上の元のアドレス変換テーブルを置き換えるコピー手段とを更に備える。
【００１５】
このような構成のメモリカードでは、与えられた論理アドレスを物理アドレスに変換するのに必要なアドレス変換テーブルが上記テーブル領域に存在しない（ミスヒットの）場合には、当該テーブルが書き換え可能不揮発性メモリから上記テーブル領域に直ちにコピーされて、当該テーブルで上記アドレス変換テーブル領域上の元のアドレス変換テーブルが置き換えられる。このためテーブルミス時にも、与えられた論理アドレスから物理アドレスへの変換が速やかに行える。ところで、ホストシステムからの要求でフラッシュメモリ１５から映像データや音声データを連続的に読み出す（再生する）場合、ホストシステムから与えられる論理アドレスは連続しているのが一般的である。したがって、この種のデータ読み出しでアドレス変換テーブルの置き換えが頻繁に発生する虞はなく、上記テーブル領域にコピーされたアドレス変換テーブルに対応する論理アドレス範囲に属する論理アドレスに対し、当該テーブルを利用して速やかに物理アドレスに変換することが可能となる。
【００１６】
ここで、本発明の上記構成の有用性を理解しやすくするために、本発明とは異なって、上記各アドレス変換テーブルを書き換え可能不揮発性メモリに用意せずに、必要なアドレス変換テーブルを、逐次作成して上記テーブル領域に保持する構成をとる場合について考えてみる。この場合、上記テーブル領域上に目的のアドレス変換に必要なテーブルが存在しないミスヒット時は、当該必要なテーブルを改めて作成しなければならない。したがって、映像データや音声データの読み出しの場合のようにリアルタイム性が要求される場合には問題となる。つまり、テーブルミス時のペナルティが大きい。これを避けるため、全テーブルを上記テーブル領域に保持することも考えられるが、揮発性メモリの記憶容量の大幅な増加を招く。これに対して本発明では、全てのアドレス変換テーブルが書き換え可能不揮発性メモリに用意されているため、テーブルミスが発生しても、必要なアドレス変換テーブルを書き換え可能不揮発性メモリから揮発性メモリの上記テーブル領域にコピーするだけで速やかにアドレス変換処理を行うことができ、テーブルミス時のペナルティが小さくて済む。したがって本発明においては、小容量の揮発性メモリを用いても、つまり十分な大きさのテーブル領域が確保できなくても、テーブルミス時のペナルティを小さくすることが可能となり、リアルタイム用途に適用できる。なお、本発明では、書き換え可能不揮発性メモリ上に全てのアドレス変換テーブルを保存するための領域を確保する必要があるが、書き換え可能不揮発性メモリの容量は揮発性メモリの容量に比べて極めて大きいため、当該揮発性メモリ上に全テーブルを置く構成と異なって問題とならない。
【００１７】
ここで、上記書き換え可能不揮発性メモリが、一般に固有の論理ブロックアドレスが割り当てられる複数のブロックからなることを考慮するならば、上記複数のアドレス変換テーブル、上記ヒット／ミスヒット判定手段、及び上記アドレス変換手段を次のように構成するとよい。まず、上記複数のアドレス変換テーブルを、論理アドレス中の論理ブロックアドレスの所定フィールドの内容が共通の上記論理アドレス範囲に含まれる、上記書き換え可能不揮発性メモリ上のブロックの群、を単位に用意する。また各アドレス変換テーブルに、論理ブロックアドレスの所定フィールドの内容が共通のブロックの群と同数の、当該ブロックに割り当てられる論理ブロックアドレスにより指定可能なエントリの群であって、当該ブロックの上記書き換え可能不揮発性メモリ上の位置を示す物理アドレス情報を登録するためのエントリの群を持たせる。次に、上記ヒット／ミスヒット判定手段には、上記与えられた論理アドレスが属する論理アドレス範囲を、当該論理アドレス中の論理ブロックアドレスの上記所定フィールドの内容の示す論理アドレス範囲として、この論理アドレス範囲に対応する上記アドレス変換テーブルが上記揮発性メモリ上に存在するか否かを判定する機能を持たせる。そして上記アドレス変換手段には、上記ヒット／ミスヒット判定手段により上記対応するアドレス変換テーブルが上記揮発性メモリ上に存在すると判定された場合は直ちに、存在しないと判定された場合には、当該アドレス変換テーブルが上記コピー手段により上記揮発性メモリにコピーされるのを待って、いずれも上記与えられた論理アドレス中の論理ブロックアドレスにより当該揮発性メモリ上の上記アドレス変換テーブルの対応するエントリを参照することで、上記与えられた論理アドレスを対応する物理アドレスに変換する機能を持たせる。
【００１８】
ここで、上記各アドレス変換テーブルの各エントリの内容を予め設定せずに、最初は各アドレス変換テーブルの枠組だけを用意して、その後、必要に応じてエントリの内容を設定する構成を適用するとよい。この構成では、物理アドレス登録手段を設け、上記アドレス変換手段により参照された、アドレス変換テーブルのエントリ、に物理アドレス情報が登録されていない場合に、上記物理アドレス登録手段が、書き換え可能不揮発性メモリ上の空きブロックを探して当該ブロックに要求された論理アドレス中の論理ブロックアドレスを割り当てて、当該ブロックの物理アドレス情報を、上記参照エントリと、書き換え可能不揮発性メモリ上の対応するアドレス変換テーブルのエントリとに書き込む。これにより、使用される可能性の少ないブロックに対応するアドレス変換テーブル内エントリの情報までも予め登録する無駄をなくすことができる。
【００１９】
また、上記アドレス変換手段により変換された物理アドレスを用いて書き換え可能不揮発性メモリに対する書き込みを行った結果ブロックエラーが発生した場合に対応可能なように、次のブロック代替手段を追加する。このブロック代替手段は、ブロックエラー時には、書き換え可能不揮発性メモリ上の空きブロックを探して、当該ブロックに、上記与えられた論理アドレス中の論理ブロックアドレスを割り当てる。そしてブロック代替手段は、当該ブロックの物理アドレス情報で、上記参照エントリと、書き換え可能不揮発性メモリ上の対応するアドレス変換テーブルのエントリを更新する。これにより、書き込み時にブロックエラーが発生しても、確実にブロック代替処理を行うことが可能となる。
【００２０】
また、上記揮発性メモリに、上記書き換え可能不揮発性メモリに保存されている上記複数のアドレス変換テーブルの当該不揮発性メモリ上の保存位置を示すポインタ情報が、当該アドレス変換テーブルに固有の、論理ブロックアドレスの上記所定フィールドの内容に対応付けて登録されるポインタテーブルを格納するためのポインタテーブル領域を確保し、上記コピー手段に次の機能、即ち上記ヒット／ミスヒット判定手段により上記対応するアドレス変換テーブルが上記揮発性メモリ上に存在しないと判定された場合、上記与えられた論理アドレス中の論理ブロックアドレスの上記所定フィールドの内容により上記ポインタテーブルを参照して対応するポインタ情報を取得し、当該ポインタ情報の示す上記書き換え可能不揮発性メモリ上のアドレス変換テーブルを上記揮発性メモリ上のアドレス変換テーブル領域にコピーする機能を持たせるとよい。また、上記メモリカードの立ち上げ時に、上記ポインタテーブルを作成して上記揮発性メモリの上記ポインタテーブル領域に格納するポインタテーブル作成手段を追加するとよい。
このようにすると、アドレス変換テーブルのコピー処理が高速に行える。
【００２１】
ここで、上記書き換え可能不揮発性メモリが、論理アドレス中の論理ブロックアドレスの上記所定フィールドの内容が共通の論理アドレス範囲に含まれる、ブロックの群からなるゾーンを単位に管理され、上記ゾーンの１つが、システム管理情報を保存する管理領域を含むシステム領域に割り当てられ、上記各アドレス変換テーブルが、上記書き換え可能不揮発性メモリの対応するゾーン内のいずれか１つのブロックの所定領域に保存される構成として、上記コピー手段に次の機能、即ち上記メモリカードの立ち上げ時に、上記書き換え可能不揮発性メモリの上記各ゾーンのうち上記システム領域に割り当てられているゾーンを除くゾーンの少なくとも１つに保存されているアドレス変換テーブルと、上記システム領域に割り当てられているゾーンに保存されているアドレス変換テーブルとを、上記揮発性メモリの上記アドレス変換テーブル領域にコピーし、上記ヒット／ミスヒット判定手段により上記対応するアドレス変換テーブルが上記揮発性メモリ上に存在しないと判定された場合には、上記アドレス変換テーブル領域上の複数のアドレス変換テーブルのうち、上記システム領域に対応するアドレス変換テーブルを除くいずれか１つのアドレス変換テーブルを上記対応するアドレス変換テーブルの置き換え対象とする機能を持たせるとよい。
【００２２】
このようにすると、システム領域に対応するアドレス変換テーブルを揮発性メモリに常駐させることができるため、書き換え可能不揮発性メモリの記憶容量が増加しても揮発性メモリの容量が増加するのを抑えながら、頻繁にアクセスされるシステム領域へのアクセス要求に対しては常にテーブルミスの発生を抑えて高速アドレス変換を実現できる。また、システム領域以外の領域へのアクセス要求に対しては、テーブルミス時のペナルティを最小限に抑えてリアルタイム用途に対応することができる。
【００２３】
また、書き換え可能不揮発性メモリをゾーン単位に管理する構成では、当該不揮発性メモリ上の各ブロックが、当該メモリに対するアクセスの最小単位である一定サイズの複数のセクタであって、当該ブロックに割り当てられている論理ブロックアドレスが設定される論理ブロックアドレスフィールドと、当該セクタの使用状態として、有効なアドレス変換テーブルの保存に用いられている第１の状態、無効化されたアドレス変換テーブルの保存に用いられている第２の状態、及びアドレス変換テーブル以外の有効なデータの保存に用いられている第３の状態を含む使用状態のいずれか１つを示すフラグ情報が設定されるフラグフィールドとを有する冗長部を備えた複数のセクタからなる構成とするならば、上記ポインタテーブル作成手段では、メモリカードの立ち上げ時に、上記書き換え可能不揮発性メモリの各ゾーン毎に、当該ゾーン内の各ブロックを順次参照して、上記冗長部のフラグフィールドにより第１の状態が示されているセクタ、即ち有効なアドレス変換テーブルの保存に用いられていることが示されているセクタを検出することで、上記ポインタ情報を取得して、このゾーン毎に取得したポインタ情報が登録された上記ポインタテーブルを簡単に作成することが可能となる。
【００２４】
また書き換え可能不揮発性メモリをゾーン単位に管理する構成では、上記アドレス変換手段により参照された上記揮発性メモリ上の上記アドレス変換テーブルのエントリに物理アドレス情報が登録されていない場合、当該テーブルに対応する上記書き換え可能不揮発性メモリ上のアドレス変換テーブルが保存されているゾーンを対象に空きブロックを探して当該ブロックに上記与えられた論理アドレス中の論理ブロックアドレスを割り当てる割り当て手段と、この割り当て手段により論理ブロックアドレスが割り当てられたブロックの物理アドレス情報を、上記アドレス変換手段により参照された上記揮発性メモリ上の上記アドレス変換テーブルのエントリに書き込む物理アドレス登録手段と、上記アドレス変換手段により参照された上記揮発性メモリ上の上記アドレス変換テーブルに対応する上記書き換え可能不揮発性メモリ上のアドレス変換テーブルが保存されているゾーンを対象に空きブロックを探して当該ブロック内の所定領域に上記物理アドレス登録手段による物理アドレス情報の書き込みがなされた上記アドレス変換テーブルを書き込むと共に当該アドレス変換テーブルが書き込まれた上記所定領域内の各セクタの冗長部のフラグフィールドに上記第１の状態を示すフラグ情報を設定し、且つ当該テーブルに対応する、上記書き換え可能不揮発性メモリ上の元の上記アドレス変換テーブルが保存されている領域内の各セクタの冗長部のフラグフィールドに上記第２の状態を示すフラグ情報を設定するテーブル更新手段とを追加するならば、同一ブロックへの書き込みが集中するのを防止できる。
【００２５】
また、上記アドレス変換手段により変換された物理アドレスに基づいて上記書き換え可能不揮発性メモリに対する書き込みが行われた場合に、ブロックエラーの発生の有無を検出するブロックエラー検出手段と、このブロックエラー検出手段によりブロックエラーの発生が検出された場合、上記アドレス変換手段により参照された上記揮発性メモリ上の上記アドレス変換テーブルに対応する上記書き換え可能不揮発性メモリ上のアドレス変換テーブルが保存されているゾーンを対象に空きブロックを探して当該ブロックに上記与えられた論理アドレス中の論理ブロックアドレスを割り当てて、当該ブロックの物理アドレス情報で、上記揮発性メモリ上の上記アドレス変換テーブルの参照エントリを更新するブロック代替手段とを追加し、上記テーブル更新手段では、上記アドレス変換手段により参照された上記揮発性メモリ上の上記アドレス変換テーブルに対応する上記書き換え可能不揮発性メモリ上のアドレス変換テーブルが保存されているゾーンを対象に空きブロックを探して、当該ブロック内の所定領域に上記ブロック代替手段による参照エントリの更新がなされた上記アドレス変換テーブルを書き込むと共に、当該アドレス変換テーブルが書き込まれた上記領域内の各セクタの冗長部のフラグフィールドに上記第１の状態を示すフラグ情報を設定し、且つ当該テーブルに対応する、上記書き換え可能不揮発性メモリ上の元の上記アドレス変換テーブルが保存されている領域内の各セクタの冗長部のフラグフィールドに上記第２の状態を示すフラグ情報を設定する構成とするならば、同一ブロックへの書き込みが集中するのを防止できる。
【００２６】
特に、書き換え可能不揮発性メモリの上記各ゾーン毎に、上記アドレス変換テーブルが保存されているブロックに当該アドレス変換テーブルと対をなして保存されているアサインテーブルであって、当該ゾーンの各ブロック毎に、そのブロックが使用されているか否かを示すフラグ情報の群からなるアサインテーブルを用意すると共に、上記揮発性メモリに、上記アドレス変換テーブル領域に格納される上記書き換え可能不揮発性メモリ上の上記複数のアドレス変換テーブルと対をなす上記アサインテーブルを格納するためのアサインテーブル領域を確保し、上記割り当て手段と上記テーブル更新手段と上記ブロック代替手段とが、上記揮発性メモリ上の上記アサインテーブルを一定方向に参照して上記空きブロックを探す構成とするならば、同一ゾーン内の各ブロックへの書き込み頻度を均一化できる。ここで、上記割り当て手段と上記テーブル更新手段と上記ブロック代替手段とは、上記揮発性メモリ上の上記アサインテーブルを参照して上記空きブロックを探した際に、当該アサインテーブルを更新し、上記テーブル更新手段は、上記空きブロックに上記揮発性メモリ上の上記アドレス変換テーブルの内容を書き込む際に、当該テーブルと対をなす上記揮発性メモリ上の上記アサインテーブルの内容も上記空きブロックに書き込むとよい。
【００２７】
なお、以上の装置（メモリカード）に係る本発明は方法（アドレス変換方法）に係る発明としても成立する。
【００２８】
【発明の実施の形態】
以下、本発明の実施の形態につき図面を参照して説明する。
図１は本発明の一実施形態に係るメモリカードの全体構成を示すブロック図である。
【００２９】
図１のメモリカードは、パーソナルコンピュータ、電子カメラ、ゲーム機を始めとする各種電子機器に装着して使用されるもので、ホストインタフェース１１と、コントローラ１２と、ＲＯＭ１３と、ＲＡＭ１４と、フラッシュメモリ１５とを備えている。
【００３０】
ホストインタフェース１１は、上記メモリカードが装着される電子機器本体（以下、ホストシステムと称する）とのインタフェースをなす。コントローラ１２は、カード全体の制御を司る。コントローラ１２は、マイクロプロセッサ（ＭＰＵ）１２１と、後述するレジスタ（ＲＥＧ）１２２とを有している。マイクロプロセッサ１２１は、ホストインタフェース１１を介して受信されるコマンドをＲＯＭ１３に格納されている制御プログラム（ファームウェア）に従って解釈して実行する。
【００３１】
ＲＯＭ１３は、読み出し専用の不揮発性メモリである。ＲＯＭ１３は、上記制御プログラム、及び管理用の固定データ等を予め格納するのに用いられる。ＲＡＭ１４は揮発性メモリである。ＲＡＭ１４は、コントローラ１２（内のマイクロプロセッサ１２１）の作業用領域（図示せず）の他、後述するＬＴＰａ１５１を格納するためのＬＴＰａ領域１４１、後述する２m個のＬＴＰｂ１５２-i（ｉ＝０〜２m−１、ここではｍ＝２）のうち、ＬＴＰｂ１５２-0を除くＬＴＰｂ１５２-iのいずれか１つを格納するためのＬＴＰｂ領域１４２、ＬＴＰｂ１５２-0を格納するためのＬＴＰｂ領域１４３、ＬＴＰｂ領域１４２に格納されるＬＴＰｂ１５２-iと対をなす後述するＡＴ１５５-iを格納するためのＡＴ領域１４４、及びＬＴＰｂ領域１４３に格納されるＬＴＰｂ１５２-0と対をなすＡＴ１５５-0を格納するためのＡＴ領域１４５等を提供する。ここではＬＴＰｂ領域１４２，１４３のサイズは２ＫＢである。
【００３２】
フラッシュメモリ１５は、書き換え可能な不揮発性メモリ、例えばＮＡＮＤフラッシュメモリである。フラッシュメモリ１５の領域は、図２（ａ）に示すように一定サイズの複数のブロックから構成される。このブロックはデータ消去の単位であり、当該ブロックを単位に論理アドレス（Logical Address；ＬＡ）中の論理ブロックアドレス（ＬＢＡ）が割り当てられる。つまり、フラッシュメモリ１５はブロックを単位に管理される。
【００３３】
フラッシュメモリ１５の各ブロックは、図２（ｂ）に示すように、一定サイズの複数のセクタから構成される。セクタは、フラッシュメモリ１５に対するデータの書き込み／読み出しの最小単位である。但し、ホストシステムから要求されたデータ書き込み対象領域が属するブロックに既にデータが書き込まれている場合には、一旦当該ブロックのデータを読み出して該当部分を書き込みデータで置き換え、その置き換え後のブロックデータを例えば別のブロックに書き込む動作（リード・ベリファイ・ライト動作）、つまりブロック単位のデータ書き込みが行われる。
【００３４】
また、フラッシュメモリ１５の領域は、上記の如くブロック単位で管理される他に、論理アドレス中の論理ブロックアドレスの所定フィールドの内容が共通の上記論理アドレス範囲に含まれる、ブロックの群からなるゾーン１５４-i（ｉ＝０〜２m−１、ここではｍ＝２）を単位としても管理される。このゾーン１５４-iの総数２mは、ＬＴＰｂ１５２-iの総数に一致する。各ゾーン１５４-iの１つ、例えばゾーン１５４-0は、システム管理情報等が保存される管理領域１５３を含むシステム領域に割り当てられている。フラッシュメモリ１５の管理領域１５３を除く領域は、画像データ、音楽データ等のデジタルコンテンツを保存するためのデータ領域として用いられる。管理領域１５３には、データ領域に保存されているディジタルコンテンツを使用するのに必要な、コンテンツ復号キー、コピー制御情報、移動制御情報等の重要な情報が保存されている。このため本実施形態では、管理領域１５３は、秘匿された特定手続にてのみアクセスでき、ホストシステム（ユーザ）からはアクセスできない。
【００３５】
本実施形態では、フラッシュメモリ１５の各ブロックは、図２（ｂ）のように、セクタアドレスが０〜３１のセクタ、つまりセクタ０〜３１の３２個のセクタから構成される。また、各セクタは５１２バイトから構成される。したがって本実施形態では、１ブロックは１６ＫＢから構成される。この場合、論理アドレス（ＬＡ）が３２ビットで構成されるものとすると、図３に示すように、論理アドレスの下位側の１４ビットを除く残り１８ビット、即ち論理アドレスの上位側の１８ビットは、該当するブロックに割り当てられている論理ブロックアドレス（以下、１８ビット論理ブロックアドレスと称する）３１を表す。また、１８ビット論理ブロックアドレス３１の下位側に続く５ビットは、当該論理ブロックアドレス３１で指定されるブロック内のセクタの位置を示すセクタアドレス３２を表す。また、残りの９ビット、つまり論理アドレスの下位側の９ビットは、セクタアドレス３２で指定されるセクタ内のバイトデータの位置を示すセクタ内アドレス３３を表す。但し本実施形態では、上記１８ビット論理ブロックアドレス３１の上位４ビットを除く残り１４ビット、を実質的な論理ブロックアドレス（以下、１４ビット論理ブロックアドレスと称する）３４として用いるようにしている。その理由は次の通りである。
【００３６】
まず、本実施形態で適用可能なメモリカードは、フラッシュメモリ１５の最大容量を２５６ＭＢに制限している。この場合、フラッシュメモリ１５をアクセスするための３２ビットの論理アドレスの上位４ビット、つまり１８ビット論理ブロックアドレス３１の上位４ビットは常に“０”となる。したがって、１８ビット論理ブロックアドレス３１の上位４ビットを除く残り１４ビット、つまり１４ビット論理ブロックアドレス３４だけでブロック指定が可能となるためである。
【００３７】
さて本実施形態では、フラッシュメモリ１５に６４ＭＢフラッシュメモリを使用しているものとする。この場合、フラッシュメモリ１５のブロック数は、上記したように１ブロックが１６ＫＢであることから、６４ＭＢ／１６ＫＢ＝４Ｋ＝４，０９６となる。
【００３８】
フラッシュメモリ１５の２m個のゾーン１５４-iには、当該ゾーン１５４-iを構成する各ブロックに割り当てられる論理ブロックアドレス（ＬＢＡ）を当該ブロックの物理ブロックアドレス（ＰＢＡ）に変換するためのアドレス変換テーブルとしてのＬＴＰｂ１５２-i（ｉ＝０〜２m−１）が予め保存されている。この２m個のＬＴＰｂ１５２-iのうち、管理領域１５３を含むゾーン１５４-0、即ちシステム領域に保存されているＬＴＰｂ１５２-i、つまりＬＴＰｂ１５２-0は、上記したようにＲＡＭ１４のＬＴＰｂ領域１４３にも格納される。また、ＬＴＰｂ１５２-0を除く（２m−１）個のＬＴＰｂ１５２-iのいずれか１つは、上記したようにＲＡＭ１４のＬＴＰｂ領域１４２にも格納される。
【００３９】
２m個のＬＴＰｂ１５２-iの総エントリ数は、フラッシュメモリ１５の総ブロック数に一致し、当該フラッシュメモリ１５が６４ＭＢの例では４Ｋ（４，０９６）である。また、１つのＬＴＰｂ１５２-iのサイズは、ＲＡＭ１４上に確保可能なＬＴＰｂ領域１４２，１４３のサイズに等しい。ここでは、ＬＴＰｂ領域１４２，１４３のサイズは２ＫＢである。したがって、ＬＴＰｂ１５２-iの１エントリのサイズを２バイトとすると、２ＫＢのＬＴＰｂ領域１４２，１４３に格納可能なＬＴＰｂ１５２-iのエントリ数は、２ＫＢ／２バイト＝１Ｋ（＝１，０２４）である。ゾーン１５４-iを構成するブロックの数は、このＬＴＰｂ１５２-iのエントリ数１Ｋ（＝１，０２４）に一致する。また、ＬＴＰｂ１５２-iの数（２m）は、フラッシュメモリ１５のブロック数が４Ｋ（＝４，０９６）の本実施形態では、４Ｋ／１Ｋ＝４（ｍ＝２）となる。つまり本実施形態では、図１に示すように、４つのＬＴＰｂ１５２-0〜１５２-3がフラッシュメモリ１５のゾーン１５４-0〜１５４-3に分散して保存される。そしてＬＴＰｂ１５２-i（ｉ＝０〜３）は、図２（ｃ）に示すように、ゾーン１５４-i内の１，０２４個のブロック（ブロック０〜１０２３）のうちのいずれか１つのブロックｊの所定領域、例えば先頭領域に保存される。
【００４０】
ここでＬＴＰｂ１５２-iのエントリ数とエントリ内容について述べる。
ＬＴＰｂ１５２-iのエントリ数は、フラッシュメモリ１５の最大容量を２５６ＭＢに制限している本実施形態では、１８ビット論理ブロックアドレス３１の上位８ビット（１４ビット論理ブロックアドレス３４の上位４ビット）の値がｉとなるブロックの数、即ち２10＝１，０２４個に一致する。よって各ＬＴＰｂ１５２-i（ｉ＝０〜３）は、エントリ０〜１０２３の１，０２４個のエントリを有する。このＬＴＰｂ１５２-iの１，０２４個のエントリ（エントリ０〜１０２３）の各々には、それぞれ対応するブロックについて、そのブロックのフラッシュメモリ１５上の位置を示す物理アドレス情報、例えば物理アドレス（Physical Address；ＰＡ）中の物理ブロックアドレス、が該当する論理ブロックアドレスに対応付けて設定される。このエントリに設定される物理ブロックアドレスは、物理アドレスのうちの、セクタアドレスとセクタ内アドレスとを除く部分であり、ブロックを指し示すためのポインタ（ブロックポインタ）として用いられる。
【００４１】
以上のＬＴＰｂ１５２-iを用いることで、論理アドレス（ＬＡ）を、当該論理アドレス（ＬＡ）に対応するフラッシュメモリ１５の物理アドレス（ＰＡ）に変換すること（Logical address To Physical address translation；ＬＴＰ）ができる。具体的には、論理アドレス（ＬＡ）中の１４ビット論理ブロックアドレス（ＬＢＡ）３４によりＬＴＰｂ１５２-iを参照することで、図３に示すように、当該論理ブロックアドレス３４をＬＴＰｂ１５２-i内の対応するエントリに登録されている物理ブロックアドレス（ＰＢＡ）３５に変換する。そして、この物理ブロックアドレス３５の下位側に上記論理アドレス中の下位１４ビット（セクタアドレス３２とセクタ内アドレス３３とからなる１４ビット）を連結することで、上記論理アドレスに対応する物理アドレス（ＰＡ）を取得する。
【００４２】
次にＬＴＰａ１５１のエントリ数とエントリ内容について述べる。ＬＴＰａ１５１のエントリ数は、フラッシュメモリ１５に保存されているＬＴＰｂ１５２-iの個数、即ち２m個に一致する。ＬＴＰａ１５１の２m個のエントリ（エントリ０〜２m−１）の各々には、フラッシュメモリ１５に保存されている２m個のＬＴＰｂ１５２-iの各開始位置の、当該フラッシュメモリ１５上の物理アドレスが、それぞれ該当するｉの値に対応付けて設定される。このＬＴＰｂ１５２-i内のエントリに設定される物理アドレスは、対応するＬＴＰｂ１５２-iを指し示すためのポインタ（ＬＴＰｂポインタ）として用いられる。本実施形態において、ＬＴＰａ１５１のエントリの数は、ＬＴＰｂ１５２-iの個数が２m＝４の例では４である。したがって、ＬＴＰａ１５１のエントリは、上記１４ビット論理ブロックアドレス３４の上位４ビット中の下位側の２ビットで参照可能である。但し本実施形態では、１４ビット論理ブロックアドレス３４の上位４ビットの値によりＬＴＰａ１５１のエントリを参照する。その理由は、フラッシュメモリ１５の最大容量を２５６ＭＢに制限し、ＬＴＰｂ領域１４２を２ＫＢとした場合、ＬＴＰｂ１５２-iの個数が最大１６となり得ることを考慮したためである。つまり、１４ビット論理ブロックアドレス３４の上位４ビットの値によりＬＴＰａ１５１のエントリを参照するならば、フラッシュメモリ１５の容量が２５６ＭＢになっても、６４ＭＢの場合と同様の手続きでＬＴＰａ１５１が参照できるようにしたためである。このＬＴＰａ１５１を用いることで、論理アドレス（ＬＡ）を物理アドレス（ＰＡ）に変換するのに必要なＬＴＰｂ１５２-iの、フラッシュメモリ１５上の保存位置の情報を取得できる。
【００４３】
さて、上記ブロック内の各セクタ（セクタ０〜３１）には、図２（ｂ）に示すように、データ部２０の他に冗長部２１が設けられている。この冗長部２１は、エラー訂正符号（ＥＣＣ）が設定されるフィールド（図示せず）の他に、該当するセクタが属するブロックに割り当てられた論理ブロックアドレス（ＬＢＡ）が設定されるフィールド（ＬＢＡフィールド）２２と、２種のフラグＦａ，Ｆｂが設定されるフラグフィールド２３とを含む。フラグＦａ，Ｆｂは、Ｆａ＝１，Ｆｂ＝１のとき対応するセクタが属するブロックが未使用または無効であることを示し、Ｆａ＝１，Ｆｂ＝０のとき当該ブロックがＬＴＰｂ１５２-i以外の有効データの保存に用いられていることを示す。またフラグＦａ，Ｆｂは、Ｆａ＝０，Ｆｂ＝１のとき対応するセクタが属するブロックが現在ＬＴＰｂ１５２-iの保存に利用されていることを示し、Ｆａ＝０，Ｆｂ＝０のとき当該ブロックが古くなったＬＴＰｂ１５２-i、即ち無効化されたＬＴＰｂ１５２-iの保存に利用されていることを示す。このフラグＦａ，Ｆｂの状態の組み合わせと、当該組み合わせで定義される対応するセクタが属するブロックの使用状態との関係の一例を図４に示す。
【００４４】
フラッシュメモリ１５の各ゾーン１５４-iには、図２（ｃ）に示すように、アサインテーブル（以下、ＡＴと称する）１５５-iがＬＴＰｂ１５２-iと対をなして予め保存されている。したがって、フラッシュメモリ１５のゾーン数がゾーン１５４-0〜１５４-3の４つの本実施形態では、当該ゾーン１５４-0〜１５４-3には、図１に示すように、それぞれＡＴ１５５-0〜１５５-3がＬＴＰｂ１５２-0〜１５２-3と対をなして保存されている。ここで、ＬＴＰｂ１５２-iとＡＴ１５５-iとの対は、図２（ｃ）に示すように、ゾーン１５４-i内の同一ブロックｊの所定領域、例えば先頭領域に保存される。また、ＬＴＰｂ１５２-i及びＡＴ１５５-iが保存されるブロックｊには、当該ＬＴＰｂ１５２-i及びＡＴ１５５-i以外の情報は保存されないように制御される。
【００４５】
ＡＴ１５５-iは、図５に示すように、対応するゾーン１５４-iの各ブロック（ブロック０〜１０２３）が使用されているか否かを示すフラグＦ０〜Ｆ１０２３から構成される。ここでは、Ｆｊ（ｊ＝０〜１０２３）は、Ｆｊ＝０のときブロックｊが使用されていることを示し、Ｆｊ＝１のときブロックｊが使用されていないこと、つまりブロックｊが空きブロックであることを示す。ＡＴ１５５-iには、図５に示すように、ポインタ（フラグポインタ）Ｐが付されている。このポインタＰは、ＡＴ１５５-i内の１つのフラグＦｊの位置、例えば最も最近に参照したフラグＦｊの位置を指し示す。
【００４６】
次に、図１の構成のメモリカードにおける動作について、（１）立ち上げ時の処理と、（２）アクセス要求受け付け時処理とについて順次説明する。
【００４７】
（１）立ち上げ時の処理
まず、図１のメモリカードの立ち上げ時、例えばパワーオン時の処理について、図６のフローチャートを参照して説明する。
【００４８】
コントローラ１２内のマイクロプロセッサ１２１は、図１のメモリカードに例えばホストシステムの電源が供給されると、フラッシュメモリ１５に保存されているＬＴＰｂ１５２-iのエントリ数Ａを決定する（ステップＳ１）。このＬＴＰｂ１５２-iのエントリ数Ａは、例えば予め定められているＬＴＰｂ領域１４２，１４３のサイズＢと、ＬＴＰｂ１５２-iの１エントリのサイズＣとから、Ａ＝Ｂ／Ｃにより決定される。ここでは、Ｂ＝２ＫＢ、Ｃ＝２バイトであるものとすると、Ａ＝２ＫＢ／２バイト＝１Ｋ＝１，０２４となる。
【００４９】
次にマイクロプロセッサ１２１は、ＬＴＰｂ１５２-iの数Ｄを決定する（ステップＳ２）。このＬＴＰｂ１５２-iの数Ｄ（＝２m）は、フラッシュメモリ１５の総ブロック数Ｅと、ＬＴＰｂ１５２-iのエントリ数Ａとから、Ｄ＝Ｅ／Ａにより求められる。ここで、フラッシュメモリ１５のブロック数Ｅは、１ブロックのサイズＨと、フラッシュメモリ１５の容量Ｉとから、Ｅ＝Ｉ／Ｈにより算出される。また、上記１ブロックのサイズＨは、１ブロックのセクタ数Ｆと１セクタのバイト数Ｇとから、Ｈ＝Ｆ＊Ｇにより算出される。ここでは、１ブロックのセクタ数Ｆが３２、１セクタのバイト数が５１２であるものとすると、１ブロックのサイズＨは、３２＊５１２＝１６ＫＢである。この場合、Ｉ＝６４ＭＢのフラッシュメモリ１５のブロック数Ｅは、Ｅ＝Ｉ／Ｈ＝６４ＭＢ／１６ＫＢ＝４Ｋ＝４，０９６となる。
【００５０】
マイクロプロセッサ１２１は、ＬＴＰｂ１５２-iの個数Ｄを決定すると、この個数Ｄをフラッシュメモリ１５のゾーン数とする（ステップＳ３）。ここでは、Ａ＝１，０２４、Ｄ＝４であることから、エントリ数が１，０２４の４つのＬＴＰｂ１５２-0〜１５２-3が、フラッシュメモリ１５の４つのゾーン１５４-0〜１５４-3にそれぞれ分散して予め保存される。但し、フラッシュメモリ１５が未使用の状態では、ＬＴＰｂ１５２-0〜１５２-3の各エントリには何も書き込まれていない。
【００５１】
次にマイクロプロセッサ１２１は、ゾーン１５４-i（及びＬＴＰｂ１５２-i）を指定する変数ｉを初期値０に設定する（ステップＳ４）。そして変数ｉの指すゾーン１５４-iの各ブロックを順次参照して、ＬＴＰｂ１５２-iを探す（ステップＳ５）。このステップＳ５の処理は、ゾーン１５４-iの各ブロックのうち、先頭セクタの冗長部２１に設定されているフラグＦａ，Ｆｂが０，１であるブロックｊ（ｊは０〜１０２３のいずれか）、即ち有効なＬＴＰｂ１５２-iが保存されていることを示すセクタを持つブロックｊを探すことにより実現される。
【００５２】
マイクロプロセッサ１２１はＬＴＰｂ１５２-iが保存されているブロックｊを探すと、そのブロックｊのフラッシュメモリ１５上の位置で決まる、ＬＴＰｂ１５２-iのフラッシュメモリ１５上の保存位置（先頭物理アドレス）を示すポインタ情報（ＬＴＰｂポインタ）を作成する（ステップＳ６）。次にマイクロプロセッサ１２１は、変数ｉが０であるか否かを判定する（ステップＳ７）。もし、この例のように変数ｉが０であるならば、マイクロプロセッサ１２１はフラッシュメモリ１５上のＬＴＰｂ１５２-0，ＡＴ１５５-0、即ちシステム領域に割り当てられているゾーン１５４-0上のＬＴＰｂ１５２-0，ＡＴ１５５-0を、ＲＡＭ１４の領域１４３，１４５にコピーして（ステップＳ８）、ステップＳ９に進む。これに対し、変数ｉが０でないならば、マイクロプロセッサ１２１はそのままステップＳ９に進む。
【００５３】
マイクロプロセッサ１２１はステップＳ９において、変数ｉが１であるか否かを判定する。もし、変数ｉが１であるならば、マイクロプロセッサ１２１はフラッシュメモリ１５のゾーン１５４-1に保存されているＬＴＰｂ１５２-1，ＡＴ１５５-1を、ＲＡＭ１４の領域１４２，１４４にコピーして（ステップＳ１０）、ステップＳ１１に進む。なお、領域１４２，１４４にコピーされるＬＴＰｂ，ＡＴは、ＬＴＰｂ１５２-0，ＡＴ１５５-0以外のＬＴＰｂ，ＡＴ、即ちシステム領域に割り当てられているゾーン１５４-0上のＬＴＰｂ１５２-0，ＡＴ１５５-0以外のＬＴＰｂ，ＡＴであれば、例えばＬＴＰｂ１５２-2，ＡＴ１５５-2または１５２-3，ＡＴ１５５-3であっても構わない。これに対し、変数ｉが１でないならば、マイクロプロセッサ１２１はそのままステップＳ１１に進む。
【００５４】
次にマイクロプロセッサ１２１はステップＳ１１において、変数ｉを１インクリメントし、そのインクリメント後の変数ｉがＬＴＰｂ数Ｄ（ここでは４）に一致するか否かを判定する（ステップＳ１２）。もし、インクリメント後の変数ｉがＬＴＰｂ数Ｄに一致していないなら、マイクロプロセッサ１２１は再びステップＳ５以降の処理を行う。これに対し、インクリメント後の変数ｉがＬＴＰｂ数Ｄに一致しているならば、マイクロプロセッサ１２１は全てのＬＴＰｂ１５２-i（ここではＬＴＰｂ１５２-0〜１５２-3）のポインタ情報を作成したものと判断する。この場合、マイクロプロセッサ１２１は全ＬＴＰｂ１５２-iのポインタ情報が設定されたエントリ群からなるＬＴＰａ１５１を作成して、ＲＡＭ１４のＬＴＰａ領域１４１に格納する（ステップＳ１３）。なお、各ＬＴＰｂ１５２-iのポインタ情報の作成をＬＴＰａ領域１４１上で作成位置をずらしながら行うならば、ステップＳ１３の処理は不要となる。
【００５５】
次に、マイクロプロセッサ１２１は、ＲＡＭ１４のＬＴＰｂ領域１４３，１４２にコピーされたＬＴＰｂ１５２-0，１５２-1を示す情報をレジスタ１２２に設定する（ステップＳ１４）。本実施形態において、レジスタ１２２には、図１に示すように、１６テーブル数分の有効フラグＶ０〜Ｖ１５が保持される。これは、フラッシュメモリ１５の容量が最大の２５６ＭＢの場合に生成されるＬＴＰｂ１５２-iの個数（１６）を考慮したためである。ここでは、有効フラグＶ０，Ｖ１のみをオン（“１”に設定）することで、ＲＡＭ１４のＬＴＰｂ領域１４３，１４２にＬＴＰｂ１５２-0，１５２-1がコピーされていることが識別可能となる。つまり本実施形態では、レジスタ１２２内の有効フラグＶｉが、ＲＡＭ１４上に存在するＬＴＰｂ１５２-iを示す情報となる。なお、本実施形態では、ＲＡＭ１４のＬＴＰｂ領域１４３にコピーされているＬＴＰｂ１５２-iは常にＬＴＰｂ１５２-0である。これに対し、ＲＡＭ１４のＬＴＰｂ領域１４２にコピーされるＬＴＰｂ１５２-iは、立ち上げ時はＬＴＰｂ１５２-1であるものの、それ以降は後述するようにＬＴＰｂ１５２-0以外のＬＴＰｂ１５２-iに動的に切り替えられる。したがって、レジスタ１２２の各有効フラグＶｉを、ＬＴＰｂ領域１４２にコピーされているＬＴＰｂ１５２-iのみを示すのに用いても構わない。
【００５６】
（２）アクセス要求受け付け時処理
次に、図１のメモリカードにおいて、ホストシステムからのフラッシュメモリ１５に対するアクセス要求がホストインタフェース１１で受け取られてマイクロプロセッサ１２１で受け付けられた場合の処理について、図７乃至図９のフローチャートを参照して説明する。
【００５７】
まず、ホストシステムから送られるアクセス要求には、書き込みまたは読み出しのいずれのアクセスであるかを示すコマンドと、論理アドレス空間上のアクセス対象領域の先頭位置を示す論理アドレス（ＬＡ）と、当該領域のサイズとが含まれている。
【００５８】
マイクロプロセッサ１２１は、ホストシステムからのアクセス要求中の論理アドレスが、フラッシュメモリ１５のデータ領域１５４に割り当てられている論理アドレス空間の範囲内であるか否かを判定する（ステップＳ２１）。
【００５９】
もし、上記範囲外であるときは、マイクロプロセッサ１２１はアクセス違反としてホストシステムにエラーを通知する。これに対し、範囲内であるときは、マイクロプロセッサ１２１は、要求された論理アドレスに対応するＬＴＰｂ１５２-iがＲＡＭ１４上に存在するか否かを判定する（ステップＳ２２）。なお、このステップＳ２２の前に、上記要求された論理アドレスとサイズとから、複数のブロックにまたがるアクセス要求であるか否かを判定して、そうであればアクセス違反を返し、そうでない場合だけステップＳ２２に進むようにするとよい。この他、複数のブロックにまたがるアクセス要求の場合に、当該アクセス要求を各ブロック毎のアクセス要求に変換し、内部的に複数のアクセス要求として処理するようにしてもよい。
【００６０】
ここで、上記ステップＳ１２での判定方法について述べる。
まずマイクロプロセッサ１２１は、要求された論理アドレス中の上記１４ビット論理ブロックアドレス３４の上位４ビットの値ｉで指定される、レジスタ１２２中の有効フラグＶｉを参照する。そしてマイクロプロセッサ１２１は、参照した有効フラグＶｉがオン状態にあるか否かにより、要求された論理アドレスに対応するＬＴＰｂ１５２-iがＲＡＭ１４上に存在するか否かを判定する。なお、１４ビット論理ブロックアドレス３４の上位４ビットの値ｉにより対応する有効フラグＶｉを選択するセレクタを用意し、このセレクタの出力の論理状態に応じて、上記の判定を行うようにしてもよい。
【００６１】
さて、要求された論理アドレスに対応するＬＴＰｂ１５２-iがＲＡＭ１４上に存在しないと判定された場合、マイクロプロセッサ１２１はフラッシュメモリ１５からＲＡＭ１４のＬＴＰｂ領域１４２に当該ＬＴＰｂ１５２-iをコピーすると共に、当該ＬＴＰｂ１５２-iとフラッシュメモリ１５上で対をなすＡＴ１５５-iをＲＡＭ１４のＡＴ領域１４４にコピーする（ステップＳ２３）。これにより、ＲＡＭ１４のＬＴＰｂ領域１４２上のＬＴＰｂは、要求された論理アドレスに対応するＬＴＰｂ１５２-iに置き換えられる。同時に、ＲＡＭ１４のＡＴ領域１４４上のＡＴは、このＬＴＰｂ１５２-iと対をなすＡＴ１５５-iに置き換えられる。ここで、ＬＴＰｂ１５２-iが保存されているフラッシュメモリ１５上の領域の先頭位置の物理アドレスは、上記論理アドレス中の１４ビット論理ブロックアドレス３４の上位４ビットの値ｉにより、ＲＡＭ１４のＬＴＰａ領域１４１に格納されているＬＴＰａ１５１の対応エントリｉを参照することで取得できる。
【００６２】
このように本実施形態では、要求された論理アドレスに対応するＬＴＰｂ１５２-iがＲＡＭ１４上に存在しないと判定された場合、ＲＡＭ１４のＬＴＰｂ領域１４２，１４３のＬＴＰｂのうち、ＬＴＰｂ領域１４２上のＬＴＰｂのみが当該ＬＴＰｂ１５２-iとの置き換えの対象となる。これにより、ＲＡＭ１４のＬＴＰｂ領域１４３上のＬＴＰｂ１５２-0は当該ＲＡＭ１４に常駐する。このＬＴＰｂ１５２-0は、頻繁にアクセスされるシステム領域に割り当てられているゾーン１５４-0をアクセスする際のアドレス変換に用いられるものである。したがって、ＬＴＰｂ１５２-0をＲＡＭ１４に常駐させることで、システム領域へのアクセスが頻繁に発生しても、ＬＴＰｂの置き換えは発生せず、常に当該ＲＡＭ１４上のＬＴＰｂ１５２-0を利用して高速にアドレス変換を行うことができる。
【００６３】
マイクロプロセッサ１２１はステップＳ２３を実行すると、上記論理アドレス中の１４ビット論理ブロックアドレス３４の上位４ビットの値ｉで指定される、レジスタ１２２中の有効フラグＶｉをオン（“１”に設定）する（ステップＳ２４）。このとき、有効フラグＶｉ及びＶ０以外に、既にオン状態にある別の有効フラグが存在するときは、その有効フラグをオフ（“０”に設定）する。
【００６４】
マイクロプロセッサ１２１は、要求された論理アドレスに対応するＬＴＰｂ１５２-iがＲＡＭ１４上に存在しないと判定された場合には上記ステップＳ２３，Ｓ２４の後に、存在すると判定された場合にはそのまま、ステップＳ２５に進む。マイクロプロセッサ１２１はステップＳ２５において、ＬＴＰｂ領域１４２上のＬＴＰｂ１５２-i（ｉは１〜３のいずれか）またはＬＴＰｂ領域１４３上のＬＴＰｂ１５２-0を利用して、要求された論理アドレスを物理アドレスに変換するアドレス変換処理を行う。
【００６５】
以下、ステップＳ２５のアドレス変換処理の詳細を、図９のフローチャートを参照して説明する。
まずマイクロプロセッサ１２１は、要求された論理アドレス（ＬＡ）中の１４ビット論理ブロックアドレス３４により、ＬＴＰｂ領域１４２上のＬＴＰｂ１５２-iまたはＬＴＰｂ領域１４３上のＬＴＰｂ１５２-0の対応エントリを参照する（ステップＳ６１）。以下の説明では、ＬＴＰｂ領域１４２上のＬＴＰｂ１５２-i（ｉは１〜３のいずれか）またはＬＴＰｂ領域１４３上のＬＴＰｂ１５２-0を、煩雑さを避けるために、ＬＴＰｂ領域１４２または１４３上のＬＴＰｂ１５２-i（ｉは０〜３のいずれか）、或いは単にＬＴＰｂ１５２-i（ｉは０〜３のいずれか）と表現することがある。また、ＡＴ領域１４４上のＡＴ１５５-i（ｉは１〜３のいずれか）またはＡＴ領域１４５上のＡＴ１５５-0を、煩雑さを避けるために、ＡＴ領域１４４または１４５上のＡＴ１５５-i（ｉは０〜３のいずれか）、或いは単にＡＴ１５５-i（ｉは０〜３のいずれか）と表現することがある。
【００６６】
次にマイクロプロセッサ１２１は、参照したエントリにデータが書かれているか否か、つまり当該エントリが非消去状態にあるか否かにより、１４ビット論理ブロックアドレス３４で指定されるブロックの物理アドレス情報が当該エントリに設定されているか否かを判定する（ステップＳ６２）。本実施形態において、ＬＴＰｂ１５２-iのエントリに登録される物理アドレス情報は、物理アドレスの下位１４ビットを除く物理ブロックアドレスである。この物理ブロックアドレスの下位側に全ビットが“０”の１４ビットのデータを連結すれば、該当するブロックの先頭物理アドレスが得られる。このため、ＬＴＰｂ１５２-iのエントリには、物理アドレス情報として物理アドレスが登録されているのと実質的には同じである。したがって、上記ステップＳ６２は、上記参照エントリに物理アドレス（ＰＡ）が設定されているか否かを判定するのと等価である。
【００６７】
マイクロプロセッサ１２１は、参照エントリに物理アドレス情報（物理ブロックアドレス）が設定されている場合には、ホストシステムからのアクセス要求が書き込みまたは読み出しのいずれであるかを判定する（ステップＳ６３）。もし、書き込みアクセスの場合には、マイクロプロセッサ１２１は、要求された論理アドレス（ＬＡ）中の１４ビット論理ブロックアドレス３４が割り当てられているブロックｋ（ｋは０〜１０２３のいずれか）へのオーバーライト、即ち既にデータが書き込まれているブロックｋへの新たなデータ書き込みが発生するものと判断し、オーバーライトフラグをセットする（ステップＳ６４）。
【００６８】
次にマイクロプロセッサ１２１は、ＲＡＭ１４のＡＴ領域１４４または１４５上のＡＴ１５５-iのうち、ステップＳ６１で参照したＬＴＰｂ１５２-iと対をなすＡＴ１５５-iに付加されているポインタＰを１インクリメントして、そのインクリメント後のポインタＰが１０２４に達したか否かを判定する（ステップＳ６５，Ｓ６６）。もし、インクリメント後のポインタＰが１０２４に達したならば、マイクロプロセッサ１２１はインクリメント前のポインタＰの指し示すＡＴ１５５-i内のフラグＦｊが最終フラグＦ１０２３であるものと判断する。この場合、マイクロプロセッサ１２１はポインタＰがＡＴ１５５-i内の先頭フラグＦ０を指すように、当該ポインタＰを０に更新して（ステップＳ６７）、ステップＳ６８に進む。これに対し、インクリメント後のポインタＰが１０２４に達していないなら、マイクロプロセッサ１２１はそのままステップＳ６８に進む。マイクロプロセッサ１２１はステップＳ６８において、現在のポインタＰの指し示す、ＡＴ１５５-i内のフラグＦｊを参照する。そしてマイクロプロセッサ１２１は、Ｆｊ＝１であるか否かにより、ゾーン１５４-i内のブロックｊが空きブロックであるか否かを判定する（ステップＳ６９）。
【００６９】
もし、ゾーン１５４-i内のブロックｊが空きブロックでないならば、マイクロプロセッサ１２１は上記ステップＳ６５以降の処理を再度実行して、ポインタＰに従ってＡＴ１５５-i内の後続のフラグＦｊを参照し、Ｆｊ＝１であるか否かを判定する（ステップＳ６５〜Ｓ６９）。
【００７０】
このようにマイクロプロセッサ１２１は、ＲＡＭ１４上のＡＴ１５５-i内でＦｊ＝１のフラグを検出するまで、ポインタＰをインクリメントしながら、当該ポインタＰの指し示すＡＴ１５５-i内のフラグＦｊを参照する動作を繰り返す。そしてマイクロプロセッサ１２１は、Ｆｊ＝１のフラグを検出すると（ステップＳ６９）、当該フラグＦｊに対応するゾーン１５４-i上のブロックｊは空きブロックであるとして、当該ブロックｊを確保する（ステップＳ７０）。ここで、空きブロックｊを確保するとは、当該ブロックｊを消去状態に設定することをいう。またマイクロプロセッサ１２１は、このステップＳ７０において、ＲＡＭ１４上のＡＴ１５５-i内の上記検出したＦｊ＝１のフラグを０に、上記ブロックｋに対応するフラグＦｋを１に書き換えることで、上記確保したブロックｊを使用中ブロックに、ブロックｋを空きブロックに切り替える。またマイクロプロセッサ１２１はステップＳ７０において、確保したブロックｊ内の全セクタ（セクタ０〜３１）を対象に、そのセクタの冗長部２１のＬＢＡフィールド２２に、上記要求された論理アドレス中の論理ブロックアドレスを書き込む。これにより、確保したブロックｊに、要求された論理アドレス中の論理ブロックアドレスが割り当てられる。この時点において、冗長部２１のフラグＦａ，Ｆｂは１，１に設定されている。
【００７１】
次にマイクロプロセッサ１２１は、ステップＳ６１で参照した、ＲＡＭ１４のＬＴＰｂ領域１４２または１４３上のＬＴＰｂ１５２-i内のエントリに、上記確保した（論理ブロックアドレスの割り当てが行われた）ブロックｊの先頭位置の物理アドレス中の１４ビット物理ブロックアドレスを書き込む（ステップＳ７１）。そしてマイクロプロセッサ１２１はステップＳ７２に進み、ステップＳ７１で新たに書き込んだ物理ブロックアドレスを、要求された論理アドレス中の１４ビット論理ブロックアドレス３４に対応する物理ブロックアドレス３５として取得する。
【００７２】
このように本実施形態では、ホストシステムから要求された論理アドレス中の１４ビット論理ブロックアドレス３４が割り当てられているブロックｋへのオーバーライトが発生する場合、当該論理ブロックアドレス３４の割り当て先を、このブロックｋから新たに確保した空きブロックｊに変更している。その理由は、同一ブロックへのオーバーライトが集中するのを防ぎ、各ブロックのデータ消去回数の平均化を図ることにより、フラッシュメモリ１５の寿命を極力延ばすためである。
【００７３】
一方、参照エントリに物理ブロックアドレスが設定され、且つ読み出しアクセスの場合には（ステップＳ６２，Ｓ６３）、マイクロプロセッサ１２１はそのままステップＳ７２に進んで、当該物理ブロックアドレスを上記要求された論理アドレス中の１４ビット論理ブロックアドレス３４に対応する物理ブロックアドレス３５として取得する。
【００７４】
またマイクロプロセッサ１２１は、参照エントリに物理ブロックアドレスが設定されていない場合にも（ステップＳ６２）、ホストシステムからのアクセス要求が書き込みまたは読み出しのいずれであるかを判定する（ステップＳ７４）。ここで、参照エントリに物理ブロックアドレスが設定されていないということは、上記要求された論理アドレス中の１４ビット論理ブロックアドレス３４が割り当てられているブロックが一旦消去状態に設定された後、当該ブロックへのデータ書き込みが１度も発生していないことを示す。そこで、参照エントリに物理ブロックアドレスが設定されておらず、且つ読み出しアクセスの場合には、マイクロプロセッサ１２１は消去フラグをセットして（ステップＳ７５）、アドレス変換処理を強制終了する。
【００７５】
これに対し、参照エントリに物理ブロックアドレスが設定されておらず、且つ書き込みアクセスの場合には（ステップＳ６２，Ｓ７４）、マイクロプロセッサ１２１は、上述した参照エントリに物理ブロックアドレスが設定されていて、且つ書き込みアクセスの場合と同様の処理（ステップＳ６５〜Ｓ７２）を実行する。但しオーバーライトは発生しないため、オーバーライトフラグのセット処理（ステップＳ６４）は行われない。
【００７６】
さてマイクロプロセッサ１２１は、ステップＳ７２を実行すると、当該ステップＳ７２で取得した物理ブロックアドレスの下位側に、上記要求された論理アドレス（ＬＡ）の下位１４ビット、即ち５ビットのセクタアドレス３２と９ビットのセクタ内アドレス３３とからなる１４ビットを連結することで、目的の物理アドレス（ＰＡ）を得る（ステップＳ７３）。
【００７７】
以上により、上記要求された論理アドレス（ＬＡ）を物理アドレス（ＰＡ）に変換するステップＳ２５のアドレス変換処理は終了となる。なお、下位１４ビットが全て“０”の物理アドレスが取得される構成を適用する場合には、当該物理アドレスに上記要求された論理アドレスの下位１４ビットを加算することでも、目的の物理アドレス（ＰＡ）が得られる。
【００７８】
マイクロプロセッサ１２１は、ステップＳ２５のアドレス変換処理を終了すると、ホストシステムからのアクセス要求が書き込みまたは読み出しのいずれであるかを判定する（ステップＳ２６）。もし、書き込みアクセスの場合には、マイクロプロセッサ１２１は、オーバーライトフラグがセットされているか否かを判定する（ステップＳ２７）。
【００７９】
マイクロプロセッサ１２１は、オーバーライトフラグがセットされている場合、上記要求された論理アドレス中の論理ブロックアドレス３４が本来割り当てられていたブロックｋ（つまり旧ブロックｋ）のデータを読み込む（ステップＳ２８）。そしてマイクロプロセッサ１２１は、上記論理ブロックアドレス３４が新たに割り当てられたブロックｊ（つまり新ブロックｊ）を対象とする書き込み用ブロックデータを生成する（ステップＳ２９）。この書き込み用ブロックデータは、ブロックｋのデータのうち、ホストシステムから要求された書き込みデータに対応するデータ部分を、当該書き込みデータで置き換えることで生成される。次にマイクロプロセッサ１２１は、生成した書き込み用ブロックデータを新ブロックｊに書き込む（ステップＳ３０）。この際、新ブロックｊ内のデータが書き込まれる各セクタの冗長部２１のフラグＦｂは、１から０に書き換えられ、当該冗長部２１のフラグＦａ，Ｆｂは１，０となる。
【００８０】
一方、オーバーライトフラグがセットされていない場合、ステップＳ２５のアドレス変換処理で得られた物理アドレス（ＰＡ）に基づいてフラッシュメモリ１５をアクセスして、当該物理アドレス（ＰＡ）で指定される位置から始まる要求されたサイズ分の領域を対象とする要求されたデータの書き込みを行う（ステップＳ３１）。
【００８１】
また、ホストシステムからのアクセス要求が読み出しの場合（ステップＳ２６）、マイクロプロセッサ１２１は消去フラグがセットされているか否かを判定する（ステップＳ３２）。もし、消去フラグがセットされていない場合、マイクロプロセッサ１２１は、ステップＳ２５のアドレス変換処理で得られた物理アドレス（ＰＡ）に基づいてフラッシュメモリ１５をアクセスして、当該物理アドレス（ＰＡ）で指定される位置から始まる要求されたサイズ分の領域を対象とするデータ読み出しを行う（ステップＳ３１）。このステップＳ３１で読み出しされたデータはホストインタフェース１１を介してホストシステムに転送される。これに対し、消去フラグがセットされている場合、つまりステップＳ２５のアドレス変換処理で得られた物理アドレス（ＰＡ）で指定されるブロックが消去状態にある場合（ステップＳ３２）、マイクロプロセッサ１２１は、要求されたサイズ分の全ビットが“１”のデータを読み出しデータとして生成して、そのデータをホストインタフェース１１を介してホストシステムに転送する（ステップＳ３３）。
【００８２】
マイクロプロセッサ１２１は、上記ステップＳ３０またはＳ３１またはＳ３３を実行すると、ステップＳ３４に進んで、書き込みまたは読み出しのいずれのアクセスであったかを判定する。もし、読み出しアクセスの場合であれば、マイクロプロセッサ１２１は一連のアクセス要求受け付け時処理を終了する。なお、ステップＳ３３を実行した場合には、そのままアクセス要求受け付け時処理を終了することも可能である。
【００８３】
これに対し、書き込みアクセスの場合には、マイクロプロセッサ１２１は書き込みエラーの有無を判定する（ステップＳ３５）。この判定は、書き込んだデータを読み出し、その読み出したデータと元の書き込みデータとを比較することで行われる。明らかなように、比較結果が不一致を示している場合に書き込みエラーと判定される。
【００８４】
マイクロプロセッサ１２１は、書き込みエラーがある場合には、書き込みエラーが発生したセクタを含むブロック全体が欠陥であるものとして、つまりブロックエラーであるものとして、ブロック全体を他の空きブロックに代替するための処理を次のように行う。
【００８５】
まずマイクロプロセッサ１２１は、上記ステップＳ６５〜Ｓ７１と同様の処理（ステップＳ３６〜Ｓ４２）を実行する。即ちマイクロプロセッサ１２１は、ＲＡＭ１４のＡＴ領域１４４または１４５上のＡＴ１５５-iのうち、ステップＳ６１で参照したＬＴＰｂ１５２-iと対をなすＡＴ１５５-iからＦｊ＝１のフラグを検出する（ステップＳ３６〜Ｓ４０）。そしてマイクロプロセッサ１２１は、フラッシュメモリ１５上のゾーン１５４-iから、上記検出したフラグＦｊに対応する空きブロックｊを代替先のブロックとして確保し、このブロックｊ内の全セクタ（セクタ０〜３１）を対象に、そのセクタの冗長部２１のＬＢＡフィールド２２に、上記要求された論理アドレス中の論理ブロックアドレスを書き込む（ステップＳ４１）。また、マイクロプロセッサ１２１は、ステップＳ６１で参照した、ＲＡＭ１４上のＬＴＰｂ１５２-i内のエントリの内容を、上記確保したブロックｊの物理ブロックアドレスに更新する（ステップＳ４２）。この場合、ステップＳ６１で参照したＬＴＰｂ１５２-iと対をなすＲＡＭ１４内のＡＴ１５５-iのフラグのうち、書き込みエラーとなったブロックｊ（以下、旧ブロックｋと称する）に対応するフラグＦｋは１に、ステップＳ４１で新たに確保した空きブロックｊ（以下、新ブロックｊと称する）に対応するフラグＦｊは０に書き換えられる。
【００８６】
次にマイクロプロセッサ１２１は、オーバーライトフラグがセットされているか否かを判定する（ステップＳ４３）。もし、オーバーライトフラグがセットされている場合、マイクロプロセッサ１２１は上記ステップＳ３０と同様の処理（ステップＳ４４）を実行する。即ちマイクロプロセッサ１２１は、書き込みエラーとなった旧ブロックｋへの書き込みに用いられたブロックデータを、新ブロックｊに書き込む（ステップＳ４４）。これに対し、オーバーライトフラグがセットされていない場合には（ステップＳ４３）、マイクロプロセッサ１２１は上記ステップＳ３１と同様の処理（ステップＳ４５）を実行して、要求されたデータを新ブロックｊに書き込む。マイクロプロセッサ１２１はステップＳ４４またはＳ４５を実行すると、ステップＳ３５に戻る。
【００８７】
一方、ステップＳ３５で書き込みエラーでないと判定されたなら、マイクロプロセッサ１２１は、フラッシュメモリ１５のゾーン１５４-i上のＬＴＰｂ１５２-i及びＡＴ１５５-iの更新を行う（ステップＳ４６）。このＬＴＰｂ１５２-i及びＡＴ１５５-iの更新処理は、ゾーン１５４-i上の空きブロックを確保して、当該空きブロックに、更新後のＬＴＰｂ１５２-iと更新後のＡＴ１５５-iとの対を書き込むことで実現される。ここで更新後のＬＴＰｂ１５２-iとは、ステップＳ６１で参照したエントリを含む、ＲＡＭ１４上に置かれているＬＴＰｂ１５２-iである。また更新後のＡＴ１５５-iとは、上記ＬＴＰｂ１５２-iと対をなしてＲＡＭ１４上に置かれているＡＴ１５５-iである。
【００８８】
また上記ステップＳ４６では、フラッシュメモリ１５上の更新前のＬＴＰｂ１５２-i及びＡＴ１５５-iが保存されている元のブロックを対象に、対応する各セクタの冗長部２１のフラグＦｂが１から０に書き換えられ、当該冗長部２１のフラグＦａ，Ｆｂは０，０となる。これにより、このブロック内のＬＴＰｂ１５２-iが古いＬＴＰｂであることが示される。
【００８９】
このように本実施形態では、更新後のＬＴＰｂ１５２-i及びＡＴ１５５-iを、更新前のＬＴＰｂ１５２-i及びＡＴ１５５-iが保存されているブロックではなくて、新たに確保した空きブロックに書き込むようにしている。その理由は、同一ブロックへのオーバーライトが集中するのを防ぎ、各ブロックのデータ消去回数の平均化を図ることにより、フラッシュメモリ１５の寿命を極力延ばすためである。マイクロプロセッサ１２１は、ステップＳ４５を実行すると一連のアクセス要求受け付け時処理を終了する。
【００９０】
以上に述べた実施形態では、フラッシュメモリ１５に保存されているＬＴＰｂ１５２-0〜１５２-3のうちの２つがＲＡＭ１４にも格納されるものとして説明したが、フラッシュメモリ１５に保存されているＬＴＰｂの総数よりも少ない複数のＬＴＰｂがＲＡＭ１４にも格納される構成であればよい。
【００９１】
なお、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題の少なくとも１つが解決でき、発明の効果の欄で述べられている効果の少なくとも１つが得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【００９２】
【発明の効果】
以上詳述したように本発明によれば、論理アドレスを物理アドレスに変換するためのアドレス変換テーブルが複数のアドレス変換テーブルに分割されて書き換え可能不揮発性メモリ上に保存される一方、そのうち当該テーブルの総数より少ない数の複数のテーブルが揮発性メモリ上のアドレス変換テーブル領域に置かれてアドレス変換に用いられる構成としたので、書き換え可能不揮発性メモリの記憶容量が増加しても揮発性メモリの容量が増加するのを抑えながら、書き換え可能不揮発性メモリをアクセスするために与えられた論理アドレスに対応するアドレス変換テーブルが揮発性メモリ上に存在しないテーブルミスの発生頻度を少なくできる。
【００９３】
また、本発明によれば、上記テーブルミスの場合に、揮発性メモリ上の複数のアドレス変換テーブルのうち、システム領域に対応するアドレス変換テーブルを除くいずれか１つのテーブルを目的のアドレス変換テーブルで置き換える構成としたので、システム領域に対応するアドレス変換テーブルを揮発性メモリに常駐させることができ、これにより書き換え可能不揮発性メモリの記憶容量が増加しても揮発性メモリの容量が増加するのを抑えながら、頻繁にアクセスされるシステム領域へのアクセス要求に対しては常にテーブルミスの発生を招くことなく高速アドレス変換を実現し、またシステム領域以外の領域へのアクセス要求に対しては、テーブルミス時のペナルティを最小限に抑えてリアルタイム用途に対応することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るメモリカードの全体構成を示すブロック図。
【図２】図１中のフラッシュメモリ１５の管理単位としてのブロックと、ブロックを構成する各セクタの冗長部と、フラッシュメモリ１５の各ゾーン１５４-i毎に保存されるＬＴＰｂ１５２-i及びＡＴ１５５-iの保存位置とを説明するための図。
【図３】同実施形態で適用される論理アドレスと物理アドレスとの対応関係を説明するための図。
【図４】各セクタの冗長部２１内のフラグＦａ，Ｆｂの状態の組み合わせと、当該組み合わせで定義される対応するセクタが属するブロックの使用状態との関係の一例を示す図。
【図５】ＡＴ１５５-iのデータ構造例を示す図。
【図６】同実施形態におけるメモリカードの立ち上げ時の処理を説明するためのフローチャート。
【図７】同実施形態におけるアクセス要求受け付け時処理を説明するためのフローチャートの一部を示す図。
【図８】同実施形態におけるアクセス要求受け付け時処理を説明するためのフローチャートの残りを示す図。
【図９】図７中のステップＳ２５のアドレス変換処理の詳細な手順を説明するためのフローチャート。
【符号の説明】
１２…コントローラ
１３…ＲＯＭ
１４…ＲＡＭ（揮発性メモリ）
１５…フラッシュメモリ（書き換え可能不揮発性メモリ）
１２１…マイクロプロセッサ（ＭＰＵ、アドレス変換手段、ヒット／ミスヒット判定手段、コピー手段、割り当て手段、物理アドレス登録手段、ブロックエラー検出手段、ブロック代替手段、ポインタテーブル作成手段、テーブル更新手段）
１２２…レジスタ（ＲＥＧ、参照用テーブル指定手段）
１４１…ＬＴＰａ領域（ポインタテーブル領域）
１４２，１４３…ＬＴＰｂ領域（アドレス変換テーブル領域）
１４４，１４５…ＡＴ領域（アサインテーブル領域）
１５１…ＬＴＰａ（ポインタテーブル）
１５２-0〜１５２-3，１５２-i…ＬＴＰｂ（アドレス変換テーブル）
１５３…管理領域
１５４-0…ゾーン（システム領域）
１５４-1〜１５４-3，１５４-i…ゾーン
１５５-0〜１５５-3，１５５-i…ＡＴ（アサインテーブル）
【図１】
0004439096.tif 000002
【図２】
0004439096.tif 000003
【図３】
0004439096.tif 000004
【図４】
0004439096.tif 000005
【図５】
0004439096.tif 000006
【図６】
0004439096.tif 000007
【図７】
0004439096.tif 000008
【図８】
0004439096.tif 000009
【図９】
0004439096.tif 000010