KR101533761B1 - 멀티-프로세서 아키텍쳐 및 방법 - Google Patents

멀티-프로세서 아키텍쳐 및 방법 Download PDF

Info

Publication number
KR101533761B1
KR101533761B1 KR1020117010206A KR20117010206A KR101533761B1 KR 101533761 B1 KR101533761 B1 KR 101533761B1 KR 1020117010206 A KR1020117010206 A KR 1020117010206A KR 20117010206 A KR20117010206 A KR 20117010206A KR 101533761 B1 KR101533761 B1 KR 101533761B1
Authority
KR
South Korea
Prior art keywords
bus
peripheral component
bridge
data
root
Prior art date
Application number
KR1020117010206A
Other languages
English (en)
Other versions
KR20110067149A (ko
Inventor
샤힌 솔키
스테판 모레인
마크 에스. 그로스맨
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
에이티아이 테크놀로지스 유엘씨
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 어드밴스드 마이크로 디바이시즈, 인코포레이티드, 에이티아이 테크놀로지스 유엘씨 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20110067149A publication Critical patent/KR20110067149A/ko
Application granted granted Critical
Publication of KR101533761B1 publication Critical patent/KR101533761B1/ko

Links

Images

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)
  • Multi Processors (AREA)

Abstract

본원에서는, 멀티-프로세서 아키텍쳐 및 방법의 실시예들이 설명된다. 실시예들은 외부 브리지 집적 회로(IC) 아키텍쳐의 이용에 대한 대안들을 제공한다. 예를 들어, 일 실시예는 다수의 프로세서들이 외부 브리지 IC를 필요로 하지 않으면서 하나의 주변 인터페이스 슬롯을 이용할 수 있도록 주변 버스를 멀티플렉싱한다. 실시예들은 알려진 버스 프로토콜들과 이용될 수 있다.

Description

