Wie wurden die ersten Mikroprozessoren programmiert?


44

Mir ist gerade aufgefallen, dass wenn Sie ein Betriebssystem schreiben, worauf schreiben Sie es dann? Ich frage dies, während ich ein Grundlagenbuch über Mikroprozessoren aus dem Jahr 1980 lese, und diese Frage tauchte in meinem Kopf auf:

Wie wurde der erste Mikroprozessorchip programmiert?

Die Antwort mag offensichtlich sein, aber es nervt mich.


6
Wenn ich meine eigene Arbeit einbinden darf, lesen Sie meine Antwort auf "Wie kann sich der Linux-Kernel selbst kompilieren?". auf Stapelüberlauf . Die Antwort ist nicht offensichtlich, bis Sie das allgemeine Prinzip verstanden haben. An diesem Punkt werden Sie sagen "Nun, natürlich ..."
dmckee

@dmckee Aber es beantwortet immer noch nicht die Frage, woher es wusste, was zu tun ist :) Wer hat dem Computer mit den Schaltern gesagt, was zu tun ist? Ich möchte ein bisschen mehr Details.
Dean

4
Die Frage ist also , wie die Startsequenz des ersten Chips gestaltet werden soll. Nun, das ist sicherlich eine Frage, die auf dieser Site vorkommt, aber es geht so, als würde man eine digitale Logik entwerfen, die aus Komponenten besteht. Lassen Sie sie in einem bekannten Zustand starten und geben Sie dann Eingaben ein, die nützliche Dinge bewirken. Ich überlasse es anderen, die ausführliche Antwort zu geben, weil ich diesbezüglich wackelig bin, aber Sie wissen , dass die ersten Computer in Vakuumröhren implementiert wurden, oder? Dann gab es eine Generation einzelner Transistoren, alle vor dem ersten Mikrochip. Die Ingenieure wussten bereits, was sie taten.
dmckee

1
Natürlich auf Nicht-Mikroprozessoren.
user253751

Antworten:


56

Ich werde Ihre Frage wörtlich nehmen und hauptsächlich auf Mikroprozessoren eingehen, nicht auf Computer im Allgemeinen.

Alle Computer haben eine Art Maschinencode. Eine Anweisung besteht aus einem Opcode und einem oder mehreren Operanden. Beispielsweise wurde der ADD-Befehl für den Intel 4004 (den allerersten Mikroprozessor) als 1000RRRR codiert, wobei 1000 der Operationscode für ADD ist und RRRR eine Registernummer darstellt.

Die allerersten Computerprogramme wurden von Hand geschrieben, wobei die Einsen und Nullen von Hand codiert wurden, um ein Programm in Maschinensprache zu erstellen. Dies wird dann in den Chip einprogrammiert. Die ersten Mikroprozessoren verwendeten ROM (Nur-Lese-Speicher); dies wurde später durch EPROM (Erasable Programmable ROM, das mit UV-Licht gelöscht wurde) ersetzt; Jetzt werden Programme normalerweise in ein EEPROM ( "Electrically ...- EPROM" , das auf dem Chip gelöscht werden kann) oder speziell in einen Flash-Speicher programmiert .

Die meisten Mikroprozessoren können jetzt Programme aus dem RAM ausführen (dies ist so ziemlich der Standard für alles außer Mikrocontrollern), aber es muss überhaupt eine Möglichkeit geben, das Programm in den RAM zu laden. Wie Joby Taffey in seiner Antwort betonte, handelte es sich hierbei um Kippschalter für den Altair 8080, der von einem Intel 8080 (der auf den 4004 und 8008 folgte) angetrieben wurde. In Ihrem PC befindet sich ein Stück ROM, das BIOS, das zum Starten des Computers und Laden des Betriebssystems in den Arbeitsspeicher verwendet wird.

Die Maschinensprache wird sehr schnell langweilig, daher wurden Assembler-Programme entwickelt, die eine mnemonische Assemblersprache verwenden und diese, normalerweise eine Zeile Assembler-Code pro Anweisung, in Maschinencode übersetzen. Anstelle von 10000001 würde man also ADD R1 schreiben.

Aber der allererste Assembler musste in Maschinencode geschrieben werden. Dann könnte es in seinem eigenen Assembler-Code umgeschrieben und die maschinensprachliche Version verwendet werden, um es das erste Mal zusammenzusetzen. Danach konnte sich das Programm selbst zusammenstellen. Dies wird als Bootstrapping bezeichnet und wird auch mit Compilern durchgeführt. Sie werden in der Regel zuerst in Assembler (oder einer anderen höheren Sprache) geschrieben und dann in ihrer eigenen Sprache neu geschrieben und mit dem ursprünglichen Compiler kompiliert, bis der Compiler sich selbst kompilieren kann.

Da der erste Mikroprozessor lange nach dem Bestehen von Großrechnern und Minicomputern entwickelt wurde und der 4004 ohnehin nicht für die Ausführung eines Assemblers geeignet war, hat Intel wahrscheinlich einen Cross-Assembler geschrieben, der auf einem seiner großen Computer ausgeführt und den Assembler-Code für übersetzt wurde die 4004 in ein binäres Abbild, das in die ROMs programmiert werden könnte. Auch dies ist eine übliche Technik, mit der Compiler auf eine neue Plattform portiert werden ( Cross-Compiling ).



1
Und wenn Sie wirklich einen Mikrocontroller ohne einen anderen Computer (außer Ihrem Gehirn) programmieren wollten, könnten Sie dies tun, indem Sie eine Schaltung aufbauen, die das Programm direkt in diesen einspeist. Wenn dies über jtag programmiert wurde, können Sie die Schalter umlegen, um die zum Programmieren des Geräts erforderlichen jtag-Befehle nachzuahmen. Wenn ein externer RAM verwendet würde, könnten Sie eine Menge Demultiplexer und riesige Reihen von Widerständen verwenden, die hoch oder niedrig gebunden sind, um die Bits der Befehle darzustellen (und wahrscheinlich eine niedrige Taktrate verwenden, da Ihre Hardware langsam sein wird).
Nategoose

3
@tyblu: Ich bin mir ziemlich sicher, dass Fuse-PROMs älter sind als EPROMs. Die einfachste Form eines ROM ist im Wesentlichen ein selektiv bestücktes Diodenarray (früher wurden Dioden buchstäblich auf ein Gitter gelötet, um eine Polarität des Bits darzustellen; eine fehlende Diode stellte die andere Polarität dar). Ein Fuse-PROM platziert ein Diodenarray auf einem Chip, hat jedoch Zeilentransistoren, die viel kräftiger sind als die Dioden an den Kreuzungspunkten. Man kann selektiv Dioden entfernen, indem man die Adreßleitungen einstellt und dann die Datenleitungen, die mit den Dioden verbunden sind, die man entfernen möchte, wirklich hart trifft.
Superkatze

@tyblu: Beachten Sie, dass Fuse-PROMs elektrisch nichts mit modernen OTPROMs zu tun haben, die einfach EPROM-Chips in Paketen ohne Fenster sind. EPROM / OTP-Bauelemente werden programmiert, indem die Gates bestimmter Transistoren elektrisch geladen werden (die eine ausreichende Kapazität und einen geringen Verlust aufweisen, um eine Ladung im Wesentlichen auf unbestimmte Zeit zu halten). Im Gegensatz dazu werden Fuse-PROM-Chips programmiert, indem die Verbindungen zu den unerwünschten Dioden physikalisch zerstört werden.
Superkatze

1

23

Ursprünglich wurden Programme auf Papier geschrieben und dann auf die Eingabemethoden des Computers übertragen. Dies ging von Knöpfen, Schaltern und Überbrückungskabeln an den ersten Computern über Lochkarten bis hin zu Tastaturen / Platinen.

Die folgende Abbildung zeigt, was heutzutage echte Programmierer verwenden:


10
Verdammt, Emacs ..
Tyblu

6
Ich programmiere Programmierer. (Und diese Programmierer programmiere ich Programmierer, die Programmierer programmieren.)
Mateen Ulhaq

4
Ich mache meine eigenen Programmierer.
W5VO

16

