transfer time of a cylinder

How do you figure out the transfer time of a cylinder?

• Could you be a bit more specific? Your question is incredibly vague... – alex Mar 16 '10 at 8:31
• @alex: "cylinder" is a fairly specific term in the context of hard-drives. this question isn't that vague. (it's perhaps irrelevant, but it's not vague.) – quack quixote Mar 16 '10 at 8:57
• – Jonathan Leffler Mar 16 '10 at 11:12
• @Jonathan: and all by the same user, no less. i think he's taking a class. superuser.com/search?q=[hard-drive]+user%3A18894 – quack quixote Mar 16 '10 at 11:35
• I don't want to be mean, but why not just study this yourself? Do you want us to do all the research for you? Do you want SU to go take the exam? – alex Mar 16 '10 at 11:42

CHS (Cylinder/Head/Sector) geometries really don't apply to modern hard-drives (at least from an end-user standpoint), but for the sake of argument let's assume they do. According to Wikipedia, a cylinder is defined as:

A cylinder comprises the same track number but spans all such tracks across each platter surface that is able to store data (without regard to whether or not the track is "bad"). Thus, it is a three-dimensional object. Any track that comprises the same cylinder can be written to and read from while the actuator assembly remains stationary. One way drive makers have been able to increase drive speed is by increasing the number of platters that can be read at a given time.

Let's futher assume that by "transfer time of a cylinder", we're interested in the amount of time it will take to read, and transmit, all the data in each block in a given cylinder.

So, our definitions:

• ttrack is the time to read one track;
• tseek is the time to move the heads into position;
• n is the number of platters (and thus 2n is the number of tracks per cylinder, assuming tracks on both sides of the platters)
• x is the transfer speed of the hard drive's data connection, in bytes per second.
• b is the number of bytes per cylinder. For our purposes, b is equal to 64512n bytes, given the modern standards of 512 bytes per sector, 63 sectors per track, and 2n tracks per cylinder (512 * 63 * 2n = 64512n).

Because we only need to move the heads once (by definition, all tracks in the cylinder require the heads in the same position), the time to read the data becomes:

• tread = tseek + 2nttrack

Now, we need to figure out the time to transfer that data. Given a transfer speed of x bytes per second, and a data density of b bytes per cylinder, the time to transfer (including the time to read the data) will be:

• ttransfer = tread + (b / x)
• Generalized for b=64512n, this becomes ttransfer = tread + 64512n/x seconds

Now, to determine an actual transfer time, you'll have to plug in the numbers for x, tseek, and ttrack, which will all be device dependent. Even b is device dependent, since modern hard drives don't report their real physical geometries and actually cram a lot more than 63 sectors onto a track (the number varies with the track position -- more near the edge, fewer near the spindle). We can make some other observations (about exactly how to calculate ttrack, which will vary based on the location of the track on the platter), but for general purposes device dependent will suffice.

• note that some of Phenom's other questions have been about rotational latency -- this would be part t-sub-seek above. overall this is a very general view; any real-life calculation is nigh-impossible for anyone other than the drive manufacturer. – quack quixote Mar 16 '10 at 11:05