Clarification of the difference between PCI memory addressing and I/O addressing?

Posted by KevinM on Super User See other posts from Super User or by KevinM
Published on 2012-10-21T20:12:53Z Indexed on 2012/10/21 23:06 UTC
Read the original article Hit count: 170

Filed under:
|
|

Could someone please clarify the difference between memory and I/O addresses on the PCI/PCIe bus?

I understand that I/O addresses are 32-bit, limited to the range 0 to 4GB, and do not map onto system memory (RAM), and that memory addresses are either 32-bit or 64-bit.

I get the impression that memory addressing must map onto available RAM, is this true? That if a PCI device wishes to transfer data to a memory address, that address must exist in actual system RAM (and is allocated during PCI configuration) and not virtual memory.

So if a PCI device only needs to transfer a small amount of data at a time, where there is no advantage to putting it into RAM or using DMA, then I/O addressing is fine (e.g. a parallel port implemented on a PCI card).

And why do I keep reading that PCI/PCIe I/O addressing is being deprecated in favour of memory addressing?

Thanks!

© Super User or respective owner

Related posts about memory

Related posts about pci