Dies ist eine weit gefasste Frage, auf die es keine einfache Antwort gibt. Es ist ein langer Weg von Elektronen, die über Kupferdrähte huschen, bis zum Rendern einer Website in Firefox. Ich werde versuchen, Ihnen einen Überblick von unten nach oben zu geben und Sie auf die richtigen Dinge hinzuweisen, um nachzuschlagen.
Zahlen kodieren
Die grundlegende Motivation besteht darin, Dinge wie beim Rechnen zu berechnen¹. Das erste, was man sich ansehen muss, ist, wie man Zahlen darstellt. Es gab viele Ansätze, die Dezimal- oder Dreistellensysteme verwendeten, und ich denke sogar Oktalsysteme, aber am Ende setzte sich die Binärfunktion durch. Jetzt wissen wir, dass wir Geräte bauen müssen, die mit zwei Werten umgehen - nennen wir sie und .101
Beachten Sie, dass es auch mehrere Möglichkeiten gibt, Zahlen in Binärform zu codieren. Nachdem Sie Ihren ersten Prozessor aufgebaut haben, erkennen Sie die Vorteile einer bestimmten Vorgehensweise. Beliebte Beispiele sind die Floats mit zwei Komplementen und IEEE . Beschränken Sie sich zunächst auf natürliche Zahlen.
Tore
Angenommen, wir verwenden eine binäre Codierung. Stellen Sie sich vor, wie Sie in der Grundschule das Hinzufügen gelernt haben, und schreiben Sie dasselbe für Binärzahlen auf. Wie sich herausstellt, sind die Bausteine der Booleschen Algebra bereits für Sie da; Es ist einfach, einen Basisaddierer (und andere arithmetische Funktionen) unter Verwendung von Logikgattern zu erstellen .
Wie solche Tore gebaut werden, liegt außerhalb des Rahmens der Informatik. Die Elektrotechnik hat mehrere Lösungen unter Verwendung von z . B. Röhren oder Transistoren bereitgestellt . Bei Fragen hierzu wenden Sie sich bitte an Electrical Engineering Stack Exchange .
Uhr und Zustand
Nicht alle Gates sind gleich schnell und nicht alle Teile einer Berechnung haben die gleiche Anzahl von Gates. Deshalb müssen wir besonders darauf achten, dass sich einzelne Vorgänge nicht gegenseitig überholen. Es hat sich als nützlich erwiesen, eine globale Uhr zu verwenden . Das Ergebnis eines gegebenen Netzwerks von Gattern ist der Zustand der Ausgangsdrähte am Ende des Zyklus (der sich wild ändern kann, während die Gatter in Richtung ihrer individuellen Endzustände kaskadieren).
Das bedeutet, dass die Ergebnisse eines Zyklus möglicherweise gespeichert werden müssen, bis der nächste Zyklus beginnt, z. B. wenn Sie Schleifen verkabeln. Es gibt eine Reihe grundlegender Elemente, die Sie mit unterschiedlichen Effekten verwenden können und die sich alle aus Toren zusammensetzen. Einige werden Flip-Flops genannt . Diese werden auch verwendet, um Register zu erstellen , Elemente, die Zahlen für beliebig viele Taktzyklen speichern.
Architektur und Befehle
Jetzt haben Sie eine Vielzahl von Design-Entscheidungen zu treffen. Welche Rechenoperationen bietet Ihr Prozessor? Wie sehen Ihre Befehle aus? Es mag lehrreich sein, sich die MIPS-Architektur anzuschauen, deren frühe Formen im Vergleich zu anderen Designs einfach sind. Schauen Sie sich die Pläne an :
Original von http://ube.ege.edu.tr/~erciyes/CENG311
Im Wesentlichen geht es um das Abrufen und Zerlegen von Befehlen, eine Reihe von Registern, eine ALU und eine Steuerung. Befehle codieren, welche ALU-Operation an welchen Operanden ausgeführt werden soll (anhand der Nummer des Registers, in dem sie gespeichert sind), wie der Programmzähler² manipuliert wird oder welches Register aus dem / in den Speicher³ geladen / gespeichert wird.
Weitere Überlegungen
Inzwischen haben Sie einen funktionierenden Prozessor im modernen Sinne, vorausgesetzt, Sie haben herausgefunden, wie Sie einen Speicher aufbauen und wie Sie ihn mit Befehlen versorgen können. Auf dem Weg zu einer modernen Maschine müssen viele Entscheidungen getroffen werden. Hier sind einige:
Alternativen
Das Obige ist stark von der Entwicklung der Geschichte beeinflusst. In einer anderen Welt mit anderen Köpfen funktionieren Computer möglicherweise anders. Tatsächlich gibt es eine Vielzahl von Berechnungsmodellen , von denen einige Vorteile haben, die sie in vielen Fällen als Abstraktion für reale Maschinen nützlich machen. Es gibt auch Versuche, die Funktionsweise unseres Gehirns nachzuahmen, dh das neuronale Rechnen zu ermöglichen oder allgemein Strategien zur Problemlösung und Informationsspeicherung zu nutzen, die in der Natur zu beobachten sind , insbesondere DNA- und Quantencomputer .
Vielleicht (hoffentlich?) Handelt es sich bei den obigen Informationen um die gesamte alte Geschichte in 50 oder 100 Jahren.
- All die ausgefallenen Dinge, die wir heute mit Computern tun, sind in viele kleine Rechenaufgaben unterteilt, die der Prozessor nacheinander ausführt.
- Wenn Ihr Modell zulässt, dass das Programm den Steuerungsfluss manipuliert, ist dies die Speicheradresse, von der der Prozessor den nächsten Befehl erhält. Sie können sich auch Maschinen vorstellen, die nur einen festgelegten Befehlssatz, beispielsweise von einem Band, lesen. Tatsächlich haben frühe Implementierungen dies getan. Keine Sprünge bedeuteten keine Schleifen; Ein Programm war eine vollständig abgewickelte / abgewickelte Folge von Anweisungen, die von den Daten abhing. Offensichtlich ist es leistungsfähiger, dasselbe Programm für mehrere Eingabedaten verwenden zu können.
- Angenommen, Sie haben Gedächtnis; Ihr Prozessor funktioniert ohne, kann dann aber nur mit so vielen Werten gleichzeitig umgehen. Frühe Computer haben alle ihre Daten von Bändern eingelesen und in Registern geführt. Es gab keine Erinnerung, geschweige denn eine beschreibbare, dauerhafte Speicherung, wie wir sie heute kennen.