KR101830685B1 - 온칩 메시 상호접속부 - Google Patents

온칩 메시 상호접속부 Download PDF

Info

Publication number
KR101830685B1
KR101830685B1 KR1020157033960A KR20157033960A KR101830685B1 KR 101830685 B1 KR101830685 B1 KR 101830685B1 KR 1020157033960 A KR1020157033960 A KR 1020157033960A KR 20157033960 A KR20157033960 A KR 20157033960A KR 101830685 B1 KR101830685 B1 KR 101830685B1
Authority
KR
South Korea
Prior art keywords
ring
interconnect
interconnects
message
rings
Prior art date
Application number
KR1020157033960A
Other languages
English (en)
Other versions
KR20160004370A (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 KR20160004370A publication Critical patent/KR20160004370A/ko
Application granted granted Critical
Publication of KR101830685B1 publication Critical patent/KR101830685B1/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
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/4031Coupling between buses using bus bridges with arbitration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17375One dimensional, e.g. linear array, ring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17381Two dimensional, e.g. mesh, torus

Abstract

제 1 방향으로 배향된 복수의 링 및 제 1 방향에 실질적으로 직교하는 제 2 방향으로 배향된 복수의 링을 포함하는 메시 상호접속부의 제 1 링에 접속된 제 1 링 스톱에서 특정 메시지가 수신된다. 특정 메시지는 메시 상호접속부의 제 2 링 상에 주입된다. 제 1 링은 제 1 방향으로 배향되고, 제 2 링은 제 2 방향으로 배향되며, 특정 메시지는 제 2 링 상에서 제 2 링에 접속된 목적지 컴포넌트의 다른 링 스톱으로 전송된다.

Description

온칩 메시 상호접속부{ON-CHIP MESH INTERCONNECT}
본 발명은 컴퓨팅 시스템에 관한 것으로서, 구체적으로는 다중 코어 프로세서 상호접속 아키텍처에 관한 것이나 이에 제한되는 것은 아니다.
프로세서 칩들은 최근 수십 년 동안 크게 발전하였다. 다중 코어 칩들의 출현은 개인용 컴퓨터들 및 서버들을 포함하는 컴퓨팅 디바이스들 내에서 병렬 컴퓨팅 및 다른 기능을 가능하게 하였다. 프로세서들은 처음에 하나의 코어만을 갖도록 개발되었다. 각각의 코어는 프로그램 명령어들을 판독 및 실행할 수 있는 독립적인 중앙 처리 유닛(CPU)일 수 있다. 이중, 사중, 심지어 육중 코어 프로세서들이 개인용 컴퓨팅 디바이스들을 위해 개발된 반면, 고성능 서버 칩들은 10개, 20개 이상의 코어를 갖도록 개발되었다. 코어들은 유선 도체들 또는 다른 송신 매체들의 온칩 상호접속부를 이용하여 다른 온칩 컴포넌트들과 함께 상호접속될 수 있다. 칩 상의 코어들의 수를 스케일링하는 것은 코어들의 고속 상호접속을 용이하게 하고자 하는 칩 설계자들에게 난제를 제공할 수 있다. 많은 예들 가운데 특히 링 버스 상호접속 아키텍처들을 포함하는 다양한 상호접속 아키텍처들이 개발되었다.
도 1은 다중 코어 프로세서를 포함하는 컴퓨팅 시스템에 대한 블록도의 일 실시예를 나타낸다.
도 2는 링 상호접속 아키텍처의 제 1 실시예를 이용하는 다중 코어 칩의 블록도를 나타낸다.
도 3은 링 상호접속 아키텍처의 제 2 실시예를 이용하는 다중 코어 칩의 블록도를 나타낸다.
도 4는 링 메시 상호접속 아키텍처의 일 실시예를 이용하는 다중 코어 칩의 블록도를 나타낸다.
도 5는 예시적인 링 메시 상호접속 아키텍처 내의 제 1의 예시적인 링 스톱의 블록도를 나타낸다.
도 6은 예시적인 링 메시 상호접속 아키텍처 내의 제 2의 예시적인 링 스톱의 블록도를 나타낸다.
도 7은 예시적인 링 메시 상호접속부에 접속된 타일의 블록도를 나타낸다.
도 8은 링 메시 상호접속 아키텍처의 일 실시예를 이용하는 다중 코어 칩의 예시적인 바닥 계획을 나타낸다.
도 9a-9c는 예시적인 링 메시 상호접속부 상의 예시적인 흐름들을 나타낸다.
도 10a-10b는 예시적인 링 메시 상호접속부를 이용하여 수행되는 예시적인 기술들을 나타내는 흐름도들을 도시한다.
도 11은 컴퓨팅 시스템에 대한 블록도의 다른 실시예를 나타낸다.
다양한 도면들에서 동일한 참조 번호들 및 지시들은 동일한 요소들을 지시한다.
아래의 설명에서는, 본 발명의 충분한 이해를 제공하기 위해, 특정 타입의 프로세서들 및 시스템 구성들, 특정 하드웨어 구조들, 특정 아키텍처 및 마이크로 아키텍처 상세들, 특정 레지스터 구성들, 특정 명령어 타입들, 특정 시스템 컴포넌트들, 특정 측정들/높이들, 특정 프로세서 파이프라인 스테이지들 및 동작 등과 같은 다수의 특정 상세들이 설명된다. 그러나, 이러한 특정 상세들은 본 발명을 실시하는 데 이용될 필요가 없다는 것이 이 분야의 기술자에게 명백할 것이다. 다른 예들에서는, 본 발명을 불필요하게 불명확하게 하지 않기 위해, 컴퓨터 시스템의 특정 및 대안 프로세서 아키텍처들, 설명되는 알고리즘들을 위한 특정 로직 회로들/코드, 특정 펌웨어 코드, 특정 상호접속 동작, 특정 로직 구성들, 특정 제조 기술들 및 재료들, 특정 컴파일러 구현들, 코드 내의 알고리즘들의 특정 표현, 특정 파워 다운 및 게이팅 기술들/로직 및 다른 특정 동작 상세들과 같은 공지된 컴포넌트들 또는 방법들은 상세히 설명되지 않았다.
아래의 실시예들은 컴퓨팅 플랫폼들 또는 마이크로프로세서들과 같은 특정 집적 회로들에서의 에너지 보존 및 에너지 효율과 관련하여 설명될 수 있지만, 다른 실시예들이 다른 타입의 집적 회로들 및 로직 디바이스들에 적용될 수 있다. 본 명세서에서 설명되는 실시예들의 유사한 기술들 및 교시들은 더 양호한 에너지 효율 및 에너지 보전으로부터 또한 이익을 얻을 수 있는 다른 타입의 회로들 또는 반도체 디바이스들에 적용될 수 있다. 예를 들어, 개시되는 실시예들은 데스크탑 컴퓨터 시스템 또는 울트라북(상표)으로 한정되지 않으며, 핸드헬드 디바이스, 태블릿, 다른 씬 노트북, 시스템 온 칩(SOC) 디바이스 및 내장 애플리케이션과 같은 다른 디바이스들에서도 이용될 수 있다. 핸드헬드 디바이스들의 일부 예들은 셀룰러 폰, 인터넷 프로토콜 디바이스, 디지털 카메라, 개인 휴대 단말기(PDA) 및 핸드헬드 PC를 포함한다. 내장 애플리케이션들은 통상적으로 마이크로컨트롤러, 디지털 신호 프로세서(DSP), 시스템 온 칩, 네트워크 컴퓨터(NetPC), 셋톱 박스, 네트워크 허브, 광역 네트워크(WAN) 스위치, 또는 아래에서 교시되는 기능들 및 동작들을 수행할 수 있는 임의의 다른 시스템을 포함한다. 더욱이, 본 명세서에서 설명되는 장치들, 방법들 및 시스템들은 물리적인 컴퓨팅 디바이스로 한정되는 것이 아니라, 에너지 보존 및 효율을 위한 소프트웨어 최적화와도 관련될 수 있다. 아래의 설명에서 쉽게 명백해지는 바와 같이, (하드웨어, 펌웨어, 소프트웨어 또는 이들의 조합과 관련되는지에 관계없이) 본 명세서에서 설명되는 방법들, 장치들 및 시스템들의 실시예들은 성능 사항들과 균형을 이루는 '녹색 기술' 미래에 필수적이다.
컴퓨팅 시스템들이 진보됨에 따라, 그 안의 컴포넌트들은 더 복잡해지고 있다. 결과적으로, 컴포넌트들 간의 결합 및 통신을 위한 상호접속 아키텍처도 최적 컴포넌트 동작을 위한 대역폭 요구들을 충족시키는 것을 보장하기 위해 복잡성이 증가하고 있다. 더구나, 상이한 시장 부문들은 시장의 요구에 맞추기 위해 상호접속 아키텍처들의 상이한 양태들을 요구한다. 예를 들어, 서버들은 더 높은 성능을 요구하는 반면, 이동 에코시스템은 때때로 절전을 위해 전반적인 성능을 희생할 수 있다. 그러나, 대부분의 패브릭들의 단일 목적은 최대 절전과 더불어 최고의 가능성 성능을 제공하는 것이다. 아래에서는, 본 명세서에서 설명되는 본 발명의 양태들로부터 잠재적으로 이익을 얻을 다수의 상호접속부가 설명된다.
도 1을 참조하면, 다중 코어 프로세서를 포함하는 컴퓨팅 시스템에 대한 블록도의 일 실시예가 도시된다. 프로세서(100)는 마이크로프로세서, 내장 프로세서, 디지털 신호 프로세서(DSP), 네트워크 프로세서, 핸드헬드 프로세서, 애플리케이션 프로세서, 코프로세서, 시스템 온 칩(SOC) 또는 코드를 실행하기 위한 다른 디바이스와 같은 임의의 프로세서 또는 처리 디바이스를 포함한다. 일 실시예에서, 프로세서(100)는 비대칭 코어들 또는 대칭 코어들(도시된 실시예)을 포함할 수 있는 적어도 2개의 코어 - 코어 101 및 102 -를 포함한다. 그러나, 프로세서(100)는 대칭 또는 비대칭일 수 있는 임의 수의 처리 요소를 포함할 수 있다.
일 실시예에서, 처리 요소는 소프트웨어 스레드를 지원하기 위한 하드웨어 또는 로직을 지칭한다. 하드웨어 처리 요소들의 예는 스레드 유닛, 스레드 슬롯, 스레드, 프로세스 유닛, 컨텍스트, 컨텍스트 유닛, 로직 프로세서, 하드웨어 스레드, 코어, 및/또는 실행 상태 또는 아키텍처 상태와 같은 프로세서의 상태를 유지할 수 있는 임의의 다른 요소를 포함한다. 즉, 일 실시예에서, 처리 요소는 소프트웨어 스레드, 운영 체제, 애플리케이션 또는 다른 코드와 같은 코드와 독립적으로 관련될 수 있는 임의의 하드웨어를 지칭한다. 통상적으로 물리 프로세서(또는 프로세서 소켓)는 코어 또는 하드웨어 스레드와 같은 임의 수의 다른 처리 요소를 잠재적으로 포함하는 집적 회로를 지칭한다.
코어는 종종 독립적인 아키텍처 상태를 유지할 수 있는 집적 회로 상에 위치하는 로직을 지칭하며, 각각의 독립적으로 유지되는 아키텍처 상태는 적어도 일부 전용 실행 자원들과 관련된다. 코어들과 달리, 하드웨어 스레드는 통상적으로 독립적인 아키텍처 상태를 유지할 수 있는 집적 회로 상에 위치하는 임의의 로직을 지칭하며, 독립적으로 유지되는 아키텍처 상태들은 실행 자원들에 대한 액세스를 공유한다. 알 수 있듯이, 소정의 자원들이 공유되고, 다른 자원들이 아키텍처 상태에 전용화될 때, 하드웨어 스레드 및 코어의 명명법 간의 라인은 중복된다. 또한, 종종, 코어 및 하드웨어 스레드는 운영 체제에 의해 개별 로직 프로세서들로서 간주되며, 운영 체제는 각각의 로직 프로세서에 관한 동작들을 개별적으로 스케줄링할 수 있다.
물리 프로세서(100)는 도 1에 도시된 바와 같이 2개의 코어 - 코어 101 및 102 -를 포함한다. 여기서, 코어 101 및 102는 대칭 코어들, 즉 동일한 구성들, 기능 유닛들 및/또는 로직을 갖는 코어들로서 간주될 수 있다. 다른 실시예에서, 코어(101)는 비순차적 프로세서 코어를 포함하는 반면, 코어(102)는 순차적 프로세서 코어를 포함한다. 그러나, 코어들(101, 102)은 고유 코어, 소프트웨어에 의해 관리되는 코어, 고유 명령어 세트 아키텍처(ISA)를 실행하도록 적응되는 코어, 변환된 명령어 세트 아키텍처(ISA)를 실행하도록 적응되는 코어, 공동 설계된 코어 또는 다른 공지된 코어와 같은 임의의 타입의 코어로부터 개별적으로 선택될 수 있다. 이종 코어 환경(즉, 비대칭 코어들)에서는, 이진 변환과 같은 소정 형태의 변환을 이용하여, 하나 또는 양 코어 상에서 코드를 스케줄링 또는 실행할 수 있다. 또한, 추가 설명을 위해, 코어(101) 내에 도시된 기능 유닛들이 아래에서 더 상세히 설명되는데, 이는 코어(102) 내의 유닛들이 도시된 실시예에서 유사한 방식으로 동작하기 때문이다.
도시된 바와 같이, 코어(101)는 하드웨어 스레드 슬롯들(101a, 101b)로도 지칭될 수 있는 2개의 하드웨어 스레드(101a, 101b)를 포함한다. 따라서, 일 실시예에서, 운영 체제와 같은 소프트웨어 엔티티들은 잠재적으로 프로세서(100)를 4개의 개별 프로세서, 즉 4개의 소프트웨어 스레드를 동시에 실행할 수 있는 4개의 로직 프로세서 또는 처리 요소로 간주한다. 전술한 바와 같이, 제 1 스레드가 아키텍처 상태 레지스터들(101a)과 관련되고, 제 2 스레드가 아키텍처 상태 레지스터들(101b)과 관련되고, 제 3 스레드가 아키텍처 상태 레지스터들(102a)과 관련될 수 있고, 제4 스레드가 아키텍처 상태 레지스터들(102b)과 관련될 수 있다. 여기서, 아키텍처 상태 레지스터들(101a, 101b, 102a, 102b) 각각은 전술한 바와 같은 처리 요소들, 스레드 슬롯들 또는 스레드 유닛들로서 지칭될 수 있다. 도시된 바와 같이, 아키텍처 상태 레지스터들(101a)은 아키텍처 상태 레지스터들(101b) 내에 복제되며, 따라서 로직 프로세서(101a) 및 로직 프로세서(101b)에 대해 개별 아키텍처 상태들/컨텍스트들이 저장될 수 있다. 코어들(101, 102)에서, 할당기 및 개명기 블록(130, 131) 내의 명령어 포인터들 및 개명 로직과 같은 다른 더 작은 자원들도 스레드들(101a, 101b, 102a, 102b) 각각에 대해 복제될 수 있다. 재배열/회수 유닛(135, 136) 내의 재배열 버퍼들, ILTB(120, 121), 로드/저장 버퍼들 및 큐들과 같은 일부 자원들은 분할을 통해 공유될 수 있다. 범용 내부 레지스터들, 페이지-테이블 베이스 레지스터(들), 저레벨 데이터-캐시 및 데이터-TLB(150, 151), 실행 유닛(들)(140, 141) 및 비순차적 유닛의 부분들과 같은 다른 자원들은 잠재적으로 완전히 공유된다.
프로세서(100)는 종종 완전히 공유되거나, 분할을 통해 공유되거나, 처리 요소들에 의해/그들에게 전용화될 수 있는 다른 자원들을 포함한다. 도 1에는, 프로세서의 예시적인 로직 유닛들/자원들을 갖는 순전히 예시적인 프로세서의 일 실시예가 도시된다. 프로세서는 임의의 이러한 기능 유닛을 포함하거나 배제할 수 있는 것은 물론, 도시되지 않은 임의의 다른 공지된 기능 유닛들, 로직 또는 펌웨어를 포함할 수도 있다는 점에 유의한다. 도시된 바와 같이, 코어(101)는 간소화된 대표적인 비순차(OOO) 프로세서 코어를 포함한다. 그러나, 상이한 실시예들에서는 순차 프로세서가 이용될 수 있다. OOO 코어는 실행될/취해질 분기들을 예측하기 위한 분기 타겟 버퍼(120) 및 명령어들에 대한 주소 변환 엔트리들을 저장하기 위한 명령어 변환 버퍼(I-TLB(120)를 포함한다.
코어(101)는 인출된 요소들을 디코딩하기 위해 인출 유닛에 결합되는 디코드 모듈(125)을 더 포함한다. 일 실시예에서, 인출 로직은 스레드 슬롯들(101a, 101b)과 각각 관련된 개별 시퀀서들을 포함한다. 통상적으로 코어(101)는 프로세서(100) 상에서 실행될 수 있는 명령어들을 정의/지정하는 제 1 ISA와 관련된다. 종종, 제 1 ISA의 일부인 머신 코드 명령어들은 실행될 명령어 또는 연산을 참조/지정하는 (연산 코드로 지칭되는) 명령어의 일부를 포함한다. 디코드 로직(125)은 이러한 명령어들을 이들의 연산 코드들로부터 인식하고, 디코딩된 명령어들을 제 1 ISA에 의해 정의되는 바와 같은 처리를 위해 파이프라인으로 전송하는 회로를 포함한다. 예를 들어, 아래에서 더 상세히 설명되는 바와 같이, 일 실시예에서, 디코더들(125)은 트랜잭션 명령어와 같은 특정 명령어들을 인식하도록 설계 또는 적응되는 로직을 포함한다. 디코더들(125)에 의한 인식의 결과로서, 아키텍처 또는 코어(101)는 적절한 명령어와 관련된 작업들을 수행하기 위해 특정한 사전 정의된 액션들을 취한다. 본 명세서에서 설명되는 임의의 작업, 블록, 동작 및 방법은 단일 또는 다수의 명령어에 응답하여 수행될 수 있으며, 그러한 명령어들 중 일부는 새로운 또는 오래된 명령어들일 수 있다는 점에 유의하는 것이 중요하다. 디코더들(126)은 일 실시예에서 동일한 ISA(또는 그의 서브세트)를 인식한다는 점에 유의한다. 대안으로서, 이종 코어 환경에서, 디코더들(126)은 제 2 ISA(제 1 ISA의 서브세트 또는 다른 ISA)를 인식한다.
일례에서, 할당기 및 개명기 블록(130)은 명령어 처리 결과들을 저장하기 위한 레지스터 파일들과 같은 자원들을 예약하기 위한 할당기를 포함한다. 그러나, 스레드들(101a, 101b)은 잠재적으로 비순차 실행을 행할 수 있으며, 할당기 및 개명기 블록(130)은 또한 명령어 결과들을 추적하기 위한 재배열 버퍼들과 같은 다른 자원들을 예약한다. 유닛(130)은 프로그램/명령어 참조 레지스터들을 프로세서(100) 내부의 다른 레지스터들로 개명하기 위한 레지스터 개명기도 포함할 수 있다. 재배열/회수 유닛(135)은 비순차적으로 실행되는 명령어들의 비순차 실행 및 후속적인 순차적 회수를 지원하기 위해, 전술한 재배열 버퍼, 로드 버퍼 및 저장 버퍼와 같은 컴포넌트들을 포함한다.
일 실시예에서, 스케줄러 및 실행 유닛(들) 블록(140)은 실행 유닛들 상에서 명령어들/연산을 스케줄링하기 위한 스케줄러 유닛을 포함한다. 예를 들어, 부동 소수점 명령어는 이용 가능한 부동 소수점 실행 유닛을 갖는 실행 유닛의 포트 상에 스케줄링된다. 명령어 처리 결과들에 관한 정보를 저장하기 위해 실행 유닛들과 관련된 레지스터 파일들도 포함된다. 예시적인 실행 유닛들은 부동 소수점 실행 유닛, 정수 실행 유닛, 점프 실행 유닛, 로드 실행 유닛, 저장 실행 유닛 및 다른 공지된 실행 유닛들을 포함한다.
하위 레벨의 데이터 캐시 및 데이터 변환 버퍼(D-TLB)(150)가 실행 유닛(들)(140)에 결합된다. 데이터 캐시는 메모리 일관성 상태들 내에 잠재적으로 유지되는 데이터 피연산자들과 같은 최근에 사용된/처리된 요소들을 저장하기 위한 것이다. D-TLB는 최근의 가상/선형 대 물리 주소 변환들을 저장하기 위한 것이다. 특정 예로서, 프로세서는 물리 메모리를 복수의 가상 페이지로 분할하기 위한 페이지 테이블 구조를 포함할 수 있다.
여기서, 코어들(101, 102)은 온칩 인터페이스(110)와 관련된 제 2 레벨 캐시와 같은 상위 레벨 또는 더 바깥 캐시에 대한 액세스를 공유한다. 상위 레벨 또는 더 바깥은 실행 유닛(들)으로부터 더 멀거나 멀어지는 캐시 레벨들을 지칭한다는 점에 유의한다. 일 실시예에서, 상위 레벨 캐시는 제 2 또는 제 3 레벨 데이터 캐시와 같은 최종 레벨 데이터 캐시 - 프로세서(100) 상의 메모리 계층구조 내의 최종 캐시 -이다. 그러나, 상위 레벨 캐시는 그에 한정되지 않는데, 이는 명령어 캐시와 관련되거나 그를 포함할 수 있기 때문이다. 최근에 디코딩된 트레이스들을 저장하기 위해 디코더(125) 뒤에 트레이스 캐시 - 일 타입의 명령어 캐시 -가 대신 결합될 수 있다. 여기서, 명령어는 잠재적으로 다수의 마이크로 명령어(마이크로 연산)로 디코딩될 수 있는 매크로 명령어(즉, 디코더들에 의해 인식되는 일반 명령어)를 지칭한다.
도시된 구성에서, 프로세서(100)는 온칩 인터페이스 모듈(110)도 포함한다. 역사적으로, 아래에서 더 상세히 설명되는 메모리 제어기는 컴퓨팅 시스템 내에서 프로세서(100) 밖에 포함되었다. 이러한 시나리오에서, 온칩 인터페이스(11)는 시스템 메모리(175), (종종 메모리(175)에 접속하기 위한 메모리 제어기 허브 및 주변 디바이스들을 접속하기 위한 I/O 제어기 허브를 포함하는) 칩셋, 메모리 제어기 허브, 노스브리지 또는 다른 집적 회로와 같은 프로세서(100) 외부의 디바이스들과 통신하기 위한 것이다. 그리고, 이러한 시나리오에서, 버스(105)는 멀티-드롭 버스, 점대점 상호접속부, 직렬 상호접속부, 병렬 버스, 일관성(예로서, 캐시 일관성) 버스, 계층화된 프로토콜 아키텍처, 차동 버스 및 GTL 버스와 같은 임의의 공지된 상호접속부를 포함할 수 있다.
메모리(175)는 프로세서(100)에 전용화될 수 있거나, 시스템 내의 다른 디바이스들과 공유될 수 있다. 메모리(175)의 타입들의 일반적인 예들은 DRAM, SRAM, 비휘발성 메모리(NV 메모리) 및 다른 공지된 저장 디바이스들을 포함한다. 디바이스(180)는 메모리 제어기 허브에 결합된 그래픽 가속기, 프로세서 또는 카드, I/O 제어기 허브에 결합된 데이터 저장소, 무선 송수신기, 플래시 디바이스, 오디오 제어기, 네트워크 제어기 또는 다른 공지된 디바이스를 포함할 수 있다는 점에 유의한다.
그러나, 최근에, 더 많은 로직 및 디바이스들이 SOC와 같은 단일 다이 상에 집적됨에 따라, 이러한 디바이스들 각각은 프로세서(100) 상에 통합될 수 있다. 예를 들어, 일 실시예에서, 메모리 제어기 허브는 프로세서(100)와 함께 동일 패키지 및/또는 다이 상에 배치된다. 여기서, 코어의 일부(온-코어(on-core) 부분)(110)는 메모리(175) 또는 그래픽 디바이스(180)와 같은 다른 디바이스들과 인터페이스하기 위한 하나 이상의 제어기(들)를 포함한다. 그러한 디바이스들과 인터페이스하기 위한 상호접속부 및 제어기들을 포함하는 구성은 종종 온-코어(또는 언-코어(un-core) 구성)로 지칭된다. 일례로서, 온칩 인터페이스(110)는 온칩 통신을 위한 링 상호접속부 및 오프칩 통신을 위한 고속 직렬 점대점 링크(105)를 포함한다. 또한, SOC 환경에서는, 네트워크 인터페이스, 코프로세서들, 메모리(175), 그래픽 프로세서(180) 및 임의의 다른 공지된 컴퓨터 디바이스들/인터페이스와 같은 더 많은 디바이스들이 단일 다이 또는 집적 회로 상에 집적되어, 높은 기능 및 낮은 전력 소비를 갖는 작은 폼 팩터를 제공할 수 있다.
일 실시예에서, 프로세서(100)는 컴파일러, 최적화 및/또는 변환기 코드(177)를 실행하여, 애플리케이션 코드(176)를 컴파일, 변환 및/또는 최적화함으로써, 본 명세서에서 설명되는 장치들 및 방법들을 지원하거나 그들과 인터페이스할 수 있다. 컴파일러는 종종 소스 텍스트/코드를 타겟 텍스트/코드로 변환하기 위한 프로그램 또는 프로그램들의 세트를 포함한다. 통상적으로, 컴파일러에 의한 프로그램/애플리케이션 코드의 컴파일은 고레벨 프로그래밍 언어 코드를 저레벨 머신 또는 어셈블리 언어 코드로 변환하기 위해 다수의 페이즈 및 패스에서 행해진다. 그러나, 간단한 컴파일을 위해 단일 패스 컴파일러들이 여전히 사용될 수 있다. 컴파일러는 임의의 공지된 컴파일 기술들을 이용하고, 사전적 분석, 사전 처리, 파싱, 시맨틱 분석, 코드 생성, 코드 변환 및 코드 최적화와 같은 임의의 공지된 컴파일러 동작들을 수행할 수 있다.
더 큰 컴파일러들은 종종 다수의 페이즈를 포함하지만, 매우 자주 이러한 페이즈들은 2개의 일반 페이즈: (1) 일반적으로 구문 처리, 시맨틱 처리 및 소정의 변환/최적화가 발생할 수 있는 프론트엔드, 및 (2) 일반적으로 분석, 변환, 최적화 및 코드 생성이 발생하는 백엔드 내에 포함된다. 일부 컴파일러들은 컴파일러의 프론트엔드와 백엔드 사이의 구별의 불명료를 나타내는 중간을 지칭한다. 결과적으로, 컴파일러의 삽입, 연관, 생성 또는 다른 동작에 대한 참조는 임의의 전술한 페이즈 또는 패스는 물론, 컴파일러의 임의의 다른 공지된 페이즈 또는 패스에서도 발생할 수 있다. 일례로서, 컴파일러는 잠재적으로 컴파일의 프론트엔드 페이즈에서의 호출/연산의 삽입, 이어서 변환 페이즈 동안의 호출/연산의 하위 레벨 코드로의 변환과 같이 컴파일의 하나 이상의 페이즈에서 연산, 호출, 함수 등을 삽입한다. 동적 컴파일 동안, 컴파일러 코드 또는 동적 최적화 코드는 그러한 연산/호출을 삽입하는 것은 물론, 런타임 동안의 실행을 위해 코드를 최적화할 수 있다는 점에 유의한다. 특정 예로서, 이진 코드(이미 컴파일된 코드)가 런타임 동안 동적으로 최적화될 수 있다. 여기서, 프로그램 코드는 동적 최적화 코드, 이진 코드 또는 이들의 조합을 포함할 수 있다.
컴파일러와 유사하게, 이진 변환기와 같은 변환기가 코드를 정적으로 또는 동적으로 변환하여 코드를 최적화 및/또는 변환한다. 따라서, 코드, 애플리케이션 코드, 프로그램 코드 또는 다른 소프트웨어 환경의 실행에 대한 언급은 (1) 프로그램 코드를 컴파일하거나, 소프트웨어 구조들을 유지하거나, 다른 동작들을 수행하거나, 코드를 최적화하거나, 코드를 변환하기 위한 컴파일러 프로그램(들), 최적화 코드 최적화기 또는 변환기의 동적 또는 정적 실행; (2) 최적화/컴파일된 애플리케이션 코드와 같은 연산들/호출들을 포함하는 메인 프로그램 코드의 실행; (3) 소프트웨어 구조들을 유지하거나, 다른 소프트웨어 관련 동작들을 수행하거나, 코드를 최적화하기 위한 메인 프로그램 코드와 관련된 라이브러리들과 같은 다른 프로그램 코드의 실행; 또는 이들의 조합을 지칭할 수 있다.
예시적인 상호접속 패브릭들 및 프로토콜들은 예를 들어 많은 가운데 특히 주변 컴포넌트 상호접속부(PCI) 익스프레스(PCIe) 아키텍처, 인텔 고속 경로 상호접속(QPI) 아키텍처, 이동 산업 프로세서 인터페이스(MIPI)를 포함할 수 있다. 소정 범위의 프로세서들의 지원이 다수의 도메인 또는 노드 제어기들 간의 다른 상호접속부들의 이용을 통해 달성될 수 있다.
상호접속 패브릭 아키텍처는 계층화된 프로토콜 아키텍처의 정의를 포함할 수 있다. 일 실시예에서, 프로토콜 계층들(일관성, 비일관성 및 옵션으로서 다른 메모리 기반 프로토콜들), 라우팅 계층, 링크 계층 및 물리 계층이 제공될 수 있다. 더구나, 상호접속부는 전력 관리기, 테스트 및 디버그를 위한 설계(DFT), 장애 처리, 레지스터, 보안 등과 관련된 향상들을 포함할 수 있다.
일 실시예에서, 상호접속 패브릭의 물리 계층은 물리 매체(전기 또는 광학 등) 상의 정보의 고속 전송을 담당할 수 있다. 물리 계층은 2개의 링크 계층 엔티티 간의 점대점이다. 링크 계층은 상위 계층들로부터 물리 계층을 추출할 수 있으며, 데이터를 (물론, 요청들도) 신뢰성 있게 전송하고 2개의 직접 접속된 엔티티 간의 흐름 제어를 관리하기 위한 능력을 제공할 수 있다. 이것은 또한 물리 채널을 다수의 가상 채널 및 메시지 클래스로 가상화하는 것을 담당한다. 프로토콜 계층은 물리 링크들을 통한 전송을 위해 프로토콜 메시지들을 물리 계층으로 전달하기 전에 그들을 적절한 메시지 클래스들 및 가상 채널들로 맵핑하기 위해 링크 계층에 의존할 수 있다. 링크 계층은 요청, 스누프, 응답, 후기입, 비일관성 데이터 등과 같은 다수의 메시지를 지원할 수 있다.
일부 구현들에서, 링크 계층은 흐름 제어를 위해 신용 스킴을 이용할 수 있다. 비신용 흐름들도 지원될 수 있다. 신용 흐름들과 관련하여, 초기화 동안, 송신기는 패킷들 또는 플릿들을 수신기로 송신하기 위한 설정된 수의 신용을 제공받는다. 패킷 또는 플릿이 수신기로 송신될 때마다, 송신기는 사용되는 가상 네트워크의 타입에 따라 패킷 또는 플릿을 나타내는 하나의 신용만큼 그의 신용 카운터들을 감소시킨다. 수신기에서 버퍼가 자유로워질 때마다, 그 버퍼 타입에 대해 신용이 송신기로 반환된다. 일 실시예에서, 주어진 채널에 대한 송신기의 신용이 고갈될 때, 송신기는 그 채널에서의 임의의 플릿의 송신을 중지한다. 본질적으로, 수신기가 정보를 소비하고 적절한 버퍼들을 자유롭게 한 후에 신용들이 반환된다.
일 실시예에서, 라우팅 계층은 소스로부터 목적지로 패킷들을 라우팅하기 위한 유연하고 분산된 방법을 제공할 수 있다. 일부 플랫폼 타입들(예로서, 단일 프로세서 및 이중 프로세서 시스템들)에서, 이 계층은 명확한 것이 아니라 링크 계층의 일부일 수 있으며, 그러한 경우에 이 계층은 옵션이다. 이것은 패킷들을 어떻게 라우팅할지를 결정하기 위한 기능의 일부로서 링크 계층에 의해 제공되는 가상 네트워크 및 메시지 클래스 추출에 의존한다. 일 구현에서, 라우팅 기능은 구현 고유 라우팅 테이블들을 통해 정의된다. 그러한 정의는 다양한 이용 모델들을 가능하게 한다.
일 실시예에서, 프로토콜 계층은 통신 프로토콜들, 배열 규칙 및 일관성 유지, I/O, 인터럽트들 및 다른 상위 레벨 통신을 구현할 수 있다. 일 구현에서, 프로토콜 계층은 컴포넌트들 및 시스템에 대한 전력 상태들을 협상하기 위한 메시지들을 제공할 수 있다는 점에 유의한다. 잠재적 부가물로서, 물리 계층은 또한 독립적으로 또는 연계하여 개별 링크들의 전력 상태들을 설정할 수 있다.
(메모리에 대한 요청들을 배열하는) 홈 에이전트, (일관성 메모리에 요청들을 발하고 스누프들에 응답하는) 캐싱, (구성 트랜잭션들을 처리하는) 구성, (인터럽트들을 처리하는) 인터럽트, (레거시 트랜잭션들을 처리하는) 레거시, (비일관성 트랜잭션들을 처리하는) 비일관성 등과 같은 다수의 에이전트가 상호접속 아키텍처에 접속될 수 있다.
프로세서들은 그들의 실행 능력들을 계속 개선하며, 결과적으로 코어당 더 큰 대역폭을 요구한다. 이러한 진보들은 또한 상호접속 아키텍처들을 테스트하는데, 이는 온칩 설계에 추가 코어들이 추가됨에 따라 다중 코어 시스템의 지연이 발생할 수 있기 때문이다. 코어 성능 및 카운트의 성장을 예상하여 다양한 아키텍처들이 개발되었지만, 일부 솔루션들의 능력은 상호접속부를 통해 제공되는 대역폭을 공유하는 코어들의 수를 증가시키는 것으로 제한된다. 일례에서는, 링 상호접속 아키텍처들이 사용되었으며, 대응하는 프로토콜들 및 정책들이 일부 환경들 내에서 개발되었다. 전통적인 링 아키텍처들이 일부 시스템들에서 성공적으로 구현되었지만, 다수의 차원에서 링 상호접속 아키텍처를 (예로서, 10개 코어 이상으로) 스케일링하는 것은 어려운 것으로 입증되었다.
일부 솔루션들은 다수의 링을 결합하여 향상된 링 상호접속 아키텍처를 형성하려고 시도한다. 일례로서, 도 2의 예에 도시된 간이 블록도(200)는 2개의 병합된 링을 포함하는 변경된 링 상호접속 아키텍처를 나타낸다. 도 2의 예의 아키텍처는 단일 링 설계에서와 같은 바닥 계획의 수직축을 따르는 코어들(예로서, 코어 0-14)의 스케일링은 물론, 코어들의 제 3 열의 제공을 통한 수평 액세스를 따르는 소정의 스케일링도 가능하게 한다. 그러나, 하나의 링의 트랜잭션들이 다른 링을 따라 라우팅되는 것을 가능하게 하는 도 2의 다중 링 설계에서 제공되는 접합 스톱은 병목들을 생성할 수 있으며, 성능에 대한 악영향 없이 3개 열 이상으로의 설계의 스케일링을 제한할 수 있다. 도 3의 블록도(300)에 도시된 것과 같은 다른 예에서는, 다중 링 상호접속 아키텍처의 다른 예가 도시된다. 여기서는, 수평 방향에서의 코어들의 스케일링을 확장하기 위해 2개의 병렬 링(305, 310)이 제공되지만, 2개의 링(305, 310)을 연결하는 브리지 세그먼트들(315, 320)의 사용을 통해 다시 병목들이 발생할 수 있다. 예를 들어, 링(310) 상의 코어 또는 캐시 파티션을 향하는 링(305)으로부터의 트래픽이 스톱(예로서, 320, 325)에서 싱크(sink)될 수 있으며, 여기서 트래픽은 많은 예 가운데 특히 다른 링(310)을 향해 진행하도록 싱크된다.
전술한 여러 문제를 해결하는 새로운 상호접속 아키텍처가 다중 코어 칩 내에 제공될 수 있다. 일례에서, 단일 링 아키텍처가 수직 및 수평 양 배향에서 하프 또는 풀 링들의 메시를 포함하는 메시 스타일 네트워크로 확장될 수 있다. 링들 각각은 여전히 전통적인 링 아키텍처들의 일반적인 설계 및 프로토콜 및 흐름 제어를 유지할 수 있다. 사실상, 일부 구현들에서, 링 아키텍처 프로토콜들 및 흐름 제어의 부분들은 전통적인 또는 다른 링 상호접속 아키텍처들에서의 사용을 위해 설계된다. 예를 들어, 일부 구현들에서, 본 명세서에 참고로 포함되는 PCT/US2011/062311로서 특허 협력 조약 하에 2011년 11월 29일자로 출원된 특허 출원에서 개시된 발명의 기술들, 프로토콜들, 알고리즘들, 정책들 및 다른 양태들이 그러한 "링 메시" 아키텍처들에서 이용될 수 있다. 아키텍처의 메시 형태 레이아웃은 직접 경로에 가까운 지연을 유지하면서 (예로서, 도 2 및 3의 예들에서와 같이) 링의 직교 확장에 대한 대역폭 제약들을 제거할 수 있다. (코어를 포함하는) 각각의 타일은 수평 배향 링들 중 하나 및 수직 배향 링들 중 하나 양쪽에 대한 접속을 갖는 에이전트 또는 링 스톱을 포함할 수 있으며, 링 스톱은 또한 수평 배향 링으로부터 링 스톱에 접속된 수직 배향 링으로의 교차점으로서 기능할 수 있다.
개선된 링 메시 상호접속 아키텍처의 간이 표현이 도 4의 예시적인 블록도에 도시된다. (도 4의 표시 각도에 대해) 수평 배향된 링 상호접속 세그먼트들(402, 404, 406, 408) 및 수직 배향된 링 상호접속 세그먼트들(410, 412, 414, 415)의 메시를 포함하는 칩(400)이 표시된다. 복수의 타일이 제공될 수 있으며, 이들 중 적어도 일부는 복수의 처리 코어(416, 418, 420, 422, 424, 426) 중 하나 및 최종 레벨 캐시(LLC)(426, 428, 430, 432, 434, 435)의 부분들 또는 파티션들을 포함한다. 많은 예 가운데 특히 내장 DRAM 제어기(EDC), 외부 메모리 제어기 인터페이스(EMI)(예로서, 444, 445), 메모리 제어기들(예로서, 446, 448) 및 디바이스간 상호접속 컴포넌트들, 예로서 PCIe 제어기(450) 및 QPI 제어기(452) 등의 메모리 제어기들 및 메모리 인터페이스들과 같은 추가 컴포넌트들도 제공될 수 있다. 에이전트들(예로서, 454, 456, 458, 460, 462, 464) 및 다른 로직이 컴포넌트들(예로서, 416, 418, 420, 422, 424, 425, 426, 428, 430, 432, 434, 435, 436, 438, 440, 442, 444, 445, 446, 448, 450, 452)에 대한 링 스톱들로서 사용되도록 제공되어, 각각의 컴포넌트를 하나의 수평 배향 링 및 하나의 수직 배향 링에 접속할 수 있다. 예를 들어, 코어(예로서, 416, 418, 420, 422, 424, 425)에 대응하는 각각의 타일은 메시 내의 수평 배향 링과 수직 배향 링의 교점에 대응할 수 있다. 예를 들어, 코어(422)에 대응하는 에이전트(456) 및 코어(422)의 타일 상에 함께 배치된 최종 레벨 캐시 세그먼트의 캐시 박스(예로서, 432)가 수평 배향 링(406) 및 수직 배향 링(412) 양자에 대한 링 스톱으로 사용될 수 있다.
도 4에 예에 표시된 바와 같은 링 메시 아키텍처는 링 아키텍처 설계를 이용하여, 많은 잠재적인 장점 예 중 특히 더 높은 성능과 더불어 더 크고 많은 유연성을 제공할 수 있다. 링 스톱들은 수평 배향 및 수직 배향 링 양자 상에서 트랜잭션들을 전송할 수 있다. 각각의 링 스톱은 또한 하나의 링에 대한 메시지의 싱크 및 다른(예로서, 직교 배향) 링으로의 주입을 담당할 수 있다. 링 상으로 주입된 메시지는 각각의 중간 링 스톱에서 중지하는 것이 아니라, 횡단 또는 목적지 링 스톱에 도달할 때까지 링을 따라 진행한다. 메시지는 특정 경로에 대한 횡단 링 스톱에서 수평 배향 링으로부터 수직 배향 링으로(또는 그 반대로) 횡단할 수 있다. 메시지는 이러한 횡단 링 스톱에서 버퍼링될 수 있고, 여기서 메시 상으로(즉, 다른 링 상에) 재주입되며, 메시지는 그의 목적지(또는 (예를 들어, (메시지의 동적 리라우팅 등과 관련된) 다른 횡단점)에 도달할 때까지 중단 없이(즉, 중간 링들을 통과하여) 진행한다.
일부 구현들에서는, 온칩 타일들의 링 스톱들이 타일에 대한 에이전트(예로서, 454, 456, 458, 460, 462, 464)와 관련하여 포함될 수 있다. 일부 구현들에서, 에이전트(예로서, 454, 456, 458, 460, 462, 464)는 코어 및 타일의 캐시 뱅크에 대한 결합 에이전트일 수 있다. 일례에서, 에이전트는 많은 특징 및 예 가운데 특히 시스템 캐시에 대한 액세스를 관리하는 캐시 에이전트 및 시스템 메모리에 대한 액세스를 관리하는 홈 에이전트의 기능을 포함할 수 있다. 다른 구현들에서, 홈 및 캐시 에이전트들은 많은 예 및 구현 가운데 특히 개별적으로 제공되고, 타일을 링 메시 상호접속부의 링들에 접속하는 링 스톱과 별개일 수 있다.
도 5를 참조하면, 예시적인 링 메시 아키텍처에서 사용하기 위한 링 스톱(500)의 예시적인 구현의 간이 블록도가 도시된다. 도 5의 특정 예에서, 링 스톱(500)은 수평 링 스톱 컴포넌트(505), 수직 링 스톱 컴포넌트(510) 및 트랜스그레스 버퍼(transgress buffer)(515)를 포함한다. 수평 링 스톱 컴포넌트(505)는 링 스톱 에이전트(500)와 접속되는 수평 링 상호접속부에 들어가고 나가는 트래픽을 라우팅, 버퍼링, 전송 및 관리하기 위한 로직을 포함할 수 있다. 유사하게, 수직 링 스톱 컴포넌트(510)는 링 스톱 에이전트(500)와 접속되는 수직 배향 링 상호접속부에 들어가고 나가는 트래픽을 라우팅, 버퍼링, 전송 및 관리하는 라우팅 및 전송을 위한 로직을 포함할 수 있다. 트랜스그레스 버퍼(515)는 링 스톱(500)에 접속된 링 상호접속부들 중 하나(즉, 수평 배향 또는 수직 배향 링)로부터 다른 하나(즉, 수직 배향 또는 수평 배향 링)로 메시지들을 전이시키기 위한 로직을 포함할 수 있다.
일 구현에서, 트랜스그레스 버퍼(515)는 하나의 링으로부터 다른 링으로의 메시지 전이를 버퍼링하고, 이러한 전이들에 적용될 수 있는 정책들 및 프로토콜들을 관리할 수 있다. 메시지들의 중재가 트랜스그레스 버퍼(515)에 의해 하나 이상의 정책에 따라 수행될 수 있다. 일례에서, 트랜스그레스 버퍼(515)는 하나의 링으로부터의 링 트래픽을 싱크하고 트래픽을 특정 타일의 링 스톱에 접속된 다른 링으로 주입하기 위한 신용/비신용 큐들의 어레이를 포함한다. 트랜스그레스 버퍼(515)의 버퍼 크기는 많은 예 가운데 특히 특정 링 메시 상호접속부의 전반적인 성능 특성들, 작업 부하 및 트래픽 패턴들에 기초하여 정의될 수 있다. 또한, 링 메시의 주어진 링 상의 기존 메시지들이 그들의 목적지 또는 전이점으로 방해 없이 진행됨에 따라, 링 상의 기존 메시지들은 우선권을 가지며, 트랜스그레스 버퍼(515)는 그에 접속된 링들 상의 트래픽을 모니터링하고, 적절한 링 상에서 이용 가능 대역폭이 발견될 때 트래픽을 주입할 수 있다. 일례에서, 트랜스그레스 버퍼(515)는 트랜스그레스 버퍼(515)에 의해 중재되는 트래픽에 고갈 방지 정책들을 적용할 수 있다. 일례에서, 각각의 트랜잭션은 상호접속부를 통과하는 그의 경로 상에서 주어진 트랜스그레스 버퍼를 통해 딱 한 번 전송되는 것으로 제한될 수 있다. 이것은 흐름 제어, 메시지 클래스 및 다른 정책들을 포함하는 더 전통적인 링 상호접속 정책들 및 프로토콜들에 의해 통제되는 메시 내에서 링들을 효과적으로 접속 또는 브리지하기 위해 트랜스그레스 버퍼(515)에 의해 이용되는 프로토콜들의 구현을 더 간소화할 수 있다.
일부 구현들에서, 본 명세서에서 설명되는 것과 같은 링 메시 상호접속부는 향상된 대역폭 및 지연 특성들을 가질 수 있다. 일례에서, 상호접속부의 에이전트들은 인접 링 스톱들로부터 오는 통과 트래픽이 존재하지 않는 한은 트래픽을 소스 링 상으로(예로서, 수평 대 수직 전이들을 갖는 시스템 내의 수평 링 상으로) 주입할 수 있다. 주입에 대한 에이전트들 간의 우선순위는 순환 방식일 수 있다. 단방향 설계에서, 에이전트들은 또한 (수평 링으로부터 수직 링으로) 트랜스그레스 버퍼에서 스위칭되는 패킷이 존재하지 않고 통과 트래픽이 존재하지 않는 한은 싱크 링(예로서, 수평 대 수직 전이들을 갖는 시스템 내의 수직 링)으로 직접 주입할 수 있다. 에이전트들은 싱크 링으로부터 직접 싱크할 수 있다. 싱크 링 상의 극성 규칙들은 단일 패킷만이 싱크 링 상의 주어진 클럭 내에서 각각의 에이전트로 전송되는 것을 보증할 수 있다. 단방향 설계에서 싱크 링으로부터 싱크될 패킷이 존재하지 않는 경우, 에이전트들은 트랜스그레스 버퍼로부터(예로서, 소스 링으로부터 이전에 버퍼링된 패킷들을) 또는 소스 링으로부터 직접(예로서, 트랜스그레스 버퍼 우회 또는 다른 함께 위치하는 우회 경로를 통해) 싱크할 수 있다. 그러한 예들에서, 소스 링은 어떠한 극성 규칙도 필요로 하지 않는데, 이는 트랜스그레스 버퍼가 이중 포트를 갖는 것으로 가정될 수 있고, 사이클마다 2개의 패킷을 싱크할 수 있기 때문이다. 예를 들어, 트랜스그레스 버퍼는 2개 이상의 판독 포트 및 2개의 이상의 기입 포트를 가질 수 있다. 또한, 많은 예 가운데 특히, 소스 링 상의 에이전트들 내로 싱크될 패킷들도 원할 경우에 대응하는 트랜스그레스 버퍼 내에 버퍼링될 수 있다.
일부 구현들에서, 트랜스그레스 버퍼(515)는 양방향성일 수 있는데, 이는 트랜스그레스 버퍼(515)가 링 스톱(500)에 접속된 수평 배향 및 수직 배향 링들 중 어느 한 링으로부터 트래픽을 싱크하고 트래픽을 다른 하나의 링 상에 주입하기 때문이다. 그러나, 다른 구현들에서, 트랜스그레스 버퍼(515)는 도 5의 예에 도시된 바와 같이 단방향성일 수 있다. 이러한 특정 예에서, 링 메시 전송들은 링 스톱의 수평 링으로부터 링 스톱의 수직 링으로 전송된다. 따라서, 수평 링으로부터 생성되는 트래픽은 링 스톱(500)에 접속된 수직 링 상의 주입을 위해 또는 링 스톱(500)이 속하는 타일에서 코어의 코어 박스 입구(530) 또는 LLC의 부분의 캐시 박스 입구(535)로의 전송을 위해 수평 링 스톱 컴포넌트를 통해 트랜스그레스 버퍼(515)를 통해 수직 링 스톱 컴포넌트(510)로 라우팅될 수 있다. 링 스톱(500)의 타일의 코어 또는 캐시 박스로부터 전송되는 메시지들은 이러한 특정 구현에서 수평 링 스톱 컴포넌트(505)에 접속된 코어 박스(또는 에이전트) 출구(520) 또는 캐시 박스(또는 에이전트) 출구(525)를 통해 전송될 수 있다. 또한, 타일의 코어 또는 LLC에 의해 수신된 메시지들은 수직 링 스톱 컴포넌트(510)에 접속된 코어 박스 입구(530) 또는 캐시 박스 입구(535)에 의해 처리될 수 있다. 전용 접속들이 코어 및 캐시 박스들 및 링 스톱(500)으로부터 제공될 수 있다. 도 5의 예는 단방향 수평 대 수직 링 전이 설계에 따른 하나의 예시적인 구현을 나타내지만, 전술한 양방향 설계는 물론, 도 6의 예에 도시된 단방향 수직 대 수평 링 전이 설계와 같은 다른 대안들이 이용될 수 있다.
도 7은 본 명세서에서 설명되는 원리들 및 특징들에 따른 링 메시 상호접속부를 이용하는 다중 코어 디바이스 내에 포함된 타일(700)의 온칩 레이아웃의 간이 표현을 나타내는 블록도를 도시한다. 일례에서, 타일(700)은 많은 예 가운데 특히 CPU 코어(705), 최종 레벨 캐시(LLC)(710) 및 중간 레벨 캐시(715)를 포함하는 캐시의 파티션을 포함할 수 있다. 링 메시 내의 2개의 링(725, 730)에 접속되도록 배치된 링 스톱을 포함하는 에이전트(720)가 제공될 수 있다. 링 스톱의 트랜스그레스 버퍼는 메시지들이 링들 중 하나(예로서, 725)로부터 링들 중 다른 하나(예로서, 730)로 전이하는 것을 가능하게 할 수 있다. 각각의 링(예로서, 725, 730)은 다수의 와이어를 포함할 수 있다. 일부 구현들에서, 링 메시의 온-다이 와이어들은 다이 상의 타일들의 적어도 일부 위에 또는 아래에 연장할 수 있다. 코어의 일부 부분들은 "노-플라이(no-fly)" 구역들로 간주될 수 있는데, 이는 코어를 구현하는 데 사용되는 실리콘의 부분들 상에 어떠한 와이어도 배치되지 않기 때문이다. 예를 들어, 도 7의 예에서, 링들(725, 730)은 코어(705) 상에 배치되지 않거나 그를 방해하지 않도록 다이 상에 레이아웃될 수 있다. 대신에, 링들(725, 730)의 와이어는 많은 예 가운데 특히 예를 들어 스누프 필터(735), 클럭킹 로직, 전압 조절 및 제어 컴포넌트들(예로서, 745) 및 심지어는 링 메시 상호접속부의 와이어들의 근접에 덜 민감한 코어의 일부 부분들(예로서, 750)을 포함하는 타일 상의 많은 컴포넌트 가운데 특히 LLC(710), MLC(715) 및 에이전트(720)를 포함하는 타일 상의 다른 컴포넌트들 위에 배치될 수 있다.
도 8은 링 메시 상호접속부를 이용하는 간이 다중 코어 디바이스의 예시적인 바닥 계획(800)을 나타낸다. 링 메시 상호접속부는 편리하게도 수직(y축) 및 수평(x축) 차원 양자에서의 다중 코어 설계의 스케일링을 가능하게 한다. 열당 다수의 코어(및 타일)를 갖는 4개 이상의 열이 제공될 수 있다. 일부 구현들에서, 링 메시 상호접속부를 이용하는 다중 코어 디바이스는 20개 이상의 코어로 확장될 수 있다. 따라서, 링 메시 스타일 상호접속부들을 이용하여 대역폭 및 저지연 특성들을 유지하면서 다양한 다중 코어 바닥 계획들이 실현될 수 있다.
설명된 바와 같이, 예를 들어, 도 7의 예의 설명에서, 바닥 계획(800) 내의 각각의 타일은 코어(예로서, 705) 및 캐시 뱅크 및 대응하는 캐시 제어기(예로서, 710)를 포함할 수 있다. 또한, 링 메시 상호접속부의 비용 최소화를 돕기 위해, 링들(예로서, 725, 730)의 와이어들은 각각의 타일의 일부 위에 배치되어, 타일들이 디바이스 상에 치밀하게 그룹화되게 함으로써, 다이 영역을 더 효율적으로 이용하는 것을 가능하게 할 수 있다. 각각의 타일의 에이전트는 타일을 메시 내의 2개의 링에 접속하는 링 스톱을 포함할 수 있다. 링 스톱은 일부 구현들에서 타일의 코너에 배치될 수 있다. 도 8의 특정 예에서, 타일들의 열들은 타일 상의 링 스톱의 배치를 교대하게 하여, 이웃하는 수직 링들(예로서, 730, 805)이 열들의 인접하는 측부들 상에 배치되는 것을 가능하게 할 수 있다. 이어서, 코어들(예로서, 810, 815)의 2개의 열이 2개의 실질적으로 인접하는 수직 링(예로서, 820, 825)의 다음 세트에 제공될 수 있으며, 기타 등등일 수 있다. 일부 구현들에서, 링 메시 링들 중 일부를 다이 상에 실질적으로 인접하도록 제공하는 것은 많은 예시적인 이익 및 구현 가운데 특히 전력 전달 및 클럭킹 아키텍처가 2개의 인접 열(또는 행) 상에 할당되는 것을 가능하게 할 수 있다. 전술한 바와 같이, 링 메시 스타일 상호접속부들은 다양한 상이한 바닥 계획 레이아웃들의 실현에 있어서의 유연성을 가능하게 한다. 따라서, 도 8의 간이 예는 링 메시 상호접속부를 이용하는 바닥 계획의 하나의 대표적인 예일 뿐이며, 더 많거나 적은 타일들, 상이한 컴포넌트들, 에이전트들 및 링들의 상이한 배치 등을 갖는 다양한 대안 설계들이 제공될 수 있다는 것을 알아야 한다.
도 9a-9c는 복수의 CPU 코어 타일을 접속하는 링 메시 상호접속부의 다양한 구현들을 이용하여 실현될 수 있는 예시적인 흐름들을 나타낸다. 아래의 간이 예들에서, (도 4에 소개된) 예시적인 디바이스(400)는 디바이스(400)의 컴포넌트들(예로서, 416, 418, 420, 422, 424, 425, 426, 428, 430, 432, 434, 435, 436, 438, 440, 442, 444, 445, 446, 448, 450, 452) 간의 예시적인 흐름들을 표현하도록 제공된다. 예를 들어, 도 9a의 예에서는, 메시지가 코어(418)로부터 디바이스(400) 상의 (코어(424)의) 다른 타일 상의 캐시 뱅크(434)로 전송될 수 있다. 각각의 캐시 뱅크(예로서, 426, 428, 430, 432, 434, 435)는 시스템의 전체 캐시의 분할을 나타낼 수 있으며, 각각의 코어(예로서, 416, 418, 420, 422, 424, 425)는 잠재적으로 디바이스(400)의 캐시 뱅크들 중 어느 하나 내의 데이터에 액세스하고 이를 이용할 수 있다. 코어(418)의 에이전트(456)는 에이전트(462)를 향하는 수직 링(410) 상의 메시지 트래픽을 주입하는 데 사용될 수 있다. 메시지 트래픽은 트래픽을 링(410)으로부터 수평 링(404)으로 전이시키기 위한 에이전트(454)로 라우팅될 수 있다. 일례에서, 에이전트들(454, 456, 458, 460, 462, 464) 각각은 각각의 링(예로서, 402, 404, 406, 408, 410, 412, 414, 415) 간의 교점들을 양방향으로 또는 단방향 전이에 따라 제공하도록 구성될 수 있다. 예를 들어, 도 9a의 예는 트래픽을 수직 링들로부터 수평 링들로 전이시키도록 구성되는 트랜스그레스 버퍼들을 갖는 단방향 구성으로 구현될 수 있다. 에이전트(454)는 에이전트(462)의 코어로의 전송을 위해 트래픽을 수평 링(404)으로 전이시킬 수 있다(예로서, 링(410)으로부터의 트래픽을 싱크하고 재주입할 수 있다). 링(404) 상에 있는 트래픽은 수직 링(414)에 접속된 에이전트(462)로 중단 없이 진행하여 수직 링(412)과 같은 중개 수직 링들을 지나 중단 없이 효과적으로 전송될 수 있다. 수직 및 수평 링들(예로서, 링들(404, 412))의 각각의 그러한 "교점들"에는 어떠한 중간 버퍼 또는 링 스톱도 제공되지 않아서, 링들(예로서, 402, 404, 406, 408, 410, 412, 414, 415) 중 어느 하나의 링 상의 트래픽이 링 상에서 그의 목적지로 중단 없이 진행하는 것을 가능하게 할 수 있다. 메시 교점들에 링 스톱들을 사용하는 설계들에 비해 더 낮은 지연이 실현되어, 많은 예시적인 장점 가운데 특히, 전통적인 링 상호접속부들의 지연 프로필과 유사하고 전통적인 메시 상호접속부 설계들보다 낮은 지연 프로필을 가능하게 하면서 다른 링 없는 메시 상호접속부들의 대역폭 프로필과 유사한 대역폭 프로필을 제공할 수 있다.
링 메시 상호접속부는 다이의 레이아웃에서만이 아니라 디바이스 상의 컴포넌트들 간의 라우팅에 대해서도 유연성을 제공할 수 있다. 일부 구현들에서, 링 메시 상의 트래픽의 동적 리라우팅이 제공되어, 트래픽이 메시 상의 다른 링들로 편하게 리라우팅되어 특정 목적지에 도달하는 것을 가능하게 할 수 있다. 도 9b의 예는 상호접속부 상의 트래픽을 에이전트(456)로부터 에이전트(462)로 전송하는 데 사용될 수 있는 다른 잠재적 경로를 나타낸다. 도 9b의 예에서, 에이전트(456)는 에이전트(464)로의 전송을 위해 트래픽을 수평 링(406) 상에 주입할 수 있다. 에이전트(464)는 목적지 타일 및 에이전트(462)로의 전송을 위해 트래픽을 (예로서, 트랜스그레스 버퍼를 이용하여) 수평 링(406)으로부터 수직 링(414)으로 전이시킬 수 있다. 일 구현에서, 도 9b에 도시된 예시적인 흐름은 수평 링들로부터 수직 링들로의 단방향 트랜스그레스 버퍼들을 이용하는 링 메시에 의해 채택되는 흐름일 수 있다. 또한, 도 9a의 예에서와 같이, 링들 상에 주입된 트래픽은 트래픽을 전달하는 중간 링들(예로서, 412)의 중간 링 스톱들로 싱크되지 않고서 링 상호접속 프로토콜들을 이용하여 링 상으로 중단 없이 진행할 수 있다.
일부 구현들에서, 하나의 링으로부터 다른 링으로의 전이를 위한 트랜스그레스 버퍼에서의 트래픽의 버퍼링은 단일 사이클만큼 적은 사이클에서 달성될 수 있다. 트래픽을 중단 없이 링 메시의 링을 따라 그의 목적지 또는 다음 전이점으로 전송함으로써, 많은 예시적인 장점 가운데 특히, 더 전통적인 메시 상호접속부의 수평 또는 수직 경로를 따라 제공되는 추가적인 링 스톱들에 의해 유발되는 바와 같은 추가 지연이 감소될 수 있다.
도 9c의 예를 참조하면, 다수의 CPU 코어 및 캐시 뱅크를 상호접속하기 위한 링 메시 상호접속부를 이용하는 디바이스(400)와 관련된 제 3 예가 도시된다. 도 9c의 예에서, 디바이스(400)의 최종 레벨 캐시(LLC)의 라인에 저장된 데이터에 대한 요청(905)이 (예로서, 디바이스(400) 외부의 다른 디바이스로부터) 메모리 제어기(446)에서 수신된다. 메모리 제어기(446)는 요청을, 요청된 데이터를 저장하고 있는 것으로 여겨지는 캐시 뱅크(428)의 에이전트(456)로 라우팅할 수 있다. 이러한 특정 예에서, 먼저 요청 메시지를 수평 링(402)을 통해 전송하여, 수직 링(404) 상으로 트래픽을 주입할 EDC 컴포넌트(436)의 트랜스그레스 버퍼로 중단 없이 진행시키는 링 메시 상의 경로가 이용될 수 있다. 트래픽은 중단 없이 수직 링(404) 상에서 에이전트(456)에 있는 요청의 목적지로 진행할 수 있다. 도 9c의 예에 도시된 경로는 수평 대 수직 트랜스그레스 버퍼 구현을 이용하는 구현에 대응할 수 있다. 다른 예들에서는, 대안 경로들이 이용될 수 있으며, 이는 잠재적으로 링들(402, 404, 406, 408, 410, 412, 414, 415)의 임의 조합을 이용하여 요청을 에이전트(456)로 전송하기 위한 요청의 리라우트들에서 이용되는 것을 포함할 수 있다.
도 9c의 예를 계속 설명하면, 에이전트(456)는 코어 박스(418)에 접속될 수 있다. 코어(418)는 요청을 처리하고, 캐시 뱅크(428)가 사실상 요청된 캐시 라인을 소유하지 않는 것으로 결정할 수 있으며, 해시 함수 또는 다른 탐색을 실행하여 디바이스 캐시의 어느 뱅크가 요청(905)에 대응하는 캐시 라인을 소유하는지를 결정할 수 있다. 코어 박스(418)는 대신에 캐시 뱅크(434)가 요청된 캐시 라인의 올바른 소유자인 것으로 결정할 수 있다. 에이전트(456)는 요청을 캐시 뱅크(434)에 대응하는 에이전트(462)로 전송하기 위한 경로를 결정할 수 있다. 경로는 이 예에서 다시 단일 턴 수평 대 수직 경로를 따를 수 있지만, 다수의 수평 및 수직 링들 상의 다수의 턴을 갖는 경로들을 포함하는 대안 경로들이 이용될 수 있다. 도 9c의 도시된 예에서, 에이전트(456)는 요청을 수평 링(406) 상으로 주입하여(910), 에이전트(464)를 이용하여 수직 링(414)으로 전이되게 한다. 요청은 중단 없이 에이전트(464)로 진행하며, 여기에 잠재적으로 버퍼링된 후에 그의 목적지인 에이전트(462)로의 전송을 위해 링(414) 상으로 주입된다. 이어서, 트래픽은 링(414)을 따라 에이전트(462)로 진행한다. 요청의 수신시에, 코어 박스(424)는 요청을 처리하여, 요청된 캐시 라인이 캐시 뱅크(434) 내에 존재하는지를 결정할 수 있다. 라인이 존재하는 경우, 코어(424)는 캐시 라인 내에 포함된 데이터에 기초하여 메모리 제어기(446)(또는 다른 컴포넌트)로 전송될 응답을 생성할 수 있다. 그러나, 본 예에서, 코어(424)는 LLC 비적중을 결정하고, 요청을 시스템 메모리로 재지향시켜 메모리 제어기(446)에 의해 처리되게 한다. 따라서, LLC 비적중 응답(915)이 생성되며, 에이전트(462)는 응답을 메모리 제어기(446)로 전송하기 위한 링 메시 상의 경로를 결정한다. 이 경우, 메모리 제어기(446)가 에이전트(462)와 동일한 수직 링에 접속됨에 따라, 응답은 수직 링(414) 상에서 메모리 제어기(446)로 진행한다. 메모리 제어기(446)는 응답을 처리할 수 있으며, 많은 예 가운데 특히, 시스템 메모리에서 원래 요청된 데이터를 발견하고, 갱신 메시지를 이용하여 (즉, 요청(905)의) 요청 컴포넌트에 응답하려고 잠재적으로 시도할 수 있다.
이제, 도 10a-10b의 간이 흐름도들(1000a-b)을 참조하면, 링 메시 상호접속부 상에서의 트랜잭션 메시지들(또는 패킷들)의 전송과 관련된 예시적인 기술들이 도시된다. 도 10a의 예에서, 제 1 방향으로 배향된 링 메시 상호접속부의 제 1 링 및 제 1 방향에 실질적으로 수직인 제 2 방향으로 배향된 메시 내의 제 2 링 양자에 접속된 제 1 링 스톱에서 특정 메시지가 수신될 수 있다(1005). 메시지는 예를 들어 다른 컴포넌트로부터 수신될 수 있으며, 메시지는 제 1 링을 따라 제 1 링 스톱으로 전송될 수 있다. 다른 예들에서, 메시지는 제 1 링 스톱에 대응하는 코어 에이전트 또는 캐시 에이전트로부터 수신될 수 있다. 제 1 링 스톱은 다중 코어 플랫폼 내의 타일의 링 스톱일 수 있고, 타일은 (코어 에이전트에 대응하는) CPU 코어 및 캐시 에이전트에 의해 관리되는 (예로서, LLC의) 캐시 뱅크 양자를 포함한다. 메시지는 디바이스 상의 다른 컴포넌트를 향할 수 있으며, 디바이스는 다른 컴포넌트 및 제 1 링 스톱을 포함할 수 있다. 링 메시 상호접속부를 이용하여 메시지를 다른 컴포넌트의 링 스톱으로 전송하기 위한 경로가 결정될 수 있으며(1010), 메시지는 결정된 경로에 따른 링 메시 상호접속부의 제 2 링 상의 주입을 위해 버퍼링될 수 있다(1015). 특정 메시지는 예를 들어 제 2 링 상의 가용성 또는 대역폭의 식별에 응답하여 제 2 링 상에 주입될 수 있다(1020). 특정 메시지는 많은 예 가운데 특히 링 메시에 적용될 수 있는 흐름 제어, 메시지 클래스, 중재 및 메시지 고갈 정책들에 따라 주입될 수 있다. 이어서, 주입된 메시지는 제 2 링이 제 1 방향으로 배향된 임의의 다른 중개 링들을 통해 전송하는지에 관계없이 제 2 링을 통해 다른 컴포넌트로 중단 없이 진행할 수 있다.
도 10b의 예를 참조하면, (트랜잭션의 하나 이상의 패킷과 같은) 메시지가 링 메시 상호접속부의 제 1 링 상호접속부를 따라 디바이스의 특정 타일 또는 컴포넌트의 링 스톱으로 전송될 수 있다(1030). 링 메시는 제 1 링과 같이 제 1 방향으로 배향된 링들, 및 제 1 방향에 실질적으로 직교하도록 제 2 방향으로 배향된 링들을 포함할 수 있다. 메시지는 궁극적으로 디바이스 상의 다른 컴포넌트로 향할 수 있으며, 제 2 방향으로 배향된 링 메시 상호접속부에서 제 1 링으로부터 제 2 링으로 전이될 수 있다(1035). 이어서, 메시지는 제 2 링을 따라 제 1 방향으로 배치된 하나 이상의 중개 링을 통해 목적지 컴포넌트의 링 스톱으로 전송될 수 있다(1040). 중개(또는 교차) 링들을 통해 중단 없이 링 메시 내의 특정 링 상에서 진행하기 위한 메시지들의 능력은 링 메시 상호접속부의 링들 상에서의 메시지들의 전송에 링 상호접속 프로토콜을 적용함으로써 가능해질 수 있다.
전술한 장치들, 방법들 및 시스템들은 전술한 바와 같은 임의의 전자 디바이스 또는 시스템에서 구현될 수 있다. 특정 예들로서, 아래의 예들은 본 명세서에서 설명되는 바와 같은 본 발명을 이용하기 위한 예시적인 시스템들을 제공한다. 아래의 시스템들이 더 상세히 설명됨에 따라, 위의 설명으로부터 다수의 상이한 상호접속이 개시되고, 설명되고, 재논의된다. 그리고, 쉽게 명백하듯이, 전술한 진보들은 임의의 그러한 상호접속, 패브릭 또는 아키텍처에 적용될 수 있다.
이제, 도 11을 참조하면, 본 발명의 일 실시예에 따른 제 2 시스템(1100)의 블록도가 도시된다. 도 11에 도시된 바와 같이, 다중 프로세서 시스템(1100)은 점대점 상호접속 시스템이며, 점대점 상호접속부(1150)을 통해 결합된 제 1 프로세서(1170) 및 제 2 프로세서(1180)를 포함한다. 프로세서들(1170, 1180) 각각은 프로세서의 소정 버전일 수 있다. 일 실시예에서, 1152 및 1154는 인텔의 고속 경로 상호접속(QPI) 아키텍처와 같은 직렬 점대점 일관성 상호접속 패브릭의 일부이다. 결과적으로, 본 발명은 QPI 아키텍처 내에 구현될 수 있다.
2개의 프로세서(1170, 1180)만을 갖는 것으로 도시되지만, 본 발명의 범위는 그에 한정되지 않는다는 것을 이해해야 한다. 다른 실시예들에서, 하나 이상의 추가 프로세서가 주어진 프로세서 내에 존재할 수 있다.
프로세서들(1170, 1180)은 각각 통합 메모리 제어기 유닛들(1172, 1182)을 포함하는 것으로 도시된다. 프로세서(1170)는 또한 그의 버스 제어기 유닛들의 일부로서 점대점(P-P) 인터페이스들(1176, 1178)을 포함하며, 유사하게 제 2 프로세서(1180)는 P-P 인터페이스들(1186, 1188)을 포함한다. 프로세서들(1170, 1180)은 P-P 인터페이스 회로들(1178, 1188)을 이용하여 점대점(P-P) 인터페이스(1150)를 통해 정보를 교환할 수 있다. 도 11에 도시된 바와 같이, IMC들(1172, 1182)은 각각의 프로세서에 국지적으로 부착된 메인 메모리의 부분들일 수 있는 각각의 메모리, 즉 메모리(1132) 및 메모리(1134)에 프로세서들을 결합한다.
프로세서들(1170, 1180) 각각은 점대점 인터페이스 회로들(1176, 1194, 1186, 1198)을 이용하여 개별 P-P 인터페이스들(1152, 1154)을 통해 칩셋(1190)과 정보를 교환한다. 칩셋(1190)은 고성능 그래픽 상호접속부(1139)을 따라 인터페이스 회로(1192)를 통해 고성능 그래픽 회로(1138)와도 정보를 교환한다.
공유 캐시(미도시)가 프로세서 내에 포함되거나, 양 프로세서 밖에 있지만 P-P 상호접속부를 통해 프로세서들에 접속될 수 있으며, 따라서 하나 또는 양 프로세서의 국지적 캐시 정보는 프로세서가 저전력 모드에 있는 경우에 공유 캐시 내에 저장될 수 있다.
칩셋(1190)은 인터페이스(1196)를 통해 제 1 버스(1116)에 결합될 수 있다. 일 실시예에서, 제 1 버스(1116)는 주변 컴포넌트 상호접속(PCI) 버스, 또는 PCI 익스프레스 버스 또는 다른 3세대 I/O 상호접속 버스와 같은 버스일 수 있지만, 본 발명의 범위는 그에 한정되지 않는다.
도 11에 도시된 바와 같이, 다양한 I/O 디바이스들(1114)은 제 1 버스(1116)를 제 2 버스(1120)에 결합하는 버스 브리지(1118)와 함께 제 1 버스(1116)에 결합된다. 일 실시예에서, 제 2 버스(1120)는 로우 핀 카운트(LPC) 버스를 포함한다. 일 실시예에서, 예를 들어 키보드 및/또는 마우스(1122), 통신 디바이스들(1127) 및 명령어들/코드 및 데이터(1130)를 종종 포함하는 디스크 드라이브 또는 다른 대용량 저장 디바이스와 같은 저장 유닛(1128)을 포함하는 다양한 디바이스들이 제 2 버스(1120)에 결합된다. 또한, 오디오 I/O(1124)가 제 2 버스(1120)에 결합되는 것으로 도시된다. 포함되는 컴포넌트들 및 상호접속 아키텍처들이 상이한 다른 아키텍처들이 가능하다는 점에 유의한다. 예를 들어, 도 11의 점대점 아키텍처 대신에, 시스템은 멀티-드롭 버스 또는 다른 그러한 아키텍처를 구현할 수 있다.
본 발명은 제한된 수의 실시예와 관련하여 설명되었지만, 이 분야의 기술자들은 그들로부터의 다양한 수정들 및 변경들을 인식할 것이다. 첨부된 청구항들은 본 발명의 진정한 사상 및 범위 내에 속하는 바와 같은 모든 그러한 수정들 및 변경들을 커버하는 것을 의도한다.
설계는 생성으로부터 시뮬레이션, 제조에 이르는 다양한 스테이지들을 통해 이루어질 수 있다. 설계를 표현하는 데이터는 설계를 다양한 방식으로 표현할 수 있다. 첫째, 시뮬레이션에서 유용하듯이, 하드웨어는 하드웨어 설명 언어 또는 다른 기능 설명 언어를 이용하여 표현될 수 있다. 게다가, 로직 및/또는 트랜지스터 게이트들을 갖는 회로 레벨 모델이 설계 프로세스의 일부 스테이지들에서 생성될 수 있다. 더구나, 대부분의 설계들은 소정 스테이지에서 하드웨어 모델 내의 다양한 디바이스들의 물리적 배치를 표현하는 데이터의 레벨에 도달한다. 전통적인 반도체 제조 기술들이 이용되는 경우, 하드웨어 모델을 표현하는 데이터는 집적 회로를 생성하는 데 사용되는 마스크들에 대한 상이한 마스크 층들 상의 다양한 특징들의 존재 또는 부재를 지정하는 데이터일 수 있다. 설계의 임의의 표현에서, 데이터는 임의 형태의 머신 판독 가능 매체 내에 저장될 수 있다. 메모리 또는 디스크와 같은 자기 또는 광학 저장소가 정보를 전송하도록 변조되거나 생성된 광학 또는 전기 파동을 통해 전송되는 그러한 정보를 저장하기 위한 머신 판독 가능 매체일 수 있다. 코드 또는 설계를 지시하거나 운반하는 전기 반송파가 전송될 때, 전기 신호의 복사, 버퍼링 또는 재전송이 수행되는 한도에서, 새로운 복사가 행해진다. 따라서, 통신 제공자 또는 네트워크 제공자는 본 발명의 실시예들의 기술들을 구현하는, 반송파 내에 인코딩된 정보와 같은 물건을 유형의 머신 판독 가능 매체 상에 적어도 일시적으로 저장할 수 있다.
본 명세서에서 사용되는 바와 같은 모듈은 하드웨어, 소프트웨어 및/또는 펌웨어의 임의 조합을 지칭한다. 일례로서, 모듈은 마이크로컨트롤러에 의해 실행되도록 적응된 코드를 저장하기 위한 비일시적 매체와 관련된 마이크로컨트롤러와 같은 하드웨어를 포함한다. 따라서, 일 실시예에서, 모듈에 대한 언급은 비일시적 매체 상에 유지되는 코드를 인식 및/또는 실행하도록 특별히 구성되는 하드웨어를 지칭한다. 더구나, 다른 실시예에서, 모듈의 사용은 사전 결정된 동작들을 수행하기 위해 마이크로컨트롤러에 의해 실행되도록 특별히 적응되는 코드를 포함하는 비일시적 매체를 지칭한다. 그리고, 추정될 수 있듯이, 또 다른 실시예에서, 용어 모듈은 (이 예에서) 마이크로컨트롤러와 비일시적 매체의 조합을 지칭할 수 있다. 종종, 개별적인 것으로 도시되는 모듈 경계들은 일반적으로 변하며, 잠재적으로 중복된다. 예를 들어, 제 1 및 제 2 모듈이 하드웨어, 소프트웨어, 펌웨어 또는 이들의 조합을 공유할 수 있지만, 잠재적으로는 소정의 독립 하드웨어, 소프트웨어 또는 펌웨어를 보유할 수 있다. 일 실시예에서, 용어 로직의 사용은 트랜지스터들, 레지스터들 또는 다른 하드웨어, 예로서 프로그래밍 가능 로직 디바이스들과 같은 하드웨어를 포함한다.
일 실시예에서, "~하기 위한" 또는 "~하도록 구성되는"이라는 표현의 사용은 지정된 또는 결정된 작업을 수행하기 위해 장치, 하드웨어, 로직 또는 요소를 배열하고, 함께 배치하고, 제조하고, 판매 제의하고, 수입하고/하거나 설계하는 것을 지칭한다. 이러한 예에서, 동작하고 있지 않은 장치 또는 그의 요소는 지정된 작업을 수행하도록 설계, 결합 및/또는 상호접속되는 경우에 여전히 상기 지정된 작업을 수행'하도록 구성'된다. 순전히 설명 예로서, 로직 게이트는 동작 동안 0 또는 1을 제공할 수 있다. 그러나, 클럭에 인에이블 신호를 제공'하도록 구성되는' 로직 게이트는 1 또는 0을 제공할 수 있는 어떠한 잠재적 로직 게이트도 포함하지 않는다. 대신, 로직 게이트는 동작 동안 1 또는 0 출력이 클럭을 인에이블하는 소정 방식으로 결합된 것이다. "~하도록 구성되는"이라는 용어의 사용은 동작을 요구하는 것이 아니라, 장치, 하드웨어 및/또는 요소의 잠재 상태에 초점을 맞추며, 잠재 상태에서 장치, 하드웨어 및/또는 요소는 장치, 하드웨어 및/또는 요소가 동작할 때 특정 작업을 수행하도록 설계된다는 점에 다시 한 번 유의한다.
더구나, 일 실시예에서, '~할 수 있는/~하기 위한' 및/또는 '~하도록 동작할 수 있는'이라는 표현들의 사용은 소정 장치, 로직, 하드웨어 및/또는 요소가 장치, 로직, 하드웨어 및/또는 요소의 지정된 방식으로의 사용을 가능하게 하는 방식으로 설계된 것을 지칭한다. 위와 같이, 일 실시예에서, '~하기 위한', '~할 수 있는' 또는 '~하도록 동작할 수 있는'이라는 표현의 사용은 장치, 로직, 하드웨어 및/또는 요소가 동작하고 있는 것이 아니라 지정된 방식으로의 장치의 사용을 가능하게 하는 방식으로 설계되는 장치, 로직, 하드웨어 및/또는 요소의 잠재 상태를 지칭한다는 점에 유의한다.
값은 본 명세서에서 사용되는 바와 같이 숫자, 상태, 로직 상태 또는 이진 로직 상태의 임의의 공지된 표현을 포함한다. 종종, 로직 레벨들, 로직 값들 또는 로직 값들의 사용은 단지 이진 로직 상태들을 표현하는 1들 및 0들로도 지칭된다. 예를 들어, 1은 하이 로직 레벨을 지칭하고, 0은 로우 로직 레벨을 지칭한다. 일 실시예에서, 트랜지스터 또는 플래시 셀과 같은 저장 셀은 단일 로직 값 또는 다수의 로직 값을 유지할 수 있다. 그러나, 컴퓨터 시스템들에서는 값들의 다른 표현들이 사용되어 왔다. 예를 들어, 십진수 10은 이진 값 1110 및 16진 문자 A로도 표현될 수 있다. 따라서, 값은 컴퓨터 시스템 내에 유지될 수 있는 정보의 임의의 표현을 포함한다.
더욱이, 상태들은 값들 또는 값들의 부분들에 의해 표현될 수 있다. 일례로서, 로직 1과 같은 제 1 값은 디폴트 또는 초기 상태를 나타낼 수 있고, 로직 0과 같은 제 2 값은 논-디폴트 상태를 나타낼 수 있다. 게다가, 일 실시예에서, 재설정 및 설정이라는 용어는 각각 디폴트 및 갱신된 값 또는 상태를 지칭한다. 예를 들어, 디폴트 값은 잠재적으로 하이 로직 값, 즉 재설정을 포함하며, 갱신된 값은 잠재적으로 로우 로직 값, 즉 설정을 포함한다. 값들의 임의 조합이 임의 수의 상태를 표현하는 데 사용될 수 있다는 점에 유의한다.
전술한 방법들, 하드웨어, 소프트웨어, 펌웨어 또는 코드의 실시예들은 처리 요소에 의해 실행될 수 있는 머신 액세스 가능, 머신 판독 가능, 컴퓨터 액세스 가능 또는 컴퓨터 판독 가능 매체 상에 저장된 명령어들 또는 코드를 통해 구현될 수 있다. 비일시적 머신 액세스 가능/판독 가능 매체는 컴퓨터 또는 전자 시스템과 같은 머신에 의해 판독될 수 있는 형태로 정보를 제공(즉, 저장 및/또는 전송)하는 임의의 메커니즘을 포함한다. 예를 들어, 비일시적 머신 액세스 가능 매체는 랜덤 액세스 메모리(RAM), 예로서 정적 RAM(SRAM) 또는 동적 RAM(DRAM); ROM; 자기 또는 광학 저장 매체; 플래시 메모리 디바이스들; 전기 저장 디바이스들; 광학 저장 디바이스들; 음향 저장 디바이스들; 정보를 수신할 수 있는 소스인 비일시적 매체들과 구별되는 일시적(전파) 신호들(예로서, 반송파, 적외선 신호, 디지털 신호)로부터 수신되는 정보를 유지하기 위한 다른 형태의 저장 디바이스들 등을 포함한다.
본 발명의 실시예들을 실행하도록 로직을 프로그래밍하는 데 사용되는 명령어들은 DRAM, 캐시, 플래시 메모리 또는 다른 저장소와 같은 시스템 내의 메모리 내에 저장될 수 있다. 더구나, 명령어들은 네트워크를 통해 또는 다른 컴퓨터 판독 가능 매체들을 통해 배포될 수 있다. 따라서, 머신 판독 가능 매체는 머신(예로서, 컴퓨터)에 의해 판독될 수 있는 형태로 정보를 저장 또는 전송하기 위한 임의의 메커니즘을 포함할 수 있으며, 플로피 디스켓, 광 디스크, 컴팩트 디스크 판독 전용 메모리(CD-ROM) 및 광자기 디스크, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 소거 및 프로그래밍 가능 판독 전용 메모리(EPROM), 전기적으로 소거 및 프로그래밍 가능한 판독 전용 메모리(EEPROM), 자기 또는 광학 카드, 플래시 메모리, 또는 전기, 광, 음향 또는 다른 형태의 전파 신호들(예로서, 반송파, 적외선 신호, 디지털 신호 등)을 통한 인터넷을 통한 정보의 전송에 사용되는 유형의 머신 판독 가능 저장소를 포함하지만 이에 한정되지 않는다. 따라서, 컴퓨터 판독 가능 매체는 머신(예로서, 컴퓨터)에 의해 판독될 수 있는 형태로 전자 명령어들 또는 정보를 저장 또는 전송하는 데 적합한 임의 타입의 유형의 머신 판독 가능 매체를 포함한다.
아래의 예들은 본 명세서에 따른 실시예들과 관련된다. 하나 이상의 실시예는 제 1 방향으로 배향된 복수의 링 및 제 1 방향에 실질적으로 직교하는 제 2 방향으로 배향된 복수의 링을 포함하는 메시 상호접속부의 제 1 링에 접속된 제 1 링 스톱에서 특정 메시지를 수신하고 특정 메시지를 메시 상호접속부의 제 2 링 상에 주입하기 위한 장치, 시스템, 머신 판독 가능 저장소, 머신 판독 가능 매체 및 방법을 제공할 수 있다. 제 1 링은 제 1 방향으로 배향될 수 있고, 제 2 링은 제 2 방향으로 배향될 수 있으며, 특정 메시지는 제 2 링 상에서 제 2 링에 접속된 목적지 컴포넌트의 다른 링 스톱으로 전송된다.
적어도 일례에서, 특정 메시지는 제 2 링 상에서 목적지 컴포넌트로 중단 없이 진행한다. 예를 들어, 다른 링 스톱은 제 2 링 및 제 1 방향으로 배향된 제 3 링에 접속될 수 있으며, 메시지는 다른 링 스톱에 도달하기 전에 제 1 링과 제 3 링 사이에 제 1 방향으로 배향된 적어도 하나의 다른 링을 통과할 수 있다.
적어도 일례에서, 제 2 링 상에 주입될 메시지들이 중재된다.
적어도 일례에서, 메시지들은 신용 흐름에 따라 중재된다.
적어도 일례에서, 제 2 링 상의 기존 메시지들이 특정 메시지보다 우선권을 갖는다.
적어도 일례에서, 메시지는 제 1 링 및 제 2 방향으로 배향된 제 3 링에 접속된 다른 링 스톱으로부터 수신된다.
적어도 일례에서, 상호접속부 상의 메시지에 대해 경로가 결정된다. 경로는 메시지에 대해 결정된 이전의 경로의 리라우트를 포함할 수 있다. 경로는 제 1 방향으로 배향된 링들로부터 제 2 방향으로 배향된 링들로의 링 스톱들에서의 단방향 전이들을 이용할 수 있다.
적어도 일례에서, 제 2 메시지가 제 2 링 상에서 수신되며, 제 2 메시지는 제 1 링에 접속된 다른 링 스톱으로의 전송을 위해 제 1 링 상에 주입된다.
하나 이상의 실시예는 복수의 중앙 처리 유닛(CPU) 코어와 온-다이 캐시를 결합하기 위한 메시 상호접속부를 제공하기 위한 장치, 시스템, 머신 판독 가능 저장소, 머신 판독 가능 매체 및 방법을 제공할 수 있으며, 메시 상호접속부는 제 1 배향의 제 1 복수의 상호접속부 및 제 1 배향에 직교하는 제 2 배향의 제 2 복수의 상호접속부를 포함하고, 각각의 코어는 각각의 타일 상에 포함되고, 각각의 타일은 제 1 복수의 상호접속부 중 하나 및 제 2 복수의 상호접속부 중 하나에 접속되고, 적어도 하나의 링 상호접속 프로토콜이 제 1 및 제 2 복수의 상호접속부 내의 상호접속부들 각각에 적용된다.
적어도 일례에서, 캐시는 복수의 캐시 뱅크로 분할되고, 타일들 각각은 복수의 캐시 뱅크 각각을 포함한다. 각각의 타일은 홈 에이전트 및 캐시 에이전트를 포함할 수 있다. 홈 에이전트 및 캐시 에이전트는 타일에 대한 결합된 홈-캐시 에이전트일 수 있다.
적어도 일례에서, 각각의 타일은 타일에 접속된 제 1 복수의 상호접속부 중 각각의 하나 및 제 2 복수의 상호접속부 중 각각의 하나에 접속된 정확히 하나의 링 스톱을 포함한다. 각각의 링 스톱은 제 1 복수의 상호접속부 각각으로부터의 트래픽을 싱크하고 트래픽을 제 2 복수의 상호접속부 각각 상에 주입하기 위한 트랜스그레스 버퍼를 포함할 수 있다. 트랜스그레스 버퍼들은 단방향 또는 양방향일 수 있다.
적어도 일례에서, 제 1 복수의 상호접속부 각각 및 제 2 복수의 상호접속부 각각은 대응하는 타일의 적어도 일부 위에 각각 배치된다.
적어도 일례에서, 제 1 복수의 상호접속부 각각 및 제 2 복수의 상호접속부 각각은 하프-링 상호접속부 및 풀-링 상호접속부 중 적어도 하나이다.
적어도 일례에서, 적어도 하나의 링 상호접속 프로토콜은 링 상호접속부들을 위해 적응된 흐름 제어 정책 및 메시지 클래스 정책 중 적어도 하나이다.
적어도 일례에서, 상호접속부, 복수의 CPU 코어 및 온-다이 캐시는 서버 시스템, 개인용 컴퓨터, 스마트폰, 태블릿 또는 다른 컴퓨팅 디바이스 중 하나 상에 포함된다.
하나 이상의 실시예는 메시 상호접속부를 통해 제 1 온-다이 컴포넌트의 제 1 링 스톱으로부터 제 2 온-다이 컴포넌트의 제 2 링 스톱으로 메시지를 전송하기 위한 장치, 시스템, 머신 판독 가능 저장소, 머신 판독 가능 매체 및 방법을 제공할 수 있으며, 제 1 링 스톱은 제 1 방향으로 배향된 메시 내의 제 1 상호접속부 및 제 1 방향에 실질적으로 직교하는 제 2 방향으로 배향된 메시 내의 제 2 상호접속부에 접속되고, 제 2 링 스톱은 제 1 상호접속부 및 제 2 방향으로 배향된 메시 내의 제 3 상호접속부에 접속되고, 메시지는 링 상호접속 프로토콜을 이용하여 전송된다. 메시지는 제 2 링 스톱에서 제 1 상호접속부로부터 제 3 상호접속부으로 전이될 수 있으며, 메시지는 제 3 상호접속부 상에서 제 2 링 스톱으로부터 제 3 상호접속부에 접속된 제 3 링 스톱으로 전송될 수 있다.
적어도 일례에서, 제 2 방향으로 배향된 제4 상호접속부가 제 2 상호접속부와 제 3 상호접속부 사이에 배치되고, 제4 링 스톱이 제4 상호접속부 및 제 1 상호접속부 양자에 접속되고, 메시지는 제 1 상호접속부 상에서 제 2 링 스톱으로 중단 없이 진행한다.
적어도 일례에서, 메시 상호접속부 상의 경로가 결정될 수 있고, 메시지는 경로를 따라 전송될 수 있다.
적어도 일례에서, 메시 상호접속부는 제 1 방향으로 배향된 제 1 복수의 링 상호접속부 및 제 2 방향으로 배향된 제 2 복수의 링 상호접속부를 포함하며, 제 1 상호접속부는 제 1 복수의 링 상호접속부 내에 포함되고, 상기 제 2 및 제 3 상호접속부들은 제 2 복수의 링 상호접속부 내에 포함된다.
적어도 일례에서, 제 3 상호접속부 상의 메시지들의 주입은 제 3 상호접속부 상의 기존 메시지들이 우선권을 갖도록 중재될 수 있다.
하나 이상의 실시예는 제 1 복수의 타일 - 제 1 복수의 타일 각각은 코어 및 캐시를 포함함 -을 결합하기 위한 수직 링에 대한 수직 링 스톱, 제 2 복수의 타일 - 제 2 복수의 타일 각각은 코어 및 캐시를 포함함 -을 결합하기 위한 수평 링에 대한 수평 링 스톱, 및 제 1 복수 및 제 2 복수의 타일 내의 특정 타일 내에 포함된 트랜스그레스 버퍼를 제공하기 위한 장치, 시스템, 머신 판독 가능 저장소, 머신 판독 가능 매체 및 방법을 제공할 수 있으며, 트랜스그레스 버퍼는 수직 링 스톱으로부터 수신되는 패킷을 싱크하고 패킷을 수평 링 스톱을 통해 수평 링 상에 주입한다.
적어도 일례에서, 수직 링으로부터의 비통과 트래픽이 수평 링으로 직접 주입된다.
적어도 일례에서, 트래픽은 어떠한 다른 트래픽도 수평 링으로부터 수직 링으로 스위칭하지 않을 때 수직 링 상의 주입을 위해 수평 링으로부터 싱크될 수 있다.
적어도 일례에서, 수직 링은 극성 규칙들을 갖지 않는다.
적어도 일례에서, 트랜스그레스 버퍼는 둘 이상의 판독 포트 및 둘 이상의 기입 포트를 포함하며, 사이클당 둘 이상의 패킷을 주입하도록 동작할 수 있다.
본 명세서 전반에서의 "하나의 실시예" 또는 "일 실시예"에 대한 참조는 그 실시예와 관련하여 설명되는 특정 특징, 구조 또는 특성이 본 발명의 적어도 하나의 실시예 내에 포함된다는 것을 의미한다. 따라서, 본 명세서 전반의 다양한 곳에서의 "하나의 실시예에서" 또는 "일 실시예에서"라는 표현들의 출현들은 반드시 모두가 동일 실시예를 지칭하지는 않는다. 더구나, 특정 특징들, 구조들 또는 특성들은 하나 이상의 실시예에서 임의의 적절한 방식으로 결합될 수 있다.
위의 명세서에서는, 특정 실시예들을 참조하여 상세한 설명이 제공되었다. 그러나, 첨부된 청구항들에서 설명되는 바와 같은 본 발명의 더 넓은 사상 및 범위로부터 벗어나지 않으면서 다양한 수정들 및 변경들이 이루어질 수 있다는 것이 명백할 것이다. 따라서, 명세서 및 도면은 한정이 아니라 예시적인 것으로 간주되어야 한다. 더구나, 실시예 및 다른 예시적인 언어의 위의 사용은 반드시 동일 실시예 또는 동일 예를 지칭하지는 않으며, 상이하고 별개인 실시예들은 물론 잠재적으로는 동일 실시예도 지칭할 수 있다.

Claims (34)

  1. I/O 로직을 포함하는 장치로서, 상기 I/O 로직은,
    제 1 차원으로 배향된 제 1 복수의 링과 상기 제 1 차원에 직교하는 제 2 차원으로 배향된 제 2 복수의 링을 포함하는 메시 상호접속부(mesh intrconnect)의 제 1 링에 접속된 제 1 링 스톱에서 특정 메시지를 수신하고 - 상기 제 1 복수의 링 내의 링들은 상기 제 2 복수의 링 내의 링들과 오버랩되어 상기 메시 상호접속부를 형성함 -,
    상기 메시 상호접속부의 제 2 링 상에 주입될 메시지를 신용 흐름(credited flow)에 따라 중재하고,
    상기 특정 메시지를 상기 제 2 링 상에 주입하며,
    상기 제 2 링 상의 기존 메시지는 상기 특정 메시지보다 우선권을 갖고, 상기 제 1 링은 상기 제 1 복수의 링 중 하나를 포함하고, 상기 제 2 링은 상기 제 2 복수의 링 중 하나를 포함하며, 상기 특정 메시지는 상기 제 2 링에 접속된 목적지 컴포넌트의 다른 링 스톱으로 전송되고, 상기 특정 메시지는 상기 제 2 링 상에서 상기 목적지 컴포넌트로 중단 없이 진행하는
    장치.
  2. 제 1 항에 있어서,
    상기 다른 링 스톱은 상기 제 2 링 및 상기 메시 상호접속부 내의 제 3 링에 접속되고, 상기 제 3 링은 상기 제 2 복수의 링 중 하나를 포함하며, 상기 메시지는 상기 다른 링 스톱에 도달하기 전에 상기 제 1 링과 상기 제 3 링 사이에 상기 제 1 복수의 링 내의 적어도 하나의 다른 링을 통과하는
    장치.
  3. 삭제
  4. 삭제
  5. 삭제
  6. 제 1 항에 있어서,
    상기 메시지는 상기 제 1 링 및 제 3 링에 접속된 다른 링 스톱으로부터 수신되고, 상기 제 3 링은 상기 제 2 복수의 링 중 하나를 포함하는
    장치.
  7. 제 1 항에 있어서,
    상기 I/O 로직은 또한 상기 상호접속부 상의 상기 메시지에 대한 경로를 결정하는
    장치.
  8. 제 7 항에 있어서,
    상기 경로는 상기 메시지에 대해 결정된 이전의 경로의 리라우트를 포함하는
    장치.
  9. 제 7 항에 있어서,
    상기 경로는 상기 제 1 복수의 링 내의 링들로부터 상기 제 2 복수의 링 내의 링들로의 링 스톱에서의 단방향 전이를 이용하는
    장치.
  10. 제 1 항에 있어서,
    상기 I/O 로직은 또한
    상기 제 2 링 상에서 제 2 메시지를 수신하고,
    상기 제 1 링에 접속된 다른 링 스톱으로의 전송을 위해 상기 제 2 메시지를 상기 제 1 링 상에 주입하는
    장치.
  11. 복수의 중앙 처리 유닛(CPU) 코어와 온-다이 캐시를 결합하기 위한 메시 상호접속부를 포함하는 시스템으로서,
    상기 메시 상호접속부는 제 1 차원으로 주 배향된 제 1 복수의 링 상호접속부를 포함하고, 상기 제 1 복수의 링 상호접속부는 상기 제 1 차원에 직교하는 제 2 차원으로 주 배향된 제 2 복수의 링 상호접속부와 오버랩되고, 각각의 코어는 각각의 타일 상에 포함되고, 각각의 타일은 상기 제 1 복수의 링 상호접속부 중 하나 및 상기 제 2 복수의 링 상호접속부 중 하나에 접속되고, 적어도 하나의 링 상호접속 프로토콜이 상기 제 1 복수의 링 상호접속부 및 상기 제 2 복수의 링 상호접속부 내의 링 상호접속부 각각에 적용되고, 상기 링 상호접속부들 중 각각의 링 상호접속부 상의 기존 메시지가 대응하는 링 상호접속부 상에 주입될 메시지보다 우선권을 갖도록 메시지가 중재되는
    시스템.
  12. 제 11 항에 있어서,
    상기 복수의 코어 및 상기 온-다이 캐시를 더 포함하는
    시스템.
  13. 제 12 항에 있어서,
    상기 캐시는 복수의 캐시 뱅크로 분할되고, 상기 타일 각각은 상기 복수의 캐시 뱅크 각각을 포함하는
    시스템.
  14. 제 13 항에 있어서,
    각각의 타일은 홈 에이전트 및 캐시 에이전트를 포함하는
    시스템.
  15. 제 14 항에 있어서,
    상기 홈 에이전트 및 캐시 에이전트는 상기 타일에 대한 결합된 홈-캐시 에이전트를 포함하는
    시스템.
  16. 제 11 항에 있어서,
    각각의 타일은 상기 타일에 접속된 상기 제 1 복수의 링 상호접속부 중 각각의 제 1 링 상호접속부 및 상기 제 2 복수의 링 상호접속부 중 각각의 제 2 링 상호접속부에 접속된 정확히 하나의 링 스톱을 포함하는
    시스템.
  17. 제 16 항에 있어서,
    각각의 링 스톱은 상기 제 1 복수의 링 상호접속부 중 상기 각각의 제 1 링 상호접속부로부터 트래픽을 싱크(sink)하고, 상기 트래픽을 상기 제 2 복수의 링 상호접속부 중 상기 각각의 제 2 링 상호접속부 상에 주입하기 위한 트랜스그레스 버퍼(transgress buffer)를 포함하는
    시스템.
  18. 제 17 항에 있어서,
    각각의 트랜스그레스 버퍼는 단방향 트랜스그레스 버퍼를 포함하는
    시스템.
  19. 제 17 항에 있어서,
    각각의 트랜스그레스 버퍼는 양방향 트랜스그레스 버퍼를 포함하는
    시스템.
  20. 제 11 항에 있어서,
    상기 제 1 복수의 링 상호접속부 중 각각의 제 1 링 상호접속부 및 상기 제 2 복수의 링 상호접속부 중 각각의 제 2 링 상호접속부는 대응하는 타일의 적어도 일부 위에 각각 배치되는
    시스템.
  21. 메시 상호접속부를 통해 제 1 온-다이 컴포넌트의 제 1 링 스톱으로부터 제 2 온-다이 컴포넌트의 제 2 링 스톱으로 메시지를 전송하는 단계 - 상기 제 1 링 스톱은 메시 내의 제 1 링 상호접속부 및 제 2 링 상호접속부에 연결되고, 상기 메시 상호접속부는 각각 제 1 차원으로 주 배향된 제 1 복수의 링 상호접속부 및 상기 제 1 차원에 직교하는 제 2 차원으로 주 배향된 제 2 복수의 링 상호접속부를 포함하고, 상기 제 1 복수의 링 상호접속부는 상기 제 2 복수의 링 상호접속부와 오버랩되어 상기 메시 상호접속부를 형성하며, 상기 제 1 링 상호접속부는 상기 제 1 복수의 링 상호접속부 중 하나를 포함하고, 상기 제 2 링 상호접속부는 상기 제 2 복수의 링 상호접속부 중 하나를 포함하며, 상기 제 2 링 스톱은 상기 제 1 링 상호접속부 및 상기 메시 내의 제 3 링 상호접속부에 접속되고, 상기 제 3 링 상호접속부는 상기 제 2 복수의 링 상호접속부 중 하나를 포함하며, 상기 메시지는 링 상호접속 프로토콜을 이용하여 전송됨 - 와,
    상기 제 2 링 스톱에서 상기 메시지를 상기 제 1 링 상호접속부로부터 상기 제 3 링 상호접속부로 전이시키는 단계 - 상기 제 3 링 상의 기존 메시지는 상기 메시지보다 우선권을 가짐 - 와,
    상기 메시지를 상기 제 3 링 상호접속부 상에서 상기 제 2 링 스톱으로부터 상기 제 3 링 상호접속부에 접속된 제 3 링 스톱으로 전송하는 단계를 포함하는
    방법.
  22. 제 21 항에 있어서,
    제 4 링 상호접속부가 상기 제 2 링 상호접속부와 상기 제 3 링 상호접속부 사이에 배치되고, 상기 제 4 링 상호접속부는 상기 제 2 복수의 링 상호접속부 중 하나를 포함하며, 제 4 링 스톱이 상기 제 4 링 상호접속부 및 상기 제 1 링 상호접속부 양자에 접속되고, 상기 메시지는 상기 제 1 링 상호접속부 상에서 제 2 링 스톱으로 중단 없이 진행하는
    방법.
  23. 제 22 항에 있어서,
    상기 메시 상호접속부 상의 경로를 결정하는 단계를 더 포함하고, 상기 메시지는 상기 경로를 따라 전송되는
    방법.
  24. 제 21 항에 있어서,
    상기 제 3 링 상호접속부 상의 기존 메시지의 우선권에 기초하여 상기 제 3 링 상호접속부 상의 메시지의 주입을 중재하는 단계를 더 포함하는
    방법.
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
KR1020157033960A 2013-06-29 2013-06-29 온칩 메시 상호접속부 KR101830685B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/048800 WO2014209406A1 (en) 2013-06-29 2013-06-29 On-chip mesh interconnect

Publications (2)

Publication Number Publication Date
KR20160004370A KR20160004370A (ko) 2016-01-12
KR101830685B1 true KR101830685B1 (ko) 2018-02-21

Family

ID=52116804

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157033960A KR101830685B1 (ko) 2013-06-29 2013-06-29 온칩 메시 상호접속부

Country Status (5)

Country Link
US (1) US20150006776A1 (ko)
EP (1) EP3014420A4 (ko)
KR (1) KR101830685B1 (ko)
CN (1) CN105247476A (ko)
WO (1) WO2014209406A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013081580A1 (en) * 2011-11-29 2013-06-06 Intel Corporation Raw memory transaction support
US9921989B2 (en) 2014-07-14 2018-03-20 Intel Corporation Method, apparatus and system for modular on-die coherent interconnect for packetized communication
JP6454577B2 (ja) * 2015-03-25 2019-01-16 ルネサスエレクトロニクス株式会社 処理装置及び処理装置の制御方法
US10193826B2 (en) 2015-07-15 2019-01-29 Intel Corporation Shared mesh
US10776309B2 (en) * 2016-12-31 2020-09-15 Intel Corporation Method and apparatus to build a monolithic mesh interconnect with structurally heterogenous tiles
CN108632172B (zh) * 2017-03-23 2020-08-25 华为技术有限公司 片上网络及对冲挂死解除方法
WO2018201383A1 (zh) * 2017-05-04 2018-11-08 华为技术有限公司 互连系统、互连控制方法和装置
US10740236B2 (en) 2017-05-12 2020-08-11 Samsung Electronics Co., Ltd Non-uniform bus (NUB) interconnect protocol for tiled last level caches
US11294850B2 (en) * 2019-03-29 2022-04-05 Intel Corporation System, apparatus and method for increasing bandwidth of edge-located agents of an integrated circuit
US11641326B2 (en) 2019-06-28 2023-05-02 Intel Corporation Shared memory mesh for switching
GB2596102B (en) * 2020-06-17 2022-06-29 Graphcore Ltd Processing device comprising control bus
US11929940B1 (en) 2022-08-08 2024-03-12 Marvell Asia Pte Ltd Circuit and method for resource arbitration

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006254434A (ja) * 2005-03-10 2006-09-21 Sony Computer Entertainment Inc データスイッチとデータ伝送方法
US20090168767A1 (en) 2007-12-28 2009-07-02 Mark Anders Multi-core processor and method of communicating across a die
US20120151152A1 (en) * 2010-12-09 2012-06-14 International Business Machines Corporation Reading core data in a ring bus type multicore system
WO2012127619A1 (ja) 2011-03-22 2012-09-27 富士通株式会社 並列計算機システム及び並列計算機システムの制御方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5689719A (en) * 1991-06-28 1997-11-18 Sanyo Electric O., Ltd. Parallel computer system including processing elements
US6687818B1 (en) * 1999-07-28 2004-02-03 Unisys Corporation Method and apparatus for initiating execution of an application processor in a clustered multiprocessor system
US6961782B1 (en) * 2000-03-14 2005-11-01 International Business Machines Corporation Methods for routing packets on a linear array of processors
US6754757B1 (en) * 2000-12-22 2004-06-22 Turin Networks Full mesh interconnect backplane architecture
US7555566B2 (en) * 2001-02-24 2009-06-30 International Business Machines Corporation Massively parallel supercomputer
US7298971B2 (en) * 2003-10-15 2007-11-20 Sprint Communications Company L.P. Hybrid optical ring-mesh protection in a communication system
US20090274157A1 (en) * 2008-05-01 2009-11-05 Vaidya Aniruddha S Method and apparatus for hierarchical routing in multiprocessor mesh-based systems
US8307198B2 (en) * 2009-11-24 2012-11-06 Advanced Micro Devices, Inc. Distributed multi-core memory initialization
US8819272B2 (en) * 2010-02-11 2014-08-26 Massachusetts Institute Of Technology Multiprocessor communication networks
US8738860B1 (en) * 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments
US9658861B2 (en) * 2011-12-29 2017-05-23 Intel Corporation Boot strap processor assignment for a multi-core processing unit
WO2013105931A1 (en) * 2012-01-10 2013-07-18 Intel Corporation Router parking in power-efficient interconnect architectures
US8601423B1 (en) * 2012-10-23 2013-12-03 Netspeed Systems Asymmetric mesh NoC topologies
US8667439B1 (en) * 2013-02-27 2014-03-04 Netspeed Systems Automatically connecting SoCs IP cores to interconnect nodes to minimize global latency and reduce interconnect cost

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006254434A (ja) * 2005-03-10 2006-09-21 Sony Computer Entertainment Inc データスイッチとデータ伝送方法
US20090168767A1 (en) 2007-12-28 2009-07-02 Mark Anders Multi-core processor and method of communicating across a die
US20120151152A1 (en) * 2010-12-09 2012-06-14 International Business Machines Corporation Reading core data in a ring bus type multicore system
WO2012127619A1 (ja) 2011-03-22 2012-09-27 富士通株式会社 並列計算機システム及び並列計算機システムの制御方法

Also Published As

Publication number Publication date
US20150006776A1 (en) 2015-01-01
KR20160004370A (ko) 2016-01-12
EP3014420A1 (en) 2016-05-04
WO2014209406A1 (en) 2014-12-31
EP3014420A4 (en) 2017-04-05
CN105247476A (zh) 2016-01-13

Similar Documents

Publication Publication Date Title
KR101830685B1 (ko) 온칩 메시 상호접속부
TWI570565B (zh) 池式記憶體位址轉譯之技術
CN109154924B (zh) 多个上行链路端口设备
CN105718390B (zh) 共享存储器链路中的低功率进入
CN106815151B (zh) 高性能互连相干协议
JP6311174B2 (ja) 共有メモリ、およびノード間のi/oサービス
RU2608000C2 (ru) Представление фильтрации наблюдения, ассоциированной с буфером данных
CN107113253B (zh) 用于片上网络的空间划分的电路交换信道
CN107005477B (zh) 用于片上网络的基于链路延迟的路由装置
JP2017504089A5 (ko)
CN107113227B (zh) 流水线化混合分组/电路交换片上网络
CN105492989B (zh) 用于管理对时钟进行的门控的装置、系统、方法和机器可读介质
CN107078971B (zh) 组合保证吞吐量和尽力而为的片上网络
CN104932996B (zh) 用于控制链路接口的未使用硬件的功率消耗的方法、装置和系统
CN103744644A (zh) 采用四核结构搭建的四核处理器系统及数据交换方法
CN107005492B (zh) 用于芯片上网络上的多播和缩减通信的系统
CN109643299A (zh) 在具有现有tlp定义的pcie上的持久存储器写入语义
CN107003944B (zh) 跨分布式存储器的指针追踪
CN107111584B (zh) 到片上网络的接口的高带宽核
US10776309B2 (en) Method and apparatus to build a monolithic mesh interconnect with structurally heterogenous tiles
CN107113252B (zh) 用于片上网络的并行方向解码电路
Gupta Design Decisions for Tiled Architecture Memory Systems
CN115643173A (zh) 用于提高链路效率的技术

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