gib mir mehr (als 4k Worte)…!

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.

Ferrite core memory
Ferritkernspeicher Orion 8, CC BY 2.5 via Wikimedia Commons

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

Intel 1101
Intel 1101 Speicherchip – Christian Bassow, CC BY-SA 4.0 via Wikimedia Commons

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.