KR20230035326A - 처리와 동시에 더티 캐시 라인을 선택적으로 다시 기록하기 - Google Patents

처리와 동시에 더티 캐시 라인을 선택적으로 다시 기록하기 Download PDF

Info

Publication number
KR20230035326A
KR20230035326A KR1020237002424A KR20237002424A KR20230035326A KR 20230035326 A KR20230035326 A KR 20230035326A KR 1020237002424 A KR1020237002424 A KR 1020237002424A KR 20237002424 A KR20237002424 A KR 20237002424A KR 20230035326 A KR20230035326 A KR 20230035326A
Authority
KR
South Korea
Prior art keywords
cache line
memory
dirty cache
data
frame
Prior art date
Application number
KR1020237002424A
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 KR20230035326A publication Critical patent/KR20230035326A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0857Overlapped cache accessing, e.g. pipeline by multiple requestors
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/455Image or video data
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/121Frame memory handling using a cache memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory

Landscapes

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

Abstract

그래픽 파이프라인(200)은 그래픽 파이프라인에서 프레임을 처리하는 데 사용되는 데이터를 저장하도록 구성된 캐시 라인(310 내지 313)을 갖는 캐시(207, 305)를 포함한다. 그래픽 파이프라인은 캐시에 저장된 데이터를 사용하여 그래픽 파이프라인에 대한 프레임을 처리하는 프로세서(115)를 사용하여 구현된다. 프로세서는 제1 프레임을 처리하고 제1 프레임의 처리와 동시에 더티 캐시 라인을 캐시에서 메모리(105)로 다시 기록한다. 더티 캐시 라인은 캐시에 유지되고 메모리에 다시 기록되는 것에 후속하여 클린으로 표시된다. 일부 경우에, 프로세서는 시스템 메모리 컨트롤러(335)에서의 판독 명령 점유에 기초하여 더티 캐시 라인을 다시 기록하기 위한 우선순위를 나타내는 힌트를 생성한다.

Description

처리와 동시에 더티 캐시 라인을 선택적으로 다시 기록하기
그래픽 처리 장치(GPU)를 포함하는 처리 시스템은 빈번하게 액세스되는 데이터를 저장하기 위해 다양한 속도의 캐시의 계층을 사용하는 캐시 계층(또는 다중-레벨 캐시)을 구현한다. 더 빈번하게 요청되는 데이터는 통상적으로 프로세서 코어 또는 계산 장치에 가깝게 물리적으로(또는 논리적으로) 배치되는 상대적으로 고속인 캐시(예컨대 L1 캐시)에 캐싱된다. 더 높은 레벨의 캐시(예컨대, L2 캐시, L3 캐시 등)는 덜 빈번하게 요청되는 데이터를 저장한다. 마지막 레벨 캐시(LLC)는 최고 레벨(및 최저 액세스 속도) 캐시이며 LLC는 시스템 메모리로부터 직접 데이터를 판독하고 데이터를 시스템 메모리에 직접 기록한다. 캐시는 메모리와 다른데, 왜냐하면 캐시는 캐시 라인에 기록될 필요가 있는 새로운 데이터에 응답하여 캐시 라인의 데이터를 교체하는 캐시 교체 정책을 구현하기 때문이다. 예를 들어, 최저-사용-빈도(LRU) 정책은 LRU 캐시 라인의 데이터를 축출하고 새로운 데이터를 LRU 캐시 라인에 기록함으로써 가장 긴 시간 간격 동안 액세스되지 않은 캐시 라인의 데이터를 대체한다. GPU는 프레임별 기준으로 데이터를 처리하고, 예를 들어, GPU의 그래픽 파이프라인은 한 번에 하나의 프레임을 렌더링한다. 따라서, 그래픽 파이프라인에 대한 데이터를 캐싱하는 데 사용되는 캐시 계층은 하나의 프레임의 끝에서 그리고 후속 프레임의 시작 전에 더티 데이터를 캐시로부터 축출한다. 더티 데이터를 축출하는 것은 더티 캐시 라인을 시스템 메모리에 다시 기록하는 것을 필요로 하는데, 이는 상당한 양의 대역폭을 소비하며 캐시 계층과 시스템 메모리 사이의 트래픽에 대한 병목현상을 초래한다. 병목현상은 후속 프레임의 시작 시 GPU에 상당한 성능 영향을 미치는데, 이는 새로운 데이터를 클린 캐시 라인으로 판독하고 더티 캐시 라인을 시스템 메모리에 다시 기록하기 위한 제한된 대역폭 때문이다.
일부 실시예에 따르면, 장치는 그래픽 파이프라인에서 프레임을 처리하는 데 사용되는 데이터를 저장하도록 구성된 캐시 라인을 포함하는 캐시를 포함한다. 장치는 그래픽 파이프라인을 구현하는 프로세서를 추가로 포함하며, 여기서 프로세서는 제1 프레임을 처리하고 제1 프레임의 처리와 동시에 더티 캐시 라인을 캐시에서 메모리로 다시 기록하도록 구성되며, 여기서 더티 캐시 라인의 데이터는 캐시에 유지되며 메모리에 다시 기록되는 것에 후속하여 클린으로 표시된다. 장치는 다음의 양태 중 하나 또는 임의의 조합을 추가로 가질 수 있다: 프로세서는 시스템 메모리 컨트롤러(SMC)에서의 판독 명령 점유에 기초하여 더티 캐시 라인을 메모리에 선택적으로 다시 기록하도록 구성되고; 프로세서는 판독 명령 점유가 제1 임계값보다 작은 것에 응답하여 더티 캐시 라인의 데이터를 SMC로 전송하도록 구성되고, 여기서 SMC는 프로세서로부터 수신된 데이터를 메모리에 다시 기록하도록 구성되고; 프로세서는 판독 명령 점유가 제1 임계값보다 크고 제2 임계값보다 작은 것에 응답하여 더티 캐시 라인의 데이터를 메모리에 다시 기록하는 것이 우선순위가 낮은 사항임을 나타내는 힌트와 함께 데이터를 SMC로 전송하도록 구성되고; SMC는 힌트를 수신하는 것에 응답하여 데이터를 메모리에 다시 기록하기 전에 보류 중인 판독 요청을 제공하도록 구성되고; 프로세서는 판독 명령 점유가 제2 임계값보다 큰 것에 응답하여 더티 캐시 라인의 데이터를 SMC로 전송하는 것을 우회하도록 구성된다. 장치는 다음의 양태 중 하나 또는 임의의 조합을 추가로 포함할 수 있다: 프로세서는 더티 캐시 라인이 클린으로 표시되는 것에 응답하여 제1 프레임에서 제2 프레임으로 전환하는 동안 더티 캐시 라인을 메모리에 다시 기록하는 것을 우회하도록 구성되고; 프로세서는 제1 프레임의 처리를 완료하는 것과 제2 프레임의 처리를 개시하는 것에 응답하여 클린으로 표시되지 않은 더티 캐시 라인의 데이터를 다시 기록하도록 구성된다.
일부 실시예에 따르면, 방법은 그래픽 파이프라인과 연관된 캐시의 캐시 라인에 저장된 데이터를 사용하여 그래픽 파이프라인에서 제1 프레임을 처리하는 단계를 포함한다. 방법은 제1 프레임의 처리와 동시에 더티 캐시 라인을 캐시에서 메모리로 다시 기록하는 단계, 및 더티 캐시 라인의 데이터를 캐시에 유지하는 단계를 추가로 포함한다. 방법은 더티 캐시 라인이 메모리에 다시 기록되는 것에 후속하여 더티 캐시 라인을 클린으로 표시하는 단계를 추가로 포함한다. 방법은 다음의 양태 중 하나 또는 임의의 조합을 추가로 가질 수 있다: 여기서 더티 캐시 라인을 다시 기록하는 단계는 시스템 메모리 컨트롤러(SMC)에서의 판독 명령 점유에 기초하여 더티 캐시 라인을 메모리에 선택적으로 다시 기록하는 단계를 포함하고: 여기서 더티 캐시 라인을 다시 기록하는 단계는 판독 명령 점유가 제1 임계값보다 작은 것에 응답하여 더티 캐시 라인의 데이터를 SMC로 전송하는 단계를 포함하고; 방법은 SMC로부터 수신된 데이터를 메모리에 다시 기록하는 단계를 추가로 포함하고; 여기서 더티 캐시 라인을 다시 기록하는 단계는 판독 명령 점유가 제1 임계값보다 크고 제2 임계값보다 작은 것에 응답하여 더티 캐시 라인의 데이터를 메모리에 다시 기록하는 것이 우선순위가 낮은 사항임을 나타내는 힌트와 함께 데이터를 SMC로 전송하는 단계를 포함하고, 방법은 힌트를 수신하는 것에 응답하여 데이터를 메모리에 다시 기록하기 전에 SMC에서 보류 중인 판독 요청을 제공하는 단계를 추가로 포함하며; 여기서 더티 캐시 라인을 메모리에 선택적으로 다시 기록하는 단계는 판독 명령 점유가 제2 임계값보다 큰 것에 응답하여 더티 캐시 라인의 데이터를 SMC로 전송하는 것을 우회하는 단계를 포함하고; 방법은 더티 캐시 라인이 클린으로 표시되는 것에 응답하여 제1 프레임에서 제2 프레임으로 전환하는 동안 더티 캐시 라인을 메모리에 다시 기록하는 것을 우회하는 단계를 추가로 포함하며; 또는 방법은 제1 프레임의 처리를 완료하는 것과 제2 프레임의 처리를 개시하는 것에 응답하여 클린으로 표시되지 않은 더티 캐시 라인의 데이터를 다시 기록하는 단계를 추가로 포함한다.
일부 실시예에 따르면, 장치는 그래픽 파이프라인을 구현하도록 구성된 계산 장치의 세트를 포함하고, 계산 장치의 세트와 연관된 캐시 계층의 마지막 레벨 캐시(LLC)를 추가로 포함하고, 여기서 계산 장치는 더티 캐시 라인에 저장된 데이터에 기초하여 제1 프레임을 처리하는 것과 동시에 더티 캐시 라인을 LLC에서 메모리로 다시 기록하도록 구성되고, 여기서 더티 캐시 라인은 메모리에 다시 기록되는 것에 후속하여 클린으로 표시된다. 장치는 다음의 양태 중 하나 또는 임의의 조합을 추가로 가질 수 있다: 계산 장치는 시스템 메모리 컨트롤러(SMC)에 대한 판독 명령 점유에 기초하여 더티 캐시 라인을 LLC에서 메모리로 다시 기록하기 위한 우선순위를 결정하도록 구성된다. 또는 계산 장치는 더티 캐시 라인이 클린으로 표시되는 것에 응답하여 제1 프레임에서 제2 프레임으로 전환하는 동안 더티 캐시 라인을 메모리에 다시 기록하는 것을 우회하도록 구성되고, 여기서 계산 장치는 제1 프레임의 처리를 완료하는 것과 제2 프레임의 처리를 개시하는 것에 응답하여 클린으로 표시되지 않은 더티 캐시 라인의 데이터를 다시 기록하도록 구성된다.
첨부 도면을 참조함으로써 본 개시가 보다 잘 이해되고, 그의 많은 특징 및 이점이 당업자에게 명백해진다. 상이한 도면에서의 동일한 도면 부호의 사용은 유사하거나 동일한 아이템을 지시한다.
도 1은 일부 실시예에 따른, 처리와 동시에 더티 캐시 라인을 선택적으로 다시 기록하는 처리 시스템의 블록도이다.
도 2는 일부 실시예에 따른, 고차 기하학 프리미티브를 처리하여 사전 결정된 해상도에서 3차원(3D) 장면의 래스터화된 이미지를 생성하도록 구성된 그래픽 파이프라인을 도시한다.
도 3은 일부 실시예에 따른 메모리 시스템 부분의 블록도이다.
도 4는 일부 실시예에 따른, 캐시의 데이터를 사용하여 프레임을 처리하는 것과 동시에 더티 캐시 라인을 선택적으로 다시 기록하는 방법의 흐름도이다.
도 1 내지 도 4는 시스템 메모리에 대해 보류 중인 판독 명령의 수를 나타내는 판독 명령 점유에 기초하여 마지막 레벨 캐시(LLC)의 더티 캐시 라인의 데이터를 선택적으로 다시 기록함으로써, 그래픽 처리 장치(GPU)에서의 프레임 전환 동안 마지막 레벨 캐시(LLC)와 시스템 메모리 사이의 이용 가능한 대역폭에서 병목현상을 감소시키기 위한 시스템 및 기술을 개시한다. 시스템 메모리에 다시 기록되는 데이터는 더티 캐시 라인에 유지되며, 이는, 예를 들어 제1 프레임에서 제2 프레임으로 전환하는 동안, 표시된 캐시 라인의 데이터가 시스템 메모리에 다시 기록되어 표시된 캐시 라인이 클린 캐시 라인으로 처리될 수 있음을 나타내도록 표시된다. 일부 실시예에서, 판독 명령 점유를 하나 이상의 임계값과 비교함으로써 더티 캐시 라인이 시스템 메모리에 선택적으로 다시 기록된다. 예를 들어, 판독 명령 점유가 제1 임계값보다 작은 경우, 더티 캐시 라인의 데이터는 데이터를 시스템 메모리에 다시 기록하는 시스템 메모리 컨트롤러(SMC)로 전송된다. 판독 명령 점유가 제2 임계값(제1 임계값보다 큼)보다 큰 경우, 더티 캐시 라인을 시스템 메모리에 다시 기록하라는 요청이 데이터를 시스템 메모리에 다시 기록하는 것이 우선순위가 낮은 사항임을 나타내는 힌트와 함께 SMC로 전송된다. 따라서, SMC는 시스템 메모리에 낮은 우선순위 기록을 수행하기 전에 보류 중인 판독 요청을 제공한다. 판독 명령 점유가 제3 임계값(제2 임계값보다 큼)보다 큰 경우, 시스템 메모리에 더티 캐시 라인을 다시 기록하라는 요청이 SMC로 전송되지 않는다.
도 1은 일부 실시예에 따른, 처리와 동시에 더티 캐시 라인을 선택적으로 다시 기록하는 것을 생성하는 처리 시스템(100)의 블록도이다. 처리 시스템(100)은 동적 랜덤-액세스 메모리(DRAM: dynamic random-access memory)와 같은 비일시적 컴퓨터 판독가능 매체를 사용하여 구현되는 메모리(105) 또는 다른 저장 구성요소를 포함하거나 이에 액세스할 수 있다. 그러나, 일부 경우에, 메모리(105)는 정적 랜덤-액세스 메모리(SRAM: static random-access memory), 비휘발성 RAM 등을 포함하는 다른 유형의 메모리를 사용하여 구현된다. 메모리(105)는 외부 메모리로 지칭되는데, 이는 처리 시스템(100)에서 구현되는 처리 장치의 외부에서 구현되기 때문이다. 또한, 처리 시스템(100)은 메모리(105)와 같은 처리 시스템(100)에서 구현되는 엔티티 간의 통신을 지원하기 위한 버스(110)를 포함한다. 처리 시스템(100)의 일부 실시예는 명확성을 위해 도 1에 도시되지 않은 다른 버스, 브릿지, 스위치, 라우터 등을 포함한다.
상이한 실시예에서, 본 명세서에 기술된 기술은 다양한 병렬 프로세서(예를 들어, 벡터 프로세서, 그래픽 처리 장치(GPU), 범용 GPU(GPGPU), 비-스칼라 프로세서, 고도-병렬 프로세서, 인공 지능(AI) 프로세서, 추론 엔진, 기계 학습 프로세서, 기타 다중 스레드 처리 장치 등) 중 임의의 것에 사용된다. 도 1은 일부 실시예에 따른, 병렬 프로세서, 및 특히 그래픽 처리 장치(GPU)(115)의 예시를 예시한다. 그래픽 처리 장치(GPU)(115)는 디스플레이(120)에 표시를 하기 위해 이미지를 렌더링한다. 예를 들어, GPU(115)는 객체를 렌더링하여 디스플레이(120)에 제공되는 픽셀의 값을 생성하며, 이때 픽셀 값을 사용하여 렌더링된 객체를 나타내는 이미지를 디스플레이 한다. GPU(115)는 명령어를 동시에 또는 병렬로 실행하는 복수의 계산 장치(CU)(121, 122, 123)(본 명세서에서는 "계산 장치(121 내지 123)"로 총칭됨)를 구현한다. 일부 실시예에서, 계산 장치(121 내지 123)는 하나 이상의 단일 명령어-다중 데이터(SIMD: single-instruction-multiple-data) 장치를 포함하고, 계산 장치(121 내지 123)는 작업그룹 프로세서, 셰이더 어레이, 셰이더 엔진 등으로 통합된다. GPU(115)에서 구현된 계산 장치(121 내지 123)의 수는 설계 선택의 문제이고, GPU(115)의 일부 실시예는 도 1에 도시된 것보다 더 많거나 더 적은 계산 장치를 포함한다. 계산 장치(121 내지 123)는 본 명세서에서 논의되는 것과 같이 그래픽 파이프라인을 구현하는 데 사용될 수 있다. GPU(115)의 일부 실시예는 범용 컴퓨팅에 사용된다. GPU(115)는 메모리(105)에 저장된 프로그램 코드(125)와 같은 명령어를 실행하고, GPU(115)는 실행된 명령어의 결과와 같은 정보를 메모리(105)에 저장한다.
또한, 처리 시스템(100)은 버스(110)에 연결되고 따라서 버스(110)를 통해 GPU(115) 및 메모리(105)와 통신하는 중앙 처리 장치(CPU)(130)를 포함한다. CPU(130)는 명령어를 동시에 또는 병렬로 실행하는 복수의 프로세서 코어(131, 132, 133)(본 명세서에서는 "프로세서 코어(131 내지 133)"로 총칭됨)를 구현한다. CPU(130)에서 구현된 프로세서 코어(131 내지 133)의 수는 설계 선택의 문제이고, 일부 실시예는 도 1에 예시된 것보다 더 많거나 더 적은 프로세서 코어를 포함한다. 프로세서 코어(131 내지 133)는 메모리(105)에 저장된 프로그램 코드(135)와 같은 명령어를 실행하고, CPU(130)는 실행된 명령어의 결과와 같은 정보를 메모리(105)에 저장한다. 또한, CPU(130)는 GPU(115)에 드로우 콜을 발행함으로써 그래픽 처리를 개시할 수 있다. CPU(130)의 일부 실시예는 동시에 또는 병렬로 명령어를 실행하는 다수의 프로세서 코어(명확성을 위해 도 1에 도시되지 않음)를 구현한다.
입력/출력(I/O) 엔진(145)은 디스플레이(120) 뿐만 아니라 키보드, 마우스, 프린터, 외부 디스크 등과 같은 처리 시스템(100)의 다른 요소와 연관된 입력 또는 출력 작동을 처리한다. I/O 엔진(145)은 버스(110)와 결합되어 I/O 엔진(145)이 메모리(105), GPU(115), 또는 CPU(130)와 통신한다. 예시된 실시예에서, I/O 엔진(145)은 컴팩트 디스크(CD), 디지털 비디오 디스크(DVD) 등과 같은 비일시적 컴퓨터 판독가능 매체를 사용하여 구현되는 외부 저장 구성요소(150)에 저장된 정보를 판독한다. 또한, I/O 엔진(145)은 GPU(115) 또는 CPU(130)에 의한 처리 결과와 같은 정보를 외부 저장 구성요소(150)에 기록할 수 있다.
예시된 실시예에서, GPU(115)의 계산 장치(121 내지 123)는 본 명세서에서 "캐시(151 내지 153)"로 총칭되는 하나 이상의 캐시(151, 152, 153)를 포함한다(또는 이와 연관된다). 캐시(151 내지 153)는 L1 캐시, L2 캐시, L3 캐시, 또는 캐시 계층의 다른 캐시를 포함할 수 있다. 캐시(151 내지 153)의 부분은 계산 장치(121 내지 123)에서 실행되는 그래픽 파이프라인을 위한 텍스처 캐시를 구현하는 데 사용된다. 예시된 실시예에서, 캐시(151 내지 153)는 캐시 계층에서 최고-레벨 캐시인 마지막 레벨 캐시(LLC)이다(또는 포함한다). 따라서, 데이터는 메모리(105)에서 캐시(151 내지 153)로 직접 판독되고, 데이터는 캐시(151 내지 153)에서 메모리(105)로 바로 다시 판독된다.
또한, 처리 시스템(100)은 처리 시스템의 엔티티로부터 메모리 액세스 요청을 수신하는 시스템 메모리 컨트롤러(SMC)(155)를 포함한다. SMC(155)는 메모리(105)에 저장된 데이터를 사용하여 메모리 액세스 요청을 서비스한다. 예시된 실시예에서, 계산 장치(121 내지 123)는 그래픽 파이프라인의 프레임을 처리한다. 프레임의 처리는 캐시(151 내지 153) 중 하나 이상의 캐시 라인에 데이터를 기록하는 것을 포함한다. 아직 메모리(105)에 다시 기록되지 않은, 계산 장치(121 내지 123)에 의해 기록된 데이터를 포함하는 캐시 라인은 "더티" 캐시 라인으로 지칭된다. 더티 캐시 라인은 컴퓨터(121 내지 123)에 의해 처리된 프레임 간의 전환 동안 캐시(151 내지 153)로부터 축출된다. 더티 캐시 라인을 축출하는 것은 더티 캐시 라인의 데이터를 메모리(105)에 다시 기록하는 것을 포함한다. 그러나, 캐시(151 내지 153)의 모든 더티 캐시 라인을 축출하는 데 필요한 대역폭 및 처리 전력은 새로운 프레임을 위해 데이터를 캐시(151 내지 153)로 인출하고 데이터를 처리하는 것을 시작하기 위해 이용가능한 대역폭 및 처리 전력을 상당히 감소시킬 수 있다.
이 문제를 해결하기 위해, 계산 장치(121 내지 123)는 해당 프레임을 처리하는 것과 동시에 하나 이상의 더티 캐시 라인을 캐시(151 내지 153)에서 메모리(105)로 다시 기록한다. 또한, 메모리(105)에 다시 기록되었던 더티 캐시 라인은 캐시(151 내지 153)에 유지되어, 더티 캐시 라인의 데이터가 현재 프레임의 처리를 위해 이용가능하도록 한다. 그러나, 더티 캐시 라인은 메모리에 다시 기록되는 것에 후속하여 클린으로 표시되어 더티 캐시 라인이 프레임 간의 전환 동안 메모리에 다시 기록될 필요가 없으며, 그에 따라 전환 동안 메모리 대역폭 및 처리 전력을 보존한다. 일부 경우에, 계산 장치(121 내지 123)는 SMC(155)에서의 판독 명령 점유에 기초하여 더티 캐시 라인을 다시 기록하기 위한 우선순위를 나타내는 힌트를 생성한다.
도 2는 일부 실시예에 따른, 고차 기하학 프리미티브를 처리하여 사전 결정된 해상도에서 3차원(3D) 장면의 래스터화된 이미지를 생성하도록 구성된 그래픽 파이프라인(200)을 도시한다. 그래픽 파이프라인(200)은 도 1에 도시된 처리 시스템(100)의 일부 실시예에서 구현된다. 그래픽 파이프라인(200)의 예시된 실시예는 DX11 사양에 따라 구현된다. 그래픽 파이프라인(200)의 다른 실시예는 Vulkan, Metal, DX12 등과 같은 다른 애플리케이션 프로그래밍 인터페이스(API)에 따라 구현된다. 그래픽 파이프라인(200)은 래스터화 이전의 그래픽 파이프라인(200)의 부분을 포함하는 기하학 부분(201)과 래스터화 이후의 그래픽 파이프라인(200)의 부분을 포함하는 픽셀 처리 부분(202)으로 세분된다.
그래픽 파이프라인(200)은 버퍼를 구현하고 정점 데이터, 텍스처 데이터 등을 저장하는 데 사용되는 하나 이상의 메모리 또는 캐시의 계층과 같은 저장 자원(205)에 액세스할 수 있다. 예시된 실시예에서, 저장 자원(205)은 그래픽 파이프라인(200)에 의해 렌더링되는 동안 자주 사용되는 데이터를 캐싱하는 데 사용되는 데이터 및 캐시(207)를 저장하는 데 사용되는 로컬 데이터 저장(LDS)(206) 회로부를 포함한다. 저장 자원(205)은 도 1에 도시된 시스템 메모리(105)의 일부 실시예를 사용하여 구현된다. 본 명세서에서 논의되는 것과 같이, 캐시(207)의 더티 캐시 라인은 더티 캐시 라인의 데이터를 사용하여 프레임을 처리하는 것과 동시에 시스템 메모리에 선택적으로 다시 기록되어 그래픽 파이프라인(200)에서 메모리 대역폭을 보존한다.
입력 어셈블러(210)는 장면의 모델의 부분을 나타내는 객체를 정의하는 데 사용되는 저장 자원(205)으로부터의 정보에 액세스한다. 프리미티브의 예는 도 2에 삼각형(211)으로 도시되어 있지만, 그래픽 파이프라인(200)의 일부 실시예에서 다른 유형들의 프리미티브가 처리된다. 삼각형(203)은 하나 이상의 에지(214)에 의해 연결되는 하나 이상의 정점(212)을 포함한다(명확성을 위해 도 2에 각각 하나씩만 도시됨). 정점(212)은 그래픽 파이프라인(200)의 기하학 처리 부분(201)에서 음영 처리된다.
예시된 실시예에서 소프트웨어로 구현되는 정점 셰이더(215)는 논리적으로 프리미티브의 단일 정점(212)을 입력으로 수신하고 단일 정점을 출력한다. 정점 셰이더(215)와 같은 셰이더의 일부 실시예는 대규모 단일-명령어-다중-데이터(SIMD) 처리를 구현하여 다수의 정점이 동시에 처리되도록 한다. 그래픽 파이프라인(200)은 통합된 셰이더 모델을 구현하여 그래픽 파이프라인(200)에 포함된 모든 셰이더가 공유된 대규모 SIMD 계산 장치 상에 동일한 실행 플랫폼을 갖는다. 따라서, 정점 셰이더(215)를 포함하여, 셰이더는 본 명세서에서 통합된 셰이더 풀(216)로 지칭되는 공통 자원 세트를 사용하여 구현된다.
헐 셰이더(218)는 입력 패치를 정의하는 데 사용되는 입력 고차 패치 또는 제어 지점에서 작동한다. 헐 셰이더(218)는 테셀레이션 인자 및 다른 패치 데이터를 출력한다. 일부 실시예에서, 헐 셰이더(218)에 의해 생성된 프리미티브는 테셀레이터(220)에 제공된다. 테셀레이터(220)는 헐 셰이더(218)로부터 객체(예를 들어 패치)를 수신하고, 예를 들어, 헐 셰이더(218)에 의해 테셀레이터(220)에 제공된 테셀레이션 인자에 기초하여 입력 객체를 테셀레이션함으로써, 입력 객체에 대응하는 프리미티브를 식별하는 정보를 생성한다. 테셀레이션은 패치와 같은 입력 고차 프리미티브를, 예를 들어, 테셀레이션 프로세스에 의해 생성된 프리미티브의 세분성을 특정하는 테셀레이션 인자에 의해 표시되는 것과 같이, 더 미세한 세부 수준을 나타내는 저차 출력 프리미티브 세트로 세분한다. 따라서, 장면의 모델은 (메모리 또는 대역폭을 절약하기 위해) 더 적은 수의 고차 프리미티브에 의해 표현되고, 고차 프리미티브를 테셀레이션함으로써 추가 세부사항이 추가된다.
도메인 셰이더(224)는 도메인 위치 및 (선택적으로) 다른 패치 데이터를 입력한다. 도메인 셰이더(224)는 제공된 정보에 대해 작동하고, 입력 도메인 위치 및 다른 정보에 기초하여 출력에 대한 단일 정점을 생성한다. 예시된 실시예에서, 도메인 셰이더(224)는 삼각형(211)과 테셀레이션 인자에 기초하여 프리미티브(222)를 생성한다. 기하학 셰이더(226)는 입력 프리미티브를 수신하고 입력 프리미티브에 기초하여 기하학 셰이더(226)에 의해 생성되는 최대 4개의 프리미티브를 출력한다. 예시된 실시예에서, 기하학 셰이더(226)는 테셀레이션된 프리미티브(222)에 기초하여 출력 프리미티브(228)를 생성한다.
하나의 프리미티브 스트림이 하나 이상의 스캔 컨버터(230)에 제공되고, 일부 실시예에서, 최대 4개의 프리미티브 스트림이 저장 자원(205)의 버퍼에 연결된다. 스캔 컨버터(230)는 음영 작동 및 클리핑, 투시 분할, 시저링, 및 뷰포트 선택 등과 같은 다른 작동을 수행한다. 스캔 컨버터(230)는 그래픽 파이프라인(200)의 픽셀 처리 부분(202)에서 후속적으로 처리되는 픽셀의 세트(232)를 생성한다.
예시된 실시예에서, 픽셀 셰이더(234)는 픽셀 흐름(예를 들어, 픽셀의 세트(232)를 포함)을 입력하고 입력 픽셀 흐름에 응답하여 제로 또는 다른 픽셀 흐름을 출력한다. 출력 병합기 블록(236)은 픽셀 셰이더(234)로부터 수신된 픽셀에 대한 블렌드, 깊이, 스텐실(stencil), 또는 다른 작동을 수행한다.
그래픽 파이프라인(200)의 일부 또는 모든 셰이더는 저장 자원(205)에 저장된 텍스처 데이터를 사용하여 텍스처 맵핑을 수행한다. 예를 들어, 픽셀 셰이더(234)는 저장 자원(205)으로부터 텍스처 데이터를 판독하고 텍스처 데이터를 사용하여 하나 이상의 픽셀을 셰이딩할 수 있다. 이어서, 셰이딩된 픽셀은 사용자에게 보여주기 위해 디스플레이에 제공된다. 본 명세서에서 논의되는 것과 같이, 그래픽 파이프라인(200)에서 셰이더에 의해 사용되는 텍스처 데이터는 캐시(207)를 사용하여 캐싱된다. 캐시(207)의 더티 캐시 라인은 캐시(207)의 데이터를 사용하여 그래픽 파이프라인(200)의 프레임을 처리하는 것과 동시에 다시 기록된다.
도 3은 일부 실시예에 따른 메모리 시스템(300)의 부분의 블록도이다. 메모리 시스템(300)은 도 1에 도시된 처리 시스템(100) 및 도 2에 도시된 그래픽 파이프라인(200)의 일부 실시예에서 구현된다. 메모리 시스템(300)은 본 명세서에서 "캐시 라인(310 내지 313)"으로 총칭되는 캐시 라인(310, 311, 312, 313)을 포함하는 캐시(305)를 포함한다. 그래픽 파이프라인에 의해 사용되는 데이터는 SMC(330)로 요청(325)을 전송하는 판독/기록 회로부(320)를 사용하여 캐시 라인(310 내지 313) 중 하나 이상으로 인출된다. SMC(330)는 요청된 데이터를 대응하는 메모리로부터 인출하고 요청된 데이터를 판독/기록 회로부(320)에 제공함으로써 요청(325)을 제공하며, 이는 요청된 데이터를 캐시 라인(310 내지 313) 중 하나에 기록한다.
판독/기록 회로부(320)는 그래픽 파이프라인에서 처리되는 프레임 간의 전환 동안 SMC(330)를 통해 더티 캐시 라인(310 내지 313)의 데이터를 메모리에 다시 기록한다. 또한, 판독/기록 회로부(320)는 캐시(305)의 데이터를 사용하여 프레임을 처리하는 것과 동시에 SMC(330)를 통해 일부 더티 캐시 라인(310 내지 313)의 데이터를 메모리에 다시 기록한다. 더티 캐시 라인(310 내지 313)의 데이터는 캐시(305)에 유지되고, 더티 캐시 라인(310 내지 313)은 데이터가 다시 기록되었음을 나타내도록 표시된다. 따라서, 더티 캐시 라인(310 내지 313)은 프레임 간의 전환 동안 메모리에 다시 기록될 필요가 없는 클린 캐시 라인으로 처리된다. 예시된 실시예에서, 캐시(305)는 캐시 라인(310 내지 313)과 연관된 상태 마커(335)를 포함한다. 상태 마커(335)는 캐시 라인(310 및 313)이 클린하며(즉, 캐시 라인(310 및 313)의 데이터는 처리하는 동안 수정되지 않았고, 따라서 메모리의 연관된 어드레스에 현재 저장된 데이터에 대응함), 캐시 라인(311)은 더티하다는 것(즉, 캐시 라인(311)의 데이터는 처리하는 동안 수정되었지만 아직 메모리에 다시 기록되지 않았음)을 나타낸다. 또한, 상태 마커(335)는 캐시 라인(312)이 클린/다시 기록된(CLEAN/WB) 상태에 있음을 나타내며, 이는 캐시 라인(312)이 더티하지만 캐시 라인(312)의 데이터가 메모리에 다시 기록되어 프레임 전환 동안 클린 캐시 라인으로 처리될 수 있음을 나타낸다.
일부 실시예에서, 판독/기록 회로부(320)는 요청(325)을 갖는 힌트를 포함하여 더티 캐시 라인으로부터 데이터를 다시 기록하라는 요청과 연관된 우선순위를 나타낸다. 힌트는 판독 명령 점유, 즉, SMC(330)에 의해 아직 서비스되지 않은 보류 중인 판독 명령을 포함하는 SMC(330)의 대기열 또는 버퍼의 점유에 기초하여 결정된다. 판독 명령 점유가 상대적으로 낮은 경우, 힌트는 데이터를 더티 캐시 라인에서 메모리로 다시 기록하라는 요청(325)이 가능한 빨리 제공되어야 함을 나타낸다. 그러나, 판독 명령 점유가 상대적으로 높은 경우, 힌트는 요청(325)이 비교적 낮은 우선순위를 갖는 사항임을 나타낸다. 따라서, SMC(330)는 판독 명령 점유가 임계값 아래로 떨어질 때까지 (낮은 우선순위 기록 요청(325) 대신에) 보류 중인 판독 명령을 제공한다. 판독 명령 점유가 최대 임계값을 초과하는 경우, 판독/기록 회로부(320)는 더티 캐시 라인(310 내지 313)의 정보를 다시 기록하라는 요청(325)의 전송을 우회한다.
도 4는 일부 실시예에 따른, 캐시의 데이터를 사용하여 프레임을 처리하는 것과 동시에 더티 캐시 라인을 선택적으로 다시 기록하는 방법(400)의 흐름도이다. 방법(400)은 도 1에 도시된 처리 시스템(100), 도 2에 도시된 그래픽 파이프라인(200), 및 도 3에 도시된 메모리 시스템(300)의 일부 실시예에서 구현된다.
블록(405)에서, 판독/기록 회로부는 캐시를 포함하는 메모리 서브시스템의 SMC에서의 판독 명령 점유를 결정한다. 판독 명령 점유는 SMC에서 보류 중인 판독 명령을 유지하는 데 사용되는 대기열 또는 버퍼가 가득찼음을 나타낸다.
결정 블록(410)에서, 판독/기록 회로부는 판독 명령 점유가 제1 임계값 미만인지의 여부를 결정한다. 만약 그렇다면, 방법(400)은 블록(415)으로 진행되고, 판독/기록 회로부는 SMC가 하나 이상의 더티 캐시 라인의 데이터를 캐시에 다시 기록하기 위한 요청을 전송한다. 판독 명령 점유가 제1 임계값보다 큰 경우, 방법(400)은 결정 블록(420)으로 진행된다.
결정 블록(420)에서, 판독/기록 회로부는 판독 명령 점유가 제1 임계값보다 크고, 제1 임계값보다 큰 제2 임계값보다 작은지의 여부를 결정한다. 만약 그렇다면, 방법(400)은 블록(425)으로 진행되고, 판독/기록 회로부는 SMC가 하나 이상의 더티 캐시 라인의 데이터를 캐시에 다시 기록할 것을 요청한다. 요청은 데이터를 다시 기록하라는 요청이 판독 명령 대기열 또는 버퍼에서 요청을 계속해서 처리하는 것보다 낮은 우선순위임을 나타내는 힌트를 포함한다. 판독 명령 점유가 제2 임계값보다 큰 경우, 방법(400)은 블록(430)으로 진행되고, 판독/기록 회로부는 더티 캐시 라인을 SMC에 다시 기록하라는 요청의 전송을 우회한다(즉, 더티 캐시 라인을 다시 기록하는 것을 우회함).
컴퓨터 판독 가능 저장 매체는 명령어 및/또는 데이터를 컴퓨터 시스템에 제공하기 위해 사용되는 동안 컴퓨터 시스템에 의해 액세스 가능한 임의의 비일시적 저장 매체, 또는 비일시적 저장 매체의 조합을 포함할 수 있다. 이러한 저장 매체는 광학 매체(예를 들어, 컴팩트 디스크(CD), 디지털 다기능 디스크(DVD), 블루레이 디스크), 자기 매체(예를 들어, 플로피 디스크, 자기 테이프 또는 자기 하드 드라이브), 휘발성 메모리(예를 들어, 랜덤 액세스 메모리(RAM) 또는 캐시), 비휘발성 메모리(예를 들어, 판독 전용 메모리(ROM) 또는 플래시 메모리), 또는 마이크로 전자 기계 시스템(MEMS)-기반 저장 매체를 포함할 수 있지만, 이에 제한되지 않는다. 컴퓨터 판독 가능 저장 매체는 컴퓨팅 시스템에 내장되거나(예를 들어, 시스템 RAM 또는 ROM), 컴퓨팅 시스템에 고정적으로 부착되거나(예를 들어, 자기 하드 드라이브), 컴퓨팅 시스템에 제거 가능하게 부착되거나(예를 들어, 광 디스크 또는 범용 직렬 버스(USB)-기반 플래시 메모리), 유선 또는 무선 네트워크를 통해 컴퓨터 시스템에 결합(예를 들어, 네트워크 액세스 가능한 저장소(NAS))될 수 있다.
일부 실시예에서, 전술된 기술의 특정 양태는 소프트웨어를 실행하는 처리 시스템의 하나 이상의 프로세서에 의해 구현될 수 있다. 소프트웨어는 비일시적 컴퓨터 판독 가능 저장 매체에 저장되거나 달리 유형적으로 구현된 실행 가능 명령어의 하나 이상의 세트를 포함한다. 소프트웨어는 하나 이상의 프로세서에 의해 실행될 때, 전술된 기술의 하나 이상의 양태를 수행하도록 하나 이상의 프로세서를 조작하는 명령어 및 특정 데이터를 포함할 수 있다. 비일시적 컴퓨터 판독 가능 저장 매체는, 예를 들어, 자기 또는 광 디스크 저장 장치, 플래시 메모리, 캐시, 랜덤 액세스 메모리(RAM) 또는 다른 비휘발성 메모리 장치 또는 장치들 등과 같은 솔리드 스테이트 저장 장치를 포함할 수 있다. 비일시적 컴퓨터 판독 가능 저장 매체에 저장된 실행 가능 명령어는 하나 이상의 프로세서에 의해 해석되거나 달리 실행 가능한 소스 코드, 어셈블리 언어 코드, 객체 코드, 또는 다른 명령어 포맷일 수 있다.
일반적인 설명에서 전술된 모든 활동 또는 요소가 요구되는 것은 아니고, 특정 활동 또는 장치의 일부는 요구되지 않을 수 있고, 기술된 것에 더하여, 하나 이상의 추가 활동이 수행되거나 하나 이상의 추가 요소가 포함될 수 있다는 점에 유의한다. 또한 추가적으로, 활동이 열거된 순서는 반드시 그들이 수행되는 순서는 아니다. 또한, 특정 실시예를 참조하여 개념이 설명되었다. 그러나, 당업자는 아래의 청구범위에 기재된 것과 같은 본 개시의 범위로부터 벗어나지 않으면서 다양한 수정 및 변경이 이루어질 수 있음을 이해한다. 따라서, 명세서 및 도면은 제한적인 의미보다는 예시적인 의미로 간주되어야 하며, 모든 그러한 수정은 본 개시의 범위 내에 포함되도록 의도된다.
이익, 다른 이점, 및 문제에 대한 해결책이 특정 실시예와 관련하여 전술되었다. 그러나, 이익, 이점, 문제에 대한 해결책, 그리고 임의의 이익, 이점, 또는 해결책이 발생되게 하거나 더 명확해지게 할 수 있는 임의의 특징(들)은 임의의 또는 모든 청구항의 중요한, 요구되는, 또는 본질적인 특징으로 해석되어서는 안 된다. 또한, 위에 개시된 특정 실시예는 단지 예시적인 것인데, 개시된 주제는 본 명세서의 교시 내용의 이익을 갖는 당업자에게 명백한, 상이하지만 동등한 방식으로 수정 및 실시될 수 있기 때문이다. 아래의 청구범위에 기술된 것 이외에, 본 명세서에서 도시된 구성 또는 설계의 상세 사항에 대한 제한이 의도되지 않는다. 따라서 위에서 개시된 특정 실시예는 변경되거나 수정될 수 있고 모든 그러한 변형은 개시된 주제의 범위 내에 있는 것으로 고려된다는 것이 명백하다. 따라서, 본 명세서에서 추구되는 보호는 아래의 청구범위에 기재된 것과 같다.

Claims (20)

  1. 장치로서,
    그래픽 파이프라인에서 프레임을 처리하는 데 사용되는 데이터를 저장하도록 구성된 캐시 라인을 포함하는 캐시; 및
    상기 그래픽 파이프라인을 구현하는 프로세서를 포함하며, 상기 프로세서는 제1 프레임을 처리하고 상기 제1 프레임의 처리와 동시에 더티 캐시 라인을 상기 캐시에서 메모리로 다시 기록하도록 구성되며, 상기 더티 캐시 라인의 데이터는 상기 캐시에 유지되며 상기 메모리에 다시 기록되는 것에 후속하여 클린으로 표시되는, 장치.
  2. 제1항에 있어서, 상기 프로세서는 시스템 메모리 컨트롤러(SMC)에서의 판독 명령 점유에 기초하여 상기 더티 캐시 라인을 상기 메모리에 선택적으로 다시 기록하도록 구성되는, 장치.
  3. 제2항에 있어서, 상기 프로세서는 상기 판독 명령 점유가 제1 임계값보다 작은 것에 응답하여 상기 더티 캐시 라인의 데이터를 상기 SMC로 전송하도록 구성되고, 상기 SMC는 상기 프로세서로부터 수신된 데이터를 상기 메모리에 다시 기록하도록 구성되는, 장치.
  4. 제3항에 있어서, 상기 프로세서는 상기 판독 명령 점유가 상기 제1 임계값보다 크고 제2 임계값보다 작은 것에 응답하여 상기 더티 캐시 라인의 데이터를 상기 메모리에 다시 기록하는 것이 우선순위가 낮은 사항임을 나타내는 힌트와 함께 상기 데이터를 상기 SMC로 전송하도록 구성되는, 장치.
  5. 제4항에 있어서, 상기 SMC는 상기 힌트를 수신하는 것에 응답하여 상기 데이터를 상기 메모리에 다시 기록하기 전에 보류 중인 판독 요청을 제공하도록 구성되는, 장치.
  6. 제5항에 있어서, 상기 프로세서는 상기 판독 명령 점유가 상기 제2 임계값보다 큰 것에 응답하여 상기 더티 캐시 라인의 데이터를 상기 SMC로 전송하는 것을 우회하도록 구성되는, 장치.
  7. 제1항에 있어서, 상기 프로세서는 상기 더티 캐시 라인이 클린으로 표시되는 것에 응답하여 상기 제1 프레임에서 제2 프레임으로 전환하는 동안 상기 더티 캐시 라인을 상기 메모리에 다시 기록하는 것을 우회하도록 구성되는, 장치.
  8. 제7항에 있어서, 상기 프로세서는 상기 제1 프레임의 처리를 완료하는 것과 상기 제2 프레임의 처리를 개시하는 것에 응답하여 클린으로 표시되지 않은 더티 캐시 라인의 데이터를 다시 기록하도록 구성되는, 장치.
  9. 방법으로서,
    그래픽 파이프라인과 연관된 캐시의 캐시 라인에 저장된 데이터를 사용하여 상기 그래픽 파이프라인에서 제1 프레임을 처리하는 단계;
    상기 제1 프레임의 처리와 동시에 더티 캐시 라인을 상기 캐시에서 메모리로 다시 기록하는 단계;
    상기 더티 캐시 라인의 데이터를 상기 캐시에 유지하는 단계; 및
    상기 더티 캐시 라인이 상기 메모리에 다시 기록되는 것에 후속하여 상기 더티 캐시 라인을 클린으로 표시하는 단계를 포함하는, 방법.
  10. 제9항에 있어서, 상기 더티 캐시 라인을 다시 기록하는 단계는 시스템 메모리 컨트롤러(SMC)에서의 판독 명령 점유에 기초하여 상기 더티 캐시 라인을 상기 메모리에 선택적으로 다시 기록하는 단계를 포함하는, 방법.
  11. 제10항에 있어서, 상기 더티 캐시 라인을 다시 기록하는 단계는 상기 판독 명령 점유가 제1 임계값보다 작은 것에 응답하여 상기 더티 캐시 라인의 데이터를 상기 SMC로 전송하는 단계를 포함하는, 방법.
  12. 제11항에 있어서,
    상기 SMC로부터 수신된 데이터를 상기 메모리에 다시 기록하는 단계를 더 포함하는, 방법.
  13. 제11항 또는 제12항에 있어서, 상기 더티 캐시 라인을 다시 기록하는 단계는 상기 판독 명령 점유가 상기 제1 임계값보다 크고 제2 임계값보다 작은 것에 응답하여 상기 더티 캐시 라인의 데이터를 상기 메모리에 다시 기록하는 것이 우선순위가 낮은 사항임을 나타내는 힌트와 함께 상기 데이터를 상기 SMC로 전송하는 단계를 포함하는, 방법.
  14. 제13항에 있어서,
    상기 힌트를 수신하는 것에 응답하여 상기 데이터를 상기 메모리에 다시 기록하기 전에 상기 SMC에서 보류 중인 판독 요청을 제공하는 단계를 더 포함하는, 방법.
  15. 제14항에 있어서, 상기 더티 캐시 라인을 상기 메모리에 선택적으로 다시 기록하는 단계는 상기 판독 명령 점유가 상기 제2 임계값보다 큰 것에 응답하여 상기 더티 캐시 라인의 데이터를 상기 SMC로 전송하는 것을 우회하는 단계를 포함하는, 방법.
  16. 제9항에 있어서,
    상기 더티 캐시 라인이 클린으로 표시되는 것에 응답하여 상기 제1 프레임에서 제2 프레임으로 전환하는 동안 상기 더티 캐시 라인을 상기 메모리에 다시 기록하는 것을 우회하는 단계를 더 포함하는, 방법.
  17. 제16항에 있어서,
    상기 제1 프레임의 처리를 완료하는 것과 상기 제2 프레임의 처리를 개시하는 것에 응답하여 클린으로 표시되지 않은 더티 캐시 라인의 데이터를 다시 기록하는 단계를 더 포함하는, 방법.
  18. 장치로서,
    그래픽 파이프라인을 구현하도록 구성된 계산 장치의 세트; 및
    상기 계산 장치의 세트와 연관된 캐시 계층의 마지막 레벨 캐시(LLC)를 포함하고, 상기 계산 장치는 더티 캐시 라인에 저장된 데이터에 기초하여 제1 프레임을 처리하는 것과 동시에 상기 더티 캐시 라인을 상기 LLC에서 메모리로 다시 기록하도록 구성되고, 상기 더티 캐시 라인은 상기 메모리에 다시 기록되는 것에 후속하여 클린으로 표시되는, 장치.
  19. 제18항에 있어서, 상기 계산 장치는 시스템 메모리 컨트롤러(SMC)에 대한 판독 명령 점유에 기초하여 상기 더티 캐시 라인을 상기 LLC에서 상기 메모리로 다시 기록하기 위한 우선순위를 결정하도록 구성되는, 장치.
  20. 제18항에 있어서, 상기 계산 장치는 상기 더티 캐시 라인이 클린으로 표시되는 것에 응답하여 상기 제1 프레임에서 제2 프레임으로 전환하는 동안 상기 더티 캐시 라인을 상기 메모리에 다시 기록하는 것을 우회하도록 구성되고, 상기 계산 장치는 상기 제1 프레임의 처리를 완료하는 것과 제2 프레임의 처리를 개시하는 것에 응답하여 클린으로 표시되지 않은 더티 캐시 라인의 데이터를 다시 기록하도록 구성되는, 장치.
KR1020237002424A 2020-06-19 2021-06-15 처리와 동시에 더티 캐시 라인을 선택적으로 다시 기록하기 KR20230035326A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202063041337P 2020-06-19 2020-06-19
US63/041,337 2020-06-19
US17/128,388 2020-12-21
US17/128,388 US11562459B2 (en) 2020-06-19 2020-12-21 Selectively writing back dirty cache lines concurrently with processing
PCT/US2021/037363 WO2021257524A1 (en) 2020-06-19 2021-06-15 Selectively writing back dirty cache lines concurrently with processing

Publications (1)

Publication Number Publication Date
KR20230035326A true KR20230035326A (ko) 2023-03-13

Family

ID=79023750

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237002424A KR20230035326A (ko) 2020-06-19 2021-06-15 처리와 동시에 더티 캐시 라인을 선택적으로 다시 기록하기

Country Status (6)

Country Link
US (1) US11562459B2 (ko)
EP (1) EP4168898A4 (ko)
JP (1) JP2023530428A (ko)
KR (1) KR20230035326A (ko)
CN (1) CN115867899A (ko)
WO (1) WO2021257524A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9912957B1 (en) * 2017-04-01 2018-03-06 Intel Corporation Lossless compression for multisample render targets alongside fragment compression

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6553460B1 (en) * 1999-10-01 2003-04-22 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US8627007B1 (en) * 2009-10-28 2014-01-07 Juniper Networks, Inc. Use of cache to reduce memory bandwidth pressure with processing pipeline
US9940247B2 (en) * 2012-06-26 2018-04-10 Advanced Micro Devices, Inc. Concurrent access to cache dirty bits
US9639466B2 (en) * 2012-10-30 2017-05-02 Nvidia Corporation Control mechanism for fine-tuned cache to backing-store synchronization
US20170018247A1 (en) * 2015-07-15 2017-01-19 Apple Inc. Idle frame compression without writeback
US10516891B2 (en) * 2015-11-20 2019-12-24 Intel Corporation Method and system of reference frame caching for video coding
CN105786717B (zh) 2016-03-22 2018-11-16 华中科技大学 软硬件协同管理的dram-nvm层次化异构内存访问方法及系统
US10599578B2 (en) 2016-12-13 2020-03-24 Advanced Micro Devices, Inc. Dynamic cache bypassing
US20190102324A1 (en) 2017-09-29 2019-04-04 Intel Corporation Cache behavior for secure memory repartitioning systems
US10713165B2 (en) 2018-02-12 2020-07-14 Wisconsin Alumni Research Foundation Adaptive computer cache architecture
US20190243780A1 (en) * 2019-04-10 2019-08-08 Vinodh Gopal Scalable application-customized memory compression

Also Published As

Publication number Publication date
EP4168898A4 (en) 2024-06-19
US11562459B2 (en) 2023-01-24
US20210398242A1 (en) 2021-12-23
CN115867899A (zh) 2023-03-28
JP2023530428A (ja) 2023-07-18
EP4168898A1 (en) 2023-04-26
WO2021257524A1 (en) 2021-12-23

Similar Documents

Publication Publication Date Title
US8704826B1 (en) Primitive re-ordering between world-space and screen-space pipelines with buffer limited processing
US6891543B2 (en) Method and system for optimally sharing memory between a host processor and graphics processor
US8868838B1 (en) Multi-class data cache policies
US10769837B2 (en) Apparatus and method for performing tile-based rendering using prefetched graphics data
KR20160042948A (ko) 데이터 처리 시스템
US8131931B1 (en) Configurable cache occupancy policy
US11720499B2 (en) Selective generation of miss requests for cache lines
KR102480787B1 (ko) 순서에 관계 없는 캐시 리턴
US8504773B1 (en) Storing dynamically sized buffers within a cache
CN111052172A (zh) 使用压缩元数据的纹理驻留检查
US10558499B2 (en) Wave creation control with dynamic resource allocation
US11609791B2 (en) Precise suspend and resume of workloads in a processing unit
US11562459B2 (en) Selectively writing back dirty cache lines concurrently with processing
EP4264534A1 (en) Throttling hull shaders based on tessellation factors in a graphics pipeline
US20230205700A1 (en) Selective speculative prefetch requests for a last-level cache
US10956338B2 (en) Low latency dirty RAM for cache invalidation speed improvement
US11710207B2 (en) Wave throttling based on a parameter buffer
WO2023121943A1 (en) Stochastic optimization of surface cacheability in parallel processing units
KR20230125232A (ko) 그래픽 파이프라인에서 자원 사용에 기초한 셰이더스로틀링
KR20230048339A (ko) 선택적 2-단계 비닝을 갖는 그래픽 처리 장치