SSDとHDDの本当のアクセス速度を、FPGAで専用ハードウェアを作って測ってみた
開発中のSerialATAのIPコアを用いて、HDDとSSD(Solid State Drive)のアクセス速度の比較を行ってみました。
パソコンにつないでベンチマークソフトで測るのではなく、FPGAで作った専用のハードウェアで測ります。だからパソコンの性能に左右されず、ドライブの真の実力が測れるだろうと思うわけです。
下の写真は実験環境のセットアップです。EXPARTAN-6Tという、XILINX FPGAの評価ボードにSATA IPコアを入れて動かしています。
使ったHDDはHitachiのHDS721050CLA362というもので500GBの容量があります。最大セクタ数は976,773,168です。
それに対してSSDはOCZのVertex PLUSというもので60GBの容量があります。最大セクタ数は11,7231,408です。
いずれも、DMAモードで転送します。1回のブロックは65536セクタ(32MB)で、このブロックのサイズを読み書きに要した時間で割ることによって速度を求めます。
HDDにアクセスするのはFPGA内のロジックですが、コントロールソフトはWindows上で組んでいます。こんな感じです。
まずはHDDの様々なセクタに対してDMAライトを行い、実行時間を測定しました。その結果、番号が若いセクタはだいたい300ms前後でアクセスできているのですが、全セクタ数の50%を超えたあたりからアクセス時間が長くなってくる傾向が掴めました。
下のグラフでは、横軸がセクタ番号、縦軸がアクセス時間(上にいくほど遅い)を示しています。
この時間の逆数をとるとアクセス速度が求まります。このようにして、読み書きのアクセス速度と、セクタ番号の相関を測定しました。
セクタ0のあたりでは書き込みが110MB/s、読み出しが130MB/sほどでています。しかし、後ろのほうのセクタになると約半分の速度しか出ていないのがわかります。
この原因は、HDDのシリンダ1周に含まれるセクタ数が内側のものほど少ないことに起因しているのだと思われます。つまり、番号が若いセクタほどHDDの外側に記録されているのではないかと考えられます。
一方、SSDの方はどうかというと回転する部分はありません。アクセス速度をグラフにしてみたところ、セクタ番号の依存性は全くないことがわかります。
読み出しは140MB/sec出ていて、これはSATAの実効伝送速度そのもので読み出せていることがわかります。読み出しに関しては申し分ありません。
書き込みは133MB/s出ている場合もあれば、その半分の60MB/sの場合もあります。これは何かというと、どうやら5回に1回の書き込みで非常に遅くなっていることがわかりました。
次のグラフは、シーケンシャルにアクセスしていった場合の書き込みに要する時間をプロットしたものです。
65536セクタの1ブロックを書き込むのに要する時間が、250msが4回連続した次は550msかかっています。よって平均の書き込み速度は107MB/sec程度ということになります。おそらく、SSD内には128MB程度のSDRAMのキャッシュが内蔵されていて、最初の4回まではキャッシュに入って5回目で実際のフラッシュROMアレイに書き込んでいるのでしょう。
なお、書き込み後にフラッシュコマンドを送った場合は、1ブロックの書き込みに400msかかりました。実行転送レートは83MB/sになってしまいますのでフラッシュは明示的に行うのではなく自動でやらせたほうがいいようです。
なお、このSSDのメーカー(OCZ)のページを見ると、60GB品は最大書き込み速度は90MB/sで、120GB品になると最大書き込み速度は160MB/sとのことでした。おそらく増えた容量はパラレルに入っていて並列で書き込みができるようになっているのでしょう。容量が増えると書き込み速度も上がるというのがSSDの面白いところだと思います。
やっぱりフラッシュメモリは消去や書き込みにそれなりの時間がかかるのでしょう。シーケンシャルアクセスでいいなら、現時点では無理にSSDを使うより、HDDの前半分を使ったほうがコストパフォーマンスもよいかもしれません。
◆
そんな感じで完成に近づいてきたSATA IPコアですが、どのような応用例を考えているかというと、
・高エネルギー物理学/放射線計測などにおけるデータ・キャプチャ
加速器を使った実験って、毎秒ものすごい量のデータが来るんです。それを蓄えておくのにSATAのHDDは良いのですが、一度パソコンを通してしまうと速度が保障できなくなるので、FPGAとHDD直結っていうのが最も良いのではないかと思うわけです。
・超高速A/Dコンバータを用いたシステムにおける変換データの連続的な格納
毎秒100Mサンプリングとかでも、取りこぼさずに全部保存できそうですね。
・高解像度/高フレームレートの産業用カメラの長時間録画
4k2kの60フレームとかになると、さすがに生データの保存は無理か・・。圧縮しないといけないかも。
・ディジタル通信(ワンセグ放送、最新ビデオ信号規格)の機器開発のための、波形の丸ごとキャプチャ
そういうことができたらいいでしょうね・・。
などを考えています。
FPGAとSATA SSDがダイレクトにつながるということは、FPGAが超大容量のストレージを手に入れたというわけです。基板上のDDR2 SDRAMには入りきらない膨大なデータを扱えるようになるわけですから夢が広がります。
| 固定リンク
コメント