CPU CPU CPU RAM. 24. APIC Advanced Programmable Interrupt Controller

24. APIC – Advanced Programmable Interrupt Controller 24.1.1 Wozu APICs • Unterstützung von Multiprozessorsystemen: − Signalisierung zwischen Prozes...
Author: Ingrid Bäcker
5 downloads 2 Views 69KB Size
24.

APIC – Advanced Programmable Interrupt Controller

24.1.1 Wozu APICs • Unterstützung von Multiprozessorsystemen: − Signalisierung zwischen Prozessoren, − Interruptverteilung, − Initialisierung.

• Verbesserte Interrupt-Architektur: − − − − − −

Mindestens 24 Interrupts pro IO-APIC, Keine Sideband Kommunikation, Peer-to-Peer Szenarium, Kein separater Vektor, Kein Handshake, 8259 optional.

CPU

CPU

CPU

local APIC

local APIC

local APIC

RAM IOAPIC

IOAPIC

• Legacy Interrupts weiterhin möglich. • Evtl. APIC abschalten (Vorsicht Chipfehler !). 24-1

Systemprogrammierung II, Winter 2005/06, P. Schulthess 24-1

PDF created with pdfFactory trial version www.pdffactory.com

24.2. Unterlagen (460) MultiProcessor Specification, Version 1.4, Intel Inc. May 1997 (970) IA-32 Intel® Architecture Software Developer’s Manual, Volume 3: System Programming Guide, Order Number: 253668-017, September 2005 (180) AMD Hammer Family Processor BIOS and Kernel Developer’s Guide, AMD 2002..4. (230) Intel® 82801DBM I/O Controller Hub 4 Mobile (ICH4-M), Datasheet January 2003 (200) Intel® 82806AA PCI 64 Hub (P64H), Datasheet, Intel Inc. November 1999 (200) Intel® 82801AA (ICH) & Intel® 82801AB (ICH0) I/O Controller Hub, Intel Inc., June 1999 (320) 82378ZB System I/O (SIO) and 82379AB System I/O APIC (SIO.A), Intel Inc. 1996 (115) Intel I/O Controller Hub 6 (ICH6) Family, Intel Inc. January 2005. (220) 82093AA I/O advanced programmable Interrupt Controller (IOAPIC), Intel Inc. May 1996 (79) Pentium® II Processor Developer’s Manual, 243502-001, Intel Inc., October 1997 (69) Intel® E7210 Memory Controller Hub (MCH) Chipset, Datasheet, Revision 1.0, February 04 (32) Intel® 820 Chipset: 82820 Memory Controller Hub (MCH), Intel Inc. November 1999. Hans-Peter Messmer, Klaus Dembowski: PC Hardwarebuch, 7. Auflage, Addison-Wesley 2003 24-2

Systemprogrammierung II, Winter 2005/06, P. Schulthess 24-2

PDF created with pdfFactory trial version www.pdffactory.com

24.3. Interruptarchitektur mit APIC 24.3.1 Architekturvariante 1 mit externem Intel 82489DX APIC: • Veralteter ICC-Bus zur Kommunikation mit anderen APICS: − Messages zwischen CPUs zur Kommunikation und Arbitrierung, − Einfacher serieller Bus mit APICCLK, APICD[0], APICD[1].

• Einerseits lokale Interupt-Einheit:

82489DX

Reset, Initialisierung, nonmaskable Int. für CPU, Lokale Interruptpins[0,1] mit Handshake, Berücksichtigung der Taskpriorität, Tabelle mit Interrupt-Atributen, Bussteuerung.

APIC Timer

− − − − −

PRST PINT PNMI

Lokale Einheit Prioritätsgeber Vektorfeld ICC Steuerung ICC-Bus

• Anderseits EA-Interrupt Einheit:

E/A Einheit ICC Steuerung

− Logische oder physikalische Interruptumleitung, − Bussteuerung & Interruptleitungen.

Umleitungstabelle Request Register

• Programmierung über Befehlsregister im IO-Raum ? => Messmer & Dembowski. 24-3

LINT0 LINT1

IRQ0 .. IRQ15

Systemprogrammierung II, Winter 2005/06, P. Schulthess 24-3

PDF created with pdfFactory trial version www.pdffactory.com

24.3.2 Architekturvariante 2 • Lokaler APIC im CPU-Chip integriert ab Intel Pentium Pro. • Kommunikation über seriellen APIC Bus oder über Systembus (ab P4). • IO-APIC verteilt im Chipset integriert.

Lokale APIC Prioritätsgeber Vektorfeld ICC Steuerung

