was ist ein logische Prozessor

1 Antwort

"Virtuelle Kerne" sozusagen. "2 Kerne und 4 logische Prozessoren" heißt, es sind nur zwei Kerne physikalisch vorhanden, aber das Betriebssystem sieht vier Prozessoren (z. B. wenn Du den Taskmanager aufmachst, hast Du vier Auslastungsanzeigen).

Der Sinn ist folgender: Jeder Kern hat mehrere "Verarbeitungseinheiten", z. B. für Ganzzahloperationen, Gleitkommaoperationen, logische Operationen, Sprünge, etc. Gibt der Prozessor nach außen hin mehr "logische Prozessoren" an, als "physikalische Kerne" vorhanden sind, dann bekommt er vom Betriebssystem auch so viele unabhängige Befehlsströme (so genannte Threads) zugeordnet, wie "logische Prozessoren" vorhanden sind. Diese Befehlsströme kann er dann den Verarbeitungseinheiten so zuordnen, dass diese besser ausgelastet sind. So kann zum Beispiel einer der Kerne auf seinen unterschiedlichen Rechenwerken gleichzeitig eine Ganzzahl- und eine Gleitkommaoperation durchführen, während der andere das ebenfalls tut. Der Gesamtdurchsatz an Befehlen wird dadurch erhöht. Wären die "logischen Kerne" nicht vorhanden, lägen die Einheiten öfter brach.

RoSiebzig  30.03.2015, 05:10

Und dabei wird kein zusätzlicher Speicherplatz auf Speicherriegel (RAM) oder Festplatte (wohl eher nich') als zusätzliche Kerne emuliert? Sondern die Kerne werden dem System nur geteilt vermittelt?

1
NoHumanBeing  30.03.2015, 09:36
@RoSiebzig

Ein "Multi-Core-Prozessor" ist ein SMP (symmetrischer Multiprozessor). Der Speicher (und je nach CPU eventuell selbst der Cache) ist nur einmal vorhanden und wird von allen Kernen gemeinsam verwendet. Das ist für die Programmierung auch äußerst wichtig, weil unterschiedliche Threads zeitgleich am selben Datensatz arbeiten können. Ein Replizieren der Daten und anschließendes Zusammenführen ist nicht zwingend notwendig, sofern sich die Threads innerhalb des selben Prozesses befinden.

Unterschiedlichen Prozessen wird über die MMU (memory management unit) ein separater Adressraum simuliert, sodass jeder Prozess den Eindruck hat, den gesamten Hautspeicher für sich zu haben (was natürlich nicht stimmt). Wie diese "Simulation" aussieht, entscheidet das Betriebssystem, indem es die "page tables", die für die Übersetzung der virtuellen in physikalische Adressen zuständig sind, entsprechend befüllt. Falls Du lesen möchtest, wie das funktioniert, gibt es einen Artikel "Virtuelle Speicherverwaltung" auf Wikipedia. Wichtig ist, dass es jeweils einen separaten virtuellen Adressraum pro Prozess gibt, die Threads innerhalb eines Prozesses aber auf dem selben Adressraum arbeiten. Das macht Threads relativ "leichtgewichtig", den Threadwechsel (im gegensatz zum Prozesswechsel) "billig" (dauert weniger Taktzyklen lang) und ermöglicht es Threads, über den "gemeinsam genutzten Speicher" sehr schnell zu kommunizieren. Als "Kehrseite der Medaille" muss der Entwickler der Anwendung hingegen die Threads untereinander "synchronisieren", damit sie sich beim Zugriff auf gemeinsame Ressourcen nicht "in die Quere kommen". Hier ist es möglich, Programmfehler zu erzeugen, die nur in sehr seltenen Fällen tatsächlich eintreten, und sich daher kaum finden lassen.

Ein "logischer Prozessor" verhält sich einfach wie ein weiterer Kern im SMP, also ebenfalls gemeinsamer Speicher (und Cache), aber getrennte Registersätze (einschließlich MMU-Einträgen und "instruction pointer", d. h. die Ausführung im Code kann an unterschiedlichen Stellen stehen).

2
chr1347 
Fragesteller
 30.03.2015, 12:13
@NoHumanBeing

wow das wahr sehr viel geschrieben und warum wird dann bei mir nicht 2 sondern 4 kerne angezeigt wenn der eine PC doch nur 2 kerne hat im Task Manager

1
NoHumanBeing  30.03.2015, 14:43
@chr1347

Bei Dir müssten 4 Kerne im Taskmanager angezeigt werden, weil Du so viele "logische" hast.

Wenn Du nur 2 Kerne siehst, ist Hyperthreading deaktiviert (im "BIOS"/EFI oder so) und Du solltest es aktivieren, weil das einen Performancegewinn bringt.

Das Betriebssystem sieht 4 Kerne, weil der Prozessor 4 vollständige Registersätze hat, aber eben nur zwei vollständige Kerne mit unabhängigen Rechenwerken. Da das Betriebssystem den "logischen Prozessoren" dann 4 unabhängige Threads (Befehlsströme) "zuweist", hat der Prozessor immer 4 Threads, die "zur Ausführung bereit" sind und kann so intern (ohne Beteiligung des Betriebssystems) "den Kontext wechseln" und mit der Ausführung von Befehlen eines anderen Threads fortfahren, wenn beispielsweise einer der Threads "blockiert", etwa an einem Hauptspeicherzugriff ("load"/"store" auf den Hauptspeicher), der durchaus hundert Taktzyklen des Prozessors in Anspruch nehmen kann, bis er abgearbeitet worden ist.

2
RoSiebzig  30.03.2015, 15:31
@NoHumanBeing

"Hyperthreading" über "gemeinsam genutzten Speicher" .. höchst aufschlußreich! .. nur bin ich immer noch nicht sicher, richtig verstanden zu haben, daß all dies physisch innerhalb rein der Chiparchitektur bzw auf motherboard selbst - noch ohne RAM-Riegel-Speicher - vor sich geht .. es geht um Chip-CPU-Prozessor-Speicherbereich, noch nicht auch schon um physisch erweiterten Arbeitsspeicher vom Prinzip her?

1
RoSiebzig  30.03.2015, 15:36
@NoHumanBeing

ah .. sry! .. da steht's ja .. 4 "Registersätze" bei "2 Kernen mit unabhängigen Rechenwerken" .. und "Hauptspeicherzugriff" .. Vielen Dank!

[bitte posting zuvor  - (oben) - ignorieren!]

1