Texas Instruments TMS9900
|
|
This article has multiple issues. Please help improve it or discuss these issues on the talk page.
|
Introduced in June 1976 and based on the Texas Instruments 990 minicomputer CPU, the TMS9900 was one of the first true 16-bit microprocessors (the first were probably National Semiconductor IMP-16 or AMD-2901 bit slice processors in 16-bit configuration). It was designed as a single chip version of the TI 990 minicomputer series, much like the Intersil 6100 was a single chip PDP-8, and the Fairchild 9440 and Data General mN601 were both one chip versions of Data General's Nova. It had a 15-bit address bus, a 16-bit data bus, and three internal 16-bit registers (PC, WP, and ST). One unique feature, though, was that all general purpose user registers were actually kept in external memory. A single workspace register (WP) pointed to the 16 register set (each register being 16 bits wide) in RAM, so when a subroutine was entered or an interrupt was processed, only the single workspace register had to be changed — unlike some CPUs which required dozens or more register saves before acknowledging a context switch.
This was feasible at the time because RAM was often faster than the CPUs. A few modern designs—such as the INMOS Transputers—use this same design using caches or rotating buffers, for the same reason of improved context switches. Other chips of the time—such as the 65xx series—had a similar philosophy, using index registers, but the TMS9900 went the farthest in this direction.
That was not the only positive feature of the chip. It had flexible interrupt-handling features, and a simple but powerful instruction set. Fifteen of the 16 registers could be indexed[disambiguation needed
] although it should be remembered these registers were actually in memory (RAM). This was in contrast to most other CPUs of its time.
The TMS9900 processor's instruction set was big endian and was "clean": all illegal opcodes executed as a NOP, and did not produce spurious/unexpected execution results.
Serial I/O was available through address lines.
In typical comparisons with the Intel 8086, the TMS9900 had smaller and faster programs. The only disadvantage was the small address space and need for fast RAM.
The TMS9900 had an uncommon, and rarely used, instruction called 'X' (or eXecute). This instruction was used to execute another instruction at an address pointed to by a register. Unlike more common jump or branch instructions, execution then continued with the instruction following the X instruction. Similar instructions were found in the IBM System/360 and DEC PDP-10 mainframe computers, but are relatively rare in minicomputers and microprocessors.
The TMS9900 was used in the TI-99/4 and TI-99/4A home computers. Unfortunately, to reduce the production costs, TI chose to use in these systems just 128 16-bit words of the fast kind of RAM that the TMS9900 could access directly. The rest of the memory was 16kB of 8-bit DRAM that was accessible only through the video display controller, which crippled the performance of the TMS9900.
TI later developed the more powerful and more capable TMS99000, which was used as the CPU in the 990/10A minicomputer as a cost reduction. Unfortunately, by the time the 990/10A made it to market, the end of the minicomputer era was already in sight.