Seite 4 von 9
Re: Ich hatte einen Traum...
Verfasst: Mi 4. Jan 2012, 20:53
von josto
Nein, nein. Das passt schon ganz gut.
Die Idee geht auf, wenn das Programm zum Zeitpunkt A nur den Job 1 tut und zum Zeitpunkt B nur Job2.
Beispiel wäre ein Programm, was auf Benutzereingaben reagiert. Je nach eingegebenem Kommando wird der entsprechende Code ausgeführt.
Immer notwendige Funktionen (Standard-Routinen) liegen im Hub-RAM, der Rest wird bei Bedarf geladen.
Das wäre sicher eine Möglichkeit, nur passt diese nicht immer.
Re: Ich hatte einen Traum...
Verfasst: Mi 4. Jan 2012, 22:13
von paulruiz
Zum Idee modulen:
Unix BSD2.11 ist ein fast modernes Unix dass immer nog auf PDP11 passt. Kernelgrösse ist etwa 150kb. Davon ist 48kb immer in Speicher, von die andere 100kb ist immer nur 8kb eingeladen. Neue segmenten ("overlays") einladen wird automatisch vom OS gemacht. Man muss nur den Linker angeben was in jede 8kb segment geht (zum Bleispiel: "ld -o unix basis.o -ovl0 teil1.o teil2.o -ovl1 teil3.o teil4.o, usw.). Auch fur Anwender Programme funktioniert sowas mit BSD2.11
Also, bestimmt kein blöde Idee.
Paul
Re: Ich hatte einen Traum...
Verfasst: Do 5. Jan 2012, 14:06
von paulruiz
Ich hab mir mahl Bellard's fbcc Compiler naher angesehen. Das benutzte Bytecode is fast identisch zum ZPU Bytecode. Nur einer "Dummheit": alle Konstanten sind immer 4 byte, nicht variabel kodiert wie im ZPU ('IM' opcode).
fbcc ist 80kb gross wann kompiliert mit gcc nach x86, und 120kb wann es sich selbst kompiliert nach Bytecode. Ich glaub wann mann ZPU Kodierung fur Konstanten benutzt, es wäre auch rund um 80kb gross. Also nicht schlecht fur so eine einfache (aber ziemlich komplette) Compiler.
Ich glaub mein erstes project wird sein um das ZOG um zu schreiben nach fbcc Bytecode und mahl sehen wie das lauft. Ich sah das TriOS nur eine offene Datei unterstützt. fbcc braucht zwei: einer Datei um Quelle zu lesen, und einer Datei um Assembler aus zu schreiben. Gibt es da lösungen?
Paul
Re: Ich hatte einen Traum...
Verfasst: Do 5. Jan 2012, 14:27
von PIC18F2550
Das betrifft nur dei SD-Karte.
Im eRAM sind mehr möglich.
Re: Ich hatte einen Traum...
Verfasst: Do 5. Jan 2012, 16:21
von paulruiz
Aber fbcc ist im eRAM abgespeichert wann es sein kompilierung macht......
Re: Ich hatte einen Traum...
Verfasst: Do 5. Jan 2012, 16:40
von PIC18F2550
Es gibt
cog-Ram (2 kB) imPropeller
hRAM(32k) im Propeller
eRAM (1 MByte )zwei chips auf dem Board
SD-Karde (1Gbyte)
im eRAM läuft doch eine RAMdisk
Re: Ich hatte einen Traum...
Verfasst: Do 5. Jan 2012, 18:35
von paulruiz
Wann TriOS fest so programiert ist, unterstützt es also kein XMM. Bummer....
Re: Ich hatte einen Traum...
Verfasst: Do 5. Jan 2012, 18:58
von josto
An Paul:
Hast du eine Ahnung, wieviele Instruktionen ZOG pro Sekunde bearbeiten kann?
Ich habe etwas über eine VM mit 8-Bit-Opcodes nachgedacht. Zur Isolierung eines Bytes und anschließender Decodierung bräuchte diese schon ca. 20 Instruktionen.
Damit wird die CPU wieder zur Performancebremse, denn die MMU könnte mehr Daten ranschaffen, als die VM bearbeitet kann.
Ich werde mal über 16-Bit Opcodes nachdenken, vielleicht gibt dies eine bessere Performance.
PS: Dein Projekt PDP11 gefällt mir immer besser. Ich kenne die Kiste zwar nur aus dem Museum, aber es hätte schon seinen Reiz, sowas auf dem HIVE zum Laufen zu bringen. Wäre schön, wenn du uns dazu auf dem Laufenden halten würdest.
Re: Ich hatte einen Traum...
Verfasst: Do 5. Jan 2012, 18:58
von drohne235
fbcc braucht zwei: einer Datei um Quelle zu lesen, und einer Datei um Assembler aus zu schreiben. Gibt es da lösungen?
Ich schaue mal ob ich die Zeit finde das im Code von Administra zu integrieren.
Re: Ich hatte einen Traum...
Verfasst: Fr 6. Jan 2012, 11:06
von paulruiz
An Josto:
Zum ZPU/ZOG
Nicht I'm detail, aber 20 Instruktionen hört sich richtig an: 5 für Hauptschleife, 5 für opcode Fetch, 5 im Durchschnitt für execution und 5 fur Daten Speicherzugriff (die meiste opcodes haben 1 Daten Speicherzugriff). Anbei zog.spin Quelldatei.
Also etwa 1 MIPS, mit 2 millionen Speicherzugriffe pro Sekunde, ein mahl ein byte Zugriff für opcode und ein mahl ein long Zugriff für Daten. Ich glaub ein MMU braucht auch etwa 20 Instruktionen wann man ein einfaches Schema für virtuelle nach reale adressierung und Zugriffüberwachung benutzt. Vielleicht sind die 2 mio Zugriffe pro Sekunde möglich mit kluger Programmierung.
Für Unix BSD2.11 braucht man 1mb Speicherraum und etwa 1 MIPS. Für Unix v6 und v7 reicht 256kb Speicher und etwa 0.5 MIPS.
Zum 16bit opcodes
Ich weiss nicht ob das besser wird. 16bit opcodes brauchen viele bit-field Operationen um zu decodieren, und brauchen viele weitere Speicherzugriffe. Im 'worst case' Fall - ADD @L1(R2), @L2(R3) - braucht ein einziges PDP11 opcode 7 weitere Speicherzugriffe! I denke im Durchschnitt braucht man ~40 Instruktionen um ein PDP11 zu machen, mit ein opcode Zugriff und ein Daten Zugriff. TI990 etwa gleich, vielleicht ein wenig schneller.
Zum Stack Entwurf ZPU/fbcc
Stack Maschinen brauchen mehr Speicherzugriffe als Register Maschinen. Vielleicht gibt es ein bessere Bilanz zwischen CPU Geschwindigkeit/Grosse und Durchschnitt Speicherzugriffe als man zum Bleispiel 4 register an das Entwurf zufügt. Ich glaub fbcc lasst uns einfach experimentieren mit solche Sachen.
Na, sinds unsere Probleme und Ueberlegungen genau die gleiche wie die Rechner Entwerfer im 70'er Jahren überwinnen musten....
Paul