Ich habe WIRKLICH wirklich versucht, etwas über das sehr niedrige Niveau der Computer zu lernen. Ich habe mir viele Homebrew-Seiten angesehen und es ist ziemlich viel zu beachten. Ich habe Kurse in Elektrotechnik am College besucht, aber wir haben uns nicht wirklich eingehend mit diesem Thema befasst (es war Informatik, also die meisten davon waren in der Tat Algorithmen und so).
Wie werden / wurden die meisten ALUs gebaut? Mir ist klar, dass dies nicht der einzige Teil eines Computers ist, aber dennoch ein wichtiger Teil.
Und könnten Sie Ihre eigene ALU nur mit Logikgattern (zu Lernzwecken) erstellen? Ich verstehe, dass dies für Fachleute wahrscheinlich dumm klingt, aber ich versuche nur zu verstehen. (Heck, sogar ein einfacher Addierer wäre ein ordentliches Projekt.) Wenn ja, wie würde dies getan werden? Gibt es Hardwarebeispiele? (Ich habe mich bei Google umgesehen, aber ich kann nichts finden, das eine Schritt-für-Schritt-Anleitung enthält, in der die Dinge erklärt werden.)
Antworten:
Sie können sie vollständig aus einfachen Logikgattern erstellen, und das Ergebnis wird ein schönes Kunstwerk sein :-).
Die 74xx- Logikserie enthält auch eine 74LS181 , eine 4-Bit-Slice-ALU , die die Dinge drastisch vereinfacht. Bit-Slice-ALUs wurden verwendet, um komplexere ALUs zu erstellen (sprich: längere Wortlängen), aber neuere Technologien haben diese Art von ICs überflüssig gemacht.
Hinweis: TTL (74xx) ist nur eine Technologie für Logikgatter. Selten mehr benutzt. Es folgte Low-Power Schottky: 74LSxx, genau genommen auch eine Form von TTL. Heutzutage gibt es Dutzende von Logikfamilien, die alle auf Hochgeschwindigkeits-CMOS basieren (74HCxx, 74HCTxx, 74ACxx, ...).
Heutzutage besteht der richtige Weg zum Erstellen einer ALU darin, dies in einer CPLD oder einem FPGA zu tun . Dies gibt Ihnen viele Gatter, und die HDL (Hardware Description Language), mit der Sie die ALU entwerfen, ist viel einfacher und weniger fehleranfällig als der Versuch, herauszufinden, wie Sie die Verbindungen selbst mit den Logikgattern herstellen können. VHDL und Verilog sind die HDLs des Tages.
Eine alternative Methode zum Erstellen einer ALU (jedoch ohne Verwendung von Logikgattern) wäre ein einzelnes paralleles EEPROM / Flash . Sie verwenden die Eingänge A und B und die Operation als Eingabe (Adresse) und erhalten das Ergebnis der Operation als Ausgabe (Daten). Alles, was Sie tun müssen, ist den Inhalt des ROM zu kompilieren, was bedeutet, dass Sie an jeder Adresse schreiben müssen, was das Ergebnis der Operation für die entsprechenden Eingänge A, B und Operation sein wird. Die Wortgröße wird durch die größte ROM-Größe begrenzt, die Sie finden können.
quelle
Sie können Ihre eigene ALU erstellen, aber selbst alte Computer mit diskreten TTL-Chips haben dafür eine gewisse Integration verwendet. Schauen Sie sich zum Beispiel den 74x181-Chip an. Dies ist ein 4-Bit-Slice einer ALU und wurde in einigen TTL-Computern verwendet, um die vollständige ALU zu implementieren, indem einer dieser Chips für jeweils 4 Bits verwendet wurde.
quelle
Ich würde in der HDL-Welt zuerst starten. Schreiben Sie einen Verilog, simulieren Sie ihn mit Verilator oder icarus verilog. Schreiben Sie den Code so, dass er diskreten und oder oder nicht Toren ähnelt. Wenn Sie dazu neigen, finden Sie einige Teile der Serie 74xx (recycelt?) Und ein Steckbrett. ODER es gibt eine Reihe von CPLD- und FPGA-Karten im Wert von 50 USD plus oder minus, und Sie können die Alu in eine der Karten einbauen, die außen eine Schnittstelle haben, um zu sehen, ob sie funktioniert. Ich würde argumentieren, dass die HDL-Ausbildung dieselbe ist, bei der Sie die Grundlagen des Addierers usw. lernen und die Ein- und Ausgänge sowie die Bedienung muxen. Sie können dies jedoch in einer benutzerfreundlichen und sichtbaren Umgebung tun, bevor Sie es auf Hardware übertragen. Sehr ähnlich wie die Leute es heute tun, entwerfen und simulieren und dann bereitstellen.
quelle
Für Bücher unterstütze ich definitiv die "Patterson and Hennessy" -Bücher (IIRC gibt es 3, getarnt als 3 Ausgaben, aber in Wirklichkeit völlig andere Bücher. Wenn Sie es ernst meinen: holen Sie sich alle.)
Wenn Sie sich in die grundlegende ALU oder sogar in das CPU-Design einarbeiten möchten, experimentieren Sie mit einem Logiksimulator. Wir haben DigitalWorks für unsere Kurse verwendet, aber ich würde es nicht empfehlen. Logisim ( http://sourceforge.net/projects/circuit/ ) sieht vielversprechend aus. Was Sie beherrschen müssen, ist Layering: Erstellen Sie Basisblöcke wie einen Volladdierer, einen Selektor und ein flankengetriggertes Flipflop von Gates, und erstellen Sie dann Register, ALU, Sequenzierungslogik von diesen Bausteinen bis hin zu einer CPU mit Erinnerung. Es ist wirklich nicht so schwer zu bauen, sagen wir das Äquivalent einer PIC-CPU (14-Bit-Kern), schließen Sie eine Reihe von LEDs an und programmieren Sie sie so, dass sie ein Kitt-Display anzeigt.
Danach wird es Spaß machen, einen 32-Bit-Kern zu erstellen, GCC darauf zu portieren, ihn in einem FPGA zu realisieren und Linux darauf auszuführen. Aber du wirst nicht der erste sein ...
quelle
Es ist überhaupt keine dumme Frage. Die Wikipedia-Seite zeigt eine solche Schaltung auf Gate-Ebene für eine 2-Bit-ALU. ALU-ICs, die üblicherweise in "Slices" verfügbar sind - normalerweise 4-Bit-ICs, die Sie kaskadieren können, um größere Busbreiten zu erhalten (siehe Bit-Slicing ).
Das Datenblatt für die 4-Bit-Slice-ALU Texas 74181 enthält ebenfalls ein Schema auf Gate-Ebene.
quelle
Die Geschichte der CPUs handelt von einer zunehmenden Menge an Dingen pro Paket.
Die frühesten CPUs verwendeten immer serielle ALUs, die aus wenigen Relais oder Vakuumröhren aufgebaut waren. Der erste, der sich dieser Tradition widersetzte, war der Wirbelwind von 1947.
Die frühesten transistorisierten CPUs bauten alles aus einzelnen Transistoren.
Der Apollo Guidance Computer (AGM), vielleicht der erste Computer, der aus integrierten Schaltkreisen aufgebaut ist, verwendete nur eine Art von IC außerhalb des Speichers: NOR-Gatter mit 3 Eingängen. Die ALU und jeder andere Teil der CPU wurde vollständig aus einer großen Anzahl von NOR-Gate-ICs aufgebaut. Der (viel schnellere) Cray 1 verwendete auch nur eine Art von IC außerhalb des Speichers: eine andere Art von NOR-Gatter.
Als die Leute herausfanden, wie man mehr Transistoren auf einem Chip stopft, verwendeten spätere CPUs (relativ) weniger Chips, um eine ALU zu implementieren.
Eine ALU kann vollständig aus Multiplexern ( "Multiplexer: der taktische Kern des Logikdesigns" ) aufgebaut werden, wobei viel weniger Chips als bei der NOR-Implementierung verwendet werden.
Dieter Mueller hat ein 8-Bit-ALU-Design veröffentlicht, das mehr Funktionalität als zwei 74181-Chips bietet - der 74181 kann nicht nach rechts verschoben werden - und aus noch weniger Chips aufgebaut ist: 14 komplexe TTL-Chips: zwei 74283-4-Bit-Addierer, einige 4: 1 Mux und einige 2: 1 Mux.
Wie viele historisch wichtige kommerzielle Computer verwenden viele selbstgebraute CPUs eine Version des 74181, der ersten "vollständigen" ALU auf einem einzelnen Chip.
Viele dieser CPUs haben eine 8-Bit-ALU oder eine 16-Bit-ALU (oder beides) aus einigen 74181-Chips und einigen 74182-Chips erstellt - jede 74181 verarbeitet nur 4-Bit-Operationen. Homebrew-Maschinen verwenden normalerweise das einfachste, was funktionieren wird - das Ausführen eines 74181, das in das Einführen des nächsten eingespeist wird und einen Ripple-Carry-Addierer bildet. Kommerzielle Maschinen, die 74181-Chips verwenden, verwenden normalerweise einen 74182-Look-Ahead-Carry-Generator, um das Addieren und Subtrahieren erheblich zu beschleunigen.
Heutzutage sind die meisten ALUs in einem Chip versteckt - einem kleinen Teil einer CPU, einer anderen Art von ASIC oder einer CPLD oder einem FPGA.
Selbst nachdem "Single-Chip-Computer" verfügbar waren, baut gelegentlich jemand eine 74181-kompatible ALU aus einer GAL oder einer ALU, wobei nur einfachere Logikgatter oder sogar einzelne Transistoren oder Relais zu Lernzwecken verwendet werden.
Die Leute haben es getan, deshalb muss es möglich sein.
Eine Schritt-für-Schritt-Anleitung, die das Design und die Implementierung von ALU erklärt, klingt nach einer wirklich guten Idee. Bitte helfen Sie uns, eine im Microprocess Design-Wikibook zu schreiben, vielleicht in den Abschnitten "ALU" oder "Wire Wrap" .
quelle
Sie sollten sich die Elemente von Computersystemen von Nisan & Schocken ansehen .
quelle
In der Vergangenheit wurden einige ALU-Arbeiten mit Diskreten (ja, Transistoren und dergleichen) und einige mit Gates und viele mit 4-Bit-Slice-Chips durchgeführt (SN74181 von TI war früh und Fairchild 29F01 hatte seinen Tag).
Aber HEUTE geht es darum, die Logikgleichungen in einer Gate-Array- oder PLA-Logikbeschreibungssprache zu erstellen. Es gibt im Handel erhältliche vorgefertigte Module, die jede ausgewählte kleine Logikeinheit in Ihr Design integrieren. Sie benötigen lediglich Geld, um das "IP" (geistiges Eigentum) zu lizenzieren.
quelle