USB 3.0: Theory and Practice

New interfaces appear in computer life relatively rarely, because they cause pretty serious changes in the data transfer infrastructure. That is why it is especially interesting to see what USB 3.0, a long-anticipated replacement to the morally outdated but extremely popular USB 2.0 interface, actually is.

Over the long years of its existence, the USB 2.0 interface has become a habitual feature of personal computers. Every computer has them and in good measure, too: every more or less modern mainboard offers up to a dozen or more USB 2.0 ports. This popularity has been based on multiple factors: easy connection (for a decade, generic drivers for basic USB device types have been available by default in every popular operating system), broad availability, compact connectors, versatility, and powering of the peripheral from the interface connector. External disk drives, sound cards, printers, scanners, modems, mouse devices and keyboards all come with USB connectors now. And there are also a lot of diverse accessories from desk fans to illuminated Christmas trees that need to be connected to a USB port for power.

The speed factor, however, has been failing recently, just as you can expect from an interface developed a decade ago. In fact, the theoretical peak bandwidth of 480 Mbps (60 MBps) is quite high, but you cannot get a practical data-transfer rate of more than 35 MBps from USB 2.0. Low-speed devices like a computer mouse don’t care about that limitation, but external storage products have long felt limited by USB 2.0 because today’s hard disk drives, even 2.5-inch ones, can read data from their platters much faster. In fact, even flash drives may be faster than the USB 2.0 interface, making their manufacturers develop flash drives with eSATA even though such products still have to be powered by a USB port (the current version of the eSATA interface does not provide for the powering-up of the connected device).

So, the next version of USB has been anticipated by both users and manufacturers, and it is here now. USB 3.0 has been implemented in over a dozen mainboards already but there are still very few peripheral devices complying with it. We’ve managed to get a couple of samples for our tests, though.

USB 2.0 and 3.0

Talking about the special features implemented in the new version of the interface, we should briefly recall its history which began in 1995 when the first version of the Universal Serial Bus protocol was introduced.

It had been developed by Microsoft and Intel with the aim to replace the abundance of external interfaces existing at that time such as a parallel port, serial port, joystick port, external SCSI (all of which indeed vanished from mainboards eventually). USB was also conceived as a fast but also inexpensive external interface. Three years later, in 1998, the updated 1.1 version was introduced. And in 2000 the version 2.0 specification prompted widespread popularity of USB. To the existing Low Speed (up to 1.5 Mbps) and Full Speed (up to 12 Mbps) modes, that version added Hi Speed (up to 480 Mbps) to compete with the FireWire IEEE1394a interface (400 Mbps). There was no competition, actually. Thanks to its simpler implementation and licensing, USB 2.0 quickly ousted FireWire into a small niche of digital camcorders, notwithstanding some technical advantages that FireWire possessed.

The Universal Serial Bus is quite easy to understand. First, it has a host controller which manages the whole data transfer process. This host controller is connected to hubs and to end devices (directly or via hubs). There can be a total of 128 devices is such a tree. A USB hub can be either passive or active. The active variety has a dedicated power source and can power up the connected devices without consuming any electric current from the host controller. A passive hub is not really passive, either. It is a rather complex electronic device.

So, the host controller is polling the end devices regularly and allotting them time intervals during which they can transfer data. The shortcomings of this whole mechanism are clear enough. The USB bandwidth is shared by all the devices. The more devices you connect, the less bandwidth is allotted to each of them. This problem is somewhat mitigated by multiple types of logical connections that can be established between the host and peripherals. It can be a control channel for transferring short commands, or an interrupt channel for short commands with guaranteed delivery time, or an isochronous channel with guaranteed delivery time for a certain number of packets within a given period, or a bulk transfer channel that guarantees delivery but does not specify the speed and latency. Thus, there are different channels types for different devices (an interrupt channel for a mouse or keyboard, an isochronous channel for disk drives, etc). During each period of operation, the bus transmits interrupt packets first. Next go the required number of isochronous packets. And the rest of the time is allotted to control and bulk transfer packets.

Again, the whole process is governed by the host controller which polls connected devices, listens to interrupts in the dedicated time periods and sends devices to sleep. A connected device cannot go to sleep or wake up, initiate a data transfer or say something important to the host (e.g. about a buffer overflow) of its own accord. Besides, every such channel is half duplex and cannot both send and receive data simultaneously. There is no equality in the USB architecture. Whatever devices you connect, one of them has to be the host and the others have to submit to it.