Famous Graphics Chips: TI TMS34010 and VRAM. The first programmable graphics processor chip
By Dr. Jon Peddie
Share this on:
This is the latest installment of a series of short articles about graphics chips, controllers and processors, that changed the course of the computer graphics (CG) industry — The TI TMS34010 and VRAM introduced in 1986 by Texas Instruments.
In 1984 Texas Instruments introduced TI’s VRAM, the TMS4161. The TMS34010 and VRAMs are related but not in the way one might think — Karl Guttag had started the definition of what became the TMS34010, having previously worked on the TMS9918 “Sprite Chip” and two 16-bit CPUs and the issue of memory bandwidth was a critical problem. The basic VRAM concept of putting a shift register on a DRAM was floating around TI, but the way it worked was impractical to use in a system. So Guttag’s team worked out a deal with TI’s MOS Memory group on how Guttag’s team would help define the architecture of the VRAM to work in a system if the memory division of TI would build it.
In between the VRAM design, and the release of the 34010 Guttag’s team also developed the TMS34061, a simple VRAM controller, that they could get out much faster than the 34010.
Figure 1: Texas Instruments’ TMS3010 Graphics System Processor
In 1986 TI introduced the TMS34010, the first programmable graphics processor integrated circuit. It was a full 32-bit processor which included graphics-oriented instructions, so it could serve as a combined CPU and GPU. The design took place at Texas Instruments facilities in Bedford, UK and Houston, Texas. First silicon was working in Houston in December 1985, and first shipment (a development board) was sent to IBM’s workstation facility in Kingston, New York, in January 1986. Karl Guttag also personally showed a working 34010 to Steve Jobs at NeXT in January 1986.
The Intel 82786 was announced shortly after the TI TMS34010 in May 1986, and became available in the fourth quarter. It was a graphics controller capable of using either DRAM or VRAM, but it wasn’t programmable like the 34010.
Along with the chip, TI introduced their new software interface, the Texas Instruments Graphics Architecture (TIGA). TI claimed the 34010 was faster as a general processor than the popular Intel 80286 in typical graphics applications. The 34010, said Guttag, waits on the host 90% to 95% of the time with the way Microsoft Windows was structured by passing mostly very low-level commands.
TIGA was a graphics interface standard created by TI that defined the software interface to graphics processors, the API. Using this standard, any software written for TIGA should work correctly on a TIGA-compliant graphics interface card.
The TIGA standard was independent of resolution and color depth which provided a certain degree of future proofing. This standard was designed for high-end graphics.
Figure 2: TMS34010 system block diagram
The chip had several dedicated graphics instructions. They were implemented in hardware and consisted of essential graphics functions, such as filling a pixel array, drawing a line, pixel block transfers, and comparing a point to a window.
There was also a graphics-oriented register indirect in x, y addressing mode. In this mode, a register held a pixel’s address in x, y form—the pixel’s Cartesian coordinates on the screen. The mode relieved the software of the time-consuming job of working out the mapping of each pixel’s memory address to its screen location.
The chip was built for graphics from the ground up. It had 30, 32-bit registers divided into an A bank and a B bank. The A bank registers were general-purpose; software could use them for temporary storage during computation. B bank registers were specialized; they held information like the location and dimensions of the current clipping window or the current fore ground and background colors.
The decision to go to thirty 32-bit registers rather than the 16 or fewer found on most machines was driven by the desire to make time critical functions run faster and to ease assembly-level programming. Register-to-register operations could be done in a single cycle when running out of cache and could occur in parallel with the memory controller’s completion of previously started write cycles. This parallelism naturally occurs in routines in which the CPU is computing functions written to a series of memory locations. The example used as a model during the 34010’s definition was an ellipse-drawing routine, in which the address computations and data values are held in the register file and the pixels to be written are sent to the memory controller. A large register file means that all the parameters for most time-critical functions can be kept inside the processor, thus preventing the thrashing of parameters between the register file and memory.
The chip had a core clock frequency of 40 MHz and later 50MHz, which was pretty high for the time, and many OEMs over-clocked the chip to gain a little performance differentiation.
Like all graphics controllers of the time, the chip required an external LUT-DAC to do color management and CRT control. The most popular LUT-DACs at the time were Brooktree’s 478 and TI’s 34075. The exception being Truevision which use the TMS34010 with a true color frame buffer.
Although TI had planned for the 34010 to be a stand-alone system processor capable of running DOS or other OS directly, the designers built in special provisions for working in a coprocessing environment as well, giving OEMs the most flexibility. Twenty-eight I/O registers mapped to high memory locations in the 34010’s address range. Some of these registers were directly accessible by the host processor. Hardware designers were relieved to see this; it made it easier for them to design a microcomputer-to 34010 interface. The programmer’s job was also made easier through these I/O registers; the host microcomputer could read from and write to the coprocessor board’s memory, halt the 34010, and restart it at a known address thus maintaining state.
However, TIGA was not widely adopted. Instead, VESA and Super VGA became the de facto standard for PC graphics devices after the VGA, and several AIB builders added a VGA chip to their board in order to compatible with all apps.
Microsoft didn’t initially support the 34010 in their Windows interface but came around because the chip did an excellent job in display list processing and was easier to manage in Windows 2. Still Windows at the time was passing mostly low-level commands with a lot of overhead.
Windows was originally structured to have the host do all the drawing, and that technique worked OK with EGA and VGA. And IBM’s 8514/A driver did an excellent job at BLT’ing, but wasn’t as good as the 34010 on line draws which was critical to CAD users. Nonetheless, Microsoft criticized the 34010 and said didn’t do as well as the 8514/A on 20 basic graphics functions in the way it was structured. The company later discovered it was the memory management of fonts on the host side. The AIB should be used for drawing and color expansion, while fonts should be cached in 34010 space.
Microsoft came to realize that AIBs needed two to three screens worth of memory to run Windows applications — Presentation Manager (PM) needed a lot more. And at the time, Windows didn’t handle bit-maps very well. Windows 386 improved things by allowing applications to run in or out of Windows — it allowed multiple bit-maps for various applications simultaneously.
As a result, Microsoft became a supporter and announced TI-based AIBs would be able to get new Windows and PM drivers via TIGA — it would be part of the TIGA package. Windows, however, couldn’t benefit from a line drawing engine, and at the time Microsoft advised customers to not use Windows with AutoCAD.
Figure 4: NEC’s MVA TI TMS34010-based AIB with a Paradise VGA (clone) chip on board and a Brooktree LUTDAC (Source VGA Museum)
During those years there were three major market forces, high-end PCs where the TMS34010 found many homes, consumer and commercial PCs where VGA was the dominate standard, and a variety of game consoles and arcade machines. TI did well in the high-end, and in arcade and game machines, and was also used in several special purpose systems in scientific instruments, avionics, and process control systems.
In 1991, Guttag was made a Texas Instruments fellow. He was also given the NCGA Award for Technical Excellence for his pioneering work on VRAM.