Top > column > USB
>仮想メモリ
>>USB
>IntelとAMD
>Topに戻る

USB(Universal Serial Bus)

USB(Universal Serial Bus)とはCompaq(現hp)、DEC(Compaqに買収後Compaqをhpが買収)、IBM、Intel、Microsoft、NEC、Northern Telecomの7社が中心となって策定した規格で最初のバージョンであるUSB 1.0は1996年1月に発表され、これを改良したUSB 1.1が1998年9月に発表されました。USB 1.1は、主に周辺機器における消費電力の仕様など、USB 1.0における仕様書で曖昧だった点を厳密に規定したもので基本的にはさほど変わっておりません。

現在USBには1.1と2.0がありますが、あまりご存知でないかもしれませんが、USB1.1はUSB接続の周辺機器とコンピュータ本体の通信を制御するUSBコントローラの種類にUHCIとOHCIの2つありこの2つはまったく互換がありませんのでドライバもすべて別になっています。稀にUSBの機器でNEC製のチップが良いとかIntelのマザーボードでないと動かないとかあるのはこれが要因のこともあります。

UHCI(Universal Host Controller Interface)とはIntelが主導になって策定された規格で同じチップセットも製造しているVIAが賛同しておりこの2社のチップセットはUSB1.1はUHCIになります。インターフェイス部分がシンプルになっておりその分コストが低くチップセットベンダーにとっては良いのですが、シンプルが故にCPUの負荷などが高くなります。

OHCI(Open Host Controller Interface)はCompaq(現hp)、Microsoft、National Semiconductorが共同で策定した規格でnVIDIA、Sis、ALiなどIntelとVIAを除くほぼすべてのベンダーはOHCIを採用しています。UHCIと比べてバスマスタ転送をサポートしているためCPU負荷がほとんどかかりません。IntelとVIA以外はOHCIを採用しているためNECなどもこちらになりUSBの拡張カードはほぼすべてバスマスタをサポートしているOHCIになります。

UHCIは2社だけですが、いかんせんこの2社でPCのチップセットシェアを大多数持っていますので必然的にPCではUHCIが標準になっています。

ユーザーにとってはこの2つの互換のない規格のことを気にする必要はないのですが、USB周辺機器ベンダーはどちらでユーザーが使用するのかわかりませんので両方対応するドライバを用意しなくてはいけません。互換が無いということはドライバの出来も違う訳でIntelマザーボードでは大丈夫だったのにnVIDIAに変えたらなんだか動きが変ということは十分ありえます。

USB2.0では目先のロイヤリティよりも互換性やベンダー負担などを考えてかIntelが主導でロイヤリティフリーでEHCI(Enhanced Host Controller Interface)を公開し、各ベンダーは対抗規格を立ち上げることも無くEHCIが普及しています。EHCIはUHCIとOHCI双方の上位互換となっていますのでUSB2.0ではどのプラットフォームでも同じになりますので安心です。

ただしEHCIはUSB2.0の動作時のみの話ですので最近のUSB2.0対応マザーボード、拡張カードを使用するときでもUSB1.1動作ではUHCIとOHCIに分かれてしまいます。例えばIntelはEHCI/UHCIになっていてnVIDIAなどはEHCI/OHCIという形になっています。

OHCIマザーボードでUHCIは使えないのかと思われるかもしれませんが、IntelのUSBはチップセットに統合されているのでUSB専用でチップは作っていないと思いますので拡張カードは見たことがありません。唯一見たことあるのはVIAのUSBコントローラーを積んだものがあります。VIAですのでUHCIと思いますが、玄人志向のUSB2.0V2-PCIだけぐらいでしょうか。この商品初回出荷時にドライバにウイルスが混入していて印象に残っています。回収後ドライバを新しいものにした現在のV2ですが教訓を活かしてMcAfee製Anti-Virusが同梱されています。

ちなみにMacはOHCIを採用しています。OSが違いますので同じOHCIでもWindowsとはその他のドライバが別ですのでUSB機器全体としてみたときの動きとしては別のものです。(例えばUSBのMIDIインターフェイスが動作するにはUSB以外にもそのインターフェイスのその物のドライバが必要ということです)

USBには長さ制限があります。Low-Speed 1.5MHzは3mまで、High-Speed 480MHz、Full-Speed 12MHzは5mまでになります。これは、USBで接続した機器間の最大データ遅延を30ナノ秒(LSは18ns)と規定しているため、ケーブルの材質などから長さの制限が生じるためです。5m以上接続したい場合はUSBのリピーターケーブルもしくはUSBハブを使用することで可能です。USBハブは最大6階層まで使用できるので計算上30mまで延長可能です。しかしケーブルを長くするとそれだけ不安定な要素が増えますのでハブを使用しても総延長が5m以内に留めておく方が安定して使用できると思います。

