ゼロからの情報システム

  現代社会の情報インフラの仕組みをゼロから学べます.

USBプロトコル

情報社会に生きるアナタ.
自動車社会で自動車や高速道路や宅配便のこと知らないで生きていけますか.
情報社会では,スマホやパソコンやインターネットやウェブが,自動車や高速道路や宅配便に相当します.
このサイトは,パソコン使いのパソコン知らず,を対象に情報社会の基盤技術を説明します.

1.41 USBプロトコルではCPUがコミュニケーションをガイドする

前項に述べた,USBに接続された周辺装置を利用できるようになるまでの手順(図7)を整理すると,次のようになっています.

新たに接続された装置の検出

その装置への装置番号の付与

デバイスドライバの確定と装填

データの送受信などの利用

これらはすべて,CPUが周辺装置に送るトークンに基づいて進められます.周辺装置はCPUの求めに応じて,データを受信したり,発信したりするだけです.

このような仕組みなので,USBのコネクタには多様な周辺装置を接続することができ,CPUは個々の周辺装置に応じたデバイスドライバを使いわけて,データのやりとりを正しく行うことができるのです.

USBプロトコルは大変複雑だと思うかも知れませんが,これは私たちが日常的に行っていることとウリ二つなのです.電話が来たときのことを考えてみましょう.

電話が来た→CPUは新たに接続された装置を検出した.

受話器を取って「もしもし」→CPUは「設定」のトークンを送る.

相手に応じて話し方を考える→CPUは適切なデバイスドライバを装填する.

相手に応じた対応で話をする→CPUはデバイスドライバの指示に従ってデーデータを送受信する.

 

USBキーボードマウスを接続することがあります.キーボードやマウスの場合,私たち利用者が入力したいときに,キーを押したり,マウスを動かしたりします.つまり,CPUの指示によらないで勝手に入力します.

これはUSBに接続した装置は,CPUからの求めに応じて他律的に通信することと相容れないように見えます.

しかし,USB接続のキーボードやマウスのような装置は,CPUと次のような方式でコミュニケーションするので,うまく行くのです.

CPUはキーボードやマウスに定期的に「送信」のトークンを送信します.その時にちょうど私たちがキーを押したり,マウスを動かして送信するデータがあると,そういう時だけ,送信が実行されます.

なにせ,フレームは1ミリ秒とかその10分の1の短時間で送受信されますから,人間の動作のスピードを考えれば,それで十分間に合うというわけです.ここにも,CPUの超高速の動きのマジックが働いているのです.

1.40 CPUはUSB装置との対話でデバイスドライバを使い分ける

USBのコネクタに接続する周辺装置とCPUの間のコミュニケーションのための約束事は,USBプロトコルと呼ばれます.

USBプロトコルでは,フレームと呼ばれるデータの集まりがコミュニケーションの単位になります.フレームは1ミリ秒(msec,つまり,1000分の1秒)あるいは高速の場合,0.125ミリ秒周期で送受信されます.このフレームの中に,パケットを必要に応じて詰めていきます.パケットとはフレームの構成要素となるひとかたまりのデータです.

パケットには,装置への指示をするもの(トークン),データを相手に送信するもの(データ),通信の送信成功・不成功を通知するもの(ハンドシェイク)の3種類があります.

トークンが伝える装置への指令には,フレームの先頭(SOF),設定(Setup),送信(Out),受信(In)の4種類あります.

CPUと周辺装置の間のコミュニケーションは,この3種類のパケットを決められた手順で組み合わせてやりとりすることで行われます.

USBのコネクタに新しい装置が接続されて電源が入れられると,図4(B)D+ D- の線の間の電圧の差がある状態になるように装置が設計されています.この電圧差を検出する(割り込み要求を受ける)ことで,CPUは新しい装置が接続されたことを知ります.

USBのコネクタに接続された新しい装置があると,CPUは装置番号0の装置に「設定」のトークンを送ります.どの装置もUSBに新たに接続されるときには既定値として装置番号が0に設定されるからです(図7参照).


図7

7 USBコネクタへの接続

このトークンで,CPUは装置に応答を求めます.応答を受けとると,CPU1127の未使用の番号のどれかを,例えば4を,この装置に割り当てます.

CPUは次に,装置に関するデータを要求します.装置は,どのような装置かなどの,CPUが使用するデバイスドライバを確定するのに必要なデータを送信します.

  CPUはデバイスドライバが確定すると,必要ならそれをRAMに装填し,装置とデバイスドライバを関連づけます.以後は,このデバイスドライバの指示によって送信や受信などの通信を行うようになります.

1.38 USB接続は逐次方式の通信を利用する

最近はUSBポートに,キーボード,マウス,ディスプレイ,ハードディスク,プリンタと,すべての周辺機器をつないだりします.つまり,USBは汎用的で強力な接続方法を提供します.

こんなことが可能なのはUSBが汎用的なプロトコルに従っているからです.もともとUSBとは,「万能逐次信号線」という意味の英語の略語なのです.

逐次シリアル)方式とは,大量のデータであっても,0-0-1-0-1-1のように01のデータを1つずつ先頭から順番に送る方式のことをいいます.

逐次方式の信号線があるのですから,当然ですが並列方式の信号線もあります.並列方式では複数の信号線を使って一度に信号線の本数分の01データを送ります.

それだと並列方式の方が逐次方式よりも早くデータを送ることができるだろうと考えるのですが,実はそうではないのが実情です.

前に述べたようにパソコンでは億分の1秒というような極めて短時間に一回のデータ送信が行われます.並列方式では,複数の信号線から送られてくるデータをこの短時間の間に同時的に処理しなければなりません.そうでなければ,その前後のデータが混ざってしまいます.

複数の信号線のデータを,同期をとって受けとって同時的に処理する,ということが技術的にはなかなか難しいので,逐次方式よりも01信号を送信する前後の間隔を長くする必要があります.

それで結果的に逐次方式よりも遅くなってしまうのです.

 USBのプラグやコネクタには,図4(B)にあるように,木の枝が張ったような記号が描かれています.この記号が象徴していますが,USBCPUとコミュニケーションする部分1箇所につき,理論的には127個までのさまざまな周辺装置を接続できます
プロフィール

ヤッキー

カテゴリ別アーカイブ
タグクラウド
QRコード
QRコード
  • ライブドアブログ