今回はMicroの話をする予定だったが、先週開催されたSuperSpeed USB Developers Conferenceの折に、これについてもう少し細かい話を確認することが出来たので、まずそちらの話をしたいと思う。

ということで、まずは訂正。こちらで書いた話は間違ってはいないが、正確とも言えなかった。というのは、筆者がNotification Mechanismについてちょっと誤解していたからだ。USB 3.0でNotification Mechanismが搭載されるのは説明した通りだし、これによって、無駄にPollingが避けられるのも間違っていない。ただし、これによって節約できるものの理解を間違っていた。というのは、このNotification MechanismはPower Saving「のみ」に効果的だからだ。

USBマウスの例で言うと、USB 3.0のマウスは「自分が動いた」事を感知しない限り、Power Down Stateに入りっぱなしとなる。この場合、USB LaneもまたPower Down Stateに入り、Linkそのものが落ちることになる。このケースでは、xHCI ControllerはUSBマウスをPollingすべきDevice Listから外すので、無駄にPollingで電力を消費することは無い。

で、人間がマウスに何かしらの操作を行った場合、それを検知したDeviceはUSB I/FをActiveにして、それからDevice Notification Packetを使ってxHCI ControllerにPower Upの通知を行う。これを受けてxHCI ControllerはまずUSB Deviceとの間のLinkの再確立を行い(ここでLink Trainingなども発生する)、それから自分のPollingすべきDevice Listに再びそのUSBマウスを追加するという事になる。

この一連の作業で可能になるのは、USBマウスが動いていない間は、無駄な消費電力が大幅に削減できるという点だが、その一方でNotification MechanismはLatencyに関しては(端的に言えば)何も考えていない。例えばxHCI ControllerはDevice Listに新たにUSBマウスを追加しなおしてからRescheduleするが、その際にどうRescheduleするかはxHCI Controllerの実装に任されており、まず追加しなおしたUSB Mouseを優先的にAccessするなんて事は期待できない。また、いちいちLink Trainingが発生するから、これによるLatencyも馬鹿に出来ない。つまるところ一番Latencyが少ないのは、DeviceをPower Down Stateに入れずに毎回Pollingさせることであった。ということで、お詫びして訂正したい。

さて、話をMicroに。そもそも何でMiniが無いのか? という話があるのだが、Jeffに確認したところ「携帯電話などのフォームファクタでは、より小さいコネクタを求められており、今のMini-A/Bでもデカいという話になった。で、USB 2.0の時に後から標準化したMicro-A/Bがあるので、これを使おうという話になった」との事。

まぁMini-A/Bでもやはり小さいから、Standard-Aの様に従来のフォームファクタを変えずに新たにUSB 3.0の信号を追加するのは無理だったろうし、そうなるとMini-A/Bでは実装体積が大きすぎるのも理解できる。やはりSuperSpeed USB Developers ConferenceのPress向けのSessionの質疑応答の中で、「実際には例えばデジカメとかが独自のコネクタを使っていて互換性がないのだが、これについてどう思うか」という質問が出ていた(ちなみに回答は「標準スペックを満たすUSBケーブルとコネクタを使う限り、互換性は保たれる。ただ、メーカーが独自のコネクタやケーブルを使う場合、その互換性までは保障できないし、そうした独自規格を使うことを禁止するのは何か違うと思う」だった)が、独自規格を使う理由の一つが、やはり実装体積を小さくしたい事だったから、Miniを飛ばしてMicroに以降するのはそれなりに理にかなった事と判断したのだろう。

ちなみに他の理由としては、独自の信号ピンを追加したいとか、USB端子を経由して充電なども行うが、急速充電をかけるのに標準のままだと電流が足りないので、より大電流を流せるようにピンを増やすなんてケースもあった。こうした用途に対してMicro-ABは直接的な解決策とはならないから、引き続き互換性の無いコネクタやケーブルは出回るだろう。ただ幸い(?)な事に、Mini-A/Bと比べてMicro-A/Bは更にゆとりが無いから、信号ピンを増やそうとすると外形寸法も変える必要が出てくる。なので以前よりも間違いにくくはなるだろう、とは思う。

(続く)