A system for improving direct memory access (DMA) offload. The system
includes a processor, a data DMA engine and memory components. The
processor selects an executable command comprising subcommands. The DDMA
engine executes DMA operations related to a subcommand to perform memory
transfer operations. The memory components store the plurality of
subcommands and status data resulting from DMA operations. Each of the
memory components has a corresponding token associated therewith.
Possession of a token allocates its associated memory component to the
processor or the DDMA engine possessing the token, making it inaccessible
to the other. A first memory component and a second memory component of
the plurality of memory components are used by the processor and the DDMA
engine respectively and simultaneously. Tokens, e.g., the first and/or
the second, are exchanged between the DDMA engine and the processor when
the DDMA engine and/or the microcontroller complete accessing associated
memory components.