KR20120064093A - 복수의 셰이더 엔진들을 구비한 처리 유닛 - Google Patents

복수의 셰이더 엔진들을 구비한 처리 유닛

Info

Publication number
KR20120064093A
KR20120064093A KR1020127008021A KR20127008021A KR20120064093A KR 20120064093 A KR20120064093 A KR 20120064093A KR 1020127008021 A KR1020127008021 A KR 1020127008021A KR 20127008021 A KR20127008021 A KR 20127008021A KR 20120064093 A KR20120064093 A KR 20120064093A
Authority
KR
South Korea
Prior art keywords
shader engine
shader
engine
shaders
pixels
Prior art date
Application number
KR1020127008021A
Other languages
English (en)
Other versions
KR101661720B1 (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 KR20120064093A publication Critical patent/KR20120064093A/ko
Application granted granted Critical
Publication of KR101661720B1 publication Critical patent/KR101661720B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Image Processing (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Generation (AREA)
  • Control Of Indicators Other Than Cathode Ray Tubes (AREA)

Abstract

프로세서는 제1 셰이더 엔진 및 제2 셰이더 엔진을 포함한다. 제1 셰이더 엔진은 디스플레이 디바이스 상에 디스플레이될 픽셀들의 제1 서브세트를 위한 픽셀 셰이더들을 처리하도록 구성된다. 제2 셰이더 엔진은 디스플레이 디바이스 상에 디스플레이될 픽셀들의 제2 서브세트를 위한 픽셀 셰이더들을 처리하도록 구성된다. 제1 셰이더 엔진 및 제2 셰이더 엔진은 모두 또한 일반-컴퓨팅 셰이더들 및 논-픽셀 그래픽스 셰이더들을 처리하도록 구성된다. 프로세서는 또한 제1 및 제2 셰이더 사이에 연결되고 위치된 레벨-1(L1) 데이터 캐시를 포함할 수 있다.

Description

복수의 셰이더 엔진들을 구비한 처리 유닛{A PROCESSING UNIT WITH A PLURALITY OF SHADER ENGINES}
본 발명은 일반적으로 컴퓨터 시스템에서 수행되는 컴퓨팅 동작들(computing operation)에 관한 것이다. 보다 구체적으로, 본 발명은 컴퓨터 시스템에서 컴퓨팅 동작들을 수행하는 처리 유닛들(processing units)에 관한 것이다.
그래픽 처리 유닛(GPU)은 그래픽 처리 태스크들을 수행하도록 된 복합 집적 회로이다. GPU는, 예를 들어, 비디오 게임 애플리케이션과 같은 최종 사용자 애플리케이션에 의해 요구되는 그래픽 처리 태스크들을 실행한다. GPU는 개별(즉, 분리된) 디바이스들 및/또는 패키지들이거나 또 다른 프로세서(예를 들어, CPU)로서 동일한 디바이스 및/또는 패키지에 포함될 수 있다. 예를 들어, GPU들은, 예컨대 노스브리지 디바이스들과 같은 라우팅 또는 브리지 디바이스들에 종종 통합된다. 그러한 예에서, 최종 사용자 애플리케이션과 GPU 사이에는 몇개의 소프트웨어 계층들이 존재한다. 최종 사용자 애플리케이션은 애플리케이션-프로그래밍 인터페이스(API)와 통신한다. API는 최종 사용자 애플리케이션으로 하여금 그래픽 데이터 및 커맨드들을, GPU에 의존적인 포맷이 아닌, 표준화된 포맷으로 출력할 수 있게 한다. Redmond, Washington의 Microsoft Corporation에 의해 개발된 DirectX®, Khronos Group에 의해 발표된 OpenGL®을 포함하여 몇몇 타입의 API들이 상용화되어 있다. API는 드라이버와 통신한다. 드라이버는 API로부터 수신된 표준 코드를 GPU에 의해 이해되는 네이티브 포맷의 명령들로 변환한다. 드라이버는 일반적으로 GPU의 제조사에 의해 작성된다. GPU는 드라이버로부터의 명령들을 실행한다.
GPU들에 의해 수행되는 그래픽 처리 태스크들은 일반적으로 매트릭스 및 벡터 동작들과 같은 복합적인 수학적 계산들을 수반한다. 이러한 계산들을 효율적으로 수행하기 위하여, GPU는 일반적으로 셰이더 엔진이라 불리는 처리 소자들의 어레이를 포함한다. 처리 소자들의 어레이는 단일 명령, 복수-데이터(SIMD) 디바이스들로 조직된다. 셰이더 엔진은 셰이더 프로그램이라 불리는 명령들의 시퀀스를 실행한다. 셰이더 프로그램을 실행하는데 필요한 데이터는 셰이더 엔진의 서로 다른 처리 소자들에 병렬로(in parallel) 배포된다. 이 서로 다른 처리 소자들은 데이터의 서로 다른 조각들에 대해 동일한 동작을 수행할 수 있다. 이러한 식으로, GPU는 그래픽 처리 태스크들에 요구되는 복합적인 수학적 계산들을 일반적인 중앙 처리 유닛(CPU)보다 더 빠르게 수행할 수 있다.
과거에는, GPU들이 단일 그래픽 처리 태스크를 완료하기 위해 요구되는 서로 다른 셰이더 프로그램들을 실행하기 위하여 서로 다른 셰이더 엔진들을 포함하였다. 예를 들어, 단일 그래픽 처리 태스크는 적어도 두개의 서로 다른 셰이더 프로그램들, 즉, 삼각형의 버텍스들을 다루기 위한 버텍스 셰이더, 및 디스플레이 디바이스(예를 들어, 컴퓨터 스크린)에 디스플레이될 픽셀들을 결정하기 위한 픽셀 셰이더를 필요로 할 수 있다. 이 두 세트의 계산들을 수행하기 위하여, 일반적인 GPU는 두개의 서로 다른 셰이더 엔진들, 즉 (i) 버텍스 셰이더를 수행하기 위한 제1 셰이더 엔진; 및 (ii) 픽셀 셰이더를 수행하기 위한 제2 셰이더 엔진을 포함하였다.
최근, GPU들은 통합된 셰이더 엔진을 포함하도록 설계되었다. 통합된 셰이더 엔진은 몇개의 서로 다른 타입의 셰이더 프로그램들을 수행할 수 있는 처리 소자들의 어레이를 포함한다. 통합된 셰이더 엔진은, 각각의 셰이더가 파이프라인으로 서로 다른 셰이더 엔진들로 진행하기 보다는, 통합된 셰이더의 처리 소자들의 어레이를 통해 재순환(recirculating)하여, 예를 들어, 버텍스 셰이더, 기하 셰이더, 및 픽셀 셰이더를 실행할 수 있다. 전형적인 그래픽 처리 태스크들(예를 들어, 버텍스 셰이더, 기하 셰이더, 픽셀 셰이더 등)에 부가하여, 일반적인 컴퓨팅 동작들(예를 들어 ,수학적 알고리즘, 물리 시뮬레이션 등)을 수행하기 위하여, 보다 최근에는 통합된 셰이더 엔진이 또한 사용되었다.
경쟁력을 유지하고, 소비자의 요구, 그리고 최종 사용자 애플리케이션과 API의 요건들의 진보에 부응하기 위하여 GPU의 연산력(compute power)은 계속적으로 증가하여야 한다. GPU의 연산 능력을 증가시키는 한가지 방법은 셰이더 엔진의 어레이 내의 처리 소자들의 수를 증가시키는 것이다. 그러나, 증가된 개수의 처리 소자들에 워크로드들 및 데이터를 제공하기 위하여, 단지 GPU의 현재의 유효 성능을 유지하기 위해서도 처리 소자들을 피딩하는 입/출력 버스들이 대응하여 증가할 필요가 있을 것이다.
GPU의 연산력을 증가시키기 위한 잠재적인 해법은 셰이더 엔진에 포함된 SIMD의 폭을 증가시키는 것이다. 그러나, 이 해법은 SIMD 분기(divergence)의 문제점들을 가질 것이다. SIMD 분기는 임의의 SIMD 디바이스상에서 구동(run)되는 서로 다른 쓰레드들이 셰이더 프로그램의 브랜치 명령에서 서로 다른 방향들을 취할 때 발생한다. 예를 들어, 셰이더 프로그램은 표 1에 도시된것과 같은 브랜치 명령들을 가질 수 있다. 예를 들어, SIMD 디바이스 상에서 구동되는 제1 쓰레드가 브랜치 명령의 "then" 섹션(즉, operation 1)에 진입하고 그 SIMD 디바이스 상에서 구동되는 제2 쓰레드가 브랜치 명령의 "else" 섹션(즉, operation 2)에 진입하면, SIMD 분기가 발생할 것이다. 이 시나리오에서, 제2 쓰레드("else" 섹션에 진입한 쓰레드)는 제1 쓰레드("if" 스테이트먼트에 진입한 쓰레드)를 대기해야 할 것이다. SIMD 분기와 관련된 대기는 셰이더 프로그램에 실행을 위한 추가 시간을 소요하게 한다. SIMD 분기 가능성으로 인해, 단순히 SIMD들의 폭을 증가시키는 것은 GPU의 연산력을 증기시키기 위한 실행가능한 옵션이 아닐 수 있다.
if(condition){
operation 1;
}
else{
operation 2;
}
표 1
GPU의 연산력을 증기시키기 위한 또 다른 가능한 해법은 셰이더 엔진의 어레이 내의 처리 소자들(예를 들어, SIMD들)의 스택을 증가시키는 것이다. 그러나, 이 해법은 몇가지 이유에서 문제가 있다. 처음 문제로, 처리 소자들의 스택을 증가시키는 것은 결과적으로 신장된 칩(elongated chip)이 되게 할 수 있으며, 이는 잠재적으로 제조 문제들을 야기한다. 또한, 처리 소자들의 스택을 증가시키는 것은 스택에 워크로드를 제공하는 것과 관련된 입력 레이턴시(input latency)를 증가시키고, 스택으로부터 결과들을 라우팅하는 것과 관련된 출력 레이턴시(output latency)를 증가시킨다. 또한, 데이터(예를 들어, 상태 데이터)를 스택에 제공하기 위해 레이턴시가 증가할 것이다. 따라서, 단순히 처리 소자들의 스택의 깊이(depth)를 증가시키는 것은 GPU의 연산력을 증가시키기 위한 실행가능한 옵션이 아닐 수 있다.
전술한 내용을 고려하여, 연산력이 증가된 GPU 및 그것의 응용이 필요하다.
본 발명은 연산력이 증가된 프로세서 및 그것의 응용들을 제공함으로써 위의 요구를 충족시킨다. 본 발명의 실시예는 프로세서의 단일의 셰이더 엔진의 폭 또는 깊이를 증가시키기는 대신, 복수의 셰이더 엔진들을 지닌 프로세서를 제공한다.
예를 들어, 본 발명의 실시예에 따르면, 프로세서는 제1 셰이더 엔진 및 제2 셰이더 엔진을 포함한다. 제1 셰이더 엔진은 디스플레이 디바이스 상에 디스플레이될 픽셀들의 제1 서브세트를 위한 픽셀 셰이더들을 처리하도록 되어 있다. 제2 셰이더 엔진은 디스플레이 디바이스 상에 디스플레이될 픽셀들의 제2 서브세트를 위한 픽셀 셰이더들을 처리하도록 되어 있다. 제1 및 제2 셰이더 엔진들 모두는 또한 일반-컴퓨팅 셰이더들 및 논-픽셀 그래픽 셰이더들을 처리하도록 되어있다. 프로세서는 또한 제1 셰이더 엔진과 제2 셰이더 엔진 사이에 연결되고 위치된 레벨-1 (L1) 데이터 캐시를 포함할 수 있다.
또 다른 실시예에서, 프로세서는 소프트웨어 내에서 정의된다. 이 실시예에서, 컴퓨터-프로그램 물은, 컴퓨터 디바이스상에서 실행되면 프로세서를 정의하는 명령들을 포함하고 있는 컴퓨터-판독가능 저장 매체를 포함한다.
추가의 실시예에서, 프로세서는 컴퓨팅 시스템에 포함된다. 이 실시예에서, 컴퓨팅 시스템은 메모리, 제1 처리 유닛, 제2 처리 유닛, 및 상기 메모리, 상기 제1 처리 유닛, 그리고 상기 제2 처리 유닛에 연결된 버스를 포함한다. 예시적인 컴퓨팅 시스템은, 슈퍼 컴퓨터, 데스크탑 컴퓨터, 랩탑 컴퓨터, 비디오-게임 디바이스, 임베디드 디바이스, 휴대형 디바이스(예를 들어, 모바일 폰, 스마트폰, MP3 플레이어, 카메라 등), 또는 프로세서를 포함하거나 프로세서를 포함하도록 구성된 어떤 다른 디바이스를 포함하나, 이것들로 제한되는 것은 아니다.
또 다른 실시예는 프로세서에서 셰이더들을 처리하기 위한 방법을 제공한다. 이 방법에 따르면, 제1 셰이더 엔진은 디스플레이 디바이스 상에 디스플레이될 픽셀들의 제1 서브세트를 위한 픽셀 셰이더들을 처리하고, 제2 셰이더 엔진은 디스플레이 디바이스상에 디스플레이될 픽셀들의 제2 서브세트를 위한 픽셀 셰이더들을 처리한다. 제1 셰이더 엔진 및 제2 셰이더 엔진 둘 모두는 또한 일반-컴퓨팅 셰이더들 및 논-픽셀 그래픽 셰이더들을 처리한다.
본 발명의 추가의 피쳐들 및 이점들, 그리고 본 발명의 다양한 실시예들의 구조 및 동작은 첨부의 도면들을 참조로 하기에서 자세히 기술될 것이다. 본 발명은 여기에 기술된 구체적인 실시예들로 제한된 것이 아니다. 그러한 실시예들은 여기에서 단지 설명의 목적으로 제시된 것이다. 관련 기술 분야의 기술자들에게는 본 명세서의 내용에 근거한 추가의 실시예들이 자명할 것이다.
여기에 포함되어있으며 명세서의 일부를 이루는 첨부의 도면들은 본 발명을 예시하고, 그리고 상세한 설명과 함께 본 발명의 원리를 설명하고 관련 기술 분야의 기술자들이 본 발명을 다루고 사용할 수 있게 하도록 기능한다.
도 1은 본 발명의 실시예에 따른 예시적인 컴퓨팅 시스템의 블록도이다.
도 2는 본 발명의 실시예에 따른 복수의 분할-스크린, 통합 셰이더 엔진들을 구비한 예시적인 GPU의 블록도이다.
도 3은 도 2의 GPU에 포함된 예시적인 입력 로직의 블록도이다.
도 4a 및 4b는 도 2의 GPU의 분할-스크린, 통합 셰이더 엔진들의 블록도이다.
도 5는 도 2의 GPU의 셰이더 엔진들에 의해 공유되는 예시적인 레벨-1(L1) 데이터 캐시의 블록도이다.
도 6은 도 2의 GPU에 포함된 예시적인 오프-칩, 메모리 액세스 로직의 블록도이다.
본 발명의 피쳐들 및 이점들은 도면과 함께 고려될 때 하기에 설명된 상세한 설명으로부터 보다 명확해질 것이다. 도면들에서 유사한 참조문자들은 도면들 전체에 걸쳐 대응하는 구성요소들을 식별한다. 도면들에서, 유사한 참조숫자들은 일반적으로 동일한, 기능적으로 유사한, 그리고/또는 구조적으로 유사한 구성요소들을 표시한다. 구성요소가 처음으로 나타나는 도면은 대응하는 참조숫자의 최좌측의 번호(들)로 표시된다.
I. 개괄(Overview)
본 발명의 실시예들은 복수의 셰이더 엔진들을 구비한 처리 유닛과 그 응용에 관한 것이다. 하기의 상세한 설명에서, "일 실시예", "실시예", "예시적인 실시예" 등에 대한 참조는 기술된 실시예가 특정한 피쳐, 구조, 또는 특징을 포함할 수 있음을 나타내나, 모든 실시예가 반드시 그 특정한 피쳐, 구조, 또는 특징을 포함해야하는 것은 아니다. 또한, 그러한 표현이 반드시 동일한 실시예를 참조하는 것일 필요는 없다. 또한, 특정한 피쳐, 구조, 또는 특징이 임의의 실시예와 관련하여 기술될 때, 명시적으로 설명되든 아니든, 본 기술분야의 기술자의 지식의 범위내에서, 다른 실시예들과 관련되어 그러한 피쳐, 구조, 또는 특징에 영향을 줄 수 있는 것으로 고려된다.
실시예에 따라, 프로세서에 복수의 셰이더 엔진들을 제공함으로써 프로세서의 연산력이 증가된다. 단순히 단일 셰이더 엔진의 폭 및/또는 깊이를 증가시키는 대신에 복수의 셰이더 엔진들을 구비한 프로세서를 설계하는 것은 다수의 SIMD들에 걸쳐 추가적인 확장성(scalability)을 촉진한다. 실시예에서, 복수의 셰이더 엔진들은 상기 셰이더 엔진들에 데이터를 제공하는 것과 관련된 레이턴시를 줄이기 위하여 공통 캐시 시스템에 대한 액세스를 공유한다. 이 실시예에서, 복수의 셰이더 엔진들 및 캐시 시스템은 실질적으로 정사각형 바닥 평면(floor plan)을 지닌 프로세서를 제공하도록 구성될 수 있다. 예를 들어, 캐시 시스템(또는 적어도 그것의 부분들)은 중앙 장소(central location)에 위치되어, 셰이더 엔진들의 절반이 일 측에서 캐시 시스템에 액세스하고 그리고 셰이더 엔진의 다른 절반이 다른 측에서 캐시 시스템에 액세스할 수 있다. 프로세서의 셰이더 엔진들은 논-픽셀 셰이더들 및 픽셀 셰이더들을 서로 다르게 처리한다.
논-픽셀 셰이더들에 대해, 프로세서의 각각의 셰이더 엔진이 통합된다. 다른 말로하면, 각각의 셰이더 엔진은 일반-컴퓨팅 셰이더들(예를 들어, 수학적 알고리즘, 물리 시뮬레이션 등) 및 논-픽셀 그래픽 셰이더들(예를 들어, 버텍스 셰이더, 기하 셰이더, 테셀레이션 셰이더 등)을 처리하도록 구성된다. 실시예에서, 논-픽셀 셰이더들은 라운드 로빈 방식으로 복수의 셰이더 엔진들로 보내진다.
픽셀 셰이더들에 대해, 프로세서의 각각의 셰이더 엔진은 디스플레이 디바이스에 의해 디스플레이될 픽셀들의 특정 서브세트를 처리하도록 구성된다. 디스플레이 디바이스의 픽셀들은 셰이더 엔진들의 수에 대응하는 다수의 서브세트들로 분할된다. 예를 들어, 프로세서가 두개의 셰이더 엔진들을 포함하는 실시예에서, 디스플레이 디바이스의 픽셀들은 픽셀들의 제1 및 제2 서브세트(예를 들어, 체커보드 패턴의 짝수 픽셀들이 제1 서브세트를 포함하고 체커보드 패턴의 홀수 픽셀들이 제2 서브세트를 포함하는 채커보드 패턴)로 파티션된다. 이 실시예에서, 프로세서의 제1 셰이더 엔진은 제1 서브세트의 픽셀들을 처리하도록 되어있고, 프로세서의 제2 셰이더 엔진은 제2 서브세트의 픽셀들을 처리하도록 되어 있다. 프로세서는 또한 두개 이상(예를 들어, 4, 8 등)의 셰이더 엔진들을 포함할 수 있다. 이 경우에, 디스플레이 디바이스의 픽셀들은, 픽셀들의 각각의 서브세트가 프로세서의 특정 셰이더 엔진에 의해 처리되는, 두개 이상(예를 들어, 4, 8, 등)의 서브세트들로 파티션된다.
본 발명의 실시예에 따른 예시적인 프로세서에 대한 추가의 세부사항들이 하기에서 기술된다. 그러나, 이 세부사항들을 제공하기에 앞서서, 그러한 프로세서가 구현될 수 있는 예시적인 시스템을 기술하는 것이 도움이될 것이다.
II. 예시적인 시스템
도 1은 본 발명의 실시예에 따른 예시적인 컴퓨팅 시스템(100)의 블록도이다. 컴퓨팅 시스템(100)은 CPU(102), GPU(110)를 포함하며, 선택적으로 코프로세서(112)를 포함할 수 있다. 추가적으로, 컴퓨팅 시스템(100)은 CPU(102), GPU(11), 및 코프로세서(112)에 의해 액세스될 수 있는 시스템 메모리(104)를 포함한다. 실시예들에서, 컴퓨팅 시스템(100)은 슈퍼 컴퓨터, 데스크탑 컴퓨터, 랩탑 컴퓨터, 비디오-게임 디바이스 임베디드 디바이스, 휴대형 디바이스(예를 들어, 모바일 텔레폰, 스마트폰, MP3 플레이어, 카메라, GPS 디바이스 등), 또는 GPU를 포함하거나 GPU를 포함하도록 구성된 어떤 다른 디바이스를 포함할 수 있다. 도 1에 명시적으로 도시되지는 않았으나, 컴퓨팅 디바이스(100)는 또한 컴퓨팅 시스템(100)의 콘텐츠(예를 들어, 그래픽, 비디오 등)를 디스플레이하기 위한 디스플레이 디바이스(예를 들어, 캐쏘드-레이 튜브, 액정 디스플레이, 플라즈마 디스플레이 등)를 포함할 수 있다.
GPU(110) 및 코프로세서(112)는 버스(114)를 통해 CPU(102) 및 시스템 메모리와 통신한다. 버스(114)는 주변장치 인터페이스(PCI) 버스, 가속 그래픽 포트(AGP) 버스, PCI 익스프레스(PCIE) 버스 또는 현재 사용가능하거나 미래에 개발될 또 다른 타입의 버스를 포함하는, 컴퓨터 시스템에서 사용되는 임의의 타입의 버스일 수 있다.
GPU(110) 및 코프로세서(112)는, 특정한 특별 기능들을 CPU가 소프트웨어에서 그것들을 수행할 수 있는 것보다 일반적으로 더 빠르게 수행함으로써 CPU(102)를 보조한다. 예를 들어, GPU(110)는, 예를 들어, 그래픽 처리 태스크들(예를 들어, 버텍스 셰이더들, 기하 셰이더들, 픽셀 셰이더들 등을 포함함), 및 일반-컴퓨팅 태스크들(예를 들어, 수학적 알고리즘들, 물리 시뮬레이션들 등을 포함함)과 같은 데이터-병렬 연산 태스크들을 처리할 수 있다. 하기에 더 자세히 기술되는 바와 같이, GPU(110)는 본 발명의 실시예에 따라 복수의 셰이더 엔진들을 포함한다. 복수의 셰이더 엔진들은 단일 셰이더 엔진 GPU에 비해 연산력이 증가된 GPU(110)를 제공한다. 코프로세서(112)는, 관련 기술분야의 기술자들에게 명백한 바와 같이, 부동 소수점 코프로세서, GPU, 네트워킹 코프로세서, 및 다른 타입의 코프로세서들 및 프로세서들을 포함하나, 이것들로 제한되는 것은 아니다.
시스템 메모리(104)에 부가하여, 컴퓨팅 시스템(100)은 로컬 메모리(106) 및 로컬 메모리(108)를 더 포함한다. 로컬 메모리(106)는 GPU(110)에 연결되고 또한 버스(114)에 연결될 수 있다. 로컬 메모리(108)는 코프로세서(112)에 연결되고 또한 버스(114)에 연결될 수 있다. 특정 데이터(예를 들어, 빈번하게 사용되는 데이터)에 대해 상기 데이터가 시스템 메모리(104)에 저장되었을 경우에 가능했을 액세스 속도보다 더 빠른 액세스를 제공하기 위하여, 로컬 메모리들(106, 108)이 GPU(110) 및 코프로세서(112)에서 각각 사용가능하다.
실시예에서, GPU(110) 및 코프로세서(112)는 CPU(102)와 병렬로 명령들을 디코딩하고 그것들을 위한 명령들만을 실행한다. 또 다른 실시예에서, CPU(102)는 GPU(110) 및 코프로세서(112)를 위한 명령들을 각각의 커맨드 버퍼들로 송신한다.
III. 예시적인 프로세서
도 2는 본 발명의 실시예에 따라 복수의 셰이더 엔진들을 구비한 예시적인 프로세서의 블록도이다. 제한이 아닌 설명의 목적으로, 하기에서 GPU에 관한 예시적인 프로세서가 기술된다. 그러나, 관련 기술분야의 기술자는 본 발명의 실시예들이 복수의 셰이더 엔진들을 포함하는 다른 타입의 프로세서들(예를 들어, 비디오 처리 유닛, 중앙 처리 유닛, 코프로세서 등)에 적용될 수 있다는 것을 이해할 것이다. 이러한 다른 타입의 프로세서들은 본 발명의 정신 및 범주내에 있는 것으로 고려된다.
도 2의 실시예에 도시된 바와 같이, GPU(110)는 두개의 셰이더 엔진들-제1 셰이더 엔진(210A) 및 제2 셰이더 엔진(210B)-을 포함한다. 셰이더 엔진들(210)은 논-픽셀 셰이더들에 대해 통합되는바, 이는 각각의 셰이더 엔진(210)이 논-픽셀 그래픽 셰이더들(예를 들어, 버텍스 셰이더, 기하 셰이더, 테셀레이션 셰이더 등) 및 일반-컴퓨팅셰이더들(예를 들어, 수학적 알고리즘, 물리 시뮬레이션 등)을 실행하도록 구성된다는 것을 의미한다. 각각의 논-픽셀 셰이더는 파이프라인으로 서로 다른 셰이더 엔진들로 진행하기 보다는, 단순히 셰이더 엔진들(210)의 처리 소자들의 어레이를 통해 재순환(recalculating)한다.
논-픽셀 셰이더들과 다르게, 셰이더 엔진들(210)은 픽셀 셰이더들에 대해 통합되지 않는다. 픽셀 셰이더들에 대해, 각각의 셰이더 엔진(210)은 디스플레이 디바이스 상에 디스플레이될 픽셀들의 서브세트에 대해 셰이더 프로그램들을 실행하도록 구성된다. 예를 들어, 제1 셰이더 엔진(210A)은 디스플레이 디바이스 상에 디스플레이될 픽셀들의 제1 서브세트(예를 들어, 절반)를 위한 셰이더 프로그램들을 실행하고, 제2 셰이더 엔진(210B)은 디스플레이 디바이스 상에 디스플레이될 픽셀들의 제2 서브세트(예를 들어, 다른 절반)를 위한 셰이더 프로그램들을 실행하도록 구성될 수 있다.
도 2가 단지 두개의 셰이더 엔진들만을 구비한 GPU를 도시하나, 이는 단지 설명의 목적을 위한 것이며, 제한적인 것이 아님이 이해되어야 한다. 실시예에서, GPU(110)는 두개 이상(예를 들어, 4, 8, 16 등)의 셰이더 엔진들을 포함할 수 있다. 그러한 실시예에서, 셰이더 엔진들의 절반은 데이터 경로(예를 들어, 데이터 캐시(206))의 일 측에 위치되고, 셰이더 엔진들의 다른 절반은 데이터 경로(예를 들어, 데이터 캐시(206))의 다른측에 위치된다. 셰이더 엔진들의 절반이 데이터 경로의 일측에 위치되고 셰이더 엔진의 다른 절반이 데이터 경로의 다른 측에 위치되므로, GPU(110)는 실질적으로 정사각형 바닥 평면을 가지도록 구성될 수 있다.
셰이더 엔진들(210)에 부가하여, 도 2는 GPU(110)가 또한, 입력 로직(204), 캐시 시스템((레벨-1(L1)) 데이터 캐시(206), (레벨-2(L2)) 데이터 캐시(216))를 포함함), 그리고 출력 로직(라우팅 로직(212A-B), 크로스바(214), 오프-칩, 메모리-액세스 로직(218A-B))을 포함한다는 것을 도시한다. 이 구성요소들 각각은 하기에서 더 자세히 설명된다.
A. 입력 로직(204)
입력 로직(204)는 그래픽 처리 태스크들 및 일반-컴퓨팅 태스크들에 대한 사전-처리를 수행하고, 이 태스크들을 셰이더 엔진들(210)에 발행(issue)한다. 도 3은 입력(204)의 실시예를 도시한다. 도 3의 실시예에 도시된 바와 같이, 입력 로직(204)은 커맨드 프로세서(302), 버텍스 분석기(vertex analyzer)(310), 프리미티브 어셈블러(312), 제1 스캔 변환기(214A), 제2 스캔 변환기(314B), 제1 입력-제어 블록(316A), 그리고 제2 입력-제어 블록(316B)을 포함한다.
커맨드 프로세서(302)는 CPU로부터 그래픽-처리 및 일반-컴퓨팅 태스크들을 수신한다. 커맨드 프로세서(302)는 이 태스크들을 버텍스 분석기(310)에 전달한다.
버텍스 분석기(310)는 그래픽-처리 및/또는 일반-컴퓨팅 태스크와 관련된 모든 셰이더 프로그램들을 식별한다. 버텍스 분석기(310)는 이용가능할 입력 및 출력 데이터에 근거하여 각각의 셰이더 프로그램이 셰이더 엔진들(210)에 론치(launch)될 수 있을 때를 스케쥴링한다. 예를 들어, 특정 그래픽 처리 태스크는 제1 셰이더 프로그램 및 제2 셰이더 프로그램의 실행을 요구할 수 있으며, 여기서 상기 제2 셰이더 프로그램은 제1 셰이더 프로그램에 의해 발생된 데이터에 의존한다. 이 예에 따라, 버텍스 분석기(310)는 제1 및 제2 셰이더 프로그램들을 식별하고 제1 셰이더 프로그램이 제2 셰이더 프로그램 전에 실행되도록 스케쥴링하며, 따라서 제2 셰이더 프로그램이 론치될 때 제2 셰이더 프로그램을 위한 데이터가 이용가능할 것이다.
론치를 위해 셰이더 프로그램을 스케쥴링하는 것에 부가하여, 버텍스 분석기(310)는 또한 버텍스 버퍼에 대한 포인터들을 발생시키며 연결성 데이터(connectivity data)를 포함한다. 포인터들은 버텍스 버퍼로부터 버텍스들을 판독하기 위하여 사용된다. 버텍스가 이미 처리되었고 버텍스 버퍼에 저장되어 있다면, 버텍스 분석기(310)는 버텍스 버퍼로부터 버텍스를 판독할 수 있으며, 따라서 버택스는 단지 한번 처리된다. 연결성 데이터는 프리미티브(예를 들어, 삼각형)를 만들기 위하여 어떻게 버텍스들이 함께 피팅되는지를 규정하며, 따라서 프리미티브가 적절히 래스터화(rasterize)될 수 있다.
버텍스 분석기(310)는 프리미티브 어셈블러(312) 및 입력-제어 블록들(316)에 연결된다. 버텍스 분석기(310)로부터의 일부 셰이더 프로그램들은 프리미티브 어셈블러(312)로 송신되고, 다른것들은 제1 입력-제어 블록(316A) 또는 제2 입력-제어 블록(316B)으로 송신된다. 특히, 픽셀 셰이더들이 프리미티브 어셈블러(312)로 전달되는 한편, 일반-컴퓨팅 셰이더들 및 논-픽셀 그래픽 셰이더들이 입력-제어 블록들(316)으로 전달된다.
프리미티브 어셈블러(312)는 프리미티브들이 스캔 변환기들(314)로 송신되기 전에 프리미티브들을 사전-처리(예를 들어, 변환, 클립, 등)한다. 도 3의 실시예에 도시된 바와 같이, 프리미티브 어셈블러는 버텍스 분석기(310) 또는 라우팅 로직(212)으로부터 프리미티브들을 수신할 수 있다.
스캔 변환기들(314)은 서로 다른 셰이더 엔진들(210)에 의해 처리될 픽셀들을 결정하기 위하여 프리미티브들을 횡단(traverse)한다. 실시예에서, 제1 스캔 변환기(314A)는 픽셀들의 제1 서브세트(예를 들어, 체커보드 패턴의 짝수 픽셀들)를, 제1 셰이더 엔진(210A)에 의한 후속적인 처리를 위하여 제1 입력-제어 블록(316A)으로 송신하고, 제2 스캔 변환기(314B)는 픽셀들의 제2 서브세트(예를 들어, 체커보드 패턴의 홀수 픽셀들)를 제2 셰이더 엔진(210B)에 의한 후속적인 처리를 위하여 제2 입력-제어 블록(316B)으로 송신한다.
스캔 변환기들(314)로부터 픽셀들을 수신하는 것에 부가하여, 입력-제어 블록들(316)은 또한 위에서 언급된 바와 같이 버텍스 분석기(310)로부터 논-픽셀 셰이더들을 수신한다. 실시예에서, 버텍스 분석기(310)는 라운드-로빈 방식으로 논-픽셀 셰이더들(예를 들어, 일반-컴퓨팅 및 논-픽셀 그래픽 셰이더들)을 입력-제어 블록들(316)에 전달한다. 예를 들어, 버텍스 분석기(310)는, 제1 논-픽셀 셰이더, 제2 논-픽셀 셰이더, 제3 논-픽셀 셰이더, 제4-논 픽셀 셰이더, 등을 포함하는 논-픽셀 셰이더들의 스트림을 순차적으로 스케쥴링할 수 있다. 논-픽셀 셰이더들의 라운드-로빈 배포(distribution)에 따라, 버텍스 분석기(310)는 제1 논-픽셀 셰이더를 제1 입력-제어 블록(316A)에, 제2 논-픽셀 셰이더를 제2 입력-제어 블록(316B)에, 제3 논-픽셀 셰이더를 제1 입력-제어 블록(316A)에, 제4 논-픽셀 셰이더를 제2 입력-제어 블록(316B)에, 등으로 송신한다.
입력-제어 블록들(316)은 셰이더 엔진들(210)의 어디로 특정 워크로드를 송신할지를 결정한다. 위에서 간략하게 언급되고 하기에서 보다 자세히 기술되는 바와 같이, 각각의 셰이더 엔진(210)은 복수의 처리 소자들(예를 들어, SIMD들)을 포함한다. 입력-제어 블록(316)은 어떤 처리 소자들(예를 들어, SIMD들)이 새로운 워크로드들을 처리하는데 사용가능한지를 식별하고 새 워크로드들을 사용가능한 처리 소자들(예를 들어, SIMD들)로 송신한다. 특히, 제1 입력-제어 블록(316A)은 제1 셰이더 엔진(210A)의 처리 소자들(예를 들어, SIMD들)로 워크로드들을 송신하고, 제2 입력-제어 블록(316B)은 제2 셰이더 엔진(210B)의 처리 소자들(예를 들어, SIMD들)로 워크로드들을 송신한다.
B . 셰이더 엔진들(210)
도 4a 및 4b는 각각 제1 셰이더 엔진(210A)과 제2 셰이더 엔진(210B)의 예시적인 세부사항들을 보여준다. 도 4a 및 4b의 실시예에 도시된 바와 같이, 셰이더 엔진들(210)은 두 셰이더 엔진들 사이의 중앙 축에 대해 서로의 미러 이미지들로서 구성된다. 이러한 식으로, 셰이더 엔진들(210)은 하기에서 더 자세히 설명되는 바와 같이 단일 캐시 시스템에 대한 공통 액세스를 공유할 수 있다.
도 4a 및 4b를 참조하여, 각각의 셰이더 엔진(210)은 복수의 SIMD들(406), 복수의 로컬 데이터 공유들(LDS)(404), 및 시퀀서(402)를 포함한다. SIMD들(406)은 각각의 셰이더 엔진(210)의 데이터-병렬 처리 소자들이다. 실시예에서, 각각의 셰이더 엔진은, 각 행이 4-소자 산술-로직 유닛들(ALU들)의 4개의 그룹들로 구성된 SIMD들(406)의 10개의 행들을 포함한다. 각각의 LDS(404)는 SIMD들(406)의 행에 의해 사용되는 데이터를 저장한다. 시퀀서(402)는 어떤 워크로드들이 셰이더 엔진들(210) 내에서 서로 다른 SIMD들(406)에 의해 처리되고 있는지를 추적하여, 복수의 쓰레드들이 병렬로 실행될 수 있게 한다. 실시예에서, 예를 들어, 30,000개 보다 많은 쓰레드들이 어느때든 한번에(at any one time) 각각의 셰이더 엔진들(210)에서 실행될 수 있다. 이 쓰레드들을 실행하기 위하여 SIMD들(406)에 의해 요구되는 데이터는 캐시 시스템으로부터 검색될 수 있다.
C. 캐시 시스템
도 2를 참조하면, 캐시 시스템은 L1 데이터 캐시(206), L2 데이터 캐시(216), 및 오프-칩, 메모리 액세스 로직(218)를 포함한다. 셰이더 프로그램을 실행하기 위하여 셰이더 엔진들(210)이 데이터를 필요로할 때, 먼저 L1 데이터 캐시(206)에 대해 요청이 이루어진다. L1 데이터 캐시(206)에서 캐시 히트가 있을 때(즉, 요청된 데이터가 L1 데이터 캐시(206)에 있을 때), 데이터는 어떤 셰이더 엔진이 데이터를 요청했는지에 따라 제1 셰이더 엔진(210A) 또는 제2 셰이더 엔진(210B)으로 포워딩된다. L1 데이터 캐시(206)에서 캐시 미스가 있을 때(즉, 요청된 데이터가 L1 데이터 캐시(206)에 없음), L1 데이터 캐시(206)는 L2 데이터 캐시(216)로 요청을 포워딩한다. L2 데이터 캐시(216)는 L1 데이터 캐시(206)보다 큰 캐시 메모리 유닛이나, 그 큰 사이즈로 인하여, 요청된 데이터가 상기 L2 데이터 캐시(216)에 포함되어있는지 여부를 결정하는데 일반적으로 더 긴 시간이 걸린다. L2 데이터 캐시(216)에서 캐시 히트가 있다면, 요청된 데이터가 L1 데이터 캐시(206)에 저장되고 그 데이터를 요청한 셰이더 엔진(210)으로 포워딩된다. L2 데이터 캐시(216)에 캐시 미스가 있다면, 요청 데이터는 오프-칩, 메모리-액세스 로직(218)을 통해 오프-칩 메모리로부터 검색되어야만 한다.
도 5는 L1 데이터 캐시(206)의 실시예를 도시한다. 도 5의 실시예에 도시된 바와 같이, L1 데이터 캐시(206)는 각각의 셰이더 엔진(210)의 복수의 SIMD들(406)에 대응하는 로직 블록들의 복수의 행들을 포함한다. L1 데이터 캐시(206)의 로직 블록들의 각각의 행은 제1 텍스쳐-어드레스 유닛(502), 제1 텍스쳐-데이터 유닛(504A), 텍스쳐-캐시/L1 쌍(510), 제2 텍스쳐-데이터 유닛(504B), 및 제2 텍스쳐-어드레스 유닛(502B)을 포함한다.
텍스쳐-어드레스 유닛들(502)은 시퀀서들(402)로부터의 상태 데이터에 근거하여 텍스쳐 어드레스들을 생성한다. 이러한 식으로, 적합한 텍스쳐 데이터가 후속 프로세스들을 위해 로컬 메모리에 로딩될 수 있다. 제1 텍스쳐-어드레스 유닛(502A)은 제1 셰이더 엔진(210A)을 위한 텍스쳐 어드레스들을 생성하고, 제2 텍스쳐-어드레스 유닛(502B)은 제2 셰이더 엔진(210B)을 위한 텍스쳐 어드레스들을 생성한다.
텍스쳐-데이터 유닛들(504)은 데이터를 필터링하고 셰이더 엔진들(210B)로 리턴한다. 제1 텍스쳐-데이터 유닛(504A)은 제1 셰이더 엔진(210A)에 연결되고, 제2 텍스쳐-데이터 유닛(504B)은 제2 셰이더 엔진(210B)에 연결된다.
텍스쳐-캐시/L1 쌍(510)은 데이터의 레벨 1 캐싱을 수행한다. 위에서 설명된 바와 같이, 텍스쳐-캐시/L1 쌍(510)에 미싱이 있으면, L2 데이터 캐시(216)로 요청이 이루어진다. 텍스쳐-캐시/L1 쌍(510)은 제1 셰이더 엔진(210A)과 제2 셰이더 엔진(210B) 모두로부터의 데이터 요청들을 서비스한다. 이러한 식으로, 셰이더 엔진들(210)을 위한 데이터를 검색하는 것과 관련된 레이턴시가 감소될 수 있다.
D. 출력 로직
셰이더 프로그램을 실행한 후, 셰이더 엔진들(210)이 출력 로직으로 결과들을 전달한다. 도 2를 참조하여, 출력 로직은 라우팅 로직(212), 크로스바(214), 및 오프-칩, 메모리 액세스 로직(218)을 포함한다. 도 2에 도시된 바와 같이, 제1 셰이더 엔진(210A)은 제1 라우팅 로직(212A)에 결과들을 전달하고, 제2 셰이더 엔진(210B)은 제2 라우팅 로직(212B)에 결과들을 전달한다.
각각의 라우팅 로직(212)은 엑스포트 버퍼(export buffer)를 포함한다. 셰이더 엔진들(210D)의 SIMD들(406)을 사용중(busy)으로 유지하기 위하여, 워크로드들이 래스터화 순서(rasterization order)에서 벗어나 셰이더 엔진들에 발행될 수 있다. 그러나, 셰이더 엔진들(210)로부터의 결과들은 픽셀들이 디스플레이 디바이스 상에 제대로 디스플레이 되는 것을 보장하기 위하여 종국적으로는 래스터화 순서로 다시 결합되어야 한다. 각각의 라우팅 로직(212) 내에 엑스포트 버퍼를 포함하는 것은 셰이더 엔진들(210)이 래스터화 순서에서 벗어나 결과들을 내보낼 수 있게 한다.
각각의 라우팅 로직(212)은 또한 셰이더 엔진들(210)의 결과들을 적절하게 라우팅하기 위한 로직을 포함한다. 도 2에 도시된 바와 같이, 라우팅 로직(212)은 셰이더 엔진들(210)로부터의 결과들을 다음의 위치들, (i) 입력 로직(204)(여기서, 결과들은 제1 셰이더 엔진(210a) 또는 제2 셰이더 엔진(210b)에 의해 순차적으로 처리될 것이다), (ii) 제1 오프-칩, 메모리-엑세스 로직(218a)(여기서, 결과들은 제1 복수의 오프-칩 메모리 채널들 중 하나에 순차적으로 기록될 것이다), 또는 (iii) 제2 오프-칩, 메모리-액세스 로직(218b)(여기서, 결과들은 제2 복수의 오프-칩 메모리 채널들 중 하나에 순차적으로 기록될 것이다) 중 하나에 라우팅할 수 있다. 제1 라우팅 로직(212A)은 결과들을 제1 오프-칩, 메모리-액세스 로직(218A)에 바로 전달할 수 있으나, 결과들을 제2 오프-칩, 메모리-액세스 로직(218B)에 전달하기 위해서는 크로스바(214)를 사용한다. 마찬가지로, 제2 라우팅 로직(212B)은 결과들을 제2 오프-칩, 메모리-액세스 로직(218B)에 바로 전달할 수 있으나, 제1 오프-칩, 메모리-액세스 로직(218A)에 결과들을 전달하기 위해서는 크로스바(214)를 사용한다. 실시예에서, 크로스바(214)는 32 픽셀 크로스바를 포함하며, 여기서 각각의 픽셀은 128 비트로 구성된다.
도 6은 오프-칩, 메모리-액세스 로직(218)의 예시적인 세부사항들을 보여준다. 도 6의 실시예에서 도시된 바와 같이, 오프-칩, 메모리-액세스 로직(218)은 복수의 기록-결합 캐시들(602A-D), 복수의 깊이 버퍼들(604A-D), 복수의 컬러 버퍼들(606A-D), 제1 메모리 인터페이스(608A), 및 제2 메모리 인터페이스(608B)를 포함한다. 기록-결합 캐시(602)는 오프-칩 메모리에 기록될 데이터를 결합하여, 오프-칩 메모리에 대한 효율적인 액세스를 가능하게 한다. 깊이 버퍼들(604)은 z-테스팅을 위해 결과들을 버퍼링한다. 컬러 버퍼들(606)은 컬러 블렌딩을 위해 결과들을 버퍼링한다. 각각의 메모리 인터페이스(608)는 이중-채널(dual-channel) 메모리 제어기를 포함한다. 오프-칩, 메모리-액세스 로직(218)이 두개의 이중-채널 메모리 제어기들을 포함하므로, 각각의 오프-칩, 메모리-액세스 로직(218)은 4개의 서로 다른 오프-칩 메모리 채널들에 액세스를 제공한다.
IV. 예시적인 동작
동작시, GPU(110)는 CPU(102)로부터 그래픽-처리 및 일반-컴퓨팅 태스크들을 수신한다. GPU(110)의 입력 로직(204)은 논-픽셀 셰이더들의 실행과 관련된 워크로드들을 위에서 기술한 것과 같이 교대 방식(예컨대, 라운드-로빈 방식)으로 제1 셰이더 엔진(210A) 또는 제2 셰이더 엔진(210B)에 송신한다. 픽셀 셰이더들에 대해, 입력 로직(204)은 픽셀들의 제1 서브세트(예를 들어, 체커보드 패턴의 짝수 픽셀들)를 제1 셰이더 엔진(210A)으로 송신하고 픽셀들의 제2 서브세트(예를 들어, 체커보드 패턴의 홀수 픽셀들)을 제2 셰이더 엔진(210B)으로 송신한다.
실행될 워크로드들이 발행된 후, 셰이더 엔진들(210)은 이 워크로드들을 실행하는데 필요한 데이터를 검색한다. 위에서 기술한 바와 같이, 데이터는 캐시 시스템(L1 데이터 캐시(206), L2 데이터 캐시(216), 그리고 오프-칩, 메모리-액세스 로직(218)을 포함함)로부터 검색된다.
셰이더 엔진들(210)로부터의 결과들은 그후 라우팅 로직(212)에 의해 적절한 장소로 라우팅된다. 중요한 것은, 크로스바(214)가 두 셰이더 엔진들(210) 모두로부터의 결과들을 제1 오프-칩, 메모리 액세스 로직(218A), 또는 제2 오프-칩, 메모리 액세스 로직을 통해 임의의 오프-칩 메모리 채널에 기록될 수 있게 한다는 것이다.
V. 예시적인 소프트웨어 구현
GPU(110)의 하드웨어 구현에 부가하여, 그러한 GPU들은 또한, 예를 들어, 소프트웨어(예를 들어, 컴퓨터-판독가능 프로그램 코드)를 저장하도록 된 컴퓨터-판독가능 매체에 수록된 소프트웨어에서 실시될 수 있다. 프로그램 코드는 다음의 실시예들, (i) 여기에 개시된 시스템들 및 기법들의 기능들(예를 들어, GPU(110)에서의 그래픽 처리 및 일반-컴퓨팅 태스크), (ii) 여기에 개시된 시스템들 및 기법들의 제작(예를 들어, GPU(110)의 제작), 또는 (iii) 여기에 개시되 시스템들 및 기법들의 기능들과 제작의 조합을 포함하여, 본 발명의 실시예들을 가능하게 해준다.
예를 들어, 이는 (C 또는 C++과 같은) 일반-프로그래밍 언어들, Verilog HDL, VHDL, 알테라 HDL(AHDL) 등을 포함하는 하드웨어-기술 언어들(HDL), 또는 또는 다른 사용가능한 프로그래밍 및/또는 스케메틱 캡쳐 툴들(예를 들어, 회로-캡쳐 툴들)의 사용을 통해 달성될 수 있다. 프로그램 코드는 반도체, 자기 디스크, 또는 광학 디스크(예컨대, CD-ROM, DVD-ROM)를 포함하는 임의의 알려진 컴퓨터-판독가능 매체에 배치될 수 있다. 따라서, 코드는 인터넷(Internet and internets)을 포함하는 통신 네트워크들을 통해 전송될 수 있다. 위에서 기술된 시스템들 및 기법들에 의해 제공되는 달성되는 기능들 및/또는 제공되는 구조는 프로그램 코드에서 구현되는 코어(예컨대, GPU 코어)로 나타낼 수 있으며, 집적 회로의 제조의 일부로서 하드웨어로 변환될 수 있음이 이해될 것이다.
VI. 결론
개요 및 요약 부분이 아닌 상세한 설명 부분은 청구항들을 해석하는데 사용되도록 의도된 것임이 이해되어야 한다. 개요 및 요약 부분들은 발명자(들)에 의해 고려되는 본 발명의 모든 예시적 실시예들이 아닌 단지 한 두가지의 실시예들을 제시하는 것으로서, 본 발명 및 첨부된 청구항들을 어떠한 식으로든 제한하려 의도된 것이 아니다.

Claims (30)

  1. 프로세서로서,
    디스플레이 디바이스 상에 디스플레이될 픽셀들의 제1 서브세트를 위한 픽셀 셰이더들을 처리하도록 된 제1 셰이더 엔진과; 그리고
    상기 디스플레이 디바이스 상에 디스플레이될 픽셀들의 제2 서브세트를 위한 픽셀 셰이더들을 처리하도록 된 제2 셰이더 엔진을 포함하며,
    상기 제1 셰이더 엔진과 상기 제2 셰이더 엔진 각각은 또한 일반-컴퓨팅 셰이더들(general-compute shaders) 및 논-픽셀 그래픽 셰이더들(non-pixel graphics shaders)을 처리하도록 된 것을 특징으로 하는 프로세서.
  2. 제1 항에 있어서,
    상기 제1 셰이더 엔진과 상기 제2 셰이더 엔진 사이에 위치되어 상기 제1 셰이더 엔진과 상기 제2 셰이더 엔진에 연결된 레벨-1(L1) 데이터 캐시를 더 포함하는 것을 특징으로 하는 프로세서.
  3. 제2 항에 있어서, 상기 제1 셰이더 엔진, 상기 제2 셰이더 엔진, 그리고 상기 L1 데이터 캐시는 실질적으로 정사각형 바닥 평면(floor plan)을 지닌 프로세서를 제공하도록 배열(arrange)된 것을 특징으로 하는 프로세서.
  4. 제2 항에 있어서, 상기 L1 데이터 캐시는 레벨-2(L2) 데이터 캐시에 연결된 것을 특징으로 하는 프로세서.
  5. 제2 항에 있어서,
    상기 디스플레이 디바이스에 디스플레이될 픽셀들의 제3 서브세트를 위한 픽셀 셰이더들을 처리하도록 된 제3 셰이더 엔진과; 그리고
    상기 디스플레이 디바이스에 디스플레이될 픽셀들의 제4 서브세트를 위한 픽셀 셰이더들을 처리하도록 된 제4 셰이더 엔진을 더 포함하며;
    상기 L1 데이터 캐시는 상기 제3 셰이더 엔진과 상기 제4 셰이더 엔진 사이에 위치되어 상기 제3 셰이더 엔진과 상기 제4 셰이더 엔진에 연결되며, 그리고
    상기 제3 셰이더 엔진과 상기 제4 셰이더 엔진 각각은 또한 일반-컴퓨팅 셰이더들 및 논-픽셀 그래픽 셰이더들을 처리하도록 된 것을 특징으로 하는 프로세서.
  6. 제1 항에 있어서,
    상기 제1 셰이더 엔진 및 상기 제2 셰이더 엔진에 발행될 워크로드들을 준비하도록 된 입력 로직을 더 포함하는 것을 특징으로 하는 프로세서.
  7. 제6 항에 있어서, 상기 입력 로직은,
    상기 워크로드들을 스캔하여 상기 제1 셰이더 엔진에 의해 처리될 픽셀들의 제1 서브세트를 식별하도록 된 제1 스캔 변환기와; 그리고
    상기 워크로드들을 스캔하여 상기 제2 셰이더 엔진에 의해 처리될 픽셀들의 제2 서브세트를 식별하도록 된 제2 스캔 변환기를 포함하는 것을 특징으로 하는 프로세서.
  8. 제1 항에 있어서,
    상기 제1 셰이더 엔진 및 제1 복수의 오프-칩 메모리 채널들에 연결된 제1 출력 로직과, 상기 제1 출력 로직은 상기 제1 셰이더 엔진으로부터의 결과 데이터가 상기 제1 복수의 오프-칩 메모리 채널들 중의 임의의 오프-칩 메모리 채널에 제공될 수 있게 하고, 그리고
    상기 제2 셰이더 엔진 및 제2 복수의 오프-칩 메모리 채널들에 연결된 제2 출력 로직을 포함하고, 상기 제2 출력 로직은 상기 제2 셰이더 엔진으로부터의 결과 데이터가 상기 제2 복수의 오프-칩 메모리 채널들 중의 임의의 오프-칩 메모리 채널에 제공될 수 있게 하는 것을 특징으로 하는 프로세서.
  9. 제8 항에 있어서,
    (i) 상기 제1 셰이더 엔진으로부터 상기 제2 복수의 오프-칩 메모리 채널들로의 제1 데이터 경로와, 그리고
    (ii) 상기 제2 셰이더 엔진으로부터 상기 제1 복수의 오프-칩 메모리 채널들로의 제2 데이터 경로를 제공하는 크로스바(crossbar)를 더 포함하는 것을 특징으로 하는 프로세서.
  10. 컴퓨터 디바이스 상에서 실행시 프로세서를 정의(defining)하는 명령들이 내포된 컴퓨터-판독가능 저장 매체를 포함하는 컴퓨터-프로그램 물(computer-program product)로서, 상기 프로세서는,
    디스플레이 디바이스 상에 디스플레이될 픽셀들의 제1 서브세트를 위한 픽셀 셰이더들을 처리하도록 된 제1 셰이더 엔진과; 그리고
    상기 디스플레이 디바이스 상에 디스플레이될 픽셀들의 제2 서브세트를 위한 픽셀 셰이더들을 처리하도록 된 제2 셰이더 엔진을 포함하고,
    상기 제1 셰이더 엔진 및 상기 제2 셰이더 엔진 각각은 또한 일반-컴퓨팅 셰이더들 및 논-픽셀 그래픽 셰이더들을 처리하도록 된 것을 특징으로 하는 컴퓨터-프로그램 물.
  11. 제10 항에 있어서, 상기 프로세서는,
    상기 제1 셰이더 엔진과 상기 제2 셰이더 엔진 사이에 위치되어 상기 제1 셰이더 엔진과 상기 제2 셰이더 엔진에 연결된 레벨-1(L1) 데이터 캐시를 더 포함하는 것을 특징으로 하는 컴퓨터-프로그램 물.
  12. 제11 항에 있어서, 상기 제1 셰이더 엔진, 상기 제2 셰이더 엔진, 그리고 상기 L1 데이터 캐시는 실질적으로 정사각형 바닥 평면(floor plan)을 지닌 프로세서를 제공하도록 배열된 것을 특징으로 하는 컴퓨터-프로그램 물.
  13. 제11 항에 있어서, 상기 L1 데이터 캐시는 레벨-2(L2) 데이터 캐시에 연결된 것을 특징으로 하는 컴퓨터-프로그램 물.
  14. 제11 항에 있어서, 상기 프로세서는,
    상기 디스플레이 디바이스 상에 디스플레이될 픽셀들의 제3 서브세트를 위한 픽셀 셰이더들을 처리하도록 된 제3 셰이더 엔진과; 그리고
    상기 디스플레이 디바이스 상에 디스플레이될 픽셀들의 제4 서브세트를 위한 픽셀 셰이더들을 처리하도록 된 제4 셰이더 엔진을 더 포함하며;
    여기서 상기 L1 데이터 캐시는 상기 제3 셰이더 엔진과 상기 제4 셰이더 엔진 사이에 위치되어 상기 제3 셰이더 엔진과 상기 제4 셰이더 엔진에 연결되며, 그리고
    상기 제3 셰이더 엔진과 상기 제4 셰이더 엔진 각각은 또한 일반-컴퓨팅 셰이더들 및 논-픽셀 그래픽 셰이더들을 처리하도록 된 것을 특징으로 하는 컴퓨터-프로그램 물.
  15. 제10 항에 있어서, 상기 프로세서는,
    상기 제1 및 제2 셰이더 엔진에 발행될 워크로드들을 준비하도록 된 입력 로직을 더 포함하는 것을 특징으로 하는 컴퓨터-프로그램 물.
  16. 제15 항에 있어서, 상기 입력 로직은,
    상기 워크로드들을 스캔하여 상기 제1 셰이더 엔진에 의해 처리될 픽셀들의 제1 서브세트를 식별하도록 된 제1 스캔 변환기와; 그리고
    상기 워크로드들을 스캔하여 상기 제2 셰이더 엔진에 의해 처리될 픽셀들의 제2 서브세트를 식별하도록 된 제2 스캔 변환기를 포함하는 것을 특징으로 하는 컴퓨터-프로그램 물.
  17. 제10 항에 있어서, 상기 프로세서는,
    상기 제1 셰이더 엔진 및 제1 복수의 오프칩 메모리 채널들에 연결된 제1 출력 로직과, 상기 제1 출력 로직은 상기 제1 셰이더 엔진으로부터의 결과 데이터가 상기 제1 복수의 오프-칩 메모리 채널들 중의 임의의 오프-칩 메모리 채널에 제공될 수 있게하고, 그리고
    상기 제2 셰이더 엔진 및 제2 복수의 오프-칩 메모리 채널들에 연결된 제2 출력 로직을 더 포함하고, 상기 제2 출력 로직은 상기 제2 셰이더 엔진으로부터의 결과 데이터가 상기 제2 복수의 오프-칩 메모리 채널들 중의 임의의 오프-칩 메모리 채널에 제공될 수 있게 하는 것을 특징으로 하는 컴퓨터-프로그램 물.
  18. 제17 항에 있어서, 상기 프로세서는,
    (i) 상기 제1 셰이더 엔진으로부터 상기 제2 복수의 오프-칩 메모리 채널들로의 제1 데이터 경로와, 그리고
    (ii) 상기 제2 셰이더 엔진으로부터 상기 제1 복수의 오프-칩 메모리 채널들로의 제2 데이터 경로를 제공하는 크로스바를 더 포함하는 것을 특징으로 하는 컴퓨터-프로그램 물.
  19. 처리 유닛에서 셰이더들을 처리하는 방법으로서,
    제1 셰이더 엔진에서, 디스플레이 디바이스 상에 디스플레이될 픽셀들의 제1 서브세트를 위한 픽셀 셰이더들을 처리하는 단계와;
    제2 셰이더 엔진에서, 상기 디스플레이 디바이스 상에 디스플레이될 픽셀들의 제2 서브세트를 위한 픽셀 셰이더들을 처리하는 단계와; 그리고
    상기 제1 및 제2 셰이더 엔진들 모두에서, 일반-컴퓨팅 셰이더들 및 논-픽셀 그래픽 셰이더들을 처리하는 단계를 포함하는 것을 특징으로 하는 처리 유닛에서 셰이더들을 처리하는 방법.
  20. 제19 항에 있어서,
    제1 스캔 변환기를 사용하여, 상기 제1 셰이더 엔진에 의해 처리될 픽셀들의 제1 서브세트를 식별하는 단계와; 그리고
    제2 스캔 변환기를 사용하여, 상기 제2 셰이더 엔진에 의해 처리될 픽셀들의 제2 서브세트를 식별하는 단계를 더 포함하는 것을 특징으로 하는 처리 유닛에서 셰이더들을 처리하는 방법.
  21. 제19 항에 있어서,
    제3 셰이더 엔진에서, 상기 디스플레이 디바이스 상에 디스플레이될 픽셀들의 제3 서브세트를 위한 픽셀 셰이더들을 처리하는 단계와; 그리고
    제4 셰이더 엔진에서, 상기 디스플레이 디바이스 상에 디스플레이될 픽셀들의 제4 서브세트를 위한 픽셀 셰이더들을 처리하는 단계를 더 포함하는 것을 특징으로 하는 처리 유닛에서 셰이더들을 처리하는 방법.
  22. 컴퓨팅 시스템으로서,
    메모리와;
    제1 처리 유닛과;
    제2 처리 유닛과; 그리고
    상기 메모리, 상기 제1 처리 유닛, 그리고 상기 제2 처리 유닛에 연결된 버스를 포함하며, 여기서 상기 제2 처리 유닛은,
    디스플레이 디바이스 상에 디스플레이될 픽셀들의 제1 서브세트를 위한 픽셀 셰이더들을 처리하도록 된 제1 셰이더 엔진과; 그리고
    상기 디스플레이 디바이스 상에 디스플레이될 픽셀들의 제2 서브세트를 위한 픽셀 셰이더들을 처리하도록 된 제2 셰이더 엔진을 포함하며;
    여기서, 상기 제1 및 제2 셰이더 엔진 각각은 또한 일반-컴퓨팅 셰이더들 및 논-픽셀 그래픽 셰이더들을 처리하도록 된 것을 특징으로 하는 컴퓨팅 시스템.
  23. 제22 항에 있어서, 상기 제2 처리 유닛은,
    상기 제1 셰이더 엔진과 상기 제2 셰이더 엔진 사이에 위치되어 상기 제1 셰이더 엔진과 상기 제2 셰이더 엔진 사이에 연결된 레벨-1(L1) 데이터 캐시를 더 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  24. 제23 항에 있어서, 상기 제1 셰이더 엔진, 상기 제2 셰이더 엔진, 그리고 상기 L1 데이터 캐시는 실질적으로 정사각형 바닥 평면을 지닌 제2 처리 유닛을 제공하도록 배열된 것을 특징으로 하는 컴퓨팅 시스템.
  25. 제23 항에 있어서, 상기 L1 데이터 캐시는 레벨-2(L2) 데이터 캐시에 연결된 것을 특징으로 하는 컴퓨팅 시스템.
  26. 제23 항에 있어서, 상기 제2 처리 유닛은,
    상기 디스플레이 디바이스 상에 디스플레이될 픽셀들의 제3 서브세트를 위한 픽셀 셰이더들을 처리하도록 된 제3 셰이더 엔진과; 그리고
    상기 디스플레이 디바이스 상에 디스플레이될 픽셀들의 제4 서브세트를 위한 픽셀 셰이더들을 처리하도록 된 제4 셰이더 엔진을 포함하며,
    상기 L1 데이터 캐시는 상기 제3 셰이더 엔진과 상기 제4 셰이더 엔진 사이에 위치되어 상기 제3 셰이더 엔진과 상기 제4 셰이더 엔진에 연결되며, 그리고
    상기 제3 셰이더 엔진 및 상기 제4 셰이더 엔진 각각은 또한 일반-컴퓨팅 셰이더들 및 논-픽셀 그래픽 셰이더들을 처리하도록 된 것을 특징으로 하는 컴퓨팅 시스템.
  27. 제22 항에 있어서, 상기 제2 처리 유닛은,
    상기 제1 셰이더 엔진 및 상기 제2 셰이더 엔진에 발행될 워크로드들을 준비하도록 된 입력 로직을 더 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  28. 제27 항에 있어서, 상기 입력 로직은,
    상기 워크로드들을 스캔하고 상기 제1 셰이더 엔진에 의해 처리될 픽셀들의 제1 서브세트를 식별하도록 된 제1 스캔 변환기와; 그리고
    상기 워크로드들을 스캔하고 상기 제2 셰이더 엔진에 의해 처리될 픽셀들의 제2 서브세트를 식별하도록 된 제2 스캔 변환기를 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
  29. 제22 항에 있어서, 상기 제2 처리 유닛은,
    상기 제1 셰이더 엔진 및 제1 복수의 오프-칩 메모리 채널들에 연결된 제1 출력 로직과, 상기 제1 출력 로직은 상기 제1 셰이더 엔진으로부터의 결과 데이터가 상기 제1 복수의 오프-칩 메모리 채널들 중의 임의의 오프-칩 메모리 채널에 제공될 수 있게 하고; 그리고
    상기 제2 셰이더 엔진 및 제2 복수의 오프-칩 메모리 채널들에 연결된 제2 출력 로직을 포함하며, 상기 2 출력 로직은 상기 제2 셰이더 엔진으로부터의 결과 데이터가 상기 제2 복수의 오프-칩 메모리 채널들 중의 임의의 오프-칩 메모리 채널에 제공될 수 있게 하는 것을 특직으로 하는 컴퓨팅 시스템.
  30. 제29 항에 있어서, 상기 제2 처리 유닛은 또한,
    (i) 상기 제1 셰이더 엔진으로부터 상기 제2 복수의 오프-칩 메모리 채널들로의 제1 데이터 경로와, 그리고
    (ii) 상기 제2 셰이더 엔진으로부터 상기 제1 복수의 오프-칩 메모리를 제공하는 크로스바를 더 포함하는 것을 특징으로 하는 컴퓨팅 시스템.
KR1020127008021A 2009-09-03 2010-09-03 복수의 셰이더 엔진들을 구비한 처리 유닛 KR101661720B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US23971809P 2009-09-03 2009-09-03
US61/239,718 2009-09-03
US12/691,541 US9142057B2 (en) 2009-09-03 2010-01-21 Processing unit with a plurality of shader engines
US12/691,541 2010-01-21
PCT/US2010/047779 WO2011028981A1 (en) 2009-09-03 2010-09-03 A processing unit with a plurality of shader engines

Publications (2)

Publication Number Publication Date
KR20120064093A true KR20120064093A (ko) 2012-06-18
KR101661720B1 KR101661720B1 (ko) 2016-09-30

Family

ID=43624194

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127008021A KR101661720B1 (ko) 2009-09-03 2010-09-03 복수의 셰이더 엔진들을 구비한 처리 유닛

Country Status (7)

Country Link
US (1) US9142057B2 (ko)
EP (1) EP2473976B1 (ko)
JP (1) JP5711236B2 (ko)
KR (1) KR101661720B1 (ko)
CN (1) CN102598061B (ko)
IN (1) IN2012DN02658A (ko)
WO (1) WO2011028981A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021173959A1 (en) * 2020-02-28 2021-09-02 Advanced Micro Devices, Inc. Dynamic transparent reconfiguration of a multi-tenant graphics processing unit
WO2022211926A1 (en) * 2021-03-30 2022-10-06 Advanced Micro Devices, Inc. Wave throttling based on a parameter buffer
US11508124B2 (en) 2020-12-15 2022-11-22 Advanced Micro Devices, Inc. Throttling hull shaders based on tessellation factors in a graphics pipeline
US11776085B2 (en) 2020-12-16 2023-10-03 Advanced Micro Devices, Inc. Throttling shaders based on resource usage in a graphics pipeline

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
US9092267B2 (en) * 2011-06-20 2015-07-28 Qualcomm Incorporated Memory sharing in graphics processing unit
US9727385B2 (en) 2011-07-18 2017-08-08 Apple Inc. Graphical processing unit (GPU) implementing a plurality of virtual GPUs
US9442780B2 (en) * 2011-07-19 2016-09-13 Qualcomm Incorporated Synchronization of shader operation
US8842122B2 (en) 2011-12-15 2014-09-23 Qualcomm Incorporated Graphics processing unit with command processor
US9530245B2 (en) 2011-12-29 2016-12-27 Qualcomm Incorporated Packing multiple shader programs onto a graphics processor
US9529575B2 (en) 2012-02-16 2016-12-27 Microsoft Technology Licensing, Llc Rasterization of compute shaders
US9019289B2 (en) 2012-03-07 2015-04-28 Qualcomm Incorporated Execution of graphics and non-graphics applications on a graphics processing unit
US9412197B2 (en) 2012-04-04 2016-08-09 Qualcomm Incorporated Patched shading in graphics processing
US20130311753A1 (en) * 2012-05-19 2013-11-21 Venu Kandadai Method and device (universal multifunction accelerator) for accelerating computations by parallel computations of middle stratum operations
US10176621B2 (en) * 2013-06-10 2019-01-08 Sony Interactive Entertainment Inc. Using compute shaders as front end for vertex shaders
US9536342B2 (en) * 2014-08-15 2017-01-03 Intel Corporation Automatic partitioning techniques for multi-phase pixel shading
US9665975B2 (en) * 2014-08-22 2017-05-30 Qualcomm Incorporated Shader program execution techniques for use in graphics processing
KR102263326B1 (ko) 2014-09-18 2021-06-09 삼성전자주식회사 그래픽 프로세싱 유닛 및 이를 이용한 그래픽 데이터 처리 방법
US20160292812A1 (en) * 2015-03-31 2016-10-06 Qualcomm Incorporated Hybrid 2d/3d graphics rendering
US10403025B2 (en) 2015-06-04 2019-09-03 Samsung Electronics Co., Ltd. Automated graphics and compute tile interleave
US10089775B2 (en) 2015-06-04 2018-10-02 Samsung Electronics Co., Ltd. Automated graphics and compute tile interleave
EP3101650A1 (en) * 2015-06-04 2016-12-07 Samsung Electronics Co., Ltd. Method and apparatus for performing interleaving
US10460513B2 (en) * 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
US10346943B2 (en) * 2017-01-03 2019-07-09 Microsoft Technology Licensing, Llc Prefetching for a graphics shader
US10467796B2 (en) * 2017-04-17 2019-11-05 Intel Corporation Graphics system with additional context
CN107464208B (zh) * 2017-07-24 2019-07-09 浙江大学 一种图形绘制流水线中像素着色结果重用方法
US11295507B2 (en) * 2020-02-04 2022-04-05 Advanced Micro Devices, Inc. Spatial partitioning in a multi-tenancy graphics processing unit
US11442495B2 (en) * 2020-03-06 2022-09-13 Advanced Micro Devices, Inc. Separate clocking for components of a graphics processing unit
CN111580974B (zh) * 2020-05-08 2023-06-27 抖音视界有限公司 Gpu实例分配方法、装置、电子设备和计算机可读介质
US11200060B1 (en) * 2020-12-23 2021-12-14 Advanced Micro Devices, Inc. Broadcast synchronization for dynamically adaptable arrays

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010085426A (ko) * 1998-08-20 2001-09-07 알버트 피. 세팔로 개선된 지연 쉐이딩 그래픽 파이프라인 프로세서

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5701405A (en) * 1995-06-21 1997-12-23 Apple Computer, Inc. Method and apparatus for directly evaluating a parameter interpolation function used in rendering images in a graphics system that uses screen partitioning
JP4158413B2 (ja) 2002-05-22 2008-10-01 ソニー株式会社 画像処理装置
US6862027B2 (en) * 2003-06-30 2005-03-01 Microsoft Corp. System and method for parallel execution of data generation tasks
US7355601B2 (en) * 2003-06-30 2008-04-08 International Business Machines Corporation System and method for transfer of data between processors using a locked set, head and tail pointers
US9098932B2 (en) * 2004-08-11 2015-08-04 Ati Technologies Ulc Graphics processing logic with variable arithmetic logic unit control and method therefor
US8332592B2 (en) * 2004-10-08 2012-12-11 International Business Machines Corporation Graphics processor with snoop filter
US20060112226A1 (en) * 2004-11-19 2006-05-25 Hady Frank T Heterogeneous processors sharing a common cache
CN101849227A (zh) 2005-01-25 2010-09-29 透明信息技术有限公司 在单片构造的硅芯片上采用多个图形核心的图形处理和显示系统
US20090051687A1 (en) 2005-10-25 2009-02-26 Mitsubishi Electric Corporation Image processing device
US8766995B2 (en) * 2006-04-26 2014-07-01 Qualcomm Incorporated Graphics system with configurable caches
US8933933B2 (en) * 2006-05-08 2015-01-13 Nvidia Corporation Optimizing a graphics rendering pipeline using early Z-mode
US7928990B2 (en) * 2006-09-27 2011-04-19 Qualcomm Incorporated Graphics processing unit with unified vertex cache and shader register file
US8139069B1 (en) * 2006-11-03 2012-03-20 Nvidia Corporation Method and system for improving data coherency in a parallel rendering system
US20080198166A1 (en) * 2007-02-16 2008-08-21 Via Technologies, Inc. Multi-threads vertex shader, graphics processing unit, and flow control method
JP2008225893A (ja) 2007-03-13 2008-09-25 Toshiba Corp プロセッサ及びプロセッサシステム
US8325184B2 (en) 2007-09-14 2012-12-04 Qualcomm Incorporated Fragment shader bypass in a graphics processing unit, and apparatus and method thereof
GB0723537D0 (en) 2007-11-30 2008-01-09 Multi-core rasterisation in a tile based rendering system7743180001
US8174534B2 (en) * 2007-12-06 2012-05-08 Via Technologies, Inc. Shader processing systems and methods
US8769207B2 (en) * 2008-01-16 2014-07-01 Via Technologies, Inc. Caching method and apparatus for a vertex shader and geometry shader
US8259111B2 (en) * 2008-05-30 2012-09-04 Advanced Micro Devices, Inc. Merged shader for primitive amplification
US8558836B2 (en) * 2008-05-30 2013-10-15 Advanced Micro Devices, Inc. Scalable and unified compute system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010085426A (ko) * 1998-08-20 2001-09-07 알버트 피. 세팔로 개선된 지연 쉐이딩 그래픽 파이프라인 프로세서

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021173959A1 (en) * 2020-02-28 2021-09-02 Advanced Micro Devices, Inc. Dynamic transparent reconfiguration of a multi-tenant graphics processing unit
US11403729B2 (en) 2020-02-28 2022-08-02 Advanced Micro Devices, Inc. Dynamic transparent reconfiguration of a multi-tenant graphics processing unit
US11508124B2 (en) 2020-12-15 2022-11-22 Advanced Micro Devices, Inc. Throttling hull shaders based on tessellation factors in a graphics pipeline
US11776085B2 (en) 2020-12-16 2023-10-03 Advanced Micro Devices, Inc. Throttling shaders based on resource usage in a graphics pipeline
WO2022211926A1 (en) * 2021-03-30 2022-10-06 Advanced Micro Devices, Inc. Wave throttling based on a parameter buffer
US11710207B2 (en) 2021-03-30 2023-07-25 Advanced Micro Devices, Inc. Wave throttling based on a parameter buffer

Also Published As

Publication number Publication date
US9142057B2 (en) 2015-09-22
KR101661720B1 (ko) 2016-09-30
EP2473976B1 (en) 2016-10-26
JP2013504129A (ja) 2013-02-04
WO2011028981A1 (en) 2011-03-10
CN102598061A (zh) 2012-07-18
EP2473976A1 (en) 2012-07-11
US20110050716A1 (en) 2011-03-03
CN102598061B (zh) 2016-05-04
IN2012DN02658A (ko) 2015-09-11
JP5711236B2 (ja) 2015-04-30

Similar Documents

Publication Publication Date Title
KR101661720B1 (ko) 복수의 셰이더 엔진들을 구비한 처리 유닛
JP5791608B2 (ja) 非同期タスクディスパッチを可能にする処理ユニット
KR102218332B1 (ko) 확장 가능한 gpu에서 데이터 분배 패브릭
CN109564700B (zh) 用于取决于纹理的丢弃操作的分级式Z剔除(HiZ)优化
US10217183B2 (en) System, method, and computer program product for simultaneous execution of compute and graphics workloads
US8108872B1 (en) Thread-type-based resource allocation in a multithreaded processor
US8327071B1 (en) Interprocessor direct cache writes
CN106575430B (zh) 用于像素哈希的方法和装置
KR20130141446A (ko) 복수의 프로세싱 유닛들에서 온-칩 메모리를 사용하는 데이터 프로세싱
CN106662999B (zh) 用于simd结构化分支的方法和装置
US8928679B2 (en) Work distribution for higher primitive rates
US20160307362A1 (en) Optimized depth buffer cache apparatus and method
US8675003B2 (en) Efficient data access for unified pixel interpolation
US8736624B1 (en) Conditional execution flag in graphics applications
US20190286430A1 (en) Apparatus and method for efficiently accessing memory when performing a horizontal data reduction
US10037625B2 (en) Load-balanced tessellation distribution for parallel architectures
US20170032486A1 (en) Packet Processing on Graphics Processing Units Using Continuous Threads
WO2017112158A1 (en) Rasterization based on partial spans
CN109564676B (zh) 管芯上曲面细分分配
CN109791527B (zh) 延迟丢弃
US20180032431A1 (en) Banking Graphics Processor Shared Local Memory

Legal Events

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

Payment date: 20190829

Year of fee payment: 4