2.2.2. Multiprocessing On Multiprocessors

Parallelism on machines with multiple processors, or multiprocessors, ...

Vedle běhu více procesů pomocí opakovaného přepínání kontextu je možné navrhnout také systém s několika procesory a na každém spouštět jiný proces. Typické jsou SMP (Symmetric Multiprocessor) architektury, kde všechny procesory vidí stejnou paměť a periferie, nebo NUMA (Non Uniform Memory Access) architektury, kde všechny procesory vidí stejnou paměť a periferie, ale přístup na některé adresy je výrazně optimalizován pro některé procesory.

Hyperthreading to be done.

2.2.2.1. Example: Intel Multiprocessor Standard

Předpokládá SMP. Jeden procesor se definuje jako bootstrap processor (BSP), ostatní jako application processors (AP), spojené jsou přes 82489 APIC. Po resetu je funkční pouze BSP, všechny AP jsou ve stavu HALT, APIC dodává přerušení pouze PIC u BSP (a je povolené maskování A20, ach ta zpětná kompatibilita :-). BIOS vyplní speciální datovou strukturu popisující počet procesorů, počet sběrnic, zapojení přerušení a podobně a spustí whatever system you have. Systém pak připraví startup kód pro všechny AP a pomocí APIC je resetuje (startup adresa se zadá buď přes CMOS + BIOS hack, nebo přes APIC).

Funkci Intel MPS (výčet procesorů, doručování přerušení atd.) v současné době nahrazují části specifikace ACPI.

Jak už jednou procesory běží, problém je jenom s přerušením. Systém si řadiče přerušení každého procesoru nastaví jak potřebuje, pomocí APIC je možné doručit také Inter Processor Interrupts. IPI se hodí například na TLB nebo PTE invalidation.