(57)【特許請求の範囲】
【請求項１】
並列にアクセス可能な複数のメモリを含むフラッシュメモリ部と、
上記複数のメモリの２つ以上から並列にデータを取得し、一時記憶するページレジスタと、
上記ページレジスタに並列格納されるデータ単位で論理アドレスと物理アドレスとの対照を管理するページデータ用の第１のアドレス変換テーブルと、
ブロックアドレス変換用の第２のアドレス変換テーブルと、を有し、
上記第１および第２のアドレス変換テーブルに従ってデータを格納し、当該第１および第２のアドレス変換テーブルの更新と記憶メディアへの追記によってデータ書き換えを行う機能と、
上記書き換えによって無効化された領域を含む第一の消去ブロックにおいて、残存しているページ単位の有効データを選択的に消去済の第二の消去ブロックに順次コピーし、しかる後に上記第一のブロックを消去することで、当該無効化領域に新規書き込みができるよう回復処理を行う機能と、を有し、
上記回復処理における上記第一の消去ブロックのページ単位の有効データの上記第二の消去ブロックへのコピーは、上記データ書き換えと同様、上記第１および第２のアドレス変換テーブルの更新と記憶メディアへの追記によって実施され、かつ、上記第二の消去ブロック内の空き領域に詰めて順番に実施され、
第一の消去ブロックにあるページ単位の有効データを、第二の消去ブロックにあるページ単位の有効データとともに、同一の第二の消去ブロックに集約し、異なる消去ブロック間の有効データを一つの消去ブロックに集約し、
当該消去ブロックの集約に際し、
上記第２のアドレス変換テーブルを更新し、元の消去ブロックである上記第一の消去ブロックを消去済みの予備ブロックとして消去し、上記コピーした有効ページデータのアドレスと新規にコピーされた領域のアドレスをもとに、上記第１のアドレス変換テーブルを更新する
記憶装置。
【請求項２】
上記データ書き換え、及び回復処理のデータコピーにおけるデータの書き込み先の選択において、不良ブロックを回避するための統一的な手段を有する
請求項１記載の記憶装置。
【請求項３】
上記不良ブロックの回避は、ブロックアドレス変換用のアドレス変換テーブルを使用して実施される
請求項２記載の記憶装置。
【請求項４】
上記回復処理におけるデータのコピーは、書き換えと同様に、上記ページレジスタを介して実施される、
請求項１から３のいずれか一に記載の記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリを含む記憶装置に関するものであり、特にフラッシュメモリを含む記憶装置におけるデータ転送の高速化に関するものである。
【背景技術】
【０００２】
近年、デジタルスチルカメラやモバイルコンピュータ機器の記憶媒体として、フラッシュメモリが注目されている。
【０００３】
フラッシュメモリは、トンネリングやホットエレクトロン加速を用いて、電子にゲート絶縁膜を通過させ、それらを浮遊ゲートやトラップ層に注入し、セルトランジスタの閾値を変化させることでデータを記憶させる半導体メモリである。積層ゲート構造やＭＮＯＳ構造等を用いたトランジスタ１つのみでメモリセルを構成できるため、安価かつ大容量のメモリを実現できる。
その代表例として、ＮＡＮＤ型フラッシュメモリが挙げられる。
【０００４】
図１は、ＮＡＮＤ型フラッシュメモリの内部構成例を示す図である。
図１のＮＡＮＤ型フラッシュメモリは、ビット線ＢＬ１〜ＢＬｎに接続された複数のメモリユニット１−１〜１−ｎがアレイ状に（縦横）に配列されている。
たとえば、選択用トランジスタ２のゲートが選択ゲート線ＳＬ１に接続され、選択用トランジスタ３のゲートが選択ゲート線ＳＬ２に接続されている。また、各メモリセルＮ０〜Ｎ１５のゲートがワード線ＷＬ０〜ＷＬ１５に接続されている。
【０００５】
各メモリセルＮ０〜Ｎ１５は積層ゲート構造を持ち、浮遊ゲートへの電荷蓄積量に従ってデータを記憶する。すなわち、浮遊ゲートに多くの電子が蓄積されていると、トランジスタの閾値が上昇するので、チャージされたビット線ＢＬ１〜ＢＬｎからのメモリユニット１（−１〜−ｎ）への電流貫通の有無を、センスアンプ等を含むアクセス回路４で検出してデータ判定を行う。
【０００６】
このようなＮＡＮＤ型フラッシュメモリは、メモリセル毎にビット線へのコンタクト領域を設ける必要もないので、特に大容量で安価な記憶装置の媒体に適している。
【０００７】
ところで、一般にフラッシュメモリのプログラム速度は非常に遅く、セルあたり数百μ秒を必要とする。またデータの上書きはできないので、プログラムに先立って消去を行う必要があり、これには数ｍ秒もの時間がかかる。このような問題に対しては、多くのメモリセルを並列処理することで対処している。
【０００８】
すなわち、たとえば同一ワード線ＷＬ０に接続され、ページ単位を成すメモリセル群５を、同時一括に書き込み、さらに互いにメモリユニットを共有するページ群で構成されるセルブロック６を全て一括で消去することにより、プログラムの転送速度を向上させている。
【０００９】
具体的には、たとえば非特許文献１には１ＧｂのＮＡＮＤ型フラッシュメモリが掲載されており、ページサイズを２ｋバイト、消去ブロックサイズを１２８ｋＢとしている。すなわち、一つのメモリアレイ内で１２８ｋバイトのメモリセル群を並列消去し、そこにメモリセルを２ｋバイト毎に並列でプログラムしていくことによって、１０ＭＢ／ｓのプログラム転送速度を実現している。
【００１０】
また、近年フラッシュメモリはさらに多値化や微細化が進んでおり、それに伴う信号量の低下に対処するため、より非選択セルへの悪影響の少ない書き込み手法が検討され、実施されている。
【００１１】
たとえばＮＡＮＤ型フラッシュにおいては、消去ブロック内のページの書き込み順にも制限をつけたものが主流になりつつある。
特許文献１等にはその一つとしてローカルセルフブースと（Ｌｏｃａｌ  Ｓｅｌｆ−Ｂｏｏｓｔ）と呼ばれる手法を用いた書き込み手順が記載されている。
図１のＮＡＮＤ型フラッシュメモリにおいて、そのような書き込みの例を以下に説明する。
【００１２】
たとえば、メモリセルＮ１に書き込みを行い、その浮遊ゲートに電子を注入する場合、まず、メモリセルＮ１を挟む前後のワード線ＷＬ０，ＷＬ２をそれぞれ０Ｖにし、さらに選択用トランジスタ２をオンし、選択用トランジスタ３をオフにする。ここでビット線ＢＬ１を０Ｖ、書き込みを行いたくない隣接ビット線ＢＬ２を３Ｖとして、選択ワード線ＷＬ１を２０Ｖに、それ以外の全ワード線ＷＬ３〜ＷＬ１５を１０Ｖに持ち上げる。
このような書き込み手順を用いると、０Ｖのワード線ＷＬ０，ＷＬ２にはさまれ、かつ非選択ビット線に繋がるノードは他のノードから切り離され、ワード線ＷＬ１からのカップリングを受けて１０Ｖ程度まで電位が上昇する。
一方、選択されたメモリセルＮ１については、隣接したセルトランジスタＮ０がディプレッション状態の時に限って、ビット線ＢＬ１に印加された０ＶがセルトランジスタＮ１のチャンネルに伝達され、書き込みが実施される。
すなわち、上のような書き込み手法を用いる場合、書き込みを実施するセルのビット線側の隣接セルは常に消去され、ディプレッション状態に成っている必要がある。そのため、ブロック全体を消去した後、書き込みはメモリセルＮ１５、Ｎ１４、Ｎ１３、・・・、Ｎ０と順になされることが必須の条件となる。
【００１３】
このように近年の大容量フラッシュメモリは、そのページ書き込みにおいても、ランダムな書き込みは許されず、ブロック中の上位アドレスから下位アドレスにむけて順次書き込みを行うことが必須とされる傾向にある。
【先行技術文献】
【非特許文献】
【００１４】
【非特許文献１】ＩＳＳＣＣ２００２予稿集のｐ１０６、セッション６．４
【特許文献】
【００１５】
【特許文献１】特開２００２−２６０３９０号公報
【特許文献２】特開平８−３２８７６２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
近年、ハードディスクの消費電力の大きさや、シーク時間の長さ、耐衝撃性や携帯性等の問題を解消すべく、フラッシュメモリにその代替が期待されている。
しかし上述の如く、フラッシュメモリにはアクセス単位を大きくしないと高速化できないという欠点がある。また、データの上書きができないので、書き換えには必ず消去が必要であり、その際の消去ブロックはさらに大きい。このようにアクセス単位に対して消去単位が数十倍大きいのは、消去時間が長く、かつ書き込み時に非選択セルにディスターブが生じるフラッシュメモリには一般的な仕様である。しかしこれによりその書き込み効率は著しく低下する。たとえば、小さな領域を更新しようとすると、上述のように既存データのコピー操作が必要となり、その書き込み効率は著しく低下する。
【００１７】
たとえば上記２ｋＢ単位のページ書き込み、１２８ｋＢ単位のブロック消去による、転送速度１０ＭＢ／ｓフラッシュメモリを用いて、ハードディスク代替用の記憶装置を構成するとする。
その転送速度を、シリアルＡＴＡ接続の高速ストレージで目標とされる１６０ＭＢ／ｓにまで高めようとした場合、マルチバンクやマルチチップの構成を取りながら、たとえば１６個のメモリアレイを並列動作させる必要がある。
【００１８】
図２は、そのような記憶装置を構成するフラッシュメモリの概念図を示す図である。
図２において、２０は実ページ領域を、２１は実消去ブロック領域を、２２はメモリ領域を、２３はバッファメモリを、２５は消去済みブロックをそれぞれ示している。
【００１９】
図２において、高速転送を実現するため、１６個のアレイＡＲ０〜ＡＲ１５を同時に動作させる。この場合データ書き込み時は、たとえばページＰ０，Ｐ１を同時書き込みし、消去時はブロックＢ０〜Ｂ１５を同時消去する。このとき括書き込み単位となる実ページ領域２０は３２ｋＢ、一括消去単位となる実消去ブロック領域２１は２ＭＢに達することになる。すなわち僅か１セクター（５１２Ｂ）のデータを書き換える場合にも、最悪２ＭＢものデータのコピー移動が必要になる。
【００２０】
この際、たとえば通常のＮＡＮＤ型フラッシュメモリでは１ブロックに６４ページを含み、それら全てを読み出してコピーするには３０ｍｓを要する。さらに多値型のＮＡＮＤ型フラッシュは１ブロックに１２８ページを含み、各ページの書き込み速度自体も遅いので、それら全てを読み出してコピーするには１００ｍｓ以上を要する。したがって現実の転送性能は著しく低いものになってしまう。このような事情から、フラッシュメモリを用いた現在の記憶装置は、特に書き込み時においては、ハードディスクをはるかに下回る転送性能しか得られていない。
【００２１】
一方、通常のファイルシステムでは、最小の書き込み単位を成すクラスタサイズは４ｋＢ程度であり、この単位でランダムなアクセスがなされる。
さらに、通常のファイル記憶装置は、ＡＴＡ等のインターフェース仕様に従って、たとえば５１２バイトのセクタ単位でランダムアクセスされる。
その場合、たとえばページＰ０とＰ１のみを書き換える要求が頻繁に発生する。
しかし、上述のような装置でそのようなアクセスを行うと、結局実消去ブロック領域２１全体を消去しなければならない。かつその中の非選択領域に有効ファイルがあれば、それを消失から保護する必要がある。その典型的な対処例は図２に関連付けると次のようになる。
【００２２】
１．まずフラッシュメモリから、別途設けられたバッファメモリ２３のメモリ領域２２に、実消去ブロック領域２１全体のデータを読み出す。
２．次にメモリ領域２２内で、ページＰ０とＰ１に相当するデータを更新する。
３．次にフラッシュメモリ上のブロック領域２１の消去を実行する。
４．最後に上記消去済の領域２１に、更新後のメモリ領域２２のブロックデータを全て書き戻す。
【００２３】
すなわち、４ｋバイトの書き込みのために、実際には消去と、２ＭＢのデータの読み出しおよび書き込みが必要となる。
具体的には、１ページ分のデータの読み出しおよび書き込みにはそれぞれ２００μｓを要し、ブロックの消去には２ｍｓを要するので、３０ｍｓ近くを必要とする。
【００２４】
これに対し、予め予備の消去済みブロック２５を用意しておいて、消去済みブロック２５に実消去ブロック領域２１の元のデータとページＰ０とＰ１の更新後データを合成させて書き込みを行う手法もある。
この場合、仮想アドレス構成を用いて消去ブロック単位で論理アドレスと物理アドレスの対応を更新し、アクセス対象とされた論理アドレスに対応する物理ブロックは元の消去ブロック領域２１からデータの移動先ブロック領域２５に張り替えられる。
しかしこの場合も、有効データを消去ブロック領域２１から移動先ブロック領域２５に退避させる作業は必要である。またこの際、通常は元のブロック領域２１を消去して、そちらを予備ブロックに変える。したがって、結局は従来とほぼ同様の読み出し、書き込み、消去が必要であり、大きなオーバーヘッドが生じることに変わりは無い。
【００２５】
したがって、現実の転送性能は著しく低いものになってしまう。
このような事情から、フラッシュメモリを用いた現在の記憶装置は、特に書き込み時においては、ハードディスクをはるかに下回る転送性能しか得られていない。
【００２６】
また、前述の如く、近年ＮＡＮＤ型フラッシュメモリでは、同じ消去ブロック内のページは下位アドレスから上位アドレスに向けてしか書き込みできない。このように消去ブロック内の書き込み順序にも制限がついた場合、問題はさらに深刻となる。
一般のファイルシステムにおいては、セクタ間の書き込み順序に保証はなされない。したがって、消去ブロック途中から書き込みがなされることがしばしばあるが、その場合、ブロック内におけるそれより下位、すなわち前方のアドレス領域が空いていても、そこにデータは書き込めなくなる。その結果、後でそれらの領域に書き込み要求が出ると、書き換えと同様の処理が必要となり、前述のデータ退避や消去、書き込みを繰り返さざるを得なくなってしまう。
【００２７】
このような問題は単に転送性能を低下させるのみならず、フラッシュメモリの消去回数を増加させ、その寿命まで低下させてしまう。また巨大なファイルを書き換える場合でも、その先頭は消去ブロックの中途に存在するケースが殆どであり、やはり同一ブロック内に存在する書き換え対象外のデータを退避せねばならない。これらの操作はファイルアクセスのレイテンシになる。ファイルの末尾についても同様のオーバーヘッドが発生する。
【００２８】
本発明の目的は、転送速度の低下や書き込み劣化の発生を低減することが可能で、ひいては信頼性が高く、かつ高速な記憶システムを実現できる記憶装置を提供することにある。
【課題を解決するための手段】
【００２９】
本発明の第１の観点の記憶装置は、並列にアクセス可能な複数のメモリを含むフラッシュメモリ部と、上記複数のメモリの２つ以上から並列にデータを取得し、一時記憶するページレジスタと、上記ページレジスタに並列格納されるデータ単位で論理アドレスと物理アドレスとの対照を管理するアドレス変換テーブルと、を有し、上記アドレス変換テーブルの更新と記憶メディアへの追記によってデータ書き換えを行う。
【００３０】
好適には、上記ページレジスタに格納されるデータ単位は複数のセクタを含み、当該記憶装置はセクタ単位でのアクセスが可能である。
【００３１】
本発明の第２の観点の記憶装置は、論理アドレスと物理アドレスの対照を示すアドレス変換テーブルと、上記アドレス変換テーブルに従ってデータを格納し、当該アドレス変換テーブルの更新と記憶メディアへの追記によってデータ書き換えを行う機能と、を有し、上記データは予備領域を有し、当該予備領域にはデータの論理アドレスと、記憶メディア上における同データの更新履歴を示す情報が記載されている。
【００３２】
好適には、上記更新履歴は、データの上記記憶メディアへの書き込み時のタイムスタンプ、あるいは、データの上記記憶メディア上における更新回数である。
【００３３】
好適には、上記記憶メディア上をスキャンして、上記予備領域の論理アドレスと更新履歴をもとに、アドレステーブルを再構築する機能を有する。
【００３４】
本発明の第３の観点の記憶装置は、論理アドレスと物理アドレスの対照を示すアドレス変換テーブルと、上記アドレス変換テーブルに従ってデータを格納し、当該アドレス変換テーブルの更新と記憶メディアへの追記によってデータ書き換えを行う機能と、カウンタと、を有し、メディア全域または複数データを含む特定領域に対して上記追記が実施されるごとにカウンタ値が更新され、当該カウンタ値または当該カウンタ値と一意的に対応する値が、上記データの予備領域にデータと同時に書き込まれる。
【００３５】
本発明の第４の観点の記憶装置は、論理アドレスと物理アドレスの対照を示すアドレス変換テーブルと、上記アドレス変換テーブルに従ってデータを格納し、当該アドレス変換テーブルの更新と記憶メディアへの追記によってデータ書き換えを行う機能と、を有し、装置に入力された論理アドレスは、当該アドレス変換テーブルで第１の物理アドレスに変換され、さらに記憶メディア上の欠陥領域を非選択にするアドレス変換機能を有し、上記第１の物理アドレスの少なくとも一部ビットには、上記アドレス変換機能で第２の物理アドレスに変換され、記憶メディアは上記第２の物理アドレスと、上記第１の物理アドレスの残りのビットを用いてアクセスされる。
【００３６】
好適には、上記第２のアドレス変換は、領域ごとに複数の変換セットに分割されている。
【００３７】
好適には、上記記憶メディアはフラッシュメモリであり、上記アドレス変換機能は、欠陥の存在する消去ブロックのアドレスを、正常な消去ブロックのアドレスに振り替える機能を含む。
【００３８】
本発明の第５の観点の記憶装置は、論理アドレスと物理アドレスの対照を示すアドレス変換テーブルと、上記アドレス変換テーブルに従ってデータを格納し、当該アドレス変換テーブルの更新と記憶メディアへの追記によってデータ書き換えを行う機能と、上記記憶メディアにおける欠陥領域と未記入領域の所在を示すテーブルと、上記追記先の領域として、欠陥領域以外の未記入領域を選択する機能と、を有する。
【００３９】
好適には、上記記憶メディアはフラッシュメモリであり、上記追記先の領域には欠陥の存在する消去ブロックを除いた領域が選択される。
【００４０】
本発明の第６の観点の記憶装置は、記憶メディアとしてのフラッシュメモリと、論理アドレスと物理アドレスの対照を示すアドレス変換テーブルに従ってデータを格納し、当該アドレス変換テーブルの更新と記憶メディアへの追記によってデータ書き換えを行う機能と、を有し、上記書き換えによって無効化された領域を含む第一の消去ブロックにおいて、残存している有効データを選択的に消去済の第二の消去ブロックに順次コピーし、しかる後に上記第一のブロックを消去することで、該無効化領域に新規書き込みができるよう回復処理を行う機能を有する。
【００４１】
好適には、各データは予備領域を有し、当該予備領域にはデータの論理アドレスが記載されており、上記有効データのコピー時には当該論理アドレス値に従ってアドレス変換テーブルを更新する。
【００４２】
このように、本記憶装置においては、フラッシュメモリにおける課題解決のため、追記型の記憶システムに着目している。このようなシステムにおいては、書き換えは、更新データを空き領域に追記し、元のデータを無効化することで実施される。
より具体的には、論理アドレスを物理アドレスに対応させるアドレス変換テーブルを用い、書き換えは対照データの物理アドレスを変更し、記憶メディアの空き領域に追記することで実施する。この手法の関連技術としてたとえば特許文献２には、アドレス変換テーブルを用いた追記型記憶システムにおける管理方法の詳細が記載されている。
ただし、これは単独チップを想定したものであり、大容量化に伴ってアドレス変換テーブルが巨大化してしまう問題がある。本発明の記憶装置はそれを解決する。さらに本発明の記憶装置は、近年の大容量に進化したフラッシュメモリに適用可能となるよう、以下のように機能する。
１．前述したページ書き込みの順序制約に従いつつ、追記型記憶システムを十分な信頼性で機能する。
２．大容量の不揮発性メモリは内部に欠陥を含むことが多く、その対策が要求される。特にフラッシュメモリでは、一つの欠陥が消去ブロック全体に悪影響を与えるので、書き込み単位と欠陥管理の単位が異なる場合が多い。本記憶装置は、このような欠陥管理を上記システムと両立させている。
３．追記型のデータ更新では、旧データの記憶領域はただちに消去されず、無効化される。フラッシュメモリにおいては、そのような無効化領域を空き領域に回復させる手段が必要であり、本記憶装置は、その回復処理を上述の制約のもとで適切に行う。
【発明の効果】
【００４３】
本発明によれば、たとえばフラッシュメモリを記憶メディアとして使用する際、信頼性が高く、かつ高速な記憶システムを実現できる。
本発明によれば、ブロック単位の消去や、ブロック内のデータ書き込み順序の制約に伴う転送速度の悪化や書き込み劣化の発生を、大幅に低減することが可能である。
本発明によれば、フラッシュメモリを記憶メディアとして使用しつつ、実使用上常態的に高速な書き換えを実現することができる。その消去回数も減少させることができ、書き換え疲労を低減することで、信頼性の高い書き換えが可能である。
さらにそのような性能向上を得つつ、不良ブロックの置換等も機動的に実施でき、フラッシュメモリにおいて無効化された領域の回復も適切に実施でき、また、電源瞬断等でアドレス変換テーブルが破壊された場合でも、齟齬なく再構築することが可能である。
【図面の簡単な説明】
【００４４】
【図１】ＮＡＮＤ型フラッシュメモリの内部構成例を示す図である。
【図２】記憶装置を構成するフラッシュメモリの概念図を示す図である。
【図３】第１の実施形態に係る記憶装置を示す構成図である。
【図４】第１の実施形態に係るアドレス変換テーブルの構成例を示す図である。
【図５】追記型書き込みを行った場合に生じる問題点と解決法について説明するための図である。
【図６】第２の実施形態に係る記憶装置を示す構成図である。
【図７】第２の実施形態に係るアドレス変換テーブルの構成例を示す図である。
【図８】第３の実施形態に係る記憶装置を示す構成図である。
【図９】第３の実施形態に係るアドレス変換テーブルの構成例を示す図である。
【図１０】使用ＲＡＭ容量を圧縮したアドレス変換に使用するアドレス変換テーブルを示す図である。
【図１１】スペアテーブルのＲＡＭ容量を圧縮した例を示す図である。
【図１２】使用ＲＡＭ容量を圧縮したアドレス変換に使用するアドレス変換テーブルの他の例を示す図である。
【図１３】第４の実施形態に係る記憶装置を示す構成図である。
【図１４】第４の実施形態に係る消去ブロック内部のデータ処理について説明するための図である。
【図１５】第４の実施形態におけるアドレス変換テーブル更新の具体例を説明するための図である。
【図１６】第５の実施形態に係る記憶装置を示す構成図である。
【図１７】第５の実施形態に係る制御回路のアドレス変換テーブルおよびページ状態の管理テーブルの構成例を示す図である。
【図１８】第５の実施形態の無効領域の回復手順を説明するための図である。
【図１９】第６の実施形態を示す図であって、そのようなＥＣＣ処理と欠陥ブロック管理を導入した、第５の実施形態（図１８）の装置構成上の応用変形例を示す図である。
【図２０】第６の実施形態に係る制御回路のアドレス変換テーブルおよびページ状態の管理テーブルの構成例を示す図である。
【図２１】本第７の実施形態に係るコンピュータシステムの構成例を示す図である。
【図２２】第７の実施形態に係る制御回路のアドレス変換テーブルの構成例を示す図である。
【発明を実施するための形態】
【００４５】
以下、本発明の実施形態を図面に関連付けて説明する。
【００４６】
図３は、本第１の実施形態に係る記憶装置を示す構成図である。
【００４７】
図３の記憶装置３０は、インターフェース回路（Ｉ／Ｆ）３１、ページバッファ３２、内部データバス３３、転送制御回路３４、およびＮＡＮＤ型フラッシュメモリ３５，３６を、主構成要素として有している。
【００４８】
記憶装置３０において、３２ビットの内部データバス３３には、１６ビットの入出力を持つ２チップのＮＡＮＤ型フラッシュメモリ３５，３６が並列接続されている。２つのチップのＮＡＮＤ型フラッシュメモリ３５，３６は読み出しや書き込みにおいて、同時並列にアクセスされる。
ページバッファ３２は、アクセスされたページデータを内部データバス３３を介して一時記憶するものであり、外部とのインターフェース回路３１に接続されている。
転送制御回路３４は、２つのチップのフラッシュメモリ３５，３６とページバッファ３２間の転送を管理する。転送制御回路３４は、ＲＡＭ３７を内蔵しており、内蔵されたＲＡＭ３７には図４に示すようなアドレス変換テーブル３８が構築されている。
【００４９】
本記憶装置３０のアクセスは以下のようになされる。ここでは簡単のため、１６進数のアドレスは次のように割り振られるとする。たとえば外部入力アドレスが”０ｘ５５００Ｃ”であった場合、上位の”０ｘ５５００”はページアドレス、下位”０ｘＣ”はページ内のセクタアドレスであり、本記憶装置は１セクタ単位でランダムアクセスが可能である。
【００５０】
読み出しの際、外部から”０ｘ５５００Ｃ”のセクタアドレスが入力されると、転送制御回路３４は上位のページアドレスを受けて内蔵ＲＡＭ３７にアクセスし、アドレス変換テーブル３８から論理ページアドレス（ＬＡ：ＬＯＧＩＣＡＬ  ＡＤＤＲＥＳＳ）”０ｘ５５００”に対応する物理ページアドレス（ＰＡ：ＰＨＩＳＩＣＡＬ  ＡＤＤＲＥＳＳ）”０ｘ００Ｂ０”を取得する。
この物理アドレスをもとにメモリチップであるＮＡＮＤ型フラッシュメモリ３５,３６が共にアクセスされ、各々からページアドレス”０ｘ００Ｂ０”に格納されたページデータ３９,４０が読み出され、ページバッファ３２に格納される。
インターフェース回路３１はページバッファ３２のページデータの中から、下位アドレス”０ｘＣ”に相当するセクタを選択し、外部に出力する。
【００５１】
一方、外部から”０ｘ５５００Ｃ”に書き込みを行う場合は、まず読み出しと同様の手順でページデータ３９,４０がメモリチップであるフレッシュメモリ３５,３６から読み出され、ページバッファ３２に格納される。その後下位アドレス”０ｘＣ”に相当するセクタが選択され、外部から入力されたデータに更新される。
更新後のページデータは、フラッシュメモリ３５,３６に書き戻されるが、その際各々の空き領域４１,４２に書き込まれる。
さらに、ページテーブルの論理アドレス”０ｘ５５００”に対応する物理アドレスは、空き領域４１，４２のアドレス”０ｘ０２８０”に更新される。
このように更新されたデータは、フラッシュメモリ上の適当な空き領域に、追記の形で書き込まれる。ランダムなページが更新されても、論理アドレスから物理アドレスにリマッピングすることで、それらは消去済みブロック内の下位アドレスから順次連続に書き込んで行くことが可能である。
【００５２】
本構成では２つのメモリチップであるフラッシュメモリ３５，３６が並列化され、各々から読み出されたページデータが、ページバッファ３２に一括格納される。この際、単独チップを使用した場合に比べてメモリ容量は２倍になるが、これは論理ページの容量が２倍になることで実現されるので、ページ数は増加しない。したがって、アドレス変換テーブル３８は変化せず、それを格納するＲＡＭ３７の容量も増加しない。
【００５３】
一方、並列化の弱点である消去回数の増加や、書き換え疲労の加速はページ単位のアドレス変換を用いた追記型の書き込みで大幅に緩和される。
すなわち、フラッシュメモリの高並列化と、ページ単位のアドレス変換による追記型書き込みは、両者を組み合わせることで互いの弱点を補い合う。そして特にメモリセルの書き込み時間が律速する書き込み工程においては、並列度に比例して転送速度は向上する。
【００５４】
なお、本実施形態においては、１６ビットＩＯのチップ２個を３２ビットバスに接続することで完全な並列動作としたが、要は実効的なページサイズを並列度に比例して増加させる形でアクセスできれば良いのであって、並列化の手法は様々な形態が考えられる。
たとえば、二つのメモリチップは必ずしも全く同時に読み出しや書き込みを開始する必要なない。各メモリへの書き込み動作はページバッファからメモリチップへのデータ転送工程と、メモリチップ内での書き込み工程の二つの処理（作業）を含むが、たとえば１６ビットのバスを両チップで共有すれば、転送は個々に行わざるを得ない。その場合、ページバッファから片側のメモリチップにデータを転送している間に、もう片側へメモリチップ内で書き込みをスタートしても良いし、両者への転送を順次行った後に、書き込みを同時スタートしても良い。
このように、各々のチップの動作タイミングをずらしながら両者を並列動作させる手法は一般的に見られるものであり、そのようなケースでも本発明は問題なく適用できる。
また、たとえば、１チップが２バンクにより構成され、異なるメモリアレイから同時に読み出されたデータ、または異なるメモリアレイに同時に書き込まれたデータが一つの実効ページを構成する場合でも、同様の効果を得ることができる。
【００５５】
ところで前述の如く、近年のフラッシュメモリの多くは、同一ブロック内のページ書き込み順序についても、下位アドレスから順に書き込むよう制約が設けられている。このような制約の上で上述のような追記型書き込みを行った場合に生じる問題点と解決法について、図５を参照して具体的に解説する。
【００５６】
アドレス変換テーブル３８ｂはＲＡＭ３７上に構成されるが、それは電源を落とすと消えてしまう。その前にフラッシュメモリ３５ｂ内に専用領域を設ける等して保存しておく方法もあるが、停電による電源瞬断等を考慮すると、万全な対策とは言えない。
アドレス変換テーブルが消失もしくは欠落した場合、メモリへのアクセス自体が全くできなくなり、全データが破壊されたのと同様の致命的自体に陥るので、その保護は極めて重要である。
【００５７】
したがって、ページデータを書き込む都度に、その中に予備領域を設けて、そこにテーブルの更新内容を反映しておくのが最良の対策となる。具体的には、そのページの論理アドレスを記載しておく。これにより、電源投入時にチップであるフラッシュメモリ３５ｂの保存データを上位（物理）アドレスからスキャンしていくことで、物理アドレスと論理アドレスとの対照が判明し、変換テーブルを再構築できる。
ここで論理ページ”０ｘ５５００”が更新され、元のページデータ３９ｂが更新されて、更新後データが空き領域４１ｂに書き込まれたとする。この際、ページデータ３９ｂの予備領域４３ｂには既に論理ページアドレス”０ｘ５５００”が記載されており、空き領域４１ｂの予備領域４５ｂにも同じ論理アドレス”０ｘ５５００”が記載されることになる。
【００５８】
ところで、同一ブロック内のページの書き込み順に上記規定があった場合、ページ３９ｂ内に未書き込みの予備領域があっても、もはや書き込みは不可能である。すなわち更新され、無効化された元ページを後でマークする手段が無い。そうなると、テーブル再構築のためにスキャンを行う時点では有効データと無効データの判別がつかないため、同じ論理アドレスが複数出現し、正しいアドレス変換テーブルを構築できなくなる。
【００５９】
そこで、本実施形態においては、各ページデータの書き込み時に、その予備領域に論理アドレスとともに、どのデータが最新であるかを判別するための更新履歴を記載する。
たとえば、更新時のタイムスタンプか、または論理アドレスに対応した累計更新回数、を記載しておく。
なお、累計更新回数に関しては、たとえば全論理アドレスにおける更新の累計、あるいは分割した論理アドレスごとの更新の累計を保持するカウンタをメモリ上に設けておき、各ページデータの書き込み時に対応するカウンタ値をインクリメントし、その結果を上記予備領域に記載すれば良い。
また、ブロック内のページ書き込み順序が規定されている場合には、同一ブロック内の各ページの新旧は一意的に決まるので、上記カウンタは書き込み先ブロックが変わった時のみインクリメントし、それを累計更新回数としても良い。
アドレス変換テーブルの再構築時には、その履歴を参照に最も新しい論理アドレスと物理アドレスの対応を、テーブルに反映させる。
【００６０】
具体的なテーブルの再構築は、メモリ容量を節約するため、たとえば次のように行えば良い。アドレス変換テーブル３８ｂとともに、同じメモリ上に予備のテーブル領域（予備テーブル）４６ｂを用意しておく。
フラッシュメモリ３５ｂの物理アドレスをスキャンしてページデータを読み出し、論理アドレスを取得するごとに、論理アドレスと物理アドレスの対応をアドレス変換テーブル３８ｂに反映する。前述の例に従えば、このとき、たとえばフラッシュメモリ３５ｂの”０ｘ００Ｂ０”のページを読み出すと、論理アドレス”０ｘ５５００”が取得されるので、まず”０ｘ５５００”の論理アドレスに対応する物理アドレスのフィールド４７ｂに０ｘ００Ｂ０”が記載される。
さらに順次スキャンを続け、”０ｘ０２８０”のページを読み出すと、同じ論理アドレス”０ｘ５５００”が取得されるのが、既に”０ｘ５５００”に対応した物理アドレスフィールド４７ｂには”０ｘ００Ｂ０”が書き込まれている。このようにして物理アドレスの重複が検出されると、予備テーブル４６ｂ上に記憶領域４８ｂが確保され、物理アドレスフィールド４７ｂの値は予備テーブル４６ｂにおける記憶領域４８ｂのインデックスに書き換えられる。
【００６１】
このようにして物理アドレスが重複した論理アドレスに対して一通り記憶領域が確保されると、再度フラッシュメモリ３５ｂの物理アドレスを最初からスキャンする。このようにして再度”０ｘ００Ｂ０”のページを読み出すと、論理アドレス”０ｘ５５００”が取得されるが、その物理アドレスのフィールド４７ｂは予備テーブル４６ｂ上の記憶領域４８ｂへのインデックスが格納されている。そこで、記憶領域４８ｂに物理アドレス”０ｘ００Ｂ０”と、上記履歴データを書き込む。
さらに順次スキャンを続け、”０ｘ０２８０”のページを読み出すと、同じ論理アドレス”０ｘ５５００”が取得され、同様に記憶領域４８ｂへのインデックスが取得される。ここに記載されている履歴データを自らの履歴データと比較して、自らの履歴の方が新しければ、物理アドレスと履歴データを書き換える。
こうして二度目のスキャンが終了すれば、予備テーブル４６ｂには最新の物理アドレスが格納されることになる。その後アドレス変換テーブル３８ｂを上からスキャンして、物理アドレスのフィールドに予備テーブル４６ｂへのインデックスがあれば、その値をインデックス先に格納された物理アドレスに入れ替える。
以上の過程を経て、完全なアドレス変換テーブルが再構築される。このようなやり方は、物理アドレスに重複が生じた論理ページアドレスに対してのみ履歴データ格納用のメモリが確保されるので、アドレス変換テーブルに関連したＲＡＭの使用量を減らすことができる。
【００６２】
大容量のフラッシュメモリにおいては欠陥の管理も重要になる。たとえばフラッシュメモリの場合、一つのメモリセルに、たとえばゲート破壊等の欠陥があると、それは消去ブロック全体の信頼性を損ねるケースが多い。
したがって、欠陥は通常消去ブロックの単位で管理され、欠陥セルを含む消去ブロックは予備ブロックに置換される。これらの置換はエラー訂正時に欠陥を検出し、出荷後動的になされることもある。また、同時にこのようなブロック管理は消去回数の平均化等にも使用され、書き換え回数の多いブロックと少ないブロックでデータを入れ替える等の対策がとられることもある。
【００６３】
このような消去ブロック単位のメモリ管理と、今回のページ単位でのメモリ管理を両立させた、実施形態を図６に関連付けて説明する。
【００６４】
図６は、第２の実施形態に係る記憶装置を示す構成図である。図７（Ａ），（Ｂ）は第２の実施形態に係る転送制御回路におけるアドレス変換テーブルの構成例を示す図である。
【００６５】
本第２の実施形態に係る記憶装置３０Ｃの基本構成は第１の実施形態におけるフラッシュメモリを１チップにしたものに近いが、転送制御回路３４ｃにはページアドレスの変換テーブル３８ｃを構成するＲＡＭ３７ｃに加えて、消去ブロック単位のアドレス変換テーブル５１ｃを構成するＲＡＭ５０ｃが搭載されている。アドレス変換テーブル５１ｃは欠陥を含むブロックがアクセスされないよう、それを正常ブロックで置き換えるように、論理アドレスと物理アドレスの対応がなされている。
【００６６】
本記憶装置３０Ｃのアクセスは以下のようになされる。
読み出しの際、たとえば外部から”０ｘ５５００Ｃ”のセクタアドレスが入力されると、転送制御回路３４ｃは上位のページアドレス”０ｘ５５００”を受けて内蔵ＲＡＭ３７ｃにアクセスし、アドレス変換テーブル３８ｃから上記論理ページアドレスＬＰＡに対応する物理ページアドレスＰＰＡ”０ｘ０１８０”を取得する。
この物理アドレスのうち、上位の”０ｘ０１”は消去ブロックに対応するアドレスであり、この値はアドレス変換テーブル５１ｃによって再度変換され、物理ブロックアドレスＰＢＡ”０ｘ７０”が取得される。
実際のフラッシュメモリ３５ｃからは、アドレス変換テーブル３８ｃから得られた下位の物理ページアドレス”０ｘ８０”と、アドレス変換テーブル５１ｃから得られた物理ブロックアドレス”０ｘ７０”が合成され、メモリ上の物理アドレス”０ｘ７０８０”に相当するページ領域３９ｃがアクセスされ、ページバッファ３２ｃに格納される。インターフェース回路３１ｃはその中から、下位アドレス”０ｘＣ”に相当するセクタを選択し、外部に出力する。
【００６７】
一方、外部から”０ｘ５５００Ｃ”に書き込みを行う場合は、まず読み出しと同様の手順でページデータ３９ｃがメモリチップであるフラッシュメモリ３５ｃから読み出され、ページバッファ３２ｃに格納される。その後、下位アドレス”０ｘＣ”に相当するセクタが選択され、外部から入力されたデータに更新される。更新後のページデータは、フラッシュメモリ３５ｃに書き戻されるが、その際アドレス変換テーブル５１ｃの各論理アドレスに対応する物理アドレスが参照され、そのブロック内の空き領域が検索される。
たとえば、論理アドレスＬＢＡ”０ｘ４０”において、対応する物理アドレスＰＢＡ”０ｘ７１”のブロックに適当な空き領域４１ｃがあり、そのメモリ上のページアドレスは”０ｘ７１Ｆ０”であったとする。このときページデータは空き領域４１ｃに書き込まれ、さらにページテーブルの論理アドレスＬＰＡ”０ｘ５５００”に対応する物理アドレス（ＰＰＡ）は”０ｘ４０Ｆ０”に更新される。
【００６８】
このような仮想アドレスの階層化は、複数チップや複数バンクの並列化に対しても、柔軟な管理を可能にする。図８に並列化した２チップを用いた第３の実施形態を示す。
【００６９】
図８は、第３の実施形態に係る記憶装置を示す構成図である。図９（Ａ），（Ｂ）は第３の実施形態に係る転送制御回路におけるアドレス変換テーブルの構成例を示す図である。
【００７０】
本第３の実施形態に係る記憶装置３０Ｄでは第２の実施形態のフラッシュメモリを２チップ並列とし、消去ブロック単位のアドレス変換テーブル５１ｄにおける物理アドレスフィールドＰＢＡ０とＰＢＡ１を各々のチップであるフラッシュメモリ３５ｄ，３６ｄに対して独立に設置した。すなわち、転送制御回路３４ｄに内蔵されたＲＡＭ５０ｄには、消去ブロック単位のアドレス変換テーブルが実質２セット構成されている。
【００７１】
本記憶装置のアクセスは以下のようになされる。
読み出しの際、たとえば外部から”０ｘ５５００Ｃ”のセクタアドレスが入力されると、転送制御回路３４ｄは上位のページアドレス” ０ｘ５５００”を受けて内蔵ＲＡＭ３７ｄにアクセスし、アドレス変換テーブル３８ｄから上記論理ページアドレスＬＰＡに対応する物理ページアドレスＰＰＡ”０ｘ０１８０”を取得する。この物理アドレスのうち、上位の”０ｘ０１”は消去ブロックに対応するアドレスであり、この値はアドレス変換テーブル５１ｄによって再度変換され、メモリチップであるフラッシュメモリ３５ｄに対する物理ブロックアドレスＰＢＡ０”０ｘ７０”およびフラッシュメモリ３６ｄに対する物理ブロックアドレスＰＢＡ１”０ｘ０１”が取得される。
実際のフラッシュメモリ３５ｄに対しては、アドレス変換テーブル３８ｄから得られた下位の物理ページアドレス”０ｘ８０”と、アドレス変換テーブル５１ｄのＰＢＡ０フィールドから得られた物理ブロックアドレス”０ｘ７０”が合成され、メモリ上の物理アドレス”０ｘ７０８０”に相当するページ領域３９ｄがアクセスされる。フラッシュメモリ３６ｄに対しては、アドレス変換テーブル３８ｄから得られた下位の物理ページアドレス”０ｘ８０”と、アドレス変換テーブル５１ｄのＰＢＡ１フィールドから得られた物理ブロックアドレス”０ｘ０１”が合成され、メモリ上の物理アドレス”０ｘ０１８０”に相当するページ領域４０ｄがアクセスされる。両者から読み出されたページデータはページバッファ３２ｄに一括格納される。インターフェース回路３１ｄはその中から、下位アドレス”０ｘＣ”に相当するセクタを選択し、外部に出力する。
【００７２】
一方、外部から”０ｘ５５００ｄ”に書き込みを行う場合は、まず読み出しと同様の手順でページデータ３９ｄ，４０ｄが各々メモリチップであるフラッシュメモリ３５ｄ，３６ｄから読み出され、ページバッファ３２ｄに一括格納される。その後下位アドレス”０ｘＣ”に相当するセクタが選択され、外部から入力されたデータに更新される。更新後のページデータは、フラッシュメモリ３５ｄおよび３６ｄに書き戻されるが、その際アドレス変換テーブル５１ｄの各論理アドレスに対応する物理アドレスが参照され、そのブロック内の空き領域が検索される。
たとえば、論理アドレスＬＢＡ”０ｘ４０”に対応して、フラッシュメモリ３５ｄ上の物理アドレスＰＢＡ０”０ｘ７１”のブロックに空き領域４１ｄが、フラッシュメモリ３６ｄ上の物理アドレスＰＢＡ１”０ｘ７Ｃ”のブロックに空き領域４２ｄがあり、そのメモリ上のページアドレスはそれぞれ”０ｘ７１Ｆ０”および”０ｘ７ＣＦ０”であったとする。このときページデータは空き領域４１ｄ，４２ｄに書き込まれ、さらにページテーブル３８ｄの論理アドレスＬＰＡ”０ｘ５５００”に対応する物理アドレスＰＰＡは”０ｘ４０Ｆ０”に更新される。
【００７３】
本実施形態では独立した物理アドレスフィールドを持つ消去ブロック単位のアドレス変換テーブル５１ｄを採用することで、フラッシュメモリ３５ｄおよび３６ｄの欠陥管理を全く独立に実施できる。その一方で、それらはページ単位のアドレス変換テーブル３８ｄからは、単一のチップと同様に扱われる。
このように、本実施形態における仮想アドレスの階層化は、追記型の記憶装置において、チップごとに独立した複雑な欠陥管理も可能にする。
【００７４】
上記実施形態ではブロックレベルのアドレス変換にアドレス変換テーブル５１ｄを使用した。しかしこのような対照テーブルを使用すると、各々のチップごとに物理アドレスフィールドを設ける必要があり、ＲＡＭ容量を圧迫する。
これに対して使用ＲＡＭ容量を圧縮したアドレス変換の例を示す。ハードウエア構成は図８と同様とする。
【００７５】
図１０（Ａ）〜（Ｃ）は、使用ＲＡＭ容量を圧縮したアドレス変換に使用するアドレス変換テーブルを示す図である。
【００７６】
ＲＡＭ３７ｄに格納されるアドレス変換テーブル３８ｇは第３の実施形態と同じである。ただし、ＲＡＭ５０ｄにはより小型のテーブル５１ｇおよび５２ｇが格納されている。
本例では、各論理ブロックアドレスＬＢＡに対しては、予め同じ値の物理ブロックアドレス”０ｘ００”〜”０ｘ６Ｆ”が暗黙に割り振られている。一方、物理ブロックアドレス”０ｘ７０〜０ｘ７Ｆ”の領域はスペアブロックに充てられる。
ブロックテーブル”５１ｇ”においては1ビットの欠陥フラグＤＥＦと、スペアテーブルのインデックスを格納するための５ビットのフィールドＳＩＤが設けられているのみである。一方スペアテーブル５２ｇには、各スペアインデックスＳＩＤに対応して、フラッシュチップごとの欠陥フラグＤＥＦ０、ＤＥＦ１とスペアオフセットＳＯＦ０、ＳＯＦ１が格納されている。
【００７７】
たとえば、外部から論理ページアドレスＬＰＡ”０ｘ５５００”へのアクセスがなされ、アドレス変換テーブル３８ｇから物理ページアドレスＰＰＡ”０ｘ０１８０”を取得したとする。
この物理アドレスのうち、上位の”０ｘ０１”は消去ブロックに対応する論理アドレスである。テーブル５１ｇにおいて、ブロックアドレスＬＢＡ”０ｘ０１”には欠陥フラグが立っており、スペアインデックスフィールドＳＩＤには”１０”が記録されている。そこでスペアテーブル５２ｇを参照すれば、チップ３５ｄには欠陥がなく、チップ３６ｄではスペアオフセットＳＯＦ１”０ｘ４”に対応するスペアブロックに置換すべきことが解る。
したがって、変換後の物理ブロックアドレスはチップ３５ｄにおいては論理アドレスと同じ”０ｘ０１”、チップ３６ｄに対してはスペア群から”０ｘ７４”と判定される。それらはページの下位アドレス”８０”と合成されて、各々のフラッシュメモリにおける対応ページ”０ｘ０１８０”および”０ｘ７４８０”がアクセスされる。
【００７８】
第３の実施形態におけるテーブル５１ｄでは１１２個の各論理ブロックに対して、各フラッシュチップの物理アドレス格納用に7ビットごとのフィールドが設けられていた。従って最小でも７ｘ２ｘ１１２〜１．５７ｋビットのメモリ容量を要したが、テーブル５１ｇは各論理アドレスに６ビット、さらにテーブル５２ｇは３２個のスペアブロックに１０ビットを使うのみなので、合計しても６ｘ１１２＋１０ｘ３２〜０．９９ｋビットで済む。したがって、使用するＲＡＭ容量を圧縮できる。
【００７９】
このように欠陥ブロックを回避するための変換手法にはさまざまなバリエーションが生じ得る。しかしいずれの場合でも、まずアドレス変換テーブルを用いてページ単位のアドレス変換を実施した後、その一部ビットに再度欠陥回避用の変換を施し、変換後の値を残りのビットと合成させてフラッシュメモリにアクセスしている。これによってページ単位の書き込みとブロック単位の欠陥管理を柔軟に両立させることが可能になる。
【００８０】
さらに上記実施形態のスペアテーブルのＲＡＭ容量を圧縮した例を図１１（Ａ）〜（Ｃ）に示す。
【００８１】
たとえば、図１０の実施形態のチップ数が２個から４個に増加した場合、図１０のスペアテーブル５２ｇの各行はさらに横方向へフィールドを同数追加することになる。一方、欠陥を含むブロックの総数も最大２倍と成り得るので、ＳＩＤも倍になり、範囲は０ｘ００〜０ｘ３Ｆとなる。このように使用チップ数がＮ倍になると、スペアテーブル５２ｇのＲＡＭサイズはＮの二乗倍に膨れ上がる。
【００８２】
これに対して、図１１の実施形態のスペアテーブル５２ｉは、同一の各論理ブロックアドレスＬＢＡに対応する複数の置換ブロックを縦積みで定義してある。”Ｌａｓｔ”フィールドは定義の末尾を示し、”Ｃｈｉｐ”フィールドは置換を実施するＣｈｉｐアドレスである。
テーブル５１ｉにおいて、ブロックアドレスＬＢＡ”０ｘ０１”には欠陥フラグが立っており、スペアインデックスフィールドＳＩＤには”０ｘ００”が記録されている。そこでスペアテーブル５２ｉを参照すれば、チップ”０ｘ０”および”０ｘ２”において、共にスペアオフセットＳＯＦ”０ｘ０”に対応するスペアブロックに置換すべきことが解る。
また、テーブル５１ｉにおいて、ブロックアドレスＬＢＡ”０ｘ６Ｅ”には欠陥フラグが立っており、スペアインデックスフィールドＳＩＤには”０ｘ１Ｆ”が記録されている。そこでスペアテーブル５２ｉを参照すれば、チップ”０ｘ１”、”０ｘ２”および”０ｘ３”において、それぞれスペアオフセットＳＯＦ”０ｘ６”、”０ｘＡ”および”０ｘ４”に対応するスペアブロックに置換すべきことが解る。
本例では、スペアテーブル５２ｉのＳＩＤは欠陥の総数をカバーするので、範囲は０ｘ００〜０ｘ３Ｆで実施例Ａ１と同様に増加する。しかし行方向のビット数増加は大幅に低減でき、スペアテーブルに要するＲＡＭ容量を圧縮できる。
【００８３】
さらに上述のように多重変換を行わないもう一つの解決手法を示す。簡便のため、ハードウエア構成は図７と同様とする。
【００８４】
図１２（Ａ）〜（Ｃ）は、使用ＲＡＭ容量を圧縮したアドレス変換に使用するアドレス変換テーブルの他の例を示す図である。
【００８５】
ＲＡＭ３７ｃに格納されるアドレス変換テーブル３８ｈは第２の実施形態と同じである。ただし、ＲＡＭ５０ｃには各物理ブロックアドレスＰＢＡにおける欠陥状態と、ブロックの使用状態を示すテーブル５１ｈが格納されている。欠陥フラグＤＥＦは対象ブロック内の欠陥の有無を示す。一方，使用フラグＵＳＤはブロック消去後に”０”となり、一箇所にでもデータが書き込まれると”１”になる。
さらに，前回書き込んだページアドレスを示す書き込みポインタがレジスタ５３ｈに格納されている。通常書き込みは、ポインタをインクリメントする形で実施される。すなわち，同一ブロック内では、ページアドレス”０ｘ００”から”０ｘＦＦ”に向けて順番に書き込まれる。
【００８６】
本実施形態では、フラッシュメモリ内に書き込みが実施される際、テーブル５１ｈとレジスタ５３ｈから書き込み先の物理ページアドレスが決定される。この際欠陥情報の検出された欠陥ブロックはスキップされ、欠陥ブロック内のページへは書き込みは実施されない。従って消去ブロックアドレスを変換することなく欠陥ブロックへのアクセスを回避できる。
【００８７】
たとえば論理ページアドレス”０ｘ５５００”の一部を更新するとする。この際まずページバッファへの読み出しが実施されるが、アドレス変換テーブル３８ｈから得られる物理ページアドレス”０ｘ０１８０”で直接フラッシュチップ３５ｃをアクセスして良い。こうして読み出され、ページバッファ上で更新されたデータは、以下の手順でフラッシュメモリ３５ｃの空き領域へ書き込まれる。
【００８８】
１．レジスタ５３ｈのポインタ値”０ｘ０１ＦＦ”は直前に書き込みを実施したページの物理アドレスを示している。これはブロック”０ｘ０１”の末尾のページであり、このブロックは一杯まで書き込まれていることが解る。従ってシステムは、ブロックアドレスをインクリメントしつつテーブル５３ｈをスキャンし、次の書き込み先ブロックを探す。
２．次のアドレス”０ｘ０２”のブロックはＤＥＦが”１”であり、欠陥ブロックである。したがってスキップされる。
３．次のアドレス”０ｘ０３”のブロックはＵＳＤが”１”であり、使用済みブロックである。従ってスキップされる。
４．次のアドレス”０ｘ０４”のブロックは消去済みの良品ブロックである。したがって
レジスタ５３ｈのポインタ値はその先頭ページアドレス”０ｘ０４００”に設定され、更新後データはそこに書き込まれる。
５．アドレステーブル３８ｈの論理ページアドレス”０ｘ５５００”に対応する物理アドレスフィールドが、”０ｘ０４００”に更新される。
【００８９】
すなわち、本実施形態では、物理ブロックアドレスごとに対応ブロックの欠陥と空き情報を記載したテーブルを設け、フラッシュメモリへの書き込みの時点で左記テーブルを参照し、欠陥ブロックを回避して、書き込み先のページを選択する機能を備える。
したがって、アドレス変換テーブル３８ｈにおける物理ページのアドレスフィールドには欠陥ブロック内のページは含まれる事は無く、ブロックアドレスを変換する必要が無い。
【００９０】
なお、各実施形態は全てフラッシュメモリを例に挙げたが、これらの追記型記憶システムは、たとえば電気的消去のできないＥＰＲＯＭやＯＴＰ等にも適用することができる。その他、バイト単位でのランダム書き換えができないあらゆるメモリに対して適用することが可能である。
【００９１】
ところで、追記型記憶システムにおいては、更新された後に残る過去のデータ領域は無効となる。特にフラッシュメモリにおいては、それらは消去ブロック単位で回復処理が実施され、書き込み可能な空き領域に変換される必要がある。特に消去ブロック内の書き込み順序に制約があるケースにおいて、その適切な回復手順を、第４の実施形態として図１３に示す。
【００９２】
図１３は、本第４の実施形態に係る記憶装置を示す構成図である。図１４（Ａ）〜（Ｃ）は、本第４の実施形態における消去ブロック内部のデータ処理手順を示す図である。
【００９３】
第４の実施形態に係る記憶装置３０Ｅの構成は、基本的に第２の実施形態と同様である。ただし、転送制御回路３４ｅ内には、ページアドレステーブルおよびブロックアドレステーブルを構築するＲＡＭ３７ｅ，５０ｅに加え、後述のページアドレス更新部分を一時的に記憶するレジスタ６０が設けられている。これは既存のＲＡＭ領域の一部を用いても良い。ここでフラッシュメモリ３５ｅ内の消去ブロック６１に対して、その無効領域の回復処理を行うとする。この際、予備の消去済みブロック６２を同時に使用する。
【００９４】
ここで、図１４（Ａ），（Ｂ），（Ｃ）に関連付けて、本第４の実施形態に係る消去ブロック６１，６２内部のデータ処理について説明する。
【００９５】
（Ａ）：消去ブロック６１には、一度データが書き込まれた後、更新によって無効化された領域６６，６７，６８が、有効なページデータ６３，６４，６５と共存している。ここで有効ページデータを残しつつ、無効化領域を空きエリアに回復させる必要がある。ページデータ６３，６４，６５には予備領域６９，７０，７１が設けられており、そこには各ページの論理アドレスが格納されている。一方、予備ブロック６２は消去済みの空き状態である。
【００９６】
（Ｂ）：有効なページデータ６３，６４，６５を予備ブロック６２内の空き領域７２，７３，７４に順番にコピーしていく。さらに、予備領域６９，７０，７１に記載された各ページの論理アドレスと、新規にコピーされた領域の物理アドレスとの照合を、レジスタ６０に格納する。
この際無効化された領域６６，６７，６８はコピー対象とされず、上記有効なページデータのみが予備ブロック６２に上詰でコピーされている。このような選択的コピー操作は、図２に示した一般的なコピー操作とは著しく異なり、ブロック内の各ページの相対位置の変化を伴っている。
【００９７】
（Ｃ）：ブロックアドレステーブル５０ｅを更新し、元の消去ブロック６１を予備ブロック６２と入れ替え、ブロック６１を予備ブロックとして消去する。さらにレジスタ６０の値を元に、ＲＡＭ３７ｅのページテーブル（アドレス変換テーブル）３８ｅを更新する。
【００９８】
上記手順に伴う、アドレス変換テーブル更新の具体例を図１５（Ａ），（Ｂ），（Ｃ）に示す。図１４における有効ページデータ６４（図１４）の論理ページアドレスは”０ｘ５５００”であるとする。この値は予備領域７０（図１４）に記載されている。以下このデータの推移を説明する。
【００９９】
（Ａ）：アドレス変換テーブル３８ｅより、論理ページアドレス”０ｘ５５００”に対応する物理ページアドレスは、”０ｘ０１８０”となり、その消去ブロックアドレス”０ｘ０１”はさらにアドレス変換テーブル５１ｅで変換された後も、同じ”０ｘ０１”である。すなわち、論理アドレス”０ｘ５５００”に対応するページデータ６４（図１４）は、物理アドレス”０ｘ０１”の消去ブロック６１内の、物理アドレス”０ｘ８０”に相当するページ領域６４に格納されている。
【０１００】
（Ｂ）：上記データは物理アドレス”０ｘ７２”に相当する予備ブロック６２（図１４）内の、物理アドレス”０ｘ０４”に相当するページ７３（図１４）にコピーされたとする。この際レジスタ６０には以下の照応が格納される。
・現在テーブル（５１ｅ）を用いてアクセスされている論理ブロックアドレス”０ｘ０１”。
・コピーデータの新規格納先である領域７３（図１４）の物理ページアドレス”０ｘ０４”。
・予備領域７０（図１４）に格納された論理ページアドレス”０ｘ５５００”。
【０１０１】
（Ｃ）：上記レジスタ６０の照応を反映させて、ページアドレス変換テーブル３８ｅを更新し、論理ページアドレス”０ｘ５５００”に対応する物理ページアドレスを”０ｘ０１０４”に書き換える。さらに予備ブロック６２（図１４）と元ブロック６１（図１４）の入れ替えに伴い、ブロックアドレス変換テーブル５１ｅを更新し、論理ブロックアドレス”０ｘ０１”に対応する物理ブロックアドレスを”０ｘ７２”に書き換える。
【０１０２】
このような手順を経てテーブル更新がなされた後は、まず外部から入力された論理ページアドレス”０ｘ５５００”に対し、まずアドレス変換テーブル３８ｅで物理ページアドレス”０ｘ０１０４”が取得され、さらにアドレス変換テーブル５１ｅで上位”０ｘ０１”に対する物理ブロックアドレス”０ｘ７２”が取得される。これによって新規領域７３（図１４）に正しくアクセスすることが可能になる。
【０１０３】
すなわち、無効データの回復処理に伴って有効データを移動させる際、予備領域に記載された論理ページアドレスをレジスタに一時記憶させ、この値をページアドレス変換テーブルに反映させることで、ブロック内のデータ格納場所の順序変更にも適切に対応することが可能になった。
【０１０４】
以上説明したように、本実施形態によれば、たとえばフラッシュメモリを記憶メディアとして使用する際、信頼性が高く、かつ高速な記憶システムを実現できる。
本実施形態によれば、ブロック単位の消去や、ブロック内のデータ書き込み順序の制約に伴う転送速度の悪化や書き込み劣化の発生を、大幅に低減することが可能である。
さらにそのような性能向上を得つつ、不良ブロックの置換等も機動的に実施でき、フラッシュメモリにおいて無効化された領域の回復も適切に実施できる。
【０１０５】
さらに第５の実施形態に係る記憶装置について説明する。
【０１０６】
図１６は、本第５の実施形態に係る記憶装置を示す構成図である。図１７（Ａ），（Ｂ）は、第５の実施形態に係る制御回路のアドレス変換テーブルおよびページ状態の管理テーブルの構成例を示す図である。
第５の実施形態に係る記憶装置７０の構成は、基本的に第一の実施形態と同様である。但し制御回路装置７４に内蔵されたＲＡＭ７７には、アドレス変換テーブル７８に加えて、ページ状態の管理テーブル８６が構築されている。
【０１０７】
図１６の記憶装置７０は、インターフェース回路（Ｉ／Ｆ）７１、ページバッファ７２、内部データバス７３、制御回路７４、およびＮＡＮＤ型フラッシュメモリ７５，７６を、主構成要素として有している。
【０１０８】
記憶装置７０において、３２ビットの内部データバス７３には、１６ビットの入出力を持つ２チップのＮＡＮＤ型フラッシュメモリ７５，７６が並列接続されている。２つのチップのフラッシュメモリ７５，７６は読み出しや書き込みにおいて、同時並列にアクセスされる。
ページバッファ７２は、アクセスされたページ領域を一時記憶するバッファであり、外部とのインターフェース回路７１に接続されている。
制御回路７４）は、メモリチップであるフラッシュメモリ７５，７６とページバッファ７２およびインターフェース回路７１の間のデータのやりとりを管理するコントローラであ、処理ユニットである内蔵ＣＰＵ８５によって制御される。同じく内蔵されたＲＡＭ７７には、ＣＰＵ８５を制御するためのプログラム領域やワークエリアが確保されるとともに、アドレス変換テーブル７８、およびページ状態の管理テーブル８６が構築されている。
【０１０９】
本記憶装置７０のアクセスは以下のようになされる。ここでは簡単のため、１６進数のアドレスは次のように割り振られるとする。たとえば外部入力アドレスが”０ｘ５５００Ｃ”であった場合、上位の”０ｘ５５００”はページアドレス、下位”０ｘＣ”はページ領域内のセクタアドレスであり、本記憶装置７０は１セクタ単位でランダムアクセスが可能である。
【０１１０】
読み出しの際、外部から”０ｘ５５００Ｃ”のセクタアドレスが入力されると、制御回路７４は上位のページアドレスを受けて内蔵ＲＡＭ７７にアクセスし、アドレス変換テーブル７８から論理ページアドレス（ＬＡ：ＬＯＧＩＣＡＬ  ＡＤＤＲＥＳＳ）”０ｘ５５００”に対応する物理ページアドレス（ＰＡ：ＰＨＩＳＩＣＡＬ  ＡＤＤＲＥＳＳ）”０ｘ００Ｂ０”を取得する。
この物理ページアドレスＰＡ中、上位の”０ｘ００”はメモリチップのフラッシュメモリ７５，７６内の消去ブロック８３，８４のアドレスである。下位”０ｘＢ０”は各消去ブロック内のページ領域７９，８０のアドレスである。
この物理アドレスＰＡをもとにメモリチップのフラッシュメモリ７５，７６が共にアクセスされ、各々からページアドレス”０ｘ００Ｂ０”に格納されたページ領域７９，８０のデータが読み出され、ページバッファ７２に格納される。インターフェース回路７１はその中から、下位アドレス”０ｘＣ”に相当するセクタを選択し、外部に出力する。
【０１１１】
一方、外部から”０ｘ５５００Ｃ”に書き込みを行う場合は、まず読み出しと同様の手順でページ領域７９，８０のデータがメモリチップのフラッシュメモリ７５，７６から読み出され、ページバッファ７２に格納される。その後下位アドレス”０ｘＣ”に相当するセクタが選択され、外部から入力されたデータに更新される。
【０１１２】
更新後のページデータは、フラッシュメモリ７５，７６に書き戻されるが、その際読み出し元のページ領域７９，８０が書き換えられるのでは無く、空き領域８１，８２に書き込まれる。
このページ領域の物理ページアドレスは”０ｘ０２８０”であり、すなわち消去ブロック”０ｘ０２”内の”０ｘ８０”のページに相当する。またこの処理の前まで、その領域はアドレス変換テーブル７８のいずれの物理アドレスフィールドにも登録されていない、未使用の空きページであった。
更新後のデータがこの領域に追記の形で書き込まれるとともに、アドレス変換テーブル７８の論理アドレス”０ｘ５５００”に対応する物理アドレスフィールドには、空き領域８１，８２の物理ページアドレス”０ｘ０２８０”が登録される。
【０１１３】
このように更新データを追記するための空き領域の管理は、たとえば図１６に示すようなページ状態管理テーブル８６をＲＡＭ７７上に構築して使用する。
本テーブルは（ＢＡ：Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）で表現される各消去ブロックに格納された各々のページの状態を２ビットのフラグ列で記録している。”０”は空き領域であり、”１”は書き込みが行なわれた有効領域、”２”はデータが更新され、無効化された無効領域を示す。
【０１１４】
図１７の状態はブロックアドレス”０ｘ０２”における物理ページ”０ｘ８０”以降が全て空き状態になっている。たとえば追記のための空き領域を決定するために、現在検索対象としているブロック”０ｘ０２”へのポインタをメモリ領域８７に保存しておく。
フラッシュへの書き込み要求があれば、その上位ページからこのテーブルのフラグをスキャンして空きページ領域を検索する。ブロック全ての空き領域が使用されていると、ポインタをインクリメントし、次は”０ｘ０３”のブロックから空きページ領域を探す。
このようにしてポインタをブロックアドレスの先頭から末尾にかけて循環させていけば、フラッシュメモリ全域に対して均一な書き込みが実施できる。
【０１１５】
本構成では二つのメモリチップであるフラッシュメモリ７５，７６が並列化され、各々から読み出されたページデータが、ページバッファ７２に一括格納される。この際単独チップを使用した場合に比べてメモリ容量は２倍になるが、これは一括アクセス単位であり、アドレス変換テーブル７８の管理単位でもあるページ領域の容量が２倍になることで実現されるので、ページ数は増加しない。したがってアドレス変換テーブル７８は変化せず、それを格納するメモリ（ＲＡＭ）７７の容量も増加しない。
一方、並列化の弱点である消去回数の増加や、書き換え疲労が加速はページ単位のアドレス変換を用いた追記型の書き込みで大幅に緩和される。
【０１１６】
なお、たとえば大型のファイル書き換え等、消去ブロック全体を書き換える場合には、有効データの退避処理はもともと不要であり、ブロック消去のみで良い。したがって、このようなケースでは上記追記型書き込みの採用の有無で大きな性能差は生じない。したがって一般的型書き換えと追記型書き換えをケースに応じて組み合わせても良い。
【０１１７】
ところで、上述の如き追記型書き込みを実施した場合、更新前のデータが格納されていた物理ページアドレス”０ｘ００Ｂ０”に相当するページ領域７９，８０はアドレス変換テーブル７８の物理アドレスフィールドから削除され、外からアクセスできなくなる。すなわち無効化される。
しかしそれらにはデータが書き込まれており、そのままでは空き領域として使用することもできない。上述のような書き換えを何度も繰り返すと、多くの無効ページ領域が発生する。それらは再度空き領域として使用できるよう、消去して回復させる必要がある。またその場合、消去ブロック８３，８４に残された有効データは退避させねばならない。
【０１１８】
このような回復処理は、たとえばまず対象ブロック内の有効データを、更新の際と同様に一旦ページバッファに読み出してから予備のページ領域に追記で書き込んでいき、それによって実質的な退避を行なえば良い。すなわち有効ページを仮更新することで、その元領域を全て無効化する。その後対象ブロックを消去することによって、回復処理が実施される。
【０１１９】
図１８（Ａ）〜（Ｃ）は、無効領域の回復手順を説明するための図である。
図１８（Ａ）〜（Ｃ）には、消去ブロック８３，８４内部の有効データを退避し、無効ページ領域を実質的に回復させる、具体的手順＜１＞、＜２＞、＜３＞を例示している。
【０１２０】
手順＜１＞
図１７の状態からさらに追記による書き換えが進行し、消去ブロック８３，８４には、一度データが書き込まれた後、更新によって無効化されたページ領域群９４，９６が、有効なページ領域群９３，９５，９７と共存しているとする。ここで有効ページ領域のデータを残しつつ、無効化領域を空き領域に回復させる必要がある。
一方、ブロック９１，９２は現在追記用の空き領域として使用している消去ブロックであり、ページ領域１０２まで書き込みが成されている。
【０１２１】
手順＜２＞
有効なページ領域群９３，９５，９７を消去ブロック９１，９２内の空き領域９８，９９，１００に上詰めにして順番にコピーしていく。この際たとえば図１６のページバッファ７２に消去ブロック８３，８４から順次１ページ領域ずつを読み出し、消去ブロック９１，９２に書き込むとともに、アドレス変換テーブル７８を更新する。すなわち各々のページ領域の論理アドレスに対応する物理アドレスフィールドに、コピー先の物理ページアドレスを登録していく。この際、各々のページ領域の論理アドレスは、各ページ領域にデータが書き込まれた際にその予備領域に記載しておき、コピー時にページバッファ７２に読み出した時点で取得する。
この操作は、すなわち有効ページ領域群９３，９５，９７を追記方式で書き換える作業（処理）に等しい。あるいは、予め予備領域を先行してページバッファ７２に読み出し、まず論理アドレスを取得した後に、その論理アドレスに対してページ更新処理を実施すれば、通常のページ更新処理と全く同じプログラムで、コピー作業とアドレス変換テーブル７８の更新作業が自動的に実際される。
実際には書き換えずコピーするのみであるが、この作業によって消去ブロック８３および８４内の全てのページは無効化され、有効ページ領域のデータは消去ブロック９１，９２に実質的に退避せしめられる。
【０１２２】
手順＜３＞
消去ブロック８３，８４を消去する。これによってその内部は全て空き領域となり、後の追記に使用することが可能になる。これをもって無効領域９４，９６は実効的に回復される。
【０１２３】
このように無効ページ領域の回復処理は、各有効ページ領域のコピーによる退避処理と、元消去ブロックの消去よりなる。また、回復対象となる消去ブロック内の有効ページに通常の更新処理と同様の手順でダミーの更新を施し、それをもってページの退避を実行すれば、回復処理時の有効ページ退避を通常の書き込みアルゴリズムに統合させることが可能である。
この場合、制御が容易になるばかりではなく、フラッシュメモリへの書き込みの均一化等、書き込み時の信頼性向上の為の各種工夫を回復処理にも適用することができ、記憶装置の総合的な信頼性を向上させることができる。
【０１２４】
以上、本発明を用いた記憶装置について具体的な実施形態を述べたが、装置内部の構成はモディファイすることができる。
たとえば図１６におけるページバッファ７２は、制御回路７４内部のＲＡＭ７７上に構築しても良い。そのような場合にはインターフェース回路７１、フラッシュメモリ７５，７６および制御回路７４は共通の内部データバス７３で接続された構成となる。
またはページバッファ７２とフラッシュメモリ７５，７６との間にＥＣＣによるエラー訂正回路を設けて、ページバッファからフラッシュメモリへのページデータ書き込み時には符号化を実施してパリティビットを追加し、フラッシュメモリからページバッファへのページデータ読み出し時には復号化を行なっても良い。そのような装置構成の違いに関わらず、本発明を適用することは可能である。
または先に説明した第１〜第４の実施形態で述べたように、アドレス変換テーブル７８，１２１に従ってページ単位のアドレス変換を実施した後、フラッシュメモリ内の欠陥ブロックをスキップするために、さらにブロックレベルでのアドレス変換を挿入しても良い。このような場合でも、前述した例と同様の制御で、本発明は問題なく適用することが可能である。
【０１２５】
図１９は、第６の実施形態を示す図であって、そのようなＥＣＣ処理と欠陥ブロック管理を導入した、第５の実施形態（図１８）の装置構成上の応用変形例を示す図である。
図２０（Ａ），（Ｂ）は、第６の実施形態に係る制御回路のアドレス変換テーブルおよびページ状態の管理テーブルの構成例を示す図である。
【０１２６】
記憶装置１１０において、３２ビットの内部データバス１１３には、１６ビットの入出力を持つ２チップのＮＡＮＤ型フラッシュメモリ１１５，１１６が並列接続されている。２つのチップのフラッシュメモリ１１５，１１６は読み出しや書き込みにおいて、同時並列にアクセスされる。
ページバッファ１１２はアクセスされたページ領域を一時記憶するバッファであり、外部とのインターフェース回路１１１に第２の内部データバス１１８を介して接続されている。さらに第２の内部データバス１１８にはキャッシュメモリ１１７が接続されている。
制御回路１２３はフラッシュメモリ１１５，１１６とページバッファ１１２の間の転送を制御する。制御回路１２３にはフラッシュメモリ内の欠陥ブロックがアクセスされぬよう、その内蔵ＲＡＭ１２４上に、ブロック単位のアドレス変換でそれらをスキップさせるためのアドレス変換テーブル１２６が構築されている。
さらに制御回路１２３にはＥＣＣ回路１２５が搭載されており、ページバッファ１１２からフラッシュメモリ１１５，１１６にデータが書き込まれる際には符号化によるパリティビットの追加を行い、フラッシュメモリ１１５，１１６からページバッファ１１２にデータが読み出される際には復号化によるエラー訂正を実施する。
制御回路１１４はページバッファ１１２、キャッシュメモリ１１７およびインターフェース回路１１１の間のデータのやりとりを管理するコントローラであり、内蔵ＣＰＵ１１９によって制御される。同じく内蔵されたＲＡＭ１２０には、ＣＰＵ１１９を制御するためのプログラム領域やワークエリアが確保されるとともに、アドレス変換テーブル１２１が構築されている。
さらに制御回路１１４には、ＣＰＵの制御無しでキャッシュメモリ１１７とインターフェース回路１１１間のデータ転送を制御する制御回路１２２が搭載されている。
なお本図面においては制御線の記載は省略されている。
【０１２７】
本第６の実施形態における第５の実施形態（図１８）との主たる相違は、ページバッファ１１２とフラッシュメモリ１１５，１１６との間の転送に関して、アドレス変換テーブル１２６とＥＣＣ回路１２５を保有する専用の制御回路１２３が設けられていることである。
これにより外部から入力された論理アドレスは、それを元にフラッシュメモリ１１５，１１６へのアクセスが成される場合、アドレス変換テーブル１２１と１２６により二重の変換を受ける。さらに入出力データにもＥＣＣ符号化、復号化の変換が施される。
具体的な動作を以下に述べる。
【０１２８】
読み出しの際、外部から”０ｘ５５００Ｃ”のセクタアドレスが入力されると、制御回路１１４は上位のページアドレスを受けて内蔵ＲＡＭ１１７にアクセスし、アドレス変換テーブル１２１から論理ページアドレス（ＬＰＡ：ＬＯＧＩＣＡＬ  ＰＡＧＥ  ＡＤＤＲＥＳＳ）”０ｘ５５００”に対応する物理ページアドレス（ＰＰＡ：ＰＨＩＳＩＣＡＬ  ＰＡＧＥ  ＡＤＤＲＥＳＳ）”０ｘ００Ｂ０”を取得する。
この物理ページアドレスＰＡ中、上位の”０ｘ００”は消去ブロックのアドレスを示すが、さらに制御回路１２３に入力されると、この部分は論理ブロックアドレス（ＬＢＡ：ＬＯＧＩＣＡＬ  ＢＬＯＣＫ  ＡＤＤＲＥＳＳ）として扱われ、アドレス変換テーブル１２６から物理ブロックアドレス（ＰＢＡ：ＰＨＩＳＩＣＡＬ  ＢＬＯＣＫ  ＡＤＤＲＥＳＳ）”０ｘ０１”が取得される。これがメモリチップのフラッシュメモリ１１５，１１６内の消去ブロック１２７，１２８のアドレスである。
【０１２９】
一方、下位”０ｘＢ０”は各消去ブロック１２７，１２８内のページ領域１２７１，１２８１のアドレスである。
この物理アドレスをもとにフラッシュメモリ１１５，１１６が共にアクセスされ、各々からページアドレス”０ｘ０１Ｂ０”に格納されたページ領域１２７１，１２８１のデータが読み出され、さらにＥＣＣ復号化が施されて、ページバッファ１１２に格納される。
【０１３０】
一方、外部から”０ｘ５５００Ｃ”に書き込みを行う場合は、まず読み出しと同様の手順でページ領域１２７１，１２８１のデータがフラッシュメモリ１１５，１１６から読み出され、ページバッファ１１２に格納される。その後バッファ内の所望の箇所が、書き込みデータに更新される。
更新後のページデータは、フラッシュメモリ１１５，１１６に書き戻されるが、その際読み出し元のページ領域１２７１，１２８１が書き換えられるのでは無く、アドレス変換テーブル１２１のいずれの物理アドレスフィールドにも登録されていない、未使用の空きページに書き込まれる。そのような空きページは制御回路１１４側で管理されており、たとえば図１６のような管理テーブル８６が使用されて、物理ページアドレス” ０ｘ０２８０”が選択される。
このうち上位の”０ｘ０２”は制御回路１２３に入力されると、アドレス変換テーブル１２６から”０ｘ０３”に変換され、合成されたアドレス”０ｘ０３８０”から、メモリチップのフラッシュメモリ１１５，１１６のページ領域１２９ａ，１２９ｂに、ページバッファ１１２の更新済みデータが書き込み転送される。この際データには、ＥＣＣ符号化によるパリティビットが追加される。
【０１３１】
一方、制御回路１１４は、アドレス変換テーブル１２１の論理ページアドレス”０ｘ５５００”に対応する物理ページアドレスのフィールドに、” ０ｘ０２８０”を登録し、元の物理ページアドレス”０ｘ００Ｂ０”は無効化ページ領域として管理する。いずれのページアドレスも制御回路１２３の変換を経れば、フラッシュメモリ１１５，１１６上の正しいページ領域をポイントする。
【０１３２】
本第６の実施形態においては、制御回路１１４で導出される物理ページアドレスは、制御回路１２３によって一対一のブロックレベルの変換を受けるが、その際同一ブロック内の各ページの相対位置は全く変わらない。したがって制御回路１１４からは、制御回路１２３で施される各種変換はブラックボックスとみなして良い。すなわち制御回路１１４は、メモリチップのフラッシュメモリ１１５，１１６と制御回路１２３を一体化したフラッシュメモリデバイスとみなし、独立した論理で任意のアクセスを実施しても、齟齬は発生しない。これはＥＣＣによる符号化、復号化についても同様である。
その結果制御回路１１４は、第５の実施形態と全く同様のアルゴリズムで無効化領域の回復処理を実施することが可能となる。
【０１３３】
ところでここまでは、独立した記憶装置の内部にアドレス変換機構や回復処理機構を設ける場合について説明してきた。
しかし、このようなアドレス変換テーブルの管理と回復処理を、ホスト側の制御で実施することも可能である。そのようなコンピュータシステムを第７の実施形態として、図２１に示す。
【０１３４】
図２１は、本第７の実施形態に係るコンピュータシステムの構成例を示す図である。また、図２２は、第７の実施形態に係る制御回路のアドレス変換テーブルの構成例を示す図である。
【０１３５】
図２１のコンピュータシステム１３０は、処理ユニットとしてのＣＰＵ１３１、システムメモリであるＲＡＭ１３２、システムバス１３３、ブリッジ回路１３３、ＮＡＮＤ型フラッシュメモリ１３５，１３６、データバス１３７、およびページバッファ１３８を、主構成要素として有している。
【０１３６】
ＣＰＵ１３１は３２ビットのシステムバス１３３を介してシステムメモリであるＲＡＭ１３２と接続されている。さらに、システムバス１３３にはブリッジ回路１３４が接続されている。ブリッジ回路１３４に繋がる３２ビットのデータバス１３７には、１６ビットの入出力を持つ２チップのＮＡＮＤ型フラッシュメモリ１３５，１３６が並列接続されている。２つのチップのフラッシュメモリ１３５，１３６は読み出しや書き込みにおいて、同時並列にアクセスされる。
ページバッファ１３８はアクセスされたページ領域を一時記憶するバッファであり、ブリッジ回路１３４に内蔵されている。
ブリッジ回路１３４はＣＰＵ１３１から各種コマンドを受け取り、フラッシュメモリ１３５，１３６とＣＰＵ１３１またはシステムメモリ１３２との間のデータのやり取りを、ページバッファ１３８を用いて媒介する。
ブリッジ回路１３４が受け取るコマンドは、たとえばフラッシュメモリ１３５，１３６の所定のページへのアクセスの他、同フラッシュメモリの所定ブロックの消去、および所定ページの指定アドレスへのコピー、フラッシュメモリのリセット等である。
【０１３７】
一方、システムメモリ１３２内には上記フラッシュ記憶システムを制御するためのドライバー１３９が常駐している。このドライバー１３９は、ＯＳやアプリケーションからの記憶装置へのアクセスを受け、同じメモリ中に構成されたアドレス変換テーブル１４０を参照してアクセス時のページアドレスを変換する。
【０１３８】
本記憶システムのアクセスは以下のようになされる。ここでは簡単のため、１６進数のアドレスは次のように割り振られるとする。たとえば外部入力アドレスが”０ｘ５５００Ｃ”であった場合、上位の”０ｘ５５００”はページアドレス、下位”０ｘＣ”はページ領域内のセクタアドレスであり、本記憶装置は１セクタ単位でランダムアクセスが可能である。
【０１３９】
読み出しの際、たとえばアプリケーションからアドレス”０ｘ５５００Ｃ”のセクタの読み出しが要求されると、ドライバー１３９は上位のページアドレスを受けてアドレス変換テーブル１４０から論理ページアドレス（ＬＡ：ＬＯＧＩＣＡＬ  ＡＤＤＲＥＳＳ）”０ｘ５５００”に対応する物理ページアドレス（ＰＡ：ＰＨＩＳＩＣＡＬ  ＡＤＤＲＥＳＳ）”０ｘ００Ｂ０”を取得する。
この物理ページアドレスＰＡ中、上位の”０ｘ００”はメモリチップのフラッシュメモリ１３５，１３６内の消去ブロック１４１，１４２のアドレスである。下位”０ｘＢ０”は各消去ブロック内のページ領域１４３，１４４のアドレスである。
この物理アドレスをもとに、ブリッジ回路１３４を介してメモリチップのフラッシュメモリ１３５，１３６が共にアクセスされ、各々からページアドレス”０ｘ００Ｂ０”に格納されたページ領域１４３，１４４のデータが読み出され、ページバッファ１３８に格納される。
ブリッジ回路１３４はその中から、下位アドレス”０ｘＣ”に相当するセクタを選択し、ＣＰＵ１３１またはシステムメモリ１３２に出力する。
【０１４０】
一方、アプリケーションから”０ｘ５５００Ｃ”への書き込み要求を受けた場合は、まず読み出しと同様の手順でドライバー１３９によってアドレス変換が実施され、ページ領域１４３，１４４のデータがメモリチップのフラッシュメモリ１３５，１３６から読み出され、ページバッファ１３８に格納される。その後下位アドレス”０ｘＣ”に相当するセクタが選択され、新規データに更新される。
更新後のページデータは、フラッシュメモリ１３５，１３６に書き戻されるが、その際各々の空き領域１４５，１４６に書き込まれる。このページ領域の物理ページアドレスは”０ｘ０２８０”であり、即ち消去ブロック”０ｘ０２”内の”０ｘ８０”のページに相当する。またこの処理の前まで、その領域はアドレス変換テーブル１４０のいずれの物理アドレスフィールドにも登録されていない、未使用の空きページであった。
更新後のデータがこの領域に追記の形で書き込まれるとともに、アドレス変換テーブル１４０の論理アドレス”０ｘ５５００”に対応する物理アドレスフィールドには、空き領域１４５，１４６の物理ページアドレス”０ｘ０２８０”が登録される。
【０１４１】
ところで上述の如き追記型書き込みを実施した場合、更新前のデータが格納されていた物理ページアドレス”０ｘ００Ｂ０”に相当するページ領域１４３，１４４はアドレス変換テーブル１４０の物理アドレスフィールドから削除され、無効化される。
しかしそれらにはデータが書き込まれており、そのままでは空き領域として使用することもできない。上述のような書き換えを何度も繰り返すと、多くの無効ページ領域が発生する。それらは再度空き領域として使用できるよう、消去して回復させる必要がある。またその場合、消去ブロック１４１，１４２に残された有効データは退避させねばならない。
【０１４２】
このような回復処理は、たとえば図１８（Ａ）〜（Ｃ）に関連つけて前述したのと同様のアルゴリズムで、空き領域を持つブロック１４７，１４８を使用して行われる。すなわち回復処理の対象ブロックである消去ブロック１４１，１４２上の有効なページ領域群のデータを退避先ブロック１４７，１４８内の空き領域に上詰めにして順番にコピーし、それに応じてアドレス変換テーブル１４０の物理アドレスを更新する。全て有効ページデータがコピーされ終わると、元ブロック１４１，１４２を消去する。
【０１４３】
ただし本第９の実施形態では、ドライバー１３９を用いてホストＣＰＵ１３１がブリッジ回路１３４にコマンドを送ることで、それらの処理（作業）を制御する。
たとえば上記回復作業における有効ページデータのコピーは、ホストＣＰＵ１３１からのコピーコマンドに応じて、ブリッジ回路１３４が所定のページをコピー元からページバッファ１３８に読み出してコピー先に書き込む。または所定のブロックを消去する。この際システムバス１３３は使用されないので、もし必要があれば、ＣＰＵ１３１は上記コマンドを送信した後は別の処理（作業）を並行して実施することも可能である。
【０１４４】
なお、このようなシステムにおいても、先に説明した第１〜第６の実施形態で述べたように、アドレス変換テーブル１４０に従ってページ単位のアドレス変換を実施した後、フラッシュメモリ内の欠陥ブロックをスキップするために、さらにブロックレベルでのアドレス変換を挿入しても良い。
【符号の説明】
【０１４５】
３０，３０Ｃ〜３０Ｆ・・・記憶装置、３１，３１ｃ〜３１ｆ・・・インターフェース回路、３２，３２ｃ〜３２ｅ・・・ページバッファ、３３，３３ｃ〜３３ｅ・・・内部データバス、３４，３４ｃ〜３４ｅ・・・転送制御回路、３５，３５ｃ〜３５ｅ、３６、３６ｄ、・・・フラッシュメモリ、３８，３８ｃ〜３８ｉ、５１ｃ〜５１ｅ〜アドレス変換テーブル、７０・・・記憶装置、７１・・・インターフェース回路（Ｉ／Ｆ）、７２・・・ページバッファ、７３・・・内部データバス、７４・・・制御回路、７５，７６・・・ＮＡＮＤ型フラッシュメモリ、７８・・・アドレス変換テーブル、１１０・・・記憶装置、１１１・・・インターフェース回路（Ｉ／Ｆ）、１１２・・・ページバッファ、１１３・・・内部データバス、１１４・・・制御回路、１１５，１１６・・・ＮＡＮＤ型フラッシュメモリ、１１７・・・キャッシュメモリ、１１８・・・第２の内部データバス、１１９・・・ＣＰＵ、１２１・・・アドレス変換テーブル、１２３・・・制御回路、１２６・・・アドレス変換回路、１３０・・・コンピュータシステム、１３１・・・ＣＰＵ、１３２・・・システムメモリ（ＲＡＭ）、１３３・・・システムバス、１３４・・・ブリッジ回路、１３５，１３６・・・ＮＡＮＤ型フラッシュメモリ、１３７・・・データバス、１３８・・・ページバッファ。
【図１】
0005617873.tif 000002
【図２】
0005617873.tif 000003
【図３】
0005617873.tif 000004
【図４】
0005617873.tif 000005
【図５】
0005617873.tif 000006
【図６】
0005617873.tif 000007
【図７】
0005617873.tif 000008
【図８】
0005617873.tif 000009
【図９】
0005617873.tif 000010
【図１０】
0005617873.tif 000011
【図１１】
0005617873.tif 000012
【図１２】
0005617873.tif 000013
【図１３】
0005617873.tif 000014
【図１４】
0005617873.tif 000015
【図１５】
0005617873.tif 000016
【図１６】
0005617873.tif 000017
【図１７】
0005617873.tif 000018
【図１８】
0005617873.tif 000019
【図１９】
0005617873.tif 000020
【図２０】
0005617873.tif 000021
【図２１】
0005617873.tif 000022
【図２２】
0005617873.tif 000023