今回開発したハイブリッドSSDアーキテクチャでは、三つのデータ書き込み用SSDコントローラ・アルゴリズムを使用する。(1)「Anti-Fragment(AF)」アルゴリズム、(2)「Reconsider as a Fragmentation(RAAF)」アルゴリズム、(3)「Most Recently Used Table(MRU)」アルゴリズムである。以下、それぞれについて説明する。

ページ使用率を計算

 (1)AFアルゴリズムでは、まずセクタ単位の小さなデータをReRAMに書き込み、ほぼ1ページ分のデータがそろった段階でNANDフラッシュ・メモリに書き込むようにSSDを制御する(図6)。上書きが可能なReRAMを用いることで、小さなデータがNANDフラッシュ・メモリに書かれることによるNANDフラッシュ・メモリのデータの断片化を抑制できる。

図6 データの断片化を抑制するAFアルゴリズム
USFTを用いてページ使用率Rを計算する。その値がしきい値RTHより低ければ、ページの中で有効に使われているセクタ領域が少なく、ページ内が断片化していると判断してReRAMに書き込む。
[画像のクリックで拡大表示]

 具体的には、ページ使用率Rを計算し、Rが一定値(RTH)以上ならそのページをNANDフラッシュ・メモリに書き込むようにする。これまでに書き込みがあったセクタのアドレス情報を「使用セクタ・フラグ・テーブル(Used Sector Flag Table:USFT)」に記憶しておき(図7)、これから書き込むページ内で使用されているセクタ数をUSFTから取得することでRを算出する。なお、USFTのテーブル・サイズは全SSD容量の0.02%であり、256GバイトのSSDでは64Mバイト程度と小さい。

図7 使用セクタ・フラグ・テーブル(USFT)
該当セクタ領域が使用されていれば「1」、そうでなければ「0」が保存される。ページ使用率Rは、ページごとに使用されているセクタ数を数え、それを1ページ当たりのセクタ数で割ることで得られる。
[画像のクリックで拡大表示]

 ただし、AFアルゴリズムで使用できるReRAMの容量は限られている。このため、ReRAMの空き容量が少なくなった場合には、データが1ページ分そろわなくても(例えばページ使用率Rが60%程度であっても)NANDフラッシュ・メモリに書き込むように制御する。具体的にはReRAMの空き容量が少ない場合にはRTHを小さく設定することで実現している。これによって、ReRAMの容量が足りなくなるオーバー・フローの問題を防止できる。