Nord-5 was Norsk Data's first 32-bit machine and was claimed to be the first 32-bit minicomputer, [1] subject to various qualifications. It was described in company literature as an "auxiliary computer... monitored by two or more NORD-1 computers", this arrangement comprising the "NORD Integrated Computer System" or NORDIC system. It was arguably this more comprehensive configuration that supported such claims of achieving an industry first with the machine. [2] : iii Its successor, the Nord-50, was itself described as a "special purpose computer" and had a similar reliance on a Nord-10 host computer. [3] : I-I-I
Introduced in 1972, the Nord-5 was categorised in reporting as a "superminicomputer", described retrospectively as a "technological success but a commercial disaster", [4] eventually being superseded by the ND-500 family, announced in 1981. [5] Initially described as a larger version of the Nord-1 to compete with the UNIVAC 1106 and the IBM System/360 Model 44, [6] the machine used a Nord-1 as its front-end console processor, which ran the majority of the operating system. [7] Being designed for "high performance on number crunching", the machine could perform floating-point multiplication in around 1μs and division in around 8μs. [2] : iii The Nord-50 achieved a reported 0.5 million Whetstone instructions per second in benchmarking. [8]
The Nord-5 and Nord-50 provided broadly similar CPUs that do not support dedicated input/output instructions, interrupt-related instructions or memory management functions, these being delegated to the Nord-1 and Nord-10 host computer in each case. [2] : iii [3] : I-I-I Each machine's CPU provides three classes of instructions, each supporting a range of data manipulation operations, divided into those performing memory accesses, those operating on internal or external registers, and those combining register values with a constant operand or argument. [2] [9]
The implementation of the Nord-50's CPU used TTL integrated circuits, employing SN7489 64-bit RAM chips for register storage, [3] : III-5-1 and the SN74181 arithmetic logic unit. The latter influenced the instruction encoding supported by the CPU, with the 74181's function select input encoding influencing the memory addressing instruction's function code field. [3] : III-6-1
Compared to the Nord-1 and Nord-10 which offered a limited number of 16-bit registers, [10] : 13–14 [11] : 3–1 the Nord-5 and Nord-50 provided many more general-purpose 32-bit registers, and this is reflected in their instruction set, encoding instructions within 32-bit words, as opposed to the 16-bit instruction word of the Nord-1 and Nord-10, [10] : 16 [11] : 3–1 and providing more general instructions for load, store and shift operations, as opposed to the register-specific instructions provided by the Nord-1 and Nord-10. Instructions for arithmetic and register transfer operations are more versatile, as opposed to being confined to acting upon specific registers as the equivalent Nord-1 and Nord-10 instructions do. Double-precision floating-point arithmetic is also a notable benefit of the Nord-5 and Nord-50, meriting additional instructions. [3] : CI.1–CI.6
The CPU in the Nord-5 and Nord-50 provides 64 general registers, 32 bits in size, denoted GR0..63. Floating-point arithmetic being a core feature of each system, floating-point operations also use these registers. Here, the Nord-5 and Nord-50 diverge in support for floating-point representations, with the Nord-5 only supporting a 64-bit representation with a 52-bit mantissa and 11-bit exponent, [2] : 1–2, 1–3 whereas the Nord-50 supports 32- and 64-bit representations, with the latter featuring a 55-bit mantissa and 9-bit exponent. [9] : 1–2, 1–3
|
Since 64-bit values require pairs of 32-bit general registers, the Nord-5 maps each floating register from FR0..15 to a register from GR0..15 for the most significant word of the 64-bit representation, pairing that register with one from GR16..31 for the least significant word. Similarly, FR32..47 pairs registers from GR32..47 with those from GR48..63. [2] : 1–4 This arrangement is continued in the Nord-50 for double-precision floating registers, denoted FDR0..15,32..47, with single-precision floating registers FR0..15,32..47 corresponding to GR0..15,32..47, thus employing only one of the registers in the pairs allocated to double-precision floating registers [9] : 1–4
The first sixteen general registers are more versatile in that they may be used in the base register or index register role in memory access instructions, thus providing base registers BR0..15 and index registers XR0..15. The second sixteen general registers also assume a special role as modification registers under certain circumstances, with MR0..15 corresponding to GR16..31. [2] : 1–5 [9] : 1–7 As in other processor architectures, the zero register GR0 is wired to a value of zero, and this affects all interpretations of the register (as BR0, FR0, XR0 and MR0). [2] : 1–4 [9] : 1–4
Special registers dedicated to particular roles include an overflow register (OR) applicable to multiplication and a remainder register (RR) applicable to division. The program counter register (P) holds the address of the instruction being read from memory, and the instruction register (IR) contains the currently executed instruction. [2] : 1–5 [9] : 1–7
Memory reference instructions involve the computation of an effective memory address and access to this computed location. Such instructions can involve direct or indirect addressing. Direct addressing instructions also involve the execution of an indicated function, utilising the effective address and an indicated register.
Bit | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
I = 0 | X (index) | B (base) | FC (function code) | R/F/FD (register designator) | D (displacement) | ||||||||||||||||||||||||||
I = 1 | X (index) | B (base) | 0 | D (displacement) |
In both forms, the effective address is computed using the indicated base and index registers, adding the displacement value:
Ea = RB + RX + D
With the I field unset or clear, a direct addressing instruction executes a function indicated by the FC field, utilising the effective address together with a register indicated by the register designator field. Each of the functions provides the basis of a specific individual instruction and include the following examples:
Instructions | Operations |
---|---|
LDR, STR, XMR | Transfers between registers and memory (load, store, exchange) |
LDF, STF (Nord-5) LDD, STD (Nord-50) | Transfers of double-precision floating-point values between registers and pairs of memory words (load, store) |
ADD, ADM, AND, DIV, MPY, SUB | Arithmetic and logical operations whose results are placed in registers or memory |
FAD, FDV, FMU, FSB | Single-precision (Nord-50) or double-precision (Nord-5) floating-point arithmetic, updating registers |
FADD, FDVD, FMUD, FSBD | Double-precision (Nord-50) floating-point arithmetic, updating registers |
JRF, JRN, JRP, JRZ | Conditional jump operations testing register values, jumping to the effective address |
JFM, JNM, JPM, JZM | Conditional jump operations testing modified register values, jumping to the effective address |
RTJ | Jump, storing the return address in a register |
More unusual operations include conditional skip operations (such as CRD, CRE, CRG, CRL) comparing register values with values retrieved from the effective address, skipping the next instruction in the stream where the condition is satisfied. Remote execution (EXC) involves the execution of an instruction retrieved from the effective address or even the execution of the computed address value itself, interpreted as an instruction.
With the I field set, an indirect addressing instruction occurs, incorporating a potentially greater displacement value in the computation of the effective address. However, no function is involved. Instead, the 32-bit word at the computed effective address location is then obtained to provide another memory reference instruction encoding the details of a new effective address. Thus, an instruction is effectively loaded from outside the regular instruction stream and executed, this being similar to the EXC instruction. Where another indirect addressing instruction is obtained, the cycle of obtaining a new effective address repeats, and the chaining of up to 16 indirect references is permitted by the architecture, terminated by a direct reference. [2] : 2–1, 2–2 [9] : 2–1, 2–2
Inter-register instructions involve operations that only use registers. They can be distinguished from memory reference instructions through bits 18 to 22 being left clear, with bit 31 being left clear to distinguish them from argument instructions. [2] : 2–3 [9] : 2–3
Bit | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
0 | RFC (function code) | RSC (sub-function code) | 0 | DR/DF/DFD (destination register designator) | SRA/SRAD (source register A designator) | SRB (source register B designator) |
The format suggests the general use of two source registers and one result (destination) register. However, some instructions utilise the SRB field to encode constants such as shift magnitudes or bit numbers. A selection of instructions is supported by the functions encoded by this class of instruction, including the following:
Instructions | Operations |
---|---|
RIN, ROUT | Transfers between processor and external registers |
SHR, SHD | Arithmetic and logical shift operations on 32-bit and 64-bit values |
BCL, BCM, BST | Clear, complement and set operations on an indicated bit |
FIX, FLO FIR, FIRD, FIXD, FLOD (Nord-50) | Conversions between integer and floating-point values |
FRO, IRO, LRO | Floating-point and integer arithmetic, and logical operations |
Conditional skip instructions also appear in this class of instruction, either involving the testing of individual bits (BSO, BSZ) or performing floating-point and integer arithmetic followed by an indicated comparison operation with zero (FRS, IRS), with the outcome determining whether the next instruction will be skipped. A peculiarity is the monitor call (STOP) instruction which employs zero in the function-related fields, employing bits 0 to 17 as the function code in the Nord-1 or Nord-10 monitor program. [2] : 3–2 [9] : 3–2
Argument instructions involve operations that apply constant values encoded in the instruction to a register value, updating the register. They can be distinguished from memory reference instructions through bits 18 to 22 being left clear, with bit 31 being left set to distinguish them from inter-register instructions. [2] : 2–3 [9] : 2–3
Bit | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
1 | AFC (function code) | DR (destination register) | 0 | ASF (sub-function code) | A (argument) |
This class of instructions is limited to three kinds of "direct" instructions, performing simple arithmetic (DAR), logical operations (DLR), or a conditional skip operation involving the operands and a complement operation (DSK). [2] : 4–1, 4–2 [9] : 4–1, 4–2
A central processing unit (CPU), also called a central processor, main processor, or just processor, is the most important processor in a given computer. Its electronic circuitry executes instructions of a computer program, such as arithmetic, logic, controlling, and input/output (I/O) operations. This role contrasts with that of external components, such as main memory and I/O circuitry, and specialized coprocessors such as graphics processing units (GPUs).
The Data General Nova is a series of 16-bit minicomputers released by the American company Data General. The Nova family was very popular in the 1970s and ultimately sold tens of thousands of units.
In processor design, microcode serves as an intermediary layer situated between the central processing unit (CPU) hardware and the programmer-visible instruction set architecture of a computer, also known as its machine code. It consists of a set of hardware-level instructions that implement the higher-level machine code instructions or control internal finite-state machine sequencing in many digital processing components. While microcode is utilized in Intel and AMD general-purpose CPUs in contemporary desktops and laptops, it functions only as a fallback path for scenarios that the faster hardwired control unit is unable to manage.
MIPS is a family of reduced instruction set computer (RISC) instruction set architectures (ISA) developed by MIPS Computer Systems, now MIPS Technologies, based in the United States.
Digital Equipment Corporation (DEC)'s PDP-10, later marketed as the DECsystem-10, is a mainframe computer family manufactured beginning in 1966 and discontinued in 1983. 1970s models and beyond were marketed under the DECsystem-10 name, especially as the TOPS-10 operating system became widely used.
The PDP-8 is a family of 12-bit minicomputers that was produced by Digital Equipment Corporation (DEC). It was the first commercially successful minicomputer, with over 50,000 units being sold over the model's lifetime. Its basic design follows the pioneering LINC but has a smaller instruction set, which is an expanded version of the PDP-5 instruction set. Similar machines from DEC are the PDP-12 which is a modernized version of the PDP-8 and LINC concepts, and the PDP-14 industrial controller system.
The NS32000, sometimes known as the 32k, is a series of microprocessors produced by National Semiconductor. The first member of the family came to market in 1982, briefly known as the 16032 before becoming the 32016. It was the first general-purpose microprocessor on the market that used 32-bit data internally: the Motorola 68000 had 32-bit registers and instructions to perform 32-bit arithmetic, but used a 16-bit ALU for arithmetic operations on data, and thus took twice as long to perform those arithmetic operations. However, the 32016 contained many bugs and often could not be run at its rated speed. These problems, and the presence of the otherwise similar 68000 which had been available since 1980, led to little use in the market.
In computer science, an instruction set architecture (ISA) is an abstract model that generally defines how software controls the CPU in a computer or a family of computers. A device or program that executes instructions described by that ISA, such as a central processing unit (CPU), is called an implementation of that ISA.
x86 assembly language is the name for the family of assembly languages which provide some level of backward compatibility with CPUs back to the Intel 8008 microprocessor, which was launched in April 1972. It is used to produce object code for the x86 class of processors.
A processor register is a quickly accessible location available to a computer's processor. Registers usually consist of a small amount of fast storage, although some registers have specific hardware functions, and may be read-only or write-only. In computer architecture, registers are typically addressed by mechanisms other than main memory, but may in some cases be assigned a memory address e.g. DEC PDP-10, ICT 1900.
The instruction cycle is the cycle that the central processing unit (CPU) follows from boot-up until the computer has shut down in order to process instructions. It is composed of three main stages: the fetch stage, the decode stage, and the execute stage.
Addressing modes are an aspect of the instruction set architecture in most central processing unit (CPU) designs. The various addressing modes that are defined in a given instruction set architecture define how the machine language instructions in that architecture identify the operand(s) of each instruction. An addressing mode specifies how to calculate the effective memory address of an operand by using information held in registers and/or constants contained within a machine instruction or elsewhere.
The Intel 8087, announced in 1980, was the first floating-point coprocessor for the 8086 line of microprocessors. The purpose of the chip was to speed up floating-point arithmetic operations, such as addition, subtraction, multiplication, division, and square root. It also computes transcendental functions such as exponential, logarithmic or trigonometric calculations. The performance enhancements were from approximately 20% to over 500%, depending on the specific application. The 8087 could perform about 50,000 FLOPS using around 2.4 watts.
In computer engineering, an orthogonal instruction set is an instruction set architecture where all instruction types can use all addressing modes. It is "orthogonal" in the sense that the instruction type and the addressing mode vary independently. An orthogonal instruction set does not impose a limitation that requires a certain instruction to use a specific register so there is little overlapping of instruction functionality.
In computer architecture, 128-bit integers, memory addresses, or other data units are those that are 128 bits wide. Also, 128-bit central processing unit (CPU) and arithmetic logic unit (ALU) architectures are those that are based on registers, address buses, or data buses of that size.
Nord-10 was a medium-sized general-purpose 16-bit minicomputer designed for multilingual time-sharing applications and for real-time multi-program systems, produced by Norsk Data. It was introduced in 1973. The later follow up model, Nord-10/S, introduced in 1975, introduced CPU cache, paging, and other miscellaneous improvements.
The Nord-100 was a 16-bit minicomputer series made by Norsk Data, introduced in 1979. It shipped with the Sintran III operating system, and the architecture was based on, and backward compatible with, the Nord-10 line.
The ND-500 was a 32-bit superminicomputer delivered in 1981 by Norsk Data priced from £75,000 for the base model. It relied on a ND-100 to do housekeeping tasks and run the OS, SINTRAN III. A configuration could feature up to four ND-500 CPUs in a shared-memory configuration.
An instruction set architecture (ISA) is an abstract model of a computer, also referred to as computer architecture. A realization of an ISA is called an implementation. An ISA permits multiple implementations that may vary in performance, physical size, and monetary cost ; because the ISA serves as the interface between software and hardware. Software that has been written for an ISA can run on different implementations of the same ISA. This has enabled binary compatibility between different generations of computers to be easily achieved, and the development of computer families. Both of these developments have helped to lower the cost of computers and to increase their applicability. For these reasons, the ISA is one of the most important abstractions in computing today.
The IBM System/360 architecture is the model independent architecture for the entire S/360 line of mainframe computers, including but not limited to the instruction set architecture. The elements of the architecture are documented in the IBM System/360 Principles of Operation and the IBM System/360 I/O Interface Channel to Control Unit Original Equipment Manufacturers' Information manuals.