멀티-프로세서 아키텍쳐 및 방법{MULTI-PROCESSOR ARCHITECTURE AND METHOD}
관련 출원들
본 출원은 2008년 10월 3일 출원된 미국 특허 출원 제12/245,686호의 우선권을 주장한다. 본 출원은 또한, 2008년 12월 19일 출원되었으며 미국 특허 출원 제12/245,686호의 부분 연속 출원인 미국 특허 출원 제12/340,510호의 우선권을 주장한다. 이들 출원들 모두는 그 전체가 본원의 참조로서 통합된다.
본 발명은 컴퓨터 및 다른 디지털 시스템들에서의 데이터 전송 분야에 관한 것이다.
컴퓨터 및 다른 디지털 시스템들이 점점 더 복잡해지고 유능해짐에 따라, 시스템 컴포넌트들 또는 요소들 간의 데이터 전송을 강화하기 위한 방법들 및 하드웨어가 끊임없이 발전되고 있다. 전송될 데이터는 데이터를 나타내는 신호들, 커맨드들, 또는 다른 어떠한 신호들을 포함한다. 데이터 전송의 속도 및 효율성은, 그래픽 어플리케이션들(graphics applications)과 같은 대단히 데이터 집중적(data-intensive)인 어플리케이션들을 작동시키는 시스템들에서 특히 중요하다. 전형적인 시스템들에서, 그래픽 처리 성능은 중앙 처리 유닛(CPU) 성능의 일부로서 제공되거나, 또는 그래픽 처리 유닛(graphics processing unit, GPU)과 같은 개별적인 특수 목적 프로세서에 의해 제공되는데, 이러한 그래픽 처리 유닛은 CPU와 통신하며, 비디오 게임 등과 같은 어플리케이션들에 대한 그래픽 데이터의 처리를 지원한다. 하나의 시스템에는 하나의 이상의 GPU들이 포함될 수 있다. 통상의 멀티-GPU 시스템들에서, 브리지형(bridged) 호스트 인터페이스(예를 들어, PCI 익스프레스(peripheral component interconnect express) (PCIe
Figure 112011033030634-pct00001
) 버스 인터페이스)는 피어 투 피어 트래픽(peer to peer traffic)과 호스트 트래픽 간에 대역폭을 공유해야 한다. 트래픽은 주로 메모리 데이터 전송들로 이루어지지만, 종종 커맨드들을 포함할 수 있다. 도 1은 루트(root)(102)를 포함하는 종래의 시스템(100)의 블록도이다. 전형적인 루트(102)는 컴퓨터 칩셋(computer chipset)이며, 이러한 칩셋은 중앙 처리 유닛(CPU), 호스트 브리지(104) 및 2개의 엔드포인트들(endpoints) EP0(106a) 및 EP1(106b)을 포함한다. 엔드포인트들은 버스 엔드포인트들이며, 다양한 주변 컴포넌트들(peripheral components)(예를 들어, 그래픽 처리 유닛(GPU)들과 같은 특수 목적 프로세서들)이 될 수 있다. 루트(102)는 하나 이상의 버스들에 의해 브리지(104)에 결합되어, 주변 컴포넌트들과 통신한다. (GPU와 같은) 몇몇 주변 컴포넌트의 엔드포인트들은 버스 상에서 비교적 많은 양의 대역폭을 요구하는데, 그 이유는 이들의 기능들에는 많은 양의 데이터가 필요하기 때문이다.
컴포넌트의 수를 줄이면서도, 컴포넌트들 간의 효율적인 데이터 전송을 제공하는 아키텍쳐를 제공하는 것이 바람직하다. 예를 들어, 브리지 집적 회로(IC)의 비용은 비교적 비싸다. 또한, 전형적인 브리지 IC의 사이즈는 그래픽 처리 유닛(GPU)의 사이즈에 필적하여, 부가적인 프린트 회로 기판 영역을 필요로 하고, 층의 수를 부가할 수 있다. 브리지 IC들은 또한 전력, 스트랩(strap), 클럭 및 가능하게는 판독 전용 메모리(ROM)를 위한 부가적인 주변 컴포넌트들을 필요로 한다.
도 1은 주변 컴포넌트들을 갖는 종래의 프로세싱 시스템의 블록도이다.
도 2는 일 실시예에 따른, 멀티플렉스된 주변 컴포넌트 버스를 갖는 멀티-프로세서 시스템의 일부분들의 블록도이다.
도 3은 일 실시예에 따른, 주변 컴포넌트들을 갖는 프로세싱 시스템의 일부분들의 블록도이다.
도 4는 일 실시예에 따른, 주변 컴포넌트들을 갖는 프로세싱 시스템의 보다 상세화된 블록도이다.
도 5는 하나의 버스 엔드포인트가 내부 브리지를 포함하는 일 실시예의 블록도이다.
도 6은 2개 이상의 버스 엔드포인트들(이들 각각이 내부 브리지를 포함한다)을 포함하는 일 실시예의 블록도이다.
도 7은 일 실시예에 따른, 시스템 내의 다양한 컴포넌트들의 시각(perspective)으로부터의 메모리 공간의 시야(view)들을 도시하는 블록도이다.
여기에서는, 멀티-프로세서 아키텍쳐 및 방법의 실시예가 설명된다. 실시예들은 외부 브리지 집적 회로(IC) 아키텍쳐의 이용에 대한 대안을 제공한다. 예를 들어, 일 실시예는 주변 버스를 멀티플렉싱하여, 다수의 프로세서들이 외부 브리지 IC를 필요로 하지 않으면서 하나의 주변 인터페이스 슬롯(peripheral interface slot)을 이용할 수 있도록 한다. 다른 실시예들은, 적어도 하나의 버스 엔드포인트 내부의 호스트 버스 브리지를 통해 버스 루트(bus root)에 결합되는 다수의 버스 엔드포인트들을 갖는 시스템을 포함한다. 또한, 이러한 버스 엔드포인트들은 서로에 대해 직접 결합된다. 실시예들은 알려진 버스 프로토콜들과 이용될 수 있다.
도 2는 일 실시예에 따른, 멀티플렉스된 주변 컴포넌트 버스를 갖는 멀티-프로세서 시스템(700)의 일부분들의 블록도이다. 본 예시적인 시스템에서는, 2개의 GPU들, 즉 마스터 GPU(702A) 및 슬레이브 GPU(702B)가 있다. 각 GPU(702)는 16개의 PCI 익스프레스(PCIe
Figure 112011033030634-pct00002
) 전송(TX) 레인들(lanes) 및 16개의 PCIe
Figure 112011033030634-pct00003
수신(RX) 레인들을 갖는다. 각 GPU(702)는 각각의 데이터 링크 계층(706) 및 각각의 물리 계층(PHY)(704)을 포함한다. GPU(702A)의 TX/RX 레인들중 8개는 ×16 PCIe
Figure 112011033030634-pct00004
커넥터(connector), 즉 슬롯(708)의 TX/RX 레인들의 절반(half)에 연결된다. GPU(702B)의 TX/RX 레인들중 8개는 ×16 PCIe
Figure 112011033030634-pct00005
커넥터, 즉 슬롯(708)의 나머지 TX/RX 레인들에 연결된다. GPU(702A) 및 GPU(702B) 각각의 나머지 TX/RX 레인들은 서로 연결됨으로써, GPU들(702) 간에 직접적인 고속의 연결을 제공한다.
(일반적으로 하나의 GPU를 향하는) PCIe
Figure 112011033030634-pct00006
×16 슬롯(708)은 2개의 부분들로 나뉜다. 슬롯의 절반은 GPU(702A)에 연결되고, 나머지 절반은 GPU(702B)에 연결된다. 기본적으로, 각 GPU(702)는 다른 하나의 GPU(702)에 데이터의 나머지 절반을 에코백(echo back)한다. 즉, 어느 한쪽의 GPU에 의해 수신되는 데이터는 나머지 하나에 포워딩(forwarding)된다. 각 GPU(702)는 PCIe
Figure 112011033030634-pct00007
버스에 의해 수신되는 모든 데이터를 확인(see)하며, 그리고 각 GPU는 요청 또는 코멘트(comment)에 응답하도록 되어 있는 지를 내부적으로 결정한다. 그런 다음, 각 GPU(702)는 적절히 응답하거나, 또는 아무것도 하지 않는다. "Reset"과 같은 어떠한 데이터 또는 커맨드들은 모든 GPU들(702)에 적용될 수 있다.
시스템 레벨의 관점(point of view)으로부터, 또는 주변 버스의 관점으로부터, PCIe
Figure 112011033030634-pct00008
버스 상에는 단지 하나의 PCIe
Figure 112011033030634-pct00009
로드(load)(디바이스) 만이 있다. GPU(702A) 또는 GPU(702B)는 어드레스에 기초하여 액세스된다. 예를 들어, 어드레스 도메인 액세스(Address Domain Access)에 대해, 마스터 GPU(702A)는 어드레스 도메인의 절반을 할당받을 수 있고, 슬레이브 GPU(702B)는 나머지 절반을 할당받을 수 있다. 시스템은 마스터/슬레이브 모드에서, 또는 싱글/멀티(Single/Multi) GPU 모드들에서 동작할 수 있으며, 이러한 모드들은 스트랩에 의해 식별될 수 있다.
다양한 데이터 경로들은 참조 부호들에 의해 식별된다. 기준 클럭(REF CLK) 경로는 711에 의해 표시된다. 8-레인 RX-2 경로는 709에 의해 표시된다. 8-레인 RX-1 경로는 713에 의해 표시된다. 8-레인 TX-1 경로는 715에 의해 표시된다. 제어 신호들(710)은 스트랩들과 같은 비(non)-PCIe
Figure 112011033030634-pct00010
신호들이다. 각 GPU(702) 내의 PHY(704)는 적절한 레인 또는 채널에 데이터를 에코한다. 레인 연결(lane connection)은, 실리콘 설계를 최적화하고, 그리고/또는 16개 미만의 레인들을 갖는 PCIe
Figure 112011033030634-pct00011
슬롯들을 지원하는 것을 촉진하는 순서(order)로 이루어질 수 있다. 2개의 GPU들이 시스템의 예로서 나타나있지만, 아키텍쳐는 n-GPU들까지 확장(scale)될 수 있다. 또한, GPU들(702)은 설명되는 바와 같이 결합될 수 있는 주변 컴포넌트의 하나의 예이다. 시스템 내에서 주변 컴포넌트 버스와 정상적으로 통신하는 임의의 다른 주변 컴포넌트들도 유사하게 결합될 수 있다.
도 3은 일 실시예에 따른, 주변 컴포넌트들을 갖는 프로세싱 시스템(200)의 일부분들의 블록도이다. 시스템(200)은 도 1의 버스 루트(102)와 유사한 버스 루트(202)를 포함한다. 일 실시예에서, 버스 루트(202)는 CPU 및 시스템 메모리를 포함하는 칩셋이다. 버스 루트(202)는 버스(209)를 통해 엔드포인트 EP0(206a)에 결합되며, 이 EP0(206a)은 내부 브리지(205a)를 포함한다. 일 실시예에서, 버스(209)는 PCI 익스프레스(PCIe
Figure 112011033030634-pct00012
) 버스이지만, 실시예들은 오직 이것으로만 한정되지 않는다. EP0(206a)은 다른 엔드포인트 EP1(206b)에 결합된다. EP1(206b)은 내부 브리지(205b)를 포함한다. EP0(206a) 및 EP1(206b)의 각각의 브리지는 버스(207)에 의해 연결되어 있다. EP1(206b)은 자신의 브리지(205b)를 통해 버스(211)를 경유하여 루트(202)에 결합된다. 엔드포인트들 EP0(206a) 및 EP1(206b)은 각각의 로컬 메모리들(208a 및 208b)을 포함한다. 루트(202)의 시각에서, 209 및 211은 표준의 양방향성 포인트 투 포인트 데이터 링크의 송신 레인과 수신 레인을 각각 형성한다.
일 실시예에서, EP0(206a) 및 EP1(206b)은 동일하다. 하기에서 더 설명되는 바와 같이, 다양한 실시예들에서, 브리지(205b)는 반드시 필요한 것은 아니지만, 2개의 다른 버전(version)들을 제조하는 것이 아니라, 가령 GPU의 하나의 버전과 같은 엔드포인트의 하나의 버전을 나타내고자 하는 목적으로 포함된 것이다. 주목할 사항으로서, EP0은 이를 버스들(209 및 207)을 통해 루트(202)에 직접 연결함으로써 독립형(standalone)으로 이용될 수 있으며, 그리고 유사하게, EP1은 이를 버스들(207 및 211)을 통해 루트(202)에 직접 연결함으로써 독립형으로 이용될 수 있다.
브리지(205)를 포함하게 되면, EP0 및 EP1이 모두 존재할 때에 도 1의 브리지(104)와 같은 외부 브리지를 필요로 하지 않게 된다. 도 1의 "Y" 또는 "T" 형성과 대조적으로, 시스템(200)은 데이터를 루프 내에서 (이 경우에는, 시계 방향으로) 이동시킨다. 왼쪽의 엔드포인트 EP0은 오른쪽의 엔드포인트 EP1에 데이터를 직접 전송할 수 있다. EP1로부터 EP0으로의 리턴 경로(return path)는 루트(202)를 통해 있다. 이와 같이, 루트는 EP1로부터 오는 데이터 패킷을 EP0 쪽으로 반사(reflect)시킬 수 있는 능력을 갖는다. 다시 말해, 이러한 아키텍쳐는 루트 트랜잭션에 대하여 엔드포인트들에 대해 이용되는 것과 동일한 쌍의 와이어(wire)들 상에 피어 투 피어 트랜잭션(peer-to-peer transaction)의 외관(appearance)을 제공한다.
EP0(206a) 및 EP1(206b)은 또한 전형적인 구성으로 동작하도록 구성가능하다. 즉, EP0(206a) 및 EP1(206b) 각각은 버스들(209 및 211)을 통해 루트(202)와 직접 통신하도록 구성가능하며, 이러한 구성에서 버스들(209 및 211) 각각은 양방향성이다.
도 4는 일 실시예에 따른, 주변 컴포넌트들을 갖는 프로세싱 시스템의 보다 상세화된 블록도이다. 시스템(300)은 시스템(200)과 유사하지만, 부가적인 상세사항들이 나타나있다. 시스템(300)은 시스템 메모리(303)에 결합되는 버스 루트(302)를 포함한다. 이 버스 루트(302)는 또한 버스(309)를 통해 엔드포인트(305a)에 결합된다. 특정 실시예의 설명을 위해, 엔드포인트들(305a 및 305b)은 GPU들이지만, 실시예들은 오직 이것들로만 한정되지 않는다. GPU0(305a)은 다수의 클라이언트들을 포함한다. 클라이언트들은 작업(task)들을 수행하기 위한 논리(logic)(이를 테면, 쉐이더 유닛들(shader units) 및 디코드 유닛)를 포함한다. 클라이언트들은 버스 인터페이스(I/F) 논리를 통해 내부 브리지에 결합되어, GPU에 의해 수행되는 모든 판독 동작들 및 기록 동작들을 제어한다.
GPU0(305a)은, GPU0(305a)의 내부 브리지로부터 GPU1(305b)의 내부 브리지까지의 버스(307)를 통해 GPU1(305b)에 결합된다. 일 실시예에서, GPU1(305b)은 GPU0(305a)와 동일하며, 다수의 클라이언트들, 내부 브리지 및 I/F 논리를 포함한다. 전형적으로, 각 GPU는 (종종 GDDR DRAM으로서 구현되는) 전용의(dedicated) 로컬 메모리 유닛에 연결된다. GPU1(305b)은 버스(311)를 통해 버스 루트(302)에 결합된다. 일 실시예에서, 화살표들로 나타낸 바와 같이, 데이터 및 다른 메시지들(이를 테면, 판독 요청 및 완료(read requests and completions))는 시계 방향 루프로 버스 루트(302)로부터 GPU0(305a)으로 그리고 GPU1(305b)로 흐른다.
다른 실시예들에서, GPU들(305)중 하나는 브리지를 포함하지 않는다. 또 다른 실시예들에서, 데이터는 시계 방향이 아닌 시계 반대 방향으로 흐른다.
일 실시예에서, 데이터 라우팅(data routing)을 결정하는 프로토콜(protocol)은, 아키텍쳐가 도 1의 아키텍쳐와 동일하게 보이도록 하는 방식으로 통신된다. 특히, 305b 내의 브리지는 링크(307) 상에서 브리지(305a)에 대해 업스트림 포트(upstream port)로서 보여야 하는 반면, 305a 내의 브리지 상의 대응하는 어태치 포인트(attach point)는 링크(309) 상에서 루트(302)에 대해 다운스트림 포트(downstream port)로서 보여야 한다. 또한, 내장되는 브리지(embedded bridge)는 자신의 유입 링크(incoming link) 상에서 수신하는 모든 요청들에 대한 리턴 경로로서 자신의 유출 링크(outgoing link)를 확인할 수 있어야 하는데, 이러한 2개의 링크들의 물리적인 라우팅이 다른 경우에도 확인할 수 있어야 한다. 이는, 각 GPU에 대해 체인 모드 구성 스트랩(Chain Mode configuration strap)의 상태를 설정함으로써 달성된다. 만일 스트랩이 0으로 설정되면, 브리지는 전송 링크와 수신 링크가 모두 업스트림 포트 쪽(루트 컴플렉스(root complex) 또는 브리지 디바이스)인 것으로 간주한다. 만일 스트랩이 1로 설정되면, 브리지는 데이지 체인 구성(daisy-chain configuration)인 것으로 간주한다.
다른 실시예에서, 루트의 피어 투 피어 브리징 기능은 2-단계 프로세스인데, 이러한 프로세스에 따라, GPU1(305b)은 시스템 메모리(303) 또는 버퍼에 데이터를 기록한다. 그런 다음, 개별적인 동작으로서, GPU0(305a)은 버스 루트(302)를 통해 데이터를 리드백(read back)한다.
버스 루트(302)는, 내부 브리지가 (도 1에서와 같이) 외부 브리지인것 처럼, 정상적으로 요청들에 응답한다. 일 실시예에서, GPU1(305b)의 브리지가 와이어(wire)로서 보이고, 단순히 데이터를 통과시키도록 구성되는 동안, GPU0(305a)의 브리지는 액티브(active) 상태가 되도록 구성된다. 이에 의해, 버스 루트(302)는 버스들(309 및 311)을 보통의 주변 장치 상호 연결 버스로서 간주할 수 있게 된다. 버스 루트가 GPU0(305a)의 브리지로부터 판독할 때, 이 브리지는, 데이터가 GPU0(305a)으로부터 직접 오는 것 처럼, GPU1(305b)의 브리지를 통과하여 버스 루트(302)로 리턴되도록 데이터를 전송한다.
도 5는 다수의 버스 엔드포인트들중 하나가 내부 브리지를 포함하는 시스템(400)의 블록도이다. 이 시스템(400)은 버스 루트(402) 및 EP0(406a)을 포함하며, EP0(406a)은 브리지(405a)를 포함한다. EP0(406a)은 브리지(405a)를 통해 버스(409)를 경유하여 루트(402)에 결합되며, 그리고 브리지(405a)를 통해 버스(407)를 경유하여 EP1(406b)에도 결합된다. 각 엔드포인트들 EP0(406a) 및 EP1(406b)은 각각의 로컬 메모리들(408a 및 408b)을 포함한다.
도 6은 2개 보다 많은 버스 엔드포인트들(각각 내부 브리지를 포함한다)을 포함하는 시스템(500)의 블록도이다. 시스템(500)은 버스 루트(502) 및 EP0(506a)을 포함하며, 이 EP0(506a)은 브리지(505a) 및 로컬 메모리(508a)를 포함한다. 시스템(500)은 또한, 브리지(505b) 및 로컬 메모리(508b)를 포함하는 EP1(506b)와, 브리지(505c) 및 로컬 메모리(508c)를 포함하는 EP2(506c)를 더 포함한다.
EP0(506a)은 브리지(505a)를 통해 버스(509)를 경유하여 루트(502)에 결합되며, 그리고 버스(507a)를 경유하여 브리지(505b)를 통해 EP1(506b)에 결합된다. EP1(506b)은 버스(507b)를 경유하여 브리지(505c)를 통해 EP2(506c)에 결합된다. 다른 실시예들은 부가적인 엔드포인트들을 포함하는데, 이들은 링 구성(ring configuration) 내에 부가된다. 다른 실시예들에서, 이러한 시스템은 2개 보다 많은 엔드포인트들(506)을 포함하지만, 가장 오른쪽의(rightmost) 엔드포인트는 내부 브리지를 포함하지 않는다. 또 다른 실시예들에서, 데이터의 흐름은 도면들에 나타낸 시계 방향과 반대인 반시계 방향으로 이루어진다.
도 4를 다시 참조하면, 일 실시예에 따르면, 내부 브리지 상에는 2개의 논리 포트들이 있다. 하나의 포트는 GPU0(305a)의 브리지 내에서 "온(on)"되고, 하나의 포트는 GPU1(305b)의 브리지 내에서 "오프(off)"된다. 버스 루트(302)는 버스(309) 상에 요청들을 전송함으로써 기록 동작들을 수행할 수 있다. 표준 어드레싱 방식은 브리지에게 버스 I/F에 요청을 전송할 것을 지시한다. 만일 이러한 요청이 GPU1(305b)에 대한 것이라면, 브리지는 그 요청을 버스(307)에 라우팅한다. 이에 따라, 일 실시예에서, GPU0(305a) 및 GPU1(305b)의 각각의 내부 브리지는 다르게 프로그램된다.
도 7은 다양한 컴포넌트들의 시각으로부터의 메모리 공간의 시야들 및 버스 어드레스 범위들의 분할을 도시하는 블록도이다. 도 4를 또한 참조하면, 602는 버스 루트, 또는 호스트 프로세서(302)의 시각으로부터 메모리를 본 것이다. 604는 GPU0(305a) 내부 브리지의 시각으로부터 메모리를 본 것이다. 606은 GPU1(305b) 내부 브리지의 시각으로부터 메모리를 본 것이다. 버스 어드레스 범위는 GPU0(305a), GPU1(305b) 및 시스템(302) 메모리 공간들에 대한 범위들로 분할된다. GPU0(305a) 브리지는, GPU0(305a) 범위에 대한 유입 요청들(incoming requests)이 그 자신의 로컬 메모리로 라우팅되도록 설정된다. 루트 또는 GPU0(305a) 자체로부터 GPU1(305b) 또는 시스템(302) 범위로의 유입 요청들은 GPU0(305a)의 출력 포트로 라우팅된다. GPU1(305b) 브리지는, GPU1(305b) 범위에 대한 유입 요청들이 그 자신의 로컬 메모리로 라우팅되도록 약간 다르게 설정된다. GPU0(305a) 또는 GPU1(305b) 자체로부터 루트 또는 GPU0(305a) 범위로의 유입 요청들은 GPU1(305b)의 출력 포트로 라우팅된다.
호스트는 버스 토폴로지(bus topology)를 도 1의 토폴로지와 같은 것으로서 간주한다. GPU1(305b)은 그 자신의 브리지를 통해 호스트 프로세서(302)에 대한 그 자신의 요청들을 구성한 다음, 호스트 프로세서(302)에 전달한다. 호스트 프로세서(302)가 요청을 리턴시킬 때, 이 요청은 GPU0(305a)의 브리지를 통과하게 되는데, 이러한 브리지는 요청들 및 데이터가 어디로 라우팅될 것인 지를 결정하는 논리를 갖는다.
GPU1(305b)로부터 GPU0(305a)로의 기록 동작들은 2 패스(pass)로 수행될 수 있다. GPU1(305b)은 시스템 메모리(303) 내의 메모리 위치에 데이터를 전송한다. 그런 다음, 개별적으로, GPU0(305a)은 시스템 메모리(303) 내에 데이터가 있다는 것을 알게 된 후에 그 데이터를 판독한다.
데이터 판독 요청들(read data requests) 및 다른 분할 트랜잭션 동작들(split-transation operations)에 대한 완료 메시지들(completion messages)은 상기 요청들과 동일한 방향으로 와이어들을 따라 이동해야 한다. 따라서, 상기 설명한 어드레스 기반의 요청 라우팅(address-based request routing)에 부가하여, 디바이스 기반의 라우팅(device-based routing)이 유사한 방식으로 설정되어야 한다. 예를 들어, GPU0(305a)의 내부 브리지는 요청들 및 완료 메시지들 모두에 대한 경로가 버스(307)를 경유함을 인식한다.
일 실시예는 부하가 적은 이용(lightly loaded usage)의 경우에 있어서 전력 이용을 개선하기 위한 전력 관리(power management)를 포함한다. 예를 들어, 그래픽 처리가 적은 이용의 경우, GPU1(305b)의 논리는 파워 오프되고, GPU1(305b)의 브리징 기능은 입력 포트로부터 출력 포트로의 단순한 통과 기능(passthrough function)으로 감소된다. 또한, GPU0(305a)의 기능은 입력 포트로부터 출력 포트로 라우팅되는 전송들을 처리하지 않도록 감소된다. 일 실시예에서는, GPU1(305b) 내에 브리징 기능을 위한 개별적인 파워 서플라이가 있다. 소프트웨어는 파워를 다운시키는 조건들을 검출한다. 실시예들은 개별적인 전력 조정기(power regulator) 그리고/또는 브리지들을 위한 개별적인 내부 전력원들을 포함하는데, 이들은 디바이스 상의 논리의 나머지 것들과 별개로 파워 다운된다.
상기 설명한 전력 관리를 포함하지 않는 실시예들에서 조차도, 시스템 기판 영역(system board area)이 보존(conservation)되는데, 이는 (도 1에서와 같은) 외부 브리지가 요구되지 않기 때문이다. 외부 브리지 및 그 핀들에 대해 요구되는 기판 영역 및 전력이 보존된다. 한편, GPU들 각각이 그 자신의 내부 브리지를 구비할 것이 요구되지 않는다. 다른 실시예에서, GPU1(305b)는, 도 5와 관련하여 설명된 바와 같이, 내부 브리지를 갖지 않는다.
시스템(300)의 아키텍쳐는, 애드인(add-in) 회로 기판들을 위한 다수의 슬롯들을 포함하는 시스템에서 특히 실용적이다. 대안적으로, 시스템(300)은 이동 디바이스와 같은 솔더형 시스템(soldered system)이다.
버스들(307, 309 및 311)은 PCIe
Figure 112011033030634-pct00013
버스들 또는 다른 어떠한 타입의 유사한 주변 인터커넥트 버스가 될 수 있다.
여기에서 설명되는 임의의 회로들은, 제조 프로세스들의 제어 및 이후 적절한 회로를 제조하는 데에 이용되는 마스크워크들(maskworks)을 통해 구현될 수 있다. 이러한 제조 프로세스의 제어 및 마스크워크의 발생(generation)은 당업자에게 잘 알려져 있으며, 예를 들어, Verilog, VHDL, 또는 다른 하드웨어 기술 랭귀지(hardware description language)들의 명령어들을 포함하는 컴퓨터 명령어들을 컴퓨터 판독가능한 매체 상에 저장하는 것을 포함한다.
본 발명의 실시예들은 주변 컴포넌트 버스(peripheral component bus)에 결합되는 주변 컴포넌트 커넥터(peripheral component connector)와; 그리고 복수의 각각의 송/수신(TX/RX) 레인들을 통해 상기 주변 컴포넌트 커넥터에 직접 결합되는 복수의 주변 컴포넌트들을 포함하는 시스템을 포함하며, 상기 복수의 주변 컴포넌트들은, 상기 주변 컴포넌트 버스에게는, 상기 주변 컴포넌트 커넥터에 결합되는 하나의 주변 디바이스로서 보이게 된다.
일 실시예에서, 상기 복수의 주변 컴포넌트들은 또한 각각의 송/수신(TX/RX) 레인들을 통해 서로에게 직접 결합된다.
일 실시예에서, 상기 복수의 주변 컴포넌트들중 적어도 하나는 그래픽 처리 유닛(graphics processing unit, GPU)이다.
일 실시예에서, 상기 주변 컴포넌트 커넥터는 PCI 익스프레스(peripheral component interconnect express)(PCIe
Figure 112011033030634-pct00014
) 슬롯이며, 상기 주변 컴포넌트 버스는 PCIe
Figure 112011033030634-pct00015
버스이다.
일 실시예에서, 각 주변 컴포넌트는, 상기 주변 컴포넌트 커넥터를 통해, 전송되는 모든 데이터를 수신하고, 어떤 데이터가 적용가능한지를 결정하도록 구성된다.
일 실시예에서, 각 주변 컴포넌트는 자신에 의해 수신되는 모든 데이터를 나머지 주변 컴포넌트들에게 포워딩한다.
일 실시예에서, 상기 주변 컴포넌트들 각각은 어드레스에 기초하여 액세스된다.
본 발명의 실시예들은 멀티-프로세서 방법을 포함하는 바, 이 방법은 복수의 프로세서들을 주변 버스에 그 버스의 송/수신(TX/RX) 레인들의 각각의 그룹을 통해 결합하는 단계와; 상기 복수의 프로세서들을 상기 버스에 결합되지 않은 상기 복수의 프로세서들의 나머지 TX/RX 레인들 각각에 결합하는 단계와; 상기 버스로부터 상기 복수의 프로세서들에 데이터를 직접 전송하는 단계와, 여기서 상기 복수의 프로세서들 각각은 어드레스가능하며; 그리고 상기 프로세서들 간에 데이터를 직접 전송하는 단계를 포함한다.
일 실시예에서, 상기 복수의 프로세서들은 그래픽 처리 유닛(GPU)을 포함한다.
일 실시예에서, 상기 복수의 프로세서들은 복수의 GPU들을 포함하며, 상기 주변 버스는 상기 GPU들이 직접 결합되는 PCI 익스프레스(PCIe
Figure 112011033030634-pct00016
) 버스를 포함한다.
일 실시예에서, 상기 방법은 각각의 TX/RX 레인들을 통해 서로 직접 통신하는 GPU들을 결합하는 단계를 더 포함한다.
일 실시예에서, 상기 방법은 GPU가 버스로부터 데이터를 수신하고, 나머지 GPU들에게 그 데이터를 전송하는 단계를 더 포함한다.
본 발명의 실시예들은, 주변 컴포넌트 버스에 결합되는 주변 컴포넌트 커넥터와; 그리고 복수의 각각의 송/수신(TX/RX) 레인들을 통해 상기 주변 컴포넌트 커넥터에 직접 결합되는 복수의 주변 컴포넌트들을 포함하는 회로의 제조를 가능하게 하는 컴퓨터 판독가능한 명령어들을 저장하고 있는 컴퓨터 판독가능한 매체를 포함하며, 여기서 상기 복수의 주변 컴포넌트들은, 상기 주변 컴포넌트 버스에게는, 상기 주변 컴포넌트 커넥터에 결합되는 하나의 주변 디바이스로서 보이게 되며, 상기 복수의 주변 컴포넌트들은 또한 각각의 송/수신(TX/RX) 레인들을 통해 서로 직접 결합된다.
일 실시예에서, 상기 명령어들은 하드웨어 기술 랭귀지 명령어들을 포함한다.
본 발명의 실시예들은, 멀티-프로세서 시스템에서 실행될 때, 복수의 프로세서들을 주변 버스에 그 버스의 송/수신(TX/RX) 레인들의 각각의 그룹을 통해 결합하는 단계와; 상기 복수의 프로세서들을 상기 버스에 결합되지 않은 상기 복수의 프로세서들의 나머지 TX/RX 레인들 각각에 결합하는 단계와; 상기 버스로부터 상기 복수의 프로세서들에 데이터를 직접 전송하는 단계와, 여기서 상기 복수의 프로세서들 각각은 어드레스가능하며; 그리고 상기 프로세서들 간에 데이터를 직접 전송하는 단계를 포함하는 방법을 수행하는 명령어들을 저장하고 있는 컴퓨터 판독가능한 매체를 포함한다.
일 실시예에서, 상기 복수의 프로세서들은 그래픽 처리 유닛(GPU)을 포함한다.
일 실시예에서, 상기 복수의 프로세서들은 복수의 GPU들을 포함하며, 상기 주변 버스는 상기 GPU들이 직접 결합되는 PCI 익스프레스(PCIe
Figure 112011033030634-pct00017
) 버스를 포함한다.
일 실시예에서, 상기 방법은 각각의 TX/RX 레인들을 통해 서로 직접 통신하는 GPU들을 결합하는 단계를 더 포함한다.
일 실시예에서, 상기 방법은 GPU가 버스로부터 데이터를 수신하고, 나머지 GPU들에게 그 데이터를 전송하는 단계를 더 포함한다.
본 발명의 실시예들은, 버스를 통해 주변 컴포넌트들과 통신하도록 구성가능한 중앙 처리 유닛을 구비하고 있는 버스 루트(bus root)와; 그리고 상기 버스 루트에 직접 결합되고 제 2 주변 컴포넌트에 직접 결합되는 제 1 주변 컴포넌트를 포함하는 시스템을 포함하며, 여기서 상기 제 1 주변 컴포넌트는 데이터를 수신하고 데이터를 전송하도록 구성가능한 내부 브리지(internal bridge)를 포함하고, 상기 데이터를 수신하고 전송하는 것은 제 1 주변 컴포넌트와 제 2 주변 컴포넌트 간의 직접 통신을 포함한다.
일 실시예에서, 상기 제 1 주변 컴포넌트와 제 2 주변 컴포넌트는 각각 데이터를 전송 및 수신하기 위해 상기 버스 루트와 직접 통신하도록 구성가능하다.
일 실시예에서, 상기 데이터를 수신하고 전송하는 것은 상기 제 2 주변 컴포넌트로부터 상기 버스 루트를 통해 상기 제 1 주변 컴포넌트에 요청들 및 데이터를 전송하는 것을 더 포함한다.
일 실시예에서, 상기 데이터를 수신하고 전송하는 것은 상기 제 1 주변 컴포넌트로부터 상기 제 1 주변 컴포넌트의 내부 브리지를 통해 상기 제 2 주변 컴포넌트에 요청들 또는 데이터를 전송하는 것을 더 포함한다.
일 실시예에서, 상기 버스 루트는 기록 동작들을 수행하도록 구성가능하며, 상기 제 2 주변 컴포넌트에 대한 기록 동작은, 상기 버스 루트가 상기 제 1 주변 컴포넌트의 내부 브리지에 기록 요청을 전송하고, 상기 제 1 주변 컴포넌트의 내부 브리지가 상기 기록 요청을 상기 제 2 주변 컴포넌트에 직접 전송하는 것을 포함한다.
일 실시예에서, 상기 기록 요청은 상기 제 2 주변 컴포넌트의 내부 버스 인터페이스에 의해 수신된다.
일 실시예에서, 상기 버스 루트는 기록 동작들을 수행하도록 구성가능하며, 제 1 주변 컴포넌트에 대한 기록 동작은, 상기 버스 루트가 브리지에 기록 요청을 전송하고, 상기 브리지가 상기 제 1 주변 컴포넌트의 내부 버스 인터페이스에 기록 요청을 전송하는 것을 포함한다.
일 실시예에서, 상기 버스 루트는 판독 동작들을 수행하도록 구성가능하며, 제 1 주변 컴포넌트에 대한 판독 동작은, 상기 버스 루트가 브리지에 판독 요청을 전송하고, 상기 브리지가 상기 제 1 주변 컴포넌트의 내부 버스 인터페이스에 판독 요청을 전송하는 것을 포함한다.
일 실시예에서, 상기 버스 루트는 판독 동작들을 수행하도록 구성가능하며, 제 2 주변 컴포넌트에 대한 판독 동작은, 상기 버스 루트가 브리지에 판독 요청을 전송하고, 상기 브리지가 상기 제 2 주변 컴포넌트의 내부 버스 인터페이스에 판독 요청을 직접 전송하는 것을 포함한다.
일 실시예에서, 상기 브리지는 수신되는 기록 요청들, 수신되는 판독 요청들 및 수신되는 데이터에 대한 라우팅을 결정하도록 구성가능한 논리를 포함한다.
일 실시예에서, 상기 제 2 주변 컴포넌트는 내부 브리지를 포함하는 바, 이 내부 브리지는 데이터를 수신하고 데이터를 전송하도록 구성가능하며, 또한 이 내부 브리지가 데이터를 수신하고 데이터를 전송하는 데에 이용되지 않을 때에는 파워다운되도록 구성가능하다.
일 실시예에서, 상기 제 2 주변 컴포넌트는 상기 내부 브리지의 이용을 위한 전용 전력원(dedicated power source)을 더 포함한다.
일 실시예에서, 상기 제 1 주변 컴포넌트 및 제 2 주변 컴포넌트는 각각 그래픽 처리 유닛(GPU)을 포함한다.
일 실시예에서, 상기 제 1 주변 컴포넌트 및 제 2 주변 컴포넌트 각각은, 각각의 버스 인터페이스들에 결합되는 각각의 다수의 클라이언트들을 더 포함하며, 상기 클라이언트들은 쉐이더 유닛들 및 엔코더/디코더 유닛들을 구비하는 비디오 처리 논리를 포함한다.
본 발명의 실시예들은 멀티-프로세서 시스템 내에서 통신하는 방법을 포함하며, 이 방법은 버스 루트가 제 1 주변 컴포넌트에 요청들을 직접 전송하는 단계와, 여기서 상기 요청들은 판독 요청들 및 기록 요청들을 포함하고; 상기 제 1 주변 컴포넌트가 제 1 버스를 통해 상기 제 1 주변 컴포넌트의 내부 브리지에서 상기 요청들을 수신하는 단계와; 그리고 상기 내부 브리지가 상기 요청들에 대한 적절한 라우팅을 결정하는 단계를 포함하며, 여기서 상기 적절한 라우팅은, 제 2 주변 컴포넌트로 향하는 요청들을 상기 브리지로부터 제 2 버스를 통해 상기 제 2 주변 컴포넌트의 버스 인터페이스에 직접 라우팅하며, 그리고 제 1 주변 컴포넌트로 향하는 요청들을 상기 제 1 주변 컴포넌트의 버스 인터페이스에 라우팅하는 것을 포함한다.
일 실시예에서, 상기 방법은, 제 3 버스를 통해 상기 버스 루트에 데이터를 직접 전송함으로써, 상기 제 2 주변 컴포넌트가 판독 요청에 응답하는 단계를 더 포함한다.
일 실시예에서, 상기 방법은, 상기 제 2 주변 컴포넌트가 상기 제 2 주변 컴포넌트의 내부 브리지 내에서 요청들을 수신하는 단계를 더 포함한다.
일 실시예에서, 상기 방법은, 상기 제 1 주변 컴포넌트가 상기 제 2 버스를 통해 상기 제 2 주변 컴포넌트에 판독 요청을 전송하는 단계와; 상기 제 2 주변 컴포넌트가 상기 판독 요청에 응답하여 상기 제 3 버스를 통해 상기 버스 루트에 데이터를 전송하는 단계와; 그리고 상기 버스 루트가 상기 데이터를 상기 제 1 버스를 통해 상기 브리지에 전송하는 단계를 더 포함한다.
본 발명의 실시예들은, 멀티-프로세서 시스템에 의해 실행될 때, 버스 루트가 제 1 주변 컴포넌트에 요청들을 직접 전송하는 단계와, 여기서 상기 요청들은 판독 요청들 및 기록 요청들을 포함하고; 상기 제 1 주변 컴포넌트가 제 1 버스를 통해 상기 제 1 주변 컴포넌트의 내부 브리지에서 상기 요청들을 수신하는 단계와; 그리고 상기 내부 브리지가 상기 요청들에 대한 적절한 라우팅을 결정하는 단계를 포함하는 통신 방법을 수행하는 명령어를 저장하고 있는 컴퓨터 판독가능한 매체를 포함하며, 여기서 상기 적절한 라우팅은, 제 2 주변 컴포넌트로 향하는 요청들을 상기 브리지로부터 제 2 버스를 통해 상기 제 2 주변 컴포넌트의 버스 인터페이스에 직접 라우팅하며, 그리고 제 1 주변 컴포넌트로 향하는 요청들을 상기 제 1 주변 컴포넌트의 버스 인터페이스에 라우팅하는 것을 포함한다.
일 실시예에서, 상기 방법은, 제 3 버스를 통해 상기 버스 루트에 데이터를 직접 전송함으로써, 상기 제 2 주변 컴포넌트가 판독 요청에 응답하는 단계를 더 포함한다.
일 실시예에서, 상기 방법은, 상기 제 2 주변 컴포넌트가 상기 제 2 주변 컴포넌트의 내부 브리지 내에서 요청들을 수신하는 단계를 더 포함한다.
일 실시예에서, 상기 방법은, 상기 제 1 주변 컴포넌트가 상기 제 2 버스를 통해 상기 제 2 주변 컴포넌트에 판독 요청을 전송하는 단계와; 상기 제 2 주변 컴포넌트가 상기 판독 요청에 응답하여 상기 제 3 버스를 통해 상기 버스 루트에 데이터를 전송하는 단계와; 그리고 상기 버스 루트가 상기 데이터를 상기 제 1 버스를 통해 상기 브리지에 전송하는 단계를 더 포함한다.
일 실시예에서, 상기 명령어들은 상기 방법을 수행하기 위해 ASIC(application specific integrated circuit)를 생성하는 데에 이용가능한 하드웨어 기술 랭귀지 명령어들을 포함한다.
상기 설명한 실시예들의 양상들은, 필드 프로그램가능한 게이트 어레이(FPGA)들과 같은 프로그램가능한 논리 디바이스(PLD)들, 프로그램가능한 어레이 논리(PAL) 디바이스들, 전기적으로 프로그램가능한 논리 및 메모리 디바이스들, 및 표준의 셀 기반 디바이스들 뿐 아니라, ASIC들 및 완전 주문형의 집적 회로들을 포함(하지만, 오직 이것들로만 한정되지 않는다)하는 다양한 회로중 임의의 회로 내에 프로그램되는 기능(functionality)으로서 구현될 수 있다. 상기 실시예들의 양상들을 구현하는 몇몇 다른 가능성들은 (전자적으로 소거가능하고 프로그램가능한 판독 전용 메모리(EEPROM), 플래시 메모리 등과 같은) 메모리를 갖는 마이크로컨트롤러들, 내장된(embedded) 마이크로프로세서들, 펌웨어(firmware), 소프트웨어 등을 포함한다. 또한, 상기 실시예들의 양상들은 소프트웨어 기반의 회로 에뮬레이션(software-based circuit emulation)을 갖는 마이크로프로세서들, (순차(sequential) 및 결합형의(combinatorial)) 이산 논리(discrete logic), 주문형 디바이스들, 퍼지(fuzzy) (신경(neural)) 논리, 양자 디바이스들(quantum devices), 및 상기 디바이스 타입들의 임의의 것 또는 이들의 혼합 내에서 구현될 수 있다. 물론, 기초가 되는 디바이스 기술들은, 예를 들어 상보형 금속 산화물 반도체(CMOS)와 같은 금속 산화물 반도체 전계 효과 트랜지스터(MOSFET) 기술들, 에미터-결합형 논리(emitter-coupled logic, ECL)와 같은 바이폴라 기술들, 폴리머 기술들(예를 들어, 실리콘-컨쥬게이트된 폴리머(silicon-conjugated polymer) 및 금속-컨쥬게이트된 폴리머-금속 구조들), 혼합된 아날로그 및 디지털 등과 같은 다양한 컴포넌트 타입들에 제공될 수 있다.
명세서 및 청구항에서 이용되는 용어 "프로세서"는 프로세서 코어 또는 프로세서의 일부를 포함한다. 또한, 비록 여기에서는 통상적으로 하나 이상의 GPU들 및 하나 이상의 CPU들을 개별적으로 언급하였지만, 실시예들에서, GPU와 CPU 모두는 단일의 집적 회로 패키지 내에 또는 단일의 모놀리식 다이(monolithic die) 상에 포함된다. 따라서, 단일 디바이스가 이러한 실시예들에서 청구되는 방법을 수행한다.
문맥상 명백히 다르게 요구하지 않는 한, 명세서 및 청구항 전체에 걸쳐서, "포함하는(comprise)", "포함하고 있는(comprising)" 등의 단어들은, 배타적인 또는 속속들이 규명하는 의미와 반대인 포괄적인 의미로서, 즉 "포함하지만, 오직 이것으로만 한정되지는 않는"의 의미로서 해석되어야 한다. 단수 또는 복수의 숫자들을 이용하는 단어들 역시 복수 또는 단수의 숫자들을 각각 포함한다. 또한, "여기에서(herein)", "아래에(hereunder)", "상기에서(above)", "하기에서(below)"의 단어들 및 유사한 의미의 단어들이, 본 출원에서 이용될 때, 이들은 본 출원의 임의의 특정 부분들을 나타내는 것이 아니라, 본 출원을 전체로서 나타낸다. 2개 이상의 항목(item)들의 리스트와 관련하여 "또는"의 단어가 이용될 때, 이 단어는 이 단어에 대한 다음의 모든 해석들, 즉 리스트 내의 아이템들중 임의의 아이템, 리스트 내의 모든 아이템들, 및 리스트 내의 아이템들의 임의의 결합을 모두 포괄한다.
본 방법 및 시스템의 상기 예시적인 실시예들에 대한 설명은 속속들이 규명한 것으로서 또는 개시된 정확한 형태로 본 발명을 한정하는 것으로서 의도되지 않는다. 본원에서는 예시적인 목적을 위해 본 방법 및 시스템의 특정 실시예들 및 예들이 설명되었지만, 관련 분야의 당업자라면 등가의 다양한 변형들이 본 발명의 범위 내에서 가능하다는 것을 인식할 것이다. 여기에서 제공되는 교시들은, 상기 설명된 그래픽 처리 또는 비디오 처리를 포함하는 시스템들 뿐 아니라, 다른 시스템들에도 적용될 수 있다. 설명되는 다양한 동작들은 광범위한 아키텍쳐들 내에서 수행될 수 있으며, 설명된 것과 다르게 분산(distribution)될 수 있다. 또한, 비록 본원에서는 많은 구성들이 설명되었지만, 어떤 것도 제한적이거나 배타적인 것으로서 의도되지 않는다.
다른 실시예들에서, 본원에서 설명되는 하드웨어 및 소프트웨어 성능중 일부 또는 모두는 프린터, 카메라, 텔레비젼, DVD(digital versatile disc) 플레이어, DVR 또는 PVR, 포켓용 디바이스(handheld device), 이동 전화 또는 어떠한 다른 디바이스 내에 존재할 수 있다. 상기 설명된 다양한 실시예들의 요소들 및 행동(act)들을 결합하여, 다른 실시예들을 제공할 수 있다. 상기 상세한 설명에 비추어, 이러한 변경 및 다른 변경들이 본 방법 및 시스템에 대해 이루어질 수 있다.
일반적으로, 하기의 청구항들에서, 이용되는 용어들은 본 방법 및 시스템을 명세서 및 청구항들에 개시된 특정 실시예들로 한정하는 것으로 해석되서는 안되며, 청구항들 하에서 동작하는 모든 처리 시스템들 및 방법들을 포함하는 것으로서 해석되어야 한다. 이에 따라, 본 방법 및 시스템은 본 개시에 의해 한정되지 않으며, 본 방법 및 시스템의 범위는 전적으로 청구항들에 의해 결정되어야 한다.
본 방법 및 시스템의 어떠한 양상들이 어떠한 청구항 형태로 하기에서 제시되기는 하지만, 본 발명자들은 임의수의 청구항 형태로 본 방법 및 시스템의 다양한 양상들을 고려한다. 예를 들어, 본 방법 및 시스템의 단지 하나의 양상이 컴퓨터 판독가능한 매체로 구현되는 것으로서 기재되었지만, 다른 양상들 역시 컴퓨터 판독가능한 매체로 구현될 수 있다. 이러한 컴퓨터 판독가능한 매체는 컴퓨팅 디바이스(예를 들어 개인용 컴퓨터, 개인 휴대 정보 단말기(PDA), PVR, 이동 디바이스 등)에 의해 실행되는 명령어들을 저장하거나, 또는 실행될 때, 디바이스(GPU, ASIC 등)를 생성하도록 설계되는 명령어들(예를 들어, Verilog 또는 하드웨어 기술 랭귀지), 또는 동작될 때, 상기 설명한 양상들을 수행하는 소프트웨어 어플리케이션을 저장할 수 있다. 청구되는 발명은, GDSII 데이터(또는 그 등가)를 발생시키도록 생성, 저장, 합성(synthesize) 및 이용되는 컴퓨터 코드(예를 들어, HDL, Verilog 등)으로 구현될 수 있다. 그런 다음, 이러한 데이터에 기초하여 ASIC이 제조될 수 있다.
따라서, 본 발명자들은 본 방법 및 시스템의 다른 양상들에 대한 부가적인 청구항 형태들을 진행할 수 있도록 본 출원 이후에 부가적인 청구항들을 부가할 수 있는 권리를 지정한다.

