The present invention relates to computer systems; more particularly, the present invention relates to peripheral component interconnect (PCI) devices.
PCI devices feature an interconnection between various attached devices and a microprocessor in which expansion slots are spaced closely for high speed operation. Currently, multi-function PCI devices are being implemented, which allow a particular device to abstract multiple functions in PCI, PCI extended (PCI-X) or PCI-Express. However, in such devices an application bridge is included for each implemented function. Therefore, transaction and physical layers are replicated for each function, resulting in increased overhead to interface multi-function devices.
The invention is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements, and in which:
A multi-function PCI device having a common bridge is described. In the following detailed description of the present invention numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be apparent to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the present invention.
Reference in the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the invention. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.
For instance, CPU 102 may be implemented using multiple processing cores. In other embodiments, computer system 100 may include multiple CPUs 102
In a further embodiment, a chipset 107 is also coupled to interface 105. Chipset 107 includes a memory control hub (MCH) 110. MCH 110 may include a memory controller 112 that is coupled to a main system memory 115. Main system memory 115 stores data and sequences of instructions that are executed by CPU 102 or any other device included in system 100. In one embodiment, main system memory 115 includes dynamic random access memory (DRAM); however, main system memory 115 may be implemented using other memory types. Additional devices may also be coupled to interface 105, such as multiple CPUs and/or multiple system memories.
MCH 110 is coupled to an input/output control hub (ICH) 140 via a hub interface. ICH 140 provides an interface to input/output (I/O) devices within computer system 100. ICH 140 may support standard I/O operations on I/O busses such as peripheral component interconnect (PCI), accelerated graphics port (AGP), universal serial bus (USB), low pin count (LPC) bus, or any other kind of I/O bus (not shown).
According to one embodiment, a multi-function PCI device 150 is coupled to ICH 140. In a further embodiment, device 150 may be a storage controller. However in other embodiments, other multi-function applications (e.g., network interface controller) may be implemented at device 150.
Traditionally, multi-function PCI devices employ a configuration data structure (Configuration header) per function, which allows computer system 100 to identify and control a device associated with the function. In addition, each function includes transaction queues to transport requests to and from the function. In a complex multi-function device many PCI interfaces may be required.
According to one embodiment, a single application PCI bridge is provided behind which multiple functions in PCI, PCI-X or PCI-Express may be implemented.
According to one embodiment, bridge 300 is coupled to the Configuration headers of each function via separate sideband signal interfaces. Consequently, bridge 300 receives the “settings” for each function (e.g., Base-Address-Registers (or BARS)) via the sideband signals. In a further embodiment, bridge 300 processes each transaction based upon the current settings of the associated function.
Although illustrated as supporting three functions in
According to one embodiment, for transactions to the configuration headers 310 the PCI address is translated to a local bus address. Similarly, there is some address space on the local bus that is allocated to PCI configuration header 310 space. Therefore, the PCI configuration header blocks 310 are local bus targets which decode their respective address spaces.
In a further embodiment, bridge 300 uses a function's BARS (not-shown) to claim PCI transactions on behalf of the function in order to translate to a local bus address and forward to a memory controller on the local bus. In yet a further embodiment, local bus initiators (e.g. DMA or CPU) may initiate outbound (local to PCI) transactions on behalf of any function. As a result, each PCI function includes an abstract collection of initiators and targets on the local bus.
According to one embodiment, device 300 is programmable to enable the DMA controllers, CPUs, and memory controllers to be assembled into a variety of functions configuration of the. Consequently, the multi-function device 150 can take on different characteristics by enabling or disabling various function headers, and/or remapping the inbound translation functions to different targets on the local bus.
Referring to
Local bus transactions originated by the CPU or by the DMA controller may be claimed by bridge 300 and originated on the PCI bus using the appropriate function number. As discussed above, the translations are fully programmable, enabling bridge 300 to implement PCI functions as an abstract collection of features.
Referring back to
For instance, an error associated with a function corresponding to Configuration header register 310(a) is appropriately tagged and transmitted on the error reporting bus. Consequently, Configuration header register 310(a) recognizes the tag and captures the error based upon the function identifier and logs the error.
The above-described multi-function PCI device significantly reduces the overhead to interface multi-function devices to PCI by sharing the transaction and physical layers.
Whereas many alterations and modifications of the present invention will no doubt become apparent to a person of ordinary skill in the art after having read the foregoing description, it is to be understood that any particular embodiment shown and described by way of illustration is in no way intended to be considered limiting. Therefore, references to details of various embodiments are not intended to limit the scope of the claims, which in themselves recite only those features regarded as essential to the invention.