プロが教えるわが家の防犯対策術!

SSDでは、シーケンシャルのほうが、ランダムよりもRead/Writeともに高速ですが、これはどうしてなのでしょうか??

物理的には、ばらばらの位置にあるページにデータが記録されているのに、シーケンシャルのほうが著しく高速になる理由がいまひとつ理解できないです。
(SSDの基本的な仕組みは知っています。)

以下の3つの原因を推測したのですが、合ってますでしょうか?
でも、これらの理由だけではせいぜい数倍の差しかつかなくて、ベンチマーク上での大きな速度差を説明できないような気がします。。。


1.物理ページの大きさ
 物理ページを8Kとする。
 8MBのデータを読み出すとき、シーケンシャルなら1000ページ読み出せばよいが、4Kランダムなら2000ページ読み出す必要がある。
 書き込みの場合は、さらにread-modify-writeのオーバヘッドも発生する。

2.同時処理できるコマンド数
 コントローラが同時処理できるコマンド数が4つで、メモリチップから8並列で読み出せるとする。
 シーケンシャルなら8並列でアクセスできるが、4Kランダムでは4並列のアクセスしかできず、最大スループットを達成できない。

3.コマンド受付自体のオーバヘッド
 コマンドの受付・終了処理などで、オーバヘッドが発生し、その間アクセスが止まる。


もしよろしければ、近年の高速化のための技術などもご教授いただければ幸いです。

よろしくお願いします。

A 回答 (2件)

Crystal Disk Markあたりのベンチマークテストの結果だろうと思いますが、こちらも専門家ではないので、解る範囲で答えさせてもらいます。

なお、間違った解釈等がありましたらご容赦下さい。その場合は、もっと詳しい方の解答にお任せします。

シーケンシャルアクセスの場合、CPUはコマンドを発行するだけで実際の転送は、大きなブロック単位でDMA(Direct Memory Accesse)転送されます。

DMA転送は極めて効率が良く、転送にCPUが介在しないのでオーバーヘッドも殆どありません。従って、HDDの持っている転送能力ギリギリまで転送可能なのです。

これに対し、ランダムアクセスは、比較的小さいブロック毎の転送となり、DMA転送の利点が生かされません。転送毎にCPUが介在するので効率が低下します。

それでも、512KBブロックあたりは、シーケンシャルアクセスに迫る転送レートを出すケースもあると思います。

これが、4KBくらいになると、がっくり転送レートが落ちてきます。

まあ、こう言った仕掛けではないかと思っているのですが、如何でしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

なるほど。
単純なコマンドの個数の差だけでなく、DMAがうまく効いているかどうかでも結構差が出そうですね。

これも考えると、なんとなく、大きな差も生じそうな気がしてきました。

お礼日時:2011/06/08 23:41

あまりくわしかないですけど、DRAM的なアクセス高速化手法が使えるならバーストモードでアドレス指定してるとかないんですかね?


それだけでコマンドオーバーヘッドが劇的に減る気がします。

あと、最近のNCQ対応SSDだとQD32が有効なら「せいぜい数倍」の差に収まってしまう気も。
http://www.cfd.co.jp/ssd/sns1q.html
とか見るとランダムデータの書き込みではまったく変わりませんし。(まあこれはデータ圧縮で書き込み速度を稼ぐSandForceコントローラの特性もありますけど)

他にはサムスンの470シリーズSSDで「Toggle DDR FlashROM」を使ったという話がありましたが…
対応コントローラが少ないからなのか、あまり手広く使われてるという感じはありませんね。(逆に新型では使われてて当たり前で特別にはアピールされてないという可能性もありますが、ちょっと考えにくいかなと)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
URLの参照先のベンチ結果拝見させていただきました。

>コマンドオーバーヘッドが劇的に減る気がします。
僕もランダムだとコマンドを多数受け付けるから、多少差がでるのかと思ってましたが、
Writeの結果見る限りでは、コマンドオーバヘッドは小さいようですね。

NCQ使うとずいぶんと、性能が上がりますね。
並列度の高いSSDとは特に相性がよさそうですね。
きっとこのSSDのコントローラはかなり頭よくて、並列実行できるコマンドを的確に選んでるんでしょう。

圧縮して書き込むコントローラや、Toggle DDR というのも初耳です。
参考になりました。

お礼日時:2011/06/08 00:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!