Nun, ich war dabei, als Mikros herauskamen, wir haben Cross-Assembler und Compiler auf Großrechnern und Minis geschrieben, dann haben wir sie auf 8-Bit-Hardware gebootet. Die Leute haben sich nicht wirklich die Mühe gemacht, Compiler / Assembler auf Mikros zu bauen, bis sie genug lokalen Speicher hatten mach es nützlich


14

Eine frühe Form des Nur-Lese-Speichers war ein Raster, in dem die Adresse eine Zeile auswählte (sie nach unten zog) und die Spalten Daten darstellten. Jede Spalte hätte ein Pull-up, und an jeder Kreuzung wäre eine Diode eingelötet, um eine "Null" darzustellen, oder es könnte keine Diode, um eine "Eins" darzustellen Anzahl benötigter Dioden]. Jedes gewünschte Bitmuster könnte durch Einlöten der richtigen Dioden "programmiert" werden.

Dieses Design wurde in Form eines Fuse-PROM in die Welt der integrierten Schaltkreise gebracht. Im Wesentlichen war ein Sicherungs-PROM eine Schaltung wie die oben beschriebene, die auf einem Chip aufgebaut war, mit der Ausnahme, dass alle Dioden bestückt waren und jede Diode eine schwache Sicherung in Reihe hatte. Im Auslieferungszustand würde ein PROM an allen Stellen "0" lesen. Man könnte jedoch selektiv Dioden entfernen, indem man die entsprechende Adresse auswählt und die entsprechenden Datenleitungen "hart" hoch treibt.

Sicherungsprogrammierte PROMs wurden von Halbleiterspeichern abgelöst, die Bits speichern, indem Ladungen auf interne Kondensatoren implantiert werden. Solche Speicher sind nicht nur kompakter als Fuse-PROMs, sondern können auch gelöscht und wiederverwendet werden, wenn sie in UV-transparenten Gehäusen untergebracht sind. Beachten Sie, dass selbst sogenannte "einmal programmierbare" Speicher fast immer dasselbe Design verwenden, sondern einfach in UV-undurchlässigen Gehäusen untergebracht sind.

Zwei Männer zeigten auf eine große Diodenmatrix Diodenmatrix-Kontrollspeicher des 1950 MIT Whirlwind Computer

Transistor-Matrix mit winzigen SMD-Transistoren Transistor-Matrix-Steuerspeicher von 2005 der MT15-CPU


Ich hoffe, es macht Ihnen nichts aus, was ich an Ihrem Post vorgenommen habe.
Davidcary

7

Ich bin mir nicht sicher, ob irgendjemand die eigentliche Frage des OP angesprochen hat: "Woher weiß der Computer, wie er anfangen soll?" , also mache ich mal eine Pause.

Beginnen Sie mit einer Analogie. "Woher weiß ein Transistor, wie man anfängt?" Natürlich nicht, es funktioniert nur in Übereinstimmung mit der Physik und der Ingenieur baut die Schaltung so auf, dass sie in einem bekannten Zustand startet.

Computer wissen, wie man anfängt, weil sie Schaltkreise sind (natürlich sehr kompliziert) und dafür gebaut sind, in einem bestimmten Zustand zu starten. In einer modernen Maschine kann dieser Zustand einer sein, in dem der Hauptbus einen Teil des Adressraums neu zuordnet, um ein ROM auf der Hauptplatine als wenig Speicher zu verwenden (das ROM wurde mit einem BIOS gebrannt). In einer Maschine der ersten Generation war der Anfangszustand möglicherweise die angehaltene CPU, der Programmzähler auf Null und das aktive Speicherschalt-Subsystem.


6

Ein Betriebssystem ist ein Computerprogramm, das direkt auf dem Prozessor ausgeführt wird. Es kann in jeder Sprache geschrieben werden, die nach Maschinenanweisungen kompiliert oder zusammengestellt werden kann. Assembly und C sind gängige Optionen.

Der Code wird von einem Speicher - einem ROM oder RAM - einzeln in die Prozessoren geladen.

Der Z3 , der erste programmierbare Prozessor, wurde aus elektromechanischen Relais gebaut und liest Anweisungen aus gelochtem Film.

Der Altair 8800, der erste Personal Computer, wurde mit Kippschaltern programmiert.

