KR20170103649A - 버퍼를 이용하여 텍스처 데이터에 액세스하는 방법 및 장치 - Google Patents

버퍼를 이용하여 텍스처 데이터에 액세스하는 방법 및 장치 Download PDF

Info

Publication number
KR20170103649A
KR20170103649A KR1020170023192A KR20170023192A KR20170103649A KR 20170103649 A KR20170103649 A KR 20170103649A KR 1020170023192 A KR1020170023192 A KR 1020170023192A KR 20170023192 A KR20170023192 A KR 20170023192A KR 20170103649 A KR20170103649 A KR 20170103649A
Authority
KR
South Korea
Prior art keywords
buffer
cache
texel
data
texture
Prior art date
Application number
KR1020170023192A
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 삼성전자주식회사
Priority to CN201710128572.1A priority Critical patent/CN107153617B/zh
Publication of KR20170103649A publication Critical patent/KR20170103649A/ko

Links

Images

Classifications

    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • 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
    • 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
    • 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • H04N19/426Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements using memory downsizing methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • 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

Landscapes

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

Abstract

그래픽 프로세싱 장치에서 버퍼를 이용하여 텍스처 데이터에 액세스하는 방법으로서, 제 1 픽셀 그룹의 텍셀 데이터에 대한 제 1 요청을 수신하고, 제 1 텍스처 캐시로부터 제 1 요청에 대응되는 압축된 텍셀 데이터를 인출하고, 인출된 텍셀 데이터를 제 1 버퍼에 저장(buffering)하고, 제 1 버퍼의 출력을 텍스처 디컴프레서에 제공하고, 압축된 텍셀 데이터에 대한 하나 이상의 블록을 압축해제하고, 압축해제된 텍셀 데이터를 제 2 버퍼에 저장(buffering)하고, 제 2 버퍼의 출력을 제 2 텍스처 캐시에 제공하는 방법이 개시된다.

Description

버퍼를 이용하여 텍스처 데이터에 액세스하는 방법 및 장치 {METHOD AND APPARATUS FOR ACCESSING TEXTURE DATA USING BUFFERS}
본 개시는 버퍼를 이용하여 텍스처 데이터에 액세스하는 방법 및 장치를 제공한다.
그래픽 시스템에서 텍스처는 일반적으로 압축된 형식으로 텍스처 캐시에 저장됩니다. 예를 들어, 블록 압축 형식은 픽셀의 4x4 블록에 대한 색상 및 알파(alpha)를 64 비트 (64b; 8bytes(8B))로 압축할 수 있다. 압축해제 후, 컴포넌트 당 5, 6, 5비트의 빨강, 초록, 파랑(RGB) 컴포넌트가 각각 2B로 존재할 수 있다. 따라서, 이 압축 포맷은 4의 압축 인자 (compression factor) (예를 들어, 4x4 픽셀 블록의 경우, (2B/픽셀 * 16픽셀) / 8B = 4)를 이룬다.
압축된 형식은 메모리 요구사항뿐만 아니라 메모리 계층 구조의 여러 레벨 간에 텍스처를 이동하는데 필요한 대역폭을 절약한다. 그러나, 종래의 텍스처 캐싱 접근법과 관련된 많은 결점과 한계가 있다.
버퍼를 이용하여 텍스처 데이터에 액세스하는 방법 및 장치를 제공하는데 있다. 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 개시의 제1 측면은, 버퍼를 이용하여 텍스처 데이터에 액세스하는 그래픽스 프로세싱 장치에 있어서, 제 1 픽셀 그룹의 텍셀(texel) 데이터에 대한 제 1 요청을 수신하도록 구성된 컨트롤러; 압축된 텍셀 데이터에 대한 하나 이상의 블록은 적어도 하나의 상기 제 1 요청에 대응되는 텍셀 데이터를 포함하고, 상기 제 1 요청에 응답하여, 제 1 텍스처 캐시로부터 인출된(fetched) 압축된 텍셀 데이터에 대한 상기 하나 이상의 블록을 저장하는 제 1 버퍼; 상기 제 1 버퍼에 저장된 상기 압축된 텍셀 데이터에 대한 하나 이상의 블록을 압축해제(decompress)하는 디컴프레서(decompressor); 및 압축해제된 상기 압축된 텍셀 데이터에 대한 하나 이상의 블록을 저장하고, 상기 압축해제된 요청된 텍셀 데이터를 제 2 텍스처 캐시에 출력으로서 제공하는 제 2 버퍼; 포함하는, 그래픽스 프로세싱 장치를 제공할 수 있다.
또한, 본 개시의 제 2 측면은, 그래픽 프로세싱 장치에서 버퍼를 이용하여 텍스처 데이터에 액세스하는 방법으로서, 제 1 픽셀 그룹의 텍셀 데이터에 대한 제 1 요청을 수신하는 단계; 제 1 텍스처 캐시로부터 상기 요청된, 압축된 텍셀 데이터를 인출하는 단계; 상기 인출된 텍셀 데이터를 제 1 버퍼에 저장(buffering)하는 단계; 상기 제 1 버퍼의 출력을 텍스처 디컴프레서에 제공하고, 상기 압축된 텍셀 데이터에 대한 하나 이상의 블록을 압축해제하는 단계; 상기 압축해제된 텍셀 데이터를 제 2 버퍼에 저장(buffering)하는 단계; 및 상기 제 2 버퍼의 출력을 제 2 텍스처 캐시에 제공하는 단계;를 포함하는, 방법을 제공할 수 있다.
또한, 본 개시의 제 3 측면은, 제 2 측면의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공할 수 있다.
도 1a는 일 실시예에 따른 그래픽스 시스템의 블록도이다.
도 1b는 일 실시예에 따른 텍스처 캐시 아키텍처의 예시를 나타내는 도면이다.
도 1c는 일 실시예에 따른 ASTC 코덱을 지원하는 도 1의 텍스처 캐시 아키텍쳐의 예시를 나타내는 도면이다.
도 2는 일 실시예에 따른 그래픽스 프로세싱 장치가 동작하는 방법의 흐름도이다.
도 3은 일 실시예에 따른 그래픽스 프로세싱 장치가 텍스처 데이터를 버퍼에 저장(buffering)하는 방법의 흐름도이다.
도 4는 일 실시예에 따른 캐시 데이터 및 태그 매핑의 예시를 나타내는 도면이다.
도 5는 일 실시예에 따른 16 개의 텍셀에 대한 충돌 없는(conflict-free) 액세스의 예시를 나타내는 도면이다.
도 6은 일 실시예에 따른 쿼드의 3x3 풋 프린트에 대한 캐시 액세스의 예시를 나타내는 도면이다.
도 7은 일 실시예에 따른 쿼드의 2x2 풋 프린트에 대한 캐시 액세스의 예시를 나타내는 도면이다.
도 8은 일 실시예에 따른 텍스처 캐시 아키텍처의 일부의 서브-블록(sub-blocks)의 예시를 나타내는 도면이다.
도 9는 일 실시예에 따른 ASTC 텍셀 풋 프린트 패턴의 예시를 나타내는 도면이다.
도 10은 일 실시예에 따른 AGC 프로세스를 설명하는 흐름도이다
도 11은 일 실시예에 따른 ASTC 블록 사이즈 및 텍스처 캐시 라인 경계의 예시를 나타내는 도면이다.
도 12는 일 실시예에 따른 일련의 액세스에 걸친 ASTC 블록 사이즈 및 텍스처 캐시 라인 경계의 예시를 나타내는 도면이다.
이하 첨부된 도면을 참고하여 본 개시를 상세히 설명하기로 한다.
도 1a는 일 실시예에 따른 그래픽스 시스템(100)의 블록도이다.
일 실시예에서, 텍스처 캐시 유닛(110)은 그래픽 처리 유닛(GPU) (106)의 일부일 수 있다. 일 실시예에서, 텍스처 캐시 유닛(110)은 텍스처 캐시 아키텍처를 포함하며, 이와 관련된 내용은 도 1b에서 보다 상세히 후술된다.
일 실시예에서, GPU(106)는 그래픽스 하드웨어를 포함할 수 있고, 예를 들어 하나 이상의 셰이더 코어를 포함하는 그래픽스 파이프 라인을 구현할 수 있다. 또한, 추가적인 텍스처 데이터를 저장하기 위해 외부 그래픽스 메모리(112)가 제공될 수 있다. 일 실시예에서, 중앙 처리 장치 (central processing unit, 이하 CPU) (101) 및 연관된 시스템 메모리(102)는 드라이버(104)에 대한 컴퓨터 프로그램 명령을 포함할 수 있다. 한편, CPU(101)를 GPU(106)에 통신적으로(communicatively) 연결(couple)하고, 시스템 메모리(102)를 CPU(101)에 통신적으로 연결하고, GPU(106)를 외부 그래픽스 메모리(112)에 통신적으로 연결하는데 버스들(buses)이 이용될 수 있다.
도 1b는 일 실시예에 따른 텍스처 캐시 아키텍처의 예시를 나타내는 도면이다.
압축해제된 텍스처 데이터(예를 들어, 텍셀 데이터)에 대해 '레벨 0 텍스처 캐시'(TC0)가 제공될 수 있다. 일 실시예에서, TC0 캐시는 64B 캐시-라인(cache lines)으로 편성된(organized) 압축해제된 텍셀을 보유(hold)할 수 있고, 전체 캐시-라인은 16개의 데이터 뱅크에 걸쳐 저장되며 각각의 4B 세그먼트는 16개의 데이터 뱅크에 구분되어 저장될 수 있다. 그러나, 다른 크기의 캐시-라인 및 다른 크기의 세그먼트가 사용될 수 있다. 한편, 압축된 텍스처 데이터(예를 들어, 텍셀 데이터)에 대해 '레벨 l 텍스처 캐시'(L1C)가 제공될 수 있다.
텍스처 디컴프레서(texture decompressor, TD)는 TCO와 L1C 사이에 배치될 수 있다. 데이터를 저장(buffer)하기 위해 제 1 버퍼 및 제 2 버퍼가 제공될 수 있다. 버퍼들은 상이한 방식으로 구현될 수 있지만, 일 실시예에서 이들 버퍼는 선입선출(First-in First-out, 이하 FIFO) 스트리밍으로 구현될 수 있으며, 예를 들어 제 1 버퍼가 첫 번째 FIFO (스트리밍 FIFO 1)이고 제 2 버퍼가 두 번째 FIFO (스트리밍 FIFO 2)인 구현을 포함할 수 있다. 스트리밍 FIFO 1은 L1C에서 TD로 압축 된 데이터를 저장(buffer)할 수 있다. 스트리밍 FIFO 2는 압축해제된 데이터를 TD에서 TC0으로 제공할 수 있다.
일 실시예에서, 스트리밍 FIFO들은 항상 가장 오래된 엔트리를 새로운 입력 엔트리로 대체하는 FIFO 대체 방식을 사용하지만, 스트리밍 FIFO는 일반 FIFO에서와 같이 가장 오래된 엔트리뿐만 아니라 모든 엔트리에 대한 판독 액세스 (read access)를 허용할 수 있다.
일 실시예에서, 텍스처 어드레스 유닛(Texture Address Unit) (도 1b에서 점선으로 도시됨) 은 쿼드(quad, 4개의 픽셀로 구성된 그룹)에 대한 액세스들의 집합(set)을 생성하고, 어드레스 생성 컨트롤러(Address Generation Controller, 이하 AGC)로 시작하는 텍스처 캐시 아키텍처(108)의 프론트 엔드(front end) (180) 로 생성된 집합을 전달할 수 있다.
일 실시예에서, AGC는 액세스들을 가장 작은 수의 비-충돌(non conflicting) 태그 액세스들 및 데이터 뱅크 액세스들로 합칠(coalesce) 수 있다. 일 실시예에서, AGC는 TAGS 유닛 내의 태그들을 검색하는데, TAGS 유닛은 어드레스 계산 유닛 (Address Compute Unit) 으로 미스(miss)를 전달할 수 있다. 어드레스 계산 유닛은 L1C 캐시 내 압축된 텍스처 데이터에 액세스하기 위한 어드레스들을 생성할 수 있다.
일 실시예에서, TC0 캐시에서의 캐시 미스(cache miss)가 발생한 경우, AGC는 어드레스 계산 블록을 이용하여 L1C 캐시 내 압축된 텍스처 데이터에 액세스하기 위한 어드레스의 생성 및 TAGS 유닛으로부터의 태그들의 사용을 지원할 수 있다. 압축된 텍스처 데이터는 스트리밍 FIFO 1에 저장(buffer)되고, TD에서 압축해제되고, 스트리밍 FIFO 2에 저장(buffer)된 후 TC0 캐시에 제공될 수 있다.
일 실시예에서, TC0 캐시는 압축해제된 텍스처 데이터의 재사용을 대비할 수 있다. 캐시 히트(cache hit)에 응답하여, TC0 캐시의 출력은, 예를 들어, 픽셀에 대한 텍스처를 계산하기 위해 텍스처 필터 유닛(Texture Filter Unit) (도 1b에서 점선으로 도시됨)에 의해 사용될 수 있다. 또한, 이하에서 보다 상세하게 설명되는 바와 같이, 일 실시예에서 FIFO 1 및 FIFO 2에 대한 판독 포인터들(read pointers)은 텍셀 데이터의 재사용을 개선하도록 제어될 수 있다. 일 실시예에서, 컨트롤 블록(192) 또는 다른 제어 특징들은, 예를 들어, 제 1 버퍼(예를 들어, FIFO 1) 및/또는 제 2 버퍼(예를 들어, FIFO 2)의 TD 및 판독 포인터의 동작을 조정하기 위해 제공될 수 있다.
일 실시예에서, 텍스처 캐시 유닛(110)은 쿼드(2x2 픽셀 세트)에 대한 텍셀 데이터에 대한 요청을 받아들이고, 쿼드 내의 각 활성(active) 픽셀에 대한 필터링된 텍셀을 생성할 수 있다. 각 픽셀에 대한 4개의 텍셀에 액세스하여 사이클 당 총 16개의 텍셀에 액세스하는 것을 포함할 수 있다.
일 실시예에서, 그래픽스 시스템(100)은 텍스처 내의 데이터를 재구성할 수 있는 융통성(flexibility)을 가질 수 있다. 일 실시예에서, 드라이버(104)는 예상되는 요청 패턴에 가장 잘 맞도록 텍스처 데이터를 재구성할 수 있다. 셰이더 코어는 그래픽스 어플리케이션에 존재하는 기본적인(natural) 병행성(parallelism)을 활용할 수 있도록 고도로 멀티-스레드(multi-thread)될 수 있으므로 지연을 허용할 수 있다 (latency tolerant). 또한, 각 사이클에 텍스처 캐시로 수신되는 다수의 요청은, 단일 쿼드를 대신하여 만들어진 텍셀 요청에 대응하므로 상호 연관될 수 있다.
일 실시 예에서, TC0 캐시에서의 데이터 구성은, 최소 개수의 데이터 뱅크 및 태그 룩업(tag lookup)을 갖는 텍셀 액세스 집합의 결과 처리를 허용하기 위한 공통 데이터 액세스 패턴에 기초할 수 있다. 일 실시예에서, TCO 캐시의 캐시 성능을 향상시키기 위해, 데이터는 액세스 집합에 존재하는 구역성(locality) 패턴에 기초하여 TCO 캐시로 편성될 수 있다. 예를 들어, 데이터는 TCO 텍스처 캐시의 데이터 저장소를 구성하는 데이터 뱅크에 걸쳐 스위즐(swizzle) 패턴으로 저장될 수 있다. 또한, 함께 액세스 될 가능성이 있는 데이터는, 서로 다른 캐시-라인의 수를 감소시키기 위해 캐시-라인으로 함께 그룹화될 수 있으며, 따라서 필요한 개별 태그 룩업의 수를 줄일 수 있다.
본 명세서에 개시된 예시적인 캐시 아키텍처는 사이클 당 최대 4 개의 태그-룩업(tag-lookup) 및 16 개의 데이터 뱅크만을 이용하는 동작을 지원할 수 있다. 그러나, 대안적인 실시예들에서 다른 수의 태그 룩업 및 데이터 뱅크가 이용될 수 있다.
도 1c는 일 실시예에 따른 ASTC 코덱을 지원하는 도 1의 텍스처 캐시 아키텍쳐의 예시를 나타내는 도면이다.
도 1c를 참조하면, 일 실시예에서 추가적으로 또는 대안적으로, ASTC(Adaptive Scalable Texture Compression) 코덱과 같은 가변 크기 블록을 이용하는 텍스처 압축 방식을 용이하게 할 수 있다. 일 실시예에서, 아래에서 보다 상세히 후술되는 바와 같이, 텍스처 압축 방식은, 상이한 크기의 블록들로부터 압축해제된 데이터를 합치는 CLS(coalescer) 모듈, 및 CLS, 디컴프레서 및 판독 포인터를 제어하고 가변 크기의 블록 (ASTC의 가변 크기의 블록과 유사한) 의 사용을 지원하기 위한 특징을 갖는 컨트롤 블록(192)을 포함할 수 있다.
구형 텍스처 압축 방식에서, 각각의 압축된 블록은 고정된 2의 거듭제곱 수의 텍셀들을 포함할 수 있고, 고정 블록 크기로 저장될 수 있다. 예를 들어, 앞서 설명한 텍스처 압축 기법은 4x4 블록의 2B 텍셀을 8B로 압축하여, 일정한 4의 압축 인자를 산출할 수 있다. 각 차원에서 텍셀들 내 2의 거듭제곱의 압축된 크기 및 2의 거듭제곱의 블록 크기를 사용하면, 2D 텍스처에서 텍셀(u, v)을 포함하는 압축된 블록의 시작 어드레스의 계산은, u, v에 대한 특정 시프트 연산(shift operations)과 텍스처의 기본 어드레스만을 포함할 수 있다. 또한, 일 실시예에서, 압축해제된 TCO 내의 캐시-라인은 2의 거듭제곱의 압축된 단일 또는 작은 블록 전체를 포함할 수 있다. 일 실시예에서, 압축된 블록은 압축해제된 캐시 내 다수의 캐시-라인에 걸쳐 분할되지 않을 수 있다.
필요한 품질에 따라 다양한 압축 인자를 지원하는 이점을 제공하도록, ASTC 텍스트 압축 방식은 4x4에서 12x12 크기의 텍셀의 가변 크기 블록을 16B로 압축할 수 있다. 이러한 가변 크기 블록을 사용하면, 어드레스 계산이 더욱 복잡해질 수 있다. 예를 들어, 7x5 블록은 7로 분할됨으로써, 원하는 텍셀을 포함하는 압축된 블록의 메모리 어드레스가 계산될 수 있다. 이러한 분할은 상당한 크기의 영역과 전력을 소모할 수 있다.
일 실시예에서, TCO 캐시는 비압축된(uncompressed) 영역(domain)에서 동작할 수 있는데, 비압축된 영역에서는 텍셀 어드레스가 텍셀의 비압축된 (u, v) 좌표를 이용하여 식별될 수 있다. TCO 캐시에서의 미스대한 응답으로, 미스된 비압축된 캐시-라인의 압축된 블록 어드레스는 어드레스 계산 유닛에서 계산될 수 있다.
일 실시예에서, FIFO 1은 성능을 향상시키기 위한 크기일 수 있다. L1C로부터 ASTC 또는 다른 압축된 블록이 요청되면, L1C는 2개 이상의 압축된 블록들(예를 들어, 다수의 블록들)의 집합을 포함하는 캐시-라인을 리턴(return)할 수 있다. 예를 들어 ASTC 압축된 블록이 16B이고 캐시-라인이 64B인 경우, L1C는 4개의 압축된 블록을 리턴할 수 있다. 이들 블록 중 하나 이상은 FIFO 1에 보유(retain)될 수 있다. 텍스처 요청 내 액세스의 구역성를 고려할 때, TD는 FIFO 1에 머무르면서 작은 템포럴 윈도우(temporal window) 내 이러한 블록들 중 일부를 필요로 할 수 있다. 이러한 경우, TD는 L1C에 대한 다른 요청을 하지 않고 FIFO 1에서 직접 검색할 수 있고, 그럼으로써 L1C에 액세스하는데 필요한 전력을 절약하고 잠재적으로 성능을 향상시킬 수 있다.
일 실시예에서, FIFO 2는 성능을 향상시키기 위한 크기일 수 있다. 블록이 TD에 의해 압축해제되면, 압축해제된 텍셀을 생성할 수 있다. 그러나 블록 내의 많은 텍셀들은 현재 캐시-라인 내 텍셀을 채우는데 즉각적으로 필요하지 않을 수 있다. 그러나 이러한 텍셀이 필요한 다른 캐시-라인 미스 요청이 TC0로부터 있을 수 있다. 일 실시예에서, 압축해제된 텍셀들은 스트리밍 FIFO 2에 배치될 수 있다. 후속 TC0 캐시-라인의 채움(fill)을 만족시키기 위해 일부 텍셀이 필요하다면, 필요한 텍셀은 스트리밍 FIFO 2에서 검색될 수 있고, 이로써 TD에 의한 압축 블록 전부가 다시 압축해제되는 것을 피할 수 있다.
일 실시예에서, FIFO 1 및 FIFO 2의 스트리밍 FIFO는 선입선출 교체 방식을 사용하여 추가적인 교체 방식 관리 상태에 대한 필요를 제거할 수 있다. 또한, 일 실시예에서, 스트리밍 FIFO는 이전의 모든 참조가 처리된 후에 FIFO의 장래 상태를 나타내는 태그를 가질 수 있다. 일 실시예에서, 스트리밍 FIFO의 일 측면은, 텍스쳐 어드레스 스트림에서 단기(short-term) 공간 구역성(spatial locality)을 포착한다는 것이다.
일 실시예에서, 컨트롤 하드웨어는 FIFO 1 내 필요한 압축된 블록 또는 FIFO 2 내 텍셀 그룹이 존재하는지를 검출하고, FIFO 1 또는 FIFO 2 각각으로부터 이들에 액세스하기 위한 판독 포인터를 계산할 수 있다. 판독 포인터는 제 1 판독 포인터를 사용하여 제 1 버퍼를 갖는 개별 엔트리를 선택하고, 제 2 판독 포인터를 사용하여 제 2 버퍼 내의 개별 엔트리를 선택하도록 제어될 수 있다. 판독 포인터를 제어하는 능력은 L1C에 대한 액세스 또는 TD 내의 블록의 압축해제에 대한 잠재적인 비용을 절약할 수 있다.
도 2는 일 실시예에 따른 그래픽스 프로세싱 장치가 동작하는 방법의 흐름도이다.
도 2를 참조하면, 단계 205에서 압축된 텍셀 데이터는 제 1 텍스처 캐시 (예를 들어, L1C 캐시)에 저장될 수 있다.
단계 210에서 압축해제된 텍셀 데이터는 제 2 텍스처 캐시 (예를 들어, TC0 캐시)에 저장될 수 있다.
단계 215에서 픽셀 그룹의 텍셀 데이터에 대한 요청이 수신될 수 있다.
단계 220에서 요청된 텍셀 데이터에 대해, 액세스들은 제 1 또는 제 2 텍스처 캐시로의 스케줄링될 수 있다.
도 3은 일 실시예에 따른, 그래픽스 프로세싱 장치가 텍스처 데이터를 버퍼에 저장(buffering)하는 방법의 흐름도이다.
도 3을 참조하면, 단계 305에서 제 1 픽셀 그룹의 텍셀 데이터에 대한 제 1 요청이 수신될 수 있다.
단계 310에서 요청된 압축된 텍셀 데이터는 제 1 텍스처 캐시 (예컨대, L1C 캐시) 로부터 인출(fetch)될 수 있다.
단계 315에서 인출된 압축된 텍셀 데이터는 제 1 버퍼에 저장(buffer)될 수 있다. 예를 들어, 제 1 버퍼는 FIFO 1을 포함할 수 있다.
단계 320에서 제 1 버퍼의 출력은 압축된 텍셀 데이터에 대한 하나 이상의 블록을 압축해제하기 위해 텍스처 디컴프레서에 제공될 수 있다.
단계 325에서 압축해제된 텍셀 데이터는 제 2 버퍼에 저장(buffer)될 수 있다. 예를 들어, 제 2 버퍼는 FIFO 2를 포함할 수 있다.
단계 330에서 제 2 버퍼의 출력은 제 2 텍스처 캐시 (예를 들어, TCO) 에 제공될 수 있다. 일 실시예에서, 제 1 버퍼에 의해 저장된 압축된 텍셀 데이터에 대한 하나 이상의 블록은, 요청된 텍셀 데이터와 제 2 텍셀 데이터를 포함할 수 있다. 일 실시예에서, 제 2 버퍼에 저장된 하나 이상의 비압축된 텍셀 그룹은, 요청된 텍셀 데이터 이외에 제 3 비압축된(uncompressed) 텍셀 데이터를 포함할 수 있다. 이 세 번째 텍셀 데이터는, 이후의 트랜잭션(transaction)에서 TC0 캐시에 의해 요청된 텍셀 데이터의 비압축된 캐시-라인의 일부를 구성하는데 이용될 수 있다.
도 4는 일 실시예에 따른 캐시 데이터 및 태그 매핑의 예시를 나타내는 도면이다.
도 4를 참조하면, TC0 캐시에서의 캐시 데이터 및 태그 매핑이 도시된다. 일 실시예에서, 쿼드에 속하는 텍셀 공간에 매핑되는 4개의 픽셀(P0, P1, P2, P3)을 대신하여, 매 사이클마다 2D 텍스처에 대한 16개의 요청에 대응하는 16개의 요청이 처리될 수 있다. 각 픽셀은 텍셀 공간 내 단위 사각형(unit square)의 모서리들에 대응하는 4개의 요청과 연관되어 있으며, 좌표는 (u, v), (u+1, v), (u, v+1) 및 (u+1, v+1)일 수 있다. 텍스처 공간에서 정사각형(또는 정사각형에 가까운) 영역을 포함하도록 TC0 레벨에서 캐시-라인 내에 데이터를 배열함으로써, 특정 픽셀에 대한 이들 4개의 요청은 대부분 캐시-라인 내에 위치할 수 있으며, 많은 경우에 다수의 1B/2B 요청은 4B 더블워드(dword) 내에 함께 위치할 수 있다.
도 4를 참조하면, 텍셀 데이터가 0-9, A-F의 16 진수로 번호가 매겨진 16개의 뱅크에 걸쳐 어떻게 배치되는지 도시된다. 16개의 텍셀 (0-9, A-F) 그룹은, 태그 저장소 내 단일 태그와 함께 캐시-라인에 포함될 수 있다. 4×4 정사각형 집합의 텍셀 (0-9, A-F의 16 진수 번호로 된 정사각형으로 도시 됨)은 CL0 내지 CL15로 번호 매겨진 각 캐시-라인에 매핑될 수 있다.
한편, 텍셀 내의 숫자는 데이터를 보유하는 뱅크를 나타낼 수 있다. 일 실시예에서, 캐시-라인에 대한 태그는 TB<num>으로 표시되는 태그 뱅크에 포함될 수 있다. 예를 들어, 볼드체 윤곽선으로 표시된 텍셀 정사각형들은 픽셀의 필터링된 텍스처 값을 계산하는데 이용되는 텍셀들을 나타낼 수 있다 (예를 들어, CL0 TB0 내 텍셀 0, 1, 2 및 3은 픽셀 P0; CL4 TB0 내 텍셀 A 및 B와 CL5 TB1 내 텍셀 0 및 1은 픽셀 P1; CL2 TB2 내 텍섹 6, 7, C 및 D는 P2; CL3 TB3 내 텍셀 C, D, E 및 F는 픽셀 P3).
도 4를 참조하면, 텍셀 데이터 크기가 4B일 때, 캐시-라인이 4개의 태그 뱅크 (TB0, TB1, TB2 및 TB3)에 매핑되는지에 대한 예시를 도시한다. 이 경우 텍스처는 크기가 각각 4B인 텍셀의 2차원(2D) 배열일 수 있다. 일 실시예에서, 드라이버 및 텍스처 디컴프레서는 도시된 바와 같이 데이터를 배치(layout)하도록 조정될 수 있다. 각 캐시-라인에 대한 16개의 정사각형 각각은 텍셀을 나타내며, 텍셀 내의 숫자는 데이터를 보유(hold)하는 뱅크를 나타낼 수 있다. 1차원 또는 다른 차원에서의 구역성을 이용하는 배치와는 달리, 일 실시예에서, 데이터는 2차원들에서의 구역성을 이용하는 Z-오더(Z-order) 또는 모턴-오더(Morton-order)로 배치될 수 있다. Z-오더(또는 모턴-오더라고도 함)는 데이터 포인트들의 구역성을 보존하면서 다차원 데이터를 매핑하는 함수일 수 있다.
일 실시예에서, 사각형 (P0, P1, P2, P3)은 텍스처 요청으로부터의 쿼드의 네 픽셀이 텍셀 공간으로 매핑되는 곳을 나타낼 수 있다. 쿼드 내 픽셀은 텍셀 공간의 사각형에 매핑될 수 있고, 또한 텍셀 공간의 임의의 영역에도 매핑될 수 있다. 각 픽셀에 인접한 점선으로 표시된 박스 내 텍셀 사각형은, 필터링된 텍스처 값을 계산하기 위해 이중선형 필터링(bilinear filtering) 또는 가중 평균(weighted average)를 수행하는데 이용되는 텍셀을 나타낼 수 있다.
일 실시예에서, 각 픽셀은 서로 겹치지 않는 4개의 텍셀을 사용하므로 총 16 개의 텍셀이 캐시로부터 인출될 필요가 있다. 이러한 경우는 드물고 극단적이지만, 일반적인 TCO 캐시의 동작을 설명하기 위해 선택될 수 있다.
일 실시예에서, 캐시 구현에 따라, TCO 캐시의 동작은 텍셀 액세스에 대한 하나 이상의 제약을 고려할 수 있다. 일 실시예에서, TCO 캐시는 데이터 액세스 동안 각각의 뱅크로부터 1개의 고유한 텍셀에 액세스하도록 구성될 수 있다. 그러나, 도 4에서는, 각각의 픽셀은 특정 뱅크로부터의 텍셀 데이터에 대한 액세스를 요구할 수 있다. 예를 들어, 픽셀 P2 및 P3은 뱅크 C 및 D에 매핑된 텍셀에 액세스할 수 있는데, 데이터 액세스 동안 각 뱅크로부터 기껏해야(at most) 1개의 고유한 텍셀에 액세스할 수 있는 제약에 의해, 픽셀 P2 및 P3에 대한 액세스는 적어도 두 사이클 동안 발생할 수 있다. 가능한 제약의 또 다른 예는, 태그 뱅크에 대한 하나 이상의 태그 액세스가 발생할 수 없다는 TC0 캐시에 대한 제약일 수 있다.
일 실시예에서, AGC가 텍셀 액세스 시퀀스를 구성하는 것에, 텍셀 액세스에 대한 제약을 고려할 수 있다. 일 실시예에서, 도 1b에 도시된 AGC는, 쿼드의 액세스를 다수의 집합으로 분할함으로써, 각 세트가 데이터 뱅크 충돌 또는 태그 뱅크 충돌 없이 수행될 수 있도록 할 수 있다 (상기 제약이 적용되는 경우). 예를 들어, 도 4를 참조하면, PO 및 P2에 대한 액세스에 캐시-라인 CL0 및 CL2에 대한 비-충돌 태그 뱅크로서 TB0 및 TB2와, 비-충돌 데이터 뱅크로서 PO의 데이터 뱅크 (0, 1, 2, 3) 및 P2의 데이터 뱅크 (6, 7, C, D)가 포함됨으로써, AGC는 PO 및 P2에 대한 액세스를 한 사이클로 스케줄링할 수 있다. 유사하게, P1 및 P3에 대한 액세스는 비-충돌 태그 뱅크로서 P1의 TB0 및 TB1, P3의 TB3와, 비-충돌 데이터 뱅크로서 P1의 데이터 뱅크 (A, B, 0, 1) 및 P3의 데이터 뱅크 (C, D, E, F)를 포함할 수 있다.
쿼드의 네 픽셀은 텍스처 공간의 임의의 위치에 매핑될 수 있지만 텍스처 공간 내에서 가깝게 위치할 수 있다. 특히, 적절하게 밉-매핑된(mip-mapped) 표면의 경우, 텍스쳐 공간에서 쿼드의 픽셀 사이의 거리는 이중선형 샘플링(bilinear sampling)의 경우 1.5보다 작고, 삼선형 샘플링(trilinear sampling)의 높은/낮은 밉-레벨의 경우 1.0/2.0보다 작을 수 있다.
도 5는 일 실시예에 따른 16 개의 텍셀에 대한 충돌 없는(conflict-free) 액세스의 예시를 나타내는 도면이다.
도 5를 참조하면, 단일 쿼드 대신에 16개의 모든 텍셀이 단일 사이클에서 액세스될 수 있는, 16개의 텍셀을 액세스하는 시나리오가 도시된다. 텍셀 공간으로 매핑되는 쿼드의 픽셀들 위치 사이에 텍셀 공간의 수평 및 수직적 구분이 존재할 때, 풋 프린트(foot print)(또는 배치)는 볼드체 윤곽선으로 표시된 4x4 집합의 텍셀일 수 있다. 정사각형 P0, P1, P2 및 P3은 텍셀 공간에서 픽셀의 위치를 나타내며, 4개의 픽셀 모두에 대한 4개의 이웃하는 텍셀의 집합이 4x4 집합의 텍셀 (볼드체 윤곽선이 있는)일 수 있으며, 이하에서 이를 텍셀 풋 프린트라고 명칭하기로 한다.
도 5를 참조하면, 텍셀 풋 프린트 내의 텍셀은 4개의 캐시-라인 상에 분포될 수 있고, 이들 캐시-라인은 4개의 별개의 태그 뱅크에 맵핑될 수 있다. 따라서, 태그들은 뱅크 충돌 없이 병렬적으로 액세스될 수 있다. 특히, 굵게 표시된 텍셀 정사각형의 번호는 모두 구별되며, 어떠한 임의의 2개의 볼드체 정사각형도 동일한 데이터 뱅크에 매핑 된다는 것을 나타내는 동일한 번호를 갖지 않을 수 있다. 그러므로 16개의 모든 텍셀은 충돌 없는 방식으로 액세스될 수 있다. 일반적으로 4x4 텍셀 풋 프린트의 위치에 관계없이, 16개의 텍셀 모두가 별개의 뱅크에 맵핑되며, 이 텍셀들은 별개의 태그 뱅크에 매핑되는 캐시-라인에 최대 4개까지 맵핑될 수 있다. 따라서 4x4 텍셀 풋 프린트와 관계 없이도, 충돌 없는 액세스가 가능할 수 있다. 이 경우, AGC는 텍셀 풋 프린트를 고려하여, 모든 태그 액세스와 데이터 뱅크 액세스를 단일 주기로 스케줄링할 수 있다.
도 6은 일 실시예에 따른 쿼드의 3x3 풋 프린트에 대한 캐시 액세스의 예시를 나타내는 도면이다.
도 6을 참조하면, 이중선형 필터링을 수행할 때 적절하게 밉맵된 텍스처에 대한 텍셀 풋 프린트가 도시된다. 일 실시예에서, 텍셀 공간의 간격이 대략 1.5 텍셀인 경우, 픽셀은 동일한 텍셀을 공유할 수 있으므로 도 6에 도시된 바와 같이 텍셀 풋 프린트는 종종 3x3 크기일 수 있다. 이 경우 볼드체 윤곽선 내 9개의 텍셀은 서로 다른 숫자를 가지므로, 풋 프린트 맵 내의 어떠한 2개의 텍셀도 동일한 뱅크에 매핑되지 않을 수 있다. 또한, 9개의 모든 텍셀은 구별되는 태그 뱅크에 매핑되는 2개의 캐시-라인 중 하나에 속할 수 있다. 한편, 3x3 풋 프린트의 위치에 관계없이 상술한 내용이 적용될 수 있다.
일 실시예에서, 픽셀이 텍셀 공간에서 왜곡될 수 있다. 예를 들어, 텍셀 풋 프린트는 대각선이거나 또는 수평/수직으로 정렬되지 않을 수 있다. 그러한 경우에도, 픽셀 간 간격이 1.5 텍셀보다 작으면 충돌 없이 모든 텍셀이 액세스될 수 있다.
도 7은 일 실시예에 따른 쿼드의 2x2 사이즈의 최소 풋 프린트 예시를 나타내는 도면이다.
도 7을 참조하면, 픽셀이 텍셀 공간 내 작은 영역에 맵핑될 때의 텍셀 풋 프린트가 도시된다. 일 실시예에서, 텍셀 풋 프린트는 2x2 사이즈로 줄어들 수 있다 (예를 들어, 도 7에 볼드체 윤곽선으로 표시된 4개의 텍셀). 예를 들어, 삼선형 필터링을 수행할 때, 상위(덜 상세한) 밉 레벨에서 발생할 수 있다. 이러한 풋 프린트는 서로 다른 뱅크에 매핑된 4개의 텍셀이 충돌 없는 방식으로 처리될 수 있으며, 4개의 모든 텍셀은 단일 캐시-라인에 속할 수 있다.
일 실시예에서, TC0 캐시는 사이클 당 4개의 태그-룩업을 지원할 수 있다. 64B의 각 TC0 캐시-라인은 32B 폭의 16개 뱅크에 매핑될 수 있다. 각 뱅크는 단일 판독-포트(read-port)를 포함할 수 있다. 쿼드의 요청이 각 뱅크에 대한 액세스가 하나 이상의 액세스와 4개 이상의 태그-룩업을 요구하는 경우, 이러한 요청은 여러 사이클로 분할됨으로써 각 사이클에서 이러한 제약 조건이 충족될 수 있다.
또한, 많은 경우에서 좋은 성능을 제공하기 위해, 일 실시예에서 드라이버는 텍스처 데이터를 메모리에 구조화하고, 하드웨어 디컴프레서는 TC0 캐시-라인에 데이터를 더 배열하여 데이터 뱅크 충돌 및 태그-룩업을 최소화할 수 있다. 일 실시예에서, 텍스처 데이터는, 드라이버에 의해 모튼-오더(또는 Z-오더)로 구조화된 캐시-라인을 포함하는 엠타일(mtiles)로 구조화될 수 있고, 그리하여 텍셀의 인접한 정사각형 블록은 최소 수(즉, 소정 수보다 작음)의 구별되는 캐시-라인 및 태그-룩업을 요구할 수 있다. 따라서, 일 실시예에서, 쿼드 맵의 4개의 픽셀을 대신하여, 텍스처가 엠타일 내 캐시-라인의 2x2 블록에 요청하는 한, 4개 이상의 태그-룩업이 요구되지 않을 수 있다.
일 실시예에서, 64B 크기의 TC0 캐시-라인으로서, 공통 2B/텍셀 텍스처 내의 캐시-라인 각각은 8×4 블록의 텍셀을 보유할 수 있다. 따라서, 2x2 블록의 캐시-라인은 16x8 블록의 텍셀을 보유할 수 있다. 쿼드의 텍셀 풋 프린트는 3x3 텍셀 블록일 수 있다. 적절한 밉-매핑을 사용하면, 예상되는 가장 큰 텍셀 풋 프린트는 텍셀 공간에서 텍셀 2개의 픽셀 간 거리를 갖는 45도 방향의 쿼드일 수 있다. 이러한 텍셀 풋 프린트는 (2√2+1=)3.8x3.8 블록일 수 있으며, 2x2 블록의 캐시-라인에 포함된 16x8 텍셀에 포함될 수 있다. 따라서 많은 경우에 뱅크 충돌이 발생하지 않을 수 있다.
일 실시예에서, 요청들이 적절히 밉-맵되지 않은 경우, 기존의 텍스처 요청들은 다수의 요청으로 분할될 수 있다. 일반적으로, 높은-대역폭 및 높은 전력-효율성을 제공하기 위해, 텍스처 캐시는 이러한 요청의 예상되는 특성을 활용하여(leverage) 16개의 요청을 매우 효율적인 방식으로 처리할 수 있다.
도 8은 일 실시예에 따른 텍스처 캐시 아키텍처의 일부의 서브-블록(sub-blocks)의 예시를 나타내는 도면이다.
도 8을 참조하면, L1C 캐시는 도 8에서 생략되어있다. 일 실시예에서, L0 데이터 저장소가 TC0 캐시에 제공될 수 있다. 일 실시예에서, L0 데이터 저장소는 뱅크 당 32개의 워드(words), 및 워드 당 32b를 갖는 16개의 뱅크에 대응할 수 있다. L0 데이터 판독 컨트롤 블록 및 L0 데이터 기록(write) 컨트롤 블록은, L0 데이터 저장소로부터의 데이터를 판독 및 기록하는 것을 제어할 수 있다. 일 실시예에서, L0 크로스바(crossbar)는 텍셀 데이터를 출력하는데 사용될 수 있다. L0 읽기 지연(latency) FIFO는 AGC로부터 뱅크 어드레스를 수신할 수 있다. L0 행 및 기록 제어 지연 FIFO는 L0 태그 저장소로부터 행 어드레스를 수신할 수 있다.
일 실시예에서, 텍스처 어드레스(TA) 서브 유닛(도 8에 미도시)으로부터의 제 1 입력(801)은 16개의 어드레스까지에 대응될 수 있다. 각각의 요청은, 텍스처 기반 어드레스 및 2D 텍스처 내 16개의 (u, v) 좌표에 대응하는 텍셀을 16개까지 포함할 수 있다. 각 요청에 대한 텍스쳐 기반 어드레스는 16개의 모든 텍셀에 걸쳐 공유될 수 있다. 각 쿼드는 4개의 픽셀로 구성되며, 각 픽셀은 좌표쌍 (coord_u, coord_v) 으로 표시되는 사각형 단위로 배열된 4개의 텍셀에 액세스할 수 있다. 겹쳐지는 경우를 제외하고는, 각각의 좌표쌍에서 coord_u[i][1]은 coord_u [i]+1이 될 수 있다. 3D 텍스처의 경우, 각 픽셀은 추가적인 차원을 나타내는 또 다른 좌표(coord_w)를 요구하는 단위 정육면체에 배열되는 8개의 텍셀에 액세스할 수 있다.
일 실시예에서, TA 유닛으로부터의 제 1 입력 패킷상의 나머지 필드는 입력뿐만 아니라 상태로부터 도출될 수 있다. 밉맵된 너비, 높이 및 깊이는 이 요청에 대한 밉-레벨에서의 텍스처 이미지의 차원들이며, 제공된 기본 어드레스에서 오프셋(offsets)을 계산하는데 필요할 수 있다. 일 실시예에서, 텍스처 포맷은 특정 텍셀 크기의 텍스처 이미지의 포맷을 의미할 수 있다. 일 실시예에서, 포맷은 다운스트림(downstream) TD 서브-유닛에 의해 이용될 수 있다. 일 실시예에서, 2 개의 필드, nr_samples 및 sample_idx는 멀티-샘플링된 텍스처 액세스에 사용될 수 있다.
일 실시예에서, 텍셀 데이터 출력(802)은 각각 32b 너비의 16개 텍셀의 집합 2개로 구성될 수 있다. 32b보다 큰 텍셀 크기의 경우, 2의 거듭제곱 수의 출력의 집합은 함께 결합되어 단일 텍셀을 전송하고, 16 개 텍셀의 집합은 여러 사이클에 걸쳐 전달될 수 있다.
화살표(803 및 804)는 L1C 캐시와의 상호 작용을 나타낸다. TC0 캐시 미스가 발생한 경우, 캐시-라인의 가상 어드레스를 제공하는 L1C 캐시에 요청이 수신될 수 있다. 가상 어드레스가 48b이고 캐시-라인 크기의 log2가 6b이므로, 이 어드레스는 42b일 수 있다. 이에 따라 L1C는 64B 데이터를 전달할 수 있다.
일 실시예에서, AGC는 총 16 개의 좌표에 대해 쿼드의 4개의 픽셀에 대한 u, v, w 차원의 2개의 좌표 위치를 수신하여 16개의 텍셀을 지정할 수 있다. AGC 출력은, 데이터 배열에서 텍셀에 액세스하는데 필요한, 최대 4개의 태그 요청 및 데이터 뱅크와, 크로스바 제어 비트로 구성될 수 있다.
일 실시예에서, AGC는 텍스처 어드레스 유닛으로부터 16개의 요청을 받아들이고, TCO TAG 저장소에 태그 룩업을 생성할 수 있다. 또한, AGC는 16개의 뱅크 각각에 대해 4개의 라인 어드레스들 중 하나를 선택하는데 사용되고, 각 데이터 뱅크에서 32b의 데이터를 출력 포트로 라우팅하는데 사용되는 제어 비트를 생성할 수 있다. 미스의 경우에 태그는 즉시 업데이트되고, 미스는 L1C 캐시로 전송될 수 있다. 데이터 액세스는 L1C로부터 데이터가 수신될 때까지 지연될 수 있다. 지연된 액세스 요청은 지연 FIFO에 보유되고, 순서대로 처리될 수 있다. 16개의 텍셀 대신, 16개의 뱅크가 동시에 판독될 수 있다. 데이터는 출력 크로스바에서 올바른 텍셀 출력으로 라우팅될 수 있다.
일 실시예에서, AGC는 이들 16개의 요청을 최소 수의 집합 (예를 들어, 1개의 집합) 으로 구성함으로써, 집합 내 텍셀 요청이 4개 이상의 캐시-라인에 액세스하지 않고, 16개의 데이터 뱅크 각각으로부터 하나 이상의 4B 페치(fetch)를 액세스하지 않도록 할 수 있다. 일 실시예에서, AGC는 각 사이클에서 4개의 태그를 L0 TAG 저장소에 제공할 수 있다. L0 TAG 저장소는 LO 행 및 쓰기 제어 지연 FIFO에 기록할 수 있다. 일 실시예에서, 합쳐진(coalescing) 압축해제된 블록들을 표준 폼(form) 크기로 지원하기 위해 CLS(Coalescer) 및 CLS 컨트롤러가 제공될 수 있다.
일 실시예에서, 데이터 기록 컨트롤 블록은 CLS로부터 들어오는 데이터를 받아들이고, TCO 데이터 배열을 채울 수 있다. LO 데이터 판독 컨트롤 블록은 AGC에 의해 기록된 RD L0 FIFO를 팝(pop)하고, 최대 4개의 캐시-라인을 판독하고 이들 4개의 캐시-라인에서 최대 16개의 텍셀 데이터를 선택하는 것을 조정할 수 있다. TCO는 최대 16개의 텍셀을 텍스처 필터에 전달할 수 있다.
일 실시예에서, TCO 캐시 파라미터는 2KB 크기, 64B 라인 크기, 32개의 라인, 4개의 집합, 8 방향 세트-어소시에이티브(set-associative)일 수 있다. 일 실시예에서, TC0 캐시의 어드레스는, 40b 기본 어드레스 및 2D 텍스처에서 각각 14b인 u, v 좌표를 접합함으로써 총 40+28=68b로 결정될 수 있다. 한편, 3D 텍스처는 각각 11b인 세 개의 좌표를 가지며, 따라서 텍셀 공간에서 40+33=73B의 어드레스의 너비를 지원하는 것이 요구될 수 있다. 그러나 씨타일(ctile)의 최소 텍셀 블록이 2x2xl이고 각 축의 씨타일에있는 텍셀 수는 2의 거듭제곱이므로, u, v 좌표는 항상 짝수일 수 있다. u, v 좌표의 LSB 1 비트를 태그로 저장할 필요는 없으며, 이는 71b의 태그 비트를 남겨 둔다. 매 사이클마다 입력되는 태그가 총 4개 있으며, 모두 특정 태그 뱅크로 향할 수 있다. 각 태그 뱅크는 최대 4개의 입력 태그에서 태그 매칭을 지원하기 위한 충분한 비교기(comparator) 및 기타 리소스를 포함할 수 있다. 입력되는 각 71b 태그 주소는, 모든 8개의 71b 태그와 병렬로 비교될 수 있다. 일치하는 경우, 5b 라인 어드레스가 판독 태그 지연 FIFO로 전송될 수 있다.
미스인 경우, 미스된 어드레스는 L1C 캐시로 전송될 수 있다. 일 실시예에서, 4개의 캐시-라인 요청 각각은 캐시를 미스할 수 있으며, 이는 사이클에서 생성되는 최대 4회의 미스로 이어질 수 있다. 미스인 경우, 뱅크에 해당하는 data_ram_line_miss 비트가 설정될 수 있다. 집합 내 8개 라인 중 하나가 교체용으로 선택되고, 해당 태그는 새로운 태그로 덮어 쓰여질 수 있다.
어떤 상황에서는, 대체된 태그에 대한 보류중인 요청이 있을 수 있지만, 이러한 요청에 대한 라인 어드레스에 대한 룩업이 이미 수행되었으므로, 첫 번째 사용 직전에 캐시-라인에 덮어 쓰는 것만이 가능하므로 보류중인 요청 이후에 캐시-라인에 덮어쓸 수 있다. 스트리밍 캐시 구성을 사용하면, 데이터 RAM에서 해당 데이터가 읽히기 전에 태그를 덮어 쓸 수 있다.
일 실시예에서, 구역성-기반 대체 방식 (locality-based replacement policy) 은 텍스처 액세스에서 공간적 구역성을 최대로 이용하기 위해 적용될 수 있다. 입력(71b) 태그가 캐시 집합 내 태그와 비교될 때, 양 태그 간의 차이가 좌표 성분의 하위 비트에만 있는지 또한 결정될 수 있다. 대체될 태그는 상위 오더 미스 태그 (high order miss tag)에서 먼저 선택될 수 있다. 상위 오더 미스 태그가 없는 경우, 하위 미스 태그 중에서 대체될 태그가 선택될 수 있다. 일 실시예에서, 우선순위가 동일한 그룹 내에서는 랜덤 선택이 이용될 수 있다.
하위 오더 미스 (low order miss) 는 다음 기준에 의해 검출될 수 있다. 기본 어드레스에 차이가 있는 경우는 상위 오더 미스일 수 있다. 그렇지 않은 경우, 슬라이스 구성의 2D 텍스처 및 3D 텍스처에서, 차이가 각 u, v 좌표 요소의 LSB 6 비트에만 있는 경우 하위 오더 미스일 수 있다. 3D 블록 구성의 3D 텍스처에서는, 차이가 각 u, v, w 좌표 요소의 LSB 4 비트에만 있는 경우 하위 오더 미스일 수 있다. 그렇지 않으면 상위 오더 미스일 수 있다.
도 8에 도시된 바와 같이, 일 실시예에서, 스트리밍 FIFO 1 (스트리밍 FIFO 1이 L1 캐시로부터 데이터를 수신하고 있음을 나타내는 LSF)는 L1C로부터 전달된 잠재적으로 압축 된 캐시-라인을 보유할 수 있다. TD는 압축된 텍셀 블록을 압축해제된 캐시-라인으로 압축해제할 수 있다. 스트리밍 FIFO 2 (스트리밍 FIFO 2가 디컴프레서로부터 데이터를 수신 중임을 나타내는 DSF)는 압축해제된 캐시-라인을 보유할 수 있다. TC0는 64B 캐시-라인으로 편성된 압축해제된 텍셀을 보유할 수 있고, 각 4B 세그먼트는 16개의 데이터 뱅크에 저장된 전체 캐시-라인과 별도의 데이터 뱅크에 저장됩니다.
TCO는 64B 캐시-라인으로 편성된 압축해제된 텍셀을 보유하고 있으며, 16개의 데이터 뱅크에 걸쳐 저장된 캐시-라인 전부와 함께 각 4B 세그먼트는 별도의 데이터 뱅크에 저장될 수 있다.
일 실시예에서, 각각의 디코딩된 RGBA ASTC 텍셀은 8 바이트의 공간 (각 컴포넌트에 대해 부동 소수점(floating point) 16자리) 을 점유함으로써, TC0 캐시-라인 (64B; 4열 2행을 갖는 4x2 블록으로 구성된 굵게 표시된 8개의 비압축된 텍셀) 을 허용할 수 있다. 각각의 압축된 8B ASTC 블록은 5x5 압축된 텍셀을 포함할 수 있다. 미스가 발생한 경우, TC는 4Cx2R 비압축된 텍셀 (4열x2행) 그리드(grid)를 요청할 수 있다. 비압축된 그리드가 압축된 ASTC 그리드 상에 어떻게 매핑되는지에 따라, 4Cx2R 그리드는 다수(1-4)의 압축된 ASTC 블록에 매핑될 수 있다.
일 실시예에서, CLS 및 연관된 컨트롤 특성은 L0 데이터 저장소에 로딩될 수 있는 비압축된 텍셀 데이터의 정렬된(aligned) 블록을 생성하는데 사용될 수 있다. 이는 ASTC에 존재하는 2의 거듭제곱이 아닌 (non-power-of-two) 블록 사이즈 차원에 유용할 수 있다.
다른 압축 방식의 경우, 압축해제 인자는 작은 2의 거듭제곱이고 (small power-of-two), 각각의 압축된 블록은 64B 캐시-라인으로 쉽게 확장될 수 있다. 즉, 작은 2의 거듭제곱의 압축된 블록의 집합을 압축해제함으로써, L0 데이터 저장소에 직접 로딩될 수 있는 비압축된 텍셀 데이터의 정렬된 64B를 생성할 수 있다. 일 실시예에서, 디컴프레서 & LSF 컨트롤러 (DLC) 컨트롤러는 다중 (가변 크기) ASTC 블록을 압축해제하여 64B 라인에서 압축해제된 4x4 텍셀 블록을 생성할 수 있다. 추가 조정은 FIFO 1 및 FIFO 2 내 판독 포인터를 제어함으로써 제공될 수 있다.
예를 들어, ASTC 블록이 적절한 조정 및 재사용 없이 압축해제되고 활용되는 경우, 전력 및 대역폭이 낭비될 수 있다. 4B 크기의 텍셀은 L0 데이터 저장소 내 64B 라인에 대한 4x4 블록을 나타낼 수 있다. ASTC 2의 거듭제곱이 아닌 (non-power-of-two) 블록은 L0 데이터 저장소 캐시-라인의 4x4 비압축된 블록에 정렬되지 않으므로, 이러한 각 블록은 최대 4개의 블록 (6x6이라면) 의 압축해제를 요구할 수 있으며 이는 총 6*6*4=144개의 텍셀을 의미할 수 있다. 이러한 텍셀 중 16개만이 4x4 블록에 필요할 수 있다. 그러므로, 144-16=128개의 텍셀이 디컴프레서의 전력과 대역폭을 낭비할 수 있다. 또한, 4개의 개별 64B 라인에 이러한 4개의 블록이 존재함으로써, L1C 액세스 전력과 대역폭을 낭비할 수 있다.
그러나, 텍스쳐 액세스 패턴에 상당한 공간적 구역성이 있는 경우, L0 데이터 저장소 내 하나의 4x4 블록을 채우는데 사용되지 않는 압축해제된 텍셀은 곧, 요청된 다른 근처 4x4 블록을 채우는데 사용될 수 있다. 유사하게, L1 캐시-라인을 포함하는 4개의 ASTC 블록은 인접한 4x4 블록에 대해 재사용될 수 있다. 따라서, 압축된 L1 캐시-라인 및 압축해제된 ASTC 블록을 캐시하는 2개의 작은 버퍼(FIFO 1 및 FIFO 2)는, L1C로부터 인출된 캐시-라인 블록의 수와 사용되지 않은 압축해제된 텍셀의 수를 줄이는데 효과적일 수 있다.
일 실시예에서, 스트리밍 FIFO에서 가장 오래된 기록된 라인이 교체를 위해 선택될 수 있다. 따라서, 기록시에 기록 포인터는 랩 어라운드 (wrap-around) 방식으로 증가할 수 있다. 그러나, 판독은 기록 창 내의 모든 행에서 발생할 수 있다. 라인은 여러 번 읽힘으로써 재사용이 가능할 수 있다.
리턴된 L1C 캐시-라인은 스트리밍 FIFO 1에 저장될 수 있다. 디컴프레서는 스트리밍 FIFO 1에서 16B 블록(비-ASTC(non-ASTC)의 경우 더 큰 것일 수 있음)를 판독하고 압축해제하여 CLS로 전송할 수 있다. CLS는 TD 출력 데이터를 수집하여 64B 캐시-라인을 구성하고, 이를 L0 데이터 저장소에 기록할 수 있다. 스트리밍 FIFO는 L1C에 대한 초과 요청 트래픽을 제거하기 위한 간단한 캐싱 구조일 수 있다.
짧은 시간동안 다수의 압축해제된 64B 블록을 생성하기 위해 동일한 압축 블록이 필요할 수 있기 때문에, TC는 디컴프레서의 입력에 작은 버퍼를 사용할 수 있다.
일 실시예에서, 태그 미스에 대한 태그들을 수신하는 태그 미스 FIFO 가 포함될 수 있다 (태그 미스 직렬변환기(serializer)에 의해 직렬화 됨). SMQR(Select Missing Quad Request) 블록은, 미스된 요청 중 하나를 선택하고, 기본 어드래스 및 텍스처 이미지 디스크립터의 관련 정보와 쌍을 이루며, 전체 패킷을 압축된 블록 어드레스 생성 유닛(compressed block address generaion unit, 이하 CBAG)으로 전달할 수 있다. 특히, 각 차원에서, CBAG는 텍셀 차원의 최소 및 최대를 계산할 수 있다. 2D 텍스처의 경우, 출력은 기본 어드레스, (u min, u max) 및 (v min, v max)일 수 있다. 일 실시예에서, CBAG는 압축된 (메모리) 어드레스 공간에서 최대 4 개의 ASTC 블록 어드레스를 계산할 수 있다.
일반적으로, 이 어드레스 계산에는 각 차원 범위를 해당 차원의 ASTC 블록 크기로 나누는 작업이 포함될 수 있다. 예를 들어, 5x6 블록의 경우, (u min, u max)를 5로 나누고, (v min, v max)을 6으로 나누면 필요한 ASTC 블록을 획득할 수 있다. 다음으로, 이들 블록 각각의 어드레스가 계산될 수 있다. ASTC 블록 크기가 24=16B이므로, 출력은 하위 오더 4b가 0인 최대 4개의 ASTC 블록 주소 집합일 수 있다.
일 실시예에서, 텍스처 디컴프레서(DC)는 사이클 당 소정의 편성들 중 하나에 배치되는, 최대 4개까지의 출력 텍셀을 처리할 수 있다. 일 실시예에서, DSF 태그 룩업 및 LSF 태그 룩업은, 미리 정의된 다수의 텍셀 풋 프린트 패턴으로 메모리 액세스 트래픽을 분할하고 하나씩 전송할 수 있다.
도 9는 일 실시예에 따른 DC에 의해 처리될 수 있는 ASTC 텍셀 풋 프린트 패턴의 예시를 나타내는 도면이다.
도 9을 참조하면, 하나 또는 두 개의 사이클에서 1, 2, 3 또는 4 개의 텍셀을 처리 할 수 있는 다양한 옵션이 설명된 6가지 다른 사례가 도시된다.
일 실시예에서, CLS는 DSF 엔트리 신호에 의해 제어되고, DSF 엔트리 신호는 DSF 태그 룩업을 통해 제어 비트를 수신할 수 있다. 이 제어 비트는 9개의 뱅크에서 최대 9개의 텍셀 쿼드의 집합 (4B 텍셀 크기의 경우) 을 지정하지만, 4x4 크기의 블록은 4 텍셀 쿼드로부터 생성될 수 있다. 추가 제어 비트는 L0 데이터 저장소에서 상기 쿼드의 어느 부분이 64B 캐시-라인의 어느 부분으로 라우팅되는지 지정할 수 있다. CLS는 소정의 쿼드들을 판독하고, 준비 신호(예를 들어, CC로부터의 신호)를 수신할 때 데이터를 라우팅하고 64B 캐시-라인을 L0 데이터 스토어에 기록할 수 있다.
일 실시예에서, DSF 태그 룩업으로부터의 입력 어드레스는 풀리-어소시에이티브(fully-associative) LSF 태그 룩업에서 히트-테스트 (hit-tested)된다. 미스는 어드밴스드(advanced) 판독-포인터에서의 엔트리 내에서 할당될 수 있다. 미스는 L1C로 전송될 수 있다. 일 실시예에서, LSF 컨트롤 FIFO는 스트리밍 FIFO, 및 L1C와 디컴프레서 컨트롤 (DLC) 사이의 버퍼로서 기능할 수 있다.
도 10은 일 실시예에 따른 AGC 프로세스를 설명하는 흐름도이다.
도 10을 참조하면, 텍셀 요청을 구성하는 프로세스는 여러 단계(S0, S1, S2, S3, S4)에 걸쳐 있으며, 각 단계는 제약 조건 집합을 충족시키는, 더 큰 또는 다른 요청 그룹을 결합할 수 있다. 일 실시예에서, 제약 집합은 4개를 초과하지 않는 구별되는 캐시-라인 및 각 뱅크로부터의 1개를 초과하지 않는 더블워드(dword)를 포함할 수 있다. 그러나, 다른 제약 집합이 이용될 수 있다.
단계 S1에서, 각 픽셀로부터 시작된 요청은 이러한 요청에 사용되는 캐시-라인 어드레스를 찾기 위해 검사될 수 있다. 각 캐시-라인 어드레스는 4개의 요청 각각에 필요한 뱅크 오프셋에 링크될 수 있다. 이 과정을 버킷팅(bucketing)이라 명칭할 수 있다 (도 8 참조). 따라서 단계 S1에서는 4개의 버킷 각각을 포함하는 4개 그룹이 생성될 수 있고, 각 버킷은 최대 4개의 텍셀 요청을 포함할 수 있다. 후속 단계에서 그룹 내 다른 요청과의 뱅크 충돌이 없는 경우, 각 버킷에는 더 많은 텍셀 요청이 포함될 수 있다. 일 실시예에서, 드라이버(104)는 텍스처 데이터를 편성함으로써 픽셀과 연관된 요청이 뱅크 충돌을 일으킬 가능성을 극히 낮게 할 수 있다. 그러나 뱅크 충돌이 있는 드문 경우에, 해당 픽셀의 요청은 별도로 처리될 수 있다.
단계 S2에서, 버킷 쌍의 두 가지 조합을 고려할 수 있다. 예를 들어, 버킷팅 p0 & p1 은 2개의 상이한 버킷 집합에 있는 픽셀 p0 및 p1과 연관된 모든 요청이 제약 조건을 만족하면서 단일 버킷 집합에 놓일 수 있는지, 즉 4개를 초과하지 않는 개별 캐시-라인 및 각 뱅크로부터의 1개를 초과하지 않는 더블워드(dword)인지를 검사할 수 있다. 단계 S2가 끝나면, 서로 다르게 쌍을 이룬 픽셀들의 2가지 경우 (제 1 경우, 제 2 경우)의 버킷팅을 가질 수 있다.
단계 S3에서, 서로 다르게 쌍을 이룬 2가지 경우가 실패했는지 검사할 수 있다. 이 경우 p0 및 p3의 세 번째 쌍을 버킷하고, 버킷팅이 제약 조건을 만족하는지 확인하기 위해 p0 & p3 에 대한 요청을 전송할 수 있다. 이후에 pl & p2 에 대한 검사가 진행될 수 있다 (도시되지 않음). 그러나 가장 일반적인 경우는 제 1 경우 및 제 2 경우 모두가 모든 제약 조건을 충족하는 경우일 수 있으며, 이 때 프로세스는 "버킷팅 p0 & p1 & p2 & p3"로 도시된 바와 같이 4개의 픽셀 전부를 버킷팅 할 것으로 간주할 수 있다. 상술한 예시는, 이 버킷팅이 성공하고 4개의 픽셀로부터의 모든 요청을 동일한 주기에서 처리할 수 있는 경우를 예로든 것이다.
도 10에는 다른 경우도 설명하고 있는데, 단계 S4에서, 픽셀 p0의 요청이 개별적으로 전송되어야 할 수 있다. 이 프로세스는 계층적인데, 단일 픽셀의 요청으로 시작하여, 태그 및 데이터 뱅크 액세스 요구사항과 호환되는 쌍을 이루는 픽셀을 구성하고 마지막으로 픽셀의 쿼드를 구성할 수 있다. 이 프로세스는, 4개의 픽셀 전부가 함께 버킷팅되는 일반적인 경우에는 효율적으로 종료될 수 있고, 다른 경우들에서는 호환되는 서브세트(subset)를 신속하게 결정하는데 유용할 수 있다.
도 11은 일 실시예에 따른 ASTC 블록 사이즈 및 텍스처 캐시 라인 경계의 예시를 나타내는 도면이다.
도 12는 일 실시예에 따른 일련의 액세스에 걸친 ASTC 블록 사이즈 및 텍스처 캐시 라인 경계의 예시를 나타내는 도면이다.
굵은 볼드체 선(1105)은 TC0의 캐시-라인 경계를 나타내며, 미스의 경우에 DC에 요청을 할 수 있다. 얇은 볼드체 선(1110)은 텍스처의 ATSC 5 x 5 블록 경계를 나타낼 수 있다. 미스의 경우에, TC0는 TD의 ASTC 디코더로부터 4x2 텍셀 그리드를 요청할 수 있다. 캐시-라인 미스에 따라, 3가지 유형의 요청이 가능할 수 있다.
유형-0 블록의 경우, 미스가 하나의 ASTC 5x5 블록 내에서 매핑될 수 있다. TD는 디코딩된 텍셀을 2개 사이클 동안 전달할 수 있다 (지연 없이 처리량 측정).
유형-l 블록의 경우, 미스가 두 개의 ASTC 5x5 블록에 매핑될 수 있다. TD는 2개(블록 B) 또는 3개(블록 A) 사이클 동안 블록을 디코딩할 수 있다. 블록 A는 두 번째 ASTC 블록에서 2개의 사이클을 필요로 하고 (6개의 텍셀을 디코딩해야하므로), 첫 번째 ASTC 블록에서 l개의 사이클을 필요로 할 수 있다 (1Cx2R). 블록 B는 2개의 ASTC 블록에서 각각 1개의 사이클을 필요로 할 수 있다. 유형-2 블록 미스는 4개의 ASTC 5x5 블록에 매핑될 수 있다. 블록 A 및 블록 B 모두 디코딩을 위해 4개의 사이클을 필요로 할 수 있다. 일 실시예에서, 처리량을 지원하기 위해 TD는 2Cx2R, 4Cx1R (또는 서브세트) 및 1Cx2R 블록을 디코딩해야할 수 있다.
ASTC를 지원하는 것 이외에, 스트리밍 FIFO 2는 또한 예시적인 실시예에서 ETC2 압축 포맷을 효율적으로 지원할 수 있다. 결과적으로, 일 실시예에서, 스트리밍 FIFO 2는 8개의 AS'TC 디코딩된 텍셀 또는 16 개의 ETC2 디코딩된 텍셀을 저장하기에 충분한 4-128 비트 폭의 뱅크를 포함할 수 있다. 또한, 일 실시예에서, 뱅크들 각각은 레인 마스킹 (lane masking), 및 상위(upper) 64b 또는 하위(lower) 64b를 기록하는 것을 지원할 수 있다. ASTC 디코딩된 텍셀에 대한 4x2 블록 내의 텍셀의 번호를 매기는 관점에서, 뱅크 0은 텍셀 0과 1을 보유하고, 뱅크 1은 텍셀 2와 3을 보유하고 있을 수 있다. 일 실시예에서, 3가지 유형의 블록 모두에 대해 뱅크 충돌이 발생하지 않을 수 있다.
일 실시예에서, 디코더가 융통성 있게 선택할 수 있는 경우, 디코더는 4Cx1R 또는 1Cx2R 블록을 디코딩할 수 있다. TD는 유형-1 블록 B 경우에만 2Cx2R 블록을 디코딩할 수 있다.
ASTC 텍스처에 대한 텍스처 디컴프레서 순서에 대한 택스처 캐시의 예가 설명된다. 유형-0 블록의 경우, 캐시-라인을 채우기 위해 TD로부터 8개의 텍셀을 요청할 수 있다. TD 유닛에서 디코딩을 요청하는 두 가지 선택 사항이 있을 수 있다. 요청은 최대 2개의 4CxlR 블록 요청 또는 최대 2개의 2Cx2R 블록 요청일 수 있다.
일 실시예에서, 유형-1 블록에 대해, 2개의 ASTC 블록으로부터 비압축된 데이터에 대한 요청이 이루어질 수 있다. 각 블록에서 2-4개의 텍셀을 요청할 수 있다. 일 실시예에서, 아래의 순서가 뒤 따를 수 있다.
왼쪽 상단 ASTC 블록에서 lCx2R 또는 2Cx2R 또는 3Cx2R을 요청할 수 있다.
일 실시예에서, 스트리밍 FIFO 2 디컴프레서 출력은 상이한 뱅크들에 대한 개별적인 텍셀들의 레인 마스킹을 지원할 수 있다 (예를 들어, 텍셀 0은 뱅크 0에 기록되고, 텍셀 4는 뱅크 2에 기록되고, 텍셀 3은 뱅크 1에 기록되며, 텍셀 6은 뱅크 3에 기록됨).
2Cx2R의 경우, 요청은 각각 뱅크 O 및 뱅크 2로 또는 그 반대로 기록될 수 있다.
오른쪽 상단 ASTC 블록에서 lCx2R 또는 2Cx2R 또는 3Cx2R을 요청할 수 있다.
항상, 요청의 Z-오더를 따를 수 있다.
유형-2 블록의 경우, 텍스처 캐시는 4개의 ASTC 블록에서 데이터를 요청할 수 있다. 이러한 경우 Z-오더는 보존될 수 있다.
왼쪽 상단 ASTC 블록에서 lCx1R 또는 2Cx1R 또는 3Cx1R을 요청할 수 있다.
오른쪽 상단 ASTC 블록에서 1CxlR 또는 2Cx 1R 또는 3CxlR을 요청할 수 있다.
왼쪽 하단 ASTC 블록에서 lCxlR 또는 2CxlR 또는 3CxlR을 요청할 수 있다.
오른쪽 하단 ASTC 블록에서 1CxlR 또는 2Cx1R 또는 3Cx1R을 요청할 수 있다.
이러한 경우들에서 순서는 정확히 동일하며, 스트리밍 FIFO 2에서 레인 마스킹을 지원하면 데이터를 효율적으로 기록할 수 있다. 3Cx2R을 지원하려면 TD에서 추가 버퍼링이 필요하며, 이 경우 두 개의 3CxlR 요청으로 추가 분할될 수 있습니다.
비압축된 도메인 어드레스 및 메모리 내 대응되는 압축된 블록의 어드레스 간의 관계는, ASTC에서 사용되는 2의 거듭제곱이 아닌 블록 사이즈의 경우에 복잡할 수 있다. 정렬된 64B 블록에 필요한 텍셀 데이터는 다수의 압축된 블록에서 나올 수 있다.
도 12를 참조하면, ASTC 5x5: 64b 텍셀의 예시가 도시된다. 경계는 얇은 볼드체 선(1110)으로 표시된다. 첫 번째 열에는 00 ~ 02으로, 마지막 열에는 20 ~ 22으로 얇은 볼드체 선으로 번호가 매겨져 있다. 캐시-라인은 4개의 ASTC 블록 (00, 01, 10, 11)을 포함할 수 있다.
텍스처 캐시 블록은 4x2 64b 텍셀일 수 있다. 블록 경계는 굵은 볼드체 선들(1105)에 의해 표시된다. 블록들은 굵은 볼드체 선들로 번호가 매겨지며, 첫 번째 열은 00 ~ 03이고, 첫 번째 행은 00 ~ 50 이다.
제 1 액세스에는 음영처리된 블록이 0으로 표시되어 텍셀 풋 프린트를 나타내고 있으며, 제 2 액세스는 음영처리된 블록이 1로 표시되어 블록 풋 프린트를 나타내고 있다.
빈 캐시/버퍼에서 시작하여, 제 1 액세스는 캐시-라인을 (00, 01, 10, 11)와 함께 LSF로 가져오고, ASTC 얇은 볼드체 블록 00을 압축해제하고, TCO에 비압축된 굵은 볼드체 블록 10, 20을 채워 DSF에 저장할 수 있다.
제 2 액세스는 DSF에서 ASTC 블록 00을 히트할 수 있고, ASTC 블록 (01, 10, 11)에서 LSF를 히트할 수 있다. 이렇게 하면 (01, 10, 11)을 포함하는 캐시-라인에 대해 ASTC 블록 00을 반복적으로 압축해제하고 L1C를 다시 액세스하는 시간을 절약 할 수 있다.
압축해제는 ASTC 블록 (01, 10, 11)에 대해 수행될 수 있다. CLS(coalescer)는 3개 모두와 압축해제된 00을 구성함으로써, 비압축된 얇은 볼드체 블록 21을 생성할 수 있다. TCO를 비압축된 굵은 볼드체 블록 21로 채울 수 있다.
본 발명의 실시예의 예시적이지만 비제한적인 애플리케이션은 모바일 환경일 수 있다. 모바일 환경에서는 L2 캐시를 통해 주 메모리에서 GPU의 텍스처 캐시로 데이터를 전송하는데 필요한, 메모리 대역폭과 전력에 대한 제약이 있을 수 있다. 저전력 이중 데이터 램 (low power double data rate random access memory) (LPDDR)에서 L1 캐시로, 더블워드(dword) (4B)를 이동하는데 필요한 에너지 비용은 부동 소수점 연산의 약 50배인 것으로 추정된다. 따라서, 여기에 개시된 실시예는 모바일 GPU의 텍스처 유닛에서 높은 압축 인자(compression factor)를 달성하는 압축 포맷을 용이하게 할 수 있다.
압축된 포맷은 데이터 이동 비용 측면에서 에너지 효율성이 높지만 압축해제와 관련된 에너지 비용은 상당 할 수 있다. 예를 들어, 예시적인 블록 압축 포맷에서, 디컴프레서는 총 4개의 컬러를 생성하기 위해 2개의 컬러 사이를 선형 보간한다. 그런 다음 디컴프레서는 텍셀 어드레스를 기반으로 인덱스를 선택하고 해당 2b 인덱스를 사용하여 4개의 컬러 중 하나를 선택합니다. 보간을 수행하는데 드는 에너지 비용은 상당할 수 있다. 인덱싱 메커니즘은 두 단계의 룩업을 도입한다. 더 정교한 다양한 압축 포맷을 지원하는 추세에 따라, 압축해제 및 데이터-라우팅 에너지 비용이 전체 텍스처 단위 전력 중 상당 부분을 차지할 수 있다.
다수의 텍셀 액세스에서 소비되는 이러한 비용 중 일부를 절약(amortize)하기 위해, 텍스처 캐시 아키텍처의 예시적인 실시예는 디컴프레서와 어드레싱(addressing) 로직 사이에 레벨 0 (TC0) 캐시를 삽입할 수 있다. TC0 캐시는 텍셀 데이터를 압축된 형식으로 유지하는 레벨 1 캐시 (L1C)와는 달리 압축해제된 텍셀을 보유할 수 있다. 압축해제에 드는 에너지 비용은 여러 주기에 걸쳐 여러 번의 텍셀 액세스에 걸쳐 절약될 수 있다. 예를 들어, 4개의 연속된 사이클 동안에 4x4 압축 블록에서 4개의 텍셀에 액세스하는 경우, TC0 캐시는 비압축된 텍셀을 4개의 사이클 동안 보유하고, 압축해제된 TCO 캐시가 없는 경우 압축해제 비용이 4번 발생하는 것에 비해 압축해제 비용은 1번만 발생할 수 있다.
2의 거듭제곱이 아닌 블록 차원에 대한 전력 및 면적에 기여하는 또 다른 요소는, 캐시-라인이 8x4와 같은 2의 거듭제곱 차원을 갖는 비압축된 텍셀의 블록을 포함하는 동안, 메모리 내 압축된 블록은 7x5와 같은 2의 거듭제곱이 아닌 차원일 수 있다는 것이다. 그러한 경우, 압축된 블록의 경계는 캐시-라인 내 2의 거듭제곱의 블록의 경계와 정렬되지 않을 수 있다. 이 특정 예에서, 8x4를 채우려면 2개의 7x5 블록 또는 4개의 7x5 블록이 필요할 수 있다. 결과적으로, 텍스처 디컴프레서는 많은 압축된 블록을 압축해제하여 캐시-라인의 모든 텍셀을 채워야할 수 있다. 예시적인 실시예들은 2의 거듭제곱이 아닌 블록 차원의 개선된 성능을 지원하기 위해 이용 될 수 있다. 동일한 압축 블록들 (또는 동일한 L1C 캐시-라인 내 다른 블록들) 중 많은 수는, 이후의 몇 개의 캐시-라인 미스에서 텍셀을 채울 것이 요구될 수 있고 L1C에서 반복적으로 인출되어야 하므로, 그 결과 낭비되는 대역폭과 전력이 발생할 수 있다. 최근 액세스된 압축된 블록을 보유하고 있는 스트리밍 FIFO 1은 L1C에 대한 액세스를 감소시키는 역할을 할 수 있다. 다음 몇 개의 캐시-라인 필(fill) 요청에서 동일한 압축된 블록을 필요로 한다면, 스트리밍 FIFO는 L1C 액세스를 요구하지 않고 그것들을 TD에 전달할 수 있다.
텍스처 캐시 아키텍처의 일 실시예의 한 측면은 텍스처 캐시 클라이언트가 지연에 비교적 민감하지 않다는 것이다.
CPU 레벨 l 캐시에서, 태그 액세스와 데이터 액세스는 병렬로 수행됨으로써 (또는 일부 웨이-예측(way-prediction) 하드웨어가 사용됨), 캐시 히트 지연을 약 1-4개의 사이클로 줄일 수 있다. 레벨 1 미스가 없는 경우에도 텍스처 유닛의 지연은, LOD (Level of Detail) 계산 및 텍스처 필터링 작업과 관련된 복잡한 어드레싱 로직으로 인해, 50개의 사이클 이상이 될 수 있다. 캐시 미스에 이어 다른 어드레스로 캐시 히트가 발생하면, CPU 캐시는 관련 없는 미스 데이터가 다음 메모리 계층 레벨에서 수신되기를 기다리지 않고, 즉시 캐시에 히트된 데이터를 전달할 수 있다.
이러한 순서가 뒤바뀐(out-of-order) 또는 히트-언더-미스(hit-under-miss) 데이터 리턴은 CPU에서 단일 스레드의 지연을 감소시킬 수 있지만, 셰이더 코어 액세스의 벡터 특성 및 그래픽스 파이프라인의 전반적인 순차적(in-order) 특성으로 인해 GPU에 상당한 이점을 제공하지 못할 수 있다. 텍스처 지연에 대한 셰이더 성능의 상대적인 둔감성(insensitivity)을 감안할 때, CPU 레벨 1 캐시 구성에 대한 대안으로서, 텍스처 어드레싱 및 필터링과 그래픽스 파이프 라인의 전반적인 순차적 특성으로 인한 큰 고정된 구성요소가 유용할 수 있다.
일 실시예에서, 텍스처 캐시 아키텍처(108)에 전송된 모든 어드레스는 순서대로 처리될 수 있다. 캐시 히트에 이어 캐시 히트가 발생하면, 캐시 미스에 대한 데이터가 전달될 때까지 캐시 히트에 대한 데이터 전달이 지연될 수 있다. 또한, 태그 배열에서의 히트는 대응하는 데이터가 반드시 캐시에 존재함을 의미하는 것은 아니며, 단지 이전의 모든 참조가 처리되면 캐시에 존재한다는 것을 의미할 수 있다. 모든 참조가 캐시를 통해 순서대로 전체적으로 스트리밍되는 텍스처 캐시의 스트리밍 동작은 상당한 이점을 가지며 설계 단순화를 가져올 수 있다. 그래픽스 파이프 라인에서 상태 및 작업이 순차적일 수 있는데, 수신되는 모든 상태는 이후 작업 요청에만 적용될 수 있다. 미스 이전에 순서를 벗어난 히트들의 처리는 상태를 데이터에 적용하는 것을 복잡하게 할 수 있다. 예를 들어, 텍스처-필터링 로직은 더 새로운 상태가 히트에 적용되어야 한다는 것을 인식해야 하며, 이전 상태가 미스에 적용되도록 유지해야 할 수 있다. 다른 캐시들에서, 메인 태그 어레이 상에서의 태그 비교가 실패하면, 제어 로직은 동일한 캐시-라인 상의 미해결 미스가 더 있는지 체크할 수 있다. 일 실시예에서, 이러한 체크는 스트리밍 캐시에서 필요하지 않을 수 있다.
일 실시예에서, 그래픽스 프로세싱 장치는, 제 1 픽셀 그룹의 텍셀(texel) 데이터에 대한 제 1 요청을 수신하도록 구성된 컨트롤러; 압축된 텍셀 데이터에 대한 하나 이상의 블록은 적어도 하나의 요청된 텍셀 데이터를 포함하고, 제 1 요청에 응답하여, 제 1 텍스처 캐시로부터 인출된(fetched) 압축된 텍셀 데이터에 대한 하나 이상의 블록을 저장하는 제 1 버퍼; 제 1 버퍼에 저장된 압축된 텍셀 데이터에 대한 하나 이상의 블록을 압축해제(decompress)하는 디컴프레서(decompressor); 및 압축해제된 압축된 텍셀 데이터에 대한 하나 이상의 블록을 저장하고, 압축해제된 요청된 텍셀 데이터를 제 2 텍스처 캐시에 출력으로서 제공하는 제 2 버퍼;를 포함할 수 있다. 일 실시예에서, 제 1 버퍼 및 제 2 버퍼는 선입선출(First In First Out, FIFO) 버퍼인 것인, 그래픽스 프로세싱 장치일 수 있다. 일 실시예에서, 제 1 버퍼에 저장된 압축된 텍셀 데이터에 대한 하나 이상의 블록은, 요청된 텍셀 데이터와 제 2 텍셀 데이터를 포함하는, 그래픽스 프로세싱 장치. 일 실시예에서, 컨트롤러는, 제 2 픽셀 그룹의 텍셀 데이터에 대한 제 2 요청을 수신하도록 구성되고, 제 1 요청의 하나 이상의 블록의 적어도 일부는 제 2 픽셀 그룹의 적어도 일부에 대응하며, 제 1 버퍼는, 제 2 요청에 응답하여, 제 1 텍스처 캐시로부터 재인출 없이, 하나 이상의 블록의 일부를 디컴프레서에 제공하도록 구성되는, 그래픽스 프로세싱 장치일 수 있다. 일 실시예에서, 컨트롤러는는 제 2 픽셀 그룹에 대한 텍셀 데이터에 대한 제 2 요청을 수신하도록 구성되고, 제 2 요청의 적어도 하나의 텍셀은 제 1 요청을 처리함으로써 제 2 버퍼에 저장된 압축해제된 텍셀 데이터에 대응하며, 제 1 버퍼는, 제 2 요청에 응답하여, 제 1 버퍼로부터의 압축해제 없이, 제 2 요청의 적어도 하나의 텍셀을 제 2 텍스처 캐시에 제공하도록 구성되는, 그래픽스 프로세싱 장치일 수 있다. 일 실시예에서, 제 1 텍스처 캐시는, 2의 거듭제곱이 아닌 (non-power-of-two) 블록 사이즈를 저장하도록 구성되는 것인, 그래픽스 프로세싱 장치일 수 있다. 일 실시예에서, 제 2 텍스처 캐시는, 2의 거듭제곱이 아닌 (non-power-of-two) 블록 사이즈를 저장하도록 구성되는 것인, 그래픽스 프로세싱 장치일 수 있다. 일 실시예에서, 제 2 캐시에 저장되기 전에, 압축해제된 텍스처 데이터를 합치는(coalescing) CLS(coalescer) 장치;를 더 포함하는, 그래픽스 프로세싱 장치일 수 있다. 일 실시예에서, 제 1 텍스처 캐시는 ASTC (Adaptive Scalable Texture Compression) 코덱에 따라 블록 크기를 저장하는, 그래픽 처리 장치일 수 있다. 일 실시예에서, 제 1 버퍼 내 제 1 판독 포인터를 제어하여 제 1 버퍼 내의 개별 엔트리를 선택하고, 제 2 버퍼 내 제 2 판독 포인터를 제어하여 제 2 버퍼 내의 개별 엔트리를 선택하는, 적어도 하나의 컨트롤러;를 더 포함하는, 그래픽 처리 장치일 수 있다.
일 실시예에서, 그래픽 프로세싱 장치가 동작하는 방법에 있어서, 제 1 픽셀 그룹의 텍셀 데이터에 대한 제 1 요청을 수신하는 단계; 제 1 텍스처 캐시로부터 요청된, 압축된 텍셀 데이터를 인출하는 단계; 인출된 텍셀 데이터를 제 1 버퍼에 저장(buffering)하는 단계; 제 1 버퍼의 출력을 텍스처 디컴프레서에 제공하고, 압축된 텍셀 데이터에 대한 하나 이상의 블록을 압축해제하는 단계; 압축해제된 텍셀 데이터를 제 2 버퍼에 저장(buffering)하는 단계; 및 제 2 버퍼의 출력을 제 2 텍스처 캐시에 제공하는 단계;를 포함하는, 방법일 수 있다. 일 실시예에서, 제 1 버퍼 및 제 2 버퍼는 선입선출(First In First Out, FIFO) 버퍼인 것인, 방법일 수 있다. 일 실시예에서, 제 1 버퍼에 저장된 압축된 텍셀 데이터에 대한 하나 이상의 블록은, 요청된 텍셀 데이터와 제 2 텍셀 데이터를 포함하는, 방법일 수 있다. 일 실시예에서, 제 1 버퍼에 대한 판독 포인터(read pointer)는 제 1 버퍼 내의 텍셀 데이터를 재사용하여, 텍셀 데이터에 대한 하나 이상의 요청을 제공하도록 선택되는 방법일 수 있다. 일 실시예에서, 제 2 버퍼에 대한 판독 포인터는 제 2 버퍼 내의 텍셀 데이터를 재사용하여, 텍셀 데이터에 대한 하나 이상의 요청을 제공하도록 선택되는 방법일 수 있다. 일 실시예에서, 제 1 텍스처 캐시로부터의 재인출 없이 제 2 그룹 픽셀의 텍셀 데이터에 대한 제 2 요청의 적어도 일부를 제공하기 위해, 제 1 요청에 대해 인출된 제 1 버퍼 내 텍셀 데이터를 재사용하는 단계;를 더 포함하는 방법일 수 있다. 일 실시예에서, 제 1 텍스처 캐시는, 2의 거듭제곱이 아닌 (non-power-of-two) 블록 사이즈를 저장하도록 구성되는 것인, 방법일 수 있다. 일 실시예에서, 제 2 텍스처 캐시는, 2의 거듭제곱인 (power-of-two) 블록 사이즈를 저장하도록 구성되는 것인, 방법일 수 있다. 일 실시예에서, 제 2 캐시에 저장되기 전에, 제 2 버퍼로부터 수신된 압축해제된 텍스처 데이터를 합치는(coalescing) 단계;를 더 포함하는 방법일 수 있다. 일 실시예에서, 복수개의 2의 거듭제곱이 아닌 블록으로부터의 텍셀 데이터는 합쳐지는 것인, 방법일 수 있다.
일 실시예에서, 그래픽 처리 장치는 압축된 텍셀 데이터를 저장하도록 구성된 제 1 텍스처 캐시; 제 1 텍스처 캐시로부터 압축해제된 텍셀 데이터를 저장하도록 구성된 제 2 텍스처 캐시 및, 픽셀 그룹의 텍셀 데이터에 대한 요청을 수신하고, 텍셀 데이터가 저장된 제 1 또는 제 2 텍스처 캐시에 대한 액세스를 스케줄링하도록 구성된 컨트롤러;를 포함할 수 있다. 일 실시예에서, 컨트롤러는, 제 2 텍스처 캐시에 요청된 텍셀 데이터에 대한 캐시 히트 또는 캐시 미스가 존재 하는지를 결정하고, 캐시 미스의 결정에 응답하여 요청된 텍셀 데이터에 대한 제 1 텍스처 캐시에 액세스하고, 캐시 히트의 결정에 응답하여 요청된 텍셀 데이터에 대한 제 2 텍스처 캐시에 액세스할 수 있다. 일 실시예에서, 데이터는 액세스들의 집합에 존재하는 구역성 패턴들에 기초하여 제 2 텍스처 캐시로 편성될 수 있다. 일 실시예에서, 제 2 텍스처 캐시는 텍셀들의 인접한 2차원 블록들에 대응하는, 모턴(Morton)-오더로 편성된 캐시-라인들로 그룹화된 텍셀 데이터를 가질 수 있다. 일 실시예에서, 컨트롤러는, 텍셀 어드레스 집합의 요청을 적어도 하나의 비-충돌 메모리 액세스의 시퀀스로 분할하도록 구성될 수 있다. 일 실시예에서, 적어도 하나의 비-충돌 메모리 액세스는 태그 충돌 또는 데이터 뱅크 충돌을 갖지 않을 수 있다. 일 실시예에서, 컨트롤러는, 다수의 구별되는 캐시-라인들 또는 뱅크 당 다수의 더블워드(dword) 중 적어도 하나에 기초하여, 제약 조건의 집합을 만족시키는 텍셀 요청들을 결합하도록 구성될 수 있다. 일 실시예에서, 컨트롤러는, 픽셀 그룹의 각 픽셀로부터 유래하는 텍셀 요청에 필요한 캐시-라인 어드레스를 검색하고, 4개를 초과하지 않는 구별되는 캐시-라인 및 1개를 초과하지 않는 각 뱅크에서의 더블워드(dword)의 제약 조건을 만족시키는 텍셀 요청을 결합할 수 있다. 일 실시예에서, 제 2 텍스트 캐시는 4-웨이 뱅크 태그 룩업 (4-way banked tag lookup) 및 16-웨이 뱅크 데이터 저장 (16-way banked data store)을 가질 수 있다. 일 실시예에서, 제 2 텍스처 캐시 내의 텍셀들의 레이아웃은, 텍셀 풋 프린트 내의 쿼드 텍셀들이 개별 뱅크 상에 있도록 선택될 수 있다.
일 실시예에서, 그래픽 처리 장치를 동작시키는 방법은, 압축된 텍셀 데이터를 제 1 텍스처 캐시에 저장하는 단계; 픽셀 그룹의 텍셀 데이터에 대한 요청을 수신하고, 텍셀 데이터에 대한 제 1 또는 제 2 텍스처 캐시에 대한 액세스를 스케줄링하는 단계;를 더 포함하는, 방법일 수 있다. 일 실시예에서, 스케줄링하는 단계는, 제 2 텍스처 캐시에 요청된 텍셀 데이터에 대한 캐시 히트 또는 캐시 미스가 존재 하는지를 결정하는 단계; 캐시 미스의 결정에 응답하여 요청된 텍셀 데이터에 대한 제 1 텍스처 캐시에 액세스하는 단계; 캐시 히트의 결정에 응답하여 요청된 텍셀 데이터에 대한 제 2 텍스처 캐시에 액세스하는 단계;를 포함하는 방법일 수 있다. 일 실시예는 제 2 텍스처 캐시 내의 텍셀 데이터를, 캐시-라인이 모턴(Morton)-오더로 편성된 타일로 편성하여, 텍셀의 인접한 2차원 블록이 미리 정해진 수의 개별 캐시-라인 및 태그-룩업을 필요로 하지 않도록 하는, 방법일 수 있다. 일 실시예는 텍셀 어드레스 집합의 요청을 비-충돌 액세스 집합으로 분할하는 방법일 수 있다. 일 실시예에서, 비-충돌 액세스 집합은 태그 충돌 또는 데이터 뱅크 충돌을 갖지 않는 방법일 수 있다. 일 실시예는 다수의 구별되는 캐시-라인들 또는 뱅크 당 다수의 더블워드(dword) 중 적어도 하나에 기초하여, 제약 조건의 집합을 만족시키는 텍셀 요청들을 결합하도록 구성되는 방법일 수 있다. 일 실시예에서, 4개를 초과하지 않는 구별되는 캐시-라인 및 1개를 초과하지 않는 각 뱅크에서의 더블워드(dword)의 제약 조건을 만족시키는 텍셀 요청을 결합하는 결합 텍셀 요청을 포함할 수 있다. 일 실시예에서, 제 2 텍스처 캐시는 4-웨이 뱅크 태그 룩업 (4-way banked tag lookup) 및 16-웨이 뱅크 데이터 저장 (16-way banked data store)을 가질 수 있다. 일 실시예에서, 제 2 텍스처 캐시 내의 텍셀들의 레이아웃은, 텍셀 풋 프린트 내의 쿼드 텍셀들이 개별 뱅크 상에 있도록 선택될 수 있다. 일 실시예에서, 데이터는 액세스들의 집합에 존재하는 구역성 패턴들에 기초하여 제 2 텍스처 캐시로 편성될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (15)

  1. 버퍼를 이용하여 텍스처 데이터에 액세스하는 그래픽스 프로세싱 장치에 있어서,
    제 1 픽셀 그룹의 텍셀(texel) 데이터에 대한 제 1 요청을 수신하는 컨트롤러;
    압축된 상기 텍셀 데이터에 대한 하나 이상의 블록은 적어도 하나의 상기 제 1 요청에 대응되는 텍셀 데이터를 포함하고, 상기 제 1 요청에 응답하여, 제 1 텍스처 캐시로부터 인출된(fetched) 상기 압축된 텍셀 데이터에 대한 상기 하나 이상의 블록을 저장하는 제 1 버퍼;
    상기 제 1 버퍼에 저장된 상기 압축된 텍셀 데이터에 대한 하나 이상의 블록을 압축해제(decompress)하는 디컴프레서(decompressor); 및
    압축해제된 상기 압축된 텍셀 데이터에 대한 하나 이상의 블록을 저장하고, 상기 압축해제된 요청된 텍셀 데이터를 제 2 텍스처 캐시에 출력으로서 제공하는 제 2 버퍼;
    를 포함하는, 그래픽스 프로세싱 장치.
  2. 제 1항에 있어서,
    상기 제 1 버퍼 및 상기 제 2 버퍼는 선입선출(First In First Out, FIFO) 버퍼인 것인, 그래픽스 프로세싱 장치.
  3. 제 1항에 있어서,
    상기 제 1 버퍼에 저장된 압축된 텍셀 데이터에 대한 하나 이상의 블록은, 상기 제 1 요청에 대응되는 텍셀 데이터와 제 2 텍셀 데이터를 포함하는, 그래픽스 프로세싱 장치.
  4. 제 1항에 있어서,
    상기 컨트롤러는, 제 2 픽셀 그룹의 텍셀 데이터에 대한 제 2 요청을 수신하고, 상기 제 1 요청의 상기 하나 이상의 블록의 적어도 일부는 상기 제 2 픽셀 그룹의 적어도 일부에 대응하며,
    상기 제 1 버퍼는, 상기 제 2 요청에 응답하여, 상기 제 1 텍스처 캐시로부터 재인출 없이, 상기 하나 이상의 블록의 일부를 상기 디컴프레서에 제공하는, 그래픽스 프로세싱 장치.
  5. 제 1 항에 있어서,
    상기 컨트롤러는 제 2 픽셀 그룹에 대한 텍셀 데이터에 대한 제 2 요청을 수신하고, 상기 제 2 요청의 적어도 하나의 텍셀은 상기 제 1 요청을 처리함으로써 상기 제 2 버퍼에 저장된 압축해제된 텍셀 데이터에 대응하며,
    상기 제 1 버퍼는, 상기 제 2 요청에 응답하여 상기 제 1 버퍼로부터의 압축해제 없이, 상기 제 2 요청의 상기 적어도 하나의 텍셀을 상기 제 2 텍스처 캐시에 제공하는, 그래픽스 프로세싱 장치.
  6. 제 1 항에 있어서,
    상기 제 1 텍스처 캐시 및 상기 제 2 텍스처 캐시는, 2의 거듭제곱이 아닌 (non-power-of-two) 블록 사이즈를 저장하는 것인, 그래픽스 프로세싱 장치.
  7. 제 6 항에 있어서,
    상기 제 2 텍스처 캐시에 저장되기 전에, 압축해제된 텍스처 데이터를 합치는(coalescing) CLS(coalescer) 장치;
    를 더 포함하는, 상기 그래픽스 프로세싱 장치.
  8. 제 1 항에 있어서,
    상기 제 1 버퍼 내 제 1 판독 포인터를 제어하여 상기 제 1 버퍼 내의 개별 엔트리를 선택하고, 상기 제 2 버퍼 내 제 2 판독 포인터를 제어하여 상기 제 2 버퍼 내의 개별 엔트리를 선택하는, 적어도 하나의 컨트롤러;
    를 더 포함하는, 그래픽 처리 장치.
  9. 그래픽 프로세싱 장치에서 버퍼를 이용하여 텍스처 데이터에 액세스하는 방법으로서,
    제 1 픽셀 그룹의 텍셀 데이터에 대한 제 1 요청을 수신하는 단계;
    제 1 텍스처 캐시로부터 상기 제 1 요청에 대응되는, 압축된 텍셀 데이터를 인출하는 단계;
    상기 인출된 텍셀 데이터를 제 1 버퍼에 저장(buffering)하는 단계;
    상기 제 1 버퍼의 출력을 텍스처 디컴프레서에 제공하고, 상기 압축된 텍셀 데이터에 대한 하나 이상의 블록을 압축해제하는 단계;
    상기 압축해제된 텍셀 데이터를 제 2 버퍼에 저장(buffering)하는 단계; 및
    상기 제 2 버퍼의 출력을 제 2 텍스처 캐시에 제공하는 단계;
    를 포함하는, 방법.
  10. 제 9항에 있어서,
    상기 제 1 버퍼에 저장된 압축된 텍셀 데이터에 대한 하나 이상의 블록은, 상기 제 1 요청에 대응되는 텍셀 데이터와 제 2 텍셀 데이터를 포함하는, 방법.
  11. 제 9항에 있어서,
    상기 제 1 버퍼에 대한 판독 포인터(read pointer)는 상기 제 1 버퍼 내의 텍셀 데이터를 재사용하여, 텍셀 데이터에 대한 하나 이상의 요청을 제공하도록 선택되는 방법.
  12. 제 9항에 있어서,
    상기 제 2 버퍼에 대한 판독 포인터는 상기 제 2 버퍼 내의 텍셀 데이터를 재사용하여, 텍셀 데이터에 대한 하나 이상의 요청을 제공하도록 선택되는 방법.
  13. 제 9 항에 있어서,
    상기 방법은,
    상기 제 1 텍스처 캐시로부터의 재인출 없이 제 2 그룹 픽셀의 텍셀 데이터에 대한 제 2 요청의 적어도 일부를 제공하기 위해, 상기 제 1 요청에 대해 인출된 상기 제 1 버퍼 내 텍셀 데이터를 재사용하는 단계;
    를 더 포함하는 방법.
  14. 제 9 항에 있어서,
    상기 제 1 텍스처 캐시 및 상기 제 2 텍스처 캐시는, 2의 거듭제곱이 아닌 (non-power-of-two) 블록 사이즈를 저장하는 것인, 방법.
  15. 제 14 항에 있어서,
    상기 방법은,
    상기 제 2 텍스처 캐시에 저장되기 전에, 상기 제 2 버퍼로부터 수신된 압축해제된 텍스처 데이터를 합치는(coalescing) 단계;
    를 더 포함하는 방법.
KR1020170023192A 2016-03-04 2017-02-21 버퍼를 이용하여 텍스처 데이터에 액세스하는 방법 및 장치 KR20170103649A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710128572.1A CN107153617B (zh) 2016-03-04 2017-03-06 用于利用缓冲器高效访问纹理数据的高速缓存体系结构

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662303889P 2016-03-04 2016-03-04
US62/303,889 2016-03-04
US15/420,459 US10055810B2 (en) 2016-03-04 2017-01-31 Cache architecture for efficiently accessing texture data using buffers
US15/420,459 2017-01-31

Publications (1)

Publication Number Publication Date
KR20170103649A true KR20170103649A (ko) 2017-09-13

Family

ID=59722207

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020170023192A KR20170103649A (ko) 2016-03-04 2017-02-21 버퍼를 이용하여 텍스처 데이터에 액세스하는 방법 및 장치
KR1020170026480A KR20170103667A (ko) 2016-03-04 2017-02-28 효율적인 저전력 텍스쳐 캐시 아키텍쳐

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020170026480A KR20170103667A (ko) 2016-03-04 2017-02-28 효율적인 저전력 텍스쳐 캐시 아키텍쳐

Country Status (3)

Country Link
US (2) US10181176B2 (ko)
KR (2) KR20170103649A (ko)
CN (1) CN107154012B (ko)

Families Citing this family (34)

* 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
US10115177B2 (en) * 2014-06-27 2018-10-30 Samsung Electronics Co., Ltd. Online texture compression and decompression in hardware
US10715818B2 (en) 2016-08-04 2020-07-14 Intel Corporation Techniques for hardware video encoding
US10602174B2 (en) * 2016-08-04 2020-03-24 Intel Corporation Lossless pixel compression for random video memory access
US10535178B2 (en) * 2016-12-22 2020-01-14 Advanced Micro Devices, Inc. Shader writes to compressed resources
CN108804219B (zh) 2017-04-28 2024-01-12 超威半导体公司 多计算核中的灵活着色器导出设计
GB2564466B (en) 2017-07-13 2020-01-08 Advanced Risc Mach Ltd Storing YUV texture data in a cache in a graphics processing system
US10291925B2 (en) 2017-07-28 2019-05-14 Intel Corporation Techniques for hardware video encoding
US10726519B2 (en) * 2017-09-25 2020-07-28 Arm Limited Cache arrangement for graphics processing systems
CN108377394B (zh) * 2018-03-06 2020-10-23 珠海全志科技股份有限公司 视频编码器的图像数据读取方法、计算机装置及计算机可读存储介质
US10860399B2 (en) 2018-03-15 2020-12-08 Samsung Display Co., Ltd. Permutation based stress profile compression
CN109118422B (zh) * 2018-07-10 2023-05-05 西安科技大学 一种嵌入式移动图形处理器的纹理Cache及处理方法
US10776957B2 (en) 2018-10-02 2020-09-15 Samsung Electronics Co., Ltd. Online image compression in hardware
US10803791B2 (en) 2018-10-31 2020-10-13 Samsung Display Co., Ltd. Burrows-wheeler based stress profile compression
US10943391B2 (en) * 2018-12-14 2021-03-09 Advanced Micro Devices, Inc. Graphics texture footprint discovery
US11025913B2 (en) 2019-03-01 2021-06-01 Intel Corporation Encoding video using palette prediction and intra-block copy
US11308873B2 (en) 2019-05-23 2022-04-19 Samsung Display Co., Ltd. Redundancy assisted noise control for accumulated iterative compression error
US10855983B2 (en) 2019-06-13 2020-12-01 Intel Corporation Encoding video using two-stage intra search
US10810784B1 (en) * 2019-07-22 2020-10-20 Nvidia Corporation Techniques for preloading textures in rendering graphics
US11245931B2 (en) 2019-09-11 2022-02-08 Samsung Display Co., Ltd. System and method for RGBG conversion
CN110992240A (zh) * 2019-11-18 2020-04-10 中国航空工业集团公司西安航空计算技术研究所 一种可编程纹理处理器系统
CN111091188B (zh) * 2019-12-16 2022-03-25 腾讯科技(深圳)有限公司 神经网络的前向计算方法、装置及计算机可读存储介质
US11625332B2 (en) 2020-01-14 2023-04-11 Arm Limited Cache miss handling for read operations in data processing systems
US11205243B2 (en) 2020-01-14 2021-12-21 Arm Limited Data processing systems
US11789867B2 (en) 2020-01-14 2023-10-17 Arm Limited Cache arrangement for data processing systems
WO2021237441A1 (en) 2020-05-26 2021-12-02 Huawei Technologies Co., Ltd. Device and method for data packing in memory
US11508031B2 (en) * 2020-12-16 2022-11-22 Samsung Electronics Co., Ltd. Warping data
US11720499B2 (en) * 2020-12-28 2023-08-08 Advanced Micro Devices, Inc. Selective generation of miss requests for cache lines
KR20220134848A (ko) * 2021-03-26 2022-10-06 삼성전자주식회사 그래픽 처리 장치 및 그의 동작 방법
GB2602687B (en) * 2021-06-25 2022-12-28 Imagination Tech Ltd Efficient convolution operations
US20230030741A1 (en) * 2021-07-30 2023-02-02 Intel Corporation Efficient compressed verbatim copy
GB2614069A (en) * 2021-12-21 2023-06-28 Advanced Risc Mach Ltd Cache systems
US20230206380A1 (en) * 2021-12-28 2023-06-29 Advanced Micro Devices, Inc. Optimizing partial writes to compressed blocks
CN116756444A (zh) * 2023-06-14 2023-09-15 北京百度网讯科技有限公司 图像处理方法、装置、设备以及存储介质

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US5761720A (en) * 1996-03-15 1998-06-02 Rendition, Inc. Pixel engine pipeline processor data caching mechanism
US6339428B1 (en) * 1999-07-16 2002-01-15 Ati International Srl Method and apparatus for compressed texture caching in a video graphics system
US6784892B1 (en) 2000-10-05 2004-08-31 Micron Technology, Inc. Fully associative texture cache having content addressable memory and method for use thereof
US6798421B2 (en) * 2001-02-28 2004-09-28 3D Labs, Inc. Ltd. Same tile method
GB0128888D0 (en) 2001-12-03 2002-01-23 Imagination Tech Ltd Method and apparatus for compressing data and decompressing compressed data
JP3840966B2 (ja) * 2001-12-12 2006-11-01 ソニー株式会社 画像処理装置およびその方法
US7916147B2 (en) 2002-03-01 2011-03-29 T5 Labs Ltd. Centralised interactive graphical application server
US6812929B2 (en) * 2002-03-11 2004-11-02 Sun Microsystems, Inc. System and method for prefetching data from a frame buffer
US7360020B2 (en) 2003-03-31 2008-04-15 Sun Microsystems, Inc. Method for improving cache-miss performance
US7151544B2 (en) 2003-05-16 2006-12-19 Sun Microsystems, Inc. Method for improving texture cache access by removing redundant requests
CN100533403C (zh) * 2004-07-14 2009-08-26 奥普提克斯晶硅有限公司 高速缓冲存储器管理系统和方法
US7872892B2 (en) * 2005-07-05 2011-01-18 Intel Corporation Identifying and accessing individual memory devices in a memory channel
US7965296B2 (en) 2006-06-20 2011-06-21 Via Technologies, Inc. Systems and methods for storing texture map data
KR101270167B1 (ko) 2006-08-17 2013-05-31 삼성전자주식회사 저복잡도의 이미지 압축 방법 및 장치, 저복잡도의 이미지복원 방법 및 장치
US7948498B1 (en) 2006-10-13 2011-05-24 Nvidia Corporation Efficient texture state cache
US7649538B1 (en) * 2006-11-03 2010-01-19 Nvidia Corporation Reconfigurable high performance texture pipeline with advanced filtering
US7999821B1 (en) * 2006-12-19 2011-08-16 Nvidia Corporation Reconfigurable dual texture pipeline with shared texture cache
CN101520749B (zh) * 2008-02-29 2012-08-29 瑞昱半导体股份有限公司 管理存储器的方法
JP4507265B2 (ja) 2008-06-30 2010-07-21 ルネサスエレクトロニクス株式会社 画像処理回路、及びそれを搭載する表示パネルドライバ並びに表示装置
US8542732B1 (en) 2008-12-23 2013-09-24 Elemental Technologies, Inc. Video encoder using GPU
BR112012012273B1 (pt) 2009-11-24 2020-11-03 Telefonaktiebolaget Lm Ericsson (Publ) sistema de decodificação e método para gerar um pixel decodificado
US8605104B1 (en) 2009-12-31 2013-12-10 Nvidia Corporation Threshold-based lossy reduction color compression
US9129543B2 (en) 2010-06-18 2015-09-08 Telefonaktie L M Ericsson (publ) Texture compression and decompression
JP5255045B2 (ja) 2010-12-01 2013-08-07 シャープ株式会社 画像処理装置、画像処理方法
US9378560B2 (en) 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
GB201122022D0 (en) 2011-12-20 2012-02-01 Imagination Tech Ltd Method and apparatus for compressing and decompressing data
US9396117B2 (en) * 2012-01-09 2016-07-19 Nvidia Corporation Instruction cache power reduction
US9158686B2 (en) 2012-03-30 2015-10-13 Altera Corporation Processing system and method including data compression API
CN103577113B (zh) * 2012-07-24 2016-08-03 联想(北京)有限公司 一种存储单元访问方法
US9189394B2 (en) 2012-08-08 2015-11-17 Wisconsin Alumni Research Foundation Memory-link compression for graphic processor unit
KR20140095296A (ko) * 2013-01-24 2014-08-01 삼성전자주식회사 픽셀 캐시 및 픽셀 캐시의 동작 방법
US9159114B2 (en) 2013-11-08 2015-10-13 Qualcomm Incorporated Texture decompression for graphics processors
US9300320B2 (en) 2014-06-27 2016-03-29 Qualcomm Incorporated System and method for dictionary-based cache-line level code compression for on-chip memories using gradual bit removal
US9947071B2 (en) * 2014-06-27 2018-04-17 Samsung Electronics Co., Ltd. Texture pipeline with online variable rate dictionary compression
US9524536B2 (en) 2014-07-25 2016-12-20 Intel Corporation Compression techniques for dynamically-generated graphics resources
KR20160032597A (ko) * 2014-09-16 2016-03-24 삼성전자주식회사 텍스쳐를 처리하는 방법 및 장치
KR102258100B1 (ko) * 2014-11-18 2021-05-28 삼성전자주식회사 텍스쳐 처리 방법 및 장치

