Heim / Sonstig / Unterstützung für Hyper-Threading-Technologie. Hyper-Threading-Technologie von Intel. Produktivität ist nie genug

Unterstützung für Hyper-Threading-Technologie. Hyper-Threading-Technologie von Intel. Produktivität ist nie genug

Benutzer, die mindestens einmal das BIOS konfiguriert haben, haben wahrscheinlich schon bemerkt, dass es einen Intel Hyper Threading-Parameter gibt, der für viele unverständlich ist. Viele wissen nicht, was diese Technologie ist und zu welchem ​​Zweck sie verwendet wird. Versuchen wir herauszufinden, was Hyper Threading ist und wie Sie die Verwendung dieser Unterstützung aktivieren können. Wir werden auch versuchen herauszufinden, welche Vorteile es einem Computer bietet. diese Einstellung. Im Prinzip ist hier nichts schwer verständlich.

Intel Hyper-Threading: Was ist das?
Wenn Sie nicht tief in den Dschungel der Computerterminologie einsteigen, sondern es in einfacher Sprache formulieren, dann diese Technologie wurde entwickelt, um den Fluss der gleichzeitig von der CPU verarbeiteten Befehle zu erhöhen. Moderne Prozessorchips nutzen in der Regel nur 70 % der verfügbaren Rechenleistung. Der Rest bleibt sozusagen in Reserve. Für die Verarbeitung des Datenstroms wird in den meisten Fällen nur ein Thread verwendet, obwohl das System einen Mehrkernprozessor verwendet.

Grundprinzipien der Arbeit
Um die Fähigkeiten des zentralen Prozessors zu erhöhen, wurde eine spezielle Hyper-Threading-Technologie entwickelt. Diese Technologie macht es einfach, einen Befehlsstrom in zwei aufzuteilen. Es ist auch möglich, einen zweiten Stream zu einem bestehenden hinzuzufügen. Nur ein solcher Stream ist virtuell und funktioniert nicht auf der physischen Ebene. Mit diesem Ansatz können Sie die Leistung des Prozessors erheblich steigern. Das gesamte System beginnt dementsprechend schneller zu arbeiten. Die Steigerung der CPU-Leistung kann sehr stark schwanken. Dies wird gesondert besprochen. Die Entwickler der Hyper-Threading-Technologie behaupten jedoch selbst, dass sie keinen vollwertigen Kern hat. In einigen Fällen ist der Einsatz dieser Technologie durchaus gerechtfertigt. Wenn Sie die Essenz von Hyper-Threading-Prozessoren kennen, wird das Ergebnis nicht lange auf sich warten lassen.

Geschichtlicher Bezug
Tauchen wir ein wenig in die Geschichte dieser Entwicklung ein. Die Unterstützung für Hyper Threading erschien zunächst nur in Intel Pentium 4 Prozessoren, später wurde die Implementierung dieser Technologie in der Intel Core iX Serie fortgesetzt (X steht hier für Prozessorserie). Es sollte beachtet werden, dass es aus irgendeinem Grund in der Reihe der Core 2-Prozessorchips fehlt. Richtig, dann war die Produktivitätssteigerung eher schwach: irgendwo auf dem Niveau von 15-20%. Dies deutete darauf hin, dass der Prozessor nicht über die erforderliche Rechenleistung verfügte und die entwickelte Technologie ihrer Zeit praktisch voraus war. Heutzutage ist die Unterstützung der Hyper-Threading-Technologie bereits in fast allen modernen Chips verfügbar. Um die Leistung des zentralen Prozessors zu erhöhen, verwendet der Prozess selbst nur 5 % der Kristalloberfläche, während Platz für die Verarbeitung von Befehlen und Daten bleibt.

Eine Frage von Konflikten und Leistung
All dies ist sicherlich gut, aber in einigen Fällen kann es bei der Verarbeitung von Daten zu einer Verlangsamung der Arbeit kommen. Das liegt vor allem am sogenannten Branch-Prediction-Modul und an zu geringer Cache-Größe, wenn es ständig neu geladen wird. Wenn wir über das Hauptmodul sprechen, dann in dieser Fall die Situation entwickelt sich so, dass in einigen Fällen der erste Thread Daten vom zweiten benötigt, die möglicherweise gerade nicht verarbeitet werden oder in der Warteschlange zur Verarbeitung stehen. Nicht weniger häufig sind Situationen, in denen der zentrale Prozessorkern sehr stark belastet ist und das Hauptmodul trotzdem weiterhin Daten an ihn sendet. Einige Programme und Anwendungen, wie z. B. ressourcenintensive Online-Spiele, können ernsthaft langsamer werden, nur weil sie nicht für die Verwendung der Hyper-Threading-Technologie optimiert sind. Was passiert mit Spielen? Das Computersystem des Benutzers versucht seinerseits, die Datenflüsse von der Anwendung zum Server zu optimieren. Das Problem ist, dass das Spiel nicht weiß, wie es Datenströme unabhängig verteilen und alles auf einen Haufen werfen kann. Im Großen und Ganzen ist es möglicherweise einfach nicht dafür ausgelegt. Bei Dual-Core-Prozessoren ist der Leistungszuwachs teilweise deutlich höher als bei 4-Core-Prozessoren. Sie haben einfach nicht die Rechenleistung.

Wie aktiviere ich Hyper-Threading im BIOS?
Wir haben bereits ein wenig darüber herausgefunden, was die Hyper-Threading-Technologie ist, und uns mit der Geschichte ihrer Entwicklung vertraut gemacht. Wir haben fast verstanden, was die Hyper-Threading-Technologie ist. Wie aktiviere ich diese Technologie für die Verwendung im Prozessor? Hier ist alles ganz einfach gemacht. Sie müssen das BIOS-Verwaltungssubsystem verwenden. Das Subsystem wird mit den Tasten Entf, F1, F2, F3, F8, F12, F2+Entf usw. aufgerufen. Wenn Sie einen Sony Vaio-Laptop verwenden, haben sie einen bestimmten Eingang, wenn Sie die dedizierte ASSIST-Taste verwenden. Wenn der von Ihnen verwendete Prozessor die Hyper-Threading-Technologie unterstützt, sollte in den BIOS-Einstellungen eine spezielle Einstellungszeile vorhanden sein. In den meisten Fällen sieht es aus wie Hyper-Threading-Technologie und manchmal wie Function. Je nach Subsystem-Entwickler und BIOS-Version kann die Einstellung dieses Parameters entweder im Hauptmenü oder in den erweiterten Einstellungen enthalten sein. Um diese Technologie zu aktivieren, müssen Sie das Optionsmenü aufrufen und den Wert auf Aktiviert setzen. Danach müssen Sie die vorgenommenen Änderungen speichern und das System neu starten.

Warum ist Hyper-Threading nützlich?
Abschließend möchte ich auf die Vorteile eingehen, die der Einsatz der Hyper-Threading-Technologie bietet. Wozu das alles? Warum muss die Prozessorleistung bei der Verarbeitung von Informationen erhöht werden? Diejenigen Benutzer, die mit ressourcenintensiven Anwendungen und Programmen arbeiten, müssen nichts erklären. Viele Menschen wissen wahrscheinlich, dass Grafik-, Mathematik- und Designsoftwarepakete während des Arbeitsprozesses viele Systemressourcen benötigen. Aus diesem Grund wird das gesamte System so stark belastet, dass es schrecklich langsam wird. Um dies zu verhindern, wird empfohlen, die Hyper-Threading-Unterstützung zu aktivieren.

Viele Intel-Prozessoren enthalten Module mit Hyper-Unterstützung-Threading-Technologie, die nach der Idee der Entwickler dazu beitragen soll, die Leistung des Chips zu steigern und den PC insgesamt zu beschleunigen. Was sind die Besonderheiten dieser Lösung eines amerikanischen Unternehmens? Wie können Sie Hyper-Threading nutzen?

Technologie-Grundlagen

Werfen wir einen Blick auf die wichtigsten Details zu Hyper-Threading. Was ist diese Technologie? Es wurde von Intel entwickelt und erstmals 2001 der Öffentlichkeit vorgestellt. Der Zweck seiner Erstellung bestand darin, die Leistung von Servern zu steigern. Das Hauptprinzip von Hyper-Threading ist die Verteilung von Prozessorberechnungen auf mehrere Threads. Darüber hinaus ist dies auch dann möglich, wenn nur ein Kern auf dem entsprechenden Mikroschaltkreistyp installiert ist (wenn wiederum zwei oder mehr davon vorhanden sind und die Threads im Prozessor bereits verteilt sind, ergänzt die Technologie diesen Mechanismus erfolgreich).

