SDS 9 Series
The SDS 9 Series computers are a backward compatible line of transistorized computers produced by Scientific Data Systems in the 1960s and 1970s. This line includes the SDS 910, SDS 920, SDS 925, SDS 930, SDS 940, and the SDS 945. The SDS 9300 is an extension of the 9xx architecture. The 1965 SDS 92 is an incompatible 12-bit system built using monolithic integrated circuits.
The 910 and 920 were first shipped in August, 1962. The 9300 was announced in June, 1963. The 925 and 930 were announced in 1964. The 940 was announced in 1965, and the 945 in 1968.
The 9 series was replaced by the SDS Sigma series.
General description
All systems are 24-bit single address machines. Programmer-accessible registers are A, B, X, and P, plus an overflow indicator. The 9300 has three index registers X1 through X3 which can be used as base registers to allow access to memory above 16K words. The W and Y registers are used for input/output.Maximum address space is 214 or 16,384 words on the 910 and 920. The 9300 and 930 support up to 32K, and the 940 and 945 support up to 64K, although the method for accessing the memory above 16K differs.
Data formats
Fixed-point data is 24-bit, two's complement, big-endian.Floating-point is implemented in software using "programmed operators", except on the SDS 9300 which has hardware floating-point. All floating-point numbers are stored as 48-bit double words. Single precision has a 24-bit signed fraction and a 9-bit signed exponent, double precision has a 39-bit fraction and a 9-bit exponent. Both the exponent and the fraction are stored in big-endian twos-complement format. The binary point is assumed to be immediately left of the high-order bit of the fraction. The value of the number is
F*2E, where F is the fraction and E is the exponent.The floating-point formats are:
Double-precision floating-point
+-+-----------------------+
|±| Fraction | high-order word
+-+-----------+-+---------+
| frac |±|exponent | low-order word
+-------------+-+---------+
bit 0 1 2
5 3
High-order word:
bit 0 fraction sign
bits 1–23 high-order part of fraction
Low-order word:
bits 0–14 low-order part of fraction
bit 15 exponent sign
bits 16–23 exponent
Single-precision floating-point
+-+-----------------------+
|±| Fraction | high-order word
+-+-----------+-+---------+
| not used |±|exponent | low-order word
+-------------+-+---------+
bit 0 1 2
5 3
The format is the same as double precision except that only 24 bits of fraction are used.
Address generation
For address generation, indexing, if specified, is performed before indirection. The word at the effective indirect address is decoded as if it were an instruction, allowing an indirect address to also specify indirection or indexing. Multiple levels of indirect addressing are allowed.Programmed operators
The programmed operator facility allows the instruction code field to indicate a call to a vector of subroutine addresses. The six bit instruction code allows up to 64 programmed operators. If the P bit is set, an instruction code of xx is treated as a call to location 1xx. The location of the POP instruction is saved in location zero. Bit zero of location zero is set to the current value of the overflow indicator and the indicator is reset. Bit 9 of location zero is set to '1'b to indicate an indirect address, allowing the programmed operator routine to indirectly access the data specified in the address of the POP instruction.SDS 910
on the 910 is 2048 to 16384 words of magnetic-core memory with a cycle time of 8 μs. A fixed-point add instruction takes 16 μs, a fixed-point multiply takes 248 μs. Two hardware interrupts are standard with up to 896 more optional.The instruction format for the 910 and 920 systems is as follows:
+-+-+-+------+-+--------------+
|0|X|P|Opcode|I| Address |
+-+-+-+------+-+--------------+
1 2
bit 0 1 2 3 8 9 0 3
Bits 0–2 are called the "tag"
Bit 0 is always zero.
Bit 1 '1'b indicates that the operand address is to be indexed.
Bit 2 '1'b indicates that this instruction
is a programmed operator.
Bits 3–8 is the instruction code or programmed-operator id.
Bit 9 '1'b indicates that the operand address shall be indirected
, potentially recursively.
Bits 10–23 Contain the operand address.
The SDS 910 weighed about.
SDS 920
Main memory on the 920 is 4096 to 16384 words of magnetic core memory. The fixed-point add time is the same as the 910, but the fixed-point multiply is roughly twice as fast at 128 μs. The 920 can have up to 1024 priority interrupts.The 920 weighed about.
SDS 930
The 930 offers a "memory extension system" that allows addressing more than 16284 words. Two 3-bit "Extend Memory Registers", called EM2 and EM3, are provided which can be loaded with a value to be used as the high-order three bits of the effective address. Addresses 000008–177778 are always unmodified. If the high-order octal digit of the address in the instruction is two the contents of EM2 replaces the high-order digit in the effective address; when the digit is three the contents of EM3 are used.To retain compatibility with earlier models. when the computer is started the value in EM2 is set to 2 and EM3 to 3, allowing programs to address the first 16384 words of memory. These registers can be loaded by the program.
The program loader uses the high-order bit of the instruction, ignored by all models, as a flag indicating that the instruction currently being loaded is to be relocated.
930 memory has a cycle time of 1.75 μs. A fixed-point add takes 3.5 μs, and a fixed-point multiply 7.0 μs. The priority interrupt system allows 2–38 input/output interrupts and up to 896 system interrupts.
The instruction format for the 930 system is compatible with prior systems except for the bits used for extended memory:
+-+-+-+------+-+--+----------+
|0|X|P|Opcode|I|EM| Address |
+-+-+-+------+-+--+----------+
bit 0 1 2 3 3 9 11 1 2
01 2 3
Bits 10 and 11 specify either no extended memory
or prepend the contents of
EM2 or
EM3
to form the effective address.
SDS 940
The 940 adds modes of operation to support multiple users. The operating mode of previous models is renamed normal mode. A new monitor mode limits access to input/output and certain privileged instructions. A user mode is used to run users' application programs.A set of memory map registers is used to map virtual addresses to physical. There are eight memory map registers, each mapping 2K words, to provide an address space of 16K.
The instruction format for normal mode is the same as for the 930. Addressing differs between user mode and monitor mode.
SDS 940 user mode instruction format:
+-+-+-+------+-+---+---------+
|U|X|P|Opcode|I|Blk| Address |
+-+-+-+------+-+---+---------+
bit 0 1 2 3 3 9 1 1 2
0 3 3
Bit 0 is ignored in user mode unless bit position 2
indicates that this is a programmed operator.
In this case a '1'b in bit position 0 indicates that this is a "system POP", or "SYSPOP", instead of a standard programmed operator.
In user mode bit positions 10–12 "constitute a virtual memory block number", that is specify a memory map register, and bits 13–23 "specify a location within the virtual memory block."
The contents of the memory map register are prepended to instruction bits 13–23 to form the effective address.
Memory map
The 940 accesses memory through a memory map to provide virtual memory. The map formats differ slightly between a user memory map and a monitor memory map.For programs running in user mode, the high-order three bits of the address field of an instruction serve as an index to an array of eight registers. Each register contains a 5-bit value which is prepended to the low-order 11 bits of the instruction address field to form the 16-bit physical address. This divides virtual memory logically into eight blocks of 2048 words each. The registers allow access to 16K words at any one time out of a possible 32K words of physical memory. A sixth bit in each register indicates a read-only block of storage. Rn=0 and Pn=1 indicates an unassigned block, and any reference causes a trap. The map registers can only be set in monitor mode.
The memory map for monitor mode is similar. There are no P bits; the R0–R5 equivalents, called M0–M5, contain the read-only values 0–5, providing direct access to physical addresses 0–8K-1. For addresses in the range 8K–12K-1 memory extension register EM2 is used to form the physical address as it is in normal mode. For addresses 12K–16K-1 the contents of memory map registers M6 and M7 are used to form the address.
The monitor can use either the monitor memory map or the user memory map, determined by the value of bit 0 of the instruction. This allows the monitor access to the user's address space.