Omikron.BASIC 4.0 - Nachschlag

Schon kurz nach Veröffentlichung des Artikel über Omikron.BASIC 4.0 in der letzten Ausgabe, erreichte uns eine neue Version 4.08, mit der sich massive Änderungen gegenüber unserer Testversion ergaben. Deswegen möchten wir Ihnen hier einen Nachschlag auf den Test geben.

Der Compiler unterstützt den Coprozessor des ATARI TT direkt, d.h. es ist hierzu keine spezielle Bibliothek notwendig. Die Mehrzahl der Berechnungen wird vielmehr direkt im Objektcode erledigt ohne Bibliotheksaufrufe. Alle anderen Dinge, die spezielle Anpassungen an den ATARI TT betreffen, sind in der "BASLIB_4" zusammengefaßt. Diese Bibliothek gehört natürlich standardmäßig zum Lieferumfang.

Der Compiler unterstützt den ATARI TT in mehrerer Hinsicht:

Die Aktivierung dieser zusätzlichen Optimierungen auf ATARI TT wird einfach und komfortabel über Compiler-Steuerworte ("68020; FPU2") eingestellt. Darüber hinaus ist die Version 4.0 natürlich vollständig abwärtskompatibel, d.h. es werden alle denkbaren Kombinationen von Hardware-Ausstattungen unterstützt (Beschleunigerkarten und auch FPU-Karten für den Erweiterungssteckplatz des Mega ST).

Seit Release 4.08 nutzt auch der Interpreter die FPU des ATARI TT direkt. Es werden alle trigonometrischen und transzendenten Funktionen mit Hilfe des Coprozessors berechnet. Dadurch werden auch Funktionen beschleunigt, die auf diesen Grundfunktionen aufbauen.

Anhand der Tabelle soll verdeutlicht werden, welcher Leistungszuwachs möglich ist. Die gemessenen Werte beziehen sich auf einen Mega ST 4, wahlweise mit Weide-Coprozessor bzw. auf einen ATARI TT/8 (Cache an, Programme laufen im FAST-Ram). Das Benchmarkprogramm1 ist als Demoprogramm ebenfalls in der

Fließkommaberechnung
Zeit in Sekunden für 100000 Operationen      
  MegaST I/C MegaST C MegaST CF AtariTT 1 AtariTT CF
SIN 493,75 487,5 11,125 11,125 1,81875
COS 493,75 493,75 11,125 11,1875 1,81875
TAN 1012,5 1062,5 11,5625 11,25 2,0875
SINH 725 743,75 24,625 11,625 2,8375
COSH 725 743,75 24,8125 11,4375 2,61875
TANH 793,75 825 36,875 11,4375 2,45625
ARCSIN 918,75 956,25 12,125 11,4375 2,40625
ARSINH 1475 1568,75 33,8125 25,25 3,0625
SQR 518,75 518,75 7,5 9,75 0,85625
EXP 637,5 656,25 11,0625 11,25 2,24375
LN 937,5 981,25 11,25 10,9375 2,35  
FORMEL1 48500 52500 51,5 33,25 7,7
FORMEL2 132000 142000 78,5 135 20,85
FORMEL3 168,75 137,5 39,75 35,875 2,09375

Integer-Benchmark

Zeit in Sekunden für 100000 Operationen

MegaST 1 MegaST C

AtariTT 1

AtariTT C AtariTT C2

&nbsp

ProcCall 198,125 11,875

7,925

1,8875 1,8875

ILMul 55,625 15,5625

20,1875

2,8375 0,8875

IWMul 61,25 15,5625

22,25

2,9375 1 ,00625

IL Add 42,5 2

16,125

0,14375 0,14375

ILArrGet 17,5 1,3125

8,4375

0,11625 0,10625

IWArrGet 18,75 1,25

8,9375

0,1625 0,1625

l L ZuwAdd 20 0,75

8,5625

0,0625 0,0625

IL ZuwMul 25 3,5625

10,6875

0,4375 0,23125

&nbsp

MegaST I/C : Mega ST 4 interpretiert oder compilert ohne FPU-Nutzung ProcCall MegaST CF : Mega ST 4 compiliert mst FPU-Nutzung (FPU als EA-Device) AtariTT 1 : Atari TT 8 interpretiert (tetls mit FPU siehe oben) !t Mu! AtariTT CF : Atari TT 8 compiliert mit Coprozessor-FPU-Nutzung IW M ul ILAdd MegaST 1 : Mega ST 4 interpretiert IL ArrGet MegaST C : Mega ST 4 compiliert IW ArrGet AtariTT 1 : Atari TT 8 interpretiert IL ZuwAdd AtariTT C : Atari TT 8 compiliert ohne spez. 68020-Befehie AtariTT C2 : Atari TT 8 compiliert mit spez. 68020-Befehle IL ZuwMul