Informationen zum Aufbau eines Prozessors aus digitaler Logik finden Sie unter https://electronics.stackexchange.com/questions/5516/a-fun-book-to-learn-computer-architecture-for-not-exactly-beginners

Eine Historie finden Sie unter http://en.wikipedia.org/wiki/History_of_computing_hardware


5

Hier ist ein bisschen über wirklich alte Computer:

Soweit ich weiß, hatten Sie damals ein großes Computer-Bedienfeld, über das sie programmiert wurden. Grundsätzlich war jede Speicherzelle in diesen Computern mit Switches verbunden. Sie würden den Speicher mit Strom versorgen und dann mit Schaltern Daten in jeder Zelle einstellen. Auf diese Weise würden Sie das Programm Stück für Stück in den Arbeitsspeicher des Computers eingeben. Dann setzen Sie den Startpunkt des Programms und starten die Ausführung.

Im Zuge des technischen Fortschritts wurden sogenannte Bootloader-Programme entwickelt. Es handelt sich um kurze Programme, bei denen es darum geht, ein anderes Programm aus dem Speicher des Computers zu starten. Das Problem bei der schrittweisen Eingabe von Programmen (und der späteren Eingabe von mehr als einem Bit unter Verwendung von Oktal- und späteren Hexadezimalzahlen) bestand darin, dass es sehr langsam war und die Wahrscheinlichkeit groß war, dass der Bediener beim Laden des Programms einen Fehler machte. So würden kurze Programme verwendet, um größere Programme zu laden, die im Speicher des Computers gespeichert sind. Mit der Zeit nahm der Anteil des Codes ab, der von Hand eingegeben werden musste, und in modernen Computern haben wir oft Bootloader, die in einer Art ROM oder sogar Flash-Speicher geschrieben sind.


4
In Frontpanel-Maschinen wie den früheren S-100-Systemen können Sie mit den Schaltern die Steuerung des Systembusses übernehmen. Mit einem Schalter können Sie den Prozessor aussetzen. Während der Prozessor angehalten war, konnten Sie manuell eine Adresse auf den Adressbus legen (über Schalter), Daten auf den Datenbus legen (mehrere Schalter) und dann manuell einen Schreibzyklus auf den Bus auslösen (einen anderen Schalter) oder Ein Lesezyklus, mit dem Daten auf 8 einzelne LEDs zurückgespielt und die Binärdatei usw. gelesen werden. Auf diese Weise können Sie genügend Maschinencode im RAM speichern, den Prozessor entsperren und von dort aus fortfahren.
JustJeff

4

Ich bin vor ein paar Jahren auf einen Mikrocontroller-Programmierer gestoßen, der eine vierstellige Sieben-Segment-Anzeige und eine Hex-Tastatur hatte. Ich bin mir sicher, dass kein Mikrocontroller an Bord war und dass Sie den Maschinencode direkt byteweise eingeben konnten.

Dies würde es Ihnen ermöglichen, eine Liste von Op-Codes (schmerzhaft) manuell nacheinander zusammenzustellen und sie in den Chip einzugeben.

Ich habe keine Ahnung, ob Sie sie noch bekommen können, aber ich vermute, dass etwas Ähnliches verwendet wurde, als Mikrocontroller noch relativ neu waren.


1
Klingt möglicherweise nach KIM-1 oder Cosmac ELF, die beide einen Mikroprozessor (MOS 6502 und RCA [CD] 1802) enthalten. KIM: oldcomputers.net/kim1.html ELF: cosmacelf.com
mctylr

Es war wahrscheinlich so etwas wie das, was Mctylr sagte. Bei Maschinen dieses Typs befand sich normalerweise ein kleines "Monitor" -Programm im ROM. Wenn Sie Bytes mit der Tastatur eingegeben haben, war es tatsächlich der 6502 (oder 8085 oder was auch immer), der die Tasten liest, den Speicher
ändert

1

Die ersten Mikroprozessoren wären mit Hilfe vorhandener Computer programmiert worden, die nicht auf Mikroprozessoren basierten. Bevor die erste CPU auf einem Chip hergestellt wurde, gab es bereits fortschrittliche Computerarchitekturen, die eher aus diskreten Komponenten als aus Mikroprozessoren aufgebaut waren. Schauen Sie sich IBM 360 an.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.