コラムということで以上で締めくくりとさせていただきますが、参考資料としてデータ転送方式などを記しておきます。

転送速度
High-Speed 480MHz、Full-Speed 12MHz、Low-Speed 1.5MHzの3つありUSB2.0からHigh-Speed 480MHz対応になっています。Full-Speed 12MHz、Low-Speed 1.5MHzデバイスはUSB1.1が受け持っています。
Interrupt転送
マウス、キーボードなどのような入力装置は、遅いなどの違和感を感じない一定時間内に、入力されたデータを処理すれば良いということになります。例えば、キーボードによる文字の入力から画面表示までに10msかかったとしても、人間の感覚では遅いと感じることはありません。PS/2など従来は入力の検出によりシステムに割りこみ要求をかけて処理していましたが、USBではすべてのデータ転送の要求はホストから発行されマウスやキーボードからの割りこみによって処理を開始することはできません。人間が遅いなど違和感を感じさせない時間内でUSBの不都合にならない一定周期ごとにホストがマウスやキーボードからデータを引き取るによって、割り込みによる処理の代替えをしています。この一定周期ごとにホストがデータ送信または受信を行う転送方式がInterrupt転送になります。
1.5MHzのLow-Speedデバイス(USB1.1)はInterrupt転送を使う装置でのみ許された特権で、マウス、キーボードなどを安価で作るための仕様です。
Bulk転送
プリンタ、スキャナ、CD-ROMなどのように画像入力、印字、ストレージ系の装置では、大規模なデータを欠落のないように正確に転送することです。例えば、プリンタでデータの欠落がおこって印字異常になってしまいますし、ハードディスクなどのストレージだとコピーしたときにファイルがオリジナルと異なることになります。高いデータ転送の信頼性を実現できますが、バス全体の利用効率を上げるためにデータ転送に対しての時間的制約を設けることのできないデータ送信と受信を行う転送方式をBulk転送といいます。転送レートはバスの利用状況によって大きく変動するため、転送レートに対して厳しいスペックを要求するものはBulk転送には向きません。
Isochronous転送
スピーカ、マイク、ビデオなどのように音や動画を扱うには時間の概念を正しく反映させること、つまりある周期の間に一定量のデータを送らなければなりません。USBでは時間をフレーム(USB2.0ではマイクロ・フレーム)という単位で分割し、その中で各転送を割り振っています。 Isochronous転送で最も重要なことは、ある決まった周期に一定量のデータを転送することで、そのため転送失敗によるリトライは時間の概念の維持を困難にするので、行わないようになっています。これはUSBに限らずIEEE1394(FireWire)で同じように音や動画の転送方式のアイソクロナスサブアクション(Isochronous Subaction)も同じでリトライはありません。
IEEE1394(FireWire)と違いUSBオーディオインターフェイスがあまり良くないという話はドライバの出来はさておきUSB1.1では1フレームが1msと荒いのが原因です。簡単に書きますと1msずつエンドポイントという箱にデータを詰めて送っているのですが、もしデータが欠損した場合1ms分の音が切れますので1msは連続したデータが大切な音などから見ると意外に長い時間ですのでぷちっと音が切れるのがわかります。USB2.0になって1マイクロ・フレームと言うようにIEEE1394と同じく125マイクロ秒(1msは1000μsになります)になり125マイクロ秒の欠損はほぼ感じることは出来ません。エンドポイントもUSB1.1では1つに対して最大1023K byte/sで1フレーム1回の転送許可ですが、USB2.0は1マイクロ・フレームに3回までの転送が許可されおり、1つのエンドポイントに対して最大8 X 3 X 1024K byte/sの転送レートを実現できます。
ではなぜほとんどオーディオインターフェイスベンダーはUSB2.0を採用しないかと言うとIEEE1394(FireWire)の方が仕組みが難しくないのと時間の管理(ノード間の調停)が良い感じがします。USB2.0は1.1との混在も考えないといけませんのでその辺の設計も難しいのかもしれません。音声はそれほどデータが大きくありませんのでIEEE1394a(400Mbps)で十分でIEEE1394b(800Mbps)をあまり考慮しなくて良いというのもあるかもしれません。一番大きいのはUSBはPCまたはそれに変わる何かというホストが必須になりますのでPCに直接接続するなら良いのですが、ホストが無い場合は機能しませんのでその点IEEE1394はIEEE1394製品同士ホストなしでも機能しますのでこちらの方が何かと便利なのかもしれません。
Control転送
このControl転送は、Interrupt、Bulk、Isochronousの各転送方式とは異なり、転送されるデータ自身についても規定がある転送方式で、 デバイスの情報のやり取りやUSB環境下でのアドレス設定、デバイスの設定などに利用されますので、どのようなデバイスでもこの転送方式は必ず利用します。 上記3つのいずれかの転送方式と併用される形になります。
▲このページのTopに戻る