This paper provides information about how Microsoft has implemented support to help reduce the dependence that PCI, PCI-X, and PCI Express devices have on the usage of input/output (I/O) space that is accessed by the I/O Base Address Registers (BARs).
It provides guidelines for device manufacturers, driver developers, firmware engineers, and system manufacturers to disable unused I/O BARs and to reduce or eliminate the amount of I/O space used in a PC.
The number of I/O resources used on a PC has continued to increase over the years. This I/O resource usage on PCI, PCI-X, and PCI Express buses are increasingly becoming a cause of resource contention problems. These problems are expected to become even worse for systems using PCI Express buses, compared to PCI and PCI-X, due to the number of virtual PCI-to-PCI bridges that are used in both client and server systems.
A need exists to transition hardware designs away from reliance on I/O resources. Instead, memory resources, which are much more plentiful, should be used.
This paper assumes that the reader has a good understanding of PCI, PCI-X, and PCI Express buses and knowledge of the I/O space usage scenarios for these buses. It also assumes the reader has kernel mode driver development knowledge.
This information applies for the following operating systems:
Microsoft Windows Server 2003 SP1
Microsoft Windows Vista
Included in this white paper:
| • | Implementing I/O Reduction in Device Drivers |
| • | Turning Off I/O Space Decode on Devices |
| • | Turning Off I/O Windows in PCI-to-PCI Bridges |
| • | References |
| • | Glossary |