SATA controller Re: [Open-graphics] YAPI (Yet Another Product Idea)

Jeff Garzik jeff at garzik.org
Fri Feb 9 19:36:40 EST 2007


James Richard Tyrer wrote:
> Dieter wrote:
>>>> Am I correct in thinking that a SATA controller would be easier and 
>>>> faster to
>>>> design than a graphics/video controller, and that it would cost 
>>>> significantly
>>>> less to get an ASIC fabbed?
>>> Is it anything more than a parallel to serial and serial to parallel 
>>> converter. a DMA controller, and the line transceiver?
>>
>> The SATA controller is involved in NCQ.
> 
> The DMA controller needs to be able to handle this.  So, you have to 
> program the DMA controller when you make an access request and the DMA 
> controller has to respond to tags it receives from the disk.

Yes.


>> I suspect it is involved in error detection/correction?
> 
> I think that that would still be handled by the disk's controller.

SATA is just like ethernet.  You have a PHYsical layer -- the SATA ports 
on each side of the links -- that must be managed.  The SATA controller 
(really the SATA PHY) performs error correction per the SATA specification.


>> It might be involved in handling port multipliers?
> 
> Intel claims their chip [31244] allows simultaneous port access to the 4 
> ports and has published a Linux driver to do this.

He's talking about something different.  A port multiplier somewhat like 
an ethernet switch: it allows many devices to be plugged into a single 
SATA port.

WRT Linux drivers, you can find support for 31244 and many other chips 
in drivers/ata/* in the current Linux kernel.


> So, exactly what is the problem?  Apparently, there is no standard for 
> programing the DMA controller or for simultaneous port access. :-( OTHO, 
> Intel has published standards for NCQ communication with the disk. :-)

Look at AHCI.  The 31244 is a lame first generation attempt at a SATA 
controller.  The 31244's NCQ and 64-bit addressing implementations have 
fundamental flaws.

	Jeff





More information about the Open-graphics mailing list