Homebrew-Computer - TTL/FPA-Computer, auf dem ein POSIX-Betriebssystem ausgeführt werden kann? [geschlossen]

Das Internet ist voll von inspirierenden Beispielen für selbstgebaute Computer , darunter solche, die aus Relais und TTL-Gattern bestehen .

Im ersten Jahr des Make Magazine beschreiben sie eine Person, die einen einfachen programmierbaren Computer mit TTL-Gattern baut. Sie schließen mit dem Spin "Ich werde es verlängern, bis ich Zork spielen kann!"

Meine Frage ist: Gibt es einen TTL/FPGA-Computer im Homebrew-Stil, auf dem ein POSIX-Betriebssystem ausgeführt werden kann?

Bearbeiten:

Die Antwort ist wahrscheinlich ja, irgendein Spinner mit zu viel Freizeit hat einen gebaut. Meine Frage ist: Warum? Es wäre ein nutzloser Anachronismus, der eine beträchtliche Menge an mentaler Qual erfordern würde, um ihn zu erzeugen.
@markt Sei nicht so negativ. Es kann triftige Gründe geben, einen Computer aus diskreten Teilen zu bauen, z. B. um zu lernen, wie er funktioniert, oder um seine Funktion zu demonstrieren. Obwohl ich auch keinen großen Sinn darin sehe, es POSIX-kompatibel zu machen. Aber es gibt schlimmere Hobbys.
und vor allem spricht er auch von fpga. Sie können einen vollständigen Computer auf sogar nicht so erstklassigen Chips schreiben und eine Linux-Variante darauf ausführen.
Oh, ich stimme im Prinzip zu - es ist ein interessantes Projekt. Einfach völlig sinnlos. Das FPGA war übrigens ein Add-On nach der Antwort von @ MarkU (und macht imo einen verdammten Anblick mehr Sinn - das habe ich selbst gemacht).
Sie verwirren die Dinge, POSIX ist eine Definition der Schnittstelle zwischen dem Betriebssystem und Anwendungen, sie hat keinen Einfluss auf die zugrunde liegende Hardware.
Danke @placeholder POSIX ist ein 'nötiges Minimum'. Wenn Sie mich auf eine POSIX-Implementierung verweisen können, die auf einem 4-Bit-TTL-Logikgatter-Computer läuft, wäre das sehr dankbar. Ich brauche etwas, um GCC auszuführen - und dafür brauche ich POSIX. Der Punkt war, die Frage zu erweitern, um sie breit zu machen.

Antworten (2)

Ich empfehle dringend, eine vorhandene Instruction Set Architecture (ISA) zu übernehmen, es sei denn, Sie sind sehr daran interessiert, Ihren eigenen C-Compiler zu schreiben. Ein damit zusammenhängendes Problem ist, sollte Ihr Computer „Selbsthoster“ sein? Möchten Sie, dass die Maschine in der Lage ist, den Compiler auszuführen und Programme zu kompilieren, einschließlich des Betriebssystems auf sich selbst? Die Auswirkungen dieser Entscheidung schränken mehrere Möglichkeiten ein.

Ein weiteres Problem ist, was Sie vom "POSIX OS" erwarten. POSIX war eine von UNIX abgeleitete Spezifikation. Sie könnten eine "echte" UNIX-Variante ausführen. Quellen werden bei The Unix Heritage Society gespeichert .

Wenn „Self-Hosting“ eine Anforderung ist, dann ist Ihre einzige 16-Bit- CPU-Wahl wahrscheinlich PDP-11 und verwenden Sie UNIX Edition 6, Edition 7 oder frühe BSDs. Siehe Welche Unixe laufen auf welchen PDPs? . Es wird schwierig sein, ein modernes UNIX-ähnliches System auf etwas so Kleines zu stopfen.

Ich denke, ein PDP-11 könnte in 'TTL' implementiert werden. Es hatte jedoch einen recht komplexen Befehlssatz (mit vielen Adressierungsmodi und Befehlen mit mehreren Längen). Der Vorteil ist, dass Sie einen Compiler, ein funktionierendes UNIX und wahrscheinlich eine Menge Leute haben würden, die an einer Zusammenarbeit interessiert sein könnten.

Um die Anzahl der Chips zu reduzieren, verwendeten Designs „Bit-Slicing“. Typischerweise implementierte dies 4 Bit breite „Slices“ durch eine CPU und konnte Seite an Seite „kaskadiert“ werden, um eine Maschine mit beliebiger Breite in Vielfachen von 4 Bit zu erstellen. Diese Maschinen wurden normalerweise von Mikrocode gesteuert, der jeden Schritt innerhalb jeder Anweisung koordinierte. Der Mikrocode könnte geändert werden, sodass er fast jeden gewünschten Befehlssatz enthalten könnte. Wenn der Mikrocodespeicher RAM wäre, könnte er seinen Befehlssatz im laufenden Betrieb ändern!

Eine beliebte Bit-Slice-Familie war AMDs 2900-Bit-Slice . Viele Maschinen wurden damit gebaut, darunter einige 32-Bit (IIRC). Ich habe eine schnelle Suche gehabt, und ich kann niemanden mehr finden, der das macht.

Es sieht jedoch so aus, als ob der 74181 von TI verfügbar ist. Es ist eine 4 Bit breite Bit-Slice-ALU. Es wurde in vielen bedeutenden Maschinen der 70er Jahre verwendet, zB in der Xerox Alto .

Die Umstellung auf 32 Bit bietet viel mehr Optionen. Die Leute haben in den 80er Jahren kommerzielle 32-Bit-Maschinen aus diskreter Logik gebaut, manchmal mit Bit-Slice, aber sie waren ziemlich komplex.

