web-dev-qa-db-ja.com

大きなデータを転送しているときにnvme ssdの転送速度が低下するのはなぜですか?

私のラップトップはPCIe NVMe 512GB M.2 SSDを持っています。また、7 GB未満のデータを転送すると、転送速度は約400 MB /秒から500 MB /秒になります。しかし、35GBのような大きなデータを転送すると、速度が最大50MB/s低下し、時には25MB/sになることがあります。だから私はこれがなぜ起こっているのか知りたいだけです。

2
user7761585

TL; DR

最近のSSDのほとんどは、比較的遅いTLC NANDを使用しています。これを補うために、はるかに高速なSLC NANDの小さなバッファーが使用されます。これにより、ほとんどの使用条件下で、この遅いパフォーマンスが隠されます。このバッファは、大量のデータを短時間でドライブに書き込むときに使い果たされる可能性があり、その結果、大規模な転送中のパフォーマンスが低下します。


技術的な詳細

NAND フラッシュメモリ は、現在ほとんどすべてのSSDで使用されているメモリの種類で、さまざまな種類があります。最も注目すべきは、NANDを構成して、メモリセルごとに1〜4ビットのデータを格納できることです。

  • セルごとに1ビット:SLC
  • セルあたり2ビット:MLC
  • セルあたり3ビット:TLC
  • セルあたり4ビット:QLC

セルあたりのビット数が多いほど、1つのNANDフラッシュチップに格納できるデータが増え、特定のストレージ容量を持つドライブを製造するコストが削減されます。ただし、各セルに格納されるビット数が増えると、パフォーマンスと書き込み耐久性は低下します。 (ここで重要なのはパフォーマンスの違いです。通常、非常に小さなドライブが関係するいくつかの例外はありますが、適度なサイズのQLC NANDでも使い尽くすほど書き込みを行わないため、ほとんどの消費者は書き込み耐久性について心配する必要はありません。実際に、SLCは、非常に高い書き込み耐久性を必要とする特殊な産業用アプリケーションのドライブの外側を見つけるのが非常に難しく、MLCドライブ(Samsung SSD 970 PROなど)は一般的ではなく、非常に高価です。

その結果、ほとんどのドライブはTLC NANDを使用し、一部のドライブはQLC NANDを使用し始めています。どちらのタイプのNANDでも、書き込みパフォーマンスは一般に消費者のPCには受け入れられないほど低速です。さいわい、NANDメモリセルは、より少ないビットを格納するように構成できます。 TLC NANDは、3ビットではなくSLC NANDであるかのように、セルごとに1ビットを格納するように作成できます。 TLCまたはQLC NANDを使用するほとんどすべてのドライブでは、通常は数ギガバイトの少量のスペースが、このはるかに高速なSLCモードで動作するように内部的に確保されています。これにより、データが常に最初に書き込まれる高速の buffer または cache が作成されます。1 (MLC NANDは通常、SLCバッファーを必要としないほど高速ですが、余談です。)

ドライブがアイドル状態の場合、このSLCバッファー内のデータは、基になるTLCまたはQLC NANDに自動的に移動されます。ほとんどのコンシューマーワークロードは短いバーストでのみドライブにアクセスするため、ドライブはSLCバッファーをフラッシュできる十分な空き時間があるため、ドライブが完全にいっぱいになることはまれです。その結果、通常はTLCまたはQLC NANDのパフォーマンスの低下に気付くことはありません。ただし、大きなゲームをインストールしたり、大きなファイル転送を実行したりする場合など、短期間に大量のデータが書き込まれると、このバッファが使い果たされる可能性があります。このため、パフォーマンスが低下します。


1ドライブの未加工容量の固定部分はSLCバッファー専用です。通常、ドライブが大きいほど、バッファも大きくなります。新しいドライブの多くは、ドライブの空き容量を利用してこのバッファを自動的に拡張できます。未使用のメモリセルをSLCモードで動作するように構成して、より高いパフォーマンスをより長く維持できます。データを格納するために実際にそのスペースが必要になると、それらのセルはTLCまたはQLCモードに変換されます。この機能は、ドライブを送信するオペレーティングシステムに依存します TRIMコマンド これは、使用されていないブロックを指定し、ユーザーに対して透過的になるように設計されています。 SamsungはこれをIntelligent TurboWriteと呼んでおり、これは一般的に動的SLCバッファーと呼ばれます。

4
bwDraco