Intel PCI User Manual

Page of 406
Software Developer’s Manual
87
PCI Local Bus Interface
Following are a few specific rules:
For descriptor fetches, the burst length is always equal to the multiple of cache line sizes set by 
the transmit and receive descriptor fetch threshold fields. (See 
For descriptor writes, the transfer size ranges from 8 bytes to N cache line's worth of data. 
Cache line sizes are: 16, 32, 64, and 128 bytes. 
For transmit data fetches, the burst length is generally equal to the block of data being fetched, 
in other words, a descriptor's worth of data.
For receive data writes, the burst size is typically equal to the packet length (rounded up to the 
next 8 bytes) or the buffer size, whichever is smaller.
4.3
PCI/PCI-X Command Usage
The Ethernet controller optimizes the use of PCI/PCI-X bus cycles to maximize throughput. The 
following sections describe this behavior.
4.3.1
Memory Write Operations
Memory write command usage has been implemented in the Ethernet controller to improve PCI 
performance. As noted below, cache line size has a significant impact on the usage of memory 
write commands. Specifically, cache line size entries which are unsupported causes hardware to 
default to the Memory Write (MW) command for all master write transactions. Also, all writes 
default to MW if the Memory Write and Invalidate (MWI) enable bit in the PCI configuration 
command register is 0b. MWI is the preferred write command and is used when the circumstances 
allow it.
 depicts a behavioral state-machine representation of the command usage algorithm for 
master write operations.
Upon EACH master write access, the hardware evaluates the address alignment and the amount of 
data to be transferred. The following guidelines are used for command determination:
If the address is cache line aligned and there is at least one cache line of data, then hardware 
uses the MWI command.
If the address is aligned but there is not at least one cache line of data, or the address is not 
aligned, or if the MWI enable bit is set to 0b, then hardware uses the MW command.
During the burst, regardless of which command was originally issued, the hardware evaluates the 
remaining amount of data each time the write burst comes to a cache line boundary, or when the 
transaction is terminated due to a target disconnect or latency timer expiration.