Ich gehe das Buch "Elemente von Computersystemen" durch. In diesem Buch erfahren Sie, wie Sie einen ganzen Computer von Grund auf neu erstellen. Während ich nur die Kapitel über Computerarchitektur durchblätterte, bemerkte ich, dass sich alles auf die Von Neumann-Architektur konzentrierte. Ich war nur neugierig, was die anderen Architekturen sind und wann und wo sie verwendet werden.
Ich kenne nur zwei, einer ist Von Neumann und der zweite ist Harvard. Ich kenne auch RISC, das in uC von AVR verwendet wird.
architecture
computers
Rick_2047
quelle
quelle
Antworten:
Es gibt viele verschiedene Arten von Computerarchitekturen.
Eine Möglichkeit zur Kategorisierung von Computerarchitekturen besteht in der Anzahl der Befehle, die pro Takt ausgeführt werden. Viele Computer lesen jeweils einen Befehl und führen ihn aus (oder sie geben sich viel Mühe, so zu tun, als obsie machen das, auch wenn sie intern Lust auf superskalare und außer Betrieb befindliche Sachen haben). Ich nenne solche Maschinen "von Neumann" -Maschinen, weil sie alle einen von Neumann-Engpass haben. Solche Maschinen umfassen CISC-, RISC-, MISC-, TTA- und DSP-Architekturen. Solche Maschinen umfassen Akkumulatormaschinen, Registermaschinen und Stapelmaschinen. Andere Maschinen lesen und führen mehrere Befehle gleichzeitig aus (VLIW, super-scalar), die die Grenze von einem Befehl pro Takt überschreiten, aber dennoch den von Neumann-Engpass bei einer etwas größeren Anzahl von Befehlen pro Takt treffen. Wieder andere Maschinen sind nicht durch den von Neumann-Engpass eingeschränkt, da sie alle Vorgänge beim Einschalten einmal vorladen und dann Daten ohne weitere Anweisungen verarbeiten. Solche Nicht-Von-Neumann-Maschinen umfassen Datenflussarchitekturen,
Eine andere Möglichkeit zur Kategorisierung von Computerarchitekturen besteht in der Verbindung (en) zwischen CPU und Speicher. Einige Maschinen haben einen einheitlichen Speicher, so dass eine einzelne Adresse einer einzelnen Stelle im Speicher entspricht. Wenn dieser Speicher RAM ist, kann man diese Adresse zum Lesen und Schreiben von Daten verwenden oder diese Adresse in den Programmzähler laden, um Code auszuführen. Ich nenne diese Maschinen Princeton-Maschinen. Andere Maschinen haben mehrere separate Speicherbereiche, so dass der Programmzähler immer auf "Programmspeicher" verweist, unabhängig davon, welche Adresse in ihn geladen ist, und normale Lese- und Schreibvorgänge gehen immer in "Datenspeicher", der ein separater Ort ist, der normalerweise unterschiedliche enthält Informationen auch dann, wenn die Bits der Datenadresse zufällig mit den Bits der Programmspeicheradresse identisch sind. Diese Maschinen sind "pure Harvard" oder "
Einige Leute verwenden eine enge Definition von "von Neumann-Maschine", die Harvard-Maschinen nicht einschließt. Wenn Sie eine dieser Personen sind, welchen Begriff würden Sie dann für das allgemeinere Konzept einer Maschine mit einem von Neumann-Engpass verwenden, die sowohl Harvard- als auch Princeton-Maschinen umfasst und NON-VON ausschließt?
Die meisten eingebetteten Systeme verwenden die Harvard-Architektur. Einige CPUs sind "pure Harvard", was vielleicht die einfachste Anordnung ist, Hardware einzubauen: Der Adressbus zum Nur-Lese-Programmspeicher ist ausschließlich mit dem Programmzähler verbunden, so wie viele frühe Microchip PICmicros. Einige modifizierte Harvard-Maschinen speichern außerdem Konstanten im Programmspeicher, die mit einem speziellen Befehl "Konstante Daten aus dem Programmspeicher lesen" (anders als der Befehl "Aus dem Datenspeicher lesen") gelesen werden können. Die Software, die auf den oben genannten Arten von Harvard-Maschinen ausgeführt wird, kann den Programmspeicher, der für diese Software effektiv ROM ist, nicht ändern. Einige eingebettete Systeme sind "selbstprogrammierbar", normalerweise mit einem Programmspeicher im Flash-Speicher und einem speziellen "Löschblock im Flash-Speicher". Anweisung und eine spezielle Anweisung "Block des Flash-Speichers schreiben" (anders als die normale Anweisung "In den Datenspeicher schreiben") zusätzlich zur Anweisung "Daten aus dem Programmspeicher lesen". Mehrere neuere Microchip PICmicros- und Atmel-AVRs sind selbst programmierbare modifizierte Harvard-Maschinen.
Eine andere Möglichkeit, CPUs zu kategorisieren, ist die Taktung. Die meisten Computer sind synchron - sie haben eine einzige globale Uhr. Einige CPUs sind asynchron - sie haben keine Uhr - einschließlich ILLIAC I und ILLIAC II, die zu einer Zeit die schnellsten Supercomputer der Welt waren.
Bitte helfen Sie bei der Verbesserung der Beschreibung aller Arten von Computerarchitekturen unter http://en.wikibooks.org/wiki/Microprocessor_Design/Computer_Architecture .
quelle
CISC ist das "Gegenteil" von RISC. Während RISC einfache Anweisungen bevorzugt, die für den Compiler leicht zu optimieren sind und häufig dieselbe Größe aufweisen, mag CISC komplexe Anweisungen unterschiedlicher Größe.
Beispielsweise ändert eine Pop-Anweisung in CISC den Stapelzeiger und platziert die Daten aus dem Stapel in einem anderen Register. Ein RISC-Prozessor würde jedoch die Daten mit einem Befehl lesen und dann den Stapelzeiger mit einem zweiten Befehl modifizieren. (Im Allgemeinen gibt es einige Ausnahmen, wie den PowerPC, der den Stapelzeiger aktualisieren und Daten auf den Stapel übertragen kann, aber das ist eine Ausnahme.)
Da RISC-Anweisungen alle dieselbe Größe haben, können Disassembler leichter geschrieben werden. Das Entwerfen des Prozessors ist auch einfacher, da die Pipeline keine unterschiedlichen Befehlsgrößen berücksichtigen muss. Die CISC-Codedichte ist jedoch tendenziell besser, sowohl weil die komplexen Befehle weniger Bytes erfordern, um die gleiche Anzahl von Operationen darzustellen, als auch weil die variable Befehlslänge eine gewisse "Komprimierung" zulässt.
Es gibt auch andere exotische Architekturen wie VLIW / EPIC. Diese Art von Architektur wurde unter Berücksichtigung der Parallelverarbeitung entworfen. Sie haben sich jedoch nicht besonders gut geschlagen, da sie dem Compiler eine sehr große Belastung bei der Optimierung auferlegen, während andere Architekturen ausgefallene Anweisungsfenster aufweisen, die den Compiler etwas von der Optimierungslast entlasten.
quelle
Nun, es gibt so etwas wie den ENIAC, bei dem Sie im Wesentlichen einzelne ALUs haben und diese "programmieren", indem Sie den Ausgang eines Alus mit dem Eingang eines anderen Alus verbinden, der die nächste Operation für diese Zwischenvariable ausführen wird. Ihre "Register" und Speicher sind die Drähte, die die Alus verbinden.
Ich habe kürzlich das Buch "Die ersten Computer - Geschichte und Architekturen (Geschichte des Rechnens)" gekauft, das sich zum Teil genau auf dieses Thema konzentriert. Ich empfehle nicht, dieses Buch zu kaufen, obwohl es nur eine Sammlung von wissenschaftlichen Artikeln ist, die schwer zu lesen sind und ich vermute, dass sie (kostenlos) an anderer Stelle veröffentlicht wurden. (Ich habe es aufgegeben, bevor ich die Einführung beendet habe)
Sobald die Erinnerung erfunden und praktisch wurde, haben wir uns mit den beiden populären von Neumann und Harvard eingelebt. Das Ausführen von Neuverkabelungen, Lochkarten, Papierbändern oder ähnlichen Dingen wurde weniger praktisch. Und es gibt Stack-basierte (z. B. das zpu), von denen ich vermute, dass sie in die Harvard-Kategorie fallen und nicht in die eigene.
Was ist mit von neumann-Plattformen, die auf einer Speicherschnittstelle von einem schreibgeschützten (im Normalfall) Flash-Speicher booten und in einer anderen einen Lese- / Schreib-Daten-RAM haben (der manchmal auf beiden parallel arbeiten kann), aber aus Programmsicht in einer Adressraum? Oder solche, die mehrere interne und externe Speicher / Schnittstellen haben, die alle parallel arbeiten, aber von Neumann dafür sind, dass sie sich im selben Adressraum befinden.
Und was nützt eine Harvard-Plattform, auf der der Prozessor nicht als Daten auf den Anweisungsspeicher zugreifen kann, um den Bootloader zu ändern / zu aktualisieren oder um das nächste auszuführende Programm zu laden? Warum ist das nicht eine von-Neumann-Architektur? Der Prozessor, der von demselben Speicher auf derselben Schnittstelle ausgeführt wird und auf dieselbe Weise arbeitet (Befehlsabrufe und Speicherschreibvorgänge finden nicht gleichzeitig statt)?
Die beiden gängigen speicherbasierten Architekturen liegen näher beieinander als sie sich in aktuellen IMO-Implementierungen unterscheiden.
Wo fällt gpu hin? Oder das Geschäft, in dem ich arbeite, Netzwerkprozessoren (NPUs). Wenn Sie über diese relativ kleinen Spezial-Mikromaschinen (Prozessoren) verfügen, die von einem Harvard-ähnlichen Programm-RAM ausgeführt werden (adressierbar, aber aus Leistungsgründen nicht erforderlich), können Sie verschiedene Daten-RAMs mit jeweils eigenem Adressraum (separater Prozessor) bearbeiten Anweisungen für jeden Raum), (die Speicherräume arbeiten parallel) und geben über diese RAMs Zwischendaten ab, damit die nächste Berechnung von der nächsten Mikromaschine in einer verdrahteten Alu (eniac) -ähnlichen Weise durchgeführt werden kann? Wie würdest du das nennen? Sind npus und gpus nur modifizierte Harvard-Architekturen?
quelle
Sowohl von Neumann- als auch Harvard-Architekturen können mit RISC-Prozessoren wie AVR und ARM verwendet werden. Der AVR verwendet Harvard, während einige ARM-Chips von Neumann und einige Harvard verwenden.
quelle