|
|
|
|||||||
|
|
|||||||
To Warp or Not To WarpDie Systemintegration des PowerUp in das Amiga OSDer PowerPC verspricht Leistung ohne Ende. Doch was hilft die Leistung, wenn Sie brachliegt. Ein ausgeklügeltes System ist notwendig, um das Potential der Power CPU auch zu nutzen. Wie das neue Herz in das bestehende Amiga System integriert wurde, lesen Sie hier. Der PowerPC auf der Cyberstorm (und den Blizzard PPC Karten) arbeitet parallel zur ebenfalls am Board befindlichen 68K CPU. Beide Prozessoren können alle Resourcen des Amigas benutzen. Zum Betrieb des PowerPC ist es aber unbedingt notwendig, RAM auf der Cyberstorm zu installieren. Dieses RAM muß paarweise installiert werden, weil der PowerPC mit 64 Bit darauf zugreift. Der PowerPC selbst kann aber sogar ins ChipRAM schreiben und davon lesen! Allerdings mit starken Perfomance-Einbrüchen. Seine wahre Performance zeigt der PPC im Memtest in das FastRAM. Phase5's eigener Memtest weist einen Durchsatz von 138MB/sec ins FastRAM (60ns - FastPageMode Standard PS/2 SIMMs, m. 604e/180) zu vergleichsweise niedrigen 68MB/sec des 68060/50. Ein 200MHz 604e kommt auf geringfügig höhere Werte als die 180MHz Version. Laufen beide Prozessoren parallel, kommt es durch die gemeinsame Nutzung des RAM-Interfaces zu einem Geschwindigkeitsverlust, der meistens aber nicht merkbar ist. Im Rendertest mit lwShow (LightWave-Show zum Anzeigen von Lightwave Objekten mit CyberGL) bekam ich beim Netzwerkzugriff auf den Amiga Timeout Fehler, wenn nur der 68060 benutzt wurde. Rendert hingegen der PowerPC, kann parallel noch voll über das Netzwerk auf den Amiga zugegriffen werden, ohne das der Socket in die Knie geht. Nachdem das Betriebssystem nichts von der fremden CPU weiß und diese nicht direkt nutzen kann, mußten sich die Entwickler etwas einfallen lassen. Herausgekommen ist ein Minibetriebssystem, daß auf der PowerPC CPU und der 68er CPU parallel läuft und die Verbindung zwischen AmigaOS und PPC herstellt. Hier zeigt sich eindrucksvoll die Flexibilität des AmigaOS. Die Schnittstelle ist komplett als shared library implementiert und kann von jedem Programm genutzt werden - ist also nicht abhängig von der Programmiersprache. Das PPC-Betriebssystem sorgt für den Austausch von Nachrichten mit dem AmigaOS (Messages) und verwaltet den Speicher für den PowerPC. Außerdem sorgt es dafür, daß PowerPC-Programme parallel laufen können (scheduler, multitasking auf dem PPC - parallel zum AmigaOS Multitasking). Im Detail gibt es allerdings hier zwei verschiedene Ansätze von Haage&Partner (H&P) und Phase5. Ich möchte gleich vorweg sagen, daß mir persönlich die Haage&Partner Lösung besser gefällt. Sie ist meiner Meinung nach eine bessere Integration in das Amiga Konzept - allerdings auch mit Nachteilen die ich nicht verheimlichen möchte.
Die ppc.library benutzt ein eigenes Binärformat, daß auf anderen PowerPC Platformen üblich ist: das ELF Format. Dieses ist Konzeptbedingt inkompatibel mit dem Hunk-Format des Amigas. Man könnte auch sagen, das Hunk Format ist überholt. Das ELF Format hat den Vorteil, daß man "handelsübliche" Compiler aus der Workstation Welt benutzen kann, um PowerPC Code zu erzeugen. Der GNU C Compiler für den Amiga wird beim Erwerb der Cyberstorm auf CD mitgeliefert, seit kurzem gibt es im Aminet den Freware Compiler vbcc, der ebenfalls ELF Programme erzeugen kann. Das Problem am ELF Format ist, daß man ein Modul nicht einfach auslagern und vom 68000er als "Subroutine" anspringen kann, da es tatsächlich ein eigenständiges Programm ist. Dieses Programm wird dann von der ppc.library auf die PPC CPU "downgeladen" und bei Bedarf mit einer Funktion "RunPPC" der ppc.libray aufgerufen. Selbstverständlich ist es möglich, dieses ELF Programm als Binärdatei in den 68K Teil zu linken, und diesen Teil dann dem PPC zugänglich zu machen. Ein "Programm" an sich ist also nicht zwingend erforderlich. Ich möchte deshalb darauf hinweisen, weil Haage&Partner hier einen anderen Weg geht. Der StormC-PPC Compiler benutzt für den PPC Code nach wie vor das Amiga-Hunk Format. Der Vorteil dabei ist, daß gewöhnlich bestehender Code durch einfaches neucompilieren in PowerPC "umgewandelt" werden kann. Das Programm kann weiter voll auf Amiga Systemstrukturen und Resourcen zugreifen - was in dieser Art und Weise mit dem gcc von Phase5 nicht möglich ist. Shared Variablen zwischen 68er und PPC CPU sind nur mit dem StormC möglich - das erfordert auch keinen Context-switch, da auf ein und die selbe Adresse im Speicher von beiden CPUs zugegriffen werden kann - das geht mit dem gcc auch, aber mit sehr viel mehr Aufwand. Der Nachteil dieser Methode - und der auch das ELF-Format rechtfertigt: Systemstrukturen sind oft nicht auf Langwort Adressen ausgerichtet, der gcc kann Strukturen nur an Langwortadressen ausrichten, der vbcc kann auch so "umgeschalten" werden, daß auf Amiga-Systemstrukturen zugegriffen werden kann. Für eine moderne RISC CPU sind byte aligned Speicherzugriffe (ungerade Speicheradressen, auch auf WORD boundaries) der Performance Tod! Andererseits ist es nicht wirklich so tragisch. Das ELF Format wurde dahingehend optimiert, um durch Langwortausrichtung das Pipelining der PowerPC intensiv nutzen zu können. Durch ungerade Adressierung kann es zu ineffizienter Ausnutzung der parallel Abarbeitung der Befehle in der PowerPC CPU kommen. Eine geringere Leistung ist die Folge. Auf der anderen Seite hat das AmigaOS ein Fülle von solchen "Alignment"-Verletzungen. Auch eine neues OS kann diese aus Kompatibilitätsgründen nicht einfach "gerade" biegen, darum kommen wir nun mal nicht herum. Für einen guten Programmierer sollte es nicht zu schwierig sein, sich auch mit dem StormC an die Alignment-Kriterien zu halten.
Hier kommen wir wieder zurück zum Verfahren von Phase5. "Mixed Binaries" in dieser Form sind mit Phase5's Lösung nicht möglich, jedoch ähnelt die Vorgehensweise doch dem des gemischten Codes. Statt einen Funktionsaufruf wird über die ppc.library in das ELF-"Programm" gesprungen. Prinzipiell wird das vom StormC nur versteckt, der Programmierer "sieht" nur einen Sprungbefehl in ein Untereprogramm.
Zum Schluß bleibt mir nur zu sagen, daß mit dem PowerUp der erste wichtige Schritt getan ist, um rechenintensive Programme wieder auf den Amiga zurück zu bringen. Als Nebeneffekt erhält man neben den PowerPC ja auch noch eine schnelle 68K CPU zu einem vernünftigen Preis. Diese ist für die Bedienung des Amiga (derzeit) noch ausreichend, der PowerPC kann in Bereiche, wo Zeit gleich Geld ist, den Amiga wieder attraktiv machen (z.B. in der Bildbearbeitung und zum Rendern). In einer späteren Ausgabe möchte ich noch einen Schritt tiefer in die Systemintegration des PowerUp einsteigen, eventuell auch in Form eines Workshops. Für diese Ausgabe sollte der Ansatz und die grundlegenden Unterschiede zwischen WarpOS und ppc.library aber ausreichend erklärt sein um beide Systeme vorzustellen. |
||||||||
|
Jürgen Schober ...........
|
||||||||
|
|
|