1. Field of the Invention
This invention relates to the field of memory initialization, and more specifically, to a system, method, and apparatus to provide an interface between an operating system and a memory controller to allow the initialization of memory.
2. Background of the Invention
Computing systems typically include at least an operating system and a memory such as a Dynamic Random Access Memory (DRAM). The memory stores data in “memory addresses” contained therein. Each “memory address” is the memory location of the memory corresponding to the address. Each memory address may store several bits of data.
Because the data typically remains at a memory location until overwritten, security issues arise. For example, if a user's credit card number or password had been used by a prior application program, that information can reside in a memory location of the memory device until the data at that memory address is overwritten. Accordingly, someone with access to the operating system and the memory device could retrieve the sensitive information from the memory. Therefore, it is sometimes necessary to initialize sections of the memory device before granting the operating system, or applications executed by the operating system, access to them.
Typical initialization programs in the art utilize an operating system kernel of the operating system to initialize the memory addresses of the memory device. Such programs typically utilize the operating system to cause the processor to execute a series of successive initialization cycles on the memory device. Each initialization cycle is used to initialize an area of the memory representing a memory address. After each initialization cycle is completed a hardware-based “success” signal is sent back to the operating system to indicate that the location of the memory representing the memory address has been initialized. The operating system kernel then sends another initialization cycle to initialize the area of the memory representing the next memory address. The process is repeated until the required section of the memory has been initialized.
Such a method is inefficient, however, because the operating system continually receives “success” signals and sends the initialization cycles until the required section of the memory has been initialized. Therefore, much of the processing bandwidth of the operating system must be used for the initialization, and any other application programs executed by the operating system slow down.
Accordingly, current memory initialization systems are deficient because an operating system controls initialization of memory and receives continuous initialization information during the initialization process, using much processing bandwidth.