Wenn Sie eine vorhandene Instruction Set Architecture (ISA) wählen, erhalten Sie möglicherweise einen portablen Compiler und eine Version von xBSD, Linux, OpenSolaris usw., die Ihre POSIX-Anforderungen erfüllt.

Vermeiden Sie stark geschütztes geistiges Eigentum oder komplexe Befehlssätze. Anstelle von Intel, ARM oder IBM könnten Sie eine vorhandene RISC- ISA wählen. Mit RISC besteht eine gute Chance, das Design zu verstehen und zum Laufen zu bringen.

Verwenden Sie ein vorhandenes FPGA-Entwicklungsboard, um loszulegen und schnell Fortschritte zu erzielen. Sie könnten eine Maschine haben, die schnell funktioniert, ohne dass Elektronik gebaut oder debuggt werden muss. Sie können sich immer noch dafür entscheiden, benutzerdefinierte Hardware zu bauen, sobald das FPGA alles bewiesen hat. Sie könnten das FPGA sogar in Teilen auf diskrete Logik migrieren, eine Option, die frühere Designer nicht hatten.

Es gibt viele 32-Bit-Architekturen, die ein POSIX-Betriebssystem unterstützen. Wenn Sie nur Xilinx-FPGAs verwendet haben, gibt es MicroBlaze . Das hat eine Menge Flexibilität in seiner Implementierung und hat auch sowohl GNU-Tool-Unterstützung für die Compiler-Tool-Kette als auch Linux-Unterstützung.

Versuchen Sie, eine bestehende 'RISC'-Architektur zu implementieren, die explizit Open Source ist und über eine aktive Community verfügt, die möglicherweise daran interessiert ist, zu helfen.

Drei Anwärter:

Sie alle haben FPGA-Implementierungen.

OpenSPARC hat viele POSIX-Betriebssysteme. OpenRISC scheint viele verwandte Hardware-IPs zu haben, die hilfreich sein könnten

RISC-V bewirbt sich, die Open Source Instruction Set Architecture (ISA) zu werden . Es handelt sich um Personen, die am Berkely RISC gearbeitet hatten, das zum SPARC führte. RISC-V ist MIPS viel ähnlicher und behauptet, dass einige der schwächeren Entscheidungen verbessert wurden.

Nützliche Referenzen:
OpenCores
SPARC
OpenSPARC T1
OpenSPARC T2
Der Fall für RISC-V

Noch eine Referenz - RetroBSD - retrobsd.org/wiki/doku.php

Wenn Sie fragen, was zum Aufbau eines solchen Projekts erforderlich wäre:

Der erste Schritt besteht darin, auszuwählen, welche Prozessorarchitektur Sie erstellen möchten, und dann eine tatsächliche Linux-Distribution von Red Hat oder SuSE oder BSD zu finden, die auf dieser Architektur ausgeführt wird. Beispielsweise könnte i386-32bit oder ARM-32bit ein Ausgangspunkt sein. Ich bezweifle, dass Sie eine (moderne) Distribution finden werden, die auf 16-Bit- oder 8-Bit-Architekturen läuft. (Laut @DaveTweed ist der DEC PDP-11 16-Bit, das könnte ein guter Anfang sein. Geburtsort von Unix und C)

Angenommen, Sie entscheiden sich für i386-32bit und finden eine kostenlose Open-Source-POSIX-OS-Distribution, die Sie verwenden möchten. Dann besteht der nächste Schritt darin, tatsächlich eine Hardware zu entwerfen und zu bauen, die i386-Maschinencode ausführt. Aus diskreten TTL-Logikgattern. Und baue es. Und teste es.

Ich würde vorschlagen, auf opencores.org nach verfügbaren VHDL/Verilog-Mikroprozessorkernen zu suchen. Normalerweise würden diese in einem FPGA oder einem ASIC implementiert, aber die einzigen Gründe, keine diskreten TTL-Gatter zu verwenden, sind Kosten, Aufwand und Flexibilität. Das sind eigentlich ziemlich zwingende Gründe.

Der Bau eines 4-Bit-Mikrocontrollers ist ein viel, viel kleineres und überschaubareres Projekt als der Bau eines 32-Bit- oder 64-Bit-Computers, wie es ein modernes POSIX-Betriebssystem normalerweise erfordern würde. Es ist mehr als nur ein um den Faktor 16 breiterer Datenbus zu skalieren, es ist auch der Adressbus, die Adressdekodierungslogik, die Befehlsdekodierungslogik, die ALU, die Register ... und Sie würden eine ganze Reihe von Kabeln manuell verbinden . Viel Glück beim Finden des Problems, wenn einer dieser Drähte abbricht oder irgendwo ein Kurzschluss ist.

Ich nehme an, dass ein Teil des Reizes dieser Idee darin besteht, etwas selbst zu bauen, aber bedenken Sie die Kosten eines neuen oder gebrauchten PCs – wenn das Ziel darin besteht, Linux auszuführen, gibt es einfachere und kostengünstigere Möglichkeiten.

Bearbeiten: Ja, FPGA ist definitiv besser als diskretes TTL für ein Projekt dieser Größenordnung. Suchen Sie nach einem FPGA-Entwicklungsboard mit so vielen LUT-/Registerblöcken, wie Sie sich leisten können, und integriertem DDR3-Speicher.

Es gibt viele 16-Bit-Architekturen, die ein POSIX-kompatibles Betriebssystem ausführen können, beginnend mit dem DEC PDP-11.