パソコン本体と周辺機器やUSBメモリなどを接続するための次世代インタフェースとして、最大5Gビット/秒のデータ転送速度を実現する「USB3.0」が注目を集めている。本連載では低コストFPGAを使うことで、USB3.0インタフェースを低リスクで、容易に実現することができるソリューションについて紹介してきた。本稿では、USB3.0インタフェースの開発/検証に用いたアルティマ製ボード「Cyclone III USB3.0 Board」のベンチマーク測定の結果について解説する。

 これまで、「ステップ1」「ステップ2」で、USB3.0インタフェースの概要や基板設計のガイドラインなどを述べてきた。USB3.0インタフェースは、現行のUSB2.0インタフェースに比べて通信速度が約10倍と高速である。また、大容量の画像データを高速伝送するのに適したBurst転送機能なども新たに追加されている。このため、USB3.0インタフェースは、放送用カメラ、記憶装置、FAカメラなどへの搭載に期待が高まっている。しかし、下位互換性を確保しつつ、次世代インタフェースとして性能や機能が大幅に向上したことで、回路設計者にとってはUSB3.0インタフェース回路を設計する際の難易度も高まった。

 こうした中で、機器設計者は、開発リスクを抑えつつ低コストで、早期にUSB3.0インタフェースを開発することが求められている。ステップ1でも述べたが、USB3.0インタフェースを実現する手段としては、「ブリッジASSP」や「フル機能を取り込んだASIC」を開発/採用するか、「FPGAとPHYチップの組み合わせを利用した開発」といった方法がある。現時点では機器設計者の要求に応えられるUSB3.0対応の専用チップが簡単に入手できる状況ではなく、機器メーカー側で独自に開発するケースが多いようだ。

写真1:アルティマが開発した「Cyclone III USB3.0 Board」の外観
写真1:アルティマが開発した「Cyclone III USB3.0 Board」の外観
[画像のクリックで拡大表示]

 このような技術者に向けて、USB3.0インタフェース開発における課題を解決する手法の1つとして、本連載では低コストFPGA「Cyclone III 」を用いたUSB3.0ソリューションを取り上げてきた。今回のステップ3では、これまでステップ1やステップ2で紹介してきたCyclone III USB3.0 Board(写真1)の性能について、ベンチマーク用ソフトウエアや各種測定器を使って実施した評価テストの結果を紹介する。

 Cyclone III USB3.0 Boardのベンチマーク測定を行うに当たって、ホスト(PC)側のPCIe Gen2レーンに、PCIe to USB3.0のホストボードを実装した。その上で、Cyclone III USB3.0 Board をUSB3.0ケーブルでホスト側と接続し、ホスト側にはマスストレージ・クラスとして認識させた。

 検証環境のシステム構成は、CPUが「Intel Core i7 9200」、OSが「Windows XP sp3」で、メインメモリは3Gバイトを実装した。ドライバソフトとしてはWindows標準マスストレージドライバを使い、ホストボードは「IFC-PCIE2U3」を用いた。さらに、USB3.0インタフェースの開発/検証に必須となるプロトコルアナライザはEllisys社の「USB EXPLORER 280」を、ベンチマーク測定ツールとしてはフリーツールの「CrystalDiskMark3.0」をそれぞれ使った。

IN転送で194.9MB/s、OUT転送で166.9MB/s

 USB3.0インタフェースは、使用するホスト環境によってもその転送速度の数値は異なる。上述の検証環境で行った結果を図1に示す。「Sequential Access(512kバイト転送)」の場合、読み出し(READ、IN転送)で194.9Mバイト/秒、書き込み(WRITE、OUT転送)で166.9Mバイト/秒となった。「Random Access(512kバイト転送)」の場合だと、読み出しで192.9Mバイト/秒、書き込みで164.5Mバイト/秒となった。今回は特殊なドライバソフトウエアは開発しておらず、すでにWindowsに実装されている標準マスストレージドライバをそのまま使った。

図1:CrystalDiskMark3.0で測定した結果
図1:CrystalDiskMark3.0で測定した結果
[画像のクリックで拡大表示]

 専用のドライバソフトウエアを用意するなど最適化を図ることで、転送速度はさらに改善される。ちなみに、USB2.0インタフェースの転送速度は、読み出しが約21Mバイト/秒、書き込みが約5Mバイト/秒というのが一般的のようだ。

「Command」と「Status」がオーバーヘッド

 ここで、マスストレージ・クラスのデータ転送方式について紹介する。マスストレージ・クラスは、「Command」、「DATA」、「Status」の順番でデータ転送が行われるため、「Command」と「Status」の分だけオーバーヘッドが大きくなる。

 IN転送を解析した結果では、「Command」と「Status」間(1Block)の転送速度は268Mバイト/秒となる。DATAのみを1パケットとすれば、その転送速度は329Mバイト/秒となる。1Blockを3回繰り返した場合のデータ転送速度は188Mバイト/秒である。

 OUT転送では、「Command」と「Status」間の転送速度は236Mバイト/秒、DATAのみ転送すると244Mバイト/秒、1Blockを3回繰り返した場合のデータ転送速度は161Mバイト/秒となった。

 IN転送、OUT転送のいずれの場合も、Windows XPのウィンド・サイズにより、データは64kバイト/秒(64パケット)となり、64kバイトの転送後のウエイトがボトルネックとなる。

 今回は、ベンチマーク測定ツールを使ってCyclone III USB3.0 Boardの実力を探った。次回のステップ4では、Cyclone III USB3.0 Boardと、市販されている2種類のホストボードおよび3種類のマザーボードを使って実施した接続確認の実例を挙げ、接続不具合を生じた際の検証項目や原因解明の手法などについて解説する。

この記事は、アイティメディア社『FPGA Insights』に掲載されていたコンテンツを、アイティメディア/EDN Japanの許可を得て転載しています。

目次