KR102442079B1 - 메모리에서의 처리를 위한 캐시 일관성 - Google Patents

메모리에서의 처리를 위한 캐시 일관성 Download PDF

Info

Publication number
KR102442079B1
KR102442079B1 KR1020187032457A KR20187032457A KR102442079B1 KR 102442079 B1 KR102442079 B1 KR 102442079B1 KR 1020187032457 A KR1020187032457 A KR 1020187032457A KR 20187032457 A KR20187032457 A KR 20187032457A KR 102442079 B1 KR102442079 B1 KR 102442079B1
Authority
KR
South Korea
Prior art keywords
memory
host
processor
coherency
cache
Prior art date
Application number
KR1020187032457A
Other languages
English (en)
Other versions
KR20190003564A (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 KR20190003564A publication Critical patent/KR20190003564A/ko
Application granted granted Critical
Publication of KR102442079B1 publication Critical patent/KR102442079B1/ko

Links

Images

Classifications

    • 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/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
    • G06F12/0822Copy directories
    • 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/1004Compatibility, e.g. with legacy hardware
    • 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
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc

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)

Abstract

캐시 일관성 브리지 프로토콜은 호스트 프로세서의 캐시 일관성 프로토콜과 프로세서-인-메모리의 캐시 일관성 프로토콜 간의 인터페이스를 제공함으로써 호스트 프로세서 및 프로세서-인-메모리의 일관성 메커니즘을 분리한다. 캐시 일관성 브리지 프로토콜은 상이한 벤더들에 의해 설계된 프로세서-인-메모리 디바이스와 호스트 프로세서 사이의 상호 운용성을 용이하게 하는데 사용될 수 있으며, 호스트 프로세서 및 프로세서-인-메모리 디바이스는 각 프로세서 내의 컴퓨팅 유닛간에 일관성 기술을 구현할 수 있다. 캐시 일관성 브리지 프로토콜은 호스트 프로세서 및/또는 프로세서-인-메모리의 캐시 일관성 프로토콜에 의해 사용되는 것과는 다른 세밀성의 캐시 일관성 허가를 지원할 수 있다.

Description

메모리에서의 처리를 위한 캐시 일관성
연방 후원 연구 또는 개발에 관한 진술
본 발명은 국토 안보부(DOE)가 수여한 하도급 번호 B608045 프라임 계약 번호 DE-AC52-07NA27344에 따라 정부 지원으로 이루어졌다. 정부는 발명에 대해 특정 권리를 가진다.
기술 분야
본 발명은 프로세싱 시스템에 관한 것으로, 특히 프로세싱 시스템에서 캐시 일관성에 관한 것이다.
일반적으로, 프로세서-인-메모리(즉, 메모리 내 프로세싱 또는 메모리 근처 처리) 기술은 프로세싱 요소를 메모리(예를 들어, 랜덤 액세스 메모리)와 통합함으로써 데이터 집약적인 애플리케이션에 대한 에너지 효율 및 성능을 향상시킨다. 이종 시스템 아키텍처 프레임워크 내에서 프로세싱-인-메모리를 통합하고 기존 프로그래밍 모델을 해당 시스템 프로세서로 확장하려면 캐시 일관성이 필요하다. 고급 프로세서-인-메모리 설계는 고유한 캐시 계층 구조로 복잡한 처리 엔진을 통합한다. 그러나, 적절한 동작을 위해, 시스템은 이들 캐시와 호스트 프로세서(즉, 메인 프로세서)의 캐시 사이의 일관성을 유지해야 한다. 단순하고 캐시가 없은 프로세서-인-메모리 디자인조차도 프로세서-인-메모리에서 처리되는 데이터 와 호스트 캐시 간의 일관성을 보장해야 한다.
프로세서-인-메모리(processor-in-memory)를 포함하는 시스템에서 데이터 일관성을 제공하기 위한 종래의 기술은 하드웨어 지원을 포함하지 않을 수 있으며, 호스트와 프로세서-인-메모리 간의 캐시 일관성을 조율하는 소프트웨어를 요구할 수 있다. 이러한 솔루션은 복잡한 프로그래밍을 필요로 한다. 다른 기술은 임의의 프로세서-인-메모리 설계를 포괄할 수 있도록 기존의 캐시 일관성 솔루션을 확장한다. 시스템의 모든 프로세서 간 통합이 필요한 기존의 캐시 일관성 솔루션을 프로세서-인-메모리로 확장하는 것은, 시스템이 얼마나 많은 메모리 디바이스(즉, 프로세서-인-메모리 디바이스)를 포함하는지를 알고 있을 것을 호스트 상의 캐시 일관성 구현예에 요구하기 때문에, 그리고, 특정 버전 또는 유형의 호스트 프로세서로 시스템 설계를 제한하기 때문에(설계 상호 운용성 및 확장성을 제한함), 비실용적일 수 있다. 또한 캐시 일관성 프로토콜 설계가 복잡하기 때문에 그러한 설계를 검증 및 비준하기가 어려워서, 기존의 검증된 호스트 캐시 일관성 프로토콜을 변경하는 것이 바람직하지 않다. 기존의 일관성 프로토콜을 수정하지 않아도 되는 다른 제안된 프로세서-인-메모리 캐시 일관성 기법은 읽기 공유(즉, 호스트와 프로세서-인-메모리 모두에서 읽기 전용 데이터 캐싱)와 같은 일반적인 사용 시나리오를 허용하지 않는다.
프로세서-인-메모리(Processor-In-Memory) 아키텍처를 위한 또 다른 캐시 일관성 방식은 프로세서-인-메모리(Processor-In-Memory) 장치의 캐시를 고려하지 않고 호스트-측 캐시 일관성 기술을 확장하여, 프로세서-인-메모리 디바이스가 데이터를 수정하여도 호스트 캐시가 일관성을 유지함을 보장하는 것이다. 이러한 기술은 프로세서-인-메모리 디바이스가 호스트의 것과 일관되는 캐시 라인 크기 및 프로토콜을 이용해야만 한다. 또한, 이들 조항은 메모리(예를 들어, 동적 랜덤 액세스 메모리(DRAM))의 각 캐시 라인과 함께 하나 이상의 전용 캐시 일관성 상태 비트의 저장을 요구할 수 있으며, 이는 특수 메모리 모듈을 필요로 하고, 용이하게 이용 가능한 메모리 구성요소의 사용을 배제할 수 있다. 따라서, 프로세서-인-메모리 디바이스를 통합하는 시스템에 대해 캐시 일관성을 구현하기 위한 개선된 기술이 요구된다.
본 발명의 적어도 하나의 실시예에서, 시스템은 프로세서-인-메모리를 포함한다. 프로세서-인-메모리는 프로세서-인-메모리의 메모리에 상주하는 데이터 블록의 브리지 일관성 상태를 저장하도록 구성된 쉐도우 디렉토리 스토리지를 포함한다. 브리지 일관성 상태는 프로세서-인-메모리 외부에 저장된 데이터 블록의 모든 사본의 상태를 나타낸다. 프로세서-인-메모리는 프로세서-인-메모리의 제 1 캐시 일관성 프로토콜과 호스트 프로세서의 제 2 캐시 일관성 프로토콜 간에 일관성 메시지를 변환하도록 구성된 브리지 프로토콜 변환 로직을 포함한다. 제 2 캐시 일관성 프로토콜은 제 1 캐시 일관성 프로토콜과 다르다. 프로세서-인-메모리는 일관성 메시지 및 쉐도우 디렉토리 스토리지의 콘텐츠를 사용하여 프로세서-인-메모리의 메모리의 데이터 일관성을 유지하도록 구성된 브리지 프로토콜 제어 로직을 포함한다. 프로세서-인-메모리는 집적 회로 다이의 스택을 포함할 수 있다. 프로세서-인-메모리의 메모리는 집적 회로 다이의 스택의 복수의 메모리 집적 회로 다이에 포함될 수 있다. 브리지 프로토콜 제어 로직 및 브리지 프로토콜 변환 로직은 집적 회로 다이 스택의 로직 집적 회로 다이에 포함될 수 있다. 제 2 캐시 일관성 프로토콜은 제 1 캐시 일관성 프로토콜의 블록 크기와 다른 블록 크기를 사용할 수 있다. 프로세서-인-메모리는 대응하는 프로세서의 적어도 하나의 캐시를 포함할 수 있다. 적어도 하나의 캐시는 프로세서-인-메모리의 일관성(coherence) 도메인 내에 있을 수 있다. 적어도 하나의 캐시는 연속 기입 캐시 일 수 있고 데이터 블록의 브리지 일관성 상태는 노-호스트-복제 상태, 호스트-판독 상태 및 호스트-기입 상태 중 하나 일 수 있다. 적어도 하나의 캐시는 후기 입 캐시 일 수 있고 데이터 블록의 브리지 일관성 상태는 노-호스트-복제 상태, 호스트-판독 상태, 호스트-기입 상태 및 프로세서-인-메모리-수정 상태 중 하나 일 수 있다. 프로세서-인-메모리는 프로세서-인-메모리의 일관성 도메인 외부에 메모리-측 캐시를 포함할 수 있다. 브리지 프로토콜 제어 로직은 데이터 블록에 대한 메모리 액세스에 응답하여 메모리-측 캐시에 저장된 데이터 블록의 임의의 사본의 상태를 체크하도록 구성될 수 있다. 프로세서-인-메모리는 대응하는 프로세서의 적어도 하나의 캐시 내에 저장된 데이터 블록의 프로세서-인-메모리 일관성 상태를 저장하도록 구성된 프로세서-인-메모리 디렉토리를 포함할 수 있다. 프로세서-인-메모리는 프로세서-인-메모리 디렉토리의 콘텐츠를 사용하여 적어도 하나의 캐시에 저장된 데이터 블록의 데이터 일관성을 유지하도록 구성된 인트라-프로세서-인-메모리 일관성 제어기를 포함할 수 있다. 상기 시스템은 상기 프로세서-인-메모리에 결합된 호스트 프로세서를 포함할 수 있다. 호스트 프로세서는 프로세서-인-메모리의 제 1 캐시 일관성 프로토콜과 호스트 프로세서의 제 2 캐시 일관성 프로토콜 간에 일관성 메시지를 변환하도록 구성된 호스트 브리지 변환 로직을 포함할 수 있다. 호스트 프로세서는 호스트의 일관성 도메인 외부 및 프로세서-인-메모리의 일관성 도메인 외부의 메모리-측 캐시를 더 포함할 수 있다. 쉐도우 디렉터리 스토리지는 메모리-측 캐시에 저장된 데이터 블록의 임의의 사본의 상태를 캡처할 수 있다. 상기 호스트 프로세서는 상기 호스트 프로세서 내에 저장된 호스트 카피 데이터 블록의 호스트 일관성 상태를 저장하도록 구성된 호스트 디렉토리, 및 호스트 디렉토리를 이용하여 상기 호스트 프로세서 내에 존재하는 호스트 카피 데이터 블록의 데이터 일관성을 유지하도록 구성된 인트라-호스트 일관성 제어 로직을 더 포함할 수 있다.
본 발명의 적어도 하나의 실시예에서, 방법은 쉐도우 디렉토리에 프로세서-인-메모리의 메모리에 상주하는 데이터 블록의 브리지 일관성 상태를 저장하는 단계를 포함한다. 브리지 일관성 상태는 프로세서-인-메모리 외부에 저장된 데이터 블록의 모든 사본의 상태를 나타낸다. 상기 방법은 프로세서-인-메모리의 제 1 캐시 일관성 프로토콜과 호스트 프로세서의 제 2 캐시 일관성 프로토콜 사이의 일관성 메시지를 변환하는 단계를 포함한다. 제 2 캐시 일관성 프로토콜은 제 1 캐시 일관성 프로토콜과 다르다. 이 방법은 일관성 메시지 및 쉐도우 디렉토리 스토리지의 콘텐츠를 사용하여 프로세서-인-메모리의 메모리의 데이터 일관성을 유지하는 단계를 포함한다. 제 2 캐시 일관성 프로토콜은 제 1 캐시 일관성 프로토콜의 블록 크기와 다른 블록 크기를 사용할 수 있다. 프로세서-인-메모리의 메모리의 데이터 일관성을 유지하는 것은 데이터 블록에 대한 액세스에 응답하여 데이터 블록의 브리지 일관성 상태를 업데이트하는 것을 포함할 수 있다. 프로세서-인-메모리의 메모리의 데이터 일관성을 유지하는 것은 프로세서-인-메모리의 프로세서의 적어도 하나의 캐시와, 프로세서-인-메모리의 메모리와의 일관성을 유지하는 것을 포함할 수 있다. 적어도 하나의 캐시는 프로세서-인-메모리의 일관성(coherence) 도메인 내에 있을 수 있다. 이 방법은 프로세서-인-메모리의 메모리 액세스에 응답하여 프로세서-인-메모리의 메모리-측 캐시를 체크하는 단계를 포함할 수 있다. 상기 방법은 프로세서-인-메모리의 일관성 도메인 내의 캐시로부터 프로세서-인-메모리의 메모리-측 캐시로 연속 기입 캐시 정책을 구현하는 단계를 포함할 수 있다. 쉐도우 디렉토리 내의 데이터 블록의 브리지 일관성 상태는 노-호스트-복제 상태, 호스트-판독 상태 및 호스트-기입 상태 중 하나 일 수 있다. 상기 방법은 프로세서-인-메모리의 일관성 도메인 내의 캐시로부터 프로세서-인-메모리의 메모리-측 캐시로 후기입 캐시 정책을 구현하는 단계를 포함할 수 있다. 쉐도우 디렉토리 내 데이터 블록의 브리지 일관성 상태는 노-호스트-복제 상태, 호스트-판독 상태, 호스트-기입 상태 및 프로세서-인-메모리-수정 상태 중 하나일 수 있다. 프로세서-인-메모리의 메모리의 데이터 일관성을 유지하는 것은 데이터 블록에 대한 메모리 액세스에 응답하여 일관성 메시지를 생성하는 것을 포함할 수 있다. 이 방법은 대응하는 프로세서의 적어도 하나의 캐시 내에 저장된 데이터 블록의 프로세서-인-메모리 일관성 상태를 저장하는 단계를 포함할 수 있다. 이 방법은 프로세서-인-메모리 디렉토리의 콘텐츠를 사용하여 적어도 하나의 캐시에 상주하는 데이터 블록의 데이터 일관성을 유지하는 단계를 포함할 수 있다. 상기 방법은 상기 호스트 프로세서 내에 저장된 호스트 카피 데이터 블록의 호스트 일관성 상태를 저장하는 단계를 포함할 수 있다. 이 방법은 호스트 디렉토리를 사용하여 호스트 프로세서에 상주하는 호스트 카피 데이터 블록의 데이터 일관성을 유지하는 단계를 포함할 수 있다.
본 발명의 적어도 하나의 실시예에서, 장치는 호스트 프로세서를 포함한다. 호스트 프로세서는 프로세서-인-메모리의 제 1 캐시 일관성 프로토콜과 호스트 프로세서의 제 2 캐시 일관성 프로토콜 간의 일관성 메시지를 변환하도록 구성된 호스트 브리지 변환 로직을 포함한다. 제 2 캐시 일관성 프로토콜은 제 1 캐시 일관성 프로토콜과 다르다. 호스트 프로세서는 프로세서-인-메모리(processor-in-memory)에 상주하는 데이터 블록의 호스트 사본에 대응하는 호스트 일관성 상태를 저장하도록 구성된 호스트 디렉토리를 포함할 수 있다. 호스트 프로세서는 호스트 디렉토리를 사용하여 호스트 프로세서에 상주하는 데이터 블록의 데이터 일관성을 유지하도록 구성된 인트라-호스트 일관성 제어 로직을 포함할 수 있다. 제 2 캐시 일관성 프로토콜은 제 1 캐시 일관성 프로토콜의 블록 크기와 다른 블록 크기를 사용할 수 있다.
본 발명은 첨부된 도면을 참조하여보다 잘 이해될 수 있고, 많은 목적, 특징 및 장점이 당업자에게 명백해질 수 있다.
도 1은 프로세서-인-메모리 디바이스를 포함하는 예시적인 처리 시스템의 기능적 블록도를 도시한다.
도 2는 예시적인 프로세서-인-메모리(memory-in-memory)의 기능 블록도를 도시한다.
도 3은 본 발명의 적어도 하나의 실시예와 일치하는 호스트 프로세서와 프로세서-인-메모리 간의 예시적인 캐시 일관 링크의 기능 블록도.
도 4는 본 발명의 적어도 하나의 실시예와 일치하는 다수의 호스트들과 다양한 프로세서-인-메모리 디바이스들 간의 예시적인 캐시 일관 링크들의 기능 블록도를 도시한다.
도 5는 예시적인 프로세서-인-메모리 캐시 구성을 포함하는 예시적인 프로세서-인-메모리의 기능 블록도를 도시한다.
도 6은 본 발명의 적어도 하나의 실시예와 일치하는 제 1 캐싱 프로토콜을 갖는 호스트 프로세서와 프로세서-인-메모리 간의 예시적인 캐시 일관성 브리지 프로토콜의 상태도를 도시한다.
도 7은 본 발명의 적어도 하나의 실시예와 일치하는 제 2 캐싱 프로토콜을 갖는 호스트와 프로세서-인-메모리 간의 예시적인 캐시 일관성 브리지 프로토콜의 상태도를 도시한다.
상이한 도면에서 동일한 참조 부호를 사용하는 것은 유사하거나 동일한 항목을 나타낸다.
캐시 일관성 브리지 프로토콜은 호스트 프로세서의 캐시 일관성 프로토콜과 프로세서-인-메모리의 캐시 일관성 프로토콜 간의 인터페이스를 제공함으로써 호스트 프로세서 및 프로세서-인-메모리의 일관성 메커니즘을 분리한다. 캐시 일관성 브리지 프로토콜은 기존의 호스트 프로세서 캐시 일관성 프로토콜을 제한적으로 변경해야 한다. 캐시 일관성 브리지 프로토콜은 상이한 벤더들에 의해 설계된 프로세서-인-메모리 디바이스와 호스트 프로세서 간의 상호 운용성을 용이하게 하는데 사용될 수 있고, 호스트 프로세서 및 프로세서-인-메모리 디바이스는 각 프로세서 내의 컴퓨팅 유닛간에 일관성 기술을 구현할 수 있다. 캐시 일관성 브리지 프로토콜은 호스트 프로세서 및/또는 프로세서-인-메모리의 캐시 일관성 프로토콜에 의해 사용되는 것과 다른 세분성의 캐시 일관성 허가를 지원할 수 있다. 캐시 일관성 브리지 프로토콜은 해당 데이터가 포함된 프로세서-인-메모리 외부의 시스템에 캐시된 데이터 사본의 집합적 뷰(aggregate view)를 나타내는 상태 정보를 유지하는 쉐도우 디렉토리를 사용한다. 대조적으로, 기존의 일관성 프로토콜은 프로세서에서 로컬 데이터 사본의 상태를 추적한다.
프로세서-인-메모리는 하나 이상의 메모리 다이 내의 처리 로직으로서 또는 하나 이상의 메모리 다이와 스택된 별도의 로직 다이로서 구현될 수 있다. 도 1을 참조하면, 시스템(100)은 인터포저(112)상의 호스트(110) 및 4 개의 프로세서-인-메모리 디바이스를 포함한다. 프로세서-인-메모리(102)는 다중 메모리 다이(106)와 스택된 별도의 다이에 포함될 수 있는 프로세싱 로직(104)을 포함한다. 프로세싱 로직(104)은 적어도 하나의 가속 프로세싱 유닛(즉, 중앙 프로세싱 유닛 및 그래픽 프로세싱 유닛을 포함하는 고급 프로세싱 유닛), 중앙 프로세싱 유닛, 그래픽 프로세싱 유닛, 또는 다른 프로세서를 포함할 수 있고, 코프로세서 또는 고정-기능 처리 하드웨어를 포함할 수 있다.
도 2는 복수의 그래픽 프로세싱 유닛 컴퓨팅 유닛(214)을 포함하는, 가령, 컴퓨팅 유닛 클러스터(206)와 같은, 그래픽 프로세싱 유닛을 포함하는 고급 프로세싱 유닛을 포함하는 예시적인 처리 로직(104)을 도시한다. 고급 프로세싱 유닛은 다수의 중앙 프로세싱 유닛 코어(216)를 포함하는 중앙 프로세싱 유닛 클러스터(208)를 포함할 수 있다. 고급 프로세싱 유닛은 또한 다수의 하드웨어 가속기(218)를 포함하는 고정-기능 하드웨어(210)를 포함할 수 있다. 각 프로세서-인-메모리(102) 내의 컴포넌트(예를 들어, 프로세싱 로직(104)의 각각의 그래픽 프로세싱 유닛 컴퓨팅 유닛(214) 및 각각의 중앙 프로세싱 유닛 코어(216))은 이들 사이에서 하드웨어 캐시 일관성을 구현할 수 있다.
도 1을 다시 참조하면, 호스트(110)는 다수의 프로세싱 코어를 포함할 수 있고, 이들 프로세싱 코어간에 하드웨어 캐시 일관성을 구현할 수 있다. 호스트(110)는 멀티 소켓 구현 인터페이스(예를 들어, 코히어런트 하이퍼트랜스포트(coherent HyperTransport))를 통해 다수의 호스트 장치들 사이의 캐시 일관성을 지원할 수 있다. 기존 캐시 일관성 정책을 확장하여 프로세서-인-메모리를 포괄하려면 호스트와 프로세서-인-메모리가 동일한 캐시 일관성 프로토콜을 구현해야 한다. 이 요구 사항은 서로 다른 벤더가 서로 다른 기존의 일관성 프로토콜을 갖기 때문에 서로 다른 벤더로부터 호스트와 프로세서-인-메모리 디자인 간의 상호 운용성을 막음으로써 프로세서-인-메모리 디자인의 상업적 기회를 제한한다. 또한 프로세서-인-메모리를 각기 지닌 많은 개수의 메모리가 있는 고성능 시스템을 지원하려면, 호스트 및 프로세서-인-메모리 캐시 일관성 프로토콜이 가변 개수의 일관 노드(coherent nodes)(즉, 프로세서-인-메모리 디바이스없는 시스템에서보다 그리고 종래의 시스템에서보다 많은 수)로 확장가능해야 하며, 따라서, 기존 기술의 일관성 상태 추적 오베헤드를 크게 증가시킬 수 있다.
캐시 일관성 브리지 프로토콜은 기존의 캐시 일관성 프로토콜들(예를 들어, 호스트 캐시 일관성 프로토콜 및 프로세서-인-메모리 캐시 일관성 프로토콜) 간의 인터페이스를 제공한다. 캐시 일관성 브리지 프로토콜은 임의의 수의 프로세서-인-메모리 디바이스의 시스템에서 특정 캐시 라인에 대해 단일 잠재적 공유 장치만의 추가를 포함할 수 있는 호스트-측 지원을 사용하므로, 오버 헤드가 거의 증가하지 않고, 시스템의 프로세서-인-메모리 디바이스의 수에 관계없이 필요한 추가 상태는 제한적이다. 캐시 일관성 브리지 프로토콜에는 단일한 추가 잠재적 공유기에 의해 호스트-측에 있는 모든 구성 요소의 프로세서-인-메모리-측 표현이 포함되어있어 프로세서-인-메모리의 오버 헤드가 거의 증가하지 않을뿐 아니라 시스템에 있는 호스트의 성질과 수에 관계없이 필요한 추가 상태의 수가 제한된다.
캐시 일관성 브리지 프로토콜은 프로세서-인-메모리 상에 구현된 브리지 프로토콜 제어기 및 브리지 변환 유닛을 포함한다. 캐시 일관성 브리지 프로토콜은 프로세서-인-메모리에 저장된 쉐도우 디렉토리를 포함한다. 쉐도우 디렉토리는 외적 관점으로 캐시 일관성을 추적하기 위한 상태 정보를 저장한다. 즉, 프로세서-인-메모리에서 캐시된 사본의 상태를 추적하는 대신 쉐도우 디렉토리는 데이터 요소가 위치하는 프로세서-인-메모리 외부의 캐싱된 데이터 요소의 모든 사본의 집합적 뷰를 추적하는 브리지 일관성 상태를 저장한다. 쉐도우 디렉토리는 호스트 디렉토리에, 그러나 프로세서-인-메모리의 시각으로부터, 포함될 수 있는 정보의 서브 세트를 저장한다. 적어도 하나의 실시예에서, 캐시 일관성 브리지 프로토콜은 종래의 캐시 일관성 프로토콜에 의해 이미 생성된 캐시 일관성 메시지의 서브 세트를 사용하여, 호스트상에서 그리고 프로세서-인-메모리 내에서 구현될 가능성이 있는 이전에 개발되고 유효화된 캐시 일관성 프로토콜을 적응시키기 위한 변형을 제한한다.
도 3을 참조하면, 캐시 일관성 브리지 프로토콜의 적어도 하나의 실시예에서, 인트라-호스트 일관성 제어기(302)는 프로세서-인-메모리(102)가 호스트 일관성 프로토콜 내의 단지 다른 노드인 것처럼 캐시 일관성 메시지를 프로세서-인-메모리(102)에 생성한다. 브리지 변환 유닛(304)은 이들 캐시 일관성 메시지를 브리지 프로토콜 일관성 메시지로 변환할 수 있다. 프로세서-인-메모리(102)에서, 브리지 변환 유닛(316)은 호스트 일관성 프로토콜 또는 중간 브리지 간섭 프로토콜로부터 수신된 캐시 일관성 메시지를 브리지 프로토콜 제어 로직(322)에 의해 사용 가능한 형태로 변환할 수 있다. 반대 방향에서, 브리지 프로토콜 제어 로직(322)은 쉐도우 디렉토리(324)의 콘텐츠에 기초하여 호스트 일관성 프로토콜 또는 호스트에 대한 중간 브리지 일관성 프로토콜과 일치하는 캐시 일관성 메시지를 생성하고, 인트라-프로세서-인-메모리 일관성 제어기(320)로부터의 메시지는 디렉토리(326)의 콘텐츠에 기초할 수 있으며, 및/또는 프로세서-인-메모리(102)에 의해 수신되거나 생성된 메모리 요청에 기초할 수 있다.
브리지 변환 유닛(316)은 브리지 프로토콜 제어 로직(322)으로부터 수신된 캐시 일관성 메시지를 브리지 프로토콜 메시지로 또는 호스트 일관성 제어기 프로토콜 메시지로 변환한다. 호스트(110)의 브리지 변환 유닛(304)은 캐시 일관성 메시지를 브리지 프로토콜로부터 호스트 프로토콜로 변환할 수 있다. 별도의 로직으로 도시되었지만, 브리지 변환 유닛(304)은 메모리 인터페이스 제어기(308)의 일체 부분으로서 구현될 수 있고 브리지 변환 유닛(316)은 메모리 인터페이스 제어기(314)의 일체 부분으로서 구현될 수 있다. 캐시 일관성 브리지 프로토콜의 적어도 하나의 실시예에서, 중간 캐시 일관성 메시지가 사용되지 않고 브리지 변환 유닛(304 및 316)은 시스템의 리셋에 따라 또는 다른 사용자 구성에 대한 응답으로 구성될 수 있는 기결정된 프로토콜 포맷에 기초하여 캐시 일관성 메시지를 프로세서-인-메모리 캐시 일관성 프로토콜 메시지 또는 호스트 캐시 일관성 프로토콜 메시지로 직접 변환한다.
브리지 프로토콜 제어 로직(322)은 인트라-프로세서-인-메모리 일관성 메시지를 관찰하고, 일부 경우에, 프로세서-인-메모리(102)의 하나 이상의 메모리 채널에 대한, 호스트(110)에 의한 메모리 액세스(예를 들어, 캐시 미스)에 개입한다. 브리지 프로토콜 제어 로직(322)이 프로세서-인-메모리(102) 상에서 구현되기 때문에, 브리지 프로토콜 제어 로직(322)은 추가적인 오프-디바이스 트래픽 생성없이, 프로세서-인-메모리(102)의 메모리 채널들 내에서 발생하는 모든 액세스들(호스트(110) 또는 다른 장치에 의해 외부 적으로 생성된 것과 프로세서-인-메모리(102) 내에서 내부적으로 생성된 것)에 대한 가시성을 갖는다. 브리지 프로토콜 제어 로직(322)의 기능은 이하에서 더 설명된다.
도 4를 참조하면, 캐시-일관성 브리지 프로토콜을 포함하는 예시적인 시스템은 호스트-대-호스트 일관 링크(411)에 의해 결합되는 다수의 프로세서-인-메모리 디바이스 및 호스트(410) 및 호스트(412)를 포함한다. 프로세서-인-메모리(402, 406)는 각각 캐시 일관 브리지 프로토콜 링크(403) 및 캐시 일관 브리지 프로토콜 링크(405)에 의해 호스트(410)에 결합된다. 프로세서-인-메모리(404) 및 프로세서-인-메모리(408)는 각각 캐시 일관 브리지 프로토콜 링크(407) 및 캐시 일관 브리지 프로토콜 링크(409)에 의해 호스트(412)에 결합된다. 본 명세서에서 언급되는 바와 같이, 특정 메모리 어드레스와 관련하여, 홈 프로세서-인-메모리는 특정 어드레스에 대한 데이터를 저장하는 프로세서-인-메모리(processor-in-memory)이다. 본 명세서에서 언급되는 바와 같이, 홈 노드는 특정 어드레스에 대한 홈 프로세서-인-메모리에 부착된 호스트이다. 호스트 일관성 프로토콜 디렉토리는 일관성 디렉토리 목적을 위한 홈 노드가 데이터의 메모리 내 사본을 보유하는 프로세서-인-메모리에 부착된 노드가 되도록 분산될 수 있다. 본 명세서에서 언급되는 바와 같이, 데이터 블록은 호스트와 프로세서-인-메모리 간의 일관성 추적(coherence tracking)의 세분성 단위(granularity)이다. 데이터 블록은 호스트 내 및 호스트 간 일관성 추적의 세밀성 단위의 정수배다. 캐시 일관성 브리지 프로토콜을 포함하는 시스템의 적어도 하나의 실시예에서, 호스트(410), 호스트(412), 프로세서-인-메모리(402), 프로세서-인-메모리(404), 프로세서-인-메모리(406) 및 프로세서-인-메모리(408)는 쓰기 할당 캐시 일관성 정책을 구현한다(즉, 호스트 또는 프로세서-인-메모리는 캐시 라인의 일부를 쓰기 전에 메모리로부터 해당 캐시로 캐시 라인을 읽는다).
도 3을 참조하여 전술한 바와 같이, 캐시 일관성 브리지 프로토콜은 호스트-측 지원을 사용하며, 이는 호스트 디렉토리(328)에 대한 단일 공유 디바이스만의 추가를 포함할 수 있다. 호스트 디렉토리(328) 내의 단일 공유 디바이스는 호스트 일관성 프로토콜의 시각으로부터 홈 프로세서-인-메모리의 캐시 일관성 상태를 추적하는데 사용된다. 도 4를 다시 참조하면, 예를 들어, 프로세서-인-메모리(402)가 홈 프로세서-인-메모리이고 홈 노드 호스트(410)상의 호스트 일관성 디렉토리에서 추적되는 캐시 라인에 대해, 호스트(410) 상의 호스트 일관성 디렉토리는 프로세서-인-메모리(402) 내의 캐시 라인의 캐시 일관성 상태를 추적한다. 각 프로세서-인-메모리에서의 쉐도우 디렉토리는 시스템의 다른 곳에 존재할 수 있는 임의의 데이터 블록의 사본의 집합적 뷰를 유지한다. 적어도 하나의 실시예에서, 홈 프로세서-인-메모리가 프로세서-인-메모리(402)인 캐시 블록에 대해, 프로세서-인-메모리(402)상의 쉐도우 디렉토리는 호스트(410) 또는 호스트(412)의 캐시에 존재할 수 있는 캐시 라인의 임의의 사본의 집합적 뷰를 유지한다.
일반적으로, 프로세서-인-메모리 캐시는 연속 기입 캐시(write-through cache) 또는 후기입 캐시(write-back cache) 중 하나 일 수 있다. 프로세서-인-메모리 캐시가 연속 기입 캐시인 경우 호스트에 의한 메모리 액세스에 대한 응답으로 프로세서-인-메모리 캐시를 검사할 필요가 없다. 프로세서-인-메모리 캐시가 후기입 캐시인 경우 호스트 메모리 액세스를 서비스하는 것은 가장 최근의 데이터에 대한 프로세서-인-메모리 캐시를 확인하는 것을 포함한다. 예를 들어, 도 5를 참조하면, 레벨 1 캐시는 메모리 상호 접속부(204)의 프로세서 측상의 일관성(coherence) 도메인 내의 연속 기입 캐시이고, 레벨 2 캐시는 메모리 상호접속부(204)의 프로세서 측 상의 일관성 도메인 외부의, 메모리로 이어지는 경로 내 메모리-측 캐시다. 호스트에 의한 모든 메모리 액세스는 프로세서-인-메모리 캐시 일관성 도메인 외부의 메모리-측 캐시(예를 들어, 레벨 -2 캐시)를 체크한다. 다른 실시예에서, 프로세싱 로직(104)은 캐시를 포함하지 않으며, 따라서 인트라-프로세서-인-메모리 일관성을 구현하지 않는다.
다시 도 3을 참조하면, 각각의 프로세서-인-메모리(102)는 그 프로세서-인-메모리(102)의 메모리 내에 저장된 각 데이터 블록의 브리지 일관성 상태를 추적하는 브리지 프로토콜 제어 로직(322)을 포함한다. 그 브리지 일관성 상태는 쉐도우 디렉토리(324)에 저장된다. 브리지 프로토콜 제어 로직(322)은 쉐도우 디렉토리(324)의 상태 전이를 제어하고, 대응하는 표시자를 저장한다. 도 3 및 도 6을 참조하면, 적어도 하나의 실시예에서, 프로세서-인-메모리 내의 각 데이터 블록에 대해, 쉐도우 디렉토리(324)는 다음과 같은 브리지 일관성 상태의 지시자를 저장한다: 노-호스트-복제(I) 상태(602), 호스트-판독(S) 상태(604) 및 호스트-기입(M) 상태(606). 상태도는 프로세서-인-메모리 캐시 일관성 도메인 외부의 메모리-측(예를 들어, 레벨 -2) 캐시 및 연속 기입 레벨-1 캐시를 가진 프로세서-인-메모리(102)에 대응한다. 브리지 프로토콜 제어 로직(322)은 (예를 들어, 프로세서-인-메모리(102) 또는 호스트(110)로부터의) 메모리에 대한 각각의 액세스에 응답하여 메모리-측 캐시를 체크한다. 노-호스트-복제(I) 상태(602)는 브리지 캐시 일관성 도메인 내의 호스트들 중 어느 것도 캐시 메모리에 데이터 블록의 임의의 부분을 저장하지 않았음을 나타낸다. 이 브리지 일관성 상태는 종래의 MSI, MESI, MOESI 캐시 일관성 프로토콜의 무효 상태와 유사하며, 여기서 M은 수정(modified)을 나타내고 O는 소유(owned)를 나타내며 E는 배타성(exclusive)을 나타내고, S는 공유(shared)를 나타내며 I는 무효(invalid)를 나타낸다. 호스트 판독(S) 상태(604)는 브리지 일관성 도메인 내의 호스트들 중 하나 이상이 데이터 블록의 일부를 판독하고 자신의 캐시(들)에 수정되지 않은 사본을 가질 수 있지만 그것을 기입하지 않았음을 나타낸다. 이 브리지 일관성 상태는 MSI, MESI, MOESI 캐시 일관성 프로토콜의 공유 상태와 유사하다. 호스트-기입(M) 상태(606)는 브리지 일관성 도메인 내의 호스트들 중 하나 이상이 데이터 블록의 배타적 소유권을 가지며 그 일부를 기입할 수 있음을 나타낸다(예를 들어, 호스트-측 코어는 MSI 캐시 일관성 프로토콜의 경우 수정 상태, MESI 캐시 일관성 프로토콜의 경우 수정 상태 또는 배타적 상태, 또는 MOESI 캐시 일관성 프로토콜의 경우 수정 상태, 소유 상태 또는 배타적 상태로 라인의 사본을 가짐).
프로세서-인-메모리(102)에 의한 로컬 데이터의 판독(즉, 프로세서-인-메모리(102)가 홈 프로세서-인-메모리인 경우 메모리 어드레스와 연관된 데이터) 및 프로세서-인-메모리(102)에 의한 로컬 데이터의 기입은 각각 P.r 및 P.w로 표시되며, 브리지 프로토콜 제어 로직(322)은 쉐도우 디렉토리(324) 내의 대응하는 엔트리의 관련 상태 전이로 응답한다. 호스트(110)에 의한 프로세서-인-메모리 로컬 데이터의 판독 및 호스트(110)에 의한 프로세서-인-메모리 로컬 데이터의 기입은 각각 H.r 및 H.w로 표시되고, 브리지 프로토콜 제어 로직(322)은 쉐도우 디렉토리(324) 내의 대응하는 엔트리의 관련 상태 전이로 응답한다. 중간 상태 및 전이 과정은 명료성을 위해 상태도에 도시하지 않는다.
로컬 데이터 블록(P.r)에 대한 프로세서-인-메모리 판독 액세스에 응답하여, 데이터 블록이 쉐도우 디렉토리(324)에 노-호스트-복제(I) 상태(602) 또는 호스트-판독(S) 상태(604)를 가질 경우, 브리지 프로토콜 제어 로직(322)은 프로세서-인-메모리 외부의 일관성 메시지를 생성하지 않고, 현재 상태, 노 호스트 복제(I) 상태(602) 또는 호스트 판독(S) 상태(604)에 머무른다. 데이터 블록이 쉐도우 디렉토리 내에 호스트-기입(M) 상태(606)를 가진 경우, 브리지 프로토콜 제어 로직(322)은 프로세서-인-메모리에 부착된 홈 노드에 대한 판독 일관성 요청을 생성하고, 일관성 상태를 호스트-판독(S) 상태(604)에 전이한다(704). 그 호스트가 또한 홈 노드이기 때문에, 이것은 임의의 다른 판독 요청인 것처럼 호스트의 일관성 프로토콜과 통합될 것이다. 프로세서-인-메모리는 판독을 진행하기 전에 일관성 요청이 완료되고 일관성 확인 신호를 수신하고 업데이트된 데이터를 사용할 수 있을 때까지 대기해야 한다.
로컬 데이터(P.w)에 대한 프로세서-인-메모리 기입 액세스에 응답하여, 데이터 블록이 쉐도우 디렉토리(324)에 노-호스트-복제(I) 상태(602)를 가지면, 브리지 프로토콜 제어 로직(322)은 프로세서-인-메모리 외부의 일관성 메시지를 생성하지 않으며, 현재의 상태인 노-호스트-복제(I) 상태(602)에 머무른다. 데이터 블록이 쉐도우 디렉토리(324)에서 호스트 판독(S) 상태(604)를 갖는다면, 브리지 프로토콜 제어 로직(322)은 기입을 진행하기 전에 호스트에 무효화 요청을 생성하고 완료 신호를 기다리며, 노-호스트-복제(I) 상태(602)로 전이한다(702). 데이터 블록이 쉐도우 디렉토리(324)에서 호스트-기입(M) 상태(606)를 갖는 경우, 브리지 프로토콜 제어 로직(322)은 무효화 요청을 생성하고, 수정 데이터를 기다린 후, 노-호스트-복제(I) 상태(602)로 상태 전이를 재개한다(707).
호스트 상에서 발원하였을 수 있는 호스트-측으로부터의 판독 액세스에 응답하여 또는 호스트를 통해 메모리에 액세스하는 다른 구성요소에 응답하여(H,r), 데이터 블록이 쉐도우 디렉토리(324)에 노-호스트-복제(I) 상태(602) 또는 호스트-기입(host-write) (M) 상태(606)를 가지면, 브리지 프로토콜 제어 로직(322)은 상태를 호스트 판독(S) 상태(604)로 전이시킨다(각각 702 또는 704). 호스트-기입(M) 상태(606)에 있으면서 호스트-측으로부터 추가 판독 요청은, (호스트-기입(M) 상태(606)를 이끈) 호스트 캐시의 수정 사본이 호스트-측 캐시 일관성 프로토콜에 의해 이미 강등되었음을 의미한다. 데이터 블록이 쉐도우 디렉토리(324)에서 호스트 판독(S) 상태(604)를 갖는다면, 브리지 프로토콜 제어 로직(322)은 상태 변경을 하지 않는다.
호스트-측으로부터의 소유권 액세스를 위한 판독(H.w)에 응답하여, 데이터 블록이 쉐도우 디렉토리에 노-호스트-복제(I) 상태(602) 또는 호스트-판독(S) 상태(604)를 갖는 경우, 브리지 프로토콜 제어 로직(322)은 상태를 호스트-기입(M) 상태(606)로 전이한다(각각 706 또는 711). 또한, 브리지 프로토콜 제어 로직(322)은 프로세서-인-메모리 캐시 일관성 도메인 내의 임의의 캐시(가령, 레벨 1 캐시)에서 해당 데이터 블록의 임의의 사본을 무효화시키고, 요청된 데이터와 함께 소유권 액세스를 위한 판독에 응답한다. 데이터 블록이 쉐도우 디렉토리(324)에서 호스트-기입(M) 상태(606)를 갖는다면, 브리지 프로토콜 제어 로직(322)은 상태를 변경하지 않고 요청된 데이터로 판독 요청에 응답한다.
홈 노드는 추가적인 호스트 일관성 동작을 수행할 수 있다. 예를 들어, MSI, MESI 및 MOESI 캐시 일관성 프로토콜에서 I 또는 S로부터 E, M 또는 O 로의 모든 상태 전이(또는 다른 프로토콜의 동등한 전이)에 대해, 홈 노드는 홈 프로세서-인-메모리(예: 프로세서-인-메모리(102))에 M-전환 요청을 생성해야 한다. 이는 할당되지 않은 모든 라인이 기본적으로 프로세서-인-메모리의 호스트-판독(S) 상태(604)에 있다고 가정하도록 호스트 프로토콜을 수정함으로써 트리거링될 수 있다. 메모리 인터페이스 프로토콜이 이를 지원하면, M-전환 요청은 기입에 앞서 (할당을 위한)판독 요청과 연계될 수 있다. 적어도 하나의 실시예에서, 홈 노드는 전체 호스트-측 캐시 일관성 도메인으로부터 최종 캐시된 사본이 축출됨에 응답하여 프로세서-인-메모리에 대한 I-전환 요청을 생성한다. 이 요청은 호스트-측의 최종 퇴거시 더러운 데이터를 플러시하는 것과 함께 생성될 수 있다. 이 요청 생성은 아래에서 자세히 설명하는 것처럼 메모리-측 마지막 레벨 캐시가 있는 호스트에 영향을 줄 수 있다. 다른 실시예에서, 호스트는 그러한 요청을 생성하지 않는다.
도 5를 다시 참조하면, 적어도 하나의 실시예에서, 프로세서 로직(104)은 프로세서 측 후기입 캐시(write-back cache)(예를 들어, GPUCU(214), CPU 코어(216) 및 하드웨어 가속기(218)의 레벨 1 캐시)를 포함한다. 결과적으로, 각 데이터 블록의 브리지 일관성 상태는 또한 데이터 블록의 임의의 부분이 추가적인 상태인, 프로세서-인-메모리-수정(P) 상태를 이용하여 프로세서-측 캐시에서 프로세서-인-메모리(102)에 의해 수정되었는지 여부를 표시한다. 도 7은 쉐도우 디렉토리(324)에서 브리지 일관성 상태 정보에 대한 브리지 프로토콜 제어 로직(322) 업데이트의 수정된 상태도를 도시한다. 데이터 블록이 쉐도우 디렉토리(324)에서 프로세서-인-메모리-수정(P) 상태(608)를 가질 경우, 프로세서-인-메모리 캐시 외부로부터의 임의의 판독 또는 기입 액세스에 응답하여, 브리지 프로토콜 제어 로직(322)은 프로세서-인-메모리 캐시로부터 업데이트된 데이터를 제공하고, 필요하다면 임의의 로컬 카피를 무효화하며(외부 요청이 배타적이거나 기입 권한일 경우), 각각 전이(transition)(710) 또는 전이(transition)(717)를 통해 데이터 블록의 브리지 일관성 상태를 적절하게 수정한다. 적어도 하나의 실시예에서, 프로세서-인-메모리의 프로세서-측 캐시 내의 특정 데이터 블록의 수정된 사본이 캐시(Pe)로부터 퇴거될 때(P.e), 특정 데이터 블록의 상태가 쉐도우 디렉토리(324)에서 노-호스트-복제(I) 상태(602)로 전이된다(715).
적어도 하나의 실시예에서, 홈 노드는 특정 데이터 블록의 최종 캐시된 사본이 전체 호스트-측 캐시 일관성 도메인으로부터 축출됨에 응답하여, 홈 프로세서-인-메모리로의 I-전환 요청을 생성한다. 특정 데이터 블록이 쉐도우 디렉토리(324)에서 호스트-판독(S) 상태(604) 또는 호스트-기입(M) 상태(606)를 갖는 경우, 쉐도우 디렉토리(324)에서 노-호스트-복제(I) 상태(602)로 전이한다. 이 요청은 최종 퇴거시에 더러운 데이터를 플러시하는 것과 함께 생성될 수 있다. 이 요청 생성은 메모리-측 마지막-레벨 캐시로 호스트에 영향을 줄 수 있다. 그러한 요청은 캐시 일관성 브리지 프로토콜에서 선택적이며(도 7에 도시되지 않음), 다른 실시예들에서, 홈 노드는 그러한 요청을 생성하지 않는다.
위에서 설명한 캐시 일관성 브리지 프로토콜은 일관성 추적의 세분성과는 독립적이다. 캐시 일관성 브리지 프로토콜은 캐시 라인 세분성을 가질 수 있거나, 보다 조대한 세분성(예를 들어, 일 영역이 하나보다 많은 캐시 라인을 포함하는 경우, 영역 일관성)을 가질 수 있다. 따라서, 보다 조대한 세분성을 갖는 캐시 일관성 브리지 프로토콜 구현은 보다 적은 상태 저장 및 더 작은 쉐도우 디렉토리를 필요로 한다. 본 명세서에 설명된 캐시 일관성 브리지 프로토콜은 또한 가변 세분성(granularity)으로 구현 가능하다. 예를 들어, 쉐도우 디렉토리의 일부분은 더 조대한 입도를 갖는 데이터 블록을 추적하는 데 사용될 수 있는 반면, 쉐도우 디렉토리의 다른 부분은 보다 세밀한 데이터 블록을 추적하는데 사용될 수 있다.
캐시 일관성 브리지 프로토콜의 적어도 하나의 실시예에서, 호스트 일관성 프로토콜의 일관성 세분성(coherence granularity)은 캐시 일관성 브리지 프로토콜의 일관성 세분성(coherence granularity) 및 프로세서-인-메모리의 일관성 세분성(coherence granularity)과 다르다. 예를 들어, 개별 캐시 라인보다 더 조대한 단위(예: 4KB)에서 일관성 허가를 추적하는 영역 일관성은, 일관성 트래픽(예: 호스트와 프로세서-인-메모리 간의 일관성 트래픽)을 크게 줄일 수 있다. 따라서, 브리지 일관성 프로토콜은, 기존의 호스트-측 일관성 프로토콜이 종래의 캐시 라인 세분성(예를 들어, 64B)에서 계속 동작하는 동안, 조대한 세분성(예컨대, 4KB)으로 동작할 수 있다. 또한, 호스트 일관성 프로토콜 및 프로세서-인-메모리 캐시 일관성 프로토콜의 상이한 일관성 세분성(coherence granularities)의 캐시 일관성 브리지 프로토콜의 지원은 상이한 벤더들로부터의 구성요소(예를 들어, 상이한 캐시 라인 크기를 갖는 제품)들 간에 상호 운용성을 용이하게 한다. 효율을 향상시키기 위해 시스템 내의 보다 조대한 일관성 세분성은 해당 시스템 내에서 보다 미세한 일관성 세분성의 배수가 되는데, 이는 일반적인 시스템이 2의 제곱 수인 바이트를 갖는 일관성 세분성을 사용하기 때문에 일반적인 현상이다.
적어도 하나의 실시예에서, 브리지 변환 유닛은 캐시 일관성 요청을 조대-입도 일관성 허가 요청(예를 들어, 프로세서-인-메모리로부터의 4KB 영역 요청)으로부터 미세-입도 일관성 허가 요청(예를 들어, 호스트까지 64B 캐시 라인)으로 변환한다. 이 변환은 조대 요청의 전체 어드레스 범위에 걸치고(예: 프로세서-인-메모리로부터의 단일 4KB 요청에 대한 응답으로 호스트에 64개의 64B 요청), 수신 측 상에서 대응하는 일관성 제어기에 이 요청을 발행한다. 그 후 수신 브리지 변환 유닛은 요청 브리지 변환 유닛에 완료 신호하기 전에 해당 세트 내의 모든 요청에 대한 응답을 수집한다.
적어도 하나의 실시예에서, 송신 브리지 변환 유닛 또는 수신 브리지 변환 유닛 중 어느 하나는 미세-입도 허가 요청(예를 들어, 호스트로부터의 64B 요구)를 조대 허가를 추적하는 응답기(예를 들어, 프로세서-인-메모리의 4KB 영역)로 전환한다. 송신 브리지 변환 유닛 또는 수신 브리지 변환 유닛은 상기 요청을 원래 요청의 어드레스 범위를 포함하는 조대-입도 영역으로 변환한다. 요청자(예: 호스트)는 요청한 것보다 더 큰 영역에 대한 일관성 권한을 받았음을 인식하지 못할 수 있으며 동일한 지역 내에서 추가 요청을 계속 발행할 수 있다. 비효율을 줄이기 위해, 송신 브리지 변환 유닛은 최근에 수신된 영역 허가의 캐시를 유지할 수 있다. 동일한 요청자의 후속 미세-입도 요청이 이 영역 권한 캐시의 항목과 일치하면, 전송 브리지 변환 장치는 다른 엔티티에 요청을 시작하지 않고 완료 신호를 보낼 수 있다.
상술한 바와 같이, 미세 입도로 일관성 강하에 관한 메시지를 생성하는 시스템에서, 성능을 향상시키기 위해서만 사용되기 때문에, 송신 브리지 변환 유닛은 강등 메시지를 폐기할 수 있다. 다른 실시예들에서, 미세 입도(fine granularity)에서, 송신 브리지 변환 유닛은 조대 입도로 일관성을 추적하는 수신자에게 강등을 통신하기 전에 인접한 조대 입도 영역이 강등될 때까지 강등 메시지를 수집한다. 송신 브리지 변환 유닛은 세밀-입도 강등(fine-grain demotion)을 전달할 수 있고, 수신 브리지 변환 유닛으로 하여금 이들을 조대-입도 영역으로 모으기를 기대할 수 있다. 조대 입도 영역의 다른 부분에 대한 강등 요청을 생성하는 송신 브리지 변환 유닛은 풀(full) 조대-입도 영역의 강등을 강제로 수행하고, 영역 강등을 전달할 수 있다. 적어도 하나의 실시예에서, 송신 브리지 변환 유닛은 이전의 메모리 요청에 기초한 휴리스틱스(heuristics)에 따라 전술한 옵션 중 하나 이상을 수행할 수 있다.
다시 도 3을 참조하면, 쉐도우 디렉토리(324)는 프로세서-인-메모리 내 각각의 데이터 블록의 브리지 일관성 상태를 브리지를 저장하기 위해 별도의 저장 구조를 이용하여 구현될 수 있다. (예를 들어, 프로세서-인-메모리(processor-in-memory)로 적층된 것들 간에 분산된, 또는, 별도의 다이 내 프로세서-인-메모리(102) 내의 SRAM(102)). 그 저장 구조는 다수의 메모리 채널에 물리적으로 분산될 수 있고, 프로세서-인-메모리의 각 메모리 채널은 이 구조에 대한 대역폭 제한을 완화할 수 있도록 별도의 테이블을 유지할 수 있다.
적어도 하나의 실시예에서, 쉐도우 디렉토리(324)는 메모리와 통합되고, 가령, 충분한 추가 비트를 포함하도록 DRAM을 맞춤화하는, 그리고 비-표준 어드레싱 서포트를 필요로 하지 않는, 디자인으로, 데이터 블록을 저장하는 동일한 메모리 행의 비트들의 서브 세트 내의 각각의 데이터 블록에 대한 브리지 일관성 상태를 저장한다. 적어도 하나의 실시예에서, 쉐도우 디렉토리(324)는 데이터 블록들과 별도로 브리지 일관성 상태에 전용되는 각 메모리 채널의 메모리 공간의 서브 세트에 위치한다(예를 들어, 메모리 공간의 최상위 어드레스 범위). 어드레스 매핑은 특정 메모리 어드레스에 대한 캐시 일관성 상태가, DRAM 페이지 충돌을 감소시키기 위해 특정 메모리 어드레스에 대한 데이터를 포함하는 채널 이외의 채널 상에 항상 존재하도록 설계될 수 있다. 어드레스 공간이 프로세서-인-메모리 디바이스들 사이에 그리고 비교적 미세한 입도(즉, 단일 메모리 채널의 용량보다 훨씬 작은 입도)에서 프로세서-인-메모리 내의 채널들 사이에 분산된다면, 그 매핑 기술은 상대적으로 특별한 어드레싱 지원을 거의 하지 않는다. DRAM을 이용하여 쉐도우 디렉토리 및 기술된 메모리 공간 서브세트 대안들은, 최근 액세스된 쉐도우 디렉토리 엔트리를 저장하는 SRAM 캐시로 확장되어, 쉐도우 디렉토리 상태에 액세스하고 수정하는데 필요한 DRAM 액세스를 감소시킬 수 있다.
프로세서-인-메모리 관점에서, 호스트-측 일관성 도메인에 포함되지 않은 호스트의 메모리-측, 마지막 레벨 캐시는 호스트의 일부로 간주된다. 캐시 일관성 브리지 프로토콜은 위에서 설명한 쉐도우 디렉터리 추적 체계에서 기본적으로 호스트에 캐시된 데이터 블록의 상태를 캡처한다. 캐시 일관성 브리지 프로토콜은, 메모리-측 캐시가 해당 데이터를 지닌 유일한 캐시일 경우, 즉, 호스트 디렉토리에 의해 추적되는 다른 캐시에 데이터의 어떤 사본도 존재하지 않는 경우, 호스트 캐시로부터 수정 데이터에 대한 요청을 포함하여, 프로세서-인-메모리 캐시로부터의 캐시 일관성 요청에 응답하여 다른 호스트 캐시가 존재하는 것처럼 메모리-측 최종 레벨 캐시를 수정할 수 있다. 호스트 관점으로부터, 메모리-측 캐시는 캐시 일관성 브리지 프로토콜로부터 어떤 특별한 처치를 요하지 않는다. 그러나 디렉토리 추적 호스트 캐시의 제거가 위에서 설명한대로 프로세서-인-메모리로 전달되면 이러한 메시지는 호스트 메모리-측 캐시의 데이터를 적절히 고려해야 한다. 이러한 메시지는 메모리-측 캐시의 상태가 해당 메시지와 일치하지 않으면 프로세서-인-메모리로 강등을 전달하지 않는다. 선택적으로, 캐시 일관성 브리지 프로토콜은 메모리-측 최후 레벨 캐시로부터의 데이터 블록 축출에 응답하여 이러한 메시지를 생성한다.
따라서, 캐시 일관성 브리지 프로토콜이 설명되었다. 여기에 설명된 구조는(펌웨어를 포함하는) 프로세서상에서 실행되는 소프트웨어를 사용하여 또는 소프트웨어와 하드웨어의 조합에 의해 구현될 수 있다. 여기에 설명된 소프트웨어는 적어도 하나의 유형(즉, 비 일시적) 컴퓨터 판독 가능 매체로 인코딩될 수 있다. 본 명세서에서 언급된 바와 같이, 유형의 컴퓨터 판독 가능 매체는 적어도 디스크, 테이프 또는 다른 자기, 광학 또는 전자 저장 매체를 포함한다. 본 명세서에서 설명된 본 발명의 설명은 예시적이며, 다음의 청구 범위에 설명된 바와 같은 본 발명의 범위를 제한하려는 것이 아니다. 예를 들어, 본 발명은 프로세서-인-메모리 디바이스들이 캐시를 포함하는 실시예에서 설명되었지만, 본 기술 분야의 당업자는 본 명세서의 교시가 캐시를 포함하지 않는 단순한 프로세서-인-메모리 디바이스들과 함께 이용될 수 있고 하지만 호스트 캐시가 프로세서-인-메모리 액세스와 일관성을 가져야 할 것을 요한다. 여기에 개시된 실시 형태의 변형 및 수정은 다음의 청구 범위에 설명된 본 발명의 범위를 벗어나지 않고서 본 명세서에 기재된 설명에 기초하여 이루어질 수 있다.

Claims (15)

  1. 메모리에서의 처리를 위한 캐시 일관성(cache coherence)을 구현하는 시스템으로서,
    상기 시스템은 제 1 캐시 일관성 프로토콜을 구현하는 프로세서-인-메모리(processor-in-memory)를 포함하고,
    상기 프로세서-인-메모리는,
    메모리 다이; 및
    로직 집적 회로 다이를 포함하고,
    상기 로직 집적 회로 다이는:
    상기 메모리 다이에 위치하는 데이터 블록의 카피를 저장하는 대응하는 프로세서의 적어도 하나의 캐시와;
    상기 데이터 블록의 프로세서-인-메모리 일관성 상태를 저장하도록 구성된 프로세서-인-메모리 디렉토리 - 상기 프로세서-인-메모리 일관성 상태는 상기 적어도 하나의 캐시 내의 데이터 블록의 카피의 상태를 나타냄 - 와;
    상기 프로세서-인-메모리 디렉토리의 콘텐츠를 사용하여 상기 데이터 블록의 데이터 일관성을 유지하도록 구성된 인트라-프로세서-인-메모리 일관성 제어기와;
    상기 데이터 블록의 브리지 일관성 상태를 저장하도록 구성된 쉐도우 디렉토리 스토리지 - 상기 브리지 일관성 상태는 프로세서-인-메모리 일관성 상태와 분리되고 구별되며, 상기 프로세서-인-메모리 외부의 모든 컴포넌트들을 단일 추가 잠재적 공유 장치로 나타내고, 그리고 상기 프로세서-인-메모리의 외부에 저장된 상기 데이터 블록의 임의의 외부 카피들의 상태를 나타냄 - 와; 그리고
    상기 프로세서-인-메모리에 결합된 호스트 프로세서의 인트라-호스트 일관성 제어 로직으로부터 일관성 메시지들을 수신하고, 상기 호스트 프로세서의 제 2 캐시 일관성 프로토콜로부터 상기 제 1 캐시 일관성 프로토콜로 상기 일관성 메시지들을 변환하며, 그리고 변환된 일관성 메시지들을 브리지 프로토콜 제어 로직으로 제공하도록 구성된 브리지 프로토콜 변환 로직을 포함하고,
    상기 제 2 캐시 일관성 프로토콜은 상기 제 1 캐시 일관성 프로토콜과 상이하고, 그리고
    상기 브리지 프로토콜 제어 로직은 상기 쉐도우 디렉토리 스토리지의 콘텐츠 및 변환된 일관성 메시지들을 이용하여 상기 데이터 블록의 데이터 일관성을 유지하도록 구성되는
    캐시 일관성을 구현하는 시스템.
  2. 제 1 항에 있어서, 상기 제 2 캐시 일관성 프로토콜은 상기 제 1 캐시 일관성 프로토콜의 블록 크기와 다른 블록 크기를 사용하는
    캐시 일관성을 구현하는 시스템.
  3. 제 1 항에 있어서,
    상기 적어도 하나의 캐시는, 상기 인트라-프로세서-인-메모리 일관성 제어기에 의해 유지되는 상기 프로세서-인-메모리의 일관성 도메인 내에 있는
    캐시 일관성을 구현하는 시스템.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 적어도 하나의 캐시는 연속 기입 캐시이고, 상기 데이터 블록의 상기 브리지 일관성 상태는 노-호스트-복제 상태, 호스트-판독 상태 또는 호스트-기입 상태이며, 그리고
    상기 노-호스트-복제 상태는 브리지 일관성 도메인의 호스트 프로세서들이 호스트 캐시에 상기 데이터 블록의 어떤 부분도 저장하지 않았음을 나타내고, 상기 호스트 판독 상태는 상기 브리지 일관성 도메인의 적어도 하나의 호스트 프로세서가 상기 데이터 블록의 일부를 읽었고 호스트 캐시에 해당 부분의 수정되지 않은 카피가 있을 수 있음을 나타내고, 그리고 상기 호스트-기입 상태는 상기 브리지 일관성 도메인의 적어도 하나의 호스트 프로세서가 상기 데이터 블록의 배타적 소유권을 갖고 호스트 캐시에 데이터 블록을 기입했을 수 있음을 나타내는
    캐시 일관성을 구현하는 시스템.
  5. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 적어도 하나의 캐시는 후기입 캐시이고, 상기 데이터 블록의 상기 브리지 일관성 상태는 노-호스트-복제 상태, 호스트-판독 상태, 호스트-기입 상태 또는 프로세서-인-메모리-수정 상태이며, 그리고
    상기 노-호스트-복제 상태는 브리지 일관성 도메인의 호스트 프로세서들이 호스트 캐시에 상기 데이터 블록의 어떤 부분도 저장하지 않았음을 나타내고, 상기 호스트 판독 상태는 상기 브리지 일관성 도메인의 적어도 하나의 호스트 프로세서가 상기 데이터 블록의 일부를 읽었고 호스트 캐시에 해당 부분의 수정되지 않은 카피가 있을 수 있음을 나타내고, 상기 호스트-기입 상태는 상기 브리지 일관성 도메인의 적어도 하나의 호스트 프로세서가 상기 데이터 블록의 배타적 소유권을 갖고 호스트 캐시에 상기 데이터 블록을 기입했을 수 있음을 나타내고, 그리고 상기 프로세서-인-메모리-수정 상태는 상기 데이터 블록의 일부가 상기 적어도 하나의 캐시에서 상기 프로세서-인-메모리에 의해 수정되었는지를 나타내는
    캐시 일관성을 구현하는 시스템.
  6. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 프로세서-인-메모리는, 상기 프로세서-인-메모리의 일관성 도메인 외부의 메모리-측 캐시를 더 포함하고,
    상기 브리지 프로토콜 제어 로직은 상기 데이터 블록에 대한 메모리 액세스에 응답하여 메모리-측 캐시에 저장된 상기 데이터 블록의 임의의 카피들의 상태를 체크하도록 구성되는
    캐시 일관성을 구현하는 시스템.
  7. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 호스트 프로세서는,
    상기 프로세서-인-메모리로부터 수신된 일관성 메시지들을 상기 제 1 캐시 일관성 프로토콜로부터 상기 제 2 캐시 일관성 프로토콜로 변환하도록 구성된 호스트 브리지 변환 로직과;
    상기 호스트의 일관성 도메인 외부 및 상기 프로세서-인-메모리의 일관성 도메인 외부의 메모리-측 캐시 - 상기 쉐도우 디렉토리 스토리지는 상기 메모리-측 캐시에 저장된 상기 데이터 블록의 임의의 카피의 상태를 캡처함 - 와;
    상기 데이터 블록의 호스트 카피의 호스트 일관성 상태를 저장하도록 구성된 호스트 디렉토리 - 상기 호스트 카피는 상기 호스트 프로세서 내에 저장됨 - 와; 그리고
    상기 호스트 디렉토리를 사용하여 상기 프로세서-인-메모리에 상주하는 상기 데이터 블록과 상기 데이터 블록의 호스트 카피의 데이터 일관성을 유지하도록 구성된 상기 인트라-호스트 일관성 제어 로직을 포함하는
    캐시 일관성을 구현하는 시스템.
  8. 메모리에서의 처리를 위한 캐시 일관성을 구현하는 방법으로서,
    제 1 캐시 일관성 프로토콜을 구현하는 프로세서-인-메모리의 메모리에 상주하는 데이터 블록의 브리지 일관성 상태를 쉐도우 디렉토리에 저장하는 단계 - 상기 브리지 일관성 상태는 상기 데이터 블록의 프로세서-인-메모리 일관성 상태와 분리되고 구별되며, 상기 프로세서-인-메모리 외부의 모든 컴포넌트들을 단일 추가 잠재적 공유 장치로 나타내고, 그리고 상기 프로세서-인-메모리의 외부에 저장된 상기 데이터 블록의 임의의 외부 카피들의 상태를 나타냄 - 와;
    상기 프로세서-인-메모리의 대응하는 프로세서의 적어도 하나의 캐시에 상기 데이터 블록의 카피를 저장하는 단계와;
    상기 데이터 블록의 카피의 프로세서-인-메모리 일관성 상태를, 프로세서-인-메모리 디렉토리에 저장하는 단계 - 상기 프로세서-인-메모리 일관성 상태는 상기 적어도 하나의 캐시에 상주하는 상기 데이터 블록의 카피의 상태를 나타냄 - 와;
    상기 프로세서-인-메모리 디렉토리를 사용하여 상기 적어도 하나의 캐시에 상주하는 상기 데이터 블록의 데이터 일관성을 유지하는 단계와;
    상기 프로세서-인-메모리에 결합된 호스트 프로세서의 인트라-호스트 일관성 제어 로직으로부터 수신된 일관성 메시지들을 상기 호스트 프로세서의 제 2 캐시 일관성 프로토콜로부터 상기 제 1 캐시 일관성 프로토콜로 변환하는 단계 - 상기 제 2 캐시 일관성 프로토콜은 상기 제 1 캐시 일관성 프로토콜과 상이함 - 와; 그리고
    상기 쉐도우 디렉토리의 콘텐츠 및 상기 변환된 일관성 메시지들을 사용하여 상기 데이터 블록의 데이터 일관성을 유지하는 단계를 포함하는,
    캐시 일관성을 구현하는 방법.
  9. 제 8 항에 있어서,
    상기 제 2 캐시 일관성 프로토콜은 상기 제 1 캐시 일관성 프로토콜의 블록 크기와 다른 블록 크기를 사용하는
    캐시 일관성을 구현하는 방법.
  10. 제 8 항 또는 제 9 항에 있어서,
    상기 프로세서-인-메모리의 상기 메모리의 데이터 일관성을 유지하는 단계는 상기 데이터 블록에 대한 액세스에 응답하여 상기 데이터 블록의 상기 브리지 일관성 상태를 업데이트하는 단계를 포함하는
    캐시 일관성을 구현하는 방법.
  11. 제 8 항 또는 제 9 항에 있어서,
    상기 프로세서-인-메모리의 상기 메모리의 데이터 일관성을 유지하는 단계는,
    상기 적어도 하나의 캐시와, 상기 프로세서-인-메모리의 메모리와의 일관성을 유지하는 단계를 포함하고,
    상기 적어도 하나의 캐시는 상기 프로세서-인-메모리의 일관성 도메인 내에 존재하는
    캐시 일관성을 구현하는 방법.
  12. 제 8 항 또는 제 9 항에 있어서,
    상기 프로세서-인-메모리의 상기 메모리의 액세스에 응답하여 상기 프로세서-인-메모리의 메모리-측 캐시를 검사하는 단계; 및
    상기 프로세서-인-메모리의 일관성 도메인 내의 캐시로부터 상기 프로세서-인-메모리의 메모리-측 캐시로 연속 기입 캐시 정책을 구현하는 단계를 포함하고,
    상기 쉐도우 디렉토리 내의 상기 데이터 블록의 상기 브리지 일관성 상태는 노-호스트-복제 상태, 호스트-판독 상태 또는 호스트-기입 상태이며,
    상기 노-호스트-복제 상태는 브리지 일관성 도메인의 호스트 프로세서들이 호스트 캐시에 상기 데이터 블록의 어떤 부분도 저장하지 않았음을 나타내고, 상기 호스트 판독 상태는 상기 브리지 일관성 도메인의 적어도 하나의 호스트 프로세서가 상기 데이터 블록의 일부를 읽었고 호스트 캐시에 해당 부분의 수정되지 않은 카피가 있을 수 있음을 나타내고, 그리고 상기 호스트-기입 상태는 상기 브리지 일관성 도메인의 적어도 하나의 호스트 프로세서가 상기 데이터 블록의 배타적 소유권을 갖고 호스트 캐시에 데이터 블록을 기입했을 수 있음을 나타내는
    캐시 일관성을 구현하는 방법.
  13. 제 8 항 또는 제 9 항에 있어서,
    상기 프로세서-인-메모리의 일관성 도메인 내의 캐시로부터 상기 프로세서-인-메모리의 메모리-측 캐시로 후기입 캐시 정책을 구현하는 단계를 더 포함하고,
    상기 쉐도우 디렉토리 내의 상기 데이터 블록의 상기 브리지 일관성 상태는 노-호스트-복제 상태, 호스트-판독 상태, 호스트-기입 상태, 또는 프로세서-인-메모리-수정 상태이고, 그리고
    상기 노-호스트-복제 상태는 브리지 일관성 도메인의 호스트 프로세서들이 호스트 캐시에 상기 데이터 블록의 어떤 부분도 저장하지 않았음을 나타내고, 상기 호스트 판독 상태는 상기 브리지 일관성 도메인의 적어도 하나의 호스트 프로세서가 상기 데이터 블록의 일부를 읽었고 호스트 캐시에 해당 부분의 수정되지 않은 카피가 있을 수 있음을 나타내고, 상기 호스트-기입 상태는 상기 브리지 일관성 도메인의 적어도 하나의 호스트 프로세서가 상기 데이터 블록의 배타적 소유권을 갖고 호스트 캐시에 상기 데이터 블록을 기입했을 수 있음을 나타내고, 그리고 상기 프로세서-인-메모리-수정 상태는 상기 데이터 블록의 일부가 상기 적어도 하나의 캐시에서 상기 프로세서-인-메모리에 의해 수정되었는지를 나타내는
    캐시 일관성을 구현하는 방법.
  14. 제 8 항 또는 제 9 항에 있어서,
    상기 데이터 블록의 데이터 일관성을 유지하는 단계는 상기 데이터 블록에 대한 메모리 액세스에 응답하여 일관성 메시지들을 생성하는 단계를 포함하는
    캐시 일관성을 구현하는 방법.
  15. 제 8 항 또는 제 9 항에 있어서,
    상기 호스트 프로세서의 호스트 디렉토리 내의 상기 데이터 블록의 호스트 카피의 호스트 일관성 상태를 저장하는 단계; 및
    상기 호스트 일관성 상태를 사용하여 상기 프로세서-인-메모리에 상주하는 상기 데이터 블록과 상기 호스트 프로세서에 상주하는 상기 데이터 블록의 호스트 카피의 데이터 일관성을 유지하는 단계를 더 포함하는
    캐시 일관성을 구현하는 방법.
KR1020187032457A 2016-05-31 2017-05-02 메모리에서의 처리를 위한 캐시 일관성 KR102442079B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/169,118 US10503641B2 (en) 2016-05-31 2016-05-31 Cache coherence for processing in memory
US15/169,118 2016-05-31
PCT/US2017/030586 WO2017209883A1 (en) 2016-05-31 2017-05-02 Cache coherence for processing in memory

Publications (2)

Publication Number Publication Date
KR20190003564A KR20190003564A (ko) 2019-01-09
KR102442079B1 true KR102442079B1 (ko) 2022-09-08

Family

ID=60418710

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187032457A KR102442079B1 (ko) 2016-05-31 2017-05-02 메모리에서의 처리를 위한 캐시 일관성

Country Status (6)

Country Link
US (1) US10503641B2 (ko)
EP (1) EP3465445B1 (ko)
JP (1) JP7160682B2 (ko)
KR (1) KR102442079B1 (ko)
CN (1) CN109154910B (ko)
WO (1) WO2017209883A1 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10866900B2 (en) * 2017-10-17 2020-12-15 Samsung Electronics Co., Ltd. ISA extension for high-bandwidth memory
US10365980B1 (en) * 2017-10-31 2019-07-30 EMC IP Holding Company LLC Storage system with selectable cached and cacheless modes of operation for distributed storage virtualization
US10474545B1 (en) 2017-10-31 2019-11-12 EMC IP Holding Company LLC Storage system with distributed input-output sequencing
KR20190075363A (ko) * 2017-12-21 2019-07-01 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 모듈
US11288195B2 (en) * 2019-03-22 2022-03-29 Arm Limited Data processing
CN110059023B (zh) * 2019-04-04 2020-11-10 创新先进技术有限公司 一种刷新级联缓存的方法、系统及设备
US10922236B2 (en) 2019-04-04 2021-02-16 Advanced New Technologies Co., Ltd. Cascade cache refreshing
US11126537B2 (en) * 2019-05-02 2021-09-21 Microsoft Technology Licensing, Llc Coprocessor-based logging for time travel debugging
US11586369B2 (en) 2019-05-29 2023-02-21 Xilinx, Inc. Hybrid hardware-software coherent framework
CN111176582A (zh) * 2019-12-31 2020-05-19 北京百度网讯科技有限公司 矩阵存储方法、矩阵访问方法、装置和电子设备
US11023375B1 (en) * 2020-02-21 2021-06-01 SiFive, Inc. Data cache with hybrid writeback and writethrough
US11467834B2 (en) * 2020-04-01 2022-10-11 Samsung Electronics Co., Ltd. In-memory computing with cache coherent protocol
KR20210154277A (ko) 2020-06-11 2021-12-21 삼성전자주식회사 메모리 모듈 및 그의 동작 방법
US11360906B2 (en) 2020-08-14 2022-06-14 Alibaba Group Holding Limited Inter-device processing system with cache coherency
KR20220032366A (ko) 2020-09-07 2022-03-15 삼성전자주식회사 가변적인 모드 설정을 수행하는 메모리 장치 및 그 동작방법
EP4024222A1 (en) 2021-01-04 2022-07-06 Imec VZW An integrated circuit with 3d partitioning
JP2023007601A (ja) * 2021-07-02 2023-01-19 株式会社日立製作所 ストレージシステム制御方法及びストレージシステム
US11989142B2 (en) 2021-12-10 2024-05-21 Samsung Electronics Co., Ltd. Efficient and concurrent model execution
US20230281128A1 (en) * 2022-03-03 2023-09-07 Samsung Electronics Co., Ltd. Cache-coherent interconnect based near-data-processing accelerator
US11809323B1 (en) * 2022-06-22 2023-11-07 Seagate Technology Llc Maintaining real-time cache coherency during distributed computational functions

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140149681A1 (en) 2012-11-27 2014-05-29 International Business Machines Corporation Coherent proxy for attached processor
US20140181417A1 (en) * 2012-12-23 2014-06-26 Advanced Micro Devices, Inc. Cache coherency using die-stacked memory device with logic die

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0816474A (ja) * 1994-06-29 1996-01-19 Hitachi Ltd マルチプロセッサシステム
US5829034A (en) * 1996-07-01 1998-10-27 Sun Microsystems, Inc. Method and apparatus for a coherence transformer with limited memory for connecting computer system coherence domains
US6269428B1 (en) * 1999-02-26 2001-07-31 International Business Machines Corporation Method and system for avoiding livelocks due to colliding invalidating transactions within a non-uniform memory access system
US6338123B2 (en) * 1999-03-31 2002-01-08 International Business Machines Corporation Complete and concise remote (CCR) directory
US6751705B1 (en) * 2000-08-25 2004-06-15 Silicon Graphics, Inc. Cache line converter
US6463510B1 (en) * 2000-12-29 2002-10-08 Compaq Information Technologies Group, L.P. Apparatus for identifying memory requests originating on remote I/O devices as noncacheable
US6470429B1 (en) * 2000-12-29 2002-10-22 Compaq Information Technologies Group, L.P. System for identifying memory requests as noncacheable or reduce cache coherence directory lookups and bus snoops
US7177987B2 (en) 2004-01-20 2007-02-13 Hewlett-Packard Development Company, L.P. System and method for responses between different cache coherency protocols
US20050216637A1 (en) * 2004-03-23 2005-09-29 Smith Zachary S Detecting coherency protocol mode in a virtual bus interface
US7167956B1 (en) * 2004-05-03 2007-01-23 Sun Microsystems, Inc. Avoiding inconsistencies between multiple translators in an object-addressed memory hierarchy
US7552236B2 (en) 2005-07-14 2009-06-23 International Business Machines Corporation Routing interrupts in a multi-node system
US7395376B2 (en) 2005-07-19 2008-07-01 International Business Machines Corporation Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of shared memory blocks
US7376799B2 (en) * 2005-07-21 2008-05-20 Hewlett-Packard Development Company, L.P. System for reducing the latency of exclusive read requests in a symmetric multi-processing system
US7748037B2 (en) 2005-09-22 2010-06-29 Intel Corporation Validating a memory type modification attempt
US8539164B2 (en) * 2007-04-30 2013-09-17 Hewlett-Packard Development Company, L.P. Cache coherency within multiprocessor computer system
US7941613B2 (en) 2007-05-31 2011-05-10 Broadcom Corporation Shared memory architecture
US8082400B1 (en) 2008-02-26 2011-12-20 Hewlett-Packard Development Company, L.P. Partitioning a memory pool among plural computing nodes
US8473644B2 (en) * 2009-03-04 2013-06-25 Freescale Semiconductor, Inc. Access management technique with operation translation capability
US8176220B2 (en) 2009-10-01 2012-05-08 Oracle America, Inc. Processor-bus-connected flash storage nodes with caching to support concurrent DMA accesses from multiple processors
US8543770B2 (en) * 2010-05-26 2013-09-24 International Business Machines Corporation Assigning memory to on-chip coherence domains
US20120124297A1 (en) 2010-11-12 2012-05-17 Jaewoong Chung Coherence domain support for multi-tenant environment
WO2012070291A1 (ja) * 2010-11-26 2012-05-31 インターナショナル・ビジネス・マシーンズ・コーポレーション キャッシュコヒーレンシ制御の方法、システムおよびプログラム
US9753858B2 (en) * 2011-11-30 2017-09-05 Advanced Micro Devices, Inc. DRAM cache with tags and data jointly stored in physical rows
WO2013130090A1 (en) 2012-03-02 2013-09-06 Arm Limited Data processing apparatus having first and second protocol domains, and method for the data processing apparatus
US20140018141A1 (en) * 2012-07-11 2014-01-16 Sergey Anikin Method for expanding sales through computer game
US8922243B2 (en) 2012-12-23 2014-12-30 Advanced Micro Devices, Inc. Die-stacked memory device with reconfigurable logic
DE112013005093T5 (de) * 2012-10-22 2015-10-22 Intel Corporation Hochleistungszusammenschaltungsbitübertragungsschicht
US9442852B2 (en) * 2012-11-27 2016-09-13 International Business Machines Corporation Programmable coherent proxy for attached processor
US9251069B2 (en) 2012-12-21 2016-02-02 Advanced Micro Devices, Inc. Mechanisms to bound the presence of cache blocks with specific properties in caches
US9235528B2 (en) 2012-12-21 2016-01-12 Advanced Micro Devices, Inc. Write endurance management techniques in the logic layer of a stacked memory
US9135185B2 (en) 2012-12-23 2015-09-15 Advanced Micro Devices, Inc. Die-stacked memory device providing data translation
US9244629B2 (en) 2013-06-25 2016-01-26 Advanced Micro Devices, Inc. Method and system for asymmetrical processing with managed data affinity
WO2015171905A1 (en) 2014-05-08 2015-11-12 Micron Technology, Inc. In-memory lightweight coherency
US10838865B2 (en) 2014-05-08 2020-11-17 Micron Technology, Inc. Stacked memory device system interconnect directory-based cache coherence methodology
US9542316B1 (en) * 2015-07-23 2017-01-10 Arteris, Inc. System and method for adaptation of coherence models between agents

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140149681A1 (en) 2012-11-27 2014-05-29 International Business Machines Corporation Coherent proxy for attached processor
US20140181417A1 (en) * 2012-12-23 2014-06-26 Advanced Micro Devices, Inc. Cache coherency using die-stacked memory device with logic die

Also Published As

Publication number Publication date
CN109154910B (zh) 2023-08-08
WO2017209883A1 (en) 2017-12-07
JP7160682B2 (ja) 2022-10-25
EP3465445A4 (en) 2020-01-22
US10503641B2 (en) 2019-12-10
JP2019517687A (ja) 2019-06-24
EP3465445A1 (en) 2019-04-10
CN109154910A (zh) 2019-01-04
US20170344479A1 (en) 2017-11-30
KR20190003564A (ko) 2019-01-09
EP3465445B1 (en) 2021-06-23

Similar Documents

Publication Publication Date Title
KR102442079B1 (ko) 메모리에서의 처리를 위한 캐시 일관성
US11908546B2 (en) In-memory lightweight memory coherence protocol
US7373466B1 (en) Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer
US9792210B2 (en) Region probe filter for distributed memory system
JP4230998B2 (ja) リモートキャッシュプレゼンス情報を記録するプロセッサキャッシュを備えたコンピュータシステム
US10402327B2 (en) Network-aware cache coherence protocol enhancement
JP4237142B2 (ja) 統合ディレクトリとプロセッサキャッシュを備えたコンピュータシステム
US7774551B2 (en) Hierarchical cache coherence directory structure
US8397030B2 (en) Efficient region coherence protocol for clustered shared-memory multiprocessor systems
WO2009018005A2 (en) Providing an inclusive shared cache among multiple core-cache clusters
US20130073811A1 (en) Region privatization in directory-based cache coherence
US8285942B2 (en) Region coherence array having hint bits for a clustered shared-memory multiprocessor system
EP1611513B1 (en) Multi-node system in which global address generated by processing subsystem includes global to local translation information
US20030009638A1 (en) Method and apparatus for maintaining cache coherence in a computer system
KR20230070034A (ko) 스케일러블 영역 기반 디렉토리
Bhat et al. Directory Based Protocol for Cache Coherency–Issues & Challenges

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant