PDP-8

Computer-Modell
(Weitergeleitet von PDP-8/E)

Der PDP-8 (bei Anwendern meist 'die PDP-8') war ein 12-Bit Minirechner[1] aus der Reihe Programmed Data Processor von Digital Equipment Corporation (DEC). Es war der erste kommerziell erfolgreiche Minicomputer mit weit über 50.000 verkauften Exemplaren, Schätzungen gehen sogar von bis zu 300.000 Exemplaren aus bei Berücksichtigung von kompatiblen Nachbauten.

PDP-8

Digital Equipment Corporation Logo
 
Hersteller Digital Equipment Corporation
Typ Minirechner
Veröffentlichung 22. März 1965
Produktionsende 1979
Neupreis 18.500 US-Dollar, entsprach 2019 etwa 135.000 Euro
Prozessor diskrete Schaltung
Arbeitsspeicher 4.096 × 12 Bit
Grafik keine
Sound keiner
Datenträger Lochstreifen
Betriebssystem diverse, meist OS/8 oder RTS-8
Vorgänger LINC, PDP-5
Nachfolger PDP-11 als Prozessrechner, PDP-12

Das zugrunde liegende Design folgt dem des LINC, allerdings mit reduziertem Befehlssatz, der wiederum eine Erweiterung des Befehlssatz der PDP-5 ist.[2] Spätere, ähnliche Maschinen von DEC waren der PDP-12, der modernisierte Nachfolger der PDP-8, und das PDP-14 Industrial Control System.

Geschichte

Bearbeiten

Das Urmodell der PDP-8, später informell „Straight-8“ (engl., „straight“ = „astrein, unverfälscht“) genannt, wurde am 22. März 1965 vorgestellt mit einem Verkaufspreis von damals 18.000 US-Dollar, was Mitte 2019 einem Wert von etwa 135.000 Euro entsprach. Im Kern der Maschine arbeitete kein Mikroprozessor, stattdessen war die Zentraleinheit diskret in Diode-Transistor-Logik auf Steckkarten („Flip-Chip“ in der Bezeichnung von DEC) implementiert, die wiederum in einem Gehäuse vom Volumen eines übergroßen Haushalts-Kühlschranks verbaut waren (69⅛″×22¼″×27⅛″, etwa 176cm×57cm×69cm).[3] Es war der erste Computer, der für unter 20.000 US-Dollar verkauft wurde, was ihn schnell zum Verkaufsschlager machte.

Bereits 1966 wurde der Straight-8 die PDP-8/S zur Seite gestellt, die es sowohl in Versionen zum Einbau in ein Rack als auch für den Schreibtisch gab. Die Verwendung einer 1-Bit Arithmetikeinheit (ALU) im PDP-8/S erlaubte es DEC, das Gerät einfacher, kleiner und günstiger zu fertigen und somit als erster Computer überhaupt die Preismarke von 10.000 US-Dollar zu unterschreiten.[4] Zwar war die PDP-8/S aufgrund der einfacheren ALU deutlich langsamer als die Straight-8, ihre Verkaufszahlen waren aber dennoch gut.

Spätere Geräte der Reihe, die PDP-8/I und /L, die PDP-8/E, /F und /M sowie die PDP-8/A, verwendeten dann wieder vollwertig parallele 12-Bit Arithmetikeinheiten, wechselten aber zu günstigeren Transistor-Transistor-Logik (TTL) in integrierten Schaltungen (medium scale integration, MSI). Die meisten heute noch operablen PDP-8 stammen aus dieser Zeit. Darunter wiederum ist die PDP-8/E das verbreitetste Gerät, weil es die größte Anzahl an Speicher- sowie Ein-/ Ausgabegeräten für diesen Gerätetyp gab.

Die letzten kommerziell eingeführten Geräte der PDP-8-Familie kamen als VT78 bzw. DECmate ab 1979 auf den Markt und verwendeten dann CMOS-Mikroprozessoren. Da das Angebot allerdings preislich nicht bestehen konnte, floppten die Geräte. Die Firma Intersil verkaufte die Prozessoren unter der Bezeichnung Intersil 6100 bis 1982, auf Grund der sehr geringen Stromaufnahme der CMOS-Technologie fanden sich Einsatzgebiete in einigen militärisch genutzten Embedded Systems.

Der Chefentwickler und Designer der ersten Generation der PDP-8 war Edson de Castro, welcher später Data General gründete.[5]

Noch funktionsfähige Exemplare der PDP-8 können im Museum „technikum29“ bei Frankfurt am Main und in den Computermuseen der Fakultät Informatik an der Universität Stuttgart sowie der Universität Erlangen-Nürnberg besichtigt werden.[6][7][8]

Bedeutung für die Entwicklung der Rechnerarchitekturen

Bearbeiten

Die Design-Ziele hinter der PDP-8 waren geringer Preis, einfacher Aufbau, Erweiterbarkeit und solide Konstruktion. Aus heutiger Sicht bedeutend sind hierbei der geringe Preis und die hohen Absatzzahlen – die PDP-8 war damit erstmals attraktiv für neue Kundenkreise und neue Anwendungsfelder.

Die geringe Komplexität des Aufbaus führte jedoch auch zu technischen Schulden: Die Programmierung der PDP-8 war umständlich und aufwändig, was sich vor allem aus dem kleinen Befehlssatz ergibt. Da es weder ein eingebautes Betriebssystem noch Bibliotheken gab, nicht einmal für einfache Aufgaben, musste ein wesentlicher Teil an Programmcode darauf verwendet werden, die Maschine selbst zu steuern, und die Implementierung von Geschäftslogik trat dem gegenüber oft in den Hintergrund.

Zum Beispiel gab es keinen eingebauten Befehl um zwei Zahlen zu subtrahieren. Stattdessen musste der Programmierer selbst zuerst das Zweierkomplement des Subtrahenden bestimmen und dann zum Minuenden addieren.

Viele ambitionierte Software-Projekte scheiterten dran, dass der verfügbare Speicher mit 4.096 Wörtern auch aufgrund dieser Umstände nicht ausreichend war oder aber dass der eingeschränkte Befehlssatz zu Software-Design-Einschränkungen führte, die nicht sauber programmatisch lösbar waren. Zum Beispiel führt das Fehlen eines Stacks dazu, dass versehentliche Rekursion zu Programmfehlern führte, die nur schwer aufzuspüren und zu beheben waren.

Da die fortschreitende Weiterentwicklung zu sinkenden Kosten für Prozessoren und Speicher führten, wurde der Aufwand, den ein Programmierer leisten musste, ein zunehmend relevanter Kostenfaktor.[9] Auch deshalb trugen spätere Computersysteme durch größere und funktional mächtigere Befehlssätze dem Rechnung, um die Programmierung der Systeme einfacher und weniger zeitintensiv zu gestalten.[10]

Über die Zeit wurden schließlich die meisten Programme über Compiler oder Reportgeneratoren erzeugt.

Technische Beschreibung

Bearbeiten
Register der PDP-8
0 1 2 3 4 5 6 7 8 9 10 11 (bit position)
Hauptregister
AC ACcumulator
  DF   Data Field
Programmzähler
PC Program Counter
  IF   Instruction Field
Status Flags
L   Link register
Interne Register (nicht programmierbar)
MBR Memory-buffer register
MAR Memory-address register

Technisch handelte es sich bei der PDP-8 um einen 12-Bit-Rechner. Der Hauptspeicher bestand aus 4.096 12-Bit-Wörtern in Form eines Core Stack aus einzelnen Miniatur-Ringmagneten (Kernspeicher), wobei ein Ring genau ein Bit aufnahm.[11] Ein Wort konnte zwei 6-Bit-Zeichen speichern. Waren die ersten PDP-8 noch in DTL-Logik verwirklicht, wurde bei späteren Versionen die Architektur in der schnelleren TTL-Logik implementiert. Mangels Bootloader wurde der Rechner zunächst über eine Maschinenkonsole mit Schaltern und LEDs («Blinkenlights») bedient. Lief die Anwendungssoftware ursprünglich direkt auf der Hardware, wurde später hauptsächlich das Betriebssystem OS/8, seltener RTS-8, verwendet. Programmiert wurde in Assembler, BASIC, Fortran, Focal und Dibol. Abgespeichert wurde die Software anfangs vornehmlich auf Lochstreifen, später auch auf Kleinmagnetbändern, 8-Zoll-Disketten und Festplatten.

Versionen der PDP-8

Bearbeiten
 
PDP-8/E
 
PDP-8/E Bedienfeld

Die Gesamtzahl verkaufter Geräte aus der PDP-8 Familie wird auf über 300.000 Exemplare geschätzt.[12] Dabei wurden etwa 3.000 bis 1970, 30.000 bis 1976 verkauft.

Über den Produktionszeitraum wurde die PDP-8 in verschiedenen Fassungen und Konfigurationen verkauft, wobei die PDP-8/E als das prägende Modell betrachtet werden kann.

Von DEC wurden in der erweiterten PDP-8-Familie diese Geräte gebaut:

Modelle aus der PDP-8 Familie[12]
Modell Zeitraum Anzahl Preis Technologie Gewicht Anmerkungen
PDP-5 1963–1965 116 ? DTL Vorläufer mit einem Subset an Instruktionen
PDP-8 1965–1969 1.450 $ 15.000,00 DTL 113 kg[3]
LINC-8 1966–1969 142 $ 38.000,00 DTL Kombination einer LINC und einer PDP-8 in einem Gehäuse.
PDP-8/S 1966–1970 1.024 $ 10.000,00 DTL 38 kg[13] Serielle Implementation, daher vergleichsweise langsam.
PDP-8/I 1968–1971 3.698 $ 12.800,00 TTL 110 kg[14] 55 ⨉ 76 ⨉ 181 cm. 32 kB RAM.
PDP-8/L 1968–1971 3.902 $ 8.500,00 TTL 36 kg[15] Verkleinerte Version der PDP-8/I
PDP-12 1969–1973 (?) 755 $ 27.900,00 TTL Nachfolger der LINC-8
PDP-8/E 1970–1978 > 10.000 (?) $ 6.500,00 TTL MSI Omnibus 41 kg[16]
PDP-8/F 1972–1978 (?) > 10.000 (?) < $ 5.000,00 TTL MSI Omnibus 26 kg[16] Basiert auf der PDP-8/E CPU
PDP-8/M 1972–1978 (?) > 10.000 (?) < $ 5.000,00 TTL MSI Omnibus 26 kg[16] OEM-Version der PDP-8/F
PDP-8/A 1975–1984 (?) > 10.000 (?) $ 1.317,00 TTL LSI Omnibus
VT78 1978–1980 $ 7.995,00 Intersil 6100 kompatible Arbeitsplatz-Workstation
DECmate 1980–1984 ? Harris 6120 kompatible Arbeitsplatz-Workstation
DECmate II 1982–1986 $ 1.435,00 Harris 6120 kompatible Arbeitsplatz-Workstation
DECmate III 1984–1990 $ 2.695,00 Harris 6120 kompatible Arbeitsplatz-Workstation
DECmate III+ 1985–1990 ? Harris 6120 kompatible Arbeitsplatz-Workstation

Klone und Nachbauten

Bearbeiten

Im Ostblock entstanden schnell Nachbauten der PDP-Serie von Computern, die ungarischen TPA1001, TPA1001/i, TPA/l, TPA1/128H, TPA/s und TPA Quadro waren dort anfänglich auf Basis von Transistoren, später auch auf Basis der Intersil-6100-Prozessoren entwickelte Klone.[17][12]

Sowjetische Nachbauten waren die Electronica-100, Electronica-100I und Saratov-2-Geräte.[12] Ferner gab es auf Kuba die CID-201, von der mehr als 200 Exemplare gebaut wurden, sowie im damaligen Jugoslawien die Electrotechnica-100I (die eventuell technisch identisch zur sowjetischen Electronica-100I war).

Teilweise kompatible Geräte im Westen waren die SPEAR u-LINC 100 und SPEAR u-LINC 300, die DCC-112 und DCC-112H, sowie die von Intersil gebauten Intercept I und Intercept Jr.[12]

Emulationen

Bearbeiten

Basierend darauf, dass heutzutage selbst kleinste Rechner eine größere Leistungsfähigkeit haben als die originalen PDP-8-Modelle, gibt es eine Vielzahl von Emulatoren. Ein JAVA-Emulator in Form eines einzelnen JAR-Paketes visualisiert das gesamte Bediensystem (inkl. Frontpanel) sowie die Hardware[18]. Bei dem am weitesten verbreiteten Emulator dürfte es sich um SIMH[19] handeln; dieser Emulator ist in der Lage, eine Vielzahl historischer CPUs zu emulieren. Ein verkleinertes, jedoch authentisches Frontpanel der PDP-8 mit entsprechender Logik in Kombination mit einem Emulator, der auf einem Raspberry Pi läuft, lässt das ursprüngliche System wieder auferstehen.[20]

Befehlssatz

Bearbeiten
Befehlscodierung der PDP-8
0 1 2 3 4 5 6 7 8 9 10 11 (bit position)
Basisbefehle
OP   OPeration
  I   Instruction-relative
  Z   Zero-Page
  OFF OFFset
IOT: Ein-/Ausgabe, Transfer
1 1 0   6: Code für IOT
  Device   Gerätecode
  Func. Function
OPR1: Operationsgruppe 1
1 1 1 0   OPeRate Gruppe 1
  Instruction Instruction
OPR2O: Operationsgruppe 2/OR
1 1 1 1   1   0 OPeRate 2/Or
  Ins   Ins   Instruction
