Nachbildung einer Von-Neumann-Architektur will "atmen"

OP #7837973
Lesenswert?

Hallo, ich bitte vorweg um Nachsicht dafür, falls das Nachfolgende unbeholfen klingen mag. Doch bin ich kein gelernter Informatiker, aber dennoch sehr daran interessiert, was im Innersten eines Computers im Einzelnen geschieht. Stichwort: »Von-Neumann-Archtitektur«

Hierzug erkunde ich seit einiger Zeit eine Reihe von Simulatoren, die die einzelnen Prozesse teilweise höchst anschaulich abbilden und auch dazu anregen wollen, selbst kleine Programme zu schreiben, welche dann (in Maschinensprache übersetzt) in ihrer Auswirkung am Modell konkret beobachtet und studiert werden können. Ich bin einfach fasziniert davon.

Nun komme ich zu meinem eigentlichen Anliegen: Ich bräuchte bitte ein wenig Unterstützung dabei, um einen Code für einen ganz bestimmten Simulator zum Leben zu erwecken, sprich: executable machen zu können. Die Kenntnisse dazu fehlen mir leider völlig; selbst das geduldige Recherchieren darüber, wie man dabei vorgehen muss/müsste, verkleinerte nicht im Geringsten die Distanz zum Erfolg ... und so wende ich mich nun also an Euch Fachleute.

Hierum geht's: https://github.com/PAntoine/Little-Man-Computer

Es gibt eine Überraschung für denjenigen, der mir beim Lösen meines kleinen Problems behilflich ist – Ehrenwort!

OP #7837987
Lesenswert?

Hallo, danke erst einmal für Eure rasche Antwort bzw. Fragen! Nun ja, doch wie gehe ich da im Detail vor? Ich hatte noch nie mit Xilinx zu tun. Ich nehme an, dass ich sämtliche im Repository (siehe obigen Link im Eingangsposting) befindlichen Verzeichnisse und Dateien zur Ausführung benötigen werde. Oder muss da bereits Grundsätzliches beachtet werden?

Bedenke bitte, dass ich so etwas noch nie gemacht habe. Ich hatte es ja, wie erwähnt, mit Nachlesen versucht, doch da sehe ich den Wald vor lauter Bäumen nicht.

Und zur zweiten Frage (von christian_m280): Alles, was ich schrieb, bezieht sich allein auf die im Repository enthaltenen Dateien. Ich nahm an, dass man damit in einer geeigneten Umgebung die Simulation ausführen könne.

Gast #7838004
Lesenswert?

Hast Du Dir den Artikel in der Wikipedia (https://en.wikipedia.org/wiki/Little_man_computer) angeguckt und gelesen?

Das gezeigte Github-Projekt ist eine kleine Fingeruebung fuer einen kleinen Forschungsprozessor, genauer gesagt den Little Man Computer (von Dr.Stuart Madnick an der ISU in 1965). Das war damals Stand der Forschung wie man das Steuerwerk durch einen Computer ersetzt (da kam auch die PDP8 auf den Markt). Ueber die PDP8 findest Du genug Literatur.

Es stellt sich allerdings die Frage was Du mit sechzig Jahre alter Technologie machen willst? Wenn Du mehr Theorie der Rechenwerke angucken willst, wuerde ich den MIX-Prozessor benutzen (siehe Knuth, TaoCP, Vol.1, 1968(!)) oder, wenn Du mehr Hardware sehen willst, Computerarchitektur (z.B. Ward/Halstaed, Computation Structures, MIT Press, 1986).

Gruesse

OP #7838014
Lesenswert?

Also ich versuche es einaml neu zu formulieren: Wie würdet ihr dabei vorgehen, wenn ihr obiges Projekt einmal selbst ausprobieren wolltet? Das heißt, wenn ihr tatsächlich im Assembler-Eingabefeld Instruktionen eintragen und das Programm dann durchlaufen lassen möchtet?

Der Entwickler muss ja auch irgendwie damit gearbeitet haben um es testen zu können. Ich hatte wirklich noch nie mit einem Projekt auf Github zu tun, deshalb bitte ich Euch da wirklich sehr um Verständnis, wenn ich so alberne Dinge frage ;)

Beitrag #7838016 wurde von einem Moderator gelöscht.
#7838062
Lesenswert?

Fuer Lernzwecke in der Art um 'mal eben' zu spielen gibt es diverse Playgrounds (im Browser), aber leider muss man auch da die Designsprache erst mal beherrschen. Und spaetestens bei der Ausfuehrung von Code ist schluss.