LINT0 LINT1

PRST PINT PNMI

ICC-Bus

24-4

Lokale APIC Prioritätsgeber Vektorfeld Bus Steuerung

LINT0 LINT1

PRST PINT PNMI

APIC Timer

CPU

APIC Timer

CPU

System Bus FSB

Systemprogrammierung II, Winter 2005/06, P. Schulthess 24-4

PDF created with pdfFactory trial version www.pdffactory.com

24.4. Lokaler APIC

− erzeugt durch anderen lokalen APIC, − SMI, NMI, INIT, STARTUP ...

CPU

• Lokaler Geräteinterrupt: − − − − − −

ohne Vermittlung eines I/O APIC, An einem CPU Pin LINT0, LINT1, Performance Monitoring Interrupt. Lokaler APIC Timer Interrupt. Temperatur sensor interrupt. APIC Error Interupts.

24-5

Lokaler APIC

Interrupt Tabelle

24.4.1 Interruptkategorien • Externer Geräteinterrupt, vermittelt durch einen I/O APIC. • IPI - Interprozessor Interrupt:

LVT Lokaler Int.

IPI I/O APIC

Systemprogrammierung II, Winter 2005/06, P. Schulthess 24-5

PDF created with pdfFactory trial version www.pdffactory.com

24.4.2 LVT Format • LVZ = Lokale Vektortabelle. • Keine Weiterleitung an andere CPUs für lokale Interrupts. • Hält Attribute und Vektor nur für lokale Interrupts. • Maximal 18 aus 128 Bit genutzt: 17 16 15 14 13 12 10-8 7-0

Timer Modus (single Shot?), Maskierung des Interrupts Flanken- oder Pegeltriggerung Remote IRR, „CPU working on it“, Polarität des Eingangssignals, Auslieferungszustand Auslieferungsmodus Interruptvektor

24-6

Systemprogrammierung II, Winter 2005/06, P. Schulthess 24-6

PDF created with pdfFactory trial version www.pdffactory.com

24.4.3 Registersatz für Local APIC im P4 • Im Prinzip 128 Bit Register. FEE0_0020 FEE0_0080 FEE0_00B0 FEE0_00D0 FEE0_00E0 FEE0_00F0 FEE0_0100 FEE0_0180 FEE0_0200 FEE0_0280 FEE0_0300 FEE0_0310 FEE0_0320 FEE0_0340 FEE0_0350 FEE0_0370 FEE0_0380

-

Local APIC ID, Local APIC Version, Task-, Arbitration-, Prozessor-Priorität, EOI Register, Logical Destination, Destination Format, Spurious Interrupt Vector, In Service Register (128 Bytes), Trigger Mode (128 Bytes), Interrupt Request (128 Bytes), Error Status, Interrupt Command Register Low (Bits 0-31), Interrupt Command Register High (Bits 32-63), Local Vector Table Timer, Temperaturfühler, Local Vector Table Performance Monitor, Local Vector Table LINT0, Local Vector Table LINT1, Local Vector Table Error, Timer Register bis … E0,

24-7

Systemprogrammierung II, Winter 2005/06, P. Schulthess 24-7

PDF created with pdfFactory trial version www.pdffactory.com

24.5. APIC Kommunikation 24.5.1 Buszugriffsprotokoll und Arbitrierung • Ausführungsformen:

− Alter serieller ICC-Bus mit separatem APIC, neuer ICC-Bus ab Pentium, − Interrupt-Ablieferung über FSB-Nachricht seit Pentium 4.

• Auf dem ICC Bus durch separates Protokoll: − − − −

Buszugriff durch Dominanz von binären Einsen, Gleichzeitig Auswahl des Zieles mit der niedrigsten Priorität, Erweiterung der ICC-Nachricht „on the fly“. Prüfsummen und Retries.

• Bei FSB-Kommunikation: − − − − −

Ab P4 und XEON geschieht die APIC Kommunikation über den Systembus. Schreiben an FEE0_xxxx hex oder FEC0_xxxx hex (I/O APIC), Interrupt-Zyklus auf dem FSB, ähnlich dem PCI Interrupt-Zyklus, Besonderer FSB Zyklus zur prioritätsgesteuerten Interruptverteilung, Zugriffsteuerung durch Standardbusarbitrierung.

24-8

Systemprogrammierung II, Winter 2005/06, P. Schulthess 24-8

PDF created with pdfFactory trial version www.pdffactory.com

24.5.2

Interruptauslieferung Empfangen

Wegwerfen

nein

Adresse ?

Ja

NMI etc. ?

Ja

Annehmen

nein Retry

Ja

Free Slot ?

fixed

Delivery ?

Low Prio.

nein Ja

Retry ?

nein

nein Retry

Free Slot ? Ja Arbitrieren

have Fokus ? nein other Focus

Ja

Ja

Annehmen

Wegwerfen

nein

Winner ?

Ja

Annehmen

nein Annehmen

24-9

Systemprogrammierung II, Winter 2005/06, P. Schulthess 24-9

PDF created with pdfFactory trial version www.pdffactory.com

24.5.3 Auslieferungsmodus (Delivery Mode) • Physikalisch Zieladressierung:

− Ein Prozessor aus 16 oder aus 255 kann adressiert werden.

• Logische Zieladressierung:

− Logische APIC Adresse hat eines aus 8 Bits gesetzt, − Flat model: 8 Bit Nachrichtenaddresse wird mit der Logischen APIC Adresse „anded“, − Flat cluster model: o 4-Bit Clusternummer für 16 Clusters, o gefolgt von 4 Bit Maske für die Auswahl aus 4 APICs aus dem Cluster, − Hierarchisches Cluster Modell: o Mehrere APIC Busse, o 4-Bit Clusternummer für 15 Clustermanager, o Jeder Clustermanager steuert 4 Agenten mit eigenem Bus.

• Auslieferungsmodus:

− Fest, Auslieferung an adressierte Prozessoren, − Prioritätsgesteuert, an den adressierten Prozessor mit der niedrigsten Priorität, − System Management interrupt, Nonmaskable Interrupt, Initialisierung, Startup..

24-10

Systemprogrammierung II, Winter 2005/06, P. Schulthess 24-10

PDF created with pdfFactory trial version www.pdffactory.com

24.5.4 3 Arten von seriellen Nachrichten • Jeweils 2 Bit pro Takt. • EOI Nachrichten a 14 Zyklen: − Zum I/O APIC als Interrupt-Bestätigung.

• Short Messages à 21 Zyklen:

− Fixed Delivery, NMI, SMI, INIT, Extern, Startup, − Falls kein Fokusprozessor => Erweiterung auf 34 Zyklen.

• Nicht fokussierte Nachrichten à 34 Zyklen:

MSG Arb Arb Arb Arb DM.. DLV TRIG VEC VEC VEC VEC DST DST DST DST CHK 0 ST0 ST1 PRIO PRIO PRIO PRIO PRIO PRIO PRIO PRIO A-ID A-ID A-ID A-ID STA 0

MSG Arb Arb Arb Arb DM.. DLV TRIG VEC VEC VEC VEC DST DST DST DST CHK 0 ST0 ST1 0

EOI Arb Arb Arb Arb VEC VEC VEC VEC Chk 0 ST0 ST1 0

− Vergabe an den APIC mit niedrigster Priorität, − Arbitrierung im Laufe der Nachricht.

24-11

Systemprogrammierung II, Winter 2005/06, P. Schulthess 24-11

PDF created with pdfFactory trial version www.pdffactory.com

24.6. Interrupt Betriebsarten: 24.6.1 PIC Modus • emuliert eine Hardware ohne APIC, nur mit 8259 PIC. • Interrupt Mode Configuration Register (IMCR): − indirekt adressierbar über Port 22hex und 23hex, − schaltet den Interrupt-Request um, − INTR und NMI ... CPU 1 IMCR INTR

&

NMI

I/OAPIC 24-12

CPU 3

INTR

INTR

NMI

NMI

&

Local APIC 8259A

CPU 2

LINTIN0..1

ICC

Local APIC LINTIN0..1

ICC

Local APIC LINTIN0..1

ICC

LINTIN0 LINTIN1 / NMI

ICC Systemprogrammierung II, Winter 2005/06, P. Schulthess 24-12

PDF created with pdfFactory trial version www.pdffactory.com

24.6.2 Virtual Wire Modus A • IO-APIC transportiert Interrupt zum Prozessorkern. • Keine Leitungen für Sideband Interrupt erforderlich.

CPU 1

CPU 2

CPU 3

NMI

NMI

NMI

INTR

Local APIC LINTIN0..1

8259A

I/OAPIC

24-13

ICC

INTR

Local APIC LINTIN0..1

INTR

Local APIC

ICC

LINTIN0..1

ICC

LINTIN0 LINTIN1 / NMI

ICC Systemprogrammierung II, Winter 2005/06, P. Schulthess 24-13

PDF created with pdfFactory trial version www.pdffactory.com