OPR2A: Operationsgruppe 2/AND
1 1 1 1   1   0 OPeRate 2/And
  Ins   Ins   Instruction
OPR3: Operationsgruppe 3
1 1 1 1   1 OPeRate Gruppe 3
  Ins   Instruction
  Code   Code

Der Befehlssatz der PDP-8 codiert Befehl und Operand in stets genau ein 12-Bit Wort, dabei ist es für einige Operationen sogar möglich, bei identischem Operanden mehrere Befehle in ein einziges 12-Bit Wort zu kodieren.

Die drei höchsten Bits des 12-Bit Worts (mit den Bits 0 bis 2 bezeichnet) sind der Befehlscode. Bei den sechs Operationen, die sich auf den Speicher beziehen, geben die Bits 5 bis 11 eine 7-Bit-Adresse an. Wenn Bit 4 gesetzt ist, bedeutet dies, dass die Adresse mit den 5 höchsten Bits des Programmzählerregisters (PC) vervollständigt werden soll, was bedeutet, dass sich die adressierte Stelle innerhalb der gleichen 128 Wörter wie der Befehl befindet. Wenn Bit 4 nicht gesetzt ist, werden Nullen verwendet, so dass die adressierte Stelle innerhalb der ersten 128 Wörter des Speichers liegt. Bit 3 spezifiziert "indirection"; wenn es gesetzt ist, verweist die so erhaltene Adresse auf einen 12-Bit-Wert im Speicher, der die tatsächliche effektive Adresse für die Anweisung angibt. Dadurch können die Operanden an einer beliebigen Stelle im Speicher liegen, was jedoch dann ein zusätzliches 12-Bit Wort kostet. Der JMP-Befehl operiert nicht mit einem Speicherwort, es sei denn, es ist "indirection" angegeben, nutzt aber die gleichen Bitfelder.

Programmbeispiele

Bearbeiten

Die folgenden Beispiele zeigen Code in PDP-8 Assemblersprache, wie er mit dem PAL-III Assembler übersetzt werden könnte.

Vergleich zweier Zahlen

Bearbeiten

Wie im oben stehenden Abschnitt zur Bedeutung der PDP-8 erwähnt, war ein Programmierer für die PDP-8 sehr viel damit beschäftigt, einfache Dinge aufwändig selbst zu programmieren. Diese 6 Instruktionen sind notwendig, um zwei Zahlen in den Speicherstellen ORD1 und ORD2 zu vergleichen:

    /Vergleich der Zahlen in OPD1 und OPD2
            CLA CLL     / Lösche Accumulator und Überflussbit
            TAD OPD1    / Lade die erste Zahl in den Accumulator.
                        / Es gibt keinen expliziten Ladebefehl,
                        / also wird der Umweg über Addition gegangen.
            CIA         / Bilde das Zweierkomplement und addiere
                        / eins. Damit steht jetzt der Negativwert
                        / von OPD1 im Accumulator
            TAD OPD2    / Addiere OPD2, damit enthält der Accumulator
                        / jetzt OPD2-OPD1.
                        / Wenn OPD2≥OPD1 gibt es einen Überlauf und
                        / das Link-Flag wird gesetzt
            SZL         / Überspringe die nächste Anweisung wenn
                        / kein Überlauf, also wenn OPD2<OPD1 …
            JMP OP2GE   / Springe irgendwohin falls Überlauf,
                        / also falls OPD2≥OPD1
                        / Hier geht dann der Fall OPD2<OPD1 weiter …

Zeichenausgabe

Bearbeiten

Eine mögliche Fassung von „Hello, world!“ mit Ausgabe auf dem Drucker, wobei hier zur Illustration der Befehlskodierung die Ausgabe des PAL Assemblers gezeigt wird, also Speicherstelle (Spalte 1) und Speicherinhalt (Spalte 2), der eigentliche Programmcode steht ab Spalte 3:

       0010     *10                   / Set current assembly origin to address 10,
00010  0207     STPTR,  STRNG-1       / An auto-increment register (one of eight
                                      / at 10-17)

       0200     *200                  / Set current assembly origin to program
                                      / text area
00200  7300     HELLO,  CLA CLL       / Clear AC and Link again (needed when we
                                      / loop back from tls)
00201  1410             TAD I Z STPTR / Get next character, indirect via
                                      / PRE-auto-increment address from the
                                      / zero page
00202  7450             SNA           / Skip if non-zero (not end of string)
00203  7402             HLT           / Else halt on zero (end of string)
00204  6046             TLS           / Output the character in the AC to the
                                      / teleprinter
00205  6041             TSF           / Skip if teleprinter ready for character
00206  5205             JMP .-1       / Else jump back and try again
00207  5200             JMP HELLO     / Jump back for the next character

00210  0310     STRNG,  310           / H
00211  0345             345           / e
00212  0354             354           / l
00213  0354             354           / l
00214  0357             357           / o
00215  0254             254           / ,
00216  0240             240           / (space)
00217  0367             367           / w
00220  0357             357           / o
00221  0362             362           / r
00222  0354             354           / l
00223  0344             344           / d
00224  0241             241           / !
00225  0000             0             / End of string
                $HELLO                /DEFAULT TERMINATOR

Die Ausgabe von Speicheradresse und -inhalt ist oktal dargestellt, sodass diese leicht über die Schalter am Bedienfeld direkt in die Speicherstellen eingegeben werden können. Für oben stehendes Programm würde zunächst den Wert 0010 einstellen (oktal, also 000-000-00I-000 mit 0 bzw. I als Aus bzw. Ein) und dann mittels Load Add als aktive Adresse setzen. Anschließend würde der Wert 0207 (000-0I0-000-III) eingestellt und mittels Dep im Speicher deponiert. Der Addresszähler springt dabei automatisch eine Stelle weiter (und zeigt dann auf 0011). Als nächstes wird 0200 (000-0I0-000-000) eingestellt und mit Load Add geladen, dann 7300 (III-0II-000-000) mit Dep deponiert, anschließend ist der Adresszeiger korrekt und die nächste Instruktion kann sofort mit 1410 (00I-I00-001-000) deponiert werden usf.

Am Ende wird erneut Adresse 0200 eingestellt und mit Start gestartet. Das Programm gibt „Hello, world!“ auf dem Drucker aus und die Maschine geht in den Haltezustand.

Bearbeiten
Commons: PDP-8 – Sammlung von Bildern, Videos und Audiodateien

Einzelnachweise

Bearbeiten
  1. heise online: Der Tag als der Mini kam: 50 Jahre PDP-8. Abgerufen am 4. Oktober 2019.
  2. PDP-8 Summary of Models and Options – Section: What is a PDP-5? Abgerufen am 4. Oktober 2019 (englisch).
  3. a b Digital Equipment Corporation (Hrsg.): PDP-8 – A High Speed Digital Computer. 1967, S. 1–2 (bitsavers.org [PDF]).
  4. Edgar H. Schein: DEC is dead, long live DEC: the lasting legacy of Digital Equipment Corporation. Berrett-Koehler Publishers, San Francisco 2004, ISBN 978-1-60509-302-4, S. 271.
  5. George Harrar: The ultimate entrepreneur: the story of Ken Olsen and Digital Equipment Corporation. Contemporary Books, Chicago 1988, ISBN 0-8092-4559-0.
  6. Frühe Computer im technikum29
  7. Exponate des Computermusems der Fakultät Informatik an der Universität Stuttgart
  8. Katalog der Informatik-Sammlung Erlangen
  9. Ziff Davis Inc: PC Mag. Ziff Davis, Inc., 29. Oktober 1985 (books.google.de [abgerufen am 4. Oktober 2019]).
  10. sinngemäß so in Abschnitt 1.1 von „Introduction to the Central Processing Unit (CPU)“, einem Handbuch zu einem Texas Instruments Mikrocomputer: TMS320C28x CPU and Instruction Set (Rev. F). (ti.com.cn [PDF]).
  11. Erfahrungsbericht Projektleiter PDP-8/E-Entwicklung
  12. a b c d e Doug Jones's DEC PDP-8 FAQs. Abgerufen am 4. Oktober 2019.
  13. Digital Equipment Corporation (Hrsg.): PDP-8/S – Maintenance Manual. 1965, S. 18 (bitsavers.org [PDF]).
  14. Digital Equipment Corporation (Hrsg.): PDP-8 – Small Computer Handbook. 1968, S. 290 (bitsavers.org [PDF]).
  15. Digital Equipment Corporation (Hrsg.): PDP-8 – Small Computer Handbook. 1970, S. 277 (bitsavers.org [PDF]).
  16. a b c Digital Equipment Corporation (Hrsg.): PDP-8/E/F/M – Sales Brochure. 1970, S. 17 (pdp8online.com [PDF]).
  17. Borbély Éva: The early history of computers in the Hungarian economy. Hrsg.: BME Department for the History and Philosophy of Science. ISSN 1418-7108 (heja.szif.hu [PDF]).
  18. PDP-8-JAVA-Emulation
  19. SIMH-CPU-Emulator
  20. PDP-8I-Bausatz basierend auf Raspberry Pi