A system and method for managing a functional unit in a system using a
data movement engine. An exemplary system may comprise a CPU coupled to a
memory controller. The memory controller may include or couple to a data
movement engine (DME). The memory controller may in turn couple to a
system memory or other device which includes at least one functional
unit. The DME may operate to transfer data to/from the system memory
and/or the functional unit, as described herein. In one embodiment, the
DME may also include multiple DME channels or multiple DME contexts. The
DME may operate to direct the functional unit to perform operations on
data in the system memory. For example, the DME may read source data from
the system memory, the DME may then write the source data to the
functional unit, the functional unit may operate on the data to produce
modified data, the DME may then read the modified data from the
functional unit, and the DME may then write the modified data to a
destination in the system memory. Thus the DME may direct the functional
unit to perform an operation on data in system memory using four data
movement operations. The DME may also perform various other data movement
operations in the computer system, e.g., data movement operations that
are not involved with operation of the functional unit.