Neue und alte Möglichkeiten
der Leistungssteigerung - per Hardware (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.
Diesen Artikel bookmarken oder senden an ...