Der Motorola Coldfire: Stroh- oder Lauffeuer?

Das Projekt Pegasus ist der neue Hoffnungsträger der Atari-Welt. Der Nachfolger des Hades basiert auf einer CPU, die im Desktop-Bereich noch relativ unbekannt ist. Matthias Alles stellt uns die 68k-Coldfire-Familie genauer vor und beleuchtet ihre Möglichkeiten zum Einsatz im Atari-Environment.

Als 1994 der 68060 auf den Markt kam, war längst klar, dass dies der letzte Vertreter der mittlerweile 15 Jahre alten 68k-Familie sein sollte. Es standen bereits zwei weitere Prozessorfamilien in den Startlöchern, um die weit verbreitete Familie abzulösen. Zum einen durfte man den ersten von Motorola, IBM und Apple entwickelten PPC (Power Performance Chip) 601 bewundern, der insbesondere dem noch jungen Pentium Paroli bieten sollte. Zum anderen wartete der Coldfire darauf die 68k-Familie mehr und mehr aus dem Segment der Embedded Controller zu verdrängen.

68k goes Coldfire...

Bei den neuen Familien war gemeinsam, dass sie das ausgediente CISC-Modell (Complete Instruction Set Computer) durch das wesentlich schnellere und kompaktere RISC-Modell (Reduced Instruction Set Computer) ersetzten. Ging man in der Anfangszeit der Prozessoren noch davon aus, dass deren Leistungsfähigkeit vom Umfang des Befehlssatzes abhinge, stellte sich später heraus, dass es wesentlich effizienter ist weniger Befehle zu implementieren, die dafür jedoch schneller ausgeführt werden können. Der Prozessor hat schlichtweg weniger Ballast mitzuschleppen als die CISC-Prozessoren, wozu die 68000er zählen.

Um für den Coldfire herauszufinden, welche Befehle sinnvoll sind, hat man den Quelltext von vielen 68k-Programmen herangezogen und untersucht, welche Befehle am häufigsten benutzt werden. Diese wurden dann der ISA (Instruction Set Architecture) des Coldfire hinzugefügt, während selten genutzte Befehle und Adressierungsarten ausgemustert wurden. Von 110 Befehlen (ohne FPU) und 18 Adressierungsarten beim 68060 sind noch 66 Befehle und 12 Adressierungsarten beim Coldfire übriggeblieben. Überraschenderweise ist ein Großteil der Befehle des Coldfire zu denen der 68er binärkompatibel, auch das Verhalten ist gleich.

Um aber hier von der Möglichkeit nativ laufender Atari-Programmen zu reden, ist sicherlich übertrieben. Es ist allerdings richtig, dass man sich eine Menge Emulation sparen kann: Auch der Coldfire verfügt über die acht Daten-und acht Adressregister. Im User-Mode sind die zur Verfügung stehenden Register sogar identisch - abgesehen von den MAC-Registern, die der Coldfire zusätzlich bietet. Um nun schließlich Atari-Software auf diesem zum Laufen zu bringen, gäbe es zwei Möglichkeiten, die die Firma MicroAPL Ltd. im Internet kostenlos zur Verfügung stellt: Die erste Möglichkeit (PortASM/68k) konvertiert das 68k-Assembler-Programm in den Coldfire-Maschinencode. Hin und wieder können hierbei jedoch Probleme auftauchen, sodass man schnell selbst Hand anlegen muss. Für die zweite Möglichkeit gibt es die CF68KLib, die schlichtweg eine Emulation darstellt. Sobald der Coldfire auf einen nicht zu handhabenden Befehl trifft, wird eine Ausnahmebehandlung (Exception) ausgelöst. In diese eingeklinkt wandelt die Bibliothek den für den Coldfire unbekannten Befehl in eine Reihe von ihm verständlichen Befehlen um. Nur in ganz wenigen Ausnahmefällen funktioniert dies nicht, da die Befehle auf dem 68k und dem Coldfire zwar binär identisch sind, aber das Verhalten leicht unterschiedlich ist. Dann muss das auszuführende Programm vorher leicht modifiziert werden. Die Geschwindigkeit der Emulation hängt hauptsächlich davon ab, wieviele Befehle tatsächlich emuliert werden müssen und dürfte aufgrund der vielen identischen Eigenschaften beider Prozessorfamilien als äußerst hoch angesiedelt werden.

Who is who?

Wie schon bei den 68ern, so gibt es auch vom Coldfire mehrere Generationen, die bis auf eine als Ersatz für eine 68k-CPU eigentlich nicht in Frage kommen. Der erste Vertreter besitzt die Bezeichnung MCF5102. Dieser ist als Übergang von der 68k-Familie zum Coldfire gedacht, da er sowohl in der Lage ist die Befehle des 68EC040 als auch die Coldfire-Befehle auszuführen. Um einen 68060 zu ersetzen ist dieser jedoch nicht geeignet, da die Performance mit 36 MIPS bei 33 MHz eher ein großer Rückschritt wäre. Als zweites kommen die Coldfire-Modelle mit dem Core (Prozessorkern) V2 zum Zuge (MCF52xx). Aber auch diese sind für einen Atari-Clone nicht geeignet, da sie einerseits eine zu niedrige Performance bieten (maximal 27 MIPS) und andererseits nur bei manchen illegalen Befehlen eine Exception auslösen, womit eine Emulation wie oben beschrieben nicht möglich ist.

Das Blockdiagramm des Coldfire macht dessen Umfang deutlich

Schließlich kommen noch zwei weitere Generationen zum Zuge, von denen es jeweils nur einen Vertreter gibt. Der MCF5307 kann mit seinem V3-Core eine Performance von 70 MIPS zur Verfügung stellen und ermöglicht erstmals auch die Emulation der nicht implementierten Befehle. Aber der derzeit aktuelle Vertreter MCF5407 ist dennoch der einzig heiße Kandidat für einen Atari-kompatiblen, obwohl ein angekündigter Coldfire noch bessere Chancen hätte - doch dazu später mehr. Der MCF5407 kann mit seinem V4-Core 257 MIPS bei einer Taktrate von 162 MHz entfalten - im Gegensatz zu 110 MIPS bei einem mit 75 MHz getaktetem 68060. Damit könnte der 68k-Software schon mächtig Dampf gemacht werden, da nicht davon auszugehen ist, dass bei dieser nahen Verwandtschaft beider Prozessorfamilien die Hälfte oder gar noch mehr der Performance für die Emulation hinhalten muss. Aus diesem Grunde wollen wir uns diesen Coldfire einmal näher anschauen:

Des Pudels Kern

Was den Coldfire von der 68k-Familie unterscheidet, ist neben der RISC-Architektur die Zielgruppe: Der Coldfire ist eigentlich nur als Embedded Controller gedacht, während die 68er-Familie sowohl als Desktop-Prozessor als auch als Embedded Controller (z.B. 68EC040) dient. Der Coldfire hat nun das Ziel die 68er als Embedded Controller zu verdrängen und versammelt daher eine Menge nützlicher Interfaces und Controller - genannt „Module" - um den Core. Mit Hilfe dieser Controller kann man sich den ein oder anderen Chip auf dem Board sparen und somit kostengünstiger produzieren. Als da wären:

Dies alles sind mehr oder weniger nützliche Komponenten, für die sonst weitere Bauteile auf einem Board untergebracht werden müssten. Das wichtigste Kriterium für oder gegen einen Prozessor als Desktop-CPU ist jedoch mit Sicherheit dessen Geschwindigkeit, die neben der Architektur nicht unwesentlich auch von der Taktfrequenz abhängt. Der MC5407 verträgt Eingangsfrequenzen zwischen 25 MHz und 54 MHz, mit denen auch der Datentransfer auf den 32 Datenleitungen abgewickelt wird. Der V4-Core allerdings wird mit dem 3-, 4-,5- oder 6-fachen dieser Taktfrequenzen gespeist. Ausgelegt ist dieser jedoch nur für Taktfrequenzen zwischen 100 MHz und 162 MHz. Um die in dem neuen Atari-Kompatiblen angestrebten 180 MHz zu erreichen, bleibt also nur eine interne Übertaktung des Prozessorkerns um 11 Prozent.

Neues