Claims (19)

  1. 시스템으로서,
    버스를 통해 주변 컴포넌트들과 통신하도록 구성 가능한 버스 루트와, 상기 버스 루트는 상기 버스 루트와 통합되는 중앙처리 유닛 및 시스템 메모리를 포함하며; 그리고
    상기 버스 루트에 직접적으로 결합됨과 아울러 제 2 주변 컴포넌트에 직접적으로 결합되는 제 1 주변 컴포넌트를 포함하여 구성되며, 상기 제 1 주변 컴포넌트는 데이터를 송신 및 수신하도록 구성가능한 내부 브리지(internal bridge)를 포함하며, 상기 데이터를 송신 및 수신하는 것은 상기 제 1 주변 컴포넌트와 상기 제 2 주변 컴포넌트 사이에서의 직접적인 통신을 행하는 것을 포함하며,
    상기 데이터를 송신 및 수신하는 것은 상기 제 2 주변 컴포넌트로부터 요청 및 데이터를 상기 버스 루트를 통하거나 혹은 상기 제 1 주변 컴포넌트에의 직접적인 결합을 통하여 상기 제 1 주변 컴포넌트에 송신하는 것을 더 포함하는 것을 특징으로 하는 시스템.
  2. 제 1항에 있어서,
    상기 제 1 영역 컴포넌트와 상기 제 2 주변 컴포넌트는 각각, 데이터를 송신 및 수신하기 위해 상기 버스 루트와 직접적으로 통신하도록 더 구성가능한 것을 특징으로 하는 시스템.
  3. 제 1항에 있어서,
    상기 데이터를 송신 및 수신하는 것은 상기 제 1 주변 컴포넌트로부터 상기 제 2 주변 컴포넌트로의 요청 또는 데이터를 상기 제 1 주변 컴포넌트의 내부 브리지를 통해 상기 제 2 주변 컴포넌트로 전송하는 것을 더 포함하고;
    상기 버스 루트는 기록 동작들을 수행하도록 구성가능하고, 상기 제 2 주변 컴포넌트에의 기록 동작은 상기 버스 루트가 상기 내부 브리지에의 기록 요청을 상기 제 1 주변 컴포넌트에 전송하고, 상기 제 1 주변 컴포넌트의 내부 브리지가 상기 기록 요청을 상기 제 2 주변 컴포넌트에 직접 전송하는 것을 포함하며; 그리고
    상기 기록 요청은 상기 제 2 주변 컴포넌트의 내부 버스 인터페이스에 의해 수신되는 것을 특징으로 하는 시스템.
  4. 제 1항에 있어서,
    상기 버스 루트는 기록 동작들을 수행하도록 구성 가능하며, 상기 제 1 주변 컴포넌트에의 기록 동작은 상기 버스 루트가 상기 브리지에 기록 요청을 전송하고, 상기 브리지가 상기 제 1 주변 컴포넌트의 내부 버스 인터페이스에 상기 기록 요청을 전송하는 것을 포함하는 것을 특징으로 하는 시스템.
  5. 제 1항에 있어서,
    상기 버스 루트는 판독 동작을 수행하도록 구성 가능하며, 상기 제 1 주변 컴포넌트에의 판독 동작은 상기 버스 루트가 상기 브리지에 판독 요청을 전송하고 상기 브리지가 상기 판독 요청을 상기 제 1 주변 컴포넌트의 내부 버스 인터페이스에 전송하는 것을 포함하는 것을 특징으로 하는 시스템.
  6. 제 1항에 있어서,
    상기 버스 루트는 판독 동작들을 실행하도록 구성 가능하며, 상기 제 2 주변 컴포넌트에의 판독 동작은 상기 버스 루트가 상기 브리지에 판독 요청을 전송하고 상기 브리지가 상기 판독 요청을 상기 제 2 주변 컴포넌트에 직접 전송하는 것을 포함하는 것을 특징으로 하는 시스템.
  7. 제 1항에 있어서,
    상기 브리지는 수신된 기록 요청들, 수신된 판독 요청들 및 수신된 데이터에 대한 라우팅을 결정하도록 구성 가능한 로직을 포함하는 것을 특징으로 하는 시스템.
  8. 제 1항에 있어서,
    상기 제 2 주변 컴포넌트는 데이터를 수신 및 송신하도록 구성 가능한 내부 브리지를 포함하고, 이 내부 브리지는 자신이 데이터를 수신 및 송신하는데 이용되지 않을 때 파워 다운(power down)되도록 더 구성 가능하며,
    상기 제 2 주변 컴포넌트는 자신이 포함하고 있는 상기 브리지의 이용을 위한 전용 파워 소스를 더 포함하고,
    상기 제 1 주변 컴포넌트 및 제 2 주변 컴포넌트 각각은 그래픽 처리 유닛(GPU)을 포함하며; 그리고
    상기 제 1 주변 컴포넌트 및 제 2 주변 컴포넌트 각각은 각각의 버스 인터페이스에 결합된 각각의 복수의 클라이언트들을 더 포함하며, 상기 클라이언트들은 쉐이더(shader) 유닛들 및 인코더/디코더 유닛들을 구비하는 비디오 처리 로직을 포함하는 것을 특징으로 하는 시스템.
  9. 멀티 프로세서 시스템에서의 통신 방법으로서,
    버스 루트 - 상기 버스 루트는 상기 버스 루트와 통합되는 중앙처리 유닛 및 시스템 메모리를 포함한다 - 로부터 제 1 주변 컴포넌트에 직접적으로 요청들 - 이 요청들은 판독 요청들 및 기록 요청들을 포함한다 - 을 전송하는 단계와;
    상기 제 1 주변 컴포넌트가, 상기 제 1 주변 컴포넌트의 내부 브리지에 있는 제 1 버스를 통해 상기 요청들을 수신하는 단계와; 그리고
    상기 내부 브리지가 상기 요청을 위한 적절한 라우팅을 결정하는 단계를 포함하며,
    상기 적절한 라우팅은:
    제 2 주변 컴포넌트로 향하는 요청들을 제 2 버스를 통해 상기 브리지로부터 상기 제2 주변 컴포넌트의 버스 인터페이스에 직접적으로 라우팅하는 것과; 그리고
    제 1 주변 컴포넌트로 향하는 요청들을 상기 제 1 주변 컴포넌트의 버스 인터페이스에 라우팅하는 것을 포함하는 것을 특징으로 하는 멀티 프로세서 시스템에서의 통신 방법.
  10. 제 9항에 있어서,
    상기 제 2 주변 컴포넌트가 판독 요청에 응답하여 제 3 버스를 통해 데이터를 직접적으로 상기 버스 루트에 전송하는 단계를 더 포함하는 것을 특징으로 하는 멀티 프로세서 시스템에서의 통신 방법.
  11. 제 9항에 있어서,
    상기 제 2 주변 컴포넌트가 상기 제 2 주변 컴포넌트의 내부 브리지에서의 요청들을 수신하는 단계와;
    상기 제 1 주변 컴포넌트가 상기 제 2 버스를 통해 상기 제 2 주변 컴포넌트에 판독 요청을 전송하는 단계와;
    상기 판독 요청에 응답하여 상기 제 2 주변 컴포넌트가 데이터를 상기 제 3 버스를 통해 상기 버스 루트에 전송하는 단계와; 그리고
    상기 버스 루트가 상기 제 1 버스를 통해 상기 브리지에 상기 데이터를 전송하는 단계를 더 포함하는 것을 특징으로 하는 멀티 프로세서 시스템에서의 통신 방법.
  12. 멀티 프로세서 시스템에서 실행될 때 통신 방법을 수행하도록 된 명령어들이 저장된 컴퓨터 판독가능한 비일시적인 유형 매체(computer-readable nontransitory tangible medium)로서, 상기 방법은:
    버스 루트 - 상기 버스 루트는 상기 버스 루트와 통합되는 중앙처리 유닛 및 시스템 메모리를 포함한다 - 로부터 제 1 주변 컴포넌트에 직접적으로 요청들 - 이 요청들은 판독 요청들 및 기록 요청들을 포함한다 - 을 전송하는 단계와;
    상기 제 1 주변 컴포넌트에서, 상기 제 1 주변 컴포넌트의 내부 브리지에 있는 제 1 버스를 통해 상기 요청들을 수신하는 단계와; 그리고
    상기 내부 브리지로부터 상기 요청을 위한 적절한 라우팅을 결정하는 단계를 포함하며,
    상기 적절한 라우팅은:
    제 2 주변 컴포넌트로 향하는 요청들을 제 2 버스를 통해 상기 브리지로부터 상기 제2 주변 컴포넌트의 버스 인터페이스에 직접적으로 라우팅하는 것과; 그리고
    제 1 주변 컴포넌트로 향하는 요청들을 상기 제 1 주변 컴포넌트의 버스 인터페이스에 라우팅하는 것을 포함하는 것을 특징으로 하는 컴퓨터 판독가능한 비일시적인 유형 매체.
  13. 제 12항에 있어서,
    상기 방법은 상기 제 2 컴포넌트가 판독 요청에 응답하여 제 3 버스를 통해 데이터를 직접적으로 상기 버스 루트에 전송하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 판독가능한 비일시적인 유형 매체.
  14. 제 12항에 있어서,
    상기 방법은:
    상기 제 1 주변 컴포넌트가 상기 제 2 버스를 통해 상기 제 2 주변 컴포넌트에 판독 요청을 전송하는 단계와;
    상기 판독 요청에 응답하여 상기 제 2 주변 컴포넌트가 데이터를 상기 제 3 버스를 통해 상기 버스 루트에 전송하는 단계와; 그리고
    상기 버스 루트가 상기 제 1 버스를 통해 상기 브리지에 상기 데이터를 전송하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 판독가능한 비일시적인 유형 매체.
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
KR1020117010206A 2008-10-03 2009-10-05 멀티-프로세서 아키텍쳐 및 방법 KR101533761B1 (ko)

Applications Claiming Priority (5)

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 US8373709B2 (en) 2008-10-03 2008-12-19 Multi-processor architecture and method
US12/340,510 2008-12-19
PCT/US2009/059594 WO2010040144A1 (en) 2008-10-03 2009-10-05 Multi-processor architecture and method

Publications (2)

Publication Number Publication Date
KR20110067149A KR20110067149A (ko) 2011-06-21
KR101533761B1 true KR101533761B1 (ko) 2015-07-03

Family

ID=41426838

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117010206A KR101533761B1 (ko) 2008-10-03 2009-10-05 멀티-프로세서 아키텍쳐 및 방법

Country Status (6)

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

Families Citing this family (28)

* 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 (zh) * 2011-06-03 2012-12-05 鸿富锦精密工业(深圳)有限公司 Pci-e扩展系统及方法
US10817043B2 (en) * 2011-07-26 2020-10-27 Nvidia Corporation System and method for entering and exiting sleep mode in a graphics subsystem
CN102931546A (zh) * 2011-08-10 2013-02-13 鸿富锦精密工业(深圳)有限公司 连接器组合
CN103105895A (zh) * 2011-11-15 2013-05-15 辉达公司 计算机系统及其显示卡及该系统进行图形处理的方法
CN103631549A (zh) * 2012-08-22 2014-03-12 慧荣科技股份有限公司 图像处理装置及外接图像装置
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
US10235320B2 (en) 2013-07-30 2019-03-19 Hewlett Packard Enterprise Development Lp Connector for a computing assembly
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
US9413830B2 (en) 2013-11-11 2016-08-09 Amazon Technologies, Inc. Application streaming service
US9634942B2 (en) * 2013-11-11 2017-04-25 Amazon Technologies, Inc. Adaptive scene complexity based on service quality
US9578074B2 (en) 2013-11-11 2017-02-21 Amazon Technologies, Inc. Adaptive content transmission
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
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 (zh) * 2017-08-28 2020-03-20 上海集成电路研发中心有限公司 一种嵌入处理器的总线协议异步逻辑电路实现装置
JP6635209B2 (ja) * 2018-04-18 2020-01-22 富士通クライアントコンピューティング株式会社 情報処理システム
JP6579255B1 (ja) 2018-12-28 2019-09-25 富士通クライアントコンピューティング株式会社 情報処理システム、および中継装置
JP6573046B1 (ja) 2019-06-05 2019-09-11 富士通クライアントコンピューティング株式会社 情報処理装置、情報処理システムおよび情報処理プログラム
US11637773B2 (en) * 2020-02-11 2023-04-25 Fungible, Inc. Scaled-out transport as connection proxy for device-to-device communications
US20230394204A1 (en) * 2022-06-07 2023-12-07 Dell Products L.P. Lcs orchestrator device/expansion device secondary circuit board system
CN115981853A (zh) * 2022-12-23 2023-04-18 摩尔线程智能科技(北京)有限责任公司 Gpu互联架构、实现gpu互联架构的方法、计算设备

Citations (1)

* 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

Family Cites Families (104)

* 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 (ja) * 1994-06-20 2003-10-06 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチプル・バス情報処理システム及びブリッジ回路
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 (ja) * 1999-01-27 2000-08-11 Nec Corp 画像処理方法及び装置
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
US7822105B2 (en) * 2003-09-02 2010-10-26 Sirf Technology, Inc. Cross-correlation removal of carrier wave jamming signals
TWI221980B (en) * 2003-09-02 2004-10-11 Prolific Technology Inc Apparatus for multiple host access to storage media
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
WO2005050557A2 (en) * 2003-11-19 2005-06-02 Lucid Information Technology Ltd. Method and system for multiple 3-d graphic pipeline over a pc bus
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
US7633505B1 (en) * 2004-11-17 2009-12-15 Nvidia Corporation Apparatus, system, and method for joint processing in graphics processing units
US7598958B1 (en) * 2004-11-17 2009-10-06 Nvidia Corporation Multi-chip graphics processing unit apparatus, system, and method
US7477256B1 (en) * 2004-11-17 2009-01-13 Nvidia Corporation Connecting graphics adapters for scalable performance
US8066515B2 (en) * 2004-11-17 2011-11-29 Nvidia Corporation Multiple graphics adapter connection systems
US7451259B2 (en) 2004-12-06 2008-11-11 Nvidia Corporation Method and apparatus for providing peer-to-peer data transfer within a computing environment
US7275123B2 (en) * 2004-12-06 2007-09-25 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
US7539801B2 (en) * 2005-05-27 2009-05-26 Ati Technologies Ulc Computing device with flexibly configurable expansion slots, and method of operation
US7663635B2 (en) * 2005-05-27 2010-02-16 Ati Technologies, Inc. Multiple video processor unit (VPU) memory mapping
US7649537B2 (en) * 2005-05-27 2010-01-19 Ati Technologies, Inc. Dynamic load balancing in multiple video processing unit (VPU) systems
US8054314B2 (en) * 2005-05-27 2011-11-08 Ati Technologies, Inc. Applying non-homogeneous properties to multiple video processing units (VPUs)
US20060282604A1 (en) * 2005-05-27 2006-12-14 Ati Technologies, Inc. Methods and apparatus for processing graphics data using multiple processing circuits
JP2007008679A (ja) * 2005-06-30 2007-01-18 Toshiba Corp 排紙装置
US20070016711A1 (en) * 2005-07-13 2007-01-18 Jet Way Information Co., Ltd. Interfacing structure for multiple graphic
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
US7325086B2 (en) * 2005-12-15 2008-01-29 Via Technologies, Inc. Method and system for multiple GPU support
US7340557B2 (en) * 2005-12-15 2008-03-04 Via Technologies, Inc. Switching 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 (ja) * 2006-01-16 2012-02-08 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、信号伝送方法、およびブリッジ
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
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 (ja) * 2006-05-24 2010-03-24 株式会社ソニー・コンピュータエンタテインメント マルチグラフィックスプロセッサシステム、グラフィックスプロセッサおよびデータ転送方法
US7480757B2 (en) * 2006-05-24 2009-01-20 International Business Machines Corporation Method for dynamically allocating lanes to a plurality of PCI Express connectors
US8555099B2 (en) * 2006-05-30 2013-10-08 Ati Technologies Ulc Device having multiple graphics subsystems and reduced power consumption mode, software and methods
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
US7619629B1 (en) * 2006-06-15 2009-11-17 Nvidia Corporation Method and system for utilizing memory interface bandwidth to connect multiple graphics processing units
US7562174B2 (en) * 2006-06-15 2009-07-14 Nvidia Corporation Motherboard having hard-wired private bus between graphics cards
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 (ja) * 2006-11-09 2010-02-24 株式会社ソニー・コンピュータエンタテインメント マルチプロセッサシステム、その制御方法、プログラム及び情報記憶媒体
US20080200043A1 (en) * 2007-02-15 2008-08-21 Tennrich International Corp. Dual display card connection means
DE602008006701D1 (de) 2007-03-07 2011-06-16 Beneo Orafti S A Konservierung von naturkautschuklatex
JP2008276568A (ja) * 2007-04-27 2008-11-13 Toshiba Corp 情報処理装置、およびプロセッサ回路の制御方法
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 (zh) * 2008-08-01 2012-07-04 辉达公司 一连串绘图处理器处理绘图数据的方法及系统
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
KR20110088538A (ko) * 2008-10-30 2011-08-03 엘에스아이 코포레이션 저장 컨트롤러 데이터 재분배 방법 및 시스템

Patent Citations (1)

* 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

Also Published As

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

Similar Documents

Publication Publication Date Title
KR101533761B1 (ko) 멀티-프로세서 아키텍쳐 및 방법
US9977756B2 (en) Internal bus architecture and method in multi-processor systems
US8161209B2 (en) Peer-to-peer special purpose processor architecture and method
US7325086B2 (en) Method and system for multiple GPU support
US20070139422A1 (en) Switching method and system for multiple GPU support
US6950910B2 (en) Mobile wireless communication device architectures and methods therefor
US8380943B2 (en) Variable-width memory module and buffer
US7818546B2 (en) Pipeline processing communicating adjacent stages and controls to prevent the address information from being overwritten
US7313641B2 (en) Inter-processor communication system for communication between processors
US10206175B2 (en) Communications fabric with split paths for control and data packets
US7721038B2 (en) System on chip (SOC) system for a multimedia system enabling high-speed transfer of multimedia data and fast control of peripheral devices
US20160292123A1 (en) Semiconductor device
US20060123152A1 (en) Inter-processor communication system for communication between processors
US20020073261A1 (en) Apparatus and a method to provide higher bandwidth or processing power on a bus
US6791554B1 (en) I/O node for a computer system including an integrated graphics engine
KR20060010383A (ko) 메인 제어부와 부 제어부로 구성된 제어 시스템 및 버스연결 방법
US6857033B1 (en) I/O node for a computer system including an integrated graphics engine and an integrated I/O hub
US7519848B2 (en) Data transfer apparatus
US20040225862A1 (en) Method and apparatus for interconnecting portions of circuitry within a data processing system
CN101441613A (zh) 一种双cpu片上系统及其启动方法

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
FPAY Annual fee payment

Payment date: 20180529

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190530

Year of fee payment: 5