Doping für CPUs — Möglichkeiten der Leistungssteigerung
Neue und alte Möglichkeiten der Leistungssteigerung — per Hardware (SMT Fortsetzung)
Simultaneous Multi-Threading (Fortsetzung)
Da eine detaillierte Abhandlung von Hyper-Threading den Rahmen dieses Artikels sprengen würde, werde ich mich auf die Eckdaten beschränken, besonders auf den Unterschied zwischen einem Prozessor mit Hyper-Threading und einem ohne Hyper-Threading.
Caches
Die Caches werden gemeinsam benutzt, das heißt jedem Prozessor steht effektiv lediglich der halbe Cache sowie die halbe Bandbreite zu. Jedoch muss man bei den Caches unterscheiden zwischen dem L1 Trace Cache sowie allen weitern Caches (L1 Data Cache, L2 Cache, L3 Cache).
Der L1 Trace Cache ist der Ersatz für den ursprünglich L1 Instruction Cache genannten Teil der L1 Cache Struktur. Im Gegensatz zu diesem, speichert der Trace Cache jedoch die bereits decodierten µOps ab. Prinzipiell ein hervorragendes Vorgehen, jedoch aufgrund der kleinen Größe des L1 Trace Cache (Intel spricht von 12.000 Einträgen, was etwa 8 KB entspricht; zum Vergleich: Der AMD Athlon XP hat 64KB L1 Code Cache) stark ausgebremst. Bei zwei logischen Prozessoren sieht die Situation noch deutlich drastischer aus, schließlich stehen hier jedem logischen Prozessor nur noch 6.000 Speicherplätze für µOps im wichtigsten aller Caches zu. Jeder der logischen Prozessoren verfügt über einen eigenen, vom anderen unabhängigen Zeiger in den Trace Cache, so dass Konflikte von Haus aus vermieden werden.
Versuchen beide logische Prozessoren gleichzeitig auf den L1 Trace Cache zuzugreifen, so wird ihnen abwechselnd Zugriff gewährt. Auch hier wird ein vorhandenes Nadelöhr nochmals verengt, schließlich kann der L1 Trace Cache grade mal drei µOps pro Taktsignal an einen Prozessor weitergeben, was sich bei zwei logischen auf theoretische 1,5 µOps pro Taktsignal verringert.
Wenn ein logischer Prozessor sich im Stillstand befindet oder keine Daten aus dem L1 Trache Cache benötigt, so hat der andere die volle Bandbreite und Zugriffszeit zur Verfügung.
Der L1 Data Cache, der L2 Cache sowie der L3 Cache hingegen, können von beiden logischen Prozessoren gemeinsam genutzt werden und alle Einträge, unabhängig davon welcher logische Prozessor den Eintrag gemacht hat, von allen logischen Prozessoren gelesen werden. Logischerweise sind hierdurch Konflikte vorprogrammiert, jedoch wurde hier seitens Intel eiskalt kalkuliert: Man nimmt bewußt den eventuell durch Konflikte verursachten Performanceverlust in Kauf, rechnet jedoch mit einem durch die gemeinsame Nutzung höheren Leistungsgewinn. So kann beispielsweise ein logischer Prozessor bereits die Daten aus dem Speicher in den Cache laden, die der andere in Kürze benötigen wird. Bei Server Applikationen ist dies übrigens ganz normales Verhalten (siehe auch Cache-Prefetch Logik des IBM Power4) und aufgrund der Tatsache, dass der Xeon MP auf den Servermarkt abzielt, ist diese Lösung vermutlich die geschickteste.
Problematisch wird die Angelegenheit beim Pentium 4 HT, da dieser auf dem SOHO-Markt abzielt. Wie er sich in der Praxis bewähren wird, muss sich jedoch erst noch zeigen.