The 320xx or NS32000 was a series of microprocessors from National Semiconductor ("NS", "Natsemi"). They were likely the first 32-bit general-purpose microprocessors on the market, but due to a number of factors never managed to become a major player. The 320xx series was also used as the basis of the Swordfish series of microcontrollers.
The processors had 8 general purpose 32-bit registers, plus a series of special-purpose registers:
- Frame pointer
- Stack pointer (one each for user and supervisor modes)
- Static base register, for referencing global variables
- Program counter
- A typical processor status register, with a low-order user byte and a high-order system byte.
(Additional system registers not listed.)
The instruction set was very much in the CISC model, with 2-operand instructions, memory-to-memory operations, flexible addressing modes, and variable-length byte-aligned instruction encoding. Addressing modes could involve up to two displacements and two memory indirections per operand.
Unlike some other processors, autoincrement of the base register was not provided; the only exception was a "top of stack" addressing mode that would pop sources and push destinations. Uniquely, the size of the displacement was encoded in its most significant bits: 0, 10 and 11 preceded 7-, 14- and 30-bit signed displacements. (Although the processors were otherwise consistently little-endian, displacements in the instruction stream were stored in big-endian order.)
General purpose operands were specified using a 5-bit field. To this could be added an index byte (specifying the index register and 5-bit base address), and up to 2 variable-length displacements per operand.
Beginnings: the 32016 and 32032
The first chip in the series was originally called 16032, later renamed 32016 to emphasize its 32-bit internals. It became available in the late 1970s, and may have been the first 32-bit chip to reach mass production and sale (at least according to National Semiconductor marketing).
The original 32016 had a 16-bit external databus, a 24-bit external address bus, and a full 32-bit instruction set. It also included a coprocessor interface which allows coprocessors such as FPUs and MMUs to be attached as peers to the main processor.
The instruction set was extremely complex but mostly regular, with a large set of addressing modes. It was somewhat similar in spirit to (but not compatible with) the popular DEC VAX minicomputer instruction set. The 32016 was also very similar to the Motorola 68000, which also used 32-bit internals with a 16-bit data bus and 24-bit address bus.
Full article ▸