ライトアンプリフィケーション
(Write amplification から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/03/26 13:20 UTC 版)
この項目「ライトアンプリフィケーション」は途中まで翻訳されたものです。(原文:英語版 "Write amplification" 09:34, 19 December 2012 (UTC))
翻訳作業に協力して下さる方を求めています。ノートページや履歴、翻訳のガイドラインも参照してください。要約欄への翻訳情報の記入をお忘れなく。(2013年2月) |

ライトアンプリフィケーション(書き込みの増幅) (WA:Write Amplification) は、フラッシュメモリやソリッドステートドライブ(SSD)において、実際に書き込んだデータの量よりも、フラッシュチップに対する書込量が増加すると言う、好まざる現象の事を言う。
フラッシュメモリに再書き込みを行うためには前もってその領域の消去が必要である。そのためにはデータやメタデータの移動や再書き込みが一度以上必要となる。 この動作増加作用は書込回数を増やし、SSDが信頼性を持って動作することのできる期間を短縮する。 書込回数増加はまたフラッシュメモリへの帯域を消費し、SSDの主にランダムライトの性能を低下させる。[1][2]多くの要因がSSDのライトアンプリフィケーションに影響する。一部はユーザーによるコントロールが可能であり、一部は書き込まれるデータやSSDの使用法そのものが原因となる。
インテルとシリコンシステムズ(ウェスタンデジタルが2009年に買収)は2008年迄には論文や出版物にライトアンプリフィケーションという単語を使用していた。ライトアンプリフィケーション値(WA値)は普通ホストよりの書込データ量とフラッシュメモリへ渡される書込データ量の比によって計られ、圧縮無しにはWA値は1を下回ることはない。サンドフォースは圧縮を用いることで通常のWA値0.5、SF-2281コントローラーを使用し最善の状況で0.14を達成したと主張した。[3]
SSDにおける基本的処理

