Sata sx4

From ata Wiki
Jump to: navigation, search

Contents

Hardware support

sata_sx4 supports the Promise PDC 20621 chip, designed specifically to offload most RAID functions from the host system. The driver operates the hardware in non-RAID mode, directly exporting the ATA devices attached to each port for OS control.

Limitations

The SX4 (PDC20621) chip features a single Host DMA (HDMA) copy engine, DIMM memory, and four ATA engines (one per SATA port). Data is copied to/from DIMM memory by the HDMA engine, before handing off to one (or more) of the ATA engines. The ATA engines operate solely on DIMM memory.

The SX4 behaves like a PATA chip, with no SATA controls or knowledge whatsoever, leading to the presumption that PATA<->SATA bridges exist on SX4 boards, external to the PDC20621 chip itself.

The chip is quite capable, supporting an XOR engine and linked hardware commands (permits a string to transactions to be submitted and waited-on as a single unit), and an optional microprocessor.

The limiting factor is largely software. This Linux driver was written to multiplex the single HDMA engine to copy disk transactions into a fixed DIMM memory space, from where an ATA engine takes over. As a result, each WRITE looks like this:

  • submit HDMA packet to hardware
  • hardware copies data from system memory to DIMM
  • hardware raises interrupt
  • submit ATA packet to hardware
  • hardware executes ATA WRITE command, w/ data in DIMM
  • hardware raises interrupt

and each READ looks like this:

  • submit ATA packet to hardware
  • hardware executes ATA READ command, w/ data in DIMM
  • hardware raises interrupt
  • submit HDMA packet to hardware
  • hardware copies data from DIMM to system memory
  • hardware raises interrupt

This is a very slow, lock-step way of doing things. A driver designed specifically for RAID would provide better performance.

Known problems

Isolated reports of data corruption in the past, that were never tracked down to implicate or eliminate the driver.

Module options

None.

Programmer documentation

Multiple specifications are available: Programmer's guide, DIMM supplement, and PLL/ATA timing supplement.

Personal tools