1. In a multi-rank DDRx memory system having at least two ranks of memory each having a number of banks, where x is an integer greater than or equal to 2, a method for performing command scheduling for row access commands and column access commands, said method comprising: decoupling the row access commands from adjacent column access commands, including scheduling adjacent row and column access commands to access different banks; scheduling the decoupled row access commands to alternating ranks of the at least two ranks of memory, including scheduling each decoupled row access command based on the rank accessed by the previous row access command for the scheduled decoupled row access command to access a different rank than the previous row access command; group scheduling the decoupled column access commands to each bank of the number of banks of a given rank of the different ranks of the at least two ranks of memory, including scheduling each decoupled column access command based on the rank accessed by the previous column access command for the decoupled access command to access another bank of the rank accessed by the previous column access command until there are no more column access commands that access banks of the given rank available for scheduling.