Die V4-Architektur ähnelt sehr der des 68060, hat aber noch ein paar Neuerungen und Optimierungen in petto. Insgesamt kann der Core 24 KB Ist-Level-Cache aufweisen, der unterteilt in 16 KB Instruction-Cache und 8 KB Data-Cache genutzt werden kann. Hinzu kommen aber noch zwei 2 KB große SRAM-Blöcke, die es ermöglichen 2 KB-Blöcke aus dem Speicher in den Prozessorkern einzulagern. Solche Befehle stehen auf diese Weise mit nur einem Taktzyklus Verzögerung an der Instruction Fetch Pipeline (IFP - „Befehl holen"-Pipeline) zur Verfügung. Diese hat auch gleich eine Stufe mehr, als im 68060, womit der Parallelisierungs-Grad der Abarbeitung nochmals gesteigert werden kann. Aber auch beim Coldfire gilt, wenn es um bedingte Verzweigungen geht: Möglichst wenige falsche Befehle in die Execution-Pipeline laden, um möglichst wenig Rechenzeit mit dem erneuten Füllen zu vergeuden. Aus diesem Grunde kommt im Coldfire auch eine optimierte Verzweigungs-Logik (Branch Logic) zum Zuge. Zum einen trifft man auf einen acht Einträge umfassenden Branch-Cache, der für acht bedingte Verzweigungsbefehle in der Lage ist die Zieladresse zur Verfügung zu stellen. Weiterhin werden jedem Eintrag zwei Bits zur Seite gestellt, mit denen sich ausdrücken lässt, ob der Sprung nie, selten, häufig oder immer (strongly/ weakly taken/not-taken) ausgeführt wurde. Dies war die erste Instanz. Wurde in dem Branch-Cache kein Eintrag für den abzuarbeitenden bedingten Sprungbefehl gefunden, schaut der Prozessor in der 128 Einträge umfassenden Vorhersagetabelle nach. Hier besteht jeder Eintrag nur aus den zwei Bits, wie sie auch im Branch-Cache genutzt werden. Auf diese Weise lassen sich gute Sprungvorhersage-Ergebnisse bei wenig benötigten Transistoren erzielen.

Ein Novum kann der Coldfire MCF 5407 dem 68060 gegenüber jedoch vorweisen: Den LIFO-Return-Stack. Diese vier Einträge umfassende Last-In-First-Out Hardware Stack liefert dem RTS-Befehl, der zum gezielten Rücksprung aus Unterprogrammen dient, das Ziel seines Rücksprungs, ohne dass dieser dieses umständlich vom Software-Stack holen müsste.

Wie auch schon beim MC68000, so wird auch beim Coldfire das Holen und Ausführen durch einen zehn Instruktionen fassenden FIFO-Puffer entkoppelt, obwohl ein Befehl diesen auch umgehen kann, wenn es nötig wird. Aus Kostengründen wurde beim Coldfire wieder eine OEP (Operand Execution Pipeline) entfernt, womit noch eine sechsstufige übrig bleibt. Trotzdem ist der Coldfire aufgrund neuer Techniken beinahe in der Lage aus dieser einen Pipeline so viel Performance wie aus zweien herauszukitzeln.

Ein Beispiel: Schaut man sich die Pipeline genauer an, so verbergen sich in ihr zwei ALUs (Arithmetic Logic Unit). Die eine wird nur für das Ausführen der Befehle genutzt und sitzt dementsprechend in der Execute-Stufe, während sich die andere in der OAG (Operand Adress Generation) verbirgt und eigentlich nur für die Adressberechnung der Operanden zuständig ist. Eigentlich deshalb, weil der Core in der Lage ist, einen Befehl auch mit eben dieser ALU auszuführen. Heraus kommt eine wesentlich höhere Rechenleistung, bei einem wesentlich geringerem Bedarf an Transistoren.

Mit dieser Architektur ist der Coldfire wie für RISC-Prozessoren üblich in der Lage die meisten Befehle in nur einem Taktzyklus auszuführen. Das war der 68060 zwar auch - jedoch war es bei diesem ungleich aufwändiger, dies zu realisieren. Was dem Coldfire allerdings fehlt sind MMU (Memory Management Unit) und FPU. Ohne MMU lassen sich Dinge wie der MiNT-Speicherschutz oder virtueller Speicher nicht mehr nutzen.

Das Registermodell des Coldfire deutet bereits auf die zu erwartende hohe Kompatibilität hin.

Aussichten

Auf dem Mikroprozessor-Forum im vergangenen Oktober in San Jose hat Motorola für das 2. Quartal 2001 einen wesentlich verbesserten Coldfire-Core angekündigt (V4e). Dieser soll dann sowohl eine MMU als auch eine FPU involvieren und gleichzeitig wesentlich höhere Core-Taktfrequenzen ermöglichen. Bei der Einführung ist eine Taktfrequenz von 225 MHz vorgesehen (350 MIPS), während nach einer weiteren Optimierung des Produktionsprozesses gar 333 MHz angestrebt werden (500 MIPS). In der Roadmap des Coldfire sind gar V5- und V6-Cores anzufinden. Ein Ende der Coldfire-Prozessorfamilie ist also noch längst nicht in Sicht, und es bleibt zu hoffen, dass die Realisierung des Pegasus-Projekts ohne größere Schwierigkeiten möglich ist. Ein Warten auf den verbesserten Coldfire wäre wegen der MMU, der FPU und der weitaus höheren Geschwindigkeiten sicherlich sinnvoll, da somit wichtige Kritikpunkte aus der Welt geschafft wären, scheint aber nicht zwingend notwendig, da auch so der Großteil der Atari-Software zum Laufen zu bewegen sein wird.


Matthias Alles
Links

Copyright-Bestimmungen: siehe Über diese Seite