1

I'm really confused about bus standards like ide,ata,sata,pci etc.

I have just read this article :When a disk read or disk write occurs, where does the data go? So if we talk about hard disk drive; hdd logic board contains a microcontroller,buffer-ram,motor driver etc.This microcontroller communicates with the motor driver for reading and writing sectors to hdd platers.As i know a microcontroller is combination of cpu,registers,io ports,ram etc.Also there must be firmware inside the microcontroller.

My first question is how hdd microcontroller clock frequency is determined?

And according to above article why there is a word like "sata drive"? I mean if "ata" or "sata" etc. are just bus interfaces between the cpu and device controllers why "ata","sata" or "pci" words become a prefix for peripheral devices?

I really want to understand deeply about communication with peripheral devices.Above article i understood that two seperate communications occur when we want to read sectors from hdd, first is between "cpu - device controller" and second is "device controller - hdd".So how these seperate communications work each other?

Finally if "ata" or "sata" are interfaces that just stand for "cpu&memory(dma)-device controller" communication gateway, why this interface is slower than the front side bus(fsb)?i mean if i speak for dma transfer, after disk controller reads one sector from hdd it must transfer this sector to memory right?So why these slow bus interfaces are used for communication between the memory and device controllers?

  • A microcontroller isn't going to have a CPU, if it had a CPU, it would be a microprocessor. ATA and SATA don't stand for what you think they stand for. ATA stands for AT Attachment there also is PATA and SATA. Pretty much all your conclusions are wrong. ATA was actually called IDE and PATA was called Enahnced IDE Parallel ATA and Serial ATA are the current standards with PATA being the previous standard which has been phased out from all (most) motherboards. – Ramhound Apr 29 '14 at 13:10
  • -"ATA and SATA don't stand for what you think they stand for. ATA stands for AT Attachment".. so what does it mean? -"Pretty much all your conclusions are wrong"..I would be glad if u help me to understand. – spartacus Apr 29 '14 at 13:16
  • I told you what ATA stands but its better known as IDE. I listed several of your conclusions that are incorrect. SATA isn't slow it has a direct data bus to the x86 CPUs The only thing that might be faster is PCI-Express excluding the actual cache the CPU has of course. I was mistaken ATA does indeed have registers because of the DMA controller but it does not have a CPU itself since as I explain it would be then called a microproessor instead of a microcontroller. – Ramhound Apr 29 '14 at 13:36
  • @Ramhound - "A microcontroller isn't going to have a CPU" -- Take a look at datasheets from modern microcontrollers (such as Atmel's line), and you would discover that they do have a processor core (aka CPU). – sawdust Oct 29 '14 at 19:34
0

I'm really confused about bus standards like ide,ata,sata,pci etc.

You should separate PCI from ATA, SATA and IDE.
ATA, SATA and IDE are not a bus like PCI.

My first question is how hdd microcontroller clock frequency is determined?

That's a decision based on what is cost effective versus what level of performance is required.

And according to above article why there is a word like "sata drive"? I mean if "ata" or "sata" etc. are just bus interfaces between the cpu and device controllers why "ata","sata" or "pci" words become a prefix for peripheral devices?

SATA and ATA are interfaces, not "bus interfaces".

It is used as an adjective to designate the type of interface that the peripheral has and what is required on the host computer side.
If you have a "SATA drive" and have no free SATA ports on your PC's motherboard, then you cannot connect it. If there are other unused interfaces (such as a PCI slot or IDE port or USB port), then you could use the appropriate adapter (with added cost and maybe a performance penalty).

i understood that two seperate communications occur when we want to read sectors from hdd, first is between "cpu - device controller" and second is "device controller - hdd".So how these seperate communications work each other?

The device controller is in the middle of both of these operations.
The modern disk controller that is embedded in a SATA disk drive has its own CPU (aka microcontroller), RAM and flash, and executes its own firmware to perform its functions.

BTW you have the data flow 100% backwards. For a read sector from the disk, the first transfer is 'hdd -> device controller', and then the second transfer is 'device controller -> host'.
Also "data transfer" is a more accurate description of the operation than "communications".

Finally if "ata" or "sata" are interfaces that just stand for "cpu&memory(dma)-device controller" communication gateway, why this interface is slower than the front side bus(fsb)?

A peripheral interface is generally slower than a processor bus simply because of length and construction. The Front Side Bus is only a few centimeters in length, and fully contained on the motherboard. The circuit designer has excellent control of the anticipated electrical noise the bus will have to reject. A peripheral interface is almost always for an off-board device using a flexible cable. There are numerous cost versus performance tradeoffs that factor into the design of such interfaces.

BTW that is not a good definition for an interface.
A "communication gateway" is altogether another animal.

i mean if i speak for dma transfer, after disk controller reads one sector from hdd it must transfer this sector to memory right?

A peripheral interface as fast as a FSB over a 0.25 meter flexible cable could be 1000 times more expensive. The cost versus benefit ratio is poor because only one phase of a multi-phase data transfer is being improved.

So why these slow bus interfaces are used for communication between the memory and device controllers?

Cost.
To confuse you even more, these peripheral interfaces do not connect directly to "memory" (as you have written several times). Usually the host side of such an interface would connect to a local system bus, so that either the CPU (using PIO) or the DMA controller can access the interface's data register.
Maybe this is too much detail for you, but then perhaps it is this lack of detail and oversimplification that contributes to confusion.

  • this is an awesome answer, thank u so much saw! – spartacus Oct 30 '14 at 10:55

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.