《PCI Express System Architecture》的作者之一Ravi Budruk在一篇文章中写道:
Two types of endpoints exist, PCI Express endpoints and legacy
endpoints. Legacy Endpoints may support IO transactions, and may support locked
transaction semantics as a completer but not as a requester. Interrupt-capable legacy
devices may support legacy style interrupt generation using message requests but must
also support MSI generation using memory write transactions. Legacy devices are not
required to support 64-bit memory addressing capability. PCI Express (native) Endpoints
must not support IO or locked transaction semantics and must support MSI style
interrupt generation. They must also support 64-bit memory addressing capability in
prefetchable memory address space, though their non-prefetchable memory address
space is permitted to map the below 4GByte boundary. Both types of endpoints implement
Type 0 PCI configuration headers and respond to configuration transactions as
completers.