Sonntag, 17. September 2006
Relaiscomputer: Verschiedene Ideen
kimnotyze, 20:38h
Ich habe mir überlegt, Lochkarten mit jeweils 16 Bit Fassungsvermögen zu benutzen, um Programme in den Späteren Computer zu Speisen. 4 Bit von den 16 Bit dienen dazu, um die Rechenoperation anzugeben (XOR, AND etc), 2 Bit für die Rechenparameter und 8 Bit Wahrscheinlich für die Ausgabeposition auf der LED-Matrix, da ich wahrscheinlich sowas wie ein Display mit niedriger Auflösung bauen werde.
Durch einen Demultiplexer werden die ersten 4 Bit ausgelesen und dadurch können 16 verschiedene Rechenoperationen ausgelesen werden. Die Rechenoperation nimmt als Parameter die 2 Bit von der Lochkarte, und führt die Operation aus. Das ergebnis wird über ein Routing system anschließend auf die, in den 8 Bitangegebene Position, dargestellt.
Dadurch werden auch simple Animationen und Spiele möglich, denn es wird auch möglich sein, statt den Parametern auf der Lochkarte, die Parameter über Taster einzugeben. Dafür werden die übrigen 2 Bit benötigt. Wenn wer was nicht verstanden hat fragen, ich weiss nich wie ich es anders schreiben soll ^^
Durch einen Demultiplexer werden die ersten 4 Bit ausgelesen und dadurch können 16 verschiedene Rechenoperationen ausgelesen werden. Die Rechenoperation nimmt als Parameter die 2 Bit von der Lochkarte, und führt die Operation aus. Das ergebnis wird über ein Routing system anschließend auf die, in den 8 Bitangegebene Position, dargestellt.
Dadurch werden auch simple Animationen und Spiele möglich, denn es wird auch möglich sein, statt den Parametern auf der Lochkarte, die Parameter über Taster einzugeben. Dafür werden die übrigen 2 Bit benötigt. Wenn wer was nicht verstanden hat fragen, ich weiss nich wie ich es anders schreiben soll ^^
... comment
photon,
Montag, 18. September 2006, 21:54
8Bit fuer die Ausgabe?
Habe ich richtig verstanden, dass du nur 2b (also zweimal 0 oder 1) fuer Rechenparameter verwenden moechtest, aber gleich 8b fuer die Ausgabekoordinaten opfern moechtest?
Bei einer einfachen sequentiellen Ausgabe auf dem Display, koenntest du die 8b fuer die Rechenparameter benutzen (also 10b => zweimal 0-31).
Damit lassen sich dann zwar keine Spiele machen, aber fuer die braucht man auch mehr als 2b-Rechenoperationen. (oder hast du vor, Operationen zu implementieren, die nicht mit immediates arbeiten, sondern auf einen Arbeitsspeicher/Register zugreifen?)
Bei einer einfachen sequentiellen Ausgabe auf dem Display, koenntest du die 8b fuer die Rechenparameter benutzen (also 10b => zweimal 0-31).
Damit lassen sich dann zwar keine Spiele machen, aber fuer die braucht man auch mehr als 2b-Rechenoperationen. (oder hast du vor, Operationen zu implementieren, die nicht mit immediates arbeiten, sondern auf einen Arbeitsspeicher/Register zugreifen?)
... link
kimnotyze,
Dienstag, 19. September 2006, 00:09
Da jeder Zyklus nur einen Befehl enthält, reichen 2 Bit für eine Operation. Zu den Registern empfehle ich meinen nächsten Post zu lesen ;)
... link
... comment
photon,
Montag, 18. September 2006, 22:22
andere Idee ;)
Idee:
4b instruction word + 12b befehlsabhaengige Daten
Beispiel:
load (laed Daten an Speicheradresse)
4b Speicheradresse (erlaubt 16 Speicherzellen a 8b)
8b Daten
(eine Store-Operation ist mit einem R/O-Datentraeger wie einer Lochkarte nicht moeglich)
xor (das Ergebnis der Verknuepfung wird nach A geschrieben)
4b Speicheradresse A
4b Speicheradresse B
ggf. 4b Padding
add (das Ergebnis der Addition -> A)
4b Speicheradresse A
4b Speicheradresse B
ggf. 4b Padding
und so weiter
out (schreibt auf das Display)
4b Speicheraddresse
8b Displaykoordinaten
in (liest von "Tastatur")
4b Speiceradresse
ggf. 8b Padding
um wirklich Spiele programmieren zu koennen, sind ausserdem (sehr schwierig implementierbare) Sprung- und Vergleichsbefehle unerlaesslich:
jmp (schiebt die Lochkarte weiter)
4b Offset
ggf. 8b Padding
je (schiebt die Lochkarte weiter, falls A = B)
4b Offset
4b Speicheradresse A
4b Speicheradresse B
jne (schiebt die Lochkarte weiter, falls A != B)
4b Offset
4b Speicheradresse A
4b Speicheradresse B
jg (schiebt die Lochkarte weiter, falls A > B)
4b Offset
4b Speicheradresse A
4b Speicheradresse B
jl (schiebt die Lochkarte weiter, falls A < B)
4b Offset
4b Speicheradresse A
4b Speicheradresse B
natuerlich kann man aehnlich wie unter x86 einen cmp-Befehl und Flags einfuehren...
Na ja, das ist schon schwer genug ;)
4b instruction word + 12b befehlsabhaengige Daten
Beispiel:
load (laed Daten an Speicheradresse)
4b Speicheradresse (erlaubt 16 Speicherzellen a 8b)
8b Daten
(eine Store-Operation ist mit einem R/O-Datentraeger wie einer Lochkarte nicht moeglich)
xor (das Ergebnis der Verknuepfung wird nach A geschrieben)
4b Speicheradresse A
4b Speicheradresse B
ggf. 4b Padding
add (das Ergebnis der Addition -> A)
4b Speicheradresse A
4b Speicheradresse B
ggf. 4b Padding
und so weiter
out (schreibt auf das Display)
4b Speicheraddresse
8b Displaykoordinaten
in (liest von "Tastatur")
4b Speiceradresse
ggf. 8b Padding
um wirklich Spiele programmieren zu koennen, sind ausserdem (sehr schwierig implementierbare) Sprung- und Vergleichsbefehle unerlaesslich:
jmp (schiebt die Lochkarte weiter)
4b Offset
ggf. 8b Padding
je (schiebt die Lochkarte weiter, falls A = B)
4b Offset
4b Speicheradresse A
4b Speicheradresse B
jne (schiebt die Lochkarte weiter, falls A != B)
4b Offset
4b Speicheradresse A
4b Speicheradresse B
jg (schiebt die Lochkarte weiter, falls A > B)
4b Offset
4b Speicheradresse A
4b Speicheradresse B
jl (schiebt die Lochkarte weiter, falls A < B)
4b Offset
4b Speicheradresse A
4b Speicheradresse B
natuerlich kann man aehnlich wie unter x86 einen cmp-Befehl und Flags einfuehren...
Na ja, das ist schon schwer genug ;)
... link
kimnotyze,
Dienstag, 19. September 2006, 00:08
photon, wir wollen kein x86 shice!
Ich möchte eine komplette neuentwicklung, die vielleicht auch etwas intuitiver fungiert als irgendwelche versucht nachgemachten x86 befehle mit store und ähnlichem.
... link
photon,
Dienstag, 19. September 2006, 00:23
load/store
Wenn mich meine Erinnerung nicht taeuscht, gibt es auf diversen RISC-Prozessoren (z.B. PPC) load/store, da diese nur Operationen auf Register ausfuehren.
x86 setzt auf viel komplexere Operationen, die aber im Gegensatz dazu nicht in einem Taktzyklus erledigt werden koennen.
kimnotyze wrote:
"Und mein Relaiscomputer ist IVR <- Intelligent verbundene Relais."
Ok, ok ;)
ich gebe mich geschlagen
x86 setzt auf viel komplexere Operationen, die aber im Gegensatz dazu nicht in einem Taktzyklus erledigt werden koennen.
kimnotyze wrote:
"Und mein Relaiscomputer ist IVR <- Intelligent verbundene Relais."
Ok, ok ;)
ich gebe mich geschlagen
... link
... comment