Heim / Skypen / Was sind die Kerne im Prozessor. Was beeinflusst die Anzahl der Prozessorkerne? Mehrkernprozessor. Virtuelles Multi-Core oder Hyper-Threading

Was sind die Kerne im Prozessor. Was beeinflusst die Anzahl der Prozessorkerne? Mehrkernprozessor. Virtuelles Multi-Core oder Hyper-Threading

Aber mit der Eroberung neuer Spitzen von Frequenzindikatoren wurde es schwieriger, sie zu erhöhen, da dies die Erhöhung der TDP von Prozessoren beeinflusste. Daher begannen die Entwickler, Prozessoren in die Breite zu wachsen, nämlich Kerne hinzuzufügen, und es entstand das Konzept der Multi-Core.

Vor buchstäblich 6-7 Jahren waren Mehrkernprozessoren praktisch unbekannt. Nicht viel nukleare Prozessoren von der gleichen IBM-Firma gab es vorher, aber das Erscheinen des ersten Dual-Core-Prozessors für Desktop-Computer, fand erst 2005 statt, und das hieß Pentium-Prozessor D. Auch AMDs Dual-Core-Opteron wurde 2005 veröffentlicht, allerdings für Serversysteme.

In diesem Artikel gehen wir nicht im Detail auf historische Fakten ein, sondern gehen auf moderne Mehrkernprozessoren als eines der Merkmale der CPU ein. Und am wichtigsten - wir müssen herausfinden, was dieser Multicore in Bezug auf die Leistung für den Prozessor und für Sie und mich bietet.

Mehr Leistung mit Multi-Core

Das Prinzip der Steigerung der Prozessorleistung durch mehrere Kerne besteht darin, die Ausführung von Threads (verschiedene Aufgaben) auf mehrere Kerne aufzuteilen. Zusammenfassend hat fast jeder Prozess, der auf Ihrem System läuft, mehrere Threads.

Ich mache gleich eine Reservierung, dass das Betriebssystem viele Threads virtuell für sich selbst erstellen kann und das alles gleichzeitig, auch wenn der Prozessor physisch Single-Core ist. Dieses Prinzip implementiert das gleiche Windows-Multitasking (z. B. Musik hören und gleichzeitig tippen).


Nehmen wir zum Beispiel Antivirus Programm. Wir werden einen Thread haben, der den Computer scannt, der andere - die Antiviren-Datenbank aktualisieren (wir haben alles vereinfacht, um das allgemeine Konzept zu verstehen).

Und überlegen Sie, was in zwei verschiedenen Fällen passieren wird:

a) Einkernprozessor. Da zwei Threads gleichzeitig laufen, müssen wir für den Benutzer (visuell) genau diese Gleichzeitigkeit der Ausführung schaffen. Das Betriebssystem macht knifflig:Es gibt einen Wechsel zwischen der Ausführung dieser beiden Threads (diese Wechsel erfolgen sofort und die Zeit wird in Millisekunden angegeben). Das heißt, das System hat das Update ein wenig „durchgeführt“, dann abrupt zum Scannen und dann wieder zum Aktualisieren gewechselt. Somit scheint es für Sie und mich, dass diese beiden Aufgaben gleichzeitig ausgeführt werden. Aber was geht verloren? Leistung natürlich. Schauen wir uns also die zweite Option an.

b) Der Prozessor ist mehrkernig. In diesem Fall findet dieser Wechsel nicht statt. Das System wird jeden Thread eindeutig an einen separaten Kern senden, wodurch wir das leistungsschädliche Wechseln von Thread zu Thread beseitigen können (idealisieren wir die Situation). Zwei Threads laufen gleichzeitig, das ist das Prinzip von Multi-Core und Multi-Threading. Letztendlich werden wir Scans und Updates auf einem Multi-Core-Prozessor viel schneller durchführen als auf einem Single-Core-Prozessor. Aber es gibt einen Haken - nicht alle Programme unterstützen Multi-Core. Nicht jedes Programm kann auf diese Weise optimiert werden. Und alles passiert bei weitem nicht so perfekt, wie wir es beschrieben haben. Aber jeden Tag erstellen Entwickler immer mehr Programme, deren Code perfekt für die Ausführung auf Mehrkernprozessoren optimiert ist.

Sind Mehrkernprozessoren notwendig? Alltagstauglichkeit

Bei Wahl des Prozessors Für einen Computer (nämlich wenn man über die Anzahl der Kerne nachdenkt) sollte man die Haupttypen von Aufgaben bestimmen, die er ausführen wird.

Um das Wissen auf dem Gebiet der Computerhardware zu verbessern, können Sie das Material über lesen Prozessorsockel .

Als Ausgangspunkt können Dual-Core-Prozessoren bezeichnet werden, da eine Rückkehr zu Single-Core-Lösungen keinen Sinn macht. Aber Dual-Core-Prozessoren sind anders. Es ist vielleicht nicht der "frischeste" Celeron, oder es kann ein Core i3 auf Ivy Bridge sein, genau wie AMD - Sempron oder Phenom II. Aufgrund anderer Indikatoren wird ihre Leistung natürlich sehr unterschiedlich sein, daher müssen Sie alles umfassend betrachten und Multicore mit anderen vergleichen. Prozessoreigenschaften.

Beispielsweise verfügt der Core i3 auf Ivy Bridge über die Hyper-Treading-Technologie, mit der Sie 4 Threads gleichzeitig verarbeiten können (das Betriebssystem sieht 4 logische Kerne anstelle von 2 physischen). Und derselbe Celeron rühmt sich nicht damit.

Aber kehren wir direkt zu den Überlegungen zu den erforderlichen Aufgaben zurück. Wird ein Rechner für Office-Arbeiten und das Surfen im Internet benötigt, dann reicht dafür ein Dual-Core-Prozessor.

Wenn es um die Spieleleistung geht, benötigen Sie 4 Kerne oder mehr, um sich in den meisten Spielen wohl zu fühlen. Aber hier taucht der Haken auf: Nicht alle Spiele haben optimierten Code für 4-Core-Prozessoren, und wenn sie optimiert sind, ist es nicht so effizient, wie wir es uns wünschen. Aber im Prinzip ist für Spiele jetzt gerade der 4th-Core-Prozessor die optimale Lösung.


Heute sind die gleichen 8-Kern-AMD-Prozessoren für Spiele redundant, es ist die Anzahl der Kerne, die redundant ist, aber die Leistung ist nicht auf dem neuesten Stand, aber sie haben andere Vorteile. Dieselben 8 Kerne helfen sehr bei Aufgaben, bei denen leistungsstarke Arbeit mit einer hochwertigen Multithread-Last erforderlich ist. Dazu gehören beispielsweise das Rendern (Berechnen) von Videos oder das Server-Computing. Daher werden für solche Aufgaben 6, 8 oder mehr Kerne benötigt. Und bald werden Spiele 8 oder mehr Kerne mit hoher Qualität laden können, also ist in Zukunft alles sehr rosig.

