Why is USB slower than Firewire?

Take this quote from Macworld:

When we connected the MacBook Pro to a 2TB Western Digital My Book Studio drive and copied a 1GB file to it from the internal hard drive, we found that it took 23 percent less time over FireWire 400 than over USB 2.0. Duplicating that file using FireWire 400 on the WD drive took 10 percent less time than when run over USB 2.0. To see how the different connections performed in more typical backup tasks, we copied over a 2.5GB folder containing 5000 individual files and folders. In that test, we found the FireWire 400 transfer to be 26 percent faster than USB 2.0. Using AJA’s System Test application, we found the MacBook Pro’s FireWire 400 connection to be 46 percent faster than USB in the writing tests. In the reading tests, however, the edge went to USB, which was nine percent faster than FireWire 400.

But this doesn’t make sense, does it?

USB 1, is primarily aimed at keyboards, joysticks, and other low speed transfers, after all, it is limited to 12 Mbit/s.

USB 2, upgrades the transfer rate to a peak of 480 Mbit/s, and is quite useful for large file transfers (eg, Hard Drives, Optical drives, etc…).

USB 3, is not yet finalized, and while on paper it will be significantly faster than USB 2, it is not yet ready for mainstream use.

Firewire 400, can transfer data at 100,l 200 or 400 Mbit/s half-duplex (12, 24, or 49 megabytes/second).

Firewire 800, allows a transfer rate of 786 Mbit/s full-duplex, and is backward compatible to Firewire 400.

In addition, there is a S1600, S3200, S800T, and (unreleased at this point) P1394d for the firewire family, each of these are significantly faster, but may require different cables (eg Fiber).

So why is Firewire 400 (400 Mbit/s) faster than USB (480 Mbit/s)?

Sadly, it is due to hardware limitations.

  • USB relies on the host-processor to manage low-level communications, where Firewire delegates the low-level communications to the Firewire devices themselves.  This means less or no CPU usage during data transfers.
  • Being host based, USB requires every packet to be processed by the CPU.  This copying a file from one USB drive, to another, requires the file to be “sent” to the CPU, and then back to the other drive.  Thus taking roughly 2x bandwidth, in comparison to the Firewire drive(s).
  • USB is based on a tiered-star topology, which may require multiple devices to pass communications along thus reducing the available bandwidth between the devices communicating.
  • USB 1.x, and 2 can not directly communicate with the CPU, the CPU must poll the devices.  This means that the data transfers can not occur until the CPU polls the device again.
  • USB typically only have a single single USB controller, which means the bandwidth is divided between the ports (eg 480 Mbit/s / 4 ports = 120 Mbit/s per port).  Some motherboards do have multiple controllers, but even then there are typically only 2 controllers, for 6 or 8 USB ports.
  • In most cases these controllers are connected to the Southbridge, which is typically limited to 120 or 180 MB/s.
  • The 480Mbit/s measurement is of Peak performance (eg Burst rate), where Firewire’s speed is sustained.  So while USB is faster, it can not sustain that rate.

Overall, both USB and Firewire have a high rate of speed for data transfers, but Firewire currently has a slight edge.  Will this difference in speed matter for most people, not necessarily, but for any time intensive data transfer Firewire will be faster.  At least until USB 3 is released, and even then Firewire 1600 or 3200 would be faster, and they are already on the market…