Hard Drive – Average Time to Read a Single Sector

computer-architecturehard drive

If there is a magnetic disk as following:

Average seek time: 12 ms

Rotation rate: 3600 RPM

Transfer rate: 3.5 MB/second

Number of sectors per track: 64

Sector size: 512 bytes

Controller overhead: 5.5 ms

What's the average time to read a single sector? I'm not sure how/why 2 parts are calculated.

We need to know:

  Seek time: 12 ms
  Average rotational delay: The answer here should be 8.3 but why? 60000/7200 would indeed give me 8.3 but why do I need to double the 3600?
  Transfer time: Not sure what to do here. Sector size is 512 bytes and rate is 3.5 MB/sec -- what do I need to calculate here? 
  Overhead: 5.5ms

Disk Access time:
I believe the answer is about 25ms

Resulting from (seek time) 12 ms + (average rotational delay) 8.3 + (transfer time) ? + (overhead) 5.5ms.

Best Answer

We need to know:

Seek time: 12 ms (given in text)

Average rotational delay: 3600 RPM = 60 revs per second, or 16.7 ms/rev. Average is half that, or 8.3 ms.

Transfer time: 512 / 3.5 MB/s = 146 µs -- however, it will take a little longer to actually read the sector, since there are 64 sectors on the disk, and the disk rotates once every 16.7 ms, each sector will take 16.7 ms / 64 = 260 µs to read. Since this is greater than the transfer time, it is the figure to use.

Overhead: 5.5ms (given in text)

Disk Access time:

Seek time (12 ms) + Average rotational delay (8.3 ms) + Sector read time (260 µs) + Overhead (5.5 ms) = 26.1 ms

It is possible, depending on how the disk controller works, the sector may be read into a hardware buffer (260 µs) and then transferred to memory (146 µs) as two separate operations, in which case the answer would be 26.2 ms instead.

Related Question