May 9, High Speed Protocol Additions John Garney USB2.0 Hub Working Group Chair Intel Corporation John Garney USB2.0 Hub Working Group Chair Intel Corporation
May 9, HS Protocol Additions w High Speed Ping Flow Control w Split Transactions w Additions to Chapter 8
May 9, w HS PING Flow Control (HS OUT Endpoints only) – Required for all bulk/control HS OUT transactions – No PING for control SETUP transactions w Issue: Devices That NAK Outs – NAK is provided for bus-level flow control – USB1.0 idea was NAK would occur ‘hardly ever’ u Reality is that many applications use/need frequently – Frequently NAKing OUTs decrease throughput u Bulk (async) traffic is scheduled round-robin (more or less) u NAKing Out can easily reduce throughput by more than 50% w New PIDs for PING – PING token: “Are you ready?” – NYET handshake: Accept data, I’m now full (“Not Yet”) High Speed PING Flow Control
May 9, w Host Pipe Initial Condition is “PING” w PING (No data phase) – NAK response indicates no room for data – ACK response indicates room for at least one MaxPacket w OUT with Data0/1 – ACK allows next OUT transaction – NAK says data not accepted, return to PING state u Not normal case – NYET says data accepted, no more room, go to PING state w Same scheduling for PING/OUT as normal – “Next opportunity” PING - Host State Machine Ping PID Data 0/1 PID NAKACK ACK, Advance to Next Transaction NAK NYET OUT PID
May 9, OUT/DATAx NAK Space Available Accept Data NYET ACK PING Space Available Space Not Available OUT/DATAx or PING Space Available Space Not Available PING - Device State Machine w ACK if have space w NYET if had space, but now don’t w NAK if no space
May 9, Bulk Out Endpoint Descriptor w bInterval value in HS endpoint descriptor declares OUT NAK “rate” – Allows compliance testing of bulk OUT endpoint PING w Device never NAKs OUT more than once per microframe w Use correct bInterval value: – 0 -> device NYETs OUTs, and never NAKs – > device NAKs OUTs and,… u Doesn’t NAK another OUT for bInterval microframes u Doesn’t need another OUT (after NAK) bInterval microframes Ô Host may issue more frequently
May 9, Split Transactions w Defined only for Host Controller & HS – Enables isolation of full/low speed signaling – Improves overall bus throughput and utilization w Start-Split – Host tells Hub to initiate full/low speed transaction w Complete-Split – Host asks Hub for results of previous full/low speed transaction w SPLIT Tokens defined for Start/Complete w New PIDs and transaction state machines
May 9, w Still three (or less) phase transactions – Token phase has 2 packets: SPLIT special token & regular token – Start-OUT:SPLIT(start)_token + token, data {,handshake} – Start-IN:SPLIT(start)_token + token {,handshake} Start-Split SPLITStartClassicTokenDATAxHandshake Token Phase Split Transaction Extended Tokens – Complete-OUT:SPLIT(complete)_token + token, handshake – Complete-IN:SPLIT(complete)_token + token, {data, } handshake Complete-Split SPLITCompleteClassicToken Token Phase DATAxHandshake
May 9, HostHost Device HubHub ClassicBus High Speed Bus Example Split Transaction (IN) 1StartSplit SPLIT-sSPLIT-s IN Token 3CompleteSplit SPLIT-cSPLIT-c ACKACK Data0Data0 2Classic Data0Data0 ACKACK
May 9, HostHostDeviceDeviceHubHub ClassicBus High Speed Bus Example Split Transaction (OUT) 1StartSplit SPLIT-sSPLIT-s OUT Token Data0Data0 2Classic Data0Data0 ACKACK 3CompleteSplit SPLIT-cSPLIT-c ACKACK
May 9, Classic BULK OUT High Speed Bus uSOFuSOFuSOF SOF SS = Start Split 125us CSSSCSSSCSSSCSSS CS = Complete Split Full Speed Bus
May 9, uSOFuSOFuSOF SOF SS = Start Split 125us CS = Complete Split CSSSCSSSCSSSCSSS Full Speed Bus High Speed Bus Classic BULK IN
May 9, Classic ISOCH OUT Full Speed Bus uSOF 1ms uSOFuSOFuSOFuSOFuSOFuSOFuSOFuSOF SOFSOF SSSSSSSS SS = Start Split 125us High Speed Bus
May 9, Classic ISOCH IN uSOF 1ms uSOFuSOFuSOFuSOFuSOFuSOFuSOFuSOF SOFSOF SS SS = Start Split CSCSCSCS 125us CS = Complete Split High Speed Bus Full Speed Bus
May 9, Example Bus Traces w PING w Split Transactions – Bulk OUT – Control Read – Interrupt – Isochronous
May 9, High Speed Protocol Additions Summary w Required Bulk/Control PING Flow Control – Delivers better bus utilization – Specify bInterval in endpoint descriptor correctly w Split-Transactions – Only affect HC and Hub; not devices – Allows High Speed transactions to run independently of Full/Low-Speed transactions in a system