42

Reading on the AGP spec, the little bits I've found on sites like https://old.pinouts.ru/Slots/agp_pinout.shtml, say:

The Accelerated Graphics Port (also called Advanced Graphics Port) is a high-speed point-to-point channel for attaching a single device (generally a graphics card) to a computers motherboard, primarily to assist in the acceleration of 3D computer graphics. Many classify AGP as a type of computer bus, but this is something of a misnomer since buses generally allow multiple devices to be connected, while AGP does not. AGP originated from Intel, and it was first built into a chipset for the Pentium II microprocessor. AGP cards generally slightly exceed PCI cards in length and can be recognized by a typical hook at the inner end of the connector, which does not exist on PCI cards. Nowdays AGP is almost replaced by PCI-Express.

This tells me that the connector is, in fact, more generic and just a high-speed peripheral connect to the CPU. This has obvious advantages for graphics processing which needed the higher bandwidth of the time, but I can think of several other devices which would enjoy that connection speed (capture cards, disk controllers, cache devices, etc).

Were there reasons this wouldn't be done, and are there examples of hardware utilizing the AGP connector in this manner?

6
  • 12
    I am a little distressed that AGP is retro computing now! Nov 13, 2020 at 8:24
  • 11
    @trognanders: AGP can legally drink in the USA Nov 13, 2020 at 18:52
  • 7
    OMG, AGP on the RC SE... I am ooold...
    – peterh
    Nov 13, 2020 at 20:58
  • 8
    Put another way, AGP was released closer to the PC’s creation than to this point in time. Nov 13, 2020 at 21:56
  • 3
    Doesn't really count as it's still a graphics card, but ATI's AGP-based 8500DV card was able to offer a FireWire port. techrepublic.com/article/… Nov 14, 2020 at 12:57

3 Answers 3

54

I researched this question online fairly thoroughly a while back. I could not find any reference to an AGP device that wasn't a graphics card. It wasn't exhaustive, and absence of proof is not proof of absence, but I strongly suspect no such cards were made. I also think there are technical and economic reasons that make it unlikely. It would have been a rather strange product, with no clear target market.

The main feature of AGP over PCI is the addition of an DMA channel to main memory. Importantly, this is an exclusive channel, not a proper bus. You can have only one AGP slot. So the only real market for such a card would be for computers that don't need graphics, such as servers.

But the server market already had high-bandwidth buses like PCI-X, and they were actual buses, so you could, for example, have both a high-speed SCSI and a Gigabit Ethernet card in the same machine. I suspect most customers who wanted a very high-end peripheral at the time, like a Gigabit Ethernet card, would not want to stick it in a low-end desktop motherboard with only one high-speed slot.

10
  • 2
    I'm fairly certain I've seen motherboards with two AGP slots. I know AGP was an exclusive channel so I assume it only allowed switching between one of the two cards during POST or had a jumper on the motherboard - or is that a false-memory of mine?
    – Dai
    Nov 12, 2020 at 3:55
  • 27
    UPDATE: Ah, found it - the HP ES80. It had two AGP slots because it was technically two separate computer nodes on the same board.
    – Dai
    Nov 12, 2020 at 3:56
  • 2
    The setup (dedicated DMA to main RAM) would be useful in the lab for data-capture or arbitrary waveform generation, but the transient recorders I've used have all been since PCIe (and GigE) were viable options. It seems like historically AGP wasn't used for capture, but machines built for it used AGP for graphics to free up their fastest general-purpose buses for the experimental hardware
    – Chris H
    Nov 12, 2020 at 11:37
  • 2
    @lvd Sure, PCI can do DMA too. But AGP can do it quickly enough to stream textures directly from system RAM. So, I meant an additional, dedicated DMA channel.
    – RETRAC
    Nov 12, 2020 at 19:31
  • 2
    @RETRAC so it is just about bandwidth (and maybe latency) of AGP, or is it exactly about separate, non-coherent channel to system RAM? "Non-coherent" means for me that it bypasses routing (in PCI, DMA might be targeted to another device and not necessarily system RAM) and bypasses cache coherence (DMA writes must at least invalidate cache lines that contain data the DMA writes to, and DMA reads must suck data from caches in writeback mode).
    – lvd
    Nov 13, 2020 at 10:05
30

While working on upgrading my Super Socket 7 based NAS, trying to get as much performance out of the platform as possible, I asked myself the same question. As an obviously headless NAS won't need a graphics card sitting in the AGP, why leave the interface with the highest throughput unused? And I started researching into the AGP port. When looking for information online about using the AGP port for anything else than a graphics card you won't find much. So I had to look for information elsewhere. And I found some in the AGP Wikipedia article:

