PATH 
ADC Home > Documentation > Hardware > Device Managers and Drivers > PCI Card Services > Designing PCI Cards and Drivers for Power Macintosh Computers


  

Maximizing PCI Bus Performance

The guidelines in this section examine the PCI bus commands, the operation of the PowerPC processor to PCI interface bridge chip, achievable PCI bandwidth on PCI Power Macintosh computers, and finally, Mac OS services available to maximize PCI bandwidth.

A good place to start addressing PCI performance on Power Macintosh CPUs is the PCI standard itself. The PCI Bus Specification features a 32-bit data path -- upgradeable to 64-bits -- with synchronous bus operation up to 33 Mhz, and the ability to transfer a data object on the raising edge of each PCI clock cycle. Assuming that neither the initiator nor the target inserts wait states during each data phase, the maximum theoretical bandwidth over a 32-bit bus is 132 Mbytes/second. This also assumes continuous bursting with a 32-bit data object transferred on each PCI clock cycle. (Apple's implementation incorporates a 32-bit data bus.)

Because the IB chip competes for system memory along with other system devices, continuous PCI bursting is not possible. Therefore, the achievable PCI bandwidth on Power Macintosh computers is less than the PCI theoretical maximum. Also, the bandwidth is dependent on the PCI target's hardware design and the architecture of the driver software.

A PCI burst transfer is defined by one PCI bus transaction with a signal address phase followed by two or more data phases. One may ask, how can the bus master transfer a data object on each PCI clock cycle? To initiate a bus transaction, the PCI master only has to arbitrate for ownership of the bus one time. The master then issues the start address and transaction type during the address phase. It is the responsibility of the target device to latch the start address into an address counter and increment the addressing from data phase to data phase. (A single-beat read or write transaction is defined by a signal address phase followed by only one data phase.)

For data to be transferred between the PowerPC processor and the PCI target, or for the PCI target to transfer data between system memory, one of the commands shown in Table 1-4 is initiated.

Table 1-4 Commands between PowerPC processor and PCI bus

PCI command

Initiator

I/O Read Processor generated
I/O Write Processor generated
Configuration Read Processor generated
Configuration Write Processor generated
Memory Read Processor or PCI Master generated
Memory Read Line Processor or PCI Master generated
Memory Read Multiple Processor or PCI Master generated
Memory Write Processor or PCI Master generated
Memory Write and Invalidate Processor or PCI Master generated

The I/O Read and I/O Write commands are used to transfer data between the PowerPC processor and the target's I/O space.

The Configuration Read and Configuration Write commands are used to transfer data between the PowerPC processor and the PCI target's configuration registers during system initialization.

The Memory Read and Memory Write commands are used to transfer data between the PCI Master and the target's memory space.

The Memory Read Line command is used by the PCI Master to transfer a cache line of data from the PCI target's memory space.

The Memory Read Multiple command is used by the PCI Master to transfer more than one cache line of data from the PCI Target's memory space.

The Memory Write and Invalidate command is used by the PCI Master to transfer one or more complete cache lines of data to the PCI target's memory space.

A cache line is 32-bytes for Apple Power Macintosh computers.

PowerPC Processor and PCI Commands

Bursting from PowerPC to PCI

Bursting from PCI to PowerPC

Mac OS & Services That Maximize PCI Throughput


© 1999 Apple Computer, Inc. – (Last Updated 26 March 99)