Mehr über Acorn für nicht-nur-Users


Da ich alles allgemeine und allgemein verständliche über den Acorn Risc PC und das RiscOS Betriebssysteme bereits auf der vorigen Seite erklärt habe, soll diese Seite für Leute sein, die nicht mehr nur "User" sind, sondern sich schon interner auskennen mit dem Computer.

Der ARM Risc-Prozessor

Was RISC heißt und was es bedeutet, ist auf der vorigen Seite ja schon erklärt worden, deshalb gehe ich jetzt gleich näher auf den StrongArm ein.
Der von Acorn verwendete StrongArm ist ein Risc-Prozessor mit OnboardCache. Er ist kleiner und kühler als die gebräuchlichen CISC-Prozessoren (CISC = Complex Instruction Set CPU), was bedeutet, daß keine Kühlung im Motherboard erforderlich ist. Der StrongArm bekommt - ohne Kühlung - gerade mal Zimmertemperatur und verbraucht bei 202 Mhz Taktfrequenz nur 0,9 Watt.

Nochmal die Graphik

Genaueres dazu habe ich zwar bereits auf der ersten Seite angesprochen, allerdings gibt es dazu doch noch einiges zu sagen. Der Graphikchip ein 64-Bit Graphik-KoProzessor. Wirklich effektiv wird das Ganze mit 2 MB VRAM, denn dann arbeitet das Graphiksystem mit ca. 157 MB/s Datendurchsatz.
Leute, die mit Graphik arbeiten (es gibt übrigens einen sehr bekannten und beliebten Risc-Computer in der Branche, die meisten wissen nur nicht, daß es einer ist, in der Graphikbranche), würden sich mit Sicherheit wundern, was man mit so einem Acorn RiscPC alles anstellen kann, was alles möglich ist.

BASIC

Der Acorn RiscPC verfügt über ein sehr effektives, ins RiscOS implementiertes Interpreter-BASIC, bei dem man OHNE COMPILIEREN und OHNE LINKING auskommt.
Man öffnet einfach ein Fenster, programmiert drauflos, startet das Ergebnis mit einem Doppelklick - und fertig! Selbst für 3-D-Graphiken ist das BASIC schnell genug.
Man kann mittels (implementiertem) Editor in jedes (!) Programm bzw. File ohne weiteres hineinschauen, indem man es einfach mit gedrückter Shifttaste anklickt, und es dann nach Lust und Laune verändern.(Ein Minimalwissen wäre hier natürlich schon angebracht!)
Der Arbeitsspeicher kann den Applikationen beliebig zugeteilt werden. Das Kopieren von Dateien z.B. läßt sich damit beschleunigen.

Andere Sprachen

Für C-Freaks und Anhänger anderer Programmiersprachen gibt es natürlich die entsprechenden Applikationen.

Assembler

Wem BASIC-Programme zu primitiv oder zu langsam sind, den wird der ins BASIC implementierte Assembler interessieren. Mitten in einem BASIC-Programm (egal, wo) kann ein Programmteil ohne weiteres in Assembler geschrieben werden.
Dieser Teil kann nun entweder (über BASIC-Befehl) in ein eingenes File geschrieben und von dort aufgerufen werden, oder aber im BASIC verbleiben und dort gestartet werden.

Das RiscOS beinhaltet jede Menge an Betriebssystem-Routinen, welche dem Programmierer einen Großteil der Arbeit abnehmen - sie sind einfach mit Namen und den entsprechenden Parametern (egal von welcher Programmierebene aus) aufzurufen.

Die vorher erwähnten 30 Grundbefehle können mit verschiedenen Bedingungen (conditions), sowie mit der Erlaubnis, die Statusregister (Flags) zu beeinflussen, versehen werden. (Bei 32 Bit hat schließlich einiges im Instruction-Code Platz).
Das spart jede Menge an Branches, da die Ausführung der Befehle von den Conditions (bzw. den Flags im Statusregister) abhängt - das Setzen und Löschen von Flags wird meist überflüssig.
Es gibt 18 Conditions im Befehlssatz des ARM, z.B. EQ,NE,CS,CC...

Die Risc-CPU benötigt aufgrund der hardwaremäßigen Implementierung der Codes für die Ausführung von Programmstrukturen von bis zu 35 Taktzyklen nur mehr 3 Taktzyklen.
Selbstverständlich geht das nicht bei allen Strukturen - Wunder wirken kann die CPU auch nicht.
Dennoch, ein Verschiebebefehl (egal um wieviele Bits) nach rechts oder links braucht nur einen Taktzyklus!
Ist es ein Wunder, wenn RISCs - bei gleicher Taktfrequenz - mit solchen Tricks bedeutend schneller als "normale" sind?

Der ARM-Prozessor verfügt über 16 Stück 32-Bit-Register, R0bis R15, die bis auf die letzten zwei beliebig verwendbar sind.
R15 ist der Adress-counter und R14 beinhaltet die Rücksprungadresse eines Branch-Befehls - allerdings nur, wenn gewünscht. Dadurch können Branches (natürlich mit einer Condition) als Subroutinen ausgeführt werden, deshalb fehlt ein eigener Befehl für die Ausführung einer solchen - that's RISC!

Irgendwelche Segmente sind nicht vorhanden weil überflüssig...
Die Befehlsausführung wird von einer Bedingung abhängig gemacht, wie z.B. gesetztes Zeroflag - außerdem kann die Beeinflussung des Statusregisters erlaubt oder verboten werden, und das alles in einem einzigen Befehlswort.
Ein Beispiel

MOV EQ S R0,R1,LSR#4

Das ist ein Befehl und wird in einem Taktzyklus abgearbeitet.

Bedeutung: Wenn das Z-Flag gesetzt ist (EQ), so bringe (MOV) Register 1 in Register 0, multipliziere dort mit 8 (LSR #4 = um 4 Bit nach links rotieren) und beeinflusse das Statusregister (S) je nach Ergebnis

Wenn das Z-Flag nicht gesetzt ist, dann wird der Befehl einfach ignoriert und der nächste decodiert. Ein Befehl, ein Taktzyklus!

Durch die konditionierten Befehle werden Branch-Befehle (diese "branchen" relativ in einem Adressbereich von 64 MB) nur selten gebraucht. Dies optimiert logischerwerise den Gebrauch des OnBoardCache des ARM.

Acorn Links