Frage

Ich habe in der Literatur zu sehen, für einige der neueren CPUs wie die Intel-Xeon "Nehalem-EX" als Kern mit 8 und 16 Fäden. Was reden sie hier überhaupt? Ich sah auf diesen Aspekt in Bezug so SPARCS auch sicher dies durch Code nicht die Art von logischen Threads hervorgebracht ist? Ist das Hyperthreading umbenannt?

War es hilfreich?

Lösung

Ja, Nehalem-basierte Prozessoren implementieren Hyper-Threading .

Das neue Nehalem-EX, die Sie beziehen 8 physikalischen Kern aufweisen, wobei jeder Kern als 2 logische Kerne für insgesamt 16 logische Kerne zu sehen ist, so dass die für die Ausführung von 16 Anwendungsthreads auf einem einzigen Prozessor.

Dies ist die gleiche Technologie in den Hyper-Threading-fähigen Pentium 4-Prozessoren verwendet werden, und in jüngerer Zeit auf den Atom-Prozessoren. Mein Eee PC verfügt über einen Single-Core-Atom-Prozessor, die zwei logische Kerne hat - der Windows Task-Manager zwei CPU-Diagramme zeigen wird; ein für jeden logischen Kern.

Sun Ultrasparc T2 (und die T1) auch erlauben simultanes Multithreading (davon Implementierung des Intel Hyper-Threading genannt - eine Marke von Intel), die ermöglicht, einen einzigen Kern als mehrere logische Kerne erscheinen mehrere Threads auf einem einzigen Kern auszuführen.

Die grobe Idee hinter simultanes Multithreading ist mehrere Register zu haben, den Prozessorzustand zu speichern, so scheint es, dass es tatsächlich mehrere Kerne in einem einzigen Kern, weil es mehrere Voll Sätze von Hardware-Registern hat.

Während die physischen Einrichtungen wie die ALU und FPU nicht erhöhen, mehr Sätze von Registern, um mehr Threads auf einem physischen Kern ausführen können, um eine bessere Nutzung der verfügbaren Prozessorressourcen führen. Der Kern kann nicht gesättigt ist, wenn ein einzelner Thread ausgeführt wird, aber die Ausführung mehrerer alle Einheiten in ihrem vollen Potential sättigen kann.

Also, was bedeutet es für Programmierer?

Es bedeutet, dass wir immer noch Multi-Threaded-Software schreiben, müssen - mit einem Programm, das nur einen einzigen Thread hat nur in der Lage sein, einen einzigen logischen Kern zu verwenden. Nur gut geschrieben, indem Multi-Threaded-Code können wir die Vorteile der massiven Anzahl der logischen Kerne diese Prozessoren bieten nehmen.

Auch bei simultanem Multithreading, wobei der Code an einem Thread pro logischem Kern ausgeführt wird.

Andere Tipps

Ein extremer einen Multi-Threaded-Prozessor ist der Lauf-Prozessor. Dies ist eine Form von SMT, wo der Prozessor aufteilt Schlitze zwischen den mehreren Threads gleichmäßig in einer Round-Robin-Weise. Dazu braucht es nur Kopien der verschiedenen Register, während den gleichen Satz von Ausführungseinheiten verwendet wird. Also, in vier Taktzyklen wäre es Code aus Threads 0-3 in der Pipeline stecken.

Sie können denken Sie an den Rest dieser Prozessoren in einer ähnlichen Art und Weise arbeiten, zu einer mehr oder weniger stark. Anstelle der Schlitze um gleichmäßig zu verteilen, kann es gerade Schlitze aufbrauchen, die entweder aufgrund Steuer- oder Daten Gefahren im Prozessor leer sind.

Zum Beispiel, wenn eine Verzweigung genommen wird, Befehle in der Pipeline müssen gespült werden. Statt alles vollständig Spülung können einige der Schlitze für andere Threads verwendet werden. Die ganze Idee ist die Leistung zu verbessern, indem sie nicht CPU-Zyklen zu verschwenden.

Das ist, wie mehrere Threads in Hardware arbeiten.

Es ist nicht Hyper-Threading umbenannt - es ist Hyper-Threading (es auf dieser Webseite geschrieben Sie gab Link zu)

.

Einfach, Prozessor sagt Betriebssystem, das es 16 Kerne hat, so dass es Aufgaben auf verdoppelt Anzahl des Kerns ausgleichen kann. Hyper-Threading-Technologie gibt eine gewissen Nutzen becouse in einigen Fällen zwei verschiedene Anweisungen von zwei verschiedenen Programmen / Threads gleichzeitig auf einem Kern ausgeführt werden. Aber sicher wird es nicht 200% beschleunigen geben. Ich habe nicht auf einem solchen Prozessor arbeiten, aber ich denke, man kann etwa 10% bis 20% zusätzliche CPU-Zeit.

Es ist Modell zu jedem Betriebssystem des Threading-OS-Level-Threads auf Hardware-Ebene Themen wie die in der Frage beschrieben abzubilden.

Die logischen Themen von High-Level-Programmiersprachen Anwendungen verwendet werden, Programmierer sind immer noch ein OS-Ebene aus der Hardware entfernt gelaicht, es sei denn natürlich Sie sprechen über die OS-Code, der die Zuordnung der Fall ist.

Hyperthreading (INTEL Markenzeichen durch die Art und Weise) erlaubt es jedem Thread gleichzeitig tatsächlich auszuführen. Also in diesem Fall, dass Sie 8X2 Anwendung Threads gleichzeitig ausgeführt werden können.

Aus der Broschüre ...

Intel Nehalem Architektur gebaut auf Intels einzigartigen 45-nm-High-k-Metall-Gate-Technologie Prozess

 Up to **8 cores** per processor
 Up to **16 threads per processor** with Intel® Hyper-threading
 2.3 billion transistors

Vergleichen Sie dies mit Single-CPU, Single-Core-Systeme, bei denen jeder Thread geplant werden muss und höchstens nur ein Thread aktiv sein -., Dass eine laufenden CPU gebunden Aufgabe und die Warte andere auf einer E / A-Übertragung

Ursprünglich wurde verwendet Threading entweder eine Reihe von gleichzeitigen Aktivitäten zu modellieren (nicht modelliert eigentlich nicht parallel laufen) oder das Aussehen eines Systems zu erzeugen, die als Reaktion war auch während der I / O zu tun. Zum Beispiel, ohne Gewinde, würde Ihr Wort-Prozessor zum Stillstand erscheinen, während ein Dokument zu speichern.

Seit vielen Jahren widerstand ich die Idee von mehreren Threads in meinem Desktop-Anwendungen mit - es kompliziert, den Code und möglicherweise Leistung reduziert - man denke an all jene Mutex Operationen, die das OS-Kernel benötigen, sich zu engagieren. Mit dem Aufkommen der tatsächlich paralleler Ausführung von Threads, meine Einwände reduziert werden, aber ich glaube immer noch, dass mehrere Prozesse statt mehr Threads in einem einzigen Prozess ist ein besserer Ansatz.

Chris

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top