| Zeile 1: | Zeile 1: | ||
| − | + | Der '''LAPIC''' oder '''Local APIC''' (= '''Local Advanced Programmable Interrupt Controller''') nimmt [[Interrupt | Interrupts]] vom [[I/O APIC]] (oder auch vom [[PIC]]) und anderen prozessorinternen Einheiten an und leitet diese an den Prozessorkern zum Abarbeiten weiter. Außerdem ist es nur über den LAPIC möglich [[IPI | IPIs]] zu senden und zu empfangen. | |
== Register == | == Register == | ||
=== Aufbau === | === Aufbau === | ||
| − | Die Register | + | Die Register des ''Local APIC'' sind in den physischen Speicher eingeblendet. Jedes der Register beginnt an einer 16 Byte Grenze, erstreckt sich aber nur über die ersten 32 Bit. Falls das Register größer als 32 Bit ist, befinden sich die nächst höheren 32 Bit an der nächst höheren 16 Byte Grenze. Der ''Local APIC'' stellt folgende Register zur Programmierung bereit: |
| Zeile 134: | Zeile 134: | ||
=== Initialisierung === | === Initialisierung === | ||
| − | Zuerstmal muss man | + | Zuerstmal muss man den ''Local APIC'' über das ''Spurious Interrupt Vector Register'' aktivieren (und natürlich den Spurious Interrupt Vector setzten). Anschließend sind noch folgende Register zu initialisieren: |
* ''Task Priority Register'' | * ''Task Priority Register'' | ||
* ''LVT Timer Register'' | * ''LVT Timer Register'' | ||
| Zeile 148: | Zeile 148: | ||
=== End of Interrupt === | === End of Interrupt === | ||
| − | Ein ''End of Interrupt'' (EOI) wird | + | Ein ''End of Interrupt'' (EOI) wird dem ''Local APIC'' signalisiert, in dem man in das ''EOI Register'' den Wert 0 schreibt. |
== Timer == | == Timer == | ||
| − | Der | + | Der ''Local APIC'' besitzt einen sehr genauen Timer, welcher eigentlich allen anderen Timern wie dem [[PIT]] oder der Real-time Clock vorgezogen werden sollte. Wenn das System mit mehreren Prozessoren (siehe auch [[SMP]]) oder mit dem [[I/O APIC]] (Symmetric Mode) läuft, dann ist er eigentlich die einzige Wahl, denn der PIT ist meistens nur mit dem PIC verbunden und damit nur an den [[Symmetrisches Multiprozessorsystem#Unterteilung der Prozessoren|BSP]] angeschlossen. Er kann somit nicht effizient für SMP verwendet werden. |
=== Register === | === Register === | ||