Die Sicherstellung des Betriebs des Haupt-PC-Chips innerhalb mehrerer Threads erfolgt durch die Erstellung von Kopien von Architekturzuständen im Zuge von Berechnungen. In diesem Fall wird derselbe Ressourcensatz auf dem Chip verwendet. Wenn die Anwendung die entsprechende Fähigkeit verwendet, werden praktisch bedeutsame Operationen viel schneller ausgeführt. Wichtig ist auch, dass die betreffende Technologie vom Ein-/Ausgabesystem des Computers – dem BIOS – unterstützt wird.

Aktivieren von Hyper-Threading

Unterstützt der im PC verbaute Prozessor den entsprechenden Standard, so wird dieser in der Regel automatisch aktiviert. In einigen Fällen müssen Sie jedoch die erforderlichen Aktionen manuell ausführen, damit die Hyper-Threading-Technologie funktioniert. Wie aktiviere ich es? Sehr einfach.

Sie müssen die Haupt-BIOS-Schnittstelle aufrufen. Dazu müssen Sie ganz zu Beginn des Computerstarts ENTF drücken, manchmal - F2, F10, seltener - andere Tasten, aber die gewünschte erscheint immer in einer der Textzeilen, die unmittelbar danach auf dem Bildschirm angezeigt werden Einschalten des PCs. In der BIOS-Oberfläche müssen Sie das Hyper-Threading-Element finden: In Versionen des E / A-Systems, die es unterstützen, befindet es sich normalerweise an prominenter Stelle. Nachdem Sie die entsprechende Option ausgewählt haben, sollten Sie die Eingabetaste drücken und sie aktivieren, indem Sie sie als aktiviert markieren. Wenn dieser Modus bereits eingestellt ist, funktioniert die Hyper-Threading-Technologie. Sie können alle Vorteile nutzen. Nach dem Aktivieren der Technologie in den Einstellungen sollten Sie alle Einträge im BIOS speichern, indem Sie Save and Exit Setup wählen. Danach wird der Computer in dem Modus neu gestartet, in dem der Prozessor mit Hyper-Theading-Unterstützung arbeitet. Ebenso ist Hyper-Threading deaktiviert. Wählen Sie dazu im entsprechenden Punkt eine andere Option - Deaktiviert und speichern Sie die Einstellungen.

Nachdem wir untersucht haben, wie man Hyper-Threading aktiviert und diese Technologie deaktiviert, werfen wir einen genaueren Blick auf ihre Funktionen.

CPUs mit Hyper-Threading-Unterstützung

Der erste Prozessor, auf dem das Konzept des Unternehmens implementiert wurde, ist einigen Quellen zufolge der Intel Xeon MP, auch bekannt als Foster MP. Dieser Chip ähnelt in einigen architektonischen Komponenten dem Pentium 4, der später auch die betreffende Technologie implementierte. Anschließend wurde die Multithread-Computing-Funktion auf Xeon-Serverprozessoren mit dem Prestonia-Kern implementiert.

Wenn wir über die aktuelle Verbreitung von Hyper-Threading sprechen - welche "Profis" unterstützen es? Zu den beliebtesten Chips dieser Art gehören die der Core- und Xeon-Familien. Es gibt auch Informationen, dass ähnliche Algorithmen in Prozessoren wie Itanium und Atom implementiert sind.

Nachdem wir die grundlegenden Informationen über Hyper-Threading und Prozessoren mit seiner Unterstützung studiert haben, schauen wir uns die bemerkenswertesten Fakten über die Entwicklungsgeschichte der Technologie an.

Entwicklungsgeschichte

Wie oben erwähnt, hat Intel das fragliche Konzept im Jahr 2001 der Öffentlichkeit vorgestellt. Aber die ersten Schritte in der Entwicklung von Technologie wurden in den frühen 90er Jahren gemacht. Die Ingenieure des amerikanischen Unternehmens stellten fest, dass die Ressourcen der PC-Prozessoren bei einigen Operationen nicht voll ausgelastet werden.

Wie Intel-Experten berechnet haben, wird der Mikroschaltkreis während der Arbeit eines Benutzers an einem PC für etwa 30% nicht aktiv für signifikante Intervalle - fast die meiste Zeit - verwendet. Die Meinungen von Experten zu dieser Zahl sind sehr unterschiedlich - jemand hält sie für deutlich unterschätzt, andere stimmen der These amerikanischer Entwickler voll und ganz zu.

Die meisten IT-Spezialisten waren sich jedoch einig, dass zwar nicht 70 % der Prozessorkapazität im Leerlauf sind, aber ein sehr erheblicher Teil davon.

Die Hauptaufgabe der Entwickler

Intel hat beschlossen, diesen Zustand durch einen qualitativ neuen Ansatz zu korrigieren, um die Effizienz der wichtigsten PC-Chips sicherzustellen. Es wurde vorgeschlagen, eine Technologie zu entwickeln, die zu einer aktiveren Nutzung der Fähigkeiten von Prozessoren beitragen würde. 1996 begannen Intel-Spezialisten mit der praktischen Entwicklung.

Nach dem Konzept eines amerikanischen Unternehmens könnte der Prozessor, der Daten von einem Programm verarbeitet, ungenutzte Ressourcen für die Arbeit mit einer anderen Anwendung (oder einer Komponente der aktuellen Anwendung, die jedoch eine andere Struktur hat und die Verwendung zusätzlicher Ressourcen erfordert) leiten. Der entsprechende Algorithmus setzte auch ein effektives Zusammenspiel mit anderen PC-Hardwarekomponenten voraus - RAM, Chipsatz und Programme.

Intel hat es geschafft, das Problem zu lösen. Ursprünglich hieß die Technologie Willamette. 1999 wurde es in die Architektur einiger Prozessoren eingeführt und seine Tests begannen. Bald erhielt die Technologie ihren modernen Namen - Hyper-Threading. Es ist schwer zu sagen, was genau es war – ein einfaches Rebranding oder grundlegende Anpassungen der Plattform. Wir kennen bereits weitere Fakten zum Auftreten der Technologie in der Öffentlichkeit und ihrer Implementierung in verschiedenen Modellen von Intel-Prozessoren. Zu den heute gebräuchlichen Entwicklungsnamen gehört die Hyper-Threading-Technologie.

Aspekte der Kompatibilität mit der Technologie

Wie gut ist die Unterstützung für die Hyper-Threading-Technologie in Betriebssystemen implementiert? Es kann angemerkt werden, dass, wenn wir über modern sprechen Windows-Versionen, dann wird es für den Anwender keine Probleme geben, die Vorteile der Intel Hyper-Threading-Technologie voll auszuschöpfen. Ganz wichtig ist natürlich auch, dass das I/O-System die Technik unterstützt – darüber haben wir oben gesprochen.

Software- und Hardwarefaktoren

In Bezug auf ältere Versionen des Betriebssystems - Windows 98, NT und das relativ veraltete XP - ist eine notwendige Bedingung für die Kompatibilität mit Hyper-Threading die ACPI-Unterstützung. Wenn es nicht im OS implementiert ist, werden nicht alle Rechenflüsse, die von den entsprechenden Modulen gebildet werden, vom Computer erkannt. Beachten Sie, dass Windows XP als Ganzes die Vorteile dieser Technologie bietet. Es ist auch sehr wünschenswert, dass Multithreading-Algorithmen in Anwendungen implementiert werden, die vom PC-Eigentümer verwendet werden.

Manchmal braucht man einen PC – wenn man statt der ursprünglich darauf befindlichen Prozessoren mit Hyper-Threading-Unterstützung darauf Prozessoren installiert, die mit der Technik nicht kompatibel waren. Wie bei Betriebssystemen wird es jedoch keine besonderen Probleme geben, wenn der Benutzer einen modernen PC oder zumindest die entsprechenden Hardwarekomponenten zu den ersten Hyper-Threading-Prozessoren, wie wir oben angemerkt haben, in der Core-Linie implementiert und angepasst hat Dazu unterstützen Chipsätze auf Motherboards die entsprechenden Funktionen des Chips voll.

Beschleunigungskriterien

Wenn der Computer auf der Ebene der Hardware- und Softwarekomponenten nicht mit Hyper-Threading kompatibel ist, kann diese Technologie theoretisch sogar seine Arbeit verlangsamen. Dieser Sachverhalt hat einige IT-Experten dazu veranlasst, an den Aussichten der Lösung von Intel zu zweifeln. Sie entschieden, dass es sich nicht um einen Technologiesprung handelte, sondern um einen Marketing-Schachzug, der dem Konzept von Hyper Threading zugrunde liegt, das aufgrund seiner Architektur nicht in der Lage ist, den PC signifikant zu beschleunigen. Doch die Zweifel der Kritiker wurden von den Intel-Ingenieuren schnell ausgeräumt.

