I have a rather simple question. Basically, I'm relatively certain that writing to a a flash drive is write speed and reading data on it is read speed. However, when transferring data from one drive to another (be it SSD or HDD), assuming the write speed of the destination drive is infinite, would the transfer speed be the source drive's read speed? In other words, is the speed at which data is transferred from a drive it's read speed?


The first bottleneck will either be the limitations of the medium (SATA/USB/FireWire) or, as you mentioned yourself, the read speed of the source drive.

Copying files from one disk to another doesn't utilize the very high reading and writing speed of RAM, because the clipboard only stores information about the files location, and not the files themselves.


if you copy a file from a flash drive to something with infinite write speed (posix /dev/null/, windows \\.\nul) then yes you will see only the effects of read speed, application, and operating-system overhead.


I have a rather simple question

But the answer isn't simple.

is the speed at which data is transferred from a drive it's read speed?

Transferring data from a device is reading.
The I/O direction is always from the perspective of the CPU.

The data transfer will occur in two phases.
The first phase is from the medium (e.g. disk platters or NAND flash) to the device's integrated controller (e.g. a disk controller or NAND flash controller, NFC).
The second phase is from the device controller to the host PC over a SATA or USB-SATA bridge (i.e. SATA over USB).
In between these phases the block of data is verified using ECC, and perhaps corrected.

These two phases have to occur sequentially for each block/sector of data.
These transfers cannot be performed concurrently, so the time to perform each phase can be added to get the total time to transfer the data (and ignores the time to send the read request and access the data).
The device manufacturer's read rate(s) may or may not separate these two phases, and may or not provide clarification.
In general I suspect the typical read rates for NAND flash drives are for only the first phase, as this will typically be the faster value which can impress a potential customer.

However, when transferring data from one drive to another (be it SSD or HDD),

Whoa, a transfer from one drive to another driver is almost always two transfers. There's a read from the source drive to memory, and then from memory a write to the destination drive.
The amount of concurrency or overlap that the read & write operations employ is determined by the sophistication (e.g. double buffering) of the copy program and hardware limitations (e.g. bus contention). The best case might perform the transfer in about half the time as the worst case (no concurrency at all), but without analysis or specific knowledge you would not know how to interpret the transfer times.

You cannot bypass memory unless you have a bus master that can perform device to device transfers.
Since a device to device transfer really involves two transfers with unspecified degree of concurrency, you will obtain inaccurate read and write "speeds" of the individual devices.
With *nix OSes write operations using /dev/zero and read operations using /dev/null provide rough overall transfer speed numbers.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.