Von Andreas Buschmann
Nach dem Motto, wir wissen alles besser als die Hersteller, hier ein kurzer Abriß, wie man in den nächsten Jahren PCs bauen kann, die mehr Performance haben als PCs heute.
Erst mal vorab, ich bin voreingenommen, und mag PCs nicht so besonders. Ich finde die Architektur häßlich. Trotzdem bin ich der Meinung die PC Architektur hat noch Reserven:
Ich beschäftige mich hier primär mit PC Servern, da ich mich damit besser auskenne als mit Spiele Rechnern.
Erst mal einige Limits:
- Die Taktfrequenz bei x86 CPUs ist wie bei allen anderen CPUs an ein oberes Limit im Bereich 3-4GHz gestoßen. Wenn man versucht eine CPU schneller zu takten wird sie zu heiß.
- Die mögliche Leistung, die man zuverlässig kühlen kann ist seit 10 Jahren auf 100-130 Watt pro Sockel beschränkt. Wenn man mehr Leistung verwenden will, braucht man eine Wasserkühlung, die das komplette Rechnersystem sehr viel komplexer macht.(Ich weiß das die (Wasser-)Kühlsysteme für Übertakter noch bezahlbar sind, aber wenn man Server bauen will, die mit Wasser gekühlt werden, und die zuverlässig sein sollen, muß das gesamte Serverdesign sowie das Rackdesign darauf ausgerichtet sein.)
- Die Strukturbreite hat heute 32nm erreicht (für Teile der Chips). Ein Verkleinerung auf 25nm bzw. 23nm ist in Arbeit.Für eine Verkleinerung auf 18nm wird geforscht, aber die UV Lithographie stößt an ihr Limit, und muß vermutlich durch eine andere Technik ersetzt werden. Damit werden die Produktionsanlagen für die 18nm Technik wieder sehr viel teurer als die z.Z. genutzten Produktionsanlagen.d.h. u.U. kann nur ein Konsortium aus IBM + Intel + weiteren Herstellern es sich überhaupt leisten eine solche Anlage zu bauen.Oder es dauert einfach deutlich länger als bisher, bis eine Anlage für die nächst kleinere Technologie bezahlbar wird.
d.h. ich nehme an, daß es in nächster Zukunft eine Strukturbreite geben wird, die etliche Jahre lang nicht durch die nächst kleinere Strukturbreite abgelöst wird.
- Alle Server heute, und insbesondere alle PC basierenden Server sind limitiert über die Zeit in der ein Wort aus dem RAM geholt werden kann.
Ein RAM Zugriff dauert etwa 100-200 CPU Zyklen.
Ein L2 Cache Zugriff dauert etwa 25 CPU Zyklen.
Ein L1 Cache Zugriff dauert etwa 10 CPU Zyklen. - Alle Server heute, und insbesondere alle PC basierenden Server sind limitiert über die Bandbreite, mit der Daten aus dem RAM gelesen werden können.
Welche Optionen gibt es jetzt im Rahmen dieser Limits:
- Erhöhung der Bandbreite zum RAM: Jetzt wo der RAM Controler bei AMD und Intel wieder auf den CPU die gewandert ist, gibt es die Möglichkeit mehrere komplette RAM Anbindungen auf einem CPU die zu implementieren.Ein Beispiel ist die Sun T2000, die vier komplette DDR2 RAM Anbindungen hat, die jeweils mit zwei oder vier Modulen bestückt werden können.Mehrere RAM Anbindungen auf einem CPU die zu implementieren ist möglich, und vervierfacht die Bandbreite zum RAM, ist aber kostspielig:
- Die vielen zusätzlichen Pins benötigen Fläche auf dem CPU die. Dazu muß man entweder den CPU die vergrößern (teuer), oder andere Komponenten weglassen. (Verkleinerung des Cache oder 4 CPU Kerne statt 6 Kerne.)
- Die vielen zusätzlichen Pins benötigen Platz auf dem Mainboard oder dem CPU Board. d.h. die Anzahl der Layer auf dem Board kann sich verdoppeln. Sun hat für das CPU Board der T2000 ein 24 Layer Board benötigt, und das Mainboard in ein CPU Board und ein I/O Board geteilt, wobei das letztere nur 12 Layer benötigte.Mehr Layer machen ein Motherboard deutlich teurer.
- Die vier RAM Anbindungen müssen immer alle gleich bestückt sein, sonst funktioniert das Interleaving nicht.Um die Komplexität der RAM Controller etwas zu vermindern, müssen alle RAMs gleich groß sein, und alle das selbe Timing haben.Üblicherweise ist sind nur zwei Ausbaustufen möglich:
– Eine RAM Bank an jedem der RAM Controller bestückt
– Zwei RAM Bänke an jedem der RAM Controller bestückt
und beide Bänke müssen gleich bestückt sein.d.h. es können nur eine sehr eingeschränkte Auswahl an RAM Konfigurationen in einem Server unterstützt werden.
d.h. für ein RAM Upgrade müssen ggf. alle RAM Module ersetzt werden.
Sun hatte damals mit der T1000 einen Server auf den Markt gebracht, bei dem zwei von den vier RAM Controlern deaktiviert waren. Möglicherweise wurden dazu Ausschuß CPUs verwendet, bei denen nicht alle RAM Anbindungen funktioniert haben.
- Dies bringt höhere Kosten für die längere (Vor-)Finanzierung der CPUs, und für die Lagerhaltung von mehr montierten Servern mit sich. (um verschiedene CPU Geschwindigkeiten liefern zu können.)
Die hohe Anzahl von Pins macht es u.U. notwendig, daß die CPU auf dem Motherboard oder dem CPU Board verlötet ist.
- Das bringt im PC Geschäft, wo die CPUs einen hohen bis merklichen Anteil am Endpreis eines Servers haben, das Problem mit sich, daß die CPU eher ins System integriert werden muß, als wenn sie gesteckt würde.
- Für diese höheren Kosten bekommt man nun ein System mit der vierfachen RAM Bandbreite, wie einen z.Z. üblichen PC Server. d.h. im besten Fall die vierfache Leistung, ggf. auch die vierfache Menge an verfügbarem RAM.
- Die große Frage ist, lohnt sich das finanziell für den Anbieter? Oder ist das ein Nieschenprodukt?
- z.Z. kann ein Teil dieses Marktes bedient werden, indem der User einen vier Sockel Server kauft statt einen single Sockel Server; bzw. einen acht Sockel Server statt einen zwei Sockel Server.
- Der große Vorteil dieser Option ist, daß sie keine Anpassung am Betriebssystem erfordert.
1-2 10GBit Ethernet Interfaces auf die CPU verlegen:
Der Platzbedarf für diese Interfaces ist deutlich kleiner als für einen RAM Controller, d.h. eine kleine Verkleinerung des Cache oder eine kleine Vergrößerung der Chipfläche könnte ausreichen.
- Das lohnt sich aber nur für Server, die diese 10GBit Interfaces auch benötigen.
- Die CPU wird dabei immer mehr zu einem SOC (System on a Chip), da high speed Interfaces vom Bus in die CPU selbst wandern.
- Mit dieser Änderung bleibt auf dem Bus mehr Bandbreite für den Plattenzugriff oder für weitere 10GBit Ethernet Interfaces frei.
- Hier wird nicht der komplette Ethernet Controller in die CPU integriert, sondern nur die Teile, die sich problemlos in CMOS Technik fertigen lassen. Der PHY ist immer ein extra Chip, der in einem anderen Prozeß gefertigt wird als die CPU.
- Diese Option erfordert ggf. einen neuen Treiber für 10GBit Ethernet, ggf. reicht aber eine Modifikation an einem vorhandenen Treiber aus.
Das größte Problem mit dieser Option ist, daß ein neuer Sockel erforderlich ist.
Einführung einer Kontext ID in der CPU:
Eine CPU ohne Kontext ID muß beim einem Kontextwechsel den Cache (wenn virtuell) und die TLB Einträge verwerfen. Bei der PC Architektur werden physikalische Adressen gecached, d.h. nur die TLB Einträge müssen gelöscht werden. Das neu Laden der TLBs kostet aber schon genug Zeit, um eine PC CPU egal ob von Intel, AMD oder VIA für harte Echtzeit Anwendungen unbenutzbar zu machen.
Eine Kontext ID ist eine kleine Zahl, die mit einem Kontext assoziiert wird, und Bestandteil eines TLB oder Cache Eintrags ist. Eine typische Größe ist 8 Bit für 15 Kontexte oder 10 Bit für 63 Kontexte. Da mittlerweile alle PC CPUs Hyperthreading können sind in der Regel 8 zusätzliche Bits ausreichend um genug Kontexte zu unterstützen.
Funktion: Jedem Prozeß, der vom Betriebssystem lauffähig gemacht wird, wird eine Kontext ID zugewiesen und in das Kontext ID Register geladen. (00 oder FF) steht für ohne Kontext ID. Wenn die CPU jetzt eine TLB Eintrag neu lädt (oder bei virtuellem Cache eine Cache Zeile), dann wird dem Verwaltungs Eintrag für diesem TLB Eintrag (oder Cache Zeile) die Kontext ID hinzugefügt. Bei einem Vergleich einer Adresse mit einem TLB Eintrag wird die Adresse logisch um die Kontext ID verlängert. Das bewirkt, das nur Adressen mit der selben Kontext ID matchen. Der Vorteil ist, daß bei einem Prozesswechsel nicht die komplette TLB invalidiert werden muß, sondern daß TLB Einträge für mehrere Prozesse gleichzeitig in der CPU bleiben können. Damit werden Prozesswechsel schneller.
Wenn ein Prozeß lauffähig gemacht werden soll, und keine freien Kontext IDs mehr vorhanden sind, muß mindestens eine Kontext ID recyclet werden. Dazu sind Befehle erforderlich, die entweder die ganze TLB löschen, oder alle Einträge mit einer bestimmten Kontext ID. Danach müssen die TLBs für den neuen lauffähigen Prozeß neu aus dem RAM geladen werden.
- Vorteil: Prozesswechsel werden schneller.
- Vorteil: Applikationen müssen nicht angepaßt werden.
- Nachteil: Alle Betriebssysteme müssen angepaßt werden.
- Der Entwicklungsaufwand ist nicht ganz klein, und die Verifizierung des Memory Management ist aufwendig.
- Bei der Produktion entstehen keine höheren Kosten, da die benötigte Fläche eher klein ist.
- Vorteil: Wenn man die Kontext ID einmal hat, kann man auch darüber nachdenken virtuell adressierten Cache zu verwenden. Der hat aber so große Auswirkungen auf das Memory Modell, daß man dabei die Rückwärtskompatibilität für Software verliert.