Isaac D. Cohen
Isaac D. Cohen

Reputation: 881

PCI Address Spaces

I have a question about the PCI. The PCI has three address spaces; PCI I/O, PCI Memory and PCI Configuration space. Where are they each physically located? In the PCI controller? Or in the devices? Is any of them part of the system RAM?

Upvotes: 3

Views: 955

Answers (2)

Wonkoo Jung
Wonkoo Jung

Reputation: 19

I would like to add some comments about it.

All of PCI devices have a PCI Configuration space as a BAR0. You can find information about PCI devices in the space. It is located on the device.

And about PCI I/O, PCI Memory, you can put the memory space into both of them. It is depends on your S/W scheme. If your pci device want to access to their host memory data, you can put the memory space into your PCI controller. (ex, tx packet buffer in the network driver).

Upvotes: 0

Combuster
Combuster

Reputation: 583

For physical plug-in PCI cards it is always on the device. The device has to announce what it is (configuration space), and keeps it local state independent of the host machine (I/O and memory space)

PCI is however often abused as just the mechanism for configuration, and there are many devices that do not actually talk over a PCI interface but only fake it - PCI express cards always shows up as a PCI device, but the magical 33MHz bus that would have been put between them has magically disappeared.

With pretty much everything integrated in the chipset these days, the majority of PCI devices are such fakes. However, they still uphold everything that PCI dictates it to be. For instance, an embedded graphics on your northbridge will use the system RAM, but for all the ram that the graphics device uses, the computer will tell the operating system that same ram doesn't exist.

As far as the OS will see, the device always comes with it's own memory.

Upvotes: 6

Related Questions