Vergessen Sie nicht, dass es immer noch viele Aufgaben gibt, die eine Single-Thread-Last erzeugen. Und man sollte sich die Frage stellen: Brauche ich diesen 8-Core oder nicht?

Zusammenfassend möchte ich noch einmal darauf hinweisen, dass sich die Vorteile von Multi-Core bei "schwerer" rechenintensiver Multi-Thread-Arbeit manifestieren. Und wenn Sie keine Spiele mit exorbitanten Anforderungen spielen und keine bestimmten Arbeiten ausführen, die eine gute Rechenleistung erfordern, macht es einfach keinen Sinn, Geld für teure Mehrkernprozessoren auszugeben (

Was ist der Vorteil von Dual-Core-Prozessoren?

Beim Kauf eines Laptops ist Ihnen wahrscheinlich aufgefallen, dass einige von ihnen Etiketten haben: " Intel Core Prozessor 2 Duo“ oder „AMD Turion 64 x2“. Diese Bezeichnungen weisen darauf hin, dass die Notebooks auf Dual-Core-Prozessortechnologie basieren.

Dual-Core-Prozessoren

Dual-Core-Prozessoren beziehen sich auf die Art von Systemen, die aus zwei unabhängigen Prozessorkernen bestehen, die in einem integrierten Schaltkreis (IC) oder, wie Fachleute sagen, in einem einzigen Chip kombiniert sind. Solche Systeme vereinen zwei Kerne in einem Prozessor. Eine ähnliche Technologie wurde zuerst angewendet persönlicher Computer und nach hause Spielkonsole, aber sehr bald wurde es an die mobile Computerumgebung angepasst. Laptops mit ähnlicher Technik gibt es von AMD und Intel.

Dual-Core-Prozessoren haben eine andere Struktur als Dual-Single-Core-Prozessoren. Sie beziehen sich auf ein System, bei dem zwei Prozessoren in einem integrierten Schaltkreis kombiniert sind. Und Dual-Single-Core-Prozessoren wiederum beziehen sich auf ein System, bei dem zwei unabhängige Prozessoren (jeder mit seinem eigenen Die) direkt verbunden sind Hauptplatine.

Jeder der Prozessoren in einem Dual-Core-System verfügt über einen integrierten Cache (Primär-Cache), der ihnen die Möglichkeit gibt, häufig verwendete Befehle schnell und effizient abzurufen und zu verarbeiten. Außerdem befindet sich der Cache der zweiten Ebene auf derselben integrierten Schaltung. Der Second-Level-Cache des Intel Mobile Core 2 Duo-Chipsatzes wird von zwei Prozessoren geteilt, beim Turion AMD 64x2-Chipsatz hat jeder der beiden Prozessoren einen eigenen Cache – 512 KB für jeden Kern – der Second-Level-Cache ist eine Reserve für den Fall wenn die primäre nicht genug ist.

Vorteile der Dual-Core-Technologie

Die wichtigsten Vorteile solcher Prozessoren sind Geschwindigkeit und Effizienz. Befehlsverarbeitung und Datenabruf werden von zwei Prozessoren ausgeführt; Dadurch wird eine höhere Leistung erzielt, ohne die Prozessoren zu erhitzen. Die Tatsache, dass diese beiden Prozessoren über einen eigenen leicht zugänglichen primären Cache verfügen, garantiert außerdem eine schnelle Leistung. Außerdem kann insbesondere im Fall des Intel Core 2 Duo, wo der sekundäre Cache aufgeteilt ist, der gesamte sekundäre Cache bei Bedarf von einem oder beiden Prozessoren gleichzeitig verwendet werden.

Kurz gesagt, ein Laptop mit einem Dual-Core-Prozessor läuft schneller und kühler, während er auch besseres Multitasking bietet. Dual-Core-Prozessoren verbrauchen weniger Strom als Dual-Single-Core-Prozessoren.

Ein weiterer Vorteil der Verwendung von Dual-Core-Prozessoren in Laptops ist das geringere Gewicht und die geringere Größe, wodurch Laptop bequemer und bietet gleichzeitig PC-ähnliche Leistung.

Es ist wichtig zu beachten, dass Sie bei älteren Programmen, wenn Sie nur ein Programm gleichzeitig ausführen, keinen der Vorteile von Dual-Core-Prozessoren erleben werden. Ältere Programme waren für diese Technologie nicht ausgelegt, konnten also nur einen Kern nutzen. In diesem Fall bleibt jedoch der Vorteil des Multitasking bestehen. Wenn Sie mehrere Programme gleichzeitig geöffnet haben, bietet ein Prozessor mit zwei Kernen eine schnellere Leistung als ein einzelner Kern.

Die Zeit vergeht und immer mehr Entwickler Software erstellen Sie ihre Programme unter Berücksichtigung von Dual-Core-Prozessoren; Daher werden Benutzer in naher Zukunft in der Lage sein, alle Vorteile solcher Prozessoren zu erfahren.

Es wurde ein unangenehmes Problem mit der Zeitbegrenzung gefunden. Mit Erreichen der Schwelle von 3 GHz sehen sich Entwickler mit einem deutlichen Anstieg des Stromverbrauchs und der Wärmeabgabe ihrer Produkte konfrontiert. Der Stand der Technik im Jahr 2004 erlaubte es nicht, die Größe von Transistoren in einem Siliziumkristall wesentlich zu reduzieren, und der Ausweg aus dieser Situation war der Versuch, die Frequenz nicht zu erhöhen, sondern die Anzahl der pro Zyklus durchgeführten Operationen zu erhöhen. Nachdem ich die Erfahrung übernommen habe Serverplattformen, wo das Multiprozessor-Layout bereits getestet wurde, entschied man sich, zwei Prozessoren auf einem Chip zu vereinen.

Seitdem ist viel Zeit vergangen, CPUs mit zwei, drei, vier, sechs und sogar acht Kernen sind weit verbreitet. Den Hauptmarktanteil belegen aber nach wie vor 2- und 4-Core-Modelle. AMD versucht, die Situation zu ändern, aber ihre Bulldozer-Architektur hat die Erwartungen nicht erfüllt, und preisgünstige Achtkerner sind in der Welt immer noch nicht sehr beliebt. Daher die FrageWas ist besser: 2- oder 4-Kern-Prozessor, ist immer noch relevant.

Unterschied zwischen 2- und 4-Kern-Prozessoren

Auf Hardwareebeneder Hauptunterschied zwischen einem 2-Kern-Prozessor und einem 4-Kern-Prozessorist die Anzahl der Funktionsblöcke. Tatsächlich ist jeder Kern eine separate CPU, die mit eigenen Rechenknoten ausgestattet ist. 2 oder 4 solcher CPUs sind durch einen internen Hochgeschwindigkeitsbus und einen gemeinsamen Speichercontroller zum Interagieren mit dem RAM miteinander verbunden. Andere Funktionsknoten können ebenfalls gemeinsam genutzt werden: Die meisten modernen CPUs verfügen über einen individuellen Cache-Speicher der ersten (L1) und zweiten (L2) Ebene, Blöcke für ganzzahlige Berechnungen und Gleitkommaoperationen. Der relativ große L3-Cache ist einzeln und für alle Kerne verfügbar. Separat können wir die bereits erwähnten AMD FX (sowie die Athlon-CPU und die APU der A-Serie) feststellen: Sie haben nicht nur den Cache-Speicher und den Controller gemeinsam, sondern auch Gleitkommaeinheiten: Jedes dieser Module gehört gleichzeitig dazu auf zwei Kerne.

AMD Athlon Quad-Core-Schema

Aus Sicht des Nutzersunterschied zwischen 2 und 4 kern cpuist die Anzahl der Tasks, die die CPU in einem Taktzyklus bearbeiten kann. Bei gleicher Architektur beträgt der theoretische Unterschied das 2-fache für 2 und 4 Kerne bzw. das 4-fache für 2 und 8 Kerne. Somit sollte bei gleichzeitigem Betrieb mehrerer Prozesse eine Erhöhung der Anzahl zu einer Erhöhung der Geschwindigkeit des Systems führen. Schließlich kann eine Quad-Core-CPU statt 2 Operationen vier gleichzeitig ausführen.

Warum Dual-Core-CPUs beliebt sind

Wenn eine Erhöhung der Anzahl der Kerne eine Leistungssteigerung mit sich bringt, scheinen Dual-Core-Prozessoren vor dem Hintergrund von Modellen mit vier, sechs oder acht Kernen keine Chance zu haben. Der Weltmarktführer im CPU-Markt, Intel, aktualisiert jedoch jährlich seine Produktpalette und veröffentlicht neue Modelle mit nur wenigen Kernen (Core i3, Celeron, Pentium). Und das vor dem Hintergrund, dass Nutzer selbst in Smartphones und Tablets solchen CPUs mit Misstrauen oder Verachtung begegnen. Um zu verstehen, warum die beliebtesten Modelle Prozessoren mit zwei Kernen sind, sollten mehrere Hauptfaktoren berücksichtigt werden.

Intel Core i3 - die beliebtesten 2-Kern-Prozessoren für Heim-PCs

Kompatibilitätsproblem. Beim Erstellen von Software streben Entwickler danach, dass sie sowohl auf neuen Computern als auch auf bestehenden Modellen von CPUs und GPUs funktioniert. Angesichts der Vielfalt auf dem Markt ist darauf zu achten, dass das Spiel sowohl auf zwei als auch auf acht Kernen flüssig läuft. Die meisten vorhandenen Heim-PCs sind mit einem Dual-Core-Prozessor ausgestattet, daher wird der Unterstützung solcher Computer die größte Aufmerksamkeit geschenkt.

Komplexität der Aufgabenparallelisierung. Um die effiziente Nutzung aller Kerne zu gewährleisten, sollten die während des Programms durchgeführten Berechnungen in gleiche Threads aufgeteilt werden. Eine Aufgabe, die alle Kerne optimal nutzen kann, indem man ihnen jeweils einen oder zwei Prozesse widmet, ist beispielsweise die gleichzeitige Komprimierung mehrerer Videos. Bei Spielen ist es schwieriger, da alle darin ausgeführten Operationen miteinander verbunden sind. Trotz der Tatsache, dass die Hauptarbeit von durchgeführt wird Grafikkarte Grafikkarten ist es die CPU, die die Informationen für die Bildung eines 3D-Bildes aufbereitet. Es ist ziemlich schwierig, es so zu gestalten, dass jeder Kern seinen eigenen Teil der Daten verarbeitet und ihn dann synchron mit anderen an die GPU weiterleitet. Je mehr gleichzeitige Rechenthreads Sie verarbeiten müssen, desto schwieriger ist es, die Aufgabe zu implementieren.

Kontinuität der Technologien. Softwareentwickler nutzen bestehende Entwicklungen für ihre neuen Projekte, die immer wieder modernisiert werden. In einigen Fällen kommt es dazu, dass solche Technologien seit 10-15 Jahren in der Vergangenheit verwurzelt sind. Eine Entwicklung, die auf einem zehn Jahre alten Projekt basiert, wird widerwillig, wenn nicht sogar komplett überarbeitet, um eine perfekte Optimierung zu erreichen. Als Ergebnis gibt es eine Unfähigkeit der Software, die Hardwarefähigkeiten des PCs rational zu nutzen. S.T.A.L.K.E.R. Call of Pripyat, veröffentlicht im Jahr 2009 (während der Blütezeit von Multi-Core-CPUs), basiert auf einer 2001-Engine und kann daher nicht mehr als einen Kern laden.

S.T.A.L.K.E.R. nutzt nur einen Kern einer 4-Kern-CPU voll aus

Ähnlich verhält es sich mit dem beliebten Online-Rollenspiel World of Tanks: Die Big-World-Engine, auf der es basiert, entstand 2005, als Multicore-CPUs noch nicht als einzig mögliche Entwicklungsmöglichkeit wahrgenommen wurden.

World of Tanks weiß auch nicht, wie man die Last gleichmäßig auf die Kerne verteilt

Finanziellen Schwierigkeiten. Eine Folge dieses Problems ist der vorherige Punkt. Wenn Sie jede Anwendung von Grund auf neu erstellen, ohne vorhandene Technologien zu verwenden, kostet die Implementierung sagenhafte Summen. Beispielsweise beliefen sich die Kosten für die Entwicklung von GTA V auf mehr als 200 Millionen US-Dollar. Gleichzeitig wurden einige Technologien immer noch nicht „von Grund auf neu“ erstellt, sondern aus früheren Projekten ausgeliehen, da das Spiel für 5 Plattformen gleichzeitig geschrieben wurde (Sony PS3, PS4, Xbox 360 und One sowie PC).

GTA V ist für Multicore optimiert und kann den Prozessor gleichmäßig belasten

All diese Nuancen erlauben es nicht, das Potenzial von Mehrkernprozessoren in der Praxis voll auszuschöpfen. Durch die gegenseitige Abhängigkeit von Hardwareherstellern und Softwareentwicklern entsteht ein Teufelskreis.

Welcher Prozessor ist besser: 2 oder 4-Core

Bei allen Vorteilen bleibt das Potenzial von Mehrkernprozessoren natürlich bis zum Schluss ungenutzt. Manche Tasks wissen überhaupt nicht, wie sie die Last gleichmäßig verteilen sollen und arbeiten in einem Thread, andere erledigen dies mit mittelmäßiger Effizienz, und nur ein kleiner Bruchteil der Software interagiert vollständig mit allen Kernen. Daher die Fragedie besserer Prozessor, 2 oder 4 Adern, kaufen, erfordert eine sorgfältige Abwägung der aktuellen Situation.

Auf dem Markt sind Produkte von zwei Herstellern: Intel und AMD, die sich in den Implementierungsmerkmalen unterscheiden. Advanced Micro Devices setzt traditionell auf Multi-Cores, während Intel diesen Schritt zögert und die Anzahl der Kerne nur dann erhöht, wenn dies nicht zu einer Abnahme der spezifischen Leistung pro Kern führt (was sehr schwer zu vermeiden ist).

Eine Erhöhung der Anzahl der Kerne verringert die Gesamtleistung jedes einzelnen von ihnen.

In der Regel ist die theoretische und praktische Gesamtleistung einer Mehrkern-CPU geringer als eine ähnliche (auf derselben Mikroarchitektur aufgebaute, mit demselben technischen Prozessor) mit einem einzelnen Kern. Dies wird durch die Tatsache verursacht, dass die Kernel gemeinsam genutzte Ressourcen verwenden, und dies nicht der Fall ist auf die beste Weise wirkt sich auf die Geschwindigkeit aus. Man kann also nicht einfach einen leistungsstarken Quad- oder Hexa-Core-Prozessor kaufen mit der Erwartung, dass dieser definitiv nicht schwächer sein wird als ein Dual-Core-Prozessor aus der gleichen Serie. In manchen Situationen wird es darüber hinaus spürbar sein. Ein Beispiel ist das Ausführen alter Spiele auf einem Computer mit einem AMD FX-Prozessor mit acht Kernen: Die FPS sind manchmal niedriger als auf einem ähnlichen PC, aber mit einer Quad-Core-CPU.

Wird heute Multicore benötigt

Bedeutet dies, dass viele Kerne nicht benötigt werden? Trotz der Tatsache, dass die Schlussfolgerung logisch erscheint - nein. Leichte Alltagsaufgaben (wie im Internet surfen oder mit mehreren Programmen gleichzeitig arbeiten) reagieren positiv auf eine Erhöhung der Anzahl der Prozessorkerne. Aus diesem Grund setzen Smartphone-Hersteller auf Quantität und rücken die spezifische Leistung in den Hintergrund. Opera (und andere Browser auf Chrom-Motor), Firefox jeweils starten Registerkarte öffnen als separater Prozess bzw. je mehr Kerne - desto schneller der Übergang zwischen den Registerkarten. Dateimanager, Office-Programme, Spieler - selbst sind nicht ressourcenintensiv. Wenn Sie jedoch häufig zwischen ihnen wechseln müssen, verbessert ein Mehrkernprozessor die Systemleistung.

Der Opera-Browser weist jedem Tab einen eigenen Prozess zu

Intel ist sich dessen bewusst, denn die HuperThreading-Technologie, die es dem Kern ermöglicht, den zweiten Thread mit ungenutzten Ressourcen zu verarbeiten, tauchte bereits zu Zeiten des Pentium 4 auf. Sie kann die fehlende Leistung jedoch nicht vollständig ausgleichen.

2-Kern-CPU mit Huper-Threading wird im Task-Manager als 4-Kern-CPU angezeigt

Die Spieleentwickler holen derweil allmählich auf. Das Aufkommen neuer Generationen von Sony Play Station- und Microsoft Xbox-Konsolen hat Entwickler dazu angeregt, Multi-Core mehr Aufmerksamkeit zu schenken. Beide Konsolen basieren auf AMD-Chips mit acht Kernen, sodass Programmierer jetzt keinen großen Optimierungsaufwand mehr aufwenden müssen, wenn sie ein Spiel auf einen PC portieren. Mit der wachsenden Popularität dieser Konsolen konnten diejenigen, die vom Kauf der AMD FX 8xxx enttäuscht waren, aufatmen. Multi-Core-Prozessoren gewinnen aktiv an Marktpositionen, wie aus den Bewertungen hervorgeht.

Eine der Stufen bei der Verbesserung der von Neumann-Architektur ist die Parallelisierung von Threads ( Faden Eben Parallelität, TLP). Unterscheiden gleichzeitiges Multithreading (Gleichzeitig Multithreading, SMT) und Multithreading auf Chipebene (Chip- eben Multithreading, CMT). Die beiden Ansätze unterscheiden sich hauptsächlich in ihrer Vorstellung davon, was ein Faden ist. Ein typischer Vertreter SMT ist die sogenannte Technologie HTT (Hyper- Einfädeln Technologie).

P die ersten Vertreter der Architektur CMP wurden zu Prozessoren, die für den Einsatz in Servern entwickelt wurden. Es war ein einfaches Tandem, bei solchen Geräten wurden tatsächlich zwei unabhängige Kerne auf einem Substrat platziert (Abb. 8,). Die Entwicklung dieses Schemas wurde zunächst zu einer Struktur mit einem gemeinsamen Cache - Speicher Abb. 9 und dann eine Struktur mit Multithreading in jedem Kern.

Die Vorteile von Mehrkernprozessoren sind wie folgt.

    Einfachheit (natürlich relativ) von Design und Produktion. Nachdem ein effektiver Kern entwickelt wurde, kann er in einem Kristall repliziert werden und die Architektur mit den erforderlichen Systemkomponenten ergänzen.

    Der Stromverbrauch wird spürbar reduziert. Wenn Sie zum Beispiel zwei Kerne auf einem Chip platzieren und sie mit einer Taktfrequenz arbeiten lassen, die eine Leistung bietet, die der eines „Bruders“ mit einem Kern entspricht, und dann den Stromverbrauch beider vergleichen, werden Sie feststellen, dass die Leistung Der Verbrauch nimmt um ein Vielfaches ab, da er fast proportional zu den Rechteckfrequenzen wächst.

Wenn Sie sich die Abbildungen 8 und 9 genau ansehen, können Sie im Allgemeinen sehen, dass es keinen grundlegenden Unterschied zwischen beispielsweise einem 2-Prozessor-System und einem Computer mit einem 2-Kern-Prozessor gibt. Die Probleme sind die gleichen. Und einer der ersten ist das entsprechende Betriebssystem.

Möglichkeiten, die Arbeit von Auftragsverarbeitern zu organisieren

Der Hauptimpuls für die Entwicklung der Computerarchitektur ist die Steigerung der Produktivität. Eine der Möglichkeiten, die Produktivität von Computern zu steigern, ist die Spezialisierung (sowohl einzelne Elemente eines Computers als auch die Schaffung spezialisierter Computersysteme).

Die Spezialisierung von Prozessoren begann in den 60er Jahren, als der zentrale Prozessor großer Computer von der routinemäßigen Verarbeitung von Eingabe-Ausgabe-Informationen befreit wurde. Diese Funktion wurde auf den I/O-Prozessor übertragen, der mit Peripheriegeräten kommuniziert.

Eine andere Möglichkeit, die Leistung zu verbessern, besteht darin, sich von der seriellen von Neumann-Architektur zu entfernen und sich auf Parallelität zu konzentrieren. M. Flynn wies darauf hin, dass es nur zwei Gründe gibt, die zu Rechenparallelität führen – die Unabhängigkeit von Befehlsströmen, die gleichzeitig im System vorhanden sind, und die Trennung von Daten, die in einem Befehlsstrom verarbeitet werden. Wenn der erste Grund für die Parallelität des Rechenvorgangs bekannt ist (dies ist einfaches Multiprocessing), werden wir uns näher mit der Datenparallelität befassen, da sie in den meisten Fällen vor Programmierern verborgen existiert und von einem begrenzten Kreis von Fachleuten verwendet wird .

Das einfachste Beispiel für Datenparallelität ist eine Folge von zwei Befehlen: A=B+C; D=E*F;

Wenn wir das von Neumann-Prinzip strikt befolgen, kann die zweite Operation erst nach Abschluss der ersten Operation zur Ausführung gestartet werden. Es ist jedoch offensichtlich, dass die Reihenfolge der Ausführung dieser Anweisungen keine Rolle spielt – die Operanden A, B und C der ersten Anweisung stehen in keiner Weise in Beziehung zu den Operanden D, E und F der zweiten Anweisung. Mit anderen Worten, beide Operationen sind parallel, gerade weil die Operanden dieser Befehle nicht miteinander in Beziehung stehen. Es gibt viele Beispiele für eine Folge von drei oder mehr Anweisungen mit nicht zusammenhängenden Daten, die zu einer eindeutigen Schlussfolgerung führen: Fast jedes Programm enthält Gruppen von Operationen mit parallelen Daten.

D Eine andere Art von Datenparallelität tritt typischerweise in zyklischen Datenverarbeitungsprogrammen auf. Wenn Sie beispielsweise die Elemente zweier Arrays hinzufügen, kann ein Befehl ein großes Array (mehrere Streams) von Daten verarbeiten. Solche Anweisungen werden als Vektor bezeichnet, und der Prozessor, der diesen Modus implementiert, wird als Vektor bezeichnet. Sie können die folgende Definition geben: „Vektorprozessor ist ein Prozessor, der die parallele Ausführung von Operationen auf Datenarrays (Vektoren) bereitstellt. Es zeichnet sich durch eine spezielle Architektur aus, die auf einer Gruppe paralleler Verarbeitungselemente aufgebaut ist, und ist für die Verarbeitung von Bildern, Matrizen und Datenarrays ausgelegt.

Es gibt mehrere Klassifikationen der Softwareparallelität, deren Bedeutung recht nahe kommt, von denen die anerkannteste auf sechs Ebenen basiert (Abb. 10). Die obersten drei Ebenen der Parallelität werden von großen Programmobjekten belegt – unabhängige Jobs, Programme und Programmprozeduren. Unabhängige Anweisungen, Schleifen und Operationen bilden die unteren Ebenen der Parallelität. Kombiniert man ein solches Ranking mit den Kategorien von M. Flyn „Parallel Instruction Streams“ und „Parallel Data Streams“, so sieht man, dass die Top-Level-Parallelität vor allem durch die vielen unabhängigen Instruction Streams erreicht wird, und die Low-Level-Parallelität. Ebenenparallelität verdankt ihre Existenz hauptsächlich unabhängigen Datenströmen.

Rohrleitungen und Rohrleitungskonstruktionen

Ö Tag des effektive Wege Die Verbesserung der Leistung von Computern ist Pipelining. Auf Abb. elf a) Verarbeitung in einem einzigen universellen Block ist gezeigt und in Fig. 11 b) und in)- im Förderband. Die Idee der Pipeline-Verarbeitung besteht darin, die vom universellen Funktionsblock (FB) implementierte Funktion auf mehrere spezialisierte aufzuteilen. Alle Funktionsblöcke der Pipeline müssen (zumindest im Durchschnitt) mit der gleichen Geschwindigkeit laufen. Letzteres wird in der Praxis selten erreicht und dadurch die Leistung der Pipeline reduziert, da die Empfangsdauer der Eingangsdaten durch die maximale Verarbeitungszeit in jedem Funktionsblock bestimmt wird. Um Schwankungen in der Betriebszeit des FB auszugleichen, werden zwischen ihnen Pufferregister eingefügt. Eine universellere Technik besteht darin, Pufferspeicher vom FIFO-Typ einzubauen (Abb. 11 in). Zwischen den Figuren ist noch ein Unterschied zu bemerken. b) und in). Im Aufbau in) es gibt keine SI-Synchronisationsleitung. Dies bedeutet nicht, dass es keine ähnliche Struktur geben kann, sondern nur, dass es zwei Arten von Pipelines gibt: synchron mit einer gemeinsamen Sync-Leitung und asynchron, ohne einen. Erstere werden auch genannt mit Befehlsverwaltung, und die zweiten mit Datenmanagement. Systolische Arrays sind ein Beispiel für asynchrone Pipelines.

Zu Eine Pipeline ist nicht immer eine lineare Kette von Blöcken. Manchmal ist es von Vorteil Funktionsblöcke sie werden nicht sequentiell, sondern nach einem komplexeren Schema gemäß der Verarbeitungslogik miteinander verbunden, wobei einige Blöcke in der Kette übersprungen werden können, während andere zyklische Strukturen bilden können. Die Struktur einer nichtlinearen Pipeline, die in der Lage ist, zwei Funktionen X und Y zu berechnen, und ein Diagramm, in dem die Funktionen X und Y bestimmte Funktionsblöcke erfordern, ist in Abb. 12

  • Lernprogramm

In diesem Artikel werde ich versuchen, die Terminologie zu beschreiben, die verwendet wird, um Systeme zu beschreiben, die mehrere Programme parallel ausführen können, d. h. Multi-Core, Multi-Prozessor, Multi-Threaded. Verschiedene Typen Parallelität in der IA-32-CPU trat zu unterschiedlichen Zeiten und in etwas inkonsistenter Reihenfolge auf. Bei all dem kann man leicht verwirrt werden, besonders wenn man bedenkt, dass Betriebssysteme darauf bedacht sind, Details vor weniger ausgeklügelten Anwendungsprogrammen zu verbergen.

Der Beitrag soll zeigen, dass bei aller Vielfalt möglicher Konfigurationen von Multiprozessor-, Multicore- und Multithread-Systemen für darauf ablaufende Programme Möglichkeiten sowohl zur Abstraktion (Ignorieren von Unterschieden) als auch zur Berücksichtigung von Spezifika geschaffen werden ( die Fähigkeit, die Konfiguration programmgesteuert zu lernen).

