Mike, "..just trying to understand..." [muliprocessors]
You operate on wrong premises. BIOS is not fooled by anyone, nor sees/not sees something. BIOS is _controlling_ everything. However, it may fool user configuration menu with stupid broken-english messages, that's right.
There are certain agreements between BIOS and OS on how hardware is represented, called HAL - hardware abstraction layer. For Windows to understand the hardware, BIOS has to report it in certain ways.
In very superficial terms, the BIOS does the following. When a MP system starts, it starts with a single "bootstrap" processor selected randomly or else. In i-x86 architecture, each processor has to have a local APIC - Advanced Peripheral Interrupt Controller. The controllers are connected via a separate few-wire bus. Running on a single processor, BIOS searches for other APICs through a sophisticated arbitration process and enumerates them. Then it allocates memory areas for each APIC (==processor), and places individual interrupt/configuration routines and semaphores. BIOS also fills in a special interrupt table to be able to send messages via APIC bus, and initializes every found AP (Application Processor) to a sort of idle state. Then BIOS continues to use the bootstrap processor to boot from storage media into OS. OS then reads tables created by BIOS and schedules tasks/threads to different processors accordingly. If a processor (or half processor with hyperthreading) has logically all these attributes (APIC address and tables), it will be treated by OS as independent processor. Effectivenes of this is a different matter.
Hope this helps,
- Ali |