KR20200100163A - 오더링되는 대역폭을 개선하기 위한 캔슬 및 리플레이 프로토콜 기법 - Google Patents

오더링되는 대역폭을 개선하기 위한 캔슬 및 리플레이 프로토콜 기법 Download PDF

Info

Publication number
KR20200100163A
KR20200100163A KR1020207021412A KR20207021412A KR20200100163A KR 20200100163 A KR20200100163 A KR 20200100163A KR 1020207021412 A KR1020207021412 A KR 1020207021412A KR 20207021412 A KR20207021412 A KR 20207021412A KR 20200100163 A KR20200100163 A KR 20200100163A
Authority
KR
South Korea
Prior art keywords
write request
coherent slave
ordering master
requests
slave unit
Prior art date
Application number
KR1020207021412A
Other languages
English (en)
Other versions
KR102452303B1 (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 KR20200100163A publication Critical patent/KR20200100163A/ko
Application granted granted Critical
Publication of KR102452303B1 publication Critical patent/KR102452303B1/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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0824Distributed directories, e.g. linked lists of caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/364Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

오더링된 요청들에 대한 캔슬 및 리플레이 메커니즘을 구현하기 위한 시스템들, 장치들 및 방법들이 개시된다. 시스템은 적어도 오더링 마스터, 메모리 제어기, 상기 메모리 제어기에 결합되는 코히렌트 슬레이브 및 상기 오더링 마스터 유닛 및 상기 코히렌트 슬레이브 유닛에 결합되는 인터커넥트 패브릭을 포함한다. 상기 오더링 마스터는 메모리로의 경로 상에 상기 코히렌트 슬레이브로 포워딩되는 기록 요청을 생성한다. 상기 코히렌트 슬레이브는 모든 처리 노드로 무효화 프로브들을 보낸 다음 상기 기록 요청의 타겟이 되는 데이터의 모든 캐싱된 카피가 무효화되었을 때 상기 기록 요청이 전역에 보인다는 표시를 상기 오더링 마스터로 보낸다. 전역에 보인다는 표시를 수신하는 것에 응답하여, 오더링 마스터는 타이머를 시작한다. 모든 더 오래된 요청이 전역에 보이게 되기 전에 타이머가 만료된다면, 기록 요청은 패브릭에서의 포워드 진행을 보장하고 가능한 교착 상태 시나리오를 피하기 위해 캔슬 및 리플레이된다.

Description

오더링되는 대역폭을 개선하기 위한 캔슬 및 리플레이 프로토콜 기법
PCIe(Peripheral Component Interconnect Express)는 안정적인 데이터 전송을 위한 고대역폭 인터커넥트 프로토콜을 제공하는 고속 직렬 컴퓨터 확장 버스 표준이다. 메모리, 입력/출력(I/O) 및 구성 데이터와 같은 다양한 유형의 데이터가 PCIe 인터페이스를 통과할 수 있다. PCIe 대역폭은 PCIe 표준의 세대들이 새로워짐에 따라 계속 증가하고 있다. 예를 들어 PCIe 4.0의 확장된 속도 모드(ESM, extended speed mode)는 초당 최대 25 Gbps의 속도로 데이터를 전송할 수 있다. 또한, 더 높은 데이터 속도를 유지하려면 점점 더 많은 메모리 채널이 필요하다. PCIe 및 다른 표준들 이를테면 CPU 저장 명령 동작들은 통상적으로 기록들이 "오더링될 것(ordered)"을 요구하므로 덜 오래된 기록들은 모든 더 오래된 기록이 프로세서 또는 I/O 에이전트에 의해 관측될 때까지 다른 프로세서들 또는 I/O 에이전트들에 의해 관측될 수 없게 된다. 이러한 오더링을 달성하려면, 통상적으로, 메모리 채널들 간 전환이 교착 상태를 피하기 위해 요청들이 전역적으로 오더링될 것을 대기해야 한다. 요청들이 전역적으로 오더링될 것을 대기하면 피크 오더링되는 대역폭이 크게 저하된다.
여기서 설명되는 방법들 및 메커니즘들의 이점들은 첨부 도면들과 함께 이하의 구체적인 내용을 참조함으로써 더 잘 이해될 수 있으며, 첨부 도면들에서:
도 1은 컴퓨팅 시스템의 일 실시 예의 블록도이다.
도 2는 코어 컴플렉스의 일 실시 예의 블록도이다.
도 3은 멀티 CPU 시스템의 일 실시 예의 블록도이다.
도 4는 마스터의 일 실시 예의 블록도이다.
도 5는 캔슬 및 리플레이 메커니즘을 구현하기 위한 방법의 일 실시 예를 도시하는 개괄적인 흐름도이다.
도 6은 캔슬 및 리플레이 메커니즘을 구현하기 위한 방법의 다른 실시 예를 도시하는 개괄적인 흐름도이다.
도 7은 컴퓨팅 시스템에 대한 교착 상태 시나리오의 일 실시 예의 블록도이다.
이하의 구체적인 내용에서, 여기서 제시되는 방법들 및 메커니즘들에 대한 완전한 이해를 제공하기 위해 많은 구체적인 세부 사항이 제시된다. 그러나, 해당 기술분야의 통상의 기술자는 다양한 실시 예가 이러한 구체적인 세부 사항 없이도 실시될 수 있다는 것을 인식해야 한다. 경우에 따라서는, 주지된 구조들, 구성요소들, 신호들, 컴퓨터 프로그램 명령들 및 기술들이 본 명세서에 설명되는 접근법들을 모호하게 하는 것을 방지하기 위해 구체적으로 제시되지 않았다. 도시의 단순성 및 명료성을 위해, 도면들에 도시된 요소들은 반드시 일정한 비율로 그려진 것은 아니라는 것을 이해할 것이다. 예를 들어, 요소들 중 일부의 치수들은 그 외 다른 요소들에 비해 과장될 수 있다.
오더링되는 대역폭에 대한 캔슬 및 리플레이 메커니즘을 구현하기 위한 다양한 시스템, 장치, 방법 및 컴퓨터 판독 가능한 매체가 여기에 개시된다. 일 실시 예에서, 시스템은 적어도 복수의 처리 노드(예를 들어, 중앙 처리 유닛(CPU)), 오더링 마스터 인터커넥트 패브릭, 코히렌트 슬레이브, 프로브 필터, 메모리 제어기 및 메모리를 포함한다. 각 처리 노드는 하나 이상의 프로세싱 유닛을 포함한다. 각 처리 노드에 포함되는 처리 유닛(들)(예를 들어, 범용 처리기, 그래픽 처리 유닛(GPU), 주문형 집적 회로(ASIC), 필드 프로그램 가능 게이트 어레이(FPGA), 디지털 신호 처리기(DSP))의 유형은 실시 예에 따라 그리고 노드에 따라 달라질 수 있다. 오더링 마스터는 요청들이 오더링될 것을 요구하는 CPU 또는 I/O 디바이스(PCIe 루트 컴플렉스와 같은)와 관련되고 분산된 패브릭 내 이러한 오더리을 보장하는 것을 책임진다. 코히렌트 슬레이브는 인터커넥트 패브릭을 통해 오더링 마스터에 결합되고, 코히렌트 슬레이브는 또한 프로브 필터 및 메모리 제어기에 결합된다.
일 실시 예에서, 오더링 마스터는 메모리로의 경로 상에 코히렌트 슬레이브로 포워딩되는 기록 요청을 생성한다. 상기 코히렌트 슬레이브는 타겟이 되는 데이터의 카피들을 캐싱하는 처리 노드들로 무효화 프로브들을 전송한 다음 상기 기록 요청의 타겟이 되는 데이터의 모든 캐싱된 카피가 무효화되었을 때 상기 기록 요청이 전역에 보인다는 표시를 상기 오더링 마스터로 보낸다. 전역에 보인다는 표시를 수신하는 것에 응답하여, 오더링 마스터는 타이머를 시작한다. 모든 더 오래된 요청이 전역에 보이게 되기 전에 타이머가 만료된다면, 기록 요청은 캔슬 및 리플레이된다. 일부 실시 예에서, 기록 요청 어드레스에 종속하는 임의의 덜 오래된 요청들 또한 캔슬 및 리플레이될 것이다. 여기서 사용될 때, 기록 요청은 타겟이 되는 데이터의 모든 캐싱된 카피가 무효화되었을 때 "전역에 보이는(globally visible)" 것으로 설명된다.
이제 도 1을 참조하면, 컴퓨팅 시스템(100)의 일 실시 예의 블록도가 도시되어 있다. 일 실시 예에서, 컴퓨팅 시스템(100)은 적어도 코어 컴플렉스들(105A-N), 입력/출력(I/O) 인터페이스들(120), 버스(125), 메모리 제어기(들)(130) 및 네트워크 인터페이스(135)를 포함한다. 다른 실시 예들에서, 컴퓨팅 시스템(100)은 다른 구성요소들을 포함하고/하거나 컴퓨팅 시스템(100)은 상이하게 배열될 수 있다. 일 실시 예에서, 각 코어 컴플렉스(105A-N)는 중앙 처리 유닛들(CPU)과 같은 하나 이상의 범용 처리기를 포함한다. "코어 컴플렉스"는 여기서 "처리 노드" 또는 "CPU"로 지칭될 수도 있음이 주의된다. 일부 실시 예에서, 하나 이상의 코어 컴플렉스(105A-N)는 고도의 병렬 아키텍처를 갖는 데이터 병렬 처리기를 포함할 수 있다. 데이터 병렬 처리기들의 예들은 그래픽 처리 유닛들(GPU, graphics processing units), 디지털 신호 처리기들(DSPs, digital signal processors) 등을 포함한다. 코어 컴플렉스(105A-N) 내 각 처리기 코어는 하나 이상의 레벨의 캐시들을 갖는 캐시 서브 시스템을 포함한다. 일 실시 예에서, 각 코어 컴플렉스(105A-N)는 다수의 처리기 코어 사이에서 공유되는 캐시(예를 들어, 레벨 3(L3) 캐시)를 포함한다.
메모리 제어기(들)(130)는 코어 컴플렉스들(105A-N)에 의해 액세스 가능한 임의의 수 및 유형의 메모리 제어기를 나타낸다. 메모리 제어기(들)(130)는 임의의 수 및 유형의 메모리 디바이스(도시되지 않음)에 결합된다. 예를 들어, 메모리 제어기(들)(130)에 결합되는 메모리 디바이스(들)에서의 메모리의 유형은 동적 랜덤 액세스 메모리(DRAM, Dynamic Random Access Memory), 정적 랜덤 액세스 메모리(SRAM, Static Random Access Memory), NAND 플래시 메모리, NOR 플래시 메모리, 강유전성 랜덤 액세스 메모리(FeRAM) 또는 기타를 포함할 수 있다. I/O 인터페이스들(120)은 임의의 수 및 유형의 I/O 인터페이스들(예를 들어, PCI(peripheral component interconnect) 버스, PCI-X(PCI-Extended), PCIE(PCI Express) 버스, GBE(gigabit Ethernet) 버스, USB(universal serial bus) 버스)을 나타낸다. 다양한 유형의 주변 디바이스들이 I/O 인터페이스들(120)에 결합될 수 있다. 그러한 주변 디바이스들은 디스플레이들, 키보드들, 마우스들, 프린터들, 스캐너들, 조이스틱들 또는 그 외 다른 유형들의 게임 제어기들, 미디어 레코딩 디바이스들, 외부 저장 디바이스들, 네트워크 인터페이스 카드들 등을 포함한다(그러나, 이에 제한되지는 않는다).
다양한 실시 예에서, 컴퓨팅 시스템(100)은 컴퓨터, 랩탑, 모바일 디바이스, 게임 콘솔, 스트리밍 디바이스, 웨어러벌 디바이스 또는 임의의 다양한 다른 유형의 컴퓨팅 시스템들 또는 디바이스들일 수 있다. 컴퓨팅 시스템(100)의 구성요소들의 수는 실시 예마다 달라질 수 있음이 주의된다. 각 구성요소의 수가 도 1에 도시된 수보다 더 많거나 더 적을 수 있다. 또한 컴퓨팅 시스템(100)은 도 1에 도시되지 않은 다른 구성요소들을 포함할 수 있음이 주의된다. 추가로, 다른 실시 예들에서, 컴퓨팅 시스템(100)은 도 1에 도시된 방식과 다른 방식들로 구조화될 수 있다.
이제 도 2를 참조하면, 코어 컴플렉스(200)의 일 실시 예의 블록도가 도시되어 있다. 일 실시 예에서, 코어 컴플렉스(200)는 네 개의 처리기 코어(210A-D)를 포함한다. 다른 실시 예들에서, 코어 컴플렉스(200)는 다른 수의 처리기 코어를 포함할 수 있다. "코어 컴플렉스"는 여기서 "처리 노드" 또는 "CPU"로 지칭될 수도 있음이 주의된다. 일 실시 예에서, 코어 컴플렉스(200)의 구성요소들은 (도 1의) 코어 컴플렉스들(105A-N) 내에 포함된다.
각 처리기 코어(210A-D)는 메모리 서브 시스템(도시되지 않음)으로부터 회수되는 데이터 및 명령들을 저장하기 위한 캐시 서브 시스템을 포함한다. 예를 들어, 일 실시 예에서, 각 코어(210A-D)는 대응하는 레벨 1(L1) 캐시(215A-D)를 포함한다. 각 처리기 코어(210A-D)는 대응하는 레벨 2(L2) 캐시(220A-D)를 포함하거나 그에 결합될 수 있다. 또한, 일 실시 예에서, 코어 컴플렉스(200)는 처리기 코어들(210A-D)에 의해 공유되는 레벨 3(L3) 캐시(230)를 포함한다. L3 캐시(230)는 패브릭 및 메모리 서브 시스템에 액세스하기 위해 오더링 마스터에 결합된다. 다른 실시 예들에서, 코어 컴플렉스(200)는 다른 수의 캐시 및/또는 다른 구성들의 상이한 캐시 레벨들을 갖는 다른 유형의 캐시 서브 시스템을 포함할 수 있음이 주의된다.
이제 도 3을 참조하면, 멀티 CPU 시스템(300)의 일 실시 예의 블록도가 도시되어 있다. 일 실시 예에서, 시스템은 다수의 CPU(305A-N)를 포함한다. 시스템당 CPU 수는 실시 예마다 달라질 수 있다. 각 CPU(305A-N)는 각각 임의의 수의 코어(308A-N)를 포함할 수 있으며, 코어 수는 실시 예에 따라 달라진다. 각 CPU(305A-N)는 또한 대응하는 캐시 서브 시스템(310A-N)을 포함한다. 각 캐시 서브 시스템(310A-N)은 임의의 수의 레벨의 캐시들 및 임의의 유형의 캐시 계층 구조를 포함할 수 있다.
일 실시 예에서, 각 CPU(305A-N)는 대응하는 오더링 마스터(315A-N)에 연결된다. "오더링 마스터(ordering master)"는 여기서 사용될 때, 인터커넥트(예를 들어, 버스/패브릭(318))를 통해 흐르는 트래픽을 처리하는 에이전트로서 정의된다. 다양한 실시 예에서, 오더링 마스터는 CPU 코히렌트 마스터, 입력/출력(I/O) 마스터 또는 완전 오더링된 기록 메모리 요청들을 원하는 임의의 클라이언트에 대한 마스터일 수 있다. 일 실시 예에서, 오더링 마스터는 연결된 CPU에 대한 코히렌시를 관리하는 코히렌트 에이전트이다. 오더링 마스터는 코히렌시를 관리하기 위해, 코히렌시 관련 메시지들 및 프로브들을 수신 및 처리하고 코히렌시 관련 요청들 및 프로브들을 생성한다. "오더링 마스터"는 여기서 "오더링 마스터 유닛"으로 지칭될 수도 있음이 주의된다.
일 실시 예에서, 각 CPU(305A-N)는 대응하는 오더링 마스터(315A-N) 및 버스/패브릭(318)을 통해 코히렌트 슬레이브 쌍에 결합된다. 예를 들어, CPU(305A)는 오더링 마스터(315A) 및 버스/패브릭(318)을 통해 코히렌트 슬레이브(320A-B)에 결합된다. 여기서 사용될 때, "마스터"는 요청들을 생성하는 구성요소로 정의되고 "슬레이브"는 요청들을 서비스하는 구성요소로 정의된다. 코히렌트 슬레이브(CS, coherent slave)(320A)는 메모리 제어기(MC, memory controller)(330A)에 결합되고 코히렌트 슬레이브(320B)는 메모리 제어기(330B)에 결합된다. 코히렌트 슬레이브(320A)는 프로브 필터(PF, probe filter)(325A)에 결합되며, 프로브 필터(325A)는 메모리 제어기(330A)를 통해 액세스 가능한 메모리에 대한 시스템(300)에 캐싱되는 캐시 라인들을 갖는 메모리 영역들에 대한 엔트리들을 포함한다. 프로브 필터(325A) 및 각각의 다른 프로브 필터들은 "캐시 디렉토리"로 지칭될 수도 있음이 주의된다. 유사하게, 코히렌트 슬레이브(320B)는 프로브 필터(325B)에 결합되며, 프로브 필터(325B)는 메모리 제어기(330B)를 통해 액세스 가능한 메모리에 대한 시스템(300)에 캐싱되는 캐시 라인들을 갖는 메모리 영역들에 대한 엔트리들을 포함한다. CPU당 두 개의 메모리 제어기를 갖는 예는 단지 일 실시 예를 나타냄이 주의된다. 다른 실시 예들에서, 각 CPU(305A-N)는 두 개 이외에 다른 수의 메모리 제어기에 연결될 수 있음이 이해되어야 한다.
버스/패브릭(318)은 또한 루트 컴플렉스(355)를 통해 엔드포인트(360)에 결합되는 오더링 마스터(315P)에 결합된다. 오더링 마스터(315P)는 입력/출력(I/O) 엔드포인트들로부터 버스/패브릭(318)으로의 연결을 제공하는 임의의 수의 오더링 마스터를 나타낸다. 루트 컴플렉스(355)는 I/O 계층의 루트이고 CPU들(305A-N) 및 메모리를 (버스/패브릭(318) 및 오더링 마스터(315P)를 통해) 엔드포인트(360)와 같은 I/O 시스템들에 결합한다. 엔드 포인트(360)는 루트 컴플렉스(355)에 직접 또는 스위치(도시되지 않음)를 통해 결합되는 임의의 수 및 유형의 주변 장치들(예를 들어, I/O 디바이스, 네트워크 인터페이스 제어기, 디스크 제어기)을 나타낸다. 일 실시 예에서, 엔드포인트(360)는 PCIe 인터커넥트 링크를 통해 루트 컴플렉스(355)에 결합된다. 임의의 수의 다른 엔드포인트가 또한 루트 컴플렉스(355)에 결합될 수 있고, 일부 실시 예는 다수의 루트 컴플렉스(355)를 버스/패브릭(318)에 접속된 독립적인 오더링 마스터(315P)로 인스턴스화할 수 있다. 또한, 다른 실시 예들에서 버스/패브릭(318)으로부터 도면을 모호하게 하는 것을 피하기 위해 도시되지 않은 다른 구성요소들로의 다른 연결들이 있을 수 있음이 주의된다. 예를 들어, 다른 실시 예에서, 버스/패브릭(318)은 임의의 수의 다른 I/O 인터페이스들 및 I/O 디바이스들에 대한 연결들을 포함한다.
CPU(305A)와 유사한 구성에서, CPU(305N)는 오더링 마스터(315N) 및 버스/패브릭(318)을 통해 코히렌트 슬레이브들(335A-B)에 결합된다. 코히렌트 슬레이브(335A)는 메모리 제어기(350A)를 통해 메모리에 결합되고, 코히렌트 슬레이브(335A)는 또한 메모리 제어기(350A)를 통해 액세스 가능한 메모리에 대응하는 캐시 라인들의 코히렌시를 관리하기 위해 프로브 필터(345A)에 결합된다. 코히렌트 슬레이브(335B)는 프로브 필터(345B)에 결합되고 코히렌트 슬레이브(335B)는 메모리 제어기(365B)를 통해 메모리에 결합된다. "코히렌트 슬레이브(coherent slave)"는 여기서 사용될 때, 대응하는 메모리 제어기를 타겟으로 하는 수신된 요청들 및 프로브들을 처리함으로써 코히렌시를 관리하는 에이전트로서 정의된다. "코히렌트 슬레이브"는 여기서 "코히렌트 슬레이브 유닛"으로 지칭될 수도 있음이 주의된다. 또한, "프로브(probe)"는 여기서 사용될 때, 캐시들이 데이터의 블록의 카피를 갖는지 결정하고 선택적으로 캐시가 데이터의 블록을 어느 상태로 두어야 하는지 나타내기 위해 코히렌시 포인트로부터 컴퓨터 시스템에서의 하나 이상의 캐시로 전달되는 메시지로서 정의된다.
일 실시 예에서, 소정의 오더링 마스터(315)는 대응하는 CPU(305) 또는 엔드포인트(360)로부터 판독 및 기록 메모리 요청들을 수신하도록 구성된다. "기록 메모리 요청"은 여기서 "기록 요청" 또는 "기록"으로 지칭될 수도 있다. 유사하게, "판독 메모리 요청"은 여기서 "판독 요청" 또는 "판독"으로 지칭될 수도 있다. 소정의 오더링 마스터(315)가 대응하는 CPU(305) 또는 엔드포인트(360)로부터 기록 요청을 수신할 때, 소정의 오더링 마스터(315)는 타겟이 되는 메모리 제어기 및 메모리 디바이스의 코히렌트 슬레이브로 대응하는 데이터 없이 기록 요청을 전달하도록 구성된다. 소정의 오더링 마스터(315)는 타겟이 되는 코히렌트 슬레이브로 데이터 없이 기록 요청을 기록 명령으로 보내면서 기록 데이터를 버퍼링한다.
소정의 오더링 마스터(315)가 코히렌트 슬레이브로부터 기록 요청이 전역에 보인다는 표시를 수신할 때, 소정의 오더링 마스터(315)는 기록 요청에 대한 타이머를 시작한다. 일 실시 예에서, 전역에 보인다는 표시는 타겟 달성(target done) 메시지이다. 타이머가 만료되기 전에 소정의 오더링 마스터(315)에 큐잉된 모든 더 오래된 미처리 요청이 이미 전역에 보인다면, 소정의 오더링 마스터(315)는 기록 요청이 커밋 될 준비가 되었다는 표시를 코히렌트 슬레이브로 보낸다. 일 실시 예에서, 기록 요청이 이제 전역에 보인다는 표시는 소스 완료(source done)(또는 SrcDone) 메시지이다.
타이머가 만료될 때 적어도 하나의 더 오래된 요청이 아직 전역에 보이지 않는 경우, 소정의 오더링 마스터(315)는 기록 요청을 캔슬한다. 그 다음, 소정의 오더링 마스터(315)는 코히렌트 슬레이브로 기록 요청을 다시 보냄으로써 기록 요청을 리플레이한다. 타이머가 만료될 때 기록 요청을 캔슬 및 리플레이함으로써, 더 오래된 요청이 아직 전역에 보이지 않는 경우, 이는 시스템(300)에 교착 상태를 방지하는 것에 도움이 된다. 또한, 캔슬 및 리플레이 메커니즘은 오더링 마스터들(315A-N)이 이전 요청들이 전역에 오더링될 것을 대기하지 않고 패브릭(318) 상에 판독 및 기록 요청들을 발행하게 한다.
이제 도 4를 참조하면, 오더링 마스터(400)의 일 실시 예의 블록도가 도시되어 있다. 일 실시 예에서, (도 3의) 오더링 마스터들(315A-N)은 오더링 마스터(400)의 로직을 포함한다. 오더링 마스터(400)는 적어도 제어 유닛(410), 요청 큐(420) 및 기록 데이터 버퍼(430)를 포함한다. 제어 유닛(410)은 요청 큐(420), 기록 데이터 버퍼(430), 로컬 CPU(도시되지 않음) 또는 메모리 요청들을 수신하기 위한 하나 이상의 엔드포인트(들), 및 메모리 요청들을 임의의 수의 코히렌트 슬레이브로 전달하기 위한 상호 연결 패브릭(도시되지 않음)에 결합된다. 제어 유닛(410)은 소프트웨어, 하드웨어 및/또는 펌웨어의 임의의 적절한 조합을 사용하여 구현될 수 있다.
일 실시 예에서, 제어 유닛(410)이 로컬 CPU 또는 엔드포인트로부터 메모리 요청을 수신할 때, 제어 유닛(410)은 요청에 대한 요청 큐(420)에 엔트리를 생성한다. 일 실시 예에서, 요청 큐(420)의 각 엔트리는 타이머 필드, 요청 유형 필드, 어드레스 필드, 전역에 보이는 필드 및 선택적으로 하나 이상의 다른 필드를 포함한다. 제어 유닛(410)은 수신된 요청을 대응하는 코히렌트 슬레이브로 포워딩하도록 구성된다. 기록 요청들에 대해, 제어 유닛(410)은 기록 코히렌트 슬레이브로 기록 명령을 데이터 없이 보내도록 구성된다. 제어 유닛(410)이 기록 요청이 전역에 보인다는 표시를 코히렌트 슬레이브로부터 수신할 때, 제어 유닛(410)은 요청 큐(420)에서의 엔트리와 연관된 타이머를 시작한다. 일 실시 예에서, 기준 클록은 소정의 엔트리에서 타이머를 감소시키기 위해 이용된다. 기준 클록의 클록 주파수는 실시 예에 따라 달라질 수 있다.
일 실시 예에서, 요청 큐(420)는 요청이 수신되었던 순서로 요청들을 저장한다. 다시 말해, 요청 큐(420)에서의 요청들은 가장 오래된 것부터 가장 오래되지 않은 것 순서로 저장되며, 엔트리들은 마지막 엔트리가 채워질 때 요청 큐(420)의 시작에 감긴다. 이러한 실시 예에서, 제1 포인터는 가장 오래되지 않은 엔트리를 가리킬 수 있고 제2 포인터는 가장 오래된 엔트리를 가리킬 수 있다. 다른 실시 예에서, 요청 큐(420)의 엔트리들은 다른 엔트리들과 비교한 상대적 에이지를 나타내는 에이지 필드를 포함할 수 있다. 다른 실시 예들에서, 미처리 요청들의 상대적 에이지들을 트랙킹하기 위한 다른 기술들이 가능하고 고려된다.
소정의 기록 요청 엔트리에 대한 타이머가 만료되고, 전역에 보이지 않는 적어도 하나의 더 오래된 요청이 있다면, 제어 유닛(410)은 기록 요청을 캔슬하도록 구성된다. 일 실시 예에서, 제어 유닛(410)은 소스 완료(또는 SrcDone) 메시지를 캔슬 비트 세트와 코히렌트 슬레이브로 보냄으로써 기록 요청을 캔슬한다. 다른 실시 예들에서, 제어 유닛(410)은 다른 유형들의 메시지들 또는 신호들을 이용하여 기록 요청을 캔슬할 수 있다. 또한, 제어 유닛(410)은 임의의 덜 오래된 요청이 캔슬된 기록 요청 어드레스에 종속하는지(즉, 동일한 어드레스를 타겟으로 하는지) 확인한다. 일부 실시 예에서, 임의의 덜 오래된 요청들이 캔슬된 기록 요청 어드레스에 종속한다면, 제어 유닛(410)은 이러한 덜 오래된 요청들 또한 캔슬한다. 기록 요청(및 선택적으로, 임의의 덜 오래된 종속 요청들)을 캔슬한 후, 제어 유닛(410)은 코히렌트 슬레이브로 기록 요청(및 선택적으로, 임의의 덜 오래된 종속 요청들)을 다시 보냄으로써 기록 요청(및 선택적으로, 임의의 덜 오래된 종속 요청들)을 리플레이한다.
이제 도 5를 참조하면, 캔슬 및 리플레이 프로브 메커니즘을 구현하기 위한 방법(500)의 일 실시 예가 도시되어 있다. 이 실시 예에서의 단계들 및 도 6에서의 단계들은 논의를 위해, 순차적인 순서로 도시되어 있다. 그러나, 설명되는 방법들의 다양한 실시 예에서, 설명되는 요소들 중 하나 이상의 요소가 동시에, 도시된 것과 상이한 순서로 또는 완전히 생략됨이 주의된다. 그 외 다른 추가 요소들이 또한 목적하는 대로 수행된다. 여기에 설명된 임의의 다양한 시스템 또는 장치가 방법(500)을 구현하도록 구성된다.
오더링 마스터는 인터커넥트 패브릭을 통해 코히렌트 슬레이브로 대응하는 데이터 없이 기록 요청을 전달한다(블록 505). 요청을 수신하는 것에 응답하여, 코히렌트 슬레이브는 기록 요청에 의해 타겟이 되는 데이터의 임의의 캐싱된 카피들을 무효화하기 위해 처리 노드들로 무효화 요청들을 전송한다(블록 510). 위에서 언급된 바와 같이, 다양한 실시 예에서, 프로브 필터는 어느 노드들 또는 디바이스들이 데이터의 카피들을 캐싱하고 있는지를 나타내는 엔트리들을 포함한다. 처리 노드들로부터 프로브 응답들을 수신하는 것(예를 들어, 캐시 라인의 무효화를 확인하는 것 그리고/또는 임의의 변형 데이터를 리턴하는 것 중 어느 하나)에 응답하여, 코히렌트 슬레이브는 기록 요청이 현재 전역에 보인다는 표시를 오더링 마스터로 보낸다(블록 515). 일 실시 예에서, 기록 요청이 이제 전역에 보인다는 표시는 타겟 달성(또는 TgtDone) 메시지이다.
코히렌트 슬레이브로부터 기록 요청이 현재 전역에 보인다는 표시를 수신하는 것에 응답하여, 오더링 마스터는 기록 요청에 대한 타이머를 시작한다(블록 520). 타이머의 지속 기간은 실시 예에 따라 달라질 수 있다. 일부 실시 예에서, 타이머의 지속 기간은 프로그램 가능하다. 타이머 만료 이전에 기록 요청보다 오래된 모든 요청이 전역에 보인다면(조건 블록 525, "예" 분기), 오더링 마스터는 기록 요청이 커밋될 수 있다는 표시를 데이터와 함께 코히렌트 슬레이브로 보낸다(블록 530). 일 실시 예에서, 이러한 표시는 기록 요청의 데이터를 또한 포함하는 소스 완료(또는 SrcDone) 메시지이다. 그 다음 코히렌트 슬레이브는 기록 요청을 커밋한다(블록 535). 여기서 사용될 때, 기록 요청 "커밋"은 메모리에서의 타겟이 되는 위치에 기록 요청의 데이터를 기록하는 것으로 정의된다. 일 실시 예에서, 코히렌트 슬레이브는 기록 요청의 데이터를 하나 이상의 처리 노드로부터 프로브 응답을 통해 수신되었던 임의의 변형 데이터와 병합한다. 블록 535 이후, 방법(500)은 종료된다.
타이머 만료 이전에 기록 요청보다 오래된 임의의 요청이 전역에 보이지 않는다면(조건 블록 525, "아니오" 분기), 오더링 마스터는 기록 요청을 캔슬한다(블록 540). 일 실시 예에서, 오더링 마스터는 소스 완료(또는 SrcDone) 메시지를 캔슬 비트 세트와 보냄으로써 기록 요청을 캔슬한다. 그 다음, 오더링 마스터는 코히렌트 슬레이브로 기록 요청을 다시 보냄으로써 기록 요청을 리플레이한다(블록 545). 또한, 코히렌트 슬레이브는 선택적으로 프로브 응답을 통해 수신되었던 임의의 변형 데이터를 다시 기록한다(블록 550). 블록 550 이후, 방법(500)은 종료된다.
이제 도 6을 참조하면, 캔슬 및 리플레이 프로브 메커니즘을 구현하기 위한 방법(600)의 다른 실시 예가 도시되어 있다. 적어도 하나의 더 오래된 요청이 전역에 보이게 되기 전에 타이머 만료에 기인하여 기록 요청이 캔슬된다(블록 605). 기록 요청이 캔슬되는 것에 응답하여, 오더링 마스터는 임의의 덜 오래된 요청들이 캔슬된 기록 요청 어드레스에 종속하는지 확인한다(조건 블록 610). 임의의 덜 오래된 요청들이 캔슬된 기록 요청 어드레스에 종속한다면(조건 블록 610, "예" 분기), 오더링 마스터는 또한 캔슬된 기록 요청 어드레스에 종속하는 덜 오래된 요청(들)을 캔슬한다(블록 615). 그 다음, 오더링 마스터는 또한 기록 요청 및 기록 요청 어드레스에 종속하는 캔슬된 덜 오래된 요청(들)을 리플레이한다(블록 620). 블록 620 이후, 방법(600)은 종료된다. 어떠한 덜 오래된 요청도 캔슬된 기록 요청 어드레스에 종속하지 않는다면(조건 블록 610, "아니오" 분기), 오더링 마스터는 또한 기록 요청만 리플레이한다(블록 625). 블록 625 이후, 방법(600)은 종료된다.
이제 도 7을 참조하면, 컴퓨팅 시스템(700)에 대한 교착 상태 시나리오의 일 실시 예의 블록도가 도시되어 있다. 일 실시 예에서, 오더링 마스터들은 그것들의 기록들에 대한 커밋 표시들을 에이지 순서로 제공해야 하고 코히렌트 슬레이브들은 어드레스 매칭 요청들을 에이지 순서로 실행해야 한다. 이러한 실시 예의 맥락 내에서 테이블(740)은 오더링 마스터(710) 및 오더링 마스터(715)가 연이어 기록들을 발행하는 일례를 도시한다. 테이블(740)에 제시된 바와 같이, 오더링 마스터(710)는 기록 A 다음 기록 B를 발행하고, 오더링 마스터(715)는 기록 B 다음 기록 A를 발행한다. 본 논의의 목적을 위해, 어드레스 A(A에 대한 기록들의 타겟이 되는)는 코히렌트 슬레이브(725)에 속하고 어드레스 B(B에 대한 기록들의 타겟이 되는)는 코히렌트 슬레이브(730)에 속한다고 가정된다. 또한 본 논의의 목적을 위해 A 및 B에 대한 기록들이 패브릭(720)에서 교차하는 것으로 가정된다. "교차"에 대한 기록들의 쌍은 여기서 사용될 때, 쌍의 덜 오래된 기록이 쌍의 더 오래된 기록보다 이전에 코히렌트 슬레이브에 도착함을 의미한다. 예를 들어, 일 실시 예에서, 오더링 마스터(710)는 코히렌트 슬레이브(730)에 더 가깝고 오더링 마스터(715)는 코히렌트 슬레이브(725)에 더 가깝기 때문에 기록들은 패브릭(720)에서 교차할 수 있다.
기록 요청들이 테이블(745)에 제시된 타이밍에 따라 코히렌트 슬레이브(725) 및 코히렌트 슬레이브(730)에 의해 수신되는 경우, 이는 시스템(700)에 대한 교착 상태를 초래할 것이다. 테이블(725)에 제시된 바와 같이, 코히렌트 슬레이브(725)는 오더링 마스터(715)에 의한 A에 대한 기록 다음 오더링 마스터(710)에 의한 A에 대한 기록을 수신한다. 또한, 코히렌트 슬레이브(730)는 오더링 마스터(710)에 의한 B에 대한 기록 다음 오더링 마스터(715)에 의한 B에 대한 기록을 수신한다. 따라서, 이러한 요청들의 타이밍에 기초하여, 코히렌트 슬레이브(725)는 오더링 마스터(715)에 의한 A에 대한 기록에 대해 타겟 완료 메시지를 발행하지만 오더링 마스터(715)에 있어서 A에 대한 기록은 덜 오래된 동작이다. 오더링 마스터(715)는 그것이 코히렌트 슬레이브(730)에서 어드레스 종속성에 기인하여 블록킹되는 B에 대한 그것의 기록에 대해 타겟 완료 메시지를 수신할 때까지 커밋 표시를 줄 수 없다. 또한, 코히렌트 슬레이브(730)는 오더링 마스터(710)에 의한 B에 대한 기록에 대해 타겟 완료 메시지를 발행하지만 오더링 마스터(710)에 있어서 B에 대한 이러한 기록은 덜 오래된 동작이다. 오더링 마스터(710)는 그것이 코히렌트 슬레이브(725)에서 어드레스 대속성에 기인하여 블록킹되는 A에 대한 그것의 기록에 대해 타겟 완료 메시지를 수신할 때까지 커밋 표시를 줄 수 없다. 오더링 마스터들(710 및 715) 양자에서 덜 오래된 트랜잭션들을 캔슬 및 리플레이하면 이러한 시나리오로 인한 교착 상태가 풀린다.
다양한 실시 예에서, 여기에 설명된방법들 및/또는 메커니즘들을 구현하기 위해 소프트웨어 어플리케이션의 프로그램 명령들이 사용된다. 예를 들어, 범용 또는 전용 처리기에 의해 실행 가능한 프로그램 명령들이 고려된다. 다양한 실시 예에서, 그러한 프로그램 명령들은 고급 프로그래밍 언어로 표현될 수 있다. 다른 실시 예들에서, 프로그램 명령들은 고급 프로그래밍 언어로부터 이진, 중간 또는 다른 형태로 컴파일링될 수 있다. 대안적으로, 하드웨어의 거동 또는 설계를 설명하는 프로그램 명령들이 작성될 수 있다. 그러한 프로그램 명령들은 C와 같은 고급 프로그래밍 언어로 표현될 수 있다.  대안적으로는, Verilog와 같은 하드웨어 설계 언어(HDL)가 사용될 수 있다. 다양한 실시 예에서, 프로그램 명령들은 임의의 다양한 비일시적 컴퓨터 판독 가능한 저장 매체 상에 저장된다. 저장 매체는 프로그램 실행을 위해 컴퓨팅 시스템에 프로그램 명령들을 제공하기 위해 사용 동안 컴퓨팅 시스템에 의해 액세스 가능하다. 일반적으로 말하면, 그러한 컴퓨팅 시스템은 적어도 하나 이상의 메모리 및 프로그램 명령들을 실행하도록 구성된 하나 이상의 처리기를 포함한다.
전술한 실시 예들은 단지 구현의 비제한적인 예들일 뿐이라는 것이 강조되어야 한다. 상기한 개시 내용이 완전히 이해되면, 해당 기술분야의 통상의 기술자들에게는 다양한 변형 및 수정이 명백해질 것이다. 다음의 청구범위는 그러한 모든 변경 및 변형을 포함하는 것으로 해석되어야 한다.

Claims (23)

  1. 시스템으로서,
    오더링 마스터 유닛;
    코히렌트 슬레이브 유닛;
    상기 코히렌트 슬레이브 유닛에 결합되는 메모리 제어기; 및
    상기 오더링 마스터 유닛 및 상기 코히렌트 슬레이브 유닛에 결합되는 인터커넥트 패브릭을 포함하며;
    상기 시스템은:
    상기 오더링 마스터 유닛으로부터 상기 코히렌트 슬레이브 유닛으로 대응하는 데이터 없이 기록 요청을 보내도록;
    상기 코히렌트 슬레이브 유닛으로부터 상기 기록 요청이 전역에 보인다는 표시를 수신하는 것에 응답하여 상기 오더링 마스터 유닛에 의해 타이머를 시작하도록;
    적어도 하나의 더 오래된 요청이 아직 전역에 보이지 않는 동안 상기 타이머가 만료하는 것에 응답하여 상기 기록 요청를 캔슬하도록; 그리고
    상기 기록 요청을 캔슬하는 것에 응답하여 상기 오더링 마스터 유닛으로부터 상기 코히렌트 슬레이브 유닛으로 상기 기록 요청을 다시 보냄으로써 상기 기록 요청을 리플레이하도록 구성된, 시스템.
  2. 청구항 1에 있어서, 상기 오더링 마스터 유닛은 상기 코히렌트 슬레이브 유닛으로 상기 기록 요청을 식별하는 캔슬 표시를 보냄으로써 상기 기록 요청을 캔슬하도록 구성된, 시스템.
  3. 청구항 1에 있어서, 상기 오더링 마스터 유닛은 상기 타이머 만료 이전에 모든 오래된 요청이 전역에 보이는 것에 응답하여 상기 더 오래된 요청이 커밋될 수 있다는 표시를 상기 기록 요청의 상기 데이터와 함께 상기 코히렌트 슬레이브 유닛으로 보내도록 더 구성된, 시스템.
  4. 청구항 1에 있어서, 상기 오더링 마스터 유닛은 기록 요청들에 대한 커밋 표시들을 에이지 순서로 제공하도록 구성된, 시스템.
  5. 청구항 4에 있어서, 상기 코히렌트 슬레이브 유닛은 어드레스 매칭 요청들을 에이지 순서로 실행하도록 더 구성된, 시스템.
  6. 청구항 1에 있어서, 상기 코히렌트 슬레이브 유닛은 상기 기록 요청이 캔슬된 것에 응답하여 프로브 응답을 통해 수신되었던 임의의 변형 데이터를 다시 메모리에 기록하도록 구성된, 시스템.
  7. 청구항 1에 있어서, 상기 오더링 마스터 유닛은 이전 요청들이 전역에 오더링될 것을 대기하지 않고 상기 인터커넥트 패브릭으로 요청들을 발행하도록 더 구성된, 시스템.
  8. 방법으로서,
    오더링 마스터 유닛으로부터 코히렌트 슬레이브 유닛으로 대응하는 데이터 없이 기록 요청을 보내는 단계;
    상기 코히렌트 슬레이브 유닛으로부터 상기 기록 요청이 전역에 보인다는 표시를 수신하는 것에 응답하여 상기 오더링 마스터 유닛에 의해 타이머를 시작하는 단계;
    적어도 하나의 더 오래된 요청이 아직 전역에 보이지 않는 동안 상기 타이머가 만료하는 것에 응답하여 상기 기록 요청를 캔슬하는 단계; 및
    상기 기록 요청을 캔슬하는 것에 응답하여 상기 오더링 마스터 유닛으로부터 상기 코히렌트 슬레이브 유닛으로 상기 기록 요청을 다시 보냄으로써 상기 기록 요청을 리플레이하는 단계를 포함하는, 방법.
  9. 청구항 8에 있어서, 상기 코히렌트 슬레이브 유닛으로 상기 기록 요청을 식별하는 캔슬 표시를 보냄으로써 상기 기록 요청을 캔슬하는 단계를 더 포함하는, 방법.
  10. 청구항 8에 있어서, 상기 타이머 만료 이전에 모든 오래된 요청이 전역에 보이는 것에 응답하여 상기 더 오래된 요청이 커밋될 수 있다는 표시를 상기 기록 요청의 상기 데이터와 함께 상기 코히렌트 슬레이브 유닛으로 보내는 단계를 더 포함하는, 방법.
  11. 청구항 8에 있어서, 기록 요청들에 대한 커밋 표시들을 에이지 순서로 제공하는 단계를 더 포함하는, 방법.
  12. 청구항 11에 있어서, 어드레스 매칭 요청들을 에이지 순서로 실행하는 단계를 더 포함하는, 방법.
  13. 청구항 8에 있어서, 상기 기록 요청이 캔슬된 것에 응답하여 프로브 응답을 통해 수신되었던 임의의 변형 데이터를 다시 메모리에 기록하는 단계를 더 포함하는, 방법.
  14. 청구항 8에 있어서, 이전 요청들이 전역에 오더링될 것을 대기하지 않고 상기 인터커넥트 패브릭으로 요청들을 발행하는 단계를 더 포함하는, 방법.
  15. 장치로서,
    오더링 마스터 유닛; 및
    코히렌트 슬레이브 유닛을 포함하며;
    상기 장치는:
    상기 오더링 마스터 유닛으로부터 상기 코히렌트 슬레이브 유닛으로 대응하는 데이터 없이 기록 요청을 보내도록;
    상기 코히렌트 슬레이브 유닛으로부터 상기 기록 요청이 전역에 보인다는 표시를 수신하는 것에 응답하여 상기 오더링 마스터 유닛에 의해 타이머를 시작하도록;
    적어도 하나의 더 오래된 요청이 아직 전역에 보이지 않는 동안 상기 타이머가 만료하는 것에 응답하여 상기 기록 요청를 캔슬하도록; 그리고
    상기 기록 요청을 캔슬하는 것에 응답하여 상기 오더링 마스터 유닛으로부터 상기 코히렌트 슬레이브 유닛으로 상기 기록 요청을 다시 보냄으로써 상기 기록 요청을 리플레이하도록 구성된, 장치.
  16. 청구항 15에 있어서, 상기 오더링 마스터 유닛은 상기 코히렌트 슬레이브 유닛으로 상기 기록 요청을 식별하는 캔슬 표시를 보냄으로써 상기 기록 요청을 캔슬하도록 구성된, 장치.
  17. 청구항 15에 있어서, 상기 오더링 마스터 유닛은 상기 타이머 만료 이전에 모든 오래된 요청이 전역에 보이는 것에 응답하여 상기 더 오래된 요청이 커밋될 수 있다는 표시를 상기 기록 요청의 상기 데이터와 함께 상기 코히렌트 슬레이브 유닛으로 보내도록 더 구성된, 장치.
  18. 청구항 15에 있어서, 상기 오더링 마스터 유닛은 기록 요청들에 대한 커밋 표시들을 에이지 순서로 제공하도록 구성된, 장치.
  19. 청구항 18에 있어서, 상기 코히렌트 슬레이브 유닛은 어드레스 매칭 요청들을 에이지 순서로 실행하도록 구성된, 장치.
  20. 청구항 15에 있어서, 상기 오더링 마스터 유닛은 이전 요청들이 전역에 오더링될 것을 대기하지 않고 상기 인터커넥트 패브릭으로 요청들을 발행하도록 더 구성된, 장치.
  21. 청구항 1에 있어서, 상기 기록 요청은 상기 기록 요청의 타겟이 되는 데이터의 모든 캐싱된 카피가 무효화되었을 때 전역에 보이는, 시스템.
  22. 청구항 8에 있어서, 상기 기록 요청은 상기 기록 요청의 타겟이 되는 데이터의 모든 캐싱된 카피가 무효화되었을 때 전역에 보이는, 방법.
  23. 청구항 15에 있어서, 상기 기록 요청은 상기 기록 요청의 타겟이 되는 데이터의 모든 캐싱된 카피가 무효화되었을 때 전역에 보이는, 장치.
KR1020207021412A 2017-12-28 2018-09-20 오더링되는 대역폭을 개선하기 위한 캔슬 및 리플레이 프로토콜 기법 KR102452303B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/856,799 2017-12-28
US15/856,799 US10540316B2 (en) 2017-12-28 2017-12-28 Cancel and replay protocol scheme to improve ordered bandwidth
PCT/US2018/051912 WO2019133084A1 (en) 2017-12-28 2018-09-20 Cancel and replay protocol scheme to improve ordered bandwidth

Publications (2)

Publication Number Publication Date
KR20200100163A true KR20200100163A (ko) 2020-08-25
KR102452303B1 KR102452303B1 (ko) 2022-10-07

Family

ID=63858059

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207021412A KR102452303B1 (ko) 2017-12-28 2018-09-20 오더링되는 대역폭을 개선하기 위한 캔슬 및 리플레이 프로토콜 기법

Country Status (6)

Country Link
US (1) US10540316B2 (ko)
EP (1) EP3732577B1 (ko)
JP (1) JP6975338B2 (ko)
KR (1) KR102452303B1 (ko)
CN (1) CN111699476A (ko)
WO (1) WO2019133084A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11874783B2 (en) 2021-12-21 2024-01-16 Advanced Micro Devices, Inc. Coherent block read fulfillment

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070022253A1 (en) * 2005-07-21 2007-01-25 Sun Microsystems, Inc. Cache coherence protocol with speculative writestream
US20090248988A1 (en) * 2008-03-28 2009-10-01 Mips Technologies, Inc. Mechanism for maintaining consistency of data written by io devices
KR20100058678A (ko) * 2007-10-02 2010-06-03 콸콤 인코포레이티드 메모리 블록 초기화 및 카피를 수행하기 위한 메모리 제어기
US20110320743A1 (en) * 2010-06-24 2011-12-29 International Business Machines Corporation Memory ordered store system in a multiprocessor computer system
US20170004097A1 (en) * 2013-12-09 2017-01-05 Atmel Corporation System bus transaction queue reallocation

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5950226A (en) 1996-07-01 1999-09-07 Sun Microsystems, Inc. Multiprocessing system employing a three-hop communication protocol
US7295563B2 (en) 2001-10-01 2007-11-13 Advanced Micro Devices, Inc. Method and apparatus for routing packets that have ordering requirements
US20030145136A1 (en) * 2002-01-31 2003-07-31 Tierney Gregory E. Method and apparatus for implementing a relaxed ordering model in a computer system
DE10255937B4 (de) 2002-11-29 2005-03-17 Advanced Micro Devices, Inc., Sunnyvale Ordnungsregelgesteuerte Befehlsspeicherung
US7769957B2 (en) * 2007-06-22 2010-08-03 Mips Technologies, Inc. Preventing writeback race in multiple core processors
US8667144B2 (en) * 2007-07-25 2014-03-04 Qualcomm Incorporated Wireless architecture for traditional wire based protocol
US7870351B2 (en) * 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses
US9720708B2 (en) 2011-08-19 2017-08-01 Advanced Micro Devices, Inc. Data layout transformation for workload distribution
JP6244916B2 (ja) 2014-01-06 2017-12-13 富士通株式会社 演算処理装置,演算処理装置の制御方法及び情報処理装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070022253A1 (en) * 2005-07-21 2007-01-25 Sun Microsystems, Inc. Cache coherence protocol with speculative writestream
KR20100058678A (ko) * 2007-10-02 2010-06-03 콸콤 인코포레이티드 메모리 블록 초기화 및 카피를 수행하기 위한 메모리 제어기
US20090248988A1 (en) * 2008-03-28 2009-10-01 Mips Technologies, Inc. Mechanism for maintaining consistency of data written by io devices
US20110320743A1 (en) * 2010-06-24 2011-12-29 International Business Machines Corporation Memory ordered store system in a multiprocessor computer system
US20170004097A1 (en) * 2013-12-09 2017-01-05 Atmel Corporation System bus transaction queue reallocation

Also Published As

Publication number Publication date
WO2019133084A1 (en) 2019-07-04
KR102452303B1 (ko) 2022-10-07
US10540316B2 (en) 2020-01-21
CN111699476A (zh) 2020-09-22
EP3732577B1 (en) 2022-04-20
US20190205280A1 (en) 2019-07-04
JP6975338B2 (ja) 2021-12-01
EP3732577A1 (en) 2020-11-04
JP2021509207A (ja) 2021-03-18

Similar Documents

Publication Publication Date Title
KR0163231B1 (ko) 입/출력 채널 제어기, 멀티 프로세싱 시스템 및 데이타 프로세싱 방법
US20230195633A1 (en) Memory management device
KR101107391B1 (ko) 시리얼 인터페이스 버스를 통한 캐시 코히런시를 유지하기 위한 시스템 및 방법
US11782848B2 (en) Home agent based cache transfer acceleration scheme
US10970225B1 (en) Apparatus and method for handling cache maintenance operations
US9465740B2 (en) Coherence processing with pre-kill mechanism to avoid duplicated transaction identifiers
KR102452303B1 (ko) 오더링되는 대역폭을 개선하기 위한 캔슬 및 리플레이 프로토콜 기법
JP7036988B2 (ja) 領域ベースのキャッシュディレクトリスキームにおけるプライベート領域へのアクセスの加速
US20190179758A1 (en) Cache to cache data transfer acceleration techniques
KR20220062330A (ko) 시스템 프로브 인식 마지막 레벨 캐시 삽입 바이패싱
JP2022546358A (ja) サービスダーティライン追跡の品質
US8364906B2 (en) Avoiding memory access latency by returning hit-modified when holding non-modified data
JP6565729B2 (ja) 演算処理装置、制御装置、情報処理装置及び情報処理装置の制御方法
JP2023544538A (ja) キャッシュライン追い出しのためのマルチレベルキャッシュコヒーレンシプロトコル

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant