WO2010040144A1 - Multi-processor architecture and method - Google Patents

Multi-processor architecture and method Download PDF

Info

Publication number
WO2010040144A1
WO2010040144A1 PCT/US2009/059594 US2009059594W WO2010040144A1 WO 2010040144 A1 WO2010040144 A1 WO 2010040144A1 US 2009059594 W US2009059594 W US 2009059594W WO 2010040144 A1 WO2010040144 A1 WO 2010040144A1
Authority
WO
WIPO (PCT)
Prior art keywords
bus
peripheral component
peripheral
processors
data
Prior art date
Application number
PCT/US2009/059594
Other languages
French (fr)
Inventor
Shahin Solki
Stephen Morein
Mark S. Grossman
Original Assignee
Advanced Micro Devices, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US12/245,686 external-priority patent/US8892804B2/en
Application filed by Advanced Micro Devices, Inc. filed Critical Advanced Micro Devices, Inc.
Priority to CN200980147694.9A priority Critical patent/CN102227709B/en
Priority to EP09737270.0A priority patent/EP2342626B1/en
Priority to KR1020117010206A priority patent/KR101533761B1/en
Priority to JP2011530294A priority patent/JP2012504835A/en
Publication of WO2010040144A1 publication Critical patent/WO2010040144A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2330/00Aspects of power supply; Aspects of display protection and defect management
    • G09G2330/02Details of power systems and of start or stop of display operation
    • G09G2330/021Power management, e.g. power saving
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/06Use of more than one graphics processor to process data before displaying to one or more screens
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/003Details of a display terminal, the details relating to the control arrangement of the display terminal and to the interfaces thereto
    • G09G5/006Details of the interface to the display terminal

Definitions

  • the invention is in the field of data transfer in computer and other digital systems.
  • Data to be transferred include signals representing data, commands, or any other signals.
  • Speed and efficiency of data transfei is particularly critical in systems that run very data-intensive applications, such as graphics applications.
  • graphics processing capability is provided as a part of the central processing unit (CPU) capability, or provided by a separate special purpose processor such as a graphics processing unit (GPU) that communicates with the CPU and assists in processing graphics data for applications such as video games, etc.
  • graphics processing unit GPU
  • One or more GPUs may be included in a system
  • a bridged host interface for example a PCI express (PCIe®) bus
  • PCIe® PCI express
  • FIG. 1 is a block diagram of a prior art system 100 that includes a root 102.
  • a typical root 102 is a computer chipset, including a central processing unit (CPU), a host bridge 104, and two endpoints EPO 106a and EPl 106b.
  • Endpoints are bus endpoints and can be various peripheral components, for example special purpose processors such as graphics processing units (GPUs).
  • GPUs graphics processing units
  • the root 102 is coupled to the bridge 104 by one or more buses to communicate with peripheral components
  • peripheral component endpoints such as GPUs
  • Some peripheral component endpoints require a relatively large amount of bandwidth on the bus because of the large amount of data involved in their functions, It would be desirable to provide an architecture that reduced the number of components and yet provided efficient data transfer between components.
  • the cost of bridge integrated circuits (ICs) is relatively high.
  • the size of a typical bridge IC is comparable to the size of a graphics processing unit (GPU) which requires additional printed circuit board area and could add to layer counts.
  • Bridge ICs also require additional surrounding components for power, straps, clock and possibly read only memory (ROM).
  • FIG. 1 is a block diagram of a prior art processing system with peripheral components
  • Figure 2 is a block diagram of portions of a multi-processor system with a multiplexed peripheral component bus, according to an embodiment.
  • Figure 3 is a block diagram of portions of a processing system with peripheral components, according to an embodiment.
  • FIG. 4 is a more detailed block diagram of a processing system with peripheral components, according to an embodiment.
  • FIG. 5 is a block diagram of an embodiment in which one bus endpoint includes an internal bridge.
  • Figure 6 is a block diagram of an embodiment that includes more than two bus endpoints, each including an internal bridge.
  • Figure 7 is a block diagram illustrating views of memory space from the perspectives of various components in a system, according to an embodiment DETAILED DESCRIPTION
  • Embodiments of a multi-processor architecture and method are described herein.
  • Embodiments provide alternatives to the use of an external bridge integrated circuit (IC) architecture,
  • IC integrated circuit
  • an embodiment multiplexes a peripheral bus such that multiple processors can use one peripheral interface slot without requiring an external bridge IC
  • Other embodiments include a system with multiple bus endpoints coupled to a bus root via a host bus bridge that is internal to at least one bus endpoint.
  • the bus endpoints are directly coupled to each other.
  • Embodiments are usable with known bus protocols.
  • FIG. 2 is a block diagram of portions of a multi -processor system 700 with a multiplexed peripheral component bus, according to an embodiment
  • a master GPU 702A and a slave GPU 702B there are two GPUs, a master GPU 702A and a slave GPU 702B,
  • Each GPU 702 has 16 peripheral component interconnect express (PCIe®) transmit (TX) lanes and 16 PCIe® receive (RX) lanes.
  • PCIe® peripheral component interconnect express
  • TX transmit
  • RX PCIe® receive
  • Each of GPUs 702 includes a respective data link layer 706 and a respective physical layer (PHY) 704. Eight of the TX/RX lanes of GPU 702 A are connected to half of TX/RX lanes of a Xl 6 PCIe® connector, or slot 708.
  • TX/RX lanes of GPU 702B Eight of the TX/RX lanes of GPU 702B are connected to the remaining TX/RX lanes of the X16 PCIe® connector or slot 708.
  • the remaining TX/RX lanes of each of GPU 702 A and GPU 702B are connected to each other, providing a direct, highspeed connection between the GPUs 702.
  • the PCIe® xl6 slot 708 (which normally goes to one GPU) is split into two parts. Half of the slot is connected to GPU 702A and the other half is connected to GPU 702B. Each GPU 702 basically echoes back the other half of the data to the other GPU 702 That is, data received by either GPU is forwarded to the other , Each GPU 702 sees the all of the data received by the PCIe® bus, and internally each GPU 702 decides whether it is supposed to answer the request or comments Each GPU 702 then appropriately responds, or does nothing Some data or commands, such as "Reset" are applicable to all of the GPUs 702.
  • Either GPU 702A or GPU 702B is accessed based on address.
  • master GPU 702A can be assigned to one half of the address domain and slave GPU 702B can assigned to the other half,
  • the system can operate in a Master/Slave mode or in a Single/Multi GPU modes, and the modes can be identified by straps,
  • a reference clock (REF CLK) path is indicated by 711.
  • An 8-lane RX-2 path is indicated by 709
  • An 8-lane RX-I path is indicated by 713.
  • An 8-lane TX-I path is indicated by 715.
  • Control signals 710 are non-PCIe® signals such as straps.
  • the (PHY) 704 in each GPU 702 echoes the data to the proper lane or channel. Lane connection can be done in the order, which helps to optimize silicon design and/or to support PCIe® slots with less than 16 lanes
  • Two GPUs are shown as an example of a system, but the architecture is scalable to n-GPUs
  • GPUs 702 are one example of a peripheral component that can be coupled as described. Any other peripheral components that normally communicate with a peripheral component bus in a system could be similarly coupled.
  • FIG 3 is a block diagram of portions of a processing system 200 with peripheral components, according to an embodiment,
  • System 200 includes a bus root 202 that is similar to the bus root 102 of Figure 1.
  • the bus root 202 in an embodiment is a chipset including a CPU and system memory.
  • the root 202 is coupled via a bus 209 to an endpoint EPO 206a that includes an internal bridge 205a.
  • the bus 209 in an embodiment is a PCI express (PCIe®) bus, but embodiments are not so limited.
  • EPO 206a is coupled to another endpoint EPl 206b
  • EPl 206b includes an internal bridge 205b
  • EPO 205a and EPl 205B are through their respective bridges via a bus 207.
  • EPl 206b is coupled through its bridge 205b to the root 202 via a bus 21 1.
  • Each of endpoints EPO 206a and EPl 206b includes respective local memories 208a and 208b. From the perspective of the root 202, 209 and 211 make up transmit and receive lanes respectively of a standard bidirectional point to point data link
  • EPO 206a and EPl 206b are identical.
  • bridge 205b is not necessary, but is included for the purpose of having one version of an endpoint, such as one version of a GPU, rather than manufacturing two different versions.
  • EPO may be used standalone by directly connecting it to root 202 via buses 209 and 207; similarly EPl may be used standalone by directly connecting it to root 202 via buses 207 and 21 1
  • bridge 205 eliminates the need for an external bridge such as bridge 104 of Figure 1 when both EPO and EPl are present.
  • system 200 moves data in a loop (in this case in a clockwise direction).
  • the left endpoint EPO can send data directly to the right endpoint EPl .
  • the return path from EPl to EPO is through the root 202.
  • the root has the ability to reflect a packet of data coming in from EPl back out to EPO.
  • the architecture provides the appearance of a peer-to-peer transaction on the same pair of wires as is used for endpoint to root transactions
  • EPO 206a and EPl 206b are also configurable to operate in the traditional configuration That is, EPO 206a and EPl 206b are each configurable to communicate directly with the root 202 via buses 209 and 211, which are each bidirectional in such a configuration.
  • FIG. 4 is a more detailed block diagram of a processing system with peripheral components, according to an embodiment
  • System 300 is similar to system 200, but additional details are shown
  • System 300 includes a bus root 302 coupled to a system memory 303.
  • the bus root 302 is further coupled to an endpoint 305a via a bus 309
  • endpoints 305a and 305b are GPUs, but embodiments are not so limited.
  • GPUO 305a includes multiple clients Clients include logic, such as shader units and decoder units, for performing tasks
  • the clients are coupled to an internal bridge through bus interface (VF) logic, which control all of the read operations and write operations performed by the GPU
  • VF bus interface
  • GPUO 305a is coupled to a GPUl 305b via a bus 307 from the internal bridge of GPUO 305a to the internal bridge of GPUl 305b.
  • GPUl 305b is identical to GPUO 305a and includes multiple clients, an internal bridge and I/F logic. Each GPU typically connects to a dedicated local memory unit often implemented as GDDR DRAM.
  • GPUl 305b is coupled to the bus root 302 via a bus 311.
  • data and other messages such as read requests and completions flow in a clockwise loop from the bus root 302 to GPUO 305a to GPUl 305b.
  • one of the GPUs 305 does not include a bridge
  • data flows counterclockwise rather than clockwise.
  • the protocol that determines data routing is communicated with in such as ways as to make the architecture appears the same as the architecture of Figure 1
  • the bridge in 305b must appear on link 307 to bridge 305a as an upstream port, whereas the corresponding attach point on the bridge in 305a must appear on link 309 to root 302 as a downstream port
  • the embedded bridge must be able to see its outgoing link as a return path for all requests it receives on its incoming link, even though the physical routing of the two links is different. This is achieved by setting the state of a Chain Mode configuration strap for each GPU If the strap is set to zero, the bridge assumes both transmit and receive links are to an upstream port, either a root complex or a bridge device. If the strap is set to one, the bridge assumes a daisy-chain configuration
  • the peer to peer bridging function of the root is a two- step process according to which GPUl 305b writes data to the system memory 303, or buffer. Then as a separate operation GPUO 305a reads the data back via the bus root 302.
  • the bus root 302 responds to requests normally, as if the internal bridge were an external bridge (as in Figure 1)
  • the bridge of GPUO 305a is configured to be active, while the bridge of GPUl 305b is configured to appear as a wire, and simply pass data through This allows the bus root 302 to see buses 309 and 311 as a normal peripheral interconnect bus
  • this bridge sends the data to pass through the bridge of GPUl 305b and return to the bus root 302 as if the data came directly from GPUO 305a
  • FIG. 5 is a block diagram of a system 400 in which one of the multiple bus endpoints includes an internal bridge.
  • System 400 includes a bus root 402, and an EPO 406a that includes a bridge 405a EPO 406a is coupled to the root 402 through the bridge 405a via a bus 409, and also to EPlb406b through the bridge 405a via a bus 407
  • Each of endpoints EPO 406a and EPl 406b includes respective local memories 408a and 408b.
  • Figure 6 is a block diagram of a system 500 including more than two bus endpoints, each including an internal bridge, System 500 includes a bus root 502, and an EPO 506a that includes a bridge 505a and a local memory 508a.
  • System 500 further includes an EPl 506b that includes a bridge 505b and a local memory 508b, and an EPl 506c that includes a bridge 505c and an internal memory 508c
  • EPO 506a is coupled to the root 502 through the bridge 505a via a bus 509, and also to EPIb 506b through the bridge 506b via a bus 507a.
  • EPO 506b is coupled to EPIc 506c through the bridge 506c via a bus 507b,
  • Other embodiments include additional endpoints that are added into the ring configuration.
  • the system includes more than two endpoints 506, but the rightmost endpoint does not include an internal bridge,
  • the flow of data is counterclockwise as opposed clockwise, as shown in the figures.
  • One port is "on” in the bridge of GPUO 305a, and one port is "off in the bridge of GPUl 305b.
  • the bus root 302 may perform write operations by sending requests on bus 309.
  • a standard addressing scheme indicates to the bridge to send the request to the bus I/F. If the request is for GPUl 305b, the bridge routes the request to bus 307 So in an embodiment, the respective internal bridges of GPUO 305a and GPUl 305b are programmed differently.
  • Figure 7 is a block diagram illustrating the division of bus address ranges and the view of memory space from the perspective of various components
  • 602 is a view of memory from the perspective of the bus root
  • 604 is a view of memory from the perspective of the GPUO 305a internal bridge.
  • the bus address range is divided into ranges for GPUO 305a, GPUl 305b, and system 302 memory spaces
  • the GPUO 305a bridge is set up so that incoming requests to the GPUO 305a range are routed to its own local memory
  • Incoming requests from the root or from GPUO 305a itself to GPUl 305b or system 302 ranges are routed to the output port of GPUO 305a.
  • the GPU1305b bridge is set up slightly differently so that incoming requests to the GPUl 305b range are routed to its own local memory. Requests from GPUO 305a or from GPUl 305b itself to root or GPUO 305a ranges are routed to the output port of GPUl 305b.
  • the host sees the bus topology as being like the topology of Figure 1 GPUl 305b can make its own request to the host processor 302 through its own bridge and it will pass through to the host processor 302.
  • the host processor 302 When the host processor 302 is returning a request, it goes through the bridge of GPUO 305a, which has logic for determining where requests and data are to be routed
  • GPUl 305b writes operations from GPUl 305b to GPUO 305a in two passes.
  • GPUl 305b sends data to a memory location in the system memory 303. Then separately, GPUO 305a reads the data after it learns that the data is in the system memory 303
  • Completion messages for read data requests and other split-transaction operations must travel along the wires in the same direction as the requests Therefore in addition to the address-based request routing described above, device- based routing must be set up in a similar manner.
  • the internal bridge of GPUO 305a recognizes that the path for both requests and completion messages is via bus 307.
  • An embodiment includes power management to improve power usage in lightly loaded usage cases For example in a usage case with little graphics processing, the logic of GPUl 305b is powered off and the bridging function in GPUl 305b is reduced to a simple passthrough function from input port to output port Furthermore, the function of GPUO 305a is reduced to not process transfers routed from the input port to the output port In an embodiment, there is a separate power supply for the bridging function in GPUl 305b. Software detects the conditions under which to power down. Embodiments include a separate power regulator and/or separate internal power sources for bridges that are to be powered down separately from the rest of the logic on the device.
  • GPUl 305b does not have an internal bridge, as described with reference to Figure 5.
  • system 300 is practical in a system that includes multiple slots for add-in circuit boards.
  • system 300 is a soldered system, such as on a mobile device
  • Buses 307, 309 and 311 can be PCIe® buses or any other similar peripheral interconnect bus
  • Any circuits described herein could be implemented through the control of manufacturing processes and maskworks which would be then used to manufacture the relevant circuitry.
  • Such manufacturing process control and maskwork generation are known to those of ordinary skill in the art and include the storage of computer instructions on computer readable media including, for example, Verilog, VHDL or instructions in other hardware description languages
  • Embodiments of the invention include a system comprising: a peripheral component connector coupled to a peripheral component bus; and a plurality of peripheral components coupled directly to the peripheral component connector via a plurality of respective transmit/receive (TX/RX) lanes such that the plurality of peripheral components appear to the peripheral component bus as one peripheral device coupled to the peripheral component connector.
  • TX/RX transmit/receive
  • the plurality of peripheral components are further coupled directly to each other via respective transmit/receive (TX/RX) lanes.
  • TX/RX transmit/receive
  • At least one of the plurality of peripheral components is a graphics processing unit (GPU).
  • GPU graphics processing unit
  • the peripheral component connector is a peripheral component interconnect express (PCIe®) slot
  • the peripheral component bus is a PCIe® bus
  • the each peripheral component is configured to receive all of the data transmitted via the peripheral component connector and to decide which data is applicable
  • each peripheral component forwards all of the data received by it to the remaining peripheral components.
  • each of the peripheral components is accessed based on an address.
  • Embodiments of the invention include a multi-processor method, comprising coupling a plurality of piocessors to a peripheral bus via respective groups of transmit/receive (TX/RX) lanes of the bus; coupling the plurality of processors to each other TX/RX lanes of the plurality of processors that are not coupled to the bus, transmitting data to the plurality of processor directly from the bus to the plurality of piocessors, wherein each of the plurality of processors is addressable; and transmitting data directly between processors.
  • TX/RX transmit/receive
  • the plurality of processor comprises a graphics processing unit (GPU)
  • the plurality of processors comprise a plurality of GPUs
  • the peripheral bus comprises a peripheral component interconnect express (PCIe®) bus to which the GPUs are directly coupled.
  • PCIe® peripheral component interconnect express
  • Embodiments of the invention include a computer readable medium storing computer readable instructions adapted to enable manufacture of a circuit comprising a peripheral component connector coupled to a peripheral component bus; and a plurality of peripheral components coupled directly to the peripheral component connector via a plurality of respective transmit/receive (TX/RX) lanes such that the plurality of peripheral components appear to the peripheral component bus as one peripheral device coupled to the peripheral component connector, wherein the plurality of peripheral components are further coupled directly to each other via respective transmit/receive (TX/RX) lanes.
  • TX/RX transmit/receive
  • the instructions comprise hardware description language instructions.
  • Embodiments of the invention include a computer -readable medium having instructions stored theieon, that when executed in a multi-processor system cause a method to be peifoimed, the method comprising: coupling a plurality of processors to a peripheral bus via respective groups of transmit/receive (TX/RX) lanes of the bus; coupling the plurality of processors to each other TX/RX lanes of the plurality of processors that are not coupled to the bus; transmitting data to the plurality of processor directly from the bus to the plurality of processors, wherein each of the plurality of processors is addressable; and transmitting data directly between processors
  • TX/RX transmit/receive
  • the plurality of processor comprises a graphics processing unit (GPU).
  • GPU graphics processing unit
  • the plurality of processors comprise a plurality of GPUs
  • the peripheral bus comprises a peripheral component interconnect express (PCIe®) bus to which the GPUs are directly coupled
  • the method further comprising coupling the GPUs communicating directly with each other via respective TX/RX lanes.
  • the method further comprising a GPU receiving data from the bus and transmitting the data to the other GPUs
  • Embodiments of the invention include a system comprising- a bus root comprising a central processing unit configurable to communicate with peripheral components via a bus; and a first peripheral component coupled directly to the bus root and further coupled directly to a second peripheral component, the first peripheral component comprising an internal bridge configurable to receive data and to transmit data, wherein receiving and transmitting comprises direct communication between the first peripheral component and the second peripheral component
  • first peripheral component and the second peripheral component are each further configurable to communicate directly with the bus root to transmit and receive data.
  • receiving and transmitting further comprise transmitting requests and data from the second peripheral component to the first peripheral component via the bus root
  • receiving and transmitting further comprise transmitting requests or data from the first peripheral component to the second peripheral component via the internal biidge of the fust peripheral component to the second peripheral component
  • the bus root is configurable to perform write operations, wherein a write operation to the second peripheral component comprises the bus root transmitting a write request to the internal bridge of the first peripheral component t, and the internal bridge of the first peripheral component t transmitting the write request directly to the second peripheral component
  • the write request is received by an internal bus interface of the second peripheral component.
  • the bus root is configurable to perform write operations, wherein a write operation to the first peripheral component comprises the bus root transmitting a write request to the bridge, and the bridge transmitting the write request to an internal bus interface of the first peripheral component.
  • the bus root is configurable to perform read operations, wherein a read operation to the first peripheral component comprises the bus root transmitting a read request to the bridge, and the bridge transmitting the read request to an internal bus interface of the first peripheral component.
  • the bus root is configurable to perform read operations, wherein a read operation to the second peripheral component comprises the bus root transmitting a read request to the bridge, and the bridge transmitting the read request directly to the second peripheral component.
  • the bridge comprises logic configurable to determine routing for received write requests, received read requests, and received data
  • the second peripheral component comprises an internal bridge configurable to receive data and to transmit data, and further configurable to be powered done when the internal bridge is not used to receive data and to transmit data.
  • the second peripheral component further comprises a dedicated power source for the use of the internal bridge
  • first peripheral component and the second peripheral component each comprise a graphics processing unit (GPU)
  • each of the first peripheral component and the second peripheral component further comprise a respective plurality of clients coupled to respective bus interfaces, wherein the clients comprises video processing logic comprising shader units and encoder/decoder units
  • Embodiments of the invention include a method of communicating in a multiprocessor system, the method comprising- a bus root transmitting requests directly to a first peripheral component, wherein the requests comprise read requests and write requests, the first peripheral component receiving the requests via a first bus in an internal bridge of the first peripheral component; and the internal bridge determining appropriate routing for the request, wherein appropriate routing comprises, routing requests that are directed to a second peripheral component directly to a bus interface of the second peripheral component from the bridge via a second bus; and routing requests that are directed to a first peripheral component to a bus interface of the first peripheral component
  • Embodiments of the invention include a computer-readable medium having stored thereon instruction that when executed in a multi-processor system, cause a method of communicating to be performed, the method comprising: a bus root transmitting requests directly to a first peripheral component, wherein the requests comprise read requests and write requests, the first peripheral component receiving the requests via a first bus in an internal bridge of the first peripheral component; and the internal bridge determining appropriate routing for the request, wherein appropriate routing comprises, routing requests that are directed to a second peripheial component diiectly to a bus interface of the second peripheial component from the bridge via a second bus; and routing requests that are directed to a first peripheral component to a bus interface of the first peripheral component
  • the method further comprises the second component responding to a read request by transmitting data directly to the bus root via a third bus.
  • the method further comprises the second peripheral component receiving requests in an internal bridge of the second peripheral component.
  • the method further comprises: the first peripheral component transmitting a read request to the second peripheral component via the second bus; the second peripheral component transmitting data in response to the read request to the bus root via the third bus; and the bus root transmitting the data to the bridge via the first bus
  • the instructions comprise hardware description language instructions that are usable to create an application specific integrated circuit (ASIC) to perform the method
  • aspects of the embodiments described above may be implemented as functionality programmed into any of a variety of circuitry, including but not limited to programmable logic devices (PLDs), such as field programmable gate arrays (FPGAs), programmable array logic (PAL) devices, electrically programmable logic and memory devices, and standard cell-based devices, as well as application specific integrated circuits (ASICs) and fully custom integrated circuits,
  • PLDs programmable logic devices
  • FPGAs field programmable gate arrays
  • PAL programmable array logic
  • ASICs application specific integrated circuits
  • microcontrollers with memory such as electronically erasable programmable read only memory (EEPROM), Flash memory, etc
  • embedded microprocessors firmware, software, etc
  • aspects of the embodiments may be embodied in microprocessors having software-based circuit emulation, discrete logic (sequential and combinatorial), custom devices, fuzzy (neural) logic, quantum devices, and hybrids of any of the above device types.
  • MOSFET metal-oxide semiconductor field-effect transistor
  • CMOS complementary metal-oxide semiconductor
  • ECL emitter-coupled logic
  • polymer technologies e g, silicon-conjugated polymer and metal-conjugated polymer-metal structures
  • mixed analog and digital etc.
  • processor includes a processor core or a portion of a processor
  • processor core or a portion of a processor
  • GPUs and one or more CPUs are usually referred to separately herein, in embodiments both a GPU and a CPU are included in a single integrated circuit package or on a single monolithic die Therefore a single device performs the claimed method in such embodiments,
  • some or all of the hardware and software capability described herein may exist in a printer, a camera, television, a digital versatile disc (DVD) player, a DVR or PVR, a handheld device, a mobile telephone or some other device.
  • DVD digital versatile disc
  • PVR personal computer
  • Such computer readable media may store instructions that are to be executed by a computing device (e g , personal computer, personal digital assistant, PVR, mobile device or the like) or may be instructions (such as, for example, Verilog or a hardware description language) that when executed are designed to create a device (GPU, ASIC, or the like) or software application that when operated performs aspects described above
  • a computing device e g , personal computer, personal digital assistant, PVR, mobile device or the like
  • instructions such as, for example, Verilog or a hardware description language
  • the claimed invention may be embodied in computer code (e.g., HDL, Verilog, etc.) that is created, stored, synthesized, and used to generate GDSII data (or its equivalent)
  • An ASIC may then be manufactured based on this data

Abstract

Embodiments of a multi-processor architecture and method are described herein. Embodiments provide alternatives to the use of an external bridge integrated circuit (IC) architecture. For example, an embodiment multiplexes a peripheral bus such that multiple processors can use one peripheral interface slot without requiring an external bridge IC Embodiments are usable with known bus protocols.

Description

MULTI-PROCESSOR ARCHITECTURE AND METHOD
RELATED APPLICATIONS
The present application claims the benefit of the U. S Application No 12/245,686, filed on October 3, 2008. This application also claims the benefit of U.S. Patent Application No. 12/340,510, filed December 19, 2008, which is a continuation- in-part of U.S. Application No 12/245,686 Both of these applications are incorporated by reference herein in their entirety.
TECHNICAL FIELD
The invention is in the field of data transfer in computer and other digital systems.
BACKGROUND
As computer and other digital systems become more complex and more capable, methods and hardware to enhance the transfer of data between system components or elements continually evolve Data to be transferred include signals representing data, commands, or any other signals. Speed and efficiency of data transfei is particularly critical in systems that run very data-intensive applications, such as graphics applications. In typical systems, graphics processing capability is provided as a part of the central processing unit (CPU) capability, or provided by a separate special purpose processor such as a graphics processing unit (GPU) that communicates with the CPU and assists in processing graphics data for applications such as video games, etc. One or more GPUs may be included in a system In conventional multi-GPU systems, a bridged host interface (for example a PCI express (PCIe®) bus) interface must share bandwidth between peer to peer traffic and host traffic. Traffic consists primarily of memory data transfers but may often include commands Figure 1 is a block diagram of a prior art system 100 that includes a root 102. A typical root 102 is a computer chipset, including a central processing unit (CPU), a host bridge 104, and two endpoints EPO 106a and EPl 106b. Endpoints are bus endpoints and can be various peripheral components, for example special purpose processors such as graphics processing units (GPUs). The root 102 is coupled to the bridge 104 by one or more buses to communicate with peripheral components, Some peripheral component endpoints (such as GPUs) require a relatively large amount of bandwidth on the bus because of the large amount of data involved in their functions, It would be desirable to provide an architecture that reduced the number of components and yet provided efficient data transfer between components. For example, the cost of bridge integrated circuits (ICs) is relatively high. In addition, the size of a typical bridge IC is comparable to the size of a graphics processing unit (GPU) which requires additional printed circuit board area and could add to layer counts. Bridge ICs also require additional surrounding components for power, straps, clock and possibly read only memory (ROM).
BRIEF DESCRIPTION OF THE DRAWINGS
Figure 1 is a block diagram of a prior art processing system with peripheral components
Figure 2 is a block diagram of portions of a multi-processor system with a multiplexed peripheral component bus, according to an embodiment.
Figure 3 is a block diagram of portions of a processing system with peripheral components, according to an embodiment.
Figure 4 is a more detailed block diagram of a processing system with peripheral components, according to an embodiment.
Figure 5 is a block diagram of an embodiment in which one bus endpoint includes an internal bridge.
Figure 6 is a block diagram of an embodiment that includes more than two bus endpoints, each including an internal bridge.
Figure 7 is a block diagram illustrating views of memory space from the perspectives of various components in a system, according to an embodiment DETAILED DESCRIPTION
Embodiments of a multi-processor architecture and method are described herein. Embodiments provide alternatives to the use of an external bridge integrated circuit (IC) architecture, For example, an embodiment multiplexes a peripheral bus such that multiple processors can use one peripheral interface slot without requiring an external bridge IC, Other embodiments include a system with multiple bus endpoints coupled to a bus root via a host bus bridge that is internal to at least one bus endpoint. In addition, the bus endpoints are directly coupled to each other. Embodiments are usable with known bus protocols.
Figure 2 is a block diagram of portions of a multi -processor system 700 with a multiplexed peripheral component bus, according to an embodiment In this example system, there are two GPUs, a master GPU 702A and a slave GPU 702B, Each GPU 702 has 16 peripheral component interconnect express (PCIe®) transmit (TX) lanes and 16 PCIe® receive (RX) lanes. Each of GPUs 702 includes a respective data link layer 706 and a respective physical layer (PHY) 704. Eight of the TX/RX lanes of GPU 702 A are connected to half of TX/RX lanes of a Xl 6 PCIe® connector, or slot 708. Eight of the TX/RX lanes of GPU 702B are connected to the remaining TX/RX lanes of the X16 PCIe® connector or slot 708. The remaining TX/RX lanes of each of GPU 702 A and GPU 702B are connected to each other, providing a direct, highspeed connection between the GPUs 702.
The PCIe® xl6 slot 708 (which normally goes to one GPU) is split into two parts. Half of the slot is connected to GPU 702A and the other half is connected to GPU 702B. Each GPU 702 basically echoes back the other half of the data to the other GPU 702 That is, data received by either GPU is forwarded to the other , Each GPU 702 sees the all of the data received by the PCIe® bus, and internally each GPU 702 decides whether it is supposed to answer the request or comments Each GPU 702 then appropriately responds, or does nothing Some data or commands, such as "Reset" are applicable to all of the GPUs 702.
From the system level point of view, or from the view of the peripheral bus, there is only one PCIe® load (device) on the PCIe® bus, Either GPU 702A or GPU 702B is accessed based on address. For example, for Address Domain Access, master GPU 702A can be assigned to one half of the address domain and slave GPU 702B can assigned to the other half, The system can operate in a Master/Slave mode or in a Single/Multi GPU modes, and the modes can be identified by straps,
Various data paths are identified by reference numbers. A reference clock (REF CLK) path is indicated by 711. An 8-lane RX-2 path is indicated by 709 An 8- lane RX-I path is indicated by 713. An 8-lane TX-I path is indicated by 715. Control signals 710 are non-PCIe® signals such as straps. The (PHY) 704 in each GPU 702 echoes the data to the proper lane or channel. Lane connection can be done in the order, which helps to optimize silicon design and/or to support PCIe® slots with less than 16 lanes Two GPUs are shown as an example of a system, but the architecture is scalable to n-GPUs In addition, GPUs 702 are one example of a peripheral component that can be coupled as described. Any other peripheral components that normally communicate with a peripheral component bus in a system could be similarly coupled.
Figure 3 is a block diagram of portions of a processing system 200 with peripheral components, according to an embodiment, System 200 includes a bus root 202 that is similar to the bus root 102 of Figure 1. The bus root 202 in an embodiment is a chipset including a CPU and system memory. The root 202 is coupled via a bus 209 to an endpoint EPO 206a that includes an internal bridge 205a. The bus 209 in an embodiment is a PCI express (PCIe®) bus, but embodiments are not so limited. EPO 206a is coupled to another endpoint EPl 206b EPl 206b includes an internal bridge 205b EPO 205a and EPl 205B are through their respective bridges via a bus 207. EPl 206b is coupled through its bridge 205b to the root 202 via a bus 21 1. Each of endpoints EPO 206a and EPl 206b includes respective local memories 208a and 208b. From the perspective of the root 202, 209 and 211 make up transmit and receive lanes respectively of a standard bidirectional point to point data link
In an embodiment, EPO 206a and EPl 206b are identical. As further explained below, in various embodiments, bridge 205b is not necessary, but is included for the purpose of having one version of an endpoint, such as one version of a GPU, rather than manufacturing two different versions. Note that EPO may be used standalone by directly connecting it to root 202 via buses 209 and 207; similarly EPl may be used standalone by directly connecting it to root 202 via buses 207 and 21 1
The inclusion of a bridge 205 eliminates the need for an external bridge such as bridge 104 of Figure 1 when both EPO and EPl are present. In contrast to the "Y" or '"T" formation of Figure 1, system 200 moves data in a loop (in this case in a clockwise direction). The left endpoint EPO can send data directly to the right endpoint EPl . The return path from EPl to EPO is through the root 202. As such, the root has the ability to reflect a packet of data coming in from EPl back out to EPO. In other words, the architecture provides the appearance of a peer-to-peer transaction on the same pair of wires as is used for endpoint to root transactions
EPO 206a and EPl 206b are also configurable to operate in the traditional configuration That is, EPO 206a and EPl 206b are each configurable to communicate directly with the root 202 via buses 209 and 211, which are each bidirectional in such a configuration.
Figure 4 is a more detailed block diagram of a processing system with peripheral components, according to an embodiment System 300 is similar to system 200, but additional details are shown System 300 includes a bus root 302 coupled to a system memory 303. The bus root 302 is further coupled to an endpoint 305a via a bus 309 For purposes of illustrating a particular embodiment, endpoints 305a and 305b are GPUs, but embodiments are not so limited. GPUO 305a includes multiple clients Clients include logic, such as shader units and decoder units, for performing tasks The clients are coupled to an internal bridge through bus interface (VF) logic, which control all of the read operations and write operations performed by the GPU
GPUO 305a is coupled to a GPUl 305b via a bus 307 from the internal bridge of GPUO 305a to the internal bridge of GPUl 305b. In an embodiment, GPUl 305b is identical to GPUO 305a and includes multiple clients, an internal bridge and I/F logic. Each GPU typically connects to a dedicated local memory unit often implemented as GDDR DRAM. GPUl 305b is coupled to the bus root 302 via a bus 311. In one embodiment, as the arrows indicate, data and other messages such as read requests and completions flow in a clockwise loop from the bus root 302 to GPUO 305a to GPUl 305b. In other embodiments, one of the GPUs 305 does not include a bridge In yet other embodiments, data flows counterclockwise rather than clockwise.
In one embodiment, the protocol that determines data routing is communicated with in such as ways as to make the architecture appears the same as the architecture of Figure 1 In particular, the bridge in 305b must appear on link 307 to bridge 305a as an upstream port, whereas the corresponding attach point on the bridge in 305a must appear on link 309 to root 302 as a downstream port Furthermore, the embedded bridge must be able to see its outgoing link as a return path for all requests it receives on its incoming link, even though the physical routing of the two links is different. This is achieved by setting the state of a Chain Mode configuration strap for each GPU If the strap is set to zero, the bridge assumes both transmit and receive links are to an upstream port, either a root complex or a bridge device. If the strap is set to one, the bridge assumes a daisy-chain configuration
In another embodiment, the peer to peer bridging function of the root is a two- step process according to which GPUl 305b writes data to the system memory 303, or buffer. Then as a separate operation GPUO 305a reads the data back via the bus root 302.
The bus root 302 responds to requests normally, as if the internal bridge were an external bridge (as in Figure 1) In an embodiment, the bridge of GPUO 305a is configured to be active, while the bridge of GPUl 305b is configured to appear as a wire, and simply pass data through This allows the bus root 302 to see buses 309 and 311 as a normal peripheral interconnect bus When the bus root reads from the bridge of GPUO 305a, this bridge sends the data to pass through the bridge of GPUl 305b and return to the bus root 302 as if the data came directly from GPUO 305a
Figure 5 is a block diagram of a system 400 in which one of the multiple bus endpoints includes an internal bridge. System 400 includes a bus root 402, and an EPO 406a that includes a bridge 405a EPO 406a is coupled to the root 402 through the bridge 405a via a bus 409, and also to EPlb406b through the bridge 405a via a bus 407 Each of endpoints EPO 406a and EPl 406b includes respective local memories 408a and 408b. Figure 6 is a block diagram of a system 500 including more than two bus endpoints, each including an internal bridge, System 500 includes a bus root 502, and an EPO 506a that includes a bridge 505a and a local memory 508a. System 500 further includes an EPl 506b that includes a bridge 505b and a local memory 508b, and an EPl 506c that includes a bridge 505c and an internal memory 508c
EPO 506a is coupled to the root 502 through the bridge 505a via a bus 509, and also to EPIb 506b through the bridge 506b via a bus 507a. EPO 506b is coupled to EPIc 506c through the bridge 506c via a bus 507b, Other embodiments include additional endpoints that are added into the ring configuration. In other embodiments, the system includes more than two endpoints 506, but the rightmost endpoint does not include an internal bridge, In yet other embodiments the flow of data is counterclockwise as opposed clockwise, as shown in the figures.
Referring again to Figure 4, there are two logical ports on the internal bridge according to an embodiment, One port is "on" in the bridge of GPUO 305a, and one port is "off in the bridge of GPUl 305b. The bus root 302 may perform write operations by sending requests on bus 309. A standard addressing scheme indicates to the bridge to send the request to the bus I/F. If the request is for GPUl 305b, the bridge routes the request to bus 307 So in an embodiment, the respective internal bridges of GPUO 305a and GPUl 305b are programmed differently.
Figure 7 is a block diagram illustrating the division of bus address ranges and the view of memory space from the perspective of various components, With reference also to Figure 4, 602 is a view of memory from the perspective of the bus root, or Host processor 302. 604 is a view of memory from the perspective of the GPUO 305a internal bridge. 606 is a view of memory from the perspective of the GPUl 305b internal bridge The bus address range is divided into ranges for GPUO 305a, GPUl 305b, and system 302 memory spaces The GPUO 305a bridge is set up so that incoming requests to the GPUO 305a range are routed to its own local memory Incoming requests from the root or from GPUO 305a itself to GPUl 305b or system 302 ranges are routed to the output port of GPUO 305a. The GPU1305b bridge is set up slightly differently so that incoming requests to the GPUl 305b range are routed to its own local memory. Requests from GPUO 305a or from GPUl 305b itself to root or GPUO 305a ranges are routed to the output port of GPUl 305b.
The host sees the bus topology as being like the topology of Figure 1 GPUl 305b can make its own request to the host processor 302 through its own bridge and it will pass through to the host processor 302. When the host processor 302 is returning a request, it goes through the bridge of GPUO 305a, which has logic for determining where requests and data are to be routed
Write operations from GPUl 305b to GPUO 305a can be performed in two passes. GPUl 305b sends data to a memory location in the system memory 303. Then separately, GPUO 305a reads the data after it learns that the data is in the system memory 303
Completion messages for read data requests and other split-transaction operations must travel along the wires in the same direction as the requests Therefore in addition to the address-based request routing described above, device- based routing must be set up in a similar manner. For example, the internal bridge of GPUO 305a recognizes that the path for both requests and completion messages is via bus 307.
An embodiment includes power management to improve power usage in lightly loaded usage cases For example in a usage case with little graphics processing, the logic of GPUl 305b is powered off and the bridging function in GPUl 305b is reduced to a simple passthrough function from input port to output port Furthermore, the function of GPUO 305a is reduced to not process transfers routed from the input port to the output port In an embodiment, there is a separate power supply for the bridging function in GPUl 305b. Software detects the conditions under which to power down. Embodiments include a separate power regulator and/or separate internal power sources for bridges that are to be powered down separately from the rest of the logic on the device.
Even in embodiments that do not include the power management described above, system board area is conserved because an external bridge (as in Figure 1) is not required. The board area and power required for the external bridge and its pins are conserved. On the other hand, it is not required that each of the GPUs have its own internal bridge In another embodiment, GPUl 305b does not have an internal bridge, as described with reference to Figure 5.
The architecture of system 300 is practical in a system that includes multiple slots for add-in circuit boards. Alternatively, system 300 is a soldered system, such as on a mobile device
Buses 307, 309 and 311 can be PCIe® buses or any other similar peripheral interconnect bus
Any circuits described herein could be implemented through the control of manufacturing processes and maskworks which would be then used to manufacture the relevant circuitry. Such manufacturing process control and maskwork generation are known to those of ordinary skill in the art and include the storage of computer instructions on computer readable media including, for example, Verilog, VHDL or instructions in other hardware description languages
Embodiments of the invention include a system comprising: a peripheral component connector coupled to a peripheral component bus; and a plurality of peripheral components coupled directly to the peripheral component connector via a plurality of respective transmit/receive (TX/RX) lanes such that the plurality of peripheral components appear to the peripheral component bus as one peripheral device coupled to the peripheral component connector.
In an embodiment, the plurality of peripheral components are further coupled directly to each other via respective transmit/receive (TX/RX) lanes.
In an embodiment, at least one of the plurality of peripheral components is a graphics processing unit (GPU).
In an embodiment, the peripheral component connector is a peripheral component interconnect express (PCIe®) slot, and wherein the peripheral component bus is a PCIe® bus
In an embodiment, the each peripheral component is configured to receive all of the data transmitted via the peripheral component connector and to decide which data is applicable
In an embodiment, each peripheral component forwards all of the data received by it to the remaining peripheral components. In an embodiment, each of the peripheral components is accessed based on an address.
Embodiments of the invention include a multi-processor method, comprising coupling a plurality of piocessors to a peripheral bus via respective groups of transmit/receive (TX/RX) lanes of the bus; coupling the plurality of processors to each other TX/RX lanes of the plurality of processors that are not coupled to the bus, transmitting data to the plurality of processor directly from the bus to the plurality of piocessors, wherein each of the plurality of processors is addressable; and transmitting data directly between processors.
In an embodiment, the plurality of processor comprises a graphics processing unit (GPU)
In an embodiment, the plurality of processors comprise a plurality of GPUs, and wherein the peripheral bus comprises a peripheral component interconnect express (PCIe®) bus to which the GPUs are directly coupled.
In an embodiment, further comprising coupling the GPUs communicating directly with each other via respective TX/RX lanes
In an embodiment, further comprising a GPU receiving data from the bus and transmitting the data to the other GPUs
Embodiments of the invention include a computer readable medium storing computer readable instructions adapted to enable manufacture of a circuit comprising a peripheral component connector coupled to a peripheral component bus; and a plurality of peripheral components coupled directly to the peripheral component connector via a plurality of respective transmit/receive (TX/RX) lanes such that the plurality of peripheral components appear to the peripheral component bus as one peripheral device coupled to the peripheral component connector, wherein the plurality of peripheral components are further coupled directly to each other via respective transmit/receive (TX/RX) lanes.
In an embodiment, the instructions comprise hardware description language instructions.
Embodiments of the invention include a computer -readable medium having instructions stored theieon, that when executed in a multi-processor system cause a method to be peifoimed, the method comprising: coupling a plurality of processors to a peripheral bus via respective groups of transmit/receive (TX/RX) lanes of the bus; coupling the plurality of processors to each other TX/RX lanes of the plurality of processors that are not coupled to the bus; transmitting data to the plurality of processor directly from the bus to the plurality of processors, wherein each of the plurality of processors is addressable; and transmitting data directly between processors
In an embodiment, the plurality of processor comprises a graphics processing unit (GPU).
In an embodiment, the plurality of processors comprise a plurality of GPUs, and wherein the peripheral bus comprises a peripheral component interconnect express (PCIe®) bus to which the GPUs are directly coupled
In an embodiment, the method further comprising coupling the GPUs communicating directly with each other via respective TX/RX lanes.
In an embodiment, the method further comprising a GPU receiving data from the bus and transmitting the data to the other GPUs
Embodiments of the invention include a system comprising- a bus root comprising a central processing unit configurable to communicate with peripheral components via a bus; and a first peripheral component coupled directly to the bus root and further coupled directly to a second peripheral component, the first peripheral component comprising an internal bridge configurable to receive data and to transmit data, wherein receiving and transmitting comprises direct communication between the first peripheral component and the second peripheral component
In an embodiment, the first peripheral component and the second peripheral component are each further configurable to communicate directly with the bus root to transmit and receive data.
In an embodiment, receiving and transmitting further comprise transmitting requests and data from the second peripheral component to the first peripheral component via the bus root
In an embodiment, receiving and transmitting further comprise transmitting requests or data from the first peripheral component to the second peripheral component via the internal biidge of the fust peripheral component to the second peripheral component
In an embodiment, the bus root is configurable to perform write operations, wherein a write operation to the second peripheral component comprises the bus root transmitting a write request to the internal bridge of the first peripheral component t, and the internal bridge of the first peripheral component t transmitting the write request directly to the second peripheral component
In an embodiment, the write request is received by an internal bus interface of the second peripheral component.
In an embodiment, the bus root is configurable to perform write operations, wherein a write operation to the first peripheral component comprises the bus root transmitting a write request to the bridge, and the bridge transmitting the write request to an internal bus interface of the first peripheral component.
In an embodiment, the bus root is configurable to perform read operations, wherein a read operation to the first peripheral component comprises the bus root transmitting a read request to the bridge, and the bridge transmitting the read request to an internal bus interface of the first peripheral component.
In an embodiment, the bus root is configurable to perform read operations, wherein a read operation to the second peripheral component comprises the bus root transmitting a read request to the bridge, and the bridge transmitting the read request directly to the second peripheral component.
In an embodiment, the bridge comprises logic configurable to determine routing for received write requests, received read requests, and received data
In an embodiment, the second peripheral component comprises an internal bridge configurable to receive data and to transmit data, and further configurable to be powered done when the internal bridge is not used to receive data and to transmit data.
In an embodiment, the second peripheral component further comprises a dedicated power source for the use of the internal bridge
In an embodiment, the first peripheral component and the second peripheral component each comprise a graphics processing unit (GPU) In an embodiment, each of the first peripheral component and the second peripheral component further comprise a respective plurality of clients coupled to respective bus interfaces, wherein the clients comprises video processing logic comprising shader units and encoder/decoder units
Embodiments of the invention include a method of communicating in a multiprocessor system, the method comprising- a bus root transmitting requests directly to a first peripheral component, wherein the requests comprise read requests and write requests, the first peripheral component receiving the requests via a first bus in an internal bridge of the first peripheral component; and the internal bridge determining appropriate routing for the request, wherein appropriate routing comprises, routing requests that are directed to a second peripheral component directly to a bus interface of the second peripheral component from the bridge via a second bus; and routing requests that are directed to a first peripheral component to a bus interface of the first peripheral component
In an embodiment, further comprising the second component responding to a read request by transmitting data directly to the bus root via a third bus.
In an embodiment, further comprising the second peripheral component receiving requests in an internal bridge of the second peripheral component.
In an embodiment, further comprising' the first peripheral component transmitting a read request to the second peripheral component via the second bus, the second peripheral component transmitting data in response to the read request to the bus root via the third bus, and the buss root transmitting the data to the bridge via the first bus
Embodiments of the invention include a computer-readable medium having stored thereon instruction that when executed in a multi-processor system, cause a method of communicating to be performed, the method comprising: a bus root transmitting requests directly to a first peripheral component, wherein the requests comprise read requests and write requests, the first peripheral component receiving the requests via a first bus in an internal bridge of the first peripheral component; and the internal bridge determining appropriate routing for the request, wherein appropriate routing comprises, routing requests that are directed to a second peripheial component diiectly to a bus interface of the second peripheial component from the bridge via a second bus; and routing requests that are directed to a first peripheral component to a bus interface of the first peripheral component
In an embodiment, the method further comprises the second component responding to a read request by transmitting data directly to the bus root via a third bus.
In an embodiment, the method further comprises the second peripheral component receiving requests in an internal bridge of the second peripheral component.
In an embodiment, the method further comprises: the first peripheral component transmitting a read request to the second peripheral component via the second bus; the second peripheral component transmitting data in response to the read request to the bus root via the third bus; and the bus root transmitting the data to the bridge via the first bus
In an embodiment, the instructions comprise hardware description language instructions that are usable to create an application specific integrated circuit (ASIC) to perform the method
Aspects of the embodiments described above may be implemented as functionality programmed into any of a variety of circuitry, including but not limited to programmable logic devices (PLDs), such as field programmable gate arrays (FPGAs), programmable array logic (PAL) devices, electrically programmable logic and memory devices, and standard cell-based devices, as well as application specific integrated circuits (ASICs) and fully custom integrated circuits, Some other possibilities for implementing aspects of the embodiments include microcontrollers with memory (such as electronically erasable programmable read only memory (EEPROM), Flash memory, etc ), embedded microprocessors, firmware, software, etc Furthermore, aspects of the embodiments may be embodied in microprocessors having software-based circuit emulation, discrete logic (sequential and combinatorial), custom devices, fuzzy (neural) logic, quantum devices, and hybrids of any of the above device types. Of course the underlying device technologies may be provided in a variety of component types, e g,, metal-oxide semiconductor field-effect transistor (MOSFET) technologies such as complementary metal-oxide semiconductor (CMOS), bipolar technologies such as emitter-coupled logic (ECL), polymer technologies (e g,, silicon-conjugated polymer and metal-conjugated polymer-metal structures), mixed analog and digital, etc.
The term "processor" as used in the specification and claims includes a processor core or a portion of a processor Further, although one or more GPUs and one or more CPUs are usually referred to separately herein, in embodiments both a GPU and a CPU are included in a single integrated circuit package or on a single monolithic die Therefore a single device performs the claimed method in such embodiments,
Unless the context clearly requires otherwise, throughout the description and the claims, the words "comprise," "comprising," and the like are to be construed in an inclusive sense as opposed to an exclusive or exhaustive sense; that is to say, in a sense of "including, but not limited to." Words using the singular or plural number also include the plural or singular number, respectively. Additionally, the words "herein," "hereunder," "above," "below," and words of similar import, when used in this application, refer to this application as a whole and not to any particular portions of this application When the word "or" is used in reference to a list of two or more items, that word covers all of the following interpretations of the word, any of the items in the list, all of the items in the list, and any combination of the items in the list
The above description of illustrated embodiments of the method and system is not intended to be exhaustive or to limit the invention to the precise forms disclosed While specific embodiments of, and examples for, the method and system are described herein for illustrative purposes, various equivalent modifications are possible within the scope of the invention, as those skilled in the relevant art will recognize. The teachings of the disclosure provided herein can be applied to other systems, not only for systems including graphics processing or video processing, as described above, The various operations described may be performed in a very wide variety of architectures and distributed differently than described. In addition, though many configurations are described herein, none are intended to be limiting or exclusive,
In other embodiments, some or all of the hardware and software capability described herein may exist in a printer, a camera, television, a digital versatile disc (DVD) player, a DVR or PVR, a handheld device, a mobile telephone or some other device. The elements and acts of the various embodiments described above can be combined to provide further embodiments. These and other changes can be made to the method and system in light of the above detailed description.
In general, in the following claims, the terms used should not be construed to limit the method and system to the specific embodiments disclosed in the specification and the claims, but should be construed to include any processing systems and methods that operate under the claims. Accordingly, the method and system is not limited by the disclosure, but instead the scope of the method and system is to be determined entirely by the claims.
While ceitain aspects of the method and system are presented below in certain claim forms, the inventors contemplate the various aspects of the method and system in any number of claim forms. For example, while only one aspect of the method and system may be recited as embodied in computer -readable medium, other aspects may likewise be embodied in computer-readable medium. Such computer readable media may store instructions that are to be executed by a computing device (e g , personal computer, personal digital assistant, PVR, mobile device or the like) or may be instructions (such as, for example, Verilog or a hardware description language) that when executed are designed to create a device (GPU, ASIC, or the like) or software application that when operated performs aspects described above The claimed invention may be embodied in computer code (e.g., HDL, Verilog, etc.) that is created, stored, synthesized, and used to generate GDSII data (or its equivalent) An ASIC may then be manufactured based on this data
Accordingly, the inventors reserve the right to add additional claims after filing the application to pursue such additional claim forms for other aspects of the method and system.

