さて、テスト環境であるが、

  • Intel Core i7-920+Intel DX58SO
  • DDR3-1067 CL7 1GB×3
  • ATI Radeon HD 4870
  • HGST DeskStar 1GB×2(RAID0)
  • Windows 7 Ultimate 64bit 日本語版

という比較的おなじみの環境である。ここに、327回でもご紹介した玄人志向のUSB3.0N2-PCIeを装着した。これとは別に、USB HDDとしてセンチュリーマイクロがかつて販売していたSpeedzter Littleを用意し、中にはHGSTのHST541616-J9AT00(2.5inch 160GB/5400rpmのPATA HDD)を入れてある。勿論対応しているのはUSB 1.1/2.0のみである。

さて、この状態でUSB HDDをICH10のUSBポートに繋ぐと(Photo01)、EHCI Controllerの管理下におかれている事が判る。利用されるDriverはMicrosoft提供のBOTを使ったMass Storage Class Driverそのものである(Photo02)。一方、USB3.0N2-PCIeの方に接続すると、この通り(Photo03)NECのxHCIの管理下におかれている事が判る。こちらも利用されているのは(もともと提供されているDriver CDにUASP Driverが含まれて居ないこともあり)BOTのMass Storage Class Driverそのものである。

Photo01: 表示が長いので途中で省略。ICH10のEHCIコントローラの下にぶら下がっているのが判る。

Photo02: Windows 7のInbox Driverそのものである。UASPドライバは現時点ではMicrosoftからは提供されないので、Host Controllerのベンダーが提供を開始するのを待たなければいけない。

Photo03: この構図は以前も示したことがある。ちなみにここで試したのは、USB3.0N2-PCIeに付属してきたVersion 1.0.17.0(2009年10月26日版)のDriver。

Photo04: 全く同じものが使われた。これはまぁ当然ともいえる。

さて、この状態でそれぞれCrystalDiskMark 3.0を実施した結果がこちらだ(Photo05,06)。別に絶対的なベンチマーク比較をしたいわけでないし、接続しているHDDが2.5inchの160GB/5400rpmという時点でそれほど高い性能が期待できるわけではない。まぁご覧のとおりテスト項目によって多少でこぼこはあるが、概ね同等のスコアを出すと考えていただいて良いだろう。

Photo05: こちらがICH10側の結果。ちょっとSequential Readの性能が低めの方向に振れる傾向。

Photo06: こちらがUSB3.0N2-PCIe側の結果。今度はSequential Writeの性能が低めの方向に振れる傾向。

次に、コアを1個だけにし、かつHyper-ThreadingをDisableにした状態(要するにTask Managerを開くとCPU稼動数が1になる状態)で、500MBのSequentia Read/Writeだけを行った結果をちょっとご覧いただきたい。Photo07,08がICH10を使った場合の結果とTask ManagerにおけるCPU利用率、Photo09,10がUSB3.0N2-PCIeを使った場合の結果とTask ManagerにおけるCPU利用率である。先になんで1コアのみ有効にしたりHyper-ThreadingをDisableにしたりしたかというと、流石に8コア相当ともなるとなると、Task Managerの表示領域がその分狭くなってしまい、テスト開始から終了までがまとめて表示できない(途中で切れてしまう)事と、処理がどのThreadで行われるかが変わるため、追いにくいためである。このPhoto08とPhoto10を、丁度テスト開始→終了の範囲にあわせて上下に並べたのがPhoto11である。上段がUSB3.0N2-PCIe、下段がICH10の結果である。縮尺などはいじってないので、ほぼ同等と考えていただいて良い。かっちり数字で言うのは難しいが、概ねCPUの負荷が3分の1程度に収まっていることが見て取れる。

Photo07: 今回はSequential Readのみ。概ねPhoto05と同じ結果に収まっている。

Photo08: 縦軸はCPU負荷が4%ごととなっている。横軸は0.5秒おきに更新(Task Managerで「表示→更新の頻度」を「高」に設定している。ピークは負荷が44%程度であるが、それよりも負荷20%程度のスパイクがかなり煩雑に発生していることが判る。

Photo09: こちらもPhoto06とほぼ同じ性能になっていることが判る。

Photo10: ピークも20%程度で、またスパイクが大幅に小さくなり、頻度も減っていることが判る。

Photo11: 判りやすいように、上段のUSB3.0N2-PCIeの結果は色を黄緑→青に変えてみた。

この負荷の低さがxHCIのもう一つの特徴という事が出来る。xHCIはEHCIの場合と異なり、既存のUHCI/OHCI/EHCIを全てこれで置き換える事を目標にしている。で、たとえばあるDeviceをHandlingする際に、接続がUSB 3.0であればイベントドリブンベースの、CPUに負荷をかけないインプリメントとし、USB 1.1/2.0であれば一々ホストに処理を戻してポーリングさせるというのは、むしろそう作るほうが難しいほどだ。可能な限りUSB 1.1/2.0/3.0で共通の処理はまとめて行うのが望ましいし、違いがある部分についても、そこで一々Hostに処理を戻すのではなくxHCI内部で処理を済ませてしまう方が、全体として収まりが良いのは明白だ。こうした方針転換により、xHCIコントローラを使う事で単にUSB 3.0 Deviceを使う事ができるだけでなく、既存のUSB 1.1/2.0 Deviceを使う際にも負荷が明確に減ると言うメリットが生まれることになった。惜しむらくは、この特徴は古いPC(特に古めのノートPC)で一番生きてきそうなのだが、あいにくこうした古いマシンはPCIe Gen2のレーンとかを持っていない場合がしばしばあることだろう。

(続く)