User Manual
BCM1250/BCM1125/BCM1125H
10/21/02
B r o a d c o m C o r p o r a t i o n
Document
1250_1125-UM100CB-R
Section 8: PCI Bus and HyperTransport Fabric Page
195
PCI I/O S
PACE
PCI, and for compatibility HyperTransport, has both memory space and I/O space corresponding to the
standard and I/O instructions in the x86 architecture. Most PCI devices are mapped into memory space, as
memory mapped I/O devices (indeed the PCI standard encourages this) but some use I/O space addresses.
The MIPS architecture has no distinction between memory and I/O address ranges, so a range of memory
addresses has been defined to map to PCI I/O space.
There is a 32 MB region allocated for I/O space transactions, covering regions H, I, J and K in the address map
(
). When the part is running in big endian mode these regions use the match byte lane endian policy.
The I/O address consists of only the low 25 bits of the address, for a 32 bit PCI I/O address bits 31:25 are set
to zero. Region H is special and is discussed in the next section. Region I is the space allocated to I/O devices
on the PCI that are configured before devices on the HyperTransport, these are accessed using PCI I/O reads
and writes. Region J is allocated to devices that are behind the HyperTransport bridge and use I/O addresses,
these are accessed by adding the 25 bit I/O address to the base address (
FD_FC00_0000
) of the special area
on the HyperTransport defined for signalling I/O transactions. Region K covers any PCI devices that were
configured after the HyperTransport ones.
Region M (offset from the main I/O space area by setting address bit 29) is directly mapped onto the H-K
regions, but uses the match bit lane policy.
T
HE
S
OUTH
B
RIDGE
, VGA
AND
S
UBTRACTIVE
D
ECODE
In most x86 systems there is a device called the Southbridge that connects to the PCI bus and provides the
interface to a number of slow speed I/O devices (serial ports, parallel ports, keyboard, mouse, more recently
USB) and legacy buses (normally the ISA bus), it also contains the legacy interrupt controller (often known as
the PIC, after the original Peripheral Interrupt Controller chip).
The interface supports the use of a single southbridge device, which can either be on the PCI bus, bridged
from the PCI bus, on the HyperTransport fabric or bridged off the HyperTransport fabric.
There are two problems with addressing I/O devices in a legacy southbridge:
•
The I/O addresses of peripherals in the southbridge are normally at the location they have historically
been. These addresses are not contiguous, so do not fit well into the PCI address allocation model.
•
If the southbridge connects to an ISA bus, there is no easy way to know the memory or I/O addresses of
devices on the ISA bus.
On PCI buses subtractive decode is used to access these addresses. Any address that is not claimed by a
device on the bus is claimed by the southbridge and used by its internal devices or passed to the ISA bus. As
of PCI 2.2 the southbridge may be behind a (or a series of) PCI-PCI bridge(s), the configuration software
notices this and sets up all the bridges on the path to act as subtractive decode bridges.
On HyperTransport there is no way to do subtractive decode. Normally commands whose address is not
actively decoded and claimed will reach the end of the fabric and an NXA error will be raised (revision 1.0 and
later of the HyperTransport standard allows the device at the end of the chain to perform a subtractive decode).
Instead, the standard allows packets to be marked with the COMPAT bit, this overrides the active address
decoding and will always pass the access to the southbridge (for subtractive decode).