KR20160047315A - 캐시 메모리 시스템 및 그 동작방법 - Google Patents

캐시 메모리 시스템 및 그 동작방법 Download PDF

Info

Publication number
KR20160047315A
KR20160047315A KR1020140143600A KR20140143600A KR20160047315A KR 20160047315 A KR20160047315 A KR 20160047315A KR 1020140143600 A KR1020140143600 A KR 1020140143600A KR 20140143600 A KR20140143600 A KR 20140143600A KR 20160047315 A KR20160047315 A KR 20160047315A
Authority
KR
South Korea
Prior art keywords
texture
textures
data
cache memory
partition
Prior art date
Application number
KR1020140143600A
Other languages
English (en)
Other versions
KR102366808B1 (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 삼성전자주식회사
Priority to KR1020140143600A priority Critical patent/KR102366808B1/ko
Priority to US14/795,032 priority patent/US9773476B2/en
Priority to EP15178853.6A priority patent/EP3012741B1/en
Priority to JP2015150285A priority patent/JP2016085729A/ja
Priority to CN201510672739.1A priority patent/CN105550126B/zh
Publication of KR20160047315A publication Critical patent/KR20160047315A/ko
Application granted granted Critical
Publication of KR102366808B1 publication Critical patent/KR102366808B1/ko

Links

Images

Classifications

    • 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
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of 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/121Frame memory handling using a cache memory

Landscapes

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

Abstract

일 실시예에 따른 캐시 메모리 시스템은 적어도 하나의 뱅크들을 포함하는 캐시 메모리, 상기 뱅크들을 픽셀 쉐이딩 시 필요한 복수의 텍스쳐들 중 적어도 하나의 텍스쳐에 할당함으로써, 상기 캐시 메모리를 복수의 파티션들로 분할하는 파티션 구성부(partition configuration unit) 및 상기 픽셀 쉐이딩을 수행하는 장치로부터 요청되는 텍스쳐 데이터의 파티션 아이디를 수신하고, 상기 복수의 파티션들 중 상기 파티션 아이디에 대응하는 파티션에 상기 요청된 텍스쳐 데이터가 저장되어 있는지 여부를 판단하여, 상기 판단결과에 따라, 상기 요청된 텍스쳐 데이터를 상기 장치로 출력하는 컨트롤러를 포함할 수 있다.

Description

캐시 메모리 시스템 및 그 동작방법{Cache memory system and operating method for the same}
다양한 실시예들은 캐시 메모리 시스템 및 그 동작방법에 관한 것으로, 더욱 구체적으로는 캐시 미스 확률을 감소시킬 수 있는 캐시 메모리 시스템 및 그 동작방법에 관한 것이다.
일반적으로 CPU나 GPU와 같은 처리 장치는 대용량의 외부 메모리에 저장된 명령어나 데이터를 가져와서 처리한다. 대부분의 대용량 외부 메모리의 처리 속도는 처리 장치에 비해서 매우 느리기 때문에 동작 속도를 개선하기 위해 캐시 메모리 시스템을 사용하고 있다.
캐시 메모리 시스템은 처리 장치가 최근에 액세스(access)한 데이터를 저장하고 있다가, 처리 장치가 동일한 데이터를 다시 요구하는 경우, 외부 메모리를 액세스(access)하지 않고, 고속의 캐시 메모리를 액세스(access)하도록 함으로써, 데이터 전송 속도를 향상시키는 역할을 한다.
처리 장치가 요청한 데이터가 캐시 메모리 시스템의 데이터 메모리에 저장되어 있는 경우(캐시 히트, cache hit)에는 데이터 메모리의 데이터가 처리 장치로 전달되고, 처리 장치가 요청한 데이터가 없는 경우(캐시 미스, cache miss)에는 외부 메모리로부터 데이터를 읽어온다. 또한, 캐시 메모리 시스템은 데이터 메모리에 저장되어 있는 캐시 데이터들 중 어느 하나를 삭제하고, 읽어온 데이터로 업데이트 하며, 읽어온 데이터는 처리 장치로 전달된다.
이러한 캐시 메모리 시스템은 매핑(mapping) 방식에 따라서 세트 연관 매핑 방식을 이용하는 세트 연관 캐시 메모리와, 직접 매핑 방식을 이용하는 직접 맵 캐시 메모리(Direct Mapped Cache Memory)로 구현할 수 있다. 세트 연관 캐시 메모리는 복수의 웨이(Way)를 가지며, 캐시 미스의 경우, 교체 정책(replacement status)에 따라 어느 하나의 웨이에 대응하는 캐시 데이터를 외부 메모리로부터 읽어온 새로운 데이터로 업데이트 한다.
캐시 미스(cache miss) 확률을 감소시킬 수 있는 캐시 메모리 시스템 및 그 동작방법을 제공하는 데 있다.
일 실시예에 따른 캐시 메모리 시스템은 적어도 하나의 뱅크들을 포함하는 캐시 메모리, 상기 뱅크들을 렌더링에 필요한 복수의 텍스쳐들 중 적어도 하나의 텍스쳐에 할당함으로써, 상기 캐시 메모리를 복수의 파티션들로 분할하는 파티션 구성부(partition configuration unit) 및 상기 렌더링을 수행하는 장치로부터 요청되는 텍스쳐 데이터의 파티션 아이디를 수신하고, 상기 복수의 파티션들 중 상기 파티션 아이디에 대응하는 파티션에 상기 요청된 텍스쳐 데이터가 저장되어 있는지 여부를 판단하여, 상기 판단결과에 따라, 상기 요청된 텍스쳐 데이터를 상기 장치로 출력하는 컨트롤러를 포함할 수 있다.
일 실시예에 따른 캐시 메모리는, 상기 복수의 텍스쳐들 중 제1 텍스쳐에 포함되는 일부 텍스쳐 데이터들을 상기 제1 텍스쳐에 대응하는 파티션에 저장하고, 제2 텍스쳐에 포함되는 일부 텍스쳐 데이터들을 상기 제2 텍스쳐에 대응하는 파티션에 저장할 수 있다.
일 실시예에 따른 컨트롤러는, 상기 요청되는 텍스쳐 데이터의 세트 어드레스 및 태그 어드레스를 수신하고, 상기 파티션 아이디에 대응하는 파티션에 포함되는 적어도 하나의 세트 중 상기 세트 어드레스가 가리키는 세트에 포함되는 태그 데이터들을 상기 태그 어드레스와 비교하여, 상기 요청된 텍스쳐 데이터가 저장되어 있는지 여부를 판단할 수 있다.
일 실시예에 따른 컨트롤러는, 상기 비교결과, 상기 태그 데이터들 중 어느 하나와 상기 태그 어드레스가 일치하는 경우, 캐시 히트로 판단하고, 상기 일치하는 태그 데이터에 대응하는 텍스쳐 데이터를 상기 장치로 출력할 수 있다.
일 실시예에 따른 컨트롤러는, 상기 비교결과, 상기 태그 데이터들이 상기 태그 어드레스와 일치하지 않는 경우, 캐시 미스로 판단하고, 텍스쳐 메모리의 상기 태그 어드레스가 가리키는 영역으로부터 상기 요청된 텍스쳐 데이터를 수신할 수 있다.
일 실시예에 따른 파티션 구성부는, 상기 텍스쳐들의 개수와 상기 뱅크들의 개수를 비교하고, 상기 비교 결과에 기초하여, 상기 뱅크들을 상기 텍스쳐들 중 적어도 하나에 할당할 수 있다.
일 실시예에 따른 파티션 구성부는, 상기 비교 결과, 상기 텍스쳐들의 개수가 상기 뱅크들의 개수보다 작은 경우, 상기 텍스쳐들 각각에 하나의 뱅크를 할당하고, 상기 할당되지 않은 나머지 뱅크를 상기 텍스쳐들 중 어느 하나에 추가로 할당하며, 상기 텍스쳐들 각각에 할당된 적어도 하나의 뱅크들을 하나의 파티션으로 결정할 수 있다.
일 실시예에 따른 파티션 구성부는, 상기 텍스쳐들 중 밉맵되지 않은 텍스쳐(non-mipmapped texture)를 검출하고, 상기 검출된 텍스쳐에 상기 할당되지 않은 나머지 뱅크를 추가로 할당할 수 있다.
일 실시예에 따른 파티션 구성부는, 상기 렌더링에 이용되는 쉐이더 프로그램과 동일한 쉐이더 프로그램을 이용한 이전 렌더링 결과에 기초하여, 상기 텍스쳐들의 접근 패턴을 분석하고, 상기 분석결과에 기초하여, 상기 할당되지 않은 나머지 뱅크를 상기 텍스쳐들 중 어느 하나에 추가로 할당할 수 있다.
일 실시예에 따른 파티션 구성부는, 상기 렌더링 중에, 상기 텍스쳐들의 접근 패턴을 실시간으로 모니터링하고, 상기 모니터링 결과에 기초하여, 상기 할당되지 않은 나머지 뱅크를 상기 텍스쳐들 중 어느 하나에 동적으로 추가 할당할 수 있다.
일 실시예에 따른 파티션 구성부는, 상기 비교 결과, 상기 텍스쳐들의 개수가 상기 뱅크들의 개수보다 큰 경우, 상기 텍스쳐들 중 제1 텍스쳐 및 제2 텍스쳐에 동일한 뱅크를 할당하고, 상기 동일한 뱅크를 하나의 파티션으로 결정할 수 있다.
일 실시예에 따른 파티션 구성부는, 상기 텍스쳐들 중 텍스쳐 좌표를 공유하지 않는 상기 제1 텍스쳐 및 제2 텍스쳐를 검출할 수 있다.
일 실시예에 따른 파티션 구성부는, 상기 텍스쳐들 중 텍스쳐 크기가 서로 다른 상기 제1 텍스쳐 및 제2 텍스쳐를 검출할 수 있다.
일 실시예에 따른 캐시 메모리 시스템의 동작방법은, 캐시 메모리에 포함되는 적어도 하나의 뱅크들을 렌더링에 필요한 복수의 텍스쳐들 중 적어도 하나의 텍스쳐에 할당함으로써, 상기 캐시 메모리를 복수의 파티션들로 분할하는 단계, 상기 렌더링을 수행하는 장치로부터 요청되는 텍스쳐 데이터의 파티션 아이디를 수신하는 단계, 상기 복수의 파티션들 중 상기 파티션 아이디에 대응하는 파티션에 상기 요청된 텍스쳐 데이터가 저장되어 있는지 여부를 판단하는 단계 및 상기 판단결과에 따라, 상기 요청된 텍스쳐 데이터를 상기 장치로 출력하는 단계를 포함할 수 있다.
일 실시예에 따른 캐시 메모리 시스템의 동작방법은, 상기 요청되는 텍스쳐 데이터의 세트 어드레스 및 태그 어드레스를 수신하는 단계를 더 포함하고, 상기 판단하는 단계는, 상기 파티션 아이디에 대응하는 파티션에 포함되는 적어도 하나의 세트 중 상기 세트 어드레스가 가리키는 세트에 포함되는 태그 데이터들을 상기 태그 어드레스와 비교하여, 상기 요청된 텍스쳐 데이터가 저장되어 있는지 여부를 판단하는 단계일 수 있다.
일 실시예에 따른 상기 판단결과에 따라, 상기 요청된 텍스쳐 데이터를 상기 장치로 출력하는 단계는, 상기 비교결과, 상기 태그 데이터들 중 어느 하나와 상기 태그 어드레스가 일치하는 경우, 캐시 히트로 판단하고, 상기 일치하는 태그 데이터에 대응하는 텍스쳐 데이터를 상기 장치로 출력하는 단계일 수 있다.
일 실시예에 따른 상기 판단결과에 따라, 상기 요청된 텍스쳐 데이터를 상기 장치로 출력하는 단계는, 상기 비교결과, 상기 태그 데이터들이 상기 태그 어드레스와 일치하지 않는 경우, 캐시 미스로 판단하고, 상기 텍스쳐 메모리의 상기 태그 어드레스가 가리키는 영역으로부터 상기 요청된 데이터를 수신하는 단계를 더 포함할 수 있다.
일 실시예에 따른 상기 캐시 메모리를 복수의 파티션들로 분할하는 단계는, 상기 텍스쳐들의 개수와 상기 뱅크들의 개수를 비교하는 단계를 더 포함하고, 상기 비교 결과에 기초하여, 상기 뱅크들을 상기 텍스쳐들 중 적어도 하나에 할당하여, 상기 캐시 메모리를 복수의 파티션들로 분할할 수 있다.
일 실시예에 따른 상기 비교 결과, 상기 텍스쳐들의 개수가 상기 뱅크들의 개수보다 작은 경우, 상기 캐시 메모리를 복수의 파티션들로 분할하는 단계는, 상기 텍스쳐들 각각에 하나의 뱅크를 할당하는 단계, 상기 할당되지 않은 나머지 뱅크를 상기 텍스쳐들 중 어느 하나에 추가로 할당하는 단계 및 상기 텍스쳐들 각각에 할당된 적어도 하나의 뱅크들을 하나의 파티션으로 결정하는 단계를 포함할 수 있다.
일 실시예에 따른 상기 할당되지 않은 나머지 뱅크를 상기 텍스쳐들 중 어느 하나에 추가로 할당하는 단계는, 상기 텍스쳐들 중 밉맵되지 않은 텍스쳐(non-mipmapped texture)를 검출하는 단계 및 상기 검출된 텍스쳐에 상기 할당되지 않은 나머지 뱅크를 추가로 할당하는 단계를 포함할 수 있다.
일 실시예에 따른 상기 할당되지 않은 나머지 뱅크를 상기 텍스쳐들 중 어느 하나에 추가로 할당하는 단계는, 상기 렌더링에 이용되는 쉐이더 프로그램과 동일한 쉐이더 프로그램을 이용한 이전 렌더링 결과에 기초하여, 상기 텍스쳐들의 접근 패턴을 분석하는 단계 및 상기 분석결과에 기초하여, 상기 할당되지 않은 나머지 뱅크를 상기 텍스쳐들 중 어느 하나에 추가로 할당하는 단계를 포함할 수 있다.
일 실시예에 따른 상기 할당되지 않은 나머지 뱅크를 상기 텍스쳐들 중 어느 하나에 추가로 할당하는 단계는, 상기 렌더링 중에, 상기 텍스쳐들의 접근 패턴을 실시간으로 모니터링하는 단계 및 상기 모니터링 결과에 기초하여, 상기 할당되지 않은 나머지 뱅크를 상기 텍스쳐들 중 어느 하나에 동적으로 추가 할당하는 단계를 포함할 수 있다.
일 실시예에 따른 상기 비교 결과, 상기 텍스쳐들의 개수가 상기 뱅크들의 개수보다 큰 경우, 상기 캐시 메모리를 복수의 파티션들로 분할하는 단계는, 상기 복수의 텍스쳐들 중 제1 텍스쳐 및 제2 텍스쳐에 동일한 뱅크를 할당하는 단계, 및 상기 동일한 뱅크를 하나의 파티션으로 결정하는 단계를 포함할 수 있다.
일 실시예에 따른 상기 캐시 메모리를 복수의 파티션들로 분할하는 단계는, 상기 텍스쳐들 중 텍스쳐 좌표를 공유하지 않는 상기 제1 텍스쳐 및 제2 텍스쳐를 검출하는 단계를 더 포함할 수 있다.
일 실시예에 따른 상기 캐시 메모리를 복수의 파티션들로 분할하는 단계는, 상기 텍스쳐들 중 텍스쳐 크기가 서로 다른 상기 제1 텍스쳐 및 제2 텍스쳐를 검출하는 단계를 더 포함할 수 있다.
복수의 텍스쳐들에 뱅크를 효율적으로 할당함으로써, 캐시 미스(cache miss) 확률을 감소시킬 수 있다.
또한, 해당 파티션 내에서만 캐싱 동작이 이루어지기 때문에, 전력 소모량을 감소시킬 수 있다.
도 1은 3차원 이미지의 렌더링 과정을 나타내는 도면이다.
도 2는 본 발명의 일 실시예에 따른 픽셀 쉐이딩 처리 시스템을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시예에 따른 캐시 메모리 시스템의 구성을 나타내는 블록도이다.
도 4는 본 발명의 일 실시예에 따른 캐시 메모리를 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 캐시 메모리 시스템의 동작방법을 설명하기 위해 참조되는 도면이다.
도 6 및 도 7은 본 발명의 일 실시예에 따른 캐시 메모리 시스템에서, 캐시 메모리를 복수의 파티션으로 분할하는 방법을 설명하기 위해 참조되는 도면들이다.
도 8은 본 발명의 일 실시예에 따른 캐시 메모리 시스템의 동작방법을 나타내는 흐름도이다.
도 9 및 도 10은 도 8의 610 단계(S610)의 일 실시예들을 설명하기 위한 흐름도이다.
실시 예들에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 “포함”한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 “…부”, “…모듈” 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
아래에서는 첨부한 도면을 참고하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
이하에서는 도면을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 3차원 이미지의 렌더링 과정을 나타내는 도면이다.
도 1을 참조하면, 3차원 이미지의 렌더링 과정은 11단계(S11) 내지 17단계(S17)들을 포함할 수 있다. 또한, 도 1 하단의 도형들은 각 단계에서 정점(vertex) 또는 픽셀의 처리를 개념적으로 나타낸다.
11단계(S11)는 영상을 나타내는 정점(vertex)들을 생성하는 단계이다. 정점들은 영상에 포함된 오브젝트(object)들을 나타내기 위해 생성된다.
12단계(S12)는 생성된 정점들을 쉐이딩(shading)하는 단계이다. 정점 쉐이더(vertex shader)는 11단계(S11)에서 생성된 정점들의 색(color)을 지정하여, 정점들에 대한 쉐이딩을 수행할 수 있다.
13단계(S13)는 프리미티브들(primitives)을 생성하는 단계이다. 프리미티브는 점, 선 또는 정점들로부터 형성되는 다각형(polygon)을 나타낸다. 일 예로서, 프리미티브들은 정점들을 연결하여 형성된 삼각형들을 나타낼 수도 있다.
14단계(S14)는 프리미티브를 래스터화(rasterization)하는 단계이다. 프리미티브를 래스터화하는 것은 프리미티브를 복수의 프레그먼트들(fragments)로 분할하는 것을 나타낸다. 프레그먼트는 프리미티브를 구성하는 단위이며, 영상 처리를 수행하기 위한 기본 단위일 수 있다. 프리미티브는 정점에 대한 정보만을 포함한다. 따라서, 래스터화하는 단계에서 정점과 정점 사이의 프레그먼트들을 생성할 때 보간(interpolation)이 수행된다.
15단계(S15)는 픽셀을 쉐이딩하는 단계를 나타낸다. 도 1에서는 픽셀 단위로 쉐이딩이 수행되는 것을 도시하고 있으나, 프레그먼트 단위로 쉐이딩이 수행될 수도 있다. 예를 들어, 픽셀 또는 프레그먼트를 쉐이딩하는 것은 픽셀 또는 프레그먼트의 색을 지정하는 것이다.
16단계(S16)는 래스터 오퍼레이션 단계를 나타낸다. 래스터 오퍼레이션 단계에서는 컬러 블렌딩, 깊이 검사 등을 수행함으로써, 쉐이딩된 픽셀의 정보에 기초하여, 래스터 이미지(픽셀들 또는 샘플들)를 생성한다. 생성된 래스터 이미지는 프레임 버퍼(frame buffer)로 출력된다.
17단계(S17)는 프레임 버퍼에 저장된 프레임을 표시하는 단계를 나타낸다. 11단계(S11) 내지 16단계(S16)를 통해 생성된 프레임은 프레임 버퍼에 저장된다. 프레임 버퍼에 저장된 프레임은 디스플레이 장치를 통해 표시된다.
도 2는 일 실시예에 따른 픽셀 쉐이딩 처리 시스템을 설명하기 위한 도면이다.
일 실시예에 따른 픽셀 쉐이딩 처리 시스템은 도 1에서 설명한 15단계(S15)의 픽셀 쉐이딩을 수행할 수 있다. 도 2에서는 설명의 편의를 위하여, 일 실시예에 따른 캐시 메모리 시스템이 픽셀 쉐이딩 처리 시스템에 적용되는 예를 도시하고 있다. 다만, 이에 한정되는 것은 아니며, 일 실시예에 따른 캐시 메모리 시스템은 렌더링 과정 중 텍스쳐 데이터를 필요로 하는 연산을 처리하는 시스템에 모두 적용될 수 있다.
또한, 이하에서는 일 실시예에 따른 캐시 메모리 시스템이 픽셀 쉐이딩에 이용되는 일 예들에 대해서 도시하고, 설명하지만, 이에 한정되는 것은 아니며, 일 실시예에 따른 캐시 메모리 시스템은 렌더링 연산 중 임의의 쉐이딩에 이용될 수 있다.
도 2를 참조하면, 픽셀 쉐이딩 처리 시스템은 그래픽스 처리 장치 (10, GPU: Graphics Processing Unit) 및 텍스쳐 메모리(200)를 포함할 수 있으며, 그래픽스 처리 장치(10)는 픽셀 쉐이더 코어(50) 및 캐시 메모리 시스템(100)을 포함할 수 있다. 또한, 시스템 버스(60)에는 캐시 메모리 시스템(100)의 라인과 텍스쳐 메모리(200)의 라인이 연결될 수 있다.
도 2에서는 설명의 편의를 위하여, 그래픽스 처리 장치(10)가 픽셀 쉐이더 코어(50) 및 캐시 메모리 시스템(100)만 포함하는 경우를 도시하였으나, 이에 한정되지 않으며, 그래픽스 처리 장치(10)는 도 1에 설명한 각 단계를 수행하기 위한 다른 구성요소들을 더 포함할 수 있다.
또한, 도 2에서는 캐시 메모리 시스템(100)이 픽셀 쉐이더 코어(50)와 별도로 위치하는 경우를 도시하였으나, 이에 한정되지 않으며, 캐시 메모리 시스템(100)은 코어(50)와 동일한 하나의 칩 내에 포함될 수 있다.
픽셀 쉐이더 코어(50)는 3차원 이미지 렌더링 시, 픽셀의 색상 값을 결정하는 픽셀 쉐이딩을 수행할 수 있다. 픽셀 쉐이더 코어(50)는 픽셀의 색상 값 결정에 사용되는 텍스쳐(texture) 데이터를 요청하기 위해, 텍스쳐 메모리(200)를 액세스하기 전에, 먼저 캐시 메모리 시스템(100)을 액세스할 수 있다. 픽셀 쉐이더 코어(50)는 캐시 메모리 시스템(100)에 서로 다른 종류의 텍스쳐 데이터들을 요청할 수 있다. 예를 들어, 픽셀 쉐이더 코어(50)가 수행하는 하나의 쉐이더 프로그램은 다양한 종류의 텍스쳐들을 필요로 할 수 있다.
캐시 메모리 시스템(100)에 픽셀 쉐이더 코어(50)가 요청한 데이터나 명령(이하, 타겟 데이터라 한다)이 존재하는 경우, 캐시 히트(cache hit)에 따른 동작이 수행된다. 캐시 히트 시에는 캐시 메모리 시스템(100)으로부터 출력된 캐시 데이터(타겟 데이터)가 코어(50)로 출력된다.
픽셀 쉐이더 코어(50)가 텍스쳐 메모리(200)보다 캐시 메모리 시스템(100)에 먼저 액세스하는 이유는 빈번하게 사용되는 텍스쳐 메모리(200)의 데이터(텍스쳐 데이터)의 경우, 캐시 메모리 시스템(100)에 저장되어 있을 확률이 크기 때문이다. 따라서, 텍스쳐 메모리(200)보다 캐시 메모리 시스템(100)에 먼저 액세스함으로써, 데이터 전송 속도를 향상시킬 수 있다.
한편, 캐시 메모리 시스템(100)에 타겟 데이터가 존재하지 않는 경우에는 캐시 미스(cache miss)에 따른 동작이 수행된다. 즉, 이 경우에 캐시 메모리 시스템(100)은 메인 메모리(200)에 액세스하고, 메인 메모리(200)로부터 출력된 데이터는 상기 시스템 버스(60)를 거쳐 캐시 메모리 시스템(200)으로 인가된다. 이때, 캐시 메모리 시스템(100)은 기존에 저장되어 있는 텍스쳐 데이터들 중 어느 하나를 삭제하고, 텍스쳐 메모리(200)로부터 출력된 데이터를 저장할 수 있다.
도 3은 일 실시예에 따른 캐시 메모리 시스템의 구성을 나타내는 블록도이다.
도 3을 참조하면, 일 실시예에 따른 캐시 메모리 시스템(100)은, 파티션 구성부(110), 캐시 메모리(120) 및 컨트롤러(130)를 포함할 수 있다.
캐시 메모리(120)는 태그 메모리와 데이터 메모리를 포함할 수 있다. 데이터 메모리는 텍스쳐 메모리(200)에 저장되어 있는 텍스쳐 데이터의 일부 데이터들(캐시 데이터들)을 저장한다. 즉, 캐시 데이터는 텍스쳐 메모리(200)에 저장되어 있는 텍스쳐 데이터들 중 어느 하나와 동일하다. 태그 메모리는 데이터 메모리에 저장된 캐시 데이터들에 각각 대응하는 태그 데이터들을 저장할 수 있다. 태그 데이터는 캐시 데이터가 저장되어 있는 텍스쳐 메모리(200)의 실제 어드레스를 나타낼 수 있다. 태그 메모리와 데이터 메모리의 구조에 대해서는 이하, 도 4를 참조하여, 자세히 설명하기로 한다.
도 4는 일 실시예에 따른 캐시 메모리(120)를 설명하기 위한 도면이다.
도 4를 참조하면, 태그 메모리와 데이터 메모리는 적어도 하나의 세트(123)를 포함할 수 있다. 캐시 메모리(120)는 복수의 웨이(way)를 가질 수 있으며, 웨이를 나타내는 적어도 하나의 뱅크(bank, 125)를 포함할 수 있다. 또한, 캐시 메모리(120)의 로우(row)는 세트를 의미하며, 칼럼(column)은 뱅크를 의미한다.
도 4는 8개의 웨이를 가지는 8-웨이 세트 연관 캐시 메모리의 구조를 나타낸다. 도 4에 도시된 바와 같이, 캐시 메모리(120)가 8-웨이 세트 연관 캐시 메모리로 구성되는 경우, 캐시 메모리(120)는 8개의 뱅크(bank 0 내지 bank 7)를 포함한다. 또한, 도 4의 캐시 메모리(120)는 8개의 세트를 포함하며, 8개의 세트들은 인덱스(인덱스 0 내지 인덱스 7)에 의해 구분될 수 있다. 하나의 세트(123)는 8개의 캐시 데이터들(제1 내지 제8 캐시 데이터들)과 8개의 캐시 데이터들 각각의 어드레스를 나타내는 8개의 태그 데이터들(제1 내지 제8 태그 데이터들)을 포함할 수 있다. 또한, 8개의 태그 데이터들은 각각 제1 내지 제8 웨이에 대응된다.
한편, 캐시 메모리(120)는 복수의 파티션들을 포함할 수 있으며, 파티션은 적어도 하나의 뱅크를 포함할 수 있다. 또한, 복수의 파티션들은 파티션 아이디(ID)에 의해 구분될 수 있다. 예를 들어, 도 4의 캐시 메모리는 4개의 파티션을 가지며, 파티션 각각은 파티션 아이디(예를 들어, Part 0, Part 1, Part 2, Part 3)에 의해 구분된다.
한편, 컨트롤러(130)는 외부로부터 요청되는 텍스쳐 데이터의 파티션 아이디를 수신하여, 해당 파티션에 요청된 텍스쳐 데이터가 저장되어 있는지 판단할 수 있다.
도 4를 참조하면, 컨트롤러(130)는 외부(예를 들어, 픽셀 쉐이더 코어)로부터 요청되는 텍스쳐 데이터의 파티션 아이디를 수신할 수 있다. 파티션 아이디가 수신되면, 컨트롤러(130)는 파티션 아이디에 대응하는 파티션에 요청된 텍스쳐 데이터가 저장되어 있는지 여부를 판단할 수 있다. 이에 대해서는 도 5를 참조하여, 자세히 설명하기로 한다. 또한, 이하에서는 설명의 편의를 위해 수신한 파티션 아이디에 대응하는 파티션이 제1 파티션(part 0)인 것으로 한다.
도 5를 참조하면, 캐시 메모리 시스템(100)은 요청되는 텍스쳐 데이터의 어드레스 비트를 수신할 수 있다. 이때, 어드레스 비트는 도 5에 도시된 바와 같이, 태그 어드레스(Tag add)와 세트 어드레스(Set add)를 포함할 수 있다. 이때, 세트 어드레스(Set add)는 캐시 메모리(120)의 로우(row) 어드레스를 나타내는 데이터이다. 즉, 세트 어드레스(Set add)는 캐시 메모리(120)에 포함되는 복수의 세트 중 어느 하나의 세트를 가리킨다.
컨트롤러(130)는 태그 비교부(135)를 포함하며, 태그 비교부(135)는 제1 파티션(Part 0) 내의 복수의 세트들 중 세트 어드레스(Set add)가 가리키는 세트(320, index 3)에 포함되는 태그 데이터들 각각을 태그 어드레스와 비교하여 일치하는지 판단한다.
컨트롤러(130)는 태그 어드레스(Tag add)가 태그 데이터들 중 어느 하나와 일치하는 경우, 캐시 히트로 판단한다. 즉, 캐시 히트는 외부로부터 요청된 텍스쳐 데이터(타겟 데이터)가 해당 파티션 내에 저장되어 있음을 나타낸다. 컨트롤러(130)가 캐시 히트로 판단한 경우, 태그 어드레스(Tag add)와 일치하는 태그 데이터에 대응하는 캐시 데이터가 외부(예를 들어, 픽셀 쉐이더 코어)로 출력될 수 있다. 컨트롤러(130)는 캐시 메모리(120)에 저장되어 있는 캐시 데이터를 읽어와 외부로 출력할 수 있다.
반면에, 컨트롤러(130)는 태그 데이터들 중 어느 하나도 태그 어드레스와 일치하지 않는 경우, 캐시 미스로 판단한다. 즉 캐시 미스는 외부로부터 요청된 텍스쳐 데이터가 해당 파티션 내에 저장되어 있지 않음을 나타낸다. 컨트롤러(110)가 캐시 미스로 판단한 경우, 컨트롤러(110)는 메인 메모리(200)로 캐시 미스 신호를 출력하고, 외부로부터 요청된 텍스쳐 데이터(타겟 데이터)를 요청할 수 있다.
컨트롤러(130)는 해당 파티션에 포함된 복수의 세트들 중 세트 어드레스가 가리키는 세트에 포함된 캐시 데이터들 중 어느 하나를 삭제하고, 텍스쳐 메모리(200)로부터 수신한 텍스쳐 데이터로 업데이트 할 수 있다.
한편, 파티션 구성부(130)는 복수의 파티션을 결정할 수 있다. 파티션 구성부(130)는 픽셀 쉐이딩 시 필요한 텍스쳐들의 개수와 캐시 메모리(120)에 포함된 뱅크들의 개수를 비교할 수 있으며, 비교 결과에 따라 복수의 텍스쳐들에 뱅크들을 할당하고, 파티션을 결정할 수 있다. 이에 대해서는 이하, 도 6 및 7을 참조하여, 자세히 설명하기로 한다. 도 6 및 도 7은 일 실시예에 따른 캐시 메모리 시스템에서, 캐시 메모리를 복수의 파티션으로 분할하는 방법을 설명하기 위해 참조되는 도면들이다.
도 6은 뱅크의 개수가 필요한 텍스쳐들의 개수보다 큰 경우에, 캐시 메모리를 복수의 파티션으로 분할하는 방법을 설명하기 위한 도면이다.
도 6을 참조하면, 뱅크의 개수가 필요한 텍스쳐들의 개수보다 큰 경우, 파티션 구성부(110)는 복수의 텍스쳐들 각각에 하나의 뱅크를 할당할 수 있다. 예를 들어, 픽셀 쉐이딩 시, 3개의 텍스쳐(제1 텍스쳐(410), 제2 텍스쳐(420), 제3 텍스쳐(430))가 필요할 수 있으며, 텍스쳐 메모리(200)에는 제1 내지 제3 텍스쳐가 저장되어 있을 수 있다. 또한, 캐시 메모리(120)는 4-웨이 캐시 메모리로 구성되어, 제1 뱅크 내지 제4 뱅크(bank 0, bank 1, bank 2, bank 3)를 포함할 수 있다. 이러한 경우, 파티션 제어부(110)는 제1 텍스쳐(410)에 제1 뱅크(bank 0)를 제2 텍스쳐(420)에 제2 뱅크(bank 1)를 제3 텍스쳐(430)에 제3 뱅크(bank 2)를 할당할 수 있다.
또한, 파티션 구성부(110)는 할당되지 않은 나머지 뱅크를 복수의 텍스쳐들 중 어느 하나에 추가로 할당할 수 있다. 예를 들어, 할당되지 않은 제4 뱅크(bank 3)를 제1 내지 제3 텍스쳐들(410, 420, 430) 중 어느 하나에 추가로 할당할 수 있으며, 복수의 텍스쳐들 중 컨플릭 미스(conflict miss)의 발생 확률이 큰 텍스쳐에 나머지 뱅크를 추가로 할당할 수 있다. 컨플릭 미스(conflict miss)는 캐시 메모리의 하나의 세트에 매핑된 데이터들이 많아, 웨이(way)의 수가 부족한 경우에 발생하는 미스를 의미한다. 이때, 웨이의 수를 증가시키면, 컨플릭 미스의 발생 확률이 감소될 수 있다.
한편, 파티션 구성부(110)는 제1 내지 제3 텍스쳐들(410, 420, 430) 중 밉맵되지 않은 텍스쳐(non-mipmapped texture)를 검출하고, 검출된 텍스쳐에 제4 뱅크(bank 3)를 추가로 할당할 수 있다. 밉맵을 사용하는 텍스쳐(mipmapped texture)는 원래 크기의 텍스쳐 이외에 추가로 가로, 세로의 크기를 각각 1/2, 1/4, 1/8 등으로 축소시킨 텍스쳐들을 포함할 수 있다. 밉맵을 사용하는 텍스쳐를 픽셀 쉐이딩에 이용하는 경우, 쉐이딩하는 픽셀의 크기에 적절한 크기의 텍스쳐를 사용하여, 캐시의 효율(캐시 히트 확률)을 증가시킬 수 있다. 그러나, 밉맵되지 않은 텍스쳐의 경우, 동일한 세트에 매핑되는 텍스쳐 데이터의 수가 밉맵된 텍스쳐보다 많아지고, 컨플릭 미스(conflict miss) 발생 확률이 증가할 수 있다. 이에 따라, 파티션 구성부(110)는 밉맵되지 않은 텍스쳐에 뱅크를 추가로 할당할 수 있다.
또한, 파티션 구성부(110)는 현재 픽셀 쉐이딩 시, 이용되는 쉐이더 프로그램과 동일한 쉐이더 프로그램을 이용한 이전 픽셀 쉐이딩 수행 결과에 기초하여, 텍스쳐들의 접근 패턴을 분석할 수 있다. 파티션 구성부(110)는 접근 패턴의 분석 결과, 컨플릭 미스(conflict miss)가 가장 많이 발생하는 텍스쳐에 나머지 뱅크를 할당할 수 있다. 예를 들어, 제1 내지 제3 텍스쳐(410, 420, 430) 중에 제3 텍스쳐(430)에 대한 데이터들에 접근 시, 컨플릭 미스(conflict miss)가 가장 많이 발생한 경우, 파티션 구성부(110)는 제4 뱅크(bank 4)를 제3 텍스쳐(430)에 할당할 수 있다.
또한, 파티션 구성부(110)는 픽셀 쉐이딩 수행 시, 텍스쳐들의 접근 패턴을 실시간으로 모니터링 할 수 있다. 파티션 구성부(110)는 접근 패턴의 모니터링 결과, 컨플릭 미스(conflict miss)가 가장 많이 발생하는 텍스쳐에 나머지 뱅크를 할당할 수 있다. 예를 들어, 제1 내지 제3 텍스쳐(410, 420, 430) 중에 제3 텍스쳐(430)에 포함되는 텍스쳐 데이터들에 접근 시, 컨플릭 미스가 가장 많이 발생하는 경우, 파티션 구성부(110)는 제4 뱅크(bank 3)를 제3 텍스쳐(430)에 할당할 수 있다.
파티션 구성부(110)는 캐시 메모리(120)에 포함되는 모든 뱅크들이 복수의 텍스쳐들 중 어느 하나에 할당되면, 하나의 텍스쳐에 할당된 적어도 하나의 뱅크들을 하나의 파티션으로 결정할 수 있다. 예를 들어, 파티션 구성부(110)는 제1 텍스쳐(410)에 할당된 제1 뱅크(bank 0)를 제1 파티션(part 0)으로, 제2 텍스쳐(420)에 할당된 제2 뱅크(bank 1)를 제2 파티션(part 1)으로, 제3 텍스쳐(430)에 할당된 제3 뱅크(bank 2) 및 제4 뱅크(bank 3)를 제3 파티션(part 2)으로 결정할 수 있다.
도 7은 필요한 텍스쳐들의 개수가 뱅크들의 개수보다 큰 경우에 캐시 메모리를 복수의 파티션으로 분할하는 방법을 설명하기 위한 도면이다.
도 7을 참조하면, 필요한 텍스쳐들의 개수가 뱅크들의 개수보다 큰 경우, 파티션 구성부(110)는 복수의 텍스쳐들 중 적어도 2개의 텍스쳐에 동일한 뱅크를 할당할 수 있다.
파티션 구성부(110)는 복수의 텍스쳐들 중 텍스쳐 좌표를 공유하지 않는 텍스쳐에 동일한 뱅크를 할당할 수 있다. 또는, 파티션 구성부(110)는 텍스쳐 크기(dimension)가 다른 텍스쳐에 동일한 뱅크를 할당할 수 있다.
예를 들어, 픽셀 쉐이딩 시, 3개의 텍스쳐(제1 텍스쳐(510), 제2 텍스쳐(520), 제3 텍스쳐(530))가 필요할 수 있다. 또한, 캐시 메모리는 2-웨이 캐시 메모리로 구성되어, 제1 뱅크(bank 0) 및 제2 뱅크(bank 1)를 포함할 수 있다. 이러한 경우, 파티션 구성부(110)는 3개의 텍스쳐 중 2개의 텍스쳐에 동일한 뱅크를 할당할 수 있다.
도 7을 참조하면, 제1 텍스쳐(510)와 제2 텍스쳐(520)는 텍스쳐 좌표를 일부 공유하고, 제1 텍스쳐(510)와 제3 텍스쳐(530)도 텍스쳐 좌표를 일부 공유한다. 그러나, 제2 텍스쳐(520)와 제3 텍스쳐(530)는 텍스쳐 좌표를 공유하지 않는다. 즉, 제2 텍스쳐(520)와 제3 텍스쳐(530)는 서로 동일한 좌표를 포함하지 않는다. 이에 따라, 파티션 구성부(110)는 제1 텍스쳐(510)에 제1 뱅크(bank 0)를 할당하고, 제2 텍스쳐(520)와 제3 텍스쳐(530)에 제2 뱅크(bank 1)를 할당할 수 있다.
파티션 구성부(110)는 각각의 뱅크를 하나의 파티션으로 결정할 수 있다. 예를 들어, 파티션 제어부(110)는 제1 텍스쳐(510)에 할당된 제1 뱅크(bank 0)를 제1 파티션(part 0)으로, 제2 텍스쳐(520) 및 제3 텍스쳐(530)에 할당된 제2 뱅크(bank 1)를 제2 파티션(part 1)으로 결정할 수 있다. 즉, 제2 텍스쳐(520) 및 제3 텍스쳐(530)는 동일한 파티션에 대응될 수 있다.
상술한 바와 같이, 텍스쳐에 대응하는 파티션이 결정되면, 텍스쳐 데이터들은 해당 파티션에 매핑되어, 캐시 메모리에 저장될 수 있다. 예를 들어, 제1 텍스쳐에 대응하는 파티션이 제1 파티션으로 결정되고, 제2 텍스쳐에 대응하는 파티션이 제2 파티션으로 결정되는 경우, 제1 텍스쳐 데이터들은 제1 파티션에 매핑되어, 캐시 메모리에 저장될 수 있으며, 제2 텍스쳐 데이터들은 제2 파티션에 매핑되어, 캐시 메모리에 저장될 수 있다.
도 8은 일 실시예에 따른 캐시 메모리 시스템의 동작방법을 나타내는 흐름도이다.
도 8을 참조하면, 캐시 메모리 시스템은 캐시 메모리를 복수의 파티션으로 분할할 수 있다(S610).
예를 들어, 캐시 메모리 시스템(100)은 캐시 메모리(120)에 포함되는 적어도 하나의 뱅크들을 텍스쳐 메모리에 저장된 복수의 텍스쳐들 중 적어도 하나에 할당하여, 캐시 메모리(120)를 복수의 파티션으로 분할할 수 있다.
캐시 메모리 시스템은 픽셀 쉐이딩 시, 필요한 텍스쳐들의 개수와 캐시 메모리에 포함된 뱅크들의 개수를 비교할 수 있다. 예를 들어, 픽셀 쉐이더 코어(50)가 수행하는 하나의 쉐이더 프로그램은 다양한 종류의 텍스쳐들을 필요로 할 수 있으며, 쉐이더 프로그램마다 필요한 텍스쳐들의 종류가 다를 수 있다. 캐시 메모리 시스템(100)은 픽셀 쉐이더 코어(50)로부터 쉐이더 프로그램에서 사용하는 텍스쳐들의 종류, 좌표 정보 등을 수신할 수 있다. 이에 따라, 캐시 메모리 시스템(100)은 픽셀 쉐이딩 시 필요한 텍스쳐들의 개수를 알 수 있다. 이에 따라, 캐시 메모리 시스템(100)은 필요한 텍스쳐들의 개수와 캐시 메모리에 포함된 뱅크들의 개수를 비교할 수 있다.
캐시 메모리 시스템(100)은 비교 결과에 기초하여, 복수의 텍스쳐들에 뱅크들을 할당하고, 파티션을 결정할 수 있다. 이에 대해서는 도 9 및 도 10을 참조하여, 자세히 설명하기로 한다.
다시, 도 8을 참조하면, 캐시 메모리 시스템은 요청되는 텍스쳐 데이터의 파티션 아이디를 수신할 수 있다(S620).
예를 들어, 수신한 파티션 아이디는 요청되는 텍스쳐 데이터의 텍스쳐 종류를 나타낼 수 있으며, 캐시 메모리 시스템에 포함된 복수의 파티션들 중 어느 하나에 대응할 수 있다. 또한, 캐시 메모리 시스템(100)은 요청되는 텍스쳐 데이터의 어드레스 비트를 수신할 수 있다. 어드레스 비트는 태그 어드레스와 세트 어드레스를 포함할 수 있다.
캐시 메모리 시스템은 해당 파티션에 요청된 텍스쳐 데이터가 저장되어 있는지 판단할 수 있다(S630).
캐시 메모리 시스템(100)은 수신한 파티션 아이디에 대응하는 파티션에 포함된 복수의 세트들 중 세트 어드레스가 가리키는 세트에 포함된 태그 데이터들 각각을 태그 어드레스와 일치하는지 여부를 판단할 수 있다. 캐시 메모리 시스템(100)은 태그 어드레스가 태그 데이터들 중 어느 하나와 일치하는 경우, 요청된 텍스쳐 데이터가 해당 파티션에 저장되어 있는 것으로 판단한다(캐시 히트).
반면에, 태그 데이터들 중 어느 하나도 태그 어드레스와 일치하지 않는 경우, 캐시 메모리 시스템(100)은 요청된 텍스쳐 데이터가 해당 파티션에 저장되어 있지 않은 것으로 판단한다(캐시 미스).
캐시 메모리 시스템은 판단결과에 따라, 요청된 텍스쳐 데이터를 외부로 출력할 수 있다(S640).
예를 들어, 캐시 히트로 판단된 경우, 캐시 메모리 시스템(100)은 태그 어드레스와 일치하는 태그 데이터에 대응하는 캐시 데이터를 외부(예를 들어, 픽셀 쉐이더 코어)로 출력할 수 있다. 반면에, 캐시 미스로 판단된 경우, 캐시 메모리 시스템(100)은 텍스쳐 메모리(200)로 캐시 미스 신호를 출력하고, 외부로부터 요청된 텍스쳐 데이터(타겟 데이터)를 텍스쳐 메모리(200)로 요청할 수 있다. 이에 따라, 캐시 메모리 시스템(100)은 텍스쳐 메모리(200)로부터 새로운 텍스쳐 데이터를 수신하여, 수신한 텍스쳐 데이터를 외부로 출력할 수 있다. 또한, 캐시 메모리 시스템(100)은 해당 파티션에 포함된 복수의 세트들 중 세트 어드레스가 가리키는 세트에 포함된 캐시 데이터들 중 어느 하나를 삭제하고, 텍스쳐 메모리(200)로부터 수신한 텍스쳐 데이터로 업데이트 할 수 있다.
도 9는 도 8의 610 단계(S610)의 일 실시예를 설명하기 위한 흐름도이다. 더 구체적으로 설명하면, 도 9는 필요한 텍스쳐들의 개수가 캐시 메모리에 포함된 뱅크의 개수보다 작은 경우, 캐시 메모리를 복수의 파티션을 분할하는 방법을 나타내는 흐름도이다.
도 9를 참조하면, 캐시 메모리 시스템은 복수의 텍스쳐들 각각에 하나의 뱅크를 할당할 수 있다(S710).
예를 들어, 픽셀 쉐이딩 시, 3개의 텍스쳐(제1 텍스쳐, 제2 텍스쳐, 제3 텍스쳐)가 필요하고, 캐시 메모리(120)는 4-웨이 캐시 메모리로 구성되어, 제1 뱅크 내지 제4 뱅크를 포함하는 경우, 제1 텍스쳐에 제1 뱅크를 제2 텍스쳐에 제2 뱅크를 제3 텍스쳐에 제3 뱅크를 할당할 수 있다.
캐시 메모리 시스템(100)은 할당되지 않은 나머지 뱅크를 복수의 텍스쳐들 중 적어도 하나에 추가로 할당할 수 있다(S720).
예를 들어, 캐시 메모리 시스템(100)은 복수의 텍스쳐들 중 밉맵되지 않은 텍스쳐(non-mipmapped texture)를 검출하고, 검출된 텍스쳐에 할당되지 않은 나머지 뱅크를 추가로 할당할 수 있다.
또한, 캐시 메모리 시스템(100)은 현재 픽셀 쉐이딩에 이용되는 쉐이더 프로그램과 동일한 쉐이더 프로그램을 이용한 이전 픽셀 쉐이딩 수행 결과에 기초하여, 텍스쳐들의 접근 패턴을 분석할 수 있다. 캐시 메모리 시스템(100)은 접근 패턴의 분석 결과, 컨플릭 미스가 가장 많이 발생하는 텍스쳐에 나머지 뱅크를 할당할 수 있다.
또한, 캐시 메모리 시스템(100)은 픽셀 쉐이딩 수행 시, 텍스쳐 데이터들의 접근 패턴을 실시간으로 모니터링 하여, 컨플릭 미스가 가장 많이 발생하는 텍스쳐에 나머지 뱅크를 할당할 수 있다.
캐시 메모리 시스템(100)은 하나의 텍스쳐에 할당된 적어도 하나의 뱅크들을 하나의 파티션으로 결정할 수 있다(S730).
도 10은 도 8의 610 단계(S610)의 일 실시예를 설명하기 위한 흐름도이다. 더 구체적으로 설명하면, 도 9는 필요한 텍스쳐들의 개수가 캐시 메모리에 포함된 뱅크의 수보다 큰 경우, 캐시 메모리를 복수의 파티션을 분할하는 방법을 나타내는 흐름도이다.
도 10을 참조하면, 캐시 메모리 시스템은 복수의 텍스쳐들 중 적어도 2개의 텍스쳐에 동일한 뱅크를 할당할 수 있다(S810).
캐시 메모리 시스템(100)은 복수의 텍스쳐들 중 텍스쳐 좌표를 공유하지 않는 텍스쳐에 동일한 뱅크를 할당할 수 있다. 또는, 캐시 메모리 시스템(100)은 텍스쳐 크기(dimension)가 다른 텍스쳐에 동일한 뱅크를 할당할 수 있다.
캐시 메모리 시스템(100)은 각각의 뱅크를 하나의 파티션으로 결정할 수 있다(S820).
본 발명에 따른 캐시 메모리 시스템 및 그 동작방법은, 상기한 바와 같이 설명된 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상기 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
한편, 본 발명의 캐시 메모리 시스템 및 그 동작방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM. CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 인터넷을 통한 전송 등과 같은 캐리어 웨이브의 형태로 구현되는 것도 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 프로세서가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
또한, 이상에서는 본 발명의 실시예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.
100: 캐시 메모리 시스템 110: 파티션 구성부
120: 캐시 메모리 130: 컨트롤러
135: 태그 비교부

Claims (28)

  1. 적어도 하나의 뱅크들을 포함하는 캐시 메모리;
    상기 뱅크들을 렌더링에 필요한 복수의 텍스쳐들 중 적어도 하나의 텍스쳐에 할당함으로써, 상기 캐시 메모리를 복수의 파티션들로 분할하는 파티션 구성부(partition configuration unit); 및
    상기 렌더링을 수행하는 장치로부터 요청되는 텍스쳐 데이터의 파티션 아이디를 수신하고, 상기 복수의 파티션들 중 상기 파티션 아이디에 대응하는 파티션에 상기 요청된 텍스쳐 데이터가 저장되어 있는지 여부를 판단하여, 상기 판단결과에 따라, 상기 요청된 텍스쳐 데이터를 상기 장치로 출력하는 컨트롤러;를 포함하는 캐시 메모리 시스템.
  2. 제1항에 있어서,
    상기 캐시 메모리는,
    상기 복수의 텍스쳐들 중 제1 텍스쳐에 포함되는 일부 텍스쳐 데이터들을 상기 제1 텍스쳐에 대응하는 파티션에 저장하고, 제2 텍스쳐에 포함되는 일부 텍스쳐 데이터들을 상기 제2 텍스쳐에 대응하는 파티션에 저장하는 캐시 메모리 시스템.
  3. 제1항에 있어서,
    상기 컨트롤러는,
    상기 요청되는 텍스쳐 데이터의 세트 어드레스 및 태그 어드레스를 수신하고, 상기 파티션 아이디에 대응하는 파티션에 포함되는 적어도 하나의 세트 중 상기 세트 어드레스가 가리키는 세트에 포함되는 태그 데이터들을 상기 태그 어드레스와 비교하여, 상기 요청된 텍스쳐 데이터가 저장되어 있는지 여부를 판단하는 캐시 메모리 시스템.
  4. 제3항에 있어서,
    상기 컨트롤러는,
    상기 비교결과, 상기 태그 데이터들 중 어느 하나와 상기 태그 어드레스가 일치하는 경우, 캐시 히트로 판단하고, 상기 일치하는 태그 데이터에 대응하는 텍스쳐 데이터를 상기 장치로 출력하는 캐시 메모리 시스템.
  5. 제3항에 있어서,
    상기 컨트롤러는,
    상기 비교결과, 상기 태그 데이터들이 상기 태그 어드레스와 일치하지 않는 경우, 캐시 미스로 판단하고, 텍스쳐 메모리의 상기 태그 어드레스가 가리키는 영역으로부터 상기 요청된 텍스쳐 데이터를 수신하는 캐시 메모리 시스템.
  6. 제1항에 있어서,
    상기 파티션 구성부는,
    상기 텍스쳐들의 개수와 상기 뱅크들의 개수를 비교하고, 상기 비교 결과에 기초하여, 상기 뱅크들을 상기 텍스쳐들 중 적어도 하나에 할당하는 캐시 메모리 시스템.
  7. 제6항에 있어서,
    상기 파티션 구성부는,
    상기 비교 결과, 상기 텍스쳐들의 개수가 상기 뱅크들의 개수보다 작은 경우, 상기 텍스쳐들 각각에 하나의 뱅크를 할당하고, 상기 할당되지 않은 나머지 뱅크를 상기 텍스쳐들 중 어느 하나에 추가로 할당하며, 상기 텍스쳐들 각각에 할당된 적어도 하나의 뱅크들을 하나의 파티션으로 결정하는 캐시 메모리 시스템.
  8. 제7항에 있어서,
    상기 파티션 구성부는,
    상기 텍스쳐들 중 밉맵되지 않은 텍스쳐(non-mipmapped texture)를 검출하고, 상기 검출된 텍스쳐에 상기 할당되지 않은 나머지 뱅크를 추가로 할당하는 캐시 메모리 시스템.
  9. 제7항에 있어서,
    상기 파티션 구성부는,
    상기 렌더링에 이용되는 쉐이더 프로그램과 동일한 쉐이더 프로그램을 이용한 이전 렌더링 결과에 기초하여, 상기 텍스쳐들의 접근 패턴을 분석하고, 상기 분석결과에 기초하여, 상기 할당되지 않은 나머지 뱅크를 상기 텍스쳐들 중 어느 하나에 추가로 할당하는 캐시 메모리 시스템.
  10. 제7항에 있어서,
    상기 파티션 구성부는,
    상기 렌더링 중에, 상기 텍스쳐들의 접근 패턴을 실시간으로 모니터링하고, 상기 모니터링 결과에 기초하여, 상기 할당되지 않은 나머지 뱅크를 상기 텍스쳐들 중 어느 하나에 동적으로 추가 할당하는 캐시 메모리 시스템.
  11. 제6항에 있어서,
    상기 파티션 구성부는,
    상기 비교 결과, 상기 텍스쳐들의 개수가 상기 뱅크들의 개수보다 큰 경우, 상기 텍스쳐들 중 제1 텍스쳐 및 제2 텍스쳐에 동일한 뱅크를 할당하고, 상기 동일한 뱅크를 하나의 파티션으로 결정하는 캐시 메모리 시스템.
  12. 제11항에 있어서,
    상기 파티션 구성부는,
    상기 텍스쳐들 중 텍스쳐 좌표를 공유하지 않는 상기 제1 텍스쳐 및 제2 텍스쳐를 검출하는 캐시 메모리 시스템.
  13. 제11항에 있어서,
    상기 파티션 구성부는,
    상기 텍스쳐들 중 텍스쳐 크기가 서로 다른 상기 제1 텍스쳐 및 제2 텍스쳐를 검출하는 캐시 메모리 시스템.
  14. 제1항에 있어서,
    상기 렌더링은 픽셀 쉐이딩을 포함하는 캐시 메모리 시스템.
  15. 캐시 메모리에 포함되는 적어도 하나의 뱅크들을 렌더링에 필요한 복수의 텍스쳐들 중 적어도 하나의 텍스쳐에 할당함으로써, 상기 캐시 메모리를 복수의 파티션들로 분할하는 단계;
    상기 렌더링을 수행하는 장치로부터 요청되는 텍스쳐 데이터의 파티션 아이디를 수신하는 단계;
    상기 복수의 파티션들 중 상기 파티션 아이디에 대응하는 파티션에 상기 요청된 텍스쳐 데이터가 저장되어 있는지 여부를 판단하는 단계; 및
    상기 판단결과에 따라, 상기 요청된 텍스쳐 데이터를 상기 장치로 출력하는 단계를 포함하는 캐시 메모리 시스템의 동작방법.
  16. 제15항에 있어서,
    상기 방법은,
    상기 요청되는 텍스쳐 데이터의 세트 어드레스 및 태그 어드레스를 수신하는 단계를 더 포함하고,
    상기 판단하는 단계는,
    상기 파티션 아이디에 대응하는 파티션에 포함되는 적어도 하나의 세트 중 상기 세트 어드레스가 가리키는 세트에 포함되는 태그 데이터들을 상기 태그 어드레스와 비교하여, 상기 요청된 텍스쳐 데이터가 저장되어 있는지 여부를 판단하는 단계인 캐시 메모리 시스템의 동작방법.
  17. 제16항에 있어서,
    상기 판단결과에 따라, 상기 요청된 텍스쳐 데이터를 상기 장치로 출력하는 단계는,
    상기 비교결과, 상기 태그 데이터들 중 어느 하나와 상기 태그 어드레스가 일치하는 경우, 캐시 히트로 판단하고, 상기 일치하는 태그 데이터에 대응하는 텍스쳐 데이터를 상기 장치로 출력하는 단계인 캐시 메모리 시스템의 동작방법.
  18. 제16항에 있어서,
    상기 판단결과에 따라, 상기 요청된 텍스쳐 데이터를 상기 장치로 출력하는 단계는,
    상기 비교결과, 상기 태그 데이터들이 상기 태그 어드레스와 일치하지 않는 경우, 캐시 미스로 판단하고, 상기 텍스쳐 메모리의 상기 태그 어드레스가 가리키는 영역으로부터 상기 요청된 데이터를 수신하는 단계를 더 포함하는 캐시 메모리 시스템의 동작방법.
  19. 제15항에 있어서,
    상기 캐시 메모리를 복수의 파티션들로 분할하는 단계는,
    상기 텍스쳐들의 개수와 상기 뱅크들의 개수를 비교하는 단계를 더 포함하고,
    상기 비교 결과에 기초하여, 상기 뱅크들을 상기 텍스쳐들 중 적어도 하나에 할당하여, 상기 캐시 메모리를 복수의 파티션들로 분할하는 캐시 메모리 시스템의 동작방법.
  20. 제19항에 있어서,
    상기 비교 결과, 상기 텍스쳐들의 개수가 상기 뱅크들의 개수보다 작은 경우, 상기 캐시 메모리를 복수의 파티션들로 분할하는 단계는,
    상기 텍스쳐들 각각에 하나의 뱅크를 할당하는 단계;
    상기 할당되지 않은 나머지 뱅크를 상기 텍스쳐들 중 어느 하나에 추가로 할당하는 단계; 및
    상기 텍스쳐들 각각에 할당된 적어도 하나의 뱅크들을 하나의 파티션으로 결정하는 단계를 포함하는 캐시 메모리 시스템의 동작방법.
  21. 제20항에 있어서,
    상기 할당되지 않은 나머지 뱅크를 상기 텍스쳐들 중 어느 하나에 추가로 할당하는 단계는,
    상기 텍스쳐들 중 밉맵되지 않은 텍스쳐(non-mipmapped texture)를 검출하는 단계; 및
    상기 검출된 텍스쳐에 상기 할당되지 않은 나머지 뱅크를 추가로 할당하는 단계를 포함하는 캐시 메모리 시스템의 동작방법.
  22. 제20항에 있어서,
    상기 할당되지 않은 나머지 뱅크를 상기 텍스쳐들 중 어느 하나에 추가로 할당하는 단계는,
    상기 렌더링에 이용되는 쉐이더 프로그램과 동일한 쉐이더 프로그램을 이용한 이전 렌더링 결과에 기초하여, 상기 텍스쳐들의 접근 패턴을 분석하는 단계; 및
    상기 분석결과에 기초하여, 상기 할당되지 않은 나머지 뱅크를 상기 텍스쳐들 중 어느 하나에 추가로 할당하는 단계를 포함하는 캐시 메모리 시스템의 동작방법.
  23. 제20항에 있어서,
    상기 할당되지 않은 나머지 뱅크를 상기 텍스쳐들 중 어느 하나에 추가로 할당하는 단계는,
    상기 렌더링 중에, 상기 텍스쳐들의 접근 패턴을 실시간으로 모니터링하는 단계; 및
    상기 모니터링 결과에 기초하여, 상기 할당되지 않은 나머지 뱅크를 상기 텍스쳐들 중 어느 하나에 동적으로 추가 할당하는 단계를 포함하는 캐시 메모리 시스템의 동작방법.
  24. 제19항에 있어서,
    상기 비교 결과, 상기 텍스쳐들의 개수가 상기 뱅크들의 개수보다 큰 경우,
    상기 캐시 메모리를 복수의 파티션들로 분할하는 단계는,
    상기 복수의 텍스쳐들 중 제1 텍스쳐 및 제2 텍스쳐에 동일한 뱅크를 할당하는 단계; 및
    상기 동일한 뱅크를 하나의 파티션으로 결정하는 단계;를 포함하는 캐시 메모리 시스템의 동작방법.
  25. 제24항에 있어서,
    상기 캐시 메모리를 복수의 파티션들로 분할하는 단계는,
    상기 텍스쳐들 중 텍스쳐 좌표를 공유하지 않는 상기 제1 텍스쳐 및 제2 텍스쳐를 검출하는 단계를 더 포함하는 캐시 메모리 시스템의 동작방법.
  26. 제24항에 있어서,
    상기 캐시 메모리를 복수의 파티션들로 분할하는 단계는,
    상기 텍스쳐들 중 텍스쳐 크기가 서로 다른 상기 제1 텍스쳐 및 제2 텍스쳐를 검출하는 단계를 더 포함하는 캐시 메모리 시스템의 동작방법.
  27. 제15항에 있어서,
    상기 렌더링은 픽셀 쉐이딩을 포함하는 캐시 메모리 시스템의 동작방법.
  28. 상기 제15항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020140143600A 2014-10-22 2014-10-22 캐시 메모리 시스템 및 그 동작방법 KR102366808B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020140143600A KR102366808B1 (ko) 2014-10-22 2014-10-22 캐시 메모리 시스템 및 그 동작방법
US14/795,032 US9773476B2 (en) 2014-10-22 2015-07-09 Cache memory system for a pixel shader and method of operating the same
EP15178853.6A EP3012741B1 (en) 2014-10-22 2015-07-29 Cache memory system and method of operating the same
JP2015150285A JP2016085729A (ja) 2014-10-22 2015-07-30 キャッシュメモリ・システム及びその動作方法
CN201510672739.1A CN105550126B (zh) 2014-10-22 2015-10-16 高速缓冲存储器系统和操作高速缓冲存储器系统的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140143600A KR102366808B1 (ko) 2014-10-22 2014-10-22 캐시 메모리 시스템 및 그 동작방법

Publications (2)

Publication Number Publication Date
KR20160047315A true KR20160047315A (ko) 2016-05-02
KR102366808B1 KR102366808B1 (ko) 2022-02-23

Family

ID=53762051

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140143600A KR102366808B1 (ko) 2014-10-22 2014-10-22 캐시 메모리 시스템 및 그 동작방법

Country Status (5)

Country Link
US (1) US9773476B2 (ko)
EP (1) EP3012741B1 (ko)
JP (1) JP2016085729A (ko)
KR (1) KR102366808B1 (ko)
CN (1) CN105550126B (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106055487B (zh) * 2016-05-31 2019-03-22 上海爱数信息技术股份有限公司 一种分区着色实现存储系统加速的方法及系统
CN110223214B (zh) * 2019-06-10 2023-04-11 西安芯瞳半导体技术有限公司 一种降低纹理单元访问量的方法、装置及计算机存储介质
WO2022039736A1 (en) * 2020-08-19 2022-02-24 Google Llc Memory sharing
US11693690B2 (en) 2020-10-20 2023-07-04 Micron Technology, Inc. Method of completing a programmable atomic transaction by ensuring memory locks are cleared
US11403023B2 (en) * 2020-10-20 2022-08-02 Micron Technology, Inc. Method of organizing a programmable atomic unit instruction memory
US11586439B2 (en) 2020-10-20 2023-02-21 Micron Technology, Inc. Detecting infinite loops in a programmable atomic transaction
US11436187B2 (en) 2020-10-20 2022-09-06 Micron Technology, Inc. Method of notifying a process or programmable atomic operation traps
US11740929B2 (en) 2020-10-20 2023-08-29 Micron Technology, Inc. Registering a custom atomic operation with the operating system
CN116028388B (zh) * 2023-01-17 2023-12-12 摩尔线程智能科技(北京)有限责任公司 高速缓存方法、装置、电子设备、存储介质和程序产品
CN116467227B (zh) * 2023-06-19 2023-08-25 深流微智能科技(深圳)有限公司 Tmu系统和tmu系统的运算优化方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7050063B1 (en) * 1999-02-11 2006-05-23 Intel Corporation 3-D rendering texture caching scheme

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6483516B1 (en) 1998-10-09 2002-11-19 National Semiconductor Corporation Hierarchical texture cache
US6493800B1 (en) 1999-03-31 2002-12-10 International Business Machines Corporation Method and system for dynamically partitioning a shared cache
US6750872B1 (en) 1999-09-17 2004-06-15 S3 Graphics, Co., Ltd. Dynamic allocation of texture cache memory
US6636225B2 (en) * 2000-11-20 2003-10-21 Hewlett-Packard Development Company, L.P. Managing texture mapping data in a computer graphics system
US6684297B2 (en) 2001-04-11 2004-01-27 Sun Microsystems, Inc. Reverse directory for facilitating accesses involving a lower-level cache
KR100427523B1 (ko) 2002-02-14 2004-04-28 한국과학기술원 3차원 컴퓨터 그래픽 시스템의 텍스쳐 메모리 억세스 장치
US7336275B2 (en) * 2002-09-06 2008-02-26 Ati Technologies Inc. Pseudo random number generator and method
US7069387B2 (en) * 2003-03-31 2006-06-27 Sun Microsystems, Inc. Optimized cache structure for multi-texturing
JP4451717B2 (ja) * 2004-05-31 2010-04-14 株式会社ソニー・コンピュータエンタテインメント 情報処理装置および情報処理方法
US8593474B2 (en) * 2005-12-30 2013-11-26 Intel Corporation Method and system for symmetric allocation for a shared L2 mapping cache
US8527713B2 (en) 2006-01-31 2013-09-03 Qualcomm Incorporated Cache locking without interference from normal allocations
US7898551B2 (en) * 2006-06-20 2011-03-01 Via Technologies, Inc. Systems and methods for performing a bank swizzle operation to reduce bank collisions
US20100079454A1 (en) * 2008-09-29 2010-04-01 Legakis Justin S Single Pass Tessellation
KR101862785B1 (ko) 2011-10-17 2018-07-06 삼성전자주식회사 타일 기반 렌더링을 위한 캐쉬 메모리 시스템 및 캐슁 방법
US9947084B2 (en) * 2013-03-08 2018-04-17 Nvidia Corporation Multiresolution consistent rasterization
US10032246B2 (en) * 2013-10-09 2018-07-24 Nvidia Corporation Approach to caching decoded texture data with variable dimensions

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7050063B1 (en) * 1999-02-11 2006-05-23 Intel Corporation 3-D rendering texture caching scheme

Also Published As

Publication number Publication date
EP3012741B1 (en) 2018-03-07
CN105550126A (zh) 2016-05-04
KR102366808B1 (ko) 2022-02-23
EP3012741A1 (en) 2016-04-27
US9773476B2 (en) 2017-09-26
US20160118024A1 (en) 2016-04-28
CN105550126B (zh) 2020-11-06
JP2016085729A (ja) 2016-05-19

Similar Documents

Publication Publication Date Title
KR102366808B1 (ko) 캐시 메모리 시스템 및 그 동작방법
JP4861403B2 (ja) タイル化されたプリフェッチ及びキャッシングされたデプスバッファ
EP2854037B1 (en) Cache memory system and operating method for the same
US20160071234A1 (en) Block-based lossless compression of geometric data
US10769837B2 (en) Apparatus and method for performing tile-based rendering using prefetched graphics data
US7268787B2 (en) Dynamic allocation of texture cache memory
KR101824665B1 (ko) 안티-앨리어싱된 샘플들의 분할 저장
KR20190005766A (ko) 그래픽 처리
US20130346696A1 (en) Method and apparatus for providing shared caches
KR20180068879A (ko) 복수의 텍스처들을 포함하는 밉맵을 이용하여 객체를 렌더링하기 위한 방법 및 장치
KR20170056950A (ko) 레지스터 관리 방법 및 장치
US10460502B2 (en) Method and apparatus for rendering object using mipmap including plurality of textures
JP2009099098A (ja) コンピュータグラフィックス描画装置及び描画方法
US10019349B2 (en) Cache memory and method of managing the same
US10726607B1 (en) Data processing systems
US11934304B2 (en) Circuitry and method
US7826684B2 (en) Optimization and view dependency reduction for processing slice-based volumes
US10706607B1 (en) Graphics texture mapping
US11321241B2 (en) Techniques to improve translation lookaside buffer reach by leveraging idle resources
KR20170075440A (ko) 텍스쳐의 배치를 결정하는 방법 및 장치.
JP2015153144A (ja) 情報処理装置、生成方法、プログラム及び記録媒体
US10755468B2 (en) Image processing apparatus, image processing method, and program to improve speed for calculating a color of pixels in image data

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