Controller
A computer system contains a first and second memory controllers; a first and second computer memory associated with the first and second memory controllers, a memory space; and firmware under control of which the computer system generates data that enables the first memory controller to use the first computer memory, saving the data in the memory space, copies the data to the first memory controller, causing the first memory controller to use the first computer memory, and uses the first computer memory to initialize the second memory controller to use the second computer memory.
Reset
The computer firmware initiates a reset after saving the data; the computer system determines whether a current reset is firmware initiated; if the current reset is firmware initiated, the computer system copies the data to the first memory controller having the first memory controller to use the first computer memory, and uses the first computer memory to initialize the second memory controller to use the second computer memory; and if the current reset is not firmware initiated, the computer system generates the data that enables the first memory controller to use the first computer memory, and saves the configuration data in the memory space. Determining how much physical computer memory is present and useable, the memory controller uses the computer memory. To do so, it gathers type, size, speed and memory attributes from the memory modules and programs the memory controller accordingly. Once the memory controller has been configured, It will program a setting in the memory controller that triggers the memory controller to initialize the memory modules. Therefore, the complete configuration information is formatted and assembled, but not yet programmed into the memory. In this manner, it configures information with “virtual” registers having a one-to-one correspondence with the actual registers that are in the memory controller.