KR20180057696A - 재시도 버스 코히어런시 프로토콜 및 인-오더-응답 비-재시도 버스 코히어런시 프로토콜을 사용하는 프로세서-기반 시스템들에서의 데드록들의 방지 - Google Patents

재시도 버스 코히어런시 프로토콜 및 인-오더-응답 비-재시도 버스 코히어런시 프로토콜을 사용하는 프로세서-기반 시스템들에서의 데드록들의 방지 Download PDF

Info

Publication number
KR20180057696A
KR20180057696A KR1020187011463A KR20187011463A KR20180057696A KR 20180057696 A KR20180057696 A KR 20180057696A KR 1020187011463 A KR1020187011463 A KR 1020187011463A KR 20187011463 A KR20187011463 A KR 20187011463A KR 20180057696 A KR20180057696 A KR 20180057696A
Authority
KR
South Korea
Prior art keywords
core device
bus
response
snoop
bridge circuit
Prior art date
Application number
KR1020187011463A
Other languages
English (en)
Other versions
KR101904239B1 (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 KR20180057696A publication Critical patent/KR20180057696A/ko
Application granted granted Critical
Publication of KR101904239B1 publication Critical patent/KR101904239B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/4031Coupling between buses using bus bridges with arbitration
    • G06F13/4036Coupling between buses using bus bridges with arbitration and deadlock prevention
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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
    • 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
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache 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)
    • 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/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본원에서 개시된 양상들은, 재시도 버스 코히어런시 프로토콜 및 인-오더-응답 비-재시도 버스 코히어런시 프로토콜을 사용하는 프로세서-기반 시스템들에서 데드록들을 방지하는 것을 포함한다. 이 점과 관련하여, 재시도 버스 코히어런시 프로토콜을 구현하는 제1 코어 디바이스 및 인-오더-응답 비-재시도 버스 코히어런시 프로토콜을 구현하는 제2 코어 디바이스에 인터페이스 브릿지 회로가 통신가능하게 커플링된다. 인터페이스 브릿지 회로는 제1 코어 디바이스로부터 스누프 커맨드를 수신하며, 이 스누프 커맨드를 제2 코어 디바이스에 포워딩한다. 스누프 커맨드가 계류 중인 동안, 인터페이스 브릿지 회로는 제1 코어 디바이스와 제2 코어 디바이스 사이의 잠재적인 데드록 조건을 검출한다. 잠재적인 데드록 조건을 검출하는 것에 대한 응답으로, 인터페이스 브릿지 회로는 재시도 응답을 제1 코어 디바이스에 전송하도록 구성된다. 이는 제1 코어 디바이스가 계속해서 프로세싱하는 것을 가능하게 하여서, 잠재적인 데드록 조건을 제거한다.

Description

재시도 버스 코히어런시 프로토콜 및 인-오더-응답 비-재시도 버스 코히어런시 프로토콜을 사용하는 프로세서-기반 시스템들에서의 데드록들의 방지
[0001] 본 출원은, "AVOIDING DEADLOCKS IN PROCESSOR-BASED SYSTEMS EMPLOYING RETRY AND IN-ORDER-RESPONSE NON-RETRY BUS COHERENCY PROTOCOLS"란 명칭으로 2015년 9월 24일자로 출원된 미국 특허 출원 일련 번호 제 14/863,645호를 우선권으로 청구하며, 이 특허 출원은 그 전체가 인용에 의해 본원에 통합된다.
[0002] 본 개시내용의 기술은 일반적으로, 프로세서-기반 시스템들에서의 스누프-기반 캐시 코히어런시(snoop-based cache coherency)에 관한 것으로, 특히, 상이한 버스 코히어런시 프로토콜들을 사용하는 디바이스들 사이의 잠재적인 데드록(deadlock) 조건들을 방지하는 것에 관한 것이다.
[0003] 많은 종래의 프로세서-기반 시스템들, 이를테면 ARM 아키텍처에 기반하는 SoC(System-on-Chip)들은 다수의 코어 디바이스들(예컨대, 비-제한적인 예들로서, CPU(central processing unit)들, GPU(graphics processing unit)들, 프로세서 클러스터들, 및/또는 하드웨어 가속기들)을 포함할 수 있으며, 이러한 다수의 코어 디바이스들 각각은 공유 데이터에 액세스하고, 이 공유 데이터의 자신만의 캐시를 유지할 수 있다. 프로세서-기반 시스템 내의 각각의 코어 디바이스의 캐시가 공유 데이터의 가장 최신 버전을 포함한다는 것을 보장하기 위해, 코어 디바이스들은 캐시들 사이의 캐시 코히어런시를 유지하기 위한 버스 코히어런시 프로토콜들을 구현할 수 있다. 버스 코히어런시 프로토콜들의 한 부류는 "스누핑(snooping)"으로서 알려진 메커니즘에 기반한다. 스누핑을 사용하여, 각각의 코어 디바이스는, 다른 코어 디바이스들로부터 비롯되며, 코어 디바이스들 사이에서 공유되는 데이터를 수반하는 모든 판독 및 기록 요청들을 검출하기 위해, 버스를 모니터링한다. 코어 디바이스가, 자신이 갖는 가장 최신 데이터에 대한 판독 요청을 검출(또는 "스누핑")하면, 코어 디바이스는 요청된 데이터를 요청 코어 디바이스에 제공할 수 있다. 코어 디바이스가 버스 상에서 기록 트랜잭션을 스누핑하면, 코어 디바이스는 자신의 캐시 내의 기록된 데이터의 자신의 로컬 사본을 무효화할 수 있다. 이러한 방식으로, 공유 데이터의 일관된 뷰가 프로세서-기반 시스템 내의 코어 디바이스들 전부에게 제공될 수 있다.
[0004] 부가적인 기능성을 제공하기 위해, 프로세서-기반 시스템들은 버스 코히어런시 프로토콜들의 혼합을 지원할 수 있다. 예컨대, 프로세서-기반 시스템은, 사내의 사유(in-house proprietary) 버스 코히어런시 프로토콜들을 사용하는 사유 코어 디바이스들과 함께 특정 버스 코히어런시 프로토콜(예컨대, ACE(AXI(Advanced Extensible Interface) Coherency Extensions) 버스 코히어런시 프로토콜)을 구현하는 ARM 코어 디바이스들을 포함할 수 있다. 사유 버스 코히어런시 프로토콜은, 더 많은 수의 버스 에이전트들을 다루기 위한 더 높은 성능 및 능력을 가능하게 하는 부가된 특징들 및 요건들을 제공할 수 있다. 하나의 그러한 요건은, 스누프 커맨드를 수신하는 코어 디바이스가 시기 적절하게 스누프 응답을 제공해야 한다(즉, 이 코어 디바이스만의 아웃바운드 요청들 중 하나, 이를테면 기록 동작과 스누프 응답 사이에는 어떤 종속성도 존재하지 않아야 한다)는 것을 진술할 수 있다. 사유 버스 코히어런시 프로토콜은, 코어 디바이스가 어떤 이유로 스누프 커맨드에 서비스할 수 없으면, 코어 디바이스가 스누프 커맨드에 대한 재시도 응답을 전송하는 것을 가능하게 하는 재시도 능력을 구현함으로써, 이 요건을 만족시킬 수 있다. 그러한 사유 버스 코히어런시 프로토콜들은 "재시도 버스 코히어런시 프로토콜(retry bus coherency protocol)들"로 본원에서 지칭될 수 있다.
[0005] 그러나, 일부 프로토콜들, 이를테면 ACE 프로토콜은, 아웃고잉 응답들을 인 오더로(in order) 프로세싱하는 비교적 단순한 비-재시도 프로토콜들("인-오더-응답 비-재시도 버스 코히어런시 프로토콜(in-order-response non-retry bus coherency protocol)들"로 본원에서 또한 지칭됨)이다. 그 결과, 인-오더-응답 비-재시도 버스 코히어런시 프로토콜을 구현하는 코어 디바이스의 경우, 어드레스에 대한 스누프 커맨드와, 그 동일한 어드레스에 대한 기록 동작 사이에 종속성이 존재할 수 있다. 따라서, 동일한 코히어런시 도메인에서 재시도 버스 코히어런시 프로토콜 및 인-오더-응답 비-재시도 버스 코히어런시 프로토콜 둘 모두를 사용하는 프로세서-기반 시스템은 요청들의 데드록을 경험할 수 있다. 그에 따라서, 면적 및 전력 소비 측면에서 효율적이며, 기존의 버스 코히어런시 프로토콜들 또는 코어 디바이스들에 대한 내부 변화들을 수반하지 않는 데드록 방지 메커니즘을 제공하는 것이 바람직하다.
[0006] 본원에서 개시된 양상들은, 재시도 버스 코히어런시 프로토콜 및 인-오더-응답 비-재시도 버스 코히어런시 프로토콜을 사용하는 프로세서-기반 시스템들에서 데드록들을 방지하는 것을 포함한다. 이 점과 관련하여, 일 양상에서, 인터페이스 브릿지 회로가 (예컨대, 프로세서-기반 시스템의 일부로서) 제공된다. 인터페이스 브릿지 회로는 재시도 버스 코히어런시 프로토콜, 이를테면, 비-제한적인 예로서, 사유 프로토콜을 구현하는 제1 코어 디바이스에 통신가능하게 커플링된다. 인터페이스 브릿지 회로는 또한, 인-오더-응답 비-재시도 프로토콜(예컨대, 비-제한적인 예로서, ACE(AXI(Advanced Extensible Interface) Coherency Extensions) 버스 코히어런시 프로토콜)을 구현하는 제2 코어 디바이스에 통신가능하게 커플링된다. 인터페이스 브릿지 회로는, 제1 코어 디바이스로부터 스누프 커맨드를 수신하며, 이 스누프 커맨드를 제2 코어 디바이스에 포워딩하도록 구성된다. 스누프 커맨드가 계류 중인(pending) 동안(즉, 제2 코어 디바이스로부터 스누프 응답이 수신되기 전에), 인터페이스 브릿지 회로는 제1 코어 디바이스와 제2 코어 디바이스 사이의 잠재적인 데드록 조건을 검출한다. 일부 양상들에서, 잠재적인 데드록 조건을 검출하는 것은, 스누프 커맨드와, 제2 코어 디바이스에 의해 전송되는 후속 기록 동작 사이의 어드레스 충돌을 검출하는 것, 그리고/또는 스누프 커맨드가 스누프 응답을 기다릴 때 활성화되는 카운트다운 타이머의 만료를 검출하는 것을 포함할 수 있다. 잠재적인 데드록 조건을 검출하는 것에 대한 응답으로, 인터페이스 브릿지 회로는 재시도 응답을 제1 코어 디바이스에 전송하도록 구성된다. 이는 제1 코어 디바이스가 계속해서 프로세싱하는 것을 가능하게 하여서, 잠재적인 데드록 조건을 제거한다. 이러한 방식으로, 인터페이스 브릿지 회로는, 기존의 버스 코히어런시 프로토콜들 및 코어 디바이스들과의 호환성을 유지하고, 기존의 버스들에 대한 어떤 수정들도 수반하지 않으면서, 잠재적인 데드록 조건이 검출되자마자, 잠재적인 데드록 조건을 해결한다.
[0007] 다른 양상에서, 인터페이스 브릿지 회로가 제공된다. 인터페이스 브릿지 회로는, 재시도 버스 코히어런시 프로토콜을 구현하는 제1 코어 디바이스 및 인-오더-응답 비-재시도 버스 코히어런시 프로토콜을 구현하는 제2 코어 디바이스에 통신가능하게 커플링된다. 인터페이스 브릿지 회로는, 제1 코어 디바이스로부터 스누프 커맨드를 수신하며, 이 스누프 커맨드를 제2 코어 디바이스에 포워딩하도록 구성된다. 인터페이스 브릿지 회로는 추가로, 스누프 커맨드가 계류 중인 동안, 제1 코어 디바이스와 제2 코어 디바이스 사이의 잠재적인 데드록 조건을 검출하도록 구성된다. 인터페이스 브릿지 회로는 또한, 잠재적인 데드록 조건을 검출하는 것에 대한 응답으로, 재시도 응답을 제1 코어 디바이스에 전송하도록 구성된다.
[0008] 다른 양상에서, 프로세서-기반 시스템이 제공된다. 프로세서-기반 시스템은, 재시도 버스 코히어런시 프로토콜을 구현하는 제1 코어 디바이스 및 인-오더-응답 비-재시도 버스 코히어런시 프로토콜을 구현하는 제2 코어 디바이스를 포함한다. 프로세서-기반 시스템은, 제1 코어 디바이스 및 제2 코어 디바이스에 통신가능하게 커플링된 인터페이스 브릿지 회로를 더 포함한다. 인터페이스 브릿지 회로는, 제1 코어 디바이스로부터 스누프 커맨드를 수신하며, 이 스누프 커맨드를 제2 코어 디바이스에 포워딩하도록 구성된다. 인터페이스 브릿지 회로는 추가로, 스누프 커맨드가 계류 중인 동안, 제1 코어 디바이스와 제2 코어 디바이스 사이의 잠재적인 데드록 조건을 검출하도록 구성된다. 인터페이스 브릿지 회로는 또한, 잠재적인 데드록 조건을 검출하는 것에 대한 응답으로, 재시도 응답을 제1 코어 디바이스에 전송하도록 구성된다.
[0009] 다른 양상에서, 인터페이스 브릿지 회로가 제공된다. 인터페이스 브릿지 회로는, 재시도 버스 코히어런시 프로토콜을 구현하는 제1 코어 디바이스로부터 스누프 커맨드를 수신하기 위한 수단을 포함한다. 인터페이스 브릿지 회로는, 인-오더-응답 비-재시도 버스 코히어런시 프로토콜을 구현하는 제2 코어 디바이스에 스누프 커맨드를 포워딩하기 위한 수단을 더 포함한다. 인터페이스 브릿지 회로는 또한, 스누프 커맨드가 계류 중인 동안, 제1 코어 디바이스와 제2 코어 디바이스 사이의 잠재적인 데드록 조건을 검출하기 위한 수단을 포함한다. 인터페이스 브릿지 회로는 부가적으로, 잠재적인 데드록 조건을 검출하는 것에 대한 응답으로, 재시도 응답을 제1 코어 디바이스에 전송하기 위한 수단을 포함한다.
[0010] 다른 양상에서, 프로세서-기반 시스템들의 IP 코어들 사이의 데드록들을 방지하기 위한 방법이 제공된다. 방법은, 프로세서-기반 시스템의 인터페이스 브릿지 회로가, 재시도 버스 코히어런시 프로토콜을 구현하는 제1 코어 디바이스로부터 스누프 커맨드를 수신하는 단계를 포함한다. 방법은, 인-오더-응답 비-재시도 버스 코히어런시 프로토콜을 구현하는 제2 코어 디바이스에 스누프 커맨드를 포워딩하는 단계를 더 포함한다. 방법은 또한, 스누프 커맨드가 계류 중인 동안, 제1 코어 디바이스와 제2 코어 디바이스 사이의 잠재적인 데드록 조건을 검출하는 단계를 포함한다. 방법은 부가적으로, 잠재적인 데드록 조건을 검출하는 것에 대한 응답으로, 재시도 응답을 제1 코어 디바이스에 전송하는 단계를 포함한다.
[0011] 도 1은, 재시도 버스 코히어런시 프로토콜을 구현하는 제1 코어 디바이스와 인-오더-응답 비-재시도 버스 코히어런시 프로토콜을 구현하는 제2 코어 디바이스 사이에서 데드록들이 생길 수 있는 예시적인 프로세서-기반 시스템의 블록 다이어그램이고;
[0012] 도 2는 데드록 조건을 야기할 수 있는, 도 1의 제1 코어 디바이스와 제2 코어 디바이스 사이의 예시적인 통신 흐름들을 예시하는 블록 다이어그램이고;
[0013] 도 3은, 재시도 버스 코히어런시 프로토콜을 구현하는 제1 코어 디바이스와 인-오더-응답 비-재시도 버스 코히어런시 프로토콜을 구현하는 제2 코어 디바이스 사이의 데드록들을 방지하기 위한 인터페이스 브릿지 회로를 제공하는 예시적인 프로세서-기반 시스템의 블록 다이어그램이고;
[0014] 도 4a 및 도 4b는 코어 디바이스들 사이의 데드록들을 방지하기 위한, 도 3의 인터페이스 브릿지 회로와 코어 디바이스들 사이의 예시적인 통신 흐름들을 예시하는 블록 다이어그램들이고;
[0015] 도 5a 및 도 5b는 코어 디바이스들 사이의 데드록들을 방지하기 위한, 도 3의 인터페이스 브릿지 회로의 예시적인 동작들을 예시하는 흐름도들이며; 그리고
[0016] 도 6은 도 3의 인터페이스 브릿지 회로를 포함할 수 있는 예시적인 프로세서-기반 시스템의 블록 다이어그램이다.
[0017] 이제, 도시된 도면들을 참조하여, 본 개시내용의 몇몇 예시적인 양상들이 설명된다. "예시적인" 것이란 단어는 "예, 실례, 또는 예시로서의 역할을 하는" 것을 의미하기 위해 본원에서 사용된다. "예시적인" 것으로서 본원에서 설명된 임의의 양상이 반드시 다른 양상들보다 바람직하거나 또는 유리한 것으로서 해석되는 것은 아니다.
[0018] 본원에서 개시된 양상들은, 재시도 버스 코히어런시 프로토콜 및 인-오더-응답 비-재시도 버스 코히어런시 프로토콜을 사용하는 프로세서-기반 시스템들에서 데드록들을 방지하는 것을 포함한다. 재시도 버스 코히어런시 프로토콜 및 인-오더-응답 비-재시도 버스 코히어런시 프로토콜을 구현하는 코어 디바이스들 사이의 데드록들을 방지하기 위한 동작들을 설명하기 전에, 그러한 코어 디바이스들 사이에서 데드록 조건이 생길 수 있는 예시적인 상황들이 논의된다. 이 점과 관련하여, 도 1 및 도 2가 제공된다. 도 1이 코어 디바이스들 사이에서 데드록들이 생길 수 있는 예시적인 프로세서-기반 시스템을 예시하는 반면에, 도 2는 데드록 조건을 생기게 할 수 있는, 코어 디바이스들 사이의 예시적인 통신 흐름들을 도시한다.
[0019] 도 1에서, 데드록들이 생길 수 있는 예시적인 프로세서-기반 시스템(100)은 코어 디바이스(102) 및 코어 디바이스(104)를 포함한다. 일부 양상들에서, 코어 디바이스들(102, 104) 각각은 비-제한적인 예들로서 CPU(central processing unit), GPU(graphics processing unit), 프로세서 클러스터, 및/또는 하드웨어 가속기를 포함할 수 있다. 프로세서-기반 시스템(100)의 코어 디바이스들(102, 104)은 대응하는 캐시들(106, 108)을 포함하며, 이러한 대응하는 캐시들(106, 108)은, 공유 데이터(미도시)가 코어 디바이스들(102, 104)에 의한 더 신속한 액세스를 위해 로컬로 저장되는 것을 가능하게 한다.
[0020] 도 1의 코어 디바이스들(102, 104)은 버스들(110 및 111)과 브릿지(112)를 통해 통신가능하게 서로 커플링된다. 이러한 방식으로, 코어 디바이스들(102, 104) 각각은 다른 코어 디바이스들에 의해 전송된 판독 요청들(미도시)을 스누핑할 수 있으며, 스누프 응답들 및/또는 개입(intervention) 데이터를 제공할 수 있다. 캐시들(106, 108) 각각은, 코어 디바이스들(102, 104) 중 임의의 코어 디바이스에 의해 판독 및/또는 수정될 수 있는 공유 데이터의 로컬 사본들을 저장할 수 있다. 따라서, 캐시들(106, 108)에 저장된 공유 데이터가 코어 디바이스들(102, 104)에 의해 일관된 방식으로 보여진다는 것을 보장하기 위해, 코어 디바이스들(102, 104) 각각은 스누프-기반 버스 코히어런시 프로토콜을 구현한다. 도 1의 예에서, 코어 디바이스(102)는 재시도 버스 코히어런시 프로토콜, 이를테면 사유 버스 코히어런시 프로토콜을 구현한다. 코어 디바이스(104)는 인-오더-응답 비-재시도 버스 코히어런시 프로토콜(예컨대, 비-제한적인 예로서, ACE(AXI(Advanced Extensible Interface) Coherency Extensions) 버스 코히어런시 프로토콜)을 구현한다. 코어 디바이스(104)가 ACE 프로토콜을 구현하는 양상들에서, 코어 디바이스(104)는 어드레스 기록(AW; address write) 채널(114), 코히어런시 응답(CR; coherency response) 채널(116), 및 어드레스 코히어런시(AC; address coherency) 채널(118)을 제공할 수 있다. 어드레스 기록 채널(114)은, 기록 커맨드들을 전송하기 위해 코어 디바이스(104)에 의해 사용될 수 있다. 코히어런시 응답 채널(116)이 스누프 요청들에 답변하기 위해 코어 디바이스(104)에 의해 사용될 수 있는 반면에, 어드레스 코히어런시 채널(118)은 스누프 요청들을 전송하기 위해 코어 디바이스(104)에 의해 사용될 수 있다.
[0021] 이제, 도 2를 참조하면, 본원에서 예시된 예시적인 통신 흐름들의 결과로서, 코어 디바이스(102)와 코어 디바이스(104) 사이의 데드록 조건이 생길 수 있다. 도 2에서, 코어 디바이스(102)는 메모리 어드레스 A를 갖는 스누프 커맨드("SNOOP CMD")(200)를 브릿지(112)를 통해 코어 디바이스(104)에 전송한다. 코어 디바이스(104)가 스누프 커맨드(200)를 프로세싱하기 전에, 코어 디바이스(104)는, 또한 메모리 어드레스 A를 갖는 기록 커맨드("WRITE CMD")(202)를 브릿지(112)를 통해 코어 디바이스(102)에 비동기식으로 전송한다. 코어 디바이스(104)에 의해 구현되는 인-오더-응답 비-재시도 버스 코히어런시 프로토콜의 종속성 요건들 때문에, 엘리먼트(206)에 의해 표시된 바와 같이, 기록 커맨드(202)의 프로세싱이 완료될 때까지, 코어 디바이스(104)는 스누프 커맨드(200)에 대한 스누프 응답(204)을 생성하지 않을 것이다. 그러나, 코어 디바이스(102)가, 기록 커맨드(202)의 메모리 어드레스 A가 여전히 계류 중인 스누프 커맨드(200)와 동일하다는 것(즉, 어드레스 위험)을 검출하기 때문에, 엘리먼트(208)에 의해 표시된 바와 같이, 스누프 커맨드(200)에 대한 스누프 응답(204)이 수신될 때까지, 코어 디바이스(102)는 기록 커맨드(202)를 프로세싱하지 않을 것이다. 따라서, 코어 디바이스들(102, 104) 각각이 진행하기 전에 다른 코어 디바이스가 동작을 완료할 것을 기다리고 있으므로, 데드록 조건이 발생한다. 일부 양상들에서, 코어 디바이스(104)에 의해 프로세싱되고 있는 다른 커맨드들 뒤에 기록 커맨드(202)가 내부 버퍼(미도시)에 "갇히면(stuck)", 데드록이 또한 발생할 수 있다.
[0022] 그에 따라서, 재시도 버스 코히어런시 프로토콜 및 인-오더-응답 비-재시도 버스 코히어런시 프로토콜을 사용하는 코어 디바이스들 사이의 데드록들을 방지하기 위해, 코어 디바이스들 사이의 상호연결로서 인터페이스 브릿지 회로가 제공된다. 이 점과 관련하여, 도 3은 인터페이스 브릿지 회로(302)를 포함하는 예시적인 프로세서-기반 시스템(300)을 예시한다. 프로세서-기반 시스템(300)은 다른 엘리먼트들 중에서 알려진 디지털 로직 엘리먼트들, 반도체 회로들, 프로세싱 코어들, 및/또는 메모리 구조들 중 임의의 것, 또는 이들의 결합들을 포함할 수 있다. 본원에서 설명된 양상들은 엘리먼트들의 임의의 특정 어레인지먼트로 제한되지 않으며, 개시된 기법들은 반도체 다이들 또는 패키지들 상의 다양한 구조들 및 레이아웃들로 쉽게 확장될 수 있다.
[0023] 인터페이스 브릿지 회로(302)는 버스들(308 및 309)을 통해 코어 디바이스(304) 및 코어 디바이스(306)에 통신가능하게 커플링된다. 코어 디바이스들(304, 306) 각각은 비-제한적인 예들로서 CPU, GPU, 프로세서 클러스터, 및/또는 하드웨어 가속기를 포함할 수 있다. 일부 양상들에서, 프로세서-기반 시스템(300)이 도 3에서 예시된 것보다 더 많은 수의 코어 디바이스들을 포함할 수 있으며, 그 사이의 상호연결들은 도 3에서 도시된 연결들로부터 변할 수 있다는 것이 이해되어야 한다.
[0024] 코어 디바이스들(304, 306)은 공유 데이터(미도시)의 로컬 사본들을 저장하기 위한 대응하는 캐시들(310, 312)을 제공한다. 캐시들(310, 312)이 코어 디바이스들(304, 306) 중 임의의 코어 디바이스에 의해 판독 및/또는 수정될 수 있는 공유 데이터의 로컬 사본들을 저장할 수 있기 때문에, 코어 디바이스들(304, 306) 각각은, 공유 데이터의 일관된 뷰가 코어 디바이스들(304, 306)에게 제시되는 것을 보장하기 위해 스누프-기반 버스 코히어런시 프로토콜을 구현한다. 도 3에서, 코어 디바이스(304)가 재시도 버스 코히어런시 프로토콜(이를테면, 사유 버스 코히어런시 프로토콜)을 구현하는 반면에, 코어 디바이스(306)는 인-오더-응답 비-재시도 버스 코히어런시 프로토콜(예컨대, 비-제한적인 예로서, ACE 프로토콜)을 구현한다. 코어 디바이스(306)가 ACE 프로토콜을 구현하는 양상들에 따라, 코어 디바이스(306)는 어드레스 기록(AW; address write) 채널(314), 코히어런시 응답(CR; coherency response) 채널(316), 및 어드레스 코히어런시(AC; address coherency) 채널(318)을 제공할 수 있으며, 각각은 도 1 및 도 2의 대응하는 엘리먼트들과 동일한 기능성을 갖는다.
[0025] 인터페이스 브릿지 회로(302)는, 코어 디바이스(304)에 의해 사용되는 재시도 버스 코히어런시 프로토콜과 코어 디바이스(306)에 의해 사용되는 인-오더-응답 비-재시도 버스 코히어런시 프로토콜의 상이한 요건들이 원인인, 코어 디바이스들(304, 306) 사이의 잠재적인 데드록 조건을 검출하도록 구성된다. 일부 양상들에서, 인터페이스 브릿지 회로(302)는 코어 디바이스(304)에 의해 발행된 기록 커맨드(미도시)와 코어 디바이스(306)에 의해 발행된 스누프 커맨드(미도시) 사이의 어드레스 충돌을 검출함으로써, 잠재적인 데드록 조건을 검출할 수 있다. 일부 양상들은, 코어 디바이스(304)로부터의 스누프 커맨드가 스누프 응답을 기다릴 때 인터페이스 브릿지 회로(302)에 의해 활성화된 카운트다운 타이머(320)가 만료되었다는 것을 검출함으로써, 인터페이스 브릿지 회로(302)가 잠재적인 데드록 조건을 검출할 수 있다는 것을 제공할 수 있다. 코어 디바이스(304)로부터의 계류 중인 스누프 커맨드에 대응하는, 코어 디바이스(306)로부터의 스누프 응답(미도시)을 수신할 때, 인터페이스 브릿지 회로(302)에 의해 카운트다운 타이머(320)는 리세팅될 수 있다. 일부 양상들에서, 카운트다운 타이머(320)가 미리 세팅된 타이머 값을 사용할 수 있는 반면에, 일부 양상들에 따라, 카운트다운 타이머(320)는 프로그램에 따라 세팅되는 타이머 값을 사용하는 프로그램가능 카운트다운 타이머이다.
[0026] (예컨대, 어드레스 충돌 또는 카운트다운 타이머(320)의 만료를 검출함으로써) 잠재적인 데드록 조건을 검출하는 것에 대한 응답으로, 도 4a 및 도 4b에 대해 더욱 상세히 논의된 바와 같이, 인터페이스 브릿지 회로(302)는 재시도 응답을 코어 디바이스(304)에 전송하도록 구성된다. 이러한 방식으로, 코어 디바이스(304)가 계속해서 프로세싱할 수 있어서, 잠재적인 데드록 조건이 제거된다. 비-제한적인 예로서, 스누프 커맨드와 기록 커맨드 사이의 어드레스 충돌의 결과로서 재시도 응답이 코어 디바이스(304)에 전송될 때, 코어 디바이스(304) 및/또는 버스(308)는 계류 중인 스누프 커맨드에 대한 종속성을 해결할 수 있으며, 기록 커맨드를 프로세싱하는 것으로 진행할 수 있다. 일단 기록 커맨드가 코어 디바이스(304)에 의해 완료되면, 코어 디바이스(306)가 그런 다음, 본래 스누프 커맨드에 마음대로 응답할 수 있어서, 잠재적인 데드록 조건이 방지된다. 유사하게, 카운트다운 타이머(320)의 만료의 결과로서 재시도 응답이 코어 디바이스(304)에 전송되는 양상들에서, 코어 디바이스(304)가 계속해서 프로세싱할 수 있는 반면에, 코어 디바이스(306)는 자신의 진행 중인 동작들을 완료한다.
[0027] 도 4a 및 도 4b는 코어 디바이스들(304, 306) 사이의 데드록들을 방지하기 위한, 도 3의 인터페이스 브릿지 회로(302)와 코어 디바이스들(304, 306) 사이의 예시적인 통신 흐름들을 예시하기 위해 제공된다. 명료성을 위해서, 도 4a 및 도 4b를 설명할 때 도 3의 엘리먼트들이 참조된다. 부가적으로, 도 3의 버스(308)는 도 4a 및 도 4b로부터 생략된다.
[0028] 도 4a에서, 메모리 어드레스 A에 대한 스누프 커맨드("SNOOP CMD")(400)가 코어 디바이스(304)로부터 인터페이스 브릿지 회로(302)로 전송되며, 이 인터페이스 브릿지 회로(302)는 스누프 커맨드(400)를 코어 디바이스(306)에 포워딩한다. 일부 양상들에서, 코어 디바이스(306)는 동일한 메모리 어드레스 A에 대한 기록 커맨드("WRITE CMD")(402)를 인터페이스 브릿지 회로(302)에 전송할 수 있다. 그러한 양상들에서, 인터페이스 브릿지 회로(302)는 스누프 커맨드(400)와 기록 커맨드(402) 사이에서 어드레스 위험이 존재한다고 결정할 수 있으며, 그에 따라서, 코어 디바이스들(304, 306) 사이에서 잠재적인 데드록 조건이 존재한다고 결정할 수 있다. 일부 양상들은, 인터페이스 브릿지 회로(302)가 스누프 커맨드(400)를 수신하고, 이 스누프 커맨드(400)에 대한 스누프 응답(미도시)에 대한 그것의 기다림을 시작할 때, 카운트다운 타이머(320)가 활성화되는 것을 제공할 수 있다. 코어 디바이스(306)로부터 스누프 응답이 수신되기 전에, 카운트다운 타이머(320)가 만료되었다는 것을 인터페이스 브릿지 회로(302)가 검출할 때, 잠재적인 데드록 조건이 검출된다. 이러한 잠재적인 데드록 조건은, 코어 디바이스(306)에 의해 프로세싱되고 있는 다른 커맨드들(미도시) 뒤에 기록 커맨드(402)가 "갇히는" 상황들에서 발생할 수 있다. 코어 디바이스들(304, 306) 사이의 잠재적인 데드록 조건을 검출할 때, 인터페이스 브릿지 회로(302)는 재시도 응답(404)을 코어 디바이스(304)에 전송한다. 이러한 방식으로, 코어 디바이스(304)가 계속해서 프로세싱할 수 있어서, 잠재적인 데드록 조건이 제거된다.
[0029] 도 4b에서 볼 수 있는 바와 같이, 일부 양상들에서, 인터페이스 브릿지 회로(302)는 코어 디바이스(304)로부터의 스누프 커맨드(400)에 대응하는, 코어 디바이스(306)로부터의 스누프 응답(406)을 수신할 수 있다. 카운트다운 타이머(320)가 만료되기 전에, 스누프 응답(406)이 인터페이스 브릿지 회로(302)에 의해 수신되면, 카운트다운 타이머(320)는 리세팅될 수 있다. 잠재적인 데드록 조건이 검출되었고, 재시도 응답(404)이 코어 디바이스(304)에 전송된 후에, 스누프 응답(406)이 수신될 수 있다. 코어 디바이스(304)가 그 동안에 동일한 스누프 커맨드(400)를 재시도하면, 재시도된 스누프 커맨드(400)는, 본래 스누프 커맨드(400)가 인터페이스 브릿지 회로(302)에 의해 완료되지 않았으면, 본래 스누프 커맨드(400)와 동일한 방식으로 처리될 것이다. 스누프 응답(406)이 수정 데이터(408)(즉, "더티(dirty)" 데이터)를 포함하면, 수정 데이터(408)는 스누프 커맨드(400)에 대한 응답으로서 코어 디바이스(304)에 제공될 수 있다. 이후, 코어 디바이스(304)는 수정 데이터(408)를 사용하여 후기록 동작(미도시)을 수행할 수 있다. 그러나, 스누프 응답(406)이 수정 데이터(408)를 포함하지 않으면, 인터페이스 브릿지 회로(302)는 스누프 응답(406)을 폐기할 수 있다.
[0030] 제1 코어 디바이스(304)와 제2 코어 디바이스(306) 사이의 데드록들을 방지하기 위한, 도 3의 인터페이스 브릿지 회로(302)의 예시적인 동작들을 예시하기 위해, 도 5a 및 도 5b가 제공된다. 명료성을 위해서, 도 5a 및 도 5b를 설명할 때 도 3, 도 4a 및 도 4b의 엘리먼트들이 참조된다. 도 5a에서, 프로세서-기반 시스템(300)의 인터페이스 브릿지 회로(302)가, 재시도 버스 코히어런시 프로토콜을 구현하는 제1 코어 디바이스(304)로부터 스누프 커맨드(400)를 수신하는 것으로 동작들이 시작한다(블록(500)). 이 점과 관련하여, 인터페이스 브릿지 회로(302)는, "재시도 버스 코히어런시 프로토콜을 구현하는 제1 코어 디바이스로부터 스누프 커맨드를 수신하기 위한 수단"으로 본원에서 지칭될 수 있다. 일부 양상들에서, 제1 코어 디바이스(304)에 의해 구현되는 재시도 버스 코히어런시 프로토콜은 스누프 커맨드들에 대한 재시도 응답들을 지원하는 사유 버스 프로토콜을 포함할 수 있다.
[0031] 인터페이스 브릿지 회로(302)가 잠재적인 데드록 조건을 검출하기 위한 카운트다운 타이머(320)를 제공하는 양상들에서, 인터페이스 브릿지 회로(302)가 제1 코어 디바이스(304)로부터 스누프 커맨드(400)를 수신하고, 이 스누프 커맨드(400)에 대한 스누프 응답(406)에 대한 그것의 기다림을 시작하는 것에 대한 응답으로, 인터페이스 브릿지 회로(302)는 카운트다운 타이머(320)를 활성화할 수 있다(블록(502)). 그에 따라서, 인터페이스 브릿지 회로(302)는, "스누프 응답을 기다리는, 제1 코어 디바이스로부터의 스누프 커맨드에 대한 응답으로, 카운트다운 타이머를 활성화하기 위한 수단"으로 본원에서 지칭될 수 있다. 이후, 인터페이스 브릿지 회로(302)는, 인-오더-응답 비-재시도 버스 코히어런시 프로토콜을 구현하는, 프로세서-기반 시스템(300)의 제2 코어 디바이스(306)에 스누프 커맨드(400)를 포워딩한다(블록(504)). 따라서, 인터페이스 브릿지 회로(302)는, "인-오더-응답 비-재시도 버스 코히어런시 프로토콜을 구현하는 제2 코어 디바이스에 스누프 커맨드를 포워딩하기 위한 수단"으로 본원에서 지칭될 수 있다. 일부 양상들에 따라, 제2 코어 디바이스(306)에 의해 구현되는 인-오더-응답 비-재시도 버스 코히어런시 프로토콜은 ACE 버스 코히어런시 프로토콜을 포함할 수 있다.
[0032] 다음으로, 인터페이스 브릿지 회로(302)는, 스누프 커맨드(400)가 계류 중인 동안, 제1 코어 디바이스(304)와 제2 코어 디바이스(306) 사이의 잠재적인 데드록 조건을 검출한다(블록(506)). 이 점과 관련하여, 인터페이스 브릿지 회로(302)는, "스누프 커맨드가 계류 중인 동안, 제1 코어 디바이스와 제2 코어 디바이스 사이의 잠재적인 데드록 조건을 검출하기 위한 수단"으로 본원에서 지칭될 수 있다. 일부 양상들에서, 잠재적인 데드록 조건을 검출하기 위한 블록(506)의 동작들은, 스누프 커맨드(400)가 계류 중인 동안, 인터페이스 브릿지 회로(302)가 제2 코어 디바이스(306)로부터 기록 커맨드(402)를 수신하는 것을 포함할 수 있다(블록(508)). 그에 따라서, 인터페이스 브릿지 회로(302)는, "스누프 커맨드가 계류 중인 동안, 제2 코어 디바이스로부터 기록 커맨드를 수신하기 위한 수단"으로 본원에서 지칭될 수 있다. 이후, 인터페이스 브릿지 회로(302)는 기록 커맨드(402)와 스누프 커맨드(400) 사이의 어드레스 충돌을 검출할 수 있다(블록(510)). 따라서, 인터페이스 브릿지 회로(302)는, "기록 커맨드와 스누프 커맨드 사이의 어드레스 충돌을 검출하기 위한 수단"으로 본원에서 지칭될 수 있다. 일부 양상들은, 잠재적인 데드록 조건을 검출하기 위한 블록(506)의 동작들이, 카운트다운 타이머(320)가 만료되었다는 것을 인터페이스 브릿지 회로(302)가 검출하는 것을 포함할 수 있다는 것을 제공할 수 있다(블록(512)). 이 점과 관련하여, 인터페이스 브릿지 회로(302)는, "카운트다운 타이머가 만료되었다는 것을 검출하기 위한 수단"으로 본원에서 지칭될 수 있다.
[0033] 잠재적인 데드록 조건을 검출하는 것에 대한 응답으로, 인터페이스 브릿지 회로(302)는 재시도 응답(404)을 제1 코어 디바이스(304)에 전송한다(블록(514)). 그에 따라서, 인터페이스 브릿지 회로(302)는, "잠재적인 데드록 조건을 검출하는 것에 대한 응답으로, 재시도 응답을 제1 코어 디바이스에 전송하기 위한 수단"으로 본원에서 지칭될 수 있다. 재시도 응답(404)을 제1 코어 디바이스(304)에 전송함으로써, 인터페이스 브릿지 회로(302)는, 제1 코어 디바이스(304)가 계속해서 프로세싱하여서, 제1 코어 디바이스(304)와 제2 코어 디바이스(306) 사이의 잠재적인 데드록 조건이 제거되는 것을 가능하게 한다. 이후, 일부 양상들에서, 프로세싱은 도 5b의 블록(516)에서 재개될 수 있다.
[0034] 이제, 도 5b를 참조하면, 일부 양상들에 따른 인터페이스 브릿지 회로(302)는 제2 코어 디바이스(306)로부터 스누프 응답(406)을 수신할 수 있다(블록(516)). 따라서, 인터페이스 브릿지 회로(302)는, "제2 코어 디바이스로부터 스누프 응답을 수신하기 위한 수단"으로 본원에서 지칭될 수 있다. 제2 코어 디바이스(306)로부터 스누프 응답(406)을 수신할 때, 인터페이스 브릿지 회로(302)는 카운트다운 타이머(320)를 리세팅할 수 있다(블록(518)). 이 점과 관련하여, 인터페이스 브릿지 회로(302)는, "제2 코어 디바이스로부터 스누프 응답을 수신하는 것에 대한 응답으로, 카운트다운 타이머를 리세팅하기 위한 수단"으로 본원에서 지칭될 수 있다. 일부 양상들에서, 잠재적인 데드록 조건이 검출되었고, 재시도 응답(404)이 제1 코어 디바이스(304)에 전송된 후에, 스누프 응답(406)이 수신될 수 있다. 제1 코어 디바이스(304)가 그 동안에 동일한 스누프 커맨드(400)를 재시도하면, 재시도된 스누프 커맨드(400)는, 본래 스누프 커맨드(400)가 인터페이스 브릿지 회로(302)에 의해 완료되지 않았으면, 본래 스누프 커맨드(400)와 동일한 방식으로 처리될 것이다.
[0035] 이후, 인터페이스 브릿지 회로(302)는, 스누프 응답(406)이 제2 코어 디바이스(306)에 의해 제공된 수정 데이터(408)를 포함하는지 여부를 결정할 수 있다(블록(520)). 그에 따라서, 인터페이스 브릿지 회로(302)는, "스누프 응답이 제2 코어 디바이스에 의해 제공된 수정 데이터를 포함하는지 여부를 결정하기 위한 수단"으로 본원에서 지칭될 수 있다. 결정 블록(520)에서, 인터페이스 브릿지 회로(302)가, 스누프 응답(406)이 수정 데이터(408)를 포함한다고 결정하면, 인터페이스 브릿지 회로(302)는 후기록 동작을 위해 수정 데이터(408)를 제1 코어 디바이스(304)에 전송할 수 있다(블록(522)). 따라서, 인터페이스 브릿지 회로(302)는, "스누프 응답이 제2 코어 디바이스에 의해 제공된 수정 데이터를 포함한다고 결정하는 것에 대한 응답으로, 후기록 동작을 위해, 수정 데이터를 제1 코어 디바이스에 전송하기 위한 수단"으로 본원에서 지칭될 수 있다. 그러나, 결정 블록(520)에서, 인터페이스 브릿지 회로(302)가, 스누프 응답(406)이 수정 데이터(408)를 포함하지 않는다고 결정하면, 인터페이스 브릿지 회로(302)는 스누프 응답(406)을 폐기할 수 있다(블록(524)). 이 점과 관련하여, 인터페이스 브릿지 회로(302)는, "스누프 응답이 제2 코어 디바이스에 의해 제공된 수정 데이터를 포함하지 않는다고 결정하는 것에 대한 응답으로, 스누프 응답을 폐기하기 위한 수단"으로 본원에서 지칭될 수 있다.
[0036] 본원에서 개시된 양상들에 따른, 재시도 버스 코히어런시 프로토콜 및 인-오더-응답 비-재시도 버스 코히어런시 프로토콜을 사용하는 프로세서-기반 시스템들에서의 데드록들을 방지하는 것은, 임의의 프로세서-기반 디바이스에 제공되거나 또는 그에 통합될 수 있다. 예들은 셋 톱 박스, 엔터테인먼트 유닛, 내비게이션 디바이스, 통신 디바이스, 고정 위치 데이터 유닛, 모바일 위치 데이터 유닛, 모바일 폰, 셀룰러 폰, 스마트 폰, 태블릿, 패블릿, 컴퓨터, 휴대용 컴퓨터, 데스크톱 컴퓨터, PDA(personal digital assistant), 모니터, 컴퓨터 모니터, 텔레비전, 튜너, 라디오, 위성 라디오, 뮤직 플레이어, 디지털 뮤직 플레이어, 휴대용 뮤직 플레이어, 디지털 비디오 플레이어, 비디오 플레이어, DVD(digital video disc) 플레이어, 휴대용 디지털 비디오 플레이어, 및 자동차(이들로 제한되지 않음)를 포함한다.
[0037] 이 점과 관련하여, 도 6은 도 3에서 예시된 인터페이스 브릿지 회로(IBC; interface bridge circuit)(302)를 사용할 수 있는 프로세서-기반 시스템(600)의 예를 예시한다. 이 예에서, 프로세서-기반 시스템(600)은 도 3의 프로세서-기반 시스템(300)에 대응할 수 있다. 프로세서-기반 시스템(600)은 하나 또는 그 초과의 프로세서들(604(0)-604(X))을 각각 포함하는 하나 또는 그 초과의 CPU(central processing unit)들(602(0)-602(X))을 포함한다. CPU(들)(602(0)-602(X))는 각각 코어 디바이스들(102 및 104)에 대응할 수 있다. CPU(들)(602(0)-602(X))는 일시적으로 저장된 데이터로의 신속한 액세스를 위해 프로세서(들)(604(0)-604(X))에 커플링된 캐시 메모리(606(0)-606(X))를 가질 수 있다. CPU(들)(602(0)-602(X))는 시스템 버스(608)에 커플링되며, 프로세서-기반 시스템(600)에 포함된 마스터 및 슬레이브 디바이스들을 상호커플링할 수 있다. 잘 알려진 바와 같이, CPU(들)(602(0)-602(X))는 시스템 버스(608)를 통해 어드레스, 제어, 및 데이터 정보를 교환함으로써 이들 다른 디바이스들과 통신한다. 예컨대, CPU(들)(602(0)-602(X))는, 슬레이브 디바이스의 예로서 메모리 제어기(610)에 버스 트랜잭션 요청들을 통신할 수 있다.
[0038] 다른 마스터 및 슬레이브 디바이스들이 시스템 버스(608)에 연결될 수 있다. 도 6에서 예시된 바와 같이, 이들 디바이스들은 예들로서 메모리 시스템(612), 하나 또는 그 초과의 입력 디바이스들(614), 하나 또는 그 초과의 출력 디바이스들(616), 하나 또는 그 초과의 네트워크 인터페이스 디바이스들(618), 및 하나 또는 그 초과의 디스플레이 제어기들(620)을 포함할 수 있다. 입력 디바이스(들)(614)는 입력 키들, 스위치들, 음성 프로세서들 등(그러나, 이들에 제한되지 않음)을 포함하는 임의의 타입의 입력 디바이스를 포함할 수 있다. 출력 디바이스(들)(616)는 오디오, 비디오, 다른 시각적 표시자들 등(그러나, 이들에 제한되지 않음)을 포함하는 임의의 타입의 출력 디바이스를 포함할 수 있다. 네트워크 인터페이스 디바이스(들)(618)는, 네트워크(622)로의, 그리고 이 네트워크(622)로부터의 데이터의 교환을 허용하도록 구성된 임의의 디바이스들일 수 있다. 네트워크(622)는 유선 또는 무선 네트워크, 사설 또는 공중 네트워크, LAN(local area network), WLAN(wireless local area network), WAN(wide area network), BLUETOOTH™ 네트워크, 및 인터넷(그러나, 이들에 제한되지 않음)을 포함하는 임의의 타입의 네트워크일 수 있다. 네트워크 인터페이스 디바이스(들)(618)는, 원하는 임의의 타입의 통신 프로토콜을 지원하도록 구성될 수 있다. 메모리 시스템(612)은 하나 또는 그 초과의 메모리 유닛들(624(0-N))을 포함할 수 있다.
[0039] CPU(들)(602)는 또한, 하나 또는 그 초과의 디스플레이들(626)에 전송되는 정보를 제어하도록 시스템 버스(608)를 통해 디스플레이 제어기(들)(620)에 액세스하도록 구성될 수 있다. 디스플레이 제어기(들)(620)는 하나 또는 그 초과의 비디오 프로세서들(628)을 통해 디스플레이되도록 디스플레이(들)(626)에 정보를 전송하며, 이 하나 또는 그 초과의 비디오 프로세서들(628)은 디스플레이(들)(626)에 적절한 포맷으로 디스플레이되도록 정보를 프로세싱한다. 디스플레이(들)(626)는 CRT(cathode ray tube), LCD(liquid crystal display), 플라즈마 디스플레이 등(그러나, 이들에 제한되지 않음)을 포함하는 임의의 타입의 디스플레이를 포함할 수 있다.
[0040] 당업자들은 추가로, 본원에서 설명된 양상들이 예들로서 임의의 회로, 하드웨어 컴포넌트, IC(integrated circuit), 또는 IC 칩에서 사용될 수 있다는 것을 인식할 것이다. 본원에서 개시된 메모리는 임의의 타입 및 사이즈의 메모리일 수 있으며, 원하는 임의의 타입의 정보를 저장하도록 구성될 수 있다. 이러한 상호교환가능성을 명확히 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들은 그들의 기능성 측면에서 일반적으로 위에서 설명되었다. 그러한 기능성이 구현되는 방법은 특정 애플리케이션, 설계 선택들, 및/또는 전체 시스템 상에 부과된 설계 제약들에 따라 좌우된다. 당업자들은 설명된 기능성을 각각의 특정 애플리케이션에 대해 다양한 방식들로 구현할 수 있지만, 그러한 구현 결정들은 본 개시내용의 범위를 벗어나게 하는 것으로서 해석되지 않아야 한다.
[0041] 본원에서 개시된 양상들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 및 회로들은 프로세서, DSP(Digital Signal Processor), ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array) 또는 다른 프로그램가능 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본원에서 설명된 기능들을 수행하도록 설계된 이들의 임의의 결합으로 구현 또는 수행될 수 있다. 프로세서는 마이크로프로세서일 수 있지만, 대안적으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수 있다. 프로세서는 또한, 컴퓨팅 디바이스들의 결합(예컨대, DSP와 마이크로프로세서의 결합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 또는 그 초과의 마이크로프로세서들, 또는 임의의 다른 그러한 구성)으로서 구현될 수 있다.
[0042] 또한, 본원의 예시적인 양상들 중 임의의 양상에서 설명된 동작 단계들이 예들 및 논의를 제공하기 위해 설명된다는 것이 주목된다. 설명된 동작들은 예시된 시퀀스들 외에 많은 상이한 시퀀스들로 수행될 수 있다. 더욱이, 단일 동작 단계로 설명된 동작들이 실제로는 다수의 상이한 단계들로 수행될 수 있다. 부가적으로, 예시적인 양상들에서 논의된 하나 또는 그 초과의 동작 단계들은 결합될 수 있다. 당업자에게 용이하게 자명할 바와 같이, 흐름도 다이어그램들에서 예시된 동작 단계들이 많은 상이한 수정들의 대상일 수 있다는 것이 이해되어야 한다. 당업자들은 또한, 정보 및 신호들이 다양한 상이한 기술들 및 기법들 중의 임의의 것을 사용하여 표현될 수 있다는 것을 이해할 것이다. 예컨대, 위의 설명 전체에 걸쳐 참조될 수 있는 데이터, 명령들, 커맨드들, 정보, 신호들, 비트들, 심볼들, 및 칩들은 전압들, 전류들, 전자기파들, 자기장들 또는 자기 입자들, 광학 필드들 또는 광학 입자들, 또는 이들의 임의의 결합에 의해 표현될 수 있다.
[0043] 본 개시내용의 앞선 설명은 당업자가 본 개시내용을 사용하거나 또는 실시하는 것을 가능하게 하기 위해 제공된다. 본 개시내용에 대한 다양한 수정들은 당업자들에게 용이하게 자명할 것이며, 본원에서 정의된 일반적인 원리들은 본 개시내용의 사상 또는 범위를 벗어나지 않으면서 다른 변형들에 적용될 수 있다. 따라서, 본 개시내용은 본원에서 설명된 예들 및 설계들로 제한되는 것으로 의도되는 것이 아니라, 본원에서 개시된 원리들 및 신규한 특징들과 일치하는 가장 넓은 범위에 부합할 것이다.

Claims (21)

  1. 제1 버스 및 제2 버스에 통신가능하게 커플링된 인터페이스 브릿지 회로로서,
    재시도 버스 코히어런시 프로토콜(retry bus coherency protocol)을 구현하는 제1 코어 디바이스로부터 상기 제1 버스를 통해 스누프 커맨드(snoop command)를 수신하고;
    상기 제2 버스를 통해, 인-오더-응답 비-재시도 버스 코히어런시 프로토콜(in-order-response non-retry bus coherency protocol)을 구현하는 제2 코어 디바이스에 상기 스누프 커맨드를 포워딩하고;
    상기 스누프 커맨드가 계류 중인(pending) 동안, 상기 제1 코어 디바이스와 상기 제2 코어 디바이스 사이의 잠재적인 데드록(deadlock) 조건을 검출하며; 그리고
    상기 잠재적인 데드록 조건을 검출하는 것에 대한 응답으로, 상기 스누프 커맨드에 대응하는 재시도 응답을 상기 제1 코어 디바이스에 전송하도록
    구성되는,
    제1 버스 및 제2 버스에 통신가능하게 커플링된 인터페이스 브릿지 회로.
  2. 제1 항에 있어서,
    상기 인터페이스 브릿지 회로는,
    상기 스누프 커맨드가 계류 중인 동안, 상기 제2 코어 디바이스로부터 기록 커맨드를 수신하며; 그리고
    상기 기록 커맨드와 상기 스누프 커맨드 사이의 어드레스 충돌을 검출함으로써,
    상기 제1 코어 디바이스와 상기 제2 코어 디바이스 사이의 잠재적인 데드록 조건을 검출하도록 구성되는,
    제1 버스 및 제2 버스에 통신가능하게 커플링된 인터페이스 브릿지 회로.
  3. 제1 항에 있어서,
    카운트다운 타이머
    를 포함하며,
    상기 인터페이스 브릿지 회로는 추가로,
    상기 인터페이스 브릿지 회로가 상기 제1 코어 디바이스로부터 상기 스누프 커맨드를 수신하고, 스누프 응답을 기다리는 것에 대한 응답으로, 상기 카운트다운 타이머를 활성화하며; 그리고
    상기 제2 코어 디바이스로부터 상기 스누프 응답을 수신하는 것에 대한 응답으로, 상기 카운트다운 타이머를 리세팅하도록
    구성되며,
    상기 인터페이스 브릿지 회로는, 상기 카운트다운 타이머가 만료되었다는 것을 검출함으로써, 상기 제1 코어 디바이스와 상기 제2 코어 디바이스 사이의 잠재적인 데드록 조건을 검출하도록 구성되는,
    제1 버스 및 제2 버스에 통신가능하게 커플링된 인터페이스 브릿지 회로.
  4. 제3 항에 있어서,
    상기 카운트다운 타이머는 프로그램가능 카운트다운 타이머를 포함하는,
    제1 버스 및 제2 버스에 통신가능하게 커플링된 인터페이스 브릿지 회로.
  5. 제1 항에 있어서,
    상기 인터페이스 브릿지 회로는 추가로,
    상기 제2 코어 디바이스로부터 스누프 응답을 수신하고;
    상기 스누프 응답이 상기 제2 코어 디바이스에 의해 제공된 수정 데이터를 포함하는지 여부를 결정하고;
    상기 스누프 응답이 상기 제2 코어 디바이스에 의해 제공된 수정 데이터를 포함한다고 결정하는 것에 대한 응답으로, 후기록(writeback) 동작을 위해, 상기 수정 데이터를 상기 제1 코어 디바이스에 전송하며; 그리고
    상기 스누프 응답이 상기 제2 코어 디바이스에 의해 제공된 수정 데이터를 포함하지 않는다고 결정하는 것에 대한 응답으로, 상기 스누프 응답을 폐기하도록
    구성되는,
    제1 버스 및 제2 버스에 통신가능하게 커플링된 인터페이스 브릿지 회로.
  6. 제1 항에 있어서,
    상기 인-오더-응답 비-재시도 버스 코히어런시 프로토콜은 ACE(AXI(Advanced Extensible Interface) Coherency Extensions) 버스 코히어런시 프로토콜을 포함하는,
    제1 버스 및 제2 버스에 통신가능하게 커플링된 인터페이스 브릿지 회로.
  7. 제1 항에 있어서,
    상기 인터페이스 브릿지 회로는 IC(integrated circuit)에 통합되는,
    제1 버스 및 제2 버스에 통신가능하게 커플링된 인터페이스 브릿지 회로.
  8. 제1 항에 있어서,
    상기 인터페이스 브릿지 회로는 셋 톱 박스; 엔터테인먼트 유닛; 내비게이션 디바이스; 통신 디바이스; 고정 위치 데이터 유닛; 모바일 위치 데이터 유닛; 모바일 폰; 셀룰러 폰; 스마트 폰; 태블릿; 패블릿; 컴퓨터; 휴대용 컴퓨터; 데스크톱 컴퓨터; PDA(personal digital assistant); 모니터; 컴퓨터 모니터; 텔레비전; 튜너; 라디오; 위성 라디오; 뮤직 플레이어; 디지털 뮤직 플레이어; 휴대용 뮤직 플레이어; 디지털 비디오 플레이어; 비디오 플레이어; DVD(digital video disc) 플레이어; 휴대용 디지털 비디오 플레이어; 및 자동차로 구성된 그룹으로부터 선택되는 디바이스에 통합되는,
    제1 버스 및 제2 버스에 통신가능하게 커플링된 인터페이스 브릿지 회로.
  9. 프로세서-기반 시스템으로서,
    재시도 버스 코히어런시 프로토콜을 구현하는 제1 코어 디바이스;
    인-오더-응답 비-재시도 버스 코히어런시 프로토콜을 구현하는 제2 코어 디바이스; 및
    제1 버스를 통해 상기 제1 코어 디바이스에 통신가능하게 커플링되고, 제2 버스를 통해 상기 제2 코어 디바이스에 통신가능하게 커플링된 인터페이스 브릿지 회로
    를 포함하며,
    상기 인터페이스 브릿지 회로는,
    상기 제1 코어 디바이스로부터 상기 제1 버스를 통해 스누프 커맨드를 수신하고;
    상기 스누프 커맨드를 상기 제2 버스를 통해 상기 제2 코어 디바이스에 포워딩하고;
    상기 스누프 커맨드가 계류 중인 동안, 상기 제1 코어 디바이스와 상기 제2 코어 디바이스 사이의 잠재적인 데드록 조건을 검출하며; 그리고
    상기 잠재적인 데드록 조건을 검출하는 것에 대한 응답으로, 상기 스누프 커맨드에 대응하는 재시도 응답을 상기 제1 코어 디바이스에 전송하도록
    구성되는,
    프로세서-기반 시스템.
  10. 제1 버스 및 제2 버스에 통신가능하게 커플링된 인터페이스 브릿지 회로로서,
    재시도 버스 코히어런시 프로토콜을 구현하는 제1 코어 디바이스로부터 상기 제1 버스를 통해 스누프 커맨드를 수신하기 위한 수단;
    상기 제2 버스를 통해, 인-오더-응답 비-재시도 버스 코히어런시 프로토콜을 구현하는 제2 코어 디바이스에 상기 스누프 커맨드를 포워딩하기 위한 수단;
    상기 스누프 커맨드가 계류 중인 동안, 상기 제1 코어 디바이스와 상기 제2 코어 디바이스 사이의 잠재적인 데드록 조건을 검출하기 위한 수단; 및
    상기 잠재적인 데드록 조건을 검출하는 것에 대한 응답으로, 상기 스누프 커맨드에 대응하는 재시도 응답을 상기 제1 코어 디바이스에 전송하기 위한 수단
    을 포함하는,
    제1 버스 및 제2 버스에 통신가능하게 커플링된 인터페이스 브릿지 회로.
  11. 제10 항에 있어서,
    상기 제1 코어 디바이스와 상기 제2 코어 디바이스 사이의 잠재적인 데드록 조건을 검출하기 위한 수단은,
    상기 스누프 커맨드가 계류 중인 동안, 상기 제2 코어 디바이스로부터 기록 커맨드를 수신하기 위한 수단; 및
    상기 기록 커맨드와 상기 스누프 커맨드 사이의 어드레스 충돌을 검출하기 위한 수단
    을 포함하는,
    제1 버스 및 제2 버스에 통신가능하게 커플링된 인터페이스 브릿지 회로.
  12. 제10 항에 있어서,
    상기 인터페이스 브릿지 회로가 상기 제1 코어 디바이스로부터 상기 스누프 커맨드를 수신하고, 스누프 응답을 기다리는 것에 대한 응답으로, 카운트다운 타이머를 활성화하기 위한 수단; 및
    상기 제2 코어 디바이스로부터 상기 스누프 응답을 수신하는 것에 대한 응답으로, 상기 카운트다운 타이머를 리세팅하기 위한 수단
    을 더 포함하며,
    상기 제1 코어 디바이스와 상기 제2 코어 디바이스 사이의 잠재적인 데드록 조건을 검출하기 위한 수단은, 상기 카운트다운 타이머가 만료되었다는 것을 검출하기 위한 수단을 포함하는,
    제1 버스 및 제2 버스에 통신가능하게 커플링된 인터페이스 브릿지 회로.
  13. 제12 항에 있어서,
    상기 카운트다운 타이머는 프로그램가능 카운트다운 타이머를 포함하는,
    제1 버스 및 제2 버스에 통신가능하게 커플링된 인터페이스 브릿지 회로.
  14. 제10 항에 있어서,
    상기 제2 코어 디바이스로부터 스누프 응답을 수신하기 위한 수단;
    상기 스누프 응답이 상기 제2 코어 디바이스에 의해 제공된 수정 데이터를 포함하는지 여부를 결정하기 위한 수단;
    상기 스누프 응답이 상기 제2 코어 디바이스에 의해 제공된 수정 데이터를 포함한다고 결정하는 것에 대한 응답으로, 후기록 동작을 위해, 상기 수정 데이터를 상기 제1 코어 디바이스에 전송하기 위한 수단; 및
    상기 스누프 응답이 상기 제2 코어 디바이스에 의해 제공된 수정 데이터를 포함하지 않는다고 결정하는 것에 대한 응답으로, 상기 스누프 응답을 폐기하기 위한 수단
    을 더 포함하는,
    제1 버스 및 제2 버스에 통신가능하게 커플링된 인터페이스 브릿지 회로.
  15. 제10 항에 있어서,
    상기 인-오더-응답 비-재시도 버스 코히어런시 프로토콜은 ACE(AXI(Advanced Extensible Interface) Coherency Extensions) 버스 코히어런시 프로토콜을 포함하는,
    제1 버스 및 제2 버스에 통신가능하게 커플링된 인터페이스 브릿지 회로.
  16. 프로세서-기반 시스템들의 코어들 사이의 데드록들을 방지하기 위한 방법으로서,
    프로세서-기반 시스템의 제1 버스 및 제2 버스에 통신가능하게 커플링된 인터페이스 브릿지 회로가, 재시도 버스 코히어런시 프로토콜을 구현하는 제1 코어 디바이스로부터 상기 제1 버스를 통해 스누프 커맨드를 수신하는 단계;
    상기 제2 버스를 통해, 인-오더-응답 비-재시도 버스 코히어런시 프로토콜을 구현하는 제2 코어 디바이스에 상기 스누프 커맨드를 포워딩하는 단계;
    상기 스누프 커맨드가 계류 중인 동안, 상기 제1 코어 디바이스와 상기 제2 코어 디바이스 사이의 잠재적인 데드록 조건을 검출하는 단계; 및
    상기 잠재적인 데드록 조건을 검출하는 것에 대한 응답으로, 상기 스누프 커맨드에 대응하는 재시도 응답을 상기 제1 코어 디바이스에 전송하는 단계
    를 포함하는,
    프로세서-기반 시스템들의 코어들 사이의 데드록들을 방지하기 위한 방법.
  17. 제16 항에 있어서,
    상기 제1 코어 디바이스와 상기 제2 코어 디바이스 사이의 잠재적인 데드록 조건을 검출하는 단계는,
    상기 스누프 커맨드가 계류 중인 동안, 상기 제2 코어 디바이스로부터 기록 커맨드를 수신하는 단계; 및
    상기 기록 커맨드와 상기 스누프 커맨드 사이의 어드레스 충돌을 검출하는 단계
    를 포함하는,
    프로세서-기반 시스템들의 코어들 사이의 데드록들을 방지하기 위한 방법.
  18. 제16 항에 있어서,
    상기 인터페이스 브릿지 회로가 상기 제1 코어 디바이스로부터 상기 스누프 커맨드를 수신하고, 스누프 응답을 기다리는 것에 대한 응답으로, 카운트다운 타이머를 활성화하는 단계; 및
    상기 제2 코어 디바이스로부터 상기 스누프 응답을 수신하는 것에 대한 응답으로, 상기 카운트다운 타이머를 리세팅하는 단계
    를 더 포함하며,
    상기 제1 코어 디바이스와 상기 제2 코어 디바이스 사이의 잠재적인 데드록 조건을 검출하는 단계는, 상기 카운트다운 타이머가 만료되었다는 것을 검출하는 단계를 포함하는,
    프로세서-기반 시스템들의 코어들 사이의 데드록들을 방지하기 위한 방법.
  19. 제18 항에 있어서,
    상기 카운트다운 타이머는 프로그램가능 카운트다운 타이머를 포함하는,
    프로세서-기반 시스템들의 코어들 사이의 데드록들을 방지하기 위한 방법.
  20. 제16 항에 있어서,
    상기 제2 코어 디바이스로부터 스누프 응답을 수신하는 단계;
    상기 스누프 응답이 상기 제2 코어 디바이스에 의해 제공된 수정 데이터를 포함하는지 여부를 결정하는 단계;
    상기 스누프 응답이 상기 제2 코어 디바이스에 의해 제공된 수정 데이터를 포함한다고 결정하는 것에 대한 응답으로, 후기록 동작을 위해, 상기 수정 데이터를 상기 제1 코어 디바이스에 전송하는 단계; 및
    상기 스누프 응답이 상기 제2 코어 디바이스에 의해 제공된 수정 데이터를 포함하지 않는다고 결정하는 것에 대한 응답으로, 상기 스누프 응답을 폐기하는 단계
    를 더 포함하는,
    프로세서-기반 시스템들의 코어들 사이의 데드록들을 방지하기 위한 방법.
  21. 제16 항에 있어서,
    상기 인-오더-응답 비-재시도 버스 코히어런시 프로토콜은 ACE(AXI(Advanced Extensible Interface) Coherency Extensions) 버스 코히어런시 프로토콜을 포함하는,
    프로세서-기반 시스템들의 코어들 사이의 데드록들을 방지하기 위한 방법.
KR1020187011463A 2015-09-24 2016-09-09 재시도 버스 코히어런시 프로토콜 및 인-오더-응답 비-재시도 버스 코히어런시 프로토콜을 사용하는 프로세서-기반 시스템들에서의 데드록들의 방지 KR101904239B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/863,645 US9990291B2 (en) 2015-09-24 2015-09-24 Avoiding deadlocks in processor-based systems employing retry and in-order-response non-retry bus coherency protocols
US14/863,645 2015-09-24
PCT/US2016/050961 WO2017053086A1 (en) 2015-09-24 2016-09-09 Avoiding deadlocks in processor-based systems employing retry and in-order-response non-retry bus coherency protocols

Publications (2)

Publication Number Publication Date
KR20180057696A true KR20180057696A (ko) 2018-05-30
KR101904239B1 KR101904239B1 (ko) 2018-10-04

Family

ID=56979665

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187011463A KR101904239B1 (ko) 2015-09-24 2016-09-09 재시도 버스 코히어런시 프로토콜 및 인-오더-응답 비-재시도 버스 코히어런시 프로토콜을 사용하는 프로세서-기반 시스템들에서의 데드록들의 방지

Country Status (7)

Country Link
US (1) US9990291B2 (ko)
EP (1) EP3353660B1 (ko)
JP (1) JP6393013B1 (ko)
KR (1) KR101904239B1 (ko)
CN (1) CN108027775A (ko)
BR (1) BR112018005935A2 (ko)
WO (1) WO2017053086A1 (ko)

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996035175A2 (en) * 1995-05-02 1996-11-07 Apple Computer, Inc. Deadlock avoidance in a split-bus computer system
US6330643B1 (en) * 1998-02-17 2001-12-11 International Business Machines Corporation Cache coherency protocols with global and local posted operations
US6587930B1 (en) * 1999-09-23 2003-07-01 International Business Machines Corporation Method and system for implementing remstat protocol under inclusion and non-inclusion of L1 data in L2 cache to prevent read-read deadlock
US6487643B1 (en) * 2000-09-29 2002-11-26 Intel Corporation Method and apparatus for preventing starvation in a multi-node architecture
JP3714235B2 (ja) * 2001-11-12 2005-11-09 株式会社日立製作所 マルチプロセッサシステム
US20050120978A1 (en) 2003-11-18 2005-06-09 Tom Lalor Automated animal return system
US7275124B2 (en) 2005-02-24 2007-09-25 International Business Machines Corporation Method and system for controlling forwarding or terminating of a request at a bus interface based on buffer availability
US7275125B2 (en) 2005-02-24 2007-09-25 International Business Machines Corporation Pipeline bit handling circuit and method for a bus bridge
US7769956B2 (en) * 2005-09-07 2010-08-03 Intel Corporation Pre-coherence channel
US20070079072A1 (en) * 2005-09-30 2007-04-05 Collier Josh D Preemptive eviction of cache lines from a directory
US7529866B2 (en) * 2005-11-17 2009-05-05 P.A. Semi, Inc. Retry mechanism in cache coherent communication among agents
JP5082479B2 (ja) * 2007-02-08 2012-11-28 日本電気株式会社 データ一貫性制御システム及びデータ一貫性制御方法
CN101676887B (zh) * 2008-08-15 2012-07-25 北京北大众志微系统科技有限责任公司 一种基于ahb总线结构的总线监听方法及装置
US8626968B2 (en) * 2009-12-26 2014-01-07 Intel Corporation Inter-queue anti-starvation mechanism with dynamic deadlock avoidance in a retry based pipeline
US9280468B2 (en) 2011-10-26 2016-03-08 Qualcomm Technologies, Inc. Three channel cache-coherency socket protocol
CN104145251B (zh) * 2012-03-02 2017-06-09 Arm 有限公司 具有第一协议域和第二协议域的数据处理装置及其方法
US20130318308A1 (en) 2012-05-24 2013-11-28 Sonics, Inc. Scalable cache coherence for a network on a chip
CN102880537A (zh) * 2012-09-07 2013-01-16 浪潮电子信息产业股份有限公司 一种Cache一致性协议软件模拟验证方法
JP6139689B2 (ja) * 2012-10-22 2017-05-31 インテル・コーポレーション 装置
US9129071B2 (en) 2012-10-24 2015-09-08 Texas Instruments Incorporated Coherence controller slot architecture allowing zero latency write commit
CN103150264B (zh) * 2013-01-18 2014-09-17 浪潮电子信息产业股份有限公司 一种基于扩展型Cache Coherence协议的多级一致性域仿真验证和测试方法
US20140281236A1 (en) * 2013-03-14 2014-09-18 William C. Rash Systems and methods for implementing transactional memory
US9465763B2 (en) * 2013-06-17 2016-10-11 Altera Corporation Bridge circuitry for communications with dynamically reconfigurable circuits
CN105814547B (zh) * 2013-10-27 2019-12-03 超威半导体公司 输入/输出内存映射单元和北桥
US10169103B2 (en) * 2014-02-27 2019-01-01 International Business Machines Corporation Managing speculative memory access requests in the presence of transactional storage accesses

Also Published As

Publication number Publication date
EP3353660A1 (en) 2018-08-01
CN108027775A (zh) 2018-05-11
KR101904239B1 (ko) 2018-10-04
JP6393013B1 (ja) 2018-09-19
US20170091098A1 (en) 2017-03-30
BR112018005935A2 (pt) 2018-10-16
JP2018533133A (ja) 2018-11-08
EP3353660B1 (en) 2021-07-21
WO2017053086A1 (en) 2017-03-30
US9990291B2 (en) 2018-06-05

Similar Documents

Publication Publication Date Title
US9524261B2 (en) Credit lookahead mechanism
US6272580B1 (en) Apparatus and method for dynamically elevating a lower level bus master to an upper level bus master within a multi-level arbitration system
US20160371222A1 (en) COHERENCY DRIVEN ENHANCEMENTS TO A PERIPHERAL COMPONENT INTERCONNECT (PCI) EXPRESS (PCIe) TRANSACTION LAYER
JP2000115208A (ja) プロセッサ・インタ―フェ―ス・バスを通じてデ―タを転送する方法および装置
EP3191971B1 (en) Bridging strongly ordered write transactions to devices in weakly ordered domains, and related apparatuses, methods, and computer-readable media
US8719506B2 (en) Push mechanism for quality of service (QoS) support in coherency port
US7490184B2 (en) Systems and methods for data intervention for out-of-order castouts
US9563586B2 (en) Shims for processor interface
KR101904239B1 (ko) 재시도 버스 코히어런시 프로토콜 및 인-오더-응답 비-재시도 버스 코히어런시 프로토콜을 사용하는 프로세서-기반 시스템들에서의 데드록들의 방지
US20170371783A1 (en) Self-aware, peer-to-peer cache transfers between local, shared cache memories in a multi-processor system
US6940311B2 (en) Data transmission system
KR101930387B1 (ko) 다수의 마스터 디바이스들 사이에서 조건부 개입을 사용한 캐시 코히어런시 유지
US20140281234A1 (en) Serving memory requests in cache coherent heterogeneous systems
US20180285269A1 (en) Aggregating cache maintenance instructions in processor-based devices
EP4214608A1 (en) Maintaining domain coherence states including domain state no-owned (dsn) in processor-based devices
JP2012118687A (ja) 半導体集積回路

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant