KR20160033479A - 그래픽 프로세싱 유닛 및 이를 이용한 그래픽 데이터 처리 방법 - Google Patents

그래픽 프로세싱 유닛 및 이를 이용한 그래픽 데이터 처리 방법 Download PDF

Info

Publication number
KR20160033479A
KR20160033479A KR1020140124417A KR20140124417A KR20160033479A KR 20160033479 A KR20160033479 A KR 20160033479A KR 1020140124417 A KR1020140124417 A KR 1020140124417A KR 20140124417 A KR20140124417 A KR 20140124417A KR 20160033479 A KR20160033479 A KR 20160033479A
Authority
KR
South Korea
Prior art keywords
graphic data
cache
data
line
state
Prior art date
Application number
KR1020140124417A
Other languages
English (en)
Other versions
KR102263326B1 (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 KR1020140124417A priority Critical patent/KR102263326B1/ko
Priority to US14/835,006 priority patent/US9799092B2/en
Publication of KR20160033479A publication Critical patent/KR20160033479A/ko
Application granted granted Critical
Publication of KR102263326B1 publication Critical patent/KR102263326B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • 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/02Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the way in which colour is displayed
    • G09G5/026Control of mixing and/or overlay of colours in general
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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
    • 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/08Power processing, i.e. workload management for processors involved in display operations, such as CPUs or GPUs
    • 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)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

그래픽 데이터 처리 중 메모리의 대역폭을 감소시킬 수 있는 그래픽 데이터 처리 방법을 제공하는 것이다. 상기 그래픽 데이터 처리 방법은 제1 그래픽 데이터를 입력받고, 상기 제1 그래픽 데이터를 처리하여 제2 그래픽 데이터를 생성하고, 생성된 상기 제2 그래픽 데이터를 상태 비트가 제1 상태로 셋팅된 제1 공유 메모리 라인에 쓰는 것을 포함하되, 상기 제1 공유 메모리 라인은 n-웨이 세트 어소시에이티브 캐시(n-way set associative cache)(n은 2 이상의 자연수) 구조의 일부인 제1 메모리 라인 세트에 포함되고, 상기 제1 메모리 라인 세트의 메모리 라인들 중 일부는 상기 제1 상태와 다른 제2 상태로 세팅되어 있고, 상기 상태 비트는 메모리 라인에 저장된 데이터가 대체될 수 있는지 여부를 나타낸다.

Description