An AGP bus is a superset of a 66 MHz conventional PCI bus and, immediately after reset, follows the same protocol.

And further reading of the AGP spec reveals the same thing, almost all the PCI signals are part of the AGP connector. So making an AGP to PCI adapter seemed pretty straight forward. But it really looks like nobody has done it, at least there's no evidence to be found. So I began to tackle it myself. I usually prefer to build prototypes before designing and ordering PCBs so I also chose to try the manual way first in this case. PCI and AGP riser cards were quickly sourced and as soon as I got them the port of the AGP riser was ripped off and wired straight to the PCI riser according to the AGP and PCI specs. Handbuilt AGP to PCI Adapter After finishing the adapter I noticed that I didn’t have a PCI graphics card at hand and I therefore had to test it blindfolded. So I plugged in an HP NC370T PCI-X Gigabit Ethernet card into the AGP port of my testbed, fired it up and tried to SSH into it. And it worked. Just like that. I still can’t really excite myself about it, as it was just too easy. Usually stuff like that never works on the first try. After the handbuilt prototype proved that an adapter of this kind is working I started to design a PCB according the AGP spec for impedance and length matching. Final AGP to PCI Adapter So far any network card I’ve tried worked flawlessly. Compatibility with PCI-X hardware RAID cards seems to be more problematic, although a simple SiI 3512 based SATA adapter works flawlessly. My assumption currently is, that hardware RAID cards rely on the LOCK signal, which is missing from the AGP, for cached writes. So cached writes are either disabled (Adaptec 2420SA), crash the system (3ware 9550), or the RAID set isn't recognized at all (Areca). Adaptec 2820SA connected to AGP (Bus:01) But if the connected card and the underlying system have the capabilities the full 32bit 66 MHz PCI bandwidth of ~250 MB/s can be achieved.

As I've got a couple of the PCBs made, I've setup a simple ordering page for the adapter and other retro hardware related stuff I'm working on: https://recnas.org/

RECNAS AGP to PCI Adapter

5
  • Amazing work. I wonder if it can count as an answer if you created it as part of answering the question? ;-) Jul 4, 2022 at 20:22
  • @JacobKrall No reason why not. The exception is something like Code Golf where it is a contest and that would be cheating (it is spelled out in the rules). But in most other SE sites, including RC, the goal is to solve problems, and creating something new is perfectly fine. Jul 10, 2022 at 18:45
  • Doing some more research I came across this section in the datasheet of the Intel 875P chipset:
    – Peter
    Jul 21, 2022 at 10:40
  • 5.3.6 Support for PCI-66 Devices The MCH’s AGP interface may be used as a PCI-66 MHz interface with the following restrictions: 1. Support for 1.5 V operation only. 2. Support for only one device. The MCH will not provide arbitration or electrical support for more than one PCI-66 device. 3. The PCI-66 device must meet the AGP 2.0 electrical specification. […] There are some more limitations following, but this shows that Intel officially supported the use of the AGP as 66 MHz PCI for their “entry level” server chipset.
    – Peter
    Jul 21, 2022 at 10:57
  • @Peter the i865PE could so something similar (although the datasheet says “An external graphics device is a requirement” — but it’s not clear whether that means that the MCH only supports graphics devices on the AGP interface, or whether the system as a whole needs an external graphics device). I even had an i865PE-based system that would enumerate PCI-66 devices in its top-most PCI slot with the “66mhz” flag set, although I never could determine whether that actually meant the connection to the card was running at 66MHz. (The MCH-to-SB link is limited to 266MBps anyway.) Oct 6, 2022 at 7:50
27

Yes, because it did not provide the necessary connections for wider use

AGP had asymmetric bandwidths. It was very much faster in transferring data from the CPU to the graphics card. For transferring data back from the graphics card to the CPU though, it was no faster than a PCI slot.

For graphics cards, this is exactly what you need. You typically do not need to read much data back from the graphics card. Most other applications need symmetric bandwidths in both directions, and AGP simply was not designed for this.

This was a major obstacle to graphics cards being useable for more general processing, initially with more custom code and later with CUDA. Whilst input data could be transferred more quickly, retrieving output data was no faster than a regular PCI card. Since motherboards with more than one AGP card were very rare, there was no incentive for manufacturers to use AGP.

Lessons learnt from AGP are why PCIe was developed, because the industry realised the missed potential of needing a faster bus system which could be used by everyone.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .