次に、ProtoclレベルでのTransactionの実際である。こちらは4月の方でしか説明がないが、8月のプレゼンテーションでは特にこれを打ち消すような話はなかったから、おそらくこのままであろう(Photo29)。
![]() |
Photo29: 全ての転送はHostからの指示で行うという構造は従来と変わらず。ただ転送速度が上がったためか、Defer Requestという項目が追加されたのは目新しい。もっともこの場合、単にDelayして再Requestではなく、そのRequestを破棄して改めてRequestを出すというインプリメントはちょっと豪快。 |
実際の転送であるが、USB 2.0は1本の信号線で送受信を行う関係で、最初にトークンの受け渡しが入り、転送方向が決まった後でデータの転送、最後にWrap upのHandshakeが入っていた(Photo30)。対してUSB 3.0の場合。まずDevice→Hostの転送の場合(Photo31)、最初にHost→Deviceでコマンドが発行され、これを受けたデバイスは直ちにデータ転送を開始する。この2つのパケットは異なる信号線で行われるから、最後のHandshakeが不要になるというわけだ。一方Host→Deviceの転送の場合(Photo32)は、いきなりHostから転送を掛けてしまえばよく、それが終わったらDevice→Hostに受信終了のAckを返すだけとなる。つまり2stepのHandshakeになるわけで、平均的なTurn around Timeはやや短くなることが期待される。
![]() |
Photo30: これに加えて、Token/Data、Data/Handshakeの間には一定のWait時間が必要となっている。これらを全部込みにして、平均的な1回の転送時間が350ns未満ということになる。 |
一方Isochronousについては、これはUSB 2.0と同じ125μsecとされた。ただし、実現方法がちょっと変わっているのには注意が必要だ(Photo33)。