ディスク ドライブ インターフェイスはデータ転送のボトルネックになることが多いと言われています。たとえば、ハード ドライブの場合、データはハード ドライブ バッファからハード ドライブ メモリ モジュールに転送されます。ハード ドライブ バッファはキャッシュ メモリなので、インターフェイスがボトルネックになるのはなぜでしょうか。キャッシュは SRAM の一種です。したがって、転送速度は速いはずです。なぜそうならないのでしょうか。
答え1
ハードディスクと SSD は、現在ではシリアル接続が最も一般的に使用されていますが、歴史的には IDE インターフェイスが使用されていました。IDE は、基本的に、初期の PC で使用されていた ISA バスの簡易版でした。そのようなコンピュータでは、おっしゃるとおり、デバイス レジスタに直接アクセスできました。しかし、PCI が登場すると、PCI の方が高速になったため、古い IDE ドライブは直接アクセスするには遅すぎました。IDE (または、名前が変更された ATA) の後の改訂版では、速度が向上しました (ただし、幅は向上しませんでした。PCI は 32 ビット幅でしたが、ATA は 16 ビットのままでした)。しかし、プロセッサ速度は向上し続け、PCI も ATA も追いつくことができませんでした。
最終的に、ATA のパラレル インターフェイスからシリアル インターフェイスに切り替えました。これにより、プロセッサへの接続は直接的ではなくなりますが、シリアル インターフェイスははるかに高速に実行できるため、フル スピードでの実行に非常に近くなります。ただし、それでも遅延が発生し、高速 RAM よりも遅くなります。
昔の高速 ATA ドライブでは、バスと同程度の速度で動作する 70 または 80 ns のメモリが使用されることが多かったです。最近のメモリは高速ですが、バスほど高速ではありません。最近のドライブは、スループットを向上させるために、以前使用していた 16 ビット プロセッサからより広いバス サイズに切り替えたのではないかと思います。
答え2
ハード ドライブ バッファはキャッシュ メモリなので、なぜインターフェイスがボトルネックになるのでしょうか?
バッファ/キャッシュの内容をチェックする必要があるため、バッファを使用するとレイテンシ (リクエストごとの時間の増加) が増加します。では、なぜバッファが必要なのでしょうか。通常、データは線形であるため、次にバッファをチェックするときには、すでにバッファ内にある可能性が高いため、ディスクをチェックする必要はありません。
もう一つの問題は
キャッシュは SRAM の一種です。したがって、転送速度は速いはずです。なぜそうならないのでしょうか?
データがバッファ/キャッシュからロードされる場合は高速です。これは、データがすでに存在する場合にのみ発生します。データがキャッシュにない場合はディスクに読み込まれるため、速度が低下します。データが継続的に読み取られる場合は、キャッシュがディスクに比べて小さいため、キャッシュにない可能性が高くなります。