A method and system for scheduling the servicing of data requests, using
the variable latency mode, in an FBDIMM memory sub-system. A scheduling
algorithm pre-computes return time data for data connected to all DRAM
buffer chips and stores the return time data in a table. The return time
data is expressed as a set of data return time binary vectors with one
bit equal to "1" in each vector. For each received data request, the
memory controller retrieves the appropriate return time vector.
Additionally, the scheduling algorithm utilizes an updated history vector
representing a compilation of data return time vectors of all executing
requests to determine whether the received request presents a conflict to
the executing requests. By computing and utilizing a score for each
request, the scheduling algorithm re-orders and schedules the execution
of selected requests to preserve as much data bus bandwidth as possible,
while avoiding conflict.