KR102474237B1 - 압축된 자원에 셰이더의 기입 - Google Patents

압축된 자원에 셰이더의 기입 Download PDF

Info

Publication number
KR102474237B1
KR102474237B1 KR1020197017815A KR20197017815A KR102474237B1 KR 102474237 B1 KR102474237 B1 KR 102474237B1 KR 1020197017815 A KR1020197017815 A KR 1020197017815A KR 20197017815 A KR20197017815 A KR 20197017815A KR 102474237 B1 KR102474237 B1 KR 102474237B1
Authority
KR
South Korea
Prior art keywords
block
data
write request
cache
new
Prior art date
Application number
KR1020197017815A
Other languages
English (en)
Other versions
KR20190109396A (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 KR20190109396A publication Critical patent/KR20190109396A/ko
Application granted granted Critical
Publication of KR102474237B1 publication Critical patent/KR102474237B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • 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/30Providing cache or TLB in specific location of a processing system
    • G06F2212/302In image processor or graphics adapter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data

Landscapes

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

Abstract

압축된 표면에 대한 셰이더 기입을 수행하기 위한 시스템, 장치 및 방법이 개시된다. 일 실시예에서, 프로세서는 적어도 하나의 메모리 및 하나 이상의 셰이더 유닛을 포함한다. 일 실시예에서, 상기 프로세서의 셰이더 유닛은 압축된 표면을 목표로 하는 기입 요청을 수신하도록 구성된다. 상기 셰이더 유닛은 상기 기입 요청에 의해 목표로 하는 상기 압축된 표면의 제1 블록을 식별하도록 구성된다. 상기 기입 요청의 데이터가 상기 제1 블록 전체보다 더 적은 것을 목표로 하고 있다고 결정한 것에 응답하여 상기 제1 셰이더 유닛은 상기 캐시로부터 상기 제1 블록을 판독하고 상기 제1 블록을 압축 해제한다. 다음으로, 상기 제1 셰이더 유닛은 상기 기입 요청의 데이터를 상기 압축 해제된 제1 블록과 병합한다. 그런 다음, 상기 셰이더 유닛은 상기 병합된 데이터를 압축하고 상기 병합된 데이터를 상기 캐시에 기입한다.

Description

압축된 자원에 셰이더의 기입
본 발명은 압축된 자원에 셰이더의 기입에 관한 것이다.
그래픽 처리 디바이스(GPU)는 그래픽 처리 작업을 수행하도록 구성된 복잡한 집적 회로이다. 예를 들어, GPU는 비디오 게임 애플리케이션과 같은 최종 사용자 애플리케이션에 의해 요구되는 그래픽 처리 작업을 실행할 수 있다. GPU는 별개의 디바이스일 수 있고 또는 중앙 처리 유닛(CPU)과 같은 다른 프로세서와 동일한 디바이스에 포함될 수도 있다. GPU는 렌더링(rendering)이라고 하는 공정에서 구성 요소의 상위 레벨 설명으로부터 이미지를 구성하는 픽셀을 생성한다. GPU는 일반적으로 픽셀, 텍스처 및 기하 데이터를 처리하기 위해 컴퓨팅 요소를 사용하여 연속 렌더링이라는 개념을 이용한다. 컴퓨팅 요소는 래스터라이저, 셋업 엔진, 컬러 혼합기, 숨겨진 표면 제거, 텍스처 맵핑 등의 기능을 실행할 수 있다. 이러한 컴퓨팅 요소는 종종 셰이더(shader), 셰이더 프로세서, 셰이더 어레이, 셰이더 유닛, 셰이더 엔진 등으로 불리고, 여기서 "셰이더"는 렌더링 효과를 수행하기 위해 그래픽 자원에 의해 사용되는 프로그램 또는 소프트웨어 명령의 세트를 나타내는 컴퓨터 그래픽의 용어이다. "셰이더"는 또한 소프트웨어 명령을 실행하는 데 사용되는 실제 하드웨어 구성 요소 또는 프로세서를 나타낼 수 있다. 셰이더 프로세서 또는 프로그램은 데이터를 판독하고 렌더링할 수 있으며 임의의 유형의 데이터 처리를 수행할 수 있다.
복잡한 그래픽 장면을 생성할 때 수반되는 많은 처리는 텍스처 데이터를 수반한다. 텍스처는 컬러, 투명도, 룩업 테이블 또는 다른 데이터와 같은 다양한 유형의 데이터 중 임의의 것일 수 있다. 일부 실시예에서, 텍스처는 시각적 디테일을 추가하기 위해 기하 형상으로 그려지는 디지털화된 이미지일 수 있다. 많은 양의 디테일은 텍스처를 사용하는 것을 통해 모델이 렌더링될 때 그래픽 모델의 표면으로 맵핑되어 목적 이미지를 생성할 수 있다. 텍스처 맵핑의 목적은 객체의 표면에 사실적인 외관(realistic appearance)을 제공하는 것이다. 텍스처는 컬러, 경면 반사와 같은 표면 속성, 또는 일반 또는 범프맵(bump map) 형태의 미세한 표면 디테일을 포함하는 많은 속성을 지정할 수 있다. 텍스처는 또한 이미지 데이터, 컬러 또는 투명도 데이터, 거칠기/매끄러움 데이터, 반사율 데이터 등일 수 있다.
3D 컴퓨터 그래픽스에서, 객체의 표면 디테일은 일반적으로 텍스처의 사용을 통해 추가된다. 예를 들어 벽돌 벽(brick wall)의 2D 비트맵 이미지는 텍스처 맵핑을 사용하여 건물의 3D 모델을 나타내는 다각형 세트에 적용되어 해당 객체의 3D 렌더링에 벽돌로 이루어진 외관을 부여할 수 있다. 사실적인 컴퓨터 그래픽을 제공하려면 일반적으로 많은 고품질의 상세한 텍스처가 요구된다. 텍스처를 사용하면 많은 양의 저장 공간과 대역폭을 소비할 수 있어서 텍스처를 압축해야 저장 공간과 대역폭 사용을 줄일 수 있다.
텍스처 및 표면을 압축하면 원본 텍스처 및 표면의 품질을 가능한 한 많이 유지하면서 그래픽 시스템의 저장 및 대역폭 비용을 감소시킬 수 있다. 그래픽 처리의 문제점 중 하나는 메모리 또는 캐시 대역폭이 GPU가 최대 기능에 도달하지 못하게 제한한다는 것이다. 압축을 이용하면 GPU에 의해 처리하기 위해 메모리 또는 캐시로부터 페치(fetched)되는 데이터의 양을 줄일 수 있다. GPU가 출력 이미지 또는 깊이/스텐실 표면을 생성할 때 GPU는 이러한 표면을 압축하여 메모리/캐시 대역폭 및 사용량을 줄일 수 있다. 소프트웨어 애플리케이션은 최종 이미지를 디스플레이에 보내기 전에 이러한 표면을 후처리할 수 있다. 일반적으로 소프트웨어 애플리케이션은 출력 이미지의 임의의 부분을 업데이트하기 전에 전체 출력 이미지를 압축 해제한다. 그러나 GPU에 의해 렌더링되는 장면에서 시간에 따라 장면이 변할 때 장면의 일부만을 업데이트해야 할 필요가 있다. 예를 들어, 비디오 게임 애플리케이션에서 사용자는 벽으로 사격을 하여 벽에 총알 구멍을 만들 수 있다. 벽을 나타내는 표면을 업데이트하려면 벽의 작은 부분만을 업데이트할 필요가 있다. 그러나 압축된 자원의 일부를 업데이트하는 공정은 비효율적일 수 있다. 따라서, 압축된 자원을 관리하는 개선된 기술이 요구된다.
본 명세서에 설명된 방법 및 메커니즘의 장점은 첨부된 도면과 함께 다음의 설명을 참조함으로써 더 잘 이해될 수 있다.
도 1은 컴퓨팅 시스템의 일 실시예의 블록도;
도 2는 GPU의 일 실시예의 블록도;
도 3은 캐시 조정자(cache arbiter) 및 캐시의 일 실시예의 블록도;
도 4는 압축기 모듈의 일 실시예의 블록도;
도 5는 압축된 표면에 기입(write)을 수행하는 방법의 일 실시예를 나타내는 일반화된 흐름도;
도 6은 표면의 압축된 블록에 기입 요청을 처리하는 방법의 일 실시예를 나타내는 일반화된 흐름도;
도 7은 표면의 압축되지 않은 블록에 기입 요청을 처리하는 방법의 일 실시예를 나타내는 일반적인 흐름도;
도 8은 압축된 표면에 기입을 수행하는 방법의 또 다른 실시예를 나타내는 일반적인 흐름도.
이하의 설명에서, 본 명세서에 제시된 방법 및 메커니즘의 완전한 이해를 제공하기 위해 다수의 특정 상세가 제시된다. 그러나, 이 기술 분야에 통상의 지식을 가진 자라면 다양한 실시예가 이러한 특정 상세 없이 실시될 수 있다는 것을 이해할 수 있을 것이다. 일부 경우에 잘 알려진 구조, 구성 요소, 신호, 컴퓨터 프로그램 명령 및 기술이 본 명세서에 설명된 접근법을 모호하지 않게 하기 위해 상세히 도시되지 않았다. 예시의 단순성 및 명료성을 위해, 도면에 도시된 요소는 반드시 축척에 맞게 그려진 것은 아닌 것으로 이해된다. 예를 들어, 일부 요소의 치수는 다른 요소에 비해 과장되었을 수 있다.
압축된 자원에 셰이더 기입을 수행하기 위한 다양한 시스템, 장치, 방법 및 컴퓨터 판독 가능 매체가 개시된다. 일 실시예에서, 프로세서는 적어도 캐시 및 하나 이상의 셰이더 유닛을 포함한다. 일 실시예에서, 프로세서의 제1 셰이더 유닛은 압축된 표면을 목표(target)로 하는 기입 요청을 수신하도록 구성된다. 제1 셰이더 유닛은 기입 요청에 의해 목표로 하는 압축된 표면의 제1 블록을 식별하도록 구성된다. 또한, 제1 셰이더는 기입 요청의 데이터가 제1 블록 전체보다 더 적은 것을 목표로 하고 있는지 여부를 결정하도록 구성된다. 제1 셰이더 유닛이 기입 요청의 데이터가 제1 블록 전체보다 더 적은 것을 목표로 하고 있다고 결정하면, 제1 셰이더 유닛은 캐시로부터 제1 블록을 판독하고 제1 블록을 압축 해제한다. 다음으로, 제1 셰이더 유닛은 기입 요청의 데이터를 압축 해제된 제1 블록과 병합한다. 그런 다음, 셰이더 유닛은 병합된 데이터를 압축하고 병합된 데이터를 캐시에 기입한다. 일 실시예에서, 제1 셰이더 유닛이 기입 요청의 데이터가 제1 블록 전체를 업데이트하고 있다고 결정하면, 제1 셰이더 유닛은 기입 요청의 데이터를 압축하고 이후 캐시 내 제1 블록을 압축된 데이터로 겹쳐 기입(overwrite)한다.
일 실시예에서, 제1 셰이더 유닛은 제1 블록과 연관된 메타데이터(metadata)에 액세스하도록 구성되고, 여기서 메타데이터는 제1 블록을 압축하는데 사용되는 압축의 유형을 지정하는 정보를 포함한다. 일 실시예에서, 메타데이터는 메타데이터 캐시에 저장된다. 제1 셰이더 유닛은 정보를 이용하여 제1 블록을 압축 해제하도록 구성된다. 일 실시예에서, 제1 셰이더 유닛은 제1 블록이 상수 값으로 설정되는지를 결정하도록 구성된다. 제1 블록이 상수 값으로 설정된 경우 제1 셰이더 유닛은 제1 블록을 캐시로부터 판독하는 것을 건너뛸 수 있다. 대신에, 제1 셰이더 유닛은 기입 요청의 데이터를 상수 값의 데이터와병합한다. 그런 다음, 제1 셰이더 유닛은 병합된 데이터를 압축하여 캐시에 기입한다.
이제 도 1을 참조하면, 컴퓨팅 시스템(100)의 일 실시예의 블록도가 도시된다. 일 실시예에서, 컴퓨팅 시스템(100)은 메모리(150)에 연결된 시스템 온 칩(system on chip: SoC)(105)을 포함한다. SoC(105)는 또한 집적 회로(IC)라고 칭할 수 있다. 일 실시예에서, SoC(105)는 처리 유닛(115A-N), 입력/출력(I/O) 인터페이스(110), 공유 캐시(120A-B), 패브릭(fabric)(125), 그래픽 처리 유닛(130) 및 메모리 제어기(들)(140)를 포함한다. SoC(105)는 도면을 모호하지 않게 하기 위해 도 1에 도시되지 않은 다른 구성 요소를 더 포함할 수 있다. 처리 유닛(115A-N)은 임의의 수 및 유형의 처리 유닛을 나타낸다. 일 실시예에서, 처리 유닛(115A-N)은 중앙 처리 유닛(CPU) 코어이다. 다른 실시예에서, 하나 이상의 처리 유닛(115A-N)은 다른 유형의 처리 유닛(응용 특정 집적 회로(application specific integrated circuit: ASIC), 전계 프로그래밍 가능한 게이트 어레이(field programmable gate array: FPGA), 디지털 신호 프로세서(digital signal processor: DSP))이다. 처리 유닛(115A-N)은 공유 캐시(120A-B) 및 패브릭(125)에 연결된다.
일 실시예에서, 처리 유닛(115A-N)은 특정 명령 세트 아키텍처(instruction set architecture: ISA)의 명령을 실행하도록 구성된다. 각 처리 유닛(115A-N)은 하나 이상의 실행 유닛, 캐시 메모리, 스케줄러, 분기 예측 회로 등을 포함한다. 일 실시예에서, 처리 유닛(115A-N)은 운영 시스템과 같은 시스템(100)의 주 제어 소프트웨어를 실행하도록 구성된다. 일반적으로, 사용 동안 처리 유닛(115A-N)에 의해 실행되는 소프트웨어는 시스템(100)의 다른 구성 요소를 제어하여 시스템(100)의 원하는 기능을 실현할 수 있다. 처리 유닛(115A-N)은 또한 애플리케이션 프로그램과 같은 다른 소프트웨어를 실행할 수 있다.
GPU(130)는 압축기 모듈(135), 캐시(들)(138), 및 그래픽 또는 범용 처리를 위해 사용되는 임의의 수 및 유형의 컴퓨팅 유닛을 나타내는 컴퓨팅 유닛(145A-N)을 포함한다. GPU(130)는 공유 캐시(120A-B) 및 패브릭(125)에 연결된다. 일 실시예에서, GPU(130)는 그리기 명령, 픽셀 동작, 기하 연산 및 디스플레이로 가는 이미지를 렌더링하기 위한 다른 동작과 같은 그래픽 파이프라인 동작을 실행하도록 구성된다. 다른 실시예에서, GPU(130)는 그래픽과 관계 없는 동작을 실행하도록 구성된다. 다른 실시예에서, GPU(130)는 그래픽 동작 및 비-그래픽과 관련된 동작을 모두 실행하도록 구성된다.
일 실시예에서, GPU(130)는 캐시(138)에 저장된 압축된 표면에 기입 동작을 수행하도록 구성된다. 일 실시예에서, 압축된 표면의 블록의 일부에 대한 기입 요청에 대해, GPU(130)는 기입 요청의 데이터를 블록의 다른 부분과 병합하도록 구성된다. 그런 다음, GPU(130)는 압축기 모듈(135)을 사용하여 병합된 데이터를 압축하고, GPU(130)는 압축된 데이터를 캐시(138)에 기입한다. 일 실시예에서, 기입 요청을 수신한 것에 응답하여, GPU(130)는 기입 요청이 표면의 압축된 블록을 목표로 하는지를 결정하도록 구성된다. 기입 요청이 표면의 압축되지 않은 블록을 목표로 하고 있다면, GPU(130)는 압축 해제 단계를 건너뛰고, 기입 요청의 데이터를 압축되지 않은 블록과 병합한다. 각 블록의 크기는 실시예마다 변할 수 있다.
I/O 인터페이스(110)는 패브릭(125)에 연결되고, I/O 인터페이스(110)는 임의의 수 및 유형의 인터페이스(예를 들어, 주변 구성 요소 상호 연결(peripheral component interconnect: PCI) 버스, PCI-확장(PCI-X), PCIE(PCI Express) 버스, GBE(Gigabit Ethernet)(GBE) 버스, USB(Universal Serial Bus)를 나타낸다. 주변 디바이스의 다양한 유형은 I/O 인터페이스(110)에 연결될 수 있다. 이러한 주변 디바이스는 디스플레이, 키보드, 마우스, 프린터, 스캐너, 조이스틱 또는 다른 유형의 게임 제어기, 미디어 레코딩 디바이스, 외부 저장 디바이스, 네트워크 인터페이스 카드 등을 포함한다(그러나 이들로 제한되지 않는다).
SoC(105)는 하나 이상의 메모리 모듈을 포함하는 메모리(150)에 연결된다. 각각의 메모리 모듈은 그 위에 장착된 하나 이상의 메모리 디바이스를 포함한다. 일부 실시예에서, 메모리(150)는 SoC(105)가 또한 그 위에 장착된 마더보드 또는 다른 캐리어 상에 장착된 하나 이상의 메모리 디바이스를 포함한다. 일 실시예에서 메모리(150)는 동작 동안 SoC(105)와 함께 사용하기 위한 랜덤 액세스 메모리(random access memory: RAM)를 구현하는데 사용된다. 구현된 RAM은 정적 RAM(SRAM), 동적 RAM(DRAM), 저항성(Resistive) RAM(ReRAM), 상 변화(Phase Change) RAM(PCRAM) 또는 임의의 다른 휘발성 또는 비-휘발성 RAM일 수 있다. 메모리(150)를 구현하는데 사용되는 DRAM의 유형은 DDR(double data rate) DRAM, DDR2 DRAM, DDR3 DRAM 등을 포함한다(그러나 이들로 제한되지 않는다). 도 1에 명시적으로 도시되지는 않았지만, SoC(105)는 또한 처리 유닛(115A-N) 및/또는 컴퓨팅 유닛(145A-N)의 내부에 하나 이상의 캐시 메모리를 포함할 수 있다. 일부 실시예에서, SoC(105)는 처리 유닛(115A-N) 및 컴퓨팅 유닛(145A-N)에 의해 이용되는 공유 캐시(120A-B)를 포함한다. 일 실시예에서, 캐시(120A-B)는 캐시 제어기를 포함하는 캐시 서브시스템의 일부이다.
다양한 실시예에서, 컴퓨팅 시스템(100)은 컴퓨터, 랩탑, 모바일 디바이스, 서버, 또는 다양한 다른 유형의 컴퓨팅 시스템 또는 디바이스 중 임의의 것일 수 있다. 컴퓨팅 시스템(100) 및/또는 SoC(105)의 구성 요소의 수는 실시예마다 변할 수 있다는 것이 주목된다. 도 1에 도시된 수보다 더 많거나 더 적은 수의 각 구성 요소/서브 구성 요소가 있을 수 있다. 예를 들어, 다른 실시예에서, SoC(105)는 다수의 메모리에 연결된 다수의 메모리 제어기를 포함할 수 있다. 또한, 컴퓨팅 시스템(100) 및/또는 SoC(105)는 도 1에 도시되지 않은 다른 컴포넌트를 포함할 수 있다는 것이 주목된다. 추가적으로, 다른 실시예에서, 컴퓨팅 시스템(100) 및 SoC(105)는 도 1에 도시된 것과는 다른 방식으로 구조화될 수 있다.
이제 도 2를 참조하면, 그래픽 처리 유닛(GPU)(200)의 일 실시예의 블록도가 도시된다. 일 실시예에서, GPU(200)의 로직이 (도 1의) GPU(130)에 포함된다. 일 실시예에서, GPU(200)는 적어도 셰이더 어레이(215A-D), 커맨드 센터 허브(command center hub)(220), 패브릭(225) 및 캐시(230)를 포함한다. GPU(200)는 또한 도면을 모호하지 않게 하기 위해 도 2에 도시되지 않은 다른 로직 및/또는 다른 구성 요소를 포함한다는 것이 주목된다. 또한, GPU(200)의 구조는 일 실시예에서 사용되는 구조의 일례에 불과하다는 것이 주목된다. 다른 실시예에서, GPU(200)는 다른 방식으로 구성될 수 있다.
셰이더 어레이(215A-D)는 GPU(200)에 포함된 임의의 수 및 유형의 셰이더 컴퓨팅 자원을 나타낸다. 셰이더 어레이(215A-D)는 또한 "셰이더 유닛"이라고 칭할 수 있다. 각각의 셰이더 어레이(215A-D)는 그래픽을 렌더링하기 위해 기하 구조, 정점(vertex), 픽셀 및/또는 다른 셰이딩 동작을 수행하기 위한 다양한 컴퓨팅 자원을 포함한다. 다양한 실시예에서, 컴퓨팅 자원은 명령을 페치하고 디코딩하기 위한 구성 요소, 산술 계산을 수행하기 위한 하나 이상의 산술 논리 유닛(arithmetic logic unit: "ALU"), 및 다른 자원을 포함한다. 도 2에는 도시되지 않았지만, 각각의 셰이더 어레이(215A-D)는 레벨 1 (L1) 캐시를 포함할 수 있다. 셰이더 어레이(215A-D)는 패브릭(225)을 통해 캐시(230)에 연결된다. 일 실시예에서, 캐시(230)는 레벨 2 (L2) 캐시이다. 실시예에 따라, 캐시(230)는 메모리(도시되지 않음) 또는 다른 레벨의 캐시(도시되지 않음)에 연결된다. 커맨드 센터 허브(220)는 임의의 수 및 유형의 커맨드 프로세서, 스케줄러 및 다른 커맨드 처리 자원을 나타낸다.
일 실시예에서, 압축기 모듈(235)은 캐시(230) 내에 위치된다. 다른 실시예에서, 압축기 모듈(235)은 패브릭(225) 내에 위치된다. 일 실시예에서, GPU(200)가 표면에 대한 기입 요청을 처리할 때, 압축기 모듈(230)은 기입 요청의 데이터를 표면의 목표로 하는 블록의 압축되지 않은 데이터와 병합하도록 구성된다. 그런 다음, 병합된 데이터는 압축되어 캐시(230)에 다시 기입된다.
이제 도 3을 참조하면, 캐시 조정자(302) 및 캐시(304)의 일 실시예의 블록도가 도시된다. 일 실시예에서, 캐시 조정자(302)는 캐시(304)의 인터페이스 블록(306)에 연결된다. 캐시 조정자(302)는 캐시(304)에 저장된 데이터를 목표로 하는 요청에 대해 인터페이스 블록(306)에 판독 및 기입 요청을 전달하도록 구성된다. 인터페이스 블록(306)은 압축되지 않은 표면을 목표로 하는 요청을 태그 어레이(tag array)(312)로 전달하고, 압축된 표면을 목표로 하는 요청을 압축기 모듈(308)로 전달한다. 압축되지 않은 기입 데이터는 소스 선입 선출 모듈(source first-in, first-out: FIFO)(310)로 전달된다.
압축기 모듈(308)은 목표로 하는 표면의 주어진 블록이 압축되었는지 여부 및 압축 방법을 결정하기 위해 메타데이터 캐시(314)의 룩업(lookup)을 수행한다. 압축기 모듈(308)은 데이터 어레이(316)로부터 데이터를 수신하고 나서 압축기 모듈(308)은 압축된 데이터를 압축 해제한다. 일 실시예에서, 압축기 모듈(308)은 압축 해제된 주어진 표면 블록으로부터의 데이터와 기입 데이터를 병합한다. 그 후, 압축기 모듈(308)은 병합된 데이터를 재압축하고, 재압축된 병합된 데이터를 소스 FIFO(310)에 송신한다. 다른 실시예에서, 표면의 압축된 블록에 대한 기입, 데이터 압축 해제, 데이터 병합, 및 데이터 압축을 관리하는 로직이 캐시(304) 내에서 다른 방식으로 구성될 수 있다는 것이 주목된다.
이제 도 4를 참조하면, 압축기 모듈(402)의 일 실시예의 블록도가 도시된다. 일 실시예에서, 압축기 모듈(402)의 구성 요소는 (도 3의) 압축기 모듈(308)에 포함된다. 압축된 표면을 목표로 하는 요청은 가상 FIFO(404)로 전달되는 반면, 압축되지 않은 표면을 목표로 하는 요청은 태그 어레이(도시되지 않음)로 전달된다. 가상 FIFO(404)는 서로에 대해 주문된 요청의 어드레스를 유지한다. 일 실시예에서, 링크된 리스트 구조는 가상 FIFO(404)에서 서로에 대한 요청의 순서를 유지하는데 이용된다. 가상 FIFO(404)는 또한 표면의 블록의 일부만을 목표로 하는 기입 요청에 대해 판독 요청이 프리페치(prefetch)될 수 있게 한다. 예를 들어, 가상 FIFO(404)의 요청이 압축 해제 및 병합 경로에서 판독-수정-기입을 요구하면, 요청이 가상 FIFO(404)에서 대기하는 동안 요청에 대해 프리페치 요청이 생성된다. 일 실시예에서, 주어진 수의 프리페치 요청은 임의의 주어진 시간에 계류 중(outstanding)일 수 있으며 여기서 주어진 번호는 실시예마다 변할 수 있다. 프리페치 요청이 되돌아올 때, 데이터는 병합되고 압축기(434)에 대해 조정된다. 가상 FIFO(404)에 저장된 기입 요청이 전체 목표로 하는 블록을 완전히 겹쳐 기입하면, 요청을 처리하기 전에 캐시로부터 블록을 프리페치하기 위해 판독 요청이 생성되지 않는다. 요청은 가상 FIFO(404)로부터 물리적 FIFO(406)로 배출된다. 일 실시예에서, 물리적 FIFO(406)는 플롭(flop) 기반 FIFO이다.
기입 요청이 표면 전체 블록을 겹쳐 기입하면, 프리페치 요청은 생성되지 않고, 기입 요청은 압축기(434) 중 하나의 압축기에 대해 조정한다. 그 후, 소스 데이터가 요청이 초기에 소스 데이터 RAM(424)에 기입된 소스 데이터 RAM(424)로부터 페치된다. 그런 다음, 소스 데이터는 캐시로 가는 경로 상에 기입된다. 목표로 하는 블록의 일부만을 목표로 하는 기입 요청의 경우 캐시로부터 목표로 하는 블록의 다른 부분을 판독하는 프리페치 판독 요청이 생성된다. 다시 판독된 데이터는 복귀 제어 로직(438)으로 전달되고 나서 판독 데이터 RAM(426) 및 플롭(432)으로 전달된다.
요청 물리적 FIFO(406)는 버스트 기입 제어(408) 및 멀티플렉서(또는 MUX)(412, 414, 428 및 430)에 연결된다. 판독 제어 로직(418) 및 비-연산 기입 제어 로직(420)은 MUX(428 및 430)에 대한 선택 신호를 각각 제공한다. 병합 제어 로직(416)은 MUX(412 및 414)에 대한 선택 신호를 제공한다. 목표로 하는 블록의 일부만을 겹쳐 기입하는 데이터를 갖는 기입 요청의 경우, 병합 제어 로직(416)은 목표로 하는 블록의 다른 영향을 받지 않은 부분과 기입 데이터를 병합하도록 구성된다. 병합 제어 로직(416)은 요청 큐(request queue) 상태(410), MUX(412 및 414), 플롭(432) 및 압축 제어 로직(422)에 연결된다. 병합된 데이터는 캐시에 기입하기 전에 압축하기 위해 압축 제어 로직(422) 및 이후 압축기(434)에 연결된다. 압축기(434)는 또한 MUX(440)에 연결된 기입 제어 로직(436)에 연결되고, MUX(440)의 출력은 메타데이터 캐시(도시되지 않음)에 연결된다.
본 명세서에서 다양한 구조부 옆에 표시되는 문자 "N"은 그 구조부에 대한 임의의 수의 요소(예를 들어, 하나의 저장 요소를 포함하는 요청 가상 FIFO(404) 내의 임의의 수의 저장 요소)를 일반적으로 나타내도록 의도된다는 것이 주목된다. 추가적으로, 문자 "N"(예를 들어, 가상 FIFO(404) 및 요청 큐 상태(410))을 사용하는 도 4 내 다른 참조 부호는 동일한 수의 다른 요소가 제공되는 것을 나타내는 것으로 의도된 것이 아니다(예를 들어, 요청 가상 FIFO(404) 내의 저장 요소의 수는 요청 큐 상태(410)의 저장 요소의 수와는 다를 수 있다).
이제 도 5를 참조하면, 압축된 표면에 기입을 수행하기 위한 방법(500)의 일 실시예가 도시되어 있다. 설명을 위해, 이 실시예 및 도 6 내지 도 8에서의 단계가 순차적으로 도시된다. 그러나, 설명된 방법의 다양한 실시예에서, 설명된 하나 이상의 요소는 동시에 수행되거나, 도시된 것과 다른 순서로 수행되거나, 완전히 생략될 수 있다는 것이 주목된다. 다른 추가 요소도 원하는 대로 수행된다. 본 명세서에 설명된 다양한 시스템 또는 장치 중 임의의 것이 방법(500)을 구현하도록 구성된다.
프로세서의 셰이더 유닛은 압축된 표면을 목표로 하는 기입 요청을 수신한다(블록 505). 프로세서는 실시예에 따라 임의의 수의 셰이더 유닛을 포함한다. 다음으로, 셰이더 유닛은 기입 요청에 의해 목표로 하는 압축된 표면의 제1 블록을 식별한다(블록 510). 일 실시예에서, 표면은 복수의 블록으로 분할되고, 각각의 블록은 다른 블록과 독립적으로 압축된다. 표면의 "블록"은 본 명세서에서 표면의 "일부"라고 칭할 수도 있다는 것이 주목된다.
이후, 셰이더 유닛은 기입 요청의 데이터가 제1 블록 전체보다 더 적은 것을 목표로 하고 있는지를 결정한다(조건 블록 515). 기입 요청의 데이터가 제1 블록 전체보다 더 적은 것을 목표로 하고 있는 경우(조건 블록 515, "예" 분기), 셰이더 유닛은 캐시로부터 제1 블록을 판독하고 제1 블록을 압축 해제한다(블록 520). 다른 실시예에서, 셰이더 유닛은 메모리로부터 제1 블록을 판독한다. 다음으로, 셰이더 유닛은 기입 요청의 데이터를 압축 해제된 제1 블록과 병합한다(블록 525). 그 다음, 셰이더 유닛은 병합된 데이터를 압축하고 캐시에 기입한다(블록 530). 다른 실시예에서, 셰이더 유닛은 병합된 데이터를 메모리에 기입한다.
기입 요청의 데이터가 제1 블록 전체를 목표로 하고 있다면(조건 블록 515, "아니오" 분기), 셰이더 유닛은 기입 요청의 데이터를 압축한다(블록 535). 이 경우, 셰이더 유닛은 캐시로부터 제1 블록을 페치하고 제1 블록을 압축 해제하는 단계를 건너뛴다. 다음으로, 제1 셰이더는 캐시의 제1 블록을 기입 요청의 압축된 데이터로 겹쳐 기입한다(블록 540). 블록(530 및 540) 후에, 방법(500)이 종료된다.
이제 도 6을 참조하면, 표면의 압축된 블록에 대한 기입 요청을 처리하기 위한 방법(600)의 일 실시예가 도시된다. 프로세서의 셰이더 유닛은 표면의 압축된 블록을 목표로 하는 기입 요청을 수신한다(블록 605). 기입 요청을 수신한 것에 응답하여, 셰이더 유닛은 압축된 블록과 연관된 메타데이터에 액세스한다(블록 610). 일 실시예에서, 메타데이터는 제1 블록을 압축하는데 사용된 압축의 유형을 지정하는 정보를 포함한다. 일 실시예에서, 델타 컬러 압축(delta color compression: DCC)은 제1 블록을 압축하는데 사용되는 압축의 유형이다. 일 실시예에서, 메타데이터는 메타데이터 캐시에 저장된다.
다음으로, 셰이더 유닛은 압축된 블록의 데이터가 단일 값으로 설정되는지 여부를 메타데이터로부터 결정한다(조건 블록 615). 일 실시예에서, 압축된 블록이 DCC를 사용하여 압축될 때, 소거(clear) 설정은 압축된 블록이 단일 값(예를 들어, 0.0, 1.0)으로 설정되는 것을 나타낸다. 이 설명을 위해, 기입 요청의 데이터는 압축된 블록 전체를 겹쳐 기입하지 않는 것으로 가정된다. 압축된 블록이 단일 값으로 설정되면(조건 블록 615, "예" 분기), 셰이더 유닛은 기입 요청의 데이터를 단일 값의 데이터와 병합한다(블록 620). 다음으로, 셰이더 유닛은 병합된 데이터를 압축하여 캐시에 기입한다(블록 625). 압축된 블록이 단일 값으로 설정되어 있지 않으면(조건 블록 615, "아니오" 분기), 셰이더 유닛은 압축된 블록을 페치하고 압축 해제한다(블록 630). 다음으로, 셰이더 유닛은 기입 요청의 데이터를 압축 해제된 블록의 데이터와 병합한다(블록 635). 그 다음, 셰이더 유닛은 병합된 데이터를 압축하여 캐시에 기입한다(블록 625). 블록(625) 후에, 방법(600)이 종료한다.
이제 도 7을 참조하면, 표면의 압축되지 않은 블록에 대한 기입을 처리하기 위한 방법(700)의 일 실시예가 도시된다. 프로세서의 셰이더 유닛은 표면의 압축되지 않은 블록을 목표로 하는 기입 요청을 수신한다(블록 705). 다음으로, 셰이더 유닛은 캐시로부터 압축되지 않은 블록을 판독한다(블록 710). 그 다음, 셰이더 유닛은 기입 요청의 데이터를 압축되지 않은 블록과 병합한다(블록 715). 이 설명을 위해, 기입 요청의 데이터는 압축된 블록 전체를 겹쳐 기입하지 않는다고 가정된다. 그러나, 기입 요청의 데이터가 압축된 블록 전체를 겹쳐 기입하는 경우, 블록(710 및 715)은 건너뛸 수 있다. 다음으로, 셰이더 유닛은 병합된 데이터를 다시 캐시에 기입한다(블록 720). 일부 경우에 셰이더 유닛은 병합된 데이터를 압축하고 나서 압축된 병합된 데이터를 다시 캐시에 기입할 수 있다. 블록(720) 후에, 방법(700)이 종료한다.
이제 도 8을 참조하면, 압축된 표면에 대해 기입을 수행하기 위한 방법(800)의 다른 실시예가 도시된다. 셰이더 유닛은 압축된 표면을 목표로 하는 기입 요청을 수신한다(블록 805). 셰이더 유닛은 기입 요청에 의해 목표로 하는 압축된 표면의 제1 블록을 식별한다(블록 810). 다음으로, 셰이더 유닛은 제1 블록을 페치하고 압축 해제하기 위한 로직을 활성화할지 여부를 결정한다(블록 815). 일 실시예에서, 제1 블록을 페치하고 압축 해제하기 위한 로직을 활성화할지 여부에 대한 결정은 하나 이상의 조건을 검출한 것에 기초한다.
셰이더 유닛이 제1 조건을 검출하면(조건 블록(820), "예" 분기), 셰이더 유닛은 제1 블록을 페치하고 압축 해제하기 위한 로직이 활성화되는 것을 방지한다(블록 825). 일 실시예에서, 제1 조건은 제1 블록의 모든 데이터가 단일 값으로 설정되어 있다고 결정하는 것이다. 일 실시예에서, 셰이더 유닛은 제1 블록과 연관된 메타데이터를 검색함으로써 제1 블록의 모든 데이터가 단일 값으로 설정되어 있다고 결정한다. 단일 값은 0.0, 1.0 또는 그 사이의 다른 값일 수 있다. 메타데이터가 제1 블록의 데이터가 소거된 것을 나타내는 경우 이것은 제1 블록이 단일 값으로 설정되어 있다는 것을 나타낸다. 다른 실시예에서, 제1 조건은 기입 요청의 데이터가 제1 블록 전체를 업데이트하고 있다고 결정하는 것이다. 다른 실시예에서, 제1 조건은 다른 이벤트 및/또는 지시를 포함할 수 있다.
블록(825) 후에, 셰이더 유닛은 새로운 제1 블록을 형성하기 위해 기입 요청의 데이터를 압축한다(블록 830). 일 실시예에서, 기입 요청의 데이터는 또한 "픽셀 데이터"또는 "픽셀"이라고 칭할 수 있다. 다음으로, 셰이더 유닛은 새로운 제1 블록을 캐시에 기입한다(블록 835). 실시예에 따라, 셰이더 유닛은 새로운 제1 블록을 캐시에 기입하기 전에 새로운 제1 블록을 압축하거나 압축하지 않을 수 있다.
셰이더 유닛이 제1 조건을 검출하지 않으면(조건 블록(820), "아니오" 분기), 셰이더 유닛은 제2 조건이 검출되는지 여부를 결정한다(조건 블록(840)). 일 실시예에서, 제2 조건은 기입 요청의 데이터가 제1 블록 전체보다 더 적은 것을 목표로 하고 있다고 결정하는 것이다. 다른 실시예에서, 제2 조건은 다른 이벤트 및/또는 지시를 포함할 수 있다. 제2 조건이 검출되면(조건 블록(840), "예" 분기), 셰이더 유닛은 제1 블록을 페치하고 압축 해제하기 위한 로직을 활성화한다(블록(845)). 다음으로, 셰이더 유닛은 기입 요청의 데이터를 압축 해제된 제1 블록과 병합하여 새로운 제1 블록을 형성한다(블록 850). 그 다음, 셰이더 유닛은 새로운 제1 블록을 압축하고 캐시에 기입한다(블록 855).
제2 조건이 검출되지 않으면(조건 블록 840, "아니오" 분기), 셰이더 유닛은 제1 블록을 페치하고 압축 해제하기 위한 로직이 활성화되는 것을 방지한다(블록 860). 일 실시예에서, 제2 조건이 검출되지 않으면, 이것은 기입 요청의 데이터가 제1 블록 전체를 목표로 하고 있다는 것을 나타낸다. 블록(860) 후에, 셰이더 유닛은 기입 요청의 데이터를 압축하여 새로운 제1 블록을 형성한다(블록 865). 그 다음, 셰이더 유닛은 캐시 내의 제1 블록을 새로운 제1 블록으로 겹쳐 기입한다(블록 870). 블록(835, 855 및 870) 후에, 방법(800)이 종료한다.
다양한 실시예에서, 소프트웨어 애플리케이션의 프로그램 명령이 이전에 설명된 방법 및/또는 메커니즘을 구현하는데 사용된다. 프로그램 명령은 C와 같은 하이 레벨 프로그래밍 언어로 하드웨어의 거동을 기술한다. 대안적으로 베릴로그(Verilog)와 같은 하드웨어 설계 언어(hardware design language: HDL)가 사용된다. 프로그램 명령은 비-일시적인 컴퓨터 판독 가능 저장 매체에 저장된다. 다양한 유형의 저장 매체가 이용 가능할 수 있다. 저장 매체는 프로그램 실행을 위해 컴퓨팅 시스템에 프로그램 명령 및 수반하는 데이터를 제공하기 위해 사용 동안 컴퓨팅 시스템에 의해 액세스 가능하다. 컴퓨팅 시스템은 적어도 하나 이상의 메모리, 및 프로그램 명령을 실행하도록 구성된 하나 이상의 프로세서를 포함한다.
전술한 실시예는 단지 비-제한적인 구현예일 뿐이라는 것이 강조되어야 한다. 전술한 내용을 완전히 이해하면, 이 기술 분야에 통상의 지식을 가진 자라면 다양한 변형 및 수정이 명백해질 것이다. 다음의 청구 범위는 이러한 모든 변형 및 수정을 포함하는 것으로 해석되어야 하는 것으로 의도된다.

Claims (20)

  1. 프로세서로서,
    캐시; 및
    상기 캐시에 연결된 하나 이상의 셰이더 유닛(shader unit)을 포함하되;
    압축된 표면을 목표로 하는 기입 요청에 응답하여, 상기 하나 이상의 셰이더 유닛의 셰이더 유닛은,
    상기 기입 요청에 의해 목표로 하는 상기 압축된 표면의 제1 블록을 식별하고;
    상기 제1 블록을 페치(fetch)하고 압축 해제하기 위한 로직을 활성화할지 여부를 결정하고;
    제1 조건을 검출한 것에 응답하여,
    상기 제1 블록을 페치하고 압축 해제하기 위한 로직이 활성화되는 것을 방지하고;
    상기 기입 요청의 데이터를 압축하여 새로운 제1 블록을 형성하고; 그리고
    상기 새로운 제1 블록을 상기 캐시에 기입하도록 구성된, 프로세서.
  2. 제1항에 있어서, 상기 제1 조건은 상기 제1 블록의 모든 데이터가 단일 값으로 설정되어 있다고 결정하는 것이고, 상기 셰이더 유닛은, 병합된 데이터를 압축하여 새로운 제1 블록을 형성하기 전에 상기 기입 요청의 데이터를 상기 단일 값의 데이터와 병합하도록 구성된, 프로세서.
  3. 제1항에 있어서, 상기 제1 조건은 상기 기입 요청의 데이터가 상기 제1 블록 전체를 업데이트하고 있다고 결정하는 것이고, 상기 셰이더 유닛은 상기 캐시 내 상기 제1 블록을 상기 새로운 제1 블록으로 겹쳐 기입(overwrite)하도록 더 구성된, 프로세서.
  4. 제1항에 있어서, 제2 조건을 검출한 것에 응답하여, 상기 셰이더 유닛은,
    상기 제1 블록을 페치하고 압축 해제하기 위한 로직을 활성화하고;
    상기 기입 요청의 데이터를 상기 압축 해제된 제1 블록과 병합하여 새로운 제1 블록을 형성하고; 그리고
    상기 새로운 제1 블록을 압축하여 상기 캐시에 기입하도록 구성된, 프로세서.
  5. 제4항에 있어서, 상기 제2 조건은 상기 기입 요청의 데이터가 상기 제1 블록 전체보다 적은 것을 목표로 하고 있다고 결정하는 것인, 프로세서.
  6. 제5항에 있어서, 상기 셰이더 유닛은 상기 제1 블록과 연관된 메타데이터에 액세스하도록 더 구성되고, 상기 메타데이터는 상기 제1 블록을 압축하는데 사용되는 압축의 유형을 지정하는 정보를 포함하는, 프로세서.
  7. 제6항에 있어서, 상기 셰이더 유닛은 상기 정보를 이용하여 상기 제1 블록을 압축 해제하도록 더 구성된, 프로세서.
  8. 컴퓨팅 디바이스에서 사용하기 위한 방법으로서,
    압축된 표면을 목표로 하는 제1 기입 요청을 수신하는 단계;
    셰이더 유닛이 상기 제1 기입 요청에 의해 목표로 하는 상기 압축된 표면의 제1 블록을 식별하는 단계;
    상기 셰이더 유닛이 상기 제1 블록을 페치하고 압축 해제하기 위한 로직을 활성화할지 여부를 결정하는 단계;
    제1 조건을 검출하는 것에 응답하여, 상기 셰이더 유닛은,
    상기 제1 블록을 페치하고 압축 해제하기 위한 로직이 활성화되는 것을 방지하는 단계;
    상기 기입 요청의 데이터를 압축하여 새로운 제1 블록을 형성하는 단계; 및
    상기 새로운 제1 블록을 캐시에 기입하는 단계를 포함하는, 컴퓨팅 디바이스에서 사용하기 위한 방법.
  9. 제8항에 있어서, 상기 제1 조건은 상기 제1 블록의 모든 데이터가 단일 값으로 설정되어 있다고 결정하는 것이고, 상기 방법은, 병합된 데이터를 압축하여 새로운 제1 블록을 형성하기 전에 상기 기입 요청의 데이터를 상기 단일 값의 데이터와 병합하는 단계를 더 포함하는, 컴퓨팅 디바이스에서 사용하기 위한 방법.
  10. 제8항에 있어서, 상기 제1 조건은 상기 기입 요청의 데이터가 상기 제1 블록 전체를 업데이트하고 있다고 결정하는 것이고, 상기 방법은 상기 캐시 내 상기 제1 블록을 상기 새로운 제1 블록으로 겹쳐 기입하는 단계를 더 포함하는, 컴퓨팅 디바이스에서 사용하기 위한 방법.
  11. 제8항에 있어서, 제2 조건을 검출한 것에 응답하여, 상기 방법은,
    상기 제1 블록을 페치하고 압축 해제하기 위한 로직을 활성화하는 단계;
    상기 기입 요청의 데이터를 상기 압축 해제된 제1 블록과 병합하여 새로운 제1 블록을 형성하는 단계; 및
    상기 새로운 제1 블록을 압축하여 상기 캐시에 기입하는 단계를 더 포함하는, 컴퓨팅 디바이스에서 사용하기 위한 방법.
  12. 제11항에 있어서, 상기 제2 조건은 상기 기입 요청의 데이터가 상기 제1 블록 전체보다 더 적은 것을 목표로 하고 있다고 결정하는 것인, 컴퓨팅 디바이스에서 사용하기 위한 방법.
  13. 제12항에 있어서, 상기 제1 블록과 연관된 메타데이터에 액세스하는 단계를 더 포함하고, 상기 메타데이터는 상기 제1 블록을 압축하는데 사용되는 압축의 유형을 지정하는 정보를 포함하는, 컴퓨팅 디바이스에서 사용하기 위한 방법.
  14. 제13항에 있어서, 상기 정보를 이용하여 상기 제1 블록을 압축 해제하는 단계를 더 포함하는 컴퓨팅 디바이스에서 사용하기 위한 방법.
  15. 시스템으로서,
    메모리; 및
    상기 메모리에 연결된 프로세서를 포함하되, 상기 프로세서는 하나 이상의 셰이더 유닛을 포함하고;
    압축된 표면을 목표로 하는 기입 요청에 응답하여, 상기 하나 이상의 셰이더 유닛의 셰이더 유닛은,
    상기 기입 요청에 의해 목표로 하는 상기 압축된 표면의 제1 블록을 식별하고;
    상기 제1 블록을 페치하고 압축 해제하기 위한 로직을 활성화할지 여부를 결정하고;
    제1 조건을 검출한 것에 응답하여,
    상기 제1 블록을 페치하고 압축 해제하기 위한 로직이 활성화되는 것을 방지하고;
    상기 기입 요청의 데이터를 압축하여 새로운 제1 블록을 형성하고; 그리고
    상기 새로운 제1 블록을 캐시에 기입하도록 구성된, 시스템.
  16. 제15항에 있어서, 상기 제1 조건은 상기 제1 블록의 모든 데이터가 단일 값으로 설정되어 있다고 결정하는 것이고, 상기 셰이더 유닛은, 병합된 데이터를 압축하여 새로운 제1 블록을 형성하기 전에 상기 기입 요청의 데이터를 상기 단일 값의 데이터와 병합하도록 구성된, 시스템.
  17. 제15항에 있어서, 상기 제1 조건은 상기 기입 요청의 데이터가 상기 제1 블록 전체를 업데이트하고 있다고 결정하는 것이고, 상기 셰이더 유닛은 상기 캐시 내 상기 제1 블록을 상기 새로운 제1 블록으로 겹쳐 기입하도록 더 구성된, 시스템.
  18. 제15항에 있어서, 제2 조건을 검출한 것에 응답하여, 상기 셰이더 유닛은,
    상기 제1 블록을 페치하고 압축 해제하기 위한 로직을 활성화하고;
    상기 기입 요청의 데이터를 상기 압축 해제된 제1 블록과 병합하여 새로운 제1 블록을 형성하고; 그리고
    상기 새로운 제1 블록을 압축하여 상기 캐시에 기입하도록 구성된, 시스템.
  19. 제18항에 있어서, 상기 제2 조건은 상기 기입 요청의 데이터가 상기 제1 블록 전체보다 더 적은 것을 목표로 하고 있다고 결정하는 것인, 시스템.
  20. 제19항에 있어서, 상기 셰이더 유닛은 상기 제1 블록과 연관된 메타데이터에 액세스하도록 더 구성되고, 상기 메타데이터는 상기 제1 블록을 압축하는데 사용되는 압축의 유형을 지정하는 정보를 포함하는, 시스템.
KR1020197017815A 2016-12-22 2017-12-20 압축된 자원에 셰이더의 기입 KR102474237B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/389,075 US10535178B2 (en) 2016-12-22 2016-12-22 Shader writes to compressed resources
US15/389,075 2016-12-22
PCT/US2017/067697 WO2018119131A1 (en) 2016-12-22 2017-12-20 Shader writes to compressed resources

Publications (2)

Publication Number Publication Date
KR20190109396A KR20190109396A (ko) 2019-09-25
KR102474237B1 true KR102474237B1 (ko) 2022-12-05

Family

ID=57708524

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197017815A KR102474237B1 (ko) 2016-12-22 2017-12-20 압축된 자원에 셰이더의 기입

Country Status (6)

Country Link
US (1) US10535178B2 (ko)
EP (1) EP3340176B1 (ko)
JP (1) JP7078628B2 (ko)
KR (1) KR102474237B1 (ko)
CN (1) CN110050294A (ko)
WO (1) WO2018119131A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
CN108804219B (zh) 2017-04-28 2024-01-12 超威半导体公司 多计算核中的灵活着色器导出设计
US11212537B2 (en) 2019-03-28 2021-12-28 Advanced Micro Devices, Inc. Side information for video data transmission
US20230206380A1 (en) * 2021-12-28 2023-06-29 Advanced Micro Devices, Inc. Optimizing partial writes to compressed blocks
CN116467227B (zh) * 2023-06-19 2023-08-25 深流微智能科技(深圳)有限公司 Tmu系统和tmu系统的运算优化方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150070380A1 (en) * 2013-09-11 2015-03-12 Nvidia Corporation System, method, and computer program product for using compression with programmable sample locations

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6108460A (en) 1996-01-02 2000-08-22 Pixelfusion Limited Load balanced image generation
US6243081B1 (en) 1998-07-31 2001-06-05 Hewlett-Packard Company Data structure for efficient retrieval of compressed texture data from a memory system
US6452602B1 (en) 1999-12-13 2002-09-17 Ati International Srl Method and apparatus for storing compressed data
US6959110B1 (en) 2000-08-17 2005-10-25 Nvidia Corporation Multi-mode texture compression algorithm
JP4186561B2 (ja) 2002-04-25 2008-11-26 ソニー株式会社 画像処理装置およびその方法
KR100510131B1 (ko) 2003-01-29 2005-08-26 삼성전자주식회사 픽셀 캐쉬 및 이를 이용한 3차원 그래픽 가속 장치 및 방법
US7239322B2 (en) 2003-09-29 2007-07-03 Ati Technologies Inc Multi-thread graphic processing system
US8643659B1 (en) * 2003-12-31 2014-02-04 3Dlabs Inc., Ltd. Shader with global and instruction caches
US7719540B2 (en) 2004-03-31 2010-05-18 Intel Corporation Render-cache controller for multithreading, multi-core graphics processor
US20070011432A1 (en) 2005-07-06 2007-01-11 Advanced Micro Devices, Inc. Address generation unit with operand recycling
US9648325B2 (en) * 2007-06-30 2017-05-09 Microsoft Technology Licensing, Llc Video decoding implementations for a graphics processing unit
US9536275B1 (en) * 2007-07-31 2017-01-03 Nvidia Corporation Using a geometry shader for variable input and output algorithms
US8174534B2 (en) 2007-12-06 2012-05-08 Via Technologies, Inc. Shader processing systems and methods
US8295621B1 (en) * 2007-12-13 2012-10-23 Nvidia Corporation Data decompression using a geometry shading unit
US9214007B2 (en) * 2008-01-25 2015-12-15 Via Technologies, Inc. Graphics processor having unified cache system
BR112013012721A2 (pt) 2010-12-14 2016-09-06 Ericsson Telefon Ab L M codificação e decodificação de tile
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US9517079B2 (en) * 2013-03-07 2016-12-13 Zimmer, Inc. Tibial resection systems and methods for cruciate ligament retainment
US9459876B2 (en) * 2013-07-18 2016-10-04 Nvidia Corporation System, method, and computer program product for managing divergences and synchronization points during thread block execution by using a double sided queue for token storage
US9230363B2 (en) * 2013-09-11 2016-01-05 Nvidia Corporation System, method, and computer program product for using compression with programmable sample locations
US10055810B2 (en) * 2016-03-04 2018-08-21 Samsung Electronics Co., Ltd. Cache architecture for efficiently accessing texture data using buffers
US10453169B2 (en) * 2016-03-28 2019-10-22 Intel Corporation Method and apparatus for multi format lossless compression
US10186076B2 (en) * 2016-03-29 2019-01-22 Intel Corporation Per-sample MSAA rendering using comprehension data
US10719447B2 (en) * 2016-09-26 2020-07-21 Intel Corporation Cache and compression interoperability in a graphics processor pipeline
CN108804219B (zh) 2017-04-28 2024-01-12 超威半导体公司 多计算核中的灵活着色器导出设计

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150070380A1 (en) * 2013-09-11 2015-03-12 Nvidia Corporation System, method, and computer program product for using compression with programmable sample locations

Also Published As

Publication number Publication date
EP3340176A1 (en) 2018-06-27
JP2020518876A (ja) 2020-06-25
CN110050294A (zh) 2019-07-23
KR20190109396A (ko) 2019-09-25
JP7078628B2 (ja) 2022-05-31
WO2018119131A1 (en) 2018-06-28
US20180182155A1 (en) 2018-06-28
EP3340176B1 (en) 2019-06-26
US10535178B2 (en) 2020-01-14

Similar Documents

Publication Publication Date Title
KR102474237B1 (ko) 압축된 자원에 셰이더의 기입
US9892053B2 (en) Compaction for memory hierarchies
KR101672150B1 (ko) 페이지-폴트를 방지하기 위한 gpu 메모리 버퍼 프리-페치 및 프리-백 시그널링
KR100965637B1 (ko) 상주 밉맵 데이터를 이용한 비상주 밉맵 데이터의 보외법
US9245496B2 (en) Multi-mode memory access techniques for performing graphics processing unit-based memory transfer operations
US9881391B2 (en) Procedurally defined texture maps
US9307249B2 (en) Processing device and method of compressing images
KR102006584B1 (ko) 레이트 심도 테스팅과 컨서버티브 심도 테스팅 간의 동적 스위칭
KR102480787B1 (ko) 순서에 관계 없는 캐시 리턴
KR102264163B1 (ko) 텍스쳐를 처리하는 방법 및 장치
US10509666B2 (en) Register partition and protection for virtualized processing device
JP7169284B2 (ja) ビデオへのデルタカラー圧縮の適用
US10545800B2 (en) Direct doorbell ring in virtualized processing device
US10606740B2 (en) Flexible shader export design in multiple computing cores
US9563930B2 (en) Techniques for clearing a shared surface
US9916680B2 (en) Low-power processing in depth read-only operating regimes
US11481967B2 (en) Shader core instruction to invoke depth culling
US20230206380A1 (en) Optimizing partial writes to compressed blocks
US20230169621A1 (en) Compute shader with load tile
US10311627B2 (en) Graphics processing apparatus and method of processing graphics pipeline thereof
Chou Windows High-Speed Drawing Technology Research

Legal Events

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