8201, 8202, 8203, 8204 Acceleration Processor Data Sheet, DS-0157-05
Page 103
Exar Confidential
4
Data Flow
The 820x has four processing engines: Compression, Encryption, Pad, and Hash. Each
processing engine may be enabled or disabled in the command descriptor base register
forward to the next processing engine without altering the data or modifying the context.
The Pad engine is typically used for packet processing applications to pad or remove data;
storage applications may disable the Pad engine to conserve power.
The order of processing depends on whether the operation is in the encode or decode
direction. The positions of Compression, Encryption and Pad engines are fixed, but the
position of the Hash engine is configurable using Hash Engine Position PS configuration bits
In addition, in the data stream sent to a processing engine, the amount of header and
trailer data skipped by the engine may be adjusted according to the Source_Count and
Header_Count fields in the command descriptor structures for each engine. This feature can
be used to accelerate packet processing.
4.1 Encode Operations Data Flow
4.1.1
Hash Engine before Compression Engine
Figure 4-1 shows the data flow when the position of the Hash Engine is before the
Compression engine and all four engines are enabled.
1. The DMA fetches “RAW” data from the host according to the command structures,
and sends the data to processing channel 0 or processing channel 1.
2. In parallel, processing channels 0 and 1 begin to process the “RAW” data for
separate commands.
3. The Hash engine simultaneously calculates the hash values for the “RAW” data,
and passes the “RAW” data to the Compression engine.
4. The Compression engine compresses the “RAW” data, and then sends the
compressed RAW data “CMP” to the Pad engine.
5. The Pad engine passes through the “CMP” data and adds “Pad” to the data stream
for the Encryption Engine.
6. The Encryption engine encrypts the “CMP + Pad” data, and then sends the result,
ENC (CMP + Pad), to the DMA.
7. Finally, the DMA sends the result data, ENC (CMP +Pad), from the Encryption
engine and the hash values from the Hash engine to host memory according to the
command structures.