Intel
®
81341 and 81342—Application DMA Unit
Intel
®
81341 and 81342 I/O Processors
Developer’s Manual
December 2007
464
Order Number: 315037-002US
5.2
Theory of Operation
The Application DMA provides three channels that perform data transfers from and to
the 81341 and 81342 local memory, from the host I/O interface to the 81341 and
81342 local memory, or from the 81341 and 81342 local memory to the host I/O
interface. Each channel uses direct addressing for both the memory controller and the
host I/O interface.
Each channel can perform memory-to-memory, host-to-memory, or memory-to-host
transfers of data blocks.
Each channel implements an XOR algorithm in hardware. It performs an XOR operation
on multiple blocks of source (incoming) data and stores results back in either 81341
and 81342 local memory or to the host I/O interface. The source and destination
addresses are specified through chain descriptors resident in either 81341 and 81342
DDR SDRAM memory or on the host I/O interface.
Each channel implements a dual-XOR operation that has been optimized for RAID 6
applications. For a single strip RAID 6 write, the dual-XOR operation generates the
Horizontal and Diagonal Parity results using new data, old data, old horizontal parity,
and old diagonal parity.
A GF Multiply calculation can be applied to source data in support of P+Q RAID-6. The
ADMA performs a GF Multiply between source data and a control byte for each source
before the XOR operation to generate Q and perform an XOR operation to generate P.
P+Q RAID-6 is enabled through the
enable bit in the
“ADMA Descriptor Control Register x — ADCRx”
.
Each channel checks for a zero result buffer across memory blocks or fill a memory
block with arbitrary data.
Each channel contains a hardware data alignment unit. This unit enables data transfers
from or to unaligned addresses in either the Host address space or the I/O processor
local address space. All combinations of unaligned data are supported with the data
alignment unit.
Each channel includes a CRC Engine to calculate the CRC-32C algorithm on the data
stream being transferred. The CRC engine also initiates the read of a CRC seed and the
subsequent write back of the 32-bit result to a CRC Address specified in the descriptor.
In addition, a Transfer Complete status bit is updated to the descriptor in memory.