Warnung vor Zeichen ®, ™, im Artikel

Mein Kommentar erklärt, warum Mitarbeiter von Unternehmen Urheberrechtszeichen in öffentlichen Mitteilungen verwenden sollten. In diesem Artikel mussten sie ziemlich oft verwendet werden.

Zentralprozessor

Der älteste, am häufigsten verwendete und mehrdeutige Begriff ist natürlich „Prozessor“.

BEI moderne Welt Der Prozessor ist das (Paket), das wir in einer schönen Einzelhandelsverpackung oder einer nicht sehr schönen OEM-Verpackung kaufen. Eine unteilbare Einheit, die in einen Sockel auf einer Hauptplatine gesteckt wird. Auch wenn kein Stecker vorhanden ist und nicht entfernt werden kann, dh fest gelötet ist, handelt es sich um einen Chip.

Mobile Systeme (Telefone, Tablets, Laptops) und die meisten Desktops haben einen einzigen Prozessor. Workstations und Server verfügen manchmal über zwei oder mehr Prozessoren auf demselben Motherboard.

Mehrfache Unterstützung CPUs in einem System erfordert zahlreiche Änderungen in seinem Design. Zumindest ist es notwendig, ihre physische Verbindung bereitzustellen (mehrere Sockel auf der Hauptplatine vorzusehen), die Probleme der Prozessoridentifikation (siehe weiter unten in diesem Artikel sowie meine vorherige Anmerkung), der Speicherzugriffskoordination und der Interrupt-Zustellung ( der Interrupt-Controller muss in der Lage sein, Interrupts auf mehrere Prozessoren zu routen) und natürlich Unterstützung durch das Betriebssystem. Leider konnte ich keine dokumentierte Erwähnung des Zeitpunkts finden, an dem das erste Multiprozessorsystem auf Intel-Prozessoren erstellt wurde, aber Wikipedia behauptet, dass Sequent Computer Systems sie bereits 1987 mit Intel 80386-Prozessoren geliefert hat mit dem Intel®-Pentium.