フラッシュメモリの特質として、メモリにあるデータを直接「書き換える」こと(オーバーライト)が原理上不可能であり、これはハードディスクドライブとは異なっている。SSDにデータが書き込まれるとき、該当するフラッシュメモリのセルはすべて「消去」されており、そのようなページ(通常サイズは4KiB)に対して一度にデータが書き込まれる。
SSD内に存在する、フラッシュメモリとインターフェースをホストシステムとともに管理するSSDコントローラはフラッシュトランスレーションレイヤー(FTL)に付随するロジカルブロックアドレッシング(LBA)と呼ばれる方法を使用する。
新しいデータが既に書き込まれた古いデータと置き換わって入ってくるとSSDコントローラは新しいデータを新しい場所に書き込み、新しい物理的な場所を指すように論理マッピングを更新する。古い場所にあるデータは既に有効ではないため、その場所を再び書き込む前に消去する必要がある。[1][5]
フラッシュメモリは、限られた回数しかプログラム・削除できない。これは、フラッシュメモリの寿命を通じて維持できる最大プログラム/消去サイクル数 (P/E サイクル) と呼ばれることがある。シングルレベルセル (SLC) フラッシュは、より高い性能とより長い耐久性を目指して設計されており、通常、5万~10万サイクルの間で動作させることができる。2011年現在、マルチレベル・セル(MLC)フラッシュは低コスト・アプリケーション向けに設計されており、サイクル数は通常3,000~5,000と大幅に削減されている。書き込み増幅率が低ければ低いほど、フラッシュメモリのP/Eサイクルが減少し、SSDの寿命が延びるため、より望ましいとされている。[1]
WA値の計算
ライト・アンプリフィケーション(WA)は、その用語が定義されるよりも以前から知られていた事実であるが、2008年にはインテル[6][7]とシリコンシステムズが、この用語を資料や広報に使い始めた。[8]
SSDはWA値を持ち、それは次のような式で表される。[1][9][10][11]
あるSSDにおいてWA値を正確に測定するためには、ドライブが「安定状態」に達するために十分な時間、テスト書込が行われるべきである。[2]
WA値の計算式 ![]()
SSDにおけるガベージコレクション(GC)の典型的な動作。1ブロックが満杯になるまで、ページが書込される。すると、有効なデータのあるページはまとめて新しい別のブロックにコピーされ、旧ブロックは消去される。[4] データは、複数の記憶セルで構成される「ページ」と言う単位でフラッシュメモリーに書き込まれる。しかし消去は、複数のページで構成される、より大きい「ブロック」と言う単位でのみ可能となる[4]。もしあるブロック内のあるページのデータが不要になった場合("stale"ページと呼ばれる)、そのブロック内の必要なデータがあるページのみ、他の消去済みブロックに転送(書込)される。[2] そして"stale"ページは転送(書込)されないため、転送先のブロックでフリーなページとして新しい別のデータを書き込むことができる。ここまでの処理を「ガベージコレクション(以下GC)」と呼ぶ[1][10]。全てのSSDは何らかのGCの仕組みを備えているが、GCをいつ、どのように処理するかはそれぞれ異なっている[10]。GCはSSDのライト・アンプリフィケーションに大きな影響がある[1][10]。
読み込み動作については、フラッシュメモリーを消去する必要はないため、通常はライトアンプリフィケーションに関連付けられることはない。しかしリード・ディスターブ(en:Read_disturb)などの不良モード[13]が発生する前に、そのブロックは書き直しが行われる。もっとも、この事は、ドライブのライトアンプリフィケーション対する実質的な影響度は低いと見られている[14]。
バックグラウンド・ガベージコレクション (BGC, Background Garbage Collection)
GCのプロセスはフラッシュメモリーの読込と再書込動作を伴う。つまりホストからの新しい書込指令によって、1ブロック全体の読込と、そのブロックのうち有効なデータを含む部分の書込、そして新しいデータの書込がまず必要となる。これはシステムの性能を著しく低減させる。[15]
SSDのコントローラーには「バックグラウンドGC(BGC)」、「アイドル時GC(ITGC)」などと呼ばれる機能を備えるものがある。これは、コントローラーがSSDのアイドル時に、ホスト側から新しい書込データが来るよりも前に、フラッシュメモリーの複数のブロックを統合するものである。これによりデバイスの性能の低下を防ぐ事ができる。[16]
もしSSDコントローラが、必要となる前に予備ブロックをすべてバックグラウンドでGCしていれば、ホストから書き込まれる新しいデータは事前に元々あったデータを移動する必要がなく、性能を最高のスピードで動作させることができる。そのトレードオフとして、それらのデータブロックの中には、実はホストが必要とせず、”いずれ削除されるもの”もあるのだが、OSはいずれ削除されるデータもあるということをSSDコントローラには伝えなかった場合、”すぐに削除されるデータ”は、フラッシュメモリ内の別の場所に書き直され、書き込み増幅率が上昇してしまう。これに対しOCZが販売する一部のSSDでは、BGCが少数のブロックのみを削除して停止するため、過剰な書き込みの量が抑えられる。[10]
もう一つの解決策として、ホストからの書き込みと並行して必要な移動を実行できる、効率的なGCシステムを持つことが挙げられる。この方法は、SSDがほとんどアイドル状態でない[17]、書き込み量の多い環境においてより効果的であり、SandForce SSDコントローラ[15]やViolin Memoryのシステム[9]には、この機能が搭載されている。
ファイルシステムに着目したGC
→ 2010年、一部のメーカー(特にSamsung)は、BGCの概念を拡張してSSD上で使用されているファイルシステムを分析し、最近削除されたファイルや未パーティションの領域を特定するSSDコントローラを発表した。メーカーは、これにより、TRIMをサポートしていないシステム(OSやSATAコントローラのハードウェア)でも、同様の性能を達成できると主張している。Samsungの実装の動作は、NTFSファイルシステムを前提とし、それを必要とするように思えた。[18]だが現在出荷されているこれらのメーカーのSSDで、この機能がまだ利用可能かどうかは不明である。また、これらのドライブで、MBRとNTFSを使用して適切にフォーマットされていない場合、体系的なデータ破損が報告されている。[19]
オーバー・プロビジョニング
![]()
SSDに見られる3段階のオーバー・プロビジョニング[15][20] オーバー・プロビジョニング (以下OP) (en:Over Provisioning) はフラッシュメモリの物理的な容量とOSを通じてユーザーが利用可能なものとして提示される論理容量との差のことを表す。
また、SSDでのGC、ウェアレベリング、および不良ブロックマッピング操作の間、OPによる追加スペースは、コントローラがメモリに書き込む際のWAを低減するのに役立つ。
OPの第一段階は、容量の計算と、実際にはギビバイト(GiB)とするところをギガバイト(GB)と言う単位を使っていることに起因する。
HDDやSSDの販売者は、GBという用語を10進数のGB、または1,000,000,000 (109)バイトを表すのに使用しているが、フラッシュメモリ(他のほとんどの電子記憶装置と同様)は2の累乗で組み立てられるため、SSDの物理的な容量を計算するには2進数GBあたり1,073,741,824 (230) に基づく。
この2つの値の差は、7.37% (=(230-109)/109)である。
したがって、オーバープロビジョニングが0%の128GB SSDは128,000,000,000バイトをユーザーに提供することとなる。
また、この7.37%は通常、OPの合計数にはカウントされない。[20][21]
OPの第二段階は製造業者によるもので、このOPレベルは通常、物理容量の10進数GBとユーザーが利用可能なスペースの10進数GBの左に基づき、0%, 7%, または28%である。
一例として、メーカーがSSDの仕様を128GBの可能領域に基づき、100GB, 120GB, 128GBと公表しているケースがある。
この差はそれぞれ28%, 7%, 0%であり、メーカーが自社のドライブに28%のOPがあると主張する根拠となる。
これは、10進数のGBと2進数のGBの違いから利用可能となる追加容量7.37%をカウントしていないものである。[20][21]
OPの第三段階はエンド・ユーザーが容量を犠牲にする代わりに耐久性と性能を得るために行うものである。
一部のSSDではエンドユーザーがOPを選択できるユーティリティーが提供されている。さらに、利用可能スペースの100%よりも小さいOSパーティションでSSDがセットアップされている場合、そのパーティション未設定のスペースもSSDにより自動的にOPとして使用される。
OPはユーザー容量を奪うが、WAの減少、耐久性の向上、そしてパフォーマンスの向上をもたらすこととなる。
オーバープロビジョニングの計算 この項目は、コンピュータに関連した書きかけの項目です。この項目を加筆・訂正などしてくださる協力者を求めています(PJ:コンピュータ/P:コンピュータ)。
- ライトアンプリフィケーションのページへのリンク