JP4439096B2 - メモリカード及び同カードに適用されるアドレス変換方法 - Google Patents
メモリカード及び同カードに適用されるアドレス変換方法 Download PDFInfo
- Publication number
- JP4439096B2 JP4439096B2 JP2000258216A JP2000258216A JP4439096B2 JP 4439096 B2 JP4439096 B2 JP 4439096B2 JP 2000258216 A JP2000258216 A JP 2000258216A JP 2000258216 A JP2000258216 A JP 2000258216A JP 4439096 B2 JP4439096 B2 JP 4439096B2
- Authority
- JP
- Japan
- Prior art keywords
- address
- block
- address conversion
- logical
- conversion table
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
Description
【発明の属する技術分野】
本発明は、書き換え可能な不揮発性メモリを搭載したメモリカードに係り、特に当該不揮発性メモリをアクセスするために与えられた論理アドレスを物理アドレスに変換するアドレス変換機構を備えたメモリカード及び同カードに適用されるアドレス変換方法に関する。
【0002】
【従来の技術】
近年、画像データや音楽データに代表される種々のデジタル情報を保存する記憶装置として、電源がオフされても保存情報が消失する虞のない書き換え可能な不揮発性メモリを搭載したメモリカードが広まってきている。
【0003】
書き換え可能な不揮発性メモリの代表的なものにNAND型フフラッシュメモリがある。この種のフラッシュメモリはブロック単位で管理される。つまり、情報の消去(一般には、全ビットが“1”のデータ、つまりオール“1”データを書き込む動作)はブロック単位で行われる。また、各ブロックには、論理ブロックアドレスが割り当てられる。各ブロックは複数のセクタからなる。このセクタは、フラッシュメモリでの読み出し/書き込みの最小単位であり、例えば512バイトからなる。各セクタはデータ部とは別に冗長部を有している。この冗長部の所定フィールドには、対応するセクタが属するブロックに割り当てられている論理ブロックアドレスが登録されている。
【0004】
フラッシュメモリ(書き換え可能な不揮発性メモリ)をアクセスするには、論理アドレスを当該メモリの物理アドレスに変換するためのアドレス変換テーブル(アドレス変換機構)が必要となる。このアドレス変換が必要な理由は、フラッシュメモリに欠陥ブロックが発生して、別の空きブロックに代替しても、そのことをホスト側で意識することなく、代替の有無に無関係に同一の論理アドレスでアクセスできるようにするためである。
【0005】
上記アドレス変換テーブルのエントリ数はフラッシュメモリのブロック数に一致し、1セクタが512バイト、つまり0.5KB(キロバイト)で、且つ1ブロックが32セクタ、つまり16KBの16MB(メガバイト)フラッシュメモリを用いた場合を例にとると、16MB/16KB=1K=1,024となる。アドレス変換テーブルは一般に揮発性メモリとしてのRAM上に確保された領域(RAM領域)に格納して用いられる。したがって上記の例では、1エントリ2バイトとすると、アドレス変換テーブルを格納するのに必要なRAM領域は2KBとなる。
【0006】
一方、最近は、半導体製造技術の進歩によりフラッシュメモリの記憶容量も増加しており、ブロック数が2,048、1ブロックが16KBの32MBフラッシュメモリ、或いはブロック数が4,096、1ブロックが16KBの64MBフラッシュメモリも出現している。
【0007】
ところが、フラッシュメモリの記憶容量が増加すると、アドレス変換テーブルを保持するためのRAM領域も大きくしなければならない。例えば、32MBフラッシュメモリの場合には4KB、64MBフラッシュメモリの場合には8KBのRAM領域がアドレス変換テーブル用に必要となる。つまり、16MBフラッシュメモリの場合のそれぞれ2倍、4倍といったRAM領域を必要とする。
【0008】
【発明が解決しようとする課題】
上記したように、フラッシュメモリに代表される書き換え可能な不揮発性メモリを搭載した従来のメモリカードでは、当該メモリの記憶容量が増加すると、当該メモリをアクセスするために与えられる論理アドレスを当該ブロックの物理アドレスに変換するためのアドレス変換テーブルを保持するのに必要な、RAMに代表される揮発性メモリの領域も大きくしなければならなかった。
【0009】
本発明は上記事情を考慮してなされたものでその目的は、書き換え可能な不揮発性メモリの記憶容量が増加してもアドレス変換テーブル用の揮発性メモリ領域を増加させずに済み、しかも書き換え可能不揮発性メモリをアクセスするために与えられた論理アドレスに対応するアドレス変換テーブルが揮発性メモリ上に存在しないテーブルミスの発生頻度を少なくできるメモリカード及び同カードに適用されるアドレス変換方法を提供することにある。
【0010】
本発明の他の目的は、システム領域に対応するアドレス変換テーブルのみ揮発性メモリに常駐させることにより、書き換え可能不揮発性メモリの記憶容量が増加しても揮発性メモリの容量が増加するのを抑えながら、頻繁にアクセスされるシステム領域へのアクセス要求に対しては常にテーブルミスの発生を抑えて高速アドレス変換を実現できるメモリカード及び同カードに適用されるアドレス変換方法を提供することにある。
【0011】
【課題を解決するための手段】
本発明に係る、書き換え可能な不揮発性メモリを搭載したメモリカードは、上記書き換え可能不揮発性メモリをアクセスするために与えられる論理アドレスを物理アドレスに変換するのに用いられる複数のアドレス変換テーブルであって、上記書き換え可能不揮発性メモリに保存される複数のアドレス変換テーブルと、上記書き換え可能不揮発性メモリ上の上記複数のアドレス変換テーブルのうち当該テーブルの総数より少ない数の複数のテーブルを格納するためのアドレス変換テーブル領域が確保される揮発性メモリと、上記書き換え可能不揮発性メモリをアクセスするための論理アドレスが与えられた場合に、当該論理アドレスを物理アドレスに変換するアドレス変換手段とを備える。上記複数のアドレス変換テーブルは、それぞれ異なる論理アドレス範囲に対応付けて用意されている。アドレス変換手段は、書き換え可能不揮発性メモリをアクセスするための論理アドレスが与えられた場合、上記揮発性メモリ上の、当該論理アドレスに対応する上記アドレス変換テーブル、を利用して当該論理アドレスを物理アドレスに変換する。
【0012】
このような構成のメモリカードでは、書き換え可能不揮発性メモリをアクセスするための論理アドレスが与えられた場合、揮発性メモリ上の、当該論理アドレスに対応するアドレス変換テーブル、を利用して当該論理アドレスを物理アドレスに変換するアドレス変換が行われる。
【0013】
このように本発明においては、書き換え可能不揮発性メモリ上のアドレス変換テーブルの全数ではなくて、その一部の複数のテーブルだけが揮発性メモリ上に置かれて、当該揮発性メモリ上のアドレス変換テーブルが論理アドレスから物理アドレスへのアドレス変換に用いられる。このため、全アドレス変換テーブルを揮発性メモリ上に置く場合と異なり、書き換え可能不揮発性メモリの容量が大きくなっても、揮発性メモリの記憶容量の増加を抑えることが可能となる。
【0014】
ここで、揮発性メモリ上に置かれているアドレス変換テーブルが、与えられた論理アドレスの属する論理アドレス範囲に対応したアドレス変換テーブルではない場合には、アドレス変換は行えない。そこで本発明に係るメモリカードは、書き換え可能不揮発性メモリをアクセスするための論理アドレスが与えられた場合、当該論理アドレスが属する論理アドレス範囲に対応するアドレス変換テーブルが上記揮発性メモリ上に存在するか否かを判定するヒット/ミスヒット判定手段と、このヒット/ミスヒット判定手段により上記対応するアドレス変換テーブルが上記揮発性メモリ上に存在しないと判定された場合、当該アドレス変換テーブルを書き換え可能不揮発性メモリから揮発性メモリ上のアドレス変換テーブル領域にコピーして、当該アドレス変換テーブルで上記アドレス変換テーブル領域上の元のアドレス変換テーブルを置き換えるコピー手段とを更に備える。
【0015】
このような構成のメモリカードでは、与えられた論理アドレスを物理アドレスに変換するのに必要なアドレス変換テーブルが上記テーブル領域に存在しない(ミスヒットの)場合には、当該テーブルが書き換え可能不揮発性メモリから上記テーブル領域に直ちにコピーされて、当該テーブルで上記アドレス変換テーブル領域上の元のアドレス変換テーブルが置き換えられる。このためテーブルミス時にも、与えられた論理アドレスから物理アドレスへの変換が速やかに行える。ところで、ホストシステムからの要求でフラッシュメモリ15から映像データや音声データを連続的に読み出す(再生する)場合、ホストシステムから与えられる論理アドレスは連続しているのが一般的である。したがって、この種のデータ読み出しでアドレス変換テーブルの置き換えが頻繁に発生する虞はなく、上記テーブル領域にコピーされたアドレス変換テーブルに対応する論理アドレス範囲に属する論理アドレスに対し、当該テーブルを利用して速やかに物理アドレスに変換することが可能となる。
【0016】
ここで、本発明の上記構成の有用性を理解しやすくするために、本発明とは異なって、上記各アドレス変換テーブルを書き換え可能不揮発性メモリに用意せずに、必要なアドレス変換テーブルを、逐次作成して上記テーブル領域に保持する構成をとる場合について考えてみる。この場合、上記テーブル領域上に目的のアドレス変換に必要なテーブルが存在しないミスヒット時は、当該必要なテーブルを改めて作成しなければならない。したがって、映像データや音声データの読み出しの場合のようにリアルタイム性が要求される場合には問題となる。つまり、テーブルミス時のペナルティが大きい。これを避けるため、全テーブルを上記テーブル領域に保持することも考えられるが、揮発性メモリの記憶容量の大幅な増加を招く。これに対して本発明では、全てのアドレス変換テーブルが書き換え可能不揮発性メモリに用意されているため、テーブルミスが発生しても、必要なアドレス変換テーブルを書き換え可能不揮発性メモリから揮発性メモリの上記テーブル領域にコピーするだけで速やかにアドレス変換処理を行うことができ、テーブルミス時のペナルティが小さくて済む。したがって本発明においては、小容量の揮発性メモリを用いても、つまり十分な大きさのテーブル領域が確保できなくても、テーブルミス時のペナルティを小さくすることが可能となり、リアルタイム用途に適用できる。なお、本発明では、書き換え可能不揮発性メモリ上に全てのアドレス変換テーブルを保存するための領域を確保する必要があるが、書き換え可能不揮発性メモリの容量は揮発性メモリの容量に比べて極めて大きいため、当該揮発性メモリ上に全テーブルを置く構成と異なって問題とならない。
【0017】
ここで、上記書き換え可能不揮発性メモリが、一般に固有の論理ブロックアドレスが割り当てられる複数のブロックからなることを考慮するならば、上記複数のアドレス変換テーブル、上記ヒット/ミスヒット判定手段、及び上記アドレス変換手段を次のように構成するとよい。まず、上記複数のアドレス変換テーブルを、論理アドレス中の論理ブロックアドレスの所定フィールドの内容が共通の上記論理アドレス範囲に含まれる、上記書き換え可能不揮発性メモリ上のブロックの群、を単位に用意する。また各アドレス変換テーブルに、論理ブロックアドレスの所定フィールドの内容が共通のブロックの群と同数の、当該ブロックに割り当てられる論理ブロックアドレスにより指定可能なエントリの群であって、当該ブロックの上記書き換え可能不揮発性メモリ上の位置を示す物理アドレス情報を登録するためのエントリの群を持たせる。次に、上記ヒット/ミスヒット判定手段には、上記与えられた論理アドレスが属する論理アドレス範囲を、当該論理アドレス中の論理ブロックアドレスの上記所定フィールドの内容の示す論理アドレス範囲として、この論理アドレス範囲に対応する上記アドレス変換テーブルが上記揮発性メモリ上に存在するか否かを判定する機能を持たせる。そして上記アドレス変換手段には、上記ヒット/ミスヒット判定手段により上記対応するアドレス変換テーブルが上記揮発性メモリ上に存在すると判定された場合は直ちに、存在しないと判定された場合には、当該アドレス変換テーブルが上記コピー手段により上記揮発性メモリにコピーされるのを待って、いずれも上記与えられた論理アドレス中の論理ブロックアドレスにより当該揮発性メモリ上の上記アドレス変換テーブルの対応するエントリを参照することで、上記与えられた論理アドレスを対応する物理アドレスに変換する機能を持たせる。
【0018】
ここで、上記各アドレス変換テーブルの各エントリの内容を予め設定せずに、最初は各アドレス変換テーブルの枠組だけを用意して、その後、必要に応じてエントリの内容を設定する構成を適用するとよい。この構成では、物理アドレス登録手段を設け、上記アドレス変換手段により参照された、アドレス変換テーブルのエントリ、に物理アドレス情報が登録されていない場合に、上記物理アドレス登録手段が、書き換え可能不揮発性メモリ上の空きブロックを探して当該ブロックに要求された論理アドレス中の論理ブロックアドレスを割り当てて、当該ブロックの物理アドレス情報を、上記参照エントリと、書き換え可能不揮発性メモリ上の対応するアドレス変換テーブルのエントリとに書き込む。これにより、使用される可能性の少ないブロックに対応するアドレス変換テーブル内エントリの情報までも予め登録する無駄をなくすことができる。
【0019】
また、上記アドレス変換手段により変換された物理アドレスを用いて書き換え可能不揮発性メモリに対する書き込みを行った結果ブロックエラーが発生した場合に対応可能なように、次のブロック代替手段を追加する。このブロック代替手段は、ブロックエラー時には、書き換え可能不揮発性メモリ上の空きブロックを探して、当該ブロックに、上記与えられた論理アドレス中の論理ブロックアドレスを割り当てる。そしてブロック代替手段は、当該ブロックの物理アドレス情報で、上記参照エントリと、書き換え可能不揮発性メモリ上の対応するアドレス変換テーブルのエントリを更新する。これにより、書き込み時にブロックエラーが発生しても、確実にブロック代替処理を行うことが可能となる。
【0020】
また、上記揮発性メモリに、上記書き換え可能不揮発性メモリに保存されている上記複数のアドレス変換テーブルの当該不揮発性メモリ上の保存位置を示すポインタ情報が、当該アドレス変換テーブルに固有の、論理ブロックアドレスの上記所定フィールドの内容に対応付けて登録されるポインタテーブルを格納するためのポインタテーブル領域を確保し、上記コピー手段に次の機能、即ち上記ヒット/ミスヒット判定手段により上記対応するアドレス変換テーブルが上記揮発性メモリ上に存在しないと判定された場合、上記与えられた論理アドレス中の論理ブロックアドレスの上記所定フィールドの内容により上記ポインタテーブルを参照して対応するポインタ情報を取得し、当該ポインタ情報の示す上記書き換え可能不揮発性メモリ上のアドレス変換テーブルを上記揮発性メモリ上のアドレス変換テーブル領域にコピーする機能を持たせるとよい。また、上記メモリカードの立ち上げ時に、上記ポインタテーブルを作成して上記揮発性メモリの上記ポインタテーブル領域に格納するポインタテーブル作成手段を追加するとよい。
このようにすると、アドレス変換テーブルのコピー処理が高速に行える。
【0021】
ここで、上記書き換え可能不揮発性メモリが、論理アドレス中の論理ブロックアドレスの上記所定フィールドの内容が共通の論理アドレス範囲に含まれる、ブロックの群からなるゾーンを単位に管理され、上記ゾーンの1つが、システム管理情報を保存する管理領域を含むシステム領域に割り当てられ、上記各アドレス変換テーブルが、上記書き換え可能不揮発性メモリの対応するゾーン内のいずれか1つのブロックの所定領域に保存される構成として、上記コピー手段に次の機能、即ち上記メモリカードの立ち上げ時に、上記書き換え可能不揮発性メモリの上記各ゾーンのうち上記システム領域に割り当てられているゾーンを除くゾーンの少なくとも1つに保存されているアドレス変換テーブルと、上記システム領域に割り当てられているゾーンに保存されているアドレス変換テーブルとを、上記揮発性メモリの上記アドレス変換テーブル領域にコピーし、上記ヒット/ミスヒット判定手段により上記対応するアドレス変換テーブルが上記揮発性メモリ上に存在しないと判定された場合には、上記アドレス変換テーブル領域上の複数のアドレス変換テーブルのうち、上記システム領域に対応するアドレス変換テーブルを除くいずれか1つのアドレス変換テーブルを上記対応するアドレス変換テーブルの置き換え対象とする機能を持たせるとよい。
【0022】
このようにすると、システム領域に対応するアドレス変換テーブルを揮発性メモリに常駐させることができるため、書き換え可能不揮発性メモリの記憶容量が増加しても揮発性メモリの容量が増加するのを抑えながら、頻繁にアクセスされるシステム領域へのアクセス要求に対しては常にテーブルミスの発生を抑えて高速アドレス変換を実現できる。また、システム領域以外の領域へのアクセス要求に対しては、テーブルミス時のペナルティを最小限に抑えてリアルタイム用途に対応することができる。
【0023】
また、書き換え可能不揮発性メモリをゾーン単位に管理する構成では、当該不揮発性メモリ上の各ブロックが、当該メモリに対するアクセスの最小単位である一定サイズの複数のセクタであって、当該ブロックに割り当てられている論理ブロックアドレスが設定される論理ブロックアドレスフィールドと、当該セクタの使用状態として、有効なアドレス変換テーブルの保存に用いられている第1の状態、無効化されたアドレス変換テーブルの保存に用いられている第2の状態、及びアドレス変換テーブル以外の有効なデータの保存に用いられている第3の状態を含む使用状態のいずれか1つを示すフラグ情報が設定されるフラグフィールドとを有する冗長部を備えた複数のセクタからなる構成とするならば、上記ポインタテーブル作成手段では、メモリカードの立ち上げ時に、上記書き換え可能不揮発性メモリの各ゾーン毎に、当該ゾーン内の各ブロックを順次参照して、上記冗長部のフラグフィールドにより第1の状態が示されているセクタ、即ち有効なアドレス変換テーブルの保存に用いられていることが示されているセクタを検出することで、上記ポインタ情報を取得して、このゾーン毎に取得したポインタ情報が登録された上記ポインタテーブルを簡単に作成することが可能となる。
【0024】
また書き換え可能不揮発性メモリをゾーン単位に管理する構成では、上記アドレス変換手段により参照された上記揮発性メモリ上の上記アドレス変換テーブルのエントリに物理アドレス情報が登録されていない場合、当該テーブルに対応する上記書き換え可能不揮発性メモリ上のアドレス変換テーブルが保存されているゾーンを対象に空きブロックを探して当該ブロックに上記与えられた論理アドレス中の論理ブロックアドレスを割り当てる割り当て手段と、この割り当て手段により論理ブロックアドレスが割り当てられたブロックの物理アドレス情報を、上記アドレス変換手段により参照された上記揮発性メモリ上の上記アドレス変換テーブルのエントリに書き込む物理アドレス登録手段と、上記アドレス変換手段により参照された上記揮発性メモリ上の上記アドレス変換テーブルに対応する上記書き換え可能不揮発性メモリ上のアドレス変換テーブルが保存されているゾーンを対象に空きブロックを探して当該ブロック内の所定領域に上記物理アドレス登録手段による物理アドレス情報の書き込みがなされた上記アドレス変換テーブルを書き込むと共に当該アドレス変換テーブルが書き込まれた上記所定領域内の各セクタの冗長部のフラグフィールドに上記第1の状態を示すフラグ情報を設定し、且つ当該テーブルに対応する、上記書き換え可能不揮発性メモリ上の元の上記アドレス変換テーブルが保存されている領域内の各セクタの冗長部のフラグフィールドに上記第2の状態を示すフラグ情報を設定するテーブル更新手段とを追加するならば、同一ブロックへの書き込みが集中するのを防止できる。
【0025】
また、上記アドレス変換手段により変換された物理アドレスに基づいて上記書き換え可能不揮発性メモリに対する書き込みが行われた場合に、ブロックエラーの発生の有無を検出するブロックエラー検出手段と、このブロックエラー検出手段によりブロックエラーの発生が検出された場合、上記アドレス変換手段により参照された上記揮発性メモリ上の上記アドレス変換テーブルに対応する上記書き換え可能不揮発性メモリ上のアドレス変換テーブルが保存されているゾーンを対象に空きブロックを探して当該ブロックに上記与えられた論理アドレス中の論理ブロックアドレスを割り当てて、当該ブロックの物理アドレス情報で、上記揮発性メモリ上の上記アドレス変換テーブルの参照エントリを更新するブロック代替手段とを追加し、上記テーブル更新手段では、上記アドレス変換手段により参照された上記揮発性メモリ上の上記アドレス変換テーブルに対応する上記書き換え可能不揮発性メモリ上のアドレス変換テーブルが保存されているゾーンを対象に空きブロックを探して、当該ブロック内の所定領域に上記ブロック代替手段による参照エントリの更新がなされた上記アドレス変換テーブルを書き込むと共に、当該アドレス変換テーブルが書き込まれた上記領域内の各セクタの冗長部のフラグフィールドに上記第1の状態を示すフラグ情報を設定し、且つ当該テーブルに対応する、上記書き換え可能不揮発性メモリ上の元の上記アドレス変換テーブルが保存されている領域内の各セクタの冗長部のフラグフィールドに上記第2の状態を示すフラグ情報を設定する構成とするならば、同一ブロックへの書き込みが集中するのを防止できる。
【0026】
特に、書き換え可能不揮発性メモリの上記各ゾーン毎に、上記アドレス変換テーブルが保存されているブロックに当該アドレス変換テーブルと対をなして保存されているアサインテーブルであって、当該ゾーンの各ブロック毎に、そのブロックが使用されているか否かを示すフラグ情報の群からなるアサインテーブルを用意すると共に、上記揮発性メモリに、上記アドレス変換テーブル領域に格納される上記書き換え可能不揮発性メモリ上の上記複数のアドレス変換テーブルと対をなす上記アサインテーブルを格納するためのアサインテーブル領域を確保し、上記割り当て手段と上記テーブル更新手段と上記ブロック代替手段とが、上記揮発性メモリ上の上記アサインテーブルを一定方向に参照して上記空きブロックを探す構成とするならば、同一ゾーン内の各ブロックへの書き込み頻度を均一化できる。ここで、上記割り当て手段と上記テーブル更新手段と上記ブロック代替手段とは、上記揮発性メモリ上の上記アサインテーブルを参照して上記空きブロックを探した際に、当該アサインテーブルを更新し、上記テーブル更新手段は、上記空きブロックに上記揮発性メモリ上の上記アドレス変換テーブルの内容を書き込む際に、当該テーブルと対をなす上記揮発性メモリ上の上記アサインテーブルの内容も上記空きブロックに書き込むとよい。
【0027】
なお、以上の装置(メモリカード)に係る本発明は方法(アドレス変換方法)に係る発明としても成立する。
【0028】
【発明の実施の形態】
以下、本発明の実施の形態につき図面を参照して説明する。
図1は本発明の一実施形態に係るメモリカードの全体構成を示すブロック図である。
【0029】
図1のメモリカードは、パーソナルコンピュータ、電子カメラ、ゲーム機を始めとする各種電子機器に装着して使用されるもので、ホストインタフェース11と、コントローラ12と、ROM13と、RAM14と、フラッシュメモリ15とを備えている。
【0030】
ホストインタフェース11は、上記メモリカードが装着される電子機器本体(以下、ホストシステムと称する)とのインタフェースをなす。コントローラ12は、カード全体の制御を司る。コントローラ12は、マイクロプロセッサ(MPU)121と、後述するレジスタ(REG)122とを有している。マイクロプロセッサ121は、ホストインタフェース11を介して受信されるコマンドをROM13に格納されている制御プログラム(ファームウェア)に従って解釈して実行する。
【0031】
ROM13は、読み出し専用の不揮発性メモリである。ROM13は、上記制御プログラム、及び管理用の固定データ等を予め格納するのに用いられる。RAM14は揮発性メモリである。RAM14は、コントローラ12(内のマイクロプロセッサ121)の作業用領域(図示せず)の他、後述するLTPa151を格納するためのLTPa領域141、後述する2m個のLTPb152-i(i=0〜2m−1、ここではm=2)のうち、LTPb152-0を除くLTPb152-iのいずれか1つを格納するためのLTPb領域142、LTPb152-0を格納するためのLTPb領域143、LTPb領域142に格納されるLTPb152-iと対をなす後述するAT155-iを格納するためのAT領域144、及びLTPb領域143に格納されるLTPb152-0と対をなすAT155-0を格納するためのAT領域145等を提供する。ここではLTPb領域142,143のサイズは2KBである。
【0032】
フラッシュメモリ15は、書き換え可能な不揮発性メモリ、例えばNANDフラッシュメモリである。フラッシュメモリ15の領域は、図2(a)に示すように一定サイズの複数のブロックから構成される。このブロックはデータ消去の単位であり、当該ブロックを単位に論理アドレス(Logical Address;LA)中の論理ブロックアドレス(LBA)が割り当てられる。つまり、フラッシュメモリ15はブロックを単位に管理される。
【0033】
フラッシュメモリ15の各ブロックは、図2(b)に示すように、一定サイズの複数のセクタから構成される。セクタは、フラッシュメモリ15に対するデータの書き込み/読み出しの最小単位である。但し、ホストシステムから要求されたデータ書き込み対象領域が属するブロックに既にデータが書き込まれている場合には、一旦当該ブロックのデータを読み出して該当部分を書き込みデータで置き換え、その置き換え後のブロックデータを例えば別のブロックに書き込む動作(リード・ベリファイ・ライト動作)、つまりブロック単位のデータ書き込みが行われる。
【0034】
また、フラッシュメモリ15の領域は、上記の如くブロック単位で管理される他に、論理アドレス中の論理ブロックアドレスの所定フィールドの内容が共通の上記論理アドレス範囲に含まれる、ブロックの群からなるゾーン154-i(i=0〜2m−1、ここではm=2)を単位としても管理される。このゾーン154-iの総数2mは、LTPb152-iの総数に一致する。各ゾーン154-iの1つ、例えばゾーン154-0は、システム管理情報等が保存される管理領域153を含むシステム領域に割り当てられている。フラッシュメモリ15の管理領域153を除く領域は、画像データ、音楽データ等のデジタルコンテンツを保存するためのデータ領域として用いられる。管理領域153には、データ領域に保存されているディジタルコンテンツを使用するのに必要な、コンテンツ復号キー、コピー制御情報、移動制御情報等の重要な情報が保存されている。このため本実施形態では、管理領域153は、秘匿された特定手続にてのみアクセスでき、ホストシステム(ユーザ)からはアクセスできない。
【0035】
本実施形態では、フラッシュメモリ15の各ブロックは、図2(b)のように、セクタアドレスが0〜31のセクタ、つまりセクタ0〜31の32個のセクタから構成される。また、各セクタは512バイトから構成される。したがって本実施形態では、1ブロックは16KBから構成される。この場合、論理アドレス(LA)が32ビットで構成されるものとすると、図3に示すように、論理アドレスの下位側の14ビットを除く残り18ビット、即ち論理アドレスの上位側の18ビットは、該当するブロックに割り当てられている論理ブロックアドレス(以下、18ビット論理ブロックアドレスと称する)31を表す。また、18ビット論理ブロックアドレス31の下位側に続く5ビットは、当該論理ブロックアドレス31で指定されるブロック内のセクタの位置を示すセクタアドレス32を表す。また、残りの9ビット、つまり論理アドレスの下位側の9ビットは、セクタアドレス32で指定されるセクタ内のバイトデータの位置を示すセクタ内アドレス33を表す。但し本実施形態では、上記18ビット論理ブロックアドレス31の上位4ビットを除く残り14ビット、を実質的な論理ブロックアドレス(以下、14ビット論理ブロックアドレスと称する)34として用いるようにしている。その理由は次の通りである。
【0036】
まず、本実施形態で適用可能なメモリカードは、フラッシュメモリ15の最大容量を256MBに制限している。この場合、フラッシュメモリ15をアクセスするための32ビットの論理アドレスの上位4ビット、つまり18ビット論理ブロックアドレス31の上位4ビットは常に“0”となる。したがって、18ビット論理ブロックアドレス31の上位4ビットを除く残り14ビット、つまり14ビット論理ブロックアドレス34だけでブロック指定が可能となるためである。
【0037】
さて本実施形態では、フラッシュメモリ15に64MBフラッシュメモリを使用しているものとする。この場合、フラッシュメモリ15のブロック数は、上記したように1ブロックが16KBであることから、64MB/16KB=4K=4,096となる。
【0038】
フラッシュメモリ15の2m個のゾーン154-iには、当該ゾーン154-iを構成する各ブロックに割り当てられる論理ブロックアドレス(LBA)を当該ブロックの物理ブロックアドレス(PBA)に変換するためのアドレス変換テーブルとしてのLTPb152-i(i=0〜2m−1)が予め保存されている。この2m個のLTPb152-iのうち、管理領域153を含むゾーン154-0、即ちシステム領域に保存されているLTPb152-i、つまりLTPb152-0は、上記したようにRAM14のLTPb領域143にも格納される。また、LTPb152-0を除く(2m−1)個のLTPb152-iのいずれか1つは、上記したようにRAM14のLTPb領域142にも格納される。
【0039】
2m個のLTPb152-iの総エントリ数は、フラッシュメモリ15の総ブロック数に一致し、当該フラッシュメモリ15が64MBの例では4K(4,096)である。また、1つのLTPb152-iのサイズは、RAM14上に確保可能なLTPb領域142,143のサイズに等しい。ここでは、LTPb領域142,143のサイズは2KBである。したがって、LTPb152-iの1エントリのサイズを2バイトとすると、2KBのLTPb領域142,143に格納可能なLTPb152-iのエントリ数は、2KB/2バイト=1K(=1,024)である。ゾーン154-iを構成するブロックの数は、このLTPb152-iのエントリ数1K(=1,024)に一致する。また、LTPb152-iの数(2m)は、フラッシュメモリ15のブロック数が4K(=4,096)の本実施形態では、4K/1K=4(m=2)となる。つまり本実施形態では、図1に示すように、4つのLTPb152-0〜152-3がフラッシュメモリ15のゾーン154-0〜154-3に分散して保存される。そしてLTPb152-i(i=0〜3)は、図2(c)に示すように、ゾーン154-i内の1,024個のブロック(ブロック0〜1023)のうちのいずれか1つのブロックjの所定領域、例えば先頭領域に保存される。
【0040】
ここでLTPb152-iのエントリ数とエントリ内容について述べる。
LTPb152-iのエントリ数は、フラッシュメモリ15の最大容量を256MBに制限している本実施形態では、18ビット論理ブロックアドレス31の上位8ビット(14ビット論理ブロックアドレス34の上位4ビット)の値がiとなるブロックの数、即ち210=1,024個に一致する。よって各LTPb152-i(i=0〜3)は、エントリ0〜1023の1,024個のエントリを有する。このLTPb152-iの1,024個のエントリ(エントリ0〜1023)の各々には、それぞれ対応するブロックについて、そのブロックのフラッシュメモリ15上の位置を示す物理アドレス情報、例えば物理アドレス(Physical Address;PA)中の物理ブロックアドレス、が該当する論理ブロックアドレスに対応付けて設定される。このエントリに設定される物理ブロックアドレスは、物理アドレスのうちの、セクタアドレスとセクタ内アドレスとを除く部分であり、ブロックを指し示すためのポインタ(ブロックポインタ)として用いられる。
【0041】
以上のLTPb152-iを用いることで、論理アドレス(LA)を、当該論理アドレス(LA)に対応するフラッシュメモリ15の物理アドレス(PA)に変換すること(Logical address To Physical address translation;LTP)ができる。具体的には、論理アドレス(LA)中の14ビット論理ブロックアドレス(LBA)34によりLTPb152-iを参照することで、図3に示すように、当該論理ブロックアドレス34をLTPb152-i内の対応するエントリに登録されている物理ブロックアドレス(PBA)35に変換する。そして、この物理ブロックアドレス35の下位側に上記論理アドレス中の下位14ビット(セクタアドレス32とセクタ内アドレス33とからなる14ビット)を連結することで、上記論理アドレスに対応する物理アドレス(PA)を取得する。
【0042】
次にLTPa151のエントリ数とエントリ内容について述べる。LTPa151のエントリ数は、フラッシュメモリ15に保存されているLTPb152-iの個数、即ち2m個に一致する。LTPa151の2m個のエントリ(エントリ0〜2m−1)の各々には、フラッシュメモリ15に保存されている2m個のLTPb152-iの各開始位置の、当該フラッシュメモリ15上の物理アドレスが、それぞれ該当するiの値に対応付けて設定される。このLTPb152-i内のエントリに設定される物理アドレスは、対応するLTPb152-iを指し示すためのポインタ(LTPbポインタ)として用いられる。本実施形態において、LTPa151のエントリの数は、LTPb152-iの個数が2m=4の例では4である。したがって、LTPa151のエントリは、上記14ビット論理ブロックアドレス34の上位4ビット中の下位側の2ビットで参照可能である。但し本実施形態では、14ビット論理ブロックアドレス34の上位4ビットの値によりLTPa151のエントリを参照する。その理由は、フラッシュメモリ15の最大容量を256MBに制限し、LTPb領域142を2KBとした場合、LTPb152-iの個数が最大16となり得ることを考慮したためである。つまり、14ビット論理ブロックアドレス34の上位4ビットの値によりLTPa151のエントリを参照するならば、フラッシュメモリ15の容量が256MBになっても、64MBの場合と同様の手続きでLTPa151が参照できるようにしたためである。このLTPa151を用いることで、論理アドレス(LA)を物理アドレス(PA)に変換するのに必要なLTPb152-iの、フラッシュメモリ15上の保存位置の情報を取得できる。
【0043】
さて、上記ブロック内の各セクタ(セクタ0〜31)には、図2(b)に示すように、データ部20の他に冗長部21が設けられている。この冗長部21は、エラー訂正符号(ECC)が設定されるフィールド(図示せず)の他に、該当するセクタが属するブロックに割り当てられた論理ブロックアドレス(LBA)が設定されるフィールド(LBAフィールド)22と、2種のフラグFa,Fbが設定されるフラグフィールド23とを含む。フラグFa,Fbは、Fa=1,Fb=1のとき対応するセクタが属するブロックが未使用または無効であることを示し、Fa=1,Fb=0のとき当該ブロックがLTPb152-i以外の有効データの保存に用いられていることを示す。またフラグFa,Fbは、Fa=0,Fb=1のとき対応するセクタが属するブロックが現在LTPb152-iの保存に利用されていることを示し、Fa=0,Fb=0のとき当該ブロックが古くなったLTPb152-i、即ち無効化されたLTPb152-iの保存に利用されていることを示す。このフラグFa,Fbの状態の組み合わせと、当該組み合わせで定義される対応するセクタが属するブロックの使用状態との関係の一例を図4に示す。
【0044】
フラッシュメモリ15の各ゾーン154-iには、図2(c)に示すように、アサインテーブル(以下、ATと称する)155-iがLTPb152-iと対をなして予め保存されている。したがって、フラッシュメモリ15のゾーン数がゾーン154-0〜154-3の4つの本実施形態では、当該ゾーン154-0〜154-3には、図1に示すように、それぞれAT155-0〜155-3がLTPb152-0〜152-3と対をなして保存されている。ここで、LTPb152-iとAT155-iとの対は、図2(c)に示すように、ゾーン154-i内の同一ブロックjの所定領域、例えば先頭領域に保存される。また、LTPb152-i及びAT155-iが保存されるブロックjには、当該LTPb152-i及びAT155-i以外の情報は保存されないように制御される。
【0045】
AT155-iは、図5に示すように、対応するゾーン154-iの各ブロック(ブロック0〜1023)が使用されているか否かを示すフラグF0〜F1023から構成される。ここでは、Fj(j=0〜1023)は、Fj=0のときブロックjが使用されていることを示し、Fj=1のときブロックjが使用されていないこと、つまりブロックjが空きブロックであることを示す。AT155-iには、図5に示すように、ポインタ(フラグポインタ)Pが付されている。このポインタPは、AT155-i内の1つのフラグFjの位置、例えば最も最近に参照したフラグFjの位置を指し示す。
【0046】
次に、図1の構成のメモリカードにおける動作について、(1)立ち上げ時の処理と、(2)アクセス要求受け付け時処理とについて順次説明する。
【0047】
(1)立ち上げ時の処理
まず、図1のメモリカードの立ち上げ時、例えばパワーオン時の処理について、図6のフローチャートを参照して説明する。
【0048】
コントローラ12内のマイクロプロセッサ121は、図1のメモリカードに例えばホストシステムの電源が供給されると、フラッシュメモリ15に保存されているLTPb152-iのエントリ数Aを決定する(ステップS1)。このLTPb152-iのエントリ数Aは、例えば予め定められているLTPb領域142,143のサイズBと、LTPb152-iの1エントリのサイズCとから、A=B/Cにより決定される。ここでは、B=2KB、C=2バイトであるものとすると、A=2KB/2バイト=1K=1,024となる。
【0049】
次にマイクロプロセッサ121は、LTPb152-iの数Dを決定する(ステップS2)。このLTPb152-iの数D(=2m)は、フラッシュメモリ15の総ブロック数Eと、LTPb152-iのエントリ数Aとから、D=E/Aにより求められる。ここで、フラッシュメモリ15のブロック数Eは、1ブロックのサイズHと、フラッシュメモリ15の容量Iとから、E=I/Hにより算出される。また、上記1ブロックのサイズHは、1ブロックのセクタ数Fと1セクタのバイト数Gとから、H=F*Gにより算出される。ここでは、1ブロックのセクタ数Fが32、1セクタのバイト数が512であるものとすると、1ブロックのサイズHは、32*512=16KBである。この場合、I=64MBのフラッシュメモリ15のブロック数Eは、E=I/H=64MB/16KB=4K=4,096となる。
【0050】
マイクロプロセッサ121は、LTPb152-iの個数Dを決定すると、この個数Dをフラッシュメモリ15のゾーン数とする(ステップS3)。ここでは、A=1,024、D=4であることから、エントリ数が1,024の4つのLTPb152-0〜152-3が、フラッシュメモリ15の4つのゾーン154-0〜154-3にそれぞれ分散して予め保存される。但し、フラッシュメモリ15が未使用の状態では、LTPb152-0〜152-3の各エントリには何も書き込まれていない。
【0051】
次にマイクロプロセッサ121は、ゾーン154-i(及びLTPb152-i)を指定する変数iを初期値0に設定する(ステップS4)。そして変数iの指すゾーン154-iの各ブロックを順次参照して、LTPb152-iを探す(ステップS5)。このステップS5の処理は、ゾーン154-iの各ブロックのうち、先頭セクタの冗長部21に設定されているフラグFa,Fbが0,1であるブロックj(jは0〜1023のいずれか)、即ち有効なLTPb152-iが保存されていることを示すセクタを持つブロックjを探すことにより実現される。
【0052】
マイクロプロセッサ121はLTPb152-iが保存されているブロックjを探すと、そのブロックjのフラッシュメモリ15上の位置で決まる、LTPb152-iのフラッシュメモリ15上の保存位置(先頭物理アドレス)を示すポインタ情報(LTPbポインタ)を作成する(ステップS6)。次にマイクロプロセッサ121は、変数iが0であるか否かを判定する(ステップS7)。もし、この例のように変数iが0であるならば、マイクロプロセッサ121はフラッシュメモリ15上のLTPb152-0,AT155-0、即ちシステム領域に割り当てられているゾーン154-0上のLTPb152-0,AT155-0を、RAM14の領域143,145にコピーして(ステップS8)、ステップS9に進む。これに対し、変数iが0でないならば、マイクロプロセッサ121はそのままステップS9に進む。
【0053】
マイクロプロセッサ121はステップS9において、変数iが1であるか否かを判定する。もし、変数iが1であるならば、マイクロプロセッサ121はフラッシュメモリ15のゾーン154-1に保存されているLTPb152-1,AT155-1を、RAM14の領域142,144にコピーして(ステップS10)、ステップS11に進む。なお、領域142,144にコピーされるLTPb,ATは、LTPb152-0,AT155-0以外のLTPb,AT、即ちシステム領域に割り当てられているゾーン154-0上のLTPb152-0,AT155-0以外のLTPb,ATであれば、例えばLTPb152-2,AT155-2または152-3,AT155-3であっても構わない。これに対し、変数iが1でないならば、マイクロプロセッサ121はそのままステップS11に進む。
【0054】
次にマイクロプロセッサ121はステップS11において、変数iを1インクリメントし、そのインクリメント後の変数iがLTPb数D(ここでは4)に一致するか否かを判定する(ステップS12)。もし、インクリメント後の変数iがLTPb数Dに一致していないなら、マイクロプロセッサ121は再びステップS5以降の処理を行う。これに対し、インクリメント後の変数iがLTPb数Dに一致しているならば、マイクロプロセッサ121は全てのLTPb152-i(ここではLTPb152-0〜152-3)のポインタ情報を作成したものと判断する。この場合、マイクロプロセッサ121は全LTPb152-iのポインタ情報が設定されたエントリ群からなるLTPa151を作成して、RAM14のLTPa領域141に格納する(ステップS13)。なお、各LTPb152-iのポインタ情報の作成をLTPa領域141上で作成位置をずらしながら行うならば、ステップS13の処理は不要となる。
【0055】
次に、マイクロプロセッサ121は、RAM14のLTPb領域143,142にコピーされたLTPb152-0,152-1を示す情報をレジスタ122に設定する(ステップS14)。本実施形態において、レジスタ122には、図1に示すように、16テーブル数分の有効フラグV0〜V15が保持される。これは、フラッシュメモリ15の容量が最大の256MBの場合に生成されるLTPb152-iの個数(16)を考慮したためである。ここでは、有効フラグV0,V1のみをオン(“1”に設定)することで、RAM14のLTPb領域143,142にLTPb152-0,152-1がコピーされていることが識別可能となる。つまり本実施形態では、レジスタ122内の有効フラグViが、RAM14上に存在するLTPb152-iを示す情報となる。なお、本実施形態では、RAM14のLTPb領域143にコピーされているLTPb152-iは常にLTPb152-0である。これに対し、RAM14のLTPb領域142にコピーされるLTPb152-iは、立ち上げ時はLTPb152-1であるものの、それ以降は後述するようにLTPb152-0以外のLTPb152-iに動的に切り替えられる。したがって、レジスタ122の各有効フラグViを、LTPb領域142にコピーされているLTPb152-iのみを示すのに用いても構わない。
【0056】
(2)アクセス要求受け付け時処理
次に、図1のメモリカードにおいて、ホストシステムからのフラッシュメモリ15に対するアクセス要求がホストインタフェース11で受け取られてマイクロプロセッサ121で受け付けられた場合の処理について、図7乃至図9のフローチャートを参照して説明する。
【0057】
まず、ホストシステムから送られるアクセス要求には、書き込みまたは読み出しのいずれのアクセスであるかを示すコマンドと、論理アドレス空間上のアクセス対象領域の先頭位置を示す論理アドレス(LA)と、当該領域のサイズとが含まれている。
【0058】
マイクロプロセッサ121は、ホストシステムからのアクセス要求中の論理アドレスが、フラッシュメモリ15のデータ領域154に割り当てられている論理アドレス空間の範囲内であるか否かを判定する(ステップS21)。
【0059】
もし、上記範囲外であるときは、マイクロプロセッサ121はアクセス違反としてホストシステムにエラーを通知する。これに対し、範囲内であるときは、マイクロプロセッサ121は、要求された論理アドレスに対応するLTPb152-iがRAM14上に存在するか否かを判定する(ステップS22)。なお、このステップS22の前に、上記要求された論理アドレスとサイズとから、複数のブロックにまたがるアクセス要求であるか否かを判定して、そうであればアクセス違反を返し、そうでない場合だけステップS22に進むようにするとよい。この他、複数のブロックにまたがるアクセス要求の場合に、当該アクセス要求を各ブロック毎のアクセス要求に変換し、内部的に複数のアクセス要求として処理するようにしてもよい。
【0060】
ここで、上記ステップS12での判定方法について述べる。
まずマイクロプロセッサ121は、要求された論理アドレス中の上記14ビット論理ブロックアドレス34の上位4ビットの値iで指定される、レジスタ122中の有効フラグViを参照する。そしてマイクロプロセッサ121は、参照した有効フラグViがオン状態にあるか否かにより、要求された論理アドレスに対応するLTPb152-iがRAM14上に存在するか否かを判定する。なお、14ビット論理ブロックアドレス34の上位4ビットの値iにより対応する有効フラグViを選択するセレクタを用意し、このセレクタの出力の論理状態に応じて、上記の判定を行うようにしてもよい。
【0061】
さて、要求された論理アドレスに対応するLTPb152-iがRAM14上に存在しないと判定された場合、マイクロプロセッサ121はフラッシュメモリ15からRAM14のLTPb領域142に当該LTPb152-iをコピーすると共に、当該LTPb152-iとフラッシュメモリ15上で対をなすAT155-iをRAM14のAT領域144にコピーする(ステップS23)。これにより、RAM14のLTPb領域142上のLTPbは、要求された論理アドレスに対応するLTPb152-iに置き換えられる。同時に、RAM14のAT領域144上のATは、このLTPb152-iと対をなすAT155-iに置き換えられる。ここで、LTPb152-iが保存されているフラッシュメモリ15上の領域の先頭位置の物理アドレスは、上記論理アドレス中の14ビット論理ブロックアドレス34の上位4ビットの値iにより、RAM14のLTPa領域141に格納されているLTPa151の対応エントリiを参照することで取得できる。
【0062】
このように本実施形態では、要求された論理アドレスに対応するLTPb152-iがRAM14上に存在しないと判定された場合、RAM14のLTPb領域142,143のLTPbのうち、LTPb領域142上のLTPbのみが当該LTPb152-iとの置き換えの対象となる。これにより、RAM14のLTPb領域143上のLTPb152-0は当該RAM14に常駐する。このLTPb152-0は、頻繁にアクセスされるシステム領域に割り当てられているゾーン154-0をアクセスする際のアドレス変換に用いられるものである。したがって、LTPb152-0をRAM14に常駐させることで、システム領域へのアクセスが頻繁に発生しても、LTPbの置き換えは発生せず、常に当該RAM14上のLTPb152-0を利用して高速にアドレス変換を行うことができる。
【0063】
マイクロプロセッサ121はステップS23を実行すると、上記論理アドレス中の14ビット論理ブロックアドレス34の上位4ビットの値iで指定される、レジスタ122中の有効フラグViをオン(“1”に設定)する(ステップS24)。このとき、有効フラグVi及びV0以外に、既にオン状態にある別の有効フラグが存在するときは、その有効フラグをオフ(“0”に設定)する。
【0064】
マイクロプロセッサ121は、要求された論理アドレスに対応するLTPb152-iがRAM14上に存在しないと判定された場合には上記ステップS23,S24の後に、存在すると判定された場合にはそのまま、ステップS25に進む。マイクロプロセッサ121はステップS25において、LTPb領域142上のLTPb152-i(iは1〜3のいずれか)またはLTPb領域143上のLTPb152-0を利用して、要求された論理アドレスを物理アドレスに変換するアドレス変換処理を行う。
【0065】
以下、ステップS25のアドレス変換処理の詳細を、図9のフローチャートを参照して説明する。
まずマイクロプロセッサ121は、要求された論理アドレス(LA)中の14ビット論理ブロックアドレス34により、LTPb領域142上のLTPb152-iまたはLTPb領域143上のLTPb152-0の対応エントリを参照する(ステップS61)。以下の説明では、LTPb領域142上のLTPb152-i(iは1〜3のいずれか)またはLTPb領域143上のLTPb152-0を、煩雑さを避けるために、LTPb領域142または143上のLTPb152-i(iは0〜3のいずれか)、或いは単にLTPb152-i(iは0〜3のいずれか)と表現することがある。また、AT領域144上のAT155-i(iは1〜3のいずれか)またはAT領域145上のAT155-0を、煩雑さを避けるために、AT領域144または145上のAT155-i(iは0〜3のいずれか)、或いは単にAT155-i(iは0〜3のいずれか)と表現することがある。
【0066】
次にマイクロプロセッサ121は、参照したエントリにデータが書かれているか否か、つまり当該エントリが非消去状態にあるか否かにより、14ビット論理ブロックアドレス34で指定されるブロックの物理アドレス情報が当該エントリに設定されているか否かを判定する(ステップS62)。本実施形態において、LTPb152-iのエントリに登録される物理アドレス情報は、物理アドレスの下位14ビットを除く物理ブロックアドレスである。この物理ブロックアドレスの下位側に全ビットが“0”の14ビットのデータを連結すれば、該当するブロックの先頭物理アドレスが得られる。このため、LTPb152-iのエントリには、物理アドレス情報として物理アドレスが登録されているのと実質的には同じである。したがって、上記ステップS62は、上記参照エントリに物理アドレス(PA)が設定されているか否かを判定するのと等価である。
【0067】
マイクロプロセッサ121は、参照エントリに物理アドレス情報(物理ブロックアドレス)が設定されている場合には、ホストシステムからのアクセス要求が書き込みまたは読み出しのいずれであるかを判定する(ステップS63)。もし、書き込みアクセスの場合には、マイクロプロセッサ121は、要求された論理アドレス(LA)中の14ビット論理ブロックアドレス34が割り当てられているブロックk(kは0〜1023のいずれか)へのオーバーライト、即ち既にデータが書き込まれているブロックkへの新たなデータ書き込みが発生するものと判断し、オーバーライトフラグをセットする(ステップS64)。
【0068】
次にマイクロプロセッサ121は、RAM14のAT領域144または145上のAT155-iのうち、ステップS61で参照したLTPb152-iと対をなすAT155-iに付加されているポインタPを1インクリメントして、そのインクリメント後のポインタPが1024に達したか否かを判定する(ステップS65,S66)。もし、インクリメント後のポインタPが1024に達したならば、マイクロプロセッサ121はインクリメント前のポインタPの指し示すAT155-i内のフラグFjが最終フラグF1023であるものと判断する。この場合、マイクロプロセッサ121はポインタPがAT155-i内の先頭フラグF0を指すように、当該ポインタPを0に更新して(ステップS67)、ステップS68に進む。これに対し、インクリメント後のポインタPが1024に達していないなら、マイクロプロセッサ121はそのままステップS68に進む。マイクロプロセッサ121はステップS68において、現在のポインタPの指し示す、AT155-i内のフラグFjを参照する。そしてマイクロプロセッサ121は、Fj=1であるか否かにより、ゾーン154-i内のブロックjが空きブロックであるか否かを判定する(ステップS69)。
【0069】
もし、ゾーン154-i内のブロックjが空きブロックでないならば、マイクロプロセッサ121は上記ステップS65以降の処理を再度実行して、ポインタPに従ってAT155-i内の後続のフラグFjを参照し、Fj=1であるか否かを判定する(ステップS65〜S69)。
【0070】
このようにマイクロプロセッサ121は、RAM14上のAT155-i内でFj=1のフラグを検出するまで、ポインタPをインクリメントしながら、当該ポインタPの指し示すAT155-i内のフラグFjを参照する動作を繰り返す。そしてマイクロプロセッサ121は、Fj=1のフラグを検出すると(ステップS69)、当該フラグFjに対応するゾーン154-i上のブロックjは空きブロックであるとして、当該ブロックjを確保する(ステップS70)。ここで、空きブロックjを確保するとは、当該ブロックjを消去状態に設定することをいう。またマイクロプロセッサ121は、このステップS70において、RAM14上のAT155-i内の上記検出したFj=1のフラグを0に、上記ブロックkに対応するフラグFkを1に書き換えることで、上記確保したブロックjを使用中ブロックに、ブロックkを空きブロックに切り替える。またマイクロプロセッサ121はステップS70において、確保したブロックj内の全セクタ(セクタ0〜31)を対象に、そのセクタの冗長部21のLBAフィールド22に、上記要求された論理アドレス中の論理ブロックアドレスを書き込む。これにより、確保したブロックjに、要求された論理アドレス中の論理ブロックアドレスが割り当てられる。この時点において、冗長部21のフラグFa,Fbは1,1に設定されている。
【0071】
次にマイクロプロセッサ121は、ステップS61で参照した、RAM14のLTPb領域142または143上のLTPb152-i内のエントリに、上記確保した(論理ブロックアドレスの割り当てが行われた)ブロックjの先頭位置の物理アドレス中の14ビット物理ブロックアドレスを書き込む(ステップS71)。そしてマイクロプロセッサ121はステップS72に進み、ステップS71で新たに書き込んだ物理ブロックアドレスを、要求された論理アドレス中の14ビット論理ブロックアドレス34に対応する物理ブロックアドレス35として取得する。
【0072】
このように本実施形態では、ホストシステムから要求された論理アドレス中の14ビット論理ブロックアドレス34が割り当てられているブロックkへのオーバーライトが発生する場合、当該論理ブロックアドレス34の割り当て先を、このブロックkから新たに確保した空きブロックjに変更している。その理由は、同一ブロックへのオーバーライトが集中するのを防ぎ、各ブロックのデータ消去回数の平均化を図ることにより、フラッシュメモリ15の寿命を極力延ばすためである。
【0073】
一方、参照エントリに物理ブロックアドレスが設定され、且つ読み出しアクセスの場合には(ステップS62,S63)、マイクロプロセッサ121はそのままステップS72に進んで、当該物理ブロックアドレスを上記要求された論理アドレス中の14ビット論理ブロックアドレス34に対応する物理ブロックアドレス35として取得する。
【0074】
またマイクロプロセッサ121は、参照エントリに物理ブロックアドレスが設定されていない場合にも(ステップS62)、ホストシステムからのアクセス要求が書き込みまたは読み出しのいずれであるかを判定する(ステップS74)。ここで、参照エントリに物理ブロックアドレスが設定されていないということは、上記要求された論理アドレス中の14ビット論理ブロックアドレス34が割り当てられているブロックが一旦消去状態に設定された後、当該ブロックへのデータ書き込みが1度も発生していないことを示す。そこで、参照エントリに物理ブロックアドレスが設定されておらず、且つ読み出しアクセスの場合には、マイクロプロセッサ121は消去フラグをセットして(ステップS75)、アドレス変換処理を強制終了する。
【0075】
これに対し、参照エントリに物理ブロックアドレスが設定されておらず、且つ書き込みアクセスの場合には(ステップS62,S74)、マイクロプロセッサ121は、上述した参照エントリに物理ブロックアドレスが設定されていて、且つ書き込みアクセスの場合と同様の処理(ステップS65〜S72)を実行する。但しオーバーライトは発生しないため、オーバーライトフラグのセット処理(ステップS64)は行われない。
【0076】
さてマイクロプロセッサ121は、ステップS72を実行すると、当該ステップS72で取得した物理ブロックアドレスの下位側に、上記要求された論理アドレス(LA)の下位14ビット、即ち5ビットのセクタアドレス32と9ビットのセクタ内アドレス33とからなる14ビットを連結することで、目的の物理アドレス(PA)を得る(ステップS73)。
【0077】
以上により、上記要求された論理アドレス(LA)を物理アドレス(PA)に変換するステップS25のアドレス変換処理は終了となる。なお、下位14ビットが全て“0”の物理アドレスが取得される構成を適用する場合には、当該物理アドレスに上記要求された論理アドレスの下位14ビットを加算することでも、目的の物理アドレス(PA)が得られる。
【0078】
マイクロプロセッサ121は、ステップS25のアドレス変換処理を終了すると、ホストシステムからのアクセス要求が書き込みまたは読み出しのいずれであるかを判定する(ステップS26)。もし、書き込みアクセスの場合には、マイクロプロセッサ121は、オーバーライトフラグがセットされているか否かを判定する(ステップS27)。
【0079】
マイクロプロセッサ121は、オーバーライトフラグがセットされている場合、上記要求された論理アドレス中の論理ブロックアドレス34が本来割り当てられていたブロックk(つまり旧ブロックk)のデータを読み込む(ステップS28)。そしてマイクロプロセッサ121は、上記論理ブロックアドレス34が新たに割り当てられたブロックj(つまり新ブロックj)を対象とする書き込み用ブロックデータを生成する(ステップS29)。この書き込み用ブロックデータは、ブロックkのデータのうち、ホストシステムから要求された書き込みデータに対応するデータ部分を、当該書き込みデータで置き換えることで生成される。次にマイクロプロセッサ121は、生成した書き込み用ブロックデータを新ブロックjに書き込む(ステップS30)。この際、新ブロックj内のデータが書き込まれる各セクタの冗長部21のフラグFbは、1から0に書き換えられ、当該冗長部21のフラグFa,Fbは1,0となる。
【0080】
一方、オーバーライトフラグがセットされていない場合、ステップS25のアドレス変換処理で得られた物理アドレス(PA)に基づいてフラッシュメモリ15をアクセスして、当該物理アドレス(PA)で指定される位置から始まる要求されたサイズ分の領域を対象とする要求されたデータの書き込みを行う(ステップS31)。
【0081】
また、ホストシステムからのアクセス要求が読み出しの場合(ステップS26)、マイクロプロセッサ121は消去フラグがセットされているか否かを判定する(ステップS32)。もし、消去フラグがセットされていない場合、マイクロプロセッサ121は、ステップS25のアドレス変換処理で得られた物理アドレス(PA)に基づいてフラッシュメモリ15をアクセスして、当該物理アドレス(PA)で指定される位置から始まる要求されたサイズ分の領域を対象とするデータ読み出しを行う(ステップS31)。このステップS31で読み出しされたデータはホストインタフェース11を介してホストシステムに転送される。これに対し、消去フラグがセットされている場合、つまりステップS25のアドレス変換処理で得られた物理アドレス(PA)で指定されるブロックが消去状態にある場合(ステップS32)、マイクロプロセッサ121は、要求されたサイズ分の全ビットが“1”のデータを読み出しデータとして生成して、そのデータをホストインタフェース11を介してホストシステムに転送する(ステップS33)。
【0082】
マイクロプロセッサ121は、上記ステップS30またはS31またはS33を実行すると、ステップS34に進んで、書き込みまたは読み出しのいずれのアクセスであったかを判定する。もし、読み出しアクセスの場合であれば、マイクロプロセッサ121は一連のアクセス要求受け付け時処理を終了する。なお、ステップS33を実行した場合には、そのままアクセス要求受け付け時処理を終了することも可能である。
【0083】
これに対し、書き込みアクセスの場合には、マイクロプロセッサ121は書き込みエラーの有無を判定する(ステップS35)。この判定は、書き込んだデータを読み出し、その読み出したデータと元の書き込みデータとを比較することで行われる。明らかなように、比較結果が不一致を示している場合に書き込みエラーと判定される。
【0084】
マイクロプロセッサ121は、書き込みエラーがある場合には、書き込みエラーが発生したセクタを含むブロック全体が欠陥であるものとして、つまりブロックエラーであるものとして、ブロック全体を他の空きブロックに代替するための処理を次のように行う。
【0085】
まずマイクロプロセッサ121は、上記ステップS65〜S71と同様の処理(ステップS36〜S42)を実行する。即ちマイクロプロセッサ121は、RAM14のAT領域144または145上のAT155-iのうち、ステップS61で参照したLTPb152-iと対をなすAT155-iからFj=1のフラグを検出する(ステップS36〜S40)。そしてマイクロプロセッサ121は、フラッシュメモリ15上のゾーン154-iから、上記検出したフラグFjに対応する空きブロックjを代替先のブロックとして確保し、このブロックj内の全セクタ(セクタ0〜31)を対象に、そのセクタの冗長部21のLBAフィールド22に、上記要求された論理アドレス中の論理ブロックアドレスを書き込む(ステップS41)。また、マイクロプロセッサ121は、ステップS61で参照した、RAM14上のLTPb152-i内のエントリの内容を、上記確保したブロックjの物理ブロックアドレスに更新する(ステップS42)。この場合、ステップS61で参照したLTPb152-iと対をなすRAM14内のAT155-iのフラグのうち、書き込みエラーとなったブロックj(以下、旧ブロックkと称する)に対応するフラグFkは1に、ステップS41で新たに確保した空きブロックj(以下、新ブロックjと称する)に対応するフラグFjは0に書き換えられる。
【0086】
次にマイクロプロセッサ121は、オーバーライトフラグがセットされているか否かを判定する(ステップS43)。もし、オーバーライトフラグがセットされている場合、マイクロプロセッサ121は上記ステップS30と同様の処理(ステップS44)を実行する。即ちマイクロプロセッサ121は、書き込みエラーとなった旧ブロックkへの書き込みに用いられたブロックデータを、新ブロックjに書き込む(ステップS44)。これに対し、オーバーライトフラグがセットされていない場合には(ステップS43)、マイクロプロセッサ121は上記ステップS31と同様の処理(ステップS45)を実行して、要求されたデータを新ブロックjに書き込む。マイクロプロセッサ121はステップS44またはS45を実行すると、ステップS35に戻る。
【0087】
一方、ステップS35で書き込みエラーでないと判定されたなら、マイクロプロセッサ121は、フラッシュメモリ15のゾーン154-i上のLTPb152-i及びAT155-iの更新を行う(ステップS46)。このLTPb152-i及びAT155-iの更新処理は、ゾーン154-i上の空きブロックを確保して、当該空きブロックに、更新後のLTPb152-iと更新後のAT155-iとの対を書き込むことで実現される。ここで更新後のLTPb152-iとは、ステップS61で参照したエントリを含む、RAM14上に置かれているLTPb152-iである。また更新後のAT155-iとは、上記LTPb152-iと対をなしてRAM14上に置かれているAT155-iである。
【0088】
また上記ステップS46では、フラッシュメモリ15上の更新前のLTPb152-i及びAT155-iが保存されている元のブロックを対象に、対応する各セクタの冗長部21のフラグFbが1から0に書き換えられ、当該冗長部21のフラグFa,Fbは0,0となる。これにより、このブロック内のLTPb152-iが古いLTPbであることが示される。
【0089】
このように本実施形態では、更新後のLTPb152-i及びAT155-iを、更新前のLTPb152-i及びAT155-iが保存されているブロックではなくて、新たに確保した空きブロックに書き込むようにしている。その理由は、同一ブロックへのオーバーライトが集中するのを防ぎ、各ブロックのデータ消去回数の平均化を図ることにより、フラッシュメモリ15の寿命を極力延ばすためである。マイクロプロセッサ121は、ステップS45を実行すると一連のアクセス要求受け付け時処理を終了する。
【0090】
以上に述べた実施形態では、フラッシュメモリ15に保存されているLTPb152-0〜152-3のうちの2つがRAM14にも格納されるものとして説明したが、フラッシュメモリ15に保存されているLTPbの総数よりも少ない複数のLTPbがRAM14にも格納される構成であればよい。
【0091】
なお、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題の少なくとも1つが解決でき、発明の効果の欄で述べられている効果の少なくとも1つが得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【0092】
【発明の効果】
以上詳述したように本発明によれば、論理アドレスを物理アドレスに変換するためのアドレス変換テーブルが複数のアドレス変換テーブルに分割されて書き換え可能不揮発性メモリ上に保存される一方、そのうち当該テーブルの総数より少ない数の複数のテーブルが揮発性メモリ上のアドレス変換テーブル領域に置かれてアドレス変換に用いられる構成としたので、書き換え可能不揮発性メモリの記憶容量が増加しても揮発性メモリの容量が増加するのを抑えながら、書き換え可能不揮発性メモリをアクセスするために与えられた論理アドレスに対応するアドレス変換テーブルが揮発性メモリ上に存在しないテーブルミスの発生頻度を少なくできる。
【0093】
また、本発明によれば、上記テーブルミスの場合に、揮発性メモリ上の複数のアドレス変換テーブルのうち、システム領域に対応するアドレス変換テーブルを除くいずれか1つのテーブルを目的のアドレス変換テーブルで置き換える構成としたので、システム領域に対応するアドレス変換テーブルを揮発性メモリに常駐させることができ、これにより書き換え可能不揮発性メモリの記憶容量が増加しても揮発性メモリの容量が増加するのを抑えながら、頻繁にアクセスされるシステム領域へのアクセス要求に対しては常にテーブルミスの発生を招くことなく高速アドレス変換を実現し、またシステム領域以外の領域へのアクセス要求に対しては、テーブルミス時のペナルティを最小限に抑えてリアルタイム用途に対応することができる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係るメモリカードの全体構成を示すブロック図。
【図2】図1中のフラッシュメモリ15の管理単位としてのブロックと、ブロックを構成する各セクタの冗長部と、フラッシュメモリ15の各ゾーン154-i毎に保存されるLTPb152-i及びAT155-iの保存位置とを説明するための図。
【図3】同実施形態で適用される論理アドレスと物理アドレスとの対応関係を説明するための図。
【図4】各セクタの冗長部21内のフラグFa,Fbの状態の組み合わせと、当該組み合わせで定義される対応するセクタが属するブロックの使用状態との関係の一例を示す図。
【図5】AT155-iのデータ構造例を示す図。
【図6】同実施形態におけるメモリカードの立ち上げ時の処理を説明するためのフローチャート。
【図7】同実施形態におけるアクセス要求受け付け時処理を説明するためのフローチャートの一部を示す図。
【図8】同実施形態におけるアクセス要求受け付け時処理を説明するためのフローチャートの残りを示す図。
【図9】図7中のステップS25のアドレス変換処理の詳細な手順を説明するためのフローチャート。
【符号の説明】
12…コントローラ
13…ROM
14…RAM(揮発性メモリ)
15…フラッシュメモリ(書き換え可能不揮発性メモリ)
121…マイクロプロセッサ(MPU、アドレス変換手段、ヒット/ミスヒット判定手段、コピー手段、割り当て手段、物理アドレス登録手段、ブロックエラー検出手段、ブロック代替手段、ポインタテーブル作成手段、テーブル更新手段)
122…レジスタ(REG、参照用テーブル指定手段)
141…LTPa領域(ポインタテーブル領域)
142,143…LTPb領域(アドレス変換テーブル領域)
144,145…AT領域(アサインテーブル領域)
151…LTPa(ポインタテーブル)
152-0〜152-3,152-i…LTPb(アドレス変換テーブル)
153…管理領域
154-0…ゾーン(システム領域)
154-1〜154-3,154-i…ゾーン
155-0〜155-3,155-i…AT(アサインテーブル)
Claims (19)
- 電子機器本体に装着して用いられる、書き換え可能な不揮発性メモリを搭載したメモリカードにおいて、
前記書き換え可能不揮発性メモリをアクセスするために前記電子機器本体から前記メモリカードに与えられる論理アドレスを物理アドレスに変換するのに用いられる、それぞれ異なる論理アドレス範囲に対応付けられた複数のアドレス変換テーブルであって、前記書き換え可能不揮発性メモリに保存される複数のアドレス変換テーブルと、
前記書き換え可能不揮発性メモリ上の前記複数のアドレス変換テーブルのうちの、当該テーブルの総数より少ない数の複数のテーブルを格納するためのアドレス変換テーブル領域が確保される揮発性メモリと、
前記電子機器本体から前記メモリカードに前記書き換え可能不揮発性メモリをアクセスするための論理アドレスが与えられた場合、前記揮発性メモリ上の前記アドレス変換テーブルを利用して当該論理アドレスを物理アドレスに変換するアドレス変換手段と、
前記変換された物理アドレスに基づき、前記書き換え可能な不揮発性メモリに対してデータの書き込みまたは読み出しを行うアクセス手段とを具備することを特徴とするメモリカード。 - 前記書き換え可能不揮発性メモリをアクセスするための論理アドレスが与えられた場合、当該論理アドレスが属する論理アドレス範囲に対応する前記アドレス変換テーブルが前記揮発性メモリ上に存在するか否かを判定するヒット/ミスヒット判定手段と、
前記ヒット/ミスヒット判定手段により前記対応するアドレス変換テーブルが前記揮発性メモリ上に存在しないと判定された場合、当該アドレス変換テーブルを前記書き換え可能不揮発性メモリから前記揮発性メモリ上の前記アドレス変換テーブル領域にコピーして、当該アドレス変換テーブルで前記アドレス変換テーブル領域上の元のアドレス変換テーブルを置き換えるコピー手段とを更に具備することを特徴とする請求項1記載のメモリカード。 - 前記揮発性メモリには、前記複数のアドレス変換テーブルの前記書き換え可能不揮発性メモリ上の保存位置を示すポインタ情報が、当該アドレス変換テーブルに固有の論理アドレス範囲に対応付けて登録されるポインタテーブルを格納するためのポインタテーブル領域が確保され、
前記コピー手段は、前記ヒット/ミスヒット判定手段により前記対応するアドレス変換テーブルが前記揮発性メモリ上に存在しないと判定された場合、前記ポインタテーブルを参照して対応するポインタ情報を取得し、当該ポインタ情報の示す前記書き換え可能不揮発性メモリ上の前記アドレス変換テーブルを前記揮発性メモリ上の前記アドレス変換テーブル領域にコピーすることを特徴とする請求項2記載のメモリカード。 - 前記複数のアドレス変換テーブルのいずれが前記揮発性メモリに格納されているかを指定するための参照用テーブル指定手段を更に具備し、
前記ヒット/ミスヒット判定手段は、前記与えられた論理アドレスが属する論理アドレス範囲に対応する前記アドレス変換テーブルが前記揮発性メモリ上に存在するか否かを前記参照用テーブル指定手段の指定内容に基づいて判定することを特徴とする請求項2記載のメモリカード。 - 前記書き換え可能不揮発性メモリは、固有の論理ブロックアドレスが割り当てられる複数のブロックからなり、
前記複数のアドレス変換テーブルは、論理アドレス中の論理ブロックアドレスの所定フィールドの内容が共通の前記論理アドレス範囲に含まれる、前記書き換え可能不揮発性メモリ上のブロックの群、を単位に用意され、前記論理ブロックアドレスの前記所定フィールドの内容が共通のブロックの群と同数の、当該ブロックに割り当てられる論理ブロックアドレスにより指定可能なエントリの群であって、当該ブロックの前記書き換え可能不揮発性メモリ上の位置を示す物理アドレス情報を登録するためのエントリの群を有しており、
前記ヒット/ミスヒット判定手段は、前記与えられた論理アドレスが属する論理アドレス範囲を、当該論理アドレス中の論理ブロックアドレスの前記所定フィールドの内容の示す論理アドレス範囲として、この論理アドレス範囲に対応する前記アドレス変換テーブルが前記揮発性メモリ上に存在するか否かを判定し、
前記アドレス変換手段は、前記ヒット/ミスヒット判定手段により前記対応するアドレス変換テーブルが前記揮発性メモリ上に存在すると判定された場合には、前記与えられた論理アドレス中の論理ブロックアドレスにより当該揮発性メモリ上の前記アドレス変換テーブルの対応するエントリを参照することで、前記与えられた論理アドレスを対応する物理アドレスに変換し、存在しないと判定された場合には当該アドレス変換テーブルが前記コピー手段により前記揮発性メモリにコピーされるのを待って、前記与えられた論理アドレス中の論理ブロックアドレスにより当該揮発性メモリ上の前記アドレス変換テーブルの対応するエントリを参照することで、前記与えられた論理アドレスを対応する物理アドレスに変換することを特徴とする請求項2記載のメモリカード。 - 前記アドレス変換手段により参照された前記アドレス変換テーブルのエントリに物理アドレス情報が登録されていない場合、前記書き換え可能不揮発性メモリ上の空きブロックを探して当該ブロックに前記与えられた論理アドレス中の論理ブロックアドレスを割り当てる割り当て手段と、
前記割り当て手段により論理ブロックアドレスが割り当てられたブロックの物理アドレス情報を、前記揮発性メモリ上の前記アドレス変換テーブルの参照エントリと、当該アドレス変換テーブルの参照エントリに対応する、前記書き換え可能不揮発性メモリ上のアドレス変換テーブルのエントリとに書き込む物理アドレス登録手段とを更に具備することを特徴とする請求項5記載のメモリカード。 - 前記アドレス変換手段により変換された物理アドレスに基づいて前記書き換え可能不揮発性メモリに対する書き込みが行われた場合に、ブロックエラーの発生の有無を検出するブロックエラー検出手段と、
前記ブロックエラー検出手段によりブロックエラーの発生が検出された場合、前記書き換え可能不揮発性メモリ上の空きブロックを探して当該ブロックに前記与えられた論理アドレス中の論理ブロックアドレスを割り当てて、当該ブロックの物理アドレス情報で、前記揮発性メモリ上の前記アドレス変換テーブルの参照エントリと、当該アドレス変換テーブルの参照エントリに対応する、前記書き換え可能不揮発性メモリ上のアドレス変換テーブルのエントリとを更新するブロック代替手段とを更に具備することを特徴とする請求項5記載のメモリカード。 - 前記コピー手段は、前記メモリカードの立ち上げ時に、前記書き換え可能不揮発性メモリ上の前記複数のアドレス変換テーブルのうちの、当該テーブルの総数より少ない数の複数のテーブルを、前記揮発性メモリ上の前記アドレス変換テーブル領域にコピーすることを特徴とする請求項5記載のメモリカード。
- 前記揮発性メモリには、前記書き換え可能不揮発性メモリに保存されている前記複数のアドレス変換テーブルの当該不揮発性メモリ上の保存位置を示すポインタ情報が、当該アドレス変換テーブルに固有の、論理ブロックアドレスの前記所定フィールドの内容に対応付けて登録されるポインタテーブルを格納するためのポインタテーブル領域が確保されており、
前記コピー手段は、前記ヒット/ミスヒット判定手段により前記対応するアドレス変換テーブルが前記揮発性メモリ上に存在しないと判定された場合、前記与えられた論理アドレス中の論理ブロックアドレスの前記所定フィールドの内容により前記ポインタテーブルを参照して対応するポインタ情報を取得し、当該ポインタ情報の示す前記書き換え可能不揮発性メモリ上の前記アドレス変換テーブルを前記揮発性メモリ上の前記アドレス変換テーブル領域にコピーすることを特徴とする請求項5記載のメモリカード。 - 前記メモリカードの立ち上げ時に、前記ポインタテーブルを作成して前記揮発性メモリの前記ポインタテーブル領域に格納するポインタテーブル作成手段を更に具備することを特徴とする請求項9記載のメモリカード。
- 前記書き換え可能不揮発性メモリは、論理アドレス中の論理ブロックアドレスの前記所定フィールドの内容が共通の前記論理アドレス範囲に含まれる、ブロックの群からなるゾーンを単位に管理され、
前記ゾーンの1つは、システム管理情報が保存される管理領域を含むシステム領域に割り当てられ、
前記各アドレス変換テーブルは、前記書き換え可能不揮発性メモリの対応するゾーン内のいずれか1つのブロックの所定領域に保存され、
前記コピー手段は、前記メモリカードの立ち上げ時には、前記書き換え可能不揮発性メモリの前記各ゾーンのうち前記システム領域に割り当てられているゾーンを除くゾーンの少なくとも1つに保存されているアドレス変換テーブルと、前記システム領域に割り当てられているゾーンに保存されているアドレス変換テーブルとを、前記揮発性メモリの前記アドレス変換テーブル領域にコピーし、前記ヒット/ミスヒット判定手段により前記対応するアドレス変換テーブルが前記揮発性メモリ上に存在しないと判定された場合には、前記アドレス変換テーブル領域上の複数のアドレス変換テーブルのうち、前記システム領域に対応するアドレス変換テーブルを除くいずれか1つのアドレス変換テーブルを前記対応するアドレス変換テーブルの置き換え対象とすることを特徴とする請求項5記載のメモリカード。 - 前記揮発性メモリには、前記書き換え可能不揮発性メモリに保存されている前記複数のアドレス変換テーブルの当該不揮発性メモリ上の保存位置を示すポインタ情報が、当該アドレス変換テーブルに固有の、論理ブロックアドレスの前記所定フィールドの内容に対応付けて登録されるポインタテーブルを格納するためのポインタテーブル領域が確保されており、
前記書き換え可能不揮発性メモリ上の各ブロックは、当該メモリに対するアクセスの最小単位である一定サイズの複数のセクタであって、当該ブロックに割り当てられている論理ブロックアドレスが設定される論理ブロックアドレスフィールドと、当該ブロックの使用状態として、有効なアドレス変換テーブルの保存に用いられている第1の状態、無効化されたアドレス変換テーブルの保存に用いられている第2の状態、及びアドレス変換テーブル以外の有効なデータの保存に用いられている第3の状態を含む使用状態のいずれか1つを示すフラグ情報が設定されるフラグフィールドとを有する冗長部を備えた複数のセクタからなり、
前記メモリカードの立ち上げ時に、前記書き換え可能不揮発性メモリの各ゾーン毎に、当該ゾーン内の各ブロックを順次参照して、前記冗長部のフラグフィールドにより有効なアドレス変換テーブルの保存に用いられていることが示されているセクタを検出することで前記ポインタ情報を取得し、このゾーン毎に取得したポインタ情報が登録された前記ポインタテーブルを作成するポインタテーブル作成手段を更に具備し、
前記コピー手段は、前記ヒット/ミスヒット判定手段により前記対応するアドレス変換テーブルが前記揮発性メモリ上に存在しないと判定された場合、前記与えられた論理アドレス中の論理ブロックアドレスの前記所定フィールドの内容により前記ポインタテーブルを参照して対応するポインタ情報を取得し、当該ポインタ情報の示す前記書き換え可能不揮発性メモリ上の前記アドレス変換テーブルを前記揮発性メモリ上の前記アドレス変換テーブル領域にコピーすることを特徴とする請求項11記載のメモリカード。 - 前記アドレス変換手段により参照された前記揮発性メモリ上の前記アドレス変換テーブルのエントリに物理アドレス情報が登録されていない場合、当該テーブルに対応する前記書き換え可能不揮発性メモリ上のアドレス変換テーブルが保存されているゾーンを対象に空きブロックを探して当該ブロックに前記与えられた論理アドレス中の論理ブロックアドレスを割り当てる割り当て手段と、
前記割り当て手段により論理ブロックアドレスが割り当てられたブロックの物理アドレス情報を、前記アドレス変換手段により参照された前記揮発性メモリ上の前記アドレス変換テーブルのエントリに書き込む物理アドレス登録手段と、
前記アドレス変換手段により参照された前記揮発性メモリ上の前記アドレス変換テーブルに対応する前記書き換え可能不揮発性メモリ上のアドレス変換テーブルが保存されているゾーンを対象に空きブロックを探して当該ブロック内の所定領域に前記物理アドレス登録手段による物理アドレス情報の書き込みがなされた前記アドレス変換テーブルを書き込むと共に当該アドレス変換テーブルが書き込まれた前記領域内の各セクタの冗長部のフラグフィールドに前記第1の状態を示すフラグ情報を設定し、且つ当該テーブルに対応する、前記書き換え可能不揮発性メモリ上の元の前記アドレス変換テーブルが保存されている(領域内の)各セクタの冗長部のフラグフィールドに、前記第2の状態を示すフラグ情報を設定するテーブル更新手段とを更に具備することを特徴とする請求項12記載のメモリカード。 - 前記アドレス変換手段により変換された物理アドレスに基づいて前記書き換え可能不揮発性メモリに対する書き込みが行われた場合に、ブロックエラーの発生の有無を検出するブロックエラー検出手段と、
前記ブロックエラー検出手段によりブロックエラーの発生が検出された場合、前記アドレス変換手段により参照された前記揮発性メモリ上の前記アドレス変換テーブルに対応する前記書き換え可能不揮発性メモリ上のアドレス変換テーブルが保存されているゾーンを対象に空きブロックを探して当該ブロックに前記与えられた論理アドレス中の論理ブロックアドレスを割り当てて、当該ブロックの物理アドレス情報で、前記揮発性メモリ上の前記アドレス変換テーブルの参照エントリを更新するブロック代替手段とを更に具備し、
前記テーブル更新手段は、前記アドレス変換手段により参照された前記揮発性メモリ上の前記アドレス変換テーブルに対応する前記書き換え可能不揮発性メモリ上のアドレス変換テーブルが保存されているゾーンを対象に空きブロックを探して、当該ブロック内の所定領域に前記ブロック代替手段による参照エントリの更新がなされた前記アドレス変換テーブルを書き込むと共に、当該アドレス変換テーブルが書き込まれた前記領域内の各セクタの冗長部のフラグフィールドに前記第1の状態を示すフラグ情報を設定し、且つ当該テーブルに対応する、前記書き換え可能不揮発性メモリ上の元の前記アドレス変換テーブルが保存されている領域内の各セクタの冗長部のフラグフィールドに前記第2の状態を示すフラグ情報を設定することを特徴とする請求項13記載のメモリカード。 - 前記書き換え可能不揮発性メモリの前記各ゾーン毎に、前記アドレス変換テーブルが保存されているブロックに当該アドレス変換テーブルと対をなして保存されているアサインテーブルであって、当該ゾーンの各ブロック毎に、そのブロックが使用されているか否かを示すフラグ情報の群からなるアサインテーブルを更に具備し、
前記揮発性メモリには、前記アドレス変換テーブル領域に格納される前記書き換え可能不揮発性メモリ上の前記複数のアドレス変換テーブルと対をなす前記アサインテーブルを格納するためのアサインテーブル領域が確保され、
前記割り当て手段と、前記テーブル更新手段と、前記ブロック代替手段とは、いずれも前記アドレス変換手段により参照された前記揮発性メモリ上の前記アドレス変換テーブルと対をなす当該揮発性メモリ上の前記アサインテーブルを一定方向に参照して前記空きブロックを探すことを特徴とする請求項14記載のメモリカード。 - 前記各アサインテーブルには前記アサインテーブル内の参照位置を指定するポインタがそれぞれ付されており、
前記割り当て手段と、前記テーブル更新手段と、前記ブロック代替手段とは、前記アサインテーブルに付されている前記ポインタを一定方向に進めながら前記アサインテーブルを参照することを特徴とする請求項15記載のメモリカード。 - 前記割り当て手段と、前記テーブル更新手段と、前記ブロック代替手段とは、前記揮発性メモリ上の前記アサインテーブルを参照して前記空きブロックを探した際に、当該アサインテーブルを更新し、
前記テーブル更新手段は、前記空きブロックに前記揮発性メモリ上の前記アドレス変換テーブルを書き込む際に、当該テーブルと対をなす前記揮発性メモリ上の前記アサインテーブルも前記空きブロックに書き込むことを特徴とする請求項16記載のメモリカード。 - 電子機器本体に装着して用いられる、揮発性メモリ、コピー手段、アドレス変換手段及びアクセス手段を有するメモリカードであって、書き換え可能な不揮発性メモリを搭載したメモリカードに適用されるアドレス変換方法において、
前記書き換え可能不揮発性メモリをアクセスするために前記電子機器本体から前記メモリカードに与えられる論理アドレスを物理アドレスに変換するのに用いられる、それぞれ異なる論理アドレス範囲に対応付けられた複数のアドレス変換テーブルであって、前記書き換え可能不揮発性メモリに保存されている複数のアドレス変換テーブルのうちの、当該テーブルの総数より少ない数の複数のテーブルを、前記揮発性メモリ上に確保したアドレス変換テーブル領域に前記コピー手段が格納し、
前記電子機器本体から前記メモリカードに前記書き換え可能不揮発性メモリをアクセスするための論理アドレスが与えられた場合、前記アドレス変換手段が前記揮発性メモリ上の前記複数のアドレス変換テーブルの1つを利用して当該論理アドレスを物理アドレスに変換し、
前記変換された物理アドレスに基づき、前記アクセス手段が前記書き換え可能な不揮発性メモリに対してデータの書き込みまたは読み出しを行うことを特徴とするアドレス変換方法。 - 電子機器本体に装着して用いられる、揮発性メモリ、コピー手段、ヒット/ミスヒット判定手段、アドレス変換手段及びアクセス手段を有するメモリカードであって、論理アドレス中の論理ブロックアドレスの所定フィールドの内容が共通の前記論理アドレス範囲に含まれる、ブロックの群からなるゾーンを単位に管理され、前記ゾーンの1つはシステム管理情報が保存される管理領域を含むシステム領域に割り当てられる書き換え可能な不揮発性メモリを搭載したメモリカードに適用されるアドレス変換方法において、
論理アドレス中の論理ブロックアドレスにより指定可能な、当該論理ブロックアドレスが割り当てられるブロックの前記書き換え可能不揮発性メモリ上の保存位置を示す物理アドレス情報を登録するためのエントリの群を有し、前記論理ブロックアドレスの所定フィールドの内容が共通のブロック群を単位に用意されるアドレス変換テーブルであって、前記書き換え可能不揮発性メモリの対応するゾーン内のいずれか1つのブロックに保存されているアドレス変換テーブルのうち、前記システム領域に割り当てられているゾーンを除くゾーンの少なくとも1つに保存されているアドレス変換テーブルと、前記システム領域に割り当てられているゾーンに保存されているアドレス変換テーブルとを、前記揮発性メモリ上に確保したアドレス変換テーブル領域に前記コピー手段が格納し、
前記電子機器本体から前記メモリカードに前記書き換え可能不揮発性メモリをアクセスするための論理アドレスが与えられた場合に、当該論理アドレスの前記所定フィールドに対応する前記アドレス変換テーブルが前記揮発性メモリ上に存在するか否かを前記ヒット/ミスヒット判定手段が判定し、
前記対応するアドレス変換テーブルが前記揮発性メモリ上に存在しないと判定した場合、前記コピー手段が当該アドレス変換テーブルを前記書き換え可能不揮発性メモリから前記揮発性メモリ上の前記アドレス変換テーブル領域にコピーして、当該アドレス変換テーブルで前記アドレス変換テーブル領域上の複数のアドレス変換テーブルのうち、前記システム領域に対応するアドレス変換テーブルを除くいずれか1つのアドレス変換テーブルを置き換え、
しかる後に前記アドレス変換手段が、前記与えられた論理アドレス中の論理ブロックアドレスにより前記揮発性メモリ上の前記コピーされたアドレス変換テーブルの対応するエントリを参照することで、前記与えられた論理アドレスを対応する物理アドレスに変換し、
前記対応するアドレス変換テーブルが前記揮発性メモリ上に存在すると判定した場合には、前記アドレス変換手段が、前記与えられた論理アドレス中の論理ブロックアドレスにより当該揮発性メモリ上に存在する前記アドレス変換テーブルの対応するエントリを参照することで、前記与えられた論理アドレスを対応する物理アドレスに変換し、
前記変換された物理アドレスに基づき、前記アクセス手段が前記書き換え可能な不揮発性メモリに対してデータの書き込みまたは読み出しを行うことを特徴とするアドレス変換方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000258216A JP4439096B2 (ja) | 2000-08-28 | 2000-08-28 | メモリカード及び同カードに適用されるアドレス変換方法 |
US09/708,423 US6377500B1 (en) | 1999-11-11 | 2000-11-09 | Memory system with a non-volatile memory, having address translating function |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000258216A JP4439096B2 (ja) | 2000-08-28 | 2000-08-28 | メモリカード及び同カードに適用されるアドレス変換方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002073409A JP2002073409A (ja) | 2002-03-12 |
JP4439096B2 true JP4439096B2 (ja) | 2010-03-24 |
Family
ID=18746559
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000258216A Expired - Fee Related JP4439096B2 (ja) | 1999-11-11 | 2000-08-28 | メモリカード及び同カードに適用されるアドレス変換方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4439096B2 (ja) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4612269B2 (ja) | 2002-08-13 | 2011-01-12 | 日本電気株式会社 | 仮想ボリューム管理方式 |
US6901498B2 (en) | 2002-12-09 | 2005-05-31 | Sandisk Corporation | Zone boundary adjustment for defects in non-volatile memories |
US7281114B2 (en) | 2003-12-26 | 2007-10-09 | Tdk Corporation | Memory controller, flash memory system, and method of controlling operation for data exchange between host system and flash memory |
KR100858756B1 (ko) | 2004-07-12 | 2008-09-16 | 가부시끼가이샤 도시바 | 저장 디바이스 및 호스트 장치 |
KR100684942B1 (ko) | 2005-02-07 | 2007-02-20 | 삼성전자주식회사 | 복수의 사상 기법들을 채용한 적응형 플래시 메모리 제어장치 및 그것을 포함한 플래시 메모리 시스템 |
JP4738405B2 (ja) * | 2005-02-23 | 2011-08-03 | スパンション エルエルシー | 記憶装置の試験方法、および記憶装置 |
JP5076411B2 (ja) * | 2005-11-30 | 2012-11-21 | ソニー株式会社 | 記憶装置、コンピュータシステム |
JP2007164318A (ja) * | 2005-12-12 | 2007-06-28 | Renesas Technology Corp | 記憶装置 |
JP5032172B2 (ja) * | 2007-03-28 | 2012-09-26 | 株式会社東芝 | 統合メモリ管理装置及び方法並びにデータ処理システム |
US8135900B2 (en) | 2007-03-28 | 2012-03-13 | Kabushiki Kaisha Toshiba | Integrated memory management and memory management method |
JP2011198409A (ja) * | 2010-03-19 | 2011-10-06 | Toshiba Information Systems (Japan) Corp | 不揮発性メモリ |
JP5907739B2 (ja) | 2012-01-26 | 2016-04-26 | 株式会社日立製作所 | 不揮発性記憶装置 |
US20130346680A1 (en) * | 2012-06-22 | 2013-12-26 | Ross S. Scouller | Emulated electrically erasable memory having an address ram for data stored in flash memory |
KR101752583B1 (ko) | 2013-03-14 | 2017-07-11 | 마이크론 테크놀로지, 인크. | 트레이닝, 데이터 조직, 및/또는 섀도잉을 포함하는 메모리 시스템들 및 방법들 |
WO2014142337A1 (ja) * | 2013-03-15 | 2014-09-18 | 日本電気株式会社 | ストレージ装置と方法及びプログラム |
JP6279620B2 (ja) | 2014-01-29 | 2018-02-14 | 株式会社日立製作所 | ストレージ装置 |
JP6391719B2 (ja) * | 2017-01-10 | 2018-09-19 | マイクロン テクノロジー, インク. | トレーニング、データ再構築および/またはシャドウィングを含むメモリシステムおよび方法 |
US10592427B2 (en) * | 2018-08-02 | 2020-03-17 | Micron Technology, Inc. | Logical to physical table fragments |
-
2000
- 2000-08-28 JP JP2000258216A patent/JP4439096B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002073409A (ja) | 2002-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4439096B2 (ja) | メモリカード及び同カードに適用されるアドレス変換方法 | |
US6377500B1 (en) | Memory system with a non-volatile memory, having address translating function | |
US6938144B2 (en) | Address conversion unit for memory device | |
USRE46404E1 (en) | Flash memory management method | |
US9268709B2 (en) | Storage controllers and storage control methods | |
US7861028B2 (en) | System and method for configuration and management of flash memory | |
KR101654774B1 (ko) | 데이터 저장 장치와 저장 매체 액세스 방법 및 그에 대한 저장 매체 | |
JP4132086B2 (ja) | フラッシュメモリ内のブロックにおける移動セクタ | |
US8095723B2 (en) | Log-based flash translation layer and operating method thereof | |
US20050132129A1 (en) | Data management in flash memory | |
JPH10124381A (ja) | 半導体記憶装置 | |
US20070016719A1 (en) | Memory device including nonvolatile memory and memory controller | |
JP6785204B2 (ja) | メモリシステムおよび制御方法 | |
US20070094440A1 (en) | Enhanced data access in a storage device | |
US20100023681A1 (en) | Hybrid Non-Volatile Memory System | |
JP3827682B2 (ja) | フラッシュメモリ、そのためのマッピング制御装置及び方法 | |
JP2009512022A (ja) | フラッシュメモリの管理 | |
JP2004318940A (ja) | 記憶装置 | |
JP2008181204A (ja) | 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 | |
US20230266915A1 (en) | Memory system and information processing system having an address translation table and a data map updated based on an invalidation request having a fragment table | |
JP2004303238A (ja) | フラッシュメモリアクセス装置及び方法 | |
US20030046482A1 (en) | Data management in flash memory | |
JP5036078B2 (ja) | 記憶装置 | |
JP3808842B2 (ja) | 書き換え可能な不揮発性メモリを備えた記憶装置及び記憶装置用不揮発性メモリの制御方法 | |
WO2012104974A1 (ja) | メモリコントローラ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051104 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20081127 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081202 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090126 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20091208 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100105 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130115 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130115 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130115 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140115 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |