KR20160076970A - 크로스-다이 인터페이스 스누프 또는 글로벌 관측 메시지 오더링 - Google Patents
크로스-다이 인터페이스 스누프 또는 글로벌 관측 메시지 오더링 Download PDFInfo
- Publication number
- KR20160076970A KR20160076970A KR1020150163072A KR20150163072A KR20160076970A KR 20160076970 A KR20160076970 A KR 20160076970A KR 1020150163072 A KR1020150163072 A KR 1020150163072A KR 20150163072 A KR20150163072 A KR 20150163072A KR 20160076970 A KR20160076970 A KR 20160076970A
- Authority
- KR
- South Korea
- Prior art keywords
- interface
- snoop
- integrated circuit
- message
- circuit die
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3027—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0835—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4208—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus
- G06F13/4217—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus with synchronous protocol
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Abstract
CDI(Cross-Die Interface) 스누프 및/또는 GO(또는 컴플리션) 메시지 오더링의 기술들에 관한 방법 및 장치에 대하여 기술된다. 일 실시예에서, 스누프 메시지 및 컴플리션 메시지의 순서는, 적어도 2개의 비트의 상태에 기초하여 결정된다. 상기 스누프 메시지 및 상기 컴플리션 메시지는, 제 1 집적 회로 다이와 제 2 집적 회로 다이 사이에서 교환된다. 상기 제 1 집적 회로 다이 및 상기 제 2 집적 회로 다이는 제 1 인터페이스 및 제 2 인터페이스를 통해 커플링되며, 상기 스누프 메시지 및 상기 컴플리션 메시지는 상기 제 1 인터페이스 및 상기 제 2 인터페이스 중의 적어도 하나를 통해 교환된다. 그 밖의 실시예들이 또한 개시된다.
Description
본 발명은 일반적으로 전자 장치 분야에 관한 것이다. 보다 구체적으로, 일 실시예는 크로스-다이 인터페이스(Cross-Die Interface; CDI) 스누프(snoop) 및/또는 글로벌 관측(Global Observation; GO) 메시지 오더링을 위한 기술에 관한 것이다.
첨부된 도면을 참조하여 상세한 설명이 제공된다. 도면들에서, 참조 번호의 가장 왼쪽 숫자(들)는 참조 번호가 처음 나타나는 도면을 나타낸다. 상이한 도면에서의 동일한 참조 번호 사용은 유사하거나 동일한 아이템들을 나타낸다.
도 1은 본 명세서에서 설명된 다양한 실시예들을 구현하는데 사용될 수 있는 컴퓨팅 시스템들의 일 실시예의 블록도를 도시한 것이다.
도 2는 본 명세서에서 설명된 하나 이상의 실시예들을 구현하는데 사용될 수 있는 컴퓨팅 시스템에 대한 일 실시예의 블록도를 도시한 것이다.
도 3은 일 실시예에 따른, 다중-다이 인터커넥트 구성의 블록도를 도시한 것이다.
도 4는 본 명세서에서 설명된 하나 이상의 실시예들을 구현하는데 이용될 수 있는 컴퓨팅 시스템에 대한 일 실시예의 블록도를 도시한 것이다.
도 5는 본 명세서에서 설명된 하나 이상의 실시예들을 구현하는데 사용될 수 있는 컴퓨팅 시스템에 대한 일 실시예의 블록도를 도시한 것이다.
도 6은 일 실시예에 따른 시스템 온 칩(System On Chip; SOC) 패키지의 블록도를 도시한 것이다.
도 1은 본 명세서에서 설명된 다양한 실시예들을 구현하는데 사용될 수 있는 컴퓨팅 시스템들의 일 실시예의 블록도를 도시한 것이다.
도 2는 본 명세서에서 설명된 하나 이상의 실시예들을 구현하는데 사용될 수 있는 컴퓨팅 시스템에 대한 일 실시예의 블록도를 도시한 것이다.
도 3은 일 실시예에 따른, 다중-다이 인터커넥트 구성의 블록도를 도시한 것이다.
도 4는 본 명세서에서 설명된 하나 이상의 실시예들을 구현하는데 이용될 수 있는 컴퓨팅 시스템에 대한 일 실시예의 블록도를 도시한 것이다.
도 5는 본 명세서에서 설명된 하나 이상의 실시예들을 구현하는데 사용될 수 있는 컴퓨팅 시스템에 대한 일 실시예의 블록도를 도시한 것이다.
도 6은 일 실시예에 따른 시스템 온 칩(System On Chip; SOC) 패키지의 블록도를 도시한 것이다.
다음의 설명에서, 다수의 특정 세부사항은 다양한 실시예들에 대한 완전한 이해를 제공하기 위해 설명된다. 그러나, 일부 실시예들은 특정 세부사항 없이도 실시될 수 있다. 다른 예들에서는, 특정 실시예들을 불명료하게 하지 않도록 하기 위하여, 공지의 방법, 절차, 구성요소 및 회로가 상세하게 설명되지 않았다. 실시예들의 다양한 양태들은 집적 반도체 회로("하드웨어"), 하나 이상의 프로그램들로 구조화된 컴퓨터-판독가능한 명령("소프트웨어"), 또는 하드웨어와 소프트웨어의 몇몇 조합과 같은 각종 수단을 사용하여 수행될 수 있다. 본 발명의 목적을 위해, "로직"은 하드웨어, 소프트웨어, 또는 이들의 조합 중 하나를 의미한다.
본 명세서에서 설명되는, "스누프(snoop)" 또는 버스 스누프는 일반적으로 캐시 코히어런스(cache coherence)를 달성하기 위해 공유 메모리에서 사용되는 기술을 지칭한다. 예를 들어, 스누프 메시지는, 공유 메모리 디바이스들에 걸쳐 있는 캐시 라인의 상태를 결정하고, 두 개 이상의 위치들/캐시들에 존재하는 동일한 메모리 위치가, 공유 메모리 디바이스들을 가진 전체 컴퓨팅 시스템에 걸쳐 있는 다른 대응 메모리 위치들과 코히어런트 되도록 유지되는 것을 보장하는데 사용될 수 있다. 또한, "GO"(또는 글로벌 관측(Global Observation)) 메시지는 일반적으로 하나 이상의 동작들의 완료를 나타내는 메시지 타임을 지칭한다. 또한, "플릿(flit)"(흐름 제어 디지트의 줄임말)은 흐름 제어의 최소 유닛을 지칭한다. 메시지들은 일반적으로 다수의 플릿들로 구성되어 있다. 또한, 다른 구성들이 사용될 수도 있지만, 일 실시예에서 "플릿"은, 예를 들어, 에러 검출을 위한 8 비트, 링크-계층 헤더에 대한 8 비트, 및 데이터에 대한 64 비트를 갖는, 80 비트를 포함할 수 있다.
몇몇 실시예들은 코히어런트(coherent) 크로스-다이 인터페이스(Cross-Die Interface; CDI) 스누프 및/또는 GO(Global Observation)("컴플리션(completion)"으로도 지칭됨) 메시지 오더링을 제공한다. 보다 구체적으로, 코히어런트 CDI는 스누프 및 GO 메시지들의 오더링에 대한 규칙을 포함하며, 이 규칙은, GO 메시지들이 스누프 메시지들을 전달 가능하지만, 스누프 메시지들은 GO 메시지들을 동일 어드레스로 전달하지 않을 것을 필요로 한다(그렇지 않을 경우, 코히어런시(coherency) 및 TSO(Total Store Ordering) 메모리 일관성 모델이 훼손될 수 있음). 스누프 메시지들은 어드레스를 포함하는 반면에 GO 메시지들은 포함하지 않기 때문에, 이 규칙을 구현하는 것이 복잡하게 될 수 있다. 따라서, 모든 GO/스누프 메시지들은 잠재적 충돌(potentially conflicting)로 취급될 필요가 있다. 이를 위해, 일 실시예는 GO 또는 스누프 메시지가 도착할 때를 기준으로 시간 윈도우들을 "에포크들(epochs)"로 분할하게 되며, 이것은 "에포크 비트들"이라 불리는 비트들과 연관된다. 일 실시예는 플릿의 에포크 비트들 및 패킹(packing) 규칙들을 이용하여 코히어런트 CDI 플릿을 효율적으로 패킹함으로써, 플릿에서의 임의의 충돌 메시지의 부재(absence)를 보장한다. 그 후에, 언패킹(unpacking) 규칙들을 사용하여 수신기 말단에서 에포크 비트들을 재생성함으로써 스누프/GO 오더링 규칙들에 따를 수 있게 된다.
또한, 본 명세서에서 설명되는 기술들은, 도 1-6를 참조하여 설명되는 것들을 포함하는 다양한 컴퓨팅 시스템들(예를 들어, 데스크탑, 워크스테이션, 서버, 랙 시스템 등과 같은 비-모바일 컴퓨팅 디바이스 또는 스마트 폰, 태블릿, UMPC(Ultra-Mobile Personal Computer), 랩탑 컴퓨터, Ultrabook™ 컴퓨팅 디바이스, 스마트 와치, 스마트 글라스 등과 같은 모바일 컴퓨팅 디바이스를 포함)에 제공될 수 있다. 보다 구체적으로, 도 1은 일 실시예에 따른, 컴퓨팅 시스템(100)의 블록도를 도시한 것이다. 시스템(100)은 ("에이전트들(102)" 또는 보다 일반적으로는 "에이전트(102)"로 본 명세서에서 총칭되는) 하나 이상의 에이전트들(102-1 내지 102-M)을 포함할 수 있다. 일 실시예에서, 에이전트들(102) 중의 하나 이상은 도 4-6을 참조하여 설명되는 컴퓨팅 시스템들과 같은 컴퓨팅 시스템의 임의의 컴포넌트들일 수 있다.
도 1에 도시된 바와 같이, 에이전트들(102)은 온-다이 시스템 패브릭(On-die System Fabric; OSF)과 같은 프라이머리 패브릭(104)을 통해 전송할 수 있다. 따라서, 에이전트들(102) 및 패브릭(104)은, 일 실시예에서 동일한 집적 회로 다이 상에 존재할 수 있다. 본 명세서에서 설명되는 "OSF"는 스케일링 가능하고, 설정 가능하며, 및/또는 제품 특정의 온-다이 시스템 패브릭(On-Die System Fabric)을 지칭할 수 있다. 예를 들어, 에이전트들(102) 각각은 (예를 들어, 다른 패브릭에 커플링하기 위한) 브리지(bridge), IP(Intellectual Property) 블록, 또는 패브릭(104)을 통해 커플링되는 전자 디바이스의 다른 컴포넌트일 수 있다. 일 실시예에서, 패브릭(104)은, 다양한 에이전트들(예를 들어, 컴퓨팅 디바이스들)이 데이터를 전송하는 것을 가능하게 하는 컴퓨터 네트워크를 포함할 수 있다. 일 실시예서, 패브릭(104)은 직렬(예를 들어, 포인트-투-포인트) 링크 및/또는 (일 실시예에서, 링(ring)으로 구성될 수 있는) 공유 통신 네트워크를 통해 통신하는 하나 이상의 인터커넥트들(또는 인터커넥트 네트워크들)을 포함할 수 있다. 각 링크는 하나 이상의 레인(lane)들을 포함할 수 있다. 예를 들어, 몇몇 실시예들은 FBD(Fully Buffered Dual) 인-라인 메모리 모듈들과의 통신이 가능한 링크들에 대한 컴포넌트 디버그(debug) 또는 검증을 가능하게 할 수 있으며, 예를 들어, 여기서, FBD 링크는 호스트 컨트롤러 디바이스(예를 들어, 프로세서 또는 메모리 허브(hub))에 메모리 모듈들을 커플링하기 위한 직렬 링크이다. 디버그 정보가 FBD 채널 호스트로부터 송신됨으로써, 채널 트래픽 트레이스 캡처 툴들(예를 들어, 하나 이상의 로직 분석기들)에 의해 이 디버그 정보는 채널들을 따라 관측될 수 있다.
일 실시예에서, 시스템(100)은 물리 계층, 링크 계층, 라우팅 계층, 전송 계층, 및/또는 프로토콜 계층을 포함할 수 있는 계층화된 프로토콜 방식을 지원할 수 있다. 패브릭(104)은 포인트-투-포인트 또는 공유 네트워크에 있어서 하나의 프로토콜(예를 들어, 캐싱 프로세서 또는 캐싱 인식 메모리 컨트롤러)로부터 다른 프로토콜로의 데이터의 송신(예를 들어, 패킷(packet)들의 형태로)을 더 가능하게 할 수 있다. 또한, 몇몇 실시예들에서, 패브릭(104)은 하나 이상의 캐시 코히어런트 프로토콜들을 따르는 통신을 제공할 수 있다.
또한, 도 1에서 화살표 방향으로 도시된 바와 같이, 에이전트들(102)은 패브릭(104)을 통해 데이터를 송신 및/또는 수신할 수 있다. 따라서, 몇몇 에시전트들은 통신을 위해 단방향 링크를 이용할 수 있는 반면, 다른 에이전트들은 양방향 링크를 이용할 수도 있다. 예를 들어, 하나 이상의 에이전트들(예를 들어, 에이전트(102-M))은 (예를 들어, 단방향 링크(106)를 통해) 데이터를 송신할 수 있고, 다른 에이전트(들)(예를 들어, 에이전트(102-2))는 (예를 들어, 단방향 링크(108)를 통해) 데이터를 수신할 수 있는 반면, 몇몇 에이전트(들)(예를 들어, 에이전트(102-1))는 (예를 들어, 양방향 링크(110)를 통해) 데이터를 송신 및 수신 모두 할 수 있다. 몇몇 실시예들에서, 링크들(106-110)은, IP 블록들이 다수의 설계들에 걸쳐 연동될 수 있게 하는 프로토콜 및/또는 시그널링을 제공하는 OSF 인터페이스들이다.
일 실시예에서, 에이전트들(102)(예를 들어, 링크들(106-110)을 커플링시키는 OSF 인터페이스들은 프라이머리 채널(primary channel) 및 측파대 채널(sideband channel)로 지칭되는 두 개의 포트(port)를 제공할 수 있다. 프라이머리 채널은 (a) 피어들 및/또는 업스트림 간의 데이터 전송을 위한 고성능 인터페이스이고; (b) 메모리(예를 들어, 32 비트, 44 비트), 입/출력(IO 또는 I/O), 환경설정, 및 메시지 트랜잭션(transaction)들을 지원하고; (c) PCI(Peripheral Component Interconnect) 익스프레스(PCI Express Base Specification 3.0, Revision 0.5, August 2008에 따른, "PCIe") 오더링 규칙들 및/또는 이뉴머레이션(enumeration)을 지원하고; (d) 스플릿(split) 트랜잭션 프로토콜을 지원하며; 및/또는 (e) PCIe 헤더 정보를 맵핑할 수 있다. 측파대 채널은 (i) 측파대(본 명세서에서는 "아웃-오브-밴드"로도 상호교환적으로 지칭됨) 정보를 전송하고 전용 와이어들을 제거하는 표준 인터페이스를 제공하고; (ii) 포인트-투-포인트 네트워크를 제공하고; (iii) 상태, 전력 관리, 컨피겨레이션 섀도윙(configuration shadowing), 테스트 모드 등에 사용되며; 및/또는 (iv) (예를 들어, 프라이머리 데이터 전송들에 의도되지 않는) 저성능에 사용될 수 있다.
또한, 에이전트들(102) 중의 적어도 하나는 홈 에이전트일 수 있고, 에이전트들(102) 중의 하나 이상은 요청 에이전트들 또는 캐싱 에이전트들일 수 있다. 일반적으로, 요청/캐싱 에이전트들은, 대응하는 "홈 에이전트"와 연관된 메모리 어드레스에의 액세스를 위해 홈 노드/에이전트로 요청(들)을 전송한다. 또한, 일 실시예에서, 에이전트들(102) 중의 하나 이상의 에이전트들(에이전트(102-1)에 대한 것만 나타나 있음)은 (그 에이전트에 전용이거나 다른 에이전트들과 공유될 수 있는) 메모리, 예를 들어 메모리(120)에 액세스할 수 있다. 몇몇 실시예들에서, 에이전트들(102) 각각(또는 그들 중의 적어도 하나)은, 에이전트와 동일한 다이 상에 존재하거나 그렇지 않은 경우에는 에이전트에 의해 액세스 가능한 메모리(120)에 커플링될 수 있다. 또한, 도 1에 나타낸 바와 같이, 에이전트들(102)은, 예를 들어, 도 2-6를 참조하여 본 명세서에서 더 설명되는 바와 같이, 스누프 및/또는 GO 메시지 오더링을 가능하게 하는 코히어런트 CDI 로직(150)을 포함한다.
도 2는 일 실시예에 따른 컴퓨팅 시스템(200)의 블록도이다. 시스템(200)은 복수의 소켓들(202-208)을 포함한다(네 개가 도시되어 있지만, 몇몇 실시예들은 더 많거나 적은 소켓을 가질 수 있음). 각 소켓은 프로세서를 포함한다. 또한, 시스템(200) 내의 각종 에이전트들은 로직(150)을 통해 통신할 수 있다. 로직(150)이 아이템들(202) 및 MC2/HA2에만 도시되어 있지만, 로직(150)은 시스템(200)의 다른 에이전트들에 제공될 수도 있다. 또한, 구현예에 따라서는, 더 많거나 적은 로직 블록들이 시스템 내에 존재할 수도 있다. 또한, 각 소켓은 포인트-투-포인트(int-to-point; PtP) 링크를 통해, 또는 퀵 패스 인터커넥트(Quick Path Interconnect; QPI), MIPI(Mobile Industry Processor Interface) 등과 같은 상이한 인터커넥트를 통해 다른 소켓들에 커플링된다. 도 1의 패브릭(104)과 관련하여 설명한 바와 같이, 각 소켓은, 예를 들어, 동적 랜덤 액세스 메모리(dynamic random access memory; DRAM)를 포함하는 복수의 듀얼 인라인 메모리 모듈(Dual Inline Memory Module; DIMM)들에 의해 형성되는 시스템 메모리의 로컬 부분에 커플링된다.
다른 실시예에서는, 네트워크 패브릭이 임의의 시스템 온 칩(System on Chip; SoC 또는 SOC) 애플리케이션에 이용될 수 있고, AMBA(Advanced Microcontroller Bus Architecture), OCP(Open Core Protocol), MIPI(Mobile Industry Processor Interface), PCI(Peripheral Component Interconnect) 또는 PCIe(Peripheral Component Interconnect express)에 대한 ARM 호환 인터페이스들과 같은 커스텀 또는 표준 인터페이스들을 이용할 수 있다.
도 2에 나타낸 바와 같이, 각 소켓은 (MC0/HA0 내지 MC3/HA3과 같은) 메모리 컨트롤러(Memory Controller; MC)/홈 에이전트(Home Agent; HA)에 커플링된다. 이 메모리 컨트롤러들은 시스템 메모리(예를 들어, 도 9의 메모리(912))의 일부가 될 수 있는 대응하는 로컬 메모리(MEM0 내지 MEM3로 표시됨)에 커플링된다. 몇몇 실시예들에서, 이 메모리 컨트롤러(MC)/홈 에이전트(HA)(예를 들어, MC0/HA0 내지 MC3/HA3)는 도 1의 에이전트(102-1)와 동일하거나 유사할 수 있으며, MEM0 내지 MEM3으로 표시된 이 메모리는 본 명세서에서 임의의 도면들을 참조하여 설명되는 메모리 디바이스들과 동일하거나 유사할 수 있다. 또한, 일 실시예에서, MEM0 내지 MEM3는, 예를 들어 마스터 및 슬레이브와 같이, 데이터를 미러링(mirroring)하도록 구성될 수 있다. 또한, 시스템(200)의 하나 이상의 컴포넌트들은 몇몇 실시예들에서 동일한 집적 회로 다이 상에 포함될 수 있다.
또한, (도 2에 나타낸 바와 같은) 일 구현예는 미러링을 갖는 소켓 글루리스(glueless) 구성에 관한 것이다. 예를 들어, 메모리 컨트롤러(예를 들어, MC0/HA0)에 할당된 데이터는, PtP 링크들을 통해 다른 메모리 컨트롤러(예를 들어, MC3/HA3)에 미러링된다.
도 3은 일 실시예에 따른 다중-다이 인터커넥트 구성의 블록도를 도시한 것이다. 또한, 로직(150)은 몇몇 실시예들을 참조하여 본 명세서에서 설명되는 바와 같이, 스누프/GO 메시지 오더링을 가능하게 하는, 도 3에 나타낸 컴포넌트들 중의 하나 이상의 컴포넌트들을 포함할 수 있다. 일 실시예에서, 도 3의 크로스-다이 인터페이스(Cross-Die Interface; CDI)(308)는 복수의 집적 회로 다이들/디바이스들을 커플링시키는데 사용된다.
몇몇 실시예들에서, 제 1 집적 회로(IC) 다이(302)와 제 2 IC 다이(304) 사이에는 두 개의(예를 들어, 고유) 인터페이스를 가진 링크가 제공된다. 이러한 인터페이스들 중의 하나는, 결합된 디바이스와 OSF(306) 사이에서 코히어런트 프로토콜 및 비-코히어런트 프로토콜을 사용하는 (도 1의 OSF(102)와 동일하거나 유사할 수 있는) 온-다이 시스템 패브릭(On-Die System Fabric; OSF)(306)이다. OSF는 일 실시예에서 다수의 인터페이스들을 포함한다(그리고 일부 구현예들에서는 2000 와이어 폭 이상이 될 수 있음). 다른 인터페이스는 50 레인(lane) 폭이 될 수 있는 크로스-다이 인터페이스(Cross-Die Interface; CDI)(308)에 대한 것이다. 일 실시예에서, CDI는 코히어런트 프로토콜 인터페이스(305) 메시지들을, 400 비트 플릿으로 패킹한다. 일 실시예에서는, 스누프 및/또는 GO 메시지 오더링 요구사항들을 계속 준수하면서, 코히어런트 CDI 메시지들을 효율적으로 패킹한다. 일반적으로, 이 오더링 요구사항은, GO의 메시지가 스누프들을 전달하지만, 스누프들은 GO의 메시지를 푸싱(pushing)할 수 있다.
하나의 이전 해결책은 (매우 비현실적일 수 있는) OSF의 모든 메시지 인터페이스들을 확장하는 것이다. 예를 들어, 50 레인 및 8 UI(즉, 8 Unit Interval) 인터페이스 (또는 400 비트 플릿) 상에서, OSF로부터 수신되는 임의의 메시지 통신이 패킹되어 (몇 천의 와이어 인터페이스를 포함할 수 있는) 세컨더리 다이로 포워딩(forwarding)될 수 있다. OSF(306)를 통한 코히어런트 CDI 의 경우, 하나의 수신기로 향하는 대부분의 메시지들은, 스누프들 및 GO들을 제외하면, 어떠한 순서(order)도 가지고 있지 않다. 다른 해결책은 플릿을 통해 한번에 하나의 메시지를 전송하는 것이며, 이는 매우 비효율적일 수 있다.
전술한 바와 같이, 스누프 및 GO 메시지들의 오더링에 관한 코히어런트 CDI 규칙은, GO 메시지들이 스누프들을 전달할 수 있지만, 스누프 메시지들은 동일한 어드레스로 GO 메시지들을 전달하지 않는다는 것이다(그렇지 않을 경우에는, 코히어런시 및 TSO 메모리 일관성 모델이 훼손될 수 있음). 이를 복잡하게 하는 하나의 아이템은, 스누프 메시지들이 일 어드레스를 포함하는 반면, GO 메시지들은 포함하지 않는다는 것이다. 따라서, 모든 GO/스누프 메시지들은 잠재적 충돌로 취급될 필요가 있다. 이를 위해, 일 실시예에서는 플릿의 에포크 비트들 및 패킹 규칙들을 이용하여 코히어런트 CDI 플릿을 효율적으로 패킹함으로써, 플릿에서의 임의의 충돌 메시지의 부재를 보장하게 된다. 그 후에, 언패킹 규칙들(unpacking rule)을 사용하여 수신기 말단에서 에포크 비트들을 재생성함으로써, 스누프/GO 오더링 규칙들을 유지할 수 있다.
또한, 몇몇 실시예들은 하나의 플릿에서 다수의 스누프 및/또는 GO 메시지들로 패킹하고, 이 플릿 메시지에서 임의의 추가 비트들을 이용하지 않고 코히어런트 CDI 오더링을 보장하는 것을 가능하게 한다. 또한, 이러한 기술들은 동기화를 유지하기 위해 TX/RX(transmit/receive) 회로의 플릿에서 임의의 추가 비트들을 버닝(burning)하거나 낭비하는 것을 방지하게 되며, 또한, 가능한 한 플릿에 다수의 메시지들을 배치하게 하는 플릿의 효율적인 패킹을 가능하게 한다.
코히어런트 CDI의 순서 요구사항을 보장하기 위한 다른 방법은, 하나의 FIFO(First-In, First-Out) 버퍼에서 메시지들을 오더링하는 것을 포함하지만, 이러한 해결책은 훨씬 더 큰 결합 구조 또는 다수의 비트들을 소모하게 된다(또한, CDI는 OSF 인터커넥트 보다 훨씬 더 좁으며, 따라서 이 대형 구조에 액세스하고/하거나 추가 정보를 전송하는 것과 연관된 레이턴시로 인해, 이 대형 구조 또는 다수의 비트들은 링크 속도를 늦추게 됨). 대조적으로, 몇몇 실시예들은 일 CDI TX/RX 로직에서 단지 2 비트를 사용하여, 잠재적 종속성들을 추적한다. 이러한 2 비트는 TX/RX 로직 간에서 전송되지는 않으며, 각 측의 스토리지 구조들에 상주하게 된다. 이러한 접근 방식은 이 정보를 링크를 통해 송신해야 하는 것 대신에, 로컬 결정/액세스를 포함하는 더 간단한 해결책을 제공하게 되며, 예를 들어, 이것은 더 많은 신뢰성, 전력 소모 감소, 레이턴시 감소, 및/또는 속도 증가를 야기하게 된다. GO 및 스누피 메시지들이 언패킹되는 이 RX 로직에서는, 이러한 2 비트(본 명세서에서는 종종 "에포크 비트들"로도 지칭됨)가 코히어런트 프로토콜 인터페이스(305)에서의 송신 이전에 재생된다.
도 3을 참조하면, 프라이머리 IC(302)와 세컨더리 IC(304) 사이에서, 코히어런트 프로토콜 인터페이스는 일반적으로 좌측에 나타내지고, 비-코히어런트 프로코콜 인터페이스는 우측에 나타내진다. 도 3에서, "ARB/MUX"(310)는 다수의 프로토콜 링크-계층들 간을 중재하는 중재 로직/멀티플렉서를 지칭하며, 일 실시예에서는, 도 3에 나타낸 바와 같이 코히어런트 프로토콜 링크-계층 및 비-코히어런트 프로토콜 링크 계층을 출력한다. CDI 물리적(PHY) 계층(307)은 플릿 그래뉴얼리티에서 멀티플렉싱되는 프로토콜을 전송한다.
몇몇 실시예들에서, (프라이머리와 세컨더리 IC들 간의 CDI 코히어런트 파이프를 위해 개발된) 다음의 설정/규칙들 중의 하나 이상의 설정/규칙들은 스누프/GO 오더링을 보장한다:
(1) OSF(302) 인터페이스에서는, 개별의 스누프/GO FIFO들에, 추가의 엔트리-당-비트가 제공되어 스누프/GO 에포크를 추적하게 되고, 또한 일 이상의 비트가 제공되어 현재의 에포크를 추적하게 된다;
(a) 에포크 비트들은 큐에 대한 입력으로 생성되고, 또한 패킹/전송을 결정하도록 판독된다;
(b) GO 메시지들은 어드레스를 반송하지 않으며, 따라서 스누프 메시지가 아웃스탠딩(outstanding) GO와 충돌하는지 여부에 대하여, 로직(예를 들어, 로직(150))은 전혀 모른다는 것에 유의한다. 이러한 이유로, CDI 코히어런트 프로토콜은 이전에 발행된 GO를 전달하지 않는 스누피들을 필요로 한다;
(2) CDI의 암시적 플릿 순서 - 코히어런트 CDI 플릿 구축시에는, 플릿 내의 정의 메시지들에 의해 오더링되지 않음(즉, 하나의 플릿에서의 모든 메시지들은 오더링 요구사항을 갖고 있지 않으며, 수신기 로직에서 완전히 언패킹되어 임의의 원하는 순서로 디바이스에게 전송될 수 있음).
이 방식은 다음과 같이 작동된다. 스누프(Req) 및 GO(Rsp) FIFO들은 추가적인 엔트리당 에포크 비트들의 어레이와 분리된다. 그 자체가 오더링될 필요가 없는 GO 또는 스누프(각각)의 블록에는, GO 에포크(GO_epoch) 또는 스누프 에포크(Snp_epoch) 비트가 이진값으로 할당된다. 또한, GO FIFO로부터 어떤 에포크를 현재/마지막 팝핑(poping)했는지를 기억하는 추가 비트(Rbit 또는 "기억 비트(Remember bit)")도 존재한다.
일 실시예에서, 이 비트들은 송신(TX)/수신(RX) FIFO에 들어가는 이러한 규칙들에 따라 조작된다 :
이전 또는 동일한 사이클에서 GO가 수신되지 않은 경우, 초기 Snp_epoch = 1, 그렇지 않을 경우에는 0
초기 GO_epoch=1
GO가 마지막 시간에 기록되었고 스누프가 기록되었던 경우 또는 마지막 시간에 GO가 기록되었고 기록된 스누프가 없던 경우에는, Snp_epoch를 토글링
이 사이클에서 스누프도 기록되는 경우 또는 마지막 시간에 스누프가 기록되었고 기록된 스누프(GO)가 없던 경우에는, GO_epoch를 토글링
일 실시예에서, 마지막 스누프 이후에 GO가 마지막으로 들어왔는지 여부 또는 마지막 GO 이후에 스누프가 들어왔는지 여부를 결정하기 위해, 큐들에 대한 각 라이트 인에이블(라이트 인에이블) 신호의 상태를 저장한다. 라이트 인에이블 요청(req_WrEn) 및 라이트 인에이블 응답(rsp_WrEn)은 그 중의 어느 것이 어서팅(asserting)되는 경우에 캡처된다. 그렇지 않은 경우, last_req_WrEn 및 last_rsp_WrEn 플롭(flop)들이 그들의 상태를 유지한다. 이 방식에서, "마지막(last)"은 어떤 것이 기록된 마지막 시간을 의미한다. 큐에 기록될 에포크 비트들은 next_snp_epoch 및 next_GO_epoch로 명명된다. 몇몇 실시예들에서, 이것들은 표 1: Snp_epoch 생성 및 표 2: GO_epoch 생성에 의해 결정된다.
일 실시예에서, Tx/Rx FIFO를 판독하는 경우, 오더링 확립 규칙들은 다음과 같다:
마지막 전송된 GO_epoch에 Rbit가 설정됨;
에포크가 동일한 경우에는, 스누프가 GO를 전달함;
Rbit==Snp_epoch인 경우에는, 스누프가 GO(들)을 전달할 수 있음;
그렇지 않은 경우에는, GO(들)이 발행된 이후까지 스누프가 지연됨; 및
에포크를 변경하기 전에는, 현재의 에포크에서 모두 전송해야 함.
몇몇 실시예에 따른 일 예는 다음의 표 3에서 제공된다. 이 표는 OSF에서 나타나는 스누프(S0, S1, S2 등) 및 GO(G0, G1, G2 등)의 샘플 순서 및 로직(예를 들면, 로직(150 및/또는 303))이 Snp_epoch 및 GO_epoch 비트들을 할당하는 방식을 보여준다.
초기 값에 있어서는, 정의에 의해, 첫번째 GO_epoch는 항상 1이다. GO가 수신되지 않은 경우에는, 첫번째 Snp_epoch=1이며, 그렇지 않은 경우 0이다. 본 예에서, 시간 t=0에서의 Snp_epoch는 1로 할당되어 있다. t=1에서는, GO(G0)가 스누프 없이 도달한다. 이 GO에도 또한 1이 할당되며, 그 이유는 스누프에 대한 어떠한 오더링 요구사항도 갖고 있지 않으며, 따라서 동일한 에포크에서 존재하기 때문이다. t=2에서는, 스누프(S1) 및 GO(G1) 모두가 도달한다. 스누프에는 이전의 GO 뒤에 오더링되도록, 새로운 에포크가 할당되어야 한다. GO에는 스누프를 차단하지 않도록, 이러한 에포크가 또한 주어진다. t=4에서는, 스누프(S2)에 대한 Snp_epoch가, t=3에서 들어오는 GO 뒤에 오더링되도록, 토글링되어야 한다. 본 예의 나머지는 위의 규칙들을 사용하여 구축될 수 있다.
표 3은 일 실시예에 따른 Snp 및 GO FIFO에서의 스누프(S) 및 GO(G) 메시지 도달 및 대응 추적의 예들을 보여준다.
일 실시예에서, 코히어런트 CDI 플릿들이 다음의 규칙들에 기초하여 패킹됨:
위의 규칙들에 따라 사안들을 오더링할 경우에는, 나중의 플릿에 스누프를 입력하고,
효율을 향상시키기 위해, 상이한 플릿들에서 스누프들 및 GO 메시지들을 그룹핑한다.
이 예의 경우, 기억 비트 (RBIT)는 첫번째 GO 메시지의 수신시에 1로 설정된다. 스누프 S0 및 G0는 동일한 플릿에서 전송될 수 있지만, S1, G1 및 G2는 그렇지 않다. 이들 모두는 에포크 0을 가진 메시지이기 때문에, S1, G1 및 G2는 후속의 플릿에서 전송될 수가 있다(이들이 실제로는 다른 플릿 패킹 규칙들에 따라 전송될지 여부에 관계없음에 유의). R-비트가 0으로 변경되게 된다. 다시, S2는 해당 플릿에서 전송될 수 없으며, 그 이유는 R-비트와 매칭되지 않는 Snp_epoch (1)을 갖고 있기 때문이다. S2 및 G3는 후속의 플릿에서 전송될 수가 있다. S3, S4, S5 및 G4는 다음의 플릿에서 전송될 수가 있지만, S6은 그럴 수 없으며, 그 이유는 그것의 에포크가 R-비트 (0)와 매칭되지 않기 때문이며, 또한 그것이 G4에 대하여 오더링될 필요가 있기 때문이다.
Rx 데이터 경로에서는, 이 플릿이 언패킹되며, 에포크 비트들은 Rx FIFO에의 기록을 위해 전술한 규칙들에 따라 Rx FIFO들에서 스누프 및 GO 메시지들로 생성 및 저장된다. 이 순서는 그것들이 패킹되는 플릿에 기초한다. 플릿 내의 스누프/GO 메시지들은 오더링되어 있지 않지만, 플릿 내의 스누프/GO 메시지들에 대한 Snp_Epoch 및 GO_Epoch에 대하여 동일한 값을 설정하도록 한다. 오더링이 플릿들 간에서 발생한다. Rx FIFO들이 판독되는 경우, 이 에포크 비트들은, 수신기 로직에 올바른 순서로 스누프/GO 메시지들을 리턴하는데 사용된다.
도 4는 컴퓨팅 시스템(400)의 일 실시예의 블록도를 도시한 것이다. 도 1의 에이전트들(102) 중의 하나 이상은 컴퓨팅 시스템(400)의 하나 이상의 컴포넌트들을 포함할 수 있다. 또한, 시스템(400)의 각종 컴포넌트들은 도 4에서 설명되는 로직(150)을 포함할 수 있다. 그러나, 로직(150)은, 도시된 것들을 포함하거나 제외하는 시스템(400) 전체에 걸친 위치들에서 제공될 수 있다. 컴퓨팅 시스템(400)은 인터커넥트 네트워크(또는 버스)(404)에 커플링되는 ("프로세서들(402)" 또는 보다 일반적으로 "프로세서(402)"로 본 명세서에서 총칭될 수 있는) 하나 이상의 중앙 처리 유닛(들)(CPU)(402)을 포함할 수 있다. 도 1-3을 참조하여 설명한 동작들은, 시스템(400)의 하나 이상의 컴포넌트들에 의해 수행될 수 있다.
프로세서들(402)은 (RISC(reduced instruction set computer) 프로세서 또는 CISC(complex instruction set computer)를 포함하는) 범용 프로세서, (컴퓨터 네트워크(405)를 통해 전송되는 데이터를 처리할 수 있는) 네트워크 프로세서 등과 같은 임의의 타입의 프로세서일 수 있다. 또한, 프로세서들(402)은 하나 또는 다수의 코어 설계를 가질 수 있다. 다수의 코어 설계를 가진 프로세서들(402)은 동일한 집적 회로(IC) 다이 상에 상이한 타입의 프로세서 코어들을 통합할 수 있다. 또한, 다수의 코어 설계를 가진 프로세서들(402)은 대칭 또는 비대칭 멀티프로세서들로서 구현될 수도 있다.
프로세서(402)는, 다양한 실시예들에서 전용 및/또는 공유될 수 있는 하나 이상의 캐시들을 포함할 수 있다. 일반적으로, 캐시는 다른 장소에 저장되어 있거나 이전에 컴퓨팅된 원본 데이터에 대응하는 데이터를 저장한다. 메모리 액세스 레이턴시를 감소시키기 위해, 데이터가 캐시에 저장되고 나면, 향후의 사용은 원본 데이터를 프리페칭(prefetching)하거나 재컴퓨팅하는 것이 아니라, 캐싱된 사본에 액세스함으로써 이루어질 수 있다. 캐시(들)는, 시스템(400)의 하나 이상의 컴포넌트들에 의해 이용되는 전자 데이터(예를 들어, 인스트럭션들을 포함)를 저장하는, 레벨 1(L1) 캐시, 레벨 2(L2) 캐시, 레벨 3(L3), 중간-레벨 캐시, 마지막 레벨 캐시(LLC) 등과 같은 임의의 타입의 캐시일 수 있다. 또한, 이러한 캐시(들)는 다양한 위치들(예를 들어, 도 1, 2, 3, 또는 5의 시스템들을 포함하는, 본 명세서에 설명된 컴퓨팅 시스템들의 다른 컴포넌트들 내부)에 위치할 수 있다.
칩셋(chipset)(406)은 인터커넥트 네트워크(404)에 추가로 커플링될 수 있다. 또한, 칩셋(406)은 그래픽들 메모리 제어 허브(graphics memory control hub; GMCH)(408)를 포함할 수 있다. GMCH(408)는 메모리(412)에 커플링되는 메모리 컨트롤러(410)를 포함할 수 있다. 메모리(412)는 예를 들어, 프로세서(402), 또는 컴퓨팅 시스템(400)의 컴포넌트들과의 통신에 있어서의 임의의 다른 디바이스에 의해 실행되는 인스트럭션들의 시퀀스들을 포함하는 데이터를 저장할 수 있다. 또는, 일 실시예에서, 메모리(412)는 랜덤 액세스 메모리(random access memory; RAM), 동적 RAM(dynamic RAM; DRAM), 동기식 DRAM(synchronous DRAM; SDRAM), 정적 RAM(static RAM; SRAM) 등과 같은 하나 이상의 휘발성 스토리지(또는 메모리) 디바이스들을 포함할 수 있다. 비휘발성 메모리 또한 하드 디스크와 같이 이용될 수 있다. 다수의 프로세서들 및/또는 다수의 시스템 메모리들과 같은, 추가의 디바이스들이 인터커넥트 네트워크(404)에 커플링될 수 있다.
GMCH(408)는 (예를 들어, 일 실시예에서 그래픽들 액셀레이터를 통해) 디스플레이 디바이스(416)에 커플링되는 그래픽 인터페이스(414)를 더 포함할 수 있다. 일 실시예에서, 그래픽 인터페이스(414)는 초고속 그래픽 포트(Accelerated Graphics Port; AGP) 또는 주변 컴포넌트 인터커넥트(Peripheral Component Interconnect; PCI)(또는 PCIe(PCI express) 인터페이스)를 통해 디스플레이 디바이스(416)에 커플링될 수 있다. 일 실시예에서, (플랫 패널 디스플레이와 같은) 디스플레이 디바이스(416)는, 예를 들어, 디스플레이(416)에 의해 변환되어 디스플레이되는 디스플레이 신호들로, 비디오 메모리 또는 시스템 메모리(예를 들어, 메모리(412))와 같은 스토리지 디바이스에 저장된 이미지의 디지털 표현을 변환하는, 신호 컨버터(converter)를 통해 그래픽 인터페이스(414)에 커플링될 수 있다.
도 4에 나타낸 바와 같이, 허브 인터페이스(418)는 입/출력 제어 허브(input/output control hub; ICH)(420)에 GMCH(408)를 커플링시킬 수 있다. ICH(420)는 컴퓨팅 시스템(400)에 커플링되는 I/O(input/output) 디바이스들에 대한 인터페이스를 제공할 수 있다. ICH(420)는, PCIe 사양, 범용 직렬 버스(USB) 컨트롤러 등과 호환될 수 있는 주변 컴포넌트 인터커넥트(Peripheral Component Interconnect; PCI) 브리지와 같은 주변장치 브리지(또는 컨트롤러)(424)를 통해 버스(422)에 커플링될 수 있다. 브리지(424)는 프로세서(402)와 주변 디바이스들 간의 데이터 경로를 제공할 수 있다. 다른 타입의 토폴로지(topology)들이 이용될 수 있다. 또한, 다수의 버스들이 예를 들어, 다수의 브리지들 또는 컨트롤러를 통해 ICH(420)에 커플링될 수도 있다. 또한, 버스(422)는 다른 타입 및 구성의 버스 시스템들을 포함할 수 있다. 또한, ICH(420)에 커플링되는 다른 주변장치들은 다양한 실시예들에 있어서, IDE(integrated drive electronics) 또는 SCSI(small computer system interface) 하드 드라이브(들), USB 포트(들), 키보드, 마우스, 병렬 포트(들), 직렬 포트(들), 플로피 디스크 드라이브(들), 디지털 출력 지원장치(예를 들어, 디지털 비디오 인터페이스(DVI)) 등을 포함할 수 있다.
버스(422)는 오디오 디바이스(426), 하나 이상의 디스크 드라이브(들)(428), 및 (일 실시예에서 NIC일 수 있는) 네트워크 어댑터/인터페이스(430)에 커플링될 수 있다. 일 실시예에서는, 네트워크 어댑터(430), 또는 버스(422)에 커플링되는 다른 디바이스들이 칩셋(406)과 통신할 수 있다. 네트워크 어댑터(430)는 유선 또는 무선 인터페이스를 통해 각종 컴포넌트들과 통신될 수 있다. 도 4에 나타낸 바와 같이, 네트워크 어댑터(430)는 안테나(431)에 커플링되어, 네트워크(403)와 무선으로 (예를 들어, IEEE(Institute of Electrical and Electronics Engineers) 802.11 인터페이스(IEEE 802.11a/b/g/n/ac 등을 포함), 셀룰러 인터페이스, 3G, 11G, LPE 등을 통해) 통신할 수 있다. 다른 디바이스들은 버스(422)를 통해 통신할 수 있다. 또한, 몇몇 실시예들에서는, 각종 컴포넌트들(예를 들어, 네트워크 어댑터(430))이 GMCH(408)에 커플링될 수 있다. 또한, 프로세서(402) 및 GMCH(408)가 겹합되어 하나의 칩을 형성할 수도 있다. 일 실시예에서, 메모리 컨트롤러(410)는 CPU들(402) 중의 하나 이상에서 제공될 수 있다. 또한, 일 실시예에서, GMCH(408) 및 ICH(420)는 주변장치 제어 허브(Peripheral Control Hub; PCH)로 결합될 수 있다.
또한, 컴퓨팅 시스템(400)은 휘발성 및/또는 비휘발성 메모리(또는 스토리지)를 포함할 수 있다. 예를 들어, 비휘발성 메모리는 다음 중의 하나 이상을 포함할 수 있다: 판독 전용 메모리(read-only memory; ROM), 프로그래머블 ROM(programmable ROM; PROM), 소거 가능한 PROM(erasable PROM; EPROM), 전기적 EPRPM(electrically EPROM; EEPROM), 디스크 드라이브(예를 들어, 428), 플로피 디스크, 컴팩트 디스크 ROM(compact disk ROM; CD-ROM), DVD(digital versatile disk, 플래시 메모리, 광자기 디스크, 또는 전자 데이터(예를 들어, 인스트럭션들을 포함)를 저장할 수 있는 다른 타입의 비휘발성 머신-판독가능한 매체.
일 실시예에서, 메모리(412)는 다음 중의 하나 이상을 포함할 수 있다: O/S(operating system)(432), 애플리케이션(434), 및/또는 디바이스 드라이버(436). 메모리(412)는 또한 MIMO(Memory Mapped I/O) 동작들에 전용인 영역들을 포함할 수 있다. 메모리(412)에 저장되는 프로그램들 및/또는 데이터는 메모리 관리 동작들의 일부로서 디스크 드라이브(428) 내로 스왑(swap)될 수 있다. 애플리케이션(들)(434)은 네트워크(405)에 커플링되는 하나 이상의 컴퓨팅 디바이스들과 하나 이상의 패킷들을 통신하기 위해 (예를 들어, 프로세서(들)(402) 상에서) 실행될 수 있다. 일 실시예에서, 패킷은 (예를 들어, 네트워트(405)와 같은 네트워크를 통해) 적어도 하나의 송신기로부터 적어도 하나의 수신기로 송신되는 하나 이상의 전기 신호들에 의해 인코딩될 수 있는 하나 이상의 심볼들 및/또는 값들의 시퀀스일 수 있다. 예를 들어, 각 패킷은 소스 어드레스, 목적지 어드레스, 패킷 타입 등과 같은 패킷을 라우팅 및/또는 처리하는데 이용될 수 있는 각종 정보를 포함하는 헤더를 가질 수 있다. 또한, 각 패킷은 그 패킷이 컴퓨터 네트워크(예를 들어, 네트워크(405))를 통해 각종 컴퓨팅 디바이스들 간에서 전송하고 있는 원시 데이터(raw data)(또는 컨텐츠)를 포함하는 페이로드를 가질 수도 있다.
일 실시예에서, 애플리케이션(434)은 O/S(432)를 이용하여, 예를 들어, 디바이스 드라이버(436)를 통해 시스템(400)의 각종 컴포넌트들과 통신할 수 있다. 따라서, 디바이스 드라이버(436)는 예를 들어, 칩셋(406)을 통해 O/S(432)와 네트워크 어댑터(430) 간의 통신 인터페이스, 또는 시스템(400)에 커플링되는 다른 I/O 디바이스들 간의 통신 인터페이스를 제공하는 네트워크 어댑터(430) 특정 명령들을 포함할 수 있다.
일 실시예에서, O/S(432)는 네트워크 프로토콜 스택을 포함할 수 있다. 프로토콜 스택은 일반적으로 네트워크(405)를 통해 전송되는 패킷들을 처리하기 위해 실행될 수 있는 절차들 또는 프로그램들의 세트를 지칭하며, 여기서 이 패킷들은 지정된 프로토콜을 따를 수 있다. 예를 들어, TCP/IP(Transport Control Protocol/Internet Protocol) 패킷들은 TCP/IP 스택을 사용하여 처리될 수 있다. 디바이스 드라이버(436)는 예를 들어, 프로토콜 스택을 통해 처리될, 메모리(412)의 버퍼들을 나타낼 수 있다.
네트워크(405)는 임의의 타입의 컴퓨터 네트워크를 포함할 수 있다. 네트워크 어댑터(430)는 직접 메모리 액세스(direct memory access; DMA) 엔진을 더 포함할 수 있으며, 이것은 사용 가능한 디스크립터(descriptor)들에 할당되는 (예를 들어, 메모리(412)에 저장된) 버퍼들에 패킷들을 기록함으로써, 네트워크(405)를 통해 데이터를 송신 및/또는 수신한다. 또한, 네트워크 어댑터(430)는 네트워크 어댑터 컨트롤러를 포함할 수 있으며, 이것은 어댑터 관련 동작들을 수행하는 로직(예를 들어, 하나 이상의 프로그래머블 프로세서들)을 포함할 수 있다. 일 실시예에서, 어댑터 컨트롤러는 MAC(media access control) 컴포넌트일 수 있다. 네트워크 어댑터(430)는 (예를 들어, 하나 이상의 캐시(들) 및/또는 메모리(412)를 참조하여 설명한 다른 메모리 타입들을 포함하는) 임의의 타입의 휘발성/비휘발성 메모리와 같은 메모리를 더 포함할 수 있다.
도 5는 일 실시예에 따른, 포인트-투-포인트(point-to-point; PtP) 구성으로 배열된 컴퓨팅 시스템(500)을 도시한 것이다. 특히, 도 5는 프로세서들, 메모리, 및 입/출력 디바이스들이 다수의 포인트-투-포인트 인터페이스들에 의해 인터커넥트되는 시스템을 나타낸다. 도 1-4를 참조하여 설명한 동작들은, 시스템(500)의 하나 이상의 컴포넌트들에 의해 수행될 수 있다.
도 5에 도시된 바와 같이, 시스템(500)은 몇몇 프로세서들을 포함할 수 있으며, 명확성을 위해 이들 중의 두 개의 프로세서들(502 및 504)만을 나타낸다. 프로세서들(502 및 504) 각각은 메모리들(510 및 512)과의 통신을 가능하게 하는 로컬 메모리 컨트롤러 허브(Memory Controller Hub; MCH)(506 및 508)를 포함할 수 있다. 메모리들(510 및/또는 512)은 도 5의 메모리(512)를 참조하여 설명한 것들과 같은 각종 데이터를 저장할 수 있다. 도 5에 나타낸 바와 같이, 프로세서들(502 및 504)(또는 칩셋(520), I/O 디바이스들(543) 등과 같은 시스템(500)의 다른 컴포넌트들)은, 또한 도 1-4를 참조하여 설명한 것들과 같은 하나 이상의 캐시(들)를 포함할 수 있다.
일 실시예에서, 프로세서들(502 및 504)은 도 5를 참조하여 설명한 프로세서들(502) 중의 하나일 수 있다. 프로세서들(502 및 504)은 각각, PtP 인터페이스 회로들(516 및 518)을 사용하여 포인트-투-포인트(PtP) 인터페이스(514)를 통해 데이터를 교환할 수 있다. 또한, 프로세서들(502 및 504) 각각은 포인트-투-포인트 인터페이스 회로들(526, 528, 530, 및 532)을 사용하여 개별 PtP 인터페이스들(522 및 524)을 통해 칩셋(520)과 데이터를 교환할 수 있다. 칩셋(520)은 예를 들어, PtP 인터페이스 회로(537)를 사용하여, 고-성능 그래픽 인터페이스(536)를 통해 고-성능 그래픽 회로(534)와 데이터를 더 교환할 수 있다.
적어도 하나의 실시예에서, 로직(150)은 프로세서들(502, 504) 및/또는 칩셋(520) 중의 하나 이상에서 제공될 수 있다. 그러나, 다른 실시예들은 도 5의 시스템(500) 내의, 다른 회로들, 로직 유닛들, 또는 디바이스들에 존재할 수 있다. 또한, 다른 실시예들은 도 5에 도시된 몇몇 회로들, 로직 유닛들, 또는 디바이스들 전체 걸쳐 분산될 수 있다. 예를 들어, 시스템(500)의 각종 컴포넌트들은 도 1의 로직(150)을 포함할 수 있다. 그러나, 로직(150)은, 도시된 것들을 포함하거나 제외한, 시스템(500) 전체에 걸친 위치들에서 제공될 수 있다.
칩셋(520)은 PtP 인터페이스 회로(541)를 사용하여 버스(540)와 통신할 수 있다. 버스(540)는 그것과 통신하는 하나 이상의 디바이스들, 예를 들어 버스 브리지(542) 및 I/O 디바이스들(543)을 가질 수 있다. 버스(544)를 통해, 버스 브리지(542)는 키보드/마우스(545), 통신 디바이스들(546)(예를 들어, 컴퓨터 네트워크(505)와 통신할 수 있는 모뎀들, 네트워크 인터페이스 디바이스들, 또는 다른 통신 디바이스들), 오디오 I/O 디바이스, 및/또는 데이터 스토리지 디바이스(548)와 같은 다른 디바이스들과 통신할 수 있다. 데이터 스토리지 디바이스(548)는 프로세서들(502 및/또는 504)에 의해 실행될 수 있는 코드(549)를 저장할 수 있다.
몇몇 실시예들에서, 본 명세서에 설명한 하나 이상의 컴포넌트들은 시스템 온 칩(System On Chip; SOC) 디바이스로 구현될 수 있다. 도 6은 일 실시예에 따른 SOC 패키지의 블록도를 도시한 것이다. 도 6에 도시한 바와 같이, SOC(602)는 하나 이상의 중앙 처리 장치(Central Processing Unit; CPU) 코어들(620), 하나 이상의 그래픽 프로세서 유닛(Graphics Processor Unit; GPU) 코어들(630), 입/출력(Input/Output; I/O) 인터페이스(640) 및 메모리 컨트롤러(642)를 포함한다. SOC 패키지(602)의 각종 컴포넌트들은, 다른 도면들을 참조하여 본 명세서에서 설명한 바와 같이, 인터커넥트 또는 버스에 커플링될 수 있다. 또한, SOC 패키지(602)는 다른 도면들을 참조하여 본 명세서에서 설명한 것들과 같은, 더 많거나 적은 컴포넌트들을 포함할 수 있다. 또한, SOC 패키지(620)의 각 컴포넌트는 예를 들어, 본 명세서에서 다른 도면들을 참조하여 설명한 바와 같은, 하나 이상의 다른 컴포넌트들을 포함할 수 있다. 일 실시예에서, SOC 패키지(602)(및 그의 컴포넌트들)는 하나의 반도체 디바이스로 패키징(packaging)되는 하나 이상의 집적 회로(IC) 다이 상에 제공된다.
도 6에 도시된 바와 같이, SOC 패키지(602)는 메모리 컨트롤러(642)를 통해 (다른 도면들을 참조하여 본 명세서에서 설명한 메모리와 유사하거나 동일할 수 있는) 메모리(660)에 커플링된다. 일 실시예에서, 메모리(660)(또는 그 일부)는 SOC 패키지(602) 상에서 통합될 수 있다.
I/O 인터페이스(640)는 예를 들어, 다른 도면들을 참조하여 본 명세서에서 설명한 바와 같이, 인터커넥트 및/또는 버스를 통해 하나 이상의 I/O 디바이스들(670)에 커플링될 수 있다. I/O 디바이스(들)(670)은 키보드, 마우스, 터치패드, 디스플레이, 이미지/비디오 캡처 디바이스(예를 들어, 카메라 또는 캠코더/비디오 레코더), 터치 스크린, 스피커 등 중의 하나 이상을 포함할 수 있다. 또한, SOC 패키지(602)는 일 실시예에서 로직(150)을 포함/통합할 수 있다. 대안적으로, 로직(150)은 SOC 패키지(602)의 외부에 (즉, 이산 로직으로서) 제공될 수 있다.
다음의 예들은 다른 실시예들에 관한 것이다. 예 1은 적어도 2 비트의 상태에 기초하여, 제 1 집적 회로 다이와 제 2 집적 회로 다이 사이에서 교환될 스누프 메시지(snoop message) 및 컴플리션 메시지(completion message)의 순서를 결정하는 로직을 포함하며, 상기 제 1 집적 회로 다이 및 상기 제 2 집적 회로 다이는, 제 1 인터페이스 및 제 2 인터페이스를 통해 커플링되고, 상기 스누프 메시지 및 상기 컴플리션 메시지는, 상기 제 1 인터페이스 및 상기 제 2 인터페이스 중의 적어도 하나를 통해 교환되는, 장치를 포함한다. 예 2는 예 1의 장치를 포함하며, 상기 제 1 인터페이스는, 코히어런트 CDI(Cross-Die Interface)를 이용하는 OSF(On-Die Fabric) 인터페이스를 포함한다. 예 3는 예 2의 장치를 포함하며, 상기 코히어런트 CDI는, 결합된 디바이스(attached device)와 상기 OSF 인터페이스 간의 통신을 위한 코히어런스 프로토콜을 제공한다. 예 4는 예 1의 장치를 포함하며, 상기 제 2 인터페이스는, 넌(non)-코히어런트 CDI를 포함한다. 예 5는 예 1의 장치를 포함하며, 상기 2 비트는, 스누프 에포크(snoop epoch) 비트 및 컴플리션 에포크(completion epoch) 비트를 포함한다. 예 6는 예 1의 장치를 포함하며, 상기 스누프 메시지는 어드레스를 포함하고, 상기 컴플리션 메시지는 어드레스를 포함하지 않는다. 예 7는 예 1의 장치를 포함하며, 상기 로직, 하나 이상의 프로세서 코어들을 구비한 프로세서, 및 메모리는, 동일한 통합 디바이스 상에 존재한다. 예 8는 예 1의 장치를 포함하며, 상기 제 1 인터페이스 및 상기 제 2 인터페이스 중의 적어도 하나는, 포인트-투-포인트 링크를 포함한다.
예 9는 적어도 2 비트의 상태에 기초하여, 제 1 집적 회로 다이와 제 2 집적 회로 다이 사이에서 교환될 스누프 메시지 및 컴플리션 메시지의 순서를 결정하는 단계를 포함하며, 상기 제 1 집적 회로 다이 및 상기 제 2 집적 회로 다이는, 제 1 인터페이스 및 제 2 인터페이스를 통해 커플링되고, 상기 스누프 메시지 및 상기 컴플리션 메시지는, 상기 제 1 인터페이스 및 상기 제 2 인터페이스 중의 적어도 하나를 통해 교환되는, 방법을 포함한다. 예 10은 예 9의 방법을 포함하며, 상기 제 1 인터페이스는, 코히어런트 CDI(Cross-Die Interface)를 이용하는 OSF(On-Die Fabric) 인터페이스를 포함한다. 예 11은 예 10의 방법을 포함하며, 상기 코히어런트 CDI는, 결합된 디바이스와 상기 OSF 인터페이스 간의 통신을 위한 코히어런스 프로토콜을 제공하는 것을 더 포함한다. 예 12는 예 9의 방법을 포함하며, 상기 제 2 인터페이스는, 넌-코히어런트 링크 계층(non-coherent link layer)을 포함한다. 예 13은 예 9의 방법을 포함하며, 상기 2 비트는, 스누프 에포크 비트 및 컴플리션 에포크 비트를 포함한다. 예 14는 예 9의 방법을 포함하며, 상기 스누프 메시지는 어드레스를 포함하고, 상기 컴플리션 메시지는 어드레스를 포함하지 않는다.
예 15는 하나 이상의 프로세서 코어들을 구비한 프로세서; 상기 프로세서에 커플링되는 디스플레이 디바이스; 및 적어도 2 비트의 상태에 기초하여, 제 1 집적 회로 다이와 제 2 집적 회로 다이 사이에서 교환될 스누프 메시지 및 컴플리션 메시지의 순서를 결정하는 로직을 포함하며, 상기 제 1 집적 회로 다이 및 상기 제 2 집적 회로 다이는, 제 1 인터페이스 및 제 2 인터페이스를 통해 커플링되고, 상기 스누프 메시지 및 상기 컴플리션 메시지는, 상기 제 1 인터페이스 및 상기 제 2 인터페이스 중의 적어도 하나를 통해 교환되는, 시스템을 포함한다. 예 16은 예 15의 시스템을 포함하며, 상기 제 1 인터페이스는, 코히어런트 CDI(Cross-Die Interface)를 이용하는 OSF(On-Die Fabric) 인터페이스를 포함한다. 예 17은 예 16의 시스템을 포함하며, 상기 코히어런트 CDI는, 결합된 디바이스와 상기 OSF 인터페이스 간의 통신을 위한 코히어런스 프로토콜을 제공한다. 예 18은 예 15의 시스템을 포함하며, 상기 제 2 인터페이스는, 넌-코히어런트 링크 계층을 포함한다. 예 19는 예 15의 시스템을 포함하며, 상기 2 비트는, 스누프 에포크 비트 및 컴플리션 에포크 비트를 포함한다. 예 20은 예 15의 시스템을 포함하며, 상기 스누프 메시지는 어드레스를 포함하고, 상기 컴플리션 메시지는 어드레스를 포함하지 않는다. 예 21은 예 15의 시스템을 포함하며, 상기 로직, 하나 이상의 프로세서 코어들을 구비한 프로세서, 및 메모리는, 동일한 통합 디바이스 상에 존재한다. 예 22는 예 15의 시스템을 포함하며, 상기 제 1 인터페이스 및 상기 제 2 인터페이스 중의 적어도 하나는, 포인트-투-포인트 링크를 포함한다.
예 23은 하나 이상의 인스트럭션들을 포함하는 컴퓨터-판독가능한 매체로서, 상기 인스트럭션들은, 프로세서 상에서 실행될 경우, 적어도 2 비트의 상태에 기초하여, 제 1 집적 회로 다이와 제 2 집적 회로 다이 사이에서 교환될 스누프 메시지 및 컴플리션 메시지의 순서를 결정하도록 하는 하나 이상의 동작들을 수행하도록 상기 프로세서를 설정하고, 상기 제 1 집적 회로 다이 및 상기 제 2 집적 회로 다이는, 제 1 인터페이스 및 제 2 인터페이스를 통해 커플링되고, 상기 스누프 메시지 및 상기 컴플리션 메시지는, 상기 제 1 인터페이스 및 상기 제 2 인터페이스 중의 적어도 하나를 통해 교환되는, 컴퓨터-판독가능한 매체를 포함한다. 예 24는 예 23의 컴퓨터-판독가능한 매체를 포함하며, 상기 제 1 인터페이스는, 코히어런트 CDI(Cross-Die Interface)를 이용하는 OSF(On-Die Fabric) 인터페이스를 포함한다. 예 25는 예 24의 컴퓨터-판독가능한 매체를 포함하며, 상기 프로세서 상에서 실행될 경우, 상기 코히어런트 CDI로 하여금, 결합된 디바이스와 상기 OSF 인터페이스 간의 통신을 위한 코히어런스 프로토콜을 제공하게 하는 하나 이상의 동작들을 수행하도록 상기 프로세서를 설정하는, 하나 이상의 인스트럭션들을 더 포함한다.
예 26는 임의의 상기 예에 기재된 방법을 수행하는 수단을 포함하는 장치를 포함한다.
예 27은, 실행될 경우, 임의의 상기 예에 기재된 방법을 구현하거나 또는 장치를 구현하는 머신-판독가능한 인스트럭션들을 포함하는 머신-판독가능한 스토리지를 포함한다.
다양한 실시예들에서, 예를 들어, 도 1-6를 참조하여 본 명세서에서 설명된 동작들은 하드웨어(예를 들면, 회로), 소프트웨어, 펌웨어, 마이크로코드, 또는 이들의 조합들로 구현될 수 있으며, 이것은 예를 들어, 본 명세서에서 설명된 프로세스를 수행하도록 컴퓨터를 프로그래밍하는데 사용되는 인스트럭션들(또는 소프트웨어 절차들)을 저장한 유형의 (예를 들면, 비-일시적) 머신-판독가능한 또는 (예를 들면, 비-일시적) 컴퓨터-판독가능한 매체를 포함하는, 컴퓨터 프로그램 제품으로서 제공될 수 있다. 또한, 용어 "로직"은, 예를 들어, 소프트웨어, 하드웨어, 또는 소프트웨어와 하드웨어의 조합들을 포함할 수 있다. 머신-판독가능한 매체는, 도 1-6에 대하여 설명한 것들과 같은 스토리지 디바이스를 포함할 수 있다. 또한, 이러한 컴퓨터-판독가능한 매체는 컴퓨터 프로그램 제품으로서 다운로드될 수도 있으며, 이 프로그램은 통신 링크(예를 들면, 버스, 모뎀, 또는 네트워크 연결)를 통해 반송파 또는 그 밖의 전파 매체의 데이터 신호들을 통하여, 원격 컴퓨터(예를 들면, 서버)로부터 요청 컴퓨터(예를 들면, 클라이언트)로 전송될 수 있다.
본 명세서에서 "하나의 실시예" 또는 "일 실시예"의 지칭은, 그 실시예와 함께 설명된 특정한 특징, 구조 또는 특성이 적어도 일 구현에 포함될 수 있음을 의미한다. 본 명세서의 여러 곳의 "일 실시예에서"라는 문구의 표현은, 동일한 실시예를 모두 참조하거나 참조하지 않을 수도 있다.
또한, 상세한 설명 및 청구범위에서는, 용어 "커플링된" 및 "연결된"과 그 파생어들이 사용될 수 있다. 몇몇 실시예들에서, "연결된"은 둘 이상의 요소들이 서로 직접 물리적 접촉하거나 전기적 접촉한다는 것을 나타내는데 사용될 수 있다. "커플링된"은 둘 이상의 요소들이 직접 물리적 접촉하거나 전기적 접촉한다는 것을 의미할 수 있다. 그러나, "커플링된"은 둘 이상의 요소들이 서로 직접 접촉하지는 않지만, 계속적으로 서로 협력하거나 상호작용할 수 있음을 의미할 수 있다.
따라서, 실시예들이 구조적 특징 및/또는 방법 실행에 대하여 특정 언어로 설명되었지만, 청구되는 발명은 그 설명된 특정한 특징 또는 동작에 한정되지 않는다는 것을 이해해야 한다. 오히려, 이 특정한 특징 및 동작들은 본 청구되는 발명을 구현하는 샘플 형태로서 개시된다.
Claims (25)
- 적어도 2개의 비트의 상태에 기초하여, 제 1 집적 회로 다이와 제 2 집적 회로 다이 사이에서 교환될 스누프 메시지(snoop message) 및 컴플리션 메시지(completion message)의 순서를 결정하는 로직을 포함하며,
상기 제 1 집적 회로 다이 및 상기 제 2 집적 회로 다이는 제 1 인터페이스 및 제 2 인터페이스를 통해 커플링되고,
상기 스누프 메시지 및 상기 컴플리션 메시지는 상기 제 1 인터페이스 및 상기 제 2 인터페이스 중의 적어도 하나를 통해 교환되는
장치. - 제 1 항에 있어서,
상기 제 1 인터페이스는 코히어런트 CDI(coherent Cross-Die Interface)를 이용하는 OSF(On-Die System Fabric) 인터페이스를 포함하는
장치. - 제 2 항에 있어서,
상기 코히어런트 CDI는 결합된 디바이스(attached device)와 상기 OSF 인터페이스 간의 통신을 위한 코히어런스 프로토콜(coherence protocol)을 제공하는
장치. - 제 1 항에 있어서,
상기 제 2 인터페이스는 넌(non)-코히어런트 CDI를 포함하는
장치. - 제 1 항에 있어서,
상기 2개의 비트는 스누프 에포크(snoop epoch) 비트 및 컴플리션 에포크(completion epoch) 비트를 포함하는
장치. - 제 1 항에 있어서,
상기 스누프 메시지는 어드레스를 포함하고, 상기 컴플리션 메시지는 어드레스를 포함하지 않는
장치. - 제 1 항에 있어서,
상기 로직, 하나 이상의 프로세서 코어들을 구비한 프로세서, 및 메모리는 동일한 통합 디바이스 상에 존재하는
장치. - 제 1 항에 있어서,
상기 제 1 인터페이스 및 상기 제 2 인터페이스 중의 적어도 하나는 포인트-투-포인트 링크를 포함하는
장치. - 적어도 2개의 비트의 상태에 기초하여, 제 1 집적 회로 다이와 제 2 집적 회로 다이 사이에서 교환될 스누프 메시지 및 컴플리션 메시지의 순서를 결정하는 단계를 포함하며,
상기 제 1 집적 회로 다이 및 상기 제 2 집적 회로 다이는 제 1 인터페이스 및 제 2 인터페이스를 통해 커플링되고,
상기 스누프 메시지 및 상기 컴플리션 메시지는 상기 제 1 인터페이스 및 상기 제 2 인터페이스 중의 적어도 하나를 통해 교환되는
방법. - 제 9 항에 있어서,
상기 제 1 인터페이스는 코히어런트 CDI(coherent Cross-Die Interface)를 이용하는 OSF(On-Die System Fabric) 인터페이스를 포함하는
방법. - 제 10 항에 있어서,
상기 코히어런트 CDI가 결합된 디바이스와 상기 OSF 인터페이스 간의 통신을 위한 코히어런스 프로토콜을 제공하는 단계를 더 포함하는
방법. - 제 9 항에 있어서,
상기 제 2 인터페이스는 넌-코히어런트 링크 계층(non-coherent link layer)을 포함하는
방법. - 제 9 항에 있어서,
상기 2개의 비트는 스누프 에포크 비트 및 컴플리션 에포크 비트를 포함하는
방법. - 제 9 항에 있어서,
상기 스누프 메시지는 어드레스를 포함하고, 상기 컴플리션 메시지는 어드레스를 포함하지 않는
방법. - 하나 이상의 프로세서 코어들을 구비한 프로세서와,
상기 프로세서에 커플링되는 디스플레이 디바이스와,
적어도 2개의 비트의 상태에 기초하여, 제 1 집적 회로 다이와 제 2 집적 회로 다이 사이에서 교환될 스누프 메시지 및 컴플리션 메시지의 순서를 결정하는 로직을 포함하며,
상기 제 1 집적 회로 다이 및 상기 제 2 집적 회로 다이는 제 1 인터페이스 및 제 2 인터페이스를 통해 커플링되고,
상기 스누프 메시지 및 상기 컴플리션 메시지는 상기 제 1 인터페이스 및 상기 제 2 인터페이스 중의 적어도 하나를 통해 교환되는
시스템. - 제 15 항에 있어서,
상기 제 1 인터페이스는 코히어런트 CDI(coherent Cross-Die Interface)를 이용하는 OSF(On-Die System Fabric) 인터페이스를 포함하는
시스템. - 제 16 항에 있어서,
상기 코히어런트 CDI는 결합된 디바이스와 상기 OSF 인터페이스 간의 통신을 위한 코히어런스 프로토콜을 제공하는
시스템. - 제 15 항에 있어서,
상기 제 2 인터페이스는 넌-코히어런트 링크 계층을 포함하는
시스템. - 제 15 항에 있어서,
상기 2개의 비트는 스누프 에포크 비트 및 컴플리션 에포크 비트를 포함하는
시스템. - 제 15 항에 있어서,
상기 스누프 메시지는 어드레스를 포함하고, 상기 컴플리션 메시지는 어드레스를 포함하지 않는
시스템. - 제 15 항에 있어서,
상기 로직, 하나 이상의 프로세서 코어들을 구비한 프로세서, 및 메모리는 동일한 통합 디바이스 상에 존재하는
시스템. - 제 15 항에 있어서,
상기 제 1 인터페이스 및 상기 제 2 인터페이스 중의 적어도 하나는 포인트-투-포인트 링크를 포함하는
시스템. - 하나 이상의 인스트럭션들을 포함하는 컴퓨터-판독가능한 매체로서,
상기 인스트럭션들은, 프로세서 상에서 실행될 경우,
적어도 2개의 비트의 상태에 기초하여, 제 1 집적 회로 다이와 제 2 집적 회로 다이 사이에서 교환될 스누프 메시지 및 컴플리션 메시지의 순서를 결정하도록 하는 하나 이상의 동작들을 수행하도록 상기 프로세서를 설정하고,
상기 제 1 집적 회로 다이 및 상기 제 2 집적 회로 다이는 제 1 인터페이스 및 제 2 인터페이스를 통해 커플링되고,
상기 스누프 메시지 및 상기 컴플리션 메시지는 상기 제 1 인터페이스 및 상기 제 2 인터페이스 중의 적어도 하나를 통해 교환되는
컴퓨터-판독가능한 매체. - 제 23 항에 있어서,
상기 제 1 인터페이스는 코히어런트 CDI(coherent Cross-Die Interface)를 이용하는 OSF(On-Die System Fabric) 인터페이스를 포함하는
컴퓨터-판독가능한 매체. - 제 24 항에 있어서,
상기 프로세서 상에서 실행될 경우, 상기 코히어런트 CDI로 하여금, 결합된 디바이스와 상기 OSF 인터페이스 간의 통신을 위한 코히어런스 프로토콜을 제공하게 하는 하나 이상의 동작들을 수행하도록 상기 프로세서를 설정하는 하나 이상의 인스트럭션들을 더 포함하는
컴퓨터-판독가능한 매체.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/582,148 | 2014-12-23 | ||
US14/582,148 US9785556B2 (en) | 2014-12-23 | 2014-12-23 | Cross-die interface snoop or global observation message ordering |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160076970A true KR20160076970A (ko) | 2016-07-01 |
KR101736460B1 KR101736460B1 (ko) | 2017-05-16 |
Family
ID=54703787
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150163072A KR101736460B1 (ko) | 2014-12-23 | 2015-11-20 | 크로스-다이 인터페이스 스누프 또는 글로벌 관측 메시지 오더링 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9785556B2 (ko) |
EP (1) | EP3037972A1 (ko) |
JP (1) | JP6092351B2 (ko) |
KR (1) | KR101736460B1 (ko) |
CN (1) | CN105718349B (ko) |
TW (1) | TWI594125B (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9785556B2 (en) | 2014-12-23 | 2017-10-10 | Intel Corporation | Cross-die interface snoop or global observation message ordering |
US20190004990A1 (en) | 2017-07-01 | 2019-01-03 | Stephen R. Van Doren | Techniques to support mulitple interconnect protocols for an interconnect |
US11593262B1 (en) * | 2018-04-25 | 2023-02-28 | Seagate Technology Llc | Garbage collection command scheduling |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5339399A (en) * | 1991-04-12 | 1994-08-16 | Intel Corporation | Cache controller that alternately selects for presentation to a tag RAM a current address latch and a next address latch which hold addresses captured on an input bus |
US5751995A (en) * | 1994-01-04 | 1998-05-12 | Intel Corporation | Apparatus and method of maintaining processor ordering in a multiprocessor system which includes one or more processors that execute instructions speculatively |
US5623628A (en) * | 1994-03-02 | 1997-04-22 | Intel Corporation | Computer system and method for maintaining memory consistency in a pipelined, non-blocking caching bus request queue |
US5535345A (en) * | 1994-05-12 | 1996-07-09 | Intel Corporation | Method and apparatus for sequencing misaligned external bus transactions in which the order of completion of corresponding split transaction requests is guaranteed |
JP3872118B2 (ja) * | 1995-03-20 | 2007-01-24 | 富士通株式会社 | キャッシュコヒーレンス装置 |
US6023747A (en) * | 1997-12-17 | 2000-02-08 | International Business Machines Corporation | Method and system for handling conflicts between cache operation requests in a data processing system |
US7010740B1 (en) * | 2001-05-17 | 2006-03-07 | Emc Corporation | Data storage system having no-operation command |
US6985972B2 (en) * | 2002-10-03 | 2006-01-10 | International Business Machines Corporation | Dynamic cache coherency snooper presence with variable snoop latency |
US20050262250A1 (en) | 2004-04-27 | 2005-11-24 | Batson Brannon J | Messaging protocol |
US7529894B2 (en) * | 2005-08-17 | 2009-05-05 | Sun Microsystems, Inc. | Use of FBDIMM channel as memory channel and coherence channel |
US20070073977A1 (en) * | 2005-09-29 | 2007-03-29 | Safranek Robert J | Early global observation point for a uniprocessor system |
US20080005484A1 (en) * | 2006-06-30 | 2008-01-03 | Joshi Chandra P | Cache coherency controller management |
US8151059B2 (en) * | 2006-11-29 | 2012-04-03 | Intel Corporation | Conflict detection and resolution in a multi core-cache domain for a chip multi-processor employing scalability agent architecture |
US7975109B2 (en) * | 2007-05-30 | 2011-07-05 | Schooner Information Technology, Inc. | System including a fine-grained memory and a less-fine-grained memory |
JP4461170B2 (ja) | 2007-12-28 | 2010-05-12 | 株式会社東芝 | メモリシステム |
US8190820B2 (en) * | 2008-06-13 | 2012-05-29 | Intel Corporation | Optimizing concurrent accesses in a directory-based coherency protocol |
US8250311B2 (en) * | 2008-07-07 | 2012-08-21 | Intel Corporation | Satisfying memory ordering requirements between partial reads and non-snoop accesses |
US8205111B2 (en) * | 2009-01-02 | 2012-06-19 | Intel Corporation | Communicating via an in-die interconnect |
US8074131B2 (en) * | 2009-06-30 | 2011-12-06 | Intel Corporation | Generic debug external connection (GDXC) for high integration integrated circuits |
US8751714B2 (en) * | 2010-09-24 | 2014-06-10 | Intel Corporation | Implementing quickpath interconnect protocol over a PCIe interface |
US8554851B2 (en) * | 2010-09-24 | 2013-10-08 | Intel Corporation | Apparatus, system, and methods for facilitating one-way ordering of messages |
US8538922B2 (en) * | 2010-10-11 | 2013-09-17 | International Business Machines Corporation | Nondisruptive overflow avoidance of tuple validity timestamps in temporal database systems |
US8856456B2 (en) * | 2011-06-09 | 2014-10-07 | Apple Inc. | Systems, methods, and devices for cache block coherence |
US8495091B2 (en) * | 2011-07-01 | 2013-07-23 | Intel Corporation | Dynamically routing data responses directly to requesting processor core |
US20130111149A1 (en) * | 2011-10-26 | 2013-05-02 | Arteris SAS | Integrated circuits with cache-coherency |
US20140040561A1 (en) * | 2012-07-31 | 2014-02-06 | Futurewei Technologies, Inc. | Handling cache write-back and cache eviction for cache coherence |
DE112013005093T5 (de) | 2012-10-22 | 2015-10-22 | Intel Corporation | Hochleistungszusammenschaltungsbitübertragungsschicht |
US20140114928A1 (en) | 2012-10-22 | 2014-04-24 | Robert Beers | Coherence protocol tables |
US9785556B2 (en) | 2014-12-23 | 2017-10-10 | Intel Corporation | Cross-die interface snoop or global observation message ordering |
-
2014
- 2014-12-23 US US14/582,148 patent/US9785556B2/en active Active
-
2015
- 2015-11-06 TW TW104136689A patent/TWI594125B/zh not_active IP Right Cessation
- 2015-11-16 JP JP2015223743A patent/JP6092351B2/ja active Active
- 2015-11-19 EP EP15195503.6A patent/EP3037972A1/en not_active Ceased
- 2015-11-20 KR KR1020150163072A patent/KR101736460B1/ko active IP Right Grant
- 2015-11-23 CN CN201510819454.6A patent/CN105718349B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
KR101736460B1 (ko) | 2017-05-16 |
US9785556B2 (en) | 2017-10-10 |
US20160179673A1 (en) | 2016-06-23 |
TWI594125B (zh) | 2017-08-01 |
EP3037972A1 (en) | 2016-06-29 |
CN105718349B (zh) | 2019-03-29 |
JP6092351B2 (ja) | 2017-03-08 |
JP2016119066A (ja) | 2016-06-30 |
TW201635149A (zh) | 2016-10-01 |
CN105718349A (zh) | 2016-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3037976B1 (en) | Enhanced data bus invert encoding for or chained buses | |
EP3140748B1 (en) | Interconnect systems and methods using hybrid memory cube links | |
KR101661259B1 (ko) | 저전력 부분 폭 고속 링크 상태에서 나갈 때의 고속 디스큐 | |
US20160091959A1 (en) | Efficient power management of uart interface | |
JP2017525065A (ja) | Sfenceを用いずに最適化されたpio書込みシーケンスを用いるパケット送信 | |
US8225069B2 (en) | Control of on-die system fabric blocks | |
US20150341260A1 (en) | Managing sideband routers in on-die system fabric | |
US10459860B2 (en) | EMI mitigation on high-speed lanes using false stall | |
US20160116959A1 (en) | Device power management state transition latency advertisement for faster boot time | |
EP4235441A1 (en) | System, method and apparatus for peer-to-peer communication | |
KR101736460B1 (ko) | 크로스-다이 인터페이스 스누프 또는 글로벌 관측 메시지 오더링 | |
US8495091B2 (en) | Dynamically routing data responses directly to requesting processor core | |
KR101845465B1 (ko) | 듀얼 전압 데이터 전송을 이용한 메시 성능 향상 | |
US20200192842A1 (en) | Memory request chaining on bus | |
US9489333B2 (en) | Adaptive termination scheme for low power high speed bus | |
US20150058524A1 (en) | Bimodal functionality between coherent link and memory expansion | |
US20150188797A1 (en) | Adaptive admission control for on die interconnect | |
US11487695B1 (en) | Scalable peer to peer data routing for servers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
GRNT | Written decision to grant |