Die Grundvoraussetzungen für den erfolgreichen Einsatz der Technologie sind also:

Unterstützung für Hyper-Threading durch das E/A-System;

Kompatibilität des Motherboards mit dem Prozessor des entsprechenden Typs;

Die Unterstützung einer Technologie durch das Betriebssystem und die darauf laufende Anwendung.

Wenn es bei den ersten beiden Punkten keine besonderen Probleme geben sollte, dann kann es im Hinblick auf die Kompatibilität von Programmen mit Hyper-Threading noch zu Überlagerungen kommen. Es kann jedoch angemerkt werden, dass eine Anwendung, die beispielsweise die Arbeit mit Dual-Core-Prozessoren unterstützt, mit der Technologie von Intel fast garantiert kompatibel ist.

Zumindest gibt es Studien, die die Leistungssteigerung von an Dual-Core-Mikroschaltungen angepassten Programmen um etwa 15-18% bestätigen, wenn Intel Hyper-Threading-Module im Prozessor arbeiten. Wir wissen bereits, wie man sie deaktiviert (falls der Benutzer Zweifel an der Zweckmäßigkeit der Verwendung der Technologie hat). Aber es gibt wahrscheinlich nur sehr wenige greifbare Gründe für ihr Erscheinen.

Praktische Nützlichkeit von Hyper-Threading

Hat die fragliche Technologie einen spürbaren Einfluss auf Intel gehabt? Zu dieser Frage gibt es unterschiedliche Meinungen. Viele Leute bemerken jedoch, dass die Hyper-Threading-Technologie so populär geworden ist, dass diese Lösung für viele Hersteller von Serversystemen unverzichtbar geworden ist und auch von normalen PC-Benutzern positiv aufgenommen wurde.

Hardware-Datenverarbeitung

Der Hauptvorteil der Technologie besteht darin, dass sie in einem Hardwareformat implementiert ist. Das heißt, der Hauptteil der Berechnungen wird innerhalb des Prozessors auf speziellen Modulen durchgeführt und nicht in Form von Softwarealgorithmen, die auf die Ebene des Hauptkerns der Mikroschaltung übertragen werden - was eine Verringerung der Gesamtleistung des bedeuten würde PC. Im Allgemeinen gelang es den Intel-Ingenieuren laut IT-Experten, das Problem zu lösen, das sie zu Beginn der Entwicklung der Technologie identifiziert hatten - den Prozessor effizienter arbeiten zu lassen. Wie Tests gezeigt haben, hat die Verwendung von Hyper-Threading bei der Lösung vieler Aufgaben, die für den Benutzer praktisch wichtig sind, es ermöglicht, die Arbeit erheblich zu beschleunigen.

Es kann festgestellt werden, dass unter 4 Mikroschaltungen, die mit Unterstützungsmodulen für die betrachtete Technologie ausgestattet waren, viel effizienter arbeiteten als die ersten Modifikationen. Dies äußerte sich weitgehend in der Fähigkeit des PCs, im echten Multitasking-Modus zu funktionieren - wenn mehrere verschiedene Arten von Windows-Anwendungen, und es ist höchst unerwünscht, dass aufgrund des erhöhten Verbrauchs von Systemressourcen durch einen von ihnen die Geschwindigkeit der anderen abnehmen würde.

Gleichzeitige Lösung verschiedener Aufgaben

Daher sind Prozessoren mit Unterstützung für Hyper-Threading besser geeignet als Mikroschaltkreise, die nicht damit kompatibel sind, um gleichzeitig beispielsweise einen Browser zu starten, Musik abzuspielen und mit Dokumenten zu arbeiten. Alle diese Vorteile kommen in der Praxis natürlich nur dann zum Tragen, wenn die Soft- und Hardwarekomponenten des PCs mit dieser Betriebsart ausreichend kompatibel sind.

Ähnliche Entwicklungen

Hyper-Threading ist nicht die einzige Technologie, die entwickelt wurde, um die PC-Leistung durch Multi-Thread-Computing zu verbessern. Sie hat Analoga.

Beispielsweise unterstützen die von IBM veröffentlichten POWER5-Prozessoren auch Multithreading. Das heißt, jedes (insgesamt sind 2 entsprechende Elemente darauf installiert) kann Aufgaben innerhalb von 2 Threads ausführen. Somit verarbeitet die Mikroschaltung 4 Berechnungsströme gleichzeitig.

Auch im Bereich der Multithreading-Konzepte hat AMD hervorragende Ergebnisse. Es ist also bekannt, dass die Bulldozer-Architektur ähnliche Algorithmen wie Hyper-Threading verwendet. Ein Merkmal der AMD-Lösung ist, dass jeder der Threads separate Prozessorblöcke verarbeitet. Wenn die zweite Ebene üblich bleibt. Ähnliche Konzepte werden in der von AMD entwickelten Bobcat-Architektur umgesetzt, die für Laptops und kleine PCs angepasst ist.

Natürlich können direkte Analoga des Konzepts von AMD, IBM und Intel sehr bedingt betrachtet werden. Sowie Ansätze zum Entwerfen der Architektur von Prozessoren im Allgemeinen. Die in den jeweiligen Technologien implementierten Prinzipien können jedoch als ziemlich ähnlich angesehen werden, und die von den Entwicklern gesetzten Ziele in Bezug auf die Verbesserung der Effizienz der Funktionsweise von Mikroschaltungen sind im Wesentlichen sehr ähnlich, wenn nicht sogar identisch.

Das sind die wichtigsten Fakten zu den interessantesten Technologien von Intel. Was es ist, wie man Hyper-Threading aktiviert oder umgekehrt deaktiviert, haben wir ermittelt. Der Punkt liegt wohl in der praktischen Nutzung seiner Vorteile, die genutzt werden können, indem darauf geachtet wird, dass der PC in Hard- und Softwarekomponenten die Technologie unterstützt.

Hyperthreading (Hyper-Threading, 'Hyper-Threading', Hyper Threading - rus.) - eine von der Firma entwickelte Technologie Intel, wodurch der Prozessorkern mehr Datenströme als einen (normalerweise zwei) ausführen kann. Da hat sich herausgestellt, dass ein herkömmlicher Prozessor bei den meisten Aufgaben nicht mehr als nutzt 70% Bei aller Rechenleistung entschied man sich für eine Technologie, die es erlaubt, bestimmte Recheneinheiten im Leerlauf mit Arbeit eines anderen Threads zu belasten. Dadurch können Sie die Leistung des Kernels steigern von 10 bis 80% je nach Aufgabe.

Sehen Sie sich an, wie Hyper-Threading funktioniert .

Angenommen, der Prozessor führt einfache Berechnungen durch und gleichzeitig befindet sich ein Befehlsblock im Leerlauf und SIMD Erweiterungen.

Das Adressiermodul erkennt dies und sendet Daten zur weiteren Berechnung dorthin. Wenn die Daten spezifisch sind, werden diese Blöcke sie langsamer ausführen, aber die Daten werden nicht im Leerlauf sein. Oder sie verarbeiten sie vor, um sie schnell weiterzuverarbeiten durch den entsprechenden Block. Dies ergibt einen zusätzlichen Leistungsgewinn.

Natürlich erreicht der virtuelle Thread nicht den vollwertigen Kern, aber Sie können ihn fast erreichen 100% Effizienz der Rechenleistung, Laden Sie fast den gesamten Prozessor mit Arbeit und lassen Sie ihn nicht im Leerlauf. Mit all dem HT-Technologie zu implementieren nur ca. 5% zusätzlicher Werkzeugraum und Leistung können manchmal hinzugefügt werden 50% . Dieser zusätzliche Bereich umfasst zusätzliche Blöcke von Registern und Verzweigungsvorhersagen, die stromkalkulieren, wo gerade Rechenleistung verwendet werden kann, und Daten von einem zusätzlichen Adressblock dorthin senden.

Zum ersten Mal erschien die Technologie auf Prozessoren Pentium 4, aber es gab keine große Leistungssteigerung, da der Prozessor selbst keine hohe Rechenleistung hatte. Das Wachstum war bestenfalls 15-20% , und bei vielen Aufgaben arbeitete der Prozessor viel langsamer als ohne HT.