24.6.3 Virtual Wire Modus B • Lokaler APIC transportiert Interrupt zum internen INTR-Eingang. • Der historische INTR Pin ist evtl. nicht mehr nach draussen geführt.

CPU 1

CPU 2

CPU 3

INTR

INTR

INTR

NMI

Local APIC LINTIN0..1

ICC

Local APIC LINTIN0..1

8259A I/OAPIC

24-14

NMI

ICC

NMI

Local APIC LINTIN0..1

ICC

LINTIN0 LINTIN1 / NMI

ICC

Systemprogrammierung II, Winter 2005/06, P. Schulthess 24-14

PDF created with pdfFactory trial version www.pdffactory.com

24.6.4 Symmetrischer E/A Modus • für Multiprozessoren mit „native APIC Betrieb“. • Interrupt-Verteilung über APIC Kommunikationskanal. • Mischbetrieb von IO-APIC und 8259A möglich. • Kommunikation über seriellen Bus oder über Systembus. • Evtl. mehrere I/O APICs. •

CPU 1

CPU 2

CPU 3

NMI

NMI

NMI

INTR

Local APIC LINTIN0..1

ICC

Local APIC LINTIN0..1

24-15

ICC

INTR

Local APIC LINTIN0..1

ICC

LINTIN0 LINTIN1 / NMI

8259A I/OAPIC

INTR

ICC Systemprogrammierung II, Winter 2005/06, P. Schulthess 24-15

PDF created with pdfFactory trial version www.pdffactory.com

24.7. I/O-APIC 24.7.1 z.B. Integriert im I/O Controller Hub (Intel 82801...) • Device 31 (LPC), Funktionen 0..3: − LPC (Legacy Peripheral Chips) & IO-APIC, − IDE Controller, SATA Controller, SMBus.

CPU lokaler APIC

• Device 30, Funktionen 0..3:

− PCI-to-PCI Brücke, …, AC `97 Audio, AC `97 Modem.

• Device 29, Funktionen 0..3,7:

82820 - MCH Memory Controller Hub

− USB UHCI Controller 1..4, USB 2.0 EHCI Controller.

• Device 28, Funktionen 0..3:

− LAN Controller

24-16

EOI mData rIndex

Device 27

• Bus 1(?), Device 8, Funktion 0:

I/O APIC

Device 28

− Intel High Definition Audio Controller.

Device 29

• Device 27, Funktion 0:

Device 30

− PCI Express Ports 1..4.

Device 31

82801 - ICH I/O Controller Hub

Systemprogrammierung II, Winter 2005/06, P. Schulthess 24-16

PDF created with pdfFactory trial version www.pdffactory.com

24.7.2 Registersatz für IO-APIC im 82801 • Direkte Register, zugreifbar über Speicheradressen (MMIO): IND – Indexregister @ FEC0_0000h, DAT – Datenregister @ FEC0_0010h. EOIR – End of Interrupt Register @ FEC0_0040h

• Indirekt zugreifbare Register (32/64 Bit breit): ID - APIC Identifier @00, VER - APIC Version @01, RDIR - Interupt Umleitungstabelle, beginnend @10.

rIndex mData

• 64 Bit Eintrag in der Umleitungstabelle: − − − − − − − −

4 oder 8-Bit Zieladresse für diesen Interrupt, 8-Bit Erweiterung der Zieladresse für xAPIC, Maskierungsbit für diesen Interrupt, Flanken- oder Pegelgesteuerter Interrupt, Remote IRR, Polarität, Idle, Physical/Logical Delivery, Delivery Mode, Int. Vektor.

24-17

64 Bit Systemprogrammierung II, Winter 2005/06, P. Schulthess 24-17

PDF created with pdfFactory trial version www.pdffactory.com

24.8. Programmierung • IPI von anderen CPU über Interrupt Command Register erzeugen • APIC Präsenz als Bit 9 in Edx nach CPUID (eax=1) • Enabling/Disabling des lokalen APIC: − Entweder beim Systemstart, − Oder programmgesteuert über

• Zugriff auf den lokalen APIC durch die CPU erzeugt keine Buszyklen. • Memory mapped APIC Register. − Speicherattribut aus Sicht der CPU:unacheable, physical.

• Lokaler APIC @ FEE0_0000 hex. • I/O APIC @ FEC0_0000 hex. • IA32_APIC_BASE MSR. − Relozierung des lokalen APIC, − Ein- und Ausschalten per Software.

24-18

Systemprogrammierung II, Winter 2005/06, P. Schulthess 24-18

PDF created with pdfFactory trial version www.pdffactory.com