(57)【特許請求の範囲】
【請求項１】
不揮発性半導体メモリと、
前記不揮発性半導体メモリから読み出したデータを保持するリードキャッシュと、
前記不揮発性半導体メモリへ書き込むデータを保持するライトキャッシュと、
前記不揮発性半導体メモリと前記リードキャッシュ及び前記ライトキャッシュとの間のデータ転送を制御するコントローラと、を具備し、
前記コントローラは、
前記不揮発性半導体メモリへのデータ強制書き込み命令を受けた際に、所定の条件を満たした場合は、前記ライトキャッシュからのデータ追い出しを行うことなく、前記強制書き込み命令で指定されたデータを、前記リードキャッシュを介して前記不揮発性半導体メモリへ書き込むことを特徴とするメモリシステム。
【請求項２】
前記コントローラは、
前記強制書き込み命令で指定されたデータと同一アドレスのデータを前記ライトキャッシュが保持している場合に、前記強制書き込み命令で指定されたデータを、前記ライトキャッシュを介して前記不揮発性半導体メモリへ書き込み、
前記強制書き込み命令で指定されたデータと同一アドレスのデータを前記ライトキャッシュが保持していない場合に、前記強制書き込み命令で指定されたデータを、前記リードキャッシュを介して前記不揮発性半導体メモリへ書き込むことを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記コントローラは、
前記ライトキャッシュから前記不揮発性半導体メモリへデータ転送する際に、前記ライトキャッシュ内のデータを前記不揮発性半導体メモリ内に追い出す処理と、前記不揮発性半導体メモリ内のデータを前記不揮発性半導体メモリ内で移動または整理する処理と、を実行することを特徴とする請求項１または２に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリを備えたメモリシステムに関する。
【背景技術】
【０００２】
コンピュータシステムに用いられる外部記憶装置として、ＮＡＮＤ型フラッシュメモリ
などの不揮発性半導体メモリを搭載したＳＳＤ（Solid State Drive）が注目されている
。フラッシュメモリは、磁気ディスク装置に比べ、高速、軽量などの利点を有している。
【０００３】
ＳＳＤ内には、複数のフラッシュメモリチップ、ホスト装置からの要求に応じて各フラ
ッシュメモリチップのリード／ライト制御を行うコントローラ、各フラッシュメモリチッ
プとホスト装置との間でデータ転送を行うためのバッファメモリ、電源回路、ホスト装置
に対する接続インタフェースなどを備えている（例えば、特許文献１参照）。
【０００４】
ところで、不揮発性半導体メモリには、ＮＡＮＤ型フラッシュメモリのように、データ
を記憶させる場合にブロック単位で一度データを消去してからその後に書き込みを行うも
の、ページ単位で書き込み／読み出しを行うものなど、消去／書き込み／読み出しの単位
が固定されているものがある。
【０００５】
一方、パーソナルコンピュータなどのホスト機器がハードディスクをはじめとする２次
記憶装置に対してデータの書き込み／読み出しを行う単位は、セクタと呼ばれる。セクタ
は、半導体記憶装置の消去／書き込み／読み出しの単位とは独立に定められる。
【０００６】
例えば、不揮発性半導体メモリのブロックの大きさ（ブロックサイズ）は、５１２ｋＢ
、ページの大きさ（ページサイズ）は、４ｋＢであるのに対して、ホスト機器のセクタの
大きさ（セクタサイズ）は、５１２Ｂのように定められている。
【０００７】
このように、不揮発性半導体メモリの消去／書き込み／読み出しの単位は、ホスト機器
の書き込み／読み出しの単位よりも大きい場合がある。
【０００８】
このような半導体記憶素子を用いてハードディスクのようなパーソナルコンピュータの
二次記憶装置を構成する場合、ホスト機器としてのパーソナルコンピュータからの小さな
サイズのデータは、半導体記憶素子のブロックサイズ、ページサイズに適合させてアドレ
ス変換を行う必要がある。このため、ＮＡＮＤ型フラッシュメモリを用いて大容量の二次
記憶装置を構成する場合においては、上記のようなアドレス変換を行うための管理テーブ
ルが必要となる。
【０００９】
ＳＳＤにおいては、フラッシュメモリとホスト装置との間に、キャッシュメモリを介在
させて、フラッシュメモリから高速にデータを読み出すように構成されたＳＳＤが開示さ
れている（例えば、特許文献２参照）。
【００１０】
しかしながら、キャッシュメモリにホスト装置からの書き込みが発生した際に、キャッ
シュメモリが満杯の場合は、キャッシュメモリからフラッシュメモリへのデータ追い出し
を行ってから、キャッシュメモリにデータを書き込む必要がある。また、書き込み用のキ
ャシュメモリでは、読み出し用のキャッシュメモリとは異なって、フラッシュメモリへの
追い出し処理が発生するため、処理が複雑となり、管理テーブルの更新や管理テーブルか
らの検索処理に時間がかかる。このため、書き込み用のキャッシュメモリを介してフラッ
シュメモリへデータを書き込む際には、データ書き込みに長時間を要する場合があるとい
う問題があった。
【００１１】
また、コンピュータシステムでは、書き込み処理の終了通知は、書き込み用のキャッシ
ュメモリに書き込まれた時点でホスト装置に通知されるので、この時点で電源障害などが
起きた場合は、キャッシュメモリ内のデータは失われる。そこで、ホスト装置からのデー
タを書き込み用のキャッシュメモリからフラッシュメモリに書き込んだ時点で書き込み処
理の終了通知をホスト装置へ返す処理としてWrite_FUA（Force  Unit  Access）が用いら
れる場合がある。このようなWrite_FUAでは、キャッシュメモリに書き込まれたホスト装
置からのデータを迅速にフラッシュメモリへ書き込まなければ、電源障害時のデータ消失
の防止に繋がらない。
【００１２】
【特許文献１】特許第３６８８８３５号公報
【特許文献２】特表２００７−５２８０７９号
【発明の開示】
【発明が解決しようとする課題】
【００１３】
本発明は、ホスト装置からフラッシュメモリへのデータ書き込み処理に対して一定のレ
イテンシを保証することが可能なメモリシステムを提供する。
【課題を解決するための手段】
【００１４】
本願発明の一態様によれば、不揮発性半導体メモリと、前記不揮発性半導体メモリから読み出したデータを保持するリードキャッシュと、前記不揮発性半導体メモリへ書き込むデータを保持するライトキャッシュと、前記不揮発性半導体メモリと前記リードキャッシュ及び前記ライトキャッシュとの間のデータ転送を制御するコントローラと、を具備し、前記コントローラは、前記不揮発性半導体メモリへのデータ強制書き込み命令を受けた際に、所定の条件を満たした場合は、前記ライトキャッシュからのデータ追い出しを行うことなく、前記強制書き込み命令で指定されたデータを、前記リードキャッシュを介して前記不揮発性半導体メモリへ書き込むことを特徴とするメモリシステム、が提供される。
【発明の効果】
【００１５】
本発明によれば、ホスト機器からフラッシュメモリへのデータ書き込み処理に対して一
定のレイテンシを保証することが可能なメモリシステムを提供できる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態について図面を参照して説明する。なお、以下の説明におい
て、同一の機能および構成を有する要素については、同一符号を付し、重複説明は必要な
場合にのみ行う。
【００１７】
先ず、本明細書で用いる用語について定義しておく。
・物理ページ：ＮＡＮＤメモリチップ内部において一括して書き込み／読み出しが可能
な単位のこと。物理ページサイズは、例えば４ｋＢ。ただし、主データ（ユーザデータな
ど）に対してＳＳＤ内で付加される誤り訂正符号などの冗長ビットは含まないものとする
。通常、４ｋＢ＋冗長ビット（例えば、数１０Ｂ）が同時にメモリセルに書き込まれる単
位となるが、説明の便宜上、上記のように定義する。
・論理ページ：ＳＳＤ内で設定される書き込み／読み出し単位であり、１以上の物理ペ
ージに対応付けられている。論理ページサイズは、例えば８ビットノーマルモードでは、
４ｋＢ、３２ビット倍速モードでは、３２ｋＢ。ただし、冗長ビットは含まないものとす
る。
・物理ブロック：ＮＡＮＤメモリチップ内部において独立して消去可能な最小単位のこ
とであり、複数の物理ページから構成される。物理ブロックサイズは、例えば５１２ｋＢ
。ただし、主データに対してＳＳＤ内で付加される誤り訂正符号などの冗長ビットは含ま
ないものとする。通常、５１２ｋＢ＋冗長ビット（例えば、数１０ｋＢ）が同時に消去さ
れる単位となるが、説明の便宜上、上記のように定義する。
・論理ブロック：ＳＳＤ内で設定される消去単位であり、１以上の物理ブロックに対応
付けられている。論理ブロックサイズは、例えば８ビットノーマルモードでは、５１２ｋ
Ｂ、３２ビット倍速モードでは、４ＭＢ。ただし、冗長ビットは含まないものとする。
・セクタ：ホストからの最小アクセス単位のこと。セクタサイズは、例えば５１２Ｂ。
・クラスタ：ＳＳＤ内で「小さなデータ」を管理する管理単位。クラスタサイズはセク
タサイズ以上であり、クラスタサイズの２以上の自然数倍が論理ページサイズとなるよう
に定められる。
・トラック：ＳＳＤ内で「大きなデータ」を管理する管理単位。クラスタサイズの２以
上の自然数倍がトラックサイズに、かつ、トラックサイズの２以上の自然数倍が論理ブロ
ックサイズとなるように定められる。
・フリーブロック（ＦＢ）：用途未割り当てのＮＡＮＤ型フラッシュメモリ上の論理ブ
ロックのこと。用途を割り当てる際に消去してから使用する。
・バッドブロック（ＢＢ）：ＮＡＮＤ型フラッシュメモリ上の、誤りが多いなど記憶領
域として使用できない物理ブロックのこと。例えば、消去動作が正常に終了しなかった物
理ブロックがバッドブロックＢＢとして登録される。
・書き込み効率：所定期間内における、ホストから書き込んだデータ量に対する、論理
ブロックの消去量の統計値のこと。小さいほどＮＡＮＤ型フラッシュメモリの消耗度が小
さい。
・有効クラスタ：最新のデータを保持しているクラスタ。
・無効クラスタ：最新ではないデータを保持しているクラスタ。
・有効トラック：最新のデータを保持しているトラック。
・無効トラック：最新ではないデータを保持しているトラック。
・コンパクション：管理対象内の論理ブロックから、有効クラスタや有効トラックのみ
を取り出して、新しい論理ブロックに書き直すこと。
【００１８】
［実施の形態］
図１は、ＳＳＤ（Solid State Drive）１００の構成例を示すブロック図である。ＳＳ
Ｄ１００は、ＡＴＡインタフェース（ＡＴＡ  Ｉ／Ｆ）２などのメモリ接続インタフェー
スを介してパーソナルコンピュータあるいはＣＰＵコアなどのホスト装置１と接続され、
ホスト装置１の外部メモリとして機能する。また、ＳＳＤ１００は、ＲＳ２３２Ｃインタ
フェース（ＲＳ２３２Ｃ  Ｉ／Ｆ）などの通信インタフェース３を介して、デバッグ用／
製造検査用機器２００との間でデータを送受信することができる。ＳＳＤ１００は、不揮
発性半導体メモリとしてのＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリと略す）
１０と、コントローラとしてのドライブ制御回路４と、揮発性半導体メモリとしてのＤＲ
ＡＭ２０と、電源回路５と、状態表示用のＬＥＤ６と、ドライブ内部の温度を検出する温
度センサ７と、フューズ８とを備えている。
【００１９】
電源回路５は、ホスト装置１側の電源回路から供給される外部直流電源から複数の異な
る内部直流電源電圧を生成し、これら内部直流電源電圧をＳＳＤ１００内の各回路に供給
する。また、電源回路５は、外部電源の立ち上がりまたは立ち下がりを検知し、パワーオ
ンリセット信号を生成して、ドライブ制御回路４に供給する。フューズ８は、ホスト装置
１側の電源回路とＳＳＤ１００内部の電源回路５との間に設けられている。外部電源回路
から過電流が供給された場合フューズ８が切断され、内部回路の誤動作を防止する。
【００２０】
ＮＡＮＤメモリ１０は、この場合、４並列動作を行う４つの並列動作要素１０ａ〜１０
ｄを有し、１つの並列動作要素は、２つのＮＡＮＤメモリパッケージを有する。各ＮＡＮ
Ｄメモリパッケージは、積層された複数のＮＡＮＤメモリチップ（例えば、１チップ＝２
ＧＢ）によって構成されている。図１の場合は、各ＮＡＮＤメモリパッケージは、積層さ
れた４枚のＮＡＮＤメモリチップによって構成されており、ＮＡＮＤメモリ１０は６４Ｇ
Ｂの容量を有する。各ＮＡＮＤメモリパッケージが、積層された８枚のＮＡＮＤメモリチ
ップによって構成されている場合は、ＮＡＮＤメモリ１０は１２８ＧＢの容量を有するこ
とになる。
【００２１】
ＤＲＡＭ２０は、ホスト装置１とＮＡＮＤメモリ１０間でのデータ転送用キャッシュお
よび作業領域用メモリとして機能する。また、ＤＲＡＭ２０の代わりに、ＦｅＲＡＭを使
用しても良い。ドライブ制御回路４は、ホスト装置１とＮＡＮＤメモリ１０との間でＤＲ
ＡＭ２０を介してデータ転送制御を行うとともに、ＳＳＤ１００内の各構成要素を制御す
る。また、ドライブ制御回路４は、状態表示用ＬＥＤ６にステータス表示用信号を供給す
るとともに、電源回路５からのパワーオンリセット信号を受けて、リセット信号およびク
ロック信号を自回路内およびＳＳＤ１００内の各部に供給する機能も有している。
【００２２】
各ＮＡＮＤメモリチップは、データ消去の単位である物理ブロックを複数配列して構成
されている。図２（ａ）は、ＮＡＮＤメモリチップに含まれる１個の物理ブロックの構成
例を示す回路図である。各物理ブロックは、Ｘ方向に沿って順に配列された（ｐ＋１）個
のＮＡＮＤストリングを備えている（ｐは、０以上の整数）。（ｐ＋１）個のＮＡＮＤス
トリングにそれぞれ含まれる選択トランジスタＳＴ１は、ドレインがビット線ＢＬ０〜Ｂ
Ｌｐに接続され、ゲートが選択ゲート線ＳＧＤに共通接続されている。また、選択トラン
ジスタＳＴ２は、ソースがソース線ＳＬに共通接続され、ゲートが選択ゲート線ＳＧＳに
共通接続されている。
【００２３】
各メモリセルトランジスタＭＴは、半導体基板上に形成された積層ゲート構造を備えた
ＭＯＳＦＥＴ（Metal Oxide Semiconductor Field Effect Transistor）から構成される
。積層ゲート構造は、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層（浮
遊ゲート電極）、および電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲート
電極を含んでいる。メモリセルトランジスタＭＴは、浮遊ゲート電極に蓄えられる電子の
数に応じて閾値電圧が変化し、この閾値電圧の違いに応じてデータを記憶する。メモリセ
ルトランジスタＭＴは、１ビットを記憶するように構成されていてもよいし、多値（２ビ
ット以上のデータ）を記憶するように構成されていてもよい。
【００２４】
また、メモリセルトランジスタＭＴは、浮遊ゲート電極を有する構造に限らず、ＭＯＮ
ＯＳ（Metal-Oxide-Nitride-Oxide-Silicon）型など、電荷蓄積層としての窒化膜界面に
電子をトラップさせることでしきい値調整可能な構造であってもよい。ＭＯＮＯＳ構造の
メモリセルトランジスタＭＴについても同様に、１ビットを記憶するように構成されてい
てもよいし、多値（２ビット以上のデータ）を記憶するように構成されていてもよい。
【００２５】
各ＮＡＮＤストリングにおいて、（ｑ＋１）個のメモリセルトランジスタＭＴは、選択
トランジスタＳＴ１のソースと選択トランジスタＳＴ２のドレインとの間に、それぞれの
電流経路が直列接続されるように配置されている。すなわち、複数のメモリセルトランジ
スタＭＴは、隣接するもの同士で拡散領域（ソース領域若しくはドレイン領域）を共有す
るような形でＹ方向に直列接続される。
【００２６】
そして、最もドレイン側に位置するメモリセルトランジスタＭＴから順に、制御ゲート
電極がワード線ＷＬ０〜ＷＬｑにそれぞれ接続されている。従って、ワード線ＷＬ０に接
続されたメモリセルトランジスタＭＴのドレインは選択トランジスタＳＴ１のソースに接
続され、ワード線ＷＬｑに接続されたメモリセルトランジスタＭＴのソースは選択トラン
ジスタＳＴ２のドレインに接続されている。
【００２７】
ワード線ＷＬ０〜ＷＬｑは、物理ブロック内のＮＡＮＤストリング間で、メモリセルト
ランジスタＭＴの制御ゲート電極を共通に接続している。つまり、ブロック内において同
一行にあるメモリセルトランジスタＭＴの制御ゲート電極は、同一のワード線ＷＬに接続
される。この同一のワード線ＷＬに接続される（ｐ＋１）個のメモリセルトランジスタＭ
Ｔは１ページ（物理ページ）として取り扱われ、この物理ページごとにデータの書き込み
およびデータの読み出しが行われる。
【００２８】
また、ビット線ＢＬ０〜ＢＬｐは、ブロック間で、選択トランジスタＳＴ１のドレイン
を共通に接続している。つまり、複数のブロック内において同一列にあるＮＡＮＤストリ
ングは、同一のビット線ＢＬに接続される。
【００２９】
図２（ｂ）は、例えば、１個のメモリセルトランジスタＭＴに２ビットの記憶を行う４
値データ記憶方式でのしきい値分布を示す模式図である。４値データ記憶方式では、上位
ページデータ“ｘ”と下位ページデータ“ｙ”で定義される４値データ“ｘｙ”の何れか
１つをメモリセルトランジスタＭＴに保持可能である。
【００３０】
この、４値データ“ｘｙ”は、メモリセルトランジスタＭＴのしきい値電圧の順に、例
えば、データ“１１”、“０１”、“００”、“１０”が割り当てられる。データ“１１
”は、メモリセルトランジスタＭＴのしきい値電圧が負の消去状態である。
【００３１】
下位ページ書き込み動作においては、データ“１１”（消去状態）のメモリセルトラン
ジスタＭＴに対して選択的に、下位ビットデータ“ｙ”の書き込みによって、データ“１
０”が書き込まれる。上位ページ書き込み前のデータ“１０”のしきい値分布は、上位ペ
ージ書き込み後のデータ“０１”とデータ“００”のしきい値分布の中間程度に位置して
おり、上位ページ書き込み後のしきい値分布よりブロードであってもよい。上位ページ書
き込み動作においては、データ“１１”のメモリセルと、データ“１０”のメモリセルに
対して、それぞれ選択的に上位ビットデータ“ｘ”の書き込みが行われて、データ“０１
”およびデータ“００”が書き込まれる。
【００３２】
図３は、ドライブ制御回路４のハードウェア的な内部構成例を示すブロック図である。
ドライブ制御回路４は、データアクセス用バス１０１、第１の回路制御用バス１０２、お
よび第２の回路制御用バス１０３を備えている。第１の回路制御用バス１０２には、ドラ
イブ制御回路４全体を制御するプロセッサ１０４が接続されている。第１の回路制御用バ
ス１０２には、ＮＡＮＤメモリ１０に記憶された各管理プログラム（ＦＷ：ファームウエ
ア）をブートするブート用プログラムが格納されたブートＲＯＭ１０５がＲＯＭコントロ
ーラ１０６を介して接続されている。また、第１の回路制御用バス１０２には、図１に示
した電源回路５からのパワーオンリセット信号を受けて、リセット信号およびクロック信
号を各部に供給するクロックコントローラ１０７が接続されている。
【００３３】
第２の回路制御用バス１０３は、第１の回路制御用バス１０２に接続されている。第２
の回路制御用バス１０３には、図１に示した温度センサ７からのデータを受けるためのＩ
２Ｃ回路１０８、状態表示用ＬＥＤ６にステータス表示用信号を供給するパラレルＩＯ（
ＰＩＯ）回路１０９、ＲＳ２３２Ｃ  Ｉ／Ｆ３を制御するシリアルＩＯ（ＳＩＯ）回路１
１０が接続されている。
【００３４】
ＡＴＡインタフェースコントローラ（ＡＴＡコントローラ）１１１、第１のＥＣＣ（Er
ror Checking and Correction）回路１１２、ＮＡＮＤコントローラ１１３、およびＤＲ
ＡＭコントローラ１１４は、データアクセス用バス１０１と第１の回路制御用バス１０２
との両方に接続されている。ＡＴＡコントローラ１１１は、ＡＴＡインタフェース２を介
してホスト装置１との間でデータを送受信する。データアクセス用バス１０１には、デー
タ作業領域作業領域およびファームウェア展開領域として使用されるＳＲＡＭ１１５がＳ
ＲＡＭコントローラ１１６を介して接続されている。ＮＡＮＤメモリ１０に記憶されてい
るファームウェアは起動時、ブートＲＯＭ１０５に記憶されたブート用プログラムによっ
てＳＲＡＭ１１５に転送される。
【００３５】
ＮＡＮＤコントローラ１１３は、ＮＡＮＤメモリ１０とのインタフェース処理を行うＮ
ＡＮＤ  Ｉ／Ｆ１１７、第２のＥＣＣ回路１１８、およびＮＡＮＤメモリ１０−ＤＲＡＭ
２０間のアクセス制御を行うＤＭＡ転送制御用ＤＭＡコントローラ１１９を備えている。
第２のＥＣＣ回路１１８は第２の訂正符号のエンコードを行い、また、第１の誤り訂正符
合のエンコードおよびデコードを行う。第１のＥＣＣ回路１１２は、第２の誤り訂正符号
のデコードを行う。第１の誤り訂正符号、第２の誤り訂正符号は、例えば、ハミング符号
、ＢＣＨ（Bose Chaudhuri Hocqenghem）符号、ＲＳ(Reed Solomon)符号、或いはＬＤＰ
Ｃ（Low Density Parity Check）符号等であり、第２の誤り訂正符号の訂正能力は、第１
の誤り訂正符号の訂正能力よりも高いとする。
【００３６】
図１および図３に示したように、ＮＡＮＤメモリ１０においては、４つの並列動作要素
１０ａ〜１０ｄが各８ビットの４チャネル（４ｃｈ）を介して、ドライブ制御回路４内部
のＮＡＮＤコントローラ１１２に並列接続されている。４つの並列動作要素１０ａ〜１０
ｄを単独動作させるか、並列動作させるか、ＮＡＮＤメモリチップの備える倍速モード（
Multi Page Program / Multi Page Read / Multi Block Erase）を使用するか否か、とい
う組み合わせにより、下記３種類のアクセスモードが提供される。
（１）８ビットノーマルモード
１ｃｈだけ動作させ、８ビット単位でデータ転送を行うモードである。物理ページサイ
ズ（４ｋＢ）で書き込み／読み出しが行われる。また、物理ブロックサイズ（５１２ｋＢ
）で消去が行われる。１つの物理ブロックに対して１つの論理ブロックが対応付けられ、
論理ブロックサイズは５１２ｋＢとなる。
（２）３２ビットノーマルモード
４ｃｈ並列で動作させ、３２ビット単位でデータ転送を行うモードである。物理ページ
サイズ×４（１６ｋＢ）で書き込み／読み出しが行われる。また、物理ブロックサイズ×
４（２ＭＢ）で消去が行われる。４つの物理ブロックに対して１つの論理ブロックが対応
付けられ、論理ブロックサイズは２ＭＢとなる。
（３）３２ビット倍速モード
４ｃｈ並列で動作させ、更に、ＮＡＮＤメモリチップの倍速モードを利用して書き込み
／読み出しを行うモードである。物理ページサイズ×４×２（３２ｋＢ）で書き込み／読
み出しが行われる。また、物理ブロックサイズ×４×２（４ＭＢ）で消去が行われる。８
つの物理ブロックに対して１つの論理ブロックが対応付けられ、論理ブロックサイズは４
ＭＢとなる。
【００３７】
４ｃｈ並列動作する３２ビットノーマルモードまたは３２ビット倍速モードでは、並列
動作する４または８物理ブロックが、ＮＡＮＤメモリ１０としての消去単位となり、並列
動作する４または８物理ページが、ＮＡＮＤメモリ１０としての書き込み単位および読み
出し単位となる。以下の動作では、基本的に３２ビット倍速モードを使用し、例えば、１
論理ブロック＝４ＭＢ＝２ｉトラック＝２ｊページ＝２ｋクラスタ＝２ｌセクタとして説
明する（ｉ、ｊ、ｋ、ｌは自然数、かつ、ｉ＜ｊ＜ｋ＜ｌの関係が成立する）。
【００３８】
３２ビット倍速モードでアクセスされる論理ブロックは４ＭＢ単位であり、８個（２×
４ｃｈ）の物理ブロック（１物理ブロック＝５１２ＫＢ）が対応付けられている。物理ブ
ロック単位で管理されるバッドブロックＢＢが発生すると、そのバッドブロックＢＢは使
用不可になるので、そのようなときには、論理ブロックに対応付けられた８個の物理ブロ
ックの組み合わせが、バッドブロックＢＢを含まないように変更される。
【００３９】
図４は、プロセッサ１０４により実現されるファームウェアの機能構成例を示すブロッ
ク図である。プロセッサ１０４により実現されるファームウェアの各機能は、大きく、デ
ータ管理部１２０、ＡＴＡコマンド処理部１２１、セキュリティ管理部１２２、ブートロ
ーダ１２３、初期化管理部１２４、デバッグサポート部１２５に分類される。
【００４０】
データ管理部１２０は、ＮＡＮＤコントローラ１１２、第１のＥＣＣ回路１１４を介し
て、ＮＡＮＤメモリ１０−ＤＲＡＭ２０間のデータ転送、ＮＡＮＤメモリ１０に関する各
種機能を制御する。ＡＴＡコマンド処理部１２１は、ＡＴＡコントローラ１１０、および
ＤＲＡＭコントローラ１１３を介して、データ管理部１２０と協動してＤＲＡＭ２０−ホ
スト装置１間のデータ転送処理を行う。セキュリティ管理部１２２は、データ管理部１２
０およびＡＴＡコマンド処理部１２１と協動して各種のセキュリティ情報を管理する。
【００４１】
ブートローダ１２３は、パワーオン時、各管理プログラム（ファームウェア）をＮＡＮ
Ｄメモリ１０からＳＲＡＭ１２０にロードする。初期化管理部１２４は、ドライブ制御回
路４内の各コントローラ／回路の初期化を行う。デバッグサポート部１２５は、外部から
ＲＳ２３２Ｃインタフェースを介して供給されたデバッグ用データを処理する。主に、デ
ータ管理部１２０、ＡＴＡコマンド処理部１２１、およびセキュリティ管理部１２２が、
ＳＲＡＭ１１４に記憶される各管理プログラムをプロセッサ１０４が実行することによっ
て実現される機能部である。
【００４２】
本実施形態では、主としてデータ管理部１２０が実現する機能について説明する。デー
タ管理部１２０は、ＡＴＡコマンド処理部１２１が記憶デバイスであるＮＡＮＤメモリ１
０やＤＲＡＭ２０に対して要求する機能の提供（ホスト装置からのWrite要求、Cache Flu
sh要求、Read要求等の各種コマンドへの応答）と、アドレス領域とＮＡＮＤメモリ１０と
の対応関係の管理および管理情報の保護と、ＤＲＡＭ１０およびＮＡＮＤメモリ１０を利
用した高速で効率の良いデータ読み出し／書き込み機能の提供、ＮＡＮＤメモリ１０の信
頼性の確保などを行う。
【００４３】
図５は、ＮＡＮＤメモリ１０およびＤＲＡＭ２０内に形成された機能ブロックを示すも
のである。ホスト装置１とＮＡＮＤメモリ１０との間には、ＤＲＡＭ２０上に構成された
ライトキャッシュ（ＷＣ）２１およびリードキャッシュ（ＲＣ）２２が介在している。Ｗ
Ｃ２１はホスト装置１からのWriteデータを一時保存し、ＲＣ２２はＮＡＮＤメモリ１０
からのReadデータを一時保存する。ＮＡＮＤメモリ１０内の論理ブロックは、書き込み時
のＮＡＮＤメモリ１０に対する消去の量を減らすために、データ管理部１２０により、前
段ストレージ領域（ＦＳ：Front Storage）１２、中段ストレージ領域（ＩＳ:Intermedia
te Storage）１３およびメインストレージ領域（ＭＳ：Main Storage）１１という各管理
領域に割り当てられている。ＦＳ１２は、ＷＣ２１からのデータを「小さな単位」である
クラスタ単位に管理するものであり、小データを短期間保存する。ＩＳ１３は、ＦＳ１２
から溢れたデータを「小さな単位」であるクラスタ単位に管理するものであり、小データ
を長期間保存する。ＭＳ１１は、ＷＣ２１、ＦＳ１２、ＩＳ１３からのデータを「大きな
単位」であるトラック単位で長期間記憶する。例えば、記憶容量は、ＭＳ＞ＩＳ、ＦＳ＞
ＷＣの関係となる。
【００４４】
小さな管理単位を、ＮＡＮＤメモリ１０の記憶領域全てに適用すると、後述する管理テ
ーブルのサイズが肥大化し、ＤＲＡＭ２０に収まらないので、小さな管理単位で管理する
のは、最近書き込まれたばかりのデータと、ＮＡＮＤメモリ１０への書き込み効率が悪い
小さなデータのみとするようにＮＡＮＤメモリ１０の各ストレージを構成している。
【００４５】
図６は、ＷＣ２１からＮＡＮＤメモリ１０への書き込み処理（ＷＲ処理）に係わるより
詳細な機能ブロック図を示すものである。ＦＳ１２の前段には、ＷＣ２１からのデータを
バッファリングするＦＳインプットバッファ（ＦＳＩＢ）１２ａが設けられている。また
、ＭＳ１１の前段には、ＷＣ２１、ＦＳ１２、またはＩＳ１３からのデータをバッファリ
ングするＭＳインプットバッファ（ＭＳＩＢ）１１ａが設けられている。また、ＭＳ１１
には、トラック前段ストレージ領域（ＴＦＳ）１１ｂが設けられている。ＴＦＳ１１ｂは
、ＭＳＩＢ１１ａとＭＳ１１の間に介在するＦＩＦＯ（First in First out）構造を有す
るバッファであり、ＴＦＳ１１ｂに記録されたデータは、ＭＳＩＢ１１ａから直接ＭＳ１
１に書き込まれるデータよりも更新頻度が高いデータである。ＭＳ１１、ＭＳＩＢ１１ａ
、ＴＦＳ１１ｂ、ＦＳ１２、ＦＳＩＢ１２ａ、およびＩＳ１３には、ＮＡＮＤメモリ１０
内の各論理ブロックの何れかが割り当てられている。
【００４６】
つぎに、図５、図６の各構成要素の具体的な機能構成について詳述する。ホスト装置１
はＳＳＤ１００対し、ReadまたはWriteする際には、ＡＴＡインタフェースを介して論理
アドレスとしてのＬＢＡ（Logical Block Addressing）を入力する。ＬＢＡは、図７に示
すように、セクタ（サイズ：５１２Ｂ）に対して０からの通し番号をつけた論理アドレス
である。本実施の形態においては、図５の各構成要素であるＷＣ２１、ＲＣ２２、ＦＳ１
２、ＩＳ１３、ＭＳ１１の管理単位として、ＬＢＡの下位（ｌ−ｋ＋１）ビット目から上
位のビット列で構成される論理クラスタアドレスと、ＬＢＡの下位（ｌ−ｉ＋１）ビット
から上位のビット列で構成される論理トラックアドレスとを定義する。１クラスタ＝２（
ｌ−ｋ）セクタで、１トラック＝２（ｋ−ｉ）クラスタである。
【００４７】
・リードキャッシュ（ＲＣ）２２
ＲＣ２２について説明する。ＲＣ２２は、ＡＴＡコマンド処理部１２１からのRead要求
に対して、ＮＡＮＤメモリ１０（ＦＳ１２、ＩＳ１３、ＭＳ１１）からのReadデータを一
時的に保存するための領域である。ＲＣ２２は、本実施形態では例えば、ｍ-line、ｎ-wa
y（ｍは２（ｋ−ｉ）以上の自然数、ｎは２以上の自然数）セットアソシアティブ方式で
管理されており、１エントリに１クラスタ分のデータを保持できる。論理クラスタアドレ
スのＬＳＢ（ｋ−ｉ）ビットでlineが決定される。なお、ＲＣ２２は、フルアソシアティ
ブ方式で管理されていても良いし、単純なＦＩＦＯ方式で管理されていてもよい。
【００４８】
・ライトキャッシュ（ＷＣ）２１
ＷＣ２１について説明する。ＷＣ２１は、ＡＴＡコマンド処理部１２１からのWrite要
求に対して、ホスト装置１からのWriteデータを一時的に保存するための領域である。ｍ-
line、ｎ-way（ｍは２（ｋ−ｉ）以上の自然数、ｎは２以上の自然数）セットアソシアテ
ィブ方式で管理されており、１エントリに１クラスタ分のデータを保持できる。論理クラ
スタアドレスのＬＳＢ（ｋ−ｉ）ビットでlineが決定される。例えば、way１〜wayｎの順
で書き込み可能なwayが検索される。また、ＷＣ２１に登録されているトラックは最も古
く更新された順が分かるように後述するＷＣトラック管理テーブル２４のＦＩＦＯ構造に
よってＬＲＵ（Least Recently Used）で管理される。なお、ＷＣ２１は、フルアソシア
ティブ方式で管理されていても良い。また、ＷＣ２１は、ＲＣ２２とline数、way数が互
いに異なっていてもよい。
【００４９】
Write要求により書き込まれたデータは、一旦ＷＣ２１上に格納される。ＷＣ２１から
ＮＡＮＤメモリ１０へ追い出すデータの決定方法は以下のルールに従う。
（i）タグによって決定されたlineの書き込み可能なwayが最後の(本実施形態では、ｎ
個目の)空きwayだった場合、則ち最後の空きwayが使用される場合は、そのlineに登録さ
れたトラックのうち、ＬＲＵに基づいて最も古く更新されたトラックを追い出し確定する
。
（ii）ＷＣ２１に登録されている異なるトラックの個数が所定数を超えた場合、ＬＲＵ
順で、当該トラックに属するＷＣ中のクラスタ数が所定数未満のトラックの追い出しを確
定する。
【００５０】
以上の方針で追い出すトラックを決定する。その際、追い出すのは同一トラックに含ま
れる全てのデータであり、追い出されるデータ量が、例えばトラックサイズの５０％を超
えていればＭＳ１１へ、超えていなければＦＳ１２へ追い出す。
【００５１】
さらに（i）の条件でトラック追い出しが発生した場合で、ＭＳ１１へ追い出す場合は
、追い出されるトラック数が２ｉ個（もともと２ｉ個以上のときは２ｉ＋１個）になるま
で、ＷＣ２１内のトラックのうち上記追い出されるデータ量がトラックサイズの５０％を
超えるという条件を満たすトラックを上記(i)のポリシーで選択して追い出し候補に追加
する。別言すれば、追い出されるトラックが２ｉ個未満の場合、ＷＣ中のトラックの古い
ものから２ｉ個になるまで、２（ｋ−ｉ−１）個以上有効クラスタをもつトラックを選択
して追い出し候補に追加する。
【００５２】
また、（i）の条件でトラック追い出しが発生した場合で、ＦＳ１２に追い出す場合は
、追い出されるクラスタ数が２ｋ個になるまでＷＣ２１内のトラックのうちＬＲＵ順に上
記追い出されるデータ量がトラックサイズの５０％未満であるという条件を満たすトラッ
クを探してそのクラスタを追い出し候補に追加する。別言すれば、ＷＣ中のトラックを古
い順に辿って２（ｋ−ｉ−１）個未満の有効クラスタしかもたないトラックからクラスタ
を取り出していき、有効クラスタ数が２（ｋ−ｉ−１）個になったら、それらクラスタを
ＦＳＩＢ１２ａに論理ブロック単位で追い出しする。ただし、２（ｋ−ｉ−１）個見つか
らなかった場合は、ＦＳＩＢ１２ａに論理ページ単位で追い出しする。なお、ＦＳ１２へ
の追い出しを論理ブロック単位とするか、論理ページ単位とするかの有効クラスタ数の閾
値は、２（ｋ−ｉ−１）個という１論理ブロック分の値にかぎるわけではなく、１論理ブ
ロック分より若干少ない値であってもよい。
【００５３】
また、ＡＴＡコマンド処理部１２１からのCache Flush要求では、ＷＣ２１の内容が全
て、上記と同じ条件（追い出されるデータ量がトラックサイズの５０％を超えていればＭ
Ｓ１１へ、超えていなければＦＳ１２へ）で、ＦＳ１２もしくはＭＳ１１に対して追い出
される。
【００５４】
・前段ストレージ領域（ＦＳ）１２
つぎに、ＦＳ１２について説明する。ＦＳ１２はクラスタ単位でデータを管理されるＦ
ＩＦＯである。ＦＳ１２は、ここを通過しているデータは、後段のＩＳ１３よりも更新頻
度が高いとみなすためのバッファである。すなわち、ＦＳ１２のＦＩＦＯ構造においては
、ＦＩＦＯ中を通過中の有効クラスタ（最新クラスタ）は、ホストからの同じアドレスに
対する再書き込みがあった場合無効化されるので、ＦＳ１２を通過中のクラスタは、ＦＳ
１２からＩＳ１３やＭＳ１１に追い出されたクラスタよりも、更新頻度が高いとみなすこ
とができる。
【００５５】
ＦＳ１２を設けることで、後段のＩＳ１３におけるコンパクション処理に更新頻度の高
いデータが紛れ込む可能性を低減している。無効化によって古いクラスタを保持していた
論理ブロック自体の持つ有効クラスタ数が０となった場合、その論理ブロックは開放され
、フリーブロックＦＢに割り当てられる。また、論理ブロックが無効化された場合、新た
なフリーブロックＦＢを取得し、ＦＳ１２に割り当てる。
【００５６】
ＷＣ２１からＦＳ１２に対してクラスタデータの移動が発生すると、そのクラスタはＦ
ＳＩＢ１２ａに割り当てられた論理ブロックに対して書き込まれる。ＦＳＩＢ１２ａ中に
全てのページの書き込みが完了したブロックが存在する場合、後述するＣＩＢ処理によっ
てそれらのブロックはＦＳＩＢ１２ａからＦＳ１２にＭｏｖｅされる。このＦＳＩＢ１２
ａからＦＳ１２へのＭｏｖｅの際に、ＦＳ１２のブロック数がＦＳ１２として許容される
所定の上限値を超えると、最も古いブロックがＦＳ１２からＩＳ１３またはＭＳ１１に追
い出されることになる。例えば、トラック内の有効クラスタの割合が５０％以上のトラッ
クは、ＭＳ１１（ＴＦＳ１１ｂ）への書き込みを行い、有効クラスタが残ったブロックを
、ＩＳ１３へＭｏｖｅする。
【００５７】
ＮＡＮＤメモリ１０内の構成要素間のデータ移動には、ＭｏｖｅとＣｏｐｙの二通りが
ある。Ｍｏｖｅは、後述する管理テーブルのポインタの付け替えを行うだけで、実際のデ
ータの書き換えは行わない方法である。Ｃｏｐｙは、一方の構成要素に格納されているデ
ータを、ページ単位、トラック単位、ブロック単位で他方の構成要素に実際に書き換える
方法である。
【００５８】
・中段ストレージ領域（ＩＳ）１３
つぎに、ＩＳ１３について説明する。ＩＳ１３は、ＦＳ１３と同様にクラスタ単位でデ
ータの管理が行われる。前述したように、ＩＳ１３に格納されたデータは、更新頻度が低
いデータとみなすことができる。ＦＳ１２からＩＳ１３に対して論理ブロックの移動（Ｍ
ｏｖｅ）、すなわちＦＳ１２からの追い出しが発生すると、以前ＦＳ１２の管理対象であ
った追い出し対象の論理ブロックはポインタの付け替えによりＩＳ１３の管理対象ブロッ
クとなる。このＦＳ１２からＩＳ１３への論理ブロックの移動により、ＩＳ１３のブロッ
ク数がＩＳ１３として許容される所定の上限値を超えると、すなわちＩＳ内の書き込み可
能なフリーブロックＦＢの数が閾値を下回ると、ＩＳ１３からＭＳ１１へのデータ追い出
しおよびコンパクション処理が実行され、ＩＳ１３のブロック数は規定値に戻される。
【００５９】
ＩＳ１３では、トラック内の有効クラスタ数を使って以下のような、追い出し処理およ
びコンパクション処理を、実行する。
・トラックをトラック内の有効クラスタ数×有効クラスタ係数(トラックがＭＳ１１内
で無効トラックが存在する論理ブロックに存在するか否かによって重み付けされる数であ
り、存在したほうが存在しない場合より数が大きい)順にソートし、積の値が大きいトラ
ック２ｉ＋１個(２論理ブロック分)を集めて論理ブロックサイズの自然数倍にしてＭＳＩ
Ｂ１１ａに追い出す。
・有効クラスタ数が最も少ない２つの論理ブロックの合計有効クラスタ数が例えば、所
定の設定値である２ｋ個（１論理ブロック分）以上ある場合は、上のステップを繰り返す
(ＩＳ内の２つの論理ブロックから、フリーブロックＦＢを作れるようになるまで行うた
め)。
・有効クラスタ数の少ない論理ブロックから順にクラスタを２ｋ個集め、ＩＳ１３内で
コンパクションを行う。
なお、ここでは有効クラスタ数が最も少ない２つの論理ブロックを選択するとしたが、
この数は２つに限定されず、２つ以上の数であればよい。また、所定の設定値は、選択す
る論路ブロック数よりも１つ少ない論理ブロック数に収容可能なクラスタ数以下であれば
よい。
【００６０】
・メインストレージ領域（ＭＳ）１１
つぎに、ＭＳ１１について説明する。ＭＳ１１はトラック単位でデータの管理を行う。
ＭＳ１１に格納されたデータは、更新頻度が低いとみなすことができる。ＷＣ２１、ＦＳ
１２、ＩＳ１３からＭＳ１１に対してトラックデータのＣｏｐｙまたはＭｏｖｅが発生す
ると、そのトラックはＭＳＩＳ１１ａに割り当てられた論理ブロックに対して書き込まれ
る。一方で、トラック中の一部のデータ（クラスタ）のみがＷＣ等から書き込まれるよう
な場合には、既存のＭＳ中のトラックデータと新しいデータをマージして新しいトラック
データを作った上でＭＳＩＢ１１ａに書き込む、後述する受動マージが行われる。ＭＳ１
１内に無効トラックが蓄積し、ＭＳ１１に割り当てられている論理ブロックの個数がＭＳ
１１として許容されるブロック数の上限値を越えるような状況が発生すると、コンパクシ
ョン処理を行って、無効なフリーブロックＦＢを作る。
【００６１】
ＭＳ１１のコンパクション処理は、例えば、論理ブロック内の有効トラック数のみに注
目した以下の方法を実施する。
・有効トラックが少ない論理ブロックから順番に、無効トラックを合わせることによっ
て無効なフリーブロックＦＢが作れるようになるまで選択する。
・選択した論理ブロックに収容されたトラックを、ＷＣ２１、ＦＳ１２、ＩＳ１３内の
データと統合する受動マージを行いながらコンパクションを実行する。
・２ｉトラック統合できた論理ブロックは、ＴＦＳ１１ｂに出力し（２ｉトラックＭＳ
コンパクション）、２ｉトラックに満たない個数のトラックは、ＭＳＩＢ１１ａに出力し
て（２ｉトラック未満コンパクション）、より多くの無効なフリーブロックＦＢを作る。
【００６２】
ＴＦＳ１１ｂは、トラック単位でデータを管理されるＦＩＦＯである。ＴＦＳ１１ｂは
、ここを通過しているデータは、後段のＭＳ１１よりも更新頻度が高いとみなすためのバ
ッファである。すなわち、ＴＦＳ１１ｂのＦＩＦＯ構造においては、ＦＩＦＯ中を通過中
の有効トラック（最新トラック）は、ホストからの同じアドレスに対する再書き込みがあ
った場合無効化されるので、ＴＦＳ１１ｂを通過中のトラックは、ＴＦＳ１１ｂからＭＳ
１１に追い出されたトラックよりも、更新頻度が高いとみなすことができる。
【００６３】
図８は、データ管理部１２０が図５および図６に示した各構成要素を制御管理するため
の管理テーブルを示すものである。データ管理部１２０は、前述したように、ＡＴＡコマ
ンド処理部１２１とＮＡＮＤメモリ１０とをブリッジする機能を有し、ＤＲＡＭ２０に記
憶したデータの管理を行うＤＲＡＭ層管理部１２０ａと、ＮＡＮＤメモリ１０に記憶した
データの管理を行う論理ＮＡＮＤ層管理部１２０ｂと、ＮＡＮＤメモリ１０を物理記憶デ
バイスとして管理する物理ＮＡＮＤ層管理部１２０ｃとから構成される。ＲＣクラスタ管
理テーブル２３、ＷＣトラック管理テーブル２４、ＷＣクラスタ管理テーブル２５は、Ｄ
ＲＡＭ層管理部１２０ａにより制御される。トラック管理テーブル３０、ＦＳ／ＩＳ管理
テーブル４０、ＭＳ論理ブロック管理テーブル３５、ＦＳ／ＩＳ論理ブロック管理テーブ
ル４２、ＦＳ／ＩＳ内クラスタ管理テーブル４４は、論理ＮＡＮＤ層管理部１２０ｂによ
り管理される。論物変換テーブル５０は、物理ＮＡＮＤ層管理部１２０ｃにより管理され
る。
【００６４】
ＲＣ２２は、逆引きテーブルであるＲＣクラスタ管理テーブル２３によって管理される
。逆引きテーブルでは、記憶デバイスの位置からその位置に記憶されている論理アドレス
を検索することができる。ＷＣ２１は、逆引きテーブルであるＷＣクラスタ管理テーブル
２５および正引きテーブルであるＷＣトラック管理テーブル２４によって管理される。正
引きテーブルでは、論理アドレスからその論理アドレスに対応するデータが存在する記憶
デバイス位置を検索することができる。
【００６５】
ＮＡＮＤメモリ１０内のＦＳ１２（ＦＳＩＢ１２ａ）、ＩＳ１３、ＭＳ１１（ＴＦＳ１
１ｂ、ＭＳＩＢ１１ａ）は、トラック管理テーブル３０、ＦＳ／ＩＳ管理テーブル４０、
ＭＳ論理ブロック管理テーブル３５、ＦＳ／ＩＳ論理ブロック管理テーブル４２、ＦＳ／
ＩＳ内クラスタ管理テーブル４４によってその論理アドレスが管理される。また、ＮＡＮ
Ｄメモリ１０内のＦＳ１２（ＦＳＩＢ１２ａ）、ＩＳ１３、ＭＳ１１（ＴＦＳ１１ｂ、Ｍ
ＳＩＢ１１ａ）は、論物変換テーブル５０によって論理アドレスと物理アドレスとの変換
が行われる。これらの各管理テーブルは、ＮＡＮＤメモリ１０上の領域に記憶されており
、ＳＳＤ１００の初期化時にＮＡＮＤメモリ１０からＤＲＡＭ２０上に読み込まれて、使
用される。
【００６６】
・ＲＣクラスタ管理テーブル２３（逆引き）
まず、図９を用いてＲＣクラスタ管理テーブル２３について説明する。ＲＣ２２は、前
述したように、論理クラスタアドレスＬＳＢ（ｋ−ｉ）ビットでインデックスされるｎ-w
ayセットアソシアティブ方式で管理されている。ＲＣクラスタ管理テーブル２３は、ＲＣ
（クラスタサイズ×ｍ-line×ｎ-way）２２の各エントリのタグを管理するためのテーブ
ルであり、各タグは、複数ビットの状態フラグ２３ａと、論理トラックアドレス２３ｂに
よって構成されている。状態フラグ２３ａには、当該エントリを使用しても良いか否か（
有効／無効）を示すValidビットの他に、当該エントリがＮＡＮＤメモリ１０からの読み
出し待ちか否かを示すビット、当該エントリがＡＴＡコマンド処理部１２１への読み出し
待ちか否かを示すビットなどが含まれる。ＲＣクラスタ管理テーブル２３は、ＤＲＡＭ２
０上のタグ記憶位置からＬＢＡに一致する論理トラックアドレスを検索する逆引きテーブ
ルとして機能する。
【００６７】
・ＷＣクラスタ管理テーブル２５（逆引き）
つぎに、図１０を用いてＷＣクラスタ管理テーブル２５について説明する。ＷＣ２１は
、前述したように、論理クラスタアドレスＬＳＢ（ｋ−ｉ）ビットでインデックスされる
ｎ-wayセットアソシアティブ方式で管理されている。ＷＣクラスタ管理テーブル２５は、
ＷＣ（クラスタサイズ×ｍ-line×ｎ-way）２１の各エントリのタグを管理するためのテ
ーブルであり、各タグは、複数ビットの状態フラグ２５ａと、セクタ位置ビットマップ２
５ｂと、論理トラックアドレス２５ｃによって構成されている。
【００６８】
状態フラグ２５ａには、当該エントリを使用しても良いか否か（有効／無効）を示すVa
lidビットの他に、当該エントリがＮＡＮＤメモリ１０への追い出し待ちか否かを示すビ
ット、当該エントリがＡＴＡコマンド処理部からの書き込み待ちか否かを示すビットなど
が含まれる。セクタ位置ビットマップ２５ｂは、１クラスタに含まれる２（ｌ−ｋ）セク
タのうちのどのセクタに有効なデータを保持しているかを２（ｌ−ｋ）ビットに展開して
示すものである。このセクタ位置ビットマップ２５ｂによって、ＷＣ２１において、ＬＢ
Ａと同じセクタ単位の管理を行うことができる。ＷＣクラスタ管理テーブル２５は、ＤＲ
ＡＭ２０上のタグ記憶位置からＬＢＡに一致する論理トラックアドレスを検索する逆引き
テーブルとして機能する。
【００６９】
・ＷＣトラック管理テーブル２４（正引き）
つぎに、図１１を用いてＷＣトラック管理テーブル２４について説明する。ＷＣトラッ
ク管理テーブル２４は、ＷＣ２１上に格納されているクラスタをトラック単位でまとめた
情報を管理するものであり、ＦＩＦＯ的な機能を有するリンクドリスト構造によってトラ
ック間のＷＣ２１に登録された順序（ＬＲＵ）を表現している。なお、ＷＣ２１で最後に
更新された順序によってＬＲＵを表現するようにしてもよい。各リストのエントリは、論
理トラックアドレス２４ａ、当該論理トラックアドレスに含まれるＷＣ２１中の有効クラ
スタ数２４ｂ、way-lineビットマップ２４ｃおよび次のエントリへのポインタを示すnext
ポインタ２４ｄから構成されている。ＷＣトラック管理テーブル２４は、論理トラックア
ドレス２４ａから所要情報を得るので、正引きテーブルとして機能する。
【００７０】
way-lineビットマップ２４ｃは、ＷＣ２１中で当該論理トラックアドレスに含まれる有
効クラスタがＷＣ２１中のｍ×ｎのエントリ中のどのエントリに格納されているか示すマ
ップ情報であり、有効クラスタが格納されているエントリではValidビットが”１”にな
っている。このway-lineビットマップ２４ｃは、例えば、（１ビット（Valid）＋log2ｎ
ビット（ｎ-way））×ｍビット（ｍ-line）で構成されている。ＷＣトラック管理テーブ
ル２４はリンクドリスト構造を有しており、ＷＣ２１中に存在する論理トラックアドレス
に関する情報のみがエントリされている。
【００７１】
・トラック管理テーブル３０（正引き）
つぎに、図１２を用いてトラック管理テーブル３０について説明する。トラック管理テ
ーブル３０は、論理トラックアドレス単位でＭＳ１１上の論理的なデータ位置を管理する
ためのテーブルであり、クラスタ単位でＦＳ１２やＩＳ１３にデータが保持されている場
合には、それらに関する基本情報と、詳細情報へのポインタも保持している。論理トラッ
クアドレス３０ａをインデックスとした配列形式で構成される。論理トラックアドレス３０ａをインデックスとした各エントリは、クラスタビットマップ３０ｂ、論理ブロックＩＤ３０ｃ＋論理ブロック内トラック位置３０ｄ、クラスタテーブルポインタ３０ｅ、ＦＳクラスタ数３０ｆ、ＩＳクラスタ数３０ｇなどの情報で構成されている。トラック管理テーブル３０は、論理トラックアドレスをインデックスとして、その論理トラックアドレスに対応する論理トラックが記憶されている論理ブロックＩＤ（記憶デバイス位置に対応）などの所要情報を得るので、正引きテーブルとして機能する。
【００７２】
クラスタビットマップ３０ｂは、１つの論理トラックアドレス範囲に属する２（ｋ−ｉ
）個のクラスタをクラスタアドレス昇順に例えば８分割したビットマップであり、８個の
各ビットは、２（ｋ−ｉ−３）個のクラスタアドレスに対応するクラスタがＭＳ１１に存
在するか、ＦＳ１２もしくはＩＳ１３に存在するかを示している。ビットが“０”の場合
は、その検索対象のクラスタは確実にＭＳ１１内に存在することを示し、ビットが“１”
の場合は、そのクラスタはＦＳ１２もしくはＩＳ１３に存在する可能性があることを示し
ている。
【００７３】
論理ブロックＩＤ３０ｃは、当該論理トラックアドレスに対応する論理トラックが記憶
されている論理ブロックＩＤを識別するための情報である。論理ブロック内トラック位置
３０ｄは、論理ブロックＩＤ３０ｃで指定された論理ブロック中における当該論理トラッ
クアドレス（３０ａ）に対応するトラックの記憶位置を示すものである。１論理ブロック
は最大２ｉ個の有効トラックで構成されるので、論理ブロック内トラック位置３０ｄは、
ｉビットで２ｉ個のトラック位置を識別する。
【００７４】
クラスタテーブルポインタ３０ｅは、リンクドリスト構造を有するＦＳ／ＩＳ管理テー
ブル４０の各リストの先頭エントリへのポインタである。クラスタビットマップ３０ｂの
検索で、当該クラスタがＦＳ１２／ＩＳ１３に存在する可能性があることを示していた場
合、クラスタテーブルポインタ３０ｅを用いてＦＳ／ＩＳ管理テーブル４０の検索を実行
する。ＦＳクラスタ数３０ｆは、ＦＳ１２内に存在する有効クラスタ数を示している。Ｉ
Ｓクラスタ数３０ｇは、ＩＳ１３内に存在する有効クラスタ数を示している。
【００７５】
・ＦＳ／ＩＳ管理テーブル４０（正引き）
つぎに、図１３を用いてＦＳ／ＩＳ管理テーブル４０について説明する。ＦＳ／ＩＳ管
理テーブル４０は、論理クラスタ単位でＦＳ１２（ＦＳＩＢ１２ａも含む）もしくはＩＳ
１３に保持されているデータの位置を管理するためのテーブルである。図１３に示すよう
に、論理トラックアドレス毎に独立したリンクドリスト形式で構成され、各リストの先頭
エントリへのポインタは、前述したように、トラック管理テーブル３０のクラスタテーブ
ルポインタ３０ｅのフィールドに保持されている。図１３では、２つの論理トラックアド
レス分のリンクドリストが示されている。各エントリは、論理クラスタアドレス４０ａ、
論理ブロックＩＤ４０ｂ、論理ブロック内クラスタ位置４０ｃ、ＦＳ／ＩＳブロックＩＤ
４０ｄ、nextポインタ４０ｅから構成されている。ＦＳ／ＩＳ管理テーブル４０は、論理
クラスタアドレス４０ａから、その論理クラスタアドレスに対応する論理クラスタが記憶
されている論理ブロックＩＤ４０ｂ、論理ブロックン内クラスタ位置４０ｃ（記憶デバイ
ス位置に対応）などの所要情報を得るので、正引きテーブルとして機能する。
【００７６】
論理ブロックＩＤ４０ｂは、当該論理クラスタアドレス４０ａに対応する論理クラスタ
が記憶されている論理ブロックＩＤを識別するための情報である。論理ブロック内クラス
タ位置４０ｃは、論理ブロックＩＤ４０ｂで指定された論理ブロック中における当該論理
クラスタアドレス４０ａに対応するクラスタの記憶位置を示すものである。１論理ブロッ
クは最大２ｋ個の有効クラスタで構成されるので、論理ブロック内クラスタ位置４０ｃは
、ｋビットで２ｋ位置を識別する。ＦＳ／ＩＳブロックＩＤ４０ｄは、後述するＦＳ／Ｉ
Ｓ論理ブロック管理テーブル４２のインデックスであるＦＳ／ＩＳブロックＩＤが登録さ
れている。ＦＳ／ＩＳブロックＩＤは、ＦＳ１２またはＩＳ１３に所属する論理ブロック
を識別するための情報であり、このＦＳ／ＩＳ管理テーブル４０でのＦＳ／ＩＳブロック
ＩＤ４０ｄは、後述するＦＳ／ＩＳ論理ブロック管理テーブル４２とのリンクのために登
録されている。nextポインタ４０ｅは、論理トラックアドレス毎にリンクされる同じリス
ト内の次のエントリへのポインタを示している。
【００７７】
・ＭＳ論理ブロック管理テーブル３５（逆引き）
つぎに、図１４を用いてＭＳ論理ブロック管理テーブル３５について説明する。ＭＳ論
理ブロック管理テーブル３５は、ＭＳ１１に用いられている論理ブロックに関する情報（
どの論理トラックが記憶されているか、追記可能か等）を一元管理するためのテーブルで
ある。なお、ＭＳ論理ブロック管理テーブル３５には、ＦＳ１２（ＦＳＩＢ１２も含む）
、ＩＳ１３に所属する論理ブロックに関する情報も登録されている。ＭＳ論理ブロック管
理テーブル３５は、論理ブロックＩＤ３５ａをインデックスとした配列形式で構成され、
エントリ数は１２８ＧＢのＮＡＮＤメモリ１０の場合は、３２Ｋエントリまで持つことが
できる。各エントリは、２ｉトラック分のトラック管理ポインタ３５ｂ、有効トラック数３５ｃ、書き込み可能先頭トラック３５ｄ、Validフラグ３５ｅから構成されている。このＭＳ論理ブロック管理テーブル３５は、記憶デバイス位置に対応する論理ブロックＩＤ３５ａから、この論理ブロックに記憶されている論理トラックアドレスなどの所要情報を得るので、逆引きテーブルとして機能する。
【００７８】
トラック管理ポインタ３５ｂは、論理ブロックＩＤ３５ａで指定される当該論理ブロッ
ク内の２ｉ個のトラック位置毎に対応する論理トラックアドレスを保持する。この論理トラックアドレスを用いて、論理トラックアドレスをインデックスとするトラック管理テーブル３０を検索することができる。有効トラック数３５ｃは、論理ブロックＩＤ３５ａで指定される当該論理ブロックに記憶されているトラックのうちの有効なものの個数（最大２ｉ個）を示している。書き込み可能先頭トラック位置３５ｄは、論理ブロックＩＤ３５ａで指定される当該論理ブロックが追記中のブロックであった場合における追記可能なトラック先頭位置（０〜２ｉ−１、追記終了時は２ｉ）を示している。Validフラグ３５ｅは、当該論理ブロックエントリがＭＳ１１（ＭＳＩＢ１１ａも含む）として管理されている場合に“１”である。
【００７９】
・ＦＳ／ＩＳ論理ブロック管理テーブル４２（逆引き）
つぎに、図１５を用いてＦＳ／ＩＳ論理ブロック管理テーブル４２について説明する。
ＦＳ／ＩＳ論理ブロック管理テーブル４２は、ＦＳ／ＩＳブロックＩＤ４２ａをインデッ
クスとした配列形式で構成され、ＦＳ１２またはＩＳ１３として利用されている論理ブロ
ックに関する情報（論理ブロックＩＤとの対応、ＦＳ／ＩＳ内クラスタ管理テーブル４４
へのインデックス、追記可能か等）を管理するためのテーブルである。ＦＳ／ＩＳ論理ブ
ロック管理テーブル４２は、主にＦＳ／ＩＳ管理テーブル４０中のＦＳ／ＩＳブロックＩ
Ｄ４０ｄを用いてアクセスされる。各エントリは、論理ブロックＩＤ４２ｂ、ブロック内
クラスタテーブル４２ｃ、有効クラスタ数４２ｄ、書き込み可能先頭ページ４２ｅ、Vali
dフラグ４２ｆから構成されている。このＭＳ論理ブロック管理テーブル３５は、記憶デ
バイス位置に対応するＦＳ／ＩＳブロックＩＤ４２ａから、この論理ブロックに記憶され
ている論理クラスタなどの所要情報を得るので、逆引きテーブルとして機能する。
【００８０】
論理ブロックＩＤ４２ｂには、ＭＳ論理ブロック管理テーブル３５に登録された論理ブ
ロックの中で、ＦＳ１２（ＦＳＩＢ１２も含む）、ＩＳ１３に所属している論理ブロック
に対応する論理ブロックＩＤが登録される。ブロック内クラスタテーブル４２ｃには、論
理ブロック中の各クラスタ位置にどの論理クラスタアドレスで指定される論理クラスタが
記録されているかを示す後述するＦＳ／ＩＳ内クラスタ管理テーブル４４へのインデック
スが登録される。有効クラスタ数４２ｄは、ＦＳ／ＩＳブロックＩＤ４２ａで指定される
当該論理ブロックに記憶されているクラスタのうちの有効なものの個数（最大２ｋ個）を
示している。書き込み可能先頭ページ位置４２ｅは、ＦＳ／ＩＳブロックＩＤ４２ａで指
定される当該論理ブロックが追記中のブロックであった場合における追記可能な先頭ペー
ジ位置（０〜２ｊ−１、追記終了時は２ｉ）を示している。Validフラグ４２ｆは、この
論理ブロックエントリがＦＳ１２（ＦＳＩＢ１２も含む）またはＩＳ１３として管理され
ている場合に“１”である。
【００８１】
・ＦＳ／ＩＳ内クラスタ管理テーブル４４（逆引き）
つぎに、図１６を用いてＦＳ／ＩＳ内クラスタ管理テーブル４４について説明する。Ｆ
Ｓ／ＩＳ内クラスタ管理テーブル４４は、ＦＳ１２もしくはＩＳ１３として利用されてい
る論理ブロック中の各クラスタ位置にどの論理クラスタが記録されているのかを示すテー
ブルである。１論理ブロックあたり、２ｊページ×２（ｋ−ｊ）クラスタ＝２ｋ個のエン
トリを持ち、当該論理ブロック内のクラスタ位置の０番目〜２ｋ−１番目に対応する情報
が連続領域に配置される。さらにこの２ｋ個の情報を含むテーブルがＦＳ１２およびＩＳ
１３に所属する論理ブロック数（Ｐ個）分だけ保持されており、ＦＳ／ＩＳ論理ブロック
管理テーブル４２のブロック内クラスタテーブル４２ｃは、このＰ個のテーブルに対する
位置情報（ポインタ）となっている。連続領域に配される各エントリ４４ａの位置は、１
論理ブロック中のクラスタ位置を示し、また各エントリ４４ａの内容は、当該クラスタ位
置にどの論理クラスタが記憶されているかが識別できるように、ＦＳ／ＩＳ管理テーブル
４０で管理される該当論理クラスタアドレスを含むリストへのポインタが登録されている
。すなわち、エントリ４４ａは、リンクドリストの先頭を指し示すのではなく、リンクド
リスト中の該当論理クラスタアドレスを含む１つのリストへのポインタが登録されている
。
【００８２】
・論物変換テーブル５０（正引き）
つぎに、図１７を用いて論物変換テーブル５０について説明する。論物変換テーブル５
０は、論理ブロックＩＤ５０ａをインデックスとした配列形式で構成され、エントリ数は
、１２８ＧＢのＮＡＮＤメモリ１０の場合は、最大３２Ｋエントリまで持つことができる
。論物変換テーブル５０は、論理ブロックＩＤと物理ブロックＩＤとの変換、寿命に関す
る情報を管理するためのテーブルである。各エントリは、物理ブロックアドレス５０ｂ、
消去回数５０ｃ、読み出し回数５０ｄから構成される。この論物変換テーブル５０は、論
理ブロックＩＤから物理ブロックＩＤ（物理ブロックアドレス）などの所要情報を得るの
で、正引きテーブルとして機能する。
【００８３】
物理ブロックアドレス５０ｂは、１つの論理ブロックＩＤ５０ａに所属する８個の物理
ブロックＩＤ（物理ブロックアドレス）を示している。消去回数５０ｃは、当該論理ブロ
ックＩＤの消去回数を示している。バッドブロック（ＢＢ）管理は、物理ブロック（５１
２ＫＢ）単位に行われるが、消去回数の管理は、３２ビット倍速モードによる１論理ブロ
ック（４ＭＢ）単位に管理される。読み出し回数５０ｄは、当該論理ブロックＩＤの読み
出し回数を示している。消去回数５０ｃは、例えば、ＮＡＮＤ型フラッシュメモリの書き
換え回数を平準化するウェアレベリング処理で利用することが可能である。読み出し回数
５０ｄは、リテンション特性の劣化した物理ブロックに保持されるデータの再書き込みを
行うリフレッシュ処理で利用することが可能である。
【００８４】
図８に示した管理テーブルを管理対象毎にまとめると次のようになる。
ＲＣ管理：ＲＣクラスタ管理テーブル
ＷＣ管理：ＷＣクラスタ管理テーブル、ＷＣトラック管理テーブル
ＭＳ管理：トラック管理テーブル３０、ＭＳ論理ブロック管理テーブル３５
ＦＳ/ＩＳ管理：トラック管理テーブル３０、ＦＳ/ＩＳ管理テーブル４０、ＭＳ論理ブ
ロック管理テーブル３５、ＦＳ/ＩＳ論理ブロック管理テーブル４２、ＦＳ/ＩＳ内クラス
タ管理テーブル４４
【００８５】
なお、ＭＳ構造管理テーブル（図示せず）において、ＭＳ１１，ＭＳＩＢ１１ａ、ＴＦ
Ｓ１１ｂを含めたＭＳ領域の構造を管理しており、具体的には、ＭＳ１１、ＭＳＩＢ１１
ａ、ＴＦＳ１１ｂに割り当てた論理ブロックなどを管理している。また、ＦＳ/ＩＳ構造
管理テーブル（図示せず）において、ＦＳ１２、ＦＳＩＢ１２ａ、ＩＳ１３を含めたＦＳ
/ＩＳ領域の構造を管理しており、具体的には、ＦＳ１２、ＦＳＩＢ１２ａ、ＩＳ１３に
割り当てた論理ブロックなどを管理している。
【００８６】
・Read処理
つぎに、図１８に示すフローチャートを参照して、読み出し処理について説明する。Ａ
ＴＡコマンド処理部１２１から、Readコマンドおよび読み出しアドレスとしてのＬＢＡが
入力されると、データ管理部１２０は、図９に示したＲＣクラスタ管理テーブル２３と図
１０に示したＷＣクラスタ管理テーブル２５を検索する（ステップＳ１００）。具体的に
は、ＬＢＡのクラスタアドレスのＬＳＢ（ｋ−ｉ）ビット（図７参照）に対応するlineを
ＲＣクラスタ管理テーブル２３とＷＣクラスタ管理テーブル２５から選択し、選択したli
neの各wayにエントリされている論理トラックアドレス２３ｂ、２５ｃをＬＢＡのトラッ
クアドレスと比較し（ステップＳ１１０）、一致したwayが存在している場合は、キャッ
シュヒットとし、ヒットしたＲＣクラスタ管理テーブル２３またはＷＣクラスタ管理テー
ブル２５の該当line、該当wayに対応するＷＣ２１またはＲＣ２２のデータを読み出して
、ＡＴＡコマンド処理部１２１に送る（ステップＳ１１５）。
【００８７】
データ管理部１２０は、ＲＣ２２またはＷＣ２１でヒットしなかった場合は（ステップ
Ｓ１１０）、検索対象のクラスタがＮＡＮＤメモリ１０のどこに格納されているかを検索
する。データ管理部１２０は、まず、図１２に示したトラック管理テーブル３０を検索す
る（ステップＳ１２０）。トラック管理テーブル３０は、論理トラックアドレス３０ａで
インデックスされているため、ＬＢＡで指定された論理トラックアドレスに一致する論理
トラックアドレス３０ａのエントリだけをチェックする。
【００８８】
まず、チェックしたいＬＢＡの論理クラスタアドレスに基づいてクラスタビットマップ
３０ｂから対応するビットを選択する。対応するビットが“０”を示していれば、そのク
ラスタは確実にＭＳ内に最新のデータが存在していることを意味する（ステップＳ１３０
）。この場合は、このトラックが存在する論理ブロックＩＤおよびトラック位置を、同じ
論理トラックアドレス３０ａのエントリ中の論理ブロックＩＤ３０ｃと論理ブロック内ト
ラック位置３０ｄから得て、さらにＬＢＡのクラスタアドレスのＬＳＢ（ｋ−ｉ）ビット
を利用して、トラック位置からのオフセットを算出することで、ＮＡＮＤメモリ１０内の
当該クラスタアドレスに対応するクラスタデータが格納されている位置を算出することが
できる。具体的には、論理ＮＡＮＤ層管理部１２０ｂでは、上記のようにしてトラック管
理テーブル３０から取得した論理ブロックＩＤ３０ｃと論理ブロック内トラック位置３０
ｄと、ＬＢＡの論理クラスタアドレスのＬＳＢ（ｋ−ｉ）ビットを物理ＮＡＮＤ層管理部
１２０ｃに与える。
【００８９】
物理ＮＡＮＤ層管理部１２０ｃでは、論理ブロックＩＤ３０ｃに対応する物理ブロック
アドレス（物理ブロックＩＤ）を、論理ブロックＩＤをインデックスとしている図１７に
示す論物変換テーブル５０から取得し（ステップＳ１６０）、さらに取得した物理ブロッ
クＩＤ中のトラック位置（トラック先頭位置）を論理ブロック内トラック位置３０ｄから
算出し、さらにＬＢＡのクラスタアドレスのＬＳＢ（ｋ−ｉ）ビットから、前記算出した
物理ブロックＩＤ中のトラック先頭位置からのオフセットを算出することで、物理ブロッ
ク中のクラスタデータを取得することができる。ＮＡＮＤメモリ１０のＭＳ１１から取得
されたクラスタデータは、ＲＣ２２を介してＡＴＡコマンド処理部１２１に送られる（ス
テップＳ１８０）。
【００９０】
一方、ＬＢＡのクラスタアドレスに基づくクラスタビットマップ３０ｂの検索で、対応
するビットが“１”を示していた場合は、そのクラスタがＦＳ１２またはＩＳ１３に格納
されている可能性がある（ステップＳ１３０）。この場合は、トラック管理テーブル３０
の該当する論理トラックアドレス３０ａのエントリ中のクラスタテーブルポインタ３０ｅ
のエントリを取り出し、このポインタを用いてＦＳ／ＩＳ管理テーブル４０の該当する論
理トラックアドレスに対応するリンクドリストを順次検索する（ステップＳ１４０）。具
体的には、該当する論理トラックアドレスのリンクドリスト中のＬＢＡの論理クラスタア
ドレスに一致する論理クラスタアドレス４０ａのエントリを検索し、一致する論理クラス
タアドレス４０ａのエントリが存在した場合は（ステップＳ１５０）、一致したリスト中
の論理ブロックＩＤ４０ｂおよび論理ブロック内クラスタ位置４０ｃを取得し、前述と同
様にして、論物変換テーブル５０を用いて物理ブロック中のクラスタデータを取得する（
ステップＳ１６０、Ｓ１８０）。具体的には、取得した論理ブロックＩＤに対応する物理
ブロックアドレス（物理ブロックＩＤ）を、論物変換テーブル５０から取得し（ステップ
Ｓ１６０）、さらに取得した物理ブロックＩＤ中のクラスタ位置を、論理ブロック内クラ
スタ位置４０ｃのエントリから取得した論理ブロック内クラスタ位置から算出することで
、物理ブロック中のクラスタデータを取得することができる。ＮＡＮＤメモリ１０のＦＳ
１２またはＩＳ１３から取得されたクラスタデータは、ＲＣ２２を介してＡＴＡコマンド
処理部１２１に送られる（ステップＳ１８０）。
【００９１】
このＦＳ／ＩＳ管理テーブル４０の検索によって、検索対象のクラスタが存在しなかっ
た場合は（ステップＳ１５０）、再度トラック管理テーブル３０のエントリを検索してＭ
Ｓ１１上の位置を確定する（ステップＳ１７０）。
【００９２】
・Write処理
つぎに、図１９に示すフローチャートを参照して、書き込み処理について説明する。Ｆ
ＵＡ（ＤＲＡＭキャッシュをバイパスしてＮＡＮＤへの直接書き込みを行う）でないWrit
eコマンドにより書き込まれたデータは必ず一旦ＷＣ２１上に格納され、その後条件に応
じてＮＡＮＤメモリ１０に対して書き込まれることになる。書き込み処理では、追い出し
処理、コンパクション処理が発生する可能性がある。この実施の形態では、書き込み処理
を、ライトキャッシュフラッシュ処理（以下ＷＣＦ処理）と、クリーンインプットバッフ
ァ処理（以下ＣＩＢ処理）との２ステージに大きく分割している。ステップＳ３００から
ステップＳ３２０までは、ＡＴＡコマンド処理部１２１からのWrite要求からＷＣＦ処理
までを示しており、ステップＳ３３０〜最終ステップまでがＣＩＢ処理を示している。
【００９３】
ＷＣＦ処理は、ＷＣ２１にあるデータをＮＡＮＤメモリ１０（ＦＳ１２のＦＳＩＢ１２
ａまたはＭＳ１１のＭＳＩＢ１１ａ）にｃｏｐｙする処理であり、ＡＴＡコマンド処理部
１２１からのWrite要求もしくはCache Flush要求単体は、この処理のみで完結することが
できる。これにより処理が開始されたＡＴＡコマンド処理部１２１のWrite要求の処理遅
延を最大でもＷＣ２１の容量分のＮＡＮＤメモリ１０への書き込み時間に限定することが
できるようになる。
【００９４】
ＣＩＢ処理は、ＷＣＦ処理によって書き込まれたＦＳＩＢ１２ａのデータをＦＳ１２に
Ｍｏｖｅする処理と、ＷＣＦ処理によって書き込まれたＭＳＩＢ１１ａのデータをＭＳ１
１にＭｏｖｅする処理とを含む。ＣＩＢ処理を開始すると、連鎖的にＮＡＮＤメモリ１０
内の各構成要素（ＦＳ１２、ＩＳ１３、ＭＳ１１など）間のデータ移動やコンパクション
処理が発生する可能性があり、処理全体に要する時間は状態によって大きく変化する。
【００９５】
まず、ＷＣＦ処理の詳細について説明する。ＡＴＡコマンド処理部１２１から、Write
コマンドおよび書き込みアドレスとしてのＬＢＡが入力されると、ＤＲＡＭ層管理部１２
０は、図１０に示したＷＣクラスタ管理テーブル２５を検索する（ステップＳ３００，Ｓ
３０５）。ＷＣ２１の状態は、図１０に示したＷＣクラスタ管理テーブル２５の状態フラ
グ２５ａ（例えば３ビット）によって規定されている。状態フラグ２５ａは、最も典型的
には、Invalid（使用可能）→ＡＴＡからの書き込み待ち→Valid（使用不可）→ＮＡＮＤ
への追い出し待ち→Invalid（使用可能）という順に状態が遷移していく。まず、ＬＢＡ
のクラスタアドレスＬＳＢ（ｋ−ｉ）ビットから書き込み先のlineを決定し、決定したli
neのｎ個のwayを検索する。決定したlineのｎ個のway中に、入力されたＬＢＡと同じ論理
トラックアドレス２５ｃが格納されている場合は（ステップＳ３０５）、このエントリに
上書きするのでこのエントリをクラスタ書き込み用に確保する（Valid（使用不可）→Ａ
ＴＡからの書き込み待ち）。
【００９６】
そして、ＤＲＡＭ層管理部１２０ａは、該当エントリに対応するＤＲＡＭアドレスをＡ
ＴＡコマンド処理部１２１に通知する。ＡＴＡコマンド処理部１２１による書き込みが終
了すると、ＷＣクラスタ管理テーブル２５の該当エントリの状態フラグ２５ａをValid（
使用不可）にし、さらにセクタ位置ビットマップ２５ｂおよび論理トラックアドレス２５
ｃの欄に所要のデータを登録する。また、ＷＣトラック管理テーブル２４を更新する。具
体的には、ＷＣトラック管理テーブル２４の各リスト中に既に登録済みの論理トラックア
ドレス２４ａと同じＬＢＡアドレスが入力された場合は、該当するリストのＷＣクラスタ
数２４ｂ、way−lineビットマップ２４ｃを更新するとともに、当該リストが最新のリス
トとなるようにnextポインタ２４ｄを変更する。また、ＷＣトラック管理テーブル２４の
各リスト中に登録済みの論理トラックアドレス２４ａと異なるＬＢＡアドレスが入力され
た場合は、新たに新しい論理トラックアドレス２４ａ、ＷＣクラスタ数２４ｂ、way−lin
eビットマップ２４ｃ、nextポインタ２４ｄの各エントリを有するリストを作成し、最新
のリストとして登録する。以上のようなテーブル更新を行って、書き込み処理が完了する
（ステップＳ３２０）。
【００９７】
一方、決定したlineのｎ個のway中に、入力されたＬＢＡと同じ論理トラックアドレス
２５ｃが格納されていない場合は、ＮＡＮＤメモリへの追い出しが必要であるか否かを判
断する（ステップＳ３０５）。すなわち、まず、決定したline中の書き込み可能なwayが
最後のｎ個目のwayであるか否かを判断する。書き込み可能なwayとは、Invalid（使用可
能）の状態フラグ２５ａをもつwayかあるいはValid（使用不可）でかつＮＡＮＤへの追い
出し待ちの状態フラグ２５ａを持つwayである。状態フラグ２５ａが、ＮＡＮＤへの追い
出し待ちであるとは、追い出しが開始されて追い出しの終了待ちであることを意味する。
そして、書き込み可能なwayが最後のｎ個目のwayでない場合であって、かつ書き込み可能
なwayが、Invalid（使用可能）の状態フラグ２５ａをもつwayである場合は、このエント
リをクラスタ書き込み用に確保する（Invalid（使用可能）→ＡＴＡからの書き込み待ち
）。そして、該当エントリに対応するＤＲＡＭアドレスをＡＴＡコマンド処理部１２１に
通知し、ＡＴＡコマンド処理部１２１によって書き込みを実行させる。そして、前記同様
、ＷＣクラスタ管理テーブル２５およびＷＣトラック管理テーブル２４を更新する（ステ
ップＳ３２０）。
【００９８】
また、書き込み可能なwayが最後のｎ個目のwayでない場合であって、かつ書き込み可能
なwayが、Valid（使用不可）でかつＮＡＮＤへの追い出し待ちの状態フラグ２５ａを持つ
wayである場合は、このエントリをクラスタ書き込み用に確保する（Valid（使用不可）で
かつＮＡＮＤへの追い出し待ち→Valid（使用不可）でかつＮＡＮＤへの追い出し待ちか
つＡＴＡからの書き込み待ち）。そして、追い出しが終了すると、状態フラグ２５ａをＡ
ＴＡからの書き込み待ちにし、さらに、該当エントリに対応するＤＲＡＭアドレスをＡＴ
Ａコマンド処理部１２１に通知し、ＡＴＡコマンド処理部１２１によって書き込みを実行
させる。そして、前記同様、ＷＣクラスタ管理テーブル２５およびＷＣトラック管理テー
ブル２４を更新する（ステップＳ３２０）。
【００９９】
以上の処理は、ＡＴＡコマンド処理部１２１からからの書き込み要求が入力された際に
、追い出し処理をトリガしなくてもよい場合である。一方、この後の説明は、書き込み要
求が入力された時点後に、追い出し処理をトリガする場合である。ステップＳ３０５にお
いて、決定したline中の書き込み可能なwayが最後のｎ個目のwayである場合は、前述した
ＷＣ２１からＮＡＮＤメモリ１０へ追い出すデータの決定方法の（i）の箇所で説明した
条件、すなわち、
（i）  タグによって決定されたlineの書き込み可能なwayが最後の(本実施形態では、ｎ
個目の)空きwayだった場合、則ち最後の空きwayが使用される場合は、そのlineに登録さ
れたトラックのうちＬＲＵに基づいて最も古く更新されたトラックを追い出し確定する
に基づいて追い出すトラックすなわちＷＣ２１内エントリを選択する。
【０１００】
ＤＲＡＭ層管理部１２０ａは、以上の方針で追い出すトラックを決定すると、前述した
ように、その際追い出すのは同一トラックに含まれるＷＣ２１中の全クラスタであり、追
い出されるクラスタ量がトラックサイズの５０％を超えていれば、すなわち追い出し確定
トラックのうちＷＣ中に有効クラスタ数が２（ｋ−ｉ−１）個以上ある場合は、ＭＳＩＢ
１１ａへ追い出しを行い（ステップＳ３１０）、超えていなければ、すなわち追い出し確
定トラックのうちＷＣ中に有効クラスタ数が２（ｋ−ｉ−１）個未満である場合は、ＦＳ
ＩＢ１２ａへと追い出す（ステップＳ３１５）。ＷＣ２１からＭＳＩＢ１１ａへの追い出
し、ＷＣ２１からＦＳＩＢ１２ａへの追い出しの詳細は、後述する。選択された追い出し
エントリの状態フラグ２５ａは、Valid（使用不可）からＮＡＮＤメモリ１０への追い出
し待ちに移行される。
【０１０１】
この追い出し先の判定は、ＷＣトラック管理テーブル２４を用いて実行される。すなわ
ち、ＷＣトラック管理テーブル２４には、論理トラックアドレス毎に、有効なクラスタ数
を示すＷＣクラスタ数２４ｂのエントリが登録されており、このＷＣクラスタ数２４ｂの
エントリを参照することでＷＣ２１からの追い出し先を、ＦＳＩＢ１２ａ、ＭＳＩＢ１１
ａの何れにするかを決定する。また、way−lineビットマップ２４ｃに、当該論理トラッ
クアドレスに所属する全てのクラスタがビットマップ形式で登録されているので、追い出
しを行う際には、このway−lineビットマップ２４ｃを参照することで、容易に、追い出
すべき各クラスタのＷＣ２１での記憶位置を知ることができる。
【０１０２】
また、上記書き込み処理中または書き込み処理後、前述の下記条件、
（ii）ＷＣ２１に登録されているトラックの数が所定数を超えた場合、
が成立した場合も、上記同様にしてＮＡＮＤメモリ１０への追い出し処理を実行する。
【０１０３】
ＷＣ→ＭＳＩＢ（Ｃｏｐｙ）
つぎに、上記有効クラスタ数（有効クラスタ数が２（ｋ−ｉ−１）個以上）に基づく判
定によりＷＣ２１からＭＳＩＢ１１ａへの追い出しが発生したときは、前述したように、
次のような手順を実行する（ステップＳ３１０）。
１.ＷＣクラスタ管理テーブル２５を参照し、追い出しを行うクラスタに対応するタグ
中のセクタ位置ビットマップ２５ｂを参照し、セクタ位置ビットマップ２５ｂが全て“１
”でない場合は、ＮＡＮＤメモリ１０に含まれる同一クラスタ中のセクタとマージする、
後述のトラック内セクタ穴埋めを行う。また、トラック中のＷＣ２１内に存在しないクラ
スタについてはＮＡＮＤメモリ１０から読み出してマージする、受動マージ処理を実行す
る。
２．追い出し確定トラックが２ｉ個未満の場合、ＷＣ２１中のトラックの古いものから
２ｉ個になるまで２（ｋ−ｉ−１）個以上有効クラスタを持つ追い出し確定トラックを追
加する。
３．Ｃｏｐｙされるトラックが２ｉ個以上あれば、２ｉ個ずつを組として、ＭＳＩＢ１
１ａに対して論理ブロック単位に書き込みを行う。
４．２ｉ個組みに出来なかったトラックをＭＳＩＢ１１ａに対してトラック単位に書き
込みを行う。
５．Ｃｏｐｙ終了後に既にＦＳ、ＩＳ、ＭＳ上に存在していたクラスタ、トラックのう
ちコピーされたトラックに属するものを無効化する。
【０１０４】
このようなＷＣ２１からＭＳＩＢ１１ａへのＣｏｐｙ処理に伴う各管理テーブルの更新
処理について説明する。ＷＣクラスタ管理テーブル２５中の追い出されたトラックに所属
するＷＣ２１中の全クラスタに対応するエントリ中の状態フラグ２５ａはInvalidとされ
、この後これらエントリに対する書き込みが可能となる。また、ＷＣトラック管理テーブ
ル２４中の追い出されたトラックに対応するリストについては、例えば直前のリストのne
xtポインタ２４ｄが変更または削除されて、無効化される。
【０１０５】
一方、ＷＣ２１からＭＳＩＢ１１ａに対するトラック移動が発生すると、これに伴いト
ラック管理テーブル３０およびＭＳ論理ブロック管理テーブル３５が更新される。まず、
トラック管理テーブル３０のインデックスである論理トラックアドレス３０ａを検索する
ことで、移動されたトラックに対応する論理トラックアドレス３０ａが既に登録されてい
るか否かを判定する。既に登録されている場合は、該当インデックスのクラスタビットマ
ップ３０ｂ（ＭＳ１１側への移動であるので、該当ビットを全て“０”にする）、論理ブ
ロックＩＤ３０ｃ＋論理ブロック内トラック位置３０ｄのフィールドを更新する。移動さ
れたトラックに対応する論理トラックアドレス３０ａが未登録の場合は、該当する論理ト
ラックアドレス３０ａのエントリに対し、クラスタビットマップ３０ｂ、論理ブロックＩ
Ｄ３０ｃ＋論理ブロック内トラック位置３０ｄを登録する。また、トラック管理テーブル
３０の変更に応じて、ＭＳ論理ブロック管理テーブル３５における、論理ブロックＩＤ３
５ａ、該当トラック管理ポインタ３５ｂ、有効トラック数３５ｃ、書き込み可能先頭トラ
ック３５ｄなどのエントリを必要に応じて更新する。
【０１０６】
なお、他の領域（ＦＳ１２やＩＳ１３）等からＭＳ１１に対してトラック書き込みが発
生した場合、もしくはＭＳ１１内部のコンパクション処理によるＭＳ内トラック書き込み
が発生した場合、書き込み対象のトラックに含まれるＷＣ２１内有効クラスタも同時にＭ
Ｓに書き込まれる。ＷＣ２１からＭＳ１１への書き込みとしてこのような受動的マージも
存在する。そのような受動的マージが行われた場合は、それらのクラスタはＷＣ２１上か
ら削除（無効化）されることになる。
【０１０７】
ＷＣ→ＦＳＩＢ（Ｃｏｐｙ）
つぎに、上記有効クラスタ数（有効クラスタ数が２（ｋ−ｉ−１）個未満）に基づく判
定によりＷＣ２１からＦＳＩＢ１２ａへの追い出しが発生したときは、前述したように、
次のような手順を実行する。
１．ＷＣクラスタ管理テーブル２５における追い出しを行うクラスタに対応するタグ中
のセクタ位置ビットマップ２５ｂを参照し、セクタ位置ビットマップ２５ｂが全て“１”
でない場合は、ＮＡＮＤメモリ１０に含まれる同一クラスタ中のセクタとマージする、ク
ラスタ内セクタ穴埋めを行う。
２．ＷＣ内のトラックを古い順に辿って２（ｋ−ｉ−１）個未満の有効クラスタしか持
たないトラックからクラスタを取り出して行き、有効クラスタ数が２ｋ個になったらそれ
ら全クラスタをＦＳＩＢ１２ａに論理ブロック単位に書き込む。
３．２ｋ個見つからなかった場合には、有効クラスタ数が２（ｋ−ｉ−１）個未満の全
てのトラックを必要な論理ページ数分だけＦＳＩＢ１２ａに書き込む。
４．Ｃｏｐｙ終了後に既にＦＳ、ＩＳ上に存在していたクラスタのうちコピーされたの
と同じものを無効化する。
【０１０８】
このようなＷＣ２１からＦＳＩＢ１２ａへのＣｏｐｙ処理に伴う各管理テーブルの更新
処理について説明する。ＷＣクラスタ管理テーブル２５中の追い出されたトラックに所属
するＷＣ２１中の全クラスタに対応するエントリ中の状態フラグ２５ａはInvalidとされ
、この後これらエントリに対する書き込みが可能となる。また、ＷＣトラック管理テーブ
ル２４中の追い出されたトラックに対応するリストについては、例えば直前のリストのne
xtポインタ２４ｄが変更または削除されて、無効化される。一方、ＷＣ２１からＦＳＩＢ
１２ａに対するクラスタ移動が発生すると、これに伴いトラック管理テーブル３０のクラ
スタテーブルポインタ３０ｅ、ＦＳクラスタ数３０ｆなどを更新するとともに、ＦＳ／Ｉ
Ｓ管理テーブル４０の論理ブロックＩＤ４０ｂ、論理ブロック内クラスタ位置４０ｃなど
を更新する。なお、もともとＦＳ１２に存在していなかったクラスタについては、ＦＳ／
ＩＳ管理テーブル４０のリンクドリストへのリストが追加される。この更新に伴い、ＭＳ
論理ブロック管理テーブル３５、ＦＳ／ＩＳ論理ブロック管理テーブル４２、およびＦＳ
／ＩＳ内クラスタ管理テーブル４４の該当個所を更新する。
【０１０９】
ＣＩＢ処理
上記のようなＷＣＦ処理が終了すると、つぎに、論理ＮＡＮＤ層管理部１２０ｂは、Ｗ
ＣＦ処理によって書き込まれたＦＳＩＢ１２ａのデータをＦＳ１２にＭｏｖｅする処理と
、ＷＣＦ処理によって書き込まれたＭＳＩＢ１１ａのデータをＭＳ１１にＭｏｖｅする処
理などを含むＣＩＢ処理を実行する。ＣＩＢ処理を開始すると、前述したように、連鎖的
に各ブロック間のデータ移動やコンパクション処理が発生する可能性があり、処理全体に
要する時間は状態によって大きく変化する。このＣＩＢ処理においては、基本的には、先
ずＭＳ１１でのＣＩＢ処理が行われ（ステップＳ３３０）、つぎに、ＦＳ１２でのＣＩＢ
処理が行われ（ステップＳ３４０）、つぎに再びＭＳ１１でのＣＩＢ処理が行われ（ステ
ップＳ３５０）、つぎにＩＳ１３でのＣＩＢ処理が行われ（ステップＳ３６０）、最後に
再びＭＳ１１でのＣＩＢ処理が行われる（ステップＳ３７０）。なお、ＦＳ１２からＭＳ
ＩＢ１１ａへの追い出し処理、あるいはＦＳ１２からＩＳ１３への追い出し処理、あるい
はＩＳ１３からＭＳＩＢ１１ａへの追い出し処理の際に、手順にループが発生した場合は
、上記順番通りにならない場合もある。ＭＳ１１、ＦＳ１２およびＩＳ１３でのＣＩＢ処
理を別々に説明する。
【０１１０】
ＭＳ１１のＣＩＢ処理
まず、ＭＳ１１でのＣＩＢ処理について説明する（ステップＳ３３０）。ＷＣ２１、Ｆ
Ｓ１２、ＩＳ１３からＭＳ１１に対してトラックデータの移動が発生すると、そのトラッ
クデータはＭＳＩＢ１１ａに書き込まれる。ＭＳＩＢ１１ａへの書き込み完了後は、前述
したように、トラック管理テーブル３０を更新してトラックが配置される論理ブロックＩ
Ｄ３０ｃとブロック内トラック位置３０ｄなどを変更する（Ｍｏｖｅ）。ＭＳＩＢ１１ａ
に新たなトラックデータが書き込まれた場合、もともとＭＳ１１もしくはＴＦＳ１１ｂに
存在していたトラックデータは無効化される。この無効化処理は、ＭＳ論理ブロック管理
テーブル３５における古いトラック情報が保存されていた論理ブロックのエントリからト
ラックを無効化することで実現する。具体的には、ＭＳ論理ブロック管理テーブル３５の
該当エントリ中のトラック管理ポインタ３５ｂのフィールド中の該当トラックのポインタ
が削除され、有効トラック数が−１される。このトラック無効化によって１論理ブロック
中の全てのトラックが無効になった場合は、Validフラグ３５ｅが無効化される。このよ
うな無効化などにより、ＭＳ１１のブロックは無効なトラックを含んだものが発生し、こ
れが繰り返されるとブロックの利用効率が低下して、使用可能な論理ブロックに不足が生
じることがある。
【０１１１】
データ管理部１２０は、このような事態が発生して、ＭＳ１１に割り当てられている論
理ブロックの個数がＭＳ１１として許容されるブロック数の上限値を越えるような状況が
発生すると、コンパクション処理を行って、無効なフリーブロックＦＢを作る。無効なフ
リーブロックＦＢは、物理ＮＡＮＤ層管理部１２０ｃに返却される。そして、論理ＮＡＮ
Ｄ層管理部１２０ｂは、ＭＳ１１に割り当てられている論理ブロックの個数を減らした後
、新たに書き込み可能なフリーブロックＦＢを物理ＮＡＮＤ層管理部１２０ｃから取得す
る。コンパクション処理とは、コンパクション対象の論理ブロックが持つ有効クラスタを
新しい論理ブロックに集めたり、あるいはコンパクション対象の論理ブロック中の有効ト
ラックを他の論理ブロックにＣｏｐｙしたりすることで、物理ＮＡＮＤ層管理部１２０ｃ
に返却する無効なフリーブロックＦＢを作り、論理ブロックの利用効率を向上させるため
の処理である。なお、コンパクションを行う際には、コンパクション対象となったトラッ
ク領域に対して、ＷＣ、ＦＳ、ＩＳ上の有効なクラスタが存在する場合、それらを全てマ
ージする受動マージを実行する。また、ＴＦＳ１１ｂに登録されている論理ブロックにつ
いては、コンパクション対象に含めない。
【０１１２】
以下に、ＭＳＩＢ１１ａにフルに成ったブロックが存在する場合を発生条件とした、Ｍ
ＳＩＢ１１ａからＭＳ１１またはＴＦＳ１１ｂへの追い出しとコンパクション処理の一例
について具体的に説明する。
１．ＭＳ論理ブロック管理テーブル３５のValidフラグ３５ｅを参照することにより、
ＭＳ１１内に無効となった論理ブロックが存在する場合、そのブロックを無効なフリーブ
ロックＦＢとする。
２．ＭＳＩＢ１１ａでフルに成った論理ブロックをＭＳ１１に追い出す。具体的には、
前述したＭＳ構造管理テーブル（図示せず）を更新して、該当論理ブロックをＭＳＩＢ管
理下からＭＳ管理下に移し変える。
３．ＭＳ１１に割り当てられている論理ブロックの個数がＭＳ１１として許容されるブ
ロック数の上限値を越えるような状況が発生するか否かを判断し、発生している場合に、
以下のＭＳコンパクションを実行する。
４．ＭＳ論理ブロック管理テーブル３５の有効トラック数３５ｃのフィールドなどを参
照することにより、ＴＦＳ１１ｂに含まれない論理ブロックのうち無効にされたトラック
を持つものを、有効トラック数でソートする。
５．有効トラック数の少ない論理ブロックから、トラックを集めてコンパクションを実
施する。この際にまず、１論理ブロック分（２ｉトラック）ずつＣｏｐｙしてコンパクシ
ョンを実施する。なお、コンパクション対象のトラックがＷＣ２１、ＦＳ１２、ＩＳ１３
に有効クラスタを持つ場合にはそれらもマージする。
６．コンパクション元の論理ブロックを無効なフリーブロックＦＢとする。
７．コンパクションして有効な２ｉトラックで構成された１論理ブロックができたら、
ＴＦＳ１１ｂの先頭にＭｏｖｅする。
８．論理ブロック内の有効トラックを他の論理ブロックにＣｏｐｙして、無効なフリー
ブロックＦＢが作れる場合は、２ｉトラック未満の個数の有効トラックをＭＳＩＢ１１ａ
に対し、トラック単位で追記書き込みする。
９．コンパクション元の論理ブロックを無効なフリーブロックＦＢとする。
１０．ＭＳ１１に割り当てられている論理ブロックの個数がＭＳ１１として許容される
ブロック数の上限値を下回ると、ＭＳコンパクション処理を終了する。
【０１１３】
ＦＳ１２のＣＩＢ処理
つぎに、ＦＳ１２でのＣＩＢ処理について説明する（ステップＳ３４０）。ＷＣ２１か
らＦＳＩＢ１２ａへのクラスタ書き込み処理によって全ページ書き込み済みの論理ブロッ
クがＦＳＩＢ１２ａ中に作られた場合、ＦＳＩＢ１２ａ中のそれらのブロックは、ＦＳＩ
Ｂ１２ａからＦＳ１２に対してＭｏｖｅされる。このＭｏｖｅにともなって複数の論理ブ
ロックで構成されるＦＩＦＯ構造のＦＳ１２から古い論理ブロックが追い出される状況が
発生する。
【０１１４】
ＦＳＩＢ１２ａからＦＳ１２に対する追い出しおよびＦＳ１２からのブロック追い出し
は、具体的には、次のように実現される。
１．ＦＳ／ＩＳ論理ブロック管理テーブル４２のValidフラグ３５ｅなどを参照するこ
とにより、ＦＳ１２内に無効となった論理ブロックが存在する場合、そのブロックを無効
なフリーブロックＦＢとする。
２．ＦＳＩＢ１２ａでフルに成ったブロックをＦＳ１２に追い出す。具体的には、前述
したＦＳ／ＩＳ構造管理テーブル（図示せず）を更新して、該当ブロックをＦＳＩＢ管理
下からＦＳ管理下に移し変える。
３．ＦＳ１２に割り当てられている論理ブロックの個数がＦＳ１２として許容されるブ
ロック数の上限値を越えるような状況が発生するか否かを判断し、発生している場合に、
以下の追い出しを実行する。
４．まず追い出し対象の最古の論理ブロック中のクラスタデータのうちＩＳ１３に移動
せずに、直接ＭＳ１１に移動すべきものを決定する（実際には、ＭＳの管理単位がトラッ
クであるので、トラック単位での決定）。
（ア）追い出し対象の論理ブロック中の有効クラスタをページの先頭から順にスキャ
ンする。
（イ）クラスタが属するトラックがＦＳ中に何個の有効クラスタを保有しているか、
トラック管理テーブル３０のＦＳクラスタ数３０ｆのフィールドを参照して検索する。
（ウ）トラック内有効クラスタ数が所定の閾値（例えば２ｋ−ｉ個の５０％）以上だ
った場合、そのトラックをＭＳへの追い出し候補とする。
５．ＭＳ１１に追い出すべきトラックをＭＳＩＢ１１ａに対して書き込む。
６．追い出しトラックが残っている場合、さらにＭＳＩＢ１１への追い出しを実行する
。
７．上記２〜４の処理の後も追い出し対象の論理ブロックに有効なクラスタが存在して
いる場合、この論理ブロックをＩＳ１３にＭｏｖｅする。
なお、ＦＳ１２からＭＳＩＢ１１ａへの追い出しが発生したときには、その直後、ＭＳ
１１での前述したＣＩＢ処理が実行される（ステップＳ３５０）。
【０１１５】
ＩＳ１３のＣＩＢ処理
つぎに、ＩＳ１３でのＣＩＢ処理について説明する（ステップＳ３６０）。上記したＦ
Ｓ１２からＩＳ１３へのブロック移動によって論理ブロックがＩＳ１３に追加されるが、
これにともなって複数個の論理ブロックで構成されるＩＳ１３に対して管理可能なブロッ
ク数の上限を超えてしまう状況が発生する。このような状況が発生した場合、ＩＳ１３で
は、まずＭＳ１１への１〜複数個の論理ブロックの追い出しを行った後、ＩＳコンパクシ
ョンを実行する。具体的には、次のような手順を実行する。
１．ＩＳ１３に含まれるトラックをトラック内の有効クラスタ数×有効クラスタ係数で
ソートし、積の値が大きいトラック２ｉ＋１個(２論理ブロック分)を集めてＭＳＩＢ１１
ａに追い出す。
２．有効クラスタ数が最も少ない２ｉ＋１個の論理ブロックの合計有効クラスタ数が例
えば、所定の設定値である２ｋ個（１論理ブロック分）以上ある場合は、上のステップを
繰り返す。
３．上記の追い出しを行った後、有効クラスタ数の少ない論理ブロックから順にクラス
タを２ｋ個集め、ＩＳ１３内でコンパクションを行う。
４．コンパクション元の論理ブロックのうち有効クラスタがなくなったものを無効なフ
リーブロックＦＢとして返還する。
なお、ＩＳ１３からＭＳＩＢ１１ａへの追い出しが発生したときには、その直後、ＭＳ
１１での前述したＣＩＢ処理が実行される（ステップＳ３７０）。
【０１１６】
図２０は、各構成要素間のデータの流れにおける入力と出力の組み合わせ、およびその
データの流れが何をトリガとして発生するかを示すものである。ＦＳ１２は、基本的には
、ＷＣ２１からのクラスタ追い出しによってデータが書き込まれるが、ＷＣ２１からＦＳ
１２への追い出しに付随してクラスタ内セクタ穴埋め（クラスタ穴埋め）が必要な場合は
、ＦＳ１２、ＩＳ１３、ＭＳ１１からのデータがコピーされる。ＷＣ２１では、ＷＣクラ
スタ管理テーブル２５のタグ中のセクタ位置ビットマップ２５ｂによって当該クラスタア
ドレス中の２（ｌ−ｋ）個のセクタの有無を識別させることによってセクタ（５１２Ｂ）
単位の管理をすることが可能である。これに対し、ＮＡＮＤメモリ１０での機能要素であ
るＦＳ１２、ＩＳ１３の管理単位はクラスタであり、ＭＳ１１の管理単位は、トラックで
ある。このように、ＮＡＮＤメモリ１０での管理単位は、セクタより大きいため、ＷＣ２
１からＮＡＮＤメモリ１０に対して、データを書き込む際に、書き込まれるデータと同一
クラスタアドレスのデータがＮＡＮＤメモリ１０中に存在する場合、ＷＣ２１からＮＡＮ
Ｄメモリ１０に書き込まれるクラスタ中のセクタと、ＮＡＮＤメモリ１０中に存在する同
一クラスタアドレス内のセクタとをマージしてから、ＮＡＮＤメモリ１０に書き込む必要
がある。
【０１１７】
この処理が、図２０に示したクラスタ内セクタ穴埋め処理（クラスタ穴埋め）と、トラ
ック内セクタ穴埋め（トラック穴埋め）であり、これらの処理を行わないと、正しいデー
タが読み出せなくなる。そこで、ＷＣ２１からＦＳＩＢ１２ａまたはＭＳＩＢ１１ａにデ
ータを追い出す際には、ＷＣクラスタ管理テーブル２５を参照し、追い出しを行うクラス
タに対応するタグ中のセクタ位置ビットマップ２５ｂを参照し、セクタ位置ビットマップ
２５ｂが全て“１”でない場合は、ＮＡＮＤメモリ１０に含まれる同一クラスタまたは同
一トラック中のセクタとマージする、クラスタ内セクタ穴埋めまたはトラック内セクタ穴
埋めを行う。この処理には、ＤＲＡＭ２０の作業領域が使用され、ＤＲＡＭ２０の作業領
域からＭＳＩＢ１１ａに書き込まれたり、ＦＳＩＢ１２ａに書き込まれたりする。
【０１１８】
ＩＳ１３は、基本的には、ＦＳ１２からのブロック追い出しによってデータが書き込ま
れる（Ｍｏｖｅ）か、ＩＳ内部のコンパクションによってデータが書き込まれる。ＭＳ１
１は、全ての箇所からデータが書き込まれ得る。その際、ＭＳ１１は、トラック単位にし
かデータを書き込めないために、ＭＳ自身のデータによる穴埋めが発生しうる。また、ト
ラック単位の書き込みを行う際には、他のブロックにある断片化されたデータも受動マー
ジによって書き込まれることになる。さらにＭＳ１１は、ＭＳコンパクションによる書き
込みもある。なお、受動マージにおいては、ＷＣ２１、ＦＳ１２またはＩＳ１３の３つの
構成要素のうちの１つの構成要素からＭＳ１１へのトラック追い出しまたは論理ブロック
追い出し（２ｉトラック分の追い出し）が発生した際、１つの構成要素での追い出し対象
のトラック（または論理ブロック）に含まれる他の２つの構成要素内の有効クラスタおよ
びＭＳ１１内の有効クラスタが、ＤＲＡＭ２０の作業領域に集められて、ＤＲＡＭ２０の
作業領域から１トラック分のデータとしてＭＳＩＢ１１ａに書き込まれる。
【０１１９】
つぎに、本実施の形態の要部について説明する。本実施の形態では、Write_FUA処理を
行なう際に、ホスト装置１からのデータをＲＣ（第１の記憶部）２２を介してＮＡＮＤメ
モリ１０に書き込む。
【０１２０】
図２１は、本実施の形態に係るメモリシステムが行なうWrite_FUA処理を説明するため
の図である。ホスト装置１から図１のＳＳＤ１００（図３及び図２１のプロセッサ１０４
）にWrite_FUA要求（ＮＡＮＤメモリ１０への強制書き込み命令）が送られると、プロセ
ッサ１０４は、このWrite_FUA要求で指定されたデータをホスト装置１からＲＣ２２へ書
き込む。さらに、ＲＣ２２へ書き込まれたデータは、ＮＡＮＤメモリ１０へ書き込まれる
。
【０１２１】
従来のWrite_FUA処理や通常のWrite処理（Write_FUA以外のWrite）のように、Write_FU
A要求やWrite要求で指定されたデータをホスト装置１からＷＣ（第２の記憶部）２１を介
してＮＡＮＤメモリ（第３の記憶部）１０へ書き込む場合、ＤＲＡＭ２０領域確保のため
に、ＷＣ２１からＮＡＮＤメモリ１０へのデータの追い出し判定、追い出し処理などが発
生する。さらに、管理テーブルの複雑な更新処理などが発生する。
【０１２２】
一方、ＲＣ２２内に格納していたデータは既にホスト装置１によって読み出されたデー
タであるので、ＲＣ２２内に格納していたデータは、ＮＡＮＤメモリ１０へ追い出しや消
去を行なうことなく上書きされてもよいデータである。
【０１２３】
本実施の形態では、Write_FUA要求で指定されたデータをホスト装置１からＲＣ２２を
介してＮＡＮＤメモリ１０へ書き込んでいるので、ＲＣ２２内に格納していたデータの追
い出しなどが不要になるとともに、管理テーブルの複雑な更新処理などが不要となる。
【０１２４】
図２２は、本実施の形態に係るメモリシステムが行なうWrite_FUA処理の処理手順を示
すフローチャートである。なお、以下の説明では、図４で説明したデータ管理部１２０、
ブートローダー１２３、初期化管理部１２４、デバッグサポート部１２５をＤＭ（データ
マネージャ）といい、ＡＴＡコマンド処理部１２１をＡＭ（ＡＴＡマネージャ）という。
【０１２５】
ホスト装置１からＳＳＤ１００にWrite_FUA要求が送られると、プロセッサ１０４のＡ
Ｍは、ＤＭへWrite_FUA要求（REQ_Write_FUA）を送る（ステップＳ４００）。これにより
、ＤＭは、Write_FUA要求で指定されたデータを、ＲＣ２２に書き込む（ステップＳ４１
０）。
【０１２６】
さらに、ＤＭはＡＭへ、ＲＣ２２上の書き込み先エントリの通知（NOTIFY_Write_FUA）
を送る（ステップＳ４２０）。ＡＭは、ＤＭから書き込み先エントリの通知を受けると、
上述したエントリへの書き込み完了通知（REQ_Write_FUA_COMPLETE）をＤＭへ送る（ステ
ップＳ４３０）。
【０１２７】
この後、ＤＭは、ホスト装置１からのデータであってＲＣ２２に格納させたデータを、
ＮＡＮＤメモリ１０へ書き込む（ステップＳ４４０）。このように、ホスト装置１からWr
ite_FUA要求があった場合には、ＤＲＡＭ２０上のバッファ（ＲＣ２２）にデータを一瞬
だけ書き込んで、すぐにそこからＮＡＮＤメモリ１０に書き込む処理が行なわれる。換言
すると、ホスト装置１からWrite_FUA要求があった場合には、ＲＣ２２が一時的にＦＵＡ
書き込み用のバッファとして用いられる。
【０１２８】
ＮＡＮＤメモリ１０にデータが書き込まれると、ＮＡＮＤメモリ１０へ書き込んだＲＣ
２２上のデータ（書き込みに利用したエントリ）を無効化する（ステップＳ４５０）。そ
して、ＤＭはＡＭへ、上述したエントリからＮＡＮＤメモリ１０へデータ書き込みが完了
したことの通知（NOTIFY_Write_FUA_COMPLETE）を行なう（ステップＳ４６０）。
【０１２９】
ところで、ＳＳＤ１００では、Write処理としてホスト装置１のデータをＮＡＮＤメモ
リ１０に書き込む際には、ＷＣ２１上のエントリにデータを書き込む。また、ＳＳＤ１０
０では、ホスト装置１から要求のあったデータを読み出す際には、ＷＣ２１上のエントリ
（クラスタエントリ）を検索する。そして、ＷＣ２１上のエントリにヒットしなかった場
合には、ＮＡＮＤメモリ１０からＲＣ２２に、該当するデータが読み出される。また、Ｗ
Ｃ２１上のエントリにヒットした場合は、ＷＣ２１上のデータはＮＡＮＤメモリ１０上の
データよりも新しい可能性があるので、ＲＣ２２は利用せずＷＣ２１から直接データの読
み出しが行なわれる。
【０１３０】
一方、Write_FUA処理で、ＤＲＡＭ２０に一時的に書き込まれるデータ領域はＲＣ２２
である。ところが、前述のようにWrite_FUAコマンドによって書き込みたいアドレスのデ
ータが、それより前に実行されたWriteコマンドによってＷＣ２１上にある場合がある。
すなわち、ＮＡＮＤメモリ１０上のデータよりも新しいデータ（最新のデータ）がＷＣ２
１上に格納されている場合がある。
【０１３１】
また、ＷＣ２１の１エントリには１クラスタ（＝連続する所定数のセクタ）のデータが
格納されている。このため、例えばWrite_FUA処理によって書き込むデータのサイズが１
セクタである場合、ＮＡＮＤメモリ１０への書込みの最小単位である１クラスタのデータ
を作るためには、周辺の（所定数−１）セクタをどこかから持ってきて補完する必要があ
る。このような補完作業を考えると、ＷＣ２１上のデータが最新データであることが保障
されていれば、ＷＣ２１上のエントリにデータの書き込みを行うことが最も効率良くデー
タの書き込みを行なうことができることになる。
【０１３２】
したがって、本実施の形態では、ホスト装置１からWrite_FUA要求があったデータ（ク
ラスタ）が既にＷＣ２１上に存在する場合（ＷＣ２１に最新のデータがある場合）にはＷ
Ｃ２１のエントリに対して書き込みを行なう。換言すると、ＷＣ２１上にホスト機器から
フラッシュメモリへのデータ書き込み処理に対して一定のレイテンシを保証することが可
能なメモリシステムを提供する。処理に対応するクラスタエントリが存在する場合、ＤＭ
はＷＣ２１のエントリに対してデータの書き込み動作を実行する。この場合、ＤＭは、Wr
ite_FUA要求で指定されたデータをＷＣ２１に書き込んだ後、ＷＣ２１上の書き込み先エ
ントリの通知（NOTIFY_Write_FUA）をＡＭへ送る。そして、ＡＭは、ＤＭから書き込み先
エントリの通知を受けると、上述したエントリへの書き込み完了通知をＤＭへ送り、ＤＭ
は、ホスト装置１からのデータであってＷＣ２１に格納させたデータを、ＮＡＮＤメモリ
１０へ書き込む。
【０１３３】
なお、本実施の形態では、ホスト装置１からWrite_FUA要求があった場合に、ＲＣ２２
を介してＮＡＮＤメモリ１０へデータの書き込みを行なったが、ＲＣ２２やＷＣ２１以外
のＤＲＡＭ２０領域を用いてＮＡＮＤメモリ１０へデータの書き込みを行なってもよい。
【０１３４】
このように、本実施の形態では、Write_FUA処理を行なう際に、ＲＣ２２を介してＮＡ
ＮＤメモリ１０へデータの書き込みを行なっているので、ＤＲＡＭ２０内に格納していた
データの追い出しなどが不要になるとともに、管理テーブルの複雑な更新処理などが不要
となる。これにより、Write_FUA処理を行なう場合には、ＮＡＮＤメモリ１０へのデータ
の書き込みを短時間で行なうことが可能になる。したがって、ＷＣ２１の状態に関係無く
、ホスト装置１からＮＡＮＤメモリ１０へのデータ書き込み処理に対する一定のレイテン
シを保証することが可能となり、電源障害時であってもデータの消失を防止することが可
能となる。
【０１３５】
また、ホスト装置１からWrite_FUA要求があった場合に、ＲＣ２２を介してＮＡＮＤメ
モリ１０へデータの書き込みを行なうので、ＤＲＡＭ２０にＦＵＡ専用のバッファ領域を
確保する必要がない。したがって、ＤＲＡＭ２０を効率良く利用することが可能となる。
【０１３６】
また、ホスト装置１からWrite_FUA要求があったデータが既にＷＣ２１上に存在する場
合には、ＷＣ２１のエントリに対して書き込みを行なうので、効率良くデータの書き込み
を行なうことが可能となる。
【図面の簡単な説明】
【０１３７】
【図１】ＳＳＤの構成例を示すブロック図。
【図２】ＮＡＮＤメモリチップに含まれる１個のブロックの構成例と、４値データ記憶方式でのしきい値分布を示す図。
【図３】ドライブ制御回路のハードウェア的な内部構成例を示すブロック図。
【図４】プロセッサの機能構成例を示すブロック図。
【図５】ＮＡＮＤメモリおよびＤＲＡＭ内に形成された機能構成を示すブロック図。
【図６】ＷＣからＮＡＮＤメモリへの書き込み処理に係わるより詳細な機能ブロック図。
【図７】ＬＢＡ論理アドレスを示す図。
【図８】データ管理部内の管理テーブルの構成例を示す図。
【図９】ＲＣクラスタ管理テーブルの一例を示す図。
【図１０】ＷＣクラスタ管理テーブルの一例を示す図。
【図１１】ＷＣトラック管理テーブルの一例を示す図。
【図１２】トラック管理テーブルの一例を示す図。
【図１３】ＦＳ／ＩＳ管理テーブルの一例を示す図。
【図１４】ＭＳ論理ブロック管理テーブルの一例を示す図。
【図１５】ＦＳ／ＩＳ論理ブロック管理テーブルの一例を示す図。
【図１６】ＦＳ／ＩＳ内クラスタ管理テーブルの一例を示す図。
【図１７】論物変換テーブルの一例を示す図。
【図１８】読み出し処理の動作例を示すフローチャート。
【図１９】書き込み処理の動作例を示すフローチャート。
【図２０】各構成要素間のデータの流れにおける入力と出力の組み合わおよびその発生要因を示す図。
【図２１】本実施の形態に係るメモリシステムが行なうWrite_FUA処理を説明するための図。
【図２２】本実施の形態に係るメモリシステムが行なうWrite_FUA処理の処理手順を示すフローチャート。
【符号の説明】
【０１３８】
１  ホスト装置、１０  ＮＡＮＤメモリ、１１、メインストレージ領域（ＭＳ）、１１
ａ  ＭＳ入力バッファ（ＭＳＩＢ）、１１ｂ  トラック前段ストレージ領域（ＴＦＳ）、
１２  前段ストレージ領域（ＦＳ）、１２ａ  ＦＳ入力バッファ（ＦＳＩＢ）、１３  中
段ストレージ領域（ＩＳ）、２０  ＤＲＡＭ、２１  ライトキャッシュ（ＷＣ）、２２  
リードキャッシュ（ＲＣ）、１０４  プロセッサ。
【図１】
0004621749.tif 000002
【図２】
0004621749.tif 000003
【図３】
0004621749.tif 000004
【図４】
0004621749.tif 000005
【図５】
0004621749.tif 000006
【図６】
0004621749.tif 000007
【図７】
0004621749.tif 000008
【図８】
0004621749.tif 000009
【図９】
0004621749.tif 000010
【図１０】
0004621749.tif 000011
【図１１】
0004621749.tif 000012
【図１２】
0004621749.tif 000013
【図１３】
0004621749.tif 000014
【図１４】
0004621749.tif 000015
【図１５】
0004621749.tif 000016
【図１６】
0004621749.tif 000017
【図１７】
0004621749.tif 000018
【図１８】
0004621749.tif 000019
【図１９】
0004621749.tif 000020
【図２０】
0004621749.tif 000021
【図２１】
0004621749.tif 000022
【図２２】
0004621749.tif 000023