Langsamer Prozessor technologiebedingt Hyperthreading, passiert wenn:

  • Nicht genug Cache für alle gegeben und es wird zyklisch neu gestartet, wodurch der Prozessor verlangsamt wird.
  • Die Daten können vom Verzweigungsprädiktor nicht korrekt verarbeitet werden. Tritt hauptsächlich auf fehlende Optimierung für bestimmte Software oder Unterstützung durch das Betriebssystem.
  • Es kann auch aufgrund auftreten Datenabhängigkeiten, wenn zum Beispiel der erste Thread sofort Daten vom zweiten benötigt, diese aber noch nicht bereit sind oder auf einen anderen Thread warten. Oder zyklische Daten benötigen bestimmte Blöcke zur schnellen Verarbeitung und werden mit anderen Daten geladen. Es kann viele Variationen der Datenabhängigkeit geben.
  • Wenn der Kern bereits stark ausgelastet ist und das „nicht schlau genug“-Verzweigungsvorhersagemodul immer noch Daten sendet, die den Prozessor verlangsamen (relevant für Pentium 4).

Nach Pentium 4, Intel begann mit der Nutzung der Technologie erst ab Core i7 erste Generation, Überspringen der Serie 2 .

Die Rechenleistung der Prozessoren ist inzwischen ausreichend für die vollständige Implementierung von Hyperthreading ohne großen Schaden, selbst für nicht optimierte Anwendungen. Später, Hyperthreading erschienen auf Prozessoren der Mittelklasse und sogar preisgünstig und tragbar. Wird bei allen Serien verwendet Kern i (i3; i5; i7) und weiter mobile Prozessoren Atom(gar nicht). Interessanterweise Dual-Core-Prozessoren mit HT, erhalten Sie einen größeren Leistungsgewinn als Quad-Core durch die Verwendung Hyperthreading, stehend 75% vollwertige vier nukleare.

Wo ist HyperThreading nützlich?

Es ist nützlich für die Verwendung in Verbindung mit professionellen, grafischen, analytischen, mathematischen und wissenschaftlichen Programmen, Video- und Audio-Editoren, Archivierern ( Photoshop, Corel Draw, Maya, 3Ds Max, WinRar, Sony Vegas &etc). Alle Programme, die viele Berechnungen verwenden, HT wird bestimmt nützlich sein. Zum Glück drin 90% Fällen sind solche Programme gut für ihre Verwendung optimiert.

Hyperthreading unverzichtbar für Serversysteme. Eigentlich für diese Nische wurde es teilweise entwickelt. Dank an HT können Sie bei einer großen Anzahl von Aufgaben die Rendite des Prozessors erheblich steigern. Jeder Thread wird zur Hälfte entladen, was sich vorteilhaft auf die Datenadressierung und die Verzweigungsvorhersage auswirkt.

Viele Computerspiele , stehen in negativem Zusammenhang mit der Präsenz Hyperthreading, wodurch die Anzahl der Bilder pro Sekunde reduziert wird. Dies liegt an der fehlenden Optimierung für Hyperthreading von der Seite des Spiels. Eine Optimierung seitens des Betriebssystems reicht nicht immer aus, insbesondere wenn mit ungewöhnlichen, heterogenen und komplexen Daten gearbeitet wird.

Auf Motherboards, die unterstützen HT, können Sie die Hyper-Threading-Technologie jederzeit deaktivieren.

20. Januar 2015 um 19:43 Uhr

Mehr über Hyper-Threading

  • Prüfung von IT-Systemen,
  • Programmierung

Es gab eine Zeit, in der es notwendig war, die Speicherleistung im Zusammenhang mit der Hyper-Threading-Technologie zu bewerten. Wir kamen zu dem Schluss, dass sein Einfluss nicht immer positiv ist. Als das Quantum an freier Zeit auftauchte, entstand der Wunsch, weiter zu forschen und die laufenden Prozesse mit einer Genauigkeit von Maschinenzyklen und Bits zu betrachten Software eigene Entwicklung.

Recherchierte Plattform

Das Objekt von Experimenten - ASUS-Laptop N750JK mit Intel Core i7-4700HQ Prozessor. Die Taktrate beträgt 2,4 GHz, die durch den Intel Turbo Boost-Modus auf bis zu 3,4 GHz gesteigert wird. 16 Gigabyte installiert Arbeitsspeicher DDR3-1600 (PC3-12800) im Dual-Channel-Modus. Operationssystem - Microsoft Windows 8.1 64-Bit.

Abb.1 Konfiguration der untersuchten Plattform.

Der Prozessor der untersuchten Plattform enthält 4 Kerne, die bei aktivierter Hyper-Threading-Technologie Hardwareunterstützung für 8 Threads oder logische Prozessoren bieten. Die Plattform-Firmware gibt diese Informationen über die ACPI-Tabelle MADT (Multiple APIC Description Table) an das Betriebssystem weiter. Da die Plattform nur einen RAM-Controller enthält, gibt es keine SRAT (System Resource Affinity Table), die die Nähe von Prozessorkernen zu Speichercontrollern deklariert. Offensichtlich handelt es sich bei dem fraglichen Laptop nicht um eine NUMA-Plattform, aber operationssystem, zum Zweck der Vereinheitlichung, betrachtet es als ein NUMA-System mit einer Domäne, was durch die Zeile NUMA Nodes = 1 angezeigt wird. Grundlegend für unsere Experimente ist die Tatsache, dass der Datencache der ersten Ebene eine Größe von 32 Kilobyte für hat jeder der vier Kerne. Zwei logische Prozessoren, die sich denselben Kern teilen, teilen sich die L1- und L2-Caches.

Untersuchter Betrieb

Wir werden die Abhängigkeit der Lesegeschwindigkeit von Datenblöcken von ihrer Größe untersuchen. Dazu wählen wir die produktivste Methode, nämlich das Lesen von 256-Bit-Operanden mit der VMOVAPD AVX-Anweisung. In den Diagrammen zeigt die X-Achse die Blockgröße und die Y-Achse die Lesegeschwindigkeit. In der Nähe von Punkt X, der der Größe des L1-Cache entspricht, erwarten wir einen Wendepunkt, da die Leistung sinken sollte, nachdem der verarbeitete Block den Cache verlässt. In unserem Test arbeitet beim Multithreading jeder der 16 initiierten Threads mit einem eigenen Adressbereich. Um die Hyper-Threading-Technologie innerhalb einer Anwendung zu steuern, verwendet jeder Thread die API-Funktion SetThreadAffinityMask, die eine Maske festlegt, in der jeder logische Prozessor einem Bit entspricht. Ein einzelner Wert des Bits erlaubt die Verwendung des angegebenen Prozessors durch den angegebenen Thread, ein Nullwert verbietet dies. Für 8 logische Prozessoren der untersuchten Plattform erlaubt Maske 11111111b die Verwendung aller Prozessoren (Hyper-Threading aktiviert), Maske 01010101b erlaubt die Verwendung eines logischen Prozessors in jedem Kern (Hyper-Threading deaktiviert).

In den Grafiken werden folgende Abkürzungen verwendet:

MBPS (Megabyte pro Sekunde)Blocklesegeschwindigkeit in Megabyte pro Sekunde;

CPI (Takte pro Anweisung)Anzahl der Zyklen pro Befehl;

TSC (Zeitstempelzähler)Prozessorzykluszähler.

Hinweis: Die Taktrate des TSC-Registers stimmt möglicherweise nicht mit der Taktrate des Prozessors überein, wenn er im Turbo Boost-Modus läuft. Dies muss bei der Interpretation der Ergebnisse berücksichtigt werden.

Auf der rechten Seite der Diagramme wird ein hexadezimaler Dump der Anweisungen, die den Hauptteil des Zyklus der Zieloperation bilden, die in jedem der Programm-Threads ausgeführt wird, oder die ersten 128 Bytes dieses Codes, visualisiert.

Erlebnis Nummer 1. Ein Faden



Abb.2 Lesen in einem Thread

Die maximale Geschwindigkeit beträgt 213563 Megabyte pro Sekunde. Der Wendepunkt tritt bei einer Blockgröße von etwa 32 Kilobyte auf.

Erlebnis Nummer 2. 16 Threads auf 4 Prozessoren, Hyper-Threading deaktiviert



Abb. 3 Lesen in sechzehn Threads. Die Anzahl der verwendeten logischen Prozessoren beträgt vier

Hyperthreading ist deaktiviert. Die maximale Geschwindigkeit beträgt 797598 Megabyte pro Sekunde. Der Wendepunkt tritt bei einer Blockgröße von etwa 32 Kilobyte auf. Wie erwartet, stieg die Geschwindigkeit im Vergleich zum Lesen in einem Thread um etwa das Vierfache, bezogen auf die Anzahl der arbeitenden Kerne.

Erlebnis Nummer 3. 16 Threads auf 8 Prozessoren, Hyper-Threading aktiviert



Abb.4 Lesen in sechzehn Threads. Die Anzahl der verwendeten logischen Prozessoren beträgt acht

Hyperthreading aktiviert. Die maximale Geschwindigkeit von 800722 Megabyte pro Sekunde wurde durch die Einbeziehung von Hyper-Threading fast nicht erhöht. Das große Minus ist, dass der Wendepunkt bei einer Blockgröße von etwa 16 Kilobyte auftritt. Die Aktivierung von Hyper-Threading hat die maximale Geschwindigkeit leicht erhöht, aber jetzt tritt der Geschwindigkeitsabfall bei der Hälfte der Blockgröße auf – etwa 16 Kilobyte, sodass die Durchschnittsgeschwindigkeit deutlich gesunken ist. Dies ist nicht überraschend, jeder Kern hat seinen eigenen L1-Cache, während die logischen Prozessoren im selben Kern ihn teilen.

Schlussfolgerungen

Der untersuchte Betrieb skaliert recht gut auf einem Mehrkernprozessor. Die Gründe sind, dass jeder der Kerne einen eigenen Cache-Speicher der ersten und zweiten Ebene enthält, die Größe des Zielblocks mit der Größe des Cache-Speichers vergleichbar ist und jeder der Threads mit einem eigenen Adressbereich arbeitet. Für wissenschaftliche Zwecke haben wir solche Bedingungen in einem synthetischen Test geschaffen, wobei wir erkannt haben, dass reale Anwendungen meist weit von einer idealen Optimierung entfernt sind. Die Einbeziehung von Hyper-Threading wirkte sich jedoch auch unter diesen Bedingungen negativ aus, da bei einer leichten Erhöhung der Spitzengeschwindigkeit ein erheblicher Verlust der Verarbeitungsgeschwindigkeit von Blöcken zu verzeichnen ist, deren Größe im Bereich von 16 bis 32 liegt Kilobyte.

Wir haben geschrieben, dass der Einsatz von Single-Prozessor-Xeon-Systemen keinen Sinn macht, da deren Leistung bei einem höheren Preis der eines Pentium 4 gleicher Frequenz entspricht. Nun, nach näherer Betrachtung muss diese Aussage wohl etwas abgeändert werden. Die im Intel Xeon mit dem Prestonia-Kern implementierte Hyper-Threading-Technologie funktioniert wirklich und hat einen ziemlich greifbaren Effekt. Obwohl es bei der Verwendung auch viele Fragen gibt ...

Leistung geben

"Schneller, noch schneller ...". Der Wettlauf um die Leistung findet seit Jahren statt, und manchmal ist es sogar schwer zu sagen, welche der Computerkomponenten schneller beschleunigt. Dafür werden immer mehr neue Wege erfunden, und je weiter, desto mehr qualifizierte Arbeitskräfte und hochwertige Köpfe werden in diesen lawinenartigen Prozess investiert.

Eine stetige Leistungssteigerung ist natürlich erforderlich. Zumindest ist es ein profitables Geschäft, und es gibt immer eine nette Möglichkeit, Benutzer zu ermutigen, die „super-performing CPU“ von gestern auf die „noch super…“ von morgen aufzurüsten. Zum Beispiel gleichzeitige Spracherkennung und simultane Übersetzung in eine andere Sprache – ist das nicht der Traum aller? Oder ungewohnt realistische Spiele von fast "Cine"-Qualität (die die Aufmerksamkeit völlig in Anspruch nehmen und manchmal zu gravierenden Veränderungen in der Psyche führen) - ist das nicht der Wunsch vieler Spieler, jung und alt?

Aber lassen wir in diesem Fall die Marketingaspekte weg und konzentrieren uns auf die technischen. Außerdem ist nicht alles so düster: Es gibt dringende Aufgaben (Serveranwendungen, wissenschaftliche Berechnungen, Modellierung usw.), bei denen alles mehr ist Hochleistung, insbesondere Zentraleinheiten, wirklich notwendig.

Also, was sind die Möglichkeiten, ihre Leistung zu steigern?

Takterhöhung. Kann weiter "verdünnt" werden technologischer Prozess und die Frequenz erhöhen. Das ist aber bekanntlich nicht einfach und mit allerlei Nebenwirkungen behaftet, wie zum Beispiel Problemen mit der Wärmeableitung.

Erhöhen der Prozessorressourcen- zum Beispiel das Volumen des Caches erhöhen, neue Blöcke (Execution Units) hinzufügen. All dies führt zu einer Erhöhung der Anzahl der Transistoren, der Komplexität des Prozessors, einer Erhöhung der Kristallfläche und folglich der Kosten.

Außerdem ergeben die beiden vorangegangenen Verfahren in der Regel keineswegs eine lineare Produktivitätssteigerung. Das ist am Beispiel von Pentium 4 bekannt: Fehler in der Sprungvorhersage und Interrupts verursachen das Zurücksetzen einer langen Pipeline, was die Gesamtleistung stark beeinträchtigt.

Multiprocessing. Die Installation mehrerer CPUs und die Verteilung der Arbeit zwischen ihnen ist oft recht effizient. Aber dieser Ansatz ist nicht sehr billig - jeder zusätzliche Prozessor erhöht die Kosten des Systems, und ein Dual-Motherboard ist viel teurer als ein normales (ganz zu schweigen von Motherboards mit Unterstützung für vier oder mehr CPUs). Außerdem profitieren nicht alle Anwendungen von Multiprocessing genug, um die Kosten zu rechtfertigen.

Zusätzlich zum "reinen" Multiprocessing gibt es mehrere "Zwischen"-Optionen, mit denen Sie die Anwendungsausführung beschleunigen können:

Chip-Multiprocessing (CMP)- Zwei Prozessorkerne befinden sich physisch auf demselben Chip und verwenden einen gemeinsamen oder separaten Cache. Natürlich erweist sich die Größe des Kristalls als ziemlich groß, was sich nur auf die Kosten auswirken kann. Beachten Sie, dass mehrere dieser "doppelten" CPUs auch in einem Multiprozessorsystem arbeiten können.

Zeitscheiben-Multithreading. Der Prozessor schaltet in festen Intervallen zwischen Programm-Threads um. Der Overhead kann manchmal ziemlich hoch sein, besonders wenn ein Prozess wartet.

Switch-on-Event-Multithreading. Taskwechsel bei langen Pausen, wie z. B. "Cache Misses" (Cache Misses), von denen eine Vielzahl für Serveranwendungen typisch sind. In diesem Fall wird ein Prozess, der darauf wartet, Daten aus einem relativ langsamen Speicher in den Cache zu laden, ausgesetzt, wodurch CPU-Ressourcen für andere Prozesse freigegeben werden. Switch-on-Event-Multithreading erreicht jedoch wie Time-Slice-Multithreading nicht immer eine optimale Nutzung der Prozessorressourcen, insbesondere aufgrund von Fehlern in der Verzweigungsvorhersage, Befehlsabhängigkeiten usw.

Gleichzeitiges Multithreading. In diesem Fall laufen Programm-Threads auf demselben Prozessor "gleichzeitig", d. h. ohne zwischen ihnen umzuschalten. CPU-Ressourcen werden dynamisch verteilt, nach dem Prinzip „Was du nicht nutzt, gib es jemand anderem“. Dieser Ansatz liegt zugrunde Intel-Technologien Hyper-Threading, dem wir uns jetzt zuwenden.

Wie Hyper-Threading funktioniert

Wie Sie wissen, beinhaltet das aktuelle "Computing-Paradigma". Multithreaded-Computing. Dies gilt nicht nur für Server, wo ein solches Konzept zunächst existiert, sondern auch für Workstations und Desktop-Systeme. Threads können zu derselben oder unterschiedlichen Anwendungen gehören, aber es gibt fast immer mehr aktive Threads als einen (um dies zu sehen, öffnen Sie einfach den Task-Manager in Windows 2000/XP und schalten Sie die Anzeige der Anzahl der Threads ein). Gleichzeitig kann ein herkömmlicher Prozessor nur einen der Threads gleichzeitig ausführen und ist gezwungen, ständig zwischen ihnen zu wechseln.

Zum ersten Mal wurde die Hyper-Threading-Technologie im Intel Xeon MP (Foster MP)-Prozessor implementiert, auf dem sie "einlief". Denken Sie daran, dass Xeon MP, das offiziell auf der IDF Spring 2002 vorgestellt wurde, einen Pentium 4 Willamette-Kern verwendet, 256 KB L2-Cache und 512 KB/1 MB L3-Cache enthält und 4-Prozessor-Konfigurationen unterstützt. Hyper-Threading-Unterstützung ist auch im Intel Xeon-Prozessor für Workstations (Prestonia-Kern, 512 KB L2-Cache) vorhanden, der etwas früher als der Xeon MP auf den Markt kam. Dual-Prozessor-Konfigurationen auf Intel Xeon sind unseren Lesern bereits bekannt, daher gehen wir exemplarisch auf die Möglichkeiten von Hyper-Threading am Beispiel dieser CPUs ein – sowohl theoretisch als auch praktisch. Wie dem auch sei, der "einfache" Xeon ist in 4-Prozessor-Systemen banaler und bekömmlicher als der Xeon MP ...

Das Funktionsprinzip von Hyper-Threading basiert darauf, dass bei der Ausführung von Programmcode immer nur ein Teil der Ressourcen des Prozessors beansprucht wird. Ungenutzte Ressourcen können auch mit Arbeit belastet werden – beispielsweise kann eine weitere Anwendung (oder ein anderer Thread derselben Anwendung) für die parallele Ausführung verwendet werden. In einem physikalischen Intel Xeon Prozessor werden zwei logische Prozessoren (LP – Logical Processor) gebildet, die sich die Rechenressourcen der CPU teilen. Betriebssystem und Anwendungen „sehen“ genau zwei CPUs und können wie bei einem vollwertigen Zwei-Prozessor-System die Arbeit auf diese verteilen.

Eines der Ziele der Implementierung von Hyper-Threading besteht darin, nur einen aktiven Thread mit der gleichen Geschwindigkeit wie auf einer normalen CPU ausführen zu lassen. Dazu verfügt der Prozessor über zwei Hauptbetriebsmodi: Single-Task (ST) und Multi-Task (MT). Im ST-Modus ist nur ein logischer Prozessor aktiv und nutzt die verfügbaren Ressourcen ungeteilt (ST0- und ST1-Modus); der andere LP wird durch den HALT-Befehl angehalten. Wenn ein zweiter Programm-Thread erscheint, wird der im Leerlauf befindliche logische Prozessor aktiviert (über einen Interrupt) und die physische CPU in den MT-Modus versetzt. Das Stoppen ungenutzter LPs mit dem HALT-Befehl liegt in der Verantwortung des Betriebssystems, das letztendlich für die gleich schnelle Ausführung eines Threads verantwortlich ist wie im Fall ohne Hyper-Threading.

Für jeden der beiden LPs wird der sogenannte Architecture State (AS) gespeichert, der den Zustand von Registern verschiedener Typen – General Purpose, Control, APIC und Service – beinhaltet. Jedes LP hat seinen eigenen APIC (Interrupt Controller) und einen Satz von Registern, mit denen das Konzept der Register Alias ​​​​Table (RAT) eingeführt wird, das die Korrespondenz zwischen acht IA-32-Allzweckregistern und 128 verfolgt physische CPU-Register (eine RAT für jeden LP).

Wenn zwei Threads ausgeführt werden, werden zwei entsprechende Sätze von Next-Instruction-Pointern unterstützt. Die meisten Anweisungen werden aus dem Trace Cache (TC) entnommen, wo sie in decodierter Form gespeichert werden, und die beiden aktiven LPs greifen abwechselnd jeden Takt auf den TC zu. Wenn nur ein LP aktiv ist, erhält es gleichzeitig exklusiven Zugriff auf den TC, ohne Takte zu verschachteln. In ähnlicher Weise findet ein Zugriff auf das Microcode-ROM statt. ITLB-Blöcke (Instruction Translation Look-aside Buffer), die beim Fehlen der notwendigen Anweisungen im Instruktions-Cache aktiviert werden, werden dupliziert und liefern Instruktionen jeweils für ihren eigenen Thread. Der Befehlsdecodierungsblock IA-32 Instruction Decode wird geteilt und in dem Fall, in dem eine Befehlsdecodierung für beide Ströme erforderlich ist, bedient er sie nacheinander (wieder jeden Zyklus). Die Blöcke Uop Queue und Allocator sind zweigeteilt, wobei jedem LP die Hälfte der Elemente zugeordnet ist. Scheduler aus 5 Stück verarbeiten Queues von dekodierten Befehlen (Uops) trotz Zugehörigkeit zu LP0/LP1 und direkte auszuführende Befehle von den notwendigen Execution Units - je nach Ausführungsbereitschaft der ersten und Verfügbarkeit der zweiten. Caches aller Ebenen (L1/L2 für Xeon und L3 für Xeon MP) werden vollständig von zwei LPs gemeinsam genutzt, um jedoch die Datenintegrität zu gewährleisten, werden Einträge in DTLB (Data Translation Look-aside Buffer) mit Deskriptoren in Form von bereitgestellt logische Prozessor-IDs.

Somit können die Befehle beider logischer CPUs gleichzeitig auf den Ressourcen eines physikalischen Prozessors ausgeführt werden, die in vier Klassen unterteilt sind:

  • dupliziert (dupliziert);
  • vollständig geteilt (vollständig geteilt);
  • mit Deskriptoren von Elementen (Entry Tagged);
  • dynamisch aufgeteilt (Partitioned) je nach Betriebsart von ST0/ST1 oder MT.

Die meisten Anwendungen, die auf Multiprozessorsystemen beschleunigt werden, können jedoch ohne Änderungen auch auf einer CPU mit aktiviertem Hyper-Threading beschleunigt werden. Aber es gibt auch Probleme: Befindet sich beispielsweise ein Prozess in einer Warteschleife, kann er alle Ressourcen der physischen CPU beanspruchen, wodurch der zweite LP nicht mehr funktioniert. Daher kann die Leistung bei Verwendung von Hyper-Threading manchmal einbrechen (bis zu 20 %). Um dies zu verhindern, empfiehlt Intel die Verwendung der PAUSE-Anweisung anstelle von leeren Warteschleifen (eingeführt in IA-32 ab Pentium 4). Es wird auch ernsthaft an der automatischen und halbautomatischen Optimierung von Code während der Kompilierung gearbeitet – beispielsweise haben Compiler der Intel OpenMP C ++ / Fortran Compilers ()-Serie in dieser Hinsicht erhebliche Fortschritte gemacht.

Ein weiteres Ziel der ersten Implementierung von Hyper-Threading war laut Intel, das Wachstum bei der Anzahl der Transistoren, der Die-Fläche und des Stromverbrauchs zu minimieren und gleichzeitig die Leistung spürbar zu steigern. Der erste Teil dieser Zusage wurde bereits erfüllt: Das Hinzufügen von Hyper-Threading-Unterstützung zum Xeon/Xeon MP erhöhte die Die-Fläche und den Stromverbrauch um weniger als 5 %. Was mit dem zweiten Teil (Aufführung) passiert ist, müssen wir noch prüfen.

Praktischer Teil

Aus offensichtlichen Gründen haben wir keine 4-Prozessor-Serversysteme auf Xeon MP mit aktiviertem Hyper-Threading getestet. Erstens ist es ziemlich arbeitsintensiv. Und zweitens, wenn wir uns für ein solches Kunststück entscheiden, ist es immer noch, weniger als einen Monat nach der offiziellen Ankündigung, absolut unrealistisch, diese teure Ausrüstung zu bekommen. Daher hat man sich entschieden, uns auf dasselbe System mit zwei Intel Xeon 2,2 GHz zu beschränken, auf dem die ersten Tests dieser Prozessoren durchgeführt wurden (siehe Link am Anfang des Artikels). Das System basierte auf Hauptplatine Supermicro P4DC6+ ( Intel-Chipsatz i860), enthielt 512 MB RDRAM, eine Grafikkarte auf einem GeForce3-Chip (64 MB DDR, Detonator 21.85-Treiber), Festplatte westliche digitale WD300BB und 6X DVD-ROM; Als Betriebssystem wurde Windows 2000 Professional SP2 verwendet.

Zunächst ein paar allgemeine Eindrücke. Bei der Installation eines Xeon mit Prestonia-Kernel beim Start System-BIOS zeigt eine Meldung über das Vorhandensein von zwei CPUs an; Wenn zwei Prozessoren installiert sind, sieht der Benutzer eine Meldung über vier CPUs. Das Betriebssystem erkennt normalerweise "beide Prozessoren", aber nur, wenn zwei Bedingungen erfüllt sind.

