KR20170103667A - 효율적인 저전력 텍스쳐 캐시 아키텍쳐 - Google Patents

효율적인 저전력 텍스쳐 캐시 아키텍쳐 Download PDF

Info

Publication number
KR20170103667A
KR20170103667A KR1020170026480A KR20170026480A KR20170103667A KR 20170103667 A KR20170103667 A KR 20170103667A KR 1020170026480 A KR1020170026480 A KR 1020170026480A KR 20170026480 A KR20170026480 A KR 20170026480A KR 20170103667 A KR20170103667 A KR 20170103667A
Authority
KR
South Korea
Prior art keywords
cache
texel
data
texture
texture cache
Prior art date
Application number
KR1020170026480A
Other languages
English (en)
Inventor
박정애
카틱 라마니
권권택
산토쉬 조지 아브라함
서웅
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20170103667A publication Critical patent/KR20170103667A/ko

Links

Images

Classifications

    • 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
    • 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
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • 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 텍스처 캐시 및 압축 해제된 텍셀 데이터를 저장하는 제 2 텍스처 캐시를 포함한다. 컨트롤러는 제 1 텍스쳐 캐시 또는 제 2 텍스쳐 캐시로부터 텍셀 데이터에 액세스하기 위해 액세스를 스케줄한다. 제 2 텍스쳐 캐시는 압축 해제된 텍셀 데이터가 하나 이상의 텍셀 액세스 요청에 대해서 재사용될 수 있도록 한다.

Description

