Die PDP-8 ist ein 12 Bit System: Akkumulator wie auch Program Counter sind 12 Bit breit. Damit ist der Adressbereich auf 2^12 gleich 4096 Worte beschränkt, also 4k. Somit wäre bereits das Urmodell – Straight-Eight genannt – mit vollem Speicherausbau ausgeliefert worden.
Allerdings kamen schon bald Speichererweiterungen hinzu:
- Type 183: Memory Extension Control
- Type 184: 4KW Memory Module
Die Listenpreise für diese Module betrugen USD 3000 bzw. 10’000. Die PDP-8 in Grundausstattung kostete damals 18’000 USD.
Von den Speichermodulen konnten bis zu 7 weitere montiert werden, was zum bekannten Maximum von 32k Worten führt.
Die stolzen Besitzer von Hardware benötigen zum einen das memory extension control Modul sowie die gwünschte Anzahl an zusätzlichen Speichermodulen. simh Anwender haben’s etwas leichter, sie können die Speichergrösse über das Kommando set cpu
setzen:
PDP-8 simulator V3.8-1 sim> show cpu CPU, idle disabled, 32KW, EAE sim> set cpu 12k sim> show cpu CPU, idle disabled, 12KW, EAE
Bank Switching
Die Logik für das Ansprechen des zusätzlichen Speichers beinhaltet einige Puffer und Register, die für eine Art Bank Switching sorgen. Immer wenn die CPU auf den Speicher zugreift, dienen diese Register als höchstwertige Bits und erweitern damit den Adressraum über die ersten 4k Worte hinaus.
- instruction feed register (IF)
- data feed register (DF)
- save field register
- break field register
Programmieren der Speicherverwaltung
CDF Change Data Field 62x1 CIF Change Instruction Field 62x2 CDF,CIF 62x3 RDF Read Data Field 6214 DF → AC * RIF Read Instruction Field 6224 IF → AC * RIB Read Interrupt Buffer 6234 SRF → AC * RMF Restore Memory Field 6244 SRF → DF,IB
Die Lesekommandos (RDF, RIF, RIB) führen eine OR Verknüpfung mit dem Akkumulator durch. Die Bits werden also nicht einfach in den Akku geschoben.
Leider sind die Informationen über die Speichererweiterungen spärlich. Als einzige Informationsquelle habe ich bisher die Dokumentation zur KT08A Speichererweiterung gefunden. Dieses Modul ist für die PDP-8/A konzipiert und nimmt sogar bis 128k Worte auf. Die Register sind dazu 5 Bit gross (32 Bänke zu 4k = 128k Worte).
Instruction Field Register
Das IFR bildet zusammen mit dem PC die effektive Adresse, von dem Instruktionen gelesen werden.
Instruction Field Buffer
Das IFB wird über das CIF Kommando programmiert. Sein Inhalt wird aber erst bei der Ausführung der nächsten Jump-Instruktion (JMP, JMS) in das IFR geladen.
Data Field Register
Das DFR ergänzt die Adressen bei indirekten Zugriffen auf den Speicher (Mnemonics TAD, AND, ISZ, DCA mit gesetztem I-Bit).
Zusammenfassung
Zur Zeit der ersten PDP-8 Mitte 1960 war Speicher noch sehr teuer. Ringkernspeicher sind aufwändige Handarbeit, entsprechend teuer waren die Speichermodule.
Das veränderte sich rapide, als Intel und andere Hersteller die Produktion von RAM Chips soweit optimiert hatten, dass sie zuverlässige Chips in grossen Mengen herstellen konnten. Entsprechend rasch fielen die Preise, und die Computerhersteller wechselten zu statischem oder dynamischem RAM. Intel hat hier eine Vorreiter-Rolle übernommen, und mit dem 1101 bzw. 1103 statisches bzw. dynamisches RAM als erste Firma in Masse gefertigt.
Eine Preisliste ist schwer zu finden; eine Quelle nennt für den Intel 1103 (1024 bits) einen Preis von 60 USD im Jahr 1971. Mit diesem Chip sind 4k 12-Bit Worte (49152 bits) in 48 Chips realisierbar, was zum damaligen LIstenpreis 2’880 USD gekostet hätte. Doch die Preise fielen rasch.
Digital hat diesen Wechsel ebenfalls vollzogen und bei späteren PDP-8 nur noch RAM-auf-Chips eingesetzt. Die eingangs erwähnte PDP-8/A mit bis zu 128k Worten wurden mit DRAM Chips realisiert.
Bemerkenswert finde ich dass die PDP-8 so konzipiert wurde, dass mehr als 4k Worte adressiert werden können, auch wenn die Programmierung von zusätzlichen Registern aus heutiger Sicht umständlich, fehlerträchtig und altbacken wirkt.