Zuerst im CMOS-Setup letzteres BIOS-Versionen Supermicro P4DCxx-Boards haben das Element Hyper-Threading aktivieren eingeführt, ohne das das Betriebssystem nur den/die physischen Prozessor(en) erkennt. Zweitens wird ACPI verwendet, um dem Betriebssystem mitzuteilen, dass es zusätzliche logische Prozessoren gibt. Um Hyper-Threading zu aktivieren, muss daher die ACPI-Option im CMOS-Setup aktiviert werden, und HAL (Hardware Abstraction Layer) mit ACPI-Unterstützung muss auch für das Betriebssystem selbst installiert werden. Glücklicherweise ist es unter Windows 2000 einfach, HAL von Standard-PC (oder MPS-Uni-/Multiprozessor-PC) auf ACPI-Uni-/Multiprozessor-PC zu ändern - durch Ändern des "Computertreibers" im Geräte-Manager. Gleichzeitig besteht für Windows XP die einzige legale Möglichkeit zur Migration auf die ACPI-HAL darin, das System zusätzlich zur vorhandenen Installation neu zu installieren.

Aber jetzt sind alle Vorbereitungen getroffen, und unser Windows 2000 Pro glaubt bereits fest daran, dass es auf einem Zwei-Prozessor-System funktioniert (obwohl tatsächlich nur ein Prozessor installiert ist). Jetzt ist es wie üblich an der Zeit, die Ziele des Testens festzulegen. Also wollen wir:

  • Bewerten Sie die Auswirkungen von Hyper-Threading auf die Leistung von Anwendungen verschiedener Klassen.
  • Vergleichen Sie diesen Effekt mit dem Effekt der Installation eines zweiten Prozessors.
  • Überprüfen Sie, wie "fair" Ressourcen an den aktiven logischen Prozessor gegeben werden, wenn das zweite LP im Leerlauf ist.

Um die Leistung zu bewerten, haben wir eine Reihe von Anwendungen verwendet, die den Lesern bereits bekannt sind und die beim Testen von Workstation-Systemen verwendet wurden. Beginnen wir vielleicht am Ende und überprüfen die "Gleichheit" der logischen CPUs. Alles ist sehr einfach: Zuerst führen wir Tests auf einem Prozessor mit deaktiviertem Hyper-Threading durch, und dann wiederholen wir den Vorgang mit aktiviertem Hyper-Threading und verwenden nur eine der beiden logischen CPUs (mithilfe des Task-Managers). Da uns in diesem Fall nur relative Werte interessieren, werden die Ergebnisse aller Tests auf die „größer ist besser“-Form reduziert und normalisiert (Angaben eines Single-Prozessor-Systems ohne Hyper-Threading werden als Einheit genommen).

Nun, wie Sie sehen, werden hier Intels Versprechen erfüllt: Mit nur einem aktiven Thread entspricht die Leistung jeder der beiden LPs genau der Leistung einer physischen CPU ohne Hyper-Threading. Der untätige LP (sowohl LP0 als auch LP1) wird tatsächlich suspendiert, und die gemeinsam genutzten Ressourcen werden, soweit dies anhand der erhaltenen Ergebnisse beurteilt werden kann, vollständig auf die Verwendung des aktiven LP übertragen.

Daher ziehen wir die erste Schlussfolgerung: Zwei logische Prozessoren sind tatsächlich gleichberechtigt, und die Aktivierung von Hyper-Threading "beeinträchtigt" den Betrieb eines Threads nicht (was an sich nicht schlecht ist). Mal sehen, ob diese Aufnahme „hilft“, und wenn ja, wo und wie?

Wiedergabe. Die Ergebnisse von vier Tests in den 3D-Modellierungspaketen 3D Studio MAX 4.26, Lightwave 7b und A|W Maya 4.0.1 sind aufgrund ihrer Ähnlichkeit in einem Diagramm zusammengefasst.

In allen vier Fällen (für Lightwave - zwei unterschiedliche Szenen) wird die CPU-Last bei Vorhandensein eines Prozessors mit deaktiviertem Hyper-Threading fast konstant auf 100 % gehalten. Bei aktiviertem Hyper-Threading wird allerdings die Berechnung von Szenen beschleunigt (daher hatten wir sogar einen Scherz über CPU-Auslastung über 100 %). In drei Tests sehen wir eine Leistungssteigerung durch Hyper-Threading von 14--18% - einerseits nicht viel im Vergleich zur Zweit-CPU, andererseits aber recht ordentlich, wenn man den "Gratis"-Effekt bedenkt von diesem Effekt. In einem der beiden Tests mit Lightwave ist der Performance-Gewinn fast null (anscheinend wirkt sich die Spezifität dieser Anwendung voller Kuriositäten aus). Aber es gibt nirgends ein negatives Ergebnis, und eine spürbare Zunahme in den anderen drei Fällen ist ermutigend. Und das, obwohl parallele Rendering-Prozesse ähnliche Arbeit leisten und sicherlich nicht gleichzeitig die Ressourcen der physikalischen CPU optimal nutzen können.

Photoshop- und MP3-Kodierung. Der Codec GOGO-no-coda 2.39c ist einer der wenigen, der SMP unterstützt, und er zeigt eine Leistungssteigerung von 34 % gegenüber einem Dual-Prozessor. Gleichzeitig ist der Effekt von Hyper-Threading in diesem Fall null (wir halten einen Unterschied von 3 % nicht für signifikant). Aber im Test mit Photoshop 6.0.1 (ein Skript, das aus einer großen Menge von Befehlen und Filtern besteht) können Sie eine Verlangsamung sehen, wenn Hyper-Threading aktiviert ist, obwohl die zweite physische CPU in diesem Fall 12 % Leistung hinzufügt. Hier ist tatsächlich der erste Fall, in dem Hyper-Threading einen Leistungsabfall verursacht ...

Professionelles OpenGL. Es ist seit langem bekannt, dass SPEC ViewPerf und viele andere OpenGL-Anwendungen auf SMP-Systemen oft langsamer werden.

OpenGL und Dual-Prozessor: Warum sie keine Freunde sind

In den Artikeln haben wir die Leser mehrfach darauf aufmerksam gemacht, dass Dual-Prozessor-Plattformen bei professionellen OpenGL-Tests selten einen signifikanten Vorteil gegenüber Single-Prozessor-Plattformen aufweisen. Darüber hinaus gibt es Fälle, in denen die Installation eines zweiten Prozessors im Gegenteil die Leistung des Systems beim Rendern dynamischer 3D-Szenen beeinträchtigt.

Diese Kuriosität ist natürlich nicht nur uns aufgefallen. Einige Tester umgingen diese Tatsache einfach stillschweigend – indem sie zum Beispiel SPEC ViewPerf-Vergleichsergebnisse nur für Zwei-Prozessor-Konfigurationen lieferten und so Erklärungen „Warum ist ein Zwei-Prozessor-System langsamer?“ vermieden. Andere machten alle möglichen phantasievollen Annahmen über die Cache-Kohärenz, die Notwendigkeit, sie zu warten, den daraus resultierenden Overhead und so weiter. Und aus irgendeinem Grund war niemand überrascht, dass zum Beispiel Prozessoren ungeduldig darauf warteten, die Kohärenz beim OpenGL-Rendering mit Fenstern genau zu überwachen (in seiner „rechentechnischen“ Essenz unterscheidet es sich nicht wesentlich von anderen Rechenaufgaben).

Tatsächlich ist die Erklärung unserer Meinung nach viel einfacher. Wie Sie wissen, kann eine Anwendung auf zwei Prozessoren schneller laufen als auf einem, wenn:

  • es gibt mehr als zwei oder mehr gleichzeitig ausgeführte Programm-Threads (Threads);
  • diese Threads stören sich nicht gegenseitig bei der Ausführung – sie konkurrieren beispielsweise nicht um eine gemeinsam genutzte Ressource wie ein externes Laufwerk oder eine Netzwerkschnittstelle.

Lassen Sie uns nun einen vereinfachten Blick darauf werfen, wie das OpenGL-Rendering aussieht, das von zwei Threads ausgeführt wird. Wenn eine Anwendung, die zwei Prozessoren "sieht", zwei OpenGL-Rendering-Threads erstellt, wird für jeden von ihnen gemäß den Regeln von OpenGL ein eigener gl-Kontext erstellt. Dementsprechend rendert jeder Thread in seinem eigenen gl-Kontext. Das Problem ist jedoch, dass für das Fenster, in dem das Bild angezeigt wird, immer nur ein gl-Kontext aktuell sein kann. Dementsprechend geben die Threads in diesem Fall einfach "der Reihe nach" das erzeugte Bild an das Fenster aus, wodurch ihr Kontext abwechselnd aktuell wird. Unnötig zu erwähnen, dass eine solche "Kontextverschachtelung" im Hinblick auf den Overhead sehr kostspielig sein kann?

