A memory management system provides the ability for multiple requesters to access
blocks of memory in a pipelined manner. During a first clock, requests for one
or more of the memory blocks are received by the system. A determination is made
of whether one of the memory blocks is requested by one or more requests. If the
same memory block is requested by two or more requests, the system performs a further
determination of which of the requests will be provided to the memory block. The
determined request is provided to the memory block on the first clock. During a
second clock, the data of the determined request is latched to the memory block
and a memory access is initiated. If the request is a write request, the data is
written to the memory block. If the request is a read request, then the requested
data is retrieved and, on a third clock, the data is driven onto a bus, routed
to the determined requester, and available to be latched into the requester on
the fourth clock.