Bei mehreren Prozessoren hat jeder einen eigenen Anschluss auf der Platine. Gleichzeitig verfügt jeder von ihnen über vollständige unabhängige Kopien aller Ressourcen wie Register, Ausführungsgeräte, Caches. Sie teilen sich einen gemeinsamen Speicher - RAM. Die Erinnerung kann auf verschiedene und eher nicht triviale Weise mit ihnen verbunden werden, aber dies ist eine separate Geschichte, die den Rahmen dieses Artikels sprengen würde. Wichtig ist, dass die ausführbaren Programme in jedem Fall die Illusion eines homogenen gemeinsamen Speichers erzeugen müssen, auf den alle Prozessoren im System zugreifen können.


Bereit zum Abheben! Intel® PC-Mainboard D5400XS

Kern

Historisch gesehen erschien Multi-Core im Intel IA-32 später als Intel® HyperThreading, aber es kommt in der logischen Hierarchie als nächstes.

Es scheint, dass die Leistung höher ist, wenn mehr Prozessoren im System vorhanden sind (bei Aufgaben, die alle Ressourcen verwenden können). Wenn jedoch die Kommunikationskosten zwischen ihnen zu hoch sind, wird der gesamte Gewinn aus der Parallelität durch lange Verzögerungen bei der Übertragung gemeinsamer Daten zunichte gemacht. Genau das ist bei Multiprozessorsystemen zu beobachten - sowohl physikalisch als auch logisch sind sie sehr weit voneinander entfernt. Um unter solchen Bedingungen effektiv kommunizieren zu können, müssen spezialisierte Busse wie der Intel® QuickPath Interconnect erfunden werden. Energieverbrauch, Größe und Preis der Endlösung verringern sich dadurch natürlich nicht. Eine hohe Integration von Komponenten sollte Abhilfe schaffen - Schaltungen, die Teile eines parallelen Programms ausführen, sollten näher zusammengezogen werden, vorzugsweise auf einem Chip. Mit anderen Worten, ein Prozessor sollte mehrere organisieren Kerne, in allem identisch, aber unabhängig voneinander arbeitend.

Die ersten IA-32-Mehrkernprozessoren von Intel wurden 2005 vorgestellt. Seitdem ist die durchschnittliche Anzahl von Kernen in Server-, Desktop- und jetzt auch mobilen Plattformen stetig gewachsen.

Im Gegensatz zu zwei Single-Core-Prozessoren im selben System, die sich nur den Arbeitsspeicher teilen, können sich zwei Kerne auch Caches und andere Ressourcen teilen, die für die Interaktion mit dem Arbeitsspeicher verantwortlich sind. Meistens bleiben die Caches der ersten Ebene privat (jeder Kern hat seinen eigenen), während die zweite und dritte Ebene entweder gemeinsam genutzt oder getrennt werden können. Diese Organisation des Systems reduziert die Verzögerung bei der Datenübermittlung zwischen benachbarten Kernen, insbesondere wenn sie an einer gemeinsamen Aufgabe arbeiten.


Mikrobild eines Quad-Core Intel-Prozessor Codename Nehalem. Hervorgehoben werden separate Kerne, ein gemeinsam genutzter L3-Cache sowie QPI-Anbindungen zu anderen Prozessoren und ein gemeinsam genutzter Speichercontroller.

Hyperthread

Bis etwa 2002 bestand die einzige Möglichkeit, ein IA-32-System zu bekommen, das zwei oder mehr Programme parallel ausführen kann, darin, speziell Multiprozessorsysteme zu verwenden. Einführung des Intel® Pentium® 4 sowie der Xeon-Reihe mit dem Codenamen Foster (Netburst). neue Technologie- Hyperthreads oder Hyperthreads, - Intel® HyperThreading (im Folgenden HT).

Es gibt nichts Neues unter der Sonne. HT ist ein Spezialfall dessen, was in der Literatur als simultanes Multithreading (SMT) bezeichnet wird. Im Gegensatz zu "echten" Kernen, die vollständige und unabhängige Kopien sind, wird bei HT nur ein Teil der internen Knoten in einem Prozessor dupliziert, der hauptsächlich für die Speicherung der architektonischen Zustandsregister verantwortlich ist. Die ausführenden Knoten, die für das Organisieren und Verarbeiten von Daten verantwortlich sind, verbleiben im Singular und werden zu jeder Zeit von höchstens einem der Threads verwendet. Wie Kerne teilen Hyperthreads Caches untereinander, aber ab welcher Ebene, hängt vom jeweiligen System ab.