Als Beispiel werden wir auch Diagramme der Verwendung von zwei CPUs in mehreren Anwendungen geben, die OpenGL-Szenen anzeigen. Alle Messungen wurden auf einer Plattform mit folgender Konfiguration durchgeführt:

  • ein oder zwei Intel Xeon 2,2 GHz (Hyper-Threading deaktiviert);
  • 512 MB RDRAM;
  • Supermicro P4DC6+ Hauptplatine;
  • ASUS V8200 Deluxe Grafikkarte (NVidia GeForce3, 64 MB DDR SDRAM, Detonator 21.85 Treiber);
  • Windows 2000 Professional SP2;
  • Videomodus 1280 x 1024 x 32 bpp, 85 Hz, Vsync deaktiviert.

Blau und Rot sind die Lastdiagramme von CPU 0 bzw. CPU 1. Die Linie in der Mitte ist das endgültige Diagramm der CPU-Auslastung. Die drei Diagramme entsprechen zwei Szenen aus 3D Studio MAX 4.26 und einem Teil des SPEC ViewPerf-Tests (AWadvs-04).


CPU-Auslastung: Animation 3D Studio MAX 4.26 - Anibal (mit Manipulatoren).max


CPU-Auslastung: Animation 3D Studio MAX 4.26 - Rabbit.max


CPU-Auslastung: SPEC ViewPerf 6.1.2 - AWadvs-04

Dasselbe Muster wiederholt sich in einer Vielzahl anderer Anwendungen, die OpenGL verwenden. Zwei Prozessoren kümmern sich überhaupt nicht um die Arbeit, und die gesamte CPU-Auslastung liegt bei 50-60%. Gleichzeitig wird die CPU-Auslastung für ein Einzelprozessorsystem in all diesen Fällen sicher auf dem Niveau von 100 % gehalten.

Daher ist es nicht verwunderlich, dass viele OpenGL-Anwendungen auf dualen Systemen nicht viel schneller werden. Nun, dass sie manchmal sogar langsamer werden, hat unserer Meinung nach eine völlig logische Erklärung.

Wir können festhalten, dass bei zwei logischen CPUs der Leistungsabfall noch deutlicher ausfällt, was durchaus verständlich ist: Zwei logische Prozessoren stören sich gegenseitig genauso wie zwei physikalische. Aber ihre Gesamtleistung fällt in diesem Fall natürlich geringer aus, so dass sie bei aktiviertem Hyper-Threading noch stärker abnimmt, als wenn nur zwei physische CPUs laufen. Das Ergebnis ist vorhersehbar und die Schlussfolgerung einfach: Hyper-Threading ist wie "echtes" SMP manchmal für OpenGL kontraindiziert.

CAD-Anwendungen. Die vorherige Schlussfolgerung wird durch die Ergebnisse zweier CAD-Tests bestätigt – SPECapc für SolidEdge V10 und SPECapc für SolidWorks. Die Grafikleistung dieser Tests für Hyper-Threading ist ähnlich (obwohl das Ergebnis im Fall eines SMP-Systems für SolidEdge V10 etwas höher ist). Aber die Ergebnisse der CPU_Score-Tests, die den Prozessor belasten, machen nachdenklich: 5-10 % Steigerung durch SMP und 14-19 % Verlangsamung durch Hyper-Threading.

Aber am Ende des Tages erkennt Intel ehrlich das Potenzial für Leistungseinbußen mit Hyper-Threading in einigen Fällen an – zum Beispiel bei der Verwendung leerer Warteschleifen. Wir können nur vermuten, dass dies der Grund ist (eine detaillierte Untersuchung des SolidEdge- und SolidWorks-Codes würde den Rahmen dieses Artikels sprengen). Schließlich kennt jeder den Konservatismus von CAD-Anwendungsentwicklern, die bewährte Zuverlässigkeit bevorzugen und es nicht eilig haben, den Code unter Berücksichtigung neuer Programmiertrends neu zu schreiben.

Fazit oder „Achtung, die richtige Frage“

Hyper-Threading funktioniert, daran besteht kein Zweifel. Natürlich ist die Technologie nicht universell: Es gibt Anwendungen, für die Hyper-Threading "schlecht wird", und im Falle der Verbreitung dieser Technologie wäre es wünschenswert, sie zu modifizieren. Aber ist nicht dasselbe mit MMX und SSE passiert und passiert weiterhin mit SSE2?

Dies wirft jedoch die Frage nach der Anwendbarkeit dieser Technologie auf unsere Realitäten auf. Die Option eines Single-Prozessor-Systems auf Xeon mit Hyper-Threading werden wir sofort verwerfen (oder nur temporär in Betracht ziehen, in Erwartung eines zweiten Prozessors): Selbst 30% Leistungssteigerung rechtfertigen den Preis in keiner Weise Weg - dann ist es besser, einen normalen Pentium 4 zu kaufen. Die Anzahl der verbleibenden CPUs beträgt zwei oder mehr.

Stellen wir uns nun vor, wir kaufen ein Xeon-System mit zwei Prozessoren (z. B. mit Windows 2000/XP Professional). Zwei CPUs sind verbaut, Hyper-Threading ist aktiviert, das BIOS findet gleich vier logische Prozessoren, jetzt heben wir ab ... Stop. Aber wie viele Prozessoren wird unser Betriebssystem sehen? Richtig, zwei. Nur zwei, weil es einfach nicht für eine größere Anzahl ausgelegt ist. Das werden zwei physische Prozessoren sein, d.h. alles wird genauso funktionieren wie mit deaktiviertem Hyper-Threading - nicht langsamer (zwei "zusätzliche" logische CPUs werden einfach anhalten), aber nicht schneller (verifiziert durch zusätzliche Tests, die Ergebnisse werden nicht zitiert). ihre Offensichtlichkeit). Hmm, nicht viel Spaß ...

Was übrigbleibt? Nun, wirklich nicht Advanced Server oder .NET Server auf unserer Workstation installieren? Nein, das System wird alle vier logischen Prozessoren installieren, erkennen und funktionieren. Das ist nur das Server-Betriebssystem, das auf der Workstation, gelinde gesagt, etwas seltsam aussieht (von den finanziellen Aspekten ganz zu schweigen). Der einzig vernünftige Fall ist, wenn unser Xeon-System mit zwei Prozessoren als Server fungiert (zumindest einige Hersteller zögern nicht, Server auf Workstation-Xeon-Prozessoren zu veröffentlichen). Für Doppelarbeitsplätze mit den entsprechenden Betriebssystemen bleibt die Anwendbarkeit von Hyper-Threading jedoch fraglich. Intel befürwortet jetzt aktiv die Betriebssystemlizenzierung basierend auf der Anzahl nicht logischer, sondern physischer CPUs. Die Diskussionen dauern noch an, und im Allgemeinen hängt viel davon ab, ob wir ein Workstation-Betriebssystem mit Unterstützung für vier Prozessoren sehen.

Nun, bei Servern kommt alles ganz einfach heraus. Beispielsweise erkennt ein Windows 2000 Advanced Server, der auf einem Xeon-System mit zwei Sockeln und aktiviertem Hyper-Threading installiert ist, vier logische Prozessoren und läuft reibungslos darauf. Um zu bewerten, was Hyper-Threading für Serversysteme bringt, präsentieren wir die Ergebnisse der Intel Microprocessor Software Labs für Zweiprozessorsysteme auf Xeon MP und mehreren Microsoft-Serveranwendungen.

Eine Leistungssteigerung von 20-30% für einen Zwei-Prozessor-Server „gratis“ ist mehr als verlockend (insbesondere im Vergleich zum Kauf eines „echten“ 4-Prozessor-Systems).

So stellt sich heraus, dass die praktische Anwendbarkeit von Hyper-Threading derzeit nur in Servern möglich ist. Das Problem mit Workstations hängt von der Lösung mit Betriebssystemlizenzierung ab. Obwohl eine weitere Anwendung von Hyper-Threading durchaus real ist – wenn Desktop-Prozessoren Unterstützung für diese Technologie erhalten. Zum Beispiel (stellen wir uns vor), warum ist ein Pentium 4-System mit Hyper-Threading-Unterstützung schlecht, auf dem Windows 2000/XP Professional mit SMP-Unterstützung installiert ist? - von Servern bis hin zu Desktop- und mobilen Systemen.