Memory access requests are successively received in a memory request queue
of a memory controller. Any conflicts or potential delays between
temporally proximate requests that would occur if the memory access
requests were to be executed in the received order are detected, and the
received order of the memory access requests is rearranged to avoid or
minimize the conflicts or delays and to optimize the flow of data to and
from the memory data bus. The memory access requests are executed in the
reordered sequence, while the originally received order of the requests
is tracked. After execution, data read from the memory device by the
execution of the read-type memory access requests are transferred to the
respective requesters in the order in which the read requests were
originally received.