USB 2.0はどのように衝突を回避しましたか?


33

USB 3.0レセプタクルのピンを見ると、送信と受信のペアが別々にあることがわかりますが、USB 2.0には「データ」ピンペアが1つしかありません。USB 2.0は、デバイスが同時に通信しないことをどのように保証しますか?


2
また、CSMA / CDのようなものを見ることに興味があるかもしれません。これは、他のコンテキストでどのように解決されるかです
PlasmaHH

1
個別の送信/受信ペアでは、すべての競合が解決されるわけではありません。ペンドライブとモデムがあり、どちらもホストにデータを送信したいので、両方が送信を開始するとします。どこ?同じペア:ホスト受信。紛争はまだそこにあります。これはUSBの仕組みではありませんが、これは10/100イーサネットの仕組みとまったく同じです。どの方向にも独自のペアがありますが、ハブの「衝突」ライトは点滅し続けます。
Agent_L

回答:


67

USBは厳密にマスタースレーブです。ホストが送信するように指示しない限り、デバイスは送信しません。

いわゆる「割り込み」モードは実際にはポーリングです。たとえば、8ミリ秒ごと(またはゲーマーマウスを持っている場合はそれ以下)、PCはマウスに「自分の位置は何ですか」と尋ね、マウスが応答します。

たとえば、USBシリアルインターフェイスがある場合も同じです。インターフェイスがシリアル回線でデータを受信すると、データをPCに送信しません。代わりに、PCがトランザクションを開始し、データを要求するのを待ちます。

このウェブページは、交換されるパケットに関する適切な説明があります。基本的に、USBは最も低価格で安価な周辺機器が機能するように実装されていることに注意してください。つまり、ほとんどのインテリジェンスはホスト、ホストUSBコントローラー、OS、およびドライバーにあります。これは、仕様を読むと非常に明白です。

Firewire(たとえば)はまったく異なる哲学を持ち、はるかに強力で、マルチマスターであるため、デバイスはホスト/マスターの助けを借りずに互いに通信できます。実際には、その哲学は、USBよりも、アイソクロナス転送を上に重ねたトークンリングのようなものにはるかに近いものです。ただし、「マルチマスター」とは、複雑なソフトウェアスタックを実行するデバイスに強力なマイクロコントローラーが必要であることを意味します。したがって、より高価であるため、カムコーダーや高速ハードドライブエンクロージャーなどの高価な製品に限定されます。ファイヤーワイヤーマウスは意味がありません、あまりにも高価です。これが、FireWireが失敗した理由の1つです。


3
優れた説明と、FireWireとの非常に適切な比較(そして、実際には、バス上の最大5つのデバイスのためのトークンベースの調停ネットワークを構築しましょう)。
マーカスミュラー

3
これは良い答えですが、列挙について言及した場合、より完全になると思います。調停機能を持たない動的なネットワーク(マルチマスターネットワークなど)に接続されているデバイスを検出することは重要な問題であり、多くの点でUSBが真のバストポロジを使用できない理由を定義しています。
ジョン

ありがとう;)しかし、ホスト側からの列挙に関する面倒な詳細は知りません。しかし、IMOがUSBの本当の理由であるのは、1990年代半ばに設計され、当時のマイクロコントローラーは今日よりも高価であり、安価なデバイスへの方法は、RAMとコードをできるだけ少なくしてダムにすることでしたできるだけ。その上、それは非常にうまく機能します、それはちょっとスイートスポットを打ちました。
プーフー

5
間違っています、USBはバスです。より馴染みのある「リニア」バスとは反対に、異なるトポロジ(スター)を持っています。すべてのUSB 2.0(HS)ホストトランザクションは、スターのすべてのセグメントにブロードキャストされるため、「リニア」バスと大差ありません。リニアバスと同様に、すべてのデバイスはほぼ同時にバスアクティビティを認識します。唯一の違いは、異なるブランチにある他のデバイスからはデバイスの応答が見えないことです。
Ale..chenski

2
@rahuldottechそれが動作する場合、それはまともなクールですが、FireWireはUSB、特にWRTプラグアンドプレイよりもはるかに信頼性が低いです。また、USBを使用すると、追加のハブを使用することで、多くのドライブを1つのポートに簡単に接続できます。パフォーマンスにはトレードオフがありますが、信頼性と容易さは重要です。
18

18

USBフレームワークでは、USBホストが通信を「許可」した場合にのみ「通信」するため、デバイスは同時に通信できません。また、USBホストでは、最初のデバイスとのシーケンシャルトランザクションプロトコルが完了した場合にのみ、別のデバイスが「通話」できます。また、USBデバイスには、それ自体で「話す」手段がなく、USBにはアクティブな割り込みメカニズムがありません。手短に言えば、この規律を実装するメカニズムは次のとおりです。

USB 2.0デバイスが接続された後、ホストは各デバイスに一意のアドレスを割り当ててそれらを列挙します。

バス上のすべてのトランザクションは、USBホストによって開始されます。

すべてのUSBトランザクションのヘッダーには、特定のデバイスアドレスが含まれています。トランザクションがUSBツリー全体(特定のホストコントローラーインスタンス上)でブロードキャストされる場合でも、一致したアドレスを持つデバイスのみがトランザクションに応答し、データを取得するか、データで応答します。

「パートナー」リンクは、データを正常に受信したユーザーからの指示で確認応答を送信します。トランザクション全体は、トランザクションの整合性を確保するために、トークン、タイムアウト、エラー修正コードの定義されたシーケンスで確立されたプロトコルに従います。

他のすべてのデバイスは、それらに向けられていないトラフィックをリッスンして無視しています。

それはそれについてです、それは「半二重」インターフェースです。


1
USBプロトコルに詳しくないので、ホストは正しいデバイスが応答したことをどのように知るのでしょうか?
デレク朕會功夫

@Derek朕會功夫、ホストがこれを知っているのは、これが応答する唯一のデバイスであり、他の誰も応答しないためです。USB 2.0トランザクションは「アトミック」であり、遅延応答はなく、すべてタイムアウトに依存しています。タイムリーな応答(未完了のトランザクション)がないと、再試行されます。
エール..chenski

フォローアップするために、私の質問は、すべてのデバイスが同じバスに接続されているため、接続されている別のデバイスのふりをするのを妨げるものは何ですか?
デレク朕會功夫

7
@Derek朕會功夫:何もありません。だからこそ、オフストリート市場から入手したランダムなUSBキーを差し込まないのです。あなたはそれらを信頼することはできません。
モニカとの軽さのレース

7
@Derek朕會功夫、悪意は別として、USBデバイスは列挙中にアドレスを受け入れる必要があり、別のデバイスは異なるアドレスを持ち、すべてホストによって制御されます。これは、複数のメモリモジュールがパラレルバスに接続されている場合と違いはありませんが、各モジュールはアドレスデコーダー/チップセレクトにのみ応答します。また、2台のUSBデバイスが誤って応答した場合(ホストがアドレス割り当てで混乱した場合など)、バスで衝突が混乱し、パケットはCRC(すべてのUSBトークンに接続されている)を通過せず、対応するポートは大規模なエラーのために無効にされます。
Ale..chenski
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.