Computer systems are designed to process a variety of applications, each comprised of software instructions. With the increasing complexity of applications, software instructions have become longer, thus requiring an increased amount of time for the software instructions to be executed.
Software instructions are executed by a microprocessor which is the key working unit of a computer system. The methods that have been used to increase speed in the personal computer have generally centered on maximizing the efficiency with which a single microprocessor can process instructions. Limits are being reached on single microprocessor processing speed. To address this constraint, multiple microprocessors have been combined to operate in parallel within computer systems. Such multiple microprocessor systems, such as symmetrical multiprocessor (i.e., SMP) systems, allocate processing tasks among the multiple parallel microprocessors.
Upon powering on of an SMP system, each microprocessor is initialized, and a primary microprocessor is selected from among the microprocessors to take charge of bringing up the SMP system. The selection of the primary microprocessor can be done by a software algorithm, or by a hardware locking mechanism. Depending on the number of microprocessors in an SMP system, the time required for initialization increases with the number of microprocessors in the SMP system. The selection of the primary microprocessor can vary upon every time the SMP system is powered on.