Erstellen eines primitiven Computers von Grund auf neu

Ein Computer ist einfach. Oder nicht?


Wer sich für Informationstechnologie interessiert, hat sich zumindest einmal Gedanken darüber gemacht, wie der Computer tatsächlich funktioniert. Und tatsächlich kann man mit Hilfe eines Computers so viel von allem Überraschendes tun, dass man unmöglich glauben kann, dass alles, was darin passiert, die Addition von Zahlen ist. Warum nicht selber machen?

Bild

Diese Idee wird in Charles Petzolds Buch "Code" deutlich - eine gute Lektüre für diejenigen, die das Computergerät auf ihren Fingern verstehen wollen, ohne zu viel Zeit zu verbringen. Dieses Buch hat mich so sehr beeindruckt, dass ich beschlossen habe, dass es sich bei dem Computer um eine ganz einfache Einheit handelt, an der nichts kompliziert ist.

Aber das ist nicht so. Nach dem Lesen hatte ich immer noch das Gefühl, dass etwas vor mir verborgen war, dass einige Aspekte der Architektur überhaupt nicht betroffen waren. Für weitere Informationen habe ich mich dem nächsten Buch, Computer Architecture von Andrew Tanenbaum , zugewandt. Die Informationen in diesem Buch waren viel umfangreicher, aber ich habe nicht genau das bekommen, was ich wollte.

Auf diesem Weg stoppte mein Weg in die Welt der Computerarchitektur, das Studium begann, ich wurde von anderen Projekten abgelenkt, die für mich damals interessanter waren. Aber ich gehöre leider zu den Leuten, die ohne Reue nichts gebrauchen können und den Mechanismus dieses Werkzeugs nicht zumindest grob kennen. Ich habe nach Material für alles gesucht.

Eine Reihe von Enttäuschungen kam auf, nachdem ich mehrere Kapitel von Büchern über Game-Engines, Compiler, Betriebssysteme usw. gelesen hatte. Ich war nur ratlos: Eine Welt, die logisch und in einem Moment mäßig einfach wirkte, wurde riesig und verwirrend und erforderte eine beeindruckende Menge an Wissen.

Der Beginn einer großen Reise


Was mich gerettet hat, war die Reaktion eines Benutzers in einem Forum auf den Beitrag einer Person, die an einer ähnlichen „Störung“ leidet. Die IT-Welt schien ihm so riesig, dass man sie mit Sicherheit nicht nachvollziehen konnte. Ich erinnere mich an diese Worte und sie helfen mir jedes Mal, wenn ich auf etwas Neues stoße. "Lassen Sie sich nicht überwältigen" , sollte jeder IT-Neuling sagen.

Und dann begann ich mit neuer Kraft im Internet zu surfen, um nach Literatur zu suchen. Ich hatte großes Glück, auf das wunderbare Buch The Elements of Computing Systems gestoßen zu sein. Aufbau eines modernen Computers nach ersten Prinzipien “von Noam Nisan und Shimon Schocken (keine russische Ausgabe). Es ist für diejenigen wie mich, die die Schaffung eines wirklich funktionierenden Computers von Grund auf zeigen, das heißt von logischen Toren.

Ich hatte eine Idee und fing an zu arbeiten. Er begann mit dem, was er einmal getan hatte, nachdem er Petzold gelesen hatte - Addierer, Register, Multiplexer. Dies sind einige der einfachsten Geräte, deren Arbeit überhaupt nicht schwer zu verstehen ist (wenn Sie nicht über Effizienz nachdenken) und die Sie in 10 Minuten in einer praktischen Anwendung auf Ihrem Smartphone ausführen können.

Ich begann jedes nächste Kapitel mit einem Wissensdurst. Designed ALU, angeleitet von den Aufgaben im Buch. Ich kann nicht sagen, dass ich etwas darin gefunden habe, sondern sie haben mir die fertigen Teile gegeben und ich habe sie in einem schönen Auto zusammengesetzt. Was für ein Vergnügen, als ich merkte, dass ich eine voll funktionsfähige ALU mit meinen eigenen Händen zusammengebaut hatte.

Platine ALU, hergestellt im Programm BOOLR
Bild

Erste Früchte


Es folgte ein voll funktionsfähiger 16-Bit-Prozessor, den ich heute fertiggestellt habe. Meinem Glück sind keine Grenzen gesetzt, aber ich werde nicht aufhören. Zu meinem Bedauern wurde der gesamte Prozessor des Buches von Grund auf neu zusammengestellt. Der Assembler dafür war eine Abstraktion im nächsten Kapitel (was logisch ist, das Buch ist für eine mehr oder weniger präzise, ​​wenn auch detaillierte Darstellung ausgelegt). Nach einiger Trauer wurde mir klar, dass Assemblies auch eine Programmiersprache sind, und das Erstellen eines vollwertigen Assemblers von Grund auf wird viel Zeit in Anspruch nehmen.

Schema des fertigen Verarbeiters. Der große schwarze Fleck ist der gleiche ALU
Bild

Über Assembler in einem Buch
Tatsächlich wurde dieses Thema in dem Buch nicht vollständig weggelassen. Es heißt, dass Assembler mit jeder höheren Programmiersprache geschrieben werden kann. Als Idiot und Mutiger passt diese Option nicht zu mir, ich möchte alles mit meinen eigenen Händen mit dem Prozessor machen, den ich habe. Und ja, ich verstehe, dass ich viel Zeit verlieren werde, aber ich werde es genießen, da bin ich mir sicher.

Das Schreiben Ihres Assemblers ist ein ehrgeiziges Ziel, aber dies ist nicht die einzige Schwierigkeit. Der Weg, den ich gewählt habe, verspricht schwierig zu werden. Register und im Allgemeinen Speicher im BOOLR-Programm können nur mit Logikgattern implementiert werden. Warum ist das ein Problem? Es ist ganz einfach: Unbedeutende 1024 Bytes RAM versuchen Dutzende Male rekursiv, ihre zusammengesetzten 16-Bit-Register in den RAM meines Computers zu stellen. Folgendes kommt dabei heraus:

Screenshot aus der Task-Manager-Prozessliste

Im Allgemeinen lässt sich ein Projekt manchmal einfach nicht öffnen, weil der Arbeitsspeicher nicht ausreicht. Es sieht aus wie eine Sackgasse, aber ich habe nicht vor, hier aufzuhören.

Source: https://habr.com/ru/post/de483568/


All Articles