효율적인 저전력 텍스쳐 캐시 아키텍쳐 {An efficient low-power texture cache architecture}
본 발명의 실시 예는 일반적으로 그래픽 처리 유닛(graphics processing unit)에서 텍스처 캐시를 사용하는 기술에 관한 것이다.
그래픽 시스템에서, 텍스쳐는 일반적으로 압축된 포맷으로 텍스쳐 캐시에 저장되어 있다. 예를 들면, 블록 압축 포맷(a block compressed format)은 픽셀들의 4x4 블록에 대한 색 및 알파를 64비트(64b; 8바이트(8B))로 압축한다. 압축 해제(decompression) 후에는, 구성 요소(component)당 각각 5, 6, 5 비트인 적색, 녹색 및 청색(RGB) 구성 요소인 2B가 있다. 따라서, 이 압축 포맷은 4의 압축 팩터(compression factor)를 획득한다 (예, 픽셀들의 4x4 블록에 대해서 (2B/픽셀*16픽셀들)/8B=4).
압축된 포맷은 메모리 계층 구조(hierarchy)의 여러 레벨들간의 텍스쳐 이동에 필요한 대역폭(bandwidth) 뿐 아니라 메모리 요구(memory requirements)도 절약할 수 있다. 그러나, 종래의 텍스쳐 캐싱 접근과 관련된 많은 결점과 한계가 있다.
그래픽 처리 유닛에서 효율적으로 텍스쳐 캐시를 이용하는 방법 및 장치에 대해 개시한다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 개시의 제 1 측면에 따른 그래픽 처리 유닛은 압축된 텍셀 데이터를 저장하는 제 1 텍스처 캐시; 상기 제 1 텍스처 캐시로부터 압축 해제된 텍셀 데이터를 저장하는 제 2 텍스처 캐시; 및 픽셀 그룹(group of pixels)의 텍셀 데이터에 대한 요청을 수신하고, 상기 요청된 텍셀 데이터에 대한 상기 제 1 텍스처 캐시 또는 상기 제 2 텍스처 캐시에 대한 액세스를 스케줄링하는 제어부를 포함할 수 있다.
본 개시의 제 2 측면에 따른 그래픽 처리 장치의 동작 방법은 압축된 텍셀 데이터를 제 1 텍스쳐 캐시에 저장하는 단계; 상기 제 1 텍스처 캐시로부터 압축 해제된 텍셀 데이터를 제 2 텍스처 캐시에 저장하는 단계; 픽셀 그룹(group of pixels)의 텍셀 데이터에 대한 요청을 수신하는 단계; 및 상기 요청된 텍셀 데이터에 대한 상기 제 1 텍스처 캐시 또는 상기 제 2 텍스처 캐시에 대한 액세스를 스케줄링하는 단계를 포함할 수 있다.
또한, 본 개시의 제 3 측면은, 제 1 측면의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공할 수 있다.
그래픽 처리 유닛은 텍스쳐 캐시 아키텍쳐 등을 통해 보다 효율적인 데이터 처리를 수행할 수 있다.
도 1a는 본 발명의 일 실시 예에 따른 텍스처 캐시 아키텍처를 포함하는 그래픽 처리 시스템의 블록도이다.
도 1b는 본 발명의 일 실시 예에 따라 도 1a의 텍스처 캐시 아키텍처를 보다 상세히 도시한다.
도 1c는 ASTC 코덱을 지원하는 도 1a의 텍스처 캐시 아키텍처의 실시 예를 도시한다.
도 2는 일 실시 예에 따른 그래픽 처리 유닛을 동작시키는 방법을 도시한다.
도 3은 일 실시 예에 따른 그래픽 처리 유닛을 동작시키는 방법을 도시한다.
도 4는 일 실시 예에 따른 캐시 데이터 및 태그 매핑의 예를 도시한다.
도 5는 일 실시 예에 따른 충돌없는 액세스(conflict free access)를 갖는 캐시 데이터 및 태그 맵핑의 예를 도시한다.
도 6은 일 실시 예에 따라 쿼드의 3x3 풋 프린트(footprint)에 대한 캐시 액세스의 예를 도시한다.
도 7은 일 실시 예에 따른 쿼드의 2x2 풋 프린트에 대한 캐시 액세스의 예를 도시한다.
도 8은 일 실시 예에 따른 텍스처 캐시 아키텍처의 서브 블록들의 예를 도시한다.
도 9는 일 실시 예에 따른 ASTC 텍셀 풋 프린트 패턴의 예를 도시한다.
도 10은 일 실시 예에 따른 텍셀 요청들을 결합하는 어드레스 생성 제어의 예를 도시한다.
도 11은 일 실시 형태에 따른 ASTC 블록 크기 및 텍스처 캐시 라인 경계의 예를 도시한다.
도 12는 액세스 시퀀스에 대한(over a sequence of accesses) ASTC 블록 크기 및 텍스처 캐시 경계의 예를 도시한다.
도 1a는 일 실시 예에 따른 그래픽 시스템 (100)을 예시하는 블록도이다. 일 실시 예에서, 텍스처 캐시 유닛 (110)은 그래픽 처리 유닛 (GPU) (106)의 일부이다. 일 실시 예에서, 텍스처 캐시 유닛 (110)은 텍스처 캐시 아키텍처를 포함하며, 이는 도 1b와 관련하여 보다 상세히 후술된다.
일 실시 예에서, GPU (106)는 그래픽 하드웨어를 포함 할 수 있고, 예를 들어, 하나 이상의 셰이더 코어를 포함하는 그래픽 파이프 라인을 구현할 수 있다. 추가적인 그래픽 데이터를 저장하기 위해 외부 그래픽 메모리 (112)가 제공 될 수 있다. 일 실시 예에서, 중앙 처리 장치 (CPU) (101) 및 관련 시스템 메모리(associated system memory) (102)는 드라이버 소프트웨어 (104)에 대한 컴퓨터 프로그램 명령(computer program instructions)을 포함 할 수 있다. 버스는 CPU (101)를 GPU (106)에 통신 가능하게 연결(communicatively couple)하고, 시스템 메모리(102)를 CPU(100)에 연결하고, GPU(106)를 외부 그래픽 메모리(112)에 연결하기 위해 이용될 수 있다.
도 1b는 텍스처 캐시 아키텍처 (108)의 실시 예를 보다 상세히 도시한다. 비압축 텍스처 데이터 (예를 들어, 텍셀 데이터)에 대해 레벨 0 텍스처 캐시 (TC0)가 제공된다. 일 실시 예에서, TC0 캐시는 64B 캐시 라인으로 조직화(organized)된 압축 해제된 텍셀을 보유(hold)하고, 각 4B 세그먼트는 16개의 데이터 뱅크에 걸쳐(across l6 data banks) 저장된 전체 캐시 라인을 갖는 개별 데이터 뱅크(a separate data bank)에 저장된다. 그러나, 다른 캐시 라인 크기 및 세그먼트 크기가 사용될 수 있다고 이해될 수 있다. 압축된 텍스처 데이터 (예를 들어, 텍셀 데이터)에 대해 레벨 1 텍스처 캐시 (L1C)가 제공된다.
텍스쳐 압축 해제기(texture decompressor)(TD)는 TC0과 L1C 사이에 배치된다. 데이터를 버퍼링하기 위해 제 1 및 제 2 버퍼가 제공된다. 버퍼들은 상이한 방식으로 구현 될 수 있지만, 일 실시 예에서, 이들 버퍼는 제 1 버퍼가 제 1 선입 선출(First-in, First Out) (스트리밍 FIFO1)이고 제 2 버퍼가 제 2 선입 선출 (스트리밍 FIFO2)인 구현(implementation)을 포함하여 스트리밍 선입 선출(First-in, First Out) (FIFO)로서 구현된다. 스트리밍 FIFO1은 압축된 데이터를 L1C에서 TD로 버퍼링한다. 스트리밍 FIFO2는 TD에서 TC0로 제공된 압축 해제된 데이터를 버퍼링한다. 일 실시 예에서, 스트리밍 FIFO는 항상 가장 오래된 엔트리를 새로운 입력 엔트리로 대체하는 FIFO 대체 방식(replacement scheme)을 사용하지만, 스트리밍 FIFO는 정규 FIFO(regular FIFO)에서와 같이 가장 오래된 엔트리 뿐만 아니라 모든 엔트리에 대한 리드 액세스(read access)를 허용한다.
일 실시 예에서, 텍스처 어드레스 유닛 (도 1b에서 점선으로 도시 됨)은 쿼드 (4개의 픽셀 그룹)에 대한 액세스 세트(set of accesses)를 생성하고, AGC(Address Generation Controller)를 시작하면서 액세스 세트를 텍스쳐 캐시 아키텍쳐(108)의 프론트 엔드(180)에 전달(deliver)한다. 일 실시 예에서, AGC는 가장 적은 수의 비충돌 태그 액세스 및 데이터 뱅크 액세스의 세트로 액세스를 결합한다. 일 실시 예에서, AGC는 태그 유닛(TAGS unit) 내의 태그를 검색(look up)하는데, 태그 유닛(TAGS unit)은 어드레스 연산 유닛(ADDRESS COMPUTE unit)에 미스를 전달한다. 어드레스 연산 유닛은 L1C 캐시의 압축된 텍스쳐 데이터에 액세스하기 위한 어드레스를 생성한다.
일 실시 예에서, TC0 캐시에서 캐쉬 미스가 발생하는 경우, AGC는 어드레스 연산 블록(address compute block)을 이용하여 L1C 캐시로부터 압축된 텍스쳐 데이터에 액세스하기 위한 태그(태그 유닛으로부터)의 사용 및 어드레스 생성을 지원한다. 그런 다음 압축된 텍스쳐 데이터는 스트리밍 FIFO1에서 버퍼링되고, TD에서 압축 해제되고, 스트리밍 FIFO2에서 버퍼링되고 나서 TC0 캐시에 제공된다.
일 실시 예에서, TC0 캐시는 압축 해제된 텍스쳐 데이터의 재사용을 제공한다. 캐시 히트에 응답하여, TC0 캐시의 출력은, 예를 들면, 픽셀에 대한 텍스쳐를 계산하기 위해 텍스쳐 필터 유닛(도 1b에서 점선으로 도시됨)에 의해 사용될 수 있다. 또한, 보다 상세히 후술되는 바와 같이, 일 실시 예에서, FIFO 1 및 FIFO 2에 대한 리드 포인터(read pointers)는 텍셀 데이터의 재사용을 개선(improve)하도록 제어 될 수 있다. 일 실시 예에서, 예를 들어 제어 블록 (190) 또는 다른 제어 특성들은 제 1 버퍼 (예를 들어, FIFO1) 및/또는 제 2 버퍼 (예를 들어, FIFO2)의 리드 포인터(read pointers) 및 TD의 동작을 조정하기 위해 제공 될 수 있다.
일 실시 예에서, 텍스쳐 캐시 유닛(110)은 쿼드 (2x2 픽셀 세트)에 대한 텍셀 데이터에 대한 요청을 수용(accept)하고, 쿼드 내의 각각의 활성 픽셀에 대한 필터링된 텍셀을 생성하는데, 쿼드는 사이클 당 각 픽셀에 대해 4 텍셀, 총 16 텍셀에 대해 접근을 수반할 수 있다.
일 실시 예에서, 그래픽 시스템(100)은 텍스처 내의 데이터를 재구성(reorganize) 할 수 있는 유연성(flexibility)이 있다. 일 실시 예에서, 드라이버 (104)는 예상된 요청 패턴에 가장 잘 맞도록 텍스처 데이터를 재구성한다. 셰이더 코어는 그래픽 응용 프로그램에 존재하는 자연적 병렬 처리(natural parallelism)를 활용할 수 있도록 고도로 멀티 스레드 되기 때문에 레이턴시 허용(latency tolerant)된다. 또한, 텍스처 캐시에 각 사이클에 도착하는 다수 요청(multiple requests)은 단일 쿼드(single quad)를 대신하여 만들어진 텍셀 요청에 대응되기 때문에 상호 연관(correlated) 될 수 있다.
일 실시 예에서, TC0 캐시 내의 데이터의 구성(organization of data in the TC0 cache)은 공통 데이터 액세스 패턴에 기초하여 최소 수의 데이터 뱅크 및 태그 룩업을 갖는 텍셀 액세스 세트의 결과적인 처리(resulting handling)를 허용한다. 일 실시 예에서, 데이터는 TC0 캐시의 캐시 성능을 향상시키기 위해 액세스 세트(set of accesses)에 있는 지역 패턴(locality patterns)에 기초하여, TC0 캐시로 구성(organized into)된다. 예를 들어, 데이터는 TC0 텍스쳐 캐시의 데이터 스토어를 구성(constitute)하는 데이터 뱅크에 걸쳐(across) 스위즐 패턴(swizzled pattern)으로 저장될 수 있다. 또한, 함께 액세스 할 가능성이 있는 데이터를 캐시 라인으로 그룹화하여 개별 캐시 라인의 수를 줄임으로써, 필요한 개별 태그 검색 수(the number of distinct tag lookups needed)를 줄일 수 있다. 본 명세서에 개시된 예시적인 캐시 아키텍처는 사이클 당 4개까지의 태그-룩업(tag-lookup)을 필요로 하고 단지 16개의 데이터 뱅크만을 이용한다. 그러나, 다른 수의 태그 룩업들 및 데이터 뱅크들이 변경 실시 예(alternative embodiment)들에서 이용 될 수 있다.
도 1c를 참조하면, 추가적으로 또는 다르게는, 실시 예는 ASTC(as Adaptive Scalable Texture Compression) 코덱과 같이 가변 크기 블록(variable sized blocks)을 이용하는 텍스쳐 압축 방식(texture compression schemes)을 가능하게 한다(facilitate). 일 실시 예에서, 이는 ASTC에서와 같이 가변 크기 블록의 사용을 지원 및 버퍼링하기 위해, CLS를 제어하는 제어 특성을 갖는 제어 블록(192) 및 다른 크기 블록들로부터 압축 해제된 데이터를 결합(coalesce)하는 CLS(coalesce) 모듈, 압축 해제기(decompressor) 및 리드 포인터(read pointers)를 포함하며, ASTC는 이하에서 보다 상세히 기술된다.
과거의 텍스쳐 압축 방식에서, 각 압축된 블록은 고정된 2의 거듭제곱(fixed power-of-two) 텍셀들을 포함하고, 고정된 블록 크기에 저장된다. 예를 들어, 전술 한 텍스처 압축 방식은 2B 텍셀의 4x4 블록을 8B로 압축하고, 일정한 압축 계수(constant compression factor) 4를 산출한다. 각 차원에서 텍셀 내에 2의 거듭 제곱 압축 크기 및 2의 거듭 제곱 블록 크기인 경우, 2D 텍스쳐 내의 텍셀(u, v)을 포함하는 압축 블록의 시작 어드레스(starting address)의 계산은 u, v 상의 특정 시프트 연산(certain shift operations) 및 텍스쳐의 베이스 어드레스만을 수반한다. 또한, 일 실시 예에 따르면, 압축 해제된 TC0 내의 캐시 라인은 단일의 또는 소규모(single or small)의 2의 거듭 제곱 압축 블록 전체(entirety)를 포함할 수 있다. 일 실시 예에서, 압축 블록(compressed block)은 압축 해제 캐시(decompressed cache) 내에서 다수 캐시 라인(multiple cache-lines)에 걸쳐 분할되지 않는다.
ASTC 텍스처 압축 방식은 4x4에서 12x12 텍셀 범위의 가변 크기 블록(variable sized block)을 16B로 압축하여 요구되는 품질에 따라 압축 인자의 범위를 지원하는 이점을 획득(capture) 할 수 있다. 이러한 가변 크기 블록으로, 어드레스 연산은 보다 복잡해질 수 있다. 예를 들면, 7x5 블록은 7로 나누고 원하는 텍셀을 포함하는 압축 블록의 메모리 어드레스를 연산한다. 이러한 나누기(divisions)는 상당한 영역 및 전력을 소비할 수 있다.
일 실시 예에서, TC0 캐시는 텍셀 어드레스가 텍셀의 비압축(u, v) 좌표를 이용하여 식별되는 비압축 도메인에서 동작한다. TC0 캐시에서의 미스에 응답하여, 누락된 비압축 캐시 라인의 압축된 블록 어드레스는 어드레스 연산 유닛(ADDRESS COMPUTE unit)에서 연산된다.
일 실시 예에서, FIFO1은 성능을 향상시키기 위한 크기일 수 있다. ASTC 또는 다른 압축된 블록이 L1C로부터 요청되면 L1C는 2 이상의 압축된 블록(예를 들어, 다수의 블록)의 세트를 포함하는 캐시 라인을 리턴한다. 예를 들어, ASTC 압축 블록이 16B이고 캐시 라인이 64B 인 경우, L1C는 4개의 압축 블록을 리턴한다. 이러한 블록 중 하나 이상이 FIFO1에 유지(retain)된다. 텍스쳐 요청에서 액세스 지역(access of locality)이 주어진 경우, TD는 FIFO1 내에 상주(resident)하는 동안, 작은 일시적 윈도우(small temporal window) 내에서 이러한 블록 중 일부를 요구할 수 있다. 이러한 경우, TD는 그렇지 않은 경우 해야 했던 다른 요청을 L1C에 하지 않고 직접 FIFO1에서 이를 검색(retrieve) 할 수 있다. 따라서, L1C에 접근하기 위해 요구되는 전력을 절약하고, 잠재적으로 성능을 향상시킬 수 있다.
일 실시 예에서, FIFO2는 성능을 향상시키기 위해 크기가 정해진다. 블록이 TD에 의해 압축 해제 될 때, 그것은 압축 해제된 텍셀을 생성한다. 그러나, 현재 캐시 라인의 텍셀들을 채우는데 블록 내의 많은 텍셀들이 즉시 필요하지 않을 수 있다. 그러나, 이러한 텍셀들을 요구하는 TC0로부터 다른 캐시 라인 미스 요청이 있을 수 있다. 일 실시 예에서, 압축 해제된 텍셀들은 스트리밍 FIFO2에 저장(deposited into)된다. 만약 후속하는 TC0 캐시 라인 채움(subsequent TC0 cache-line fills)을 만족시키기 위해 실제로 필요한 텍셀이 있다면, 스트리밍 FlFO2에서 검색되어 TD에 의한 전체 압축 블록의 또 다른 압축 해제를 피할 수 있다.
일 실시 예에서, FIFO1 및 FIFO2의 스트리밍 FIFO는 선입 선출 교체 정책(first-in first-out replacement policy)을 이용하여 추가적인 대체 정책 관리 상태에 대한 필요(need for additional replacement policy management state)를 제거한다. 일 실시 예에서, 스트리밍 FIFO는 또한 모든 이전의 참조가 처리된 후에 FIFO의 장래 상태(future state)를 나타내는 태그를 갖는다. 일 실시 예에서, 스트리밍 FIFO의 일 측면은 텍스처 어드레스 스트림에서 단기간 공간적 위치(short-term spatial locality)를 획득(capture)하는 것이다. 일 실시 예에서, 제어 하드웨어(control hardware)는 FIFO1의 필요한 압축 블록 또는 FIFO2의 텍셀 그룹이 존재 하는지를 탐지(detect)하고 각각 FIFO1 또는 FIFO2로부터 이들에 액세스하기 위한 리드 포인터(read pointers)를 연산한다. 즉, 리드 포인터는 제 1 리드 포인터를 이용하여 제 1 버퍼를 갖는 개별 엔트리(individual entries)를 선택하고 제 2 리드 포인터를 사용하여 제 2 버퍼 내의 개별 엔트리를 선택하도록 제어된다. 읽기 포인터를 제어하는 기능(capability to control the read pointers)은 L1C에 액세스하거나 TD의 블록의 압축 해제와 관련하여 잠재적인 절약(potential savings)을 허용한다.
도 2는 일 실시 예에 따른 방법을 나타내는 흐름도이다. 압축된 텍셀 데이터는 제 1 텍스처 캐시 (예를 들어, L1C 캐시)에 저장된다. 압축 해제된 텍셀 데이터는 제 2 텍스처 캐시 (예를 들어, TC0 캐시)에 저장된다(210). 요청은 픽셀 그룹에 대한 텍셀 데이터에 대해 수신된다(215). 액세스는 요청된 텍셀 데이터에 대한 제 1 또는 제 2 텍스처 캐시에 스케줄링 된다(220).
도 3은 일 실시 예에 따른 버퍼링의 양상을 강조하는 방법을 도시하는 흐름도이다. 제 1 그룹의 픽셀에 대한 텍셀 데이터에 대한 제 1 요청이 수신된다(305). 요청된 압축 텍셀 데이터는 제 1 텍스처 캐시(예를 들어, L1C 캐시)로부터 페치(fetch)된다 (310). 페치된 압축 텍셀 데이터는 제 1 버퍼에 버퍼링 된다 (315). 예를 들어, 제 1 버퍼는 FIFO1을 포함 할 수 있다. 제 1 버퍼의 출력은 압축 텍셀 데이터(compressed texel data)의 하나 이상의 블록의 압축 해제를 위해 텍스쳐 압축 해제기(texture decompressor)에 제공된다 (320). 결과적으로 압축 해제된 텍셀 데이터는 제 2 버퍼에 버퍼링 된다(325). 예를 들어, 제 2 버퍼는 FIFO2를 포함 할 수 있다. 제 2 버퍼의 출력은 제 2 텍스처 캐시(예를 들면, TC0)에 제공된다(330). 일부 실시 예에서, 제 1 버퍼에 저장된 압축 텍셀 데이터의 하나 이상의 블록은 요청된 텍셀 데이터에 부가적으로 제 2 텍셀 데이터를 포함한다. 일부 실시 예에서, 제 2 버퍼에 저장된 하나 이상의 비압축 텍셀 그룹은 요청된 텍셀 데이터에 부가적으로 제 3 비압축 텍셀 데이터를 포함한다. 이 제 3 텍셀 데이터는 이후 트랜잭션에서 TC0 캐시에 의해 요청된 텍셀 데이터의 비압축 캐시 라인의 일부을 구성하는데 이용될 수 있다.
도 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 요청들은 많은 경우(in many cases) 4B 디워드 내에 함께 배치(co-located) 될 수 있다.
도 4는 0...9 A...F의 16 진수로 넘버링된 16개의 뱅크를 통해 텍셀 데이터가 어떻게 배치되는지(laid out)의 예를 도시한다. 16개의 텍셀 (0...9 A...F) 그룹은 태그 스토어에 단일 태그(single tag)가 있는 캐시 라인에 포함된다. 4 x 4 스퀘어 텍셀 세트(4x4 square set of texels)(16 진수 0...9 A...F가 포함된 스퀘어로 도시)는 CL0에서 CL15까지 번호가 매겨진 각 캐시 라인에 매핑된다. 예시를 위해, 텍셀 내의 숫자는 데이터를 보유하는 뱅크를 나타낸다. 이 예에서, 캐시 라인에 대한 태그는 TB<num>으로 표시된 태그 뱅크에 포함된다. 설명을 위해 볼드(bold) 윤곽선이 있는 텍셀 스퀘어는 픽셀의 필터링된 텍스처 값을 계산하는데 이용되는 텍셀을 도시한다 (예를 들면, 픽셀 P0에 대한 CL0 TB0의 텍셀 0, 1, 2 및 3, 픽셀 P1에 대한 CL4 TB0의 텍셀 A 및 B와 CL5 TB1의 텍셀 0 및 1, 픽셀 P2에 대한 CL2 TB2의 텍셀 6, 7, C 및 D, 픽셀 P2에 대한 CL3 TB3의 텍셀 C, D, E 및 F).
도 4는 텍셀 데이터 크기가 4B 일 때, 캐시 라인이 4개의 태그 뱅크 (TB0, TB1, TB2 및 TB3)에 매핑되는 방법의 예를 도시한다. 이 경우 텍스처는 크기가 각각 4B 인 텍셀의 2 차원(2D) 배열이다. 일 실시 예에서, 드라이버 및 텍스처 압축 해제기는 도시된 바와 같이 데이터를 레이아웃하기 위해 조정(coordinate)된다. 각 캐시 라인에 대한 16개의 스퀘어 각각은 텍셀을 나타내며 텍셀 내의 숫자는 데이터를 보유하는 뱅크를 나타낸다. 일 실시 예에서, 데이터는 Z-순서 또는 모턴 순서로 배치(laid out)되어, 하나 또는 다른 차원에서 지역성(locality)을 이용하는 종래의 레이아웃(layout)과는 대조적으로 2 차원 지역성(locality)을 이용한다. Z-순서 (모턴 순서라고도 함)는 데이터 포인트의 지역성을 보존하면서 다차원 데이터를 매핑하는 펑션(functions)이다.
(P0, P1, P2, P3)로 표시된(labeled) 스퀘어는 텍스쳐 요청으로부터 쿼드의 4개의 픽셀이 텍셀 공간으로 매핑되는 곳을 나타낸다. 텍셀 공간의 스퀘어에 매핑되는 경향이 있지만, 텍셀 공간의 모든 영역에도 매핑될 수 있다. 각 픽셀에 인접한 점선 상자의 텍셀 스퀘어는 필터링된 텍스처 값을 계산하기 위해 바이 리니어 필터링(bilinear filtering) 또는 가중 평균(weighted average)을 수행하는 데 이용되는 텍셀을 나타낸다.
도 4의 예에서, 각 픽셀은 겹치지 않는 4개의 텍셀을 사용하고, 따라서 총 16개의 텍셀이 캐시로부터 페치될 필요가 있다. 이는 드문 경우이지만, 일반적인 TC0 캐시의 동작을 설명하기 위해서 선택되었다.
일 실시 예에서, TC0 캐시의 동작은 캐시 구현에 따라, 텍셀 액세스에 대한 하나 이상의 제약을 고려할 수 있다. 일 실시 예에서, TC0 캐시는 데이터 액세스 동안 각 뱅크로부터 많아야 하나의 고유 텍셀(unique texel)에 액세스하도록 구성된다. 그러나, 도 4의 예에서, 각 픽셀은 특정 뱅크로부터의 텍셀 데이터에 대한 액세스를 필요로 한다. 예를 들어, 픽셀 P2 및 P3은 뱅크 C 및 D에 매핑된 텍셀에 액세스하여, 데이터 액세스 동안 각 뱅크로부터 액세스되는 많아야 하나의 고유 텍셀의 제약으로, 픽셀 P2 및 P3에 대한 액세스는 적어도 2 사이클에 발생한다(occur over at least two cycles). 가능한 제약 조건의 또 다른 예는 하나 이내(no more than one)의 태그 액세스가 태그 뱅크에 만들지는, TC0 캐시에 대한 제약이다.
텍셀 접근에 대한 제약은 AGC에 의해 텍셀 접근 시퀀스를 조직화하는 데 고려될 수 있다. 일 실시 예에서, 도 1b에 도시된 AGC는 쿼드의 액세스를 다수의 세트로 분할하여, 각 세트가 데이터 뱅크 충돌 또는 태그 뱅크 충돌(그 제한이 적용되는 경우)없이 수행 될 수 있도록 한다. 일 예로서, AGC는 도 4의 PO 및 P2에 대한 액세스를 하나의 사이클로 스케줄링 할 수 있는데, 이는 이것이 캐시 라인 CL0 및 CL2에 대한 비 충돌 태그 뱅크 TB0와 TB2 및 PO에 대한 비 충돌 데이터 뱅크 (0, 1, 2, 3)와 P2에 대한 비 충돌 데이터 뱅크 (6, 7, C, D)를 포함하기 때문이다. 유사하게, P1 및 P3에 대한 액세스는 픽셀 P1 및 P3에 대한 비 충돌 태그 뱅크 TB0, TB1 및 TB3와 비 충돌 데이터 뱅크 (A, B, 0, 1) 및 (C, D, E, F)만을 각각 수반(involve)한다.
쿼드의 네 픽셀은 텍스처 공간의 임의의 위치에 맵핑 될 수 있지만, 텍스처 공간에서 가까워지는 경향이 있다. 특히, 적절하게 밉 매핑(mip-mapping)된 표면의 경우, 텍스처 공간에서 쿼드의 픽셀 사이의 거리는 쌍선형 샘플링(bilinear sampling)의 경우 1.5보다 작고 삼선형 샘플링(trilinear sampling)의 경우 밉 레벨(mip-level)이 높거나 낮은 경우 각각 1.0/2.0보다 작은 경향이 있다.
도 5는 일 실시 예에 따라 16개의 텍셀들에 대한 충돌없는 액세스를 도시한다. 도 5는 16개의 모든 텍셀들이 단일 사이클에서 액세스 될 수 있는 단일 쿼드(single quad) 대신에 16개의 텍셀들을 액세스하는 시나리오를 나타낸다. 쿼드의 픽셀들이 텍셀 공간으로 매핑되는 위치들 사이의 텍셀 공간에 수평 및 수직의 분리가 있을 때, 풋 프린트(또는 레이아웃)는 볼드 윤곽선으로 표시된 텍셀의 4x4 세트이다. 스퀘어 P0, P1, P2 및 P3은 텍셀 공간에서 픽셀의 위치를 나타내며, 네 픽셀 모두에 대해 네 개의 인접한 텍셀 세트의 합집합(union)이 텍셀 풋프린트로 차후에 참조되는 4x4 텍셀 세트(볼드 윤곽선이 있는)임을 볼 수 있다.
도 5의 상황에서, 텍셀 풋 프린트 내의 텍셀은 4개의 캐시 라인 상에 분포되고, 이들 캐시 라인은 4개의 개별(distinct) 태그 뱅크에 맵핑된다. 따라서, 태그는 뱅크 충돌 없이 병렬로 액세스 될 수 있다. 특히 볼드 텍셀 스퀘어의 넘버링은 모두 구별된다. 두 개의 볼드 스퀘어가 동일한 데이터 뱅크에 매핑된다는 것을 나타내는 동일한 번호를 갖는 경우는 없다. 따라서 16개의 모든 텍셀은 충돌없이 접근 할 수 있다. 일반적으로 4x4 텍셀 풋 프린트의 위치에 관계없이 16개의 텍셀 모두가 개별 뱅크에 맵핑되며 또한 이 텍셀은 별개의 태그 뱅크에 매핑하는 최대 4개의 캐시 라인에 맵핑한다. 따라서 4x4 텍셀 풋 프린트와 관계없이 충돌없는 액세스가 가능하다. 이 경우, AGC는 텍셀 풋 프린트를 보고, 모든 태그 액세스 및 데이터 뱅크 액세스를 이러한 경우에 단일 주기로 스케줄링한다.
도 6은 바이 리니어 필터링을 수행 할 때 적절하게 밉맵된 텍스처에 대한 텍셀 풋 프린트의 실시 예를 도시한다. 텍셀 공간의 간격이 대략 1.5 텍셀 인 경우, 픽셀은 동일한 텍셀을 공유하는 경향이 있으므로 도 6에서와 같이 텍셀 풋 프린트는 보통(often) 3x3이다. 이 경우 볼드 외곽선이 있는 9개의 텍셀은 서로 다른 숫자를 가지고, 이는 풋 프린트 내의 두 텍셀이 동일한 뱅크에 매칭되는 경우가 없음을 나타낸다.
또한, 9개의 모든 텍셀은 개별 태그 뱅크에 매핑되는 2개의 캐시 라인 중 하나에 속한다. 이전과 마찬가지로 이러한 관찰은 3x3 풋 프린트의 위치에 관계없이 적용된다.
몇몇 경우들에서, 픽셀들은 텍셀 공간에서 왜곡될(warped) 수있다. 예를 들어, 텍셀 풋 프린트는 대각선이거나 수평/수직으로 정렬되지 않을 수 있다. 이러한 경우에도 픽셀 간 간격이 1.5 텍셀보다 작으면 모든 텍셀에 충돌없는 방식으로 액세스 할 수 있다.
도 7은 일 실시 예에 따른 쿼드의 최소 2x2 풋 프린트를 도시한다. 도 7은 텍셀 풋 프린트가 최소 2x2 풋 프린트 9(즉 볼드 윤곽선인 4개의 텍셀)로 감소(reduced)되는 텍셀 공간 내의 작은 영역에 픽셀들이 매핑될 때의 텍셀 풋 프린트를 도시한다. 예를 들어, 삼선형 필터링(trilinear filtering)을 수행 할 때, 상위(upper) (덜 세부적인(less-detailed)) 밉 레벨에서 발생할 수 있다. 이 풋 프린트는 서로 다른 뱅크에 매핑된 4개의 텍셀과 비 충돌 방식으로 처리될(handled) 수 있으며 모든 4개의 텍셀은 단일 캐시 라인에 속할 수 있다.
따라서, 일 실시 예에서, TC0 캐시는 사이클 당 4개의 태그-룩업을 지원한다. 64B의 각 TC0 캐시 라인은 각 32b 너비(wide)인 16개의 뱅크로 매핑된다. 각 뱅크에는 단일 읽기 포트(single read-port)가 있다. 쿼드의 요청이 각 뱅크에 대한 둘 이상의 액세스 또는 네 개 이상의 태그 룩업을 필요로 하는 경우, 쿼드의 요청은 여러 사이클에 걸쳐 분할되어 각 사이클에서 이러한 제약 사항이 충족된다.
또한, 많은 경우에 대해 양호한 성능을 제공하기 위해, 일 실시 예에서 드라이버는 텍스처 데이터를 메모리에 조직화하고, 하드웨어 디컴프레서는 데이터 뱅크 충돌 및 태그-룩업을 최소화하기 위해 TC0 캐시 라인에 데이터를 배열(arrange)한다. 일 실시 예에서, 텍스처 데이터는 캐시 라인이 드라이버에 의해 모턴(Z-) 순서로 엠타일(mtiles)로 조직화되어, 텍셀들의 인접(contiguous) 스퀘어 블록은 최소 수(즉, 기설정된 수보다 작음)의 개별 캐시 라인 및 그에 따른 태그-룩업을 필요로 한다. 따라서, 일 실시 예에서, 텍스쳐가 엠타일 내의 캐시 라인들의 2x2 블록에 매핑하는 쿼드의 네 픽셀을 대신하여 요청하는 한, 태그 룩업이 4개 넘게 필요하지 않다.
일 실시 예에서, TC0 캐시 라인 크기가 64B 인 경우, 공통 2B/텍셀 텍스처 내의 각 캐시 라인은 텍셀의 8x4 블록을 보유(hold)한다. 따라서, 캐시 라인의 2x2 블록은 텍셀의 16x8 블록을 보유한다. 쿼드의 텍셀 풋 프린트는 3x3 텍셀 블록일 수 있다. 적절한 밉 매핑을 사용하면 가장 큰 예상 텍셀 풋 프린트는 텍셀 공간에서 2 텍셀의 픽셀 간 거리를 갖는 45도를 향하는 쿼드에 대한 것이다. 이러한 텍셀 풋 프린트는 캐시라인의 2x2 블록에 포함된 16x8 텍셀 아래에서 (
Figure pat00001
) 3.8x3.8 블록이다. 따라서 많은 경우에 있어서, 뱅크 충돌을 피할 수 있다.
일 실시 예에서, 요청들이 적절히 밉 매핑되지 않은 경우, 원래의 텍스처 요청은 다수의 요청으로 분할된다. 일반적으로, 텍스처 캐시는 16개의 요청을 고효율 방식으로 처리하여 고대역폭(high-bandwidth) 및 높은 전력 효율성(high power efficiency)을 제공하기 위해 이러한 요청의 예상되는 특성을 레버리징(leveragin)한다.
도 8은 일 실시 예에 따른 텍스처 캐시 아키텍처의 일부의 서브 블록을 도시한다. L1C 캐시는 도 6에서는 생략되어있다. 일 실시 예에서, L0 데이터 스토어는 TC0 캐시에 제공된다. 일 실시 예에서, L0 데이터 스토어는 뱅크 당 32 워드 및 워드 당 32b를 갖는 16 뱅크에 대응한다. L0 데이터 읽기(read) 제어 블록 및 L0 데이터 쓰기(write) 제어 블록은 L0 데이터 스토어로부터의 읽기 및 쓰기 데이터를 제어한다. 일 실시 예에서, L0 크로스바는 텍셀 데이터를 출력하는데 이용된다. L0 읽기 레이턴시 FIFO는 AGC로부터 뱅크 어드레스를 수신한다. L0 행 및 쓰기 제어 레이턴시 FIFO는 L0 태그 스토어에서 어드레스된(addressed) 행을 수신한다.
일 실시 예에서, 텍스쳐 어드레스(TA) 서브 유닛 (도 8에 미도시)으로부터의 제 1 입력(801)은 16개까지의 어드레스에 대응한다. 2D 텍스쳐의 16(u, v)의 좌표 및 텍스쳐 베이스 어드레스에 대응하여, 각각의 요청은 16개까지의 텍셀에 대한 것이다. 각 요청에 대한 텍스쳐 베이스 어드레스는 16개의 모든 텍셀에서 공유된다. 각 쿼드는 4개의 픽셀로 구성되며 각 픽셀은 coord u, coord_v인 한 쌍의 좌표인 단위 스퀘어(unit-square)로 배열(arranged)되는 4개의 텍셀들에 액세스한다. 각 쌍에서 coord_u [i] [1]은 래핑 케이스(wrapping cases)를 제외하면 coord_u [i] +1이 될 수 있다. 3 차원 텍스처의 경우, 각 픽셀은 추가 차원을 지정하기 위한 coord_w인 다른 좌표를 필요로 하는 단위 큐브에 배열된(arranged) 8개의 텍셀에 액세스한다.
일 실시 예에서, TA 유닛으로부터의 제 1 입력 패킷상의 나머지 필드들(remaining field)은 입력뿐만 아니라 상태로부터 도출된다(derived). 밉맵된 너비, 높이 및 깊이는 이 요청에 대한 밉 레벨에서의 텍스처 이미지의 디멘전(dimension)이며, 제공된 베이스 어드레스에서 오프셋을 계산하는 데 필요하다. 일 실시 예에서, 텍스처 포맷은 특정 텍셀 크기로 텍스처 이미지의 포맷을 기술한다. 일 실시 예에서, 포맷의 양상들(aspects)은 다운 스트림 TD 서브 유닛에 의해 이용된다. 일 실시 예에서, 두 필드인 nr_samples 및 sample_idx는 멀티 샘플링된 텍스쳐 액세스를 위해 이용된다.
일 실시 예에서, 텍셀 데이터 출력(802)은 각 32b 폭의 16개 텍셀의 2 세트로 이루어진다. 32b보다 큰 텍셀 크기의 경우, 출력의 2의 거듭 제곱(power of two) 세트는 함께 결합되어(ganged up together) 단일 텍셀을 전송하고 16개의 텍셀 집합은 여러 주기에 걸쳐 전달된다.
화살표 (803 및 804)는 L1C 캐시와의 상호 작용을 도시한다. TC0 캐시 미스의 경우, 캐시 라인의 가상 어드레스를 제공하는 L1C 캐시에 대한 요청이 이루어진다. 가상 어드레스가 48b이고 캐시 라인 크기의 log2가 6b이므로 이 어드레스는 42b이다. 이에 따라 L1C는 64B 데이터를 전달한다.
일 실시 예에서, AGC는 16개의 텍셀을 지정하기 위해 총 16 좌표에 대한 쿼드의 네 픽셀에 대한 u, v, w 차원(dimensions)의 2개의 좌표 위치를 수신한다. AGC 출력은 4개까지의 태그 요청과 데이터 어레이로부터 텍셀에 액세스하는데 필요한 크로스바 제어 비트 및 데이터 뱅크로 구성된다.
일 실시 예에서, AGC는 텍스쳐 어드레스 유닛으로부터 16개의 요청을 받아들이고(accepts) TC0 TAG 스토어에서 태그 룩업을 생성한다. 또한 AGC는 16개의 뱅크 각각에 대해 4개의 라인 어드레스 중 하나를 선택하고 각 데이터 뱅크에서 32b의 데이터를 출력 포트로 라우팅하는데 사용되는 제어 비트를 생성한다. 태그는 미스에서 즉시 업데이트되고 미스는 L1C 캐시로 전송된다. L1C에서 데이터가 도착할 때까지 데이터 액세스가 지연된다. 지연된 액세스 요청은 레이턴시 FIFOs에 보유(hold)되고 순서대로 처리된다. 16개의 뱅크는 16개의 텍셀을 대신하여 동시에 읽혀질 수있다. 데이터는 출력 크로스바에서 올바른 텍셀 출력(correct texel output)으로 라우팅된다.
일 실시 예에서, AGC는 이 16 요청을 가장 작은 수의 세트(예를 들면 하나)로 조직화(organizes)하여, 텍셀은 세트 내에서 요청하여 4개 이상의 캐시라인에 액세스하거나, 16 데이터 뱅크 각각으로부터 4B 페치를 한번 넘게 액세스하지 않는다. 일 실시 예에서, AGC는 각 사이클에서 4개까지의 태그를 L0 태그 스토어에 제공한다. L0 TAG 스토어는 LO 행 및 쓰기 제어 레이턴시 FIFO에 기록(write)한다. 일 실시 예에서, CLS(Coalescer) 및 CLS 제어부(controller)는 코어레싱(coalescing) 압축 해제 블록을 표준 폼 크기로 지원하기 위해 제공된다.
일 실시 예에서, 데이터 쓰기 제어 블록(Data Write Control block)은 코어레서(Coalescer)로부터 들어오는 데이터를 받아들이고 TC0 데이터 어레이를 채운다. LO 데이터 읽기 제어 블록은 AGC에의해 기록된 RD L0 FIFO를 팝핑하고 4개까지의 캐시 라인을 읽고 이들 4개의 캐시 라인에서 16개까지의 텍셀 데이터를 선택한다. TC0는 텍스처 필터에 16개까지의 텍셀을 전달한다.
일 실시 예에서, TC0 캐시 파라미터는 2KB 크기, 64B 라인 크기, 32 라인, 4 세트, 8 웨이 세트 연과(8 way set-associative)이다. 일 실시 예에서, TC0 캐시는 총 40 + 28 = 68b에 대해 2D 텍스처에 대해 각각 14b인 40b 기본 어드레스와 u, v 좌표의 연속(concatenation)을 이용하여 어드레스된다.
그러나 3D 텍스쳐는 각각 11b인 3개의 좌표를 가지므로, 텍셀 공간에서 40+33=73b의 어드레스 폭의 지원을 필요로 한다. 그러나 씨타일(ctile)의 최소 텍셀 블록이 2x2xl이고 각 축(axis)의 씨타일(ctile)에 있는 텍셀 수는 2의 거듭 제곱(power of 2)이므로, u, v 좌표는 항상 짝수(even)가 된다. u, v 좌표의 LSB 1 비트를 태그로 저장할 필요는 없다. 이에 따라 태그 비트가 71b 남는다. 매 사이클마다 총 4개의 들어오는 태그가 있으며, 모두 특정 태그 뱅크로 향할 수 있다. 각 태그 뱅크에는 4개까지의 들어오는 태그에서 태그 매칭을 지원하는데 충분한 비교자(comparators) 및 기타 리소스(resources)가 있다. 들어오는 각 7lb 태그 어드레스는 8개의 7lb 태그 모두와 병렬로 비교된다. 일치하면 5b 라인 어드레스가 읽기 태그 레이턴시 FIFO로 보내진다(sent down).
미스시, 미스 어드레스는 L1C 캐시에 전송된다. 일 실시 예에서, 4개의 캐시 라인 요청들 각각은 사이클에서 생성되는 최대 4 회의 미스로 리딩(leading)하는 캐시를 미스할 수 있다. 미스시에는 해당 뱅크에 대한 대응하는 data_ram_line_miss 비트가 설정된다. 세트의 8개 라인 중 하나가 교체를 위해 선택되고 해당 태그는 새 태그로 덮어 쓴다(over-written). 어떤 상황에서는 대체된 태그에 대한 보류중인(pending) 요청이 있을 수 있지만, 이 요청에 대한 라인 어드레스에 대한 룩업(lookup)이 이미 수행되었으므로, 이는 첫 번째 사용 직전(immediately before)에 그리고 그러므로 어떤 보류 중인 요청 후에 캐시 라인을 덮어쓸 수 있음을 의미한다. 스트리밍 캐시 구성(organization)을 사용하면 데이터 RAM에서 대응되는 데이터가 읽히기 전에 태그를 덮어 쓸 수 있다.
일 실시 예에서, 지역 기반 대체 정책(locality-based replacement policy)은 텍스처 액세스에서 공간적 지역성을 최대로 이용하기 위해 채택된다(adopted). 입력 71b 태그가 캐시 세트 내의 태그와 비교 될 때, 차이가 좌표 성분(coordinate components)의 하위 비트에만 있는지가 또한 결정된다. 희생(victim)은 처음에는 상위 미스 태그(high order miss tags)에서 선택된다. 상위 미스 태그가 없는 경우 희생(victim)은 하위 미스 태그(low order miss tags) 중에서 선택된다. 일 실시 예에서, 랜덤 선택은 동일한 우선 순위 그룹에서 사용된다. 하위 미스(low order miss)는 다음 기준(following criteria)에 의해 탐지(detected)된다. 베이스 어드레스에 차이가 있으면 상위 미스(high order miss)이다. 그렇지 않으면 슬라이스 구성의 3D 텍스처, 2D 텍스처의 경우 : 차이가 각 u, v 좌표 요소의 LSB 6 비트에만 있는 경우 하위 미스(low order miss)이다. 3D 블록 구성(organization)의 3D 텍스처의 경우 : u, v, w 좌표 구성 요소 각각의 LSB 4 비트에만 차이가 있는 경우, 하위 미스(low order miss)이다. 그렇지 않으면 상위 미스(high order miss)이다.
도 8에 도시된 바와 같이, 일 실시 예에서, STREAMING FIFO 1 (그것이 L1 캐시로부터 데이터를 수신하고 있음을 나타내는 LSF)은 L1C로부터 전달된 잠재적으로 압축된 캐시 라인을 보유(hold)한다. TD는 압축된 텍셀 블록을 압축 해제된 캐시 라인으로 압축 해제한다. STREAMING FIFO 2(압축 해제 기로부터 데이터를 수신 중임을 나타내는 DSF)는 압축 해제된 캐시 라인을 보유한다. TC0는 64B 캐시 라인으로 구성된(organized) 압축 해제 텍셀들을 보유(hold)하고 있으며, 각 4B 세그먼트는 16개의 데이터 뱅크에 걸쳐 저장된 전체 캐시 라인과 별도의 데이터 뱅크에 저장된다.
일 실시 예에서, 각각의 디코딩된 RGBA ASTC 텍셀은 4열 2행을 갖는 4x2 블록으로 구성된 볼드 8개의 비 압축 텍셀에 TC0 캐시 라인 64B를 허용하는 8바이트의 공간(각 컴포넌트에 대해 부동 소수점(floating point) 16)을 차지 (occupy)한다. 압축된 8B ASTC 블록 각각은 5x5 압축 텍셀을 포함한다. 미스시 TC는 4Cx2R 비 압축 텍셀(4열, 2행)의 그리드를 요청한다. 4Cx2R 그리드는 비압축 그리드가 압축된 AS'TC 그리드에 매핑되는 방식에 따라, 다수의(1-4) 압축된 ASTC 블록에 매핑될 수 있다.
일 실시 예에서, CLS 및 연관된(associated) 제어 특성은 L0 데이터 스토어에 로딩될 수 있는 비 압축 텍셀 데이터의 정렬된(aligned) 블록을 생성하는데 사용된다. 이는 ASTC에있는 2의 거듭제곱이 아닌 블록 크기 디멘전(dimension)에 유용하다. 다른 압축 방식의 경우 압축 해제 계수(decompression factor)는 작은 2의 거듭 제곱이고 압축된 각 블록은 64B 캐시 라인으로 쉽게 확장된다. 즉, 작은 2의 거듭제곱 세트의 압축된 블록을 압축 해제하면 L0 데이터 스토어에 직접 로드될 수 있는 압축되지 않은 텍셀 데이터의 정렬된 64B가 생성된다. 일 실시 예에서, 압축 해제기 및 LSF 제어부(DLC) 제어부는 다중(가변 크기) ASTC 블록을 압축 해제하여 64B 라인에서 압축 해제된 4x4 텍셀 블록을 생성한다. 추가 조정(additional coordination)은 FIFO 1 및 FIFO 2로의 읽기 포인터의 제어를 통해 제공된다.
일 예로서, 적절한 조정(coordination) 및 재사용(reuse)없이 ASTC 블록이 압축 해제되고 이용되는 경우 전력 및 대역폭이 어떻게 낭비될 수 있는지를 고려한다. 4B의 공칭 텍셀 크기(nominal texel size)는 L0 데이터 스토어의 64B 라인에 대한 4x4 블록을 의미한다. ASTC 2의 거듭제곱이 아닌(non-power-of-two) 블록은 L0 데이터 스토어 캐시 라인의 4x4 비 압축 블록에 정렬되지 않으므로 각 블록은 총 6*6*4=144 텍셀에 대해 4 블록까지의 (예 : 6x6)의 압축 해제를 필요로 한다. 이러한 텍셀 중 16개만이 4x4 블록에 필요하다. 그러므로, 144-16=128까지의 텍셀은 버려져(be discarded) 압축 해제기의 전력과 대역폭을 낭비 할 수 있다. 또한, 최악의 경우, 4개의 개별 64B 라인에 이러한 4개의 블록이 있을 수 있어 L1C 액세스 전력과 대역폭을 낭비한다.
그러나, 텍스쳐 액세스 패턴에 상당한 공간적 지역성(substantial spatial locality)이 있다고 가정하자. 따라서 L0 데이터 스토어에서 하나의 4x4 블록을 채우는데(in populating) 사용되지 않는 압축 해제 텍셀이 다른 요청된 근처의 4x4 블록(other requested nearby 4x4 blocks)을 채우기 위해 곧 사용될 수 있다. 유사하게, L1 캐시 라인을 포함하는 4개의 ASTC 블록은 인접한 4x4 블록에 대해 재사용 될 가능성이 있다. 따라서, 압축된 L1 캐시 라인 및 압축 해제된 ASTC 블록을 캐시(cache)하는 2개의 작은 버퍼(FIFO1 및 FIFO2)는 L1C로부터 페치된 캐시-라인 블록의 수 및 사용되지 않는 압축 해제된 텍셀의 수를 감소시키는 데 효과적 일 수 있다.
스트리밍 FIFO에서, 가장 오래된 기록된 라인(the oldest written line)은 항상 교체(replacement)를 위해 선택된다. 따라서 쓰기 포인터(write pointer)는 각 쓰기시 랩 어라운드 방식(wrap-around fachion)으로 증가한다(increment). 그러나 읽기는 쓰기 윈도우 내의 어떤 라인에서도 발생할 수 있다. 라인을 여러 번 읽으면 재사용이 가능하다. 리터닝하는 L1C 캐시 라인은 스트리밍 FIFO l에 저장(deposited)된다. 압축 해제기는 스트리밍 FTFO 1에서 16B 블록 (비 ASTC의 경우 더 클 수 있음)을 읽고 압축을 풀어 CLS로 보낸다. CLS는 TD 출력 데이터를 수집(collect)하여 64B 캐시 라인을 구성(construct)하고, 이를 L0 데이터 스토어에 쓴다. 스트리밍 FIFO는 L1C에 대한 초과 요청 트래픽(excess request traffic)을 제거하기 위한 간단한 캐싱 구조이다.
TC는 시간적으로 근접한(in temporal proximity) 다수의 압축 해제된 64B 블록을 생성하기 위해 동일한 압축 블록(same compressed block)이 필요할 수 있기 때문에, 압축 해제기의 입력에서 작은 버퍼(small buffer)를 사용한다.
도 8의 추가적인 양상들(aspects)은 (태그 미스 직렬기(serializer)에 의해 직렬화된(serialized)) 태그 미스에 대한 태그들을 수신하는 태그 미스 FIFO를 포함한다. SMQR(Select Missing Quad Request) 블록은 누락된 요청 중 하나를 선택하고, 텍스쳐 이미지 디스크립터로부터 기본 어드레스 및 관련 정보와 짝을 이루고, 전체 패킷을 CBAG(compressed block address generation) 유닛으로 전달한다. 특히, 각 디멘전(dimension)에 대해 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이므로) 하위(low-order) 4b가 0 인 4개까지의 ASTC 블록 어드레스 세트이다.
일 실시 예에서, 텍스처 압축 해제기(DC)는 사이클 당 미리 정의된 조직들 중 하나에 배치된(laid in) 4개까지의 출력 텍셀을 처리 할 수 있다. 일 실시 예에서, DSF 태그 룩업 및 LSF 태그 룩업은 메모리 액세스 트래픽을 다수의 미리 정의된 텍셀 풋 프린트 패턴으로 분할(split)하고 하나씩 출력(send out)한다. 도 9는 일 실시 예에 따라 DC에 의해 처리될(handle) 수 있는 ASTC 텍셀 풋 프린트 패턴의 예를 도시한다. 하나 또는 두 개의 사이클에서 1, 2, 3 또는 4개의 텍셀을 처리 할 수 있는 다양한 옵션이 설명된 여섯 가지 예가 설명된다.
일 실시 예에서, CLS는 DSF 엔트리 신호에 의해 제어되고, DSF 엔트리 신호는 DSF 태그 룩업을 통해 제어 비트를 차례로 수신한다. 이 제어 비트는 9 뱅크에서 9개까지의 텍셀 쿼드 (4B 텍셀 크기의 경우) 집합을 지정(specify)하지만, 4x4 크기의 블록은 4개의 텍셀 쿼드에서 생성될 수 있다. 추가 제어 비트는 이 쿼드의 어느 부분이 L0 데이터 스토어의 64B 캐시 라인의 어느 부분으로 라우팅되는지 지정한다. CLS는 기설정된(prescribed) 쿼드들을 읽고, 데이터를 라우팅하고, 준비 신호(ready signal)를 수신하면 (예를 들어, CC로부터) 64B 캐시 라인을 L0 데이터 스토어에 기록(write)한다.
일 실시 예에서, DSF 태그 룩업으로부터의 입력 어드레스(iincomin address)는 완전 연관 LSF 태그 룩업(fully-associative LSF Tag lookup)에서 히트 테스트(hit-tested)된다. 미스는 고급(advanced) 쓰기 포인터에서 엔트리를 할당(allocated)받는다. 미스는 L1C로 보내진다. 일 실시 예에서, LSF 제어 FIFO는 스트리밍 FIFO 및 L1C와 압축 해제기 제어부(DLC) 사이의 버퍼로서 기능한다.
도 10은 일 실시 예에 따른 AGC 프로세스 흐름을 도시한다. 텍셀 요청을 구성(organizing)하는 프로세스는 여러 단계 (S0, S1, S2, S3, S4)에 걸쳐 있으며, 여기서 각 단계는 제약 세트(set of constraints)를 충족시키는 더 큰 또는 다른 요청 그룹의 결합을 시도(attempt)한다. 일 실시 예에서, 제약 세트는 각 뱅크로부터의 하나를 초과하지 않는 디워드(dword) 및 4개를 초과하지 않는 개별 캐시 라인을 포함한다. 그러나, 다른 제약이 이용 될 수 있음이 이해될 수 있다. 제 1 단계 (S1)에서, 각 픽셀로부터 발생하는(originating) 요청을 조사하여 이들 요청에 사용되는 캐시 라인 어드레스를 찾는다. 각 캐시 라인 어드레스는 네 개의 요청 각각에 필요한 뱅크 오프셋에 연결된다. 이 프로세스는 도 8에서 버킷으로 개시된다. 따라서 첫 번째 단계 S1에서는 각각 4개의 버킷이 있는 4개의 그룹을 생성하며, 각 버킷에는 4개까지의 텍셀 요청이 포함된다. 후속 단계에서, 각 버킷은 그룹의 다른 요청과의 뱅크 충돌이없는 경우, 더 많은 수의 텍셀 요청을 포함할 수 있다. 일 실시 예에서, 드라이버 소프트웨어는 픽셀과 관련된 요청이 뱅크 충돌을 가질 가능성이 거의 없도록 텍스처 데이터를 구성(organize)한다. 그러나 드물게 뱅크 충돌(bank conflict)이 발생하는 경우, 대응하는 픽셀의 요청이 별도로 처리된다.
제 2 단계 (S2)에서, 버킷들의 쌍들의 2개의 조합(combination)을 고려한다. 예를 들면, 버켓팅 p0 및 p1은 제약(constraint) 즉 각 뱅크로부터 하나를 초과하지 않는 디워드 및 4개를 초과하지 않는 개별 캐시 라인을 여전히 만족하면서(satisfying the constraints), 두 개의 다른 버켓 세트에 있는 p0 및 p1 픽셀들과 관련한 모든 요청이 단일 버킷 세트에 인가(put into)될 수 있는지 여부를 검사(examine)한다. 두 번째 단계가 끝나면, 픽셀이 서로 다르게 쌍을 이루는 두 가지 케이스의 버켓팅이 획득된다.
제 3 단계 (S3)는 두 세트의 페어링(both sets of pairings)이 실패했는지 여부를 검사(examine)하고, 이 경우, p0 및 p3의 제 3 페어링을 버킷화하고 그 버킷이 제약(constraints)을 만족하면 p0&p3에 대한 요청을 전송한다. 그 다음에 pl&p2를 검사한다(미도시). 그러나 가장 일반적인 경우는 1과 2 케이스가 모두 모든 제약 조건을 충족하는 경우이며, 이 경우 프로세스는 "bucketing p0 & p1 & p2 & p3"와 같이 4개의 픽셀을 모두 버켓팅하는 것을 고려한다. 다시 말하면, 본 예의 케이스는 이 버케팅이 성공하고, 4 픽셀의 요청에 대한 모든 요청이 동일 사이클에서 처리될 수 있는 경우이다.
도 10은 단계 S4에 도시된 바와 같이, 픽셀 p0의 요청들이 개별적으로 전송되어야 하는 경우와 같은 다른 경우들도 도시한다. 이 프로세스는 계층적(hierarchical)이며 단일 픽셀의 요청(single pixel's requests)으로 시작하여, 쌍을 구성하고(building up pairs) 마지막으로 태그 및 데이터 뱅크 액세스 요청(requirements)과 관련하여 호환되는(compatible with) 픽셀 쿼드를 구성한다. 프로세스는 4개의 모든 픽셀이 함께 버킷화되는 일반적인 경우에 효율적으로 종료되지만, 다른 경우에 호환되는(compatible) 서브 세트를 신속하게 결정하는 데에도 유용하다.
도 11은 일 실시 예에 따른 3개의 가능한 블록 맵핑의 예에 대한 텍스처 캐시 경계 및 ASTC 블록도를 도시한다. 도 12는 15x15 ASTC 텍스처의 예를 도시한다. 두꺼운 볼드 선들(1105)은 TC0 내의 캐시 라인 경계와, 미스시에 DC에대한 요청을 보여준다. 가는 볼드 선(1110)은 텍스처의 ATSC 5 x 5 블록 경계를 나타낸다. 미스시 TC0는 TD의 ASTC 디코더에서 4x2 텍셀 그리드를 요청한다. 캐시 라인 미스에 따라 세 가지 타입의 요청이 가능하다. 타입 0 블록의 경우 미스가 하나의 ASTC 5x5 블록 내에 매핑된다. TD는 디코딩된 텍셀을 2 사이클(레이턴시가 아닌 처리량(throughput)의 측정)내에 전달한다. 타입 l 블록의 경우 미스가 두 개의 ASTC 5x5 블록에 매핑된다. TD는 2 (블록 B) 또는 3 (블록 A) 사이클에서 블록을 디코딩한다.
블록 A는 제 2 ASTC 블록에서 2 사이클을 필요로 하고(6텍셀을 디코딩해야 하므로), 제 1 ASTC 블록에서 1 사이클(1Cx2R)을 필요로 한다. 블록 B는 두 개의 ASTC 블록에서 각각 1 사이클이 필요하다. 타입 2 블록 미스는 4개의 ASTC 5x5 블록에 매핑된다. A 블록과 B 블록 모두 디코딩을 위해 4 사이클이 필요하다. 일 실시 예에서, 처리량(throughput)을 지원하기 위해 TD는 2Cx2R, 4Cx1R (또는 서브 세트) 및 1Cx2R 블록을 디코딩하는 것이 요구된다.
ASTC를 지원하는 외에도, 일 실시 예에서 스트리밍 FIFO2는 또한 효율적으로 ETC2 압축 포맷을 지원할 수 있다. 결과적으로, 일 실시 예에서, 스트리밍 FIFO2는 8개의 AS'TC 디코딩된 텍셀 또는 16개의 ETC2 디코딩된 텍셀을 저장하기에 충분한 4-l28 비트 폭(wide)의 뱅크를 포함한다. 일 실시 예에서, 뱅크들 각각은 레인(lane) 마스킹 및 상위 64b(upper 64b) 또는 하위 64b(lower 64b)를 기록하는 능력(ability)을 지원한다. ASTC 디코딩된 텍셀에 대한 4x2 블록 내의 텍셀 넘버링의 관점에서, 뱅크 0은 텍셀 0과 1을 보유하고, 뱅크 1은 텍셀 2와 3을 보유한다. 일 실시 예에서, 모든 3 가지 타입의 블록에 대해 뱅크 충돌이 발생하지 않는다.
예시적인 실시 예에서, 디코더는 유연성의 초이스(choice of flexibility)가 있는 경우 4Cx1R 또는 1Cx2R 블록을 디코딩한다. TD는 타입-l 블록 B 케이스에 대해서만 2Cx2R 블록을 디코딩한다.
ASTC 텍스처에 대한 텍스처 압축 해제기(decompressor) 오더링(ordering)에 텍스처 캐시의 예가 기술된다. 타입 0 블록의 경우, 캐시 라인을 채우기 위해 TD로부터 8 텍셀을 요구할 수 있다. TD 유닛에서 디코딩을 요청하는 두 가지 초이스가 있다. 요청은 2개까지의 4CxlR 블록 요청 또는 2개까지의 2Cx2R 블록 요청일 수 있다.
일 실시 예에서, 타입l 블록들에 대해, 두 개의 ASTC 블록들로부터 비 압축 데이터에 대한 요청이 이루어진다. 각 블록으로부터 2-4 텍셀을 요청한다. 일 실시 예에서, 다음 순서가 뒤 따른다:
- 좌측 상부 ASTC 블록으로부터 1Cx2R 또는 2Cx2R 또는 3Cx2R을 요청한다.
일 실시 예에서, lCx2R 요청과 관련하여, 스트리밍 FIFO 2 압축 해제기 출력(Decompressor Output)은 상이한 뱅크들(예를 들어, 텍셀 0은 뱅크 0에 기록되고, 텍셀 4는 뱅크 2에 기록되고, 텍셀 3은 뱅크 1에 기록되고, 텍셀 6은 뱅크 3에 기록된다)에 대한 개별적인(individual) 텍셀들의 레인(lane) 마스킹에 대한 지원을 갖는다.
- 2Cx2R의 경우, 요청은 각각 뱅크 0 및 뱅크 2에 또는 그 반대로 기록된다.
- 우측 상부 ASTC 블록으로부터 1Cx2R 또는 2Cx2R 또는 3Cx2R을 요청한다.
- 항상 요청의 Z- 순서(Z-order)를 따른다.
타입 2 블록의 경우, 텍스처 캐시는 4개의 AST'C 블록으로부터의 데이터를 요청한다. 이러한 경우 Z- 순서가 유지된다.
좌측 상부 ASTC 블록으로부터 1Cx1R 또는 2Cx1R 또는 3Cx IR을 요청한다.
- 우측 상부 ASTC 블록으로부터 1Cx1R 또는 2Cx1R 또는 3Cx1R을 요청한다.
- 좌측 하부 ASTC 블록으로부터 1Cx1R 또는 2Cx1R 또는 3Cx1R을 요청한다.
- 우측 하부 ASTC 블록으로부터 1Cx1R 또는 2Cx1R 또는 3Cx1R을 요청한다.
이러한 경우에, 순서는 정확히 동일하고, 스트리밍 FIFO2에서 레인 마스킹에 대한 지원은 데이터가 효율적으로 기록되도록 한다. 3Cx2R의 지원은 TD에서 추가 버퍼링을 필요로하며 두 개의 3CxlR 요청으로 추가 분할 될 수 있다.
비 압축 도메인 어드레스와 메모리 내의 대응되는 압축 블록의 어드레스 사이의 관계는 ASTC에서 사용되는 2개의 블록 크기의 비-전력에 대해 복잡해질(complicated) 수 있다. 정렬된 64B 블록에 필요한 텍셀 데이터는 여러 압축 블록에서 나올 수 있다.
도 12는 ASTC 5x5: 64b 텍셀을 나타내는 예를 도시한다. 경계는 얇은 볼드 선 (1110)으로 도시된다.
블록은 첫번째 행은 00 .. 02, 마지막 행은 20 .. 22로 얇은 볼드 선으로 넘버링된다. 캐시 라인은 4개의 ASTC 블록 (00, 01, 10, 11)을 포함한다.
텍스처 캐시 블록은 4x2 64b 텍셀이다. 블록 경계는 두꺼운 볼드 선(thick bolded line) (1105)으로 표시된다. 블록은 첫번째 행의 00 .. 03까지와 첫번째 열의 00 부터 50까지는 두꺼운 볼드 선으로 넘버링된다.
제 1 액세스는 0으로 음영 블록으로 도시된 텍셀 풋 프린트를 가지며 제 2 액세스는 1로 빗금친 블록 풋 프린트를 갖는다.
비어있는 캐시/버퍼로부터 시작하여, 제 1 액세스는 (00, 01, 10, 11)의 캐시 라인을 LSF로 가져와(bring) ASTC 얇은 볼드 블록 00을 압축 해제하고, DSF는 비 압축된 두꺼운 볼드 블록 10, 20으로 TC0을 저장한다.
제 2 액세스는 ASTC 블록 00에 대한 DSF 및 ASTC 블록 (01, 10, 11)에 대한 LSF에서 히트한다. 이것은 ASTC 블록 00의 반복된 압축 해제 및 (01, 10, 11)을 포함하는 캐시 라인 ).
이것은 ASTC 블록 00의 반복된 압축 해제와 (01, 10, 11)을 포함하는 캐시 라인에 대해서 L1C에 재액세스를 세이브한다.
압축 해제는 ASTC 블록 (01, 10, 11)에 대해 수행된다. 코어레서(coalescer)는 세 개에 압축해제된 00을 더하여 구성하여 압축되지 않은 두꺼운 볼드 블록(21)을 생성한다. 이렇게 하면 압축되지 않은 두꺼운 볼드 블록(21)이 TC0에 채워진다.
본 발명의 실시 예의 예시적이지만 비 제한적인 애플리케이션은 모바일 환경에 있다. 모바일 환경에서는 L2 캐시를 통해 주 메모리에서 GPU의 텍스처 캐시로 데이터를 전송하는데 필요한 메모리 대역폭과 전력이 제한된다. 저전력 이중 데이터 레이트 랜덤 액세스 메모리(low power double data rate random access memory)(LPDDR)에서 L1 캐시로 디워드(dword)(4B)를 이동하는데 드는 에너지 비용은 부동 소수점 연산의 약 50 배로 추정된다. 따라서, 여기에 개시된 실시 예는 모바일 GPU의 텍스처 유닛에서 높은 압축 인자(high compression factors)를 달성하는 압축 포맷을 가능(facilitate)하게 할 수 있다.
압축 포맷은 데이터 이동 비용 측면에서 에너지 효율적 일 수 있지만, 압축 해제와 관련된 에너지 비용은 중요(significant)할 수 있다. 예를 들어, 예시적인 블록 압축 포맷에서, 압축 해제기는 총 4개의 컬러를 생성하기 위해 2개의 컬러 사이를 선형 보간(linear interpolate)한다. 그런 다음 압축 해제기는 텍셀 어드레스를 기반으로 인덱스를 선택하고 해당 2b 인덱스를 사용하여 네 색상 중 하나를 선택한다. 보간의 에너지 비용이 중요할 수 있다. 인덱싱 메커니즘은 두 가지 레벨의 룩업을 도입(introduce)한다. 더 정교한 다양한 압축 방식(compression scheme)을 지원하는 추세에 따라, 압축 해제 및 데이터 라우팅 에너지 비용이 전체 텍스처 유닛 전력 중 상당 부분을 차지할(account for) 수 있다.
다수의 텍셀 액세스에 대해 이러한 비용 중 일부를 상환(amortize)하기 위해, 텍스처 캐시 아키텍처의 실시 예는 압축 해제기와 어드레싱 로직 사이에 레벨 0 (TC0) 캐시를 삽입(interpose)한다. TC0 캐시는 텍셀 데이터를 압축된 포멧으로 유지하는 레벨 1 캐시(L1C)와는 달리 압축 해제된 텍셀을 보유한다. 압축 해제의 에너지 비용은 여러 주기에 걸쳐 여러번의 텍셀 액세스에 걸쳐 상환(amortize)된다. 예를 들어, 네 개의 연속된 사이클 동안 4x4 압축 블록에서 4개의 텍셀에 액세스하면, TC0 캐시는 4사이클에 걸쳐 압축되지 않은 텍셀을 보유하고, 압축 해제된 TC0 캐시가 없는 경우 4 회에 비해 압축 해제 비용이 한 번만 발생한다.
2의 거듭제곱이 아닌(non power of two) 블록 디멘젼을 일반적으로 지원하는 전력 및 영역에 기여하는 다른 인자(another factor)는 캐시 라인이 8x4와 같은 2의 거듭제곱 디멘젼을 갖는 비 압축 텍셀의 블록을 포함하지만, 메모리 내의 압축 블록은 7x5와 같이 2의 거듭제곱이 아니게(non-power-of-two) 디멘젼 될 수있다. 그러한 경우에, 압축된 블록의 경계는 캐시-라인에서 2의 거듭제곱 블록의 경계와 정렬(align)되지 않을 수 있다. 이 특정 예에서 8x4를 채우려면 두 개의 7x5 블록 또는 4 7x5 블록이 필요할 수 있다. 결과적으로, 텍스처 압축 해제기는 많은 압축된 블록을 압축 해제하여 캐시 라인의 모든 텍셀을 채워야한다. 예시적인 실시 예들은 2의 거듭 제곱이 아닌 블록 디멘전에 대한 개선된 성능을 지원하기 위해 이용될 수 있다. 많은 동일한 압축 블록(또는 동일한 L1C 캐시 라인의 다른 블록)은 다음 몇 개의 미싱 캐시 라인을 채워야하고, L1C로부터 반복적으로 페치되어야 하므로, 결과적으로 대역폭 및 전력이 낭비된다. 최근 액세스된 압축 블록을 보유 하고있는 스트리밍 FIFO1은 L1C에 대한 액세스를 감소시키는 역할을 수행할 수 있다. 다음 몇 개의 캐시 라인 채우기 요청(next few cache-line fill requests)이 동일한 압축 블록을 필요로 하는 경우, 스트리밍 FIFO 1은 L1C 액세스를 요구하지 않고 이를 TD에 전달한다.
텍스쳐 캐시 아키텍처의 실시 예의 한 양상(aspect)은 텍스쳐 캐시 클라이언트가 레이턴시에 상대적으로 민감하지 않다는 것이다. CPU 레벨 l 캐시에서 태그 액세스와 데이터 액세스는 병렬로 수행되거나 (또는 일부 방식 예측 하드웨어가 사용됨) 캐시 히트 레이턴시를 약 1-4 사이클로 줄인다. 레벨 l 미스가 없는 경우에도 텍스처 유닛의 레이턴시는 예를 들어 LOD(Level of Detail) 연산 및 텍스처 필터링 작업과 관련된 복잡한 어드레싱 로직으로 인해 50 사이클 이상이 될 수 있다. 캐시 미스에 이어 다른 주소로 캐시 히트가 발생하면 CPU 캐시는 관련이 없는 미스 데이터(unrelated miss data)가 다음 메모리 계층 레벨(next memory hierarchy level)로부터 도착하기를 기다리지 않고 즉시 캐시 히트 한 데이터를 전달한다. 이러한 아웃 오브 오더(out-of-order) 또는 히트 언더 미스 데이터 리턴(hit-under-miss data return)은 CPU에서 단일 스레드의 레이턴시를 감소시킬 수 있지만 셰이더 코어 액세스의 벡터 특성 및 그래픽 파이프라인의 전체적인 인 오더(in-order) 특성 때문에 GPU에 상당한 이점(significant benefits)을 제공하지 못한다. 텍스쳐 레이턴시에 셰이더 성능(shader performance)의 상대적인 둔감(relative insensitivity), 텍스쳐 어드레싱 및 필터링에의한 큰 고정 구성 요소(large fixed component) 및 전체적인 그래픽 파이프라인의 인-오더 특성으로 인해, CPU 레벨 1 캐시 구성의 대안(alternatives to the CPU Level 1 cache organization)이 매력적이다.
일 실시 예에서, 텍스처 캐시 아키텍처 (108)에 전송된 모든 어드레스는 순서대로(in-order) 처리된다. 캐시 미스에 이어 캐시 히트가 발생하면, 캐시 미스에 대한 데이터 이후까지 캐시 히트에 대한 데이터전달이 지연된다. 또한, 태그 어레이에서의 히트는 대응하는 데이터가 반드시 캐시에 존재함을 의미하는 것은 아니며, 단지 이전의 모든 참조가 처리되면 그것이 캐시에 존재함을 의미한다. 모든 참조가 전체적으로 순서대로(in-order) 캐시를 통해 스트리밍되는 경우, 이 텍스쳐 캐시의 스트리밍 동작(streaming behavior)은 중요한 이점(important benefits)과 설계 단순화(design simplifications)를 가져온다(leads to). 그래픽 파이프 라인에서 상태 및 작업 순서가 정해진다(ordered). 즉, 수신된 상태(any state that is received)는 이후 작업 요청에만 적용된다. 미스(miss)가 되기 전에 아웃 오브 오더로 히트를 처리하면 데이터에 상태의 적용(application)이 복잡해진다(complicates). 예를 들어, 텍스처 필터링 로직은 이전 상태가 미스에 적용되도록 유지되는 동안, 히트에 적용될 더 새로운 상태를 인식해야 한다. 다른 캐시들에서, 메인 태그 어레이상의 태그 비교(tag compare)가 실패하면, 제어 로직(control logic)은 동일한 캐시 라인상에 이전 미해결된 미스(earling outstanding misses)이 있는지 여부에 대한 체크를 더(futher) 시작한다. 일 실시 예에서, 이 체크는 스트리밍 캐시에서 필요하지 않다.
일 실시 예에서, 그래픽 처리 유닛은 제 1 픽셀 그룹에 대한 텍셀 데이터에 대한 제 1 요청을 수신하는(configured to receive) 제어부; 적어도 요청된 텍셀 데이터를 포함하는 압축 텍셀 데이터의 하나 이상의 블록을 제 1 요청에 응답하여, 제 1 텍스처 캐시로부터 페치된 하나 이상의 압축 텍셀 데이터 블록을 저장하는 제 1 버퍼; 제 1 버퍼에 저장된 압축 텍셀 데이터의 하나 이상의 블록들을 압축 해제하는 텍스처 압축 해제기(texture decompressor); 및 압축 텍셀 데이터의 압축 해제된 하나 이상의 블록을 저장하고 압축 해제된 요청된 텍셀 데이터를 제 2 텍스처 캐시에 출력으로서 제공하는 제 2 버퍼를 포함하고, 제 1 버퍼에 저장된 압축 텍셀 데이터의 하나 이상의 블록은 요청된 텍셀 데이터에 더하여 제 2 텍셀 데이터를 포함한다. 일 실시 예에서, 제 1 버퍼는 제 1 FIFO 버퍼일 수 있고 제 2 버퍼는 제 2 FIFO 버퍼 일 수 있다. 일 실시 예에서, 제 1 버퍼에 저장된 압축 텍셀 데이터의 하나 이상의 블록은 요청된 텍셀 데이터에 더하여 제 2 텍셀 데이터를 포함할 수 있다. 일 실시 예에서, 제 1 요청의 하나 이상의 블록 중 적어도 일부(at least a portion)는 제 2 픽셀 그룹의 적어도 일부에 대응하고, 제 2 픽셀 그룹에 대한 텍셀 데이터에 대한 제 2 요청을 수신(configured to receive)할 수 있는 제어부; 및 제 2 요청에 응답하여 제 1 캐시로부터의 제 2 페치없이 하나 이상의 블록의 일부를 텍스쳐 압축 해제기에 제공하는 제 1 버퍼가 있다. 일 실시 예에서, 제 2 요청의 적어도 하나의 텍셀은 제 1 요청 처리로부터(from processing the first request) 제 2 버퍼에 저장된 압축 해제된 텍셀 데이터에 대응하며, 제 2 픽셀 그룹에 대한 텍셀 데이터에 대한 제 2 요청을 수신하는(configured to receive) 제어부; 및 제 2 요청에 응답하여, 제 1 버퍼로부터의 제 2 압축 해제 없이 제 2 요청의 적어도 하나의 텍셀을 제 2 텍스처 캐시에 제공하는(configured to provide) 제 1 버퍼가 있다. 일 실시 예에서, 제 1 텍스처 캐시는 2의 거듭제곱이 아닌(non-power-of-two) 블록 크기를 저장(configured to store)할 수 있다. 일 실시 예에서, 제 2 텍스처 캐시는 2의 거듭제곱(power-of-two) 블록 크기를 저장(configured to store)할 수 있다. 일 실시 예에서, 코어레서(coalescer) 유닛은 제 2 텍스쳐 캐시에 저장되기 전에 압축 해제되는 텍스쳐 데이터를 결합(coalesce)하기 위해 포함될 수 있다. 일 실시 예에서, 제 1 텍스처 캐시는 ASTC (Adaptive Scalable Texture Compression) 코덱에 따라 블록 크기를 저장한다. 일 실시 예에서, 제어부는 제 1 버퍼의 제 1 리드 포인터(read pointer)를 제어하여 제 1 버퍼 내의 개별 엔트리를 선택하고, 제 2 버퍼의 제 2 리드 포인터를 제어하여 제 2 버퍼 내의 개별 엔트리를 선택할 수 있다.
일 실시 예에서, 그래픽 처리 유닛을 동작시키는 방법의 예는 제 1 픽셀 그룹에 대한 텍셀 데이터에 대한 제 1 요청을 수신하는 단계; 요청된 압축 텍셀 데이터를 제 1 텍스처 캐시로부터 페칭하는 단계; 페치된 압축 텍셀 데이터를 제 1 버퍼에 버퍼링하는 단계; 제 1 버퍼의 출력을 텍스처 압축 해제기에 제공하고 압축된 텍셀 데이터의 하나 이상의 블록들을 압축 해제하는 단계; 압축 해제된 텍셀 데이터를 제 2 버퍼에 버퍼링하는 단계; 및 제 2 버퍼의 출력을 제 2 텍스처 캐시에 제공하는 단계;를 포함하고, 제 1 버퍼에 저장된 압축 텍셀 데이터의 하나 이상의 블록은 요청된 텍셀 데이터에 더하여 제 2 텍셀 데이터를 포함한다. 방법의 일 실시 예에서, 제 1 버퍼는 제 1 FIFO 버퍼이고 제 2 버퍼는 제 2 FIFO 버퍼일 수 있다. 일 실시 예에서, 제 1 버퍼에 저장된 압축 텍셀 데이터의 하나 이상의 블록은 요청된 텍셀 데이터에 더하여 제 2 텍셀 데이터를 포함한다. 하나의 특정 실시 예에서(in one particular embodiment), 제 1 버퍼에 대한 리드 포인터는 텍셀 데이터에 대한 하나 이상의 요청을 서비스하기 위해 제 1 버퍼에서 텍셀 데이터를 재사용하도록 선택된다. 일 실시 예에서, 제 2 버퍼에 대한 리드 포인터는 텍셀 데이터에 대한 하나 이상의 요청을 서비스하기 위해 제 2 버퍼에서 텍셀 데이터를 재사용하도록 선택된다. 일 실시 예는 제 1 텍스처 캐시로부터의 제 2 페치 없이 픽셀들의 제 2 그룹에 대한 텍셀 데이터에 대한 제 2 요청을 적어도 부분적으로 서비스하기 위해 제 1 요청에 대해 페치된 제 1 버퍼에서의 텍셀 데이터 재사용을 포함한다. 일 실시 예에서, 제 1 텍스처 캐시는 2의 거듭제곱이 아닌 블록 크기를 저장(configured to store)한다. 일 실시 예에서, 제 2 캐시는 2의 거듭제곱인 (power-of-two) 블록 크기를 저장(configured to store)한다. 일 실시 예는 제 2 캐시에 저장되기 전에 제 2 버퍼로부터 수신된 압축 해제된 텍스처 데이터의 결합(coalescing)하는 단계를 더 포함한다. 하나의 특정 실시 예에서(in one particular embodiment), 2의 거듭제곱이 아닌 여러 블록들로부터의 텍셀 데이터가 결합(coalesced)된다.
일 실시 예에서, 그래픽 처리 유닛의 일 예는 압축된 텍셀 데이터를 저장하는(configured to store) 제 1 텍스처 캐시; 제 1 텍스처 캐시로부터 압축 해제된 텍셀 데이터를 저장하는(configured to store) 제 2 텍스처 캐시; 및 픽셀 그룹에 대한 텍셀 데이터에 대한 요청을 수신하고, 텍셀 데이터에 대한 제 1 또는 제 2 텍스처 캐시로의 액세스를 스케줄링하는(configured to) 제어부를 포함한다. 일 실시 예에서, 제어부는, 요청된 텍셀 데이터에 대한 캐시 히트 또는 캐시 미스가 제 2 텍스처 캐시에 있는지 여부를 결정하고; 캐시 미스의 결정에 응답하여 요청된 텍셀 데이터에 대한 제 1 텍스처 캐시에 액세스하고; 캐시 히트의 결정에 응답하여 요청된 텍셀 데이터에 대한 제 2 텍스처 캐시에 액세스한다. 일 실시 예에서, 데이터는 액세스들의 세트에 있는 지역 패턴들(locality patterns)에 기초하여 제 2 텍스처 캐시로 조직화(organized into)된다. 일 실시 예에서, 제 2 텍스처 캐시는 텍셀들의 인접한 2 차원 블록들(contiguous two-dimensional blocks)에 대응하는 모턴(Morton) 순서로 조직화된(organized) 캐시 라인들로 그룹화된 텍셀 데이터를 갖는다. 일 실시 예에서, 제어부는 요청의 텍셀 어드레스 세트를 적어도 하나의 비 충돌 메모리 액세스의 시퀀스로 분할한다(configured to partition). 일 실시 예에서, 적어도 하나의 비 충돌 메모리 액세스는 태그 충돌 또는 데이터 뱅크 충돌을 갖지 않는다. 일 실시 예에서, 제어부는 또한 뱅크당 다수의 디워드(dwords) 또는 다수의 별개의 캐시 라인들 중 적어도 하나에 기초한 제약들의 세트를 만족하는 텍셀 요청들을 결합한다(configured to combine). 일 실시 예에서, 제어부는 픽셀 그룹의 각 픽셀로부터 시작하는(originating) 텍셀 요청에 필요한 캐시 라인 어드레스를 찾고(find); 각 뱅크로부터 하나를 넘지 않는 디워드(dword) 및 4개를 넘지 않는 개별 캐시 라인의 제약을 만족하는 텍셀 요청들을 결합한다. 일 실시 예에서, 제 2 텍스처 캐시는 4 웨이 뱅킹 태그 룩업 및 16 웨이 뱅킹 데이터 스토어를 갖는다. 일 실시 예에서, 제 2 텍스처 캐시 내의 텍셀들의 레이아웃은 텍셀 풋 프린트 내의 쿼드 텍셀들이 개별 뱅크 상에 있음을 확실히 할 수 있도록(to ensure) 선택된다.
일 실시 예에서, 그래픽 처리 유닛을 동작시키는 방법의 예는 압축된 텍셀 데이터를 제 1 텍스처 캐시에 저장하는 단계; 제 1 텍스처 캐시로부터 압축 해제된 텍셀 데이터를 제 2 텍스처 캐시에 저장하는 단계; 픽셀 그룹에 대한 텍셀 데이터에 대한 요청을 수신하는 단계, 및 텍셀 데이터에 대한 제 1 또는 제 2 텍스처 캐시에 대한 액세스를 스케줄링하는 단계를 포함한다. 일 실시 예에서, 스케줄링하는 단계는 제 2 텍셀 캐시 내의 요청된 텍셀 데이터에 대한 캐시 히트 또는 캐시 미스가 있는지 여부를 결정하는 단계; 캐시 미스의 결정에 응답하여 요청된 텍셀 데이터에 대한 제 1 텍스쳐 캐시에 액세스하는 단계; 및 캐시 히트의 결정에 응답하여 요청된 텍셀 데이터에 대한 제 2 텍스쳐 캐시에 액세스하는 단계를 포함한다. 일 실시 예는 텍셀의 인접한 2 차원 블록(two-dimensional block)이 기설정된 수의 개별 캐시 라인 및 태그 룩업을 필요로하지 않도록, 캐시 라인이 모턴 순서(Morton order)로 조직화된(organized) 타일로 제 2 텍스쳐 캐시 내의 텍셀 데이터를 조직화하는 단계를 더 포함한다. 일 실시 예는 비 충돌 액세스 세트의 세트로(into a set of non-conflicting sets of accesses) 요청의 텍셀 어드레스의 세트를(set of texel addresses of the request) 분할(partitioning)하는 단계를 더 포함한다. 일 실시 예에서, 비 충돌 액세스 세트(non-conflicting sets of accesses)는 태그 충돌 또는 데이터 뱅크 충돌을 갖지 않는다(do not have). 일 실시 예는 뱅크당 다수의 디워드(dwords) 또는 다수의 별개의 캐시 라인들 중 적어도 하나에 기초한 제약들의 세트를 만족하는 텍셀 요청들을 결합하는 단계를 더 포함한다. 일 실시 예에서, 텍셀 요청들을 결합하는 단계는 각 뱅크로부터 하나를 넘지 않는 디워드(dword) 및 4개를 넘지 않는 개별 캐시 라인의 제약을 만족하는 텍셀 요청들을 결합하는 단계를 포함한다. 일 실시 예에서, 제 2 텍스처 캐시는 4 웨이 뱅킹 태그 룩업 및 16 웨이 뱅킹 데이터 스토어를 갖는다. 일 실시 예에서, 제 2 텍스처 캐시 내의 텍셀들의 레이아웃은 텍셀 풋 프린트 내의 쿼드 텍셀들이 개별 뱅크 상에 있음을 확실히 할 수 있도록(to ensure) 선택된다. 일 실시 예에서, 데이터는 액세스들의 세트에 있는 지역 패턴들(locality patterns)에 기초하여 제 2 텍스처 캐시로 조직화(organized into)된다.
본 발명은 특정 실시 예와 관련하여 설명되었지만, 본 발명을 설명된 실시 예들로 한정하려는 의도는 아니라는 것이 이해될 수 있다. 반대로, 첨부된 청구 범위에 의해 한정된 본 발명의 스피릿(spirit) 및 범위(scope) 내에 포함될 수 있는 대안(alternatives), 수정(modifications) 및 등가물(equivalents)을 포함할 수 있다. 실시 예들은 이들 특정 세부 사항(these specific details)의 일부 또는 전부 없이 실시될 수 있다. 또한, 불필요하게 본 발명을 모호하게 하는 것을 피하기 위해 공지된 특징들이 상세히 설명되지 않았을 수 있다. 본 발명에 따르면, 구성 요소(components), 처리 단계(process steps) 및/또는 데이터 구조(data structures)는 다양한 타입의 운영 체제(operating systems), 프로그래밍 언어, 컴퓨팅 플랫폼, 컴퓨터 프로그램 및/또는 컴퓨팅 디바이스를 사용하여 구현될 수 있다. 또한, 당업자는 하드 와이어 디바이스(hardwired devices), FPGA(field programmable gate arrays), ASICs(application specific integrated circuits) 등과 같은 디바이스가 본 명세서에 개시된 발명 개념의 범위 및 스피릿을 벗어나지 않고(without departing from) 사용될 수 있음을 알 수 있다. 본 발명은 또한 메모리 디바이스와 같은 컴퓨터 판독 가능(readable) 매체상에 저장된 컴퓨터 명령어 세트(a set of computer instructions)로서 명백히(tangibly) 구현 될 수 있다.

Claims (20)

  1. 압축된 텍셀 데이터를 저장하는 제 1 텍스처 캐시;
    상기 제 1 텍스처 캐시로부터 압축 해제된 텍셀 데이터를 저장하는 제 2 텍스처 캐시; 및
    픽셀 그룹(group of pixels)의 텍셀 데이터에 대한 요청을 수신하고, 상기 요청된 텍셀 데이터에 대한 상기 제 1 텍스처 캐시 또는 상기 제 2 텍스처 캐시에 대한 액세스를 스케줄링하는 제어부를 포함하는 그래픽 처리 유닛.
  2. 제 1 항에 있어서,
    상기 제어부는,
    상기 제2 텍스쳐 캐시에서, 상기 요청된 텍셀 데이터에 대한 캐시 히트 또는 캐시 미스가 있는지 결정하고,
    캐시 미스의 결정에 응답하여 상기 요청된 텍셀 데이터에 대한 상기 제 1 텍스쳐 캐시에 액세스하고,
    캐시 히트의 결정에 응답하여 상기 요청된 텍셀 데이터에 대한 상기 제 2 텍스쳐 캐시에 액세스하는 그래픽 처리 유닛.
  3. 제 1 항에 있어서,
    데이터가 액세스들의 세트에 있는 지역 패턴들(locality patterns)에 기초하여 상기 제 2 텍스쳐 캐시로 조직화되는(organized into) 그래픽 처리 유닛.
  4. 제 1 항에 있어서,
    상기 제 2 텍스쳐 캐시는
    인접한 2차원 텍셀 블록(contiguous two-dimensional block of texels)에 대응하는 모턴 순서(Moton order)로 조직화된(organized) 캐시 라인들로 그룹화된 텍셀 데이터를 갖는 그래픽 처리 유닛.
  5. 제 1 항에 있어서,
    상기 제어부는
    상기 요청의 텍셀 어드레스들의 세트를 적어도 하나의 비 충돌(non-conflicting) 메모리 액세스의 시퀀스로 분할(partition)하는 그래픽 처리 유닛.
  6. 제 5 항에 있어서,
    상기 적어도 하나의 비 충돌 메모리 액세스는 태그 충돌 또는 데이터 뱅크 충돌을 갖지 않는 그래픽 처리 유닛
  7. 제 1 항에 있어서,
    상기 제어부는
    뱅크당 다수의 개별 캐시 라인들(distinct cache lines) 또는 다수의 디워드들(dwords) 중 적어도 하나에 기초하여 제약들의 세트(set of constraints)를 만족하는 텍셀 요청들을 결합하는 그래픽 처리 유닛.
  8. 제 7 항에 있어서,
    상기 제어부는
    상기 픽셀 그룹(group of pixels)의 각 픽셀로부터 비롯된(originating) 상기 텍셀 요청들(texel requests)에 대해 요구된 캐시 라인 어드레스를 찾고,
    각 뱅크로부터 네 개 이하의 개별 캐시 라인들(distinct cache lines) 및 하나 이하의 디워드의 제약(constraint)을 만족하는 텍셀 요청들을 결합하는 그래픽 처리 유닛.
  9. 제 1 항에 있어서,
    상기 제 2 텍스쳐 캐시는 4 웨이 뱅크 태그 룩업(4-way banked tag lookup) 및 16 웨이 뱅크 데이터 스토어(16-way banked data store)를 갖는 그래픽 처리 유닛.
  10. 제 1 항에 있어서,
    상기 제 2 텍스쳐 캐시 내의 텍셀들의 레이아웃은
    텍셀 풋프린트 내의 쿼드 텍셀들(quad texels)이 개별 뱅크 상에 있음을 보장하도록 선택되는 그래픽 처리 유닛.
  11. 그래픽 처리 장치의 동작 방법에 있어서,
    압축된 텍셀 데이터를 제 1 텍스쳐 캐시에 저장하는 단계;
    상기 제 1 텍스처 캐시로부터 압축 해제된 텍셀 데이터를 제 2 텍스처 캐시에 저장하는 단계;
    픽셀 그룹(group of pixels)의 텍셀 데이터에 대한 요청을 수신하는 단계; 및
    상기 요청된 텍셀 데이터에 대한 상기 제 1 텍스처 캐시 또는 상기 제 2 텍스처 캐시에 대한 액세스를 스케줄링하는 단계를 포함하는 방법.
  12. 제 11 항에 있어서,
    상기 스케줄링하는 단계는
    상기 제2 텍스쳐 캐시에서, 상기 요청된 텍셀 데이터에 대한 캐시 히트 또는 캐시 미스가 있는지 결정하는 단계;
    캐시 미스의 결정에 응답하여 상기 요청된 텍셀 데이터에 대한 상기 제 1 텍스쳐 캐시에 액세스하는 단계; 및
    캐시 히트의 결정에 응답하여 상기 요청된 텍셀 데이터에 대한 상기 제 2 텍스쳐 캐시에 액세스하는 단계를 포함하는 방법.
  13. 제 12 항에 있어서,
    인접한 2차원 텍셀 블록(contiguous two-dimensional block of texels)이 개별 캐시 라인들 및 태그 룩업들을 기설정된 개수의 보다 더 적게 요구하도록, 상기 제 2 텍스쳐 캐시 내의 상기 텍셀 데이터를 모턴 순서(Morton order)로 조직화된 캐시 라인들 내의 타일들로 조직화(organizing)하는 단계를 더 포함하는 방법.
  14. 제 11 항에 있어서,
    상기 요청의 텍셀 어드레스들의 세트를 비 충돌 액세스 세트들(non-conflicting sets of accesses)로 분할(partition)하는 단계를 더 포함하는 방법.
  15. 제 14 항에 있어서,
    상기 비 충돌 액세스 세트들은 태그 충돌(tag conflicts) 또는 데이터 뱅크 충돌(data bank conflicts)을 갖지 않는 방법.
  16. 제 11 항에 있어서,
    뱅크당 다수의 개별 캐시 라인들(distinct cache lines) 또는 다수의 디워드들(dwords) 중 적어도 하나에 기초하여 숫자에 대한 제약들의 세트(set of constraints for a number)를 만족하는 텍셀 요청들을 결합하는 단계를 더 포함하는 방법.
  17. 제 16 항에 있어서,
    상기 텍셀 요청들을 결합하는 단계는
    각 뱅크로부터 네 개 이하의 개별 캐시 라인들(distinct cache lines) 및 하나 이하의 디워드의 제약(constraint)을 만족하는 텍셀 요청들을 결합하는 단계를 포함하는 방법.
  18. 제 11 항에 있어서,
    상기 제 2 텍스쳐 캐시는 4 웨이 뱅크 태그 룩업(4-way banked tag lookup) 및 16 웨이 뱅크 데이터 스토어(16-way banked data store)를 갖는 방법.
  19. 제 11 항에 있어서,
    상기 제 2 텍스쳐 캐시 내의 텍셀들의 레이아웃은
    텍셀 풋프린트 내의 쿼드 텍셀들(quad texels)이 개별 뱅크 상에 있음을 보장하도록 선택되는 방법.
  20. 제 11 항에 있어서,
    데이터가 액세스들의 세트에 있는 지역 패턴들(locality patterns)에 기초하여 상기 제 2 텍스쳐 캐시로 조직화되는(organized into) 방법.
KR1020170026480A 2016-03-04 2017-02-28 효율적인 저전력 텍스쳐 캐시 아키텍쳐 KR20170103667A (ko)

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,463 US10181176B2 (en) 2016-03-04 2017-01-31 Efficient low-power texture cache architecture
US15/420,463 2017-01-31

Publications (1)

Publication Number Publication Date
KR20170103667A true KR20170103667A (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 Before (1)

Application Number Title Priority Date Filing Date
KR1020170023192A KR20170103649A (ko) 2016-03-04 2017-02-21 버퍼를 이용하여 텍스처 데이터에 액세스하는 방법 및 장치

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
US10602174B2 (en) * 2016-08-04 2020-03-24 Intel Corporation Lossless pixel compression for random video memory access
US10715818B2 (en) 2016-08-04 2020-07-14 Intel Corporation Techniques for hardware video encoding
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
EP4111306A4 (en) * 2020-05-26 2023-05-03 Huawei Technologies Co., Ltd. DEVICE AND METHOD FOR DATA PACKING IN A 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 ソニー株式会社 画像処理装置およびその方法
AU2003208477A1 (en) 2002-03-01 2003-09-16 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
WO2006019374A1 (en) * 2004-07-14 2006-02-23 Silicon Optix Inc. Cache memory management system and method
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
WO2011065886A1 (en) * 2009-11-24 2011-06-03 Telefonaktiebolaget L M Ericsson (Publ) Decoding system and method operable on encoded texture element blocks
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
US9947071B2 (en) 2014-06-27 2018-04-17 Samsung Electronics Co., Ltd. Texture pipeline with online variable rate dictionary compression
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
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
CN107154012B (zh) 2021-08-10
CN107154012A (zh) 2017-09-12
KR20170103649A (ko) 2017-09-13
US10181176B2 (en) 2019-01-15
US20170256024A1 (en) 2017-09-07
US10055810B2 (en) 2018-08-21
US20170256025A1 (en) 2017-09-07

Similar Documents

Publication Publication Date Title
US10181176B2 (en) Efficient low-power texture cache architecture
CN107153617B (zh) 用于利用缓冲器高效访问纹理数据的高速缓存体系结构
US8681168B2 (en) Methods of and apparatus for processing graphics
US9214007B2 (en) Graphics processor having unified cache system
US6831653B2 (en) Graphics pixel packing for improved fill rate performance
US8760460B1 (en) Hardware-managed virtual buffers using a shared memory for load distribution
US9384584B2 (en) Display list control stream grouping in tile based 3D computer graphics system
US9734548B2 (en) Caching of adaptively sized cache tiles in a unified L2 cache with surface compression
US10726519B2 (en) Cache arrangement for graphics processing systems
US20140152652A1 (en) Order-preserving distributed rasterizer
US8558842B1 (en) Parallel duplicate primitive vertex detection and batching
US7151544B2 (en) Method for improving texture cache access by removing redundant requests
EP1994506B1 (en) Texture unit for multi processor environment
US7880745B2 (en) Systems and methods for border color handling in a graphics processing unit
US7483035B2 (en) Texture cache control using a data dependent slot selection scheme
US7348988B2 (en) Texture cache control using an adaptive missing data table in a multiple cache computer graphics environment
EP1721298A2 (en) Embedded system with 3d graphics core and local pixel buffer
US7069387B2 (en) Optimized cache structure for multi-texturing
US20180103174A1 (en) Image processing apparatus and method for controlling the same
US9536341B1 (en) Distributing primitives to multiple rasterizers
US11379944B2 (en) Techniques for performing accelerated point sampling in a texture processing pipeline
CN116563444A (zh) 一种纹理映射硬件加速的方法及装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal