KR20070073825A - 멀티프로세서 시스템 내의 복수의 구성들을 지지하기 위한방법들 및 장치 - Google Patents

멀티프로세서 시스템 내의 복수의 구성들을 지지하기 위한방법들 및 장치 Download PDF

Info

Publication number
KR20070073825A
KR20070073825A KR1020077009570A KR20077009570A KR20070073825A KR 20070073825 A KR20070073825 A KR 20070073825A KR 1020077009570 A KR1020077009570 A KR 1020077009570A KR 20077009570 A KR20077009570 A KR 20077009570A KR 20070073825 A KR20070073825 A KR 20070073825A
Authority
KR
South Korea
Prior art keywords
multiprocessor
interface
mode
multiprocessors
operating
Prior art date
Application number
KR1020077009570A
Other languages
English (en)
Other versions
KR100875030B1 (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
Application filed by 가부시키가이샤 소니 컴퓨터 엔터테인먼트, 인터내셔널 비지니스 머신즈 코포레이션 filed Critical 가부시키가이샤 소니 컴퓨터 엔터테인먼트
Publication of KR20070073825A publication Critical patent/KR20070073825A/ko
Application granted granted Critical
Publication of KR100875030B1 publication Critical patent/KR100875030B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Hardware Redundancy (AREA)

Abstract

본 발명에 따르면, (i) 일관된 대칭 인터페이스를 제공하는 제 1 모드; 또는 (ii) 비일관된 인터페이스를 제공하는 제 2 모드에서의 동작에 적합한, 하나 이상의 구성가능 인터페이스 회로들을 통하여 하나 이상의 멀티프로세서들과 하나 이상의 외부 장치들을 상호연결하기 위한 방법들 및 장치가 제공된다.
멀티프로세서, 인터페이스, 논리 계층, 전송 계층, 물리적 계층

Description

멀티프로세서 시스템 내의 복수의 구성들을 지지하기 위한 방법들 및 장치{Methods and apparatus for supporting multiple configurations in a multi-processor system}
본 발명은 멀티프로세서 시스템 아키텍쳐(architecture)를 사용하여 복수의 처리 구성들을 달성하기 위한 방법들 및 장치에 관한 것이다.
최근에, 커팅-에지(cutting-edge) 컴퓨터 어플리케이션(application)들은 실시간 멀티미디어 기능을 포함하기 때문에 데이터 생산량들을 처리하는 더 빠른 컴퓨터를 위한 만족할 줄 모르는 요망이 있어 왔다. 그래픽 어플리케이션들은, 바람직한 시각 효과들을 달성하기 위해 상대적으로 짧은 기간에 방대한 개수들의 데이터 접근들, 데이터 연산들 및 데이터 곱셈들을 필요로 하기 때문에, 처리 시스템에 대한 요구량이 가장 많은 어플리케이션들이다. 이러한 어플리케이션들은 초당 수천 메가비트(megabit)의 데이터와 같은 극도로 빠른 속도들을 필요로 한다. 일부 처리 시스템들은 빠른 처리 속도들을 달성하기 위해 단일 프로세서를 이용하지만, 다른 처리 시스템들은 멀티프로세서 아키텍쳐들을 이용하여 실시된다. 멀티프로세서 시스템들에서, 복수의 서브프로세서(sub-processor)들은 요망된 처리 효과들을 달성하기 위해 병렬로 (또는 적어도 동시에) 동작할 수 있다.
일부 멀티프로세싱 시스템들은, 처리 효율 및 다능을 향상시키기 위해 행렬 구성에서 인터페이스들을 경유하여 상호연결들을 관찰한다. 이러한 구성들의 실시예들은, 인용참증에 포함된 전체 공개 공보들, 미국 특허 공보 제2005/0097231호 및 미국 특허 공보 제6,526,491호에 공개되어 있다. 이러한 문서들에서 공개된 기술들이 다양한 어플리케이션들에서 유용하지만, 다른 어플리케이션들에서 바람직한 유연성 및/또는 프로그램능력의 수준을 제공할 수 없다.
따라서, 더 높은 처리 용량들을 달성하기 위해 하나 이상의 멀티프로세서 시스템들을 하나 이상의 외부 장치들과 상호연결하기 위한 새로운 방법들 및 장치에 대한 당해 기술분야에서의 요구들이 있다.
본 발명의 하나 이상의 실시형태들에 따르면, (복수의 구별되는 병렬 프로세서들을 이용하는) 처리 요소(PE)는, 다른 PE들, 메모리 서브시스템들, 스위치들, 브릿지 칩(bridge chip)들 등을 부착하기 위한 일관되거나 비일관된 고성능 상호연결을 제공하는 광대역 인터페이스 제어기를 포함한다. BIC는, 다른 시스템 요구사항들에 집중하기 위해 변화하는 프로토콜(protocol)들 및 대역폭 능력들을 가진 2개의 유연한 인터페이스들을 제공한다. 인터페이스들은, 2개의 I/O 인터페이스들(IOIF 0/1) 또는 I/O 및 일관된 SMP 인터페이스(IOIF & BIF)로서 구성될 수 있다. BIC가 일관된 SMP 인터페이스로서 동작하도록 구성될 때, BIC는 PE에 고성능 일관된 상호연결을 제공한다. BIC가 I/O 인터페이스로서 동작하도록 구성될 때, BIC는 PE에 고성능 (비일관된) 상호연결을 제공한다.
BIC는 논리 계층, 전송 계층, 데이터 링크(link) 계층, 및 물리적 링크 계층을 포함한다. 논리 계층( 및 일부 실시형태들에서의 전송 계층)은 일관된 SMP 인터페이스와 비일관된 인터페이스 사이에서 BIC의 동작을 변화시키는 데에 적합할 수 있다. 논리 계층은, 순서화 및 일관성 규칙들을 포함하여 BIF 또는 IOIF의 기본 동작을 정의한다. 전송 계층은, 명령 및 데이터 패킷(packet)들이 장치들 사이에서 어떻게 전송되는 지를 정의한다. 명령 및 데이터 패킷들은, 데이터 링크 계층으로의 표현을 위해 물리적 계층 그룹(PLG; physical layer group)들로 참조되는 더 작은 유닛들로 분리되는 것이 바람직하다. 데이터 링크 계층은, 송신기와 수신기 사이의 정보의 에러 프리 트랜스미션(error free transmission)을 보증하는 설비를 정의한다. 물리적 계층은 I/O 드라이버들의 전기 특성들 및 타이밍을 정의하고, 데이터 링크 엔벨로프(envelope)들이 물리적 링크들을 통해 어떻게 전송되는 지를 묘사한다. 물리적 링크 계층은, 두 세트들까지의 논리/전송/데이터 링크 계층들의 동시 동작 및 둘 사이의 물리적 계층의 이용가능 대역폭을 배분하는 구성가능 방법을 지지한다.
논리 계층, 전송 계층, 데이터 링크 계층, 및 BIC의 물리적 계층의 기능성 및 동작은, (BIF 및/또는 IOIF) 인터페이스들의 전체 대역폭이 물리적 계층의 최대 대역폭을 초과하지 않는 동안 물리적 계층 대역폭이 2개의 인터페이스들 사이에서 분할되는 것이 바람직하다. 예를 들어, 물리적 계층은 35 GB/s의 전체 순 출력 대역폭 및 25 GB/s의 전체 순 입력 대역폭을 가질 수 있다.
본 발명의 하나 이상의 실시형태들에 따르면, BIC의 유연한 인터페이스들은, 하나 이상의 프로세서 요소들이 배치되는 시스템 구성에서의 상당한 유연성을 가능하게 한다. 예를 들어, BIC는, PE와 2개의 장치들 사이의 각각의 비일관된 인터페이스들을 설정하기 위해 이중 I/O 인터페이스들(IOIF0 및 IOIF1)을 이용하도록 동작가능하다. BIC의 물리적 계층 입력/출력 대역폭은, 2개의 인터페이스들의 합이 물리적 계층의 전체 대역폭을 초과하지 않는 동안 2개의 IOIF 인터페이스들 사이에서 분할될 수 있다(즉, 30 GB/s 출력 및 25 GB/s 입력).
선택적인 실시형태에 따르면, 2개의 프로세서 요소들은 일관된 대칭 멀티프로세서(SMP; symmetric multiprocessor) 인터페이스 (또는 BIF) 구성에서 각각의 BIC를 이용함으로써 종속접속될 수 있다. 각각의 처리 요소의 일관된 SMP 인터페이스는 처리 요소 사이의 일관된 인터페이스를 설정하기 위해 서로 연결된다. 각각의 처리 요소의 IOIF는 비일관된 유형으로 다른 장치들로/로부터 데이터를 송신하고 수신할 수 있다. 다시, 각각의 BIC의 물리적 계층 입력/출력 대역폭은 BIC의 2개의 인터페이스들 사이에서 분할될 수 있다.
또 다른 선택적인 실시형태에 따르면, 3개 이상의 프로세서 요소들이 일관된 SMP 인터페이스 구성에서 각각의 BIC를 이용함으로써 종속접속될 수 있다. 중앙에 배치된 프로세서 요소는 2개의 BIF들을 가지는 BIC를 이용할 수 있다. 한 쌍의 말단에 배치된 프로세서 요소들은 중앙에 배치된 프로세서 요소를 꾸밀 수 있고 각각은 하나의 BIF 및 하나의 IOIF를 가지는 BIC를 이용할 수 있다. 각각의 처리 요소의 BIF는 처리 요소들 사이의 일관된 인터페이스를 설정하기 위해 서로 연결될 수 있다. 말단 처리 요소들의 IOIF는 비일관된 유형으로 다른 장치들로/로부터 데이터를 송신하고 수신할 수 있다.
또 다른 선택적인 실시형태에 따르면, 2개보다 더 많은 프로세서 요소들이 각각 I/O 및 일관된 SMP 인터페이스 (IOIF & BIF) 구성으로 각각의 BIC를 이용함으로써 종속접속될 수 있다. 각각의 처리 요소의 일관된 SMP 인터페이스(BIF)는, 처리 요소들 사이의 일관된 인터페이스를 설정하기 위해 서로 처리 요소들을 효과적으로 연결하는 스위치에 연결될 수 있다. 각각의 처리 요소의 IOIF는 비일관된 유형으로 시스템 내에서 다른 장치들로/로부터 데이터를 송신하고 수신할 수 있다.
본 발명의 다른 태양들, 특징들, 및 장점들이 첨부된 도면들과 관련하여 상세한 설명으로부터 당업자에게 자명할 것이다.
본 발명의 다양한 태양들을 도시하기 위해, 도면에서 바람직한 형태들이 도시되지만, 본 발명은 도시된 것과 동일한 배열들 및 수단에 제한되지 않는다.
도 1은 본 발명의 하나 이상의 실시형태들을 이용하는 멀티프로세싱 시스템의 구조를 도시하는 블록도이고;
도 2는 도 1의 시스템에 의해 이용될 수 있는 또 다른 특징들을 도시하는 블록도이며;
도 3은 본 발명의 하나 이상의 태양들에 따른 처리 시스템을 이용한 사용에 적합한 인터페이스 제어기의 블록도이고;
도 4는 멀티프로세서 시스템의 하나 이상의 태양들이 처리 구성을 달성하기 위해 어떻게 이용될 수 있는 지의 실시예를 도시하는 블록도이며;
도 5는 멀티프로세서 시스템의 하나 이상의 태양들이 또 다른 처리 구성을 달성하기 위해 어떻게 이용될 수 있는 지의 실시예를 도시하는 블록도이고;
도 6은 멀티프로세서 시스템의 하나 이상의 태양들이 또 다른 처리 구성을 달성하기 위해 어떻게 이용될 수 있는 지의 실시예를 도시하는 블록도이며;
도 7은 멀티프로세서 시스템의 하나 이상의 태양들이 또 다른 처리 구성을 달성하기 위해 어떻게 이용될 수 있는 지의 실시예를 도시하는 블록도이고;
도 8은 본 발명의 하나 이상의 또 다른 태양들에 따라 채택된 도 1의 시스템의 예시적 서브-처리 유닛의 구조를 도시하는 다이어그램이며;
도 9는, 본 발명의 하나 이상의 또 다른 태양들에 따라 채택된 도 1의 시스템의 예시적 처리 유닛(PU; processing unit) 또는 전력 처리 유닛(PPU; power processing unit)의 구조를 도시하는 다이어그램이다.
본 명세서에서 논의된 하나 이상의 특징들을 수행하기에 적합한 멀티프로세서 시스템에 대한 바람직한 컴퓨터 아키텍쳐의 기술이 이제 제공될 것이다. 하나 이상의 실시형태들에 따르면, 멀티프로세서 시스템은, 게임 시스템들, 홈 단말기들, PC 시스템들, 서버 시스템들 및 워크스테이션들과 같은 독립형으로 동작가능한 단일-칩 솔루션 및/또는 미디어-리치 어플리케이션들의 분배된 처리로서 이용될 수 있다. 게임 시스템들 및 홈 단말기들과 같은 일부 어플리케이션들에서는, 실시간 연산이 필수적이다. 예를 들어, 실시간으로, 분배된 게이밍(gaming) 어플리케이션, 하나 이상의 네트워킹 이미지 감압, 3D 컴퓨터 그래픽스, 오디오 제너레이션(audio generation), 네트워크 커뮤니케이션들, 물리적 시뮬레이션(physical simulation), 및 인공 지능 프로세스들은 사용자에게 실시간 경험의 환영을 제공하기에 충분히 빠르게 실행되어야 한다. 그러므로, 멀티프로세서 시스템 내의 각각의 프로세서는 짧은 예정가능 시간에 태스크들을 완료해야 한다.
결국, 이러한 컴퓨터 아키텍쳐에 따라서, 멀티프로세싱 컴퓨터 시스템의 모든 프로세서들은 공통된 컴퓨팅 모듈( 또는 셀)로부터 구축된다. 이러한 공통된 컴퓨팅 모듈은 일관된 구조를 가지고, 동일한 명령 세트 아키텍쳐를 바람직하게 이용한다. 멀티프로세싱 컴퓨터 시스템은 하나 이상의 클라이언트(client)들, 서버(server)들, PC들, 휴대용 컴퓨터들, 게임 기계들, PDA들, 셋톱 박스(set top box)들, 기구(appliance)들, 디지털 텔레비젼들 및 컴퓨터 프로세서들을 이용하는 다른 장치들로 형성될 수 있다.
복수의 컴퓨터 시스템들은 또한 요망된다면 네트워크의 부재들일 수 있다. 일관된 모듈 구조는 멀티프로세싱 컴퓨터 시스템에 의해 어플리케이션들 및 데이터의 효율적이고 고속인 처리를 가능하게 하고, 네트워크가 이용된다면 네트워크에 대한 어플리케이션들 및 데이터의 빠른 전송을 가능하게 한다. 이러한 구조는 다양한 크기들 및 처리 능력의 네트워크의 부분들의 건조 및 이러한 부분들에 의해 처리하기 위한 어플리케이션들의 준비를 단순화시킨다.
도 1 및 2를 참조하면, 기본 처리 모듈은 프로세서 요소(PE; processor element; 500)이다. PE(500)는 I/O 인터페이스(502), 처리 유닛(PU; processing unit; 504), 및 복수의 부처리 유닛들(sub-processing units; 508), 즉, 부처리 유 닛(508A), 부처리 유닛(508B), 부처리 유닛(508C), 및 부처리 유닛(508D)을 포함한다. 로컬 (또는 내부) PE 버스(512)는, PU(504), 부처리 유닛들(508), 및 메모리 인터페이스(511) 사이에서 데이터 및 어플리케이션들을 전송한다. 로컬 PE 버스(512)는 예를 들어 통상의 아키텍쳐를 가질 수 있고 또는 패킷-스위치 네트워크로서 이용될 수 있다. 패킷 스위치 네트워크로서 이용된다면, 더 많은 하드웨어를 필요로 하는 동안, 이용가능 대역폭이 증가한다.
PE(500)는 디지털 로직을 이용하기 위해 다양한 방법들을 이용하여 구성될 수 있다. 그러나, PE(500)는 실리콘 기판 상의 시모스(CMOS; complementary metal oxide semiconductor)를 이용한 단일 집적 회로로서 구성되는 것이 바람직하다. 기판들에 대한 선택적인 재료들은 갈륨 아시나이드(gallium arsinide), 갈륨 알루미늄 아시나이드 및 다양한 불순물들을 이용한 소위 III-B 화합물들을 포함한다. PE(500)는, 예를 들어, 단자속 양자(RSFQ; rapid single-flux-quantum) 로직과 같은 초전도 재료를 이용하여 제공될 수 있다.
PE(500)는 고대역 메모리 연결부(516)를 통하여 공유 (주) 메모리(514)와 가깝게 연결된다. 메모리(514)가 동적 임의 접근 메모리(DRAM; dynamic random access memory)일지라도, 메모리(514)는 정적 임의 접근 메모리(SRAM; static random access memory), 자기 임의 접근 메모리(MRAM; magnetic random access memory), 광 메모리, 홀로그래픽(holographic) 메모리 등과 같은 다른 수단을 이용하여 제공될 수 있다.
PU(504) 및 부처리 유닛들(508)은, 메모리 인터페이스(511)와 결합하여 DRAM(514) 및 부처리 유닛들(508) 및 PE(500)의 PU(504) 사이의 데이터 전송을 촉진하는, 직접 메모리 접근 DMA 기능을 포함하는 메모리 흐름 제어기(MFC; memory flow controller)에 각각 연결되는 것이 바람직하다. DMAC 및/또는 메모리 인터페이스(511)는 부처리 유닛들(508) 및 PU(504)와 관련하여 통합적으로 또는 분리되어 배치될 수 있다. DMAC 기능 및/또는 메모리 인터페이스(511) 기능은 하나 이상의 (바람직하게는 모든) 부처리 유닛들(508) 및 PU(504)와 통합될 수 있다. DRAM(514)은 PE(500)와 관련하여 통합되거나 분리되어 배치될 수 있다. 예를 들어, DRAM(514)은 도면에 의해 비쳐진 것처럼 오프-칩(off-chip)으로 배치될 수 있고 또는 DRAM(514)은 통합된 형태로 온-칩(on-chip)으로 배치될 수 있다.
PU(504)는, 예를 들어 데이터 및 어플리케이션들의 독립 처리를 가능하게 하는 표준 프로세서일 수 있다. 동작에서, PU(504)는 부처리 유닛들에 의해 데이터 및 어플리케이션들의 처리를 예정하고 조정하는 것이 바람직하다. 부처리 유닛들은 바람직하게는 단일 명령 멀티플 데이터(SIMD; single instruction multiple data) 프로세서들이다. PU(504)의 제어 하에서, 부처리 유닛들은 병렬 및 독립 형식으로 이러한 데이터 및 어플리케이션들의 처리를 수행한다. PU(504)는, 감소된 명령-세트 컴퓨팅(RISC; reduced instruction-set computing) 테크닉을 이용하는 마이크로프로세서 아키텍쳐인 파워피씨 코어(PowerPC core)를 이용하여 제공되는 것이 바람직하다. RISC는 간단한 명령들의 조합을 이용하여 더욱 복잡한 명령들을 수행한다. 그러므로, 프로세서에 대한 타이밍은 더욱 간단하고 더 빠른 동작들에 근거하여, 마이크로프로세서가 주어진 클락(clock) 속도에 대하여 더 많은 명령들을 수행하는 것을 가능하게 한다.
PU(504)는, 부처리 유닛들(508)에 의해 데이터 및 어플리케이션들의 처리를 예정하고 조정하는 주 처리 유닛의 역할을 하는 부처리 유닛들(508) 중 하나에 의해 제공될 수 있다. 게다가, 프로세서 요소(500) 내에서 제공되는 2개 이상의 PU일 수 있다.
이러한 모듈 구조에 따르면, 특정 컴퓨터 시스템에 의해 이용되는 PE들(500)의 개수는 시스템에 의해 필요한 처리 능력에 근거한다. 예를 들어, 서버는 4개의 PE들(500)을 이용할 수 있고, 워크스테이션은 2개의 PE들(500)을 이용할 수 있으며, PDA는 하나의 PE(500)를 이용할 수 있다. 특정 소프트웨어 셀을 처리하도록 할당된 PE(500)의 부처리 유닛들의 개수는 셀 내의 프로그램들 및 데이터의 복잡함과 크기에 의존한다.
MIB(Modular Interconnect Bus; 512)는, 복수의 동시 데이터 전송들을 지지하는 다수의 (하프-레이트; half-rate) 링들로서 구성될 수 있는 일관된 버스이다.
MIC(511)는 PE와 공유 메모리(514)를 제공하는 복수의 메모리 뱅크들 사이의 통신을 촉진하도록 동작가능하다. MIC(511)는 프로세서와 I/O 인터페이스들과 관련하여 비동기식으로 동작하는 것이 바람직하다.
BIC(513)는 MIB(512)의 논리 확장이고 MIB(512)와 I/O 인터페이스(502) 사이의 비동기 인터페이스를 제공한다. BIC(513)는, 다른 PE들, 메모리 서브시스템들, 스위치들, 브릿지 칩들 등을 부착하기 위한 일관되거나 비일관된 고성능 상호접속을 제공한다. BIC(513)는 2개의 유연성 있는 인터페이스들에 다른 시스템 요건들을 요구하는 변화하는 프로토콜들 및 대역폭 능력들을 제공한다. 인터페이스들은 2개의 I/O 인터페이스들(IOIF 0/1) 또는 I/O 및 일관된 SMP 인터페이스(IOIF & BIF)로서 구성될 수 있다. 유연한 인터페이스는 7개의 전송 및 5개의 수신 바이트(receive byte)들로 동작한다. BIC(513)가 일관된 SMP 인터페이스로서 동작하도록 구성될 때, BIC(513)는 PE에 고성능 일관된 상호접속을 제공한다. BIC(513)가 I/O 인터페이스로서 동작하도록 구성될 때, BIC(513)는 PE에 고성능 (비일관된) 상호접속을 제공한다. (BIF 또는 IOIF로서 동작하는) BIC(513)는 고속 인터페이스를 필요로 하는 다른 어플리케이션들을 위해 또한 이용될 수 있다.
BIC(513)는, PE 및 다른 PE들, 메모리 서브시스템들, 스위치들 브릿지 칩들 등 사이의 트랜잭션(transaction)들을 수행하는 것을 촉진한다. BIF 및 IOIF 트랜잭션들은, 통상적으로 PE 내의 로컬 캐시 계층 또는 PE에 연결된 외부 장치에 의해 서비스될 수 없는 데이터 트랜잭션으로부터 생겨나는 메모리 접근 요청(데이터에 대한 요청)들이다. 메모리 접근 요청은 하나 이상의 트랜잭션들을 필요로 한다. 트랜잭션은 마스터 장치 또는 캐시 일관성 제어기에 의해 개시될 수 있고 마스터(master)와 슬레이브(slave) 사이의 일련의 패킷 전송들을 일으킬 수 있다. BIF 및 IOIF 트랜잭션들은 3개의 상태들로 분할된다: (모든 트랜잭션들이 데이터 상태를 필요로 하지 않을지라도) (예를 들어, 로드(load) 및 스토어(store)와 같은) 명령들, 스누프(snoop), 및 데이터.
BIC(513)의 BIF 및 IOIF 특징들은, 많은 다른 시스템 구성들 및 차세대 컴플라이언트(compliant) 프로세서들을 지지하도록, 확장축소하여도 난조가 생기지 않 고 유연하게 동작가능하다. BIC(513)의 특징들은: (i) (BIF로서 동작할 때) 캐시 일관성 및 데이터 동기화를 지지하는 패킷 프로토콜; (ii) (IOIF로서 동작할 때) 오더링(ordering) 및 일관성을 위한 플래그들을 가진 패킷 프로토콜; (iii) 전체 파이프라인 명령 트랜잭션들, 데이터 트랜잭션들 및 반응/응답 트랜잭션들; (iv) 스플리트(split) 트랜잭션들; 및 (v) 신용기반(credit-based) 명령 및 데이터 지지를 포함한다.
도 3은, (적어도 두 부분들 0, 1을 포함하는) 논리 계층, (또한 적어도 두 부분들 0, 1을 포함하는) 전송 계층, (또한 적어도 두 부분들 0, 1을 포함하는) 데이터 링크 계층, 및 물리적 링크 계층을 포함하는 BIC(513)의 하나 이상의 태양들의 블록도이다. 논리 계층( 및 일부 실시형태들의 전송 계층)은 일관된 SMP 인터페이스(BIF)와 비일관된 인터페이스(IOIF) 사이의 BIC(513)의 동작을 변화시키는 데에 적합할 수 있다.
논리 계층은, 배열 및 일관성 규칙들을 포함하여 BIF 또는 IOIF의 기본 동작을 정의한다. 그러므로 BIF 또는 IOIF를 사용하는 PE에 부착된 장치는 논리 계층 열거에 전체적으로 유연해야 한다. 일부 어플리케이션들에서는, 논리 계층 열거의 서브세트를 제공하고, BIC(513)를 통하여 PE와 함께 사용할 수 있는 것이 가능하다. 논리 계층 내의 정보는 기본 명령 (주소), 데이터, 및 반응 패킷들의 윤곽을 그린다. 논리 계층이 일관된 SMP 인터페이스에 대하여 구성될 때, 스누프 반응 패킷들이 허용된다. 논리 계층이 비일관된 인터페이스에 대하여 구성될 때, 반응 패킷들만이 허용된다.
전송 계층은 명령 및 데이터 패킷들이 장치들 사이에서 어떻게 전송되는 지를 정의한다. 명령 및 데이터 패킷들은 데이터 링크 계층으로의 표현을 위해 물리적 계층 그룹(PLG; physical layer group)들로서 참조되는 더 작은 유닛들로 분리되는 것이 바람직하다. 또한, 전송 계층 내에는, PLG들의 전송의 보조를 맞추는 데에 사용되는 흐름 제어 메커니즘의 정의가 포함되어 있다. 전송 계층은 시스템 또는 어플리케이션의 필요에 맞추어 맞춤설계되는 것이 바람직하다.
데이터 링크 계층은, 송신기와 수신기 사이의 정보의 오차 무료 전송을 (실질적으로) 확보하는 편의를 정의한다. 이러한 계층 내에는 물리적 링크들을 위한 개시 또는 트레이닝 시퀀스(training sequence)가 포함된다. 데이터 링크 계층은 또한 시스템 또는 어플리케이션의 요구에 맞추도록 맞춤설계될 수 있는 것이 바람직하다.
물리적 계층은 I/O 드라이버들의 전기적 특성들 및 타이밍을 정의하고 데이터 링크 엔벨로프들이 물리적 링크들을 통해 어떻게 전송되는 지를 묘사한다. 물리적 링크 계층은 바람직하게는 2개까지의 세트들의 논리/전송/데이터 링크 계층들의 동시 동작 및 둘 사이의 물리적 계층의 이용가능 대역폭을 배분하는 구성가능 방법을 지지한다. 물리적 계층은 가이드라인들을 경로설정하고 패키징하는 인쇄 회로 기판을 정의한다. 물리적 계층의 목적 중에는, (속도, 일방향 대 양방향, 및 I/O들의 개수와 같은) I/O 드라이버들의 물리적 특성들을 숨기고, 일관된 인터페이스를 데이터 링크 계층에 제공하는 것이다. 입력/출력 기능은 실질적인 대역폭 지지를 가능하게 하는 램버스 RRAC I/O들을 이용하여 달성될 수 있다. 증가된 유연성을 위 해, RRAC 송신기들 및 수신기들은 프로세서들과 메모리로 비동기식으로 동작하고, 이용가능 대역폭은 2개의 인터페이스들 사이에서 구성가능하다.
BIC(513)의 논리 계층, 전송 계층, 데이터 링크 계층, 및 물리적 계층의 상술한 기능 및 동작을 생각하면, PE의 상대적으로 높은 대역폭 요건들이 다른 시스템 구성들과 마찬가지로 지지될 수 있다. 예를 들어, 물리적 계층은 한 쌍 당 5 GB/s로 실행되고 35 GB/s의 전체 순 출력 대역폭 및 25 GB/s의 순 입력 대역폭을 가지도록 동작가능하다. 물리적 계층 대역폭은, 최대 대역폭이 30 GB/s 출력이고 25 GB/s 입력일 수 있는 2개의 인터페이스들 사이에서 분할될 수 있다. 각각의 인터페이스의 대역폭은 5 GB/s의 속도로 증가될 수 있다. 바람직하게는, 2개의 인터페이스들의 합이 물리적 계층의 전체 대역폭을 초과할 수 없다.
BIC(513) 인터페이스의 또 다른 세부사항들이 이제 제공될 것이다. BIC(513)는 PE, 메모리 서브시스템들, 스위치들, 브릿지 칩들 등 사이의 포인트-투-포인트 버스(point-to-point bus)이고 MIB(512)의 논리 확장이다. BIC(513)는 브릿지 칩들 또는 스위치들의 많은 장치들의 부착을 지지한다. 단일 물리적 장치는 복수의 장치 유형들의 태스크들을 수행하도록 동작가능하다. 이러한 장치 유형들은: 마스터, 스누퍼(snooper), 슬레이브, 메모리, 버스 어댑터, 및 I/O 브릿지를 포함한다. 마스터는, 예를 들어 명령 버스를 조정하고 구동하는 버스 장치일 수 있다. 스누퍼는, 예를 들어 다른 시스템 캐시들과 결부된 일부 캐시된 데이터(cached data)를 유지하기 위해 명령 버스에 대한 활동을 감시하는 버스 장치일 수 있다. 버스 어댑터 또는 I/O 브릿지는 캐시를 포함할 수 있고, 만약 포함한다면 스누퍼처럼 동작하여, 예를 들어 캐시된 데이터(cached data)와 다른 시스템 캐시들 사이의 일관성을 유지한다. 슬레이브는 예를 들어 메모리 판독 또는 기록 명령에 반응하는 버스 장치일 수 있다. 슬레이브는 메모리 또는 I/O 레지스터(register)들, 또는 모두를 포함할 수 있다. 메모리 장치는 슬레이브의 일 실시예이다. 메모리는, 메모리 판독 또는 기록에 반응하고 일관된 동작들에 대한 긍정 응답을 취급하는 버스 장치일 수 있다. 메모리의 일부 부분이 원거리 버스에 부착된다면, 버스 어댑터는 원거리 메모리 공간으로의 메모리 접근들을 위한 메모리의 듀티(duty)들을 수행한다. 버스 어댑터는, 예를 들어 동일하거나 다른 버스 아키텍쳐를 가지고, 원거리 버스로 일관된 동작들을 통과시키기 위해 바람직하게는 복귀 프로토콜을 사용하는 또 다른 버스로의 게이트웨이일 수 있다. I/O 브릿지는, 예를 들어 배타적이거나 변경된 상태로 데이터를 캐시할 수 없는 I/O 버스로의 게이트웨이일 수 있다. 브릿지는 I/O 버스와의 일관성을 대비할 수 없고; 바람직하게는 I/O 장치들에 의한 공유 상태에서 캐시된 데이터에 대한 I/O 디렉토리를 포함하므로, I/O 버스로 일관된 동작들을 통과시키기 위해 복귀 프로토콜을 사용하지 않는다. 브릿지는 프로그래밍된 I/O(PIO; programed I/O) 또는 메모리-매핑된(memory-mapped) I/O 장치들을 지지할 수 있다.
BIC(513) 아키텍쳐는, 바람직하게는 분리된 명령, 데이터, 및 (스누프-; snoop-) 반응 패킷들에 근거한다. 이러한 패킷들은 바람직하게는 독립적으로 실행되어, 명령 패킷이 바람직하게는 데이터 패킷을 선행하는 것을 제외한다면 명령 패킷들과 데이터 패킷들 사이의 타이밍 관계가 없는 분열된 트랜잭션들을 허용한다. 요청들 및 응답들은, 또 다른 버스로의 I/O에 대해 공통적이거나 비균일 메모리 접근(NUMA; non-uniform memory access) 환경인 비순차적 응답들을 허용하도록 태그(tag)된다.
일관된 SMF 구성에서, 명령 패킷들은 BIF에서 수행되는 트랜잭션을 기술하는 주소 및 제어 정보를 포함한다. 주소 집중기는 명령 패킷들을 수신하고, 명령들이 처리되는 순서를 결정하고, 명령을 선택한다. 선택된 명령 패킷은 반사된 명령의 형태로 BIF에 대해 슬레이브 장치로 마스터 장치에 의해 보내진다(반사된다). 반사된 명령 패킷을 수신한 이후에, 슬레이브는 스누프 반응 패킷의 형태로 응답을 마스터로 보낸다. 스누프 반응 패킷은 반사된 명령 패킷의 수신 또는 거절을 가리킨다. 일부 경우들에서, 슬레이브는 트랜잭션에 대한 최종 목적지가 아닐 수 있다. 이러한 경우들에 대해, 슬레이브는 요청을 최종 목적지로 전송할 책임이 있고, 스누프 반응 패킷을 생성하지 않는다. 전형적으로, 명령 패킷은 데이터 트랜잭션을 위한 요청이다. 일관성 관리 및 동기화와 같은 요청들에 대해, 명령 패킷은 완료 트랜잭션이다. 요청이 데이터 트랜잭션을 위한 것일 때, 제어 정보 및 요청된 데이터를 포함하는 데이터 패킷들은 마스터와 슬레이브 사이에서 전송된다. 전송 계층 정의에 따르면, 명령 및 데이터 패킷들은 BIF에 대한 양쪽 장치들에 의해 동시에 보내지고 수신될 수 있다.
비일관된 구성에 따르면, 명령 패킷들은 바람직하게는 IOIF에 대해 수행되는 트랜잭션을 기술하는 주소 및 제어 정보를 포함한다. 명령 패킷들은 IOIF 명령의 형태로 IOIF에 대한 슬레이브 장치로 마스터에 의해 보내진다. 명령 패킷을 수신한 이후에, 슬레이브는 응답을 IOIF 반응 패킷의 형태로 마스터에 보낸다. 반응 패킷은 IOIF 명령 패킷의 수신 또는 거절을 가리킨다. 일부의 경우들에서, 슬레이브는 트랜잭션에 대한 최종 목적지가 아닐 수 있다. 이러한 경우들에 대해, 슬레이브는 요청을 최종 목적지로 보낸다. 전형적으로 IOIF 명령 패킷은 데이터 트랜잭션을 위한 요청이다. 개입 중단들과 같은 요청들 및 개입 중단 반송 동작들에 대해, 명령 패킷은 완료 트랜잭션이다. 요청이 데이터 트랜잭션을 위한 것일 때, 제어 정보 및 요청된 데이터를 포함하는 데이터 패킷들은 마스터와 슬레이브 사이에서 전송된다. 전송 계층 정의에 따르면, 명령 및 데이터 패킷들은 IOIF에 대한 양쪽 장치들에 의해 동시에 보내지고 수신될 수 있다.
BIC(513)는 MIB와 I/O 인터페이스 사이에서 비동기식 인터페이스를 제공하고, 속도 매칭 SRAM 버퍼들 및 로직, 및 3개의 클락 도메인들을 포함한다. 프로세서 측은 반속도로 동작하고, I/O 측은 RRAC들의 1/3의 속도로 동작하며, 작은 분배 네트워크는 RRAC들의 속도의 절반으로 동작한다. 송신기들 및 수신기들의 높은 속도로 인하여, RRAC들 및 BIC(513)는 교정을 필요로 한다. BIC(513) 교정에 대해, 탄성 버퍼는 인터페이스를 포함하는 바이트들 사이의 비틀림(skew)을 제거하는 데에 이용된다.
위에서 논의된 것처럼, BIC(513)는 2개의 유연한 인터페이스들을 제공한다: (i) 이중 I/O 인터페이스들(IOIF 0/1); 및 (ii) I/O 및 일관된 SMP 인터페이스(IOIF & BIF). 이것은, 하나 이상의 프로세서 요소들이 배치된 시스템 구성에서의 상당한 유연성을 허용한다.
예를 들어, 도 4에 도시된 것처럼, BIC(513)는 PE(500)와 두 장치들(장치 0 및 장치 1) 사이에서 각각의 비일관된 인터페이스들을 설정하기 위해 이중 I/O 인터페이스들(IOIF0 및 IOIF1)을 제공하도록 동작가능하다. 이러한 구성에서, 단일 PE(500)는 IOIF0 및 IOIF1 각각에 대해 데이터를 보내고 수신할 수 있다.
이상에서 논의된 것처럼, 2개의 인터페이스들의 합이 물리적 계층의 전체 대역폭(예를 들어, 30 GB/s 출력 및 25 GB/s 입력)을 초과하지 않는다면 2개의 인터페이스들(BIF-BIF, IOIF-IOIF, 및/또는 BIF-IOIF) 사이에서 분할될 수 있다. 장치 0가 그래픽 엔진과 같은 높은 처리 장치이고 장치 1이 I/O 브릿지와 같은 낮은 처리 장치임을 가정하면, BIC(513)의 대역폭은 적절한 구성을 성취하기 위해 이로운 방식으로 분할될 수 있다. 예를 들어, I/O 브릿지(장치 1)로의 IOIF 1 비일관된 인터페이스가 2.5 GB/s 출력 및 2.5 GB/s 입력인 동안, 그래픽 엔진(장치 0)으로의 IOIF 0 비일관된 인터페이스가 30 GB/s 출력 및 20 GB/s 입력일 수 있다.
도 5에 도시된 것처럼, 2개의 프로세서 요소들(500)은 일관된 SMP 인터페이스 구성으로 각각의 BIC(513)를 이용함으로써 종속접속될 수 있다. 각각의 처리 요소(500)의 일관된 SMP 인터페이스(BIF)는 일관된 인터페이스를 설정하기 위해 서로 연결된다. 각각의 처리 요소(500)의 IOIF는 비일관된 형태로 다른 장치들로/로부터 데이터를 송신하고 수신할 수 있다.
다시, BIC(513)의 물리적 계층 입출력 대역폭이 2개의 인터페이스들 사이에서 분할될 수 있다. 장치 0 및 장치 1이 I/O 브릿지들과 같은 상대적으로 낮은 처리 장치들이라고 가정하면, 각각의 BIC(513)들의 대역폭들은 적절한 구성을 성취하 기 위해 이로운 방식으로 분할될 수 있다. 예를 들어, 장치 0으로의 IOIF 0 비일관된 인터페이스가 5 GB/s 출력 및 5 GB/s 입력일 수 있고, 장치 1로의 IOIF 1 비일관된 인터페이스가 5 GB/s 출력 및 5 GB/s 입력일 수 있으며, 처리 요소들(500) 사이의 일관된 BIF 인터페이스가 20 GB/s 입력 및 20 GB/s 출력일 수 있다.
도 6에 도시된 것처럼, 2개보다 더 많은 처리 요소들(500)이 일관된 SMP 인터페이스 구성으로 각각의 BIC(513)를 이용하여 종속접속될 수 있다. 중앙 프로세서 요소(500)는 2개의 BIF들을 가진 BIC(513)를 이용한다. 각각의 처리 요소(500)의 BIF는 각각의 처리 요소(500) 사이의 일관된 인터페이스를 설정하기 위해 서로 연결된다. 말단 처리 요소들(500)의 IOIF는 비일관된 형태로 데이터를 다른 장치들로/로부터 보내고 수신할 수 있다.
도 7에 도시된 것처럼, 2개보다 더 많은 프로세서 요소들(500)이 I/O 및 일관된 SMP 인터페이스 (IOIF 및 BIF) 구성으로 각각의 BIC(513)를 이용하여 종속접속될 수 있다. 각각의 처리 요소(500)의 일관된 SMP 인터페이스(BIF)는, 일관된 인터페이스를 설정하기 위해 서로 처리 요소들(500)을 효과적으로 연결하는 스위치에 연결될 수 있다. 각각의 처리 요소(500)의 IOIF는 비일관된 형태로 시스템 내의 다른 장치들로/로부터 데이터를 보내고 수신할 수 있다.
SPU들은 일관된 번역 및 보호 DMA를 경유하여 PPU와 함께 시스템 메모리를 공유하지만, 각각의 SPU에 사용되는 256K 로컬 스토리지(LS; local storage)에 의해 지지되는 사적 현실 주소 공간 내에 데이터 및 명령들을 저장한다. SPU들은 프로세서 요소의 큰 연산 성능을 제공한다. 8개의 프로세서들 각각은, 2배 정확 부동 소수점을 제외하면 모든 동작들에 대해 파이프라인(pipeline)된 128-비트 폭 이중-이슈(dual-issue) SIMD 데이터흐름을 포함한다. 피연산 함수들은 통합된 128-엔트리 128-비트 레지스터 파일에 의해 제공된다. 각각의 SPU는, 16-바이트 SPU 로드들 및 저장들 및 명령 (예비)인출뿐만 아니라, MIB로의 전체 대역폭 동시발생 판독 및 기록 DMA 접근들을 지지하는 256kB 단일 포트 LS를 가진다. SPU들은 유효 주소(EA; effective address)를 가진 DMA 명령들을 관련 MFC에 배포함으로써 주 스토리지에 접근한다. MFC는 표준 파워 아키텍쳐 주소 번역을 EA에 적용하고 그 다음에 로컬 스토리지와 주 스토리지 사이의 데이터를 비동기식으로 전송한다. 이것은 오버래핑(overlapping) 통신 및 연산을 허용하고 실시간 동작을 촉진한다. DMA, 큰 레지스터 파일, 및 표준 순차적 실행 시맨틱스(semantics)를 경유하는 공유 메모리로의 SPU 접근은 범용 스트리밍 프로그래밍 환경을 제공한다. 각각의 SPU는, 자원들이 유효한 프로그램들에 의해 접근될 수만 있는 모드로 동작하도록 동적으로 구성될 수 있다.
도 8은 예시적 부처리 유닛(SPU; sub-processing unit; 508)의 또 다른 세부사항들을 도시한다. SPU(508) 아키텍쳐는 (넓은 세트의 어플리케이션들에 대해 높은 평균 성능을 달성하도록 고안된) 범용 프로세서들과 (단일 어플리케이션에 대한 높은 성능을 달성하도록 고안된) 특수목적용 프로세서들 사이의 공간을 바람직하게 채운다. SPU(508)는, 게임 어플리케이션들, 미디어 어플리케이션들, 광대역 시스템들 등에 대한 높은 성능을 성취하고 높은 정도의 제어를 실시간 어플리케이션들의 프로그래머들로 제공하도록 고안된다. SPU(508)의 일부 가능성은 그래픽 기하 파이 프라인들, 표면 재분할, 고속 푸리에 변환들, 영상 처리 키워드들, 스트림 처리, MPEG 엔코딩/디코딩, 암호화, 해독, 장치 드라이버 확장들, 모델링, 게임 물리학, 콘텐츠 생성, 및 오디오 합성 및 처리를 포함한다.
부처리 유닛(508)은, 2개의 기본 기능 유닛들, 즉 SPU 코어(510A) 및 메모리 흐름 제어기(MFC; memory flow controller; 510B)를 포함한다. MFC(510B)가 SPU 코어(510A)와 시스템의 DRAM(514) 사이의 데이터 전송들과 관련된 기능들을 수행하는 반면에, SPU 코어(510A)는 프로그램 실행, 데이터 조작 등을 수행한다.
SPU 코어(510A)는, 로컬 메모리(550), 명령 유닛(IU; instruction unit; 552), 레지스터들(554), 하나 이상의 부동 소수점 실행 스테이지(stage)들(556) 및 하나 이상의 고정 소수점 실행 스테이지들(558)을 포함한다. 로컬 메모리(550)는 SRAM과 같은 단일 포트 임의 접근 메모리를 이용하여 바람직하게 제공된다. 대부분의 프로세서들이 캐시들을 이용하여 메모리로의 대기시간을 감소시키는 반면에, SPU 코어(510A)는 캐시와 다른 상대적으로 다른 로컬 메모리(550)를 제공한다. 정말로, 일관되고 예견 가능한 메모리 접근 대기시간을 실시간 어플리케이션들( 및 여기서 언급된 다른 어플리케이션들)의 프로그래머들에 대해 제공하도록, SPU(508A) 내의 캐시 메모리 아키텍쳐는 선호되지 않는다. 캐시 메모리의 캐시 적중/미스 특성들은 수 사이클들로부터 수 백 사이클들로 변화하는 휘발성 메모리 접근 시간들에 영향을 미친다. 이러한 휘발성은, 예를 들어 실시간 어플리케이션 프로그래밍에 바람직한 접근 타이밍 예견가능성을 깎아낸다. 대기시간 감추기는 DMA 전송들을 데이터 연산과 중복시킴으로써 로컬 메모리 SRAM(550)에서 성취될 수 있 다. 이것은 실시간 어플리케이션들의 프로그래밍을 위한 고도의 제어를 제공한다. DMA 전송들과 관련된 대기시간 및 명령 오버헤드(overhead)가 캐시 미스(cache miss) 제공의 대기시간을 초과함에 따라, DMA 전송 크기가 충분히 크고 충분히 예견가능할 때 SRAM 로컬 메모리 방법은 이익을 얻는다(예를 들어, DMA 명령은 데이터가 필요하기 전에 배포될 수 있다).
부처리 유닛들(508) 중 주어진 부처리 유닛 상에서 실행되는 프로그램은 로컬 주소를 사용하는 관련 로컬 메모리(550)를 참조하지만, 로컬 메모리(550)의 각각의 위치는 또한 전체 시스템의 메모리 맵(map) 내의 실 주소(RA; real address)에 할당된다. 이것은, 하나의 로컬 메모리(550)와 또 다른 로컬 메모리(550) 사이의 DMA 전송들을 촉진하기 위해 프리빌리지(privilege) 소프트웨어가 로컬 메모리(550)를 처리의 유효 주소로 매핑하는 것을 허용한다. PU(504)는 또한 유효 주소를 사용하여 로컬 메모리(550)에 직접 접근할 수 있다. 바람직한 실시형태에서, 로컬 메모리(550)는 556 킬로바이트의 스토리지를 포함하고, 레지스터들(552)의 용량은 128×128 비트이다.
SPU 코어(504A)는, 논리 명령들이 파이프라인 형태로 처리되는 처리 파이프라인을 사용하여 제공되는 것이 바람직하다. 파이프라인은 명령들이 처리되는 임의의 개수의 스테이지들로 분할될지라도, 파이프라인은 하나 이상의 명령들을 인출하는 것, 명령들을 해독하는 것, 명령들 사이의 종속성들을 검사하는 것, 명령들을 배포하는 것, 및 명령들을 실행하는 것을 일반적으로 포함한다. 이와 관련하여, IU(552)는 명령 버퍼, 명령 해독 회로, 종속성 검사 회로, 및 명령 배포 회로를 포 함한다.
명령 버퍼는, 명령들이 인출됨에 따라 로컬 메모리(550)에 연결되고 명령들을 임시적으로 저장하도록 동작가능한 복수의 레지스터들을 포함하는 것이 바람직하다. 명령 버퍼는, 모든 명령들이 레지스터들을 그룹으로서 실질적으로 동시에 남기도록 동작하는 것이 바람직하다. 명령 버퍼가 임의의 크기일 수 있을지라도, 약 2개 또는 3개의 레지스터들보다 더 크지 않은 크기인 것이 바람직하다.
일반적으로, 해독 회로는 명령들을 중지시키고, 대응하는 명령의 기능을 수행하는 논리 마이크로-동작들을 생성한다. 예를 들어, 논리 마이크로-동작들은, 산술 및 논리 동작들, 로컬 메모리(550)로의 로드 및 저장 동작들, 레지스터 소스 피연산 함수들 및/또는 즉석 데이터 피연산 함수들을 지정한다. 해독 회로는, 명령이 타겟 레지스터 주소들, 구조적 자원들, 기능 유닛들 및/또는 버스들과 같은 자원들 중 어느 것을 사용하는지 가리킬 수 있다. 해독 회로는, 자원들이 필요한 명령 파이프라인 스테이지들을 가리키는 정보를 또한 공급할 수 있다. 명령 해독 회로는, 명령 버퍼의 레지스터들의 개수와 동일한 개수의 명령들을 실질적으로 동시에 해독하도록 동작가능한 것이 바람직하다.
종속성 검사 회로는, 주어진 명령의 피연산 함수들이 파이프라인 내의 다른 명령들의 피연산 함수들에 의존하는지 여부를 결정하기 위해 테스팅(testing)을 수행하는 디지털 로직을 포함한다. 의존한다면, 주어진 명령은 그러한 다른 피연산 함수들이 (예를 들어, 실행을 완료하는 다른 명령들을 허용함으로써) 갱신될 때까지 실행되지 않아야 한다. 종속성 검사 회로는 해독기 회로로부터 동시에 발송된 복수의 명령들의 종속성들을 결정한다.
명령 배포 회로는, 명령들을 부동 소수점 실행 스테이지들(556) 및/또는 고정 소수점 실행 스테이지들(558)로 배포하도록 동작가능하다.
레지스터들(554)은 128-엔트리 레지스터 파일과 같은 상대적으로 큰 통합 레지스터 파일로서 제공되는 것이 바람직하다. 이것은, 레지스터 결핍을 방지하기 위해 레지스터 개명을 필요로 하지 않는 깊게 파이프라인된 고주파수 실시들을 고려한다. 하드웨어를 개명하는 것은 전형적으로 처리 시스템 내의 영역 및 전력 중 상당한 부분을 소비한다. 결과적으로, 유리한 동작은, 대기시간들이 소프트웨어 루프 온롤링 또는 다른 인터리빙 기술들에 의해 보상될 때 달성될 수 있다.
바람직하게는, SPU 코어(510A)는 수퍼스칼라(superscalar) 아키텍쳐이고, 하나보다 더 많은 명령이 클락 사이클 당 배포된다. 예를 들면, (2개 또는 3개의 명령들이 클락 사이클 당 배포됨을 의미하는) 2와 3 사이에 있는 동시 명령의 개수에 대응하는 정도의 수퍼스칼라가 명령 버퍼로부터 발송됨에 따라, SPU 코어(510A)가 동작하는 것이 바람직하다. 필요한 처리 전력에 의존하여, 다소의 부동 소수점 실행 스테이지들(556)과 고정 소수점 실행 스테이지들(558)이 이용될 수 있다. 바람직한 실시형태에서, 부동 소수점 실행 스테이지들(556)은 초당 320억 부동 소수점 동작들(32 GFLOPS)의 속도로 동작하고, 고정 소수점 실행 스테이지들(558)은 초당 320억 동작들(32 GOPS)의 속도로 동작한다.
MFC(510B)는, 바람직하게는 버스 인터페이스 유닛(BIU; bus interface unit; 564), 메모리 관리 유닛(MMU; memory management unit; 562), 및 직접 메모리 접근 제어기(DMAC; direct memory access controller; 560)를 포함한다. DMAC(560)를 제외하면, MFC(510B)는, 낮은 전력 손실 고안 목적들을 만족시키기 위해 SPU 코어(510A) 및 버스(512)와 비교하면, 절반의 주파수(반속도)로 실행되는 것이 바람직하다. MFC(510B)는, 버스(512)로부터 SPU(508)로 오는 데이터 및 명령들을 취급하도록 동작가능하고, DMAC에 대한 주소 번역 및 데이터 일관성에 대한 스누프-동작들을 제공한다. BIU(564)는 버스(512) 및 MMU(562) 및 DMAC(560) 사이의 인터페이스를 제공한다. 그러므로, (SPU 코어(510A) 및 MFC(510B)를 포함하는) SPU(508) 및 DMAC(560)는 물리적으로 및/또는 논리적으로 버스(512)에 연결된다.
MMU(562)는 (DMA 명령들로부터 취해진) 유효 주소들을 메모리 접근을 위한 실 주소들로 번역하도록 동작가능한 것이 바람직하다. 예를 들어, MMU(562)는 높은 차수 비트들의 유효 주소를 실 주소 비트들로 번역할 수 있다. 낮은 차수 주소 비트들은, 바람직하게는 번역할 수 없고, 실 주소 및 메모리로의 요청 접근을 형성하는 사용을 위해 논리적으로 그리고 물리적으로 고려된다. 하나 이상의 실시형태들에서, MMU(562)는 64-비트 메모리 관리 모델에 근거하여 제공될 수 있고, 4K-, 64K-, 1M-, 및 16M- 바이트 페이지 크기들 및 256MB 세그먼트 크기들을 가진 264 바이트의 유효 주소 공간을 제공한다. 바람직하게는, MMU(562)는 265 바이트의 가상 메모리, 및 242 바이트(4 테라바이트(TeraBytes))의 DMA 명령들을 위한 물리적 메모리까지를 지지하도록 동작가능하다. MMU(562)의 하드웨어는, 8-엔트리, 전체 결합 SLB, 256-엔트리, 4웨이 세트 결합 TLB, 및 하드웨어 TLB 미스 취급을 위해 사용되 는 TLB용 4×4 RMT(Replacement Management Table)를 포함한다.
DMAC(560)는, SPU 코어(510A) 및 PU(504) 및/또는 다른 SPU들과 같은 하나 이상의 다른 장치들로부터 DMA 명령들을 관리하도록 동작가능한 것이 바람직하다. 데이터를 로컬 메모리(550)로부터 공유 메모리(514)로 이동하도록 동작하는 풋(put) 명령들; 데이터를 공유 메모리(514)로부터 로컬 메모리(550)로 이동하도록 동작하는 겟(get) 명령들; 및 SLI 명령들 및 동기화 명령들을 포함하는 스토리지 제어 명령들과 같은 3개의 카테고리들의 DMA 명령들이 있다. 동기화 명령들은 원자 명령들, 송신 신호 명령들, 및 전용 배리어(barrier) 명령들을 포함할 수 있다. DMA 명령들에 따르면, MMU(562)는 유효 주소를 실 주소로 번역하고 실 주소는 BIU(564)로 전송된다.
SPU 코어(510A)는 바람직하게는 (송신 DMA 명령들, 상태 등을) DMAC(560) 내의 인터페이스와 통신하기 위해 채널 인터페이스 및 데이터 인터페이스를 사용한다. SPU 코어(510A)는 DMA 명령들을 채널 인터페이스를 통하여 DMAC(560) 내의 DMA 대기행렬로 발송한다. DMA 명령이 DMA 대기행렬 내에 있다면, DMA 명령은 DMAC(560) 내의 배포 및 완료 로직에 의해 취급된다. DMA 명령에 대한 모든 버스 트랜잭션들이 종료될 때, 완료 신호는 채널 인터페이스를 통해 SPU 코어(510A)로 보내진다.
처리 요소는, 파워 아키텍쳐 프로세서들에 유연한 64-비트 처리 유닛(504)( 또는 전력 처리 유닛(PPU))를 포함한다. 처리 요소는, 파워 아키텍쳐의 정수, 부동 소수점, VMX 및 MMU 유닛들을 가진 이중-스레디드 코어(dual-threaded core)로서 실행된다. 프로세서는, 32kB 명령 및 데이터 캐시들, 512kB L2 캐시, 및 온-칩 버스 인터페이스 로직을 포함한다. 프로세서는, SPU에 부합하는 낮은 FO4를 얻기 위해 확장된 파이프라인들을 가진 코어의 새로운 그라운드 업(ground up) 실시형태이다. 코어는, 최첨단 수행 능력을 제공하도록 적당한 파이프라인 길이를 가진 향상된 순차적 디자인이다. PPU는, 실시간 동작들을 지지하기 위해 캐시 및 번역 테이블들을 위한 자원 관리 테이블들을 이용하여 확장되었다. 메모리 매핑된 I/O 제어 레지스터들을 통하여, PPU는 SPU를 대신하여 DMA 요청들을 개시할 수 있고 SPU 메일박스들을 가진 통신을 지지할 수 있다. PPU는, 스레드(thread) 관리 지지를 통하여 동시에 실행되는 복수의 동시발생 동작 시스템들을 허용하는 파워 아키텍쳐 하이퍼바이저 확장들을 실시한다.
도 9는 PU(504)의 예시적 구조 및 기능을 도시한다. PU(504)는, 2개의 기본 기능 유닛들, PU 코어(504A) 및 메모리 흐름 제어기(MFC; 504B)를 포함한다. MFC(504B)가 PU 코어(504A)와 시스템(100)의 메모리 공간 사이의 데이터 전송들과 관련된 기능들을 수행하는 동안, PU 코어(504A)는 프로그램 실행, 데이터 조작, 멀티-프로세서 관리 기능들 등을 수행한다.
PU 코어(504A)는 L1 캐시(570), 명령 유닛(572), 레지스터들(574), 하나 이상의 부동 소수점 실행 스테이지들(576) 및 하나 이상의 고정 소수점 실행 스테이지들(578)을 포함한다. L1 캐시는 공유 메모리(106), 프로세서들(102), 또는 메모리 공간의 다른 부분들로부터 MFC(504B)를 통하여 수신된 데이터를 위한 데이터 캐싱 기능을 제공한다. PU 코어(504A)는 바람직하게는 수퍼파이프라인으로서 제공되 기 때문에, 명령 유닛(572)은 인출, 해독, 종속성 검사, 배포 등을 포함하여 많은 스테이지들을 가진 명령 파이프라인으로서 바람직하게 제공된다. PU 코어(504A)는 바람직하게는 수퍼스칼라 구성이며, 수퍼스칼라 구성에 의해 하나보다 더 많은 명령이 클락 사이클 당 명령 유닛(572)으로부터 배포된다. 높은 처리 능력을 얻기 위해, 부동 소수점 실행 스테이지들(576) 및 고정 소수점 실행 스테이지들(578)은 파이프라인 구성에서 복수의 스테이지들을 포함한다. 필요한 처리 능력에 따라서, 다소의 부동 소수점 실행 스테이지들(576) 및 고정 소수점 실행 스테이지들(578)이 이용될 수 있다.
MFC(504B)는, 버스 인터페이스 유닛(BIU; bus interface unit; 580), L2 캐시 메모리, 캐시할 수 없는 유닛(NCU; non-cachable unit; 584), 코어 인터페이스 유닛(CIU; core interface unit; 586), 및 메모리 관리 유닛(MMU; memory management unit; 588)을 포함한다. MFC(504B)의 대부분은, 낮은 전력 손실 디자인 목적들을 충족시키는 PU 코어(504A) 및 버스(108)와 비교한다면 절반의 주파수(반속도)로 실행된다.
BIU(580)는 버스(108) 및 L2 캐시(582) 및 NCU(584) 로직 블록들 사이의 인터페이스를 제공한다. 이러한 목적을 위해, BIU(580)는, 전체적으로 일관된 메모리 동작들을 수행하기 위해 버스(108)에 대한 슬레이브 장치뿐만 아니라 마스터로서 작용한다. 마스터 장치로서, BIU(580)는 L2 캐시(582) 및 NCU(584)를 대신하여 서비스에 대한 버스(108)로의 로드/저장 요청들의 출처를 명시할 수 있다. BIU(580)는, 버스(108)로 보내질 수 있는 명령들의 총개수를 제한하는 명령들을 위한 흐름 제어 메커니즘을 실시할 수 있다. 버스(108)에 대한 데이터 동작들은 8 비이트(beat)를 취하도록 고안될 수 있고, 따라서, BIU(580)는 바람직하게는 약 128 바이트 캐시-라인들로 고안되며, 일관성 및 동기화 정밀도는 128KB이다.
L2 캐시 메모리(582)( 및 지지 하드웨어 로직)는 데이터의 캐시 512KB로 고안되는 것이 바람직하다. 예를 들어, L2 캐시(582)는 캐시가능 로드들/저장들, 데이터 예비인출들, 명령 인출들, 명령 예비인출들, 캐시 동작들, 및 배리어 동작들을 취급할 수 있다. L2 캐시(582)는 바람직하게는 8-웨이 세트 결합 시스템이다. L2 캐시(582)는, (예를 들어, 6개의 RC 기계들과 같은) 6개의 캐스트아웃(castout) 대기행렬들에 부합하는 6개의 재로드 대기행렬들, 및 8개의 (64-바이트 폭) 저장 대기행렬들을 포함한다. L2 캐시(582)는, L1 캐시(570) 내의 데이터의 일부 또는 전부의 백업 복사본을 제공하도록 동작할 수 있다. 유리하게, 처리 노드들이 핫 스와프(hot-swap)될 때, 이것은 재저장 상태에서 이용된다. (요청들이 L2 캐시(582)에서 정지할 수 있기 때문에) 이러한 구성은, L1 캐시(570)가 더 적은 포트들을 가지고 더 빨리 동작하는 것을 허용하고, 더 빠른 캐시-투-캐시(cache-to-cache) 전송들을 허용한다. 이러한 구성은 또한 L2 캐시 메모리(582)로 캐시 일관성 관리를 통과시키기 위한 메커니즘을 제공한다.
NCU(584)는 CIU(586), L2 캐시 메모리(582), 및 BIU(580)와 상호작용하고, PU 코어(504A) 및 메모리 시스템 사이의 캐시할 수 없는 동작들을 위한 대기행렬/버퍼링 회로로서 일반적으로 기능한다. NCU(584)는, 캐시-금지 로드/저장들, 배리어 동작들, 및 캐시 일관성 동작들과 같은 L2 캐시(582)에 의해 취급되지 않는 PU 코어(504A)와의 모든 통신들을 취급하는 것이 바람직하다. NCU(584)는 상술한 전력 손실 목적들을 충족시키기 위해 반속도로 실행되는 것이 바람직하다.
CIU(586)는, MFC(504B)와 PU 코어(504A)의 경계에 배치되고, 실행 스테이지들(576, 578), 명령 유닛(572), 및 MMU 유닛(588)으로부터 오고 L2 캐시(582) 및 NCU(584)로 가는 요청들을 위한 경로설정, 중재, 흐름 제어 점으로서 작용한다. L2 캐시(582) 및 NCU(584)는 2:1 속도비로 동작가능하지만, PU 코어(504A) 및 MMU(588)는 최고 속도로 실행되는 것이 바람직하다. 그러므로, 주파수 경계는 CIU(586) 내에 존재하고, CIU(586)의 기능들 중 하나는, 2개의 주파수 영역들 사이에서 데이터를 전송하고, 요청하며, 재로드함에 따라 주파수 교차를 적절히 취급하는 것이다.
CIU(586)는 3개의 기능 블록들로 이루어진다: 로드 유닛, 저장 유닛, 및 재로드 유닛. 게다가, 데이터 예비인출 기능은 CIU(586)에 의해 수행되고 바람직하게는 로드 유닛의 기능부에 의해 수행된다. CIU(586)는, 바람직하게는 (i) PU 코어(504A) 및 MMU(588)로부터 로드 및 저장 요청들을 수신하고; (ii) 요청들을 최고 속도 클락 주파수로부터 반속도로 변환하고 (2:1 클락 주파수 변환); (iii) L2 캐시(582)로의 캐시가능 요청들을 경로설정하고 NCU(584)로의 캐시할 수 없는 요청들을 경로설정하며; (iv) L2 캐시(582) 및 NCU(584)로의 요청들 사이에서 공정하게 중재하고; (v) 요청들이 타겟 윈도우에서 수신되고 넘침이 방지되도록 L2 캐시(582) 및 NCU(584)로의 발송에 대한 흐름 제어를 제공하며; (vi) 로드 복귀 데이터를 수신하고, 실행 스테이지들(576, 578), 명령 유닛(572), 또는 MMU(588)로 경 로설정하며; (vii) 스누프 요청들을 실행 스테이지들(576, 578), 명령 유닛(572), 또는 MMU(588)로 통과시키고; (viii) 로드 복귀 데이터 및 스누프 트래픽(traffic)을 반속도로부터 최고 속도로 변환하도록 동작가능하다.
MMU(588)는 바람직하게는 제 2 레벨 주소 번역 기능에 의해 PU 코어(504A)에 대한 주소 번역을 제공한다. 제 1 레벨의 번역은, MMU(588)보다 훨씬 더 작고 더 빠른 분리된 명령 및 데이터 ERAT(effective to real address translation) 배열들에 의해 PU 코어(504A)에서 제공되는 것이 바람직하다.
바람직한 실시형태에서, PU(504)는 64-비트 실시형태로 4-6 GHz, 10F04에서 동작한다. (하나 이상의 특별 목적 레지스터들이 더 작을지라도) 레지스터들은 바람직하게는 64 비트 길이이고 유효 주소들은 64 비트 길이이다. 명령 유닛(570), 레지스터들(572) 및 실행 스테이지들(574 및 576)은 (RISC) 연산 기술을 성취하기 위하여 파워피씨 기술을 이용하여 실시되는 것이 바람직하다.
이러한 컴퓨터 시스템의 모듈 구조에 관한 추가적인 세부사항들이 미국특허공보 제6526491호에 공개되어 있다.
본 발명의 적어도 하나의 또 다른 실시형태에 따르면, 이상에서 기술된 방법들 및 장치는 도면들에 도시된 것처럼 적절한 하드웨어를 사용하여 달성될 수 있다. 이러한 하드웨어는, 표준 디지털 회로, 소프트웨어 및/또는 펌웨어(firmware) 프로그램들을 실행시키도록 동작가능한 공지된 프로세서들, 프로그램가능 리드 온리 메모리(PROM; programmable read only memory)들, 프로그램가능 배열 논리 장 치(PAL; programmable array logic device)들 등과 같은 하나 이상의 프로그램가능 디지털 장치들 또는 시스템들과 같은 공지된 기술들을 이용하여 실시될 수 있다. 게다가, 도면들에 도시된 장치가 특정 기능 블록들로 분할되는 것처럼 도시될지라도, 이러한 블록들은 분리된 회로에 의해 실시될 수 있고, 또는 하나 이상의 기능 유닛들로 결합될 수 있다. 게다가, 본 발명의 다양한 태양들이 운송능력 및/또는 분배를 위해 (플로피 디스크, 메모리 칩 등과 같은) 적절한 저장 매체에 저장될 수 있는 소프트웨어 및/또는 펌웨어 프로그램에 의해 실시될 수 있다.
본 발명이 특정 실시형태들과 참조하여 기술될지라도, 이러한 실시형태들은 본 발명의 원리들 및 어플리케이션들로 단순하게 설명한다. 그러므로, 많은 변형예들이 예시적인 실시형태들에 행해질 수 있고, 다른 배열들이 첨부된 청구범위에 의해 정해진 본 발명의 사상과 범위로부터 벗어나지 않게 고안될 수 있다.

Claims (17)

  1. 하나 이상의 통신 버스(bus)들을 통하여 서로 영향을 미치게 연결된 복수의 프로세서(processor)들; 및
    (i) 멀티프로세서(multiprocessor)와 하나 이상의 외부 장치들을 상호연결하고, 상기 멀티프로세서의 하나 이상의 메모리들과 상기 하나 이상의 외부 장치들의 하나 이상의 메모리들 사이에서 캐시 일관성(cache coherency)을 유지할 수 있는 일관된 대칭 인터페이스(coherent symmetric interface)를 제공하는 제 1 모드(mode); 또는 (ii) 상기 프로세서와 하나 이상의 외부 장치들을 상호연결하고, 상기 멀티프로세서의 하나 이상의 메모리들 중 적어도 일부 메모리를 보호할 수 있는 비일관된 인터페이스(non-coherent interface)를 제공하는 제 2 모드에서의 동작에 적합한 구성가능 인터페이스 회로를 포함하는 것을 특징으로 하는 멀티프로세서.
  2. 제 1 항에 있어서, 상기 구성가능 인터페이스 회로는 논리 계층, 전송 계층, 및 물리적 계층을 포함하는 것을 특징으로 하는 멀티프로세서.
  3. 제 2 항에 있어서,
    상기 논리 계층은, 상기 제 1 모드에서 동작하기 위한 일관성 규칙들, 및 상기 제 2 모드에서 동작하기 위한 순서화 규칙들을 정의하는 데에 적합하고;
    상기 전송 계층은, 상기 멀티프로세서와 상기 하나 이상의 외부 장치들 사이의 전송을 위해 명령 및 데이터 패킷(data packet) 구성들을 정의하는 데에 적합하며;
    상기 물리적 계층은, 상기 멀티프로세서와 상기 하나 이상의 외부 장치들 사이의 메모리 접근 명령들의 전기적 특성들 및 타이밍(timing), 메모리 스누프(snoop) 요청들, 및 데이터 전송들을 정의하기에 적합한 것을 특징으로 하는 멀티프로세서.
  4. 제 1 항에 있어서, 상기 구성가능 인터페이스 회로는, 상기 멀티프로세서와 상기 하나 이상의 외부 장치들 사이의 메모리 접근 명령들, 메모리 스누프 요청들, 및 데이터 전송들이 행해지도록 동작가능한 것을 특징으로 하는 멀티프로세서.
  5. 제 4 항에 있어서, 상기 메모리 접근 명령들, 메모리 스누프 요청들, 및 데이터 전송들은 비동기식 독립 패킷들의 형태인 것을 특징으로 하는 멀티프로세서.
  6. 제 5 항에 있어서, 상기 패킷들은 주소 정보 및 요망된 트랜잭션(transaction)을 정의하는 제어 정보를 포함하는 것을 특징으로 하는 멀티프로세서.
  7. 제 1 항에 있어서, 상기 구성가능 인터페이스 회로는, 제 1 인터페이스 및 제 2 인터페이스를 포함하고, 각각의 인터페이스는 상기 제 1 모드 및 상기 제 2 모드에서의 독립 동작에 적합한 것을 특징으로 하는 멀티프로세서.
  8. 각각이 하나 이상의 통신 버스들을 통하여 서로 영향을 미치며 연결된 복수의 프로세서들을 포함하는 하나 이상의 멀티프로세서들; 및 (i) 일관된 대칭 인터페이스를 제공하는 제 1 모드, 또는 (ii) 구성가능 인터페이스 회로가 상기 멀티프로세서와 하나 이상의 외부 장치들을 상호연결할 수 있으며, 비일관된 인터페이스를 제공하는 제 2 모드에서의 동작에 적합한 상기 구성가능 인터페이스 회로를 포함하는 시스템으로서,
    각각의 멀티프로세서의 구성가능 인터페이스 회로는 제 1 인터페이스 및 제 2 인터페이스를 포함하고, 각각의 인터페이스는 상기 제 1 모드 및 제 2 모드에서의 독립 동작에 적합한 것을 특징으로 하는 시스템.
  9. 제 8 항에 있어서,
    상기 제 2 모드에서 동작하는, 멀티프로세서들 중 하나의 멀티프로세서의 제 1 인터페이스를 통하여 상기 하나의 멀티프로세서에 연결된 제 1 외부 장치; 및
    상기 제 2 모드에서 동작하는, 상기 하나의 멀티프로세서의 제 2 인터페이스를 통하여 상기 하나의 멀티프로세서에 연결된 제 2 외부 장치를 더 포함하는 것을 특징으로 하는 시스템.
  10. 제 8 항에 있어서,
    상기 제 1 모드에서 동작하는 적어도 2개의 멀티프로세서들의 제 1 인터페이스들을 경유하여 상호연결되는 상기 적어도 2개의 멀티프로세서들;
    상기 제 2 모드에서 동작하는, 상기 적어도 2개의 멀티프로세서들 중 하나의 멀티프로세서의 제 2 인터페이스를 통하여 상기 적어도 2개의 멀티 프로세서들 중 상기 하나의 멀티프로세서에 연결된 제 1 외부 장치; 및
    상기 제 2 모드에서 동작하는, 상기 적어도 2개의 멀티프로세서들 중 다른 하나의 멀티프로세서의 제 2 인터페이스를 통하여 상기 적어도 2개의 멀티프로세서들 중 상기 다른 하나의 멀티프로세서에 연결된 제 2 외부 장치를 더 포함하는 것을 특징으로 하는 시스템.
  11. 제 8 항에 있어서,
    상기 제 1 모드에서 동작하는 멀티프로세서들 중 제 1 멀티프로세서 및 제 2 멀티프로세서의 제 1 인터페이스들을 경유하여 상호연결되는 상기 제 1 멀티프로세서 및 상기 제 2 멀티프로세서; 및
    상기 제 1 모드에서 각각 동작하는, 상기 멀티프로세서들 중 상기 제 1 멀티프로세서 및 제 3 멀티프로세서의 제 2 인터페이스 및 제 1 인터페이스를 경유하여 상호연결되는 상기 제 1 멀티프로세서 및 상기 제 3 멀티프로세서를 더 포함하며,
    상기 제 2 멀티프로세서 및 상기 제 3 멀티프로세서의 제 2 인터페이스들은 2개 이상의 외부 장치들 중 하나와 상호연결을 위해 동작가능한 것을 특징으로 하 는 시스템.
  12. 제 11 항에 있어서,
    상기 제 2 모드에서 동작하는, 상기 제 2 멀티프로세서 및 상기 제 3 멀티프로세서 중 하나의 멀티프로세서의 제 2 인터페이스를 통하여 상기 하나의 멀티프로세서에 연결된 제 1 외부 장치; 및
    상기 제 2 모드에서 동작하는, 상기 제 2 멀티프로세서 및 상기 제 3 멀티프로세서 중 다른 하나의 멀티프로세서의 제 2 인터페이스를 통하여 상기 다른 하나의 멀티프로세서에 연결된 제 2 외부 장치를 더 포함하는 것을 특징으로 하는 시스템.
  13. 제 8 항에 있어서,
    멀티-포트(multi-port) 데이터 스위치; 및
    상기 제 1 모드에서 동작하는, 복수의 멀티프로세서들의 제 1 인터페이스들을 경유하여 상기 스위치에 연결된 상기 복수의 멀티프로세서들을 더 포함하며,
    상기 멀티프로세서들의 제 2 인터페이스들은 2개 이상의 외부 장치들 중 하나와의 상호연결을 위해 동작가능한 것을 특징으로 하는 시스템.
  14. 제 13 항에 있어서, 상기 제 2 모드에서 동작하는, 상기 멀티프로세서들 중 하나의 멀티프로세서의 제 2 인터페이스를 통하여 상기 하나의 멀티프로세서에 연 결된 적어도 하나의 외부 장치를 더 포함하는 것을 특징으로 하는 시스템.
  15. 하나 이상의 통신 버스들을 통해 서로 영향을 미치며 연결된 복수의 프로세서들을 제공하는 단계; 및
    (i)일관된 대칭 인터페이스를 제공하는 제 1 모드; 또는 (ii)비일관된 인터페이스를 제공하는 제 2 모드에서 동작하는 인터페이스 회로를 구성하는 단계를 포함하는 방법으로서,
    상기 일관된 대칭 인터페이스는, 상기 멀티프로세서의 하나 이상의 메모리들과 상기 하나 이상의 외부 장치들의 하나 이상의 메모리들 사이의 캐시 일관성을 유지하기 위해 상기 멀티프로세서와 하나 이상의 외부 장치들을 상호연결할 수 있고, 상기 비일관된 인터페이스는, 상기 멀티프로세서의 상기 하나 이상의 메모리들 중 적어도 일부 메모리를 보호하기 위해 상기 멀티프로세서와 하나 이상의 외부 장치들을 상호연결할 수 있는 것을 특징으로 하는 방법.
  16. 제 15 항에 있어서, 적어도 하나의 외부 장치를 상기 인터페이스에 연결하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  17. 제 16 항에 있어서, 상기 프로세서들과 상기 하나 이상의 외부 장치들 사이에서 메모리 접근 명령들, 메모리 스누프 요청들, 및/또는 데이터 전송들을 공급하는 단계를 더 포함하는 것을 특징으로 하는 방법.
KR1020077009570A 2004-10-15 2005-10-14 멀티프로세서 시스템 내의 복수의 구성들을 지지하기 위한방법들 및 장치 KR100875030B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US61906904P 2004-10-15 2004-10-15
US60/619,069 2004-10-15
PCT/JP2005/019347 WO2006041218A2 (en) 2004-10-15 2005-10-14 Methods and apparatus for supporting multiple configurations in a multi-processor system

Publications (2)

Publication Number Publication Date
KR20070073825A true KR20070073825A (ko) 2007-07-10
KR100875030B1 KR100875030B1 (ko) 2008-12-19

Family

ID=36148726

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077009570A KR100875030B1 (ko) 2004-10-15 2005-10-14 멀티프로세서 시스템 내의 복수의 구성들을 지지하기 위한방법들 및 장치

Country Status (9)

Country Link
US (2) US7802023B2 (ko)
EP (1) EP1805627B1 (ko)
JP (1) JP4286826B2 (ko)
KR (1) KR100875030B1 (ko)
CN (1) CN101057223B (ko)
AT (1) ATE498867T1 (ko)
DE (1) DE602005026421D1 (ko)
TW (1) TWI321414B (ko)
WO (1) WO2006041218A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160143619A (ko) * 2013-12-27 2016-12-14 인텔 코포레이션 클러스터 레벨에서의 데이터 일관성 모델 및 프로토콜

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
CA2559584A1 (en) 2004-03-13 2005-09-29 Cluster Resources, Inc. System and method of providing a self-optimizing reservation in space of compute resources
US8782654B2 (en) 2004-03-13 2014-07-15 Adaptive Computing Enterprises, Inc. Co-allocating a reservation spanning different compute resources types
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
US8176490B1 (en) 2004-08-20 2012-05-08 Adaptive Computing Enterprises, Inc. System and method of interfacing a workload manager and scheduler with an identity manager
US8271980B2 (en) 2004-11-08 2012-09-18 Adaptive Computing Enterprises, Inc. System and method of providing system jobs within a compute environment
US7418541B2 (en) * 2005-02-10 2008-08-26 International Business Machines Corporation Method for indirect access to a support interface for memory-mapped resources to reduce system connectivity from out-of-band support processor
US7467204B2 (en) * 2005-02-10 2008-12-16 International Business Machines Corporation Method for providing low-level hardware access to in-band and out-of-band firmware
US7392350B2 (en) * 2005-02-10 2008-06-24 International Business Machines Corporation Method to operate cache-inhibited memory mapped commands to access registers
US8863143B2 (en) 2006-03-16 2014-10-14 Adaptive Computing Enterprises, Inc. System and method for managing a hybrid compute environment
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
EP1872249B1 (en) 2005-04-07 2016-12-07 Adaptive Computing Enterprises, Inc. On-demand access to compute resources
JP2007148709A (ja) * 2005-11-28 2007-06-14 Hitachi Ltd プロセッサシステム
JP4662474B2 (ja) 2006-02-10 2011-03-30 ルネサスエレクトロニクス株式会社 データ処理デバイス
US7814279B2 (en) * 2006-03-23 2010-10-12 International Business Machines Corporation Low-cost cache coherency for accelerators
US8041773B2 (en) 2007-09-24 2011-10-18 The Research Foundation Of State University Of New York Automatic clustering for self-organizing grids
US7873066B2 (en) * 2009-01-26 2011-01-18 International Business Machines Corporation Streaming direct inter-thread communication buffer packets that support hardware controlled arbitrary vector operand alignment in a densely threaded network on a chip
US8487655B1 (en) * 2009-05-05 2013-07-16 Cypress Semiconductor Corporation Combined analog architecture and functionality in a mixed-signal array
US8179161B1 (en) 2009-05-05 2012-05-15 Cypress Semiconductor Corporation Programmable input/output circuit
US9069929B2 (en) 2011-10-31 2015-06-30 Iii Holdings 2, Llc Arbitrating usage of serial port in node card of scalable and modular servers
US9465771B2 (en) 2009-09-24 2016-10-11 Iii Holdings 2, Llc Server on a chip and node cards comprising one or more of same
US9077654B2 (en) * 2009-10-30 2015-07-07 Iii Holdings 2, Llc System and method for data center security enhancements leveraging managed server SOCs
US9054990B2 (en) 2009-10-30 2015-06-09 Iii Holdings 2, Llc System and method for data center security enhancements leveraging server SOCs or server fabrics
US20130107444A1 (en) 2011-10-28 2013-05-02 Calxeda, Inc. System and method for flexible storage and networking provisioning in large scalable processor installations
US8599863B2 (en) 2009-10-30 2013-12-03 Calxeda, Inc. System and method for using a multi-protocol fabric module across a distributed server interconnect fabric
US20110103391A1 (en) 2009-10-30 2011-05-05 Smooth-Stone, Inc. C/O Barry Evans System and method for high-performance, low-power data center interconnect fabric
US9876735B2 (en) 2009-10-30 2018-01-23 Iii Holdings 2, Llc Performance and power optimized computer system architectures and methods leveraging power optimized tree fabric interconnect
US9648102B1 (en) 2012-12-27 2017-05-09 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US9680770B2 (en) 2009-10-30 2017-06-13 Iii Holdings 2, Llc System and method for using a multi-protocol fabric module across a distributed server interconnect fabric
US9311269B2 (en) 2009-10-30 2016-04-12 Iii Holdings 2, Llc Network proxy for high-performance, low-power data center interconnect fabric
US10877695B2 (en) 2009-10-30 2020-12-29 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US8625295B2 (en) 2011-01-24 2014-01-07 General Electric Company Fieldbus interface circuit board supporting multiple interface types and terminations
US20150058524A1 (en) * 2012-01-04 2015-02-26 Kenneth C. Creta Bimodal functionality between coherent link and memory expansion
CN105051707A (zh) 2013-04-01 2015-11-11 惠普发展公司,有限责任合伙企业 外部存储器控制器
US11126372B2 (en) 2013-04-01 2021-09-21 Hewlett Packard Enterprise Development Lp External memory controller
US9727464B2 (en) 2014-11-20 2017-08-08 International Business Machines Corporation Nested cache coherency protocol in a tiered multi-node computer system
US9886382B2 (en) 2014-11-20 2018-02-06 International Business Machines Corporation Configuration based cache coherency protocol selection
US20180365070A1 (en) * 2017-06-16 2018-12-20 International Business Machines Corporation Dynamic throttling of broadcasts in a tiered multi-node symmetric multiprocessing computer system
CN107688471B (zh) * 2017-08-07 2021-06-08 北京中科睿芯科技集团有限公司 一种动态调整数据流架构的资源带宽的计算系统及其方法
NO344681B1 (en) * 2017-09-05 2020-03-02 Numascale As Coherent Node Controller
US20190042455A1 (en) * 2018-05-04 2019-02-07 Intel Corporation Globally addressable memory for devices linked to hosts
KR20200066774A (ko) 2018-12-03 2020-06-11 삼성전자주식회사 반도체 장치

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5530932A (en) * 1994-12-23 1996-06-25 Intel Corporation Cache coherent multiprocessing computer system with reduced power operating features
US7933295B2 (en) * 1999-04-13 2011-04-26 Broadcom Corporation Cable modem with voice processing capability
US6487619B1 (en) * 1999-10-14 2002-11-26 Nec Corporation Multiprocessor system that communicates through an internal bus using a network protocol
US6574725B1 (en) * 1999-11-01 2003-06-03 Advanced Micro Devices, Inc. Method and mechanism for speculatively executing threads of instructions
US6526322B1 (en) * 1999-12-16 2003-02-25 Sirf Technology, Inc. Shared memory architecture in GPS signal processing
US6795896B1 (en) * 2000-09-29 2004-09-21 Intel Corporation Methods and apparatuses for reducing leakage power consumption in a processor
US6526491B2 (en) * 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US7394823B2 (en) * 2001-11-20 2008-07-01 Broadcom Corporation System having configurable interfaces for flexible system configurations
US7093080B2 (en) * 2003-10-09 2006-08-15 International Business Machines Corporation Method and apparatus for coherent memory structure of heterogeneous processor systems
US7321958B2 (en) * 2003-10-30 2008-01-22 International Business Machines Corporation System and method for sharing memory by heterogeneous processors
US8108564B2 (en) * 2003-10-30 2012-01-31 International Business Machines Corporation System and method for a configurable interface controller
US7143246B2 (en) * 2004-01-16 2006-11-28 International Business Machines Corporation Method for supporting improved burst transfers on a coherent bus

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160143619A (ko) * 2013-12-27 2016-12-14 인텔 코포레이션 클러스터 레벨에서의 데이터 일관성 모델 및 프로토콜

Also Published As

Publication number Publication date
US7802023B2 (en) 2010-09-21
ATE498867T1 (de) 2011-03-15
TWI321414B (en) 2010-03-01
CN101057223A (zh) 2007-10-17
TW200631355A (en) 2006-09-01
WO2006041218A2 (en) 2006-04-20
EP1805627A2 (en) 2007-07-11
WO2006041218A3 (en) 2007-04-26
CN101057223B (zh) 2011-09-14
JP2006120147A (ja) 2006-05-11
US8010716B2 (en) 2011-08-30
KR100875030B1 (ko) 2008-12-19
US20100312969A1 (en) 2010-12-09
DE602005026421D1 (de) 2011-03-31
EP1805627B1 (en) 2011-02-16
JP4286826B2 (ja) 2009-07-01
US20060092957A1 (en) 2006-05-04

Similar Documents

Publication Publication Date Title
KR100875030B1 (ko) 멀티프로세서 시스템 내의 복수의 구성들을 지지하기 위한방법들 및 장치
US7526608B2 (en) Methods and apparatus for providing a software implemented cache memory
US7613886B2 (en) Methods and apparatus for synchronizing data access to a local memory in a multi-processor system
EP1839165B1 (en) Methods and apparatus for hybrid dma queue and dma table
EP1834245B1 (en) Methods and apparatus for list transfers using dma transfers in a multi-processor system
US20060259733A1 (en) Methods and apparatus for resource management in a logically partitioned processing environment
US7818724B2 (en) Methods and apparatus for instruction set emulation
KR100881810B1 (ko) 외부 장치로부터 프로세서의 메모리로의 주소 번역을 위한방법 및 기구
WO2006064962A1 (en) Methods and apparatus for providing an asynchronous boundary between internal busses in a multi-processor device
US20080091886A1 (en) Dynamic Path Determination To An Address Concentrator
US7818507B2 (en) Methods and apparatus for facilitating coherency management in distributed multi-processor system
JP4024271B2 (ja) マルチプロセッサシステムにおいて命令を処理するための方法と装置

Legal Events

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

Payment date: 20121121

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20131118

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20141120

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20151118

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20161122

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20171120

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20181121

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20191120

Year of fee payment: 12