(57)【要約】【課題】  多値フラッシュメモリにおいては書き込み速度の向上と長寿命化が課題となっている。【解決手段】  本発明の不揮発性メモリは、複数のブロックで構成され、ブロックはそれぞれ複数のページで構成され、ページはそれぞれ複数のセルで構成され、ページは、１つのセルに複数ビットを記録する第１のモードでライト可能であり、ページはまた、１つのセルに前記複数ビットよりも少数のビットを、第１のモードでのライトに要する時間よりも短い時間で記録する第２のモードでライト可能である。コントローラは、半導体記憶装置の外部からのデータのライト要求に応答して、第２のモードを用いてデータを第１のページに書いたのち、第１のモードを用いて第１のページ内のデータの一部を第２のページに書くことを特徴とする。【選択図】図６
2010152778.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリを制御するコントローラとを搭載した半導体記憶装置であって、
前記不揮発性メモリは、複数のブロックで構成され、前記ブロックはそれぞれ複数のページで構成され、前記ページはそれぞれ複数のセルで構成され、
前記ページは、１つのセルに複数ビットを記録する第１のモードでライト可能であり、前記ページはまた、１つのセルに前記複数ビットよりも少数のビットを、前記第１のモードでのライトに要する時間よりも短い時間で記録する第２のモードでライト可能であり、
前記コントローラは、前記半導体記憶装置の外部からのデータのライト要求に応答して、前記第２のモードを用いて前記データを前記不揮発性メモリの第１のページに書き込んだ後、前記第１のモードを用いて前記第１のページ内の前記データの一部を前記不揮発性メモリの第２のページに書き込むことを特徴とする前記半導体記憶装置。
【請求項２】
請求項１に記載の半導体記憶装置であって、
前記第１のモードを用いて前記第１のページ内の前記データの一部を前記第２のページに書き込んだ後、
前記第１のページを含む第１のブロックを消去することを特徴とする前記半導体記憶装置。
【請求項３】
請求項１または２に記載の半導体記憶装置であって、
前記第２のページを含む第２のブロックは、前記第２のページ以外の第３のページを含み、
前記第３のページには、前記第２のページに書かれる前記データの一部に対応する第１論理アドレスを含む第１アドレス範囲のデータを格納している
ことを特徴とする前記半導体記憶装置。
【請求項４】
請求項３に記載の半導体記憶装置であって、
前記コントローラは、
前記半導体記憶装置の外部からのデータのライト要求に応答して、
前記第２のモードを用いて前記データを第４のページに書き込んだ後、
前記第１のモードを用いて前記第４のページ内の前記データの一部を第５のページに書き込み、
前記第５のページを含む第３のブロックは、前記第５のページ以外の第６のページを含み、前記第６のページには、前記第５のページに書かれる前記データの一部に対応する第２論理アドレスを含む第２アドレス範囲のデータを格納し、
前記第２アドレス範囲に対する前記ライト要求の頻度が前記第１アドレス範囲に対する前記ライト要求の頻度よりも多い場合には、
前記第３のブロックに含まれる前記第５のページの数を、前記第２のブロックに含まれる前記第２のページの数より多く持たせることを特徴とする前記半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置に関し、特に不揮発性メモリとして多値フラッシュメモリを用い、ライトするユーザデータのキャッシュ方法に関する。
【背景技術】
【０００２】
特許文献１には、１つのメモリセルに１ビットを記録可能な２値フラッシュメモリ領域と１つのメモリセルに複数ビットを記録可能な多値フラッシュメモリ領域とを持つ不揮発性メモリを搭載し、多値フラッシュメモリ領域に格納されたユーザデータに対するアドレスマッピングデータを２値フラッシュメモリ領域内に格納し、書き込み演算性能を向上させるという半導体記憶装置が記載されている。
【０００３】
【特許文献１】特開２００８−８４３１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
特許文献１では、格納データの種類に応じて異なる記録方式を使い分けるマッピング管理方法とそれを搭載した記憶装置を開示している。しかしながら、格納データをキャッシュとしてライトするか否かに応じて異なる記録方式を使い分けるキャッシュ管理方法を搭載した記憶装置は提案されていない。  多値フラッシュメモリは、２値フラッシュメモリと比較してビット単価が安いという長所があるが、書き込み時間が長く、消去可能回数も少ないという短所を持つ。ビットコスト削減を優先して多値フラッシュメモリを用いて構成された半導体記憶装置を設計する場合において、ホストライト性能と書き換え寿命をできる限り向上することが課題である。
【課題を解決するための手段】
【０００５】
本発明の半導体記憶装置は、不揮発性メモリと、不揮発性メモリを制御するコントローラとを搭載し、不揮発性メモリは、複数のブロックで構成され、ブロックはそれぞれ複数のページで構成され、ページはそれぞれ複数のセルで構成され、ページは、１つのセルに複数ビットを記録する第１のモードでライト可能であり、ページはまた、１つのセルに前記複数ビットよりも少数のビットを、第１のモードでのライトに要する時間よりも短い時間で記録する第２のモードでライト可能である。コントローラは、半導体記憶装置の外部からのデータのライト要求に応答して、第２のモードを用いてデータを第１のページに書いたのち、第１のモードを用いて第１のページ内のデータの一部を第２のページに書くことを特徴とする。
【発明の効果】
【０００６】
本発明によれば、半導体記憶装置における書き込み速度の向上および長寿命化を図ることが出来る。
【発明を実施するための最良の形態】
【０００７】
以下、本発明の第１の実施形態について説明する。
【０００８】
図１には、この発明に係る記憶装置ＳＳＤ（Solid State Drive)の一実施例が示されている。このＳＳＤ１０００は、多値（４値）不揮発性メモリ（フラッシュメモリ）を１つのパッケージの中に多数個搭載し、ＨＤＤ（ハードディスクドライブ）互換記憶装置として、複数ページ分の記憶容量を持つようなファイルストレージを構成する。
【０００９】
このＳＳＤ１０００は、例えば２．５インチのＨＤＤ装置と同様な外形サイズ（７０．０×１００．０×９．５ｍｍ）又は３．５インチのＨＤＤ装置と同様な外形サイズ（１０１．６×１４６．０×２５．４ｍｍ）のパッケージに搭載され、外部のホスト１５００とのインターフェイスに接続されるコネクタピンも上記２．５インチのＨＤＤ装置又は３．５インチのＨＤＤ装置と同様なものが用いられる。これにより、ＳＳＤ１０００はＨＤＤ互換性記憶装置とされる。
【００１０】
多値（４値）フラッシュメモリは、１つのメモリセルに最大２ビットの記憶が可能とされ、基本的には、２ビットの書き込み情報に応じて４種類のしきい値電圧の分布のうちの１つに対応したしきい値電圧を保持するように構成されたものである。このような複数ビット記憶可能なメモリセルを一般にＭＬＣ（Multi Level Cell）と呼ぶ。このＳＳＤ１０００では、２２ＭＨｚのクロックでデータを入出力するフラッシュメモリチップが４個並列形態にされた構成を最小単位として、例えば１１００〜１１０７のように２単位（８チップ）が搭載される。
【００１１】
４値フラッシュメモリは、１つのメモリセルに２ビットの記憶が可能とされるが、１つのメモリセルに記憶される２ビットは、異なるページのデータとして割り付けられる。例えば、ＮＡＮＤフラッシュメモリでは、４キロバイト等のページ単位毎にデータの書き込みと読み出しが行われるが、２ビットを記憶させる場合、１つのメモリセルに２つのロウアドレス（ページアドレス）の各１ビットに対応するデータが多重に記憶される。そのようなページペアはそれぞれ、下位ページ及び上位ページというように２つに分けられる。製品によっては、Ａページ、Ｂページというように呼ぶ場合もある。
【００１２】
このＳＳＤ１０００には、４値フラッシュメモリに対して、下位ページのみでフラッシュメモリをアクセスする手段も設けられる。下位ページのみでフラッシュメモリをアクセスすると２値のメモリセル（一般にＳＬＣ（Single Level Cell）と呼ぶ）として使用することができる。メモリセルを２値で書き込み動作させた場合、その動作速度は４値での記録（下位ページと上位ページを用いた記録）の場合に比べて書き込み時間を２０％程度に短縮することが知られている。例えば、４値での書き込み時間が１ミリ秒であり、２値での書き込み時間が２００マイクロ秒である。
【００１３】
このＳＳＤ１０００では、半導体揮発性メモリも設けられる。半導体揮発性メモリは、例えば６６ＭＨｚ×１６ビットで動作するＳＤＲＡＭ（シンクロナス・ダイナミック・ランダム・アクセス・メモリ）１２５２からなり、上記多値フラッシュメモリの書き換え耐性を向上させる為、ホスト１５００からの書き込みデータ、およびそれらを管理などする非ホストデータを維持したり、キャッシュしたりするため等に用いられる。
【００１４】
図１の点線で囲まれた部分１０２０はＳＳＤ専用コントローラとして１つの半導体集積回路装置（システムＬＳＩ）により構成される。つまり、ＳＳＤ１０００は、１つのコントローラチップ１０２０と、１つのＳＤＲＡＭチップ１２５２、及び複数の多値フラッシュメモリチップ１１００〜１１０７及びスイッチＳＷ１０４０とコンデンサＣＰ１０３０から構成される。
【００１５】
コントローラチップ１０２０は、特に制限されないが、ＳＡＴＡ（Serial AT Attachment)のようなインターフェイス１０１０により、外部のホスト１５００とのデータの入出力を行う。コントローラチップ１０２０は、中央処理装置ＣＰＵ１２７０と、論理回路（ＳＡＴＡ制御部１２００、レジスタ部１２１０、ＥＣＣ部１２２０、ルーティング部１２３０、ＦＬＡＳＨ制御部１２４０、ＳＤＲＡＭ制御部１２５０、ＳＲＡＭ（スタティック・ランダム・アクセス・メモリ）制御部１２６０）、電源検出部１２８０などにより構成される。
【００１６】
多値フラッシュメモリチップ１１００〜１１０７は、半導体不揮発性メモリＩ／Ｆ（インターフェイス）を通してコントローラチップ１０２０に接続される。なお、多値フラッシュメモリチップ１１００〜１１０７の大部分は、ＨＤＤ互換記憶装置としての記憶容量に相当する量のファイルデータを格納するための領域として使用されるが、その他の一部は、ホスト１５００から書き込まれたデータを一時的に不揮発にキャッシュしたりするためにも用いられる。
【００１７】
一般に多値フラッシュメモリは、エラービットの発生が他のメモリデバイスに比べて比較的多く、それを許容することを前提とするデバイスである。データの書き換え及び消去を繰り返していくうちにメモリセルのデータ記憶特性が劣化し、リード時に正常データがリードできなくなることがある。そのために、記憶媒体に半導体不揮発性メモリを使用したＳＳＤを構成する場合、誤り検出・訂正回路が必須となる。誤り検出・訂正回路であるＥＣＣ部１２２０は、ハミング符号／リード・ソロモン符号／ＢＣＨ符号などの符号化、復号化を行うことによって、多値フラッシュメモリチップ１１００〜１１０７に書き込むデータに付すパリティの生成や、読みだしたデータの誤り検出・訂正を実行する。
【００１８】
このＳＳＤ１０００は、電源検出部１２８０と、電源遮断時の動作電圧を確保するためのコンデンサＣＰ１０３０及びスイッチＳＷ１０４０を更に備えている。このコンデンサＣＰ１０３０は、ホスト１０５０からのＳＡＴＡインターフェース１０１０を通じた電源供給において予期しない電源遮断が生じた場合でも、その蓄積電荷によってコントローラチップ１０２０、ＳＡＴＡ−Ｉ／Ｆ１０１０、多値フラッシュメモリチップ１１００〜１１０７及びＳＤＲＡＭチップ１２５２に動作電圧Ｖｄｄを供給して、多値フラッシュメモリチップの読み書きの中断処理を含めた正常終了状態までの動作を確保し、ＳＤＲＡＭチップ１２５２内の退避させるべきデータを多値フラッシュメモリチップ１１００〜１１０７に退避させるに十分な時間を確保するように作用する。コンデンサＣＰ１０３０は、上記のような中断処理やデータ退避が行われるような動作電圧確保のために必要な容量値を持つように構成される。
【００１９】
電源検出部１２８０は、マイクロコンピュータ等のホスト１５００からの電源電圧を受けて、その電源投入と電源遮断を検出する。検出した電源投入又は電源遮断に応答して、スイッチＳＷ１０４０の切り替え制御や、多値フラッシュメモリチップ１１００〜１１０７とＳＤＲＡＭチップ１２５２との間でのデータ転送動作が行われる。
【００２０】
スイッチＳＷ１０４０は、電源投入と電源遮断を検出信号により切り替えられる。ホスト１５００からの電源投入が発生した場合、コンデンサＣＰ１０３０が電源電圧による充電動作を行い、その保持電圧をＳＳＤ１０００の各構成部の動作電圧として供給する動作を行う。上記コンデンサＣＰ１０３０の保持電圧が有効に利用できるように、コンデンサＣＰ１０３０で形成された動作電圧がホスト１５００側に逆流してしまうのを防止するように構成する。最も簡単な構成は、ダイオード等の一方向性素子を通してホスト１５００側からの電源電圧が、ＳＳＤ１０００の電源電圧として上記スイッチＳＷ１０４０を通してコンデンサＣＰ１０３０にチャージアップされるとともに、コントローラチップ１０２０、ＳＡＴＡ−Ｉ／Ｆ１０１０、多値フラッシュメモリチップ１１００〜１１０７、ＳＤＲＡＭチップ１２５２に伝えられるように構成する。
【００２１】
ホスト１５００側において電源遮断等が発生した場合、コントローラチップ１０２０及び多値フラッシュメモリチップ１１００〜１１０７にはコンデンサＣＰ１０３０から動作電圧が維持される逆流防止が行われるとともに、ＳＡＴＡ−Ｉ／Ｆ１０１０がホスト１５００側からの信号（コマンド等）に応答しないように制御され、ＳＤＲＡＭチップ１２５２に退避データが存在するときには多値フラッシュメモリチップ１１００〜１１０７の予め決められた退避領域にかかる退避データの退避が行われる。もしも多値フラッシュメモリチップ１１００〜１１０７への書き込み動作中の電源遮断ならば、各多値フラッシュメモリチップへリセットコマンドが発行されて書き込み動作が中断処理される。同様に、多値フラッシュメモリチップ１１００〜１１０７の消去動作中ならばリセットコマンドが発行されて消去動作も中断処理される。
【００２２】
ルーティング部１２３０は、ＳＳＤ１０００内部のデータ転送の高速化・安定化を実現するために設けられた回路であり、多値フラッシュメモリチップ１１００〜１１０７の読み・書き・消去等を制御するＦＬＡＳＨ制御部１２４０、ＳＤＲＡＭ１２５２のデータ入出力を制御するＳＤＲＡＭ制御部１２５０、ＳＲＡＭ１２６１のデータ入出力を制御するＳＲＡＭ制御部１２６０、ＥＣＣ部１２２０、ＳＡＴＡ制御部１２００との間の、単純だが高速で安定したデータ転送に特化した経路制御を担当する。一方、外部ホスト１５００から入力されるＡＴＡコマンド等の判別や、記憶装置としての全体の管理のように、速度安定性はそれほど要求されないが複雑な制御については中央処理装置ＣＰＵ１２７０が担当する。
【００２３】
ＦＬＡＳＨ制御部１２４０は、４チャネル分のインターフェース回路とデータバッファＢＵＦ０〜３を有する。１チャネルにつき８ビットのデータバスを持つ。ＦＬＡＳＨ制御部１２４０は、８個の多値フラッシュメモリチップ１１００〜１１０７と４チャネル×２イネーブルの並列形態で接続することによりデータの入出力を行う。チップ０と４、チップ１と５、チップ２と６、チップ３と７はそれぞれデータバッファＢＵＦ０、１、２、３と各データバスを共有しており、２本のイネーブル信号の１本をアサートすることにより、データバッファやデータバスを利用できるチップを｛０、１、２、３｝または｛４、５、６、７｝に切り替える。フラッシュメモリから読み出されたデータストリームは、ＦＬＡＳＨ制御部１２４０のバッファＢＵＦ０〜３にセクタサイズ（５１２Ｂ）まで蓄積されたのち、ルーティング部１２３０に出力される。
【００２４】
ルーティング部１２３０は複数のデータバスセレクタ回路を有し、中央処理装置ＣＰＵ１２７０内に記録されたファームウェアにより、レジスタ部１２１０を通じて、当該セレクタを必要に応じて切り替える。これによって、ＳＤＲＡＭとフラッシュメモリとの間で直接的にデータを転送する信号経路、ＳＤＲＡＭからのデータをＥＣＣ部に送り、そこで生成されたパリティをそのデータに付加してフラッシュメモリに転送する信号経路、フラッシュメモリから読み出されたデータ（パリティ付き）をＥＣＣ部に送り、誤りの検出・訂正を行ったデータをＳＤＲＡＭに転送する信号経路、あるいはそれを直接的にＳＡＴＡ−Ｉ／Ｆを介して外部ホストに出力する信号経路等を形成する。経路上の各部にはバッファが備えられており、そのバッファを通してデータのやり取りを行う。ルーティング部１２３０は、そこに接続している各部からの処理終了フラグ及びエラー有無の判定通知をもらう。転送処理を何等かの要因で中断する場合には、各部へ中断信号を送信する。ルーティング部１２３０から中央処理装置ＣＰＵ１２７０への処理終了やエラーの通知は、中央処理装置ＣＰＵによるレジスタ部１２１０に対するレジスタポーリングで行う。レジスタ部１２１０は、ルーティング部１２３０や経路上の各部と管理信号バス１２９０で接続されており、中央処理装置ＣＰＵ１２７０のファームウェアからアクセス可能なレジスタのライトやリードにより、上記の信号経路選択や転送状態通知を行えるように構成される。
【００２５】
電源検出部１２８０は、電源電圧がある一定値より低下すると、上記電源遮断処理を行うための割り込み信号及びトリガ信号を、それぞれ中央処理装置ＣＰＵ１２７０及びルーティング部１２３０に通知するように構成されている。
【００２６】
ＳＤＲＡＭチップ１２５２に小容量なものを適用することは、電源遮断時のデータ退避量（すなわち必要な電力）を小さくできるので、搭載するコンデンサＣＰの容量値を小さくすることができ、ＳＳＤ１０００の小型化や低コスト化が可能となる。
【００２７】
中央処理装置ＣＰＵ１２７０は、図１で斜線で塗られた矢印で示したＣＰＵバス１２７１により他部と接続されている。中央処理装置ＣＰＵ１２７０は、ホスト１５００からのユーザデータの読み書き動作指示等のコマンドをレジスタ部１２１０を介して受け取り、ユーザデータの論理アドレスを取得し、それに応じたユーザデータの読み書き動作を実行する。
【００２８】
ＳＲＡＭ１２６１は、基本的に中央処理装置ＣＰＵ１２７０のワークメモリとして動作する。また、中央処理装置ＣＰＵ１２７０からＳＲＡＭ１２６１に書き込まれた情報は、ＳＲＡＭ制御部１２６０を介してルーティング部１２３０から読み出すことができるように構成されている。これにより、中央処理装置ＣＰＵ１２７０は、ルーティング部１２３０を経由して、ＳＤＲＡＭチップ１２５２や多値フラッシュメモリチップ１１００〜１１０７に書き込みたい情報を送信することができる。その情報とは、例えば、ユーザデータの論理アドレスや、フラッシュメモリのブロック消去回数などである。
【００２９】
次に、図２を参照しながら、多値フラッシュメモリチップ１１００〜１１０７のブロック構成、ページ構成及びアクセス方式を説明する。
【００３０】
多値フラッシュメモリチップ１１００〜１１０７は、図２（ａ）のように、いずれも多数個、例えば４０９６個のブロック２１００〜２１１１で構成されている。ブロックはそれぞれ０〜４０９５の番号が付されている。ブロックは、多値フラッシュメモリを消去する際の最小単位である。そのサイズは、例えば５１２ＫＢである。なお、ブロックの消去に費やされる時間は、例えば２ミリ秒である。なお、多値フラッシュメモリチップでは、ブロックの一部（例えば全体の３％）に、全く使用できない先天的不良ブロックが含まれる。それ以外（正常ブロック）の各々についても、ブロック消去は有限な回数、例えば１万回までの成功しか保証されない。それ以上の回数を消去すると、メモリセルが劣化して、消去が不完全になることがある。消去が不完全な（失敗した）ブロックは以後、書き換えが許されない。このような現象を後天的ブロック不良という。
【００３１】
ブロック２１００〜２１１１は、図２（ｂ）のように、いずれも複数個、例えば１２８個のページ２１２０で構成されている。ページはそれぞれ０〜１２７の番号が付されている。ブロックは、多値フラッシュメモリを読み書きする際の最小単位である。そのサイズは、例えば４ＫＢである。ある１つのブロックにＭＬＣとしてページ単位でデータを書くときには、ブロック消去後の未書込みページに行わねばならず、ページ番号の昇順（０→１→…→１２７）で行わねばならない。また、ある１つのブロックにＳＬＣとしてページ単位（ＭＬＣで換算すれば２ページ単位）でデータを書くときにも、ブロック消去後の未書込みページに行わねばならず、ページペア番号の昇順で行わねばならない。１ブロック（１２８ページ）の中に６４個のページペアが存在するが、どのページとどのページがペア関係なのかや、ページペア番号の付け方の順番がどうなっているかは、フラッシュメモリチップ製品によって様々である。ここでは、その一例として、ページ２Ｙとページ２Ｙ＋１（Ｙ＝０〜６３）がペア関係で、ページペア番号がＹであるフラッシュメモリチップを想定する。その場合、ＳＬＣとしてのページライト、図の矢印２１３０、２１３１、…、２１３４の順でデータを書かねばならない。
【００３２】
前記２つのライト方式（ＭＬＣ方式・ＳＬＣ方式）に関係なく、書き込み済みのページに再度データを書き込みたい場合は、その前にその所属ブロック自体を消去しなければならない。また、消去回数が保証値を超えたブロックでは、メモリセルが劣化して、書き込みが不完全になることがある。書き込みが不完全な（失敗した）ブロックは以後、書き換えが許されない。この現象も後天的ブロック不良の１つである。
【００３３】
多値フラッシュメモリは、ページの書き込みやブロックの消去を高速におこなうために２ページ同時書き込み、２ブロック同時消去の機能を持つ。図２（ｃ）のように、Ｘを０〜２０４７の整数として、２Ｘ番と２Ｘ＋１番の２ブロック２３００について、同じ番号の２ページ（例えば２２００）は同時に書き込み（ただし、ＭＬＣとして）が可能である。また、２３００のような隣接関係にある２ブロックはいずれも同時に消去が可能である。
【００３４】
次に、図３および図８（ａ）を参照しながら、ＳＳＤ１０００においてユーザデータを格納するためのフラッシュメモリのブロックやページの物理的な管理仕様を説明する。
【００３５】
図３のように、Ａを０〜２０４７の整数として、メモリチップ０番から２Ａ番と２Ａ＋１番の２ブロック３２１０、３２２０を選び、Ｂを０〜２０４７の整数として、メモリチップ１番から２Ｂ番と２Ｂ＋１番の２ブロック３２１１、３２２１を選び、Ｃを０〜２０４７の整数として、メモリチップ２番から２Ｃ番と２Ｃ＋１番の２ブロック３２１２、３２２２を選び、Ｄを０〜２０４７の整数として、メモリチップ３番から２Ｄ番と２Ｄ＋１番の２ブロック３２１３、３２２３を選び、Ｅを０〜２０４７の整数として、メモリチップ４番から２Ｅ番と２Ｅ＋１番の２ブロック３２１４、３２２４を選び、Ｆを０〜２０４７の整数として、メモリチップ５番から２Ｆ番と２Ｆ＋１番の２ブロック３２１５、３２２５を選び、Ｇを０〜２０４７の整数として、メモリチップ６番から２Ｇ番と２Ｇ＋１番の２ブロック３２１６、３２２６を選び、Ｈを０〜２０４７の整数として、メモリチップ７番から２Ｈ番と２Ｈ＋１番の２ブロック３２１７、３２２７を選び、それら１６ブロックをまとめた消去単位ＥＵ３２００を構成する。そのサイズは、例えば８ＭＢである。このようなＥＵの組を、多値フラッシュメモリチップ１１００〜１１０７上の全ての正常ブロック（先天的不良でないブロック）を使って多数組作成する。ＳＳＤ１０００においてブロック消去を実施するときは、このＥＵを単位として行う。
【００３６】
多値フラッシュメモリチップ１１００〜１１０７上のＥＵは、その利用方法に応じて５つのタイプに区分される。図８（ａ）はそれらのタイプ名と配分を示したものである。
【００３７】
ブロックアドレスの若い方から１６組のＥＵは、退避＆テーブル８１１０というタイプに割り当てる。ここには電源遮断時にＳＤＲＡＭチップ１２５２から退避されるユーザデータや当該データのアドレス情報等を記録したり、他のＥＵの割り付け状態やユーザデータの格納状態などを含むテーブルを記録する。これらのＥＵは割り付け先が８１１０に固定されるが、その他のＥＵはＳＳＤ１０００におけるデータ書き換えの実施に従って割り付け先が８１２０〜８１４０の間で変化する。
【００３８】
その他のＥＵのうち、３組のＥＵは２次キャッシュ８１２０というタイプに割り当てる。また、少なくとも１８８４組のＥＵはデータ＆３次キャッシュ８１３０というタイプに割り当てる。また、多くとも１４５組のＥＵはフリー８１４０というタイプに割り当てる。
【００３９】
消去単位ＥＵ３２００が、２次キャッシュ８１２０として割り付けられた場合、そのＥＵはユーザデータの一時的な格納場所として利用する。ただし、そのデータの読み書きはＳＬＣ方式で行う。よって、そのＥＵ１組の実質的な記憶容量は８ＭＢの半分の４ＭＢとなる。
【００４０】
消去単位ＥＵ３２００が、データ＆３次キャッシュ８１３０として割り付けられた場合、図３のようにそのメモリ空間を大きく２つの領域３２３１、３２３２に分けて管理する。それぞれデータ領域３２３１、３次キャッシュ領域３２３２と呼ぶ。両領域ともデータの読み書きはＭＬＣ方式で行う。データ領域３２３１は各構成ブロックのページ番号０〜１１９をまとめたものであり、３次キャッシュ領域３２３２は各構成ブロックのページ番号１２０〜１２７をまとめたものである。データ領域３２３１は、サイズが７６８０ＫＢで、ユーザデータのスタティックは格納場所として利用し、３次キャッシュ領域３２３２は、サイズが５１２ＫＢで、ユーザデータの一時的な格納場所として利用する。データ領域３２３１はさらに６０個のサブ領域に等分される。それらの１つ１つは、図３の斜線部分３２４０のように、各構成ブロックから２ページずつ集めて構成された１２８ＫＢの領域である。これらを物理管理単位ＰＭＵと呼ぶ。データ＆３次キャッシュ８１３０として割り付けられるＥＵの組数は、ＳＳＤ１０００におけるデータ書き換えの実施に従って変化する。
【００４１】
消去単位ＥＵ３２００が、フリー８１４０として割り付けられた場合、そのＥＵは８１２０や８１３０として割り付けられるＥＵの予備となる。フリー８１４０として割り付けられるＥＵの組数は、ＳＳＤ１０００におけるデータ書き換えの実施に従って変化する。また、そのＥＵは８１２０や８１３０として割り付けられたＥＵが後天的に不良化したときの予備としても利用される。フラッシュメモリチップ内に先天的不良ブロックがない場合は、初期状態で１４５組のＥＵがフリー８１４０として割り付けられる。フリー８１４０として割り付けられるＥＵの組数は、後天的に不良が起こるたびにも減少していく。この組数が小さな値（例えば、ゼロ）になった時点でＳＳＤ１０００は後天的ブロック不良に対する耐性を失うため、読み出し専用の記憶装置として動作するモードに変化する。例えば、ホストからのライトコマンドに対してデータをライトせずにエラーを返す。
【００４２】
次に、図４を参照しながら、データ＆３次キャッシュ８１３０として割り付けられた消去単位ＥＵ３２００における、ユーザデータの格納方式を説明する。
【００４３】
図４（ａ）は、ホスト１５００がユーザデータを管理するための論理アドレス空間（ＬＢＡ空間）を、物理アドレス空間にどのように割り付けるかを示している。
【００４４】
図４（ａ）のように、まずユーザデータのＬＢＡ空間４０００を、４０１０、４０２０、４０３０のような７６８０ＫＢ単位の論理ブロックに分割する。次に論理ブロックのそれぞれを６０個のサブ領域（各１２８ＫＢ）に等分する。これらを論理管理単位ＬＭＵと呼ぶ。このＬＭＵと上記ＰＭＵを１対１の関係で割り付けることによって、ユーザデータをフラッシュメモリ上に格納する。例えば、ＬＭＵ４１１０のデータはＰＭＵ４２１０に格納し、ＬＭＵ４１２０のデータはＰＭＵ４２２０に格納し、ＬＭＵ４１３０のデータはＰＭＵ４２３０に格納する。図に示すように、ＬＭＵからＰＭＵへの対応はランダムでよく、必ずしもアドレス順でなくてよい。
【００４５】
図４（ａ）のように、論理ブロック４０２０内の６０個のＬＭＵが、いずれも１つのＥＵ３２００内のデータ領域３２３１の６０個のＰＭＵのいずれかに割り付けられている状態は、ＳＳＤ１０００の初期状態か、ガベッジコレクション実施直後の状態などに限られる。ホスト１５００からのユーザデータ書き込みにより、図４（ｂ）のように、６０個のＬＭＵ群４０２０が２つのＥＵ３２００、３２０１にまたがってＰＭＵに割り付けられる状態が生成される。例えば、ＬＭＵ４１２０に含まれるユーザデータがホスト１５００により２回更新（ライト）された場合を説明する。１回目の更新では、フリー８１４０として割り付けられたＥＵの中からＥＵ３２０１が調達され、ＬＭＵ４１２０の割り付け先は、更新前の状態を記録したＰＭＵ４２２０が無効化され、更新後の状態を記録したＰＭＵ４２２１が有効になる。次に２回目の更新では、更新前の状態を記録したＰＭＵ４２２１が無効化され、更新後の状態を記録したＰＭＵ４２２２が有効になる。このようなデータ更新で新たに調達されるＥＵ３２０１を更新ＥＵと呼ぶ。更新ＥＵ３２０１では、ホスト１５００から書き込むデータのＬＭＵアドレスパターンに影響され、必ずしもＬＭＵとＰＭＵが１対１の関係で割り付けられない。以下、ＬＭＵとＰＭＵが１対１の関係で割り付けられたＥＵ３２００を基本ＥＵと呼び、両者を区別する。
【００４６】
図４（ｂ）のようなＬＭＵの割り付け状態がＮ件存在している時、データ＆３次キャッシュ８１３０として割り付けられたＥＵの組数はＮ組増えて１８８４＋Ｎ組となり、フリー８１４０として割り付けられたＥＵの組数はＮ組減って１４５−Ｎ組となる。一般に、ホスト１５００からのユーザデータの書き込みを続けると、Ｎは単調に増加してしまい、フリー８１４０のＥＵが枯渇してしまう。そこで、フリー８１４０のＥＵの組数を増やすために行う処理が、ガベッジコレクションである。これは、中央処理装置ＣＰＵ１２７０の判断により、図４（ｂ）のような割り付け状態を強制的に図４（ａ）のような割り付け状態にするため、基本ＥＵや更新ＥＵなどから最新のユーザデータのみを集めて作った論理ブロック（７６８０ＫＢ）を未書込みの１つのＥＵに移設し、それを基本ＥＵにする処理である。
【００４７】
次に、図５および図６を参照しながら、ホスト１５００からのライトデータをＳＳＤ１０００がどのような手続きで内部に格納するかを説明する。
【００４８】
ＳＳＤ１０００は、ライトデータを揮発的に一時記憶するため、ＳＤＲＡＭチップ１２５２上に２種類のキャッシュ領域を確保する。１つは１２８ＫＢの容量を持つＬＭＵキャッシュ、もう１つは１２８ＫＢの容量を持つランダム１次キャッシュである。ホスト１５００からのライトコマンドで受信されたデータが、１６ＫＢよりも大きい場合はＬＭＵキャッシュにキャッシュされ、１６ＫＢ以下である場合はランダム１次キャッシュにキャッシュされる。
【００４９】
図５を用いて、ライトデータが１６ＫＢよりも大きい場合のライト処理を説明する。
【００５０】
ＬＭＵキャッシュ５０００には、ライトデータのアドレス範囲を含む論理管理単位ＬＭＵがズレなく収まるようにデータキャッシュされる。すなわち、当該ＬＭＵ内の先頭セクタ（００ｈ）はＬＭＵキャッシュ５０００の先頭セクタに配置され、当該ＬＭＵ内の末尾セクタ（ＦＦｈ）はＬＭＵキャッシュ５０００の末尾セクタに配置される。論理管理単位ＬＭＵはＬＢＡ空間を１２８ＫＢずつ、つまり２５６セクタずつ区分しているため、図５（ｂ）のようにＬＢＡ４８ビットのうち、上位４０ビットはＬＭＵアドレス、下位８ビットはそのＬＭＵ内でのセクタアドレスを表す。よって、ライトコマンドで指定されたＬＢＡの下位８ビットは、ライトデータがＬＭＵキャッシュ５０００内にキャッシュされる時の先頭セクタアドレスとなる。
【００５１】
ＬＭＵキャッシュ５０００に格納された１２８ＫＢのデータは、いずれフラッシュメモリ上のＰＭＵの１つにライトされる。そのときのライトは３２ＫＢずつ４回に分けて行われる。ＦＬＡＳＨ制御部１２４０は４チャネルを同時に利用して、４つのチップに対して２ページ（８ＫＢ）同時ライト（図２（ｃ）参照）を行うため、１回のライトサイズは８×４＝３２ＫＢとなる。ＬＭＵキャッシュ５０００を４つの３２ＫＢ領域５０１０〜５０４０に分けたとき、その領域１つ１つを単位としてフラッシュメモリのＰＭＵにライトされる。なお、このライトはＭＬＣ方式である。
【００５２】
例えば、ライトコマンドで指定されたＬＢＡの下位８ビットが３０ｈ（＝４８）で、ライトデータサイズが１３０セクタであるとする。このとき、ＬＭＵキャッシュ５０００内のセクタ範囲５１１０に当該ライトデータが一時的に格納される（５２２０）。上記のように、フラッシュメモリのＰＭＵへのライトは３２ＫＢ単位であるため、領域５０１０のライト５２４０を実施するためには先頭から４８セクタ（アドレス範囲５１００）のデータが不足である。そこで、当該データを格納している現ＰＭＵをリードしてそのデータを領域５０１０に補充する（５２１０）。その後、新ＰＭＵへの領域５０１０のライト５２４０を実施する。このときの現ＰＭＵと新ＰＭＵの状態は、図４（ｂ）で言えば、４２２１の無効化と４２２２の有効化が発生する直前の状態に等しい。次に、データ不足のない領域５０２０のライト５２４１を実施する。次に、領域５０３０のライト５２４２を実施するが、後方１４セクタのデータが不足する。その不足データの補充方法には２通りある。１つは、次回のホスト１５００のライトコマンドを待ってデータを補充する方法（５２３０）である。経験的にホスト１５００はシーケンシャルライトの継続中である可能性があり、アドレス範囲５１２０のデータライトが期待できるため、このような方法を適用する。もう１つは、前者の期待が外れた場合に、領域５０１０と同様に当該データを格納している現ＰＭＵをリードしてデータを領域５０３０に補充する方法（５２３１）である。最後に、領域５０４０のライト５２４３も同様に実施して、新ＰＭＵへの１２８ＫＢライトが完成する。図４（ｂ）で言えば、４２２１の無効化と４２２２の有効化が成立したことを意味する。
【００５３】
以上のようなＬＢＡの連続性を期待するライトキャッシュ方式により、フラッシュメモリライトデータに対してホストライトデータが占める割合が増加し、ＳＳＤ１０００の書き換え効率が向上する。
【００５４】
なお、以上の説明では、３２ＫＢの領域に不足データを補充したら即座にフラッシュメモリにライトするようなライトキャッシュ方式を示したが、ホスト１５００のライトコマンドを数回待ってからフラッシュメモリにライトする別方式でもよい。この別方式は、複数回のライトコマンドで指定されたＬＢＡ範囲に重複がある場合に効果がある。ＳＤＲＡＭは上書き更新可能で書き換え寿命が実質的に無限なメモリである。ライトコマンドの度に、ＬＭＵキャッシュ５０００を上書きして最新データのみを残すようにすれば、結果としてフラッシュメモリ上のＰＭＵへのライト回数を削減でき、ＳＳＤ１０００の書き換え寿命が向上する。
【００５５】
図６を用いて、ライトデータが１６ＫＢ以下である場合のライト処理を説明する。
【００５６】
ランダム１次キャッシュ６０００は、ライトデータを１６ＫＢ単位でキャッシュすることができる８つの領域６０１０〜６０８０を持つ。この領域へのデータキャッシュ方法を以下に述べる。例えば、ライトコマンドで指定されたライトデータサイズが２０セクタ（１０ＫＢ）であるとする。このとき、ランダム１次キャッシュ６０００内の領域６０２０が空きであるとすると、その領域内の１０ＫＢ範囲（例えば６１２０）に当該ライトデータが一時的に格納される（６４２０）。領域６０２０は先頭から１２セクタ（アドレス範囲６１１０）のデータが不足している。そこで、当該範囲の最新データを格納しているメモリ（フラッシュメモリだけでなくＳＤＲＡＭも含む）をリードしてそのデータをアドレス範囲６１１０に補充する（６４１０）。
【００５７】
以上のように、ランダム１次キャッシュ６０００にデータがキャッシュされていき、空き領域がなくなると、最もアクセス頻度の低い１６ＫＢデータをランダム１次キャッシュ６０００から追い出して、空き領域を確保する。追い出されたデータは、フラッシュメモリ上にあるランダム２次キャッシュ６３００の１つに移動する。
【００５８】
ランダム２次キャッシュ６３００は、図８（ａ）の８１２０のようにフラッシュメモリ上の３組のＥＵに割りつけられている。ＬＢＡ空間４０００を３つの区間に分割し、各区間が１つずつランダム２次キャッシュ６３００を使うように構成する。これらのＥＵ内のページはＳＬＣ方式で記録する。そのため、各ランダム２次キャッシュの実効容量は４ＭＢであり、２５６個の１６ＫＢ領域６２１０〜６２５０で構成される。
【００５９】
例えば、領域６０７０に格納されたデータが過去３２回のアクセスにおいて最もアクセス頻度が低かったとき、その格納データをランダム２次キャッシュ６３００内の未書込みの１６ＫＢ領域（例えば６２２０）にＳＬＣ方式でライトする（６４３０）。
【００６０】
以上のように、ランダム２次キャッシュ６３００にデータがキャッシュされていき、空き領域がなくなると、全ての１６ＫＢデータをランダム２次キャッシュ６３００から追い出し、当該ＥＵを消去して２５６個の空き領域を確保する。追い出されたデータ（ＬＢＡが重複する場合は最新データのみ）は、更新ＥＵ（図４の３２０１参照）のＰＭＵ、あるいは基本ＥＵ（図４の３２００参照）のランダム３次キャッシュに移動する。どちらに移動するかは条件によって異なり、詳細は図７のフローチャートを用いて後述する。
【００６１】
前記ランダム３次キャッシュとは、図８（ａ）の８１３０のようなデータ＆３次キャッシュとして割りつけられたＥＵ（例えば６３１０）内にある５１２ＫＢの３次キャッシュ領域（例えば６３１２）を指す。３次キャッシュ領域にデータを書くとき、ＦＬＡＳＨ制御部１２４０は４チャネルを同時に利用して、４つのチップの各偶数番ブロック、あるいは４つのチップの各奇数番ブロックに対して、１ページ（４ＫＢ）ライトを行うため、１回のライトサイズは４×４＝１６ＫＢとなる。なお、このライトはＭＬＣ方式である。このライトサイズに合わせて、３次キャッシュ領域は３２個の１６ＫＢ領域で構成されている。
【００６２】
ランダム２次キャッシュ６３００から追い出されるデータのうち、例えば領域６２４０に含まれる１６ＫＢデータに関して、ランダム３次キャッシュへの追い出し方法を説明する。まず、この追い出しデータの論理アドレスが属する論理ブロック（図４の４０２０等）を調べる。次に、その論理ブロックのＬＭＵが割り付けられているＰＭＵが存在するＥＵ（図４の３２００等）を調べる。なお、図４（ｂ）の３２００、３２０１のように２つのＥＵにまたがって割り付けられている場合は、基本ＥＵ（図４では３２００）を選択する。選択されたＥＵが図６の６３１０であるとすれば、そのＥＵ内の３次キャッシュ領域６３１２内の空き領域に追い出しデータを記録する（６４６０）。
【００６３】
ランダム２次キャッシュ６３００から追い出されるデータのうち、例えば領域６２４０に含まれる１６ＫＢデータに関して、ＰＭＵへの追い出し方法を説明する。まず、この追い出しデータの論理アドレスが属する論理ブロック（図４の４０２０等）を調べる。次に、その論理ブロックのＬＭＵが割りつけられているＰＭＵを含むＥＵ（図４の３２００等）を調べる。なお、図４（ｂ）の３２００、３２０１のように２つのＥＵにまたがって割りつけられている場合は、更新ＥＵ（図４では３２０１）を選択する。選択されたＥＵが図６の６３２０であるとすれば、そのＥＵ内の未書込みのＰＭＵ６３２１に追い出しデータを含むＬＭＵデータを記録する（６４４０）。なお、このＬＭＵデータ（１２８ＫＢ）のうち追い出しデータ以外の範囲（１１２ＫＢ）は、当該範囲の最新データを格納しているメモリ（フラッシュメモリだけでなくＳＤＲＡＭも含む）をリードして補充する（６４５０）。ＰＭＵ６３２１は、図４（ｂ）の４２２２のように、このＬＭＵに割り付けられた新しいＰＭＵとなる。
【００６４】
ランダム２次キャッシュからランダム３次キャッシュにデータを追い出した結果、３次キャッシュ領域（例えば６３１２）内の空き領域がゼロになった場合、次回のランダム３次キャッシュへの追い出しの際に、追い出しデータを含む論理ブロックのガベッジコレクションを実施して３次キャッシュ領域を再確保する。具体的には、フリーとして割り付けられたＥＵから１組を新しい基本ＥＵの候補として取得し、そのデータ領域（ＰＭＵ６０個分）に当該論理ブロックの最新ＬＭＵデータ６０個をライトする。それらの最新ＬＭＵデータは、元の基本ＥＵのデータ領域・３次キャッシュ領域内のデータや、更新ＥＵのデータ領域や、ＳＤＲＡＭ上のキャッシュデータを集めて構成する。結果として、新しい基本ＥＵの３次キャッシュ領域は１６ＫＢ×３２個の空き領域となっているため、再びランダム２次キャッシュからランダム３次キャッシュへのデータ追い出しが可能となる。なお、元の基本ＥＵや更新ＥＵは消去されて、フリーとして割り付けられる。ガベッジコレクション直前のＬＭＵ割り付け状態は、図４（ｂ）で示したように２つのＥＵにまたがる場合が多く、消去するＥＵは２つ存在する。ゆえに、ガベッジコレクションによってフリーのＥＵが１組消費→２組生成となるため、結果的にフリーのＥＵを１組増やせることになる。
【００６５】
ＳＳＤ１０００にとって、ガベッジコレクションが頻繁に発生することはライト性能低下の要因となる。ガベッジコレクションは、８個のフラッシュメモリチップを並列動作させても、一度の実施について２４０回のページライト（データ領域への移動）と２回の消去（フリーＥＵの生成）が必要な処理だからである。これは、少なくとも２４０×１ミリ秒＋２×２ミリ秒＝２４４ミリ秒もの時間が必要となる。したがって、ガベッジコレクションの発生をできるだけ実施しないことがコマンド応答時間を短縮し、ライト性能の向上となる。また、一定量のホストライトに対するガベッジコレクションの発生数（つまり発生頻度）をできるだけ小さくすることはメモリセル劣化を遅らせ、書き換え寿命の向上となる。詳細は後述するが、本実施形態を適用したＳＳＤ１０００は、ランダム２次キャッシュを利用することで、それを持たない従来のＳＳＤに比べてガベッジコレクションの発生を抑制している。
【００６６】
次に、図７を参照しながら、１６ＫＢ以下のホストライトにおいて、ランダム２次キャッシュからのデータ追い出しが必要となった時に、中央処理装置ＣＰＵ１２７０が実行する追い出し処理（図６の６４４０／６４６０の選択を含む）の詳細を説明する。
【００６７】
まず、中央処理装置ＣＰＵ１２７０は、基本ＥＵの３次キャッシュ領域に空きがあるかを判定する（７０１０）。その結果が真ならば、基本ＥＵの３次キャッシュ領域に当該追い出しデータを追記し（７０６０）、処理を終える。
【００６８】
一方、ステップ７０１０の結果が偽ならば、ランダム２次キャッシュから追い出されたデータの属する論理ブロックの割り付け先ＰＭＵ群が２つの消去単位ＥＵにまたがっているか、つまり当該論理ブロックに更新ＥＵが与えられているかを判定する（７０２０）。
【００６９】
ステップ７０２０の結果が真ならば、その更新ＥＵのデータ領域に空きＰＭＵがあるかを判定する（７０３０）。その結果が偽ならば、その更新ＥＵに当該追い出しデータを記録することは不可能であるため、フリーとして割り付けられたＥＵから１組のＥＵを取得し（７０４０）、当該ＥＵをデータ移動先とするガベッジコレクション処理を実施し（７０５０）、処理を終える。以後、当該移動先ＥＵが当該論理ブロックの新しい基本ＥＵになる。なお、ステップ７０５０では、元の基本ＥＵと更新ＥＵは消去されてフリーとして割り付けられる。
【００７０】
一方、ステップ７０２０の結果が偽ならば、フリーとして割り付けられたＥＵから１組のＥＵを取得し、当該論理ブロックの更新ＥＵとし（７０７０）、下記ステップ７０８０に遷移する。
【００７１】
上記ステップ７０３０の結果が真ならば、更新ＥＵに当該追い出しデータを記録するため、当該追い出しデータ１６ＫＢに対してその周辺アドレスの最新データ（１１２ＫＢ）をマージして１２８ＫＢに拡張したものを、更新ＥＵの空きＰＭＵに追記する（７０８０）。以上で処理を終える。
【００７２】
次に、図８（ｂ）を参照しながら、消去単位ＥＵの割り付け先タイプの遷移（ライフサイクル）について説明する。
【００７３】
ホストからのデータライトに伴い、フリーとして割り付けられたＥＵが更新ＥＵとして調達されることがある。このような場合、そのＥＵのタイプは矢印８２２０のように遷移する。
【００７４】
ガベッジコレクションが発生したときには、データ＆３次キャッシュとして割り付けられた基本ＥＵや更新ＥＵが消去され、フリーとして割り付けられたＥＵが新しい基本ＥＵとして調達される。このような場合、新しい基本ＥＵのタイプは矢印８２２０のように遷移し、消去されるＥＵのタイプは矢印８２３０のように遷移する。
【００７５】
データ＆３次キャッシュとして割り付けられたＥＵがアクセス中に後天的不良となったときには、フリーとして割り付けられたＥＵが代替先として調達される。このような場合、代替先ＥＵのタイプは矢印８２２０のように遷移し、不良となったＥＵは矢印８２４０のように廃棄ＥＵへ遷移する。
【００７６】
ランダム２次キャッシュとして割り付けられたＥＵが末尾ページまで追記された後、そのＥＵは消去され、フリーとして割り付けられたＥＵが新しいランダム２次キャッシュとして調達される。このような場合、調達されたＥＵのタイプは矢印８２２１のように遷移し、消去されるＥＵのタイプは矢印８２３１のように遷移する。
【００７７】
ランダム２次キャッシュとして割り付けられたＥＵがアクセス中に後天的不良となったときには、フリーとして割り付けられたＥＵが代替先として調達される。このような場合、代替先ＥＵのタイプは矢印８２２１のように遷移し、不良となったＥＵは矢印８２４１のように廃棄ＥＵへ遷移する。
【００７８】
次に、図９を参照しながら、ＳＳＤ１０００がランダム２次キャッシュを利用することで、それを持たない従来のＳＳＤに比べてライト性能がより向上し、書き換え寿命が向上することを具体例を挙げて示す。
【００７９】
例えば、ＬＢＡで００００ｈ〜０１ＦＦｈ（先頭から５１２セクタ）の範囲で、ホスト１５００から１６ＫＢ（３２セクタ）単位でランダムにデータライトを十分大量に実施した場合に、ＳＳＤ１０００内でのライトキャッシュ動作を考える。
【００８０】
まず、本例でのライトデータは１６ＫＢ単位のため、必ずランダム１次キャッシュに入る。ランダム１次キャッシュの容量は上記アドレス範囲の半分に当たる１２８ＫＢ（２５６セクタ）であるから、ヒット率は平均５０％である。すなわち、約半数のライトデータはランダム２次キャッシュへ追い出される。
【００８１】
ランダム１次キャッシュから移されたデータのアドレス範囲のサイズは２５６ＫＢ、つまり１６ＫＢデータが１６個分である。また、ランダム２次キャッシュには１６ＫＢデータが２５６個まで追記可能である。ゆえに、ランダム２次キャッシュの空きがゼロになった時点で記録された２５６個のエントリのうち、最新データを含むエントリは平均的に見てその１６分の１の１６個である。例えば、図９（ａ）のように、エントリ９０１１、９０１２、９０１４のような最新データを含むエントリは１６個あり、エントリ９０１０、９０１３のような古いデータを含むエントリは２４０個ある。ランダム２次キャッシュが一杯になった時、１６エントリ分のデータはさらに移動する必要があるが、残り２４０エントリ分のデータは移動する必要がない。
【００８２】
ランダム２次キャッシュが未書込み状態から書き尽くされるまでの間にＳＬＣ方式ライトは１６ＫＢ単位で２５６回発生する。また、ランダム２次キャッシュから２５６ＫＢの最新データを追い出す度に、ＭＬＣ方式ライトが３２ＫＢ単位で８回発生し、ランダム２次キャッシュＥＵの消去が１回発生する。
【００８３】
ランダム２次キャッシュから追い出された２５６ＫＢの最新データは、まずは図９（ａ）の矢印９０２０、９０３０のように、基本ＥＵの３次キャッシュ領域に移動されるが、容量が５１２ＫＢのため２回分移動すると空きがゼロになる。その後、図９（ｂ）の矢印９０４０のように、更新ＥＵのデータ領域に移動されるが、容量が７６８０ＫＢのため３０回分移動すると空きがゼロになる。
【００８４】
ランダム２次キャッシュから追い出された２５６ＫＢの最新データの行き先がなくなるとガベッジコレクションが実施される。このとき、図９（ｃ）の矢印９０５０のようにランダム２次キャッシュから２５６ＫＢデータが新しい基本ＥＵのデータ領域へ移動し、図９（ｃ）の矢印９０６０のように元の基本ＥＵからＬＢＡで０２００ｈ〜３ＢＦＦｈの範囲のデータが新しい基本ＥＵのデータ領域へ移動する。
【００８５】
このままランダムライトを続けていくと、ガベッジコレクション発生後から次のガベッジコレクション発生までを１区切りとして、以上のような一連のライトキャッシュ動作が繰り返される。この１区切りにおいて、ランダム２次キャッシュは３２回のデータ追い出しがあるため、ランダム２次キャッシュへのライトは合計で２５６×３２＝８１９２回あったことになる。ランダム１次キャッシュのヒット率が５０％とすれば、ホストからのライトは８１９２／０．５＝１６３８４回あったことになる。
【００８６】
ガベッジコレクションの１区切りにおいて、ランダム２次キャッシュＥＵは３２回消去され、基本ＥＵと更新ＥＵが１回ずつ消去されるため、合計３４回の消去が発生する。ホストライト１回あたりのＥＵ消去回数は約０．００２回となる。
【００８７】
この１区切りにおいてホストライト処理時間の合計を考える。ＳＬＣ方式ライト時間は２５６×３２×０．２ミリ秒＝１６３８．４ミリ秒であり、ＭＬＣ方式ライト時間は（３２×８＋２４０）×１．０ミリ秒＝４９６ミリ秒であり、消去時間は３４×２ミリ秒＝６８ミリ秒であるから、合計２２０２．４ミリ秒である。ホストライト１回あたりの処理時間は約０．１３４ミリ秒となる。
【００８８】
次に、ランダム２次キャッシュがないようなＳＳＤについて同様の考察を行う。この場合、ランダム１次キャッシュから追い出されたデータは直接、基本ＥＵや更新ＥＵに移動される。
【００８９】
ガベッジコレクションの１区切りにおいて、基本ＥＵの３次キャッシュ領域へ１６ＫＢ単位で３２回の追い出しが発生し、更新ＥＵのデータ領域へ１２８ＫＢ単位（１１２ＫＢの補充あり）で６０回の追い出しが発生する。ランダム１次キャッシュのヒット率が５０％とすれば、ホストからのライトは（３２＋６０）／０．５＝１８４回あったことになる。
【００９０】
この１区切りにおいて、基本ＥＵと更新ＥＵが１回ずつ消去されるため、合計２回の消去が発生する。ホストライト１回あたりのＥＵ消去回数は約０．０１回となる。
【００９１】
この１区切りにおいてホストライト処理時間の合計を考える。ＭＬＣ方式ライト時間は（３２＋６０×４＋２４０）×１．０ミリ秒＝５１２ミリ秒であり、消去時間は２×２ミリ秒＝４ミリ秒であるから、合計５１６ミリ秒である。ホストライト１回あたりの処理時間は約２．８ミリ秒となる。
【００９２】
以上の結果をまとめると、ＳＬＣ方式でライトデータを記録するランダム２次キャッシュを備えたＳＳＤ１０００は、アドレス局所的なランダムライトに対して、それを持たない従来のＳＳＤに比べて約２０倍のライト性能を持ち、約１／５倍の消去回数頻度となる。消去回数頻度が約１／５倍ということを言い換えれば、書き換え寿命が約５倍であることを意味する。以上の通り、本実施形態の効果が定量的に示された。
【００９３】
なお、アドレス局所的なランダムライトは、ホスト１５００が記憶装置上でファイルデータを扱うためにＯＳ標準ファイルシステムを用いた場合に、ファイルを書き換える際のクラスタ管理テーブルの更新においてよく見られるアクセスパターンである。したがって、本実施形態によって享受される効果は確率的に特異なものではない。
【００９４】
以下、本発明の第２の実施形態について説明する。
【００９５】
本実施形態は、第１の実施形態の一部の仕様を変更したものであり、特に言及していない部分は第１の実施形態と同じである。その変更部分について、図１０を参照しながら説明する。
【００９６】
本実施形態は、ＳＳＤに対するホスト１５００のライトアクセスが、図１０（ａ）のように、ある特定の論理アドレス範囲ＦＷＲに偏って多くなることが明らかな場合に効果がある。
【００９７】
ＬＢＡ空間４０００の中でこのＦＷＲの範囲１００１０〜１００３０に限っては、図１０（ｂ）のように、論理ブロックサイズを例えば３８４０ＫＢに縮小してアドレス分割を実施し、その各論理ブロック（例えば１００２０）を３０個のＬＭＵで構成する。
【００９８】
本実施形態のＳＳＤは、これら３０個のＬＭＵの割り付け先のＰＭＵを３０個有するような消去単位ＥＵ１０１００を作る。ＥＵ１０１００は、図８の８１３０のタイプに割り付けられたＥＵの一種であるが、データ領域と３次キャッシュ領域の配分比が特別である。すなわち、各構成ブロックのページ０〜５９の６０ページでデータ領域１０２００を構成し、残りのページ６０〜１２７の６８ページで３次キャッシュ領域１０３００を構成する。このように、３次キャッシュ領域を拡張したＥＵは、ランダム２次キャッシュから追い出されたデータを多く蓄積できる。図１０（ａ）のようなアクセス条件下では、ＦＷＲの範囲のライトデータはランダム２次キャッシュから追い出される頻度が高いが、このように拡張された３次キャッシュ領域に追い出しデータが記録されることで、その空き領域がゼロになるまでの時間は第１の実施形態の場合より（この例では８．５倍）長くなる。その結果、ガベッジコレクションの発生頻度を第１の実施形態に比べてさらに小さくすることができる。すなわち、ライト性能はさらに向上する。
【００９９】
以上、本発明者によってなされた発明を、前記実施形態に基づき具体的に説明したが、本発明は、前記実施形態に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能である。例えば、フラッシュメモリはＮＡＮＤフラッシュメモリの他、ＮＯＲフラッシュメモリを用いるものであってもよい。ＳＤＲＡＭの容量や、フラッシュメモリのページサイズ・ブロックサイズ・ブロック数は採用するメモリ製品によって異なるものである。それらのメモリチップの入出力バス幅も同様に異なる。また、１つのメモリセルに記録可能なビット数は、前記実施形態では、ＭＬＣ方式で２ビット、ＳＬＣ方式で１ビットだが、本発明はこれらの記録可能ビット数に限定されない。１セルに複数ビットを記録するライト方式と、それより少ないビットを前者より短い時間で１セルに記録するライト方式とを持つフラッシュメモリであればどんなものでもよい。
【０１００】
この実施例の記憶装置は、１インチや１．８インチのように前記２．５や３．５インチそれよりも小さな外形サイズのＨＤＤパッケージと同等パッケージに搭載されるもの、あるいは独自に開発されたパッケージあるいは単に実装基板上に搭載されるもの等種々の実施形態を採ることができる。
以上のように、本発明の実施形態によれば、多値フラッシュメモリを用いて構成された半導体記憶装置において、ホストから小さなサイズのデータが一部のアドレス範囲内でランダムにライトされる時に、多値フラッシュメモリの通常の書き込み時間より平均的に短い時間で書き込みが実施され、また、多値フラッシュメモリのブロックデータの移し替え発生時のブロック消去頻度が低減されることにより、ホストライト性能と書き換え寿命を向上するという効果を奏することが可能となる。
【図面の簡単な説明】
【０１０１】
【図１】本発明の実施形態を適用したＳＳＤの内部構造を示す図である。
【図２】多値フラッシュメモリの物理構造とアクセス仕様を示す図である。
【図３】ＳＳＤにおいてフラッシュメモリブロックを消去する際に用いる消去単位ＥＵの構造を示す図である。
【図４】ＳＳＤにおいて論理アドレス空間のデータを消去単位ＥＵ内の物理ページに割り付ける方法を示す図である。
【図５】ホストによる１６ＫＢを超えるデータライトに対して、ＳＳＤのデータ格納処理方法を示す図である。
【図６】ホストによる１６ＫＢ以下のデータライトに対して、ＳＳＤのデータ格納処理方法を示す図である。
【図７】ホストによる１６ＫＢ以下のデータライトに対して、ランダム２次キャッシュからのデータ追い出し処理方法を示すフローチャートである。
【図８】ＳＳＤに搭載されたフラッシュメモリにおける消去単位ＥＵの割り付けタイプとそのライフサイクルを示す図である。
【図９】２５６ＫＢアドレス範囲の１６ＫＢランダムライトにおいて、ＳＳＤ内のデータ格納状況の変化を示す図である。
【図１０】本発明の第２の実施形態であるＳＳＤにおいて、一部の論理アドレス空間のデータを消去単位ＥＵ内の物理ページに割り付ける方法を示す図である。
【符号の説明】
【０１０２】
１０００…ＳＳＤ、１０２０…コントローラチップ、１１００〜１１０７…フラッシュメモリチップ、１２５２…ＳＤＲＡＭチップ、１２７０…中央処理装置ＣＰＵ、１５００…ホスト、３２００…消去単位ＥＵ、３２３１…データ領域、３２３２…３次キャッシュ領域、６０００…ランダム１次キャッシュ、６３００…ランダム２次キャッシュ。
【図１】
2010152778.tif 000003
【図２】
2010152778.tif 000004
【図３】
2010152778.tif 000005
【図４】
2010152778.tif 000006
【図５】
2010152778.tif 000007
【図６】
2010152778.tif 000008
【図７】
2010152778.tif 000009
【図８】
2010152778.tif 000010
【図９】
2010152778.tif 000011
【図１０】
2010152778.tif 000012