1. A system for controlling movement of data in a data processing system, comprising: at least one protocol engine; and an architecture that interfaces with the at least one protocol engine, the architecture including: at least one context list retrieval channel for receiving contexts from a list of contexts, for determining when data represented by the contexts can be transferred, and for issuing instructions representing a specified amount of data that can be transferred; at least one read instruction arbiter/manager for receiving read instructions issued by each at least one context list retrieval channel, for arbitrating between each at least one context list retrieval channel, and for passing a winning read instruction to the at least one protocol engine and to at least one read DMA; at least one write instruction arbiter/manager for receiving write instructions from each at least one context list retrieval channel, for arbitrating between each at least one context list retrieval channel, and for passing a winning write instruction to the at least one protocol engine and to a pending write instruction table; the at least one read DMA for receiving the winning read instruction from the at least one read instruction arbiter/manager, for moving the specified amount of data with the at least one protocol engine, and for notifying the at least one context list retrieval channel when the winning read instruction is complete; the at least one pending write instruction table for storing pending write instructions received from the write instruction arbiter/manager, for passing the pending write instructions to at least one write DMA, for receiving updates to the pending write instructions after the write DMA has transferred pending write instruction data, and for providing feedback to the at least one context list retrieval channel when each pending write instruction is completed; and the at least one write DMA for receiving data from the at least one protocol engine and an identification identifying a pending write instruction to fetch, for fetching the identified pending write instruction from the pending write instruction table, for moving data with the at least one protocol engine, and for updating an associated pending write instruction table instruction.