Wie hat
sich der PC entwickelt ? Wie viel leistungsfähiger ist er geworden ? Diesen
Fragen geht in meine Artikelserie über die Entwicklung des PC's nach. Natürlich
kann man dies an technischen Daten festmachen - Der Taktfrequenz, die Größe des
Arbeitsspeicher, die Anzahl an Transistoren der CPU. Doch was interessiert den
Anwender ? Wie es ein Bundeskanzler ausdrückte : "Was hinten rauskommt".
Die subjektive Leistung eines Computers ist schwer zu fassen, da er bei den
meisten Aufgaben nur Däumchen dreht, um auf den nächsten Tastendruck zu warten.
Schon früher ging es daher darum die Geschwindigkeit in einem "Benchmark" zu
messen. Um ein Benchmark geht es in diesem Artikel.
Viel problematischer sind hier die Rechner mit denen der Autor den Einstieg in die Computerei machte. 8 Bit Rechnern mit typischerweise 16-128 KByte RAM. Wer damals einen Rechner kaufte, der tat dies um Programmieren zu lernen. Es meldete sich kein MS-DOS Prompt oder gar eine grafische Oberfläche. Sondern ein Basic Interpreter meldete "Ready", und wartete auf Eingaben wie "Print 3+5-7". Benchmarks bestanden damals darin in BASIC in kurzen Schleifen einige 1000 Zahlen zu addieren, 100 Strings zu sortieren oder aus dem Bildschirm auszugeben. Was damals getestet wurde war nicht die Geschwindigkeit des Mikroprozessors, sondern die des Systems inklusive Basic Interpreters. Der Autor kann sich noch ganz gut an Benchmarks erinnern die auf einem Rechner schnell liefen, auf dem anderen mit demselben Mikroprozessor aber langsam, weil die Implementierung des Interpreters schlecht war. Beispiel : Z80 Prozessor einmal in Schneider CPC 464 und einmal in - bei fast gleicher Taktfrequenz waren letzter viermal langsamer.
1985
wurde von Benoit Mandelbrot ein Aufsatz veröffentlicht, der von Fractalen
handelte, einer mathematischen Menge, die selbstähnlich ist. Darunter versteht
man, das man die zugrunde liegende Grafik immer wieder vergrößern kann um immer
wieder auf dieselben Figuren zu stoßen. (Siehe die Apfelförmige Struktur, die im
Übersichtsbild, wie im Detail auftritt). Die ästhetischen Bilder dazu konnte
jeder mit einem Rechner selber programmieren und ausgeben und bald brach eine
Fractalmanie aus. Der Vorteil von Transputern - Chips die dazu bestimmt waren
parallel an einem Problem zu arbeiten, wurde an Fractalen gezeigt als 12
Transputer dieses Bild in Minuten anstatt einer Stunde aufbauten.
Damit ist ein Fractal ein sinnvoller Benchmark, denn es gibt eine Rechenvorschift die man auch heute noch umsetzen und mit den damaligen Werten vergleichen kann.
Z=Z2+C
Das klingt etwas profan oder ?
Nun bei den reellen Zahlen - denen sie im täglichen Leben begegnen - gibt es
auch nur eine Lösung für diese Gleichung. Doch Z und C sind komplexe Zahlen.
Darunter versteht man Zahlen die aus einem reellen und einem imaginären Wert
bestehen. Bei einer komplexen Zahl gibt es z.B. für den gleichen Wert
Z2 unendlich viele Lösungen die in einem Kreis mit dem Radius Z
liegen. Man braucht komplexe Zahlen für einige Fragestellungen in Wissenschaft
und Technik, z.B. in der Elektrotechnik. Die Grafiken entstehen nun dadurch das
man den Bildschirmkoordinaten reelle (X Achse) und Imaginäre (Y Achse) Anteile
der Zahl z zuordnet und die Rechenvorschift durchführt.
Dabei geht man so vor
:
Alle Z laufen entweder irgendwann in die Mandelbrotmenge herein oder heraus. Es ist nur die Frage wann. Das macht diese Rechenvorschrift die in Pascal etwa so aussieht so aufwendig :

function Tmandelbrot.Rechne(Re,Im:Double; const X,Y : Double) :
Integer;
const Abbruch = 8;
var Reel,Imag:Double;
Farbe : Integer;
begin
for Farbe:=0 to Iteration do
begin
Reel:=Re*Re;
Imag:=Im*Im;
if Reel+Imag>Abbruch then begin Result:=Farbe; Exit; end;
Im:=Im*Re*2-Y;
Re:=Reel-Imag-X;
end;
Result:=0;
end;
Hier entspricht dem n das Ende der Iteration, Abbruch ist der Wert von dem man weiss das er nie zur Mandelbrotmenge gehört. Es wird hier die komplexe Zahl in reelle und imaginäre Teile zerlegt. Pro Durchlauf fallen hier 4 Multiplikationen, 3 Subtraktionen und eine Addition an. Im schlimmsten Fall pro Pixel also Iteration*8 Rechnungen. Damit hängt die Rechendauer auch von der Iterationstiefe ab.
Das erste
Fractalprogramm das ich sah, war in Basic geschrieben mit Assemblerteilen um bei
diesem rechenintensiven Kernstück Zeit zu sparen. Es war ein Z80 8 Bit Rechner
mit 64 K Hauptspeicher und er brauchte 45 min für das Übersichtsbild mit den
Koordinaten (-0.5..2,4 in X und -1.2,..1.2 in Y) bei einer Tiefe von 30 zu
zeichnen. Das war nicht schlecht, denn ein Turbo Pascal Programm brauchte dafür
eine Stunde weil die Rechengenauigkeit mit 12 Stellen höher war. Der Rechner
zeichnete damals 320 x 200 Punkte. Schaffte also 24 Punkte pro Sekunde. Mein
heutiger Rechner braucht für dieselbe Aufgabe erheblich weniger Zeit - weniger
als eine Sekunde bei erheblich mehr Punkten. Er kommt auf 378000 Punkte pro
Sekunde, wobei bei Windows das Zeichnen der Punkte einen großen Teil der
Rechenzeit ausmacht - anders als bei meinem 8 Bitter. Eine Assembler optimierte
Fassung mit MMX Befehlen ohne Zeichnen der Punkte schafft sogar über 1 Million
Punkte pro Sekunde.
Mein heutiger Rechner mit einem 1200 Mhz Athlon ist also fast 40000 mal schneller als mein damaliger 8 Bit Rechner. Das ist eigentlich nicht überraschend, denn ein 8 Bitter hat weder einen Fliesskommaprozessor noch verfügt er über Befehle um auch nur Ganzzahlen zu multiplizieren. Er muss also relativ schlecht bei einem solchen Vergleich abschneiden. Benutzt man wie damals Variablen die nur der Prozessor verarbeitet aber nicht der Coprozessor, so ist der heutige Rechner nur noch 5400 mal schneller - trotzdem eine enorme Steigerung der Rechengeschwindigkeit in den letzten 17 Jahren. Es ist auch heute noch möglich den Rechner durchaus lange mit Fractalen zu beschäftigen. Denn die Menge ist unendlich gross. Nur die Tiefe entscheidet wieviel man davon sieht (vor allem bei kleinen Ausschnitten. Hier z.b. die Spitze in der Mitte des Fractals. Bei der Tiefe 30 und der Tiefe 300. Würde man hier noch weiter gehen, so würde man noch immer feinere Strukturen erkennen.
Dabei haben diese Bilder in den letzten 17 Jahren nichts von ihrer Anziehungskraft und ästhetischen Schönheit verloren. Man findet dieses Prinzip der Selbstähnlichkeit übrigens laufend in der Natur. Sie es bei der Form von Wolken, Küstenformen oder dem Verlauf von Blutgefäßen oder Blattadern. Doch dies ist ein anderes Thema.
Version 1.0 vom 12/18/2003 09:00:42 © by Bernd Leitenberger