APIC beim time slice und switch-on-event multithreading?

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

APIC beim time slice und switch-on-event multithreading?
Hallo zusammen,

ich habe mich nun etwas durch die Vorlesungsfolien und durch Google gewühlt und habe die Vermutung, dass es die APIC-Einheit nur beim Simultanen Multithreading gibt. Liege ich da richtig? Ich bezweifle es nämlich etwas, da die Unterbrechungen, die vom Betriebssystem kommen ja auch irgendwie beim time slice und switch-on-event multithreading gehandelt werden müssen. Auf dieser Website http://www.itwissen.info/definition/lexikon/APIC-advanced-programmable-interrupt-controller.htmlwird außerdem erläutert, dass die APIC nur Sinn macht, wenn es mehrere Prozessoren gibt. Das kann ja auch sowohl beim Simultanen-, beim time-slice und beim switch-on-event-multithreading der Fall sein. Warum macht die APIC nur bei mehreren Rechenkernen Sinn? Kommt es nicht auch bei einem Kern zu Interrupts?

Könnt ihr mir da etwas weiterhelfen?

Das wäre echt cool! Vielen Dank!

Viele Grüße
froschigon


Einen Interrupt-Mechanismus irgendeiner Art hat jeder nicht-wirre moderne Prozessor. Mittels eines Timer-Interrupts oder eines Interrupts bei bestimmten Hardware-Ereignissen (zB Tastendruck) werden auch auf Systemen mit nur einem Prozessor Kontext- und Prozesswechsel durchgefuehrt.

Ein APIC ist generell nur eine spezielle Variante eines Interrupt-Controllers auf Intel-Architekturen, andere Hersteller nennen das anders. Die auf der Webseite genannten Merkmale “mehr Interrupt-Leitungen”, “mehr Prioritaeten” und “tollere Verwaltung” sind keineswegs nur bei Mehrkernsystemen sinnvoll, keineswegs nur auf Intel-Systemen mit einem APIC sinnvoll oder vorhanden und auch nicht vollstaendig.

Die erwaehnten IOAPIC und LAPIC bedingen eigentlich noch ein weiteres Merkmal was auf der Webseite nicht genannt wird und was eigentlich viel wichtiger ist: Nachrichtenbasierte Interrupts, d.h. ein Interrupt-Kanal ist nicht eine eigene Leitung sondern es wird auf einem geeigneten Bus eine Nachricht mit einer Ziel-Interrupt-Nummer (und einer ID fuer den Ziel-APIC) uebermittelt, die das Interrupt-Signal darstellt. Diese nachrichtenbasierte Uebermittlung ist auch ab einer gewissen Anzahl von Interrupts unvermeidbar, weil man eben nicht genug Leitungen verlegen kann/will. Alte Intel-Systeme hatten 15 Interrupts, die tatsaechlich alle einen eigenen Pin am Prozessor hatten. Modernere haben dank der nachrichtenbasierten Uebermittlung 256 oder noch mehr Interrupt-Kanaele.


Ich glaube, die von dir verlinkte Website wirft da etwas durcheinander, bei x86 brauchst du den APIC für mehrere Kerne, der PIC unterstützt nur einen Kern, daraus folgt aber noch lange nicht, dass es auch nur in diesem Fall sinnvoll ist.

1 „Gefällt mir“