In simple CPU designs the microprocessor accesses directly the memory and peripheries. Modern PC have multi core and run much faster that the signals could reach the peripherals. It would also be a bad solution when low cost, low speed peripherals would have to run at the same speed as the CPU or the other way round, if the CPU would have to wait until the slow peripheral would be ready to pass data to the CPU (simple CPU design add wait states in the data access sequence for that).

Therefore a bus architecture feeds the CPU's. The PCI (Peripheral Component Interconnect) is the bus that interfaces to add-on cards (plus stuff directly integrated to the motherboard, that looks as add-on cards).

Different version with coded PCB shape exist: 3.3V, 5V, 32bit, 64bit. There can be different domain that are numbered from 0 to ffff, different buses numbered from 0 to ff, different slot to plug in cards numbered 0 to 1f and finally a card can have multiple functions numbered from 0 to 7. A PCI address can therefore be written as <domain>:<bus>:<slot>.<func>

PCI-E (PCI-express) is the successor of PCI.

Linurs startpage