Michael Frank Deering: Hardware: 3DRAM
Company: Sun Microsystems, Inc. and Mitsubishi
Year of Commercial Product Release: 1995, 2002
Product Code Name/Production Name
The internal code name for this project by was “FBRAM, for “Frame Buffer RAM”, and this was the name used in the title of the SIGGRAPH paper. The commercial name of the technology was 3DRAM, and 3DRAM-64 for the second major generation
3DRAM and 3DRAM-64 were joint efforts between Sun Microsystems Inc. and Mitsubishi. Sun provided the overall 3D graphics architecture and suggestions for organization of the internal caches; Mitsubishi did the design and layout of both the traditional DRAM cells as well as the graphics logic (with a lot of help from Sun on the first product). While Sun had a time limited exclusive on the use of 3DRAM, after that it was offered to the general market by Mitsubishi and 3DRAM was used in commercial 3D graphics products from companies other than Sun. On the Sun side the first architecture was a joint effort between myself, Mike Lavelle, and Steven Schlapp.
One of the main bottlenecks in 3D graphics hardware performance is the rate at which one can update pixels in the frame buffer. In 3D, updating a pixel involves reading the previously stored Z value for the pixel (and potentially the previously stored RGBA values), comparing it with the newly rendered Z value, and depending on who’s closer conditionally updating the value of the pixel in the frame buffer. Traditional CPU style caches on the rendering chip don’t help much at all, as the data has low temporal locality (even though it does have high spatial locality). So we decided to move the Z compare and read-modity-write cycle to inside the DRAM, improving the data utilization of the pins by a factor of two or more. We also made the on-DRAM caches square, so that there would be a much higher “hit” rate in these caches. Finally, on the render chip side, we would “snoop” the (now) write only output buffer to nearly perfectly predict the cache pre-fetch needed inside the 3DRAM.
In many ways, 3DRAM was one of the first (if not the first) commercially successful computation on a DRAM die products.
The first generation 3DRAM stored 10 megabits, and you would use a separate chip for RBG buffer one, RGB buffer two, and the Z buffer. It supported 8-bit RBG pixel components, and 24-bit Z values. The second generation of 3DRAM, 3DRAM-64, stored 40 megabits, combined all three buffers onto one chip, supported 10-bit RGB pixel components, 26-bit floating point Z values, and cut the required number of video output pins by a factor of three by internally muxing the appropriate RGB buffer pixel to the output (and not outputting the Z buffer).
Both Creator3D and Elite3D used 3DRAM, but Elite3D was the first product to use its full throughput. Elite3D was the first moderate cost graphics board in history where data could be rendered into the frame buffer several times faster than the data flowed out of the frame buffer for normal video output. 3DRAM contributed to the success of both products it was supported in; the combination of small size and low cost it enabled was not matchable by most of the other competitors in this space at that time.
Below is the presentation on 3DRAM made at HotChips VI:
Michael F. Deering, Michael G. Lavelle, and Steven Schlapp “A Cached VRAM for 3D Graphics”, in HotChips VI (1994). (Commercial product name 3DRAM.)
The main publication on 3DRAM is the SIGGRAPH paper:
M. Deering, Steven Schlapp, and Michael G. Lavelle “FBRAM: A New Form of Memory Optimized for 3D Graphics”, in Proc. SIGGRAPH ’94.
As it was always on the edge of advanced graphics products, Sun used to purchase a significant percentage of the leading edge VRAM chips at any point in time. When Sun switched over to 3DRAM, the sales volume was still substantial, though I don’t believe that non-Sun 3DRAM sales were ever that large.