Einen Tag vor der offiziellen Vorstellung des AMD Phenom berichteten wir, dass AMD den Phenom 9700 wegen eines Bugs zurückgezogen hat. Die damalige offizielle Erklärung zu diesem Bug lautete:
The Translation Lookaside Buffer (TLB) errata is an L3 protocol issue causing a system hang when running certain client workload applications independent of platform.
Woraus wir (sowie die meisten anderen Publikationen) folgerten, dass es sich um einen Fehler im TLB des Level 3 Cache handelt. Allerdings gab es bereits von Anfang an Stimmen, auch bei versierten Lesern bei uns im Forum (danke masel und larsbo für den Hinweis), dass der Level 3 Cache des Phenom eigentlich gar keinen TLB haben dürfte.
Leider scheint ja der einzige Mann, der bei AMD die Revision-Guides pflegen kann, derzeit im Urlaub zu sein. Aus diesem Grund fehlt das Erratum 298 und dessen ausführliche Beschreibung noch immer in diesem Dokument. Allerdings hat ein kürzlich veröffentlichter Linux-Patch zur Umgehung des TLB-Erratum 298 sowie der Software Optimierungs-Guide für den K10 ab Seite 219 einiges Licht in die eigentliche Ursache gebracht. Demnach liegt es nicht an einem fehlerhaften TLB des Level 3 Cache (dieser besitzt tatsächlich keinen), sondern an einem Fehler im TLB des Level 2 Cache (genau genommen in den TLBs der Level 2 Caches; der Phenom hat ja vier davon, einen je Kern), der in Kombination mit dem Level 3 Cache Protokoll zu einem Absturz führen kann.
Im Detail geht es dabei wohl um ein Timing-Problem. Es scheint ein kleines Zeitfenster nach einem Page-Miss zu geben, in dem es passieren kann, dass Daten aus einem veralteten Eintrag im TLB des L2 in den L3-Cache hinterlegt werden, bevor die tatsächlich aktuelle Version in den L2-Cache geschrieben wurde. Die gepufferten Daten in L2- und L3-Cache sind demnach nicht eindeutig. Geschieht es, dass ausgerechnet in diesem Moment darauf zugegriffen wird, ist der Datensalat perfekt und der Prozessor stürzt ab. Die offizielle Kurzbeschreibung des Bugs steht in der gestrigen Linux-Meldung.
Mit dem bereits beschriebenen BIOS-Update, welches AMD den Mainboard-Herstellern empfiehlt, wird der betroffene Teil des L2-TLB kurzerhand deaktiviert (nicht der komplette L3-Cache, wie man auch gelegentlich liest). Der erwähnte Linux-Patch dagegen geht einen anderen Weg und emuliert die Funktion, welche für das korrekte Setzen der Dirty- und Accessed Bits zuständig ist, kurzerhand per Kernelfunktion.
Diesen Artikel bookmarken oder senden an ...