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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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