KR20220113505A - 제로 값 메모리 압축 - Google Patents

제로 값 메모리 압축 Download PDF

Info

Publication number
KR20220113505A
KR20220113505A KR1020227024154A KR20227024154A KR20220113505A KR 20220113505 A KR20220113505 A KR 20220113505A KR 1020227024154 A KR1020227024154 A KR 1020227024154A KR 20227024154 A KR20227024154 A KR 20227024154A KR 20220113505 A KR20220113505 A KR 20220113505A
Authority
KR
South Korea
Prior art keywords
cache directory
directory entry
data
management device
consistency management
Prior art date
Application number
KR1020227024154A
Other languages
English (en)
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 KR20220113505A publication Critical patent/KR20220113505A/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
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping

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

제로 값 메모리 압축
관련 출원에 대한 상호 참조
본 출원은 2019년 12월 20일에 출원된 미국 정규특허출원 16/723,780 호의 이익을 주장하며, 그 내용은 본 명세서에 참고로 포함된다.
컴퓨터 시스템의 메인 메모리는 전형적으로 DRAM(Dynamic Random Access Memory) 디바이스와 같은 비교적 저렴하고 고밀도의 메모리 디바이스를 포함한다. 그러나 이러한 디바이스에 대한 액세스 시간은 전형적으로 비교적 길다. 따라서, 컴퓨터 시스템들은 또한 전형적으로 성능을 향상시키기 위해 적어도 하나의 캐시 메모리를 포함한다. 캐시 메모리들은 전형적으로 프로세서에 비교적 근접하게 위치되는 비교적 고속 메모리 디바이스들이다. 다중 프로세서 컴퓨터 시스템에서, 각각의 프로세서(또는 프로세서 코어)는 전형적으로 그 자신의 전용 레벨 1(L1) 캐시를 가지며, 일부 경우들에서 다른 캐시들(예를 들어, 레벨 2(L2), 레벨 3(L3))을 다른 프로세서들 또는 프로세서 코어들과 공유한다.
각각의 노드(예를 들어, 프로세서, 코어 또는 코어 컴플렉스)가 전용 캐시를 갖는 다중 노드 컴퓨터 시스템에서, 상이한 노드들에 의해 사용되고 있는 데이터의 일관성(coherency)을 유지하기 위해 기술들이 구현된다. 예를 들어, 프로세서가 특정 메모리 어드레스에서 메인 메모리에 저장된 데이터에 액세스하려고 시도할 경우, 프로세서는 먼저 해당 메모리 어드레스에 대응하는 데이터가 다른 캐시에 저장되고 수정되었는지 여부를 결정해야 한다. 이러한 접근법들 중 일부는 시스템에 의해 현재 사용되고 있는 캐시 라인들을 트래킹하는 데 사용되는 캐시 디렉토리를 포함한다. 경우에 따라 캐시 디렉터리는 컴퓨터 시스템에 필요한 메모리 요청 및 프로브 요청의 수를 줄임으로써 메모리 대역폭을 향상시킨다. 캐시 디렉토리는 예를 들어 애플리케이션 실행 시간 동안 특정 데이터 세트의 로컬 "핫 스팟팅"을 핸들링하기 위해("가드 밴드(guard band)"에 의해) 전형적으로 크기가 크게 된다. 따라서 애플리케이션은 전형적으로 캐시 디렉토리에 사용하지 않은 여분의 엔트리를 남겨둔다.
일부 애플리케이션들에서, 프로세서는 제로 데이터(즉, 제로들만을 포함하는 데이터)를 메인 메모리에 기록한다. 이러한 애플리케이션들은 메모리 삭제들(예를 들어, 다른 목적을 위해 사용하기 위해 메모리를 지우는 것) 또는 고도의 데이터 희소성을 특징으로 하는 데이터세트들을 저장하는 것(예를 들어, 머신 러닝 데이터)을 포함할 수 있다.
더 상세한 이해는 첨부된 도면과 함께 예로서 주어진 다음의 설명으로부터 얻을 수 있다.
도 1은 본 개시의 하나 이상의 특징들이 구현될 수 있는 예시적인 디바이스의 블록도이다.
도 2는 도 1의 디바이스의 블록도이고, 추가적인 세부사항을 예시한다.
도 3은 예시적인 컴퓨팅 시스템의 부분들을 예시하는 블록도이다.
도 4는 예시적인 다중 프로세서 컴퓨팅 시스템의 부분들을 예시하는 블록도이다.
도 5는 캐시 디렉토리의 예시적인 구현예를 예시하는 블록도이다.
도 6은 기록 동작 동안 일관성 관리 디바이스에 의한 제로 데이터 압축을 위한 예시적인 방법을 예시하는 흐름도이고; 및
도 7은 판독 동작 동안 일관성 관리 디바이스에 의한 제로 데이터 압축을 위한 예시적인 방법을 예시하는 흐름도이다.
일부 구현예들은 일관성 관리 디바이스를 제공한다. 일관성 관리 디바이스는 메인 메모리 내의 어드레스에 저장된 데이터를 판독하라는 요청을 수신하는 회로부를 포함한다. 일관성 관리 디바이스는 또한 캐시 디렉토리가 어드레스에 대응하는 캐시 디렉토리 엔트리를 포함하는지 여부를 결정하는 회로부를 포함한다. 일관성 관리 디바이스는 또한, 캐시 디렉토리가 어드레스에 대응하는 캐시 디렉토리 엔트리를 포함하는 경우, 캐시 디렉토리 엔트리가 유효하지 않은 지 여부를 결정하는 회로부를 포함한다. 일관성 관리 디바이스는 또한 캐시 디렉토리 엔트리가 유효하지 않은 경우, 캐시 디렉토리 엔트리가 메모리 어드레스에 대응하는 데이터가 제로 데이터를 포함한다는 표시를 포함하는지 여부를 결정하는 회로부를 포함한다. 일관성 관리 디바이스는 또한 캐시 디렉토리 엔트리가 표시를 포함하는 경우, 요청에 응답하여 제로 데이터를 반환하는(return) 회로부를 포함한다.
일관성 관리 디바이스의 일부 구현예들에서, 표시(indication)는 캐시 디렉토리 엔트리 내의 비트를 포함한다. 일부 구현예들에서, 표시는 캐시 디렉토리 엔트리의 상태 필드에 스페어 상태(spare state)를 포함한다. 일부 구현예들에서, 표시는 캐시 디렉토리 엔트리의 상태 필드 내의 적어도 하나의 비트를 포함한다. 일부 구현예들에서, 표시는 캐시 디렉토리 엔트리의 공유 벡터 필드 내의 비트를 포함한다. 일부 구현예들에서, 일관성 관리 디바이스는 캐시 디렉토리 엔트리가 유효하지 않고 표시를 포함하는 경우 메인 메모리를 판독하지 않고 요청에 응답하여 제로 데이터를 반환한다. 일부 구현예들에서, 일관성 관리 디바이스는 일관성 있는(coherent) 슬레이브 디바이스, 프로브 필터 디바이스, 및/또는 스누프(snoop) 필터 디바이스를 포함한다. 일부 구현예들에서, 일관성 관리 디바이스는 일관성 있는 마스터 디바이스로부터 요청을 수신한다. 일부 구현예들에서, 요청은 비일시적(non-temporal) 판독 동작을 포함한다.
일부 구현예들은 컴퓨터 시스템에서 캐시 일관성을 관리하기 위한, 일관성 관리 디바이스에서 구현되는 방법을 제공한다. 방법은 메인 메모리 내의 어드레스에 저장된 데이터를 판독하기 위한 요청을 수신하는 단계 및 캐시 디렉토리가 어드레스에 대응하는 캐시 디렉토리 엔트리를 포함하는지 여부를 결정하는 단계를 포함한다. 방법은 또한, 캐시 디렉토리가 어드레스에 대응하는 캐시 디렉토리 엔트리를 포함하는 경우, 캐시 디렉토리 엔트리가 유효하지 않은 지 여부를 결정하는 단계를 포함한다. 방법은 또한 캐시 엔트리가 유효하지 않으면, 캐시 디렉토리 엔트리가 메모리 어드레스에 대응하는 데이터가 제로 데이터를 포함한다는 표시를 포함하는지 여부를 결정하는 단계를 포함한다. 방법은 또한 캐시 디렉토리 엔트리가 표시를 포함하는 경우, 요청에 응답하여 제로 데이터를 반환하는 단계를 포함한다.
방법의 일부 구현예들에서, 표시는 캐시 디렉토리 엔트리 내의 비트를 포함한다. 일부 구현예들에서, 표시는 캐시 디렉토리 엔트리의 상태 필드에 스페어 상태를 포함한다. 일부 구현예들에서, 표시는 캐시 디렉토리 엔트리의 상태 필드 내의 적어도 하나의 비트를 포함한다. 일부 구현예들에서, 표시는 캐시 디렉토리 엔트리의 공유 벡터 필드 내의 비트를 포함한다. 일부 구현예들에서, 캐시 디렉토리 엔트리가 유효하지 않고 표시를 포함하는 경우, 일관성 관리 디바이스는 요청에 대응하는 시스템 내의 캐시 엔트리들을 할당하지 않는다. 일부 구현예들에서, 캐시 디렉토리 엔트리가 유효하지 않고 표시를 포함하면, 일관성 관리 디바이스는 메인 메모리를 판독하지 않고 요청에 응답하여 제로 데이터를 반환한다. 일부 구현예들에서, 일관성 관리 디바이스는 일관성 있는 슬레이브 디바이스, 프로브 필터 디바이스, 및/또는 스누프(snoop) 필터 디바이스를 포함한다. 일부 구현예들에서, 일관성 관리 디바이스는 일관성 있는 마스터 디바이스로부터 요청을 수신한다. 일부 구현예들에서, 요청은 비일시적 판독 동작을 포함한다.
일부 구현예들은 일관성 관리 디바이스를 제공한다. 일관성 관리 디바이스는 메인 메모리 내의 어드레스에 데이터를 기록하라는 요청을 수신하는 회로부를 포함한다. 일관성 관리 디바이스는 또한 데이터가 제로 데이터를 포함하는지 여부를 결정하는 회로부를 포함한다. 일관성 관리 디바이스는 또한 캐시 디렉토리가 어드레스에 대응하는 캐시 디렉토리 엔트리를 포함하는지 여부를 결정하는 회로부를 포함한다. 일관성 관리 디바이스는 또한, 데이터가 제로 데이터를 포함하고 캐시 디렉토리가 캐시 디렉토리 엔트리를 포함하는 경우, 캐시 디렉토리 엔트리의 상태를 유효하지 않은 것으로 설정하고, 캐시 디렉토리 엔트리에, 메모리 어드레스에 대응하는 데이터가 제로 데이터를 포함한다는 표시를 설정하는 회로부를 포함한다. 일관성 관리 디바이스는 또한, 캐시 디렉토리가 캐시 디렉토리 엔트리를 포함하지 않으면, 캐시 디렉토리 엔트리를 생성하고, 캐시 디렉토리 엔트리의 상태를 유효하지 않은 것으로 설정하고, 캐시 디렉토리 엔트리에, 메모리 어드레스에 대응하는 데이터가 제로 데이터를 포함한다는 표시를 설정하는 회로부를 포함한다.
일부 구현예들에서, 일관성 관리 디바이스에 의해, 데이터가 제로 데이터를 포함하는지 여부를 결정하는 것은, 일관성 관리 디바이스에 의해, 데이터가 제로들만을 포함하는지 여부를 결정하는 것을 포함한다. 일부 구현예들에서, 일관성 관리 디바이스에 의해, 데이터가 제로 데이터를 포함하는지 여부를 결정하는 것은, 일관성 관리 디바이스에 의해, 요청이 어드레스에 대해 0들의 기록을 지시하는 opcode를 포함하는 명령어를 포함하는지 여부를 결정하는 것을 포함한다. 일부 구현예들에서, 표시는 캐시 디렉토리 엔트리의 상태 필드 내의 적어도 하나의 비트를 포함한다. 일부 구현예들에서, 표시는 캐시 디렉토리 엔트리의 공유 벡터 필드 내의 비트를 포함한다. 일부 구현예들에서, 일관성 관리 디바이스는 데이터가 제로 데이터를 포함하는 경우 메인 메모리에 기록하지 않고 요청에 응답하여 표시를 설정한다. 일부 구현예들에서, 일관성 관리 디바이스는 일관성 있는 슬레이브 디바이스, 프로브 필터 디바이스, 및/또는 스누프(snoop) 필터 디바이스를 포함한다. 일부 구현예들에서, 일관성 관리 디바이스는 일관성 있는 마스터 디바이스로부터 요청을 수신한다. 일부 구현예들에서, 요청은 비일시적 기록 동작을 포함한다.
일부 구현예들은 컴퓨터 시스템에서 캐시 일관성을 관리하기 위한, 일관성 관리 디바이스에서 구현되는 방법을 제공한다. 방법은 메인 메모리 내의 어드레스에 데이터를 기록하라는 요청을 수신하는 단계; 데이터가 제로 데이터를 포함하는지 여부를 결정하는 단계; 캐시 디렉토리가 어드레스에 해당하는 캐시 디렉토리 엔트리를 포함하는지 여부를 결정하는 단계를 포함한다. 방법은 또한, 데이터가 제로 데이터를 포함하고 캐시 디렉토리가 캐시 디렉토리 엔트리를 포함하는 경우, 캐시 디렉토리 엔트리의 상태를 유효하지 않은 것으로 설정하는 단계 및 캐시 디렉토리 엔트리에, 메모리 어드레스에 대응하는 데이터가 제로 데이터를 포함한다는 표시를 설정하는 단계를 포함한다. 방법은 또한, 캐시 디렉토리가 캐시 디렉토리 엔트리를 포함하지 않는 경우, 캐시 디렉토리 엔트리를 생성하는 단계, 캐시 디렉토리 엔트리의 상태를 유효하지 않은 것으로 설정하는 단계 및 캐시 디렉토리 엔트리에, 메모리 어드레스에 대응하는 데이터가 제로 데이터를 포함한다는 표시를 설정하는 단계를 포함한다.
방법의 일부 구현예들에서, 일관성 관리 디바이스에 의해, 데이터가 제로 데이터를 포함하는지 여부를 결정하는 것은 일관성 관리 디바이스에 의해, 데이터가 제로들만을 포함하는지 여부를 결정하는 것을 포함한다. 일부 구현예들에서, 일관성 관리 디바이스에 의해, 데이터가 제로 데이터를 포함하는지 여부를 결정하는 것은, 일관성 관리 디바이스에 의해, 요청이 어드레스에 대해 0들의 기록을 지시하는 opcode를 포함하는 명령어를 포함하는지 여부를 결정하는 것을 포함한다. 일부 구현예들에서, 표시는 캐시 디렉토리 엔트리의 상태 필드 내의 적어도 하나의 비트를 포함한다. 일부 구현예들에서, 표시는 캐시 디렉토리 엔트리의 공유 벡터 필드 내의 비트를 포함한다. 일부 구현예들에서, 데이터가 제로 데이터를 포함하는 경우, 일관성 관리 디바이스는 메인 메모리를 기록하지 않고 요청에 응답하여 표시를 설정한다. 일부 구현예들에서, 일관성 관리 디바이스는 일관성 있는 슬레이브 디바이스, 프로브 필터 디바이스, 및/또는 스누프(snoop) 필터 디바이스를 포함한다. 일부 구현예들에서, 일관성 관리 디바이스는 일관성 있는 마스터 디바이스로부터 요청을 수신한다. 일부 구현예들에서, 요청은 비일시적 기록 동작을 포함한다.
도 1은 본 개시의 하나 이상의 특징이 구현될 수 있는 예시적인 디바이스(100)의 블록도이다. 디바이스(100)는 예를 들어, 컴퓨터, 게이밍 디바이스, 핸드헬드 디바이스, 셋톱 박스, 텔레비전, 모바일 폰, 또는 태블릿 컴퓨터를 포함할 수 있다. 디바이스(100)는 프로세서(102), 메모리(104), 스토리지(106), 하나 이상의 입력 디바이스(108), 및 하나 이상의 출력 디바이스(110)를 포함한다. 디바이스(100)는 또한 선택적으로 입력 드라이버(112) 및 출력 드라이버(114)를 포함할 수 있다. 디바이스(100)는 도 1에 도시되지 않은 추가적인 컴포넌트들을 포함할 수 있다는 것이 이해된다.
다양한 대안들에서, 프로세서(102)는 중앙 프로세싱 유닛(CPU), 그래픽 프로세싱 유닛(GPU), 동일한 다이 상에 위치된 CPU 및 GPU, 또는 하나 이상의 프로세서 코어들을 포함하고, 각각의 프로세서 코어는 CPU 또는 GPU일 수 있다. 다양한 대안들에서, 메모리(104)는 프로세서(102)와 동일한 다이 상에 위치되거나 또는 프로세서(102)와 별도로 위치된다. 메모리(104)는 휘발성 또는 비휘발성 메모리, 예를 들어, 랜덤 액세스 메모리(RAM), 동적 RAM, 또는 캐시를 포함한다.
스토리지(106)는 고정 또는 제거 가능한 스토리지, 예를 들어, 하드 디스크 드라이브, 솔리드 스테이트 드라이브, 광학 디스크, 또는 플래시 드라이브를 포함한다. 입력 디바이스들(108)은 키보드, 키패드, 터치 스크린, 터치 패드, 검출기, 마이크로폰, 가속도계, 자이로스코프, 바이오메트릭 스캐너, 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호들의 송신 및/또는 수신을 위한 무선 로컬 영역 네트워크 카드)을 포함하지만, 이에 제한되지 않는다. 출력 디바이스들(110)은 디스플레이, 스피커, 프린터, 햅틱 피드백 디바이스, 하나 이상의 조명들, 안테나, 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호들의 송신 및/또는 수신을 위한 무선 로컬 영역 네트워크 카드)을 포함하지만, 이에 제한되지 않는다.
입력 드라이버(112)는 프로세서(102) 및 입력 디바이스들(108)과 통신하고, 프로세서(102)가 입력 디바이스들(108)로부터 입력을 수신하도록 허용한다. 출력 드라이버(114)는 프로세서(102) 및 출력 디바이스들(110)과 통신하고, 프로세서(102)가 출력 디바이스들(110)에 출력을 발송하도록 허용한다. 입력 드라이버(112) 및 출력 드라이버(114)는 선택적인 컴포넌트들이며, 입력 드라이버(112) 및 출력 드라이버(114)가 존재하지 않는 경우에 디바이스(100)는 동일한 방식으로 동작할 것이라는 점에 유의한다. 출력 드라이버(116)는 디스플레이 디바이스(118)에 결합되는 가속 프로세싱 디바이스(APD)(116)를 포함한다. APD는 프로세서(102)로부터 컴퓨팅 명령들(commands) 및 그래픽 렌더링 명령들을 수용(accept)하고, 이들 컴퓨팅 및 그래픽 렌더링 명령들을 프로세싱하고, 디스플레이를 위해 디스플레이 디바이스(118)에 픽셀 출력을 제공한다. 아래에서 더 상세히 설명되는 바와 같이, APD(116)는 단일-명령어(instruction)-다중-데이터(SIMD) 패러다임에 따라 계산들을 수행하기 위한 하나 이상의 병렬 프로세싱 유닛들을 포함한다. 따라서, 다양한 기능성이 APD(116)에 의해 또는 그와 함께 수행되는 것으로 본 명세서에서 설명되지만, 다양한 대안들에서, APD(116)에 의해 수행되는 것으로 설명된 기능성(functionality)은 호스트 프로세서(예를 들어, 프로세서(102))에 의해 구동되지 않고 디스플레이 디바이스(118)에 그래픽 출력을 제공하는 유사한 능력들을 갖는 다른 컴퓨팅 디바이스들에 의해 추가적으로 또는 대안적으로 수행된다. 예를 들어, SIMD 패러다임에 따라 프로세싱 태스크들(tasks)을 수행하는 임의의 프로세싱 시스템이 본 명세서에서 설명된 기능성을 수행한다는 것이 고려된다. 대안적으로, SIMD 패러다임에 따라 프로세싱 태스크들을 수행하지 않는 컴퓨팅 시스템들이 본 명세서에서 설명된 기능성을 수행하는 것이 고려된다.
도 2는 APD(116) 상에서 프로세싱 태스크들의 실행과 관련된 추가적인 세부사항들을 예시하는 디바이스(100)의 블록도이다. 프로세서(102)는 프로세서(102)에 의한 실행을 위해 시스템 메모리(104)에 하나 이상의 제어 로직 모듈들을 유지한다. 제어 로직 모듈들은 운영 체제(120), 커널 모드 드라이버(122) 및 애플리케이션들(126)을 포함한다. 이러한 제어 로직 모듈들은 프로세서(102) 및 APD(116)의 동작의 다양한 특징들을 제어한다. 예를 들어, 운영 체제(120)는 하드웨어와 직접 통신하고 프로세서(102) 상에서 실행되는 다른 소프트웨어를 위해 하드웨어에 대한 인터페이스를 제공한다. 커널 모드 드라이버(122)는 예를 들어, APD(116)의 다양한 기능성에 액세스하기 위해 프로세서(102) 상에서 실행되는 소프트웨어(예를 들어, 애플리케이션(126))에 애플리케이션 프로그래밍 인터페이스("API")를 제공함으로써, APD(116)의 동작을 제어한다. 커널 모드 드라이버(122)는 또한 APD(116)의 프로세싱 컴포넌트(아래에서 더 상세히 논의되는 SIMD 유닛(138)과 같은)에 의한 실행을 위한 프로그램을 컴파일하는 저스트 인타임 컴파일러(Just-in-Time compiler)를 포함한다.
APD(116)는 병렬 프로세싱에 적합할 수 있는 그래픽 동작 및 비-그래픽 동작과 같은 선택된 기능에 대한 명령 및 프로그램을 실행한다. APD(116)는 픽셀 연산(pixel operations), 기하학적 계산과 같은 그래픽 파이프라인 동작을 실행하고 프로세서(102)로부터 수신된 명령에 기초하여 디스플레이 디바이스(118)에 이미지를 렌더링하는 데 사용될 수 있다. APD(116)는 또한 프로세서(102)로부터 수신된 명령에 기초하여 비디오, 물리 시뮬레이션, 전산 유체 역학, 또는 다른 태스크와 관련된 동작과 같은 그래픽 동작과 직접 관련되지 않은 컴퓨팅 프로세싱 동작을 실행한다.
APD(116)는 SIMD 패러다임에 따라 병렬 방식으로 프로세서(102)의 요청에 따라 동작들을 수행하는 하나 이상의 SIMD 유닛들(138)을 포함하는 컴퓨팅 유닛들(132)을 포함한다. SIMD 패러다임은 다수의 프로세싱 엘리먼트들이 단일 프로그램 제어 플로우 유닛 및 프로그램 카운터를 공유하여 동일한 프로그램을 실행하지만 상이한 데이터로 그 프로그램을 실행할 수 있다. 일 예에서, 각각의 SIMD 유닛(138)은 16개의 레인들을 포함하고, 여기서 각각의 레인은 SIMD 유닛(138) 내의 다른 레인들과 동일한 시간에 동일한 명령어를 실행하지만 상이한 데이터로 그 명령어를 실행할 수 있다. 모든 레인이 주어진 명령어를 실행할 필요가 없는 경우 레인은 예측(predication)으로 스위칭 오프될 수 있다. 예측은 또한 발산 제어 흐름으로 프로그램을 실행하는 데 사용될 수 있다. 보다 구체적으로, 제어 흐름이 개별 레인에 의해 수행되는 계산들에 기초하는 조건부 브랜치 또는 다른 명령어들을 갖는 프로그램들에 대해, 현재 실행되고 있지 않은 제어 흐름 경로들에 대응하는 레인들의 예측, 및 상이한 제어 흐름 경로들의 직렬 실행은 임의의 제어 흐름을 허용한다.
컴퓨팅 유닛들(132)에서의 실행의 기본 유닛은 작업-아이템(work-item)이다. 각각의 작업-아이템은 특정 레인에 병렬로 실행될 프로그램의 단일 인스턴스화(instantiation)를 나타낸다. 작업-아이템들은 단일 SIMD 프로세싱 유닛(138) 상에서 "웨이브프론트(wavefront)"로서 동시에 실행될 수 있다. 하나 이상의 웨이브프론트들은 동일한 프로그램을 실행하도록 지정된 작업-아이템들의 컬렉션을 포함하는 "작업 그룹"에 포함된다. 작업 그룹을 구성하는 각각의 웨이브프론트를 실행함으로써 작업 그룹을 실행할 수 있다. 대안적으로, 웨이브프론트들은 단일 SIMD 유닛(138) 상에서 순차적으로 또는 상이한 SIMD 유닛들(138) 상에서 부분적으로 또는 완전히 병렬로 실행된다. 웨이브프론트들은 단일 SIMD 유닛(138) 상에서 동시에 실행될 수 있는 작업-아이템들의 최대 컬렉션으로 간주될 수 있다. 따라서, 프로세서(102)로부터 수신된 명령들이 특정 프로그램이 단일 SIMD 유닛(138) 상에서 동시에 실행될 수 없는 정도로 병렬화되어야 한다고 표시하면, 그 프로그램은 둘 이상의 SIMD 유닛들(138) 상에서 병렬화되거나 동일한 SIMD 유닛(138) 상에서 직렬화되는(또는 필요에 따라 병렬화되고 직렬화되는 둘 모두) 웨이브프론트들로 분할된다. 스케줄러(136)는 상이한 컴퓨팅 유닛들(132) 및 SIMD 유닛들(138) 상에서 다양한 웨이브프론트들을 스케줄링하는 것과 관련된 동작들을 수행한다.
컴퓨팅 유닛들(132)에 의해 제공되는 병렬성(parallelism)은 픽셀 값 계산들, 정점 변환들(vertex transformations), 및 다른 그래픽 동작들과 같은 그래픽 관련 동작들에 적합하다. 따라서, 일부 경우들에서, 프로세서(102)로부터 그래픽 프로세싱 명령들을 수용하는 그래픽 파이프라인(134)은 병렬로 실행하기 위해 계산 태스크들을 컴퓨팅 유닛들(132)에 제공한다.
컴퓨팅 유닛들(132)은 또한 그래픽들과 관련되지 않거나 또는 그래픽 파이프라인(134)의 "정상" 동작의 일부로서 수행되지 않은 계산 태스크들(예를 들어, 그래픽 파이프라인(134)의 동작을 위해 수행되는 프로세싱을 보충하기 위해 수행되는 커스텀 동작들)을 수행하기 위해 사용된다. 프로세서(102) 상에서 실행되는 애플리케이션(126) 또는 다른 소프트웨어는 실행을 위해 이러한 계산 태스크를 정의하는 프로그램을 APD(116)로 송신한다.
도 3은 예시적인 컴퓨팅 시스템(300)의 부분들을 예시하는 블록도이다. 일부 예들에서, 컴퓨팅 시스템(300)은 도 1 및 2와 관련하여 도시되고 설명된 바와 같이, 디바이스(100)의 일부 또는 전부를 사용하여 구현된다. 컴퓨팅 시스템(300)은 하나 이상의 코어 컴플렉스들(310A-N), 입력/출력(I/O) 인터페이스들(320), 상호접속(330), 메모리 제어기(들)(340), 및 네트워크 인터페이스(350)를 포함한다. 다른 예들에서, 컴퓨팅 시스템(300)은 추가 컴포넌트들, 상이한 컴포넌트들을 포함하고, 및/또는 상이한 방식으로 배열된다.
일부 구현예들에서, 코어 컴플렉스들(310A-N) 각각은 적어도 하나의 프로세싱 디바이스를 포함한다. 이 예에서, 코어 컴플렉스들(310A-N) 중 적어도 하나는 CPU와 같은 하나 이상의 범용 프로세싱 디바이스를 포함한다. "코어 컴플렉스(core complex)"는 경우에 따라 "프로세싱 노드"로 지칭된다. 일부 구현예들에서, 이러한 프로세서들은 도 1과 관련하여 도시되고 설명된 바와 같이 프로세서(102)를 사용하여 구현된다. 이 예에서, 코어 컴플렉스들(310A-N) 중 적어도 하나는 하나 이상의 데이터 병렬 프로세서들을 포함한다. 데이터 병렬 프로세서들의 예들은 GPU들, 디지털 신호 프로세서들(DSP들), 필드 프로그램 가능 게이트 어레이들(FPGA들), 주문형 집적 회로(ASIC들) 등을 포함한다. 일부 구현예들에서, 이러한 프로세서들은 도 1과 관련하여 도시되고 설명된 바와 같이 APD(116)를 사용하여 구현된다.
일부 구현예들에서, 코어 컴플렉스(310 A-N) 내의 각각의 프로세서 코어는 하나 이상의 레벨들의 캐시들을 갖는 캐시 서브시스템을 포함한다. 일부 구현예들에서, 각각의 코어 컴플렉스(310A-N)는 다중 프로세서 코어들 사이에서 공유되는 캐시(예를 들어, 레벨 3(L3) 캐시)를 포함한다.
메모리 제어기(340)는 코어 컴플렉스들(310A-N)에 의해, 예를 들어 상호접속(330)를 통해 액세스 가능한 적어도 하나의 메모리 제어기를 포함한다. 메모리 제어기(340)는 임의의 적합한 유형의 메모리 제어기 중 하나 이상을 포함한다. 메모리 제어기들 각각은 임의의 수 및 유형의 메모리 디바이스들(도시되지 않음)에 결합되고(또는 이와 달리 통신하고) 액세스를 제어한다. 일부 구현예들에서, 이러한 메모리 디바이스들은 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), NAND 플래시 메모리, 및 NOR 플래시 메모리, 강유전성 랜덤 액세스 메모리(FeRAM), 및/또는 임의의 다른 적합한 메모리 디바이스를 포함한다. 상호접속(330)은 버스, 데이터 패브릭 등과 같이 도 3에 도시된 디바이스들 사이의 통신에 적합한 임의의 컴퓨터 통신 매체를 포함한다.
I/O 인터페이스들(320)은 하나 이상의 I/O 인터페이스들(예를 들어, 주변 컴포넌트 상호접속(PCI) 버스, PCI-확장(PCI-X), PCIE((PCI Express) 버스, 기가비트 이더넷(GBE) 버스, 범용 직렬 버스(USB) 등)을 포함한다. 일부 구현예들에서, I/O 인터페이스들(320)은 도 1과 관련하여 도시되고 설명된 바와 같이 입력 드라이버(112) 및/또는 출력 드라이버(114)를 사용하여 구현된다. 다양한 유형의 주변 디바이스가 I/O 인터페이스(320)에 결합될 수 있다. 이러한 주변 디바이스들은 디스플레이, 키보드, 마우스, 프린터, 스캐너, 조이스틱 또는 다른 유형의 게임 제어기, 매체 기록 디바이스, 외부 스토리지 디바이스들, 네트워크 인터페이스 카드 등을 포함한다(그러나 이에 제한되지 않음). 일부 구현예들에서, 이러한 주변 디바이스들은 도 1과 관련하여 도시되고 설명된 바와 같이 입력 디바이스들(108) 및/또는 출력 디바이스들(118)을 사용하여 구현된다.
도 4는 예시적인 다중 프로세서 컴퓨팅 시스템(400)의 부분들을 예시하는 블록도이다. 시스템(400)은 (예를 들어, 다른 컴포넌트들을 통해) 상호접속(430)을 통해 코어 컴플렉스들(410A-N)과 통신하는 하나 이상의 코어 컴플렉스들(410A-N) 및 하나 이상의 메모리 제어기들(440A-N)을 포함한다. 일부 예들에서, 코어 컴플렉스들(410A-N)은 일관성 있는 마스터들(415A-N)을 통해 상호접속(430)에 결합되고, 메모리 제어기들(440A-N)은 일관성 있는 슬레이브들(445A-N)을 통해 상호접속(430)에 결합된다. 상호접속(430)은 버스, 데이터 패브릭 등과 같이 도 4에 도시된 디바이스들 사이의 통신에 적합한 임의의 컴퓨터 통신 매체를 포함한다. 프로세서 시스템(400)은 예를 위해 코어 컴플렉스들에 대해 설명되지만, 다른 구현예들에서 프로세싱 노드들은 단일 프로세서, 코어 컴플렉스에서 구현되지 않은 프로세서 코어들, 또는 임의의 다른 적합한 프로세싱 노드를 포함한다.
코어 컴플렉스들(410A-N) 각각은 하나 이상의 프로세서 코어들(412A-N)를 각각 포함한다. 일부 구현예들에서, 프로세싱 디바이스들은 코어 컴플렉스들에서 구성되지 않는다는 것에 주목한다. 일부 경우들에서, 그러한 프로세서들은 코어 컴플렉스들이라기보다는 그러한 것으로(예를 들어, 프로세싱 디바이스들로서) 지칭된다. 각각의 코어 컴플렉스(410A-N)는 또한 대응하는 캐시 서브시스템(414A-N)을 포함한다. 각각의 캐시 서브시스템(414A-N)은 코어 컴플렉스(410A-N)에 대한 캐싱을 지원하기 위해 사용가능한 임의의 적합한 수의 캐시 레벨 및 임의의 적합한 캐시 계층 구조를 포함한다.
각각의 코어 컴플렉스(410A-N)는 대응하는 일관성 있는 마스터(415A-N)와 통신한다. 일부 구현예들에서, 일관성 있는 마스터는 상호접속(예를 들어, 상호접속(430))를 통해 흐르는 트래픽을 프로세싱하고, 연결된 CPU 또는 코어 컴플렉스에 대한 일관성을 관리하는 에이전트이다. 일부 구현예들에서, 일관성을 관리하기 위해, 일관성 있는 마스터는 일관성-관련 메시지들 및 프로브들을 수신 및 프로세싱하고, 일관성-관련 요청들 및 프로브들을 생성 및 송신한다.
각각의 코어 컴플렉스(410A-N)는 대응하는 일관성 있는 마스터(415A-N)를 통해 그리고 상호접속(430)을 통해 하나 이상의 일관성 있는 슬레이브들(445A-N)과 통신한다. 일관성 있는 슬레이브는 메모리 제어기(예를 들어, 일관성 있는 슬레이브에 연결된 메모리 제어기)에 대한 일관성을 관리하는 에이전트 디바이스이다. 일부 구현예들에서, 일관성을 관리하기 위해, 일관성 있는 슬레이브는 대응하는 메모리 제어기를 타겟팅하는 요청들 및 프로브들을 수신하고 프로세싱한다.
코어 컴플렉스(410A)는 도 4의 예에서 일관성 있는 마스터(415A) 및 상호접속(430)을 통해 일관성 있는 슬레이브(445A)와 통신한다. 일관성 있는 슬레이브(CS)(445A)는 메모리 디바이스(예를 들어, 메인 메모리 DRAM 디바이스)를 제어하는 메모리 제어기(MC)(440A)와 통신한다.
일관성 있는 슬레이브들(445A-N) 각각은 각각의 캐시 디렉토리(CD)(450A-N)와 통신(또는 이를 포함)한다. 일부 경우들에서, 캐시 디렉토리는 "프로브 필터"로 지칭된다. 캐시 디렉토리(450A)는, 예를 들어, 시스템(400)의 캐시 라인들(예를 들어, 캐시 서브시스템들(414A-N))에 캐싱되는, 메모리 제어기(440A)를 통해 액세스가능한 메모리의 영역들 또는 메모리 어드레스들에 대한 엔트리들을 포함한다. 일부 구현예들에서, 각각의 코어 컴플렉스(410A-N)는 대응하는 일관성 있는 마스터(415A-N) 및 대응하는 일관성 있는 슬레이브들(445A-N)을 통해 임의의 적합한 수의 메모리 제어기들(440A-N)과 통신한다.
프로브들은, 캐시들이 데이터 블록의 복사본을 갖는지 여부를 표시하는 응답을 요청하고, 일부 구현예들에서, 캐시가 데이터 블록을 배치해야 하는 캐시 상태를 표시하기 위해, 일관성 포인트(예를 들어, 일관성 있는 슬레이브)로부터 컴퓨터 시스템 내의 하나 이상의 캐시들로 전달되는 메시지들을 포함한다. 일부 구현예들에서, 일관성 있는 슬레이브가 그의 대응하는 메모리 제어기를 타겟팅하는 메모리 요청(예를 들어, 일관성 있는 슬레이브가 일관성을 관리하는 메모리 제어기에 의해 제어되는 메모리 내의 어드레스 또는 어드레스들 영역에 저장된 데이터에 대한 메모리 요청)을 수신하면, 일관성 있는 슬레이브는 요청이 캐시 서브시스템들 중 임의의 것의 적어도 하나의 캐시 라인에 캐싱된 메모리 어드레스 또는 영역을 타겟팅하는지 여부를 결정하기 위해 그의 대응하는 캐시 디렉토리에 대한 룩업(lookup, 예를 들어, 태그-기반 룩업)을 수행한다.
일부 구현예들에서, 캐시 디렉토리들은 캐시 영역들을 트래킹하고, 여기서 영역은 복수의 캐시 라인들을 포함한다. 트래킹되는 영역의 크기는 실시예 마다 변할 수 있다. "영역"은 본 명세서에서 "페이지"로도 지칭될 수 있음에 유의한다. 일부 이러한 구현예들에서, 일관성 있는 슬레이브가 캐시 요청을 수신하면, 일관성 있는 슬레이브는 요청에 의해 타겟팅되는 영역을 결정하고, 캐시 디렉토리에서 이 영역에 대한 룩업을 수행한다. 룩업이 적중(hit)을 발생하면, 일관성 있는 슬레이브는 적중 엔트리에서 식별되는 프로브를 CPU(들)에 발송한다. 일관성 있는 슬레이브에 의해 생성되는 프로브의 유형은 적중 엔트리에 의해 특정된 일관성 상태에 따른다. 라인-기반 트래킹을 사용하여 본 명세서에서 논의된 예들이 또한 영역-기반 트래킹을 사용하여 구현 가능하다는 것에 유의한다.
일부 구현예들에서, 상호접속(430)는 설명의 용이성을 위해 도 4에 도시되지 않은 다른 컴포넌트들에 연결되고 및/또는 다른 컴포넌트들과 통신한다. 예를 들어, 일부 구현예들에서, 상호접속(430)은 하나 이상의 I/O 인터페이스들 및/또는 하나 이상의 I/O 디바이스들(예를 들어, 도 3과 관련하여 도시되고 설명된 바와 같이 I/O 인터페이스들(320) 및 네트워크 인터페이스들(350)에 대응함)에 대한 연결들을 포함한다.
도 5는 도 4와 관련하여 도시되고 설명된 바와 같은 캐시 디렉토리(450A)의 예시적인 구현예를 예시하는 블록도이다. 캐시 디렉토리(450A)는 제어 유닛(500) 및 어레이(510)를 포함한다. 어레이(510)는 메모리 어드레스 또는 영역의 상태를 저장하기 위한 임의의 적합한 수의 디렉토리 엔트리(520)를 포함한다. 디렉토리 엔트리들(520)의 수는 적합한 레벨의 스래쉬(thrash)를 달성하도록 크기가 정해지고, 따라서, 전형적으로, 본 명세서에서 논의된 바와 같이 제로 트래킹과 같은 다른 목적들을 위해 기회주의적으로 사용가능한(즉, 이용가능한 경우) (예를 들어, 유효하지 않은 상태에서) 이용가능한 다수의 스페어 디렉토리 엔트리들(520)이 존재한다.
일부 구현예들에서, 디렉토리 엔트리들(520) 각각은 상태 필드(550), 공유 벡터 필드(540), 및 태그 필드(530)를 포함한다. 일부 구현예들에서, 디렉토리 엔트리들(520)은 다른 필드들, 상이한 필드들을 포함하고, 및/또는 다른 적합한 방식으로 배열된다. 태그 필드(530)는 메모리 어드레스의 비트들의 서브세트를 특정하는 복수의 어드레스 비트들을 포함한다. 일부 구현예들에서, 태그 필드(530)는 메모리 어드레스의 모든 비트들을 포함한다. 일부 이러한 경우에, 필드는 어드레스 필드로 지칭될 수 있다. 태그 필드(530)의 비트는 디렉토리 엔트리에 맵핑되는 메모리 내의 메모리 위치 또는 메모리 위치들의 그룹을 식별한다. 이 예에서, 태그 필드(530)는 도 4와 관련하여 도시되고 설명된 메모리 제어기(440A)에 의해 제어되는 메모리(예를 들어, DRAM) 내의 메모리 위치의 어드레스 비트들의 서브세트를 표시한다.
공유 벡터(540)는, 존재하는 경우, 시스템 내의 캐시들이 디렉토리 엔트리(520)에 맵핑되는 캐시 라인의 복사본을 갖는지를 표시는 복수의 비트들을 포함한다. 이 예에서, 공유 벡터(540)는, 만약 존재하는 경우, 캐시 서브시스템들(414A-N) 중 어느 것이 디렉토리 엔트리(520)에 대응하는 캐시 라인의 캐싱된 복사본을 갖는지를 표시한다. 상태 필드(550)는 디렉토리 엔트리(520)의 상태를 특정하는 하나 이상의 상태 비트들을 포함한다. 일부 구현예들에서, 상태 필드(550)는 특정 디렉토리 엔트리(520)가 특정 상태에 있음을 표시할 수 있다. 다양한 상태를 표시하기 위한 적합한 수의 비트가 제공된다. 예를 들어, 3개의 상태들이 상태 필드(550)에 의해 표현되는 경우, 일부 구현예들에서 2개의 비트들이 사용된다. 이러한 배열은 상태 필드(550)에 대한 여분의 미사용 비트 값을 제공한다는 점에 유의한다. 유사하게, 6개의 상태가 상태 필드(550)에 의해 표현되는 경우, 3개의 비트가 일부 구현예에서 사용된다. 이러한 배열은 상태 필드(550)에 대한 여분의 2개의 미사용 비트 값들을 제공한다는 점에 유의한다.
도 6은 기록 동작 동안, 본 명세서에서 논의된 일관성 있는 슬레이브 또는 다른 적합한 일관성 관리 디바이스와 같은 일관성 관리 디바이스에 의한 제로 데이터 압축을 위한 예시적인 방법(600)을 예시하는 흐름도이다.
단계(610)에서, 일관성 관리 디바이스는 메인 메모리의 어드레스에 데이터를 기록하라는 요청을 수신하고, 요청이 제로 데이터를 기록할지 여부를 결정한다. 일부 구현예들에서, 요청은 비일시적 기록 동작을 포함한다. 비일시적 기록 동작들은 캐시 구조를 바이패스하지만, 일관성 관리 디바이스에 의해 관측가능하다. 일부 구현예들에서, 일관성 관리 디바이스는 요청이 요청의 페이로드(payload)에 기초하여 제로 데이터를 기록할 것인지 여부를 결정한다(예를 들어, 페이로드에 포함된 데이터가 모두 제로인 경우). 다른 구현예들에서, 모든 것들의 페이로드, 또는 미리 결정된 패턴을 갖는 페이로드와 같은 다른 종류의 데이터가 이러한 방식으로 압축을 위해 검출될 수 있다는 점에 유의한다. 일부 구현예들에서, 일관성 관리 디바이스는 (예를 들어, opcode가 제로 데이터를 기록하는 기록 명령어의 특정 유형을 표시하는 경우) 요청이 요청의 opcode에 기초하여 제로 데이터를 기록할 것인지 여부를 결정한다.
요청이 제로 데이터 이외의 데이터를 기록하는 것인 조건(620)에서, 일관성 관리 디바이스는 단계(630)에서의 전형적인 동작들에 기초하여 데이터의 기록을 핸들링한다(예를 들어, 캐시 디렉토리 룩업, 캐시 무효화, 및 적절한 메모리로의 기록을 수행함). 그렇지 않고, 요청이 제로 데이터를 기록하는 것인 경우, 일관성 관리 디바이스는 그것이 연관되는 캐시 디렉토리 내의 엔트리가 메모리 어드레스에 대응하는 엔트리를 포함하는지 여부를 결정한다. 일부 구현예들에서, 일관성 관리 디바이스는 메모리 어드레스들 또는 메모리 어드레스들의 부분들을 포함하는 캐시 디렉토리 엔트리들 내의 태그 필드들과 메모리 어드레스를 비교함으로써(또는 비교들을 수행하는 캐시 디렉토리에 요청을 전달함으로써) 이러한 결정을 행한다.
캐시 디렉토리가 어드레스에 대응하는 엔트리를 포함하는 조건(640)에서, 캐시 디렉토리 엔트리의 상태는 데이터의 캐싱된 복사본들(예를 들어, 캐시 서브시스템들(414A-N) 내의)이 유효하지 않음을 표시하기 위해 유효하지 않은 것으로 설정되고, 단계(660)에서 제로 표시가 캐시 디렉토리 엔트리에 설정된다. 일부 구현예들에서, 스페어 상태는 무효와 제로 데이터 모두를 표시하기 위해 캐시 디렉토리 엔트리에 설정된다. 캐시 디렉토리가 어드레스에 대응하는 엔트리를 포함하지 않은 조건(640)에서, 스페어, 미사용 또는 유효하지 않은 엔트리들이 캐시 디렉토리에서 이용가능한 경우, 캐시 디렉토리는 단계(650)에서 캐시 디렉토리 엔트리의 상태가 유효하지 않은 것으로 설정되기 전에 어드레스에 대응하는 엔트리를 생성하고, 단계(660)에서 캐시 디렉토리 엔트리에 제로 표시를 설정(또는 둘 모두를 표시하기 위해 스페어 상태를 설정)한다. 스페어, 미사용 또는 유효하지 않은 엔트리들이 캐시 디렉토리에서 이용가능하지 않은 경우, 일관성 관리 디바이스는 단계(630)에서와 같은 전형적인 동작들에 기초하여 데이터의 기록을 핸들링(예를 들어, 캐시 디렉토리 룩업, 캐시 무효화, 및 적절한 메모리로의 기록을 수행)한다.
단계(660)에서의 동작들은 임의의 적합한 순서로 수행되거나, 또는 동시에 또는 동시에 수행된다. 일부 구현예들에서, 제로 데이터 표시는 캐시 디렉토리 엔트리 내의 비트이다. 이러한 방식으로 제로 데이터 표시에 사용되는 비트는 "제로 검출" 또는 "ZD" 비트로서 지칭될 수 있다. 일부 구현예들에서, ZD 비트는 캐시 디렉토리 엔트리의 공유 벡터의 용도 변경된 비트(repurposed bit)이다. 예를 들어, 유효하지 않은 엔트리는 캐시 서브시스템들(414A-N) 중 어느 것도 캐싱된 메인 메모리 내의 어드레스에 대응하는 데이터의 유효한 복사본을 갖지 않음을 암시적으로 표시한다. 따라서, 공유 벡터는 어떤 캐시들이 유효한 복사본들을 포함하는지를 표시하기 위해 필요하지 않고, 제로 데이터를 표시하는 것과 같은 다른 표시들을 위해 용도 변경될 수 있다.
일부 구현예들에서, 제로 표시는 캐시 디렉토리 엔트리의 상태 필드에 설정된 스페어 상태(spare state)이다. 예를 들어, 상태 필드가 3개의 상태들(예를 들어, 캐싱된, 유효하지 않은, 배타적인)을 나타내기 위해 2개의 비트들을 포함하는 경우, 2개의 비트들이 이진 인코딩을 사용하여 4개의 상태들을 표현하기 위해 사용될 수 있기 때문에 스페어 상태가 존재한다. 따라서, 스페어 상태는 제로 검출 또는 ZD 상태로서 할당될 수 있다. 일부 그러한 구현예들에서, ZD 상태는 무효 상태로서 기능하고, 또한 메인 메모리 내의 어드레스에 대응하는 데이터가 제로 데이터임을 표시한다.
일부 구현예들에서, 제로 데이터는 메인 메모리에 기록되지 않거나, 또는 이 때 메인 메모리에 기록되지 않는다. 이는 경우에 따라 메모리 대역폭을 절약하는 장점을 가질 수 있다. 일부 구현예들에서, 제로 데이터 표시가 대응하는 캐시 디렉토리에 설정될 때 데이터를 메인 메모리에 기록할 필요는 없는데, 대응하는 판독 동작은 캐시 디렉토리 엔트리에서의 표시(예를 들어, ZD 비트 또는 ZD 상태)에 기초하여 제로 데이터를 반환할 것이기 때문이다. 제로 데이터 표시가 대응하는 캐시 디렉토리 엔트리에 설정될 때 제로 데이터를 메인 메모리에 기록하지 않는 일부 구현예들은 캐시 디렉토리 엔트리가 퇴거되면(evicted) 제로 데이터를 메인 메모리에 기록하는 로직을 포함한다.
마찬가지로, 일부 구현예들에서, 제로 데이터는 캐싱되지 않는다(예를 들어, 캐시 서브시스템들(414A-N) 중 임의의 것에 할당되지 않는다). 이러한 구현예들에서, 캐시 엔트리가 유효하지 않게 및/또는 ZD 상태로 설정되기 때문에 제로 데이터는 캐싱되지 않으며, 따라서 제로 데이터는 임의의 캐시 또는 메인 메모리로부터 데이터를 페치할 필요 없이 반환된다. 이는 판독 요청에 응답하여 데이터를 반환하기 전에 판독 요청 상에서 데이터를 페치하기 위해 캐시로 프로브 요청을 요구하지 않음으로써 버스 대역폭을 절약하는 장점을 가질 수 있다.
도 7은 판독 동작 동안, 일관성 있는 슬레이브 또는 다른 적합한 일관성 관리 디바이스와 같은 일관성 관리 디바이스에 의한 제로 데이터 압축을 위한 예시적인 방법(700)을 예시하는 흐름도이다.
단계(710)에서, 일관성 관리 디바이스는 메인 메모리 내의 어드레스로부터 데이터를 판독하라는 요청을 수신하고, 일관성 관리 디바이스는 그것이 연관되는 캐시 디렉토리 내의 엔트리가 메모리 어드레스에 대응하는 엔트리를 포함하는지 여부를 결정한다. 일부 구현예들에서, 일관성 관리 디바이스는 메모리 어드레스들, 또는 메모리 어드레스들의 부분들을 포함하는 캐시 디렉토리 엔트리들 내의 태그 필드들과 메모리 어드레스를 비교함으로써(또는 비교들을 수행하는 캐시 디렉토리에 요청을 전달함으로써) 이러한 결정을 행한다. 일부 구현예들에서, 요청은 비일시적 판독 동작을 포함한다. 비일시적 판독 동작들은 캐시 구조를 바이패스하지만, 일관성 관리 디바이스에 의해 관측가능하다.
캐시 디렉토리가 어드레스에 대응하는 엔트리를 포함하지 않는 조건(720)에서, 일관성 관리 디바이스는 단계(730)에서 전형적인 동작들에 기초하여 데이터의 판독을 핸들링한다(예를 들어, 캐시 디렉토리 룩업을 수행하고, 캐시 또는 메인 메모리로부터 적절히 판독한다). 그렇지 않으면, 캐시 디렉토리가 어드레스에 대응하는 엔트리를 포함하지 않는다는 조건(720)에서, 일관성 관리 디바이스는 엔트리가 유효하지 않은 지(예를 들어, 유효하지 않은 상태 또는 ZD 상태를 표시하는 상태 필드를 가짐) 여부를 결정한다.
캐시 엔트리가 유효하지 않은 조건(740)에서, 일관성 관리 디바이스는 단계(730)에서의 전형적인 동작들에 기초하여 데이터의 판독을 핸들링한다. 그렇지 않으면, 캐시 엔트리가 유효하지 않은 조건(740)에서, 일관성 관리 디바이스는 디렉토리 엔트리가 메인 메모리 내의 어드레스로부터 판독될 데이터가 제로 데이터를 포함한다는 표시를 포함하는지(예를 들어, ZD 비트 또는 ZD 상태를 포함함) 여부를 결정한다.
캐시 엔트리가 판독될 데이터가 제로 데이터를 포함한다는 표시를 포함하지 않는다는 조건(750)에서, 일관성 관리 디바이스는 단계(730)에서 전형적인 동작들에 기초하여 데이터의 판독을 핸들링한다. 그렇지 않으면, 캐시 엔트리가 메인 메모리 내의 어드레스로부터 판독될 데이터가 제로 데이터를 포함한다는 표시를 포함하는 조건(750)에서, 일관성 관리 디바이스는 데이터를 판독하기 위한 요청에 응답하여 제로 데이터를 반환한다(단계(760)).
일부 구현예들에서, 제로 데이터는 메인 메모리로부터 또는 캐시로부터 판독되지 않는다; 오히려, 일관성 관리 디바이스(예를 들어, 일관성 있는 슬레이브)는 캐시 디렉토리 엔트리에서의 표시(예를 들어, ZD 비트 또는 ZD 상태)에 기초하여 판독 요청에 응답하여 제로 데이터를 반환한다. 이는 경우에 따라 메모리 대역폭을 절약하는 장점을 가질 수 있다.
마찬가지로, 일부 구현예들에서, 제로 데이터는 캐싱되지 않는다(예를 들어, 캐시 서브시스템들(414A-N) 중 임의의 것에 할당되지 않는다). 이러한 구현예들에서, 캐시 엔트리가 유효하지 않고 및/또는 ZD 상태에 있기 때문에 제로 데이터는 캐싱되지 않으며, 따라서 제로 데이터는 임의의 캐시 또는 메인 메모리로부터 데이터를 페치할 필요 없이 일관성 관리 디바이스(예를 들어, 일관성 있는 슬레이브)에 의해 반환된다. 이는 판독 요청에 응답하여 데이터를 반환하기 전에 데이터를 페치하기 위해 캐시로 프로브 요청을 요구하지 않음으로써 버스 대역폭을 절약하는 장점을 가질 수 있다.
본 명세서의 개시내용에 기초하여 많은 변형들이 가능하다는 것이 이해되어야 한다. 특징 및 엘리먼트가 특정 조합으로 위에서 설명되었지만, 각각의 특징 또는 엘리먼트는 다른 특징 및 엘리먼트 없이 단독으로 또는 다른 특징 및 엘리먼트를 갖거나 갖지 않는 다양한 조합으로 사용될 수 있다.
도면들에 예시되고 그리고/또는 본 명세서에서 설명된 (비제한적으로, 프로세서(102), 입력 드라이버(112), 입력 장치들(108), 출력 드라이버(114), 출력 장치들(110), 가속화된 프로세싱 장치(116), 스케줄러(136), 그래픽 프로세싱 파이프라인(134), 컴퓨팅 유닛들(132), SIMD 유닛들(138)을 포함하는), 다양한 기능 유닛들은 범용 컴퓨터, 프로세서, 또는 프로세서 코어로서, 또는 범용 컴퓨터, 프로세서, 또는 프로세서 코어에 의해 실행가능한 비일시적 컴퓨터 판독가능 매체 또는 다른 매체에 저장된 프로그램, 소프트웨어, 또는 펌웨어로서 구현될 수 있다. 제공된 방법들은 범용 컴퓨터, 프로세서, 또는 프로세서 코어에서 구현될 수 있다. 적합한 프로세서들은, 예를 들어, 범용 프로세서, 특수 목적 프로세서, 종래의 프로세서, 디지털 신호 프로세서(DSP), 복수의 마이크로프로세서들, DSP 코어와 연관된 하나 이상의 마이크로프로세서들, 제어기, 마이크로제어기, ASICs(Application Specific Integrated Circuits), FPGAs(Field Programmable Gate Arrays) 회로들, 임의의 다른 유형의 집적 회로(IC), 및/또는 상태 머신을 포함한다. 이러한 프로세서들은 프로세싱된 하드웨어 기술 언어(HDL) 명령어들의 결과들 및 넷리스트들을 포함하는 다른 중간 데이터(이러한 명령어들은 컴퓨터 판독가능 매체 상에 저장될 수 있음)를 사용하여 제조 프로세스를 구성함으로써 제조될 수 있다. 이러한 프로세싱의 결과는 본 개시의 특징을 구현하는 프로세서를 제조하기 위해 반도체 제조 공정에 사용되는 마스크워크일 수 있다.
본 명세서에 제공된 방법들 또는 흐름도는 범용 컴퓨터 또는 프로세서에 의한 실행을 위해 비일시적 컴퓨터 판독가능 스토리지 매체에 통합된 컴퓨터 프로그램, 소프트웨어 또는 펌웨어로 구현될 수 있다. 비일시적 컴퓨터 판독 가능 스토리지 매체의 예로는 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 레지스터, 캐시 메모리, 반도체 메모리 장치, 내부 하드 디스크 및 이동식 디스크와 같은 자기 매체, 자기 광학 매체, CD-ROM 디스크 및 디지털 다목적 디스크(DVD)와 같은 광학 매체를 포함한다.

Claims (25)

  1. 일관성 관리 디바이스에 있어서,
    메인 메모리 내의 어드레스에 저장된 데이터를 판독하기 위한 요청을 수신하도록 구성되는 회로부;
    캐시 디렉토리가 상기 어드레스에 대응하는 캐시 디렉토리 엔트리를 포함하는지 여부를 결정하도록 구성되는 회로부;
    상기 캐시 디렉토리가 상기 어드레스에 대응하는 상기 캐시 디렉토리 엔트리를 포함하는 경우, 상기 캐시 디렉토리 엔트리가 유효하지 않은 지 여부를 결정하도록 구성되는 회로부;
    상기 캐시 디렉토리 엔트리가 유효하지 않은 경우, 상기 캐시 디렉토리 엔트리가 상기 메모리 어드레스에 대응하는 데이터가 제로 데이터를 포함한다는 표시를 포함하는지 여부를 결정하도록 구성되는 회로부; 및
    상기 캐시 디렉토리 엔트리가 상기 표시를 포함하는 경우, 상기 요청에 응답하여 제로 데이터를 반환하도록 구성되는 회로부를 포함하는, 일관성 관리 디바이스.
  2. 제1항에 있어서, 상기 표시는 상기 캐시 디렉토리 엔트리의 비트, 상기 캐시 디렉토리 엔트리의 상태 필드에서의 스페어 상태, 상기 캐시 디렉토리 엔트리의 상태 필드에서의 비트, 및/또는 상기 캐시 디렉토리 엔트리의 공유 벡터 필드에서의 비트를 포함하는, 일관성 관리 디바이스.
  3. 제1항에 있어서, 상기 일관성 관리 디바이스는, 상기 캐시 디렉토리 엔트리가 유효하지 않고 상기 표시를 포함하는 경우, 상기 메인 메모리를 판독하지 않고 상기 요청에 응답하여 상기 제로 데이터를 반환하도록 구성되는, 일관성 관리 디바이스.
  4. 제1항에 있어서, 상기 일관성 관리 디바이스는, 일관성 있는 슬레이브 디바이스, 프로브 필터 디바이스, 및/또는 스누프 필터 디바이스를 포함하는, 일관성 관리 디바이스.
  5. 제1항에 있어서, 상기 일관성 관리 디바이스는 일관성 있는 마스터 디바이스로부터 상기 요청을 수신하는, 일관성 관리 디바이스.
  6. 제1항에 있어서, 상기 요청은 비일시적(non-temporal) 판독 동작을 포함하는, 일관성 관리 디바이스.
  7. 컴퓨터 시스템에서 캐시 일관성을 관리하는 방법에 있어서, 상기 방법은
    일관성 관리 디바이스에 의해, 메인 메모리 내의 어드레스에 저장된 데이터의 판독 요청을 수신하는 단계;
    상기 일관성 관리 디바이스에 의해, 캐시 디렉토리가 상기 어드레스에 대응하는 캐시 디렉토리 엔트리를 포함하는지 여부를 결정하는 단계;
    상기 캐시 디렉토리가 상기 어드레스에 대응하는 상기 캐시 디렉토리 엔트리를 포함하는 경우, 상기 캐시 디렉토리 엔트리가 유효하지 않은 지 여부를 결정하는 단계;
    상기 캐시 엔트리가 유효하지 않은 경우, 상기 캐시 디렉토리 엔트리가 상기 메모리 어드레스에 대응하는 데이터가 제로 데이터를 포함한다는 표시를 포함하는지 여부를 결정하는 단계; 및
    상기 캐시 디렉토리 엔트리가 상기 표시를 포함하는 경우, 상기 요청에 응답하여 제로 데이터를 반환하는 단계를 포함하는, 캐시 일관성을 관리하는 방법.
  8. 제7항에 있어서, 상기 표시는 상기 캐시 디렉토리 엔트리의 비트, 상기 캐시 디렉토리 엔트리의 상태 필드에서의 스페어 상태, 상기 캐시 디렉토리 엔트리의 상태 필드에서의 비트, 및/또는 상기 캐시 디렉토리 엔트리의 공유 벡터 필드에서의 비트를 포함하는, 캐시 일관성을 관리하는 방법.
  9. 제7항에 있어서, 상기 일관성 관리 디바이스는, 상기 캐시 디렉토리 엔트리가 유효하지 않고 상기 표시를 포함하는 경우, 상기 메인 메모리를 판독하지 않고 상기 요청에 응답하여 상기 제로 데이터를 반환하는, 캐시 일관성을 관리하는 방법.
  10. 제7항에 있어서, 상기 일관성 관리 디바이스는 일관성 있는 마스터 디바이스로부터 상기 요청을 수신하는, 캐시 일관성을 관리하는 방법.
  11. 제7항에 있어서, 상기 요청은 비일시적 판독 동작을 포함하는, 캐시 일관성을 관리하는 방법.
  12. 일관성 관리 디바이스에 있어서,
    메인 메모리의 어드레스에 데이터를 기록하라는 요청을 수신하도록 구성되는 회로부;
    상기 데이터가 제로 데이터를 포함하는지 여부를 결정하도록 구성되는 회로부;
    캐시 디렉토리가 상기 어드레스에 대응하는 캐시 디렉토리 엔트리를 포함하는지 여부를 결정하도록 구성되는 회로부;
    상기 데이터가 제로 데이터를 포함하고 상기 캐시 디렉토리가 상기 캐시 디렉토리 엔트리를 포함하는 경우, 상기 캐시 디렉토리 엔트리의 상태를 유효하지 않은 것으로 설정하고, 상기 캐시 디렉토리 엔트리에, 상기 메모리 어드레스에 대응하는 데이터가 제로 데이터를 포함한다는 표시를 설정하도록 구성되는 회로부; 및
    상기 캐시 디렉토리가 상기 캐시 디렉토리 엔트리를 포함하지 않는 경우, 상기 캐시 디렉토리 엔트리를 생성하고, 상기 캐시 디렉토리 엔트리의 상태를 유효하지 않은 것으로 설정하고, 상기 캐시 디렉토리 엔트리에, 상기 메모리 어드레스에 대응하는 데이터가 제로 데이터를 포함한다는 표시를 설정하도록 구성되는 회로부를 포함하는, 일관성 관리 디바이스.
  13. 제12항에 있어서, 상기 일관성 관리 디바이스에 의해, 상기 데이터가 제로 데이터를 포함하는지 여부를 결정하는 것은, 상기 일관성 관리 디바이스에 의해, 상기 데이터가 제로들만을 포함하는지 여부를 결정하는 것 및/또는 상기 일관성 관리 디바이스에 의해, 상기 요청이 상기 어드레스에 대해 제로들의 기록을 지시하는 opcode를 포함하는 명령어를 포함하는지 여부를 결정하는 것을 포함하는, 일관성 관리 디바이스.
  14. 제12항에 있어서, 상기 표시는 상기 캐시 디렉토리 엔트리의 상태 필드에서의 적어도 하나의 비트, 상기 캐시 디렉토리 엔트리의 상태 필드에서의 스페어 상태, 상기 캐시 디렉토리 엔트리의 상태 필드에서의 비트, 및/또는 상기 캐시 디렉토리 엔트리의 공유 벡터 필드에서의 비트를 포함하는, 일관성 관리 디바이스.
  15. 제12항에 있어서, 상기 일관성 관리 디바이스는, 상기 데이터가 제로 데이터를 포함하는 경우, 상기 메인 메모리에 기록하지 않고 상기 요청에 응답하여 상기 표시를 설정하도록 구성되는, 일관성 관리 디바이스.
  16. 제12항에 있어서, 상기 일관성 관리 디바이스는, 일관성 있는 슬레이브 디바이스, 프로브 필터 디바이스, 및/또는 스누프 필터 디바이스를 포함하는, 일관성 관리 디바이스.
  17. 제12항에 있어서, 상기 일관성 관리 디바이스는 일관성 있는 마스터 디바이스로부터 상기 요청을 수신하는, 일관성 관리 디바이스.
  18. 제12항에 있어서, 상기 요청은 비일시적(non-temporal) 기록 동작을 포함하는, 일관성 관리 디바이스.
  19. 컴퓨터 시스템에서 캐시 일관성을 관리하는 방법에 있어서, 상기 방법은
    일관성 관리 디바이스에 의해, 메인 메모리 내의 어드레스에 데이터를 기록하라는 요청을 수신하는 단계;
    상기 일관성 관리 디바이스에 의해, 상기 데이터가 제로 데이터를 포함하는지 여부를 결정하는 단계;
    상기 일관성 관리 디바이스에 의해, 캐시 디렉토리가 상기 어드레스에 대응하는 캐시 디렉토리 엔트리를 포함하는지 여부를 결정하는 단계;
    상기 데이터가 제로 데이터를 포함하고 상기 캐시 디렉토리가 상기 캐시 디렉토리 엔트리를 포함하는 경우, 상기 캐시 디렉토리 엔트리의 상태를 유효하지 않은 것으로 설정하고, 상기 캐시 디렉토리 엔트리에, 상기 메모리 어드레스에 대응하는 데이터가 제로 데이터를 포함한다는 표시를 설정하는 단계; 및
    상기 캐시 디렉토리가 상기 캐시 디렉토리 엔트리를 포함하지 않는 경우, 상기 캐시 디렉토리 엔트리를 생성하고, 상기 캐시 디렉토리 엔트리의 상태를 유효하지 않은 것으로 설정하고, 상기 캐시 디렉토리 엔트리에, 상기 메모리 어드레스에 대응하는 데이터가 제로 데이터를 포함한다는 표시를 설정하는 단계를 포함하는, 캐시 일관성을 관리하는 방법.
  20. 제19항에 있어서, 상기 일관성 관리 디바이스에 의해, 상기 데이터가 제로 데이터를 포함하는지 여부를 결정하는 것은, 상기 일관성 관리 디바이스에 의해, 상기 데이터가 제로들만을 포함하는지 여부를 결정하는 것 및/또는 상기 일관성 관리 디바이스에 의해, 상기 요청이 상기 어드레스에 대해 제로들의 기록을 지시하는 opcode를 포함하는 명령어를 포함하는지 여부를 결정하는 것을 포함하는, 캐시 일관성을 관리하는 방법.
  21. 제19항에 있어서, 상기 표시는 상기 캐시 디렉토리 엔트리의 상태 필드에서의 적어도 하나의 비트, 상기 캐시 디렉토리 엔트리의 상태 필드에서의 스페어 상태, 상기 캐시 디렉토리 엔트리의 상태 필드에서의 비트, 및/또는 상기 캐시 디렉토리 엔트리의 공유 벡터 필드에서의 비트를 포함하는, 캐시 일관성을 관리하는 방법.
  22. 제19항에 있어서, 상기 데이터가 제로 데이터를 포함하는 경우, 상기 일관성 관리 디바이스는 상기 메인 메모리를 기록하지 않고 상기 요청에 응답하여 상기 표시를 설정하는, 캐시 일관성을 관리하는 방법.
  23. 제19항에 있어서, 상기 일관성 관리 디바이스는, 일관성 있는 슬레이브 디바이스, 프로브 필터 디바이스, 및/또는 스누프 필터 디바이스를 포함하는, 캐시 일관성을 관리하는 방법.
  24. 제19항에 있어서, 상기 일관성 관리 디바이스는 일관성 있는 마스터 디바이스로부터 상기 요청을 수신하는, 캐시 일관성을 관리하는 방법.
  25. 제19항에 있어서, 상기 요청은 비일시적 기록 동작을 포함하는, 캐시 일관성을 관리하는 방법.
KR1020227024154A 2019-12-20 2020-11-19 제로 값 메모리 압축 KR20220113505A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/723,780 US12066944B2 (en) 2019-12-20 2019-12-20 Zero value memory compression
US16/723,780 2019-12-20
PCT/US2020/061360 WO2021126461A1 (en) 2019-12-20 2020-11-19 Zero value memory compression

Publications (1)

Publication Number Publication Date
KR20220113505A true KR20220113505A (ko) 2022-08-12

Family

ID=76438464

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227024154A KR20220113505A (ko) 2019-12-20 2020-11-19 제로 값 메모리 압축

Country Status (6)

Country Link
US (1) US12066944B2 (ko)
EP (1) EP4078383A4 (ko)
JP (1) JP2023507292A (ko)
KR (1) KR20220113505A (ko)
CN (1) CN114846452A (ko)
WO (1) WO2021126461A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230099256A1 (en) * 2021-09-29 2023-03-30 Advanced Micro Devices, Inc. Storing an indication of a specific data pattern in spare directory entries
US20230195632A1 (en) * 2021-12-20 2023-06-22 Advanced Micro Devices, Inc. Probe filter directory management
US11934310B2 (en) * 2022-01-21 2024-03-19 Centaur Technology, Inc. Zero bits in L3 tags

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6973543B1 (en) 2001-07-12 2005-12-06 Advanced Micro Devices, Inc. Partial directory cache for reducing probe traffic in multiprocessor systems
US7284097B2 (en) * 2003-09-30 2007-10-16 International Business Machines Corporation Modified-invalid cache state to reduce cache-to-cache data transfer operations for speculatively-issued full cache line writes
US7356650B1 (en) * 2005-06-17 2008-04-08 Unisys Corporation Cache apparatus and method for accesses lacking locality
US7707361B2 (en) * 2005-11-17 2010-04-27 Apple Inc. Data cache block zero implementation
US7366847B2 (en) 2006-02-06 2008-04-29 Azul Systems, Inc. Distributed cache coherence at scalable requestor filter pipes that accumulate invalidation acknowledgements from other requestor filter pipes using ordering messages from central snoop tag
US7949831B2 (en) * 2007-11-02 2011-05-24 Oracle America, Inc. Maintaining cache coherence using load-mark metadata to deny invalidation of load-marked cache lines
JP5136652B2 (ja) * 2008-11-10 2013-02-06 富士通株式会社 情報処理装置及びメモリ制御装置
US8495299B2 (en) * 2009-11-16 2013-07-23 Microsoft Corporation Non-blocking data transfer via memory cache manipulation
US8874855B2 (en) * 2009-12-28 2014-10-28 Empire Technology Development Llc Directory-based coherence caching
US9418016B2 (en) * 2010-12-21 2016-08-16 Intel Corporation Method and apparatus for optimizing the usage of cache memories
WO2014018038A1 (en) * 2012-07-26 2014-01-30 Empire Technology Development Llc Energy conservation in a multicore chip
WO2014123542A1 (en) * 2013-02-11 2014-08-14 Empire Technology Development Llc Aggregating cache eviction notifications to a directory
US9563251B2 (en) 2013-12-28 2017-02-07 Intel Corporation Representing a cache line bit pattern via meta signaling
JP2016048502A (ja) * 2014-08-28 2016-04-07 富士通株式会社 情報処理装置及びメモリアクセス処理方法
US9934146B2 (en) * 2014-09-26 2018-04-03 Intel Corporation Hardware apparatuses and methods to control cache line coherency
US9684603B2 (en) * 2015-01-22 2017-06-20 Empire Technology Development Llc Memory initialization using cache state
US9971686B2 (en) * 2015-02-23 2018-05-15 Intel Corporation Vector cache line write back processors, methods, systems, and instructions
KR102484262B1 (ko) * 2016-03-14 2023-01-04 삼성전자주식회사 컴퓨팅 시스템, 이의 구동 방법 및 컴파일 방법
US20180004659A1 (en) 2016-07-01 2018-01-04 Intel Corporation Cribbing cache implementing highly compressible data indication
US10379855B2 (en) * 2016-09-30 2019-08-13 Intel Corporation Processors, methods, systems, and instructions to load multiple data elements to destination storage locations other than packed data registers
US10282296B2 (en) * 2016-12-12 2019-05-07 Intel Corporation Zeroing a cache line
US10409727B2 (en) * 2017-03-31 2019-09-10 Intel Corporation System, apparatus and method for selective enabling of locality-based instruction handling
KR102157354B1 (ko) * 2017-11-20 2020-09-17 삼성전자 주식회사 효율적으로 압축된 캐시 라인의 저장 및 처리를 위한 시스템 및 방법
US10956070B2 (en) * 2018-12-11 2021-03-23 International Business Machines Corporation Zeroing a memory block without processor caching
US11216379B2 (en) * 2019-07-30 2022-01-04 Analog Devices International Unlimited Company Fast cache loading with zero fill

Also Published As

Publication number Publication date
US12066944B2 (en) 2024-08-20
EP4078383A4 (en) 2024-01-17
WO2021126461A1 (en) 2021-06-24
JP2023507292A (ja) 2023-02-22
US20210191865A1 (en) 2021-06-24
CN114846452A (zh) 2022-08-02
EP4078383A1 (en) 2022-10-26

Similar Documents

Publication Publication Date Title
JP6707605B2 (ja) 異なるキャッシュ・コヒーレンス・ドメインの間の情報共有技法
US11030126B2 (en) Techniques for managing access to hardware accelerator memory
US9971700B2 (en) Cache with address space mapping to slice subsets
US9218286B2 (en) System cache with partial write valid states
CN106537360B (zh) 用于具有动态分区的共享高速缓存的方法和装置
KR20220113505A (ko) 제로 값 메모리 압축
US9916247B2 (en) Cache management directory where hardware manages cache write requests and software manages cache read requests
CN113448504A (zh) 具有用于实现内部固态驱动器操作的外部软件执行的固态驱动器
US20140075125A1 (en) System cache with cache hint control
US20160055086A1 (en) Dynamic cache partitioning apparatus and method
US20140089600A1 (en) System cache with data pending state
US20170185514A1 (en) Caching policies for processing units on multiple sockets
US8788761B2 (en) System and method for explicitly managing cache coherence
US11526449B2 (en) Limited propagation of unnecessary memory updates
US20070038814A1 (en) Systems and methods for selectively inclusive cache
US9311251B2 (en) System cache with sticky allocation
US10387314B2 (en) Reducing cache coherence directory bandwidth by aggregating victimization requests
KR20210097345A (ko) 캐시 메모리 장치, 이를 포함하는 시스템 및 캐시 메모리 장치의 동작 방법
JP6249120B1 (ja) プロセッサ
US20220197506A1 (en) Data placement with packet metadata
US20190179770A1 (en) Rinsing cache lines from a common memory page to memory
US11321241B2 (en) Techniques to improve translation lookaside buffer reach by leveraging idle resources
US20140281234A1 (en) Serving memory requests in cache coherent heterogeneous systems
US20230101038A1 (en) Deterministic mixed latency cache
US20230205609A1 (en) Scatter-gather atomic optimization

Legal Events

Date Code Title Description
A201 Request for examination