SSDはHDDと比較してランダムアクセスが早いですが、なぜシーケンシャルアクセスと同じくらいの速度が出ないのでしょうか?
HDDが遅いのは、物理的に読み取りヘッドが大きく動くので遅いのがわかります。
気になって調べたことがあります。
SSDがHDDより速いのは可動パーツが無いのに加えて、複数のチップが並列的に処理しているのもあります。
恐らくCrystaldiskmark等のベンチマークソフトの4kを参考にしているのかと思うのですが、シーケンシャルではCPUから1つの命令が出され、SSDが並列処理を最大限生かせるのに対して、ランダム(4k)ですと小さいファイルを一つ一つ命令を出し処理するのでチップ数の利点を生かせず直列に近い処理になってしまう。
例えるなら5車線ある道路に一度に50台の車を走らせる(シーケンシャル)と10列で済みますが、これを1台ずつ(ランダム)走らせると50列になるので遅くなるようなものです。
このチップ数(車線数)とブロックサイズ(車の大きさ)はSSDや設定にもよるので一概には言えませんが、複数ファイルでも一定サイズ以上のデータを処理するのであれば最大に近い速度がでます。例えば5台ずつ x 10回であれば同じ10列ですね。
512kがシーケンシャルに近い速度を出しているのはこのためです。
4kはいわば個々のチップの性能を測っているようなもので、複数チップで並列処理しているSSDの最大速度より遅くなってしまうのはどうしようもない事です。
ちなみにベンチマークでば4kでもQD32等がありますが、これは返答を待たずに命令を出す回数で、通常の4k(QD1)は1つの命令を出し返答があってから次の命令を出すのに対してQD32ですと返答を待たずに32個まで命令を並べていきます。
するとSSD内ではある程度の並列処理が行えるので速度も上がります。同じ1台ずつ車を走らせるのでも、少々の時間差で次々に別の車線に車を流していく感じですかね。
ソフトやSSDの対応状況、スペック等が関係するのでシーケンシャルに比べ製品差が大きいのではと思います。リソースモニターの「ディスク」→記憶域のディスクキュー欄で現在のDQが確認できます。数kb程度のファイルを大量に処理する機会があれば見てみても面白いかもしれません。
技術者ではないので所々間違っているかもしれませんが、自分はこんな感じで簡単に理解しています。
ご参考まで