그래픽 프로세싱 유닛 및 이를 이용한 그래픽 데이터 처리 방법{Graphic processing unit and method of processing graphic data using the same}
본 발명은 그래픽 프로세싱 유닛 및 이를 이용한 그래픽 데이터 처리 방법에 관한 것이다.
그래픽 프로세싱 유닛(Graphic Processing Unit; GPU)은 컴퓨팅 시스템에서 그래픽 연산을 전담하는 코어(core)를 말한다. 그래픽 파이프라인(graphic pipeline)은 3차원의 오브젝트(object)를 입력으로 하고 2차원의 렌더링(rendering) 이미지를 출력하는 그래픽 프로세싱 유닛의 하드웨어 구성을 나타낸다. 최근 그래픽 해상도의 증가는 그래픽 프로세싱 유닛의 연산과 메모리의 대역폭을 급격하게 증가시키는 원인이 되고 있다.
본 발명이 해결하려는 과제는, 그래픽 데이터 처리 중 메모리의 대역폭을 감소시킬 수 있는 그래픽 데이터 처리 방법을 제공하는 것이다.
본 발명이 해결하려는 다른 과제는, 그래픽 데이터 처리 중 메모리의 대역폭을 감소시킬 수 있는 그래픽 프로세싱 유닛을 제공하는 것이다.
본 발명이 해결하려는 과제들은 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 본 발명의 그래픽 데이터 처리 방법의 일 태양(aspect)은 제1 그래픽 데이터를 입력받고, 상기 제1 그래픽 데이터를 처리하여 제2 그래픽 데이터를 생성하고, 생성된 상기 제2 그래픽 데이터를 상태 비트가 제1 상태로 셋팅된 제1 공유 메모리 라인에 쓰는 것을 포함하되, 상기 제1 공유 메모리 라인은 n-웨이 세트 어소시에이티브 캐시(n-way set associative cache)(n은 2 이상의 자연수) 구조의 일부인 제1 메모리 라인 세트에 포함되고, 상기 제1 메모리 라인 세트의 메모리 라인들 중 일부는 상기 제1 상태와 다른 제2 상태로 세팅되어 있고, 상기 상태 비트는 메모리 라인에 저장된 데이터가 대체될 수 있는지 여부를 나타낸다.
본 발명의 몇몇 실시예에서, 상기 제1 그래픽 데이터를 입력받기 전에, 상기 제1 공유 메모리 라인의 상태 비트를 상기 제1 상태로 세팅하는 것을 더 포함한다.
본 발명의 몇몇 실시예에서, 상기 제1 공유 캐시 라인의 상태 비트를 상기 제1 상태로 세팅하는 것은 로컬러블 공간(localable space)을 위해 메모리를 할당하고, 할당된 상기 메모리의 메모리 주소 중 하나에 상기 제1 공유 메모리 라인의 인덱스(index) 및 태그(tag)를 대응시키는 것을 포함한다.
본 발명의 몇몇 실시예에서, 상기 제1 공유 메모리 라인에 저장된 상기 제2 그래픽 데이터를 읽고, 읽은 상기 제2 그래픽 데이터를 처리하여 제3 그래픽 데이터를 생성하는 것을 더 포함하고, 상기 제1 공유 메모리 라인에 저장된 상기 제2 그래픽 데이터를 읽는 것은 상기 제3 그래픽 데이터를 생성하는 쉐이더 코어로부터 상기 제1 공유 메모리 라인의 로컬 주소를 관리하는 커뮤니케이션 매니저(communication manager)에 버츄얼 주소(virtual address)를 보내고, 상기 커뮤니케이션 매니저는 상기 쉐이더 코어가 보낸 상기 버츄얼 주소가 상기 제1 공유 메모리 라인의 인덱스 및 태그에 대응되는지 여부를 판단하는 것을 포함한다.
본 발명의 몇몇 실시예에서, 상기 제1 공유 메모리 라인에 저장된 상기 제2 그래픽 데이터를 입력받고, 입력받은 상기 제2 그래픽 데이터를 처리하여 결과 그래픽 데이터를 생성하고, 상기 결과 그래픽 데이터를 생성한 후, 상기 제1 공유 메모리 라인의 상태 비트를 상기 제2 상태로 리셋하는 것을 더 포함한다.
본 발명의 몇몇 실시예에서, 상기 제1 공유 메모리 라인의 상태 비트를 상기 제2 상태로 리셋하는 것은 로컬러블 공간을 위해 할당된 메모리를 할당 해제(deallocation)하고, 할당 해제 후, 상기 제1 공유 메모리 라인의 상태 비트에 셋팅된 상기 제1 상태를 제거하는 것을 포함한다.
본 발명의 몇몇 실시예에서, 상기 제1 공유 메모리 라인의 비트 상태를 제2 상태로 리셋한 후, 상기 제1 공유 메모리 라인에 저장된 상기 제2 그래픽 데이터는 캐시 정책에 의해 대체될 수 있다.
본 발명의 몇몇 실시예에서, 상기 제1 공유 메모리 라인이 상기 제1 상태로 세팅되어 있을 때, 상기 제2 그래픽 데이터는 외부 메모리로 전송되지 않는다.
본 발명의 몇몇 실시예에서, 상기 제1 상태는 메모리 라인에 저장된 데이터를 캐시 정책에 의해 대체할 수 없음을 나타내고, 상기 제2 상태는 메모리 라인에 저장된 데이터를 상기 캐시 정책에 의해 대체할 수 있음을 나타낸다.
본 발명의 몇몇 실시예에서, 상기 제2 그래픽 데이터는 상기 제2 상태로 세팅된 메모리 라인에는 저장되지 않는다.
본 발명의 몇몇 실시예에서, 상기 제1 공유 메모리 라인에 저장된 상기 제2 그래픽 데이터를 입력받고, 입력받은 상기 제2 그래픽 데이터를 처리하여 제3 그래픽 데이터를 생성하고, 생성된 상기 제3 그래픽 데이터를 상태 비트가 상기 제1 상태로 셋팅된 제2 공유 메모리 라인에 저장하는 것을 더 포함한다.
본 발명의 몇몇 실시예에서, 상기 제2 공유 메모리 라인은 상기 제1 메모리 라인 세트에 포함된다.
본 발명의 몇몇 실시예에서, 상기 제2 공유 메모리 라인은 상기 제1 메모리 라인 세트와 다른 제2 메모리 라인 세트에 포함된다.
상기 다른 과제를 해결하기 위한 본 발명의 그래픽 프로세싱 유닛의 일 태양은 입력 그래픽 데이터를 입력받고, 상기 입력 그래픽 데이터를 처리하여 제1 그래픽 데이터를 생성하는 제1 쉐이더 코어, 상기 제1 그래픽 데이터를 입력받고, 상기 제1 그래픽 데이터를 처리하여 제2 그래픽 데이터를 생성하는 제2 쉐이더 코어, 및 상기 제1 쉐이더 코어로부터 상기 제1 그래픽 데이터를 제공 받고, 상기 제2 쉐이더 코어에 상기 제1 그래픽 데이터를 제공하는 캐시를 포함하고, 상기 캐시는 상기 제1 그래픽 데이터가 저장되고 캐시 정책에 의해 저장된 데이터가 대체되지 않는 공유 메모리 라인과, 캐시 데이터가 저장되고 상기 캐시 정책에 의해 저장된 데이터가 대체될 수 있는 캐시 라인을 포함하는 데이터 저장 영역과, 상기 공유 메모리 라인의 로컬 주소(local address)를 관리하고, 상기 캐시 라인의 로컬 주소는 관리하지 않는 커뮤니케이션 매니저(communication manager)와, 상기 캐시 라인의 로컬 주소를 관리하는 캐시 컨트롤러 모듈(cache controller module)을 포함한다.
본 발명의 몇몇 실시예에서, 상기 캐시는 NRB(Not Replaceable Bit) 모듈을 더 포함하고, 상기 NRB 모듈은 데이터 저장 영역에 저장된 데이터가 상기 캐시 정책에 의해 대체될 수 있는지 여부를 관리한다.
본 발명의 몇몇 실시예에서, 상기 NRB 모듈은 상기 공유 메모리 라인의 상태 비트를 제1 상태로 세팅하고, 상기 캐시 라인의 상태 비트를 제2 상태로 세팅하는 것을 포함한다.
본 발명의 몇몇 실시예에서, 상기 NRB 모듈은 제2 쉐이더 코어가 요청하는 데이터의 버츄얼 주소에 대응되는 데이터 저장 영역의 상태 비트를 판단한다.
본 발명의 몇몇 실시예에서, 상기 캐시는 n-웨이 세트 어소시에이티브 캐시(n-way set associative cache)(n은 2 이상의 자연수) 구조이고, 상기 데이터 저장 영역은 복수의 캐시 라인 세트를 포함하고, 상기 복수의 캐시 라인 세트 중 적어도 하나 이상의 캐시 라인 세트는 상기 공유 메모리 라인과 상기 캐시 라인을 포함한다.
본 발명의 몇몇 실시예에서, 상기 제1 그래픽 데이터는 상기 캐시 라인에 저장되지 않는다.
본 발명의 몇몇 실시예에서, 상기 캐시는 먹스(MUX)를 포함하고, 상기 제2 쉐이더 코어가 요청하는 데이터의 버츄얼 주소가 상기 공유 메모리 라인의 로컬 주소에 대응되면, 상기 먹스는 상기 커뮤니케이션 매니저로부터 상기 공유 메모리 라인의 로컬 주소를 제공받아 상기 데이터 저장 영역에 제공하고, 상기 제2 쉐이더 코어가 요청하는 데이터의 버츄얼 주소가 상기 캐시 라인의 로컬 주소에 대응되면, 상기 먹스는 상기 캐시 컨트롤러 모듈로부터 상기 캐시 라인의 로컬 주소를 제공받아 상기 데이터 저장 영역에 제공한다.
본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 일 실시예에 따른 그래픽 프로세싱 유닛을 포함하는 그래픽 프로세싱 시스템을 설명하기 위한 블록도이다.
도 2는 도 1의 그래픽 프로세싱 유닛의 구성을 설명하기 위한 블록도이다.
도 3은 도 2의 캐시의 세부 구성을 설명하기 위한 블록도이다.
도 4는 본 발명의 일 실시예에 따른 그래픽 데이터 처리 방법을 설명하기 위한 순서도이다.
도 5 내지 도 7은 도 4의 S100을 설명하기 위한 도면들이다.
도 8은 도 4의 S110을 설명하기 위한 도면들이다.
도 9 및 도 10은 도 4의 S120을 설명하기 위한 도면들이다.
도 11은 도 4의 S140을 설명하기 위한 도면이다.
도 12는 본 발명의 실시예에 따른 그래픽 프로세싱 유닛을 포함하는 무선 통신 디바이스를 도시한 블록도이다.
도 13은 본 발명의 실시예에 따른 그래픽 프로세싱 유닛을 포함하는 컴퓨팅 시스템을 도시한 블록도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 도면에서 층 및 영역들의 상대적인 크기는 설명의 명료성을 위해 과장된 것일 수 있다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
하나의 소자(elements)가 다른 소자와 "접속된(connected to)" 또는 "커플링된(coupled to)" 이라고 지칭되는 것은, 다른 소자와 직접 연결 또는 커플링된 경우 또는 중간에 다른 소자를 개재한 경우를 모두 포함한다. 반면, 하나의 소자가 다른 소자와 "직접 접속된(directly connected to)" 또는 "직접 커플링된(directly coupled to)"으로 지칭되는 것은 중간에 다른 소자를 개재하지 않은 것을 나타낸다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다. "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
비록 제1, 제2 등이 다양한 소자, 구성요소 및/또는 섹션들을 서술하기 위해서 사용되나, 이들 소자, 구성요소 및/또는 섹션들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자, 구성요소 또는 섹션들을 다른 소자, 구성요소 또는 섹션들과 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자, 제1 구성요소 또는 제1 섹션은 본 발명의 기술적 사상 내에서 제2 소자, 제2 구성요소 또는 제2 섹션일 수도 있음은 물론이다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
본 실시예에서 사용되는 '부' 또는 '유닛'이라는 용어는 소프트웨어 또는 FPGA또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '부' 또는 '유닛'은 어떤 역할들을 수행한다. 그렇지만 '부' 또는 '유닛'은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '부' 또는 '유닛'은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '부' 또는 '유닛'은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함할 수 있다. 구성요소들과 '부' 또는 '유닛'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '부' 또는 '유닛'들로 결합되거나 추가적인 구성요소들과 '부' 또는 '유닛'들로 더 분리될 수 있다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
도 1은 본 발명의 일 실시예에 따른 그래픽 프로세싱 유닛을 포함하는 그래픽 프로세싱 시스템을 설명하기 위한 블록도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 그래픽 프로세싱 시스템은 그래픽 프로세싱 유닛(GPU; Graphic Processing Unit, 100)과 외부 메모리(external memory, 200)를 포함한다.
그래픽 프로세싱 유닛(100)은 렌더링(rendering)을 수행하도록 구성될 수 있다. 구체적으로, 본 실시예에 따른 그래픽 프로세싱 유닛(100)은 타일 기반 렌더링(tile-based rendering)을 수행하도록 구성될 수 있다. 이를 위해, 그래픽 프로세싱 유닛(100)은 그래픽스 파이프라인(graphics pipeline) 구성들을 포함할 수 있다. 이러한 그래픽스 파이프라인은 렌더링 파이프라인(rendering pipeline)으로 지칭될 수도 있다. 이러한 그래픽스 파이프라인 구성들은 입력되는 그래픽 데이터들을 병렬 처리할 수 있다. 그리고 이러한 그래픽스 파이프라인 구성들은 소프트웨어(software) 또는 하드웨어(hardware)로 구성될 수 있다.
외부 메모리(200)는 데이터를 저장하도록 구성된다. 외부 메모리(200)는 그래픽 프로세싱 유닛(100)에 의해 처리되는 그래픽 데이터를 저장하거나, 그래픽 프로세싱 유닛(100)에 제공되는 그래픽 데이터를 저장할 수 있다. 또는, 외부 메모리(200)는 그래픽 프로세싱 유닛(100)의 동작 메모리로서 역할을 수행할 수 있다.
본 발명의 실시예에 따른 그래픽 프로세싱 시스템에서, 외부 메모리(200)에 저장하는 그래픽 데이터는 렌더링이 수행되지 전의 초기 입력 그래픽 데이터 또는 렌더링이 수행된 후의 최종적인 결과 그래픽 데이터일 수 있다. 외부 메모리(200)에는 렌더링 수행 중에 생성되는 중간 단계 그래픽 데이터는 저장되지 않을 수 있다. 이에 대한 설명은 도 4 내지 도 11을 이용하여 상술한다.
외부 메모리(200)는 DDR SDRAM(Double Data Rate Static DRAM), SDR SDRAM(Single Data Rate SDRAM)과 같은 하나 이상의 휘발성 메모리 장치 및/또는 EEPROM(Electrical Erasable Programmable ROM), 플래시 메모리(flash memory)과 같은 하나 이상의 비휘발성 메모리 장치를 포함하도록 구성될 수 있지만, 이에 제한되는 것은 아니다.
도 2는 도 1의 그래픽 프로세싱 유닛의 구성을 설명하기 위한 블록도이다. 도 3은 도 2의 캐시의 세부 구성을 설명하기 위한 블록도이다.
도 2를 참고하면, 그래픽 프로세싱 유닛(100)은 쉐이더 입력 컨트롤러(Shader Input Controller: 110)와, 쉐이더 코어(Shader Core) 그룹(120)와, 캐시(130) 등을 포함할 수 있다.
쉐이더 입력 컨트롤러(110)는 예를 들어, 중앙 처리 장치(Central Processing Unit; CPU)와 같은 호스트로부터 그래픽 명령들을 수신할 수 있다. 쉐이더 입력 컨트롤러(110)는 수신된 그래픽 명령들을 저장할 수 있고, 그래픽 명령에 적합한 작업을 생성할 수 있다.
쉐이더 입력 컨트롤러(110)는 생성된 작업을 쉐이더 코어 그룹(120) 중 하나의 쉐이더 코어(120_1, 120_2, 120_N)에 할당할 수 있다. 여기서, 할당은 작업에 대한 데이터를 쉐이더 코어에 전송하는 것을 의미할 수 있다.
쉐이더 코어 그룹(120)는 복수의 쉐이더 코어(120_1, 120_2, 120_N)를 포함할 수 있다. 각각 쉐이더 코어(120_1, 120_2, 120_N)는 예를 들어, 버텍스 쉐이더(Vertex Shader), 지오메트리 쉐이더(Geometry Shader), 픽셀 쉐이더(Pixel Shader) 등일 수 있지만, 이에 제한되는 것은 아니다. 즉, 2 이상의 조합된 쉐이더 코어가 예를 들어, 버텍스 쉐이더(Vertex Shader), 지오메트리 쉐이더(Geometry Shader), 픽셀 쉐이더(Pixel Shader) 등일 수 있음은 물론이다. 또한, 쉐이더 코어 그룹(120)은 동일한 기능을 수행하는 복수의 쉐이더 코어를 포함할 수 있다.
각각의 쉐이더 코어(120_1, 120_2, 120_N)는 쉐이더 입력 컨트롤러(110)로부터 전송된 그래픽 작업을 수행할 수 있는 쉐이더 프로그램을 포함할 수 있다.
각각의 쉐이더 코어(120_1, 120_2, 120_N)는 입력 그래픽 데이터를 입력받고, 입력받은 입력 그래픽 데이터를 처리하여 출력 그래픽 데이터를 생성할 수 있다.
여기에서, 각각의 쉐이더 코어(120_1, 120_2, 120_N)가 입력받은 입력 그래픽 데이터는 그래픽 프로세싱 유닛(100)에 의해 처리가 되지 않은 초기 그래픽 데이터이거나, 적어도 하나 이상의 쉐이더 코어를 거쳐 생성된 중간 그래픽 데이터일 수 있다. 또한, 각각의 쉐이더 코어(120_1, 120_2, 120_N)가 생성한 출력 그래픽 데이터는 다른 쉐이더 코어에 의한 추가적인 처리가 필요한 중간 그래픽 데이터이거나, 그래픽 프로세싱 유닛(100)에 의해 처리가 완료된 최종 그래픽 데이터일 수 있다.
버텍스 쉐이더는 예를 들어, 물체의 정점 정보에 수학적인 연산을 함으로써 물체에 특별한 효과를 주는 데 사용될 수 있다. 정점이 가지는 정보는 예를 들어, 3차원의 위치를 나타내는 x, y, z 좌표, 색상, 텍스처(texture), 조명 정보 등일 수 있다. 버텍스 쉐이더는 이와 같은 정점의 정보 값을 변화시켜서, 물체를 특별한 위치로 옮기거나, 텍스처를 바꾸거나, 색상을 바꾸는 등의 작업을 할 수 있다.
지오메트리 쉐이더는 예를 들어, 점, 선, 삼각형 등의 도형을 생성할 수 있다. 지오메트리 쉐이더에 포함된 쉐이더 프로그램은 버텍스 쉐이더가 수행된 후 수행될 수 있다. 지오메트리 쉐이더에 포함된 쉐이더 프로그램은 버텍스 쉐이더를 거쳐온 도형 정보를 입력받을 수 있다. 지오메트리 쉐이더에 포함된 쉐이더 프로그램은 예를 들어, 정점 3개가 지오메트리 쉐이더에 입력되면, 지오메트리 쉐이더는 정점을 모두 없앨 수도 있고, 더 많은 도형을 만들어 내보낼 수도 있다.
픽셀 쉐이더는 렌더링될 각각의 픽셀들의 색을 계산한다. 이로 인해, 픽셀 쉐이더는 최종적으로 픽셀이 어떻게 보일지를 결정한다. 픽셀 쉐이더는 언제나 같은 색을 출력할 수도 있고, 텍스처로부터 색을 읽어오거나, 빛을 적용하는 것, 범프 매핑(bump mapping), 그림자, 반사광, 투명 처리 등의 복잡한 현상을 수행할 수도 있다. 픽셀 쉐이더는 각각의 픽셀들이 렌더링될 때 수행되기 때문에, 다른 픽셀들과 관련되지 않을 수 있다. 픽셀 쉐이더는 픽셀의 색 이외에도 깊이나 또 다른 색을 출력할 수도 있다.
각각의 쉐이더 코어(120_1, 120_2, 120_N)는 캐시(130)와 데이터(Data)를 주고 받을 수 있고, 캐시(130)에 데이터에 관한 버츄얼 주소(Addr)를 제공할 수 있다. 각각의 쉐이더 코어(120_1, 120_2, 120_N)가 캐시(130)와 주고 받는 데이터(Data)는 쉐이더 프로그램의 동작에 필요한 캐시 데이터 또는 쉐이더 코어(120_1, 120_2, 120_N)에 의해 처리되거나 처리될 그래픽 데이터일 수 있다. 각각의 쉐이더 코어(120_1, 120_2, 120_N)가 캐시(130)에 제공하는 버츄얼 주소(Addr)는 캐시 데이터가 위치하는 버츄얼 주소 또는 그래픽 데이터가 위치하는 버츄얼 주소일 수 있다.
버츄얼 주소(Addr) 및 데이터(Data)에 관한 각각의 쉐이더 코어(120_1, 120_2, 120_N)와 캐시(130) 사이의 동작은 이 후에 상술하도록 한다.
도 3을 참고하면, 캐시(130)는 커뮤니케이션 매니저(Communication Manager; 131)과, NRB(Not Replaceable Bits) 모듈(132)과, 캐시 컨트롤러 모듈(Cache Controller Module; 133)과, 데이터 저장 영역(134) 등을 포함할 수 있다.
본 발명의 실시예에 따른 그래픽 프로세싱 유닛(100)에서, 캐시(130)는 n-웨이 세트 어소시에이티브 캐시(n-way set associative cache)(n은 2 이상의 자연수) 구조를 가질 수 있다. 이에 대한 자세한 설명은 도 6 및 도 7을 참고하여 후술한다.
데이터 저장 영역(134)은 쉐이더 코어(120)에 의해 생성된 중간 그래픽 데이터가 저장되는 공유 메모리 라인과 쉐이더 코어(120)의 동작에 필요한 캐시 데이터가 저장될 수 있는 캐시 라인을 포함한다.
공유 메모리 라인은 캐시 정책(cache policy)에 의해 공유 메모리 라인에 저장된 데이터가 대체되지 않은 저장 영역이고, 캐시 라인은 캐시 정책에 의해 캐시 라인에 저장된 데이터가 대체될 수 있는 저장 영역이다. 공유 메모리 라인 및 캐시 라인에 관한 설명은 그래픽 프로세싱 유닛(100)이 동작되는 동안 명확히 설명될 수 있으므로, 이에 대한 설명은 도 4 내지 도 11을 통해 상술한다.
커뮤니케이션 매니저(131)는 공유 메모리 라인의 로컬 주소(local address)를 관리할 수 있다. 커뮤니케이션 매니저(131)는 캐시 라인의 로컬 주소는 관리하지 않을 수 있다. 즉, 커뮤니케이션 매니저(131)는 캐시 정책에 의해 저장된 데이터가 대체되지 않는 공유 메모리 라인에 관한 로컬 주소만을 관리할 수 있다.
캐시 컨트롤러 모듈(133)은 캐시 라인의 로컬 주소를 관리할 수 있다. 예를 들어, 캐시 컨트롤러 모듈(133)은 캐시 라인에 대한 인덱스(index) 비트 및 태그(tag) 비트를 관리할 수 있다.
커뮤니케이션 매니저(131)와 달리 캐시 컨트롤러 모듈(133)은 공유 메모리 라인의 로컬 주소, 예를 들어, 공유 메모리 라인에 대한 인덱스 비트 및 태그 비트도 관리할 수 있다.
NRB 모듈(132)은 데이터 저장 영역(134)에 저장된 데이터가 캐시 정책에 의해 대체될 수 있는지 여부를 관리할 수 있다. 다시 말하면, NRB 모듈(132)은 공유 메모리 라인 및 캐시 라인에 대한 NRB(Not Replaceable Bit) 값을 관리할 수 있다.
NRB 모듈(132)은 NRB, 즉 캐시 정책에 의해 대체할 수 있는지 여부를 나타내는 상태 비트의 값을 셋팅 또는 리셋팅할 수 있다. NRB 모듈(132)은 공유 메모리 라인에 대한 NRB는 제1 상태로 세팅하고, 캐시 라인에 대한 NRB는 제1 상태와 다른 제2 상태로 셋팅할 수 있다. 여기에서, 제1 상태로 세팅된 NRB는 공유 메모리 라인에 저장된 데이터가 대체될 수 없다는 것을 나타내고, 제2 상태로 세팅된 NRB는 캐시 라인에 저장된 데이터가 대체될 수 있음을 나타낸다.
또한, NRB 모듈(132)은 제1 상태 또는 제2 상태로 세팅된 NRB를 리셋팅할 수 있다. 즉, NRB 모듈(132)은 제1 상태로 세팅된 NRB를 제거할 수 있고, 제2 상태로 리셋팅할 수 있다.
NRB 모듈(132)이 NRB의 값을 셋팅 또는 리셋팅하는 것은 커뮤니케이션 매니저(131)에 의해 컨트롤될 수 있다.
캐시(130)의 데이터 저장 영역(134)에 저장된 데이터를 읽기 위해, 쉐이더 코어 그룹(120)에 포함된 각각의 쉐이더 코어(120_1, 120_2, 120_N)는 커뮤니케이션 매니저(131)와, NRB 모듈(132)과, 캐시 컨트롤러 모듈(133)에 데이터에 관한 버츄얼 주소(Raddr)을 제공한다.
또는, 캐시(130)의 데이터 저장 영역(134)에 데이터를 쓰기 위해, 각각의 쉐이더 코어(120_1, 120_2, 120_N)는 커뮤니케이션 매니저(131)와, NRB 모듈(132)과, 캐시 컨트롤러 모듈(133)에 데이터에 관한 버츄얼 주소(Waddr)을 제공한다.
각각의 쉐이더 코어(120_1, 120_2, 120_N)에 의해 요청된 버츄얼 주소(Raddr, Waddr)가 공유 메모리 라인의 로컬 주소에 대응되면, 커뮤니케이션 매니저(131)는 요청된 데이터가 저장된 공유 메모리 라인의 로컬 주소(Raddr', Waddr')를 캐시(130)에 포함된 먹스(Multiplexer, MUX)(135)에 제공한다.
또한, 각각의 쉐이더 코어(120_1, 120_2, 120_N)에 의해 요청된 버츄얼 주소(Raddr, Waddr)가 캐시 라인의 로컬 주소에 대응되면, 캐시 컨트롤러 모듈(133)은 요청된 데이터가 저장된 캐시 라인의 로컬 주소(Raddr', Waddr')를 먹스(135)에 제공한다.
캐시 컨트롤러 모듈(133)은 공유 메모리 라인의 로컬 주소도 관리하고 있으므로, 각각의 쉐이더 코어(120_1, 120_2, 120_N)에 의해 요청된 버츄얼 주소(Raddr, Waddr)가 공유 메모리 라인의 로컬 주소에 대응될 때에도, 캐시 컨트롤러 모듈(133)은 공유 메모리 라인의 로컬 주소(Raddr', Waddr')를 먹스(135)에 제공한다.
먹스(135)는 커뮤니케이션 매니저(131)에 의해 제공된 공유 메모리 라인의 로컬 주소(Raddr', Waddr')과, 캐시 컨트롤러 모듈(133)에 의해 제공된 캐시 라인의 로컬 주소(Raddr', Waddr')를 데이터 저장 영역(134)에 제공한다.
각각의 쉐이더 코어(120_1, 120_2, 120_N)에 의해 요청된 버츄얼 주소(Raddr, Waddr)가 공유 메모리 라인의 로컬 주소에 대응될 때, 먹스(135)는 커뮤니케이션 매니저(131) 및 캐시 컨트롤러 모듈(133)로부터 공유 메모리 라인의 로컬 주소(Raddr', Waddr')를 각각 제공 받는다. 하지만, 이와 같은 경우, 먹스(135)는 커뮤니케이션 매니저(131)에 의해 제공된 공유 메모리 라인의 로컬 주소(Raddr', Waddr')를 데이터 저장 영역(134)에 제공한다.
본 발명의 실시예에 따른 그래픽 프로세싱 유닛에서, 먹스(135)는 커뮤니케이션 매니저(131)에 의해 컨트롤될 수 있다. 즉, 커뮤니케이션 매니저(131)는 제1 제어 신호(Ctr #1)를 통해 먹스(135)를 컨트롤할 수 있다. 제1 제어 신호(Crt #1)에 의해, 먹스(135)는 커뮤니케이션 매니저(131)에 의해 제공된 공유 메모리 라인의 로컬 주소(Raddr', Waddr')와, 캐시 컨트롤러 모듈(133)에 의해 제공된 캐시 라인의 로컬 주소(Raddr', Waddr') 중 하나를 데이터 저장 영역(134)에 제공할 수 있다.
커뮤니케이션 매니저(131)에 의해 제공된 공유 메모리 라인의 로컬 주소(Raddr', Waddr') 및/또는 캐시 컨트롤러 모듈(133)에 의해 제공된 캐시 라인의 로컬 주소(Raddr', Waddr')를 제공받은 데이터 저장 영역(134)은 로컬 주소(Raddr', Waddr')에 저장된 데이터(Rdata)를 각각의 쉐이더 코어(120_1, 120_2, 120_N)에 제공하거나, 데이터(Wdata)를 로컬 주소(Raddr', Waddr')에 저장할 수 있다.
NRB 모듈(132)은 각각의 쉐이더 코어(120_1, 120_2, 120_N)에 의해 요청된 버츄얼 주소(Raddr, Waddr)에 대응되는 데이터 저장 영역(134)의 NRB의 값, 즉, 상태 비트를 판단한다. 즉, NRB 모듈(132)은 요청된 버츄얼 주소(Raddr, Waddr)에 대응되는 데이터 저장 영역(134)이 공유 메모리 라인인지 또는 캐시 라인인지를 판단한다.
이를 통해, NRB 모듈(132)은 요청된 버츄얼 주소(Raddr, Waddr)가 공유 메모리 라인인지 또는 캐시 라인인지 여부를 확인 신호(conf)를 통해 커뮤니케이션 매니저(131) 및 캐시 컨트롤러 모듈(133)에 제공할 수 있다.
또한, NRB 모듈(132)은 커뮤니케이션 매니저(131)로부터 제2 제어 신호(Ctr #2)를 제공받아, 데이터 저장 영역에 포함된 메모리 라인(공유 메모리 라인, 캐시 라인)의 NRB 값을 셋팅하거나 리셋팅할 수 있다.
도 2 내지 도 11을 참조하여, 본 발명의 일 실시예에 따른 그래픽 데이터 처리 방법에 대해서 설명한다.
도 4는 본 발명의 일 실시예에 따른 그래픽 데이터 처리 방법을 설명하기 위한 순서도이다. 도 5 내지 도 7은 도 4의 S100을 설명하기 위한 도면들이다. 도 8은 도 4의 S110을 설명하기 위한 도면들이다. 도 9 및 도 10은 도 4의 S120을 설명하기 위한 도면들이다. 도 11은 도 4의 S140을 설명하기 위한 도면이다.
도 4 내지 도 7을 참고하면, 로컬러블 공간(localable space)을 위해 메모리를 할당한다(S100). 예를 들어, 로컬러블 공간을 위한 메모리 할당은 "로컬러블(localable)" 옵션을 이용할 수 있다.
즉, 8Kbyte에 해당되는 메모리를 로컬러블 공간으로 할당하고자 할 때, 예를 들어, "malloc(8K, localable)"를 이용할 수 있다.
좀 더 구체적으로, 소프트 웨어(예를 들어, DDK 또는 kernel)에 의해, 외부 메모리(200) 내의 로컬러블 공간을 위한 가상 주소(Virtual Address)를 할당한다.
이어서, 그래픽 프로세싱 유닛(100)에 포함된 메모리 매니저 유닛(Memory Management Unit)(140)은 할당된 가상 주소(Virtual Address)를 물리적 주소(Physical Address)로 변환할 수 있다.
이와 같이 변환된 물리적 주소(Physical Address)에 의해, 외부 메모리(200)에 제1 로컬러블 공간(allocated space #1)이 할당된다.
또한, 외부 메모리(200)에 할당된 제1 로컬러블 공간(allocated space #1)에 대응되는 제2 로컬러블 공간(allocated space #2)이 캐시(130) 내에 할당된다. 좀 더 구체적으로, 캐시(130)에 포함된 데이터 저장 영역(134)에 제2 로컬러블 공간(allocated space #2)이 할당된다.
제2 로컬러블 공간(allocated space #2)을 나타내는 인덱스(index) 비트 및 태그(tag) 비트는 제1 로컬러블 공간(allocated space #1)의 물리적 주소에 각각 대응될 수 있다.
도 5에 도시된 각각의 제2 로컬러블 공간(allocated space #2)은 도 6의 커뮤니케이션 데이터(communication data)를 저장하기 위한 공간일 수 있다. 즉, 외부 메모리(200)에 할당된 제1 로컬러블 공간(allocated space #1)에 대응되는 데이터 저장 영역(134) 내의 공간은 예를 들어, 인덱스가 0이고, 태그가 0 및 1인 경우와, 인덱스가 1이고, 태그가 4 및 5인 경우와, 인덱스가 2이고 태그가 8 및 9에 해당되는 메모리 라인이다.
외부 메모리(200)에 할당된 제1 로컬러블 공간(allocated space #1)에 대응되는 데이터 저장 영역(134) 내의 메모리 라인에는 커뮤니케이션 데이터(communication data)가 저장될 수 있다. 덧붙여, 커뮤니케이션 데이터(communication data)가 저장되도록 할당되지 않은 데이터 저장 영역(134) 내의 메모리 라인은 캐시 데이터가 저장될 수 있다.
커뮤니케이션 데이터(communication data)는 쉐이더 코어(도 2의 120)에 의해 생성되는 중간 그래픽 데이터일 수 있다. 즉, 커뮤니케이션 데이터(communication data)는 예를 들어, 중간 그래픽 데이터일 수 있다.
캐시 데이터(cach data)는 쉐이더 코어(도 2의 120)이 동작에 사용되는 데이터일 수 있다. 즉, 캐시 데이터(cach data)는 중간 그래픽 데이터가 아닐 수 있다.
다시 말하면, 외부 메모리(200)에 할당된 제1 로컬러블 공간(allocated space #1)에 대응되는 데이터 저장 영역(134) 내의 메모리 라인은 중간 그래픽 데이터를 저장하기 위한 공간일 수 있다.
중간 그래픽 데이터는 그래픽 프로세싱 유닛(100)이 동작하는 동안 여러 쉐이더 코어에 의해 공유되므로, 중간 그래픽 데이터 즉, 커뮤니케이션 데이터(communication data)가 저장될 수 있는 메모리 라인은 공유 메모리 라인일 수 있다. 반면, 커뮤니케이션 데이터(communication data)가 저장되지 않고 캐시 데이터(cach data)가 저장되는 메모리 라인은 캐시 라인일 수 있다.
도 6 및 도 7을 이용하여, 로컬러블 공간을 위해 캐시 구조에 대해서 설명한다.
만약, 하나의 인덱스 공간에 하나의 메모리 라인만이 대응되고, 해당 메모리 라인은 공유 메모리 라인으로 할당된 경우, 공유 메모리 라인으로 할당된 인덱스 공간은 더 이상 캐싱 공간(caching space)로 사용될 수 없다. 다시 말하면, 쉐이더 코어 등에 의해, 공유 메모리 라인으로 할당된 인덱스 공간의 캐시 데이터가 요청될 경우, 요청된 데이터는 외부 메모리에서 쉐이더 코어 등에 직접 제공되어야 한다. 이와 같은 현상은 데이터 처리의 신속성을 저해할 수 있다.
따라서, 하나의 인덱스 공간에 복수개의 메모리 라인이 대응될 필요가 있다. 또한, 하나의 인덱스 공간에 대응된 복수개의 메모리 라인 중 일부만이 공유 메모리 라인으로 할당될 필요가 있다. 따라서, 캐시(130)는 n-웨이 세트 어소시에이티브 캐시(n-way set associative cache)(n은 2 이상의 자연수) 구조일 필요가 있다.
도 6은 4-웨이 세트 어소시에이티브 캐시를 예시적으로 나타내었다. 또한, 도 6은 4-웨이 즉, 4개의 메모리 라인으로 이루어진 메모리 라인 세트가 4개(인덱스 깊이(index depth): 4)인 것을 도시하였지만, 이에 제한되는 것은 아니다.
도 6의 인덱스 비트가 0인 경우를 참고하면, 하나의 인덱스 공간에 4개의 메모리 라인이 대응될 수 있다. 또한, 4개의 메모리 라인(150a, 150b, 150c, 150d) 중 2개만이 커뮤니케이션 데이터(communication data)를 위한 공유 메모리 라인으로 할당되고, 나머지 2개의 메모리 라인은 캐시 데이터(cach data)를 위한 캐시 라인으로 할당된다. 예를 들어, 인덱스 비트가 0인 메모리 라인 세트를 제1 메모리 라인 세트(150)이라고 하면, 제1 메모리 라인 세트(150)는 제1 공유 메모리 라인(150a)와, 제2 공유 메모리 라인(150b)와, 두 개의 캐시 라인(150c, 150d)를 포함한다.
도 6의 인덱스 비트가 1인 경우를 참고하면, 인덱스 비트가 1인 메모리 라인 세트는 2개의 공유 메모리 라인과 2개의 캐시 라인을 포함한다. 하지만, 인덱스 비트가 4인 경우를 참고하면, 인덱스 비트가 4인 메모리 라인 세트는 공유 메모리 라인 없이, 4개의 캐시 라인만을 포함할 수 있다.
도 4 및 도 8을 참고하면, 데이터 저장 영역(134)에 할당된 제2 로컬러블 공간(allocated space #2)의 수와 동일한 각각의 태그의 NRB(Not Replaceable Bit) 값을 제1 상태("1")로 셋팅한다(S110).
다시 말하면, 커뮤니케이션 데이터(communication data)가 저장될 메모리 라인의 NRB 값을 제1 상태로 셋팅한다. 덧붙여, 캐시 데이터(cach) 데이터가 저장될 메모리 라인의 NRB 값을 제2 상태("0")로 셋팅한다. 예를 들어, 캐시 데이터(cach) 데이터가 저장될 메모리 라인의 NRB 값은 "0"으로 유지됨으로써, 제2 상태("0")로 셋팅될 수 있다.
NRB 값이 제1 상태인 경우, 메모리 라인 즉, 공유 메모리 라인에 저장된 데이터는 캐시 정책에 의해 다른 데이터로 대체될 수 없음을 나타낸다. 반면, NRB 값이 제2 상태인 경우, 메모리 라인 즉, 캐시 라인에 저장된 데이터는 캐시 정책에 의해 다른 데이터로 대체될 수 있음을 나타낸다.
도 3을 이용하여, NRB(Not Replaceable Bit) 값을 세팅하는 것에 대해서 설명한다.
커뮤니케이션 매니저(131)는 데이터 저장 영역(134)에 할당된 제2 로컬러블 공간(allocated space #2)에 대한 로컬 주소를 제공받는다. 커뮤니케이션 매니저(131)는 제공받은 로컬 주소에 해당되는 NRB의 값을 제1 상태("1")로 셋팅하도록 제2 제어 신호(Ctr #2)를 NRB 모듈(132)에 제공한다.
제2 제어 신호(Ctr #2)를 받은 NRB 모듈(132)은 제2 로컬러블 공간(allocated space #2)에 해당되는 NRB의 값은 제1 상태("1")로 셋팅한다. 즉, 커뮤니케이션 데이터(communication data)가 저장될 공유 메모리 라인들의 NRB의 값은 제1 상태로 셋팅되고, 캐시 데이터(cach data)가 저장될 캐시 라인의 NRB의 값은 제2 상태로 셋팅된다.
또한, NRB 모듈(132)은 공유 메모리 라인 및 캐시 라인에 대한 NRB(Not Replaceable Bit) 값을 관리한다.
도 7 및 도 8를 참고하면, 커뮤니케이션 데이터(communication data)가 저장될 영역인 제1 공유 메모리 라인(150a) 및 제2 공유 메모리 라인(150b)의 각각의 NRB의 값은 제1 상태("1")로 셋팅되고, 캐시 데이터(cach data)가 저장될 캐시 라인(150c, 150d)의 각각의 NRB의 값은 제2 상태("0")로 셋팅된다.
도 8에서, NRB의 값은 제1 상태("1")로 세팅된 공유 메모리 라인의 유효성(Valid) 비트는 "X"로 표시되어 있다. "X"가 의미하는 것은 공유 메모리 라인에 저장될 커뮤니케이션 데이터의 유효성을 고려할 필요가 없음을 나타내는 것이다.
도 2 내지 도 4, 도 9 및 도 10을 참고하면, 각각의 쉐이더 코어(120_1, 120_2, 120_N)에 포함된 각각의 쉐이더 프로그램을 실행한다(S120).
구체적으로, 제1 쉐이더 코어(120_1)는 초기 입력 그래픽 데이터(Input graphic data)를 입력받는다.
예를 들어, 제1 쉐이더 코어(120_1)는 초기 입력 그래픽 데이터(Input graphic data)가 저장된 영역의 가상 주소(Raddr)을 캐시(130)에 제공한다. 제1 쉐이더 코어(120_1)의 요청에 의해, 초기 입력 그래픽 데이터(Input graphic data)는 외부 메모리(200)로부터 그래픽 프로세싱 유닛(100)에 제공된다. 초기 입력 그래픽 데이터(Input graphic data)는 데이터 저장 영역(134) 중 캐시 데이터(cach data)를 저장하는 캐시 라인을 거쳐 제1 쉐이더 코어(120_1)에 제공된다.
제1 쉐이더 코어(120_1)에 포함된 쉐이더 프로그램을 이용하여, 초기 입력 그래픽 데이터(Input graphic data)를 처리한다. 이를 통해, 제1 쉐이더 코어(120_1)는 제1 중간 그래픽 데이터(intermediate graphic data #1)을 생성한다.
제1 쉐이더 코어(120_1)은 초기 입력 그래픽 데이터(Input graphic data)를 처리하여 다수의 중간 그래픽 데이터를 생성할 수 있지만, 설명의 편의상 하나의 중간 그래픽 데이터를 생성하는 것으로 설명한다.
제1 중간 그래픽 데이터를 데이터 저장 영역(134)에 쓰기 위해, 제1 쉐이더 코어(120_1)는 커뮤니케이션 매니저(131)와, NRB 모듈(132)과, 캐시 컨트롤러 모듈(133)에 제1 중간 그래픽 데이터에 관한 버츄얼 주소(Waddr)을 제공한다.
NRB 모듈(132)은 제1 쉐이더 코어(120_1)가 제공한 버츄얼 주소(Waddr)에 대응되는 데이터 저장 영역(134)의 NRB의 값이 제1 상태인지 제2 상태인지를 판단한다.
제1 쉐이더 코어(120_1)가 제공한 버츄얼 주소(Waddr)는 커뮤니케이션 데이터(communication data)가 저장될 제1 공유 메모리 라인(150a)의 로컬 주소에 대응되므로, 커뮤니케이션 매니저(131)는 제1 공유 메모리 라인(150a)의 로컬 주소(Waddr')를 먹스(135)에 제공한다.
먹스(135)는 제1 공유 메모리 라인(150a)의 로컬 주소(Waddr')를 데이터 저장 영역(134)에 제공한다. 이를 통해, 제1 중간 그래픽 데이터(intermediate graphic data #1)는 제1 공유 메모리 라인(150a)에 쓰여지고 저장된다.
따라서, 제1 쉐이더 코어(120_1)에 의해 생성된 제1 중간 그래픽 데이터(intermediate graphic data #1)는 NRB의 값이 제1 상태("1")로 세팅된 제1 공유 메모리 라인(150a)에 쓰여진다.
제1 중간 그래픽 데이터(intermediate graphic data #1)가 커뮤니케이션 데이터(communication data)에 해당되므로, NRB의 값이 제2 상태("0")로 세팅된 캐시 라인(150c, 150d)에는 저장되지 않는다.
또한, 제1 상태("1")는 메모리 라인에 저장된 데이터는 캐시 정책에 의해 다른 데이터로 대체될 수 없음을 나타내므로, 제1 공유 메모리 라인(150a)의 NRB의 값이 제1 상태("1")인 동안, 제1 중간 그래픽 데이터(intermediate graphic data #1)는 외부 메모리(200)에 전송되지 않을 수 있다.
도 10에서, 제1 중간 그래픽 데이터(intermediate graphic data #1)는 하나가 생성되는 것으로 설명하지만, 설명의 편의를 위한 것일 뿐, 이에 제한되는 것은 아니다. 즉, 제1 쉐이더 코어(120_1)은 N(N>1)개의 제1 중간 그래픽 데이터(intermediate graphic data #1)를 생성하여, N개의 공유 메모리 라인에 각각 제1 중간 그래픽 데이터(intermediate graphic data #1)를 저장할 수 있음은 물론이다.
이어서, 제2 쉐이더 코어(120_2)는 제1 공유 메모리 라인(150a)에 저장된 제1 중간 그래픽 데이터(intermediate graphic data #1)를 입력받는다.
구체적으로, 제1 중간 그래픽 데이터(intermediate graphic data #1)를 읽기 위해, 제2 쉐이더 코어(120_2)는 제1 공유 메모리 라인(150a)에 대한 버츄얼 주소(Raddr)를 커뮤니케이션 매니저(131)와, NRB 모듈(132)과, 캐시 컨트롤러 모듈(133)에 제공한다.
커뮤니케이션 매니저(131)는 제2 쉐이더 코어(120_2)에 의해 요청된 버츄얼 주소(Raddr)가 제1 공유 메모리 라인(150a)의 로컬 주소 즉, 제1 공유 메모리 라인(150a)의 인덱스 비트 및 태그 비트에 대응되는지 여부를 판단한다.
제2 쉐이더 코어(120_2)에 의해 요청된 버츄얼 주소(Raddr)가 제1 공유 메모리 라인(150a)의 로컬 주소에 대응되므로, 커뮤니케이션 매니저(131)는 제1 공유 메모리 라인(150a)의 로컬 주소(Raddr')를 먹스(135)에 제공한다. 이를 통해, 제1 중간 그래픽 데이터(intermediate graphic data #1)는 제2 쉐이더 코어(120_2)에 제공된다.
이어서, 제2 쉐이더 코어(120_2)에 포함된 쉐이더 프로그램을 이용하여, 제1 중간 그래픽 데이터를 처리한다. 이를 통해, 제2 쉐이더 코어(_)는 제2 중간 그래픽 데이터(intermediate graphic data #2)을 생성한다.
이상의 설명에서, 제2 쉐이더 코어(120_2)가 제1 중간 그래픽 데이터(intermediate graphic data #1)를 입력받아, 제2 중간 그래픽 데이터(intermediate graphic data #2)를 생성하는 것으로 설명하였지만, 이에 제한되는 것은 아니다.
다시 말하면, 제1 쉐이더 코어(120_1)은 공유 메모리 라인에 저장된 제1 중간 그래픽 데이터(intermediate graphic data #1)를 다시 입력받아, 제2 중간 그래픽 데이터(intermediate graphic data #2)를 생성할 수 있음은 물론이다.
덧붙여, 제1 쉐이더 코어(120_1)가 N(N>1)개의 제1 중간 그래픽 데이터(intermediate graphic data #1)를 생성했을 경우, 제1 쉐이더 코어(120_1)는 N개의 공유 메모리 라인에 저장된 제1 중간 그래픽 데이터(intermediate graphic data #1) 중, M(M>1)개의 제1 중간 그래픽 데이터(intermediate graphic data #1)를 다시 입력받아, 제2 중간 그래픽 데이터(intermediate graphic data #2)를 생성할 수 있다.
제1 중간 그래픽 데이터(intermediate graphic data #1)가 제1 공유 메모리 라인(150a)에 쓰여진 것과 유사한 과정을 거쳐, 제2 중간 그래픽 데이터(intermediate graphic data #2)는 NBR의 값이 제1 상태("1")로 세팅된 공유 메모리 라인에 저장될 수 있다. 예를 들어, 제2 중간 그래픽 데이터(intermediate graphic data #2)는 제2 공유 메모리 라인(150b)에 저장될 수 있지만, 설명의 편의성을 위한 것일 뿐, 이에 제한되는 것은 아니다.
즉, 제1 중간 그래픽 데이터(intermediate graphic data #1)와 제2 중간 그래픽 데이터(intermediate graphic data #2)는 동일한 인덱스 공간 즉, 동일한 메모리 라인 세트에 할당된 공유 메모리 라인에 각각 저장될 수 있다. 또는, 제1 중간 그래픽 데이터(intermediate graphic data #1)와 제2 중간 그래픽 데이터(intermediate graphic data #2)는 서로 다른 메모리 라인 세트에 할당된 공유 메모리 라인에 각각 저장될 수 있다.
제1 중간 그래픽 데이터(intermediate graphic data #1)와 마찬가지로, 제2 공유 메모리 라인(150b)의 NRB의 값이 제1 상태("1")인 동안, 제2 중간 그래픽 데이터(intermediate graphic data #2)는 외부 메모리(200)에 전송되지 않을 수 있다.
이어서, 제2 공유 메모리 라인(150b)에 저장된 제2 중간 그래픽 데이터(intermediate graphic data #2)를 제N 쉐이더 코어(120_N)이 입력받을 수 있다. 제N 쉐이더 코어(120_N)는 제2 중간 그래픽 데이터(intermediate graphic data #2)를 처리하여, 최종 결과 그래픽 데이터(Output graphic data)를 생성한다.
이와 같이 생성된 최종 결과 그래픽 데이터(Output graphic data)는 커뮤니케이션 데이터(communication data)가 저장될 수 있는 공유 메모리 라인에 저장되지 않는다. 최종 결과 그래픽 데이터(Output graphic data)는 캐시 데이터(cach data)가 저장될 수 있는 캐시 라인에 저장되었다가, 외부 메모리(200)로 전송된다.
최종 결과 그래픽 데이터(Output graphic data)를 외부 메모리(200)로 전송함으로써, 쉐이더 프로그램의 실행이 종료될 수 있다.
도 9에서, 쉐이더 프로그램이 실행되는 동안, 그래픽 프로세서 유닛(100)과 외부 메모리(200) 사이에 중간 그래픽 데이터(intermediate graphic data)의 이동은 발생하지 않는다. 이를 통해, 그래픽 데이터 처리 중 메모리의 대역폭을 감소시킬 수 있다.
도 4를 참고하면, 로컬러블 공간(localable space)을 위해 할당된 메모리를 할당 해제한다(S130).
예를 들어, 로컬러블 공간으로 할당된 8Kbyte의 메모리를 할당 해제하고자 할 때, 예를 들어, "dealloc(8K, localable)"를 이용할 수 있다.
예를 들어, 소프트 웨어(예를 들어, DDK 또는 kernel)에 의해, 외부 메모리(200) 내의 로컬러블 공간에 대한 가상 주소(Virtual Address)를 할당 해제한다. 또한, 가상 주소(Virtual Address)가 변환된 물리적 주소(Physical Address)도 할당 해제한다.
도 4 및 도 11을 참고하면, 데이터 저장 영역(134)에 할당되었던 제2 로컬러블 공간(allocated space #2)의 수와 동일한 각각의 태그의 NRB(Not Replaceable Bit) 값을 제거한다(S140).
다시 말하면, 데이터 저장 영역(134)의 메모리 라인 중, 공유 메모리 라인의 NRB의 값을 제2 상태("0")로 리셋한다.
데이터 저장 영역(134)에 포함된 메모리 라인의 NRB의 값을 전체적으로 제2 상태("0")로 리셋 함으로써, 데이터 저장 영역(134)에 포함된 모든 메모리 라인은 캐시 데이터를 저장하는데 사용될 수 있다. 즉, 공유 메모리 라인에 저장되어 있던 중간 그래픽 데이터도 캐시 정책에 의해 대체될 수 있다.
도 12는 본 발명의 실시예에 따른 그래픽 프로세싱 유닛을 포함하는 무선 통신 디바이스를 도시한 블록도이다.
도 12를 참조하면, 디바이스(900)는, 셀룰러 전화기, 스마트폰 단말기, 핸드 셋, 개인 휴대 정보 단말기(PDA), 랩탑 컴퓨터, 비디오 게임 유닛 또는 기타 다른 디바이스일 수도 있다. 디바이스(900)는, 코드 분할 다중 액세스(CDMA), 이동 통신을 위한 글로벌시스템(GSM) 과 같은 시분할 다중 액세스(TDMA), 또는 기타 다른 무선 통신 표준을 사용할 수도 있다.
디바이스(900)는 수신 경로 및 송신 경로를 통해 양-방향 통신을 제공할 수 있다. 수신 경로 상에서 하나 이상의 기지국들에 의해 송신된 신호들은 안테나(911)에 의해 수신될 수도 있고 수신기(RCVR, 913)에 제공될 수도 있다. 수신기(913)는 수신 신호를 컨디셔닝 및 디지털화하고, 추가적인 프로세싱을 위해 디지털 섹션(920)에 샘플들을 제공할 수 있다. 송신 경로 상에서, 송신기(TMTR, 915)는 디지털 섹션(920)으로부터 송신된 데이터를 수신하고, 그 데이터를 프로세싱 및 컨디셔닝하고, 변조된 신호를 생성하며, 그 변조된 신호는 안테나(911)를 통해 하나 이상의 기지국들로 송신될 수 있다.
디지털 섹션(920)은 하나 이상의 디지털 신호 프로세서(DSP), 마이크로-프로세서, 감소된 명령 세트 컴퓨터(RISC) 등으로 구현될 수 있다. 또한, 디지털 섹션(920)은 하나 이상의 주문형 집적 회로 (ASIC) 또는 기타 다른 타입의 집적 회로(IC) 상에서 제조될 수도 있다.
디지털 섹션(920)은, 예를 들어, 모뎀 프로세서(934), 비디오 프로세서 (922), 애플리케이션 프로세서(924), 디스플레이 프로세서(928), 제어기/멀티코어 프로세서(926), 센트럴 프로세싱 유닛(930), 및 외부 버스 인터페이스(EBI, 932)와 같은 다양한 프로세싱 및 인터페이스 유닛들을 포함할 수 있다.
비디오 프로세서(922)는 그래픽 애플리케이션들에 대한 프로세싱을 수행할 수 있으며, 앞서 설명한 본 발명의 실시예들에 따른 그래픽 프로세싱 유닛(100, 300, 400)을 채용할 수 있다. 일반적으로, 비디오 프로세서(922)는 임의의 세트의 그래픽 동작들에 대한 임의의 수의 프로세싱 유닛들 또는 모듈들을 포함할 수 있다. 비디오 프로세서(922)의 특정 부분은 펌웨어 및/또는 소프트웨어로 구현될 수도 있다. 예를 들어, 제어 유닛은 앞서 설명한 기능들을 수행하는 펌웨어 및/또는 소프트웨어 모듈들(예를 들어, 절차, 함수 등)로 구현될 수 있다. 펌웨어 및/또는 소프트웨어 코드들은 메모리(예를 들어, 도 1의 외부 메모리(200))에 저장될 수도 있고, 프로세서(예를 들어, 멀티-코어 프로세서(926))에 의해 실행될 수도 있다. 메모리는 프로세서 내에 구현될 수 있거나 프로세서 외부에 구현될 수도 있다.
비디오 프로세서(922)는 오픈 그래픽 라이브러리(OpenGL), Direct3D 등과 같은 소프트웨어 인터페이스를 구현할 수 있다. 센트럴 프로세싱 유닛(930)은 비디오 프로세서(922)와 함께 일련의 그래픽 처리 동작들을 수행할 수 있다. 제어기/멀티코어 프로세서(926)는 적어도 두 개의 코어를 포함하여 제어기/멀티코어 프로세서(926)가 처리해야 하는 워크로드에 따라서 두 개의 코어에 워크로드를 배당하여 동시에 해당하는 워크로드를 처리할 수 있다.
도 13은 본 발명의 실시예에 따른 그래픽 프로세싱 유닛을 포함하는 컴퓨팅 시스템을 도시한 블록도이다.
도 13을 참조하면, 본 발명의 일 실시예에 따른 컴퓨팅 시스템(1000)은 센트럴 프로세싱 유닛(CPU, 1005), 시스템 메모리(system memory, 2000), 서브 그래픽 시스템(3000), 디스플레이 장치(4000)를 포함한다.
센트럴 프로세싱 유닛(1005)은 애플리케이션을 구동하여, 메쉬(mesh)를 생성하도록 구성된다. 메쉬는 오브젝트(object)의 표면을 묘사할 수 있다. 메쉬는 복수의 프리미티브들로 구성될 수 있고, 프리미티브는 적어도 하나의 버텍스들로 구성될 수 있다.
시스템 메모리(2000)는 데이터를 저장하도록 구성된다. 시스템 메모리(2000)는 센트럴 프로세싱 유닛(1005)에 의해 처리되는 데이터를 저장할 수 있다. 시스템 메모리(2000)는 센트럴 프로세싱 유닛(1005)의 동작 메모리로서 역할을 수행할 수 있다. 시스템 메모리(2000)는 DDR SDRAM(Double Data Rate Static DRAM), SDR SDRAM(Single Data Rate SDRAM)과 같은 하나 이상의 휘발성 메모리 장치 및/또는 EEPROM(Electrical Erasable Programmable ROM), 플래시 메모리(flash memory)과 같은 하나 이상의 비휘발성 메모리 장치를 포함할 수 있다.
그래픽 서브 시스템(3000)은 그래픽 프로세싱 유닛(3100; GPU), 그래픽 메모리(3200; graphic memory), 디스플레이 컨트롤러(3300; display controller), 그래픽 인터페이스(3400; graphic interface), 그래픽 메모리 컨트롤러(3500; graphic memory controller)를 포함한다.
그래픽 프로세싱 유닛(3100)은 앞서 설명한 본 발명의 실시예들에 따른 그래픽 프로세싱 유닛(100, 300, 400)과 실질적으로 동일하게 구성될 수 있다. 그래픽 프로세싱 유닛(3100)은 상기 메쉬를 구성하는 복수의 프리미티브들을 이용하여 타일 기반 렌더링을 수행할 수 있다. 그래픽 프로세싱 유닛(3100)은 센트럴 프로세싱 유닛(1005)으로부터 메쉬를 구성하는 버텍스들의 데이터를 입력받을 수 있다. 그래픽 프로세싱 유닛(3100)은 적어도 하나의 버텍스들로 구성되는 프리미티브를 조립하고, 조립된 프리미티브들을 이용하여 렌더링을 수행할 수 있다.
그래픽 메모리(3200)는 그래픽 프로세싱 유닛(3100)에 의해 처리되는 그래픽 데이터를 저장하거나, 그래픽 프로세싱 유닛(3100)에 제공되는 그래픽 데이터를 저장할 수 있다. 또는, 그래픽 메모리(3200)는 그래픽 프로세싱 유닛(3100)의 동작 메모리로서 역할을 수행할 수 있다.
디스플레이 컨트롤러(3300)는 렌더링된 이미지 프레임이 디스플레이될 수 있도록, 디스플레이 장치(4000)를 제어한다.
그래픽 인터페이스(3400)는 센트럴 프로세싱 유닛(1005)과 그래픽 프로세싱 유닛(3100) 사이를 인터페이싱하고, 그래픽 메모리 컨트롤러(3500)는 시스템 메모리(2000)와 그래픽 프로세싱 유닛(3100) 사이에서 메모리 액세스를 제공한다.
도 13에는 명확하게 도시하지 않았으나, 컴퓨팅 시스템(1000)은 버튼, 터치 스크린, 마이크와 같은 하나 이상의 입력 장치, 및/또는 스피커와 같은 하나 이상의 출력 장치를 더 포함할 수 있다. 또한, 컴퓨팅 시스템(1000)은 유선 또는 무선으로 외부 장치와 데이터를 교환하기 위한 인터페이스 장치를 더 포함할 수 있다. 인터페이스 장치는 예를 들어, 안테나 또는 유무선 트랜시버 등을 포함할 수 있다.
실시예에 따라, 컴퓨팅 시스템(1000)은 휴대폰(Mobile Phone), 스마트 폰(Smart Phone), 개인 정보 단말기(Personal Digital Assistant; PDA), 데스크톱(Desktop), 노트북(Notebook), 태블릿(Tablet) 등과 같은 임의의 컴퓨팅 시스템일 수 있다.
본 발명의 실시예들과 관련하여 설명된 방법 또는 알고리즘의 단계는, 프로세서에 의해 실행되는 하드웨어 모듈, 소프트웨어 모듈, 또는 그 2 개의 결합으로 직접 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터, 하드 디스크, 착탈형 디스크, CD-ROM, 또는 본 발명의 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터로 읽을 수 있는 기록 매체에 상주할 수도 있다. 예시적인 기록 매체는 프로세서에 연결되며, 그 프로세서는 기록 매체로부터 정보를 독출할 수 있고 기록 매체에 정보를 기입할 수 있다. 다른 방법으로, 기록 매체는 프로세서와 일체형일 수도 있다. 프로세서 및 기록 매체는 주문형 집적회로(ASIC) 내에 상주할 수도 있다. ASIC는 사용자 단말기 내에 상주할 수도 있다. 다른 방법으로, 프로세서 및 기록 매체는 사용자 단말기 내에 개별 구성 요소로서 상주할 수도 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 그래픽 프로세싱 유닛 110: 쉐이더 입력 컨트롤러
120: 쉐이더 코어 130: 캐시
131: 커뮤니케이션 매니저 132: NBR 모듈
133: 캐시 컨트롤러 모듈 134: 데이터 저장 영역
200: 외부 메모리

Claims (10)

  1. 제1 그래픽 데이터를 입력받고, 상기 제1 그래픽 데이터를 처리하여 제2 그래픽 데이터를 생성하고,
    생성된 상기 제2 그래픽 데이터를 상태 비트가 제1 상태로 셋팅된 제1 공유 메모리 라인에 쓰는 것을 포함하되,
    상기 제1 공유 메모리 라인은 n-웨이 세트 어소시에이티브 캐시(n-way set associative cache)(n은 2 이상의 자연수) 구조의 일부인 제1 메모리 라인 세트에 포함되고,
    상기 제1 메모리 라인 세트의 메모리 라인들 중 일부는 상기 제1 상태와 다른 제2 상태로 세팅되어 있고,
    상기 상태 비트는 메모리 라인에 저장된 데이터가 대체될 수 있는지 여부를 나타내는 그래픽 데이터 처리 방법.
  2. 제1 항에 있어서,
    상기 제1 그래픽 데이터를 입력받기 전에,
    상기 제1 공유 메모리 라인의 상태 비트를 상기 제1 상태로 세팅하는 것을 더 포함하는 그래픽 데이터 처리 방법.
  3. 제2 항에 있어서,
    상기 제1 공유 캐시 라인의 상태 비트를 상기 제1 상태로 세팅하는 것은
    로컬러블 공간(localable space)을 위해 메모리를 할당하고,
    할당된 상기 메모리의 메모리 주소 중 하나에 상기 제1 공유 메모리 라인의 인덱스(index) 및 태그(tag)를 대응시키는 것을 포함하는 그래픽 데이터 처리 방법.
  4. 제1 항에 있어서,
    상기 제1 공유 메모리 라인에 저장된 상기 제2 그래픽 데이터를 입력받고, 입력받은 상기 제2 그래픽 데이터를 처리하여 결과 그래픽 데이터를 생성하고,
    상기 결과 그래픽 데이터를 생성한 후, 상기 제1 공유 메모리 라인의 상태 비트를 상기 제2 상태로 리셋하는 것을 더 포함하는 그래픽 데이터 처리 방법.
  5. 제4 항에 있어서,
    상기 제1 공유 메모리 라인의 상태 비트를 상기 제2 상태로 리셋하는 것은
    로컬러블 공간을 위해 할당된 메모리를 할당 해제(deallocation)하고,
    할당 해제 후, 상기 제1 공유 메모리 라인의 상태 비트에 셋팅된 상기 제1 상태를 제거하는 것을 포함하는 그래픽 데이터 처리 방법.
  6. 제4 항에 있어서,
    상기 제1 공유 메모리 라인이 상기 제1 상태로 세팅되어 있을 때, 상기 제2 그래픽 데이터는 외부 메모리로 전송되지 않는 그래픽 데이터 처리 방법.
  7. 제1 항에 있어서,
    상기 제1 상태는 메모리 라인에 저장된 데이터를 캐시 정책에 의해 대체할 수 없음을 나타내고,
    상기 제2 상태는 메모리 라인에 저장된 데이터를 상기 캐시 정책에 의해 대체할 수 있음을 나타내는 그래픽 데이터 처리 방법.
  8. 입력 그래픽 데이터를 입력받고, 상기 입력 그래픽 데이터를 처리하여 제1 그래픽 데이터를 생성하는 제1 쉐이더 코어;
    상기 제1 그래픽 데이터를 입력받고, 상기 제1 그래픽 데이터를 처리하여 제2 그래픽 데이터를 생성하는 제2 쉐이더 코어; 및
    상기 제1 쉐이더 코어로부터 상기 제1 그래픽 데이터를 제공 받고, 상기 제2 쉐이더 코어에 상기 제1 그래픽 데이터를 제공하는 캐시를 포함하고,
    상기 캐시는
    상기 제1 그래픽 데이터가 저장되고 캐시 정책에 의해 저장된 데이터가 대체되지 않는 공유 메모리 라인과, 캐시 데이터가 저장되고 상기 캐시 정책에 의해 저장된 데이터가 대체될 수 있는 캐시 라인을 포함하는 데이터 저장 영역과,
    상기 공유 메모리 라인의 로컬 주소(local address)를 관리하고, 상기 캐시 라인의 로컬 주소는 관리하지 않는 커뮤니케이션 매니저(communication manager)와,
    상기 캐시 라인의 로컬 주소를 관리하는 캐시 컨트롤러 모듈(cache controller module)을 포함하는 그래픽 프로세서 유닛.
  9. 제8 항에 있어서,
    상기 캐시는 NRB(Not Replaceable Bit) 모듈을 더 포함하고,
    상기 NRB 모듈은 데이터 저장 영역에 저장된 데이터가 상기 캐시 정책에 의해 대체될 수 있는지 여부를 관리하는 그래픽 프로세서 유닛.
  10. 제9 항에 있어서,
    상기 NRB 모듈은 상기 공유 메모리 라인의 상태 비트를 제1 상태로 세팅하고, 상기 캐시 라인의 상태 비트를 제2 상태로 세팅하는 것을 포함하는 그래픽 프로세서 유닛.
KR1020140124417A 2014-09-18 2014-09-18 그래픽 프로세싱 유닛 및 이를 이용한 그래픽 데이터 처리 방법 KR102263326B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140124417A KR102263326B1 (ko) 2014-09-18 2014-09-18 그래픽 프로세싱 유닛 및 이를 이용한 그래픽 데이터 처리 방법
US14/835,006 US9799092B2 (en) 2014-09-18 2015-08-25 Graphic processing unit and method of processing graphic data by using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140124417A KR102263326B1 (ko) 2014-09-18 2014-09-18 그래픽 프로세싱 유닛 및 이를 이용한 그래픽 데이터 처리 방법

Publications (2)

Publication Number Publication Date
KR20160033479A true KR20160033479A (ko) 2016-03-28
KR102263326B1 KR102263326B1 (ko) 2021-06-09

Family

ID=55526187

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140124417A KR102263326B1 (ko) 2014-09-18 2014-09-18 그래픽 프로세싱 유닛 및 이를 이용한 그래픽 데이터 처리 방법

Country Status (2)

Country Link
US (1) US9799092B2 (ko)
KR (1) KR102263326B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180046680A (ko) * 2016-10-28 2018-05-09 삼성전자주식회사 그래픽스 데이터를 관리하는 방법 및 장치

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10460513B2 (en) * 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
KR20180038793A (ko) * 2016-10-07 2018-04-17 삼성전자주식회사 영상 데이터 처리 방법 및 장치
CN113383310A (zh) 2019-03-15 2021-09-10 英特尔公司 矩阵加速器架构内的脉动分解
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
CN113396401A (zh) 2019-03-15 2021-09-14 英特尔公司 多贴片存储器管理
US11861761B2 (en) 2019-11-15 2024-01-02 Intel Corporation Graphics processing unit processing and caching improvements
CN112023402B (zh) * 2020-09-02 2021-07-27 腾讯科技(深圳)有限公司 游戏数据处理方法、装置、设备以及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5584014A (en) * 1994-12-20 1996-12-10 Sun Microsystems, Inc. Apparatus and method to preserve data in a set associative memory device
US20090189909A1 (en) 2008-01-25 2009-07-30 Via Technologies, Inc. Graphics Processor having Unified Cache System

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7653785B2 (en) * 2005-06-22 2010-01-26 Lexmark International, Inc. Reconfigurable cache controller utilizing multiple ASIC SRAMS
US20070153015A1 (en) 2006-01-05 2007-07-05 Smedia Technology Corporation Graphics processing unit instruction sets using a reconfigurable cache
US8035650B2 (en) 2006-07-25 2011-10-11 Qualcomm Incorporated Tiled cache for multiple software programs
US8345053B2 (en) 2006-09-21 2013-01-01 Qualcomm Incorporated Graphics processors with parallel scheduling and execution of threads
US8041896B2 (en) * 2008-04-30 2011-10-18 Hewlett-Packard Development Company, L.P. Virtualization platform with dedicated cache access
US8581912B2 (en) 2008-06-27 2013-11-12 Microsoft Corporation Dynamic subroutine linkage optimizing shader performance
US9142057B2 (en) 2009-09-03 2015-09-22 Advanced Micro Devices, Inc. Processing unit with a plurality of shader engines
US8854381B2 (en) 2009-09-03 2014-10-07 Advanced Micro Devices, Inc. Processing unit that enables asynchronous task dispatch
US9442780B2 (en) 2011-07-19 2016-09-13 Qualcomm Incorporated Synchronization of shader operation
US9256915B2 (en) 2012-01-27 2016-02-09 Qualcomm Incorporated Graphics processing unit buffer management
KR20130123645A (ko) 2012-05-03 2013-11-13 삼성전자주식회사 그래픽 처리 장치를 위한 동적 로드 밸런싱 장치 및 방법
US10061616B2 (en) * 2012-05-30 2018-08-28 Red Hat Israel, Ltd. Host memory locking in virtualized systems with memory overcommit
US8982124B2 (en) 2012-09-29 2015-03-17 Intel Corporation Load balancing and merging of tessellation thread workloads
US9170955B2 (en) * 2012-11-27 2015-10-27 Intel Corporation Providing extended cache replacement state information

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5584014A (en) * 1994-12-20 1996-12-10 Sun Microsystems, Inc. Apparatus and method to preserve data in a set associative memory device
US20090189909A1 (en) 2008-01-25 2009-07-30 Via Technologies, Inc. Graphics Processor having Unified Cache System

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180046680A (ko) * 2016-10-28 2018-05-09 삼성전자주식회사 그래픽스 데이터를 관리하는 방법 및 장치

Also Published As

Publication number Publication date
US9799092B2 (en) 2017-10-24
US20160086303A1 (en) 2016-03-24
KR102263326B1 (ko) 2021-06-09

Similar Documents

Publication Publication Date Title
KR102263326B1 (ko) 그래픽 프로세싱 유닛 및 이를 이용한 그래픽 데이터 처리 방법
US10043235B2 (en) Method for caching GPU data and data processing system therefor
KR101813429B1 (ko) 공유 데이터 채널들을 가지는 셰이더 파이프라인
US9214007B2 (en) Graphics processor having unified cache system
JP5142299B2 (ja) 圧縮状態ビットキャッシュ及びバッキング記憶装置
EP2880539B1 (en) Cache data migration in a multicore processing system
CN103679785B (zh) 用于部分帧缓冲区更新的系统和方法
JP4493626B2 (ja) マルチプロセッサシステム、ライブラリモジュール、および描画処理方法
KR102048885B1 (ko) 그래픽 프로세싱 유닛, 이를 포함하는 그래픽 프로세싱 시스템, 및 이를 이용한 렌더링 방법
KR101563070B1 (ko) 그래픽 프로세싱을 위한 데이터 저장 어드레스 할당
CN103793893A (zh) 采用限缓冲区处理的世界和屏幕空间管线间基元重新排序
KR102554419B1 (ko) 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법 및 장치
US20080055321A1 (en) Parallel physics simulation and graphics processing
CN103810669A (zh) 在统一l2高速缓存中高速缓存经适应性定制大小的高速缓存像素块
EP4231242A1 (en) Graphics rendering method and related device thereof
CN117194055B (zh) Gpu显存申请及释放的方法、装置及存储介质
CN117170883B (zh) 渲染显示的方法、装置、设备及存储介质
CN117435521B (zh) 基于gpu渲染的纹理显存映射方法、装置及介质
US20220179784A1 (en) Techniques for supporting large frame buffer apertures with better system compatibility
KR20230092227A (ko) 멀티코어 프로세서 및 스토리지 장치

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