SEMINAR RECHNERARCHITEKTUR HYPER-THREADING TECHNOLOGY SERGE FOPOUSSI SEMINAR RECHNERARCHITEKTUR
GLIEDERUNG 1. BACKGROUND : Arbeitsweise eines von Neumann-Rechners 2. ENTWICKLUNG VON PROZESSOREN 3. HYPER-THREADING : Die neue Technologie 4. KERN EINES PROZESSORS HYPER-THREADING 5. VERGLEICH ZWISCHEN EINEM PROZESSOR OHNE UND MIT HT FUNKTIONALITÄT 6. VERGLEICH DER LEISTUNGEN VON HT UND SMP SEMINAR RECHNERARCHITEKTUR
BACKGROUND : Arbeitsweise eines von Neumann-Rechners Ein Rechner verarbeitet eine Menge von Daten, diese werden gespeichert und nach einem gewissen Schema rechnerintern zwischen verschiedenen Modulen hin und her transportiert. SEMINAR RECHNERARCHITEKTUR
BACKGROUND : Architektur eines von Neumann-Rechners Ein zentralgesteuerter Rechner besteht aus drei Grundbestandteilen: Datenbus CPU ROM RAM Speicher IO Adreßbus SEMINAR RECHNERARCHITEKTUR
BACKGROUND : Arbeitsweise eines von Neumann-Rechners 1. PC ---> MAR 2. #(Add.) ---> MBR 3. MBR ---> IR 4. Bitfolge wird decodiert. 5. Inhalt vom PC wird aktualisiert. 6. Befehl wird ausgeführt 7. Initiierung der Fetch-phase für den nächsten auszuführenden Befehl. Hier spielt die Zeit, welche benötigt wird zum Lesen aus dem Speicher, zur Interpretation und zum Ausführen des Befehls eine große Rolle. SEMINAR RECHNERARCHITEKTUR
ENTWICKLUNG VON PROZESSOREN In der Vergangenheit wurde Leistungssteigerung durch: Höhere Taktrate Berechnung von mehr Instruktionen pro Zeiteinheit Unterbrechung des I.Flußes in der Pipeline durch Cache Misses, Interrupts oder falsche Sprung-vorhersagen. Großere Caches Vergrößerung der L1 und L2 Caches Prozessor wird noch größer, komplexer, teurer. Steigerung der Schwierigkeiten Taktraten und Latenzeiten zu erreichen. Prefetch in der Mikroarchitektur von Prozessoren ermöglicht. SEMINAR RECHNERARCHITEKTUR
ENTWICKLUNG VON PROZESSOREN Eine andere Möglichkeit die Geschwindigkeit eines Prozessors zu steigern ist ILP (Instruktion Level Parallelism). Man versucht die Anzahl der ausgeführten Instruktionen pro Taktzyklus zu erhöhen. Mehrere Ausführungseinheiten: Infos werden parallel ausgeführt. Skaliert besonders gut, solange unabhängige Befehlen der CPUs zur verfügung stehen. Schlechte Skalierung, solange das Programm (In Oder Execution) ausgeführt werden müsst. (Beispiel: Pentium 1). Besser OoO (Out of Order): Infos zur Verarbeitung vorher sortiert. CPU geht effektiver zur Sache Ressource liegen brach, solange sie nicht von einem Thread gebraucht werden. (Beispiel: Pentium Pro) SEMINAR RECHNERARCHITEKTUR
ENTWICKLUNG VON PROZESSOREN Zusätzlich Höhere Taktrate bedeutet Höhere Temperatur Hersteller von Motherboard müssen sich an immer höherem Energieverbrauch der CPU anpassen. Bessere Techniken müssen entwickelt werden. Bestehende Ressourcen des Prozessors müssen effektiver ausgenutzt werden: Verbesserung der Pipeline in der Mikropro.Architekur. HYPER-THREADING.
HISTORY HT. kommt aus dem Serverbereich, wo Rechnersysteme mit mehr als einem Prozessor zum Einsatz kommen. Es ist hier möglich zwei Threads pro Taktzyklus zu verarbeiten. Ein Thread : Kleinster ausführbarer Teil eines Tasks. Ein Task ist ein sehr kleiner Teil eines Programms, den ein Prozessor auf einmal bearbeiten kann. Thread-Programmierte Anwendungen profitieren davon. Man kann von einer Verdoppelung der Leistung sprechen.
DIE NEUE TECHNOLOGIE HT-Technologie ist eine Technik, die SMT (Simultaneous Multi- Threading ) in einem einzigen physikalischen Prozessor ermöglicht. Der physikalische Prozessor spaltet sich in zwei logischen / virtuellen Prozessoren auf. Die virtuellen Prozessoren teilen sich ein Teil der physischen Ausführungs-ressourcen. Das Architectural State (Umsetz-Logik) für jeden Prozessor einzeln ist somit doppelt vorhanden. Ziel: Vorhandene Ressourcen effektiver ausnutzen.
DIE NEUE TECHNOLOGIE
KERN EINES PROZESSORS HYPER-THREADING Jeder Prozessor besitzt sein eigenes APIC (Advanced Programmable Interrupt Controller ) Trace Cache (L1 Cache), L2 Cache, Queues und Key-Buffers werden geteilt.
KERN EINES PROZESSORS HYPER-THREADING Two sets of next-instruction-pointers(ip) independently track the progress of 2 software Threads executing. IP TC
KERN EINES PROZESSORS HYPER-THREADING Es wird beim Trace Cache den Zugriff jedem Prozessor abwechselnd gewährt ( jedem Takt), solange die beiden Prozessoren Zugriff auf dem Cache haben möchten. Arch States Arch States The TC stores decoded Intructions (uops) TC
KERN EINES PROZESSORS HYPER-THREADING Beim TC Miss erhält ITLB (Intruction Translation Lookaside Buffer ) die Anfrage vom TC und übersetzt die IP-Adresse zu einer physischen Adresse. Die Anfrage wird an L2 Caches geschickt und der entprechende Bytes-Block wird zurückgegeben.
KERN EINES PROZESSORS HYPER-THREADING Nachdem die uops aus dem TC geholt werden, landen sie in der uops-queues. Diese Schlange entkoppelt das vordere Ende (In Oder Execution Engine) vom hinteren (Out Of Order Execution Engine). Das OOO (Out of Order) Execution Engine hat folgende Funktionen : Allocation Register Renamming Scheduling Execution
KERN EINES PROZESSORS HYPER-THREADING
KERN EINES PROZESSORS HYPER-THREADING Wenn einer der Prozessoren aufgrund eines Cache-Miss blockiert wird, steht der gesamte Trace Cache dem anderen Prozessor zu Verfügung. Das OOO (Out of Order) Execution Engine verfügt über mehrere Zwischenspeicher zum: Wiederordnen (Reorder) Nachverfolgen (Tracing) Aufteilung (Sequencing) von Operationen. Der Allocator füllt diesen Zwischenspeicher auf.
KERN EINES PROZESSORS HYPER-THREADING Wenn der Allocator seine Arbeit vollendet hat, landen die uops in zwei anderen Queues. Diese Queues sind so partitionniert, dass jeder virtuelle Prozessor maximal die Hälfte aller Einträge für sich verbuchen kann. Befinden sich dekodierte Instruktionen in der µop- Queue nur für einen virtuellen Prozessor, versucht der Allocator für diesen Prozessor jedem Takt Ressource zuzuweisen.
KERN EINES PROZESSORS HYPER-THREADING Aus diesen Queues bedienen sich fünf Scheduler abwechselnd aus dem Topf jedes virtuellen Prozessors, um die Ausführungseinheiten (ALU, FPU...) Aufgaben zur Verarbeitung zuzuteilen.
KERN EINES PROZESSORS HYPER-THREADING Nach der Ausführung werden die uops in ROB (Re- Order Buffer) gespeichert. ROB entkoppelt die Ausführungsenheit von der Retire Modul. Die Hälfte von ROB (Re-Ordner Buffer), Load und Store Buffers werden jedem virtuellen Prozessor zugeteilt.
KERN EINES PROZESSORS HYPER-THREADING
VORTEILE VOM HT Durch diese Verlängerung der Pipeline : Werden die Arbeitslast auf die einzelnen Stufen der Pipeline stärker aufgeteilt. Diese Aufteilung ermöglicht die Verhinderung von Hotspots im Prozessor, wie eine bessere Verteilung der Abwärme im gesamten Prozessoren. Die Schaltzeiten pro Pipeline-Stufe werden kleiner ( Das Signal benötigt weniger Zeit vom Anfang zum Ende einer Pipeline-Stufe.
NACHTEILE VON HT Durch diese Verlängerung der Pipeline : Wird falsche Sprungvorhersage deutlich anfälllig. Die Zeit zum Leeren und Wieder-Füllen der Pipeline verlängert sich. Die Pro-Mhz-Leistung sinkt entsprechend. Beispiel: Pentium 4 mit HT. DER NACHTEIL DER NIEDRIGEREN PRO-MHZ-LEISTUNG IST KLEINER ALS DER VORTEIL DER HÖHEREN TAKTLEISTUNG.
VERGLEICH ZWISCHEN EINEM PROZESSOR OHNE UND MIT HT FUNKTIONALITÄT Beide Threads werden genauso schnell berechnet, wie der erste auf dem herkommlichen Prozessor.
VERGLEICH DER LEISTUNGEN VON HT UND SMP
VERGLEICH DER LEISTUNGEN VON HT UND SMP Es gibt zwei Variante von Mehr-Prozessor-Systemen : SMT (Simultaneous Multithreading : HT) SMT bedeutet 2 oder mehrere virtuelle Prozessoren in einem System. Damit erreicht man eine Leistungssteigerung von bis zu 35 % ohne zusätzliche spezielle PC Komponente. Programme müssen angepasst werden. 2. SMP (Symetrische Multi-Processing) << Mehr- Prozessor-System>> SMP bedeutet 2 oder mehrere logische Prozessoren in einem System. Damit erreicht man eine Leistungssteigerung von bis zu 90 %. Es wird dafür ein spezielles Motherboard benötigt, welches das Doppelte kostet, als ein Motherboard für Single Prozessor System. Schlechtes Preis/Leistungsverhältnis. Programme müssen angepasst werden.
Zusammenfassung Eine CPU mit HT besteht weder aus 2 physischen Prozessoren, noch werden Anwendungen doppelt so schnell ablaufen. Es ist Aufgabe des Betriebssystems, anfallende Arbeiten auf die beiden virtuellen Prozessoren zu verteilen. Da die meisten Anwendungen nicht threaded-programmiert sind, kann das BS nicht sinnvoll die Rechenlast verteilen. Dafür ist es aber möglich Multitasking zu betreiben ohne in den Idle Modus gelanden zu müssen. HT versucht die Belegung von FPU und andere Units des Prozessors durch den aktuell bearbeitenden Thread zu optimieren, indem ein damit bestückter Prozessor durch seine zweite Allocator Unit zwei Threads parallel laufen läßt.
Zusammenfassung Vielen Dank für Eure Aufmerksamkeit! Quelle: http://www.thors-hardware.net/new_page/tests/systeme/hyperthreading.html http://www.computerbase.de/artikel/hardware/prozessoren/was_hyperthreading/ http://www.google.de/search?q=cache:rfaracclu5gj:www.cs.wisc.edu/~david/courses/cs752/reader/koufaty.pdf+hyper THREADING+TECHNOLOGY++IN+THE+NETBURST++MICROARCHITECTURE&hl=de http://www.informatik.uni-bremen.de/agra/ger/lehrmat.php?id=19 http://monet.unibas.ch/~guggisbe/kurs/lek1/vonneumannmod.htm http://www.3dcenter.org/artikel/2004/02-04.php http://www.wissen.de/xt/default.do?searchtype=topic&menuname=suche&query=thread