Claims

What is claimed is.
1 A system comprising: a peripheral component connector coupled to a peripheral component bus; and a plurality of peripheral components coupled directly to the peripheral component connector via a plurality of respective transmit/receive (TX/RX) lanes such that the plurality of peripheral components appear to the peripheral component bus as one peripheral device coupled to the peripheral component connector
2 The system of claim 1, wherein the plurality of peripheral components are further coupled directly to each other via respective transmit/receive (TX/RX) lanes
3. The system of claim 1, wherein at least one of the plurality of peripheral components is a graphics processing unit (GPU)
4 The system of claim 1, wherein the peripheral component connector is a peripheral component interconnect express (PCIe®) slot, and wherein the peripheral component bus is a PCIe® bus
5 The system of claim 2, wherein the each peripheral component is configured to receive all of the data transmitted via the peripheral component connector and to decide which data is applicable.
6. The system of claim 2, wherein each peripheral component forwards all of the data received by it to the remaining peripheral components
7. The system of claim 1, wherein each of the peripheral components is accessed based on an address
8 A multi-processor method, comprising coupling a plurality of processors to a peripheral bus via respective groups of transmit/receive (TX/RX) lanes of the bus, coupling the plurality of processors to each other TX/RX lanes of the plurality of processors that are not coupled to the bus; transmitting data to the plurality of processor directly from the bus to the plurality of processors, wherein each of the plurality of processors is addressable; and transmitting data directly between processors
9. The method of claim 8 wherein the plurality of processor comprises a graphics processing unit (GPU).
10. The method of claim 8, wherein the plurality of processors comprise a plurality of GPUs, and wherein the peripheral bus comprises a peripheral component interconnect express (PCIe©) bus to which the GPUs are directly coupled
11. The method of claim 10, further comprising coupling the GPUs communicating directly with each other via respective TX/RX lanes.
12 The method of claim 11, further comprising a GPU receiving data from the bus and transmitting the data to the other GPUs
13. A computer readable medium storing computer readable instructions adapted to enable manufacture of a circuit comprising: a peripheral component connector coupled to a peripheral component bus; and a plurality of peripheral components coupled directly to the peripheral component connector via a plurality of respective transmit/receive (TX/RX) lanes such that the plurality of peripheral components appear to the peripheral component bus as one peripheral device coupled to the peripheral component connector, wherein the plurality of peiipheial components are further coupled directly to each other via respective transmit/receive (TX/RX) lanes
14 The computer readable medium of claim 13, wherein the instructions comprise hardware description language instructions.
15 A computer -readable medium having instructions stored thereon, that when executed in a multi-processor system cause a method to be performed, the method comprising coupling a plurality of processors to a peripheral bus via respective groups of transmit/receive (TX/RX) lanes of the bus, coupling the plurality of processors to each other TX/RX lanes of the plurality of processors that are not coupled to the bus; transmitting data to the plurality of processor directly from the bus to the plurality of processors, wherein each of the plurality of processors is addressable; and transmitting data directly between processors.
16. The computer-readable medium of claim 15 wherein the plurality of processor comprises a graphics processing unit (GPU).
17 The computer-readable medium of claim 15, wherein the plurality of processors comprise a plurality of GPUs, and wherein the peripheral bus comprises a peripheral component interconnect express (PCIe®) bus to which the GPUs are directly coupled
18. The computer-readable medium of claim 17, the method further comprising coupling the GPUs communicating directly with each other via respective TX/RX lanes.
19. The computer-readable medium of claim 18, the method fuithci comprising a GPU leceiving data from the bus and transmitting the data to the other GPUs.
PCT/US2009/059594 2008-10-03 2009-10-05 Multi-processor architecture and method WO2010040144A1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN200980147694.9A CN102227709B (en) 2008-10-03 2009-10-05 Multi-processor architecture and method
EP09737270.0A EP2342626B1 (en) 2008-10-03 2009-10-05 Multi-processor architecture and method
KR1020117010206A KR101533761B1 (en) 2008-10-03 2009-10-05 Multi-processor architecture and method
JP2011530294A JP2012504835A (en) 2008-10-03 2009-10-05 Multiprocessor architecture and method

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US12/245,686 US8892804B2 (en) 2008-10-03 2008-10-03 Internal BUS bridge architecture and method in multi-processor systems
US12/245,686 2008-10-03
US12/340,510 2008-12-19
US12/340,510 US8373709B2 (en) 2008-10-03 2008-12-19 Multi-processor architecture and method

Publications (1)

Publication Number Publication Date
WO2010040144A1 true WO2010040144A1 (en) 2010-04-08

Family

ID=41426838

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2009/059594 WO2010040144A1 (en) 2008-10-03 2009-10-05 Multi-processor architecture and method

Country Status (6)

Country Link
US (4) US8373709B2 (en)
EP (1) EP2342626B1 (en)
JP (1) JP2012504835A (en)
KR (1) KR101533761B1 (en)
CN (2) CN105005542B (en)
WO (1) WO2010040144A1 (en)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8373709B2 (en) * 2008-10-03 2013-02-12 Ati Technologies Ulc Multi-processor architecture and method
US8892804B2 (en) 2008-10-03 2014-11-18 Advanced Micro Devices, Inc. Internal BUS bridge architecture and method in multi-processor systems
US8751720B2 (en) 2010-11-08 2014-06-10 Moon J. Kim Computationally-networked unified data bus
CN102810085A (en) * 2011-06-03 2012-12-05 鸿富锦精密工业(深圳)有限公司 PCI-E expansion system and method
US10817043B2 (en) * 2011-07-26 2020-10-27 Nvidia Corporation System and method for entering and exiting sleep mode in a graphics subsystem
CN102931546A (en) * 2011-08-10 2013-02-13 鸿富锦精密工业(深圳)有限公司 Connector assembly
CN103105895A (en) * 2011-11-15 2013-05-15 辉达公司 Computer system and display cards thereof and method for processing graphs of computer system
CN103631549A (en) * 2012-08-22 2014-03-12 慧荣科技股份有限公司 Picture processing device and external connection picture device
US8996781B2 (en) * 2012-11-06 2015-03-31 OCZ Storage Solutions Inc. Integrated storage/processing devices, systems and methods for performing big data analytics
US20140149528A1 (en) * 2012-11-29 2014-05-29 Nvidia Corporation Mpi communication of gpu buffers
WO2015016843A1 (en) * 2013-07-30 2015-02-05 Hewlett-Packard Development Company, L.P. Connector for a computing assembly
US9634942B2 (en) 2013-11-11 2017-04-25 Amazon Technologies, Inc. Adaptive scene complexity based on service quality
US9582904B2 (en) 2013-11-11 2017-02-28 Amazon Technologies, Inc. Image composition based on remote object data
US9604139B2 (en) 2013-11-11 2017-03-28 Amazon Technologies, Inc. Service for generating graphics object data
US9578074B2 (en) 2013-11-11 2017-02-21 Amazon Technologies, Inc. Adaptive content transmission
US9805479B2 (en) 2013-11-11 2017-10-31 Amazon Technologies, Inc. Session idle optimization for streaming server
US9641592B2 (en) 2013-11-11 2017-05-02 Amazon Technologies, Inc. Location of actor resources
US9596280B2 (en) 2013-11-11 2017-03-14 Amazon Technologies, Inc. Multiple stream content presentation
US10261570B2 (en) * 2013-11-27 2019-04-16 Intel Corporation Managing graphics power consumption and performance
US10535322B2 (en) 2015-07-24 2020-01-14 Hewlett Packard Enterprise Development Lp Enabling compression of a video output
US10311013B2 (en) * 2017-07-14 2019-06-04 Facebook, Inc. High-speed inter-processor communications
CN107562674B (en) * 2017-08-28 2020-03-20 上海集成电路研发中心有限公司 Bus protocol asynchronous logic circuit implementation device embedded into processor
JP6635209B2 (en) * 2018-04-18 2020-01-22 富士通クライアントコンピューティング株式会社 Information processing system
JP6579255B1 (en) 2018-12-28 2019-09-25 富士通クライアントコンピューティング株式会社 Information processing system and relay device
JP6573046B1 (en) 2019-06-05 2019-09-11 富士通クライアントコンピューティング株式会社 Information processing apparatus, information processing system, and information processing program
US11637773B2 (en) * 2020-02-11 2023-04-25 Fungible, Inc. Scaled-out transport as connection proxy for device-to-device communications
CN115981853A (en) * 2022-12-23 2023-04-18 摩尔线程智能科技(北京)有限责任公司 GPU (graphics processing Unit) interconnection architecture, method for realizing GPU interconnection architecture and computing equipment

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060267993A1 (en) * 2005-05-27 2006-11-30 James Hunkins Compositing in multiple video processing unit (VPU) systems
US20060271713A1 (en) * 2005-05-27 2006-11-30 Ati Technologies Inc. Computing device with flexibly configurable expansion slots, and method of operation
US20070016711A1 (en) * 2005-07-13 2007-01-18 Jet Way Information Co., Ltd. Interfacing structure for multiple graphic

Family Cites Families (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5712664A (en) * 1993-10-14 1998-01-27 Alliance Semiconductor Corporation Shared memory graphics accelerator system
JP3454294B2 (en) * 1994-06-20 2003-10-06 インターナショナル・ビジネス・マシーンズ・コーポレーション Multiple bus information processing system and bridge circuit
US5913045A (en) * 1995-12-20 1999-06-15 Intel Corporation Programmable PCI interrupt routing mechanism
US6359624B1 (en) * 1996-02-02 2002-03-19 Kabushiki Kaisha Toshiba Apparatus having graphic processor for high speed performance
US5999183A (en) * 1997-07-10 1999-12-07 Silicon Engineering, Inc. Apparatus for creating a scalable graphics system with efficient memory and bandwidth usage
US6173374B1 (en) * 1998-02-11 2001-01-09 Lsi Logic Corporation System and method for peer-to-peer accelerated I/O shipping between host bus adapters in clustered computer network
US6560688B1 (en) * 1998-10-01 2003-05-06 Advanced Micro Devices, Inc. System and method for improving accelerated graphics port systems
US6477623B2 (en) * 1998-10-23 2002-11-05 Micron Technology, Inc. Method for providing graphics controller embedded in a core logic unit
JP2000222590A (en) * 1999-01-27 2000-08-11 Nec Corp Method and device for processing image
US6317813B1 (en) * 1999-05-18 2001-11-13 Silicon Integrated Systems Corp. Method for arbitrating multiple memory access requests in a unified memory architecture via a non unified memory controller
US6473086B1 (en) * 1999-12-09 2002-10-29 Ati International Srl Method and apparatus for graphics processing using parallel graphics processors
US6662257B1 (en) * 2000-05-26 2003-12-09 Ati International Srl Multiple device bridge apparatus and method thereof
US6587905B1 (en) * 2000-06-29 2003-07-01 International Business Machines Corporation Dynamic data bus allocation
US6668296B1 (en) * 2000-06-30 2003-12-23 Hewlett-Packard Development Company, L.P. Powering a notebook across a USB interface
US6606614B1 (en) * 2000-08-24 2003-08-12 Silicon Recognition, Inc. Neural network integrated circuit with fewer pins
US6802021B1 (en) * 2001-01-23 2004-10-05 Adaptec, Inc. Intelligent load balancing for a multi-path storage system
US7009618B1 (en) * 2001-07-13 2006-03-07 Advanced Micro Devices, Inc. Integrated I/O Remapping mechanism
US7340555B2 (en) * 2001-09-28 2008-03-04 Dot Hill Systems Corporation RAID system for performing efficient mirrored posted-write operations
US20030158886A1 (en) * 2001-10-09 2003-08-21 Walls Jeffrey J. System and method for configuring a plurality of computers that collectively render a display
US6700580B2 (en) * 2002-03-01 2004-03-02 Hewlett-Packard Development Company, L.P. System and method utilizing multiple pipelines to render graphical data
US6567880B1 (en) * 2002-03-28 2003-05-20 Compaq Information Technologies Group, L.P. Computer bridge interfaces for accelerated graphics port and peripheral component interconnect devices
US6968415B2 (en) * 2002-03-29 2005-11-22 International Business Machines Corporation Opaque memory region for I/O adapter transparent bridge
US7069365B2 (en) * 2002-04-01 2006-06-27 Sun Microsystems, Inc. System and method for controlling multiple devices via general purpose input/output (GPIO) hardware
US6947051B2 (en) * 2003-02-18 2005-09-20 Microsoft Corporation Video memory management
US6874042B2 (en) * 2003-03-11 2005-03-29 Dell Products L.P. System and method for using a switch to route peripheral and graphics data on an interconnect
US7068278B1 (en) * 2003-04-17 2006-06-27 Nvidia Corporation Synchronized graphics processing units
US7093033B2 (en) * 2003-05-20 2006-08-15 Intel Corporation Integrated circuit capable of communicating using different communication protocols
US20040257369A1 (en) * 2003-06-17 2004-12-23 Bill Fang Integrated video and graphics blender
US7119808B2 (en) * 2003-07-15 2006-10-10 Alienware Labs Corp. Multiple parallel processor computer graphics system
TWI284275B (en) * 2003-07-25 2007-07-21 Via Tech Inc Graphic display architecture and control chip set therein
US6956579B1 (en) * 2003-08-18 2005-10-18 Nvidia Corporation Private addressing in a multi-processor graphics processing system
TWI221980B (en) * 2003-09-02 2004-10-11 Prolific Technology Inc Apparatus for multiple host access to storage media
US7822105B2 (en) * 2003-09-02 2010-10-26 Sirf Technology, Inc. Cross-correlation removal of carrier wave jamming signals
US7171499B2 (en) * 2003-10-10 2007-01-30 Advanced Micro Devices, Inc. Processor surrogate for use in multiprocessor systems and multiprocessor system using same
TWI221214B (en) * 2003-10-15 2004-09-21 Via Tech Inc Interrupt signal control system and control method
US7782325B2 (en) * 2003-10-22 2010-08-24 Alienware Labs Corporation Motherboard for supporting multiple graphics cards
US7808499B2 (en) * 2003-11-19 2010-10-05 Lucid Information Technology, Ltd. PC-based computing system employing parallelized graphics processing units (GPUS) interfaced with the central processing unit (CPU) using a PC bus and a hardware graphics hub having a router
US7119810B2 (en) * 2003-12-05 2006-10-10 Siemens Medical Solutions Usa, Inc. Graphics processing unit for simulation or medical diagnostic imaging
US7567252B2 (en) * 2003-12-09 2009-07-28 Microsoft Corporation Optimizing performance of a graphics processing unit for efficient execution of general matrix operations
US7149848B2 (en) * 2004-02-26 2006-12-12 Hewlett-Packard Development Company, L.P. Computer system cache controller and methods of operation of a cache controller
US7289125B2 (en) * 2004-02-27 2007-10-30 Nvidia Corporation Graphics device clustering with PCI-express
US7424564B2 (en) * 2004-03-23 2008-09-09 Qlogic, Corporation PCI—express slot for coupling plural devices to a host system
US7246190B2 (en) * 2004-04-21 2007-07-17 Hewlett-Packard Development Company, L.P. Method and apparatus for bringing bus lanes in a computer system using a jumper board
US6985152B2 (en) * 2004-04-23 2006-01-10 Nvidia Corporation Point-to-point bus bridging without a bridge controller
US7663633B1 (en) * 2004-06-25 2010-02-16 Nvidia Corporation Multiple GPU graphics system for implementing cooperative graphics instruction execution
US7062594B1 (en) * 2004-06-30 2006-06-13 Emc Corporation Root complex connection system
US7721118B1 (en) * 2004-09-27 2010-05-18 Nvidia Corporation Optimizing power and performance for multi-processor graphics processing
TWM264547U (en) * 2004-11-08 2005-05-11 Asustek Comp Inc Main board
TWI274255B (en) * 2004-11-08 2007-02-21 Asustek Comp Inc Motherboard
US7576745B1 (en) * 2004-11-17 2009-08-18 Nvidia Corporation Connecting graphics adapters
US7598958B1 (en) * 2004-11-17 2009-10-06 Nvidia Corporation Multi-chip graphics processing unit apparatus, system, and method
US7633505B1 (en) * 2004-11-17 2009-12-15 Nvidia Corporation Apparatus, system, and method for joint processing in graphics processing units
US8066515B2 (en) * 2004-11-17 2011-11-29 Nvidia Corporation Multiple graphics adapter connection systems
US7477256B1 (en) * 2004-11-17 2009-01-13 Nvidia Corporation Connecting graphics adapters for scalable performance
US7275123B2 (en) * 2004-12-06 2007-09-25 Nvidia Corporation Method and apparatus for providing peer-to-peer data transfer within a computing environment
US7451259B2 (en) 2004-12-06 2008-11-11 Nvidia Corporation Method and apparatus for providing peer-to-peer data transfer within a computing environment
US7545380B1 (en) 2004-12-16 2009-06-09 Nvidia Corporation Sequencing of displayed images for alternate frame rendering in a multi-processor graphics system
US7372465B1 (en) * 2004-12-17 2008-05-13 Nvidia Corporation Scalable graphics processing for remote display
US7383412B1 (en) * 2005-02-28 2008-06-03 Nvidia Corporation On-demand memory synchronization for peripheral systems with multiple parallel processors
US7246191B2 (en) * 2005-03-31 2007-07-17 Intel Corporation Method and apparatus for memory interface
US7616207B1 (en) * 2005-04-25 2009-11-10 Nvidia Corporation Graphics processing system including at least three bus devices
US7793029B1 (en) * 2005-05-17 2010-09-07 Nvidia Corporation Translation device apparatus for configuring printed circuit board connectors
US7663635B2 (en) * 2005-05-27 2010-02-16 Ati Technologies, Inc. Multiple video processor unit (VPU) memory mapping
US8054314B2 (en) * 2005-05-27 2011-11-08 Ati Technologies, Inc. Applying non-homogeneous properties to multiple video processing units (VPUs)
US7649537B2 (en) * 2005-05-27 2010-01-19 Ati Technologies, Inc. Dynamic load balancing in multiple video processing unit (VPU) systems
US20060282604A1 (en) * 2005-05-27 2006-12-14 Ati Technologies, Inc. Methods and apparatus for processing graphics data using multiple processing circuits
JP2007008679A (en) * 2005-06-30 2007-01-18 Toshiba Corp Paper delivering device
US20070038794A1 (en) * 2005-08-10 2007-02-15 Purcell Brian T Method and system for allocating a bus
US7629978B1 (en) * 2005-10-31 2009-12-08 Nvidia Corporation Multichip rendering with state control
US7525548B2 (en) * 2005-11-04 2009-04-28 Nvidia Corporation Video processing with multiple graphical processing units
US8294731B2 (en) 2005-11-15 2012-10-23 Advanced Micro Devices, Inc. Buffer management in vector graphics hardware
US8412872B1 (en) * 2005-12-12 2013-04-02 Nvidia Corporation Configurable GPU and method for graphics processing using a configurable GPU
US7340557B2 (en) * 2005-12-15 2008-03-04 Via Technologies, Inc. Switching method and system for multiple GPU support
US7325086B2 (en) * 2005-12-15 2008-01-29 Via Technologies, Inc. Method and system for multiple GPU support
US7623131B1 (en) * 2005-12-16 2009-11-24 Nvidia Corporation Graphics processing systems with multiple processors connected in a ring topology
JP4869714B2 (en) * 2006-01-16 2012-02-08 株式会社ソニー・コンピュータエンタテインメント Information processing apparatus, signal transmission method, and bridge
US7461195B1 (en) * 2006-03-17 2008-12-02 Qlogic, Corporation Method and system for dynamically adjusting data transfer rates in PCI-express devices
TW200737034A (en) * 2006-03-23 2007-10-01 Micro Star Int Co Ltd Connector module of graphic card and the device of motherboard thereof
US7970956B2 (en) * 2006-03-27 2011-06-28 Ati Technologies, Inc. Graphics-processing system and method of broadcasting write requests to multiple graphics devices
US8130227B2 (en) 2006-05-12 2012-03-06 Nvidia Corporation Distributed antialiasing in a multiprocessor graphics system
US7535433B2 (en) * 2006-05-18 2009-05-19 Nvidia Corporation Dynamic multiple display configuration
US7480757B2 (en) * 2006-05-24 2009-01-20 International Business Machines Corporation Method for dynamically allocating lanes to a plurality of PCI Express connectors
US8103993B2 (en) * 2006-05-24 2012-01-24 International Business Machines Corporation Structure for dynamically allocating lanes to a plurality of PCI express connectors
JP4439491B2 (en) * 2006-05-24 2010-03-24 株式会社ソニー・コンピュータエンタテインメント Multi-graphics processor system, graphics processor and data transfer method
US8555099B2 (en) * 2006-05-30 2013-10-08 Ati Technologies Ulc Device having multiple graphics subsystems and reduced power consumption mode, software and methods
US7562174B2 (en) * 2006-06-15 2009-07-14 Nvidia Corporation Motherboard having hard-wired private bus between graphics cards
US7619629B1 (en) * 2006-06-15 2009-11-17 Nvidia Corporation Method and system for utilizing memory interface bandwidth to connect multiple graphics processing units
US7500041B2 (en) * 2006-06-15 2009-03-03 Nvidia Corporation Graphics processing unit for cost effective high performance graphics system with two or more graphics processing units
US7412554B2 (en) * 2006-06-15 2008-08-12 Nvidia Corporation Bus interface controller for cost-effective high performance graphics system with two or more graphics processing units
US7616206B1 (en) * 2006-06-16 2009-11-10 Nvidia Corporation Efficient multi-chip GPU
US20080055321A1 (en) * 2006-08-31 2008-03-06 Ati Technologies Inc. Parallel physics simulation and graphics processing
JP4421593B2 (en) * 2006-11-09 2010-02-24 株式会社ソニー・コンピュータエンタテインメント Multiprocessor system, control method thereof, program, and information storage medium
US20080200043A1 (en) * 2007-02-15 2008-08-21 Tennrich International Corp. Dual display card connection means
ATE508141T1 (en) 2007-03-07 2011-05-15 Beneo Orafti S A PRESERVATION OF NATURAL RUBBER LATEX
JP2008276568A (en) * 2007-04-27 2008-11-13 Toshiba Corp Information processing unit, and processor circuit control method
US7626418B1 (en) * 2007-05-14 2009-12-01 Xilinx, Inc. Configurable interface
US8711153B2 (en) * 2007-12-28 2014-04-29 Intel Corporation Methods and apparatuses for configuring and operating graphics processing units
US8161209B2 (en) * 2008-03-31 2012-04-17 Advanced Micro Devices, Inc. Peer-to-peer special purpose processor architecture and method
CN101639930B (en) * 2008-08-01 2012-07-04 辉达公司 Method and system for processing graphical data by a series of graphical processors
US8373709B2 (en) * 2008-10-03 2013-02-12 Ati Technologies Ulc Multi-processor architecture and method
US8892804B2 (en) * 2008-10-03 2014-11-18 Advanced Micro Devices, Inc. Internal BUS bridge architecture and method in multi-processor systems
JP2012507783A (en) * 2008-10-30 2012-03-29 エルエスアイ コーポレーション Storage controller data redistribution

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060267993A1 (en) * 2005-05-27 2006-11-30 James Hunkins Compositing in multiple video processing unit (VPU) systems
US20060271713A1 (en) * 2005-05-27 2006-11-30 Ati Technologies Inc. Computing device with flexibly configurable expansion slots, and method of operation
US20070016711A1 (en) * 2005-07-13 2007-01-18 Jet Way Information Co., Ltd. Interfacing structure for multiple graphic

Also Published As

Publication number Publication date
EP2342626A1 (en) 2011-07-13
CN105005542A (en) 2015-10-28
KR20110067149A (en) 2011-06-21
JP2012504835A (en) 2012-02-23
CN105005542B (en) 2019-01-15
US20170235700A1 (en) 2017-08-17
US8373709B2 (en) 2013-02-12
US20130147815A1 (en) 2013-06-13
US20100088453A1 (en) 2010-04-08
CN102227709A (en) 2011-10-26
KR101533761B1 (en) 2015-07-03
US20180314670A1 (en) 2018-11-01
CN102227709B (en) 2015-05-20
EP2342626B1 (en) 2015-07-08
US10467178B2 (en) 2019-11-05

Similar Documents

Publication Publication Date Title
US10467178B2 (en) Peripheral component
US9977756B2 (en) Internal bus architecture and method in multi-processor systems
US8161209B2 (en) Peer-to-peer special purpose processor architecture and method
US7340557B2 (en) Switching method and system for multiple GPU support
US7325086B2 (en) Method and system for multiple GPU support
US20200225878A1 (en) Memory buffers and modules supporting dynamic point-to-point connections
US7380045B2 (en) Protocol conversion and arbitration circuit, system having the same, and method for converting and arbitrating signals
US6950910B2 (en) Mobile wireless communication device architectures and methods therefor
US7680968B2 (en) Switch/network adapter port incorporating shared memory resources selectively accessible by a direct execution logic element and one or more dense logic devices in a fully buffered dual in-line memory module format (FB-DIMM)
US20050235090A1 (en) High speed interface with looped bus
Sharma Compute Express Link (CXL): Enabling heterogeneous data-centric computing with heterogeneous memory hierarchy
US8244994B1 (en) Cooperating memory controllers that share data bus terminals for accessing wide external devices
KR100871835B1 (en) Memory system and method of signaling of the same
KR100773932B1 (en) A data alignment chip for camera link board

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200980147694.9

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 09737270

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2011530294

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2501/DELNP/2011

Country of ref document: IN

WWE Wipo information: entry into national phase

Ref document number: 2009737270

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 20117010206

Country of ref document: KR

Kind code of ref document: A