# Harris RTX 2000

The Harris Semiconductor RTX 2000, now manufactured by Intersil, is a 16-bit stack machine microprocessor architecture designed for real-time computing and programmed primarily in Forth. Radiation hardened versions, the RTX 2010 series, have been used in numerous spacecraft.
The original design was created by Chuck Moore, the inventor of the Forth language. In 1983 he formed Novix to design a microprocessor that could directly run the language. The NC4000 was released in June 1985, and soon renamed the NC4016. This ran at 7.5 MHz and up to 10 MIPS. An updated version, the NC5016, ran at 10 MHz and 12 MIPS, and a planned NC6016 appears to not entered production and Novix shut down during this period.
Harris licensed the original 4016 design shortly after it was introduced, modified it, and introduced the resulting RTX line, short for "Real Time eXpress". They added several features, including on-chip cache memory, a multiple/divide unit and program memory, and launched the RTX2000 in 1988, along with the RTX2001 which removed the multiplier unit. An upgrade with input/output systems, timers and a complete floating point unit became the RTX2010. All of these were produced primarily on a silicon on sapphire line for space applications.
A similar 32-bit design, the RTX 4000, was introduced in 1989, but not put into production.

## Characteristics

A stack machine contrasts with traditional designs in that it lacks general purpose processor registers defined in the instruction set architecture. Instead it uses addressing modes based on offsets in the stack, which is normally stored in main memory or partially cached in registers that are not visible to the programmer.
For example, a modern RISC processor generally includes an instruction to the effect of ADD C,A,B, which means "add the value in register A to the value in register B and place the result in register C". In a stack-based machine, this instruction would simply be ADD, which would inherently remove the top two values on the stack, add them, and place the result back on it. One advantage of this approach is that the instructions are generally smaller; in a machine with 32 user-visible registers like many RISC systems, each of the three register references requires five bits, which demand that the instruction be at least three bytes and typically four. In a stack machine, single-byte opcodes can cover many of the instructions.
Accessing parameters through a stack in main memory is slower than dedicated registers, and stack machines often have lower general purpose performance as a result. However, this is offset in certain uses. In a register machine, the values in the registers have to be saved out to memory for things like subroutine calls and interrupt processing. If the machine has thirty-two 32-bit registers, this means 1 kB has to be saved out and another loaded. In a stack machine there are effectively unlimited registers, and the active set can be selected by changing a single value, the stack pointer. This makes these systems extremely fast at context switching and can offer significant performance improvements in systems with many interrupts, like real-time computing.
The RTX 2000 is a two-stack machine, each stack 256 words deep, that supports direct execution of Forth. Subroutine calls only take one processor cycle and returns take zero. It also has a very low and consistent interrupt latency of only four processor cycles, which lends it well to realtime applications. It features multiple instruction busses that allow several instructions to be dispatched at the same time, which helps eliminate pauses while waiting on data from main memory by performing an instruction that has the data already loaded. Finally, because the instructions are directly mapped onto high-level concepts, the instruction code is very dense and programs are much smaller than normal assembler languages used with traditional designs.

## History

In 1983, Chuck Moore implemented a processor for his programming language Forth as a gate array. As Forth can be considered a dual stack virtual machine, he made the processor, Novix N4000 (later renamed NC4016), as a dual-stack machine. This system used only 4,000 gates constructed from 16,000 CMOS transistors, compared to 68,000 gates for the 1979 Motorola 68000. The chip could directly execute 40 Forth primitives and 123 combinations, eliminating the need for a complete virtual machine and speeding performance of the most common instructions.
In 1988, Harris Semiconductor purchased the rights to the Novix line and began an improvement program. They added on-chip stacks to reduce the number accesses to main memory, a number of on-chip timers and counters, a dedicated interrupt controller, and a single-cycle hardware multiplier. The new version was renamed the RTX 2000 and marketed for space applications.

## Example spacecraft that use the RTX2010

* Advanced Composition Explorer (ACE)
* NEAR/Shoemaker
* TIMED
* Rosetta's lander - Philae