KR102381944B1 - 주파수 압축과 텍스처 파이프라인 - Google Patents

주파수 압축과 텍스처 파이프라인 Download PDF

Info

Publication number
KR102381944B1
KR102381944B1 KR1020150091389A KR20150091389A KR102381944B1 KR 102381944 B1 KR102381944 B1 KR 102381944B1 KR 1020150091389 A KR1020150091389 A KR 1020150091389A KR 20150091389 A KR20150091389 A KR 20150091389A KR 102381944 B1 KR102381944 B1 KR 102381944B1
Authority
KR
South Korea
Prior art keywords
data
compressed
block
compression
texture
Prior art date
Application number
KR1020150091389A
Other languages
English (en)
Other versions
KR20160001701A (ko
Inventor
카틱 라마니
아브히나브 골라스
존 브라더스
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20160001701A publication Critical patent/KR20160001701A/ko
Application granted granted Critical
Publication of KR102381944B1 publication Critical patent/KR102381944B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • 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
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/395Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
    • 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
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/02Handling of images in compressed format, e.g. JPEG, MPEG
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2350/00Solving problems of bandwidth in display systems
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/121Frame memory handling using a cache memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/122Tiling
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/18Use of a frame buffer in a display terminal, inclusive of the display panel

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Image Generation (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Multimedia (AREA)

Abstract

그래픽 시스템은 컬러 데이터 및 텍스처 데이터의 가변 레이트 압축 및 압축해제를 지원한다. 데이터의 개별적인 블록은 다른 압축 길이를 갖는 복수의 다른 압축 데이터 타입으로부터 압축 데이터 타입을 결정하기 위해 분석될 수 있다. 압축 데이터 타입은 n x n 픽셀값들 상에 일정(플랫) 픽셀 값을 갖는 압축 데이터 타입, 3 또는 4개의 값들의 서브셋이 플래인 또는 그래디언트를 나타내도록 하는 압축 데이터 타입, 고 주파수 콘텐츠를 나타내는 웨이브릿 또는 다른 압축 데이터 타입을 포함할 수 있다. 추가적으로, 메타데이터 인덱싱은 비압축된 주소를 압축된 주소로 매핑하는 정보를 제공할 수 있다. 저장 요건을 줄이기 위해, 메타데이터 인덱싱은 압축된 데이터의 동일한 부분을 참조하기 위해 적어도 둘의 중복 데이터 블록들을 허용한다.

Description

주파수 압축과 텍스처 파이프라인{Texture Pipeline with Frequency Compression}
그래픽 프로세싱 유닛 내에서 텍스처 데이터의 압축해제 및 컬러, 깊이 데이터의 압축에 관한 것이다. 보다 구체적으로, 그래픽 프로세싱 유닛 내에서 가변 레이트 압축 및 컬러, 텍스처 데이터의 압축해제에 관한 것이다.
그래픽 프로세싱 유닛(GPU: Graphics Processing Unit) 내의 텍스처 매핑은 그래픽 모델을 컴퓨터로 상세하게 추가할 수 있다. 프로세스는 실제 컬러 값들을 불러오고(fetching), 모델 내에서 모든 픽셀에 대한 컬러를 생산하기 위해 실제 컬러 값들을 필터링할 수 있다. 텍스처링(Texturing )은 3D 렌더링 성능에 대해서 중요한 디자인 요소이고, 전체 프로세서 전력의 중요 부분을 초래(incur)할 수 있다. 일반적인 그래픽 프로세싱 유닛에서, 컬러 값들은 필터링되거 전에 메모리로부터 패치될(fetched) 수 있습니다. 텍스처링에 의한 메모리 액세스는 메모리 대역폭 및 메모리 전력에 기여할 수 있고, 병목현상 성능의 주요한 소스가 될 수 있다. 텍스처링으로 인한 메모리 액세스의 제거 및 감소는 GPU 디자인 제약에서 중요하다.
텍스쳐 대역폭은 전체 메모리 대역폭의 중요한 부분을 기여할 수 있다. 메모리 대역폭 요건을 감소시키는 텍스처 데이터의 오프라인 고정 레이트 압축(offline fixed rate compression)을 수행하는 것은 업계 관행이다. 압축은 일반적으로 데이터의 블록 상에서 수행될 수 있고, 블록은 M x N 픽셀들 또는 텍셀들의 영역을 갖는다. 정사각형 영역(MxM)은 일반적으로 캐쉬 지역 및 액세스 패턴 고려 때문에 블록에 대하여 선택될 수 있다.
대부분의 압축 알고리즘은 고정된 레이트의 카테고리 및 고정된 어드레스 손실 압축에 속해 있다. 그래픽 시스템에서, 고정된 레이트 압축 방식(fixed rate compression schemes)은 블록의 주파수 성분에 관계없이 픽셀들의 4 x 4 블록들과 같은 데이터의 고정된 크기 블록들을 L 비트의 고정 길이로 압축한다. 따라서, 고주파수 구성을 지닌 블록은 손실없이 고정된 사이트로 압축될 수 없으므로 고정된 레이트 압축 방식은 본질적으로 손실이 일어난다. 그러나, 고정된 레이트 압축의 평균은 고정된 어드레스를 사용하여 간단한 어드레싱 방식을 허용할 수 있다. 고정된 어드레스는 압축해제 동안 어드레싱 방식에 기초하여 효율적인 하드웨어를 사용한 압축해제를 쉽게 수행하기 위해 스트레이트 포워드 어드레싱 방식(straight forward addressing scheme)을 허용한다.
고정된 레이트(fixed rate) 및 고정된 어드레싱(fixed addressing)을 지닌 그래픽 분야에서 사용되는 공통 압축 표준의 예는 DXT, ETC 및 ASTC 압축 표준을 포함한다. 이러한 압축 표준에서, 텍스처 영상은 멀티 MxN 또는 MxM 블록으로 분해(broken into)될 수 있고, M 및 N은 양수이다. 예를 들어, 4x4 블록들은 인기가 있고, DXT 및 ETC 표준에서 사용된다. 4x4 블록들의 데이터 각각은 8B 또는 16B와 같은 고정된 길이로 압축될 수 있다. 예를 들면, 8B의 고정된 길이에 대하여, 64x64 텍스처는 256개의 4x4 블록들로 분해될 수 있고, 4x4 블록들의 각각은 8비트의 고정된 크기로 다운 압축될 수 있다. ASTC는 텍스처 선택에 따라 글로벌한 4 x 4 에서 12 x 12까지의 다양한 블록 크기를 선택할 수 있다.
그러나, 고정된 레이트 압축 알고리즘(fixed rate compression algorithms)내의 진화(evolution)는 수확 체감(diminishing returns)의 시대에 진입하고, 다양한 문제들을 겪고 있다. 하나의 문제점은 고정된 레이트 알고리즘은 비효율적인 상황인 것이다. 예를 들면, 중복 블록들이 있다면, 각 블록은 개별적으로 압축될 수 있다. 텍스처의 두 끝부분의 고주파 정보가 동일한 블록들이 있다면, 동일한 블록들 각각은 개별적으로 중복 블록들로 압축될 수 있다. 그 결과, 표준 고정된 레이트 압축 알고리즘은 매우 비효율적일 수 있고, 텍스처는 많은 고주파 콘텐츠 블록을 보유할 수 있다.
또 다른 문제점은 기존의 고정된 레이트 손실 압축을 받아들일 수 없는 어플리케이션이 있다는 것이다. 고정된 레이트 압축은 일반적으로 정적 텍스처들에서 사용되고, 정적 텍스처들은 오프라인으로 압축될 수 있다. 그러나, 런타임 동안 생성된 동적 텍스처들이 있다면, 게임 어플리케이션 내의 직면된 이슈들의 부분을 해결하지 않는다. 특히, GPU는 동적으로 Open GLㄾ 또는 GL ESㄾ과 같은 현재 GPU API 표준에서 받아들일 수 없는 컬러 데이터 및 손실 압축(컬러 데이터 정밀도 손실)을 어플리케이션에서 생성한다. 손실 압축이 허용되는 경우에도, 종래의 고정된 레이트 압축은 시간 집약적이고, 동적으로 생성된 텍스처들에 적용되지 않을 수 있다.
일측에 따르면, 그래픽 시스템은 텍스처 파이프라인 내에서 가변 레이트 압축 및 텍스처 데이터 및 컬러 데이터의 압축해제를 지원한다. 데이터의 개별적인 블록은 다른 압축 길이를 갖는 복수의 다른 압축 데이터 타입들로부터 압축 데이터 타입을 결정하기 위해 분석될 수 있다. 블록의 컬러값들은 픽셀 또는 텍셀 컬러 값들에 대응될 수 있다. 데이터 블록에 적용되는 압축 기술은 블록의 압축 데이터 타입에 기초할 수 있다. 압축 데이터 타입은 블록의 모든 컬러 값들은 동일한 컬러 데이터를 갖는 데이터 타입, 플래인 식에 의해 기술된 방식에서 블록의 컬러 값들의 다양한 데이터 타입, 블록은 웨이블릿 기술, 스플라인 또는 다른 접근에 의해 고주파 컨텐츠를 갖는 것으로 나타낼 수 있는 데이터 타입을 포함할 수 있다. 규칙은 블록에 대해 최대 압축 길이로의 압축 길이를 제한하는 것을 포함할 수 있고, 최대 길이가 침해될 경우 압축을 수행하지 않는 것을 포함할 수 있다. 메타데이터 인덱싱은 압축된 데이터를 가져올 수 있는 압축된 어드레스 및 비압축된 어프레스 사이를 매핑하는 정보를 제공할 수 있다. 저장 요청을 감소시키기 위해, 메타데이터 인덱싱은 압축된 데이터의 동일한 부분을 참조하기 위해 적어도 둘 이상의 중복 데이터 블록들을 허용할 수 있다. 하드웨어 어시스트(Hardware assists)는 동적으로 생성된 텍스처들의 런타임 동안 가변 레이트 압축 및 압축해제를 수행하기 위해 제공될 수 있다.
그래픽 프로세싱 시스템의 텍스처 파이프라인 내에서 컬러 데이터 및 텍스처의 가변 레이트 압축 방법은 텍스처 또는 영상과 연관된 컬러 값들의 블록들의 세트를 분석하는 단계를 포함할 수 있다. 컬러 값들의 각 블록에 대해, 결정은 다른 압축 길이를 갖는 복수의 압축 데이터 타입으로부터 컬러 값들의 블록의 압축 데이터 타입으로 이루어질 수 있다. 컬러 값들의 각 블록은 압축 데이터 타입에 기초하여 압축될 수 있다. 각 블록의 비압축된 텍스처 어드레스 스페이스를 각 블록의 압축 데이터 타입을 나타내는 압축된 텍스처 어드레스로 매핑하는 것을 정의하는 메타데이터가 생성될 수 있다.
일측에 따르면, 그래픽 프로세싱 시스템의 텍스처 파이프라인 내의 픽셀 또는 텍셀 값의 가변 레이트 압축 방법에 있어서, 텍스처 또는 영상과 연관된 컬러 값들의 블록의 세트를 분석하는 단계; 상기 컬러 값들의 각 블록에 대하여, 다른 압축된 길이를 갖는 복수의 압축 데이터 타입으로부터 컬러 값들의 상기 블록의 압축 데이터 타입을 결정하는 단계; 상기 컬러 값들의 각 블록에 대하여, 상기 결정된 압축 데이터 타입에 기초하여 각 블록의 상기 컬러 데이터를 압축하는 단계; 및 상기 컬러 값들의 각 압축된 블록에 대하여, 각 블록의 비압축된 텍스처 어드레스 스페이스를 각 블록의 압축 데이터 타입을 나타내는 압축된 텍스처 어드레스 스페이스로 매핑하는 것을 정의하는 메타 데이터를 생성하는 단계를 포함하는 방법이 제공된다.
또한, 상기 블록의 세트 내의 중복 블록(duplicative blocks)은 대표적인 압축된 데이터의 단일 인스턴스(single instance)로 인덱스되는(indexed) 것을 특징으로 할 수 있다.
또한, 사전(dictionary)을 생성하는 단계를 더 포함하고, 상기 메타데이터는 상기 사전 내의 대표적인 압축된 데이터에 대한 인덱스를 정의할 수 있다.
또한, 제1 압축 데이터 타입은 플랫 데이터 타입(flat data type)인 것을 특징으로 하고, 상기 제1 압축 데이터 타입 내의 상기 블록의 상기 모든 컬러 값들은 동일한 값을 갖고, 단일 대표적인 컬러 값은 상기 블록의 데이터를 나타내도록 압축될 수 있다.
또한, 제2 압축 데이터 타입은 플래너 데이터 타입(planar data type)인 것을 특징으로 하고, 상기 제2 압축 데이터 타입 내의 세 컬러 값들은 상기 블록의 컬러 값을 나타내기 위해 사용될 수 있다.
또한, 제3 압축 데이터 타입은 웨이블릿(wavelet) 데이터 타입 또는 스플라인(spline) 데이터 타입인 것을 특징으로 하고, 웨이블릿 또는 스플라인 압축은 상기 블록의 상기 컬러 값들을 압축하는 데에 사용될 수 있다.
또한, 상기 압축은 동적 텍스처에 대한 런타임에서 수행될 수 있다.
또한, 상기 압축 데이터 타입 및 상기 블록에 대한 압축된 데이터를 식별하기 위한 상기 메타데이터를 이용하는 단계; 및 상기 블록에 대한 비압축된 컬러 데이터를 획득하기 위한 압축 데이터 타입으로 선택된 디코더를 사용하여 압축해제를 수행하는 단계를 더 포함할 수 있다.
또한, 상기 감압은 사전 값에 접근하는 것 및 복수의 데이터 블록에 대한 비압축된 컬러 데이터를 생성하기 위해 상기 사전 값을 이용하는 것을 포함할 수 있다.
또한, 상기 압축해제기는 캐쉬로부터 비압축된 어드레스 미스를 수신하고, 응답하여 메타데이터, 사전 또는 압축된 값들에 액세스하고, 상기 캐쉬에 대한 압축해제된 데이터를 생성하기 위해 디코딩을 수행할 수 있다.
또한, 상기 가변 레이트 압축 및 압축해제는 하드웨어 내의 적어도 부분적으로 수행될 수 있다.
또한, 상기 가변 레이트 압축은 무손실 압축이고, 최대 크기 제한 내에서 압축될 수 없는 데이터 블록은 비압축된 블록으로 저장될 수 있다.
또한, 상기 가변 레이트 압축은 텍스처를 압축하고, 온-칩 L2 캐쉬 메모리 내의 변형된 텍스처로서 얻어진 압축된 데이터를 저장할 수 있다.
또한, 캐쉬 메모리 미스에 응답하여, 상기 압축된 텍스처 데이터의 상기 어드레스를 결정하기 위해 메타데이터를 사용하는 단계, 상기 압축된 텍스처 데이터를 추출하는 단계(retrieving), 상기 압축된 텍스처 데이터를 디코딩하는 단계 및 비압축된 텍스처 데이터를 상기 캐쉬 메모리로 제공하는 단계를 더 포함할 수 있다.
다른 일측에 따르면, 그래픽 프로세싱 유닛에 있어서, 텍스처 파이프라인을 포함하고, 상기 텍스처 파이프라인은, 적어도 다른 둘의 압축 길이들을 사용하여 텍스처들의 데이터의 불록의 가변 레이트 압축을 수행하는 압축기; 및 상기 압축된 데이터의 압축해제를 수행하는 압축해제기를 포함하는 그래픽 프로세싱 유닛이 제공된다.
또한, 동일한 압축된 값들을 생성하는 중복 블록들의 세트에 대하여, 상기 압축기는 단일 대표적인 압축된 값을 저장하고, 중복 블록들의 세트 내의 각 인스턴스는 동일한 대표적인 압축된 값으로 인덱스될 수 있다.
또한, 제1 압축 데이터 타입은 플랫 데이터 타입인 것을 특징으로 하고, 상기 제1 데이터 타입 내의 블록의 상기 모든 컬러 값들은 동일한 값을 갖고, 상기 압축기는 상기 블록을 나타내는 단일 대표적인 컬러 값을 저장할 수 있다.
또한, 제2 압축 데이터 타입은 플래너 데이터 타입인 것을 특징으로 하고, 상기 제2 압축 데이터 타입 내의 세 컬러 값들은 상기 블록의 컬러 값을 나타내기 위해 사용될 수 있다.
또한, 제3 압축 데이터 타입은 웨이블릿 압축 데이터 타입인 것을 특징으로 할 수 있다.
또한, 상기 그래픽 프로세싱 유닛은 동적 텍스처에 대한 런타임에서 압축을 수행할 수 있다.
또한, 온-칩 L1 및 L2 캐쉬 메모리를 더 포함하고, 상기 그래픽 프로세싱 유닛은 상기 L2 캐쉬 내에 저장된 텍스처 데이터의 가변 레이트 압축을 수행하고, 상기 가변 레이트 압축해제기는 상기 L2 캐쉬 내에 저장된 상기 압축된 데이터를 압축해제 할 수 있다.
본 발명은, 다음의 자세한 설명과 그에 수반되는 도면들의 결합으로 쉽게 이해될 수 있으며, 참조 번호(reference numerals)들은 구조적 구성요소(structural elements)를 의미한다.
도 1은 일실시예에 따르면, 그래픽 시스템의 텍스처 파이프라인 내의 가변 레이트 압축 및 압축해제를 설명하기 위한 블록도이다.
도 2는 일실시예에 따라, 비압축된 텍스처 데이터의 데이터 블록의 세트를 설명하기 위한 도면이다.
도 3은 일실시예에 따라, 가변 레이트 압축에 대한 압축 데이터에 기초하여 데이터 블록을 분류하는 것을 설명하기 위한 도면이다.
도 4는 일실시예에 따라, 압축 데이터 블록들의 불필요한 저장을 제거하기 위한 사전 및 메타데이터의 사용을 설명하기 위한 도면이다.
도 5는 일실시예에 따라, 가변 레이트 압축 블록을 설명하기 위한 도면이다.
도 6은 일실시예에 따라, 가변 레이트 압축 프로세스를 설명하기 위한 도면이다.
도 7은 일실시예에 따라, 가변 레이트 압축해제 프로세스를 설명하기 위한 도면이다.
도 8a은 일실시예에 따라, 텍스처 데이터의 L1 캐쉬 미스를 처리하는 종래 프로세스를 설명하기 위한 도면이다.
도 8b는 일실시예에 따라, L2 캐쉬 메모리 내의 변형된 텍스처 데이터의 가변 레이트 압축해제를 이용하여 L1 캐쉬 미스를 처리하는 프로세스를 설명하기 위한 도면이다.
본 발명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에서 사용되는 "부"라는 용어는 소프트웨어, FPGA 또는 ASIC과 같은 하드웨어 구성요소를 의미하며, "부"는 어떤 역할들을 수행한다. 그렇지만 '부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 "부"는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다. 구성요소들과 "부"들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 "부"들로 결합되거나 추가적인 구성요소들과 "부"들로 더 분리될 수 있다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
아래에서는 첨부한 도면을 참고하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
본 개시의 일실시예에 따르면, 그래픽 시스템 내의 컬러 및 텍스처 데이터 의 가변 레이트 압축 뿐만 아니라, 압축된 데이터의 압축해제를 개시한다. 또한, 본 개시의 일실시예는 텍스처 데이터를 변형된 텍스처 데이터 및 메타데이터 헤더 데이터로 변환하는 기술을 포함할 수 있다. 변형된 텍스처의 결합된 메모리 푸트프린트(combined memory footprint of the modified texture) 및 메타데이터 헤더 데이터(metadata header data)는 실제의 비압축된 텍스처 데이터보다 작을 수 있다. 추가적으로, 본 개시의 일실시예는 변형된 텍스처 데이터로 액세스하는 기술 및 변형된 텍스처 데이터를 실제 텍스처 데이터로 디코드하는 기술을 포함할 수 있다.
도 1은 일실시예에 따라, 그래픽 프로세싱 유닛(GPU: Graphics Processing Unit)의 텍스처 파이프라인 내의 가변 레이트 압축(variable rate compression) 및 압축해제(decompression)를 설명하기 위한 블록도이다. 그래픽 프로세싱 유닛은 프로세서들을 갖는 칩, 온-칩 메모리 및 큰 그래픽 파이프라인의 부분인 텍스처 파이프라인의 시스템 상에서 실행될 수 있다. 예를 들면, 일반적으로 더 많은 가변 레이트 압축 및 압축해제가 다른 방식으로 사용될 수 있을지라도 압축 및 압축해제는 온-칩-L1캐쉬(102) 및 L2 캐쉬(104)를 갖는 GPU 내에서 오프-칩 메모리를 액세스하는 필요를 최소화하기 위해 수행될 수 있다.
가변 레이트 압축기(110)는 데이터의 다른 타입에 대한 다른 압축 길이를 지원한다(예를 들면, 플랫 압축 타입(flat data compression type), 선형 데이터 압축 타입(linear data compression type), 웨이블릿 데이터 압축 타입(wavelet data compression type), 보다 상세한 것은 아래에서 기술한다). 예를 들면, 압축기(110)에 의해 생성된 압축된 컬러 데이터는 L2 캐쉬(103)에 저장될 수 있다. 또한, 압축기(110) 내의 메타데이터 매니저(미도시)는 압축해제 동안 어드레스 매핑(address mapping)을 돕기 위해 메타데이터를 생성할 수 있다. 압축해제기(120)는 메타데이터 캐쉬(130), 사전 테이블(dictionary table)(140) 및 디코더(145)를 포함할 수 있다. 메타데이터 캐쉬(130)는 도 1에 도시된 화살표와 같이, L2 캐쉬(104)로 요청한 메타데이터를 통해 메타데이터로 채워질 수 있다. 메타데이터가 각 페치(fetch)를 위해 여러 번 사용될 수 있도록 메타데이터는 캐쉬될 수 있다. 이것은 대역폭 이익을 증가시킬 수 있다. 텍스처 액세스들은 높은 정도의 공간 지역(spatial locality)을 가질 수 있다. 그 결과, 메타데이터의 캐쉬 라인은 처음에 필요에 따라 L2로부터 압축된 데이터의 적어도 하나의 데이터 캐쉬 라인 다음에 액세스될 수 있다.
압축된 데이터는 L2 캐쉬로부터 액세스될 수 있고, 디코더(145)로 제공될 수 있다. 디코더(145)는 압축 타입에 기초하여 디코딩의 다른 타입을 지원할 수 있고, 다른 몇 가지의 디코더들을 갖는 것이 고려될 수 있다. 패스-쓰로우 패스(pass-through path)는 비압축된 블록들을 위해 제공될 수 있다. 압축된 데이터가 수신되면, 압축된 데이터는 압축 데이터 타입에 의존하여 적절한 디코더로 전송될 수 있다. 예를 들면, 2-비트 코드는 3개의 다른 압축 데이터 타입 및 비압축 데이터 타입을 지원할 수 있다. 또한, 임의의 다른 압축 타입이 지원될 수도 있다.
L1캐쉬(102) 내의 미스(miss) 상에서, 어드레스는 압축해제기(120)로 전송될 수 있다. L2 캐쉬 내의 변형된 메모리 어드레스를 찾기 위해 어드레스는 메타데이터 캐쉬(130)(예를 들면, 헤더 테이블 또는 다른 데이터 구조)내에서 검색될 수 있다. 예시의 목적을 위해, 비압축기(120)는 중복 블록들의 일반적인 경우들을 지원하기 위해 사전 테이블(140)과 함께 도시될 수 있다.
도 2 및 도 3은 일실시예에 따라, 가변 레이트 압축을 설명하기 위한 도면이다. 도 2는 그래픽 시스템의 텍스처 또는 픽셀 데이터의 비압축된 데이터 블록 B의 K x K 세트(200)를 설명하기 위한 도면이다. 텍셀 또는 픽셀을 컬러 값을 나타낸다. 개별적인 데이터 블록(205)은 4x4 배열(블록(105-A) 내의 대쉬 라인을 나타냄)과 같은 n x n의 미리 선택된 크기를 갖는 픽셀 컬러 값들의 배열에 대응될 수 있다. 제1 블록으로부터 많은 블록들(205)까지의 개별적인 데이터 블록의 연속적인 그룹은 타일 버퍼(105)로부터 수신된 테이터 값들의 4x4 타일과 같은(예를 들면, 컬러 데이터) 타일에 대응될 수 있다. 본 개시의 목적을 위해, 블록(105) 내의 값들의 배열 내의 각 요소들은 컬러 데이터를 갖는 텍셀 또는 픽셀과 같이 기술될 수 있다. 보다 일반적으로 다른 유형의 데이터는 뎁스 데이터(depth data), 법선들(normals) 또는 반영 맵들(reflection maps) 등과 같은 텍스처 데이터에 의해 나타낼 수 있다. 컴퓨터 그래픽에서, 텍셀(텍스처 요소)은 텍스처 표면의 인상(impression)을 생성하기 위한 2차원 텍스처 매핑 내의 가장 작은 그래픽 요소일 수 있다. 그래픽 파이프라인 내에서 텍셀은 기본적인(elementary) 유닛으로 나타낼 수 있기 때문에 텍셀은 픽셀(픽처 요소)에 유사할 수 있다. 그러나, 각 텍셀에 매핑된 적어도 하나의 컬러 값이 있을 수 있다. 또한, 텍스처는 데이터의 배열이 고려될 수 있고, 컬러 데이터, 휘도 데이터(luminance data), 스텐실 데이터(stencil data) 또는 다른 타입의 데이터를 포함할 수 있다.
도 3의 도시된 바와 같이, 본 개시의 일실시예는 비압축된 데이터 블록들의 개별적인 데이터 타입들은 다른 압축 데이터 타입으로 분류될 수 있다. 다른 압축 데이터 타입들 각각은 다른 압축 길이를 가질 수 있다. 압축 데이터 타입은 플랫 압축 데이터 타입, 플래인 또는 그래디언트 압축 데이터 타입, 웨이블릿 압축 데이터 타입을 포함할 수 있다. 플랫(flat) 압축 데이터 타입 내의 모든 픽셀 값들은 일정할 수 있다. 플래인(plane) 또는 그래디언트(gradient) 압축 데이터 타입 내의 픽셀 값들은 데이터 블록 내의 플래인 식에 따라 다양할 수 있다. 웨이블릿(wavelet) 압축 데이터 타입 내의 데이터는 웨이블릿 압축 방식을 사용하여 압축될 수 있다. 또한, 손실 없이 압축될 수 없는 고 주파수 콘텐츠를 갖는 개별적인 블록들이 있을 수 있다. 또한, 스플라인과 같이 이미 알려진 다른 타입의 압축에 따라 압축되는 데이터 블록들이 있을 수 있다.
데이터 블록을 위한 압축 데이터 타입을 결정하는 것은 개별적인 블록의 압축을 최적화하는 것을 허용할 수 있다. 예를 들면, 플랫 블록에 대하여, 플랫 블록의 모든 픽셀들은 블록의 모든 컬러 값을 나타내기 위해 압축이 필요한 대표적인 값을 위한 동일한 컬러 값을 포함할 수 있다. 또한, 고 주파수 콘텐츠를 포함하는 블록들의 압축은 손실없는 압축을 실현하기 위해 더 긴 압축 길이를 사용하여 수행될 수 있다. 결정은 최대 압축 길이 내에서 손실 없이 압축하지 않은 블록들이 압축되지 않도록 할 수 있다.
블록의 K x K 세트 내에서, 서로 다른 위치의 중복되는 블록이 있을 수 있다. 예를 들면, 동일하고 일정한 픽셀 컬러 값"A"을 갖는 다른 중복되는 두 개의 플랫 블록들이 있다고 가정한다. 각각의 블록들은 중복되기 때문에 압축에서 추가적인 개선은 모든 플랫 블록들에 대해 압축된 값들을 저장함으로써 획득될 수 있다. 일반적으로 서로 중복되는 적어도 둘의 플랫 블록들, 서로 중복되는 적어도 둘의 웨이블릿 압축 데이터 타입 블록들과 같은 동일한 압축 데이터 타입의 블록들이 서로 중복될 수 있는 경우가 있을 수 있다.
도 4에 도시된 바와 같이, 한가지 옵션은 사전 값으로 중복 블록들에 대한 압축된 데이터의 단일 인스턴스로 저장하고, 압축해제 동안 어드레스 매핑을 지원하기 위한 메타데이터를 생성하는 것이다. 사용된 압축의 종류를 정의하는 것 이외에 메타데이터는 비압축된 텍스처 어드레스 스페이스를 압축된 텍스처 어드레스 스페이스로 매핑하는 것으로 정의한다. 사전 값을 포인팅하고, 압축된 값들 및 비압축된 값들 사이를 매핑하는 것을 돕기 위한 메타데이터의 예들은 압축된 데이터 타입, 압축된 길이 및 오프셋을 포함할 수 있다. 메타데이터에 의해 정의된 매핑은 중복 블록들에 대해 고유(unique)하지 않은 것으로 예상될 수 있으므로, 복수의 비압축된 어드레스는 동일한 압축된 어드레스로 매핑될 수 있다. 이러한 방식으로 중복 블록들에 대한 압축된 데이터의 저장 요구 내의 큰 감소는 획득될 수 있다. 또한, 또 다른 옵션은 압축된 데이터를 나타내는 메모리(예를 들면, L2 캐쉬 또는 다른 메모리) 내의 압축된 데이터를 저장하고, 도 1에 도시된 바와 같이, 획득하는 것이다.
가변 레이트 압축 방법의 예는 다음과 같다. 먼저, 타일 버퍼(105)는 n x n 픽셀들의 크기의 타일에 대한 픽셀 컬러 데이터(예를 들어, RGB 8888 형식)를 압축기(110)로 전송할 수 있다. 압축기(110)는 전체 타일로부터 한번에 n x n 픽셀 사각형 블록을 프로세스할 수 있다. 설명의 목적으로, 명시적으로 언급되지 않는 한 n=4는 사용될 수 있다.
n x n 블록에 대하여, 압축기(110)는 데이터 압축 데이터 타입을 결정하고, 대응하는 엔트리는 메타데이터 캐쉬 내에서 생성될 수 있다. 본 개시의 일실시예는 블록이 플랫(일정한) 픽셀 데이터 압축 타입인지를 결정하는 단계; 블록이 플래인 또는 그래디언트 압축 타입인지를 결정하는 단계; 또는 블록이 압축 타입에 기초하여 웨이블릿으로 나타낼 수 있는지를 결정하는 단계를 포함할 수 있다. 그러나, 추가적인 압축 타입은 제공될 수 있고, 손실 없이 압축되지 않은 블록이 있는 경우가 있을 수 있다. 압축된 데이터는 L2 캐쉬(104) 내에 변형된 텍스처로 저장될 수 있다. 메타데이터는 변형된 텍스처를 페치하고 디코더에서 페치된 변형된 텍스처를 압축해제하기 위해 비압축된 어드레스 스페이스를 압축된 어드레스 스페이스로 영역하는(translates) 어드레스 트랜스레이터(address translator)로 사용될 수 있다.
플랫 압축 타입의 경우를 가정한다. 플랫 압축 데이터 타입의 경우를 위해, n x n 블록은 메타-데이터 캐쉬(또한 헤더 테이블로 상호교환 언급될 수 있다) 내에 하나의 엔트리를 필요로 하고, 매핑 프로세스는 사전(140)의 사전 테이블 내에서 저장된 사전 값을 지적(point)할 수 있다. 일실시예에 따르면, "압축 타입"으로의 언급된 부가적인 비트는 플랫 압축된 블록을 나타내기 위해 사용될 수 있다. 결정은 플랫 압축은 n x n 블록에 대해서 이용되었는지(employed)에 대한 것이다. 블록 내의 모든 픽셀들이 동일한 값으로 나타낼 수 있는 경우, 플랫 압축은 사용될 수 있다. 블록 내의 모든 픽셀들이 동일한 컬러 값을 가지면, 블록은 플랫 블록으로 표시되고 사전(140) 내에 단일 픽셀 값(예를 들면, RGBA 8888)으로 저장될 수 있다. 이것은 개별적인 4 x 4 블록에 대하여 16:1의 압축 비율에 대응할 수 있다. 또한, 블록이 중복된 경우, 압축 효율의 개선은 단일 사전 값이 적어도 둘의 중복 블록들을 나타내는 사실 때문에 발생할 수 있다. 표 1은 공통 텍셀 형식의 플랫 블록에 대한 압축된 블록 크기와 비압축된 블록 크기의 비교를 설명하기 위한 것이다.
Figure 112015062252636-pat00001
블록이 플랫이 아니면, 결정은 다른 지원된 압축 타입 중 하나인지를 판단하는 것일 수 있다. n x n 블록이 선형 함수 ax + by + c로 표현되는 플래인(또는 그래디언트)으로 나타내지면, 결정은 이루어질 수 있다. a, b, c는 컬러 상수이고, x, y는 픽셀 좌표이다. 또한, 선택적인 상세한 구성 요소가 포함될 수 있다. 컬러 값 = ax + by + c + d (x, y)에 의해 2'의 보수 내에 저장된 픽셀당 가산 값을 사용하여 세부 구성 요소는 선형 방정식에 의해 생성된 컬러를 증가(augment)시킬 수 있다. 이러한 경우에, 세 컬러 값들은 전체 n x n 블록을 나타낼 수 있다(상세한 구성 요소가 포함된 경우 선택적인 네 컬러 값들). 선형 블록들은 4 x 4 블록들에 대하여 대략적인 2에서 2.5x까지의 압축 비율을 제공할 수 있다. 압축 타입 비트들은 압축 타입(01)로 언급될 수 있고, 플래인(또는 그래디언트)를 나타낼 수 있다.
이러한 상황에 대하여, n x n 블록의 세 픽셀 값들을 저장하기 위한 세 옵션들이 있다. 한가지 옵션은 메타-데이터 테이블 내의 사전(140)에 엔트리와 함께 세 픽셀 값들을 저장하는 것이다. 또 다른 옵션은 세 값(RGBA 8888 형식에 대한 12 바이트)들의 길이와 함께 변형된 텍스처로써 메모리에 값들을 저장하는 것이다. 이 경우, 메타데이터는 메모리 내의 비압축된 어드레스를 압축된 어드레스로 매핑할 수 있다. 표 2는 공통 텍셀 형태에 대한 선형 블록의 압축된 블록 크기와 비압축된 블록 크기의 비교를 설명하기 위한 것이다.
Figure 112015062252636-pat00002
블록이 플랫 블록 타입 또는 플레인 타입이 아니면, 결정은 또 스플라인 또는 웨이블릿 압축 타입과 같은 다른 타입인지를 판단하는 것일 수 있다. 예를 들면, 일반적인 웨이블릿 또는 DGR 블록은 골름-라이스(Golomb-Rice (DGR)) 코드에 기초한 일반적인 두 계수 웨이블릿을 사용하여 저장된 블록이다. DGR은 4x 4 블록에 대하여 1.6x의 평균 압축 비율을 제공할 수 있다. 일반적인 웨이블릿 블록은 데이터의 어떠한 다항식 핏(polynomial fit)은 도(degree <4)로 획득될 수 없을 수 있다. 이러한 경우, 그러한 블록들을 저장하는 효율적인 방법은 웨이블릿 기초를 사용하는 것일 수 있다. 블록들은 런-길이 코드(run-length code)에 의해 팔로우 되는 되풀이되는(recursive) 인덱싱을 사용하여 저장될 수 있다. 또한, 블록들을 저장하는 방법은 골름-라이스 코딩 방식을 사용하여 구현될 수도 있다.
DGR 블록들에 대한 압축 크기의 예로 4 x 4 블록들 및 R8, Z24, RGBA8888의 공통 텍셀 형식을 고려할 수 있다. 예를 들면, 이것은 각각 최대 크기 16,48, 64 바이트의 블록들로 이어질 수 있다.
또한, 블록이 허용되는 방식인 다른 압축 방식을 사용하여 압축이 될 수 없다면, 비압축된 데이터를 저장하는 폴백(fallback)이 포함될 수 있다. 예를 들어, 무손실 압축은 동적 텍스처에 대한 요구 사항인 경우를 고려할 수 있다. 무손실 압축이 요구되면, 압축 방식의 어떠한 것도 무손실 압축을 지원하지 않으면, 풀백은 블록에 대해 비압축된 데이터를 저장하는 것일 수 있다. DGR의 경우에, 웨이블릿 압축기는 최대 압축 길이보다 작게 표현하도록 구성하는 규칙을 포함할 수 있다. 블록은 어떠한 압축 없이 저장될 수 있다.
디코더(145)는 비압축된 데이터의 통과를 지원(pass through)할 수 있다. 그러나, 압축된 데이터에 대하여, 디코더는 압축 타입에 기초하여 디코딩 동작을 수행할 수 있다. 압축해제 방식 예는 다음과 같다. 먼저, 샐운 텍스처 캐쉬 라인 어드레스는 레벨 1 캐쉬(102)에 의해 요청될 수 있다. 메타-데이터 캐쉬(103)는 텍스처에 대한 사전 및 메타-데이터를 페치하는 주소 요청을 전송할 수 있다. 비압축된 어드레스는 메타-데이터 캐쉬(130)의 FIFO 내에 저장될 수 있다. 어드레스 요청은 별도의 텍스처 식별기(separate texture identifier (T# ID))를 포함할 수 있다. 4 x 4 타일에 대하여, 특정 텍스처의 쿼드에 대한 요청은 T#의 투플(tuple) 및 텍스처 내에서 어드레스에 의해 식별될 수 있다. 이 정보는 메타데이터 쿼리(query)가 타일 오프셋(어드레스에 기초한 텍스처로부터) 및 타일 내의 4 x 4 블록 오프셋을 포함하여 수행될 수 있도록 허용한다.
레벨 2 캐쉬(104)는 텍스처를 디코딩하기 위해 사전과 함께 메타-데이터를 반환할 수 있다. 이것은 메타-데이터 캐쉬(103) 및 사전 테이블(340)에 저장될 수 있다. 비압축된 어드레스는 FIFO로부터 페치될 수 있고, "압축 타입" 비트에 기초하여 다음 중 하나를 해독(decipher)하기 위해 메타-데이터 캐쉬를 검색하는 데에 사용될 수 있다.
플랫 압축된 블록에 대하여, 압축 타입은 00이다. 00인 압축 타입은 하나의 값에 의해 나타내질 수 있는 캐쉬 라인 어드레스를 나타낼 수 있다. 일실시예에 따르면, 메타-데이터 캐쉬는 n x n 컬러 값들의 확장에 대한 픽셀 값을 페치하고 디코더로 전송하는 사전 테이블에 대한 인덱스를 포함할 수 있다. 데이터는 L1으로 반환될 수 있다. 이러한 경우, 모든 레벨 2 캐쉬 및 메모리 액세스는 제거될 수 있다. 또 다른 예를 들면, 플랫 값은 압축된 데이터와 함께 저장될 수 있다. 이러한 경우, 메타-데이터 캐쉬는 플랫 값이 패취된 압축된 어드래스를 포함할 수 있다.
플래너/그래디언트 압축 블록에 대하여, 압축 타입은 01이고, 캐쉬라인 어드레스는 플래인에 의해 나타낼 수 있는 것을 나타낼 수 있다. 플래인의 3개의 꼭지점들은 메모리에 저장되고, 메타-데이터 캐쉬는 L2 캐쉬 내의 압축된 어드레스를 포함할 수 있다. L2 캐쉬는 디코더로 12B를 반환하고, 디코더는 모든 n x n 값들을 계산하고, 계산된 값들을 L1 캐쉬로 다시 전송할 수 있다.
추가적으로 "압축 타입" 값들은 사용되는 각 압축 알고리즘에 대한 다른 값들을 사용하여 나타내질 수 있다. 예를 들어, 10의 압축 타입은 웨이블릿/DGR 압축을 나타내기 위해 사용될 수 있고, 11의 압축 타입은 비압축된 데이터를 나타내기 위해 사용될 수 있다. 데이터는 L2 캐쉬(304)로부터 페치되거나 사전 테이블로부터 페치되고, 페치된 데이터는 L1 캐쉬(302)로 전송될 수 있다. 웨이블릿 압축의 경우에, 디코더는 비압축된 데이터의 모든 n x n 값들을 계산하고, 계산된 값들을 L1 캐쉬로 전송할 수 있다.
예를 들어, 텍스처(8 x 8)가 RGBA8888(4 바이트 텍셀) 데이터를 포함한다고 가정한다. 텍스처의 전체 크기는 비압축된 256 바이트이다. 일실시예에 따르면, 텍스처는 4개의 4 x 4블록으로 분해(broken down)될 수 있다. 메타데이터는 각 블록에 대해 4개의 엔트리를 포함하는 헤더 테이블을 나타낼 수 있다. 헤더 테이블은 두 개의 값들, 블록 오프셋(바이트 어드레스어빌리티(addressability)에 대한 8비트) 및 블록 길이(1비트, 4바이트 또는 64바이트 블록을 나타낸다)을 저장할 수 있다. 블록 오프셋은 메모리로부터 데이터를 페치하기 위한 텍스처의 기본 어드레스로 추가될 수 있다. 블록의 모든 16개의 값들 및 두 개의 값들이 같다면, 저장의 4바이트만이 전체 블록에 대해 필요할 수 있다. 블록의 압축된 길이는 비압축된 블록에 대한 64 바이트와 비교되는 4 바이트이다. 이 경우, 헤더 테이블의 제1 엔트리는 블록 어드레스 시작을 나타내는 오프셋 0 및 길이 표시자 비트의 0을 가질 수 있다(4 바이트). 제2 엔트리는 텍스처 어드레스 시작으로부터 4바이트를 나타내는 오프셋 4를 가질 수 있다. 블록 3 및 블록 4 내의 텍셀들이 모두 같지 않고, 64B 수(quantities)로서 저장될 수 있다고 가정한다. 헤더 테이블 내의 엔트리 3은 8의 오프셋, 길이가 64B를 나타내기 위한 1의 길이 표시자 비트를 가질 수 있다. 엔트리 4는 유사하게 채워질 수 있다.
텍스처 L1 캐쉬가 텍스처 어드레스를 전송할 때, 압축해제기(120)는 텍셀 어드레스로부터 블록 수를 식별하고, 메타데이터 캐쉬(130)의 헤더 테이블를 검사할 수 있따. 제1 블록 내의 어떤 텍셀에 대하여, 압축해제기(120)는 실제 메모리 어드레스를 계산하기 위해 오프셋을 찾을 수 있다. 압축해제기(120)는 판독되는데 필요한 데이터의 4B만을 알아내기 위해 길이 표시자 비트(이 경우, 0)를 검색할 수 있다. 압축해제기(120)는 4B 만을 페치하기 위하여 L2 캐쉬 및 또는 메모리로 길이와 함께 메모리 어드레스를 전송할 수 있다. 데이터가 L2 캐쉬에 의해 반환되면, 디코더(345)는 블록 내의 모든 16 텍셀들에 대한 컬러 값을 복제하기 위해 길이 비트를 사용할 수 있다.
일실시예에 따르면, 압축해제기(120)는 메모리 BW 감소를 45%까지 제공하면서, 일반적인 경우에 256 바이트를 페치하는 경우와 반대로, 메모리로부터 전체 141 바이트를 페치할 수 있다.
한가지 옵션은 선택적으로 어플리케이션에 대한 가변 레이트 압축을 사용할 수 있다. 가변 레이트 압축은 어플리케이션 내에서 최대의 이익을 제공할 수 있다. 예를 들면, 동적 텍스처들이 런타임동안 GPU에 의해 생성되면, 가변 레이트 압축은 선택적으로 턴 온 될 수 있다. 정적 텍스처들이 사용되면, 가변 레이트 압축은 선택적으로 턴 오프 될 수 있다.
메타 데이터 캐쉬(130) 내의 메타데이터는 계층 테이블 또는 다른 계층 데이터 구조로 구성될 수 있다. 일실시예에 따르면, 4 x 4에서 64 x 64의 블록 크기 같이 지원은 다른 블록 크기에 대하여 제공될 수 있다. 비트 코드는 텍스처의 블록 크기를 나타내기 위해 사용될 수 있다. 예를 들면, 001의 비트 코드는 4 x 4 레벨 계층을 나타내기 위해 사용될 수 있고, 101 비트 코드는 64 x 64 레벨 계층을 나타내게 위해 사용될 수 있다.
계층 메타데이터 구조의 예를 들면, 데이터 구조는 시작 인덱스를 디코더 테이블 및 각 계층을 위한 코드 북 테이블에 저장할 수 있다. 캐쉬는 제공될 수 있다. 캐쉬는 비압축에서 압축으로의 번역 및 메타데이터 디코딩을 수행하는 디코더 테이블일 수 있다. 개별적인 캐쉬는 코드 워드 저장을 위해 코드 북 테이블에 대해 제공될 수 있다. 디코더 테이블은 각 계층을 나타내는 비트, 메모리로 파티션 오프셋을 나타내는 비트, 메모리 내에서 실제 오프셋, 길이, 각 쿼드에 대한 코드 북 값을 포함할 수 있다. 일실시예에 따르면, 코드 북 테이블은 각 쿼드에 대한 4개의 텍셀 값들을 포함할 수 있다.
블록 크기의 선택은 메타-데이터의 전체 크기 및 블록의 압축 비율을 결정할 수 있다. 블록 크기 및 메타데이터 오보헤드 사이에 트레이드오프가 있다. 예를 들면, 4 x 4 블록을 선택하는 것은 선형 압축 또는 플랫 압축을 하는 많은 블록들을 압축하는 것을 지원할 수 있다. 예를 들면, 64 x 64 텍스처는 256 메타-데이터 엔트리를 필요로 한다. 각 메타-데이터 엔트리는 33 비트(메타 데이터의 전체 크기는 1056 B 또는 17 L1 캐쉬 라인)이면, 블록의 2.06 비트/텍셀 또는 6.6%의 메타-데이터 오버헤드를 이끌 수 있다. 블록 크기를 8 x 8 텍셀들로 증가시키는 것은 4x 에서 264B까지, 또는 5 L1$ 캐쉬 라인까지 메타-데이터 오버헤드를 감소시킬 수 있고, 블록의 0.51 비트/텍셀 또는 1.9%의 메타-데이터 오버헤드를 이끌 수 있다. 그러나, 8 x 8 블록에 대한 선형 압축을 수행하는 더 큰 계산 수고가 있다. 결론적으로, 8 x 8 블록은 증가된 산수 때문에 선형 압축을 허용하지 않을 수 있고, 영역 복잡성 및 잠재성은 압축율을 감소시킬 수 있다. 최적의 선택은 드라이버가 다른 블록 크기들 사이를 선택함으로써 제공될 수 있다.
도 5는 일실시예에 따라, 형식 전환(format conversion) 및 컬러/깊이 압축의 흐름을 지원하는 추가적인 선택적 특징들과 함께 가변 레이트 압축기(110)을 포함하는 COMP 블록(510), 메타-데이터 매니저(515) 및 압축된 블록 매니저(520)을 포함하는 압축기를 설명하기 위한 도면이다. 간결성을 위해, 타일 버퍼는 다이어그램에 도시되지 않은 인터페이스를 판독할 수 있다. 타일이 렌더링될 때, 타일 버퍼(105)(TB)는 압축해제/압축 유닛으로 쓴다. 헤더 정보는 타일 버퍼 캐쉬(TBC)를 쓸 것인지를 결정하기 위해 입력으로 사용될 수 있다. 결정은 또한 형식 전환(FC) 및/또는 압축(COMP)인지를 판단하는 것일 수 있다. 게다가, 타일 버퍼는 데이터 타입, 렌더 타겟 타입, 형식, 기초 어드레스(VA), 압축 모드, 관계있는 타일 및 렌더 타겟 내에서 블록 어드레스를 전달하기 위한 보조 정보(auxiliary information)를 전송할 수 있다. 압축 모드는 RT가 압축이 필요한지 여부를 특정하는 것일 수 있다. 형식은 타입, 수 및 컬러 값 내에서 각 구성 요소의 너비를 특정하는 것일 수 있다. 일예시는 RGBA8888_UNORM 데이터이다. 64B 블록은 RGBA8888 데이터의 4 x 4 블록으로 구성될 수 있다. 데이터 타입은 깊이 또는 커러 데이터 및 프리미티브 테이블 데이터일 수 있다(바이패스된다).
압축을 요하는 RTs에 대하여, COMP 유닛(510)은 세 값들을 축적하고, 가변 길이 압축기(VLCs)를 사용하여 압축 동작을 수행하고, 압축된 데이터를 매 사이클에 TB에 의해 특정된 블록 어드레스에서의 L2 캐쉬로 전송할 수 있다. 일예시로, L2 캐쉬로 출력 데이터 크기는 256B 일 수 있다. 이전에 언급했던 바와 같이, 압축 알고리즘의 네 개의 다른 클래스들은 COMP 유닛에 의해 지원될 수 있다. 효율적인 어드레싱을 위하여, 메타데이터 맵은 압축된 데이터의 너비 및 타입에 따라 모든 비압축된 픽셀 위치가 압축된 위치로 변환(translate)되도록 생성될 수 있다. 메타-데이터는 드라이버에 의해 지정된 메타-데이터 어드레스 내에 저장될 수 있다. 메타-데이터 매니저(515)는 메타-데이터 저장 프로세스를 관리하기 위해 할당될 수 있다. 압축된 데이터를 L2 캐쉬 슬라이스로 전송하기 전에 COMP 유닛(510)은 메타-데이터 및 압축된 데이터를 캐쉬라인으로 축적할 수 있다.
RT 가 최종 RT인 경우, RT는 최종 프레임 버퍼로써 L2 캐쉬로 전송될 수 있다. 이 경우, 형식 전환(FC) 유닛은 중간 동작과 연관될 수 있다. FC 유닛은 형식 전환 및 최종 RT 형식으로의 확장을 수행할 수 있다.
도 6은 일실시예에 따라, 가변 레이트 압축 프로세스를 수행하는 압축기의 결정 서브-모듈을 설명하기 위한 도면이다. 블록 압축기는 다음 블록 타입의 전부 또는 일부 검출을 선택하기 위해 4개의 가능한 결과를 결정할 수 있다.
일정
선형
차동 GR 또는 웨이블릿.
비압축됨
압축 프로세스는 15 와이드 감산 블록을 사용하여 모든 픽셀로부터 피봇 값을 뺌으로써(605), 모든 컬러 값들을 델타로 변환함으로써, 각 수신된 비압축된 4 x 4 쿼드로 시작할 수 있다. 피봇 값은 4 x 4 이내의 픽셀, c(0, 0)으로 언급되고, (0, 0)에서 컬러 값으로 고정될 수 있다. 서명되지 않은 특정 데이터 타입들은 이 단계에 대한 하나의 엑스트라 부호 비트로 확장될 필요가 있을 수 있다. 이 단계 D(x, y)의 결과는 연속적인 결정 블록들에 의하여 사용될 수 있다. 블록(610)에서, 결정은 모든 결과 값이 0인지 여부를 판단하는 것이다. 만약 그렇다면, 4 x 4 블록은 일정하게 인코딩될 수 있다. 블록(615)에서, 만약 그렇지 않다면, 결정은 선형 다항식이 값들을 피트되게 할 것인지를 판단하는 것이다. 만약 그렇다면, 블록은 선형 블록으로 인코딩될 수 있다. 블록(620)에서, 만약 그렇지 않다면, 결정은 GR 웨이블릿 압축이 인코딩하기 위해 사용되는지 여부를 판단하는 것이다. 이것은 인코드 값의 전체 크기가 비압축된 크기보다 작은지를 판단하는 확인을 포함할 수 있다. 추가적인 확인은 압축된 크기가 최대 허용된 압축된 크기보다 작은지 여부를 결정하는 것이 수행되었는지이다. 블록이 GR 인코딩을 실패하면, 비압축된 블록(630)으로 작성될 수 있다.
도 6은 선형 시퀀스의 동작을 설명하기 위한 도면이다. 그러나, 보다 일반적으로 동작의 일부는 병렬적으로 수행될 수 있고, 최소 압축 길이를 갖는 압축 방식은 선택될 수 있다. 예를 들면, 최소 압축 길이를 획득하는 압축 방식은 선택되면, 블록(615) 및 블록(620)은 병렬적으로 수행될 수 있다.
하드웨어 지원은 가변 레이트 압축 및 압축해제를 위해 제공될 수 있다. 하드웨어 지원은 하드웨어 내에서 실행되는 수학적인 동작을 사용하여 압축 및 압축해제 프로세싱의 적어도 일부를 실행하는 것을 포함할 수 있다. 즉, 그것은 가능한 하드웨어의 압축 또는 압축해제 프로세스의 정도를 속도 및 전력 소비 관점에서 실행하는 것을 바람직할 수 있다. 가변 레이트 압축 프로세스는 계산적인 속도 및 전력 효율성을 개선하기 위해 하드웨어 어시스트를 사용하여 실행되는 것일 수 있다. 예를 들면, 플랫 압축 타입은 뺄셈 및 덧셈 동작을 수행하기 위해 비교적 간단한 하드웨어를 사용하여 실행될 수 있다. 선형 데이터 압축 타입 및 DGR 압축 타입은 하드웨어 어시스트를 사용하여 수행될 수 있다. 반대로, 디코딩/압축해제 동작은 하드웨어 어시스트를 사용하여 실행될 수 있다. 동적 텍스처들의 런타임동안 가변 레이트 압축 및 압축해제의 사용을 용이하게 하여, 압축 및 압축해제 동작에 대한 하드웨어 이시스트를 사용하는 능력은 속도 및 전력 소비를 개선할 수 있다.
도 7은 일실시예에 따라, 4 x 4 쿼드에 대한 가변 레이트 압축해제 프로세스를 설명하기 위한 도면이다. T#의 터플에 의해 식별된 바와 같이, 특정 텍스처 내의 쿼드를 위한 요청 및 텍스처 내에서 비압축된 어드레스를 수신하면, 메타데이터 번역기(705)는 메타데이터 쿼리를 메타데이터 캐쉬(710)으로 수행할 수 있다. 타일 오프셋(텍스처 기본 어드레스로부터) 및 타일 이내의 4 x 4 블록 오프셋을 계산함으로써, 이 쿼리가 작용할 수 있다. 텍스처 디스크립터(descriptor) (T#을 사용하여 페치된)가 텍스처는 일정한 타일을 가지고 있다고 알리면, 타일 오프셋은 비트-벡터 타일-당 내에 쿼리하기 위해 사용될 수 있다. 이 단계의 결과에 따라, 1 또는 k 캐쉬 라인들은 온-칩 캐쉬 메모리로부터 메타데이터 버퍼로 페치될 필요가 있을 수 있다. 비트-벡터가 타일에 대해 1이면, 메타데이터 라인은 페치되고, 메타데이터 번역기(705)는 어떠한 데이터 페치의 바이패스를 지시할 수 있다. 그렇지 않으면, 압축된 어드레스 및 블록 크기에 대한 메타데이터를 쿼리하고, 판독 요청은 데이터 페치(715) 내에서 관련된 캐쉬 라인들로 전송될 수 있다.
압축된 데이터가 수신되면, 먹스(mux)(720)는 압축된 데이터를 전송하는 데에 이용하고, 압축 타입에 따라 적절한 디코더로 전송될 수 있다. 예를 들어, 플랫 데이터 타입에 대한 압축된 데이터는 대응되는 플랫 데이터 디코더(725)로 전송될 수 있다. 선형(플래너) 데이터 타입에 대한 압축된 데이터는 선형 디코더(730)로 전송될 수 있고, 차이(DAG 웨이블릿)(differential) 데이터 타입은 차이 디코더(differential decoder)(735)로 전송될 수 있다. 통과 경로(pass-through path)에는 비압축된 블록들이 존재할 수 있다.
캐쉬 라인 액팅(cache line acting)의 어드레스와 함께 중간 캐쉬는 압축된 데이터 페치를 줄이기 위해 페치된 압축된 데이터를 캐쉬하는 데이터 페치 블록(715) 내에 포함될 수 있다.
디코딩된 쿼드는 중간 저장 버퍼(740)에 기록될 수 있다. 중간 저장 버퍼(740)는 텍스처 유닛으로 반환되기 전에 4 x 4블록으로 구성될 수 있다.
개별적인 디코더 블록들(725, 730 및 735)은 효율적으로 압축 프로세스에 대한 역 동작인 하드웨어 어시스트를 사용하여 구현될 수 있다. 따라서, 압축해제 프로세스는 상대적으로 빠르고 전력이 효율적으로 실행될 수 있따.
도 8A 및 도 8B는 본 개시에 따른 일실시예이다. 도 8A를 참고하면, 텍스처 파이프라인은 L1 캐쉬를 위한 컬러 데이터를 압축해제하는 방식을 포함할 수 있다. L1 캐쉬 미스들(misses)이 있으면, 미스들은 L2 캐쉬 및 메모리로 어드레스될 수 있다. 단계는 다음과 같다.
1. 프로세서는 입력 코-오디네이터(co-ordinates)를 텍스처 어드레서(texture addresser)로 전송한다.
2. 텍스처 어드레서는 코-오디네이터를 페칭 데이터를 위해 메모리 어드레스로 변환하고, 변환된 메모리 어드레스를 L1 텍스처 캐쉬로 전송한다.
3. L1 텍스처 캐쉬는 데이터를 페치하고, 압축해제기로 전송한다. L1 캐쉬 내의 미스에서, 데이터는 L2 캐쉬 또는 메모리로부터 페치될 수 있다.
4. 손실 압축해제기는 컬러 데이터를 압축해제하고, 압축해제된 컬러 데이터를 텍스처 필터로 전송한다.
5. 필터 유닛은 입력 데이터를 인터폴레이트(interpolate)하고, 인터폴레이트 된 입력 데이터를 다시 프로세서 엔진으로 전송한다.
도 8B는 가변 레이트 압축해제기 블록(120)을 포함하는 프로세스를 설명하기 위한 도면이다. 단계는 다음을 포함한다.
1. L1 캐쉬 내의 미스 사에서, 어드레스는 가변 레이트 압축해제기 블록(120)으로 전송된다. 어드레스는 L2 캐휘 내의 변형된 메모리 어드레스를 찾기 위해 메타데이터 캐쉬(130)의 헤더 테이블에서 검색될 수 있다.
2. L2 캐쉬는 변형된 텍스처 데이터를 다시 가변 레이트 압축해제기 블록(120)으로 전송한다. 블록은 변형된 데이터를 실제 텍스처 데이터로 디코딩하고, 실제 텍스처 데이터는 L1 캐쉬로 다시 전송된다.
도 8A 및 도 8B의 개시에 따라, 가변 레이트 압축 및 압축해제 접근은 종래 압축해제 방식과 결합하여 사용될 수 있다. 즉, 본 개시는 종래의 압축 및 압축해제 접근에 상보적인 방식으로 사용될 수 있다. 예를 들면, 효율적으로, L2 캐쉬 메모리 내에 압축된 형태의 텍스처 데이터를 저장하는 단계를 포함할 수 있다. L1 캐쉬 미스가 있다면, L2 캐쉬 메모리 내의 칩 상에 압축된 텍스처 데이터의 효율적인 저장은 오프-칩 메모리 액세스 필요를 감소시킬 수 있다.
가변 레이트 압축 및 압축해제는 런타임에서 생성된 동적 텍스처와 함께 사용될 수 있다. 가변 레이트 압축 및 압축해제를 위한 하드웨어 어시스트는 속도 및 에너지 효율성에 대한 수행 이점을 제공할 수 있다. 결론적으로, 가변 레이트 압축 및 압축해제를 수행하는 하드웨어 어시스트의 사용은 속도 및 에너지 효율성에 대한 중요한 장점을 제공할 수 있다.
본 개시에 따른 어플리케이션은 동적 텍스처들과 함께 사용될 수 있다. 손실없는 압축은 동적 텍스처에서 요구될 수 있다. 그러나, 가변 레이트 압축 및 압축해제는 손실 압축을 수용하는 어플리케이션에도 적용될 수 있다.
본 발명은 특정 실시예와 관련하여 설명되었지만, 기술된 실시예에 본 발명을 제한하지 않는 것으로 이해할 수 있다. 등가물, 변형, 대체물은 첨부된 청구항에 의해 정의된 본 발명의 사상 및 범위 내에 포함되는 것으로 의도될 수 있다. 본 발명은 이러한 특정 세부 사항의 일부 또는 전부 없이도 실시될 수 있다. 또한, 본 발명과 모호하게 하는 것을 피하기 위해 잘 알려진 특징들을 상세하게 설명하지 않을 수 있다. 구성요소, 프로세스 단계, 및/또는 데이터 구조는 다양한 타입의 운영 시스템, 프로그래밍 언어, 컴퓨팅 플랫폼, 컴퓨터 프로그램, 및/또는 일반적인 목적 기계를 사용하여 구현될 수 있다. 또한, 본 기술 분야 내의 통상의 지식을 가진 자는 하드웨어 장치, FPGAs(field programmable gate arrays), ASICs(application specific integrated circuits) 등과 같은 장치에서 본 발명을 인식할 수 있고, 본 명세서에 개시된 발명의 개념의 범위 및 사상을 벗어나지 않고 사용될 수 있다. 본 발명은 또한 메모리 장치와 같은 컴퓨터 판독 가능한 매체 상에 저장된 컴퓨터 명령어들의 세트로 구현될 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다.
처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다.
이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다.
소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.
컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다.
프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.

Claims (21)

  1. 그래픽 프로세싱 시스템의 텍스처 파이프라인 내의 픽셀 또는 텍셀 값의 가변 레이트 압축 방법에 있어서,
    텍스처 또는 영상과 연관된 컬러 값들의 블록의 세트를 분석하는 단계;
    서로 다른 압축된 길이를 지원하는 복수의 압축 데이터 타입들 중 상기 컬러 값들의 각 블록에 대한 압축 데이터 타입을 결정하는 단계;
    상기 컬러 값들의 각 블록에 대하여, 상기 결정된 압축 데이터 타입에 기초하여 각 블록의 컬러 데이터를 압축하는 단계; 및
    상기 컬러 값들의 각 압축된 블록에 대하여, 각 블록의 비압축된 텍스처 어드레스 스페이스를 각 블록의 압축 데이터 타입을 나타내는 압축된 텍스처 어드레스 스페이스로 매핑하는 것을 정의하는 메타 데이터를 생성하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 블록의 세트 내의 중복 블록은 대표적인 압축된 데이터의 단일 인스턴스로 인덱스되는 것을 특징으로 하는 방법.
  3. 삭제
  4. 제1항에 있어서,
    제1 압축 데이터 타입은 플랫 데이터 타입인 것을 특징으로 하고,
    상기 제1 압축 데이터 타입 내의 상기 블록의 상기 모든 컬러 값들은 동일한 값을 갖고, 단일 대표적인 컬러 값은 상기 블록의 데이터를 나타내도록 압축되는, 방법.
  5. 제4항에 있어서,
    제2 압축 데이터 타입은 플래너 데이터 타입인 것을 특징으로 하고,
    상기 제2 압축 데이터 타입 내의 세 컬러 값들은 상기 블록의 컬러 값을 나타내기 위해 사용되는, 방법.
  6. 제4항에 있어서,
    제3 압축 데이터 타입은 웨이블릿 데이터 타입 또는 스플라인 데이터 타입인 것을 특징으로 하고,
    웨이블릿 또는 스플라인 압축은 상기 블록의 상기 컬러 값들을 압축하는 데에 사용되는, 방법.
  7. 제1항에 있어서,
    상기 압축은 동적 텍스처에 대한 런타임에서 수행되는, 방법.
  8. 제1항에 있어서,
    상기 압축 데이터 타입 및 상기 블록에 대한 압축된 데이터를 식별하기 위한 상기 메타데이터를 이용하는 단계; 및 상기 블록에 대한 비압축된 컬러 데이터를 획득하기 위한 압축 데이터 타입으로 선택된 디코더를 사용하여 압축해제를 수행하는 단계를 더 포함하는, 방법.
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 제1항에 있어서,
    상기 가변 레이트 압축은 텍스처를 압축하고, 온-칩 L2 캐쉬 메모리 내의 변형된 텍스처로서 얻어진 압축된 데이터를 저장하는, 방법.
  14. 제13항에 있어서,
    캐쉬 메모리 미스에 응답하여, 상기 압축된 텍스처 데이터의 상기 어드레스를 결정하기 위해 메타데이터를 사용하는 단계, 상기 압축된 텍스처 데이터를 추출하는 단계, 상기 압축된 텍스처 데이터를 디코딩하는 단계 및 비압축된 텍스처 데이터를 상기 캐쉬 메모리로 제공하는 단계를 더 포함하는, 방법.
  15. 그래픽 프로세싱 유닛에 있어서,
    텍스처 파이프라인을 포함하고, 상기 텍스처 파이프라인은,
    데이터에 대한 압축 데이터 타입을 결정하고, 서로 다른 압축 길이를 지원하는 복수의 압축 데이터 타입들에 대해 적어도 다른 둘의 상기 압축 길이들을 사용하여 텍스처들의 데이터의 블록의 가변 레이트 압축을 수행하는 압축기; 및 상기 압축된 데이터의 압축해제를 수행하는 압축해제기를 포함하는 그래픽 프로세싱 유닛.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
KR1020150091389A 2014-06-27 2015-06-26 주파수 압축과 텍스처 파이프라인 KR102381944B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462018178P 2014-06-27 2014-06-27
US62/018,178 2014-06-27
US14/742,291 2015-06-17
US14/742,291 US9947071B2 (en) 2014-06-27 2015-06-17 Texture pipeline with online variable rate dictionary compression

Publications (2)

Publication Number Publication Date
KR20160001701A KR20160001701A (ko) 2016-01-06
KR102381944B1 true KR102381944B1 (ko) 2022-04-01

Family

ID=54931091

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150091389A KR102381944B1 (ko) 2014-06-27 2015-06-26 주파수 압축과 텍스처 파이프라인

Country Status (2)

Country Link
US (1) US9947071B2 (ko)
KR (1) KR102381944B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190113494A (ko) * 2018-03-26 2019-10-08 삼성디스플레이 주식회사 변환 기반 스트레스 프로파일 압축

Families Citing this family (26)

* 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
GB2526598B (en) * 2014-05-29 2018-11-28 Imagination Tech Ltd Allocation of primitives to primitive blocks
US10244250B2 (en) * 2015-05-29 2019-03-26 Samsung Electronics Co., Ltd. Variable-rate texture compression using fixed-rate codes
US9842410B2 (en) * 2015-06-18 2017-12-12 Samsung Electronics Co., Ltd. Image compression and decompression with noise separation
WO2017125151A1 (en) * 2016-01-20 2017-07-27 Hewlett-Packard Development Company L.P. Imaging pipeline processing
GB2547242B (en) * 2016-02-11 2018-05-23 Advanced Risc Mach Ltd Graphics processing
US10055810B2 (en) * 2016-03-04 2018-08-21 Samsung Electronics Co., Ltd. Cache architecture for efficiently accessing texture data using buffers
GB2552136B (en) * 2016-06-29 2019-10-02 Advanced Risc Mach Ltd Storing headers for encoded blocks of data in memory according to a tiled layout
US11011096B2 (en) * 2016-08-25 2021-05-18 Sharp Nec Display Solutions, Ltd. Self-diagnostic imaging method, self-diagnostic imaging program, display device, and self-diagnostic imaging system
US10719447B2 (en) 2016-09-26 2020-07-21 Intel Corporation Cache and compression interoperability in a graphics processor pipeline
CN107301194B (zh) * 2016-10-09 2021-01-01 上海炬宏信息技术有限公司 瓦片式栅格地图的压缩存储及发布方法
KR20180056313A (ko) 2016-11-18 2018-05-28 삼성전자주식회사 텍스처를 처리하는 방법 및 장치
CN111726639B (zh) * 2016-11-18 2023-05-30 上海兆芯集成电路有限公司 纹理砖压缩及解压缩方法以及使用该方法的装置
US10445902B2 (en) * 2016-12-13 2019-10-15 Qualcomm Incorporated Fetch reduction for fixed color and pattern sub-frames
US10061698B2 (en) 2017-01-31 2018-08-28 Qualcomm Incorporated Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compression memory system when stalled write operations occur
US10783694B2 (en) * 2017-08-25 2020-09-22 Advanced Micro Devices, Inc. Texture residency checks using compression metadata
US10776957B2 (en) * 2018-10-02 2020-09-15 Samsung Electronics Co., Ltd. Online image compression in hardware
US10657699B1 (en) * 2018-12-08 2020-05-19 Arm Limited Performing texturing operations for sets of plural execution threads in graphics processing systems
CN115100020A (zh) * 2019-01-18 2022-09-23 奇跃公司 虚拟、增强和混合现实系统以及方法
US20200250101A1 (en) * 2019-02-06 2020-08-06 Qualcomm Incorporated System and method for intelligent tile-based memory bandwidth management
US11823421B2 (en) * 2019-03-14 2023-11-21 Nokia Technologies Oy Signalling of metadata for volumetric video
US11748839B2 (en) 2020-04-16 2023-09-05 Samsung Electronics Co., Ltd. Efficient fast random access enabled geometry attribute compression mechanism
EP4111306A4 (en) * 2020-05-26 2023-05-03 Huawei Technologies Co., Ltd. DEVICE AND METHOD FOR DATA PACKING IN A MEMORY
GB2613177A (en) * 2021-11-25 2023-05-31 Advanced Risc Mach Ltd Cache arrangements in data processing systems
GB2614073A (en) * 2021-12-21 2023-06-28 Advanced Risc Mach Ltd Cache systems
CN116303134A (zh) * 2021-12-21 2023-06-23 Arm有限公司 高速缓存系统

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05316360A (ja) 1992-05-14 1993-11-26 Fuji Xerox Co Ltd 画像信号の符号化復号装置
US5682441A (en) 1995-11-08 1997-10-28 Storm Technology, Inc. Method and format for storing and selectively retrieving image data
JPH10257488A (ja) 1997-03-12 1998-09-25 Oki Data:Kk 画像符号化装置および画像復号化装置
JP4124910B2 (ja) 1999-05-18 2008-07-23 キヤノン株式会社 画像データの復号化方法及びその装置
US7202912B2 (en) 2000-05-12 2007-04-10 Thomson Licensing Method and system for using single OSD pixmap across multiple video raster sizes by chaining OSD headers
US6819793B1 (en) * 2000-06-30 2004-11-16 Intel Corporation Color distribution for texture and image compression
US7245316B2 (en) 2002-01-25 2007-07-17 Thomson Licensing Method and system for maintaining even tube burn-in
JP2004153751A (ja) 2002-11-01 2004-05-27 Ricoh Co Ltd 画像処理装置及び画像処理方法
WO2004068844A1 (ja) 2003-01-30 2004-08-12 Fujitsu Limited 画像圧縮方法、画像復元方法、プログラム及び装置
JP4285127B2 (ja) 2003-07-30 2009-06-24 セイコーエプソン株式会社 減色処理装置及び減色処理方法
US8213727B2 (en) 2007-06-20 2012-07-03 Canon Kabushiki Kaisha Image encoding apparatus and image decoding apparatus, and control method thereof
JP4510069B2 (ja) 2007-12-10 2010-07-21 シャープ株式会社 画像処理装置、画像表示装置、画像形成装置、画像処理方法、コンピュータプログラム及び記憶媒体
US8624910B2 (en) 2009-09-23 2014-01-07 Nvidia Corporation Register indexed sampler for texture opcodes
JP5558767B2 (ja) 2009-09-25 2014-07-23 キヤノン株式会社 画像処理装置及びその処理方法
US8478057B1 (en) * 2010-01-22 2013-07-02 Google Inc. Image compression and decompression using block prediction
JP5393574B2 (ja) 2010-04-08 2014-01-22 キヤノン株式会社 画像処理装置、画像処理方法、及びプログラム
JP5538993B2 (ja) 2010-04-28 2014-07-02 キヤノン株式会社 画像処理装置、画像処理方法、プログラム、および記憶媒体
JP2011259246A (ja) 2010-06-09 2011-12-22 Canon Inc 画像処理装置、画像処理方法、及びプログラム
US8533166B1 (en) * 2010-08-20 2013-09-10 Brevity Ventures LLC Methods and systems for encoding/decoding files and transmission thereof
JP5643574B2 (ja) 2010-08-26 2014-12-17 キヤノン株式会社 画像処理装置及び画像処理方法
CN103210648B (zh) * 2010-09-10 2017-06-09 汤姆逊许可公司 使用基于块的混合分辨率数据修剪的视频解码
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190113494A (ko) * 2018-03-26 2019-10-08 삼성디스플레이 주식회사 변환 기반 스트레스 프로파일 압축
KR102582120B1 (ko) 2018-03-26 2023-09-22 삼성디스플레이 주식회사 변환 기반 스트레스 프로파일 압축

Also Published As

Publication number Publication date
US20150379684A1 (en) 2015-12-31
KR20160001701A (ko) 2016-01-06
US9947071B2 (en) 2018-04-17

Similar Documents

Publication Publication Date Title
KR102381944B1 (ko) 주파수 압축과 텍스처 파이프라인
US11043010B2 (en) Real time on-chip texture decompression using shader processors
US6452602B1 (en) Method and apparatus for storing compressed data
US10062143B2 (en) Method and apparatus for compressing randomly accessed data
US20110243469A1 (en) Selecting and representing multiple compression methods
US10244250B2 (en) Variable-rate texture compression using fixed-rate codes
JP2010535393A (ja) グラフィックス・システムにおける可変長の圧縮と関連付けのための方式
US9852522B2 (en) Image decoder, graphics processing system, image decoding method, and graphics processing method
JP2000105839A (ja) 圧縮テクスチャ・デ―タ構造
KR102646818B1 (ko) 그래픽스 파이프라인에서의 인덱스들의 압축 및 압축 해제
US8674858B2 (en) Method for compression and real-time decompression of executable code
US10824357B2 (en) Updating data stored in a memory
KR20190120166A (ko) 델타 색상 압축의 비디오 적용
US20180004443A1 (en) Accessing encoded blocks of data in memory
US8243086B1 (en) Variable length data compression using a geometry shading unit
US8254701B1 (en) Data compression using a geometry shading unit
US10187663B2 (en) Technique for performing variable width data compression using a palette of encodings
US11954028B2 (en) Accessing encoded blocks of data
US11327687B2 (en) Encoding data arrays
JP5928914B2 (ja) グラフィックス処理装置およびグラフィックス処理方法
JP6465606B2 (ja) グラフィックス処理装置およびグラフィックス処理方法

Legal Events

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