KR20070064337A - 그래픽 처리 서브시스템 및 픽셀 단편에 대해 적어도하나의 값을 결정하기 위한 방법 - Google Patents

그래픽 처리 서브시스템 및 픽셀 단편에 대해 적어도하나의 값을 결정하기 위한 방법 Download PDF

Info

Publication number
KR20070064337A
KR20070064337A KR1020077008330A KR20077008330A KR20070064337A KR 20070064337 A KR20070064337 A KR 20070064337A KR 1020077008330 A KR1020077008330 A KR 1020077008330A KR 20077008330 A KR20077008330 A KR 20077008330A KR 20070064337 A KR20070064337 A KR 20070064337A
Authority
KR
South Korea
Prior art keywords
fragment
fragment shader
pipeline
fragments
shader
Prior art date
Application number
KR1020077008330A
Other languages
English (en)
Other versions
KR100887012B1 (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 KR20070064337A publication Critical patent/KR20070064337A/ko
Application granted granted Critical
Publication of KR100887012B1 publication Critical patent/KR100887012B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading

Abstract

단편 처리 장치는 단편 쉐이더 분배기, 단편 쉐이더 수집기 및 복수의 단편 쉐이더 파이프라인을 포함한다. 각각의 단편 쉐이더 파이프라인은 단편들 세그먼트에 대해 단편 쉐이더 프로그램을 실행한다. 복수의 단편 쉐이더 파이프라인은 병렬로 동작하며, 동일하거나 서로 다른 단편 쉐이더 프로그램을 실행한다. 단편 쉐이더 분배기는 래스터라이저 장치로부터 단편들 스트림을 수신하며, 선택된 단편 쉐이더 파이프라인의 용량에 도달할 때까지, 이 단편들 스트림의 일부를 선택된 단편 쉐이더 파이프라인에 전달한다. 이후 단편 쉐이더 분배기는 또 다른 단편 쉐이더 파이프라인을 선택한다. 단편 쉐이더 파이프라인 각각의 용량은 여러 상이한 자원들에 의해 제한된다. 단편 쉐이더 분배기가 단편들을 전달할 때, 이것은 선택된 단편 쉐이더 파이프라인의 남아있는 사용가능한 자원을 추적한다. 단편 쉐이더 수집기는 복수의 단편 쉐이더 파이프라인으로부터 처리된 단편을 검색한다.
단편 쉐이더 분배기, 단편 쉐이더 수집기, 단편 쉐이더 파이프라인

Description

그래픽 처리 서브시스템 및 픽셀 단편에 대해 적어도 하나의 값을 결정하기 위한 방법{INCREASED SCALABILITY IN THE FRAGMENT SHADING PIPELINE}
본 발명은 컴퓨터 그래픽 분야에 관한 것이다. 많은 컴퓨터 그래픽 이미지들이, 소정의 뷰포인트(viewpoint)로부터의 3차원 장면과 빛의 상호작용을 수학적으로 모델링함으로써 생성된다. 렌더링이라 지칭되는 이 프로세스는, 소정의 뷰포인트로부터 장면의 2차원 이미지를 생성하며, 이것은 실세계 장면의 사진을 찍은 것과 유사하다.
컴퓨터 그래픽, 특히 실시간 컴퓨터 그래픽에 대한 요구가 증가함에 따라, 렌더링 프로세스의 처리 속도를 높이도록 적응된 그래픽 처리 서브시스템을 지닌 컴퓨터 시스템이 널리 보급되어오고 있다. 이들 컴퓨터 시스템에서, 이 렌더링 프로세스는 컴퓨터의 범용 CPU와 그래픽 처리 서브시스템 간에 나뉘어져 있다. 통상적으로, CPU는, 소정의 장면에 있는 물체의 위치, 움직임(motion) 및 충돌을 결정하는 것과 같은 높은 수준의 동작을 실행한다. 이러한 높은 수준의 동작들로부터, CPU는 원하는 렌더링 이미지 또는 이미지들을 정의하는 렌더링 명령 및 데이터 집합을 생성한다. 예를 들면, 렌더링 명령 및 데이터는 한 장면에 대한 장면 기하학적 배열(geometry), 조명, 쉐이딩(shading), 텍스추어링(texturing), 움직임 및/또 는 카메라 매개변수를 정의할 수 있다. 그래픽 처리 서브시스템은 이 렌더링 명령 및 데이터 집합으로부터 하나 이상의 렌더링 이미지들을 생성한다.
그래픽 처리 서브시스템은, 통상적으로, 입력 요소들이 일련의 스트림 처리 장치들에 의해 연속적으로 판독되고 동작되는, 스트림-처리 모델을 이용한다. 한 스트림 처리 장치의 출력은 일련의 장치들 중 다음 스트림 처리 장치에 대한 입력으로 된다. 통상적으로, 데이터는 일련의 스트림 처리 장치들을 통해, 단방향으로만, 즉 "다운스트림(downstream)"으로만 흐른다. 스트림 처리 장치들의 예로는, 2차원 또는 3차원의 꼭지점들을 처리하는 꼭지점 처리 장치(vertex processors), 2차원 또는 3차원의 꼭지점 집합으로 정의된 기하학적 원형(geometric primitives)을 단편(fragments)이라 지칭되는 픽셀들 또는 서브-픽셀들의 집합으로 변환 처리하는 래스터라이저 처리 장치(rasterizer processors), 및 단편들을 처리하여 컬러 및 기타 속성들을 결정하는 단편 처리 장치(fragment processors)를 포함한다.
많은 그래픽 처리 서브시스템은 상당히 높은 수준까지 프로그램가능하여, 무엇보다도, 복잡한 조명과 쉐이딩 알고리즘의 구현이 가능하다. 이러한 프로그램가능성(programmability)을 활용하기 위해, 애플리케이션들은 하나 이상의 그래픽 처리 서브시스템 프로그램들을 포함할 수 있으며, 이 프로그램들은 CPU에 의해 실행되는 메인 프로그램과 병렬로 그래픽 처리 서브시스템에 의해 실행된다. 이들 그래픽 처리 서브시스템 프로그램들이 단지 쉐이딩 및 조명 알고리즘만을 구현하는 것은 아니지만, 이들 프로그램들은 종종 쉐이딩 프로그램 또는 쉐이더(shader)라 지칭된다.
프로그램가능한 스트림 처리 장치 각각은, 다른 스트림 처리 장치들 상에서 실행되는 쉐이딩 프로그램들과 병렬로 자기 고유의 개별 쉐이딩 프로그램을 실행하도록 적응될 수 있다. 복잡한 알고리즘의 구현은, 원하는 결과를 달성하기 위해 같이 동작하며, 각각의 스트림 처리 장치에 맞추어진 개별 쉐이딩 프로그램에 종종 좌우된다. 이러한 구현에서, 일련의 장치 중 최초의 스트림 처리 장치에 대한 쉐이딩 프로그램의 출력은, 일련의 장치 중 후속하는 스트림 처리 장치에 대한 쉐이딩 프로그램의 입력과 링크될 수 있다.
프로그램가능한 단편 처리 장치는 종종 렌더링 성능을 개선하는 데에 있어 병목 현상(bottleneck)을 일으킨다. 통상적으로, 프로그램가능한 단편 처리 장치는, 렌더링된 단편 각각에 대해 그 쉐이딩 프로그램을 한 번씩 실행해야만 한다. 단편 쉐이딩 프로그램이 수백 또는 수천 개의 명령어를 포함하고, 렌더링 이미지 각각은 수백만 개의 단편들로 생성되기 때문에, 단편 처리 장치의 컴퓨터 계산 요건은 어마어마하다.
따라서, 프로그램가능한 단편 처리 장치의 성능이 개선된 그래픽 처리가 바람직하다. 또한, 서로 다른 비용 목표 및 성능 목표를 충족시키기 위해 프로그램가능한 단편 처리 장치가 쉽고 효율적으로 스케일링가능한 것이 바람직하다.
본 발명의 실시예에서, 단편 처리 장치는 단편 쉐이더 분배기(fragment shader distributor), 단편 쉐이더 수집기(fragment shader collector) 및 복수의 단편 쉐이더 파이프라인을 포함한다. 단편 쉐이더 파이프라인 각각은 단편들의 세그먼트에 대해 단편 쉐이더 프로그램을 실행하도록 적응된다. 복수의 단편 쉐이더 파이프라인은, 병렬로 동작하면서, 동일하거나 상이한 단편 쉐이더 프로그램들을 실행한다. 단편 쉐이더 분배기는 래스터변환 장치(rasterization unit)로부터 단편들 스트림을 수신한다. 단편 쉐이더 분배기는, 선택된 단편 쉐이더 파이프라인의 용량에 도달하거나, 또는 소정의 기간 내에 단편들이 더 이상 도착하지 않을 때까지, 단편들 스트림의 일부를 선택된 단편 쉐이더 파이프라인으로 전달한다(dispatch). 이후 단편 쉐이더 분배기는 또 다른 단편 쉐이더 파이프라인을 선택한다. 선택된 단편 쉐이더 파이프라인으로 전송된 단편들 스트림의 일부는 단편 스트림 세그먼트라 지칭된다. 각 단편 쉐이더 파이프라인의 용량은 여러 상이한 자원들에 의해 제한된다. 단편 쉐이더 분배기가 단편들을 전달할 때, 선택된 단편 쉐이더 파이프라인의 사용가능한 나머지 자원들을 추적한다. 단편 쉐이더 수집기는 복수의 단편 쉐이더 파이프라인들로부터 처리된 단편들을 검색한다(retrieve). 단편 쉐이더 수집기는 단편 쉐이더 분배기와 동일한 선택 순서를 따라서, 단편들 스트림의 순서를 유지한다.
실시예에서, 단편 처리 장치를 포함하는 그래픽 처리 서브시스템은, 단편들 스트림의 각 단편에 대해 적어도 하나의 값을 결정하도록 적응된다. 단편 처리 장치는 단편들 세그먼트에 대해 단편 쉐이더 프로그램의 적어도 일부를 실행하도록 적응된 제1 단편 쉐이더 파이프라인을 포함한다. 단편 처리 장치는 또한 단편 쉐이더 분배기를 포함한다. 단편 쉐이더 분배기는, 단편들 스트림을 수신하고, 제1 단편 쉐이더 파이프라인을 선택하여 단편들 스트림의 제1 부분을 실행하고, 수신된 스트림의 단편 각각에 대해, 수신된 단편이 선택된 단편 쉐이더 파이프라인의 단편들 세그먼트 내에 적합한지 여부를 판정하고, 수신된 단편이 선택된 단편 쉐이더 파이프라인의 단편들 세그먼트 내에 적합하다는 판정에 응하여, 수신된 단편을 선택된 단편 쉐이더 파이프라인으로 전달하도록 적응된다. 단편 쉐이더 수집기는, 제1 단편 쉐이더 파이프라인을 선택하고, 단편 쉐이더 수집기에 의해 선택된 단편 쉐이더 파이프라인이 단편들 세그먼트에 대해 단편 쉐이더 프로그램의 실행을 완료했다는 것을 나타내는 신호에 응하여, 단편 쉐이더 수집기에 의해 선택된 단편 쉐이더 파이프라인으로부터 단편들 세그먼트의 각 세그먼트를 검색하도록 적응된다.
추가의 실시예에서, 수신된 단편이 제1 단편 쉐이더 파이프라인의 단편들 세그먼트 내에 적합한지 여부를 판정하도록 적응될 때, 단편 쉐이더 분배기는, 수신된 단편의 일부 자원 요건을 판정하고, 선택된 단편 쉐이더 파이프라인의 사용가능한 자원의 측정치를 판정하고, 수신된 단편의 자원 요건이 선택된 단편 쉐이더 파이프라인의 사용가능한 자원의 측정치를 초과하지 않는다는 판정에 응하여, 수신된 단편이 선택된 단편 쉐이더 파이프라인의 단편들 세그먼트 내에 적합하다는 것을 나타내는 신호를 생성하도록 적응된다.
또 다른 실시예에서, 그래픽 처리 서브시스템은 단편들 세그먼트에 대해 단편 쉐이더 프로그램의 적어도 일부를 실행하도록 적응된 제2 단편 쉐이더 파이프라인을 포함한다. 수신된 단편이 선택된 단편 쉐이더 파이프라인의 단편들 세그먼트 내에 적합하다는 판정에 응하여, 단편 쉐이더 분배기는, 제2 단편 쉐이더 파이프라인을 선택하고, 수신된 단편을 선택된 단편 쉐이더 파이프라인에 전달하도록 적응된다. 추가의 실시예에서, 단편 쉐이더 수집기는, 제2 단편 쉐이더 파이프라인의 선택을 나타내는 신호를 수신하도록 적응된다. 이 신호에 응하여, 단편 쉐이더 수집기는 제2 단편 쉐이더 파이프라인을 선택하도록 적응된다. 단편 쉐이더 수집기는, 단편 쉐이더 수집기에 의해 선택된 단편 쉐이더 파이프라인이 단편들 세그먼트에 대해 단편 쉐이더 프로그램의 실행을 완료했다는 것을 나타내는 신호에 응하여, 단편 쉐이더 수집기에 의해 선택된 단편 쉐이더 파이프라인으로부터 단편들 세그먼트의 각 단편들을 검색하도록 또한 적응된다.
도 1은 본 발명의 실시예를 구현하기에 적합한 예시적인 컴퓨터 시스템의 블록도.
도 2는 본 발명의 실시예에 따른 그래픽 처리 서브시스템의 렌더링 파이프라인의 블록도.
도 3은 본 발명의 실시예에 따른 단편 처리 장치의 단편 쉐이더부를 도시하는 도면.
도 4는 본 발명의 실시예에 따른 단편 쉐이더 분배기를 도시하는 도면.
도 5는 본 발명의 실시예에 따른 명령어 타이밍 스킴을 도시하는 도면.
본 발명은 도면을 참조하여 설명될 것이다.
도 1은 본 발명의 실시예를 실행하기에 적합한, 퍼스널 컴퓨터, 비디오 게임 콘솔, PDA, 또는 기타 디지털 장치와 같은 컴퓨터 시스템(100)의 블록도이다. 컴 퓨터 시스템(100)은 소프트웨어 애플리케이션과, 선택적으로, 운영 체제를 수행시키기 위한 중앙 처리 장치(central processing unit:CPU)(105)를 포함한다. 실시예에서, CPU(105)는 사실 병렬로 동작하는 여러 개별 CPU들을 뜻한다. 메모리(110)는 CPU(105)에 의해 사용되는 애플리케이션과 데이터를 저장한다. 기억 장치(115)는 애플리케이션 및 데이터를 위한 비휘발성 기억 장치를 제공하며, 고정 디스크 드라이브, 분리형 디스크 드라이브, 플래시 메모리 장치 및 CD-ROM, DVD-ROM 또는 기타 광 기억 장치들을 포함할 수 있다. 사용자 입력 장치(120)는 하나 이상의 사용자들로부터의 사용자 입력을 컴퓨터 시스템(100)에 전달하고, 키보드, 마우스, 조이스틱, 터치 스크린 및/또는 마이크를 포함할 수 있다. 네트워크 인터페이스(125)를 이용하여, 컴퓨터 시스템(100)은, 전자 통신 네트워크를 통해 다른 컴퓨터 시스템과 통신할 수 있으며, 네트워크 인터페이스(125)는 LAN 또는 인터넷과 같은 WAN을 통한 유선 또는 무선 통신을 포함할 수 있다. CPU(105), 메모리(110), 데이터 기억 장치(115), 사용자 입력 장치(120) 및 네트워크 인터페이스(125)를 포함하여 컴퓨터 시스템(100)의 컴포넌트들은 하나 이상의 데이터 버스(160)를 통해 접속되어 있다. 데이터 버스의 예로는 ISA, PCI, AGP, PCI, PCI-익스프레스(Express) 및 하이퍼트랜스포트(HyperTransport) 데이터 버스가 있다.
데이터 버스(160)와 컴퓨터 시스템(100)의 컴포넌트에 그래픽 서브시스템(130)이 또한 접속되어 있다. 그래픽 서브시스템은, 컴퓨터 시스템 마더보드에 통합되거나, 또는 컴퓨터 시스템에 고정되게 접속되어 있거나 또는 분리가능하게 접속된 별도의 회로 기판 상에 있을 수도 있다. 그래픽 서브시스템(130)은 그래픽 처리 장치(graphics processing unit:GPU)(135)와 그래픽 메모리를 포함한다. 그래픽 메모리는 출력 이미지의 각 픽셀에 대한 픽셀 데이터를 저장하는 데에 사용되는 디스플레이 메모리(140)(예를 들면, 프레임 버퍼)를 포함한다. 픽셀 데이터는 CPU(105)로부터 디스플레이 메모리(140)에 직접 제공될 수 있다. 대안으로, CPU(105)는 GPU(135)에 원하는 출력 이미지를 정의하는 데이터 및/또는 명령을 제공하며, 이로부터 GPU(135)는 하나 이상의 출력 이미지들의 픽셀 데이터를 생성한다. 원하는 출력 이미지를 정의하는 데이터 및/또는 명령은 추가 메모리(145)에 저장되어 있다. 실시예에서, GPU(135)는 한 장면에 대한 기하학적 배열, 조명, 쉐이딩, 텍스추어링, 움직임 및/또는 카메라 매개변수를 정의하는 렌더링 명령 및 데이터로부터 출력 이미지에 대한 픽셀 데이터를 생성한다.
또 다른 실시예에서, 디스플레이 메모리(140) 및/또는 추가 메모리(145)는 메모리(110)의 일부이며, CPU(105)에 의해 공유된다. 대안으로, 디스플레이 메모리(140) 및/또는 추가 메모리(145)는 그래픽 서브시스템(130)의 독점적 사용을 위해 제공되는 하나 이상의 개별 메모리이다. 그래픽 서브시스템(130)은 디스플레이 메모리(140)로부터 이미지에 대한 픽셀 데이터를 주기적으로 출력하고, 디스플레이 장치(150) 상에 디스플레이한다. 디스플레이 장치(150)는 CRT, LCD, 플라즈마 및 OLED 디스플레이를 포함하는, 컴퓨터 시스템(100)으로부터의 신호에 응하여 시각적 정보를 디스플레이할 수 있는 임의의 장치이다. 컴퓨터 시스템(100)은 이 디스플레이 장치(150)에 아날로그 신호 또는 디지털 신호를 제공할 수 있다.
추가의 실시예에서, 그래픽 처리 서브시스템(130)은, GPU(135)와 유사한 하 나 이상의 추가의 GPU들(155)을 포함한다. 또 다른 추가의 실시예에서, 그래픽 처리 서브시스템(130)은 그래픽 코프로세서(graphics coprocessor)(165)를 포함한다. 그래픽 처리 코프로세서(165)와 추가의 GPU들(155)은 GPU(135)와 병렬로 또는 GPU(135)를 대신하여 동작하도록 적응된다. 추가의 GPU들(155)은, GPU(135)와 마찬가지로, 렌더링 명령으로부터 출력 이미지에 대한 픽셀 데이터를 생성한다. 추가의 GPU들(155)은 GPU(135)와 함께 동작하여, 출력 이미지의 상이한 부분들에 대한 픽셀 데이터를 동시에 생성하거나, 또는 상이한 출력 이미지들에 대한 픽셀 데이터를 동시에 생성할 수 있다. 실시예에서, 그래픽 코프로세서(165)는, GPU(135) 및/또는 추가의 GPU들(155)을 위해, 기하학적 배열 변형, 쉐이더 계산 및 이면 제거(backface culling) 동작과 같은 렌더링 관련 태스크를 실행한다.
추가의 GPU들(155)은, GPU(135)와 동일한 회로 기판에 위치하여, GPU(135)와 데이터 버스(160)로의 접속을 공유할 수 있거나, 또는 데이터 버스(160)에 별도로 접속되어 있는 추가의 회로 기판에 위치할 수도 있다. 추가의 GPU들(155)은 또한 GPU(135)와 동일한 모듈 또는 칩 패키지에 통합될 수도 있다. 추가의 GPU들(155)은, 디스플레이 메모리(140) 및 추가 메모리(145)와 마찬가지로, 자기 자신의 디스플레이와 추가 메모리를 지닐 수 있으며, 또는 GPU(135)와 메모리(140 및 145)를 공유할 수도 있다. 한 실시예에서, 그래픽 코프로세서(165)는, 데이터 버스(160)를 제어하는 데 사용되는 노스브리지(Northbridge) 또는 사우스브리지(Southbridge) 칩과 같은 컴퓨터 시스템 칩셋(도시 생략)에 통합된다.
도 2는, 본 발명의 실시예에 따른, 그래픽 처리 서브시스템의 렌더링 파이프 라인(200)의 블록도를 도시하고 있다. 파이프라인(200)은 GPU(135) 및/또는 상술된 것에 구현될 수 있다. 파이프라인(200)은 꼭지점 처리 장치(vertex processing unit)(205), 뷰포트 및 제거(viewport and culling:VPC) 장치(210), 셋업 장치(215), 래스터라이저 장치(rasterizer unit)(220), 컬러 어셈블리 블록(color assembly block)(225) 및 단편 처리 장치(230)를 포함한다.
꼭지점 처리 장치(205)는, 한 장면에 대한 기하학적 배열, 조명, 쉐이딩, 텍스추어링, 움직임 및/또는 카메라 매개변수를 포함하는, 원하는 렌더링 이미지 또는 이미지들을 정의하는 데 사용되는 렌더링 명령 및 데이터를 수신한다. 렌더링 데이터는 기하학적 원형을 정의하는 하나 이상의 꼭지점을 포함할 수 있다. 각 꼭지점은 통상적으로 2차원 또는 3차원 좌표계로 표현되는 위치를 갖는다. 위치 외에, 각 꼭지점은 이와 관련된 각종 속성들(attributes)을 갖는다. 일반적으로, 꼭지점의 속성들은 꼭지점별(per-vertex basis)로 명시되는 임의의 특성(property)을 포함할 수 있다. 실시예에서, 꼭지점 속성들은 꼭지점과 그에 관련된 기하학적 원형의 컬러, 투명도(transparency), 조명, 쉐이딩 및 애니메이션과 같은 특질(qualities)을 결정하는 데에 사용되는 스칼라 속성 또는 벡터 속성을 포함한다.
꼭지점 처리 장치(205)는, 꼭지점 쉐이더라 또한 지칭되는 하나 이상의 꼭지점 프로그램을 각 꼭지점에서 실행하여 변형된 꼭지점을 생성한다. 꼭지점 처리 장치(205)는 프로그램가능하며, 렌더링 애플리케이션은 주어진 임의의 꼭지점 집합에 대해 사용될 꼭지점 프로그램을 명시할 수 있다. 간단한 실시예에서, 꼭지점 프로그램은 한 꼭지점을, 3차원 세계의 좌표계로부터 2차원의 화면 좌표계로 변환한다. 조명 및 쉐이딩을 포함하는 각종 시각적 효과, 순차적인 기하학적 배열 및 애니메이션 동작들을 구현하는 데에 더 복잡한 꼭지점 프로그램이 사용될 수 있다. 이러한 "꼭지점별" 동작의 많은 예는 당 기술 분야에 공지되어 있으며, 본 발명을 이해하는 데에 꼭 필요한 것이 아니므로 그 상세한 설명은 생략된다. 꼭지점 쉐이더 프로그램은, 꼭지점들 및 데이터에 대한 넓은 범위의 수학 연산과 논리 연산을 이용하여 알고리즘을 구현할 수 있으며, 조건 실행 경로 또는 분기 실행 경로와 직접 및 간접 메모리 액세스를 포함할 수 있다.
뷰포트 및 제거 장치(210)는, 시야 외부에 있거나 또는 렌더링 이미지에서 보이지 않는 기하학적 원형 및/또는 그 일부를 제거하거나 또는 폐기한다(discard). 렌더링 이미지에서 보이지 않는 기하학적 원형을 폐기함으로써, 이 제거 단계는 렌더링 파이프라인(200)의 하부 처리 단에 의해 처리될 기하학적 원형의 개수를 감소시켜 렌더링 속도를 증가시킨다.
셋업 장치(215)는 하나 이상의 꼭지점들을 모아 삼각형 또는 사변형과 같은 기하학적 원형으로 만든다. 이후 래스터라이저 장치(220)에서는 각각의 기하학적 원형을 하나 이상의 픽셀 단편으로 변환한다. 픽셀 단편은 렌더링 이미지에서 디스플레이될 가능성이 있는 하나 이상의 픽셀 집합을 정의한다. 래스터라이저로부터 출력된 각 픽셀 단편은, 단편과 관련된 픽셀의 이미지 좌표와 같은 렌더링 이미지의 관련 기하학적 원형의 가능한 적용범위와, 그 픽셀 위치에서의 관련 기하학적 원형의 서브-픽셀 적용범위를 정의하는 정보를 포함한다. 이 픽셀 단편들은 이하 에 기술되는 단편 처리 장치에 제공된다.
컬러 어셈블리 및 평면 공식 셋업 블록(Color assembly and Plane Equation Setup Block)(225)은, 꼭지점 처리 장치(205)로부터 수신한, 꼭지점 컬러, 꼭지점 깊이(depth) 값, 꼭지점 법선 벡터 및 텍스처 좌표와 같은 꼭지점별 속성들을, 꼭지점 위치와 같은 래스터화 이전의 기하학적 원형의 다른 속성들과 관련시키고, 픽셀 단편의 위치가 주어지면, 그 픽셀 단편 내의 임의의 지점에서 꼭지점별 속성을 보간하기 위한 평면 공식 계수와 같은 다른 기하학적 원형별 속성들을 계산한다. 단편의 기하학적 원형별 속성들은 단편 처리 장치(230)에 제공된다.
단편 처리 장치(230)는, 컬러 어셈블리 및 평면 공식 셋업 장치로부터의 꼭지점별 및 기하학적 원형별 속성들과 함께, 그리고 단편 쉐이더 프로그램과 함께, 각 픽셀 단편과 관련되고 래스터라이저에서 생성된 위치 정보를 이용하여 각 단편의 출력 값(예를 들면, 컬러 및 깊이)을 결정한다. 꼭지점 처리 장치(205)와 마찬가지로, 단편 처리 장치 또한 프로그램가능하다. 픽셀 쉐이더 또는 단편 쉐이더라고 또한 지칭되는 픽셀 단편 프로그램은, 각 픽셀 단편에 대해 실행되어 한 픽셀에 대한 출력 컬러 값을 결정한다. 픽셀 단편 프로그램이 꼭지점 쉐이더 프로그램에 독립적으로 동작하지만, 픽셀 단편 프로그램은, 꼭지점 프로그램에 의해 생성된 정보를 포함하여, 이전의 스트림 처리 장치들에 의해 생성되거나 또는 이전의 스트림 처리 장치들을 통해 전달된 정보에 좌우될 수 있다.
렌더링 애플리케이션은, 임의의 소정의 픽셀 단편들의 집합에 대해 사용될 픽셀 단편 프로그램을 명시할 수 있다. 픽셀 단편 프로그램은, 조명 및 쉐이딩 효 과를 포함하는 각종 시각적 효과, 반사, 텍스처 매핑 및 순차적인 텍스처 생성을 구현하는 데에 사용될 수 있다. 이러한 "픽셀별" 동작들의 많은 예가 당 기술 분야에 공지되어 있고, 본 발명을 이해하는 데에 꼭 필요한 것이 아니므로 자세한 설명은 생략된다. 픽셀 단편 쉐이더 프로그램은, 단편들 및 데이터에 대한 넓은 범위의 수학 연산과 논리 연산을 이용하여 알고리즘을 구현할 수 있으며, 조건 실행 경로 또는 분기 실행 경로와 직접 및 간접 메모리 액세스를 포함할 수 있다.
이후 쉐이드된 단편은, 단편 컬러, 깊이 및 스텐실 값(stencil values)과 같은 속성들과 함께, 래스터 연산 및 저장 장치(235)로 출력된다. 래스터 연산 장치(235)는, 단편 처리 장치(230)로부터 출력된 단편들을, 프레임 버퍼에 이미 저장되어 있는 렌더링 이미지의 일부와 통합한다. 단편들은 프레임 버퍼의 렌더링 이미지에 이전에 기입된 픽셀들과 블렌딩되거나 또는 마스크될 수 있다. 깊이 버퍼, 알파 버퍼 및 스텐실 버퍼는, 또한, 렌더링 이미지에 대한 (만약 있을 경우) 각각의 입력 단편의 분담(contribution)을 결정하는 데에 사용될 수 있다. 각각의 입력 단편과 프레임 버퍼에 이전에 저장된 임의의 픽셀 값의 조합은, 렌더링 이미지의 일부로서, 예를 들면, 디스플레이 메모리(140)에 위치하고 있는 프레임 버퍼에 출력된다.
도 3은, 본 발명의 실시예에 따른 단편 처리 장치의 단편 쉐이더부를 도시한다. 이 실시예에서, 단편 쉐이더(300)는, 단편 쉐이더 분배기(310), 복수의 단편 쉐이더 파이프라인 장치(315,317,319 및 321), 측면 FIFO(side FIFO)(325) 및 단편 쉐이더 수집기(330)를 포함한다. 도 3의 예에는, 4개의 단편 쉐이더 파이프라인이 있다. 그러나, 대안의 실시예에서는, 단 하나 또는 임의의 다른 개수의 단편 쉐이더 파이프라인을 포함할 수 있으며, 이는 그래픽 처리 서브시스템을 생성하는 데 사용되는 제조 공정에 의해서만 제한된다. 이 실시예에서, 단편 쉐이더 분배기(310)는 래스터라이저(305)로부터 단편들 스트림(및 이와 관련된 래터스라이저에서 생성된 속성들)을 수신함과 함께, 컬러 어셈블리 및 평면 공식 장치(303)로부터 이와 관련된 기하학적 원형별 단편 속성들을 수신하는데, 이것은 추가의 실시예에서, 래스터라이저 장치(220)와 컬러 어셈블리 및 평면 공식 셋업 장치(225)의 출력에 해당한다.
추가의 실시예에서, 단편 쉐이더 분배기(310)는 단편 그룹들의 스트림의 형태로 단편들 스트림을 수신한다. 각 단편 그룹은 공간적으로 인접한 단편들의 그룹을 포함한다. 한 실시예에서, 단편 그룹은 쿼드(quad)라 종종 지칭되는, 2 픽셀×2 픽셀 배열 크기의 단편을 포함한다. 대안의 실시예에서, 단편 그룹들은 임의의 다른 구조의 단편들을 포함할 수 있다.
각 단편의 위치를 나타내는 좌표와, 각 단편의 가능한 가시성을 나타내는 적용범위 정보를 포함하는, 래스터라이저로부터 직접 얻은 단편 속성들 집합은 각 단편 그룹과 관련된다. 입력되는 단편 그룹들 각각은 또한 컬러 어셈블리 및 평면 공식 장치(303)로부터 얻은 기하학적 원형별 속성들로부터 이미 보간되었거나 또는 앞으로 보간될 추가의 속성 집합과 관련된다.
이 보간된 단편 속성들은, 기본 컬러(base color), 투명도, 깊이 정보, 텍스처 좌표 및 텍스처 모드 정보(예를 들면, 텍스처 필터링 및 텍스처 경계 작 용(texture boundary behavior))를 포함할 수 있다. 실시예에서, 이들 다른 속성들은, 초기에는 래스터라이저 장치(220)에 의해 사용된 기하학적 원형과 관련되어 원형의 단편 그룹을 생성하고, 이러한 관련 사항은 기하학적 원형이 단편들로 변환될 때 단편 그룹으로 전달된다(carry over). 추가의 실시예에서, 기하학적 원형의 일부 속성 또는 모든 속성의 값들은, 단편 속성들의 각각의 집합에 대한 값을 결정하기 위해 단편 처리 장치에 의해 보간될 수 있다.
입력 단편 각각과 관련된 속성들 중 임의의 것 또는 모든 속성은, 단편 처리 장치의 단편 쉐이더부에 의해 사용되어, 각 단편의 출력(예를 들면, 최종 컬러 및 깊이)을 결정할 수 있다.
단편 쉐이더 분배기(310)는, 수신된 단편 그룹들의 스트림을 하나 이상의 세그먼트들로 구성한다(organize). 하나의 세그먼트는 단편 쉐이더 파이프라인이 한 번에 처리할 수 있는 단편 그룹들의 집합이다. 이하에 상세히 설명되는 바와 같이, 단편 쉐이더 파이프라인은, 한 세그먼트의 단편들 각각에 대해 단편 쉐이더 프로그램의 명령어를 실행하도록 적응된 파이프라인화된 처리 장치이다. 실시예에서, 한 세그먼트의 단편 그룹들의 개수는, 단편 쉐이더 파이프라인의 단의 개수, 단편 쉐이더 프로그램을 실행하기 위해 각 단편 그룹에 필요한 데이터 레지스터의 개수 및 세그먼트의 단편 그룹들과 관련된 속성들 집합의 개수를 포함하는, 단편 쉐이더 파이프라인의 처리 자원에 의해 제한된다. 단편 쉐이더 파이프라인의 성능을 최대화하기 위해, 단편 쉐이더 분배기(310)는, 단편 쉐이더 파이프라인의 처리 자원의 한계를 고려하면서, 가능한 가장 많은 개수의 단편 그룹들로 세그먼트를 형 성하도록 시도한다.
초기 상태에서, 단편 쉐이더 분배기(310)는 복수의 단편 쉐이더 파이프라인 중 하나를 선택하여 제1 단편 그룹들 세그먼트를 수신한다. 단편 쉐이더 분배기(310)가 단편 그룹들을 수신할 때, 분배기는 이 단편 그룹이 현재의 세그먼트 내에 적합한지 여부를 판정한다. 세그먼트의 한계에 아직 도달하지 않았으면, 단편 쉐이더 분배기(310)는 이 단편 그룹을 선택된 단편 파이프라인에 전달한다. 실시예에서, 단편 쉐이더 분배기(310)는, 단편 그룹들이 래스터라이저(305)로부터 수신될 때, 계속해서 이 단편 그룹들을 처리하고, 이것을 선택된 단편 쉐이더 파이프라인으로 전달한다. 현재의 세그먼트의 한계에 일단 도달하면, 단편 쉐이더 분배기(310)는 또 다른 단편 쉐이더 파이프라인을 선택하여 새로운 세그먼트를 시작한다. 단편 쉐이더 분배기(310)는, 새로운 세그먼트의 후속되는 단편 그룹들을 새로이 선택된 단편 쉐이더 분배기로 전송할 것이다.
실시예에서, 단편 쉐이더 분배기(310)는 라운드-로빈(round-robin) 접근방법을 이용하여 단편 쉐이더 파이프라인을 선택한다. 이 실시예의 예제에서, 단편 쉐이더 분배기(310)는, 제1 세그먼트의 한계에 도달할 때까지, 우선, 단편 그룹들을 단편 쉐이더 파이프라인(315)에 전송할 것이다. 후속되는 단편 그룹들은, 제2 세그먼트의 한계에 도달할 때까지, 단편 쉐이더 파이프라인(317)에 전송될 것이다. 이것은 모든 단편 쉐이더 파이프라인에 대해 반복될 것이며, 마지막 단 쉐이더 파이프라인(321)과 관련된 세그먼트가 완료된 후에는, 단편 그룹들은 단편 쉐이더 파이프라인(315)으로 다시 향할 것이다. 선택된 단편 쉐이더 파이프라인이, 그 이전 의 단편 그룹들의 세그먼트의 처리로부터, 새로운 세그먼트의 단편 그룹들을 받아들이기에 충분한 처리 자원들을 릴리즈하지(release) 못했다면, 단편 쉐이더 분배기(310)는, 선택된 단편 쉐이더 파이프라인이 새로운 세그먼트로부터의 단편 그룹들을 받아들이기 시작할 만큼 충분한 자원을 가질 때까지 잠시 멈춘다.
단편 쉐이더 파이프라인(315,317,319 및 321) 각각은, 한 세그먼트의 단편들 각각에 대해 단편 쉐이더 프로그램의 명령어를 실행하도록 적응되어 있다. 실시예에서, 각각의 단편 쉐이더 파이프라인은, 원근 교정 동작, 텍스처 맵 룩업 동작, 블렌딩 동작 및 기타 동작을 실행하는 많은 실행 단을 포함한다. 각 단편 파이프라인 장치의 레지스터 파일은, 그것이 실행될 때 각 단편 그룹과 관련된 데이터 값을 저장한다. 복잡한 단편 쉐이더 프로그램의 경우, 한 세그먼트의 단편 그룹들은 단편 쉐이더 파이프라인을 통해 한 번 이상 재순환하며, 각각의 후속되는 파이프라인을 통과함으로써 단편 쉐이더 프로그램의 추가 부분을 실행시킨다. 추가의 명령어가 적용된 단편 그룹들이 단편 쉐이더 파이프라인의 앞부분에 다시 재순환되었을 때, 각 단편에 대해 단편 쉐이더 파이프라인을 통과하는 동안 계산된 레지스터 값은, 각 단편의 레지스터 파일의 상태를 갱신하는 데에 사용된다. 실시예에서, 단편 쉐이더 파이프라인의 각 파이프라인 단은, 명확하게 하기 위해 도 3에는 생략되어 있는 쉐이더 명령어 장치로부터, 마이크로코드의 형태로 명령어를 수신한다.
한 세그먼트의 단편 그룹들과 관련된 속성들 중 일부는, 단편 쉐이더 파이프라인에 의한 세그먼트의 처리에 영향을 끼치지 않는다. 이것은 통과 속성(pass-through attributes)이라 지칭된다. 또한, 래스터라이저(305)로부터의 단편들 스 트림은 또한, 래스터 연산 장치(335)와 같은 단편 처리 장치의 그래픽 파이프라인 하부의 다른 부분과 통신하기 위해 필요한, 상태 번들(state bundle)이라 지칭되는 다른 명령 또는 데이터를 포함할 수 있다.
복수의 단편 쉐이더 파이프라인의 성능을 개선시키기 위해, 단편 쉐이더(300)의 실시예는, 단편 쉐이더 파이프라인으로 전송된 대응하는 세그먼트로부터 이들 통과 속성들을 분리시키고, 이 통과 속성과 상태 번들을 측면 FIFO(325)로 향하게 한다. 측면 FIFO(325)는 선입선출(first-in/first-out) 버퍼이다. 실시예에서, 단편 쉐이더 분배기(310)가 단편 그룹을 선택된 단편 쉐이더 파이프라인에 전송할 때, 단편 쉐이더 분배기(310)는 또한 대응하는 단편 패킷을 측면 FIFO(325)에 삽입한다. 추가의 실시예에서, 단편 쉐이더 분배기(310)가 세그먼트의 마지막 단편 그룹을 단편 쉐이더 파이프라인에 전송할 때, 측면 FIFO(325)에 전송된 대응하는 단편 패킷은 세그먼트 종료(end-of-segment) 표시자를 포함한다. 이하에 설명되는 바와 같이, 세그먼트 종료 표시자는 단편 쉐이더 수집기(330)에 의해 사용되어, 단편 그룹들과 그 대응하는 통과 속성들을 재조립한다. 또한, 단편 쉐이더 분배기(310)가 단편들 스트림에 상태 번들을 수신하면, 단편 쉐이더 분배기(310)는 이 상태 번들을 측면 FIFO(325)로 바로 전송한다. 실시예에서, 상태 번들이 단편 쉐이더 파이프라인 집합의 모드에 영향을 끼치면, 단편 쉐이더 분배기(310)는, 측면 FIFO(325) 외에 복수의 단편 쉐이더 파이프라인 각각에 상태 번들의 사본을 분배한다.
단편 쉐이더 수집기(330)는, 단편 쉐이더 파이프라인으로부터 처리된 단편 그룹들을 검색하고, 이 단편 그룹들을 측면 FIFO(325)로부터의 대응하는 통과 속성들과 재조합시키고(recombine), 이것을 래스터 연산 장치(335)로 전달하며, 래스터 연산 장치(335)는, 예를 들면, 깊이 버퍼, 스텐실 버퍼 및/또는 알파 버퍼에 의해 단편 그룹들이 마스크 오프되지 않은 경우, 단편 그룹들을 프레임 버퍼(340)에 저장할 수 있다. 실시예에서, 단편 쉐이더 수집기(330)는 측면 FIFO(325)를 참조하여 단편 쉐이더 장치에 의해 처리된 단편들 스트림의 순서를 지킨다. 이 실시예에서, 단편 쉐이더 수집기(330)의 초기 상태는, 단편 쉐이더 분배기(310)가 선택한 것과 동일한 단편 쉐이더 파이프라인을 선택한다. 이후 단편 쉐이더 수집기(330)는 측면 FIFO(325)로부터 제1 데이터 아이템을 검색한다. 검색된 데이터 아이템이 단편 패킷인 경우, 단편 쉐이더 수집기(330)는, 선택된 단편 쉐이더 파이프라인이 대응하는 단편 그룹을 처리하는 것을 완료할 때까지 기다린다. 이후, 단편 쉐이더 수집기(330)는, 선택된 단편 쉐이더 파이프라인으로부터 대응하는 단편 그룹을 검색하고, 그것을 단편 패킷의 통과 속성들과 조합하고, 이 단편 그룹을 래스터 연산 장치(335)로 전송한다. 이것이 측면 FIFO(325)의 후속하는 단편 패킷들에 대해 반복된다.
단편 패킷이 세그먼트 종료 표시자를 포함하는 경우, 단편 쉐이더 수집기(330)는 순서대로 다음 단편 쉐이더 파이프라인을 선택하여 단편 그룹들을 검색할 것이다. 단편 쉐이더 수집기(330)가 사용하는 순서는 단편 쉐이더 분배기(310)가 사용하는 순서와 동일하며, 예를 들면, 라운드-로빈 순서이다. 단편 쉐이더 분배기(310)와 단편 쉐이더 수집기(330) 둘 모두 동일한 순서를 사용하기 때문에, 단 편 그룹들의 세그먼트들은 그것이 단편 쉐이더 분배기(310)에 의해 전송된 것과 동일한 순서로 단편 쉐이더 수집기(330)에 의해 판독될 것이다. 또한, 단편 쉐이더 파이프라인들 각각은 수신한 순서와 동일한 순서로 단편 그룹들을 출력하기 때문에, 측면 FIFO(325)의 단편 패킷들은 단편 쉐이더 파이프라인에 의해 출력된 단편 그룹들과 동일한 순서일 것이다. 또한, 특정 단편 쉐이더 파이프라인 식별 번호 대신 하나의 세그먼트 종료 표시자를 사용함으로써, 추가 정보 비트를 유지하기 위해 측면 FIFO(325)를 확장할 필요 없이, 단편 쉐이더 파이프라인의 갯수를 변경할 수 있다.
또한, 측면 FIFO(325)의 번들은 대응하는 단편 그룹을 전혀 지니지 않기 때문에, 단편 쉐이더 수집기(330)는 측면 FIFO(325)로부터 번들을 판독할 수 있고, 단편 쉐이더 파이프라인이 처리하는 것을 종료하는 것을 기다리지 않고 래스터 연산 장치에 이를 출력할 수 있다. 측면 FIFO(325)가 단편 스트림의 순서를 지키고 있기 때문에, 실시예에서, 측면 FIFO(325)는, 소정의 시간에 모든 단편 쉐이더 파이프라인에 의해 처리되고 있는 모든 세그먼트에 대한 단편 패킷들을 유지하기에 충분한 엔트리 뿐만 아니라, 각 쉐이더 파이프라인 장치용 입력 버퍼와 출력 버퍼에 저장된 단편 그룹들에 대한 것과 같은, 번들 및 다른 오버헤드에 대한 추가의 엔트리를 반드시 포함해야 한다.
단편 쉐이더(300)는 임의의 개수의 단편 쉐이더 파이프라인을 포함할 수 있어, 성능 목표 또는 비용 목표를 충족시키기 위해 성능이 쉽게 스케일링 될 수 있도록 한다. 또한, 단편 쉐이더 파이프라인의 개수를 증가시켜도, 추가의 단편 쉐 이더 파이프라인이 인스턴스화되는 실제 영역을 넘어서는 추가 영역 또는 복잡도 오버헤드가, 단편 쉐이더(300)에 거의 발생하지 않는다. 통상적인 장치 제조 공정은, 종종, 장치의 작은 부분에는 해를 끼칠 수 있으나 장치의 나머지 부분은 정상적으로 동작하게 하는 점 결함(point defects)을 유발한다. 제조 수율을 증가시키기 위해, 단편 쉐이더(300)의 실시예는, 원하는 개수를 초과하는 많은 수의 단편 쉐이더 파이프라인으로 제조된다. 제조 후, 각 단편 쉐이더 파이프라인은 테스트되고, 점 결함으로 인해 각 단편 쉐이더 파이프라인이 결함이 있다면, 퓨즈 또는 다른 OTP(one-time-programmable) 메모리 집합은 결함이 있는 단편 쉐이더 파이프라인을 나타내도록 프로그램된다. 이 저장된 표시자를 사용함으로써, 단편 쉐이더 분배기(310)와 단편 쉐이더 수집기(330) 둘 모두는, 결함이 있는 단편 쉐이더 파이프라인을 스킵하도록 적응된다. 이것으로 인해 단편 쉐이더(300)는, 나머지들, 즉 결함이 없는 단편 쉐이더 파이프라인으로 정상적으로 동작할 수 있다. 따라서, 그렇지 않으면 결함이 있는 장치들이, 기능적 장치로서 이용될 수 있고, 제조 수율을 증가시키고 비용을 감소시킬 수 있다.
도 4는 본 발명의 실시예에 따른 단편 쉐이더 분배기(400)를 도시한다. 상술된 바와 같이, 단편 쉐이더 분배기는 단편들 스트림을 세그먼트들로 구성하고, 세그먼트의 단편들을 선택된 단편 쉐이더 파이프라인으로 분배한다. 실시예에서, 단편 쉐이더 분배기(400)는, 단편들 스트림을 8개-블록 스트림의 형태로 래스터라이저로부터 수신한다. 도 4에서, 단편들 스트림은 2개의 예시적인 8개-단편 블록(404 및 408)을 포함한다. 이 예에서, 래스터라이저는 기하학적 원형(402 및 406)으로부터 예시적인 8개-단편 블록을 생성한다. 8-단편 블록 각각은 8개의 단편 그룹들을 포함한다. 상술된 바와 같이, 실시예에서, 각 단편 그룹은 2×2 배열의 4개의 픽셀에 대응한다. 8개-단편 블록 각각은 그것과 관련된 기하학적 원형의 적어도 일부를 커버한다. 예를 들면, 8개-블록(404)에서는, 단편 그룹들(432,434,436,438 및 440)이 기하학적 원형(402)의 적어도 일부에 의해 커버되어 있다. 8개-블록(404)의 나머지 단편 그룹들인 단편 그룹들(460,462 및 464)은 기하학적 원형(402)에 의해 커버되어 있지 않다.
단편 쉐이더 분배기(400)는 세그먼트 경계를 결정하기 위한 세그멘터(segmenter)(410)를 포함한다. 상술된 바와 같이, 세그먼트는 단편 쉐이더 파이프라인이 한번에 처리할 단편 그룹들의 집합이다. 세그먼트의 크기는 단편 쉐이더 파이프라인의 자원에 제한된다. 단편 쉐이더 파이프라인 자원은, 단편들 또는 단편 그룹들의 개수를 제한할 수 있는 파이프라인 단의 개수, 데이터 레지스터의 개수 및 세그먼트의 단편 그룹들과 관련된 기하학적 원형과 관련된 속성들의 개수를 포함할 수 있다. 추가의 실시예에서, 설정된 시간 제한 내에 래스터라이저(305)로부터 단편 그룹들을 더 이상 수신하지 않는 것과 같은 다른 이벤트들로 인해, 선택된 단편 쉐이더 파이프라인의 임의의 자원 한계에 도달하기 전에, 세그먼트가 닫혀질 수 있다.
실시예에서, 세그멘터(410)는, 다음의(forthcoming) 임의의 단일 단편 그룹이 단편 쉐이더 분배기(400)에 의해 처리될 때, 이 임의의 단일 단편 그룹에 의해 소비될 단편 쉐이더 파이프라인 자원의 양을 미리 결정한다. 단편 자원별 사용량 은 현재의 그래픽 상태에 기초하며, 추가의 실시예에서는, 임의의 소정의 단편이 이전의 단편이 아니라 다른 기하학적 원형으로부터 유래한 것인지 여부에 기초한다. 또한, 카운터 집합은, 단편 그룹을 처리한 후 소비된 누적 단편 파이프라인 자원을 추적한다. 각각의 카운터는 단편 쉐이더 파이프라인의 자원에 대응한다. 한 실시예에서, 세그멘터(410)는 단편 그룹 카운터(415), 기하학적 원형 속성 카운터(420), 및 단편 프로그램 레지스터 사용 카운터(425)를 포함한다. 단편 쉐이더 분배기(400)가 각 단편 그룹을 처리할 때, 카운터 집합의 값들은 단편 그룹에 의해 소비된 자원을 반영하도록 변경된다.
각각의 카운터는 또한 단편 쉐이더 파이프라인의 자원의 한계에 대응하는 한계값을 지닌다. 하나 이상의 카운터의 한계값에 도달한 경우, 세그멘터(410)는 현재 선택된 단편 쉐이더 파이프라인에 대한 세그먼트가 완료되었다는 것을 나타내는 신호를 송신한다. 이에 응하여, 단편 쉐이더 분배기(400)는 순서에서 다음 단편 쉐이더 파이프라인을 선택하고, 세그멘터(410)의 카운터 집합을, 새 세그먼트에 대한 자원이 아직 사용되지 않았음을 나타내는 초기 값으로 리셋한다. 추가의 실시예에서, 단편 쉐이더 분배기(400)는, 세그먼트 종료 표시자를, 세그먼트의 마지막 단편 그룹과 관련된 단편 패킷에 또한 추가한다. 단편 쉐이더 분배기(400)는 래스터라이저로부터의 스트림의 후속되는 단편 그룹들을 계속 처리하고, 후속되는 단편 쉐이더 그룹들을 새로이 선택된 단편 쉐이더 파이프라인으로 전송한다.
예제에서, 세그멘터(410)는 래스터라이저로부터 8개-블록(404)을 수신하자마자, 5개의 커버된 단편 그룹들(432,434,436,438 및 440)에 대응하여, 단편 그룹 카 운터(415)를 5만큼 변경시킬 것이다. 이하에 상세히 설명되는 바와 같이, 세그멘터(410)는 8개-블록(404) 중 커버되지 않은 나머지 단편 그룹들(단편 그룹들(460,462 및 464))을 폐기하는데, 그 이유는 압축기(compactor)(430)가 이들 빈 단편 그룹들을 폐기할 것이기 때문이다. 실시예에서, 각 단편 쉐이더 파이프라인은 한 세그먼트에 최대 220개의 단편 그룹들을 처리할 수 있다; 따라서, 단편 그룹 카운터(415)의 한계값은 220이다.
또한, 단편 그룹들(432,434,436,438 및 440) 모두는 기하학적 원형(402)과 관련된다. 각 기하학적 원형은 또한 속성 집합들과 관련된다. 한 실시예에서, 속성들 집합은 평면 공식 매개변수, 컬러, 포그값(fog value), 텍스처 좌표, 절단 평면(clipping planes), 및/또는 기하학적 원형에 적용되거나 또는 이에 대해 보간될 다른 스칼라 또는 벡터값을 포함한다. 단편 그룹들이 단편 쉐이더 분배기(400)에 의해 처리될 때, 속성 카운터는 단편 그룹들과 관련된 속성들의 개수만큼 변경된다. 예를 들면, 기하학적 원형(402)이 컬러, 포그, 3-성분 텍스처 좌표와 같은 5개의 속성과 관련되면, 그 관련 단편 그룹들이 처리될 때, 속성 카운터(420)는 5만큼 변경된다. 한 구현에서, 각각의 단편 쉐이더 파이프라인은 64개의 상이한 기하학적 원형들 각각에 대해 4개의 속성들 집합을 저장할 수 있으므로, 속성 카운터(420)의 한계값은 256 속성이 된다. 추가의 실시예에서, 세그먼트의 단편들의 최대 개수를 줄이는 대신, 기하학적 원형별 속성들의 개수가 증가할 수 있고, 그 역도 가능하다.
추가의 실시예에서, 소정의 기하학적 원형에 대해, 그것과 관련된 단편 그룹 들의 개수에 상관없이, 그 원형에 대한 속성들 집합의 단 하나의 사본만을 저장함으로써, 속성 저장 공간 요건이 최소화된다. 이 실시예에서, 세그멘터(410)는, 원형과 관련된 각 세그먼트에 대해서가 아니라, 기하학적 원형에 대해 한 번만 속성들을 세면 된다. 이 실시예의 한 구현에서, 래스터라이저는 차례로 각 기하학적 원형을 처리한다; 따라서, 래스터라이저는 또 다른 기하학적 원형과 관련된 단편들을 출력하기 전에 소정의 기하학적 원형과 관련된 단편 그룹들 모두를 출력한다. 소정의 기하학적 원형의 처리를 완료하면, 래스터라이저는 원형 종료 표시자(end-of-primitive indicator)를 단편 그룹들 스트림에 삽입한다. 원형 종료 표시자를 수신하면, 세그멘터(410)는, 스트림의 다음 단편 그룹을 포함하는 기하학적 원형과 관련된 속성들의 개수만큼 속성 카운터(420)를 증분시킨다. 이 구현에서, 세그멘터(410)는 또 다른 원형 종료 표시자를 수신한 후, 비로소 스트림의 후속하는 단편 그룹들에 대해 속성 카운터(420)를 증분시킨다. 이 실시예에서, 한 세그먼트의 단편들과 관련되고 저장될 수 있는 기하학적 원형들의 최대 개수를 감소시키는 대신, 기하학적 원형별 속성들의 개수를 증가시킬 수 있으며, 따라서 아마도, 꼭 그런 것은 아니지만, 세그먼트의 단편 그룹들의 개수를 제한하는 것이 가능하며, 그 역도 가능하다.
또한, 단편 쉐이더 파이프라인은, 통상적으로, 몇몇 데이터 레지스터를 사용하여 일시적으로 데이터를 저장하면서, 각 단편에 대해 단편 쉐이더 프로그램을 실행한다. 각 단편이 단편 쉐이더 프로그램의 개별 인스턴스에 의해 실행되기 때문에, 각 단편은 고유의 데이터 레지스터 집합을 필요로 한다. 실시예에서, 각 단편 쉐이더 파이프라인은, 데이터 레지스터의 풀(pool)을 세그먼트의 단편 그룹들 사이에 동적으로 할당할 수 있다. 예를 들면, 단편 쉐이더 파이프라인이 880개의 데이터 레지스터를 포함하는 경우, 단편 쉐이더 프로그램을 실행하기 위해 단편 그룹당 4개의 데이터 레지스터를 이용하는 세그먼트는, 최대 220개의 단편 그룹들을 포함할 수 있다. 마찬가지로, 단편 그룹당 5개의 데이터 레지스터를 사용하는 세그먼트는 최대 176개의 단편 그룹들을 포함할 수 있다. 단편 쉐이더 분배기(400)가 단편 그룹들을 처리할 때, 세그멘터(410)는 단편 쉐이더 프로그램을 실행하기 위해 각 단편 그룹이 필요로 하는 데이터 레지스터의 개수를 반영하도록 레지스터 카운터(425)를 변경한다.
압축기(430)는 8개-블록(404)의 단편 그룹들(460,462 및 464)과 같은 커버되지 않은 단편 그룹들을 폐기하고, 실시예에서, 나머지 단편 그룹들을 4개-블록들로 다시 구성하며, 이것은 그 각각이, 동일하거나 상이한 기하학적 원형들과 관련될 수 있는, 4개의 단편 그룹들의 집합이다. 예를 들면, 압축기(430)는 단편 그룹들(432,434,436 및 438)을 4개-블록(450)으로 구성하고, 단편 그룹들(440,442,444 및446)을 4개-블록(455)으로 구성한다. 4개-블록(455)이 서로 다른 기하학적 원형들(이 경우에서는, 기하학적 원형(402 및 406))과 관련된 단편 그룹들을 포함한다는 것을 유의한다. 이 예에서, 단편 그룹(448)은 후속되는 4개-블록에 포함될 것이지만, 명확하게 하기 위해 생략한다. 단편 쉐이더 분배기(400)는 압축기(430)에 의해 생성된 단편 그룹들의 4개-블록들을 선택된 단편 쉐이더 파이프라인으로 전송한다.
도 3에 도시된 바와 같이, 다수의 단편 쉐이더 파이프라인들이 병렬로 동작하기 때문에, 단편 쉐이더 파이프라인들은, 통상적으로, 텍스처 룩업과 다른 메모리 액세스를 거의 동시에 수행할 것이다. 그 결과, 캐시 속도와 외부 메모리 데이터 액세스 요청이 불규칙적일 것이며, 과도한 액세스가 요청되는 기간을 갖는 긴 유휴 기간(long idle periods)이 산재될 것이다. 메모리 액세스 속도를 고르게 하고 전반적인 레이턴시(latency)를 감소시키기 위해, 본 발명의 실시예는, 명령어 타이밍 방식(instructions timing scheme)을 이용하여 메모리 액세스를 스태거(stagger)시킨다.
도 5는 본 발명의 실시예에 따른 명령어 타이밍 방식(500)을 도시한다. 타이밍 방식(500)에서, 제1 단편 쉐이더 파이프라인의 제1 패스(505)에 대한 단편 쉐이더 명령어 집합이 발행되어, 제1 단편 쉐이더 파이프라인은 이 명령어 실행을 시작한다. 이후 타이밍 방식(500)은 제2 단편 쉐이더 파이프라인의 제1 패스(510)에 대한 단편 쉐이더 명령어 집합을 전송하기에 앞서 잠시 기다린다. 또 다른 지연에 이어, 이것은 제3 및 제4 단편 쉐이더 파이프라인의 제1 패스(515 및 520)에 대한 단편 쉐이더 명령어 집합에 대해 각각 반복된다. 그 결과, 단편 쉐이더 파이프라인들은 스태거 방식으로 각각의 단편 쉐이더 프로그램을 실행하여, 단편 쉐이더 파이프라인들의 집합으로부터의 메모리 액세스는 더 긴 기간에 걸쳐 분산되어, 동시 메모리 요청의 피크 수, 그리고 결과적으로, 메모리 액세스의 평균 레이턴시를 감소시킨다. 이렇게 명령어를 스태거시키는 것은, 단편 쉐이더 파이프라인들의 집합의 제2 패스(525,530,535 및 540)에 대한 단편 쉐이더 명령어 집합에 대해서와 같 이, 단편 쉐이더 명령어의 추가의 패스들에 대해 반복된다.
본 발명은, 그래픽 처리 서브시스템의 단편 처리 장치의 성능이 쉽게 그리고 효율적으로 스케일가능하도록 스케일되는 것을 가능하게 하여, 상이한 비용 목표와 성능 목표를 충족시킨다. 본 발명이 4개의 단편 쉐이더 파이프라인을 지니는 예시적인 단편 처리 장치를 참조하여 설명되었지만, 본 발명은 스트림 처리 시스템에서 임의의 개수의 병렬 파이프라인들을 지니는 임의의 유형의 처리 장치에 적용될 수 있다. 본 발명은 특정 예제와 그 실시예들에 관해 설명되었지만, 이는 본 발명을 단지 예시하는 것이지 제한하는 것이 아니다. 따라서, 본 발명의 범위는 청구항에 의해서만 결정될 것이다.

Claims (27)

  1. 단편들 스트림 각각에 대해 적어도 하나의 값을 결정하도록 적응된 단편 처리 장치를 포함하는 그래픽 처리 서브시스템에 있어서,
    상기 단편 처리 장치는,
    단편들 세그먼트에 대해 단편 쉐이더 프로그램의 적어도 일부를 실행하도록 적응된 제1 단편 쉐이더 파이프라인(fragment shader pipeline);
    단편들 스트림을 수신하고, 상기 단편들 스트림의 제1 부분을 실행하기 위해 상기 제1 단편 쉐이더 파이프라인을 선택하고, 상기 스트림의 수신된 단편 각각에 대해, 상기 수신된 단편이 상기 선택된 단편 쉐이더 파이프라인의 단편들 세그먼트 내에 적합한지 여부를 판정하고, 적합한 것으로 판정된 것에 응하여, 상기 수신된 단편을 상기 선택된 단편 쉐이더 파이프라인으로 전달하도록(dispatch) 적응된 단편 쉐이더 분배기(fragment shader distributor); 및
    상기 제1 단편 쉐이더 파이프라인을 선택하고, 선택된 상기 단편 쉐이더 파이프라인이 상기 단편들 세그먼트에 대해 상기 단편 쉐이더 프로그램의 실행을 완료했다는 것을 나타내는 신호에 응하여, 상기 선택된 상기 단편 쉐이더 파이프라인으로부터의 상기 단편들 세그먼트의 각 세그먼트를 검색하도록 적응된 단편 쉐이더 수집기(fragment shader collector)
    를 포함하는 그래픽 처리 서브시스템.
  2. 제1항에 있어서,
    상기 수신된 단편이 상기 제1 단편 쉐이더 파이프라인의 단편들 세그먼트 내에 적합한지 여부를 판정하도록 적응될 때, 상기 단편 쉐이더 분배기는, 상기 수신된 단편의 일부 자원 요건을 판정하고, 상기 선택된 단편 쉐이더 파이프라인의 사용가능한 자원의 측정치를 판정하고, 상기 수신된 단편의 상기 자원 요건이 상기 선택된 단편 쉐이더 파이프라인의 상기 사용가능한 자원의 측정치를 초과하지 않는다는 판정에 응하여, 상기 수신된 단편이 상기 선택된 단편 쉐이더 파이프라인의 단편들 세그먼트 내에 적합하다는 것을 나타내는 신호를 생성하도록 적응된 그래픽 처리 서브시스템.
  3. 제2항에 있어서, 상기 단편 쉐이더 분배기는, 상기 선택된 단편 쉐이더 파이프라인의 자원에 각각 대응하는 복수의 카운터를 더 포함하고, 상기 단편 쉐이더 분배기는, 상기 수신된 단편들 각각의 상기 자원 요건만큼 상기 복수의 카운터의 값들을 변경하도록 또한 적응된 그래픽 처리 서브시스템.
  4. 제3항에 있어서, 상기 복수의 카운터 각각은, 상기 선택된 단편 쉐이더 파이프라인의 대응하는 자원의 한계를 나타내는 자원 한계값과 관련되며, 상기 수신된 단편이 상기 제1 단편 쉐이더 파이프라인의 단편들 세그먼트 내에 적합하다는 것을 나타내는 신호를 생성하도록 적응될 때, 상기 단편 쉐이더 분배기는, 상기 복수의 카운터 중 그 어떠한 것도 그 관련된 자원 한계값에 도달하지 않은 것으로 판정하 도록 적응된 그래픽 처리 서브시스템.
  5. 제1항에 있어서,
    단편들 세그먼트에 대해 단편 쉐이더 프로그램의 적어도 일부를 실행하도록 적응된 제2 단편 쉐이더 파이프라인을 더 포함하고,
    상기 수신된 단편이 상기 선택된 단편 쉐이더 파이프라인의 상기 단편들 세그먼트 내에 적합하지 않다는 판정에 응하여, 상기 단편 쉐이더 분배기는, 상기 제2 단편 쉐이더 파이프라인을 선택하고, 상기 수신된 단편을 상기 새로이 선택된 단편 쉐이더 파이프라인에 전달하도록 적응된 그래픽 처리 서브시스템.
  6. 제5항에 있어서,
    상기 단편 쉐이더 수집기는 상기 제2 단편 쉐이더 파이프라인의 선택을 나타내는 신호를 수신하도록 적응되며, 상기 신호에 응하여,
    상기 제2 단편 쉐이더 파이프라인을 선택하고, 상기 단편 쉐이더 파이프라인이 상기 단편들 세그먼트에 대해 상기 단편 쉐이더 프로그램의 실행을 완료했다는 것을 나타내는 신호에 응하여, 상기 선택된 상기 단편 쉐이더 파이프라인으로부터의 단편들 세그먼트의 각 단편들을 검색하도록 적응된 그래픽 처리 서브시스템.
  7. 제6항에 있어서, 상기 단편 쉐이더 수집기는 측면 FIFO(side FIFO)를 통해 상기 신호를 수신하는 그래픽 처리 서브시스템.
  8. 제7항에 있어서, 상기 단편 쉐이더 분배기는, 상기 단편 쉐이더 파이프라인들 중 하나에 전달된 수신된 단편 각각에 대해, 상기 측면 FIFO에 단편 패킷을 삽입하도록 또한 적응된 그래픽 처리 서브시스템.
  9. 제8항에 있어서, 상기 각 단편 패킷은 상기 수신된 단편의 속성들 집합을 포함하는 그래픽 처리 서브시스템.
  10. 제9항에 있어서,
    상기 단편 쉐이더 수집기는, 상기 각 단편 패킷의 속성들 집합을, 상기 단편 쉐이더 수집기에 의해 선택된 상기 단편 쉐이더 파이프라인으로부터 검색된 대응하는 단편에 매칭시키도록 적응된 그래픽 처리 서브시스템.
  11. 제6항에 있어서,
    단편들 세그먼트에 대해 단편 쉐이더 프로그램의 적어도 일부를 실행하도록 적응된 제3 단편 쉐이더 파이프라인을 더 포함하고,
    상기 수신된 단편이 상기 제2 단편 쉐이더 파이프라인의 상기 단편들 세그먼트 내에 적합하지 않다는 판정에 응하여, 상기 단편 쉐이더 분배기는, 상기 제3 단편 쉐이더 파이프라인을 선택하고, 상기 수신된 단편을 상기 새로이 선택된 단편 쉐이더 파이프라인에 전달하도록 적응되며,
    상기 단편 쉐이더 수집기는, 상기 제3 단편 쉐이더 파이프라인의 선택을 나타내는 신호를 수신하도록 적응되며, 상기 신호에 응하여,
    상기 제3 단편 쉐이더 파이프라인을 선택하고, 선택된 상기 단편 쉐이더 파이프라인이 상기 단편들 세그먼트에 대해 상기 단편 쉐이더 프로그램의 실행을 완료했다는 것을 나타내는 신호에 응하여, 상기 선택된 상기 단편 쉐이더 파이프라인으로부터의 상기 단편들 세그먼트의 각 단편들을 검색하도록 적응된 그래픽 처리 서브시스템.
  12. 제11항에 있어서, 상기 단편 쉐이더 분배기와 상기 단편 쉐이더 수집기는, 라운드-로빈 순서(round-robin order)로 복수의 단편 쉐이더 파이프라인으로부터 선택하도록 적응된 그래픽 처리 서브시스템.
  13. 제5항에 있어서, 상기 제1 및 제2 단편 쉐이더 파이프라인은, 동일한 단편 쉐이더 프로그램의 개별 인스턴스들을 병렬로 실행하도록 적응된 그래픽 처리 서브시스템.
  14. 제5항에 있어서, 상기 제1 및 제2 단편 쉐이더 파이프라인은, 상이한 단편 쉐이더 프로그램의 개별 인스턴스들을 병렬로 실행하도록 적응된 그래픽 처리 서브시스템.
  15. 제2항에 있어서, 상기 선택된 단편 쉐이더 파이프라인의 상기 사용가능한 자원은, 상기 단편들 세그먼트에 최대 개수의 단편들을 포함시키는 그래픽 처리 서브시스템.
  16. 제15항에 있어서, 상기 단편들 세그먼트의 상기 최대 개수의 단편들은, 상기 선택된 단편 쉐이더 파이프라인의 파이프라인 단의 개수에 대응하는 그래픽 처리 서브시스템.
  17. 제2항에 있어서, 상기 선택된 단편 쉐이더 파이프라인의 상기 사용가능한 자원은 데이터 레지스터 집합을 포함하고, 상기 수신된 단편의 상기 자원 요건은 데이터 레지스터 요건을 포함하며, 상기 데이터 레지스터 요건은 상기 수신된 단편에 대해 실행될 상기 단편 쉐이더 프로그램에 의해 결정되는 그래픽 처리 서브시스템.
  18. 제2항에 있어서, 상기 선택된 단편 쉐이더 파이프라인의 상기 사용가능한 자원은 속성 데이터 기억 장치를 포함하고, 상기 수신된 단편의 상기 자원 요건은 상기 수신된 단편과 관련된 속성들 집합을 포함하는 그래픽 처리 서브시스템.
  19. 제18항에 있어서, 상기 수신된 단편과 관련된 상기 속성들 집합은, 기하학적 원형(geometric primitive)의 속성들 집합으로부터 상속되는 그래픽 처리 서브시스템.
  20. 제1항에 있어서, 상기 단편 쉐이더 분배기는, 상기 수신된 단편이 관련된 기하학적 원형을 커버하지 않는다는 판정에 응하여, 상기 수신된 단편을 폐기하도록(discard) 적응된 그래픽 처리 서브시스템.
  21. 제20항에 있어서, 상기 수신된 단편은 복수의 단편을 포함하는 단편 그룹의 일부이고, 상기 단편 쉐이더 분배기는 상기 단편 그룹 내의 폐기된 단편을 제2의 수신된 단편으로 대체하고, 상기 제2의 수신된 단편을 포함하는 단편 그룹을 상기 선택된 쉐이더 파이프라인으로 전달하도록 적응된 그래픽 처리 서브시스템.
  22. 제18항에 있어서, 상기 단편들 세그먼트와 관련된 기하학적 원형의 최대 개수는, 상기 수신된 단편과 관련된 상기 속성들 집합의 크기에 반비례하는 그래픽 처리 서브시스템.
  23. 단편들 스트림의 픽셀 단편 각각에 대해 적어도 하나의 값을 결정하기 위한 방법에 있어서,
    단편들 세그먼트에 대해 단편 쉐이더 프로그램의 적어도 일부를 실행하도록 적응되고 적어도 하나의 사용가능한 자원을 갖는 제1 단편 쉐이더 파이프라인을 선택하는 단계;
    단편들 스트림의 한 단편을 수신하는 단계;
    상기 선택된 단편 쉐이더 파이프라인의 사용가능한 자원의 측정치를 상기 수신된 단편의 자원 요건만큼 감소시키는 단계;
    상기 선택된 단편 쉐이더 파이프라인의 상기 단편 쉐이더 프로그램에 의해 처리될 상기 수신된 단편을, 상기 선택된 단편 쉐이더 파이프라인으로 전달하는 단계;
    상기 수신된 단편의 속성을 포함하는 단편 패킷을 FIFO에 전달하는 단계;
    상기 선택된 단편 쉐이더 파이프라인의 상기 사용가능한 자원의 측정치가 자원 한계값에 도달하지 않았음에 응하여, 상기 수신된 단편을 수신하고, 상기 수신된 단편을 감소시키고, 상기 수신된 단편을 전달하고, 상기 단편들 스트림의 제1의 복수의 후속하는 단편들에 대한 단편 패킷을 전달하는 단계를 반복하는 단계;
    상기 선택된 단편 쉐이더 파이프라인의 상기 사용가능한 자원의 측정치가 상기 자원 한계값에 도달했음에 응하여, 단편들 세그먼트에 대해 단편 쉐이더 프로그램의 적어도 일부를 실행하도록 적응되고 적어도 하나의 사용가능한 자원을 갖는 제2 단편 쉐이더 파이프라인을 선택하는 단계; 및
    상기 선택된 단편 쉐이더 파이프라인의 상기 사용가능한 자원의 측정치가 자원 한계값에 도달하지 않았음에 응하여, 상기 수신된 단편을 수신하고, 상기 수신된 단편을 감소시키고, 상기 수신된 단편을 전달하고, 상기 단편들 스트림의 제2의 복수의 후속하는 단편들에 대한 단편 패킷을 전달하는 단계를 반복하는 단계;
    를 포함하는 픽셀 단편 각각에 대해 적어도 하나의 값을 결정하기 위한 방법.
  24. 제23항에 있어서, 상기 단편 패킷을 전달하는 단계는, 상기 선택된 단편 쉐이더 파이프라인의 상기 사용가능한 자원의 측정치가 상기 자원 한계값에 도달함 에 응하여, 상기 단편 패킷에 세그먼트 종료(end-of-segment) 표시자를 포함시키는 단계를 포함하는 방법.
  25. 제24항에 있어서,
    단편들의 검색을 위해 상기 제1 단편 쉐이더 파이프라인을 선택하는 단계;
    상기 FIFO로부터 상기 단편 패킷을 검색하는 단계;
    단편들의 검색을 위해 선택된 상기 단편 쉐이더 파이프라인으로부터 대응하는 단편을 검색하는 단계;
    상기 검색된 단편 패킷의 속성과 상기 대응하는 단편을 결합하여 결합된 단편을 형성하는 단계;
    상기 결합된 단편을 후속하는 스트림 처리 장치로 전달하는 단계;
    상기 단편 패킷이 상기 세그먼트 종료 표시자를 포함하지 않는다는 판정에 응하여, 상기 FIFO의 후속하는 단편 패킷에 대해, 검색하고, 결합하고, 전달하는 단계를 반복하는 단계; 및
    상기 단편 패킷이 상기 세그먼트 종료 표시자를 포함하는 것에 응하여, 단편들의 검색을 위해 상기 제2 단편 쉐이더 파이프라인을 선택하는 단계
    를 더 포함하는 방법.
  26. 제23항에 있어서,
    상기 제1 및 제2 단편 쉐이더 파이프라인은 캐싱된 메모리 서브시스템과 인터페이스하며,
    상기 방법은,
    상기 수신된 단편을 수신하고, 상기 수신된 단편을 감소시키고, 상기 수신된 단편을 전달하고, 상기 단편들 스트림의 제2의 복수의 후속하는 단편들에 대한 단편 패킷을 전달하는 단계를 반복하기에 앞서, 소정의 시간 동안 잠시 멈추는 단계를 더 포함하며,
    상기 소정의 시간의 길이는, 상기 제1 및 제2 단편 쉐이더 파이프라인으로부터 상기 캐싱된 메모리 시스템으로의 메모리 액세스들 집합을 최적화하는 방법.
  27. 제23항에 있어서, 상기 단편 패킷의 속성은 단편 위치를 포함하는 방법.
KR1020077008330A 2004-09-13 2005-08-19 그래픽 처리 서브시스템 및 픽셀 단편에 대해 적어도하나의 값을 결정하기 위한 방법 KR100887012B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/940,070 2004-09-13
US10/940,070 US7218291B2 (en) 2004-09-13 2004-09-13 Increased scalability in the fragment shading pipeline
PCT/US2005/029930 WO2006031389A2 (en) 2004-09-13 2005-08-19 Increased scalability in the fragment shading pipeline

Publications (2)

Publication Number Publication Date
KR20070064337A true KR20070064337A (ko) 2007-06-20
KR100887012B1 KR100887012B1 (ko) 2009-03-04

Family

ID=36033397

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077008330A KR100887012B1 (ko) 2004-09-13 2005-08-19 그래픽 처리 서브시스템 및 픽셀 단편에 대해 적어도하나의 값을 결정하기 위한 방법

Country Status (6)

Country Link
US (1) US7218291B2 (ko)
EP (1) EP1789927B1 (ko)
JP (1) JP4639232B2 (ko)
KR (1) KR100887012B1 (ko)
CN (1) CN101124613B (ko)
WO (1) WO2006031389A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101226817B1 (ko) * 2009-04-08 2013-01-28 엔비디아 코포레이션 데드락이 없는 파이프라이닝을 위한 시스템 및 방법
KR101427408B1 (ko) * 2008-05-30 2014-08-07 어드밴스드 마이크로 디바이시즈, 인코포레이티드 스케일링가능하고 통합된 컴퓨팅 시스템

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080094403A1 (en) * 2003-11-19 2008-04-24 Reuven Bakalash Computing system capable of parallelizing the operation graphics processing units (GPUs) supported on a CPU/GPU fusion-architecture chip and one or more external graphics cards, employing a software-implemented multi-mode parallel graphics rendering subsystem
WO2006117683A2 (en) 2005-01-25 2006-11-09 Lucid Information Technology, Ltd. Graphics processing and display system employing multiple graphics cores on a silicon chip of monolithic construction
US7961194B2 (en) 2003-11-19 2011-06-14 Lucid Information Technology, Ltd. Method of controlling in real time the switching of modes of parallel operation of a multi-mode parallel graphics processing subsystem embodied within a host computing system
US8497865B2 (en) 2006-12-31 2013-07-30 Lucid Information Technology, Ltd. Parallel graphics system employing multiple graphics processing pipelines with multiple graphics processing units (GPUS) and supporting an object division mode of parallel graphics processing using programmable pixel or vertex processing resources provided with the GPUS
US20070291040A1 (en) * 2005-01-25 2007-12-20 Reuven Bakalash Multi-mode parallel graphics rendering system supporting dynamic profiling of graphics-based applications and automatic control of parallel modes of operation
JP2007512613A (ja) * 2003-11-19 2007-05-17 ルシッド インフォメーション テクノロジー リミテッド Pcバス上の多重3−dグラフィックパイプラインのための方法およびシステム
US8085273B2 (en) 2003-11-19 2011-12-27 Lucid Information Technology, Ltd Multi-mode parallel graphics rendering system employing real-time automatic scene profiling and mode control
US7777748B2 (en) * 2003-11-19 2010-08-17 Lucid Information Technology, Ltd. PC-level computing system with a multi-mode parallel graphics rendering subsystem employing an automatic mode controller, responsive to performance data collected during the run-time of graphics applications
US20090027383A1 (en) * 2003-11-19 2009-01-29 Lucid Information Technology, Ltd. Computing system parallelizing the operation of multiple graphics processing pipelines (GPPLs) and supporting depth-less based image recomposition
US7385604B1 (en) * 2004-11-04 2008-06-10 Nvidia Corporation Fragment scattering
GB0425204D0 (en) * 2004-11-15 2004-12-15 Falanx Microsystems As Processing of 3-dimensional graphics
US7548244B2 (en) * 2005-01-12 2009-06-16 Sony Computer Entertainment Inc. Interactive debugging and monitoring of shader programs executing on a graphics processor
US20090096798A1 (en) * 2005-01-25 2009-04-16 Reuven Bakalash Graphics Processing and Display System Employing Multiple Graphics Cores on a Silicon Chip of Monolithic Construction
US8223845B1 (en) 2005-03-16 2012-07-17 Apple Inc. Multithread processing of video frames
US7830390B2 (en) * 2005-07-19 2010-11-09 Graphics Properties Holdings, Inc. Color computation of pixels using a plurality of vertex or fragment shader programs
US7616202B1 (en) * 2005-08-12 2009-11-10 Nvidia Corporation Compaction of z-only samples
US7559914B2 (en) * 2005-12-14 2009-07-14 Alcon, Inc. Priming a microsurgical system
JP4834446B2 (ja) * 2006-04-11 2011-12-14 株式会社東芝 画像処理装置
US8111260B2 (en) 2006-06-28 2012-02-07 Microsoft Corporation Fast reconfiguration of graphics pipeline state
US8954947B2 (en) * 2006-06-29 2015-02-10 Microsoft Corporation Fast variable validation for state management of a graphics pipeline
US7750913B1 (en) 2006-10-24 2010-07-06 Adobe Systems Incorporated System and method for implementing graphics processing unit shader programs using snippets
KR101349171B1 (ko) 2007-01-17 2014-01-09 삼성전자주식회사 3차원 그래픽 가속기 및 그것의 픽셀 분배 방법
US8203558B2 (en) * 2008-01-28 2012-06-19 Apple Inc. Dynamic shader generation
US8509569B2 (en) * 2008-02-11 2013-08-13 Apple Inc. Optimization of image processing using multiple processing units
GB2475375B (en) * 2008-06-04 2011-12-14 Advanced Risc Mach Ltd Graphics processing systems
US8581912B2 (en) 2008-06-27 2013-11-12 Microsoft Corporation Dynamic subroutine linkage optimizing shader performance
US9665968B2 (en) * 2008-08-22 2017-05-30 Autodesk, Inc. Computerized image rendering with per-frame buffer scene segmentation
GB2466078B (en) * 2008-12-15 2013-11-13 Advanced Risc Mach Ltd Apparatus and method for tracing activities of a shader program executed on shader circuitry of a data processing apparatus
US8379024B2 (en) * 2009-02-18 2013-02-19 Autodesk, Inc. Modular shader architecture and method for computerized image rendering
US8416238B2 (en) 2009-02-18 2013-04-09 Autodesk, Inc. Modular shader architecture and method for computerized image rendering
JP5166343B2 (ja) 2009-04-17 2013-03-21 株式会社ディジタルメディアプロフェッショナル 3次元コンピュータグラフィック用プロセッサ
US8368694B2 (en) * 2009-06-04 2013-02-05 Autodesk, Inc Efficient rendering of multiple frame buffers with independent ray-tracing parameters
US8553040B2 (en) 2009-06-30 2013-10-08 Apple Inc. Fingerprinting of fragment shaders and use of same to perform shader concatenation
US8970588B1 (en) * 2009-07-31 2015-03-03 Pixar System and methods for implementing object oriented structures in a shading language
US9244690B2 (en) * 2009-09-09 2016-01-26 Advanced Micro Devices, Inc. Variable frequency output to one or more buffers
JP2011086235A (ja) * 2009-10-19 2011-04-28 Fujitsu Ltd 画像処理装置、画像処理方法および画像処理プログラム
JP5311491B2 (ja) 2009-11-17 2013-10-09 Necシステムテクノロジー株式会社 グラフィクス頂点処理装置およびグラフィクス頂点処理方法
KR101719485B1 (ko) 2010-09-20 2017-03-27 삼성전자주식회사 그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법
US8842121B2 (en) * 2011-02-03 2014-09-23 Intel Corporation Stream compaction for rasterization
US9595074B2 (en) 2011-09-16 2017-03-14 Imagination Technologies Limited Multistage collector for outputs in multiprocessor systems
CN103108197A (zh) 2011-11-14 2013-05-15 辉达公司 一种用于3d视频无线显示的优先级压缩方法和系统
US9829715B2 (en) 2012-01-23 2017-11-28 Nvidia Corporation Eyewear device for transmitting signal and communication method thereof
US9105250B2 (en) 2012-08-03 2015-08-11 Nvidia Corporation Coverage compaction
US9578224B2 (en) 2012-09-10 2017-02-21 Nvidia Corporation System and method for enhanced monoimaging
US9002125B2 (en) 2012-10-15 2015-04-07 Nvidia Corporation Z-plane compression with z-plane predictors
JP6066755B2 (ja) * 2013-02-07 2017-01-25 株式会社ソニー・インタラクティブエンタテインメント 描画処理装置および描画処理方法
KR102161742B1 (ko) 2013-10-11 2020-10-05 삼성전자주식회사 피드백 경로를 포함하는 파이프 라인 시스템 및 그 동작방법
US9946658B2 (en) 2013-11-22 2018-04-17 Nvidia Corporation Memory interface design having controllable internal and external interfaces for bypassing defective memory
US10935788B2 (en) 2014-01-24 2021-03-02 Nvidia Corporation Hybrid virtual 3D rendering approach to stereovision
US9536342B2 (en) * 2014-08-15 2017-01-03 Intel Corporation Automatic partitioning techniques for multi-phase pixel shading
US10002404B2 (en) * 2015-04-15 2018-06-19 Mediatek Singapore Pte. Ltd. Optimizing shading process for mixed order-sensitive and order-insensitive shader operations
CN105574925A (zh) * 2015-12-11 2016-05-11 中国航空工业集团公司西安航空计算技术研究所 一种自适应的光照处理算法动态选择策略
US9906981B2 (en) 2016-02-25 2018-02-27 Nvidia Corporation Method and system for dynamic regulation and control of Wi-Fi scans
US10152819B2 (en) 2016-08-15 2018-12-11 Microsoft Technology Licensing, Llc Variable rate shading
US10417815B2 (en) * 2017-01-27 2019-09-17 Advanced Micro Devices, Inc. Out of order pixel shader exports
US10650566B2 (en) 2017-02-15 2020-05-12 Microsoft Technology Licensing, Llc Multiple shader processes in graphics processing
US10147227B2 (en) 2017-02-17 2018-12-04 Microsoft Technology Licensing, Llc Variable rate shading
US10515466B2 (en) * 2017-06-09 2019-12-24 Sony Interactive Entertainment Inc. Optimized deferred lighting in a foveated rendering system
US10102015B1 (en) 2017-06-22 2018-10-16 Microsoft Technology Licensing, Llc Just in time GPU executed program cross compilation
US10289393B2 (en) 2017-06-22 2019-05-14 Microsoft Technology Licensing, Llc GPU-executed program sequence cross-compilation
US10657698B2 (en) * 2017-06-22 2020-05-19 Microsoft Technology Licensing, Llc Texture value patch used in GPU-executed program sequence cross-compilation
US10241766B2 (en) 2017-06-22 2019-03-26 Microsoft Technology Licensing, Llc Application binary interface cross compilation
US11012694B2 (en) 2018-05-01 2021-05-18 Nvidia Corporation Dynamically shifting video rendering tasks between a server and a client
US10713756B2 (en) * 2018-05-01 2020-07-14 Nvidia Corporation HW-assisted upscaling and multi-sampling using a high resolution depth buffer
CN108958921B (zh) * 2018-07-19 2023-06-20 南京军微半导体科技有限公司 Gpu中一种染色片段调度管理的硬件加速实现方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6771264B1 (en) * 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
US6731303B1 (en) * 2000-06-15 2004-05-04 International Business Machines Corporation Hardware perspective correction of pixel coordinates and texture coordinates
US7187383B2 (en) * 2002-03-01 2007-03-06 3D Labs Inc., Ltd Yield enhancement of complex chips
JP2003256385A (ja) * 2002-03-04 2003-09-12 Hitachi Ltd データ処理装置
US7162620B2 (en) * 2002-03-13 2007-01-09 Sony Computer Entertainment Inc. Methods and apparatus for multi-processing execution of computer instructions
US7009605B2 (en) * 2002-03-20 2006-03-07 Nvidia Corporation System, method and computer program product for generating a shader program
JP2004021682A (ja) * 2002-06-18 2004-01-22 Canon Inc データ処理システム及び画像データ処理システム
WO2004006189A1 (en) * 2002-07-08 2004-01-15 Sidec Technologies Ab Imaging apparatus and method
KR100510131B1 (ko) * 2003-01-29 2005-08-26 삼성전자주식회사 픽셀 캐쉬 및 이를 이용한 3차원 그래픽 가속 장치 및 방법
US7421694B2 (en) * 2003-02-18 2008-09-02 Microsoft Corporation Systems and methods for enhancing performance of a coprocessor
US7714858B2 (en) * 2003-04-18 2010-05-11 Hewlett-Packard Development Company, L.P. Distributed rendering of interactive soft shadows
US7385607B2 (en) * 2004-04-12 2008-06-10 Nvidia Corporation Scalable shader architecture
US7744538B2 (en) * 2004-11-01 2010-06-29 Siemens Medical Solutions Usa, Inc. Minimum arc velocity interpolation for three-dimensional ultrasound imaging
US7681187B2 (en) * 2005-03-31 2010-03-16 Nvidia Corporation Method and apparatus for register allocation in presence of hardware constraints
US7830390B2 (en) * 2005-07-19 2010-11-09 Graphics Properties Holdings, Inc. Color computation of pixels using a plurality of vertex or fragment shader programs

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101427408B1 (ko) * 2008-05-30 2014-08-07 어드밴스드 마이크로 디바이시즈, 인코포레이티드 스케일링가능하고 통합된 컴퓨팅 시스템
KR101226817B1 (ko) * 2009-04-08 2013-01-28 엔비디아 코포레이션 데드락이 없는 파이프라이닝을 위한 시스템 및 방법
US9928639B2 (en) 2009-04-08 2018-03-27 Nvidia Corporation System and method for deadlock-free pipelining

Also Published As

Publication number Publication date
EP1789927A2 (en) 2007-05-30
CN101124613A (zh) 2008-02-13
JP4639232B2 (ja) 2011-02-23
WO2006031389A3 (en) 2007-06-14
JP2008512771A (ja) 2008-04-24
EP1789927B1 (en) 2013-03-27
US20060055695A1 (en) 2006-03-16
KR100887012B1 (ko) 2009-03-04
CN101124613B (zh) 2010-06-16
EP1789927A4 (en) 2008-06-04
US7218291B2 (en) 2007-05-15
WO2006031389A2 (en) 2006-03-23

Similar Documents

Publication Publication Date Title
KR100887012B1 (ko) 그래픽 처리 서브시스템 및 픽셀 단편에 대해 적어도하나의 값을 결정하기 위한 방법
US6972769B1 (en) Vertex texture cache returning hits out of order
US9202303B2 (en) System and method for compositing path color in path rendering
US8941653B2 (en) Order-preserving distributed rasterizer
US11069124B2 (en) Systems and methods for reducing rendering latency
US11138782B2 (en) Systems and methods for rendering optical distortion effects
US9214007B2 (en) Graphics processor having unified cache system
US20090189896A1 (en) Graphics Processor having Unified Shader Unit
US7616202B1 (en) Compaction of z-only samples
US20100123717A1 (en) Dynamic Scheduling in a Graphics Processor
US10553012B2 (en) Systems and methods for rendering foveated effects
US10699467B2 (en) Computer-graphics based on hierarchical ray casting
JP2002526842A (ja) ディファード・シェーディング(deferredshading)を伴うグラフィックス・プロセッサ(graphicsprocessor)
CN107392836B (zh) 使用图形处理管线实现的立体多投影
US7400325B1 (en) Culling before setup in viewport and culling unit
US7292239B1 (en) Cull before attribute read
CN113450445A (zh) 临时密实渲染的自适应像素采样顺序
US11379944B2 (en) Techniques for performing accelerated point sampling in a texture processing pipeline
US8947444B1 (en) Distributed vertex attribute fetch
Scheibel et al. Attributed vertex clouds
US9536341B1 (en) Distributing primitives to multiple rasterizers

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
FPAY Annual fee payment

Payment date: 20130201

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140205

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150130

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160201

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170213

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180212

Year of fee payment: 10