KR101695328B1 - 모듈러 온-다이 코히어런트 인터커넥트 방법, 장치 및 시스템 - Google Patents

모듈러 온-다이 코히어런트 인터커넥트 방법, 장치 및 시스템 Download PDF

Info

Publication number
KR101695328B1
KR101695328B1 KR1020150083489A KR20150083489A KR101695328B1 KR 101695328 B1 KR101695328 B1 KR 101695328B1 KR 1020150083489 A KR1020150083489 A KR 1020150083489A KR 20150083489 A KR20150083489 A KR 20150083489A KR 101695328 B1 KR101695328 B1 KR 101695328B1
Authority
KR
South Korea
Prior art keywords
coherent
logic
fabric
interface
agent
Prior art date
Application number
KR1020150083489A
Other languages
English (en)
Other versions
KR20160008454A (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 KR20160008454A publication Critical patent/KR20160008454A/ko
Application granted granted Critical
Publication of KR101695328B1 publication Critical patent/KR101695328B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/252Store and forward routing
    • 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/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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
    • G06F13/4036Coupling between buses using bus bridges with arbitration and deadlock prevention
    • 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/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7825Globally asynchronous, locally synchronous, e.g. network on chip
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • H04L29/10
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multi Processors (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

일 실시예에서, 장치는 코히어런트 동작을 수행하는 제 1 컴포넌트, 및 제 1 컴포넌트 인터페이스를 통해 상기 제 1 컴포넌트에 결합되는 코히어런트 패브릭 로직을 포함한다. 코히어런트 패브릭 로직은 제 1 컴포넌트와 코히어런트 패브릭 로직에 결합되는 제 2 컴포넌트 사이에서 코히어런트 통신을 위한 풀 코히어런트 패브릭 기능을 수행하도록 구성될 수 있다. 제 1 컴포넌트는 코히어런트 패브릭 로직과 패킷을 통신하는 패킷화 로직을 포함할 수 있지만, 코히어런트 패브릭 기능을 수행하는 코히어런트 인터커넥트 인터페이스를 포함하지 않을 수 있다. 다른 실시예들이 기술되고 청구된다.

Description

모듈러 온-다이 코히어런트 인터커넥트 방법, 장치 및 시스템{A METHOD, APPARATUS AND SYSTEM FOR A MODULAR ON-DIE COHERENT INTERCONNECT}
본 개시는 컴퓨팅 시스템에 관한 것으로, 특히 (이것으로 국한된 것은 아니지만) 온-다이 인터커넥트(on-die interconnects)에 관한 것이다.
도 1은 멀티코어 프로세서를 포함하는 컴퓨팅 시스템에 대한 블록도의 일 실시예이다.
도 2는 일 실시예에 따른 코히어런트 패브릭 IP 로직을 포함하는 시스템의 일부에 대한 블록도이다.
도 3은 일 실시예에 따른 다수의 패브릭 IP 로직의 메시 인터커넥트 구현예의 하이 레벨 블록도이다.
도 4는 일 실시예에 따른 코히어런트 패브릭 IP 로직 블록의 추가 세부 사항을 도시하는 블록도이다.
도 5는 다른 실시예에 따른 코히어런트 패블릭 IP 로직 블록의 블록도이다.
도 6은 일 실시예에 따른 방법의 흐름도이다.
도 7은 다른 실시예에 따른 방법의 흐름도이다.
도 8은 본 발명의 일 실시예에 따른 SoC의 블록도이다.
아래 설명에서, 본 발명의 완전한 이해를 제공하기 위해, 특정한 유형의 프로세서 및 시스템 구성, 특정한 하드웨어 구조, 특정한 아키텍처 및 마이크로 아키텍처 세부사항, 특정한 레지스터 구성, 특정한 명령어 유형, 특정한 시스템 컴포넌트, 특정한 측정/높이, 특정한 프로세서 파이프라인 스테이지 및 동작 등의 예들과 같은 다수의 특정한 세 사항이 제시된다. 그러나 본 기술 분야에서 통상의 지식을 가진자에게는 이러한 특정한 세부 사항이 본 발명을 실시하는데 사용될 필요가 없다는 것이 명백할 것이다. 다른 예에서, 특정한 및 대안의 프로세서 아키텍처, 기술된 알고리즘용의 특정한 로직 회로/코드, 특정한 펌웨어 코드, 특정한 인터커넥트 동작, 특정한 로직 구성, 특정한 제조 기술 및 재료, 특정한 컴파일러 구현예, 코드에서 알고리즘의 특정한 표현, 특정한 전력 다운 및 게이팅 기술/로직 및 컴퓨터 시스템의 다른 특정한 동작 세부 사항과 같은 공지의 컴포넌트 또는 방법은 본 발명을 불필요하게 모호하게 하는 것을 방지하기 위하여 상세히 기술되지 않았다.
다음의 실시예들은 컴퓨팅 플랫폼 또는 마이크로프로세서와 같은 특정한 집적 회로에서 에너지 보존 및 에너지 효율을 참조하여 기술될 수 있지만, 다른 실시예들은 다른 유형의 집적 회로 및 로직 디바이스에 적용할 수 있다. 본 개시에서 기술되는 실시예들의 유사한 기술 및 가르침은 또한 양호한 에너지 효율 및 에너지 보존으로부터 혜택을 받을 수 있는 다른 유형의 회로 또는 반도체 디바이스에 적용될 수 있다. 예를 들면, 기술된 실시예들은 데스크톱 컴퓨터 시스템 또는 울트라북(UltrabooksTH)으로 제한되지는 않는다. 또한, 핸드헬드 디바이스, 태블릿, 다른 씬 노트북, 시스템 온 칩(systems on a chip, SOC) 디바이스, 및 내장형 어플리케이션과 같은 다른 디바이스에서 사용될 수 있다. 핸드헬드 디바이스의 몇몇 예는 셀룰러 폰, 인터넷 프로토콜 디바이스, 디지털 카메라, 개인 디지털 보조기(personal digital assistants, PDAs)), 및 핸드헬드 PC를 포함한다. 내장형 어플리케이션은 통상적으로 아래에서 가르치는 기능 및 동작을 수행할 수 있는 마이크로콘트롤러, 디지털 신호 처리기(digital signal processor, DSP), 시스템 온 칩, 네트워크 컴퓨터(network computers, NetPC), 셋-탑 박스, 네트워크 허브, 광역 통신망(wide area network, WAN) 스위치, 또는 임의의 다른 시스템을 포함한다. 또한 본 개시에 기술되는 장치, 방법 및 시스템은 물리적 컴퓨팅 디바이스로 제한되는 것이 아니라, 에너지 보존 및 효율을 위한 소프트웨어 최적화에도 관련될 수 있다. 아래의 설명에서 쉽게 명백해지는 바와 같이, (하드웨어, 펌웨어, 소프트웨어 또는 그 조합을 참조하든 아니든) 본 개시에서 기술되는 방법, 장치 및 시스템의 실시예들은 성능을 고려하여 균형을 이룬 '녹색 기술' 미래에 매우 중요하다.
컴퓨팅 시스템이 발전함에 따라, 컴퓨팅 시스템의 컴포넌트는 더 복잡해지고 있다. 그 결과, 컴포넌트끼리를 결합하고 통신하기 위한 인터커넥트 아키텍처는 또한 대역폭 요구조건이 최적한 컴포넌트 동작에 부합되는 것을 보장하기 위해 복잡성이 증가하고 있다. 더욱이, 상이한 마켓 세그먼트들은 마켓의 필요에 맞도록 상이한 양상의 인터커넥트 아키텍처를 요구한다. 예를 들면, 서버는 고성능을 요구하는 반면, 모바일 에코시스템은 때로는 절전을 위해 전반적인 성능을 희생할 수 있다. 그렇지만, 최대 절전으로 최고 성능을 제공하는 것이 대부분의 패브릭의 단 하나의 목적이다. 아래에서, 본 개시에서 기술되는 발명의 양태로부터 유익할 가능성이 있는 다수의 인터커넥트가 논의된다.
도 1을 참조하면, 멀티코어 프로세서를 포함하는 컴퓨팅 시스템용 블록도의 일 실시예가 도시된다. 프로세서(100)는 코드를 실행하는 마이크로프로세서, 임베디드 프로세서, 디지털 신호 프로세서(digital signal processor, DSP), 네트워크 프로세서, 핸드헬드 프로세서, 어플리케이션 프로세서, 코-프로세서, 시스템 온 칩(SOC), 또는 다른 디바이스와 같은 임의의 프로세서 또는 프로세싱 디바이스를 포함한다. 프로세서(100)는 일 실시예에서, 비대칭 코어 또는 대칭 코어를 포함할 수 있는 적어도 두 개의 코어-코어(101, 102)를 포함한다(예시된 실시예). 그러나 프로세서(100)는 대칭 또는 비대칭일 수 있는 임의의 수의 프로세싱 요소를 포함할 수 있다.
일 실시예에서, 프로세싱 요소는 소프트웨어 쓰레드를 지원하는 하드웨어 또는 로직을 지칭한다. 하드웨어 프로세싱 요소의 예는 실행 상태 또는 아키텍처 상태와 같은 프로세서 상태를 유지할 수 있는, 쓰레드 유닛, 쓰레드 슬롯, 쓰레드, 프로세스 유닛, 컨텍스트, 컨텍스트 유닛, 로직 프로세서, 하드웨어 쓰레드, 코어, 및/또는 임의의 다른 요소를 포함한다. 즉, 프로세싱 요소는 일 실시예에서, 소프트웨어 쓰레드, 운영 체제, 어플리케이션, 또는 다른 코드와 같은, 코드와 독립적으로 관련될 수 있는 임의의 하드웨어를 지칭한다. 물리적 프로세서 (또는 프로세서 소켓)은 보통 코어 또는 하드웨어 쓰레드와 같은 임의의 수의 다른 프로세싱 요소를 포함할 가능성이 있는 집적 회로를 지칭한다.
코어는 종종 독립적인 아키텍처 상태를 유지할 수 있는 집적회로 상에 위치하는 로직을 지칭하고, 각각 독립적으로 유지되는 아키텍처 상태는 적어도 몇몇 전용 실행 자원과 관련된다. 코어와 대조적으로, 하드웨어 쓰레드는 보통 독립적인 아키텍처 상태를 유지할 수 있는 집적 회로 상에 위치하는 임의의 로직을 지칭하고, 독립적으로 유지되는 아키텍처 상태는 실행 자원으로의 액세스를 공유한다. 알 수 있는 바와 같이, 특정한 자원이 공유되고 다른 것들이 아키텍처 상태에 전용으로 사용될 때, 하드웨어 쓰레드와 코어의 명명법 사이의 라인은 중복된다. 아직 종종, 코어 및 하드웨어 쓰레드는 운영 체제에 의해 개별 로직 프로세서로서 비추어 지며, 여기서 운영 체제는 각각의 로직 프로세서에 상에서의 동작을 개별적으로 스케줄링할 수 있다.
물리적 프로세서(100)는 도 1에 도시된 바와 같이, 두 개의 코어-코어(101, 102)를 포함한다. 여기서, 코어(101, 102)는 대칭 코어 즉, 동일한 구성, 기능 유닛, 및/또는 로직을 갖춘 코어로 간주된다. 다른 실시예에서, 코어(101)는 아웃-오브-오더 프로세서 코어(an out-of-order processor core)를 포함하는 반면, 코어(102)는 인-오더 프로세서 코어(an in-order processor core)를 포함한다. 그러나 코어(101, 102)는 네이티브 코어, 소프트웨어 관리된 코어, 네이티브 명령어 세트 아키텍처(native Instruction Set Architecture, ISA)를 실행하도록 적응된 코어, 변환된 명령 세트 아키텍처(ISA)를 실행하도록 적응되는 코어, 코-디자인드 코어(a co-designed core), 또는 다른 공지된 코어와 같은 임의의 유형의 코어로부터 개별적으로 선택될 수 있다. 이종 코어 환경(즉, 비대칭 코어)에서, 이진 변환과 같은 몇몇 형태의 변환은 하나 또는 두 개의 코어에서 코드 스케줄링하거나 코드를 실행하도록 사용될 수 있다. 논의를 더 진전시키기 위하여, 코어(102) 내의 유닛이 설명된 실시예에서 유사한 방식으로 동작하기 때문에, 코어(101)에서 예시되는 기능 유닛은 아래에 보다 상세히 기술된다.
묘사된 바와 같이, 코어(101)는 하드웨어 쓰레드 슬롯(101a, 101b)이라고도 지칭될 수 있는 두 개의 하드웨어 쓰레드(101a, 101b)를 포함한다. 따라서, 운영 체제와 같은 소프트웨어 엔티티는 일 실시예에서, 프로세서(100)를 네 개의 개별 프로세서 즉, 네 개의 소프트웨어 쓰레드를 동시에 실행할 수 있는 네 개의 로직 프로세서 또는 프로세싱 요소로 볼 가능성이 있다. 위에 언급된 바와 같이, 제 1 쓰레드는 아키텍처 상태 레지스터(101a)와 관련되고, 제 2 쓰레드는 아키텍처 상태 레지스터(101b)와 관련되고, 제 3 쓰레드는 아키텍처 상태 레지스터(102a)와 관련되고, 제 4 쓰레드는 아키텍처 상태 레지스터(102b)와 관련된다. 여기서, 각각의 아키텍처 상태 레지스터(101a, 101b, 102a, 102b)는 전술된 바와 같이, 프로세싱 요소, 쓰레드 슬롯, 또는 쓰레드 유닛이라 지칭될 수 있다. 예시된 바와 같이, 아키텍처 상태 레지스터(101a)는 아키텍처 상태 레지스터(101b)에서 복제되며, 그래서 개별 아키텍처 상태/컨텍스트는 로직 프로세서(101a) 및 로직 프로세서(101b) 용도로 저장될 수 있다. 코어(101)에서, 할당기 및 리네이머 블록(allocator and renamer block)(130)에서의 명령어 포인터 및 리네이밍 로직과 같은 다른 더 작은 자원이 또한 쓰레드(101a, 101b) 용도로 복제될 수 있다. 리오더/리타이어먼트 유닛(reorder/retirement unit)(135)에 있는 리-오더 버퍼, ILTB(120), 로드/스토어 버퍼, 및 큐와 같은 몇몇 자원들은 파티셔닝을 통해 공유될 수 있다. 범용 내부 레지스터, 페이지-테이블 베이스 레지스터(들), 로우-레벨 데이터-캐시 및 데이터-TLB(115), 실행 유닛(들)(140), 및 아웃-오브-오더 유닛(135)의 부분들과 같은 다른 자원들은 완전히 공유될 가능성이 있다.
프로세서(100)는 종종 완전히 공유될 수 있거나, 파티셔닝을 통해 공유되거나, 프로세싱 요소에 의해/프로세싱 요소에 전용일 수 있는 다른 자원들을 포함한다. 도 1에서, 프로세서의 예시적인 로직 유닛/자원을 갖는 순전히 예시적인 프로세서의 일 실시예가 도시된다. 프로세서는 이러한 기능 유닛 중 임의의 유닛을 포함하거나 또는 생략할 수 있을 뿐만 아니라, 설명되지 않은 임의의 다른 공지의 기능 유닛, 로직, 또는 펌웨어를 포함할 수 있다는 것을 주목하자. 도시된 바와 같이, 코어(101)는 단순화된 대표적인 아웃-오브-오더(OOO) 프로세서 코어를 포함한다. 그러나 인-오더 프로세서는 상이한 실시예에서 사용될 수 있다. OOO 코어는 실행되고/취해질 브랜치를 예측하기 위한 브랜치 타겟 버퍼(120)와, 명령어의 어드레스 변환 엔트리를 저장하는 명령어-변환 버퍼(I-TLB)(120)를 포함한다.
코어(101)는 패치 유닛(120)에 결합되어 패치된 요소를 디코딩하는 디코드 모듈(125)을 더 포함한다. 패치 로직은 일 실시예에서, 각각 쓰레드 슬롯(101a, 101b)과 관련되는 개별 시퀀서를 포함한다. 보통, 코어(101)는 프로세서(100) 상에서 실행가능한 명령어를 한정하고/명시하는 제 1 ISA와 관련된다. 종종 제 1 ISA의 부분인 머신 코드 명령어는 수행될 명령어 또는 동작을 참조/명시하는 명령어의 일부분(op코드라 지칭함)을 포함한다. 디코드 로직(125)은 이러한 명령어를 그의 op코드로부터 인식하고 그리고 제 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 레벨 캐시와 같은 상위-레벨 또는 퍼더-아웃(further-out) 캐시로의 액세스를 공유한다. 상위-레벨 또는 퍼더-아웃은 실행 유닛(들)으로부터 증가하거나 멀어지는 캐시 레벨을 지칭한다는 것을 주목하자. 일 실시예에서, 상위-레벨 캐시는 제 2 또는 제 3 레벨 데이터 캐시와 같은 최종-레벨 데이터 캐시-프로세서(100) 상의 메모리 계층에서의 최종 캐시이다. 그러나, 상위 레벨 캐시는 이것이 명령어 캐시와 관련되거나 명령어 캐시를 포함할 수 있으므로 그렇게 제한되지는 않는다. 트레이스 캐시 -명령어 캐시의 일 유형 - 는 대신 최근 디코딩된 트레이스를 저장하기 위해 디코더(125) 뒤에 결합될 수 있다. 여기서 명령어는 다수개의 마이크로-명령어(마이크로-동작)로 디코딩될 수 있는 매크로-명령어(즉, 디코더에 의해 인식되는 일반적인 명령어)를 잠재적으로 지칭한다.
도시된 구성에서, 프로세서(100)는 또한 온-칩 인터페이스 모듈(110)을 포함한다. 역사상, 이하 더 상세히 기술되는 메모리 제어기는 프로세서(100) 외부의 컴퓨팅 시스템에 포함되어 있었다. 이 시나리오에서, 온-칩 인터페이스(110)는 시스템 메모리(175), (종종 메모리(175)에 접속하는 메모리 제어기 허브와 주변 장치에 접속하는 I/O 제어기 허브를 포함하는) 칩셋, 메모리 제어기 허브, 노쓰브리지(northbridge), 또는 다른 집적 회로와 같은, 프로세서(100) 외부의 디바이스와 통신한다. 이러한 시나리오에서, 버스(105)는 멀티-드롭 버스, 포인트-투-포인트 인터커넥트, 직렬 인터커넥트, 병렬 버스, 코히어런트(예를 들면, 캐시 코히어런트) 버스, 컨텍스트는 프로토콜 아키텍처, 차동 버스, 및 GTL 버스와 같은 임의의 공지된 인터커넥트를 포함할 수 있다.
메모리(175)는 프로세서(100)에 전용일 수 있거나, 시스템에 있는 다른 디바이스와 공유될 수 있다. 메모리(175)의 유형의 공통 예는 DRAM, SRAM, 비-휘발성 메모리(non-volatile memory)(NV 메모리) 및 다른 공지된 스토리지 디바이스를 포함한다. 디바이스(180)는 메모리 제어기 허브에 결합되는 그래픽 가속기, 프로세서 또는 카드, I/O 제어기 허브에 결합되는 데이터 스토리지, 무선 송수신기, 플래시 디바이스, 오디오 제어기, 네트워크 제어기, 또는 다른 공지의 디바이스를 포함할 수 있다는 것을 주목하자.
그러나 최근, 더 많은 로직 및 디바이스가 SOC와 같은 단일 다이 상에 집적됨에 따라, 이러한 디바이스 각각은 프로세서(100) 상에 통합될 수 있다. 예를 들면, 일 실시예에서, 메모리 제어기 허브는 프로세서(100)와 동일한 패키지 및/또는 다이 상에 있다. 여기서, 코어(온-코어 부분)(110)의 부분은 메모리(175) 또는 그래픽 디바이스(180)와 같은 다른 디바이스와 인터페이싱하기 위한 하나 이상의 제어기(들)을 포함한다. 그러한 디바이스와 인터페이싱하기 위한 인터커넥트 및 제어기를 포함하는 구성은 종종 온-코어(또는 언-코어(un-core) 구성)라 지칭된다. 일 예로서, 온-칩 인터페이스(110)는 온-칩 통신을 위한 링 인터커넥트와 오프-칩 통신을 위한 고-속 직렬 포인트-투-포인트 링크(105)를 포함한다. 그러나 SOC 환경에서, 네트워크 인터페이스, 코-프로세서, 메모리(175), 그래픽 프로세서(180), 및 임의의 다른 공지된 컴퓨터 디바이스/인터페이스와 같은 더 많은 디바이스가 작은 폼 팩터에 고기능 및 저 전력 소비를 제공하도록 단일 다이 또는 집적 회로 상에 집적될 수 있다.
일 실시예에서, 프로세서(100)는 본 출원에서 기술되는 장치 및 방법을 지원하거나 이들과 인터페이스 하기 위하여 애플리케이션 코드(176)를 컴파일링, 변환 및/또는 최적화하도록 컴파일러, 최적화, 및/또는 변환기 코드(177)를 실행할 수 있다. 컴파일러는 종종 소스 텍스트/코드를 타겟 텍스트/코드로 변환하기 위한 프로그램 또는 프로그램의 세트를 포함한다. 보통, 컴파일러를 사용한 프로그램/어플리케이션 코드의 컴파일은 다수의 단계에서 실행되고 하이-레벨 프로그래밍 언어를 하위-레벨 머신 또는 어셈블리 언어 코드로 변환하도록 패스한다. 그러나 단일 패스 컴파일러는 여전히 단일 컴파일을 위해 사용될 수 있다. 컴파일러는 임의의 공지의 컴파일 기술을 사용할 수 있고 어휘 분석, 전처리, 문장 분석, 시맨틱 분석, 코드 발생, 코드 변환 및 코드 최적화와 같은 임의의 공지의 컴파일러 동작을 실행할 수 있다.
더 큰 컴파일러는 종종 다수의 단계를 포함하지만, 가장 빈번한 이들 국면은 두 개의 일반적인 단계 즉, (1) 일반적으로 구문 처리, 의미 처리 및 몇몇 변환/최적화가 발생할 수 있는 프론트-엔드, 및 (2) 일반적으로 분석, 변환, 최적화 및 코드 생성이 발생하는 백-엔드 내에 포함된다. 몇몇 컴파일러는 컴파일러의 프론트-엔드와 백 엔드 간의 묘사를 모호하게 설명하는 미들이라 말한다. 그 결과, 컴파일러의 삽입, 연계, 발생, 또는 다른 동작에 대한 참조가 컴파일러의 전술한 국면 또는 패스 중 임의의 것에서뿐만 아니라 임의의 다른 공지의 국면 또는 패스에서 일어날 수 있다. 예시적인 예로서, 컴파일러는, 컴파일의 프론트-엔드 국면에서 호출/동작의 삽입과 그 후 변환 국면 동안 호출/동작을 하위-레벨 코드로의 변환과 같은 컴파일의 하나 이상의 국면에서, 동작, 호출 기능 등을 삽입할 가능성이 있다. 동적 컴파일 동안, 컴파일러 코드 또는 동적 최적화 코드는 그러한 동작/호출을 삽입할 뿐만 아니라 런타임 동안 실행하기 위해 코드를 최적화할 수 있다. 특정한 예시적인 예로서, 이진 코드(이미 컴파일링된 코드)는 런타임 동안 동적으로 최적화될 수 있다. 여기서, 프로그램 코드는 동적 최적화 코드, 이진 코드, 또는 그 조합을 포함할 수 있다.
컴파일러와 유사하게, 이진 변환기와 같은 변환기는 코드를 최적화하고/최적화하거나 변환하기 위하여 코드를 정적으로 또는 동적으로 변환한다. 따라서, 코드, 어플리케이션 코드, 프로그램 코드 또는 다른 소프트웨어 환경의 실행에 대한 참조는 (1) 프로그램 코드를 컴파일하거나, 소프트웨어 구조체를 유지하거나, 다른 동작을 수행하거나, 코드를 최적화하거나, 코드를 변환하기 위하여, 동적으로 또는 정적으로 컴파일러 프로그램(들), 최적화 코드 최적화기, 또는 변환기의 실행, (2) 최적화/컴파일된 어플리케이션 코드와 같은 동작/호출을 포함하는 메인 프로그램 코드의 실행, (3) 소프트웨어 구조체를 유지하거나, 다른 소프트웨어 관련 동작을 수행하거나, 또는 코드를 최적화하기 위하여 메인 프로그램 코드와 연관된 라이브러리와 같은 다른 프로그램 코드의 실행, 또는 (4) 그 조합을 지칭할 수 있다.
하나의 인터커넥트 패브릭 아키텍처는 PCIe 아키텍처를 포함한다. PCIe의 일차 목표는 복수의 마켓 세그먼트들 즉, 클라이언트(데스크탑 모바일), 서버(표준 및 엔터프라이즈), 및 내장형 디바이스 및 통신 디바이스를 포괄하는 개방 아키텍처에서 상이한 벤더로부터의 컴포넌트 및 디바이스를 상호-동작가능하게 하는 것이다. PCI 익스프레스는 광범위한 미래의 컴퓨팅 및 통신 플랫폼을 위해 정의되는 고성능 다목적 I/O 인터커넥트이다. 그 사용 모델, 로드-스토어(load-store architecture) 아키텍처, 및 소프트웨어 인터페이스와 같은 일부 PCI 속성은 그의 개정을 통해 유지되어 온 반면, 이전의 병렬 버스 구현은 뛰어난 확장성, 완전 직렬 인터페이스로 대체되었다. PCI 익스프레스의 최신 버전은 새로운 레벨의 성능 및 특징을 전달하기 위하여 포인트-투-포인트 인터커넥트, 스위치-기반 기술, 및 패킷화된 프로토콜에서의 최신의 것을 활용한다. 전력 관리, 서비스 품질(Quality Of Service, QoS), 핫-플러그/핫-스와프 지원, 데이터 무결성, 및 에러 처리는 PCI 익스프레스에 의해 지원되는 최신의 특징들 중 일부이다.
SoC와 같은 프로세서는 코어 카운트 및 새로운 온-다이 컴포넌트의 통합의 측면에서 복잡성이 증가함에 따라, 언코어 디자인 및 통합이 또한 복잡성 및 결실의 면에서 성장하고 있다. 디자이너가 컴포넌트 블록의 모듈화 및 재사용을 추구하는 동안 언코어 통합의 하나의 컴포넌트는 각종의 기능 컴포넌트를 온-다이 코히어런트 패브릭에 연결하는 과정을 수반한다. 이러한 디자인 측면에서, 디자이너는 각각의 컴포넌트를 패브릭에 연결하도록 고객 디자인 블록을 포함할 수 있는, 기능 컴포넌트와 코히어런트 패브릭 사이에서 애드 혹(ad hoc) 인터페이스 디자인을 통상적으로 수행한다.
실시예는 재사용을 높이고 디자인 복잡성과 노력을 줄이는 모듈러 및 스케일러블 온-다이 인터커넥트 솔루션을 제공한다. 다양한 실시예에 따르면, 코어, 통합된 입력 출력(integrated input output, IIO) 에이전트, 및/또는 메모리와 같은 기능 컴포넌트는 모든 코히어런트 패브릭 기능을 본 개시에서 코히어런트 패블릭 IP 로직이라고 지칭하는 단일의 지적 재산권(intellectual property, IP) 블록으로 추상화함으로써 코히어런트 패블릭에 결합될 수 있다. 실시예는 기능 컴포넌트와 코히어런트 패브릭 IP 블록 사이의 표준 인터페이스 세트를 정의할 수도 있다. 이러한 방식으로, 컴포넌트들의 임의적인 조합을 갖는 임의적인 크기의 네트워크 토폴로지가 디자인될 수 있다. 또한, 실시예는 코히어런트 패브릭 IP 블록의 로직 및 물리적 레벨을 모두 재사용할 수 있게 한다. 또한, 실시예는 IP를 주어진 제품과 특정한 고객 요구에 맞추도록 복수의 구성 설정치를 제공할 수 있다. 이러한 방식으로, 코히어런트 패브릭 기능은 추가의 코히어런트 패브릭 기술로 쉽게 전이할 수 있도록 추상화될 수 있다.
온-다이 코히어런트 인터커넥트는 기능 컴포넌트로부터 추상화되어 나올 수 있기 때문에, 모듈러 IP 블록은 인터커넥트 기능을 논리적으로 및 물리적으로 분할하는 다양한 기능 컴포넌트에 대한 표준화된 인터페이스를 구비하는 결과를 가져온다. 일 실시예를 이용하자면, 코히어런트 인터커넥트 인터페이스는 각각의 기능 컴포넌트를 갖춘 고객 인터페이스와는 대조적으로, 표준화된 컴포넌트 인터페이스일 수 있다. 또한, 일 실시예에서, 인터커넥트 로직의 물리적 디자인은 각각의 기능 컴포넌트마다의 고객 물리적 디자인과는 대조적으로, 컴포넌트 전반에 하드 IP 블록을 포함하는 다양한 레벨의 재사용을 가능하게 한다.
일 실시예를 이용하자면, 인터커넥트-관련 기능의 검증은, 각각의 컴포넌트마다 별도의 검증을 수행하는 대신, 일단 표준 인터페이스 및 공유 로직이 정해지면 실행될 수 있다. 또한 모듈화는 토폴로지를 디자인하고 새로운 컴포넌트를 디자인에 추가하는 것을 용이하게 해줄 수 있다. 또한 인터커넥트 기술은 임의의 인터커넥트-기반 기술 변동이 코히어런트 패브릭 IP 로직 블록으로 국한되도록, 기능 컴포넌트로부터 추상화는 방식으로 진화할 수 있다. 이와 같이, 코히어런트 패브릭 IP 블록의 모듈화 및 인터페이스의 표준화는 전체적인 코히어런트 인터커넥트 디자인 및 검증 노력을 줄여줄 수 있다.
예시의 인터커넥트 패브릭 및 프로토콜은 다른 것들 중, 주변 컴포넌트 인터커넥트 익스프레스 아키텍처(Peripheral Component Interconnect (PCI) Express (PCIe) architecture), 인텔 퀵패쓰 인터커넥트 아키텍처(Intel QuickPath Interconnect (QPI) architecture), 모바일 산업 프로세서 인터페이스(Mobile Industry Processor Interface (MIPI))를 포함할 수 있다. 지원되는 프로세서의 범위는 노드 제어기들 사이에서 다수의 도메인 또는 다른 인터커넥트를 사용함으로써 도달될 수 있다.
인터커넥트 패브릭 아키텍처는 레이어드 프로토콜 아키텍처의 정의를 포함할 수 있다. 일 실시예에서, 프로토콜 레이어(코히어런트, 논(non)-코히어런트, 및 광학적으로 다른 메모리 기반 프로토콜), 라우팅 계층, 링크 계층, 및 물리 계층이 제공될 수 있다. 또한, 인터커넥트는 전력 관리, 테스트 및 디버그용 디자인(design for test and debug, DFT), 결함 처리, 레지스터, 보안, 등과 관련된 향상을 포함할 수 있다. 온-다이 인터커넥트의 일부 실시예에서, 물리 계층은 존재하지 않을 수 있다.
인터커넥트 패브릭의 물리 계층은 일 실시예에서, 물리적 매체(전기적 또는 광학적 등)를 통한 정보의 고속 전송에 대한 책임을 질 수 있다. 물리적 링크는 두 개의 링크 계층 엔티티들 사이의 포인트-투-포인트이다. 링크 계층은 상위 계층으로부터 물리 계층을 추상화할 수 있고, (요청뿐만 아니라) 데이터를 신뢰가능하게 전송하고 두 개의 직접 접속된 엔티티들 사이에서 플로우 제어를 관리하는 능력을 제공한다. 또한, 물리적 채널을 다수의 가상 채널 및 메시지 클래스로 가상할 책임이 있다. 프로토콜 계층은 물리적 링크를 통해 전송하기 위해 물리적 계층에 전달하기 전에 프로토콜 메시지를 적절한 메시지 클래스 및 가상 채널로 맵핑하는 링크 계층에 의존한다. 링크 계층은 요청, 스누프(snoop), 응답, 라이트백, 논-코히어런트 데이터 등과 같은 복수의 메시지를 지원할 수 있다.
일부 구현예에서, 링크 계층은 플로우 제어를 위한 크레딧 방식을 사용할 수 있다. 넌-크레딧티드 플로우가 또한 지원될 수 있다. 크레딧티드 플로우에 대하여, 초기화 동안, 송신자는 패킷 또는 플릿을 수신기에 송신하기 위해 크레딧의 세트 번호를 부여받는다. 패킷 또는 플릿이 수신기에 전송될 때마다, 송신자는 사용되는 가상 네트워크의 유형에 따라, 패킷 또는 플릿 중 어느 하나를 나타내는 한 개의 크레딧 만큼 그의 크레딧 카운터를 감소시킨다. 수신기에서 버퍼가 수신기에서 비워질 때마다, 크레딧은 그 버퍼 유형에 맞추어 송신자에게 다시 반환된다. 정해진 채널에 대한 송신자의 크레딧이 고갈되었을 때, 일 실시예에서, 송신자는 그 채널에서 임의의 플릿을 전송하는 것을 중단한다. 필수적으로, 크레딧은 수신기가 정보를 소모하고 적절한 버퍼를 비우게 한 후 반환된다.
일 실시예에서, 라우팅 계층은 패킷을 소스로부터 목적지로 라우팅하는 유연하고 분산된 방식을 제공할 수 있다. 몇몇 플랫폼 유형들(예를 들면, 유니프로세서 및 듀얼 프로세서 시스템)에서, 이러한 계층은 명시하지 않을 수 있지만 링크 계층의 부분일 수 있고, 이러한 경우, 이 계층은 옵션이다. 이것은 패킷을 어떻게 라우팅하는가를 결정하는 기능의 일부로서 링크 계층에 의해 제공되는 가상 네트워크 및 메시지 클래스 추상화에 의존한다. 라우팅 기능은 일 구현예에서, 구현예의 특정 라우팅 테이블을 통하여 정의된다. 그러한 정의는 다양한 사용 모델을 가능하게 한다.
일 실시예에서, 프로토콜 계층은 통신 프로토콜, 오더링 규칙, 및 코리어런시 유지, I/O, 인터럽트, 및 다른 상위-레벨 통신을 구현할 수 있다. 프로토콜 계층은 일 구현예에서, 컴포넌트 및 시스템의 파워 상태를 협상하는 메시지를 제공할 수 있다. 잠재적으로, 물리적 계층은 또한 개별 링크의 파워 상태를 독립적으로 또는 연합하여 설정할 수 있다.
복수의 에이전트는 (요청을 메모리에 주문하는) 홈 에이전트, 캐싱 에이전트(요청을 코히어런트 메모리에 발행하고 스누프에 응답하는) 캐싱 에이전트, (구성 트랜잭션을 처리하는) 구성 에이전트, (인터럽트를 처리하는) 인터럽트 에이전트, (레거시 트랜잭션을 처리하는) 레거시 에이전트, (논-코히어런트 트랜잭션을 처리하는) 논-코히어런트 에이전트, 및 기타의 것들과 같은 인터커넥트 아키텍처에 접속될 수 있다. 다양한 에이전트들은 어떤 코히어런트 패브릭 기능도, 포함하지 않을 수 있고 따라서 어느 링크 계층도 포함하지 않을 수 있다는 것을 주목하자. 다시 말하면, 일 실시예에 따른 코히어런트 패브릭 IP 로직을 사용하여, 링크 계층 및/또는 물리 계층의 기능은 기능 컴포넌트로부터 추상화될 수 있다.
이제 도 2를 참조하면, 일 실시예에 따른 코히어런트 IP 로직을 포함하는 시스템의 일부의 블록도가 도시된다. 도 2에 도시된 바와 같이, 시스템(200)의 일부는 이러한 단일의 IP 블록에서 모든 코히어런트 패브릭 기능을 포함할 수 있는 코히어런트 패브릭 IP 로직(210)을 포함한다. 이러한 방식으로, 코히어런트 패브릭에 결합하는 개개의 기능 컴포넌트는 코히어런트 패브릭과 인터페이스하기 위한 로직을 포함할 필요가 없다.
도 2에 예시된 바와 같이, 코히어런트 패브릭 IP 로직(210)은 차례로 하나 이상의 코히어런트 컴포넌트에 결합하는 컴포넌트 인터페이스(220)에 결합된다. 본 발명의 범위가 이러한 관점으로 한정되지는 않을지라도, 그러한 코히어런트 인터페이스를 통해 결합될 수 있는 코히어런트 기능 컴포넌트는 코어, 캐싱 에이전트, 및 다른 코히어런트 에이전트를 포함한다. 또한, 단지 단일의 컴포넌트 인터페이스(220)만이 도 2의 실시예에서 도시되었지만, 코히어런트 패브릭 IP 로직이 별도의 컴포넌트 인터페이스를 통해 복수의 코히어런트 컴포넌트에 결합할 수 있음은 물론이다.
계속 도 2를 참조하면, 코히어런트 패브릭 IP 로직(210)은 코히어런트 인터커넥트(230)에 또한 결합된다. 일 실시예에서, 포인트-투-포인트 인터커넥트, 메시 인터커넥트, 링 인터커넥트, 링 메시 인터커넥트, 또는 버스 인터커넥트 (또는 그 조합)과 같은 임의의 정해진 토폴로지에 의해 구현될 수 있는 이러한 코히어런트 인터커넥트는 코히어런트 패브릭 IP 로직의 다른 인스턴스에 결합할 수 있다. 또한, 코히어런트 패브릭 IP 로직(210)은 테스트 인터페이스(240)를 통해 테스트 회로(동일 IC 상이나 외부 디바이스에 집적됨)에 결합할 수 있다. 또한, 코히어런트 패브릭 IP 로직(210)은 인프라스트럭처 인터페이스(250)를 통해, 클록킹, 리셋, 전력, 레지스터 액세스, 성능 모니터링 등과 같은 SoC의 다른 부분들과 같은 추가 인프라스트럭처에 결합할 수 있다. 도 2의 실시예에서, 이러한 특정 구현예와 함께 도시되었지만, 코히어런트 패브릭 IP 로직 블록은 다른 실시예에서 추가의 또는 상이한 인터페이스에 상호접속할 수 있음은 물론이다.
이제 도 3을 참조하면, 일 실시예에 따른 SoC 내의 다수의 패브릭 IP 로직의 메시 인터커넥트 구현예의 하이 레벨 블록 다이어그램이 도시된다. 도 3에 도시된 바와 같이, 배열(300)은 다수의 패브릭 IP 로직(310)을 포함하는 SoC 또는 다른 IC의 전체 또는 일부일 수 있다. 좀더 구체적으로, 복수의 패브릭 IP 로직(3101, 3106)은 도 3의 실시예에 존재한다. 물론, 예시된 패브릭 IP 로직 블록의 수는 상이한 실시예에 따라 바뀔 수 있음은 물론이다. 다수의 컴포넌트가 단일의 패브릭 IP 로직 블록에 결합하는 구현예를 제공함으로써, 예를 들면 부동산 및/또는 전력 소비를 줄이기 위해 예시된 패브릭 IP 로직 블록의 수를 줄이는 것이 또한 가능하다. 이러한 각각의 인스턴스는 동일한 디자인으로 이루어질 수 있다.
도 3의 실시예에서, 단일의 기능 컴포넌트는 각각의 패브릭 IC 로직(310)에 결합된다. 도 3의 상단 좌측으로부터 시계방향 방식으로 시작해서, 패블릭 IP 로직(3101)은 코히어런트 에이전트(320)에 결합한다. 일 실시예에서, 코히어런트 에이전트(320)는 멀티프로세서 시스템에서 다른 SoC 또는 다른 멀티코어 프로세서와 같은 다른 프로세서와 코히어런트 인터페이스하도록 퀵 패쓰 인터커넥트/카이저 기술 인터페이스 프로토콜(Quick Path Interconnect (QPI)/Keizer Technology Interface (KTI) protocol)에 따른 에이전트일 수 있다. 패브릭 IP 로직(3102)은 통합된 I/O 에이전트(330)에 결합한다. 패브릭 IP 로직(3103)은 동적 랜덤 액세스 메모리(DRAM) 또는 다른 그러한 시스템 메모리와 같은 오프-칩 메모리와 차례로 인터페이스할 수 있는 메모리 제어기(340)에 결합한다.
차례로, 패브릭 IP 로직(3104, 3106)은 각각 대응 코어/캐싱 에이전트(3501, 3502)에 결합한다. 정해진 코히어런트 패브릭 IP 로직 블록 및 대응하는 컴포넌트 사이의 인터커넥트는 컴포넌트 인터페이스를 통해 이루어질 수 있음을 주목하자. 또한, 각각의 코히어런트 패브릭 IP 로직 블록은 코히어런트 인터커넥트를 통해 하나 이상이 다른 패브릭 IP 로직 블록들(여기서 각 2개)에 결합할 수 있다. 코히어런트 패브릭 IP 로직(310)의 다수의 인스턴스화를 통해 컴포넌트를 모듈식으로 확장가능하게 상호접속하려면, 코히어런트 패브릭 IP 로직의 코히어런트 인터커넥트 기능은 기능 컴포넌트에 대해 완전히 투명하게 유지되어서, 인터커넥트 결합 자체가 또한 기능 컴포넌트에 투명하도록 기능 컴포넌트가 인터커넥트의 세부사항을 의식하지 않도록 한다. 그 대신, 기능 컴포넌트와의 통신은 표준화된 컴포넌트 인터페이스를 통할 수 있다. 표준화된 컴포넌트 인터페이스와 코히어런트 인터커넥트의 추상화는 (심지어 제 3 사의 벤더로부터의) 임의적인 IP 블록이 코히어런트 패브릭 IP 로직 블록에 끊김없이 접속되게 할 수 있게 한다. 물론, 일부 실시예에서는 최소 제 3 사의 IP 로직을 임의의 SoC 디자인과 인터페이스 가능하도록 글루 로직(glue logic)이 제공될 수 있다. 제 3 사는 SoC를 디자인 및/또는 제조하는 엔티티 이외의 다른 엔티티일 수 있다.
일반적으로, 표준화된 인터페이스는 패킷을 코히어런트 인터페이스로/로부터 추가 또는 삭제하는 추가 및 삭제 로직을 포함할 수 있는, 기능 컴포넌트의 패킷화 로직으로 및 패킷화 로직으로부터 기본 패킷을 전달할 수 있다. 도 3에 이러한 특정 구현예가 도시되었지만, 많은 변형 및 대안이 가능하다는 것은 물론이다. 예를 들면, 도 3에서와 같은 메시-기반 인터커넥트 대신, 링, 원환 또는 다른 인터커넥트 토폴로지가 사용될 수 있다.
이제 도 4를 참조하면, 일 실시예에 따른 코히어런트 패브릭 IP 로직 블록의 추가의 세부사항에 대한 블록도가 도시된다. 도 4에 도시된 바와 같이, 코히어런트 패브릭 IP 로직(410) 자체는 다양한 제어 로직뿐만 아니라, 다양한 큐, 버퍼 및 다른 구조체를 포함하는 컴포넌트로 형성된다. 다양한 실시예에서, 코히어런트 패브릭 IP 로직(410)은 정해진 일련의 코히어런트 프로토콜 규칙에 기초하여 코히어런시 및 오더링을 패브릭에 대해 시행하도록 구성될 수 있다. 더욱이, 코히어런트 패브릭 IP 로직(410)은 패킷의 엔드-투-엔드 라우팅을 수행하며 그리고 또한 다른 인터커넥트 기능들 가운데, 네트워크 공정성, 교착상태 회피, 트래픽 변조와 같은 모든 관련된 기능을 처리할 수 있다.
이러한 방식으로, 실시예는 실리콘 미개발 국면에서 이미 존재하는 기능 컴포넌트 또는 하이 레벨 모델에 "플러그-앤드-플레이(plug-and-play)" 능력을 제공한다. 그 결과, 여전히 완전히 기능적 인터커넥트를 유지하면서, 기능 컴포넌트 중 하나 이상의 컴포넌트가 이미 완전히 디자인되는 검증을 위한 동적 진화 모델이 실현될 수 있다.
알 수 있는 바와 같이, 복수의 진입 및 진출 큐 및 버퍼(4100-4101)가 존재할 수 있다. 그러한 큐 및 버퍼의 수 및 크기는 예를 들면 시스템 조건에 동적으로 기초로 하여 관리될 수 있다는 것을 이해한다. 또한, 일부 실시예에서, 그러한 큐 및 버퍼의 가능한 크기는 특정 시스템 구현예에서 소망하는 크기를 제공하기 위해 구성 제어에 따라 고정될 수 있다. 일 실시예에서, 이러한 큐 및 버퍼(4121-4122)는 진출 및 진입 제어 로직(4120)의 제어하에 있다. 일 실시예에서, (옵션일 수 있는) 진입 큐 및 버퍼(4122)는 패킷을 네트워크로부터 컴포넌트로 (그리고 컴포넌트로부터 진출 큐 및 버퍼(4121)를 통하여 네트워크로) 큐 업 하도록 구성될 수 있다.
도 4를 계속 참조하면, 코히어런트 패브릭 IP 로직(410)은 라우팅 및 버퍼링의 제어를 수행하도록 구성될 수 있는 라우터 버퍼 및 제어 로직(414)을 더 포함한다. 라우터 및 버퍼 제어 로직(414)은 최종 목적지로 흐르는 패킷을 통과시키도록 구성될 수 있다. 코히어런트 패브릭 IP 로직(410)은 반-고갈(anti-starvation) 및 반-교착상태(anti-deadlock) 기능을 각각 수행하도록 구성되는 반-고갈 엔진(416) 및 반-교착상태 엔진(418)을 포함한다. 반-고갈 로직(416)은 패킷을 인터커넥트에 주입할뿐만 아니라 패킷을 컴포넌트에 싱킹(sinking)하기 위한 공정성을 처리하도록 구성될 수 있다. 반-교착상태 로직(418)은 반-교착상태 기능을 제공함으로써 교착상태 제거 라우팅을 보장하도록 구성될 수 있다.
도 4에 더 도시된 바와 같이, 코히어런트 패브릭 IP 로직(410)은 예를 들면, 시스템의 각종 모니터링된 파라미터에 기초하여 트래픽을 조절하도록 구성될 수 있는 트래픽 쓰로틀 제어 로직(420)을 더 포함한다. 트래픽 쓰로틀 로직(420)은 핫 스팟을 방지하기 위하여 컴포넌트로부터 트래픽 주입 속도를 조절하도록 구성될 수 있다. 코히어런트 패브릭 IP 로직(410)은 다양한 테스트 및 다른 기능을 수행하도록 구성될 수 있는 테스트용 디자인/디버그용 디자인 로직(design for test/design for debug (DFT/DFD) logic)(422)를 더 포함한다. DFT/DFD 로직(422)은 테스트 및 디버그 인프라스트럭처에 용이한 테스팅 및 디버그를 위한 표준화된 인터페이스를 제공하도록 구성될 수 있다. 또한, 코히어런트 패브릭 IP 로직(410)은 코히어런트 패브릭 IP 로직 블록 및 코히어런트 인터커넥트에 대해 좀더 일반적으로 성능 모니터링 행위를 수행하도록 구성될 수 있는 성능 모니터 및 부가 로직(424)을 포함한다.
일 실시예에서, 로직(424) 내의 부가적인 로직은 구성 제어 로직 및 비-휘발성 구성 저장소를 포함하는, 구성 로직을 포함할 수 있다. 특정한 실시예에서, 구성 정보는 구성 메시지의 전달을 위한 비-코히어런트 인터페이스(470)를 통하여 수신될 수 있다. 일 실시예에서, 이러한 메시지는 비-휘발성 저장소에 저장될 구성 정보를 포함할 수 있다. 구성 정보의 예는 그러한 다른 구성 정보들 중에서, 라우터 버퍼 크기, 지연 구성 값, 반-고갈 문턱치, 특정 큐, 버퍼 등에 대한 다양한 디스에이블 및 인에이블 제어, 복수의 링 스톱과 같은 인터커넥트 구성 제어, 라우팅 구성 정보, (트래픽 문턱치와 같은) 트래픽 쓰로팅 제어 정보를 포함한다.
이러한 구성 정보는 정해진 코히어런트 패브릭 IP 로직의 비-휘발성 저장소 내에 저장될 수 있고, 대응하는 구성 제어 로직에 의해 동작에 필요한 패브릭을 구성하는데 사용될 수 있다. 예를 들면, 트래픽 쓰로틀 로직(420)은 하나 이상의 트래픽 문턱치에 기초하여 트래픽을 조절할 수 있다. 일 실시예에서, 그러한 문턱치는 구성 메시지에서 취득될 수 있고 코히어런트 패브릭 IP 로직(410)의 구성 저장소에 저장될 수 있다. 코히어런트 패브릭 IP 로직 블록 내의 전술한 제어 로직은 하드웨어, 소프트웨어, 펌웨어, 그들의 임의의 조합으로 구현될 수 있다.
도 4에 더 도시된 바와 같이, 코히어런트 패브릭 IP 로직(410)은 도시된 바와 같이, 아웃바운드 인터페이스 및 인바운드 인터페이스를 통하여 형성되는 컴포넌트 인터페이스(430)를 통하여 정해진 코히어런트 컴포넌트에 결합할 수 있다. 인터페이스 이외에도, 코히어런트 패브릭 IP 로직(410)은 (임의의 적절한 유형의 인터커넥트 토폴로지일 수 있는) 온-다이 인터커넥트(440), 테스트 인터페이스(450), 전력 관리 인터페이스(460), 논-코히어런트 인터페이스(470), 클록 인터페이스(480) 및 성능 모니터링 인터페이스(490)와도 인터페이스한다. 물론, 많은 상이한 유형의 인터페이스가 상이한 구현예에서 존재할 수 있음은 물론이다.
다양한 실시예에서, 코히어런트 패브릭 IP 로직(410)은 제품 특정 요구조건을 만족시키기 위해, 큐 크기, 바이패스 등과 같은 디자인 파라미터에 맞도록 많은 구성가능한 노브(knob)를 제공할 수 있다. 이러한 방식으로, 단일 디자인 로직 블록은 특정한 프로세서 패밀리에 필요한 높은 대역폭 및/또는 낮은 지연시간과 같은 다양한 제품 요구조건에 서비스를 제공할 수 있다.
도 5를 참조하면, 다른 실시예에 따른 코히어런트 패브릭 IP 로직의 블록도가 도시된다. 도 5에 도시된 바와 같이, 코히어런트 패브릭 IP 로직(510)은 다수의 코히어런트 컴포넌트 즉, 컴포넌트(5201, 5202)에 직접 인터페이스할 수 있는 듀얼-헤드형 로직(dual-headed logic)이다. 일 실시예에서, 각각의 컴포넌트(520)는 정해진 코어/캐싱 에이전트일 수 있다. 물론, 다른 실시예에서, 코히어런트 컴포넌트는 상이할 수 있다는 것은 물론이다. 도시된 바와 같이, 코히어런트 패브릭 IP 로직(510)은 대응하는 컴포넌트 인터페이스(5151, 5152)를 통해 컴포넌트(520)에 결합한다. 또한, 온-다이 인터커넥트(540), 테스트 인터페이스(550), 전력 관리 인터페이스(560), 논-코히어런트 인터페이스(570), 클록 인터페이스(580), 및 성능 모니터 인터페이스(580)를 통하여 SoC 또는 다른 IC의 다른 컴포넌트와 인터페이스가 수행될 수 있다. 듀얼-헤드형 구현예가 도 5에 도시되지만, 다른 구현예에서 코히어런트 패브릭 IP 인터페이스 로직 블록은 각각 전용 컴포넌트 인터페이스를 통하여, 둘 이상의 코히어런트 컴포넌트와 통신할 수 있음은 물론이다.
도 6을 참조하면, 일 실시예에 따른 방법의 흐름도가 도시된다. 더 구체적으로, 도 6의 방법(600)은 본 개시에서 기술되는 코히어런트 패브릭 IP 로직 내에서 구현될 수 있다. 일반적으로, 방법(600)은 시스템에서 각종 코히어런트 에이전트로부터 아웃바운드 패킷을 수신하고, 처리하고, 전송하도록 사용될 수 있다. 이러한 각종 코히어런트 에이전트는 대응하는 코히어런트 패브릭 IP 로직 블록에 전달하기 위한 정보를 패킷화하는 최소한의 패킷화 로직 외에, (링크 및 물리 계층 기능을 포함하지 않는) 임의의 인터커넥트-기반 로직을 포함하지 않는다는 것을 주목하자. 패킷 포맷은 포괄적일 수 있으며 그리고 소스 및 목적지 (및 중간 라우터 ID, 고갈 처리 힌트, 및 어드레스 정보와 같은 선택사양으로 다른 라우팅 정보)를 식별하는 기본 헤더와, 목적지에 전달되는 페이로드 정보를 간략히 포함할 수 있음은 물론이다. 본 발명의 범위가 이러한 관점으로 제한되지 않을지라도, 일 실시예에서, 패킷은 10 바이트로 형성될 수 있고, 이 패킷은 비교적 최소한의 3 바이트 헤더와 나머지는 페이로드로 형성된다.
도 6을 참조하면, 방법(600)은 코히어런트 인터페이스를 통하여 코히어런트 에이전트로부터 패킷을 수신함으로써 시작한다(블록 610). 이 코히어런트 에이전트는 코어, 특수 기능 유닛, KTI 에이전트, 캐싱 에이전트 등의 임의 유형의 에이전트가 될 수 있음에 주목하자. 이 경우, 에이전트는 그러한 에이전트가 전술한 최소한의 패킷화 로직 이외에, 임의의 인터커넥트-기반 로직을 포함하지 않는다는 점에서 인터커넥트-관용적(interconnect-agnostic)일 수 있다. 수신된 패킷은 진출 큐/버퍼에서 버퍼링을 위해 제공될 수 있다. 버퍼는 전체 페이로드를 저장할 수 있는 반면, 큐는 스케줄링 및 라우팅을 가능하게 하는 최소 정보를 저장한다 것을 주목하자. 그 다음, 코히어런트 패브릭 IP 로직 내의 각종 로직은 패킷 목적지 및 라우팅을 결정할 수 있다(블록 630). 앞에서 논의된 바와 같이, 수신된 패킷은 목적지가 결정될 수 있는 목적지 식별자를 포함할 수 있다. 또한, 코히어런트 패브릭 IP 로직 블록 내에서의 라우팅 로직에 기초하여, 목적지로의 최선의 라우팅이 결정될 수 있다.
다음으로, 패킷은 연령 순, 크레딧 가용성, 및 다른 블록킹 조건 중 하나 이상을 포함하는 다양한 요인을 기초로 하여 전송하기 위해 스케줄링 될 수 있다(블록 640). 다음으로, 다른 코히어런트 에이전트 및 (만일 있다면) 디스패치 슬롯용 관통 패킷에 대해 접속되는 피어(peer) 코히어런트 에이전트 인터페이스(들)과의 중재가 수행될 수 있다(블록 650). 최종적으로, 블록(660)에서, 패킷은 선택된 인터페이스를 통해 목적지에 전송될 수 있다. 이러한 목적지는 목적지와 직접 통신이 존재하도록 동일한 코히어런트 패브릭 IP 로직에 직접 결합되는 다른 코히어런트 에이전트일 수 있다. 다른 사례에서, 목적지는 통신 신호가 그의 목적지에 도달하기 위해 다수의 코히어런트 패브릭 IP 로직 블록 및/또는 다른 에이전트를 비롯한, 복수의 홉을 통과할 수 있도록, 더 원거리로 배치될 수 있다. 더욱이, 패킷은 로컬 코히어런트 패브릭 IP 로직 블록뿐만 아니라 시스템 내의 그러한 다른 블록 내에 존재할 수 있는 반-고갈, 반-교착상태, 및 쓰로틀링 조건 중 하나 이상에 따라 전송될 수 있다는 것을 주목하자. 비록 도 6의 실시예에서 이렇게 하이 레벨로 도시되지만, 많은 변형 및 대안이 가능하다는 것은 물론이다.
이제 도 7을 참조하면, 다른 실시예에 따른 방법의 흐름도가 도시된다. 더 구체적으로, 도 7의 방법(670)은 코히어런트 패브릭 IP 로직 내에서 구현될 수 있다. 일반적으로, 방법(670)은 코히어런트 패브릭 IP 로직에 직접 결합되는 에이전트를 향하는 인바운드 패킷의 수신 및 처리를 이행하는데 사용될 수 있다. 알 수 있는 바와 같이, 방법(670)은 코히어런트 인터커넥트로부터 패킷을 수신함으로써 시작한다(블록 675). 다음으로, 패킷은 코히어런트 패브릭 IP 로직의 라우터에 버퍼링될 수 있다(블록 680). 그 후 패킷 목적지 및 라우팅이 결정될 수 있다(블록 690). 그 후, 블록(695)에서, 패킷은 코히어런트 인터페이스를 통해 결합된 코히어런트 에이전트에 전송될 수 있다(블록 695). 앞에서 논의된 바와 같이, 이러한 통신은 로컬 코히어런트 패브릭 IP 로직 블록에 존재하는 반-고갈, 반-교착상태, 및 쓰로틀링 조건에 따를 수 있다. 도 7에서 이렇게 하이 레벨로 도시되지만, 본 발명의 범위는 이러한 관점으로 제한되지 않는다는 것을 이해한다.
이제 도 8을 참조하면, 본 발명의 일 실시예에 따른 SoC의 블록도가 도시된다. 도 8에서 알 수 있는 바와 같이, SoC(700)는 통합된 메모리 제어기뿐만 아니라 다른 컴포넌트도 더 포함하는 멀티-코어 SoC이다. 더 구체적으로, SoC(700)는 수평 인터커넥트 패브릭(7020-702n) 및 수직 인터커넥트 패브릭(7040-704n), 예를 들면 수평 및 수직 링을 포함하는 메시-기반 인터커넥트 토폴로지로 구성된다.
KTI 에이전트(720), PCIe 에이전트(730), PCIe/직접 미디어 인터페이스(direct media interface, DMI)/직접 메모리 액세스 에이전트(740), 및 다른 PCIe 에이전트(750)를 포함하는 다양한 코히어런트 에이전트가 존재한다. 이러한 에이전트 각각은 적절한 프로토콜에 따라 하나 이상의 오프-칩 디바이스와 통신할 수 있다. 에이전트 각각은 또한 코히어런트 패브릭 IP 로직(7100-710n)의 에이전트 자신의 대응하는 인스턴스에 결합되는 것을 주목하자(도 8에는 단지 하나의 대표적 로직만 도시된다). 이러한 패브릭 IP 로직 블록은 각기 동일하게 구성될 수 있음은 물론이다.
계속 도 8을 참조하면, SoC(700)는 복수의 코어(7600-760n)를 포함한다. 알 수 있는 바와 같이, 각각의 코어는 대응하는 공유 캐시, 예를 들면 최종 레벨 캐시(last level cache, LLC)(7650-765n)와 관련된다. 일 실시예에서, 이러한 LLC는 집중 배치되지만, 각각의 코어가 전용 슬라이스를 갖도록 슬라이스-기반 방식으로 구현될 수 있다. 또한, 코히어런트 패브릭 IP 로직(7700-770n)(도 8에는 하나의 대표적 로직만 도시된다)은 각각의 코어와 관련된다.
또한 도 8에는 통합된 메모리 제어기(7800-7801)가 도시되며, 각각의 메모리 제어기는 자신의 대응하는 코히어런트 패브릭 IP 로직(7900-7901)을 구비한다. 도 8의 실시예에서 14 개의 코어 다이로 도시되어 있지만, 더 많거나 적은 코어 및 다른 코히어런트 에이전트가 특정 실시예에서 존재할 수 있다는 것은 물론이다.
일 실시예에 따른 온-다이 코히어런트 인터커넥트를 사용하면 축소된 디자인 사이클로 프로세서 또는 다른 SoC에 최상위 레벨의 IP 통합을 가능하게 할 수 있다. 그러한 더 짧은 디자인 사이클은 통합 시 줄어든 노력 및 복잡성으로, 본 출원에서 기술되는 모듈러, 스케일러블 및 재사용가능 코히어런트 패브릭 IP 로직 블록을 통하여 부분적으로 실현될 수 있다.
다음 예들은 다른 실시예들에 관한 것이다.
일 예에서, 장치는 코히어런트 동작을 수행하는 제 1 컴포넌트와, 제 1 컴포넌트 인터페이스를 통하여 제 1 컴포넌트에 결합되는 코히어런트 패브릭 로직 - 코히어런트 패브릭 로직은 제 1 컴포넌트와 코히어런트 패브릭 로직에 결합되는 제 2 컴포넌트 사이에서 코히어런트 통신을 위한 풀 코히어런트 패브릭 기능(full coherent fabric functionality)을 수행하고, 제 1 컴포넌트는 코히어런트 패브릭 기능을 수행하는 코히어런트 인터커넥트 인터페이스 로직 없이 패킷을 코히어런트 패브릭 로직과 통신하는 패킷화 로직을 포함함 - 을 포함한다.
일 예에서, 코히어런트 패브릭 로직은 복수의 큐와, 복수의 버퍼와, 구성 정보에 기초하여, 복수의 모든 큐보다 적게 동작하게 해주고 복수의 모든 버퍼보다 다 적게 동작하게 해주는 로직을 포함한다. 코히어런트 패브릭 로직은 자원의 고갈을 방지하는 반-고갈 로직과, 교착상태를 방지하는 반-교착상태 로직과, 라우터 버퍼 및 라우터 버퍼를 제어하는 제어 로직을 더 포함할 수 있다.
일 예에서, 패킷화 로직은 제 1 패킷을 제 1 컴포넌트 인터페이스에 제공하고 제 1 컴포넌트 인터페이스로부터 제 2 패킷을 수신하며, 제 1 컴포넌트 인터페이스는 아웃바운드 인터페이스 및 인바운드 인터페이스를 포함한다.
일 예에서, 코히어런트 패브릭 로직은 온-다이 인터커넥트, 테스트 인터페이스, 전력 관리 인터페이스, 논-코히어런트 인터페이스, 클록 인터페이스, 및 성능 모니터 인터페이스에 결합한다. 제 1 코히어런트 패브릭 로직 및 제 2 코히어런트 패브릭 로직은 온-다이 인터커넥트를 통하여 결합될 수 있고, 온-다이 인터커넥트는 제 1 방향으로 통신하는 제 1 링 및 제 2 방향으로 통신하는 제 2 링을 포함한다. 코히어런트 패브릭 로직은 장치의 구성 저장소에 저장되는 구성 설정치에 기초하여 코히어런트 패브릭 로직의 하나 이상의 파라미터를 구성하는 구성 로직을 더 포함하고, 구성 설정치는 논-코히어런트 인터페이스를 통해 수신된다.
일 예에서, 장치는 풀 코히어런트 패브릭 기능을 각기 수행하는 복수의 코히어런트 패브릭 로직을 포함하고, 복수의 코히어런트 패브릭 로직은 각기 적어도 하나의 코히어런트 컴포넌트에 결합한다.
일 예에서, 제 2 컴포넌트는 코히어런트 동작을 수행하도록 구성될 수 있고, 코히어런트 패브릭 로직은 제 2 컴포넌트 인터페이스를 통해 제 2 컴포넌트에 결합된다.
일 예에서, 장치는 SoC를 포함하고, 제 1 컴포넌트는 SoC의 제조사가 아닌 제 3 사를 포함한다.
일 예에서, 장치는 각종 수단을 사용하여 구현되는 프로세서일 수 있다. 일 예에서, 프로세서는 사용자 장비 터치-가능 디바이스에 통합될 수 있다.
다른 예에서, 시스템은 디스플레이 및 메모리를 포함하고, 상기 예들 중 하나 이상의 예의 프로세서를 포함한다.
다른 예에서, 방법은 시스템의 코히어런트 패브릭 로직에서 제 1 코히어런트 에이전트와 코히어런트 패브릭 로직 사이에 결합되는 코히어런트 패브릭을 통하여 제 1 코히어런트 에이전트로부터 시스템의 제 2 코히어런트 에이전트로 향하는 패킷을 수신하는 단계 - 제 2 코히어런트 에이전트 및 코히어런트 패브릭 로직은 단일 다이 상에 구성됨 - 와, 코히어런트 패브릭 로직에서 모든 코히어런트 패브릭 기능을 수행하는 단계 - 코히어런트 패브릭 기능은 제 1 및 제 2 코히어런트 에이전트에 대해 투명함 - 를 포함한다.
일 예에서, 방법은 코히어런트 패브릭 로직에서 패킷의 목적지 및 라우팅을 결정하는 단계를 더 포함한다.
일 예에서, 방법은 패킷을 제 2 코히어런트 에이전트에 전송하도록, 피어 코히어런트 에이전트 인터페이스 및 디스패치 슬롯용 하나 이상의 관통 패킷에 대해 중재하는 단계를 더 포함한다.
일 예에서, 방법은 연령 순 및 크레딧 이용 가능성 중 적어도 하나에 기초하여 디스패치 하기 위해 패킷을 스케줄링하는 단계를 더 포함한다.
일 예에서, 방법은 코히어런트 패브릭의 반-고갈, 교착상태 및 쓰로틀링 조건 중 하나 이상에 따라 선택된 인터페이스를 통해 제 2 코히어런트 에이전트를 향해 패킷을 전송하는 단계를 더 포함한다.
다른 예에서, 명령어를 포함하는 컴퓨터 판독가능 매체는 상기 예들 중 임의의 예의 방법을 수행한다.
다른 예에서, 장치는 상기 예들 중 임의의 예의 방법을 수행하기 위한 수단을 포함한다.
다른 예에서, SoC는 코히어런트 동작을 수행하는 제 1 코히어런트 에이전트와, 코히어런트 동작을 수행하는 제 2 코히어런트 에이전트와, 제 1 코히어런트 인터페이스를 통해 제 1 코히어런트 에이전트에 결합되는 제 1 코히어런트 패브릭 로직과, 제 2 코히어런트 인터페이스를 통해 제 2 코히어런트 에이전트에 결합되는 제 2 코히어런트 패브릭 로직을 포함하고, 제 1 및 제 2 코히어런트 패브릭 로직은 코히어런트 패브릭을 통해 결합되고 풀 코히어런트 패브릭 기능을 수행하도록 단일 로직의 다수의 인스턴스화를 포함하고, 제 1 및 제 2 코히어런트 에이전트는 코히어런트 패브릭 로직 없이 코히어런트 패브릭 기능을 수행한다.
일 예에서, 제 1 코히어런트 에이전트는 SoC의 제조사가 아닌 제 3 사의 IP 로직이다.
일 예에서, SoC는 코히어런트 동작을 수행하는 제 3 코히어런트 에이전트를 더 포함하고, 제 3 코히어런트 에이전트는 제 3 코히어런트 인터페이스를 통해 제 1 코히어런트 패브릭 로직에 결합된다.
일 예에서, 제 1 및 제 2 코히어런트 패브릭 로직은 각각 링크 계층 로직을 포함하고, 제 1 및 제 2 코히어런트 에이전트는 링크 계층 로직이 없다.
일 예에서, 제 1 코히어런트 에이전트는 제 1 패킷을 제 1 컴포넌트 인터페이스에 추가하고 제 1 컴포넌트 인터페이스로부터 제 2 패킷을 삭제하는 패킷화 로직을 포함한다.
일 예에서, SoC는 제 1 코히어런트 패브릭 로직에 결합되는 논-코히어런트 인터페이스를 더 포함하고, 제 1 코히어런트 패브릭 로직은 논-코히어런트 인터페이스를 통해 구성 메시지를 수신하고 복수의 구성 값을 제 1 코히어런트 패브릭 로직의 구성 저장소에 저장하는 구성 제어 로직을 포함한다.
일 예에서, 제 1 코히어런트 패브릭 로직은 하나 이상의 쓰로틀 문턱치에 따라 트래픽을 쓰로틀하는 트래픽 쓰로틀 로직을 포함하고, 적어도 하나의 쓰로틀 문턱치는 복수의 구성 값으로부터 취득된다.
일 예에서, SoC는 휴대용 컴퓨팅 시스템에 포함될 수 있다.
상기 예들의 다양한 조합이 가능하다는 것은 물론이다.
실시예는 많은 상이한 유형의 시스템에서 사용될 수 있다. 예를 들면, 일 실시예에서, 통신 디바이스는 본 개시에서 기술되는 다양한 방법 및 기술을 수행하도록 구성될 수 있다. 물론, 본 발명의 범위는 통신 디바이스에 한정되지 않으며, 그 대신 다른 실시예는 명령어를 처리하는 다른 유형의 장치나, 컴퓨팅 디바이스에서 실행되는 것에 응답하여, 디바이스로 하여금 본 개시에서 기술되는 하나 이상의 방법 및 기술을 실행하게 하는 명령어를 포함하는 하나 이상의 머신 판독가능한 매체에 관한 것일 수 있다.
실시예는 코드로 구현될 수 있으며 명령어를 수행하기 위해 시스템을 프로그램하는데 사용될 수 있는 명령어를 저장한 비-일시적 저장 매체에 저장될 수 있다. 저장 매체는 이것으로 한정되는 것은 아니지만, 플로피 디스크를 포함하는 임의의 유형의 디스크, 광 디스크, 고체 상태 드라이브(solid state drives, SSDs), 콤팩트 디스크 판독-전용-메모리(compact disk read-only memories, CD-ROMs), 콤팩트 디스크 리라이터블(compact disk rewritables, CD-RWs), 광자기 디스크, 판독-전용 메모리(read-only memories, ROM)와 같은 반도체 디바이스, 다이나믹 랜덤 액세스 메모리(dynamic random access memories, DRAM)와 같은 랜덤 액세스 메모리(RAM), 스태틱 랜덤 액세스 메모리(static random access memories, SRAM), 소거가능 프로그래머블 판독 전용 메모리(erasable programmable read-only memories, EPROM), 플래시 메모리, 전기적으로 소거가능한 프로그래머블 판독-전용 메모리(electrically erasable programmable read-only memories, EEPROM), 마그네틱 또는 광 카드, 또는 전기 명령을 저장하기에 적합한 임의의 유형의 다른 매체를 포함할 수 있다.
본 발명이 제한된 수의 실시예에 대해 기술되었지만, 본 기술분야에서 통상의 지식을 가진자라면 그로부터의 수많은 수정 및 변형을 인식할 것이다. 첨부된 특허청구범위는 본 발명의 진정한 사상 및 범위 내에 속하는 그러한 모든 수정 및 변형을 망라하는 것으로 의도된다.

Claims (22)

  1. 코히어런트 동작을 수행하는 제 1 컴포넌트와,
    제 1 컴포넌트 인터페이스를 통해 상기 제 1 컴포넌트에 결합되는 코히어런트 패브릭 로직을 포함하되,
    상기 코히어런트 패브릭 로직은 상기 코히어런트 패브릭 로직에 결합되는 제 2 컴포넌트와 상기 제 1 컴포넌트 사이에서의 코히어런트 통신을 위한 풀 코히어런트 패브릭 기능(full coherent fabric functionality)을 수행하고, 상기 제 1 컴포넌트는 코히어런트 패브릭 기능을 수행하는 코히어런트 인터커넥트 인터페이스 로직 없이 상기 코히어런트 패브릭 로직과 패킷을 통신하는 패킷화 로직을 포함하는
    장치.
  2. 제 1 항에 있어서,
    상기 코히어런트 패브릭 로직은,
    복수의 큐와,
    복수의 버퍼와,
    구성 정보(configuration information)에 기초하여, 상기 복수의 큐의 전부보다 적은 큐 및 상기 복수의 버퍼의 전부보다 적은 버퍼를 작동시키는 제어 로직을 포함하는
    장치.
  3. 제 2 항에 있어서,
    상기 코히어런트 패브릭 로직은,
    자원의 고갈을 방지하는 반-고갈 로직과,
    교착상태를 방지하는 반-교착상태 로직과,
    라우터 버퍼 및 상기 라우터 버퍼를 제어하는 제어 로직을 포함하는
    장치.
  4. 제 1 항에 있어서,
    상기 패킷화 로직은 제 1 패킷을 상기 제 1 컴포넌트 인터페이스에 제공하고 상기 제 1 컴포넌트 인터페이스로부터 제 2 패킷을 수신하며, 상기 제 1 컴포넌트 인터페이스는 아웃바운드 인터페이스 및 인바운드 인터페이스를 포함하는
    장치.
  5. 제 1 항에 있어서,
    상기 코히어런트 패브릭 로직은 온-다이 인터커넥트, 테스트 인터페이스, 전력 관리 인터페이스, 논-코히어런트 인터페이스, 클록 인터페이스, 및 성능 모니터 인터페이스에 결합되는
    장치.
  6. 제 5 항에 있어서,
    제 1 코히어런트 패브릭 로직 및 제 2 코히어런트 패브릭 로직은 상기 온-다이 인터커넥트를 통해 결합되고, 상기 온-다이 인터커넥트는 제 1 방향으로 통신하는 제 1 링 및 제 2 방향으로 통신하는 제 2 링을 포함하는
    장치.
  7. 제 5 항에 있어서,
    상기 코히어런트 패브릭 로직은 상기 장치의 구성 저장소에 저장되는 구성 설정치에 기초하여 상기 코히어런트 패브릭 로직의 하나 이상의 파라미터를 구성하는 구성 로직을 더 포함하고, 상기 구성 설정치는 상기 논-코히어런트 인터페이스를 통해 수신되는
    장치.

  8. 제 1 항에 있어서,
    상기 장치는 상기 풀 코히어런트 패브릭 기능을 각기 수행하는 복수의 코히어런트 패브릭 로직을 포함하고, 상기 복수의 코히어런트 패브릭 로직은 각기 적어도 하나의 코히어런트 컴포넌트에 결합되는
    장치.
  9. 제 1 항에 있어서,
    코히어런트 동작을 수행하는 상기 제 2 컴포넌트를 더 포함하며, 상기 코히어런트 패브릭 로직은 제 2 컴포넌트 인터페이스를 통해 상기 제 2 컴포넌트에 결합되는
    장치.
  10. 제 1 항에 있어서,
    상기 장치는 시스템 온 칩(system on chip, SoC)을 포함하고, 상기 제 1 컴포넌트는 상기 SoC의 제조사가 아닌 제 3 사(a third party)의 IP 로직(intellectual property logic)을 포함하는
    장치.
  11. 명령어를 저장한 머신-판독가능한 매체로서,
    상기 명령어는 머신에 의해 수행되는 경우 상기 머신으로 하여금,
    시스템의 코히어런트 패브릭 로직에서, 제 1 코히어런트 에이전트와 코히어런트 패브릭 로직 사이에 결합되는 코히어런트 패브릭을 통해 제 1 코히어런트 에이전트로부터 상기 시스템의 제 2 코히어런트 에이전트로 향하는 패킷을 수신하는 단계 - 상기 제 1 코히어런트 에이전트, 상기 제 2 코히어런트 에이전트 및 상기 코히어런트 패브릭 로직은 단일 다이 상에 구성됨 - 와,
    상기 코히어런트 패브릭 로직에서 모든 코히어런트 패브릭 기능 - 상기 코히어런트 패브릭 기능은 상기 제 1 코히어런트 에이전트 및 상기 제 2 코히어런트 에이전트에 투명함 - 을 수행하는 단계를 포함하는 방법을 수행하게 하는
    머신-판독가능한 매체.
  12. 제 11 항에 있어서,
    상기 방법은 상기 코히어런트 패브릭 로직에서, 상기 패킷에 대한 목적지 및 라우팅을 결정하는 단계를 더 포함하는
    머신-판독가능 매체.

  13. 제 12 항에 있어서,
    상기 방법은 상기 패킷을 상기 제 2 코히어런트 에이전트에 전송하도록 피어 코히어런트 에이전트 인터페이스 및 디스패치 슬롯용 하나 이상의 관통 패킷에 대해 중재하는(arbitrating) 단계를 더 포함하는
    머신-판독가능 매체.
  14. 제 11 항에 있어서,
    상기 방법은 상기 패킷을 연령 순서 및 크레딧 이용 가능성 중 적어도 하나에 기초하여 디스패치하기 위해 스케줄링하는 단계를 더 포함하는
    머신-판독가능 매체.
  15. 제 11 항에 있어서,
    상기 방법은 상기 코히어런트 패브릭의 반-고갈 상태, 교착상태 및 쓰로틀링(throttling) 상태 중 하나 이상에 따라 선택된 인터페이스를 통해 상기 제 2 코히어런트 에이전트에 상기 패킷을 전송하는 단계를 더 포함하는
    머신-판독가능 매체.
  16. 시스템 온 칩(system on chip, SoC)으로서,
    코히어런트 동작을 수행하는 제 1 코히어런트 에이전트와,
    코히어런트 동작을 수행하는 제 2 코히어런트 에이전트와,
    제 1 코히어런트 인터페이스를 통해 상기 제 1 코히어런트 에이전트에 결합되는 제 1 코히어런트 패브릭 로직과,
    제 2 코히어런트 인터페이스를 통해 상기 제 2 코히어런트 에이전트에 결합되는 제 2 코히어런트 패브릭 로직을 포함하되,
    상기 제 1 코히어런트 패브릭 로직 및 상기 제 2 코히어런트 패브릭 로직은 코히어런트 패브릭을 통해 결합되며 풀 코히어런트 패브릭 기능을 수행하는 단일 로직의 복수의 인스턴스화(instantiations)를 포함하며, 상기 제 1 코히어런트 에이전트 및 상기 제 2 코히어런트 에이전트는 코히어런트 패브릭 기능을 수행하는 코히어런트 패브릭 로직을 갖지 않는
    시스템 온 칩.
  17. 제 16 항에 있어서,
    상기 제 1 코히어런트 에이전트는 상기 SoC의 디자이너가 아닌 제 3 사(a third party)의 IP 로직(intellectual property logic)인
    시스템 온 칩.
  18. 제 16 항에 있어서,
    코히어런트 동작을 수행하는 제 3 코히어런트 에이전트를 더 포함하되, 상기 제 3 코히어런트 에이전트는 제 3 코히어런트 인터페이스를 통해 상기 제 1 코히어런트 패브릭 로직에 결합되는
    시스템 온 칩.
  19. 제 16 항에 있어서,
    상기 제 1 코히어런트 패브릭 로직 및 상기 제 2 코히어런트 패브릭 로직은 각기 링크 계층 로직을 포함하고, 상기 제 1 코히어런트 에이전트 및 상기 제 2 코히어런트 에이전트는 링크 계층 로직을 포함하지 않는
    시스템 온 칩.
  20. 제 19 항에 있어서,
    상기 제 1 코히어런트 에이전트는, 제 1 패킷을 상기 제 1 컴포넌트 인터페이스에 추가하고 상기 제 1 컴포넌트 인터페이스로부터 제 2 패킷을 삭제(drop)하는 패킷화 로직을 포함하는
    시스템 온 칩.
  21. 제 16 항에 있어서,
    상기 제 1 코히어런트 패브릭 로직에 결합된 논-코히어런트 인터페이스를 더 포함하되, 상기 제 1 코히어런트 패브릭 로직은, 상기 논-코히어런트 인터페이스를 통해 구성 메시지를 수신하고 상기 제 1 코히어런트 패브릭 로직의 구성 저장소에 복수의 구성 값을 저장하는 구성 제어 로직을 포함하는
    시스템 온 칩.
  22. 제 21 항에 있어서,
    상기 제 1 코히어런트 패브릭 로직은 적어도 하나의 쓰로틀 문턱치에 따라 트랙픽을 쓰로틀하는 트래픽 쓰로틀 로직을 포함하고, 상기 적어도 하나의 쓰로틀 문턱치는 상기 복수의 구성 값으로부터 취득되는
    시스템 온 칩.
KR1020150083489A 2014-07-14 2015-06-12 모듈러 온-다이 코히어런트 인터커넥트 방법, 장치 및 시스템 KR101695328B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
EP14382274 2014-07-14
EP14382274.0 2014-07-14
US14/707,656 US9921989B2 (en) 2014-07-14 2015-05-08 Method, apparatus and system for modular on-die coherent interconnect for packetized communication
US14/707,656 2015-05-08

Publications (2)

Publication Number Publication Date
KR20160008454A KR20160008454A (ko) 2016-01-22
KR101695328B1 true KR101695328B1 (ko) 2017-01-11

Family

ID=51298682

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150083489A KR101695328B1 (ko) 2014-07-14 2015-06-12 모듈러 온-다이 코히어런트 인터커넥트 방법, 장치 및 시스템

Country Status (4)

Country Link
US (1) US9921989B2 (ko)
KR (1) KR101695328B1 (ko)
CN (1) CN105279131B (ko)
TW (1) TWI546671B (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9996487B2 (en) * 2015-06-26 2018-06-12 Intel Corporation Coherent fabric interconnect for use in multiple topologies
KR102571154B1 (ko) * 2016-02-03 2023-08-24 삼성전자주식회사 반도체 장치, 반도체 시스템 및 반도체 장치의 동작 방법
US10289587B2 (en) * 2016-04-27 2019-05-14 Arm Limited Switching device using buffering
CN105929818B (zh) * 2016-07-05 2020-03-06 深圳市博巨兴微电子科技有限公司 一种微控制器soc内建io映射测试装置
US10365981B2 (en) 2016-08-19 2019-07-30 Samsung Electronics Co., Ltd. Adaptive multipath fabric for balanced performance and high availability
US10025677B2 (en) * 2016-12-05 2018-07-17 Arteris, Inc. Redundancy for cache coherence systems
EP3605964A4 (en) * 2017-03-31 2020-04-01 Nec Corporation METHOD FOR CONTROLLING A VIRTUAL NETWORK FUNCTION, MANAGEMENT DEVICE FOR VIRTUAL NETWORKS AND SYSTEM FOR PROVIDING VIRTUAL NETWORKS
US11249779B2 (en) * 2017-09-01 2022-02-15 Intel Corporation Accelerator interconnect assignments for virtual environments
US10783011B2 (en) 2017-09-21 2020-09-22 Qualcomm Incorporated Deadlock free resource management in block based computing architectures
US10579557B2 (en) * 2018-01-16 2020-03-03 Advanced Micro Devices, Inc. Near-memory hardened compute blocks for configurable computing substrates
US11815984B2 (en) 2020-02-07 2023-11-14 Intel Corporation Error handling in an interconnect
US20200409880A1 (en) * 2020-09-16 2020-12-31 Intel Corporation System, apparatus and method for controlling traffic in a fabric
CN112949245B (zh) * 2021-03-30 2022-11-22 飞腾信息技术有限公司 芯片设计方法、装置、设备、可读存储介质
US11899551B1 (en) * 2022-04-26 2024-02-13 Amazon Technologies, Inc. On-chip software-based activity monitor to configure throttling at a hardware-based activity monitor

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130111149A1 (en) 2011-10-26 2013-05-02 Arteris SAS Integrated circuits with cache-coherency
US20130318308A1 (en) 2012-05-24 2013-11-28 Sonics, Inc. Scalable cache coherence for a network on a chip

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040199727A1 (en) 2003-04-02 2004-10-07 Narad Charles E. Cache allocation
US8284766B2 (en) * 2007-12-28 2012-10-09 Intel Corporation Multi-core processor and method of communicating across a die
US9043665B2 (en) * 2011-03-09 2015-05-26 Intel Corporation Functional fabric based test wrapper for circuit testing of IP blocks
CN103748837B (zh) * 2011-08-22 2017-08-15 英特尔公司 使用可动态选择的冗余共享链路物理路径在基于开放核心协议的互连网络中改善数据吞吐量的方法
US8984228B2 (en) 2011-12-13 2015-03-17 Intel Corporation Providing common caching agent for core and integrated input/output (IO) module
US9910808B2 (en) * 2012-04-30 2018-03-06 Hewlett Packard Enterprise Development Lp Reflective memory bridge for external computing nodes
US20140095807A1 (en) 2012-09-28 2014-04-03 Qualcomm Technologies, Inc. Adaptive tuning of snoops
US11126522B2 (en) * 2013-06-18 2021-09-21 Nxp Usa, Inc. Method and apparatus for offloading functional data from an interconnect component
EP3014420A4 (en) 2013-06-29 2017-04-05 Intel Corporation On-chip mesh interconnect

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130111149A1 (en) 2011-10-26 2013-05-02 Arteris SAS Integrated circuits with cache-coherency
US20130318308A1 (en) 2012-05-24 2013-11-28 Sonics, Inc. Scalable cache coherence for a network on a chip

Also Published As

Publication number Publication date
CN105279131A (zh) 2016-01-27
US20160012010A1 (en) 2016-01-14
TW201608378A (zh) 2016-03-01
US9921989B2 (en) 2018-03-20
CN105279131B (zh) 2019-06-25
KR20160008454A (ko) 2016-01-22
TWI546671B (zh) 2016-08-21

Similar Documents

Publication Publication Date Title
KR101695328B1 (ko) 모듈러 온-다이 코히어런트 인터커넥트 방법, 장치 및 시스템
KR101637075B1 (ko) 루트 포트 및 루트 포트 통합 엔드 포인트의 재시작 시간을 개선하는 방법, 장치, 및 시스템
CN107077521B (zh) 片上系统配置元数据
CN109154924B (zh) 多个上行链路端口设备
JP7339223B2 (ja) フレキシブルなオンダイファブリックインターフェイス
US9747245B2 (en) Method, apparatus and system for integrating devices in a root complex
KR101775569B1 (ko) 가상 재시도 큐
US9954792B2 (en) Shared flow control credits
US9552308B2 (en) Early wake-warn for clock gating control
JP6321194B2 (ja) リンクインタフェースの使用されていないハードウェアの電力消費を制御するための方法、装置及びシステム
US10817454B2 (en) Dynamic lane access switching between PCIe root spaces
CN113868173A (zh) 扁平化端口桥
CN107078850B (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
FPAY Annual fee payment

Payment date: 20200103

Year of fee payment: 4