When working with USB 3.1, designers are challenged to provide the 10 Gbps USB 3.1 speeds that customers expect while supporting backward compatibility with USB 3.0 devices in a hub topology. Using multiple INs provides a greater level of flexibility to the system.
In January 2013, the USB-IF announced USB 3.1, a new generation of the protocol that will double USB 3.0 data throughput performance to 10 Gbps. In addition to this increased speed, the specification requires compatibility with existing cables, connectors, software stacks, and device class protocols. USB 3.1 products must support existing 5 Gbps and new 10 Gbps hubs and devices, as well as older USB 2.0 products. To meet this long list of requirements, more needs to be done than simply increasing the physical layer data rate from 5 Gbps to 10 Gbps. In addition to the PHY changes, designers must implement carefully thought-out protocol changes, such as the use of multiple INs, to take advantage of the additional bandwidth.
Complexities of USB 2.0, 3.0, and 3.1 speeds through a hub
One of the reasons USB is so popular is because it is based on a hub topology that allows the expansion of connections. Even if a PC only has one USB port, it is theoretically possible, through multiple levels of hubs, to connect to more than 100 devices. However, the presence of hubs in the system and the requirement for backward compatibility with slower devices combine to make the protocol much more complicated when trying to increase the data rate.
To demonstrate the complexity that hubs bring to designs, take an example of a PC with a single port connected to a hub which is connected to two devices (see Figure 1).
In all generations of the USB specification, the host (the PC) initiates each transaction. When the host wants to read data from a device, it initiates a transaction to an “IN endpoint,” called an “IN transaction.” In USB 3.0, the host performs a read to a device by sending a Transaction Packet (ACK TP) to the device, waiting for the device to respond with a Data Packet (DP), and then sending another ACK TP to acknowledge the receipt of data and optionally request more data.
Now, imagine the host is reading two packets each from two devices: Device 0 operating at 5 Gbps and Device 1 operating twice as fast at 10 Gbps, with no protocol-level changes (see Figure 2).
On the upstream link to the host, significant bandwidth is wasted while the host waits for the data from the slower device. The USB 3.0 specification requires that a USB 3.0 host must receive all the data from one IN transaction before sending another ACK TP to a different device, which causes wasted bandwidth and an unacceptable loss of throughput.
How multiple INs support full utilization of host bandwidth
The ideal USB 3.1 system completely saturates the upstream link to the host with data, fully utilizing the extra bandwidth. To achieve this objective, the USB 3.1 specification introduces a new protocol feature called “multiple INs.” The USB 3.1 host can issue a read request to an endpoint on a device and then proceed with other transactions without waiting for the response.
After issuing multiple requests to multiple endpoints/devices, the data may return to the host in a different order than it was requested due to arbitration taking place on the devices and the upstream ports of hubs. The host is abstracted away from the exact USB topology in this manner because it cannot predict exactly how fast or in what order the transactions will complete. Figure 3 demonstrates the advantage gained when a USB 3.1 host uses the multiple INs feature.
This change to host behavior also has an effect on USB 3.1 devices. Now, a USB 3.1 device may receive a second ACK TP for a different endpoint before it has a chance to respond to the first ACK TP. A simple USB 3.1 device may choose to continue to handle only one request at a time by responding Not Ready (NRDY) to additional ACK TPs. A more complex USB 3.1 device takes advantage of the multiple INs by servicing the requests separately, possibly returning data to each one, reducing the likelihood that NRDY is necessary. Figure 4 shows the difference in behavior for a USB 3.1 device that has two or more IN endpoints, depending on whether it supports multiple INs or not.
Support for multiple IN transactions to different USB 3.0 bus instances
In a system that includes a USB 3.1 host and more than one USB 3.0 device, the host can perform multiple IN transactions to different legacy USB 3.0 devices, while ensuring that each USB 3.0 device will have only one outstanding IN transaction. This is possible in cases where the legacy devices are not affected by the multiple IN transactions and reside on different “bus instances.”
When working with USB 3.1, designers are challenged to provide the 10 Gbps USB 3.1 speeds that customers expect while supporting backward compatibility with USB 3.0 devices in a hub topology. Bandwidth can be wasted while an upstream USB 3.0 host waits for the data from a slower device, even when USB 3.1 data is available. However, using multiple INs provides a greater level of flexibility to the system. Designers need to be aware of this and other protocol-level changes that need to be implemented in order to reach USB 3.1’s 10 Gbps speeds.