1. A memory controller comprising: an agent interface unit coupled to a plurality of ports of the memory controller, wherein the agent interface unit is configured to receive memory operations and corresponding quality of service (QoS) parameters on each port; and a plurality of memory channel units coupled to the agent interface unit, wherein the memory channel units each comprise a presorting queue and a memory interface unit to couple to a memory; wherein the agent interface is configured to schedule memory operations from the ports to a given memory channel unit responsive to the QoS parameters of the memory operations, and wherein the agent interface units are configured to reorder memory operations to a given memory channel unit based on QoS parameters; wherein the memory channel units are configured to group memory operations in the presorting queue according to which memory operations are expected to be performed together efficiently to the memory, and wherein the memory channel units are configured to schedule groups based on a highest level QoS parameter in each group; and wherein the memory channel units are configured to presynthesize the memory operations into commands for the memory, and wherein the memory interface unit is configured to reorder the commands based on efficient access to the memory.