AGP, as we already know, stands for Accelerated Graphics Port. And as the name implies, AGP is intended for use with the video subsystem of a computer. Intel defines AGP as a "high performance, component level interconnect targeted at 3D graphical display applications and is based on a set of performance extensions or enhancements to PCI."
So what does all of that mean? It means that, AGP, even though it can be used as a 2D graphics solution, is optimized for use as a 3D accelerator. AGP is much more than a mere "extension" of the PCI bus, many of you know that the PCI bus currently runs at a horrible 33MHz which is one of our most commonly experienced bottlenecks. AGP on the other hand has the capability of running at up to 4 times the PCI bus speed, (in this case 4 x 33 = 133MHz) which allows it to sustain noticeably higher data transfer rates than standard PCI video cards. In turn, real time 3D acceleration can now be made possible if manufacturers implement the AGP specification to the best of their ability.
We've already shown that AGP has a greater potential than PCI because of its higher clock rate, but there is much more to the equation that we are overlooking, including transfer rates and bandwidth. For example, a normally clocked PCI bus (33MHz) can achieve a maximum of 132MB/s, and although that number may seem large it is miniscule in comparison with the demanded transfer rates by some of our beloved 3D games =) AGP on the other hand, running in 2x mode (@ 66MHz) can achieve a peak transfer rate of 528MB/s! AGP can obtain this peak rate because it is constantly transferring data including on both the rising and falling edges of the, in this case, 66MHz clock. AGP accomplishes this as well as higher sustained transfer rates by sideband transfers and pipelining so it can constantly transfer data without having to wait for another part of the system to transfer it. We can expect AGP running in 4x mode to give us transfer rates much greater than that, most likely in excess of 800 MB/s!!!
Now that's all nice and dandy, but there are still a few more advantages of AGP...lets talk about textures first. Ever wonder why you can't run GLQuake on your Monster 3D in any resolutions higher than 640 x 480? Well, simply because the Monster 3D only has 2MB of graphics memory (from now on it will be referred to as local RAM) dedicated to textures (the other 2MB being dedicated to frame/z buffers which will be explained later on) and 2MB of local RAM dedicated to textures isn't enough to provide for the enormous textures found in GLQuake. Well, you might ask, why don't we use that 64MB of RAM sitting right next to my video card? Its not that easy, your system RAM, unlike your local RAM can't be accessed as quickly as would be necessary to insure that you don't experience any slow downs. AGP on the other hand, provides a fast path to the system RAM so you don't have to worry about how much local RAM you have and you don't really have to worry about the speed at which it will be accessed.
One of the major advantages of AGP over PCI is its ability to support Direct Memory Execute of textures, otherwise known as DIME. Whenever you draw pixels in a 3D arena, you have two options, they are either (1) texture-mapped or (2) drawn using shading. When you are drawing pixels using the latter option, you don't have to worry about calling or fetching bitmaps to physically draw the pixel. However, when using texture mapped pixels you quickly become aware of the bottlenecks of the standard PCI graphics subsystem. Because of DIME, AGP accelerators (not all, see The Real Benefits of AGP) can use and manipulate your system RAM directly whenever the need for intense texture-mapping functions are in demand.
You may now be wondering how AGP can sustain and achieve such high transfer rates. Since AGP fully supports pipelining operations it can process data much faster and in a much more efficient manner than PCI can, in addition to that AGP also incorporates a special organization process for all pending and processing requests. For example, you have a request being processed, lets call it request x, and the following requests x + 1 and x + 2 are currently pending in memory. AGP allows you to complete request x while receiving and transmitting data necessary to complete requests x + 1 and x + 2 which allows much more to be accomplished in a shorter amount of time, this is a HUGE advantage over the standard PCI architecture and is exactly why AGP is being implemented mainly as a 3D solution.
Another advantage of AGP, yep there's more, are its 8 sideband address lines. What do these things do? Well they allow data to be transfers to be completed simultaneously meaning the efficiency of your video subsystem is much greater than when using the PCI bus for all of your graphics operations.
Right now you may be wondering how AGP could possibly run at 133MHz when the PCI bus is currently running at 33MHz. This feat is made possible because AGP only allows two devices to access it, the chipset and the graphics chip. Unlike the PCI bus which is a host for multiple devices, such as interface cards, device adapters etc... which may or may not be able to cope with higher bus speeds and therefore the PCI bus cannot be operated at such high speeds, while the AGP bus can.
I mentioned before that AGP allows your graphics card to access your system's main memory, therefore AGP memory is simply dynamically-allocated portions of your system's main memory. Meaning that AGP provides a fast access path to your system memory which is provided by some integrated functions in the chipset which allows the AGP card and the software using AGP to access the same memory addresses. This process allows the graphics hardware to address large texture maps as single data objects. The hardware that provides this support is referred to as the Graphics Address Remapping Table, or GART for short. Below is an illustration of how the data is addressed using the GART:
AGP Address Mapping (c)1997 Intel Corporation
So you go out and spend hundreds on a new AGP enabled motherboard (Socket-7 or Slot-1, they will both support AGP) and then you notice a whopping 3% increase in your gaming performance...why? Well there are certain "rules" you (or in this case the software companies) must follow in order to get the most out of AGP.
DOS Applications will experience the smallest increase in performance when using an AGP card, simply because current DOS Applications cannot take advantage of AGP's Direct Memory Execution of Textures, and unless we get some serious driver support (which is very unlikely since DOS is considered "deadman's programming ground" now) you will only notice a very small increase in performance because of the higher AGP transfer rates.
Windows Applications on the other hand will be the ones to really see the benefit of AGP, although certain demands must be met in order for this to be possible. Windows 95 and Windows NT4 will be modified to fully support and enable AGP hardware/acceleration, however native support will be provided in the next release of both OSes (Windows 98 and Windows NT5 respectively). DirectDraw, a component of DirectX, will also aid applications in taking advantage of the AGP capabilities, however once again you will not see the full benefit of AGP without proper support via software.