Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
PCI configuration space
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Technical information <span class="anchor" id="DEVICE-FUNCTIONS"></span><span class="anchor" id="BDF"></span>== {{See also|Memory-mapped I/O and port-mapped I/O}} One of the major improvements the [[PCI Local Bus]] had over other I/O architectures was its configuration mechanism. In addition to the normal memory-mapped and I/O port spaces, each device function on the bus has a ''configuration space'', which is 256 bytes long, addressable by knowing the eight-bit PCI [[computer bus|bus]], five-bit device, and three-bit function numbers for the device (commonly referred to as the ''BDF'' or ''B/D/F'', as abbreviated from ''bus/device/function''). This allows up to 256 buses, each with up to 32 devices, each supporting eight functions. A single PCI expansion card can respond as a device and must implement at least function number zero. The first 64 bytes of configuration space are standardized; the remainder are available for vendor-defined purposes. Some high-end computers support more than one PCI domain (or PCI segment); each PCI segment supports up to 256 buses. A PCI segment may be referred to a ''PCI root bridge''. In order to allow more parts of configuration space to be standardized without conflicting with existing uses, there can be a list of ''capabilities'' defined within the remaining 192 bytes of PCI configuration space. Each capability has one byte that describes which capability it is, and one byte to point to the next capability. The number of additional bytes depends on the capability ID. If capabilities are being used, a bit in the ''Status'' register is set, and a pointer to the first in a linked list of capabilities is provided in the ''Cap. pointer'' register defined in the Standardized Registers. [[PCI-X]] 2.0 and [[PCI Express]] introduced an extended configuration space, up to 4096 bytes. The only standardized part of extended configuration space is the first four bytes at {{mono|0x100}} which are the start of an extended capability list. Extended capabilities are very much like normal capabilities except that they can refer to any byte in the extended configuration space (by using 12 bits instead of eight), have a four-bit version number and a 16-bit capability ID. Extended capability IDs overlap with normal capability IDs, but there is no chance of confusion as they are in separate lists.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)