Ich werde nicht versuchen, alle Vor- und Nachteile von SMT-Designs im Allgemeinen und HT-Designs im Besonderen zu erklären. Der interessierte Leser kann in vielen Quellen und natürlich Wikipedia eine ziemlich ausführliche Diskussion der Technologie finden. Ich werde jedoch den folgenden wichtigen Punkt anmerken, der die aktuellen Beschränkungen der Anzahl von Hyperthreads in der realen Produktion erklärt.

Thread-Limits
In welchen Fällen ist das Vorhandensein von "unehrlichem" Multicore in Form von HT gerechtfertigt? Wenn ein Anwendungs-Thread nicht alle ausführenden Knoten innerhalb des Kernels laden kann, können sie an einen anderen Thread „ausgeliehen“ werden. Dies ist typisch für Anwendungen, die nicht bei Berechnungen, sondern beim Datenzugriff einen "Engpass" haben, d. h. häufig Cache-Fehler erzeugen und warten müssen, bis Daten aus dem Speicher geliefert werden. Während dieser Zeit wird der Kernel ohne HT in den Leerlauf gezwungen. Das Vorhandensein von HT ermöglicht es Ihnen, frei ausgeführte Knoten schnell in einen anderen Architekturzustand zu schalten (weil er nur dupliziert wird) und seine Anweisungen auszuführen. Dies ist ein Spezialfall eines Tricks namens Latency Hiding, bei dem eine lange Operation, während der nützliche Ressourcen im Leerlauf sind, durch die parallele Ausführung anderer Aufgaben maskiert wird. Wenn die Anwendung bereits einen hohen Auslastungsgrad der Kernel-Ressourcen hat, lässt das Vorhandensein von Hyperthreading keine Beschleunigung zu - hier sind "ehrliche" Kernel erforderlich.

Typische Szenarien für Desktop- und Serveranwendungen, die für Maschinenarchitekturen entwickelt wurden allgemeiner Zweck, haben das Potenzial für Parallelität, die mit HT implementiert wird. Dieses Potenzial ist jedoch schnell „aufgebraucht“. Vielleicht aus diesem Grund überschreitet die Anzahl der Hardware-Hyperthreads auf fast allen IA-32-Prozessoren zwei nicht. In typischen Szenarien wäre der Gewinn durch die Verwendung von drei oder mehr Hyperthreadings gering, aber der Verlust an Die-Größe, Stromverbrauch und Kosten ist erheblich.

Eine andere Situation wird bei typischen Aufgaben beobachtet, die auf Videobeschleunigern ausgeführt werden. Daher zeichnen sich diese Architekturen durch die Verwendung von SMT-Technologie mit einer größeren Anzahl von Threads aus. Da die Intel® Xeon Phi-Coprozessoren (eingeführt 2010) ideologisch und genealogisch ziemlich nah an Grafikkarten sind, haben sie das vielleicht vier Hyperthreading auf jedem Kern – eine einzigartige Konfiguration des IA-32.

logischer Prozessor

Von den drei beschriebenen "Ebenen" der Parallelität (Prozessoren, Kerne, Hyperthreading) können einige oder sogar alle in einem bestimmten System fehlen. Dies wird beeinflusst BIOS-Einstellungen(Multi-Core und Multi-Threading werden unabhängig voneinander deaktiviert), Überlegungen zur Mikroarchitektur (z. B. fehlte HT im Intel® Core™ Duo, wurde aber mit der Veröffentlichung von Nehalem zurückgebracht) und Systemereignisse (Server mit mehreren Prozessoren können ausgefallene Prozessoren bei Störungen ausschalten und im Rest weiterfliegen). Wie ist dieser vielschichtige Zoo der Parallelität für das Betriebssystem und letztendlich für Anwendungen sichtbar?

Außerdem bezeichnen wir der Einfachheit halber die Anzahl der Prozessoren, Kerne und Threads in einigen Systemen mit einem Dreier ( x, j, z), wo x ist die Anzahl der Prozessoren j ist die Anzahl der Kerne in jedem Prozessor und z ist die Anzahl der Hyperthreads in jedem Kern. Im Folgenden werde ich mich auf dieses Trio beziehen Topologie- ein etablierter Begriff, der mit dem Teilbereich Mathematik wenig zu tun hat. Arbeit p = xyz definiert die Anzahl der benannten Entitäten logische Prozessoren Systeme. Es definiert die Gesamtzahl unabhängiger Anwendungsprozesskontexte in einem Shared-Memory-System, die parallel ausgeführt werden, die das Betriebssystem berücksichtigen muss. Ich sage "erzwungen", weil es die Ausführungsreihenfolge von zwei Prozessen, die sich auf verschiedenen logischen Prozessoren befinden, nicht steuern kann. Das gilt auch für Hyperthreads: Sie laufen zwar „sequentiell“ auf dem gleichen Kern, die genaue Reihenfolge wird jedoch von der Hardware vorgegeben und ist von Programmen weder sichtbar noch steuerbar.

Meistens verbirgt das Betriebssystem vor den Endanwendungen die Merkmale der physischen Topologie des Systems, auf dem es ausgeführt wird. Beispielsweise die folgenden drei Topologien: (2, 1, 1), (1, 2, 1) und (1, 1, 2) – das Betriebssystem wird als zwei dargestellt logische Prozessoren, obwohl der erste zwei Prozessoren hat, der zweite zwei Kerne und der dritte nur zwei Threads.


Windows Taskmanager zeigt 8 logische Prozessoren; aber wie viel ist das in Prozessoren, Kernen und Hyperthreads?


Linux oben zeigt 4 logische Prozessoren.

Dies ist für die Ersteller von Anwendungsanwendungen sehr praktisch - sie müssen sich nicht mit Hardwarefunktionen auseinandersetzen, die für sie oft unbedeutend sind.

Softwaredefinition der Topologie

Natürlich schafft das Abstrahieren der Topologie in eine einzige Anzahl von logischen Prozessoren in einigen Fällen genug Gründe für Verwirrung und Missverständnisse (in hitzigen Internetstreitigkeiten). Computeranwendungen, die die maximale Leistung aus der Hardware herausholen möchten, erfordern eine feinkörnige Kontrolle darüber, wo ihre Threads platziert werden: näher beieinander auf benachbarten Hyperthreads oder umgekehrt, weiter entfernt auf verschiedenen Prozessoren. Die Kommunikationsgeschwindigkeit zwischen logischen Prozessoren innerhalb desselben Kerns oder Prozessors ist viel höher als die Geschwindigkeit der Datenübertragung zwischen Prozessoren. Möglichkeit der Heterogenität in der Organisation Arbeitsspeicher verkompliziert auch das Bild.

Informationen über die Systemtopologie als Ganzes sowie die Position jedes logischen Prozessors im IA-32 sind unter Verwendung des CPUID-Befehls verfügbar. Seit dem Aufkommen der ersten Mehrprozessorsysteme wurde das Identifikationsschema für logische Prozessoren mehrmals erweitert. Bisher sind Teile davon in den Blättern 1, 4 und 11 der CPUID enthalten. Welche der Blätter zu beachten sind, lässt sich aus dem folgenden Blockdiagramm aus dem Artikel entnehmen:

Ich werde mich hier nicht mit allen Details der einzelnen Teile dieses Algorithmus langweilen. Wenn Interesse besteht, kann dem der nächste Teil dieses Artikels gewidmet werden. Ich verweise den interessierten Leser auf, in dem dieses Thema so detailliert wie möglich analysiert wird. Hier werde ich zunächst kurz beschreiben, was APIC ist und wie es mit der Topologie zusammenhängt. Erwägen Sie dann, mit Blatt 0xB (elf Zoll) zu arbeiten Dezimal), was im Moment das letzte Wort in "Apico-Building" ist.

APIC-ID
Der lokale APIC (Advanced Programmable Interrupt Controller) ist ein Gerät (jetzt Teil des Prozessors), das für die Arbeit mit Interrupts verantwortlich ist, die zu einem bestimmten logischen Prozessor kommen. Jeder logische Prozessor hat seinen eigenen APIC. Und jeder von ihnen im System muss haben Einzigartiger Wert APICID. Diese Nummer wird von Interrupt-Controllern zur Adressierung bei der Übermittlung von Nachrichten und von allen anderen (z. B. dem Betriebssystem) zur Identifizierung logischer Prozessoren verwendet. Die Spezifikation für diesen Interrupt-Controller hat sich vom Intel 8259 PIC über Dual PIC, APIC und xAPIC zu x2APIC entwickelt.

Derzeit erreicht die Breite der in der APIC-ID gespeicherten Nummer die vollen 32 Bit, obwohl sie in der Vergangenheit auf 16 und noch früher auf nur 8 Bit begrenzt war. Heute sind überall in der CPUID Überbleibsel der alten Zeit verstreut, aber alle 32 Bits der APIC-ID werden in CPUID.0xB.EDX zurückgegeben. Jeder logische Prozessor, der den CPUID-Befehl unabhängig ausführt, gibt einen anderen Wert zurück.

Klärung familiärer Bindungen
Der APIC-ID-Wert allein sagt nichts über die Topologie aus. Um herauszufinden, welche zwei logischen Prozessoren sich in demselben physischen Prozessor befinden (d. h. sie sind „Brüder“ von Hyperthreads), welche zwei sich in demselben Prozessor befinden und welche völlig unterschiedliche Prozessoren sind, müssen Sie ihre APIC-ID-Werte vergleichen. Je nach Grad der Verwandtschaft stimmen einige ihrer Bits überein. Diese Informationen sind in den Unterlisten CPUID.0xB enthalten, die mit einem Operanden in ECX codiert sind. Jeder von ihnen beschreibt auch die Position des Bitfelds einer der Topologieebenen in EAX (genauer gesagt die Anzahl der Bits, die in der APIC-ID nach rechts verschoben werden müssen, um die unteren Ebenen der Topologie zu entfernen). als Typ dieser Ebene – Hyperthread, Kern oder Prozessor – in ECX.

Logische Prozessoren innerhalb desselben Kerns stimmen mit allen APIC-ID-Bits überein, mit Ausnahme derjenigen im SMT-Feld. Für logische Prozessoren, die sich in demselben Prozessor befinden, alle Bits mit Ausnahme der Kern- und SMT-Felder. Da die Anzahl der Unterblätter für CPUID.0xB wachsen kann, dieses Schema wird es ermöglichen, die Beschreibung von Topologien mit einer größeren Anzahl von Ebenen zu unterstützen, falls dies in Zukunft erforderlich sein sollte. Darüber hinaus wird es möglich sein, Zwischenebenen zwischen bestehenden Ebenen einzuführen.

Eine wichtige Konsequenz der Organisation dieses Schemas besteht darin, dass es in der Menge aller APIC-IDs aller logischen Prozessoren des Systems "Löcher" geben kann, d. h. Sie werden nicht nacheinander ausgeführt. Beispielsweise können sich in einem Mehrkernprozessor mit deaktiviertem HT alle APIC-IDs als gerade erweisen, da das niedrigstwertige Bit, das für die Codierung der Hyperthread-Nummer verantwortlich ist, immer null sein wird.

Beachten Sie, dass CPUID.0xB nicht die einzige Informationsquelle zu logischen Prozessoren ist, die dem Betriebssystem zur Verfügung stehen. Die Liste aller verfügbaren Prozessoren zusammen mit ihren APIC-ID-Werten ist in der MADT-ACPI-Tabelle codiert.

Betriebssysteme und Topologie

Betriebssysteme Bereitstellung von Informationen über die Topologie logischer Prozessoren für Anwendungen unter Verwendung ihrer eigenen Schnittstellen.

Unter Linux sind Topologieinformationen in der Pseudodatei /proc/cpuinfo sowie in der Ausgabe des Befehls dmidecode enthalten. Im folgenden Beispiel filtere ich den Inhalt von cpuinfo auf einem Nicht-HT-Quad-Core-System und belasse nur topologiebezogene Einträge:

Versteckter Text

[E-Mail geschützt]:~$ cat /proc/cpuinfo |grep "Prozessor\|physikalische\ ID\|Geschwister\|Kern\|Kerne\|apicid" Prozessor: 0 physikalische ID: 0 Geschwister: 4 Kern-ID: 0 CPU-Kerne: 2 apicid: 0 Anfangs-Apicid: 0 Prozessor: 1 Physische ID: 0 Geschwister: 4 Kern-ID: 0 CPU-Kerne: 2 Apicid: 1 Anfangs-Apicid: 1 Prozessor: 2 Physische ID: 0 Geschwister: 4 Kern-ID: 1 CPU-Kerne: 2 Apicid: 2 Anfangs-Apicid: 2 Prozessor: 3 Physische ID: 0 Geschwister: 4 Kern-ID: 1 CPU-Kerne: 2 Apicid: 3 Anfangs-Apicid: 3

In FreeBSD wird die Topologie über den sysctl-Mechanismus in der Variablen kern.sched.topology_spec als XML gemeldet:

Versteckter Text

[E-Mail geschützt]:~$ sysctl kern.sched.topologie_spec kern.sched.topologie_spec: 0, 1, 2, 3, 4, 5, 6, 7 0, 1, 2, 3, 4, 5, 6, 7 0, 1 THREAD-GruppeSMT-Gruppe 2, 3 THREAD-GruppeSMT-Gruppe 4, 5 THREAD-GruppeSMT-Gruppe 6, 7 THREAD-GruppeSMT-Gruppe

In MS Windows 8 können Topologieinformationen im Task-Manager eingesehen werden.