The 8514/A Graphics Accelerator

On April 2, 1987, when IBM rolled out the PS/2 line of personal computers, one of the hardware announcements was the VGA display chip, a standard that has lasted for 25 years and counting. While the VGA was an incremental improvement over its predecessor EGA (1984) and remained backwards compatible with the EGA as well as the earlier (1981) CGA and MDA, an entirely new display adapter was also introduced: The IBM 8514/A. The 8514/A was the first fixed-function graphics accelerator for PCs with support of 1024×768 resolution and up to 256 colors.

8514/A and VGA

There were several pieces of the puzzle: The actual 8514/A adapter, a VGA display built into a PS/2 Model 50, 60, or 80, and if one wanted to use the high-resolution 1024×768 mode, the new 8514 color monitor. The 8514/A was a microchannel (MCA) adapter which included a complete standalone display controller (IBM never built ISA-based 8514/A boards, but several clone manufacturers did). It was not compatible with any previous IBM graphics standards; for that purpose, the 8514/A used a pass-through mechanism whereby an on-board VGA provided backwards compatibility.

Unlike later pass-through solutions used by video decoder or 3D accelerator boards (notably the 3Dfx Voodoo line), the 8514/A did not use an analog pass-through. The PS/2 VGA chips supported a special digital connection which provided digital data before passing it through a palette look-up table (LUT). In pass-through mode, the LUT and DAC of the 8514/A were used, bypassing the on-board VGA ones. To this end, the 8514/A could shadow the VGA palette—writes to the VGA DAC were also directed to the 8514/A DAC, which was fully compatible but supported higher pixel clocks. The 8514/A’s DAC could also be controlled separately without affecting the VGA DAC.

Like other pass-through solutions, this set-up also allowed users to attach two monitors and use the VGA and the 8514/A simultaneously, even if that was not the typical usage scenario. This was a notable difference from nearly all follow-on designs which integrated a VGA core with an accelerator on a single chip (or at least a single board).

8514/A Display Modes

The IBM 8514/A only supported two resolutions: 640×480 and 1024×768. The basic 8514/A with 512KB VRAM only supported 16 colors; the 512KB memory expansion brought the total to 1MB VRAM and supported 256 colors as well.

The very limited set of resolutions was purely a function of the 8514/A display controller—the accelerator was much more flexible, and in fact 8514/A clones often supported 800×600 and 1280×1024 resolutions as well. The limitation was a consequence of only two oscillators on the board (and no programmable PLL), providing 25.175MHz and 44.9MHz pixel clocks for the 640×480 and 1024×768 resolutions, respectively.

The 1024×768 pixel clock was the cause of one of the biggest drawbacks of an 8514 system: The 16-inch 8514 monitor only supported a 43Hz interlaced 1024×768 resolution, and so did the 8514/A board. This was purely a cost-saving measure, especially on the part of the monitor. However, it resulted in unpleasant flicker at the high resolution. Again, clone boards often removed this limitation.

Memory Architecture and I/O Interface

The 8514/A internally used memory organized into planes, much like the EGA and VGA. In the basic 512KB configuration, only four planes were available, providing 16-color support (although a non-standard 256-color 640×480 mode was also achievable on those boards). The 512KB memory expansion added four more planes, bringing the total to 8 and hence 256 possible colors per pixel.

The planar organization was natural for the draw engine which always addressed memory the same way but could process either 4 or 8 bits at a time.

The memory organization was however not directly exposed to the programmer. Unlike MDA/CGA/EGA/VGA, the 8514/A was not mapped into the host system’s memory space at all and the framebuffer could not be accessed directly.

The 8514/A only provided an I/O port interface, and a strange one at that. Because the 8514/A required a relatively large number of 16-bit registers (around 30) to be mapped in the I/O space, IBM chose a non-traditional way to conserve the overcrowded ISA register space (the ports below 400h). The 8514/A occupied the 2E8h-2EFh space, but additionally used bits 10-15 of the I/O port address traditionally not decoded by ISA devices. The 8514/A thus for example decoded I/O addresses 02E8h, 06E8h, 12E8h, 16E8h, and so on up to BEE8h.

The I/O-space-only mapping had advantages and disadvantages. The good thing was that the 8514/A did not need to compete for the already severely overcrowded below-1MB address space. The bad thing was that reading or writing to the framebuffer had to be performed through a single 16-bit data register.

The 8514/A Draw Engine

The part which made the 8514/A really interesting was of course the accelerator (or draw engine) itself. The 8514/A was the first widespread fixed-function and therefore relatively cheap and fast accelerator. Other accelerators common at the time often used the Texas Instruments TMS34010/TMS34020 chips—RISC processors running at around 50MHz. The 340×0 chips were extremely flexible, but also significantly more complex to manage in software, more expensive, and generally about as fast as the simpler 8514/A.

The 8514/A introduced a 2D accelerator architecture which remained common for many years to come. The drawing commands included line drawing, rectangle and area fills, and BitBLTs (bit-block transfers) with X/Y coordinates. All drawing operations were subject to a scissor (clipping) rectangle.

The pixel pipeline used a specified foreground and background ‘mix’, which allowed to combine source and destination pixels with logical operators (AND, OR, XOR, NOT), addition/subtraction, maximum/minimum, etc. In many GUI environments, these are called raster operations or ROPs. A color compare register allowed to exclude certain pixels when drawing (and therefore retain the original pixel data). A mask register enabled the user to exclude specified memory planes.

Drawing commands were written by the host to a command queue (FIFO); the host was responsible for ensuring that there was enough free space in the queue which only had 8 slots on the original 8514/A (typically more on the clones). Since the the accelerator engine ran in parallel with the host CPU (a key source of accelerator performance), the 8514/A provided a mechanism to check whether the draw engine was still busy or idle.

The 8514/A line drawing was somewhat complex. Horizontal, vertical, and 45-degree lines were simple to draw, but all other lines required the user to calculate parameters for the Bresenham line drawing algorithm and program those to the accelerator. Several 8514/A clones provided enhanced functionality where the accelerator itself calculated the parameters.

There was also a special short-stroke vector (SSV) line drawing mode which provided an efficient interface for drawing short lines at multiples of 45 degrees. SSVs were often used for drawing text (the 8514/A did not provide any text mode).

The BitBLT functionality supported copying of rectangular blocks of pixels, subject to the applicable mixes etc. Optionally, either the source or the destination could be the PIX_TRANS register, which was a way for the host to write data to or read data from the 8514/A’s framebuffer. The source could be monochrome, providing color-expansion functionality often used with bit-mapped fonts.

In all supported modes, there was some amount of off-screen memory. This was often utilized to store frequently-used bitmaps or bit-mapped fonts. The draw engine could access off-screen memory considerably faster than it could receive data from the host.

Adapter Interface (AI)

IBM never published register-level documentation for the 8514/A (although several clone manufacturers did). The only documented programming interface was the so-called AI, or Adapter Interface. The AI was a software interface (implemented as a DOS TSR), deliberately not specific to the 8514/A.

The AI was reasonably easy to use and had one major benefit—hardware independence. Various TMS340x0 boards supported the AI, as did IBM’s own 8514/A successors (Image Adapter/A, XGA) and 8514/A clones. The AI also had one major drawback: Roughly 50% performance compared to direct register access. Developers had to carefully weigh the advantages and disadvantages of writing to the AI.

The one product which significantly undermined the AI idea was Microsoft Windows, as well as IBM’s own OS/2 Presentation Manager. Especially on OS/2, using the AI was a non-starter, so IBM provided 8514/A register specifications to Microsoft. Microsoft and IBM also shipped sample 8514/A drivers in their various DDKs for Windows and OS/2; these were often used as a basis for developing accelerated drivers for other boards.

8514/A Clones

IBM’s 8514/A boards were not cheap in absolute terms, although they were relatively cheap for what they could do at the time (initially $1,290 for the adapter, $270 for the 512KB memory expansion). The 8514/A market was severely limited by the fact that IBM’s boards only supported MCA systems.

In the late 1980s, several companies reverse-engineered the 8514/A and started producing clone chips, often with ISA support. Notable among those was Western Digital Imaging’s PWGA-1 (also known as the WD9500 chip set), the Chips & Technologies 82C480, and ATI’s Mach 8 and later Mach 32 chips.

The clones were all in one or way or another better than the original: faster, with enhanced drawing functionality, and/or improved mode support. The clones often supported non-interlaced modes, 800×600 and/or 1280×1024 resolutions, and typically featured deeper command queues for increased performance.

ATI Mach 8 and Mach 32

Probably the most widespread and longest-lived 8514/A clones were the ATI Mach 8 and Mach 32 family of products. ATI’s initial offerings (notably 8514/Ultra) were direct 8514/A replacements, accelerator-only boards which required a separate VGA device.

ATI’s 8514/Ultra was unique in that it supported both MCA and ISA systems. In MCA systems, it used the built-in pass-through functionality; in ISA systems, it connected to a supported VGA card through a special cable.

ATI 8514/Ultra

The 8514/Ultra supported non-interlaced 1024×768 modes, and provided several draw engine enhancements including a proprietary Crystal fonts technology for anti-aliased text.

ATI soon (late 1990) started offering single-card solutions which combined a VGA chip with a Mach 8 accelerator. These included the ATI Graphics Vantage (DRAM) and ATI Graphics Ultra (VRAM) cards. The Mach 8 boards behaved much like separate VGA + 8514/A chips with fixed pass-through. The (Super-)VGA chip, typically an ATI 28800, had its own 512KB of memory. A separate Mach 8 chip (ATI 38800) had additional 512KB or 1MB of DRAM or VRAM. The DAC was shared, which naturally reduced the cost.

ATI Graphics Vantage

The ATI Mach 32 was a second-generation 8514/A clone which integrated a VGA core and an 8514/A-compatible accelerator on a single chip (ATI 210688). The Mach 32 supported 16-bit and 24-bit color depths, up to 2MB memory (again VRAM or DRAM), a hardware cursor, and no longer had physically separate VGA/accelerator memory. The latter-day Mach 32 boards (1994) were available for the PCI bus and were thus among the first PCI graphics cards.

The Mach 32 was a modern accelerator which still retained register compatibility with the 8514/A and also supported the AI. The follow-on product, the Mach 64 (1994) was architecturally similar but used a much more modern register interface suitable for 32-bit PCI systems, and was no longer compatible with the 8514/A.

Impact

Even though the 8514/A itself was never a best-seller, it essentially created a market for fixed-function PC graphics accelerators which exploded in the early 1990s. The ATI Mach 8 and Mach 32 chips were popular clones, and several companies (notably S3) designed graphics accelerator chips which were not register compatible but were conceptually very similar to the 8514/A.

References

Graphics Programming for the 8514/A by Jake Richter and Bud Smith, M&T Books, 1990, ISBN 1-55851-086-9
Chips and Technologies 82C480 datasheet Revision 2.1, August 1991

This entry was posted in ATi, Graphics, IBM, PC hardware. Bookmark the permalink.