Prozedureaufruf mit fünf Parameter und zwei lokalen Variablen. : Integer long (32 Bit) Multiplikation : Integer word (16 Bit) Multiplikation : Integer long {32 Bit) Addition : Feldzugriff auf Integerfeld (32 Bit) : Feldzugriff auf Integerfeld (16 Bit) : Inieger long (32 Bit) Zuweisung und Addition ("+="-Operator) : Integer long (32 Bit) Zuweisung und Multiplikation (,*="-Operator)

neuesten Version enthalten. Allerdings mehr als ein Anhaltspunkt können solche Benchmarks nicht sein, jeder Anwender muß anhand seines Programms selber etwa abschätzen, was an Geschwindigkeitszuwachs zu erwarten ist. Der Fließkommabenchmark testet nur die Fließkommarechenleistung und zwar immer mit 19stelli-ger Genauigkeit. Hier sind mehrere Punkte zu berücksichtigen:
  1. Auf dem Mega ST ist die Fließkommarechenleistung von Interpreter und Compilaten nahezu gleich, weshalb beide in einer Spalte zusammengefaßt wurden. Da dort standardmäßig kein Coprozessor zur Verfügung steht, wird praktisch interpretiert und compilert mit den gleichen Routinen gerechnet, was eben auch bei einer vollständigen Implementierung im Maschinensprache nicht besser geht.
  2. Die Fließkommarechenleistung auf Atari TT nimmt im Interpreter stark und compilert extrem zu, da hier der Coprozessor voll zur Geltung kommt.
  3. Auf Atari TT werden selbst Grundrechenarten im Compilat drastisch beschleunigt, was besonders in Benchmark "FORMEL3" zum Ausdruck kommt.

Die verwendenten Formeln sind:

FORMEL1:
TAN ( TAN ( TAN ( TAN ( TAN ( A# ))))) (zeigt Trigonometrie und Registernutzung)

FORMEL2:
A# A A# A A# A A# A A# A A# A A# A A# (zeigt LN, EXP und Registernutzung)

FORMEL3:
A# + A# * ( A# + A# / ( B# + C# ))
(zeigt 19stellige Grundrechenarten und Registernutzung)

Der Integerbenchmark testet in erster Linie integer Berechnungen bzw. typische Programmtätigkeiten wie z.B. Prozeduraufrufe. Auch hier sind einige Punkte auffällig:

  1. In jedem Fall ist die Geschwindigkeitszunahme von Interpreter zu Compilat sehr groß.
  2. Die Nutzung spezieller Befehle des 68020 (oder höher) bringt bei der 32 Bit Multiplikation nocheimal eine Steigerung um etwa Faktor 3.
  3. Die Speicherzugriffe mit verbesserten Adressierungen bringen dagegen nichts. Hier sind entweder andere Mechanismen sehr viel dominanter oder die Skalierung läuft eben nicht so viel schneller ab, normale Additionen.

Generell stellt man auf Atari TT noch folgendes fest:

Laufen die Programme mit eingeschaltetem Cache, was bei unseren Tests immer der Fall war, so kann es teilweise zu verfälschten Ergebnissen kommen. Schon wenn die Programme nicht exakt gleich lang sind und sich deshalb unterschiedliche Adresslagen ergeben, kann sich dies nachteilig auf das Zeitverhalten auswirken. Der Cache in besonders günstigen Fällen fast nie oder selten nachgefüllt werden, in ungüstigeren Fällen ständig. Das kann Abweichungen um bis zu 10 Prozent einbringen.

Außerdem berücksichtigen die Test in keiner Form die Bildschirmausgabe, die ja bekanntlich immer im ST-kompatiblen Speicher- und daher naturgemäß etwas langsamer abgewickelt werden muß. Hier sind die zu erwartenden Unterschiede zwischen Atari ST und Atari TT also nicht so groß, wie die Benchmarks es zeigen.



Aus: ST-Computer 06 / 1992, Seite 42

Links

Copyright-Bestimmungen: siehe Über diese Seite