Also Published As

Publication number Publication date
US20170256025A1 (en) 2017-09-07
US20170256024A1 (en) 2017-09-07
CN107154012B (zh) 2021-08-10
KR20170103667A (ko) 2017-09-13
CN107154012A (zh) 2017-09-12
US10181176B2 (en) 2019-01-15
US10055810B2 (en) 2018-08-21

Similar Documents

Publication Publication Date Title
KR20170103649A (ko) 버퍼를 이용하여 텍스처 데이터에 액세스하는 방법 및 장치
CN107153617B (zh) 用于利用缓冲器高效访问纹理数据的高速缓存体系结构
US8941653B2 (en) Order-preserving distributed rasterizer
US6847370B2 (en) Planar byte memory organization with linear access
US8760460B1 (en) Hardware-managed virtual buffers using a shared memory for load distribution
US9734548B2 (en) Caching of adaptively sized cache tiles in a unified L2 cache with surface compression
JP5142299B2 (ja) 圧縮状態ビットキャッシュ及びバッキング記憶装置
US8341380B2 (en) Efficient memory translator with variable size cache line coverage
US6831653B2 (en) Graphics pixel packing for improved fill rate performance
EP1994506B1 (en) Texture unit for multi processor environment
US9304933B2 (en) Techniques to request stored data from a memory
US7348988B2 (en) Texture cache control using an adaptive missing data table in a multiple cache computer graphics environment
US9569348B1 (en) Method for automatic page table compression
KR20180054797A (ko) 프리-페칭에 의한 효율적 디스플레이 프로세싱
US6690377B2 (en) 3-D rendering engine with embedded memory
WO2005086096A2 (en) Embedded system with 3d graphics core and local pixel buffer
US9934145B2 (en) Organizing memory to optimize memory accesses of compressed data
JP2009099098A (ja) コンピュータグラフィックス描画装置及び描画方法
CN105550979A (zh) 一种高数据通量纹理Cache层次结构
US10402323B2 (en) Organizing memory to optimize memory accesses of compressed data
US10019349B2 (en) Cache memory and method of managing the same
US20180103174A1 (en) Image processing apparatus and method for controlling the same