Streaming Engine and Stream Address Generator

The Streaming Engine (SE) and Stream Address Generator (SA) intrinsic interface is defined in c7x_strm.h, which is included as part of the C7000 runtime support and is included automatically by c7x.h.

As described below, basic utilization of the SE and SA relies on parameter templates and flags that must be pre-configured before the SE or SA can be opened and used. For both the SE and the SA, the vector length is configured as part of the setup flags. The advancement mechanism is based on this as well as the dimensions and counts that are configured as part of the parameter template.

For the SE, the element size is also configured directly into the setup flags and is then used in the SE address calculation. However, the SA does not work this way. For the SA, the advancement mechanism is abstracted based on its configuration, but the actual hardware offset is calculated and scaled based on the element size, which is derived not from the flags but from the load or store instruction being used with the SA. This allows the same SA to be effectively used by different load or store instructions that have different element sizes.