- PDP11
-
Die PDP-11 war ein weit verbreiteter 16-Bit-Computer, der von DEC in den 1970er und 1980er Jahren angeboten wurde. Obwohl nicht explizit als Nachfolger konzipiert, hat er bei vielen Prozessrechneranwendungen den vorher dominierenden 12-Bit-Computer PDP-8 aus der Programmed-Data-Processor-Reihe abgelöst. Eingeführt wurde die PDP-11-Baureihe im Jahr 1970.
Das technische Konzept der PDP-11-Serie war einfach gehalten, ein standardisiertes „Universelles Bus-System“ (Unibus), über den Rechner, Hauptspeicher und Ein-/Ausgabe-Geräte miteinander kommunizierten, ermöglichte die Auf- und Umrüstung für eine Vielzahl von Prozessanwendungen. Deswegen wurde die PDP-11 häufig im experimentellen Wissenschafts- und Forschungsbereich eingesetzt.
Im Unterschied zu vielen Rechnern vorher kannte die PDP-11 keine speziellen Ein-/Ausgabe-Befehle. Da Peripheriegeräte am Unibus wie Hauptspeicher adressiert wurden, konnte die Peripherie mit "normalen" Rechnerbefehlen gesteuert werden.
Auch bei der Steuerung von Kraftwerken, Verkehrswegen und Telefonnetzen wurde die PDP-11 verwendet. Das offene Bus-System ermöglichte es auch Fremdanbietern, kostengünstige und leistungsstarke Peripheriegeräte zum Anschluss an die PDP-11 auf den Markt zu bringen.
Inhaltsverzeichnis
PDP-11 Modelle
Die PDP-11 Rechner können nach dem verwendeten Peripheriebus eingeteilt werden.
Unibus Modelle
Die folgenden Modelle nutzten den ursprünglichen 18-bit breiten Unibus:
- PDP-11 (später PDP-11/20) und PDP-11/15, der originale von Jim O’Loughlin konstruierte Rechner
- PDP-11/35 und 11/40
- PDP-11/45, 11/50 und 11/55 mit deutlich schnellerem Prozessor
- PDP-11/70: 11/45 Architektur mit bis zu 4 MB Speicher und I/O-Schnittstellen über den Massbus
- PDP-11/05 und 11/10, kostenreduzierte 11/20
- PDP-11/34 und 11/04, kostenreduzierte Version nach Konzept von Bob Armstrong
- PDP-11/44, verbesserte 11/34 mit Cachespeicher und FPU, entwickelt von John Sofio
- PDP-11/60
- PDP-11/24, erste VLSI PDP-11 für Unibus mit „Fonz-11“ (F11) Chipset
- PDP-11/84, VLSI „Jaws-11“ (J11) Chipset
- PDP-11/94, schnellere Variante der 11/84
Q-Bus Modelle
Die folgenden Modelle nutzten den später eingeführten preiswerteren Q-Bus, bei dem Adress- und Datenleitungen zusammengelegt waren:
- PDP-11/03 (auch bekannt als LSI-11/03)
- LSI 11/2 (elf-halbe) kompaktere Version vom Ur-LSI-11
- PDP-11/23 mit 248 KB Speicher
- MicroPDP-11/23
- MicroPDP-11/73 mit „Jaws-11“ (J-11) Chipset
- MicroPDP-11/53, 11/53+ mit 1,5 MB Speicher on board
- MicroPDP-11/83
- MicroPDP-11/93, letztes DEC Q-Bus PDP-11-Modell
- Mentec M100, Redesign der 11/93 von Mentec
- Mentec M11
- Quickware QED-993: PDP-11/93 Prozessor Upgradeboard
Modelle ohne Bussystem
- PDT-11/110
- PDT-11/130
- PDT-11/150
Diese Modelle hatten nur den 16-Bit breiten Prozessorbus und dienten als intelligente Terminals. Die Serien PDT-11/110 und PDT-11/130 nutzten ein VT100-Terminal-Gehäuse.
Weiteren Workstations
- Pro 325, Arbeitsplatzrechner mit „Fonz-11“ (F11) Chipset und Disketten
- Pro 350, Arbeitsplatzrechner mit „Fonz-11“ (F11) Chipset, Disketten und Festplatte
- Pro 380, Arbeitsplatzrechner mit „Jaws-11“ (J-11) Chipset, Disketten und Festplatte
Nachbauten aus dem Ostblock
Die PDP-11 wurde wegen ihrer technischen Bedeutung auch hinter dem Eisernen Vorhang ohne Lizenz nachgebaut. Beispiele hierfür sind:
- SM-4, SM-1420, SM-1600, Elektronika BK-0010, DVK, UKNC (Sowjetunion)
- SM-4, SM-1420, IZOT-1016 (in Bulgarien).
- SM-1420 (in der DDR)
- Mera (in Polen)
- SM-4 (in Ungarn)
- I-102 (in Rumänien)
Betriebssysteme
Verschiedenste Betriebssysteme waren für die PDP-11 verfügbar:
Von DEC:
Von Drittanbietern:
- ANDOS
- MKDOS
- MONECS
- CSIDOS
- TRIPOS
- MUMPS
- POS
- Unix (z. B. Version 7 Unix und BSD)
- DEMOS (Sowjetunion)
- TSX-Plus
Befehle
Die PDP-11 hat eine Wortbreite von 16 Bit. Es werden 1-Adressbefehle, 2-Adressbefehle und Sprünge unterschieden. Die Adressierung erfolgt jeweils über sechs Bit, wobei die ersten drei Bit für die acht Adressierungsmodi verwendet werden und die letzten drei für die Auswahl eines der acht Register (R0 bis R7). Viele Befehle gibt es als Wortbefehle und als Bytebefehle, d.h. sie operieren mit 16-Bit- bzw. 8-Bit-Einheiten. Die Byteversion "doppelt" vorhandenen Befehle sind in den folgenden Aufstellungen in Klammern angegeben.
1-Adressbefehle
0 9 10 12 13 15 OP-Code Mode Register Die wichtigsten 1-Adressbefehle sind:
- INC(INCB) X: Inkrementieren des Wertes um 1
- DEC(DECB) X: Dekrementieren des Wertes um 1
- COM(COMB) X: Einerkomplement von X
- NEG(NEGB) X: Zweierkomplement von X (Negierung)
- ASR(ASRB) X: Arithmetisches Shiften nach Rechts
- ASL(ASLB) X: Arithmetisches Shiften nach Links
- ROR(RORB) X: Nach Rechts rotieren
- ROL(ROLB) X: Nach Links rotieren
2-Adressbefehle
2-Adressbefehle folgen immer dem Muster „Befehl Quelle Ziel“. Beim Befehl ADD R1, R2 wird also gerechnet R2 = R1 + R2.
0 3 4 6 7 9 10 12 13 15 OP-Code Mode Register Mode Register Die wichtigsten 2-Adressbefehle sind:
- MOV(MOVB) A,B: Kopieren (B = A)
- ADD A,B: Addition (B = B + A)
- SUB A,B: Subtraktion (B = B – A)
- MUL A,B: Multiplikation (B = B * A)
- DIV A,B: Division (B = B/A)
Sprünge
Bei Sprüngen wird immer ein 8-Bit-Offset angegeben. Dies gibt die Anzahl der Worte an, um die gesprungen wird.
0 7 8 15 OP-Code Offset Die PDP-11 bringt sehr viele Sprungbefehle mit, insgesamt 18 verschiedene.
Adressierungsmodi
Die Adressierungsmodi unterscheiden sich bei der PDP-11 abhängig davon, ob als Register R0 bis R5 (Allzweckregister), R6 (Stapelzeiger bzw. Stackpointer, SP) oder R7 (Programmzähler, PC) verwendet wird.
Allzweckregister (R0 bis R5)
Bitfolge Kurzform Name/Beschreibung 000 Rn Register direkt: Der Wert, der im Register Rn steht, wird verwendet 001 @Rn Register indirekt: Der Wert, der an der Speicherstelle steht, die im Register Rn steht 010 (Rn)+ Autoinkrement: Der Wert, der an der Speicherstelle steht, die im Register Rn steht; Rn wird um eine Adressierungseinheit erhöht 011 @(Rn)+ Autoinkrement indirekt: Der Wert, der an der Speicherstelle steht, die an der Speicherstelle steht, die im Register Rn steht; Rn wird um 2 erhöht 100 -(Rn) Autodekrement: Rn wird um eine Adressierungseinheit verringert; Der Wert, der an der Speicherstelle steht, die dann im Register Rn steht 101 @-(Rn) Autodekrement indirekt: Rn wird um 2 verringert; Der Wert, der an der Speicherstelle steht, die an der Speicherstelle steht, die dann im Register Rn steht 110 X(Rn) Index: X und der Wert in Rn werden addiert und der Wert verwendet, der an der Speicherstelle steht, die durch diese Summe gegeben ist 111 @X(Rn) Index: X und der Wert in Rn werden addiert und der Wert verwendet, der an der Speicherstelle steht, auf die die Speicherstelle zeigt, die durch diese Summe gegeben ist Eine Adressierungseinheit ist 1 für Byte-Befehle und 2 für Wort-Befehle.
Stapelzeiger (R6 bzw. SP)
R6 ist ein Zeiger auf den Stapelspeicher (Stack), der vom Prozessor bei Interrupts zur Zwischenspeicherung des aktuellen Maschinenzustands verwendet wird. Der Stapelzeiger dient der Verwaltung des Stapelspeichers, er muss grundsätzlich eine Wortadresse, d.h. eine gerade Adresse enthalten. Deshalb wird im Unterschied zu den Allzweckregistern bei den Adressmodes Autoinkrement bzw. Autodekrement unabhängig ob Byte- oder Wortbefehl das Register R6 immer um 2 erhöht oder erniedrigt.
Bitfolge Kurzform Name/Beschreibung 000 Rn Register direkt: Der Wert, der im Register Rn steht, wird verwendet 001 @Rn Register indirekt: Der Wert, der an der Speicherstelle steht, die im Register Rn steht 010 (Rn)+ Autoinkrement: Der Wert, der an der Speicherstelle steht, die im Register Rn steht; Rn wird um 2 erhöht 011 @(Rn)+ Autoinkrement indirekt: Der Wert, der an der Speicherstelle steht, die an der Speicherstelle steht, die im Register Rn steht; Rn wird um 2 erhöht 100 -(Rn) Autodekrement: Rn wird um 2 verringert; Der Wert, der an der Speicherstelle steht, die dann im Register Rn steht 101 @-(Rn) Autodekrement indirekt: Rn wird um 2 verringert; Der Wert, der an der Speicherstelle steht, die an der Speicherstelle steht, die dann im Register Rn steht 110 X(Rn) Index: X und der Wert in Rn werden addiert und der Wert verwendet, der an der Speicherstelle steht, die durch diese Summe gegeben ist 111 @X(Rn) Index: X und der Wert in Rn werden addiert und der Wert verwendet, der an der Speicherstelle steht, auf die die Speicherstelle zeigt, die durch diese Summe gegeben ist Programmzähler (R7 bzw. PC)
Bitfolge Kurzform Name/Beschreibung 010 #N Immediate: Der Wert folgt dem Befehl im Programmspeicher 011 @#A Absolute: Die Speicheradresse des Wertes folgt dem Befehl im Programmspeicher 110 A Relative: Die Speicheradresse des Wertes ist die Summe aus dem aktuellen Programmzähler und dem Offset, das dem Befehl im Programmspeicher folgt 111 @A Relative Indirekt: An der Speicheradresse, die die Summe des aktuellen Programmzählers und dem, dem Befehl folgenden Offset ist, steht die Adresse, an der der Wert zu finden ist Aktuelle Verwendung
In der Einrichtung HASYLAB am DESY (Deutsches Elektronen-Synchrotron) in Hamburg dient eine PDP-11/23 seit 1981 an der Beamline E1 zur Steuerung von FLIPPER II, einer Anlage zur Messung von Photoelektronenspektroskopie mit Synchrotronstrahlung.
Trivia
Im Film 23 – Nichts ist so wie es scheint wird die PDP-11 mehrmals erwähnt. Das Gerät, das dort als PDP-11 angeliefert wird, ist keine PDP-11, jedenfalls nicht als solche erkennbar. Weiterhin wird im Film fälschlicherweise behauptet, eine PDP-11 benötige zwangsläufig einen Dreiphasenwechselstromanschluss mit 380 V. Obwohl es einige „große“ PDP-11-Modelle gibt, die tatsächlich Dreiphasenwechselstrom benötigen, kommt doch die überwiegende Mehrheit der PDP-11-Rechner mit einphasiger Wechselspannung von 110 V bzw. 220 V aus.
Ken Olsen und 16-Bit-Rechner
Es fällt auf, dass fast alle Rechner der verschiedenen PDP-Serien Wortbreiten aufweisen, in denen mindestens eine 3 als Primfaktor vorkommt (PDP-1/-7/-15: 18 Bit, PDP-5/-8/-12: 12 Bit, PDP-6/-10/-20: 36 Bit). Dies wird von Insidern auf eine Marotte des DEC-Firmengründers Ken Olsen zurückgeführt. Als ihm Ende der 60er Jahre von einer Gruppe von Entwicklungsingenieuren ein nahezu fertiger Rechner mit einer Wortbreite von 16 Bit vorgestellt wurde, waren diese sehr enttäuscht, dass ihr Produkt zwar gelobt, aber nicht auf den Markt gebracht wurde. Insider berichteten, dass es tatsächlich die Wortbreite von 16 Bit war, die Ken Olsen wegen der fehlenden "3" nicht gefiel. Die Ingenieure verließen daraufhin die Firma DEC und machten sich selbständig, indem sie die Firma Data General gründeten. Sie wiederholten dort ihre Entwicklung eines 16-Bit-Rechners (natürlich mit etlichen Modifikationen) und brachten dies neue Produkt 1969 als "Nova" auf den Markt. Nachdem dieses Modell innerhalb weniger Wochen am Markt ziemlich erfolgreich war, ließ Ken Olsen ihr ursprüngliches 16-Bit-Produkt bis zur Serienreife weiterentwickeln. DEC brachte dann 1970 die PDP-11 heraus, die der Nova so scharfe Konkurrenz machte, dass Data General immer nur zweiter im Markt blieb. Die Ähnlichkeit der beiden Systeme kann an der Architektur, den frühen Betriebssystemen und an der systemnahen Software leicht verifiziert werden.
Konkurrenzprodukte
- Series/1 von IBM
- Nova von Data General
Weblinks
- pdp11.org
- PDP-11 Processor Handbook (englisch)
- FLIPPER II – a new photoemission system in HASYLAB (englisch)
- Programmierung der PDP-11 (Videos, englisch)
Wikimedia Foundation.