What determines the order of hard drives?

I've got three hard drives installed in my PC, though the drive order shown in Windows doesn't reflect the order in which the drives are installed:

  • SATA 1: 120gb drive
  • SATA 2: 320gb drive
  • SATA 3: 750gb drive

In BIOS, this shows up correctly. However, in the 'Disk Management' utility in Windows, it sees the drives as follows:

  • Disk 1: 120gb drive
  • Disk 2: 750gb drive
  • Disk 3: 320gb drive

I've tried using BootIt NG which appears to see the drives in the same order as Windows rather than the order in which they are connected to the SATA controllers on the motherboard.

I'm curious as to what factors determine the order in which software sees the hard drives, and if there's any way in which to 'reset' this to reflect the actual physical order?

Update

My motherboard is the Asus P5E, and the hard drives are all different: 120gb SSD, 320gb WD, and 750gb Seagate. After looking through the BIOS, I found an option that allows the drive order to be changed, though this doesn't seem to be reflected in Windows or BootIt NG, which still seem to list drives in some arbitrary order. The main purpose it seems to serve is allowing the hard drive used for booting to be changed.

Admittedly, the actual physical order of the drives isn't that important as Windows allows drive letters to be easily re-assigned as required, though I was just curious as to how the drive order was determined. If they aren't detected in the same order as they are connected, then it seems like the sequential numbering of the SATA connectors doesn't really mean anything and could just as easily have non-sequential labels.


From this KB article:

The disk-assignment numbers may not necessarily match the corresponding SATA or RAID channel numbers. There is no assurance of a consistent relationship between PnP enumeration and the order of the hard disks that are detected during setup. Devices are presented in the order in which they are enumerated. Therefore, the disk-assignment numbers may change between startups. For example, assume that you run Windows Vista, Windows Server 2008, Windows Server 2008 R2, or Windows 7 Setup on a computer that has two unformatted SATA or RAID hard disks. In this situation, Windows may present the second hard disk as Disk 0 when you are prompted for the disk on which to install Windows Vista, Windows Server 2008, Windows Server 2008 R2, or Windows 7.


I'll start by saying I have no idea myself how this is done. Just sounds like a good question that got me thinking. That said, have you seen the wikipedia page that discussed drive letter assignment? Is says:

Assign a drive letter, beginning with C: to the first active primary partition recognised upon the first physical hard disk.

Assign subsequent drive letters to the first primary partition upon each successive physical hard disk drive.

Assign subsequent drive letters to every recognised logical partition, beginning with the first hard drive and proceeding through successive physical hard disk drives.

Although it's pretty high-level, it does provide avenues for inquiry...

It does say first disk detected, so there might be something about the first disk in the chain that makes it slower to respond. Are they all the same type?

Might the bios be set up to specify a specific disk (like a secondary master) is the first disk mounted?

Is it possible that the first drive in the chain is set up as a slave & the system skips it when doing it's search?