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
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