may 9, 20012 high speed protocol additions john garney usb2.0 hub working group chair intel...
TRANSCRIPT
May 9, 2001 2
High SpeedProtocol Additions
High SpeedProtocol Additions
John GarneyJohn GarneyUSB2.0 Hub Working Group ChairUSB2.0 Hub Working Group Chair
Intel Corporation Intel Corporation
John GarneyJohn GarneyUSB2.0 Hub Working Group ChairUSB2.0 Hub Working Group Chair
Intel Corporation Intel Corporation
May 9, 2001 3
HS Protocol AdditionsHS Protocol Additions
High Speed Ping Flow ControlHigh Speed Ping Flow Control Split TransactionsSplit Transactions
Additions to Chapter 8Additions to Chapter 8
May 9, 2001 4
HS PING Flow Control (HS OUT Endpoints only)HS PING Flow Control (HS OUT Endpoints only)– Required for all bulk/control HS OUT transactionsRequired for all bulk/control HS OUT transactions– No PING for control SETUP transactionsNo PING for control SETUP transactions
Issue: Devices That NAK OutsIssue: Devices That NAK Outs– NAK is provided for bus-level flow controlNAK is provided for bus-level flow control– USB1.0 idea was NAK would occur ‘hardly ever’USB1.0 idea was NAK would occur ‘hardly ever’
Reality is that many applications use/need frequentlyReality is that many applications use/need frequently
– Frequently NAKing OUTs decrease throughputFrequently NAKing OUTs decrease throughput Bulk (async) traffic is scheduled round-robin (more or less)Bulk (async) traffic is scheduled round-robin (more or less) NAKing Out can easily reduce throughput by more than 50%NAKing Out can easily reduce throughput by more than 50%
New PIDs for PINGNew PIDs for PING– PING token: “Are you ready?”PING token: “Are you ready?”– NYET handshake: Accept data, I’m now full (“Not Yet”)NYET handshake: Accept data, I’m now full (“Not Yet”)
High Speed PINGFlow ControlHigh Speed PINGFlow Control
May 9, 2001 5
Host Pipe Initial ConditionHost Pipe Initial Conditionis “PING”is “PING”
PING (No data phase)PING (No data phase)– NAK response indicates noNAK response indicates no
room for dataroom for data– ACK response indicates roomACK response indicates room
for at least one MaxPacketfor at least one MaxPacket OUT with Data0/1OUT with Data0/1
– ACK allows next OUT transactionACK allows next OUT transaction– NAK says data not accepted, returnNAK says data not accepted, return
to PING stateto PING state Not normal caseNot normal case
– NYET says data accepted, no more room, go to PING stateNYET says data accepted, no more room, go to PING state Same scheduling for PING/OUT as normalSame scheduling for PING/OUT as normal
– ““Next opportunity”Next opportunity”
PING - Host State MachinePING - Host State Machine
PingPing PID PID
Data 0/1Data 0/1 PID PID
NAKNAK
ACKACK
ACK,ACK,Advance to NextAdvance to NextTransactionTransactionNAKNAK
NYETNYET
OUTOUT PID PID
May 9, 2001 6
OUT/DATAxOUT/DATAx
NAKNAK
SpaceSpaceAvailableAvailable
AcceptAcceptDataData NYETNYET
ACKACK
PINGPING
SpaceSpaceAvailableAvailable
Space NotSpace NotAvailableAvailable
OUT/DATAxOUT/DATAxor PINGor PING
SpaceSpaceAvailableAvailable
SpaceSpaceNotNot
AvailableAvailable
PING - Device State MachinePING - Device State Machine
ACK if have spaceACK if have space NYET if had space, but now don’tNYET if had space, but now don’t NAK if no spaceNAK if no space
May 9, 2001 7
Bulk Out Endpoint DescriptorBulk Out Endpoint Descriptor
bInterval value in HS endpoint descriptor declares OUT bInterval value in HS endpoint descriptor declares OUT NAK “rate”NAK “rate”– Allows compliance testing of bulk OUT endpoint PINGAllows compliance testing of bulk OUT endpoint PING
Device never NAKs OUT more than once per microframeDevice never NAKs OUT more than once per microframe Use correct bInterval value:Use correct bInterval value:
– 0 -> device NYETs OUTs, and never NAKs0 -> device NYETs OUTs, and never NAKs– 1..255 -> device NAKs OUTs and,…1..255 -> device NAKs OUTs and,…
Doesn’t NAK another OUT for bInterval microframesDoesn’t NAK another OUT for bInterval microframes Doesn’t need another OUT (after NAK) bInterval microframesDoesn’t need another OUT (after NAK) bInterval microframes
Host may issue more frequentlyHost may issue more frequently
May 9, 2001 8
Split TransactionsSplit Transactions
Defined only for Host Controller & Hub @ HSDefined only for Host Controller & Hub @ HS– Enables isolation of full/low speed signalingEnables isolation of full/low speed signaling– Improves overall bus throughput and utilizationImproves overall bus throughput and utilization
Start-SplitStart-Split– Host tells Hub to initiate full/low speed transactionHost tells Hub to initiate full/low speed transaction
Complete-SplitComplete-Split– Host asks Hub for results of previous full/lowHost asks Hub for results of previous full/low
speed transactionspeed transaction SPLIT Tokens defined for Start/CompleteSPLIT Tokens defined for Start/Complete New PIDs and transaction state machines New PIDs and transaction state machines
May 9, 2001 9
Still three (or less) phase transactionsStill three (or less) phase transactions– Token phase has 2 packets: SPLIT special token & regular tokenToken phase has 2 packets: SPLIT special token & regular token
– Start-OUT:Start-OUT: SPLIT(start)_token + token, data { ,handshake}SPLIT(start)_token + token, data { ,handshake}– Start-IN:Start-IN: SPLIT(start)_token + token { ,handshake}SPLIT(start)_token + token { ,handshake}
Start-SplitStart-Split
SPLITSPLITStartStart
ClassicClassicTokenToken DATAxDATAx HandshakeHandshake
Token PhaseToken Phase
Split TransactionExtended TokensSplit TransactionExtended Tokens
– Complete-OUT: SPLIT(complete)_token + token, handshake – Complete-IN: SPLIT(complete)_token + token, {data, } handshake
Complete-SplitComplete-Split
SPLITSPLITCompleteComplete
ClassicClassicTokenToken
Token PhaseToken Phase
DATAxDATAx HandshakeHandshake
May 9, 2001 10
HostHostHostHost DeviceDeviceHubHubHubHub
ClassicClassicBusBusHigh SpeedHigh Speed
BusBus
Example SplitTransaction (IN)Example SplitTransaction (IN)
11StartStartSplitSplit
SPLIT-sSPLIT-sSPLIT-sSPLIT-s
IN TokenIN TokenIN TokenIN Token
33CompleteComplete
SplitSplit
SPLIT-cSPLIT-cSPLIT-cSPLIT-c
ACKACKACKACK
Data0Data0Data0Data0
IN TokenIN TokenIN TokenIN Token
22ClassicClassic
IN TokenIN TokenIN TokenIN Token
Data0Data0Data0Data0
ACKACKACKACK
May 9, 2001 11
HostHostHostHost DeviceDeviceDeviceDeviceHubHubHubHub
ClassicClassicBusBusHigh SpeedHigh Speed
BusBus
Example SplitTransaction (OUT)Example SplitTransaction (OUT)
11StartStartSplitSplit
SPLIT-sSPLIT-sSPLIT-sSPLIT-s
OUT TokenOUT TokenOUT TokenOUT Token
Data0Data0Data0Data0
22ClassicClassic
OUT TokenOUT TokenOUT TokenOUT Token
Data0Data0Data0Data0
ACKACKACKACK33
CompleteCompleteSplitSplit OUT TokenOUT TokenOUT TokenOUT Token
SPLIT-cSPLIT-cSPLIT-cSPLIT-c
ACKACKACKACK
May 9, 2001 12
Classic BULK OUTClassic BULK OUT
High Speed BusHigh Speed BusuSOFuSOF uSOFuSOF uSOFuSOF
SOFSOF
SS = Start SplitSS = Start Split
125us125usCSCSSSSS CSCSSSSS CSCSSSSS CSCSSSSS
CS = Complete SplitCS = Complete SplitFull Speed BusFull Speed Bus
May 9, 2001 13
uSOFuSOF uSOFuSOF uSOFuSOF
SOFSOF
SS = Start SplitSS = Start Split
125us125us
CS = Complete Split
CSCSSSSS CSCSSSSS CSCSSSSS CSCSSSSS
Full Speed BusFull Speed Bus
High Speed BusHigh Speed Bus
Classic BULK INClassic BULK IN
May 9, 2001 14
Classic ISOCH OUTClassic ISOCH OUT
Full Speed BusFull Speed Bus
uSOFuSOF
1ms1ms
uSOFuSOF uSOFuSOF uSOFuSOF uSOFuSOF uSOFuSOF uSOFuSOF uSOFuSOF uSOFuSOF
SOFSOF SOFSOF
SSSSSSSS SSSS SSSS
SS = Start SplitSS = Start Split
125us125us
High Speed BusHigh Speed Bus
May 9, 2001 15
Classic ISOCH INClassic ISOCH IN
uSOFuSOF
1ms1ms
uSOFuSOF uSOFuSOF uSOFuSOF uSOFuSOF uSOFuSOF uSOFuSOF uSOFuSOF uSOFuSOF
SOFSOF SOFSOF
SSSS
SS = Start SplitSS = Start Split
CSCS CSCS CSCS CSCS
125us125us
CS = Complete SplitCS = Complete Split
High Speed BusHigh Speed Bus
Full Speed BusFull Speed Bus
May 9, 2001 16
Example Bus TracesExample Bus Traces
PINGPING Split TransactionsSplit Transactions
– Bulk OUTBulk OUT– Control ReadControl Read– Interrupt Interrupt – IsochronousIsochronous
May 9, 2001 17
High Speed ProtocolAdditions SummaryHigh Speed ProtocolAdditions Summary
Required Bulk/Control PING Flow ControlRequired Bulk/Control PING Flow Control– Delivers better bus utilizationDelivers better bus utilization– Specify bInterval in endpoint descriptor correctlySpecify bInterval in endpoint descriptor correctly
Split-TransactionsSplit-Transactions– Only affect HC and Hub; not devicesOnly affect HC and Hub; not devices– Allows High Speed transactions to run independentlyAllows High Speed transactions to run independently
of Full/Low-Speed transactions in a systemof Full/Low-Speed transactions in a system