Cheapskate's Guide

Home Contact

Understanding Computer File Transfer Rates

11-05-18

Pile of USB Sticks


The file transfer rates of a specific computer can affect its performance just as profoundly as its CPU speed. Just exactly what determines the file transfer rates of computers are not well understood by most consumers, and the advertising on the packaging of most computers, hard drives, SSD's, and flash drives only perpetuates this misunderstanding. For example, many consumers think that if they buy a USB 3.0 flash drive they will get the USB 3.0 transfer speed of the 625 MB/s advertised on the package. This couldn't be further from the truth.

Since computer interfaces are a complicated topic, I will try to simplify my explanation to the point where I hope the average computer consumer will be able to understand it. For those of you who are more knowledgeable, please forgive my explanation for being over-simplified.

In the discussion that follows, I'll designate bits with the small letter "b" and bytes with the capital letter "B". A bit is the smallest amount of information that can be addressed by a computer; it is either a one or a zero. There are always 8 bits in a byte, regardless of the computer's word length.

The transmission of data through computer interfaces (often called buses) is a complicated process affected by many factors. PCIe 1.1 is a type of bus. Actually, it is a type of communications protocol that determines how the bus functions, and thus, determines the bus speed and overhead. Some of the factors that determine the transfer rates of files are files sizes, microcontroller speeds, and microcontroller overheads. Overhead refers to communication that is required for error checking and control of transmissions. For example, with PCIe 1.1 buses, only 8 out 10 bits that are transferred are data. The other two are overhead. So, since a PCIe 1.1 lane can transmit 5 Gb/s (it's "raw" speed, or "bus" speed, or "interface" speed), the usable data transmission rate is only 4 Gb/s. You can find a long list of computer bus speeds here.

We can think of the hardware involved in a computer interface in the following terms. Although this may not be technically correct, on each side of the interface it is helpful to envision a microcontroller and between them a bus. Visualize the bus as the wires connecting the two microcontrollers. A microcontroller is like a small, low-powered CPU. In fact, these days the distinction between microcontrollers and CPU's is a bit blurry. In a computer that is talking to it's hard drive, there is a microcomputer in the computer and a microcomputer in the hard drive. When data is to be written to the hard drive, the computer's microcontroller sends the data across the bus to the hard drive's microcontroller. The hard drive's microcontroller writes the data onto the hard drive's spinning metal platters in the format that its designers programmed it to use. A USB flash drive also has a microcontroller. Even a tiny, micro flash card has a microcontroller. When the computer has, for example, an expresscard with USB ports on it into which a USB flash drive is plugged, there is an additional expresscard microcontroller and bus.

The important fact to understand is that no matter how many microcontrollers are involved in the transmission chain, the speed of data transmission is basically limited to the speed of the slowest microcontroller minus its buses overhead. For example, I have a Dell Latitude E6220 laptop with a no-name expresscard plugged into the E6220's expresscard slot. The E6220 has a microcontroller running the 5.0 Gb/s PCI bus that is connected to the expresscard slot. The expresscard has an Asmedia ASM1042 superspeed USB host microcontroller that is rated at 5.0 Gb/s, but due to the old, 2011 Asmedia XHCI controller driver, it is limited to 2.5 Gb/s. I have an external SSD that I have tested in another computer, so I know that it can be read at 3.6 Gb/s. The maximum transmission rate that I can hope for from the SSD through the expresscard to the Dell E6220 is 2.5 Gb/s--the speed of the expresscard's ASM1042 microcontroller driver. Actually, this is the speed of the PCIe bus protocol that the ASM1042 uses, not its true speed. Remember that the actual transmission speed through this setup will be even less due to the ASM1042 microcontroller's overhead and lower actual speed. Now, I have tested this setup to measure the actual read speed from this SSD when it is connected to a USB 3.0 port on the expresscard which is inserted into the espresscard slot in the E6220. I found it to be a maximum of about 800 Mb/s (100 MB/s). This means that, regardless of the fact that the express card has written on its label "5.0 Gb/s", the maximum file transfer rate of any device that I connect to it will be at most about 0.80 Gb/s. Again, depending on the microcontroller in the USB device and other factors, the speed may be considerably less.

Another important fact is that file transmission rate is a function of the file size. Smaller files are transmitted slower in terms of MB/s than larger files. This is in part because devices have what is known as a "seek" time, the time required for the microcontroller to find the location of the file in the device's memory. As a result, most SSD's will transmit 4K (4000 byte) files at between 5 and 80 MB/s. Most USB sticks will transmit 4K files at about 0.1 to 5 MB/s. So for example, when you buy a USB 3.0 Flash drive, instead of the advertised 625 MB/s file transfer rate (which is the USB 3.0 bus speed before overhead is deducted), you can actually expect to get between 0.1 and 5 MB/s when you are transferring 4K files. Also, I have measured the file transfer rates for real data that is in a mixture of files of all sizes and found that the actual transmission rate is about 3 to 6 times the transmission rate that the slowest device will transmit 4K files. So, when a USB 3.0 stick is the slowest device in your particular transmission chain, you can expect that all your real-world data in files of mixed sizes will be transmitted at between 0.3 and 30 MB/s. For an SSD, that number would be between 15 and 480 MB/s.

Here are some measurements that I've made of the sequential read speeds of actual USB flash drives. Sequential read speed is measured while reading very large files. It is not what you would get from reading an every day assortment of files of all sizes.

Flash Drive Name USB Version Max Sequential Read Speed (MB/s)
Patriot Rage 8GB 2 32.2
Sandisk Cruser Glide 8GB 2 20.8
Ativa 4GB 2 15.0
Kingston DT101 G2 8GB 2 14.6
Lexar 16GB 2 22.1
Sandisk Ultra 32GB 3 119.5
PNY 4GB 2 22.9
PNY Attache 4GB 2 17.5
HP 4GB 2 17.2
PNY 32 GB 2 17.9
PNY Turbo 64GB 3 21.9
PNY 16GB 2 22.4
Sandisk Ultra Flair 64GB 3 119.5
Kingston HyperX Savage 64GB 3 267.8

The bottom line that testing has revealed to me is that the advertised file transmission speeds of memory storage devices is much less than they are often advertised to be. So, if you would like to get a computer and file storage system that meets your particular speed requirement, you will probably have to do a considerable amount of thinking about it. Unfortunately, however, it seems that actual file transmission rates are so unpredictable that the only way to be sure of the real-life file transfer speed of some proposed system is to measure it.



Related Articles:

Know What You're Buying Before You Buy a Computer

Know What You Need Before You Buy a Computer

When Buying a Computer, More Knowledge Equals Lower Cost

Comments


Required Fields *

*Name:

*Comment:
Comments Powered by Babbleweb


Copyright © 2018-2019 The Cheapskate's Guide to Computers and the Internet. All rights reserved.