18 Responses to The 8514/A Graphics Accelerator

  1. Yuhong Bao says:

    One quirk of porting 8514/A to ISA is the COM4 resource conflict resulting from 10-bit decode.

  2. ender says:

    What’s the story behind the 1280×1024 resolution (as opposed to 1280×960)?

  3. Michal Necasek says:

    Good question. The horizontal (1280) resolution had a technical background related to the memory organization of the 8514/A. Data was processed in “nuggets” which were 4 pixels wide. When another bank of memory was added, the nuggets were widened to 5 pixels. At 256 horizontal nuggets, that extended the resolution from 1024 to 1280.

    But the vertical resolution I’m less sure about. I’m fairly certain that 1280×1024 was an earlier resolution common on workstations, so monitors which could handle it were already available. Why the 5:4 aspect ratio instead of 4:3… I don’t know. Obviously there’s no particular reason to use one or the other aspect ratio, but if one has a monitor with certain aspect ratio, either 1280×1024 or 1024×768 won’t have square pixels. I think that’s why I’ve always avoided the 1280×1024 resolution :)

  4. pixelgazer says:

    I also remember controversy around the 2D graphics acceleration cards where certain adapters where optimized for the benchmarks. Methinks that there’s another story in the evolution of the 2D graphics cards. What were the true performers and what manufactures entered the market but didn’t survive?

    As always a great article. It was a pleasure to read. Thanks.

  5. Michal Necasek says:

    Optimizing for benchmarks is inevitable in a world where product reviews and purchasing decisions are based on benchmark results. If the benchmarks reflect real-world workloads, they can be very useful. If not, well… caveat emptor. But maybe you’re referring to cases where hardware manufacturers were cheating and implemented special hacks to detect and fool benchmarks?

    As for graphics card manufacturers, that would be a very long story I suspect :) The only certain thing is that ATI (despite the AMD merger) is the only old-time survivor. Intel is a very special case, giving mediocre product away for free in a market they don’t particularly need. nVIDIA was a late entrant (but very successful) and essentially every other company is gone or irrelevant. Tseng, S3, Matrox, Trident, Hercules, IBM…

  6. Great article!
    I have never read before about 8514/A, but it looks *very* similar to some specific graphic processors developed by Yamaha to be used on japanese/european MSX home computers circa 1984: the video display processor V9938… the same register based video memory access and the same kind of hardware accelerated commands (although there is no difficulties handling line commands). On the other hand, the Yamaha processor had support for text-mode support, but the maximum resolution was only 512 x 424.

  7. Michal Necasek says:

    512×424 sounds very decent if not great for 1984. But I don’t think graphics accelerators were common at the time at all! Memory cost was probably a huge factor at the time; the (up to) 1MB of VRAM on the 8514/A was not exactly cheap.

    I don’t think the 8514/A was a new idea per se… but the high resolution, good performance, and reasonable price (for the time) made it an excellent choice for high-end graphics, especially CAD applications. The fact that it came from IBM no doubt also made a difference and triggered the interest in cloning.

    What I wonder about is how GUI environments (especially Windows/Presentation Manager) influenced the 8514/A hardware design, and if/how the 8514/A design again influenced GUI environments. All 2D graphics accelerators I’ve seen were rather similar to the 8514/A in terms of functionality, even if they were more capable and easier to use.

  8. ender says:

    Matrox is still around, but it doesn’t cater to regular PC audience anymore. S3 was bought by VIA, and is present as integrated chip on their motherboards. The rest are gone.

  9. Michal Necasek says:

    Actually, S3 Graphics now appears to be owned by HTC (says Wikipedia). Clearly the old IP is still worth something in the mobile market.

    Anyway, Matrox and S3 certainly aren’t gone, but I would argue that they are irrelevant (in the PC market)–which is why I wrote “gone or irrelevant” :) It would actually be interesting to know what happened to all those dozens of graphics chip companies of old.

  10. Richard Cranium says:

    According to Shittypedia, Tseng Labs sold themselves off to ATI in 1997, rather than burn cash trying to get the ET6300 chipset into the competition.

  11. Michal Necasek says:

    Technically ATI only bought the graphics assets, not Tseng Labs itself, but yes. Now that I think of it, ATI was the only company that successfully managed to go from EGA/VGA clones to 2D accelerators and then to 3D.

  12. Richard Cranium says:

    Whoops, a distinction I failed to make. :O

    About ATI though, I seem to recall they were making Hercules clones in the early 80s, predating EGA/VGA somewhat? Or am I horribly mistaken?

  13. Michal Necasek says:

    Mid-eighties (company founded in 1985) but yes… they started out with Hercules and CGA clones. I don’t know how many of those were sold under the ATi brand as opposed selling to OEMs directly. The EGA Wonder is the first ATi-branded graphics card I’ve ever seen advertised, but I didn’t look that hard for the older ones. The EGA Wonder came in 1987 so I don’t expect they built huge numbers of the pre-EGA cards.

  14. Richard Cranium says:

    Ack, and I completely messed up my A tags. :P

  15. Michal Necasek says:

    Yeah, who knows what the real timeline was :) At any rate there may not have been any hardware before 1986.

    Re the miniport — to be honest, I’m not totally sure if I made any changes since the last release. Is there anything specific you’re looking for? I’d e-mail you privately but I don’t think I have your real e-mail address…

  16. Michal Necasek says:

    This is the most detailed history of ATI that I’ve seen: http://www.answers.com/topic/ati-technologies-inc Founded Aug ’85, first product Oct ’85, “major success” in Jul ’87.

    I’ve found mentions of ATI products in InfoWorld from March 10, 1986 and PC Magazine of June 24, 1986. One mention of “ATI Graphics Solution” in an InfoWorld ad in Jan ’86. Haven’t found any trace of ATI in earlier issues.

  17. Richard Cranium says:

    Oops, sorry, been off-world for a few days. Ta for the link on ATI’s early years. ’twas good reading. :)

    With your VBox miniport driver, I was just interested in running very high resolutions (at least 2048×1536) for the benefit of IDEs I run in my dev VMs. In your last post on the subject, you suggested that testing was the only real issue holding it back.

    P.S. I’ve attached my real e-mail address to this reply.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>