Auf die Sprünge geholfen: TT-Koprozessor beschleunigt

Spätestens im Zeitalter von Raytracing wird allen klar, wie wertvoll ATARIs Entscheidung gewesen ist, dem TT serienmäßig eine FPU (Floating Point Unit = Fließkommaeinheit) vom Typ MC68882 zu spendieren. Ohne sie wären die Berechnungen - im Schneckentempo - kaum zu ertragen. Doch wie so manches am TT, ist die Geschwindigkeit der FPU nicht mehr ganz zeitgemäß und erscheint z.B. im Vergleich mit einer 486 DX (die wie die Motorola 68040 auch eine in die CPU integrierte FPU besitzt) recht klein. Dies wird spätestens bei komplexeren Bildern deutlich.

Da wird der Bastlergeist in uns wach und fragt sich, ob da irgendwie, möglichst für wenig Geld, Abhilfe geschaffen werden kann. Und tatsächlich haben weder Motorola noch ATARI dem einen Riegel vorgeschoben. Was Motorola betrifft, hat man dort das Protokoll zwischen der CPU und der FPU als asynchron festgelegt. Das bedeutet, daß der CPU völlig egal ist, wie schnell die FPU arbeitet. Sowohl die Datenübertragung zwischen den beiden als auch die Beendigung der Berechnungen wird durch entsprechende Steuerleitungen gemeldet. Die FPU ist nicht an den CPU-Takt gebunden, kann also mit einer völlig anderen Geschwindigkeit arbeiten. Und tatsächlich hat ATARI die Takteinspeisung für die FPU völlig unabhängig von der CPU geführt. Obwohl die FPU normalerweise mit 32 MHz getaktet wird, befindet sich unmittelbar vor der FPU ein Jumper (W101), mit dem man die Geschwindigkeit zwischen 16 und 32 MHz umschalten kann (Abb 1.). Zum Glück hat ATARI nicht allzu sehr gespart und die TTs alle gleich mit 33-MHz-FPUs bestückt [(ja, sowohl die CPU als auch die FPU sind 33-MHz-Typen, die aber im TT mit (nur) 32 MHz getaktet werden)].

Es hat sich inzwischen herumgesprochen, daß Motorola-Chips mit ziemlich großen Toleranzen bezüglich der zulässigen Taktfrequenz gefertigt werden. Wenn die Nachfrage nach langsameren Ausführungen nicht gedeckt werden konnte, soll es sogar vorgekommen sein, daß Motorola einfach die Bausteine aus der nächstschnelleren Serie genommen hat. Auf jeden Fall sind es gute Aussichten für die Beschleunigung der Fließkommaberechnungen.

Hinweis: Für die folgenden Schritte wird es wahrscheinlich notwendig sein, zuerst die TT-RAM-Karte vorübergehend herauszunehmen, um den Zugriff auf die FPU zu ermöglichen.

Es gilt also, der FPU über den Pin 2 des Jumpers einen schnelleren Takt zuzuführen. Mehr als 32 MHz sind im TT aber nirgendwo zu finden. So mußte ein neuer Quarzoszillator her. Man kann ihn aber nicht so einfach irgendwo in der Luft aufhängen. Das ist nicht schön, und darüber hinaus birgt das Metallgehäuse eines Quarzoszillators etliche Gefahren für andere Bausteine im Rechner, sollte es mit diesen irgendwie in Berührung kommen. Zum Glück befindet sich (zumindest bei meiner Version der Platine) ein 14poliger Standard-LS-TTL-Baustein (U102, ein 74LS05) genau links neben der FPU. Darüber hinaus überträgt dieses IC keine schnellen Impulse. Genaugenommen ist es nur in der Reset-Phase aktiv. Damit sind gegenseitige Störungen ausgeschlossen, und der ideale Platz für unseren Quarz ist gefunden. Doch wie soll man so einen Quarzoszillator befestigen? Die Tatsache, daß sowohl das IC als auch der Oszillator die Spannungsversorgung über die gleichen Pins haben (Pin 7 = Masse, Pin 14 = +5V) hilft dabei sehr. Man nimmt also eine DIL-14-Fassung und kneift alle Pins bis auf 7 und 14 ab. Pin 8 sollte man nicht völlig abschneiden, denn das brauchen wir gleich. Auf den Rest von Pin 8 lötet man ein kurzes Stück isolierten Drahtes (dabei den Draht nur ganz kurz abisolieren, weil das blanke Ende auf keinen Fall mit dem Pin des ICs darunter in Berührung kommen darf). 3 cm sollten genügen, das hängt aber von der jeweiligen Platinenversion ab. Auf dem anderen Ende des Drahtes lötet man einen Jumper (Kurzschlußbrücke) an (eventuell überstehenden Draht oder Lötzinn abschneiden). Wenn das erledigt ist, setzt man die Fassung genau auf das IC (unbedingt auf die Orientierung achten, sonst könnte das der Quarzoszillator recht übelnehmen). Jetzt muß man noch die Pins 7 und 14 der Fassung mit denen des ICs verlöten (Abb. 2). Diejenigen mit zwei linken Händen (oder rechten, im Falle von Linkshändern) sollten das lieber einem erfahrenen Bekannten überlassen. Auf jeden Fall sollte man den Rechner vorher vom Netz trennen und auch von allen anderen Geräten, die mit dem Netz verbunden sind (diese Maßnahme ist natürlich nicht unbedingt notwendig, wenn der Lötkolben vom Netz isoliert arbeitet -Gas-, Akku- und Niedervoltlötkolben).