Mein Vorgehen bei externen V*-Projekten, die kaum dokumentiert oder nicht fertig zum sofortigen Laufenlassen sind:

  • Jupyter Notebook mit fertigem Playground (icarus, GHDL, yosys, usw.) aufmachen
  • Jeden Schritt von Source-Checkout bis zur laufenden Testbench brav dokumentieren und Rekonstruierbarkeit testen

So wie ich obiges Projekt ueberflogen habe, fehlt da einiges, um es mal eben schnell zu bauen resp. es in einer Referenzumgebung zu testen.

TODO also vermutlich:

  • Assembler compilieren
  • VHDL-Simulator aussuchen (GHDL oder kommerzielles tool)
  • Programm uebersetzen, in VHDL-ROM-Form bringen, Testbench nudeln lassen
  • Signale mit GTKWave o.ae. anschauen

Wie das im Notebook grundsaetzlich laeuft, kann man hier sehen: https://github.com/pcornier/1pCPU.

Gast #7838100
Lesenswert?

Susan R. schrieb:

Also ich versuche es einaml neu zu formulieren: Wie würdet ihr dabei vorgehen, wenn ihr obiges Projekt einmal selbst ausprobieren wolltet? Das heißt, wenn ihr tatsächlich im Assembler-Eingabefeld Instruktionen eintragen und das Programm dann durchlaufen lassen möchtet?

Weil ich die Hardware nicht habe, wuerde ich eine Suchmaschine (z.B. Google.com) benutzen, um einen Simulator zu finden:

https://oinf.ch/interactive/little-man-computer/

https://peterhigginson.co.uk/lmc/

Der Entwickler muss ja auch irgendwie damit gearbeitet haben um es testen zu können. Ich hatte wirklich noch nie mit einem Projekt auf Github zu tun, deshalb bitte ich Euch da wirklich sehr um Verständnis, wenn ich so alberne Dinge frage ;)

Du brauchst bei github gar nichts machen (noch nicht einmal einen Account): Entweder (unter linux)

1
git clone https://github.com/PAntoine/Little-Man-Computer.git

oder einen beliebigen git-Client bei Windows. Und dann muss man gucken, was sich der Autor so gedacht hat. Die Erguesse auf Github sind nicht unbedingt immer funktionsfaehig oder lauffaehig, vor allen Dingen nach 15 Jahren.

#7838402
Lesenswert?

Entschuldigung, falls das jetzt "von oben herab" klingt. Du schreibst vorweg, dass Du nicht so viel Ahnung hast. Du weißt wahrscheinlich nicht, was ein FPGA ist. Ich vermute mal, Du suchst einfach einen Simulator für den Little Man Computer. Probiere die beiden Links, die Thomas W. (vaxman) angegeben hat.

Das, was Du unter https://github.com/PAntoine/Little-Man-Computer gefunden hast, ist etwas komplett anderes. Ja, man kann das in einem Simulator abarbeiten lassen. Aber sofern Dein erster Post Deinen Kenntnisstand einigermaßen zutreffend beschreibt, ist das NICHT das, was Du tun möchtest.

#7844470
Lesenswert?

Susan R. schrieb:

Ich bräuchte bitte ein wenig Unterstützung dabei, um einen Code für einen ganz bestimmten Simulator zum Leben zu erwecken

Streiche "ein wenig". Compiler und Simulatoren selber zu bauen, braucht schon exzellente Programmierkenntnisse, sowie viel Wissen und Erfahrung. Ist quasi so, Du willst sofort den Mount Everest besteigen und weißt nichtmal, wie Du die erste Treppenstufe von Deinem Haus hochkommst.

Nimm daher erstmal eine fertige IDE (= Editor, Compiler, Simulator, Programmer, Debugger) für irgend eine CPU und lerne diese damit Schritt für Schritt kennen. Damit kannst Du nicht nur theoretisch Programme ausführen, sondern sie auch in das Target laden und in Echt laufen lassen (z.B. eine LED blinken lassen, Taste abfragen usw.).

Susan R. schrieb:

Wie würdet ihr dabei vorgehen, wenn ihr obiges Projekt einmal selbst ausprobieren wolltet?

Es sein lassen. Das ist uralt (2011). Da würde ich mal stark bezweifeln, daß man den Chip und alle alten Tools dafür überhaupt noch beschaffen und fehlerfrei installieren kann. Und Du kannst vermutlich auch kein C und VHDL, um selber die Probleme zu lösen. Auch scheint es eher so, als daß er mittendrin aufgehört hat, d.h. es ist nichtmal komplett.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren