Difference between revisions of "PDP-11 architecture"
(→Instruction set: Add it) |
(→Instruction set: tweaks) |
||
Line 71: | Line 71: | ||
* BIS (bit set) | * BIS (bit set) | ||
* BIC (bit clear) | * BIC (bit clear) | ||
+ | * XOR | ||
− | and many single-operand instructions: | + | (as noted, ADD and SUB are only available in word mode, as is XOR, which also only provides a register number for one operand); and many single-operand instructions: |
* CLR | * CLR | ||
Line 127: | Line 128: | ||
* JSR | * JSR | ||
* RTS | * RTS | ||
+ | |||
+ | A variety of other instructions (e.g. to trap to the operating system, halt the CPU, etc) also exist. | ||
{{PDP-11}} | {{PDP-11}} | ||
[[Category: DEC Architectures]] | [[Category: DEC Architectures]] |
Revision as of 01:39, 20 August 2016
The PDP-11 is a family of 16-bit minicomputer designed by DEC, in production from 1970-1990. Although the basic address space was 16 bits, most models could hold more memory than that, although only a limited subset was visible to the program at any time.
It had 8 general purpose registers; the operand coding, which was applied regularly across essentially the entire instruction set, allowed it to provide a two-address instruction architecture, not simple load-store architecture like its predecessor, the 12-bit PDP-8.
One of the registers was dedicated to be the program counter, and one was more or less dedicated to be the stack pointer. These registers, along with a variety of register-based addressing modes, allowed it to provide a variety of additional operand modes, such as immediate (literal) data, absolute and relative addreses, and stack operations.
The regular application of the operand coding allowed these additional operand modes to be available across essentially the instruction set; this, and the power of the wide range of operand modes, substatially reduced the code size. This was an important consideration both in the PDP-11's early life, when small and expensive core memory was the standard main memory, and in its later life, when the 16-bit address space became a severe limt.
Most instructions come in both byte and word forms; an exception is ADD and SUB, which exist in only word forms (probably because there was not enough room in the instruction set to have them both in both forms).
Contents
Limitations
Early machines were limited to one-bit shift operations, and did not have hardware integer multiplication or division, or any hardware floating point. Later machines tended to include the former (on some early mid-range machines such as the PDP-11/40 and PDP-11/03, they were an option), and floating point was also added to later machines (until relatively late in the line, as an option).
Floating point
Two forms of floating point were later added: a simplified form (only the 4 basic operations, with 32-bit variables), and full-blown floating point (32-bit and 64-bit formats, many operations).
The former was available as an option in the PDP-11/40, and later in the PDP-11/03. The latter was available as an option in the PDP-11/45 and variants thereof, the PDP-11/70, [PDP-11/34]], PDP-11/44 and PDP-11/23; it was standard in the PDP-11/73, KDJ11-B and KDJ11-B (although in all these machines an optional FPJ11 Floating Point Accelerator greatly improved the floating point throughput).
Memory management
After a few disparate custom add-on units to provide memory management in the PDP-11/20, memory management became standardized with the PDP-11/45 (in which it was an option); most later machines supported it. A simplified version was supported in the -11/40 and -11/23 (as an option), and in the -11/34 (standard).
Operands
The PDP-11 supported both single- and double-operand instructions. The operands are mostly the most flexible form, in which a 6-bit field holds three bits of register number, and three bits of mode.
As noted above, this operand form provided a large variety of operand forms, including stack push and pop, literals, etc. This provides the basic instruction group with great flexibiilty, especially the double-operand instructions (MOV, ADD, etc).
A few instructions (mostly those which were added to the instruction repetoire later, e.g. MUL, DIV, XOR, etc) only provide a register number for one operand (i.e. that operand must be pre-loaded by another instruction).
Addressing modes
The mode field is further subdivided into a 'Deferred' (indirect) bit, and a two bit field which selects among direct register, auto-increment, auto-decrement, and indexed modes:
Mode | Name | Symbolic | Description |
---|---|---|---|
0 | Register | R | (R) is the operand |
1 | Register deferred | (R) | (R) contains address of operand |
2 | Auto-increment | (R)+ | (R) is the address; (R) is incremented by 1 or 2, in case of byte or word instructions. |
3 | Auto-increment deferred | @(R)+ | (R) is the address of the address; (R) is incremented by 2 |
4 | Auto-decrement | (R)- | (R) is decremented by 1 or 2, in case of byte or word instructions; R is address. |
5 | Auto-decrement deferred | @(R)- | (R) is decremented by two; (R) is the address of the address. |
6 | Index | X(R) | (R) + X is the address. |
7 | Index deferred | @X(R) | (R) + X is the address of the address |
Auto-increment and auto-decrement allow any register to be used as a stack pointer; the hardware enforces the use of R6 as the stack pointer for some operations, though (e.g. subroutine call and return), so it is uncommon for another register to be used for this.
The use of auto-increment mode with the program counter provide immediate (literal) operands, though.
Instruction set
The instruction set provided a number of double-operand instructions:
- MOV
- ADD
- SUB
- BIT (bit test)
- BIS (bit set)
- BIC (bit clear)
- XOR
(as noted, ADD and SUB are only available in word mode, as is XOR, which also only provides a register number for one operand); and many single-operand instructions:
- CLR
- TST (compare with 0)
- INC
- DEC
- NEG
- COM (complement)
- ASR (arithmetic shift right)
- ASL
- ROR (rotate right)
- ROL
- SWAB (swap bytes)
- ADC (add carry)
- SBC
- SXT (sign extent - not in all models)
The instruction set provided a plethora of branches, although all branches are limited to a range of 127 words before or after the current instruction; a limit which is not onerous in practise. All the conditional branches depend on a prior instruction to set 4 condition code bits (stored in the processor status word):
- Z - Zero
- N - Negative (i.e. high bit set)
- C - Carry
- V - Overflow
Conditional branches:
- BR (un-conditional)
- BNE (non-zerO)
- BEQ (zero)
- BMI (negative)
- BPL (positive)
- BVC (overflow clear)
- BVS (overflow)
- BCS (carry)
- BCC (no carry)
Signed branches:
- BGE (greater than or equal to 0)
- BGT
- BLE
- BLT
Unsigned branches:
- BHIS (higher than, or the same)
- BHI
- BLOS
- BLO
Other flow of control instructions (both JMP and JSR can transfer to any location in the address space):
- JMP
- JSR
- RTS
A variety of other instructions (e.g. to trap to the operating system, halt the CPU, etc) also exist.
v • d • e PDP-11 Computers and Peripherals |
---|
UNIBUS PDP-11s - PDP-11/20 • PDP-11/15 • PDP-11/35 • PDP-11/40 • PDP-11/45 • PDP-11/50 • PDP-11/55 • PDP-11/70 PDP-11/05 • PDP-11/10 • PDP-11/04 • PDP-11/34 • PDP-11/60 • PDP-11/44 • PDP-11/24 • PDP-11/84 • PDP-11/94 QBUS PDP-11s - PDP-11/03 • PDP-11/23 • PDP-11/23+ • MicroPDP-11/73 • MicroPDP-11/53 • MicroPDP-11/83 • MicroPDP-11/93 QBUS CPUs: LSI-11 • LSI-11/2 • KDF11-A • KDF11-B • KDJ11-A • KDJ11-B • KDJ11-D • KDJ11-E Buses: UNIBUS • UNIBUS map • SPC • MUD • EUB • QBUS • CD interconnect • PMI Also: PDP-11 architecture • PDP-11 Extended Instruction Set • FP11 floating point • PDP-11 Memory Management |
UNIBUS CPUs: KA11 • KC11 • KB11-A • KB11-B • KB11-C • KB11-D • KD11-A • KD11-B • KD11-D • KD11-E • KD11-EA • KD11-K • KD11-Z • KDF11-U
Co-processors: FP11-A • FP11-B • FP11-C • FP11-E • FP11-F • KE44-A • FPF11 Chips: LSI-11 • KEV11-A • KEV11-B • KEV11-C • F-11 • KEF11-A • KTF11-A • T-11 • J-11 • FPJ11 CPU options: KE11-E • KE11-F • KJ11-A • KT11-C • KT11-D • KK11-A • KK11-B • KT24 • KTJ11-B Rare CPU options: KS11 Memory Protection and Relocation option • KT11-B Paging Option • KUV11 Writeable Control Store Front panels: KY11-A • KY11-D • KY11-J • KY11-LA • KY11-LB • KY11-P More on buses: UNIBUS and QBUS termination • Bus Arbitration on the Unibus and QBUS • CTI BUS PDT-11s - PDT-11/110 • PDT-11/130 • PDT-11/150 CTI PDP-11s - PRO-325 • PRO-350 • PRO-380 Other: FIS floating point • PDP-11 Commercial Instruction Set • PDP-11 stacks • PDP-11 family differences |