技術的なことですが教えてください。


SSDはHDDと比較してランダムアクセスが早いですが、なぜシーケンシャルアクセスと同じくらいの速度が出ないのでしょうか?

HDDが遅いのは、物理的に読み取りヘッドが大きく動くので遅いのがわかります。

回答の条件
  • 1人1回まで
  • 13歳以上
  • 登録:2019/01/31 09:14:30
  • 終了:2019/02/07 09:15:05

回答(2件)

id:bnn No.1

bnn回答回数109ベストアンサー獲得回数372019/02/01 14:39:26

ポイント50pt

気になって調べたことがあります。

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程度のファイルを大量に処理する機会があれば見てみても面白いかもしれません。

技術者ではないので所々間違っているかもしれませんが、自分はこんな感じで簡単に理解しています。

id:xx3stksm No.2

xx3stksm回答回数1ベストアンサー獲得回数02019/02/03 15:57:19

ポイント50pt

OSのクラスタサイズに関連しますが、セクタは512バイトなので最悪では4Kのファイルは読み取りコマンドを8回出す必要があります。4k以上のクラスタサイズであれば一度だけの可能性はありますが、ソフトウエアとしてどうなっているのかは何とも分かりません。クラスタサイズが大きいほど有利なのは間違いないです。

SSDはフラッシュメモリーなので内蔵のコントローラーが間に入りデータ処理をします。フラッシュは構造としてウエアレベリングが必要なので、コントローラーが適度にこれをやってます。その最中は外部からのアクセスは不可能となります。その頻度や効率はメーカーに依存しますのでこれまた何とも分かりません。このコントローラーの自作はほぼ不可能なので、市販のメモリーカードを使ったとしてもこの問題はあります。

この外部からのアクセス禁止はメモリーカードの場合意外と長く、大容量の転送時には0.1秒を超えるのも珍しくありません。いずれにしても、ちょっと考えてもその2つの不確定な要因がありますので、実質的なスピードは、単純なフラッシュのアクセス時間よりもかなり落ちるでしょう。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません