KR102606747B1 - 픽셀 기입 데이터를 위한 압축 기법들 - Google Patents

픽셀 기입 데이터를 위한 압축 기법들 Download PDF

Info

Publication number
KR102606747B1
KR102606747B1 KR1020227017233A KR20227017233A KR102606747B1 KR 102606747 B1 KR102606747 B1 KR 102606747B1 KR 1020227017233 A KR1020227017233 A KR 1020227017233A KR 20227017233 A KR20227017233 A KR 20227017233A KR 102606747 B1 KR102606747 B1 KR 102606747B1
Authority
KR
South Korea
Prior art keywords
circuitry
block
data
cache
write
Prior art date
Application number
KR1020227017233A
Other languages
English (en)
Other versions
KR20220090548A (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 KR20220090548A publication Critical patent/KR20220090548A/ko
Application granted granted Critical
Publication of KR102606747B1 publication Critical patent/KR102606747B1/ko

Links

Images

Classifications

    • 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
    • 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/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
    • 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/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • 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
    • 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
    • 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/363Graphics controllers
    • 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/1028Power efficiency
    • 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
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

데이터의 압축에 관한 기법들이 개시된다. 프로그래밍가능 셰이더 회로부는 픽셀 데이터를 기입하는 계산 커널들의 프로그램 명령어들을 실행하도록 구성된다. 제1 캐시는 프로그래밍가능 셰이더 회로부로부터의 픽셀 기입 데이터를 저장하도록 구성되고, 제1 압축 회로부는 제1 캐시 회로부에서의 제1 블록의 전체 축적에 응답하여 픽셀 기입 데이터의 제1 블록을 압축하도록 구성된다. 제2 캐시 회로부는 프로그래밍가능 셰이더 회로부로부터의 픽셀 기입 데이터를 저장 계층구조에서의 더 높은 레벨에 저장하도록 구성되고, 제2 압축 회로부는 제2 캐시 회로부에서의 제2 블록의 전체 축적에 응답하여 픽셀 기입 데이터의 제2 블록을 압축하도록 구성된다. 기입 회로부는 픽셀 데이터의 제1 및 제2 압축 블록들을 결합된 기입으로 저장 계층구조에서의 더 높은 레벨에 기입하도록 구성된다.

Description

픽셀 기입 데이터를 위한 압축 기법들
본 개시내용은 일반적으로 그래픽 프로세서 아키텍처에 관한 것으로, 보다 구체적으로는 컴퓨팅 태스크들에 의해 생성된 픽셀 기입 데이터를 압축하도록 구성된 회로부에 관한 것이다.
컴퓨팅 디바이스들은, 예를 들어 메모리 풋프린트(footprint) 또는 대역폭을 감소시키기 위해 다양한 유형들의 데이터를 압축할 수 있다. 그래픽 픽셀 셰이더(shader)들과 같은 특정 유형들의 태스크들은 압축을 위해 편리한 블록들에 데이터를 기입할 수 있다. 계산 커널들과 같은 다른 유형들의 태스크들이 더 많은 임의의 기입들을 생성할 수 있다. 계산 커널들은 다양한 목적들을 위해, 예를 들어, 컴퓨터 게이밍에서의 포스트-프로세싱을 위해 또는 계산 사진을 위해 이미지 프로세싱을 수행할 수 있다.
도 1a는 일부 실시예들에 따른, 예시적인 그래픽 프로세싱 동작들의 개요를 예시하는 도면이다.
도 1b는 일부 실시예들에 따른, 예시적인 그래픽 유닛을 예시하는 블록도이다.
도 2는 일부 실시예들에 따른, 저장 계층구조에서의 상이한 레벨들에서 캐시들에 대응하는 다수의 압축 레벨들을 갖는 회로부를 예시하는 블록도이다.
도 3은 일부 실시예들에 따른, 다수의 압축 레벨들을 갖는 회로부를 예시하는 보다 상세한 블록도이다.
도 4는 일부 실시예들에 따른, 상이한 프로세싱 스테이지들에서 매크로-블록 내의 픽셀 기입 데이터의 블록들의 예시적인 상태를 예시하는 도면이다.
도 5는 일부 실시예들에 따른, 메모리에 기입하기 전에 불완전한 블록을 처리하기 위한 예시적인 방법을 예시하는 흐름도이다.
도 6은 일부 실시예들에 따른, 다수의 캐시 레벨들에서의 압축을 위한 예시적인 방법을 예시하는 흐름도이다.
도 7은 일부 실시예들에 따른, 그래픽 프로세서를 포함하는 예시적인 컴퓨팅 디바이스를 예시하는 블록도이다.
도 8은 일부 실시예들에 따른, 회로 설계 정보를 저장하는 예시적인 컴퓨터 판독가능 매체를 예시하는 블록도이다.
본 명세서는, 본 개시내용이 하나의 특정 구현을 지칭하는 것이 아니라 오히려 첨부된 청구범위를 포함하는 본 개시내용의 사상 내에 포함되는 실시예들의 범위를 지칭하는 것으로 의도된다는 것을 나타내기 위해 다양한 실시예들에 대한 참조를 포함한다. 특정 특성들, 구조들, 또는 특징들은 본 개시내용에 부합하는 임의의 적합한 방식으로 조합될 수 있다.
본 개시내용 내에서, 상이한 엔티티들("유닛들", "회로들", 다른 컴포넌트들 등으로 다양하게 지칭될 수 있음)은 하나 이상의 태스크들 또는 동작들을 수행하도록 "구성된" 것으로 설명되거나 또는 청구될 수 있다. 이러한 표현-[하나 이상의 태스크들을 수행]하도록 구성된 [엔티티]-은 본 명세서에서 구조(즉, 전자 회로와 같은 물리적인 것)를 지칭하는 데 사용된다. 더 상세하게는, 이러한 표현은 이러한 구조가 동작 동안 하나 이상의 태스크들을 수행하도록 배열된다는 것을 나타내는 데 사용된다. 구조는 그 구조가 현재 동작되고 있지 않더라도 일부 태스크를 수행하도록 "구성된다"고 말할 수 있다. "픽셀 데이터의 블록을 압축하도록 구성된 압축 회로"는, 예를 들어, 해당 회로가 현재 사용되고 있지 않더라도(예를 들어, 전원이 그 회로에 연결되어 있지 않음), 동작 동안 이러한 기능을 수행하는 회로를 커버하도록 의도된다. 따라서, 일부 태스크를 수행하도록 "구성된" 것으로 설명된 또는 인용된 엔티티는 디바이스, 회로, 태스크를 구현하도록 실행가능한 프로그램 명령어들을 저장하는 메모리 등과 같은 물리적인 것을 지칭한다. 이러한 문구는 무형인 것을 지칭하기 위해 본 명세서에서 사용되지는 않는다.
용어 "구성된"은 "구성가능한"을 의미하도록 의도되지 않는다. 예를 들어, 프로그래밍되지 않은 FPGA는, 그것이 일부 구체적인 기능을 수행하도록 "구성가능"할 수 있지만, 그 기능을 수행하도록 "구성된" 것으로 고려되지 않을 것이다. 적절한 프로그래밍 후에, 이어서 FPGA는 그 기능을 수행하도록 구성될 수 있다.
구조가 하나 이상의 태스크들을 수행하도록 "구성"되었다고 첨부된 청구항들에 인용하는 것은 명백히 그 청구항 구성요소에 대하여 35 U.S.C. §(112)(f)를 적용하지 않도록 의도된다. 따라서, 출원된 본 출원서의 어떠한 청구항들도 수단+기능식 요소들을 갖는 것으로 해석되도록 의도되지 않는다. 출원인이 심사 시 Section(112)(f)의 적용을 바란다면, [기능을 수행]"하기 위한 수단" 구조를 사용하여 청구항 구성요소들을 열거할 것이다.
본 명세서에서 사용되는 바와 같이, 용어 "기초하여"는 결정에 영향을 주는 하나 이상의 인자들을 설명하기 위해 사용된다. 이러한 용어는 부가적인 인자들이 결정에 영향을 줄 수 있는 가능성을 배제하지 않는다. 즉, 결정은 단지 특정된 인자들에 기초하거나 또는 그 특정된 인자들뿐만 아니라 다른, 불특정된 인자들에 기초할 수 있다. "B에 기초하여 A를 결정한다"라는 문구를 고려한다. 이러한 문구는 B가 A를 결정하는 데 사용되거나 A의 결정에 영향을 주는 인자라는 것을 명시한다. 이러한 문구는 A의 결정이 C와 같은 일부 다른 인자에 또한 기초할 수 있음을 배제하지 않는다. 또한, 이 문구는 A가 B에만 기초하여 결정되는 실시예를 커버하도록 의도된다. 본 명세서에서 사용되는 바와 같이, "에 기초하여"라는 문구는 "적어도 부분적으로 기초하여"라는 문구와 동의어이다.
추가로, 본 명세서에 사용되는 바와 같이, 용어들 "제1", "제2", "제3" 등은 반드시 요소들 사이의 순서화(예를 들어, 시간적)를 암시하는 것은 아니다. 예를 들어, "제1" 그래픽 동작 및 "제2" 그래픽 동작에 대한 언급은 그래픽 동작의 순서를 암시하지 않아서, 이들 동작들 사이의 시간적 관계를 제약하는 부가적인 언어가 없다. 요약하면, "제1", "제2" 등과 같은 참조들은 상세한 설명 및 첨부된 청구항들에서 참조의 용이함을 위한 라벨들로서 사용된다.
그래픽 프로세싱 개요
도 1a를 참조하면, 그래픽 데이터를 프로세싱하기 위한 예시적인 프로세싱 흐름(100)을 예시하는 흐름도가 도시된다. 일부 실시예들에서, 변환 및 조명 단계(110)는 정의된 광원 위치들, 반사율 등에 기초하여 애플리케이션으로부터 수신된 정점들에 대한 조명 정보를 프로세싱하는 것, 정점들을 다각형들(예를 들어, 삼각형들)로 어셈블하는 것, 및/또는 3차원 공간에서의 위치에 기초하여 다각형들을 정확한 크기 및 배향으로 변환하는 것을 수반할 수 있다. 클립 단계(115)는 가시성 영역 외부에 있는 다각형들 또는 정점들을 폐기하는 것을 수반할 수 있다. 래스터화 단계(120)는 각각의 다각형 내의 프래그먼트(fragment)들을 정의하는 것 및 예를 들어 다각형의 정점들의 텍스처 좌표들에 기초하여 각각의 프래그먼트에 대한 초기 색상 값들을 할당하는 것을 수반할 수 있다. 프래그먼트들은 이들이 중첩되는 픽셀들에 대한 속성들을 특정할 수 있지만, 실제 픽셀 속성들은 (예를 들어, 프레임 버퍼에서) 다수의 프래그먼트들을 조합하는 것 및/또는 하나 이상의 프래그먼트들을 무시하는 것(예를 들어, 그들이 다른 객체들에 의해 커버되는 경우)에 기초하여 결정될 수 있다. 섀이딩 단계(130)는 조명, 섀도우들, 범프 맵핑, 반투명도 등에 기초하여 픽셀 컴포넌트들을 변경하는 것을 수반할 수 있다. 섀이딩된 픽셀들은 프레임 버퍼(135)에서 어셈블될 수 있다. 현대의 GPU들은 전형적으로 애플리케이션 개발자들에 의한 셰이딩 및 다른 프로세싱 단계들의 맞춤화를 허용하는 프로그래밍가능 셰이더들을 포함한다. 따라서, 다양한 실시예들에서, 도 1a의 예시적인 요소들은 다양한 순서들로 수행되거나, 병렬로 수행되거나, 또는 생략될 수 있다. 부가적인 프로세싱 단계들이 또한 구현될 수 있다.
이제, 도 1b를 참조하면, 일부 실시예들에 따라, 그래픽 유닛(150)을 예시하는 단순화된 블록도가 도시된다. 예시된 실시예에서, 그래픽 유닛(150)은 프로그래밍가능 셰이더(160), 정점 파이프(185), 프래그먼트 파이프(175), 텍스처 프로세싱 유닛(texture processing unit, TPU)(165), 이미지 기입 유닛(170), 및 메모리 인터페이스(180)를 포함한다. 일부 실시예들에서, 그래픽 유닛(150)은 다수의 실행 파이프라인들 또는 인스턴스들을 사용하여 그래픽 데이터를 병렬로 프로세싱하도록 구성될 수 있는 프로그래밍가능 셰이더(160)를 사용하여 정점 및 프래그먼트 데이터 둘 모두를 프로세싱하도록 구성된다.
정점 파이프(185)는, 예시된 실시예에서, 정점 데이터를 프로세싱하도록 구성된 다양한 고정 기능 하드웨어를 포함할 수 있다. 정점 파이프(185)는 정점 프로세싱을 조정하기 위해 프로그래밍가능 셰이더(160)와 통신하도록 구성될 수 있다. 예시된 실시예에서, 정점 파이프(185)는 프로세싱된 데이터를 추가적인 프로세싱을 위해 프래그먼트 파이프(175) 및/또는 프로그래밍가능 셰이더(160)에 전송하도록 구성된다.
프래그먼트 파이프(175)는, 예시된 실시예에서, 픽셀 데이터를 프로세싱하도록 구성된 다양한 고정 기능 하드웨어를 포함할 수 있다. 프래그먼트 파이프(175)는 프래그먼트 프로세싱을 조정하기 위해 프로그래밍가능 셰이더(160)와 통신하도록 구성될 수 있다. 프래그먼트 파이프(175)는 프래그먼트 데이터를 생성하기 위해 정점 파이프(185) 및/또는 프로그래밍가능 셰이더(160)로부터의 다각형들에 대한 래스터화를 수행하도록 구성될 수 있다. 정점 파이프(185) 및/또는 프래그먼트 파이프(175)는 그래픽 데이터에 액세스하기 위해 메모리 인터페이스(180)에 커플링될 수 있다(커플링은 도시되지 않음).
프로그래밍가능 셰이더(160)는, 예시된 실시예에서, 정점 파이프(185)로부터의 정점 데이터 및 프래그먼트 파이프(175) 및/또는 TPU(165)로부터의 프래그먼트 데이터를 수신하도록 구성된다. 프로그래밍가능 셰이더(160)는 정점 데이터의 다양한 변환들 및/또는 조정들을 포함할 수 있는 정점 데이터에 대해 정점 프로세싱 태스크들을 수행하도록 구성될 수 있다. 프로그래밍가능 셰이더(160)는 또한, 예시된 실시예에서, 예를 들어 텍스처화 및 셰이딩과 같은 픽셀 데이터에 대해 프래그먼트 프로세싱 태스크들을 수행하도록 구성된다. 프로그래밍가능 셰이더(160)는 병렬로, 예를 들어 단일 명령어 다중 데이터(SIMD) 방식으로 데이터를 프로세싱하기 위한 다수의 실행 파이프라인들을 포함할 수 있다.
TPU(165)는 예시된 실시예에서, 프로그래밍가능 셰이더(160)로부터 프래그먼트 프로세싱 태스크들을 스케줄링하도록 구성된다. 일부 실시예들에서, TPU(165)는 텍스처 데이터를 프리페치하고 (예를 들어, 메모리 인터페이스(180)를 통해) 프로그래밍가능 셰이더(160)에 의한 추가적인 프로세싱을 위해 초기 색상들을 프래그먼트들에 할당하도록 구성된다. TPU(165)는 예를 들어 정규화된 정수 포맷들 또는 부동 소수점 포맷들로 프래그먼트 컴포넌트들을 제공하도록 구성될 수 있다. 일부 실시예들에서, TPU(165)는 프로그래밍가능 셰이더(160) 내의 4개의 실행 파이프라인들의 그룹에 의해 프로세싱될 2x2 포맷인 4개의 ("프래그먼트 쿼드(fragment quad)") 그룹들로 프래그먼트들을 제공하도록 구성된다.
이미지 기입 유닛(IWU)(170)은, 일부 실시예들에서, 이미지의 프로세싱된 타일들을 저장하도록 구성되고, 렌더링된 이미지가 디스플레이를 위해 또는 저장을 위해 메모리에 전달되기 전에 그에 대한 동작들을 수행할 수 있다. 일부 실시예들에서, 그래픽 유닛(150)은 타일-기반 지연 렌더링(tile-based deferred rendering, TBDR)을 수행하도록 구성된다. 타일-기반 렌더링에서, 스크린 공간의 상이한 부분들(예를 들어, 픽셀들의 정사각형들 또는 직사각형들)은 프레임으로 결합되기 전에 별개로 프로세싱될 수 있다. 메모리 인터페이스(180)는 다양한 실시예들에서 다양한 메모리 계층구조들 중 하나 이상과의 통신들을 용이하게 할 수 있다.
다수의 캐시 레벨들에서의 압축의 개요
도 2는 일부 실시예들에 따른, 저장 계층구조에서의 상이한 레벨들에서 캐시들에 대응하는 다수의 압축 레벨들을 갖는 회로부를 예시하는 블록도이다. 예시된 실시예에서, 그래픽 프로세서는 프로그래밍가능 셰이더(160), 제1 레벨 캐시(210), 제어 회로부(214), 압축 회로부(216), 제2 레벨 캐시(220), 및 압축/팩 회로부(226)를 포함한다.
프로그래밍가능 셰이더(160)는 픽셀 데이터를 기입하는 계산 태스크들을 실행할 수 있다. 이러한 픽셀 데이터는, 연속적으로 어드레싱된 픽셀 기입들의 블록이 압축에 이용가능할 때 그것이 알려지지 않도록 계산 커널의 명령어들에 따라 임의로 기입될 수 있다. 일부 실시예들에서, 디바이스는 제1 레벨 캐시(210)에 저장된 데이터에 기초하여 기회주의적으로 축적 및 압축되도록 구성되고, 또한 제2 레벨 캐시(220)에 저장된 데이터에 기초하여 압축되도록 구성된다. 제2 레벨 캐시(220)가 제1 레벨 캐시(210)보다 큰 실시예들에서, 더 높은 레벨은 압축을 위해 블록들을 완전히 축적할 가능성이 더 높을 수 있다. 다양한 예들이 계산 태스크들의 맥락에서 본 명세서에 논의되지만, 예를 들어, 임의의 픽셀 기입들을 갖는 픽셀 셰이더들을 포함하는 유사한 기법들이 다양한 유형들의 그래픽 작업에 대해 사용될 수 있다.
제1 레벨 캐시(210) 및 제2 레벨 캐시(220)는 다양한 캐싱 기술들 중 임의의 것을 사용하여 구현될 수 있고, 연관성, 기입 또는 다시 기입 구현예, 저장 회로 기술, 태그 크기 등과 같은 특성들을 공유할 수 있거나 공유하지 않을 수 있다. 위에서 논의된 바와 같이, 일부 실시예들에서, 제2 레벨 캐시(220)는 제1 레벨 캐시(210)보다 더 많은 양의 데이터를 저장하도록 구성된다. 일부 실시예들에서, 제2 레벨 캐시(220)는 (예를 들어, 다수의 프로그래밍가능 셰이더들, 텍스처 프로세싱 유닛, 이미지 기입 버퍼 등 중에서) 공유 캐시이다.
일부 실시예들에서, 압축 회로부(216) 및 압축/팩 회로부(226)는 데이터의 블록들을 압축하도록 구성된다. 일부 실시예들에서, 압축 회로부는 하나 이상의 크기들의 데이터 블록들에 대해 동작하도록 구성된다. 예를 들어, 다양한 실시예들에서, 압축 회로부(216)는 64, 128, 또는 256 바이트의 데이터에 대해 동작하도록 구성될 수 있다. 픽셀 데이터에 사용되는 정밀도에 의존하여, 이는, 예를 들어 4x4, 8x4, 또는 8x8 픽셀의 세트들에 대한 픽셀 기입 데이터에 대응할 수 있다.
회로부(216, 226)는 동일한 압축 알고리즘 또는 상이한 압축 알고리즘들을 사용할 수 있다. 일부 실시예들에서, 압축 회로부는 주어진 블록을 인코딩하기 위해 다수의 예측기들을 병렬로 사용하고 최상의 예측기를 선정할 수 있다. 일부 실시예들에서, 압축 회로부(216)는 압축 블록들을 제2 레벨 캐시(220)에 기입하기 전에 제1 레벨 캐시(210)에 완전히 축적된 임의의 블록들을 압축하도록 구성된다. 데이터 블록 또는 데이터 구조는 그 블록 또는 구조의 모든 데이터 요소들이 그 저장 요소에 저장될 때 저장 요소에서 "완전히 축적"된다. 예를 들어, 8x4 블록의 픽셀 데이터의 경우, 블록은, 모든 32개의 픽셀들에 대한 픽셀 데이터가 저장될 때 완전히 축적되지만, 하나 이상의 픽셀들에 대한 데이터가 저장되지 않으면 완전히 축적되지 않는다. 압축은 완전히 축적되지 않은 데이터 블록에 대해 (예를 들어, 블록에서 누락 데이터에 대한 디폴트 값들을 채움으로써) 여전히 수행될 수 있지만, 일부 실시예들에서, 이러한 채우기는 임의의 더 오래된 기입들이 데이터 블록과 결합되어야 하는지를 결정하기 위해 압축/팩 회로부(226)까지 지연된다.
블록이 제1 레벨 캐시(210)부터 축출될 필요가 있기 전에 압축 회로부(216)가 블록을 완전히 축적하지 않으면, 그것은 압축 없이 제2 레벨 캐시(220)에 블록의 축출된 부분을 저장할 수 있다. 따라서, 일부 실시예들에서, 압축 회로부(216)는 데이터의 블록들의 상태(예를 들어, 압축되거나 또는 압축되지 않음)를 표시하는 메타데이터를 제2 레벨 캐시(220)에 전송할 수 있다. 메타데이터는 또한 데이터 블록들이 하나 이상의 캐시 레벨들에서 완전히 축적되는지 여부를 표시할 수 있다.
일부 실시예들에서, 압축/팩 회로부(226)는 저장 계층구조에서의 더 높은 레벨에 결합된 기입을 위해 압축 블록들을 매크로-블록으로 패킹하도록 구성된다. 일부 실시예들에서, 매크로-블록은 다수의 블록들, 예를 들어, 8개 또는 32개의 블록들을 포함한다. 일부 실시예들에서, 매크로-블록 크기는 그래픽 작업그룹에 의해 프로세싱된 픽셀들의 수(예를 들어, 스레드 당 픽셀들의 수 곱하기 스레드 그룹의 크기) 이하이다. 일부 실시예들에서, 매크로-블록의 크기는 제2 레벨 캐시(220) 내의 캐시 라인의 크기에 대응한다.
매크로-블록의 일부 블록들이 압축되지 않지만 제2 레벨 캐시(220)에 완전히 축적될 수 있으면, 회로부(226)는 이들 블록들을 압축할 수 있다. 매크로-블록이 메모리에 기입될 필요가 있지만, 그의 블록들 중 일부가 완전히 축적되지 않으면, 회로부(216)는 불완전한 블록들에 대한 메모리로부터 더 오래된 데이터를 판독하고 압축을 위해 블록들을 완전히 축적하려고 시도할 수 있다. 그러한 기법들의 보다 상세한 논의는 도 5를 참조하여 아래에 포함된다.
도 3은 일부 실시예들에 따른, 다수의 압축 레벨들을 갖는 회로부를 예시하는 보다 상세한 블록도이다. 예시된 실시예에서, 그래픽 프로세서는 프로그래밍가능 셰이더(160), 픽셀 백엔드(pixel back end, PBE) 데이터경로(datapath)(305), PBE 캐시(310), PBE 캐시 제어 회로부(318), 멀티플렉서들(329, 328), 압축기(316), L2 캐시(320), 매크로-블록 스코어보드(312), 매크로-블록 스테이징 버퍼(staging buffer)(314), 압축해제기(330), 압축/팩 회로부(326), 및 메모리 관리 유닛(MMU)(340)을 포함한다.
PBE 회로부(305, 310, 318)가 도 1의 이미지 기입 버퍼 유닛(170)의 예시적인 구현예에 포함될 수 있고, PBE 캐시(310)가 도 2의 제1 레벨 캐시(210)의 일 예라는 것을 유의한다. 유사하게, L2 캐시(320)는 도 2의 제2 레벨 캐시(220)의 일 예이다. 도 3의 특정 예에서, L2 캐시(320)는 메모리 관리 유닛(340)을 통해 메모리로부터 데이터를 로딩하고 메모리에 데이터를 저장하도록 구성된다.
예시된 실시예에서, PBE 데이터경로(305)는 프로그래밍가능 셰이더(160)로부터 픽셀 기입들을 수신하도록 구성되고, 수신된 픽셀 데이터에 대한 하나 이상의 동작들을 수행할 수 있다. 예시된 실시예에서, PBE 데이터경로(305)는 매크로-블록(MB) 압축가능 기입들에 대한 데이터를 MUX(329)에 전송하고 PBE 캐시를 우회하도록 구성된다. 이러한 유형들의 기입들은 매크로-블록에서 각각의 블록에 대해 전체 축적을 가질 수 있다. 프로그래밍가능 셰이더(160)는 기입들이 매크로-블록 압축가능한지 여부를 표시하는 기입들에 관한 정보를 포함할 수 있다. 압축기(316)는 MB 압축가능 기입 내에서 각각의 블록을 압축하고, L2 캐시(320)에 데이터를 저장할 수 있다(또는 대안적으로, 일부 실시예들에서, 매크로-블록을 전체로서 압축할 수 있다). 예시된 실시예에서, PBE 데이터경로(305)는 비-MB-압축가능 기입들에 대한 데이터를 PBE 캐시(310)에 저장하도록 구성된다. 일부 실시예들에서, PBE 캐시 제어부(318)는 할당, 축출, 가장 최근에 사용된 정보와 같은 캐시 메타데이터를 유지하는 것 등을 포함하는 PBE 캐시(310)의 다양한 기능을 제어하도록 구성된다.
예시된 실시예에서, 압축기(316)는 PBE 캐시(310)로부터 데이터(예를 들어, 축출된 데이터)를 수신하고 픽셀 데이터의 완전히 축적된 블록들을 압축하도록 구성된다. 예시된 실시예에서, 압축기(316)는 저장된 블록들의 상태를 표시하는 메타데이터와 함께, (압축되는지 여부에 관계없이) 블록들을 L2 캐시(320)에 저장하도록 구성된다. 메타데이터가 L2 캐시(320)의 동작과의 간섭을 감소시키기 위해 L2 캐시(320)의 하나 이상의 캐시 라인들에 함께 저장될 수 있다는 것을 유의한다. 일부 실시예들에서, 결합된 기입들에 대한 메타데이터를 축적하기 위해 별개의 하드웨어 메타데이터 버퍼가 구현될 수 있다. 완전히 축적되지 않은 블록들의 경우, 압축기(316)는 이러한 블록을 압축하지 않을 수 있지만, 그들을 압축되지 않은 형태로 L2 캐시(320)에 저장할 수 있다.
일부 실시예들에서, 매크로-블록 스코어보드(312)는 L2 캐시(320) 내의 매크로-블록들의 충만도 및 위치들을 추적하도록 구성된다. 스코어보드 엔트리들은 유효성, 매크로-블록 베이스 어드레스, 압축 포맷, 매크로-블록 크기, 패킹된 포맷, 매크로-블록에 대한 메타데이터 어드레스, 매크로-블록이 완전하게 되는 데 필요한 픽셀들의 수, 서브-블록 상태 정보, 타임아웃 상태 등을 추적할 수 있다. 매크로-블록 스코어보드(312)는 전체 축적을 검출하는 것에 응답하여 매크로-블록들을 축출할 수 있다. 일부 실시예들에서, 매크로-블록 스코어보드(312)는 타임-아웃 간격 이후, 부분적으로 커버되는 매크로-블록들을 축출하도록 구성된다(이는, 예를 들어, 타임-아웃된 매크로-블록들이 이미 축출되었을 것이기 때문에, 캐시 플러시 무효화에 필요한 매크로-블록들의 축출을 감소시킬 수 있음). 일부 실시예들에서, 매크로-블록을 축출하기 위해, 매크로-블록 스코어보드(312)는 매크로-블록 내의 각각의 캐시 라인에 대한 축출 커맨드를 L2 캐시(320)에 전송하도록 구성되며, 이는 축출된 라인들을 매크로-블록 스테이징 버퍼(314)에 전송하고, 축출된 라인들을 클린(clean)하고 유효하지 않은 것으로 마킹한다.
일부 실시예들에서, 매크로-블록 스테이징 버퍼(314)는 L2 캐시(320)로부터 블록들을 수신하고 블록들을 압축/팩 회로부(326)에 전송하도록 구성된다. 일부 실시예들에서, 버퍼(314)는 한번에 매크로-블록의 하나의 블록을 순서대로 전송한다.
압축/팩 회로부(326)는 압축되지 않은 블록들을 압축하고, 압축 블록들을 패킹하며, 메모리에 대한 결합된 기입을 위해 블록들을 메모리 관리 유닛(340)에 전송할 수 있다. 패킹이 매크로-블록에서 블록들의 결합된 기입을 위해, 압축 블록들의 감소된 사이즈가 주어지면, 압축 이후 그 압축 블록들의 어드레스들을 조정하는 것을 포함할 수 있다는 것을 유의한다. 일부 실시예들에서, 압축 회로부(326) 및 압축기(316)는 상이한 압축 알고리즘들을 구현한다.
완전히 축적되지 않은 블록들의 경우, 매크로-블록 스테이징 버퍼(314)는 메모리 관리 유닛(340)을 통해 메모리에서 더 오래된 기입 데이터를 검사할 수 있다. 압축해제기(330)는 (압축되었다면) 메모리로부터 더 오래된 데이터의 판독들을 압축해제할 수 있고, 매크로-블록 스테이징 버퍼(314)는 메모리로부터의 오래된 기입 데이터를 새로운 블록과 결합하려고 시도할 수 있다. 결합이 완전한 축적을 제공하면, 압축 회로부(326)는 블록을 정상적으로 압축할 수 있다. 결합이 완전한 축적을 제공하지 않으면, 디바이스는 압축 전에 블록의 나머지 부분들을 채울 수 있다. 아래에서 논의되는 도 5는 매크로-블록 스테이징 버퍼(314)에 완전히 축적되지 않은 블록들을 처리하기 위한 상세한 예시적인 기법을 제공한다. 매크로-블록 내의 블록들과 연관된 메타데이터가 또한, 매크로-블록과 함께 L2 캐시(320)로부터 메모리로 저장될 수 있다는 것을 유의한다.
도시된 바와 같이, L2 캐시(320)는 예를 들어, 매크로-블록 압축가능 기입들을 위해 또는 압축되지 않은 기입들을 위해, MUX(328)를 통해 스테이징 버퍼(314) 및 압축/팩 회로부(326)를 우회할 수 있다. 일부 실시예들에서, 디바이스는, 예를 들어, 계산 커널들로부터의 픽셀 기입들이 압축되지 않고 회로부(316, 326)가 디스에이블되도록 하나 이상의 프로세싱 간격들 동안 계산 압축을 턴 오프(turn off)시키도록 구성된다.
도 4는 일부 실시예들에 따른, 프로세싱의 다양한 스테이지들에서의 예시적인 블록들을 예시하는 도면이다. 예시된 실시예에서, 블록들 A 내지 N의 상태는 이들 블록들이 도 3의 PBE 캐시 및 L2 캐시에 각각 있을 때 나타난다.
예시된 예에서, 블록 A는 PBE 캐시에서 완전하다. 따라서, 축출 시에, 압축기(316)는 블록 A가 L2 캐시에 저장되기 전에 블록 A를 압축한다. 예시된 예에서 블록 B는 PBE 캐시에서 불완전하고, 따라서, L2 캐시에 저장할 때 압축되지 않는다. 예시된 예에서, 블록 B는 L2 캐시에서 불완전하게 유지되며, L2 캐시로부터의 축출 시에 도 5(아래에서 논의됨)에 따라 처리될 수 있다. 예시된 예에서, 블록 C는 PBE 캐시에서 불완전하며, 따라서, 압축기(316)에 의해 압축되지 않지만, L2 캐시에 저장될 때 완전하게 된다. 일반적으로 말하면, L2 캐시의 더 큰 크기는 더 작은 PBE 캐시에 완전히 축적되지 않은 블록들의 완전한 축적을 허용할 수 있다. 다양한 실시예들에서, 본 명세서에 개시된 기회주의적 다중-레벨 압축 기법들은 유리하게, 전통적인 압축 기법들에 비해 압축 비율들을 개선시키고, 전력 소비를 감소시키고, 성능을 개선시키는 등을 행할 수 있다.
도 5는 일부 실시예들에 따른, 완전히 축적되지 않은 블록들을 처리하기 위한 예시적인 방법을 예시하는 흐름도이다. 일부 실시예들에서, 도 5의 기법들은 메모리(예를 들어, 도 3의 L2 캐시(320) 및 압축 회로부(326))에서의 저장 전에 이용가능한 압축의 마지막 레벨에 대응하는 캐시 레벨에 대해 관련이 있다.
510에서, 예시된 실시예에서, 매크로-블록 스테이징 버퍼(314)는 L2 캐시(320)부터 축출된 불완전한 블록을 수신한다. 520에서, 디바이스는 불완전한 블록이 이미 메모리에 기입되었는지 여부를 결정한다. 그렇지 않았다면, 흐름은 530으로 진행하며, 디바이스는 (예를 들어, 디폴트 값(들)으로, 블록에 축적된 다른 픽셀들에 기초한 값(들), 예컨대 블록 내의 제1 축적 픽셀로부터의 색상 값들 등으로) 누락 픽셀들을 채운다.
블록이 이전에 메모리에 기입되었다면, 흐름은 540으로 진행하며, 디바이스는 블록이 메모리에서 압축되었는지를 결정한다. 이러한 결정은 블록에 대해 이전에 생성된 메타데이터에 기초할 수 있으며, 그 메타데이터는 메모리에 캐싱 또는 저장되고 블록과 연관될 수 있다. 압축되지 않았다면, 560에서, 디바이스는 블록을 판독하고, 메모리로부터의 데이터를 매크로-블록 스테이징 버퍼(314) 내의 데이터와 결합하고, 임의의 누락 픽셀들을 채우며, 블록을 압축한다. 압축되었다면, 550에서, 디바이스는 블록을 판독하고, 압축해제기(330)를 사용하여 블록을 압축해제하고, 메모리로부터의 데이터를 매크로-블록 스테이징 버퍼(314) 내의 데이터와 결합하고, 임의의 누락 픽셀들을 채우며, 블록을 압축한다.
예시적인 방법
도 6은 일부 실시예들에 따른, 다수의 캐시 레벨들에서의 압축을 위한 예시적인 방법을 예시하는 흐름도이다. 도 6에 도시된 방법은 다른 것들 중에서도, 본 명세서에 개시된 컴퓨터 회로부, 시스템들, 디바이스들, 요소들, 또는 컴포넌트들 중 임의의 것과 함께 사용될 수 있다. 다양한 실시예들에서, 도시된 방법 요소들 중 일부는 동시에, 또는 도시된 바와는 상이한 순서로 수행될 수 있거나, 또는 생략될 수 있다. 부가적인 방법 요소들이 또한 원하는 대로 수행될 수 있다.
610에서, 예시된 실시예에서, 프로그래밍가능 셰이더 회로부는 픽셀 데이터를 기입하는 계산 커널의 프로그램 명령어들을 실행한다.
620에서, 예시된 실시예에서, 제1 캐시 회로부는 컴퓨터 커널로부터의 픽셀 기입 데이터를 저장한다.
630에서, 예시된 실시예에서, 제1 압축 회로부는 제1 캐시 회로부에서의 제1 블록의 전체 축적에 응답하여 픽셀 기입 데이터의 제1 블록을 압축한다. 일부 실시예들에서, 임계 수의 블록들에 대한 완전한 데이터를 포함하는 프로그래밍가능 셰이더 회로부에 의한 기입의 유형(예를 들어, 매크로-블록 압축가능 기입)의 경우, 디바이스는 픽셀 기입 데이터의 다수의 블록들을 제1 캐시 회로부에 저장하지 않으면서 그 블록들을 픽셀 기입 회로부에 전송하도록 구성된다.
640에서, 예시된 실시예에서, 제2 캐시 회로부는 컴퓨터 커널로부터의 픽셀 기입 데이터를 저장하며, 여기서 제2 캐시 회로부는 제1 캐시 회로부보다 저장 계층구조에서 더 높은 레벨에 있다. 일부 실시예들에서, 디바이스는 제1 및 제2 블록들에 대한 메타데이터를 제2 캐시 회로부에 저장하며, 여기서 메타데이터는 제1 및 제2 블록들이 제1 압축 회로부에 의해 압축되었는지 여부를 표시한다.
650에서, 예시된 실시예에서, 제2 압축 회로부는 제2 캐시 회로부에서의 제2 블록의 전체 축적에 응답하여 픽셀 기입 데이터의 제2 블록을 압축한다. 제2 블록은, 예를 들어 제1 캐시 회로부에 완전히 축적되지 않았을 수 있지만, 그의 더 큰 크기로 인해 제2 캐시 회로부에 완전히 축적될 수 있다는 것을 유의한다.
일부 실시예들에서, 디바이스들은 픽셀 기입 데이터의 다수의 블록들의 개개의 축적 상태를 추적하는 추적 회로부(예를 들어, 매크로-블록 스코어보드(312))를 포함한다. 일부 실시예들에서, 완전히 축적되지 않은 픽셀 기입 데이터의 제3 블록의 제2 캐싱 회로부로부터의 축출에 응답하여, 디바이스는, 제3 블록에 대한 대응하는 데이터가 저장 계층구조에서의 더 높은 레벨에 저장되지 않는다고 결정하는 것에 응답하여, 누락 픽셀들에 대한 채우기 데이터를 삽입하고, 채워진 제3 블록을 압축한다. 추가로, 제3 블록에 대한 대응하는 데이터가 저장 계층구조에서의 더 높은 레벨에 저장된다고 결정하는 것에 응답하여, 디바이스는 대응하는 데이터를 판독하고, 판독 데이터를 제3 블록에 대한 픽셀 기입 데이터와 결합하고, 결합된 제3 블록을 압축할 수 있다. 추가로, 판독 데이터가 압축되면, 압축해제기 회로부는 제3 블록에 대한 대응하는 데이터가 저장 계층구조에서의 더 높은 레벨에 압축 포맷으로 저장된다고 결정하는 것에 응답하여 판독 데이터를 압축해제할 수 있다.
660에서, 예시된 실시예에서, 기입 회로부는 픽셀 데이터의 제1 및 제2 압축 블록들을 결합된 기입으로 저장 계층구조에서의 더 높은 레벨에 기입한다. 결합된 기입은 그래픽 프레임의 타일 상에서 동작하는 그래픽 작업그룹에 대한 픽셀 데이터를 저장할 수 있고, 제1 및 제2 블록들은 타일의 상이한 부분들에 대한 픽셀 데이터를 포함할 수 있다.
다양한 실시예들에서, 개시된 기법들은 메모리에 기입하기 전에 데이터를 압축함으로써 메모리 대역폭을 유리하게 감소시킬 수 있고, 또한 메모리 내의 픽셀 데이터의 풋프린트를 감소시킬 수 있다. 이는 전통적인 기법들에 비해 성능을 개선시키거나 전력 소비를 감소시킬 수 있다. 추가로, 개시된 다중-레벨 압축 기법들은 상이한 시간들에 기입된 픽셀들에 대해 적절한 픽셀 데이터를 유지하면서 압축 성능을 개선시키고, 압축 비율들을 개선시키는 등을 행할 수 있다.
예시적인 디바이스
이제, 도 7을 참조하면, 디바이스(700)의 예시적인 실시예를 예시하는 블록도가 도시되어 있다. 일부 실시예들에서, 디바이스(700)의 요소들은 시스템 온 칩 내에 포함될 수 있다. 일부 실시예들에서, 디바이스(700)는 배터리-전력이 공급될 수 있는 모바일 디바이스 내에 포함될 수 있다. 따라서, 디바이스(700)에 의한 전력 소비는 중요한 설계 고려사항일 수 있다. 예시된 실시예에서, 디바이스(700)는 패브릭(710), 계산 복합체(compute complex)(720), 입력/출력(I/O) 브리지(750), 캐시/메모리 제어기(745), 그래픽 유닛(150) 및 디스플레이 유닛(765)을 포함한다. 일부 실시예들에서, 디바이스(700)는 예시된 컴포넌트들, 예컨대 비디오 프로세서 인코더들 및 디코더들, 이미지 프로세싱 또는 인식 요소들, 컴퓨터 비전 요소들 등에 부가하여 그리고/또는 그들 대신에 다른 컴포넌트들(도시되지 않음)을 포함할 수 있다.
패브릭(710)은 다양한 상호연결부들, 버스들, MUX들, 제어기들 등을 포함할 수 있고, 디바이스(700)의 다양한 요소들 사이의 통신을 용이하게 하도록 구성될 수 있다. 일부 실시예들에서, 패브릭(710)의 부분들은 다양한 상이한 통신 프로토콜들을 구현하도록 구성될 수 있다. 다른 실시예들에서, 패브릭(710)은 단일 통신 프로토콜을 구현할 수 있고 패브릭(710)에 커플링된 요소들은 단일 통신 프로토콜로부터 다른 통신 프로토콜들로 내부적으로 변환할 수 있다.
예시된 실시예에서, 계산 복합체(720)는 버스 인터페이스 유닛(BIU)(725), 캐시(730), 및 코어들(735 및 740)을 포함한다. 다양한 실시예들에서, 계산 복합체(720)는 다양한 수들의 프로세서들, 프로세서 코어들 및/또는 캐시들을 포함할 수 있다. 예를 들어, 계산 복합체(720)는 1개, 2개, 또는 4개의 프로세서 코어들, 또는 임의의 다른 적합한 수를 포함할 수 있다. 일 실시예에서, 캐시(730)는 세트 연관 L2 캐시이다. 일부 실시예들에서, 코어(735 및/또는 740)는 내부 명령어 및/또는 데이터 캐시들을 포함할 수 있다. 일부 실시예들에서, 패브릭(710), 캐시(730), 또는 디바이스(700) 내의 다른 곳에서 코히런스 유닛(coherency unit)(도시되지 않음)은 디바이스(700)의 다양한 캐시들 사이의 코히런스를 유지하도록 구성될 수 있다. BIU(725)는 계산 복합체(720)와 디바이스(700)의 다른 요소들 사이의 통신을 관리하도록 구성될 수 있다. 코어들(735 및 740)과 같은 프로세서 코어들은 운영 체제 명령어들 및 사용자 애플리케이션 명령어들을 포함할 수 있는 특정 명령어 세트 아키텍처(ISA)의 명령어들을 실행하도록 구성될 수 있다.
캐시/메모리 제어기(745)는 패브릭(710)과 하나 이상의 캐시들 및/또는 메모리들 사이에서의 데이터의 전달을 관리하도록 구성될 수 있다. 예를 들어, 캐시/메모리 제어기(745)는 L3 캐시에 커플링될 수 있고, 이는 이어서 시스템 메모리에 커플링될 수 있다. 다른 실시예들에서, 캐시/메모리 제어기(745)는 메모리에 직접 커플링될 수 있다. 일부 실시예들에서, 캐시/메모리 제어기(745)는 하나 이상의 내부 캐시들을 포함할 수 있다.
본 명세서에 사용되는 바와 같이, 용어 "에 커플링된"은 요소들 사이의 하나 이상의 연결들을 표시할 수 있고, 커플링은 개재 요소들을 포함할 수 있다. 예를 들어, 도 7에서, 그래픽 유닛(150)은 패브릭(710) 및 캐시/메모리 제어기(745)를 통해 메모리에 "커플링된" 것으로 설명될 수 있다. 대조적으로, 도 7의 예시된 실시예에서, 그래픽 유닛(150)은 개재 요소들이 없기 때문에 패브릭(710)에 "직접 커플링"된다.
그래픽 유닛(150)은 하나 이상의 프로세서들 및/또는 하나 이상의 그래픽 프로세싱 유닛(GPU)들을 포함할 수 있다. 그래픽 유닛(150)은 예를 들어 OPENGL®, Metal, 또는 DIRECT3D® 명령어들과 같은 그래픽-지향 명령어들을 수신할 수 있다. 그래픽 유닛(150)은 특수 GPU 명령어들을 실행하거나, 수신된 그래픽-지향 명령어들에 기초하여 다른 동작들을 수행할 수 있다. 그래픽 유닛(150)은 일반적으로 데이터의 큰 블록들을 병렬로 프로세싱하도록 구성될 수 있고, 디스플레이로의 출력을 위해 프레임 버퍼 내에 이미지들을 구축할 수 있다. 그래픽 유닛(150)은 하나 이상의 그래픽 프로세싱 파이프라인들에서 변환, 조명, 삼각형, 및/또는 렌더링 엔진들을 포함할 수 있다. 그래픽 유닛(150)은 디스플레이 이미지들에 대한 픽셀 정보를 출력할 수 있다. 다양한 실시예들에서, 프로그래밍가능 셰이더(160)는 픽셀 태스크들, 정점 태스크들, 및 계산 태스크들(그래픽-관련일 수 있거나 그렇지 않을 수 있음)을 포함할 수 있는 그래픽 프로그램들을 실행하도록 구성된 고도의 병렬 실행 코어들을 포함할 수 있다.
일부 실시예들에서, 프로그래밍가능 셰이더(160)는 개시된 캐싱 및 압축 회로부를 포함한다.
디스플레이 유닛(765)은 프레임 버퍼로부터 데이터를 판독하고 디스플레이를 위한 픽셀 값들의 스트림을 제공하도록 구성될 수 있다. 일부 실시예들에서, 디스플레이 유닛(765)은 디스플레이 파이프라인으로서 구성될 수 있다. 부가적으로, 디스플레이 유닛(765)은 출력 프레임을 생성하기 위해 다수의 프레임들을 혼합하도록 구성될 수 있다. 추가로, 디스플레이 유닛(765)은 사용자 디스플레이(예를 들어, 터치스크린 또는 외부 디스플레이)에 커플링하기 위한 하나 이상의 인터페이스들(예를 들어, MIPI® 또는 임베디드 디스플레이 포트(eDP))을 포함할 수 있다.
I/O 브리지(750)는, 예를 들어, 범용 직렬 버스(USB) 통신들, 보안, 오디오, 및/또는 저전력 상시-온 기능을 구현하도록 구성된 다양한 요소들을 포함할 수 있다. I/O 브리지(750)는 또한, 예를 들어 펄스폭 변조(PWM), 범용 입력/출력(GPIO), 직렬 주변기기 인터페이스(SPI), 및/또는 인터-집적 회로(I2C)와 같은 인터페이스들을 포함할 수 있다. 다양한 유형들의 주변기기들 및 디바이스들이 I/O 브리지(750)를 통해 디바이스(700)에 커플링될 수 있다.
예시적인 컴퓨터 판독가능 매체
본 개시내용은 위에서 다양한 예시적인 회로들을 상세하게 설명하였다. 본 개시내용은 그러한 회로부를 포함하는 실시예들뿐만 아니라, 그러한 회로부를 특정하는 설계 정보를 포함하는 컴퓨터 판독가능 저장 매체를 포괄하고자 하는 것이다. 따라서, 본 개시내용은 개시된 회로부를 포함하는 장치뿐만 아니라 개시된 회로부를 포함하는 하드웨어(예를 들어, 집적 회로)를 생성하도록 구성된 제조 시스템에 의해 인식되는 포맷으로 회로부를 특정하는 저장 매체를 포괄하는 청구범위를 지원하도록 의도된다. 그러한 저장 매체에 대한 청구범위는, 예를 들어 회로 설계를 생성하지만 그 자체가 설계를 제조하지는 않는 엔티티를 포괄하도록 의도된다.
도 8은 일부 실시예들에 따른, 회로 설계 정보를 저장하는 예시적인 비일시적 컴퓨터 판독가능 저장 매체를 예시하는 블록도이다. 예시된 실시예에서, 반도체 제조 시스템(820)은 비일시적 컴퓨터 판독가능 매체(810) 상에 저장된 설계 정보(815)를 프로세싱하고 설계 정보(815)에 기초하여 집적 회로(830)를 제조하도록 구성된다.
비일시적 컴퓨터 판독가능 저장 매체(810)는 다양한 적절한 유형들의 메모리 디바이스들 또는 저장 디바이스들 중 임의의 것을 포함할 수 있다. 비일시적 컴퓨터 판독가능 저장 매체(810)는, 설치 매체, 예를 들어 CD-ROM, 플로피 디스크들, 또는 테이프 디바이스; DRAM, DDR RAM, SRAM, EDO RAM, 램버스(Rambus) RAM 등과 같은 컴퓨터 시스템 메모리 또는 랜덤 액세스 메모리; 플래시, 자기 매체, 예를 들어, 하드 드라이브, 또는 광학 저장소와 같은 비휘발성 메모리; 레지스터들, 또는 다른 유사한 유형들의 메모리 요소들 등일 수 있다. 비일시적 컴퓨터 판독가능 저장 매체(810)는 또한 다른 유형들의 비일시적 메모리 또는 이들의 조합들을 포함할 수 있다. 비일시적 컴퓨터 판독가능 저장 매체(810)는 상이한 위치들, 예를 들어 네트워크를 통해 연결되는 상이한 컴퓨터 시스템들에 상주할 수 있는 2개 이상의 메모리 매체들을 포함할 수 있다.
설계 정보(815)는, 제한 없이, VHDL, Verilog, SystemC, Syste㎷erilog, RHDL, M, MyHDL 등과 같은 하드웨어 설명 언어들을 포함하는 다양한 적절한 컴퓨터 언어들 중 임의의 것을 사용하여 특정될 수 있다. 설계 정보(815)는 집적 회로(830)의 적어도 일부를 제조하기 위해 반도체 제조 시스템(820)에 의해 사용가능할 수 있다. 설계 정보(815)의 포맷은 적어도 하나의 반도체 제조 시스템(820)에 의해 인식될 수 있다. 일부 실시예들에서, 설계 정보(815)는 또한 집적 회로(830)의 합성 및/또는 레이아웃을 특정하는 하나 이상의 셀 라이브러리들을 포함할 수 있다. 일부 실시예들에서, 설계 정보는 셀 라이브러리 요소들 및 그들의 연결성을 특정하는 넷리스트(netlist)의 형태로 전체적으로 또는 부분적으로 특정된다. 단독으로 취해진 설계 정보(815)는 대응하는 집적 회로의 제조를 위한 충분한 정보를 포함할 수 있거나 포함하지 않을 수 있다. 예를 들어, 설계 정보(815)는 제조될 회로 요소들을 특정할 수 있지만 그들의 물리적 레이아웃이 아닐 수 있다. 이러한 경우, 설계 정보(815)는 특정된 회로부를 실제로 제조하기 위해 레이아웃 정보와 조합될 필요가 있을 수 있다.
다양한 실시예들에서, 집적 회로(830)는 메모리들, 아날로그 또는 혼합 신호 회로들 등과 같은 하나 이상의 맞춤형 매크로셀들을 포함할 수 있다. 그러한 경우들에서, 설계 정보(815)는 포함된 매크로셀들에 관련된 정보를 포함할 수 있다. 그러한 정보는, 제한 없이, 개략적 캡처 데이터베이스, 마스크 설계 데이터, 거동 모델들, 및 디바이스 또는 트랜지스터 레벨 넷리스트들을 포함할 수 있다. 본 명세서에 사용되는 바와 같이, 마스크 설계 데이터는 그래픽 데이터 시스템(GDSII), 또는 임의의 다른 적합한 포맷에 따라 포맷팅될 수 있다.
반도체 제조 시스템(820)은 집적 회로들을 제조하도록 구성된 다양한 적절한 요소들 중 임의의 것을 포함할 수 있다. 이것은, 예를 들어, 반도체 재료들을 (예를 들어, 마스킹을 포함할 수 있는 웨이퍼 상에) 증착하는 것, 재료들을 제거하는 것, 증착된 재료들의 형상을 변경하는 것, 재료들을 (예를 들어, 재료들을 도핑하거나 또는 자외선 프로세싱을 사용하여 유전 상수들을 수정함으로써) 수정하는 것 등을 위한 요소들을 포함할 수 있다. 반도체 제조 시스템(820)은 또한, 정확한 동작을 위해 제조된 회로들의 다양한 테스트를 수행하도록 구성될 수 있다.
다양한 실시예들에서, 집적 회로(830)는 설계 정보(815)에 의해 특정된 회로 설계에 따라 동작하도록 구성되며, 이는 본 명세서에 설명된 기능 중 임의의 것을 수행하는 것을 포함할 수 있다. 예를 들어, 집적 회로(830)는 도 1a 내지 도 3 또는 도 7에 도시된 다양한 요소들 중 임의의 것을 포함할 수 있다. 추가로, 집적 회로(830)는 다른 컴포넌트들과 함께 본 명세서에 설명된 다양한 기능들을 수행하도록 구성될 수 있다. 추가로, 본 명세서에 설명된 기능은 다수의 연결된 집적 회로들에 의해 수행될 수 있다.
본 명세서에 사용되는 바와 같이, "~하도록 구성된 회로의 설계를 특정하는 설계 정보"라는 형태의 문구는 요소가 충족되기 위해 해당 회로가 제조되어야 한다는 것을 의미하지 않는다. 오히려, 이 문구는 설계 정보가, 제조 시에, 표시된 액션들을 수행하도록 구성될 것이거나 특정된 컴포넌트들을 포함할 회로를 설명한다는 것을 표시한다.
***
특정 실시예들이 위에서 설명되었지만, 이들 실시예들은 단일 실시예만이 특정 특징부에 대해 설명된 경우에도 본 개시내용의 범주를 제한하도록 의도되지 않는다. 본 개시내용에 제공된 특징부들의 예들은 달리 언급되지 않는 한 제한적인 것이 아니라 예시적인 것으로 의도된다. 위의 설명은 본 개시내용의 이익을 취하는 당업자에게 자명한 바와 같이 그러한 대안물들, 수정물들, 및 등가물들을 포괄하도록 의도된다.
본 개시내용의 범주는, 본 명세서에 다뤄진 문제점들 중 임의의 것 또는 전부를 완화시키든 아니든, (명시적으로 또는 묵시적으로) 본 명세서에 개시된 임의의 특징부 또는 특징부들의 조합, 또는 그의 임의의 일반화를 포함한다. 따라서, 특징부들의 임의의 그러한 조합에 대해 본 출원(또는 그에 대한 우선권을 주장하는 출원)의 심사 동안에 새로운 청구범위가 작성될 수 있다. 구체적으로, 첨부된 청구범위를 참조하면, 종속항들로부터의 특징부들은 독립항들의 특징부들과 조합될 수 있으며, 개개의 독립항들로부터의 특징부들은 첨부된 청구범위에 열거된 특정 조합들로 조합될 수 있을 뿐 아니라 임의의 적절한 방식으로 조합될 수 있다.

Claims (20)

  1. 장치로서,
    계층구조의 상이한 레벨들에서 제1 캐시 회로부 및 제2 캐시 회로부를 포함하는 저장 계층구조를 가지는 메모리 시스템;
    상기 메모리 시스템에 기입되는 기입 데이터를 생성하도록 구성된 프로세서 회로부;
    상기 제1 캐시 회로부에서의 기입 데이터의 제1 블록의 전체 축적에 응답하여 상기 제1 블록을 압축하도록 구성된 제1 압축 회로부;
    상기 제2 캐시 회로부에서의 기입 데이터의 제2 블록의 전체 축적에 응답하여 상기 제2 블록을 압축하도록 구성된 제2 압축 회로부 - 상기 기입 데이터의 제2 블록 및 상기 기입 데이터의 제1 블록은 압축 이전에 동일한 블록 크기를 가지고, 압축 이전에 상기 기입 데이터의 제2 블록의 일부분들은 상기 제1 캐시 회로부에 저장되지만 상기 기입 데이터의 제2 블록은 상기 제1 캐시 회로부에 완전히 축적되지 않았음 -; 및
    상기 데이터의 제1 및 제2 압축 블록들을 하나의 결합된 기입으로 상기 저장 계층구조에서의 더 높은 레벨에 기입하도록 구성된 기입 회로부를 포함하는, 장치.
  2. 제1항에 있어서,
    상기 프로세서 회로부는 하나 이상의 그래픽 셰이더 프로세서를 포함하고 상기 기입 데이터는 픽셀 기입 데이터인, 장치.
  3. 제2항에 있어서,
    상기 결합된 기입은 그래픽 프레임의 타일 상에서 동작하는 그래픽 작업그룹을 위한 픽셀 데이터를 저장하고 상기 제1 및 제2 블록은 상기 타일의 상이한 부분들에 대응되는 픽셀 데이터를 포함하는, 장치.
  4. 제1항에 있어서,
    임계 수의 블록들에 대해 완전한 데이터를 포함하는 상기 프로세서 회로부에 의한 기입의 유형을 검출하는 것에 응답하여, 상기 제1 캐시 회로부에 기입 데이터의 다수의 블록들을 저장하지 않으면서 상기 다수의 블록들을 상기 제1 압축 회로부에 전송하도록 구성된 우회 회로부를 더 포함하는, 장치.
  5. 제1항에 있어서,
    메타데이터를 상기 제2 캐시 회로부에 저장하도록 구성되는 제어 회로부를 더 포함하고,
    상기 메타데이터는 블록들이 상기 제1 압축 회로부에 의해 압축되었는지 여부를 표시하는, 장치.
  6. 제1항에 있어서,
    기입 데이터의 다수의 블록들의 개개의 축적 상태를 추적하도록 구성된 추적 회로부를 더 포함하며,
    완전히 축적되지 않은 기입 데이터의 제3 블록의 상기 제2 캐시 회로부로부터의 축출에 응답하여, 상기 장치는,
    상기 제3 블록에 대한 대응하는 데이터가 상기 저장 계층구조에서의 더 높은 레벨에 저장되지 않는다고 결정하는 것에 응답하여, 누락 데이터들에 대한 채우기 데이터를 삽입하고, 상기 채워진 제3 블록을 압축하고;
    상기 제3 블록에 대한 대응하는 데이터가 상기 저장 계층구조에서의 다른 레벨에 저장된다고 결정하는 것에 응답하여, 상기 다른 레벨으로부터 상기 대응하는 데이터를 판독하고, 상기 판독 데이터를 상기 제3 블록에 대한 기입 데이터와 결합하고, 상기 결합된 제3 블록을 압축하도록 구성되는, 장치.
  7. 제6항에 있어서,
    상기 제3 블록에 대한 대응하는 데이터가 상기 저장 계층구조에서의 상기 다른 레벨에 압축 포맷으로 저장된다고 결정하는 것에 응답하여 상기 판독 데이터를 압축해제하도록 구성된 압축해제기 회로부를 더 포함하는, 장치.
  8. 제1항에 있어서, 상기 제1 압축 회로부는 상기 제1 블록을 압축하기 위해 상기 제2 압축 회로부가 상기 제2 블록을 압축하기 위해 사용하도록 구성된 것과 상이한 압축 알고리즘을 사용하도록 구성되는, 장치.
  9. 방법으로서,
    프로세서 회로부에 의해, 메모리 시스템에 기입되는 기입 데이터를 생성하는 단계 - 상기 메모리 시스템은 계층구조의 상이한 레벨들에서 제1 캐시 회로부 및 제2 캐시 회로부를 포함하는 저장 계층구조를 구현함 -;
    제1 압축 회로부에 의해, 상기 제1 캐시 회로부 내의 기입 데이터의 제1 블록의 전체 축적에 응답하여 상기 제1 블록을 압축하는 단계;
    제2 압축 회로부에 의해, 상기 제2 캐시 회로부에서의 기입 데이터의 제2 블록의 전체 축적에 응답하여 상기 제2 블록을 압축하는 단계 - 상기 기입 데이터의 제2 블록 및 상기 기입 데이터의 제1 블록은 압축 이전에 동일한 블록 크기를 가지고, 압축 이전에 상기 기입 데이터의 제2 블록의 일부분들은 상기 제1 캐시 회로부에 저장되지만 상기 기입 데이터의 제2 블록은 상기 제1 캐시 회로부에 완전히 축적되지 않았음 -; 및
    기입 회로부에 의해, 상기 데이터의 제1 및 제2 압축 블록들을 하나의 결합된 기입으로 상기 저장 계층구조에서의 더 높은 레벨에 기입하는 단계
    를 포함하는, 방법.
  10. 제9항에 있어서, 상기 기입 데이터는 픽셀 기입 데이터인, 방법.
  11. 제9항에 있어서,
    우회 회로부를 사용하여, 임계 수의 블록들에 대해 완전한 데이터를 포함하는 상기 프로세서 회로부에 의한 기입의 유형을 검출하는 것에 응답하여, 상기 제1 캐시 회로부에 기입 데이터의 다수의 블록들을 저장하지 않으면서 상기 다수의 블록들을 상기 제1 압축 회로부에 전송하는 단계를 더 포함하는, 방법.
  12. 제9항에 있어서,
    제어 회로부에 의해, 메타데이터를 상기 제2 캐시 회로부에 저장하는 단계를 더 포함하고, 상기 메타데이터는 블록들이 상기 제1 압축 회로부에 의해 압축되었는지 여부를 표시하는, 방법.
  13. 제9항에 있어서,
    추적 회로부에 의해, 기입 데이터의 다수의 블록들의 개개의 축적 상태를 추적하는 단계; 및
    완전히 축적되지 않은 기입 데이터의 제3 블록의 상기 제2 캐시 회로부로부터의 축출에 응답하여, 그리고 상기 제3 블록에 대한 대응하는 데이터가 상기 저장 계층구조에서의 다른 레벨에 저장된다고 결정하는 것에 응답하여, 제어 회로부에 의해,
    상기 다른 레벨로부터 상기 대응하는 데이터를 판독하고,
    상기 판독 데이터를 상기 제3 블록에 대한 기입 데이터와 결합하고,
    상기 결합된 제3 블록을 압축하는 단계를 더 포함하는, 방법.
  14. 제9항에 있어서,
    상기 제1 압축 회로부는 상기 제1 블록을 압축하기 위해 상기 제2 압축 회로부가 상기 제2 블록을 압축하기 위해 사용하는 것과 상이한 압축 알고리즘을 사용하는, 방법.
  15. 반도체 제조 시스템에 의해 인식되는 포맷으로 하드웨어 집적 회로의 적어도 일부의 설계를 특정하는 설계 정보가 저장되어 있는 비일시적 컴퓨터 판독가능 저장 매체로서 - 상기 반도체 제조 시스템은 상기 설계에 따라 상기 회로를 생성하기 위해 상기 설계 정보를 사용하도록 구성됨 -, 상기 설계 정보는 상기 회로가:
    계층구조의 상이한 레벨들에서 제1 캐시 회로부 및 제2 캐시 회로부를 포함하는 저장 계층구조를 가지는 메모리 시스템;
    상기 메모리 시스템에 기입되는 기입 데이터를 생성하도록 구성된 프로세서 회로부;
    상기 제1 캐시 회로부에서의 기입 데이터의 제1 블록의 전체 축적에 응답하여 상기 제1 블록을 압축하도록 구성된 제1 압축 회로부;
    상기 제2 캐시 회로부에서의 기입 데이터의 제2 블록의 전체 축적에 응답하여 상기 제2 블록을 압축하도록 구성된 제2 압축 회로부 - 상기 기입 데이터의 제2 블록 및 상기 기입 데이터의 제1 블록은 압축 이전에 동일한 블록 크기를 가지고, 압축 이전에 상기 기입 데이터의 제2 블록의 일부분들은 상기 제1 캐시 회로부에 저장되지만 상기 기입 데이터의 제2 블록은 상기 제1 캐시 회로부에 완전히 축적되지 않았음 -; 및
    상기 데이터의 제1 및 제2 압축 블록들을 하나의 결합된 기입으로 상기 저장 계층구조에서의 더 높은 레벨에 기입하도록 구성된 기입 회로부를 포함하는 것으로 특정하는, 비일시적 컴퓨터 판독가능 저장 매체.
  16. 제15항에 있어서, 상기 프로세서 회로부는 하나 이상의 그래픽 셰이더 프로세서를 포함하고 상기 기입 데이터는 픽셀 기입 데이터인, 비일시적 컴퓨터 판독가능 저장 매체.
  17. 제15항에 있어서,
    상기 회로는:
    임계 수의 블록들에 대해 완전한 데이터를 포함하는 상기 프로세서 회로부에 의한 기입의 유형을 검출하는 것에 응답하여, 상기 제1 캐시 회로부에 기입 데이터의 다수의 블록들을 저장하지 않으면서 상기 다수의 블록들을 상기 제1 압축 회로부에 전송하도록 구성된 우회 회로부를 더 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  18. 제15항에 있어서,
    상기 회로부는:
    메타데이터를 상기 제2 캐시 회로부에 저장하도록 구성되는 제어 회로부를 더 포함하고,
    상기 메타데이터는 블록들이 상기 제1 압축 회로부에 의해 압축되었는지 여부를 표시하는, 비일시적 컴퓨터 판독가능 저장 매체.
  19. 제15항에 있어서,
    상기 회로부는:
    기입 데이터의 다수의 블록들의 개개의 축적 상태를 추적하도록 구성된 추적 회로부를 더 포함하며,
    완전히 축적되지 않은 기입 데이터의 제3 블록의 상기 제2 캐시 회로부로부터의 축출에 응답하여, 상기 회로는,
    상기 제3 블록에 대한 대응하는 데이터가 상기 저장 계층구조에서의 더 높은 레벨에 저장되지 않는다고 결정하는 것에 응답하여, 누락 데이터들에 대한 채우기 데이터를 삽입하고, 상기 채워진 제3 블록을 압축하고;
    상기 제3 블록에 대한 대응하는 데이터가 상기 저장 계층구조에서의 다른 레벨에 저장된다고 결정하는 것에 응답하여, 상기 다른 레벨으로부터 상기 대응하는 데이터를 판독하고, 상기 판독 데이터를 상기 제3 블록에 대한 기입 데이터와 결합하고, 상기 결합된 제3 블록을 압축하도록 구성되는, 비일시적 컴퓨터 판독가능 저장 매체.
  20. 제15항에 있어서,
    상기 제1 압축 회로부는 상기 제1 블록을 압축하기 위해 상기 제2 압축 회로부가 상기 제2 블록을 압축하기 위해 사용하도록 구성된 것과 상이한 압축 알고리즘을 사용하도록 구성되는, 비일시적 컴퓨터 판독가능 저장 매체.
KR1020227017233A 2019-11-04 2020-10-01 픽셀 기입 데이터를 위한 압축 기법들 KR102606747B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/673,883 2019-11-04
US16/673,883 US11062507B2 (en) 2019-11-04 2019-11-04 Compression techniques for pixel write data
PCT/US2020/053679 WO2021091640A1 (en) 2019-11-04 2020-10-01 Compression techniques for pixel write data

Publications (2)

Publication Number Publication Date
KR20220090548A KR20220090548A (ko) 2022-06-29
KR102606747B1 true KR102606747B1 (ko) 2023-11-27

Family

ID=73040228

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227017233A KR102606747B1 (ko) 2019-11-04 2020-10-01 픽셀 기입 데이터를 위한 압축 기법들

Country Status (6)

Country Link
US (2) US11062507B2 (ko)
KR (1) KR102606747B1 (ko)
CN (1) CN114616554B (ko)
DE (1) DE112020005482T5 (ko)
GB (1) GB2604266B (ko)
WO (1) WO2021091640A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11544196B2 (en) * 2019-12-23 2023-01-03 Advanced Micro Devices, Inc. Resource-aware compression
US11853568B2 (en) * 2020-10-21 2023-12-26 EMC IP Holding Company LLC Front-end offload of storage system hash and compression processing

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140118379A1 (en) * 2012-10-26 2014-05-01 Nvidia Corporation Caching of adaptively sized cache tiles in a unified l2 cache with surface compression
WO2018057109A1 (en) * 2016-09-26 2018-03-29 Intel Corporation Cache and compression interoperability in a graphics processor pipeline

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6919904B1 (en) 2000-12-07 2005-07-19 Nvidia Corporation Overbright evaluator system and method
GB0319697D0 (en) * 2003-08-21 2003-09-24 Falanx Microsystems As Method of and apparatus for differential encoding and decoding
US7188227B2 (en) * 2003-09-30 2007-03-06 International Business Machines Corporation Adaptive memory compression
US9058792B1 (en) * 2006-11-01 2015-06-16 Nvidia Corporation Coalescing to avoid read-modify-write during compressed data operations
JP5032911B2 (ja) * 2007-07-31 2012-09-26 キヤノン株式会社 画像処理装置及び画像処理方法
CN103870492B (zh) * 2012-12-14 2017-08-04 腾讯科技(深圳)有限公司 一种基于键排序的数据存储方法和装置
US10453169B2 (en) 2016-03-28 2019-10-22 Intel Corporation Method and apparatus for multi format lossless compression
US10062143B2 (en) 2016-09-12 2018-08-28 Advanced Micro Devices, Inc. Method and apparatus for compressing randomly accessed data
US10026153B2 (en) * 2016-09-15 2018-07-17 Intel Corporation Varying image quality rendering in a sort middle architecture
US10445261B2 (en) * 2016-12-30 2019-10-15 Intel Corporation System memory having point-to-point link that transports compressed traffic
US10546393B2 (en) * 2017-12-30 2020-01-28 Intel Corporation Compression in machine learning and deep learning processing
US20190354482A1 (en) * 2018-05-21 2019-11-21 Microsoft Technology Licensing, Llc Time-based mechanism supporting flush operation
US10795825B2 (en) * 2018-12-26 2020-10-06 Advanced Micro Devices, Inc. Compressing data for storage in cache memories in a hierarchy of cache memories
US11069023B2 (en) * 2019-05-24 2021-07-20 Nvidia Corporation Techniques for efficiently accessing memory and avoiding unnecessary computations

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140118379A1 (en) * 2012-10-26 2014-05-01 Nvidia Corporation Caching of adaptively sized cache tiles in a unified l2 cache with surface compression
WO2018057109A1 (en) * 2016-09-26 2018-03-29 Intel Corporation Cache and compression interoperability in a graphics processor pipeline

Also Published As

Publication number Publication date
KR20220090548A (ko) 2022-06-29
GB202205746D0 (en) 2022-06-01
US11062507B2 (en) 2021-07-13
US20210295593A1 (en) 2021-09-23
GB2604266B (en) 2023-09-20
DE112020005482T5 (de) 2022-09-08
GB2604266A (en) 2022-08-31
US11488350B2 (en) 2022-11-01
CN114616554B (zh) 2023-05-23
CN114616554A (zh) 2022-06-10
WO2021091640A1 (en) 2021-05-14
US20210134052A1 (en) 2021-05-06

Similar Documents

Publication Publication Date Title
US10324726B1 (en) Providing instruction characteristics to graphics scheduling circuitry based on decoded instructions
US11430174B2 (en) Memory consistency in memory hierarchy with relaxed ordering
US10223822B2 (en) Mid-render compute for graphics processing
US11373360B2 (en) Grouping techniques for ray intersection traversal
US11829298B2 (en) On-demand memory allocation
EP3945499A1 (en) Ray intersect circuitry with parallel ray testing
KR102606747B1 (ko) 픽셀 기입 데이터를 위한 압축 기법들
US10445852B2 (en) Local image blocks for graphics processing
KR20210029683A (ko) 그래픽 표면 어드레싱
US10901777B1 (en) Techniques for context switching using distributed compute workload parsers
US10475152B1 (en) Dependency handling for set-aside of compute control stream commands
US10846131B1 (en) Distributing compute work using distributed parser circuitry
US10324844B2 (en) Memory consistency in graphics memory hierarchy with relaxed ordering
US10699368B1 (en) Memory allocation techniques for graphics shader
US10452401B2 (en) Hints for shared store pipeline and multi-rate targets
US9600909B2 (en) Processed texel cache
US10269091B1 (en) Re-using graphics vertex identifiers for primitive blocks across states

Legal Events

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