大原雄介の最新インターフェイス動向

USB 3.0 その2



 USB 3.0のスペックは、一言で言えば「速度1桁向上」である。USBの場合、USB 1.1が1.5Mbps/12Mbps、USB 2.0で480Mbpsとなっており、バージョンが進むごとに概ね1桁の速度向上が実現している。この延長で言えば、USB 3.0もやはりGbpsのオーダーでないと間に合わない事になり、そこから5Gbpsという数字にたどり着いたことになる。

 余談ながら、バスというか内部接続一般にであるが、1桁づつスピードアップするものと、2倍を積み重ねるものの2種類がある。1桁づつスピードアップするものの代表がEthernetで、最初は数Mbpsだったのが、その後は10Mbps→100Mbps→1Gbps→10Gbpsと、概ね1桁づつ高速化がなされている。もっともその次は、一足飛びに100Gbpsは難しかったようで、40Gbpsを経由して100Gbpsに進もうとしている。広い視野で見れば、PCのI/Oバスも、XT Bus(4.7MB/s)→ISA Bus(16.7MB/s)→PCI(133.3MB/s)と、毎回大きなジャンプを見せている(*1)。

 逆に小刻みに性能を上げているものは一杯あり、たとえばIDE(4.77MB/s→8.3MB/s→16.7MB/s→33.3MB/s→66.6MB/s→100MB/s→133MB.3/s)や、SATA(150MB/s→300MB/s→600MB/s)、PCI Express(2.5GT/s→5GT/s→8GT/s)など、幾らでも出てくる。技術的に言えば、いきなり1桁増やすのは当然難易度が高いが、だからといって1.25倍とか1.5倍程度の高速化では「コストに見合わない」ということで対応してもらえずに、結局規格が死んでしまうことも考えられる。「コストは掛かるが、まぁ性能もアップすることだし対応するか」となる最小のギャップが2倍程度、というのは経験則に基づく話であるが、現実に即したものでもある。

 では2倍づつの性能アップと10倍の性能アップのどちらが良いか、というのはマーケットの動向に影響される。たとえばIDEやSATAの場合、そもそも製品のライフサイクルが短い(商品ラインナップが年に数回入れ替わる)上に、ドライブを提供するベンダーは数少なく、コントローラを提供するベンダーもそう多くない。しかも利用されるのは、(新陳代謝の激しい)PC用途がメインである。こうしたケースでは、端的に言えば1年おきに規格がアップデートしたとしても、それに対応する製品を次々と市場投入することができるだろう。

 ところがEthernetやUSBの場合、単にPCのみならず極めて幅広い分野に利用されており、製品のライフサイクルも遥かに長いものが存在する。こうなると、ころころ規格をアップデートしても、それに対応してくれる製品はそう多くないことが想像されるため、ヘタをすると「死に規格」になりかねない。従って、規格の更新頻度は当然落ちる(というか、落ちざるをえない)し、そうなると更新の際には2倍程度ではなく、もっと明確に性能アップを実感できるような差が必要になり、その結果が1桁向上というわけだ(*2)。

(*1) 途中にVL-BusやEISAが挟まるという意見は当然あると思うが、あくまでもマクロな視点での話なのでご容赦いただきたい。
(*2) もっともEthernetの場合には、帯域に対するニーズが急増した結果、倍じゃ効かなくなった、という背景も無くはない。

 さて、USB 2.0から1桁増やすことを目指したUSB 3.0であるが、そもそもニーズとしてはフラッシュメモリを初めとする高速ストレージを接続するのに、USB 2.0では性能が明らかに不足しているという問題があった。フラッシュメモリはSDHCですら10MB/secを超える性能を出しており、特にSSDなどでは通常のHDDを超える性能が簡単に出せるにも関わらず、USB 2.0を使う限りピークで60MB/sec、実効性能では30〜40MB/secに制限されるという問題があった。

 加えて、こうした高速転送を掛けるとホスト側CPUへの負荷が大きく、また消費電力も大きいといった問題もあった。こうした問題を全部解決することがUSB 3.0の課題であった。また、実装コストを低く抑える事も重要とされた。

 勿論リリース当初は多少高価格であっても差し支えないが、長期的には現在のUSB 2.0と同様に、「搭載されていて当たり前」のインターフェイスになることを目指しているから、低コストで実装できることが望ましい。このあたりを考えると、新規に物理層から開発するのは得策ではなく、既に存在するインターフェイスを流用するのが長期的に低コストを実現する早道と判断された。こうした判断により、当初はSATAのインターフェイスやPCI Express Gen1/Gen2、Serial Rapid I/Oなど複数のインターフェイスを流用することを検討したようだ。

 特にコスト面から言えば、SATA 2.5の300MB/secあるいはSATA 3.0の600MB/secはかなり魅力的に映ったようだ。ただSATA 3.0の600MB/secは標準化と対応インターフェイスの作成が遅れており、USB 3.0の検討時期には間に合っておらず、またPCI Express Gen1は安価なものの、速度面でそれほどのインパクトがない(250MB/secでしかないから、当時のSSDでも、それほどヘッドルームは無いと判断された)ということで、必然的にPCI Express Gen2をベースにする方向で話は決まったようだ。

【写真1】後方互換性は最終製品利用者の、同一デバイスモデルは開発者の利便性をそれぞれ考えたもので、まずこれが来て、ついで10倍の性能向上が来て、最後に電力効率と拡張性が来るという感じ

 これが決まった上で立てられた設計目標が写真1である。とにかく最重要事項とされたのが後方互換性で、これが何よりも重要だとUSB-IF ChairmanのRavencraft氏は2007年9月のIDFの会場で語っていた。

 また後方互換性を保つためには、ソフトウェアからの扱いも同じようにする必要がある。たとえばUSBの場合、コントローラを直接扱うのはベースドライバであるが、その上にデバイスクラスに応じたクラスドライバがあり、更にフィルタドライバと呼ばれるものが被さる形で利用される。

 例えば、「アプリケーションの反応にあわせて踊るマウス」というハードウェアを作ったとする。これを使うためにはそれなりのドライバが必要であるが、その場合、開発者は「アプリケーションの反応にあわせて踊る」部分だけをフィルタドライバで作れば良い。USBコントローラとこのマウスの通信そのものはベースドライバに任せておけば良いし、基本的なマウスの動作はHID(Human Interface Device)のクラスドライバが担ってくれるので、マウスボタンのハンドリングやマウスの移動の処理などは、全部お任せできる。USBには既に数十のクラスと、この上で動く大量のフィルタドライバが既に存在しており、これを使えるようにしなければUSB 3.0の成功はおぼつかないからだ。

 これらに加え、10倍の速度を活かせるような構造と省電力性を確保することがUSB 3.0の設計目標とされた。プロトコルそのものは、単に5GT/secに留まらず、将来更に高速なバスが利用できるようになっても対応できることが考慮された。プロトコル自身は、最低でもUSB 3.0の5倍である25GT/secにも対応できるそうである。「25GT/secの基準は?」という事をAbdul "Rahman" Ismail氏(当時はProtocol and Framework WGのChairman。現在はUSB-IFでCompliance CommitteeのChairmanを務める。Ravencraft氏同様にIntel社員)に聞いたところ、「その数字自体に何か意味があるわけではないが、無尽蔵に高速な数字を設定しても無駄にプロトコルが困難になるだけで意味が無い。25GT/secというのは、設計目標として手頃な数字だ」という返事であった。

 穿って考えると、当時のIntelのSilicon Opticsではほぼ10Gbpsは確実に実現可能で、20Gbsが射程に入っているというあたりであった。なので(実現の可能性は低いにしても)もしUSB 3.0の次世代で銅配線に代えて光ファイバーを使う事になっても、プロトコルをそのまま流用する事を念頭に置いたものと思われる。プロトコルが同じならば、物理層だけを交換して、上位層は原則そのまま、という形でスムーズにアップグレードが出来る可能性があるからだ。

 しかしながら面倒だったのは、USB 3.0の通信方式にPCI Express Gen2の配線を流用したことだ。UBS 1.1/2.0は2線式のインターフェイスで半二重で通信が行なわれる。つまりホスト→デバイスとデバイス→ホスト、どちらの通信も同じ配線を使う形だ。

 対してPCI Express Gen2では4線式のインターフェイスになる。つまりホスト→デバイスとデバイス→ホストは異なる配線を使って通信を行なう全二重の方式である。この時点で、物理的に配線の互換性がなくなっていることが明白である。まずコネクタの接点の数が物理的に足りないし、従来のケーブルのまま、10倍高速な信号を通すのは無理であった。

 そこで思い切って、内部の配線をUSB 2.0とUSB 3.0で完全に分けるという形で実装が採られることが決まった(写真2)。割と力技な実装であるが、一度この方針が決まると、内部構造も決めやすい。レイヤー構造も、「PCI Expressの物理層の上にUSBのプロトコルを載せる」(写真3)という方向で実装され、アプリケーションから見ると「USBのパイププロトコルがそのまま利用できる」が、中身は全然別物に仕上がった。

【写真2】単に配線だけでなく、ホストコントローラ/デバイスも、USB 2.0とUSB 3.0では動作する部分が変わってくる。当然ハブも、内部はUSB 2.0とUSB 3.0で別々に動作する 【写真3】当初はリンクコントロールの機能の一部がトランザクション層に含まれていたが、最終的にはすっきりした形に収まった

 ちなみに現在でも USB 3.0=USB 2.0のプロトコル+PCI Express Gen2の物理層といった理解をされる事があるが、内部構造は全くの別物になっている。強いて例えれば、Intel486とCore 2はどちらもほぼ同じx86命令を利用できるが、内部構造はまるで別物になっている。USB 2.0と3.0では、実装がそのくらい異なっている。

 内部構造の話は機会を改めるとして、外部から見ていく。まず配線であるが、写真4のように4対の配線を1本にしたものになっている。この4対の内訳は

・USB 2.0の送受信:1対
・USB 3.0の送受信:2対(ホスト→デバイスとデバイス→ホスト)
・電源:一対(+5VとGND)

【写真4】左下は配線長と電気損失の関係を示した図。信号速度が高いため、どうしても配線が長くなると損失が大きくなる。1.5m/2mのケーブルは5GHzでほぼ同等の信号損失だが、3mでは倍以上、5mでは3倍に達する。このあたりを考慮してか、公式にはケーブルの長さは3m以内に抑えられている。実際あまり長く引っ張りまわすのは考え物で、できれば2m以内に抑えたいところ

となっている。これを1本の被覆で纏めるわけで、当然ながら結構配線は太いものになっている。既にPCショップなどではUSB 3.0のケーブルも普通に販売されるようになっているが、概ね5mmφのもので、中にはもう少し太いものもある。もっともUSB 3.0の仕様では、USBケーブルの材質や構造は、あくまでも参考というかガイドライン扱いであり、基本的には信号損失とクロストーク、ジッタ、インピーダンスマッチといった電気的な特性が定められているだけであり、こうした電気的特性を満たし、かつシールドがちゃんと施されていれば、例えば「きしめんケーブル」のような細長い形状であっても構わない。なので、将来的にはもう少しバリエーションが増えるかもしれない。

 これと組み合わせるコネクタであるが、細長いStandard-Aの方は、写真5のように、手前にUSB 2.0、奥にUSB 3.0という2段構えのコネクタの形状をとっている。Standard-Aは物理的に「既存のUSB 2.0コネクタと互換」を維持しており、ここにUSB 2.0のコネクタを装着しても問題なく利用できるようになっている。逆にコネクタBは、既存のUSB 2.0コネクタの上に、新たにUSB 3.0を建て増ししたような形状になっている(写真6)。これにより、

・USB 3.0デバイスにUSB 2.0コネクタを挿入:OK
・USB 2.0デバイスにUSB 3.0コネクタを挿入:NG

という形で、明確に誤挿入を防ぐような構造とされている。

【写真5】この形状だと「USB 2.0のコネクタを挿した場合、USB 3.0の接点にUSB 2.0の接点が接触しないか」という疑問が沸くかも知れない。これを避けるため、USB 3.0では「コネクタ側の接点が盛り上がっている」(USB 2.0ではレセプタクル側の接点が盛り上がっている)」という実装になっている 【写真】2階部分が3mmほど、従来のUSB Standard-Bコネクタより盛り上がっており、どんなに頑張っても物理的に挿入できない

【写真7】Micro-A/Micro-Bのほかに、Micro-ABコネクタが用意されるのは、製品によってはホストとデバイスの両対応になるものがあり、こうした両対応製品ではMicro-ABを使うことを考慮しているためだ

 またStandardタイプのコネクタでは大きすぎる用途(例えば携帯電話とか、ポータブルHDDケースとか)向けにはマイクロコネクタも定義された(写真7)。流石にこのサイズでは、USB 2.0とUSB 3.0の信号を1つのコネクタに収めるのは無理(技術的には可能かもしれないが、コネクタのコストが相当高いものになると判断されたようだ)ということで、USB 2.0とUSB 3.0の2つのコネクタが並んだ形で実装されるという、ちょっと場所を取るものになった。

 ところで広く利用されているMini-USBコネクタに関しては、USB 3.0ではサポートされないことになっている。これについてRavencraft氏は「確かに現在はMini-USBが広く利用されているが、同時にMini-USBからMicro-USBへの移行も進んでいる。なので(USB 3.0が)携帯機器などに入ってくる時期には、もうMicro-USBがメインになると考えてMini-USBのサポートを省いた」という見解であった。既存のMini-USB製品については、従来のUSB 2.0ケーブルを使えばそのままUSB 2.0デバイスとして利用できるし、新規設計品はMicro-USBを使えばいい、という判断なのであろう。

 次回はもう少し内部の話をしたいと思う。

バックナンバー

(2010年 8月 19日)

[Text by 大原 雄介]