iSpin, Forth und der Rest der Welt
Verfasst: So 7. Jun 2009, 17:21
Zum iSpin gibt es erstmal eine (vorhersehbare) Essenz: Es ist relativ langsam, da es ja eine in Spin geschriebene Forthstruktur ist. Die Idee damit einen Assembler oder Spin-Compiler zu schreiben erscheint mir momentan gerade nicht mehr so reizvoll, weshalb ich auch gerade einen anderen Weg verfolge. Da ihr ja noch keinen Hive auf dem Tisch habt mal einen Vergleich: Es ist gefühlt etwa so wie das Basic auf dem C64/Atari XL - also keine Rakete, aber dennoch erstaunlich, da es ja selbst in einer Hochsprache geschrieben ist. Obwohl ich momentan nicht weiter daran arbeite, war es doch eine interessante Sache, da es nebenher ja auch einfach der Versuch war sich die Forthmechanismen selbst zu erarbeiten, und das geht ja ganz gut wenn man so etwas in einer Hochsprache versucht.
Zum Stand: Grundlegende forthtypische Befehle sind vorhanden, man kann eigene Worte compilieren und natürlich ausführen. Mit den letzten eingebauten Worten kann man Screens von einer Screendatei in das iSpin compilieren, aber da ist schon nicht mehr alles getestet. Also Baustelle. Das Wörterbuch wird momentan noch beim Start aus dem hRam in den eRam kopiert und dort verwaltet. Endgültig soll das Wörterbuch aber von SD-Card direkt in den eRam geladen werden. Auch ist momentan noch massig Debugcode in der Quelle enthalten um der virtuellen Maschine ins Getriebe schauen zu können - das kann letztlich auch raus.
Da ich nun denke durch die Arbeit an iSpin ein wenig mehr von Forth zu verstehen, ist aber der Wunsch aufgekeimt, mit diesen neuen Erkenntnissen näher an die hohe Geschwindigkeit der RISC-Kerne zu rücken - ein Forth direkt auf einem RISC wäre schon eine höllische Sache. Allerdings fehlt mir dazu halt noch das Wissen bezüglich PASM, mit dem ich momentan intensiv experimentiere. Da PASM ca. um den Faktor 100 schneller als Spin ist wird schnell klar was da möglich wäre. Momentan bastle ich an einigen Sachen um mal ganz hautnah mit den RISC-Kernen auf unterster Ebene zu kommunizieren. Das ist so meine Art, ich muß das "anfassen" um es zu verstehen, später kann man dann komplizierter werden. Die verrückte Idee die mir dabei kam ist folgende: Wäre es möglich eine Art Microbetriebssystem zu realisieren, welche einzig direkt in den RISC-Kernen läuft? Dabei steht jetzt definitiv kein Nutzen im Vordergrund, das ganze ist mehr ein Spiel um mal in PASM was zu machen. Wäre es also möglich direkt in den begrenzten Ressourcen einer COG eine CLI laufen zu lassen? Eine minimale CLI mit der man dann weitere Microprogramme in den verbleibenden anderen Cogs starten kann. Eine Cog (ich nenne sie mal iCog) würde die Aufgabe der Kommunikation zum RAM/BUS/Slaves übernehmen. In diesem MicroOS könnte man dann insgesamt 8 Programme starten - neben der iCOG + CLI (hier mal eine Skizze dazu:http://picasaweb.google.com/lh/photo/jc ... directlink) also noch 6 weitere. Wenn das funktioniert folgt der nächste Gedanke: Wäre es möglich in einer Cog einen Assembler, einen Monitor, einen Forthkernel oder einen XYZ laufen zu lassen? Das ganze ist also der Versuch die Sachen mal nicht von der abstrakten Ebene von Spin aus zu denken, sondern quasi aus der Cog herraus das System interaktiv zu ergründen - einfach um mal mit diesen Strukturen zu experimentieren.
Zum Stand: Grundlegende forthtypische Befehle sind vorhanden, man kann eigene Worte compilieren und natürlich ausführen. Mit den letzten eingebauten Worten kann man Screens von einer Screendatei in das iSpin compilieren, aber da ist schon nicht mehr alles getestet. Also Baustelle. Das Wörterbuch wird momentan noch beim Start aus dem hRam in den eRam kopiert und dort verwaltet. Endgültig soll das Wörterbuch aber von SD-Card direkt in den eRam geladen werden. Auch ist momentan noch massig Debugcode in der Quelle enthalten um der virtuellen Maschine ins Getriebe schauen zu können - das kann letztlich auch raus.
Da ich nun denke durch die Arbeit an iSpin ein wenig mehr von Forth zu verstehen, ist aber der Wunsch aufgekeimt, mit diesen neuen Erkenntnissen näher an die hohe Geschwindigkeit der RISC-Kerne zu rücken - ein Forth direkt auf einem RISC wäre schon eine höllische Sache. Allerdings fehlt mir dazu halt noch das Wissen bezüglich PASM, mit dem ich momentan intensiv experimentiere. Da PASM ca. um den Faktor 100 schneller als Spin ist wird schnell klar was da möglich wäre. Momentan bastle ich an einigen Sachen um mal ganz hautnah mit den RISC-Kernen auf unterster Ebene zu kommunizieren. Das ist so meine Art, ich muß das "anfassen" um es zu verstehen, später kann man dann komplizierter werden. Die verrückte Idee die mir dabei kam ist folgende: Wäre es möglich eine Art Microbetriebssystem zu realisieren, welche einzig direkt in den RISC-Kernen läuft? Dabei steht jetzt definitiv kein Nutzen im Vordergrund, das ganze ist mehr ein Spiel um mal in PASM was zu machen. Wäre es also möglich direkt in den begrenzten Ressourcen einer COG eine CLI laufen zu lassen? Eine minimale CLI mit der man dann weitere Microprogramme in den verbleibenden anderen Cogs starten kann. Eine Cog (ich nenne sie mal iCog) würde die Aufgabe der Kommunikation zum RAM/BUS/Slaves übernehmen. In diesem MicroOS könnte man dann insgesamt 8 Programme starten - neben der iCOG + CLI (hier mal eine Skizze dazu:http://picasaweb.google.com/lh/photo/jc ... directlink) also noch 6 weitere. Wenn das funktioniert folgt der nächste Gedanke: Wäre es möglich in einer Cog einen Assembler, einen Monitor, einen Forthkernel oder einen XYZ laufen zu lassen? Das ganze ist also der Versuch die Sachen mal nicht von der abstrakten Ebene von Spin aus zu denken, sondern quasi aus der Cog herraus das System interaktiv zu ergründen - einfach um mal mit diesen Strukturen zu experimentieren.