AMD Am29000

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
AMD 29000 Microprocessor
AMD 29030.

Der AMD 29000, oft einfach auch 29k, war eine populäre Familie von 32-bit-RISC-Mikroprozessoren entwickelt von AMD. Die AMD 29000 waren zeitweise die populärsten RISC-Chips auf dem Markt, vielgenutzt in Laserdruckern von vielen Herstellern. Ende 1995 verwarf AMD die Entwicklung des 29k, weil das Entwicklungsteam zur Unterstützung der PC-Sparte versetzt wurde. Der Rest von AMDs Embedded-Geschäft wurde zur Embedded-186-Familie der 80186-Abkömmlinge neu ausgerichtet. Der Großteil von AMDs Ressourcen wurde auf das Hochleistungs, x86-Klon-Geschäft konzentriert, das viele Ideen und Teile des letzten 29k nutzte, um den AMD K5 zu produzieren.

Der 29k entwickelte sich vom Berkeley RISC-Design, das auch Sun SPARC und Intel i960 beeinflusste. Ein Trick in allen von der Berkeley abgeleiteten Chip-Designs ist das Konzept des Registerfensters: einer Technik, die benutzt wird, um Prozeduraufrufe signifikant zu beschleunigen. Die Grundidee ist das Benutzen einer großen Anzahl von Prozessorregistern als Stack, die während einem Aufruf lokale Daten in einen Registersatz lädt und diese als "dead" markiert, wenn die Prozedur beendet ist. Werte, die von den Routinen zurückgegeben werden, werden in der "global page" platziert, den oberen acht Registern in SPARC. Es ist interessant anzumerken, dass das konkurrierende frühe RISC-Design der Stanford University, Stanford MIPS, auch dieses Konzept beachtete, jedoch wurde schließlich entschieden, dass fortgeschrittenere Compiler ein effizienteres Nutzen von Allzweckregistern ermöglichen, als festverdrahtete Registerfenster, was sich über die Jahre als richtig erwies.

Im ursprünglichen Design von SPARC und i960 gab es eine feste Fenstergröße. Eine Routine, die nur eine lokale Variable nutzte, würde gleich acht Register des Prozessors nutzen und damit diese kostbare Ressource verschwenden. Der 29k nutzt dagegen eine variable Fenstergröße. In diesem Beispiel würden nur zwei Register genutzt, einer für die Variable, der andere für die Rückgabeadresse. Auch fügte der 29k mehr Register, einschließlich der 128-Bit-Register für den Prozedur-Stack, als auch 64 mehr für globalen Zugang. Zum Vergleich: Der SPARC hatte insgesamt 128 Register. Diese Änderungen, kombiniert mit einem guten Compiler, führten zum Besten aus beiden Welten an Leistung für Prozeduraufrufe, während man immer noch genug Register für andere Arbeiten zur Verfügung hat.

AMD 29040

Ein weiterer, nicht so außergewöhnlicher Unterschied zu SPARC besteht darin, dass der 29k keine Zustandscode-Register enthielt. Jedes Register konnte für Zustandscodes genutzt werden, was die Zustandssicherung vereinfacht, jedoch zum Preis von eventuell komplizierterem Code geschieht. Ein Befehlspuffer für bis zu 16 Instruktionen wurde genutzt, um die Leistung bei Sprüngen zu erhöhen. Der 29k enthielt keine Sprungvorhersage, sodass eine Verzögerung entstand, sobald ein Sprung ausgeführt wurde (auch war der 29k ursprünglich nicht superskalar, sodass er nicht, wie in anderen Designs üblich, "beide Seiten" ausführen konnte). Der Puffer verminderte dies, indem er vier Instruktionen der "anderen Seite" des Abzweigs speichern konnte, der sofort laufen konnte, während der Puffer mit Instruktionen aus dem Speicher wiederaufgefüllt wird.

Der erste 29k erschien 1988, mit eingebauter MMU, wobei eine Gleitkommaeinheit erst mit dem 29027 kam. Der 29005 war eine abgespeckte Version. Die Serie wurde aufgewertet mit dem 29030 und dem 29035, die einen 8 KB bzw. 4 KB großen Befehls-Cache enthielten. Ein anderes Update integrierte die FPU direkt auf dem Die und fügte 4 KB Datencache hinzu, woraus der 29040 entstand.

Die letzte Allzweck-Version war der 29050, welcher auch bessere Gleitkommaleistung als ältere Versionen besaß.

Einige Teile des 29050-Designs wurden als Basis für den AMD K5, einen x86-kompatiblen Prozessor, genutzt. Die FPU des 29k wurde hierfür unverändert genutzt, während der Rest des Kerndesigns zusammen mit komplexem Microcode genutzt wurde, um Maschinenbefehle der x86-Architektur zur Laufzeit in 29k-Befehle zu konvertieren.

Weblinks[Bearbeiten]

 Commons: AMD Am29000 – Sammlung von Bildern, Videos und Audiodateien