Talk:PDP-9

Microprogramming
The article read "It was DEC's first microprogrammed machine. "

I believe this is incorrect or at best very misleading. The PDP-9 had some instructions called "augmented instructions" which could perform several parallel operations, similar to the way microcode works. But this was a user instruction, not a mechanism for implementing the instruction set architecture at a lower level. See the PDP-9 User Handbook (January 1968), section 7-1, for additional information. That is, it is not microprogramming in the usual sense.

DEC's first microprogrammed machines were the PDP-11's. Later models of the PDP-10 (KL-10) were also microprogrammed.

I have removed this claim. --Macrakis (talk) 23:38, 5 July 2019 (UTC)


 * It did support instructions "microprogrammed" in the PDP-5/PDP-8 sense, but it also used microprogram control; I put the claim back - see the DEC book I used as a reference for the claim. Guy Harris (talk) 02:37, 6 July 2019 (UTC)


 * The wording in the reference you added is unclear. I did find a manual for the Extended Arithmetic Element which talks about microinstructions in the EAE (which is what the Gordon Bell book mentions) in more detail, including the use of a count register. And I don't see any evidence of a separate microcode layer in the architecture diagrams (or is that what they mean by "subcommand sequences"?), so I'm pretty sure that they're not talking about microcoding in the usual sense. --Macrakis (talk) 19:18, 6 July 2019 (UTC)


 * They say "A 64-word, 36-bit, 212-nanosecond read-only, transformer-controlled, rope memory was used as the microprogrammed control store", which sounds like a description of a microcode ROM, and "The basic PDP-9 implemented the PDP-4 instruction set processor and the Extended Arithmetic Element option using microprogrammed control.", indicating that this wasn't just specific to the EAE. (It's confusing to have both ISA-level instructions that behave somewhat like horizontal microcode, with subfields of the instruction specifying separate operations all performed as part of the instruction's operation, and having the cycle-by-cycle operation of the machine controlled by a program in some special memory rather than purely by logic, referred to with terms such as "microcoding" or "microprogramming".)  And I suspect that "Sub command sequences" does, in fact, refer to the microcode control of the processing of at least some instructions.


 * In addition, the PDP-9 Maintenance Manual, Volume 1:


 * Speaks on page 1-5 of the "Control Memory" as being "The magnetic storage device in the central processor which issues timed, sequential gating levels to process or execute the instruction.", saying


 * "The levels are strobed out of the read-only control memory in the form of 36-bit process words, each bit representing a gate-on or gate-off condition. Process word storage locations are addressed on the basis of the decoded instruction word op codes and previous processing results."


 * Says on page 3-1:


 * "Control Memory (CM) - The CM issues all sequences of internal processes required to fetch and execute a program's instructions, to effect operation of I/O channels, and to respond to operator commands from the console. It is a very fast, read-only, prewired magnetic core storage unit. A control register (CR) in the CM addresses the magnetic core matrix drivers to make the CM deliver specific processing gate levels to the transfer busses and the to the active registers.  The CR supplies new address information to the CM based on the instruction to be executed and on the conditions sensed by the previous process levels."


 * Describes the CM operation in more detail in section 3.4, starting on page 3-16;


 * Describes how the CM controls CPU operation in section 3.5, starting on page 3-20.


 * That all appears to describe a machine microcoded in the Maurice Wilkes sense. Guy Harris (talk) 20:12, 6 July 2019 (UTC)


 * That all makes sense now. Thanks for taking the time to walk me through this. Perhaps some of this (not all!) belongs in the article or its footnotes? It was awfully confusing to me the way the PDP-9 docs use microprogramming to mean two completely different things.... --Macrakis (talk) 22:35, 6 July 2019 (UTC)


 * The Bell et al paper says of horizontal microcode that "This behavior is similar to the operate class of instructions in the 12-bit and 18-bit computers."; I don't know whether that's the reason why "microprogramming" is used for those instructions or not. Guy Harris (talk) 23:45, 6 July 2019 (UTC)
 * Having recently started on a low-level simulation of the PDP-9 machinery, I can confirm it is microprogrammed in the conventional meaning of the word. Maybe it doesn't help that the documentation uses the terms control memory and process word.  It may also be confusing that it's roughly 50/50 micocode/random logic, and 50/50 synchronous/asynchronous.  I have written down some observations here: https://gunkies.org/wiki/PDP-9_control_memory
 * CC @Guy Harris
 * Lars Brinkhoff (talk) 07:34, 13 August 2023 (UTC)