Fertig? Nicht ganz. Es bleibt noch die Auswahl des Quarzoszillators und ein wenig Steckarbeit. Zunächst entfernt man den Jumper zwischen Pin 1 und 2 von W101 und steckt ihn so, daß er nicht stört, z.B. seitlich, auf Pin 1. Danach steckt man den am Draht hängenden Jumper seitlich auf Pin 2 (nicht ZWEI Pins kurzschließen!).

Jetzt muß man die neue Geschwindigkeit wählen. 100 MHz? Nein, ehrlich gesagt, das ist nur ein schöner Traum. Wer will, kann es mit 50 MHz probieren. Vielleicht haben Sie Glück, und Ihre FPU verträgt die Geschwindigkeit, ohne zu meckern. 40 MHz jedoch sollten meistens funktionieren, aber eine Garantie dafür gibt es nicht. Es ist eben die gleiche Sache wie bei der Verdoppelung des Taktes des Floppy-Controllers, um HD-Disketten verwenden zu können. Auch da hat es erst mit AJAX völlige Sicherheit gegeben.

Abb. 1: Jumper-Einstellung im TT

Den Quarzoszillator steckt man in die Fassung. Sollte er zu hoch stehen, nimmt man ihn noch einmal heraus und kürzt die Pins ein wenig. Dann überprüft man noch einmal alles gründlich (insbesondere sollte der neue Jumper die Pins 1 und 3 keinesfalls mit dem unisolierten Teil berühren), schließt den Rechner wieder an und schaltet ein. Auch wenn die Geschwindigkeit für die FPU zu groß sein sollte, müßte jetzt alles wie gewohnt ablaufen. Wenn nicht, ausschalten und Fehler suchen. Abziehen des neuen Jumpers und Aufstecken des alten zwischen Pin 1 und 2 sollte den Originalzustand wieder herstellen; aber, wie gesagt, für das Booten des Rechners spielt es keine Rolle, ob die FPU funktioniert oder nicht.

Wenn nichts schiefgelaufen ist, sollte man die Funktion der FPU prüfen. Dazu kann man das abgedruckte kurze Programm (Listing 1) benutzen (mit der eingeschalteten FPU-Option übersetzen! -Turbo C, ab der Version, die an den TT angepaßt wurde, oder Pure C, jede Version, oder aber gcc notwendig). Wenn man keinen FPU-unterstützenden Compiler besitzt, kann man auch das gewünschte Anwenderprogramm starten. Wenn die FPU nicht ordnungsgemäß funktioniert, wird es sofort, oder nach einiger Zeit (wenn die FPU warm wird) abstürzen. Andere Symptome, wie merkwürdiges Verhalten des Programms, sind nicht ausgeschlossen. Programme, die die FPU nicht verwenden (und das sind die meisten), sollten keine Probleme aufweisen.

Wenn es nicht mit der gewünschten Geschwindigkeit funktioniert, kann man folgendes tun:

  1. Alten Jumper zwischen Pin 1 und 2 stecken, Rechner zumachen, die Ausgabe von, wenn man Glück hat, weitaus weniger als 10 DM verschmerzen und die ganze Sache vergessen.
  2. Quarzoszillator mit der nächstniedrigeren Geschwindigkeit aus wählen.
  3. Die teuerste und die beste Lösung: FPU mit der gewünschten Geschwindigkeit kaufen (PLCC!), den passenden Quarzoszillator dazu (und ein paar schnellere Oszillatoren - vielleicht bringt man eine 66-MHz-FPU dazu, mit 80 oder noch mehr MFlz zu laufen, wer weiß?).

Fazit: Für etwa 10,- DM und ein paar Stunden Arbeit bekommt man einen bei Fließkommaberechnungen um 25% (oder mehr) schnelleren Rechner. Das erscheint auf den ersten Blick recht wenig, aber wenn man bedenkt, wie lange die Raytracing-Be-rechnungen oder FEM-Simulationen dauern können, kann eine Verkürzung von z.B. 5 auf 4 Tage durchaus einen großen Zeitgewinn bedeuten.

Die Schaltung funktioniert im Rechner des Autors seit Wochen ohne Probleme, wobei die FPU eine Woche lang ununterbrochen getestet wurde. Eine Garantie kann jedoch weder vom Autor, noch vom Herausgeber oder der Redaktion übernommen werden. Haftung für eventuelle Schäden ist ausgeschlossen. Inbesondere sei darauf hingewiesen, daß bei einem solchen Eingriff eine eventuell noch bestehende Garantie erlischt.

Verwendete Literatur:

[1] Jankowski, Rabich, Reschke: ATARI-Profibuch ST-STE-TT, Sybex-Verlag, Düsseldorf 1991

Abb. 2: So muß gelötet werden.

Stückliste

Fassung DIL-14
Schaltlitze (etwa 10 cm)
Jumper (Kurzschlußbrücke) mit Lötkontakt
Quarzoszillator (Frequenz siehe Text)

/* (c)1994 by MAXON-Computer
   Autor: Dipl.-Ing. Domagoj Cosic
*/

#include <math.h>
#include <stdio.h>

main()
{
    long i, errc = 0;
    double f, arg = 0.5, r = log( tan( arg ) ), accerr = 0.0;

    for ( i = 0; i <1000000; i++ )
    {
        f = log( tan( arg ) ) - r; 
        if ( f != 0.0 )
            accerr += f, errc ++;
    }

    printff "Error count: %1d accumulated error: %1g\n", errc, accerr );

    return 0;
}

Domagoj Cosic
Aus: ST-Computer 09 / 1994, Seite 80

Links

Copyright-Bestimmungen: siehe Über diese Seite