Deaktivierte Level2-Caches bei AMD und Intel
18. November 2004 / von BlackBirdSR / Seite 1 von 3
Alte Mythen
Die folgende Situation kommt wohl jedem von uns bekannt vor: Ein neuer Chip betritt die Bildfläche. Wenige Stunden später wimmelt es in Foren nur so vor Gerüchten und Halbinformationen, je nach der Informationspolitik des Herstellers. Mit dem rapiden Anstieg von Wissen über die Funktionsweise von Chips ist dies zwar heute nicht mehr so dramatisch wie noch vor einigen Jahren, dennoch ist die Situation prinzipiell immer noch so, da die Hersteller auch heutzutage zumeist nicht sehr freigiebig mit handfesten technischen Informationen sind.
Um so schneller werden nun aus Gerüchten und Spekulationen harte, jedoch unbestätigte Fakten. Manche davon nisten sich recht schnell und dann gleichzeitig auch beharrlich bei uns ein. So auch die oftmals vertretene Meinung, deaktivierte Caches bei Prozessoren wären zwingend defekt. So heißt es des öfteren, das Abschalten des Caches würde CPUs vor der Müllhalde retten.
Nun stimmt es tatsächlich, dass AMD und Intel CPUs mit teilweise abgeschaltetem Level2-Cache unter neuem Namen ausliefern. Im Detail geht uns Usern dann meist die Hälfte des Caches durch die Lappen. Die bekanntesten Vertreter mit deaktivierten Caches sind einige Athlon 64 und Athlon XP Modelle sowie natürlich der Celeron. Gerade Intel stellt mit dem Celeron den Urahn dieser Vorgehensweise zum Verkauf.
Sind nun aber alle diese CPUs mit Defekten in einer der Cachehälften belastet? Aller Wahrscheinlichkeit nach stehen eher komplexe marktwirtschaftliche Gründe hinter diesen Entscheidungen. Wir wollen allerdings gar nicht so tief in die wirtschaftlichen Entscheidungen hinter der Chipfertigung eintauchen. Wir wollen dagegen jedoch behaupten: Weniger defekte Caches und Recycling von schrottreifen Chips, sondern Flexibilität und Kostenersparnis zeigen sich hier bestimmend.
Wie kommen wir auf diese Idee? Nun, gerade für Caches gibt es gute Methoden, um Defekten entgegenzuwirken. Dazu ist es allerdings vorteilhaft, ein wenig über die Hintergründe Bescheid zu wissen.
Wie Defekte im Chip entstehen
Halbleiterfirmen müssen sich mit einer Vielzahl von Defekten abärgern. Ein Teil entsteht bereits beim Design des Chips. Hier ist der Schuldige schnell gefunden. Andere sind auf unreife oder fehlerhafte Fertigungsschritte zurückzuführen. Wie so oft, lassen sich diese Probleme mit Zeit und Geld lösen. Dummerweise gibt noch eine recht unberechenbare Art von Fertigungsdefekten.
Die Herstellung von Halbleiterschaltkreisen legt höchsten Wert auf Reinheit bei Maschinen, Materialien und Luft. Trotzdem lässt es sich nicht vollständig vermeiden, dass im Laufe der Fertigung doch einmal ein Defekt im Wafer oder den Schaltungen entsteht. Bereits ein unscheinbarer Partikel reicht, um eine Schaltung kurzzuschließen und damit zu zerstören.
Dabei ist die Anzahl und Verteilung der Fehler ein rein statistischer Wert. Niemand kann genau vorhersagen, wie viele Fehler auftreten. Auch die Position der Defekte bleibt bis zum Ende unbekannt. Allgemein spricht man von der Defektdichte auf dem Wafer. Wie viele dieser Fehler sich an den Chips vergreifen, liegt letztendlich am Fertigungsprozess. Verschiedene Hersteller, ja sogar einzelne Fertigungsanlagen eines Herstellers, besitzen unterschiedliche Werte für Defektdichten.
Bisher fehlt uns natürlich jegliche Vergleichsbasis für die Häufigkeit dieser Fehler: Was ist gut, wann ist zuviel? Und wer kann am wenigsten dieser Defekte aufweisen? Als erster Anhaltspunkt hierzu kann folgendes gelten: 1995 musste Intel mit 0.5 bis 0.8 Fehlern pro cm² Wafer-Fläche rechnen. Die Werte entstammten übrigens dem Fertigungsprozess des Pentium Pro Level2-Caches. Entsprechenden Werte von Heute gehören zu den bestgehütetsten Geheimnissen der Hersteller. Mit ihnen könnte man die Anzahl an funktionsfähigen Chips der Konkurrenz recht genau bestimmen.
Halbleitergrößen wie AMD und Intel haben ihre Prozesse und Fertigungsanlagen speziell auf ihre Bedürfnisse angepasst. Wir können hier nach einigen Aussagen pauschal von ca. 0.2 bis 0.3 Fehlern pro cm² Wafer-Fläche ausgehen. Damit erreichen AMD und Intel mit die niedrigsten Fehlerraten in der ganzen Industrie - weit vor Herstellern wie TSMC oder IBM. Diese müssen allerdings einen umfassenderen Prozess für eine größere Produktpalette anbieten. Eine Vielzahl von Halbleiterprodukten machen einen universelleren Fertigungsprozess nötig, womit automatisch die Fehlerrate steigt.
Redundanz als teilweise Lösung des Problems
Eigentlich erscheint es doch nur allzu logisch: Ein Chip mit einem Defekt ist funktionsunfähig und landet auf dem Müll - einfach mal so reparieren, ist in der Mikroelektronik nicht drin. Lange Zeit war dies auch der Fall. Einen bestimmten Teil der produzierten Chips konnte man aufgrund dieser Defekte auf keinen Fall mehr benutzen bzw. musste beschädigte Cache-Teile komplett deaktivieren.
Erst das Konzept der Redundanz brachte eine Änderung. Redundanz steht im Allgemeinen für einen Überschuss an Information, der nicht genutzt wird. Im Normalfall ist Redundanz schlecht. Man nutzt mehr Ressourcen, als man wirklich braucht - was teuerer ist als nötig. Allerdings wird Redundanz auch zur Fehlerkorrektur eingesetzt. Im Fall der Computerchips spricht man hier von überschüssigen Schaltungen, die jedoch absichtlich verbaut werden. Wenn man zusätzliche Schaltungen hat, kann man damit Defekte ersetzen.
Reparieren geht also doch? Ja, aber nur begrenzt. Man kann nicht für jede Schaltung im Chip einen Ersatz hinzufügen. Wenn aber große Teile des Chips identisch aufgebaut sind, steigt die Chance, einen Fehler mit einer insgesamt nur geringen Anzahl an redundanten Schaltung ausbessern zu können. An diesem Punkt fällt die Wahl natürlich auf den Cache. Dieser besteht aus ewig lange Reihen und Spalten aus den immer gleichen Schaltelementen.
Man könnte jetzt annehmen, die Probleme der Hersteller wären damit gelöst. Schön wäre es, aber Redundanz lässt sich effektiv eben nur bei Caches anwenden. Trifft ein Defekt auf eine Logikschaltung, muss man den Müllstapel um einen Chip bereichern. Befindet sich der Defekt jedoch im Cache, kommt das Prinzip der Redundanz voll zum tragen.
Cache besteht aus endlos scheinenden Zeilen und Spalten aus Speicherzellen. Innerhalb des Caches sitzen wiederum einzelne Gruppen von redundanten Cachezellen ohne anfängliche Funktion. Beim CPU-Selbsttest wird der komplette Cachespeicher einer Prüfung unterzogen. Ist ein Fehler gefunden, wird er vorgemerkt. Es wird festgestellt, ob eine Ausbesserung möglich ist, und welche redundante Gruppe die Aufgabe übernehmen kann. So können beim anschließend zwingend nötigen Initialisieren (Programmieren) des Caches die defekten Cachezellen ersetzt werden. In den meisten Fällen ist der Chip jetzt gerettet und voll funktionsfähig.
Im Detail werden natürlich keine einzelnen Zellen ersetzt, sondern ganze Reihen davon. Eine gezielte Zelle zu isolieren und deren Arbeit von einer Zelle an einem beliebigen anderen Ort des Chips ausführen zu lassen, gleicht einem Akt der Unmöglichkeit. Der Ausfall einer einzelnen Cachezelle hat vielmehr den Austausch einer ganzen Zellgruppe zur Folge. In der Initialisierungsphase wird jene Gruppe mit dem Defekt übergangen, und eine Redundante stattdessen programmiert.
Allerdings sprechen wir hier nur von relativ wenigen redundanten Gruppen im Chip. Um die Chipfläche und Kosten niedrig zu halten, wird auch die Redundanz, sprich die Anzahl dieser Transistoren, welche für redundante Schaltungen aufgewendet werden, natürlich niedrig gehalten. Es geht hier also um wenige hundert KiloByte zusätzlichem Cache für mehrere MegaByte nominellen Caches. Allerdings ist das bereits ausreichend. Um eine Vorstellung vom Cacheaufbau zu bekommen, hilft eventuell folgendes Bild:
Cache-Organisation: Redundante Zellen sind mit "R" gekennzeichnet
Der Cache selbst ist demnach in sogenannte Subarrays gegliedert, jedes davon mit einer bestimmten Anzahl von Zellgruppen. In den häufigsten Fällen gibt es pro Subarray nur eine redundante Gruppe. Um den Chip nicht zu sehr zu vergrößern, muss hier gespart werden. Es kann in der Regel oft nur ein Fehler pro Subarray korrigiert werden. Durch eine hohe Defektdichte kann die Redundanz also ausgehebelt werden. Bei einer so hohen Defektdichte kann man jedoch sowieso davon ausgehen, dass dann wahrscheinlich auch der Logikteil der CPU beschädigt ist.
Das Auswechseln defekter Cachezellen wird von einem Algorithmus erledigt, der sowohl das Prüfen als auch das Ersetzen gezielt steuert. Durch Redundanz verringert sich zudem die benötigte Zeit, die für das Prüfen der Chips veranschlagt werden muss - und Zeit ist bekanntlich Geld. Insgesamt war man bei Intel 1995 also sehr angetan von dieser neuen Idee. Das dürfte sich auch bei anderen Herstellern bis heute nicht anders verhalten.