(57)【要約】【課題】フラッシュメモリを主媒体とする記憶装置に小容量でもヒット率が高く、アクセスのオーバーヘッドも少ないキャッシュメモリを付与することが可能になり、フラッシュメモリへの書き込みを高速化し、書き換え回数も低減させることが可能なコンピュータシステムを提供する。【解決手段】処理装置５０と、キャッシュメモリ３８と、処理装置５０のCPU５１からの要求に応じて、キャッシュメモリ３８を介したデータ書き込みが行われるフラッシュメモリ３５，３６と、を有し、キャッシュメモリ３８にエントリされるラインサイズはフラッシュメモリの一括書き込み単位である実ページサイズの１／Ｎである（ただし、Ｎは２以上の整数）。【選択図】図３
2007034944.tif 000002
【特許請求の範囲】
【請求項１】
処理装置と、
キャッシュメモリと、
上記処理装置からの要求に応じて、キャッシュメモリを介したデータ書き込みが行われるフラッシュメモリと、を有し、
上記キャッシュメモリにエントリされるラインサイズは上記フラッシュメモリの一括書き込み単位である実ページサイズの１／Ｎである（ただし、Ｎは２以上の整数）
コンピュータシステム。
【請求項２】
実ページのデータを格納するページバッファを、さらに有し、
上記キャッシュメモリにエントリされたデータを上記フラッシュメモリへ書き込む際には、当該エントリに対応する実ページデータのうち、上記キャッシュメモリ上のエントリ部とフラッシュメモリ上の非エントリ部が上記ページバッファ内で合成され、合成後にフラッシュメモリに書き込まれる
請求項１記載のコンピュータシステム。
【請求項３】
上記キャッシュメモリはセットアソシアティブ構成を有し、そのセット数はＮまたはＮの整数倍である
請求項２記載のコンピュータシステム。
【請求項４】
上記キャッシュメモリ内に、同じ実ページ内の異なる領域に対応する複数のエントリが存在する場合、少なくともその二つ以上をまとめてフラッシュメモリに書き戻す機能を有する
請求項２記載のコンピュータシステム。
【請求項５】
上記フラッシュメモリへの実ページデータの書き戻しは、更新されたページデータを消去済みの領域に追記し、元のページ領域を無効化することによって実施される
請求項２記載のコンピュータシステム。
【請求項６】
処理装置と、
キャッシュメモリと、
上記処理装置からの要求に応じて、キャッシュメモリを介したデータ書き込みが行われるフラッシュメモリと、
バッファと、を有し、
上記キャッシュメモリの１エントリは複数のセクタを含み、更新はセクタ単位で行われ、
キャッシュメモリにエントリされたデータを上記フラッシュメモリへ書き込む際には、キャッシュメモリ上の更新セクタとフラッシュメモリ上の非更新セクタとが上記バッファ内で合成され、合成後にフラッシュメモリに書き込まれる
コンピュータシステム。
【請求項７】
実ページのデータを格納するページバッファを、さらに有し、
上記キャッシュメモリの１エントリは複数のセクタを含み、更新はセクタ単位で行われ、
上記キャッシュメモリにエントリされたデータをフラッシュメモリへ書き込む際には、まずエントリに対応する実ページデータのうち、キャッシュメモリ上の当該エントリ内の更新セクタとフラッシュメモリ上の非更新セクタとが上記ページバッファ内で合成され、合成後にフラッシュメモリに書き戻される
請求項６記載のコンピュータシステム。
【請求項８】
処理装置と、
キャッシュメモリと、
上記処理装置からの要求に応じて、キャッシュメモリを介したデータ書き込みが行われるフラッシュメモリと、ページバッファを有し、
キャッシュメモリにエントリされるラインサイズの複数倍の連続データを上記ページバッファに一時保存し、それらを上記フラッシュメモリに一括して書き込む機能を有する
コンピュータシステム。
【請求項９】
上記キャッシュメモリにエントリされたデータを上記フラッシュメモリへ書き込む際には、当該エントリに対応する実ページデータのうち、上記キャッシュメモリ上のエントリ部とフラッシュメモリ上の非エントリ部が上記ページバッファ内で合成され、合成後にフラッシュメモリに書き込まれる
請求項８記載のコンピュータシステム。
【請求項１０】
上記キャッシュメモリはセットアソシアティブ構成を有し、そのセット数はＮまたはＮの整数倍である
請求項９記載のコンピュータシステム。
【請求項１１】
上記キャッシュメモリ内に、同じ実ページ内の異なる領域に対応する複数のエントリが存在する場合、少なくともその二つ以上をまとめてフラッシュメモリに書き戻す機能を有する
請求項１０記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリを記憶装置に用いたコンピュータシステムに関するものであり、特に記憶装置におけるデータ転送の高速化に関するものである。
【背景技術】
【０００２】
近年、デジタルスチルカメラやモバイルコンピュータ機器の記憶媒体として、フラッシュメモリが注目されている。
【０００３】
フラッシュメモリは、トンネリングやホットエレクトロン加速を用いて、電子にゲート絶縁膜を通過させ、それらを浮遊ゲートやトラップ層に注入し、セルトランジスタの閾値を変化させることでデータを記憶させる半導体メモリである。積層ゲート構造やＭＮＯＳ構造等を用いたトランジスタ１つのみでメモリセルを構成できるため、安価かつ大容量のメモリを実現できる。
その代表例として、ＮＡＮＤ型フラッシュメモリが挙げられる。
【０００４】
図１は、ＮＡＮＤ型フラッシュメモリの内部構成例を示す図である。
図１のＮＡＮＤ型フラッシュメモリは、ビット線ＢＬ１〜ＢＬｎに接続された複数のメモリユニット１−１〜１−ｎがアレイ状に（縦横）に配列されている。
たとえば、選択用トランジスタ２のゲートが選択ゲート線ＳＬ１に接続され、選択用トランジスタ３のゲートが選択ゲート線ＳＬ２に接続されている。また、各メモリセルＮ０〜Ｎ１５のゲートがワード線ＷＬ０〜ＷＬ１５に接続されている。
【０００５】
各メモリセルＮ０〜Ｎ１５は積層ゲート構造を持ち、浮遊ゲートへの電荷蓄積量に従ってデータを記憶する。すなわち、浮遊ゲートに多くの電子が蓄積されていると、トランジスタの閾値が上昇するので、チャージされたビット線ＢＬ１〜ＢＬｎからのメモリユニット１（−１〜−ｎ）への電流貫通の有無を、センスアンプ等を含むアクセス回路４で検出してデータ判定を行う。
【０００６】
このようなＮＡＮＤ型フラッシュメモリは、メモリセル毎にビット線へのコンタクト領域を設ける必要もないので、特に大容量で安価な記憶装置の媒体に適している。
【０００７】
ところで、一般にフラッシュメモリのプログラム速度は非常に遅く、セルあたり数百μ秒を必要とする。またデータの上書きはできないので、プログラムに先立って消去を行う必要があり、これには数ｍ秒もの時間がかかる。このような問題に対しては、多くのメモリセルを並列処理することで対処している。
【０００８】
すなわち、たとえば同一ワード線ＷＬ０に接続され、ページ単位を成すメモリセル群５を、同時一括に書き込み、さらに互いにメモリユニットを共有するページ群で構成されるセルブロック６を全て一括で消去することにより、プログラムの転送速度を向上させている。
【０００９】
具体的には、たとえば非特許文献１には１ＧｂのＮＡＮＤ型フラッシュメモリが掲載されており、ページサイズを２ｋバイト、消去ブロックサイズを１２８ｋＢとしている。すなわち、一つのメモリアレイ内で１２８ｋバイトのメモリセル群を並列消去し、そこにメモリセルを２ｋバイト毎に並列でプログラムしていくことによって、１０ＭＢ／ｓのプログラム転送速度を実現している。
【非特許文献１】ＩＳＳＣＣ２００２予稿集のｐ１０６、セッション６．４
【特許文献１】特開平５−２１６７７５号公報
【特許文献２】特開平６−３４９２８６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
近年、ハードディスクの消費電力の大きさや、シーク時間の長さ、耐衝撃性や携帯性等の問題を解消すべく、フラッシュメモリにその代替が期待されている。
しかし上述の如く、フラッシュメモリにはアクセス単位を大きくしないと高速化できないという欠点がある。また、データの上書きができないので、書き換えには必ず消去が必要であり、その際の消去ブロックはさらに大きい。
このようにアクセス単位に対して消去単位が数十倍大きいのは、消去時間が長く、かつ書き込み時に非選択セルにディスターブが生じるフラッシュメモリには一般的な仕様である。しかしこれによりその書き込み効率は著しく低下する。
【００１１】
たとえば上記２ｋＢ単位のページ書き込み、１２８ｋＢ単位のブロック消去による、転送速度１０ＭＢ／ｓフラッシュメモリを用いて、ハードディスク代替用の記憶装置を構成するとする。
その転送速度を、シリアルＡＴＡ接続の高速ストレージで目標とされる１６０ＭＢ／ｓにまで高めようとした場合、マルチバンクやマルチチップの構成を取りながら、たとえば１６個のメモリアレイを並列動作させる必要がある。
【００１２】
図２は、そのような記憶装置を構成するフラッシュメモリの概念図を示す図である。
図２において、高速転送を実現するため、１６個のアレイＡＲ０〜ＡＲ１５を同時に動作させる。この場合データ書き込み時は、たとえばページＰ０，Ｐ１を同時書き込みし、消去時はブロックＢ０〜Ｂ１５を同時消去する。このとき括書き込み単位となる実ページ領域２４は３２ｋＢ、一括消去単位となる実消去ブロック領域２１は２ＭＢに達することになる。
【００１３】
一方、通常のファイルシステムでは、最小の書き込み単位を成すクラスタサイズは４ｋＢ程度であり、この単位でランダムなアクセスがなされる。
その場合、たとえばページＰ０とＰ１のみを書き換える要求が発生する。
しかし、上述のような装置でそのようなアクセスを行うと、結局実消去ブロック領域２１全体を消去しなければならない。かつその中の非選択領域に有効ファイルがあれば、それを消失から保護する必要がある。その典型的な対処例は次のようになる。
【００１４】
１．まずフラッシュメモリから、別途設けられたバッファメモリ２３のメモリ領域２２に、実消去ブロック領域２１全体のデータを読み出す。
２．次にメモリ領域２２内で、ページＰ０とＰ１に相当するデータを更新する。
３．次にフラッシュメモリ上のブロック領域２１の消去を実行する。
４．最後に上記消去済の領域２１に、更新後のメモリ領域２２のブロックデータを全て書き戻す。
【００１５】
すなわち、４ｋバイトの書き込みのために、実際には消去と、２ＭＢのデータの読み出しおよび書き込みが必要となる。
具体的には、１ページ分のデータの読み出しおよび書き込みにはそれぞれ２００μｓを要し、ブロックの消去には２ｍｓを要するので、３０ｍｓ近くを必要とする。
【００１６】
これに対し、予め予備の消去済みブロック領域２７を用意しておいて、このブロック領域２７にブロック領域２１の元のデータとページＰ０とＰ１の更新後データを合成させて書き込みを行う手法もある。
この場合、仮想アドレス構成を用いて消去ブロック単位で論理アドレスと物理アドレスの対応を更新し、アクセス対象とされた論理アドレスに対応する物理ブロックは元の消去ブロック領域２１からデータの移動先ブロック領域２７に張り替えられる。
しかしこの場合も、有効データを消去ブロック領域２１から移動先ブロック領域２７に退避させる作業は必要である。またこの際、通常は元のブロック領域２１を消去して、そちらを予備ブロックに変える。したがって、結局は従来とほぼ同様の読み出し、書き込み、消去が必要であり、大きなオーバーヘッドが生じることに変わりは無い。
【００１７】
実際にファイルを更新する場合、該当ファイルのみではなく、その管理領域やログの記載等、関連する複数の小領域を同時に更新するのが普通である。またファイル自体も複数の小領域に断片化して存在しているケースがある。
したがって、上述の如き制約があると、現実の転送性能は著しく低いものになってしまう。
【００１８】
また上述の例では４ｋバイトの書き換えであったが、ハードディスク等の通常のファイル記憶装置はさらに小さい５１２バイト単位の書き換えまでサポートしている。
しかしどのように小単位の書き換えであっても、上述の如き消去ブロック全体の書き換えが必要になる。
【００１９】
このような事情から、フラッシュメモリを用いた現在の記憶装置は、特に書き込み時においては、ハードディスクをはるかに下回る転送性能しか得られていない。さらに上述のような冗長性は、単に転送性能を悪化させるのみならず、フラッシュメモリの消去回数を増加させ、その寿命まで低下させてしまう。
【００２０】
このような問題に対して、たとえば特許文献１（特開平０５−２１６７７５号公報）、特許文献２（特開平０６−３４９２８６号公報）においてはキャッシュメモリの使用が記載されている。
ここで例示されているのは、フラッシュメモリの消去単位であるブロックデータ、あるいは一括書き込み単位であるページデータを、そのままエントリとしてキャッシュメモリに保存するものである。更新しようとするデータを含むブロックがキャッシュに格納されていれば、即ちキャッシュがヒットすれば、キャッシュ内のデータのみが更新されるので、上述のような冗長な動作は直ちには発生しない。
【００２１】
しかしこれまで述べてきたように、フラッシュメモリの高速化を高並列化で実現しようとした場合、ページサイズも巨大化の一途を辿ることになる。
たとえば前述した図２のケースでは、通常の１６倍の転送速度である１６０ＭＢ／ｓを得るために１６のアレイを並列動作させ、その結果実ページサイズは３２ｋBを必要としている。消去ブロックサイズは２MBにも達する。
したがって、たとえば５１２ｋBのキャッシュメモリを使用しても、実ページ単位では１６個のエントリしかできず、ブロック単位では１エントリも確保できない。性能の向上に伴ってキャッシュサイズも巨大化させていかないとエントリ数を確保できず、十分なヒット率を得られないという不利益があった。
【００２２】
本発明の目的は、フラッシュメモリを主媒体とする記憶装置に小容量でもヒット率が高く、アクセスのオーバーヘッドも少ないキャッシュメモリを付与することが可能になり、フラッシュメモリへの書き込みを高速化し、書き換え回数も低減させることが可能なコンピュータシステムを提供することにある。
【課題を解決するための手段】
【００２３】
本発明の第１の観点のコンピュータシステムは、処理装置と、キャッシュメモリと、上記処理装置からの要求に応じて、キャッシュメモリを介したデータ書き込みが行われるフラッシュメモリと、を有し、上記キャッシュメモリにエントリされるラインサイズは上記フラッシュメモリの一括書き込み単位である実ページサイズの１／Ｎである（ただし、Ｎは２以上の整数）。
【００２４】
好適には、実ページのデータを格納するページバッファを、さらに有し、上記キャッシュメモリにエントリされたデータを上記フラッシュメモリへ書き込む際には、当該エントリに対応する実ページデータのうち、上記キャッシュメモリ上のエントリ部とフラッシュメモリ上の非エントリ部が上記ページバッファ内で合成され、合成後にフラッシュメモリに書き込まれる。
【００２５】
好適には、上記キャッシュメモリはセットアソシアティブ構成を有し、そのセット数はＮまたはＮの整数倍である。
【００２６】
好適には、上記キャッシュメモリ内に、同じ実ページ内の異なる領域に対応する複数のエントリが存在する場合、少なくともその二つ以上をまとめてフラッシュメモリに書き戻す機能を有する。
【００２７】
好適には、上記フラッシュメモリへの実ページデータの書き戻しは、更新されたページデータを消去済みの領域に追記し、元のページ領域を無効化することによって実施される。
【００２８】
本発明の第２の観点のコンピュータシステムは、キャッシュメモリと、上記処理装置からの要求に応じて、キャッシュメモリを介したデータ書き込みが行われるフラッシュメモリと、バッファと、を有し、上記キャッシュメモリの１エントリは複数のセクタを含み、更新はセクタ単位で行われ、キャッシュメモリにエントリされたデータを上記フラッシュメモリへ書き込む際には、キャッシュメモリ上の更新セクタとフラッシュメモリ上の非更新セクタとが上記バッファ内で合成され、合成後にフラッシュメモリに書き込まれる。
【００２９】
好適には、実ページのデータを格納するページバッファを、さらに有し、上記キャッシュメモリの１エントリは複数のセクタを含み、更新はセクタ単位で行われ、上記キャッシュメモリにエントリされたデータをフラッシュメモリへ書き込む際には、まずエントリに対応する実ページデータのうち、キャッシュメモリ上の当該エントリ内の更新セクタとフラッシュメモリ上の非更新セクタとが上記ページバッファ内で合成され、合成後にフラッシュメモリに書き戻される。
【００３０】
本発明の第３の観点のコンピュータシステムは、処理装置と、キャッシュメモリと、上記処理装置からの要求に応じて、キャッシュメモリを介したデータ書き込みが行われるフラッシュメモリと、ページバッファを有し、キャッシュメモリにエントリされるラインサイズの複数倍の連続データを上記ページバッファに一時保存し、それらを上記フラッシュメモリに一括して書き込む機能を有する。
【００３１】
本発明によれば、キャッシュメモリへのエントリを一括アクセス単位である実ページサイズより小さくした、新しいキャッシュ構成を有する。具体的にはエントリとなるラインサイズを実ページサイズの１／Ｎ（Ｎは整数）とし、キャッシュメモリとフラッシュメモリ間のデータのやりとりは、ページバッファを介してこれを行う。
【発明の効果】
【００３２】
本発明によれば、フラッシュメモリを主媒体とする記憶装置に小容量でもヒット率が高く、アクセスのオーバーヘッドも少ないキャッシュメモリを付与することが可能になり、フラッシュメモリへの書き込みを高速化し、書き換え回数も低減させることが可能になる。
このようなシステムではフラッシュメモリを高速なハードディスクのように使用することもでき、待機時の消費電力が低く、コンパクトで高速なストレージシステムを獲得できる。
【発明を実施するための最良の形態】
【００３３】
以下、本発明の実施形態を図面に関連付けて説明する。
【００３４】
図３は、本実施形態に係るコンピュータシステムを示す構成図である。
【００３５】
本コンピュータシステムＣＯＭＳＹＳは、ファイル記憶装置３０、および処理装置５０を主構成要素として有している。
ファイル記憶装置３０は、インターフェース回路（Ｉ／Ｆ）３１、ページバッファ３２、メモリバス３３、制御回路３４、ＮＡＮＤ型フラッシュメモリ３５，３６、および制御回路３７、キャッシュメモリ３８、および内部バス３９を含んで構成されている。また、４０〜４３はページ領域を示し、制御回路３４は、アドレス変換テーブル４４、およびキャッシュの管理テーブル４５を有する。
処理装置５０は、ＣＰＵ５１、ＲＡＭ５２、ＲＯＭ５３、システムバス５４、およびブリッジ回路５５を含んで構成されている。
【００３６】
コンピュータシステムＣＯＭＳＹＳは、CPU５１によって制御されており、システムバス５４にはRAM５２およびプログラムが格納されたROM５３が接続されている。
さらに本システムにおいては、ファイル記憶装置３０がブリッジ回路５５を介してCPU５１に接続されている。
CPU５１はRAM５２内に構築された各種データをファイルにして、ファイル記憶装置３０に適時保存する。その際はブリッジ回路５５を介してCPU５１からのコマンドやデータがファイル記憶装置３０に伝達される。
【００３７】
ファイル記憶装置３０の内部においては、３２ビットのメモリバス３３に、１６ビットの入出力を持つ２チップのＮＡＮＤ型フラッシュメモリ３５，３６が並列に接続されている。２つのチップのＮＡＮＤ型フラッシュメモリ３５，３６は読み出しや書き込みにおいて、同時並列にアクセスされる。
各々のフラッシュメモリ３５，３６は書き込みや読み出しのアクセスをたとえば４ｋBのページ単位で行う。
したがって、実ページサイズとしては８ｋBが一括アクセスされることになる。
ページバッファ３２はアクセスされたページ領域のデータを一時記憶するページバッファである。
フラッシュメモリ３５，３６とページバッファ３２との間のデータの送受は、制御回路３７で制御されている。
さらに制御回路３７は、必要に応じて転送データにＥＣＣ符号化によるエラー補正を施したり、フラッシュメモリ内の欠陥ブロックの管理を実施する。両フラッシュメモリ３５，３７はページバッファ３２を介してファイル記憶装置３０の内部バス３９との間でデータを入出力する。
【００３８】
さらに内部バス３９には書き込み用のキャッシュメモリ３８とファイル記憶装置３０のインターフェース回路３１、および制御回路３４が接続されている。
インターフェース回路３１はATAやPCIエクスプレス等の規格に従ってブリッジ回路５４との間で、データやコマンドの送受を行う。
制御回路３４は、ファイル記憶装置３０の内部においてページバッファ３２、キャッシュメモリ３８およびインターフェース回路３１の間のデータの送受を管理する。ここに内蔵されたＲＡＭには、ページ単位の仮想アドレスを管理するアドレス変換テーブル４４およびキャッシュメモリ３８の管理テーブル４５が構築されている。
【００３９】
本ファイル記憶装置３０の内部においては、フラッシュメモリ３５，３６へのアクセスは次のようになされる。
ここでは簡単のため、１６進数のアドレスは次のように割り振られるとする。
【００４０】
たとえば外部入力アドレスが”０ｘ５５００Ｃ”であった場合、上位１６ビットの”０ｘ５５００”はページアドレス、下位４ビットの”０ｘＣ”はページ領域内のセクタドレスであり、１ページ中には１６のセクタが含まれる。本ファイル記憶装置３０は１セクタ単位でランダムアクセスが可能である。
キャッシュメモリ３８へのエントリは、一般的なキャッシュメモリのように実ページをそのままキャッシュするのではなく、実ページの１／４、すなわち４セクタを単位として構成する。
したがって、各々のエントリは、対応する１６ビットのページアドレスに加え、４ビットのセクタドレス中上位２ビットを持って管理されることになる。
上述の例では実ページサイズが８ｋBなので、１エントリのサイズは２ｋBである。たとえば１２８ｋBのＲＡＭをキャッシュメモリとした場合、約６４個のエントリを持つことが可能である。
【００４１】
なお、もし一般的なキャッシュメモリのように実ページ単位でエントリがなされると、同じＲＡＭ容量でも１６個のエントリしか保有できない。または消去ブロック単位でエントリがなされると、このＲＡＭ容量では１エントリも確保できないことに注意する必要がある。
【００４２】
図４は、キャッシュメモリの管理テーブル４５の構成例を示す図である。
ここではテーブル管理の容易さとヒット率を勘案し、ページ内セクタドレスの上位２ビットをインデックスとして、四つのセットを構成した。各セットは独立に１６個ずつのエントリを保有する。すなわち４セット１６ウエイのセットアソシアティブ構成が採用されている。テーブル内の各フィールドには、そこにエントリが存在する場合、各エントリに対応するページアドレスが格納されている。
【００４３】
たとえば、外部からアドレス”０ｘ５５００Ｃ”のセクタへのアクセスが要求された場合、まずセクタドレス”０ｘＣ”の上位２ビットがインデックスとして使用され、”１１”に対応するセットが選択される。
さらに該セットに登録されている最大１６個のエントリが検索され、”０ｘ５５００”のページアドレスに対応するエントリの有無が判定される。
【００４４】
なお、このようなセットアソシアティブ構成の変形として、セットのインデックスにページアドレスの一部を追加することも可能である。
たとえば、論理ページアドレスの最下位ビットをインデックスに加え、偶数ページと奇数ページを異なるセットとする。
さらに前例と同様に各ページを４分割することで、８セットの構成となる。このときエントリサイズは変わらないので、キャッシュ容量が同じなら各セットのエントリ数は８個となる。すなわち８セット８ウエイのセットアソシアティブとなる。
このように、エントリサイズが実ページサイズの１／Ｎ（Ｎは２以上の整数）に分割された場合、セット数はＮまたはＮの整数倍となる。
さらに２進数の一般的なアドレスビットに対応させれば、Ｎは２のべき乗である。またセット数はＮまたは（ＮｘＭ）であって、Ｍも２のべき乗である。
【００４５】
さらに、本実施形態においては、ページ単位の仮想アドレス管理が採用されている。
図５は、アドレス変換テーブル４４の構成例を示す図である。
フラッシュメモリのアクセスは以下のようになされる。
【００４６】
読み出しの際、外部から”０ｘ５５００Ｃ”のセクタドレスが入力されると、制御回路３４はまずキャッシュ管理テーブル４５からヒットの有無を判定する。キャッシュにヒットしていれば、データはキャッシュメモリ３８より読み出される。
【００４７】
一方ミスヒットの場合、制御回路３４は次の手順でフラッシュメモリ３５，３６からページバッファ３２へ該当する実ページを読み出す。
まず、ページアドレス”０ｘ５５００”を受けて内蔵ＲＡＭにアクセスし、アドレス変換テーブル４４から論理ページアドレス（ＬＡ：ＬＯＧＩＣＡＬ  ＡＤＤＲＥＳＳ）”０ｘ５５００”に対応する物理ページアドレス（ＰＡ：ＰＨＩＳＩＣＡＬ  ＡＤＤＲＥＳＳ）”０ｘ００Ｂ０”を取得する。
【００４８】
この物理ページアドレスＰＡ中、上位の”０ｘ００”はメモリチップ、すなわちフラッシュメモリ３５，３６内の消去ブロック４６，４７のアドレスである。
下位”０ｘＢ０”は各消去ブロック内のページ領域４０，４１のアドレスである。この物理アドレスをもとにメモリチップであるフラッシュメモリ３５，３６が共にアクセスされ、各々からページアドレス”０ｘ００Ｂ０”に格納されたページ領域４０，４１のデータが読み出され、ページバッファ３２に格納される。
インターフェース回路３１は読み出されたデータの中から、下位アドレス”０ｘＣ”に相当するセクタを選択し、外部に出力する。
【００４９】
一方、外部から任意のセクタの書き込みを行う場合、図６のような手順で処理が行われる。
【００５０】
＜１＞  キャッシュ内エントリの更新
制御回路（３４）はまずキャッシュメモリ３８の管理テーブル（以下、キャッシュテーブルという）４５からヒットの有無を判定する（ＳＴ１，ＳＴ２）。キャッシュにヒットしていれば、データはそのエントリを更新する形でキャッシュメモリ３８に書き込まれる（ＳＴ３）。
【００５１】
＜２＞  エントリの生成
一方、ミスヒットの場合（ＳＴ２）、キャッシュへの新たなエントリ確保が可能であれば（ＳＴ４）、次の手順でエントリが生成される。
すなわち、読み出しと同様の手順でフラッシュメモリ３５，３６からページバッファ３２へ該当する実ページを読み出し（ＳＴ５）、そこから該当するセクタを含む領域（４セクタ分）を切り出してキャッシュメモリ３８に確保された新規エントリのデータ領域にそれをコピーする（ＳＴ６）。
最後にキャッシュテーブルを更新し、エントリが登録される（ＳＴ６）。その後そのエントリ内の所定の箇所を入力データに従って更新する（ＳＴ３）。
【００５２】
＜３＞  エントリの開放
キャッシュメモリ３８のエントリが全て埋まり、新規エントリ確保ができない場合（ＳＴ４）、適当なエントリをフラッシュメモリ内に書き戻し、開放してやる必要がある（ＳＴ７）。たとえば論理アドレス”０ｘ５５００Ｃ”〜”０ｘ５５００Ｆ”に対応するエントリ（図４−Ｅ１）を開放し、そのデータをフラッシュメモリに書き戻す場合は以下の手順に従う。
まず、読み出しと同様の手順でアドレス変換テーブル４４が参照され、ページ領域４０，４１のデータがメモリチップ、すなわちフラッシュメモリ３５，３６から読み出され、ページバッファ３２に格納される（ＳＴ８）。
その中から対応するエントリ部分が選択され、キャッシュメモリ上の開放すべきエントリのデータで上書き更新される（ＳＴ９）。
【００５３】
なお、この際キャッシュテーブル４５において、上記開放エントリ（Ｅ１）を含まない他のセット、すなわち”００””０１””１０”のセット内に同一のページ”０ｘ５５００”からのエントリが存在すれば、それらを同時に書き戻しておくのが望ましい。さらにそれらのエントリも同時に開放しても良い。
たとえば、ホストからのアクセスが４ｋBまたは８ｋBといった大きな単位でなされる場合、実ページを分割してエントリしたことで、フラッシュメモリへの書き込みも細切れとなり、そのアクセス頻度が増加してしまう問題が生ずる。
上述のように一度に複数のエントリを書き戻せば、記憶装置へのアクセス中最も時間のかかるフラッシュメモリへの書き戻し工程を効率化し、上記問題を解決できる。
このようにしてページバッファ３２上のデータが更新されると、それらはフラッシュメモリ３５，３６内に書き戻される。最後にキャッシュテーブル４５が更新される。
【００５４】
ところで、さらにこのようなキャッシュ構成においては、フラッシュメモリへの書き戻しに際しては、以下の如き追記型書き換えを採用するのが望ましい。
すなわち、更新後のページデータは、フラッシュメモリ３５，３６に書き戻されるが、その際各々の空き領域４２，４３に書き込まれる（ＳＴ１０，ＳＴ１１）。このページ領域の物理ページアドレスは”０ｘ０２８０”であり、すなわち消去ブロック”０ｘ０２”内の”０ｘ８０”のページに相当する。
またこの処理の前まで、その領域はアドレス変換テーブル４４のいずれの物理アドレスフィールドにも登録されていない、未使用の空きページであった。更新後のデータがこの領域に追記の形で書き込まれるとともに、アドレス変換テーブル４４の論理アドレス”０ｘ５５００”に対応する物理アドレスフィールドには、領域４２，４３の物理ページアドレス”０ｘ０２８０”が登録される。
【００５５】
すなわち、本実施形態においては、フラッシュメモリへの実ページデータの書き戻しは、更新されたページデータを消去済みの領域に追記し、元のページ領域を無効化することによって行われている。
このような手法を採用すれば、書き戻しの際に元ブロックのデータ退避等を行う必要が無く、常に実ページのみを単位としてフラッシュメモリにアクセスできる。本発明の如く実ページを分割してエントリした場合、フラッシュメモリへの書き戻し単位も実ページに統一できた方が記憶システムの効率は良い。
したがって、このような実ページ単位での追記型書き換えは、本発明に好適である。
【００５６】
なお、本実施形態においては、総合的なシステム構成として好適と思われる事例を述べた。
本発明の実施形態のポイントはキャッシュメモリへのエントリのラインサイズを実ページサイズの１／Ｎ（Ｎは２以上の整数）に分割することであるが、さらにキャッシュ構成をＮまたはＮの整数倍のセットで構成するセットアソシアティブとすることで、高いヒット率を確保しつつ効率的な管理が可能である。
また、さらにフラッシュメモリへの書き戻しに実ページ単位の追記を採用することで、本キャッシュ構成を取った場合、特に顕著となる書き戻し時の煩雑さを大幅に軽減できる。
【００５７】
なお、ここで言う実ページとはフラッシュメモリに一括で書き込まれる連続データの基本単位を示すが、それが複数デバイスからのページグループで構成される場合、各デバイスへのデータ転送や書き込みのタイミング設定にはさまざまな形態が存在し得る。たとえばあるデバイスにデータ転送している間に、他のデバイスの書き込みが実施されても良く、または複数デバイスの内部書き込み動作が同時に開始されても良い。すなわちこれらの複数デバイスを実質的に一つのフラッシュメモリデバイスとみなした場合、その一括書き込みの基本単位が実ページとなる。
なお、内部並列化による高速動作を狙って複数のフラッシュデバイスで実ページを構成する場合、本実施形態のように、実ページをページバッファに一時保存し、それを介してフラッシュメモリデバイスに一括書き込みを施す構成が、扱いやすく便利である。
すなわち視点を変えれば、本発明の実施形態はキャッシュメモリのエントリサイズの複数倍の連続データをページバッファに一時保存し、それをフラッシュメモリに一括書き込みさせている。
【００５８】
また、本実施形態のキャッシュ構成は、他にもさまざまなケースで応用できる。たとえばキャッシュメモリはフルアソシアティブの構成をとってもよい。この場合、上述の例では６４個のランダムなエントリを構築できるが、ヒット判定には、それら全ての検索が必要になる。
【００５９】
また、フラッシュメモリへの書き戻しの際には一般的なキャッシュメモリと同様、ブロック単位の管理手法を用いても良い。
その場合、図３の例であれば、ページ領域４０，４１の書き換えは、それを含む消去ブロック内の全ページの移動を伴って実施される。すなわち物理アドレス”０ｘ００”の消去ブロック内ページは上位から１ページずつ順番にページバッファ３２を介して予備の消去ブロックにコピーされていく。
その過程でページ領域４０，４１のデータがページバッファ３２内に格納された際、更新データで上書きされる。全てのページが移動し終わると、元ブロックが消去されて予備ブロックに張り替えられる。
【００６０】
また、本実施形態において、キャッシュメモリ３８はファイル記憶装置３０側で、ホスト側の処理装置５０のＣＰＵとは独立に、制御回路３４を用いて管理した。
しかしたとえばシステムメモリであるＲＡＭ５２の一部に同様のキャッシュ領域を設け、それをホスト側で管理することも可能である。
また、フラッシュメモリにはページ単位でエラー訂正用のパリティービットが付加されていることも多く、その他記憶装置ごとに固有の管理用予備データが追加されている場合もある。
たとえばエラー訂正用の符号化や復号化等の処理がページバッファ３２と内部バス３９の接続部でなされた場合、本発明の実施形態を適用してもキャッシュメモリへのエントリのラインサイズは実ページサイズの正確な１／Ｎにならない場合が生ずる。
しかし、本１／Ｎという表現は、このようなファイル記憶装置が固有に付加した管理データを除外した正味のデータ量を対象としたものであって、上述のようなバリエーションは本発明の実施形態の適用範囲内である。
【００６１】
ところで、上述した第１の実施形態では、図６の＜２＞の処理においてキャッシュエントリを生成する際、まずフラッシュメモリから対応するページの読み出しを実施している。実ページサイズが大きくなると、この転送時間もアクセス性能の劣化要因となる。
特にページを分割してエントリとした場合、ホストからのアクセスが４ｋBまたは８ｋBといった大きな単位でなされても、エントリが細切れに生成されるため、その都度読み出し工程が入る。すなわち同じページを重複して何度も読み出してしまうケースが生じる。
それに対して本発明の第２の実施形態では、キャッシュメモリへのエントリ生成の際に、フラッシュメモリからの元データ読み出しを不要とするための新規手法を提案する。
【００６２】
図７は、本発明の第２の実施形態に係るキャッシュテーブル（管理テーブル）の例を示す図である。また、図８は、第２の実施形態において任意のセクタの書き込みを行う場合の処理手順を示すフローチャートである。
なお、システムの構成自体は図３と同様である。
本発明の第２の実施形態に係るキャッシュテーブル（管理テーブル）は、第１の実施形態のキャッシュテーブル（図４）と同様のセットアソシアティブを採用しているが、相違は各エントリにセクタごとの書き込みの有無を示すフラグフィールドが追加されていることである。
キャッシュは以下の手順で管理される。
【００６３】
図７（Ａ）の処理＜１＞
まず記憶装置のセクタアドレス”０ｘ０００１４”に書き込みがなされるとする。この際キャッシュメモリ３８内には対応するセット”０１”（セクタドレス”０ｘ４〜０ｘ７”に対応）に4セクタ分のメモリ領域（２ｋB）がデータ用のエントリとして確保され、空のエントリが生成される。
この際、図７（Ａ）に示すキャッシュテーブル上の対応エントリフィールド６０には、ページアドレス”０ｘ０００１”を格納するフィールドの他、各セクタに書き込みが成されたか否かを示すフラグフィールドが生成される。
その後上記エントリの最初の１セクタ分にデータが書き込まれる。この際キャッシュテーブルのフィールド６０におけるセクタ書き込みフラグの対応箇所に”１”が立てられる。
なお、同エントリ内の他のセクタ領域は、これまでのようにフラッシュメモリからの読み出しデータで埋められておらず、空白のままである。これによりキャッシュメモリ内の各エントリは不完全なまま残されるが、どのセクタが書き込まれていないのかはフラグの参照で判定することができる。
【００６４】
図７（Ｂ）の処理＜２＞
その後”０ｘ０００１５”〜”０ｘ０００１９”のセクタが連続して書き込まれ、さらに”０ｘ０００AA”〜”０ｘ０００AD"のセクタが書き込まれたとする。
その間フラッシュメモリからデータを読み出すことなくエントリデータのメモリが確保され、データが実際に書き込まれたセクタに対してフラグに”１”が立てられている。
【００６５】
図７（Ｃ）の処理＜３＞
上記状態からたとえば”０ｘ０００A”のページに関わるエントリ６１，６２をフラッシュメモリに書き戻して開放する場合、次のように行う。
まず図３にも示されたページバッファ３２に、フラッシュメモリ３５，３６から論理アドレス”０ｘ０００A”に相当する実ページを読み出し転送する。
この際必要に応じてアドレス変換テーブル４４を参照し、物理ページアドレスＰＡに変換してフラッシュメモリにアクセスを行っても良い。
次にエントリ６１，６２のフラグを参照し、フラグに”１”が立っている領域のセクタデータのみをキャッシュメモリ３８からページバッファ３２に転送して、上書きする。これによってフラッシュ側の元ページデータとキャッシュに蓄積された入力（更新）セクタのデータがページバッファ上で合成され、完全なページデータが構築される。
最後にページバッファ３２のデータをフラッシュメモリに書き戻す。
【００６６】
図８に以上のセクタ書き込みの手順はステップＳＴ２１〜ＳＴ３０の処理フローとして示されている。
上記手順を採用することで、エントリ生成時のフラッシュメモリからの元ページの読み出しは不要となる。
第１の実施形態の図６のフロー図と比較すると、＜２＞のエントリ生成工程（ＳＴ５、ＳＴ６）がキャッシュメモリへの空のエントリ生成のみとなり（ＳＴ２５）、その操作は瞬時に完了する。
【００６７】
それを実現するためのポイントは処理＜３＞のエントリ開放において、フラッシュメモリへの書き戻しの際に、ページバッファ３２内でエントリ内の更新セクタのみを選択的に元ページのデータと合成させて完全なページデータを生成させることである。
そのためには、エントリ内の各セクタの更新の有無を判別するための情報が必要であり、上記図７の例ではキャッシュテーブル内にエントリ毎のセクタの更新をフラグで記載することでこれを行った。
【００６８】
一方、このような情報はテーブル内のフラグ以外にも、さまざまな形態による保存が考えられる。たとえば各セクタデータにヘッダを付加し、そこに有効、無効をマークしても良いし、または各エントリデータごとのヘッダに内部各セクタの有効、無効をまとめて記載しても良い。そのようなセクタ更新情報の保存形態に限定されることなく、本発明は適用が可能である。
【００６９】
また、本発明の第１の実施形態と第２の実施形態は独立に実施することも可能であり、それぞれで効果を獲得できるが、両者を組み合わせることで、最も効率の良いキャッシュメモリの構成を提供することができる。
すなわち、実ページを細切れにしてエントリを生成させる第１の実施形態においては、エントリ生成の際にフラッシュメモリから同じ実ページを重複して読み出す冗長性が発生し得るが、第２の実施形態ではフラッシュメモリからの実ページ読み出し自体を不要とし、上記懸案を根本から解消する。
【００７０】
なお、上記キャッシュメモリにはＳＲＡＭ、ＤＲＡＭ等揮発性ＲＡＭを使用しても良いが、たとえばモバイルメディア内にキャッシュメモリを含む場合、急な引き抜き等の電源瞬断に耐性が必要となる。また組み込みメディアであっても、コンピュータ機器そのものの電源瞬断に備える必要がある。
【００７１】
したがって、キャッシュメモリには強誘電体メモリ等の不揮発性ＲＡＭを使用し、さらにはキャッシュテーブルやアドレス変換テーブルもそのような不揮発性ＲＡＭ内に格納するのが望ましい。
【００７２】
図９は、上述のキャッシュメモリに強誘電体メモリ等の不揮発性ＲＡＭを使用した構成を採用したファイル記憶装置の構成例を示す図である。
【００７３】
図９のファイル記憶装置３０ｂの内部においては、３２ビットのメモリバス３３ｂに、１６ビットの入出力を持つ２チップのＮＡＮＤ型フラッシュメモリ３５ｂ，３６ｂが並列に接続されている。
２つのチップは読み出しや書き込みにおいて、同時並列にアクセスされる。各々のフラッシュメモリ３５ｂ、３６ｂは書き込みや読み出しのアクセスをたとえば４ｋBのページ単位で行う。したがって、実ページサイズとしては８ｋBが一括アクセスされることになる。
ページバッファ３２ｂは、アクセスされたページ領域のデータを一時記憶する。
フラッシュメモリ３５ｂ，３６ｂ、とページバッファ３２ｂとの間のデータの送受は、制御回路３７ｂで制御されている。
さらに、制御回路３７ｂは、必要に応じて転送データにＥＣＣ符号化によるエラー補正を施したり、フラッシュメモリ内の欠陥ブロックの管理を実施する。両フラッシュメモリ３５ｂ，３６ｂはページバッファ３２ｂを介してファイル記憶装置３０ｂの内部バス３９ｂとの間でデータを入出力する。
【００７４】
さらに内部バス３９ｂにはキャッシュメモリを構成する強誘電体メモリ３８ｂとファイル記憶装置３０ｂのインターフェース回路（Ｉ／Ｆ）３１ｂおよび制御回路３４ｂが接続されている。
インターフェース回路３１ｂはATAやPCIエクスプレス等の規格に従ってホストとの間で、データやコマンドの送受を行う。
強誘電体メモリ３８ｂ内には前述の如く実ページサイズの１／Ｎ（Ｎは２以上の整数）をエントリとしたキャッシュメモリ３８ｂ’、ページ単位の仮想アドレスを管理するアドレス変換テーブル４４ｂおよびキャッシュメモリの管理テーブル４５ｂが構築されている。
制御回路３４ｂは、ファイル記憶装置３０ｂの内部においてページバッファ３２ｂ、キャッシュメモリ３８ｂおよびインターフェース回路３１ｂの間のデータの送受を管理する。
【００７５】
または、図３におけるキャッシュメモリ３８と制御回路３４、あるいは図９におけるメモリ３８ｂと制御回路３４ｂは一つのＩＣチップに統合して同時に製造しても良い。
さらに望ましくはインターフェース回路３１、ページバッファ３２および制御回路３７も同一のＩＣチップに統合し、ファイル記憶装置３０をＩＣチップとフラッシュメモリのＳＩＰ（Ｓｙｓｔｅｍ  Ｉｎ  Ｐａｃｋａｇｅ）で構成すると良い。
【００７６】
なお、不揮発性ＲＡＭとしては、強誘電体膜を用いたＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  ＲＡＭ）、強磁性体を用いたＭＲＡＭ（Ｍａｇｎｅｔｉｃ  ＲＡＭ）や、相変化材料を用いたＯＵＭ（Ｏｖｏｎｉｃ  Ｕｎｉｆｉｅｄ  Ｍｅｍｏｒｙ）、ＲＲＡＭ等が提案されている。
ＦｅＲＡＭは強誘電体キャパシタの分極方向の違いでデータを記憶する半導体メモリである。たとえばＵＳＰ４８７３６６４においてＳ．Ｓｈｅｆｆｅｉｅｌｄらがその一形態を提案している。
【００７７】
ＭＲＡＭは強磁性膜のスピン方向の違いでデータを記憶する半導体メモリである。たとえばＩＳＳＣＣ２０００の論文ダイジェストの１２８ページに、Ｒ．Ｓｃｈｅｕｅｒｌｅｉｎらが論文を掲載している。
ＯＵＭはたとえばカルコゲナイド膜の相転移でデータを記憶する半導体メモリである。たとえばＩＥＤＭ２００１の論文ダイジェストの８０３ページに、Ｓ．Ｌａｉらが論文を掲載している。
ＲＲＡＭは磁気抵抗効果材料の抵抗ヒステリシスでデータを記憶する半導体メモリである。たとえばＩＥＤＭ２００２の論文ダイジェストの７．５にはＷ．Ｗ．Ｚｈｕａｎｇらが論文を掲載している。
それらの不揮発性メモリは、いずれもセルレベルのアクセス速度や書き換え回数において、フラッシュメモリより数桁性能が高い。
【図面の簡単な説明】
【００７８】
【図１】ＮＡＮＤ型フラッシュメモリの内部構成例を示す図である。
【図２】記憶装置を構成するフラッシュメモリの概念図を示す図である。
【図３】本実施形態に係るコンピュータシステムを示す構成図である。
【図４】本発明の第１の実施形態に係るキャッシュメモリの管理テーブルの構成例を示す図である。
【図５】アドレス変換テーブルの構成例を示す図である。
【図６】第１の実施形態において任意のセクタの書き込みを行う場合の処理手順を示すフローチャートである。
【図７】本発明の第２の実施形態に係るキャッシュテーブル（管理テーブル）の例を示す図である。
【図８】第２の実施形態において任意のセクタの書き込みを行う場合の処理手順を示すフローチャートである。
【図９】上述のキャッシュメモリに強誘電体メモリ等の不揮発性ＲＡＭを使用した構成を採用したファイル記憶装置の構成例を示す図である。
【符号の説明】
【００７９】
ＣＯＭＳＹＳ・・・コンピュータシステム、３０，３０ｂ・・・ファイル記憶装置、３１，３１ｂ・・・インターフェース回路（Ｉ／Ｆ）、３２，３２ｂ・・・ページバッファ、３３，３３ｂ・・・メモリバス、３４，３４ｂ・・・制御回路、３５，３６，３５ｂ，３６ｂ・・・ＮＡＮＤ型フラッシュメモリ、３７，３７ｂ・・・制御回路、３８・・・キャッシュメモリ、３８ｂ・・・強誘電体メモリ（キャッシュメモリ）、３９，３９ｂ・・・内部バス、４４・・・アドレス変換テーブル、４５・・・キャッシュの管理テーブル（キャッシュテーブル）、５０・・・処理装置、５１・・・ＣＰＵ、５２・・・ＲＡＭ、５３・・・ＲＯＭ、５４・・・システムバス、５５・・・ブリッジ回路。
【図１】
2007034944.tif 000003
【図２】
2007034944.tif 000004
【図３】
2007034944.tif 000005
【図４】
2007034944.tif 000006
【図５】
2007034944.tif 000007
【図６】
2007034944.tif 000008
【図７】
2007034944.tif 000009
【図８】
2007034944.tif 000010
【図９】
2007034944.tif 000011