A memory controller is provided and a method for transferring data between
the memory controller and a memory device. The memory controller can be
implemented on an integrated circuit that also contains an execution
unit. The execution unit can be clocked at a first clock rate, whereas
the memory controller can be selectively clocked at either the first
clock rate or a second clock rate that is approximately one-half
frequency of the first clock rate. By clocking the memory controller at
either the first clock rate or the second clock rate, the memory
controller can accommodate different types of semiconductor memory. For
example, the memory controller can control single data rate (SDR) DRAM
memory if it is clocked at a first clock rate. Conversely, the memory
controller can control double data rate (DDR) DRAM memory if it is
clocked at approximately one-half the first clock rate. By selectively
clocking the memory controller at different clocking rates, the memory
controller need not be modified in hardware, yet can accommodate
different memory devices by allowing a user to simply plug one type of
memory into a receptacle rather than another depending on the cost
constraints and user application. Therefore, the memory controller is
adaptable during a power-on reset in which the computer system is
initialized to automatically receive and control different types of
memory selected by a user.