Im interview das ich am Wochenende für die Amiwest gegeben habe, habe ich alle bisher geheim gehaltenen Spezifikationen der ACA1240/1260 veröffentlicht. Die waren geheim weil sie entweder noch nicht vollständig getestet waren, oder weil ich einfach die Idee nicht preisgeben wollte. Jetzt wo wir kurz davor sind, die Boards zu einem reduzierten Preis anzubieten (weil der Massenspeicher-Teil erst mit einem Update nachgeliefert wird), möchte ich, dass jeder im Vorfeld weiß, was ihn erwartet. Vielleicht beantwortet das auch die Frage "warum hat das so lang gedauer?" ![]()
Chip Ram Interface
Viele, wenn nicht gar alle Turbokarten wenden beim Zugriff auf den A1200-Bus die gleiche Technik an: Der Prozessor der Turbokarte wird so lange in wait states gehalten, bis der Zugriff auf das Mainboard beendet ist. Das ist bei Lesezugriffen auch gar nicht anders machbar, aber bei Schreibzugriffen geht die ACA1240/1260 ganz neue Wege: Der 68040/68060 Prozessor "sieht" zero-wait state Geschwindigkeit bei Schreibzugriffen aufs Chip Ram. Aus Sicht der CPU ist der Schreibzugriff abgeschlossen, sobald der Prozessor die erste Möglichkeit fürs ordentliche Beenden dieses Schreibzugriffes bekommt. Das bedeutet, dass die Programmausführung ohne Wartezeit weiter gehen kann, während sich die Logik der Turbokarte gleichzeitig um das vergleichsweise langsame Schreiben der Daten ins Chip Ram kümmert. Damit ist ein großes Problem der Turbokarten der 1990er Jahre gelöst: Diese haben nur mit Mühe 4,3MByte pro Sekunde an Schreibperformance aufs Chip Ram geschafft. Für ein flüssiges Spieleerlebnis in Titeln die viel CPU-Power brauchen oder für Demos (eine Form der digitalen Kunst) wird oftmals die maximale Performance von 7MByte pro Sekunde benötigt. Diese liefert die ACA1240/1260 mit allen CPUs und bei allen Geschwindigkeiten. Natürlich ist die maximale Performance immer von der Farbtiefe abhängig, die auf der Workbench eingestellt ist, aber auch dann verschwendet die ACA1240/1260 keinen Zyklus, egal wie schnell der Prozessor getaktet ist. Bei Anschluss an eine ACA500plus bekommt der Prozessor auch dann eine 0-Waitstate Freigabe, wenn ein 32-Bit Zugriff auf zwei 16-Bit Zugriffe aufgeteilt werden muss. Der Prozessor muss nur dann warten, wenn er in kurzer Abfolge sofort wieder aufs Chip Ram zugreifen möchte.
Power design
Ein weiteres technisches Detail ist die Kernspannung des Prozessors, die per Software eingestellt werden kann. Damit können Strategien wie Überspannung zwecks Übertaktung, oder Unterspannung zur Reduktion von Wärme verfolgt werden. Die Mittenspannung von 5V oder 3,3V wird automatisch gesetzt, je nachdem welchen Prozessortyp das Launch System erkannt hat. Um diese Mittenspannung herum kann die Spannung in acht Schritten gesetzt werden: Für den 68040 zwischen 4.6V und 5.47V, und ein 68060 kann mit 3.0V bis 3.88V versorgt werden.
Sowohl die CPU-Kernspannung, als auch die 3.3V Hauptschiene für Speicher und Logik werden mit DC-DC Wandlern bei hohem Wirkungsgrad erzeugt. Im Gegensatz zu den Linearreglern die in den 1990er Jahren verwendet wurden, entsteht dabei kaum Wärme. Die Versorgung dieser Regler kommt aus der 12V-Schiene des Computers, die reichlich Reserven bietet, selbst wenn ein ungeeignetes second-source Netzteil verwendet wird. Wir empfehlen trotzdem generell, eine CA-PSU zu verwenden, wenn mehr als eine Erweiterung im Computer ist. Lediglich das Launch System der ACA1240/1250 wird von der 5V-Schiene des Computers versorgt, aber alles Weitere kommt aus der 12V-Schiene, so dass ein beispielloser Grad an Stabilität erreicht wird. Es gibt dennoch einen Linearregler auf der ACA1240/1260: Dieser erzeugt die Kernspannung für den FPGA. Hier macht es keinen Sinn, auf einen DC-DC Wandler umzusteigen, da keine nennenswerte Energie gespart werden kann: Der Regler braucht keinen Kühlkörper.
Kriterien für Speicher und Logik
Auch wenn frühere 680x0 Turbokarten fast alle mit CPLDs gebaut wurden, haben wir uns für einen FPGA mit externen Bauteilen zur Spannungswandlung entschieden. Das sieht auf den ersten Blick vielleicht teuer aus, besonders weil immer noch ein CPLD im Datenpfad zum A1200 benötigt wird, aber die Entscheidung wird klar, wenn man weitere Details des Designs anschaut. An erster Stelle ist natürlich der Speicher wichtig für die Geschwindigkeit, die der Benutzer spürt. Schließlich kann ein Prozessor nur so schnell sein, wie er seine Anweisungen aus dem Speicher bekommt! Wir haben uns für SD-Ram entschieden, weil dies eine höhere Systemgeschwindigkeit erlaubt als DDR-Speicher, egal welcher Generation. Das liegt an den unterschiedlichen Spannungsübersetzungen und dem Speichertakt, der bei DDRx in sehr engen Grenzen eingehalten werden muss. Takt- und Spannungsübersetzung müssten komplett im FPGA stattfinden, was ultimativ langsamer ist, als nur einen externen Spannungswandler mit hoher Geschwindigkeit zu durchlaufen.
Ein FPGA als Speichercontroller erlaubt es uns, viele Strategien zur fortlaufenden Erhaltung einer hohen Zugriffsgeschwindigkeit auszuprobieren. Darunter auch der Ansatz, 2nd Level cache hinzuzufügen, was bisher auf keiner Amiga-Turboakrte gezeigt wurde. Tatsachlich wurde in der Entwicklung schnell klar, warum das noch nicht gemacht wurde: Es bringt einfach zu wenig Gewinn. Stattdessen haben wir herausgefunden, dass das "offen halten von Speicherzeilen" den größten Gewinn bringt: SD-Ram ist in Zeilen und Spalten aufgeteilt, und bevor man auf eine Zelle zugreifen kann, muss die entsprechende Zeile geöffnet werden, was mehr als die Hälfte der Zugriffszeit benötigt. Hält man eine Zeile geöffnet, können mehrere Wait states eingespart werden. Die insgesamt 256MByte Speicher erlauben, dass bis zu 16 Zeilen gleichzeitig offen gehalten werden können. Auch die vielen Speicherchips sind ein Vorteil des Designs: Sie erlauben, den regelmäßig notwendigen "Refresh" der SD-Rams zu Zeiten auszuführen, in denen ein Zugriff auf andere Chips stattfindet. Hätten wir nur zwei Speicherchips, würde jeder Refresh nur unnötige wait states für den Prozessor bedeuten.
Falls mal ein Programm nicht mit dem schnellen Prozessor funktionieren sollte, kann der FPGA den 68040/68060 stoppen und die CPU des Computers laufen lassen. Speicher und Peripherie kann dennoch zur Verfügung gestellt werden, so dass wenigstens Fastmem zur Verfügung steht.
Eine Sache die ich all' die Zeit geheim gehalten habe ist, dass der FPGA so verdrahtet ist, dass er nicht nur den 68040/68060 anhalten kann, sondern auch den Prozessor des Computers. In diesem Modus kann der FPGA den Bus des Computers übernehmen und die Aufgaben des Prozessors erledigen. Wir planen, einen zyklusgenauen 68000 bei 7MHz zu implementieren, damit auch A500-Titel auf einem A1200 ausgeführt werden können. Der FPGA könnte auch stark genug sein, um auf einem A500 mit ACA500plus 68020 Geschwindigkeit zu erreichen. Hier aber bitte keine Wunder erwarten - der FPGA hat nur 10.000 Logikelemente, so dass eine natürliche Grenze des Machbaren gesetzt ist. Das Augenmerk bei diesem Feature liegt auf maximaler Kompatibilität, nicht darauf, eine 680x0 CPU zu schlagen.
Wie bei allen FPGA-basierten Produkten aus unserem Haus kann der FPGA-Core im Feld ein Update bekommen. Das bedeutet, dass wenn wir durch eine bessere Strategie den Speicherzugriff optimieren können, die Kompatibilität verbessern oder nur ein Feature hinzfügen, dann geht das einfach mit einem Download. Auch wenn die Hardware dann ein anderes Verhalten zeigt, muss sie dafür nicht eingeschickt werden. Das ist halt die Magie der FPGAs ![]()
Massenspeicher
Hier sind die größten Verzögerungen entstanden: SD-Karten im 1-Bit seriellen Modus sind bekannte, gut dokumentierte Technologie, die sogar in Quelltextform bei iComp vorhanden ist. Leider sind SD-Karten im seriellen Modus nicht sehr schnell, deswegen ist der Mikro-SD Kartenslot auf der ACA1240/1260 so verdrahtet, dass auch der 4-Bit Modus verwendet werden kann. Die korrekte Verdrahtung haben wir anhand einer Testkarte überprüft, aber es ist noch nicht gelungen, mit Karten anderer Hersteller in diesem schnellen Modus zu kommunizieren. Wir haben uns daher dazu entschlossen, die ACA1240/1260 zu einem reduzierten Preis anzubieten, weil die Massenspeicherfunktion erst mit einem Update nachgeliefert wird. Das wird ein zweistufiges Update: Zunächst werden wir einen langsamen 1-bit seriellen Treiber machen und dann weiter am 4-Bit mode arbeiten, der dann auch Karten mit sehr großer Kapazität unterstützt.
Wie auch bei den anderen aktuellen A1200 Turbokarten kann die A1240/1260 den IDE Port des A1200 beschleunigen, was möglicherweise schon den Bedarf an Geschwindigkeit in Sachen Massenspeicher deckt. Mit der großen verfügbaren Logikmenge im FPGA kann der IDE Speeder sehr viel feiner abgestimmt werden, so dass die Wahrscheinlichkeit von Datenverlust bei langsamen Geräten sehr gering wird. Schreibzugriffe auf den IDE Poret laufen dabei durch den gleichen Beschleuniger, der auch den Chip Ram Zugriff so effizient macht. Wir erwarten hier, dass die Kompatibilität mit Festplatten und CF-Karten noch größer sein wird, als das bei der ACA1234 der Fall ist.
Weiterführende Erweiterung
Am äußeren Rand der ACA1240/1260 ist ein Erweiterungsanschluss mit hoher Bandbreite angebracht - gedacht hauptsächlich für eine Grafikkarte ("RTG"). Wir haben bereits Bilder eines Prototypen veröffentlicht, der nur einen VGA-Ausgang hat. Das ist natürlich nicht das, was wir liefern werden, aber da der Anschluss am Bus des schnellen Hauptspeichers hängt, musste genau getestet werden, dass bei Anschluss einer Zusatzkarte die Stabilität des Speichers nicht beeinträchtigt wird. Schließlich ist ja das erklärte Ziel, bisher beispiellose Stabilität zu liefern, deswegen musste alles eingehend getestet werden, bevor wir die Hardware ins Feld entlassen. Die finale Grafikkarte ist noch nicht verfügbar, wird sich aber viele Gene mit Indivision ECS V4 teilen, dem ersten Framebuffer mit 2D-Beschleunigung von iComp, der mit P96-Treiber geliefert wird. Einen großen Unterschied wird es jedoch geben: Die Performance beim Zugriff auf den Framebuffer wird SEHR viel größer sein!
In einer Linie mit dem RTG-Anschluss ist noch ein weiterer Pfostenverbinder, der Signale und Spannungen für eine Audio-Erweiterung bereitstellt. Das kann eine Soundkarte oder ein MP3 Decoder sein - entweder als stand-alone Produkt, oder in Einheit mit dem RTG-Modul. Für diesen Anschluss gibt es noch keine konkreten Pläne, aber ich wollte ihn drauf setzen, damit ich es nicht später bereue, es nicht gemacht zu haben. Euer Feedback hier könnte mich in die eine oder andere Richtung beeinflussen.
Lokales Flash Rom
Die ACA1240/1260 hat 8MByte Flash. Ein großer Teil davon wird für die unterschiedlichen FPGA cores benötigt, denn jede CPU Geschwindigkeit braucht einen anderen Core mit angepasstem Speichercontroller. Eins jedoch mussten neue Benutzer einer 68040 oder 68060 Karte schon immer machen, bevor die Turbokarte verwendet werden kann: Die Installation der entsprechenden CPU-Libraries. Das ist bei derACA1240/1260 nicht nötig! Die CPU/MMU LIbraries von Thor sind im Flash enthalten, so dass der Computer auch ohne diese Libraries auf der Festplatte problemlos laufen wird. Das ist unsere Interpretation von "autoconfig" - echtes plug&play.
Das launch system
In den Absätzen oben habe ich immer wieder das "launch system" erwähnt, so als ob jeder genau weiß, was das ist. Sorry dafür - man kann sich das vorstellen wie einen Überwacher, der Hardware: Er erkennt den installierten Prozessor, stellt die richtige Kernspannung ein, speichert die Konfiguration und Lizenzen, macht ein de-bricking möglich wenn beim Flashen mal etwas schief gelaufen ist und startet den FPGA aus dem Flash-Rom. Das passiert natürlich nur nach dem Einschalten, aber danach ist das launch System auch nicht arbeitslos. Während die Turbokarte läuft wird der Temperatursensor im Kühlkörper ausgelesen, der Lüfter in Abhängigkeit der Temperatur nachgeführt und all' diese Daten dem Hauptcomputer zur Verfügung gestellt. Das Launch system ist für den Anwender vollkommen transparent - es tritt nur dann in Erscheinung, wenn etwas nicht klappen sollte, und dann kann über Blink-codes einer LED festgestellt werden, wo es hakt. Somit hat man auch dann Anhaltspunkte, wenn der Computer überhaupt nicht (mehr) starten möchte.
Ich hoffe, dass klar wird, warum wir so viele Jahre an der ACA1240/1260 gearbeitet haben und warum es auch immer noch etwas dauern wird, bis die Karte feature-complete sein wird. Wir sind sehr nahe an einem Release, möglicherweise schon kommenden Monat, aber ganz sicher im Dezember, mit den oben angesprochenen Lücken. Falls es noch Fragen gibt, werde ich die jetzt ausnahmslos alle beantworten - Geheimnisse um diese Karte gibt es nicht mehr!
Jens
Edit: Natürlich hat die Karte auch einen Clockport für ein RTC Modul.