SSDで書き込み増幅を抑制する方法は?





SASコントローラーに加えて、そのLSIを作成すると、最新のハードドライブとSSDのチップが生成されフラッシュメモリにはI / O操作により複雑なアプローチが必要であるという事実があります。 この複雑さの構成要素、および当社のチップが解決する問題の種類については、この記事で説明したいと思います。 書き込み増幅についてです。 もちろん、専門家はすでにWAに精通しているため、この記事は初心者向けに設計されています。



最新のフラッシュメモリ超小型回路は、パフォーマンスを向上させるために、大きなブロックでデータの読み取り、書き込み、および消去を行う必要があるように設計されています。 さらに、記録ユニットのサイズは読み取りユニット以上であり、消去ユニットは常に記録ユニットよりも大きい。 これには、通常、ブロック-セクター-ページの階層構造でメモリセルを結合する必要があります。



未使用の新しいSSDを手に入れたら、問題はありません。 すべてのセルはゼロで満たされ、データを受信する準備ができています。 したがって、SSDの最初のレコードには問題はまったくありません。 通常、データは4〜8 KBのブロックで書き込まれ、これは非常に迅速に行われます。



ここで、すでに記録されているファイルで、数バイトを変更する必要があるとします(ドラマの場合、これは1ビットであると仮定することもできますが、これは人生ではめったに不可能です)。 従来のハードドライブとは異なり、フラッシュメモリではデータブロックを取得して上書きするだけでなく、最初に消去する必要があります。 また、消去ユニットは記録ユニットとして非常に大きいため、この操作は非常に非効率的です。 ウィキペディア、グラフィックイラストをありがとう:







これを行うには、消去ブロック全体の内容をどこかで読み取り、その中のデータを変更し、ブロックを消去してから再びデータを書き込む必要があります。 これは、記録増幅などの負の現象の出現につながります。 実際、コンピューターが実際に「書きたい」よりもはるかに多くのデータがディスクに書き込まれます。



非常に単純な式により、録音ゲインを計算できます。



レコードゲイン係数=フラッシュメモリに書き込まれたデータ/ホストが記録するために送信したデータ



この現象は、NANDメモリを搭載した最初のチップの登場以来知られていますが、書き込み増幅という用語は、2008年にIntelとSiliconeSystemsによって作られました。



録音増幅には、2つの明らかな欠点があります。 大きなブロックの読み取り、消去、書き込みは直接書き込みほど効果的ではないため、これらの最初は速度の低下です。しかし、この欠点は単純に回避されます。



フラッシュコントローラーは、コンピューターが動作する論理アドレスをメディア上の物理データアドレス(この場合はSSD)に変換する作業を引き受けます。これは、論理ブロックアドレス指定(おなじみの略称LBA)と呼ばれます。



最新のコントローラーは、次のように書き換え操作を最適化します。 SSDコントローラーは、ファイルブロックの1つを変更する必要がある場合、読み取り、削除、書き込みで完全に上書きするのではなく、以前に消去された別の場所に変更されたブロックを保存し、古いブロックを「使用可能ですが準備ができていません」とマークし、情報をLBAに使用するメタデータ。







最初の段階では、これは合理的なアイデアのように思えますが、ディスクがいっぱいになると、「間違った」状態のブロックが増えます。つまり、空きとしてマークされますが、消去されません。 そのため、最新のハードドライブは、そのようなブロックを消去して「使用可能および準備完了」リストに戻すさまざまなガベージコレクションアルゴリズムを使用します。 もちろん、空きディスク容量が少ないほど、これらのアルゴリズムをより集中的に使用する必要があり、SSDパフォーマンスの充填依存性が決定されます。



書き込み増幅の2番目の欠点は、SSDの摩耗が加速することです。 メモリセルには、有効な書き換え操作の数に制限があることがわかっています。 SLCディスクの場合は高く、MLCの場合は低くなりますが、そうです。 これに対処するために、データの冗長性が使用され、さまざまなチェックサムを使用してチェックされます( 前の記事で LDPCについて書きました)が、メモリチップの空き領域の冗長性は限られたリソースであり、記録の増幅はその高速な消耗に貢献します。



どのような要因があり、それらが書き込み増幅にどのように影響しますか?



ごみ収集

SSDセルの摩耗がGCアルゴリズムのパフォーマンスに依存するという事実は否定できません。 SSDでのガベージコレクションは、バックグラウンドで発生する場合と明示的に発生する場合があります。



明示的な(フォアグラウンド)ガベージコレクションの場合、新しいブロックを記録するときに、解放されたブロックのクリーニングと最適化が行われます。 バックグラウンドビルドの場合、コントローラーはダウンタイムを使用して空き領域を最適化し、ブロックをクリーンアップします。



バックグラウンドクリーニングを使用すると、ブロックが既に必要な時間までに解放されるため、作業を高速化できますが、これにより、コントローラーは本当に不要なデータを最適化する必要があり、将来削除される可能性があります。



長所と短所の両方が存在するため、開発者はこれらの方法を組み合わせてパフォーマンスを向上させようとしています。 たとえば、OCZ SSDでは、バックグラウンドガベージコレクターが少数のブロックをクリアして停止し、不要な操作の数を最小限に抑えながら、空きブロックへのオンラインアクセスをディスクに提供します。







ただし、現在最も有望な領域は、ホストが開始する書き込み操作と同時にガベージコレクションです。 これにより、SSDがアイドル状態でないときに、書き込み操作が多数行われる環境で高いパフォーマンスを実現できます。 この機能を備えたコントローラーには、LSIのSandForceコントローラーがあります。







興味深いエキゾチックなもののうち、一部の製造業者、主にサムスンが、作業中にディスク上にあるファイルシステムの情報を使用するガベージコレクションシステムを開発する試みに注目する価値があります。 これにより、コントローラーは最近削除されたファイルと未割り当て領域に関する情報を効率的に使用できます。 開発者によると、このアプローチにより、TRIMチームをサポートしていないシステムで効果的に作業できるようになりました。 この機能を備えたコントローラーでは、ディスクをNTFSでパーティション化し、MBRを含める必要がありました。 この技術は非常に信頼性が低く、特に他のファイルシステムを使用している場合は、多くの場合データの損失につながりました。 SSD開発者が移動しているもう1つの分野は、アプリケーションヒントです。 これを説明する最も簡単な方法は、データベースの例を使用することです。 また、DBMSのデータは、単純化された検索のためにページに配置されます。 したがって、DBMSには、ガベージ、つまりダーティページの概念もあります。 DBMSがダーティページのリストを事前にソリッドステートデバイスに送信できれば、ガベージコレクションプロセスで大いに役立ちます。 他のアプリケーションの最適化の例があります。



#最初の部分の終わり#



All Articles